[
  {
    "path": ".cliff-jumperrc.yml",
    "content": "name: graphql-pokemon\npackagePath: .\norg: favware\nmonoRepo: false\ncommitMessageTemplate: 'chore(release): release {{new-version}}'\ntagTemplate: 'v{{new-version}}'\ngitRepo: auto\nidentifierBase: false\npushTag: true\ngithubRelease: true\ngithubReleaseLatest: true\ngitHostVariant: github\n"
  },
  {
    "path": ".eslintignore",
    "content": "tests/testUtils/types/types.d.ts\n"
  },
  {
    "path": ".eslintrc",
    "content": "{\n  \"extends\": [\"@sapphire\"],\n  \"rules\": {\n    \"@typescript-eslint/unified-signatures\": \"off\",\n    \"@typescript-eslint/unbound-method\": \"off\"\n  },\n  \"overrides\": [\n    {\n      \"files\": [\"src/lib/assets/learnsets.ts\"],\n      \"rules\": {\n        \"@typescript-eslint/ban-ts-comment\": \"off\"\n      }\n    },\n    {\n      \"files\": [\"src/lib/assets/abilities.ts\", \"src/lib/assets/moves.ts\", \"src/lib/assets/learnsets.ts\"],\n      \"rules\": {\n        \"max-len\": \"off\"\n      }\n    },\n    {\n      \"files\": [\"vitest.config.ts\"],\n      \"rules\": {\n        \"spaced-comment\": \"off\"\n      }\n    }\n  ]\n}\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "content": "/ @favna # Favna is the core developer and is codeowner of all the sourcecode"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.\n\n## Our Standards\n\nExamples of behavior that contributes to creating a positive environment include:\n\n- Using welcoming and inclusive language\n- Being respectful of differing viewpoints and experiences\n- Gracefully accepting constructive criticism\n- Focusing on what is best for the community\n- Showing empathy towards other community members\n\nExamples of unacceptable behavior by participants include:\n\n- The use of sexualized language or imagery and unwelcome sexual attention or advances\n- Trolling, insulting/derogatory comments, and personal or political attacks\n- Public or private harassment\n- Publishing others' private information, such as a physical or electronic address, without explicit permission\n- Other conduct which could reasonably be considered inappropriate in a professional setting\n\n## Our Responsibilities\n\nProject maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.\n\nProject maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.\n\n## Scope\n\nThis Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.\n\n## Enforcement\n\nInstances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at support@favware.tech. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.\n\nProject maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.\n\n## Attribution\n\nThis Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]\n\n[homepage]: http://contributor-covenant.org\n[version]: http://contributor-covenant.org/version/1/4/\n"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "content": "# Contributing\n\n**The issue tracker is only for bug reports and enhancement suggestions. If you have a question, please ask it in the [Discord server](https://join.favware.tech) instead of opening an issue – you will get redirected there anyway.**\n\nIf you wish to contribute to the Favware project's codebase or documentation, feel free to fork the repository and submit a\npull request. We use ESLint to enforce a consistent coding style, any PR that does not follow the linting rules will not be\nmerged until the formatting is resolved.\n\n## Setup\n\nTo get ready to work on the codebase, please do the following:\n\n1. Fork & clone the repository, and make sure you're on the **main** branch\n2. Run `yarn install`\n3. Code your heart out!\n4. Ensure your changes compile (`yarn build`) and run by testing them using GraphQL Playground.\n\n- You can start compiling in watch mode with `yarn watch`\n- You can start a dev server with `yarn dev`\n\n5. If you have any substantial code changes make sure these are covered in unit tests\n6. Run `yarn lint && yarn test` to run ESLint and ensure all tests pass\n7. Submit a pull request\n"
  },
  {
    "path": ".github/FUNDING.yml",
    "content": "# These are supported funding model platforms\ngithub: [favna]\npatreon: favna\nopen_collective: # Replace with a single Open Collective username\nko_fi: favna\ntidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel\ncommunity_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry\nliberapay: # Replace with a single Liberapay username\nissuehunt: # Replace with a single IssueHunt username\notechie: # Replace with a single Otechie username\ncustom: https://donate.favware.tech/paypal\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.yml",
    "content": "name: Bug Report\ndescription: File a bug report here\ntitle: 'bug: '\nlabels: ['Bug: Unverified']\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        Thanks for taking the time to fill out this bug report!\n  - type: checkboxes\n    id: new-bug\n    attributes:\n      label: Is there an existing issue for this?\n      description: Please search to see if an issue already exists for the bug you encountered.\n      options:\n        - label: I have searched the existing issues\n          required: true\n  - type: textarea\n    id: bug-description\n    attributes:\n      label: Description of the bug\n      description: Tell us what bug you encountered and what should have happened\n    validations:\n      required: true\n  - type: textarea\n    id: steps-to-reproduce\n    attributes:\n      label: Steps To Reproduce\n      description: Steps to reproduce the behavior.\n      placeholder: |\n        Please tell us how to reproduce this bug, for example:\n        1. Write '...'\n        2. Click on '...'\n        3. See error\n    validations:\n      required: true\n  - type: textarea\n    id: expected-behavior\n    attributes:\n      label: Expected behavior\n      description: What should be the expected behavior.\n      placeholder: A clear and concise description of what you expected to happen.\n    validations:\n      required: true\n  - type: textarea\n    id: screenshots\n    attributes:\n      label: Screenshots\n      description: If applicable, add screenshots to help explain your problem.\n      placeholder: Paste your screenshots here.\n  - type: textarea\n    id: additional-context\n    attributes:\n      label: Additional context\n      description: Do you want to share any additional context about this bug?\n      placeholder: Add any other context about the problem here.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false\ncontact_links:\n  - name: Discord server\n    url: https://join.favware.tech\n    about: Please visit our Discord server for questions and support requests.\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.yml",
    "content": "name: Feature request\ndescription: Suggest an idea for this project\ntitle: 'request: '\nlabels: ['Meta: Feature']\nbody:\n  - type: markdown\n    attributes:\n      value: Thank you for suggesting this feature! The more information you provide, the more likely it is that it will be picked up.\n  - type: checkboxes\n    id: new-bug\n    attributes:\n      label: Is there an existing issue or pull request for this?\n      description: Please search to see if an issue or pull request already exists for the feature you desire.\n      options:\n        - label: I have searched the existing issues and pull requests\n          required: true\n  - type: textarea\n    id: feature-description\n    attributes:\n      label: Feature description\n      description: Is your feature request related to a problem? Please describe.\n      placeholder: A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]\n    validations:\n      required: true\n  - type: textarea\n    id: steps-to-reproduce\n    attributes:\n      label: Desired solution\n      description: Describe the solution you'd like\n      placeholder: A clear and concise description of what you want to happen.\n    validations:\n      required: true\n  - type: textarea\n    id: expected-behavior\n    attributes:\n      label: Alternatives considered\n      description: Describe alternatives you've considered\n      placeholder: A clear and concise description of any alternative solutions or features you've considered.\n    validations:\n      required: true\n  - type: textarea\n    id: additional-context\n    attributes:\n      label: Additional context\n      description: Do you want to share any additional context about this bug?\n      placeholder: Add any other context about the problem here.\n"
  },
  {
    "path": ".github/SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\n| Version  | Supported          |\n| -------- | ------------------ |\n| >= 8.x.x | :white_check_mark: |\n| <= 7.x.x | :x:                |\n\n## Reporting a Vulnerability\n\nIf you find a vulnerability in the Graphql-Pokemon codebase please report it immediately. You can do so through one of the following methods:\n\n- Use the GitHub issue tracker to report the issue\n- Join the Discord server through https://join.favware.tech and use the \"#support\" channel.\n"
  },
  {
    "path": ".github/hooks/commit-msg",
    "content": "#!/bin/sh\n\nyarn commitlint --edit $1"
  },
  {
    "path": ".github/hooks/pre-commit",
    "content": "#!/bin/sh\n\nyarn lint-staged"
  },
  {
    "path": ".github/problemMatchers/eslint.json",
    "content": "{\n  \"problemMatcher\": [\n    {\n      \"owner\": \"eslint-stylish\",\n      \"pattern\": [\n        {\n          \"regexp\": \"^([^\\\\s].*)$\",\n          \"file\": 1\n        },\n        {\n          \"regexp\": \"^\\\\s+(\\\\d+):(\\\\d+)\\\\s+(error|warning|info)\\\\s+(.*)\\\\s\\\\s+(.*)$\",\n          \"line\": 1,\n          \"column\": 2,\n          \"severity\": 3,\n          \"message\": 4,\n          \"code\": 5,\n          \"loop\": true\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": ".github/problemMatchers/tsc.json",
    "content": "{\n  \"problemMatcher\": [\n    {\n      \"owner\": \"tsc\",\n      \"pattern\": [\n        {\n          \"regexp\": \"^(?:\\\\s+\\\\d+\\\\>)?([^\\\\s].*)\\\\((\\\\d+|\\\\d+,\\\\d+|\\\\d+,\\\\d+,\\\\d+,\\\\d+)\\\\)\\\\s*:\\\\s+(error|warning|info)\\\\s+(\\\\w{1,2}\\\\d+)\\\\s*:\\\\s*(.*)$\",\n          \"file\": 1,\n          \"location\": 2,\n          \"severity\": 3,\n          \"code\": 4,\n          \"message\": 5\n        }\n      ]\n    }\n  ]\n}\n"
  },
  {
    "path": ".github/renovate.json",
    "content": "{\n  \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n  \"extends\": [\"github>sapphiredev/.github:sapphire-renovate\"],\n  \"commitBody\": \"[skip publish]\",\n  \"npm\": {\n    \"packageRules\": [\n      {\n        \"matchPackagePatterns\": [\"@types/node\"],\n        \"enabled\": false\n      }\n    ]\n  }\n}\n"
  },
  {
    "path": ".github/workflows/auto-updater.yml",
    "content": "name: Automatic Data Update\n\non:\n  schedule:\n    - cron: '0 0 * * *'\n  workflow_dispatch:\n\njobs:\n  DataUpdater:\n    name: Automatic Data Update\n    runs-on: ubuntu-latest\n    services:\n      flaresolverr:\n        image: ghcr.io/flaresolverr/flaresolverr:latest\n        env:\n          LOG_LEVEL: info\n          LOG_HTML: false\n          CAPTCHA_SOLVER: none\n          TZ: Europe/London\n        ports:\n          - 8191:8191\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n        with:\n          token: ${{ secrets.BOT_TOKEN }}\n      - name: Use Node.js v20\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: yarn\n          registry-url: https://registry.yarnpkg.com/\n      - name: Install Dependencies\n        run: yarn --immutable\n      - name: Run Smogon Tiers updater\n        run: yarn au:tiers\n      - name: Run Learnsets updater\n        run: yarn au:learnsets\n      - name: Run Abilities Updater\n        run: yarn au:abilities\n      - name: Run Items Updater\n        run: yarn au:items\n      - name: Run Moves Updater\n        run: yarn au:moves\n      - name: Run Cries Updater\n        run: yarn au:cries\n      - name: Wait for Flaresolverr to be online\n        working-directory: ./scripts\n        run: ./wait-for-port.sh\n        env:\n          PORT: 8191\n      - name: Run Classifications Updater\n        run: yarn au:classifications || true\n      - name: Run IPA Updater\n        run: yarn au:ipa || true\n      - name: Run Flavor Text Updater\n        run: yarn au:flavors || true\n      - name: Build code\n        run: yarn build\n      - name: Start server in the background\n        working-directory: ./scripts\n        run: |\n          yarn start &\n          ./wait-for-port.sh\n      - name: Update test data\n        run: yarn au:testdata\n      - name: Run prettier on the code\n        run: yarn format\n      - name: Commit any changes and create a pull request\n        env:\n          GITHUB_USER: github-actions[bot]\n          GITHUB_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n        run: |\n          git add .;\n          if ! git diff-index --quiet HEAD --; then\n            git remote set-url origin \"https://${GITHUB_TOKEN}:x-oauth-basic@github.com/${GITHUB_REPOSITORY}.git\";\n            git config --local user.email \"${GITHUB_EMAIL}\";\n            git config --local user.name \"${GITHUB_USER}\";\n            git commit -sam \"refactor: update data [skip publish]\";\n            git push --set-upstream origin $(git rev-parse --abbrev-ref HEAD)\n          fi\n      - name: Create artifact of flavor text update log file\n        uses: actions/upload-artifact@v7\n        with:\n          name: formats_log_file\n          path: scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/output.log\n          if-no-files-found: error\n      - name: Create artifact of classifications update log file\n        uses: actions/upload-artifact@v7\n        with:\n          name: classification_log_file\n          path: scripts/data-gen-scripts/scripted-updaters/classification-updater/output.log\n          if-no-files-found: error\n"
  },
  {
    "path": ".github/workflows/branch-imager.yml",
    "content": "name: Branch Imager\n\non:\n  push:\n    branches-ignore:\n      - main\n\njobs:\n  Publish:\n    name: Publish image to container registries\n    runs-on: ubuntu-latest\n    if: ${{ ! contains(github.event.head_commit.message, '[skip docker]') }}\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n      - name: Setup Docker Buildx\n        uses: docker/setup-buildx-action@v4.0.0\n      - name: Login to DockerHub\n        uses: docker/login-action@v4.0.0\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v4.0.0\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n      - name: Get GitHub Branch Name\n        id: get_branch_name\n        run: echo \"branch_name=$(echo $( [ -z \"${{ github.head_ref }}\" ] && echo ${{ github.ref }} | cut -c12- || echo ${{ github.head_ref }} ) | sed -e 's/\\/\\|_/-/g' | sed -e 's/@//g')\" >> $GITHUB_OUTPUT\n      - name: Build and push Docker image\n        uses: docker/build-push-action@v7.0.0\n        with:\n          push: true\n          context: .\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          platforms: |\n            linux/amd64\n            linux/arm64\n          tags: |\n            favware/graphql-pokemon:${{ steps.get_branch_name.outputs.branch_name }}\n            ghcr.io/favware/graphql-pokemon:${{ steps.get_branch_name.outputs.branch_name }}\n"
  },
  {
    "path": ".github/workflows/continuous-deployment.yml",
    "content": "name: Continuous Deployment\n\non:\n  push:\n    branches:\n      - main\n    paths:\n      - src/**\n      - .github/workflows/continuous-deployment.yml\n      - README.md\n      - Dockerfile\n  workflow_dispatch:\n    inputs:\n      skip-publish:\n        description: Whether to skip publishing typings to NPM\n        required: false\n        type: boolean\n\njobs:\n  Publish:\n    name: Publish image to container registries\n    runs-on: ubuntu-latest\n    if: ${{ ! contains(github.event.head_commit.message, '[skip docker]') }}\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n      - name: Setup Docker Buildx\n        uses: docker/setup-buildx-action@v4.0.0\n      - name: Login to DockerHub\n        uses: docker/login-action@v4.0.0\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n      - name: Login to GitHub Container Registry\n        uses: docker/login-action@v4.0.0\n        with:\n          registry: ghcr.io\n          username: ${{ github.repository_owner }}\n          password: ${{ secrets.GITHUB_TOKEN }}\n      - name: Build and push Docker image\n        uses: docker/build-push-action@v7.0.0\n        with:\n          push: true\n          context: .\n          cache-from: type=gha\n          cache-to: type=gha,mode=max\n          platforms: |\n            linux/amd64\n            linux/arm64\n          tags: |\n            favware/graphql-pokemon:latest\n            ghcr.io/favware/graphql-pokemon:latest\n      - name: Update repo description\n        uses: peter-evans/dockerhub-description@v5\n        with:\n          username: ${{ secrets.DOCKER_USERNAME }}\n          password: ${{ secrets.DOCKER_PASSWORD }}\n          repository: favware/graphql-pokemon\n          enable-url-completion: true\n          short-description: Extensive Pokemon GraphQL API\n\n  ValidateAllData:\n    name: Validate all data\n    runs-on: ubuntu-latest\n    if: ${{ ! contains(github.event.head_commit.message, '[skip docker]') }}\n    needs: Publish\n    services:\n      pokedex:\n        image: ghcr.io/favware/graphql-pokemon:latest\n        options: >-\n          --health-cmd \"nc -z localhost 4000\"\n          --health-interval 10s\n          --health-timeout 10s\n          --health-retries 6\n          --health-start-period 5s\n        ports:\n          - 4000:4000\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n      - name: Setup Python\n        uses: actions/setup-python@v6\n        with:\n          python-version: '3.14'\n          cache: pip\n      - name: Install Dependencies\n        working-directory: ./scripts/manual-tests\n        run: pip install -r requirements.txt\n      - name: Run get-all-data\n        working-directory: ./scripts/manual-tests\n        run: python get-all-data.py\n\n  UpdateOnServer:\n    name: Update running container on server\n    runs-on: ubuntu-latest\n    if: ${{ ! contains(github.event.head_commit.message, '[skip docker]') }}\n    needs: ValidateAllData\n    steps:\n      - name: Update container on server\n        uses: favware/ssh-remote-action@v1\n        with:\n          host: ${{ secrets.SSH_HOST }}\n          port: ${{ secrets.SSH_PORT }}\n          key: ${{ secrets.SSH_KEY }}\n          passphrase: ${{ secrets.SSH_KEY_PASSPHRASE }}\n          username: ${{ secrets.SSH_USERNAME }}\n          command: ${{ secrets.SSH_COMMAND }}\n          silent: true\n\n  GeneratePackage:\n    name: Generate JavaScript companion library\n    runs-on: ubuntu-latest\n    if: ${{ ! contains(github.event.head_commit.message, '[skip publish]') || github.event.inputs.skip-publish == true }}\n    needs: ValidateAllData\n    services:\n      pokedex:\n        image: ghcr.io/favware/graphql-pokemon:latest\n        options: >-\n          --health-cmd \"nc -z localhost 4000\"\n          --health-interval 10s\n          --health-timeout 10s\n          --health-retries 6\n          --health-start-period 5s\n        ports:\n          - 4000:4000\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n      - name: Add problem matchers\n        run: echo \"::add-matcher::.github/problemMatchers/tsc.json\"\n      - name: Use Node.js v20\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: yarn\n          registry-url: https://registry.yarnpkg.com/\n      - name: Install Dependencies\n        run: yarn --immutable\n      - name: Generate library code\n        run: yarn package\n      - name: Upload typescript bundle to artifacts\n        uses: actions/upload-artifact@v7\n        with:\n          name: package_bundle\n          path: dist/\n          if-no-files-found: error\n\n  GitHubMakeRelease:\n    name: Make release on GitHub\n    runs-on: ubuntu-latest\n    if: ${{ ! contains(github.event.head_commit.message, '[skip publish]') || github.event.inputs.skip-publish == true }}\n    needs: GeneratePackage\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n        with:\n          fetch-depth: 0\n          token: ${{ secrets.BOT_TOKEN }}\n      - name: Use Node.js v20\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: yarn\n          registry-url: https://registry.yarnpkg.com/\n      - name: Install Dependencies\n        run: yarn --immutable\n      - name: Configure Git\n        run: |\n          git remote set-url origin \"https://${GITHUB_TOKEN}:x-oauth-basic@github.com/${GITHUB_REPOSITORY}.git\"\n          git config --local user.email \"${GITHUB_EMAIL}\"\n          git config --local user.name \"${GITHUB_USER}\"\n        env:\n          GITHUB_USER: github-actions[bot]\n          GITHUB_EMAIL: 41898282+github-actions[bot]@users.noreply.github.com\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n      - name: Bump semver\n        if: ${{ ! contains(github.event.head_commit.message, '[skip bump]') }}\n        run: yarn bump\n        env:\n          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n      - name: Store bumped package.json\n        uses: actions/upload-artifact@v7\n        with:\n          name: package_json\n          path: package.json\n          if-no-files-found: error\n      - name: Store bumped changelog.md\n        uses: actions/upload-artifact@v7\n        with:\n          name: changelog_md\n          path: CHANGELOG.md\n          if-no-files-found: error\n      - name: Push changes\n        if: ${{ ! contains(github.event.head_commit.message, '[skip bump]') }}\n        run: git push origin main && git push --tags origin main\n\n  NPMPublish:\n    name: Publishing release to NPM\n    runs-on: ubuntu-latest\n    if: ${{ ! contains(github.event.head_commit.message, '[skip publish]') || github.event.inputs.skip-publish == true }}\n    needs: GitHubMakeRelease\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n      - name: Download generated typings artifact\n        uses: actions/download-artifact@v8\n        with:\n          name: package_bundle\n          path: dist/\n      - name: Download stored package.json\n        uses: actions/download-artifact@v8\n        with:\n          name: package_json\n      - name: Download stored changelog.md\n        uses: actions/download-artifact@v8\n        with:\n          name: changelog_md\n      - name: Setup Node for publishing to NPM\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: yarn\n          registry-url: https://registry.yarnpkg.com/\n      - name: Install Dependencies\n        run: yarn --immutable\n      - name: Publish to NPM\n        run: |\n          yarn config set npmAuthToken ${NODE_AUTH_TOKEN}\n          yarn config set npmPublishRegistry \"https://registry.yarnpkg.com\"\n          yarn npm publish\n        env:\n          NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}\n\n  Github-Package-Registry-Node:\n    name: Publishing release to Github Package Registry\n    runs-on: ubuntu-latest\n    if: ${{ ! contains(github.event.head_commit.message, '[skip publish]') || github.event.inputs.skip-publish == true }}\n    needs: GitHubMakeRelease\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n      - name: Setup Node for publishing to Github\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          registry-url: 'https://npm.pkg.github.com'\n          scope: '@favware'\n          cache: yarn\n      - name: Download generated typings artifact\n        uses: actions/download-artifact@v8\n        with:\n          name: package_bundle\n          path: dist/\n      - name: Download stored package.json\n        uses: actions/download-artifact@v8\n        with:\n          name: package_json\n      - name: Download stored changelog.md\n        uses: actions/download-artifact@v8\n        with:\n          name: changelog_md\n      - name: Install Dependencies\n        run: yarn --immutable\n      - name: Publish to Github\n        run: |\n          yarn config set npmAuthToken ${NODE_AUTH_TOKEN}\n          yarn config set npmPublishRegistry \"https://npm.pkg.github.com\"\n          yarn npm publish\n        env:\n          NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}\n"
  },
  {
    "path": ".github/workflows/continuous-integration.yml",
    "content": "name: Continuous Integration\n\non:\n  pull_request:\n\njobs:\n  Linting:\n    name: Linting\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n      - name: Add problem matcher\n        run: echo \"::add-matcher::.github/problemMatchers/eslint.json\"\n      - name: Use Node.js v20\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: yarn\n          registry-url: https://registry.yarnpkg.com/\n      - name: Install Dependencies\n        run: yarn --immutable\n      - name: Run ESLint\n        run: yarn lint --fix=false\n\n  CodeQL:\n    name: Codequality\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v6\n      - name: Initialize CodeQL\n        uses: github/codeql-action/init@v4\n        with:\n          languages: typescript\n\n      - name: Perform CodeQL Analysis\n        uses: github/codeql-action/analyze@v4\n\n  Testing:\n    name: Unit Tests\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n      - name: Use Node.js v20\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: yarn\n          registry-url: https://registry.yarnpkg.com/\n      - name: Install Dependencies\n        run: yarn --immutable\n      - name: Run tests\n        run: yarn test\n\n  Building:\n    name: Compile source code\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n      - name: Add problem matcher\n        run: echo \"::add-matcher::.github/problemMatchers/tsc.json\"\n      - name: Use Node.js v20\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: yarn\n          registry-url: https://registry.yarnpkg.com/\n      - name: Install Dependencies\n        run: yarn --immutable\n      - name: Typecheck\n        run: yarn typecheck\n      - name: Build Code\n        run: yarn build\n"
  },
  {
    "path": ".github/workflows/labelsync.yml",
    "content": "name: Automatic Label Sync\n\non:\n  schedule:\n    - cron: '0 0 * * *'\n  workflow_dispatch:\n\njobs:\n  label_sync:\n    name: Automatic Label Synchronization\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout Project\n        uses: actions/checkout@v6\n        with:\n          sparse-checkout: .github/labels.yml\n          sparse-checkout-cone-mode: false\n          repository: 'sapphiredev/.github'\n      - name: Run Label Sync\n        uses: crazy-max/ghaction-github-labeler@v6\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          yaml-file: .github/labels.yml\n"
  },
  {
    "path": ".github/workflows/static-documentation.yml",
    "content": "name: Deploy static content to Pages\n\non:\n  push:\n    branches:\n      - main\n  workflow_dispatch:\n\npermissions:\n  contents: read\n  pages: write\n  id-token: write\n\nconcurrency:\n  group: 'pages'\n  cancel-in-progress: true\n\njobs:\n  deploy:\n    environment:\n      name: github-pages\n      url: ${{ steps.deployment.outputs.page_url }}\n    runs-on: ubuntu-latest\n    steps:\n      - name: Checkout\n        uses: actions/checkout@v6\n      - name: Setup Pages\n        uses: actions/configure-pages@v5\n      - name: Use Node.js v20\n        uses: actions/setup-node@v6\n        with:\n          node-version: 24\n          cache: yarn\n          registry-url: https://registry.yarnpkg.com/\n      - name: Install Dependencies\n        run: yarn --immutable\n      - name: Generate Magidoc\n        run: yarn docs\n      - name: Add static files\n        run: |\n          printf \"User-agent: *\\nDisallow:\" > docs/magidoc/robots.txt\n          printf \"This file prevents GitHub Pages from using Jekyll.\" >> docs/magidoc/.nojekyll\n          printf \"graphql-pokemon.js.org\" >> docs/magidoc/CNAME\n          cp .gitignore docs/magidoc\n          cp LICENSE.md docs/magidoc\n          cp README.md docs/magidoc\n      - name: Upload artifact\n        uses: actions/upload-pages-artifact@v4\n        with:\n          path: docs/magidoc\n      - name: Deploy to GitHub Pages\n        id: deployment\n        uses: actions/deploy-pages@v4\n"
  },
  {
    "path": ".gitignore",
    "content": "# Dependencies\nnode_modules/\n\n# Misc\n.DS_Store\n.env\n.env.local\n.env.development.local\n.env.test.local\n.env.production.local\n\n# Yarn files\n.yarn/install-state.gz\n.yarn/build-state.yml\n\n# Bad NPM is bad\npackage-lock.json\n\n# File Archives\n*.zip\n*.tar.xz\n*.7z\n*.rar\n\n# Logs\nlogs\n*.log*\n*.tsbuildinfo\ncoverage/\n\n# IDE Settings\n.idea/\n.vs/\n*.iml\n\n# Build files\napi/\ndist/\ncodegen/\ndocs/magidoc/\n"
  },
  {
    "path": ".prettierrc.mjs",
    "content": "import sapphirePrettierConfig from '@sapphire/prettier-config';\n\nexport default {\n  ...sapphirePrettierConfig,\n  useTabs: false,\n  tabWidth: 2,\n  overrides: [\n    ...sapphirePrettierConfig.overrides,\n    {\n      files: 'src/assets/*.ts,json',\n      options: {\n        printWidth: 200\n      }\n    },\n    {\n      files: ['README.md', 'docs/pages/**/*.md'],\n      options: {\n        tabWidth: 2,\n        useTabs: false,\n        printWidth: 80,\n        proseWrap: 'always'\n      }\n    }\n  ]\n};\n"
  },
  {
    "path": ".vscode/extensions.json",
    "content": "{\n  \"recommendations\": [\"graphql.vscode-graphql\", \"graphql.vscode-graphql-syntax\", \"dbaeumer.vscode-eslint\", \"esbenp.prettier-vscode\"]\n}\n"
  },
  {
    "path": ".vscode/launch.json",
    "content": "{\n  \"configurations\": [\n    {\n      \"type\": \"pwa-node\",\n      \"request\": \"launch\",\n      \"runtimeArgs\": [\"run-script\", \"start\"],\n      \"name\": \"Debugger\",\n      \"runtimeExecutable\": \"npm\",\n      \"skipFiles\": [\"<node_internals>/**\", \"node_modules/tslib/**\"],\n      \"internalConsoleOptions\": \"openOnSessionStart\",\n      \"env\": {\n        \"NODE_ENV\": \"development\"\n      },\n      \"console\": \"internalConsole\",\n      \"outputCapture\": \"std\",\n      \"outFiles\": [\"${workspaceFolder}/api/**/*.js\"]\n    }\n  ]\n}\n"
  },
  {
    "path": ".vscode/settings.json",
    "content": "{\n  \"editor.defaultFormatter\": \"esbenp.prettier-vscode\",\n  \"[javascript]\": {\n    \"editor.defaultFormatter\": \"esbenp.prettier-vscode\"\n  },\n  \"[typescript]\": {\n    \"editor.defaultFormatter\": \"esbenp.prettier-vscode\"\n  },\n  \"cSpell.words\": [\"Flaresolverr\", \"updaters\"]\n}\n"
  },
  {
    "path": ".yarn/patches/graphql-npm-16.11.0-836e6ade28.patch",
    "content": "diff --git a/package.json b/package.json\nindex d4d6e112be345bf616cdd042a9f55ac0b1e2d5bf..129889dd7f10af43dac65e41231b5665738004b9 100644\n--- a/package.json\n+++ b/package.json\n@@ -3,8 +3,200 @@\n   \"version\": \"16.11.0\",\n   \"description\": \"A Query Language and Runtime which can target any service.\",\n   \"license\": \"MIT\",\n-  \"main\": \"index\",\n+  \"main\": \"index.js\",\n   \"module\": \"index.mjs\",\n+  \"exports\": {\n+    \".\": {\n+      \"import\": {\n+        \"types\": \"./index.d.ts\",\n+        \"default\": \"./index.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./index.d.ts\",\n+        \"default\": \"./index.js\"\n+      }\n+    },\n+    \"./graphql\": {\n+      \"import\": {\n+        \"types\": \"./graphql.d.ts\",\n+        \"default\": \"./graphql.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./graphql.d.ts\",\n+        \"default\": \"./graphql.js\"\n+      }\n+    },\n+    \"./version\": {\n+      \"import\": {\n+        \"types\": \"./version.d.ts\",\n+        \"default\": \"./version.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./version.d.ts\",\n+        \"default\": \"./version.js\"\n+      }\n+    },\n+    \"./error\": {\n+      \"import\": {\n+        \"types\": \"./error/index.d.ts\",\n+        \"default\": \"./error/index.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./error/index.d.ts\",\n+        \"default\": \"./error/index.js\"\n+      }\n+    },\n+    \"./error/*\": {\n+      \"import\": {\n+        \"types\": \"./error/*.d.ts\",\n+        \"default\": \"./error/*.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./error/*.d.ts\",\n+        \"default\": \"./error/*.js\"\n+      }\n+    },\n+    \"./execution\": {\n+      \"import\": {\n+        \"types\": \"./execution/index.d.ts\",\n+        \"default\": \"./execution/index.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./execution/index.d.ts\",\n+        \"default\": \"./execution/index.js\"\n+      }\n+    },\n+    \"./execution/*\": {\n+      \"import\": {\n+        \"types\": \"./execution/*.d.ts\",\n+        \"default\": \"./execution/*.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./execution/*.d.ts\",\n+        \"default\": \"./execution/*.js\"\n+      }\n+    },\n+    \"./jsutils\": {\n+      \"import\": {\n+        \"types\": \"./jsutils/index.d.ts\",\n+        \"default\": \"./jsutils/index.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./jsutils/index.d.ts\",\n+        \"default\": \"./jsutils/index.js\"\n+      }\n+    },\n+    \"./jsutils/*\": {\n+      \"import\": {\n+        \"types\": \"./jsutils/*.d.ts\",\n+        \"default\": \"./jsutils/*.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./jsutils/*.d.ts\",\n+        \"default\": \"./jsutils/*.js\"\n+      }\n+    },\n+    \"./language\": {\n+      \"import\": {\n+        \"types\": \"./language/index.d.ts\",\n+        \"default\": \"./language/index.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./language/index.d.ts\",\n+        \"default\": \"./language/index.js\"\n+      }\n+    },\n+    \"./language/*\": {\n+      \"import\": {\n+        \"types\": \"./language/*.d.ts\",\n+        \"default\": \"./language/*.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./language/*.d.ts\",\n+        \"default\": \"./language/*.js\"\n+      }\n+    },\n+    \"./subscription\": {\n+      \"import\": {\n+        \"types\": \"./subscription/index.d.ts\",\n+        \"default\": \"./subscription/index.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./subscription/index.d.ts\",\n+        \"default\": \"./subscription/index.js\"\n+      }\n+    },\n+    \"./subscription/*\": {\n+      \"import\": {\n+        \"types\": \"./subscription/*.d.ts\",\n+        \"default\": \"./subscription/*.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./subscription/*.d.ts\",\n+        \"default\": \"./subscription/*.js\"\n+      }\n+    },\n+    \"./type\": {\n+      \"import\": {\n+        \"types\": \"./type/index.d.ts\",\n+        \"default\": \"./type/index.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./type/index.d.ts\",\n+        \"default\": \"./type/index.js\"\n+      }\n+    },\n+    \"./type/*\": {\n+      \"import\": {\n+        \"types\": \"./type/*.d.ts\",\n+        \"default\": \"./type/*.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./type/*.d.ts\",\n+        \"default\": \"./type/*.js\"\n+      }\n+    },\n+    \"./utilities\": {\n+      \"import\": {\n+        \"types\": \"./utilities/index.d.ts\",\n+        \"default\": \"./utilities/index.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./utilities/index.d.ts\",\n+        \"default\": \"./utilities/index.js\"\n+      }\n+    },\n+    \"./utilities/*\": {\n+      \"import\": {\n+        \"types\": \"./utilities/*.d.ts\",\n+        \"default\": \"./utilities/*.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./utilities/*.d.ts\",\n+        \"default\": \"./utilities/*.js\"\n+      }\n+    },\n+    \"./validation\": {\n+      \"import\": {\n+        \"types\": \"./validation/index.d.ts\",\n+        \"default\": \"./validation/index.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./validation/index.d.ts\",\n+        \"default\": \"./validation/index.js\"\n+      }\n+    },\n+    \"./validation/*\": {\n+      \"import\": {\n+        \"types\": \"./validation/*.d.ts\",\n+        \"default\": \"./validation/*.mjs\"\n+      },\n+      \"require\": {\n+        \"types\": \"./validation/*.d.ts\",\n+        \"default\": \"./validation/*.js\"\n+      }\n+    }\n+  },\n   \"typesVersions\": {\n     \">=4.1.0\": {\n       \"*\": [\n"
  },
  {
    "path": ".yarn/plugins/@yarnpkg/plugin-git-hooks.cjs",
    "content": "/* eslint-disable */\n//prettier-ignore\nmodule.exports = {\nname: \"@yarnpkg/plugin-git-hooks\",\nfactory: function (require) {\nvar plugin=(()=>{var p=Object.create;var i=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var l=Object.getOwnPropertyNames;var P=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty;var _=(n=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(n,{get:(e,E)=>(typeof require<\"u\"?require:e)[E]}):n)(function(n){if(typeof require<\"u\")return require.apply(this,arguments);throw new Error('Dynamic require of \"'+n+'\" is not supported')});var c=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),A=(n,e)=>{for(var E in e)i(n,E,{get:e[E],enumerable:!0})},C=(n,e,E,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let I of l(e))!m.call(n,I)&&I!==E&&i(n,I,{get:()=>e[I],enumerable:!(s=u(e,I))||s.enumerable});return n};var U=(n,e,E)=>(E=n!=null?p(P(n)):{},C(e||!n||!n.__esModule?i(E,\"default\",{value:n,enumerable:!0}):E,n)),v=n=>C(i({},\"__esModule\",{value:!0}),n);var L=c((M,B)=>{B.exports=[{name:\"Appcircle\",constant:\"APPCIRCLE\",env:\"AC_APPCIRCLE\"},{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"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:\"Codefresh\",constant:\"CODEFRESH\",env:\"CF_BUILD_ID\",pr:{any:[\"CF_PULL_REQUEST_NUMBER\",\"CF_PULL_REQUEST_ID\"]}},{name:\"Codemagic\",constant:\"CODEMAGIC\",env:\"CM_BUILD_ID\",pr:\"CM_PULL_REQUEST\"},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"Expo Application Services\",constant:\"EAS\",env:\"EAS_BUILD\"},{name:\"Gerrit\",constant:\"GERRIT\",env:\"GERRIT_PROJECT\"},{name:\"GitHub Actions\",constant:\"GITHUB_ACTIONS\",env:\"GITHUB_ACTIONS\",pr:{GITHUB_EVENT_NAME:\"pull_request\"}},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\",pr:\"CI_MERGE_REQUEST_ID\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"Google Cloud Build\",constant:\"GOOGLE_CLOUD_BUILD\",env:\"BUILDER_OUTPUT\"},{name:\"Harness CI\",constant:\"HARNESS\",env:\"HARNESS_BUILD_ID\"},{name:\"Heroku\",constant:\"HEROKU\",env:{env:\"NODE\",includes:\"/app/.heroku/node/bin/node\"}},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"LayerCI\",constant:\"LAYERCI\",env:\"LAYERCI\",pr:\"LAYERCI_PULL_REQUEST\"},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Nevercode\",constant:\"NEVERCODE\",env:\"NEVERCODE\",pr:{env:\"NEVERCODE_PULL_REQUEST\",ne:\"false\"}},{name:\"ReleaseHub\",constant:\"RELEASEHUB\",env:\"RELEASE_BUILD_ID\"},{name:\"Render\",constant:\"RENDER\",env:\"RENDER\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Screwdriver\",constant:\"SCREWDRIVER\",env:\"SCREWDRIVER\",pr:{env:\"SD_PULL_REQUEST\",ne:\"false\"}},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Shippable\",constant:\"SHIPPABLE\",env:\"SHIPPABLE\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Solano CI\",constant:\"SOLANO\",env:\"TDDIUM\",pr:\"TDDIUM_PR_ID\"},{name:\"Sourcehut\",constant:\"SOURCEHUT\",env:{CI_NAME:\"sourcehut\"}},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}},{name:\"Vercel\",constant:\"VERCEL\",env:{any:[\"NOW_BUILDER\",\"VERCEL\"]}},{name:\"Visual Studio App Center\",constant:\"APPCENTER\",env:\"APPCENTER_BUILD_ID\"},{name:\"Woodpecker\",constant:\"WOODPECKER\",env:{CI:\"woodpecker\"},pr:{CI_BUILD_EVENT:\"pull_request\"}},{name:\"Xcode Cloud\",constant:\"XCODE_CLOUD\",env:\"CI_XCODE_PROJECT\",pr:\"CI_PULL_REQUEST_NUMBER\"},{name:\"Xcode Server\",constant:\"XCODE_SERVER\",env:\"XCS\"}]});var T=c(a=>{\"use strict\";var D=L(),t=process.env;Object.defineProperty(a,\"_vendors\",{value:D.map(function(n){return n.constant})});a.name=null;a.isPR=null;D.forEach(function(n){let E=(Array.isArray(n.env)?n.env:[n.env]).every(function(s){return S(s)});if(a[n.constant]=E,!!E)switch(a.name=n.name,typeof n.pr){case\"string\":a.isPR=!!t[n.pr];break;case\"object\":\"env\"in n.pr?a.isPR=n.pr.env in t&&t[n.pr.env]!==n.pr.ne:\"any\"in n.pr?a.isPR=n.pr.any.some(function(s){return!!t[s]}):a.isPR=S(n.pr);break;default:a.isPR=null}});a.isCI=!!(t.CI!==\"false\"&&(t.BUILD_ID||t.BUILD_NUMBER||t.CI||t.CI_APP_ID||t.CI_BUILD_ID||t.CI_BUILD_NUMBER||t.CI_NAME||t.CONTINUOUS_INTEGRATION||t.RUN_ID||a.name||!1));function S(n){return typeof n==\"string\"?!!t[n]:\"env\"in n?t[n.env]&&t[n.env].includes(n.includes):\"any\"in n?n.any.some(function(e){return!!t[e]}):Object.keys(n).every(function(e){return t[e]===n[e]})}});var d={};A(d,{default:()=>O});var o=U(_(\"process\")),r=_(\"@yarnpkg/core\"),R=U(T()),N={configuration:{gitHooksPath:{description:\"Path to git hooks directory (recommended: .github/hooks)\",type:r.SettingsType.STRING,default:null},disableGitHooks:{description:\"Disable automatic git hooks installation\",type:r.SettingsType.BOOLEAN,default:R.default.isCI}},hooks:{afterAllInstalled:async n=>{let e=n.configuration.get(\"gitHooksPath\"),E=n.configuration.get(\"disableGitHooks\"),s=Boolean(n.cwd?.endsWith(`dlx-${o.default.pid}`));if(e&&!R.default.isCI&&!s&&!E)return r.execUtils.pipevp(\"git\",[\"config\",\"core.hooksPath\",e],{cwd:n.cwd,strict:!0,stdin:o.default.stdin,stdout:o.default.stdout,stderr:o.default.stderr})}}},O=N;return v(d);})();\nreturn plugin;\n}\n};\n"
  },
  {
    "path": ".yarn/releases/yarn-4.12.0.cjs",
    "content": "#!/usr/bin/env node\n/* eslint-disable */\n//prettier-ignore\n(()=>{var xGe=Object.create;var mU=Object.defineProperty;var kGe=Object.getOwnPropertyDescriptor;var QGe=Object.getOwnPropertyNames;var TGe=Object.getPrototypeOf,RGe=Object.prototype.hasOwnProperty;var Ie=(t=>typeof require<\"u\"?require:typeof Proxy<\"u\"?new Proxy(t,{get:(e,r)=>(typeof require<\"u\"?require:e)[r]}):t)(function(t){if(typeof require<\"u\")return require.apply(this,arguments);throw Error('Dynamic require of \"'+t+'\" is not supported')});var Xe=(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)mU(t,r,{get:e[r],enumerable:!0})},FGe=(t,e,r,s)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let a of QGe(e))!RGe.call(t,a)&&a!==r&&mU(t,a,{get:()=>e[a],enumerable:!(s=kGe(e,a))||s.enumerable});return t};var ut=(t,e,r)=>(r=t!=null?xGe(TGe(t)):{},FGe(e||!t||!t.__esModule?mU(r,\"default\",{value:t,enumerable:!0}):r,t));var fi={};Vt(fi,{SAFE_TIME:()=>WZ,S_IFDIR:()=>JP,S_IFLNK:()=>KP,S_IFMT:()=>Mf,S_IFREG:()=>N2});var Mf,JP,N2,KP,WZ,YZ=Xe(()=>{Mf=61440,JP=16384,N2=32768,KP=40960,WZ=456789e3});var or={};Vt(or,{EBADF:()=>Mo,EBUSY:()=>NGe,EEXIST:()=>HGe,EINVAL:()=>LGe,EISDIR:()=>_Ge,ENOENT:()=>MGe,ENOSYS:()=>OGe,ENOTDIR:()=>UGe,ENOTEMPTY:()=>GGe,EOPNOTSUPP:()=>qGe,EROFS:()=>jGe,ERR_DIR_CLOSED:()=>yU});function Cc(t,e){return Object.assign(new Error(`${t}: ${e}`),{code:t})}function NGe(t){return Cc(\"EBUSY\",t)}function OGe(t,e){return Cc(\"ENOSYS\",`${t}, ${e}`)}function LGe(t){return Cc(\"EINVAL\",`invalid argument, ${t}`)}function Mo(t){return Cc(\"EBADF\",`bad file descriptor, ${t}`)}function MGe(t){return Cc(\"ENOENT\",`no such file or directory, ${t}`)}function UGe(t){return Cc(\"ENOTDIR\",`not a directory, ${t}`)}function _Ge(t){return Cc(\"EISDIR\",`illegal operation on a directory, ${t}`)}function HGe(t){return Cc(\"EEXIST\",`file already exists, ${t}`)}function jGe(t){return Cc(\"EROFS\",`read-only filesystem, ${t}`)}function GGe(t){return Cc(\"ENOTEMPTY\",`directory not empty, ${t}`)}function qGe(t){return Cc(\"EOPNOTSUPP\",`operation not supported, ${t}`)}function yU(){return Cc(\"ERR_DIR_CLOSED\",\"Directory handle was closed\")}var zP=Xe(()=>{});var $a={};Vt($a,{BigIntStatsEntry:()=>iE,DEFAULT_MODE:()=>CU,DirEntry:()=>EU,StatEntry:()=>nE,areStatsEqual:()=>wU,clearStats:()=>XP,convertToBigIntStats:()=>YGe,makeDefaultStats:()=>VZ,makeEmptyStats:()=>WGe});function VZ(){return new nE}function WGe(){return XP(VZ())}function XP(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):IU.types.isDate(r)&&(t[e]=new Date(0))}return t}function YGe(t){let e=new iE;for(let r in t)if(Object.hasOwn(t,r)){let s=t[r];typeof s==\"number\"?e[r]=BigInt(s):IU.types.isDate(s)&&(e[r]=new Date(s))}return e.atimeNs=e.atimeMs*BigInt(1e6),e.mtimeNs=e.mtimeMs*BigInt(1e6),e.ctimeNs=e.ctimeMs*BigInt(1e6),e.birthtimeNs=e.birthtimeMs*BigInt(1e6),e}function wU(t,e){if(t.atimeMs!==e.atimeMs||t.birthtimeMs!==e.birthtimeMs||t.blksize!==e.blksize||t.blocks!==e.blocks||t.ctimeMs!==e.ctimeMs||t.dev!==e.dev||t.gid!==e.gid||t.ino!==e.ino||t.isBlockDevice()!==e.isBlockDevice()||t.isCharacterDevice()!==e.isCharacterDevice()||t.isDirectory()!==e.isDirectory()||t.isFIFO()!==e.isFIFO()||t.isFile()!==e.isFile()||t.isSocket()!==e.isSocket()||t.isSymbolicLink()!==e.isSymbolicLink()||t.mode!==e.mode||t.mtimeMs!==e.mtimeMs||t.nlink!==e.nlink||t.rdev!==e.rdev||t.size!==e.size||t.uid!==e.uid)return!1;let r=t,s=e;return!(r.atimeNs!==s.atimeNs||r.mtimeNs!==s.mtimeNs||r.ctimeNs!==s.ctimeNs||r.birthtimeNs!==s.birthtimeNs)}var IU,CU,EU,nE,iE,BU=Xe(()=>{IU=ut(Ie(\"util\")),CU=33188,EU=class{constructor(){this.name=\"\";this.path=\"\";this.mode=0}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},nE=class{constructor(){this.uid=0;this.gid=0;this.size=0;this.blksize=0;this.atimeMs=0;this.mtimeMs=0;this.ctimeMs=0;this.birthtimeMs=0;this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=0;this.ino=0;this.mode=CU;this.nlink=1;this.rdev=0;this.blocks=1}isBlockDevice(){return!1}isCharacterDevice(){return!1}isDirectory(){return(this.mode&61440)===16384}isFIFO(){return!1}isFile(){return(this.mode&61440)===32768}isSocket(){return!1}isSymbolicLink(){return(this.mode&61440)===40960}},iE=class{constructor(){this.uid=BigInt(0);this.gid=BigInt(0);this.size=BigInt(0);this.blksize=BigInt(0);this.atimeMs=BigInt(0);this.mtimeMs=BigInt(0);this.ctimeMs=BigInt(0);this.birthtimeMs=BigInt(0);this.atimeNs=BigInt(0);this.mtimeNs=BigInt(0);this.ctimeNs=BigInt(0);this.birthtimeNs=BigInt(0);this.atime=new Date(0);this.mtime=new Date(0);this.ctime=new Date(0);this.birthtime=new Date(0);this.dev=BigInt(0);this.ino=BigInt(0);this.mode=BigInt(CU);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 XGe(t){let e,r;if(e=t.match(KGe))t=e[1];else if(r=t.match(zGe))t=`\\\\\\\\${r[1]?\".\\\\\":\"\"}${r[2]}`;else return t;return t.replace(/\\//g,\"\\\\\")}function ZGe(t){t=t.replace(/\\\\/g,\"/\");let e,r;return(e=t.match(VGe))?t=`/${e[1]}`:(r=t.match(JGe))&&(t=`/unc/${r[1]?\".dot/\":\"\"}${r[2]}`),t}function ZP(t,e){return t===fe?KZ(e):vU(e)}var O2,vt,Er,fe,J,JZ,VGe,JGe,KGe,zGe,vU,KZ,el=Xe(()=>{O2=ut(Ie(\"path\")),vt={root:\"/\",dot:\".\",parent:\"..\"},Er={home:\"~\",nodeModules:\"node_modules\",manifest:\"package.json\",lockfile:\"yarn.lock\",virtual:\"__virtual__\",pnpJs:\".pnp.js\",pnpCjs:\".pnp.cjs\",pnpData:\".pnp.data.json\",pnpEsmLoader:\".pnp.loader.mjs\",rc:\".yarnrc.yml\",env:\".env\"},fe=Object.create(O2.default),J=Object.create(O2.default.posix);fe.cwd=()=>process.cwd();J.cwd=process.platform===\"win32\"?()=>vU(process.cwd()):process.cwd;process.platform===\"win32\"&&(J.resolve=(...t)=>t.length>0&&J.isAbsolute(t[0])?O2.default.posix.resolve(...t):O2.default.posix.resolve(J.cwd(),...t));JZ=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)};fe.contains=(t,e)=>JZ(fe,t,e);J.contains=(t,e)=>JZ(J,t,e);VGe=/^([a-zA-Z]:.*)$/,JGe=/^\\/\\/(\\.\\/)?(.*)$/,KGe=/^\\/([a-zA-Z]:.*)$/,zGe=/^\\/unc\\/(\\.dot\\/)?(.*)$/;vU=process.platform===\"win32\"?ZGe:t=>t,KZ=process.platform===\"win32\"?XGe:t=>t;fe.fromPortablePath=KZ;fe.toPortablePath=vU});async function $P(t,e){let r=\"0123456789abcdef\";await t.mkdirPromise(e.indexPath,{recursive:!0});let s=[];for(let a of r)for(let n of r)s.push(t.mkdirPromise(t.pathUtils.join(e.indexPath,`${a}${n}`),{recursive:!0}));return await Promise.all(s),e.indexPath}async function zZ(t,e,r,s,a){let n=t.pathUtils.normalize(e),c=r.pathUtils.normalize(s),f=[],p=[],{atime:h,mtime:E}=a.stableTime?{atime:dd,mtime:dd}:await r.lstatPromise(c);await t.mkdirpPromise(t.pathUtils.dirname(e),{utimes:[h,E]}),await SU(f,p,t,n,r,c,{...a,didParentExist:!0});for(let C of f)await C();await Promise.all(p.map(C=>C()))}async function SU(t,e,r,s,a,n,c){let f=c.didParentExist?await XZ(r,s):null,p=await a.lstatPromise(n),{atime:h,mtime:E}=c.stableTime?{atime:dd,mtime:dd}:p,C;switch(!0){case p.isDirectory():C=await e5e(t,e,r,s,f,a,n,p,c);break;case p.isFile():C=await n5e(t,e,r,s,f,a,n,p,c);break;case p.isSymbolicLink():C=await i5e(t,e,r,s,f,a,n,p,c);break;default:throw new Error(`Unsupported file type (${p.mode})`)}return(c.linkStrategy?.type!==\"HardlinkFromIndex\"||!p.isFile())&&((C||f?.mtime?.getTime()!==E.getTime()||f?.atime?.getTime()!==h.getTime())&&(e.push(()=>r.lutimesPromise(s,h,E)),C=!0),(f===null||(f.mode&511)!==(p.mode&511))&&(e.push(()=>r.chmodPromise(s,p.mode&511)),C=!0)),C}async function XZ(t,e){try{return await t.lstatPromise(e)}catch{return null}}async function e5e(t,e,r,s,a,n,c,f,p){if(a!==null&&!a.isDirectory())if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;let h=!1;a===null&&(t.push(async()=>{try{await r.mkdirPromise(s,{mode:f.mode})}catch(S){if(S.code!==\"EEXIST\")throw S}}),h=!0);let E=await n.readdirPromise(c),C=p.didParentExist&&!a?{...p,didParentExist:!1}:p;if(p.stableSort)for(let S of E.sort())await SU(t,e,r,r.pathUtils.join(s,S),n,n.pathUtils.join(c,S),C)&&(h=!0);else(await Promise.all(E.map(async P=>{await SU(t,e,r,r.pathUtils.join(s,P),n,n.pathUtils.join(c,P),C)}))).some(P=>P)&&(h=!0);return h}async function t5e(t,e,r,s,a,n,c,f,p,h){let E=await n.checksumFilePromise(c,{algorithm:\"sha1\"}),C=420,S=f.mode&511,P=`${E}${S!==C?S.toString(8):\"\"}`,I=r.pathUtils.join(h.indexPath,E.slice(0,2),`${P}.dat`),R;(le=>(le[le.Lock=0]=\"Lock\",le[le.Rename=1]=\"Rename\"))(R||={});let N=1,U=await XZ(r,I);if(a){let ie=U&&a.dev===U.dev&&a.ino===U.ino,ue=U?.mtimeMs!==$Ge;if(ie&&ue&&h.autoRepair&&(N=0,U=null),!ie)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1}let W=!U&&N===1?`${I}.${Math.floor(Math.random()*4294967296).toString(16).padStart(8,\"0\")}`:null,ee=!1;return t.push(async()=>{if(!U&&(N===0&&await r.lockPromise(I,async()=>{let ie=await n.readFilePromise(c);await r.writeFilePromise(I,ie)}),N===1&&W)){let ie=await n.readFilePromise(c);await r.writeFilePromise(W,ie);try{await r.linkPromise(W,I)}catch(ue){if(ue.code===\"EEXIST\")ee=!0,await r.unlinkPromise(W);else throw ue}}a||await r.linkPromise(I,s)}),e.push(async()=>{U||(await r.lutimesPromise(I,dd,dd),S!==C&&await r.chmodPromise(I,S)),W&&!ee&&await r.unlinkPromise(W)}),!1}async function r5e(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{let h=await n.readFilePromise(c);await r.writeFilePromise(s,h)}),!0}async function n5e(t,e,r,s,a,n,c,f,p){return p.linkStrategy?.type===\"HardlinkFromIndex\"?t5e(t,e,r,s,a,n,c,f,p,p.linkStrategy):r5e(t,e,r,s,a,n,c,f,p)}async function i5e(t,e,r,s,a,n,c,f,p){if(a!==null)if(p.overwrite)t.push(async()=>r.removePromise(s)),a=null;else return!1;return t.push(async()=>{await r.symlinkPromise(ZP(r.pathUtils,await n.readlinkPromise(c)),s)}),!0}var dd,$Ge,DU=Xe(()=>{el();dd=new Date(456789e3*1e3),$Ge=dd.getTime()});function ex(t,e,r,s){let a=()=>{let n=r.shift();if(typeof n>\"u\")return null;let c=t.pathUtils.join(e,n);return Object.assign(t.statSync(c),{name:n,path:void 0})};return new L2(e,a,s)}var L2,ZZ=Xe(()=>{zP();L2=class{constructor(e,r,s={}){this.path=e;this.nextDirent=r;this.opts=s;this.closed=!1}throwIfClosed(){if(this.closed)throw yU()}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 $Z(t,e){if(t!==e)throw new Error(`Invalid StatWatcher status: expected '${e}', got '${t}'`)}var e$,tx,t$=Xe(()=>{e$=Ie(\"events\");BU();tx=class t extends e$.EventEmitter{constructor(r,s,{bigint:a=!1}={}){super();this.status=\"ready\";this.changeListeners=new Map;this.startTimeout=null;this.fakeFs=r,this.path=s,this.bigint=a,this.lastStats=this.stat()}static create(r,s,a){let n=new t(r,s,a);return n.start(),n}start(){$Z(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(){$Z(this.status,\"running\"),this.status=\"stopped\",this.startTimeout!==null&&(clearTimeout(this.startTimeout),this.startTimeout=null),this.emit(\"stop\")}stat(){try{return this.fakeFs.statSync(this.path,{bigint:this.bigint})}catch{let r=this.bigint?new iE:new nE;return XP(r)}}makeInterval(r){let s=setInterval(()=>{let a=this.stat(),n=this.lastStats;wU(a,n)||(this.lastStats=a,this.emit(\"change\",a,n))},r.interval);return r.persistent?s:s.unref()}registerChangeListener(r,s){this.addListener(\"change\",r),this.changeListeners.set(r,this.makeInterval(s))}unregisterChangeListener(r){this.removeListener(\"change\",r);let s=this.changeListeners.get(r);typeof s<\"u\"&&clearInterval(s),this.changeListeners.delete(r)}unregisterAllChangeListeners(){for(let r of this.changeListeners.keys())this.unregisterChangeListener(r)}hasChangeListeners(){return this.changeListeners.size>0}ref(){for(let r of this.changeListeners.values())r.ref();return this}unref(){for(let r of this.changeListeners.values())r.unref();return this}}});function sE(t,e,r,s){let a,n,c,f;switch(typeof r){case\"function\":a=!1,n=!0,c=5007,f=r;break;default:({bigint:a=!1,persistent:n=!0,interval:c=5007}=r),f=s;break}let p=rx.get(t);typeof p>\"u\"&&rx.set(t,p=new Map);let h=p.get(e);return typeof h>\"u\"&&(h=tx.create(t,e,{bigint:a}),p.set(e,h)),h.registerChangeListener(f,{persistent:n,interval:c}),h}function md(t,e,r){let s=rx.get(t);if(typeof s>\"u\")return;let a=s.get(e);typeof a>\"u\"||(typeof r>\"u\"?a.unregisterAllChangeListeners():a.unregisterChangeListener(r),a.hasChangeListeners()||(a.stop(),s.delete(e)))}function yd(t){let e=rx.get(t);if(!(typeof e>\"u\"))for(let r of e.keys())md(t,r)}var rx,bU=Xe(()=>{t$();rx=new WeakMap});function s5e(t){let e=t.match(/\\r?\\n/g);if(e===null)return n$.EOL;let r=e.filter(a=>a===`\\r\n`).length,s=e.length-r;return r>s?`\\r\n`:`\n`}function Ed(t,e){return e.replace(/\\r?\\n/g,s5e(t))}var r$,n$,mp,Uf,Id=Xe(()=>{r$=Ie(\"crypto\"),n$=Ie(\"os\");DU();el();mp=class{constructor(e){this.pathUtils=e}async*genTraversePromise(e,{stableSort:r=!1}={}){let s=[e];for(;s.length>0;){let a=s.shift();if((await this.lstatPromise(a)).isDirectory()){let c=await this.readdirPromise(a);if(r)for(let f of c.sort())s.push(this.pathUtils.join(a,f));else throw new Error(\"Not supported\")}else yield a}}async checksumFilePromise(e,{algorithm:r=\"sha512\"}={}){let s=await this.openPromise(e,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,r$.createHash)(r),f=0;for(;(f=await this.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest(\"hex\")}finally{await this.closePromise(s)}}async removePromise(e,{recursive:r=!0,maxRetries:s=5}={}){let a;try{a=await this.lstatPromise(e)}catch(n){if(n.code===\"ENOENT\")return;throw n}if(a.isDirectory()){if(r){let n=await this.readdirPromise(e);await Promise.all(n.map(c=>this.removePromise(this.pathUtils.resolve(e,c))))}for(let n=0;n<=s;n++)try{await this.rmdirPromise(e);break}catch(c){if(c.code!==\"EBUSY\"&&c.code!==\"ENOTEMPTY\")throw c;n<s&&await new Promise(f=>setTimeout(f,n*100))}}else await this.unlinkPromise(e)}removeSync(e,{recursive:r=!0}={}){let s;try{s=this.lstatSync(e)}catch(a){if(a.code===\"ENOENT\")return;throw a}if(s.isDirectory()){if(r)for(let a of this.readdirSync(e))this.removeSync(this.pathUtils.resolve(e,a));this.rmdirSync(e)}else this.unlinkSync(e)}async mkdirpPromise(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{await this.mkdirPromise(f)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=f,r!=null&&await this.chmodPromise(f,r),s!=null)await this.utimesPromise(f,s[0],s[1]);else{let p=await this.statPromise(this.pathUtils.dirname(f));await this.utimesPromise(f,p.atime,p.mtime)}}}return n}mkdirpSync(e,{chmod:r,utimes:s}={}){if(e=this.resolve(e),e===this.pathUtils.dirname(e))return;let a=e.split(this.pathUtils.sep),n;for(let c=2;c<=a.length;++c){let f=a.slice(0,c).join(this.pathUtils.sep);if(!this.existsSync(f)){try{this.mkdirSync(f)}catch(p){if(p.code===\"EEXIST\")continue;throw p}if(n??=f,r!=null&&this.chmodSync(f,r),s!=null)this.utimesSync(f,s[0],s[1]);else{let p=this.statSync(this.pathUtils.dirname(f));this.utimesSync(f,p.atime,p.mtime)}}}return n}async copyPromise(e,r,{baseFs:s=this,overwrite:a=!0,stableSort:n=!1,stableTime:c=!1,linkStrategy:f=null}={}){return await zZ(this,e,s,r,{overwrite:a,stableSort:n,stableTime:c,linkStrategy:f})}copySync(e,r,{baseFs:s=this,overwrite:a=!0}={}){let n=s.lstatSync(r),c=this.existsSync(e);if(n.isDirectory()){this.mkdirpSync(e);let p=s.readdirSync(r);for(let h of p)this.copySync(this.pathUtils.join(e,h),s.pathUtils.join(r,h),{baseFs:s,overwrite:a})}else if(n.isFile()){if(!c||a){c&&this.removeSync(e);let p=s.readFileSync(r);this.writeFileSync(e,p)}}else if(n.isSymbolicLink()){if(!c||a){c&&this.removeSync(e);let p=s.readlinkSync(r);this.symlinkSync(ZP(this.pathUtils,p),e)}}else throw new Error(`Unsupported file type (file: ${r}, mode: 0o${n.mode.toString(8).padStart(6,\"0\")})`);let f=n.mode&511;this.chmodSync(e,f)}async changeFilePromise(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferPromise(e,r,s):this.changeFileTextPromise(e,r,s)}async changeFileBufferPromise(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=await this.readFilePromise(e)}catch{}Buffer.compare(a,r)!==0&&await this.writeFilePromise(e,r,{mode:s})}async changeFileTextPromise(e,r,{automaticNewlines:s,mode:a}={}){let n=\"\";try{n=await this.readFilePromise(e,\"utf8\")}catch{}let c=s?Ed(n,r):r;n!==c&&await this.writeFilePromise(e,c,{mode:a})}changeFileSync(e,r,s={}){return Buffer.isBuffer(r)?this.changeFileBufferSync(e,r,s):this.changeFileTextSync(e,r,s)}changeFileBufferSync(e,r,{mode:s}={}){let a=Buffer.alloc(0);try{a=this.readFileSync(e)}catch{}Buffer.compare(a,r)!==0&&this.writeFileSync(e,r,{mode:s})}changeFileTextSync(e,r,{automaticNewlines:s=!1,mode:a}={}){let n=\"\";try{n=this.readFileSync(e,\"utf8\")}catch{}let c=s?Ed(n,r):r;n!==c&&this.writeFileSync(e,c,{mode:a})}async movePromise(e,r){try{await this.renamePromise(e,r)}catch(s){if(s.code===\"EXDEV\")await this.copyPromise(r,e),await this.removePromise(e);else throw s}}moveSync(e,r){try{this.renameSync(e,r)}catch(s){if(s.code===\"EXDEV\")this.copySync(r,e),this.removeSync(e);else throw s}}async lockPromise(e,r){let s=`${e}.flock`,a=1e3/60,n=Date.now(),c=null,f=async()=>{let p;try{[p]=await this.readJsonPromise(s)}catch{return Date.now()-n<500}try{return process.kill(p,0),!0}catch{return!1}};for(;c===null;)try{c=await this.openPromise(s,\"wx\")}catch(p){if(p.code===\"EEXIST\"){if(!await f())try{await this.unlinkPromise(s);continue}catch{}if(Date.now()-n<60*1e3)await new Promise(h=>setTimeout(h,a));else throw new Error(`Couldn't acquire a lock in a reasonable time (via ${s})`)}else throw p}await this.writePromise(c,JSON.stringify([process.pid]));try{return await r()}finally{try{await this.closePromise(c),await this.unlinkPromise(s)}catch{}}}async readJsonPromise(e){let r=await this.readFilePromise(e,\"utf8\");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}readJsonSync(e){let r=this.readFileSync(e,\"utf8\");try{return JSON.parse(r)}catch(s){throw s.message+=` (in ${e})`,s}}async writeJsonPromise(e,r,{compact:s=!1}={}){let a=s?0:2;return await this.writeFilePromise(e,`${JSON.stringify(r,null,a)}\n`)}writeJsonSync(e,r,{compact:s=!1}={}){let a=s?0:2;return this.writeFileSync(e,`${JSON.stringify(r,null,a)}\n`)}async preserveTimePromise(e,r){let s=await this.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await this.lutimesPromise(e,s.atime,s.mtime)}async preserveTimeSync(e,r){let s=this.lstatSync(e),a=r();typeof a<\"u\"&&(e=a),this.lutimesSync(e,s.atime,s.mtime)}},Uf=class extends mp{constructor(){super(J)}}});var _s,yp=Xe(()=>{Id();_s=class extends mp{getExtractHint(e){return this.baseFs.getExtractHint(e)}resolve(e){return this.mapFromBase(this.baseFs.resolve(this.mapToBase(e)))}getRealPath(){return this.mapFromBase(this.baseFs.getRealPath())}async openPromise(e,r,s){return this.baseFs.openPromise(this.mapToBase(e),r,s)}openSync(e,r,s){return this.baseFs.openSync(this.mapToBase(e),r,s)}async opendirPromise(e,r){return Object.assign(await this.baseFs.opendirPromise(this.mapToBase(e),r),{path:e})}opendirSync(e,r){return Object.assign(this.baseFs.opendirSync(this.mapToBase(e),r),{path:e})}async readPromise(e,r,s,a,n){return await this.baseFs.readPromise(e,r,s,a,n)}readSync(e,r,s,a,n){return this.baseFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return typeof r==\"string\"?await this.baseFs.writePromise(e,r,s):await this.baseFs.writePromise(e,r,s,a,n)}writeSync(e,r,s,a,n){return typeof r==\"string\"?this.baseFs.writeSync(e,r,s):this.baseFs.writeSync(e,r,s,a,n)}async closePromise(e){return this.baseFs.closePromise(e)}closeSync(e){this.baseFs.closeSync(e)}createReadStream(e,r){return this.baseFs.createReadStream(e!==null?this.mapToBase(e):e,r)}createWriteStream(e,r){return this.baseFs.createWriteStream(e!==null?this.mapToBase(e):e,r)}async realpathPromise(e){return this.mapFromBase(await this.baseFs.realpathPromise(this.mapToBase(e)))}realpathSync(e){return this.mapFromBase(this.baseFs.realpathSync(this.mapToBase(e)))}async existsPromise(e){return this.baseFs.existsPromise(this.mapToBase(e))}existsSync(e){return this.baseFs.existsSync(this.mapToBase(e))}accessSync(e,r){return this.baseFs.accessSync(this.mapToBase(e),r)}async accessPromise(e,r){return this.baseFs.accessPromise(this.mapToBase(e),r)}async statPromise(e,r){return this.baseFs.statPromise(this.mapToBase(e),r)}statSync(e,r){return this.baseFs.statSync(this.mapToBase(e),r)}async fstatPromise(e,r){return this.baseFs.fstatPromise(e,r)}fstatSync(e,r){return this.baseFs.fstatSync(e,r)}lstatPromise(e,r){return this.baseFs.lstatPromise(this.mapToBase(e),r)}lstatSync(e,r){return this.baseFs.lstatSync(this.mapToBase(e),r)}async fchmodPromise(e,r){return this.baseFs.fchmodPromise(e,r)}fchmodSync(e,r){return this.baseFs.fchmodSync(e,r)}async chmodPromise(e,r){return this.baseFs.chmodPromise(this.mapToBase(e),r)}chmodSync(e,r){return this.baseFs.chmodSync(this.mapToBase(e),r)}async fchownPromise(e,r,s){return this.baseFs.fchownPromise(e,r,s)}fchownSync(e,r,s){return this.baseFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return this.baseFs.chownPromise(this.mapToBase(e),r,s)}chownSync(e,r,s){return this.baseFs.chownSync(this.mapToBase(e),r,s)}async renamePromise(e,r){return this.baseFs.renamePromise(this.mapToBase(e),this.mapToBase(r))}renameSync(e,r){return this.baseFs.renameSync(this.mapToBase(e),this.mapToBase(r))}async copyFilePromise(e,r,s=0){return this.baseFs.copyFilePromise(this.mapToBase(e),this.mapToBase(r),s)}copyFileSync(e,r,s=0){return this.baseFs.copyFileSync(this.mapToBase(e),this.mapToBase(r),s)}async appendFilePromise(e,r,s){return this.baseFs.appendFilePromise(this.fsMapToBase(e),r,s)}appendFileSync(e,r,s){return this.baseFs.appendFileSync(this.fsMapToBase(e),r,s)}async writeFilePromise(e,r,s){return this.baseFs.writeFilePromise(this.fsMapToBase(e),r,s)}writeFileSync(e,r,s){return this.baseFs.writeFileSync(this.fsMapToBase(e),r,s)}async unlinkPromise(e){return this.baseFs.unlinkPromise(this.mapToBase(e))}unlinkSync(e){return this.baseFs.unlinkSync(this.mapToBase(e))}async utimesPromise(e,r,s){return this.baseFs.utimesPromise(this.mapToBase(e),r,s)}utimesSync(e,r,s){return this.baseFs.utimesSync(this.mapToBase(e),r,s)}async lutimesPromise(e,r,s){return this.baseFs.lutimesPromise(this.mapToBase(e),r,s)}lutimesSync(e,r,s){return this.baseFs.lutimesSync(this.mapToBase(e),r,s)}async mkdirPromise(e,r){return this.baseFs.mkdirPromise(this.mapToBase(e),r)}mkdirSync(e,r){return this.baseFs.mkdirSync(this.mapToBase(e),r)}async rmdirPromise(e,r){return this.baseFs.rmdirPromise(this.mapToBase(e),r)}rmdirSync(e,r){return this.baseFs.rmdirSync(this.mapToBase(e),r)}async rmPromise(e,r){return this.baseFs.rmPromise(this.mapToBase(e),r)}rmSync(e,r){return this.baseFs.rmSync(this.mapToBase(e),r)}async linkPromise(e,r){return this.baseFs.linkPromise(this.mapToBase(e),this.mapToBase(r))}linkSync(e,r){return this.baseFs.linkSync(this.mapToBase(e),this.mapToBase(r))}async symlinkPromise(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkPromise(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkPromise(c,a,s)}symlinkSync(e,r,s){let a=this.mapToBase(r);if(this.pathUtils.isAbsolute(e))return this.baseFs.symlinkSync(this.mapToBase(e),a,s);let n=this.mapToBase(this.pathUtils.join(this.pathUtils.dirname(r),e)),c=this.baseFs.pathUtils.relative(this.baseFs.pathUtils.dirname(a),n);return this.baseFs.symlinkSync(c,a,s)}async readFilePromise(e,r){return this.baseFs.readFilePromise(this.fsMapToBase(e),r)}readFileSync(e,r){return this.baseFs.readFileSync(this.fsMapToBase(e),r)}readdirPromise(e,r){return this.baseFs.readdirPromise(this.mapToBase(e),r)}readdirSync(e,r){return this.baseFs.readdirSync(this.mapToBase(e),r)}async readlinkPromise(e){return this.mapFromBase(await this.baseFs.readlinkPromise(this.mapToBase(e)))}readlinkSync(e){return this.mapFromBase(this.baseFs.readlinkSync(this.mapToBase(e)))}async truncatePromise(e,r){return this.baseFs.truncatePromise(this.mapToBase(e),r)}truncateSync(e,r){return this.baseFs.truncateSync(this.mapToBase(e),r)}async ftruncatePromise(e,r){return this.baseFs.ftruncatePromise(e,r)}ftruncateSync(e,r){return this.baseFs.ftruncateSync(e,r)}watch(e,r,s){return this.baseFs.watch(this.mapToBase(e),r,s)}watchFile(e,r,s){return this.baseFs.watchFile(this.mapToBase(e),r,s)}unwatchFile(e,r){return this.baseFs.unwatchFile(this.mapToBase(e),r)}fsMapToBase(e){return typeof e==\"number\"?e:this.mapToBase(e)}}});var _f,i$=Xe(()=>{yp();_f=class extends _s{constructor(e,{baseFs:r,pathUtils:s}){super(s),this.target=e,this.baseFs=r}getRealPath(){return this.target}getBaseFs(){return this.baseFs}mapFromBase(e){return e}mapToBase(e){return e}}});function s$(t){let e=t;return typeof t.path==\"string\"&&(e.path=fe.toPortablePath(t.path)),e}var o$,Yn,Cd=Xe(()=>{o$=ut(Ie(\"fs\"));Id();el();Yn=class extends Uf{constructor(e=o$.default){super(),this.realFs=e}getExtractHint(){return!1}getRealPath(){return vt.root}resolve(e){return J.resolve(e)}async openPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.open(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}openSync(e,r,s){return this.realFs.openSync(fe.fromPortablePath(e),r,s)}async opendirPromise(e,r){return await new Promise((s,a)=>{typeof r<\"u\"?this.realFs.opendir(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.opendir(fe.fromPortablePath(e),this.makeCallback(s,a))}).then(s=>{let a=s;return Object.defineProperty(a,\"path\",{value:e,configurable:!0,writable:!0}),a})}opendirSync(e,r){let a=typeof r<\"u\"?this.realFs.opendirSync(fe.fromPortablePath(e),r):this.realFs.opendirSync(fe.fromPortablePath(e));return Object.defineProperty(a,\"path\",{value:e,configurable:!0,writable:!0}),a}async readPromise(e,r,s=0,a=0,n=-1){return await new Promise((c,f)=>{this.realFs.read(e,r,s,a,n,(p,h)=>{p?f(p):c(h)})})}readSync(e,r,s,a,n){return this.realFs.readSync(e,r,s,a,n)}async writePromise(e,r,s,a,n){return await new Promise((c,f)=>typeof r==\"string\"?this.realFs.write(e,r,s,this.makeCallback(c,f)):this.realFs.write(e,r,s,a,n,this.makeCallback(c,f)))}writeSync(e,r,s,a,n){return typeof r==\"string\"?this.realFs.writeSync(e,r,s):this.realFs.writeSync(e,r,s,a,n)}async closePromise(e){await new Promise((r,s)=>{this.realFs.close(e,this.makeCallback(r,s))})}closeSync(e){this.realFs.closeSync(e)}createReadStream(e,r){let s=e!==null?fe.fromPortablePath(e):e;return this.realFs.createReadStream(s,r)}createWriteStream(e,r){let s=e!==null?fe.fromPortablePath(e):e;return this.realFs.createWriteStream(s,r)}async realpathPromise(e){return await new Promise((r,s)=>{this.realFs.realpath(fe.fromPortablePath(e),{},this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}realpathSync(e){return fe.toPortablePath(this.realFs.realpathSync(fe.fromPortablePath(e),{}))}async existsPromise(e){return await new Promise(r=>{this.realFs.exists(fe.fromPortablePath(e),r)})}accessSync(e,r){return this.realFs.accessSync(fe.fromPortablePath(e),r)}async accessPromise(e,r){return await new Promise((s,a)=>{this.realFs.access(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}existsSync(e){return this.realFs.existsSync(fe.fromPortablePath(e))}async statPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.stat(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.stat(fe.fromPortablePath(e),this.makeCallback(s,a))})}statSync(e,r){return r?this.realFs.statSync(fe.fromPortablePath(e),r):this.realFs.statSync(fe.fromPortablePath(e))}async fstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.fstat(e,r,this.makeCallback(s,a)):this.realFs.fstat(e,this.makeCallback(s,a))})}fstatSync(e,r){return r?this.realFs.fstatSync(e,r):this.realFs.fstatSync(e)}async lstatPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.lstat(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.lstat(fe.fromPortablePath(e),this.makeCallback(s,a))})}lstatSync(e,r){return r?this.realFs.lstatSync(fe.fromPortablePath(e),r):this.realFs.lstatSync(fe.fromPortablePath(e))}async fchmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.fchmod(e,r,this.makeCallback(s,a))})}fchmodSync(e,r){return this.realFs.fchmodSync(e,r)}async chmodPromise(e,r){return await new Promise((s,a)=>{this.realFs.chmod(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}chmodSync(e,r){return this.realFs.chmodSync(fe.fromPortablePath(e),r)}async fchownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.fchown(e,r,s,this.makeCallback(a,n))})}fchownSync(e,r,s){return this.realFs.fchownSync(e,r,s)}async chownPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.chown(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}chownSync(e,r,s){return this.realFs.chownSync(fe.fromPortablePath(e),r,s)}async renamePromise(e,r){return await new Promise((s,a)=>{this.realFs.rename(fe.fromPortablePath(e),fe.fromPortablePath(r),this.makeCallback(s,a))})}renameSync(e,r){return this.realFs.renameSync(fe.fromPortablePath(e),fe.fromPortablePath(r))}async copyFilePromise(e,r,s=0){return await new Promise((a,n)=>{this.realFs.copyFile(fe.fromPortablePath(e),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}copyFileSync(e,r,s=0){return this.realFs.copyFileSync(fe.fromPortablePath(e),fe.fromPortablePath(r),s)}async appendFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e==\"string\"?fe.fromPortablePath(e):e;s?this.realFs.appendFile(c,r,s,this.makeCallback(a,n)):this.realFs.appendFile(c,r,this.makeCallback(a,n))})}appendFileSync(e,r,s){let a=typeof e==\"string\"?fe.fromPortablePath(e):e;s?this.realFs.appendFileSync(a,r,s):this.realFs.appendFileSync(a,r)}async writeFilePromise(e,r,s){return await new Promise((a,n)=>{let c=typeof e==\"string\"?fe.fromPortablePath(e):e;s?this.realFs.writeFile(c,r,s,this.makeCallback(a,n)):this.realFs.writeFile(c,r,this.makeCallback(a,n))})}writeFileSync(e,r,s){let a=typeof e==\"string\"?fe.fromPortablePath(e):e;s?this.realFs.writeFileSync(a,r,s):this.realFs.writeFileSync(a,r)}async unlinkPromise(e){return await new Promise((r,s)=>{this.realFs.unlink(fe.fromPortablePath(e),this.makeCallback(r,s))})}unlinkSync(e){return this.realFs.unlinkSync(fe.fromPortablePath(e))}async utimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.utimes(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}utimesSync(e,r,s){this.realFs.utimesSync(fe.fromPortablePath(e),r,s)}async lutimesPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.lutimes(fe.fromPortablePath(e),r,s,this.makeCallback(a,n))})}lutimesSync(e,r,s){this.realFs.lutimesSync(fe.fromPortablePath(e),r,s)}async mkdirPromise(e,r){return await new Promise((s,a)=>{this.realFs.mkdir(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}mkdirSync(e,r){return this.realFs.mkdirSync(fe.fromPortablePath(e),r)}async rmdirPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rmdir(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rmdir(fe.fromPortablePath(e),this.makeCallback(s,a))})}rmdirSync(e,r){return this.realFs.rmdirSync(fe.fromPortablePath(e),r)}async rmPromise(e,r){return await new Promise((s,a)=>{r?this.realFs.rm(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.rm(fe.fromPortablePath(e),this.makeCallback(s,a))})}rmSync(e,r){return this.realFs.rmSync(fe.fromPortablePath(e),r)}async linkPromise(e,r){return await new Promise((s,a)=>{this.realFs.link(fe.fromPortablePath(e),fe.fromPortablePath(r),this.makeCallback(s,a))})}linkSync(e,r){return this.realFs.linkSync(fe.fromPortablePath(e),fe.fromPortablePath(r))}async symlinkPromise(e,r,s){return await new Promise((a,n)=>{this.realFs.symlink(fe.fromPortablePath(e.replace(/\\/+$/,\"\")),fe.fromPortablePath(r),s,this.makeCallback(a,n))})}symlinkSync(e,r,s){return this.realFs.symlinkSync(fe.fromPortablePath(e.replace(/\\/+$/,\"\")),fe.fromPortablePath(r),s)}async readFilePromise(e,r){return await new Promise((s,a)=>{let n=typeof e==\"string\"?fe.fromPortablePath(e):e;this.realFs.readFile(n,r,this.makeCallback(s,a))})}readFileSync(e,r){let s=typeof e==\"string\"?fe.fromPortablePath(e):e;return this.realFs.readFileSync(s,r)}async readdirPromise(e,r){return await new Promise((s,a)=>{r?r.recursive&&process.platform===\"win32\"?r.withFileTypes?this.realFs.readdir(fe.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(s$)),a)):this.realFs.readdir(fe.fromPortablePath(e),r,this.makeCallback(n=>s(n.map(fe.toPortablePath)),a)):this.realFs.readdir(fe.fromPortablePath(e),r,this.makeCallback(s,a)):this.realFs.readdir(fe.fromPortablePath(e),this.makeCallback(s,a))})}readdirSync(e,r){return r?r.recursive&&process.platform===\"win32\"?r.withFileTypes?this.realFs.readdirSync(fe.fromPortablePath(e),r).map(s$):this.realFs.readdirSync(fe.fromPortablePath(e),r).map(fe.toPortablePath):this.realFs.readdirSync(fe.fromPortablePath(e),r):this.realFs.readdirSync(fe.fromPortablePath(e))}async readlinkPromise(e){return await new Promise((r,s)=>{this.realFs.readlink(fe.fromPortablePath(e),this.makeCallback(r,s))}).then(r=>fe.toPortablePath(r))}readlinkSync(e){return fe.toPortablePath(this.realFs.readlinkSync(fe.fromPortablePath(e)))}async truncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.truncate(fe.fromPortablePath(e),r,this.makeCallback(s,a))})}truncateSync(e,r){return this.realFs.truncateSync(fe.fromPortablePath(e),r)}async ftruncatePromise(e,r){return await new Promise((s,a)=>{this.realFs.ftruncate(e,r,this.makeCallback(s,a))})}ftruncateSync(e,r){return this.realFs.ftruncateSync(e,r)}watch(e,r,s){return this.realFs.watch(fe.fromPortablePath(e),r,s)}watchFile(e,r,s){return this.realFs.watchFile(fe.fromPortablePath(e),r,s)}unwatchFile(e,r){return this.realFs.unwatchFile(fe.fromPortablePath(e),r)}makeCallback(e,r){return(s,a)=>{s?r(s):e(a)}}}});var Sn,a$=Xe(()=>{Cd();yp();el();Sn=class extends _s{constructor(e,{baseFs:r=new Yn}={}){super(J),this.target=this.pathUtils.normalize(e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.target)}resolve(e){return this.pathUtils.isAbsolute(e)?J.normalize(e):this.baseFs.resolve(J.join(this.target,e))}mapFromBase(e){return e}mapToBase(e){return this.pathUtils.isAbsolute(e)?e:this.pathUtils.join(this.target,e)}}});var l$,Hf,c$=Xe(()=>{Cd();yp();el();l$=vt.root,Hf=class extends _s{constructor(e,{baseFs:r=new Yn}={}){super(J),this.target=this.pathUtils.resolve(vt.root,e),this.baseFs=r}getRealPath(){return this.pathUtils.resolve(this.baseFs.getRealPath(),this.pathUtils.relative(vt.root,this.target))}getTarget(){return this.target}getBaseFs(){return this.baseFs}mapToBase(e){let r=this.pathUtils.normalize(e);if(this.pathUtils.isAbsolute(e))return this.pathUtils.resolve(this.target,this.pathUtils.relative(l$,e));if(r.match(/^\\.\\.\\/?/))throw new Error(`Resolving this path (${e}) would escape the jail`);return this.pathUtils.resolve(this.target,e)}mapFromBase(e){return this.pathUtils.resolve(l$,this.pathUtils.relative(this.target,e))}}});var oE,u$=Xe(()=>{yp();oE=class extends _s{constructor(r,s){super(s);this.instance=null;this.factory=r}get baseFs(){return this.instance||(this.instance=this.factory()),this.instance}set baseFs(r){this.instance=r}mapFromBase(r){return r}mapToBase(r){return r}}});var wd,tl,e0,f$=Xe(()=>{wd=Ie(\"fs\");Id();Cd();bU();zP();el();tl=4278190080,e0=class extends Uf{constructor({baseFs:r=new Yn,filter:s=null,magicByte:a=42,maxOpenFiles:n=1/0,useCache:c=!0,maxAge:f=5e3,typeCheck:p=wd.constants.S_IFREG,getMountPoint:h,factoryPromise:E,factorySync:C}){if(Math.floor(a)!==a||!(a>1&&a<=127))throw new Error(\"The magic byte must be set to a round value between 1 and 127 included\");super();this.fdMap=new Map;this.nextFd=3;this.isMount=new Set;this.notMount=new Set;this.realPaths=new Map;this.limitOpenFilesTimeout=null;this.baseFs=r,this.mountInstances=c?new Map:null,this.factoryPromise=E,this.factorySync=C,this.filter=s,this.getMountPoint=h,this.magic=a<<24,this.maxAge=f,this.maxOpenFiles=n,this.typeCheck=p}getExtractHint(r){return this.baseFs.getExtractHint(r)}getRealPath(){return this.baseFs.getRealPath()}saveAndClose(){if(yd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.saveAndClose?.(),this.mountInstances.delete(r)}discardAndClose(){if(yd(this),this.mountInstances)for(let[r,{childFs:s}]of this.mountInstances.entries())s.discardAndClose?.(),this.mountInstances.delete(r)}resolve(r){return this.baseFs.resolve(r)}remapFd(r,s){let a=this.nextFd++|this.magic;return this.fdMap.set(a,[r,s]),a}async openPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.openPromise(r,s,a),async(n,{subPath:c})=>this.remapFd(n,await n.openPromise(c,s,a)))}openSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.openSync(r,s,a),(n,{subPath:c})=>this.remapFd(n,n.openSync(c,s,a)))}async opendirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.opendirPromise(r,s),async(a,{subPath:n})=>await a.opendirPromise(n,s),{requireSubpath:!1})}opendirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.opendirSync(r,s),(a,{subPath:n})=>a.opendirSync(n,s),{requireSubpath:!1})}async readPromise(r,s,a,n,c){if((r&tl)!==this.magic)return await this.baseFs.readPromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Mo(\"read\");let[p,h]=f;return await p.readPromise(h,s,a,n,c)}readSync(r,s,a,n,c){if((r&tl)!==this.magic)return this.baseFs.readSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Mo(\"readSync\");let[p,h]=f;return p.readSync(h,s,a,n,c)}async writePromise(r,s,a,n,c){if((r&tl)!==this.magic)return typeof s==\"string\"?await this.baseFs.writePromise(r,s,a):await this.baseFs.writePromise(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Mo(\"write\");let[p,h]=f;return typeof s==\"string\"?await p.writePromise(h,s,a):await p.writePromise(h,s,a,n,c)}writeSync(r,s,a,n,c){if((r&tl)!==this.magic)return typeof s==\"string\"?this.baseFs.writeSync(r,s,a):this.baseFs.writeSync(r,s,a,n,c);let f=this.fdMap.get(r);if(typeof f>\"u\")throw Mo(\"writeSync\");let[p,h]=f;return typeof s==\"string\"?p.writeSync(h,s,a):p.writeSync(h,s,a,n,c)}async closePromise(r){if((r&tl)!==this.magic)return await this.baseFs.closePromise(r);let s=this.fdMap.get(r);if(typeof s>\"u\")throw Mo(\"close\");this.fdMap.delete(r);let[a,n]=s;return await a.closePromise(n)}closeSync(r){if((r&tl)!==this.magic)return this.baseFs.closeSync(r);let s=this.fdMap.get(r);if(typeof s>\"u\")throw Mo(\"closeSync\");this.fdMap.delete(r);let[a,n]=s;return a.closeSync(n)}createReadStream(r,s){return r===null?this.baseFs.createReadStream(r,s):this.makeCallSync(r,()=>this.baseFs.createReadStream(r,s),(a,{archivePath:n,subPath:c})=>{let f=a.createReadStream(c,s);return f.path=fe.fromPortablePath(this.pathUtils.join(n,c)),f})}createWriteStream(r,s){return r===null?this.baseFs.createWriteStream(r,s):this.makeCallSync(r,()=>this.baseFs.createWriteStream(r,s),(a,{subPath:n})=>a.createWriteStream(n,s))}async realpathPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.realpathPromise(r),async(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>\"u\"&&(c=await this.baseFs.realpathPromise(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,await s.realpathPromise(n)))})}realpathSync(r){return this.makeCallSync(r,()=>this.baseFs.realpathSync(r),(s,{archivePath:a,subPath:n})=>{let c=this.realPaths.get(a);return typeof c>\"u\"&&(c=this.baseFs.realpathSync(a),this.realPaths.set(a,c)),this.pathUtils.join(c,this.pathUtils.relative(vt.root,s.realpathSync(n)))})}async existsPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.existsPromise(r),async(s,{subPath:a})=>await s.existsPromise(a))}existsSync(r){return this.makeCallSync(r,()=>this.baseFs.existsSync(r),(s,{subPath:a})=>s.existsSync(a))}async accessPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.accessPromise(r,s),async(a,{subPath:n})=>await a.accessPromise(n,s))}accessSync(r,s){return this.makeCallSync(r,()=>this.baseFs.accessSync(r,s),(a,{subPath:n})=>a.accessSync(n,s))}async statPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.statPromise(r,s),async(a,{subPath:n})=>await a.statPromise(n,s))}statSync(r,s){return this.makeCallSync(r,()=>this.baseFs.statSync(r,s),(a,{subPath:n})=>a.statSync(n,s))}async fstatPromise(r,s){if((r&tl)!==this.magic)return this.baseFs.fstatPromise(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Mo(\"fstat\");let[n,c]=a;return n.fstatPromise(c,s)}fstatSync(r,s){if((r&tl)!==this.magic)return this.baseFs.fstatSync(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Mo(\"fstatSync\");let[n,c]=a;return n.fstatSync(c,s)}async lstatPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.lstatPromise(r,s),async(a,{subPath:n})=>await a.lstatPromise(n,s))}lstatSync(r,s){return this.makeCallSync(r,()=>this.baseFs.lstatSync(r,s),(a,{subPath:n})=>a.lstatSync(n,s))}async fchmodPromise(r,s){if((r&tl)!==this.magic)return this.baseFs.fchmodPromise(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Mo(\"fchmod\");let[n,c]=a;return n.fchmodPromise(c,s)}fchmodSync(r,s){if((r&tl)!==this.magic)return this.baseFs.fchmodSync(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Mo(\"fchmodSync\");let[n,c]=a;return n.fchmodSync(c,s)}async chmodPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.chmodPromise(r,s),async(a,{subPath:n})=>await a.chmodPromise(n,s))}chmodSync(r,s){return this.makeCallSync(r,()=>this.baseFs.chmodSync(r,s),(a,{subPath:n})=>a.chmodSync(n,s))}async fchownPromise(r,s,a){if((r&tl)!==this.magic)return this.baseFs.fchownPromise(r,s,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Mo(\"fchown\");let[c,f]=n;return c.fchownPromise(f,s,a)}fchownSync(r,s,a){if((r&tl)!==this.magic)return this.baseFs.fchownSync(r,s,a);let n=this.fdMap.get(r);if(typeof n>\"u\")throw Mo(\"fchownSync\");let[c,f]=n;return c.fchownSync(f,s,a)}async chownPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.chownPromise(r,s,a),async(n,{subPath:c})=>await n.chownPromise(c,s,a))}chownSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.chownSync(r,s,a),(n,{subPath:c})=>n.chownSync(c,s,a))}async renamePromise(r,s){return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.renamePromise(r,s),async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),async(a,{subPath:n})=>await this.makeCallPromise(s,async()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},async(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return await a.renamePromise(n,f)}))}renameSync(r,s){return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.renameSync(r,s),()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})}),(a,{subPath:n})=>this.makeCallSync(s,()=>{throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"})},(c,{subPath:f})=>{if(a!==c)throw Object.assign(new Error(\"EEXDEV: cross-device link not permitted\"),{code:\"EEXDEV\"});return a.renameSync(n,f)}))}async copyFilePromise(r,s,a=0){let n=async(c,f,p,h)=>{if(a&wd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:\"EXDEV\"});if(a&wd.constants.COPYFILE_EXCL&&await this.existsPromise(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=await c.readFilePromise(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:\"EINVAL\"})}await p.writeFilePromise(h,E)};return await this.makeCallPromise(r,async()=>await this.makeCallPromise(s,async()=>await this.baseFs.copyFilePromise(r,s,a),async(c,{subPath:f})=>await n(this.baseFs,r,c,f)),async(c,{subPath:f})=>await this.makeCallPromise(s,async()=>await n(c,f,this.baseFs,s),async(p,{subPath:h})=>c!==p?await n(c,f,p,h):await c.copyFilePromise(f,h,a)))}copyFileSync(r,s,a=0){let n=(c,f,p,h)=>{if(a&wd.constants.COPYFILE_FICLONE_FORCE)throw Object.assign(new Error(`EXDEV: cross-device clone not permitted, copyfile '${f}' -> ${h}'`),{code:\"EXDEV\"});if(a&wd.constants.COPYFILE_EXCL&&this.existsSync(f))throw Object.assign(new Error(`EEXIST: file already exists, copyfile '${f}' -> '${h}'`),{code:\"EEXIST\"});let E;try{E=c.readFileSync(f)}catch{throw Object.assign(new Error(`EINVAL: invalid argument, copyfile '${f}' -> '${h}'`),{code:\"EINVAL\"})}p.writeFileSync(h,E)};return this.makeCallSync(r,()=>this.makeCallSync(s,()=>this.baseFs.copyFileSync(r,s,a),(c,{subPath:f})=>n(this.baseFs,r,c,f)),(c,{subPath:f})=>this.makeCallSync(s,()=>n(c,f,this.baseFs,s),(p,{subPath:h})=>c!==p?n(c,f,p,h):c.copyFileSync(f,h,a)))}async appendFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.appendFilePromise(r,s,a),async(n,{subPath:c})=>await n.appendFilePromise(c,s,a))}appendFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.appendFileSync(r,s,a),(n,{subPath:c})=>n.appendFileSync(c,s,a))}async writeFilePromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.writeFilePromise(r,s,a),async(n,{subPath:c})=>await n.writeFilePromise(c,s,a))}writeFileSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.writeFileSync(r,s,a),(n,{subPath:c})=>n.writeFileSync(c,s,a))}async unlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.unlinkPromise(r),async(s,{subPath:a})=>await s.unlinkPromise(a))}unlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.unlinkSync(r),(s,{subPath:a})=>s.unlinkSync(a))}async utimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.utimesPromise(r,s,a),async(n,{subPath:c})=>await n.utimesPromise(c,s,a))}utimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.utimesSync(r,s,a),(n,{subPath:c})=>n.utimesSync(c,s,a))}async lutimesPromise(r,s,a){return await this.makeCallPromise(r,async()=>await this.baseFs.lutimesPromise(r,s,a),async(n,{subPath:c})=>await n.lutimesPromise(c,s,a))}lutimesSync(r,s,a){return this.makeCallSync(r,()=>this.baseFs.lutimesSync(r,s,a),(n,{subPath:c})=>n.lutimesSync(c,s,a))}async mkdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.mkdirPromise(r,s),async(a,{subPath:n})=>await a.mkdirPromise(n,s))}mkdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.mkdirSync(r,s),(a,{subPath:n})=>a.mkdirSync(n,s))}async rmdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmdirPromise(r,s),async(a,{subPath:n})=>await a.rmdirPromise(n,s))}rmdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmdirSync(r,s),(a,{subPath:n})=>a.rmdirSync(n,s))}async rmPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.rmPromise(r,s),async(a,{subPath:n})=>await a.rmPromise(n,s))}rmSync(r,s){return this.makeCallSync(r,()=>this.baseFs.rmSync(r,s),(a,{subPath:n})=>a.rmSync(n,s))}async linkPromise(r,s){return await this.makeCallPromise(s,async()=>await this.baseFs.linkPromise(r,s),async(a,{subPath:n})=>await a.linkPromise(r,n))}linkSync(r,s){return this.makeCallSync(s,()=>this.baseFs.linkSync(r,s),(a,{subPath:n})=>a.linkSync(r,n))}async symlinkPromise(r,s,a){return await this.makeCallPromise(s,async()=>await this.baseFs.symlinkPromise(r,s,a),async(n,{subPath:c})=>await n.symlinkPromise(r,c))}symlinkSync(r,s,a){return this.makeCallSync(s,()=>this.baseFs.symlinkSync(r,s,a),(n,{subPath:c})=>n.symlinkSync(r,c))}async readFilePromise(r,s){return this.makeCallPromise(r,async()=>await this.baseFs.readFilePromise(r,s),async(a,{subPath:n})=>await a.readFilePromise(n,s))}readFileSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readFileSync(r,s),(a,{subPath:n})=>a.readFileSync(n,s))}async readdirPromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.readdirPromise(r,s),async(a,{subPath:n})=>await a.readdirPromise(n,s),{requireSubpath:!1})}readdirSync(r,s){return this.makeCallSync(r,()=>this.baseFs.readdirSync(r,s),(a,{subPath:n})=>a.readdirSync(n,s),{requireSubpath:!1})}async readlinkPromise(r){return await this.makeCallPromise(r,async()=>await this.baseFs.readlinkPromise(r),async(s,{subPath:a})=>await s.readlinkPromise(a))}readlinkSync(r){return this.makeCallSync(r,()=>this.baseFs.readlinkSync(r),(s,{subPath:a})=>s.readlinkSync(a))}async truncatePromise(r,s){return await this.makeCallPromise(r,async()=>await this.baseFs.truncatePromise(r,s),async(a,{subPath:n})=>await a.truncatePromise(n,s))}truncateSync(r,s){return this.makeCallSync(r,()=>this.baseFs.truncateSync(r,s),(a,{subPath:n})=>a.truncateSync(n,s))}async ftruncatePromise(r,s){if((r&tl)!==this.magic)return this.baseFs.ftruncatePromise(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Mo(\"ftruncate\");let[n,c]=a;return n.ftruncatePromise(c,s)}ftruncateSync(r,s){if((r&tl)!==this.magic)return this.baseFs.ftruncateSync(r,s);let a=this.fdMap.get(r);if(typeof a>\"u\")throw Mo(\"ftruncateSync\");let[n,c]=a;return n.ftruncateSync(c,s)}watch(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watch(r,s,a),(n,{subPath:c})=>n.watch(c,s,a))}watchFile(r,s,a){return this.makeCallSync(r,()=>this.baseFs.watchFile(r,s,a),()=>sE(this,r,s,a))}unwatchFile(r,s){return this.makeCallSync(r,()=>this.baseFs.unwatchFile(r,s),()=>md(this,r,s))}async makeCallPromise(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return await s();let c=this.resolve(r),f=this.findMount(c);return f?n&&f.subPath===\"/\"?await s():await this.getMountPromise(f.archivePath,async p=>await a(p,f)):await s()}makeCallSync(r,s,a,{requireSubpath:n=!0}={}){if(typeof r!=\"string\")return s();let c=this.resolve(r),f=this.findMount(c);return!f||n&&f.subPath===\"/\"?s():this.getMountSync(f.archivePath,p=>a(p,f))}findMount(r){if(this.filter&&!this.filter.test(r))return null;let s=\"\";for(;;){let a=r.substring(s.length),n=this.getMountPoint(a,s);if(!n)return null;if(s=this.pathUtils.join(s,n),!this.isMount.has(s)){if(this.notMount.has(s))continue;try{if(this.typeCheck!==null&&(this.baseFs.statSync(s).mode&wd.constants.S_IFMT)!==this.typeCheck){this.notMount.add(s);continue}}catch{return null}this.isMount.add(s)}return{archivePath:s,subPath:this.pathUtils.join(vt.root,r.substring(s.length))}}}limitOpenFiles(r){if(this.mountInstances===null)return;let s=Date.now(),a=s+this.maxAge,n=r===null?0:this.mountInstances.size-r;for(let[c,{childFs:f,expiresAt:p,refCount:h}]of this.mountInstances.entries())if(!(h!==0||f.hasOpenFileHandles?.())){if(s>=p){f.saveAndClose?.(),this.mountInstances.delete(c),n-=1;continue}else if(r===null||n<=0){a=p;break}f.saveAndClose?.(),this.mountInstances.delete(c),n-=1}this.limitOpenFilesTimeout===null&&(r===null&&this.mountInstances.size>0||r!==null)&&isFinite(a)&&(this.limitOpenFilesTimeout=setTimeout(()=>{this.limitOpenFilesTimeout=null,this.limitOpenFiles(null)},a-s).unref())}async getMountPromise(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);if(!a){let n=await this.factoryPromise(this.baseFs,r);a=this.mountInstances.get(r),a||(a={childFs:n(),expiresAt:0,refCount:0})}this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,a.refCount+=1;try{return await s(a.childFs)}finally{a.refCount-=1}}else{let a=(await this.factoryPromise(this.baseFs,r))();try{return await s(a)}finally{a.saveAndClose?.()}}}getMountSync(r,s){if(this.mountInstances){let a=this.mountInstances.get(r);return a||(a={childFs:this.factorySync(this.baseFs,r),expiresAt:0,refCount:0}),this.mountInstances.delete(r),this.limitOpenFiles(this.maxOpenFiles-1),this.mountInstances.set(r,a),a.expiresAt=Date.now()+this.maxAge,s(a.childFs)}else{let a=this.factorySync(this.baseFs,r);try{return s(a)}finally{a.saveAndClose?.()}}}}});var er,nx,A$=Xe(()=>{Id();el();er=()=>Object.assign(new Error(\"ENOSYS: unsupported filesystem access\"),{code:\"ENOSYS\"}),nx=class t extends mp{static{this.instance=new t}constructor(){super(J)}getExtractHint(){throw er()}getRealPath(){throw er()}resolve(){throw er()}async openPromise(){throw er()}openSync(){throw er()}async opendirPromise(){throw er()}opendirSync(){throw er()}async readPromise(){throw er()}readSync(){throw er()}async writePromise(){throw er()}writeSync(){throw er()}async closePromise(){throw er()}closeSync(){throw er()}createWriteStream(){throw er()}createReadStream(){throw er()}async realpathPromise(){throw er()}realpathSync(){throw er()}async readdirPromise(){throw er()}readdirSync(){throw er()}async existsPromise(e){throw er()}existsSync(e){throw er()}async accessPromise(){throw er()}accessSync(){throw er()}async statPromise(){throw er()}statSync(){throw er()}async fstatPromise(e){throw er()}fstatSync(e){throw er()}async lstatPromise(e){throw er()}lstatSync(e){throw er()}async fchmodPromise(){throw er()}fchmodSync(){throw er()}async chmodPromise(){throw er()}chmodSync(){throw er()}async fchownPromise(){throw er()}fchownSync(){throw er()}async chownPromise(){throw er()}chownSync(){throw er()}async mkdirPromise(){throw er()}mkdirSync(){throw er()}async rmdirPromise(){throw er()}rmdirSync(){throw er()}async rmPromise(){throw er()}rmSync(){throw er()}async linkPromise(){throw er()}linkSync(){throw er()}async symlinkPromise(){throw er()}symlinkSync(){throw er()}async renamePromise(){throw er()}renameSync(){throw er()}async copyFilePromise(){throw er()}copyFileSync(){throw er()}async appendFilePromise(){throw er()}appendFileSync(){throw er()}async writeFilePromise(){throw er()}writeFileSync(){throw er()}async unlinkPromise(){throw er()}unlinkSync(){throw er()}async utimesPromise(){throw er()}utimesSync(){throw er()}async lutimesPromise(){throw er()}lutimesSync(){throw er()}async readFilePromise(){throw er()}readFileSync(){throw er()}async readlinkPromise(){throw er()}readlinkSync(){throw er()}async truncatePromise(){throw er()}truncateSync(){throw er()}async ftruncatePromise(e,r){throw er()}ftruncateSync(e,r){throw er()}watch(){throw er()}watchFile(){throw er()}unwatchFile(){throw er()}}});var t0,p$=Xe(()=>{yp();el();t0=class extends _s{constructor(e){super(fe),this.baseFs=e}mapFromBase(e){return fe.fromPortablePath(e)}mapToBase(e){return fe.toPortablePath(e)}}});var o5e,PU,a5e,uo,h$=Xe(()=>{Cd();yp();el();o5e=/^[0-9]+$/,PU=/^(\\/(?:[^/]+\\/)*?(?:\\$\\$virtual|__virtual__))((?:\\/((?:[^/]+-)?[a-f0-9]+)(?:\\/([^/]+))?)?((?:\\/.*)?))$/,a5e=/^([^/]+-)?[a-f0-9]+$/,uo=class t extends _s{static makeVirtualPath(e,r,s){if(J.basename(e)!==\"__virtual__\")throw new Error('Assertion failed: Virtual folders must be named \"__virtual__\"');if(!J.basename(r).match(a5e))throw new Error(\"Assertion failed: Virtual components must be ended by an hexadecimal hash\");let n=J.relative(J.dirname(e),s).split(\"/\"),c=0;for(;c<n.length&&n[c]===\"..\";)c+=1;let f=n.slice(c);return J.join(e,r,String(c),...f)}static resolveVirtual(e){let r=e.match(PU);if(!r||!r[3]&&r[5])return e;let s=J.dirname(r[1]);if(!r[3]||!r[4])return s;if(!o5e.test(r[4]))return e;let n=Number(r[4]),c=\"../\".repeat(n),f=r[5]||\".\";return t.resolveVirtual(J.join(s,c,f))}constructor({baseFs:e=new Yn}={}){super(J),this.baseFs=e}getExtractHint(e){return this.baseFs.getExtractHint(e)}getRealPath(){return this.baseFs.getRealPath()}realpathSync(e){let r=e.match(PU);if(!r)return this.baseFs.realpathSync(e);if(!r[5])return e;let s=this.baseFs.realpathSync(this.mapToBase(e));return t.makeVirtualPath(r[1],r[3],s)}async realpathPromise(e){let r=e.match(PU);if(!r)return await this.baseFs.realpathPromise(e);if(!r[5])return e;let s=await this.baseFs.realpathPromise(this.mapToBase(e));return t.makeVirtualPath(r[1],r[3],s)}mapToBase(e){if(e===\"\")return e;if(this.pathUtils.isAbsolute(e))return t.resolveVirtual(e);let r=t.resolveVirtual(this.baseFs.resolve(vt.dot)),s=t.resolveVirtual(this.baseFs.resolve(e));return J.relative(r,s)||vt.dot}mapFromBase(e){return e}}});function l5e(t,e){return typeof xU.default.isUtf8<\"u\"?xU.default.isUtf8(t):Buffer.byteLength(e)===t.byteLength}var xU,g$,d$,ix,m$=Xe(()=>{xU=ut(Ie(\"buffer\")),g$=Ie(\"url\"),d$=Ie(\"util\");yp();el();ix=class extends _s{constructor(e){super(fe),this.baseFs=e}mapFromBase(e){return e}mapToBase(e){if(typeof e==\"string\")return e;if(e instanceof URL)return(0,g$.fileURLToPath)(e);if(Buffer.isBuffer(e)){let r=e.toString();if(!l5e(e,r))throw new Error(\"Non-utf8 buffers are not supported at the moment. Please upvote the following issue if you encounter this error: https://github.com/yarnpkg/berry/issues/4942\");return r}throw new Error(`Unsupported path type: ${(0,d$.inspect)(e)}`)}}});var w$,Uo,Ep,r0,sx,ox,aE,Ru,Fu,y$,E$,I$,C$,M2,B$=Xe(()=>{w$=Ie(\"readline\"),Uo=Symbol(\"kBaseFs\"),Ep=Symbol(\"kFd\"),r0=Symbol(\"kClosePromise\"),sx=Symbol(\"kCloseResolve\"),ox=Symbol(\"kCloseReject\"),aE=Symbol(\"kRefs\"),Ru=Symbol(\"kRef\"),Fu=Symbol(\"kUnref\"),M2=class{constructor(e,r){this[C$]=1;this[I$]=void 0;this[E$]=void 0;this[y$]=void 0;this[Uo]=r,this[Ep]=e}get fd(){return this[Ep]}async appendFile(e,r){try{this[Ru](this.appendFile);let s=(typeof r==\"string\"?r:r?.encoding)??void 0;return await this[Uo].appendFilePromise(this.fd,e,s?{encoding:s}:void 0)}finally{this[Fu]()}}async chown(e,r){try{return this[Ru](this.chown),await this[Uo].fchownPromise(this.fd,e,r)}finally{this[Fu]()}}async chmod(e){try{return this[Ru](this.chmod),await this[Uo].fchmodPromise(this.fd,e)}finally{this[Fu]()}}createReadStream(e){return this[Uo].createReadStream(null,{...e,fd:this.fd})}createWriteStream(e){return this[Uo].createWriteStream(null,{...e,fd:this.fd})}datasync(){throw new Error(\"Method not implemented.\")}sync(){throw new Error(\"Method not implemented.\")}async read(e,r,s,a){try{this[Ru](this.read);let n,c;return ArrayBuffer.isView(e)?typeof r==\"object\"&&r!==null?(n=e,c=r?.offset??0,s=r?.length??n.byteLength-c,a=r?.position??null):(n=e,c=r??0,s??=0):(n=e?.buffer??Buffer.alloc(16384),c=e?.offset??0,s=e?.length??n.byteLength-c,a=e?.position??null),s===0?{bytesRead:s,buffer:n}:{bytesRead:await this[Uo].readPromise(this.fd,Buffer.isBuffer(n)?n:Buffer.from(n.buffer,n.byteOffset,n.byteLength),c,s,a),buffer:n}}finally{this[Fu]()}}async readFile(e){try{this[Ru](this.readFile);let r=(typeof e==\"string\"?e:e?.encoding)??void 0;return await this[Uo].readFilePromise(this.fd,r)}finally{this[Fu]()}}readLines(e){return(0,w$.createInterface)({input:this.createReadStream(e),crlfDelay:1/0})}async stat(e){try{return this[Ru](this.stat),await this[Uo].fstatPromise(this.fd,e)}finally{this[Fu]()}}async truncate(e){try{return this[Ru](this.truncate),await this[Uo].ftruncatePromise(this.fd,e)}finally{this[Fu]()}}utimes(e,r){throw new Error(\"Method not implemented.\")}async writeFile(e,r){try{this[Ru](this.writeFile);let s=(typeof r==\"string\"?r:r?.encoding)??void 0;await this[Uo].writeFilePromise(this.fd,e,s)}finally{this[Fu]()}}async write(...e){try{if(this[Ru](this.write),ArrayBuffer.isView(e[0])){let[r,s,a,n]=e;return{bytesWritten:await this[Uo].writePromise(this.fd,r,s??void 0,a??void 0,n??void 0),buffer:r}}else{let[r,s,a]=e;return{bytesWritten:await this[Uo].writePromise(this.fd,r,s,a),buffer:r}}}finally{this[Fu]()}}async writev(e,r){try{this[Ru](this.writev);let s=0;if(typeof r<\"u\")for(let a of e){let n=await this.write(a,void 0,void 0,r);s+=n.bytesWritten,r+=n.bytesWritten}else for(let a of e){let n=await this.write(a);s+=n.bytesWritten}return{buffers:e,bytesWritten:s}}finally{this[Fu]()}}readv(e,r){throw new Error(\"Method not implemented.\")}close(){if(this[Ep]===-1)return Promise.resolve();if(this[r0])return this[r0];if(this[aE]--,this[aE]===0){let e=this[Ep];this[Ep]=-1,this[r0]=this[Uo].closePromise(e).finally(()=>{this[r0]=void 0})}else this[r0]=new Promise((e,r)=>{this[sx]=e,this[ox]=r}).finally(()=>{this[r0]=void 0,this[ox]=void 0,this[sx]=void 0});return this[r0]}[(Uo,Ep,C$=aE,I$=r0,E$=sx,y$=ox,Ru)](e){if(this[Ep]===-1){let r=new Error(\"file closed\");throw r.code=\"EBADF\",r.syscall=e.name,r}this[aE]++}[Fu](){if(this[aE]--,this[aE]===0){let e=this[Ep];this[Ep]=-1,this[Uo].closePromise(e).then(this[sx],this[ox])}}}});function U2(t,e){e=new ix(e);let r=(s,a,n)=>{let c=s[a];s[a]=n,typeof c?.[lE.promisify.custom]<\"u\"&&(n[lE.promisify.custom]=c[lE.promisify.custom])};{r(t,\"exists\",(s,...a)=>{let c=typeof a[a.length-1]==\"function\"?a.pop():()=>{};process.nextTick(()=>{e.existsPromise(s).then(f=>{c(f)},()=>{c(!1)})})}),r(t,\"read\",(...s)=>{let[a,n,c,f,p,h]=s;if(s.length<=3){let E={};s.length<3?h=s[1]:(E=s[1],h=s[2]),{buffer:n=Buffer.alloc(16384),offset:c=0,length:f=n.byteLength,position:p}=E}if(c==null&&(c=0),f|=0,f===0){process.nextTick(()=>{h(null,0,n)});return}p==null&&(p=-1),process.nextTick(()=>{e.readPromise(a,n,c,f,p).then(E=>{h(null,E,n)},E=>{h(E,0,n)})})});for(let s of v$){let a=s.replace(/Promise$/,\"\");if(typeof t[a]>\"u\")continue;let n=e[s];if(typeof n>\"u\")continue;r(t,a,(...f)=>{let h=typeof f[f.length-1]==\"function\"?f.pop():()=>{};process.nextTick(()=>{n.apply(e,f).then(E=>{h(null,E)},E=>{h(E)})})})}t.realpath.native=t.realpath}{r(t,\"existsSync\",s=>{try{return e.existsSync(s)}catch{return!1}}),r(t,\"readSync\",(...s)=>{let[a,n,c,f,p]=s;return s.length<=3&&({offset:c=0,length:f=n.byteLength,position:p}=s[2]||{}),c==null&&(c=0),f|=0,f===0?0:(p==null&&(p=-1),e.readSync(a,n,c,f,p))});for(let s of c5e){let a=s;if(typeof t[a]>\"u\")continue;let n=e[s];typeof n>\"u\"||r(t,a,n.bind(e))}t.realpathSync.native=t.realpathSync}{let s=t.promises;for(let a of v$){let n=a.replace(/Promise$/,\"\");if(typeof s[n]>\"u\")continue;let c=e[a];typeof c>\"u\"||a!==\"open\"&&r(s,n,(f,...p)=>f instanceof M2?f[n].apply(f,p):c.call(e,f,...p))}r(s,\"open\",async(...a)=>{let n=await e.openPromise(...a);return new M2(n,e)})}t.read[lE.promisify.custom]=async(s,a,...n)=>({bytesRead:await e.readPromise(s,a,...n),buffer:a}),t.write[lE.promisify.custom]=async(s,a,...n)=>({bytesWritten:await e.writePromise(s,a,...n),buffer:a})}function ax(t,e){let r=Object.create(t);return U2(r,e),r}var lE,c5e,v$,S$=Xe(()=>{lE=Ie(\"util\");m$();B$();c5e=new Set([\"accessSync\",\"appendFileSync\",\"createReadStream\",\"createWriteStream\",\"chmodSync\",\"fchmodSync\",\"chownSync\",\"fchownSync\",\"closeSync\",\"copyFileSync\",\"linkSync\",\"lstatSync\",\"fstatSync\",\"lutimesSync\",\"mkdirSync\",\"openSync\",\"opendirSync\",\"readlinkSync\",\"readFileSync\",\"readdirSync\",\"readlinkSync\",\"realpathSync\",\"renameSync\",\"rmdirSync\",\"rmSync\",\"statSync\",\"symlinkSync\",\"truncateSync\",\"ftruncateSync\",\"unlinkSync\",\"unwatchFile\",\"utimesSync\",\"watch\",\"watchFile\",\"writeFileSync\",\"writeSync\"]),v$=new Set([\"accessPromise\",\"appendFilePromise\",\"fchmodPromise\",\"chmodPromise\",\"fchownPromise\",\"chownPromise\",\"closePromise\",\"copyFilePromise\",\"linkPromise\",\"fstatPromise\",\"lstatPromise\",\"lutimesPromise\",\"mkdirPromise\",\"openPromise\",\"opendirPromise\",\"readdirPromise\",\"realpathPromise\",\"readFilePromise\",\"readdirPromise\",\"readlinkPromise\",\"renamePromise\",\"rmdirPromise\",\"rmPromise\",\"statPromise\",\"symlinkPromise\",\"truncatePromise\",\"ftruncatePromise\",\"unlinkPromise\",\"utimesPromise\",\"writeFilePromise\",\"writeSync\"])});function D$(t){let e=Math.ceil(Math.random()*4294967296).toString(16).padStart(8,\"0\");return`${t}${e}`}function b$(){if(kU)return kU;let t=fe.toPortablePath(P$.default.tmpdir()),e=ce.realpathSync(t);return process.once(\"exit\",()=>{ce.rmtempSync()}),kU={tmpdir:t,realTmpdir:e}}var P$,Nu,kU,ce,x$=Xe(()=>{P$=ut(Ie(\"os\"));Cd();el();Nu=new Set,kU=null;ce=Object.assign(new Yn,{detachTemp(t){Nu.delete(t)},mktempSync(t){let{tmpdir:e,realTmpdir:r}=b$();for(;;){let s=D$(\"xfs-\");try{this.mkdirSync(J.join(e,s))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=J.join(r,s);if(Nu.add(a),typeof t>\"u\")return a;try{return t(a)}finally{if(Nu.has(a)){Nu.delete(a);try{this.removeSync(a)}catch{}}}}},async mktempPromise(t){let{tmpdir:e,realTmpdir:r}=b$();for(;;){let s=D$(\"xfs-\");try{await this.mkdirPromise(J.join(e,s))}catch(n){if(n.code===\"EEXIST\")continue;throw n}let a=J.join(r,s);if(Nu.add(a),typeof t>\"u\")return a;try{return await t(a)}finally{if(Nu.has(a)){Nu.delete(a);try{await this.removePromise(a)}catch{}}}}},async rmtempPromise(){await Promise.all(Array.from(Nu.values()).map(async t=>{try{await ce.removePromise(t,{maxRetries:0}),Nu.delete(t)}catch{}}))},rmtempSync(){for(let t of Nu)try{ce.removeSync(t),Nu.delete(t)}catch{}}})});var _2={};Vt(_2,{AliasFS:()=>_f,BasePortableFakeFS:()=>Uf,CustomDir:()=>L2,CwdFS:()=>Sn,FakeFS:()=>mp,Filename:()=>Er,JailFS:()=>Hf,LazyFS:()=>oE,MountFS:()=>e0,NoFS:()=>nx,NodeFS:()=>Yn,PortablePath:()=>vt,PosixFS:()=>t0,ProxiedFS:()=>_s,VirtualFS:()=>uo,constants:()=>fi,errors:()=>or,extendFs:()=>ax,normalizeLineEndings:()=>Ed,npath:()=>fe,opendir:()=>ex,patchFs:()=>U2,ppath:()=>J,setupCopyIndex:()=>$P,statUtils:()=>$a,unwatchAllFiles:()=>yd,unwatchFile:()=>md,watchFile:()=>sE,xfs:()=>ce});var Dt=Xe(()=>{YZ();zP();BU();DU();ZZ();bU();Id();el();el();i$();Id();a$();c$();u$();f$();A$();Cd();p$();yp();h$();S$();x$()});var F$=_((Dkt,R$)=>{R$.exports=T$;T$.sync=f5e;var k$=Ie(\"fs\");function u5e(t,e){var r=e.pathExt!==void 0?e.pathExt:process.env.PATHEXT;if(!r||(r=r.split(\";\"),r.indexOf(\"\")!==-1))return!0;for(var s=0;s<r.length;s++){var a=r[s].toLowerCase();if(a&&t.substr(-a.length).toLowerCase()===a)return!0}return!1}function Q$(t,e,r){return!t.isSymbolicLink()&&!t.isFile()?!1:u5e(e,r)}function T$(t,e,r){k$.stat(t,function(s,a){r(s,s?!1:Q$(a,t,e))})}function f5e(t,e){return Q$(k$.statSync(t),t,e)}});var U$=_((bkt,M$)=>{M$.exports=O$;O$.sync=A5e;var N$=Ie(\"fs\");function O$(t,e,r){N$.stat(t,function(s,a){r(s,s?!1:L$(a,e))})}function A5e(t,e){return L$(N$.statSync(t),e)}function L$(t,e){return t.isFile()&&p5e(t,e)}function p5e(t,e){var r=t.mode,s=t.uid,a=t.gid,n=e.uid!==void 0?e.uid:process.getuid&&process.getuid(),c=e.gid!==void 0?e.gid:process.getgid&&process.getgid(),f=parseInt(\"100\",8),p=parseInt(\"010\",8),h=parseInt(\"001\",8),E=f|p,C=r&h||r&p&&a===c||r&f&&s===n||r&E&&n===0;return C}});var H$=_((xkt,_$)=>{var Pkt=Ie(\"fs\"),lx;process.platform===\"win32\"||global.TESTING_WINDOWS?lx=F$():lx=U$();_$.exports=QU;QU.sync=h5e;function QU(t,e,r){if(typeof e==\"function\"&&(r=e,e={}),!r){if(typeof Promise!=\"function\")throw new TypeError(\"callback not provided\");return new Promise(function(s,a){QU(t,e||{},function(n,c){n?a(n):s(c)})})}lx(t,e||{},function(s,a){s&&(s.code===\"EACCES\"||e&&e.ignoreErrors)&&(s=null,a=!1),r(s,a)})}function h5e(t,e){try{return lx.sync(t,e||{})}catch(r){if(e&&e.ignoreErrors||r.code===\"EACCES\")return!1;throw r}}});var J$=_((kkt,V$)=>{var cE=process.platform===\"win32\"||process.env.OSTYPE===\"cygwin\"||process.env.OSTYPE===\"msys\",j$=Ie(\"path\"),g5e=cE?\";\":\":\",G$=H$(),q$=t=>Object.assign(new Error(`not found: ${t}`),{code:\"ENOENT\"}),W$=(t,e)=>{let r=e.colon||g5e,s=t.match(/\\//)||cE&&t.match(/\\\\/)?[\"\"]:[...cE?[process.cwd()]:[],...(e.path||process.env.PATH||\"\").split(r)],a=cE?e.pathExt||process.env.PATHEXT||\".EXE;.CMD;.BAT;.COM\":\"\",n=cE?a.split(r):[\"\"];return cE&&t.indexOf(\".\")!==-1&&n[0]!==\"\"&&n.unshift(\"\"),{pathEnv:s,pathExt:n,pathExtExe:a}},Y$=(t,e,r)=>{typeof e==\"function\"&&(r=e,e={}),e||(e={});let{pathEnv:s,pathExt:a,pathExtExe:n}=W$(t,e),c=[],f=h=>new Promise((E,C)=>{if(h===s.length)return e.all&&c.length?E(c):C(q$(t));let S=s[h],P=/^\".*\"$/.test(S)?S.slice(1,-1):S,I=j$.join(P,t),R=!P&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+I:I;E(p(R,h,0))}),p=(h,E,C)=>new Promise((S,P)=>{if(C===a.length)return S(f(E+1));let I=a[C];G$(h+I,{pathExt:n},(R,N)=>{if(!R&&N)if(e.all)c.push(h+I);else return S(h+I);return S(p(h,E,C+1))})});return r?f(0).then(h=>r(null,h),r):f(0)},d5e=(t,e)=>{e=e||{};let{pathEnv:r,pathExt:s,pathExtExe:a}=W$(t,e),n=[];for(let c=0;c<r.length;c++){let f=r[c],p=/^\".*\"$/.test(f)?f.slice(1,-1):f,h=j$.join(p,t),E=!p&&/^\\.[\\\\\\/]/.test(t)?t.slice(0,2)+h:h;for(let C=0;C<s.length;C++){let S=E+s[C];try{if(G$.sync(S,{pathExt:a}))if(e.all)n.push(S);else return S}catch{}}}if(e.all&&n.length)return n;if(e.nothrow)return null;throw q$(t)};V$.exports=Y$;Y$.sync=d5e});var z$=_((Qkt,TU)=>{\"use strict\";var K$=(t={})=>{let e=t.env||process.env;return(t.platform||process.platform)!==\"win32\"?\"PATH\":Object.keys(e).reverse().find(s=>s.toUpperCase()===\"PATH\")||\"Path\"};TU.exports=K$;TU.exports.default=K$});var eee=_((Tkt,$$)=>{\"use strict\";var X$=Ie(\"path\"),m5e=J$(),y5e=z$();function Z$(t,e){let r=t.options.env||process.env,s=process.cwd(),a=t.options.cwd!=null,n=a&&process.chdir!==void 0&&!process.chdir.disabled;if(n)try{process.chdir(t.options.cwd)}catch{}let c;try{c=m5e.sync(t.command,{path:r[y5e({env:r})],pathExt:e?X$.delimiter:void 0})}catch{}finally{n&&process.chdir(s)}return c&&(c=X$.resolve(a?t.options.cwd:\"\",c)),c}function E5e(t){return Z$(t)||Z$(t,!0)}$$.exports=E5e});var tee=_((Rkt,FU)=>{\"use strict\";var RU=/([()\\][%!^\"`<>&|;, *?])/g;function I5e(t){return t=t.replace(RU,\"^$1\"),t}function C5e(t,e){return t=`${t}`,t=t.replace(/(?=(\\\\+?)?)\\1\"/g,'$1$1\\\\\"'),t=t.replace(/(?=(\\\\+?)?)\\1$/,\"$1$1\"),t=`\"${t}\"`,t=t.replace(RU,\"^$1\"),e&&(t=t.replace(RU,\"^$1\")),t}FU.exports.command=I5e;FU.exports.argument=C5e});var nee=_((Fkt,ree)=>{\"use strict\";ree.exports=/^#!(.*)/});var see=_((Nkt,iee)=>{\"use strict\";var w5e=nee();iee.exports=(t=\"\")=>{let e=t.match(w5e);if(!e)return null;let[r,s]=e[0].replace(/#! ?/,\"\").split(\" \"),a=r.split(\"/\").pop();return a===\"env\"?s:s?`${a} ${s}`:a}});var aee=_((Okt,oee)=>{\"use strict\";var NU=Ie(\"fs\"),B5e=see();function v5e(t){let r=Buffer.alloc(150),s;try{s=NU.openSync(t,\"r\"),NU.readSync(s,r,0,150,0),NU.closeSync(s)}catch{}return B5e(r.toString())}oee.exports=v5e});var fee=_((Lkt,uee)=>{\"use strict\";var S5e=Ie(\"path\"),lee=eee(),cee=tee(),D5e=aee(),b5e=process.platform===\"win32\",P5e=/\\.(?:com|exe)$/i,x5e=/node_modules[\\\\/].bin[\\\\/][^\\\\/]+\\.cmd$/i;function k5e(t){t.file=lee(t);let e=t.file&&D5e(t.file);return e?(t.args.unshift(t.file),t.command=e,lee(t)):t.file}function Q5e(t){if(!b5e)return t;let e=k5e(t),r=!P5e.test(e);if(t.options.forceShell||r){let s=x5e.test(e);t.command=S5e.normalize(t.command),t.command=cee.command(t.command),t.args=t.args.map(n=>cee.argument(n,s));let a=[t.command].concat(t.args).join(\" \");t.args=[\"/d\",\"/s\",\"/c\",`\"${a}\"`],t.command=process.env.comspec||\"cmd.exe\",t.options.windowsVerbatimArguments=!0}return t}function T5e(t,e,r){e&&!Array.isArray(e)&&(r=e,e=null),e=e?e.slice(0):[],r=Object.assign({},r);let s={command:t,args:e,options:r,file:void 0,original:{command:t,args:e}};return r.shell?s:Q5e(s)}uee.exports=T5e});var hee=_((Mkt,pee)=>{\"use strict\";var OU=process.platform===\"win32\";function LU(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 R5e(t,e){if(!OU)return;let r=t.emit;t.emit=function(s,a){if(s===\"exit\"){let n=Aee(a,e);if(n)return r.call(t,\"error\",n)}return r.apply(t,arguments)}}function Aee(t,e){return OU&&t===1&&!e.file?LU(e.original,\"spawn\"):null}function F5e(t,e){return OU&&t===1&&!e.file?LU(e.original,\"spawnSync\"):null}pee.exports={hookChildProcess:R5e,verifyENOENT:Aee,verifyENOENTSync:F5e,notFoundError:LU}});var _U=_((Ukt,uE)=>{\"use strict\";var gee=Ie(\"child_process\"),MU=fee(),UU=hee();function dee(t,e,r){let s=MU(t,e,r),a=gee.spawn(s.command,s.args,s.options);return UU.hookChildProcess(a,s),a}function N5e(t,e,r){let s=MU(t,e,r),a=gee.spawnSync(s.command,s.args,s.options);return a.error=a.error||UU.verifyENOENTSync(a.status,s),a}uE.exports=dee;uE.exports.spawn=dee;uE.exports.sync=N5e;uE.exports._parse=MU;uE.exports._enoent=UU});var yee=_((_kt,mee)=>{\"use strict\";function O5e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Bd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Bd)}O5e(Bd,Error);Bd.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(t)+\" but \"+p(e)+\" found.\"};function L5e(t,e){e=e!==void 0?e:{};var r={},s={Start:Wa},a=Wa,n=function(O){return O||[]},c=function(O,K,re){return[{command:O,type:K}].concat(re||[])},f=function(O,K){return[{command:O,type:K||\";\"}]},p=function(O){return O},h=\";\",E=ur(\";\",!1),C=\"&\",S=ur(\"&\",!1),P=function(O,K){return K?{chain:O,then:K}:{chain:O}},I=function(O,K){return{type:O,line:K}},R=\"&&\",N=ur(\"&&\",!1),U=\"||\",W=ur(\"||\",!1),ee=function(O,K){return K?{...O,then:K}:O},ie=function(O,K){return{type:O,chain:K}},ue=\"|&\",le=ur(\"|&\",!1),me=\"|\",pe=ur(\"|\",!1),Be=\"=\",Ce=ur(\"=\",!1),g=function(O,K){return{name:O,args:[K]}},we=function(O){return{name:O,args:[]}},ye=\"(\",Ae=ur(\"(\",!1),se=\")\",Z=ur(\")\",!1),De=function(O,K){return{type:\"subshell\",subshell:O,args:K}},Re=\"{\",mt=ur(\"{\",!1),j=\"}\",rt=ur(\"}\",!1),Fe=function(O,K){return{type:\"group\",group:O,args:K}},Ne=function(O,K){return{type:\"command\",args:K,envs:O}},Pe=function(O){return{type:\"envs\",envs:O}},Ve=function(O){return O},ke=function(O){return O},it=/^[0-9]/,Ue=zi([[\"0\",\"9\"]],!1,!1),x=function(O,K,re){return{type:\"redirection\",subtype:K,fd:O!==null?parseInt(O):null,args:[re]}},w=\">>\",b=ur(\">>\",!1),y=\">&\",F=ur(\">&\",!1),z=\">\",X=ur(\">\",!1),$=\"<<<\",oe=ur(\"<<<\",!1),xe=\"<&\",Te=ur(\"<&\",!1),lt=\"<\",Ct=ur(\"<\",!1),qt=function(O){return{type:\"argument\",segments:[].concat(...O)}},ir=function(O){return O},Pt=\"$'\",gn=ur(\"$'\",!1),Pr=\"'\",Ir=ur(\"'\",!1),Or=function(O){return[{type:\"text\",text:O}]},on='\"\"',ai=ur('\"\"',!1),Io=function(){return{type:\"text\",text:\"\"}},rs='\"',$s=ur('\"',!1),Co=function(O){return O},ji=function(O){return{type:\"arithmetic\",arithmetic:O,quoted:!0}},eo=function(O){return{type:\"shell\",shell:O,quoted:!0}},wo=function(O){return{type:\"variable\",...O,quoted:!0}},QA=function(O){return{type:\"text\",text:O}},Af=function(O){return{type:\"arithmetic\",arithmetic:O,quoted:!1}},dh=function(O){return{type:\"shell\",shell:O,quoted:!1}},mh=function(O){return{type:\"variable\",...O,quoted:!1}},to=function(O){return{type:\"glob\",pattern:O}},jn=/^[^']/,Ts=zi([\"'\"],!0,!1),ro=function(O){return O.join(\"\")},ou=/^[^$\"]/,au=zi([\"$\",'\"'],!0,!1),lu=`\\\\\n`,TA=ur(`\\\\\n`,!1),RA=function(){return\"\"},oa=\"\\\\\",aa=ur(\"\\\\\",!1),FA=/^[\\\\$\"`]/,gr=zi([\"\\\\\",\"$\",'\"',\"`\"],!1,!1),Bo=function(O){return O},Me=\"\\\\a\",cu=ur(\"\\\\a\",!1),Cr=function(){return\"a\"},pf=\"\\\\b\",NA=ur(\"\\\\b\",!1),OA=function(){return\"\\b\"},uu=/^[Ee]/,fu=zi([\"E\",\"e\"],!1,!1),oc=function(){return\"\\x1B\"},ve=\"\\\\f\",Nt=ur(\"\\\\f\",!1),ac=function(){return\"\\f\"},Oi=\"\\\\n\",no=ur(\"\\\\n\",!1),Rt=function(){return`\n`},xn=\"\\\\r\",la=ur(\"\\\\r\",!1),Gi=function(){return\"\\r\"},Li=\"\\\\t\",Na=ur(\"\\\\t\",!1),dn=function(){return\"\t\"},Kn=\"\\\\v\",Au=ur(\"\\\\v\",!1),yh=function(){return\"\\v\"},Oa=/^[\\\\'\"?]/,La=zi([\"\\\\\",\"'\",'\"',\"?\"],!1,!1),Ma=function(O){return String.fromCharCode(parseInt(O,16))},$e=\"\\\\x\",Ua=ur(\"\\\\x\",!1),hf=\"\\\\u\",lc=ur(\"\\\\u\",!1),wn=\"\\\\U\",ca=ur(\"\\\\U\",!1),LA=function(O){return String.fromCodePoint(parseInt(O,16))},MA=/^[0-7]/,ua=zi([[\"0\",\"7\"]],!1,!1),Bl=/^[0-9a-fA-f]/,Mt=zi([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"f\"]],!1,!1),kn=yf(),fa=\"{}\",Ha=ur(\"{}\",!1),ns=function(){return\"{}\"},cc=\"-\",pu=ur(\"-\",!1),uc=\"+\",ja=ur(\"+\",!1),Mi=\".\",Is=ur(\".\",!1),vl=function(O,K,re){return{type:\"number\",value:(O===\"-\"?-1:1)*parseFloat(K.join(\"\")+\".\"+re.join(\"\"))}},gf=function(O,K){return{type:\"number\",value:(O===\"-\"?-1:1)*parseInt(K.join(\"\"))}},fc=function(O){return{type:\"variable\",...O}},wi=function(O){return{type:\"variable\",name:O}},Qn=function(O){return O},Ac=\"*\",Ke=ur(\"*\",!1),st=\"/\",St=ur(\"/\",!1),lr=function(O,K,re){return{type:K===\"*\"?\"multiplication\":\"division\",right:re}},te=function(O,K){return K.reduce((re,de)=>({left:re,...de}),O)},Ee=function(O,K,re){return{type:K===\"+\"?\"addition\":\"subtraction\",right:re}},Oe=\"$((\",dt=ur(\"$((\",!1),Et=\"))\",bt=ur(\"))\",!1),tr=function(O){return O},An=\"$(\",li=ur(\"$(\",!1),qi=function(O){return O},Tn=\"${\",Ga=ur(\"${\",!1),my=\":-\",Z1=ur(\":-\",!1),vo=function(O,K){return{name:O,defaultValue:K}},yy=\":-}\",Eh=ur(\":-}\",!1),$1=function(O){return{name:O,defaultValue:[]}},So=\":+\",Ih=ur(\":+\",!1),Ch=function(O,K){return{name:O,alternativeValue:K}},hu=\":+}\",wh=ur(\":+}\",!1),Fg=function(O){return{name:O,alternativeValue:[]}},Ng=function(O){return{name:O}},Og=\"$\",Ey=ur(\"$\",!1),df=function(O){return e.isGlobPattern(O)},Do=function(O){return O},Sl=/^[a-zA-Z0-9_]/,Bh=zi([[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\"],!1,!1),Lg=function(){return By()},Dl=/^[$@*?#a-zA-Z0-9_\\-]/,bl=zi([\"$\",\"@\",\"*\",\"?\",\"#\",[\"a\",\"z\"],[\"A\",\"Z\"],[\"0\",\"9\"],\"_\",\"-\"],!1,!1),Iy=/^[()}<>$|&; \\t\"']/,UA=zi([\"(\",\")\",\"}\",\"<\",\">\",\"$\",\"|\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),Cy=/^[<>&; \\t\"']/,wy=zi([\"<\",\">\",\"&\",\";\",\" \",\"\t\",'\"',\"'\"],!1,!1),_A=/^[ \\t]/,HA=zi([\" \",\"\t\"],!1,!1),Y=0,xt=0,jA=[{line:1,column:1}],bo=0,mf=[],yt=0,gu;if(\"startRule\"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=s[e.startRule]}function By(){return t.substring(xt,Y)}function Mg(){return Ef(xt,Y)}function e2(O,K){throw K=K!==void 0?K:Ef(xt,Y),GA([Ug(O)],t.substring(xt,Y),K)}function vh(O,K){throw K=K!==void 0?K:Ef(xt,Y),di(O,K)}function ur(O,K){return{type:\"literal\",text:O,ignoreCase:K}}function zi(O,K,re){return{type:\"class\",parts:O,inverted:K,ignoreCase:re}}function yf(){return{type:\"any\"}}function qa(){return{type:\"end\"}}function Ug(O){return{type:\"other\",description:O}}function du(O){var K=jA[O],re;if(K)return K;for(re=O-1;!jA[re];)re--;for(K=jA[re],K={line:K.line,column:K.column};re<O;)t.charCodeAt(re)===10?(K.line++,K.column=1):K.column++,re++;return jA[O]=K,K}function Ef(O,K){var re=du(O),de=du(K);return{start:{offset:O,line:re.line,column:re.column},end:{offset:K,line:de.line,column:de.column}}}function wt(O){Y<bo||(Y>bo&&(bo=Y,mf=[]),mf.push(O))}function di(O,K){return new Bd(O,null,null,K)}function GA(O,K,re){return new Bd(Bd.buildMessage(O,K),O,K,re)}function Wa(){var O,K,re;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(re=Aa(),re===r&&(re=null),re!==r?(xt=O,K=n(re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function Aa(){var O,K,re,de,Je;if(O=Y,K=Sh(),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=_g(),de!==r?(Je=Ya(),Je===r&&(Je=null),Je!==r?(xt=O,K=c(K,de,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;if(O===r)if(O=Y,K=Sh(),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();re!==r?(de=_g(),de===r&&(de=null),de!==r?(xt=O,K=f(K,de),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function Ya(){var O,K,re,de,Je;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=Aa(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=p(re),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function _g(){var O;return t.charCodeAt(Y)===59?(O=h,Y++):(O=r,yt===0&&wt(E)),O===r&&(t.charCodeAt(Y)===38?(O=C,Y++):(O=r,yt===0&&wt(S))),O}function Sh(){var O,K,re;return O=Y,K=qA(),K!==r?(re=Hg(),re===r&&(re=null),re!==r?(xt=O,K=P(K,re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function Hg(){var O,K,re,de,Je,At,dr;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=vy(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=Sh(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();At!==r?(xt=O,K=I(re,Je),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function vy(){var O;return t.substr(Y,2)===R?(O=R,Y+=2):(O=r,yt===0&&wt(N)),O===r&&(t.substr(Y,2)===U?(O=U,Y+=2):(O=r,yt===0&&wt(W))),O}function qA(){var O,K,re;return O=Y,K=If(),K!==r?(re=jg(),re===r&&(re=null),re!==r?(xt=O,K=ee(K,re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function jg(){var O,K,re,de,Je,At,dr;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(re=mu(),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=qA(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();At!==r?(xt=O,K=ie(re,Je),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;return O}function mu(){var O;return t.substr(Y,2)===ue?(O=ue,Y+=2):(O=r,yt===0&&wt(le)),O===r&&(t.charCodeAt(Y)===124?(O=me,Y++):(O=r,yt===0&&wt(pe))),O}function yu(){var O,K,re,de,Je,At;if(O=Y,K=Ph(),K!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,yt===0&&wt(Ce)),re!==r)if(de=WA(),de!==r){for(Je=[],At=kt();At!==r;)Je.push(At),At=kt();Je!==r?(xt=O,K=g(K,de),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;else Y=O,O=r;if(O===r)if(O=Y,K=Ph(),K!==r)if(t.charCodeAt(Y)===61?(re=Be,Y++):(re=r,yt===0&&wt(Ce)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=we(K),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r;return O}function If(){var O,K,re,de,Je,At,dr,vr,Un,mi,Cs;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(t.charCodeAt(Y)===40?(re=ye,Y++):(re=r,yt===0&&wt(Ae)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=Aa(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();if(At!==r)if(t.charCodeAt(Y)===41?(dr=se,Y++):(dr=r,yt===0&&wt(Z)),dr!==r){for(vr=[],Un=kt();Un!==r;)vr.push(Un),Un=kt();if(vr!==r){for(Un=[],mi=Gn();mi!==r;)Un.push(mi),mi=Gn();if(Un!==r){for(mi=[],Cs=kt();Cs!==r;)mi.push(Cs),Cs=kt();mi!==r?(xt=O,K=De(Je,Un),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r)if(t.charCodeAt(Y)===123?(re=Re,Y++):(re=r,yt===0&&wt(mt)),re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r)if(Je=Aa(),Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();if(At!==r)if(t.charCodeAt(Y)===125?(dr=j,Y++):(dr=r,yt===0&&wt(rt)),dr!==r){for(vr=[],Un=kt();Un!==r;)vr.push(Un),Un=kt();if(vr!==r){for(Un=[],mi=Gn();mi!==r;)Un.push(mi),mi=Gn();if(Un!==r){for(mi=[],Cs=kt();Cs!==r;)mi.push(Cs),Cs=kt();mi!==r?(xt=O,K=Fe(Je,Un),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;else Y=O,O=r;if(O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){for(re=[],de=yu();de!==r;)re.push(de),de=yu();if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();if(de!==r){if(Je=[],At=Eu(),At!==r)for(;At!==r;)Je.push(At),At=Eu();else Je=r;if(Je!==r){for(At=[],dr=kt();dr!==r;)At.push(dr),dr=kt();At!==r?(xt=O,K=Ne(re,Je),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r}else Y=O,O=r;if(O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){if(re=[],de=yu(),de!==r)for(;de!==r;)re.push(de),de=yu();else re=r;if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=Pe(re),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r}}}return O}function Rs(){var O,K,re,de,Je;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r){if(re=[],de=Pi(),de!==r)for(;de!==r;)re.push(de),de=Pi();else re=r;if(re!==r){for(de=[],Je=kt();Je!==r;)de.push(Je),Je=kt();de!==r?(xt=O,K=Ve(re),O=K):(Y=O,O=r)}else Y=O,O=r}else Y=O,O=r;return O}function Eu(){var O,K,re;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();if(K!==r?(re=Gn(),re!==r?(xt=O,K=ke(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r){for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();K!==r?(re=Pi(),re!==r?(xt=O,K=ke(re),O=K):(Y=O,O=r)):(Y=O,O=r)}return O}function Gn(){var O,K,re,de,Je;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(it.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ue)),re===r&&(re=null),re!==r?(de=is(),de!==r?(Je=Pi(),Je!==r?(xt=O,K=x(re,de,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function is(){var O;return t.substr(Y,2)===w?(O=w,Y+=2):(O=r,yt===0&&wt(b)),O===r&&(t.substr(Y,2)===y?(O=y,Y+=2):(O=r,yt===0&&wt(F)),O===r&&(t.charCodeAt(Y)===62?(O=z,Y++):(O=r,yt===0&&wt(X)),O===r&&(t.substr(Y,3)===$?(O=$,Y+=3):(O=r,yt===0&&wt(oe)),O===r&&(t.substr(Y,2)===xe?(O=xe,Y+=2):(O=r,yt===0&&wt(Te)),O===r&&(t.charCodeAt(Y)===60?(O=lt,Y++):(O=r,yt===0&&wt(Ct))))))),O}function Pi(){var O,K,re;for(O=Y,K=[],re=kt();re!==r;)K.push(re),re=kt();return K!==r?(re=WA(),re!==r?(xt=O,K=ke(re),O=K):(Y=O,O=r)):(Y=O,O=r),O}function WA(){var O,K,re;if(O=Y,K=[],re=Cf(),re!==r)for(;re!==r;)K.push(re),re=Cf();else K=r;return K!==r&&(xt=O,K=qt(K)),O=K,O}function Cf(){var O,K;return O=Y,K=mn(),K!==r&&(xt=O,K=ir(K)),O=K,O===r&&(O=Y,K=Gg(),K!==r&&(xt=O,K=ir(K)),O=K,O===r&&(O=Y,K=qg(),K!==r&&(xt=O,K=ir(K)),O=K,O===r&&(O=Y,K=ss(),K!==r&&(xt=O,K=ir(K)),O=K))),O}function mn(){var O,K,re,de;return O=Y,t.substr(Y,2)===Pt?(K=Pt,Y+=2):(K=r,yt===0&&wt(gn)),K!==r?(re=yn(),re!==r?(t.charCodeAt(Y)===39?(de=Pr,Y++):(de=r,yt===0&&wt(Ir)),de!==r?(xt=O,K=Or(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function Gg(){var O,K,re,de;return O=Y,t.charCodeAt(Y)===39?(K=Pr,Y++):(K=r,yt===0&&wt(Ir)),K!==r?(re=wf(),re!==r?(t.charCodeAt(Y)===39?(de=Pr,Y++):(de=r,yt===0&&wt(Ir)),de!==r?(xt=O,K=Or(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function qg(){var O,K,re,de;if(O=Y,t.substr(Y,2)===on?(K=on,Y+=2):(K=r,yt===0&&wt(ai)),K!==r&&(xt=O,K=Io()),O=K,O===r)if(O=Y,t.charCodeAt(Y)===34?(K=rs,Y++):(K=r,yt===0&&wt($s)),K!==r){for(re=[],de=Pl();de!==r;)re.push(de),de=Pl();re!==r?(t.charCodeAt(Y)===34?(de=rs,Y++):(de=r,yt===0&&wt($s)),de!==r?(xt=O,K=Co(re),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;return O}function ss(){var O,K,re;if(O=Y,K=[],re=Po(),re!==r)for(;re!==r;)K.push(re),re=Po();else K=r;return K!==r&&(xt=O,K=Co(K)),O=K,O}function Pl(){var O,K;return O=Y,K=Zr(),K!==r&&(xt=O,K=ji(K)),O=K,O===r&&(O=Y,K=bh(),K!==r&&(xt=O,K=eo(K)),O=K,O===r&&(O=Y,K=VA(),K!==r&&(xt=O,K=wo(K)),O=K,O===r&&(O=Y,K=Bf(),K!==r&&(xt=O,K=QA(K)),O=K))),O}function Po(){var O,K;return O=Y,K=Zr(),K!==r&&(xt=O,K=Af(K)),O=K,O===r&&(O=Y,K=bh(),K!==r&&(xt=O,K=dh(K)),O=K,O===r&&(O=Y,K=VA(),K!==r&&(xt=O,K=mh(K)),O=K,O===r&&(O=Y,K=Sy(),K!==r&&(xt=O,K=to(K)),O=K,O===r&&(O=Y,K=Dh(),K!==r&&(xt=O,K=QA(K)),O=K)))),O}function wf(){var O,K,re;for(O=Y,K=[],jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ts));re!==r;)K.push(re),jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ts));return K!==r&&(xt=O,K=ro(K)),O=K,O}function Bf(){var O,K,re;if(O=Y,K=[],re=xl(),re===r&&(ou.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(au))),re!==r)for(;re!==r;)K.push(re),re=xl(),re===r&&(ou.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(au)));else K=r;return K!==r&&(xt=O,K=ro(K)),O=K,O}function xl(){var O,K,re;return O=Y,t.substr(Y,2)===lu?(K=lu,Y+=2):(K=r,yt===0&&wt(TA)),K!==r&&(xt=O,K=RA()),O=K,O===r&&(O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(FA.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(gr)),re!==r?(xt=O,K=Bo(re),O=K):(Y=O,O=r)):(Y=O,O=r)),O}function yn(){var O,K,re;for(O=Y,K=[],re=xo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ts)));re!==r;)K.push(re),re=xo(),re===r&&(jn.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Ts)));return K!==r&&(xt=O,K=ro(K)),O=K,O}function xo(){var O,K,re;return O=Y,t.substr(Y,2)===Me?(K=Me,Y+=2):(K=r,yt===0&&wt(cu)),K!==r&&(xt=O,K=Cr()),O=K,O===r&&(O=Y,t.substr(Y,2)===pf?(K=pf,Y+=2):(K=r,yt===0&&wt(NA)),K!==r&&(xt=O,K=OA()),O=K,O===r&&(O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(uu.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(fu)),re!==r?(xt=O,K=oc(),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===ve?(K=ve,Y+=2):(K=r,yt===0&&wt(Nt)),K!==r&&(xt=O,K=ac()),O=K,O===r&&(O=Y,t.substr(Y,2)===Oi?(K=Oi,Y+=2):(K=r,yt===0&&wt(no)),K!==r&&(xt=O,K=Rt()),O=K,O===r&&(O=Y,t.substr(Y,2)===xn?(K=xn,Y+=2):(K=r,yt===0&&wt(la)),K!==r&&(xt=O,K=Gi()),O=K,O===r&&(O=Y,t.substr(Y,2)===Li?(K=Li,Y+=2):(K=r,yt===0&&wt(Na)),K!==r&&(xt=O,K=dn()),O=K,O===r&&(O=Y,t.substr(Y,2)===Kn?(K=Kn,Y+=2):(K=r,yt===0&&wt(Au)),K!==r&&(xt=O,K=yh()),O=K,O===r&&(O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(Oa.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(La)),re!==r?(xt=O,K=Bo(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Iu()))))))))),O}function Iu(){var O,K,re,de,Je,At,dr,vr,Un,mi,Cs,JA;return O=Y,t.charCodeAt(Y)===92?(K=oa,Y++):(K=r,yt===0&&wt(aa)),K!==r?(re=pa(),re!==r?(xt=O,K=Ma(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===$e?(K=$e,Y+=2):(K=r,yt===0&&wt(Ua)),K!==r?(re=Y,de=Y,Je=pa(),Je!==r?(At=Fs(),At!==r?(Je=[Je,At],de=Je):(Y=de,de=r)):(Y=de,de=r),de===r&&(de=pa()),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,K=Ma(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===hf?(K=hf,Y+=2):(K=r,yt===0&&wt(lc)),K!==r?(re=Y,de=Y,Je=Fs(),Je!==r?(At=Fs(),At!==r?(dr=Fs(),dr!==r?(vr=Fs(),vr!==r?(Je=[Je,At,dr,vr],de=Je):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,K=Ma(re),O=K):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===wn?(K=wn,Y+=2):(K=r,yt===0&&wt(ca)),K!==r?(re=Y,de=Y,Je=Fs(),Je!==r?(At=Fs(),At!==r?(dr=Fs(),dr!==r?(vr=Fs(),vr!==r?(Un=Fs(),Un!==r?(mi=Fs(),mi!==r?(Cs=Fs(),Cs!==r?(JA=Fs(),JA!==r?(Je=[Je,At,dr,vr,Un,mi,Cs,JA],de=Je):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r)):(Y=de,de=r),de!==r?re=t.substring(re,Y):re=de,re!==r?(xt=O,K=LA(re),O=K):(Y=O,O=r)):(Y=O,O=r)))),O}function pa(){var O;return MA.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(ua)),O}function Fs(){var O;return Bl.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(Mt)),O}function Dh(){var O,K,re,de,Je;if(O=Y,K=[],re=Y,t.charCodeAt(Y)===92?(de=oa,Y++):(de=r,yt===0&&wt(aa)),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===fa?(de=fa,Y+=2):(de=r,yt===0&&wt(Ha)),de!==r&&(xt=re,de=ns()),re=de,re===r&&(re=Y,de=Y,yt++,Je=Dy(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r))),re!==r)for(;re!==r;)K.push(re),re=Y,t.charCodeAt(Y)===92?(de=oa,Y++):(de=r,yt===0&&wt(aa)),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r),re===r&&(re=Y,t.substr(Y,2)===fa?(de=fa,Y+=2):(de=r,yt===0&&wt(Ha)),de!==r&&(xt=re,de=ns()),re=de,re===r&&(re=Y,de=Y,yt++,Je=Dy(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r)));else K=r;return K!==r&&(xt=O,K=ro(K)),O=K,O}function YA(){var O,K,re,de,Je,At;if(O=Y,t.charCodeAt(Y)===45?(K=cc,Y++):(K=r,yt===0&&wt(pu)),K===r&&(t.charCodeAt(Y)===43?(K=uc,Y++):(K=r,yt===0&&wt(ja))),K===r&&(K=null),K!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue));else re=r;if(re!==r)if(t.charCodeAt(Y)===46?(de=Mi,Y++):(de=r,yt===0&&wt(Is)),de!==r){if(Je=[],it.test(t.charAt(Y))?(At=t.charAt(Y),Y++):(At=r,yt===0&&wt(Ue)),At!==r)for(;At!==r;)Je.push(At),it.test(t.charAt(Y))?(At=t.charAt(Y),Y++):(At=r,yt===0&&wt(Ue));else Je=r;Je!==r?(xt=O,K=vl(K,re,Je),O=K):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;if(O===r){if(O=Y,t.charCodeAt(Y)===45?(K=cc,Y++):(K=r,yt===0&&wt(pu)),K===r&&(t.charCodeAt(Y)===43?(K=uc,Y++):(K=r,yt===0&&wt(ja))),K===r&&(K=null),K!==r){if(re=[],it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue)),de!==r)for(;de!==r;)re.push(de),it.test(t.charAt(Y))?(de=t.charAt(Y),Y++):(de=r,yt===0&&wt(Ue));else re=r;re!==r?(xt=O,K=gf(K,re),O=K):(Y=O,O=r)}else Y=O,O=r;if(O===r&&(O=Y,K=VA(),K!==r&&(xt=O,K=fc(K)),O=K,O===r&&(O=Y,K=pc(),K!==r&&(xt=O,K=wi(K)),O=K,O===r)))if(O=Y,t.charCodeAt(Y)===40?(K=ye,Y++):(K=r,yt===0&&wt(Ae)),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=io(),de!==r){for(Je=[],At=kt();At!==r;)Je.push(At),At=kt();Je!==r?(t.charCodeAt(Y)===41?(At=se,Y++):(At=r,yt===0&&wt(Z)),At!==r?(xt=O,K=Qn(de),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r}return O}function vf(){var O,K,re,de,Je,At,dr,vr;if(O=Y,K=YA(),K!==r){for(re=[],de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===42?(At=Ac,Y++):(At=r,yt===0&&wt(Ke)),At===r&&(t.charCodeAt(Y)===47?(At=st,Y++):(At=r,yt===0&&wt(St))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=de,Je=lr(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===42?(At=Ac,Y++):(At=r,yt===0&&wt(Ke)),At===r&&(t.charCodeAt(Y)===47?(At=st,Y++):(At=r,yt===0&&wt(St))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=YA(),vr!==r?(xt=de,Je=lr(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,K=te(K,re),O=K):(Y=O,O=r)}else Y=O,O=r;return O}function io(){var O,K,re,de,Je,At,dr,vr;if(O=Y,K=vf(),K!==r){for(re=[],de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===43?(At=uc,Y++):(At=r,yt===0&&wt(ja)),At===r&&(t.charCodeAt(Y)===45?(At=cc,Y++):(At=r,yt===0&&wt(pu))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=vf(),vr!==r?(xt=de,Je=Ee(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r;for(;de!==r;){for(re.push(de),de=Y,Je=[],At=kt();At!==r;)Je.push(At),At=kt();if(Je!==r)if(t.charCodeAt(Y)===43?(At=uc,Y++):(At=r,yt===0&&wt(ja)),At===r&&(t.charCodeAt(Y)===45?(At=cc,Y++):(At=r,yt===0&&wt(pu))),At!==r){for(dr=[],vr=kt();vr!==r;)dr.push(vr),vr=kt();dr!==r?(vr=vf(),vr!==r?(xt=de,Je=Ee(K,At,vr),de=Je):(Y=de,de=r)):(Y=de,de=r)}else Y=de,de=r;else Y=de,de=r}re!==r?(xt=O,K=te(K,re),O=K):(Y=O,O=r)}else Y=O,O=r;return O}function Zr(){var O,K,re,de,Je,At;if(O=Y,t.substr(Y,3)===Oe?(K=Oe,Y+=3):(K=r,yt===0&&wt(dt)),K!==r){for(re=[],de=kt();de!==r;)re.push(de),de=kt();if(re!==r)if(de=io(),de!==r){for(Je=[],At=kt();At!==r;)Je.push(At),At=kt();Je!==r?(t.substr(Y,2)===Et?(At=Et,Y+=2):(At=r,yt===0&&wt(bt)),At!==r?(xt=O,K=tr(de),O=K):(Y=O,O=r)):(Y=O,O=r)}else Y=O,O=r;else Y=O,O=r}else Y=O,O=r;return O}function bh(){var O,K,re,de;return O=Y,t.substr(Y,2)===An?(K=An,Y+=2):(K=r,yt===0&&wt(li)),K!==r?(re=Aa(),re!==r?(t.charCodeAt(Y)===41?(de=se,Y++):(de=r,yt===0&&wt(Z)),de!==r?(xt=O,K=qi(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O}function VA(){var O,K,re,de,Je,At;return O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,2)===my?(de=my,Y+=2):(de=r,yt===0&&wt(Z1)),de!==r?(Je=Rs(),Je!==r?(t.charCodeAt(Y)===125?(At=j,Y++):(At=r,yt===0&&wt(rt)),At!==r?(xt=O,K=vo(re,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,3)===yy?(de=yy,Y+=3):(de=r,yt===0&&wt(Eh)),de!==r?(xt=O,K=$1(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,2)===So?(de=So,Y+=2):(de=r,yt===0&&wt(Ih)),de!==r?(Je=Rs(),Je!==r?(t.charCodeAt(Y)===125?(At=j,Y++):(At=r,yt===0&&wt(rt)),At!==r?(xt=O,K=Ch(re,Je),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.substr(Y,3)===hu?(de=hu,Y+=3):(de=r,yt===0&&wt(wh)),de!==r?(xt=O,K=Fg(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.substr(Y,2)===Tn?(K=Tn,Y+=2):(K=r,yt===0&&wt(Ga)),K!==r?(re=pc(),re!==r?(t.charCodeAt(Y)===125?(de=j,Y++):(de=r,yt===0&&wt(rt)),de!==r?(xt=O,K=Ng(re),O=K):(Y=O,O=r)):(Y=O,O=r)):(Y=O,O=r),O===r&&(O=Y,t.charCodeAt(Y)===36?(K=Og,Y++):(K=r,yt===0&&wt(Ey)),K!==r?(re=pc(),re!==r?(xt=O,K=Ng(re),O=K):(Y=O,O=r)):(Y=O,O=r)))))),O}function Sy(){var O,K,re;return O=Y,K=Wg(),K!==r?(xt=Y,re=df(K),re?re=void 0:re=r,re!==r?(xt=O,K=Do(K),O=K):(Y=O,O=r)):(Y=O,O=r),O}function Wg(){var O,K,re,de,Je;if(O=Y,K=[],re=Y,de=Y,yt++,Je=xh(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r),re!==r)for(;re!==r;)K.push(re),re=Y,de=Y,yt++,Je=xh(),yt--,Je===r?de=void 0:(Y=de,de=r),de!==r?(t.length>Y?(Je=t.charAt(Y),Y++):(Je=r,yt===0&&wt(kn)),Je!==r?(xt=re,de=Bo(Je),re=de):(Y=re,re=r)):(Y=re,re=r);else K=r;return K!==r&&(xt=O,K=ro(K)),O=K,O}function Ph(){var O,K,re;if(O=Y,K=[],Sl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Bh)),re!==r)for(;re!==r;)K.push(re),Sl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(Bh));else K=r;return K!==r&&(xt=O,K=Lg()),O=K,O}function pc(){var O,K,re;if(O=Y,K=[],Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(bl)),re!==r)for(;re!==r;)K.push(re),Dl.test(t.charAt(Y))?(re=t.charAt(Y),Y++):(re=r,yt===0&&wt(bl));else K=r;return K!==r&&(xt=O,K=Lg()),O=K,O}function Dy(){var O;return Iy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(UA)),O}function xh(){var O;return Cy.test(t.charAt(Y))?(O=t.charAt(Y),Y++):(O=r,yt===0&&wt(wy)),O}function kt(){var O,K;if(O=[],_A.test(t.charAt(Y))?(K=t.charAt(Y),Y++):(K=r,yt===0&&wt(HA)),K!==r)for(;K!==r;)O.push(K),_A.test(t.charAt(Y))?(K=t.charAt(Y),Y++):(K=r,yt===0&&wt(HA));else O=r;return O}if(gu=a(),gu!==r&&Y===t.length)return gu;throw gu!==r&&Y<t.length&&wt(qa()),GA(mf,bo<t.length?t.charAt(bo):null,bo<t.length?Ef(bo,bo+1):Ef(bo,bo))}mee.exports={SyntaxError:Bd,parse:L5e}});function ux(t,e={isGlobPattern:()=>!1}){try{return(0,Eee.parse)(t,e)}catch(r){throw r.location&&(r.message=r.message.replace(/(\\.)?$/,` (line ${r.location.start.line}, column ${r.location.start.column})$1`)),r}}function fE(t,{endSemicolon:e=!1}={}){return t.map(({command:r,type:s},a)=>`${fx(r)}${s===\";\"?a!==t.length-1||e?\";\":\"\":\" &\"}`).join(\" \")}function fx(t){return`${AE(t.chain)}${t.then?` ${HU(t.then)}`:\"\"}`}function HU(t){return`${t.type} ${fx(t.line)}`}function AE(t){return`${GU(t)}${t.then?` ${jU(t.then)}`:\"\"}`}function jU(t){return`${t.type} ${AE(t.chain)}`}function GU(t){switch(t.type){case\"command\":return`${t.envs.length>0?`${t.envs.map(e=>cx(e)).join(\" \")} `:\"\"}${t.args.map(e=>qU(e)).join(\" \")}`;case\"subshell\":return`(${fE(t.subshell)})${t.args.length>0?` ${t.args.map(e=>H2(e)).join(\" \")}`:\"\"}`;case\"group\":return`{ ${fE(t.group,{endSemicolon:!0})} }${t.args.length>0?` ${t.args.map(e=>H2(e)).join(\" \")}`:\"\"}`;case\"envs\":return t.envs.map(e=>cx(e)).join(\" \");default:throw new Error(`Unsupported command type:  \"${t.type}\"`)}}function cx(t){return`${t.name}=${t.args[0]?vd(t.args[0]):\"\"}`}function qU(t){switch(t.type){case\"redirection\":return H2(t);case\"argument\":return vd(t);default:throw new Error(`Unsupported argument type: \"${t.type}\"`)}}function H2(t){return`${t.subtype} ${t.args.map(e=>vd(e)).join(\" \")}`}function vd(t){return t.segments.map(e=>WU(e)).join(\"\")}function WU(t){let e=(s,a)=>a?`\"${s}\"`:s,r=s=>s===\"\"?\"''\":s.match(/[()}<>$|&;\"'\\n\\t ]/)?s.match(/['\\t\\p{C}]/u)?s.match(/'/)?`\"${s.replace(/[\"$\\t\\p{C}]/u,U5e)}\"`:`$'${s.replace(/[\\t\\p{C}]/u,Cee)}'`:`'${s}'`:s;switch(t.type){case\"text\":return r(t.text);case\"glob\":return t.pattern;case\"shell\":return e(`$(${fE(t.shell)})`,t.quoted);case\"variable\":return e(typeof t.defaultValue>\"u\"?typeof t.alternativeValue>\"u\"?`\\${${t.name}}`:t.alternativeValue.length===0?`\\${${t.name}:+}`:`\\${${t.name}:+${t.alternativeValue.map(s=>vd(s)).join(\" \")}}`:t.defaultValue.length===0?`\\${${t.name}:-}`:`\\${${t.name}:-${t.defaultValue.map(s=>vd(s)).join(\" \")}}`,t.quoted);case\"arithmetic\":return`$(( ${Ax(t.arithmetic)} ))`;default:throw new Error(`Unsupported argument segment type: \"${t.type}\"`)}}function Ax(t){let e=a=>{switch(a){case\"addition\":return\"+\";case\"subtraction\":return\"-\";case\"multiplication\":return\"*\";case\"division\":return\"/\";default:throw new Error(`Can't extract operator from arithmetic expression of type \"${a}\"`)}},r=(a,n)=>n?`( ${a} )`:a,s=a=>r(Ax(a),![\"number\",\"variable\"].includes(a.type));switch(t.type){case\"number\":return String(t.value);case\"variable\":return t.name;default:return`${s(t.left)} ${e(t.type)} ${s(t.right)}`}}var Eee,Iee,M5e,Cee,U5e,wee=Xe(()=>{Eee=ut(yee());Iee=new Map([[\"\\f\",\"\\\\f\"],[`\n`,\"\\\\n\"],[\"\\r\",\"\\\\r\"],[\"\t\",\"\\\\t\"],[\"\\v\",\"\\\\v\"],[\"\\0\",\"\\\\0\"]]),M5e=new Map([[\"\\\\\",\"\\\\\\\\\"],[\"$\",\"\\\\$\"],['\"','\\\\\"'],...Array.from(Iee,([t,e])=>[t,`\"$'${e}'\"`])]),Cee=t=>Iee.get(t)??`\\\\x${t.charCodeAt(0).toString(16).padStart(2,\"0\")}`,U5e=t=>M5e.get(t)??`\"$'${Cee(t)}'\"`});var vee=_((eQt,Bee)=>{\"use strict\";function _5e(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Sd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Sd)}_5e(Sd,Error);Sd.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(t)+\" but \"+p(e)+\" found.\"};function H5e(t,e){e=e!==void 0?e:{};var r={},s={resolution:Ne},a=Ne,n=\"/\",c=ye(\"/\",!1),f=function(Ue,x){return{from:Ue,descriptor:x}},p=function(Ue){return{descriptor:Ue}},h=\"@\",E=ye(\"@\",!1),C=function(Ue,x){return{fullName:Ue,description:x}},S=function(Ue){return{fullName:Ue}},P=function(){return Be()},I=/^[^\\/@]/,R=Ae([\"/\",\"@\"],!0,!1),N=/^[^\\/]/,U=Ae([\"/\"],!0,!1),W=0,ee=0,ie=[{line:1,column:1}],ue=0,le=[],me=0,pe;if(\"startRule\"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=s[e.startRule]}function Be(){return t.substring(ee,W)}function Ce(){return mt(ee,W)}function g(Ue,x){throw x=x!==void 0?x:mt(ee,W),Fe([De(Ue)],t.substring(ee,W),x)}function we(Ue,x){throw x=x!==void 0?x:mt(ee,W),rt(Ue,x)}function ye(Ue,x){return{type:\"literal\",text:Ue,ignoreCase:x}}function Ae(Ue,x,w){return{type:\"class\",parts:Ue,inverted:x,ignoreCase:w}}function se(){return{type:\"any\"}}function Z(){return{type:\"end\"}}function De(Ue){return{type:\"other\",description:Ue}}function Re(Ue){var x=ie[Ue],w;if(x)return x;for(w=Ue-1;!ie[w];)w--;for(x=ie[w],x={line:x.line,column:x.column};w<Ue;)t.charCodeAt(w)===10?(x.line++,x.column=1):x.column++,w++;return ie[Ue]=x,x}function mt(Ue,x){var w=Re(Ue),b=Re(x);return{start:{offset:Ue,line:w.line,column:w.column},end:{offset:x,line:b.line,column:b.column}}}function j(Ue){W<ue||(W>ue&&(ue=W,le=[]),le.push(Ue))}function rt(Ue,x){return new Sd(Ue,null,null,x)}function Fe(Ue,x,w){return new Sd(Sd.buildMessage(Ue,x),Ue,x,w)}function Ne(){var Ue,x,w,b;return Ue=W,x=Pe(),x!==r?(t.charCodeAt(W)===47?(w=n,W++):(w=r,me===0&&j(c)),w!==r?(b=Pe(),b!==r?(ee=Ue,x=f(x,b),Ue=x):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r),Ue===r&&(Ue=W,x=Pe(),x!==r&&(ee=Ue,x=p(x)),Ue=x),Ue}function Pe(){var Ue,x,w,b;return Ue=W,x=Ve(),x!==r?(t.charCodeAt(W)===64?(w=h,W++):(w=r,me===0&&j(E)),w!==r?(b=it(),b!==r?(ee=Ue,x=C(x,b),Ue=x):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r),Ue===r&&(Ue=W,x=Ve(),x!==r&&(ee=Ue,x=S(x)),Ue=x),Ue}function Ve(){var Ue,x,w,b,y;return Ue=W,t.charCodeAt(W)===64?(x=h,W++):(x=r,me===0&&j(E)),x!==r?(w=ke(),w!==r?(t.charCodeAt(W)===47?(b=n,W++):(b=r,me===0&&j(c)),b!==r?(y=ke(),y!==r?(ee=Ue,x=P(),Ue=x):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r)):(W=Ue,Ue=r),Ue===r&&(Ue=W,x=ke(),x!==r&&(ee=Ue,x=P()),Ue=x),Ue}function ke(){var Ue,x,w;if(Ue=W,x=[],I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(R)),w!==r)for(;w!==r;)x.push(w),I.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(R));else x=r;return x!==r&&(ee=Ue,x=P()),Ue=x,Ue}function it(){var Ue,x,w;if(Ue=W,x=[],N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U)),w!==r)for(;w!==r;)x.push(w),N.test(t.charAt(W))?(w=t.charAt(W),W++):(w=r,me===0&&j(U));else x=r;return x!==r&&(ee=Ue,x=P()),Ue=x,Ue}if(pe=a(),pe!==r&&W===t.length)return pe;throw pe!==r&&W<t.length&&j(Z()),Fe(le,ue<t.length?t.charAt(ue):null,ue<t.length?mt(ue,ue+1):mt(ue,ue))}Bee.exports={SyntaxError:Sd,parse:H5e}});function px(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,See.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 hx(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 See,Dee=Xe(()=>{See=ut(vee())});var bd=_((rQt,Dd)=>{\"use strict\";function bee(t){return typeof t>\"u\"||t===null}function j5e(t){return typeof t==\"object\"&&t!==null}function G5e(t){return Array.isArray(t)?t:bee(t)?[]:[t]}function q5e(t,e){var r,s,a,n;if(e)for(n=Object.keys(e),r=0,s=n.length;r<s;r+=1)a=n[r],t[a]=e[a];return t}function W5e(t,e){var r=\"\",s;for(s=0;s<e;s+=1)r+=t;return r}function Y5e(t){return t===0&&Number.NEGATIVE_INFINITY===1/t}Dd.exports.isNothing=bee;Dd.exports.isObject=j5e;Dd.exports.toArray=G5e;Dd.exports.repeat=W5e;Dd.exports.isNegativeZero=Y5e;Dd.exports.extend=q5e});var pE=_((nQt,Pee)=>{\"use strict\";function j2(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||\"\"}j2.prototype=Object.create(Error.prototype);j2.prototype.constructor=j2;j2.prototype.toString=function(e){var r=this.name+\": \";return r+=this.reason||\"(unknown reason)\",!e&&this.mark&&(r+=\" \"+this.mark.toString()),r};Pee.exports=j2});var Qee=_((iQt,kee)=>{\"use strict\";var xee=bd();function YU(t,e,r,s,a){this.name=t,this.buffer=e,this.position=r,this.line=s,this.column=a}YU.prototype.getSnippet=function(e,r){var s,a,n,c,f;if(!this.buffer)return null;for(e=e||4,r=r||75,s=\"\",a=this.position;a>0&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(a-1))===-1;)if(a-=1,this.position-a>r/2-1){s=\" ... \",a+=5;break}for(n=\"\",c=this.position;c<this.buffer.length&&`\\0\\r\n\\x85\\u2028\\u2029`.indexOf(this.buffer.charAt(c))===-1;)if(c+=1,c-this.position>r/2-1){n=\" ... \",c-=5;break}return f=this.buffer.slice(a,c),xee.repeat(\" \",e)+s+f+n+`\n`+xee.repeat(\" \",e+this.position-a+s.length)+\"^\"};YU.prototype.toString=function(e){var r,s=\"\";return this.name&&(s+='in \"'+this.name+'\" '),s+=\"at line \"+(this.line+1)+\", column \"+(this.column+1),e||(r=this.getSnippet(),r&&(s+=`:\n`+r)),s};kee.exports=YU});var Ss=_((sQt,Ree)=>{\"use strict\";var Tee=pE(),V5e=[\"kind\",\"resolve\",\"construct\",\"instanceOf\",\"predicate\",\"represent\",\"defaultStyle\",\"styleAliases\"],J5e=[\"scalar\",\"sequence\",\"mapping\"];function K5e(t){var e={};return t!==null&&Object.keys(t).forEach(function(r){t[r].forEach(function(s){e[String(s)]=r})}),e}function z5e(t,e){if(e=e||{},Object.keys(e).forEach(function(r){if(V5e.indexOf(r)===-1)throw new Tee('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=K5e(e.styleAliases||null),J5e.indexOf(this.kind)===-1)throw new Tee('Unknown kind \"'+this.kind+'\" is specified for \"'+t+'\" YAML type.')}Ree.exports=z5e});var Pd=_((oQt,Nee)=>{\"use strict\";var Fee=bd(),gx=pE(),X5e=Ss();function VU(t,e,r){var s=[];return t.include.forEach(function(a){r=VU(a,e,r)}),t[e].forEach(function(a){r.forEach(function(n,c){n.tag===a.tag&&n.kind===a.kind&&s.push(c)}),r.push(a)}),r.filter(function(a,n){return s.indexOf(n)===-1})}function Z5e(){var t={scalar:{},sequence:{},mapping:{},fallback:{}},e,r;function s(a){t[a.kind][a.tag]=t.fallback[a.tag]=a}for(e=0,r=arguments.length;e<r;e+=1)arguments[e].forEach(s);return t}function hE(t){this.include=t.include||[],this.implicit=t.implicit||[],this.explicit=t.explicit||[],this.implicit.forEach(function(e){if(e.loadKind&&e.loadKind!==\"scalar\")throw new gx(\"There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.\")}),this.compiledImplicit=VU(this,\"implicit\",[]),this.compiledExplicit=VU(this,\"explicit\",[]),this.compiledTypeMap=Z5e(this.compiledImplicit,this.compiledExplicit)}hE.DEFAULT=null;hE.create=function(){var e,r;switch(arguments.length){case 1:e=hE.DEFAULT,r=arguments[0];break;case 2:e=arguments[0],r=arguments[1];break;default:throw new gx(\"Wrong number of arguments for Schema.create function\")}if(e=Fee.toArray(e),r=Fee.toArray(r),!e.every(function(s){return s instanceof hE}))throw new gx(\"Specified list of super schemas (or a single Schema object) contains a non-Schema object.\");if(!r.every(function(s){return s instanceof X5e}))throw new gx(\"Specified list of YAML types (or a single Type object) contains a non-Type object.\");return new hE({include:e,explicit:r})};Nee.exports=hE});var Lee=_((aQt,Oee)=>{\"use strict\";var $5e=Ss();Oee.exports=new $5e(\"tag:yaml.org,2002:str\",{kind:\"scalar\",construct:function(t){return t!==null?t:\"\"}})});var Uee=_((lQt,Mee)=>{\"use strict\";var eqe=Ss();Mee.exports=new eqe(\"tag:yaml.org,2002:seq\",{kind:\"sequence\",construct:function(t){return t!==null?t:[]}})});var Hee=_((cQt,_ee)=>{\"use strict\";var tqe=Ss();_ee.exports=new tqe(\"tag:yaml.org,2002:map\",{kind:\"mapping\",construct:function(t){return t!==null?t:{}}})});var dx=_((uQt,jee)=>{\"use strict\";var rqe=Pd();jee.exports=new rqe({explicit:[Lee(),Uee(),Hee()]})});var qee=_((fQt,Gee)=>{\"use strict\";var nqe=Ss();function iqe(t){if(t===null)return!0;var e=t.length;return e===1&&t===\"~\"||e===4&&(t===\"null\"||t===\"Null\"||t===\"NULL\")}function sqe(){return null}function oqe(t){return t===null}Gee.exports=new nqe(\"tag:yaml.org,2002:null\",{kind:\"scalar\",resolve:iqe,construct:sqe,predicate:oqe,represent:{canonical:function(){return\"~\"},lowercase:function(){return\"null\"},uppercase:function(){return\"NULL\"},camelcase:function(){return\"Null\"}},defaultStyle:\"lowercase\"})});var Yee=_((AQt,Wee)=>{\"use strict\";var aqe=Ss();function lqe(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 cqe(t){return t===\"true\"||t===\"True\"||t===\"TRUE\"}function uqe(t){return Object.prototype.toString.call(t)===\"[object Boolean]\"}Wee.exports=new aqe(\"tag:yaml.org,2002:bool\",{kind:\"scalar\",resolve:lqe,construct:cqe,predicate:uqe,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 Jee=_((pQt,Vee)=>{\"use strict\";var fqe=bd(),Aqe=Ss();function pqe(t){return 48<=t&&t<=57||65<=t&&t<=70||97<=t&&t<=102}function hqe(t){return 48<=t&&t<=55}function gqe(t){return 48<=t&&t<=57}function dqe(t){if(t===null)return!1;var e=t.length,r=0,s=!1,a;if(!e)return!1;if(a=t[r],(a===\"-\"||a===\"+\")&&(a=t[++r]),a===\"0\"){if(r+1===e)return!0;if(a=t[++r],a===\"b\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(a!==\"0\"&&a!==\"1\")return!1;s=!0}return s&&a!==\"_\"}if(a===\"x\"){for(r++;r<e;r++)if(a=t[r],a!==\"_\"){if(!pqe(t.charCodeAt(r)))return!1;s=!0}return s&&a!==\"_\"}for(;r<e;r++)if(a=t[r],a!==\"_\"){if(!hqe(t.charCodeAt(r)))return!1;s=!0}return s&&a!==\"_\"}if(a===\"_\")return!1;for(;r<e;r++)if(a=t[r],a!==\"_\"){if(a===\":\")break;if(!gqe(t.charCodeAt(r)))return!1;s=!0}return!s||a===\"_\"?!1:a!==\":\"?!0:/^(:[0-5]?[0-9])+$/.test(t.slice(r))}function mqe(t){var e=t,r=1,s,a,n=[];return e.indexOf(\"_\")!==-1&&(e=e.replace(/_/g,\"\")),s=e[0],(s===\"-\"||s===\"+\")&&(s===\"-\"&&(r=-1),e=e.slice(1),s=e[0]),e===\"0\"?0:s===\"0\"?e[1]===\"b\"?r*parseInt(e.slice(2),2):e[1]===\"x\"?r*parseInt(e,16):r*parseInt(e,8):e.indexOf(\":\")!==-1?(e.split(\":\").forEach(function(c){n.unshift(parseInt(c,10))}),e=0,a=1,n.forEach(function(c){e+=c*a,a*=60}),r*e):r*parseInt(e,10)}function yqe(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&t%1===0&&!fqe.isNegativeZero(t)}Vee.exports=new Aqe(\"tag:yaml.org,2002:int\",{kind:\"scalar\",resolve:dqe,construct:mqe,predicate:yqe,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 Xee=_((hQt,zee)=>{\"use strict\";var Kee=bd(),Eqe=Ss(),Iqe=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 Cqe(t){return!(t===null||!Iqe.test(t)||t[t.length-1]===\"_\")}function wqe(t){var e,r,s,a;return e=t.replace(/_/g,\"\").toLowerCase(),r=e[0]===\"-\"?-1:1,a=[],\"+-\".indexOf(e[0])>=0&&(e=e.slice(1)),e===\".inf\"?r===1?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:e===\".nan\"?NaN:e.indexOf(\":\")>=0?(e.split(\":\").forEach(function(n){a.unshift(parseFloat(n,10))}),e=0,s=1,a.forEach(function(n){e+=n*s,s*=60}),r*e):r*parseFloat(e,10)}var Bqe=/^[-+]?[0-9]+e/;function vqe(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(Kee.isNegativeZero(t))return\"-0.0\";return r=t.toString(10),Bqe.test(r)?r.replace(\"e\",\".e\"):r}function Sqe(t){return Object.prototype.toString.call(t)===\"[object Number]\"&&(t%1!==0||Kee.isNegativeZero(t))}zee.exports=new Eqe(\"tag:yaml.org,2002:float\",{kind:\"scalar\",resolve:Cqe,construct:wqe,predicate:Sqe,represent:vqe,defaultStyle:\"lowercase\"})});var JU=_((gQt,Zee)=>{\"use strict\";var Dqe=Pd();Zee.exports=new Dqe({include:[dx()],implicit:[qee(),Yee(),Jee(),Xee()]})});var KU=_((dQt,$ee)=>{\"use strict\";var bqe=Pd();$ee.exports=new bqe({include:[JU()]})});var nte=_((mQt,rte)=>{\"use strict\";var Pqe=Ss(),ete=new RegExp(\"^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$\"),tte=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 xqe(t){return t===null?!1:ete.exec(t)!==null||tte.exec(t)!==null}function kqe(t){var e,r,s,a,n,c,f,p=0,h=null,E,C,S;if(e=ete.exec(t),e===null&&(e=tte.exec(t)),e===null)throw new Error(\"Date resolve error\");if(r=+e[1],s=+e[2]-1,a=+e[3],!e[4])return new Date(Date.UTC(r,s,a));if(n=+e[4],c=+e[5],f=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+=\"0\";p=+p}return e[9]&&(E=+e[10],C=+(e[11]||0),h=(E*60+C)*6e4,e[9]===\"-\"&&(h=-h)),S=new Date(Date.UTC(r,s,a,n,c,f,p)),h&&S.setTime(S.getTime()-h),S}function Qqe(t){return t.toISOString()}rte.exports=new Pqe(\"tag:yaml.org,2002:timestamp\",{kind:\"scalar\",resolve:xqe,construct:kqe,instanceOf:Date,represent:Qqe})});var ste=_((yQt,ite)=>{\"use strict\";var Tqe=Ss();function Rqe(t){return t===\"<<\"||t===null}ite.exports=new Tqe(\"tag:yaml.org,2002:merge\",{kind:\"scalar\",resolve:Rqe})});var lte=_((EQt,ate)=>{\"use strict\";var xd;try{ote=Ie,xd=ote(\"buffer\").Buffer}catch{}var ote,Fqe=Ss(),zU=`ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\\r`;function Nqe(t){if(t===null)return!1;var e,r,s=0,a=t.length,n=zU;for(r=0;r<a;r++)if(e=n.indexOf(t.charAt(r)),!(e>64)){if(e<0)return!1;s+=6}return s%8===0}function Oqe(t){var e,r,s=t.replace(/[\\r\\n=]/g,\"\"),a=s.length,n=zU,c=0,f=[];for(e=0;e<a;e++)e%4===0&&e&&(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)),c=c<<6|n.indexOf(s.charAt(e));return r=a%4*6,r===0?(f.push(c>>16&255),f.push(c>>8&255),f.push(c&255)):r===18?(f.push(c>>10&255),f.push(c>>2&255)):r===12&&f.push(c>>4&255),xd?xd.from?xd.from(f):new xd(f):f}function Lqe(t){var e=\"\",r=0,s,a,n=t.length,c=zU;for(s=0;s<n;s++)s%3===0&&s&&(e+=c[r>>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]),r=(r<<8)+t[s];return a=n%3,a===0?(e+=c[r>>18&63],e+=c[r>>12&63],e+=c[r>>6&63],e+=c[r&63]):a===2?(e+=c[r>>10&63],e+=c[r>>4&63],e+=c[r<<2&63],e+=c[64]):a===1&&(e+=c[r>>2&63],e+=c[r<<4&63],e+=c[64],e+=c[64]),e}function Mqe(t){return xd&&xd.isBuffer(t)}ate.exports=new Fqe(\"tag:yaml.org,2002:binary\",{kind:\"scalar\",resolve:Nqe,construct:Oqe,predicate:Mqe,represent:Lqe})});var ute=_((CQt,cte)=>{\"use strict\";var Uqe=Ss(),_qe=Object.prototype.hasOwnProperty,Hqe=Object.prototype.toString;function jqe(t){if(t===null)return!0;var e=[],r,s,a,n,c,f=t;for(r=0,s=f.length;r<s;r+=1){if(a=f[r],c=!1,Hqe.call(a)!==\"[object Object]\")return!1;for(n in a)if(_qe.call(a,n))if(!c)c=!0;else return!1;if(!c)return!1;if(e.indexOf(n)===-1)e.push(n);else return!1}return!0}function Gqe(t){return t!==null?t:[]}cte.exports=new Uqe(\"tag:yaml.org,2002:omap\",{kind:\"sequence\",resolve:jqe,construct:Gqe})});var Ate=_((wQt,fte)=>{\"use strict\";var qqe=Ss(),Wqe=Object.prototype.toString;function Yqe(t){if(t===null)return!0;var e,r,s,a,n,c=t;for(n=new Array(c.length),e=0,r=c.length;e<r;e+=1){if(s=c[e],Wqe.call(s)!==\"[object Object]\"||(a=Object.keys(s),a.length!==1))return!1;n[e]=[a[0],s[a[0]]]}return!0}function Vqe(t){if(t===null)return[];var e,r,s,a,n,c=t;for(n=new Array(c.length),e=0,r=c.length;e<r;e+=1)s=c[e],a=Object.keys(s),n[e]=[a[0],s[a[0]]];return n}fte.exports=new qqe(\"tag:yaml.org,2002:pairs\",{kind:\"sequence\",resolve:Yqe,construct:Vqe})});var hte=_((BQt,pte)=>{\"use strict\";var Jqe=Ss(),Kqe=Object.prototype.hasOwnProperty;function zqe(t){if(t===null)return!0;var e,r=t;for(e in r)if(Kqe.call(r,e)&&r[e]!==null)return!1;return!0}function Xqe(t){return t!==null?t:{}}pte.exports=new Jqe(\"tag:yaml.org,2002:set\",{kind:\"mapping\",resolve:zqe,construct:Xqe})});var gE=_((vQt,gte)=>{\"use strict\";var Zqe=Pd();gte.exports=new Zqe({include:[KU()],implicit:[nte(),ste()],explicit:[lte(),ute(),Ate(),hte()]})});var mte=_((SQt,dte)=>{\"use strict\";var $qe=Ss();function e9e(){return!0}function t9e(){}function r9e(){return\"\"}function n9e(t){return typeof t>\"u\"}dte.exports=new $qe(\"tag:yaml.org,2002:js/undefined\",{kind:\"scalar\",resolve:e9e,construct:t9e,predicate:n9e,represent:r9e})});var Ete=_((DQt,yte)=>{\"use strict\";var i9e=Ss();function s9e(t){if(t===null||t.length===0)return!1;var e=t,r=/\\/([gim]*)$/.exec(t),s=\"\";return!(e[0]===\"/\"&&(r&&(s=r[1]),s.length>3||e[e.length-s.length-1]!==\"/\"))}function o9e(t){var e=t,r=/\\/([gim]*)$/.exec(t),s=\"\";return e[0]===\"/\"&&(r&&(s=r[1]),e=e.slice(1,e.length-s.length-1)),new RegExp(e,s)}function a9e(t){var e=\"/\"+t.source+\"/\";return t.global&&(e+=\"g\"),t.multiline&&(e+=\"m\"),t.ignoreCase&&(e+=\"i\"),e}function l9e(t){return Object.prototype.toString.call(t)===\"[object RegExp]\"}yte.exports=new i9e(\"tag:yaml.org,2002:js/regexp\",{kind:\"scalar\",resolve:s9e,construct:o9e,predicate:l9e,represent:a9e})});var wte=_((bQt,Cte)=>{\"use strict\";var mx;try{Ite=Ie,mx=Ite(\"esprima\")}catch{typeof window<\"u\"&&(mx=window.esprima)}var Ite,c9e=Ss();function u9e(t){if(t===null)return!1;try{var e=\"(\"+t+\")\",r=mx.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 f9e(t){var e=\"(\"+t+\")\",r=mx.parse(e,{range:!0}),s=[],a;if(r.type!==\"Program\"||r.body.length!==1||r.body[0].type!==\"ExpressionStatement\"||r.body[0].expression.type!==\"ArrowFunctionExpression\"&&r.body[0].expression.type!==\"FunctionExpression\")throw new Error(\"Failed to resolve function\");return r.body[0].expression.params.forEach(function(n){s.push(n.name)}),a=r.body[0].expression.body.range,r.body[0].expression.body.type===\"BlockStatement\"?new Function(s,e.slice(a[0]+1,a[1]-1)):new Function(s,\"return \"+e.slice(a[0],a[1]))}function A9e(t){return t.toString()}function p9e(t){return Object.prototype.toString.call(t)===\"[object Function]\"}Cte.exports=new c9e(\"tag:yaml.org,2002:js/function\",{kind:\"scalar\",resolve:u9e,construct:f9e,predicate:p9e,represent:A9e})});var G2=_((xQt,vte)=>{\"use strict\";var Bte=Pd();vte.exports=Bte.DEFAULT=new Bte({include:[gE()],explicit:[mte(),Ete(),wte()]})});var Gte=_((kQt,q2)=>{\"use strict\";var Ip=bd(),Qte=pE(),h9e=Qee(),Tte=gE(),g9e=G2(),i0=Object.prototype.hasOwnProperty,yx=1,Rte=2,Fte=3,Ex=4,XU=1,d9e=2,Ste=3,m9e=/[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/,y9e=/[\\x85\\u2028\\u2029]/,E9e=/[,\\[\\]\\{\\}]/,Nte=/^(?:!|!!|![a-z\\-]+!)$/i,Ote=/^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;function Dte(t){return Object.prototype.toString.call(t)}function jf(t){return t===10||t===13}function Qd(t){return t===9||t===32}function rl(t){return t===9||t===32||t===10||t===13}function dE(t){return t===44||t===91||t===93||t===123||t===125}function I9e(t){var e;return 48<=t&&t<=57?t-48:(e=t|32,97<=e&&e<=102?e-97+10:-1)}function C9e(t){return t===120?2:t===117?4:t===85?8:0}function w9e(t){return 48<=t&&t<=57?t-48:-1}function bte(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 B9e(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}var Lte=new Array(256),Mte=new Array(256);for(kd=0;kd<256;kd++)Lte[kd]=bte(kd)?1:0,Mte[kd]=bte(kd);var kd;function v9e(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||g9e,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 Ute(t,e){return new Qte(e,new h9e(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function Rr(t,e){throw Ute(t,e)}function Ix(t,e){t.onWarning&&t.onWarning.call(null,Ute(t,e))}var Pte={YAML:function(e,r,s){var a,n,c;e.version!==null&&Rr(e,\"duplication of %YAML directive\"),s.length!==1&&Rr(e,\"YAML directive accepts exactly one argument\"),a=/^([0-9]+)\\.([0-9]+)$/.exec(s[0]),a===null&&Rr(e,\"ill-formed argument of the YAML directive\"),n=parseInt(a[1],10),c=parseInt(a[2],10),n!==1&&Rr(e,\"unacceptable YAML version of the document\"),e.version=s[0],e.checkLineBreaks=c<2,c!==1&&c!==2&&Ix(e,\"unsupported YAML version of the document\")},TAG:function(e,r,s){var a,n;s.length!==2&&Rr(e,\"TAG directive accepts exactly two arguments\"),a=s[0],n=s[1],Nte.test(a)||Rr(e,\"ill-formed tag handle (first argument) of the TAG directive\"),i0.call(e.tagMap,a)&&Rr(e,'there is a previously declared suffix for \"'+a+'\" tag handle'),Ote.test(n)||Rr(e,\"ill-formed tag prefix (second argument) of the TAG directive\"),e.tagMap[a]=n}};function n0(t,e,r,s){var a,n,c,f;if(e<r){if(f=t.input.slice(e,r),s)for(a=0,n=f.length;a<n;a+=1)c=f.charCodeAt(a),c===9||32<=c&&c<=1114111||Rr(t,\"expected valid JSON character\");else m9e.test(f)&&Rr(t,\"the stream contains non-printable characters\");t.result+=f}}function xte(t,e,r,s){var a,n,c,f;for(Ip.isObject(r)||Rr(t,\"cannot merge mappings; the provided source object is unacceptable\"),a=Object.keys(r),c=0,f=a.length;c<f;c+=1)n=a[c],i0.call(e,n)||(e[n]=r[n],s[n]=!0)}function mE(t,e,r,s,a,n,c,f){var p,h;if(Array.isArray(a))for(a=Array.prototype.slice.call(a),p=0,h=a.length;p<h;p+=1)Array.isArray(a[p])&&Rr(t,\"nested arrays are not supported inside keys\"),typeof a==\"object\"&&Dte(a[p])===\"[object Object]\"&&(a[p]=\"[object Object]\");if(typeof a==\"object\"&&Dte(a)===\"[object Object]\"&&(a=\"[object Object]\"),a=String(a),e===null&&(e={}),s===\"tag:yaml.org,2002:merge\")if(Array.isArray(n))for(p=0,h=n.length;p<h;p+=1)xte(t,e,n[p],r);else xte(t,e,n,r);else!t.json&&!i0.call(r,a)&&i0.call(e,a)&&(t.line=c||t.line,t.position=f||t.position,Rr(t,\"duplicated mapping key\")),e[a]=n,delete r[a];return e}function ZU(t){var e;e=t.input.charCodeAt(t.position),e===10?t.position++:e===13?(t.position++,t.input.charCodeAt(t.position)===10&&t.position++):Rr(t,\"a line break is expected\"),t.line+=1,t.lineStart=t.position}function as(t,e,r){for(var s=0,a=t.input.charCodeAt(t.position);a!==0;){for(;Qd(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(jf(a))for(ZU(t),a=t.input.charCodeAt(t.position),s++,t.lineIndent=0;a===32;)t.lineIndent++,a=t.input.charCodeAt(++t.position);else break}return r!==-1&&s!==0&&t.lineIndent<r&&Ix(t,\"deficient indentation\"),s}function Cx(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||rl(r)))}function $U(t,e){e===1?t.result+=\" \":e>1&&(t.result+=Ip.repeat(`\n`,e-1))}function S9e(t,e,r){var s,a,n,c,f,p,h,E,C=t.kind,S=t.result,P;if(P=t.input.charCodeAt(t.position),rl(P)||dE(P)||P===35||P===38||P===42||P===33||P===124||P===62||P===39||P===34||P===37||P===64||P===96||(P===63||P===45)&&(a=t.input.charCodeAt(t.position+1),rl(a)||r&&dE(a)))return!1;for(t.kind=\"scalar\",t.result=\"\",n=c=t.position,f=!1;P!==0;){if(P===58){if(a=t.input.charCodeAt(t.position+1),rl(a)||r&&dE(a))break}else if(P===35){if(s=t.input.charCodeAt(t.position-1),rl(s))break}else{if(t.position===t.lineStart&&Cx(t)||r&&dE(P))break;if(jf(P))if(p=t.line,h=t.lineStart,E=t.lineIndent,as(t,!1,-1),t.lineIndent>=e){f=!0,P=t.input.charCodeAt(t.position);continue}else{t.position=c,t.line=p,t.lineStart=h,t.lineIndent=E;break}}f&&(n0(t,n,c,!1),$U(t,t.line-p),n=c=t.position,f=!1),Qd(P)||(c=t.position+1),P=t.input.charCodeAt(++t.position)}return n0(t,n,c,!1),t.result?!0:(t.kind=C,t.result=S,!1)}function D9e(t,e){var r,s,a;if(r=t.input.charCodeAt(t.position),r!==39)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,s=a=t.position;(r=t.input.charCodeAt(t.position))!==0;)if(r===39)if(n0(t,s,t.position,!0),r=t.input.charCodeAt(++t.position),r===39)s=t.position,t.position++,a=t.position;else return!0;else jf(r)?(n0(t,s,a,!0),$U(t,as(t,!1,e)),s=a=t.position):t.position===t.lineStart&&Cx(t)?Rr(t,\"unexpected end of the document within a single quoted scalar\"):(t.position++,a=t.position);Rr(t,\"unexpected end of the stream within a single quoted scalar\")}function b9e(t,e){var r,s,a,n,c,f;if(f=t.input.charCodeAt(t.position),f!==34)return!1;for(t.kind=\"scalar\",t.result=\"\",t.position++,r=s=t.position;(f=t.input.charCodeAt(t.position))!==0;){if(f===34)return n0(t,r,t.position,!0),t.position++,!0;if(f===92){if(n0(t,r,t.position,!0),f=t.input.charCodeAt(++t.position),jf(f))as(t,!1,e);else if(f<256&&Lte[f])t.result+=Mte[f],t.position++;else if((c=C9e(f))>0){for(a=c,n=0;a>0;a--)f=t.input.charCodeAt(++t.position),(c=I9e(f))>=0?n=(n<<4)+c:Rr(t,\"expected hexadecimal character\");t.result+=B9e(n),t.position++}else Rr(t,\"unknown escape sequence\");r=s=t.position}else jf(f)?(n0(t,r,s,!0),$U(t,as(t,!1,e)),r=s=t.position):t.position===t.lineStart&&Cx(t)?Rr(t,\"unexpected end of the document within a double quoted scalar\"):(t.position++,s=t.position)}Rr(t,\"unexpected end of the stream within a double quoted scalar\")}function P9e(t,e){var r=!0,s,a=t.tag,n,c=t.anchor,f,p,h,E,C,S={},P,I,R,N;if(N=t.input.charCodeAt(t.position),N===91)p=93,C=!1,n=[];else if(N===123)p=125,C=!0,n={};else return!1;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),N=t.input.charCodeAt(++t.position);N!==0;){if(as(t,!0,e),N=t.input.charCodeAt(t.position),N===p)return t.position++,t.tag=a,t.anchor=c,t.kind=C?\"mapping\":\"sequence\",t.result=n,!0;r||Rr(t,\"missed comma between flow collection entries\"),I=P=R=null,h=E=!1,N===63&&(f=t.input.charCodeAt(t.position+1),rl(f)&&(h=E=!0,t.position++,as(t,!0,e))),s=t.line,yE(t,e,yx,!1,!0),I=t.tag,P=t.result,as(t,!0,e),N=t.input.charCodeAt(t.position),(E||t.line===s)&&N===58&&(h=!0,N=t.input.charCodeAt(++t.position),as(t,!0,e),yE(t,e,yx,!1,!0),R=t.result),C?mE(t,n,S,I,P,R):h?n.push(mE(t,null,S,I,P,R)):n.push(P),as(t,!0,e),N=t.input.charCodeAt(t.position),N===44?(r=!0,N=t.input.charCodeAt(++t.position)):r=!1}Rr(t,\"unexpected end of the stream within a flow collection\")}function x9e(t,e){var r,s,a=XU,n=!1,c=!1,f=e,p=0,h=!1,E,C;if(C=t.input.charCodeAt(t.position),C===124)s=!1;else if(C===62)s=!0;else return!1;for(t.kind=\"scalar\",t.result=\"\";C!==0;)if(C=t.input.charCodeAt(++t.position),C===43||C===45)XU===a?a=C===43?Ste:d9e:Rr(t,\"repeat of a chomping mode identifier\");else if((E=w9e(C))>=0)E===0?Rr(t,\"bad explicit indentation width of a block scalar; it cannot be less than one\"):c?Rr(t,\"repeat of an indentation width identifier\"):(f=e+E-1,c=!0);else break;if(Qd(C)){do C=t.input.charCodeAt(++t.position);while(Qd(C));if(C===35)do C=t.input.charCodeAt(++t.position);while(!jf(C)&&C!==0)}for(;C!==0;){for(ZU(t),t.lineIndent=0,C=t.input.charCodeAt(t.position);(!c||t.lineIndent<f)&&C===32;)t.lineIndent++,C=t.input.charCodeAt(++t.position);if(!c&&t.lineIndent>f&&(f=t.lineIndent),jf(C)){p++;continue}if(t.lineIndent<f){a===Ste?t.result+=Ip.repeat(`\n`,n?1+p:p):a===XU&&n&&(t.result+=`\n`);break}for(s?Qd(C)?(h=!0,t.result+=Ip.repeat(`\n`,n?1+p:p)):h?(h=!1,t.result+=Ip.repeat(`\n`,p+1)):p===0?n&&(t.result+=\" \"):t.result+=Ip.repeat(`\n`,p):t.result+=Ip.repeat(`\n`,n?1+p:p),n=!0,c=!0,p=0,r=t.position;!jf(C)&&C!==0;)C=t.input.charCodeAt(++t.position);n0(t,r,t.position,!1)}return!0}function kte(t,e){var r,s=t.tag,a=t.anchor,n=[],c,f=!1,p;for(t.anchor!==null&&(t.anchorMap[t.anchor]=n),p=t.input.charCodeAt(t.position);p!==0&&!(p!==45||(c=t.input.charCodeAt(t.position+1),!rl(c)));){if(f=!0,t.position++,as(t,!0,-1)&&t.lineIndent<=e){n.push(null),p=t.input.charCodeAt(t.position);continue}if(r=t.line,yE(t,e,Fte,!1,!0),n.push(t.result),as(t,!0,-1),p=t.input.charCodeAt(t.position),(t.line===r||t.lineIndent>e)&&p!==0)Rr(t,\"bad indentation of a sequence entry\");else if(t.lineIndent<e)break}return f?(t.tag=s,t.anchor=a,t.kind=\"sequence\",t.result=n,!0):!1}function k9e(t,e,r){var s,a,n,c,f=t.tag,p=t.anchor,h={},E={},C=null,S=null,P=null,I=!1,R=!1,N;for(t.anchor!==null&&(t.anchorMap[t.anchor]=h),N=t.input.charCodeAt(t.position);N!==0;){if(s=t.input.charCodeAt(t.position+1),n=t.line,c=t.position,(N===63||N===58)&&rl(s))N===63?(I&&(mE(t,h,E,C,S,null),C=S=P=null),R=!0,I=!0,a=!0):I?(I=!1,a=!0):Rr(t,\"incomplete explicit mapping pair; a key node is missed; or followed by a non-tabulated empty line\"),t.position+=1,N=s;else if(yE(t,r,Rte,!1,!0))if(t.line===n){for(N=t.input.charCodeAt(t.position);Qd(N);)N=t.input.charCodeAt(++t.position);if(N===58)N=t.input.charCodeAt(++t.position),rl(N)||Rr(t,\"a whitespace character is expected after the key-value separator within a block mapping\"),I&&(mE(t,h,E,C,S,null),C=S=P=null),R=!0,I=!1,a=!1,C=t.tag,S=t.result;else if(R)Rr(t,\"can not read an implicit mapping pair; a colon is missed\");else return t.tag=f,t.anchor=p,!0}else if(R)Rr(t,\"can not read a block mapping entry; a multiline key may not be an implicit key\");else return t.tag=f,t.anchor=p,!0;else break;if((t.line===n||t.lineIndent>e)&&(yE(t,e,Ex,!0,a)&&(I?S=t.result:P=t.result),I||(mE(t,h,E,C,S,P,n,c),C=S=P=null),as(t,!0,-1),N=t.input.charCodeAt(t.position)),t.lineIndent>e&&N!==0)Rr(t,\"bad indentation of a mapping entry\");else if(t.lineIndent<e)break}return I&&mE(t,h,E,C,S,null),R&&(t.tag=f,t.anchor=p,t.kind=\"mapping\",t.result=h),R}function Q9e(t){var e,r=!1,s=!1,a,n,c;if(c=t.input.charCodeAt(t.position),c!==33)return!1;if(t.tag!==null&&Rr(t,\"duplication of a tag property\"),c=t.input.charCodeAt(++t.position),c===60?(r=!0,c=t.input.charCodeAt(++t.position)):c===33?(s=!0,a=\"!!\",c=t.input.charCodeAt(++t.position)):a=\"!\",e=t.position,r){do c=t.input.charCodeAt(++t.position);while(c!==0&&c!==62);t.position<t.length?(n=t.input.slice(e,t.position),c=t.input.charCodeAt(++t.position)):Rr(t,\"unexpected end of the stream within a verbatim tag\")}else{for(;c!==0&&!rl(c);)c===33&&(s?Rr(t,\"tag suffix cannot contain exclamation marks\"):(a=t.input.slice(e-1,t.position+1),Nte.test(a)||Rr(t,\"named tag handle cannot contain such characters\"),s=!0,e=t.position+1)),c=t.input.charCodeAt(++t.position);n=t.input.slice(e,t.position),E9e.test(n)&&Rr(t,\"tag suffix cannot contain flow indicator characters\")}return n&&!Ote.test(n)&&Rr(t,\"tag name cannot contain such characters: \"+n),r?t.tag=n:i0.call(t.tagMap,a)?t.tag=t.tagMap[a]+n:a===\"!\"?t.tag=\"!\"+n:a===\"!!\"?t.tag=\"tag:yaml.org,2002:\"+n:Rr(t,'undeclared tag handle \"'+a+'\"'),!0}function T9e(t){var e,r;if(r=t.input.charCodeAt(t.position),r!==38)return!1;for(t.anchor!==null&&Rr(t,\"duplication of an anchor property\"),r=t.input.charCodeAt(++t.position),e=t.position;r!==0&&!rl(r)&&!dE(r);)r=t.input.charCodeAt(++t.position);return t.position===e&&Rr(t,\"name of an anchor node must contain at least one character\"),t.anchor=t.input.slice(e,t.position),!0}function R9e(t){var e,r,s;if(s=t.input.charCodeAt(t.position),s!==42)return!1;for(s=t.input.charCodeAt(++t.position),e=t.position;s!==0&&!rl(s)&&!dE(s);)s=t.input.charCodeAt(++t.position);return t.position===e&&Rr(t,\"name of an alias node must contain at least one character\"),r=t.input.slice(e,t.position),i0.call(t.anchorMap,r)||Rr(t,'unidentified alias \"'+r+'\"'),t.result=t.anchorMap[r],as(t,!0,-1),!0}function yE(t,e,r,s,a){var n,c,f,p=1,h=!1,E=!1,C,S,P,I,R;if(t.listener!==null&&t.listener(\"open\",t),t.tag=null,t.anchor=null,t.kind=null,t.result=null,n=c=f=Ex===r||Fte===r,s&&as(t,!0,-1)&&(h=!0,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)),p===1)for(;Q9e(t)||T9e(t);)as(t,!0,-1)?(h=!0,f=n,t.lineIndent>e?p=1:t.lineIndent===e?p=0:t.lineIndent<e&&(p=-1)):f=!1;if(f&&(f=h||a),(p===1||Ex===r)&&(yx===r||Rte===r?I=e:I=e+1,R=t.position-t.lineStart,p===1?f&&(kte(t,R)||k9e(t,R,I))||P9e(t,I)?E=!0:(c&&x9e(t,I)||D9e(t,I)||b9e(t,I)?E=!0:R9e(t)?(E=!0,(t.tag!==null||t.anchor!==null)&&Rr(t,\"alias node should not have any properties\")):S9e(t,I,yx===r)&&(E=!0,t.tag===null&&(t.tag=\"?\")),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):p===0&&(E=f&&kte(t,R))),t.tag!==null&&t.tag!==\"!\")if(t.tag===\"?\"){for(t.result!==null&&t.kind!==\"scalar\"&&Rr(t,'unacceptable node kind for !<?> tag; it should be \"scalar\", not \"'+t.kind+'\"'),C=0,S=t.implicitTypes.length;C<S;C+=1)if(P=t.implicitTypes[C],P.resolve(t.result)){t.result=P.construct(t.result),t.tag=P.tag,t.anchor!==null&&(t.anchorMap[t.anchor]=t.result);break}}else i0.call(t.typeMap[t.kind||\"fallback\"],t.tag)?(P=t.typeMap[t.kind||\"fallback\"][t.tag],t.result!==null&&P.kind!==t.kind&&Rr(t,\"unacceptable node kind for !<\"+t.tag+'> tag; it should be \"'+P.kind+'\", not \"'+t.kind+'\"'),P.resolve(t.result)?(t.result=P.construct(t.result),t.anchor!==null&&(t.anchorMap[t.anchor]=t.result)):Rr(t,\"cannot resolve a node with !<\"+t.tag+\"> explicit tag\")):Rr(t,\"unknown tag !<\"+t.tag+\">\");return t.listener!==null&&t.listener(\"close\",t),t.tag!==null||t.anchor!==null||E}function F9e(t){var e=t.position,r,s,a,n=!1,c;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};(c=t.input.charCodeAt(t.position))!==0&&(as(t,!0,-1),c=t.input.charCodeAt(t.position),!(t.lineIndent>0||c!==37));){for(n=!0,c=t.input.charCodeAt(++t.position),r=t.position;c!==0&&!rl(c);)c=t.input.charCodeAt(++t.position);for(s=t.input.slice(r,t.position),a=[],s.length<1&&Rr(t,\"directive name must not be less than one character in length\");c!==0;){for(;Qd(c);)c=t.input.charCodeAt(++t.position);if(c===35){do c=t.input.charCodeAt(++t.position);while(c!==0&&!jf(c));break}if(jf(c))break;for(r=t.position;c!==0&&!rl(c);)c=t.input.charCodeAt(++t.position);a.push(t.input.slice(r,t.position))}c!==0&&ZU(t),i0.call(Pte,s)?Pte[s](t,s,a):Ix(t,'unknown document directive \"'+s+'\"')}if(as(t,!0,-1),t.lineIndent===0&&t.input.charCodeAt(t.position)===45&&t.input.charCodeAt(t.position+1)===45&&t.input.charCodeAt(t.position+2)===45?(t.position+=3,as(t,!0,-1)):n&&Rr(t,\"directives end mark is expected\"),yE(t,t.lineIndent-1,Ex,!1,!0),as(t,!0,-1),t.checkLineBreaks&&y9e.test(t.input.slice(e,t.position))&&Ix(t,\"non-ASCII line breaks are interpreted as content\"),t.documents.push(t.result),t.position===t.lineStart&&Cx(t)){t.input.charCodeAt(t.position)===46&&(t.position+=3,as(t,!0,-1));return}if(t.position<t.length-1)Rr(t,\"end of the stream or a document separator is expected\");else return}function _te(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 v9e(t,e),s=t.indexOf(\"\\0\");for(s!==-1&&(r.position=s,Rr(r,\"null byte is not allowed in input\")),r.input+=\"\\0\";r.input.charCodeAt(r.position)===32;)r.lineIndent+=1,r.position+=1;for(;r.position<r.length-1;)F9e(r);return r.documents}function Hte(t,e,r){e!==null&&typeof e==\"object\"&&typeof r>\"u\"&&(r=e,e=null);var s=_te(t,r);if(typeof e!=\"function\")return s;for(var a=0,n=s.length;a<n;a+=1)e(s[a])}function jte(t,e){var r=_te(t,e);if(r.length!==0){if(r.length===1)return r[0];throw new Qte(\"expected a single document in the stream, but found more\")}}function N9e(t,e,r){return typeof e==\"object\"&&e!==null&&typeof r>\"u\"&&(r=e,e=null),Hte(t,e,Ip.extend({schema:Tte},r))}function O9e(t,e){return jte(t,Ip.extend({schema:Tte},e))}q2.exports.loadAll=Hte;q2.exports.load=jte;q2.exports.safeLoadAll=N9e;q2.exports.safeLoad=O9e});var Are=_((QQt,n_)=>{\"use strict\";var Y2=bd(),V2=pE(),L9e=G2(),M9e=gE(),Xte=Object.prototype.toString,Zte=Object.prototype.hasOwnProperty,U9e=9,W2=10,_9e=13,H9e=32,j9e=33,G9e=34,$te=35,q9e=37,W9e=38,Y9e=39,V9e=42,ere=44,J9e=45,tre=58,K9e=61,z9e=62,X9e=63,Z9e=64,rre=91,nre=93,$9e=96,ire=123,eWe=124,sre=125,_o={};_o[0]=\"\\\\0\";_o[7]=\"\\\\a\";_o[8]=\"\\\\b\";_o[9]=\"\\\\t\";_o[10]=\"\\\\n\";_o[11]=\"\\\\v\";_o[12]=\"\\\\f\";_o[13]=\"\\\\r\";_o[27]=\"\\\\e\";_o[34]='\\\\\"';_o[92]=\"\\\\\\\\\";_o[133]=\"\\\\N\";_o[160]=\"\\\\_\";_o[8232]=\"\\\\L\";_o[8233]=\"\\\\P\";var tWe=[\"y\",\"Y\",\"yes\",\"Yes\",\"YES\",\"on\",\"On\",\"ON\",\"n\",\"N\",\"no\",\"No\",\"NO\",\"off\",\"Off\",\"OFF\"];function rWe(t,e){var r,s,a,n,c,f,p;if(e===null)return{};for(r={},s=Object.keys(e),a=0,n=s.length;a<n;a+=1)c=s[a],f=String(e[c]),c.slice(0,2)===\"!!\"&&(c=\"tag:yaml.org,2002:\"+c.slice(2)),p=t.compiledTypeMap.fallback[c],p&&Zte.call(p.styleAliases,f)&&(f=p.styleAliases[f]),r[c]=f;return r}function qte(t){var e,r,s;if(e=t.toString(16).toUpperCase(),t<=255)r=\"x\",s=2;else if(t<=65535)r=\"u\",s=4;else if(t<=4294967295)r=\"U\",s=8;else throw new V2(\"code point within a string may not be greater than 0xFFFFFFFF\");return\"\\\\\"+r+Y2.repeat(\"0\",s-e.length)+e}function nWe(t){this.schema=t.schema||L9e,this.indent=Math.max(1,t.indent||2),this.noArrayIndent=t.noArrayIndent||!1,this.skipInvalid=t.skipInvalid||!1,this.flowLevel=Y2.isNothing(t.flowLevel)?-1:t.flowLevel,this.styleMap=rWe(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 Wte(t,e){for(var r=Y2.repeat(\" \",e),s=0,a=-1,n=\"\",c,f=t.length;s<f;)a=t.indexOf(`\n`,s),a===-1?(c=t.slice(s),s=f):(c=t.slice(s,a+1),s=a+1),c.length&&c!==`\n`&&(n+=r),n+=c;return n}function e_(t,e){return`\n`+Y2.repeat(\" \",t.indent*e)}function iWe(t,e){var r,s,a;for(r=0,s=t.implicitTypes.length;r<s;r+=1)if(a=t.implicitTypes[r],a.resolve(e))return!0;return!1}function r_(t){return t===H9e||t===U9e}function EE(t){return 32<=t&&t<=126||161<=t&&t<=55295&&t!==8232&&t!==8233||57344<=t&&t<=65533&&t!==65279||65536<=t&&t<=1114111}function sWe(t){return EE(t)&&!r_(t)&&t!==65279&&t!==_9e&&t!==W2}function Yte(t,e){return EE(t)&&t!==65279&&t!==ere&&t!==rre&&t!==nre&&t!==ire&&t!==sre&&t!==tre&&(t!==$te||e&&sWe(e))}function oWe(t){return EE(t)&&t!==65279&&!r_(t)&&t!==J9e&&t!==X9e&&t!==tre&&t!==ere&&t!==rre&&t!==nre&&t!==ire&&t!==sre&&t!==$te&&t!==W9e&&t!==V9e&&t!==j9e&&t!==eWe&&t!==K9e&&t!==z9e&&t!==Y9e&&t!==G9e&&t!==q9e&&t!==Z9e&&t!==$9e}function ore(t){var e=/^\\n* /;return e.test(t)}var are=1,lre=2,cre=3,ure=4,wx=5;function aWe(t,e,r,s,a){var n,c,f,p=!1,h=!1,E=s!==-1,C=-1,S=oWe(t.charCodeAt(0))&&!r_(t.charCodeAt(t.length-1));if(e)for(n=0;n<t.length;n++){if(c=t.charCodeAt(n),!EE(c))return wx;f=n>0?t.charCodeAt(n-1):null,S=S&&Yte(c,f)}else{for(n=0;n<t.length;n++){if(c=t.charCodeAt(n),c===W2)p=!0,E&&(h=h||n-C-1>s&&t[C+1]!==\" \",C=n);else if(!EE(c))return wx;f=n>0?t.charCodeAt(n-1):null,S=S&&Yte(c,f)}h=h||E&&n-C-1>s&&t[C+1]!==\" \"}return!p&&!h?S&&!a(t)?are:lre:r>9&&ore(t)?wx:h?ure:cre}function lWe(t,e,r,s){t.dump=function(){if(e.length===0)return\"''\";if(!t.noCompatMode&&tWe.indexOf(e)!==-1)return\"'\"+e+\"'\";var a=t.indent*Math.max(1,r),n=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-a),c=s||t.flowLevel>-1&&r>=t.flowLevel;function f(p){return iWe(t,p)}switch(aWe(e,c,t.indent,n,f)){case are:return e;case lre:return\"'\"+e.replace(/'/g,\"''\")+\"'\";case cre:return\"|\"+Vte(e,t.indent)+Jte(Wte(e,a));case ure:return\">\"+Vte(e,t.indent)+Jte(Wte(cWe(e,n),a));case wx:return'\"'+uWe(e,n)+'\"';default:throw new V2(\"impossible error: invalid scalar style\")}}()}function Vte(t,e){var r=ore(t)?String(e):\"\",s=t[t.length-1]===`\n`,a=s&&(t[t.length-2]===`\n`||t===`\n`),n=a?\"+\":s?\"\":\"-\";return r+n+`\n`}function Jte(t){return t[t.length-1]===`\n`?t.slice(0,-1):t}function cWe(t,e){for(var r=/(\\n+)([^\\n]*)/g,s=function(){var h=t.indexOf(`\n`);return h=h!==-1?h:t.length,r.lastIndex=h,Kte(t.slice(0,h),e)}(),a=t[0]===`\n`||t[0]===\" \",n,c;c=r.exec(t);){var f=c[1],p=c[2];n=p[0]===\" \",s+=f+(!a&&!n&&p!==\"\"?`\n`:\"\")+Kte(p,e),a=n}return s}function Kte(t,e){if(t===\"\"||t[0]===\" \")return t;for(var r=/ [^ ]/g,s,a=0,n,c=0,f=0,p=\"\";s=r.exec(t);)f=s.index,f-a>e&&(n=c>a?c:f,p+=`\n`+t.slice(a,n),a=n+1),c=f;return p+=`\n`,t.length-a>e&&c>a?p+=t.slice(a,c)+`\n`+t.slice(c+1):p+=t.slice(a),p.slice(1)}function uWe(t){for(var e=\"\",r,s,a,n=0;n<t.length;n++){if(r=t.charCodeAt(n),r>=55296&&r<=56319&&(s=t.charCodeAt(n+1),s>=56320&&s<=57343)){e+=qte((r-55296)*1024+s-56320+65536),n++;continue}a=_o[r],e+=!a&&EE(r)?t[n]:a||qte(r)}return e}function fWe(t,e,r){var s=\"\",a=t.tag,n,c;for(n=0,c=r.length;n<c;n+=1)Td(t,e,r[n],!1,!1)&&(n!==0&&(s+=\",\"+(t.condenseFlow?\"\":\" \")),s+=t.dump);t.tag=a,t.dump=\"[\"+s+\"]\"}function AWe(t,e,r,s){var a=\"\",n=t.tag,c,f;for(c=0,f=r.length;c<f;c+=1)Td(t,e+1,r[c],!0,!0)&&((!s||c!==0)&&(a+=e_(t,e)),t.dump&&W2===t.dump.charCodeAt(0)?a+=\"-\":a+=\"- \",a+=t.dump);t.tag=n,t.dump=a||\"[]\"}function pWe(t,e,r){var s=\"\",a=t.tag,n=Object.keys(r),c,f,p,h,E;for(c=0,f=n.length;c<f;c+=1)E=\"\",c!==0&&(E+=\", \"),t.condenseFlow&&(E+='\"'),p=n[c],h=r[p],Td(t,e,p,!1,!1)&&(t.dump.length>1024&&(E+=\"? \"),E+=t.dump+(t.condenseFlow?'\"':\"\")+\":\"+(t.condenseFlow?\"\":\" \"),Td(t,e,h,!1,!1)&&(E+=t.dump,s+=E));t.tag=a,t.dump=\"{\"+s+\"}\"}function hWe(t,e,r,s){var a=\"\",n=t.tag,c=Object.keys(r),f,p,h,E,C,S;if(t.sortKeys===!0)c.sort();else if(typeof t.sortKeys==\"function\")c.sort(t.sortKeys);else if(t.sortKeys)throw new V2(\"sortKeys must be a boolean or a function\");for(f=0,p=c.length;f<p;f+=1)S=\"\",(!s||f!==0)&&(S+=e_(t,e)),h=c[f],E=r[h],Td(t,e+1,h,!0,!0,!0)&&(C=t.tag!==null&&t.tag!==\"?\"||t.dump&&t.dump.length>1024,C&&(t.dump&&W2===t.dump.charCodeAt(0)?S+=\"?\":S+=\"? \"),S+=t.dump,C&&(S+=e_(t,e)),Td(t,e+1,E,!0,C)&&(t.dump&&W2===t.dump.charCodeAt(0)?S+=\":\":S+=\": \",S+=t.dump,a+=S));t.tag=n,t.dump=a||\"{}\"}function zte(t,e,r){var s,a,n,c,f,p;for(a=r?t.explicitTypes:t.implicitTypes,n=0,c=a.length;n<c;n+=1)if(f=a[n],(f.instanceOf||f.predicate)&&(!f.instanceOf||typeof e==\"object\"&&e instanceof f.instanceOf)&&(!f.predicate||f.predicate(e))){if(t.tag=r?f.tag:\"?\",f.represent){if(p=t.styleMap[f.tag]||f.defaultStyle,Xte.call(f.represent)===\"[object Function]\")s=f.represent(e,p);else if(Zte.call(f.represent,p))s=f.represent[p](e,p);else throw new V2(\"!<\"+f.tag+'> tag resolver accepts not \"'+p+'\" style');t.dump=s}return!0}return!1}function Td(t,e,r,s,a,n){t.tag=null,t.dump=r,zte(t,r,!1)||zte(t,r,!0);var c=Xte.call(t.dump);s&&(s=t.flowLevel<0||t.flowLevel>e);var f=c===\"[object Object]\"||c===\"[object Array]\",p,h;if(f&&(p=t.duplicates.indexOf(r),h=p!==-1),(t.tag!==null&&t.tag!==\"?\"||h||t.indent!==2&&e>0)&&(a=!1),h&&t.usedDuplicates[p])t.dump=\"*ref_\"+p;else{if(f&&h&&!t.usedDuplicates[p]&&(t.usedDuplicates[p]=!0),c===\"[object Object]\")s&&Object.keys(t.dump).length!==0?(hWe(t,e,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(pWe(t,e,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump));else if(c===\"[object Array]\"){var E=t.noArrayIndent&&e>0?e-1:e;s&&t.dump.length!==0?(AWe(t,E,t.dump,a),h&&(t.dump=\"&ref_\"+p+t.dump)):(fWe(t,E,t.dump),h&&(t.dump=\"&ref_\"+p+\" \"+t.dump))}else if(c===\"[object String]\")t.tag!==\"?\"&&lWe(t,t.dump,e,n);else{if(t.skipInvalid)return!1;throw new V2(\"unacceptable kind of an object to dump \"+c)}t.tag!==null&&t.tag!==\"?\"&&(t.dump=\"!<\"+t.tag+\"> \"+t.dump)}return!0}function gWe(t,e){var r=[],s=[],a,n;for(t_(t,r,s),a=0,n=s.length;a<n;a+=1)e.duplicates.push(r[s[a]]);e.usedDuplicates=new Array(n)}function t_(t,e,r){var s,a,n;if(t!==null&&typeof t==\"object\")if(a=e.indexOf(t),a!==-1)r.indexOf(a)===-1&&r.push(a);else if(e.push(t),Array.isArray(t))for(a=0,n=t.length;a<n;a+=1)t_(t[a],e,r);else for(s=Object.keys(t),a=0,n=s.length;a<n;a+=1)t_(t[s[a]],e,r)}function fre(t,e){e=e||{};var r=new nWe(e);return r.noRefs||gWe(t,r),Td(r,0,t,!0,!0)?r.dump+`\n`:\"\"}function dWe(t,e){return fre(t,Y2.extend({schema:M9e},e))}n_.exports.dump=fre;n_.exports.safeDump=dWe});var hre=_((TQt,Wi)=>{\"use strict\";var Bx=Gte(),pre=Are();function vx(t){return function(){throw new Error(\"Function \"+t+\" is deprecated and cannot be used.\")}}Wi.exports.Type=Ss();Wi.exports.Schema=Pd();Wi.exports.FAILSAFE_SCHEMA=dx();Wi.exports.JSON_SCHEMA=JU();Wi.exports.CORE_SCHEMA=KU();Wi.exports.DEFAULT_SAFE_SCHEMA=gE();Wi.exports.DEFAULT_FULL_SCHEMA=G2();Wi.exports.load=Bx.load;Wi.exports.loadAll=Bx.loadAll;Wi.exports.safeLoad=Bx.safeLoad;Wi.exports.safeLoadAll=Bx.safeLoadAll;Wi.exports.dump=pre.dump;Wi.exports.safeDump=pre.safeDump;Wi.exports.YAMLException=pE();Wi.exports.MINIMAL_SCHEMA=dx();Wi.exports.SAFE_SCHEMA=gE();Wi.exports.DEFAULT_SCHEMA=G2();Wi.exports.scan=vx(\"scan\");Wi.exports.parse=vx(\"parse\");Wi.exports.compose=vx(\"compose\");Wi.exports.addConstructor=vx(\"addConstructor\")});var dre=_((RQt,gre)=>{\"use strict\";var mWe=hre();gre.exports=mWe});var yre=_((FQt,mre)=>{\"use strict\";function yWe(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function Rd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Rd)}yWe(Rd,Error);Rd.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(t)+\" but \"+p(e)+\" found.\"};function EWe(t,e){e=e!==void 0?e:{};var r={},s={Start:lc},a=lc,n=function(te){return[].concat(...te)},c=\"-\",f=dn(\"-\",!1),p=function(te){return te},h=function(te){return Object.assign({},...te)},E=\"#\",C=dn(\"#\",!1),S=Au(),P=function(){return{}},I=\":\",R=dn(\":\",!1),N=function(te,Ee){return{[te]:Ee}},U=\",\",W=dn(\",\",!1),ee=function(te,Ee){return Ee},ie=function(te,Ee,Oe){return Object.assign({},...[te].concat(Ee).map(dt=>({[dt]:Oe})))},ue=function(te){return te},le=function(te){return te},me=Oa(\"correct indentation\"),pe=\" \",Be=dn(\" \",!1),Ce=function(te){return te.length===lr*St},g=function(te){return te.length===(lr+1)*St},we=function(){return lr++,!0},ye=function(){return lr--,!0},Ae=function(){return la()},se=Oa(\"pseudostring\"),Z=/^[^\\r\\n\\t ?:,\\][{}#&*!|>'\"%@`\\-]/,De=Kn([\"\\r\",`\n`,\"\t\",\" \",\"?\",\":\",\",\",\"]\",\"[\",\"{\",\"}\",\"#\",\"&\",\"*\",\"!\",\"|\",\">\",\"'\",'\"',\"%\",\"@\",\"`\",\"-\"],!0,!1),Re=/^[^\\r\\n\\t ,\\][{}:#\"']/,mt=Kn([\"\\r\",`\n`,\"\t\",\" \",\",\",\"]\",\"[\",\"{\",\"}\",\":\",\"#\",'\"',\"'\"],!0,!1),j=function(){return la().replace(/^ *| *$/g,\"\")},rt=\"--\",Fe=dn(\"--\",!1),Ne=/^[a-zA-Z\\/0-9]/,Pe=Kn([[\"a\",\"z\"],[\"A\",\"Z\"],\"/\",[\"0\",\"9\"]],!1,!1),Ve=/^[^\\r\\n\\t :,]/,ke=Kn([\"\\r\",`\n`,\"\t\",\" \",\":\",\",\"],!0,!1),it=\"null\",Ue=dn(\"null\",!1),x=function(){return null},w=\"true\",b=dn(\"true\",!1),y=function(){return!0},F=\"false\",z=dn(\"false\",!1),X=function(){return!1},$=Oa(\"string\"),oe='\"',xe=dn('\"',!1),Te=function(){return\"\"},lt=function(te){return te},Ct=function(te){return te.join(\"\")},qt=/^[^\"\\\\\\0-\\x1F\\x7F]/,ir=Kn(['\"',\"\\\\\",[\"\\0\",\"\u001f\"],\"\\x7F\"],!0,!1),Pt='\\\\\"',gn=dn('\\\\\"',!1),Pr=function(){return'\"'},Ir=\"\\\\\\\\\",Or=dn(\"\\\\\\\\\",!1),on=function(){return\"\\\\\"},ai=\"\\\\/\",Io=dn(\"\\\\/\",!1),rs=function(){return\"/\"},$s=\"\\\\b\",Co=dn(\"\\\\b\",!1),ji=function(){return\"\\b\"},eo=\"\\\\f\",wo=dn(\"\\\\f\",!1),QA=function(){return\"\\f\"},Af=\"\\\\n\",dh=dn(\"\\\\n\",!1),mh=function(){return`\n`},to=\"\\\\r\",jn=dn(\"\\\\r\",!1),Ts=function(){return\"\\r\"},ro=\"\\\\t\",ou=dn(\"\\\\t\",!1),au=function(){return\"\t\"},lu=\"\\\\u\",TA=dn(\"\\\\u\",!1),RA=function(te,Ee,Oe,dt){return String.fromCharCode(parseInt(`0x${te}${Ee}${Oe}${dt}`))},oa=/^[0-9a-fA-F]/,aa=Kn([[\"0\",\"9\"],[\"a\",\"f\"],[\"A\",\"F\"]],!1,!1),FA=Oa(\"blank space\"),gr=/^[ \\t]/,Bo=Kn([\" \",\"\t\"],!1,!1),Me=Oa(\"white space\"),cu=/^[ \\t\\n\\r]/,Cr=Kn([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),pf=`\\r\n`,NA=dn(`\\r\n`,!1),OA=`\n`,uu=dn(`\n`,!1),fu=\"\\r\",oc=dn(\"\\r\",!1),ve=0,Nt=0,ac=[{line:1,column:1}],Oi=0,no=[],Rt=0,xn;if(\"startRule\"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=s[e.startRule]}function la(){return t.substring(Nt,ve)}function Gi(){return Ma(Nt,ve)}function Li(te,Ee){throw Ee=Ee!==void 0?Ee:Ma(Nt,ve),hf([Oa(te)],t.substring(Nt,ve),Ee)}function Na(te,Ee){throw Ee=Ee!==void 0?Ee:Ma(Nt,ve),Ua(te,Ee)}function dn(te,Ee){return{type:\"literal\",text:te,ignoreCase:Ee}}function Kn(te,Ee,Oe){return{type:\"class\",parts:te,inverted:Ee,ignoreCase:Oe}}function Au(){return{type:\"any\"}}function yh(){return{type:\"end\"}}function Oa(te){return{type:\"other\",description:te}}function La(te){var Ee=ac[te],Oe;if(Ee)return Ee;for(Oe=te-1;!ac[Oe];)Oe--;for(Ee=ac[Oe],Ee={line:Ee.line,column:Ee.column};Oe<te;)t.charCodeAt(Oe)===10?(Ee.line++,Ee.column=1):Ee.column++,Oe++;return ac[te]=Ee,Ee}function Ma(te,Ee){var Oe=La(te),dt=La(Ee);return{start:{offset:te,line:Oe.line,column:Oe.column},end:{offset:Ee,line:dt.line,column:dt.column}}}function $e(te){ve<Oi||(ve>Oi&&(Oi=ve,no=[]),no.push(te))}function Ua(te,Ee){return new Rd(te,null,null,Ee)}function hf(te,Ee,Oe){return new Rd(Rd.buildMessage(te,Ee),te,Ee,Oe)}function lc(){var te;return te=LA(),te}function wn(){var te,Ee,Oe;for(te=ve,Ee=[],Oe=ca();Oe!==r;)Ee.push(Oe),Oe=ca();return Ee!==r&&(Nt=te,Ee=n(Ee)),te=Ee,te}function ca(){var te,Ee,Oe,dt,Et;return te=ve,Ee=Bl(),Ee!==r?(t.charCodeAt(ve)===45?(Oe=c,ve++):(Oe=r,Rt===0&&$e(f)),Oe!==r?(dt=Qn(),dt!==r?(Et=ua(),Et!==r?(Nt=te,Ee=p(Et),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te}function LA(){var te,Ee,Oe;for(te=ve,Ee=[],Oe=MA();Oe!==r;)Ee.push(Oe),Oe=MA();return Ee!==r&&(Nt=te,Ee=h(Ee)),te=Ee,te}function MA(){var te,Ee,Oe,dt,Et,bt,tr,An,li;if(te=ve,Ee=Qn(),Ee===r&&(Ee=null),Ee!==r){if(Oe=ve,t.charCodeAt(ve)===35?(dt=E,ve++):(dt=r,Rt===0&&$e(C)),dt!==r){if(Et=[],bt=ve,tr=ve,Rt++,An=st(),Rt--,An===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(An=t.charAt(ve),ve++):(An=r,Rt===0&&$e(S)),An!==r?(tr=[tr,An],bt=tr):(ve=bt,bt=r)):(ve=bt,bt=r),bt!==r)for(;bt!==r;)Et.push(bt),bt=ve,tr=ve,Rt++,An=st(),Rt--,An===r?tr=void 0:(ve=tr,tr=r),tr!==r?(t.length>ve?(An=t.charAt(ve),ve++):(An=r,Rt===0&&$e(S)),An!==r?(tr=[tr,An],bt=tr):(ve=bt,bt=r)):(ve=bt,bt=r);else Et=r;Et!==r?(dt=[dt,Et],Oe=dt):(ve=Oe,Oe=r)}else ve=Oe,Oe=r;if(Oe===r&&(Oe=null),Oe!==r){if(dt=[],Et=Ke(),Et!==r)for(;Et!==r;)dt.push(Et),Et=Ke();else dt=r;dt!==r?(Nt=te,Ee=P(),te=Ee):(ve=te,te=r)}else ve=te,te=r}else ve=te,te=r;if(te===r&&(te=ve,Ee=Bl(),Ee!==r?(Oe=Ha(),Oe!==r?(dt=Qn(),dt===r&&(dt=null),dt!==r?(t.charCodeAt(ve)===58?(Et=I,ve++):(Et=r,Rt===0&&$e(R)),Et!==r?(bt=Qn(),bt===r&&(bt=null),bt!==r?(tr=ua(),tr!==r?(Nt=te,Ee=N(Oe,tr),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r&&(te=ve,Ee=Bl(),Ee!==r?(Oe=ns(),Oe!==r?(dt=Qn(),dt===r&&(dt=null),dt!==r?(t.charCodeAt(ve)===58?(Et=I,ve++):(Et=r,Rt===0&&$e(R)),Et!==r?(bt=Qn(),bt===r&&(bt=null),bt!==r?(tr=ua(),tr!==r?(Nt=te,Ee=N(Oe,tr),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r))){if(te=ve,Ee=Bl(),Ee!==r)if(Oe=ns(),Oe!==r)if(dt=Qn(),dt!==r)if(Et=pu(),Et!==r){if(bt=[],tr=Ke(),tr!==r)for(;tr!==r;)bt.push(tr),tr=Ke();else bt=r;bt!==r?(Nt=te,Ee=N(Oe,Et),te=Ee):(ve=te,te=r)}else ve=te,te=r;else ve=te,te=r;else ve=te,te=r;else ve=te,te=r;if(te===r)if(te=ve,Ee=Bl(),Ee!==r)if(Oe=ns(),Oe!==r){if(dt=[],Et=ve,bt=Qn(),bt===r&&(bt=null),bt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Rt===0&&$e(W)),tr!==r?(An=Qn(),An===r&&(An=null),An!==r?(li=ns(),li!==r?(Nt=Et,bt=ee(Oe,li),Et=bt):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r),Et!==r)for(;Et!==r;)dt.push(Et),Et=ve,bt=Qn(),bt===r&&(bt=null),bt!==r?(t.charCodeAt(ve)===44?(tr=U,ve++):(tr=r,Rt===0&&$e(W)),tr!==r?(An=Qn(),An===r&&(An=null),An!==r?(li=ns(),li!==r?(Nt=Et,bt=ee(Oe,li),Et=bt):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r)):(ve=Et,Et=r);else dt=r;dt!==r?(Et=Qn(),Et===r&&(Et=null),Et!==r?(t.charCodeAt(ve)===58?(bt=I,ve++):(bt=r,Rt===0&&$e(R)),bt!==r?(tr=Qn(),tr===r&&(tr=null),tr!==r?(An=ua(),An!==r?(Nt=te,Ee=ie(Oe,dt,An),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)}else ve=te,te=r;else ve=te,te=r}return te}function ua(){var te,Ee,Oe,dt,Et,bt,tr;if(te=ve,Ee=ve,Rt++,Oe=ve,dt=st(),dt!==r?(Et=Mt(),Et!==r?(t.charCodeAt(ve)===45?(bt=c,ve++):(bt=r,Rt===0&&$e(f)),bt!==r?(tr=Qn(),tr!==r?(dt=[dt,Et,bt,tr],Oe=dt):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r)):(ve=Oe,Oe=r),Rt--,Oe!==r?(ve=Ee,Ee=void 0):Ee=r,Ee!==r?(Oe=Ke(),Oe!==r?(dt=kn(),dt!==r?(Et=wn(),Et!==r?(bt=fa(),bt!==r?(Nt=te,Ee=ue(Et),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r&&(te=ve,Ee=st(),Ee!==r?(Oe=kn(),Oe!==r?(dt=LA(),dt!==r?(Et=fa(),Et!==r?(Nt=te,Ee=ue(dt),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r),te===r))if(te=ve,Ee=cc(),Ee!==r){if(Oe=[],dt=Ke(),dt!==r)for(;dt!==r;)Oe.push(dt),dt=Ke();else Oe=r;Oe!==r?(Nt=te,Ee=le(Ee),te=Ee):(ve=te,te=r)}else ve=te,te=r;return te}function Bl(){var te,Ee,Oe;for(Rt++,te=ve,Ee=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&$e(Be));Oe!==r;)Ee.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&$e(Be));return Ee!==r?(Nt=ve,Oe=Ce(Ee),Oe?Oe=void 0:Oe=r,Oe!==r?(Ee=[Ee,Oe],te=Ee):(ve=te,te=r)):(ve=te,te=r),Rt--,te===r&&(Ee=r,Rt===0&&$e(me)),te}function Mt(){var te,Ee,Oe;for(te=ve,Ee=[],t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&$e(Be));Oe!==r;)Ee.push(Oe),t.charCodeAt(ve)===32?(Oe=pe,ve++):(Oe=r,Rt===0&&$e(Be));return Ee!==r?(Nt=ve,Oe=g(Ee),Oe?Oe=void 0:Oe=r,Oe!==r?(Ee=[Ee,Oe],te=Ee):(ve=te,te=r)):(ve=te,te=r),te}function kn(){var te;return Nt=ve,te=we(),te?te=void 0:te=r,te}function fa(){var te;return Nt=ve,te=ye(),te?te=void 0:te=r,te}function Ha(){var te;return te=vl(),te===r&&(te=uc()),te}function ns(){var te,Ee,Oe;if(te=vl(),te===r){if(te=ve,Ee=[],Oe=ja(),Oe!==r)for(;Oe!==r;)Ee.push(Oe),Oe=ja();else Ee=r;Ee!==r&&(Nt=te,Ee=Ae()),te=Ee}return te}function cc(){var te;return te=Mi(),te===r&&(te=Is(),te===r&&(te=vl(),te===r&&(te=uc()))),te}function pu(){var te;return te=Mi(),te===r&&(te=vl(),te===r&&(te=ja())),te}function uc(){var te,Ee,Oe,dt,Et,bt;if(Rt++,te=ve,Z.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(De)),Ee!==r){for(Oe=[],dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(Re.test(t.charAt(ve))?(bt=t.charAt(ve),ve++):(bt=r,Rt===0&&$e(mt)),bt!==r?(Et=[Et,bt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);dt!==r;)Oe.push(dt),dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(Re.test(t.charAt(ve))?(bt=t.charAt(ve),ve++):(bt=r,Rt===0&&$e(mt)),bt!==r?(Et=[Et,bt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);Oe!==r?(Nt=te,Ee=j(),te=Ee):(ve=te,te=r)}else ve=te,te=r;return Rt--,te===r&&(Ee=r,Rt===0&&$e(se)),te}function ja(){var te,Ee,Oe,dt,Et;if(te=ve,t.substr(ve,2)===rt?(Ee=rt,ve+=2):(Ee=r,Rt===0&&$e(Fe)),Ee===r&&(Ee=null),Ee!==r)if(Ne.test(t.charAt(ve))?(Oe=t.charAt(ve),ve++):(Oe=r,Rt===0&&$e(Pe)),Oe!==r){for(dt=[],Ve.test(t.charAt(ve))?(Et=t.charAt(ve),ve++):(Et=r,Rt===0&&$e(ke));Et!==r;)dt.push(Et),Ve.test(t.charAt(ve))?(Et=t.charAt(ve),ve++):(Et=r,Rt===0&&$e(ke));dt!==r?(Nt=te,Ee=j(),te=Ee):(ve=te,te=r)}else ve=te,te=r;else ve=te,te=r;return te}function Mi(){var te,Ee;return te=ve,t.substr(ve,4)===it?(Ee=it,ve+=4):(Ee=r,Rt===0&&$e(Ue)),Ee!==r&&(Nt=te,Ee=x()),te=Ee,te}function Is(){var te,Ee;return te=ve,t.substr(ve,4)===w?(Ee=w,ve+=4):(Ee=r,Rt===0&&$e(b)),Ee!==r&&(Nt=te,Ee=y()),te=Ee,te===r&&(te=ve,t.substr(ve,5)===F?(Ee=F,ve+=5):(Ee=r,Rt===0&&$e(z)),Ee!==r&&(Nt=te,Ee=X()),te=Ee),te}function vl(){var te,Ee,Oe,dt;return Rt++,te=ve,t.charCodeAt(ve)===34?(Ee=oe,ve++):(Ee=r,Rt===0&&$e(xe)),Ee!==r?(t.charCodeAt(ve)===34?(Oe=oe,ve++):(Oe=r,Rt===0&&$e(xe)),Oe!==r?(Nt=te,Ee=Te(),te=Ee):(ve=te,te=r)):(ve=te,te=r),te===r&&(te=ve,t.charCodeAt(ve)===34?(Ee=oe,ve++):(Ee=r,Rt===0&&$e(xe)),Ee!==r?(Oe=gf(),Oe!==r?(t.charCodeAt(ve)===34?(dt=oe,ve++):(dt=r,Rt===0&&$e(xe)),dt!==r?(Nt=te,Ee=lt(Oe),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)),Rt--,te===r&&(Ee=r,Rt===0&&$e($)),te}function gf(){var te,Ee,Oe;if(te=ve,Ee=[],Oe=fc(),Oe!==r)for(;Oe!==r;)Ee.push(Oe),Oe=fc();else Ee=r;return Ee!==r&&(Nt=te,Ee=Ct(Ee)),te=Ee,te}function fc(){var te,Ee,Oe,dt,Et,bt;return qt.test(t.charAt(ve))?(te=t.charAt(ve),ve++):(te=r,Rt===0&&$e(ir)),te===r&&(te=ve,t.substr(ve,2)===Pt?(Ee=Pt,ve+=2):(Ee=r,Rt===0&&$e(gn)),Ee!==r&&(Nt=te,Ee=Pr()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===Ir?(Ee=Ir,ve+=2):(Ee=r,Rt===0&&$e(Or)),Ee!==r&&(Nt=te,Ee=on()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===ai?(Ee=ai,ve+=2):(Ee=r,Rt===0&&$e(Io)),Ee!==r&&(Nt=te,Ee=rs()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===$s?(Ee=$s,ve+=2):(Ee=r,Rt===0&&$e(Co)),Ee!==r&&(Nt=te,Ee=ji()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===eo?(Ee=eo,ve+=2):(Ee=r,Rt===0&&$e(wo)),Ee!==r&&(Nt=te,Ee=QA()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===Af?(Ee=Af,ve+=2):(Ee=r,Rt===0&&$e(dh)),Ee!==r&&(Nt=te,Ee=mh()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===to?(Ee=to,ve+=2):(Ee=r,Rt===0&&$e(jn)),Ee!==r&&(Nt=te,Ee=Ts()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===ro?(Ee=ro,ve+=2):(Ee=r,Rt===0&&$e(ou)),Ee!==r&&(Nt=te,Ee=au()),te=Ee,te===r&&(te=ve,t.substr(ve,2)===lu?(Ee=lu,ve+=2):(Ee=r,Rt===0&&$e(TA)),Ee!==r?(Oe=wi(),Oe!==r?(dt=wi(),dt!==r?(Et=wi(),Et!==r?(bt=wi(),bt!==r?(Nt=te,Ee=RA(Oe,dt,Et,bt),te=Ee):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)):(ve=te,te=r)))))))))),te}function wi(){var te;return oa.test(t.charAt(ve))?(te=t.charAt(ve),ve++):(te=r,Rt===0&&$e(aa)),te}function Qn(){var te,Ee;if(Rt++,te=[],gr.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(Bo)),Ee!==r)for(;Ee!==r;)te.push(Ee),gr.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(Bo));else te=r;return Rt--,te===r&&(Ee=r,Rt===0&&$e(FA)),te}function Ac(){var te,Ee;if(Rt++,te=[],cu.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(Cr)),Ee!==r)for(;Ee!==r;)te.push(Ee),cu.test(t.charAt(ve))?(Ee=t.charAt(ve),ve++):(Ee=r,Rt===0&&$e(Cr));else te=r;return Rt--,te===r&&(Ee=r,Rt===0&&$e(Me)),te}function Ke(){var te,Ee,Oe,dt,Et,bt;if(te=ve,Ee=st(),Ee!==r){for(Oe=[],dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(bt=st(),bt!==r?(Et=[Et,bt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);dt!==r;)Oe.push(dt),dt=ve,Et=Qn(),Et===r&&(Et=null),Et!==r?(bt=st(),bt!==r?(Et=[Et,bt],dt=Et):(ve=dt,dt=r)):(ve=dt,dt=r);Oe!==r?(Ee=[Ee,Oe],te=Ee):(ve=te,te=r)}else ve=te,te=r;return te}function st(){var te;return t.substr(ve,2)===pf?(te=pf,ve+=2):(te=r,Rt===0&&$e(NA)),te===r&&(t.charCodeAt(ve)===10?(te=OA,ve++):(te=r,Rt===0&&$e(uu)),te===r&&(t.charCodeAt(ve)===13?(te=fu,ve++):(te=r,Rt===0&&$e(oc)))),te}let St=2,lr=0;if(xn=a(),xn!==r&&ve===t.length)return xn;throw xn!==r&&ve<t.length&&$e(yh()),hf(no,Oi<t.length?t.charAt(Oi):null,Oi<t.length?Ma(Oi,Oi+1):Ma(Oi,Oi))}mre.exports={SyntaxError:Rd,parse:EWe}});function Ire(t){return t.match(IWe)?t:JSON.stringify(t)}function wre(t){return typeof t>\"u\"?!0:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?Object.keys(t).every(e=>wre(t[e])):!1}function i_(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`${Ire(t)}\n`;if(Array.isArray(t)){if(t.length===0)return`[]\n`;let s=\"  \".repeat(e);return`\n${t.map(n=>`${s}- ${i_(n,e+1,!1)}`).join(\"\")}`}if(typeof t==\"object\"&&t){let[s,a]=t instanceof Sx?[t.data,!1]:[t,!0],n=\"  \".repeat(e),c=Object.keys(s);a&&c.sort((p,h)=>{let E=Ere.indexOf(p),C=Ere.indexOf(h);return E===-1&&C===-1?p<h?-1:p>h?1:0:E!==-1&&C===-1?-1:E===-1&&C!==-1?1:E-C});let f=c.filter(p=>!wre(s[p])).map((p,h)=>{let E=s[p],C=Ire(p),S=i_(E,e+1,!0),P=h>0||r?n:\"\",I=C.length>1024?`? ${C}\n${P}:`:`${C}:`,R=S.startsWith(`\n`)?S:` ${S}`;return`${P}${I}${R}`}).join(e===0?`\n`:\"\")||`\n`;return r?`\n${f}`:`${f}`}throw new Error(`Unsupported value type (${t})`)}function nl(t){try{let e=i_(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 CWe(t){return t.endsWith(`\n`)||(t+=`\n`),(0,Cre.parse)(t)}function BWe(t){if(wWe.test(t))return CWe(t);let e=(0,Dx.safeLoad)(t,{schema:Dx.FAILSAFE_SCHEMA,json:!0});if(e==null)return{};if(typeof e!=\"object\")throw new Error(`Expected an indexed object, got a ${typeof e} instead. Does your file follow Yaml's rules?`);if(Array.isArray(e))throw new Error(\"Expected an indexed object, got an array instead. Does your file follow Yaml's rules?\");return e}function ls(t){return BWe(t)}var Dx,Cre,IWe,Ere,Sx,wWe,Bre=Xe(()=>{Dx=ut(dre()),Cre=ut(yre()),IWe=/^(?![-?:,\\][{}#&*!|>'\"%@` \\t\\r\\n]).([ \\t]*(?![,\\][{}:# \\t\\r\\n]).)*$/,Ere=[\"__metadata\",\"version\",\"resolution\",\"dependencies\",\"peerDependencies\",\"dependenciesMeta\",\"peerDependenciesMeta\",\"binaries\"],Sx=class{constructor(e){this.data=e}};nl.PreserveOrdering=Sx;wWe=/^(#.*(\\r?\\n))*?#\\s+yarn\\s+lockfile\\s+v1\\r?\\n/i});var J2={};Vt(J2,{parseResolution:()=>px,parseShell:()=>ux,parseSyml:()=>ls,stringifyArgument:()=>qU,stringifyArgumentSegment:()=>WU,stringifyArithmeticExpression:()=>Ax,stringifyCommand:()=>GU,stringifyCommandChain:()=>AE,stringifyCommandChainThen:()=>jU,stringifyCommandLine:()=>fx,stringifyCommandLineThen:()=>HU,stringifyEnvSegment:()=>cx,stringifyRedirectArgument:()=>H2,stringifyResolution:()=>hx,stringifyShell:()=>fE,stringifyShellLine:()=>fE,stringifySyml:()=>nl,stringifyValueArgument:()=>vd});var wc=Xe(()=>{wee();Dee();Bre()});var Sre=_((UQt,s_)=>{\"use strict\";var vWe=t=>{let e=!1,r=!1,s=!1;for(let a=0;a<t.length;a++){let n=t[a];e&&/[a-zA-Z]/.test(n)&&n.toUpperCase()===n?(t=t.slice(0,a)+\"-\"+t.slice(a),e=!1,s=r,r=!0,a++):r&&s&&/[a-zA-Z]/.test(n)&&n.toLowerCase()===n?(t=t.slice(0,a-1)+\"-\"+t.slice(a-1),s=r,r=!1,e=!0):(e=n.toLowerCase()===n&&n.toUpperCase()!==n,s=r,r=n.toUpperCase()===n&&n.toLowerCase()!==n)}return t},vre=(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=vWe(t)),t=t.replace(/^[_.\\- ]+/,\"\").toLowerCase().replace(/[_.\\- ]+(\\w|$)/g,(a,n)=>n.toUpperCase()).replace(/\\d+(\\w|$)/g,a=>a.toUpperCase()),r(t))};s_.exports=vre;s_.exports.default=vre});var Dre=_((_Qt,SWe)=>{SWe.exports=[{name:\"Agola CI\",constant:\"AGOLA\",env:\"AGOLA_GIT_REF\",pr:\"AGOLA_PULL_REQUEST_ID\"},{name:\"Appcircle\",constant:\"APPCIRCLE\",env:\"AC_APPCIRCLE\"},{name:\"AppVeyor\",constant:\"APPVEYOR\",env:\"APPVEYOR\",pr:\"APPVEYOR_PULL_REQUEST_NUMBER\"},{name:\"AWS CodeBuild\",constant:\"CODEBUILD\",env:\"CODEBUILD_BUILD_ARN\"},{name:\"Azure Pipelines\",constant:\"AZURE_PIPELINES\",env:\"TF_BUILD\",pr:{BUILD_REASON:\"PullRequest\"}},{name:\"Bamboo\",constant:\"BAMBOO\",env:\"bamboo_planKey\"},{name:\"Bitbucket Pipelines\",constant:\"BITBUCKET\",env:\"BITBUCKET_COMMIT\",pr:\"BITBUCKET_PR_ID\"},{name:\"Bitrise\",constant:\"BITRISE\",env:\"BITRISE_IO\",pr:\"BITRISE_PULL_REQUEST\"},{name:\"Buddy\",constant:\"BUDDY\",env:\"BUDDY_WORKSPACE_ID\",pr:\"BUDDY_EXECUTION_PULL_REQUEST_ID\"},{name:\"Buildkite\",constant:\"BUILDKITE\",env:\"BUILDKITE\",pr:{env:\"BUILDKITE_PULL_REQUEST\",ne:\"false\"}},{name:\"CircleCI\",constant:\"CIRCLE\",env:\"CIRCLECI\",pr:\"CIRCLE_PULL_REQUEST\"},{name:\"Cirrus CI\",constant:\"CIRRUS\",env:\"CIRRUS_CI\",pr:\"CIRRUS_PR\"},{name:\"Codefresh\",constant:\"CODEFRESH\",env:\"CF_BUILD_ID\",pr:{any:[\"CF_PULL_REQUEST_NUMBER\",\"CF_PULL_REQUEST_ID\"]}},{name:\"Codemagic\",constant:\"CODEMAGIC\",env:\"CM_BUILD_ID\",pr:\"CM_PULL_REQUEST\"},{name:\"Codeship\",constant:\"CODESHIP\",env:{CI_NAME:\"codeship\"}},{name:\"Drone\",constant:\"DRONE\",env:\"DRONE\",pr:{DRONE_BUILD_EVENT:\"pull_request\"}},{name:\"dsari\",constant:\"DSARI\",env:\"DSARI\"},{name:\"Earthly\",constant:\"EARTHLY\",env:\"EARTHLY_CI\"},{name:\"Expo Application Services\",constant:\"EAS\",env:\"EAS_BUILD\"},{name:\"Gerrit\",constant:\"GERRIT\",env:\"GERRIT_PROJECT\"},{name:\"Gitea Actions\",constant:\"GITEA_ACTIONS\",env:\"GITEA_ACTIONS\"},{name:\"GitHub Actions\",constant:\"GITHUB_ACTIONS\",env:\"GITHUB_ACTIONS\",pr:{GITHUB_EVENT_NAME:\"pull_request\"}},{name:\"GitLab CI\",constant:\"GITLAB\",env:\"GITLAB_CI\",pr:\"CI_MERGE_REQUEST_ID\"},{name:\"GoCD\",constant:\"GOCD\",env:\"GO_PIPELINE_LABEL\"},{name:\"Google Cloud Build\",constant:\"GOOGLE_CLOUD_BUILD\",env:\"BUILDER_OUTPUT\"},{name:\"Harness CI\",constant:\"HARNESS\",env:\"HARNESS_BUILD_ID\"},{name:\"Heroku\",constant:\"HEROKU\",env:{env:\"NODE\",includes:\"/app/.heroku/node/bin/node\"}},{name:\"Hudson\",constant:\"HUDSON\",env:\"HUDSON_URL\"},{name:\"Jenkins\",constant:\"JENKINS\",env:[\"JENKINS_URL\",\"BUILD_ID\"],pr:{any:[\"ghprbPullId\",\"CHANGE_ID\"]}},{name:\"LayerCI\",constant:\"LAYERCI\",env:\"LAYERCI\",pr:\"LAYERCI_PULL_REQUEST\"},{name:\"Magnum CI\",constant:\"MAGNUM\",env:\"MAGNUM\"},{name:\"Netlify CI\",constant:\"NETLIFY\",env:\"NETLIFY\",pr:{env:\"PULL_REQUEST\",ne:\"false\"}},{name:\"Nevercode\",constant:\"NEVERCODE\",env:\"NEVERCODE\",pr:{env:\"NEVERCODE_PULL_REQUEST\",ne:\"false\"}},{name:\"Prow\",constant:\"PROW\",env:\"PROW_JOB_ID\"},{name:\"ReleaseHub\",constant:\"RELEASEHUB\",env:\"RELEASE_BUILD_ID\"},{name:\"Render\",constant:\"RENDER\",env:\"RENDER\",pr:{IS_PULL_REQUEST:\"true\"}},{name:\"Sail CI\",constant:\"SAIL\",env:\"SAILCI\",pr:\"SAIL_PULL_REQUEST_NUMBER\"},{name:\"Screwdriver\",constant:\"SCREWDRIVER\",env:\"SCREWDRIVER\",pr:{env:\"SD_PULL_REQUEST\",ne:\"false\"}},{name:\"Semaphore\",constant:\"SEMAPHORE\",env:\"SEMAPHORE\",pr:\"PULL_REQUEST_NUMBER\"},{name:\"Sourcehut\",constant:\"SOURCEHUT\",env:{CI_NAME:\"sourcehut\"}},{name:\"Strider CD\",constant:\"STRIDER\",env:\"STRIDER\"},{name:\"TaskCluster\",constant:\"TASKCLUSTER\",env:[\"TASK_ID\",\"RUN_ID\"]},{name:\"TeamCity\",constant:\"TEAMCITY\",env:\"TEAMCITY_VERSION\"},{name:\"Travis CI\",constant:\"TRAVIS\",env:\"TRAVIS\",pr:{env:\"TRAVIS_PULL_REQUEST\",ne:\"false\"}},{name:\"Vela\",constant:\"VELA\",env:\"VELA\",pr:{VELA_PULL_REQUEST:\"1\"}},{name:\"Vercel\",constant:\"VERCEL\",env:{any:[\"NOW_BUILDER\",\"VERCEL\"]},pr:\"VERCEL_GIT_PULL_REQUEST_ID\"},{name:\"Visual Studio App Center\",constant:\"APPCENTER\",env:\"APPCENTER_BUILD_ID\"},{name:\"Woodpecker\",constant:\"WOODPECKER\",env:{CI:\"woodpecker\"},pr:{CI_BUILD_EVENT:\"pull_request\"}},{name:\"Xcode Cloud\",constant:\"XCODE_CLOUD\",env:\"CI_XCODE_PROJECT\",pr:\"CI_PULL_REQUEST_NUMBER\"},{name:\"Xcode Server\",constant:\"XCODE_SERVER\",env:\"XCS\"}]});var Fd=_(Ml=>{\"use strict\";var Pre=Dre(),Ds=process.env;Object.defineProperty(Ml,\"_vendors\",{value:Pre.map(function(t){return t.constant})});Ml.name=null;Ml.isPR=null;Pre.forEach(function(t){let r=(Array.isArray(t.env)?t.env:[t.env]).every(function(s){return bre(s)});if(Ml[t.constant]=r,!!r)switch(Ml.name=t.name,typeof t.pr){case\"string\":Ml.isPR=!!Ds[t.pr];break;case\"object\":\"env\"in t.pr?Ml.isPR=t.pr.env in Ds&&Ds[t.pr.env]!==t.pr.ne:\"any\"in t.pr?Ml.isPR=t.pr.any.some(function(s){return!!Ds[s]}):Ml.isPR=bre(t.pr);break;default:Ml.isPR=null}});Ml.isCI=!!(Ds.CI!==\"false\"&&(Ds.BUILD_ID||Ds.BUILD_NUMBER||Ds.CI||Ds.CI_APP_ID||Ds.CI_BUILD_ID||Ds.CI_BUILD_NUMBER||Ds.CI_NAME||Ds.CONTINUOUS_INTEGRATION||Ds.RUN_ID||Ml.name));function bre(t){return typeof t==\"string\"?!!Ds[t]:\"env\"in t?Ds[t.env]&&Ds[t.env].includes(t.includes):\"any\"in t?t.any.some(function(e){return!!Ds[e]}):Object.keys(t).every(function(e){return Ds[e]===t[e]})}});var ei,En,Nd,o_,bx,xre,a_,l_,Px=Xe(()=>{(function(t){t.StartOfInput=\"\\0\",t.EndOfInput=\"\u0001\",t.EndOfPartialInput=\"\u0002\"})(ei||(ei={}));(function(t){t[t.InitialNode=0]=\"InitialNode\",t[t.SuccessNode=1]=\"SuccessNode\",t[t.ErrorNode=2]=\"ErrorNode\",t[t.CustomNode=3]=\"CustomNode\"})(En||(En={}));Nd=-1,o_=/^(-h|--help)(?:=([0-9]+))?$/,bx=/^(--[a-z]+(?:-[a-z]+)*|-[a-zA-Z]+)$/,xre=/^-[a-zA-Z]{2,}$/,a_=/^([^=]+)=([\\s\\S]*)$/,l_=process.env.DEBUG_CLI===\"1\"});var nt,IE,xx,c_,kx=Xe(()=>{Px();nt=class extends Error{constructor(e){super(e),this.clipanion={type:\"usage\"},this.name=\"UsageError\"}},IE=class extends Error{constructor(e,r){if(super(),this.input=e,this.candidates=r,this.clipanion={type:\"none\"},this.name=\"UnknownSyntaxError\",this.candidates.length===0)this.message=\"Command not found, but we're not sure what's the alternative.\";else if(this.candidates.every(s=>s.reason!==null&&s.reason===r[0].reason)){let[{reason:s}]=this.candidates;this.message=`${s}\n\n${this.candidates.map(({usage:a})=>`$ ${a}`).join(`\n`)}`}else if(this.candidates.length===1){let[{usage:s}]=this.candidates;this.message=`Command not found; did you mean:\n\n$ ${s}\n${c_(e)}`}else this.message=`Command not found; did you mean one of:\n\n${this.candidates.map(({usage:s},a)=>`${`${a}.`.padStart(4)} ${s}`).join(`\n`)}\n\n${c_(e)}`}},xx=class extends Error{constructor(e,r){super(),this.input=e,this.usages=r,this.clipanion={type:\"none\"},this.name=\"AmbiguousSyntaxError\",this.message=`Cannot find which to pick amongst the following alternatives:\n\n${this.usages.map((s,a)=>`${`${a}.`.padStart(4)} ${s}`).join(`\n`)}\n\n${c_(e)}`}},c_=t=>`While running ${t.filter(e=>e!==ei.EndOfInput&&e!==ei.EndOfPartialInput).map(e=>{let r=JSON.stringify(e);return e.match(/\\s/)||e.length===0||r!==`\"${e}\"`?r:e}).join(\" \")}`});function DWe(t){let e=t.split(`\n`),r=e.filter(a=>a.match(/\\S/)),s=r.length>0?r.reduce((a,n)=>Math.min(a,n.length-n.trimStart().length),Number.MAX_VALUE):0;return e.map(a=>a.slice(s).trimRight()).join(`\n`)}function Ho(t,{format:e,paragraphs:r}){return t=t.replace(/\\r\\n?/g,`\n`),t=DWe(t),t=t.replace(/^\\n+|\\n+$/g,\"\"),t=t.replace(/^(\\s*)-([^\\n]*?)\\n+/gm,`$1-$2\n\n`),t=t.replace(/\\n(\\n)?\\n*/g,(s,a)=>a||\" \"),r&&(t=t.split(/\\n/).map(s=>{let a=s.match(/^\\s*[*-][\\t ]+(.*)/);if(!a)return s.match(/(.{1,80})(?: |$)/g).join(`\n`);let n=s.length-s.trimStart().length;return a[1].match(new RegExp(`(.{1,${78-n}})(?: |$)`,\"g\")).map((c,f)=>\" \".repeat(n)+(f===0?\"- \":\"  \")+c).join(`\n`)}).join(`\n\n`)),t=t.replace(/(`+)((?:.|[\\n])*?)\\1/g,(s,a,n)=>e.code(a+n+a)),t=t.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(s,a,n)=>e.bold(a+n+a)),t?`${t}\n`:\"\"}var u_,kre,Qre,f_=Xe(()=>{u_=Array(80).fill(\"\\u2501\");for(let t=0;t<=24;++t)u_[u_.length-t]=`\\x1B[38;5;${232+t}m\\u2501`;kre={header:t=>`\\x1B[1m\\u2501\\u2501\\u2501 ${t}${t.length<75?` ${u_.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`},Qre={header:t=>t,bold:t=>t,error:t=>t,code:t=>t}});function ya(t){return{...t,[K2]:!0}}function Gf(t,e){return typeof t>\"u\"?[t,e]:typeof t==\"object\"&&t!==null&&!Array.isArray(t)?[void 0,t]:[t,e]}function Qx(t,{mergeName:e=!1}={}){let r=t.match(/^([^:]+): (.*)$/m);if(!r)return\"validation failed\";let[,s,a]=r;return e&&(a=a[0].toLowerCase()+a.slice(1)),a=s!==\".\"||!e?`${s.replace(/^\\.(\\[|$)/,\"$1\")}: ${a}`:`: ${a}`,a}function z2(t,e){return e.length===1?new nt(`${t}${Qx(e[0],{mergeName:!0})}`):new nt(`${t}:\n${e.map(r=>`\n- ${Qx(r)}`).join(\"\")}`)}function Od(t,e,r){if(typeof r>\"u\")return e;let s=[],a=[],n=f=>{let p=e;return e=f,n.bind(null,p)};if(!r(e,{errors:s,coercions:a,coercion:n}))throw z2(`Invalid value for ${t}`,s);for(let[,f]of a)f();return e}var K2,Cp=Xe(()=>{kx();K2=Symbol(\"clipanion/isOption\")});var Ea={};Vt(Ea,{KeyRelationship:()=>qf,TypeAssertionError:()=>o0,applyCascade:()=>$2,as:()=>WWe,assert:()=>jWe,assertWithErrors:()=>GWe,cascade:()=>Nx,fn:()=>YWe,hasAtLeastOneKey:()=>y_,hasExactLength:()=>Ore,hasForbiddenKeys:()=>fYe,hasKeyRelationship:()=>tB,hasMaxLength:()=>JWe,hasMinLength:()=>VWe,hasMutuallyExclusiveKeys:()=>AYe,hasRequiredKeys:()=>uYe,hasUniqueItems:()=>KWe,isArray:()=>Tx,isAtLeast:()=>d_,isAtMost:()=>ZWe,isBase64:()=>oYe,isBoolean:()=>FWe,isDate:()=>OWe,isDict:()=>UWe,isEnum:()=>fo,isHexColor:()=>sYe,isISO8601:()=>iYe,isInExclusiveRange:()=>eYe,isInInclusiveRange:()=>$We,isInstanceOf:()=>HWe,isInteger:()=>m_,isJSON:()=>aYe,isLiteral:()=>Rre,isLowerCase:()=>tYe,isMap:()=>MWe,isNegative:()=>zWe,isNullable:()=>cYe,isNumber:()=>h_,isObject:()=>Fre,isOneOf:()=>g_,isOptional:()=>lYe,isPartial:()=>_We,isPayload:()=>NWe,isPositive:()=>XWe,isRecord:()=>Fx,isSet:()=>LWe,isString:()=>wE,isTuple:()=>Rx,isUUID4:()=>nYe,isUnknown:()=>p_,isUpperCase:()=>rYe,makeTrait:()=>Nre,makeValidator:()=>Wr,matchesRegExp:()=>Z2,softAssert:()=>qWe});function ti(t){return t===null?\"null\":t===void 0?\"undefined\":t===\"\"?\"an empty string\":typeof t==\"symbol\"?`<${t.toString()}>`:Array.isArray(t)?\"an array\":JSON.stringify(t)}function CE(t,e){if(t.length===0)return\"nothing\";if(t.length===1)return ti(t[0]);let r=t.slice(0,-1),s=t[t.length-1],a=t.length>2?`, ${e} `:` ${e} `;return`${r.map(n=>ti(n)).join(\", \")}${a}${ti(s)}`}function s0(t,e){var r,s,a;return typeof e==\"number\"?`${(r=t?.p)!==null&&r!==void 0?r:\".\"}[${e}]`:bWe.test(e)?`${(s=t?.p)!==null&&s!==void 0?s:\"\"}.${e}`:`${(a=t?.p)!==null&&a!==void 0?a:\".\"}[${JSON.stringify(e)}]`}function A_(t,e,r){return t===1?e:r}function mr({errors:t,p:e}={},r){return t?.push(`${e??\".\"}: ${r}`),!1}function TWe(t,e){return r=>{t[e]=r}}function Wf(t,e){return r=>{let s=t[e];return t[e]=r,Wf(t,e).bind(null,s)}}function X2(t,e,r){let s=()=>(t(r()),a),a=()=>(t(e),s);return s}function p_(){return Wr({test:(t,e)=>!0})}function Rre(t){return Wr({test:(e,r)=>e!==t?mr(r,`Expected ${ti(t)} (got ${ti(e)})`):!0})}function wE(){return Wr({test:(t,e)=>typeof t!=\"string\"?mr(e,`Expected a string (got ${ti(t)})`):!0})}function fo(t){let e=Array.isArray(t)?t:Object.values(t),r=e.every(a=>typeof a==\"string\"||typeof a==\"number\"),s=new Set(e);return s.size===1?Rre([...s][0]):Wr({test:(a,n)=>s.has(a)?!0:r?mr(n,`Expected one of ${CE(e,\"or\")} (got ${ti(a)})`):mr(n,`Expected a valid enumeration value (got ${ti(a)})`)})}function FWe(){return Wr({test:(t,e)=>{var r;if(typeof t!=\"boolean\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return mr(e,\"Unbound coercion result\");let s=RWe.get(t);if(typeof s<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a boolean (got ${ti(t)})`)}return!0}})}function h_(){return Wr({test:(t,e)=>{var r;if(typeof t!=\"number\"){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return mr(e,\"Unbound coercion result\");let s;if(typeof t==\"string\"){let a;try{a=JSON.parse(t)}catch{}if(typeof a==\"number\")if(JSON.stringify(a)===t)s=a;else return mr(e,`Received a number that can't be safely represented by the runtime (${t})`)}if(typeof s<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a number (got ${ti(t)})`)}return!0}})}function NWe(t){return Wr({test:(e,r)=>{var s;if(typeof r?.coercions>\"u\")return mr(r,\"The isPayload predicate can only be used with coercion enabled\");if(typeof r.coercion>\"u\")return mr(r,\"Unbound coercion result\");if(typeof e!=\"string\")return mr(r,`Expected a string (got ${ti(e)})`);let a;try{a=JSON.parse(e)}catch{return mr(r,`Expected a JSON string (got ${ti(e)})`)}let n={value:a};return t(a,Object.assign(Object.assign({},r),{coercion:Wf(n,\"value\")}))?(r.coercions.push([(s=r.p)!==null&&s!==void 0?s:\".\",r.coercion.bind(null,n.value)]),!0):!1}})}function OWe(){return Wr({test:(t,e)=>{var r;if(!(t instanceof Date)){if(typeof e?.coercions<\"u\"){if(typeof e?.coercion>\"u\")return mr(e,\"Unbound coercion result\");let s;if(typeof t==\"string\"&&Tre.test(t))s=new Date(t);else{let a;if(typeof t==\"string\"){let n;try{n=JSON.parse(t)}catch{}typeof n==\"number\"&&(a=n)}else typeof t==\"number\"&&(a=t);if(typeof a<\"u\")if(Number.isSafeInteger(a)||!Number.isSafeInteger(a*1e3))s=new Date(a*1e3);else return mr(e,`Received a timestamp that can't be safely represented by the runtime (${t})`)}if(typeof s<\"u\")return e.coercions.push([(r=e.p)!==null&&r!==void 0?r:\".\",e.coercion.bind(null,s)]),!0}return mr(e,`Expected a date (got ${ti(t)})`)}return!0}})}function Tx(t,{delimiter:e}={}){return Wr({test:(r,s)=>{var a;let n=r;if(typeof r==\"string\"&&typeof e<\"u\"&&typeof s?.coercions<\"u\"){if(typeof s?.coercion>\"u\")return mr(s,\"Unbound coercion result\");r=r.split(e)}if(!Array.isArray(r))return mr(s,`Expected an array (got ${ti(r)})`);let c=!0;for(let f=0,p=r.length;f<p&&(c=t(r[f],Object.assign(Object.assign({},s),{p:s0(s,f),coercion:Wf(r,f)}))&&c,!(!c&&s?.errors==null));++f);return r!==n&&s.coercions.push([(a=s.p)!==null&&a!==void 0?a:\".\",s.coercion.bind(null,r)]),c}})}function LWe(t,{delimiter:e}={}){let r=Tx(t,{delimiter:e});return Wr({test:(s,a)=>{var n,c;if(Object.getPrototypeOf(s).toString()===\"[object Set]\")if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");let f=[...s],p=[...s];if(!r(p,Object.assign(Object.assign({},a),{coercion:void 0})))return!1;let h=()=>p.some((E,C)=>E!==f[C])?new Set(p):s;return a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",X2(a.coercion,s,h)]),!0}else{let f=!0;for(let p of s)if(f=t(p,Object.assign({},a))&&f,!f&&a?.errors==null)break;return f}if(typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");let f={value:s};return r(s,Object.assign(Object.assign({},a),{coercion:Wf(f,\"value\")}))?(a.coercions.push([(c=a.p)!==null&&c!==void 0?c:\".\",X2(a.coercion,s,()=>new Set(f.value))]),!0):!1}return mr(a,`Expected a set (got ${ti(s)})`)}})}function MWe(t,e){let r=Tx(Rx([t,e])),s=Fx(e,{keys:t});return Wr({test:(a,n)=>{var c,f,p;if(Object.getPrototypeOf(a).toString()===\"[object Map]\")if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return mr(n,\"Unbound coercion result\");let h=[...a],E=[...a];if(!r(E,Object.assign(Object.assign({},n),{coercion:void 0})))return!1;let C=()=>E.some((S,P)=>S[0]!==h[P][0]||S[1]!==h[P][1])?new Map(E):a;return n.coercions.push([(c=n.p)!==null&&c!==void 0?c:\".\",X2(n.coercion,a,C)]),!0}else{let h=!0;for(let[E,C]of a)if(h=t(E,Object.assign({},n))&&h,!h&&n?.errors==null||(h=e(C,Object.assign(Object.assign({},n),{p:s0(n,E)}))&&h,!h&&n?.errors==null))break;return h}if(typeof n?.coercions<\"u\"){if(typeof n?.coercion>\"u\")return mr(n,\"Unbound coercion result\");let h={value:a};return Array.isArray(a)?r(a,Object.assign(Object.assign({},n),{coercion:void 0}))?(n.coercions.push([(f=n.p)!==null&&f!==void 0?f:\".\",X2(n.coercion,a,()=>new Map(h.value))]),!0):!1:s(a,Object.assign(Object.assign({},n),{coercion:Wf(h,\"value\")}))?(n.coercions.push([(p=n.p)!==null&&p!==void 0?p:\".\",X2(n.coercion,a,()=>new Map(Object.entries(h.value)))]),!0):!1}return mr(n,`Expected a map (got ${ti(a)})`)}})}function Rx(t,{delimiter:e}={}){let r=Ore(t.length);return Wr({test:(s,a)=>{var n;if(typeof s==\"string\"&&typeof e<\"u\"&&typeof a?.coercions<\"u\"){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");s=s.split(e),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,s)])}if(!Array.isArray(s))return mr(a,`Expected a tuple (got ${ti(s)})`);let c=r(s,Object.assign({},a));for(let f=0,p=s.length;f<p&&f<t.length&&(c=t[f](s[f],Object.assign(Object.assign({},a),{p:s0(a,f),coercion:Wf(s,f)}))&&c,!(!c&&a?.errors==null));++f);return c}})}function Fx(t,{keys:e=null}={}){let r=Tx(Rx([e??wE(),t]));return Wr({test:(s,a)=>{var n;if(Array.isArray(s)&&typeof a?.coercions<\"u\")return typeof a?.coercion>\"u\"?mr(a,\"Unbound coercion result\"):r(s,Object.assign(Object.assign({},a),{coercion:void 0}))?(s=Object.fromEntries(s),a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,s)]),!0):!1;if(typeof s!=\"object\"||s===null)return mr(a,`Expected an object (got ${ti(s)})`);let c=Object.keys(s),f=!0;for(let p=0,h=c.length;p<h&&(f||a?.errors!=null);++p){let E=c[p],C=s[E];if(E===\"__proto__\"||E===\"constructor\"){f=mr(Object.assign(Object.assign({},a),{p:s0(a,E)}),\"Unsafe property name\");continue}if(e!==null&&!e(E,a)){f=!1;continue}if(!t(C,Object.assign(Object.assign({},a),{p:s0(a,E),coercion:Wf(s,E)}))){f=!1;continue}}return f}})}function UWe(t,e={}){return Fx(t,e)}function Fre(t,{extra:e=null}={}){let r=Object.keys(t),s=Wr({test:(a,n)=>{if(typeof a!=\"object\"||a===null)return mr(n,`Expected an object (got ${ti(a)})`);let c=new Set([...r,...Object.keys(a)]),f={},p=!0;for(let h of c){if(h===\"constructor\"||h===\"__proto__\")p=mr(Object.assign(Object.assign({},n),{p:s0(n,h)}),\"Unsafe property name\");else{let E=Object.prototype.hasOwnProperty.call(t,h)?t[h]:void 0,C=Object.prototype.hasOwnProperty.call(a,h)?a[h]:void 0;typeof E<\"u\"?p=E(C,Object.assign(Object.assign({},n),{p:s0(n,h),coercion:Wf(a,h)}))&&p:e===null?p=mr(Object.assign(Object.assign({},n),{p:s0(n,h)}),`Extraneous property (got ${ti(C)})`):Object.defineProperty(f,h,{enumerable:!0,get:()=>C,set:TWe(a,h)})}if(!p&&n?.errors==null)break}return e!==null&&(p||n?.errors!=null)&&(p=e(f,n)&&p),p}});return Object.assign(s,{properties:t})}function _We(t){return Fre(t,{extra:Fx(p_())})}function Nre(t){return()=>t}function Wr({test:t}){return Nre(t)()}function jWe(t,e){if(!e(t))throw new o0}function GWe(t,e){let r=[];if(!e(t,{errors:r}))throw new o0({errors:r})}function qWe(t,e){}function WWe(t,e,{coerce:r=!1,errors:s,throw:a}={}){let n=s?[]:void 0;if(!r){if(e(t,{errors:n}))return a?t:{value:t,errors:void 0};if(a)throw new o0({errors:n});return{value:void 0,errors:n??!0}}let c={value:t},f=Wf(c,\"value\"),p=[];if(!e(t,{errors:n,coercion:f,coercions:p})){if(a)throw new o0({errors:n});return{value:void 0,errors:n??!0}}for(let[,h]of p)h();return a?c.value:{value:c.value,errors:void 0}}function YWe(t,e){let r=Rx(t);return(...s)=>{if(!r(s))throw new o0;return e(...s)}}function VWe(t){return Wr({test:(e,r)=>e.length>=t?!0:mr(r,`Expected to have a length of at least ${t} elements (got ${e.length})`)})}function JWe(t){return Wr({test:(e,r)=>e.length<=t?!0:mr(r,`Expected to have a length of at most ${t} elements (got ${e.length})`)})}function Ore(t){return Wr({test:(e,r)=>e.length!==t?mr(r,`Expected to have a length of exactly ${t} elements (got ${e.length})`):!0})}function KWe({map:t}={}){return Wr({test:(e,r)=>{let s=new Set,a=new Set;for(let n=0,c=e.length;n<c;++n){let f=e[n],p=typeof t<\"u\"?t(f):f;if(s.has(p)){if(a.has(p))continue;mr(r,`Expected to contain unique elements; got a duplicate with ${ti(e)}`),a.add(p)}else s.add(p)}return a.size===0}})}function zWe(){return Wr({test:(t,e)=>t<=0?!0:mr(e,`Expected to be negative (got ${t})`)})}function XWe(){return Wr({test:(t,e)=>t>=0?!0:mr(e,`Expected to be positive (got ${t})`)})}function d_(t){return Wr({test:(e,r)=>e>=t?!0:mr(r,`Expected to be at least ${t} (got ${e})`)})}function ZWe(t){return Wr({test:(e,r)=>e<=t?!0:mr(r,`Expected to be at most ${t} (got ${e})`)})}function $We(t,e){return Wr({test:(r,s)=>r>=t&&r<=e?!0:mr(s,`Expected to be in the [${t}; ${e}] range (got ${r})`)})}function eYe(t,e){return Wr({test:(r,s)=>r>=t&&r<e?!0:mr(s,`Expected to be in the [${t}; ${e}[ range (got ${r})`)})}function m_({unsafe:t=!1}={}){return Wr({test:(e,r)=>e!==Math.round(e)?mr(r,`Expected to be an integer (got ${e})`):!t&&!Number.isSafeInteger(e)?mr(r,`Expected to be a safe integer (got ${e})`):!0})}function Z2(t){return Wr({test:(e,r)=>t.test(e)?!0:mr(r,`Expected to match the pattern ${t.toString()} (got ${ti(e)})`)})}function tYe(){return Wr({test:(t,e)=>t!==t.toLowerCase()?mr(e,`Expected to be all-lowercase (got ${t})`):!0})}function rYe(){return Wr({test:(t,e)=>t!==t.toUpperCase()?mr(e,`Expected to be all-uppercase (got ${t})`):!0})}function nYe(){return Wr({test:(t,e)=>QWe.test(t)?!0:mr(e,`Expected to be a valid UUID v4 (got ${ti(t)})`)})}function iYe(){return Wr({test:(t,e)=>Tre.test(t)?!0:mr(e,`Expected to be a valid ISO 8601 date string (got ${ti(t)})`)})}function sYe({alpha:t=!1}){return Wr({test:(e,r)=>(t?PWe.test(e):xWe.test(e))?!0:mr(r,`Expected to be a valid hexadecimal color string (got ${ti(e)})`)})}function oYe(){return Wr({test:(t,e)=>kWe.test(t)?!0:mr(e,`Expected to be a valid base 64 string (got ${ti(t)})`)})}function aYe(t=p_()){return Wr({test:(e,r)=>{let s;try{s=JSON.parse(e)}catch{return mr(r,`Expected to be a valid JSON string (got ${ti(e)})`)}return t(s,r)}})}function Nx(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Wr({test:(s,a)=>{var n,c;let f={value:s},p=typeof a?.coercions<\"u\"?Wf(f,\"value\"):void 0,h=typeof a?.coercions<\"u\"?[]:void 0;if(!t(s,Object.assign(Object.assign({},a),{coercion:p,coercions:h})))return!1;let E=[];if(typeof h<\"u\")for(let[,C]of h)E.push(C());try{if(typeof a?.coercions<\"u\"){if(f.value!==s){if(typeof a?.coercion>\"u\")return mr(a,\"Unbound coercion result\");a.coercions.push([(n=a.p)!==null&&n!==void 0?n:\".\",a.coercion.bind(null,f.value)])}(c=a?.coercions)===null||c===void 0||c.push(...h)}return r.every(C=>C(f.value,a))}finally{for(let C of E)C()}}})}function $2(t,...e){let r=Array.isArray(e[0])?e[0]:e;return Nx(t,r)}function lYe(t){return Wr({test:(e,r)=>typeof e>\"u\"?!0:t(e,r)})}function cYe(t){return Wr({test:(e,r)=>e===null?!0:t(e,r)})}function uYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)||p.push(h);return p.length>0?mr(c,`Missing required ${A_(p.length,\"property\",\"properties\")} ${CE(p,\"and\")}`):!0}})}function y_(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>Object.keys(n).some(h=>a(s,h,n))?!0:mr(c,`Missing at least one property from ${CE(Array.from(s),\"or\")}`)})}function fYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>0?mr(c,`Forbidden ${A_(p.length,\"property\",\"properties\")} ${CE(p,\"and\")}`):!0}})}function AYe(t,e){var r;let s=new Set(t),a=eB[(r=e?.missingIf)!==null&&r!==void 0?r:\"missing\"];return Wr({test:(n,c)=>{let f=new Set(Object.keys(n)),p=[];for(let h of s)a(f,h,n)&&p.push(h);return p.length>1?mr(c,`Mutually exclusive properties ${CE(p,\"and\")}`):!0}})}function tB(t,e,r,s){var a,n;let c=new Set((a=s?.ignore)!==null&&a!==void 0?a:[]),f=eB[(n=s?.missingIf)!==null&&n!==void 0?n:\"missing\"],p=new Set(r),h=pYe[e],E=e===qf.Forbids?\"or\":\"and\";return Wr({test:(C,S)=>{let P=new Set(Object.keys(C));if(!f(P,t,C)||c.has(C[t]))return!0;let I=[];for(let R of p)(f(P,R,C)&&!c.has(C[R]))!==h.expect&&I.push(R);return I.length>=1?mr(S,`Property \"${t}\" ${h.message} ${A_(I.length,\"property\",\"properties\")} ${CE(I,E)}`):!0}})}var bWe,PWe,xWe,kWe,QWe,Tre,RWe,HWe,g_,o0,eB,qf,pYe,Ul=Xe(()=>{bWe=/^[a-zA-Z_][a-zA-Z0-9_]*$/;PWe=/^#[0-9a-f]{6}$/i,xWe=/^#[0-9a-f]{6}([0-9a-f]{2})?$/i,kWe=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/,QWe=/^[a-f0-9]{8}-[a-f0-9]{4}-4[a-f0-9]{3}-[89aAbB][a-f0-9]{3}-[a-f0-9]{12}$/i,Tre=/^(?:[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)?)$/;RWe=new Map([[\"true\",!0],[\"True\",!0],[\"1\",!0],[1,!0],[\"false\",!1],[\"False\",!1],[\"0\",!1],[0,!1]]);HWe=t=>Wr({test:(e,r)=>e instanceof t?!0:mr(r,`Expected an instance of ${t.name} (got ${ti(e)})`)}),g_=(t,{exclusive:e=!1}={})=>Wr({test:(r,s)=>{var a,n,c;let f=[],p=typeof s?.errors<\"u\"?[]:void 0;for(let h=0,E=t.length;h<E;++h){let C=typeof s?.errors<\"u\"?[]:void 0,S=typeof s?.coercions<\"u\"?[]:void 0;if(t[h](r,Object.assign(Object.assign({},s),{errors:C,coercions:S,p:`${(a=s?.p)!==null&&a!==void 0?a:\".\"}#${h+1}`}))){if(f.push([`#${h+1}`,S]),!e)break}else p?.push(C[0])}if(f.length===1){let[,h]=f[0];return typeof h<\"u\"&&((n=s?.coercions)===null||n===void 0||n.push(...h)),!0}return f.length>1?mr(s,`Expected to match exactly a single predicate (matched ${f.join(\", \")})`):(c=s?.errors)===null||c===void 0||c.push(...p),!1}});o0=class extends Error{constructor({errors:e}={}){let r=\"Type mismatch\";if(e&&e.length>0){r+=`\n`;for(let s of e)r+=`\n- ${s}`}super(r)}};eB={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\"})(qf||(qf={}));pYe={[qf.Forbids]:{expect:!1,message:\"forbids using\"},[qf.Requires]:{expect:!0,message:\"requires using\"}}});var ot,a0=Xe(()=>{Cp();ot=class{constructor(){this.help=!1}static Usage(e){return e}async catch(e){throw e}async validateAndExecute(){let r=this.constructor.schema;if(Array.isArray(r)){let{isDict:a,isUnknown:n,applyCascade:c}=await Promise.resolve().then(()=>(Ul(),Ea)),f=c(a(n()),r),p=[],h=[];if(!f(this,{errors:p,coercions:h}))throw z2(\"Invalid option schema\",p);for(let[,C]of h)C()}else if(r!=null)throw new Error(\"Invalid command schema\");let s=await this.execute();return typeof s<\"u\"?s:0}};ot.isOption=K2;ot.Default=[]});function il(t){l_&&console.log(t)}function Mre(){let t={nodes:[]};for(let e=0;e<En.CustomNode;++e)t.nodes.push(_l());return t}function hYe(t){let e=Mre(),r=[],s=e.nodes.length;for(let a of t){r.push(s);for(let n=0;n<a.nodes.length;++n)_re(n)||e.nodes.push(wYe(a.nodes[n],s));s+=a.nodes.length-En.CustomNode+1}for(let a of r)BE(e,En.InitialNode,a);return e}function Ou(t,e){return t.nodes.push(e),t.nodes.length-1}function gYe(t){let e=new Set,r=s=>{if(e.has(s))return;e.add(s);let a=t.nodes[s];for(let c of Object.values(a.statics))for(let{to:f}of c)r(f);for(let[,{to:c}]of a.dynamics)r(c);for(let{to:c}of a.shortcuts)r(c);let n=new Set(a.shortcuts.map(({to:c})=>c));for(;a.shortcuts.length>0;){let{to:c}=a.shortcuts.shift(),f=t.nodes[c];for(let[p,h]of Object.entries(f.statics)){let E=Object.prototype.hasOwnProperty.call(a.statics,p)?a.statics[p]:a.statics[p]=[];for(let C of h)E.some(({to:S})=>C.to===S)||E.push(C)}for(let[p,h]of f.dynamics)a.dynamics.some(([E,{to:C}])=>p===E&&h.to===C)||a.dynamics.push([p,h]);for(let p of f.shortcuts)n.has(p.to)||(a.shortcuts.push(p),n.add(p.to))}};r(En.InitialNode)}function dYe(t,{prefix:e=\"\"}={}){if(l_){il(`${e}Nodes are:`);for(let r=0;r<t.nodes.length;++r)il(`${e}  ${r}: ${JSON.stringify(t.nodes[r])}`)}}function mYe(t,e,r=!1){il(`Running a vm on ${JSON.stringify(e)}`);let s=[{node:En.InitialNode,state:{candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,options:[],path:[],positionals:[],remainder:null,selectedIndex:null,partial:!1,tokens:[]}}];dYe(t,{prefix:\"  \"});let a=[ei.StartOfInput,...e];for(let n=0;n<a.length;++n){let c=a[n],f=c===ei.EndOfInput||c===ei.EndOfPartialInput,p=n-1;il(`  Processing ${JSON.stringify(c)}`);let h=[];for(let{node:E,state:C}of s){il(`    Current node is ${E}`);let S=t.nodes[E];if(E===En.ErrorNode){h.push({node:E,state:C});continue}console.assert(S.shortcuts.length===0,\"Shortcuts should have been eliminated by now\");let P=Object.prototype.hasOwnProperty.call(S.statics,c);if(!r||n<a.length-1||P)if(P){let I=S.statics[c];for(let{to:R,reducer:N}of I)h.push({node:R,state:typeof N<\"u\"?Ox(I_,N,C,c,p):C}),il(`      Static transition to ${R} found`)}else il(\"      No static transition found\");else{let I=!1;for(let R of Object.keys(S.statics))if(R.startsWith(c)){if(c===R)for(let{to:N,reducer:U}of S.statics[R])h.push({node:N,state:typeof U<\"u\"?Ox(I_,U,C,c,p):C}),il(`      Static transition to ${N} found`);else for(let{to:N}of S.statics[R])h.push({node:N,state:{...C,remainder:R.slice(c.length)}}),il(`      Static transition to ${N} found (partial match)`);I=!0}I||il(\"      No partial static transition found\")}if(!f)for(let[I,{to:R,reducer:N}]of S.dynamics)Ox(BYe,I,C,c,p)&&(h.push({node:R,state:typeof N<\"u\"?Ox(I_,N,C,c,p):C}),il(`      Dynamic transition to ${R} found (via ${I})`))}if(h.length===0&&f&&e.length===1)return[{node:En.InitialNode,state:Lre}];if(h.length===0)throw new IE(e,s.filter(({node:E})=>E!==En.ErrorNode).map(({state:E})=>({usage:E.candidateUsage,reason:null})));if(h.every(({node:E})=>E===En.ErrorNode))throw new IE(e,h.map(({state:E})=>({usage:E.candidateUsage,reason:E.errorMessage})));s=EYe(h)}if(s.length>0){il(\"  Results:\");for(let n of s)il(`    - ${n.node} -> ${JSON.stringify(n.state)}`)}else il(\"  No results\");return s}function yYe(t,e,{endToken:r=ei.EndOfInput}={}){let s=mYe(t,[...e,r]);return IYe(e,s.map(({state:a})=>a))}function EYe(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 IYe(t,e){let r=e.filter(S=>S.selectedIndex!==null),s=r.filter(S=>!S.partial);if(s.length>0&&(r=s),r.length===0)throw new Error;let a=r.filter(S=>S.selectedIndex===Nd||S.requiredOptions.every(P=>P.some(I=>S.options.find(R=>R.name===I))));if(a.length===0)throw new IE(t,r.map(S=>({usage:S.candidateUsage,reason:null})));let n=0;for(let S of a)S.path.length>n&&(n=S.path.length);let c=a.filter(S=>S.path.length===n),f=S=>S.positionals.filter(({extra:P})=>!P).length+S.options.length,p=c.map(S=>({state:S,positionalCount:f(S)})),h=0;for(let{positionalCount:S}of p)S>h&&(h=S);let E=p.filter(({positionalCount:S})=>S===h).map(({state:S})=>S),C=CYe(E);if(C.length>1)throw new xx(t,C.map(S=>S.candidateUsage));return C[0]}function CYe(t){let e=[],r=[];for(let s of t)s.selectedIndex===Nd?r.push(s):e.push(s);return r.length>0&&e.push({...Lre,path:Ure(...r.map(s=>s.path)),options:r.reduce((s,a)=>s.concat(a.options),[])}),e}function Ure(t,e,...r){return e===void 0?Array.from(t):Ure(t.filter((s,a)=>s===e[a]),...r)}function _l(){return{dynamics:[],shortcuts:[],statics:{}}}function _re(t){return t===En.SuccessNode||t===En.ErrorNode}function E_(t,e=0){return{to:_re(t.to)?t.to:t.to>=En.CustomNode?t.to+e-En.CustomNode+1:t.to+e,reducer:t.reducer}}function wYe(t,e=0){let r=_l();for(let[s,a]of t.dynamics)r.dynamics.push([s,E_(a,e)]);for(let s of t.shortcuts)r.shortcuts.push(E_(s,e));for(let[s,a]of Object.entries(t.statics))r.statics[s]=a.map(n=>E_(n,e));return r}function Hs(t,e,r,s,a){t.nodes[e].dynamics.push([r,{to:s,reducer:a}])}function BE(t,e,r,s){t.nodes[e].shortcuts.push({to:r,reducer:s})}function Ia(t,e,r,s,a){(Object.prototype.hasOwnProperty.call(t.nodes[e].statics,r)?t.nodes[e].statics[r]:t.nodes[e].statics[r]=[]).push({to:s,reducer:a})}function Ox(t,e,r,s,a){if(Array.isArray(e)){let[n,...c]=e;return t[n](r,s,a,...c)}else return t[e](r,s,a)}var Lre,BYe,I_,Hl,C_,Lx,Mx=Xe(()=>{Px();kx();Lre={candidateUsage:null,requiredOptions:[],errorMessage:null,ignoreOptions:!1,path:[],positionals:[],options:[],remainder:null,selectedIndex:Nd,partial:!1,tokens:[]};BYe={always:()=>!0,isOptionLike:(t,e)=>!t.ignoreOptions&&e!==\"-\"&&e.startsWith(\"-\"),isNotOptionLike:(t,e)=>t.ignoreOptions||e===\"-\"||!e.startsWith(\"-\"),isOption:(t,e,r,s)=>!t.ignoreOptions&&e===s,isBatchOption:(t,e,r,s)=>!t.ignoreOptions&&xre.test(e)&&[...e.slice(1)].every(a=>s.has(`-${a}`)),isBoundOption:(t,e,r,s,a)=>{let n=e.match(a_);return!t.ignoreOptions&&!!n&&bx.test(n[1])&&s.has(n[1])&&a.filter(c=>c.nameSet.includes(n[1])).every(c=>c.allowBinding)},isNegatedOption:(t,e,r,s)=>!t.ignoreOptions&&e===`--no-${s.slice(2)}`,isHelp:(t,e)=>!t.ignoreOptions&&o_.test(e),isUnsupportedOption:(t,e,r,s)=>!t.ignoreOptions&&e.startsWith(\"-\")&&bx.test(e)&&!s.has(e),isInvalidOption:(t,e)=>!t.ignoreOptions&&e.startsWith(\"-\")&&!bx.test(e)},I_={setCandidateState:(t,e,r,s)=>({...t,...s}),setSelectedIndex:(t,e,r,s)=>({...t,selectedIndex:s}),setPartialIndex:(t,e,r,s)=>({...t,selectedIndex:s,partial:!0}),pushBatch:(t,e,r,s)=>{let a=t.options.slice(),n=t.tokens.slice();for(let c=1;c<e.length;++c){let f=s.get(`-${e[c]}`),p=c===1?[0,2]:[c,c+1];a.push({name:f,value:!0}),n.push({segmentIndex:r,type:\"option\",option:f,slice:p})}return{...t,options:a,tokens:n}},pushBound:(t,e,r)=>{let[,s,a]=e.match(a_),n=t.options.concat({name:s,value:a}),c=t.tokens.concat([{segmentIndex:r,type:\"option\",slice:[0,s.length],option:s},{segmentIndex:r,type:\"assign\",slice:[s.length,s.length+1]},{segmentIndex:r,type:\"value\",slice:[s.length+1,s.length+a.length+1]}]);return{...t,options:n,tokens:c}},pushPath:(t,e,r)=>{let s=t.path.concat(e),a=t.tokens.concat({segmentIndex:r,type:\"path\"});return{...t,path:s,tokens:a}},pushPositional:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!1}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:s,tokens:a}},pushExtra:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:!0}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:s,tokens:a}},pushExtraNoLimits:(t,e,r)=>{let s=t.positionals.concat({value:e,extra:Hl}),a=t.tokens.concat({segmentIndex:r,type:\"positional\"});return{...t,positionals:s,tokens:a}},pushTrue:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:s});return{...t,options:a,tokens:n}},pushFalse:(t,e,r,s)=>{let a=t.options.concat({name:s,value:!1}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:s});return{...t,options:a,tokens:n}},pushUndefined:(t,e,r,s)=>{let a=t.options.concat({name:e,value:void 0}),n=t.tokens.concat({segmentIndex:r,type:\"option\",option:e});return{...t,options:a,tokens:n}},pushStringValue:(t,e,r)=>{var s;let a=t.options[t.options.length-1],n=t.options.slice(),c=t.tokens.concat({segmentIndex:r,type:\"value\"});return a.value=((s=a.value)!==null&&s!==void 0?s:[]).concat([e]),{...t,options:n,tokens:c}},setStringValue:(t,e,r)=>{let s=t.options[t.options.length-1],a=t.options.slice(),n=t.tokens.concat({segmentIndex:r,type:\"value\"});return s.value=e,{...t,options:a,tokens:n}},inhibateOptions:t=>({...t,ignoreOptions:!0}),useHelp:(t,e,r,s)=>{let[,,a]=e.match(o_);return typeof a<\"u\"?{...t,options:[{name:\"-c\",value:String(s)},{name:\"-i\",value:a}]}:{...t,options:[{name:\"-c\",value:String(s)}]}},setError:(t,e,r,s)=>e===ei.EndOfInput||e===ei.EndOfPartialInput?{...t,errorMessage:`${s}.`}:{...t,errorMessage:`${s} (\"${e}\").`},setOptionArityError:(t,e)=>{let r=t.options[t.options.length-1];return{...t,errorMessage:`Not enough arguments to option ${r.name}.`}}},Hl=Symbol(),C_=class{constructor(e,r){this.allOptionNames=new Map,this.arity={leading:[],trailing:[],extra:[],proxy:!1},this.options=[],this.paths=[],this.cliIndex=e,this.cliOpts=r}addPath(e){this.paths.push(e)}setArity({leading:e=this.arity.leading,trailing:r=this.arity.trailing,extra:s=this.arity.extra,proxy:a=this.arity.proxy}){Object.assign(this.arity,{leading:e,trailing:r,extra:s,proxy:a})}addPositional({name:e=\"arg\",required:r=!0}={}){if(!r&&this.arity.extra===Hl)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!==Hl?this.arity.extra.push(e):this.arity.extra!==Hl&&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===Hl)throw new Error(\"Infinite lists cannot be declared multiple times in the same command\");if(this.arity.trailing.length>0)throw new Error(\"Infinite lists cannot be declared after the required trailing positional arguments\");for(let s=0;s<r;++s)this.addPositional({name:e});this.arity.extra=Hl}addProxy({required:e=0}={}){this.addRest({required:e}),this.arity.proxy=!0}addOption({names:e,description:r,arity:s=0,hidden:a=!1,required:n=!1,allowBinding:c=!0}){if(!c&&s>1)throw new Error(\"The arity cannot be higher than 1 when the option only supports the --arg=value syntax\");if(!Number.isInteger(s))throw new Error(`The arity must be an integer, got ${s}`);if(s<0)throw new Error(`The arity must be positive, got ${s}`);let f=e.reduce((p,h)=>h.length>p.length?h:p,\"\");for(let p of e)this.allOptionNames.set(p,f);this.options.push({preferredName:f,nameSet:e,description:r,arity:s,hidden:a,required:n,allowBinding:c})}setContext(e){this.context=e}usage({detailed:e=!0,inlineOptions:r=!0}={}){let s=[this.cliOpts.binaryName],a=[];if(this.paths.length>0&&s.push(...this.paths[0]),e){for(let{preferredName:c,nameSet:f,arity:p,hidden:h,description:E,required:C}of this.options){if(h)continue;let S=[];for(let I=0;I<p;++I)S.push(` #${I}`);let P=`${f.join(\",\")}${S.join(\"\")}`;!r&&E?a.push({preferredName:c,nameSet:f,definition:P,description:E,required:C}):s.push(C?`<${P}>`:`[${P}]`)}s.push(...this.arity.leading.map(c=>`<${c}>`)),this.arity.extra===Hl?s.push(\"...\"):s.push(...this.arity.extra.map(c=>`[${c}]`)),s.push(...this.arity.trailing.map(c=>`<${c}>`))}return{usage:s.join(\" \"),options:a}}compile(){if(typeof this.context>\"u\")throw new Error(\"Assertion failed: No context attached\");let e=Mre(),r=En.InitialNode,s=this.usage().usage,a=this.options.filter(f=>f.required).map(f=>f.nameSet);r=Ou(e,_l()),Ia(e,En.InitialNode,ei.StartOfInput,r,[\"setCandidateState\",{candidateUsage:s,requiredOptions:a}]);let n=this.arity.proxy?\"always\":\"isNotOptionLike\",c=this.paths.length>0?this.paths:[[]];for(let f of c){let p=r;if(f.length>0){let S=Ou(e,_l());BE(e,p,S),this.registerOptions(e,S),p=S}for(let S=0;S<f.length;++S){let P=Ou(e,_l());Ia(e,p,f[S],P,\"pushPath\"),p=P}if(this.arity.leading.length>0||!this.arity.proxy){let S=Ou(e,_l());Hs(e,p,\"isHelp\",S,[\"useHelp\",this.cliIndex]),Hs(e,S,\"always\",S,\"pushExtra\"),Ia(e,S,ei.EndOfInput,En.SuccessNode,[\"setSelectedIndex\",Nd]),this.registerOptions(e,p)}this.arity.leading.length>0&&(Ia(e,p,ei.EndOfInput,En.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ia(e,p,ei.EndOfPartialInput,En.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let h=p;for(let S=0;S<this.arity.leading.length;++S){let P=Ou(e,_l());(!this.arity.proxy||S+1!==this.arity.leading.length)&&this.registerOptions(e,P),(this.arity.trailing.length>0||S+1!==this.arity.leading.length)&&(Ia(e,P,ei.EndOfInput,En.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ia(e,P,ei.EndOfPartialInput,En.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Hs(e,h,\"isNotOptionLike\",P,\"pushPositional\"),h=P}let E=h;if(this.arity.extra===Hl||this.arity.extra.length>0){let S=Ou(e,_l());if(BE(e,h,S),this.arity.extra===Hl){let P=Ou(e,_l());this.arity.proxy||this.registerOptions(e,P),Hs(e,h,n,P,\"pushExtraNoLimits\"),Hs(e,P,n,P,\"pushExtraNoLimits\"),BE(e,P,S)}else for(let P=0;P<this.arity.extra.length;++P){let I=Ou(e,_l());(!this.arity.proxy||P>0)&&this.registerOptions(e,I),Hs(e,E,n,I,\"pushExtra\"),BE(e,I,S),E=I}E=S}this.arity.trailing.length>0&&(Ia(e,E,ei.EndOfInput,En.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ia(e,E,ei.EndOfPartialInput,En.SuccessNode,[\"setPartialIndex\",this.cliIndex]));let C=E;for(let S=0;S<this.arity.trailing.length;++S){let P=Ou(e,_l());this.arity.proxy||this.registerOptions(e,P),S+1<this.arity.trailing.length&&(Ia(e,P,ei.EndOfInput,En.ErrorNode,[\"setError\",\"Not enough positional arguments\"]),Ia(e,P,ei.EndOfPartialInput,En.SuccessNode,[\"setPartialIndex\",this.cliIndex])),Hs(e,C,\"isNotOptionLike\",P,\"pushPositional\"),C=P}Hs(e,C,n,En.ErrorNode,[\"setError\",\"Extraneous positional argument\"]),Ia(e,C,ei.EndOfInput,En.SuccessNode,[\"setSelectedIndex\",this.cliIndex]),Ia(e,C,ei.EndOfPartialInput,En.SuccessNode,[\"setSelectedIndex\",this.cliIndex])}return{machine:e,context:this.context}}registerOptions(e,r){Hs(e,r,[\"isOption\",\"--\"],r,\"inhibateOptions\"),Hs(e,r,[\"isBatchOption\",this.allOptionNames],r,[\"pushBatch\",this.allOptionNames]),Hs(e,r,[\"isBoundOption\",this.allOptionNames,this.options],r,\"pushBound\"),Hs(e,r,[\"isUnsupportedOption\",this.allOptionNames],En.ErrorNode,[\"setError\",\"Unsupported option name\"]),Hs(e,r,[\"isInvalidOption\"],En.ErrorNode,[\"setError\",\"Invalid option name\"]);for(let s of this.options)if(s.arity===0)for(let a of s.nameSet)Hs(e,r,[\"isOption\",a],r,[\"pushTrue\",s.preferredName]),a.startsWith(\"--\")&&!a.startsWith(\"--no-\")&&Hs(e,r,[\"isNegatedOption\",a],r,[\"pushFalse\",s.preferredName]);else{let a=Ou(e,_l());for(let n of s.nameSet)Hs(e,r,[\"isOption\",n],a,[\"pushUndefined\",s.preferredName]);for(let n=0;n<s.arity;++n){let c=Ou(e,_l());Ia(e,a,ei.EndOfInput,En.ErrorNode,\"setOptionArityError\"),Ia(e,a,ei.EndOfPartialInput,En.ErrorNode,\"setOptionArityError\"),Hs(e,a,\"isOptionLike\",En.ErrorNode,\"setOptionArityError\");let f=s.arity===1?\"setStringValue\":\"pushStringValue\";Hs(e,a,\"isNotOptionLike\",c,f),a=c}BE(e,a,r)}}},Lx=class t{constructor({binaryName:e=\"...\"}={}){this.builders=[],this.opts={binaryName:e}}static build(e,r={}){return new t(r).commands(e).compile()}getBuilderByIndex(e){if(!(e>=0&&e<this.builders.length))throw new Error(`Assertion failed: Out-of-bound command index (${e})`);return this.builders[e]}commands(e){for(let r of e)r(this.command());return this}command(){let e=new C_(this.builders.length,this.opts);return this.builders.push(e),e}compile(){let e=[],r=[];for(let a of this.builders){let{machine:n,context:c}=a.compile();e.push(n),r.push(c)}let s=hYe(e);return gYe(s),{machine:s,contexts:r,process:(a,{partial:n}={})=>{let c=n?ei.EndOfPartialInput:ei.EndOfInput;return yYe(s,a,{endToken:c})}}}}});function jre(){return Ux.default&&\"getColorDepth\"in Ux.default.WriteStream.prototype?Ux.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 Gre(t){let e=Hre;if(typeof e>\"u\"){if(t.stdout===process.stdout&&t.stderr===process.stderr)return null;let{AsyncLocalStorage:r}=Ie(\"async_hooks\");e=Hre=new r;let s=process.stdout._write;process.stdout._write=function(n,c,f){let p=e.getStore();return typeof p>\"u\"?s.call(this,n,c,f):p.stdout.write(n,c,f)};let a=process.stderr._write;process.stderr._write=function(n,c,f){let p=e.getStore();return typeof p>\"u\"?a.call(this,n,c,f):p.stderr.write(n,c,f)}}return r=>e.run(t,r)}var Ux,Hre,qre=Xe(()=>{Ux=ut(Ie(\"tty\"),1)});var _x,Wre=Xe(()=>{a0();_x=class t extends ot{constructor(e){super(),this.contexts=e,this.commands=[]}static from(e,r){let s=new t(r);s.path=e.path;for(let a of e.options)switch(a.name){case\"-c\":s.commands.push(Number(a.value));break;case\"-i\":s.index=Number(a.value);break}return s}async execute(){let e=this.commands;if(typeof this.index<\"u\"&&this.index>=0&&this.index<e.length&&(e=[e[this.index]]),e.length===0)this.context.stdout.write(this.cli.usage());else if(e.length===1)this.context.stdout.write(this.cli.usage(this.contexts[e[0]].commandClass,{detailed:!0}));else if(e.length>1){this.context.stdout.write(`Multiple commands match your selection:\n`),this.context.stdout.write(`\n`);let r=0;for(let s of this.commands)this.context.stdout.write(this.cli.usage(this.contexts[s].commandClass,{prefix:`${r++}. `.padStart(5)}));this.context.stdout.write(`\n`),this.context.stdout.write(`Run again with -h=<index> to see the longer details of any of those commands.\n`)}}}});async function Jre(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=zre(t);return Ca.from(r,e).runExit(s,a)}async function Kre(...t){let{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}=zre(t);return Ca.from(r,e).run(s,a)}function zre(t){let e,r,s,a;switch(typeof process<\"u\"&&typeof process.argv<\"u\"&&(s=process.argv.slice(2)),t.length){case 1:r=t[0];break;case 2:t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],Array.isArray(t[1])?s=t[1]:a=t[1]):(e=t[0],r=t[1]);break;case 3:Array.isArray(t[2])?(e=t[0],r=t[1],s=t[2]):t[0]&&t[0].prototype instanceof ot||Array.isArray(t[0])?(r=t[0],s=t[1],a=t[2]):(e=t[0],r=t[1],a=t[2]);break;default:e=t[0],r=t[1],s=t[2],a=t[3];break}if(typeof s>\"u\")throw new Error(\"The argv parameter must be provided when running Clipanion outside of a Node context\");return{resolvedOptions:e,resolvedCommandClasses:r,resolvedArgv:s,resolvedContext:a}}function Vre(t){return t()}var Yre,Ca,Xre=Xe(()=>{Px();Mx();f_();qre();a0();Wre();Yre=Symbol(\"clipanion/errorCommand\");Ca=class t{constructor({binaryLabel:e,binaryName:r=\"...\",binaryVersion:s,enableCapture:a=!1,enableColors:n}={}){this.registrations=new Map,this.builder=new Lx({binaryName:r}),this.binaryLabel=e,this.binaryName=r,this.binaryVersion=s,this.enableCapture=a,this.enableColors=n}static from(e,r={}){let s=new t(r),a=Array.isArray(e)?e:[e];for(let n of a)s.register(n);return s}register(e){var r;let s=new Map,a=new e;for(let p in a){let h=a[p];typeof h==\"object\"&&h!==null&&h[ot.isOption]&&s.set(p,h)}let n=this.builder.command(),c=n.cliIndex,f=(r=e.paths)!==null&&r!==void 0?r:a.paths;if(typeof f<\"u\")for(let p of f)n.addPath(p);this.registrations.set(e,{specs:s,builder:n,index:c});for(let[p,{definition:h}]of s.entries())h(n,p);n.setContext({commandClass:e})}process(e,r){let{input:s,context:a,partial:n}=typeof e==\"object\"&&Array.isArray(e)?{input:e,context:r}:e,{contexts:c,process:f}=this.builder.compile(),p=f(s,{partial:n}),h={...t.defaultContext,...a};switch(p.selectedIndex){case Nd:{let E=_x.from(p,c);return E.context=h,E.tokens=p.tokens,E}default:{let{commandClass:E}=c[p.selectedIndex],C=this.registrations.get(E);if(typeof C>\"u\")throw new Error(\"Assertion failed: Expected the command class to have been registered.\");let S=new E;S.context=h,S.tokens=p.tokens,S.path=p.path;try{for(let[P,{transformer:I}]of C.specs.entries())S[P]=I(C.builder,P,p,h);return S}catch(P){throw P[Yre]=S,P}}break}}async run(e,r){var s,a;let n,c={...t.defaultContext,...r},f=(s=this.enableColors)!==null&&s!==void 0?s:c.colorDepth>1;if(!Array.isArray(e))n=e;else try{n=this.process(e,c)}catch(E){return c.stdout.write(this.error(E,{colored:f})),1}if(n.help)return c.stdout.write(this.usage(n,{colored:f,detailed:!0})),0;n.context=c,n.cli={binaryLabel:this.binaryLabel,binaryName:this.binaryName,binaryVersion:this.binaryVersion,enableCapture:this.enableCapture,enableColors:this.enableColors,definitions:()=>this.definitions(),definition:E=>this.definition(E),error:(E,C)=>this.error(E,C),format:E=>this.format(E),process:(E,C)=>this.process(E,{...c,...C}),run:(E,C)=>this.run(E,{...c,...C}),usage:(E,C)=>this.usage(E,C)};let p=this.enableCapture&&(a=Gre(c))!==null&&a!==void 0?a:Vre,h;try{h=await p(()=>n.validateAndExecute().catch(E=>n.catch(E).then(()=>0)))}catch(E){return c.stdout.write(this.error(E,{colored:f,command:n})),1}return h}async runExit(e,r){process.exitCode=await this.run(e,r)}definition(e,{colored:r=!1}={}){if(!e.usage)return null;let{usage:s}=this.getUsageByRegistration(e,{detailed:!1}),{usage:a,options:n}=this.getUsageByRegistration(e,{detailed:!0,inlineOptions:!1}),c=typeof e.usage.category<\"u\"?Ho(e.usage.category,{format:this.format(r),paragraphs:!1}):void 0,f=typeof e.usage.description<\"u\"?Ho(e.usage.description,{format:this.format(r),paragraphs:!1}):void 0,p=typeof e.usage.details<\"u\"?Ho(e.usage.details,{format:this.format(r),paragraphs:!0}):void 0,h=typeof e.usage.examples<\"u\"?e.usage.examples.map(([E,C])=>[Ho(E,{format:this.format(r),paragraphs:!1}),C.replace(/\\$0/g,this.binaryName)]):void 0;return{path:s,usage:a,category:c,description:f,details:p,examples:h,options:n}}definitions({colored:e=!1}={}){let r=[];for(let s of this.registrations.keys()){let a=this.definition(s,{colored:e});a&&r.push(a)}return r}usage(e=null,{colored:r,detailed:s=!1,prefix:a=\"$ \"}={}){var n;if(e===null){for(let p of this.registrations.keys()){let h=p.paths,E=typeof p.usage<\"u\";if(!h||h.length===0||h.length===1&&h[0].length===0||((n=h?.some(P=>P.length===0))!==null&&n!==void 0?n:!1))if(e){e=null;break}else e=p;else if(E){e=null;continue}}e&&(s=!0)}let c=e!==null&&e instanceof ot?e.constructor:e,f=\"\";if(c)if(s){let{description:p=\"\",details:h=\"\",examples:E=[]}=c.usage||{};p!==\"\"&&(f+=Ho(p,{format:this.format(r),paragraphs:!1}).replace(/^./,P=>P.toUpperCase()),f+=`\n`),(h!==\"\"||E.length>0)&&(f+=`${this.format(r).header(\"Usage\")}\n`,f+=`\n`);let{usage:C,options:S}=this.getUsageByRegistration(c,{inlineOptions:!1});if(f+=`${this.format(r).bold(a)}${C}\n`,S.length>0){f+=`\n`,f+=`${this.format(r).header(\"Options\")}\n`;let P=S.reduce((I,R)=>Math.max(I,R.definition.length),0);f+=`\n`;for(let{definition:I,description:R}of S)f+=`  ${this.format(r).bold(I.padEnd(P))}    ${Ho(R,{format:this.format(r),paragraphs:!1})}`}if(h!==\"\"&&(f+=`\n`,f+=`${this.format(r).header(\"Details\")}\n`,f+=`\n`,f+=Ho(h,{format:this.format(r),paragraphs:!0})),E.length>0){f+=`\n`,f+=`${this.format(r).header(\"Examples\")}\n`;for(let[P,I]of E)f+=`\n`,f+=Ho(P,{format:this.format(r),paragraphs:!1}),f+=`${I.replace(/^/m,`  ${this.format(r).bold(a)}`).replace(/\\$0/g,this.binaryName)}\n`}}else{let{usage:p}=this.getUsageByRegistration(c);f+=`${this.format(r).bold(a)}${p}\n`}else{let p=new Map;for(let[S,{index:P}]of this.registrations.entries()){if(typeof S.usage>\"u\")continue;let I=typeof S.usage.category<\"u\"?Ho(S.usage.category,{format:this.format(r),paragraphs:!1}):null,R=p.get(I);typeof R>\"u\"&&p.set(I,R=[]);let{usage:N}=this.getUsageByIndex(P);R.push({commandClass:S,usage:N})}let h=Array.from(p.keys()).sort((S,P)=>S===null?-1:P===null?1:S.localeCompare(P,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),E=typeof this.binaryLabel<\"u\",C=typeof this.binaryVersion<\"u\";E||C?(E&&C?f+=`${this.format(r).header(`${this.binaryLabel} - ${this.binaryVersion}`)}\n\n`:E?f+=`${this.format(r).header(`${this.binaryLabel}`)}\n`:f+=`${this.format(r).header(`${this.binaryVersion}`)}\n`,f+=`  ${this.format(r).bold(a)}${this.binaryName} <command>\n`):f+=`${this.format(r).bold(a)}${this.binaryName} <command>\n`;for(let S of h){let P=p.get(S).slice().sort((R,N)=>R.usage.localeCompare(N.usage,\"en\",{usage:\"sort\",caseFirst:\"upper\"})),I=S!==null?S.trim():\"General commands\";f+=`\n`,f+=`${this.format(r).header(`${I}`)}\n`;for(let{commandClass:R,usage:N}of P){let U=R.usage.description||\"undocumented\";f+=`\n`,f+=`  ${this.format(r).bold(N)}\n`,f+=`    ${Ho(U,{format:this.format(r),paragraphs:!1})}`}}f+=`\n`,f+=Ho(\"You can also print more details about any of these commands by calling them with the `-h,--help` flag right after the command name.\",{format:this.format(r),paragraphs:!0})}return f}error(e,r){var s,{colored:a,command:n=(s=e[Yre])!==null&&s!==void 0?s:null}=r===void 0?{}:r;(!e||typeof e!=\"object\"||!(\"stack\"in e))&&(e=new Error(`Execution failed with a non-error rejection (rejected value: ${JSON.stringify(e)})`));let c=\"\",f=e.name.replace(/([a-z])([A-Z])/g,\"$1 $2\");f===\"Error\"&&(f=\"Internal Error\"),c+=`${this.format(a).error(f)}: ${e.message}\n`;let p=e.clipanion;return typeof p<\"u\"?p.type===\"usage\"&&(c+=`\n`,c+=this.usage(n)):e.stack&&(c+=`${e.stack.replace(/^.*\\n/,\"\")}\n`),c}format(e){var r;return((r=e??this.enableColors)!==null&&r!==void 0?r:t.defaultContext.colorDepth>1)?kre:Qre}getUsageByRegistration(e,r){let s=this.registrations.get(e);if(typeof s>\"u\")throw new Error(\"Assertion failed: Unregistered command\");return this.getUsageByIndex(s.index,r)}getUsageByIndex(e,r){return this.builder.getBuilderByIndex(e).usage(r)}};Ca.defaultContext={env:process.env,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr,colorDepth:jre()}});var rB,Zre=Xe(()=>{a0();rB=class extends ot{async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.definitions(),null,2)}\n`)}};rB.paths=[[\"--clipanion=definitions\"]]});var nB,$re=Xe(()=>{a0();nB=class extends ot{async execute(){this.context.stdout.write(this.cli.usage())}};nB.paths=[[\"-h\"],[\"--help\"]]});function Hx(t={}){return ya({definition(e,r){var s;e.addProxy({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){return s.positionals.map(({value:a})=>a)}})}var w_=Xe(()=>{Cp()});var iB,ene=Xe(()=>{a0();w_();iB=class extends ot{constructor(){super(...arguments),this.args=Hx()}async execute(){this.context.stdout.write(`${JSON.stringify(this.cli.process(this.args).tokens,null,2)}\n`)}};iB.paths=[[\"--clipanion=tokens\"]]});var sB,tne=Xe(()=>{a0();sB=class extends ot{async execute(){var e;this.context.stdout.write(`${(e=this.cli.binaryVersion)!==null&&e!==void 0?e:\"<unknown>\"}\n`)}};sB.paths=[[\"-v\"],[\"--version\"]]});var B_={};Vt(B_,{DefinitionsCommand:()=>rB,HelpCommand:()=>nB,TokensCommand:()=>iB,VersionCommand:()=>sB});var rne=Xe(()=>{Zre();$re();ene();tne()});function nne(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(\",\"),f=new Set(c);return ya({definition(p){p.addOption({names:c,arity:n,hidden:a?.hidden,description:a?.description,required:a.required})},transformer(p,h,E){let C,S=typeof s<\"u\"?[...s]:void 0;for(let{name:P,value:I}of E.options)f.has(P)&&(C=P,S=S??[],S.push(I));return typeof S<\"u\"?Od(C??h,S,a.validator):S}})}var ine=Xe(()=>{Cp()});function sne(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(\",\"),c=new Set(n);return ya({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E=S);return E}})}var one=Xe(()=>{Cp()});function ane(t,e,r){let[s,a]=Gf(e,r??{}),n=t.split(\",\"),c=new Set(n);return ya({definition(f){f.addOption({names:n,allowBinding:!1,arity:0,hidden:a.hidden,description:a.description,required:a.required})},transformer(f,p,h){let E=s;for(let{name:C,value:S}of h.options)c.has(C)&&(E??(E=0),S?E+=1:E=0);return E}})}var lne=Xe(()=>{Cp()});function cne(t={}){return ya({definition(e,r){var s;e.addRest({name:(s=t.name)!==null&&s!==void 0?s:r,required:t.required})},transformer(e,r,s){let a=c=>{let f=s.positionals[c];return f.extra===Hl||f.extra===!1&&c<e.arity.leading.length},n=0;for(;n<s.positionals.length&&a(n);)n+=1;return s.positionals.splice(0,n).map(({value:c})=>c)}})}var une=Xe(()=>{Mx();Cp()});function vYe(t,e,r){let[s,a]=Gf(e,r??{}),{arity:n=1}=a,c=t.split(\",\"),f=new Set(c);return ya({definition(p){p.addOption({names:c,arity:a.tolerateBoolean?0:n,hidden:a.hidden,description:a.description,required:a.required})},transformer(p,h,E,C){let S,P=s;typeof a.env<\"u\"&&C.env[a.env]&&(S=a.env,P=C.env[a.env]);for(let{name:I,value:R}of E.options)f.has(I)&&(S=I,P=R);return typeof P==\"string\"?Od(S??h,P,a.validator):P}})}function SYe(t={}){let{required:e=!0}=t;return ya({definition(r,s){var a;r.addPositional({name:(a=t.name)!==null&&a!==void 0?a:s,required:t.required})},transformer(r,s,a){var n;for(let c=0;c<a.positionals.length;++c){if(a.positionals[c].extra===Hl||e&&a.positionals[c].extra===!0||!e&&a.positionals[c].extra===!1)continue;let[f]=a.positionals.splice(c,1);return Od((n=t.name)!==null&&n!==void 0?n:s,f.value,t.validator)}}})}function fne(t,...e){return typeof t==\"string\"?vYe(t,...e):SYe(t)}var Ane=Xe(()=>{Mx();Cp()});var ge={};Vt(ge,{Array:()=>nne,Boolean:()=>sne,Counter:()=>ane,Proxy:()=>Hx,Rest:()=>cne,String:()=>fne,applyValidator:()=>Od,cleanValidationError:()=>Qx,formatError:()=>z2,isOptionSymbol:()=>K2,makeCommandOption:()=>ya,rerouteArguments:()=>Gf});var pne=Xe(()=>{Cp();w_();ine();one();lne();une();Ane()});var oB={};Vt(oB,{Builtins:()=>B_,Cli:()=>Ca,Command:()=>ot,Option:()=>ge,UsageError:()=>nt,formatMarkdownish:()=>Ho,run:()=>Kre,runExit:()=>Jre});var Yt=Xe(()=>{kx();f_();a0();Xre();rne();pne()});var hne=_((VTt,DYe)=>{DYe.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 yne=_((JTt,wp)=>{var gne=Ie(\"fs\"),S_=Ie(\"path\"),bYe=Ie(\"os\"),PYe=Ie(\"crypto\"),xYe=hne(),D_=xYe.version,kYe=/(?:^|^)\\s*(?:export\\s+)?([\\w.-]+)(?:\\s*=\\s*?|:\\s+?)(\\s*'(?:\\\\'|[^'])*'|\\s*\"(?:\\\\\"|[^\"])*\"|\\s*`(?:\\\\`|[^`])*`|[^#\\r\\n]+)?\\s*(?:#.*)?(?:$|$)/mg;function QYe(t){let e={},r=t.toString();r=r.replace(/\\r\\n?/mg,`\n`);let s;for(;(s=kYe.exec(r))!=null;){let a=s[1],n=s[2]||\"\";n=n.trim();let c=n[0];n=n.replace(/^(['\"`])([\\s\\S]*)\\1$/mg,\"$2\"),c==='\"'&&(n=n.replace(/\\\\n/g,`\n`),n=n.replace(/\\\\r/g,\"\\r\")),e[a]=n}return e}function TYe(t){let e=mne(t),r=js.configDotenv({path:e});if(!r.parsed)throw new Error(`MISSING_DATA: Cannot parse ${e} for an unknown reason`);let s=dne(t).split(\",\"),a=s.length,n;for(let c=0;c<a;c++)try{let f=s[c].trim(),p=NYe(r,f);n=js.decrypt(p.ciphertext,p.key);break}catch(f){if(c+1>=a)throw f}return js.parse(n)}function RYe(t){console.log(`[dotenv@${D_}][INFO] ${t}`)}function FYe(t){console.log(`[dotenv@${D_}][WARN] ${t}`)}function v_(t){console.log(`[dotenv@${D_}][DEBUG] ${t}`)}function dne(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 NYe(t,e){let r;try{r=new URL(e)}catch(f){throw f.code===\"ERR_INVALID_URL\"?new Error(\"INVALID_DOTENV_KEY: Wrong format. Must be in valid uri format like dotenv://:key_1234@dotenv.org/vault/.env.vault?environment=development\"):f}let s=r.password;if(!s)throw new Error(\"INVALID_DOTENV_KEY: Missing key part\");let a=r.searchParams.get(\"environment\");if(!a)throw new Error(\"INVALID_DOTENV_KEY: Missing environment part\");let n=`DOTENV_VAULT_${a.toUpperCase()}`,c=t.parsed[n];if(!c)throw new Error(`NOT_FOUND_DOTENV_ENVIRONMENT: Cannot locate environment ${n} in your .env.vault file.`);return{ciphertext:c,key:s}}function mne(t){let e=S_.resolve(process.cwd(),\".env\");return t&&t.path&&t.path.length>0&&(e=t.path),e.endsWith(\".vault\")?e:`${e}.vault`}function OYe(t){return t[0]===\"~\"?S_.join(bYe.homedir(),t.slice(1)):t}function LYe(t){RYe(\"Loading env from encrypted .env.vault\");let e=js._parseVault(t),r=process.env;return t&&t.processEnv!=null&&(r=t.processEnv),js.populate(r,e,t),{parsed:e}}function MYe(t){let e=S_.resolve(process.cwd(),\".env\"),r=\"utf8\",s=!!(t&&t.debug);t&&(t.path!=null&&(e=OYe(t.path)),t.encoding!=null&&(r=t.encoding));try{let a=js.parse(gne.readFileSync(e,{encoding:r})),n=process.env;return t&&t.processEnv!=null&&(n=t.processEnv),js.populate(n,a,t),{parsed:a}}catch(a){return s&&v_(`Failed to load ${e} ${a.message}`),{error:a}}}function UYe(t){let e=mne(t);return dne(t).length===0?js.configDotenv(t):gne.existsSync(e)?js._configVault(t):(FYe(`You set DOTENV_KEY but you are missing a .env.vault file at ${e}. Did you forget to build it?`),js.configDotenv(t))}function _Ye(t,e){let r=Buffer.from(e.slice(-64),\"hex\"),s=Buffer.from(t,\"base64\"),a=s.slice(0,12),n=s.slice(-16);s=s.slice(12,-16);try{let c=PYe.createDecipheriv(\"aes-256-gcm\",r,a);return c.setAuthTag(n),`${c.update(s)}${c.final()}`}catch(c){let f=c instanceof RangeError,p=c.message===\"Invalid key length\",h=c.message===\"Unsupported state or unable to authenticate data\";if(f||p){let E=\"INVALID_DOTENV_KEY: It must be 64 characters long (or more)\";throw new Error(E)}else if(h){let E=\"DECRYPTION_FAILED: Please check your DOTENV_KEY\";throw new Error(E)}else throw console.error(\"Error: \",c.code),console.error(\"Error: \",c.message),c}}function HYe(t,e,r={}){let s=!!(r&&r.debug),a=!!(r&&r.override);if(typeof e!=\"object\")throw new Error(\"OBJECT_REQUIRED: Please check the processEnv argument being passed to populate\");for(let n of Object.keys(e))Object.prototype.hasOwnProperty.call(t,n)?(a===!0&&(t[n]=e[n]),s&&v_(a===!0?`\"${n}\" is already defined and WAS overwritten`:`\"${n}\" is already defined and was NOT overwritten`)):t[n]=e[n]}var js={configDotenv:MYe,_configVault:LYe,_parseVault:TYe,config:UYe,decrypt:_Ye,parse:QYe,populate:HYe};wp.exports.configDotenv=js.configDotenv;wp.exports._configVault=js._configVault;wp.exports._parseVault=js._parseVault;wp.exports.config=js.config;wp.exports.decrypt=js.decrypt;wp.exports.parse=js.parse;wp.exports.populate=js.populate;wp.exports=js});var Ine=_((KTt,Ene)=>{\"use strict\";Ene.exports=(t,...e)=>new Promise(r=>{r(t(...e))})});var Ld=_((zTt,b_)=>{\"use strict\";var jYe=Ine(),Cne=t=>{if(t<1)throw new TypeError(\"Expected `concurrency` to be a number from 1 and up\");let e=[],r=0,s=()=>{r--,e.length>0&&e.shift()()},a=(f,p,...h)=>{r++;let E=jYe(f,...h);p(E),E.then(s,s)},n=(f,p,...h)=>{r<t?a(f,p,...h):e.push(a.bind(null,f,p,...h))},c=(f,...p)=>new Promise(h=>n(f,h,...p));return Object.defineProperties(c,{activeCount:{get:()=>r},pendingCount:{get:()=>e.length}}),c};b_.exports=Cne;b_.exports.default=Cne});function Yf(t){return`YN${t.toString(10).padStart(4,\"0\")}`}function jx(t){let e=Number(t.slice(2));if(typeof Br[e]>\"u\")throw new Error(`Unknown message name: \"${t}\"`);return e}var Br,Gx=Xe(()=>{Br=(Me=>(Me[Me.UNNAMED=0]=\"UNNAMED\",Me[Me.EXCEPTION=1]=\"EXCEPTION\",Me[Me.MISSING_PEER_DEPENDENCY=2]=\"MISSING_PEER_DEPENDENCY\",Me[Me.CYCLIC_DEPENDENCIES=3]=\"CYCLIC_DEPENDENCIES\",Me[Me.DISABLED_BUILD_SCRIPTS=4]=\"DISABLED_BUILD_SCRIPTS\",Me[Me.BUILD_DISABLED=5]=\"BUILD_DISABLED\",Me[Me.SOFT_LINK_BUILD=6]=\"SOFT_LINK_BUILD\",Me[Me.MUST_BUILD=7]=\"MUST_BUILD\",Me[Me.MUST_REBUILD=8]=\"MUST_REBUILD\",Me[Me.BUILD_FAILED=9]=\"BUILD_FAILED\",Me[Me.RESOLVER_NOT_FOUND=10]=\"RESOLVER_NOT_FOUND\",Me[Me.FETCHER_NOT_FOUND=11]=\"FETCHER_NOT_FOUND\",Me[Me.LINKER_NOT_FOUND=12]=\"LINKER_NOT_FOUND\",Me[Me.FETCH_NOT_CACHED=13]=\"FETCH_NOT_CACHED\",Me[Me.YARN_IMPORT_FAILED=14]=\"YARN_IMPORT_FAILED\",Me[Me.REMOTE_INVALID=15]=\"REMOTE_INVALID\",Me[Me.REMOTE_NOT_FOUND=16]=\"REMOTE_NOT_FOUND\",Me[Me.RESOLUTION_PACK=17]=\"RESOLUTION_PACK\",Me[Me.CACHE_CHECKSUM_MISMATCH=18]=\"CACHE_CHECKSUM_MISMATCH\",Me[Me.UNUSED_CACHE_ENTRY=19]=\"UNUSED_CACHE_ENTRY\",Me[Me.MISSING_LOCKFILE_ENTRY=20]=\"MISSING_LOCKFILE_ENTRY\",Me[Me.WORKSPACE_NOT_FOUND=21]=\"WORKSPACE_NOT_FOUND\",Me[Me.TOO_MANY_MATCHING_WORKSPACES=22]=\"TOO_MANY_MATCHING_WORKSPACES\",Me[Me.CONSTRAINTS_MISSING_DEPENDENCY=23]=\"CONSTRAINTS_MISSING_DEPENDENCY\",Me[Me.CONSTRAINTS_INCOMPATIBLE_DEPENDENCY=24]=\"CONSTRAINTS_INCOMPATIBLE_DEPENDENCY\",Me[Me.CONSTRAINTS_EXTRANEOUS_DEPENDENCY=25]=\"CONSTRAINTS_EXTRANEOUS_DEPENDENCY\",Me[Me.CONSTRAINTS_INVALID_DEPENDENCY=26]=\"CONSTRAINTS_INVALID_DEPENDENCY\",Me[Me.CANT_SUGGEST_RESOLUTIONS=27]=\"CANT_SUGGEST_RESOLUTIONS\",Me[Me.FROZEN_LOCKFILE_EXCEPTION=28]=\"FROZEN_LOCKFILE_EXCEPTION\",Me[Me.CROSS_DRIVE_VIRTUAL_LOCAL=29]=\"CROSS_DRIVE_VIRTUAL_LOCAL\",Me[Me.FETCH_FAILED=30]=\"FETCH_FAILED\",Me[Me.DANGEROUS_NODE_MODULES=31]=\"DANGEROUS_NODE_MODULES\",Me[Me.NODE_GYP_INJECTED=32]=\"NODE_GYP_INJECTED\",Me[Me.AUTHENTICATION_NOT_FOUND=33]=\"AUTHENTICATION_NOT_FOUND\",Me[Me.INVALID_CONFIGURATION_KEY=34]=\"INVALID_CONFIGURATION_KEY\",Me[Me.NETWORK_ERROR=35]=\"NETWORK_ERROR\",Me[Me.LIFECYCLE_SCRIPT=36]=\"LIFECYCLE_SCRIPT\",Me[Me.CONSTRAINTS_MISSING_FIELD=37]=\"CONSTRAINTS_MISSING_FIELD\",Me[Me.CONSTRAINTS_INCOMPATIBLE_FIELD=38]=\"CONSTRAINTS_INCOMPATIBLE_FIELD\",Me[Me.CONSTRAINTS_EXTRANEOUS_FIELD=39]=\"CONSTRAINTS_EXTRANEOUS_FIELD\",Me[Me.CONSTRAINTS_INVALID_FIELD=40]=\"CONSTRAINTS_INVALID_FIELD\",Me[Me.AUTHENTICATION_INVALID=41]=\"AUTHENTICATION_INVALID\",Me[Me.PROLOG_UNKNOWN_ERROR=42]=\"PROLOG_UNKNOWN_ERROR\",Me[Me.PROLOG_SYNTAX_ERROR=43]=\"PROLOG_SYNTAX_ERROR\",Me[Me.PROLOG_EXISTENCE_ERROR=44]=\"PROLOG_EXISTENCE_ERROR\",Me[Me.STACK_OVERFLOW_RESOLUTION=45]=\"STACK_OVERFLOW_RESOLUTION\",Me[Me.AUTOMERGE_FAILED_TO_PARSE=46]=\"AUTOMERGE_FAILED_TO_PARSE\",Me[Me.AUTOMERGE_IMMUTABLE=47]=\"AUTOMERGE_IMMUTABLE\",Me[Me.AUTOMERGE_SUCCESS=48]=\"AUTOMERGE_SUCCESS\",Me[Me.AUTOMERGE_REQUIRED=49]=\"AUTOMERGE_REQUIRED\",Me[Me.DEPRECATED_CLI_SETTINGS=50]=\"DEPRECATED_CLI_SETTINGS\",Me[Me.PLUGIN_NAME_NOT_FOUND=51]=\"PLUGIN_NAME_NOT_FOUND\",Me[Me.INVALID_PLUGIN_REFERENCE=52]=\"INVALID_PLUGIN_REFERENCE\",Me[Me.CONSTRAINTS_AMBIGUITY=53]=\"CONSTRAINTS_AMBIGUITY\",Me[Me.CACHE_OUTSIDE_PROJECT=54]=\"CACHE_OUTSIDE_PROJECT\",Me[Me.IMMUTABLE_INSTALL=55]=\"IMMUTABLE_INSTALL\",Me[Me.IMMUTABLE_CACHE=56]=\"IMMUTABLE_CACHE\",Me[Me.INVALID_MANIFEST=57]=\"INVALID_MANIFEST\",Me[Me.PACKAGE_PREPARATION_FAILED=58]=\"PACKAGE_PREPARATION_FAILED\",Me[Me.INVALID_RANGE_PEER_DEPENDENCY=59]=\"INVALID_RANGE_PEER_DEPENDENCY\",Me[Me.INCOMPATIBLE_PEER_DEPENDENCY=60]=\"INCOMPATIBLE_PEER_DEPENDENCY\",Me[Me.DEPRECATED_PACKAGE=61]=\"DEPRECATED_PACKAGE\",Me[Me.INCOMPATIBLE_OS=62]=\"INCOMPATIBLE_OS\",Me[Me.INCOMPATIBLE_CPU=63]=\"INCOMPATIBLE_CPU\",Me[Me.FROZEN_ARTIFACT_EXCEPTION=64]=\"FROZEN_ARTIFACT_EXCEPTION\",Me[Me.TELEMETRY_NOTICE=65]=\"TELEMETRY_NOTICE\",Me[Me.PATCH_HUNK_FAILED=66]=\"PATCH_HUNK_FAILED\",Me[Me.INVALID_CONFIGURATION_VALUE=67]=\"INVALID_CONFIGURATION_VALUE\",Me[Me.UNUSED_PACKAGE_EXTENSION=68]=\"UNUSED_PACKAGE_EXTENSION\",Me[Me.REDUNDANT_PACKAGE_EXTENSION=69]=\"REDUNDANT_PACKAGE_EXTENSION\",Me[Me.AUTO_NM_SUCCESS=70]=\"AUTO_NM_SUCCESS\",Me[Me.NM_CANT_INSTALL_EXTERNAL_SOFT_LINK=71]=\"NM_CANT_INSTALL_EXTERNAL_SOFT_LINK\",Me[Me.NM_PRESERVE_SYMLINKS_REQUIRED=72]=\"NM_PRESERVE_SYMLINKS_REQUIRED\",Me[Me.UPDATE_LOCKFILE_ONLY_SKIP_LINK=73]=\"UPDATE_LOCKFILE_ONLY_SKIP_LINK\",Me[Me.NM_HARDLINKS_MODE_DOWNGRADED=74]=\"NM_HARDLINKS_MODE_DOWNGRADED\",Me[Me.PROLOG_INSTANTIATION_ERROR=75]=\"PROLOG_INSTANTIATION_ERROR\",Me[Me.INCOMPATIBLE_ARCHITECTURE=76]=\"INCOMPATIBLE_ARCHITECTURE\",Me[Me.GHOST_ARCHITECTURE=77]=\"GHOST_ARCHITECTURE\",Me[Me.RESOLUTION_MISMATCH=78]=\"RESOLUTION_MISMATCH\",Me[Me.PROLOG_LIMIT_EXCEEDED=79]=\"PROLOG_LIMIT_EXCEEDED\",Me[Me.NETWORK_DISABLED=80]=\"NETWORK_DISABLED\",Me[Me.NETWORK_UNSAFE_HTTP=81]=\"NETWORK_UNSAFE_HTTP\",Me[Me.RESOLUTION_FAILED=82]=\"RESOLUTION_FAILED\",Me[Me.AUTOMERGE_GIT_ERROR=83]=\"AUTOMERGE_GIT_ERROR\",Me[Me.CONSTRAINTS_CHECK_FAILED=84]=\"CONSTRAINTS_CHECK_FAILED\",Me[Me.UPDATED_RESOLUTION_RECORD=85]=\"UPDATED_RESOLUTION_RECORD\",Me[Me.EXPLAIN_PEER_DEPENDENCIES_CTA=86]=\"EXPLAIN_PEER_DEPENDENCIES_CTA\",Me[Me.MIGRATION_SUCCESS=87]=\"MIGRATION_SUCCESS\",Me[Me.VERSION_NOTICE=88]=\"VERSION_NOTICE\",Me[Me.TIPS_NOTICE=89]=\"TIPS_NOTICE\",Me[Me.OFFLINE_MODE_ENABLED=90]=\"OFFLINE_MODE_ENABLED\",Me[Me.INVALID_PROVENANCE_ENVIRONMENT=91]=\"INVALID_PROVENANCE_ENVIRONMENT\",Me))(Br||{})});var aB=_((ZTt,wne)=>{var GYe=\"2.0.0\",qYe=Number.MAX_SAFE_INTEGER||9007199254740991,WYe=16,YYe=250,VYe=[\"major\",\"premajor\",\"minor\",\"preminor\",\"patch\",\"prepatch\",\"prerelease\"];wne.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:WYe,MAX_SAFE_BUILD_LENGTH:YYe,MAX_SAFE_INTEGER:qYe,RELEASE_TYPES:VYe,SEMVER_SPEC_VERSION:GYe,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var lB=_(($Tt,Bne)=>{var JYe=typeof process==\"object\"&&process.env&&process.env.NODE_DEBUG&&/\\bsemver\\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error(\"SEMVER\",...t):()=>{};Bne.exports=JYe});var vE=_((Bp,vne)=>{var{MAX_SAFE_COMPONENT_LENGTH:P_,MAX_SAFE_BUILD_LENGTH:KYe,MAX_LENGTH:zYe}=aB(),XYe=lB();Bp=vne.exports={};var ZYe=Bp.re=[],$Ye=Bp.safeRe=[],rr=Bp.src=[],nr=Bp.t={},eVe=0,x_=\"[a-zA-Z0-9-]\",tVe=[[\"\\\\s\",1],[\"\\\\d\",zYe],[x_,KYe]],rVe=t=>{for(let[e,r]of tVe)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},Jr=(t,e,r)=>{let s=rVe(e),a=eVe++;XYe(t,a,e),nr[t]=a,rr[a]=e,ZYe[a]=new RegExp(e,r?\"g\":void 0),$Ye[a]=new RegExp(s,r?\"g\":void 0)};Jr(\"NUMERICIDENTIFIER\",\"0|[1-9]\\\\d*\");Jr(\"NUMERICIDENTIFIERLOOSE\",\"\\\\d+\");Jr(\"NONNUMERICIDENTIFIER\",`\\\\d*[a-zA-Z-]${x_}*`);Jr(\"MAINVERSION\",`(${rr[nr.NUMERICIDENTIFIER]})\\\\.(${rr[nr.NUMERICIDENTIFIER]})\\\\.(${rr[nr.NUMERICIDENTIFIER]})`);Jr(\"MAINVERSIONLOOSE\",`(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})\\\\.(${rr[nr.NUMERICIDENTIFIERLOOSE]})`);Jr(\"PRERELEASEIDENTIFIER\",`(?:${rr[nr.NUMERICIDENTIFIER]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASEIDENTIFIERLOOSE\",`(?:${rr[nr.NUMERICIDENTIFIERLOOSE]}|${rr[nr.NONNUMERICIDENTIFIER]})`);Jr(\"PRERELEASE\",`(?:-(${rr[nr.PRERELEASEIDENTIFIER]}(?:\\\\.${rr[nr.PRERELEASEIDENTIFIER]})*))`);Jr(\"PRERELEASELOOSE\",`(?:-?(${rr[nr.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${rr[nr.PRERELEASEIDENTIFIERLOOSE]})*))`);Jr(\"BUILDIDENTIFIER\",`${x_}+`);Jr(\"BUILD\",`(?:\\\\+(${rr[nr.BUILDIDENTIFIER]}(?:\\\\.${rr[nr.BUILDIDENTIFIER]})*))`);Jr(\"FULLPLAIN\",`v?${rr[nr.MAINVERSION]}${rr[nr.PRERELEASE]}?${rr[nr.BUILD]}?`);Jr(\"FULL\",`^${rr[nr.FULLPLAIN]}$`);Jr(\"LOOSEPLAIN\",`[v=\\\\s]*${rr[nr.MAINVERSIONLOOSE]}${rr[nr.PRERELEASELOOSE]}?${rr[nr.BUILD]}?`);Jr(\"LOOSE\",`^${rr[nr.LOOSEPLAIN]}$`);Jr(\"GTLT\",\"((?:<|>)?=?)\");Jr(\"XRANGEIDENTIFIERLOOSE\",`${rr[nr.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);Jr(\"XRANGEIDENTIFIER\",`${rr[nr.NUMERICIDENTIFIER]}|x|X|\\\\*`);Jr(\"XRANGEPLAIN\",`[v=\\\\s]*(${rr[nr.XRANGEIDENTIFIER]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIER]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIER]})(?:${rr[nr.PRERELEASE]})?${rr[nr.BUILD]}?)?)?`);Jr(\"XRANGEPLAINLOOSE\",`[v=\\\\s]*(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${rr[nr.XRANGEIDENTIFIERLOOSE]})(?:${rr[nr.PRERELEASELOOSE]})?${rr[nr.BUILD]}?)?)?`);Jr(\"XRANGE\",`^${rr[nr.GTLT]}\\\\s*${rr[nr.XRANGEPLAIN]}$`);Jr(\"XRANGELOOSE\",`^${rr[nr.GTLT]}\\\\s*${rr[nr.XRANGEPLAINLOOSE]}$`);Jr(\"COERCEPLAIN\",`(^|[^\\\\d])(\\\\d{1,${P_}})(?:\\\\.(\\\\d{1,${P_}}))?(?:\\\\.(\\\\d{1,${P_}}))?`);Jr(\"COERCE\",`${rr[nr.COERCEPLAIN]}(?:$|[^\\\\d])`);Jr(\"COERCEFULL\",rr[nr.COERCEPLAIN]+`(?:${rr[nr.PRERELEASE]})?(?:${rr[nr.BUILD]})?(?:$|[^\\\\d])`);Jr(\"COERCERTL\",rr[nr.COERCE],!0);Jr(\"COERCERTLFULL\",rr[nr.COERCEFULL],!0);Jr(\"LONETILDE\",\"(?:~>?)\");Jr(\"TILDETRIM\",`(\\\\s*)${rr[nr.LONETILDE]}\\\\s+`,!0);Bp.tildeTrimReplace=\"$1~\";Jr(\"TILDE\",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAIN]}$`);Jr(\"TILDELOOSE\",`^${rr[nr.LONETILDE]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr(\"LONECARET\",\"(?:\\\\^)\");Jr(\"CARETTRIM\",`(\\\\s*)${rr[nr.LONECARET]}\\\\s+`,!0);Bp.caretTrimReplace=\"$1^\";Jr(\"CARET\",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAIN]}$`);Jr(\"CARETLOOSE\",`^${rr[nr.LONECARET]}${rr[nr.XRANGEPLAINLOOSE]}$`);Jr(\"COMPARATORLOOSE\",`^${rr[nr.GTLT]}\\\\s*(${rr[nr.LOOSEPLAIN]})$|^$`);Jr(\"COMPARATOR\",`^${rr[nr.GTLT]}\\\\s*(${rr[nr.FULLPLAIN]})$|^$`);Jr(\"COMPARATORTRIM\",`(\\\\s*)${rr[nr.GTLT]}\\\\s*(${rr[nr.LOOSEPLAIN]}|${rr[nr.XRANGEPLAIN]})`,!0);Bp.comparatorTrimReplace=\"$1$2$3\";Jr(\"HYPHENRANGE\",`^\\\\s*(${rr[nr.XRANGEPLAIN]})\\\\s+-\\\\s+(${rr[nr.XRANGEPLAIN]})\\\\s*$`);Jr(\"HYPHENRANGELOOSE\",`^\\\\s*(${rr[nr.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${rr[nr.XRANGEPLAINLOOSE]})\\\\s*$`);Jr(\"STAR\",\"(<|>)?=?\\\\s*\\\\*\");Jr(\"GTE0\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");Jr(\"GTE0PRE\",\"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\")});var qx=_((eRt,Sne)=>{var nVe=Object.freeze({loose:!0}),iVe=Object.freeze({}),sVe=t=>t?typeof t!=\"object\"?nVe:t:iVe;Sne.exports=sVe});var k_=_((tRt,Pne)=>{var Dne=/^[0-9]+$/,bne=(t,e)=>{let r=Dne.test(t),s=Dne.test(e);return r&&s&&(t=+t,e=+e),t===e?0:r&&!s?-1:s&&!r?1:t<e?-1:1},oVe=(t,e)=>bne(e,t);Pne.exports={compareIdentifiers:bne,rcompareIdentifiers:oVe}});var jo=_((rRt,Tne)=>{var Wx=lB(),{MAX_LENGTH:xne,MAX_SAFE_INTEGER:Yx}=aB(),{safeRe:kne,t:Qne}=vE(),aVe=qx(),{compareIdentifiers:SE}=k_(),Q_=class t{constructor(e,r){if(r=aVe(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!=\"string\")throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof e}\".`);if(e.length>xne)throw new TypeError(`version is longer than ${xne} characters`);Wx(\"SemVer\",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let s=e.trim().match(r.loose?kne[Qne.LOOSE]:kne[Qne.FULL]);if(!s)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+s[1],this.minor=+s[2],this.patch=+s[3],this.major>Yx||this.major<0)throw new TypeError(\"Invalid major version\");if(this.minor>Yx||this.minor<0)throw new TypeError(\"Invalid minor version\");if(this.patch>Yx||this.patch<0)throw new TypeError(\"Invalid patch version\");s[4]?this.prerelease=s[4].split(\".\").map(a=>{if(/^[0-9]+$/.test(a)){let n=+a;if(n>=0&&n<Yx)return n}return a}):this.prerelease=[],this.build=s[5]?s[5].split(\".\"):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(\".\")}`),this.version}toString(){return this.version}compare(e){if(Wx(\"SemVer.compare\",this.version,this.options,e),!(e instanceof t)){if(typeof e==\"string\"&&e===this.version)return 0;e=new t(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof t||(e=new t(e,this.options)),SE(this.major,e.major)||SE(this.minor,e.minor)||SE(this.patch,e.patch)}comparePre(e){if(e instanceof t||(e=new t(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let s=this.prerelease[r],a=e.prerelease[r];if(Wx(\"prerelease compare\",r,s,a),s===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(s===void 0)return-1;if(s===a)continue;return SE(s,a)}while(++r)}compareBuild(e){e instanceof t||(e=new t(e,this.options));let r=0;do{let s=this.build[r],a=e.build[r];if(Wx(\"prerelease compare\",r,s,a),s===void 0&&a===void 0)return 0;if(a===void 0)return 1;if(s===void 0)return-1;if(s===a)continue;return SE(s,a)}while(++r)}inc(e,r,s){switch(e){case\"premajor\":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc(\"pre\",r,s);break;case\"preminor\":this.prerelease.length=0,this.patch=0,this.minor++,this.inc(\"pre\",r,s);break;case\"prepatch\":this.prerelease.length=0,this.inc(\"patch\",r,s),this.inc(\"pre\",r,s);break;case\"prerelease\":this.prerelease.length===0&&this.inc(\"patch\",r,s),this.inc(\"pre\",r,s);break;case\"major\":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case\"minor\":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case\"patch\":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case\"pre\":{let a=Number(s)?1:0;if(!r&&s===!1)throw new Error(\"invalid increment argument: identifier is empty\");if(this.prerelease.length===0)this.prerelease=[a];else{let n=this.prerelease.length;for(;--n>=0;)typeof this.prerelease[n]==\"number\"&&(this.prerelease[n]++,n=-2);if(n===-1){if(r===this.prerelease.join(\".\")&&s===!1)throw new Error(\"invalid increment argument: identifier already exists\");this.prerelease.push(a)}}if(r){let n=[r,a];s===!1&&(n=[r]),SE(this.prerelease[0],r)===0?isNaN(this.prerelease[1])&&(this.prerelease=n):this.prerelease=n}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(\".\")}`),this}};Tne.exports=Q_});var Md=_((nRt,Fne)=>{var Rne=jo(),lVe=(t,e,r=!1)=>{if(t instanceof Rne)return t;try{return new Rne(t,e)}catch(s){if(!r)return null;throw s}};Fne.exports=lVe});var One=_((iRt,Nne)=>{var cVe=Md(),uVe=(t,e)=>{let r=cVe(t,e);return r?r.version:null};Nne.exports=uVe});var Mne=_((sRt,Lne)=>{var fVe=Md(),AVe=(t,e)=>{let r=fVe(t.trim().replace(/^[=v]+/,\"\"),e);return r?r.version:null};Lne.exports=AVe});var Hne=_((oRt,_ne)=>{var Une=jo(),pVe=(t,e,r,s,a)=>{typeof r==\"string\"&&(a=s,s=r,r=void 0);try{return new Une(t instanceof Une?t.version:t,r).inc(e,s,a).version}catch{return null}};_ne.exports=pVe});var qne=_((aRt,Gne)=>{var jne=Md(),hVe=(t,e)=>{let r=jne(t,null,!0),s=jne(e,null,!0),a=r.compare(s);if(a===0)return null;let n=a>0,c=n?r:s,f=n?s:r,p=!!c.prerelease.length;if(!!f.prerelease.length&&!p)return!f.patch&&!f.minor?\"major\":c.patch?\"patch\":c.minor?\"minor\":\"major\";let E=p?\"pre\":\"\";return r.major!==s.major?E+\"major\":r.minor!==s.minor?E+\"minor\":r.patch!==s.patch?E+\"patch\":\"prerelease\"};Gne.exports=hVe});var Yne=_((lRt,Wne)=>{var gVe=jo(),dVe=(t,e)=>new gVe(t,e).major;Wne.exports=dVe});var Jne=_((cRt,Vne)=>{var mVe=jo(),yVe=(t,e)=>new mVe(t,e).minor;Vne.exports=yVe});var zne=_((uRt,Kne)=>{var EVe=jo(),IVe=(t,e)=>new EVe(t,e).patch;Kne.exports=IVe});var Zne=_((fRt,Xne)=>{var CVe=Md(),wVe=(t,e)=>{let r=CVe(t,e);return r&&r.prerelease.length?r.prerelease:null};Xne.exports=wVe});var Bc=_((ARt,eie)=>{var $ne=jo(),BVe=(t,e,r)=>new $ne(t,r).compare(new $ne(e,r));eie.exports=BVe});var rie=_((pRt,tie)=>{var vVe=Bc(),SVe=(t,e,r)=>vVe(e,t,r);tie.exports=SVe});var iie=_((hRt,nie)=>{var DVe=Bc(),bVe=(t,e)=>DVe(t,e,!0);nie.exports=bVe});var Vx=_((gRt,oie)=>{var sie=jo(),PVe=(t,e,r)=>{let s=new sie(t,r),a=new sie(e,r);return s.compare(a)||s.compareBuild(a)};oie.exports=PVe});var lie=_((dRt,aie)=>{var xVe=Vx(),kVe=(t,e)=>t.sort((r,s)=>xVe(r,s,e));aie.exports=kVe});var uie=_((mRt,cie)=>{var QVe=Vx(),TVe=(t,e)=>t.sort((r,s)=>QVe(s,r,e));cie.exports=TVe});var cB=_((yRt,fie)=>{var RVe=Bc(),FVe=(t,e,r)=>RVe(t,e,r)>0;fie.exports=FVe});var Jx=_((ERt,Aie)=>{var NVe=Bc(),OVe=(t,e,r)=>NVe(t,e,r)<0;Aie.exports=OVe});var T_=_((IRt,pie)=>{var LVe=Bc(),MVe=(t,e,r)=>LVe(t,e,r)===0;pie.exports=MVe});var R_=_((CRt,hie)=>{var UVe=Bc(),_Ve=(t,e,r)=>UVe(t,e,r)!==0;hie.exports=_Ve});var Kx=_((wRt,gie)=>{var HVe=Bc(),jVe=(t,e,r)=>HVe(t,e,r)>=0;gie.exports=jVe});var zx=_((BRt,die)=>{var GVe=Bc(),qVe=(t,e,r)=>GVe(t,e,r)<=0;die.exports=qVe});var F_=_((vRt,mie)=>{var WVe=T_(),YVe=R_(),VVe=cB(),JVe=Kx(),KVe=Jx(),zVe=zx(),XVe=(t,e,r,s)=>{switch(e){case\"===\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t===r;case\"!==\":return typeof t==\"object\"&&(t=t.version),typeof r==\"object\"&&(r=r.version),t!==r;case\"\":case\"=\":case\"==\":return WVe(t,r,s);case\"!=\":return YVe(t,r,s);case\">\":return VVe(t,r,s);case\">=\":return JVe(t,r,s);case\"<\":return KVe(t,r,s);case\"<=\":return zVe(t,r,s);default:throw new TypeError(`Invalid operator: ${e}`)}};mie.exports=XVe});var Eie=_((SRt,yie)=>{var ZVe=jo(),$Ve=Md(),{safeRe:Xx,t:Zx}=vE(),e7e=(t,e)=>{if(t instanceof ZVe)return t;if(typeof t==\"number\"&&(t=String(t)),typeof t!=\"string\")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?Xx[Zx.COERCEFULL]:Xx[Zx.COERCE]);else{let p=e.includePrerelease?Xx[Zx.COERCERTLFULL]:Xx[Zx.COERCERTL],h;for(;(h=p.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||h.index+h[0].length!==r.index+r[0].length)&&(r=h),p.lastIndex=h.index+h[1].length+h[2].length;p.lastIndex=-1}if(r===null)return null;let s=r[2],a=r[3]||\"0\",n=r[4]||\"0\",c=e.includePrerelease&&r[5]?`-${r[5]}`:\"\",f=e.includePrerelease&&r[6]?`+${r[6]}`:\"\";return $Ve(`${s}.${a}.${n}${c}${f}`,e)};yie.exports=e7e});var Cie=_((DRt,Iie)=>{\"use strict\";Iie.exports=function(t){t.prototype[Symbol.iterator]=function*(){for(let e=this.head;e;e=e.next)yield e.value}}});var $x=_((bRt,wie)=>{\"use strict\";wie.exports=Fn;Fn.Node=Ud;Fn.create=Fn;function Fn(t){var e=this;if(e instanceof Fn||(e=new Fn),e.tail=null,e.head=null,e.length=0,t&&typeof t.forEach==\"function\")t.forEach(function(a){e.push(a)});else if(arguments.length>0)for(var r=0,s=arguments.length;r<s;r++)e.push(arguments[r]);return e}Fn.prototype.removeNode=function(t){if(t.list!==this)throw new Error(\"removing node which does not belong to this list\");var e=t.next,r=t.prev;return e&&(e.prev=r),r&&(r.next=e),t===this.head&&(this.head=e),t===this.tail&&(this.tail=r),t.list.length--,t.next=null,t.prev=null,t.list=null,e};Fn.prototype.unshiftNode=function(t){if(t!==this.head){t.list&&t.list.removeNode(t);var e=this.head;t.list=this,t.next=e,e&&(e.prev=t),this.head=t,this.tail||(this.tail=t),this.length++}};Fn.prototype.pushNode=function(t){if(t!==this.tail){t.list&&t.list.removeNode(t);var e=this.tail;t.list=this,t.prev=e,e&&(e.next=t),this.tail=t,this.head||(this.head=t),this.length++}};Fn.prototype.push=function(){for(var t=0,e=arguments.length;t<e;t++)r7e(this,arguments[t]);return this.length};Fn.prototype.unshift=function(){for(var t=0,e=arguments.length;t<e;t++)n7e(this,arguments[t]);return this.length};Fn.prototype.pop=function(){if(this.tail){var t=this.tail.value;return this.tail=this.tail.prev,this.tail?this.tail.next=null:this.head=null,this.length--,t}};Fn.prototype.shift=function(){if(this.head){var t=this.head.value;return this.head=this.head.next,this.head?this.head.prev=null:this.tail=null,this.length--,t}};Fn.prototype.forEach=function(t,e){e=e||this;for(var r=this.head,s=0;r!==null;s++)t.call(e,r.value,s,this),r=r.next};Fn.prototype.forEachReverse=function(t,e){e=e||this;for(var r=this.tail,s=this.length-1;r!==null;s--)t.call(e,r.value,s,this),r=r.prev};Fn.prototype.get=function(t){for(var e=0,r=this.head;r!==null&&e<t;e++)r=r.next;if(e===t&&r!==null)return r.value};Fn.prototype.getReverse=function(t){for(var e=0,r=this.tail;r!==null&&e<t;e++)r=r.prev;if(e===t&&r!==null)return r.value};Fn.prototype.map=function(t,e){e=e||this;for(var r=new Fn,s=this.head;s!==null;)r.push(t.call(e,s.value,this)),s=s.next;return r};Fn.prototype.mapReverse=function(t,e){e=e||this;for(var r=new Fn,s=this.tail;s!==null;)r.push(t.call(e,s.value,this)),s=s.prev;return r};Fn.prototype.reduce=function(t,e){var r,s=this.head;if(arguments.length>1)r=e;else if(this.head)s=this.head.next,r=this.head.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=0;s!==null;a++)r=t(r,s.value,a),s=s.next;return r};Fn.prototype.reduceReverse=function(t,e){var r,s=this.tail;if(arguments.length>1)r=e;else if(this.tail)s=this.tail.prev,r=this.tail.value;else throw new TypeError(\"Reduce of empty list with no initial value\");for(var a=this.length-1;s!==null;a--)r=t(r,s.value,a),s=s.prev;return r};Fn.prototype.toArray=function(){for(var t=new Array(this.length),e=0,r=this.head;r!==null;e++)t[e]=r.value,r=r.next;return t};Fn.prototype.toArrayReverse=function(){for(var t=new Array(this.length),e=0,r=this.tail;r!==null;e++)t[e]=r.value,r=r.prev;return t};Fn.prototype.slice=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Fn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var s=0,a=this.head;a!==null&&s<t;s++)a=a.next;for(;a!==null&&s<e;s++,a=a.next)r.push(a.value);return r};Fn.prototype.sliceReverse=function(t,e){e=e||this.length,e<0&&(e+=this.length),t=t||0,t<0&&(t+=this.length);var r=new Fn;if(e<t||e<0)return r;t<0&&(t=0),e>this.length&&(e=this.length);for(var s=this.length,a=this.tail;a!==null&&s>e;s--)a=a.prev;for(;a!==null&&s>t;s--,a=a.prev)r.push(a.value);return r};Fn.prototype.splice=function(t,e,...r){t>this.length&&(t=this.length-1),t<0&&(t=this.length+t);for(var s=0,a=this.head;a!==null&&s<t;s++)a=a.next;for(var n=[],s=0;a&&s<e;s++)n.push(a.value),a=this.removeNode(a);a===null&&(a=this.tail),a!==this.head&&a!==this.tail&&(a=a.prev);for(var s=0;s<r.length;s++)a=t7e(this,a,r[s]);return n};Fn.prototype.reverse=function(){for(var t=this.head,e=this.tail,r=t;r!==null;r=r.prev){var s=r.prev;r.prev=r.next,r.next=s}return this.head=e,this.tail=t,this};function t7e(t,e,r){var s=e===t.head?new Ud(r,null,e,t):new Ud(r,e,e.next,t);return s.next===null&&(t.tail=s),s.prev===null&&(t.head=s),t.length++,s}function r7e(t,e){t.tail=new Ud(e,t.tail,null,t),t.head||(t.head=t.tail),t.length++}function n7e(t,e){t.head=new Ud(e,null,t.head,t),t.tail||(t.tail=t.head),t.length++}function Ud(t,e,r,s){if(!(this instanceof Ud))return new Ud(t,e,r,s);this.list=s,this.value=t,e?(e.next=this,this.prev=e):this.prev=null,r?(r.prev=this,this.next=r):this.next=null}try{Cie()(Fn)}catch{}});var bie=_((PRt,Die)=>{\"use strict\";var i7e=$x(),_d=Symbol(\"max\"),Sp=Symbol(\"length\"),DE=Symbol(\"lengthCalculator\"),fB=Symbol(\"allowStale\"),Hd=Symbol(\"maxAge\"),vp=Symbol(\"dispose\"),Bie=Symbol(\"noDisposeOnSet\"),Gs=Symbol(\"lruList\"),Lu=Symbol(\"cache\"),Sie=Symbol(\"updateAgeOnGet\"),N_=()=>1,L_=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[_d]=e.max||1/0,s=e.length||N_;if(this[DE]=typeof s!=\"function\"?N_:s,this[fB]=e.stale||!1,e.maxAge&&typeof e.maxAge!=\"number\")throw new TypeError(\"maxAge must be a number\");this[Hd]=e.maxAge||0,this[vp]=e.dispose,this[Bie]=e.noDisposeOnSet||!1,this[Sie]=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[_d]=e||1/0,uB(this)}get max(){return this[_d]}set allowStale(e){this[fB]=!!e}get allowStale(){return this[fB]}set maxAge(e){if(typeof e!=\"number\")throw new TypeError(\"maxAge must be a non-negative number\");this[Hd]=e,uB(this)}get maxAge(){return this[Hd]}set lengthCalculator(e){typeof e!=\"function\"&&(e=N_),e!==this[DE]&&(this[DE]=e,this[Sp]=0,this[Gs].forEach(r=>{r.length=this[DE](r.value,r.key),this[Sp]+=r.length})),uB(this)}get lengthCalculator(){return this[DE]}get length(){return this[Sp]}get itemCount(){return this[Gs].length}rforEach(e,r){r=r||this;for(let s=this[Gs].tail;s!==null;){let a=s.prev;vie(this,e,s,r),s=a}}forEach(e,r){r=r||this;for(let s=this[Gs].head;s!==null;){let a=s.next;vie(this,e,s,r),s=a}}keys(){return this[Gs].toArray().map(e=>e.key)}values(){return this[Gs].toArray().map(e=>e.value)}reset(){this[vp]&&this[Gs]&&this[Gs].length&&this[Gs].forEach(e=>this[vp](e.key,e.value)),this[Lu]=new Map,this[Gs]=new i7e,this[Sp]=0}dump(){return this[Gs].map(e=>ek(this,e)?!1:{k:e.key,v:e.value,e:e.now+(e.maxAge||0)}).toArray().filter(e=>e)}dumpLru(){return this[Gs]}set(e,r,s){if(s=s||this[Hd],s&&typeof s!=\"number\")throw new TypeError(\"maxAge must be a number\");let a=s?Date.now():0,n=this[DE](r,e);if(this[Lu].has(e)){if(n>this[_d])return bE(this,this[Lu].get(e)),!1;let p=this[Lu].get(e).value;return this[vp]&&(this[Bie]||this[vp](e,p.value)),p.now=a,p.maxAge=s,p.value=r,this[Sp]+=n-p.length,p.length=n,this.get(e),uB(this),!0}let c=new M_(e,r,n,a,s);return c.length>this[_d]?(this[vp]&&this[vp](e,r),!1):(this[Sp]+=c.length,this[Gs].unshift(c),this[Lu].set(e,this[Gs].head),uB(this),!0)}has(e){if(!this[Lu].has(e))return!1;let r=this[Lu].get(e).value;return!ek(this,r)}get(e){return O_(this,e,!0)}peek(e){return O_(this,e,!1)}pop(){let e=this[Gs].tail;return e?(bE(this,e),e.value):null}del(e){bE(this,this[Lu].get(e))}load(e){this.reset();let r=Date.now();for(let s=e.length-1;s>=0;s--){let a=e[s],n=a.e||0;if(n===0)this.set(a.k,a.v);else{let c=n-r;c>0&&this.set(a.k,a.v,c)}}}prune(){this[Lu].forEach((e,r)=>O_(this,r,!1))}},O_=(t,e,r)=>{let s=t[Lu].get(e);if(s){let a=s.value;if(ek(t,a)){if(bE(t,s),!t[fB])return}else r&&(t[Sie]&&(s.value.now=Date.now()),t[Gs].unshiftNode(s));return a.value}},ek=(t,e)=>{if(!e||!e.maxAge&&!t[Hd])return!1;let r=Date.now()-e.now;return e.maxAge?r>e.maxAge:t[Hd]&&r>t[Hd]},uB=t=>{if(t[Sp]>t[_d])for(let e=t[Gs].tail;t[Sp]>t[_d]&&e!==null;){let r=e.prev;bE(t,e),e=r}},bE=(t,e)=>{if(e){let r=e.value;t[vp]&&t[vp](r.key,r.value),t[Sp]-=r.length,t[Lu].delete(r.key),t[Gs].removeNode(e)}},M_=class{constructor(e,r,s,a,n){this.key=e,this.value=r,this.length=s,this.now=a,this.maxAge=n||0}},vie=(t,e,r,s)=>{let a=r.value;ek(t,a)&&(bE(t,r),t[fB]||(a=void 0)),a&&e.call(s,a.value,a.key,t)};Die.exports=L_});var vc=_((xRt,Qie)=>{var U_=class t{constructor(e,r){if(r=o7e(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof __)return this.raw=e.value,this.set=[[e]],this.format(),this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().split(/\\s+/).join(\" \"),this.set=this.raw.split(\"||\").map(s=>this.parseRange(s.trim())).filter(s=>s.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let s=this.set[0];if(this.set=this.set.filter(a=>!xie(a[0])),this.set.length===0)this.set=[s];else if(this.set.length>1){for(let a of this.set)if(a.length===1&&p7e(a[0])){this.set=[a];break}}}this.format()}format(){return this.range=this.set.map(e=>e.join(\" \").trim()).join(\"||\").trim(),this.range}toString(){return this.range}parseRange(e){let s=((this.options.includePrerelease&&f7e)|(this.options.loose&&A7e))+\":\"+e,a=Pie.get(s);if(a)return a;let n=this.options.loose,c=n?sl[wa.HYPHENRANGELOOSE]:sl[wa.HYPHENRANGE];e=e.replace(c,B7e(this.options.includePrerelease)),vi(\"hyphen replace\",e),e=e.replace(sl[wa.COMPARATORTRIM],l7e),vi(\"comparator trim\",e),e=e.replace(sl[wa.TILDETRIM],c7e),vi(\"tilde trim\",e),e=e.replace(sl[wa.CARETTRIM],u7e),vi(\"caret trim\",e);let f=e.split(\" \").map(C=>h7e(C,this.options)).join(\" \").split(/\\s+/).map(C=>w7e(C,this.options));n&&(f=f.filter(C=>(vi(\"loose invalid filter\",C,this.options),!!C.match(sl[wa.COMPARATORLOOSE])))),vi(\"range list\",f);let p=new Map,h=f.map(C=>new __(C,this.options));for(let C of h){if(xie(C))return[C];p.set(C.value,C)}p.size>1&&p.has(\"\")&&p.delete(\"\");let E=[...p.values()];return Pie.set(s,E),E}intersects(e,r){if(!(e instanceof t))throw new TypeError(\"a Range is required\");return this.set.some(s=>kie(s,r)&&e.set.some(a=>kie(a,r)&&s.every(n=>a.every(c=>n.intersects(c,r)))))}test(e){if(!e)return!1;if(typeof e==\"string\")try{e=new a7e(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(v7e(this.set[r],e,this.options))return!0;return!1}};Qie.exports=U_;var s7e=bie(),Pie=new s7e({max:1e3}),o7e=qx(),__=AB(),vi=lB(),a7e=jo(),{safeRe:sl,t:wa,comparatorTrimReplace:l7e,tildeTrimReplace:c7e,caretTrimReplace:u7e}=vE(),{FLAG_INCLUDE_PRERELEASE:f7e,FLAG_LOOSE:A7e}=aB(),xie=t=>t.value===\"<0.0.0-0\",p7e=t=>t.value===\"\",kie=(t,e)=>{let r=!0,s=t.slice(),a=s.pop();for(;r&&s.length;)r=s.every(n=>a.intersects(n,e)),a=s.pop();return r},h7e=(t,e)=>(vi(\"comp\",t,e),t=m7e(t,e),vi(\"caret\",t),t=g7e(t,e),vi(\"tildes\",t),t=E7e(t,e),vi(\"xrange\",t),t=C7e(t,e),vi(\"stars\",t),t),Ba=t=>!t||t.toLowerCase()===\"x\"||t===\"*\",g7e=(t,e)=>t.trim().split(/\\s+/).map(r=>d7e(r,e)).join(\" \"),d7e=(t,e)=>{let r=e.loose?sl[wa.TILDELOOSE]:sl[wa.TILDE];return t.replace(r,(s,a,n,c,f)=>{vi(\"tilde\",t,s,a,n,c,f);let p;return Ba(a)?p=\"\":Ba(n)?p=`>=${a}.0.0 <${+a+1}.0.0-0`:Ba(c)?p=`>=${a}.${n}.0 <${a}.${+n+1}.0-0`:f?(vi(\"replaceTilde pr\",f),p=`>=${a}.${n}.${c}-${f} <${a}.${+n+1}.0-0`):p=`>=${a}.${n}.${c} <${a}.${+n+1}.0-0`,vi(\"tilde return\",p),p})},m7e=(t,e)=>t.trim().split(/\\s+/).map(r=>y7e(r,e)).join(\" \"),y7e=(t,e)=>{vi(\"caret\",t,e);let r=e.loose?sl[wa.CARETLOOSE]:sl[wa.CARET],s=e.includePrerelease?\"-0\":\"\";return t.replace(r,(a,n,c,f,p)=>{vi(\"caret\",t,a,n,c,f,p);let h;return Ba(n)?h=\"\":Ba(c)?h=`>=${n}.0.0${s} <${+n+1}.0.0-0`:Ba(f)?n===\"0\"?h=`>=${n}.${c}.0${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.0${s} <${+n+1}.0.0-0`:p?(vi(\"replaceCaret pr\",p),n===\"0\"?c===\"0\"?h=`>=${n}.${c}.${f}-${p} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}-${p} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f}-${p} <${+n+1}.0.0-0`):(vi(\"no pr\"),n===\"0\"?c===\"0\"?h=`>=${n}.${c}.${f}${s} <${n}.${c}.${+f+1}-0`:h=`>=${n}.${c}.${f}${s} <${n}.${+c+1}.0-0`:h=`>=${n}.${c}.${f} <${+n+1}.0.0-0`),vi(\"caret return\",h),h})},E7e=(t,e)=>(vi(\"replaceXRanges\",t,e),t.split(/\\s+/).map(r=>I7e(r,e)).join(\" \")),I7e=(t,e)=>{t=t.trim();let r=e.loose?sl[wa.XRANGELOOSE]:sl[wa.XRANGE];return t.replace(r,(s,a,n,c,f,p)=>{vi(\"xRange\",t,s,a,n,c,f,p);let h=Ba(n),E=h||Ba(c),C=E||Ba(f),S=C;return a===\"=\"&&S&&(a=\"\"),p=e.includePrerelease?\"-0\":\"\",h?a===\">\"||a===\"<\"?s=\"<0.0.0-0\":s=\"*\":a&&S?(E&&(c=0),f=0,a===\">\"?(a=\">=\",E?(n=+n+1,c=0,f=0):(c=+c+1,f=0)):a===\"<=\"&&(a=\"<\",E?n=+n+1:c=+c+1),a===\"<\"&&(p=\"-0\"),s=`${a+n}.${c}.${f}${p}`):E?s=`>=${n}.0.0${p} <${+n+1}.0.0-0`:C&&(s=`>=${n}.${c}.0${p} <${n}.${+c+1}.0-0`),vi(\"xRange return\",s),s})},C7e=(t,e)=>(vi(\"replaceStars\",t,e),t.trim().replace(sl[wa.STAR],\"\")),w7e=(t,e)=>(vi(\"replaceGTE0\",t,e),t.trim().replace(sl[e.includePrerelease?wa.GTE0PRE:wa.GTE0],\"\")),B7e=t=>(e,r,s,a,n,c,f,p,h,E,C,S,P)=>(Ba(s)?r=\"\":Ba(a)?r=`>=${s}.0.0${t?\"-0\":\"\"}`:Ba(n)?r=`>=${s}.${a}.0${t?\"-0\":\"\"}`:c?r=`>=${r}`:r=`>=${r}${t?\"-0\":\"\"}`,Ba(h)?p=\"\":Ba(E)?p=`<${+h+1}.0.0-0`:Ba(C)?p=`<${h}.${+E+1}.0-0`:S?p=`<=${h}.${E}.${C}-${S}`:t?p=`<${h}.${E}.${+C+1}-0`:p=`<=${p}`,`${r} ${p}`.trim()),v7e=(t,e,r)=>{for(let s=0;s<t.length;s++)if(!t[s].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let s=0;s<t.length;s++)if(vi(t[s].semver),t[s].semver!==__.ANY&&t[s].semver.prerelease.length>0){let a=t[s].semver;if(a.major===e.major&&a.minor===e.minor&&a.patch===e.patch)return!0}return!1}return!0}});var AB=_((kRt,Lie)=>{var pB=Symbol(\"SemVer ANY\"),G_=class t{static get ANY(){return pB}constructor(e,r){if(r=Tie(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\\s+/).join(\" \"),j_(\"comparator\",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===pB?this.value=\"\":this.value=this.operator+this.semver.version,j_(\"comp\",this)}parse(e){let r=this.options.loose?Rie[Fie.COMPARATORLOOSE]:Rie[Fie.COMPARATOR],s=e.match(r);if(!s)throw new TypeError(`Invalid comparator: ${e}`);this.operator=s[1]!==void 0?s[1]:\"\",this.operator===\"=\"&&(this.operator=\"\"),s[2]?this.semver=new Nie(s[2],this.options.loose):this.semver=pB}toString(){return this.value}test(e){if(j_(\"Comparator.test\",e,this.options.loose),this.semver===pB||e===pB)return!0;if(typeof e==\"string\")try{e=new Nie(e,this.options)}catch{return!1}return H_(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError(\"a Comparator is required\");return this.operator===\"\"?this.value===\"\"?!0:new Oie(e.value,r).test(this.value):e.operator===\"\"?e.value===\"\"?!0:new Oie(this.value,r).test(e.semver):(r=Tie(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(\"=\")||H_(this.semver,\"<\",e.semver,r)&&this.operator.startsWith(\">\")&&e.operator.startsWith(\"<\")||H_(this.semver,\">\",e.semver,r)&&this.operator.startsWith(\"<\")&&e.operator.startsWith(\">\")))}};Lie.exports=G_;var Tie=qx(),{safeRe:Rie,t:Fie}=vE(),H_=F_(),j_=lB(),Nie=jo(),Oie=vc()});var hB=_((QRt,Mie)=>{var S7e=vc(),D7e=(t,e,r)=>{try{e=new S7e(e,r)}catch{return!1}return e.test(t)};Mie.exports=D7e});var _ie=_((TRt,Uie)=>{var b7e=vc(),P7e=(t,e)=>new b7e(t,e).set.map(r=>r.map(s=>s.value).join(\" \").trim().split(\" \"));Uie.exports=P7e});var jie=_((RRt,Hie)=>{var x7e=jo(),k7e=vc(),Q7e=(t,e,r)=>{let s=null,a=null,n=null;try{n=new k7e(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===-1)&&(s=c,a=new x7e(s,r))}),s};Hie.exports=Q7e});var qie=_((FRt,Gie)=>{var T7e=jo(),R7e=vc(),F7e=(t,e,r)=>{let s=null,a=null,n=null;try{n=new R7e(e,r)}catch{return null}return t.forEach(c=>{n.test(c)&&(!s||a.compare(c)===1)&&(s=c,a=new T7e(s,r))}),s};Gie.exports=F7e});var Vie=_((NRt,Yie)=>{var q_=jo(),N7e=vc(),Wie=cB(),O7e=(t,e)=>{t=new N7e(t,e);let r=new q_(\"0.0.0\");if(t.test(r)||(r=new q_(\"0.0.0-0\"),t.test(r)))return r;r=null;for(let s=0;s<t.set.length;++s){let a=t.set[s],n=null;a.forEach(c=>{let f=new q_(c.semver.version);switch(c.operator){case\">\":f.prerelease.length===0?f.patch++:f.prerelease.push(0),f.raw=f.format();case\"\":case\">=\":(!n||Wie(f,n))&&(n=f);break;case\"<\":case\"<=\":break;default:throw new Error(`Unexpected operation: ${c.operator}`)}}),n&&(!r||Wie(r,n))&&(r=n)}return r&&t.test(r)?r:null};Yie.exports=O7e});var Kie=_((ORt,Jie)=>{var L7e=vc(),M7e=(t,e)=>{try{return new L7e(t,e).range||\"*\"}catch{return null}};Jie.exports=M7e});var tk=_((LRt,$ie)=>{var U7e=jo(),Zie=AB(),{ANY:_7e}=Zie,H7e=vc(),j7e=hB(),zie=cB(),Xie=Jx(),G7e=zx(),q7e=Kx(),W7e=(t,e,r,s)=>{t=new U7e(t,s),e=new H7e(e,s);let a,n,c,f,p;switch(r){case\">\":a=zie,n=G7e,c=Xie,f=\">\",p=\">=\";break;case\"<\":a=Xie,n=q7e,c=zie,f=\"<\",p=\"<=\";break;default:throw new TypeError('Must provide a hilo val of \"<\" or \">\"')}if(j7e(t,e,s))return!1;for(let h=0;h<e.set.length;++h){let E=e.set[h],C=null,S=null;if(E.forEach(P=>{P.semver===_7e&&(P=new Zie(\">=0.0.0\")),C=C||P,S=S||P,a(P.semver,C.semver,s)?C=P:c(P.semver,S.semver,s)&&(S=P)}),C.operator===f||C.operator===p||(!S.operator||S.operator===f)&&n(t,S.semver))return!1;if(S.operator===p&&c(t,S.semver))return!1}return!0};$ie.exports=W7e});var tse=_((MRt,ese)=>{var Y7e=tk(),V7e=(t,e,r)=>Y7e(t,e,\">\",r);ese.exports=V7e});var nse=_((URt,rse)=>{var J7e=tk(),K7e=(t,e,r)=>J7e(t,e,\"<\",r);rse.exports=K7e});var ose=_((_Rt,sse)=>{var ise=vc(),z7e=(t,e,r)=>(t=new ise(t,r),e=new ise(e,r),t.intersects(e,r));sse.exports=z7e});var lse=_((HRt,ase)=>{var X7e=hB(),Z7e=Bc();ase.exports=(t,e,r)=>{let s=[],a=null,n=null,c=t.sort((E,C)=>Z7e(E,C,r));for(let E of c)X7e(E,e,r)?(n=E,a||(a=E)):(n&&s.push([a,n]),n=null,a=null);a&&s.push([a,null]);let f=[];for(let[E,C]of s)E===C?f.push(E):!C&&E===c[0]?f.push(\"*\"):C?E===c[0]?f.push(`<=${C}`):f.push(`${E} - ${C}`):f.push(`>=${E}`);let p=f.join(\" || \"),h=typeof e.raw==\"string\"?e.raw:String(e);return p.length<h.length?p:e}});var hse=_((jRt,pse)=>{var cse=vc(),Y_=AB(),{ANY:W_}=Y_,gB=hB(),V_=Bc(),$7e=(t,e,r={})=>{if(t===e)return!0;t=new cse(t,r),e=new cse(e,r);let s=!1;e:for(let a of t.set){for(let n of e.set){let c=tJe(a,n,r);if(s=s||c!==null,c)continue e}if(s)return!1}return!0},eJe=[new Y_(\">=0.0.0-0\")],use=[new Y_(\">=0.0.0\")],tJe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===W_){if(e.length===1&&e[0].semver===W_)return!0;r.includePrerelease?t=eJe:t=use}if(e.length===1&&e[0].semver===W_){if(r.includePrerelease)return!0;e=use}let s=new Set,a,n;for(let P of t)P.operator===\">\"||P.operator===\">=\"?a=fse(a,P,r):P.operator===\"<\"||P.operator===\"<=\"?n=Ase(n,P,r):s.add(P.semver);if(s.size>1)return null;let c;if(a&&n){if(c=V_(a.semver,n.semver,r),c>0)return null;if(c===0&&(a.operator!==\">=\"||n.operator!==\"<=\"))return null}for(let P of s){if(a&&!gB(P,String(a),r)||n&&!gB(P,String(n),r))return null;for(let I of e)if(!gB(P,String(I),r))return!1;return!0}let f,p,h,E,C=n&&!r.includePrerelease&&n.semver.prerelease.length?n.semver:!1,S=a&&!r.includePrerelease&&a.semver.prerelease.length?a.semver:!1;C&&C.prerelease.length===1&&n.operator===\"<\"&&C.prerelease[0]===0&&(C=!1);for(let P of e){if(E=E||P.operator===\">\"||P.operator===\">=\",h=h||P.operator===\"<\"||P.operator===\"<=\",a){if(S&&P.semver.prerelease&&P.semver.prerelease.length&&P.semver.major===S.major&&P.semver.minor===S.minor&&P.semver.patch===S.patch&&(S=!1),P.operator===\">\"||P.operator===\">=\"){if(f=fse(a,P,r),f===P&&f!==a)return!1}else if(a.operator===\">=\"&&!gB(a.semver,String(P),r))return!1}if(n){if(C&&P.semver.prerelease&&P.semver.prerelease.length&&P.semver.major===C.major&&P.semver.minor===C.minor&&P.semver.patch===C.patch&&(C=!1),P.operator===\"<\"||P.operator===\"<=\"){if(p=Ase(n,P,r),p===P&&p!==n)return!1}else if(n.operator===\"<=\"&&!gB(n.semver,String(P),r))return!1}if(!P.operator&&(n||a)&&c!==0)return!1}return!(a&&h&&!n&&c!==0||n&&E&&!a&&c!==0||S||C)},fse=(t,e,r)=>{if(!t)return e;let s=V_(t.semver,e.semver,r);return s>0?t:s<0||e.operator===\">\"&&t.operator===\">=\"?e:t},Ase=(t,e,r)=>{if(!t)return e;let s=V_(t.semver,e.semver,r);return s<0?t:s>0||e.operator===\"<\"&&t.operator===\"<=\"?e:t};pse.exports=$7e});var Ai=_((GRt,mse)=>{var J_=vE(),gse=aB(),rJe=jo(),dse=k_(),nJe=Md(),iJe=One(),sJe=Mne(),oJe=Hne(),aJe=qne(),lJe=Yne(),cJe=Jne(),uJe=zne(),fJe=Zne(),AJe=Bc(),pJe=rie(),hJe=iie(),gJe=Vx(),dJe=lie(),mJe=uie(),yJe=cB(),EJe=Jx(),IJe=T_(),CJe=R_(),wJe=Kx(),BJe=zx(),vJe=F_(),SJe=Eie(),DJe=AB(),bJe=vc(),PJe=hB(),xJe=_ie(),kJe=jie(),QJe=qie(),TJe=Vie(),RJe=Kie(),FJe=tk(),NJe=tse(),OJe=nse(),LJe=ose(),MJe=lse(),UJe=hse();mse.exports={parse:nJe,valid:iJe,clean:sJe,inc:oJe,diff:aJe,major:lJe,minor:cJe,patch:uJe,prerelease:fJe,compare:AJe,rcompare:pJe,compareLoose:hJe,compareBuild:gJe,sort:dJe,rsort:mJe,gt:yJe,lt:EJe,eq:IJe,neq:CJe,gte:wJe,lte:BJe,cmp:vJe,coerce:SJe,Comparator:DJe,Range:bJe,satisfies:PJe,toComparators:xJe,maxSatisfying:kJe,minSatisfying:QJe,minVersion:TJe,validRange:RJe,outside:FJe,gtr:NJe,ltr:OJe,intersects:LJe,simplifyRange:MJe,subset:UJe,SemVer:rJe,re:J_.re,src:J_.src,tokens:J_.t,SEMVER_SPEC_VERSION:gse.SEMVER_SPEC_VERSION,RELEASE_TYPES:gse.RELEASE_TYPES,compareIdentifiers:dse.compareIdentifiers,rcompareIdentifiers:dse.rcompareIdentifiers}});var Ese=_((qRt,yse)=>{\"use strict\";function _Je(t,e){function r(){this.constructor=t}r.prototype=e.prototype,t.prototype=new r}function jd(t,e,r,s){this.message=t,this.expected=e,this.found=r,this.location=s,this.name=\"SyntaxError\",typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,jd)}_Je(jd,Error);jd.buildMessage=function(t,e){var r={literal:function(h){return'\"'+a(h.text)+'\"'},class:function(h){var E=\"\",C;for(C=0;C<h.parts.length;C++)E+=h.parts[C]instanceof Array?n(h.parts[C][0])+\"-\"+n(h.parts[C][1]):n(h.parts[C]);return\"[\"+(h.inverted?\"^\":\"\")+E+\"]\"},any:function(h){return\"any character\"},end:function(h){return\"end of input\"},other:function(h){return h.description}};function s(h){return h.charCodeAt(0).toString(16).toUpperCase()}function a(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"').replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function n(h){return h.replace(/\\\\/g,\"\\\\\\\\\").replace(/\\]/g,\"\\\\]\").replace(/\\^/g,\"\\\\^\").replace(/-/g,\"\\\\-\").replace(/\\0/g,\"\\\\0\").replace(/\\t/g,\"\\\\t\").replace(/\\n/g,\"\\\\n\").replace(/\\r/g,\"\\\\r\").replace(/[\\x00-\\x0F]/g,function(E){return\"\\\\x0\"+s(E)}).replace(/[\\x10-\\x1F\\x7F-\\x9F]/g,function(E){return\"\\\\x\"+s(E)})}function c(h){return r[h.type](h)}function f(h){var E=new Array(h.length),C,S;for(C=0;C<h.length;C++)E[C]=c(h[C]);if(E.sort(),E.length>0){for(C=1,S=1;C<E.length;C++)E[C-1]!==E[C]&&(E[S]=E[C],S++);E.length=S}switch(E.length){case 1:return E[0];case 2:return E[0]+\" or \"+E[1];default:return E.slice(0,-1).join(\", \")+\", or \"+E[E.length-1]}}function p(h){return h?'\"'+a(h)+'\"':\"end of input\"}return\"Expected \"+f(t)+\" but \"+p(e)+\" found.\"};function HJe(t,e){e=e!==void 0?e:{};var r={},s={Expression:y},a=y,n=\"|\",c=Fe(\"|\",!1),f=\"&\",p=Fe(\"&\",!1),h=\"^\",E=Fe(\"^\",!1),C=function($,oe){return!!oe.reduce((xe,Te)=>{switch(Te[1]){case\"|\":return xe|Te[3];case\"&\":return xe&Te[3];case\"^\":return xe^Te[3]}},$)},S=\"!\",P=Fe(\"!\",!1),I=function($){return!$},R=\"(\",N=Fe(\"(\",!1),U=\")\",W=Fe(\")\",!1),ee=function($){return $},ie=/^[^ \\t\\n\\r()!|&\\^]/,ue=Ne([\" \",\"\t\",`\n`,\"\\r\",\"(\",\")\",\"!\",\"|\",\"&\",\"^\"],!0,!1),le=function($){return e.queryPattern.test($)},me=function($){return e.checkFn($)},pe=ke(\"whitespace\"),Be=/^[ \\t\\n\\r]/,Ce=Ne([\" \",\"\t\",`\n`,\"\\r\"],!1,!1),g=0,we=0,ye=[{line:1,column:1}],Ae=0,se=[],Z=0,De;if(\"startRule\"in e){if(!(e.startRule in s))throw new Error(`Can't start parsing from rule \"`+e.startRule+'\".');a=s[e.startRule]}function Re(){return t.substring(we,g)}function mt(){return Ue(we,g)}function j($,oe){throw oe=oe!==void 0?oe:Ue(we,g),b([ke($)],t.substring(we,g),oe)}function rt($,oe){throw oe=oe!==void 0?oe:Ue(we,g),w($,oe)}function Fe($,oe){return{type:\"literal\",text:$,ignoreCase:oe}}function Ne($,oe,xe){return{type:\"class\",parts:$,inverted:oe,ignoreCase:xe}}function Pe(){return{type:\"any\"}}function Ve(){return{type:\"end\"}}function ke($){return{type:\"other\",description:$}}function it($){var oe=ye[$],xe;if(oe)return oe;for(xe=$-1;!ye[xe];)xe--;for(oe=ye[xe],oe={line:oe.line,column:oe.column};xe<$;)t.charCodeAt(xe)===10?(oe.line++,oe.column=1):oe.column++,xe++;return ye[$]=oe,oe}function Ue($,oe){var xe=it($),Te=it(oe);return{start:{offset:$,line:xe.line,column:xe.column},end:{offset:oe,line:Te.line,column:Te.column}}}function x($){g<Ae||(g>Ae&&(Ae=g,se=[]),se.push($))}function w($,oe){return new jd($,null,null,oe)}function b($,oe,xe){return new jd(jd.buildMessage($,oe),$,oe,xe)}function y(){var $,oe,xe,Te,lt,Ct,qt,ir;if($=g,oe=F(),oe!==r){for(xe=[],Te=g,lt=X(),lt!==r?(t.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,Z===0&&x(c)),Ct===r&&(t.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,Z===0&&x(p)),Ct===r&&(t.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,Z===0&&x(E)))),Ct!==r?(qt=X(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Ct,qt,ir],Te=lt):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r);Te!==r;)xe.push(Te),Te=g,lt=X(),lt!==r?(t.charCodeAt(g)===124?(Ct=n,g++):(Ct=r,Z===0&&x(c)),Ct===r&&(t.charCodeAt(g)===38?(Ct=f,g++):(Ct=r,Z===0&&x(p)),Ct===r&&(t.charCodeAt(g)===94?(Ct=h,g++):(Ct=r,Z===0&&x(E)))),Ct!==r?(qt=X(),qt!==r?(ir=F(),ir!==r?(lt=[lt,Ct,qt,ir],Te=lt):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r)):(g=Te,Te=r);xe!==r?(we=$,oe=C(oe,xe),$=oe):(g=$,$=r)}else g=$,$=r;return $}function F(){var $,oe,xe,Te,lt,Ct;return $=g,t.charCodeAt(g)===33?(oe=S,g++):(oe=r,Z===0&&x(P)),oe!==r?(xe=F(),xe!==r?(we=$,oe=I(xe),$=oe):(g=$,$=r)):(g=$,$=r),$===r&&($=g,t.charCodeAt(g)===40?(oe=R,g++):(oe=r,Z===0&&x(N)),oe!==r?(xe=X(),xe!==r?(Te=y(),Te!==r?(lt=X(),lt!==r?(t.charCodeAt(g)===41?(Ct=U,g++):(Ct=r,Z===0&&x(W)),Ct!==r?(we=$,oe=ee(Te),$=oe):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r)):(g=$,$=r),$===r&&($=z())),$}function z(){var $,oe,xe,Te,lt;if($=g,oe=X(),oe!==r){if(xe=g,Te=[],ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,Z===0&&x(ue)),lt!==r)for(;lt!==r;)Te.push(lt),ie.test(t.charAt(g))?(lt=t.charAt(g),g++):(lt=r,Z===0&&x(ue));else Te=r;Te!==r?xe=t.substring(xe,g):xe=Te,xe!==r?(we=g,Te=le(xe),Te?Te=void 0:Te=r,Te!==r?(we=$,oe=me(xe),$=oe):(g=$,$=r)):(g=$,$=r)}else g=$,$=r;return $}function X(){var $,oe;for(Z++,$=[],Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,Z===0&&x(Ce));oe!==r;)$.push(oe),Be.test(t.charAt(g))?(oe=t.charAt(g),g++):(oe=r,Z===0&&x(Ce));return Z--,$===r&&(oe=r,Z===0&&x(pe)),$}if(De=a(),De!==r&&g===t.length)return De;throw De!==r&&g<t.length&&x(Ve()),b(se,Ae<t.length?t.charAt(Ae):null,Ae<t.length?Ue(Ae,Ae+1):Ue(Ae,Ae))}yse.exports={SyntaxError:jd,parse:HJe}});var Ise=_(rk=>{var{parse:jJe}=Ese();rk.makeParser=(t=/[a-z]+/)=>(e,r)=>jJe(e,{queryPattern:t,checkFn:r});rk.parse=rk.makeParser()});var wse=_((YRt,Cse)=>{\"use strict\";Cse.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 K_=_((VRt,vse)=>{var dB=wse(),Bse={};for(let t of Object.keys(dB))Bse[dB[t]]=t;var hr={rgb:{channels:3,labels:\"rgb\"},hsl:{channels:3,labels:\"hsl\"},hsv:{channels:3,labels:\"hsv\"},hwb:{channels:3,labels:\"hwb\"},cmyk:{channels:4,labels:\"cmyk\"},xyz:{channels:3,labels:\"xyz\"},lab:{channels:3,labels:\"lab\"},lch:{channels:3,labels:\"lch\"},hex:{channels:1,labels:[\"hex\"]},keyword:{channels:1,labels:[\"keyword\"]},ansi16:{channels:1,labels:[\"ansi16\"]},ansi256:{channels:1,labels:[\"ansi256\"]},hcg:{channels:3,labels:[\"h\",\"c\",\"g\"]},apple:{channels:3,labels:[\"r16\",\"g16\",\"b16\"]},gray:{channels:1,labels:[\"gray\"]}};vse.exports=hr;for(let t of Object.keys(hr)){if(!(\"channels\"in hr[t]))throw new Error(\"missing channels property: \"+t);if(!(\"labels\"in hr[t]))throw new Error(\"missing channel labels property: \"+t);if(hr[t].labels.length!==hr[t].channels)throw new Error(\"channel and label counts mismatch: \"+t);let{channels:e,labels:r}=hr[t];delete hr[t].channels,delete hr[t].labels,Object.defineProperty(hr[t],\"channels\",{value:e}),Object.defineProperty(hr[t],\"labels\",{value:r})}hr.rgb.hsl=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(e,r,s),n=Math.max(e,r,s),c=n-a,f,p;n===a?f=0:e===n?f=(r-s)/c:r===n?f=2+(s-e)/c:s===n&&(f=4+(e-r)/c),f=Math.min(f*60,360),f<0&&(f+=360);let h=(a+n)/2;return n===a?p=0:h<=.5?p=c/(n+a):p=c/(2-n-a),[f,p*100,h*100]};hr.rgb.hsv=function(t){let e,r,s,a,n,c=t[0]/255,f=t[1]/255,p=t[2]/255,h=Math.max(c,f,p),E=h-Math.min(c,f,p),C=function(S){return(h-S)/6/E+1/2};return E===0?(a=0,n=0):(n=E/h,e=C(c),r=C(f),s=C(p),c===h?a=s-r:f===h?a=1/3+e-s:p===h&&(a=2/3+r-e),a<0?a+=1:a>1&&(a-=1)),[a*360,n*100,h*100]};hr.rgb.hwb=function(t){let e=t[0],r=t[1],s=t[2],a=hr.rgb.hsl(t)[0],n=1/255*Math.min(e,Math.min(r,s));return s=1-1/255*Math.max(e,Math.max(r,s)),[a,n*100,s*100]};hr.rgb.cmyk=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.min(1-e,1-r,1-s),n=(1-e-a)/(1-a)||0,c=(1-r-a)/(1-a)||0,f=(1-s-a)/(1-a)||0;return[n*100,c*100,f*100,a*100]};function GJe(t,e){return(t[0]-e[0])**2+(t[1]-e[1])**2+(t[2]-e[2])**2}hr.rgb.keyword=function(t){let e=Bse[t];if(e)return e;let r=1/0,s;for(let a of Object.keys(dB)){let n=dB[a],c=GJe(t,n);c<r&&(r=c,s=a)}return s};hr.keyword.rgb=function(t){return dB[t]};hr.rgb.xyz=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255;e=e>.04045?((e+.055)/1.055)**2.4:e/12.92,r=r>.04045?((r+.055)/1.055)**2.4:r/12.92,s=s>.04045?((s+.055)/1.055)**2.4:s/12.92;let a=e*.4124+r*.3576+s*.1805,n=e*.2126+r*.7152+s*.0722,c=e*.0193+r*.1192+s*.9505;return[a*100,n*100,c*100]};hr.rgb.lab=function(t){let e=hr.rgb.xyz(t),r=e[0],s=e[1],a=e[2];r/=95.047,s/=100,a/=108.883,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116,a=a>.008856?a**(1/3):7.787*a+16/116;let n=116*s-16,c=500*(r-s),f=200*(s-a);return[n,c,f]};hr.hsl.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a,n,c;if(r===0)return c=s*255,[c,c,c];s<.5?a=s*(1+r):a=s+r-s*r;let f=2*s-a,p=[0,0,0];for(let h=0;h<3;h++)n=e+1/3*-(h-1),n<0&&n++,n>1&&n--,6*n<1?c=f+(a-f)*6*n:2*n<1?c=a:3*n<2?c=f+(a-f)*(2/3-n)*6:c=f,p[h]=c*255;return p};hr.hsl.hsv=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=r,n=Math.max(s,.01);s*=2,r*=s<=1?s:2-s,a*=n<=1?n:2-n;let c=(s+r)/2,f=s===0?2*a/(n+a):2*r/(s+r);return[e,f*100,c*100]};hr.hsv.rgb=function(t){let e=t[0]/60,r=t[1]/100,s=t[2]/100,a=Math.floor(e)%6,n=e-Math.floor(e),c=255*s*(1-r),f=255*s*(1-r*n),p=255*s*(1-r*(1-n));switch(s*=255,a){case 0:return[s,p,c];case 1:return[f,s,c];case 2:return[c,s,p];case 3:return[c,f,s];case 4:return[p,c,s];case 5:return[s,c,f]}};hr.hsv.hsl=function(t){let e=t[0],r=t[1]/100,s=t[2]/100,a=Math.max(s,.01),n,c;c=(2-r)*s;let f=(2-r)*a;return n=r*a,n/=f<=1?f:2-f,n=n||0,c/=2,[e,n*100,c*100]};hr.hwb.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100,a=r+s,n;a>1&&(r/=a,s/=a);let c=Math.floor(6*e),f=1-s;n=6*e-c,c&1&&(n=1-n);let p=r+n*(f-r),h,E,C;switch(c){default:case 6:case 0:h=f,E=p,C=r;break;case 1:h=p,E=f,C=r;break;case 2:h=r,E=f,C=p;break;case 3:h=r,E=p,C=f;break;case 4:h=p,E=r,C=f;break;case 5:h=f,E=r,C=p;break}return[h*255,E*255,C*255]};hr.cmyk.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a=t[3]/100,n=1-Math.min(1,e*(1-a)+a),c=1-Math.min(1,r*(1-a)+a),f=1-Math.min(1,s*(1-a)+a);return[n*255,c*255,f*255]};hr.xyz.rgb=function(t){let e=t[0]/100,r=t[1]/100,s=t[2]/100,a,n,c;return a=e*3.2406+r*-1.5372+s*-.4986,n=e*-.9689+r*1.8758+s*.0415,c=e*.0557+r*-.204+s*1.057,a=a>.0031308?1.055*a**(1/2.4)-.055:a*12.92,n=n>.0031308?1.055*n**(1/2.4)-.055:n*12.92,c=c>.0031308?1.055*c**(1/2.4)-.055:c*12.92,a=Math.min(Math.max(0,a),1),n=Math.min(Math.max(0,n),1),c=Math.min(Math.max(0,c),1),[a*255,n*255,c*255]};hr.xyz.lab=function(t){let e=t[0],r=t[1],s=t[2];e/=95.047,r/=100,s/=108.883,e=e>.008856?e**(1/3):7.787*e+16/116,r=r>.008856?r**(1/3):7.787*r+16/116,s=s>.008856?s**(1/3):7.787*s+16/116;let a=116*r-16,n=500*(e-r),c=200*(r-s);return[a,n,c]};hr.lab.xyz=function(t){let e=t[0],r=t[1],s=t[2],a,n,c;n=(e+16)/116,a=r/500+n,c=n-s/200;let f=n**3,p=a**3,h=c**3;return n=f>.008856?f:(n-16/116)/7.787,a=p>.008856?p:(a-16/116)/7.787,c=h>.008856?h:(c-16/116)/7.787,a*=95.047,n*=100,c*=108.883,[a,n,c]};hr.lab.lch=function(t){let e=t[0],r=t[1],s=t[2],a;a=Math.atan2(s,r)*360/2/Math.PI,a<0&&(a+=360);let c=Math.sqrt(r*r+s*s);return[e,c,a]};hr.lch.lab=function(t){let e=t[0],r=t[1],a=t[2]/360*2*Math.PI,n=r*Math.cos(a),c=r*Math.sin(a);return[e,n,c]};hr.rgb.ansi16=function(t,e=null){let[r,s,a]=t,n=e===null?hr.rgb.hsv(t)[2]:e;if(n=Math.round(n/50),n===0)return 30;let c=30+(Math.round(a/255)<<2|Math.round(s/255)<<1|Math.round(r/255));return n===2&&(c+=60),c};hr.hsv.ansi16=function(t){return hr.rgb.ansi16(hr.hsv.rgb(t),t[2])};hr.rgb.ansi256=function(t){let e=t[0],r=t[1],s=t[2];return e===r&&r===s?e<8?16:e>248?231:Math.round((e-8)/247*24)+232:16+36*Math.round(e/255*5)+6*Math.round(r/255*5)+Math.round(s/255*5)};hr.ansi16.rgb=function(t){let e=t%10;if(e===0||e===7)return t>50&&(e+=3.5),e=e/10.5*255,[e,e,e];let r=(~~(t>50)+1)*.5,s=(e&1)*r*255,a=(e>>1&1)*r*255,n=(e>>2&1)*r*255;return[s,a,n]};hr.ansi256.rgb=function(t){if(t>=232){let n=(t-232)*10+8;return[n,n,n]}t-=16;let e,r=Math.floor(t/36)/5*255,s=Math.floor((e=t%36)/6)/5*255,a=e%6/5*255;return[r,s,a]};hr.rgb.hex=function(t){let r=(((Math.round(t[0])&255)<<16)+((Math.round(t[1])&255)<<8)+(Math.round(t[2])&255)).toString(16).toUpperCase();return\"000000\".substring(r.length)+r};hr.hex.rgb=function(t){let e=t.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);if(!e)return[0,0,0];let r=e[0];e[0].length===3&&(r=r.split(\"\").map(f=>f+f).join(\"\"));let s=parseInt(r,16),a=s>>16&255,n=s>>8&255,c=s&255;return[a,n,c]};hr.rgb.hcg=function(t){let e=t[0]/255,r=t[1]/255,s=t[2]/255,a=Math.max(Math.max(e,r),s),n=Math.min(Math.min(e,r),s),c=a-n,f,p;return c<1?f=n/(1-c):f=0,c<=0?p=0:a===e?p=(r-s)/c%6:a===r?p=2+(s-e)/c:p=4+(e-r)/c,p/=6,p%=1,[p*360,c*100,f*100]};hr.hsl.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=r<.5?2*e*r:2*e*(1-r),a=0;return s<1&&(a=(r-.5*s)/(1-s)),[t[0],s*100,a*100]};hr.hsv.hcg=function(t){let e=t[1]/100,r=t[2]/100,s=e*r,a=0;return s<1&&(a=(r-s)/(1-s)),[t[0],s*100,a*100]};hr.hcg.rgb=function(t){let e=t[0]/360,r=t[1]/100,s=t[2]/100;if(r===0)return[s*255,s*255,s*255];let a=[0,0,0],n=e%1*6,c=n%1,f=1-c,p=0;switch(Math.floor(n)){case 0:a[0]=1,a[1]=c,a[2]=0;break;case 1:a[0]=f,a[1]=1,a[2]=0;break;case 2:a[0]=0,a[1]=1,a[2]=c;break;case 3:a[0]=0,a[1]=f,a[2]=1;break;case 4:a[0]=c,a[1]=0,a[2]=1;break;default:a[0]=1,a[1]=0,a[2]=f}return p=(1-r)*s,[(r*a[0]+p)*255,(r*a[1]+p)*255,(r*a[2]+p)*255]};hr.hcg.hsv=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e),a=0;return s>0&&(a=e/s),[t[0],a*100,s*100]};hr.hcg.hsl=function(t){let e=t[1]/100,s=t[2]/100*(1-e)+.5*e,a=0;return s>0&&s<.5?a=e/(2*s):s>=.5&&s<1&&(a=e/(2*(1-s))),[t[0],a*100,s*100]};hr.hcg.hwb=function(t){let e=t[1]/100,r=t[2]/100,s=e+r*(1-e);return[t[0],(s-e)*100,(1-s)*100]};hr.hwb.hcg=function(t){let e=t[1]/100,s=1-t[2]/100,a=s-e,n=0;return a<1&&(n=(s-a)/(1-a)),[t[0],a*100,n*100]};hr.apple.rgb=function(t){return[t[0]/65535*255,t[1]/65535*255,t[2]/65535*255]};hr.rgb.apple=function(t){return[t[0]/255*65535,t[1]/255*65535,t[2]/255*65535]};hr.gray.rgb=function(t){return[t[0]/100*255,t[0]/100*255,t[0]/100*255]};hr.gray.hsl=function(t){return[0,0,t[0]]};hr.gray.hsv=hr.gray.hsl;hr.gray.hwb=function(t){return[0,100,t[0]]};hr.gray.cmyk=function(t){return[0,0,0,t[0]]};hr.gray.lab=function(t){return[t[0],0,0]};hr.gray.hex=function(t){let e=Math.round(t[0]/100*255)&255,s=((e<<16)+(e<<8)+e).toString(16).toUpperCase();return\"000000\".substring(s.length)+s};hr.rgb.gray=function(t){return[(t[0]+t[1]+t[2])/3/255*100]}});var Dse=_((JRt,Sse)=>{var nk=K_();function qJe(){let t={},e=Object.keys(nk);for(let r=e.length,s=0;s<r;s++)t[e[s]]={distance:-1,parent:null};return t}function WJe(t){let e=qJe(),r=[t];for(e[t].distance=0;r.length;){let s=r.pop(),a=Object.keys(nk[s]);for(let n=a.length,c=0;c<n;c++){let f=a[c],p=e[f];p.distance===-1&&(p.distance=e[s].distance+1,p.parent=s,r.unshift(f))}}return e}function YJe(t,e){return function(r){return e(t(r))}}function VJe(t,e){let r=[e[t].parent,t],s=nk[e[t].parent][t],a=e[t].parent;for(;e[a].parent;)r.unshift(e[a].parent),s=YJe(nk[e[a].parent][a],s),a=e[a].parent;return s.conversion=r,s}Sse.exports=function(t){let e=WJe(t),r={},s=Object.keys(e);for(let a=s.length,n=0;n<a;n++){let c=s[n];e[c].parent!==null&&(r[c]=VJe(c,e))}return r}});var Pse=_((KRt,bse)=>{var z_=K_(),JJe=Dse(),PE={},KJe=Object.keys(z_);function zJe(t){let e=function(...r){let s=r[0];return s==null?s:(s.length>1&&(r=s),t(r))};return\"conversion\"in t&&(e.conversion=t.conversion),e}function XJe(t){let e=function(...r){let s=r[0];if(s==null)return s;s.length>1&&(r=s);let a=t(r);if(typeof a==\"object\")for(let n=a.length,c=0;c<n;c++)a[c]=Math.round(a[c]);return a};return\"conversion\"in t&&(e.conversion=t.conversion),e}KJe.forEach(t=>{PE[t]={},Object.defineProperty(PE[t],\"channels\",{value:z_[t].channels}),Object.defineProperty(PE[t],\"labels\",{value:z_[t].labels});let e=JJe(t);Object.keys(e).forEach(s=>{let a=e[s];PE[t][s]=XJe(a),PE[t][s].raw=zJe(a)})});bse.exports=PE});var sk=_((zRt,Rse)=>{\"use strict\";var xse=(t,e)=>(...r)=>`\\x1B[${t(...r)+e}m`,kse=(t,e)=>(...r)=>{let s=t(...r);return`\\x1B[${38+e};5;${s}m`},Qse=(t,e)=>(...r)=>{let s=t(...r);return`\\x1B[${38+e};2;${s[0]};${s[1]};${s[2]}m`},ik=t=>t,Tse=(t,e,r)=>[t,e,r],xE=(t,e,r)=>{Object.defineProperty(t,e,{get:()=>{let s=r();return Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0}),s},enumerable:!0,configurable:!0})},X_,kE=(t,e,r,s)=>{X_===void 0&&(X_=Pse());let a=s?10:0,n={};for(let[c,f]of Object.entries(X_)){let p=c===\"ansi16\"?\"ansi\":c;c===e?n[p]=t(r,a):typeof f==\"object\"&&(n[p]=t(f[e],a))}return n};function ZJe(){let t=new Map,e={modifier:{reset:[0,0],bold:[1,22],dim:[2,22],italic:[3,23],underline:[4,24],inverse:[7,27],hidden:[8,28],strikethrough:[9,29]},color:{black:[30,39],red:[31,39],green:[32,39],yellow:[33,39],blue:[34,39],magenta:[35,39],cyan:[36,39],white:[37,39],blackBright:[90,39],redBright:[91,39],greenBright:[92,39],yellowBright:[93,39],blueBright:[94,39],magentaBright:[95,39],cyanBright:[96,39],whiteBright:[97,39]},bgColor:{bgBlack:[40,49],bgRed:[41,49],bgGreen:[42,49],bgYellow:[43,49],bgBlue:[44,49],bgMagenta:[45,49],bgCyan:[46,49],bgWhite:[47,49],bgBlackBright:[100,49],bgRedBright:[101,49],bgGreenBright:[102,49],bgYellowBright:[103,49],bgBlueBright:[104,49],bgMagentaBright:[105,49],bgCyanBright:[106,49],bgWhiteBright:[107,49]}};e.color.gray=e.color.blackBright,e.bgColor.bgGray=e.bgColor.bgBlackBright,e.color.grey=e.color.blackBright,e.bgColor.bgGrey=e.bgColor.bgBlackBright;for(let[r,s]of Object.entries(e)){for(let[a,n]of Object.entries(s))e[a]={open:`\\x1B[${n[0]}m`,close:`\\x1B[${n[1]}m`},s[a]=e[a],t.set(n[0],n[1]);Object.defineProperty(e,r,{value:s,enumerable:!1})}return Object.defineProperty(e,\"codes\",{value:t,enumerable:!1}),e.color.close=\"\\x1B[39m\",e.bgColor.close=\"\\x1B[49m\",xE(e.color,\"ansi\",()=>kE(xse,\"ansi16\",ik,!1)),xE(e.color,\"ansi256\",()=>kE(kse,\"ansi256\",ik,!1)),xE(e.color,\"ansi16m\",()=>kE(Qse,\"rgb\",Tse,!1)),xE(e.bgColor,\"ansi\",()=>kE(xse,\"ansi16\",ik,!0)),xE(e.bgColor,\"ansi256\",()=>kE(kse,\"ansi256\",ik,!0)),xE(e.bgColor,\"ansi16m\",()=>kE(Qse,\"rgb\",Tse,!0)),e}Object.defineProperty(Rse,\"exports\",{enumerable:!0,get:ZJe})});var Nse=_((XRt,Fse)=>{\"use strict\";Fse.exports=(t,e=process.argv)=>{let r=t.startsWith(\"-\")?\"\":t.length===1?\"-\":\"--\",s=e.indexOf(r+t),a=e.indexOf(\"--\");return s!==-1&&(a===-1||s<a)}});var Mse=_((ZRt,Lse)=>{\"use strict\";var $Je=Ie(\"os\"),Ose=Ie(\"tty\"),Sc=Nse(),{env:bs}=process,l0;Sc(\"no-color\")||Sc(\"no-colors\")||Sc(\"color=false\")||Sc(\"color=never\")?l0=0:(Sc(\"color\")||Sc(\"colors\")||Sc(\"color=true\")||Sc(\"color=always\"))&&(l0=1);\"FORCE_COLOR\"in bs&&(bs.FORCE_COLOR===\"true\"?l0=1:bs.FORCE_COLOR===\"false\"?l0=0:l0=bs.FORCE_COLOR.length===0?1:Math.min(parseInt(bs.FORCE_COLOR,10),3));function Z_(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function $_(t,e){if(l0===0)return 0;if(Sc(\"color=16m\")||Sc(\"color=full\")||Sc(\"color=truecolor\"))return 3;if(Sc(\"color=256\"))return 2;if(t&&!e&&l0===void 0)return 0;let r=l0||0;if(bs.TERM===\"dumb\")return r;if(process.platform===\"win32\"){let s=$Je.release().split(\".\");return Number(s[0])>=10&&Number(s[2])>=10586?Number(s[2])>=14931?3:2:1}if(\"CI\"in bs)return[\"TRAVIS\",\"CIRCLECI\",\"APPVEYOR\",\"GITLAB_CI\"].some(s=>s in bs)||bs.CI_NAME===\"codeship\"?1:r;if(\"TEAMCITY_VERSION\"in bs)return/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(bs.TEAMCITY_VERSION)?1:0;if(\"GITHUB_ACTIONS\"in bs)return 1;if(bs.COLORTERM===\"truecolor\")return 3;if(\"TERM_PROGRAM\"in bs){let s=parseInt((bs.TERM_PROGRAM_VERSION||\"\").split(\".\")[0],10);switch(bs.TERM_PROGRAM){case\"iTerm.app\":return s>=3?3:2;case\"Apple_Terminal\":return 2}}return/-256(color)?$/i.test(bs.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(bs.TERM)||\"COLORTERM\"in bs?1:r}function eKe(t){let e=$_(t,t&&t.isTTY);return Z_(e)}Lse.exports={supportsColor:eKe,stdout:Z_($_(!0,Ose.isatty(1))),stderr:Z_($_(!0,Ose.isatty(2)))}});var _se=_(($Rt,Use)=>{\"use strict\";var tKe=(t,e,r)=>{let s=t.indexOf(e);if(s===-1)return t;let a=e.length,n=0,c=\"\";do c+=t.substr(n,s-n)+e+r,n=s+a,s=t.indexOf(e,n);while(s!==-1);return c+=t.substr(n),c},rKe=(t,e,r,s)=>{let a=0,n=\"\";do{let c=t[s-1]===\"\\r\";n+=t.substr(a,(c?s-1:s)-a)+e+(c?`\\r\n`:`\n`)+r,a=s+1,s=t.indexOf(`\n`,a)}while(s!==-1);return n+=t.substr(a),n};Use.exports={stringReplaceAll:tKe,stringEncaseCRLFWithFirstIndex:rKe}});var Wse=_((eFt,qse)=>{\"use strict\";var nKe=/(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi,Hse=/(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g,iKe=/^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/,sKe=/\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi,oKe=new Map([[\"n\",`\n`],[\"r\",\"\\r\"],[\"t\",\"\t\"],[\"b\",\"\\b\"],[\"f\",\"\\f\"],[\"v\",\"\\v\"],[\"0\",\"\\0\"],[\"\\\\\",\"\\\\\"],[\"e\",\"\\x1B\"],[\"a\",\"\\x07\"]]);function Gse(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)):oKe.get(t)||t}function aKe(t,e){let r=[],s=e.trim().split(/\\s*,\\s*/g),a;for(let n of s){let c=Number(n);if(!Number.isNaN(c))r.push(c);else if(a=n.match(iKe))r.push(a[2].replace(sKe,(f,p,h)=>p?Gse(p):h));else throw new Error(`Invalid Chalk template style argument: ${n} (in style '${t}')`)}return r}function lKe(t){Hse.lastIndex=0;let e=[],r;for(;(r=Hse.exec(t))!==null;){let s=r[1];if(r[2]){let a=aKe(s,r[2]);e.push([s].concat(a))}else e.push([s])}return e}function jse(t,e){let r={};for(let a of e)for(let n of a.styles)r[n[0]]=a.inverse?null:n.slice(1);let s=t;for(let[a,n]of Object.entries(r))if(Array.isArray(n)){if(!(a in s))throw new Error(`Unknown Chalk style: ${a}`);s=n.length>0?s[a](...n):s[a]}return s}qse.exports=(t,e)=>{let r=[],s=[],a=[];if(e.replace(nKe,(n,c,f,p,h,E)=>{if(c)a.push(Gse(c));else if(p){let C=a.join(\"\");a=[],s.push(r.length===0?C:jse(t,r)(C)),r.push({inverse:f,styles:lKe(p)})}else if(h){if(r.length===0)throw new Error(\"Found extraneous } in Chalk template literal\");s.push(jse(t,r)(a.join(\"\"))),a=[],r.pop()}else a.push(E)}),s.push(a.join(\"\")),r.length>0){let n=`Chalk template literal is missing ${r.length} closing bracket${r.length===1?\"\":\"s\"} (\\`}\\`)`;throw new Error(n)}return s.join(\"\")}});var TE=_((tFt,Xse)=>{\"use strict\";var mB=sk(),{stdout:t4,stderr:r4}=Mse(),{stringReplaceAll:cKe,stringEncaseCRLFWithFirstIndex:uKe}=_se(),{isArray:ok}=Array,Vse=[\"ansi\",\"ansi\",\"ansi256\",\"ansi16m\"],QE=Object.create(null),fKe=(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=t4?t4.level:0;t.level=e.level===void 0?r:e.level},n4=class{constructor(e){return Jse(e)}},Jse=t=>{let e={};return fKe(e,t),e.template=(...r)=>zse(e.template,...r),Object.setPrototypeOf(e,ak.prototype),Object.setPrototypeOf(e.template,e),e.template.constructor=()=>{throw new Error(\"`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.\")},e.template.Instance=n4,e.template};function ak(t){return Jse(t)}for(let[t,e]of Object.entries(mB))QE[t]={get(){let r=lk(this,i4(e.open,e.close,this._styler),this._isEmpty);return Object.defineProperty(this,t,{value:r}),r}};QE.visible={get(){let t=lk(this,this._styler,!0);return Object.defineProperty(this,\"visible\",{value:t}),t}};var Kse=[\"rgb\",\"hex\",\"keyword\",\"hsl\",\"hsv\",\"hwb\",\"ansi\",\"ansi256\"];for(let t of Kse)QE[t]={get(){let{level:e}=this;return function(...r){let s=i4(mB.color[Vse[e]][t](...r),mB.color.close,this._styler);return lk(this,s,this._isEmpty)}}};for(let t of Kse){let e=\"bg\"+t[0].toUpperCase()+t.slice(1);QE[e]={get(){let{level:r}=this;return function(...s){let a=i4(mB.bgColor[Vse[r]][t](...s),mB.bgColor.close,this._styler);return lk(this,a,this._isEmpty)}}}}var AKe=Object.defineProperties(()=>{},{...QE,level:{enumerable:!0,get(){return this._generator.level},set(t){this._generator.level=t}}}),i4=(t,e,r)=>{let s,a;return r===void 0?(s=t,a=e):(s=r.openAll+t,a=e+r.closeAll),{open:t,close:e,openAll:s,closeAll:a,parent:r}},lk=(t,e,r)=>{let s=(...a)=>ok(a[0])&&ok(a[0].raw)?Yse(s,zse(s,...a)):Yse(s,a.length===1?\"\"+a[0]:a.join(\" \"));return Object.setPrototypeOf(s,AKe),s._generator=t,s._styler=e,s._isEmpty=r,s},Yse=(t,e)=>{if(t.level<=0||!e)return t._isEmpty?\"\":e;let r=t._styler;if(r===void 0)return e;let{openAll:s,closeAll:a}=r;if(e.indexOf(\"\\x1B\")!==-1)for(;r!==void 0;)e=cKe(e,r.close,r.open),r=r.parent;let n=e.indexOf(`\n`);return n!==-1&&(e=uKe(e,a,s,n)),s+e+a},e4,zse=(t,...e)=>{let[r]=e;if(!ok(r)||!ok(r.raw))return e.join(\" \");let s=e.slice(1),a=[r.raw[0]];for(let n=1;n<r.length;n++)a.push(String(s[n-1]).replace(/[{}\\\\]/g,\"\\\\$&\"),String(r.raw[n]));return e4===void 0&&(e4=Wse()),e4(t,a.join(\"\"))};Object.defineProperties(ak.prototype,QE);var ck=ak();ck.supportsColor=t4;ck.stderr=ak({level:r4?r4.level:0});ck.stderr.supportsColor=r4;Xse.exports=ck});var uk=_(Dc=>{\"use strict\";Dc.isInteger=t=>typeof t==\"number\"?Number.isInteger(t):typeof t==\"string\"&&t.trim()!==\"\"?Number.isInteger(Number(t)):!1;Dc.find=(t,e)=>t.nodes.find(r=>r.type===e);Dc.exceedsLimit=(t,e,r=1,s)=>s===!1||!Dc.isInteger(t)||!Dc.isInteger(e)?!1:(Number(e)-Number(t))/Number(r)>=s;Dc.escapeNode=(t,e=0,r)=>{let s=t.nodes[e];s&&(r&&s.type===r||s.type===\"open\"||s.type===\"close\")&&s.escaped!==!0&&(s.value=\"\\\\\"+s.value,s.escaped=!0)};Dc.encloseBrace=t=>t.type!==\"brace\"||t.commas>>0+t.ranges>>0?!1:(t.invalid=!0,!0);Dc.isInvalidBrace=t=>t.type!==\"brace\"?!1:t.invalid===!0||t.dollar?!0:!(t.commas>>0+t.ranges>>0)||t.open!==!0||t.close!==!0?(t.invalid=!0,!0):!1;Dc.isOpenOrClose=t=>t.type===\"open\"||t.type===\"close\"?!0:t.open===!0||t.close===!0;Dc.reduce=t=>t.reduce((e,r)=>(r.type===\"text\"&&e.push(r.value),r.type===\"range\"&&(r.type=\"text\"),e),[]);Dc.flatten=(...t)=>{let e=[],r=s=>{for(let a=0;a<s.length;a++){let n=s[a];Array.isArray(n)?r(n,e):n!==void 0&&e.push(n)}return e};return r(t),e}});var fk=_((nFt,$se)=>{\"use strict\";var Zse=uk();$se.exports=(t,e={})=>{let r=(s,a={})=>{let n=e.escapeInvalid&&Zse.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f=\"\";if(s.value)return(n||c)&&Zse.isOpenOrClose(s)?\"\\\\\"+s.value:s.value;if(s.value)return s.value;if(s.nodes)for(let p of s.nodes)f+=r(p);return f};return r(t)}});var toe=_((iFt,eoe)=>{\"use strict\";eoe.exports=function(t){return typeof t==\"number\"?t-t===0:typeof t==\"string\"&&t.trim()!==\"\"?Number.isFinite?Number.isFinite(+t):isFinite(+t):!1}});var uoe=_((sFt,coe)=>{\"use strict\";var roe=toe(),Gd=(t,e,r)=>{if(roe(t)===!1)throw new TypeError(\"toRegexRange: expected the first argument to be a number\");if(e===void 0||t===e)return String(t);if(roe(e)===!1)throw new TypeError(\"toRegexRange: expected the second argument to be a number.\");let s={relaxZeros:!0,...r};typeof s.strictZeros==\"boolean\"&&(s.relaxZeros=s.strictZeros===!1);let a=String(s.relaxZeros),n=String(s.shorthand),c=String(s.capture),f=String(s.wrap),p=t+\":\"+e+\"=\"+a+n+c+f;if(Gd.cache.hasOwnProperty(p))return Gd.cache[p].result;let h=Math.min(t,e),E=Math.max(t,e);if(Math.abs(h-E)===1){let R=t+\"|\"+e;return s.capture?`(${R})`:s.wrap===!1?R:`(?:${R})`}let C=loe(t)||loe(e),S={min:t,max:e,a:h,b:E},P=[],I=[];if(C&&(S.isPadded=C,S.maxLen=String(S.max).length),h<0){let R=E<0?Math.abs(E):1;I=noe(R,Math.abs(h),S,s),h=S.a=0}return E>=0&&(P=noe(h,E,S,s)),S.negatives=I,S.positives=P,S.result=pKe(I,P,s),s.capture===!0?S.result=`(${S.result})`:s.wrap!==!1&&P.length+I.length>1&&(S.result=`(?:${S.result})`),Gd.cache[p]=S,S.result};function pKe(t,e,r){let s=s4(t,e,\"-\",!1,r)||[],a=s4(e,t,\"\",!1,r)||[],n=s4(t,e,\"-?\",!0,r)||[];return s.concat(n).concat(a).join(\"|\")}function hKe(t,e){let r=1,s=1,a=soe(t,r),n=new Set([e]);for(;t<=a&&a<=e;)n.add(a),r+=1,a=soe(t,r);for(a=ooe(e+1,s)-1;t<a&&a<=e;)n.add(a),s+=1,a=ooe(e+1,s)-1;return n=[...n],n.sort(mKe),n}function gKe(t,e,r){if(t===e)return{pattern:t,count:[],digits:0};let s=dKe(t,e),a=s.length,n=\"\",c=0;for(let f=0;f<a;f++){let[p,h]=s[f];p===h?n+=p:p!==\"0\"||h!==\"9\"?n+=yKe(p,h,r):c++}return c&&(n+=r.shorthand===!0?\"\\\\d\":\"[0-9]\"),{pattern:n,count:[c],digits:a}}function noe(t,e,r,s){let a=hKe(t,e),n=[],c=t,f;for(let p=0;p<a.length;p++){let h=a[p],E=gKe(String(c),String(h),s),C=\"\";if(!r.isPadded&&f&&f.pattern===E.pattern){f.count.length>1&&f.count.pop(),f.count.push(E.count[0]),f.string=f.pattern+aoe(f.count),c=h+1;continue}r.isPadded&&(C=EKe(h,r,s)),E.string=C+E.pattern+aoe(E.count),n.push(E),c=h+1,f=E}return n}function s4(t,e,r,s,a){let n=[];for(let c of t){let{string:f}=c;!s&&!ioe(e,\"string\",f)&&n.push(r+f),s&&ioe(e,\"string\",f)&&n.push(r+f)}return n}function dKe(t,e){let r=[];for(let s=0;s<t.length;s++)r.push([t[s],e[s]]);return r}function mKe(t,e){return t>e?1:e>t?-1:0}function ioe(t,e,r){return t.some(s=>s[e]===r)}function soe(t,e){return Number(String(t).slice(0,-e)+\"9\".repeat(e))}function ooe(t,e){return t-t%Math.pow(10,e)}function aoe(t){let[e=0,r=\"\"]=t;return r||e>1?`{${e+(r?\",\"+r:\"\")}}`:\"\"}function yKe(t,e,r){return`[${t}${e-t===1?\"\":\"-\"}${e}]`}function loe(t){return/^-?(0+)\\d/.test(t)}function EKe(t,e,r){if(!e.isPadded)return t;let s=Math.abs(e.maxLen-String(t).length),a=r.relaxZeros!==!1;switch(s){case 0:return\"\";case 1:return a?\"0?\":\"0\";case 2:return a?\"0{0,2}\":\"00\";default:return a?`0{0,${s}}`:`0{${s}}`}}Gd.cache={};Gd.clearCache=()=>Gd.cache={};coe.exports=Gd});var l4=_((oFt,yoe)=>{\"use strict\";var IKe=Ie(\"util\"),poe=uoe(),foe=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),CKe=t=>e=>t===!0?Number(e):String(e),o4=t=>typeof t==\"number\"||typeof t==\"string\"&&t!==\"\",yB=t=>Number.isInteger(+t),a4=t=>{let e=`${t}`,r=-1;if(e[0]===\"-\"&&(e=e.slice(1)),e===\"0\")return!1;for(;e[++r]===\"0\";);return r>0},wKe=(t,e,r)=>typeof t==\"string\"||typeof e==\"string\"?!0:r.stringify===!0,BKe=(t,e,r)=>{if(e>0){let s=t[0]===\"-\"?\"-\":\"\";s&&(t=t.slice(1)),t=s+t.padStart(s?e-1:e,\"0\")}return r===!1?String(t):t},Aoe=(t,e)=>{let r=t[0]===\"-\"?\"-\":\"\";for(r&&(t=t.slice(1),e--);t.length<e;)t=\"0\"+t;return r?\"-\"+t:t},vKe=(t,e)=>{t.negatives.sort((c,f)=>c<f?-1:c>f?1:0),t.positives.sort((c,f)=>c<f?-1:c>f?1:0);let r=e.capture?\"\":\"?:\",s=\"\",a=\"\",n;return t.positives.length&&(s=t.positives.join(\"|\")),t.negatives.length&&(a=`-(${r}${t.negatives.join(\"|\")})`),s&&a?n=`${s}|${a}`:n=s||a,e.wrap?`(${r}${n})`:n},hoe=(t,e,r,s)=>{if(r)return poe(t,e,{wrap:!1,...s});let a=String.fromCharCode(t);if(t===e)return a;let n=String.fromCharCode(e);return`[${a}-${n}]`},goe=(t,e,r)=>{if(Array.isArray(t)){let s=r.wrap===!0,a=r.capture?\"\":\"?:\";return s?`(${a}${t.join(\"|\")})`:t.join(\"|\")}return poe(t,e,r)},doe=(...t)=>new RangeError(\"Invalid range arguments: \"+IKe.inspect(...t)),moe=(t,e,r)=>{if(r.strictRanges===!0)throw doe([t,e]);return[]},SKe=(t,e)=>{if(e.strictRanges===!0)throw new TypeError(`Expected step \"${t}\" to be a number`);return[]},DKe=(t,e,r=1,s={})=>{let a=Number(t),n=Number(e);if(!Number.isInteger(a)||!Number.isInteger(n)){if(s.strictRanges===!0)throw doe([t,e]);return[]}a===0&&(a=0),n===0&&(n=0);let c=a>n,f=String(t),p=String(e),h=String(r);r=Math.max(Math.abs(r),1);let E=a4(f)||a4(p)||a4(h),C=E?Math.max(f.length,p.length,h.length):0,S=E===!1&&wKe(t,e,s)===!1,P=s.transform||CKe(S);if(s.toRegex&&r===1)return hoe(Aoe(t,C),Aoe(e,C),!0,s);let I={negatives:[],positives:[]},R=W=>I[W<0?\"negatives\":\"positives\"].push(Math.abs(W)),N=[],U=0;for(;c?a>=n:a<=n;)s.toRegex===!0&&r>1?R(a):N.push(BKe(P(a,U),C,S)),a=c?a-r:a+r,U++;return s.toRegex===!0?r>1?vKe(I,s):goe(N,null,{wrap:!1,...s}):N},bKe=(t,e,r=1,s={})=>{if(!yB(t)&&t.length>1||!yB(e)&&e.length>1)return moe(t,e,s);let a=s.transform||(S=>String.fromCharCode(S)),n=`${t}`.charCodeAt(0),c=`${e}`.charCodeAt(0),f=n>c,p=Math.min(n,c),h=Math.max(n,c);if(s.toRegex&&r===1)return hoe(p,h,!1,s);let E=[],C=0;for(;f?n>=c:n<=c;)E.push(a(n,C)),n=f?n-r:n+r,C++;return s.toRegex===!0?goe(E,null,{wrap:!1,options:s}):E},Ak=(t,e,r,s={})=>{if(e==null&&o4(t))return[t];if(!o4(t)||!o4(e))return moe(t,e,s);if(typeof r==\"function\")return Ak(t,e,1,{transform:r});if(foe(r))return Ak(t,e,0,r);let a={...s};return a.capture===!0&&(a.wrap=!0),r=r||a.step||1,yB(r)?yB(t)&&yB(e)?DKe(t,e,r,a):bKe(t,e,Math.max(Math.abs(r),1),a):r!=null&&!foe(r)?SKe(r,a):Ak(t,e,1,r)};yoe.exports=Ak});var Coe=_((aFt,Ioe)=>{\"use strict\";var PKe=l4(),Eoe=uk(),xKe=(t,e={})=>{let r=(s,a={})=>{let n=Eoe.isInvalidBrace(a),c=s.invalid===!0&&e.escapeInvalid===!0,f=n===!0||c===!0,p=e.escapeInvalid===!0?\"\\\\\":\"\",h=\"\";if(s.isOpen===!0||s.isClose===!0)return p+s.value;if(s.type===\"open\")return f?p+s.value:\"(\";if(s.type===\"close\")return f?p+s.value:\")\";if(s.type===\"comma\")return s.prev.type===\"comma\"?\"\":f?s.value:\"|\";if(s.value)return s.value;if(s.nodes&&s.ranges>0){let E=Eoe.reduce(s.nodes),C=PKe(...E,{...e,wrap:!1,toRegex:!0});if(C.length!==0)return E.length>1&&C.length>1?`(${C})`:C}if(s.nodes)for(let E of s.nodes)h+=r(E,s);return h};return r(t)};Ioe.exports=xKe});var voe=_((lFt,Boe)=>{\"use strict\";var kKe=l4(),woe=fk(),RE=uk(),qd=(t=\"\",e=\"\",r=!1)=>{let s=[];if(t=[].concat(t),e=[].concat(e),!e.length)return t;if(!t.length)return r?RE.flatten(e).map(a=>`{${a}}`):e;for(let a of t)if(Array.isArray(a))for(let n of a)s.push(qd(n,e,r));else for(let n of e)r===!0&&typeof n==\"string\"&&(n=`{${n}}`),s.push(Array.isArray(n)?qd(a,n,r):a+n);return RE.flatten(s)},QKe=(t,e={})=>{let r=e.rangeLimit===void 0?1e3:e.rangeLimit,s=(a,n={})=>{a.queue=[];let c=n,f=n.queue;for(;c.type!==\"brace\"&&c.type!==\"root\"&&c.parent;)c=c.parent,f=c.queue;if(a.invalid||a.dollar){f.push(qd(f.pop(),woe(a,e)));return}if(a.type===\"brace\"&&a.invalid!==!0&&a.nodes.length===2){f.push(qd(f.pop(),[\"{}\"]));return}if(a.nodes&&a.ranges>0){let C=RE.reduce(a.nodes);if(RE.exceedsLimit(...C,e.step,r))throw new RangeError(\"expanded array length exceeds range limit. Use options.rangeLimit to increase or disable the limit.\");let S=kKe(...C,e);S.length===0&&(S=woe(a,e)),f.push(qd(f.pop(),S)),a.nodes=[];return}let p=RE.encloseBrace(a),h=a.queue,E=a;for(;E.type!==\"brace\"&&E.type!==\"root\"&&E.parent;)E=E.parent,h=E.queue;for(let C=0;C<a.nodes.length;C++){let S=a.nodes[C];if(S.type===\"comma\"&&a.type===\"brace\"){C===1&&h.push(\"\"),h.push(\"\");continue}if(S.type===\"close\"){f.push(qd(f.pop(),h,p));continue}if(S.value&&S.type!==\"open\"){h.push(qd(h.pop(),S.value));continue}S.nodes&&s(S,a)}return h};return RE.flatten(s(t))};Boe.exports=QKe});var Doe=_((cFt,Soe)=>{\"use strict\";Soe.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 Qoe=_((uFt,koe)=>{\"use strict\";var TKe=fk(),{MAX_LENGTH:boe,CHAR_BACKSLASH:c4,CHAR_BACKTICK:RKe,CHAR_COMMA:FKe,CHAR_DOT:NKe,CHAR_LEFT_PARENTHESES:OKe,CHAR_RIGHT_PARENTHESES:LKe,CHAR_LEFT_CURLY_BRACE:MKe,CHAR_RIGHT_CURLY_BRACE:UKe,CHAR_LEFT_SQUARE_BRACKET:Poe,CHAR_RIGHT_SQUARE_BRACKET:xoe,CHAR_DOUBLE_QUOTE:_Ke,CHAR_SINGLE_QUOTE:HKe,CHAR_NO_BREAK_SPACE:jKe,CHAR_ZERO_WIDTH_NOBREAK_SPACE:GKe}=Doe(),qKe=(t,e={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");let r=e||{},s=typeof r.maxLength==\"number\"?Math.min(boe,r.maxLength):boe;if(t.length>s)throw new SyntaxError(`Input length (${t.length}), exceeds max characters (${s})`);let a={type:\"root\",input:t,nodes:[]},n=[a],c=a,f=a,p=0,h=t.length,E=0,C=0,S,P={},I=()=>t[E++],R=N=>{if(N.type===\"text\"&&f.type===\"dot\"&&(f.type=\"text\"),f&&f.type===\"text\"&&N.type===\"text\"){f.value+=N.value;return}return c.nodes.push(N),N.parent=c,N.prev=f,f=N,N};for(R({type:\"bos\"});E<h;)if(c=n[n.length-1],S=I(),!(S===GKe||S===jKe)){if(S===c4){R({type:\"text\",value:(e.keepEscaping?S:\"\")+I()});continue}if(S===xoe){R({type:\"text\",value:\"\\\\\"+S});continue}if(S===Poe){p++;let N=!0,U;for(;E<h&&(U=I());){if(S+=U,U===Poe){p++;continue}if(U===c4){S+=I();continue}if(U===xoe&&(p--,p===0))break}R({type:\"text\",value:S});continue}if(S===OKe){c=R({type:\"paren\",nodes:[]}),n.push(c),R({type:\"text\",value:S});continue}if(S===LKe){if(c.type!==\"paren\"){R({type:\"text\",value:S});continue}c=n.pop(),R({type:\"text\",value:S}),c=n[n.length-1];continue}if(S===_Ke||S===HKe||S===RKe){let N=S,U;for(e.keepQuotes!==!0&&(S=\"\");E<h&&(U=I());){if(U===c4){S+=U+I();continue}if(U===N){e.keepQuotes===!0&&(S+=U);break}S+=U}R({type:\"text\",value:S});continue}if(S===MKe){C++;let U={type:\"brace\",open:!0,close:!1,dollar:f.value&&f.value.slice(-1)===\"$\"||c.dollar===!0,depth:C,commas:0,ranges:0,nodes:[]};c=R(U),n.push(c),R({type:\"open\",value:S});continue}if(S===UKe){if(c.type!==\"brace\"){R({type:\"text\",value:S});continue}let N=\"close\";c=n.pop(),c.close=!0,R({type:N,value:S}),C--,c=n[n.length-1];continue}if(S===FKe&&C>0){if(c.ranges>0){c.ranges=0;let N=c.nodes.shift();c.nodes=[N,{type:\"text\",value:TKe(c)}]}R({type:\"comma\",value:S}),c.commas++;continue}if(S===NKe&&C>0&&c.commas===0){let N=c.nodes;if(C===0||N.length===0){R({type:\"text\",value:S});continue}if(f.type===\"dot\"){if(c.range=[],f.value+=S,f.type=\"range\",c.nodes.length!==3&&c.nodes.length!==5){c.invalid=!0,c.ranges=0,f.type=\"text\";continue}c.ranges++,c.args=[];continue}if(f.type===\"range\"){N.pop();let U=N[N.length-1];U.value+=f.value+S,f=U,c.ranges--;continue}R({type:\"dot\",value:S});continue}R({type:\"text\",value:S})}do if(c=n.pop(),c.type!==\"root\"){c.nodes.forEach(W=>{W.nodes||(W.type===\"open\"&&(W.isOpen=!0),W.type===\"close\"&&(W.isClose=!0),W.nodes||(W.type=\"text\"),W.invalid=!0)});let N=n[n.length-1],U=N.nodes.indexOf(c);N.nodes.splice(U,1,...c.nodes)}while(n.length>0);return R({type:\"eos\"}),a};koe.exports=qKe});var Foe=_((fFt,Roe)=>{\"use strict\";var Toe=fk(),WKe=Coe(),YKe=voe(),VKe=Qoe(),jl=(t,e={})=>{let r=[];if(Array.isArray(t))for(let s of t){let a=jl.create(s,e);Array.isArray(a)?r.push(...a):r.push(a)}else r=[].concat(jl.create(t,e));return e&&e.expand===!0&&e.nodupes===!0&&(r=[...new Set(r)]),r};jl.parse=(t,e={})=>VKe(t,e);jl.stringify=(t,e={})=>Toe(typeof t==\"string\"?jl.parse(t,e):t,e);jl.compile=(t,e={})=>(typeof t==\"string\"&&(t=jl.parse(t,e)),WKe(t,e));jl.expand=(t,e={})=>{typeof t==\"string\"&&(t=jl.parse(t,e));let r=YKe(t,e);return e.noempty===!0&&(r=r.filter(Boolean)),e.nodupes===!0&&(r=[...new Set(r)]),r};jl.create=(t,e={})=>t===\"\"||t.length<3?[t]:e.expand!==!0?jl.compile(t,e):jl.expand(t,e);Roe.exports=jl});var EB=_((AFt,Uoe)=>{\"use strict\";var JKe=Ie(\"path\"),Vf=\"\\\\\\\\/\",Noe=`[^${Vf}]`,Dp=\"\\\\.\",KKe=\"\\\\+\",zKe=\"\\\\?\",pk=\"\\\\/\",XKe=\"(?=.)\",Ooe=\"[^/]\",u4=`(?:${pk}|$)`,Loe=`(?:^|${pk})`,f4=`${Dp}{1,2}${u4}`,ZKe=`(?!${Dp})`,$Ke=`(?!${Loe}${f4})`,eze=`(?!${Dp}{0,1}${u4})`,tze=`(?!${f4})`,rze=`[^.${pk}]`,nze=`${Ooe}*?`,Moe={DOT_LITERAL:Dp,PLUS_LITERAL:KKe,QMARK_LITERAL:zKe,SLASH_LITERAL:pk,ONE_CHAR:XKe,QMARK:Ooe,END_ANCHOR:u4,DOTS_SLASH:f4,NO_DOT:ZKe,NO_DOTS:$Ke,NO_DOT_SLASH:eze,NO_DOTS_SLASH:tze,QMARK_NO_DOT:rze,STAR:nze,START_ANCHOR:Loe},ize={...Moe,SLASH_LITERAL:`[${Vf}]`,QMARK:Noe,STAR:`${Noe}*?`,DOTS_SLASH:`${Dp}{1,2}(?:[${Vf}]|$)`,NO_DOT:`(?!${Dp})`,NO_DOTS:`(?!(?:^|[${Vf}])${Dp}{1,2}(?:[${Vf}]|$))`,NO_DOT_SLASH:`(?!${Dp}{0,1}(?:[${Vf}]|$))`,NO_DOTS_SLASH:`(?!${Dp}{1,2}(?:[${Vf}]|$))`,QMARK_NO_DOT:`[^.${Vf}]`,START_ANCHOR:`(?:^|[${Vf}])`,END_ANCHOR:`(?:[${Vf}]|$)`},sze={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\"};Uoe.exports={MAX_LENGTH:1024*64,POSIX_REGEX_SOURCE:sze,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:JKe.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?ize:Moe}}});var IB=_(ol=>{\"use strict\";var oze=Ie(\"path\"),aze=process.platform===\"win32\",{REGEX_BACKSLASH:lze,REGEX_REMOVE_BACKSLASH:cze,REGEX_SPECIAL_CHARS:uze,REGEX_SPECIAL_CHARS_GLOBAL:fze}=EB();ol.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);ol.hasRegexChars=t=>uze.test(t);ol.isRegexChar=t=>t.length===1&&ol.hasRegexChars(t);ol.escapeRegex=t=>t.replace(fze,\"\\\\$1\");ol.toPosixSlashes=t=>t.replace(lze,\"/\");ol.removeBackslashes=t=>t.replace(cze,e=>e===\"\\\\\"?\"\":e);ol.supportsLookbehinds=()=>{let t=process.version.slice(1).split(\".\").map(Number);return t.length===3&&t[0]>=9||t[0]===8&&t[1]>=10};ol.isWindows=t=>t&&typeof t.windows==\"boolean\"?t.windows:aze===!0||oze.sep===\"\\\\\";ol.escapeLast=(t,e,r)=>{let s=t.lastIndexOf(e,r);return s===-1?t:t[s-1]===\"\\\\\"?ol.escapeLast(t,e,s-1):`${t.slice(0,s)}\\\\${t.slice(s)}`};ol.removePrefix=(t,e={})=>{let r=t;return r.startsWith(\"./\")&&(r=r.slice(2),e.prefix=\"./\"),r};ol.wrapOutput=(t,e={},r={})=>{let s=r.contains?\"\":\"^\",a=r.contains?\"\":\"$\",n=`${s}(?:${t})${a}`;return e.negated===!0&&(n=`(?:^(?!${n}).*$)`),n}});var Voe=_((hFt,Yoe)=>{\"use strict\";var _oe=IB(),{CHAR_ASTERISK:A4,CHAR_AT:Aze,CHAR_BACKWARD_SLASH:CB,CHAR_COMMA:pze,CHAR_DOT:p4,CHAR_EXCLAMATION_MARK:h4,CHAR_FORWARD_SLASH:Woe,CHAR_LEFT_CURLY_BRACE:g4,CHAR_LEFT_PARENTHESES:d4,CHAR_LEFT_SQUARE_BRACKET:hze,CHAR_PLUS:gze,CHAR_QUESTION_MARK:Hoe,CHAR_RIGHT_CURLY_BRACE:dze,CHAR_RIGHT_PARENTHESES:joe,CHAR_RIGHT_SQUARE_BRACKET:mze}=EB(),Goe=t=>t===Woe||t===CB,qoe=t=>{t.isPrefix!==!0&&(t.depth=t.isGlobstar?1/0:1)},yze=(t,e)=>{let r=e||{},s=t.length-1,a=r.parts===!0||r.scanToEnd===!0,n=[],c=[],f=[],p=t,h=-1,E=0,C=0,S=!1,P=!1,I=!1,R=!1,N=!1,U=!1,W=!1,ee=!1,ie=!1,ue=!1,le=0,me,pe,Be={value:\"\",depth:0,isGlob:!1},Ce=()=>h>=s,g=()=>p.charCodeAt(h+1),we=()=>(me=pe,p.charCodeAt(++h));for(;h<s;){pe=we();let De;if(pe===CB){W=Be.backslashes=!0,pe=we(),pe===g4&&(U=!0);continue}if(U===!0||pe===g4){for(le++;Ce()!==!0&&(pe=we());){if(pe===CB){W=Be.backslashes=!0,we();continue}if(pe===g4){le++;continue}if(U!==!0&&pe===p4&&(pe=we())===p4){if(S=Be.isBrace=!0,I=Be.isGlob=!0,ue=!0,a===!0)continue;break}if(U!==!0&&pe===pze){if(S=Be.isBrace=!0,I=Be.isGlob=!0,ue=!0,a===!0)continue;break}if(pe===dze&&(le--,le===0)){U=!1,S=Be.isBrace=!0,ue=!0;break}}if(a===!0)continue;break}if(pe===Woe){if(n.push(h),c.push(Be),Be={value:\"\",depth:0,isGlob:!1},ue===!0)continue;if(me===p4&&h===E+1){E+=2;continue}C=h+1;continue}if(r.noext!==!0&&(pe===gze||pe===Aze||pe===A4||pe===Hoe||pe===h4)===!0&&g()===d4){if(I=Be.isGlob=!0,R=Be.isExtglob=!0,ue=!0,pe===h4&&h===E&&(ie=!0),a===!0){for(;Ce()!==!0&&(pe=we());){if(pe===CB){W=Be.backslashes=!0,pe=we();continue}if(pe===joe){I=Be.isGlob=!0,ue=!0;break}}continue}break}if(pe===A4){if(me===A4&&(N=Be.isGlobstar=!0),I=Be.isGlob=!0,ue=!0,a===!0)continue;break}if(pe===Hoe){if(I=Be.isGlob=!0,ue=!0,a===!0)continue;break}if(pe===hze){for(;Ce()!==!0&&(De=we());){if(De===CB){W=Be.backslashes=!0,we();continue}if(De===mze){P=Be.isBracket=!0,I=Be.isGlob=!0,ue=!0;break}}if(a===!0)continue;break}if(r.nonegate!==!0&&pe===h4&&h===E){ee=Be.negated=!0,E++;continue}if(r.noparen!==!0&&pe===d4){if(I=Be.isGlob=!0,a===!0){for(;Ce()!==!0&&(pe=we());){if(pe===d4){W=Be.backslashes=!0,pe=we();continue}if(pe===joe){ue=!0;break}}continue}break}if(I===!0){if(ue=!0,a===!0)continue;break}}r.noext===!0&&(R=!1,I=!1);let ye=p,Ae=\"\",se=\"\";E>0&&(Ae=p.slice(0,E),p=p.slice(E),C-=E),ye&&I===!0&&C>0?(ye=p.slice(0,C),se=p.slice(C)):I===!0?(ye=\"\",se=p):ye=p,ye&&ye!==\"\"&&ye!==\"/\"&&ye!==p&&Goe(ye.charCodeAt(ye.length-1))&&(ye=ye.slice(0,-1)),r.unescape===!0&&(se&&(se=_oe.removeBackslashes(se)),ye&&W===!0&&(ye=_oe.removeBackslashes(ye)));let Z={prefix:Ae,input:t,start:E,base:ye,glob:se,isBrace:S,isBracket:P,isGlob:I,isExtglob:R,isGlobstar:N,negated:ee,negatedExtglob:ie};if(r.tokens===!0&&(Z.maxDepth=0,Goe(pe)||c.push(Be),Z.tokens=c),r.parts===!0||r.tokens===!0){let De;for(let Re=0;Re<n.length;Re++){let mt=De?De+1:E,j=n[Re],rt=t.slice(mt,j);r.tokens&&(Re===0&&E!==0?(c[Re].isPrefix=!0,c[Re].value=Ae):c[Re].value=rt,qoe(c[Re]),Z.maxDepth+=c[Re].depth),(Re!==0||rt!==\"\")&&f.push(rt),De=j}if(De&&De+1<t.length){let Re=t.slice(De+1);f.push(Re),r.tokens&&(c[c.length-1].value=Re,qoe(c[c.length-1]),Z.maxDepth+=c[c.length-1].depth)}Z.slashes=n,Z.parts=f}return Z};Yoe.exports=yze});var zoe=_((gFt,Koe)=>{\"use strict\";var hk=EB(),Gl=IB(),{MAX_LENGTH:gk,POSIX_REGEX_SOURCE:Eze,REGEX_NON_SPECIAL_CHARS:Ize,REGEX_SPECIAL_CHARS_BACKREF:Cze,REPLACEMENTS:Joe}=hk,wze=(t,e)=>{if(typeof e.expandRange==\"function\")return e.expandRange(...t,e);t.sort();let r=`[${t.join(\"-\")}]`;try{new RegExp(r)}catch{return t.map(a=>Gl.escapeRegex(a)).join(\"..\")}return r},FE=(t,e)=>`Missing ${t}: \"${e}\" - use \"\\\\\\\\${e}\" to match literal characters`,m4=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");t=Joe[t]||t;let r={...e},s=typeof r.maxLength==\"number\"?Math.min(gk,r.maxLength):gk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);let n={type:\"bos\",value:\"\",output:r.prepend||\"\"},c=[n],f=r.capture?\"\":\"?:\",p=Gl.isWindows(e),h=hk.globChars(p),E=hk.extglobChars(h),{DOT_LITERAL:C,PLUS_LITERAL:S,SLASH_LITERAL:P,ONE_CHAR:I,DOTS_SLASH:R,NO_DOT:N,NO_DOT_SLASH:U,NO_DOTS_SLASH:W,QMARK:ee,QMARK_NO_DOT:ie,STAR:ue,START_ANCHOR:le}=h,me=x=>`(${f}(?:(?!${le}${x.dot?R:C}).)*?)`,pe=r.dot?\"\":N,Be=r.dot?ee:ie,Ce=r.bash===!0?me(r):ue;r.capture&&(Ce=`(${Ce})`),typeof r.noext==\"boolean\"&&(r.noextglob=r.noext);let g={input:t,index:-1,start:0,dot:r.dot===!0,consumed:\"\",output:\"\",prefix:\"\",backtrack:!1,negated:!1,brackets:0,braces:0,parens:0,quotes:0,globstar:!1,tokens:c};t=Gl.removePrefix(t,g),a=t.length;let we=[],ye=[],Ae=[],se=n,Z,De=()=>g.index===a-1,Re=g.peek=(x=1)=>t[g.index+x],mt=g.advance=()=>t[++g.index]||\"\",j=()=>t.slice(g.index+1),rt=(x=\"\",w=0)=>{g.consumed+=x,g.index+=w},Fe=x=>{g.output+=x.output!=null?x.output:x.value,rt(x.value)},Ne=()=>{let x=1;for(;Re()===\"!\"&&(Re(2)!==\"(\"||Re(3)===\"?\");)mt(),g.start++,x++;return x%2===0?!1:(g.negated=!0,g.start++,!0)},Pe=x=>{g[x]++,Ae.push(x)},Ve=x=>{g[x]--,Ae.pop()},ke=x=>{if(se.type===\"globstar\"){let w=g.braces>0&&(x.type===\"comma\"||x.type===\"brace\"),b=x.extglob===!0||we.length&&(x.type===\"pipe\"||x.type===\"paren\");x.type!==\"slash\"&&x.type!==\"paren\"&&!w&&!b&&(g.output=g.output.slice(0,-se.output.length),se.type=\"star\",se.value=\"*\",se.output=Ce,g.output+=se.output)}if(we.length&&x.type!==\"paren\"&&(we[we.length-1].inner+=x.value),(x.value||x.output)&&Fe(x),se&&se.type===\"text\"&&x.type===\"text\"){se.value+=x.value,se.output=(se.output||\"\")+x.value;return}x.prev=se,c.push(x),se=x},it=(x,w)=>{let b={...E[w],conditions:1,inner:\"\"};b.prev=se,b.parens=g.parens,b.output=g.output;let y=(r.capture?\"(\":\"\")+b.open;Pe(\"parens\"),ke({type:x,value:w,output:g.output?\"\":I}),ke({type:\"paren\",extglob:!0,value:mt(),output:y}),we.push(b)},Ue=x=>{let w=x.close+(r.capture?\")\":\"\"),b;if(x.type===\"negate\"){let y=Ce;if(x.inner&&x.inner.length>1&&x.inner.includes(\"/\")&&(y=me(r)),(y!==Ce||De()||/^\\)+$/.test(j()))&&(w=x.close=`)$))${y}`),x.inner.includes(\"*\")&&(b=j())&&/^\\.[^\\\\/.]+$/.test(b)){let F=m4(b,{...e,fastpaths:!1}).output;w=x.close=`)${F})${y})`}x.prev.type===\"bos\"&&(g.negatedExtglob=!0)}ke({type:\"paren\",extglob:!0,value:Z,output:w}),Ve(\"parens\")};if(r.fastpaths!==!1&&!/(^[*!]|[/()[\\]{}\"])/.test(t)){let x=!1,w=t.replace(Cze,(b,y,F,z,X,$)=>z===\"\\\\\"?(x=!0,b):z===\"?\"?y?y+z+(X?ee.repeat(X.length):\"\"):$===0?Be+(X?ee.repeat(X.length):\"\"):ee.repeat(F.length):z===\".\"?C.repeat(F.length):z===\"*\"?y?y+z+(X?Ce:\"\"):Ce:y?b:`\\\\${b}`);return x===!0&&(r.unescape===!0?w=w.replace(/\\\\/g,\"\"):w=w.replace(/\\\\+/g,b=>b.length%2===0?\"\\\\\\\\\":b?\"\\\\\":\"\")),w===t&&r.contains===!0?(g.output=t,g):(g.output=Gl.wrapOutput(w,g,e),g)}for(;!De();){if(Z=mt(),Z===\"\\0\")continue;if(Z===\"\\\\\"){let b=Re();if(b===\"/\"&&r.bash!==!0||b===\".\"||b===\";\")continue;if(!b){Z+=\"\\\\\",ke({type:\"text\",value:Z});continue}let y=/^\\\\+/.exec(j()),F=0;if(y&&y[0].length>2&&(F=y[0].length,g.index+=F,F%2!==0&&(Z+=\"\\\\\")),r.unescape===!0?Z=mt():Z+=mt(),g.brackets===0){ke({type:\"text\",value:Z});continue}}if(g.brackets>0&&(Z!==\"]\"||se.value===\"[\"||se.value===\"[^\")){if(r.posix!==!1&&Z===\":\"){let b=se.value.slice(1);if(b.includes(\"[\")&&(se.posix=!0,b.includes(\":\"))){let y=se.value.lastIndexOf(\"[\"),F=se.value.slice(0,y),z=se.value.slice(y+2),X=Eze[z];if(X){se.value=F+X,g.backtrack=!0,mt(),!n.output&&c.indexOf(se)===1&&(n.output=I);continue}}}(Z===\"[\"&&Re()!==\":\"||Z===\"-\"&&Re()===\"]\")&&(Z=`\\\\${Z}`),Z===\"]\"&&(se.value===\"[\"||se.value===\"[^\")&&(Z=`\\\\${Z}`),r.posix===!0&&Z===\"!\"&&se.value===\"[\"&&(Z=\"^\"),se.value+=Z,Fe({value:Z});continue}if(g.quotes===1&&Z!=='\"'){Z=Gl.escapeRegex(Z),se.value+=Z,Fe({value:Z});continue}if(Z==='\"'){g.quotes=g.quotes===1?0:1,r.keepQuotes===!0&&ke({type:\"text\",value:Z});continue}if(Z===\"(\"){Pe(\"parens\"),ke({type:\"paren\",value:Z});continue}if(Z===\")\"){if(g.parens===0&&r.strictBrackets===!0)throw new SyntaxError(FE(\"opening\",\"(\"));let b=we[we.length-1];if(b&&g.parens===b.parens+1){Ue(we.pop());continue}ke({type:\"paren\",value:Z,output:g.parens?\")\":\"\\\\)\"}),Ve(\"parens\");continue}if(Z===\"[\"){if(r.nobracket===!0||!j().includes(\"]\")){if(r.nobracket!==!0&&r.strictBrackets===!0)throw new SyntaxError(FE(\"closing\",\"]\"));Z=`\\\\${Z}`}else Pe(\"brackets\");ke({type:\"bracket\",value:Z});continue}if(Z===\"]\"){if(r.nobracket===!0||se&&se.type===\"bracket\"&&se.value.length===1){ke({type:\"text\",value:Z,output:`\\\\${Z}`});continue}if(g.brackets===0){if(r.strictBrackets===!0)throw new SyntaxError(FE(\"opening\",\"[\"));ke({type:\"text\",value:Z,output:`\\\\${Z}`});continue}Ve(\"brackets\");let b=se.value.slice(1);if(se.posix!==!0&&b[0]===\"^\"&&!b.includes(\"/\")&&(Z=`/${Z}`),se.value+=Z,Fe({value:Z}),r.literalBrackets===!1||Gl.hasRegexChars(b))continue;let y=Gl.escapeRegex(se.value);if(g.output=g.output.slice(0,-se.value.length),r.literalBrackets===!0){g.output+=y,se.value=y;continue}se.value=`(${f}${y}|${se.value})`,g.output+=se.value;continue}if(Z===\"{\"&&r.nobrace!==!0){Pe(\"braces\");let b={type:\"brace\",value:Z,output:\"(\",outputIndex:g.output.length,tokensIndex:g.tokens.length};ye.push(b),ke(b);continue}if(Z===\"}\"){let b=ye[ye.length-1];if(r.nobrace===!0||!b){ke({type:\"text\",value:Z,output:Z});continue}let y=\")\";if(b.dots===!0){let F=c.slice(),z=[];for(let X=F.length-1;X>=0&&(c.pop(),F[X].type!==\"brace\");X--)F[X].type!==\"dots\"&&z.unshift(F[X].value);y=wze(z,r),g.backtrack=!0}if(b.comma!==!0&&b.dots!==!0){let F=g.output.slice(0,b.outputIndex),z=g.tokens.slice(b.tokensIndex);b.value=b.output=\"\\\\{\",Z=y=\"\\\\}\",g.output=F;for(let X of z)g.output+=X.output||X.value}ke({type:\"brace\",value:Z,output:y}),Ve(\"braces\"),ye.pop();continue}if(Z===\"|\"){we.length>0&&we[we.length-1].conditions++,ke({type:\"text\",value:Z});continue}if(Z===\",\"){let b=Z,y=ye[ye.length-1];y&&Ae[Ae.length-1]===\"braces\"&&(y.comma=!0,b=\"|\"),ke({type:\"comma\",value:Z,output:b});continue}if(Z===\"/\"){if(se.type===\"dot\"&&g.index===g.start+1){g.start=g.index+1,g.consumed=\"\",g.output=\"\",c.pop(),se=n;continue}ke({type:\"slash\",value:Z,output:P});continue}if(Z===\".\"){if(g.braces>0&&se.type===\"dot\"){se.value===\".\"&&(se.output=C);let b=ye[ye.length-1];se.type=\"dots\",se.output+=Z,se.value+=Z,b.dots=!0;continue}if(g.braces+g.parens===0&&se.type!==\"bos\"&&se.type!==\"slash\"){ke({type:\"text\",value:Z,output:C});continue}ke({type:\"dot\",value:Z,output:C});continue}if(Z===\"?\"){if(!(se&&se.value===\"(\")&&r.noextglob!==!0&&Re()===\"(\"&&Re(2)!==\"?\"){it(\"qmark\",Z);continue}if(se&&se.type===\"paren\"){let y=Re(),F=Z;if(y===\"<\"&&!Gl.supportsLookbehinds())throw new Error(\"Node.js v10 or higher is required for regex lookbehinds\");(se.value===\"(\"&&!/[!=<:]/.test(y)||y===\"<\"&&!/<([!=]|\\w+>)/.test(j()))&&(F=`\\\\${Z}`),ke({type:\"text\",value:Z,output:F});continue}if(r.dot!==!0&&(se.type===\"slash\"||se.type===\"bos\")){ke({type:\"qmark\",value:Z,output:ie});continue}ke({type:\"qmark\",value:Z,output:ee});continue}if(Z===\"!\"){if(r.noextglob!==!0&&Re()===\"(\"&&(Re(2)!==\"?\"||!/[!=<:]/.test(Re(3)))){it(\"negate\",Z);continue}if(r.nonegate!==!0&&g.index===0){Ne();continue}}if(Z===\"+\"){if(r.noextglob!==!0&&Re()===\"(\"&&Re(2)!==\"?\"){it(\"plus\",Z);continue}if(se&&se.value===\"(\"||r.regex===!1){ke({type:\"plus\",value:Z,output:S});continue}if(se&&(se.type===\"bracket\"||se.type===\"paren\"||se.type===\"brace\")||g.parens>0){ke({type:\"plus\",value:Z});continue}ke({type:\"plus\",value:S});continue}if(Z===\"@\"){if(r.noextglob!==!0&&Re()===\"(\"&&Re(2)!==\"?\"){ke({type:\"at\",extglob:!0,value:Z,output:\"\"});continue}ke({type:\"text\",value:Z});continue}if(Z!==\"*\"){(Z===\"$\"||Z===\"^\")&&(Z=`\\\\${Z}`);let b=Ize.exec(j());b&&(Z+=b[0],g.index+=b[0].length),ke({type:\"text\",value:Z});continue}if(se&&(se.type===\"globstar\"||se.star===!0)){se.type=\"star\",se.star=!0,se.value+=Z,se.output=Ce,g.backtrack=!0,g.globstar=!0,rt(Z);continue}let x=j();if(r.noextglob!==!0&&/^\\([^?]/.test(x)){it(\"star\",Z);continue}if(se.type===\"star\"){if(r.noglobstar===!0){rt(Z);continue}let b=se.prev,y=b.prev,F=b.type===\"slash\"||b.type===\"bos\",z=y&&(y.type===\"star\"||y.type===\"globstar\");if(r.bash===!0&&(!F||x[0]&&x[0]!==\"/\")){ke({type:\"star\",value:Z,output:\"\"});continue}let X=g.braces>0&&(b.type===\"comma\"||b.type===\"brace\"),$=we.length&&(b.type===\"pipe\"||b.type===\"paren\");if(!F&&b.type!==\"paren\"&&!X&&!$){ke({type:\"star\",value:Z,output:\"\"});continue}for(;x.slice(0,3)===\"/**\";){let oe=t[g.index+4];if(oe&&oe!==\"/\")break;x=x.slice(3),rt(\"/**\",3)}if(b.type===\"bos\"&&De()){se.type=\"globstar\",se.value+=Z,se.output=me(r),g.output=se.output,g.globstar=!0,rt(Z);continue}if(b.type===\"slash\"&&b.prev.type!==\"bos\"&&!z&&De()){g.output=g.output.slice(0,-(b.output+se.output).length),b.output=`(?:${b.output}`,se.type=\"globstar\",se.output=me(r)+(r.strictSlashes?\")\":\"|$)\"),se.value+=Z,g.globstar=!0,g.output+=b.output+se.output,rt(Z);continue}if(b.type===\"slash\"&&b.prev.type!==\"bos\"&&x[0]===\"/\"){let oe=x[1]!==void 0?\"|$\":\"\";g.output=g.output.slice(0,-(b.output+se.output).length),b.output=`(?:${b.output}`,se.type=\"globstar\",se.output=`${me(r)}${P}|${P}${oe})`,se.value+=Z,g.output+=b.output+se.output,g.globstar=!0,rt(Z+mt()),ke({type:\"slash\",value:\"/\",output:\"\"});continue}if(b.type===\"bos\"&&x[0]===\"/\"){se.type=\"globstar\",se.value+=Z,se.output=`(?:^|${P}|${me(r)}${P})`,g.output=se.output,g.globstar=!0,rt(Z+mt()),ke({type:\"slash\",value:\"/\",output:\"\"});continue}g.output=g.output.slice(0,-se.output.length),se.type=\"globstar\",se.output=me(r),se.value+=Z,g.output+=se.output,g.globstar=!0,rt(Z);continue}let w={type:\"star\",value:Z,output:Ce};if(r.bash===!0){w.output=\".*?\",(se.type===\"bos\"||se.type===\"slash\")&&(w.output=pe+w.output),ke(w);continue}if(se&&(se.type===\"bracket\"||se.type===\"paren\")&&r.regex===!0){w.output=Z,ke(w);continue}(g.index===g.start||se.type===\"slash\"||se.type===\"dot\")&&(se.type===\"dot\"?(g.output+=U,se.output+=U):r.dot===!0?(g.output+=W,se.output+=W):(g.output+=pe,se.output+=pe),Re()!==\"*\"&&(g.output+=I,se.output+=I)),ke(w)}for(;g.brackets>0;){if(r.strictBrackets===!0)throw new SyntaxError(FE(\"closing\",\"]\"));g.output=Gl.escapeLast(g.output,\"[\"),Ve(\"brackets\")}for(;g.parens>0;){if(r.strictBrackets===!0)throw new SyntaxError(FE(\"closing\",\")\"));g.output=Gl.escapeLast(g.output,\"(\"),Ve(\"parens\")}for(;g.braces>0;){if(r.strictBrackets===!0)throw new SyntaxError(FE(\"closing\",\"}\"));g.output=Gl.escapeLast(g.output,\"{\"),Ve(\"braces\")}if(r.strictSlashes!==!0&&(se.type===\"star\"||se.type===\"bracket\")&&ke({type:\"maybe_slash\",value:\"\",output:`${P}?`}),g.backtrack===!0){g.output=\"\";for(let x of g.tokens)g.output+=x.output!=null?x.output:x.value,x.suffix&&(g.output+=x.suffix)}return g};m4.fastpaths=(t,e)=>{let r={...e},s=typeof r.maxLength==\"number\"?Math.min(gk,r.maxLength):gk,a=t.length;if(a>s)throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${s}`);t=Joe[t]||t;let n=Gl.isWindows(e),{DOT_LITERAL:c,SLASH_LITERAL:f,ONE_CHAR:p,DOTS_SLASH:h,NO_DOT:E,NO_DOTS:C,NO_DOTS_SLASH:S,STAR:P,START_ANCHOR:I}=hk.globChars(n),R=r.dot?C:E,N=r.dot?S:E,U=r.capture?\"\":\"?:\",W={negated:!1,prefix:\"\"},ee=r.bash===!0?\".*?\":P;r.capture&&(ee=`(${ee})`);let ie=pe=>pe.noglobstar===!0?ee:`(${U}(?:(?!${I}${pe.dot?h:c}).)*?)`,ue=pe=>{switch(pe){case\"*\":return`${R}${p}${ee}`;case\".*\":return`${c}${p}${ee}`;case\"*.*\":return`${R}${ee}${c}${p}${ee}`;case\"*/*\":return`${R}${ee}${f}${p}${N}${ee}`;case\"**\":return R+ie(r);case\"**/*\":return`(?:${R}${ie(r)}${f})?${N}${p}${ee}`;case\"**/*.*\":return`(?:${R}${ie(r)}${f})?${N}${ee}${c}${p}${ee}`;case\"**/.*\":return`(?:${R}${ie(r)}${f})?${c}${p}${ee}`;default:{let Be=/^(.*?)\\.(\\w+)$/.exec(pe);if(!Be)return;let Ce=ue(Be[1]);return Ce?Ce+c+Be[2]:void 0}}},le=Gl.removePrefix(t,W),me=ue(le);return me&&r.strictSlashes!==!0&&(me+=`${f}?`),me};Koe.exports=m4});var Zoe=_((dFt,Xoe)=>{\"use strict\";var Bze=Ie(\"path\"),vze=Voe(),y4=zoe(),E4=IB(),Sze=EB(),Dze=t=>t&&typeof t==\"object\"&&!Array.isArray(t),Zi=(t,e,r=!1)=>{if(Array.isArray(t)){let E=t.map(S=>Zi(S,e,r));return S=>{for(let P of E){let I=P(S);if(I)return I}return!1}}let s=Dze(t)&&t.tokens&&t.input;if(t===\"\"||typeof t!=\"string\"&&!s)throw new TypeError(\"Expected pattern to be a non-empty string\");let a=e||{},n=E4.isWindows(e),c=s?Zi.compileRe(t,e):Zi.makeRe(t,e,!1,!0),f=c.state;delete c.state;let p=()=>!1;if(a.ignore){let E={...e,ignore:null,onMatch:null,onResult:null};p=Zi(a.ignore,E,r)}let h=(E,C=!1)=>{let{isMatch:S,match:P,output:I}=Zi.test(E,c,e,{glob:t,posix:n}),R={glob:t,state:f,regex:c,posix:n,input:E,output:I,match:P,isMatch:S};return typeof a.onResult==\"function\"&&a.onResult(R),S===!1?(R.isMatch=!1,C?R:!1):p(E)?(typeof a.onIgnore==\"function\"&&a.onIgnore(R),R.isMatch=!1,C?R:!1):(typeof a.onMatch==\"function\"&&a.onMatch(R),C?R:!0)};return r&&(h.state=f),h};Zi.test=(t,e,r,{glob:s,posix:a}={})=>{if(typeof t!=\"string\")throw new TypeError(\"Expected input to be a string\");if(t===\"\")return{isMatch:!1,output:\"\"};let n=r||{},c=n.format||(a?E4.toPosixSlashes:null),f=t===s,p=f&&c?c(t):t;return f===!1&&(p=c?c(t):t,f=p===s),(f===!1||n.capture===!0)&&(n.matchBase===!0||n.basename===!0?f=Zi.matchBase(t,e,r,a):f=e.exec(p)),{isMatch:!!f,match:f,output:p}};Zi.matchBase=(t,e,r,s=E4.isWindows(r))=>(e instanceof RegExp?e:Zi.makeRe(e,r)).test(Bze.basename(t));Zi.isMatch=(t,e,r)=>Zi(e,r)(t);Zi.parse=(t,e)=>Array.isArray(t)?t.map(r=>Zi.parse(r,e)):y4(t,{...e,fastpaths:!1});Zi.scan=(t,e)=>vze(t,e);Zi.compileRe=(t,e,r=!1,s=!1)=>{if(r===!0)return t.output;let a=e||{},n=a.contains?\"\":\"^\",c=a.contains?\"\":\"$\",f=`${n}(?:${t.output})${c}`;t&&t.negated===!0&&(f=`^(?!${f}).*$`);let p=Zi.toRegex(f,e);return s===!0&&(p.state=t),p};Zi.makeRe=(t,e={},r=!1,s=!1)=>{if(!t||typeof t!=\"string\")throw new TypeError(\"Expected a non-empty string\");let a={negated:!1,fastpaths:!0};return e.fastpaths!==!1&&(t[0]===\".\"||t[0]===\"*\")&&(a.output=y4.fastpaths(t,e)),a.output||(a=y4(t,e)),Zi.compileRe(a,e,r,s)};Zi.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/$^/}};Zi.constants=Sze;Xoe.exports=Zi});var eae=_((mFt,$oe)=>{\"use strict\";$oe.exports=Zoe()});var Go=_((yFt,iae)=>{\"use strict\";var rae=Ie(\"util\"),nae=Foe(),Jf=eae(),I4=IB(),tae=t=>t===\"\"||t===\"./\",xi=(t,e,r)=>{e=[].concat(e),t=[].concat(t);let s=new Set,a=new Set,n=new Set,c=0,f=E=>{n.add(E.output),r&&r.onResult&&r.onResult(E)};for(let E=0;E<e.length;E++){let C=Jf(String(e[E]),{...r,onResult:f},!0),S=C.state.negated||C.state.negatedExtglob;S&&c++;for(let P of t){let I=C(P,!0);(S?!I.isMatch:I.isMatch)&&(S?s.add(I.output):(s.delete(I.output),a.add(I.output)))}}let h=(c===e.length?[...n]:[...a]).filter(E=>!s.has(E));if(r&&h.length===0){if(r.failglob===!0)throw new Error(`No matches found for \"${e.join(\", \")}\"`);if(r.nonull===!0||r.nullglob===!0)return r.unescape?e.map(E=>E.replace(/\\\\/g,\"\")):e}return h};xi.match=xi;xi.matcher=(t,e)=>Jf(t,e);xi.isMatch=(t,e,r)=>Jf(e,r)(t);xi.any=xi.isMatch;xi.not=(t,e,r={})=>{e=[].concat(e).map(String);let s=new Set,a=[],n=f=>{r.onResult&&r.onResult(f),a.push(f.output)},c=new Set(xi(t,e,{...r,onResult:n}));for(let f of a)c.has(f)||s.add(f);return[...s]};xi.contains=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${rae.inspect(t)}\"`);if(Array.isArray(e))return e.some(s=>xi.contains(t,s,r));if(typeof e==\"string\"){if(tae(t)||tae(e))return!1;if(t.includes(e)||t.startsWith(\"./\")&&t.slice(2).includes(e))return!0}return xi.isMatch(t,e,{...r,contains:!0})};xi.matchKeys=(t,e,r)=>{if(!I4.isObject(t))throw new TypeError(\"Expected the first argument to be an object\");let s=xi(Object.keys(t),e,r),a={};for(let n of s)a[n]=t[n];return a};xi.some=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(s.some(c=>n(c)))return!0}return!1};xi.every=(t,e,r)=>{let s=[].concat(t);for(let a of[].concat(e)){let n=Jf(String(a),r);if(!s.every(c=>n(c)))return!1}return!0};xi.all=(t,e,r)=>{if(typeof t!=\"string\")throw new TypeError(`Expected a string: \"${rae.inspect(t)}\"`);return[].concat(e).every(s=>Jf(s,r)(t))};xi.capture=(t,e,r)=>{let s=I4.isWindows(r),n=Jf.makeRe(String(t),{...r,capture:!0}).exec(s?I4.toPosixSlashes(e):e);if(n)return n.slice(1).map(c=>c===void 0?\"\":c)};xi.makeRe=(...t)=>Jf.makeRe(...t);xi.scan=(...t)=>Jf.scan(...t);xi.parse=(t,e)=>{let r=[];for(let s of[].concat(t||[]))for(let a of nae(String(s),e))r.push(Jf.parse(a,e));return r};xi.braces=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return e&&e.nobrace===!0||!/\\{.*\\}/.test(t)?[t]:nae(t,e)};xi.braceExpand=(t,e)=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return xi.braces(t,{...e,expand:!0})};iae.exports=xi});var oae=_((EFt,sae)=>{\"use strict\";sae.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 dk=_((IFt,aae)=>{\"use strict\";var bze=oae();aae.exports=t=>typeof t==\"string\"?t.replace(bze(),\"\"):t});function lae(t){return Number.isSafeInteger(t)&&t>=0}var cae=Xe(()=>{});function uae(t){return t!=null&&typeof t!=\"function\"&&lae(t.length)}var fae=Xe(()=>{cae()});function bc(t){return t===\"__proto__\"}var wB=Xe(()=>{});function NE(t){switch(typeof t){case\"number\":case\"symbol\":return!1;case\"string\":return t.includes(\".\")||t.includes(\"[\")||t.includes(\"]\")}}var mk=Xe(()=>{});function OE(t){return typeof t==\"string\"||typeof t==\"symbol\"?t:Object.is(t?.valueOf?.(),-0)?\"-0\":String(t)}var yk=Xe(()=>{});function Mu(t){let e=[],r=t.length;if(r===0)return e;let s=0,a=\"\",n=\"\",c=!1;for(t.charCodeAt(0)===46&&(e.push(\"\"),s++);s<r;){let f=t[s];n?f===\"\\\\\"&&s+1<r?(s++,a+=t[s]):f===n?n=\"\":a+=f:c?f==='\"'||f===\"'\"?n=f:f===\"]\"?(c=!1,e.push(a),a=\"\"):a+=f:f===\"[\"?(c=!0,a&&(e.push(a),a=\"\")):f===\".\"?a&&(e.push(a),a=\"\"):a+=f,s++}return a&&e.push(a),e}var LE=Xe(()=>{});function va(t,e,r){if(t==null)return r;switch(typeof e){case\"string\":{if(bc(e))return r;let s=t[e];return s===void 0?NE(e)?va(t,Mu(e),r):r:s}case\"number\":case\"symbol\":{typeof e==\"number\"&&(e=OE(e));let s=t[e];return s===void 0?r:s}default:{if(Array.isArray(e))return Pze(t,e,r);if(Object.is(e?.valueOf(),-0)?e=\"-0\":e=String(e),bc(e))return r;let s=t[e];return s===void 0?r:s}}}function Pze(t,e,r){if(e.length===0)return r;let s=t;for(let a=0;a<e.length;a++){if(s==null||bc(e[a]))return r;s=s[e[a]]}return s===void 0?r:s}var Ek=Xe(()=>{wB();mk();yk();LE()});function C4(t){return t!==null&&(typeof t==\"object\"||typeof t==\"function\")}var Aae=Xe(()=>{});function ME(t){return t==null||typeof t!=\"object\"&&typeof t!=\"function\"}var Ik=Xe(()=>{});function Ck(t,e){return t===e||Number.isNaN(t)&&Number.isNaN(e)}var w4=Xe(()=>{});function Wd(t){return Object.getOwnPropertySymbols(t).filter(e=>Object.prototype.propertyIsEnumerable.call(t,e))}var wk=Xe(()=>{});function Yd(t){return t==null?t===void 0?\"[object Undefined]\":\"[object Null]\":Object.prototype.toString.call(t)}var Bk=Xe(()=>{});var vk,UE,_E,HE,Vd,Sk,Dk,bk,Pk,xk,pae,kk,jE,hae,Qk,Tk,Rk,Fk,Nk,gae,Ok,Lk,Mk,dae,Uk,_k,Hk=Xe(()=>{vk=\"[object RegExp]\",UE=\"[object String]\",_E=\"[object Number]\",HE=\"[object Boolean]\",Vd=\"[object Arguments]\",Sk=\"[object Symbol]\",Dk=\"[object Date]\",bk=\"[object Map]\",Pk=\"[object Set]\",xk=\"[object Array]\",pae=\"[object Function]\",kk=\"[object ArrayBuffer]\",jE=\"[object Object]\",hae=\"[object Error]\",Qk=\"[object DataView]\",Tk=\"[object Uint8Array]\",Rk=\"[object Uint8ClampedArray]\",Fk=\"[object Uint16Array]\",Nk=\"[object Uint32Array]\",gae=\"[object BigUint64Array]\",Ok=\"[object Int8Array]\",Lk=\"[object Int16Array]\",Mk=\"[object Int32Array]\",dae=\"[object BigInt64Array]\",Uk=\"[object Float32Array]\",_k=\"[object Float64Array]\"});function GE(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}var jk=Xe(()=>{});function mae(t,e){return u0(t,void 0,t,new Map,e)}function u0(t,e,r,s=new Map,a=void 0){let n=a?.(t,e,r,s);if(n!=null)return n;if(ME(t))return t;if(s.has(t))return s.get(t);if(Array.isArray(t)){let c=new Array(t.length);s.set(t,c);for(let f=0;f<t.length;f++)c[f]=u0(t[f],f,r,s,a);return Object.hasOwn(t,\"index\")&&(c.index=t.index),Object.hasOwn(t,\"input\")&&(c.input=t.input),c}if(t instanceof Date)return new Date(t.getTime());if(t instanceof RegExp){let c=new RegExp(t.source,t.flags);return c.lastIndex=t.lastIndex,c}if(t instanceof Map){let c=new Map;s.set(t,c);for(let[f,p]of t)c.set(f,u0(p,f,r,s,a));return c}if(t instanceof Set){let c=new Set;s.set(t,c);for(let f of t)c.add(u0(f,void 0,r,s,a));return c}if(typeof Buffer<\"u\"&&Buffer.isBuffer(t))return t.subarray();if(GE(t)){let c=new(Object.getPrototypeOf(t)).constructor(t.length);s.set(t,c);for(let f=0;f<t.length;f++)c[f]=u0(t[f],f,r,s,a);return c}if(t instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&t instanceof SharedArrayBuffer)return t.slice(0);if(t instanceof DataView){let c=new DataView(t.buffer.slice(0),t.byteOffset,t.byteLength);return s.set(t,c),c0(c,t,r,s,a),c}if(typeof File<\"u\"&&t instanceof File){let c=new File([t],t.name,{type:t.type});return s.set(t,c),c0(c,t,r,s,a),c}if(t instanceof Blob){let c=new Blob([t],{type:t.type});return s.set(t,c),c0(c,t,r,s,a),c}if(t instanceof Error){let c=new t.constructor;return s.set(t,c),c.message=t.message,c.name=t.name,c.stack=t.stack,c.cause=t.cause,c0(c,t,r,s,a),c}if(typeof t==\"object\"&&xze(t)){let c=Object.create(Object.getPrototypeOf(t));return s.set(t,c),c0(c,t,r,s,a),c}return t}function c0(t,e,r=t,s,a){let n=[...Object.keys(e),...Wd(e)];for(let c=0;c<n.length;c++){let f=n[c],p=Object.getOwnPropertyDescriptor(t,f);(p==null||p.writable)&&(t[f]=u0(e[f],f,r,s,a))}}function xze(t){switch(Yd(t)){case Vd:case xk:case kk:case Qk:case HE:case Dk:case Uk:case _k:case Ok:case Lk:case Mk:case bk:case _E:case jE:case vk:case Pk:case UE:case Sk:case Tk:case Rk:case Fk:case Nk:return!0;default:return!1}}var B4=Xe(()=>{wk();Bk();Hk();Ik();jk()});function yae(t){return u0(t,void 0,t,new Map,void 0)}var Eae=Xe(()=>{B4()});function Iae(t,e){return mae(t,(r,s,a,n)=>{let c=e?.(r,s,a,n);if(c!=null)return c;if(typeof t==\"object\")switch(Object.prototype.toString.call(t)){case _E:case UE:case HE:{let f=new t.constructor(t?.valueOf());return c0(f,t),f}case Vd:{let f={};return c0(f,t),f.length=t.length,f[Symbol.iterator]=t[Symbol.iterator],f}default:return}})}var Cae=Xe(()=>{B4();Hk()});function f0(t){return Iae(t)}var v4=Xe(()=>{Cae()});function Gk(t,e=Number.MAX_SAFE_INTEGER){switch(typeof t){case\"number\":return Number.isInteger(t)&&t>=0&&t<e;case\"symbol\":return!1;case\"string\":return kze.test(t)}}var kze,S4=Xe(()=>{kze=/^(?:0|[1-9]\\d*)$/});function BB(t){return t!==null&&typeof t==\"object\"&&Yd(t)===\"[object Arguments]\"}var D4=Xe(()=>{Bk()});function vB(t,e){let r;if(Array.isArray(e)?r=e:typeof e==\"string\"&&NE(e)&&t?.[e]==null?r=Mu(e):r=[e],r.length===0)return!1;let s=t;for(let a=0;a<r.length;a++){let n=r[a];if((s==null||!Object.hasOwn(s,n))&&!((Array.isArray(s)||BB(s))&&Gk(n)&&n<s.length))return!1;s=s[n]}return!0}var b4=Xe(()=>{mk();S4();D4();LE()});function P4(t){return typeof t==\"object\"&&t!==null}var wae=Xe(()=>{});function Bae(t){return typeof t==\"symbol\"||t instanceof Symbol}var vae=Xe(()=>{});function Sae(t,e){return Array.isArray(t)?!1:typeof t==\"number\"||typeof t==\"boolean\"||t==null||Bae(t)?!0:typeof t==\"string\"&&(Tze.test(t)||!Qze.test(t))||e!=null&&Object.hasOwn(e,t)}var Qze,Tze,Dae=Xe(()=>{vae();Qze=/\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,Tze=/^\\w*$/});function A0(t,e){if(t==null)return!0;switch(typeof e){case\"symbol\":case\"number\":case\"object\":{if(Array.isArray(e))return bae(t,e);if(typeof e==\"number\"?e=OE(e):typeof e==\"object\"&&(Object.is(e?.valueOf(),-0)?e=\"-0\":e=String(e)),bc(e))return!1;if(t?.[e]===void 0)return!0;try{return delete t[e],!0}catch{return!1}}case\"string\":{if(t?.[e]===void 0&&NE(e))return bae(t,Mu(e));if(bc(e))return!1;try{return delete t[e],!0}catch{return!1}}}}function bae(t,e){let r=va(t,e.slice(0,-1),t),s=e[e.length-1];if(r?.[s]===void 0)return!0;if(bc(s))return!1;try{return delete r[s],!0}catch{return!1}}var x4=Xe(()=>{Ek();wB();mk();yk();LE()});function Pae(t){return t==null}var xae=Xe(()=>{});var kae,Qae=Xe(()=>{w4();kae=(t,e,r)=>{let s=t[e];(!(Object.hasOwn(t,e)&&Ck(s,r))||r===void 0&&!(e in t))&&(t[e]=r)}});function Tae(t,e,r,s){if(t==null&&!C4(t))return t;let a=Sae(e,t)?[e]:Array.isArray(e)?e:typeof e==\"string\"?Mu(e):[e],n=t;for(let c=0;c<a.length&&n!=null;c++){let f=OE(a[c]);if(bc(f))continue;let p;if(c===a.length-1)p=r(n[f]);else{let h=n[f],E=s?.(h,f,t);p=E!==void 0?E:C4(h)?h:Gk(a[c+1])?[]:{}}kae(n,f,p),n=n[f]}return t}var Rae=Xe(()=>{wB();Qae();S4();Dae();yk();Aae();LE()});function Jd(t,e,r){return Tae(t,e,()=>r,()=>{})}var k4=Xe(()=>{Rae()});function Fae(t,e=0,r={}){typeof r!=\"object\"&&(r={});let s=null,a=null,n=null,c=0,f=null,p,{leading:h=!1,trailing:E=!0,maxWait:C}=r,S=\"maxWait\"in r,P=S?Math.max(Number(C)||0,e):0,I=ue=>(s!==null&&(p=t.apply(a,s)),s=a=null,c=ue,p),R=ue=>(c=ue,f=setTimeout(ee,e),h&&s!==null?I(ue):p),N=ue=>(f=null,E&&s!==null?I(ue):p),U=ue=>{if(n===null)return!0;let le=ue-n,me=le>=e||le<0,pe=S&&ue-c>=P;return me||pe},W=ue=>{let le=n===null?0:ue-n,me=e-le,pe=P-(ue-c);return S?Math.min(me,pe):me},ee=()=>{let ue=Date.now();if(U(ue))return N(ue);f=setTimeout(ee,W(ue))},ie=function(...ue){let le=Date.now(),me=U(le);if(s=ue,a=this,n=le,me){if(f===null)return R(le);if(S)return clearTimeout(f),f=setTimeout(ee,e),I(le)}return f===null&&(f=setTimeout(ee,e)),p};return ie.cancel=()=>{f!==null&&clearTimeout(f),c=0,n=s=a=f=null},ie.flush=()=>f===null?p:N(Date.now()),ie}var Nae=Xe(()=>{});function Q4(t,e=0,r={}){let{leading:s=!0,trailing:a=!0}=r;return Fae(t,e,{leading:s,maxWait:e,trailing:a})}var Oae=Xe(()=>{Nae()});function T4(t){if(t==null)return\"\";if(typeof t==\"string\")return t;if(Array.isArray(t))return t.map(T4).join(\",\");let e=String(t);return e===\"0\"&&Object.is(Number(t),-0)?\"-0\":e}var Lae=Xe(()=>{});function R4(t){if(!t||typeof t!=\"object\")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.prototype||Object.getPrototypeOf(e)===null?Object.prototype.toString.call(t)===\"[object Object]\":!1}var Mae=Xe(()=>{});function Uae(t,e,r){return SB(t,e,void 0,void 0,void 0,void 0,r)}function SB(t,e,r,s,a,n,c){let f=c(t,e,r,s,a,n);if(f!==void 0)return f;if(typeof t==typeof e)switch(typeof t){case\"bigint\":case\"string\":case\"boolean\":case\"symbol\":case\"undefined\":return t===e;case\"number\":return t===e||Object.is(t,e);case\"function\":return t===e;case\"object\":return DB(t,e,n,c)}return DB(t,e,n,c)}function DB(t,e,r,s){if(Object.is(t,e))return!0;let a=Yd(t),n=Yd(e);if(a===Vd&&(a=jE),n===Vd&&(n=jE),a!==n)return!1;switch(a){case UE:return t.toString()===e.toString();case _E:{let p=t.valueOf(),h=e.valueOf();return Ck(p,h)}case HE:case Dk:case Sk:return Object.is(t.valueOf(),e.valueOf());case vk:return t.source===e.source&&t.flags===e.flags;case pae:return t===e}r=r??new Map;let c=r.get(t),f=r.get(e);if(c!=null&&f!=null)return c===e;r.set(t,e),r.set(e,t);try{switch(a){case bk:{if(t.size!==e.size)return!1;for(let[p,h]of t.entries())if(!e.has(p)||!SB(h,e.get(p),p,t,e,r,s))return!1;return!0}case Pk:{if(t.size!==e.size)return!1;let p=Array.from(t.values()),h=Array.from(e.values());for(let E=0;E<p.length;E++){let C=p[E],S=h.findIndex(P=>SB(C,P,void 0,t,e,r,s));if(S===-1)return!1;h.splice(S,1)}return!0}case xk:case Tk:case Rk:case Fk:case Nk:case gae:case Ok:case Lk:case Mk:case dae:case Uk:case _k:{if(typeof Buffer<\"u\"&&Buffer.isBuffer(t)!==Buffer.isBuffer(e)||t.length!==e.length)return!1;for(let p=0;p<t.length;p++)if(!SB(t[p],e[p],p,t,e,r,s))return!1;return!0}case kk:return t.byteLength!==e.byteLength?!1:DB(new Uint8Array(t),new Uint8Array(e),r,s);case Qk:return t.byteLength!==e.byteLength||t.byteOffset!==e.byteOffset?!1:DB(new Uint8Array(t),new Uint8Array(e),r,s);case hae:return t.name===e.name&&t.message===e.message;case jE:{if(!(DB(t.constructor,e.constructor,r,s)||R4(t)&&R4(e)))return!1;let h=[...Object.keys(t),...Wd(t)],E=[...Object.keys(e),...Wd(e)];if(h.length!==E.length)return!1;for(let C=0;C<h.length;C++){let S=h[C],P=t[S];if(!Object.hasOwn(e,S))return!1;let I=e[S];if(!SB(P,I,S,t,e,r,s))return!1}return!0}default:return!1}}finally{r.delete(t),r.delete(e)}}var _ae=Xe(()=>{Mae();wk();Bk();Hk();w4()});function Hae(){}var jae=Xe(()=>{});function F4(t,e){return Uae(t,e,Hae)}var Gae=Xe(()=>{_ae();jae()});function qae(t){return GE(t)}var Wae=Xe(()=>{jk()});function Yae(t){if(typeof t!=\"object\"||t==null)return!1;if(Object.getPrototypeOf(t)===null)return!0;if(Object.prototype.toString.call(t)!==\"[object Object]\"){let r=t[Symbol.toStringTag];return r==null||!Object.getOwnPropertyDescriptor(t,Symbol.toStringTag)?.writable?!1:t.toString()===`[object ${r}]`}let e=t;for(;Object.getPrototypeOf(e)!==null;)e=Object.getPrototypeOf(e);return Object.getPrototypeOf(t)===e}var Vae=Xe(()=>{});function Jae(t){if(ME(t))return t;if(Array.isArray(t)||GE(t)||t instanceof ArrayBuffer||typeof SharedArrayBuffer<\"u\"&&t instanceof SharedArrayBuffer)return t.slice(0);let e=Object.getPrototypeOf(t),r=e.constructor;if(t instanceof Date||t instanceof Map||t instanceof Set)return new r(t);if(t instanceof RegExp){let s=new r(t);return s.lastIndex=t.lastIndex,s}if(t instanceof DataView)return new r(t.buffer.slice(0));if(t instanceof Error){let s=new r(t.message);return s.stack=t.stack,s.name=t.name,s.cause=t.cause,s}if(typeof File<\"u\"&&t instanceof File)return new r([t],t.name,{type:t.type,lastModified:t.lastModified});if(typeof t==\"object\"){let s=Object.create(e);return Object.assign(s,t)}return t}var Kae=Xe(()=>{Ik();jk()});function N4(t,...e){let r=e.slice(0,-1),s=e[e.length-1],a=t;for(let n=0;n<r.length;n++){let c=r[n];a=qk(a,c,s,new Map)}return a}function qk(t,e,r,s){if(ME(t)&&(t=Object(t)),e==null||typeof e!=\"object\")return t;if(s.has(e))return Jae(s.get(e));if(s.set(e,t),Array.isArray(e)){e=e.slice();for(let n=0;n<e.length;n++)e[n]=e[n]??void 0}let a=[...Object.keys(e),...Wd(e)];for(let n=0;n<a.length;n++){let c=a[n];if(bc(c))continue;let f=e[c],p=t[c];if(BB(f)&&(f={...f}),BB(p)&&(p={...p}),typeof Buffer<\"u\"&&Buffer.isBuffer(f)&&(f=f0(f)),Array.isArray(f))if(typeof p==\"object\"&&p!=null){let E=[],C=Reflect.ownKeys(p);for(let S=0;S<C.length;S++){let P=C[S];E[P]=p[P]}p=E}else p=[];let h=r(p,f,c,t,e,s);h!=null?t[c]=h:Array.isArray(f)||P4(p)&&P4(f)?t[c]=qk(p,f,r,s):p==null&&Yae(f)?t[c]=qk({},f,r,s):p==null&&qae(f)?t[c]=f0(f):(p===void 0||f!==void 0)&&(t[c]=f)}return t}var zae=Xe(()=>{v4();wB();Kae();Ik();wk();D4();wae();Vae();Wae()});function O4(t,...e){if(t==null)return{};let r=yae(t);for(let s=0;s<e.length;s++){let a=e[s];switch(typeof a){case\"object\":{Array.isArray(a)||(a=Array.from(a));for(let n=0;n<a.length;n++){let c=a[n];A0(r,c)}break}case\"string\":case\"symbol\":case\"number\":{A0(r,a);break}}}return r}var Xae=Xe(()=>{x4();Eae()});function Kd(t,...e){if(Pae(t))return{};let r={};for(let s=0;s<e.length;s++){let a=e[s];switch(typeof a){case\"object\":{Array.isArray(a)||(uae(a)?a=Array.from(a):a=[a]);break}case\"string\":case\"symbol\":case\"number\":{a=[a];break}}for(let n of a){let c=va(t,n);c===void 0&&!vB(t,n)||(typeof n==\"string\"&&Object.hasOwn(t,n)?r[n]=c:Jd(r,n,c))}}return r}var Zae=Xe(()=>{Ek();b4();k4();fae();xae()});function $ae(t){return t.charAt(0).toUpperCase()+t.slice(1).toLowerCase()}var ele=Xe(()=>{});function bB(t){return $ae(T4(t))}var tle=Xe(()=>{ele();Lae()});var ql=Xe(()=>{Oae();Gae();v4();Ek();b4();zae();Xae();Zae();k4();x4();tle();LE()});var je={};Vt(je,{AsyncActions:()=>U4,BufferStream:()=>M4,CachingStrategy:()=>fle,DefaultStream:()=>_4,allSettledSafe:()=>Uu,assertNever:()=>G4,bufferStream:()=>WE,buildIgnorePattern:()=>Uze,convertMapsToIndexableObjects:()=>Yk,dynamicRequire:()=>Pp,escapeRegExp:()=>Fze,getArrayWithDefault:()=>xB,getFactoryWithDefault:()=>Yl,getMapWithDefault:()=>q4,getSetWithDefault:()=>bp,groupBy:()=>jze,isIndexableObject:()=>L4,isPathLike:()=>_ze,isTaggedYarnVersion:()=>Rze,makeDeferred:()=>lle,mapAndFilter:()=>Wl,mapAndFind:()=>p0,mergeIntoTarget:()=>ple,overrideType:()=>Nze,parseBoolean:()=>kB,parseDuration:()=>Jk,parseInt:()=>YE,parseOptionalBoolean:()=>Ale,plural:()=>Wk,prettifyAsyncErrors:()=>qE,prettifySyncErrors:()=>W4,releaseAfterUseAsync:()=>Lze,replaceEnvVariables:()=>Vk,sortMap:()=>qs,toMerged:()=>Hze,tryParseOptionalBoolean:()=>Y4,validateEnum:()=>Oze});function Rze(t){return!!(sle.default.valid(t)&&t.match(/^[^-]+(-rc\\.[0-9]+)?$/))}function Wk(t,{one:e,more:r,zero:s=r}){return t===0?s:t===1?e:r}function Fze(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,\"\\\\$&\")}function Nze(t){}function G4(t){throw new Error(`Assertion failed: Unexpected object '${t}'`)}function Oze(t,e){let r=Object.values(t);if(!r.includes(e))throw new nt(`Invalid value for enumeration: ${JSON.stringify(e)} (expected one of ${r.map(s=>JSON.stringify(s)).join(\", \")})`);return e}function Wl(t,e){let r=[];for(let s of t){let a=e(s);a!==ole&&r.push(a)}return r}function p0(t,e){for(let r of t){let s=e(r);if(s!==ale)return s}}function L4(t){return typeof t==\"object\"&&t!==null}async function Uu(t){let e=await Promise.allSettled(t),r=[];for(let s of e){if(s.status===\"rejected\")throw s.reason;r.push(s.value)}return r}function Yk(t){if(t instanceof Map&&(t=Object.fromEntries(t)),L4(t))for(let e of Object.keys(t)){let r=t[e];L4(r)&&(t[e]=Yk(r))}return t}function Yl(t,e,r){let s=t.get(e);return typeof s>\"u\"&&t.set(e,s=r()),s}function xB(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=[]),r}function bp(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Set),r}function q4(t,e){let r=t.get(e);return typeof r>\"u\"&&t.set(e,r=new Map),r}async function Lze(t,e){if(e==null)return await t();try{return await t()}finally{await e()}}async function qE(t,e){try{return await t()}catch(r){throw r.message=e(r.message),r}}function W4(t,e){try{return t()}catch(r){throw r.message=e(r.message),r}}async function WE(t){return await new Promise((e,r)=>{let s=[];t.on(\"error\",a=>{r(a)}),t.on(\"data\",a=>{s.push(a)}),t.on(\"end\",()=>{e(Buffer.concat(s))})})}function lle(){let t,e;return{promise:new Promise((s,a)=>{t=s,e=a}),resolve:t,reject:e}}function cle(t){return PB(fe.fromPortablePath(t))}function ule(path){let physicalPath=fe.fromPortablePath(path),currentCacheEntry=PB.cache[physicalPath];delete PB.cache[physicalPath];let result;try{result=cle(physicalPath);let freshCacheEntry=PB.cache[physicalPath],dynamicModule=eval(\"module\"),freshCacheIndex=dynamicModule.children.indexOf(freshCacheEntry);freshCacheIndex!==-1&&dynamicModule.children.splice(freshCacheIndex,1)}finally{PB.cache[physicalPath]=currentCacheEntry}return result}function Mze(t){let e=rle.get(t),r=ce.statSync(t);if(e?.mtime===r.mtimeMs)return e.instance;let s=ule(t);return rle.set(t,{mtime:r.mtimeMs,instance:s}),s}function Pp(t,{cachingStrategy:e=2}={}){switch(e){case 0:return ule(t);case 1:return Mze(t);case 2:return cle(t);default:throw new Error(\"Unsupported caching strategy\")}}function qs(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]<f[c]?-1:f[n]>f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function Uze(t){return t.length===0?null:t.map(e=>`(${nle.default.makeRe(e,{windows:!1,dot:!0}).source})`).join(\"|\")}function Vk(t,{env:e}){let r=/\\\\?\\${(?<variableName>[\\d\\w_]+)(?<colon>:)?(?:-(?<fallback>[^}]*))?}/g;return t.replace(r,(s,...a)=>{if(s.startsWith(\"\\\\\"))return s.slice(1);let{variableName:n,colon:c,fallback:f}=a[a.length-1],p=Object.hasOwn(e,n),h=e[n];if(h||p&&!c)return h;if(f!=null)return f;throw new nt(`Environment variable not found (${n})`)})}function kB(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 Ale(t){return typeof t>\"u\"?t:kB(t)}function Y4(t){try{return Ale(t)}catch{return null}}function _ze(t){return!!(fe.isAbsolute(t)||t.match(/^(\\.{1,2}|~)\\//))}function ple(t,...e){let r=c=>({value:c}),s=r(t),a=e.map(c=>r(c)),{value:n}=N4(s,...a,(c,f)=>{if(Array.isArray(c)&&Array.isArray(f)){for(let p of f)c.find(h=>F4(h,p))||c.push(p);return c}});return n}function Hze(...t){return ple({},...t)}function jze(t,e){let r=Object.create(null);for(let s of t){let a=s[e];r[a]??=[],r[a].push(s)}return r}function YE(t){return typeof t==\"string\"?Number.parseInt(t,10):t}function Jk(t,e){let r=Gze.exec(t)?.groups;if(!r)throw new Error(`Couldn't parse \"${t}\" as a duration`);if(r.unit===void 0)return parseFloat(r.num);let s=H4[r.unit];if(!s)throw new Error(`Invalid duration unit \"${r.unit}\"`);return parseFloat(r.num)*s/H4[e]}var nle,ile,sle,j4,ole,ale,M4,U4,_4,PB,rle,fle,H4,Gze,Pc=Xe(()=>{Dt();Yt();ql();nle=ut(Go()),ile=ut(Ld()),sle=ut(Ai()),j4=Ie(\"stream\");ole=Symbol();Wl.skip=ole;ale=Symbol();p0.skip=ale;M4=class extends j4.Transform{constructor(){super(...arguments);this.chunks=[]}_transform(r,s,a){if(s!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: BufferStream only accept buffers\");this.chunks.push(r),a(null,null)}_flush(r){r(null,Buffer.concat(this.chunks))}};U4=class{constructor(e){this.deferred=new Map;this.promises=new Map;this.limit=(0,ile.default)(e)}set(e,r){let s=this.deferred.get(e);typeof s>\"u\"&&this.deferred.set(e,s=lle());let a=this.limit(()=>r());return this.promises.set(e,a),a.then(()=>{this.promises.get(e)===a&&s.resolve()},n=>{this.promises.get(e)===a&&s.reject(n)}),s.promise}reduce(e,r){let s=this.promises.get(e)??Promise.resolve();this.set(e,()=>r(s))}async wait(){await Promise.all(this.promises.values())}},_4=class extends j4.Transform{constructor(r=Buffer.alloc(0)){super();this.active=!0;this.ifEmpty=r}_transform(r,s,a){if(s!==\"buffer\"||!Buffer.isBuffer(r))throw new Error(\"Assertion failed: DefaultStream only accept buffers\");this.active=!1,a(null,r)}_flush(r){this.active&&this.ifEmpty.length>0?r(null,this.ifEmpty):r(null)}},PB=eval(\"require\");rle=new Map;fle=(s=>(s[s.NoCache=0]=\"NoCache\",s[s.FsTime=1]=\"FsTime\",s[s.Node=2]=\"Node\",s))(fle||{});H4={ms:1,s:1e3,m:60*1e3,h:60*60*1e3,d:24*60*60*1e3,w:7*24*60*60*1e3},Gze=new RegExp(`^(?<num>\\\\d*\\\\.?\\\\d+)(?<unit>${Object.keys(H4).join(\"|\")})?$`)});var VE,V4,J4,hle=Xe(()=>{VE=(r=>(r.HARD=\"HARD\",r.SOFT=\"SOFT\",r))(VE||{}),V4=(s=>(s.Dependency=\"Dependency\",s.PeerDependency=\"PeerDependency\",s.PeerDependencyMeta=\"PeerDependencyMeta\",s))(V4||{}),J4=(s=>(s.Inactive=\"inactive\",s.Redundant=\"redundant\",s.Active=\"active\",s))(J4||{})});var he={};Vt(he,{LogLevel:()=>eQ,Style:()=>Xk,Type:()=>ht,addLogFilterSupport:()=>RB,applyColor:()=>ri,applyHyperlink:()=>KE,applyStyle:()=>zd,json:()=>Xd,jsonOrPretty:()=>Yze,mark:()=>$4,pretty:()=>Ht,prettyField:()=>Kf,prettyList:()=>Z4,prettyTruncatedLocatorList:()=>$k,stripAnsi:()=>JE.default,supportsColor:()=>Zk,supportsHyperlinks:()=>X4,tuple:()=>_u});function gle(t){let e=[\"KiB\",\"MiB\",\"GiB\",\"TiB\"],r=e.length;for(;r>1&&t<1024**r;)r-=1;let s=1024**r;return`${Math.floor(t*100/s)/100} ${e[r-1]}`}function Kk(t,e){if(Array.isArray(e))return e.length===0?ri(t,\"[]\",ht.CODE):ri(t,\"[ \",ht.CODE)+e.map(r=>Kk(t,r)).join(\", \")+ri(t,\" ]\",ht.CODE);if(typeof e==\"string\")return ri(t,JSON.stringify(e),ht.STRING);if(typeof e==\"number\")return ri(t,JSON.stringify(e),ht.NUMBER);if(typeof e==\"boolean\")return ri(t,JSON.stringify(e),ht.BOOLEAN);if(e===null)return ri(t,\"null\",ht.NULL);if(typeof e==\"object\"&&Object.getPrototypeOf(e)===Object.prototype){let r=Object.entries(e);return r.length===0?ri(t,\"{}\",ht.CODE):ri(t,\"{ \",ht.CODE)+r.map(([s,a])=>`${Kk(t,s)}: ${Kk(t,a)}`).join(\", \")+ri(t,\" }\",ht.CODE)}if(typeof e>\"u\")return ri(t,\"undefined\",ht.NULL);throw new Error(\"Assertion failed: The value doesn't seem to be a valid JSON object\")}function _u(t,e){return[e,t]}function zd(t,e,r){return t.get(\"enableColors\")&&r&2&&(e=TB.default.bold(e)),e}function ri(t,e,r){if(!t.get(\"enableColors\"))return e;let s=qze.get(r);if(s===null)return e;let a=typeof s>\"u\"?r:z4.level>=3?s[0]:s[1],n=typeof a==\"number\"?K4.ansi256(a):a.startsWith(\"#\")?K4.hex(a):K4[a];if(typeof n!=\"function\")throw new Error(`Invalid format type ${a}`);return n(e)}function KE(t,e,r){return t.get(\"enableHyperlinks\")?Wze?`\\x1B]8;;${r}\\x1B\\\\${e}\\x1B]8;;\\x1B\\\\`:`\\x1B]8;;${r}\\x07${e}\\x1B]8;;\\x07`:e}function Ht(t,e,r){if(e===null)return ri(t,\"null\",ht.NULL);if(Object.hasOwn(zk,r))return zk[r].pretty(t,e);if(typeof e!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof e}`);return ri(t,e,r)}function Z4(t,e,r,{separator:s=\", \"}={}){return[...e].map(a=>Ht(t,a,r)).join(s)}function Xd(t,e){if(t===null)return null;if(Object.hasOwn(zk,e))return zk[e].json(t);if(typeof t!=\"string\")throw new Error(`Assertion failed: Expected the value to be a string, got ${typeof t}`);return t}function Yze(t,e,[r,s]){return t?Xd(r,s):Ht(e,r,s)}function $4(t){return{Check:ri(t,\"\\u2713\",\"green\"),Cross:ri(t,\"\\u2718\",\"red\"),Question:ri(t,\"?\",\"cyan\")}}function Kf(t,{label:e,value:[r,s]}){return`${Ht(t,e,ht.CODE)}: ${Ht(t,r,s)}`}function $k(t,e,r){let s=[],a=[...e],n=r;for(;a.length>0;){let h=a[0],E=`${Yr(t,h)}, `,C=e3(h).length+2;if(s.length>0&&n<C)break;s.push([E,C]),n-=C,a.shift()}if(a.length===0)return s.map(([h])=>h).join(\"\").slice(0,-2);let c=\"X\".repeat(a.length.toString().length),f=`and ${c} more.`,p=a.length;for(;s.length>1&&n<f.length;)n+=s[s.length-1][1],p+=1,s.pop();return[s.map(([h])=>h).join(\"\"),f.replace(c,Ht(t,p,ht.NUMBER))].join(\"\")}function RB(t,{configuration:e}){let r=e.get(\"logFilters\"),s=new Map,a=new Map,n=[];for(let C of r){let S=C.get(\"level\");if(typeof S>\"u\")continue;let P=C.get(\"code\");typeof P<\"u\"&&s.set(P,S);let I=C.get(\"text\");typeof I<\"u\"&&a.set(I,S);let R=C.get(\"pattern\");typeof R<\"u\"&&n.push([dle.default.matcher(R,{contains:!0}),S])}n.reverse();let c=(C,S,P)=>{if(C===null||C===0)return P;let I=a.size>0||n.length>0?(0,JE.default)(S):S;if(a.size>0){let R=a.get(I);if(typeof R<\"u\")return R??P}if(n.length>0){for(let[R,N]of n)if(R(I))return N??P}if(s.size>0){let R=s.get(Yf(C));if(typeof R<\"u\")return R??P}return P},f=t.reportInfo,p=t.reportWarning,h=t.reportError,E=function(C,S,P,I){switch(c(S,P,I)){case\"info\":f.call(C,S,P);break;case\"warning\":p.call(C,S??0,P);break;case\"error\":h.call(C,S??0,P);break}};t.reportInfo=function(...C){return E(this,...C,\"info\")},t.reportWarning=function(...C){return E(this,...C,\"warning\")},t.reportError=function(...C){return E(this,...C,\"error\")}}var TB,QB,dle,JE,ht,Xk,z4,Zk,X4,K4,qze,qo,zk,Wze,eQ,xc=Xe(()=>{Dt();TB=ut(TE()),QB=ut(Fd());Yt();dle=ut(Go()),JE=ut(dk());Gx();Wo();ht={NO_HINT:\"NO_HINT\",ID:\"ID\",NULL:\"NULL\",SCOPE:\"SCOPE\",NAME:\"NAME\",RANGE:\"RANGE\",REFERENCE:\"REFERENCE\",NUMBER:\"NUMBER\",STRING:\"STRING\",BOOLEAN:\"BOOLEAN\",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\"},Xk=(e=>(e[e.BOLD=2]=\"BOLD\",e))(Xk||{}),z4=QB.default.GITHUB_ACTIONS?{level:2}:TB.default.supportsColor?{level:TB.default.supportsColor.level}:{level:0},Zk=z4.level!==0,X4=Zk&&!QB.default.GITHUB_ACTIONS&&!QB.default.CIRCLE&&!QB.default.GITLAB,K4=new TB.default.Instance(z4),qze=new Map([[ht.NO_HINT,null],[ht.NULL,[\"#a853b5\",129]],[ht.SCOPE,[\"#d75f00\",166]],[ht.NAME,[\"#d7875f\",173]],[ht.RANGE,[\"#00afaf\",37]],[ht.REFERENCE,[\"#87afff\",111]],[ht.NUMBER,[\"#ffd700\",220]],[ht.STRING,[\"#b4bd68\",32]],[ht.BOOLEAN,[\"#faa023\",209]],[ht.PATH,[\"#d75fd7\",170]],[ht.URL,[\"#d75fd7\",170]],[ht.ADDED,[\"#5faf00\",70]],[ht.REMOVED,[\"#ff3131\",160]],[ht.CODE,[\"#87afff\",111]],[ht.SIZE,[\"#ffd700\",220]]]),qo=t=>t;zk={[ht.ID]:qo({pretty:(t,e)=>typeof e==\"number\"?ri(t,`${e}`,ht.NUMBER):ri(t,e,ht.CODE),json:t=>t}),[ht.INSPECT]:qo({pretty:(t,e)=>Kk(t,e),json:t=>t}),[ht.NUMBER]:qo({pretty:(t,e)=>ri(t,`${e}`,ht.NUMBER),json:t=>t}),[ht.IDENT]:qo({pretty:(t,e)=>$i(t,e),json:t=>un(t)}),[ht.LOCATOR]:qo({pretty:(t,e)=>Yr(t,e),json:t=>ll(t)}),[ht.DESCRIPTOR]:qo({pretty:(t,e)=>ni(t,e),json:t=>al(t)}),[ht.RESOLUTION]:qo({pretty:(t,{descriptor:e,locator:r})=>FB(t,e,r),json:({descriptor:t,locator:e})=>({descriptor:al(t),locator:e!==null?ll(e):null})}),[ht.DEPENDENT]:qo({pretty:(t,{locator:e,descriptor:r})=>t3(t,e,r),json:({locator:t,descriptor:e})=>({locator:ll(t),descriptor:al(e)})}),[ht.PACKAGE_EXTENSION]:qo({pretty:(t,e)=>{switch(e.type){case\"Dependency\":return`${$i(t,e.parentDescriptor)} \\u27A4 ${ri(t,\"dependencies\",ht.CODE)} \\u27A4 ${$i(t,e.descriptor)}`;case\"PeerDependency\":return`${$i(t,e.parentDescriptor)} \\u27A4 ${ri(t,\"peerDependencies\",ht.CODE)} \\u27A4 ${$i(t,e.descriptor)}`;case\"PeerDependencyMeta\":return`${$i(t,e.parentDescriptor)} \\u27A4 ${ri(t,\"peerDependenciesMeta\",ht.CODE)} \\u27A4 ${$i(t,Sa(e.selector))} \\u27A4 ${ri(t,e.key,ht.CODE)}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${e.type}`)}},json:t=>{switch(t.type){case\"Dependency\":return`${un(t.parentDescriptor)} > ${un(t.descriptor)}`;case\"PeerDependency\":return`${un(t.parentDescriptor)} >> ${un(t.descriptor)}`;case\"PeerDependencyMeta\":return`${un(t.parentDescriptor)} >> ${t.selector} / ${t.key}`;default:throw new Error(`Assertion failed: Unsupported package extension type: ${t.type}`)}}}),[ht.SETTING]:qo({pretty:(t,e)=>(t.get(e),KE(t,ri(t,e,ht.CODE),`https://yarnpkg.com/configuration/yarnrc#${e}`)),json:t=>t}),[ht.DURATION]:qo({pretty:(t,e)=>{if(e>1e3*60){let r=Math.floor(e/1e3/60),s=Math.ceil((e-r*60*1e3)/1e3);return s===0?`${r}m`:`${r}m ${s}s`}else{let r=Math.floor(e/1e3),s=e-r*1e3;return s===0?`${r}s`:`${r}s ${s}ms`}},json:t=>t}),[ht.SIZE]:qo({pretty:(t,e)=>ri(t,gle(e),ht.NUMBER),json:t=>t}),[ht.SIZE_DIFF]:qo({pretty:(t,e)=>{let r=e>=0?\"+\":\"-\",s=r===\"+\"?ht.REMOVED:ht.ADDED;return ri(t,`${r} ${gle(Math.max(Math.abs(e),1))}`,s)},json:t=>t}),[ht.PATH]:qo({pretty:(t,e)=>ri(t,fe.fromPortablePath(e),ht.PATH),json:t=>fe.fromPortablePath(t)}),[ht.MARKDOWN]:qo({pretty:(t,{text:e,format:r,paragraphs:s})=>Ho(e,{format:r,paragraphs:s}),json:({text:t})=>t}),[ht.MARKDOWN_INLINE]:qo({pretty:(t,e)=>(e=e.replace(/(`+)((?:.|[\\n])*?)\\1/g,(r,s,a)=>Ht(t,s+a+s,ht.CODE)),e=e.replace(/(\\*\\*)((?:.|[\\n])*?)\\1/g,(r,s,a)=>zd(t,a,2)),e),json:t=>t})};Wze=!!process.env.KONSOLE_VERSION;eQ=(a=>(a.Error=\"error\",a.Warning=\"warning\",a.Info=\"info\",a.Discard=\"discard\",a))(eQ||{})});var mle=_(zE=>{\"use strict\";Object.defineProperty(zE,\"__esModule\",{value:!0});zE.splitWhen=zE.flatten=void 0;function Vze(t){return t.reduce((e,r)=>[].concat(e,r),[])}zE.flatten=Vze;function Jze(t,e){let r=[[]],s=0;for(let a of t)e(a)?(s++,r[s]=[]):r[s].push(a);return r}zE.splitWhen=Jze});var yle=_(tQ=>{\"use strict\";Object.defineProperty(tQ,\"__esModule\",{value:!0});tQ.isEnoentCodeError=void 0;function Kze(t){return t.code===\"ENOENT\"}tQ.isEnoentCodeError=Kze});var Ele=_(rQ=>{\"use strict\";Object.defineProperty(rQ,\"__esModule\",{value:!0});rQ.createDirentFromStats=void 0;var r3=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 zze(t,e){return new r3(t,e)}rQ.createDirentFromStats=zze});var Ble=_(cs=>{\"use strict\";Object.defineProperty(cs,\"__esModule\",{value:!0});cs.convertPosixPathToPattern=cs.convertWindowsPathToPattern=cs.convertPathToPattern=cs.escapePosixPath=cs.escapeWindowsPath=cs.escape=cs.removeLeadingDotSegment=cs.makeAbsolute=cs.unixify=void 0;var Xze=Ie(\"os\"),Zze=Ie(\"path\"),Ile=Xze.platform()===\"win32\",$ze=2,eXe=/(\\\\?)([()*?[\\]{|}]|^!|[!+@](?=\\()|\\\\(?![!()*+?@[\\]{|}]))/g,tXe=/(\\\\?)([()[\\]{}]|^!|[!+@](?=\\())/g,rXe=/^\\\\\\\\([.?])/,nXe=/\\\\(?![!()+@[\\]{}])/g;function iXe(t){return t.replace(/\\\\/g,\"/\")}cs.unixify=iXe;function sXe(t,e){return Zze.resolve(t,e)}cs.makeAbsolute=sXe;function oXe(t){if(t.charAt(0)===\".\"){let e=t.charAt(1);if(e===\"/\"||e===\"\\\\\")return t.slice($ze)}return t}cs.removeLeadingDotSegment=oXe;cs.escape=Ile?n3:i3;function n3(t){return t.replace(tXe,\"\\\\$2\")}cs.escapeWindowsPath=n3;function i3(t){return t.replace(eXe,\"\\\\$2\")}cs.escapePosixPath=i3;cs.convertPathToPattern=Ile?Cle:wle;function Cle(t){return n3(t).replace(rXe,\"//$1\").replace(nXe,\"/\")}cs.convertWindowsPathToPattern=Cle;function wle(t){return i3(t)}cs.convertPosixPathToPattern=wle});var Sle=_((JOt,vle)=>{vle.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 Ple=_((KOt,ble)=>{var aXe=Sle(),Dle={\"{\":\"}\",\"(\":\")\",\"[\":\"]\"},lXe=function(t){if(t[0]===\"!\")return!0;for(var e=0,r=-2,s=-2,a=-2,n=-2,c=-2;e<t.length;){if(t[e]===\"*\"||t[e+1]===\"?\"&&/[\\].+)]/.test(t[e])||s!==-1&&t[e]===\"[\"&&t[e+1]!==\"]\"&&(s<e&&(s=t.indexOf(\"]\",e)),s>e&&(c===-1||c>s||(c=t.indexOf(\"\\\\\",e),c===-1||c>s)))||a!==-1&&t[e]===\"{\"&&t[e+1]!==\"}\"&&(a=t.indexOf(\"}\",e),a>e&&(c=t.indexOf(\"\\\\\",e),c===-1||c>a))||n!==-1&&t[e]===\"(\"&&t[e+1]===\"?\"&&/[:!=]/.test(t[e+2])&&t[e+3]!==\")\"&&(n=t.indexOf(\")\",e),n>e&&(c=t.indexOf(\"\\\\\",e),c===-1||c>n))||r!==-1&&t[e]===\"(\"&&t[e+1]!==\"|\"&&(r<e&&(r=t.indexOf(\"|\",e)),r!==-1&&t[r+1]!==\")\"&&(n=t.indexOf(\")\",r),n>r&&(c=t.indexOf(\"\\\\\",r),c===-1||c>n))))return!0;if(t[e]===\"\\\\\"){var f=t[e+1];e+=2;var p=Dle[f];if(p){var h=t.indexOf(p,e);h!==-1&&(e=h+1)}if(t[e]===\"!\")return!0}else e++}return!1},cXe=function(t){if(t[0]===\"!\")return!0;for(var e=0;e<t.length;){if(/[*?{}()[\\]]/.test(t[e]))return!0;if(t[e]===\"\\\\\"){var r=t[e+1];e+=2;var s=Dle[r];if(s){var a=t.indexOf(s,e);a!==-1&&(e=a+1)}if(t[e]===\"!\")return!0}else e++}return!1};ble.exports=function(e,r){if(typeof e!=\"string\"||e===\"\")return!1;if(aXe(e))return!0;var s=lXe;return r&&r.strict===!1&&(s=cXe),s(e)}});var kle=_((zOt,xle)=>{\"use strict\";var uXe=Ple(),fXe=Ie(\"path\").posix.dirname,AXe=Ie(\"os\").platform()===\"win32\",s3=\"/\",pXe=/\\\\/g,hXe=/[\\{\\[].*[\\}\\]]$/,gXe=/(^|[^\\\\])([\\{\\[]|\\([^\\)]+$)/,dXe=/\\\\([\\!\\*\\?\\|\\[\\]\\(\\)\\{\\}])/g;xle.exports=function(e,r){var s=Object.assign({flipBackslashes:!0},r);s.flipBackslashes&&AXe&&e.indexOf(s3)<0&&(e=e.replace(pXe,s3)),hXe.test(e)&&(e+=s3),e+=\"a\";do e=fXe(e);while(uXe(e)||gXe.test(e));return e.replace(dXe,\"$1\")}});var Mle=_(jr=>{\"use strict\";Object.defineProperty(jr,\"__esModule\",{value:!0});jr.removeDuplicateSlashes=jr.matchAny=jr.convertPatternsToRe=jr.makeRe=jr.getPatternParts=jr.expandBraceExpansion=jr.expandPatternsWithBraceExpansion=jr.isAffectDepthOfReadingPattern=jr.endsWithSlashGlobStar=jr.hasGlobStar=jr.getBaseDirectory=jr.isPatternRelatedToParentDirectory=jr.getPatternsOutsideCurrentDirectory=jr.getPatternsInsideCurrentDirectory=jr.getPositivePatterns=jr.getNegativePatterns=jr.isPositivePattern=jr.isNegativePattern=jr.convertToNegativePattern=jr.convertToPositivePattern=jr.isDynamicPattern=jr.isStaticPattern=void 0;var mXe=Ie(\"path\"),yXe=kle(),o3=Go(),Qle=\"**\",EXe=\"\\\\\",IXe=/[*?]|^!/,CXe=/\\[[^[]*]/,wXe=/(?:^|[^!*+?@])\\([^(]*\\|[^|]*\\)/,BXe=/[!*+?@]\\([^(]*\\)/,vXe=/,|\\.\\./,SXe=/(?!^)\\/{2,}/g;function Tle(t,e={}){return!Rle(t,e)}jr.isStaticPattern=Tle;function Rle(t,e={}){return t===\"\"?!1:!!(e.caseSensitiveMatch===!1||t.includes(EXe)||IXe.test(t)||CXe.test(t)||wXe.test(t)||e.extglob!==!1&&BXe.test(t)||e.braceExpansion!==!1&&DXe(t))}jr.isDynamicPattern=Rle;function DXe(t){let e=t.indexOf(\"{\");if(e===-1)return!1;let r=t.indexOf(\"}\",e+1);if(r===-1)return!1;let s=t.slice(e,r);return vXe.test(s)}function bXe(t){return nQ(t)?t.slice(1):t}jr.convertToPositivePattern=bXe;function PXe(t){return\"!\"+t}jr.convertToNegativePattern=PXe;function nQ(t){return t.startsWith(\"!\")&&t[1]!==\"(\"}jr.isNegativePattern=nQ;function Fle(t){return!nQ(t)}jr.isPositivePattern=Fle;function xXe(t){return t.filter(nQ)}jr.getNegativePatterns=xXe;function kXe(t){return t.filter(Fle)}jr.getPositivePatterns=kXe;function QXe(t){return t.filter(e=>!a3(e))}jr.getPatternsInsideCurrentDirectory=QXe;function TXe(t){return t.filter(a3)}jr.getPatternsOutsideCurrentDirectory=TXe;function a3(t){return t.startsWith(\"..\")||t.startsWith(\"./..\")}jr.isPatternRelatedToParentDirectory=a3;function RXe(t){return yXe(t,{flipBackslashes:!1})}jr.getBaseDirectory=RXe;function FXe(t){return t.includes(Qle)}jr.hasGlobStar=FXe;function Nle(t){return t.endsWith(\"/\"+Qle)}jr.endsWithSlashGlobStar=Nle;function NXe(t){let e=mXe.basename(t);return Nle(t)||Tle(e)}jr.isAffectDepthOfReadingPattern=NXe;function OXe(t){return t.reduce((e,r)=>e.concat(Ole(r)),[])}jr.expandPatternsWithBraceExpansion=OXe;function Ole(t){let e=o3.braces(t,{expand:!0,nodupes:!0,keepEscaping:!0});return e.sort((r,s)=>r.length-s.length),e.filter(r=>r!==\"\")}jr.expandBraceExpansion=Ole;function LXe(t,e){let{parts:r}=o3.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=LXe;function Lle(t,e){return o3.makeRe(t,e)}jr.makeRe=Lle;function MXe(t,e){return t.map(r=>Lle(r,e))}jr.convertPatternsToRe=MXe;function UXe(t,e){return e.some(r=>r.test(t))}jr.matchAny=UXe;function _Xe(t){return t.replace(SXe,\"/\")}jr.removeDuplicateSlashes=_Xe});var jle=_((ZOt,Hle)=>{\"use strict\";var HXe=Ie(\"stream\"),Ule=HXe.PassThrough,jXe=Array.prototype.slice;Hle.exports=GXe;function GXe(){let t=[],e=jXe.call(arguments),r=!1,s=e[e.length-1];s&&!Array.isArray(s)&&s.pipe==null?e.pop():s={};let a=s.end!==!1,n=s.pipeError===!0;s.objectMode==null&&(s.objectMode=!0),s.highWaterMark==null&&(s.highWaterMark=64*1024);let c=Ule(s);function f(){for(let E=0,C=arguments.length;E<C;E++)t.push(_le(arguments[E],s));return p(),this}function p(){if(r)return;r=!0;let E=t.shift();if(!E){process.nextTick(h);return}Array.isArray(E)||(E=[E]);let C=E.length+1;function S(){--C>0||(r=!1,p())}function P(I){function R(){I.removeListener(\"merge2UnpipeEnd\",R),I.removeListener(\"end\",R),n&&I.removeListener(\"error\",N),S()}function N(U){c.emit(\"error\",U)}if(I._readableState.endEmitted)return S();I.on(\"merge2UnpipeEnd\",R),I.on(\"end\",R),n&&I.on(\"error\",N),I.pipe(c,{end:!1}),I.resume()}for(let I=0;I<E.length;I++)P(E[I]);S()}function h(){r=!1,c.emit(\"queueDrain\"),a&&c.end()}return c.setMaxListeners(0),c.add=f,c.on(\"unpipe\",function(E){E.emit(\"merge2UnpipeEnd\")}),e.length&&f.apply(null,e),c}function _le(t,e){if(Array.isArray(t))for(let r=0,s=t.length;r<s;r++)t[r]=_le(t[r],e);else{if(!t._readableState&&t.pipe&&(t=t.pipe(Ule(e))),!t._readableState||!t.pause||!t.pipe)throw new Error(\"Only readable stream can be merged.\");t.pause()}return t}});var qle=_(iQ=>{\"use strict\";Object.defineProperty(iQ,\"__esModule\",{value:!0});iQ.merge=void 0;var qXe=jle();function WXe(t){let e=qXe(t);return t.forEach(r=>{r.once(\"error\",s=>e.emit(\"error\",s))}),e.once(\"close\",()=>Gle(t)),e.once(\"end\",()=>Gle(t)),e}iQ.merge=WXe;function Gle(t){t.forEach(e=>e.emit(\"close\"))}});var Wle=_(XE=>{\"use strict\";Object.defineProperty(XE,\"__esModule\",{value:!0});XE.isEmpty=XE.isString=void 0;function YXe(t){return typeof t==\"string\"}XE.isString=YXe;function VXe(t){return t===\"\"}XE.isEmpty=VXe});var xp=_(Yo=>{\"use strict\";Object.defineProperty(Yo,\"__esModule\",{value:!0});Yo.string=Yo.stream=Yo.pattern=Yo.path=Yo.fs=Yo.errno=Yo.array=void 0;var JXe=mle();Yo.array=JXe;var KXe=yle();Yo.errno=KXe;var zXe=Ele();Yo.fs=zXe;var XXe=Ble();Yo.path=XXe;var ZXe=Mle();Yo.pattern=ZXe;var $Xe=qle();Yo.stream=$Xe;var eZe=Wle();Yo.string=eZe});var Kle=_(Vo=>{\"use strict\";Object.defineProperty(Vo,\"__esModule\",{value:!0});Vo.convertPatternGroupToTask=Vo.convertPatternGroupsToTasks=Vo.groupPatternsByBaseDirectory=Vo.getNegativePatternsAsPositive=Vo.getPositivePatterns=Vo.convertPatternsToTasks=Vo.generate=void 0;var Hu=xp();function tZe(t,e){let r=Yle(t,e),s=Yle(e.ignore,e),a=Vle(r),n=Jle(r,s),c=a.filter(E=>Hu.pattern.isStaticPattern(E,e)),f=a.filter(E=>Hu.pattern.isDynamicPattern(E,e)),p=l3(c,n,!1),h=l3(f,n,!0);return p.concat(h)}Vo.generate=tZe;function Yle(t,e){let r=t;return e.braceExpansion&&(r=Hu.pattern.expandPatternsWithBraceExpansion(r)),e.baseNameMatch&&(r=r.map(s=>s.includes(\"/\")?s:`**/${s}`)),r.map(s=>Hu.pattern.removeDuplicateSlashes(s))}function l3(t,e,r){let s=[],a=Hu.pattern.getPatternsOutsideCurrentDirectory(t),n=Hu.pattern.getPatternsInsideCurrentDirectory(t),c=c3(a),f=c3(n);return s.push(...u3(c,e,r)),\".\"in f?s.push(f3(\".\",n,e,r)):s.push(...u3(f,e,r)),s}Vo.convertPatternsToTasks=l3;function Vle(t){return Hu.pattern.getPositivePatterns(t)}Vo.getPositivePatterns=Vle;function Jle(t,e){return Hu.pattern.getNegativePatterns(t).concat(e).map(Hu.pattern.convertToPositivePattern)}Vo.getNegativePatternsAsPositive=Jle;function c3(t){let e={};return t.reduce((r,s)=>{let a=Hu.pattern.getBaseDirectory(s);return a in r?r[a].push(s):r[a]=[s],r},e)}Vo.groupPatternsByBaseDirectory=c3;function u3(t,e,r){return Object.keys(t).map(s=>f3(s,t[s],e,r))}Vo.convertPatternGroupsToTasks=u3;function f3(t,e,r,s){return{dynamic:s,positive:e,negative:r,base:t,patterns:[].concat(e,r.map(Hu.pattern.convertToNegativePattern))}}Vo.convertPatternGroupToTask=f3});var Xle=_(sQ=>{\"use strict\";Object.defineProperty(sQ,\"__esModule\",{value:!0});sQ.read=void 0;function rZe(t,e,r){e.fs.lstat(t,(s,a)=>{if(s!==null){zle(r,s);return}if(!a.isSymbolicLink()||!e.followSymbolicLink){A3(r,a);return}e.fs.stat(t,(n,c)=>{if(n!==null){if(e.throwErrorOnBrokenSymbolicLink){zle(r,n);return}A3(r,a);return}e.markSymbolicLink&&(c.isSymbolicLink=()=>!0),A3(r,c)})})}sQ.read=rZe;function zle(t,e){t(e)}function A3(t,e){t(null,e)}});var Zle=_(oQ=>{\"use strict\";Object.defineProperty(oQ,\"__esModule\",{value:!0});oQ.read=void 0;function nZe(t,e){let r=e.fs.lstatSync(t);if(!r.isSymbolicLink()||!e.followSymbolicLink)return r;try{let s=e.fs.statSync(t);return e.markSymbolicLink&&(s.isSymbolicLink=()=>!0),s}catch(s){if(!e.throwErrorOnBrokenSymbolicLink)return r;throw s}}oQ.read=nZe});var $le=_(h0=>{\"use strict\";Object.defineProperty(h0,\"__esModule\",{value:!0});h0.createFileSystemAdapter=h0.FILE_SYSTEM_ADAPTER=void 0;var aQ=Ie(\"fs\");h0.FILE_SYSTEM_ADAPTER={lstat:aQ.lstat,stat:aQ.stat,lstatSync:aQ.lstatSync,statSync:aQ.statSync};function iZe(t){return t===void 0?h0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},h0.FILE_SYSTEM_ADAPTER),t)}h0.createFileSystemAdapter=iZe});var ece=_(h3=>{\"use strict\";Object.defineProperty(h3,\"__esModule\",{value:!0});var sZe=$le(),p3=class{constructor(e={}){this._options=e,this.followSymbolicLink=this._getValue(this._options.followSymbolicLink,!0),this.fs=sZe.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}};h3.default=p3});var Zd=_(g0=>{\"use strict\";Object.defineProperty(g0,\"__esModule\",{value:!0});g0.statSync=g0.stat=g0.Settings=void 0;var tce=Xle(),oZe=Zle(),g3=ece();g0.Settings=g3.default;function aZe(t,e,r){if(typeof e==\"function\"){tce.read(t,d3(),e);return}tce.read(t,d3(e),r)}g0.stat=aZe;function lZe(t,e){let r=d3(e);return oZe.read(t,r)}g0.statSync=lZe;function d3(t={}){return t instanceof g3.default?t:new g3.default(t)}});var ice=_((lLt,nce)=>{var rce;nce.exports=typeof queueMicrotask==\"function\"?queueMicrotask.bind(typeof window<\"u\"?window:global):t=>(rce||(rce=Promise.resolve())).then(t).catch(e=>setTimeout(()=>{throw e},0))});var oce=_((cLt,sce)=>{sce.exports=uZe;var cZe=ice();function uZe(t,e){let r,s,a,n=!0;Array.isArray(t)?(r=[],s=t.length):(a=Object.keys(t),r={},s=a.length);function c(p){function h(){e&&e(p,r),e=null}n?cZe(h):h()}function f(p,h,E){r[p]=E,(--s===0||h)&&c(h)}s?a?a.forEach(function(p){t[p](function(h,E){f(p,h,E)})}):t.forEach(function(p,h){p(function(E,C){f(h,E,C)})}):c(null),n=!1}});var m3=_(cQ=>{\"use strict\";Object.defineProperty(cQ,\"__esModule\",{value:!0});cQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=void 0;var lQ=process.versions.node.split(\".\");if(lQ[0]===void 0||lQ[1]===void 0)throw new Error(`Unexpected behavior. The 'process.versions.node' variable has invalid value: ${process.versions.node}`);var ace=Number.parseInt(lQ[0],10),fZe=Number.parseInt(lQ[1],10),lce=10,AZe=10,pZe=ace>lce,hZe=ace===lce&&fZe>=AZe;cQ.IS_SUPPORT_READDIR_WITH_FILE_TYPES=pZe||hZe});var cce=_(uQ=>{\"use strict\";Object.defineProperty(uQ,\"__esModule\",{value:!0});uQ.createDirentFromStats=void 0;var y3=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 gZe(t,e){return new y3(t,e)}uQ.createDirentFromStats=gZe});var E3=_(fQ=>{\"use strict\";Object.defineProperty(fQ,\"__esModule\",{value:!0});fQ.fs=void 0;var dZe=cce();fQ.fs=dZe});var I3=_(AQ=>{\"use strict\";Object.defineProperty(AQ,\"__esModule\",{value:!0});AQ.joinPathSegments=void 0;function mZe(t,e,r){return t.endsWith(r)?t+e:t+r+e}AQ.joinPathSegments=mZe});var gce=_(d0=>{\"use strict\";Object.defineProperty(d0,\"__esModule\",{value:!0});d0.readdir=d0.readdirWithFileTypes=d0.read=void 0;var yZe=Zd(),uce=oce(),EZe=m3(),fce=E3(),Ace=I3();function IZe(t,e,r){if(!e.stats&&EZe.IS_SUPPORT_READDIR_WITH_FILE_TYPES){pce(t,e,r);return}hce(t,e,r)}d0.read=IZe;function pce(t,e,r){e.fs.readdir(t,{withFileTypes:!0},(s,a)=>{if(s!==null){pQ(r,s);return}let n=a.map(f=>({dirent:f,name:f.name,path:Ace.joinPathSegments(t,f.name,e.pathSegmentSeparator)}));if(!e.followSymbolicLinks){C3(r,n);return}let c=n.map(f=>CZe(f,e));uce(c,(f,p)=>{if(f!==null){pQ(r,f);return}C3(r,p)})})}d0.readdirWithFileTypes=pce;function CZe(t,e){return r=>{if(!t.dirent.isSymbolicLink()){r(null,t);return}e.fs.stat(t.path,(s,a)=>{if(s!==null){if(e.throwErrorOnBrokenSymbolicLink){r(s);return}r(null,t);return}t.dirent=fce.fs.createDirentFromStats(t.name,a),r(null,t)})}}function hce(t,e,r){e.fs.readdir(t,(s,a)=>{if(s!==null){pQ(r,s);return}let n=a.map(c=>{let f=Ace.joinPathSegments(t,c,e.pathSegmentSeparator);return p=>{yZe.stat(f,e.fsStatSettings,(h,E)=>{if(h!==null){p(h);return}let C={name:c,path:f,dirent:fce.fs.createDirentFromStats(c,E)};e.stats&&(C.stats=E),p(null,C)})}});uce(n,(c,f)=>{if(c!==null){pQ(r,c);return}C3(r,f)})})}d0.readdir=hce;function pQ(t,e){t(e)}function C3(t,e){t(null,e)}});var Ice=_(m0=>{\"use strict\";Object.defineProperty(m0,\"__esModule\",{value:!0});m0.readdir=m0.readdirWithFileTypes=m0.read=void 0;var wZe=Zd(),BZe=m3(),dce=E3(),mce=I3();function vZe(t,e){return!e.stats&&BZe.IS_SUPPORT_READDIR_WITH_FILE_TYPES?yce(t,e):Ece(t,e)}m0.read=vZe;function yce(t,e){return e.fs.readdirSync(t,{withFileTypes:!0}).map(s=>{let a={dirent:s,name:s.name,path:mce.joinPathSegments(t,s.name,e.pathSegmentSeparator)};if(a.dirent.isSymbolicLink()&&e.followSymbolicLinks)try{let n=e.fs.statSync(a.path);a.dirent=dce.fs.createDirentFromStats(a.name,n)}catch(n){if(e.throwErrorOnBrokenSymbolicLink)throw n}return a})}m0.readdirWithFileTypes=yce;function Ece(t,e){return e.fs.readdirSync(t).map(s=>{let a=mce.joinPathSegments(t,s,e.pathSegmentSeparator),n=wZe.statSync(a,e.fsStatSettings),c={name:s,path:a,dirent:dce.fs.createDirentFromStats(s,n)};return e.stats&&(c.stats=n),c})}m0.readdir=Ece});var Cce=_(y0=>{\"use strict\";Object.defineProperty(y0,\"__esModule\",{value:!0});y0.createFileSystemAdapter=y0.FILE_SYSTEM_ADAPTER=void 0;var ZE=Ie(\"fs\");y0.FILE_SYSTEM_ADAPTER={lstat:ZE.lstat,stat:ZE.stat,lstatSync:ZE.lstatSync,statSync:ZE.statSync,readdir:ZE.readdir,readdirSync:ZE.readdirSync};function SZe(t){return t===void 0?y0.FILE_SYSTEM_ADAPTER:Object.assign(Object.assign({},y0.FILE_SYSTEM_ADAPTER),t)}y0.createFileSystemAdapter=SZe});var wce=_(B3=>{\"use strict\";Object.defineProperty(B3,\"__esModule\",{value:!0});var DZe=Ie(\"path\"),bZe=Zd(),PZe=Cce(),w3=class{constructor(e={}){this._options=e,this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!1),this.fs=PZe.createFileSystemAdapter(this._options.fs),this.pathSegmentSeparator=this._getValue(this._options.pathSegmentSeparator,DZe.sep),this.stats=this._getValue(this._options.stats,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!0),this.fsStatSettings=new bZe.Settings({followSymbolicLink:this.followSymbolicLinks,fs:this.fs,throwErrorOnBrokenSymbolicLink:this.throwErrorOnBrokenSymbolicLink})}_getValue(e,r){return e??r}};B3.default=w3});var hQ=_(E0=>{\"use strict\";Object.defineProperty(E0,\"__esModule\",{value:!0});E0.Settings=E0.scandirSync=E0.scandir=void 0;var Bce=gce(),xZe=Ice(),v3=wce();E0.Settings=v3.default;function kZe(t,e,r){if(typeof e==\"function\"){Bce.read(t,S3(),e);return}Bce.read(t,S3(e),r)}E0.scandir=kZe;function QZe(t,e){let r=S3(e);return xZe.read(t,r)}E0.scandirSync=QZe;function S3(t={}){return t instanceof v3.default?t:new v3.default(t)}});var Sce=_((ELt,vce)=>{\"use strict\";function TZe(t){var e=new t,r=e;function s(){var n=e;return n.next?e=n.next:(e=new t,r=e),n.next=null,n}function a(n){r.next=n,r=n}return{get:s,release:a}}vce.exports=TZe});var bce=_((ILt,D3)=>{\"use strict\";var RZe=Sce();function Dce(t,e,r){if(typeof t==\"function\"&&(r=e,e=t,t=null),!(r>=1))throw new Error(\"fastqueue concurrency must be equal to or greater than 1\");var s=RZe(FZe),a=null,n=null,c=0,f=null,p={push:R,drain:kc,saturated:kc,pause:E,paused:!1,get concurrency(){return r},set concurrency(ue){if(!(ue>=1))throw new Error(\"fastqueue concurrency must be equal to or greater than 1\");if(r=ue,!p.paused)for(;a&&c<r;)c++,U()},running:h,resume:P,idle:I,length:C,getQueue:S,unshift:N,empty:kc,kill:W,killAndDrain:ee,error:ie};return p;function h(){return c}function E(){p.paused=!0}function C(){for(var ue=a,le=0;ue;)ue=ue.next,le++;return le}function S(){for(var ue=a,le=[];ue;)le.push(ue.value),ue=ue.next;return le}function P(){if(p.paused){if(p.paused=!1,a===null){c++,U();return}for(;a&&c<r;)c++,U()}}function I(){return c===0&&p.length()===0}function R(ue,le){var me=s.get();me.context=t,me.release=U,me.value=ue,me.callback=le||kc,me.errorHandler=f,c>=r||p.paused?n?(n.next=me,n=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function N(ue,le){var me=s.get();me.context=t,me.release=U,me.value=ue,me.callback=le||kc,me.errorHandler=f,c>=r||p.paused?a?(me.next=a,a=me):(a=me,n=me,p.saturated()):(c++,e.call(t,me.value,me.worked))}function U(ue){ue&&s.release(ue);var le=a;le&&c<=r?p.paused?c--:(n===a&&(n=null),a=le.next,le.next=null,e.call(t,le.value,le.worked),n===null&&p.empty()):--c===0&&p.drain()}function W(){a=null,n=null,p.drain=kc}function ee(){a=null,n=null,p.drain(),p.drain=kc}function ie(ue){f=ue}}function kc(){}function FZe(){this.value=null,this.callback=kc,this.next=null,this.release=kc,this.context=null,this.errorHandler=null;var t=this;this.worked=function(r,s){var a=t.callback,n=t.errorHandler,c=t.value;t.value=null,t.callback=kc,t.errorHandler&&n(r,c),a.call(t.context,r,s),t.release(t)}}function NZe(t,e,r){typeof t==\"function\"&&(r=e,e=t,t=null);function s(E,C){e.call(this,E).then(function(S){C(null,S)},C)}var a=Dce(t,s,r),n=a.push,c=a.unshift;return a.push=f,a.unshift=p,a.drained=h,a;function f(E){var C=new Promise(function(S,P){n(E,function(I,R){if(I){P(I);return}S(R)})});return C.catch(kc),C}function p(E){var C=new Promise(function(S,P){c(E,function(I,R){if(I){P(I);return}S(R)})});return C.catch(kc),C}function h(){if(a.idle())return new Promise(function(S){S()});var E=a.drain,C=new Promise(function(S){a.drain=function(){E(),S()}});return C}}D3.exports=Dce;D3.exports.promise=NZe});var gQ=_(zf=>{\"use strict\";Object.defineProperty(zf,\"__esModule\",{value:!0});zf.joinPathSegments=zf.replacePathSegmentSeparator=zf.isAppliedFilter=zf.isFatalError=void 0;function OZe(t,e){return t.errorFilter===null?!0:!t.errorFilter(e)}zf.isFatalError=OZe;function LZe(t,e){return t===null||t(e)}zf.isAppliedFilter=LZe;function MZe(t,e){return t.split(/[/\\\\]/).join(e)}zf.replacePathSegmentSeparator=MZe;function UZe(t,e,r){return t===\"\"?e:t.endsWith(r)?t+e:t+r+e}zf.joinPathSegments=UZe});var x3=_(P3=>{\"use strict\";Object.defineProperty(P3,\"__esModule\",{value:!0});var _Ze=gQ(),b3=class{constructor(e,r){this._root=e,this._settings=r,this._root=_Ze.replacePathSegmentSeparator(e,r.pathSegmentSeparator)}};P3.default=b3});var T3=_(Q3=>{\"use strict\";Object.defineProperty(Q3,\"__esModule\",{value:!0});var HZe=Ie(\"events\"),jZe=hQ(),GZe=bce(),dQ=gQ(),qZe=x3(),k3=class extends qZe.default{constructor(e,r){super(e,r),this._settings=r,this._scandir=jZe.scandir,this._emitter=new HZe.EventEmitter,this._queue=GZe(this._worker.bind(this),this._settings.concurrency),this._isFatalError=!1,this._isDestroyed=!1,this._queue.drain=()=>{this._isFatalError||this._emitter.emit(\"end\")}}read(){return this._isFatalError=!1,this._isDestroyed=!1,setImmediate(()=>{this._pushToQueue(this._root,this._settings.basePath)}),this._emitter}get isDestroyed(){return this._isDestroyed}destroy(){if(this._isDestroyed)throw new Error(\"The reader is already destroyed\");this._isDestroyed=!0,this._queue.killAndDrain()}onEntry(e){this._emitter.on(\"entry\",e)}onError(e){this._emitter.once(\"error\",e)}onEnd(e){this._emitter.once(\"end\",e)}_pushToQueue(e,r){let s={directory:e,base:r};this._queue.push(s,a=>{a!==null&&this._handleError(a)})}_worker(e,r){this._scandir(e.directory,this._settings.fsScandirSettings,(s,a)=>{if(s!==null){r(s,void 0);return}for(let n of a)this._handleEntry(n,e.base);r(null,void 0)})}_handleError(e){this._isDestroyed||!dQ.isFatalError(this._settings,e)||(this._isFatalError=!0,this._isDestroyed=!0,this._emitter.emit(\"error\",e))}_handleEntry(e,r){if(this._isDestroyed||this._isFatalError)return;let s=e.path;r!==void 0&&(e.path=dQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),dQ.isAppliedFilter(this._settings.entryFilter,e)&&this._emitEntry(e),e.dirent.isDirectory()&&dQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_emitEntry(e){this._emitter.emit(\"entry\",e)}};Q3.default=k3});var Pce=_(F3=>{\"use strict\";Object.defineProperty(F3,\"__esModule\",{value:!0});var WZe=T3(),R3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new WZe.default(this._root,this._settings),this._storage=[]}read(e){this._reader.onError(r=>{YZe(e,r)}),this._reader.onEntry(r=>{this._storage.push(r)}),this._reader.onEnd(()=>{VZe(e,this._storage)}),this._reader.read()}};F3.default=R3;function YZe(t,e){t(e)}function VZe(t,e){t(null,e)}});var xce=_(O3=>{\"use strict\";Object.defineProperty(O3,\"__esModule\",{value:!0});var JZe=Ie(\"stream\"),KZe=T3(),N3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new KZe.default(this._root,this._settings),this._stream=new JZe.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}};O3.default=N3});var kce=_(M3=>{\"use strict\";Object.defineProperty(M3,\"__esModule\",{value:!0});var zZe=hQ(),mQ=gQ(),XZe=x3(),L3=class extends XZe.default{constructor(){super(...arguments),this._scandir=zZe.scandirSync,this._storage=[],this._queue=new Set}read(){return this._pushToQueue(this._root,this._settings.basePath),this._handleQueue(),this._storage}_pushToQueue(e,r){this._queue.add({directory:e,base:r})}_handleQueue(){for(let e of this._queue.values())this._handleDirectory(e.directory,e.base)}_handleDirectory(e,r){try{let s=this._scandir(e,this._settings.fsScandirSettings);for(let a of s)this._handleEntry(a,r)}catch(s){this._handleError(s)}}_handleError(e){if(mQ.isFatalError(this._settings,e))throw e}_handleEntry(e,r){let s=e.path;r!==void 0&&(e.path=mQ.joinPathSegments(r,e.name,this._settings.pathSegmentSeparator)),mQ.isAppliedFilter(this._settings.entryFilter,e)&&this._pushToStorage(e),e.dirent.isDirectory()&&mQ.isAppliedFilter(this._settings.deepFilter,e)&&this._pushToQueue(s,r===void 0?void 0:e.path)}_pushToStorage(e){this._storage.push(e)}};M3.default=L3});var Qce=_(_3=>{\"use strict\";Object.defineProperty(_3,\"__esModule\",{value:!0});var ZZe=kce(),U3=class{constructor(e,r){this._root=e,this._settings=r,this._reader=new ZZe.default(this._root,this._settings)}read(){return this._reader.read()}};_3.default=U3});var Tce=_(j3=>{\"use strict\";Object.defineProperty(j3,\"__esModule\",{value:!0});var $Ze=Ie(\"path\"),e$e=hQ(),H3=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,$Ze.sep),this.fsScandirSettings=new e$e.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}};j3.default=H3});var EQ=_(Xf=>{\"use strict\";Object.defineProperty(Xf,\"__esModule\",{value:!0});Xf.Settings=Xf.walkStream=Xf.walkSync=Xf.walk=void 0;var Rce=Pce(),t$e=xce(),r$e=Qce(),G3=Tce();Xf.Settings=G3.default;function n$e(t,e,r){if(typeof e==\"function\"){new Rce.default(t,yQ()).read(e);return}new Rce.default(t,yQ(e)).read(r)}Xf.walk=n$e;function i$e(t,e){let r=yQ(e);return new r$e.default(t,r).read()}Xf.walkSync=i$e;function s$e(t,e){let r=yQ(e);return new t$e.default(t,r).read()}Xf.walkStream=s$e;function yQ(t={}){return t instanceof G3.default?t:new G3.default(t)}});var IQ=_(W3=>{\"use strict\";Object.defineProperty(W3,\"__esModule\",{value:!0});var o$e=Ie(\"path\"),a$e=Zd(),Fce=xp(),q3=class{constructor(e){this._settings=e,this._fsStatSettings=new a$e.Settings({followSymbolicLink:this._settings.followSymbolicLinks,fs:this._settings.fs,throwErrorOnBrokenSymbolicLink:this._settings.followSymbolicLinks})}_getFullEntryPath(e){return o$e.resolve(this._settings.cwd,e)}_makeEntry(e,r){let s={name:r,path:r,dirent:Fce.fs.createDirentFromStats(r,e)};return this._settings.stats&&(s.stats=e),s}_isFatalError(e){return!Fce.errno.isEnoentCodeError(e)&&!this._settings.suppressErrors}};W3.default=q3});var J3=_(V3=>{\"use strict\";Object.defineProperty(V3,\"__esModule\",{value:!0});var l$e=Ie(\"stream\"),c$e=Zd(),u$e=EQ(),f$e=IQ(),Y3=class extends f$e.default{constructor(){super(...arguments),this._walkStream=u$e.walkStream,this._stat=c$e.stat}dynamic(e,r){return this._walkStream(e,r)}static(e,r){let s=e.map(this._getFullEntryPath,this),a=new l$e.PassThrough({objectMode:!0});a._write=(n,c,f)=>this._getEntry(s[n],e[n],r).then(p=>{p!==null&&r.entryFilter(p)&&a.push(p),n===s.length-1&&a.end(),f()}).catch(f);for(let n=0;n<s.length;n++)a.write(n);return a}_getEntry(e,r,s){return this._getStat(e).then(a=>this._makeEntry(a,r)).catch(a=>{if(s.errorFilter(a))return null;throw a})}_getStat(e){return new Promise((r,s)=>{this._stat(e,this._fsStatSettings,(a,n)=>a===null?r(n):s(a))})}};V3.default=Y3});var Nce=_(z3=>{\"use strict\";Object.defineProperty(z3,\"__esModule\",{value:!0});var A$e=EQ(),p$e=IQ(),h$e=J3(),K3=class extends p$e.default{constructor(){super(...arguments),this._walkAsync=A$e.walk,this._readerStream=new h$e.default(this._settings)}dynamic(e,r){return new Promise((s,a)=>{this._walkAsync(e,r,(n,c)=>{n===null?s(c):a(n)})})}async static(e,r){let s=[],a=this._readerStream.static(e,r);return new Promise((n,c)=>{a.once(\"error\",c),a.on(\"data\",f=>s.push(f)),a.once(\"end\",()=>n(s))})}};z3.default=K3});var Oce=_(Z3=>{\"use strict\";Object.defineProperty(Z3,\"__esModule\",{value:!0});var NB=xp(),X3=class{constructor(e,r,s){this._patterns=e,this._settings=r,this._micromatchOptions=s,this._storage=[],this._fillStorage()}_fillStorage(){for(let e of this._patterns){let r=this._getPatternSegments(e),s=this._splitSegmentsIntoSections(r);this._storage.push({complete:s.length<=1,pattern:e,segments:r,sections:s})}}_getPatternSegments(e){return NB.pattern.getPatternParts(e,this._micromatchOptions).map(s=>NB.pattern.isDynamicPattern(s,this._settings)?{dynamic:!0,pattern:s,patternRe:NB.pattern.makeRe(s,this._micromatchOptions)}:{dynamic:!1,pattern:s})}_splitSegmentsIntoSections(e){return NB.array.splitWhen(e,r=>r.dynamic&&NB.pattern.hasGlobStar(r.pattern))}};Z3.default=X3});var Lce=_(e8=>{\"use strict\";Object.defineProperty(e8,\"__esModule\",{value:!0});var g$e=Oce(),$3=class extends g$e.default{match(e){let r=e.split(\"/\"),s=r.length,a=this._storage.filter(n=>!n.complete||n.segments.length>s);for(let n of a){let c=n.sections[0];if(!n.complete&&s>c.length||r.every((p,h)=>{let E=n.segments[h];return!!(E.dynamic&&E.patternRe.test(p)||!E.dynamic&&E.pattern===p)}))return!0}return!1}};e8.default=$3});var Mce=_(r8=>{\"use strict\";Object.defineProperty(r8,\"__esModule\",{value:!0});var CQ=xp(),d$e=Lce(),t8=class{constructor(e,r){this._settings=e,this._micromatchOptions=r}getFilter(e,r,s){let a=this._getMatcher(r),n=this._getNegativePatternsRe(s);return c=>this._filter(e,c,a,n)}_getMatcher(e){return new d$e.default(e,this._settings,this._micromatchOptions)}_getNegativePatternsRe(e){let r=e.filter(CQ.pattern.isAffectDepthOfReadingPattern);return CQ.pattern.convertPatternsToRe(r,this._micromatchOptions)}_filter(e,r,s,a){if(this._isSkippedByDeep(e,r.path)||this._isSkippedSymbolicLink(r))return!1;let n=CQ.path.removeLeadingDotSegment(r.path);return this._isSkippedByPositivePatterns(n,s)?!1:this._isSkippedByNegativePatterns(n,a)}_isSkippedByDeep(e,r){return this._settings.deep===1/0?!1:this._getEntryLevel(e,r)>=this._settings.deep}_getEntryLevel(e,r){let s=r.split(\"/\").length;if(e===\"\")return s;let a=e.split(\"/\").length;return s-a}_isSkippedSymbolicLink(e){return!this._settings.followSymbolicLinks&&e.dirent.isSymbolicLink()}_isSkippedByPositivePatterns(e,r){return!this._settings.baseNameMatch&&!r.match(e)}_isSkippedByNegativePatterns(e,r){return!CQ.pattern.matchAny(e,r)}};r8.default=t8});var Uce=_(i8=>{\"use strict\";Object.defineProperty(i8,\"__esModule\",{value:!0});var $d=xp(),n8=class{constructor(e,r){this._settings=e,this._micromatchOptions=r,this.index=new Map}getFilter(e,r){let s=$d.pattern.convertPatternsToRe(e,this._micromatchOptions),a=$d.pattern.convertPatternsToRe(r,Object.assign(Object.assign({},this._micromatchOptions),{dot:!0}));return n=>this._filter(n,s,a)}_filter(e,r,s){let a=$d.path.removeLeadingDotSegment(e.path);if(this._settings.unique&&this._isDuplicateEntry(a)||this._onlyFileFilter(e)||this._onlyDirectoryFilter(e)||this._isSkippedByAbsoluteNegativePatterns(a,s))return!1;let n=e.dirent.isDirectory(),c=this._isMatchToPatterns(a,r,n)&&!this._isMatchToPatterns(a,s,n);return this._settings.unique&&c&&this._createIndexRecord(a),c}_isDuplicateEntry(e){return this.index.has(e)}_createIndexRecord(e){this.index.set(e,void 0)}_onlyFileFilter(e){return this._settings.onlyFiles&&!e.dirent.isFile()}_onlyDirectoryFilter(e){return this._settings.onlyDirectories&&!e.dirent.isDirectory()}_isSkippedByAbsoluteNegativePatterns(e,r){if(!this._settings.absolute)return!1;let s=$d.path.makeAbsolute(this._settings.cwd,e);return $d.pattern.matchAny(s,r)}_isMatchToPatterns(e,r,s){let a=$d.pattern.matchAny(e,r);return!a&&s?$d.pattern.matchAny(e+\"/\",r):a}};i8.default=n8});var _ce=_(o8=>{\"use strict\";Object.defineProperty(o8,\"__esModule\",{value:!0});var m$e=xp(),s8=class{constructor(e){this._settings=e}getFilter(){return e=>this._isNonFatalError(e)}_isNonFatalError(e){return m$e.errno.isEnoentCodeError(e)||this._settings.suppressErrors}};o8.default=s8});var jce=_(l8=>{\"use strict\";Object.defineProperty(l8,\"__esModule\",{value:!0});var Hce=xp(),a8=class{constructor(e){this._settings=e}getTransformer(){return e=>this._transform(e)}_transform(e){let r=e.path;return this._settings.absolute&&(r=Hce.path.makeAbsolute(this._settings.cwd,r),r=Hce.path.unixify(r)),this._settings.markDirectories&&e.dirent.isDirectory()&&(r+=\"/\"),this._settings.objectMode?Object.assign(Object.assign({},e),{path:r}):r}};l8.default=a8});var wQ=_(u8=>{\"use strict\";Object.defineProperty(u8,\"__esModule\",{value:!0});var y$e=Ie(\"path\"),E$e=Mce(),I$e=Uce(),C$e=_ce(),w$e=jce(),c8=class{constructor(e){this._settings=e,this.errorFilter=new C$e.default(this._settings),this.entryFilter=new I$e.default(this._settings,this._getMicromatchOptions()),this.deepFilter=new E$e.default(this._settings,this._getMicromatchOptions()),this.entryTransformer=new w$e.default(this._settings)}_getRootDirectory(e){return y$e.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}}};u8.default=c8});var Gce=_(A8=>{\"use strict\";Object.defineProperty(A8,\"__esModule\",{value:!0});var B$e=Nce(),v$e=wQ(),f8=class extends v$e.default{constructor(){super(...arguments),this._reader=new B$e.default(this._settings)}async read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return(await this.api(r,e,s)).map(n=>s.transform(n))}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};A8.default=f8});var qce=_(h8=>{\"use strict\";Object.defineProperty(h8,\"__esModule\",{value:!0});var S$e=Ie(\"stream\"),D$e=J3(),b$e=wQ(),p8=class extends b$e.default{constructor(){super(...arguments),this._reader=new D$e.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e),a=this.api(r,e,s),n=new S$e.Readable({objectMode:!0,read:()=>{}});return a.once(\"error\",c=>n.emit(\"error\",c)).on(\"data\",c=>n.emit(\"data\",s.transform(c))).once(\"end\",()=>n.emit(\"end\")),n.once(\"close\",()=>a.destroy()),n}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};h8.default=p8});var Wce=_(d8=>{\"use strict\";Object.defineProperty(d8,\"__esModule\",{value:!0});var P$e=Zd(),x$e=EQ(),k$e=IQ(),g8=class extends k$e.default{constructor(){super(...arguments),this._walkSync=x$e.walkSync,this._statSync=P$e.statSync}dynamic(e,r){return this._walkSync(e,r)}static(e,r){let s=[];for(let a of e){let n=this._getFullEntryPath(a),c=this._getEntry(n,a,r);c===null||!r.entryFilter(c)||s.push(c)}return s}_getEntry(e,r,s){try{let a=this._getStat(e);return this._makeEntry(a,r)}catch(a){if(s.errorFilter(a))return null;throw a}}_getStat(e){return this._statSync(e,this._fsStatSettings)}};d8.default=g8});var Yce=_(y8=>{\"use strict\";Object.defineProperty(y8,\"__esModule\",{value:!0});var Q$e=Wce(),T$e=wQ(),m8=class extends T$e.default{constructor(){super(...arguments),this._reader=new Q$e.default(this._settings)}read(e){let r=this._getRootDirectory(e),s=this._getReaderOptions(e);return this.api(r,e,s).map(s.transform)}api(e,r,s){return r.dynamic?this._reader.dynamic(e,s):this._reader.static(r.patterns,s)}};y8.default=m8});var Vce=_(eI=>{\"use strict\";Object.defineProperty(eI,\"__esModule\",{value:!0});eI.DEFAULT_FILE_SYSTEM_ADAPTER=void 0;var $E=Ie(\"fs\"),R$e=Ie(\"os\"),F$e=Math.max(R$e.cpus().length,1);eI.DEFAULT_FILE_SYSTEM_ADAPTER={lstat:$E.lstat,lstatSync:$E.lstatSync,stat:$E.stat,statSync:$E.statSync,readdir:$E.readdir,readdirSync:$E.readdirSync};var E8=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,F$e),this.cwd=this._getValue(this._options.cwd,process.cwd()),this.deep=this._getValue(this._options.deep,1/0),this.dot=this._getValue(this._options.dot,!1),this.extglob=this._getValue(this._options.extglob,!0),this.followSymbolicLinks=this._getValue(this._options.followSymbolicLinks,!0),this.fs=this._getFileSystemMethods(this._options.fs),this.globstar=this._getValue(this._options.globstar,!0),this.ignore=this._getValue(this._options.ignore,[]),this.markDirectories=this._getValue(this._options.markDirectories,!1),this.objectMode=this._getValue(this._options.objectMode,!1),this.onlyDirectories=this._getValue(this._options.onlyDirectories,!1),this.onlyFiles=this._getValue(this._options.onlyFiles,!0),this.stats=this._getValue(this._options.stats,!1),this.suppressErrors=this._getValue(this._options.suppressErrors,!1),this.throwErrorOnBrokenSymbolicLink=this._getValue(this._options.throwErrorOnBrokenSymbolicLink,!1),this.unique=this._getValue(this._options.unique,!0),this.onlyDirectories&&(this.onlyFiles=!1),this.stats&&(this.objectMode=!0),this.ignore=[].concat(this.ignore)}_getValue(e,r){return e===void 0?r:e}_getFileSystemMethods(e={}){return Object.assign(Object.assign({},eI.DEFAULT_FILE_SYSTEM_ADAPTER),e)}};eI.default=E8});var BQ=_((WLt,Kce)=>{\"use strict\";var Jce=Kle(),N$e=Gce(),O$e=qce(),L$e=Yce(),I8=Vce(),Qc=xp();async function C8(t,e){ju(t);let r=w8(t,N$e.default,e),s=await Promise.all(r);return Qc.array.flatten(s)}(function(t){t.glob=t,t.globSync=e,t.globStream=r,t.async=t;function e(h,E){ju(h);let C=w8(h,L$e.default,E);return Qc.array.flatten(C)}t.sync=e;function r(h,E){ju(h);let C=w8(h,O$e.default,E);return Qc.stream.merge(C)}t.stream=r;function s(h,E){ju(h);let C=[].concat(h),S=new I8.default(E);return Jce.generate(C,S)}t.generateTasks=s;function a(h,E){ju(h);let C=new I8.default(E);return Qc.pattern.isDynamicPattern(h,C)}t.isDynamicPattern=a;function n(h){return ju(h),Qc.path.escape(h)}t.escapePath=n;function c(h){return ju(h),Qc.path.convertPathToPattern(h)}t.convertPathToPattern=c;let f;(function(h){function E(S){return ju(S),Qc.path.escapePosixPath(S)}h.escapePath=E;function C(S){return ju(S),Qc.path.convertPosixPathToPattern(S)}h.convertPathToPattern=C})(f=t.posix||(t.posix={}));let p;(function(h){function E(S){return ju(S),Qc.path.escapeWindowsPath(S)}h.escapePath=E;function C(S){return ju(S),Qc.path.convertWindowsPathToPattern(S)}h.convertPathToPattern=C})(p=t.win32||(t.win32={}))})(C8||(C8={}));function w8(t,e,r){let s=[].concat(t),a=new I8.default(r),n=Jce.generate(s,a),c=new e(a);return n.map(c.read,c)}function ju(t){if(![].concat(t).every(s=>Qc.string.isString(s)&&!Qc.string.isEmpty(s)))throw new TypeError(\"Patterns must be a string (non empty) or an array of strings\")}Kce.exports=C8});var Nn={};Vt(Nn,{checksumFile:()=>SQ,checksumPattern:()=>DQ,makeHash:()=>us});function us(...t){let e=(0,vQ.createHash)(\"sha512\"),r=\"\";for(let s of t)typeof s==\"string\"?r+=s:s&&(r&&(e.update(r),r=\"\"),e.update(s));return r&&e.update(r),e.digest(\"hex\")}async function SQ(t,{baseFs:e,algorithm:r}={baseFs:ce,algorithm:\"sha512\"}){let s=await e.openPromise(t,\"r\");try{let n=Buffer.allocUnsafeSlow(65536),c=(0,vQ.createHash)(r),f=0;for(;(f=await e.readPromise(s,n,0,65536))!==0;)c.update(f===65536?n:n.slice(0,f));return c.digest(\"hex\")}finally{await e.closePromise(s)}}async function DQ(t,{cwd:e}){let s=(await(0,B8.default)(t,{cwd:fe.fromPortablePath(e),onlyDirectories:!0})).map(f=>`${f}/**/*`),a=await(0,B8.default)([t,...s],{cwd:fe.fromPortablePath(e),onlyFiles:!1});a.sort();let n=await Promise.all(a.map(async f=>{let p=[Buffer.from(f)],h=J.join(e,fe.toPortablePath(f)),E=await ce.lstatPromise(h);return E.isSymbolicLink()?p.push(Buffer.from(await ce.readlinkPromise(h))):E.isFile()&&p.push(await ce.readFilePromise(h)),p.join(\"\\0\")})),c=(0,vQ.createHash)(\"sha512\");for(let f of n)c.update(f);return c.digest(\"hex\")}var vQ,B8,I0=Xe(()=>{Dt();vQ=Ie(\"crypto\"),B8=ut(BQ())});var G={};Vt(G,{allPeerRequests:()=>qB,areDescriptorsEqual:()=>eue,areIdentsEqual:()=>UB,areLocatorsEqual:()=>_B,areVirtualPackagesEquivalent:()=>Y$e,bindDescriptor:()=>q$e,bindLocator:()=>W$e,convertDescriptorToLocator:()=>bQ,convertLocatorToDescriptor:()=>S8,convertPackageToLocator:()=>H$e,convertToIdent:()=>_$e,convertToManifestRange:()=>ret,copyPackage:()=>LB,devirtualizeDescriptor:()=>MB,devirtualizeLocator:()=>rI,ensureDevirtualizedDescriptor:()=>j$e,ensureDevirtualizedLocator:()=>G$e,getIdentVendorPath:()=>x8,isPackageCompatible:()=>TQ,isVirtualDescriptor:()=>kp,isVirtualLocator:()=>Gu,makeDescriptor:()=>On,makeIdent:()=>Da,makeLocator:()=>Ws,makeRange:()=>kQ,parseDescriptor:()=>C0,parseFileStyleRange:()=>eet,parseIdent:()=>Sa,parseLocator:()=>Qp,parseRange:()=>em,prettyDependent:()=>t3,prettyDescriptor:()=>ni,prettyIdent:()=>$i,prettyLocator:()=>Yr,prettyLocatorNoColors:()=>e3,prettyRange:()=>iI,prettyReference:()=>jB,prettyResolution:()=>FB,prettyWorkspace:()=>GB,renamePackage:()=>D8,slugifyIdent:()=>v8,slugifyLocator:()=>nI,sortDescriptors:()=>sI,stringifyDescriptor:()=>al,stringifyIdent:()=>un,stringifyLocator:()=>ll,tryParseDescriptor:()=>HB,tryParseIdent:()=>tue,tryParseLocator:()=>xQ,tryParseRange:()=>$$e,unwrapIdentFromScope:()=>iet,virtualizeDescriptor:()=>b8,virtualizePackage:()=>P8,wrapIdentIntoScope:()=>net});function Da(t,e){if(t?.startsWith(\"@\"))throw new Error(\"Invalid scope: don't prefix it with '@'\");return{identHash:us(t,e),scope:t,name:e}}function On(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:us(t.identHash,e),range:e}}function Ws(t,e){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:us(t.identHash,e),reference:e}}function _$e(t){return{identHash:t.identHash,scope:t.scope,name:t.name}}function bQ(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.descriptorHash,reference:t.range}}function S8(t){return{identHash:t.identHash,scope:t.scope,name:t.name,descriptorHash:t.locatorHash,range:t.reference}}function H$e(t){return{identHash:t.identHash,scope:t.scope,name:t.name,locatorHash:t.locatorHash,reference:t.reference}}function D8(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 LB(t){return D8(t,t)}function b8(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return On(t,`virtual:${e}#${t.range}`)}function P8(t,e){if(e.includes(\"#\"))throw new Error(\"Invalid entropy\");return D8(t,Ws(t,`virtual:${e}#${t.reference}`))}function kp(t){return t.range.startsWith(OB)}function Gu(t){return t.reference.startsWith(OB)}function MB(t){if(!kp(t))throw new Error(\"Not a virtual descriptor\");return On(t,t.range.replace(PQ,\"\"))}function rI(t){if(!Gu(t))throw new Error(\"Not a virtual descriptor\");return Ws(t,t.reference.replace(PQ,\"\"))}function j$e(t){return kp(t)?On(t,t.range.replace(PQ,\"\")):t}function G$e(t){return Gu(t)?Ws(t,t.reference.replace(PQ,\"\")):t}function q$e(t,e){return t.range.includes(\"::\")?t:On(t,`${t.range}::${tI.default.stringify(e)}`)}function W$e(t,e){return t.reference.includes(\"::\")?t:Ws(t,`${t.reference}::${tI.default.stringify(e)}`)}function UB(t,e){return t.identHash===e.identHash}function eue(t,e){return t.descriptorHash===e.descriptorHash}function _B(t,e){return t.locatorHash===e.locatorHash}function Y$e(t,e){if(!Gu(t))throw new Error(\"Invalid package type\");if(!Gu(e))throw new Error(\"Invalid package type\");if(!UB(t,e)||t.dependencies.size!==e.dependencies.size)return!1;for(let r of t.dependencies.values()){let s=e.dependencies.get(r.identHash);if(!s||!eue(r,s))return!1}return!0}function Sa(t){let e=tue(t);if(!e)throw new Error(`Invalid ident (${t})`);return e}function tue(t){let e=t.match(V$e);if(!e)return null;let[,r,s]=e;return Da(typeof r<\"u\"?r:null,s)}function C0(t,e=!1){let r=HB(t,e);if(!r)throw new Error(`Invalid descriptor (${t})`);return r}function HB(t,e=!1){let r=e?t.match(J$e):t.match(K$e);if(!r)return null;let[,s,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid range (${t})`);let c=typeof s<\"u\"?s:null,f=typeof n<\"u\"?n:\"unknown\";return On(Da(c,a),f)}function Qp(t,e=!1){let r=xQ(t,e);if(!r)throw new Error(`Invalid locator (${t})`);return r}function xQ(t,e=!1){let r=e?t.match(z$e):t.match(X$e);if(!r)return null;let[,s,a,n]=r;if(n===\"unknown\")throw new Error(`Invalid reference (${t})`);let c=typeof s<\"u\"?s:null,f=typeof n<\"u\"?n:\"unknown\";return Ws(Da(c,a),f)}function em(t,e){let r=t.match(Z$e);if(r===null)throw new Error(`Invalid range (${t})`);let s=typeof r[1]<\"u\"?r[1]:null;if(typeof e?.requireProtocol==\"string\"&&s!==e.requireProtocol)throw new Error(`Invalid protocol (${s})`);if(e?.requireProtocol&&s===null)throw new Error(`Missing protocol (${s})`);let a=typeof r[3]<\"u\"?decodeURIComponent(r[2]):null;if(e?.requireSource&&a===null)throw new Error(`Missing source (${t})`);let n=typeof r[3]<\"u\"?decodeURIComponent(r[3]):decodeURIComponent(r[2]),c=e?.parseSelector?tI.default.parse(n):n,f=typeof r[4]<\"u\"?tI.default.parse(r[4]):null;return{protocol:s,source:a,selector:c,params:f}}function $$e(t,e){try{return em(t,e)}catch{return null}}function eet(t,{protocol:e}){let{selector:r,params:s}=em(t,{requireProtocol:e,requireBindings:!0});if(typeof s.locator!=\"string\")throw new Error(`Assertion failed: Invalid bindings for ${t}`);return{parentLocator:Qp(s.locator,!0),path:r}}function zce(t){return t=t.replaceAll(\"%\",\"%25\"),t=t.replaceAll(\":\",\"%3A\"),t=t.replaceAll(\"#\",\"%23\"),t}function tet(t){return t===null?!1:Object.entries(t).length>0}function kQ({protocol:t,source:e,selector:r,params:s}){let a=\"\";return t!==null&&(a+=`${t}`),e!==null&&(a+=`${zce(e)}#`),a+=zce(r),tet(s)&&(a+=`::${tI.default.stringify(s)}`),a}function ret(t){let{params:e,protocol:r,source:s,selector:a}=em(t);for(let n in e)n.startsWith(\"__\")&&delete e[n];return kQ({protocol:r,source:s,params:e,selector:a})}function un(t){return t.scope?`@${t.scope}/${t.name}`:`${t.name}`}function net(t,e){return t.scope?Da(e,`${t.scope}__${t.name}`):Da(e,t.name)}function iet(t,e){if(t.scope!==e)return t;let r=t.name.indexOf(\"__\");if(r===-1)return Da(null,t.name);let s=t.name.slice(0,r),a=t.name.slice(r+2);return Da(s,a)}function al(t){return t.scope?`@${t.scope}/${t.name}@${t.range}`:`${t.name}@${t.range}`}function ll(t){return t.scope?`@${t.scope}/${t.name}@${t.reference}`:`${t.name}@${t.reference}`}function v8(t){return t.scope!==null?`@${t.scope}-${t.name}`:t.name}function nI(t){let{protocol:e,selector:r}=em(t.reference),s=e!==null?e.replace(set,\"\"):\"exotic\",a=Xce.default.valid(r),n=a!==null?`${s}-${a}`:`${s}`,c=10;return t.scope?`${v8(t)}-${n}-${t.locatorHash.slice(0,c)}`:`${v8(t)}-${n}-${t.locatorHash.slice(0,c)}`}function $i(t,e){return e.scope?`${Ht(t,`@${e.scope}/`,ht.SCOPE)}${Ht(t,e.name,ht.NAME)}`:`${Ht(t,e.name,ht.NAME)}`}function QQ(t){if(t.startsWith(OB)){let e=QQ(t.substring(t.indexOf(\"#\")+1)),r=t.substring(OB.length,OB.length+M$e);return`${e} [${r}]`}else return t.replace(oet,\"?[...]\")}function iI(t,e){return`${Ht(t,QQ(e),ht.RANGE)}`}function ni(t,e){return`${$i(t,e)}${Ht(t,\"@\",ht.RANGE)}${iI(t,e.range)}`}function jB(t,e){return`${Ht(t,QQ(e),ht.REFERENCE)}`}function Yr(t,e){return`${$i(t,e)}${Ht(t,\"@\",ht.REFERENCE)}${jB(t,e.reference)}`}function e3(t){return`${un(t)}@${QQ(t.reference)}`}function sI(t){return qs(t,[e=>un(e),e=>e.range])}function GB(t,e){return $i(t,e.anchoredLocator)}function FB(t,e,r){let s=kp(e)?MB(e):e;return r===null?`${ni(t,s)} \\u2192 ${$4(t).Cross}`:s.identHash===r.identHash?`${ni(t,s)} \\u2192 ${jB(t,r.reference)}`:`${ni(t,s)} \\u2192 ${Yr(t,r)}`}function t3(t,e,r){return r===null?`${Yr(t,e)}`:`${Yr(t,e)} (via ${iI(t,r.range)})`}function x8(t){return`node_modules/${un(t)}`}function TQ(t,e){return t.conditions?U$e(t.conditions,r=>{let[,s,a]=r.match($ce),n=e[s];return n?n.includes(a):!0}):!0}function qB(t){let e=new Set;if(\"children\"in t)e.add(t);else for(let r of t.requests.values())e.add(r);for(let r of e)for(let s of r.children.values())e.add(s);return e}var tI,Xce,Zce,OB,M$e,$ce,U$e,PQ,V$e,J$e,K$e,z$e,X$e,Z$e,set,oet,Wo=Xe(()=>{tI=ut(Ie(\"querystring\")),Xce=ut(Ai()),Zce=ut(Ise());xc();I0();Pc();Wo();OB=\"virtual:\",M$e=5,$ce=/(os|cpu|libc)=([a-z0-9_-]+)/,U$e=(0,Zce.makeParser)($ce);PQ=/^[^#]*#/;V$e=/^(?:@([^/]+?)\\/)?([^@/]+)$/;J$e=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,K$e=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;z$e=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))$/,X$e=/^(?:@([^/]+?)\\/)?([^@/]+?)(?:@(.+))?$/;Z$e=/^([^#:]*:)?((?:(?!::)[^#])*)(?:#((?:(?!::).)*))?(?:::(.*))?$/;set=/:$/;oet=/\\?.*/});var rue,nue=Xe(()=>{Wo();rue={hooks:{reduceDependency:(t,e,r,s,{resolver:a,resolveOptions:n})=>{for(let{pattern:c,reference:f}of e.topLevelWorkspace.manifest.resolutions){if(c.from&&(c.from.fullName!==un(r)||e.configuration.normalizeLocator(Ws(Sa(c.from.fullName),c.from.description??r.reference)).locatorHash!==r.locatorHash)||c.descriptor.fullName!==un(t)||e.configuration.normalizeDependency(On(Qp(c.descriptor.fullName),c.descriptor.description??t.range)).descriptorHash!==t.descriptorHash)continue;return a.bindDescriptor(e.configuration.normalizeDependency(On(t,f)),e.topLevelWorkspace.anchoredLocator,n)}return t},validateProject:async(t,e)=>{for(let r of t.workspaces){let s=GB(t.configuration,r);await t.configuration.triggerHook(a=>a.validateWorkspace,r,{reportWarning:(a,n)=>e.reportWarning(a,`${s}: ${n}`),reportError:(a,n)=>e.reportError(a,`${s}: ${n}`)})}},validateWorkspace:async(t,e)=>{let{manifest:r}=t;r.resolutions.length&&t.cwd!==t.project.cwd&&r.errors.push(new Error(\"Resolutions field will be ignored\"));for(let s of r.errors)e.reportWarning(57,s.message)}}}});var Ei,tm=Xe(()=>{Ei=class t{static{this.protocol=\"workspace:\"}supportsDescriptor(e,r){return!!(e.range.startsWith(t.protocol)||r.project.tryWorkspaceByDescriptor(e)!==null)}supportsLocator(e,r){return!!e.reference.startsWith(t.protocol)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[s.project.getWorkspaceByDescriptor(e).anchoredLocator]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.getWorkspaceByCwd(e.reference.slice(t.protocol.length));return{...e,version:s.manifest.version||\"0.0.0\",languageName:\"unknown\",linkType:\"SOFT\",conditions:null,dependencies:r.project.configuration.normalizeDependencyMap(new Map([...s.manifest.dependencies,...s.manifest.devDependencies])),peerDependencies:new Map([...s.manifest.peerDependencies]),dependenciesMeta:s.manifest.dependenciesMeta,peerDependenciesMeta:s.manifest.peerDependenciesMeta,bin:s.manifest.bin}}}});var Fr={};Vt(Fr,{SemVer:()=>lue.SemVer,clean:()=>cet,getComparator:()=>oue,mergeComparators:()=>k8,satisfiesWithPrereleases:()=>Zf,simplifyRanges:()=>Q8,stringifyComparator:()=>aue,validRange:()=>cl});function Zf(t,e,r=!1){if(!t)return!1;let s=`${e}${r}`,a=iue.get(s);if(typeof a>\"u\")try{a=new Tp.default.Range(e,{includePrerelease:!0,loose:r})}catch{return!1}finally{iue.set(s,a||null)}else if(a===null)return!1;let n;try{n=new Tp.default.SemVer(t,a)}catch{return!1}return a.test(n)?!0:(n.prerelease&&(n.prerelease=[]),a.set.some(c=>{for(let f of c)f.semver.prerelease&&(f.semver.prerelease=[]);return c.every(f=>f.test(n))}))}function cl(t){if(t.indexOf(\":\")!==-1)return null;let e=sue.get(t);if(typeof e<\"u\")return e;try{e=new Tp.default.Range(t)}catch{e=null}return sue.set(t,e),e}function cet(t){let e=aet.exec(t);return e?e[1]:null}function oue(t){if(t.semver===Tp.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 k8(t){if(t.length===0)return null;let e=null,r=null;for(let s of t){if(s.gt){let a=e!==null?Tp.default.compare(s.gt[1],e[1]):null;(a===null||a>0||a===0&&s.gt[0]===\">\")&&(e=s.gt)}if(s.lt){let a=r!==null?Tp.default.compare(s.lt[1],r[1]):null;(a===null||a<0||a===0&&s.lt[0]===\"<\")&&(r=s.lt)}}if(e&&r){let s=Tp.default.compare(e[1],r[1]);if(s===0&&(e[0]===\">\"||r[0]===\"<\")||s>0)return null}return{gt:e,lt:r}}function aue(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 Q8(t){let e=t.map(uet).map(s=>cl(s).set.map(a=>a.map(n=>oue(n)))),r=e.shift().map(s=>k8(s)).filter(s=>s!==null);for(let s of e){let a=[];for(let n of r)for(let c of s){let f=k8([n,...c]);f!==null&&a.push(f)}r=a}return r.length===0?null:r.map(s=>aue(s)).join(\" || \")}function uet(t){let e=t.split(\"||\");if(e.length>1){let r=new Set;for(let s of e)e.some(a=>a!==s&&Tp.default.subset(s,a))||r.add(s);if(r.size<e.length)return[...r].join(\" || \")}return t}var Tp,lue,iue,sue,aet,Rp=Xe(()=>{Tp=ut(Ai()),lue=ut(Ai()),iue=new Map;sue=new Map;aet=/^(?:[\\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 cue(t){let e=t.match(/^[ \\t]+/m);return e?e[0]:\"  \"}function uue(t){return t.charCodeAt(0)===65279?t.slice(1):t}function ba(t){return t.replace(/\\\\/g,\"/\")}function RQ(t,{yamlCompatibilityMode:e}){return e?Y4(t):typeof t>\"u\"||typeof t==\"boolean\"?t:null}function fue(t,e){let r=e.search(/[^!]/);if(r===-1)return\"invalid\";let s=r%2===0?\"\":\"!\",a=e.slice(r);return`${s}${t}=${a}`}function T8(t,e){return e.length===1?fue(t,e[0]):`(${e.map(r=>fue(t,r)).join(\" | \")})`}var Aue,Ut,oI=Xe(()=>{Dt();wc();Aue=ut(Ai());tm();Pc();Rp();Wo();Ut=class t{constructor(){this.indent=\"  \";this.name=null;this.version=null;this.os=null;this.cpu=null;this.libc=null;this.type=null;this.packageManager=null;this.private=!1;this.license=null;this.main=null;this.module=null;this.browser=null;this.languageName=null;this.bin=new Map;this.scripts=new Map;this.dependencies=new Map;this.devDependencies=new Map;this.peerDependencies=new Map;this.workspaceDefinitions=[];this.dependenciesMeta=new Map;this.peerDependenciesMeta=new Map;this.resolutions=[];this.files=null;this.publishConfig=null;this.installConfig=null;this.preferUnplugged=null;this.raw={};this.errors=[]}static{this.fileName=\"package.json\"}static{this.allDependencies=[\"dependencies\",\"devDependencies\",\"peerDependencies\"]}static{this.hardDependencies=[\"dependencies\",\"devDependencies\"]}static async tryFind(e,{baseFs:r=new Yn}={}){let s=J.join(e,\"package.json\");try{return await t.fromFile(s,{baseFs:r})}catch(a){if(a.code===\"ENOENT\")return null;throw a}}static async find(e,{baseFs:r}={}){let s=await t.tryFind(e,{baseFs:r});if(s===null)throw new Error(\"Manifest not found\");return s}static async fromFile(e,{baseFs:r=new Yn}={}){let s=new t;return await s.loadFile(e,{baseFs:r}),s}static fromText(e){let r=new t;return r.loadFromText(e),r}loadFromText(e){let r;try{r=JSON.parse(uue(e)||\"{}\")}catch(s){throw s.message+=` (when parsing ${e})`,s}this.load(r),this.indent=cue(e)}async loadFile(e,{baseFs:r=new Yn}){let s=await r.readFilePromise(e,\"utf8\"),a;try{a=JSON.parse(uue(s)||\"{}\")}catch(n){throw n.message+=` (when parsing ${e})`,n}this.load(a),this.indent=cue(s)}load(e,{yamlCompatibilityMode:r=!1}={}){if(typeof e!=\"object\"||e===null)throw new Error(`Utterly invalid manifest data (${e})`);this.raw=e;let s=[];if(this.name=null,typeof e.name==\"string\")try{this.name=Sa(e.name)}catch{s.push(new Error(\"Parsing failed for the 'name' field\"))}if(typeof e.version==\"string\"?this.version=e.version:this.version=null,Array.isArray(e.os)){let n=[];this.os=n;for(let c of e.os)typeof c!=\"string\"?s.push(new Error(\"Parsing failed for the 'os' field\")):n.push(c)}else this.os=null;if(Array.isArray(e.cpu)){let n=[];this.cpu=n;for(let c of e.cpu)typeof c!=\"string\"?s.push(new Error(\"Parsing failed for the 'cpu' field\")):n.push(c)}else this.cpu=null;if(Array.isArray(e.libc)){let n=[];this.libc=n;for(let c of e.libc)typeof c!=\"string\"?s.push(new Error(\"Parsing failed for the 'libc' field\")):n.push(c)}else this.libc=null;if(typeof e.type==\"string\"?this.type=e.type:this.type=null,typeof e.packageManager==\"string\"?this.packageManager=e.packageManager:this.packageManager=null,typeof e.private==\"boolean\"?this.private=e.private:this.private=!1,typeof e.license==\"string\"?this.license=e.license:this.license=null,typeof e.languageName==\"string\"?this.languageName=e.languageName:this.languageName=null,typeof e.main==\"string\"?this.main=ba(e.main):this.main=null,typeof e.module==\"string\"?this.module=ba(e.module):this.module=null,e.browser!=null)if(typeof e.browser==\"string\")this.browser=ba(e.browser);else{this.browser=new Map;for(let[n,c]of Object.entries(e.browser))this.browser.set(ba(n),typeof c==\"string\"?ba(c):c)}else this.browser=null;if(this.bin=new Map,typeof e.bin==\"string\")e.bin.trim()===\"\"?s.push(new Error(\"Invalid bin field\")):this.name!==null?this.bin.set(this.name.name,ba(e.bin)):s.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.bin==\"object\"&&e.bin!==null)for(let[n,c]of Object.entries(e.bin)){if(typeof c!=\"string\"||c.trim()===\"\"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}let f=Sa(n);this.bin.set(f.name,ba(c))}if(this.scripts=new Map,typeof e.scripts==\"object\"&&e.scripts!==null)for(let[n,c]of Object.entries(e.scripts)){if(typeof c!=\"string\"){s.push(new Error(`Invalid script definition for '${n}'`));continue}this.scripts.set(n,c)}if(this.dependencies=new Map,typeof e.dependencies==\"object\"&&e.dependencies!==null)for(let[n,c]of Object.entries(e.dependencies)){if(typeof c!=\"string\"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p)}if(this.devDependencies=new Map,typeof e.devDependencies==\"object\"&&e.devDependencies!==null)for(let[n,c]of Object.entries(e.devDependencies)){if(typeof c!=\"string\"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.devDependencies.set(p.identHash,p)}if(this.peerDependencies=new Map,typeof e.peerDependencies==\"object\"&&e.peerDependencies!==null)for(let[n,c]of Object.entries(e.peerDependencies)){let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}(typeof c!=\"string\"||!c.startsWith(Ei.protocol)&&!cl(c))&&(s.push(new Error(`Invalid dependency range for '${n}'`)),c=\"*\");let p=On(f,c);this.peerDependencies.set(p.identHash,p)}typeof e.workspaces==\"object\"&&e.workspaces!==null&&e.workspaces.nohoist&&s.push(new Error(\"'nohoist' is deprecated, please use 'installConfig.hoistingLimits' instead\"));let a=Array.isArray(e.workspaces)?e.workspaces:typeof e.workspaces==\"object\"&&e.workspaces!==null&&Array.isArray(e.workspaces.packages)?e.workspaces.packages:[];this.workspaceDefinitions=[];for(let n of a){if(typeof n!=\"string\"){s.push(new Error(`Invalid workspace definition for '${n}'`));continue}this.workspaceDefinitions.push({pattern:n})}if(this.dependenciesMeta=new Map,typeof e.dependenciesMeta==\"object\"&&e.dependenciesMeta!==null)for(let[n,c]of Object.entries(e.dependenciesMeta)){if(typeof c!=\"object\"||c===null){s.push(new Error(`Invalid meta field for '${n}`));continue}let f=C0(n),p=this.ensureDependencyMeta(f),h=RQ(c.built,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid built meta field for '${n}'`));continue}let E=RQ(c.optional,{yamlCompatibilityMode:r});if(E===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}let C=RQ(c.unplugged,{yamlCompatibilityMode:r});if(C===null){s.push(new Error(`Invalid unplugged meta field for '${n}'`));continue}Object.assign(p,{built:h,optional:E,unplugged:C})}if(this.peerDependenciesMeta=new Map,typeof e.peerDependenciesMeta==\"object\"&&e.peerDependenciesMeta!==null)for(let[n,c]of Object.entries(e.peerDependenciesMeta)){if(typeof c!=\"object\"||c===null){s.push(new Error(`Invalid meta field for '${n}'`));continue}let f=C0(n),p=this.ensurePeerDependencyMeta(f),h=RQ(c.optional,{yamlCompatibilityMode:r});if(h===null){s.push(new Error(`Invalid optional meta field for '${n}'`));continue}Object.assign(p,{optional:h})}if(this.resolutions=[],typeof e.resolutions==\"object\"&&e.resolutions!==null)for(let[n,c]of Object.entries(e.resolutions)){if(typeof c!=\"string\"){s.push(new Error(`Invalid resolution entry for '${n}'`));continue}try{this.resolutions.push({pattern:px(n),reference:c})}catch(f){s.push(f);continue}}if(Array.isArray(e.files)){this.files=new Set;for(let n of e.files){if(typeof n!=\"string\"){s.push(new Error(`Invalid files entry for '${n}'`));continue}this.files.add(n)}}else this.files=null;if(typeof e.publishConfig==\"object\"&&e.publishConfig!==null){if(this.publishConfig={},typeof e.publishConfig.access==\"string\"&&(this.publishConfig.access=e.publishConfig.access),typeof e.publishConfig.main==\"string\"&&(this.publishConfig.main=ba(e.publishConfig.main)),typeof e.publishConfig.module==\"string\"&&(this.publishConfig.module=ba(e.publishConfig.module)),e.publishConfig.browser!=null)if(typeof e.publishConfig.browser==\"string\")this.publishConfig.browser=ba(e.publishConfig.browser);else{this.publishConfig.browser=new Map;for(let[n,c]of Object.entries(e.publishConfig.browser))this.publishConfig.browser.set(ba(n),typeof c==\"string\"?ba(c):c)}if(typeof e.publishConfig.registry==\"string\"&&(this.publishConfig.registry=e.publishConfig.registry),typeof e.publishConfig.provenance==\"boolean\"&&(this.publishConfig.provenance=e.publishConfig.provenance),typeof e.publishConfig.bin==\"string\")this.name!==null?this.publishConfig.bin=new Map([[this.name.name,ba(e.publishConfig.bin)]]):s.push(new Error(\"String bin field, but no attached package name\"));else if(typeof e.publishConfig.bin==\"object\"&&e.publishConfig.bin!==null){this.publishConfig.bin=new Map;for(let[n,c]of Object.entries(e.publishConfig.bin)){if(typeof c!=\"string\"){s.push(new Error(`Invalid bin definition for '${n}'`));continue}this.publishConfig.bin.set(n,ba(c))}}if(Array.isArray(e.publishConfig.executableFiles)){this.publishConfig.executableFiles=new Set;for(let n of e.publishConfig.executableFiles){if(typeof n!=\"string\"){s.push(new Error(\"Invalid executable file definition\"));continue}this.publishConfig.executableFiles.add(ba(n))}}}else this.publishConfig=null;if(typeof e.installConfig==\"object\"&&e.installConfig!==null){this.installConfig={};for(let n of Object.keys(e.installConfig))n===\"hoistingLimits\"?typeof e.installConfig.hoistingLimits==\"string\"?this.installConfig.hoistingLimits=e.installConfig.hoistingLimits:s.push(new Error(\"Invalid hoisting limits definition\")):n==\"selfReferences\"?typeof e.installConfig.selfReferences==\"boolean\"?this.installConfig.selfReferences=e.installConfig.selfReferences:s.push(new Error(\"Invalid selfReferences definition, must be a boolean value\")):s.push(new Error(`Unrecognized installConfig key: ${n}`))}else this.installConfig=null;if(typeof e.optionalDependencies==\"object\"&&e.optionalDependencies!==null)for(let[n,c]of Object.entries(e.optionalDependencies)){if(typeof c!=\"string\"){s.push(new Error(`Invalid dependency range for '${n}'`));continue}let f;try{f=Sa(n)}catch{s.push(new Error(`Parsing failed for the dependency name '${n}'`));continue}let p=On(f,c);this.dependencies.set(p.identHash,p);let h=On(f,\"unknown\"),E=this.ensureDependencyMeta(h);Object.assign(E,{optional:!0})}typeof e.preferUnplugged==\"boolean\"?this.preferUnplugged=e.preferUnplugged:this.preferUnplugged=null,this.errors=s}getForScope(e){switch(e){case\"dependencies\":return this.dependencies;case\"devDependencies\":return this.devDependencies;case\"peerDependencies\":return this.peerDependencies;default:throw new Error(`Unsupported value (\"${e}\")`)}}hasConsumerDependency(e){return!!(this.dependencies.has(e.identHash)||this.peerDependencies.has(e.identHash))}hasHardDependency(e){return!!(this.dependencies.has(e.identHash)||this.devDependencies.has(e.identHash))}hasSoftDependency(e){return!!this.peerDependencies.has(e.identHash)}hasDependency(e){return!!(this.hasHardDependency(e)||this.hasSoftDependency(e))}getConditions(){let e=[];return this.os&&this.os.length>0&&e.push(T8(\"os\",this.os)),this.cpu&&this.cpu.length>0&&e.push(T8(\"cpu\",this.cpu)),this.libc&&this.libc.length>0&&e.push(T8(\"libc\",this.libc)),e.length>0?e.join(\" & \"):null}ensureDependencyMeta(e){if(e.range!==\"unknown\"&&!Aue.default.valid(e.range))throw new Error(`Invalid meta field range for '${al(e)}'`);let r=un(e),s=e.range!==\"unknown\"?e.range:null,a=this.dependenciesMeta.get(r);a||this.dependenciesMeta.set(r,a=new Map);let n=a.get(s);return n||a.set(s,n={}),n}ensurePeerDependencyMeta(e){if(e.range!==\"unknown\")throw new Error(`Invalid meta field range for '${al(e)}'`);let r=un(e),s=this.peerDependenciesMeta.get(r);return s||this.peerDependenciesMeta.set(r,s={}),s}setRawField(e,r,{after:s=[]}={}){let a=new Set(s.filter(n=>Object.hasOwn(this.raw,n)));if(a.size===0||Object.hasOwn(this.raw,e))this.raw[e]=r;else{let n=this.raw,c=this.raw={},f=!1;for(let p of Object.keys(n))c[p]=n[p],f||(a.delete(p),a.size===0&&(c[e]=r,f=!0))}}exportTo(e,{compatibilityMode:r=!0}={}){if(Object.assign(e,this.raw),this.name!==null?e.name=un(this.name):delete e.name,this.version!==null?e.version=this.version:delete e.version,this.os!==null?e.os=this.os:delete e.os,this.cpu!==null?e.cpu=this.cpu:delete e.cpu,this.type!==null?e.type=this.type:delete e.type,this.packageManager!==null?e.packageManager=this.packageManager:delete e.packageManager,this.private?e.private=!0:delete e.private,this.license!==null?e.license=this.license:delete e.license,this.languageName!==null?e.languageName=this.languageName:delete e.languageName,this.main!==null?e.main=this.main:delete e.main,this.module!==null?e.module=this.module:delete e.module,this.browser!==null){let n=this.browser;typeof n==\"string\"?e.browser=n:n instanceof Map&&(e.browser=Object.assign({},...Array.from(n.keys()).sort().map(c=>({[c]:n.get(c)}))))}else delete e.browser;this.bin.size===1&&this.name!==null&&this.bin.has(this.name.name)?e.bin=this.bin.get(this.name.name):this.bin.size>0?e.bin=Object.assign({},...Array.from(this.bin.keys()).sort().map(n=>({[n]:this.bin.get(n)}))):delete e.bin,this.workspaceDefinitions.length>0?this.raw.workspaces&&!Array.isArray(this.raw.workspaces)?e.workspaces={...this.raw.workspaces,packages:this.workspaceDefinitions.map(({pattern:n})=>n)}:e.workspaces=this.workspaceDefinitions.map(({pattern:n})=>n):this.raw.workspaces&&!Array.isArray(this.raw.workspaces)&&Object.keys(this.raw.workspaces).length>0?e.workspaces=this.raw.workspaces:delete e.workspaces;let s=[],a=[];for(let n of this.dependencies.values()){let c=this.dependenciesMeta.get(un(n)),f=!1;if(r&&c){let p=c.get(null);p&&p.optional&&(f=!0)}f?a.push(n):s.push(n)}s.length>0?e.dependencies=Object.assign({},...sI(s).map(n=>({[un(n)]:n.range}))):delete e.dependencies,a.length>0?e.optionalDependencies=Object.assign({},...sI(a).map(n=>({[un(n)]:n.range}))):delete e.optionalDependencies,this.devDependencies.size>0?e.devDependencies=Object.assign({},...sI(this.devDependencies.values()).map(n=>({[un(n)]:n.range}))):delete e.devDependencies,this.peerDependencies.size>0?e.peerDependencies=Object.assign({},...sI(this.peerDependencies.values()).map(n=>({[un(n)]:n.range}))):delete e.peerDependencies,e.dependenciesMeta={};for(let[n,c]of qs(this.dependenciesMeta.entries(),([f,p])=>f))for(let[f,p]of qs(c.entries(),([h,E])=>h!==null?`0${h}`:\"1\")){let h=f!==null?al(On(Sa(n),f)):n,E={...p};r&&f===null&&delete E.optional,Object.keys(E).length!==0&&(e.dependenciesMeta[h]=E)}if(Object.keys(e.dependenciesMeta).length===0&&delete e.dependenciesMeta,this.peerDependenciesMeta.size>0?e.peerDependenciesMeta=Object.assign({},...qs(this.peerDependenciesMeta.entries(),([n,c])=>n).map(([n,c])=>({[n]:c}))):delete e.peerDependenciesMeta,this.resolutions.length>0?e.resolutions=Object.assign({},...this.resolutions.map(({pattern:n,reference:c})=>({[hx(n)]:c}))):delete e.resolutions,this.files!==null?e.files=Array.from(this.files):delete e.files,this.preferUnplugged!==null?e.preferUnplugged=this.preferUnplugged:delete e.preferUnplugged,this.scripts!==null&&this.scripts.size>0){e.scripts??={};for(let n of Object.keys(e.scripts))this.scripts.has(n)||delete e.scripts[n];for(let[n,c]of this.scripts.entries())e.scripts[n]=c}else delete e.scripts;return e}}});function Aet(t){return typeof t.reportCode<\"u\"}var pue,hue,fet,jt,Ao,Tc=Xe(()=>{ql();pue=Ie(\"stream\"),hue=Ie(\"string_decoder\"),fet=15,jt=class extends Error{constructor(r,s,a){super(s);this.reportExtra=a;this.reportCode=r}};Ao=class{constructor(){this.cacheHits=new Set;this.cacheMisses=new Set;this.reportedInfos=new Set;this.reportedWarnings=new Set;this.reportedErrors=new Set}getRecommendedLength(){return 180}reportCacheHit(e){this.cacheHits.add(e.locatorHash)}reportCacheMiss(e,r){this.cacheMisses.add(e.locatorHash)}static progressViaCounter(e){let r=0,s,a=new Promise(p=>{s=p}),n=p=>{let h=s;a=new Promise(E=>{s=E}),r=p,h()},c=(p=0)=>{n(r+1)},f=async function*(){for(;r<e;)await a,yield{progress:r/e}}();return{[Symbol.asyncIterator](){return f},hasProgress:!0,hasTitle:!1,set:n,tick:c}}static progressViaTitle(){let e,r,s=new Promise(c=>{r=c}),a=Q4(c=>{let f=r;s=new Promise(p=>{r=p}),e=c,f()},1e3/fet),n=async function*(){for(;;)await s,yield{title:e}}();return{[Symbol.asyncIterator](){return n},hasProgress:!1,hasTitle:!0,setTitle:a}}async startProgressPromise(e,r){let s=this.reportProgress(e);try{return await r(e)}finally{s.stop()}}startProgressSync(e,r){let s=this.reportProgress(e);try{return r(e)}finally{s.stop()}}reportInfoOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedInfos.has(a)||(this.reportedInfos.add(a),this.reportInfo(e,r),s?.reportExtra?.(this))}reportWarningOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedWarnings.has(a)||(this.reportedWarnings.add(a),this.reportWarning(e,r),s?.reportExtra?.(this))}reportErrorOnce(e,r,s){let a=s&&s.key?s.key:r;this.reportedErrors.has(a)||(this.reportedErrors.add(a),this.reportError(e,r),s?.reportExtra?.(this))}reportExceptionOnce(e){Aet(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 pue.PassThrough,s=new hue.StringDecoder,a=\"\";return r.on(\"data\",n=>{let c=s.write(n),f;do if(f=c.indexOf(`\n`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a=\"\",e!==null?this.reportInfo(null,`${e} ${p}`):this.reportInfo(null,p)}while(f!==-1);a+=c}),r.on(\"end\",()=>{let n=s.end();n!==\"\"&&(e!==null?this.reportInfo(null,`${e} ${n}`):this.reportInfo(null,n))}),r}}});var aI,R8=Xe(()=>{Tc();Wo();aI=class{constructor(e){this.fetchers=e}supports(e,r){return!!this.tryFetcher(e,r)}getLocalPath(e,r){return this.getFetcher(e,r).getLocalPath(e,r)}async fetch(e,r){return await this.getFetcher(e,r).fetch(e,r)}tryFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));return s||null}getFetcher(e,r){let s=this.fetchers.find(a=>a.supports(e,r));if(!s)throw new jt(11,`${Yr(r.project.configuration,e)} isn't supported by any available fetcher`);return s}}});var rm,F8=Xe(()=>{Wo();rm=class{constructor(e){this.resolvers=e.filter(r=>r)}supportsDescriptor(e,r){return!!this.tryResolverByDescriptor(e,r)}supportsLocator(e,r){return!!this.tryResolverByLocator(e,r)}shouldPersistResolution(e,r){return this.getResolverByLocator(e,r).shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.getResolverByDescriptor(e,s).bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.getResolverByDescriptor(e,r).getResolutionDependencies(e,r)}async getCandidates(e,r,s){return await this.getResolverByDescriptor(e,s).getCandidates(e,r,s)}async getSatisfying(e,r,s,a){return this.getResolverByDescriptor(e,a).getSatisfying(e,r,s,a)}async resolve(e,r){return await this.getResolverByLocator(e,r).resolve(e,r)}tryResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));return s||null}getResolverByDescriptor(e,r){let s=this.resolvers.find(a=>a.supportsDescriptor(e,r));if(!s)throw new Error(`${ni(r.project.configuration,e)} isn't supported by any available resolver`);return s}tryResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));return s||null}getResolverByLocator(e,r){let s=this.resolvers.find(a=>a.supportsLocator(e,r));if(!s)throw new Error(`${Yr(r.project.configuration,e)} isn't supported by any available resolver`);return s}}});var lI,N8=Xe(()=>{Dt();Wo();lI=class{supports(e){return!!e.reference.startsWith(\"virtual:\")}getLocalPath(e,r){let s=e.reference.indexOf(\"#\");if(s===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(s+1),n=Ws(e,a);return r.fetcher.getLocalPath(n,r)}async fetch(e,r){let s=e.reference.indexOf(\"#\");if(s===-1)throw new Error(\"Invalid virtual package reference\");let a=e.reference.slice(s+1),n=Ws(e,a),c=await r.fetcher.fetch(n,r);return await this.ensureVirtualLink(e,c,r)}getLocatorFilename(e){return nI(e)}async ensureVirtualLink(e,r,s){let a=r.packageFs.getRealPath(),n=s.project.configuration.get(\"virtualFolder\"),c=this.getLocatorFilename(e),f=uo.makeVirtualPath(n,c,a),p=new _f(f,{baseFs:r.packageFs,pathUtils:J});return{...r,packageFs:p}}}});var FQ,gue=Xe(()=>{FQ=class t{static{this.protocol=\"virtual:\"}static isVirtualDescriptor(e){return!!e.range.startsWith(t.protocol)}static isVirtualLocator(e){return!!e.reference.startsWith(t.protocol)}supportsDescriptor(e,r){return t.isVirtualDescriptor(e)}supportsLocator(e,r){return t.isVirtualLocator(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){throw new Error('Assertion failed: calling \"bindDescriptor\" on a virtual descriptor is unsupported')}getResolutionDependencies(e,r){throw new Error('Assertion failed: calling \"getResolutionDependencies\" on a virtual descriptor is unsupported')}async getCandidates(e,r,s){throw new Error('Assertion failed: calling \"getCandidates\" on a virtual descriptor is unsupported')}async getSatisfying(e,r,s,a){throw new Error('Assertion failed: calling \"getSatisfying\" on a virtual descriptor is unsupported')}async resolve(e,r){throw new Error('Assertion failed: calling \"resolve\" on a virtual locator is unsupported')}}});var cI,O8=Xe(()=>{Dt();tm();cI=class{supports(e){return!!e.reference.startsWith(Ei.protocol)}getLocalPath(e,r){return this.getWorkspace(e,r).cwd}async fetch(e,r){let s=this.getWorkspace(e,r).cwd;return{packageFs:new Sn(s),prefixPath:vt.dot,localPath:s}}getWorkspace(e,r){return r.project.getWorkspaceByCwd(e.reference.slice(Ei.protocol.length))}}});function WB(t){return typeof t==\"object\"&&t!==null&&!Array.isArray(t)}function due(t){return typeof t>\"u\"?3:WB(t)?0:Array.isArray(t)?1:2}function U8(t,e){return Object.hasOwn(t,e)}function het(t){return WB(t)&&U8(t,\"onConflict\")&&typeof t.onConflict==\"string\"}function get(t){if(typeof t>\"u\")return{onConflict:\"default\",value:t};if(!het(t))return{onConflict:\"default\",value:t};if(U8(t,\"value\"))return t;let{onConflict:e,...r}=t;return{onConflict:e,value:r}}function mue(t,e){let r=WB(t)&&U8(t,e)?t[e]:void 0;return get(r)}function uI(t,e){return[t,e,yue]}function _8(t){return Array.isArray(t)?t[2]===yue:!1}function L8(t,e){if(WB(t)){let r={};for(let s of Object.keys(t))r[s]=L8(t[s],e);return uI(e,r)}return Array.isArray(t)?uI(e,t.map(r=>L8(r,e))):uI(e,t)}function M8(t,e,r,s,a){let n,c=[],f=a,p=0;for(let E=a-1;E>=s;--E){let[C,S]=t[E],{onConflict:P,value:I}=mue(S,r),R=due(I);if(R!==3){if(n??=R,R!==n||P===\"hardReset\"){p=f;break}if(R===2)return uI(C,I);if(c.unshift([C,I]),P===\"reset\"){p=E;break}P===\"extend\"&&E===s&&(s=0),f=E}}if(typeof n>\"u\")return null;let h=c.map(([E])=>E).join(\", \");switch(n){case 1:return uI(h,new Array().concat(...c.map(([E,C])=>C.map(S=>L8(S,E)))));case 0:{let E=Object.assign({},...c.map(([,R])=>R)),C=Object.keys(E),S={},P=t.map(([R,N])=>[R,mue(N,r).value]),I=pet(P,([R,N])=>{let U=due(N);return U!==0&&U!==3});if(I!==-1){let R=P.slice(I+1);for(let N of C)S[N]=M8(R,e,N,0,R.length)}else for(let R of C)S[R]=M8(P,e,R,p,P.length);return uI(h,S)}default:throw new Error(\"Assertion failed: Non-extendable value type\")}}function Eue(t){return M8(t.map(([e,r])=>[e,{\".\":r}]),[],\".\",0,t.length)}function YB(t){return _8(t)?t[1]:t}function NQ(t){let e=_8(t)?t[1]:t;if(Array.isArray(e))return e.map(r=>NQ(r));if(WB(e)){let r={};for(let[s,a]of Object.entries(e))r[s]=NQ(a);return r}return e}function H8(t){return _8(t)?t[0]:null}var pet,yue,Iue=Xe(()=>{pet=(t,e,r)=>{let s=[...t];return s.reverse(),s.findIndex(e,r)};yue=Symbol()});var OQ={};Vt(OQ,{getDefaultGlobalFolder:()=>G8,getHomeFolder:()=>fI,isFolderInside:()=>q8});function G8(){if(process.platform===\"win32\"){let t=fe.toPortablePath(process.env.LOCALAPPDATA||fe.join((0,j8.homedir)(),\"AppData\",\"Local\"));return J.resolve(t,\"Yarn/Berry\")}if(process.env.XDG_DATA_HOME){let t=fe.toPortablePath(process.env.XDG_DATA_HOME);return J.resolve(t,\"yarn/berry\")}return J.resolve(fI(),\".yarn/berry\")}function fI(){return fe.toPortablePath((0,j8.homedir)()||\"/usr/local/share\")}function q8(t,e){let r=J.relative(e,t);return r&&!r.startsWith(\"..\")&&!J.isAbsolute(r)}var j8,LQ=Xe(()=>{Dt();j8=Ie(\"os\")});var Bue=_((EMt,wue)=>{\"use strict\";var W8=Ie(\"https\"),Y8=Ie(\"http\"),{URL:Cue}=Ie(\"url\"),V8=class extends Y8.Agent{constructor(e){let{proxy:r,proxyRequestOptions:s,...a}=e;super(a),this.proxy=typeof r==\"string\"?new Cue(r):r,this.proxyRequestOptions=s||{}}createConnection(e,r){let s={...this.proxyRequestOptions,method:\"CONNECT\",host:this.proxy.hostname,port:this.proxy.port,path:`${e.host}:${e.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?\"keep-alive\":\"close\",host:`${e.host}:${e.port}`},agent:!1,timeout:e.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||\"\")}:${decodeURIComponent(this.proxy.password||\"\")}`).toString(\"base64\");s.headers[\"proxy-authorization\"]=`Basic ${n}`}this.proxy.protocol===\"https:\"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol===\"http:\"?Y8:W8).request(s);a.once(\"connect\",(n,c,f)=>{a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200?r(null,c):(c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null))}),a.once(\"timeout\",()=>{a.destroy(new Error(\"Proxy timeout\"))}),a.once(\"error\",n=>{a.removeAllListeners(),r(n,null)}),a.end()}},J8=class extends W8.Agent{constructor(e){let{proxy:r,proxyRequestOptions:s,...a}=e;super(a),this.proxy=typeof r==\"string\"?new Cue(r):r,this.proxyRequestOptions=s||{}}createConnection(e,r){let s={...this.proxyRequestOptions,method:\"CONNECT\",host:this.proxy.hostname,port:this.proxy.port,path:`${e.host}:${e.port}`,setHost:!1,headers:{...this.proxyRequestOptions.headers,connection:this.keepAlive?\"keep-alive\":\"close\",host:`${e.host}:${e.port}`},agent:!1,timeout:e.timeout||0};if(this.proxy.username||this.proxy.password){let n=Buffer.from(`${decodeURIComponent(this.proxy.username||\"\")}:${decodeURIComponent(this.proxy.password||\"\")}`).toString(\"base64\");s.headers[\"proxy-authorization\"]=`Basic ${n}`}this.proxy.protocol===\"https:\"&&(s.servername=this.proxy.hostname);let a=(this.proxy.protocol===\"http:\"?Y8:W8).request(s);a.once(\"connect\",(n,c,f)=>{if(a.removeAllListeners(),c.removeAllListeners(),n.statusCode===200){let p=super.createConnection({...e,socket:c});r(null,p)}else c.destroy(),r(new Error(`Bad response: ${n.statusCode}`),null)}),a.once(\"timeout\",()=>{a.destroy(new Error(\"Proxy timeout\"))}),a.once(\"error\",n=>{a.removeAllListeners(),r(n,null)}),a.end()}};wue.exports={HttpProxyAgent:V8,HttpsProxyAgent:J8}});var K8,vue,Sue,Due=Xe(()=>{K8=ut(Bue(),1),vue=K8.default.HttpProxyAgent,Sue=K8.default.HttpsProxyAgent});var Np=_((Fp,MQ)=>{\"use strict\";Object.defineProperty(Fp,\"__esModule\",{value:!0});var bue=[\"Int8Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Int16Array\",\"Uint16Array\",\"Int32Array\",\"Uint32Array\",\"Float32Array\",\"Float64Array\",\"BigInt64Array\",\"BigUint64Array\"];function met(t){return bue.includes(t)}var yet=[\"Function\",\"Generator\",\"AsyncGenerator\",\"GeneratorFunction\",\"AsyncGeneratorFunction\",\"AsyncFunction\",\"Observable\",\"Array\",\"Buffer\",\"Blob\",\"Object\",\"RegExp\",\"Date\",\"Error\",\"Map\",\"Set\",\"WeakMap\",\"WeakSet\",\"ArrayBuffer\",\"SharedArrayBuffer\",\"DataView\",\"Promise\",\"URL\",\"FormData\",\"URLSearchParams\",\"HTMLElement\",...bue];function Eet(t){return yet.includes(t)}var Iet=[\"null\",\"undefined\",\"string\",\"number\",\"bigint\",\"boolean\",\"symbol\"];function Cet(t){return Iet.includes(t)}function AI(t){return e=>typeof e===t}var{toString:Pue}=Object.prototype,VB=t=>{let e=Pue.call(t).slice(8,-1);if(/HTML\\w+Element/.test(e)&&be.domElement(t))return\"HTMLElement\";if(Eet(e))return e},pi=t=>e=>VB(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=VB(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=AI(\"undefined\");be.string=AI(\"string\");var wet=AI(\"number\");be.number=t=>wet(t)&&!be.nan(t);be.bigint=AI(\"bigint\");be.function_=AI(\"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=AI(\"symbol\");be.numericString=t=>be.string(t)&&!be.emptyStringOrWhitespace(t)&&!Number.isNaN(Number(t));be.array=(t,e)=>Array.isArray(t)?be.function_(e)?t.every(e):!0:!1;be.buffer=t=>{var e,r,s,a;return(a=(s=(r=(e=t)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.isBuffer)===null||s===void 0?void 0:s.call(r,t))!==null&&a!==void 0?a:!1};be.blob=t=>pi(\"Blob\")(t);be.nullOrUndefined=t=>be.null_(t)||be.undefined(t);be.object=t=>!be.null_(t)&&(typeof t==\"object\"||be.function_(t));be.iterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.iterator])};be.asyncIterable=t=>{var e;return be.function_((e=t)===null||e===void 0?void 0:e[Symbol.asyncIterator])};be.generator=t=>{var e,r;return be.iterable(t)&&be.function_((e=t)===null||e===void 0?void 0:e.next)&&be.function_((r=t)===null||r===void 0?void 0:r.throw)};be.asyncGenerator=t=>be.asyncIterable(t)&&be.function_(t.next)&&be.function_(t.throw);be.nativePromise=t=>pi(\"Promise\")(t);var Bet=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)||Bet(t);be.generatorFunction=pi(\"GeneratorFunction\");be.asyncGeneratorFunction=t=>VB(t)===\"AsyncGeneratorFunction\";be.asyncFunction=t=>VB(t)===\"AsyncFunction\";be.boundFunction=t=>be.function_(t)&&!t.hasOwnProperty(\"prototype\");be.regExp=pi(\"RegExp\");be.date=pi(\"Date\");be.error=pi(\"Error\");be.map=t=>pi(\"Map\")(t);be.set=t=>pi(\"Set\")(t);be.weakMap=t=>pi(\"WeakMap\")(t);be.weakSet=t=>pi(\"WeakSet\")(t);be.int8Array=pi(\"Int8Array\");be.uint8Array=pi(\"Uint8Array\");be.uint8ClampedArray=pi(\"Uint8ClampedArray\");be.int16Array=pi(\"Int16Array\");be.uint16Array=pi(\"Uint16Array\");be.int32Array=pi(\"Int32Array\");be.uint32Array=pi(\"Uint32Array\");be.float32Array=pi(\"Float32Array\");be.float64Array=pi(\"Float64Array\");be.bigInt64Array=pi(\"BigInt64Array\");be.bigUint64Array=pi(\"BigUint64Array\");be.arrayBuffer=pi(\"ArrayBuffer\");be.sharedArrayBuffer=pi(\"SharedArrayBuffer\");be.dataView=pi(\"DataView\");be.enumCase=(t,e)=>Object.values(e).includes(t);be.directInstanceOf=(t,e)=>Object.getPrototypeOf(t)===e.prototype;be.urlInstance=t=>pi(\"URL\")(t);be.urlString=t=>{if(!be.string(t))return!1;try{return new URL(t),!0}catch{return!1}};be.truthy=t=>!!t;be.falsy=t=>!t;be.nan=t=>Number.isNaN(t);be.primitive=t=>be.null_(t)||Cet(typeof t);be.integer=t=>Number.isInteger(t);be.safeInteger=t=>Number.isSafeInteger(t);be.plainObject=t=>{if(Pue.call(t)!==\"[object Object]\")return!1;let e=Object.getPrototypeOf(t);return e===null||e===Object.getPrototypeOf({})};be.typedArray=t=>met(VB(t));var vet=t=>be.safeInteger(t)&&t>=0;be.arrayLike=t=>!be.nullOrUndefined(t)&&!be.function_(t)&&vet(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 Det=1,bet=[\"innerHTML\",\"ownerDocument\",\"style\",\"attributes\",\"nodeValue\"];be.domElement=t=>be.object(t)&&t.nodeType===Det&&be.string(t.nodeName)&&!be.plainObject(t)&&bet.every(e=>e in t);be.observable=t=>{var e,r,s,a;return t?t===((r=(e=t)[Symbol.observable])===null||r===void 0?void 0:r.call(e))||t===((a=(s=t)[\"@@observable\"])===null||a===void 0?void 0:a.call(s)):!1};be.nodeStream=t=>be.object(t)&&be.function_(t.pipe)&&!be.observable(t);be.infinite=t=>t===1/0||t===-1/0;var xue=t=>e=>be.integer(e)&&Math.abs(e%2)===t;be.evenInteger=xue(0);be.oddInteger=xue(1);be.emptyArray=t=>be.array(t)&&t.length===0;be.nonEmptyArray=t=>be.array(t)&&t.length>0;be.emptyString=t=>be.string(t)&&t.length===0;var Pet=t=>be.string(t)&&!/\\S/.test(t);be.emptyStringOrWhitespace=t=>be.emptyString(t)||Pet(t);be.nonEmptyString=t=>be.string(t)&&t.length>0;be.nonEmptyStringAndNotWhitespace=t=>be.string(t)&&!be.emptyStringOrWhitespace(t);be.emptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length===0;be.nonEmptyObject=t=>be.object(t)&&!be.map(t)&&!be.set(t)&&Object.keys(t).length>0;be.emptySet=t=>be.set(t)&&t.size===0;be.nonEmptySet=t=>be.set(t)&&t.size>0;be.emptyMap=t=>be.map(t)&&t.size===0;be.nonEmptyMap=t=>be.map(t)&&t.size>0;be.propertyKey=t=>be.any([be.string,be.number,be.symbol],t);be.formData=t=>pi(\"FormData\")(t);be.urlSearchParams=t=>pi(\"URLSearchParams\")(t);var kue=(t,e,r)=>{if(!be.function_(e))throw new TypeError(`Invalid predicate: ${JSON.stringify(e)}`);if(r.length===0)throw new TypeError(\"Invalid number of values\");return t.call(r,e)};be.any=(t,...e)=>(be.array(t)?t:[t]).some(s=>kue(Array.prototype.some,s,e));be.all=(t,...e)=>kue(Array.prototype.every,t,e);var _t=(t,e,r,s={})=>{if(!t){let{multipleValues:a}=s,n=a?`received values of types ${[...new Set(r.map(c=>`\\`${be(c)}\\``))].join(\", \")}`:`received value of type \\`${be(r)}\\``;throw new TypeError(`Expected value which is \\`${e}\\`, ${n}.`)}};Fp.assert={undefined:t=>_t(be.undefined(t),\"undefined\",t),string:t=>_t(be.string(t),\"string\",t),number:t=>_t(be.number(t),\"number\",t),bigint:t=>_t(be.bigint(t),\"bigint\",t),function_:t=>_t(be.function_(t),\"Function\",t),null_:t=>_t(be.null_(t),\"null\",t),class_:t=>_t(be.class_(t),\"Class\",t),boolean:t=>_t(be.boolean(t),\"boolean\",t),symbol:t=>_t(be.symbol(t),\"symbol\",t),numericString:t=>_t(be.numericString(t),\"string with a number\",t),array:(t,e)=>{_t(be.array(t),\"Array\",t),e&&t.forEach(e)},buffer:t=>_t(be.buffer(t),\"Buffer\",t),blob:t=>_t(be.blob(t),\"Blob\",t),nullOrUndefined:t=>_t(be.nullOrUndefined(t),\"null or undefined\",t),object:t=>_t(be.object(t),\"Object\",t),iterable:t=>_t(be.iterable(t),\"Iterable\",t),asyncIterable:t=>_t(be.asyncIterable(t),\"AsyncIterable\",t),generator:t=>_t(be.generator(t),\"Generator\",t),asyncGenerator:t=>_t(be.asyncGenerator(t),\"AsyncGenerator\",t),nativePromise:t=>_t(be.nativePromise(t),\"native Promise\",t),promise:t=>_t(be.promise(t),\"Promise\",t),generatorFunction:t=>_t(be.generatorFunction(t),\"GeneratorFunction\",t),asyncGeneratorFunction:t=>_t(be.asyncGeneratorFunction(t),\"AsyncGeneratorFunction\",t),asyncFunction:t=>_t(be.asyncFunction(t),\"AsyncFunction\",t),boundFunction:t=>_t(be.boundFunction(t),\"Function\",t),regExp:t=>_t(be.regExp(t),\"RegExp\",t),date:t=>_t(be.date(t),\"Date\",t),error:t=>_t(be.error(t),\"Error\",t),map:t=>_t(be.map(t),\"Map\",t),set:t=>_t(be.set(t),\"Set\",t),weakMap:t=>_t(be.weakMap(t),\"WeakMap\",t),weakSet:t=>_t(be.weakSet(t),\"WeakSet\",t),int8Array:t=>_t(be.int8Array(t),\"Int8Array\",t),uint8Array:t=>_t(be.uint8Array(t),\"Uint8Array\",t),uint8ClampedArray:t=>_t(be.uint8ClampedArray(t),\"Uint8ClampedArray\",t),int16Array:t=>_t(be.int16Array(t),\"Int16Array\",t),uint16Array:t=>_t(be.uint16Array(t),\"Uint16Array\",t),int32Array:t=>_t(be.int32Array(t),\"Int32Array\",t),uint32Array:t=>_t(be.uint32Array(t),\"Uint32Array\",t),float32Array:t=>_t(be.float32Array(t),\"Float32Array\",t),float64Array:t=>_t(be.float64Array(t),\"Float64Array\",t),bigInt64Array:t=>_t(be.bigInt64Array(t),\"BigInt64Array\",t),bigUint64Array:t=>_t(be.bigUint64Array(t),\"BigUint64Array\",t),arrayBuffer:t=>_t(be.arrayBuffer(t),\"ArrayBuffer\",t),sharedArrayBuffer:t=>_t(be.sharedArrayBuffer(t),\"SharedArrayBuffer\",t),dataView:t=>_t(be.dataView(t),\"DataView\",t),enumCase:(t,e)=>_t(be.enumCase(t,e),\"EnumCase\",t),urlInstance:t=>_t(be.urlInstance(t),\"URL\",t),urlString:t=>_t(be.urlString(t),\"string with a URL\",t),truthy:t=>_t(be.truthy(t),\"truthy\",t),falsy:t=>_t(be.falsy(t),\"falsy\",t),nan:t=>_t(be.nan(t),\"NaN\",t),primitive:t=>_t(be.primitive(t),\"primitive\",t),integer:t=>_t(be.integer(t),\"integer\",t),safeInteger:t=>_t(be.safeInteger(t),\"integer\",t),plainObject:t=>_t(be.plainObject(t),\"plain object\",t),typedArray:t=>_t(be.typedArray(t),\"TypedArray\",t),arrayLike:t=>_t(be.arrayLike(t),\"array-like\",t),domElement:t=>_t(be.domElement(t),\"HTMLElement\",t),observable:t=>_t(be.observable(t),\"Observable\",t),nodeStream:t=>_t(be.nodeStream(t),\"Node.js Stream\",t),infinite:t=>_t(be.infinite(t),\"infinite number\",t),emptyArray:t=>_t(be.emptyArray(t),\"empty array\",t),nonEmptyArray:t=>_t(be.nonEmptyArray(t),\"non-empty array\",t),emptyString:t=>_t(be.emptyString(t),\"empty string\",t),emptyStringOrWhitespace:t=>_t(be.emptyStringOrWhitespace(t),\"empty string or whitespace\",t),nonEmptyString:t=>_t(be.nonEmptyString(t),\"non-empty string\",t),nonEmptyStringAndNotWhitespace:t=>_t(be.nonEmptyStringAndNotWhitespace(t),\"non-empty string and not whitespace\",t),emptyObject:t=>_t(be.emptyObject(t),\"empty object\",t),nonEmptyObject:t=>_t(be.nonEmptyObject(t),\"non-empty object\",t),emptySet:t=>_t(be.emptySet(t),\"empty set\",t),nonEmptySet:t=>_t(be.nonEmptySet(t),\"non-empty set\",t),emptyMap:t=>_t(be.emptyMap(t),\"empty map\",t),nonEmptyMap:t=>_t(be.nonEmptyMap(t),\"non-empty map\",t),propertyKey:t=>_t(be.propertyKey(t),\"PropertyKey\",t),formData:t=>_t(be.formData(t),\"FormData\",t),urlSearchParams:t=>_t(be.urlSearchParams(t),\"URLSearchParams\",t),evenInteger:t=>_t(be.evenInteger(t),\"even integer\",t),oddInteger:t=>_t(be.oddInteger(t),\"odd integer\",t),directInstanceOf:(t,e)=>_t(be.directInstanceOf(t,e),\"T\",t),inRange:(t,e)=>_t(be.inRange(t,e),\"in range\",t),any:(t,...e)=>_t(be.any(t,...e),\"predicate returns truthy for any value\",e,{multipleValues:!0}),all:(t,...e)=>_t(be.all(t,...e),\"predicate returns truthy for all values\",e,{multipleValues:!0})};Object.defineProperties(be,{class:{value:be.class_},function:{value:be.function_},null:{value:be.null_}});Object.defineProperties(Fp.assert,{class:{value:Fp.assert.class_},function:{value:Fp.assert.function_},null:{value:Fp.assert.null_}});Fp.default=be;MQ.exports=be;MQ.exports.default=be;MQ.exports.assert=Fp.assert});var Que=_((CMt,z8)=>{\"use strict\";var UQ=class extends Error{constructor(e){super(e||\"Promise was canceled\"),this.name=\"CancelError\"}get isCanceled(){return!0}},_Q=class t{static fn(e){return(...r)=>new t((s,a,n)=>{r.push(n),e(...r).then(s,a)})}constructor(e){this._cancelHandlers=[],this._isPending=!0,this._isCanceled=!1,this._rejectOnCancel=!0,this._promise=new Promise((r,s)=>{this._reject=s;let a=f=>{this._isPending=!1,r(f)},n=f=>{this._isPending=!1,s(f)},c=f=>{if(!this._isPending)throw new Error(\"The `onCancel` handler was attached after the promise settled.\");this._cancelHandlers.push(f)};return Object.defineProperties(c,{shouldReject:{get:()=>this._rejectOnCancel,set:f=>{this._rejectOnCancel=f}}}),e(a,n,c)})}then(e,r){return this._promise.then(e,r)}catch(e){return this._promise.catch(e)}finally(e){return this._promise.finally(e)}cancel(e){if(!(!this._isPending||this._isCanceled)){if(this._cancelHandlers.length>0)try{for(let r of this._cancelHandlers)r()}catch(r){this._reject(r)}this._isCanceled=!0,this._rejectOnCancel&&this._reject(new UQ(e))}}get isCanceled(){return this._isCanceled}};Object.setPrototypeOf(_Q.prototype,Promise.prototype);z8.exports=_Q;z8.exports.CancelError=UQ});var Tue=_((Z8,$8)=>{\"use strict\";Object.defineProperty(Z8,\"__esModule\",{value:!0});function xet(t){return t.encrypted}var X8=(t,e)=>{let r;typeof e==\"function\"?r={connect:e}:r=e;let s=typeof r.connect==\"function\",a=typeof r.secureConnect==\"function\",n=typeof r.close==\"function\",c=()=>{s&&r.connect(),xet(t)&&a&&(t.authorized?r.secureConnect():t.authorizationError||t.once(\"secureConnect\",r.secureConnect)),n&&t.once(\"close\",r.close)};t.writable&&!t.connecting?c():t.connecting?t.once(\"connect\",c):t.destroyed&&n&&r.close(t._hadError)};Z8.default=X8;$8.exports=X8;$8.exports.default=X8});var Rue=_((tH,rH)=>{\"use strict\";Object.defineProperty(tH,\"__esModule\",{value:!0});var ket=Tue(),Qet=Number(process.versions.node.split(\".\")[0]),eH=t=>{let e={start:Date.now(),socket:void 0,lookup:void 0,connect:void 0,secureConnect:void 0,upload:void 0,response:void 0,end:void 0,error:void 0,abort:void 0,phases:{wait:void 0,dns:void 0,tcp:void 0,tls:void 0,request:void 0,firstByte:void 0,download:void 0,total:void 0}};t.timings=e;let r=c=>{let f=c.emit.bind(c);c.emit=(p,...h)=>(p===\"error\"&&(e.error=Date.now(),e.phases.total=e.error-e.start,c.emit=f),f(p,...h))};r(t),t.prependOnceListener(\"abort\",()=>{e.abort=Date.now(),(!e.response||Qet>=13)&&(e.phases.total=Date.now()-e.start)});let s=c=>{e.socket=Date.now(),e.phases.wait=e.socket-e.start;let f=()=>{e.lookup=Date.now(),e.phases.dns=e.lookup-e.socket};c.prependOnceListener(\"lookup\",f),ket.default(c,{connect:()=>{e.connect=Date.now(),e.lookup===void 0&&(c.removeListener(\"lookup\",f),e.lookup=e.connect,e.phases.dns=e.lookup-e.socket),e.phases.tcp=e.connect-e.lookup},secureConnect:()=>{e.secureConnect=Date.now(),e.phases.tls=e.secureConnect-e.connect}})};t.socket?s(t.socket):t.prependOnceListener(\"socket\",s);let a=()=>{var c;e.upload=Date.now(),e.phases.request=e.upload-(c=e.secureConnect,c??e.connect)};return(typeof t.writableFinished==\"boolean\"?t.writableFinished:t.finished&&t.outputSize===0&&(!t.socket||t.socket.writableLength===0))?a():t.prependOnceListener(\"finish\",a),t.prependOnceListener(\"response\",c=>{e.response=Date.now(),e.phases.firstByte=e.response-e.upload,c.timings=e,r(c),c.prependOnceListener(\"end\",()=>{e.end=Date.now(),e.phases.download=e.end-e.response,e.phases.total=e.end-e.start})}),e};tH.default=eH;rH.exports=eH;rH.exports.default=eH});var _ue=_((wMt,sH)=>{\"use strict\";var{V4MAPPED:Tet,ADDRCONFIG:Ret,ALL:Uue,promises:{Resolver:Fue},lookup:Fet}=Ie(\"dns\"),{promisify:nH}=Ie(\"util\"),Net=Ie(\"os\"),pI=Symbol(\"cacheableLookupCreateConnection\"),iH=Symbol(\"cacheableLookupInstance\"),Nue=Symbol(\"expires\"),Oet=typeof Uue==\"number\",Oue=t=>{if(!(t&&typeof t.createConnection==\"function\"))throw new Error(\"Expected an Agent instance as the first argument\")},Let=t=>{for(let e of t)e.family!==6&&(e.address=`::ffff:${e.address}`,e.family=6)},Lue=()=>{let t=!1,e=!1;for(let r of Object.values(Net.networkInterfaces()))for(let s of r)if(!s.internal&&(s.family===\"IPv6\"?e=!0:t=!0,t&&e))return{has4:t,has6:e};return{has4:t,has6:e}},Met=t=>Symbol.iterator in t,Mue={ttl:!0},Uet={all:!0},HQ=class{constructor({cache:e=new Map,maxTtl:r=1/0,fallbackDuration:s=3600,errorTtl:a=.15,resolver:n=new Fue,lookup:c=Fet}={}){if(this.maxTtl=r,this.errorTtl=a,this._cache=e,this._resolver=n,this._dnsLookup=nH(c),this._resolver instanceof Fue?(this._resolve4=this._resolver.resolve4.bind(this._resolver),this._resolve6=this._resolver.resolve6.bind(this._resolver)):(this._resolve4=nH(this._resolver.resolve4.bind(this._resolver)),this._resolve6=nH(this._resolver.resolve6.bind(this._resolver))),this._iface=Lue(),this._pending={},this._nextRemovalTime=!1,this._hostnamesToFallback=new Set,s<1)this._fallback=!1;else{this._fallback=!0;let f=setInterval(()=>{this._hostnamesToFallback.clear()},s*1e3);f.unref&&f.unref()}this.lookup=this.lookup.bind(this),this.lookupAsync=this.lookupAsync.bind(this)}set servers(e){this.clear(),this._resolver.setServers(e)}get servers(){return this._resolver.getServers()}lookup(e,r,s){if(typeof r==\"function\"?(s=r,r={}):typeof r==\"number\"&&(r={family:r}),!s)throw new Error(\"Callback must be a function.\");this.lookupAsync(e,r).then(a=>{r.all?s(null,a):s(null,a.address,a.family,a.expires,a.ttl)},s)}async lookupAsync(e,r={}){typeof r==\"number\"&&(r={family:r});let s=await this.query(e);if(r.family===6){let a=s.filter(n=>n.family===6);r.hints&Tet&&(Oet&&r.hints&Uue||a.length===0)?Let(s):s=a}else r.family===4&&(s=s.filter(a=>a.family===4));if(r.hints&Ret){let{_iface:a}=this;s=s.filter(n=>n.family===6?a.has6:a.has4)}if(s.length===0){let a=new Error(`cacheableLookup ENOTFOUND ${e}`);throw a.code=\"ENOTFOUND\",a.hostname=e,a}return r.all?s:s[0]}async query(e){let r=await this._cache.get(e);if(!r){let s=this._pending[e];if(s)r=await s;else{let a=this.queryAndCache(e);this._pending[e]=a,r=await a}}return r=r.map(s=>({...s})),r}async _resolve(e){let r=async h=>{try{return await h}catch(E){if(E.code===\"ENODATA\"||E.code===\"ENOTFOUND\")return[];throw E}},[s,a]=await Promise.all([this._resolve4(e,Mue),this._resolve6(e,Mue)].map(h=>r(h))),n=0,c=0,f=0,p=Date.now();for(let h of s)h.family=4,h.expires=p+h.ttl*1e3,n=Math.max(n,h.ttl);for(let h of a)h.family=6,h.expires=p+h.ttl*1e3,c=Math.max(c,h.ttl);return s.length>0?a.length>0?f=Math.min(n,c):f=n:f=c,{entries:[...s,...a],cacheTtl:f}}async _lookup(e){try{return{entries:await this._dnsLookup(e,{all:!0}),cacheTtl:0}}catch{return{entries:[],cacheTtl:0}}}async _set(e,r,s){if(this.maxTtl>0&&s>0){s=Math.min(s,this.maxTtl)*1e3,r[Nue]=Date.now()+s;try{await this._cache.set(e,r,s)}catch(a){this.lookupAsync=async()=>{let n=new Error(\"Cache Error. Please recreate the CacheableLookup instance.\");throw n.cause=a,n}}Met(this._cache)&&this._tick(s)}}async queryAndCache(e){if(this._hostnamesToFallback.has(e))return this._dnsLookup(e,Uet);try{let r=await this._resolve(e);r.entries.length===0&&this._fallback&&(r=await this._lookup(e),r.entries.length!==0&&this._hostnamesToFallback.add(e));let s=r.entries.length===0?this.errorTtl:r.cacheTtl;return await this._set(e,r.entries,s),delete this._pending[e],r.entries}catch(r){throw delete this._pending[e],r}}_tick(e){let r=this._nextRemovalTime;(!r||e<r)&&(clearTimeout(this._removalTimeout),this._nextRemovalTime=e,this._removalTimeout=setTimeout(()=>{this._nextRemovalTime=!1;let s=1/0,a=Date.now();for(let[n,c]of this._cache){let f=c[Nue];a>=f?this._cache.delete(n):f<s&&(s=f)}s!==1/0&&this._tick(s-a)},e),this._removalTimeout.unref&&this._removalTimeout.unref())}install(e){if(Oue(e),pI in e)throw new Error(\"CacheableLookup has been already installed\");e[pI]=e.createConnection,e[iH]=this,e.createConnection=(r,s)=>(\"lookup\"in r||(r.lookup=this.lookup),e[pI](r,s))}uninstall(e){if(Oue(e),e[pI]){if(e[iH]!==this)throw new Error(\"The agent is not owned by this CacheableLookup instance\");e.createConnection=e[pI],delete e[pI],delete e[iH]}}updateInterfaceInfo(){let{_iface:e}=this;this._iface=Lue(),(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()}};sH.exports=HQ;sH.exports.default=HQ});var Gue=_((BMt,oH)=>{\"use strict\";var _et=typeof URL>\"u\"?Ie(\"url\").URL:URL,Het=\"text/plain\",jet=\"us-ascii\",Hue=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),Get=(t,{stripHash:e})=>{let r=t.match(/^data:([^,]*?),([^#]*?)(?:#(.*))?$/);if(!r)throw new Error(`Invalid URL: ${t}`);let s=r[1].split(\";\"),a=r[2],n=e?\"\":r[3],c=!1;s[s.length-1]===\"base64\"&&(s.pop(),c=!0);let f=(s.shift()||\"\").toLowerCase(),h=[...s.map(E=>{let[C,S=\"\"]=E.split(\"=\").map(P=>P.trim());return C===\"charset\"&&(S=S.toLowerCase(),S===jet)?\"\":`${C}${S?`=${S}`:\"\"}`}).filter(Boolean)];return c&&h.push(\"base64\"),(h.length!==0||f&&f!==Het)&&h.unshift(f),`data:${h.join(\";\")},${c?a.trim():a}${n?`#${n}`:\"\"}`},jue=(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 Get(t,e);let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new _et(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash&&(a.hash=\"\"),a.pathname&&(a.pathname=a.pathname.replace(/((?!:).|^)\\/{2,}/g,(n,c)=>/^(?!\\/)/g.test(c)?`${c}/`:\"/\")),a.pathname&&(a.pathname=decodeURI(a.pathname)),e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let n=a.pathname.split(\"/\"),c=n[n.length-1];Hue(c,e.removeDirectoryIndex)&&(n=n.slice(0,n.length-1),a.pathname=n.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.([a-z\\-\\d]{2,63})\\.([a-z.]{2,5})$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let n of[...a.searchParams.keys()])Hue(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};oH.exports=jue;oH.exports.default=jue});var Yue=_((vMt,Wue)=>{Wue.exports=que;function que(t,e){if(t&&e)return que(t)(e);if(typeof t!=\"function\")throw new TypeError(\"need wrapper function\");return Object.keys(t).forEach(function(s){r[s]=t[s]}),r;function r(){for(var s=new Array(arguments.length),a=0;a<s.length;a++)s[a]=arguments[a];var n=t.apply(this,s),c=s[s.length-1];return typeof n==\"function\"&&n!==c&&Object.keys(c).forEach(function(f){n[f]=c[f]}),n}}});var lH=_((SMt,aH)=>{var Vue=Yue();aH.exports=Vue(jQ);aH.exports.strict=Vue(Jue);jQ.proto=jQ(function(){Object.defineProperty(Function.prototype,\"once\",{value:function(){return jQ(this)},configurable:!0}),Object.defineProperty(Function.prototype,\"onceStrict\",{value:function(){return Jue(this)},configurable:!0})});function jQ(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function Jue(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 cH=_((DMt,zue)=>{var qet=lH(),Wet=function(){},Yet=function(t){return t.setHeader&&typeof t.abort==\"function\"},Vet=function(t){return t.stdio&&Array.isArray(t.stdio)&&t.stdio.length===3},Kue=function(t,e,r){if(typeof e==\"function\")return Kue(t,null,e);e||(e={}),r=qet(r||Wet);var s=t._writableState,a=t._readableState,n=e.readable||e.readable!==!1&&t.readable,c=e.writable||e.writable!==!1&&t.writable,f=function(){t.writable||p()},p=function(){c=!1,n||r.call(t)},h=function(){n=!1,c||r.call(t)},E=function(I){r.call(t,I?new Error(\"exited with error code: \"+I):null)},C=function(I){r.call(t,I)},S=function(){if(n&&!(a&&a.ended))return r.call(t,new Error(\"premature close\"));if(c&&!(s&&s.ended))return r.call(t,new Error(\"premature close\"))},P=function(){t.req.on(\"finish\",p)};return Yet(t)?(t.on(\"complete\",p),t.on(\"abort\",S),t.req?P():t.on(\"request\",P)):c&&!s&&(t.on(\"end\",f),t.on(\"close\",f)),Vet(t)&&t.on(\"exit\",E),t.on(\"end\",h),t.on(\"finish\",p),e.error!==!1&&t.on(\"error\",C),t.on(\"close\",S),function(){t.removeListener(\"complete\",p),t.removeListener(\"abort\",S),t.removeListener(\"request\",P),t.req&&t.req.removeListener(\"finish\",p),t.removeListener(\"end\",f),t.removeListener(\"close\",f),t.removeListener(\"finish\",p),t.removeListener(\"exit\",E),t.removeListener(\"end\",h),t.removeListener(\"error\",C),t.removeListener(\"close\",S)}};zue.exports=Kue});var $ue=_((bMt,Zue)=>{var Jet=lH(),Ket=cH(),uH=Ie(\"fs\"),JB=function(){},zet=/^v?\\.0/.test(process.version),GQ=function(t){return typeof t==\"function\"},Xet=function(t){return!zet||!uH?!1:(t instanceof(uH.ReadStream||JB)||t instanceof(uH.WriteStream||JB))&&GQ(t.close)},Zet=function(t){return t.setHeader&&GQ(t.abort)},$et=function(t,e,r,s){s=Jet(s);var a=!1;t.on(\"close\",function(){a=!0}),Ket(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,Xet(t))return t.close(JB);if(Zet(t))return t.abort();if(GQ(t.destroy))return t.destroy();s(c||new Error(\"stream was destroyed\"))}}},Xue=function(t){t()},ett=function(t,e){return t.pipe(e)},ttt=function(){var t=Array.prototype.slice.call(arguments),e=GQ(t[t.length-1]||JB)&&t.pop()||JB;if(Array.isArray(t[0])&&(t=t[0]),t.length<2)throw new Error(\"pump requires two streams per minimum\");var r,s=t.map(function(a,n){var c=n<t.length-1,f=n>0;return $et(a,c,f,function(p){r||(r=p),p&&s.forEach(Xue),!c&&(s.forEach(Xue),e(r))})});return t.reduce(ett)};Zue.exports=ttt});var tfe=_((PMt,efe)=>{\"use strict\";var{PassThrough:rtt}=Ie(\"stream\");efe.exports=t=>{t={...t};let{array:e}=t,{encoding:r}=t,s=r===\"buffer\",a=!1;e?a=!(r||s):r=r||\"utf8\",s&&(r=null);let n=new rtt({objectMode:a});r&&n.setEncoding(r);let c=0,f=[];return n.on(\"data\",p=>{f.push(p),a?c=f.length:c+=p.length}),n.getBufferedValue=()=>e?f:s?Buffer.concat(f,c):f.join(\"\"),n.getBufferedLength=()=>c,n}});var rfe=_((xMt,hI)=>{\"use strict\";var ntt=$ue(),itt=tfe(),qQ=class extends Error{constructor(){super(\"maxBuffer exceeded\"),this.name=\"MaxBufferError\"}};async function WQ(t,e){if(!t)return Promise.reject(new Error(\"Expected a stream\"));e={maxBuffer:1/0,...e};let{maxBuffer:r}=e,s;return await new Promise((a,n)=>{let c=f=>{f&&(f.bufferedData=s.getBufferedValue()),n(f)};s=ntt(t,itt(e),f=>{if(f){c(f);return}a()}),s.on(\"data\",()=>{s.getBufferedLength()>r&&c(new qQ)})}),s.getBufferedValue()}hI.exports=WQ;hI.exports.default=WQ;hI.exports.buffer=(t,e)=>WQ(t,{...e,encoding:\"buffer\"});hI.exports.array=(t,e)=>WQ(t,{...e,array:!0});hI.exports.MaxBufferError=qQ});var ife=_((QMt,nfe)=>{\"use strict\";var stt=new Set([200,203,204,206,300,301,308,404,405,410,414,501]),ott=new Set([200,203,204,300,301,302,303,307,308,404,405,410,414,501]),att=new Set([500,502,503,504]),ltt={date:!0,connection:!0,\"keep-alive\":!0,\"proxy-authenticate\":!0,\"proxy-authorization\":!0,te:!0,trailer:!0,\"transfer-encoding\":!0,upgrade:!0},ctt={\"content-length\":!0,\"content-encoding\":!0,\"transfer-encoding\":!0,\"content-range\":!0};function nm(t){let e=parseInt(t,10);return isFinite(e)?e:0}function utt(t){return t?att.has(t.status):!0}function fH(t){let e={};if(!t)return e;let r=t.trim().split(/,/);for(let s of r){let[a,n]=s.split(/=/,2);e[a.trim()]=n===void 0?!0:n.trim().replace(/^\"|\"$/g,\"\")}return e}function ftt(t){let e=[];for(let r in t){let s=t[r];e.push(s===!0?r:r+\"=\"+s)}if(e.length)return e.join(\", \")}nfe.exports=class{constructor(e,r,{shared:s,cacheHeuristic:a,immutableMinTimeToLive:n,ignoreCargoCult:c,_fromObject:f}={}){if(f){this._fromObject(f);return}if(!r||!r.headers)throw Error(\"Response headers missing\");this._assertRequestHasHeaders(e),this._responseTime=this.now(),this._isShared=s!==!1,this._cacheHeuristic=a!==void 0?a:.1,this._immutableMinTtl=n!==void 0?n:24*3600*1e3,this._status=\"status\"in r?r.status:200,this._resHeaders=r.headers,this._rescc=fH(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=fH(e.headers[\"cache-control\"]),c&&\"pre-check\"in this._rescc&&\"post-check\"in this._rescc&&(delete this._rescc[\"pre-check\"],delete this._rescc[\"post-check\"],delete this._rescc[\"no-cache\"],delete this._rescc[\"no-store\"],delete this._rescc[\"must-revalidate\"],this._resHeaders=Object.assign({},this._resHeaders,{\"cache-control\":ftt(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())&&ott.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||stt.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=fH(e.headers[\"cache-control\"]);return r[\"no-cache\"]||/no-cache/.test(e.headers.pragma)||r[\"max-age\"]&&this.age()>r[\"max-age\"]||r[\"min-fresh\"]&&this.timeToLive()<1e3*r[\"min-fresh\"]||this.stale()&&!(r[\"max-stale\"]&&!this._rescc[\"must-revalidate\"]&&(r[\"max-stale\"]===!0||r[\"max-stale\"]>this.age()-this.maxAge()))?!1:this._requestMatches(e,!1)}_requestMatches(e,r){return(!this._url||this._url===e.url)&&this._host===e.headers.host&&(!e.method||this._method===e.method||r&&e.method===\"HEAD\")&&this._varyMatches(e)}_allowsStoringAuthenticated(){return this._rescc[\"must-revalidate\"]||this._rescc.public||this._rescc[\"s-maxage\"]}_varyMatches(e){if(!this._resHeaders.vary)return!0;if(this._resHeaders.vary===\"*\")return!1;let r=this._resHeaders.vary.trim().toLowerCase().split(/\\s*,\\s*/);for(let s of r)if(e.headers[s]!==this._reqHeaders[s])return!1;return!0}_copyWithoutHopByHopHeaders(e){let r={};for(let s in e)ltt[s]||(r[s]=e[s]);if(e.connection){let s=e.connection.trim().split(/\\s*,\\s*/);for(let a of s)delete r[a]}if(r.warning){let s=r.warning.split(/,/).filter(a=>!/^\\s*1[0-9][0-9]/.test(a));s.length?r.warning=s.join(\",\").trim():delete r.warning}return r}responseHeaders(){let e=this._copyWithoutHopByHopHeaders(this._resHeaders),r=this.age();return r>3600*24&&!this._hasExplicitExpiration()&&this.maxAge()>3600*24&&(e.warning=(e.warning?`${e.warning}, `:\"\")+'113 - \"rfc7234 5.5.4\"'),e.age=`${Math.round(r)}`,e.date=new Date(this.now()).toUTCString(),e}date(){let e=Date.parse(this._resHeaders.date);return isFinite(e)?e:this._responseTime}age(){let e=this._ageValue(),r=(this.now()-this._responseTime)/1e3;return e+r}_ageValue(){return nm(this._resHeaders.age)}maxAge(){if(!this.storable()||this._rescc[\"no-cache\"]||this._isShared&&this._resHeaders[\"set-cookie\"]&&!this._rescc.public&&!this._rescc.immutable||this._resHeaders.vary===\"*\")return 0;if(this._isShared){if(this._rescc[\"proxy-revalidate\"])return 0;if(this._rescc[\"s-maxage\"])return nm(this._rescc[\"s-maxage\"])}if(this._rescc[\"max-age\"])return nm(this._rescc[\"max-age\"]);let e=this._rescc.immutable?this._immutableMinTtl:0,r=this.date();if(this._resHeaders.expires){let s=Date.parse(this._resHeaders.expires);return Number.isNaN(s)||s<r?0:Math.max(e,(s-r)/1e3)}if(this._resHeaders[\"last-modified\"]){let s=Date.parse(this._resHeaders[\"last-modified\"]);if(isFinite(s)&&r>s)return Math.max(e,(r-s)/1e3*this._cacheHeuristic)}return e}timeToLive(){let e=this.maxAge()-this.age(),r=e+nm(this._rescc[\"stale-if-error\"]),s=e+nm(this._rescc[\"stale-while-revalidate\"]);return Math.max(0,e,r,s)*1e3}stale(){return this.maxAge()<=this.age()}_useStaleIfError(){return this.maxAge()+nm(this._rescc[\"stale-if-error\"])>this.age()}useStaleWhileRevalidate(){return this.maxAge()+nm(this._rescc[\"stale-while-revalidate\"])>this.age()}static fromObject(e){return new this(void 0,void 0,{_fromObject:e})}_fromObject(e){if(this._responseTime)throw Error(\"Reinitialized\");if(!e||e.v!==1)throw Error(\"Invalid serialization\");this._responseTime=e.t,this._isShared=e.sh,this._cacheHeuristic=e.ch,this._immutableMinTtl=e.imm!==void 0?e.imm:24*3600*1e3,this._status=e.st,this._resHeaders=e.resh,this._rescc=e.rescc,this._method=e.m,this._url=e.u,this._host=e.h,this._noAuthorization=e.a,this._reqHeaders=e.reqh,this._reqcc=e.reqcc}toObject(){return{v:1,t:this._responseTime,sh:this._isShared,ch:this._cacheHeuristic,imm:this._immutableMinTtl,st:this._status,resh:this._resHeaders,rescc:this._rescc,m:this._method,u:this._url,h:this._host,a:this._noAuthorization,reqh:this._reqHeaders,reqcc:this._reqcc}}revalidationHeaders(e){this._assertRequestHasHeaders(e);let r=this._copyWithoutHopByHopHeaders(e.headers);if(delete r[\"if-range\"],!this._requestMatches(e,!0)||!this.storable())return delete r[\"if-none-match\"],delete r[\"if-modified-since\"],r;if(this._resHeaders.etag&&(r[\"if-none-match\"]=r[\"if-none-match\"]?`${r[\"if-none-match\"]}, ${this._resHeaders.etag}`:this._resHeaders.etag),r[\"accept-ranges\"]||r[\"if-match\"]||r[\"if-unmodified-since\"]||this._method&&this._method!=\"GET\"){if(delete r[\"if-modified-since\"],r[\"if-none-match\"]){let a=r[\"if-none-match\"].split(/,/).filter(n=>!/^\\s*W\\//.test(n));a.length?r[\"if-none-match\"]=a.join(\",\").trim():delete r[\"if-none-match\"]}}else this._resHeaders[\"last-modified\"]&&!r[\"if-modified-since\"]&&(r[\"if-modified-since\"]=this._resHeaders[\"last-modified\"]);return r}revalidatedPolicy(e,r){if(this._assertRequestHasHeaders(e),this._useStaleIfError()&&utt(r))return{modified:!1,matches:!1,policy:this};if(!r||!r.headers)throw Error(\"Response headers missing\");let s=!1;if(r.status!==void 0&&r.status!=304?s=!1:r.headers.etag&&!/^\\s*W\\//.test(r.headers.etag)?s=this._resHeaders.etag&&this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag:this._resHeaders.etag&&r.headers.etag?s=this._resHeaders.etag.replace(/^\\s*W\\//,\"\")===r.headers.etag.replace(/^\\s*W\\//,\"\"):this._resHeaders[\"last-modified\"]?s=this._resHeaders[\"last-modified\"]===r.headers[\"last-modified\"]:!this._resHeaders.etag&&!this._resHeaders[\"last-modified\"]&&!r.headers.etag&&!r.headers[\"last-modified\"]&&(s=!0),!s)return{policy:new this.constructor(e,r),modified:r.status!=304,matches:!1};let a={};for(let c in this._resHeaders)a[c]=c in r.headers&&!ctt[c]?r.headers[c]:this._resHeaders[c];let n=Object.assign({},r,{status:this._status,method:this._method,headers:a});return{policy:new this.constructor(e,n,{shared:this._isShared,cacheHeuristic:this._cacheHeuristic,immutableMinTimeToLive:this._immutableMinTtl}),modified:!1,matches:!0}}}});var YQ=_((TMt,sfe)=>{\"use strict\";sfe.exports=t=>{let e={};for(let[r,s]of Object.entries(t))e[r.toLowerCase()]=s;return e}});var afe=_((RMt,ofe)=>{\"use strict\";var Att=Ie(\"stream\").Readable,ptt=YQ(),AH=class extends Att{constructor(e,r,s,a){if(typeof e!=\"number\")throw new TypeError(\"Argument `statusCode` should be a number\");if(typeof r!=\"object\")throw new TypeError(\"Argument `headers` should be an object\");if(!(s instanceof Buffer))throw new TypeError(\"Argument `body` should be a buffer\");if(typeof a!=\"string\")throw new TypeError(\"Argument `url` should be a string\");super(),this.statusCode=e,this.headers=ptt(r),this.body=s,this.url=a}_read(){this.push(this.body),this.push(null)}};ofe.exports=AH});var cfe=_((FMt,lfe)=>{\"use strict\";var htt=[\"destroy\",\"setTimeout\",\"socket\",\"headers\",\"trailers\",\"rawHeaders\",\"statusCode\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"rawTrailers\",\"statusMessage\"];lfe.exports=(t,e)=>{let r=new Set(Object.keys(t).concat(htt));for(let s of r)s in e||(e[s]=typeof t[s]==\"function\"?t[s].bind(t):t[s])}});var ffe=_((NMt,ufe)=>{\"use strict\";var gtt=Ie(\"stream\").PassThrough,dtt=cfe(),mtt=t=>{if(!(t&&t.pipe))throw new TypeError(\"Parameter `response` must be a response stream.\");let e=new gtt;return dtt(t,e),t.pipe(e)};ufe.exports=mtt});var Afe=_(pH=>{pH.stringify=function t(e){if(typeof e>\"u\")return e;if(e&&Buffer.isBuffer(e))return JSON.stringify(\":base64:\"+e.toString(\"base64\"));if(e&&e.toJSON&&(e=e.toJSON()),e&&typeof e==\"object\"){var r=\"\",s=Array.isArray(e);r=s?\"[\":\"{\";var a=!0;for(var n in e){var c=typeof e[n]==\"function\"||!s&&typeof e[n]>\"u\";Object.hasOwnProperty.call(e,n)&&!c&&(a||(r+=\",\"),a=!1,s?e[n]==null?r+=\"null\":r+=t(e[n]):e[n]!==void 0&&(r+=t(n)+\":\"+t(e[n])))}return r+=s?\"]\":\"}\",r}else return typeof e==\"string\"?JSON.stringify(/^:/.test(e)?\":\"+e:e):typeof e>\"u\"?\"null\":JSON.stringify(e)};pH.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 dfe=_((LMt,gfe)=>{\"use strict\";var ytt=Ie(\"events\"),pfe=Afe(),Ett=t=>{let e={redis:\"@keyv/redis\",rediss:\"@keyv/redis\",mongodb:\"@keyv/mongo\",mongo:\"@keyv/mongo\",sqlite:\"@keyv/sqlite\",postgresql:\"@keyv/postgres\",postgres:\"@keyv/postgres\",mysql:\"@keyv/mysql\",etcd:\"@keyv/etcd\",offline:\"@keyv/offline\",tiered:\"@keyv/tiered\"};if(t.adapter||t.uri){let r=t.adapter||/^[^:+]*/.exec(t.uri)[0];return new(Ie(e[r]))(t)}return new Map},hfe=[\"sqlite\",\"postgres\",\"mysql\",\"mongo\",\"redis\",\"tiered\"],hH=class extends ytt{constructor(e,{emitErrors:r=!0,...s}={}){if(super(),this.opts={namespace:\"keyv\",serialize:pfe.stringify,deserialize:pfe.parse,...typeof e==\"string\"?{uri:e}:e,...s},!this.opts.store){let n={...this.opts};this.opts.store=Ett(n)}if(this.opts.compression){let n=this.opts.compression;this.opts.serialize=n.serialize.bind(n),this.opts.deserialize=n.deserialize.bind(n)}typeof this.opts.store.on==\"function\"&&r&&this.opts.store.on(\"error\",n=>this.emit(\"error\",n)),this.opts.store.namespace=this.opts.namespace;let a=n=>async function*(){for await(let[c,f]of typeof n==\"function\"?n(this.opts.store.namespace):n){let p=await this.opts.deserialize(f);if(!(this.opts.store.namespace&&!c.includes(this.opts.store.namespace))){if(typeof p.expires==\"number\"&&Date.now()>p.expires){this.delete(c);continue}yield[this._getKeyUnprefix(c),p.value]}}};typeof this.opts.store[Symbol.iterator]==\"function\"&&this.opts.store instanceof Map?this.iterator=a(this.opts.store):typeof this.opts.store.iterator==\"function\"&&this.opts.store.opts&&this._checkIterableAdaptar()&&(this.iterator=a(this.opts.store.iterator.bind(this.opts.store)))}_checkIterableAdaptar(){return hfe.includes(this.opts.store.opts.dialect)||hfe.findIndex(e=>this.opts.store.opts.url.includes(e))>=0}_getKeyPrefix(e){return`${this.opts.namespace}:${e}`}_getKeyPrefixArray(e){return e.map(r=>`${this.opts.namespace}:${r}`)}_getKeyUnprefix(e){return e.split(\":\").splice(1).join(\":\")}get(e,r){let{store:s}=this.opts,a=Array.isArray(e),n=a?this._getKeyPrefixArray(e):this._getKeyPrefix(e);if(a&&s.getMany===void 0){let c=[];for(let f of n)c.push(Promise.resolve().then(()=>s.get(f)).then(p=>typeof p==\"string\"?this.opts.deserialize(p):this.opts.compression?this.opts.deserialize(p):p).then(p=>{if(p!=null)return typeof p.expires==\"number\"&&Date.now()>p.expires?this.delete(f).then(()=>{}):r&&r.raw?p:p.value}));return Promise.allSettled(c).then(f=>{let p=[];for(let h of f)p.push(h.value);return p})}return Promise.resolve().then(()=>a?s.getMany(n):s.get(n)).then(c=>typeof c==\"string\"?this.opts.deserialize(c):this.opts.compression?this.opts.deserialize(c):c).then(c=>{if(c!=null)return a?c.map((f,p)=>{if(typeof f==\"string\"&&(f=this.opts.deserialize(f)),f!=null){if(typeof f.expires==\"number\"&&Date.now()>f.expires){this.delete(e[p]).then(()=>{});return}return r&&r.raw?f:f.value}}):typeof c.expires==\"number\"&&Date.now()>c.expires?this.delete(e).then(()=>{}):r&&r.raw?c:c.value})}set(e,r,s){let a=this._getKeyPrefix(e);typeof s>\"u\"&&(s=this.opts.ttl),s===0&&(s=void 0);let{store:n}=this.opts;return Promise.resolve().then(()=>{let c=typeof s==\"number\"?Date.now()+s:null;return typeof r==\"symbol\"&&this.emit(\"error\",\"symbol cannot be serialized\"),r={value:r,expires:c},this.opts.serialize(r)}).then(c=>n.set(a,c,s)).then(()=>!0)}delete(e){let{store:r}=this.opts;if(Array.isArray(e)){let a=this._getKeyPrefixArray(e);if(r.deleteMany===void 0){let n=[];for(let c of a)n.push(r.delete(c));return Promise.allSettled(n).then(c=>c.every(f=>f.value===!0))}return Promise.resolve().then(()=>r.deleteMany(a))}let s=this._getKeyPrefix(e);return Promise.resolve().then(()=>r.delete(s))}clear(){let{store:e}=this.opts;return Promise.resolve().then(()=>e.clear())}has(e){let r=this._getKeyPrefix(e),{store:s}=this.opts;return Promise.resolve().then(async()=>typeof s.has==\"function\"?s.has(r):await s.get(r)!==void 0)}disconnect(){let{store:e}=this.opts;if(typeof e.disconnect==\"function\")return e.disconnect()}};gfe.exports=hH});var Efe=_((UMt,yfe)=>{\"use strict\";var Itt=Ie(\"events\"),VQ=Ie(\"url\"),Ctt=Gue(),wtt=rfe(),gH=ife(),mfe=afe(),Btt=YQ(),vtt=ffe(),Stt=dfe(),KB=class t{constructor(e,r){if(typeof e!=\"function\")throw new TypeError(\"Parameter `request` must be a function\");return this.cache=new Stt({uri:typeof r==\"string\"&&r,store:typeof r!=\"string\"&&r,namespace:\"cacheable-request\"}),this.createCacheableRequest(e)}createCacheableRequest(e){return(r,s)=>{let a;if(typeof r==\"string\")a=dH(VQ.parse(r)),r={};else if(r instanceof VQ.URL)a=dH(VQ.parse(r.toString())),r={};else{let[C,...S]=(r.path||\"\").split(\"?\"),P=S.length>0?`?${S.join(\"?\")}`:\"\";a=dH({...r,pathname:C,search:P})}r={headers:{},method:\"GET\",cache:!0,strictTtl:!1,automaticFailover:!1,...r,...Dtt(a)},r.headers=Btt(r.headers);let n=new Itt,c=Ctt(VQ.format(a),{stripWWW:!1,removeTrailingSlash:!1,stripAuthentication:!1}),f=`${r.method}:${c}`,p=!1,h=!1,E=C=>{h=!0;let S=!1,P,I=new Promise(N=>{P=()=>{S||(S=!0,N())}}),R=N=>{if(p&&!C.forceRefresh){N.status=N.statusCode;let W=gH.fromObject(p.cachePolicy).revalidatedPolicy(C,N);if(!W.modified){let ee=W.policy.responseHeaders();N=new mfe(p.statusCode,ee,p.body,p.url),N.cachePolicy=W.policy,N.fromCache=!0}}N.fromCache||(N.cachePolicy=new gH(C,N,C),N.fromCache=!1);let U;C.cache&&N.cachePolicy.storable()?(U=vtt(N),(async()=>{try{let W=wtt.buffer(N);if(await Promise.race([I,new Promise(le=>N.once(\"end\",le))]),S)return;let ee=await W,ie={cachePolicy:N.cachePolicy.toObject(),url:N.url,statusCode:N.fromCache?p.statusCode:N.statusCode,body:ee},ue=C.strictTtl?N.cachePolicy.timeToLive():void 0;C.maxTtl&&(ue=ue?Math.min(ue,C.maxTtl):C.maxTtl),await this.cache.set(f,ie,ue)}catch(W){n.emit(\"error\",new t.CacheError(W))}})()):C.cache&&p&&(async()=>{try{await this.cache.delete(f)}catch(W){n.emit(\"error\",new t.CacheError(W))}})(),n.emit(\"response\",U||N),typeof s==\"function\"&&s(U||N)};try{let N=e(C,R);N.once(\"error\",P),N.once(\"abort\",P),n.emit(\"request\",N)}catch(N){n.emit(\"error\",new t.RequestError(N))}};return(async()=>{let C=async P=>{await Promise.resolve();let I=P.cache?await this.cache.get(f):void 0;if(typeof I>\"u\")return E(P);let R=gH.fromObject(I.cachePolicy);if(R.satisfiesWithoutRevalidation(P)&&!P.forceRefresh){let N=R.responseHeaders(),U=new mfe(I.statusCode,N,I.body,I.url);U.cachePolicy=R,U.fromCache=!0,n.emit(\"response\",U),typeof s==\"function\"&&s(U)}else p=I,P.headers=R.revalidationHeaders(P),E(P)},S=P=>n.emit(\"error\",new t.CacheError(P));this.cache.once(\"error\",S),n.on(\"response\",()=>this.cache.removeListener(\"error\",S));try{await C(r)}catch(P){r.automaticFailover&&!h&&E(r),n.emit(\"error\",new t.CacheError(P))}})(),n}}};function Dtt(t){let e={...t};return e.path=`${t.pathname||\"/\"}${t.search||\"\"}`,delete e.pathname,delete e.search,e}function dH(t){return{protocol:t.protocol,auth:t.auth,hostname:t.hostname||t.host||\"localhost\",port:t.port,pathname:t.pathname,search:t.search}}KB.RequestError=class extends Error{constructor(t){super(t.message),this.name=\"RequestError\",Object.assign(this,t)}};KB.CacheError=class extends Error{constructor(t){super(t.message),this.name=\"CacheError\",Object.assign(this,t)}};yfe.exports=KB});var Cfe=_((jMt,Ife)=>{\"use strict\";var btt=[\"aborted\",\"complete\",\"headers\",\"httpVersion\",\"httpVersionMinor\",\"httpVersionMajor\",\"method\",\"rawHeaders\",\"rawTrailers\",\"setTimeout\",\"socket\",\"statusCode\",\"statusMessage\",\"trailers\",\"url\"];Ife.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(btt)),s={};for(let a of r)a in e||(s[a]={get(){let n=t[a];return typeof n==\"function\"?n.bind(t):n},set(n){t[a]=n},enumerable:!0,configurable:!1});return Object.defineProperties(e,s),t.once(\"aborted\",()=>{e.destroy(),e.emit(\"aborted\")}),t.once(\"close\",()=>{t.complete&&e.readable?e.once(\"end\",()=>{e.emit(\"close\")}):e.emit(\"close\")}),e}});var Bfe=_((GMt,wfe)=>{\"use strict\";var{Transform:Ptt,PassThrough:xtt}=Ie(\"stream\"),mH=Ie(\"zlib\"),ktt=Cfe();wfe.exports=t=>{let e=(t.headers[\"content-encoding\"]||\"\").toLowerCase();if(![\"gzip\",\"deflate\",\"br\"].includes(e))return t;let r=e===\"br\";if(r&&typeof mH.createBrotliDecompress!=\"function\")return t.destroy(new Error(\"Brotli is not supported on Node.js < 12\")),t;let s=!0,a=new Ptt({transform(f,p,h){s=!1,h(null,f)},flush(f){f()}}),n=new xtt({autoDestroy:!1,destroy(f,p){t.destroy(),p(f)}}),c=r?mH.createBrotliDecompress():mH.createUnzip();return c.once(\"error\",f=>{if(s&&!t.readable){n.end();return}n.destroy(f)}),ktt(t,n),t.pipe(a).pipe(c).pipe(n),n}});var EH=_((qMt,vfe)=>{\"use strict\";var yH=class{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError(\"`maxSize` must be a number greater than 0\");this.maxSize=e.maxSize,this.onEviction=e.onEviction,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){if(this.cache.set(e,r),this._size++,this._size>=this.maxSize){if(this._size=0,typeof this.onEviction==\"function\")for(let[s,a]of this.oldCache.entries())this.onEviction(s,a);this.oldCache=this.cache,this.cache=new Map}}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){let r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){let r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(let[e]of this)yield e}*values(){for(let[,e]of this)yield e}*[Symbol.iterator](){for(let e of this.cache)yield e;for(let e of this.oldCache){let[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(let r of this.oldCache.keys())this.cache.has(r)||e++;return Math.min(this._size+e,this.maxSize)}};vfe.exports=yH});var CH=_((WMt,Pfe)=>{\"use strict\";var Qtt=Ie(\"events\"),Ttt=Ie(\"tls\"),Rtt=Ie(\"http2\"),Ftt=EH(),Pa=Symbol(\"currentStreamsCount\"),Sfe=Symbol(\"request\"),Rc=Symbol(\"cachedOriginSet\"),gI=Symbol(\"gracefullyClosing\"),Ntt=[\"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\"],Ott=(t,e,r)=>{let s=0,a=t.length;for(;s<a;){let n=s+a>>>1;r(t[n],e)?s=n+1:a=n}return s},Ltt=(t,e)=>t.remoteSettings.maxConcurrentStreams>e.remoteSettings.maxConcurrentStreams,IH=(t,e)=>{for(let r of t)r[Rc].length<e[Rc].length&&r[Rc].every(s=>e[Rc].includes(s))&&r[Pa]+e[Pa]<=e.remoteSettings.maxConcurrentStreams&&bfe(r)},Mtt=(t,e)=>{for(let r of t)e[Rc].length<r[Rc].length&&e[Rc].every(s=>r[Rc].includes(s))&&e[Pa]+r[Pa]<=r.remoteSettings.maxConcurrentStreams&&bfe(e)},Dfe=({agent:t,isFree:e})=>{let r={};for(let s in t.sessions){let n=t.sessions[s].filter(c=>{let f=c[im.kCurrentStreamsCount]<c.remoteSettings.maxConcurrentStreams;return e?f:!f});n.length!==0&&(r[s]=n)}return r},bfe=t=>{t[gI]=!0,t[Pa]===0&&t.close()},im=class t extends Qtt{constructor({timeout:e=6e4,maxSessions:r=1/0,maxFreeSessions:s=10,maxCachedTlsSessions:a=100}={}){super(),this.sessions={},this.queue={},this.timeout=e,this.maxSessions=r,this.maxFreeSessions=s,this._freeSessionsCount=0,this._sessionsCount=0,this.settings={enablePush:!1},this.tlsSessionCache=new Ftt({maxSize:a})}static normalizeOrigin(e,r){return typeof e==\"string\"&&(e=new URL(e)),r&&e.hostname!==r&&(e.hostname=r),e.origin}normalizeOptions(e){let r=\"\";if(e)for(let s of Ntt)e[s]&&(r+=`:${e[s]}`);return r}_tryToCreateNewSession(e,r){if(!(e in this.queue)||!(r in this.queue[e]))return;let s=this.queue[e][r];this._sessionsCount<this.maxSessions&&!s.completed&&(s.completed=!0,s())}getSession(e,r,s){return new Promise((a,n)=>{Array.isArray(s)?(s=[...s],a()):s=[{resolve:a,reject:n}];let c=this.normalizeOptions(r),f=t.normalizeOrigin(e,r&&r.servername);if(f===void 0){for(let{reject:E}of s)E(new TypeError(\"The `origin` argument needs to be a string or an URL object\"));return}if(c in this.sessions){let E=this.sessions[c],C=-1,S=-1,P;for(let I of E){let R=I.remoteSettings.maxConcurrentStreams;if(R<C)break;if(I[Rc].includes(f)){let N=I[Pa];if(N>=R||I[gI]||I.destroyed)continue;P||(C=R),N>S&&(P=I,S=N)}}if(P){if(s.length!==1){for(let{reject:I}of s){let R=new Error(`Expected the length of listeners to be 1, got ${s.length}.\nPlease report this to https://github.com/szmarczak/http2-wrapper/`);I(R)}return}s[0].resolve(P);return}}if(c in this.queue){if(f in this.queue[c]){this.queue[c][f].listeners.push(...s),this._tryToCreateNewSession(c,f);return}}else this.queue[c]={};let p=()=>{c in this.queue&&this.queue[c][f]===h&&(delete this.queue[c][f],Object.keys(this.queue[c]).length===0&&delete this.queue[c])},h=()=>{let E=`${f}:${c}`,C=!1;try{let S=Rtt.connect(e,{createConnection:this.createConnection,settings:this.settings,session:this.tlsSessionCache.get(E),...r});S[Pa]=0,S[gI]=!1;let P=()=>S[Pa]<S.remoteSettings.maxConcurrentStreams,I=!0;S.socket.once(\"session\",N=>{this.tlsSessionCache.set(E,N)}),S.once(\"error\",N=>{for(let{reject:U}of s)U(N);this.tlsSessionCache.delete(E)}),S.setTimeout(this.timeout,()=>{S.destroy()}),S.once(\"close\",()=>{if(C){I&&this._freeSessionsCount--,this._sessionsCount--;let N=this.sessions[c];N.splice(N.indexOf(S),1),N.length===0&&delete this.sessions[c]}else{let N=new Error(\"Session closed without receiving a SETTINGS frame\");N.code=\"HTTP2WRAPPER_NOSETTINGS\";for(let{reject:U}of s)U(N);p()}this._tryToCreateNewSession(c,f)});let R=()=>{if(!(!(c in this.queue)||!P())){for(let N of S[Rc])if(N in this.queue[c]){let{listeners:U}=this.queue[c][N];for(;U.length!==0&&P();)U.shift().resolve(S);let W=this.queue[c];if(W[N].listeners.length===0&&(delete W[N],Object.keys(W).length===0)){delete this.queue[c];break}if(!P())break}}};S.on(\"origin\",()=>{S[Rc]=S.originSet,P()&&(R(),IH(this.sessions[c],S))}),S.once(\"remoteSettings\",()=>{if(S.ref(),S.unref(),this._sessionsCount++,h.destroyed){let N=new Error(\"Agent has been destroyed\");for(let U of s)U.reject(N);S.destroy();return}S[Rc]=S.originSet;{let N=this.sessions;if(c in N){let U=N[c];U.splice(Ott(U,S,Ltt),0,S)}else N[c]=[S]}this._freeSessionsCount+=1,C=!0,this.emit(\"session\",S),R(),p(),S[Pa]===0&&this._freeSessionsCount>this.maxFreeSessions&&S.close(),s.length!==0&&(this.getSession(f,r,s),s.length=0),S.on(\"remoteSettings\",()=>{R(),IH(this.sessions[c],S)})}),S[Sfe]=S.request,S.request=(N,U)=>{if(S[gI])throw new Error(\"The session is gracefully closing. No new streams are allowed.\");let W=S[Sfe](N,U);return S.ref(),++S[Pa],S[Pa]===S.remoteSettings.maxConcurrentStreams&&this._freeSessionsCount--,W.once(\"close\",()=>{if(I=P(),--S[Pa],!S.destroyed&&!S.closed&&(Mtt(this.sessions[c],S),P()&&!S.closed)){I||(this._freeSessionsCount++,I=!0);let ee=S[Pa]===0;ee&&S.unref(),ee&&(this._freeSessionsCount>this.maxFreeSessions||S[gI])?S.close():(IH(this.sessions[c],S),R())}}),W}}catch(S){for(let P of s)P.reject(S);p()}};h.listeners=s,h.completed=!1,h.destroyed=!1,this.queue[c][f]=h,this._tryToCreateNewSession(c,f)})}request(e,r,s,a){return new Promise((n,c)=>{this.getSession(e,r,[{reject:c,resolve:f=>{try{n(f.request(s,a))}catch(p){c(p)}}}])})}createConnection(e,r){return t.connect(e,r)}static connect(e,r){r.ALPNProtocols=[\"h2\"];let s=e.port||443,a=e.hostname||e.host;return typeof r.servername>\"u\"&&(r.servername=a),Ttt.connect(s,a,r)}closeFreeSessions(){for(let e of Object.values(this.sessions))for(let r of e)r[Pa]===0&&r.close()}destroy(e){for(let r of Object.values(this.sessions))for(let s of r)s.destroy(e);for(let r of Object.values(this.queue))for(let s of Object.values(r))s.destroyed=!0;this.queue={}}get freeSessions(){return Dfe({agent:this,isFree:!0})}get busySessions(){return Dfe({agent:this,isFree:!1})}};im.kCurrentStreamsCount=Pa;im.kGracefullyClosing=gI;Pfe.exports={Agent:im,globalAgent:new im}});var BH=_((YMt,xfe)=>{\"use strict\";var{Readable:Utt}=Ie(\"stream\"),wH=class extends Utt{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()}};xfe.exports=wH});var vH=_((VMt,kfe)=>{\"use strict\";kfe.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 Tfe=_((JMt,Qfe)=>{\"use strict\";Qfe.exports=(t,e,r)=>{for(let s of r)t.on(s,(...a)=>e.emit(s,...a))}});var Ffe=_((KMt,Rfe)=>{\"use strict\";Rfe.exports=t=>{switch(t){case\":method\":case\":scheme\":case\":authority\":case\":path\":return!0;default:return!1}}});var Ofe=_((XMt,Nfe)=>{\"use strict\";var dI=(t,e,r)=>{Nfe.exports[e]=class extends t{constructor(...a){super(typeof r==\"string\"?r:r(a)),this.name=`${super.name} [${e}]`,this.code=e}}};dI(TypeError,\"ERR_INVALID_ARG_TYPE\",t=>{let e=t[0].includes(\".\")?\"property\":\"argument\",r=t[1],s=Array.isArray(r);return s&&(r=`${r.slice(0,-1).join(\", \")} or ${r.slice(-1)}`),`The \"${t[0]}\" ${e} must be ${s?\"one of\":\"of\"} type ${r}. Received ${typeof t[2]}`});dI(TypeError,\"ERR_INVALID_PROTOCOL\",t=>`Protocol \"${t[0]}\" not supported. Expected \"${t[1]}\"`);dI(Error,\"ERR_HTTP_HEADERS_SENT\",t=>`Cannot ${t[0]} headers after they are sent to the client`);dI(TypeError,\"ERR_INVALID_HTTP_TOKEN\",t=>`${t[0]} must be a valid HTTP token [${t[1]}]`);dI(TypeError,\"ERR_HTTP_INVALID_HEADER_VALUE\",t=>`Invalid value \"${t[0]} for header \"${t[1]}\"`);dI(TypeError,\"ERR_INVALID_CHAR\",t=>`Invalid character in ${t[0]} [${t[1]}]`)});var xH=_((ZMt,Gfe)=>{\"use strict\";var _tt=Ie(\"http2\"),{Writable:Htt}=Ie(\"stream\"),{Agent:Lfe,globalAgent:jtt}=CH(),Gtt=BH(),qtt=vH(),Wtt=Tfe(),Ytt=Ffe(),{ERR_INVALID_ARG_TYPE:SH,ERR_INVALID_PROTOCOL:Vtt,ERR_HTTP_HEADERS_SENT:Mfe,ERR_INVALID_HTTP_TOKEN:Jtt,ERR_HTTP_INVALID_HEADER_VALUE:Ktt,ERR_INVALID_CHAR:ztt}=Ofe(),{HTTP2_HEADER_STATUS:Ufe,HTTP2_HEADER_METHOD:_fe,HTTP2_HEADER_PATH:Hfe,HTTP2_METHOD_CONNECT:Xtt}=_tt.constants,Jo=Symbol(\"headers\"),DH=Symbol(\"origin\"),bH=Symbol(\"session\"),jfe=Symbol(\"options\"),JQ=Symbol(\"flushedHeaders\"),zB=Symbol(\"jobs\"),Ztt=/^[\\^`\\-\\w!#$%&*+.|~]+$/,$tt=/[^\\t\\u0020-\\u007E\\u0080-\\u00FF]/,PH=class extends Htt{constructor(e,r,s){super({autoDestroy:!1});let a=typeof e==\"string\"||e instanceof URL;if(a&&(e=qtt(e instanceof URL?e:new URL(e))),typeof r==\"function\"||r===void 0?(s=r,r=a?e:{...e}):r={...e,...r},r.h2session)this[bH]=r.h2session;else if(r.agent===!1)this.agent=new Lfe({maxFreeSessions:0});else if(typeof r.agent>\"u\"||r.agent===null)typeof r.createConnection==\"function\"?(this.agent=new Lfe({maxFreeSessions:0}),this.agent.createConnection=r.createConnection):this.agent=jtt;else if(typeof r.agent.request==\"function\")this.agent=r.agent;else throw new SH(\"options.agent\",[\"Agent-like Object\",\"undefined\",\"false\"],r.agent);if(r.protocol&&r.protocol!==\"https:\")throw new Vtt(r.protocol,\"https:\");let n=r.port||r.defaultPort||this.agent&&this.agent.defaultPort||443,c=r.hostname||r.host||\"localhost\";delete r.hostname,delete r.host,delete r.port;let{timeout:f}=r;if(r.timeout=void 0,this[Jo]=Object.create(null),this[zB]=[],this.socket=null,this.connection=null,this.method=r.method||\"GET\",this.path=r.path,this.res=null,this.aborted=!1,this.reusedSocket=!1,r.headers)for(let[p,h]of Object.entries(r.headers))this.setHeader(p,h);r.auth&&!(\"authorization\"in this[Jo])&&(this[Jo].authorization=\"Basic \"+Buffer.from(r.auth).toString(\"base64\")),r.session=r.tlsSession,r.path=r.socketPath,this[jfe]=r,n===443?(this[DH]=`https://${c}`,\":authority\"in this[Jo]||(this[Jo][\":authority\"]=c)):(this[DH]=`https://${c}:${n}`,\":authority\"in this[Jo]||(this[Jo][\":authority\"]=`${c}:${n}`)),f&&this.setTimeout(f),s&&this.once(\"response\",s),this[JQ]=!1}get method(){return this[Jo][_fe]}set method(e){e&&(this[Jo][_fe]=e.toUpperCase())}get path(){return this[Jo][Hfe]}set path(e){e&&(this[Jo][Hfe]=e)}get _mustNotHaveABody(){return this.method===\"GET\"||this.method===\"HEAD\"||this.method===\"DELETE\"}_write(e,r,s){if(this._mustNotHaveABody){s(new Error(\"The GET, HEAD and DELETE methods must NOT have a body\"));return}this.flushHeaders();let a=()=>this._request.write(e,r,s);this._request?a():this[zB].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[zB].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[JQ]||this.destroyed)return;this[JQ]=!0;let e=this.method===Xtt,r=s=>{if(this._request=s,this.destroyed){s.destroy();return}e||Wtt(s,this,[\"timeout\",\"continue\",\"close\",\"error\"]);let a=c=>(...f)=>{!this.writable&&!this.destroyed?c(...f):this.once(\"finish\",()=>{c(...f)})};s.once(\"response\",a((c,f,p)=>{let h=new Gtt(this.socket,s.readableHighWaterMark);this.res=h,h.req=this,h.statusCode=c[Ufe],h.headers=c,h.rawHeaders=p,h.once(\"end\",()=>{this.aborted?(h.aborted=!0,h.emit(\"aborted\")):(h.complete=!0,h.socket=null,h.connection=null)}),e?(h.upgrade=!0,this.emit(\"connect\",h,s,Buffer.alloc(0))?this.emit(\"close\"):s.destroy()):(s.on(\"data\",E=>{!h._dumped&&!h.push(E)&&s.pause()}),s.once(\"end\",()=>{h.push(null)}),this.emit(\"response\",h)||h._dump())})),s.once(\"headers\",a(c=>this.emit(\"information\",{statusCode:c[Ufe]}))),s.once(\"trailers\",a((c,f,p)=>{let{res:h}=this;h.trailers=c,h.rawTrailers=p}));let{socket:n}=s.session;this.socket=n,this.connection=n;for(let c of this[zB])c();this.emit(\"socket\",this.socket)};if(this[bH])try{r(this[bH].request(this[Jo]))}catch(s){this.emit(\"error\",s)}else{this.reusedSocket=!0;try{r(await this.agent.request(this[DH],this[jfe],this[Jo]))}catch(s){this.emit(\"error\",s)}}}getHeader(e){if(typeof e!=\"string\")throw new SH(\"name\",\"string\",e);return this[Jo][e.toLowerCase()]}get headersSent(){return this[JQ]}removeHeader(e){if(typeof e!=\"string\")throw new SH(\"name\",\"string\",e);if(this.headersSent)throw new Mfe(\"remove\");delete this[Jo][e.toLowerCase()]}setHeader(e,r){if(this.headersSent)throw new Mfe(\"set\");if(typeof e!=\"string\"||!Ztt.test(e)&&!Ytt(e))throw new Jtt(\"Header name\",e);if(typeof r>\"u\")throw new Ktt(r,e);if($tt.test(r))throw new ztt(\"header content\",e);this[Jo][e.toLowerCase()]=r}setNoDelay(){}setSocketKeepAlive(){}setTimeout(e,r){let s=()=>this._request.setTimeout(e,r);return this._request?s():this[zB].push(s),this}get maxHeadersCount(){if(!this.destroyed&&this._request)return this._request.session.localSettings.maxHeaderListSize}set maxHeadersCount(e){}};Gfe.exports=PH});var Wfe=_(($Mt,qfe)=>{\"use strict\";var ert=Ie(\"tls\");qfe.exports=(t={},e=ert.connect)=>new Promise((r,s)=>{let a=!1,n,c=async()=>{await p,n.off(\"timeout\",f),n.off(\"error\",s),t.resolveSocket?(r({alpnProtocol:n.alpnProtocol,socket:n,timeout:a}),a&&(await Promise.resolve(),n.emit(\"timeout\"))):(n.destroy(),r({alpnProtocol:n.alpnProtocol,timeout:a}))},f=async()=>{a=!0,c()},p=(async()=>{try{n=await e(t,c),n.on(\"error\",s),n.once(\"timeout\",f)}catch(h){s(h)}})()})});var Vfe=_((eUt,Yfe)=>{\"use strict\";var trt=Ie(\"net\");Yfe.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]),trt.isIP(e)?\"\":e}});var zfe=_((tUt,QH)=>{\"use strict\";var Jfe=Ie(\"http\"),kH=Ie(\"https\"),rrt=Wfe(),nrt=EH(),irt=xH(),srt=Vfe(),ort=vH(),KQ=new nrt({maxSize:100}),XB=new Map,Kfe=(t,e,r)=>{e._httpMessage={shouldKeepAlive:!0};let s=()=>{t.emit(\"free\",e,r)};e.on(\"free\",s);let a=()=>{t.removeSocket(e,r)};e.on(\"close\",a);let n=()=>{t.removeSocket(e,r),e.off(\"close\",a),e.off(\"free\",s),e.off(\"agentRemove\",n)};e.on(\"agentRemove\",n),t.emit(\"free\",e,r)},art=async t=>{let e=`${t.host}:${t.port}:${t.ALPNProtocols.sort()}`;if(!KQ.has(e)){if(XB.has(e))return(await XB.get(e)).alpnProtocol;let{path:r,agent:s}=t;t.path=t.socketPath;let a=rrt(t);XB.set(e,a);try{let{socket:n,alpnProtocol:c}=await a;if(KQ.set(e,c),t.path=r,c===\"h2\")n.destroy();else{let{globalAgent:f}=kH,p=kH.Agent.prototype.createConnection;s?s.createConnection===p?Kfe(s,n,t):n.destroy():f.createConnection===p?Kfe(f,n,t):n.destroy()}return XB.delete(e),c}catch(n){throw XB.delete(e),n}}return KQ.get(e)};QH.exports=async(t,e,r)=>{if((typeof t==\"string\"||t instanceof URL)&&(t=ort(new URL(t))),typeof e==\"function\"&&(r=e,e=void 0),e={ALPNProtocols:[\"h2\",\"http/1.1\"],...t,...e,resolveSocket:!0},!Array.isArray(e.ALPNProtocols)||e.ALPNProtocols.length===0)throw new Error(\"The `ALPNProtocols` option must be an Array with at least one entry\");e.protocol=e.protocol||\"https:\";let s=e.protocol===\"https:\";e.host=e.hostname||e.host||\"localhost\",e.session=e.tlsSession,e.servername=e.servername||srt(e),e.port=e.port||(s?443:80),e._defaultAgent=s?kH.globalAgent:Jfe.globalAgent;let a=e.agent;if(a){if(a.addRequest)throw new Error(\"The `options.agent` object can contain only `http`, `https` or `http2` properties\");e.agent=a[s?\"https\":\"http\"]}return s&&await art(e)===\"h2\"?(a&&(e.agent=a.http2),new irt(e,r)):Jfe.request(e,r)};QH.exports.protocolCache=KQ});var Zfe=_((rUt,Xfe)=>{\"use strict\";var lrt=Ie(\"http2\"),crt=CH(),TH=xH(),urt=BH(),frt=zfe(),Art=(t,e,r)=>new TH(t,e,r),prt=(t,e,r)=>{let s=new TH(t,e,r);return s.end(),s};Xfe.exports={...lrt,ClientRequest:TH,IncomingMessage:urt,...crt,request:Art,get:prt,auto:frt}});var FH=_(RH=>{\"use strict\";Object.defineProperty(RH,\"__esModule\",{value:!0});var $fe=Np();RH.default=t=>$fe.default.nodeStream(t)&&$fe.default.function_(t.getBoundary)});var nAe=_(NH=>{\"use strict\";Object.defineProperty(NH,\"__esModule\",{value:!0});var tAe=Ie(\"fs\"),rAe=Ie(\"util\"),eAe=Np(),hrt=FH(),grt=rAe.promisify(tAe.stat);NH.default=async(t,e)=>{if(e&&\"content-length\"in e)return Number(e[\"content-length\"]);if(!t)return 0;if(eAe.default.string(t))return Buffer.byteLength(t);if(eAe.default.buffer(t))return t.length;if(hrt.default(t))return rAe.promisify(t.getLength.bind(t))();if(t instanceof tAe.ReadStream){let{size:r}=await grt(t.path);return r===0?void 0:r}}});var LH=_(OH=>{\"use strict\";Object.defineProperty(OH,\"__esModule\",{value:!0});function drt(t,e,r){let s={};for(let a of r)s[a]=(...n)=>{e.emit(a,...n)},t.on(a,s[a]);return()=>{for(let a of r)t.off(a,s[a])}}OH.default=drt});var iAe=_(MH=>{\"use strict\";Object.defineProperty(MH,\"__esModule\",{value:!0});MH.default=()=>{let t=[];return{once(e,r,s){e.once(r,s),t.push({origin:e,event:r,fn:s})},unhandleAll(){for(let e of t){let{origin:r,event:s,fn:a}=e;r.removeListener(s,a)}t.length=0}}}});var oAe=_(ZB=>{\"use strict\";Object.defineProperty(ZB,\"__esModule\",{value:!0});ZB.TimeoutError=void 0;var mrt=Ie(\"net\"),yrt=iAe(),sAe=Symbol(\"reentry\"),Ert=()=>{},zQ=class extends Error{constructor(e,r){super(`Timeout awaiting '${r}' for ${e}ms`),this.event=r,this.name=\"TimeoutError\",this.code=\"ETIMEDOUT\"}};ZB.TimeoutError=zQ;ZB.default=(t,e,r)=>{if(sAe in t)return Ert;t[sAe]=!0;let s=[],{once:a,unhandleAll:n}=yrt.default(),c=(C,S,P)=>{var I;let R=setTimeout(S,C,C,P);(I=R.unref)===null||I===void 0||I.call(R);let N=()=>{clearTimeout(R)};return s.push(N),N},{host:f,hostname:p}=r,h=(C,S)=>{t.destroy(new zQ(C,S))},E=()=>{for(let C of s)C();n()};if(t.once(\"error\",C=>{if(E(),t.listenerCount(\"error\")===0)throw C}),t.once(\"close\",E),a(t,\"response\",C=>{a(C,\"end\",E)}),typeof e.request<\"u\"&&c(e.request,h,\"request\"),typeof e.socket<\"u\"){let C=()=>{h(e.socket,\"socket\")};t.setTimeout(e.socket,C),s.push(()=>{t.removeListener(\"timeout\",C)})}return a(t,\"socket\",C=>{var S;let{socketPath:P}=t;if(C.connecting){let I=!!(P??mrt.isIP((S=p??f)!==null&&S!==void 0?S:\"\")!==0);if(typeof e.lookup<\"u\"&&!I&&typeof C.address().address>\"u\"){let R=c(e.lookup,h,\"lookup\");a(C,\"lookup\",R)}if(typeof e.connect<\"u\"){let R=()=>c(e.connect,h,\"connect\");I?a(C,\"connect\",R()):a(C,\"lookup\",N=>{N===null&&a(C,\"connect\",R())})}typeof e.secureConnect<\"u\"&&r.protocol===\"https:\"&&a(C,\"connect\",()=>{let R=c(e.secureConnect,h,\"secureConnect\");a(C,\"secureConnect\",R)})}if(typeof e.send<\"u\"){let I=()=>c(e.send,h,\"send\");C.connecting?a(C,\"connect\",()=>{a(t,\"upload-complete\",I())}):a(t,\"upload-complete\",I())}}),typeof e.response<\"u\"&&a(t,\"upload-complete\",()=>{let C=c(e.response,h,\"response\");a(t,\"response\",C)}),E}});var lAe=_(UH=>{\"use strict\";Object.defineProperty(UH,\"__esModule\",{value:!0});var aAe=Np();UH.default=t=>{t=t;let e={protocol:t.protocol,hostname:aAe.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 aAe.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 cAe=_(_H=>{\"use strict\";Object.defineProperty(_H,\"__esModule\",{value:!0});var Irt=Ie(\"url\"),Crt=[\"protocol\",\"host\",\"hostname\",\"port\",\"pathname\",\"search\"];_H.default=(t,e)=>{var r,s;if(e.path){if(e.pathname)throw new TypeError(\"Parameters `path` and `pathname` are mutually exclusive.\");if(e.search)throw new TypeError(\"Parameters `path` and `search` are mutually exclusive.\");if(e.searchParams)throw new TypeError(\"Parameters `path` and `searchParams` are mutually exclusive.\")}if(e.search&&e.searchParams)throw new TypeError(\"Parameters `search` and `searchParams` are mutually exclusive.\");if(!t){if(!e.protocol)throw new TypeError(\"No URL protocol specified\");t=`${e.protocol}//${(s=(r=e.hostname)!==null&&r!==void 0?r:e.host)!==null&&s!==void 0?s:\"\"}`}let a=new Irt.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 Crt)e[n]&&(a[n]=e[n].toString());return a}});var uAe=_(jH=>{\"use strict\";Object.defineProperty(jH,\"__esModule\",{value:!0});var HH=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)}};jH.default=HH});var qH=_(GH=>{\"use strict\";Object.defineProperty(GH,\"__esModule\",{value:!0});var wrt=async t=>{let e=[],r=0;for await(let s of t)e.push(s),r+=Buffer.byteLength(s);return Buffer.isBuffer(e[0])?Buffer.concat(e,r):Buffer.from(e.join(\"\"))};GH.default=wrt});var AAe=_(sm=>{\"use strict\";Object.defineProperty(sm,\"__esModule\",{value:!0});sm.dnsLookupIpVersionToFamily=sm.isDnsLookupIpVersion=void 0;var fAe={auto:0,ipv4:4,ipv6:6};sm.isDnsLookupIpVersion=t=>t in fAe;sm.dnsLookupIpVersionToFamily=t=>{if(sm.isDnsLookupIpVersion(t))return fAe[t];throw new Error(\"Invalid DNS lookup IP version\")}});var WH=_(XQ=>{\"use strict\";Object.defineProperty(XQ,\"__esModule\",{value:!0});XQ.isResponseOk=void 0;XQ.isResponseOk=t=>{let{statusCode:e}=t,r=t.request.options.followRedirect?299:399;return e>=200&&e<=r||e===304}});var hAe=_(YH=>{\"use strict\";Object.defineProperty(YH,\"__esModule\",{value:!0});var pAe=new Set;YH.default=t=>{pAe.has(t)||(pAe.add(t),process.emitWarning(`Got: ${t}`,{type:\"DeprecationWarning\"}))}});var gAe=_(VH=>{\"use strict\";Object.defineProperty(VH,\"__esModule\",{value:!0});var Si=Np(),Brt=(t,e)=>{if(Si.default.null_(t.encoding))throw new TypeError(\"To get a Buffer, set `options.responseType` to `buffer` instead\");Si.assert.any([Si.default.string,Si.default.undefined],t.encoding),Si.assert.any([Si.default.boolean,Si.default.undefined],t.resolveBodyOnly),Si.assert.any([Si.default.boolean,Si.default.undefined],t.methodRewriting),Si.assert.any([Si.default.boolean,Si.default.undefined],t.isStream),Si.assert.any([Si.default.string,Si.default.undefined],t.responseType),t.responseType===void 0&&(t.responseType=\"text\");let{retry:r}=t;if(e?t.retry={...e.retry}:t.retry={calculateDelay:s=>s.computedValue,limit:0,methods:[],statusCodes:[],errorCodes:[],maxRetryAfter:void 0},Si.default.object(r)?(t.retry={...t.retry,...r},t.retry.methods=[...new Set(t.retry.methods.map(s=>s.toUpperCase()))],t.retry.statusCodes=[...new Set(t.retry.statusCodes)],t.retry.errorCodes=[...new Set(t.retry.errorCodes)]):Si.default.number(r)&&(t.retry.limit=r),Si.default.undefined(t.retry.maxRetryAfter)&&(t.retry.maxRetryAfter=Math.min(...[t.timeout.request,t.timeout.connect].filter(Si.default.number))),Si.default.object(t.pagination)){e&&(t.pagination={...e.pagination,...t.pagination});let{pagination:s}=t;if(!Si.default.function_(s.transform))throw new Error(\"`options.pagination.transform` must be implemented\");if(!Si.default.function_(s.shouldContinue))throw new Error(\"`options.pagination.shouldContinue` must be implemented\");if(!Si.default.function_(s.filter))throw new TypeError(\"`options.pagination.filter` must be implemented\");if(!Si.default.function_(s.paginate))throw new Error(\"`options.pagination.paginate` must be implemented\")}return t.responseType===\"json\"&&t.headers.accept===void 0&&(t.headers.accept=\"application/json\"),t};VH.default=Brt});var dAe=_($B=>{\"use strict\";Object.defineProperty($B,\"__esModule\",{value:!0});$B.retryAfterStatusCodes=void 0;$B.retryAfterStatusCodes=new Set([413,429,503]);var vrt=({attemptCount:t,retryOptions:e,error:r,retryAfter:s})=>{if(t>e.limit)return 0;let a=e.methods.includes(r.options.method),n=e.errorCodes.includes(r.code),c=r.response&&e.statusCodes.includes(r.response.statusCode);if(!a||!n&&!c)return 0;if(r.response){if(s)return e.maxRetryAfter===void 0||s>e.maxRetryAfter?0:s;if(r.response.statusCode===413)return 0}let f=Math.random()*100;return 2**(t-1)*1e3+f};$B.default=vrt});var rv=_(Ln=>{\"use strict\";Object.defineProperty(Ln,\"__esModule\",{value:!0});Ln.UnsupportedProtocolError=Ln.ReadError=Ln.TimeoutError=Ln.UploadError=Ln.CacheError=Ln.HTTPError=Ln.MaxRedirectsError=Ln.RequestError=Ln.setNonEnumerableProperties=Ln.knownHookEvents=Ln.withoutBody=Ln.kIsNormalizedAlready=void 0;var mAe=Ie(\"util\"),yAe=Ie(\"stream\"),Srt=Ie(\"fs\"),w0=Ie(\"url\"),EAe=Ie(\"http\"),JH=Ie(\"http\"),Drt=Ie(\"https\"),brt=Rue(),Prt=_ue(),IAe=Efe(),xrt=Bfe(),krt=Zfe(),Qrt=YQ(),at=Np(),Trt=nAe(),CAe=FH(),Rrt=LH(),wAe=oAe(),Frt=lAe(),BAe=cAe(),Nrt=uAe(),Ort=qH(),vAe=AAe(),Lrt=WH(),B0=hAe(),Mrt=gAe(),Urt=dAe(),KH,po=Symbol(\"request\"),eT=Symbol(\"response\"),mI=Symbol(\"responseSize\"),yI=Symbol(\"downloadedSize\"),EI=Symbol(\"bodySize\"),II=Symbol(\"uploadedSize\"),ZQ=Symbol(\"serverResponsesPiped\"),SAe=Symbol(\"unproxyEvents\"),DAe=Symbol(\"isFromCache\"),zH=Symbol(\"cancelTimeouts\"),bAe=Symbol(\"startedReading\"),CI=Symbol(\"stopReading\"),$Q=Symbol(\"triggerRead\"),v0=Symbol(\"body\"),ev=Symbol(\"jobs\"),PAe=Symbol(\"originalResponse\"),xAe=Symbol(\"retryTimeout\");Ln.kIsNormalizedAlready=Symbol(\"isNormalizedAlready\");var _rt=at.default.string(process.versions.brotli);Ln.withoutBody=new Set([\"GET\",\"HEAD\"]);Ln.knownHookEvents=[\"init\",\"beforeRequest\",\"beforeRedirect\",\"beforeError\",\"beforeRetry\",\"afterResponse\"];function Hrt(t){for(let e in t){let r=t[e];if(!at.default.string(r)&&!at.default.number(r)&&!at.default.boolean(r)&&!at.default.null_(r)&&!at.default.undefined(r))throw new TypeError(`The \\`searchParams\\` value '${String(r)}' must be a string, number, boolean or null`)}}function jrt(t){return at.default.object(t)&&!(\"statusCode\"in t)}var XH=new Nrt.default,Grt=async t=>new Promise((e,r)=>{let s=a=>{r(a)};t.pending||e(),t.once(\"error\",s),t.once(\"ready\",()=>{t.off(\"error\",s),e()})}),qrt=new Set([300,301,302,303,304,307,308]),Wrt=[\"context\",\"body\",\"json\",\"form\"];Ln.setNonEnumerableProperties=(t,e)=>{let r={};for(let s of t)if(s)for(let a of Wrt)a in s&&(r[a]={writable:!0,configurable:!0,enumerable:!1,value:s[a]});Object.defineProperties(e,r)};var fs=class extends Error{constructor(e,r,s){var a;if(super(e),Error.captureStackTrace(this,this.constructor),this.name=\"RequestError\",this.code=r.code,s instanceof aT?(Object.defineProperty(this,\"request\",{enumerable:!1,value:s}),Object.defineProperty(this,\"response\",{enumerable:!1,value:s[eT]}),Object.defineProperty(this,\"options\",{enumerable:!1,value:s.options})):Object.defineProperty(this,\"options\",{enumerable:!1,value:s}),this.timings=(a=this.request)===null||a===void 0?void 0:a.timings,at.default.string(r.stack)&&at.default.string(this.stack)){let n=this.stack.indexOf(this.message)+this.message.length,c=this.stack.slice(n).split(`\n`).reverse(),f=r.stack.slice(r.stack.indexOf(r.message)+r.message.length).split(`\n`).reverse();for(;f.length!==0&&f[0]===c[0];)c.shift();this.stack=`${this.stack.slice(0,n)}${c.reverse().join(`\n`)}${f.reverse().join(`\n`)}`}}};Ln.RequestError=fs;var tT=class extends fs{constructor(e){super(`Redirected ${e.options.maxRedirects} times. Aborting.`,{},e),this.name=\"MaxRedirectsError\"}};Ln.MaxRedirectsError=tT;var rT=class extends fs{constructor(e){super(`Response code ${e.statusCode} (${e.statusMessage})`,{},e.request),this.name=\"HTTPError\"}};Ln.HTTPError=rT;var nT=class extends fs{constructor(e,r){super(e.message,e,r),this.name=\"CacheError\"}};Ln.CacheError=nT;var iT=class extends fs{constructor(e,r){super(e.message,e,r),this.name=\"UploadError\"}};Ln.UploadError=iT;var sT=class extends fs{constructor(e,r,s){super(e.message,e,s),this.name=\"TimeoutError\",this.event=e.event,this.timings=r}};Ln.TimeoutError=sT;var tv=class extends fs{constructor(e,r){super(e.message,e,r),this.name=\"ReadError\"}};Ln.ReadError=tv;var oT=class extends fs{constructor(e){super(`Unsupported protocol \"${e.url.protocol}\"`,{},e),this.name=\"UnsupportedProtocolError\"}};Ln.UnsupportedProtocolError=oT;var Yrt=[\"socket\",\"connect\",\"continue\",\"information\",\"upgrade\",\"timeout\"],aT=class extends yAe.Duplex{constructor(e,r={},s){super({autoDestroy:!1,highWaterMark:0}),this[yI]=0,this[II]=0,this.requestInitialized=!1,this[ZQ]=new Set,this.redirects=[],this[CI]=!1,this[$Q]=!1,this[ev]=[],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 JH.IncomingMessage&&(this.options.headers={...h.headers,...this.options.headers})});let{json:c,body:f,form:p}=r;if((c||f||p)&&this._lockWrite(),Ln.kIsNormalizedAlready in r)this.options=r;else try{this.options=this.constructor.normalizeArguments(e,r,s)}catch(h){at.default.nodeStream(r.body)&&r.body.destroy(),this.destroy(h);return}(async()=>{var h;try{this.options.body instanceof Srt.ReadStream&&await Grt(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[po])===null||h===void 0||h.destroy();return}for(let C of this[ev])C();this[ev].length=0,this.requestInitialized=!0}catch(E){if(E instanceof fs){this._beforeError(E);return}this.destroyed||this.destroy(E)}})()}static normalizeArguments(e,r,s){var a,n,c,f,p;let h=r;if(at.default.object(e)&&!at.default.urlInstance(e))r={...s,...e,...r};else{if(e&&r&&r.url!==void 0)throw new TypeError(\"The `url` option is mutually exclusive with the `input` argument\");r={...s,...r},e!==void 0&&(r.url=e),at.default.urlInstance(r.url)&&(r.url=new w0.URL(r.url.toString()))}if(r.cache===!1&&(r.cache=void 0),r.dnsCache===!1&&(r.dnsCache=void 0),at.assert.any([at.default.string,at.default.undefined],r.method),at.assert.any([at.default.object,at.default.undefined],r.headers),at.assert.any([at.default.string,at.default.urlInstance,at.default.undefined],r.prefixUrl),at.assert.any([at.default.object,at.default.undefined],r.cookieJar),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.searchParams),at.assert.any([at.default.object,at.default.string,at.default.undefined],r.cache),at.assert.any([at.default.object,at.default.number,at.default.undefined],r.timeout),at.assert.any([at.default.object,at.default.undefined],r.context),at.assert.any([at.default.object,at.default.undefined],r.hooks),at.assert.any([at.default.boolean,at.default.undefined],r.decompress),at.assert.any([at.default.boolean,at.default.undefined],r.ignoreInvalidCookies),at.assert.any([at.default.boolean,at.default.undefined],r.followRedirect),at.assert.any([at.default.number,at.default.undefined],r.maxRedirects),at.assert.any([at.default.boolean,at.default.undefined],r.throwHttpErrors),at.assert.any([at.default.boolean,at.default.undefined],r.http2),at.assert.any([at.default.boolean,at.default.undefined],r.allowGetBody),at.assert.any([at.default.string,at.default.undefined],r.localAddress),at.assert.any([vAe.isDnsLookupIpVersion,at.default.undefined],r.dnsLookupIpVersion),at.assert.any([at.default.object,at.default.undefined],r.https),at.assert.any([at.default.boolean,at.default.undefined],r.rejectUnauthorized),r.https&&(at.assert.any([at.default.boolean,at.default.undefined],r.https.rejectUnauthorized),at.assert.any([at.default.function_,at.default.undefined],r.https.checkServerIdentity),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificateAuthority),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.key),at.assert.any([at.default.string,at.default.object,at.default.array,at.default.undefined],r.https.certificate),at.assert.any([at.default.string,at.default.undefined],r.https.passphrase),at.assert.any([at.default.string,at.default.buffer,at.default.array,at.default.undefined],r.https.pfx)),at.assert.any([at.default.object,at.default.undefined],r.cacheOptions),at.default.string(r.method)?r.method=r.method.toUpperCase():r.method=\"GET\",r.headers===s?.headers?r.headers={...r.headers}:r.headers=Qrt({...s?.headers,...r.headers}),\"slashes\"in r)throw new TypeError(\"The legacy `url.Url` has been deprecated. Use `URL` instead.\");if(\"auth\"in r)throw new TypeError(\"Parameter `auth` is deprecated. Use `username` / `password` instead.\");if(\"searchParams\"in r&&r.searchParams&&r.searchParams!==s?.searchParams){let P;if(at.default.string(r.searchParams)||r.searchParams instanceof w0.URLSearchParams)P=new w0.URLSearchParams(r.searchParams);else{Hrt(r.searchParams),P=new w0.URLSearchParams;for(let I in r.searchParams){let R=r.searchParams[I];R===null?P.append(I,\"\"):R!==void 0&&P.append(I,R)}}(a=s?.searchParams)===null||a===void 0||a.forEach((I,R)=>{P.has(R)||P.append(R,I)}),r.searchParams=P}if(r.username=(n=r.username)!==null&&n!==void 0?n:\"\",r.password=(c=r.password)!==null&&c!==void 0?c:\"\",at.default.undefined(r.prefixUrl)?r.prefixUrl=(f=s?.prefixUrl)!==null&&f!==void 0?f:\"\":(r.prefixUrl=r.prefixUrl.toString(),r.prefixUrl!==\"\"&&!r.prefixUrl.endsWith(\"/\")&&(r.prefixUrl+=\"/\")),at.default.string(r.url)){if(r.url.startsWith(\"/\"))throw new Error(\"`input` must not start with a slash when using `prefixUrl`\");r.url=BAe.default(r.prefixUrl+r.url,r)}else(at.default.undefined(r.url)&&r.prefixUrl!==\"\"||r.protocol)&&(r.url=BAe.default(r.prefixUrl,r));if(r.url){\"port\"in r&&delete r.port;let{prefixUrl:P}=r;Object.defineProperty(r,\"prefixUrl\",{set:R=>{let N=r.url;if(!N.href.startsWith(R))throw new Error(`Cannot change \\`prefixUrl\\` from ${P} to ${R}: ${N.href}`);r.url=new w0.URL(R+N.href.slice(P.length)),P=R},get:()=>P});let{protocol:I}=r.url;if(I===\"unix:\"&&(I=\"http:\",r.url=new w0.URL(`http://unix${r.url.pathname}${r.url.search}`)),r.searchParams&&(r.url.search=r.searchParams.toString()),I!==\"http:\"&&I!==\"https:\")throw new oT(r);r.username===\"\"?r.username=r.url.username:r.url.username=r.username,r.password===\"\"?r.password=r.url.password:r.url.password=r.password}let{cookieJar:E}=r;if(E){let{setCookie:P,getCookieString:I}=E;at.assert.function_(P),at.assert.function_(I),P.length===4&&I.length===0&&(P=mAe.promisify(P.bind(r.cookieJar)),I=mAe.promisify(I.bind(r.cookieJar)),r.cookieJar={setCookie:P,getCookieString:I})}let{cache:C}=r;if(C&&(XH.has(C)||XH.set(C,new IAe((P,I)=>{let R=P[po](P,I);return at.default.promise(R)&&(R.once=(N,U)=>{if(N===\"error\")R.catch(U);else if(N===\"abort\")(async()=>{try{(await R).once(\"abort\",U)}catch{}})();else throw new Error(`Unknown HTTP2 promise event: ${N}`);return R}),R},C))),r.cacheOptions={...r.cacheOptions},r.dnsCache===!0)KH||(KH=new Prt.default),r.dnsCache=KH;else if(!at.default.undefined(r.dnsCache)&&!r.dnsCache.lookup)throw new TypeError(`Parameter \\`dnsCache\\` must be a CacheableLookup instance or a boolean, got ${at.default(r.dnsCache)}`);at.default.number(r.timeout)?r.timeout={request:r.timeout}:s&&r.timeout!==s.timeout?r.timeout={...s.timeout,...r.timeout}:r.timeout={...r.timeout},r.context||(r.context={});let S=r.hooks===s?.hooks;r.hooks={...r.hooks};for(let P of Ln.knownHookEvents)if(P in r.hooks)if(at.default.array(r.hooks[P]))r.hooks[P]=[...r.hooks[P]];else throw new TypeError(`Parameter \\`${P}\\` must be an Array, got ${at.default(r.hooks[P])}`);else r.hooks[P]=[];if(s&&!S)for(let P of Ln.knownHookEvents)s.hooks[P].length>0&&(r.hooks[P]=[...s.hooks[P],...r.hooks[P]]);if(\"family\"in r&&B0.default('\"options.family\" was never documented, please use \"options.dnsLookupIpVersion\"'),s?.https&&(r.https={...s.https,...r.https}),\"rejectUnauthorized\"in r&&B0.default('\"options.rejectUnauthorized\" is now deprecated, please use \"options.https.rejectUnauthorized\"'),\"checkServerIdentity\"in r&&B0.default('\"options.checkServerIdentity\" was never documented, please use \"options.https.checkServerIdentity\"'),\"ca\"in r&&B0.default('\"options.ca\" was never documented, please use \"options.https.certificateAuthority\"'),\"key\"in r&&B0.default('\"options.key\" was never documented, please use \"options.https.key\"'),\"cert\"in r&&B0.default('\"options.cert\" was never documented, please use \"options.https.certificate\"'),\"passphrase\"in r&&B0.default('\"options.passphrase\" was never documented, please use \"options.https.passphrase\"'),\"pfx\"in r&&B0.default('\"options.pfx\" was never documented, please use \"options.https.pfx\"'),\"followRedirects\"in r)throw new TypeError(\"The `followRedirects` option does not exist. Use `followRedirect` instead.\");if(r.agent){for(let P in r.agent)if(P!==\"http\"&&P!==\"https\"&&P!==\"http2\")throw new TypeError(`Expected the \\`options.agent\\` properties to be \\`http\\`, \\`https\\` or \\`http2\\`, got \\`${P}\\``)}return r.maxRedirects=(p=r.maxRedirects)!==null&&p!==void 0?p:0,Ln.setNonEnumerableProperties([s,h],r),Mrt.default(r,s)}_lockWrite(){let e=()=>{throw new TypeError(\"The payload has been already provided\")};this.write=e,this.end=e}_unlockWrite(){this.write=super.write,this.end=super.end}async _finalizeBody(){let{options:e}=this,{headers:r}=e,s=!at.default.undefined(e.form),a=!at.default.undefined(e.json),n=!at.default.undefined(e.body),c=s||a||n,f=Ln.withoutBody.has(e.method)&&!(e.method===\"GET\"&&e.allowGetBody);if(this._cannotHaveBody=f,c){if(f)throw new TypeError(`The \\`${e.method}\\` method cannot be used with a body`);if([n,s,a].filter(p=>p).length>1)throw new TypeError(\"The `body`, `json` and `form` options are mutually exclusive\");if(n&&!(e.body instanceof yAe.Readable)&&!at.default.string(e.body)&&!at.default.buffer(e.body)&&!CAe.default(e.body))throw new TypeError(\"The `body` option must be a stream.Readable, string or Buffer\");if(s&&!at.default.object(e.form))throw new TypeError(\"The `form` option must be an Object\");{let p=!at.default.string(r[\"content-type\"]);n?(CAe.default(e.body)&&p&&(r[\"content-type\"]=`multipart/form-data; boundary=${e.body.getBoundary()}`),this[v0]=e.body):s?(p&&(r[\"content-type\"]=\"application/x-www-form-urlencoded\"),this[v0]=new w0.URLSearchParams(e.form).toString()):(p&&(r[\"content-type\"]=\"application/json\"),this[v0]=e.stringifyJson(e.json));let h=await Trt.default(this[v0],e.headers);at.default.undefined(r[\"content-length\"])&&at.default.undefined(r[\"transfer-encoding\"])&&!f&&!at.default.undefined(h)&&(r[\"content-length\"]=String(h))}}else f?this._lockWrite():this._unlockWrite();this[EI]=Number(r[\"content-length\"])||void 0}async _onResponseBase(e){let{options:r}=this,{url:s}=r;this[PAe]=e,r.decompress&&(e=xrt(e));let a=e.statusCode,n=e;n.statusMessage=n.statusMessage?n.statusMessage:EAe.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[DAe]=n.isFromCache,this[mI]=Number(e.headers[\"content-length\"])||void 0,this[eT]=e,e.once(\"end\",()=>{this[mI]=this[yI],this.emit(\"downloadProgress\",this.downloadProgress)}),e.once(\"error\",f=>{e.destroy(),this._beforeError(new tv(f,this))}),e.once(\"aborted\",()=>{this._beforeError(new tv({name:\"Error\",message:\"The server aborted pending request\",code:\"ECONNRESET\"},this))}),this.emit(\"downloadProgress\",this.downloadProgress);let c=e.headers[\"set-cookie\"];if(at.default.object(r.cookieJar)&&c){let f=c.map(async p=>r.cookieJar.setCookie(p,s.toString()));r.ignoreInvalidCookies&&(f=f.map(async p=>p.catch(()=>{})));try{await Promise.all(f)}catch(p){this._beforeError(p);return}}if(r.followRedirect&&e.headers.location&&qrt.has(a)){if(e.resume(),this[po]&&(this[zH](),delete this[po],this[SAe]()),(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[v0]=void 0,delete r.headers[\"content-length\"]),this.redirects.length>=r.maxRedirects){this._beforeError(new tT(this));return}try{let p=Buffer.from(e.headers.location,\"binary\").toString(),h=new w0.URL(p,s),E=h.toString();decodeURI(E),h.hostname!==s.hostname||h.port!==s.port?(\"host\"in r.headers&&delete r.headers.host,\"cookie\"in r.headers&&delete r.headers.cookie,\"authorization\"in r.headers&&delete r.headers.authorization,(r.username||r.password)&&(r.username=\"\",r.password=\"\")):(h.username=r.username,h.password=r.password),this.redirects.push(E),r.url=h;for(let C of r.hooks.beforeRedirect)await C(r,n);this.emit(\"redirect\",n,r),await this._makeRequest()}catch(p){this._beforeError(p);return}return}if(r.isStream&&r.throwHttpErrors&&!Lrt.isResponseOk(n)){this._beforeError(new rT(n));return}e.on(\"readable\",()=>{this[$Q]&&this._read()}),this.on(\"resume\",()=>{e.resume()}),this.on(\"pause\",()=>{e.pause()}),e.once(\"end\",()=>{this.push(null)}),this.emit(\"response\",e);for(let f of this[ZQ])if(!f.headersSent){for(let p in e.headers){let h=r.decompress?p!==\"content-encoding\":!0,E=e.headers[p];h&&f.setHeader(p,E)}f.statusCode=a}}async _onResponse(e){try{await this._onResponseBase(e)}catch(r){this._beforeError(r)}}_onRequest(e){let{options:r}=this,{timeout:s,url:a}=r;brt.default(e),this[zH]=wAe.default(e,s,a);let n=r.cache?\"cacheableResponse\":\"response\";e.once(n,p=>{this._onResponse(p)}),e.once(\"error\",p=>{var h;e.destroy(),(h=e.res)===null||h===void 0||h.removeAllListeners(\"end\"),p=p instanceof wAe.TimeoutError?new sT(p,this.timings,this):new fs(p.message,p,this),this._beforeError(p)}),this[SAe]=Rrt.default(e,this,Yrt),this[po]=e,this.emit(\"uploadProgress\",this.uploadProgress);let c=this[v0],f=this.redirects.length===0?this:e;at.default.nodeStream(c)?(c.pipe(f),c.once(\"error\",p=>{this._beforeError(new iT(p,this))})):(this._unlockWrite(),at.default.undefined(c)?(this._cannotHaveBody||this._noPipe)&&(f.end(),this._lockWrite()):(this._writeRequest(c,void 0,()=>{}),f.end(),this._lockWrite())),this.emit(\"request\",e)}async _createCacheableRequest(e,r){return new Promise((s,a)=>{Object.assign(r,Frt.default(e)),delete r.url;let n,c=XH.get(r.cache)(r,async f=>{f._readableState.autoDestroy=!1,n&&(await n).emit(\"cacheableResponse\",f),s(f)});r.url=e,c.once(\"error\",a),c.once(\"request\",async f=>{n=f,s(n)})})}async _makeRequest(){var e,r,s,a,n;let{options:c}=this,{headers:f}=c;for(let U in f)if(at.default.undefined(f[U]))delete f[U];else if(at.default.null_(f[U]))throw new TypeError(`Use \\`undefined\\` instead of \\`null\\` to delete the \\`${U}\\` header`);if(c.decompress&&at.default.undefined(f[\"accept-encoding\"])&&(f[\"accept-encoding\"]=_rt?\"gzip, deflate, br\":\"gzip, deflate\"),c.cookieJar){let U=await c.cookieJar.getCookieString(c.url.toString());at.default.nonEmptyString(U)&&(c.headers.cookie=U)}for(let U of c.hooks.beforeRequest){let W=await U(c);if(!at.default.undefined(W)){c.request=()=>W;break}}c.body&&this[v0]!==c.body&&(this[v0]=c.body);let{agent:p,request:h,timeout:E,url:C}=c;if(c.dnsCache&&!(\"lookup\"in c)&&(c.lookup=c.dnsCache.lookup),C.hostname===\"unix\"){let U=/(?<socketPath>.+?):(?<path>.+)/.exec(`${C.pathname}${C.search}`);if(U?.groups){let{socketPath:W,path:ee}=U.groups;Object.assign(c,{socketPath:W,path:ee,host:\"\"})}}let S=C.protocol===\"https:\",P;c.http2?P=krt.auto:P=S?Drt.request:EAe.request;let I=(e=c.request)!==null&&e!==void 0?e:P,R=c.cache?this._createCacheableRequest:I;p&&!c.http2&&(c.agent=p[S?\"https\":\"http\"]),c[po]=I,delete c.request,delete c.timeout;let N=c;if(N.shared=(r=c.cacheOptions)===null||r===void 0?void 0:r.shared,N.cacheHeuristic=(s=c.cacheOptions)===null||s===void 0?void 0:s.cacheHeuristic,N.immutableMinTimeToLive=(a=c.cacheOptions)===null||a===void 0?void 0:a.immutableMinTimeToLive,N.ignoreCargoCult=(n=c.cacheOptions)===null||n===void 0?void 0:n.ignoreCargoCult,c.dnsLookupIpVersion!==void 0)try{N.family=vAe.dnsLookupIpVersionToFamily(c.dnsLookupIpVersion)}catch{throw new Error(\"Invalid `dnsLookupIpVersion` option value\")}c.https&&(\"rejectUnauthorized\"in c.https&&(N.rejectUnauthorized=c.https.rejectUnauthorized),c.https.checkServerIdentity&&(N.checkServerIdentity=c.https.checkServerIdentity),c.https.certificateAuthority&&(N.ca=c.https.certificateAuthority),c.https.certificate&&(N.cert=c.https.certificate),c.https.key&&(N.key=c.https.key),c.https.passphrase&&(N.passphrase=c.https.passphrase),c.https.pfx&&(N.pfx=c.https.pfx));try{let U=await R(C,N);at.default.undefined(U)&&(U=P(C,N)),c.request=h,c.timeout=E,c.agent=p,c.https&&(\"rejectUnauthorized\"in c.https&&delete N.rejectUnauthorized,c.https.checkServerIdentity&&delete N.checkServerIdentity,c.https.certificateAuthority&&delete N.ca,c.https.certificate&&delete N.cert,c.https.key&&delete N.key,c.https.passphrase&&delete N.passphrase,c.https.pfx&&delete N.pfx),jrt(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 IAe.CacheError?new nT(U,this):new fs(U.message,U,this)}}async _error(e){try{for(let r of this.options.hooks.beforeError)e=await r(e)}catch(r){e=new fs(r.message,r,this)}this.destroy(e)}_beforeError(e){if(this[CI])return;let{options:r}=this,s=this.retryCount+1;this[CI]=!0,e instanceof fs||(e=new fs(e.message,e,this));let a=e,{response:n}=a;(async()=>{if(n&&!n.body){n.setEncoding(this._readableState.encoding);try{n.rawBody=await Ort.default(n),n.body=n.rawBody.toString()}catch{}}if(this.listenerCount(\"retry\")!==0){let c;try{let f;n&&\"retry-after\"in n.headers&&(f=Number(n.headers[\"retry-after\"]),Number.isNaN(f)?(f=Date.parse(n.headers[\"retry-after\"])-Date.now(),f<=0&&(f=1)):f*=1e3),c=await r.retry.calculateDelay({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:Urt.default({attemptCount:s,retryOptions:r.retry,error:a,retryAfter:f,computedValue:0})})}catch(f){this._error(new fs(f.message,f,this));return}if(c){let f=async()=>{try{for(let p of this.options.hooks.beforeRetry)await p(this.options,a,s)}catch(p){this._error(new fs(p.message,e,this));return}this.destroyed||(this.destroy(),this.emit(\"retry\",s,e))};this[xAe]=setTimeout(f,c);return}}this._error(a)})()}_read(){this[$Q]=!0;let e=this[eT];if(e&&!this[CI]){e.readableLength&&(this[$Q]=!1);let r;for(;(r=e.read())!==null;){this[yI]+=r.length,this[bAe]=!0;let s=this.downloadProgress;s.percent<1&&this.emit(\"downloadProgress\",s),this.push(r)}}}_write(e,r,s){let a=()=>{this._writeRequest(e,r,s)};this.requestInitialized?a():this[ev].push(a)}_writeRequest(e,r,s){this[po].destroyed||(this._progressCallbacks.push(()=>{this[II]+=Buffer.byteLength(e,r);let a=this.uploadProgress;a.percent<1&&this.emit(\"uploadProgress\",a)}),this[po].write(e,r,a=>{!a&&this._progressCallbacks.length>0&&this._progressCallbacks.shift()(),s(a)}))}_final(e){let r=()=>{for(;this._progressCallbacks.length!==0;)this._progressCallbacks.shift()();if(!(po in this)){e();return}if(this[po].destroyed){e();return}this[po].end(s=>{s||(this[EI]=this[II],this.emit(\"uploadProgress\",this.uploadProgress),this[po].emit(\"upload-complete\")),e(s)})};this.requestInitialized?r():this[ev].push(r)}_destroy(e,r){var s;this[CI]=!0,clearTimeout(this[xAe]),po in this&&(this[zH](),!((s=this[eT])===null||s===void 0)&&s.complete||this[po].destroy()),e!==null&&!at.default.undefined(e)&&!(e instanceof fs)&&(e=new fs(e.message,e,this)),r(e)}get _isAboutToError(){return this[CI]}get ip(){var e;return(e=this.socket)===null||e===void 0?void 0:e.remoteAddress}get aborted(){var e,r,s;return((r=(e=this[po])===null||e===void 0?void 0:e.destroyed)!==null&&r!==void 0?r:this.destroyed)&&!(!((s=this[PAe])===null||s===void 0)&&s.complete)}get socket(){var e,r;return(r=(e=this[po])===null||e===void 0?void 0:e.socket)!==null&&r!==void 0?r:void 0}get downloadProgress(){let e;return this[mI]?e=this[yI]/this[mI]:this[mI]===this[yI]?e=1:e=0,{percent:e,transferred:this[yI],total:this[mI]}}get uploadProgress(){let e;return this[EI]?e=this[II]/this[EI]:this[EI]===this[II]?e=1:e=0,{percent:e,transferred:this[II],total:this[EI]}}get timings(){var e;return(e=this[po])===null||e===void 0?void 0:e.timings}get isFromCache(){return this[DAe]}pipe(e,r){if(this[bAe])throw new Error(\"Failed to pipe. The response has been emitted already.\");return e instanceof JH.ServerResponse&&this[ZQ].add(e),super.pipe(e,r)}unpipe(e){return e instanceof JH.ServerResponse&&this[ZQ].delete(e),super.unpipe(e),this}};Ln.default=aT});var nv=_(qu=>{\"use strict\";var Vrt=qu&&qu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Jrt=qu&&qu.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&Vrt(e,t,r)};Object.defineProperty(qu,\"__esModule\",{value:!0});qu.CancelError=qu.ParseError=void 0;var kAe=rv(),ZH=class extends kAe.RequestError{constructor(e,r){let{options:s}=r.request;super(`${e.message} in \"${s.url.toString()}\"`,e,r.request),this.name=\"ParseError\"}};qu.ParseError=ZH;var $H=class extends kAe.RequestError{constructor(e){super(\"Promise was canceled\",{},e),this.name=\"CancelError\"}get isCanceled(){return!0}};qu.CancelError=$H;Jrt(rv(),qu)});var TAe=_(ej=>{\"use strict\";Object.defineProperty(ej,\"__esModule\",{value:!0});var QAe=nv(),Krt=(t,e,r,s)=>{let{rawBody:a}=t;try{if(e===\"text\")return a.toString(s);if(e===\"json\")return a.length===0?\"\":r(a.toString());if(e===\"buffer\")return a;throw new QAe.ParseError({message:`Unknown body type '${e}'`,name:\"Error\"},t)}catch(n){throw new QAe.ParseError(n,t)}};ej.default=Krt});var tj=_(S0=>{\"use strict\";var zrt=S0&&S0.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Xrt=S0&&S0.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&zrt(e,t,r)};Object.defineProperty(S0,\"__esModule\",{value:!0});var Zrt=Ie(\"events\"),$rt=Np(),ent=Que(),lT=nv(),RAe=TAe(),FAe=rv(),tnt=LH(),rnt=qH(),NAe=WH(),nnt=[\"request\",\"response\",\"redirect\",\"uploadProgress\",\"downloadProgress\"];function OAe(t){let e,r,s=new Zrt.EventEmitter,a=new ent((c,f,p)=>{let h=E=>{let C=new FAe.default(void 0,t);C.retryCount=E,C._noPipe=!0,p(()=>C.destroy()),p.shouldReject=!1,p(()=>f(new lT.CancelError(C))),e=C,C.once(\"response\",async I=>{var R;if(I.retryCount=E,I.request.aborted)return;let N;try{N=await rnt.default(C),I.rawBody=N}catch{return}if(C._isAboutToError)return;let U=((R=I.headers[\"content-encoding\"])!==null&&R!==void 0?R:\"\").toLowerCase(),W=[\"gzip\",\"deflate\",\"br\"].includes(U),{options:ee}=C;if(W&&!ee.decompress)I.body=N;else try{I.body=RAe.default(I,ee.responseType,ee.parseJson,ee.encoding)}catch(ie){if(I.body=N.toString(),NAe.isResponseOk(I)){C._beforeError(ie);return}}try{for(let[ie,ue]of ee.hooks.afterResponse.entries())I=await ue(I,async le=>{let me=FAe.default.normalizeArguments(void 0,{...le,retry:{calculateDelay:()=>0},throwHttpErrors:!1,resolveBodyOnly:!1},ee);me.hooks.afterResponse=me.hooks.afterResponse.slice(0,ie);for(let Be of me.hooks.beforeRetry)await Be(me);let pe=OAe(me);return p(()=>{pe.catch(()=>{}),pe.cancel()}),pe})}catch(ie){C._beforeError(new lT.RequestError(ie.message,ie,C));return}if(!NAe.isResponseOk(I)){C._beforeError(new lT.HTTPError(I));return}r=I,c(C.options.resolveBodyOnly?I.body:I)});let S=I=>{if(a.isCanceled)return;let{options:R}=C;if(I instanceof lT.HTTPError&&!R.throwHttpErrors){let{response:N}=I;c(C.options.resolveBodyOnly?N.body:N);return}f(I)};C.once(\"error\",S);let P=C.options.body;C.once(\"retry\",(I,R)=>{var N,U;if(P===((N=R.request)===null||N===void 0?void 0:N.options.body)&&$rt.default.nodeStream((U=R.request)===null||U===void 0?void 0:U.options.body)){S(R);return}h(I)}),tnt.default(C,s,nnt)};h(0)});a.on=(c,f)=>(s.on(c,f),a);let n=c=>{let f=(async()=>{await a;let{options:p}=r.request;return RAe.default(r,c,p.parseJson,p.encoding)})();return Object.defineProperties(f,Object.getOwnPropertyDescriptors(a)),f};return a.json=()=>{let{headers:c}=e.options;return!e.writableFinished&&c.accept===void 0&&(c.accept=\"application/json\"),n(\"json\")},a.buffer=()=>n(\"buffer\"),a.text=()=>n(\"text\"),a}S0.default=OAe;Xrt(nv(),S0)});var LAe=_(rj=>{\"use strict\";Object.defineProperty(rj,\"__esModule\",{value:!0});var int=nv();function snt(t,...e){let r=(async()=>{if(t instanceof int.RequestError)try{for(let a of e)if(a)for(let n of a)t=await n(t)}catch(a){t=a}throw t})(),s=()=>r;return r.json=s,r.text=s,r.buffer=s,r.on=s,r}rj.default=snt});var _Ae=_(nj=>{\"use strict\";Object.defineProperty(nj,\"__esModule\",{value:!0});var MAe=Np();function UAe(t){for(let e of Object.values(t))(MAe.default.plainObject(e)||MAe.default.array(e))&&UAe(e);return Object.freeze(t)}nj.default=UAe});var jAe=_(HAe=>{\"use strict\";Object.defineProperty(HAe,\"__esModule\",{value:!0})});var ij=_(Nc=>{\"use strict\";var ont=Nc&&Nc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),ant=Nc&&Nc.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&ont(e,t,r)};Object.defineProperty(Nc,\"__esModule\",{value:!0});Nc.defaultHandler=void 0;var GAe=Np(),Fc=tj(),lnt=LAe(),uT=rv(),cnt=_Ae(),unt={RequestError:Fc.RequestError,CacheError:Fc.CacheError,ReadError:Fc.ReadError,HTTPError:Fc.HTTPError,MaxRedirectsError:Fc.MaxRedirectsError,TimeoutError:Fc.TimeoutError,ParseError:Fc.ParseError,CancelError:Fc.CancelError,UnsupportedProtocolError:Fc.UnsupportedProtocolError,UploadError:Fc.UploadError},fnt=async t=>new Promise(e=>{setTimeout(e,t)}),{normalizeArguments:cT}=uT.default,qAe=(...t)=>{let e;for(let r of t)e=cT(void 0,r,e);return e},Ant=t=>t.isStream?new uT.default(void 0,t):Fc.default(t),pnt=t=>\"defaults\"in t&&\"options\"in t.defaults,hnt=[\"get\",\"post\",\"put\",\"patch\",\"head\",\"delete\"];Nc.defaultHandler=(t,e)=>e(t);var WAe=(t,e)=>{if(t)for(let r of t)r(e)},YAe=t=>{t._rawHandlers=t.handlers,t.handlers=t.handlers.map(s=>(a,n)=>{let c,f=s(a,p=>(c=n(p),c));if(f!==c&&!a.isStream&&c){let p=f,{then:h,catch:E,finally:C}=p;Object.setPrototypeOf(p,Object.getPrototypeOf(c)),Object.defineProperties(p,Object.getOwnPropertyDescriptors(c)),p.then=h,p.catch=E,p.finally=C}return f});let e=(s,a={},n)=>{var c,f;let p=0,h=E=>t.handlers[p++](E,p===t.handlers.length?Ant:h);if(GAe.default.plainObject(s)){let E={...s,...a};uT.setNonEnumerableProperties([s,a],E),a=E,s=void 0}try{let E;try{WAe(t.options.hooks.init,a),WAe((c=a.hooks)===null||c===void 0?void 0:c.init,a)}catch(S){E=S}let C=cT(s,a,n??t.options);if(C[uT.kIsNormalizedAlready]=!0,E)throw new Fc.RequestError(E.message,E,C);return h(C)}catch(E){if(a.isStream)throw E;return lnt.default(E,t.options.hooks.beforeError,(f=a.hooks)===null||f===void 0?void 0:f.beforeError)}};e.extend=(...s)=>{let a=[t.options],n=[...t._rawHandlers],c;for(let f of s)pnt(f)?(a.push(f.defaults.options),n.push(...f.defaults._rawHandlers),c=f.defaults.mutableDefaults):(a.push(f),\"handlers\"in f&&n.push(...f.handlers),c=f.mutableDefaults);return n=n.filter(f=>f!==Nc.defaultHandler),n.length===0&&n.push(Nc.defaultHandler),YAe({options:qAe(...a),handlers:n,mutableDefaults:!!c})};let r=async function*(s,a){let n=cT(s,a,t.options);n.resolveBodyOnly=!1;let c=n.pagination;if(!GAe.default.object(c))throw new TypeError(\"`options.pagination` must be implemented\");let f=[],{countLimit:p}=c,h=0;for(;h<c.requestLimit;){h!==0&&await fnt(c.backoff);let E=await e(void 0,void 0,n),C=await c.transform(E),S=[];for(let I of C)if(c.filter(I,f,S)&&(!c.shouldContinue(I,f,S)||(yield I,c.stackAllItems&&f.push(I),S.push(I),--p<=0)))return;let P=c.paginate(E,f,S);if(P===!1)return;P===E.request.options?n=E.request.options:P!==void 0&&(n=cT(void 0,P,n)),h++}};e.paginate=r,e.paginate.all=async(s,a)=>{let n=[];for await(let c of r(s,a))n.push(c);return n},e.paginate.each=r,e.stream=(s,a)=>e(s,{...a,isStream:!0});for(let s of hnt)e[s]=(a,n)=>e(a,{...n,method:s}),e.stream[s]=(a,n)=>e(a,{...n,method:s,isStream:!0});return Object.assign(e,unt),Object.defineProperty(e,\"defaults\",{value:t.mutableDefaults?t:cnt.default(t),writable:t.mutableDefaults,configurable:t.mutableDefaults,enumerable:!0}),e.mergeOptions=qAe,e};Nc.default=YAe;ant(jAe(),Nc)});var KAe=_((Op,fT)=>{\"use strict\";var gnt=Op&&Op.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),VAe=Op&&Op.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&gnt(e,t,r)};Object.defineProperty(Op,\"__esModule\",{value:!0});var dnt=Ie(\"url\"),JAe=ij(),mnt={options:{method:\"GET\",retry:{limit:2,methods:[\"GET\",\"PUT\",\"HEAD\",\"DELETE\",\"OPTIONS\",\"TRACE\"],statusCodes:[408,413,429,500,502,503,504,521,522,524],errorCodes:[\"ETIMEDOUT\",\"ECONNRESET\",\"EADDRINUSE\",\"ECONNREFUSED\",\"EPIPE\",\"ENOTFOUND\",\"ENETUNREACH\",\"EAI_AGAIN\"],maxRetryAfter:void 0,calculateDelay:({computedValue:t})=>t},timeout:{},headers:{\"user-agent\":\"got (https://github.com/sindresorhus/got)\"},hooks:{init:[],beforeRequest:[],beforeRedirect:[],beforeRetry:[],beforeError:[],afterResponse:[]},cache:void 0,dnsCache:void 0,decompress:!0,throwHttpErrors:!0,followRedirect:!0,isStream:!1,responseType:\"text\",resolveBodyOnly:!1,maxRedirects:10,prefixUrl:\"\",methodRewriting:!0,ignoreInvalidCookies:!1,context:{},http2:!1,allowGetBody:!1,https:void 0,pagination:{transform:t=>t.request.options.responseType===\"json\"?t.body:JSON.parse(t.body),paginate:t=>{if(!Reflect.has(t.headers,\"link\"))return!1;let e=t.headers.link.split(\",\"),r;for(let s of e){let a=s.split(\";\");if(a[1].includes(\"next\")){r=a[0].trimStart().trim(),r=r.slice(1,-1);break}}return r?{url:new dnt.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:[JAe.defaultHandler],mutableDefaults:!1},sj=JAe.default(mnt);Op.default=sj;fT.exports=sj;fT.exports.default=sj;fT.exports.__esModule=!0;VAe(ij(),Op);VAe(tj(),Op)});var nn={};Vt(nn,{Method:()=>tpe,del:()=>wnt,get:()=>lj,getNetworkSettings:()=>epe,post:()=>cj,put:()=>Cnt,request:()=>iv});async function oj(t){return Yl(XAe,t,()=>ce.readFilePromise(t).then(e=>(XAe.set(t,e),e)))}function Int({statusCode:t,statusMessage:e},r){let s=Ht(r,t,ht.NUMBER),a=`https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/${t}`;return KE(r,`${s}${e?` (${e})`:\"\"}`,a)}async function AT(t,{configuration:e,customErrorMessage:r}){try{return await t}catch(s){if(s.name!==\"HTTPError\")throw s;let a=r?.(s,e)??s.response.body?.error;a==null&&(s.message.startsWith(\"Response code\")?a=\"The remote server failed to provide the requested resource\":a=s.message),s.code===\"ETIMEDOUT\"&&s.event===\"socket\"&&(a+=`(can be increased via ${Ht(e,\"httpTimeout\",ht.SETTING)})`);let n=new jt(35,a,c=>{s.response&&c.reportError(35,`  ${Kf(e,{label:\"Response Code\",value:_u(ht.NO_HINT,Int(s.response,e))})}`),s.request&&(c.reportError(35,`  ${Kf(e,{label:\"Request Method\",value:_u(ht.NO_HINT,s.request.options.method)})}`),c.reportError(35,`  ${Kf(e,{label:\"Request URL\",value:_u(ht.URL,s.request.requestUrl)})}`)),s.request.redirects.length>0&&c.reportError(35,`  ${Kf(e,{label:\"Request Redirects\",value:_u(ht.NO_HINT,Z4(e,s.request.redirects,ht.URL))})}`),s.request.retryCount===s.request.options.retry.limit&&c.reportError(35,`  ${Kf(e,{label:\"Request Retry Count\",value:_u(ht.NO_HINT,`${Ht(e,s.request.retryCount,ht.NUMBER)} (can be increased via ${Ht(e,\"httpRetry\",ht.SETTING)})`)})}`)});throw n.originalError=s,n}}function epe(t,e){let r=[...e.configuration.get(\"networkSettings\")].sort(([c],[f])=>f.length-c.length),s={enableNetwork:void 0,httpsCaFilePath:void 0,httpProxy:void 0,httpsProxy:void 0,httpsKeyFilePath:void 0,httpsCertFilePath:void 0},a=Object.keys(s),n=typeof t==\"string\"?new URL(t):t;for(let[c,f]of r)if(aj.default.isMatch(n.hostname,c))for(let p of a){let h=f.get(p);h!==null&&typeof s[p]>\"u\"&&(s[p]=h)}for(let c of a)typeof s[c]>\"u\"&&(s[c]=e.configuration.get(c));return s}async function iv(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c=\"GET\",wrapNetworkRequest:f}){let p={target:t,body:e,configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c},h=async()=>await Bnt(t,e,p),E=typeof f<\"u\"?await f(h,p):h;return await(await r.reduceHook(S=>S.wrapNetworkRequest,E,p))()}async function lj(t,{configuration:e,jsonResponse:r,customErrorMessage:s,wrapNetworkRequest:a,...n}){let c=()=>AT(iv(t,null,{configuration:e,wrapNetworkRequest:a,...n}),{configuration:e,customErrorMessage:s}).then(p=>p.body),f=await(typeof a<\"u\"?c():Yl(zAe,t,()=>c().then(p=>(zAe.set(t,p),p))));return r?JSON.parse(f.toString()):f}async function Cnt(t,e,{customErrorMessage:r,...s}){return(await AT(iv(t,e,{...s,method:\"PUT\"}),{customErrorMessage:r,configuration:s.configuration})).body}async function cj(t,e,{customErrorMessage:r,...s}){return(await AT(iv(t,e,{...s,method:\"POST\"}),{customErrorMessage:r,configuration:s.configuration})).body}async function wnt(t,{customErrorMessage:e,...r}){return(await AT(iv(t,null,{...r,method:\"DELETE\"}),{customErrorMessage:e,configuration:r.configuration})).body}async function Bnt(t,e,{configuration:r,headers:s,jsonRequest:a,jsonResponse:n,method:c=\"GET\"}){let f=typeof t==\"string\"?new URL(t):t,p=epe(f,{configuration:r});if(p.enableNetwork===!1)throw new jt(80,`Request to '${f.href}' has been blocked because of your configuration settings`);if(f.protocol===\"http:\"&&!aj.default.isMatch(f.hostname,r.get(\"unsafeHttpWhitelist\")))throw new jt(81,`Unsafe http requests must be explicitly whitelisted in your configuration (${f.hostname})`);let h={headers:s,method:c};h.responseType=n?\"json\":\"buffer\",e!==null&&(Buffer.isBuffer(e)||!a&&typeof e==\"string\"?h.body=e:h.json=e);let E=r.get(\"httpTimeout\"),C=r.get(\"httpRetry\"),S=r.get(\"enableStrictSsl\"),P=p.httpsCaFilePath,I=p.httpsCertFilePath,R=p.httpsKeyFilePath,{default:N}=await Promise.resolve().then(()=>ut(KAe())),U=P?await oj(P):void 0,W=I?await oj(I):void 0,ee=R?await oj(R):void 0,ie={rejectUnauthorized:S,ca:U,cert:W,key:ee},ue={http:p.httpProxy?new vue({proxy:p.httpProxy,proxyRequestOptions:ie}):ynt,https:p.httpsProxy?new Sue({proxy:p.httpsProxy,proxyRequestOptions:ie}):Ent},le=N.extend({timeout:{socket:E},retry:C,agent:ue,https:{rejectUnauthorized:S,certificateAuthority:U,certificate:W,key:ee},...h});return r.getLimit(\"networkConcurrency\")(()=>le(f))}var ZAe,$Ae,aj,zAe,XAe,ynt,Ent,tpe,pT=Xe(()=>{Dt();Due();ZAe=Ie(\"https\"),$Ae=Ie(\"http\"),aj=ut(Go());Tc();xc();Pc();zAe=new Map,XAe=new Map,ynt=new $Ae.Agent({keepAlive:!0}),Ent=new ZAe.Agent({keepAlive:!0});tpe=(a=>(a.GET=\"GET\",a.PUT=\"PUT\",a.POST=\"POST\",a.DELETE=\"DELETE\",a))(tpe||{})});var Ui={};Vt(Ui,{availableParallelism:()=>fj,getArchitecture:()=>sv,getArchitectureName:()=>Pnt,getArchitectureSet:()=>uj,getCaller:()=>Tnt,major:()=>vnt,openUrl:()=>Snt});function bnt(){if(process.platform!==\"linux\")return null;let t;try{t=ce.readFileSync(Dnt)}catch{}if(typeof t<\"u\"){if(t&&(t.includes(\"GLIBC\")||t.includes(\"GNU libc\")||t.includes(\"GNU C Library\")))return\"glibc\";if(t&&t.includes(\"musl\"))return\"musl\"}let r=(process.report?.getReport()??{}).sharedObjects??[],s=/\\/(?:(ld-linux-|[^/]+-linux-gnu\\/)|(libc.musl-|ld-musl-))/;return p0(r,a=>{let n=a.match(s);if(!n)return p0.skip;if(n[1])return\"glibc\";if(n[2])return\"musl\";throw new Error(\"Assertion failed: Expected the libc variant to have been detected\")})??null}function sv(){return npe=npe??{os:(process.env.YARN_IS_TEST_ENV?process.env.YARN_OS_OVERRIDE:void 0)??process.platform,cpu:(process.env.YARN_IS_TEST_ENV?process.env.YARN_CPU_OVERRIDE:void 0)??process.arch,libc:(process.env.YARN_IS_TEST_ENV?process.env.YARN_LIBC_OVERRIDE:void 0)??bnt()}}function Pnt(t=sv()){return t.libc?`${t.os}-${t.cpu}-${t.libc}`:`${t.os}-${t.cpu}`}function uj(){let t=sv();return ipe=ipe??{os:[t.os],cpu:[t.cpu],libc:t.libc?[t.libc]:[]}}function Qnt(t){let e=xnt.exec(t);if(!e)return null;let r=e[2]&&e[2].indexOf(\"native\")===0,s=e[2]&&e[2].indexOf(\"eval\")===0,a=knt.exec(e[2]);return s&&a!=null&&(e[2]=a[1],e[3]=a[2],e[4]=a[3]),{file:r?null:e[2],methodName:e[1]||\"<unknown>\",arguments:r?[e[2]]:[],line:e[3]?+e[3]:null,column:e[4]?+e[4]:null}}function Tnt(){let e=new Error().stack.split(`\n`)[3];return Qnt(e)}function fj(){return typeof hT.default.availableParallelism<\"u\"?hT.default.availableParallelism():Math.max(1,hT.default.cpus().length)}var hT,vnt,rpe,Snt,Dnt,npe,ipe,xnt,knt,gT=Xe(()=>{Dt();hT=ut(Ie(\"os\"));dT();Pc();vnt=Number(process.versions.node.split(\".\")[0]),rpe=new Map([[\"darwin\",\"open\"],[\"linux\",\"xdg-open\"],[\"win32\",\"explorer.exe\"]]).get(process.platform),Snt=typeof rpe<\"u\"?async t=>{try{return await Aj(rpe,[t],{cwd:J.cwd()}),!0}catch{return!1}}:void 0,Dnt=\"/usr/bin/ldd\";xnt=/^\\s*at (.*?) ?\\(((?:file|https?|blob|chrome-extension|native|eval|webpack|<anonymous>|\\/|[a-z]:\\\\|\\\\\\\\).*?)(?::(\\d+))?(?::(\\d+))?\\)?\\s*$/i,knt=/\\((\\S*)(?::(\\d+))(?::(\\d+))\\)/});function yj(t,e,r,s,a){let n=YB(r);if(s.isArray||s.type===\"ANY\"&&Array.isArray(n))return Array.isArray(n)?n.map((c,f)=>pj(t,`${e}[${f}]`,c,s,a)):String(n).split(/,/).map(c=>pj(t,e,c,s,a));if(Array.isArray(n))throw new Error(`Non-array configuration settings \"${e}\" cannot be an array`);return pj(t,e,r,s,a)}function pj(t,e,r,s,a){let n=YB(r);switch(s.type){case\"ANY\":return NQ(n);case\"SHAPE\":return Ont(t,e,r,s,a);case\"MAP\":return Lnt(t,e,r,s,a)}if(n===null&&!s.isNullable&&s.default!==null)throw new Error(`Non-nullable configuration settings \"${e}\" cannot be set to null`);if(\"values\"in s&&s.values?.includes(n))return n;let f=(()=>{if(s.type===\"BOOLEAN\"&&typeof n!=\"string\")return kB(n);if(typeof n!=\"string\")throw new Error(`Expected configuration setting \"${e}\" to be a string, got ${typeof n}`);let p=Vk(n,{env:t.env});switch(s.type){case\"ABSOLUTE_PATH\":{let h=a,E=H8(r);return E&&E[0]!==\"<\"&&(h=J.dirname(E)),J.resolve(h,fe.toPortablePath(p))}case\"LOCATOR_LOOSE\":return Qp(p,!1);case\"NUMBER\":return parseInt(p);case\"LOCATOR\":return Qp(p);case\"BOOLEAN\":return kB(p);case\"DURATION\":return Jk(p,s.unit);default:return p}})();if(\"values\"in s&&s.values&&!s.values.includes(f))throw new Error(`Invalid value, expected one of ${s.values.join(\", \")}`);return f}function Ont(t,e,r,s,a){let n=YB(r);if(typeof n!=\"object\"||Array.isArray(n))throw new nt(`Object configuration settings \"${e}\" must be an object`);let c=Ej(t,s,{ignoreArrays:!0});if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=`${e}.${f}`;if(!s.properties[f])throw new nt(`Unrecognized configuration settings found: ${e}.${f} - run \"yarn config\" to see the list of settings supported in Yarn`);c.set(f,yj(t,h,p,s.properties[f],a))}return c}function Lnt(t,e,r,s,a){let n=YB(r),c=new Map;if(typeof n!=\"object\"||Array.isArray(n))throw new nt(`Map configuration settings \"${e}\" must be an object`);if(n===null)return c;for(let[f,p]of Object.entries(n)){let h=s.normalizeKeys?s.normalizeKeys(f):f,E=`${e}['${h}']`,C=s.valueDefinition;c.set(h,yj(t,E,p,C,a))}return c}function Ej(t,e,{ignoreArrays:r=!1}={}){switch(e.type){case\"SHAPE\":{if(e.isArray&&!r)return[];let s=new Map;for(let[a,n]of Object.entries(e.properties))s.set(a,Ej(t,n));return s}case\"MAP\":return e.isArray&&!r?[]:new Map;case\"ABSOLUTE_PATH\":return e.default===null?null:t.projectCwd===null?Array.isArray(e.default)?e.default.map(s=>J.normalize(s)):J.isAbsolute(e.default)?J.normalize(e.default):e.isNullable?null:void 0:Array.isArray(e.default)?e.default.map(s=>J.resolve(t.projectCwd,s)):J.resolve(t.projectCwd,e.default);case\"DURATION\":return Jk(e.default,e.unit);default:return e.default}}function yT(t,e,r){if(e.type===\"SECRET\"&&typeof t==\"string\"&&r.hideSecrets)return Nnt;if(e.type===\"ABSOLUTE_PATH\"&&typeof t==\"string\"&&r.getNativePaths)return fe.fromPortablePath(t);if(e.isArray&&Array.isArray(t)){let s=[];for(let a of t)s.push(yT(a,e,r));return s}if(e.type===\"MAP\"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=yT(n,e.valueDefinition,r);typeof c<\"u\"&&s.set(a,c)}return s}if(e.type===\"SHAPE\"&&t instanceof Map){if(t.size===0)return;let s=new Map;for(let[a,n]of t.entries()){let c=e.properties[a],f=yT(n,c,r);typeof f<\"u\"&&s.set(a,f)}return s}return t}function Mnt(){let t={};for(let[e,r]of Object.entries(process.env))e=e.toLowerCase(),e.startsWith(ET)&&(e=(0,ope.default)(e.slice(ET.length)),t[e]=r);return t}function gj(){let t=`${ET}rc_filename`;for(let[e,r]of Object.entries(process.env))if(e.toLowerCase()===t&&typeof r==\"string\")return r;return dj}async function spe(t){try{return await ce.readFilePromise(t)}catch{return Buffer.of()}}async function Unt(t,e){return Buffer.compare(...await Promise.all([spe(t),spe(e)]))===0}async function _nt(t,e){let[r,s]=await Promise.all([ce.statPromise(t),ce.statPromise(e)]);return r.dev===s.dev&&r.ino===s.ino}async function jnt({configuration:t,selfPath:e}){let r=t.get(\"yarnPath\");return t.get(\"ignorePath\")||r===null||r===e||await Hnt(r,e)?null:r}var ope,Lp,ape,lpe,cpe,hj,Rnt,ov,Fnt,Mp,ET,dj,Nnt,wI,upe,mj,IT,mT,Hnt,ze,av=Xe(()=>{Dt();wc();ope=ut(Sre()),Lp=ut(Fd());Yt();ape=ut(yne()),lpe=Ie(\"module\"),cpe=ut(Ld()),hj=Ie(\"stream\");nue();oI();R8();F8();N8();gue();O8();tm();Iue();LQ();xc();I0();pT();Pc();gT();Rp();Wo();Rnt=function(){if(!Lp.GITHUB_ACTIONS||!process.env.GITHUB_EVENT_PATH)return!1;let t=fe.toPortablePath(process.env.GITHUB_EVENT_PATH),e;try{e=ce.readJsonSync(t)}catch{return!1}return!(!(\"repository\"in e)||!e.repository||(e.repository.private??!0))}(),ov=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\"]),Fnt=new Set([\"isTestEnv\",\"injectNpmUser\",\"injectNpmPassword\",\"injectNpm2FaToken\",\"zipDataEpilogue\",\"cacheCheckpointOverride\",\"cacheVersionOverride\",\"lockfileVersionOverride\",\"osOverride\",\"cpuOverride\",\"libcOverride\",\"binFolder\",\"version\",\"flags\",\"profile\",\"gpg\",\"ignoreNode\",\"wrapOutput\",\"home\",\"confDir\",\"registry\",\"ignoreCwd\"]),Mp=/^(?!v)[a-z0-9._-]+$/i,ET=\"yarn_\",dj=\".yarnrc.yml\",Nnt=\"********\",wI=(C=>(C.ANY=\"ANY\",C.BOOLEAN=\"BOOLEAN\",C.ABSOLUTE_PATH=\"ABSOLUTE_PATH\",C.LOCATOR=\"LOCATOR\",C.LOCATOR_LOOSE=\"LOCATOR_LOOSE\",C.NUMBER=\"NUMBER\",C.STRING=\"STRING\",C.DURATION=\"DURATION\",C.SECRET=\"SECRET\",C.SHAPE=\"SHAPE\",C.MAP=\"MAP\",C))(wI||{}),upe=ht,mj=(c=>(c.MILLISECONDS=\"ms\",c.SECONDS=\"s\",c.MINUTES=\"m\",c.HOURS=\"h\",c.DAYS=\"d\",c.WEEKS=\"w\",c))(mj||{}),IT=(r=>(r.JUNCTIONS=\"junctions\",r.SYMLINKS=\"symlinks\",r))(IT||{}),mT={lastUpdateCheck:{description:\"Last timestamp we checked whether new Yarn versions were available\",type:\"STRING\",default:null},yarnPath:{description:\"Path to the local executable that must be used over the global one\",type:\"ABSOLUTE_PATH\",default:null},ignorePath:{description:\"If true, the local executable will be ignored when using the global one\",type:\"BOOLEAN\",default:!1},globalFolder:{description:\"Folder where all system-global files are stored\",type:\"ABSOLUTE_PATH\",default:G8()},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:gj()},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:Zk,defaultText:\"<dynamic>\"},enableHyperlinks:{description:\"If true, the CLI is allowed to use hyperlinks in its output\",type:\"BOOLEAN\",default:X4,defaultText:\"<dynamic>\"},enableInlineBuilds:{description:\"If true, the CLI will print the build output on the command line\",type:\"BOOLEAN\",default:Lp.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:!Lp.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:!Lp.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\",type:\"DURATION\",unit:\"ms\",default:\"1m\"},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:fj()},taskPoolMode:{description:\"Execution strategy for heavy tasks\",type:\"STRING\",values:[\"async\",\"workers\"],default:\"workers\"},networkSettings:{description:\"Network settings per hostname (glob patterns are supported)\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{httpsCaFilePath:{description:\"Path to file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},enableNetwork:{description:\"If false, the package manager will refuse to use the network if required to\",type:\"BOOLEAN\",default:null},httpProxy:{description:\"URL of the http proxy that must be used for outgoing http requests\",type:\"STRING\",default:null},httpsProxy:{description:\"URL of the http proxy that must be used for outgoing https requests\",type:\"STRING\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null}}}},httpsCaFilePath:{description:\"A path to a file containing one or multiple Certificate Authority signing certificates\",type:\"ABSOLUTE_PATH\",default:null},httpsKeyFilePath:{description:\"Path to file containing private key in PEM format\",type:\"ABSOLUTE_PATH\",default:null},httpsCertFilePath:{description:\"Path to file containing certificate chain in PEM format\",type:\"ABSOLUTE_PATH\",default:null},enableStrictSsl:{description:\"If false, SSL certificate errors will be ignored\",type:\"BOOLEAN\",default:!0},logFilters:{description:\"Overrides for log levels\",type:\"SHAPE\",isArray:!0,concatenateValues:!0,properties:{code:{description:\"Code of the messages covered by this override\",type:\"STRING\",default:void 0},text:{description:\"Code of the texts covered by this override\",type:\"STRING\",default:void 0},pattern:{description:\"Code of the patterns covered by this override\",type:\"STRING\",default:void 0},level:{description:\"Log level override, set to null to remove override\",type:\"STRING\",values:Object.values(eQ),isNullable:!0,default:void 0}}},enableTelemetry:{description:\"If true, telemetry will be periodically sent, following the rules in https://yarnpkg.com/advanced/telemetry\",type:\"BOOLEAN\",default:!0},telemetryInterval:{description:\"Minimal amount of time between two telemetry uploads\",type:\"DURATION\",unit:\"d\",default:\"7d\"},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:Lp.isPR&&Rnt,defaultText:\"<true on public PRs>\"},enableScripts:{description:\"If true, packages are allowed to have install scripts by default\",type:\"BOOLEAN\",default:!0},enableStrictSettings:{description:\"If true, unknown settings will cause Yarn to abort\",type:\"BOOLEAN\",default:!0},enableImmutableCache:{description:\"If true, the cache is reputed immutable and actions that would modify it will throw\",type:\"BOOLEAN\",default:!1},enableCacheClean:{description:\"If false, disallows the `cache clean` command\",type:\"BOOLEAN\",default:!0},checksumBehavior:{description:\"Enumeration defining what to do when a checksum doesn't match expectations\",type:\"STRING\",default:\"throw\"},injectEnvironmentFiles:{description:\"List of all the environment files that Yarn should inject inside the process when it starts\",type:\"ABSOLUTE_PATH\",default:[\".env.yarn?\"],isArray:!0},packageExtensions:{description:\"Map of package corrections to apply on the dependency tree\",type:\"MAP\",valueDefinition:{description:\"The extension that will be applied to any package whose version matches the specified range\",type:\"SHAPE\",properties:{dependencies:{description:\"The set of dependencies that must be made available to the current package in order for it to work properly\",type:\"MAP\",valueDefinition:{description:\"A range\",type:\"STRING\"}},peerDependencies:{description:\"Inherited dependencies - the consumer of the package will be tasked to provide them\",type:\"MAP\",valueDefinition:{description:\"A semver range\",type:\"STRING\"}},peerDependenciesMeta:{description:\"Extra information related to the dependencies listed in the peerDependencies field\",type:\"MAP\",valueDefinition:{description:\"The peerDependency meta\",type:\"SHAPE\",properties:{optional:{description:\"If true, the selected peer dependency will be marked as optional by the package manager and the consumer omitting it won't be reported as an error\",type:\"BOOLEAN\",default:!1}}}}}}}};Hnt=process.platform===\"win32\"?Unt:_nt;ze=class t{constructor(e){this.isCI=Lp.isCI;this.projectCwd=null;this.plugins=new Map;this.settings=new Map;this.values=new Map;this.sources=new Map;this.invalid=new Map;this.env={};this.limits=new Map;this.packageExtensions=null;this.startingCwd=e}static{this.deleteProperty=Symbol()}static{this.telemetry=null}static create(e,r,s){let a=new t(e);typeof r<\"u\"&&!(r instanceof Map)&&(a.projectCwd=r),a.importSettings(mT);let n=typeof s<\"u\"?s:r instanceof Map?r:new Map;for(let[c,f]of n)a.activatePlugin(c,f);return a}static async find(e,r,{strict:s=!0,usePathCheck:a=null,useRc:n=!0}={}){let c=Mnt();delete c.rcFilename;let f=new t(e),p=await t.findRcFiles(e),h=await t.findFolderRcFile(fI());h&&(p.find(me=>me.path===h.path)||p.unshift(h));let E=Eue(p.map(le=>[le.path,le.data])),C=vt.dot,S=new Set(Object.keys(mT)),P=({yarnPath:le,ignorePath:me,injectEnvironmentFiles:pe})=>({yarnPath:le,ignorePath:me,injectEnvironmentFiles:pe}),I=({yarnPath:le,ignorePath:me,injectEnvironmentFiles:pe,...Be})=>{let Ce={};for(let[g,we]of Object.entries(Be))S.has(g)&&(Ce[g]=we);return Ce},R=({yarnPath:le,ignorePath:me,...pe})=>{let Be={};for(let[Ce,g]of Object.entries(pe))S.has(Ce)||(Be[Ce]=g);return Be};if(f.importSettings(P(mT)),f.useWithSource(\"<environment>\",P(c),e,{strict:!1}),E){let[le,me]=E;f.useWithSource(le,P(me),C,{strict:!1})}if(a){if(await jnt({configuration:f,selfPath:a})!==null)return f;f.useWithSource(\"<override>\",{ignorePath:!0},e,{strict:!1,overwrite:!0})}let N=await t.findProjectCwd(e);f.startingCwd=e,f.projectCwd=N;let U=Object.assign(Object.create(null),process.env);f.env=U;let W=await Promise.all(f.get(\"injectEnvironmentFiles\").map(async le=>{let me=le.endsWith(\"?\")?await ce.readFilePromise(le.slice(0,-1),\"utf8\").catch(()=>\"\"):await ce.readFilePromise(le,\"utf8\");return(0,ape.parse)(me)}));for(let le of W)for(let[me,pe]of Object.entries(le))f.env[me]=Vk(pe,{env:U});if(f.importSettings(I(mT)),f.useWithSource(\"<environment>\",I(c),e,{strict:s}),E){let[le,me]=E;f.useWithSource(le,I(me),C,{strict:s})}let ee=le=>\"default\"in le?le.default:le,ie=new Map([[\"@@core\",rue]]);if(r!==null)for(let le of r.plugins.keys())ie.set(le,ee(r.modules.get(le)));for(let[le,me]of ie)f.activatePlugin(le,me);let ue=new Map([]);if(r!==null){let le=new Map;for(let[Be,Ce]of r.modules)le.set(Be,()=>Ce);let me=new Set,pe=async(Be,Ce)=>{let{factory:g,name:we}=Pp(Be);if(!g||me.has(we))return;let ye=new Map(le),Ae=Z=>{if((0,lpe.isBuiltin)(Z))return Pp(Z);if(ye.has(Z))return ye.get(Z)();throw new nt(`This plugin cannot access the package referenced via ${Z} which is neither a builtin, nor an exposed entry`)},se=await qE(async()=>ee(await g(Ae)),Z=>`${Z} (when initializing ${we}, defined in ${Ce})`);le.set(we,()=>se),me.add(we),ue.set(we,se)};if(c.plugins)for(let Be of c.plugins.split(\";\")){let Ce=J.resolve(e,fe.toPortablePath(Be));await pe(Ce,\"<environment>\")}for(let{path:Be,cwd:Ce,data:g}of p)if(n&&Array.isArray(g.plugins))for(let we of g.plugins){let ye=typeof we!=\"string\"?we.path:we,Ae=we?.spec??\"\",se=we?.checksum??\"\";if(ov.has(Ae))continue;let Z=J.resolve(Ce,fe.toPortablePath(ye));if(!await ce.existsPromise(Z)){if(!Ae){let mt=Ht(f,J.basename(Z,\".cjs\"),ht.NAME),j=Ht(f,\".gitignore\",ht.NAME),rt=Ht(f,f.values.get(\"rcFilename\"),ht.NAME),Fe=Ht(f,\"https://yarnpkg.com/getting-started/qa#which-files-should-be-gitignored\",ht.URL);throw new nt(`Missing source for the ${mt} plugin - please try to remove the plugin from ${rt} then reinstall it manually. This error usually occurs because ${j} is incorrect, check ${Fe} to make sure your plugin folder isn't gitignored.`)}if(!Ae.match(/^https?:/)){let mt=Ht(f,J.basename(Z,\".cjs\"),ht.NAME),j=Ht(f,f.values.get(\"rcFilename\"),ht.NAME);throw new nt(`Failed to recognize the source for the ${mt} plugin - please try to delete the plugin from ${j} then reinstall it manually.`)}let De=await lj(Ae,{configuration:f}),Re=us(De);if(se&&se!==Re){let mt=Ht(f,J.basename(Z,\".cjs\"),ht.NAME),j=Ht(f,f.values.get(\"rcFilename\"),ht.NAME),rt=Ht(f,`yarn plugin import ${Ae}`,ht.CODE);throw new nt(`Failed to fetch the ${mt} plugin from its remote location: its checksum seems to have changed. If this is expected, please remove the plugin from ${j} then run ${rt} to reimport it.`)}await ce.mkdirPromise(J.dirname(Z),{recursive:!0}),await ce.writeFilePromise(Z,De)}await pe(Z,Be)}}for(let[le,me]of ue)f.activatePlugin(le,me);if(f.useWithSource(\"<environment>\",R(c),e,{strict:s}),E){let[le,me]=E;f.useWithSource(le,R(me),C,{strict:s})}return f.get(\"enableGlobalCache\")&&(f.values.set(\"cacheFolder\",`${f.get(\"globalFolder\")}/cache`),f.sources.set(\"cacheFolder\",\"<internal>\")),f}static async findRcFiles(e){let r=gj(),s=[],a=e,n=null;for(;a!==n;){n=a;let c=J.join(n,r);if(ce.existsSync(c)){let f,p;try{p=await ce.readFilePromise(c,\"utf8\"),f=ls(p)}catch{let h=\"\";throw p?.match(/^\\s+(?!-)[^:]+\\s+\\S+/m)&&(h=\" (in particular, make sure you list the colons after each key name)\"),new nt(`Parse error when loading ${c}; please check it's proper Yaml${h}`)}s.unshift({path:c,cwd:n,data:f})}a=J.dirname(n)}return s}static async findFolderRcFile(e){let r=J.join(e,Er.rc),s;try{s=await ce.readFilePromise(r,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return null;throw n}let a=ls(s);return{path:r,cwd:e,data:a}}static async findProjectCwd(e){let r=null,s=e,a=null;for(;s!==a;){if(a=s,ce.existsSync(J.join(a,Er.lockfile)))return a;ce.existsSync(J.join(a,Er.manifest))&&(r=a),s=J.dirname(a)}return r}static async updateConfiguration(e,r,s={}){let a=gj(),n=J.join(e,a),c=ce.existsSync(n)?ls(await ce.readFilePromise(n,\"utf8\")):{},f=!1,p;if(typeof r==\"function\"){try{p=r(c)}catch{p=r({})}if(p===c)return!1}else{p=c;for(let h of Object.keys(r)){let E=c[h],C=r[h],S;if(typeof C==\"function\")try{S=C(E)}catch{S=C(void 0)}else S=C;E!==S&&(S===t.deleteProperty?delete p[h]:p[h]=S,f=!0)}if(!f)return!1}return await ce.changeFilePromise(n,nl(p),{automaticNewlines:!0}),!0}static async addPlugin(e,r){r.length!==0&&await t.updateConfiguration(e,s=>{let a=s.plugins??[];if(a.length===0)return{...s,plugins:r};let n=[],c=[...r];for(let f of a){let p=typeof f!=\"string\"?f.path:f,h=c.find(E=>E.path===p);h?(n.push(h),c=c.filter(E=>E!==h)):n.push(f)}return n.push(...c),{...s,plugins:n}})}static async updateHomeConfiguration(e){let r=fI();return await t.updateConfiguration(r,e)}activatePlugin(e,r){this.plugins.set(e,r),typeof r.configuration<\"u\"&&this.importSettings(r.configuration)}importSettings(e){for(let[r,s]of Object.entries(e))if(s!=null){if(this.settings.has(r))throw new Error(`Cannot redefine settings \"${r}\"`);this.settings.set(r,s),this.values.set(r,Ej(this,s))}}useWithSource(e,r,s,a){try{this.use(e,r,s,a)}catch(n){throw n.message+=` (in ${Ht(this,e,ht.PATH)})`,n}}use(e,r,s,{strict:a=!0,overwrite:n=!1}={}){a=a&&this.get(\"enableStrictSettings\");for(let c of[\"enableStrictSettings\",...Object.keys(r)]){let f=r[c],p=H8(f);if(p&&(e=p),typeof f>\"u\"||c===\"plugins\"||e===\"<environment>\"&&Fnt.has(c))continue;if(c===\"rcFilename\")throw new nt(`The rcFilename settings can only be set via ${`${ET}RC_FILENAME`.toUpperCase()}, not via a rc file`);let h=this.settings.get(c);if(!h){let C=fI(),S=e[0]!==\"<\"?J.dirname(e):null;if(a&&!(S!==null?C===S:!1))throw new nt(`Unrecognized or legacy configuration settings found: ${c} - run \"yarn config\" to see the list of settings supported in Yarn`);this.invalid.set(c,e);continue}if(this.sources.has(c)&&!(n||h.type===\"MAP\"||h.isArray&&h.concatenateValues))continue;let E;try{E=yj(this,c,f,h,s)}catch(C){throw C.message+=` in ${Ht(this,e,ht.PATH)}`,C}if(c===\"enableStrictSettings\"&&e!==\"<environment>\"){a=E;continue}if(h.type===\"MAP\"){let C=this.values.get(c);this.values.set(c,new Map(n?[...C,...E]:[...E,...C])),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else if(h.isArray&&h.concatenateValues){let C=this.values.get(c);this.values.set(c,n?[...C,...E]:[...E,...C]),this.sources.set(c,`${this.sources.get(c)}, ${e}`)}else this.values.set(c,E),this.sources.set(c,e)}}get(e){if(!this.values.has(e))throw new Error(`Invalid configuration key \"${e}\"`);return this.values.get(e)}getSpecial(e,{hideSecrets:r=!1,getNativePaths:s=!1}){let a=this.get(e),n=this.settings.get(e);if(typeof n>\"u\")throw new nt(`Couldn't find a configuration settings named \"${e}\"`);return yT(a,n,{hideSecrets:r,getNativePaths:s})}getSubprocessStreams(e,{header:r,prefix:s,report:a}){let n,c,f=ce.createWriteStream(e);if(this.get(\"enableInlineBuilds\")){let p=a.createStreamReporter(`${s} ${Ht(this,\"STDOUT\",\"green\")}`),h=a.createStreamReporter(`${s} ${Ht(this,\"STDERR\",\"red\")}`);n=new hj.PassThrough,n.pipe(p),n.pipe(f),c=new hj.PassThrough,c.pipe(h),c.pipe(f)}else n=f,c=f,typeof r<\"u\"&&n.write(`${r}\n`);return{stdout:n,stderr:c}}makeResolver(){let e=[];for(let r of this.plugins.values())for(let s of r.resolvers||[])e.push(new s);return new rm([new FQ,new Ei,...e])}makeFetcher(){let e=[];for(let r of this.plugins.values())for(let s of r.fetchers||[])e.push(new s);return new aI([new lI,new cI,...e])}getLinkers(){let e=[];for(let r of this.plugins.values())for(let s of r.linkers||[])e.push(new s);return e}getSupportedArchitectures(){let e=sv(),r=this.get(\"supportedArchitectures\"),s=r.get(\"os\");s!==null&&(s=s.map(c=>c===\"current\"?e.os:c));let a=r.get(\"cpu\");a!==null&&(a=a.map(c=>c===\"current\"?e.cpu:c));let n=r.get(\"libc\");return n!==null&&(n=Wl(n,c=>c===\"current\"?e.libc??Wl.skip:c)),{os:s,cpu:a,libc:n}}isInteractive({interactive:e,stdout:r}){return r.isTTY?e??this.get(\"preferInteractive\"):!1}async getPackageExtensions(){if(this.packageExtensions!==null)return this.packageExtensions;this.packageExtensions=new Map;let e=this.packageExtensions,r=(s,a,{userProvided:n=!1}={})=>{if(!cl(s.range))throw new Error(\"Only semver ranges are allowed as keys for the packageExtensions setting\");let c=new Ut;c.load(a,{yamlCompatibilityMode:!0});let f=xB(e,s.identHash),p=[];f.push([s.range,p]);let h={status:\"inactive\",userProvided:n,parentDescriptor:s};for(let E of c.dependencies.values())p.push({...h,type:\"Dependency\",descriptor:E});for(let E of c.peerDependencies.values())p.push({...h,type:\"PeerDependency\",descriptor:E});for(let[E,C]of c.peerDependenciesMeta)for(let[S,P]of Object.entries(C))p.push({...h,type:\"PeerDependencyMeta\",selector:E,key:S,value:P})};await this.triggerHook(s=>s.registerPackageExtensions,this,r);for(let[s,a]of this.get(\"packageExtensions\"))r(C0(s,!0),Yk(a),{userProvided:!0});return e}normalizeLocator(e){return cl(e.reference)?Ws(e,`${this.get(\"defaultProtocol\")}${e.reference}`):Mp.test(e.reference)?Ws(e,`${this.get(\"defaultProtocol\")}${e.reference}`):e}normalizeDependency(e){return cl(e.range)?On(e,`${this.get(\"defaultProtocol\")}${e.range}`):Mp.test(e.range)?On(e,`${this.get(\"defaultProtocol\")}${e.range}`):e}normalizeDependencyMap(e){return new Map([...e].map(([r,s])=>[r,this.normalizeDependency(s)]))}normalizePackage(e,{packageExtensions:r}){let s=LB(e),a=r.get(e.identHash);if(typeof a<\"u\"){let c=e.version;if(c!==null){for(let[f,p]of a)if(Zf(c,f))for(let h of p)switch(h.status===\"inactive\"&&(h.status=\"redundant\"),h.type){case\"Dependency\":typeof s.dependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",s.dependencies.set(h.descriptor.identHash,this.normalizeDependency(h.descriptor)));break;case\"PeerDependency\":typeof s.peerDependencies.get(h.descriptor.identHash)>\"u\"&&(h.status=\"active\",s.peerDependencies.set(h.descriptor.identHash,h.descriptor));break;case\"PeerDependencyMeta\":{let E=s.peerDependenciesMeta.get(h.selector);(typeof E>\"u\"||!Object.hasOwn(E,h.key)||E[h.key]!==h.value)&&(h.status=\"active\",Yl(s.peerDependenciesMeta,h.selector,()=>({}))[h.key]=h.value)}break;default:G4(h)}}}let n=c=>c.scope?`${c.scope}__${c.name}`:`${c.name}`;for(let c of s.peerDependenciesMeta.keys()){let f=Sa(c);s.peerDependencies.has(f.identHash)||s.peerDependencies.set(f.identHash,On(f,\"*\"))}for(let c of s.peerDependencies.values()){if(c.scope===\"types\")continue;let f=n(c),p=Da(\"types\",f),h=un(p);s.peerDependencies.has(p.identHash)||s.peerDependenciesMeta.has(h)||s.dependencies.has(p.identHash)||(s.peerDependencies.set(p.identHash,On(p,\"*\")),s.peerDependenciesMeta.set(h,{optional:!0}))}return s.dependencies=new Map(qs(s.dependencies,([,c])=>al(c))),s.peerDependencies=new Map(qs(s.peerDependencies,([,c])=>al(c))),s}getLimit(e){return Yl(this.limits,e,()=>(0,cpe.default)(this.get(e)))}async triggerHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);n&&await n(...r)}}async triggerMultipleHooks(e,r){for(let s of r)await this.triggerHook(e,...s)}async reduceHook(e,r,...s){let a=r;for(let n of this.plugins.values()){let c=n.hooks;if(!c)continue;let f=e(c);f&&(a=await f(a,...s))}return a}async firstHook(e,...r){for(let s of this.plugins.values()){let a=s.hooks;if(!a)continue;let n=e(a);if(!n)continue;let c=await n(...r);if(typeof c<\"u\")return c}return null}}});var qr={};Vt(qr,{EndStrategy:()=>Bj,ExecError:()=>CT,PipeError:()=>lv,execvp:()=>Aj,pipevp:()=>Wu});function om(t){return t!==null&&typeof t.fd==\"number\"}function Ij(){}function Cj(){for(let t of am)t.kill()}async function Wu(t,e,{cwd:r,env:s=process.env,strict:a=!1,stdin:n=null,stdout:c,stderr:f,end:p=2}){let h=[\"pipe\",\"pipe\",\"pipe\"];n===null?h[0]=\"ignore\":om(n)&&(h[0]=n),om(c)&&(h[1]=c),om(f)&&(h[2]=f);let E=(0,wj.default)(t,e,{cwd:fe.fromPortablePath(r),env:{...s,PWD:fe.fromPortablePath(r)},stdio:h});am.add(E),am.size===1&&(process.on(\"SIGINT\",Ij),process.on(\"SIGTERM\",Cj)),!om(n)&&n!==null&&n.pipe(E.stdin),om(c)||E.stdout.pipe(c,{end:!1}),om(f)||E.stderr.pipe(f,{end:!1});let C=()=>{for(let S of new Set([c,f]))om(S)||S.end()};return new Promise((S,P)=>{E.on(\"error\",I=>{am.delete(E),am.size===0&&(process.off(\"SIGINT\",Ij),process.off(\"SIGTERM\",Cj)),(p===2||p===1)&&C(),P(I)}),E.on(\"close\",(I,R)=>{am.delete(E),am.size===0&&(process.off(\"SIGINT\",Ij),process.off(\"SIGTERM\",Cj)),(p===2||p===1&&I!==0)&&C(),I===0||!a?S({code:vj(I,R)}):P(new lv({fileName:t,code:I,signal:R}))})})}async function Aj(t,e,{cwd:r,env:s=process.env,encoding:a=\"utf8\",strict:n=!1}){let c=[\"ignore\",\"pipe\",\"pipe\"],f=[],p=[],h=fe.fromPortablePath(r);typeof s.PWD<\"u\"&&(s={...s,PWD:h});let E=(0,wj.default)(t,e,{cwd:h,env:s,stdio:c});return E.stdout.on(\"data\",C=>{f.push(C)}),E.stderr.on(\"data\",C=>{p.push(C)}),await new Promise((C,S)=>{E.on(\"error\",P=>{let I=ze.create(r),R=Ht(I,t,ht.PATH);S(new jt(1,`Process ${R} failed to spawn`,N=>{N.reportError(1,`  ${Kf(I,{label:\"Thrown Error\",value:_u(ht.NO_HINT,P.message)})}`)}))}),E.on(\"close\",(P,I)=>{let R=a===\"buffer\"?Buffer.concat(f):Buffer.concat(f).toString(a),N=a===\"buffer\"?Buffer.concat(p):Buffer.concat(p).toString(a);P===0||!n?C({code:vj(P,I),stdout:R,stderr:N}):S(new CT({fileName:t,code:P,signal:I,stdout:R,stderr:N}))})})}function vj(t,e){let r=Gnt.get(e);return typeof r<\"u\"?128+r:t??1}function qnt(t,e,{configuration:r,report:s}){s.reportError(1,`  ${Kf(r,t!==null?{label:\"Exit Code\",value:_u(ht.NUMBER,t)}:{label:\"Exit Signal\",value:_u(ht.CODE,e)})}`)}var wj,Bj,lv,CT,am,Gnt,dT=Xe(()=>{Dt();wj=ut(_U());av();Tc();xc();Bj=(s=>(s[s.Never=0]=\"Never\",s[s.ErrorCode=1]=\"ErrorCode\",s[s.Always=2]=\"Always\",s))(Bj||{}),lv=class extends jt{constructor({fileName:e,code:r,signal:s}){let a=ze.create(J.cwd()),n=Ht(a,e,ht.PATH);super(1,`Child ${n} reported an error`,c=>{qnt(r,s,{configuration:a,report:c})}),this.code=vj(r,s)}},CT=class extends lv{constructor({fileName:e,code:r,signal:s,stdout:a,stderr:n}){super({fileName:e,code:r,signal:s}),this.stdout=a,this.stderr=n}};am=new Set;Gnt=new Map([[\"SIGINT\",2],[\"SIGQUIT\",3],[\"SIGKILL\",9],[\"SIGTERM\",15]])});function Ape(t){fpe=t}function cv(){return typeof Sj>\"u\"&&(Sj=fpe()),Sj}var Sj,fpe,Dj=Xe(()=>{fpe=()=>{throw new Error(\"Assertion failed: No libzip instance is available, and no factory was configured\")}});var ppe=_((wT,Pj)=>{var Wnt=Object.assign({},Ie(\"fs\")),bj=function(){var t=typeof document<\"u\"&&document.currentScript?document.currentScript.src:void 0;return typeof __filename<\"u\"&&(t=t||__filename),function(e){e=e||{};var r=typeof e<\"u\"?e:{},s,a;r.ready=new Promise(function(Ke,st){s=Ke,a=st});var n={},c;for(c in r)r.hasOwnProperty(c)&&(n[c]=r[c]);var f=[],p=\"./this.program\",h=function(Ke,st){throw st},E=!1,C=!0,S=\"\";function P(Ke){return r.locateFile?r.locateFile(Ke,S):S+Ke}var I,R,N,U;C&&(E?S=Ie(\"path\").dirname(S)+\"/\":S=__dirname+\"/\",I=function(st,St){var lr=Me(st);return lr?St?lr:lr.toString():(N||(N=Wnt),U||(U=Ie(\"path\")),st=U.normalize(st),N.readFileSync(st,St?null:\"utf8\"))},R=function(st){var St=I(st,!0);return St.buffer||(St=new Uint8Array(St)),we(St.buffer),St},process.argv.length>1&&(p=process.argv[1].replace(/\\\\/g,\"/\")),f=process.argv.slice(2),h=function(Ke){process.exit(Ke)},r.inspect=function(){return\"[Emscripten Module object]\"});var W=r.print||console.log.bind(console),ee=r.printErr||console.warn.bind(console);for(c in n)n.hasOwnProperty(c)&&(r[c]=n[c]);n=null,r.arguments&&(f=r.arguments),r.thisProgram&&(p=r.thisProgram),r.quit&&(h=r.quit);var ie=0,ue=function(Ke){ie=Ke},le;r.wasmBinary&&(le=r.wasmBinary);var me=r.noExitRuntime||!0;typeof WebAssembly!=\"object\"&&rs(\"no native wasm support detected\");function pe(Ke,st,St){switch(st=st||\"i8\",st.charAt(st.length-1)===\"*\"&&(st=\"i32\"),st){case\"i1\":return Ve[Ke>>0];case\"i8\":return Ve[Ke>>0];case\"i16\":return mh((Ke>>1)*2);case\"i32\":return to((Ke>>2)*4);case\"i64\":return to((Ke>>2)*4);case\"float\":return Af((Ke>>2)*4);case\"double\":return dh((Ke>>3)*8);default:rs(\"invalid type for getValue: \"+st)}return null}var Be,Ce=!1,g;function we(Ke,st){Ke||rs(\"Assertion failed: \"+st)}function ye(Ke){var st=r[\"_\"+Ke];return we(st,\"Cannot call unknown function \"+Ke+\", make sure it is exported\"),st}function Ae(Ke,st,St,lr,te){var Ee={string:function(qi){var Tn=0;if(qi!=null&&qi!==0){var Ga=(qi.length<<2)+1;Tn=wi(Ga),mt(qi,Tn,Ga)}return Tn},array:function(qi){var Tn=wi(qi.length);return Fe(qi,Tn),Tn}};function Oe(qi){return st===\"string\"?De(qi):st===\"boolean\"?!!qi:qi}var dt=ye(Ke),Et=[],bt=0;if(lr)for(var tr=0;tr<lr.length;tr++){var An=Ee[St[tr]];An?(bt===0&&(bt=gf()),Et[tr]=An(lr[tr])):Et[tr]=lr[tr]}var li=dt.apply(null,Et);return li=Oe(li),bt!==0&&fc(bt),li}function se(Ke,st,St,lr){St=St||[];var te=St.every(function(Oe){return Oe===\"number\"}),Ee=st!==\"string\";return Ee&&te&&!lr?ye(Ke):function(){return Ae(Ke,st,St,arguments,lr)}}var Z=new TextDecoder(\"utf8\");function De(Ke,st){if(!Ke)return\"\";for(var St=Ke+st,lr=Ke;!(lr>=St)&&ke[lr];)++lr;return Z.decode(ke.subarray(Ke,lr))}function Re(Ke,st,St,lr){if(!(lr>0))return 0;for(var te=St,Ee=St+lr-1,Oe=0;Oe<Ke.length;++Oe){var dt=Ke.charCodeAt(Oe);if(dt>=55296&&dt<=57343){var Et=Ke.charCodeAt(++Oe);dt=65536+((dt&1023)<<10)|Et&1023}if(dt<=127){if(St>=Ee)break;st[St++]=dt}else if(dt<=2047){if(St+1>=Ee)break;st[St++]=192|dt>>6,st[St++]=128|dt&63}else if(dt<=65535){if(St+2>=Ee)break;st[St++]=224|dt>>12,st[St++]=128|dt>>6&63,st[St++]=128|dt&63}else{if(St+3>=Ee)break;st[St++]=240|dt>>18,st[St++]=128|dt>>12&63,st[St++]=128|dt>>6&63,st[St++]=128|dt&63}}return st[St]=0,St-te}function mt(Ke,st,St){return Re(Ke,ke,st,St)}function j(Ke){for(var st=0,St=0;St<Ke.length;++St){var lr=Ke.charCodeAt(St);lr>=55296&&lr<=57343&&(lr=65536+((lr&1023)<<10)|Ke.charCodeAt(++St)&1023),lr<=127?++st:lr<=2047?st+=2:lr<=65535?st+=3:st+=4}return st}function rt(Ke){var st=j(Ke)+1,St=La(st);return St&&Re(Ke,Ve,St,st),St}function Fe(Ke,st){Ve.set(Ke,st)}function Ne(Ke,st){return Ke%st>0&&(Ke+=st-Ke%st),Ke}var Pe,Ve,ke,it,Ue,x,w,b,y,F;function z(Ke){Pe=Ke,r.HEAP_DATA_VIEW=F=new DataView(Ke),r.HEAP8=Ve=new Int8Array(Ke),r.HEAP16=it=new Int16Array(Ke),r.HEAP32=x=new Int32Array(Ke),r.HEAPU8=ke=new Uint8Array(Ke),r.HEAPU16=Ue=new Uint16Array(Ke),r.HEAPU32=w=new Uint32Array(Ke),r.HEAPF32=b=new Float32Array(Ke),r.HEAPF64=y=new Float64Array(Ke)}var X=r.INITIAL_MEMORY||16777216,$,oe=[],xe=[],Te=[],lt=!1;function Ct(){if(r.preRun)for(typeof r.preRun==\"function\"&&(r.preRun=[r.preRun]);r.preRun.length;)Pt(r.preRun.shift());Ts(oe)}function qt(){lt=!0,Ts(xe)}function ir(){if(r.postRun)for(typeof r.postRun==\"function\"&&(r.postRun=[r.postRun]);r.postRun.length;)Pr(r.postRun.shift());Ts(Te)}function Pt(Ke){oe.unshift(Ke)}function gn(Ke){xe.unshift(Ke)}function Pr(Ke){Te.unshift(Ke)}var Ir=0,Or=null,on=null;function ai(Ke){Ir++,r.monitorRunDependencies&&r.monitorRunDependencies(Ir)}function Io(Ke){if(Ir--,r.monitorRunDependencies&&r.monitorRunDependencies(Ir),Ir==0&&(Or!==null&&(clearInterval(Or),Or=null),on)){var st=on;on=null,st()}}r.preloadedImages={},r.preloadedAudios={};function rs(Ke){r.onAbort&&r.onAbort(Ke),Ke+=\"\",ee(Ke),Ce=!0,g=1,Ke=\"abort(\"+Ke+\"). Build with -s ASSERTIONS=1 for more info.\";var st=new WebAssembly.RuntimeError(Ke);throw a(st),st}var $s=\"data:application/octet-stream;base64,\";function Co(Ke){return Ke.startsWith($s)}var ji=\"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/IAAoAqAuIgFBwABGBEAgACgCBCAAKAIQaiAAKQOYLjcAACAAQgA3A5guIAAgACgCEEEIajYCEEEADAELIAFBIE4EQCAAKAIEIAAoAhBqIAApA5guPgAAIAAgAEGcLmo1AgA3A5guIAAgACgCEEEEajYCECAAIAAoAqAuQSBrIgE2AqAuCyABQRBOBEAgACgCBCAAKAIQaiAAKQOYLj0AACAAIAAoAhBBAmo2AhAgACAAKQOYLkIQiDcDmC4gACAAKAKgLkEQayIBNgKgLgsgAUEISA0BIAAgACgCECIBQQFqNgIQIAEgACgCBGogACkDmC48AAAgACAAKQOYLkIIiDcDmC4gACgCoC5BCGsLNgKgLgsLEAAgACgCCBAGIABBADYCCAvwAQECf0F/IQECQCAALQAoDQAgACgCJEEDRgRAIABBDGoEQCAAQQA2AhAgAEEXNgIMC0F/DwsCQCAAKAIgBEAgACkDGELAAINCAFINASAAQQxqBEAgAEEANgIQIABBHTYCDAtBfw8LAkAgACgCACICRQ0AIAIQMkF/Sg0AIAAoAgAhASAAQQxqIgAEQCAAIAEoAgw2AgAgACABKAIQNgIEC0F/DwsgAEEAQgBBABAOQn9VDQAgACgCACIARQ0BIAAQGhpBfw8LQQAhASAAQQA7ATQgAEEMagRAIABCADcCDAsgACAAKAIgQQFqNgIgCyABCzsAIAAtACgEfkJ/BSAAKAIgRQRAIABBDGoiAARAIABBADYCBCAAQRI2AgALQn8PCyAAQQBCAEEHEA4LC5oIAQt/IABFBEAgARAJDwsgAUFATwRAQYSEAUEwNgIAQQAPCwJ/QRAgAUELakF4cSABQQtJGyEGIABBCGsiBSgCBCIJQXhxIQQCQCAJQQNxRQRAQQAgBkGAAkkNAhogBkEEaiAETQRAIAUhAiAEIAZrQZSIASgCAEEBdE0NAgtBAAwCCyAEIAVqIQcCQCAEIAZPBEAgBCAGayIDQRBJDQEgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAiADQQNyNgIEIAcgBygCBEEBcjYCBCACIAMQOwwBCyAHQcyEASgCAEYEQEHAhAEoAgAgBGoiBCAGTQ0CIAUgCUEBcSAGckECcjYCBCAFIAZqIgMgBCAGayICQQFyNgIEQcCEASACNgIAQcyEASADNgIADAELIAdByIQBKAIARgRAQbyEASgCACAEaiIDIAZJDQICQCADIAZrIgJBEE8EQCAFIAlBAXEgBnJBAnI2AgQgBSAGaiIEIAJBAXI2AgQgAyAFaiIDIAI2AgAgAyADKAIEQX5xNgIEDAELIAUgCUEBcSADckECcjYCBCADIAVqIgIgAigCBEEBcjYCBEEAIQJBACEEC0HIhAEgBDYCAEG8hAEgAjYCAAwBCyAHKAIEIgNBAnENASADQXhxIARqIgogBkkNASAKIAZrIQwCQCADQf8BTQRAIAcoAggiBCADQQN2IgJBA3RB3IQBakYaIAQgBygCDCIDRgRAQbSEAUG0hAEoAgBBfiACd3E2AgAMAgsgBCADNgIMIAMgBDYCCAwBCyAHKAIYIQsCQCAHIAcoAgwiCEcEQCAHKAIIIgJBxIQBKAIASRogAiAINgIMIAggAjYCCAwBCwJAIAdBFGoiBCgCACICDQAgB0EQaiIEKAIAIgINAEEAIQgMAQsDQCAEIQMgAiIIQRRqIgQoAgAiAg0AIAhBEGohBCAIKAIQIgINAAsgA0EANgIACyALRQ0AAkAgByAHKAIcIgNBAnRB5IYBaiICKAIARgRAIAIgCDYCACAIDQFBuIQBQbiEASgCAEF+IAN3cTYCAAwCCyALQRBBFCALKAIQIAdGG2ogCDYCACAIRQ0BCyAIIAs2AhggBygCECICBEAgCCACNgIQIAIgCDYCGAsgBygCFCICRQ0AIAggAjYCFCACIAg2AhgLIAxBD00EQCAFIAlBAXEgCnJBAnI2AgQgBSAKaiICIAIoAgRBAXI2AgQMAQsgBSAJQQFxIAZyQQJyNgIEIAUgBmoiAyAMQQNyNgIEIAUgCmoiAiACKAIEQQFyNgIEIAMgDBA7CyAFIQILIAILIgIEQCACQQhqDwsgARAJIgVFBEBBAA8LIAUgAEF8QXggAEEEaygCACICQQNxGyACQXhxaiICIAEgASACSxsQBxogABAGIAUL6QEBA38CQCABRQ0AIAJBgDBxIgIEfwJ/IAJBgCBHBEBBAiACQYAQRg0BGiADBEAgA0EANgIEIANBEjYCAAtBAA8LQQQLIQJBAAVBAQshBkEUEAkiBEUEQCADBEAgA0EANgIEIANBDjYCAAtBAA8LIAQgAUEBahAJIgU2AgAgBUUEQCAEEAZBAA8LIAUgACABEAcgAWpBADoAACAEQQA2AhAgBEIANwMIIAQgATsBBCAGDQAgBCACECNBBUcNACAEKAIAEAYgBCgCDBAGIAQQBkEAIQQgAwRAIANBADYCBCADQRI2AgALCyAEC7UBAQJ/AkACQAJAAkACQAJAAkAgAC0ABQRAIAAtAABBAnFFDQELIAAoAjAQECAAQQA2AjAgAC0ABUUNAQsgAC0AAEEIcUUNAQsgACgCNBAcIABBADYCNCAALQAFRQ0BCyAALQAAQQRxRQ0BCyAAKAI4EBAgAEEANgI4IAAtAAVFDQELIAAtAABBgAFxRQ0BCyAAKAJUIgEEfyABQQAgARAiEBkgACgCVAVBAAsQBiAAQQA2AlQLC9wMAgl/AX4jAEFAaiIGJAACQAJAAkACQAJAIAEoAjBBABAjIgVBAkZBACABKAI4QQAQIyIEQQFGGw0AIAVBAUZBACAEQQJGGw0AIAVBAkciAw0BIARBAkcNAQsgASABLwEMQYAQcjsBDEEAIQMMAQsgASABLwEMQf/vA3E7AQxBACEFIANFBEBB9eABIAEoAjAgAEEIahBpIgVFDQILIAJBgAJxBEAgBSEDDAELIARBAkcEQCAFIQMMAQtB9cYBIAEoAjggAEEIahBpIgNFBEAgBRAcDAILIAMgBTYCAAsgASABLwEMQf7/A3EgAS8BUiIFQQBHcjsBDAJAAkACQAJAAn8CQAJAIAEpAyhC/v///w9WDQAgASkDIEL+////D1YNACACQYAEcUUNASABKQNIQv////8PVA0BCyAFQYECa0H//wNxQQNJIQdBAQwBCyAFQYECa0H//wNxIQQgAkGACnFBgApHDQEgBEEDSSEHQQALIQkgBkIcEBciBEUEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyADEBwMBQsgAkGACHEhBQJAAkAgAkGAAnEEQAJAIAUNACABKQMgQv////8PVg0AIAEpAyhCgICAgBBUDQMLIAQgASkDKBAYIAEpAyAhDAwBCwJAAkACQCAFDQAgASkDIEL/////D1YNACABKQMoIgxC/////w9WDQEgASkDSEKAgICAEFQNBAsgASkDKCIMQv////8PVA0BCyAEIAwQGAsgASkDICIMQv////8PWgRAIAQgDBAYCyABKQNIIgxC/////w9UDQELIAQgDBAYCyAELQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAQQCCADEBwMBQtBASEKQQEgBC0AAAR+IAQpAxAFQgALp0H//wNxIAYQRyEFIAQQCCAFIAM2AgAgBw0BDAILIAMhBSAEQQJLDQELIAZCBxAXIgRFBEAgAEEIaiIABEAgAEEANgIEIABBDjYCAAsgBRAcDAMLIARBAhANIARBhxJBAhAsIAQgAS0AUhBwIAQgAS8BEBANIAQtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAsgBBAIDAILQYGyAkEHIAYQRyEDIAQQCCADIAU2AgBBASELIAMhBQsgBkIuEBciA0UEQCAAQQhqIgAEQCAAQQA2AgQgAEEONgIACyAFEBwMAgsgA0GjEkGoEiACQYACcSIHG0EEECwgB0UEQCADIAkEf0EtBSABLwEIC0H//wNxEA0LIAMgCQR/QS0FIAEvAQoLQf//A3EQDSADIAEvAQwQDSADIAsEf0HjAAUgASgCEAtB//8DcRANIAYgASgCFDYCPAJ/IAZBPGoQjQEiCEUEQEEAIQlBIQwBCwJ/IAgoAhQiBEHQAE4EQCAEQQl0DAELIAhB0AA2AhRBgMACCyEEIAgoAgRBBXQgCCgCCEELdGogCCgCAEEBdmohCSAIKAIMIAQgCCgCEEEFdGpqQaDAAWoLIQQgAyAJQf//A3EQDSADIARB//8DcRANIAMCfyALBEBBACABKQMoQhRUDQEaCyABKAIYCxASIAEpAyAhDCADAn8gAwJ/AkAgBwRAIAxC/v///w9YBEAgASkDKEL/////D1QNAgsgA0F/EBJBfwwDC0F/IAxC/v///w9WDQEaCyAMpwsQEiABKQMoIgxC/////w8gDEL/////D1QbpwsQEiADIAEoAjAiBAR/IAQvAQQFQQALQf//A3EQDSADIAEoAjQgAhBsIAVBgAYQbGpB//8DcRANIAdFBEAgAyABKAI4IgQEfyAELwEEBUEAC0H//wNxEA0gAyABLwE8EA0gAyABLwFAEA0gAyABKAJEEBIgAyABKQNIIgxC/////w8gDEL/////D1QbpxASCyADLQAARQRAIABBCGoiAARAIABBADYCBCAAQRQ2AgALIAMQCCAFEBwMAgsgACAGIAMtAAAEfiADKQMQBUIACxAbIQQgAxAIIARBf0wNACABKAIwIgMEQCAAIAMQYUF/TA0BCyAFBEAgACAFQYAGEGtBf0wNAQsgBRAcIAEoAjQiBQRAIAAgBSACEGtBAEgNAgsgBw0CIAEoAjgiAUUNAiAAIAEQYUEATg0CDAELIAUQHAtBfyEKCyAGQUBrJAAgCgtNAQJ/IAEtAAAhAgJAIAAtAAAiA0UNACACIANHDQADQCABLQABIQIgAC0AASIDRQ0BIAFBAWohASAAQQFqIQAgAiADRg0ACwsgAyACawvcAwICfgF/IAOtIQQgACkDmC4hBQJAIAACfyAAAn4gACgCoC4iBkEDaiIDQT9NBEAgBCAGrYYgBYQMAQsgBkHAAEYEQCAAKAIEIAAoAhBqIAU3AAAgACgCEEEIagwCCyAAKAIEIAAoAhBqIAQgBq2GIAWENwAAIAAgACgCEEEIajYCECAGQT1rIQMgBEHAACAGa62ICyIENwOYLiAAIAM2AqAuIANBOU4EQCAAKAIEIAAoAhBqIAQ3AAAgACAAKAIQQQhqNgIQDAILIANBGU4EQCAAKAIEIAAoAhBqIAQ+AAAgACAAKAIQQQRqNgIQIAAgACkDmC5CIIgiBDcDmC4gACAAKAKgLkEgayIDNgKgLgsgA0EJTgR/IAAoAgQgACgCEGogBD0AACAAIAAoAhBBAmo2AhAgACkDmC5CEIghBCAAKAKgLkEQawUgAwtBAUgNASAAKAIQCyIDQQFqNgIQIAAoAgQgA2ogBDwAAAsgAEEANgKgLiAAQgA3A5guIAAoAgQgACgCEGogAjsAACAAIAAoAhBBAmoiAzYCECAAKAIEIANqIAJBf3M7AAAgACAAKAIQQQJqIgM2AhAgAgRAIAAoAgQgA2ogASACEAcaIAAgACgCECACajYCEAsLrAQCAX8BfgJAIAANACABUA0AIAMEQCADQQA2AgQgA0ESNgIAC0EADwsCQAJAIAAgASACIAMQiQEiBEUNAEEYEAkiAkUEQCADBEAgA0EANgIEIANBDjYCAAsCQCAEKAIoIgBFBEAgBCkDGCEBDAELIABBADYCKCAEKAIoQgA3AyAgBCAEKQMYIgUgBCkDICIBIAEgBVQbIgE3AxgLIAQpAwggAVYEQANAIAQoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAQpAwhUDQALCyAEKAIAEAYgBCgCBBAGIAQQBgwBCyACQQA2AhQgAiAENgIQIAJBABABNgIMIAJBADYCCCACQgA3AgACf0E4EAkiAEUEQCADBEAgA0EANgIEIANBDjYCAAtBAAwBCyAAQQA2AgggAEIANwMAIABCADcDICAAQoCAgIAQNwIsIABBADoAKCAAQQA2AhQgAEIANwIMIABBADsBNCAAIAI2AgggAEEkNgIEIABCPyACQQBCAEEOQSQRDAAiASABQgBTGzcDGCAACyIADQEgAigCECIDBEACQCADKAIoIgBFBEAgAykDGCEBDAELIABBADYCKCADKAIoQgA3AyAgAyADKQMYIgUgAykDICIBIAEgBVQbIgE3AxgLIAMpAwggAVYEQANAIAMoAgAgAadBBHRqKAIAEAYgAUIBfCIBIAMpAwhUDQALCyADKAIAEAYgAygCBBAGIAMQBgsgAhAGC0EAIQALIAALiwwBBn8gACABaiEFAkACQCAAKAIEIgJBAXENACACQQNxRQ0BIAAoAgAiAiABaiEBAkAgACACayIAQciEASgCAEcEQCACQf8BTQRAIAAoAggiBCACQQN2IgJBA3RB3IQBakYaIAAoAgwiAyAERw0CQbSEAUG0hAEoAgBBfiACd3E2AgAMAwsgACgCGCEGAkAgACAAKAIMIgNHBEAgACgCCCICQcSEASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAAQRRqIgIoAgAiBA0AIABBEGoiAigCACIEDQBBACEDDAELA0AgAiEHIAQiA0EUaiICKAIAIgQNACADQRBqIQIgAygCECIEDQALIAdBADYCAAsgBkUNAgJAIAAgACgCHCIEQQJ0QeSGAWoiAigCAEYEQCACIAM2AgAgAw0BQbiEAUG4hAEoAgBBfiAEd3E2AgAMBAsgBkEQQRQgBigCECAARhtqIAM2AgAgA0UNAwsgAyAGNgIYIAAoAhAiAgRAIAMgAjYCECACIAM2AhgLIAAoAhQiAkUNAiADIAI2AhQgAiADNgIYDAILIAUoAgQiAkEDcUEDRw0BQbyEASABNgIAIAUgAkF+cTYCBCAAIAFBAXI2AgQgBSABNgIADwsgBCADNgIMIAMgBDYCCAsCQCAFKAIEIgJBAnFFBEAgBUHMhAEoAgBGBEBBzIQBIAA2AgBBwIQBQcCEASgCACABaiIBNgIAIAAgAUEBcjYCBCAAQciEASgCAEcNA0G8hAFBADYCAEHIhAFBADYCAA8LIAVByIQBKAIARgRAQciEASAANgIAQbyEAUG8hAEoAgAgAWoiATYCACAAIAFBAXI2AgQgACABaiABNgIADwsgAkF4cSABaiEBAkAgAkH/AU0EQCAFKAIIIgQgAkEDdiICQQN0QdyEAWpGGiAEIAUoAgwiA0YEQEG0hAFBtIQBKAIAQX4gAndxNgIADAILIAQgAzYCDCADIAQ2AggMAQsgBSgCGCEGAkAgBSAFKAIMIgNHBEAgBSgCCCICQcSEASgCAEkaIAIgAzYCDCADIAI2AggMAQsCQCAFQRRqIgQoAgAiAg0AIAVBEGoiBCgCACICDQBBACEDDAELA0AgBCEHIAIiA0EUaiIEKAIAIgINACADQRBqIQQgAygCECICDQALIAdBADYCAAsgBkUNAAJAIAUgBSgCHCIEQQJ0QeSGAWoiAigCAEYEQCACIAM2AgAgAw0BQbiEAUG4hAEoAgBBfiAEd3E2AgAMAgsgBkEQQRQgBigCECAFRhtqIAM2AgAgA0UNAQsgAyAGNgIYIAUoAhAiAgRAIAMgAjYCECACIAM2AhgLIAUoAhQiAkUNACADIAI2AhQgAiADNgIYCyAAIAFBAXI2AgQgACABaiABNgIAIABByIQBKAIARw0BQbyEASABNgIADwsgBSACQX5xNgIEIAAgAUEBcjYCBCAAIAFqIAE2AgALIAFB/wFNBEAgAUEDdiICQQN0QdyEAWohAQJ/QbSEASgCACIDQQEgAnQiAnFFBEBBtIQBIAIgA3I2AgAgAQwBCyABKAIICyECIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCA8LQR8hAiAAQgA3AhAgAUH///8HTQRAIAFBCHYiAiACQYD+P2pBEHZBCHEiBHQiAiACQYDgH2pBEHZBBHEiA3QiAiACQYCAD2pBEHZBAnEiAnRBD3YgAyAEciACcmsiAkEBdCABIAJBFWp2QQFxckEcaiECCyAAIAI2AhwgAkECdEHkhgFqIQcCQAJAQbiEASgCACIEQQEgAnQiA3FFBEBBuIQBIAMgBHI2AgAgByAANgIAIAAgBzYCGAwBCyABQQBBGSACQQF2ayACQR9GG3QhAiAHKAIAIQMDQCADIgQoAgRBeHEgAUYNAiACQR12IQMgAkEBdCECIAQgA0EEcWoiB0EQaigCACIDDQALIAcgADYCECAAIAQ2AhgLIAAgADYCDCAAIAA2AggPCyAEKAIIIgEgADYCDCAEIAA2AgggAEEANgIYIAAgBDYCDCAAIAE2AggLC1gCAX8BfgJAAn9BACAARQ0AGiAArUIChiICpyIBIABBBHJBgIAESQ0AGkF/IAEgAkIgiKcbCyIBEAkiAEUNACAAQQRrLQAAQQNxRQ0AIABBACABEBkLIAALQwEDfwJAIAJFDQADQCAALQAAIgQgAS0AACIFRgRAIAFBAWohASAAQQFqIQAgAkEBayICDQEMAgsLIAQgBWshAwsgAwsUACAAEEAgACgCABAgIAAoAgQQIAutBAIBfgV/IwBBEGsiBCQAIAAgAWshBgJAAkAgAUEBRgRAIAAgBi0AACACEBkMAQsgAUEJTwRAIAAgBikAADcAACAAIAJBAWtBB3FBAWoiBWohACACIAVrIgFFDQIgBSAGaiECA0AgACACKQAANwAAIAJBCGohAiAAQQhqIQAgAUEIayIBDQALDAILAkACQAJAAkAgAUEEaw4FAAICAgECCyAEIAYoAAAiATYCBCAEIAE2AgAMAgsgBCAGKQAANwMADAELQQghByAEQQhqIQgDQCAIIAYgByABIAEgB0sbIgUQByAFaiEIIAcgBWsiBw0ACyAEIAQpAwg3AwALAkAgBQ0AIAJBEEkNACAEKQMAIQMgAkEQayIGQQR2QQFqQQdxIgEEQANAIAAgAzcACCAAIAM3AAAgAkEQayECIABBEGohACABQQFrIgENAAsLIAZB8ABJDQADQCAAIAM3AHggACADNwBwIAAgAzcAaCAAIAM3AGAgACADNwBYIAAgAzcAUCAAIAM3AEggACADNwBAIAAgAzcAOCAAIAM3ADAgACADNwAoIAAgAzcAICAAIAM3ABggACADNwAQIAAgAzcACCAAIAM3AAAgAEGAAWohACACQYABayICQQ9LDQALCyACQQhPBEBBCCAFayEBA0AgACAEKQMANwAAIAAgAWohACACIAFrIgJBB0sNAAsLIAJFDQEgACAEIAIQBxoLIAAgAmohAAsgBEEQaiQAIAALXwECfyAAKAIIIgEEQCABEAsgAEEANgIICwJAIAAoAgQiAUUNACABKAIAIgJBAXFFDQAgASgCEEF+Rw0AIAEgAkF+cSICNgIAIAINACABECAgAEEANgIECyAAQQA6AAwL1wICBH8BfgJAAkAgACgCQCABp0EEdGooAgAiA0UEQCACBEAgAkEANgIEIAJBFDYCAAsMAQsgACgCACADKQNIIgdBABAUIQMgACgCACEAIANBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQtCACEBIwBBEGsiBiQAQX8hAwJAIABCGkEBEBRBf0wEQCACBEAgAiAAKAIMNgIAIAIgACgCEDYCBAsMAQsgAEIEIAZBCmogAhAtIgRFDQBBHiEAQQEhBQNAIAQQDCAAaiEAIAVBAkcEQCAFQQFqIQUMAQsLIAQtAAAEfyAEKQMQIAQpAwhRBUEAC0UEQCACBEAgAkEANgIEIAJBFDYCAAsgBBAIDAELIAQQCCAAIQMLIAZBEGokACADIgBBAEgNASAHIACtfCIBQn9VDQEgAgRAIAJBFjYCBCACQQQ2AgALC0IAIQELIAELYAIBfgF/AkAgAEUNACAAQQhqEF8iAEUNACABIAEoAjBBAWo2AjAgACADNgIIIAAgAjYCBCAAIAE2AgAgAEI/IAEgA0EAQgBBDiACEQoAIgQgBEIAUxs3AxggACEFCyAFCyIAIAAoAiRBAWtBAU0EQCAAQQBCAEEKEA4aIABBADYCJAsLbgACQAJAAkAgA0IQVA0AIAJFDQECfgJAAkACQCACKAIIDgMCAAEECyACKQMAIAB8DAILIAIpAwAgAXwMAQsgAikDAAsiA0IAUw0AIAEgA1oNAgsgBARAIARBADYCBCAEQRI2AgALC0J/IQMLIAMLggICAX8CfgJAQQEgAiADGwRAIAIgA2oQCSIFRQRAIAQEQCAEQQA2AgQgBEEONgIAC0EADwsgAq0hBgJAAkAgAARAIAAgBhATIgBFBEAgBARAIARBADYCBCAEQQ42AgALDAULIAUgACACEAcaIAMNAQwCCyABIAUgBhARIgdCf1cEQCAEBEAgBCABKAIMNgIAIAQgASgCEDYCBAsMBAsgBiAHVQRAIAQEQCAEQQA2AgQgBEERNgIACwwECyADRQ0BCyACIAVqIgBBADoAACACQQFIDQAgBSECA0AgAi0AAEUEQCACQSA6AAALIAJBAWoiAiAASQ0ACwsLIAUPCyAFEAZBAAuBAQEBfwJAIAAEQCADQYAGcSEFQQAhAwNAAkAgAC8BCCACRw0AIAUgACgCBHFFDQAgA0EATg0DIANBAWohAwsgACgCACIADQALCyAEBEAgBEEANgIEIARBCTYCAAtBAA8LIAEEQCABIAAvAQo7AQALIAAvAQpFBEBBwBQPCyAAKAIMC1cBAX9BEBAJIgNFBEBBAA8LIAMgATsBCiADIAA7AQggA0GABjYCBCADQQA2AgACQCABBEAgAyACIAEQYyIANgIMIAANASADEAZBAA8LIANBADYCDAsgAwvuBQIEfwV+IwBB4ABrIgQkACAEQQhqIgNCADcDICADQQA2AhggA0L/////DzcDECADQQA7AQwgA0G/hig2AgggA0EBOgAGIANBADsBBCADQQA2AgAgA0IANwNIIANBgIDYjXg2AkQgA0IANwMoIANCADcDMCADQgA3AzggA0FAa0EAOwEAIANCADcDUCABKQMIUCIDRQRAIAEoAgAoAgApA0ghBwsCfgJAIAMEQCAHIQkMAQsgByEJA0AgCqdBBHQiBSABKAIAaigCACIDKQNIIgggCSAIIAlUGyIJIAEpAyBWBEAgAgRAIAJBADYCBCACQRM2AgALQn8MAwsgAygCMCIGBH8gBi8BBAVBAAtB//8Dca0gCCADKQMgfHxCHnwiCCAHIAcgCFQbIgcgASkDIFYEQCACBEAgAkEANgIEIAJBEzYCAAtCfwwDCyAAKAIAIAEoAgAgBWooAgApA0hBABAUIQYgACgCACEDIAZBf0wEQCACBEAgAiADKAIMNgIAIAIgAygCEDYCBAtCfwwDCyAEQQhqIANBAEEBIAIQaEJ/UQRAIARBCGoQNkJ/DAMLAkACQCABKAIAIAVqKAIAIgMvAQogBC8BEkkNACADKAIQIAQoAhhHDQAgAygCFCAEKAIcRw0AIAMoAjAgBCgCOBBiRQ0AAkAgBCgCICIGIAMoAhhHBEAgBCkDKCEIDAELIAMpAyAiCyAEKQMoIghSDQAgCyEIIAMpAyggBCkDMFENAgsgBC0AFEEIcUUNACAGDQAgCEIAUg0AIAQpAzBQDQELIAIEQCACQQA2AgQgAkEVNgIACyAEQQhqEDZCfwwDCyABKAIAIAVqKAIAKAI0IAQoAjwQbyEDIAEoAgAgBWooAgAiBUEBOgAEIAUgAzYCNCAEQQA2AjwgBEEIahA2IApCAXwiCiABKQMIVA0ACwsgByAJfSIHQv///////////wAgB0L///////////8AVBsLIQcgBEHgAGokACAHC8YBAQJ/QdgAEAkiAUUEQCAABEAgAEEANgIEIABBDjYCAAtBAA8LIAECf0EYEAkiAkUEQCAABEAgAEEANgIEIABBDjYCAAtBAAwBCyACQQA2AhAgAkIANwMIIAJBADYCACACCyIANgJQIABFBEAgARAGQQAPCyABQgA3AwAgAUEANgIQIAFCADcCCCABQgA3AhQgAUEANgJUIAFCADcCHCABQgA3ACEgAUIANwMwIAFCADcDOCABQUBrQgA3AwAgAUIANwNIIAELgBMCD38CfiMAQdAAayIFJAAgBSABNgJMIAVBN2ohEyAFQThqIRBBACEBA0ACQCAOQQBIDQBB/////wcgDmsgAUgEQEGEhAFBPTYCAEF/IQ4MAQsgASAOaiEOCyAFKAJMIgchAQJAAkACQAJAAkACQAJAAkAgBQJ/AkAgBy0AACIGBEADQAJAAkAgBkH/AXEiBkUEQCABIQYMAQsgBkElRw0BIAEhBgNAIAEtAAFBJUcNASAFIAFBAmoiCDYCTCAGQQFqIQYgAS0AAiEMIAghASAMQSVGDQALCyAGIAdrIQEgAARAIAAgByABEC4LIAENDSAFKAJMIQEgBSgCTCwAAUEwa0EKTw0DIAEtAAJBJEcNAyABLAABQTBrIQ9BASERIAFBA2oMBAsgBSABQQFqIgg2AkwgAS0AASEGIAghAQwACwALIA4hDSAADQggEUUNAkEBIQEDQCAEIAFBAnRqKAIAIgAEQCADIAFBA3RqIAAgAhB4QQEhDSABQQFqIgFBCkcNAQwKCwtBASENIAFBCk8NCANAIAQgAUECdGooAgANCCABQQFqIgFBCkcNAAsMCAtBfyEPIAFBAWoLIgE2AkxBACEIAkAgASwAACIKQSBrIgZBH0sNAEEBIAZ0IgZBidEEcUUNAANAAkAgBSABQQFqIgg2AkwgASwAASIKQSBrIgFBIE8NAEEBIAF0IgFBidEEcUUNACABIAZyIQYgCCEBDAELCyAIIQEgBiEICwJAIApBKkYEQCAFAn8CQCABLAABQTBrQQpPDQAgBSgCTCIBLQACQSRHDQAgASwAAUECdCAEakHAAWtBCjYCACABLAABQQN0IANqQYADaygCACELQQEhESABQQNqDAELIBENCEEAIRFBACELIAAEQCACIAIoAgAiAUEEajYCACABKAIAIQsLIAUoAkxBAWoLIgE2AkwgC0F/Sg0BQQAgC2shCyAIQYDAAHIhCAwBCyAFQcwAahB3IgtBAEgNBiAFKAJMIQELQX8hCQJAIAEtAABBLkcNACABLQABQSpGBEACQCABLAACQTBrQQpPDQAgBSgCTCIBLQADQSRHDQAgASwAAkECdCAEakHAAWtBCjYCACABLAACQQN0IANqQYADaygCACEJIAUgAUEEaiIBNgJMDAILIBENByAABH8gAiACKAIAIgFBBGo2AgAgASgCAAVBAAshCSAFIAUoAkxBAmoiATYCTAwBCyAFIAFBAWo2AkwgBUHMAGoQdyEJIAUoAkwhAQtBACEGA0AgBiESQX8hDSABLAAAQcEAa0E5Sw0HIAUgAUEBaiIKNgJMIAEsAAAhBiAKIQEgBiASQTpsakGf7ABqLQAAIgZBAWtBCEkNAAsgBkETRg0CIAZFDQYgD0EATgRAIAQgD0ECdGogBjYCACAFIAMgD0EDdGopAwA3A0AMBAsgAA0BC0EAIQ0MBQsgBUFAayAGIAIQeCAFKAJMIQoMAgsgD0F/Sg0DC0EAIQEgAEUNBAsgCEH//3txIgwgCCAIQYDAAHEbIQZBACENQaQIIQ8gECEIAkACQAJAAn8CQAJAAkACQAJ/AkACQAJAAkACQAJAAkAgCkEBaywAACIBQV9xIAEgAUEPcUEDRhsgASASGyIBQdgAaw4hBBISEhISEhISDhIPBg4ODhIGEhISEgIFAxISCRIBEhIEAAsCQCABQcEAaw4HDhILEg4ODgALIAFB0wBGDQkMEQsgBSkDQCEUQaQIDAULQQAhAQJAAkACQAJAAkACQAJAIBJB/wFxDggAAQIDBBcFBhcLIAUoAkAgDjYCAAwWCyAFKAJAIA42AgAMFQsgBSgCQCAOrDcDAAwUCyAFKAJAIA47AQAMEwsgBSgCQCAOOgAADBILIAUoAkAgDjYCAAwRCyAFKAJAIA6sNwMADBALIAlBCCAJQQhLGyEJIAZBCHIhBkH4ACEBCyAQIQcgAUEgcSEMIAUpA0AiFFBFBEADQCAHQQFrIgcgFKdBD3FBsPAAai0AACAMcjoAACAUQg9WIQogFEIEiCEUIAoNAAsLIAUpA0BQDQMgBkEIcUUNAyABQQR2QaQIaiEPQQIhDQwDCyAQIQEgBSkDQCIUUEUEQANAIAFBAWsiASAUp0EHcUEwcjoAACAUQgdWIQcgFEIDiCEUIAcNAAsLIAEhByAGQQhxRQ0CIAkgECAHayIBQQFqIAEgCUgbIQkMAgsgBSkDQCIUQn9XBEAgBUIAIBR9IhQ3A0BBASENQaQIDAELIAZBgBBxBEBBASENQaUIDAELQaYIQaQIIAZBAXEiDRsLIQ8gECEBAkAgFEKAgICAEFQEQCAUIRUMAQsDQCABQQFrIgEgFCAUQgqAIhVCCn59p0EwcjoAACAUQv////+fAVYhByAVIRQgBw0ACwsgFaciBwRAA0AgAUEBayIBIAcgB0EKbiIMQQpsa0EwcjoAACAHQQlLIQogDCEHIAoNAAsLIAEhBwsgBkH//3txIAYgCUF/ShshBgJAIAUpA0AiFEIAUg0AIAkNAEEAIQkgECEHDAoLIAkgFFAgECAHa2oiASABIAlIGyEJDAkLIAUoAkAiAUGKEiABGyIHQQAgCRB6IgEgByAJaiABGyEIIAwhBiABIAdrIAkgARshCQwICyAJBEAgBSgCQAwCC0EAIQEgAEEgIAtBACAGECcMAgsgBUEANgIMIAUgBSkDQD4CCCAFIAVBCGo2AkBBfyEJIAVBCGoLIQhBACEBAkADQCAIKAIAIgdFDQECQCAFQQRqIAcQeSIHQQBIIgwNACAHIAkgAWtLDQAgCEEEaiEIIAkgASAHaiIBSw0BDAILC0F/IQ0gDA0FCyAAQSAgCyABIAYQJyABRQRAQQAhAQwBC0EAIQggBSgCQCEKA0AgCigCACIHRQ0BIAVBBGogBxB5IgcgCGoiCCABSg0BIAAgBUEEaiAHEC4gCkEEaiEKIAEgCEsNAAsLIABBICALIAEgBkGAwABzECcgCyABIAEgC0gbIQEMBQsgACAFKwNAIAsgCSAGIAFBABEdACEBDAQLIAUgBSkDQDwAN0EBIQkgEyEHIAwhBgwCC0F/IQ0LIAVB0ABqJAAgDQ8LIABBICANIAggB2siDCAJIAkgDEgbIgpqIgggCyAIIAtKGyIBIAggBhAnIAAgDyANEC4gAEEwIAEgCCAGQYCABHMQJyAAQTAgCiAMQQAQJyAAIAcgDBAuIABBICABIAggBkGAwABzECcMAAsAC54DAgR/AX4gAARAIAAoAgAiAQRAIAEQGhogACgCABALCyAAKAIcEAYgACgCIBAQIAAoAiQQECAAKAJQIgMEQCADKAIQIgIEQCADKAIAIgEEfwNAIAIgBEECdGooAgAiAgRAA0AgAigCGCEBIAIQBiABIgINAAsgAygCACEBCyABIARBAWoiBEsEQCADKAIQIQIMAQsLIAMoAhAFIAILEAYLIAMQBgsgACgCQCIBBEAgACkDMFAEfyABBSABED5CAiEFAkAgACkDMEICVA0AQQEhAgNAIAAoAkAgAkEEdGoQPiAFIAApAzBaDQEgBachAiAFQgF8IQUMAAsACyAAKAJACxAGCwJAIAAoAkRFDQBBACECQgEhBQNAIAAoAkwgAkECdGooAgAiAUEBOgAoIAFBDGoiASgCAEUEQCABBEAgAUEANgIEIAFBCDYCAAsLIAUgADUCRFoNASAFpyECIAVCAXwhBQwACwALIAAoAkwQBiAAKAJUIgIEQCACKAIIIgEEQCACKAIMIAERAwALIAIQBgsgAEEIahAxIAAQBgsL6gMCAX4EfwJAIAAEfiABRQRAIAMEQCADQQA2AgQgA0ESNgIAC0J/DwsgAkGDIHEEQAJAIAApAzBQDQBBPEE9IAJBAXEbIQcgAkECcUUEQANAIAAgBCACIAMQUyIFBEAgASAFIAcRAgBFDQYLIARCAXwiBCAAKQMwVA0ADAILAAsDQCAAIAQgAiADEFMiBQRAIAECfyAFECJBAWohBgNAQQAgBkUNARogBSAGQQFrIgZqIggtAABBL0cNAAsgCAsiBkEBaiAFIAYbIAcRAgBFDQULIARCAXwiBCAAKQMwVA0ACwsgAwRAIANBADYCBCADQQk2AgALQn8PC0ESIQYCQAJAIAAoAlAiBUUNACABRQ0AQQkhBiAFKQMIUA0AIAUoAhAgAS0AACIHBH9CpesKIQQgASEAA0AgBCAHrUL/AYN8IQQgAC0AASIHBEAgAEEBaiEAIARC/////w+DQiF+IQQMAQsLIASnBUGFKgsgBSgCAHBBAnRqKAIAIgBFDQADQCABIAAoAgAQOEUEQCACQQhxBEAgACkDCCIEQn9RDQMMBAsgACkDECIEQn9RDQIMAwsgACgCGCIADQALCyADBEAgA0EANgIEIAMgBjYCAAtCfyEECyAEBUJ/Cw8LIAMEQCADQgA3AgALIAQL3AQCB38BfgJAAkAgAEUNACABRQ0AIAJCf1UNAQsgBARAIARBADYCBCAEQRI2AgALQQAPCwJAIAAoAgAiB0UEQEGAAiEHQYACEDwiBkUNASAAKAIQEAYgAEGAAjYCACAAIAY2AhALAkACQCAAKAIQIAEtAAAiBQR/QqXrCiEMIAEhBgNAIAwgBa1C/wGDfCEMIAYtAAEiBQRAIAZBAWohBiAMQv////8Pg0IhfiEMDAELCyAMpwVBhSoLIgYgB3BBAnRqIggoAgAiBQRAA0ACQCAFKAIcIAZHDQAgASAFKAIAEDgNAAJAIANBCHEEQCAFKQMIQn9SDQELIAUpAxBCf1ENBAsgBARAIARBADYCBCAEQQo2AgALQQAPCyAFKAIYIgUNAAsLQSAQCSIFRQ0CIAUgATYCACAFIAgoAgA2AhggCCAFNgIAIAVCfzcDCCAFIAY2AhwgACAAKQMIQgF8Igw3AwggDLogB7hEAAAAAAAA6D+iZEUNACAHQQBIDQAgByAHQQF0IghGDQAgCBA8IgpFDQECQCAMQgAgBxtQBEAgACgCECEJDAELIAAoAhAhCUEAIQQDQCAJIARBAnRqKAIAIgYEQANAIAYoAhghASAGIAogBigCHCAIcEECdGoiCygCADYCGCALIAY2AgAgASIGDQALCyAEQQFqIgQgB0cNAAsLIAkQBiAAIAg2AgAgACAKNgIQCyADQQhxBEAgBSACNwMICyAFIAI3AxBBAQ8LIAQEQCAEQQA2AgQgBEEONgIAC0EADwsgBARAIARBADYCBCAEQQ42AgALQQAL3Q8BF38jAEFAaiIHQgA3AzAgB0IANwM4IAdCADcDICAHQgA3AygCQAJAAkACQAJAIAIEQCACQQNxIQggAkEBa0EDTwRAIAJBfHEhBgNAIAdBIGogASAJQQF0IgxqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBAnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBHJqLwEAQQF0aiIKIAovAQBBAWo7AQAgB0EgaiABIAxBBnJqLwEAQQF0aiIKIAovAQBBAWo7AQAgCUEEaiEJIAZBBGsiBg0ACwsgCARAA0AgB0EgaiABIAlBAXRqLwEAQQF0aiIGIAYvAQBBAWo7AQAgCUEBaiEJIAhBAWsiCA0ACwsgBCgCACEJQQ8hCyAHLwE+IhENAgwBCyAEKAIAIQkLQQ4hC0EAIREgBy8BPA0AQQ0hCyAHLwE6DQBBDCELIAcvATgNAEELIQsgBy8BNg0AQQohCyAHLwE0DQBBCSELIAcvATINAEEIIQsgBy8BMA0AQQchCyAHLwEuDQBBBiELIAcvASwNAEEFIQsgBy8BKg0AQQQhCyAHLwEoDQBBAyELIAcvASYNAEECIQsgBy8BJA0AIAcvASJFBEAgAyADKAIAIgBBBGo2AgAgAEHAAjYBACADIAMoAgAiAEEEajYCACAAQcACNgEAQQEhDQwDCyAJQQBHIRtBASELQQEhCQwBCyALIAkgCSALSxshG0EBIQ5BASEJA0AgB0EgaiAJQQF0ai8BAA0BIAlBAWoiCSALRw0ACyALIQkLQX8hCCAHLwEiIg9BAksNAUEEIAcvASQiECAPQQF0amsiBkEASA0BIAZBAXQgBy8BJiISayIGQQBIDQEgBkEBdCAHLwEoIhNrIgZBAEgNASAGQQF0IAcvASoiFGsiBkEASA0BIAZBAXQgBy8BLCIVayIGQQBIDQEgBkEBdCAHLwEuIhZrIgZBAEgNASAGQQF0IAcvATAiF2siBkEASA0BIAZBAXQgBy8BMiIZayIGQQBIDQEgBkEBdCAHLwE0IhxrIgZBAEgNASAGQQF0IAcvATYiDWsiBkEASA0BIAZBAXQgBy8BOCIYayIGQQBIDQEgBkEBdCAHLwE6IgxrIgZBAEgNASAGQQF0IAcvATwiCmsiBkEASA0BIAZBAXQgEWsiBkEASA0BIAZBACAARSAOchsNASAJIBtLIRpBACEIIAdBADsBAiAHIA87AQQgByAPIBBqIgY7AQYgByAGIBJqIgY7AQggByAGIBNqIgY7AQogByAGIBRqIgY7AQwgByAGIBVqIgY7AQ4gByAGIBZqIgY7ARAgByAGIBdqIgY7ARIgByAGIBlqIgY7ARQgByAGIBxqIgY7ARYgByAGIA1qIgY7ARggByAGIBhqIgY7ARogByAGIAxqIgY7ARwgByAGIApqOwEeAkAgAkUNACACQQFHBEAgAkF+cSEGA0AgASAIQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAg7AQALIAEgCEEBciIMQQF0ai8BACIKBEAgByAKQQF0aiIKIAovAQAiCkEBajsBACAFIApBAXRqIAw7AQALIAhBAmohCCAGQQJrIgYNAAsLIAJBAXFFDQAgASAIQQF0ai8BACICRQ0AIAcgAkEBdGoiAiACLwEAIgJBAWo7AQAgBSACQQF0aiAIOwEACyAJIBsgGhshDUEUIRBBACEWIAUiCiEYQQAhEgJAAkACQCAADgICAAELQQEhCCANQQpLDQNBgQIhEEHw2QAhGEGw2QAhCkEBIRIMAQsgAEECRiEWQQAhEEHw2gAhGEGw2gAhCiAAQQJHBEAMAQtBASEIIA1BCUsNAgtBASANdCITQQFrIRwgAygCACEUQQAhFSANIQZBACEPQQAhDkF/IQIDQEEBIAZ0IRoCQANAIAkgD2shFwJAIAUgFUEBdGovAQAiCCAQTwRAIAogCCAQa0EBdCIAai8BACERIAAgGGotAAAhAAwBC0EAQeAAIAhBAWogEEkiBhshACAIQQAgBhshEQsgDiAPdiEMQX8gF3QhBiAaIQgDQCAUIAYgCGoiCCAMakECdGoiGSAROwECIBkgFzoAASAZIAA6AAAgCA0AC0EBIAlBAWt0IQYDQCAGIgBBAXYhBiAAIA5xDQALIAdBIGogCUEBdGoiBiAGLwEAQQFrIgY7AQAgAEEBayAOcSAAakEAIAAbIQ4gFUEBaiEVIAZB//8DcUUEQCAJIAtGDQIgASAFIBVBAXRqLwEAQQF0ai8BACEJCyAJIA1NDQAgDiAccSIAIAJGDQALQQEgCSAPIA0gDxsiD2siBnQhAiAJIAtJBEAgCyAPayEMIAkhCAJAA0AgAiAHQSBqIAhBAXRqLwEAayICQQFIDQEgAkEBdCECIAZBAWoiBiAPaiIIIAtJDQALIAwhBgtBASAGdCECC0EBIQggEiACIBNqIhNBtApLcQ0DIBYgE0HQBEtxDQMgAygCACICIABBAnRqIgggDToAASAIIAY6AAAgCCAUIBpBAnRqIhQgAmtBAnY7AQIgACECDAELCyAOBEAgFCAOQQJ0aiIAQQA7AQIgACAXOgABIABBwAA6AAALIAMgAygCACATQQJ0ajYCAAsgBCANNgIAQQAhCAsgCAusAQICfgF/IAFBAmqtIQIgACkDmC4hAwJAIAAoAqAuIgFBA2oiBEE/TQRAIAIgAa2GIAOEIQIMAQsgAUHAAEYEQCAAKAIEIAAoAhBqIAM3AAAgACAAKAIQQQhqNgIQQQMhBAwBCyAAKAIEIAAoAhBqIAIgAa2GIAOENwAAIAAgACgCEEEIajYCECABQT1rIQQgAkHAACABa62IIQILIAAgAjcDmC4gACAENgKgLguXAwICfgN/QYDJADMBACECIAApA5guIQMCQCAAKAKgLiIFQYLJAC8BACIGaiIEQT9NBEAgAiAFrYYgA4QhAgwBCyAFQcAARgRAIAAoAgQgACgCEGogAzcAACAAIAAoAhBBCGo2AhAgBiEEDAELIAAoAgQgACgCEGogAiAFrYYgA4Q3AAAgACAAKAIQQQhqNgIQIARBQGohBCACQcAAIAVrrYghAgsgACACNwOYLiAAIAQ2AqAuIAEEQAJAIARBOU4EQCAAKAIEIAAoAhBqIAI3AAAgACAAKAIQQQhqNgIQDAELIARBGU4EQCAAKAIEIAAoAhBqIAI+AAAgACAAKAIQQQRqNgIQIAAgACkDmC5CIIgiAjcDmC4gACAAKAKgLkEgayIENgKgLgsgBEEJTgR/IAAoAgQgACgCEGogAj0AACAAIAAoAhBBAmo2AhAgACkDmC5CEIghAiAAKAKgLkEQawUgBAtBAUgNACAAIAAoAhAiAUEBajYCECABIAAoAgRqIAI8AAALIABBADYCoC4gAEIANwOYLgsL8hQBEn8gASgCCCICKAIAIQUgAigCDCEHIAEoAgAhCCAAQoCAgIDQxwA3A6ApQQAhAgJAAkAgB0EASgRAQX8hDANAAkAgCCACQQJ0aiIDLwEABEAgACAAKAKgKUEBaiIDNgKgKSAAIANBAnRqQawXaiACNgIAIAAgAmpBqClqQQA6AAAgAiEMDAELIANBADsBAgsgAkEBaiICIAdHDQALIABB/C1qIQ8gAEH4LWohESAAKAKgKSIEQQFKDQIMAQsgAEH8LWohDyAAQfgtaiERQX8hDAsDQCAAIARBAWoiAjYCoCkgACACQQJ0akGsF2ogDEEBaiIDQQAgDEECSCIGGyICNgIAIAggAkECdCIEakEBOwEAIAAgAmpBqClqQQA6AAAgACAAKAL4LUEBazYC+C0gBQRAIA8gDygCACAEIAVqLwECazYCAAsgAyAMIAYbIQwgACgCoCkiBEECSA0ACwsgASAMNgIEIARBAXYhBgNAIAAgBkECdGpBrBdqKAIAIQkCQCAGIgJBAXQiAyAESg0AIAggCUECdGohCiAAIAlqQagpaiENIAYhBQNAAkAgAyAETgRAIAMhAgwBCyAIIABBrBdqIgIgA0EBciIEQQJ0aigCACILQQJ0ai8BACIOIAggAiADQQJ0aigCACIQQQJ0ai8BACICTwRAIAIgDkcEQCADIQIMAgsgAyECIABBqClqIgMgC2otAAAgAyAQai0AAEsNAQsgBCECCyAKLwEAIgQgCCAAIAJBAnRqQawXaigCACIDQQJ0ai8BACILSQRAIAUhAgwCCwJAIAQgC0cNACANLQAAIAAgA2pBqClqLQAASw0AIAUhAgwCCyAAIAVBAnRqQawXaiADNgIAIAIhBSACQQF0IgMgACgCoCkiBEwNAAsLIAAgAkECdGpBrBdqIAk2AgAgBkECTgRAIAZBAWshBiAAKAKgKSEEDAELCyAAKAKgKSEDA0AgByEGIAAgA0EBayIENgKgKSAAKAKwFyEKIAAgACADQQJ0akGsF2ooAgAiCTYCsBdBASECAkAgA0EDSA0AIAggCUECdGohDSAAIAlqQagpaiELQQIhA0EBIQUDQAJAIAMgBE4EQCADIQIMAQsgCCAAQawXaiICIANBAXIiB0ECdGooAgAiBEECdGovAQAiDiAIIAIgA0ECdGooAgAiEEECdGovAQAiAk8EQCACIA5HBEAgAyECDAILIAMhAiAAQagpaiIDIARqLQAAIAMgEGotAABLDQELIAchAgsgDS8BACIHIAggACACQQJ0akGsF2ooAgAiA0ECdGovAQAiBEkEQCAFIQIMAgsCQCAEIAdHDQAgCy0AACAAIANqQagpai0AAEsNACAFIQIMAgsgACAFQQJ0akGsF2ogAzYCACACIQUgAkEBdCIDIAAoAqApIgRMDQALC0ECIQMgAEGsF2oiByACQQJ0aiAJNgIAIAAgACgCpClBAWsiBTYCpCkgACgCsBchAiAHIAVBAnRqIAo2AgAgACAAKAKkKUEBayIFNgKkKSAHIAVBAnRqIAI2AgAgCCAGQQJ0aiINIAggAkECdGoiBS8BACAIIApBAnRqIgQvAQBqOwEAIABBqClqIgkgBmoiCyACIAlqLQAAIgIgCSAKai0AACIKIAIgCksbQQFqOgAAIAUgBjsBAiAEIAY7AQIgACAGNgKwF0EBIQVBASECAkAgACgCoCkiBEECSA0AA0AgDS8BACIKIAggAAJ/IAMgAyAETg0AGiAIIAcgA0EBciICQQJ0aigCACIEQQJ0ai8BACIOIAggByADQQJ0aigCACIQQQJ0ai8BACISTwRAIAMgDiASRw0BGiADIAQgCWotAAAgCSAQai0AAEsNARoLIAILIgJBAnRqQawXaigCACIDQQJ0ai8BACIESQRAIAUhAgwCCwJAIAQgCkcNACALLQAAIAAgA2pBqClqLQAASw0AIAUhAgwCCyAAIAVBAnRqQawXaiADNgIAIAIhBSACQQF0IgMgACgCoCkiBEwNAAsLIAZBAWohByAAIAJBAnRqQawXaiAGNgIAIAAoAqApIgNBAUoNAAsgACAAKAKkKUEBayICNgKkKSAAQawXaiIDIAJBAnRqIAAoArAXNgIAIAEoAgQhCSABKAIIIgIoAhAhBiACKAIIIQogAigCBCEQIAIoAgAhDSABKAIAIQcgAEGkF2pCADcBACAAQZwXakIANwEAIABBlBdqQgA3AQAgAEGMF2oiAUIANwEAQQAhBSAHIAMgACgCpClBAnRqKAIAQQJ0akEAOwECAkAgACgCpCkiAkG7BEoNACACQQFqIQIDQCAHIAAgAkECdGpBrBdqKAIAIgRBAnQiEmoiCyAHIAsvAQJBAnRqLwECIgNBAWogBiADIAZJGyIOOwECIAMgBk8hEwJAIAQgCUoNACAAIA5BAXRqQYwXaiIDIAMvAQBBAWo7AQBBACEDIAQgCk4EQCAQIAQgCmtBAnRqKAIAIQMLIBEgESgCACALLwEAIgQgAyAOamxqNgIAIA1FDQAgDyAPKAIAIAMgDSASai8BAmogBGxqNgIACyAFIBNqIQUgAkEBaiICQb0ERw0ACyAFRQ0AIAAgBkEBdGpBjBdqIQQDQCAGIQIDQCAAIAIiA0EBayICQQF0akGMF2oiDy8BACIKRQ0ACyAPIApBAWs7AQAgACADQQF0akGMF2oiAiACLwEAQQJqOwEAIAQgBC8BAEEBayIDOwEAIAVBAkohAiAFQQJrIQUgAg0ACyAGRQ0AQb0EIQIDQCADQf//A3EiBQRAA0AgACACQQFrIgJBAnRqQawXaigCACIDIAlKDQAgByADQQJ0aiIDLwECIAZHBEAgESARKAIAIAYgAy8BAGxqIgQ2AgAgESAEIAMvAQAgAy8BAmxrNgIAIAMgBjsBAgsgBUEBayIFDQALCyAGQQFrIgZFDQEgACAGQQF0akGMF2ovAQAhAwwACwALIwBBIGsiAiABIgAvAQBBAXQiATsBAiACIAEgAC8BAmpBAXQiATsBBCACIAEgAC8BBGpBAXQiATsBBiACIAEgAC8BBmpBAXQiATsBCCACIAEgAC8BCGpBAXQiATsBCiACIAEgAC8BCmpBAXQiATsBDCACIAEgAC8BDGpBAXQiATsBDiACIAEgAC8BDmpBAXQiATsBECACIAEgAC8BEGpBAXQiATsBEiACIAEgAC8BEmpBAXQiATsBFCACIAEgAC8BFGpBAXQiATsBFiACIAEgAC8BFmpBAXQiATsBGCACIAEgAC8BGGpBAXQiATsBGiACIAEgAC8BGmpBAXQiATsBHCACIAAvARwgAWpBAXQ7AR5BACEAIAxBAE4EQANAIAggAEECdGoiAy8BAiIBBEAgAiABQQF0aiIFIAUvAQAiBUEBajsBACADIAWtQoD+A4NCCIhCgpCAgQh+QpDCiKKIAYNCgYKEiBB+QiCIp0H/AXEgBUH/AXGtQoKQgIEIfkKQwoiiiAGDQoGChIgQfkIYiKdBgP4DcXJBECABa3Y7AQALIAAgDEchASAAQQFqIQAgAQ0ACwsLcgEBfyMAQRBrIgQkAAJ/QQAgAEUNABogAEEIaiEAIAFFBEAgAlBFBEAgAARAIABBADYCBCAAQRI2AgALQQAMAgtBAEIAIAMgABA6DAELIAQgAjcDCCAEIAE2AgAgBEIBIAMgABA6CyEAIARBEGokACAACyIAIAAgASACIAMQJiIARQRAQQAPCyAAKAIwQQAgAiADECULAwABC8gFAQR/IABB//8DcSEDIABBEHYhBEEBIQAgAkEBRgRAIAMgAS0AAGpB8f8DcCIAIARqQfH/A3BBEHQgAHIPCwJAIAEEfyACQRBJDQECQCACQa8rSwRAA0AgAkGwK2shAkG1BSEFIAEhAANAIAMgAC0AAGoiAyAEaiADIAAtAAFqIgNqIAMgAC0AAmoiA2ogAyAALQADaiIDaiADIAAtAARqIgNqIAMgAC0ABWoiA2ogAyAALQAGaiIDaiADIAAtAAdqIgNqIQQgBQRAIABBCGohACAFQQFrIQUMAQsLIARB8f8DcCEEIANB8f8DcCEDIAFBsCtqIQEgAkGvK0sNAAsgAkEISQ0BCwNAIAMgAS0AAGoiACAEaiAAIAEtAAFqIgBqIAAgAS0AAmoiAGogACABLQADaiIAaiAAIAEtAARqIgBqIAAgAS0ABWoiAGogACABLQAGaiIAaiAAIAEtAAdqIgNqIQQgAUEIaiEBIAJBCGsiAkEHSw0ACwsCQCACRQ0AIAJBAWshBiACQQNxIgUEQCABIQADQCACQQFrIQIgAyAALQAAaiIDIARqIQQgAEEBaiIBIQAgBUEBayIFDQALCyAGQQNJDQADQCADIAEtAABqIgAgAS0AAWoiBSABLQACaiIGIAEtAANqIgMgBiAFIAAgBGpqamohBCABQQRqIQEgAkEEayICDQALCyADQfH/A3AgBEHx/wNwQRB0cgVBAQsPCwJAIAJFDQAgAkEBayEGIAJBA3EiBQRAIAEhAANAIAJBAWshAiADIAAtAABqIgMgBGohBCAAQQFqIgEhACAFQQFrIgUNAAsLIAZBA0kNAANAIAMgAS0AAGoiACABLQABaiIFIAEtAAJqIgYgAS0AA2oiAyAGIAUgACAEampqaiEEIAFBBGohASACQQRrIgINAAsLIANB8f8DcCAEQfH/A3BBEHRyCx8AIAAgAiADQcCAASgCABEAACEAIAEgAiADEAcaIAALIwAgACAAKAJAIAIgA0HUgAEoAgARAAA2AkAgASACIAMQBxoLzSoCGH8HfiAAKAIMIgIgACgCECIDaiEQIAMgAWshASAAKAIAIgUgACgCBGohA0F/IAAoAhwiBygCpAF0IQRBfyAHKAKgAXQhCyAHKAI4IQwCf0EAIAcoAiwiEUUNABpBACACIAxJDQAaIAJBhAJqIAwgEWpNCyEWIBBBgwJrIRMgASACaiEXIANBDmshFCAEQX9zIRggC0F/cyESIAcoApwBIRUgBygCmAEhDSAHKAKIASEIIAc1AoQBIR0gBygCNCEOIAcoAjAhGSAQQQFqIQ8DQCAIQThyIQYgBSAIQQN2QQdxayELAn8gAiANIAUpAAAgCK2GIB2EIh2nIBJxQQJ0IgFqIgMtAAAiBA0AGiACIAEgDWoiAS0AAjoAACAGIAEtAAEiAWshBiACQQFqIA0gHSABrYgiHacgEnFBAnQiAWoiAy0AACIEDQAaIAIgASANaiIDLQACOgABIAYgAy0AASIDayEGIA0gHSADrYgiHacgEnFBAnRqIgMtAAAhBCACQQJqCyEBIAtBB2ohBSAGIAMtAAEiAmshCCAdIAKtiCEdAkACQAJAIARB/wFxRQ0AAkACQAJAAkACQANAIARBEHEEQCAVIB0gBK1CD4OIIhqnIBhxQQJ0aiECAn8gCCAEQQ9xIgZrIgRBG0sEQCAEIQggBQwBCyAEQThyIQggBSkAACAErYYgGoQhGiAFIARBA3ZrQQdqCyELIAMzAQIhGyAIIAItAAEiA2shCCAaIAOtiCEaIAItAAAiBEEQcQ0CA0AgBEHAAHFFBEAgCCAVIAIvAQJBAnRqIBqnQX8gBHRBf3NxQQJ0aiICLQABIgNrIQggGiADrYghGiACLQAAIgRBEHFFDQEMBAsLIAdB0f4ANgIEIABB7A42AhggGiEdDAMLIARB/wFxIgJBwABxRQRAIAggDSADLwECQQJ0aiAdp0F/IAJ0QX9zcUECdGoiAy0AASICayEIIB0gAq2IIR0gAy0AACIERQ0HDAELCyAEQSBxBEAgB0G//gA2AgQgASECDAgLIAdB0f4ANgIEIABB0A42AhggASECDAcLIB1BfyAGdEF/c62DIBt8IhunIQUgCCAEQQ9xIgNrIQggGiAErUIPg4ghHSABIBdrIgYgAjMBAiAaQX8gA3RBf3Otg3ynIgRPDQIgBCAGayIGIBlNDQEgBygCjEdFDQEgB0HR/gA2AgQgAEG5DDYCGAsgASECIAshBQwFCwJAIA5FBEAgDCARIAZraiEDDAELIAYgDk0EQCAMIA4gBmtqIQMMAQsgDCARIAYgDmsiBmtqIQMgBSAGTQ0AIAUgBmshBQJAAkAgASADTSABIA8gAWusIhogBq0iGyAaIBtUGyIapyIGaiICIANLcQ0AIAMgBmogAUsgASADT3ENACABIAMgBhAHGiACIQEMAQsgASADIAMgAWsiASABQR91IgFqIAFzIgIQByACaiEBIBogAq0iHn0iHFANACACIANqIQIDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgASACKQAANwAAIAEgAikAGDcAGCABIAIpABA3ABAgASACKQAINwAIIBpCIH0hGiACQSBqIQIgAUEgaiEBIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAEgAikAADcAACABIAIpABg3ABggASACKQAQNwAQIAEgAikACDcACCABIAIpADg3ADggASACKQAwNwAwIAEgAikAKDcAKCABIAIpACA3ACAgASACKQBYNwBYIAEgAikAUDcAUCABIAIpAEg3AEggASACKQBANwBAIAEgAikAYDcAYCABIAIpAGg3AGggASACKQBwNwBwIAEgAikAeDcAeCACQYABaiECIAFBgAFqIQEgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAEgAikAADcAACABIAIpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCABIAIpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCABIAIoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCABIAIvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCABIAItAAA6AAAgAkEBaiECIAFBAWohAQsgHEIAUg0ACwsgDiEGIAwhAwsgBSAGSwRAAkACQCABIANNIAEgDyABa6wiGiAGrSIbIBogG1QbIhqnIglqIgIgA0txDQAgAyAJaiABSyABIANPcQ0AIAEgAyAJEAcaDAELIAEgAyADIAFrIgEgAUEfdSIBaiABcyIBEAcgAWohAiAaIAGtIh59IhxQDQAgASADaiEBA0ACQCAcIB4gHCAeVBsiG0IgVARAIBshGgwBCyAbIhpCIH0iIEIFiEIBfEIDgyIfUEUEQANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCAaQiB9IRogAUEgaiEBIAJBIGohAiAfQgF9Ih9CAFINAAsLICBC4ABUDQADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggAiABKQA4NwA4IAIgASkAMDcAMCACIAEpACg3ACggAiABKQAgNwAgIAIgASkAWDcAWCACIAEpAFA3AFAgAiABKQBINwBIIAIgASkAQDcAQCACIAEpAGA3AGAgAiABKQBoNwBoIAIgASkAcDcAcCACIAEpAHg3AHggAUGAAWohASACQYABaiECIBpCgAF9IhpCH1YNAAsLIBpCEFoEQCACIAEpAAA3AAAgAiABKQAINwAIIBpCEH0hGiACQRBqIQIgAUEQaiEBCyAaQghaBEAgAiABKQAANwAAIBpCCH0hGiACQQhqIQIgAUEIaiEBCyAaQgRaBEAgAiABKAAANgAAIBpCBH0hGiACQQRqIQIgAUEEaiEBCyAaQgJaBEAgAiABLwAAOwAAIBpCAn0hGiACQQJqIQIgAUECaiEBCyAcIBt9IRwgGlBFBEAgAiABLQAAOgAAIAJBAWohAiABQQFqIQELIBxCAFINAAsLIAUgBmshAUEAIARrIQUCQCAEQQdLBEAgBCEDDAELIAEgBE0EQCAEIQMMAQsgAiAEayEFA0ACQCACIAUpAAA3AAAgBEEBdCEDIAEgBGshASACIARqIQIgBEEDSw0AIAMhBCABIANLDQELC0EAIANrIQULIAIgBWohBAJAIAUgDyACa6wiGiABrSIbIBogG1QbIhqnIgFIIAVBf0pxDQAgBUEBSCABIARqIAJLcQ0AIAIgBCABEAcgAWohAgwDCyACIAQgAyADQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANAiABIARqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAILAkAgASADTSABIA8gAWusIhogBa0iGyAaIBtUGyIapyIEaiICIANLcQ0AIAMgBGogAUsgASADT3ENACABIAMgBBAHGgwCCyABIAMgAyABayIBIAFBH3UiAWogAXMiARAHIAFqIQIgGiABrSIefSIcUA0BIAEgA2ohAQNAAkAgHCAeIBwgHlQbIhtCIFQEQCAbIRoMAQsgGyIaQiB9IiBCBYhCAXxCA4MiH1BFBEADQCACIAEpAAA3AAAgAiABKQAYNwAYIAIgASkAEDcAECACIAEpAAg3AAggGkIgfSEaIAFBIGohASACQSBqIQIgH0IBfSIfQgBSDQALCyAgQuAAVA0AA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIAIgASkAODcAOCACIAEpADA3ADAgAiABKQAoNwAoIAIgASkAIDcAICACIAEpAFg3AFggAiABKQBQNwBQIAIgASkASDcASCACIAEpAEA3AEAgAiABKQBgNwBgIAIgASkAaDcAaCACIAEpAHA3AHAgAiABKQB4NwB4IAFBgAFqIQEgAkGAAWohAiAaQoABfSIaQh9WDQALCyAaQhBaBEAgAiABKQAANwAAIAIgASkACDcACCAaQhB9IRogAkEQaiECIAFBEGohAQsgGkIIWgRAIAIgASkAADcAACAaQgh9IRogAkEIaiECIAFBCGohAQsgGkIEWgRAIAIgASgAADYAACAaQgR9IRogAkEEaiECIAFBBGohAQsgGkICWgRAIAIgAS8AADsAACAaQgJ9IRogAkECaiECIAFBAmohAQsgHCAbfSEcIBpQRQRAIAIgAS0AADoAACACQQFqIQIgAUEBaiEBCyAcUEUNAAsMAQsCQAJAIBYEQAJAIAQgBUkEQCAHKAKYRyAESw0BCyABIARrIQMCQEEAIARrIgVBf0ogDyABa6wiGiAbIBogG1QbIhqnIgIgBUpxDQAgBUEBSCACIANqIAFLcQ0AIAEgAyACEAcgAmohAgwFCyABIAMgBCAEQR91IgFqIAFzIgEQByABaiECIBogAa0iHn0iHFANBCABIANqIQEDQAJAIBwgHiAcIB5UGyIbQiBUBEAgGyEaDAELIBsiGkIgfSIgQgWIQgF8QgODIh9QRQRAA0AgAiABKQAANwAAIAIgASkAGDcAGCACIAEpABA3ABAgAiABKQAINwAIIBpCIH0hGiABQSBqIQEgAkEgaiECIB9CAX0iH0IAUg0ACwsgIELgAFQNAANAIAIgASkAADcAACACIAEpABg3ABggAiABKQAQNwAQIAIgASkACDcACCACIAEpADg3ADggAiABKQAwNwAwIAIgASkAKDcAKCACIAEpACA3ACAgAiABKQBYNwBYIAIgASkAUDcAUCACIAEpAEg3AEggAiABKQBANwBAIAIgASkAYDcAYCACIAEpAGg3AGggAiABKQBwNwBwIAIgASkAeDcAeCABQYABaiEBIAJBgAFqIQIgGkKAAX0iGkIfVg0ACwsgGkIQWgRAIAIgASkAADcAACACIAEpAAg3AAggGkIQfSEaIAJBEGohAiABQRBqIQELIBpCCFoEQCACIAEpAAA3AAAgGkIIfSEaIAJBCGohAiABQQhqIQELIBpCBFoEQCACIAEoAAA2AAAgGkIEfSEaIAJBBGohAiABQQRqIQELIBpCAloEQCACIAEvAAA7AAAgGkICfSEaIAJBAmohAiABQQJqIQELIBwgG30hHCAaUEUEQCACIAEtAAA6AAAgAkEBaiECIAFBAWohAQsgHFBFDQALDAQLIBAgAWsiCUEBaiIGIAUgBSAGSxshAyABIARrIQIgAUEHcUUNAiADRQ0CIAEgAi0AADoAACACQQFqIQIgAUEBaiIGQQdxQQAgA0EBayIFGw0BIAYhASAFIQMgCSEGDAILAkAgBCAFSQRAIAcoAphHIARLDQELIAEgASAEayIGKQAANwAAIAEgBUEBa0EHcUEBaiIDaiECIAUgA2siBEUNAyADIAZqIQEDQCACIAEpAAA3AAAgAUEIaiEBIAJBCGohAiAEQQhrIgQNAAsMAwsgASAEIAUQPyECDAILIAEgAi0AADoAASAJQQFrIQYgA0ECayEFIAJBAWohAgJAIAFBAmoiCkEHcUUNACAFRQ0AIAEgAi0AADoAAiAJQQJrIQYgA0EDayEFIAJBAWohAgJAIAFBA2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAAyAJQQNrIQYgA0EEayEFIAJBAWohAgJAIAFBBGoiCkEHcUUNACAFRQ0AIAEgAi0AADoABCAJQQRrIQYgA0EFayEFIAJBAWohAgJAIAFBBWoiCkEHcUUNACAFRQ0AIAEgAi0AADoABSAJQQVrIQYgA0EGayEFIAJBAWohAgJAIAFBBmoiCkEHcUUNACAFRQ0AIAEgAi0AADoABiAJQQZrIQYgA0EHayEFIAJBAWohAgJAIAFBB2oiCkEHcUUNACAFRQ0AIAEgAi0AADoAByAJQQdrIQYgA0EIayEDIAFBCGohASACQQFqIQIMBgsgCiEBIAUhAwwFCyAKIQEgBSEDDAQLIAohASAFIQMMAwsgCiEBIAUhAwwCCyAKIQEgBSEDDAELIAohASAFIQMLAkACQCAGQRdNBEAgA0UNASADQQFrIQUgA0EHcSIEBEADQCABIAItAAA6AAAgA0EBayEDIAFBAWohASACQQFqIQIgBEEBayIEDQALCyAFQQdJDQEDQCABIAItAAA6AAAgASACLQABOgABIAEgAi0AAjoAAiABIAItAAM6AAMgASACLQAEOgAEIAEgAi0ABToABSABIAItAAY6AAYgASACLQAHOgAHIAFBCGohASACQQhqIQIgA0EIayIDDQALDAELIAMNAQsgASECDAELIAEgBCADED8hAgsgCyEFDAELIAEgAy0AAjoAACABQQFqIQILIAUgFE8NACACIBNJDQELCyAAIAI2AgwgACAFIAhBA3ZrIgE2AgAgACATIAJrQYMCajYCECAAIBQgAWtBDmo2AgQgByAIQQdxIgA2AogBIAcgHUJ/IACthkJ/hYM+AoQBC+cFAQR/IAMgAiACIANLGyEEIAAgAWshAgJAIABBB3FFDQAgBEUNACAAIAItAAA6AAAgA0EBayEGIAJBAWohAiAAQQFqIgdBB3FBACAEQQFrIgUbRQRAIAchACAFIQQgBiEDDAELIAAgAi0AADoAASADQQJrIQYgBEECayEFIAJBAWohAgJAIABBAmoiB0EHcUUNACAFRQ0AIAAgAi0AADoAAiADQQNrIQYgBEEDayEFIAJBAWohAgJAIABBA2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAAyADQQRrIQYgBEEEayEFIAJBAWohAgJAIABBBGoiB0EHcUUNACAFRQ0AIAAgAi0AADoABCADQQVrIQYgBEEFayEFIAJBAWohAgJAIABBBWoiB0EHcUUNACAFRQ0AIAAgAi0AADoABSADQQZrIQYgBEEGayEFIAJBAWohAgJAIABBBmoiB0EHcUUNACAFRQ0AIAAgAi0AADoABiADQQdrIQYgBEEHayEFIAJBAWohAgJAIABBB2oiB0EHcUUNACAFRQ0AIAAgAi0AADoAByADQQhrIQMgBEEIayEEIABBCGohACACQQFqIQIMBgsgByEAIAUhBCAGIQMMBQsgByEAIAUhBCAGIQMMBAsgByEAIAUhBCAGIQMMAwsgByEAIAUhBCAGIQMMAgsgByEAIAUhBCAGIQMMAQsgByEAIAUhBCAGIQMLAkAgA0EXTQRAIARFDQEgBEEBayEBIARBB3EiAwRAA0AgACACLQAAOgAAIARBAWshBCAAQQFqIQAgAkEBaiECIANBAWsiAw0ACwsgAUEHSQ0BA0AgACACLQAAOgAAIAAgAi0AAToAASAAIAItAAI6AAIgACACLQADOgADIAAgAi0ABDoABCAAIAItAAU6AAUgACACLQAGOgAGIAAgAi0ABzoAByAAQQhqIQAgAkEIaiECIARBCGsiBA0ACwwBCyAERQ0AIAAgASAEED8hAAsgAAvyCAEXfyAAKAJoIgwgACgCMEGGAmsiBWtBACAFIAxJGyENIAAoAnQhAiAAKAKQASEPIAAoAkgiDiAMaiIJIAAoAnAiBUECIAUbIgVBAWsiBmoiAy0AASESIAMtAAAhEyAGIA5qIQZBAyEDIAAoApQBIRYgACgCPCEUIAAoAkwhECAAKAI4IRECQAJ/IAVBA0kEQCANIQggDgwBCyAAIABBACAJLQABIAAoAnwRAAAgCS0AAiAAKAJ8EQAAIQoDQCAAIAogAyAJai0AACAAKAJ8EQAAIQogACgCUCAKQQF0ai8BACIIIAEgCCABQf//A3FJIggbIQEgA0ECayAHIAgbIQcgA0EBaiIDIAVNDQALIAFB//8DcSAHIA1qIghB//8DcU0NASAGIAdB//8DcSIDayEGIA4gA2sLIQMCQAJAIAwgAUH//wNxTQ0AIAIgAkECdiAFIA9JGyEKIA1B//8DcSEVIAlBAmohDyAJQQRrIRcDQAJAAkAgBiABQf//A3EiC2otAAAgE0cNACAGIAtBAWoiAWotAAAgEkcNACADIAtqIgItAAAgCS0AAEcNACABIANqLQAAIAktAAFGDQELIApBAWsiCkUNAiAQIAsgEXFBAXRqLwEAIgEgCEH//wNxSw0BDAILIAJBAmohAUEAIQQgDyECAkADQCACLQAAIAEtAABHDQEgAi0AASABLQABRwRAIARBAXIhBAwCCyACLQACIAEtAAJHBEAgBEECciEEDAILIAItAAMgAS0AA0cEQCAEQQNyIQQMAgsgAi0ABCABLQAERwRAIARBBHIhBAwCCyACLQAFIAEtAAVHBEAgBEEFciEEDAILIAItAAYgAS0ABkcEQCAEQQZyIQQMAgsgAi0AByABLQAHRwRAIARBB3IhBAwCCyABQQhqIQEgAkEIaiECIARB+AFJIRggBEEIaiEEIBgNAAtBgAIhBAsCQAJAIAUgBEECaiICSQRAIAAgCyAHQf//A3FrIgY2AmwgAiAUSwRAIBQPCyACIBZPBEAgAg8LIAkgBEEBaiIFaiIBLQABIRIgAS0AACETAkAgAkEESQ0AIAIgBmogDE8NACAGQf//A3EhCCAEQQFrIQtBACEDQQAhBwNAIBAgAyAIaiARcUEBdGovAQAiASAGQf//A3FJBEAgAyAVaiABTw0IIAMhByABIQYLIANBAWoiAyALTQ0ACyAAIAAgAEEAIAIgF2oiAS0AACAAKAJ8EQAAIAEtAAEgACgCfBEAACABLQACIAAoAnwRAAAhASAAKAJQIAFBAXRqLwEAIgEgBkH//wNxTwRAIAdB//8DcSEDIAYhAQwDCyAEQQJrIgdB//8DcSIDIBVqIAFPDQYMAgsgAyAFaiEGIAIhBQsgCkEBayIKRQ0DIBAgCyARcUEBdGovAQAiASAIQf//A3FNDQMMAQsgByANaiEIIA4gA2siAyAFaiEGIAIhBQsgDCABQf//A3FLDQALCyAFDwsgAiEFCyAFIAAoAjwiACAAIAVLGwuGBQETfyAAKAJ0IgMgA0ECdiAAKAJwIgNBAiADGyIDIAAoApABSRshByAAKAJoIgogACgCMEGGAmsiBWtB//8DcUEAIAUgCkkbIQwgACgCSCIIIApqIgkgA0EBayICaiIFLQABIQ0gBS0AACEOIAlBAmohBSACIAhqIQsgACgClAEhEiAAKAI8IQ8gACgCTCEQIAAoAjghESAAKAKIAUEFSCETA0ACQCAKIAFB//8DcU0NAANAAkACQCALIAFB//8DcSIGai0AACAORw0AIAsgBkEBaiIBai0AACANRw0AIAYgCGoiAi0AACAJLQAARw0AIAEgCGotAAAgCS0AAUYNAQsgB0EBayIHRQ0CIAwgECAGIBFxQQF0ai8BACIBSQ0BDAILCyACQQJqIQRBACECIAUhAQJAA0AgAS0AACAELQAARw0BIAEtAAEgBC0AAUcEQCACQQFyIQIMAgsgAS0AAiAELQACRwRAIAJBAnIhAgwCCyABLQADIAQtAANHBEAgAkEDciECDAILIAEtAAQgBC0ABEcEQCACQQRyIQIMAgsgAS0ABSAELQAFRwRAIAJBBXIhAgwCCyABLQAGIAQtAAZHBEAgAkEGciECDAILIAEtAAcgBC0AB0cEQCACQQdyIQIMAgsgBEEIaiEEIAFBCGohASACQfgBSSEUIAJBCGohAiAUDQALQYACIQILAkAgAyACQQJqIgFJBEAgACAGNgJsIAEgD0sEQCAPDwsgASASTwRAIAEPCyAIIAJBAWoiA2ohCyADIAlqIgMtAAEhDSADLQAAIQ4gASEDDAELIBMNAQsgB0EBayIHRQ0AIAwgECAGIBFxQQF0ai8BACIBSQ0BCwsgAwvLAQECfwJAA0AgAC0AACABLQAARw0BIAAtAAEgAS0AAUcEQCACQQFyDwsgAC0AAiABLQACRwRAIAJBAnIPCyAALQADIAEtAANHBEAgAkEDcg8LIAAtAAQgAS0ABEcEQCACQQRyDwsgAC0ABSABLQAFRwRAIAJBBXIPCyAALQAGIAEtAAZHBEAgAkEGcg8LIAAtAAcgAS0AB0cEQCACQQdyDwsgAUEIaiEBIABBCGohACACQfgBSSEDIAJBCGohAiADDQALQYACIQILIAIL5wwBB38gAEF/cyEAIAJBF08EQAJAIAFBA3FFDQAgAS0AACAAQf8BcXNBAnRB0BhqKAIAIABBCHZzIQAgAkEBayIEQQAgAUEBaiIDQQNxG0UEQCAEIQIgAyEBDAELIAEtAAEgAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBAmohAwJAIAJBAmsiBEUNACADQQNxRQ0AIAEtAAIgAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBA2ohAwJAIAJBA2siBEUNACADQQNxRQ0AIAEtAAMgAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBBGohASACQQRrIQIMAgsgBCECIAMhAQwBCyAEIQIgAyEBCyACQRRuIgNBbGwhCQJAIANBAWsiCEUEQEEAIQQMAQsgA0EUbCABakEUayEDQQAhBANAIAEoAhAgB3MiB0EWdkH8B3FB0DhqKAIAIAdBDnZB/AdxQdAwaigCACAHQQZ2QfwHcUHQKGooAgAgB0H/AXFBAnRB0CBqKAIAc3NzIQcgASgCDCAGcyIGQRZ2QfwHcUHQOGooAgAgBkEOdkH8B3FB0DBqKAIAIAZBBnZB/AdxQdAoaigCACAGQf8BcUECdEHQIGooAgBzc3MhBiABKAIIIAVzIgVBFnZB/AdxQdA4aigCACAFQQ52QfwHcUHQMGooAgAgBUEGdkH8B3FB0ChqKAIAIAVB/wFxQQJ0QdAgaigCAHNzcyEFIAEoAgQgBHMiBEEWdkH8B3FB0DhqKAIAIARBDnZB/AdxQdAwaigCACAEQQZ2QfwHcUHQKGooAgAgBEH/AXFBAnRB0CBqKAIAc3NzIQQgASgCACAAcyIAQRZ2QfwHcUHQOGooAgAgAEEOdkH8B3FB0DBqKAIAIABBBnZB/AdxQdAoaigCACAAQf8BcUECdEHQIGooAgBzc3MhACABQRRqIQEgCEEBayIIDQALIAMhAQsgAiAJaiECIAEoAhAgASgCDCABKAIIIAEoAgQgASgCACAAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQf8BcUECdEHQGGooAgAgBHNzIABBCHZzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBB/wFxQQJ0QdAYaigCACAFc3MgAEEIdnMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEH/AXFBAnRB0BhqKAIAIAZzcyAAQQh2cyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQf8BcUECdEHQGGooAgAgB3NzIABBCHZzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyIAQQh2IABB/wFxQQJ0QdAYaigCAHMiAEEIdiAAQf8BcUECdEHQGGooAgBzIgBBCHYgAEH/AXFBAnRB0BhqKAIAcyEAIAFBFGohAQsgAkEHSwRAA0AgAS0AByABLQAGIAEtAAUgAS0ABCABLQADIAEtAAIgAS0AASABLQAAIABB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyIAQf8BcXNBAnRB0BhqKAIAIABBCHZzIgBB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyIAQf8BcXNBAnRB0BhqKAIAIABBCHZzIgBB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBCGohASACQQhrIgJBB0sNAAsLAkAgAkUNACACQQFxBH8gAS0AACAAQf8BcXNBAnRB0BhqKAIAIABBCHZzIQAgAUEBaiEBIAJBAWsFIAILIQMgAkEBRg0AA0AgAS0AASABLQAAIABB/wFxc0ECdEHQGGooAgAgAEEIdnMiAEH/AXFzQQJ0QdAYaigCACAAQQh2cyEAIAFBAmohASADQQJrIgMNAAsLIABBf3MLwgIBA38jAEEQayIIJAACfwJAIAAEQCAEDQEgBVANAQsgBgRAIAZBADYCBCAGQRI2AgALQQAMAQtBgAEQCSIHRQRAIAYEQCAGQQA2AgQgBkEONgIAC0EADAELIAcgATcDCCAHQgA3AwAgB0EoaiIJECogByAFNwMYIAcgBDYCECAHIAM6AGAgB0EANgJsIAdCADcCZCAAKQMYIQEgCEF/NgIIIAhCjoCAgPAANwMAIAdBECAIECQgAUL/gQGDhCIBNwNwIAcgAadBBnZBAXE6AHgCQCACRQ0AIAkgAhBgQX9KDQAgBxAGQQAMAQsgBhBfIgIEQCAAIAAoAjBBAWo2AjAgAiAHNgIIIAJBATYCBCACIAA2AgAgAkI/IAAgB0EAQgBBDkEBEQoAIgEgAUIAUxs3AxgLIAILIQAgCEEQaiQAIAALYgEBf0E4EAkiAUUEQCAABEAgAEEANgIEIABBDjYCAAtBAA8LIAFBADYCCCABQgA3AwAgAUIANwMgIAFCgICAgBA3AiwgAUEAOgAoIAFBADYCFCABQgA3AgwgAUEAOwE0IAELuwEBAX4gASkDACICQgKDUEUEQCAAIAEpAxA3AxALIAJCBINQRQRAIAAgASkDGDcDGAsgAkIIg1BFBEAgACABKQMgNwMgCyACQhCDUEUEQCAAIAEoAig2AigLIAJCIINQRQRAIAAgASgCLDYCLAsgAkLAAINQRQRAIAAgAS8BMDsBMAsgAkKAAYNQRQRAIAAgAS8BMjsBMgsgAkKAAoNQRQRAIAAgASgCNDYCNAsgACAAKQMAIAKENwMAQQALGQAgAUUEQEEADwsgACABKAIAIAEzAQQQGws3AQJ/IABBACABG0UEQCAAIAFGDwsgAC8BBCIDIAEvAQRGBH8gACgCACABKAIAIAMQPQVBAQtFCyIBAX8gAUUEQEEADwsgARAJIgJFBEBBAA8LIAIgACABEAcLKQAgACABIAIgAyAEEEUiAEUEQEEADwsgACACQQAgBBA1IQEgABAGIAELcQEBfgJ/AkAgAkJ/VwRAIAMEQCADQQA2AgQgA0EUNgIACwwBCyAAIAEgAhARIgRCf1cEQCADBEAgAyAAKAIMNgIAIAMgACgCEDYCBAsMAQtBACACIARXDQEaIAMEQCADQQA2AgQgA0ERNgIACwtBfwsLNQAgACABIAJBABAmIgBFBEBBfw8LIAMEQCADIAAtAAk6AAALIAQEQCAEIAAoAkQ2AgALQQAL/AECAn8BfiMAQRBrIgMkAAJAIAAgA0EOaiABQYAGQQAQRiIARQRAIAIhAAwBCyADLwEOIgFBBUkEQCACIQAMAQsgAC0AAEEBRwRAIAIhAAwBCyAAIAGtQv//A4MQFyIBRQRAIAIhAAwBCyABEH0aAkAgARAVIAIEfwJ/IAIvAQQhAEEAIAIoAgAiBEUNABpBACAEIABB1IABKAIAEQAACwVBAAtHBEAgAiEADAELIAEgAS0AAAR+IAEpAwggASkDEH0FQgALIgVC//8DgxATIAWnQf//A3FBgBBBABA1IgBFBEAgAiEADAELIAIQEAsgARAICyADQRBqJAAgAAvmDwIIfwJ+IwBB4ABrIgckAEEeQS4gAxshCwJAAkAgAgRAIAIiBSIGLQAABH4gBikDCCAGKQMQfQVCAAsgC61aDQEgBARAIARBADYCBCAEQRM2AgALQn8hDQwCCyABIAutIAcgBBAtIgUNAEJ/IQ0MAQsgBUIEEBMoAABBoxJBqBIgAxsoAABHBEAgBARAIARBADYCBCAEQRM2AgALQn8hDSACDQEgBRAIDAELIABCADcDICAAQQA2AhggAEL/////DzcDECAAQQA7AQwgAEG/hig2AgggAEEBOgAGIABBADsBBCAAQQA2AgAgAEIANwNIIABBgIDYjXg2AkQgAEIANwMoIABCADcDMCAAQgA3AzggAEFAa0EAOwEAIABCADcDUCAAIAMEf0EABSAFEAwLOwEIIAAgBRAMOwEKIAAgBRAMOwEMIAAgBRAMNgIQIAUQDCEGIAUQDCEJIAdBADYCWCAHQgA3A1AgB0IANwNIIAcgCUEfcTYCPCAHIAZBC3Y2AjggByAGQQV2QT9xNgI0IAcgBkEBdEE+cTYCMCAHIAlBCXZB0ABqNgJEIAcgCUEFdkEPcUEBazYCQCAAIAdBMGoQBTYCFCAAIAUQFTYCGCAAIAUQFa03AyAgACAFEBWtNwMoIAUQDCEIIAUQDCEGIAACfiADBEBBACEJIABBADYCRCAAQQA7AUAgAEEANgI8QgAMAQsgBRAMIQkgACAFEAw2AjwgACAFEAw7AUAgACAFEBU2AkQgBRAVrQs3A0ggBS0AAEUEQCAEBEAgBEEANgIEIARBFDYCAAtCfyENIAINASAFEAgMAQsCQCAALwEMIgpBAXEEQCAKQcAAcQRAIABB//8DOwFSDAILIABBATsBUgwBCyAAQQA7AVILIABBADYCOCAAQgA3AzAgBiAIaiAJaiEKAkAgAgRAIAUtAAAEfiAFKQMIIAUpAxB9BUIACyAKrVoNASAEBEAgBEEANgIEIARBFTYCAAtCfyENDAILIAUQCCABIAqtQQAgBBAtIgUNAEJ/IQ0MAQsCQCAIRQ0AIAAgBSABIAhBASAEEGQiCDYCMCAIRQRAIAQoAgBBEUYEQCAEBEAgBEEANgIEIARBFTYCAAsLQn8hDSACDQIgBRAIDAILIAAtAA1BCHFFDQAgCEECECNBBUcNACAEBEAgBEEANgIEIARBFTYCAAtCfyENIAINASAFEAgMAQsgAEE0aiEIAkAgBkUNACAFIAEgBkEAIAQQRSIMRQRAQn8hDSACDQIgBRAIDAILIAwgBkGAAkGABCADGyAIIAQQbiEGIAwQBiAGRQRAQn8hDSACDQIgBRAIDAILIANFDQAgAEEBOgAECwJAIAlFDQAgACAFIAEgCUEAIAQQZCIBNgI4IAFFBEBCfyENIAINAiAFEAgMAgsgAC0ADUEIcUUNACABQQIQI0EFRw0AIAQEQCAEQQA2AgQgBEEVNgIAC0J/IQ0gAg0BIAUQCAwBCyAAIAAoAjRB9eABIAAoAjAQZzYCMCAAIAAoAjRB9cYBIAAoAjgQZzYCOAJAAkAgACkDKEL/////D1ENACAAKQMgQv////8PUQ0AIAApA0hC/////w9SDQELAkACQAJAIAgoAgAgB0EwakEBQYACQYAEIAMbIAQQRiIBRQRAIAJFDQEMAgsgASAHMwEwEBciAUUEQCAEBEAgBEEANgIEIARBDjYCAAsgAkUNAQwCCwJAIAApAyhC/////w9RBEAgACABEB03AygMAQsgA0UNAEEAIQYCQCABKQMQIg5CCHwiDSAOVA0AIAEpAwggDVQNACABIA03AxBBASEGCyABIAY6AAALIAApAyBC/////w9RBEAgACABEB03AyALAkAgAw0AIAApA0hC/////w9RBEAgACABEB03A0gLIAAoAjxB//8DRw0AIAAgARAVNgI8CyABLQAABH8gASkDECABKQMIUQVBAAsNAiAEBEAgBEEANgIEIARBFTYCAAsgARAIIAINAQsgBRAIC0J/IQ0MAgsgARAICyAFLQAARQRAIAQEQCAEQQA2AgQgBEEUNgIAC0J/IQ0gAg0BIAUQCAwBCyACRQRAIAUQCAtCfyENIAApA0hCf1cEQCAEBEAgBEEWNgIEIARBBDYCAAsMAQsjAEEQayIDJABBASEBAkAgACgCEEHjAEcNAEEAIQECQCAAKAI0IANBDmpBgbICQYAGQQAQRiICBEAgAy8BDiIFQQZLDQELIAQEQCAEQQA2AgQgBEEVNgIACwwBCyACIAWtQv//A4MQFyICRQRAIAQEQCAEQQA2AgQgBEEUNgIACwwBC0EBIQECQAJAAkAgAhAMQQFrDgICAQALQQAhASAEBEAgBEEANgIEIARBGDYCAAsgAhAIDAILIAApAyhCE1YhAQsgAkICEBMvAABBwYoBRwRAQQAhASAEBEAgBEEANgIEIARBGDYCAAsgAhAIDAELIAIQfUEBayIFQf8BcUEDTwRAQQAhASAEBEAgBEEANgIEIARBGDYCAAsgAhAIDAELIAMvAQ5BB0cEQEEAIQEgBARAIARBADYCBCAEQRU2AgALIAIQCAwBCyAAIAE6AAYgACAFQf8BcUGBAmo7AVIgACACEAw2AhAgAhAIQQEhAQsgA0EQaiQAIAFFDQAgCCAIKAIAEG02AgAgCiALaq0hDQsgB0HgAGokACANC4ECAQR/IwBBEGsiBCQAAkAgASAEQQxqQcAAQQAQJSIGRQ0AIAQoAgxBBWoiA0GAgARPBEAgAgRAIAJBADYCBCACQRI2AgALDAELQQAgA60QFyIDRQRAIAIEQCACQQA2AgQgAkEONgIACwwBCyADQQEQcCADIAEEfwJ/IAEvAQQhBUEAIAEoAgAiAUUNABpBACABIAVB1IABKAIAEQAACwVBAAsQEiADIAYgBCgCDBAsAn8gAy0AAEUEQCACBEAgAkEANgIEIAJBFDYCAAtBAAwBCyAAIAMtAAAEfiADKQMQBUIAC6dB//8DcSADKAIEEEcLIQUgAxAICyAEQRBqJAAgBQvgAQICfwF+QTAQCSICRQRAIAEEQCABQQA2AgQgAUEONgIAC0EADwsgAkIANwMIIAJBADYCACACQgA3AxAgAkIANwMYIAJCADcDICACQgA3ACUgAFAEQCACDwsCQCAAQv////8AVg0AIACnQQR0EAkiA0UNACACIAM2AgBBACEBQgEhBANAIAMgAUEEdGoiAUIANwIAIAFCADcABSAAIARSBEAgBKchASAEQgF8IQQMAQsLIAIgADcDCCACIAA3AxAgAg8LIAEEQCABQQA2AgQgAUEONgIAC0EAEBAgAhAGQQAL7gECA38BfiMAQRBrIgQkAAJAIARBDGpCBBAXIgNFBEBBfyECDAELAkAgAQRAIAJBgAZxIQUDQAJAIAUgASgCBHFFDQACQCADKQMIQgBUBEAgA0EAOgAADAELIANCADcDECADQQE6AAALIAMgAS8BCBANIAMgAS8BChANIAMtAABFBEAgAEEIaiIABEAgAEEANgIEIABBFDYCAAtBfyECDAQLQX8hAiAAIARBDGpCBBAbQQBIDQMgATMBCiIGUA0AIAAgASgCDCAGEBtBAEgNAwsgASgCACIBDQALC0EAIQILIAMQCAsgBEEQaiQAIAILPAEBfyAABEAgAUGABnEhAQNAIAEgACgCBHEEQCACIAAvAQpqQQRqIQILIAAoAgAiAA0ACwsgAkH//wNxC5wBAQN/IABFBEBBAA8LIAAhAwNAAn8CQAJAIAAvAQgiAUH04AFNBEAgAUEBRg0BIAFB9cYBRg0BDAILIAFBgbICRg0AIAFB9eABRw0BCyAAKAIAIQEgAEEANgIAIAAoAgwQBiAAEAYgASADIAAgA0YbIQMCQCACRQRAQQAhAgwBCyACIAE2AgALIAEMAQsgACICKAIACyIADQALIAMLsgQCBX8BfgJAAkACQCAAIAGtEBciAQRAIAEtAAANAUEAIQAMAgsgBARAIARBADYCBCAEQQ42AgALQQAPC0EAIQADQCABLQAABH4gASkDCCABKQMQfQVCAAtCBFQNASABEAwhByABIAEQDCIGrRATIghFBEBBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAwNAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwDCwJAAkBBEBAJIgUEQCAFIAY7AQogBSAHOwEIIAUgAjYCBCAFQQA2AgAgBkUNASAFIAggBhBjIgY2AgwgBg0CIAUQBgtBACECIAQEQCAEQQA2AgQgBEEONgIACyABEAggAEUNBANAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwECyAFQQA2AgwLAkAgAEUEQCAFIQAMAQsgCSAFNgIACyAFIQkgAS0AAA0ACwsCQCABLQAABH8gASkDECABKQMIUQVBAAsNACABIAEtAAAEfiABKQMIIAEpAxB9BUIACyIKQv////8PgxATIQICQCAKpyIFQQNLDQAgAkUNACACQcEUIAUQPUUNAQtBACECIAQEQCAEQQA2AgQgBEEVNgIACyABEAggAEUNAQNAIAAoAgAhASAAKAIMEAYgABAGIAEiAA0ACwwBCyABEAggAwRAIAMgADYCAEEBDwtBASECIABFDQADQCAAKAIAIQEgACgCDBAGIAAQBiABIgANAAsLIAILvgEBBX8gAAR/IAAhAgNAIAIiBCgCACICDQALIAEEQANAIAEiAy8BCCEGIAMoAgAhASAAIQICQAJAA0ACQCACLwEIIAZHDQAgAi8BCiIFIAMvAQpHDQAgBUUNAiACKAIMIAMoAgwgBRA9RQ0CCyACKAIAIgINAAsgA0EANgIAIAQgAzYCACADIQQMAQsgAiACKAIEIAMoAgRBgAZxcjYCBCADQQA2AgAgAygCDBAGIAMQBgsgAQ0ACwsgAAUgAQsLVQICfgF/AkACQCAALQAARQ0AIAApAxAiAkIBfCIDIAJUDQAgAyAAKQMIWA0BCyAAQQA6AAAPCyAAKAIEIgRFBEAPCyAAIAM3AxAgBCACp2ogAToAAAt9AQN/IwBBEGsiAiQAIAIgATYCDEF/IQMCQCAALQAoDQACQCAAKAIAIgRFDQAgBCABEHFBf0oNACAAKAIAIQEgAEEMaiIABEAgACABKAIMNgIAIAAgASgCEDYCBAsMAQsgACACQQxqQgRBExAOQj+HpyEDCyACQRBqJAAgAwvdAQEDfyABIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8PCyAAQQhqIQIgAC0AGEECcQRAIAIEQCACQQA2AgQgAkEZNgIAC0F/DwtBfyEDAkAgACABQQAgAhBTIgRFDQAgACgCUCAEIAIQfkUNAAJ/IAEgACkDMFoEQCAAQQhqBEAgAEEANgIMIABBEjYCCAtBfwwBCyABp0EEdCICIAAoAkBqKAIEECAgACgCQCACaiICQQA2AgQgAhBAQQALDQAgACgCQCABp0EEdGpBAToADEEAIQMLIAMLpgIBBX9BfyEFAkAgACABQQBBABAmRQ0AIAAtABhBAnEEQCAAQQhqIgAEQCAAQQA2AgQgAEEZNgIAC0F/DwsCfyAAKAJAIgQgAaciBkEEdGooAgAiBUUEQCADQYCA2I14RyEHQQMMAQsgBSgCRCADRyEHIAUtAAkLIQggBCAGQQR0aiIEIQYgBCgCBCEEQQAgAiAIRiAHG0UEQAJAIAQNACAGIAUQKyIENgIEIAQNACAAQQhqIgAEQCAAQQA2AgQgAEEONgIAC0F/DwsgBCADNgJEIAQgAjoACSAEIAQoAgBBEHI2AgBBAA8LQQAhBSAERQ0AIAQgBCgCAEFvcSIANgIAIABFBEAgBBAgIAZBADYCBEEADwsgBCADNgJEIAQgCDoACQsgBQvjCAIFfwR+IAAtABhBAnEEQCAAQQhqBEAgAEEANgIMIABBGTYCCAtCfw8LIAApAzAhCwJAIANBgMAAcQRAIAAgASADQQAQTCIJQn9SDQELAn4CQAJAIAApAzAiCUIBfCIMIAApAzgiClQEQCAAKAJAIQQMAQsgCkIBhiIJQoAIIAlCgAhUGyIJQhAgCUIQVhsgCnwiCadBBHQiBK0gCkIEhkLw////D4NUDQEgACgCQCAEEDQiBEUNASAAIAk3AzggACAENgJAIAApAzAiCUIBfCEMCyAAIAw3AzAgBCAJp0EEdGoiBEIANwIAIARCADcABSAJDAELIABBCGoEQCAAQQA2AgwgAEEONgIIC0J/CyIJQgBZDQBCfw8LAkAgAUUNAAJ/QQAhBCAJIAApAzBaBEAgAEEIagRAIABBADYCDCAAQRI2AggLQX8MAQsgAC0AGEECcQRAIABBCGoEQCAAQQA2AgwgAEEZNgIIC0F/DAELAkAgAUUNACABLQAARQ0AQX8gASABECJB//8DcSADIABBCGoQNSIERQ0BGiADQYAwcQ0AIARBABAjQQNHDQAgBEECNgIICwJAIAAgAUEAQQAQTCIKQgBTIgENACAJIApRDQAgBBAQIABBCGoEQCAAQQA2AgwgAEEKNgIIC0F/DAELAkAgAUEBIAkgClEbRQ0AAkACfwJAIAAoAkAiASAJpyIFQQR0aiIGKAIAIgMEQCADKAIwIAQQYg0BCyAEIAYoAgQNARogBiAGKAIAECsiAzYCBCAEIAMNARogAEEIagRAIABBADYCDCAAQQ42AggLDAILQQEhByAGKAIAKAIwC0EAQQAgAEEIaiIDECUiCEUNAAJAAkAgASAFQQR0aiIFKAIEIgENACAGKAIAIgENAEEAIQEMAQsgASgCMCIBRQRAQQAhAQwBCyABQQBBACADECUiAUUNAQsgACgCUCAIIAlBACADEE1FDQAgAQRAIAAoAlAgAUEAEH4aCyAFKAIEIQMgBwRAIANFDQIgAy0AAEECcUUNAiADKAIwEBAgBSgCBCIBIAEoAgBBfXEiAzYCACADRQRAIAEQICAFQQA2AgQgBBAQQQAMBAsgASAGKAIAKAIwNgIwIAQQEEEADAMLIAMoAgAiAUECcQRAIAMoAjAQECAFKAIEIgMoAgAhAQsgAyAENgIwIAMgAUECcjYCAEEADAILIAQQEEF/DAELIAQQEEEAC0UNACALIAApAzBRBEBCfw8LIAAoAkAgCadBBHRqED4gACALNwMwQn8PCyAJpyIGQQR0IgEgACgCQGoQQAJAAkAgACgCQCIEIAFqIgMoAgAiBUUNAAJAIAMoAgQiAwRAIAMoAgAiAEEBcUUNAQwCCyAFECshAyAAKAJAIgQgBkEEdGogAzYCBCADRQ0CIAMoAgAhAAsgA0F+NgIQIAMgAEEBcjYCAAsgASAEaiACNgIIIAkPCyAAQQhqBEAgAEEANgIMIABBDjYCCAtCfwteAQF/IwBBEGsiAiQAAn8gACgCJEEBRwRAIABBDGoiAARAIABBADYCBCAAQRI2AgALQX8MAQsgAkEANgIIIAIgATcDACAAIAJCEEEMEA5CP4enCyEAIAJBEGokACAAC9oDAQZ/IwBBEGsiBSQAIAUgAjYCDCMAQaABayIEJAAgBEEIakHA8ABBkAEQBxogBCAANgI0IAQgADYCHCAEQX4gAGsiA0H/////ByADQf////8HSRsiBjYCOCAEIAAgBmoiADYCJCAEIAA2AhggBEEIaiEAIwBB0AFrIgMkACADIAI2AswBIANBoAFqQQBBKBAZIAMgAygCzAE2AsgBAkBBACABIANByAFqIANB0ABqIANBoAFqEEpBAEgNACAAKAJMQQBOIQcgACgCACECIAAsAEpBAEwEQCAAIAJBX3E2AgALIAJBIHEhCAJ/IAAoAjAEQCAAIAEgA0HIAWogA0HQAGogA0GgAWoQSgwBCyAAQdAANgIwIAAgA0HQAGo2AhAgACADNgIcIAAgAzYCFCAAKAIsIQIgACADNgIsIAAgASADQcgBaiADQdAAaiADQaABahBKIAJFDQAaIABBAEEAIAAoAiQRAAAaIABBADYCMCAAIAI2AiwgAEEANgIcIABBADYCECAAKAIUGiAAQQA2AhRBAAsaIAAgACgCACAIcjYCACAHRQ0ACyADQdABaiQAIAYEQCAEKAIcIgAgACAEKAIYRmtBADoAAAsgBEGgAWokACAFQRBqJAALUwEDfwJAIAAoAgAsAABBMGtBCk8NAANAIAAoAgAiAiwAACEDIAAgAkEBajYCACABIANqQTBrIQEgAiwAAUEwa0EKTw0BIAFBCmwhAQwACwALIAELuwIAAkAgAUEUSw0AAkACQAJAAkACQAJAAkACQAJAAkAgAUEJaw4KAAECAwQFBgcICQoLIAIgAigCACIBQQRqNgIAIAAgASgCADYCAA8LIAIgAigCACIBQQRqNgIAIAAgATQCADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATUCADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASkDADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LIAIgAigCAEEHakF4cSIBQQhqNgIAIAAgASsDADkDAA8LIAAgAkEAEQcACwubAgAgAEUEQEEADwsCfwJAIAAEfyABQf8ATQ0BAkBB9IIBKAIAKAIARQRAIAFBgH9xQYC/A0YNAwwBCyABQf8PTQRAIAAgAUE/cUGAAXI6AAEgACABQQZ2QcABcjoAAEECDAQLIAFBgLADT0EAIAFBgEBxQYDAA0cbRQRAIAAgAUE/cUGAAXI6AAIgACABQQx2QeABcjoAACAAIAFBBnZBP3FBgAFyOgABQQMMBAsgAUGAgARrQf//P00EQCAAIAFBP3FBgAFyOgADIAAgAUESdkHwAXI6AAAgACABQQZ2QT9xQYABcjoAAiAAIAFBDHZBP3FBgAFyOgABQQQMBAsLQYSEAUEZNgIAQX8FQQELDAELIAAgAToAAEEBCwvjAQECfyACQQBHIQMCQAJAAkAgAEEDcUUNACACRQ0AIAFB/wFxIQQDQCAALQAAIARGDQIgAkEBayICQQBHIQMgAEEBaiIAQQNxRQ0BIAINAAsLIANFDQELAkAgAC0AACABQf8BcUYNACACQQRJDQAgAUH/AXFBgYKECGwhAwNAIAAoAgAgA3MiBEF/cyAEQYGChAhrcUGAgYKEeHENASAAQQRqIQAgAkEEayICQQNLDQALCyACRQ0AIAFB/wFxIQEDQCABIAAtAABGBEAgAA8LIABBAWohACACQQFrIgINAAsLQQALeQEBfAJAIABFDQAgACsDECAAKwMgIgIgAUQAAAAAAAAAACABRAAAAAAAAAAAZBsiAUQAAAAAAADwPyABRAAAAAAAAPA/YxsgACsDKCACoaKgIgEgACsDGKFjRQ0AIAAoAgAgASAAKAIMIAAoAgQRDgAgACABOQMYCwtIAQF8AkAgAEUNACAAKwMQIAArAyAiASAAKwMoIAGhoCIBIAArAxihY0UNACAAKAIAIAEgACgCDCAAKAIEEQ4AIAAgATkDGAsLWgICfgF/An8CQAJAIAAtAABFDQAgACkDECIBQgF8IgIgAVQNACACIAApAwhYDQELIABBADoAAEEADAELQQAgACgCBCIDRQ0AGiAAIAI3AxAgAyABp2otAAALC4IEAgZ/AX4gAEEAIAEbRQRAIAIEQCACQQA2AgQgAkESNgIAC0EADwsCQAJAIAApAwhQDQAgACgCECABLQAAIgQEf0Kl6wohCSABIQMDQCAJIAStQv8Bg3whCSADLQABIgQEQCADQQFqIQMgCUL/////D4NCIX4hCQwBCwsgCacFQYUqCyIEIAAoAgBwQQJ0aiIGKAIAIgNFDQADQAJAIAMoAhwgBEcNACABIAMoAgAQOA0AAkAgAykDCEJ/UQRAIAMoAhghAQJAIAUEQCAFIAE2AhgMAQsgBiABNgIACyADEAYgACAAKQMIQgF9Igk3AwggCbogACgCACIBuER7FK5H4XqEP6JjRQ0BIAFBgQJJDQECf0EAIQMgACgCACIGIAFBAXYiBUcEQCAFEDwiB0UEQCACBEAgAkEANgIEIAJBDjYCAAtBAAwCCwJAIAApAwhCACAGG1AEQCAAKAIQIQQMAQsgACgCECEEA0AgBCADQQJ0aigCACIBBEADQCABKAIYIQIgASAHIAEoAhwgBXBBAnRqIggoAgA2AhggCCABNgIAIAIiAQ0ACwsgA0EBaiIDIAZHDQALCyAEEAYgACAFNgIAIAAgBzYCEAtBAQsNAQwFCyADQn83AxALQQEPCyADIgUoAhgiAw0ACwsgAgRAIAJBADYCBCACQQk2AgALC0EAC6UGAgl/AX4jAEHwAGsiBSQAAkACQCAARQ0AAkAgAQRAIAEpAzAgAlYNAQtBACEDIABBCGoEQCAAQQA2AgwgAEESNgIICwwCCwJAIANBCHENACABKAJAIAKnQQR0aiIGKAIIRQRAIAYtAAxFDQELQQAhAyAAQQhqBEAgAEEANgIMIABBDzYCCAsMAgsgASACIANBCHIgBUE4ahCKAUF/TARAQQAhAyAAQQhqBEAgAEEANgIMIABBFDYCCAsMAgsgA0EDdkEEcSADciIGQQRxIQcgBSkDUCEOIAUvAWghCQJAIANBIHFFIAUvAWpBAEdxIgtFDQAgBA0AIAAoAhwiBA0AQQAhAyAAQQhqBEAgAEEANgIMIABBGjYCCAsMAgsgBSkDWFAEQCAAQQBCAEEAEFIhAwwCCwJAIAdFIgwgCUEAR3EiDUEBckUEQEEAIQMgBUEAOwEwIAUgDjcDICAFIA43AxggBSAFKAJgNgIoIAVC3AA3AwAgASgCACAOIAVBACABIAIgAEEIahBeIgYNAQwDC0EAIQMgASACIAYgAEEIaiIGECYiB0UNAiABKAIAIAUpA1ggBUE4aiAHLwEMQQF2QQNxIAEgAiAGEF4iBkUNAgsCfyAGIAE2AiwCQCABKAJEIghBAWoiCiABKAJIIgdJBEAgASgCTCEHDAELIAEoAkwgB0EKaiIIQQJ0EDQiB0UEQCABQQhqBEAgAUEANgIMIAFBDjYCCAtBfwwCCyABIAc2AkwgASAINgJIIAEoAkQiCEEBaiEKCyABIAo2AkQgByAIQQJ0aiAGNgIAQQALQX9MBEAgBhALDAELAkAgC0UEQCAGIQEMAQtBJkEAIAUvAWpBAUYbIgFFBEAgAEEIagRAIABBADYCDCAAQRg2AggLDAMLIAAgBiAFLwFqQQAgBCABEQYAIQEgBhALIAFFDQILAkAgDUUEQCABIQMMAQsgACABIAUvAWgQgQEhAyABEAsgA0UNAQsCQCAJRSAMckUEQCADIQEMAQsgACADQQEQgAEhASADEAsgAUUNAQsgASEDDAELQQAhAwsgBUHwAGokACADC4UBAQF/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/IAMoAkggAWoFQQALIAMoAmggAWtBARAPIAMgAygCaDYCWCADKAIAEApBA0ECIAMoAgAoAhAbDAILIAMoAvAtBEBBACEEIAMgAygCWCIBQQBOBH8gAygCSCABagVBAAsgAygCaCABa0EAEA8gAyADKAJoNgJYIAMoAgAQCiADKAIAKAIQRQ0BC0EBIQQLIAQLDAILAn8CQANAAkACQAJAAkACQCADKAI8Ig1BggJLDQAgAxAvAkAgAygCPCINQYICSw0AIAoNAEEADAgLIA1FDQQgDUECSw0AIAMoAmghCAwBCyADKAJoIghFBEBBACEIDAELIAMoAkggCGoiAUEBayIELQAAIgYgAS0AAEcNACAGIAQtAAJHDQAgBEEDaiEEQQAhCQJAA0AgBiAELQAARw0BIAQtAAEgBkcEQCAJQQFyIQkMAgsgBC0AAiAGRwRAIAlBAnIhCQwCCyAELQADIAZHBEAgCUEDciEJDAILIAQtAAQgBkcEQCAJQQRyIQkMAgsgBC0ABSAGRwRAIAlBBXIhCQwCCyAELQAGIAZHBEAgCUEGciEJDAILIAQtAAcgBkcEQCAJQQdyIQkMAgsgBEEIaiEEIAlB+AFJIQEgCUEIaiEJIAENAAtBgAIhCQtBggIhBCANIAlBAmoiASABIA1LGyIBQYECSw0BIAEiBEECSw0BCyADKAJIIAhqLQAAIQQgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtakEAOgAAIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qIAQ6AAAgAyAEQQJ0aiIBIAEvAeQBQQFqOwHkASADIAMoAjxBAWs2AjwgAyADKAJoQQFqIgQ2AmgMAQsgAyADKALwLSIBQQFqNgLwLSABIAMoAuwtakEBOgAAIAMgAygC8C0iAUEBajYC8C0gASADKALsLWpBADoAACADIAMoAvAtIgFBAWo2AvAtIAEgAygC7C1qIARBA2s6AAAgAyADKAKALkEBajYCgC4gBEH9zgBqLQAAQQJ0IANqQegJaiIBIAEvAQBBAWo7AQAgA0GAywAtAABBAnRqQdgTaiIBIAEvAQBBAWo7AQAgAyADKAI8IARrNgI8IAMgAygCaCAEaiIENgJoCyADKALwLSADKAL0LUcNAUEAIQggAyADKAJYIgFBAE4EfyADKAJIIAFqBUEACyAEIAFrQQAQDyADIAMoAmg2AlggAygCABAKIAMoAgAoAhANAQwCCwsgA0EANgKELiAKQQRGBEAgAyADKAJYIgFBAE4EfyADKAJIIAFqBUEACyADKAJoIAFrQQEQDyADIAMoAmg2AlggAygCABAKQQNBAiADKAIAKAIQGwwCCyADKALwLQRAQQAhCCADIAMoAlgiAUEATgR/IAMoAkggAWoFQQALIAMoAmggAWtBABAPIAMgAygCaDYCWCADKAIAEAogAygCACgCEEUNAQtBASEICyAICwwBCyADIAogAUEMbEG42ABqKAIAEQIACyIBQX5xQQJGBEAgA0GaBTYCIAsgAUF9cUUEQEEAIQQgBSgCEA0CDAQLIAFBAUcNAAJAAkACQCAKQQFrDgUAAQEBAgELIAMpA5guISICfwJ+IAMoAqAuIgFBA2oiCUE/TQRAQgIgAa2GICKEDAELIAFBwABGBEAgAygCBCADKAIQaiAiNwAAIAMgAygCEEEIajYCEEICISJBCgwCCyADKAIEIAMoAhBqQgIgAa2GICKENwAAIAMgAygCEEEIajYCECABQT1rIQlCAkHAACABa62ICyEiIAlBB2ogCUE5SQ0AGiADKAIEIAMoAhBqICI3AAAgAyADKAIQQQhqNgIQQgAhIiAJQTlrCyEBIAMgIjcDmC4gAyABNgKgLiADEDAMAQsgA0EAQQBBABA5IApBA0cNACADKAJQQQBBgIAIEBkgAygCPA0AIANBADYChC4gA0EANgJYIANBADYCaAsgBRAKIAUoAhANAAwDC0EAIQQgCkEERw0AAkACfwJAAkAgAygCFEEBaw4CAQADCyAFIANBoAFqQeCAASgCABEBACIBNgIwIAMoAgQgAygCEGogATYAACADIAMoAhBBBGoiATYCECADKAIEIAFqIQQgBSgCCAwBCyADKAIEIAMoAhBqIQQgBSgCMCIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4DcSABQRh2cnILIQEgBCABNgAAIAMgAygCEEEEajYCEAsgBRAKIAMoAhQiAUEBTgRAIANBACABazYCFAsgAygCEEUhBAsgBAwCCyAFQezAACgCADYCGEF7DAELIANBfzYCJEEACwwBCyMAQRBrIhQkAEF+IRcCQCABIgxFDQAgDCgCIEUNACAMKAIkRQ0AIAwoAhwiB0UNACAHKAIAIAxHDQAgBygCBCIIQbT+AGtBH0sNACAMKAIMIhBFDQAgDCgCACIBRQRAIAwoAgQNAQsgCEG//gBGBEAgB0HA/gA2AgRBwP4AIQgLIAdBpAFqIR8gB0G8BmohGSAHQbwBaiEcIAdBoAFqIR0gB0G4AWohGiAHQfwKaiEYIAdBQGshHiAHKAKIASEFIAwoAgQiICEGIAcoAoQBIQogDCgCECIPIRYCfwJAAkACQANAAkBBfSEEQQEhCQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAhBtP4Aaw4fBwYICQolJicoBSwtLQsZGgQMAjIzATUANw0OAzlISUwLIAcoApQBIQMgASEEIAYhCAw1CyAHKAKUASEDIAEhBCAGIQgMMgsgBygCtAEhCAwuCyAHKAIMIQgMQQsgBUEOTw0pIAZFDUEgBUEIaiEIIAFBAWohBCAGQQFrIQkgAS0AACAFdCAKaiEKIAVBBkkNDCAEIQEgCSEGIAghBQwpCyAFQSBPDSUgBkUNQCABQQFqIQQgBkEBayEIIAEtAAAgBXQgCmohCiAFQRhJDQ0gBCEBIAghBgwlCyAFQRBPDRUgBkUNPyAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEISQ0NIAQhASAJIQYgCCEFDBULIAcoAgwiC0UNByAFQRBPDSIgBkUNPiAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEISQ0NIAQhASAJIQYgCCEFDCILIAVBH0sNFQwUCyAFQQ9LDRYMFQsgBygCFCIEQYAIcUUEQCAFIQgMFwsgCiEIIAVBD0sNGAwXCyAKIAVBB3F2IQogBUF4cSIFQR9LDQwgBkUNOiAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEYSQ0GIAQhASAJIQYgCCEFDAwLIAcoArQBIgggBygCqAEiC08NIwwiCyAPRQ0qIBAgBygCjAE6AAAgB0HI/gA2AgQgD0EBayEPIBBBAWohECAHKAIEIQgMOQsgBygCDCIDRQRAQQAhCAwJCyAFQR9LDQcgBkUNNyAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEYSQ0BIAQhASAJIQYgCCEFDAcLIAdBwP4ANgIEDCoLIAlFBEAgBCEBQQAhBiAIIQUgDSEEDDgLIAVBEGohCSABQQJqIQQgBkECayELIAEtAAEgCHQgCmohCiAFQQ9LBEAgBCEBIAshBiAJIQUMBgsgC0UEQCAEIQFBACEGIAkhBSANIQQMOAsgBUEYaiEIIAFBA2ohBCAGQQNrIQsgAS0AAiAJdCAKaiEKIAVBB0sEQCAEIQEgCyEGIAghBQwGCyALRQRAIAQhAUEAIQYgCCEFIA0hBAw4CyAFQSBqIQUgBkEEayEGIAEtAAMgCHQgCmohCiABQQRqIQEMBQsgCUUEQCAEIQFBACEGIAghBSANIQQMNwsgBUEQaiEFIAZBAmshBiABLQABIAh0IApqIQogAUECaiEBDBwLIAlFBEAgBCEBQQAhBiAIIQUgDSEEDDYLIAVBEGohCSABQQJqIQQgBkECayELIAEtAAEgCHQgCmohCiAFQQ9LBEAgBCEBIAshBiAJIQUMBgsgC0UEQCAEIQFBACEGIAkhBSANIQQMNgsgBUEYaiEIIAFBA2ohBCAGQQNrIQsgAS0AAiAJdCAKaiEKIAUEQCAEIQEgCyEGIAghBQwGCyALRQRAIAQhAUEAIQYgCCEFIA0hBAw2CyAFQSBqIQUgBkEEayEGIAEtAAMgCHQgCmohCiABQQRqIQEMBQsgBUEIaiEJIAhFBEAgBCEBQQAhBiAJIQUgDSEEDDULIAFBAmohBCAGQQJrIQggAS0AASAJdCAKaiEKIAVBD0sEQCAEIQEgCCEGDBgLIAVBEGohCSAIRQRAIAQhAUEAIQYgCSEFIA0hBAw1CyABQQNqIQQgBkEDayEIIAEtAAIgCXQgCmohCiAFQQdLBEAgBCEBIAghBgwYCyAFQRhqIQUgCEUEQCAEIQFBACEGIA0hBAw1CyAGQQRrIQYgAS0AAyAFdCAKaiEKIAFBBGohAQwXCyAJDQYgBCEBQQAhBiAIIQUgDSEEDDMLIAlFBEAgBCEBQQAhBiAIIQUgDSEEDDMLIAVBEGohBSAGQQJrIQYgAS0AASAIdCAKaiEKIAFBAmohAQwUCyAMIBYgD2siCSAMKAIUajYCFCAHIAcoAiAgCWo2AiACQCADQQRxRQ0AIAkEQAJAIBAgCWshBCAMKAIcIggoAhQEQCAIQUBrIAQgCUEAQdiAASgCABEIAAwBCyAIIAgoAhwgBCAJQcCAASgCABEAACIENgIcIAwgBDYCMAsLIAcoAhRFDQAgByAeQeCAASgCABEBACIENgIcIAwgBDYCMAsCQCAHKAIMIghBBHFFDQAgBygCHCAKIApBCHRBgID8B3EgCkEYdHIgCkEIdkGA/gNxIApBGHZyciAHKAIUG0YNACAHQdH+ADYCBCAMQaQMNgIYIA8hFiAHKAIEIQgMMQtBACEKQQAhBSAPIRYLIAdBz/4ANgIEDC0LIApB//8DcSIEIApBf3NBEHZHBEAgB0HR/gA2AgQgDEGOCjYCGCAHKAIEIQgMLwsgB0HC/gA2AgQgByAENgKMAUEAIQpBACEFCyAHQcP+ADYCBAsgBygCjAEiBARAIA8gBiAEIAQgBksbIgQgBCAPSxsiCEUNHiAQIAEgCBAHIQQgByAHKAKMASAIazYCjAEgBCAIaiEQIA8gCGshDyABIAhqIQEgBiAIayEGIAcoAgQhCAwtCyAHQb/+ADYCBCAHKAIEIQgMLAsgBUEQaiEFIAZBAmshBiABLQABIAh0IApqIQogAUECaiEBCyAHIAo2AhQgCkH/AXFBCEcEQCAHQdH+ADYCBCAMQYIPNgIYIAcoAgQhCAwrCyAKQYDAA3EEQCAHQdH+ADYCBCAMQY0JNgIYIAcoAgQhCAwrCyAHKAIkIgQEQCAEIApBCHZBAXE2AgALAkAgCkGABHFFDQAgBy0ADEEEcUUNACAUIAo7AAwgBwJ/IAcoAhwhBUEAIBRBDGoiBEUNABogBSAEQQJB1IABKAIAEQAACzYCHAsgB0G2/gA2AgRBACEFQQAhCgsgBkUNKCABQQFqIQQgBkEBayEIIAEtAAAgBXQgCmohCiAFQRhPBEAgBCEBIAghBgwBCyAFQQhqIQkgCEUEQCAEIQFBACEGIAkhBSANIQQMKwsgAUECaiEEIAZBAmshCCABLQABIAl0IApqIQogBUEPSwRAIAQhASAIIQYMAQsgBUEQaiEJIAhFBEAgBCEBQQAhBiAJIQUgDSEEDCsLIAFBA2ohBCAGQQNrIQggAS0AAiAJdCAKaiEKIAVBB0sEQCAEIQEgCCEGDAELIAVBGGohBSAIRQRAIAQhAUEAIQYgDSEEDCsLIAZBBGshBiABLQADIAV0IApqIQogAUEEaiEBCyAHKAIkIgQEQCAEIAo2AgQLAkAgBy0AFUECcUUNACAHLQAMQQRxRQ0AIBQgCjYADCAHAn8gBygCHCEFQQAgFEEMaiIERQ0AGiAFIARBBEHUgAEoAgARAAALNgIcCyAHQbf+ADYCBEEAIQVBACEKCyAGRQ0mIAFBAWohBCAGQQFrIQggAS0AACAFdCAKaiEKIAVBCE8EQCAEIQEgCCEGDAELIAVBCGohBSAIRQRAIAQhAUEAIQYgDSEEDCkLIAZBAmshBiABLQABIAV0IApqIQogAUECaiEBCyAHKAIkIgQEQCAEIApBCHY2AgwgBCAKQf8BcTYCCAsCQCAHLQAVQQJxRQ0AIActAAxBBHFFDQAgFCAKOwAMIAcCfyAHKAIcIQVBACAUQQxqIgRFDQAaIAUgBEECQdSAASgCABEAAAs2AhwLIAdBuP4ANgIEQQAhCEEAIQVBACEKIAcoAhQiBEGACHENAQsgBygCJCIEBEAgBEEANgIQCyAIIQUMAgsgBkUEQEEAIQYgCCEKIA0hBAwmCyABQQFqIQkgBkEBayELIAEtAAAgBXQgCGohCiAFQQhPBEAgCSEBIAshBgwBCyAFQQhqIQUgC0UEQCAJIQFBACEGIA0hBAwmCyAGQQJrIQYgAS0AASAFdCAKaiEKIAFBAmohAQsgByAKQf//A3EiCDYCjAEgBygCJCIFBEAgBSAINgIUC0EAIQUCQCAEQYAEcUUNACAHLQAMQQRxRQ0AIBQgCjsADCAHAn8gBygCHCEIQQAgFEEMaiIERQ0AGiAIIARBAkHUgAEoAgARAAALNgIcC0EAIQoLIAdBuf4ANgIECyAHKAIUIglBgAhxBEAgBiAHKAKMASIIIAYgCEkbIg4EQAJAIAcoAiQiA0UNACADKAIQIgRFDQAgAygCGCILIAMoAhQgCGsiCE0NACAEIAhqIAEgCyAIayAOIAggDmogC0sbEAcaIAcoAhQhCQsCQCAJQYAEcUUNACAHLQAMQQRxRQ0AIAcCfyAHKAIcIQRBACABRQ0AGiAEIAEgDkHUgAEoAgARAAALNgIcCyAHIAcoAowBIA5rIgg2AowBIAYgDmshBiABIA5qIQELIAgNEwsgB0G6/gA2AgQgB0EANgKMAQsCQCAHLQAVQQhxBEBBACEIIAZFDQQDQCABIAhqLQAAIQMCQCAHKAIkIgtFDQAgCygCHCIERQ0AIAcoAowBIgkgCygCIE8NACAHIAlBAWo2AowBIAQgCWogAzoAAAsgA0EAIAYgCEEBaiIISxsNAAsCQCAHLQAVQQJxRQ0AIActAAxBBHFFDQAgBwJ/IAcoAhwhBEEAIAFFDQAaIAQgASAIQdSAASgCABEAAAs2AhwLIAEgCGohASAGIAhrIQYgA0UNAQwTCyAHKAIkIgRFDQAgBEEANgIcCyAHQbv+ADYCBCAHQQA2AowBCwJAIActABVBEHEEQEEAIQggBkUNAwNAIAEgCGotAAAhAwJAIAcoAiQiC0UNACALKAIkIgRFDQAgBygCjAEiCSALKAIoTw0AIAcgCUEBajYCjAEgBCAJaiADOgAACyADQQAgBiAIQQFqIghLGw0ACwJAIActABVBAnFFDQAgBy0ADEEEcUUNACAHAn8gBygCHCEEQQAgAUUNABogBCABIAhB1IABKAIAEQAACzYCHAsgASAIaiEBIAYgCGshBiADRQ0BDBILIAcoAiQiBEUNACAEQQA2AiQLIAdBvP4ANgIECyAHKAIUIgtBgARxBEACQCAFQQ9LDQAgBkUNHyAFQQhqIQggAUEBaiEEIAZBAWshCSABLQAAIAV0IApqIQogBUEITwRAIAQhASAJIQYgCCEFDAELIAlFBEAgBCEBQQAhBiAIIQUgDSEEDCILIAVBEGohBSAGQQJrIQYgAS0AASAIdCAKaiEKIAFBAmohAQsCQCAHLQAMQQRxRQ0AIAogBy8BHEYNACAHQdH+ADYCBCAMQdcMNgIYIAcoAgQhCAwgC0EAIQpBACEFCyAHKAIkIgQEQCAEQQE2AjAgBCALQQl2QQFxNgIsCwJAIActAAxBBHFFDQAgC0UNACAHIB5B5IABKAIAEQEAIgQ2AhwgDCAENgIwCyAHQb/+ADYCBCAHKAIEIQgMHgtBACEGDA4LAkAgC0ECcUUNACAKQZ+WAkcNACAHKAIoRQRAIAdBDzYCKAtBACEKIAdBADYCHCAUQZ+WAjsADCAHIBRBDGoiBAR/QQAgBEECQdSAASgCABEAAAVBAAs2AhwgB0G1/gA2AgRBACEFIAcoAgQhCAwdCyAHKAIkIgQEQCAEQX82AjALAkAgC0EBcQRAIApBCHRBgP4DcSAKQQh2akEfcEUNAQsgB0HR/gA2AgQgDEH2CzYCGCAHKAIEIQgMHQsgCkEPcUEIRwRAIAdB0f4ANgIEIAxBgg82AhggBygCBCEIDB0LIApBBHYiBEEPcSIJQQhqIQsgCUEHTUEAIAcoAigiCAR/IAgFIAcgCzYCKCALCyALTxtFBEAgBUEEayEFIAdB0f4ANgIEIAxB+gw2AhggBCEKIAcoAgQhCAwdCyAHQQE2AhxBACEFIAdBADYCFCAHQYACIAl0NgIYIAxBATYCMCAHQb3+AEG//gAgCkGAwABxGzYCBEEAIQogBygCBCEIDBwLIAcgCkEIdEGAgPwHcSAKQRh0ciAKQQh2QYD+A3EgCkEYdnJyIgQ2AhwgDCAENgIwIAdBvv4ANgIEQQAhCkEAIQULIAcoAhBFBEAgDCAPNgIQIAwgEDYCDCAMIAY2AgQgDCABNgIAIAcgBTYCiAEgByAKNgKEAUECIRcMIAsgB0EBNgIcIAxBATYCMCAHQb/+ADYCBAsCfwJAIAcoAghFBEAgBUEDSQ0BIAUMAgsgB0HO/gA2AgQgCiAFQQdxdiEKIAVBeHEhBSAHKAIEIQgMGwsgBkUNGSAGQQFrIQYgAS0AACAFdCAKaiEKIAFBAWohASAFQQhqCyEEIAcgCkEBcTYCCAJAAkACQAJAAkAgCkEBdkEDcUEBaw4DAQIDAAsgB0HB/gA2AgQMAwsgB0Gw2wA2ApgBIAdCiYCAgNAANwOgASAHQbDrADYCnAEgB0HH/gA2AgQMAgsgB0HE/gA2AgQMAQsgB0HR/gA2AgQgDEHXDTYCGAsgBEEDayEFIApBA3YhCiAHKAIEIQgMGQsgByAKQR9xIghBgQJqNgKsASAHIApBBXZBH3EiBEEBajYCsAEgByAKQQp2QQ9xQQRqIgs2AqgBIAVBDmshBSAKQQ52IQogCEEdTUEAIARBHkkbRQRAIAdB0f4ANgIEIAxB6gk2AhggBygCBCEIDBkLIAdBxf4ANgIEQQAhCCAHQQA2ArQBCyAIIQQDQCAFQQJNBEAgBkUNGCAGQQFrIQYgAS0AACAFdCAKaiEKIAVBCGohBSABQQFqIQELIAcgBEEBaiIINgK0ASAHIARBAXRBsOwAai8BAEEBdGogCkEHcTsBvAEgBUEDayEFIApBA3YhCiALIAgiBEsNAAsLIAhBEk0EQEESIAhrIQ1BAyAIa0EDcSIEBEADQCAHIAhBAXRBsOwAai8BAEEBdGpBADsBvAEgCEEBaiEIIARBAWsiBA0ACwsgDUEDTwRAA0AgB0G8AWoiDSAIQQF0IgRBsOwAai8BAEEBdGpBADsBACANIARBsuwAai8BAEEBdGpBADsBACANIARBtOwAai8BAEEBdGpBADsBACANIARBtuwAai8BAEEBdGpBADsBACAIQQRqIghBE0cNAAsLIAdBEzYCtAELIAdBBzYCoAEgByAYNgKYASAHIBg2ArgBQQAhCEEAIBxBEyAaIB0gGRBOIg0EQCAHQdH+ADYCBCAMQfQINgIYIAcoAgQhCAwXCyAHQcb+ADYCBCAHQQA2ArQBQQAhDQsgBygCrAEiFSAHKAKwAWoiESAISwRAQX8gBygCoAF0QX9zIRIgBygCmAEhGwNAIAYhCSABIQsCQCAFIgMgGyAKIBJxIhNBAnRqLQABIg5PBEAgBSEEDAELA0AgCUUNDSALLQAAIAN0IQ4gC0EBaiELIAlBAWshCSADQQhqIgQhAyAEIBsgCiAOaiIKIBJxIhNBAnRqLQABIg5JDQALIAshASAJIQYLAkAgGyATQQJ0ai8BAiIFQQ9NBEAgByAIQQFqIgk2ArQBIAcgCEEBdGogBTsBvAEgBCAOayEFIAogDnYhCiAJIQgMAQsCfwJ/AkACQAJAIAVBEGsOAgABAgsgDkECaiIFIARLBEADQCAGRQ0bIAZBAWshBiABLQAAIAR0IApqIQogAUEBaiEBIARBCGoiBCAFSQ0ACwsgBCAOayEFIAogDnYhBCAIRQRAIAdB0f4ANgIEIAxBvAk2AhggBCEKIAcoAgQhCAwdCyAFQQJrIQUgBEECdiEKIARBA3FBA2ohCSAIQQF0IAdqLwG6AQwDCyAOQQNqIgUgBEsEQANAIAZFDRogBkEBayEGIAEtAAAgBHQgCmohCiABQQFqIQEgBEEIaiIEIAVJDQALCyAEIA5rQQNrIQUgCiAOdiIEQQN2IQogBEEHcUEDagwBCyAOQQdqIgUgBEsEQANAIAZFDRkgBkEBayEGIAEtAAAgBHQgCmohCiABQQFqIQEgBEEIaiIEIAVJDQALCyAEIA5rQQdrIQUgCiAOdiIEQQd2IQogBEH/AHFBC2oLIQlBAAshAyAIIAlqIBFLDRMgCUEBayEEIAlBA3EiCwRAA0AgByAIQQF0aiADOwG8ASAIQQFqIQggCUEBayEJIAtBAWsiCw0ACwsgBEEDTwRAA0AgByAIQQF0aiIEIAM7Ab4BIAQgAzsBvAEgBCADOwHAASAEIAM7AcIBIAhBBGohCCAJQQRrIgkNAAsLIAcgCDYCtAELIAggEUkNAAsLIAcvAbwFRQRAIAdB0f4ANgIEIAxB0Qs2AhggBygCBCEIDBYLIAdBCjYCoAEgByAYNgKYASAHIBg2ArgBQQEgHCAVIBogHSAZEE4iDQRAIAdB0f4ANgIEIAxB2Ag2AhggBygCBCEIDBYLIAdBCTYCpAEgByAHKAK4ATYCnAFBAiAHIAcoAqwBQQF0akG8AWogBygCsAEgGiAfIBkQTiINBEAgB0HR/gA2AgQgDEGmCTYCGCAHKAIEIQgMFgsgB0HH/gA2AgRBACENCyAHQcj+ADYCBAsCQCAGQQ9JDQAgD0GEAkkNACAMIA82AhAgDCAQNgIMIAwgBjYCBCAMIAE2AgAgByAFNgKIASAHIAo2AoQBIAwgFkHogAEoAgARBwAgBygCiAEhBSAHKAKEASEKIAwoAgQhBiAMKAIAIQEgDCgCECEPIAwoAgwhECAHKAIEQb/+AEcNByAHQX82ApBHIAcoAgQhCAwUCyAHQQA2ApBHIAUhCSAGIQggASEEAkAgBygCmAEiEiAKQX8gBygCoAF0QX9zIhVxIg5BAnRqLQABIgsgBU0EQCAFIQMMAQsDQCAIRQ0PIAQtAAAgCXQhCyAEQQFqIQQgCEEBayEIIAlBCGoiAyEJIAMgEiAKIAtqIgogFXEiDkECdGotAAEiC0kNAAsLIBIgDkECdGoiAS8BAiETAkBBACABLQAAIhEgEUHwAXEbRQRAIAshBgwBCyAIIQYgBCEBAkAgAyIFIAsgEiAKQX8gCyARanRBf3MiFXEgC3YgE2oiEUECdGotAAEiDmpPBEAgAyEJDAELA0AgBkUNDyABLQAAIAV0IQ4gAUEBaiEBIAZBAWshBiAFQQhqIgkhBSALIBIgCiAOaiIKIBVxIAt2IBNqIhFBAnRqLQABIg5qIAlLDQALIAEhBCAGIQgLIBIgEUECdGoiAS0AACERIAEvAQIhEyAHIAs2ApBHIAsgDmohBiAJIAtrIQMgCiALdiEKIA4hCwsgByAGNgKQRyAHIBNB//8DcTYCjAEgAyALayEFIAogC3YhCiARRQRAIAdBzf4ANgIEDBALIBFBIHEEQCAHQb/+ADYCBCAHQX82ApBHDBALIBFBwABxBEAgB0HR/gA2AgQgDEHQDjYCGAwQCyAHQcn+ADYCBCAHIBFBD3EiAzYClAELAkAgA0UEQCAHKAKMASELIAQhASAIIQYMAQsgBSEJIAghBiAEIQsCQCADIAVNBEAgBCEBDAELA0AgBkUNDSAGQQFrIQYgCy0AACAJdCAKaiEKIAtBAWoiASELIAlBCGoiCSADSQ0ACwsgByAHKAKQRyADajYCkEcgByAHKAKMASAKQX8gA3RBf3NxaiILNgKMASAJIANrIQUgCiADdiEKCyAHQcr+ADYCBCAHIAs2ApRHCyAFIQkgBiEIIAEhBAJAIAcoApwBIhIgCkF/IAcoAqQBdEF/cyIVcSIOQQJ0ai0AASIDIAVNBEAgBSELDAELA0AgCEUNCiAELQAAIAl0IQMgBEEBaiEEIAhBAWshCCAJQQhqIgshCSALIBIgAyAKaiIKIBVxIg5BAnRqLQABIgNJDQALCyASIA5BAnRqIgEvAQIhEwJAIAEtAAAiEUHwAXEEQCAHKAKQRyEGIAMhCQwBCyAIIQYgBCEBAkAgCyIFIAMgEiAKQX8gAyARanRBf3MiFXEgA3YgE2oiEUECdGotAAEiCWpPBEAgCyEODAELA0AgBkUNCiABLQAAIAV0IQkgAUEBaiEBIAZBAWshBiAFQQhqIg4hBSADIBIgCSAKaiIKIBVxIAN2IBNqIhFBAnRqLQABIglqIA5LDQALIAEhBCAGIQgLIBIgEUECdGoiAS0AACERIAEvAQIhEyAHIAcoApBHIANqIgY2ApBHIA4gA2shCyAKIAN2IQoLIAcgBiAJajYCkEcgCyAJayEFIAogCXYhCiARQcAAcQRAIAdB0f4ANgIEIAxB7A42AhggBCEBIAghBiAHKAIEIQgMEgsgB0HL/gA2AgQgByARQQ9xIgM2ApQBIAcgE0H//wNxNgKQAQsCQCADRQRAIAQhASAIIQYMAQsgBSEJIAghBiAEIQsCQCADIAVNBEAgBCEBDAELA0AgBkUNCCAGQQFrIQYgCy0AACAJdCAKaiEKIAtBAWoiASELIAlBCGoiCSADSQ0ACwsgByAHKAKQRyADajYCkEcgByAHKAKQASAKQX8gA3RBf3NxajYCkAEgCSADayEFIAogA3YhCgsgB0HM/gA2AgQLIA9FDQACfyAHKAKQASIIIBYgD2siBEsEQAJAIAggBGsiCCAHKAIwTQ0AIAcoAoxHRQ0AIAdB0f4ANgIEIAxBuQw2AhggBygCBCEIDBILAn8CQAJ/IAcoAjQiBCAISQRAIAcoAjggBygCLCAIIARrIghragwBCyAHKAI4IAQgCGtqCyILIBAgDyAQaiAQa0EBaqwiISAPIAcoAowBIgQgCCAEIAhJGyIEIAQgD0sbIgitIiIgISAiVBsiIqciCWoiBEkgCyAQT3ENACALIBBNIAkgC2ogEEtxDQAgECALIAkQBxogBAwBCyAQIAsgCyAQayIEIARBH3UiBGogBHMiCRAHIAlqIQQgIiAJrSIkfSIjUEUEQCAJIAtqIQkDQAJAICMgJCAjICRUGyIiQiBUBEAgIiEhDAELICIiIUIgfSImQgWIQgF8QgODIiVQRQRAA0AgBCAJKQAANwAAIAQgCSkAGDcAGCAEIAkpABA3ABAgBCAJKQAINwAIICFCIH0hISAJQSBqIQkgBEEgaiEEICVCAX0iJUIAUg0ACwsgJkLgAFQNAANAIAQgCSkAADcAACAEIAkpABg3ABggBCAJKQAQNwAQIAQgCSkACDcACCAEIAkpADg3ADggBCAJKQAwNwAwIAQgCSkAKDcAKCAEIAkpACA3ACAgBCAJKQBYNwBYIAQgCSkAUDcAUCAEIAkpAEg3AEggBCAJKQBANwBAIAQgCSkAYDcAYCAEIAkpAGg3AGggBCAJKQBwNwBwIAQgCSkAeDcAeCAJQYABaiEJIARBgAFqIQQgIUKAAX0iIUIfVg0ACwsgIUIQWgRAIAQgCSkAADcAACAEIAkpAAg3AAggIUIQfSEhIAlBEGohCSAEQRBqIQQLICFCCFoEQCAEIAkpAAA3AAAgIUIIfSEhIAlBCGohCSAEQQhqIQQLICFCBFoEQCAEIAkoAAA2AAAgIUIEfSEhIAlBBGohCSAEQQRqIQQLICFCAloEQCAEIAkvAAA7AAAgIUICfSEhIAlBAmohCSAEQQJqIQQLICMgIn0hIyAhUEUEQCAEIAktAAA6AAAgCUEBaiEJIARBAWohBAsgI0IAUg0ACwsgBAsMAQsgECAIIA8gBygCjAEiBCAEIA9LGyIIIA9ByIABKAIAEQQACyEQIAcgBygCjAEgCGsiBDYCjAEgDyAIayEPIAQNAiAHQcj+ADYCBCAHKAIEIQgMDwsgDSEJCyAJIQQMDgsgBygCBCEIDAwLIAEgBmohASAFIAZBA3RqIQUMCgsgBCAIaiEBIAUgCEEDdGohBQwJCyAEIAhqIQEgCyAIQQN0aiEFDAgLIAEgBmohASAFIAZBA3RqIQUMBwsgBCAIaiEBIAUgCEEDdGohBQwGCyAEIAhqIQEgAyAIQQN0aiEFDAULIAEgBmohASAFIAZBA3RqIQUMBAsgB0HR/gA2AgQgDEG8CTYCGCAHKAIEIQgMBAsgBCEBIAghBiAHKAIEIQgMAwtBACEGIAQhBSANIQQMAwsCQAJAIAhFBEAgCiEJDAELIAcoAhRFBEAgCiEJDAELAkAgBUEfSw0AIAZFDQMgBUEIaiEJIAFBAWohBCAGQQFrIQsgAS0AACAFdCAKaiEKIAVBGE8EQCAEIQEgCyEGIAkhBQwBCyALRQRAIAQhAUEAIQYgCSEFIA0hBAwGCyAFQRBqIQsgAUECaiEEIAZBAmshAyABLQABIAl0IApqIQogBUEPSwRAIAQhASADIQYgCyEFDAELIANFBEAgBCEBQQAhBiALIQUgDSEEDAYLIAVBGGohCSABQQNqIQQgBkEDayEDIAEtAAIgC3QgCmohCiAFQQdLBEAgBCEBIAMhBiAJIQUMAQsgA0UEQCAEIQFBACEGIAkhBSANIQQMBgsgBUEgaiEFIAZBBGshBiABLQADIAl0IApqIQogAUEEaiEBC0EAIQkgCEEEcQRAIAogBygCIEcNAgtBACEFCyAHQdD+ADYCBEEBIQQgCSEKDAMLIAdB0f4ANgIEIAxBjQw2AhggBygCBCEIDAELC0EAIQYgDSEECyAMIA82AhAgDCAQNgIMIAwgBjYCBCAMIAE2AgAgByAFNgKIASAHIAo2AoQBAkAgBygCLA0AIA8gFkYNAiAHKAIEIgFB0P4ASw0CIAFBzv4ASQ0ACwJ/IBYgD2shCiAHKAIMQQRxIQkCQAJAAkAgDCgCHCIDKAI4Ig1FBEBBASEIIAMgAygCACIBKAIgIAEoAiggAygCmEdBASADKAIodGpBARAoIg02AjggDUUNAQsgAygCLCIGRQRAIANCADcDMCADQQEgAygCKHQiBjYCLAsgBiAKTQRAAkAgCQRAAkAgBiAKTw0AIAogBmshBSAQIAprIQEgDCgCHCIGKAIUBEAgBkFAayABIAVBAEHYgAEoAgARCAAMAQsgBiAGKAIcIAEgBUHAgAEoAgARAAAiATYCHCAMIAE2AjALIAMoAiwiDUUNASAQIA1rIQUgAygCOCEBIAwoAhwiBigCFARAIAZBQGsgASAFIA1B3IABKAIAEQgADAILIAYgBigCHCABIAUgDUHEgAEoAgARBAAiATYCHCAMIAE2AjAMAQsgDSAQIAZrIAYQBxoLIANBADYCNCADIAMoAiw2AjBBAAwECyAKIAYgAygCNCIFayIBIAEgCksbIQsgECAKayEGIAUgDWohBQJAIAkEQAJAIAtFDQAgDCgCHCIBKAIUBEAgAUFAayAFIAYgC0HcgAEoAgARCAAMAQsgASABKAIcIAUgBiALQcSAASgCABEEACIBNgIcIAwgATYCMAsgCiALayIFRQ0BIBAgBWshBiADKAI4IQEgDCgCHCINKAIUBEAgDUFAayABIAYgBUHcgAEoAgARCAAMBQsgDSANKAIcIAEgBiAFQcSAASgCABEEACIBNgIcIAwgATYCMAwECyAFIAYgCxAHGiAKIAtrIgUNAgtBACEIIANBACADKAI0IAtqIgUgBSADKAIsIgFGGzYCNCABIAMoAjAiAU0NACADIAEgC2o2AjALIAgMAgsgAygCOCAQIAVrIAUQBxoLIAMgBTYCNCADIAMoAiw2AjBBAAtFBEAgDCgCECEPIAwoAgQhFyAHKAKIAQwDCyAHQdL+ADYCBAtBfCEXDAILIAYhFyAFCyEFIAwgICAXayIBIAwoAghqNgIIIAwgFiAPayIGIAwoAhRqNgIUIAcgBygCICAGajYCICAMIAcoAghBAEdBBnQgBWogBygCBCIFQb/+AEZBB3RqQYACIAVBwv4ARkEIdCAFQcf+AEYbajYCLCAEIARBeyAEGyABIAZyGyEXCyAUQRBqJAAgFwshASACIAIpAwAgADUCIH03AwACQAJAAkACQCABQQVqDgcBAgICAgMAAgtBAQ8LIAAoAhQNAEEDDwsgACgCACIABEAgACABNgIEIABBDTYCAAtBAiEBCyABCwkAIABBAToADAtEAAJAIAJC/////w9YBEAgACgCFEUNAQsgACgCACIABEAgAEEANgIEIABBEjYCAAtBAA8LIAAgATYCECAAIAI+AhRBAQu5AQEEfyAAQRBqIQECfyAALQAEBEAgARCEAQwBC0F+IQMCQCABRQ0AIAEoAiBFDQAgASgCJCIERQ0AIAEoAhwiAkUNACACKAIAIAFHDQAgAigCBEG0/gBrQR9LDQAgAigCOCIDBEAgBCABKAIoIAMQHiABKAIkIQQgASgCHCECCyAEIAEoAiggAhAeQQAhAyABQQA2AhwLIAMLIgEEQCAAKAIAIgAEQCAAIAE2AgQgAEENNgIACwsgAUUL0gwBBn8gAEIANwIQIABCADcCHCAAQRBqIQICfyAALQAEBEAgACgCCCEBQesMLQAAQTFGBH8Cf0F+IQMCQCACRQ0AIAJBADYCGCACKAIgIgRFBEAgAkEANgIoIAJBJzYCIEEnIQQLIAIoAiRFBEAgAkEoNgIkC0EGIAEgAUF/RhsiBUEASA0AIAVBCUoNAEF8IQMgBCACKAIoQQFB0C4QKCIBRQ0AIAIgATYCHCABIAI2AgAgAUEPNgI0IAFCgICAgKAFNwIcIAFBADYCFCABQYCAAjYCMCABQf//ATYCOCABIAIoAiAgAigCKEGAgAJBAhAoNgJIIAEgAigCICACKAIoIAEoAjBBAhAoIgM2AkwgA0EAIAEoAjBBAXQQGSACKAIgIAIoAihBgIAEQQIQKCEDIAFBgIACNgLoLSABQQA2AkAgASADNgJQIAEgAigCICACKAIoQYCAAkEEECgiAzYCBCABIAEoAugtIgRBAnQ2AgwCQAJAIAEoAkhFDQAgASgCTEUNACABKAJQRQ0AIAMNAQsgAUGaBTYCICACQejAACgCADYCGCACEIQBGkF8DAILIAFBADYCjAEgASAFNgKIASABQgA3AyggASADIARqNgLsLSABIARBA2xBA2s2AvQtQX4hAwJAIAJFDQAgAigCIEUNACACKAIkRQ0AIAIoAhwiAUUNACABKAIAIAJHDQACQAJAIAEoAiAiBEE5aw45AQICAgICAgICAgICAQICAgECAgICAgICAgICAgICAgICAgECAgICAgICAgICAgECAgICAgICAgIBAAsgBEGaBUYNACAEQSpHDQELIAJBAjYCLCACQQA2AgggAkIANwIUIAFBADYCECABIAEoAgQ2AgggASgCFCIDQX9MBEAgAUEAIANrIgM2AhQLIAFBOUEqIANBAkYbNgIgIAIgA0ECRgR/IAFBoAFqQeSAASgCABEBAAVBAQs2AjAgAUF+NgIkIAFBADYCoC4gAUIANwOYLiABQYgXakGg0wA2AgAgASABQcwVajYCgBcgAUH8FmpBjNMANgIAIAEgAUHYE2o2AvQWIAFB8BZqQfjSADYCACABIAFB5AFqNgLoFiABEIgBQQAhAwsgAw0AIAIoAhwiAiACKAIwQQF0NgJEQQAhAyACKAJQQQBBgIAIEBkgAiACKAKIASIEQQxsIgFBtNgAai8BADYClAEgAiABQbDYAGovAQA2ApABIAIgAUGy2ABqLwEANgJ4IAIgAUG22ABqLwEANgJ0QfiAASgCACEFQeyAASgCACEGQYCBASgCACEBIAJCADcCbCACQgA3AmQgAkEANgI8IAJBADYChC4gAkIANwJUIAJBKSABIARBCUYiARs2AnwgAkEqIAYgARs2AoABIAJBKyAFIAEbNgKEAQsgAwsFQXoLDAELAn9BekHrDC0AAEExRw0AGkF+IAJFDQAaIAJBADYCGCACKAIgIgNFBEAgAkEANgIoIAJBJzYCIEEnIQMLIAIoAiRFBEAgAkEoNgIkC0F8IAMgAigCKEEBQaDHABAoIgRFDQAaIAIgBDYCHCAEQQA2AjggBCACNgIAIARBtP4ANgIEIARBzIABKAIAEQkANgKYR0F+IQMCQCACRQ0AIAIoAiBFDQAgAigCJCIFRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQACQAJAIAEoAjgiBgRAIAEoAihBD0cNAQsgAUEPNgIoIAFBADYCDAwBCyAFIAIoAiggBhAeIAFBADYCOCACKAIgIQUgAUEPNgIoIAFBADYCDCAFRQ0BCyACKAIkRQ0AIAIoAhwiAUUNACABKAIAIAJHDQAgASgCBEG0/gBrQR9LDQBBACEDIAFBADYCNCABQgA3AiwgAUEANgIgIAJBADYCCCACQgA3AhQgASgCDCIFBEAgAiAFQQFxNgIwCyABQrT+ADcCBCABQgA3AoQBIAFBADYCJCABQoCAgoAQNwMYIAFCgICAgHA3AxAgAUKBgICAcDcCjEcgASABQfwKaiIFNgK4ASABIAU2ApwBIAEgBTYCmAELQQAgA0UNABogAigCJCACKAIoIAQQHiACQQA2AhwgAwsLIgIEQCAAKAIAIgAEQCAAIAI2AgQgAEENNgIACwsgAkULKQEBfyAALQAERQRAQQAPC0ECIQEgACgCCCIAQQNOBH8gAEEHSgVBAgsLBgAgABAGC2MAQcgAEAkiAEUEQEGEhAEoAgAhASACBEAgAiABNgIEIAJBATYCAAsgAA8LIABBADoADCAAQQE6AAQgACACNgIAIABBADYCOCAAQgA3AzAgACABQQkgAUEBa0EJSRs2AgggAAukCgIIfwF+QfCAAUH0gAEgACgCdEGBCEkbIQYCQANAAkACfwJAIAAoAjxBhQJLDQAgABAvAkAgACgCPCICQYUCSw0AIAENAEEADwsgAkUNAiACQQRPDQBBAAwBCyAAIAAoAmggACgChAERAgALIQMgACAAKAJsOwFgQQIhAgJAIAA1AmggA619IgpCAVMNACAKIAAoAjBBhgJrrVUNACAAKAJwIAAoAnhPDQAgA0UNACAAIAMgBigCABECACICQQVLDQBBAiACIAAoAowBQQFGGyECCwJAIAAoAnAiA0EDSQ0AIAIgA0sNACAAIAAoAvAtIgJBAWo2AvAtIAAoAjwhBCACIAAoAuwtaiAAKAJoIgcgAC8BYEF/c2oiAjoAACAAIAAoAvAtIgVBAWo2AvAtIAUgACgC7C1qIAJBCHY6AAAgACAAKALwLSIFQQFqNgLwLSAFIAAoAuwtaiADQQNrOgAAIAAgACgCgC5BAWo2AoAuIANB/c4Aai0AAEECdCAAakHoCWoiAyADLwEAQQFqOwEAIAAgAkEBayICIAJBB3ZBgAJqIAJBgAJJG0GAywBqLQAAQQJ0akHYE2oiAiACLwEAQQFqOwEAIAAgACgCcCIFQQFrIgM2AnAgACAAKAI8IANrNgI8IAAoAvQtIQggACgC8C0hCSAEIAdqQQNrIgQgACgCaCICSwRAIAAgAkEBaiAEIAJrIgIgBUECayIEIAIgBEkbIAAoAoABEQUAIAAoAmghAgsgAEEANgJkIABBADYCcCAAIAIgA2oiBDYCaCAIIAlHDQJBACECIAAgACgCWCIDQQBOBH8gACgCSCADagVBAAsgBCADa0EAEA8gACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQDQIMAwsgACgCZARAIAAoAmggACgCSGpBAWstAAAhAyAAIAAoAvAtIgRBAWo2AvAtIAQgACgC7C1qQQA6AAAgACAAKALwLSIEQQFqNgLwLSAEIAAoAuwtakEAOgAAIAAgACgC8C0iBEEBajYC8C0gBCAAKALsLWogAzoAACAAIANBAnRqIgMgAy8B5AFBAWo7AeQBIAAoAvAtIAAoAvQtRgRAIAAgACgCWCIDQQBOBH8gACgCSCADagVBAAsgACgCaCADa0EAEA8gACAAKAJoNgJYIAAoAgAQCgsgACACNgJwIAAgACgCaEEBajYCaCAAIAAoAjxBAWs2AjwgACgCACgCEA0CQQAPBSAAQQE2AmQgACACNgJwIAAgACgCaEEBajYCaCAAIAAoAjxBAWs2AjwMAgsACwsgACgCZARAIAAoAmggACgCSGpBAWstAAAhAiAAIAAoAvAtIgNBAWo2AvAtIAMgACgC7C1qQQA6AAAgACAAKALwLSIDQQFqNgLwLSADIAAoAuwtakEAOgAAIAAgACgC8C0iA0EBajYC8C0gAyAAKALsLWogAjoAACAAIAJBAnRqIgIgAi8B5AFBAWo7AeQBIAAoAvAtIAAoAvQtRhogAEEANgJkCyAAIAAoAmgiA0ECIANBAkkbNgKELiABQQRGBEAgACAAKAJYIgFBAE4EfyAAKAJIIAFqBUEACyADIAFrQQEQDyAAIAAoAmg2AlggACgCABAKQQNBAiAAKAIAKAIQGw8LIAAoAvAtBEBBACECIAAgACgCWCIBQQBOBH8gACgCSCABagVBAAsgAyABa0EAEA8gACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQRQ0BC0EBIQILIAIL2BACEH8BfiAAKAKIAUEFSCEOA0ACQAJ/AkACQAJAAn8CQAJAIAAoAjxBhQJNBEAgABAvIAAoAjwiA0GFAksNASABDQFBAA8LIA4NASAIIQMgBSEHIAohDSAGQf//A3FFDQEMAwsgA0UNA0EAIANBBEkNARoLIAAgACgCaEH4gAEoAgARAgALIQZBASECQQAhDSAAKAJoIgOtIAatfSISQgFTDQIgEiAAKAIwQYYCa61VDQIgBkUNAiAAIAZB8IABKAIAEQIAIgZBASAGQfz/A3EbQQEgACgCbCINQf//A3EgA0H//wNxSRshBiADIQcLAkAgACgCPCIEIAZB//8DcSICQQRqTQ0AIAZB//8DcUEDTQRAQQEgBkEBa0H//wNxIglFDQQaIANB//8DcSIEIAdBAWpB//8DcSIDSw0BIAAgAyAJIAQgA2tBAWogAyAJaiAESxtB7IABKAIAEQUADAELAkAgACgCeEEEdCACSQ0AIARBBEkNACAGQQFrQf//A3EiDCAHQQFqQf//A3EiBGohCSAEIANB//8DcSIDTwRAQeyAASgCACELIAMgCUkEQCAAIAQgDCALEQUADAMLIAAgBCADIARrQQFqIAsRBQAMAgsgAyAJTw0BIAAgAyAJIANrQeyAASgCABEFAAwBCyAGIAdqQf//A3EiA0UNACAAIANBAWtB+IABKAIAEQIAGgsgBgwCCyAAIAAoAmgiBUECIAVBAkkbNgKELiABQQRGBEBBACEDIAAgACgCWCIBQQBOBH8gACgCSCABagVBAAsgBSABa0EBEA8gACAAKAJoNgJYIAAoAgAQCkEDQQIgACgCACgCEBsPCyAAKALwLQRAQQAhAkEAIQMgACAAKAJYIgFBAE4EfyAAKAJIIAFqBUEACyAFIAFrQQAQDyAAIAAoAmg2AlggACgCABAKIAAoAgAoAhBFDQMLQQEhAgwCCyADIQdBAQshBEEAIQYCQCAODQAgACgCPEGHAkkNACACIAdB//8DcSIQaiIDIAAoAkRBhgJrTw0AIAAgAzYCaEEAIQogACADQfiAASgCABECACEFAn8CQCAAKAJoIgitIAWtfSISQgFTDQAgEiAAKAIwQYYCa61VDQAgBUUNACAAIAVB8IABKAIAEQIAIQYgAC8BbCIKIAhB//8DcSIFTw0AIAZB//8DcSIDQQRJDQAgCCAEQf//A3FBAkkNARogCCACIApBAWpLDQEaIAggAiAFQQFqSw0BGiAIIAAoAkgiCSACa0EBaiICIApqLQAAIAIgBWotAABHDQEaIAggCUEBayICIApqIgwtAAAgAiAFaiIPLQAARw0BGiAIIAUgCCAAKAIwQYYCayICa0H//wNxQQAgAiAFSRsiEU0NARogCCADQf8BSw0BGiAGIQUgCCECIAQhAyAIIAoiCUECSQ0BGgNAAkAgA0EBayEDIAVBAWohCyAJQQFrIQkgAkEBayECIAxBAWsiDC0AACAPQQFrIg8tAABHDQAgA0H//wNxRQ0AIBEgAkH//wNxTw0AIAVB//8DcUH+AUsNACALIQUgCUH//wNxQQFLDQELCyAIIANB//8DcUEBSw0BGiAIIAtB//8DcUECRg0BGiAIQQFqIQggAyEEIAshBiAJIQogAgwBC0EBIQYgCAshBSAAIBA2AmgLAn8gBEH//wNxIgNBA00EQCAEQf//A3EiA0UNAyAAKAJIIAdB//8DcWotAAAhBCAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qQQA6AAAgACAAKALwLSICQQFqNgLwLSACIAAoAuwtakEAOgAAIAAgACgC8C0iAkEBajYC8C0gAiAAKALsLWogBDoAACAAIARBAnRqIgRB5AFqIAQvAeQBQQFqOwEAIAAgACgCPEEBazYCPCAAKALwLSICIAAoAvQtRiIEIANBAUYNARogACgCSCAHQQFqQf//A3FqLQAAIQkgACACQQFqNgLwLSAAKALsLSACakEAOgAAIAAgACgC8C0iAkEBajYC8C0gAiAAKALsLWpBADoAACAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qIAk6AAAgACAJQQJ0aiICQeQBaiACLwHkAUEBajsBACAAIAAoAjxBAWs2AjwgBCAAKALwLSICIAAoAvQtRmoiBCADQQJGDQEaIAAoAkggB0ECakH//wNxai0AACEHIAAgAkEBajYC8C0gACgC7C0gAmpBADoAACAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qQQA6AAAgACAAKALwLSICQQFqNgLwLSACIAAoAuwtaiAHOgAAIAAgB0ECdGoiB0HkAWogBy8B5AFBAWo7AQAgACAAKAI8QQFrNgI8IAQgACgC8C0gACgC9C1GagwBCyAAIAAoAvAtIgJBAWo2AvAtIAIgACgC7C1qIAdB//8DcSANQf//A3FrIgc6AAAgACAAKALwLSICQQFqNgLwLSACIAAoAuwtaiAHQQh2OgAAIAAgACgC8C0iAkEBajYC8C0gAiAAKALsLWogBEEDazoAACAAIAAoAoAuQQFqNgKALiADQf3OAGotAABBAnQgAGpB6AlqIgQgBC8BAEEBajsBACAAIAdBAWsiBCAEQQd2QYACaiAEQYACSRtBgMsAai0AAEECdGpB2BNqIgQgBC8BAEEBajsBACAAIAAoAjwgA2s2AjwgACgC8C0gACgC9C1GCyEEIAAgACgCaCADaiIHNgJoIARFDQFBACECQQAhBCAAIAAoAlgiA0EATgR/IAAoAkggA2oFQQALIAcgA2tBABAPIAAgACgCaDYCWCAAKAIAEAogACgCACgCEA0BCwsgAgu0BwIEfwF+AkADQAJAAkACQAJAIAAoAjxBhQJNBEAgABAvAkAgACgCPCICQYUCSw0AIAENAEEADwsgAkUNBCACQQRJDQELIAAgACgCaEH4gAEoAgARAgAhAiAANQJoIAKtfSIGQgFTDQAgBiAAKAIwQYYCa61VDQAgAkUNACAAIAJB8IABKAIAEQIAIgJBBEkNACAAIAAoAvAtIgNBAWo2AvAtIAMgACgC7C1qIAAoAmggACgCbGsiAzoAACAAIAAoAvAtIgRBAWo2AvAtIAQgACgC7C1qIANBCHY6AAAgACAAKALwLSIEQQFqNgLwLSAEIAAoAuwtaiACQQNrOgAAIAAgACgCgC5BAWo2AoAuIAJB/c4Aai0AAEECdCAAakHoCWoiBCAELwEAQQFqOwEAIAAgA0EBayIDIANBB3ZBgAJqIANBgAJJG0GAywBqLQAAQQJ0akHYE2oiAyADLwEAQQFqOwEAIAAgACgCPCACayIFNgI8IAAoAvQtIQMgACgC8C0hBCAAKAJ4IAJPQQAgBUEDSxsNASAAIAAoAmggAmoiAjYCaCAAIAJBAWtB+IABKAIAEQIAGiADIARHDQQMAgsgACgCSCAAKAJoai0AACECIAAgACgC8C0iA0EBajYC8C0gAyAAKALsLWpBADoAACAAIAAoAvAtIgNBAWo2AvAtIAMgACgC7C1qQQA6AAAgACAAKALwLSIDQQFqNgLwLSADIAAoAuwtaiACOgAAIAAgAkECdGoiAkHkAWogAi8B5AFBAWo7AQAgACAAKAI8QQFrNgI8IAAgACgCaEEBajYCaCAAKALwLSAAKAL0LUcNAwwBCyAAIAAoAmhBAWoiBTYCaCAAIAUgAkEBayICQeyAASgCABEFACAAIAAoAmggAmo2AmggAyAERw0CC0EAIQNBACECIAAgACgCWCIEQQBOBH8gACgCSCAEagVBAAsgACgCaCAEa0EAEA8gACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQDQEMAgsLIAAgACgCaCIEQQIgBEECSRs2AoQuIAFBBEYEQEEAIQIgACAAKAJYIgFBAE4EfyAAKAJIIAFqBUEACyAEIAFrQQEQDyAAIAAoAmg2AlggACgCABAKQQNBAiAAKAIAKAIQGw8LIAAoAvAtBEBBACEDQQAhAiAAIAAoAlgiAUEATgR/IAAoAkggAWoFQQALIAQgAWtBABAPIAAgACgCaDYCWCAAKAIAEAogACgCACgCEEUNAQtBASEDCyADC80JAgl/An4gAUEERiEGIAAoAiwhAgJAAkACQCABQQRGBEAgAkECRg0CIAIEQCAAQQAQUCAAQQA2AiwgACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQRQ0ECyAAIAYQTyAAQQI2AiwMAQsgAg0BIAAoAjxFDQEgACAGEE8gAEEBNgIsCyAAIAAoAmg2AlgLQQJBASABQQRGGyEKA0ACQCAAKAIMIAAoAhBBCGpLDQAgACgCABAKIAAoAgAiAigCEA0AQQAhAyABQQRHDQIgAigCBA0CIAAoAqAuDQIgACgCLEVBAXQPCwJAAkAgACgCPEGFAk0EQCAAEC8CQCAAKAI8IgNBhQJLDQAgAQ0AQQAPCyADRQ0CIAAoAiwEfyADBSAAIAYQTyAAIAo2AiwgACAAKAJoNgJYIAAoAjwLQQRJDQELIAAgACgCaEH4gAEoAgARAgAhBCAAKAJoIgKtIAStfSILQgFTDQAgCyAAKAIwQYYCa61VDQAgAiAAKAJIIgJqIgMvAAAgAiAEaiICLwAARw0AIANBAmogAkECakHQgAEoAgARAgBBAmoiA0EESQ0AIAAoAjwiAiADIAIgA0kbIgJBggIgAkGCAkkbIgdB/c4Aai0AACICQQJ0IgRBhMkAajMBACEMIARBhskAai8BACEDIAJBCGtBE00EQCAHQQNrIARBgNEAaigCAGutIAOthiAMhCEMIARBsNYAaigCACADaiEDCyAAKAKgLiEFIAMgC6dBAWsiCCAIQQd2QYACaiAIQYACSRtBgMsAai0AACICQQJ0IglBgsoAai8BAGohBCAJQYDKAGozAQAgA62GIAyEIQsgACkDmC4hDAJAIAUgAkEESQR/IAQFIAggCUGA0gBqKAIAa60gBK2GIAuEIQsgCUGw1wBqKAIAIARqCyICaiIDQT9NBEAgCyAFrYYgDIQhCwwBCyAFQcAARgRAIAAoAgQgACgCEGogDDcAACAAIAAoAhBBCGo2AhAgAiEDDAELIAAoAgQgACgCEGogCyAFrYYgDIQ3AAAgACAAKAIQQQhqNgIQIANBQGohAyALQcAAIAVrrYghCwsgACALNwOYLiAAIAM2AqAuIAAgACgCPCAHazYCPCAAIAAoAmggB2o2AmgMAgsgACgCSCAAKAJoai0AAEECdCICQYDBAGozAQAhCyAAKQOYLiEMAkAgACgCoC4iBCACQYLBAGovAQAiAmoiA0E/TQRAIAsgBK2GIAyEIQsMAQsgBEHAAEYEQCAAKAIEIAAoAhBqIAw3AAAgACAAKAIQQQhqNgIQIAIhAwwBCyAAKAIEIAAoAhBqIAsgBK2GIAyENwAAIAAgACgCEEEIajYCECADQUBqIQMgC0HAACAEa62IIQsLIAAgCzcDmC4gACADNgKgLiAAIAAoAmhBAWo2AmggACAAKAI8QQFrNgI8DAELCyAAIAAoAmgiAkECIAJBAkkbNgKELiAAKAIsIQIgAUEERgRAAkAgAkUNACAAQQEQUCAAQQA2AiwgACAAKAJoNgJYIAAoAgAQCiAAKAIAKAIQDQBBAg8LQQMPCyACBEBBACEDIABBABBQIABBADYCLCAAIAAoAmg2AlggACgCABAKIAAoAgAoAhBFDQELQQEhAwsgAwucAQEFfyACQQFOBEAgAiAAKAJIIAFqIgNqQQJqIQQgA0ECaiECIAAoAlQhAyAAKAJQIQUDQCAAIAItAAAgA0EFdEHg/wFxcyIDNgJUIAUgA0EBdGoiBi8BACIHIAFB//8DcUcEQCAAKAJMIAEgACgCOHFB//8DcUEBdGogBzsBACAGIAE7AQALIAFBAWohASACQQFqIgIgBEkNAAsLC1sBAn8gACAAKAJIIAFqLQACIAAoAlRBBXRB4P8BcXMiAjYCVCABIAAoAlAgAkEBdGoiAy8BACICRwRAIAAoAkwgACgCOCABcUEBdGogAjsBACADIAE7AQALIAILEwAgAUEFdEHg/wFxIAJB/wFxcwsGACABEAYLLwAjAEEQayIAJAAgAEEMaiABIAJsEIwBIQEgACgCDCECIABBEGokAEEAIAIgARsLjAoCAX4CfyMAQfAAayIGJAACQAJAAkACQAJAAkACQAJAIAQODwABBwIEBQYGBgYGBgYGAwYLQn8hBQJAIAAgBkHkAGpCDBARIgNCf1cEQCABBEAgASAAKAIMNgIAIAEgACgCEDYCBAsMAQsCQCADQgxSBEAgAQRAIAFBADYCBCABQRE2AgALDAELIAEoAhQhBEEAIQJCASEFA0AgBkHkAGogAmoiAiACLQAAIARB/f8DcSICQQJyIAJBA3NsQQh2cyICOgAAIAYgAjoAKCABAn8gASgCDEF/cyECQQAgBkEoaiIERQ0AGiACIARBAUHUgAEoAgARAAALQX9zIgI2AgwgASABKAIQIAJB/wFxakGFiKLAAGxBAWoiAjYCECAGIAJBGHY6ACggAQJ/IAEoAhRBf3MhAkEAIAZBKGoiBEUNABogAiAEQQFB1IABKAIAEQAAC0F/cyIENgIUIAVCDFIEQCAFpyECIAVCAXwhBQwBCwtCACEFIAAgBkEoahAhQQBIDQEgBigCUCEAIwBBEGsiAiQAIAIgADYCDCAGAn8gAkEMahCNASIARQRAIAZBITsBJEEADAELAn8gACgCFCIEQdAATgRAIARBCXQMAQsgAEHQADYCFEGAwAILIQQgBiAAKAIMIAQgACgCEEEFdGpqQaDAAWo7ASQgACgCBEEFdCAAKAIIQQt0aiAAKAIAQQF2ags7ASYgAkEQaiQAIAYtAG8iACAGLQBXRg0BIAYtACcgAEYNASABBEAgAUEANgIEIAFBGzYCAAsLQn8hBQsgBkHwAGokACAFDwtCfyEFIAAgAiADEBEiA0J/VwRAIAEEQCABIAAoAgw2AgAgASAAKAIQNgIECwwGCyMAQRBrIgAkAAJAIANQDQAgASgCFCEEIAJFBEBCASEFA0AgACACIAdqLQAAIARB/f8DcSIEQQJyIARBA3NsQQh2czoADyABAn8gASgCDEF/cyEEQQAgAEEPaiIHRQ0AGiAEIAdBAUHUgAEoAgARAAALQX9zIgQ2AgwgASABKAIQIARB/wFxakGFiKLAAGxBAWoiBDYCECAAIARBGHY6AA8gAQJ/IAEoAhRBf3MhBEEAIABBD2oiB0UNABogBCAHQQFB1IABKAIAEQAAC0F/cyIENgIUIAMgBVENAiAFpyEHIAVCAXwhBQwACwALQgEhBQNAIAAgAiAHai0AACAEQf3/A3EiBEECciAEQQNzbEEIdnMiBDoADyACIAdqIAQ6AAAgAQJ/IAEoAgxBf3MhBEEAIABBD2oiB0UNABogBCAHQQFB1IABKAIAEQAAC0F/cyIENgIMIAEgASgCECAEQf8BcWpBhYiiwABsQQFqIgQ2AhAgACAEQRh2OgAPIAECfyABKAIUQX9zIQRBACAAQQ9qIgdFDQAaIAQgB0EBQdSAASgCABEAAAtBf3MiBDYCFCADIAVRDQEgBachByAFQgF8IQUMAAsACyAAQRBqJAAgAyEFDAULIAJBADsBMiACIAIpAwAiA0KAAYQ3AwAgA0IIg1ANBCACIAIpAyBCDH03AyAMBAsgBkKFgICAcDcDECAGQoOAgIDAADcDCCAGQoGAgIAgNwMAQQAgBhAkIQUMAwsgA0IIWgR+IAIgASgCADYCACACIAEoAgQ2AgRCCAVCfwshBQwCCyABEAYMAQsgAQRAIAFBADYCBCABQRI2AgALQn8hBQsgBkHwAGokACAFC60DAgJ/An4jAEEQayIGJAACQAJAAkAgBEUNACABRQ0AIAJBAUYNAQtBACEDIABBCGoiAARAIABBADYCBCAAQRI2AgALDAELIANBAXEEQEEAIQMgAEEIaiIABEAgAEEANgIEIABBGDYCAAsMAQtBGBAJIgVFBEBBACEDIABBCGoiAARAIABBADYCBCAAQQ42AgALDAELIAVBADYCCCAFQgA3AgAgBUGQ8dmiAzYCFCAFQvis0ZGR8dmiIzcCDAJAIAQQIiICRQ0AIAKtIQhBACEDQYfTru5+IQJCASEHA0AgBiADIARqLQAAOgAPIAUgBkEPaiIDBH8gAiADQQFB1IABKAIAEQAABUEAC0F/cyICNgIMIAUgBSgCECACQf8BcWpBhYiiwABsQQFqIgI2AhAgBiACQRh2OgAPIAUCfyAFKAIUQX9zIQJBACAGQQ9qIgNFDQAaIAIgA0EBQdSAASgCABEAAAtBf3M2AhQgByAIUQ0BIAUoAgxBf3MhAiAHpyEDIAdCAXwhBwwACwALIAAgAUElIAUQQiIDDQAgBRAGQQAhAwsgBkEQaiQAIAMLnRoCBn4FfyMAQdAAayILJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADDhQFBhULAwQJDgACCBAKDw0HEQERDBELAkBByAAQCSIBBEAgAUIANwMAIAFCADcDMCABQQA2AiggAUIANwMgIAFCADcDGCABQgA3AxAgAUIANwMIIAFCADcDOCABQQgQCSIDNgIEIAMNASABEAYgAARAIABBADYCBCAAQQ42AgALCyAAQQA2AhQMFAsgA0IANwMAIAAgATYCFCABQUBrQgA3AwAgAUIANwM4DBQLAkACQCACUARAQcgAEAkiA0UNFCADQgA3AwAgA0IANwMwIANBADYCKCADQgA3AyAgA0IANwMYIANCADcDECADQgA3AwggA0IANwM4IANBCBAJIgE2AgQgAQ0BIAMQBiAABEAgAEEANgIEIABBDjYCAAsMFAsgAiAAKAIQIgEpAzBWBEAgAARAIABBADYCBCAAQRI2AgALDBQLIAEoAigEQCAABEAgAEEANgIEIABBHTYCAAsMFAsgASgCBCEDAkAgASkDCCIGQgF9IgdQDQADQAJAIAIgAyAHIAR9QgGIIAR8IgWnQQN0aikDAFQEQCAFQgF9IQcMAQsgBSAGUQRAIAYhBQwDCyADIAVCAXwiBKdBA3RqKQMAIAJWDQILIAQhBSAEIAdUDQALCwJAIAIgAyAFpyIKQQN0aikDAH0iBFBFBEAgASgCACIDIApBBHRqKQMIIQcMAQsgASgCACIDIAVCAX0iBadBBHRqKQMIIgchBAsgAiAHIAR9VARAIAAEQCAAQQA2AgQgAEEcNgIACwwUCyADIAVCAXwiBUEAIAAQiQEiA0UNEyADKAIAIAMoAggiCkEEdGpBCGsgBDcDACADKAIEIApBA3RqIAI3AwAgAyACNwMwIAMgASkDGCIGIAMpAwgiBEIBfSIHIAYgB1QbNwMYIAEgAzYCKCADIAE2AiggASAENwMgIAMgBTcDIAwBCyABQgA3AwALIAAgAzYCFCADIAQ3A0AgAyACNwM4QgAhBAwTCyAAKAIQIgEEQAJAIAEoAigiA0UEQCABKQMYIQIMAQsgA0EANgIoIAEoAihCADcDICABIAEpAxgiAiABKQMgIgUgAiAFVhsiAjcDGAsgASkDCCACVgRAA0AgASgCACACp0EEdGooAgAQBiACQgF8IgIgASkDCFQNAAsLIAEoAgAQBiABKAIEEAYgARAGCyAAKAIUIQEgAEEANgIUIAAgATYCEAwSCyACQghaBH4gASAAKAIANgIAIAEgACgCBDYCBEIIBUJ/CyEEDBELIAAoAhAiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIAAoAhQiAQRAAkAgASgCKCIDRQRAIAEpAxghAgwBCyADQQA2AiggASgCKEIANwMgIAEgASkDGCICIAEpAyAiBSACIAVWGyICNwMYCyABKQMIIAJWBEADQCABKAIAIAKnQQR0aigCABAGIAJCAXwiAiABKQMIVA0ACwsgASgCABAGIAEoAgQQBiABEAYLIAAQBgwQCyAAKAIQIgBCADcDOCAAQUBrQgA3AwAMDwsgAkJ/VwRAIAAEQCAAQQA2AgQgAEESNgIACwwOCyACIAAoAhAiAykDMCADKQM4IgZ9IgUgAiAFVBsiBVANDiABIAMpA0AiB6ciAEEEdCIBIAMoAgBqIgooAgAgBiADKAIEIABBA3RqKQMAfSICp2ogBSAKKQMIIAJ9IgYgBSAGVBsiBKcQByEKIAcgBCADKAIAIgAgAWopAwggAn1RrXwhAiAFIAZWBEADQCAKIASnaiAAIAKnQQR0IgFqIgAoAgAgBSAEfSIGIAApAwgiByAGIAdUGyIGpxAHGiACIAYgAygCACIAIAFqKQMIUa18IQIgBSAEIAZ8IgRWDQALCyADIAI3A0AgAyADKQM4IAR8NwM4DA4LQn8hBEHIABAJIgNFDQ0gA0IANwMAIANCADcDMCADQQA2AiggA0IANwMgIANCADcDGCADQgA3AxAgA0IANwMIIANCADcDOCADQQgQCSIBNgIEIAFFBEAgAxAGIAAEQCAAQQA2AgQgAEEONgIACwwOCyABQgA3AwAgACgCECIBBEACQCABKAIoIgpFBEAgASkDGCEEDAELIApBADYCKCABKAIoQgA3AyAgASABKQMYIgIgASkDICIFIAIgBVYbIgQ3AxgLIAEpAwggBFYEQANAIAEoAgAgBKdBBHRqKAIAEAYgBEIBfCIEIAEpAwhUDQALCyABKAIAEAYgASgCBBAGIAEQBgsgACADNgIQQgAhBAwNCyAAKAIUIgEEQAJAIAEoAigiA0UEQCABKQMYIQIMAQsgA0EANgIoIAEoAihCADcDICABIAEpAxgiAiABKQMgIgUgAiAFVhsiAjcDGAsgASkDCCACVgRAA0AgASgCACACp0EEdGooAgAQBiACQgF8IgIgASkDCFQNAAsLIAEoAgAQBiABKAIEEAYgARAGCyAAQQA2AhQMDAsgACgCECIDKQM4IAMpAzAgASACIAAQRCIHQgBTDQogAyAHNwM4AkAgAykDCCIGQgF9IgJQDQAgAygCBCEAA0ACQCAHIAAgAiAEfUIBiCAEfCIFp0EDdGopAwBUBEAgBUIBfSECDAELIAUgBlEEQCAGIQUMAwsgACAFQgF8IgSnQQN0aikDACAHVg0CCyAEIQUgAiAEVg0ACwsgAyAFNwNAQgAhBAwLCyAAKAIUIgMpAzggAykDMCABIAIgABBEIgdCAFMNCSADIAc3AzgCQCADKQMIIgZCAX0iAlANACADKAIEIQADQAJAIAcgACACIAR9QgGIIAR8IgWnQQN0aikDAFQEQCAFQgF9IQIMAQsgBSAGUQRAIAYhBQwDCyAAIAVCAXwiBKdBA3RqKQMAIAdWDQILIAQhBSACIARWDQALCyADIAU3A0BCACEEDAoLIAJCN1gEQCAABEAgAEEANgIEIABBEjYCAAsMCQsgARAqIAEgACgCDDYCKCAAKAIQKQMwIQIgAUEANgIwIAEgAjcDICABIAI3AxggAULcATcDAEI4IQQMCQsgACABKAIANgIMDAgLIAtBQGtBfzYCACALQouAgICwAjcDOCALQoyAgIDQATcDMCALQo+AgICgATcDKCALQpGAgICQATcDICALQoeAgICAATcDGCALQoWAgIDgADcDECALQoOAgIDAADcDCCALQoGAgIAgNwMAQQAgCxAkIQQMBwsgACgCECkDOCIEQn9VDQYgAARAIABBPTYCBCAAQR42AgALDAULIAAoAhQpAzgiBEJ/VQ0FIAAEQCAAQT02AgQgAEEeNgIACwwEC0J/IQQgAkJ/VwRAIAAEQCAAQQA2AgQgAEESNgIACwwFCyACIAAoAhQiAykDOCACfCIFQv//A3wiBFYEQCAABEAgAEEANgIEIABBEjYCAAsMBAsCQCAFIAMoAgQiCiADKQMIIganQQN0aikDACIHWA0AAkAgBCAHfUIQiCAGfCIIIAMpAxAiCVgNAEIQIAkgCVAbIQUDQCAFIgRCAYYhBSAEIAhUDQALIAQgCVQNACADKAIAIASnIgpBBHQQNCIMRQ0DIAMgDDYCACADKAIEIApBA3RBCGoQNCIKRQ0DIAMgBDcDECADIAo2AgQgAykDCCEGCyAGIAhaDQAgAygCACEMA0AgDCAGp0EEdGoiDUGAgAQQCSIONgIAIA5FBEAgAARAIABBADYCBCAAQQ42AgALDAYLIA1CgIAENwMIIAMgBkIBfCIFNwMIIAogBadBA3RqIAdCgIAEfCIHNwMAIAMpAwgiBiAIVA0ACwsgAykDQCEFIAMpAzghBwJAIAJQBEBCACEEDAELIAWnIgBBBHQiDCADKAIAaiINKAIAIAcgCiAAQQN0aikDAH0iBqdqIAEgAiANKQMIIAZ9IgcgAiAHVBsiBKcQBxogBSAEIAMoAgAiACAMaikDCCAGfVGtfCEFIAIgB1YEQANAIAAgBadBBHQiCmoiACgCACABIASnaiACIAR9IgYgACkDCCIHIAYgB1QbIganEAcaIAUgBiADKAIAIgAgCmopAwhRrXwhBSAEIAZ8IgQgAlQNAAsLIAMpAzghBwsgAyAFNwNAIAMgBCAHfCICNwM4IAIgAykDMFgNBCADIAI3AzAMBAsgAARAIABBADYCBCAAQRw2AgALDAILIAAEQCAAQQA2AgQgAEEONgIACyAABEAgAEEANgIEIABBDjYCAAsMAQsgAEEANgIUC0J/IQQLIAtB0ABqJAAgBAtIAQF/IABCADcCBCAAIAE2AgACQCABQQBIDQBBsBMoAgAgAUwNACABQQJ0QcATaigCAEEBRw0AQYSEASgCACECCyAAIAI2AgQLDgAgAkGx893xeWxBEHYLvgEAIwBBEGsiACQAIABBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAQRBqJAAgAkGx893xeWxBEHYLuQEBAX8jAEEQayIBJAAgAUEAOgAIQYCBAUECNgIAQfyAAUEDNgIAQfiAAUEENgIAQfSAAUEFNgIAQfCAAUEGNgIAQeyAAUEHNgIAQeiAAUEINgIAQeSAAUEJNgIAQeCAAUEKNgIAQdyAAUELNgIAQdiAAUEMNgIAQdSAAUENNgIAQdCAAUEONgIAQcyAAUEPNgIAQciAAUEQNgIAQcSAAUERNgIAQcCAAUESNgIAIAAQjgEgAUEQaiQAC78BAQF/IwBBEGsiAiQAIAJBADoACEGAgQFBAjYCAEH8gAFBAzYCAEH4gAFBBDYCAEH0gAFBBTYCAEHwgAFBBjYCAEHsgAFBBzYCAEHogAFBCDYCAEHkgAFBCTYCAEHggAFBCjYCAEHcgAFBCzYCAEHYgAFBDDYCAEHUgAFBDTYCAEHQgAFBDjYCAEHMgAFBDzYCAEHIgAFBEDYCAEHEgAFBETYCAEHAgAFBEjYCACAAIAEQkAEhACACQRBqJAAgAAu+AQEBfyMAQRBrIgIkACACQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABEFohACACQRBqJAAgAAu+AQEBfyMAQRBrIgIkACACQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABEFshACACQRBqJAAgAAu9AQEBfyMAQRBrIgMkACADQQA6AAhBgIEBQQI2AgBB/IABQQM2AgBB+IABQQQ2AgBB9IABQQU2AgBB8IABQQY2AgBB7IABQQc2AgBB6IABQQg2AgBB5IABQQk2AgBB4IABQQo2AgBB3IABQQs2AgBB2IABQQw2AgBB1IABQQ02AgBB0IABQQ42AgBBzIABQQ82AgBByIABQRA2AgBBxIABQRE2AgBBwIABQRI2AgAgACABIAIQjwEgA0EQaiQAC4UBAgR/AX4jAEEQayIBJAACQCAAKQMwUARADAELA0ACQCAAIAVBACABQQ9qIAFBCGoQZiIEQX9GDQAgAS0AD0EDRw0AIAIgASgCCEGAgICAf3FBgICAgHpGaiECC0F/IQMgBEF/Rg0BIAIhAyAFQgF8IgUgACkDMFQNAAsLIAFBEGokACADCwuMdSUAQYAIC7ELaW5zdWZmaWNpZW50IG1lbW9yeQBuZWVkIGRpY3Rpb25hcnkALSsgICAwWDB4AFppcCBhcmNoaXZlIGluY29uc2lzdGVudABJbnZhbGlkIGFyZ3VtZW50AGludmFsaWQgbGl0ZXJhbC9sZW5ndGhzIHNldABpbnZhbGlkIGNvZGUgbGVuZ3RocyBzZXQAdW5rbm93biBoZWFkZXIgZmxhZ3Mgc2V0AGludmFsaWQgZGlzdGFuY2VzIHNldABpbnZhbGlkIGJpdCBsZW5ndGggcmVwZWF0AEZpbGUgYWxyZWFkeSBleGlzdHMAdG9vIG1hbnkgbGVuZ3RoIG9yIGRpc3RhbmNlIHN5bWJvbHMAaW52YWxpZCBzdG9yZWQgYmxvY2sgbGVuZ3RocwAlcyVzJXMAYnVmZmVyIGVycm9yAE5vIGVycm9yAHN0cmVhbSBlcnJvcgBUZWxsIGVycm9yAEludGVybmFsIGVycm9yAFNlZWsgZXJyb3IAV3JpdGUgZXJyb3IAZmlsZSBlcnJvcgBSZWFkIGVycm9yAFpsaWIgZXJyb3IAZGF0YSBlcnJvcgBDUkMgZXJyb3IAaW5jb21wYXRpYmxlIHZlcnNpb24AaW52YWxpZCBjb2RlIC0tIG1pc3NpbmcgZW5kLW9mLWJsb2NrAGluY29ycmVjdCBoZWFkZXIgY2hlY2sAaW5jb3JyZWN0IGxlbmd0aCBjaGVjawBpbmNvcnJlY3QgZGF0YSBjaGVjawBpbnZhbGlkIGRpc3RhbmNlIHRvbyBmYXIgYmFjawBoZWFkZXIgY3JjIG1pc21hdGNoADEuMi4xMy56bGliLW5nAGludmFsaWQgd2luZG93IHNpemUAUmVhZC1vbmx5IGFyY2hpdmUATm90IGEgemlwIGFyY2hpdmUAUmVzb3VyY2Ugc3RpbGwgaW4gdXNlAE1hbGxvYyBmYWlsdXJlAGludmFsaWQgYmxvY2sgdHlwZQBGYWlsdXJlIHRvIGNyZWF0ZSB0ZW1wb3JhcnkgZmlsZQBDYW4ndCBvcGVuIGZpbGUATm8gc3VjaCBmaWxlAFByZW1hdHVyZSBlbmQgb2YgZmlsZQBDYW4ndCByZW1vdmUgZmlsZQBpbnZhbGlkIGxpdGVyYWwvbGVuZ3RoIGNvZGUAaW52YWxpZCBkaXN0YW5jZSBjb2RlAHVua25vd24gY29tcHJlc3Npb24gbWV0aG9kAHN0cmVhbSBlbmQAQ29tcHJlc3NlZCBkYXRhIGludmFsaWQATXVsdGktZGlzayB6aXAgYXJjaGl2ZXMgbm90IHN1cHBvcnRlZABPcGVyYXRpb24gbm90IHN1cHBvcnRlZABFbmNyeXB0aW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAENvbXByZXNzaW9uIG1ldGhvZCBub3Qgc3VwcG9ydGVkAEVudHJ5IGhhcyBiZWVuIGRlbGV0ZWQAQ29udGFpbmluZyB6aXAgYXJjaGl2ZSB3YXMgY2xvc2VkAENsb3NpbmcgemlwIGFyY2hpdmUgZmFpbGVkAFJlbmFtaW5nIHRlbXBvcmFyeSBmaWxlIGZhaWxlZABFbnRyeSBoYXMgYmVlbiBjaGFuZ2VkAE5vIHBhc3N3b3JkIHByb3ZpZGVkAFdyb25nIHBhc3N3b3JkIHByb3ZpZGVkAFVua25vd24gZXJyb3IgJWQAQUUAKG51bGwpADogAFBLBgcAUEsGBgBQSwUGAFBLAwQAUEsBAgAAAAA/BQAAwAcAAJMIAAB4CAAAbwUAAJEFAAB6BQAAsgUAAFYIAAAbBwAA1gQAAAsHAADqBgAAnAUAAMgGAACyCAAAHggAACgHAABHBAAAoAYAAGAFAAAuBAAAPgcAAD8IAAD+BwAAjgYAAMkIAADeCAAA5gcAALIGAABVBQAAqAcAACAAQcgTCxEBAAAAAQAAAAEAAAABAAAAAQBB7BMLCQEAAAABAAAAAgBBmBQLAQEAQbgUCwEBAEHSFAukLDomOyZlJmYmYyZgJiIg2CXLJdklQiZAJmomayY8JrolxCWVITwgtgCnAKwlqCGRIZMhkiGQIR8ilCGyJbwlIAAhACIAIwAkACUAJgAnACgAKQAqACsALAAtAC4ALwAwADEAMgAzADQANQA2ADcAOAA5ADoAOwA8AD0APgA/AEAAQQBCAEMARABFAEYARwBIAEkASgBLAEwATQBOAE8AUABRAFIAUwBUAFUAVgBXAFgAWQBaAFsAXABdAF4AXwBgAGEAYgBjAGQAZQBmAGcAaABpAGoAawBsAG0AbgBvAHAAcQByAHMAdAB1AHYAdwB4AHkAegB7AHwAfQB+AAIjxwD8AOkA4gDkAOAA5QDnAOoA6wDoAO8A7gDsAMQAxQDJAOYAxgD0APYA8gD7APkA/wDWANwAogCjAKUApyCSAeEA7QDzAPoA8QDRAKoAugC/ABAjrAC9ALwAoQCrALsAkSWSJZMlAiUkJWElYiVWJVUlYyVRJVclXSVcJVslECUUJTQlLCUcJQAlPCVeJV8lWiVUJWklZiVgJVAlbCVnJWglZCVlJVklWCVSJVMlayVqJRglDCWIJYQljCWQJYAlsQPfAJMDwAOjA8MDtQDEA6YDmAOpA7QDHiLGA7UDKSJhIrEAZSJkIiAjISP3AEgisAAZIrcAGiJ/ILIAoCWgAAAAAACWMAd3LGEO7rpRCZkZxG0Hj/RqcDWlY+mjlWSeMojbDqS43Hke6dXgiNnSlytMtgm9fLF+By2455Edv5BkELcd8iCwakhxufPeQb6EfdTaGuvk3W1RtdT0x4XTg1aYbBPAqGtkevli/ezJZYpPXAEU2WwGY2M9D/r1DQiNyCBuO14QaUzkQWDVcnFnotHkAzxH1ARL/YUN0mu1CqX6qLU1bJiyQtbJu9tA+bys42zYMnVc30XPDdbcWT3Rq6ww2SY6AN5RgFHXyBZh0L+19LQhI8SzVpmVus8Ppb24nrgCKAiIBV+y2QzGJOkLsYd8by8RTGhYqx1hwT0tZraQQdx2BnHbAbwg0pgqENXviYWxcR+1tgal5L+fM9S46KLJB3g0+QAPjqgJlhiYDuG7DWp/LT1tCJdsZJEBXGPm9FFra2JhbBzYMGWFTgBi8u2VBmx7pQEbwfQIglfED/XG2bBlUOm3Euq4vot8iLn83x3dYkkt2hXzfNOMZUzU+1hhsk3OUbU6dAC8o+Iwu9RBpd9K15XYPW3E0aT79NbTaulpQ/zZbjRGiGet0Lhg2nMtBETlHQMzX0wKqsl8Dd08cQVQqkECJxAQC76GIAzJJbVoV7OFbyAJ1Ga5n+Rhzg753l6YydkpIpjQsLSo18cXPbNZgQ20LjtcvbetbLrAIIO47bazv5oM4rYDmtKxdDlH1eqvd9KdFSbbBIMW3HMSC2PjhDtklD5qbQ2oWmp6C88O5J3/CZMnrgAKsZ4HfUSTD/DSowiHaPIBHv7CBmldV2L3y2dlgHE2bBnnBmtudhvU/uAr04laetoQzErdZ2/fufn5776OQ763F9WOsGDoo9bWfpPRocTC2DhS8t9P8We70WdXvKbdBrU/SzaySNorDdhMGwqv9koDNmB6BEHD72DfVd9nqO+ObjF5vmlGjLNhyxqDZryg0m8lNuJoUpV3DMwDRwu7uRYCIi8mBVW+O7rFKAu9spJatCsEarNcp//XwjHP0LWLntksHa7eW7DCZJsm8mPsnKNqdQqTbQKpBgmcPzYO64VnB3ITVwAFgkq/lRR6uOKuK7F7OBu2DJuO0pINvtXlt+/cfCHf2wvU0tOGQuLU8fiz3Whug9ofzRa+gVsmufbhd7Bvd0e3GOZaCIhwag//yjsGZlwLARH/nmWPaa5i+NP/a2FFz2wWeOIKoO7SDddUgwROwrMDOWEmZ6f3FmDQTUdpSdt3bj5KatGu3FrW2WYL30DwO9g3U668qcWeu95/z7JH6f+1MBzyvb2KwrrKMJOzU6ajtCQFNtC6kwbXzSlX3lS/Z9kjLnpms7hKYcQCG2hdlCtvKje+C7ShjgzDG98FWo3vAi0AAAAARjtnZYx2zsrKTamvWevtTh/QiivVnSOEk6ZE4bLW25307bz4PqAVV3ibcjLrPTbTrQZRtmdL+BkhcJ98JavG4GOQoYWp3Qgq7+ZvT3xAK646e0zL8DblZLYNggGXfR190UZ6GBsL07ddMLTSzpbwM4itl1ZC4D75BNtZnAtQ/BpNa5t/hyYy0MEdVbVSuxFUFIB2Md7N356Y9rj7uYYnh/+9QOI18OlNc8uOKOBtysmmVq2sbBsEAyogY2Yu+zr6aMBdn6KN9DDktpNVdxDXtDErsNH7Zhl+vV1+G5wt4WfaFoYCEFsvrVZgSMjFxgwpg/1rTEmwwuMPi6WGFqD4NVCbn1Ca1jb/3O1Rmk9LFXsJcHIewz3bsYUGvNSkdiOo4k1EzSgA7WJuO4oH/Z3O5rumqYNx6wAsN9BnSTMLPtV1MFmwv33wH/lGl3pq4NObLNu0/uaWHVGgrXo0gd3lSMfmgi0NqyuCS5BM59g2CAaeDW9jVEDGzBJ7oakd8AQvW8tjSpGGyuXXva2ARBvpYQIgjgTIbSerjlZAzq8m37LpHbjXI1AReGVrdh32zTL8sPZVmXq7/DY8gJtTOFvCz35gpaq0LQwF8hZrYGGwL4Eni0jk7cbhS6v9hi6KjRlSzLZ+Nwb715hAwLD902b0HJVdk3lfEDrWGStdsyxA8Wtqe5YOoDY/oeYNWMR1qxwlM5B7QPnd0u+/5rWKnpYq9titTZMS4OQ8VNuDWcd9x7iBRqDdSwsJcg0wbhcJ6zeLT9BQ7oWd+UHDpp4kUADaxRY7vaDcdhQPmk1zars97Bb9BotzN0si3HFwRbni1gFYpO1mPW6gz5Iom6j3JxANcWErahSrZsO77V2k3n774D84wIda8o0u9bS2SZCVxtbs0/2xiRmwGCZfi39DzC07oooWXMdAW/VoBmCSDQK7y5FEgKz0js0FW8j2Yj5bUCbfHWtButcm6BWRHY9wsG0QDPZWd2k8G97GeiC5o+mG/UKvvZonZfAziCPLVO064AlefNtuO7aWx5TwraDxYwvkECUwg3XvfSraqUZNv4g20sPODbWmBEAcCUJ7e2zR3T+Nl+ZY6F2r8UcbkJYiH0vPvllwqNuTPQF01QZmEUagIvAAm0WVytbsOozti1+tnRQj66ZzRiHr2uln0L2M9Hb5bbJNngh4ADenPjtQwjGw9UR3i5IhvcY7jvv9XOtoWxgKLmB/b+Qt1sCiFrGlg2Yu2cVdSbwPEOATSSuHdtqNw5ectqTyVvsNXRDAajgUGzOkUiBUwZht/W7eVpoLTfDe6gvLuY/BhhAgh713RabN6Dng9o9cKrsm82yAQZb/JgV3uR1iEnNQy701a6zYAAAAAFiA4tfxBrR0qYZWo+INaOm6jYo+EwvcnUuLPkqFHaEJ3Z1D3nQbFX0sm/eqZxDJ4D+QKzeWFn2UzpafQwo7QhNSu6DE+z32Z6O9FLDoNir6sLbILRkwno5BsHxZjybjGtemAc1+IFduJqC1uW0ri/M1q2kknC0/h8St3VAUdoQmTPZm8eVwMFK98NKF9nvsz677DhgHfVi7X/26bJFrJS/J68f4YG2RWzjtc4xzZk3GK+avEYJg+bLa4BtlHk3GNUbNJOLvS3JBt8uQlvxArtykwEwLDUYaqFXG+H+bUGc8w9CF62pW00gy1jGfeV0P1SHd7QKIW7uh0NtZdijsCE1wbOqa2eq8OYFqXu7K4WCkkmGCczvn1NBjZzYHrfGpRPVxS5Nc9x0wBHf/50/8wa0XfCN6vvp12eZ6lw4i10peeleoidPR/iqLURz9wNoit5hawGAx3JbDaVx0FKfK61f/SgmAVsxfIw5MvfRFx4O+HUdhabTBN8rsQdUdPJqMa2QabrzNnDgflRzayN6X5IKGFwZVL5FQ9ncRsiG5hy1i4QfPtUiBmRYQAXvBW4pFiwMKp1yqjPH/8gwTKDahznhuISyvx6d6DJ8nmNvUrKaRjCxERiWqEuV9KvAys7xvces8jaZCutsFGjo50lGxB5gJMeVPoLez7Pg3UTtQ2BGaCFjzTaHepe75Xkc5stV5c+pVm6RD080HG1Mv0NXFsJONRVJEJMME53xD5jA3yNh6b0g6rcbObA6eTo7ZWuNTiQJjsV6r5ef982UFKrjuO2Dgbtm3SeiPFBFobcPf/vKAh34QVy74RvR2eKQjPfOaaWVzeL7M9S4dlHXMykSulbwcLndrtaghyO0owx+mo/1V/iMfglelSSEPJav2wbM0tZkz1mIwtYDBaDViFiO+XFx7Pr6L0rjoKIo4Cv9OldevFhU1eL+TY9vnE4EMrJi/RvQYXZFdngsyBR7p5cuIdqaTCJRxOo7C0mIOIAUphR5PcQX8mNiDqjuAA0jseDQZ1yC0+wCJMq2j0bJPdJo5cT7CuZPpaz/FSjO/J539KbjepalaCQwvDKpUr+59HyTQN0ekMuDuImRDtqKGlHIPW8Qqj7kTgwnvsNuJDWeQAjMtyILR+mEEh1k5hGWO9xL6za+SGBoGFE65XpSsbhUfkiRNn3Dz5BkmULyZxIdsQp3xNMJ/Jp1EKYXFxMtSjk/1GNbPF89/SUFsJ8mju+lfPPix394vGFmIjEDZalsLUlQRU9K2xvpU4GWi1AKyZnnf4j75PTWXf2uWz/+JQYR0twvc9FXcdXIDfy3y4ajjZH7ru+ScPBJiyp9K4ihIAWkWAlnp9NXwb6J2qO9AoQAAAADhtlLvg2vUBWLdhuoG16gL52H65IW8fA5kCi7hDK5RF+0YA/iPxYUSbnPX/Qp5+Rzrz6vziRItGWikf/YYXKMu+erxwZs3dyt6gSXEHosLJf89Wcqd4N8gfFaNzxTy8jn1RKDWl5kmPHYvdNMSJVoy85MI3ZFOjjdw+NzYMLhGXdEOFLKz05JYUmXAtzZv7lbX2by5tQQ6U1SyaLw8FhdK3aBFpb99w09ey5GgOsG/Qdt37a65qmtEWBw5qyjk5XPJUrecq48xdko5Y5kuM014z4Ufl61YmX1M7suSJEq0ZMX85ounIWBhRpcyjiKdHG/DK06AofbIakBAmoVgcI26gcbfVeMbWb8CrQtQZqclsYcRd17lzPG0BHqjW2ze3K2NaI5C77UIqA4DWkdqCXSmi78mSelioKMI1PJMeCwulJmafHv7R/qRGvGofn77hp+fTdRw/ZBSmhwmAHV0gn+DlTQtbPfpq4YWX/lpclXXiJPjhWfxPgONEIhRYlDIy+exfpkI06Mf4jIVTQ1WH2Pst6kxA9V0t+k0wuUGXGaa8L3QyB/fDU71PrscGlqxMvu7B2AU2drm/jhstBFIlGjJqSI6Jsv/vMwqSe4jTkPAwq/1ki3NKBTHLJ5GKEQ6Od6ljGsxx1Ht2ybnvzRC7ZHVo1vDOsGGRdAgMBc/geZrrmBQOUECjb+r4zvtRIcxw6Vmh5FKBFoXoOXsRU+NSDq5bP5oVg4j7rzvlbxTi5+SsmopwF0I9Ea36UIUWJm6yIB4DJpvGtEchftnTmqfbWCLftsyZBwGtI79sOZhlRSZl3Siy3gWf02S98kffZPDMZxydWNzEKjlmfEet3axXi3zUOh/HDI1+fbTg6sZt4mF+FY/1xc04lH91VQDEr3wfORcRi4LPpuo4d8t+g67J9TvWpGGADhMAOrZ+lIFqQKO3Ui03DIqaVrYy98IN6/VJtZOY3Q5LL7y080IoDylrN/KRBqNJSbHC8/HcVkgo3t3wULNJS4gEKPEwabxK+GW5hQAILT7Yv0yEYNLYP7nQU4fBvcc8GQqmhqFnMj17Ti3AwyO5exuU2MGj+Ux6evvHwgKWU3naITLDYkymeL5ykU6GHwX1XqhkT+bF8PQ/x3tMR6rv958djk0ncBr2/VkFC0U0kbCdg/AKJe5ksfzs7wmEgXuyXDYaCORbjrM0S6gSTCY8qZSRXRMs/Mmo9f5CEI2T1qtVJLcR7UkjqjdgPFePDajsV7rJVu/XXe021dZVTrhC7pYPI1QuYrfv8lyA2coxFGIShnXYquvhY3PpatsLhP5g0zOf2mteC2GxdxScCRqAJ9Gt4Z1pwHUmsML+nsivaiUQGAufqHWfJEAAAAAQ8umh8eQPNSEW5pTzycIc4zsrvQItzSnS3ySIJ5PEObdhLZhWd8sMhoUirVRaBiVEqO+Epb4JEHVM4LGfZlRFz5S95C6CW3D+cLLRLK+WWTxdf/jdS5lsDblwzfj1kHxoB3ndiRGfSVnjduiLPFJgm867wXrYXVWqKrT0foyoy65+QWpPaKf+n5pOX01Fatddt4N2vKFl4mxTjEOZH2zyCe2FU+j7Y8c4CYpm6tau7vokR08bMqHby8BIeiHq/I5xGBUvkA7zu0D8GhqSIz6SgtHXM2PHMaezNdgGRnk4t9aL0RY3nTeC52/eIzWw+qslQhMKxFT1nhSmHD/9GVGXbeu4Noz9XqJcD7cDjtCTi54ieip/NJy+r8Z1H1qKla7KeHwPK26am/ucczopQ1eyObG+E9inWIcIVbEm4n8F0rKN7HNTmwrng2njRlG2x85BRC5voFLI+3CgIVqF7MHrFR4oSvQIzt4k+id/9iUD9+bX6lYHwQzC1zPlYwOV+VzTZxD9MnH2aeKDH8gwXDtAIK7S4cG4NHURSt3U5AY9ZXT01MSV4jJQRRDb8ZfP/3mHPRbYZivwTLbZGe1c860ZDAFEuO0Xoiw95UuN7zpvBf/IhqQe3mAwziyJkTtgaSCrkoCBSoRmFZp2j7RIqas8WFtCnblNpAlpv02oujLjLqrACo9L1uwbmyQFukn7ITJZCciTuB8uB2jtx6adoScXDVPOtuxFKCI8t8GD7mjlC/6aDKofjOo+z34DnyVUt2t1pl7KlLC4XkRCUf+WnXV3hm+c1md5ekK3i5PjQsdzUtI1mvMzI3xn49GVxjEOsU4h/FjvwOq+exAYV9rEvkvlFEyiRPVaRNAlqK1x93eJ+eeFYFgGk4bM1mFvbSMtj9yz32Z9UsmA6YI7aUhQ5E3AQBakYaEAQvVx8qtUm9gfoMsq9gEqPBCV+s75NCgR3bw44zQd2fXSiQkHOyj8S9uZbLkyOI2v1KxdXT0Nj4IZhZ9w8CR+ZhawrpT/EUcrsrnX2VsYNs+9jOY9VC004nClJBCZBMUGf5AV9JYx4Lh2gHBKnyGRXHm1Qa6QFJNxtJyDg109YpW7qbJnUghYTeb8CL8PXemp6ck5WwBo64Qk4Pt2zUEaYCvVypLCdD/eIsWvLMtkTjot8J7IxFFMF+DZXOUJeL3z7+xtAQZNuacacmlV89OIQxVHWLH85opu2G6anDHPe4rXW6t4PvpeNN5LzsY36i/Q0X7/IjjfLf0cVz0P9fbcGRNiDOv6w+bBTje2M6eWVyVBAofXqKNVCIwrRfpliqTsgx50Hmq/gVKKDhGgY6/wtoU7IERsmvKbSBLiaaGzA39HJ9ONroYFAQAAJ0HAAAsCQAAhgUAAEgFAACnBQAAAAQAADIFAAC8BQAALAkAQYDBAAv3CQwACACMAAgATAAIAMwACAAsAAgArAAIAGwACADsAAgAHAAIAJwACABcAAgA3AAIADwACAC8AAgAfAAIAPwACAACAAgAggAIAEIACADCAAgAIgAIAKIACABiAAgA4gAIABIACACSAAgAUgAIANIACAAyAAgAsgAIAHIACADyAAgACgAIAIoACABKAAgAygAIACoACACqAAgAagAIAOoACAAaAAgAmgAIAFoACADaAAgAOgAIALoACAB6AAgA+gAIAAYACACGAAgARgAIAMYACAAmAAgApgAIAGYACADmAAgAFgAIAJYACABWAAgA1gAIADYACAC2AAgAdgAIAPYACAAOAAgAjgAIAE4ACADOAAgALgAIAK4ACABuAAgA7gAIAB4ACACeAAgAXgAIAN4ACAA+AAgAvgAIAH4ACAD+AAgAAQAIAIEACABBAAgAwQAIACEACAChAAgAYQAIAOEACAARAAgAkQAIAFEACADRAAgAMQAIALEACABxAAgA8QAIAAkACACJAAgASQAIAMkACAApAAgAqQAIAGkACADpAAgAGQAIAJkACABZAAgA2QAIADkACAC5AAgAeQAIAPkACAAFAAgAhQAIAEUACADFAAgAJQAIAKUACABlAAgA5QAIABUACACVAAgAVQAIANUACAA1AAgAtQAIAHUACAD1AAgADQAIAI0ACABNAAgAzQAIAC0ACACtAAgAbQAIAO0ACAAdAAgAnQAIAF0ACADdAAgAPQAIAL0ACAB9AAgA/QAIABMACQATAQkAkwAJAJMBCQBTAAkAUwEJANMACQDTAQkAMwAJADMBCQCzAAkAswEJAHMACQBzAQkA8wAJAPMBCQALAAkACwEJAIsACQCLAQkASwAJAEsBCQDLAAkAywEJACsACQArAQkAqwAJAKsBCQBrAAkAawEJAOsACQDrAQkAGwAJABsBCQCbAAkAmwEJAFsACQBbAQkA2wAJANsBCQA7AAkAOwEJALsACQC7AQkAewAJAHsBCQD7AAkA+wEJAAcACQAHAQkAhwAJAIcBCQBHAAkARwEJAMcACQDHAQkAJwAJACcBCQCnAAkApwEJAGcACQBnAQkA5wAJAOcBCQAXAAkAFwEJAJcACQCXAQkAVwAJAFcBCQDXAAkA1wEJADcACQA3AQkAtwAJALcBCQB3AAkAdwEJAPcACQD3AQkADwAJAA8BCQCPAAkAjwEJAE8ACQBPAQkAzwAJAM8BCQAvAAkALwEJAK8ACQCvAQkAbwAJAG8BCQDvAAkA7wEJAB8ACQAfAQkAnwAJAJ8BCQBfAAkAXwEJAN8ACQDfAQkAPwAJAD8BCQC/AAkAvwEJAH8ACQB/AQkA/wAJAP8BCQAAAAcAQAAHACAABwBgAAcAEAAHAFAABwAwAAcAcAAHAAgABwBIAAcAKAAHAGgABwAYAAcAWAAHADgABwB4AAcABAAHAEQABwAkAAcAZAAHABQABwBUAAcANAAHAHQABwADAAgAgwAIAEMACADDAAgAIwAIAKMACABjAAgA4wAIAAAABQAQAAUACAAFABgABQAEAAUAFAAFAAwABQAcAAUAAgAFABIABQAKAAUAGgAFAAYABQAWAAUADgAFAB4ABQABAAUAEQAFAAkABQAZAAUABQAFABUABQANAAUAHQAFAAMABQATAAUACwAFABsABQAHAAUAFwAFAEGBywAL7AYBAgMEBAUFBgYGBgcHBwcICAgICAgICAkJCQkJCQkJCgoKCgoKCgoKCgoKCgoKCgsLCwsLCwsLCwsLCwsLCwsMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDA0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDQ0NDg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg4ODg8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8AABAREhITExQUFBQVFRUVFhYWFhYWFhYXFxcXFxcXFxgYGBgYGBgYGBgYGBgYGBgZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwcHBwdHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dAAECAwQFBgcICAkJCgoLCwwMDAwNDQ0NDg4ODg8PDw8QEBAQEBAQEBEREREREREREhISEhISEhITExMTExMTExQUFBQUFBQUFBQUFBQUFBQVFRUVFRUVFRUVFRUVFRUVFhYWFhYWFhYWFhYWFhYWFhcXFxcXFxcXFxcXFxcXFxcYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBgYGBkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhoaGhobGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbGxsbHAAAAAABAAAAAgAAAAMAAAAEAAAABQAAAAYAAAAHAAAACAAAAAoAAAAMAAAADgAAABAAAAAUAAAAGAAAABwAAAAgAAAAKAAAADAAAAA4AAAAQAAAAFAAAABgAAAAcAAAAIAAAACgAAAAwAAAAOAAQYTSAAutAQEAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAQAAAAGAAAACAAAAAwAAAAAABAACAAQAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAAIAAAADAAAABAAAAAYAAAgCAAAMApAAABAQAAHgEAAA8AAAAAJQAAQCoAAAAAAAAeAAAADwAAAAAAAADAKgAAAAAAABMAAAAHAEHg0wALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHQ1AALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEGA1gALIwIAAAADAAAABwAAAAAAAAAQERIACAcJBgoFCwQMAw0CDgEPAEHQ1gALTQEAAAABAAAAAQAAAAEAAAACAAAAAgAAAAIAAAACAAAAAwAAAAMAAAADAAAAAwAAAAQAAAAEAAAABAAAAAQAAAAFAAAABQAAAAUAAAAFAEHA1wALZQEAAAABAAAAAgAAAAIAAAADAAAAAwAAAAQAAAAEAAAABQAAAAUAAAAGAAAABgAAAAcAAAAHAAAACAAAAAgAAAAJAAAACQAAAAoAAAAKAAAACwAAAAsAAAAMAAAADAAAAA0AAAANAEG42AALASwAQcTYAAthLQAAAAQABAAIAAQALgAAAAQABgAQAAYALwAAAAQADAAgABgALwAAAAgAEAAgACAALwAAAAgAEACAAIAALwAAAAgAIACAAAABMAAAACAAgAACAQAEMAAAACAAAgECAQAQMABBsNkAC6UTAwAEAAUABgAHAAgACQAKAAsADQAPABEAEwAXABsAHwAjACsAMwA7AEMAUwBjAHMAgwCjAMMA4wACAQAAAAAAABAAEAAQABAAEAAQABAAEAARABEAEQARABIAEgASABIAEwATABMAEwAUABQAFAAUABUAFQAVABUAEABNAMoAAAABAAIAAwAEAAUABwAJAA0AEQAZACEAMQBBAGEAgQDBAAEBgQEBAgEDAQQBBgEIAQwBEAEYASABMAFAAWAAAAAAEAAQABAAEAARABEAEgASABMAEwAUABQAFQAVABYAFgAXABcAGAAYABkAGQAaABoAGwAbABwAHAAdAB0AQABAAGAHAAAACFAAAAgQABQIcwASBx8AAAhwAAAIMAAACcAAEAcKAAAIYAAACCAAAAmgAAAIAAAACIAAAAhAAAAJ4AAQBwYAAAhYAAAIGAAACZAAEwc7AAAIeAAACDgAAAnQABEHEQAACGgAAAgoAAAJsAAACAgAAAiIAAAISAAACfAAEAcEAAAIVAAACBQAFQjjABMHKwAACHQAAAg0AAAJyAARBw0AAAhkAAAIJAAACagAAAgEAAAIhAAACEQAAAnoABAHCAAACFwAAAgcAAAJmAAUB1MAAAh8AAAIPAAACdgAEgcXAAAIbAAACCwAAAm4AAAIDAAACIwAAAhMAAAJ+AAQBwMAAAhSAAAIEgAVCKMAEwcjAAAIcgAACDIAAAnEABEHCwAACGIAAAgiAAAJpAAACAIAAAiCAAAIQgAACeQAEAcHAAAIWgAACBoAAAmUABQHQwAACHoAAAg6AAAJ1AASBxMAAAhqAAAIKgAACbQAAAgKAAAIigAACEoAAAn0ABAHBQAACFYAAAgWAEAIAAATBzMAAAh2AAAINgAACcwAEQcPAAAIZgAACCYAAAmsAAAIBgAACIYAAAhGAAAJ7AAQBwkAAAheAAAIHgAACZwAFAdjAAAIfgAACD4AAAncABIHGwAACG4AAAguAAAJvAAACA4AAAiOAAAITgAACfwAYAcAAAAIUQAACBEAFQiDABIHHwAACHEAAAgxAAAJwgAQBwoAAAhhAAAIIQAACaIAAAgBAAAIgQAACEEAAAniABAHBgAACFkAAAgZAAAJkgATBzsAAAh5AAAIOQAACdIAEQcRAAAIaQAACCkAAAmyAAAICQAACIkAAAhJAAAJ8gAQBwQAAAhVAAAIFQAQCAIBEwcrAAAIdQAACDUAAAnKABEHDQAACGUAAAglAAAJqgAACAUAAAiFAAAIRQAACeoAEAcIAAAIXQAACB0AAAmaABQHUwAACH0AAAg9AAAJ2gASBxcAAAhtAAAILQAACboAAAgNAAAIjQAACE0AAAn6ABAHAwAACFMAAAgTABUIwwATByMAAAhzAAAIMwAACcYAEQcLAAAIYwAACCMAAAmmAAAIAwAACIMAAAhDAAAJ5gAQBwcAAAhbAAAIGwAACZYAFAdDAAAIewAACDsAAAnWABIHEwAACGsAAAgrAAAJtgAACAsAAAiLAAAISwAACfYAEAcFAAAIVwAACBcAQAgAABMHMwAACHcAAAg3AAAJzgARBw8AAAhnAAAIJwAACa4AAAgHAAAIhwAACEcAAAnuABAHCQAACF8AAAgfAAAJngAUB2MAAAh/AAAIPwAACd4AEgcbAAAIbwAACC8AAAm+AAAIDwAACI8AAAhPAAAJ/gBgBwAAAAhQAAAIEAAUCHMAEgcfAAAIcAAACDAAAAnBABAHCgAACGAAAAggAAAJoQAACAAAAAiAAAAIQAAACeEAEAcGAAAIWAAACBgAAAmRABMHOwAACHgAAAg4AAAJ0QARBxEAAAhoAAAIKAAACbEAAAgIAAAIiAAACEgAAAnxABAHBAAACFQAAAgUABUI4wATBysAAAh0AAAINAAACckAEQcNAAAIZAAACCQAAAmpAAAIBAAACIQAAAhEAAAJ6QAQBwgAAAhcAAAIHAAACZkAFAdTAAAIfAAACDwAAAnZABIHFwAACGwAAAgsAAAJuQAACAwAAAiMAAAITAAACfkAEAcDAAAIUgAACBIAFQijABMHIwAACHIAAAgyAAAJxQARBwsAAAhiAAAIIgAACaUAAAgCAAAIggAACEIAAAnlABAHBwAACFoAAAgaAAAJlQAUB0MAAAh6AAAIOgAACdUAEgcTAAAIagAACCoAAAm1AAAICgAACIoAAAhKAAAJ9QAQBwUAAAhWAAAIFgBACAAAEwczAAAIdgAACDYAAAnNABEHDwAACGYAAAgmAAAJrQAACAYAAAiGAAAIRgAACe0AEAcJAAAIXgAACB4AAAmdABQHYwAACH4AAAg+AAAJ3QASBxsAAAhuAAAILgAACb0AAAgOAAAIjgAACE4AAAn9AGAHAAAACFEAAAgRABUIgwASBx8AAAhxAAAIMQAACcMAEAcKAAAIYQAACCEAAAmjAAAIAQAACIEAAAhBAAAJ4wAQBwYAAAhZAAAIGQAACZMAEwc7AAAIeQAACDkAAAnTABEHEQAACGkAAAgpAAAJswAACAkAAAiJAAAISQAACfMAEAcEAAAIVQAACBUAEAgCARMHKwAACHUAAAg1AAAJywARBw0AAAhlAAAIJQAACasAAAgFAAAIhQAACEUAAAnrABAHCAAACF0AAAgdAAAJmwAUB1MAAAh9AAAIPQAACdsAEgcXAAAIbQAACC0AAAm7AAAIDQAACI0AAAhNAAAJ+wAQBwMAAAhTAAAIEwAVCMMAEwcjAAAIcwAACDMAAAnHABEHCwAACGMAAAgjAAAJpwAACAMAAAiDAAAIQwAACecAEAcHAAAIWwAACBsAAAmXABQHQwAACHsAAAg7AAAJ1wASBxMAAAhrAAAIKwAACbcAAAgLAAAIiwAACEsAAAn3ABAHBQAACFcAAAgXAEAIAAATBzMAAAh3AAAINwAACc8AEQcPAAAIZwAACCcAAAmvAAAIBwAACIcAAAhHAAAJ7wAQBwkAAAhfAAAIHwAACZ8AFAdjAAAIfwAACD8AAAnfABIHGwAACG8AAAgvAAAJvwAACA8AAAiPAAAITwAACf8AEAUBABcFAQETBREAGwUBEBEFBQAZBQEEFQVBAB0FAUAQBQMAGAUBAhQFIQAcBQEgEgUJABoFAQgWBYEAQAUAABAFAgAXBYEBEwUZABsFARgRBQcAGQUBBhUFYQAdBQFgEAUEABgFAQMUBTEAHAUBMBIFDQAaBQEMFgXBAEAFAAAQABEAEgAAAAgABwAJAAYACgAFAAsABAAMAAMADQACAA4AAQAPAEHg7AALQREACgAREREAAAAABQAAAAAAAAkAAAAACwAAAAAAAAAAEQAPChEREQMKBwABAAkLCwAACQYLAAALAAYRAAAAERERAEGx7QALIQsAAAAAAAAAABEACgoREREACgAAAgAJCwAAAAkACwAACwBB6+0ACwEMAEH37QALFQwAAAAADAAAAAAJDAAAAAAADAAADABBpe4ACwEOAEGx7gALFQ0AAAAEDQAAAAAJDgAAAAAADgAADgBB3+4ACwEQAEHr7gALHg8AAAAADwAAAAAJEAAAAAAAEAAAEAAAEgAAABISEgBBou8ACw4SAAAAEhISAAAAAAAACQBB0+8ACwELAEHf7wALFQoAAAAACgAAAAAJCwAAAAAACwAACwBBjfAACwEMAEGZ8AALJwwAAAAADAAAAAAJDAAAAAAADAAADAAAMDEyMzQ1Njc4OUFCQ0RFRgBB5PAACwE+AEGL8QALBf//////AEHQ8QALVxkSRDsCPyxHFD0zMAobBkZLRTcPSQ6OFwNAHTxpKzYfSi0cASAlKSEIDBUWIi4QOD4LNDEYZHR1di9BCX85ESNDMkKJiosFBCYoJw0qHjWMBxpIkxOUlQBBsPIAC4oOSWxsZWdhbCBieXRlIHNlcXVlbmNlAERvbWFpbiBlcnJvcgBSZXN1bHQgbm90IHJlcHJlc2VudGFibGUATm90IGEgdHR5AFBlcm1pc3Npb24gZGVuaWVkAE9wZXJhdGlvbiBub3QgcGVybWl0dGVkAE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkATm8gc3VjaCBwcm9jZXNzAEZpbGUgZXhpc3RzAFZhbHVlIHRvbyBsYXJnZSBmb3IgZGF0YSB0eXBlAE5vIHNwYWNlIGxlZnQgb24gZGV2aWNlAE91dCBvZiBtZW1vcnkAUmVzb3VyY2UgYnVzeQBJbnRlcnJ1cHRlZCBzeXN0ZW0gY2FsbABSZXNvdXJjZSB0ZW1wb3JhcmlseSB1bmF2YWlsYWJsZQBJbnZhbGlkIHNlZWsAQ3Jvc3MtZGV2aWNlIGxpbmsAUmVhZC1vbmx5IGZpbGUgc3lzdGVtAERpcmVjdG9yeSBub3QgZW1wdHkAQ29ubmVjdGlvbiByZXNldCBieSBwZWVyAE9wZXJhdGlvbiB0aW1lZCBvdXQAQ29ubmVjdGlvbiByZWZ1c2VkAEhvc3QgaXMgZG93bgBIb3N0IGlzIHVucmVhY2hhYmxlAEFkZHJlc3MgaW4gdXNlAEJyb2tlbiBwaXBlAEkvTyBlcnJvcgBObyBzdWNoIGRldmljZSBvciBhZGRyZXNzAEJsb2NrIGRldmljZSByZXF1aXJlZABObyBzdWNoIGRldmljZQBOb3QgYSBkaXJlY3RvcnkASXMgYSBkaXJlY3RvcnkAVGV4dCBmaWxlIGJ1c3kARXhlYyBmb3JtYXQgZXJyb3IASW52YWxpZCBhcmd1bWVudABBcmd1bWVudCBsaXN0IHRvbyBsb25nAFN5bWJvbGljIGxpbmsgbG9vcABGaWxlbmFtZSB0b28gbG9uZwBUb28gbWFueSBvcGVuIGZpbGVzIGluIHN5c3RlbQBObyBmaWxlIGRlc2NyaXB0b3JzIGF2YWlsYWJsZQBCYWQgZmlsZSBkZXNjcmlwdG9yAE5vIGNoaWxkIHByb2Nlc3MAQmFkIGFkZHJlc3MARmlsZSB0b28gbGFyZ2UAVG9vIG1hbnkgbGlua3MATm8gbG9ja3MgYXZhaWxhYmxlAFJlc291cmNlIGRlYWRsb2NrIHdvdWxkIG9jY3VyAFN0YXRlIG5vdCByZWNvdmVyYWJsZQBQcmV2aW91cyBvd25lciBkaWVkAE9wZXJhdGlvbiBjYW5jZWxlZABGdW5jdGlvbiBub3QgaW1wbGVtZW50ZWQATm8gbWVzc2FnZSBvZiBkZXNpcmVkIHR5cGUASWRlbnRpZmllciByZW1vdmVkAERldmljZSBub3QgYSBzdHJlYW0ATm8gZGF0YSBhdmFpbGFibGUARGV2aWNlIHRpbWVvdXQAT3V0IG9mIHN0cmVhbXMgcmVzb3VyY2VzAExpbmsgaGFzIGJlZW4gc2V2ZXJlZABQcm90b2NvbCBlcnJvcgBCYWQgbWVzc2FnZQBGaWxlIGRlc2NyaXB0b3IgaW4gYmFkIHN0YXRlAE5vdCBhIHNvY2tldABEZXN0aW5hdGlvbiBhZGRyZXNzIHJlcXVpcmVkAE1lc3NhZ2UgdG9vIGxhcmdlAFByb3RvY29sIHdyb25nIHR5cGUgZm9yIHNvY2tldABQcm90b2NvbCBub3QgYXZhaWxhYmxlAFByb3RvY29sIG5vdCBzdXBwb3J0ZWQAU29ja2V0IHR5cGUgbm90IHN1cHBvcnRlZABOb3Qgc3VwcG9ydGVkAFByb3RvY29sIGZhbWlseSBub3Qgc3VwcG9ydGVkAEFkZHJlc3MgZmFtaWx5IG5vdCBzdXBwb3J0ZWQgYnkgcHJvdG9jb2wAQWRkcmVzcyBub3QgYXZhaWxhYmxlAE5ldHdvcmsgaXMgZG93bgBOZXR3b3JrIHVucmVhY2hhYmxlAENvbm5lY3Rpb24gcmVzZXQgYnkgbmV0d29yawBDb25uZWN0aW9uIGFib3J0ZWQATm8gYnVmZmVyIHNwYWNlIGF2YWlsYWJsZQBTb2NrZXQgaXMgY29ubmVjdGVkAFNvY2tldCBub3QgY29ubmVjdGVkAENhbm5vdCBzZW5kIGFmdGVyIHNvY2tldCBzaHV0ZG93bgBPcGVyYXRpb24gYWxyZWFkeSBpbiBwcm9ncmVzcwBPcGVyYXRpb24gaW4gcHJvZ3Jlc3MAU3RhbGUgZmlsZSBoYW5kbGUAUmVtb3RlIEkvTyBlcnJvcgBRdW90YSBleGNlZWRlZABObyBtZWRpdW0gZm91bmQAV3JvbmcgbWVkaXVtIHR5cGUATm8gZXJyb3IgaW5mb3JtYXRpb24AQcCAAQuFARMAAAAUAAAAFQAAABYAAAAXAAAAGAAAABkAAAAaAAAAGwAAABwAAAAdAAAAHgAAAB8AAAAgAAAAIQAAACIAAAAjAAAAgERQADEAAAAyAAAAMwAAADQAAAA1AAAANgAAADcAAAA4AAAAOQAAADIAAAAzAAAANAAAADUAAAA2AAAANwAAADgAQfSCAQsCXEQAQbCDAQsQ/////////////////////w==\";Co(ji)||(ji=P(ji));function eo(Ke){try{if(Ke==ji&&le)return new Uint8Array(le);var st=Me(Ke);if(st)return st;if(R)return R(Ke);throw\"sync fetching of the wasm failed: you can preload it to Module['wasmBinary'] manually, or emcc.py will do that for you when generating HTML (but not JS)\"}catch(St){rs(St)}}function wo(Ke,st){var St,lr,te;try{te=eo(Ke),lr=new WebAssembly.Module(te),St=new WebAssembly.Instance(lr,st)}catch(Oe){var Ee=Oe.toString();throw ee(\"failed to compile wasm module: \"+Ee),(Ee.includes(\"imported Memory\")||Ee.includes(\"memory import\"))&&ee(\"Memory size incompatibility issues may be due to changing INITIAL_MEMORY at runtime to something too large. Use ALLOW_MEMORY_GROWTH to allow any size memory (and also make sure not to set INITIAL_MEMORY at runtime to something smaller than it was at compile time).\"),Oe}return[St,lr]}function QA(){var Ke={a:cu};function st(te,Ee){var Oe=te.exports;r.asm=Oe,Be=r.asm.g,z(Be.buffer),$=r.asm.W,gn(r.asm.h),Io(\"wasm-instantiate\")}if(ai(\"wasm-instantiate\"),r.instantiateWasm)try{var St=r.instantiateWasm(Ke,st);return St}catch(te){return ee(\"Module.instantiateWasm callback failed with error: \"+te),!1}var lr=wo(ji,Ke);return st(lr[0]),r.asm}function Af(Ke){return F.getFloat32(Ke,!0)}function dh(Ke){return F.getFloat64(Ke,!0)}function mh(Ke){return F.getInt16(Ke,!0)}function to(Ke){return F.getInt32(Ke,!0)}function jn(Ke,st){F.setInt32(Ke,st,!0)}function Ts(Ke){for(;Ke.length>0;){var st=Ke.shift();if(typeof st==\"function\"){st(r);continue}var St=st.func;typeof St==\"number\"?st.arg===void 0?$.get(St)():$.get(St)(st.arg):St(st.arg===void 0?null:st.arg)}}function ro(Ke,st){var St=new Date(to((Ke>>2)*4)*1e3);jn((st>>2)*4,St.getUTCSeconds()),jn((st+4>>2)*4,St.getUTCMinutes()),jn((st+8>>2)*4,St.getUTCHours()),jn((st+12>>2)*4,St.getUTCDate()),jn((st+16>>2)*4,St.getUTCMonth()),jn((st+20>>2)*4,St.getUTCFullYear()-1900),jn((st+24>>2)*4,St.getUTCDay()),jn((st+36>>2)*4,0),jn((st+32>>2)*4,0);var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),te=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((st+28>>2)*4,te),ro.GMTString||(ro.GMTString=rt(\"GMT\")),jn((st+40>>2)*4,ro.GMTString),st}function ou(Ke,st){return ro(Ke,st)}function au(Ke,st,St){ke.copyWithin(Ke,st,st+St)}function lu(Ke){try{return Be.grow(Ke-Pe.byteLength+65535>>>16),z(Be.buffer),1}catch{}}function TA(Ke){var st=ke.length;Ke=Ke>>>0;var St=2147483648;if(Ke>St)return!1;for(var lr=1;lr<=4;lr*=2){var te=st*(1+.2/lr);te=Math.min(te,Ke+100663296);var Ee=Math.min(St,Ne(Math.max(Ke,te),65536)),Oe=lu(Ee);if(Oe)return!0}return!1}function RA(Ke){ue(Ke)}function oa(Ke){var st=Date.now()/1e3|0;return Ke&&jn((Ke>>2)*4,st),st}function aa(){if(aa.called)return;aa.called=!0;var Ke=new Date().getFullYear(),st=new Date(Ke,0,1),St=new Date(Ke,6,1),lr=st.getTimezoneOffset(),te=St.getTimezoneOffset(),Ee=Math.max(lr,te);jn((vl()>>2)*4,Ee*60),jn((Is()>>2)*4,+(lr!=te));function Oe(An){var li=An.toTimeString().match(/\\(([A-Za-z ]+)\\)$/);return li?li[1]:\"GMT\"}var dt=Oe(st),Et=Oe(St),bt=rt(dt),tr=rt(Et);te<lr?(jn((Mi()>>2)*4,bt),jn((Mi()+4>>2)*4,tr)):(jn((Mi()>>2)*4,tr),jn((Mi()+4>>2)*4,bt))}function FA(Ke){aa();var st=Date.UTC(to((Ke+20>>2)*4)+1900,to((Ke+16>>2)*4),to((Ke+12>>2)*4),to((Ke+8>>2)*4),to((Ke+4>>2)*4),to((Ke>>2)*4),0),St=new Date(st);jn((Ke+24>>2)*4,St.getUTCDay());var lr=Date.UTC(St.getUTCFullYear(),0,1,0,0,0,0),te=(St.getTime()-lr)/(1e3*60*60*24)|0;return jn((Ke+28>>2)*4,te),St.getTime()/1e3|0}var gr=typeof atob==\"function\"?atob:function(Ke){var st=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",St=\"\",lr,te,Ee,Oe,dt,Et,bt,tr=0;Ke=Ke.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");do Oe=st.indexOf(Ke.charAt(tr++)),dt=st.indexOf(Ke.charAt(tr++)),Et=st.indexOf(Ke.charAt(tr++)),bt=st.indexOf(Ke.charAt(tr++)),lr=Oe<<2|dt>>4,te=(dt&15)<<4|Et>>2,Ee=(Et&3)<<6|bt,St=St+String.fromCharCode(lr),Et!==64&&(St=St+String.fromCharCode(te)),bt!==64&&(St=St+String.fromCharCode(Ee));while(tr<Ke.length);return St};function Bo(Ke){if(typeof C==\"boolean\"&&C){var st;try{st=Buffer.from(Ke,\"base64\")}catch{st=new Buffer(Ke,\"base64\")}return new Uint8Array(st.buffer,st.byteOffset,st.byteLength)}try{for(var St=gr(Ke),lr=new Uint8Array(St.length),te=0;te<St.length;++te)lr[te]=St.charCodeAt(te);return lr}catch{throw new Error(\"Converting base64 string to bytes failed.\")}}function Me(Ke){if(Co(Ke))return Bo(Ke.slice($s.length))}var cu={e:ou,c:au,d:TA,a:RA,b:oa,f:FA},Cr=QA(),pf=r.___wasm_call_ctors=Cr.h,NA=r._zip_ext_count_symlinks=Cr.i,OA=r._zip_file_get_external_attributes=Cr.j,uu=r._zipstruct_statS=Cr.k,fu=r._zipstruct_stat_size=Cr.l,oc=r._zipstruct_stat_mtime=Cr.m,ve=r._zipstruct_stat_crc=Cr.n,Nt=r._zipstruct_errorS=Cr.o,ac=r._zipstruct_error_code_zip=Cr.p,Oi=r._zipstruct_stat_comp_size=Cr.q,no=r._zipstruct_stat_comp_method=Cr.r,Rt=r._zip_close=Cr.s,xn=r._zip_delete=Cr.t,la=r._zip_dir_add=Cr.u,Gi=r._zip_discard=Cr.v,Li=r._zip_error_init_with_code=Cr.w,Na=r._zip_get_error=Cr.x,dn=r._zip_file_get_error=Cr.y,Kn=r._zip_error_strerror=Cr.z,Au=r._zip_fclose=Cr.A,yh=r._zip_file_add=Cr.B,Oa=r._free=Cr.C,La=r._malloc=Cr.D,Ma=r._zip_source_error=Cr.E,$e=r._zip_source_seek=Cr.F,Ua=r._zip_file_set_external_attributes=Cr.G,hf=r._zip_file_set_mtime=Cr.H,lc=r._zip_fopen_index=Cr.I,wn=r._zip_fread=Cr.J,ca=r._zip_get_name=Cr.K,LA=r._zip_get_num_entries=Cr.L,MA=r._zip_source_read=Cr.M,ua=r._zip_name_locate=Cr.N,Bl=r._zip_open_from_source=Cr.O,Mt=r._zip_set_file_compression=Cr.P,kn=r._zip_source_buffer=Cr.Q,fa=r._zip_source_buffer_create=Cr.R,Ha=r._zip_source_close=Cr.S,ns=r._zip_source_free=Cr.T,cc=r._zip_source_keep=Cr.U,pu=r._zip_source_open=Cr.V,uc=r._zip_source_tell=Cr.X,ja=r._zip_stat_index=Cr.Y,Mi=r.__get_tzname=Cr.Z,Is=r.__get_daylight=Cr._,vl=r.__get_timezone=Cr.$,gf=r.stackSave=Cr.aa,fc=r.stackRestore=Cr.ba,wi=r.stackAlloc=Cr.ca;r.cwrap=se,r.getValue=pe;var Qn;on=function Ke(){Qn||Ac(),Qn||(on=Ke)};function Ac(Ke){if(Ke=Ke||f,Ir>0||(Ct(),Ir>0))return;function st(){Qn||(Qn=!0,r.calledRun=!0,!Ce&&(qt(),s(r),r.onRuntimeInitialized&&r.onRuntimeInitialized(),ir()))}r.setStatus?(r.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){r.setStatus(\"\")},1),st()},1)):st()}if(r.run=Ac,r.preInit)for(typeof r.preInit==\"function\"&&(r.preInit=[r.preInit]);r.preInit.length>0;)r.preInit.pop()();return Ac(),e}}();typeof wT==\"object\"&&typeof Pj==\"object\"?Pj.exports=bj:typeof define==\"function\"&&define.amd?define([],function(){return bj}):typeof wT==\"object\"&&(wT.createModule=bj)});var Up,hpe,gpe,dpe=Xe(()=>{Up=[\"number\",\"number\"],hpe=(Z=>(Z[Z.ZIP_ER_OK=0]=\"ZIP_ER_OK\",Z[Z.ZIP_ER_MULTIDISK=1]=\"ZIP_ER_MULTIDISK\",Z[Z.ZIP_ER_RENAME=2]=\"ZIP_ER_RENAME\",Z[Z.ZIP_ER_CLOSE=3]=\"ZIP_ER_CLOSE\",Z[Z.ZIP_ER_SEEK=4]=\"ZIP_ER_SEEK\",Z[Z.ZIP_ER_READ=5]=\"ZIP_ER_READ\",Z[Z.ZIP_ER_WRITE=6]=\"ZIP_ER_WRITE\",Z[Z.ZIP_ER_CRC=7]=\"ZIP_ER_CRC\",Z[Z.ZIP_ER_ZIPCLOSED=8]=\"ZIP_ER_ZIPCLOSED\",Z[Z.ZIP_ER_NOENT=9]=\"ZIP_ER_NOENT\",Z[Z.ZIP_ER_EXISTS=10]=\"ZIP_ER_EXISTS\",Z[Z.ZIP_ER_OPEN=11]=\"ZIP_ER_OPEN\",Z[Z.ZIP_ER_TMPOPEN=12]=\"ZIP_ER_TMPOPEN\",Z[Z.ZIP_ER_ZLIB=13]=\"ZIP_ER_ZLIB\",Z[Z.ZIP_ER_MEMORY=14]=\"ZIP_ER_MEMORY\",Z[Z.ZIP_ER_CHANGED=15]=\"ZIP_ER_CHANGED\",Z[Z.ZIP_ER_COMPNOTSUPP=16]=\"ZIP_ER_COMPNOTSUPP\",Z[Z.ZIP_ER_EOF=17]=\"ZIP_ER_EOF\",Z[Z.ZIP_ER_INVAL=18]=\"ZIP_ER_INVAL\",Z[Z.ZIP_ER_NOZIP=19]=\"ZIP_ER_NOZIP\",Z[Z.ZIP_ER_INTERNAL=20]=\"ZIP_ER_INTERNAL\",Z[Z.ZIP_ER_INCONS=21]=\"ZIP_ER_INCONS\",Z[Z.ZIP_ER_REMOVE=22]=\"ZIP_ER_REMOVE\",Z[Z.ZIP_ER_DELETED=23]=\"ZIP_ER_DELETED\",Z[Z.ZIP_ER_ENCRNOTSUPP=24]=\"ZIP_ER_ENCRNOTSUPP\",Z[Z.ZIP_ER_RDONLY=25]=\"ZIP_ER_RDONLY\",Z[Z.ZIP_ER_NOPASSWD=26]=\"ZIP_ER_NOPASSWD\",Z[Z.ZIP_ER_WRONGPASSWD=27]=\"ZIP_ER_WRONGPASSWD\",Z[Z.ZIP_ER_OPNOTSUPP=28]=\"ZIP_ER_OPNOTSUPP\",Z[Z.ZIP_ER_INUSE=29]=\"ZIP_ER_INUSE\",Z[Z.ZIP_ER_TELL=30]=\"ZIP_ER_TELL\",Z[Z.ZIP_ER_COMPRESSED_DATA=31]=\"ZIP_ER_COMPRESSED_DATA\",Z))(hpe||{}),gpe=t=>({get HEAPU8(){return t.HEAPU8},errors:hpe,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\",...Up,\"number\",\"number\"]),fopenIndex:t.cwrap(\"zip_fopen_index\",\"number\",[\"number\",...Up,\"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\",...Up,\"number\",\"number\",\"number\"]),setExternalAttributes:t.cwrap(\"zip_file_set_external_attributes\",\"number\",[\"number\",...Up,\"number\",\"number\",\"number\"]),setMtime:t.cwrap(\"zip_file_set_mtime\",\"number\",[\"number\",...Up,\"number\",\"number\"]),setCompression:t.cwrap(\"zip_set_file_compression\",\"number\",[\"number\",...Up,\"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\",...Up,\"number\",\"number\"]),fromBuffer:t.cwrap(\"zip_source_buffer\",\"number\",[\"number\",\"number\",...Up,\"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\",...Up,\"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 xj(t,e){let r=t.indexOf(e);if(r<=0)return null;let s=r;for(;r>=0&&(s=r+e.length,t[s]!==J.sep);){if(t[r-1]===J.sep)return null;r=t.indexOf(e,s)}return t.length>s&&t[s]!==J.sep?null:t.slice(0,s)}var $f,mpe=Xe(()=>{Dt();Dt();eA();$f=class t extends e0{static async openPromise(e,r){let s=new t(r);try{return await e(s)}finally{s.saveAndClose()}}constructor(e={}){let r=e.fileExtensions,s=e.readOnlyArchives,a=typeof r>\"u\"?f=>xj(f,\".zip\"):f=>{for(let p of r){let h=xj(f,p);if(h)return h}return null},n=(f,p)=>new As(p,{baseFs:f,readOnly:s,stats:f.statSync(p),customZipImplementation:e.customZipImplementation}),c=async(f,p)=>{let h={baseFs:f,readOnly:s,stats:await f.statPromise(p),customZipImplementation:e.customZipImplementation};return()=>new As(p,h)};super({...e,factorySync:n,factoryPromise:c,getMountPoint:a})}}});var kj,BI,Qj=Xe(()=>{Dj();kj=class extends Error{constructor(e,r){super(e),this.name=\"Libzip Error\",this.code=r}},BI=class{constructor(e){this.filesShouldBeCached=!0;let r=\"buffer\"in e?e.buffer:e.baseFs.readFileSync(e.path);this.libzip=cv();let s=this.libzip.malloc(4);try{let c=0;e.readOnly&&(c|=this.libzip.ZIP_RDONLY);let f=this.allocateUnattachedSource(r);try{this.zip=this.libzip.openFromSource(f,c,s),this.lzSource=f}catch(p){throw this.libzip.source.free(f),p}if(this.zip===0){let p=this.libzip.struct.errorS();throw this.libzip.error.initWithCode(p,this.libzip.getValue(s,\"i32\")),this.makeLibzipError(p)}}finally{this.libzip.free(s)}let a=this.libzip.getNumEntries(this.zip,0),n=new Array(a);for(let c=0;c<a;++c)n[c]=this.libzip.getName(this.zip,c,0);if(this.listings=n,this.symlinkCount=this.libzip.ext.countSymlinks(this.zip),this.symlinkCount===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getSymlinkCount(){return this.symlinkCount}getListings(){return this.listings}stat(e){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statSize(r)>>>0,n=this.libzip.struct.statMtime(r)>>>0,c=this.libzip.struct.statCrc(r)>>>0;return{size:a,mtime:n,crc:c}}makeLibzipError(e){let r=this.libzip.struct.errorCodeZip(e),s=this.libzip.error.strerror(e),a=new kj(s,this.libzip.errors[r]);if(r===this.libzip.errors.ZIP_ER_CHANGED)throw new Error(`Assertion failed: Unexpected libzip error: ${a.message}`);return a}setFileSource(e,r,s){let a=this.allocateSource(s);try{let n=this.libzip.file.add(this.zip,e,a,this.libzip.ZIP_FL_OVERWRITE);if(n===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(r!==null&&this.libzip.file.setCompression(this.zip,n,0,r[0],r[1])===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return n}catch(n){throw this.libzip.source.free(a),n}}setMtime(e,r){if(this.libzip.file.setMtime(this.zip,e,0,r,0)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}getExternalAttributes(e){if(this.libzip.file.getExternalAttributes(this.zip,e,0,0,this.libzip.uint08S,this.libzip.uint32S)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let s=this.libzip.getValue(this.libzip.uint08S,\"i8\")>>>0,a=this.libzip.getValue(this.libzip.uint32S,\"i32\")>>>0;return[s,a]}setExternalAttributes(e,r,s){if(this.libzip.file.setExternalAttributes(this.zip,e,0,0,r,s)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}locate(e){return this.libzip.name.locate(this.zip,e,0)}getFileSource(e){let r=this.libzip.struct.statS();if(this.libzip.statIndex(this.zip,e,0,0,r)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));let a=this.libzip.struct.statCompSize(r),n=this.libzip.struct.statCompMethod(r),c=this.libzip.malloc(a);try{let f=this.libzip.fopenIndex(this.zip,e,0,this.libzip.ZIP_FL_COMPRESSED);if(f===0)throw this.makeLibzipError(this.libzip.getError(this.zip));try{let p=this.libzip.fread(f,c,a,0);if(p===-1)throw this.makeLibzipError(this.libzip.file.getError(f));if(p<a)throw new Error(\"Incomplete read\");if(p>a)throw new Error(\"Overread\");let h=this.libzip.HEAPU8.subarray(c,c+a);return{data:Buffer.from(h),compressionMethod:n}}finally{this.libzip.fclose(f)}}finally{this.libzip.free(c)}}deleteEntry(e){if(this.libzip.delete(this.zip,e)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip))}addDirectory(e){let r=this.libzip.dir.add(this.zip,e);if(r===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));return r}getBufferAndClose(){try{if(this.libzip.source.keep(this.lzSource),this.libzip.close(this.zip)===-1)throw this.makeLibzipError(this.libzip.getError(this.zip));if(this.libzip.source.open(this.lzSource)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_END)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let e=this.libzip.source.tell(this.lzSource);if(e===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(this.libzip.source.seek(this.lzSource,0,0,this.libzip.SEEK_SET)===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));let r=this.libzip.malloc(e);if(!r)throw new Error(\"Couldn't allocate enough memory\");try{let s=this.libzip.source.read(this.lzSource,r,e);if(s===-1)throw this.makeLibzipError(this.libzip.source.error(this.lzSource));if(s<e)throw new Error(\"Incomplete read\");if(s>e)throw new Error(\"Overread\");let a=Buffer.from(this.libzip.HEAPU8.subarray(r,r+e));return process.env.YARN_IS_TEST_ENV&&process.env.YARN_ZIP_DATA_EPILOGUE&&(a=Buffer.concat([a,Buffer.from(process.env.YARN_ZIP_DATA_EPILOGUE)])),a}finally{this.libzip.free(r)}}finally{this.libzip.source.close(this.lzSource),this.libzip.source.free(this.lzSource)}}allocateBuffer(e){Buffer.isBuffer(e)||(e=Buffer.from(e));let r=this.libzip.malloc(e.byteLength);if(!r)throw new Error(\"Couldn't allocate enough memory\");return new Uint8Array(this.libzip.HEAPU8.buffer,r,e.byteLength).set(e),{buffer:r,byteLength:e.byteLength}}allocateUnattachedSource(e){let r=this.libzip.struct.errorS(),{buffer:s,byteLength:a}=this.allocateBuffer(e),n=this.libzip.source.fromUnattachedBuffer(s,a,0,1,r);if(n===0)throw this.libzip.free(r),this.makeLibzipError(r);return n}allocateSource(e){let{buffer:r,byteLength:s}=this.allocateBuffer(e),a=this.libzip.source.fromBuffer(this.zip,r,s,0,1);if(a===0)throw this.libzip.free(r),this.makeLibzipError(this.libzip.getError(this.zip));return a}discard(){this.libzip.discard(this.zip)}}});function Ynt(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(ype.types.isDate(t))return t.getTime()/1e3;throw new Error(\"Invalid time\")}function BT(){return Buffer.from([80,75,5,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])}var xa,Tj,ype,Rj,lm,Fj,Nj,Epe,As,vT=Xe(()=>{Dt();Dt();Dt();Dt();Dt();Dt();xa=Ie(\"fs\"),Tj=Ie(\"stream\"),ype=Ie(\"util\"),Rj=ut(Ie(\"zlib\"));Qj();lm=3,Fj=0,Nj=8,Epe=\"mixed\";As=class extends Uf{constructor(r,s={}){super();this.listings=new Map;this.entries=new Map;this.fileSources=new Map;this.fds=new Map;this.nextFd=0;this.ready=!1;this.readOnly=!1;s.readOnly&&(this.readOnly=!0);let a=s;this.level=typeof a.level<\"u\"?a.level:Epe;let n=s.customZipImplementation??BI;if(typeof r==\"string\"){let{baseFs:f=new Yn}=a;this.baseFs=f,this.path=r}else this.path=null,this.baseFs=null;if(s.stats)this.stats=s.stats;else if(typeof r==\"string\")try{this.stats=this.baseFs.statSync(r)}catch(f){if(f.code===\"ENOENT\"&&a.create)this.stats=$a.makeDefaultStats();else throw f}else this.stats=$a.makeDefaultStats();typeof r==\"string\"?s.create?this.zipImpl=new n({buffer:BT(),readOnly:this.readOnly}):this.zipImpl=new n({path:r,baseFs:this.baseFs,readOnly:this.readOnly,size:this.stats.size}):this.zipImpl=new n({buffer:r??BT(),readOnly:this.readOnly}),this.listings.set(vt.root,new Set);let c=this.zipImpl.getListings();for(let f=0;f<c.length;f++){let p=c[f];if(J.isAbsolute(p))continue;let h=J.resolve(vt.root,p);this.registerEntry(h,f),p.endsWith(\"/\")&&this.registerListing(h)}this.symlinkCount=this.zipImpl.getSymlinkCount(),this.ready=!0}getExtractHint(r){for(let s of this.entries.keys()){let a=this.pathUtils.extname(s);if(r.relevantExtensions.has(a))return!0}return!1}getAllFiles(){return Array.from(this.entries.keys())}getRealPath(){if(!this.path)throw new Error(\"ZipFS don't have real paths when loaded from a buffer\");return this.path}prepareClose(){if(!this.ready)throw or.EBUSY(\"archive closed, close\");yd(this)}getBufferAndClose(){if(this.prepareClose(),this.entries.size===0)return this.discardAndClose(),BT();try{return this.zipImpl.getBufferAndClose()}finally{this.ready=!1}}discardAndClose(){this.prepareClose(),this.zipImpl.discard(),this.ready=!1}saveAndClose(){if(!this.path||!this.baseFs)throw new Error(\"ZipFS cannot be saved and must be discarded when loaded from a buffer\");if(this.readOnly){this.discardAndClose();return}let r=this.baseFs.existsSync(this.path)||this.stats.mode===$a.DEFAULT_MODE?void 0:this.stats.mode;this.baseFs.writeFileSync(this.path,this.getBufferAndClose(),{mode:r}),this.ready=!1}resolve(r){return J.resolve(vt.root,r)}async openPromise(r,s,a){return this.openSync(r,s,a)}openSync(r,s,a){let n=this.nextFd++;return this.fds.set(n,{cursor:0,p:r}),n}hasOpenFileHandles(){return!!this.fds.size}async opendirPromise(r,s){return this.opendirSync(r,s)}opendirSync(r,s={}){let a=this.resolveFilename(`opendir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`opendir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`opendir '${r}'`);let c=[...n],f=this.openSync(a,\"r\");return ex(this,a,c,{onClose:()=>{this.closeSync(f)}})}async readPromise(r,s,a,n,c){return this.readSync(r,s,a,n,c)}readSync(r,s,a=0,n=s.byteLength,c=-1){let f=this.fds.get(r);if(typeof f>\"u\")throw or.EBADF(\"read\");let p=c===-1||c===null?f.cursor:c,h=this.readFileSync(f.p);h.copy(s,a,p,p+n);let E=Math.max(0,Math.min(h.length-p,n));return(c===-1||c===null)&&(f.cursor+=E),E}async writePromise(r,s,a,n,c){return typeof s==\"string\"?this.writeSync(r,s,c):this.writeSync(r,s,a,n,c)}writeSync(r,s,a,n,c){throw typeof this.fds.get(r)>\"u\"?or.EBADF(\"read\"):new Error(\"Unimplemented\")}async closePromise(r){return this.closeSync(r)}closeSync(r){if(typeof this.fds.get(r)>\"u\")throw or.EBADF(\"read\");this.fds.delete(r)}createReadStream(r,{encoding:s}={}){if(r===null)throw new Error(\"Unimplemented\");let a=this.openSync(r,\"r\"),n=Object.assign(new Tj.PassThrough({emitClose:!0,autoDestroy:!0,destroy:(f,p)=>{clearImmediate(c),this.closeSync(a),p(f)}}),{close(){n.destroy()},bytesRead:0,path:r,pending:!1}),c=setImmediate(async()=>{try{let f=await this.readFilePromise(r,s);n.bytesRead=f.length,n.end(f)}catch(f){n.destroy(f)}});return n}createWriteStream(r,{encoding:s}={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);if(r===null)throw new Error(\"Unimplemented\");let a=[],n=this.openSync(r,\"w\"),c=Object.assign(new Tj.PassThrough({autoDestroy:!0,emitClose:!0,destroy:(f,p)=>{try{f?p(f):(this.writeFileSync(r,Buffer.concat(a),s),p(null))}catch(h){p(h)}finally{this.closeSync(n)}}}),{close(){c.destroy()},bytesWritten:0,path:r,pending:!1});return c.on(\"data\",f=>{let p=Buffer.from(f);c.bytesWritten+=p.length,a.push(p)}),c}async realpathPromise(r){return this.realpathSync(r)}realpathSync(r){let s=this.resolveFilename(`lstat '${r}'`,r);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`lstat '${r}'`);return s}async existsPromise(r){return this.existsSync(r)}existsSync(r){if(!this.ready)throw or.EBUSY(`archive closed, existsSync '${r}'`);if(this.symlinkCount===0){let a=J.resolve(vt.root,r);return this.entries.has(a)||this.listings.has(a)}let s;try{s=this.resolveFilename(`stat '${r}'`,r,void 0,!1)}catch{return!1}return s===void 0?!1:this.entries.has(s)||this.listings.has(s)}async accessPromise(r,s){return this.accessSync(r,s)}accessSync(r,s=xa.constants.F_OK){let a=this.resolveFilename(`access '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`access '${r}'`);if(this.readOnly&&s&xa.constants.W_OK)throw or.EROFS(`access '${r}'`)}async statPromise(r,s={bigint:!1}){return s.bigint?this.statSync(r,{bigint:!0}):this.statSync(r)}statSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`stat '${r}'`,r,void 0,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`stat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw or.ENOTDIR(`stat '${r}'`);return this.statImpl(`stat '${r}'`,a,s)}}async fstatPromise(r,s){return this.fstatSync(r,s)}fstatSync(r,s){let a=this.fds.get(r);if(typeof a>\"u\")throw or.EBADF(\"fstatSync\");let{p:n}=a,c=this.resolveFilename(`stat '${n}'`,n);if(!this.entries.has(c)&&!this.listings.has(c))throw or.ENOENT(`stat '${n}'`);if(n[n.length-1]===\"/\"&&!this.listings.has(c))throw or.ENOTDIR(`stat '${n}'`);return this.statImpl(`fstat '${n}'`,c,s)}async lstatPromise(r,s={bigint:!1}){return s.bigint?this.lstatSync(r,{bigint:!0}):this.lstatSync(r)}lstatSync(r,s={bigint:!1,throwIfNoEntry:!0}){let a=this.resolveFilename(`lstat '${r}'`,r,!1,s.throwIfNoEntry);if(a!==void 0){if(!this.entries.has(a)&&!this.listings.has(a)){if(s.throwIfNoEntry===!1)return;throw or.ENOENT(`lstat '${r}'`)}if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw or.ENOTDIR(`lstat '${r}'`);return this.statImpl(`lstat '${r}'`,a,s)}}statImpl(r,s,a={}){let n=this.entries.get(s);if(typeof n<\"u\"){let c=this.zipImpl.stat(n),f=c.crc,p=c.size,h=c.mtime*1e3,E=this.stats.uid,C=this.stats.gid,S=512,P=Math.ceil(c.size/S),I=h,R=h,N=h,U=new Date(I),W=new Date(R),ee=new Date(N),ie=new Date(h),ue=this.listings.has(s)?xa.constants.S_IFDIR:this.isSymbolicLink(n)?xa.constants.S_IFLNK:xa.constants.S_IFREG,le=ue===xa.constants.S_IFDIR?493:420,me=ue|this.getUnixMode(n,le)&511,pe=Object.assign(new $a.StatEntry,{uid:E,gid:C,size:p,blksize:S,blocks:P,atime:U,birthtime:W,ctime:ee,mtime:ie,atimeMs:I,birthtimeMs:R,ctimeMs:N,mtimeMs:h,mode:me,crc:f});return a.bigint===!0?$a.convertToBigIntStats(pe):pe}if(this.listings.has(s)){let c=this.stats.uid,f=this.stats.gid,p=0,h=512,E=0,C=this.stats.mtimeMs,S=this.stats.mtimeMs,P=this.stats.mtimeMs,I=this.stats.mtimeMs,R=new Date(C),N=new Date(S),U=new Date(P),W=new Date(I),ee=xa.constants.S_IFDIR|493,ue=Object.assign(new $a.StatEntry,{uid:c,gid:f,size:p,blksize:h,blocks:E,atime:R,birthtime:N,ctime:U,mtime:W,atimeMs:C,birthtimeMs:S,ctimeMs:P,mtimeMs:I,mode:ee,crc:0});return a.bigint===!0?$a.convertToBigIntStats(ue):ue}throw new Error(\"Unreachable\")}getUnixMode(r,s){let[a,n]=this.zipImpl.getExternalAttributes(r);return a!==lm?s:n>>>16}registerListing(r){let s=this.listings.get(r);if(s)return s;this.registerListing(J.dirname(r)).add(J.basename(r));let n=new Set;return this.listings.set(r,n),n}registerEntry(r,s){this.registerListing(J.dirname(r)).add(J.basename(r)),this.entries.set(r,s)}unregisterListing(r){this.listings.delete(r),this.listings.get(J.dirname(r))?.delete(J.basename(r))}unregisterEntry(r){this.unregisterListing(r);let s=this.entries.get(r);this.entries.delete(r),!(typeof s>\"u\")&&(this.fileSources.delete(s),this.isSymbolicLink(s)&&this.symlinkCount--)}deleteEntry(r,s){this.unregisterEntry(r),this.zipImpl.deleteEntry(s)}resolveFilename(r,s,a=!0,n=!0){if(!this.ready)throw or.EBUSY(`archive closed, ${r}`);let c=J.resolve(vt.root,s);if(c===\"/\")return vt.root;let f=this.entries.get(c);if(a&&f!==void 0)if(this.symlinkCount!==0&&this.isSymbolicLink(f)){let p=this.getFileSource(f).toString();return this.resolveFilename(r,J.resolve(J.dirname(c),p),!0,n)}else return c;for(;;){let p=this.resolveFilename(r,J.dirname(c),!0,n);if(p===void 0)return p;let h=this.listings.has(p),E=this.entries.has(p);if(!h&&!E){if(n===!1)return;throw or.ENOENT(r)}if(!h)throw or.ENOTDIR(r);if(c=J.resolve(p,J.basename(c)),!a||this.symlinkCount===0)break;let C=this.zipImpl.locate(c.slice(1));if(C===-1)break;if(this.isSymbolicLink(C)){let S=this.getFileSource(C).toString();c=J.resolve(J.dirname(c),S)}else break}return c}setFileSource(r,s){let a=Buffer.isBuffer(s)?s:Buffer.from(s),n=J.relative(vt.root,r),c=null;this.level!==\"mixed\"&&(c=[this.level===0?Fj:Nj,this.level]);let f=this.zipImpl.setFileSource(n,c,a);return this.fileSources.set(f,a),f}isSymbolicLink(r){if(this.symlinkCount===0)return!1;let[s,a]=this.zipImpl.getExternalAttributes(r);return s!==lm?!1:(a>>>16&xa.constants.S_IFMT)===xa.constants.S_IFLNK}getFileSource(r,s={asyncDecompress:!1}){let a=this.fileSources.get(r);if(typeof a<\"u\")return a;let{data:n,compressionMethod:c}=this.zipImpl.getFileSource(r);if(c===Fj)return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,n),n;if(c===Nj){if(s.asyncDecompress)return new Promise((f,p)=>{Rj.default.inflateRaw(n,(h,E)=>{h?p(h):(this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,E),f(E))})});{let f=Rj.default.inflateRawSync(n);return this.zipImpl.filesShouldBeCached&&this.fileSources.set(r,f),f}}else throw new Error(`Unsupported compression method: ${c}`)}async fchmodPromise(r,s){return this.chmodPromise(this.fdToPath(r,\"fchmod\"),s)}fchmodSync(r,s){return this.chmodSync(this.fdToPath(r,\"fchmodSync\"),s)}async chmodPromise(r,s){return this.chmodSync(r,s)}chmodSync(r,s){if(this.readOnly)throw or.EROFS(`chmod '${r}'`);s&=493;let a=this.resolveFilename(`chmod '${r}'`,r,!1),n=this.entries.get(a);if(typeof n>\"u\")throw new Error(`Assertion failed: The entry should have been registered (${a})`);let f=this.getUnixMode(n,xa.constants.S_IFREG|0)&-512|s;this.zipImpl.setExternalAttributes(n,lm,f<<16)}async fchownPromise(r,s,a){return this.chownPromise(this.fdToPath(r,\"fchown\"),s,a)}fchownSync(r,s,a){return this.chownSync(this.fdToPath(r,\"fchownSync\"),s,a)}async chownPromise(r,s,a){return this.chownSync(r,s,a)}chownSync(r,s,a){throw new Error(\"Unimplemented\")}async renamePromise(r,s){return this.renameSync(r,s)}renameSync(r,s){throw new Error(\"Unimplemented\")}async copyFilePromise(r,s,a){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=await this.getFileSource(n,{asyncDecompress:!0}),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}copyFileSync(r,s,a=0){let{indexSource:n,indexDest:c,resolvedDestP:f}=this.prepareCopyFile(r,s,a),p=this.getFileSource(n),h=this.setFileSource(f,p);h!==c&&this.registerEntry(f,h)}prepareCopyFile(r,s,a=0){if(this.readOnly)throw or.EROFS(`copyfile '${r} -> '${s}'`);if(a&xa.constants.COPYFILE_FICLONE_FORCE)throw or.ENOSYS(\"unsupported clone operation\",`copyfile '${r}' -> ${s}'`);let n=this.resolveFilename(`copyfile '${r} -> ${s}'`,r),c=this.entries.get(n);if(typeof c>\"u\")throw or.EINVAL(`copyfile '${r}' -> '${s}'`);let f=this.resolveFilename(`copyfile '${r}' -> ${s}'`,s),p=this.entries.get(f);if(a&(xa.constants.COPYFILE_EXCL|xa.constants.COPYFILE_FICLONE_FORCE)&&typeof p<\"u\")throw or.EEXIST(`copyfile '${r}' -> '${s}'`);return{indexSource:c,resolvedDestP:f,indexDest:p}}async appendFilePromise(r,s,a){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFilePromise(r,s,a)}appendFileSync(r,s,a={}){if(this.readOnly)throw or.EROFS(`open '${r}'`);return typeof a>\"u\"?a={flag:\"a\"}:typeof a==\"string\"?a={flag:\"a\",encoding:a}:typeof a.flag>\"u\"&&(a={flag:\"a\",...a}),this.writeFileSync(r,s,a)}fdToPath(r,s){let a=this.fds.get(r)?.p;if(typeof a>\"u\")throw or.EBADF(s);return a}async writeFilePromise(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(s=Buffer.concat([await this.getFileSource(f,{asyncDecompress:!0}),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&await this.chmodPromise(p,c)}writeFileSync(r,s,a){let{encoding:n,mode:c,index:f,resolvedP:p}=this.prepareWriteFile(r,a);f!==void 0&&typeof a==\"object\"&&a.flag&&a.flag.includes(\"a\")&&(s=Buffer.concat([this.getFileSource(f),Buffer.from(s)])),n!==null&&(s=s.toString(n));let h=this.setFileSource(p,s);h!==f&&this.registerEntry(p,h),c!==null&&this.chmodSync(p,c)}prepareWriteFile(r,s){if(typeof r==\"number\"&&(r=this.fdToPath(r,\"read\")),this.readOnly)throw or.EROFS(`open '${r}'`);let a=this.resolveFilename(`open '${r}'`,r);if(this.listings.has(a))throw or.EISDIR(`open '${r}'`);let n=null,c=null;typeof s==\"string\"?n=s:typeof s==\"object\"&&({encoding:n=null,mode:c=null}=s);let f=this.entries.get(a);return{encoding:n,mode:c,resolvedP:a,index:f}}async unlinkPromise(r){return this.unlinkSync(r)}unlinkSync(r){if(this.readOnly)throw or.EROFS(`unlink '${r}'`);let s=this.resolveFilename(`unlink '${r}'`,r);if(this.listings.has(s))throw or.EISDIR(`unlink '${r}'`);let a=this.entries.get(s);if(typeof a>\"u\")throw or.EINVAL(`unlink '${r}'`);this.deleteEntry(s,a)}async utimesPromise(r,s,a){return this.utimesSync(r,s,a)}utimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`utimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r);this.utimesImpl(n,a)}async lutimesPromise(r,s,a){return this.lutimesSync(r,s,a)}lutimesSync(r,s,a){if(this.readOnly)throw or.EROFS(`lutimes '${r}'`);let n=this.resolveFilename(`utimes '${r}'`,r,!1);this.utimesImpl(n,a)}utimesImpl(r,s){this.listings.has(r)&&(this.entries.has(r)||this.hydrateDirectory(r));let a=this.entries.get(r);if(a===void 0)throw new Error(\"Unreachable\");this.zipImpl.setMtime(a,Ynt(s))}async mkdirPromise(r,s){return this.mkdirSync(r,s)}mkdirSync(r,{mode:s=493,recursive:a=!1}={}){if(a)return this.mkdirpSync(r,{chmod:s});if(this.readOnly)throw or.EROFS(`mkdir '${r}'`);let n=this.resolveFilename(`mkdir '${r}'`,r);if(this.entries.has(n)||this.listings.has(n))throw or.EEXIST(`mkdir '${r}'`);this.hydrateDirectory(n),this.chmodSync(n,s)}async rmdirPromise(r,s){return this.rmdirSync(r,s)}rmdirSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rmdir '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rmdir '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rmdir '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rmdir '${r}'`);let c=this.entries.get(a);if(typeof c>\"u\")throw or.EINVAL(`rmdir '${r}'`);this.deleteEntry(r,c)}async rmPromise(r,s){return this.rmSync(r,s)}rmSync(r,{recursive:s=!1}={}){if(this.readOnly)throw or.EROFS(`rm '${r}'`);if(s){this.removeSync(r);return}let a=this.resolveFilename(`rm '${r}'`,r),n=this.listings.get(a);if(!n)throw or.ENOTDIR(`rm '${r}'`);if(n.size>0)throw or.ENOTEMPTY(`rm '${r}'`);let c=this.entries.get(a);if(typeof c>\"u\")throw or.EINVAL(`rm '${r}'`);this.deleteEntry(r,c)}hydrateDirectory(r){let s=this.zipImpl.addDirectory(J.relative(vt.root,r));return this.registerListing(r),this.registerEntry(r,s),s}async linkPromise(r,s){return this.linkSync(r,s)}linkSync(r,s){throw or.EOPNOTSUPP(`link '${r}' -> '${s}'`)}async symlinkPromise(r,s){return this.symlinkSync(r,s)}symlinkSync(r,s){if(this.readOnly)throw or.EROFS(`symlink '${r}' -> '${s}'`);let a=this.resolveFilename(`symlink '${r}' -> '${s}'`,s);if(this.listings.has(a))throw or.EISDIR(`symlink '${r}' -> '${s}'`);if(this.entries.has(a))throw or.EEXIST(`symlink '${r}' -> '${s}'`);let n=this.setFileSource(a,r);this.registerEntry(a,n),this.zipImpl.setExternalAttributes(n,lm,(xa.constants.S_IFLNK|511)<<16),this.symlinkCount+=1}async readFilePromise(r,s){typeof s==\"object\"&&(s=s?s.encoding:void 0);let a=await this.readFileBuffer(r,{asyncDecompress:!0});return s?a.toString(s):a}readFileSync(r,s){typeof s==\"object\"&&(s=s?s.encoding:void 0);let a=this.readFileBuffer(r);return s?a.toString(s):a}readFileBuffer(r,s={asyncDecompress:!1}){typeof r==\"number\"&&(r=this.fdToPath(r,\"read\"));let a=this.resolveFilename(`open '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`open '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(a))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(a))throw or.EISDIR(\"read\");let n=this.entries.get(a);if(n===void 0)throw new Error(\"Unreachable\");return this.getFileSource(n,s)}async readdirPromise(r,s){return this.readdirSync(r,s)}readdirSync(r,s){let a=this.resolveFilename(`scandir '${r}'`,r);if(!this.entries.has(a)&&!this.listings.has(a))throw or.ENOENT(`scandir '${r}'`);let n=this.listings.get(a);if(!n)throw or.ENOTDIR(`scandir '${r}'`);if(s?.recursive)if(s?.withFileTypes){let c=Array.from(n,f=>Object.assign(this.statImpl(\"lstat\",J.join(r,f)),{name:f,path:vt.dot,parentPath:vt.dot}));for(let f of c){if(!f.isDirectory())continue;let p=J.join(f.path,f.name),h=this.listings.get(J.join(a,p));for(let E of h)c.push(Object.assign(this.statImpl(\"lstat\",J.join(r,p,E)),{name:E,path:p,parentPath:p}))}return c}else{let c=[...n];for(let f of c){let p=this.listings.get(J.join(a,f));if(!(typeof p>\"u\"))for(let h of p)c.push(J.join(f,h))}return c}else return s?.withFileTypes?Array.from(n,c=>Object.assign(this.statImpl(\"lstat\",J.join(r,c)),{name:c,path:void 0,parentPath:void 0})):[...n]}async readlinkPromise(r){let s=this.prepareReadlink(r);return(await this.getFileSource(s,{asyncDecompress:!0})).toString()}readlinkSync(r){let s=this.prepareReadlink(r);return this.getFileSource(s).toString()}prepareReadlink(r){let s=this.resolveFilename(`readlink '${r}'`,r,!1);if(!this.entries.has(s)&&!this.listings.has(s))throw or.ENOENT(`readlink '${r}'`);if(r[r.length-1]===\"/\"&&!this.listings.has(s))throw or.ENOTDIR(`open '${r}'`);if(this.listings.has(s))throw or.EINVAL(`readlink '${r}'`);let a=this.entries.get(s);if(a===void 0)throw new Error(\"Unreachable\");if(!this.isSymbolicLink(a))throw or.EINVAL(`readlink '${r}'`);return a}async truncatePromise(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw or.EINVAL(`open '${r}'`);let c=await this.getFileSource(n,{asyncDecompress:!0}),f=Buffer.alloc(s,0);return c.copy(f),await this.writeFilePromise(r,f)}truncateSync(r,s=0){let a=this.resolveFilename(`open '${r}'`,r),n=this.entries.get(a);if(typeof n>\"u\")throw or.EINVAL(`open '${r}'`);let c=this.getFileSource(n),f=Buffer.alloc(s,0);return c.copy(f),this.writeFileSync(r,f)}async ftruncatePromise(r,s){return this.truncatePromise(this.fdToPath(r,\"ftruncate\"),s)}ftruncateSync(r,s){return this.truncateSync(this.fdToPath(r,\"ftruncateSync\"),s)}watch(r,s,a){let n;switch(typeof s){case\"function\":case\"string\":case\"undefined\":n=!0;break;default:({persistent:n=!0}=s);break}if(!n)return{on:()=>{},close:()=>{}};let c=setInterval(()=>{},24*60*60*1e3);return{on:()=>{},close:()=>{clearInterval(c)}}}watchFile(r,s,a){let n=J.resolve(vt.root,r);return sE(this,n,s,a)}unwatchFile(r,s){let a=J.resolve(vt.root,r);return md(this,a,s)}}});function Cpe(t,e,r=Buffer.alloc(0),s){let a=new As(r),n=C=>C===e||C.startsWith(`${e}/`)?C.slice(0,e.length):null,c=async(C,S)=>()=>a,f=(C,S)=>a,p={...t},h=new Yn(p),E=new e0({baseFs:h,getMountPoint:n,factoryPromise:c,factorySync:f,magicByte:21,maxAge:1/0,typeCheck:s?.typeCheck});return U2(Ipe.default,new t0(E)),a}var Ipe,wpe=Xe(()=>{Dt();Ipe=ut(Ie(\"fs\"));vT()});var Bpe=Xe(()=>{mpe();vT();wpe()});var Oj,uv,ST,vpe=Xe(()=>{Dt();vT();Oj={CENTRAL_DIRECTORY:33639248,END_OF_CENTRAL_DIRECTORY:101010256},uv=22,ST=class t{constructor(e){this.filesShouldBeCached=!1;if(\"buffer\"in e)throw new Error(\"Buffer based zip archives are not supported\");if(!e.readOnly)throw new Error(\"Writable zip archives are not supported\");this.baseFs=e.baseFs,this.fd=this.baseFs.openSync(e.path,\"r\");try{this.entries=t.readZipSync(this.fd,this.baseFs,e.size)}catch(r){throw this.baseFs.closeSync(this.fd),this.fd=\"closed\",r}}static readZipSync(e,r,s){if(s<uv)throw new Error(\"Invalid ZIP file: EOCD not found\");let a=-1,n=Buffer.alloc(uv);if(r.readSync(e,n,0,uv,s-uv),n.readUInt32LE(0)===Oj.END_OF_CENTRAL_DIRECTORY)a=0;else{let R=Math.min(65557,s);n=Buffer.alloc(R),r.readSync(e,n,0,R,Math.max(0,s-R));for(let N=n.length-4;N>=0;N--)if(n.readUInt32LE(N)===Oj.END_OF_CENTRAL_DIRECTORY){a=N;break}if(a===-1)throw new Error(\"Not a zip archive\")}let c=n.readUInt16LE(a+10),f=n.readUInt32LE(a+12),p=n.readUInt32LE(a+16),h=n.readUInt16LE(a+20);if(a+h+uv>n.length)throw new Error(\"Zip archive inconsistent\");if(c==65535||f==4294967295||p==4294967295)throw new Error(\"Zip 64 is not supported\");if(f>s)throw new Error(\"Zip archive inconsistent\");if(c>f/46)throw new Error(\"Zip archive inconsistent\");let E=Buffer.alloc(f);if(r.readSync(e,E,0,E.length,p)!==E.length)throw new Error(\"Zip archive inconsistent\");let C=[],S=0,P=0,I=0;for(;P<c;){if(S+46>E.length)throw new Error(\"Zip archive inconsistent\");if(E.readUInt32LE(S)!==Oj.CENTRAL_DIRECTORY)throw new Error(\"Zip archive inconsistent\");let N=E.readUInt16LE(S+4)>>>8;if(E.readUInt16LE(S+8)&1)throw new Error(\"Encrypted zip files are not supported\");let W=E.readUInt16LE(S+10),ee=E.readUInt32LE(S+16),ie=E.readUInt16LE(S+28),ue=E.readUInt16LE(S+30),le=E.readUInt16LE(S+32),me=E.readUInt32LE(S+42),pe=E.toString(\"utf8\",S+46,S+46+ie).replaceAll(\"\\0\",\" \");if(pe.includes(\"\\0\"))throw new Error(\"Invalid ZIP file\");let Be=E.readUInt32LE(S+20),Ce=E.readUInt32LE(S+38);C.push({name:pe,os:N,mtime:fi.SAFE_TIME,crc:ee,compressionMethod:W,isSymbolicLink:N===lm&&(Ce>>>16&fi.S_IFMT)===fi.S_IFLNK,size:E.readUInt32LE(S+24),compressedSize:Be,externalAttributes:Ce,localHeaderOffset:me}),I+=Be,P+=1,S+=46+ie+ue+le}if(I>s)throw new Error(\"Zip archive inconsistent\");if(S!==E.length)throw new Error(\"Zip archive inconsistent\");return C}getExternalAttributes(e){let r=this.entries[e];return[r.os,r.externalAttributes]}getListings(){return this.entries.map(e=>e.name)}getSymlinkCount(){let e=0;for(let r of this.entries)r.isSymbolicLink&&(e+=1);return e}stat(e){let r=this.entries[e];return{crc:r.crc,mtime:r.mtime,size:r.size}}locate(e){for(let r=0;r<this.entries.length;r++)if(this.entries[r].name===e)return r;return-1}getFileSource(e){if(this.fd===\"closed\")throw new Error(\"ZIP file is closed\");let r=this.entries[e],s=Buffer.alloc(30);this.baseFs.readSync(this.fd,s,0,s.length,r.localHeaderOffset);let a=s.readUInt16LE(26),n=s.readUInt16LE(28),c=Buffer.alloc(r.compressedSize);if(this.baseFs.readSync(this.fd,c,0,r.compressedSize,r.localHeaderOffset+30+a+n)!==r.compressedSize)throw new Error(\"Invalid ZIP file\");return{data:c,compressionMethod:r.compressionMethod}}discard(){this.fd!==\"closed\"&&(this.baseFs.closeSync(this.fd),this.fd=\"closed\")}addDirectory(e){throw new Error(\"Not implemented\")}deleteEntry(e){throw new Error(\"Not implemented\")}setMtime(e,r){throw new Error(\"Not implemented\")}getBufferAndClose(){throw new Error(\"Not implemented\")}setFileSource(e,r,s){throw new Error(\"Not implemented\")}setExternalAttributes(e,r,s){throw new Error(\"Not implemented\")}}});var fv={};Vt(fv,{DEFAULT_COMPRESSION_LEVEL:()=>Epe,DEFLATE:()=>Nj,JsZipImpl:()=>ST,LibZipImpl:()=>BI,STORE:()=>Fj,ZIP_UNIX:()=>lm,ZipFS:()=>As,ZipOpenFS:()=>$f,getArchivePart:()=>xj,getLibzipPromise:()=>Jnt,getLibzipSync:()=>Vnt,makeEmptyArchive:()=>BT,mountMemoryDrive:()=>Cpe});function Vnt(){return cv()}async function Jnt(){return cv()}var Spe,eA=Xe(()=>{Dj();Spe=ut(ppe());dpe();Bpe();vpe();Qj();Ape(()=>{let t=(0,Spe.default)();return gpe(t)})});var Av,Dpe=Xe(()=>{Dt();Yt();pv();Av=class extends ot{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",process.cwd(),{description:\"The directory to run the command in\"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.usage={description:\"run a command using yarn's portable shell\",details:`\n      This command will run a command using Yarn's portable shell.\n\n      Make sure to escape glob patterns, redirections, and other features that might be expanded by your own shell.\n\n      Note: To escape something from Yarn's shell, you might have to escape it twice, the first time from your own shell.\n\n      Note: Don't use this command in Yarn scripts, as Yarn's shell is automatically used.\n\n      For a list of features, visit: https://github.com/yarnpkg/berry/blob/master/packages/yarnpkg-shell/README.md.\n    `,examples:[[\"Run a simple command\",\"$0 echo Hello\"],[\"Run a command with a glob pattern\",\"$0 echo '*.js'\"],[\"Run a command with a redirection\",\"$0 echo Hello World '>' hello.txt\"],[\"Run a command with an escaped glob pattern (The double escape is needed in Unix shells)\",`$0 echo '\"*.js\"'`],[\"Run a command with a variable (Double quotes are needed in Unix shells, to prevent them from expanding the variable)\",'$0 \"GREETING=Hello echo $GREETING World\"']]}}async execute(){let r=this.args.length>0?`${this.commandName} ${this.args.join(\" \")}`:this.commandName;return await vI(r,[],{cwd:fe.toPortablePath(this.cwd),stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}}});var Vl,bpe=Xe(()=>{Vl=class extends Error{constructor(e){super(e),this.name=\"ShellError\"}}});var PT={};Vt(PT,{fastGlobOptions:()=>kpe,isBraceExpansion:()=>Lj,isGlobPattern:()=>Knt,match:()=>znt,micromatchOptions:()=>bT});function Knt(t){if(!DT.default.scan(t,bT).isGlob)return!1;try{DT.default.parse(t,bT)}catch{return!1}return!0}function znt(t,{cwd:e,baseFs:r}){return(0,Ppe.default)(t,{...kpe,cwd:fe.fromPortablePath(e),fs:ax(xpe.default,new t0(r))})}function Lj(t){return DT.default.scan(t,bT).isBrace}var Ppe,xpe,DT,bT,kpe,Qpe=Xe(()=>{Dt();Ppe=ut(BQ()),xpe=ut(Ie(\"fs\")),DT=ut(Go()),bT={strictBrackets:!0},kpe={onlyDirectories:!1,onlyFiles:!1}});function Mj(){}function Uj(){for(let t of cm)t.kill()}function Npe(t,e,r,s){return a=>{let n=a[0]instanceof tA.Transform?\"pipe\":a[0],c=a[1]instanceof tA.Transform?\"pipe\":a[1],f=a[2]instanceof tA.Transform?\"pipe\":a[2],p=(0,Rpe.default)(t,e,{...s,stdio:[n,c,f]});return cm.add(p),cm.size===1&&(process.on(\"SIGINT\",Mj),process.on(\"SIGTERM\",Uj)),a[0]instanceof tA.Transform&&a[0].pipe(p.stdin),a[1]instanceof tA.Transform&&p.stdout.pipe(a[1],{end:!1}),a[2]instanceof tA.Transform&&p.stderr.pipe(a[2],{end:!1}),{stdin:p.stdin,promise:new Promise(h=>{p.on(\"error\",E=>{switch(cm.delete(p),cm.size===0&&(process.off(\"SIGINT\",Mj),process.off(\"SIGTERM\",Uj)),E.code){case\"ENOENT\":a[2].write(`command not found: ${t}\n`),h(127);break;case\"EACCES\":a[2].write(`permission denied: ${t}\n`),h(128);break;default:a[2].write(`uncaught error: ${E.message}\n`),h(1);break}}),p.on(\"close\",E=>{cm.delete(p),cm.size===0&&(process.off(\"SIGINT\",Mj),process.off(\"SIGTERM\",Uj)),h(E!==null?E:129)})})}}}function Ope(t){return e=>{let r=e[0]===\"pipe\"?new tA.PassThrough:e[0];return{stdin:r,promise:Promise.resolve().then(()=>t({stdin:r,stdout:e[1],stderr:e[2]}))}}}function xT(t,e){return Hj.start(t,e)}function Tpe(t,e=null){let r=new tA.PassThrough,s=new Fpe.StringDecoder,a=\"\";return r.on(\"data\",n=>{let c=s.write(n),f;do if(f=c.indexOf(`\n`),f!==-1){let p=a+c.substring(0,f);c=c.substring(f+1),a=\"\",t(e!==null?`${e} ${p}`:p)}while(f!==-1);a+=c}),r.on(\"end\",()=>{let n=s.end();n!==\"\"&&t(e!==null?`${e} ${n}`:n)}),r}function Lpe(t,{prefix:e}){return{stdout:Tpe(r=>t.stdout.write(`${r}\n`),t.stdout.isTTY?e:null),stderr:Tpe(r=>t.stderr.write(`${r}\n`),t.stderr.isTTY?e:null)}}var Rpe,tA,Fpe,cm,Oc,_j,Hj,jj=Xe(()=>{Rpe=ut(_U()),tA=Ie(\"stream\"),Fpe=Ie(\"string_decoder\"),cm=new Set;Oc=class{constructor(e){this.stream=e}close(){}get(){return this.stream}},_j=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}},Hj=class t{constructor(e,r){this.stdin=null;this.stdout=null;this.stderr=null;this.pipe=null;this.ancestor=e,this.implementation=r}static start(e,{stdin:r,stdout:s,stderr:a}){let n=new t(null,e);return n.stdin=r,n.stdout=s,n.stderr=a,n}pipeTo(e,r=1){let s=new t(this,e),a=new _j;return s.pipe=a,s.stdout=this.stdout,s.stderr=this.stderr,(r&1)===1?this.stdout=a:this.ancestor!==null&&(this.stderr=this.ancestor.stdout),(r&2)===2?this.stderr=a:this.ancestor!==null&&(this.stderr=this.ancestor.stderr),s}async exec(){let e=[\"ignore\",\"ignore\",\"ignore\"];if(this.pipe)e[0]=\"pipe\";else{if(this.stdin===null)throw new Error(\"Assertion failed: No input stream registered\");e[0]=this.stdin.get()}let r;if(this.stdout===null)throw new Error(\"Assertion failed: No output stream registered\");r=this.stdout,e[1]=r.get();let s;if(this.stderr===null)throw new Error(\"Assertion failed: No error stream registered\");s=this.stderr,e[2]=s.get();let a=this.implementation(e);return this.pipe&&this.pipe.attach(a.stdin),await a.promise.then(n=>(r.close(),s.close(),n))}async run(){let e=[];for(let s=this;s;s=s.ancestor)e.push(s.exec());return(await Promise.all(e))[0]}}});var mv={};Vt(mv,{EntryCommand:()=>Av,ShellError:()=>Vl,execute:()=>vI,globUtils:()=>PT});function Mpe(t,e,r){let s=new Jl.PassThrough({autoDestroy:!0});switch(t){case 0:(e&1)===1&&r.stdin.pipe(s,{end:!1}),(e&2)===2&&r.stdin instanceof Jl.Writable&&s.pipe(r.stdin,{end:!1});break;case 1:(e&1)===1&&r.stdout.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stdout,{end:!1});break;case 2:(e&1)===1&&r.stderr.pipe(s,{end:!1}),(e&2)===2&&s.pipe(r.stderr,{end:!1});break;default:throw new Vl(`Bad file descriptor: \"${t}\"`)}return s}function QT(t,e={}){let r={...t,...e};return r.environment={...t.environment,...e.environment},r.variables={...t.variables,...e.variables},r}async function Znt(t,e,r){let s=[],a=new Jl.PassThrough;return a.on(\"data\",n=>s.push(n)),await TT(t,e,QT(r,{stdout:a})),Buffer.concat(s).toString().replace(/[\\r\\n]+$/,\"\")}async function Upe(t,e,r){let s=t.map(async n=>{let c=await um(n.args,e,r);return{name:n.name,value:c.join(\" \")}});return(await Promise.all(s)).reduce((n,c)=>(n[c.name]=c.value,n),{})}function kT(t){return t.match(/[^ \\r\\n\\t]+/g)||[]}async function Wpe(t,e,r,s,a=s){switch(t.name){case\"$\":s(String(process.pid));break;case\"#\":s(String(e.args.length));break;case\"@\":if(t.quoted)for(let n of e.args)a(n);else for(let n of e.args){let c=kT(n);for(let f=0;f<c.length-1;++f)a(c[f]);s(c[c.length-1])}break;case\"*\":{let n=e.args.join(\" \");if(t.quoted)s(n);else for(let c of kT(n))a(c)}break;case\"PPID\":s(String(process.ppid));break;case\"RANDOM\":s(String(Math.floor(Math.random()*32768)));break;default:{let n=parseInt(t.name,10),c,f=Number.isFinite(n);if(f?n>=0&&n<e.args.length&&(c=e.args[n]):Object.hasOwn(r.variables,t.name)?c=r.variables[t.name]:Object.hasOwn(r.environment,t.name)&&(c=r.environment[t.name]),typeof c<\"u\"&&t.alternativeValue?c=(await um(t.alternativeValue,e,r)).join(\" \"):typeof c>\"u\"&&(t.defaultValue?c=(await um(t.defaultValue,e,r)).join(\" \"):t.alternativeValue&&(c=\"\")),typeof c>\"u\")throw f?new Vl(`Unbound argument #${n}`):new Vl(`Unbound variable \"${t.name}\"`);if(t.quoted)s(c);else{let p=kT(c);for(let E=0;E<p.length-1;++E)a(p[E]);let h=p[p.length-1];typeof h<\"u\"&&s(h)}}break}}async function hv(t,e,r){if(t.type===\"number\"){if(Number.isInteger(t.value))return t.value;throw new Error(`Invalid number: \"${t.value}\", only integers are allowed`)}else if(t.type===\"variable\"){let s=[];await Wpe({...t,quoted:!0},e,r,n=>s.push(n));let a=Number(s.join(\" \"));return Number.isNaN(a)?hv({type:\"variable\",name:s.join(\" \")},e,r):hv({type:\"number\",value:a},e,r)}else return $nt[t.type](await hv(t.left,e,r),await hv(t.right,e,r))}async function um(t,e,r){let s=new Map,a=[],n=[],c=E=>{n.push(E)},f=()=>{n.length>0&&a.push(n.join(\"\")),n=[]},p=E=>{c(E),f()},h=(E,C,S)=>{let P=JSON.stringify({type:E,fd:C}),I=s.get(P);typeof I>\"u\"&&s.set(P,I=[]),I.push(S)};for(let E of t){let C=!1;switch(E.type){case\"redirection\":{let S=await um(E.args,e,r);for(let P of S)h(E.subtype,E.fd,P)}break;case\"argument\":for(let S of E.segments)switch(S.type){case\"text\":c(S.text);break;case\"glob\":c(S.pattern),C=!0;break;case\"shell\":{let P=await Znt(S.shell,e,r);if(S.quoted)c(P);else{let I=kT(P);for(let R=0;R<I.length-1;++R)p(I[R]);c(I[I.length-1])}}break;case\"variable\":await Wpe(S,e,r,c,p);break;case\"arithmetic\":c(String(await hv(S.arithmetic,e,r)));break}break}if(f(),C){let S=a.pop();if(typeof S>\"u\")throw new Error(\"Assertion failed: Expected a glob pattern to have been set\");let P=await e.glob.match(S,{cwd:r.cwd,baseFs:e.baseFs});if(P.length===0){let I=Lj(S)?\". Note: Brace expansion of arbitrary strings isn't currently supported. For more details, please read this issue: https://github.com/yarnpkg/berry/issues/22\":\"\";throw new Vl(`No matches found: \"${S}\"${I}`)}for(let I of P.sort())p(I)}}if(s.size>0){let E=[];for(let[C,S]of s.entries())E.splice(E.length,0,C,String(S.length),...S);a.splice(0,0,\"__ysh_set_redirects\",...E,\"--\")}return a}function gv(t,e,r){e.builtins.has(t[0])||(t=[\"command\",...t]);let s=fe.fromPortablePath(r.cwd),a=r.environment;typeof a.PWD<\"u\"&&(a={...a,PWD:s});let[n,...c]=t;if(n===\"command\")return Npe(c[0],c.slice(1),e,{cwd:s,env:a});let f=e.builtins.get(n);if(typeof f>\"u\")throw new Error(`Assertion failed: A builtin should exist for \"${n}\"`);return Ope(async({stdin:p,stdout:h,stderr:E})=>{let{stdin:C,stdout:S,stderr:P}=r;r.stdin=p,r.stdout=h,r.stderr=E;try{return await f(c,e,r)}finally{r.stdin=C,r.stdout=S,r.stderr=P}})}function eit(t,e,r){return s=>{let a=new Jl.PassThrough,n=TT(t,e,QT(r,{stdin:a}));return{stdin:a,promise:n}}}function tit(t,e,r){return s=>{let a=new Jl.PassThrough,n=TT(t,e,r);return{stdin:a,promise:n}}}function _pe(t,e,r,s){if(e.length===0)return t;{let a;do a=String(Math.random());while(Object.hasOwn(s.procedures,a));return s.procedures={...s.procedures},s.procedures[a]=t,gv([...e,\"__ysh_run_procedure\",a],r,s)}}async function Hpe(t,e,r){let s=t,a=null,n=null;for(;s;){let c=s.then?{...r}:r,f;switch(s.type){case\"command\":{let p=await um(s.args,e,r),h=await Upe(s.envs,e,r);f=s.envs.length?gv(p,e,QT(c,{environment:h})):gv(p,e,c)}break;case\"subshell\":{let p=await um(s.args,e,r),h=eit(s.subshell,e,c);f=_pe(h,p,e,c)}break;case\"group\":{let p=await um(s.args,e,r),h=tit(s.group,e,c);f=_pe(h,p,e,c)}break;case\"envs\":{let p=await Upe(s.envs,e,r);c.environment={...c.environment,...p},f=gv([\"true\"],e,c)}break}if(typeof f>\"u\")throw new Error(\"Assertion failed: An action should have been generated\");if(a===null)n=xT(f,{stdin:new Oc(c.stdin),stdout:new Oc(c.stdout),stderr:new Oc(c.stderr)});else{if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");switch(a){case\"|\":n=n.pipeTo(f,1);break;case\"|&\":n=n.pipeTo(f,3);break}}s.then?(a=s.then.type,s=s.then.chain):s=null}if(n===null)throw new Error(\"Assertion failed: The execution pipeline should have been setup\");return await n.run()}async function rit(t,e,r,{background:s=!1}={}){function a(n){let c=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],f=c[n%c.length];return jpe.default.hex(f)}if(s){let n=r.nextBackgroundJobIndex++,c=a(n),f=`[${n}]`,p=c(f),{stdout:h,stderr:E}=Lpe(r,{prefix:p});return r.backgroundJobs.push(Hpe(t,e,QT(r,{stdout:h,stderr:E})).catch(C=>E.write(`${C.message}\n`)).finally(()=>{r.stdout.isTTY&&r.stdout.write(`Job ${p}, '${c(AE(t))}' has ended\n`)})),0}return await Hpe(t,e,r)}async function nit(t,e,r,{background:s=!1}={}){let a,n=f=>{a=f,r.variables[\"?\"]=String(f)},c=async f=>{try{return await rit(f.chain,e,r,{background:s&&typeof f.then>\"u\"})}catch(p){if(!(p instanceof Vl))throw p;return r.stderr.write(`${p.message}\n`),1}};for(n(await c(t));t.then;){if(r.exitCode!==null)return r.exitCode;switch(t.then.type){case\"&&\":a===0&&n(await c(t.then.line));break;case\"||\":a!==0&&n(await c(t.then.line));break;default:throw new Error(`Assertion failed: Unsupported command type: \"${t.then.type}\"`)}t=t.then.line}return a}async function TT(t,e,r){let s=r.backgroundJobs;r.backgroundJobs=[];let a=0;for(let{command:n,type:c}of t){if(a=await nit(n,e,r,{background:c===\"&\"}),r.exitCode!==null)return r.exitCode;r.variables[\"?\"]=String(a)}return await Promise.all(r.backgroundJobs),r.backgroundJobs=s,a}function Ype(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=>dv(e))||\"alternativeValue\"in t&&!!t.alternativeValue&&t.alternativeValue.some(e=>dv(e));case\"arithmetic\":return Gj(t.arithmetic);case\"shell\":return qj(t.shell);default:return!1}}function dv(t){switch(t.type){case\"redirection\":return t.args.some(e=>dv(e));case\"argument\":return t.segments.some(e=>Ype(e));default:throw new Error(`Assertion failed: Unsupported argument type: \"${t.type}\"`)}}function Gj(t){switch(t.type){case\"variable\":return Ype(t);case\"number\":return!1;default:return Gj(t.left)||Gj(t.right)}}function qj(t){return t.some(({command:e})=>{for(;e;){let r=e.chain;for(;r;){let s;switch(r.type){case\"subshell\":s=qj(r.subshell);break;case\"command\":s=r.envs.some(a=>a.args.some(n=>dv(n)))||r.args.some(a=>dv(a));break}if(s)return!0;if(!r.then)break;r=r.then.chain}if(!e.then)break;e=e.then.line}return!1})}async function vI(t,e=[],{baseFs:r=new Yn,builtins:s={},cwd:a=fe.toPortablePath(process.cwd()),env:n=process.env,stdin:c=process.stdin,stdout:f=process.stdout,stderr:p=process.stderr,variables:h={},glob:E=PT}={}){let C={};for(let[I,R]of Object.entries(n))typeof R<\"u\"&&(C[I]=R);let S=new Map(Xnt);for(let[I,R]of Object.entries(s))S.set(I,R);c===null&&(c=new Jl.PassThrough,c.end());let P=ux(t,E);if(!qj(P)&&P.length>0&&e.length>0){let{command:I}=P[P.length-1];for(;I.then;)I=I.then.line;let R=I.chain;for(;R.then;)R=R.then.chain;R.type===\"command\"&&(R.args=R.args.concat(e.map(N=>({type:\"argument\",segments:[{type:\"text\",text:N}]}))))}return await TT(P,{args:e,baseFs:r,builtins:S,initialStdin:c,initialStdout:f,initialStderr:p,glob:E},{cwd:a,environment:C,exitCode:null,procedures:{},stdin:c,stdout:f,stderr:p,variables:Object.assign({},h,{\"?\":0}),nextBackgroundJobIndex:1,backgroundJobs:[]})}var jpe,Gpe,Jl,qpe,Xnt,$nt,pv=Xe(()=>{Dt();wc();jpe=ut(TE()),Gpe=Ie(\"os\"),Jl=Ie(\"stream\"),qpe=Ie(\"timers/promises\");Dpe();bpe();Qpe();jj();jj();Xnt=new Map([[\"cd\",async([t=(0,Gpe.homedir)(),...e],r,s)=>{let a=J.resolve(s.cwd,fe.toPortablePath(t));if(!(await r.baseFs.statPromise(a).catch(c=>{throw c.code===\"ENOENT\"?new Vl(`cd: no such file or directory: ${t}`):c})).isDirectory())throw new Vl(`cd: not a directory: ${t}`);return s.cwd=a,0}],[\"pwd\",async(t,e,r)=>(r.stdout.write(`${fe.fromPortablePath(r.cwd)}\n`),0)],[\":\",async(t,e,r)=>0],[\"true\",async(t,e,r)=>0],[\"false\",async(t,e,r)=>1],[\"exit\",async([t,...e],r,s)=>s.exitCode=parseInt(t??s.variables[\"?\"],10)],[\"echo\",async(t,e,r)=>(r.stdout.write(`${t.join(\" \")}\n`),0)],[\"sleep\",async([t],e,r)=>{if(typeof t>\"u\")throw new Vl(\"sleep: missing operand\");let s=Number(t);if(Number.isNaN(s))throw new Vl(`sleep: invalid time interval '${t}'`);return await(0,qpe.setTimeout)(1e3*s,0)}],[\"unset\",async(t,e,r)=>{for(let s of t)delete r.environment[s],delete r.variables[s];return 0}],[\"__ysh_run_procedure\",async(t,e,r)=>{let s=r.procedures[t[0]];return await xT(s,{stdin:new Oc(r.stdin),stdout:new Oc(r.stdout),stderr:new Oc(r.stderr)}).run()}],[\"__ysh_set_redirects\",async(t,e,r)=>{let s=r.stdin,a=r.stdout,n=r.stderr,c=[],f=[],p=[],h=0;for(;t[h]!==\"--\";){let C=t[h++],{type:S,fd:P}=JSON.parse(C),I=W=>{switch(P){case null:case 0:c.push(W);break;default:throw new Error(`Unsupported file descriptor: \"${P}\"`)}},R=W=>{switch(P){case null:case 1:f.push(W);break;case 2:p.push(W);break;default:throw new Error(`Unsupported file descriptor: \"${P}\"`)}},N=Number(t[h++]),U=h+N;for(let W=h;W<U;++h,++W)switch(S){case\"<\":I(()=>e.baseFs.createReadStream(J.resolve(r.cwd,fe.toPortablePath(t[W]))));break;case\"<<<\":I(()=>{let ee=new Jl.PassThrough;return process.nextTick(()=>{ee.write(`${t[W]}\n`),ee.end()}),ee});break;case\"<&\":I(()=>Mpe(Number(t[W]),1,r));break;case\">\":case\">>\":{let ee=J.resolve(r.cwd,fe.toPortablePath(t[W]));R(ee===\"/dev/null\"?new Jl.Writable({autoDestroy:!0,emitClose:!0,write(ie,ue,le){setImmediate(le)}}):e.baseFs.createWriteStream(ee,S===\">>\"?{flags:\"a\"}:void 0))}break;case\">&\":R(Mpe(Number(t[W]),2,r));break;default:throw new Error(`Assertion failed: Unsupported redirection type: \"${S}\"`)}}if(c.length>0){let C=new Jl.PassThrough;s=C;let S=P=>{if(P===c.length)C.end();else{let I=c[P]();I.pipe(C,{end:!1}),I.on(\"end\",()=>{S(P+1)})}};S(0)}if(f.length>0){let C=new Jl.PassThrough;a=C;for(let S of f)C.pipe(S)}if(p.length>0){let C=new Jl.PassThrough;n=C;for(let S of p)C.pipe(S)}let E=await xT(gv(t.slice(h+1),e,r),{stdin:new Oc(s),stdout:new Oc(a),stderr:new Oc(n)}).run();return await Promise.all(f.map(C=>new Promise((S,P)=>{C.on(\"error\",I=>{P(I)}),C.on(\"close\",()=>{S()}),C.end()}))),await Promise.all(p.map(C=>new Promise((S,P)=>{C.on(\"error\",I=>{P(I)}),C.on(\"close\",()=>{S()}),C.end()}))),E}]]);$nt={addition:(t,e)=>t+e,subtraction:(t,e)=>t-e,multiplication:(t,e)=>t*e,division:(t,e)=>Math.trunc(t/e)}});var Vpe=_((S4t,RT)=>{function iit(){var t=0,e=1,r=2,s=3,a=4,n=5,c=6,f=7,p=8,h=9,E=10,C=11,S=12,P=13,I=14,R=15,N=16,U=17,W=0,ee=1,ie=2,ue=3,le=4;function me(g,we){return 55296<=g.charCodeAt(we)&&g.charCodeAt(we)<=56319&&56320<=g.charCodeAt(we+1)&&g.charCodeAt(we+1)<=57343}function pe(g,we){we===void 0&&(we=0);var ye=g.charCodeAt(we);if(55296<=ye&&ye<=56319&&we<g.length-1){var Ae=ye,se=g.charCodeAt(we+1);return 56320<=se&&se<=57343?(Ae-55296)*1024+(se-56320)+65536:Ae}if(56320<=ye&&ye<=57343&&we>=1){var Ae=g.charCodeAt(we-1),se=ye;return 55296<=Ae&&Ae<=56319?(Ae-55296)*1024+(se-56320)+65536:se}return ye}function Be(g,we,ye){var Ae=[g].concat(we).concat([ye]),se=Ae[Ae.length-2],Z=ye,De=Ae.lastIndexOf(I);if(De>1&&Ae.slice(1,De).every(function(j){return j==s})&&[s,P,U].indexOf(g)==-1)return ie;var Re=Ae.lastIndexOf(a);if(Re>0&&Ae.slice(1,Re).every(function(j){return j==a})&&[S,a].indexOf(se)==-1)return Ae.filter(function(j){return j==a}).length%2==1?ue:le;if(se==t&&Z==e)return W;if(se==r||se==t||se==e)return Z==I&&we.every(function(j){return j==s})?ie:ee;if(Z==r||Z==t||Z==e)return ee;if(se==c&&(Z==c||Z==f||Z==h||Z==E))return W;if((se==h||se==f)&&(Z==f||Z==p))return W;if((se==E||se==p)&&Z==p)return W;if(Z==s||Z==R)return W;if(Z==n)return W;if(se==S)return W;var mt=Ae.indexOf(s)!=-1?Ae.lastIndexOf(s)-1:Ae.length-2;return[P,U].indexOf(Ae[mt])!=-1&&Ae.slice(mt+1,-1).every(function(j){return j==s})&&Z==I||se==R&&[N,U].indexOf(Z)!=-1?W:we.indexOf(a)!=-1?ie:se==a&&Z==a?W:ee}this.nextBreak=function(g,we){if(we===void 0&&(we=0),we<0)return 0;if(we>=g.length-1)return g.length;for(var ye=Ce(pe(g,we)),Ae=[],se=we+1;se<g.length;se++)if(!me(g,se-1)){var Z=Ce(pe(g,se));if(Be(ye,Ae,Z))return se;Ae.push(Z)}return g.length},this.splitGraphemes=function(g){for(var we=[],ye=0,Ae;(Ae=this.nextBreak(g,ye))<g.length;)we.push(g.slice(ye,Ae)),ye=Ae;return ye<g.length&&we.push(g.slice(ye)),we},this.iterateGraphemes=function(g){var we=0,ye={next:function(){var Ae,se;return(se=this.nextBreak(g,we))<g.length?(Ae=g.slice(we,se),we=se,{value:Ae,done:!1}):we<g.length?(Ae=g.slice(we),we=g.length,{value:Ae,done:!1}):{value:void 0,done:!0}}.bind(this)};return typeof Symbol<\"u\"&&Symbol.iterator&&(ye[Symbol.iterator]=function(){return ye}),ye},this.countGraphemes=function(g){for(var we=0,ye=0,Ae;(Ae=this.nextBreak(g,ye))<g.length;)ye=Ae,we++;return ye<g.length&&we++,we};function Ce(g){return 1536<=g&&g<=1541||g==1757||g==1807||g==2274||g==3406||g==69821||70082<=g&&g<=70083||g==72250||72326<=g&&g<=72329||g==73030?S:g==13?t:g==10?e:0<=g&&g<=9||11<=g&&g<=12||14<=g&&g<=31||127<=g&&g<=159||g==173||g==1564||g==6158||g==8203||8206<=g&&g<=8207||g==8232||g==8233||8234<=g&&g<=8238||8288<=g&&g<=8292||g==8293||8294<=g&&g<=8303||55296<=g&&g<=57343||g==65279||65520<=g&&g<=65528||65529<=g&&g<=65531||113824<=g&&g<=113827||119155<=g&&g<=119162||g==917504||g==917505||917506<=g&&g<=917535||917632<=g&&g<=917759||918e3<=g&&g<=921599?r:768<=g&&g<=879||1155<=g&&g<=1159||1160<=g&&g<=1161||1425<=g&&g<=1469||g==1471||1473<=g&&g<=1474||1476<=g&&g<=1477||g==1479||1552<=g&&g<=1562||1611<=g&&g<=1631||g==1648||1750<=g&&g<=1756||1759<=g&&g<=1764||1767<=g&&g<=1768||1770<=g&&g<=1773||g==1809||1840<=g&&g<=1866||1958<=g&&g<=1968||2027<=g&&g<=2035||2070<=g&&g<=2073||2075<=g&&g<=2083||2085<=g&&g<=2087||2089<=g&&g<=2093||2137<=g&&g<=2139||2260<=g&&g<=2273||2275<=g&&g<=2306||g==2362||g==2364||2369<=g&&g<=2376||g==2381||2385<=g&&g<=2391||2402<=g&&g<=2403||g==2433||g==2492||g==2494||2497<=g&&g<=2500||g==2509||g==2519||2530<=g&&g<=2531||2561<=g&&g<=2562||g==2620||2625<=g&&g<=2626||2631<=g&&g<=2632||2635<=g&&g<=2637||g==2641||2672<=g&&g<=2673||g==2677||2689<=g&&g<=2690||g==2748||2753<=g&&g<=2757||2759<=g&&g<=2760||g==2765||2786<=g&&g<=2787||2810<=g&&g<=2815||g==2817||g==2876||g==2878||g==2879||2881<=g&&g<=2884||g==2893||g==2902||g==2903||2914<=g&&g<=2915||g==2946||g==3006||g==3008||g==3021||g==3031||g==3072||3134<=g&&g<=3136||3142<=g&&g<=3144||3146<=g&&g<=3149||3157<=g&&g<=3158||3170<=g&&g<=3171||g==3201||g==3260||g==3263||g==3266||g==3270||3276<=g&&g<=3277||3285<=g&&g<=3286||3298<=g&&g<=3299||3328<=g&&g<=3329||3387<=g&&g<=3388||g==3390||3393<=g&&g<=3396||g==3405||g==3415||3426<=g&&g<=3427||g==3530||g==3535||3538<=g&&g<=3540||g==3542||g==3551||g==3633||3636<=g&&g<=3642||3655<=g&&g<=3662||g==3761||3764<=g&&g<=3769||3771<=g&&g<=3772||3784<=g&&g<=3789||3864<=g&&g<=3865||g==3893||g==3895||g==3897||3953<=g&&g<=3966||3968<=g&&g<=3972||3974<=g&&g<=3975||3981<=g&&g<=3991||3993<=g&&g<=4028||g==4038||4141<=g&&g<=4144||4146<=g&&g<=4151||4153<=g&&g<=4154||4157<=g&&g<=4158||4184<=g&&g<=4185||4190<=g&&g<=4192||4209<=g&&g<=4212||g==4226||4229<=g&&g<=4230||g==4237||g==4253||4957<=g&&g<=4959||5906<=g&&g<=5908||5938<=g&&g<=5940||5970<=g&&g<=5971||6002<=g&&g<=6003||6068<=g&&g<=6069||6071<=g&&g<=6077||g==6086||6089<=g&&g<=6099||g==6109||6155<=g&&g<=6157||6277<=g&&g<=6278||g==6313||6432<=g&&g<=6434||6439<=g&&g<=6440||g==6450||6457<=g&&g<=6459||6679<=g&&g<=6680||g==6683||g==6742||6744<=g&&g<=6750||g==6752||g==6754||6757<=g&&g<=6764||6771<=g&&g<=6780||g==6783||6832<=g&&g<=6845||g==6846||6912<=g&&g<=6915||g==6964||6966<=g&&g<=6970||g==6972||g==6978||7019<=g&&g<=7027||7040<=g&&g<=7041||7074<=g&&g<=7077||7080<=g&&g<=7081||7083<=g&&g<=7085||g==7142||7144<=g&&g<=7145||g==7149||7151<=g&&g<=7153||7212<=g&&g<=7219||7222<=g&&g<=7223||7376<=g&&g<=7378||7380<=g&&g<=7392||7394<=g&&g<=7400||g==7405||g==7412||7416<=g&&g<=7417||7616<=g&&g<=7673||7675<=g&&g<=7679||g==8204||8400<=g&&g<=8412||8413<=g&&g<=8416||g==8417||8418<=g&&g<=8420||8421<=g&&g<=8432||11503<=g&&g<=11505||g==11647||11744<=g&&g<=11775||12330<=g&&g<=12333||12334<=g&&g<=12335||12441<=g&&g<=12442||g==42607||42608<=g&&g<=42610||42612<=g&&g<=42621||42654<=g&&g<=42655||42736<=g&&g<=42737||g==43010||g==43014||g==43019||43045<=g&&g<=43046||43204<=g&&g<=43205||43232<=g&&g<=43249||43302<=g&&g<=43309||43335<=g&&g<=43345||43392<=g&&g<=43394||g==43443||43446<=g&&g<=43449||g==43452||g==43493||43561<=g&&g<=43566||43569<=g&&g<=43570||43573<=g&&g<=43574||g==43587||g==43596||g==43644||g==43696||43698<=g&&g<=43700||43703<=g&&g<=43704||43710<=g&&g<=43711||g==43713||43756<=g&&g<=43757||g==43766||g==44005||g==44008||g==44013||g==64286||65024<=g&&g<=65039||65056<=g&&g<=65071||65438<=g&&g<=65439||g==66045||g==66272||66422<=g&&g<=66426||68097<=g&&g<=68099||68101<=g&&g<=68102||68108<=g&&g<=68111||68152<=g&&g<=68154||g==68159||68325<=g&&g<=68326||g==69633||69688<=g&&g<=69702||69759<=g&&g<=69761||69811<=g&&g<=69814||69817<=g&&g<=69818||69888<=g&&g<=69890||69927<=g&&g<=69931||69933<=g&&g<=69940||g==70003||70016<=g&&g<=70017||70070<=g&&g<=70078||70090<=g&&g<=70092||70191<=g&&g<=70193||g==70196||70198<=g&&g<=70199||g==70206||g==70367||70371<=g&&g<=70378||70400<=g&&g<=70401||g==70460||g==70462||g==70464||g==70487||70502<=g&&g<=70508||70512<=g&&g<=70516||70712<=g&&g<=70719||70722<=g&&g<=70724||g==70726||g==70832||70835<=g&&g<=70840||g==70842||g==70845||70847<=g&&g<=70848||70850<=g&&g<=70851||g==71087||71090<=g&&g<=71093||71100<=g&&g<=71101||71103<=g&&g<=71104||71132<=g&&g<=71133||71219<=g&&g<=71226||g==71229||71231<=g&&g<=71232||g==71339||g==71341||71344<=g&&g<=71349||g==71351||71453<=g&&g<=71455||71458<=g&&g<=71461||71463<=g&&g<=71467||72193<=g&&g<=72198||72201<=g&&g<=72202||72243<=g&&g<=72248||72251<=g&&g<=72254||g==72263||72273<=g&&g<=72278||72281<=g&&g<=72283||72330<=g&&g<=72342||72344<=g&&g<=72345||72752<=g&&g<=72758||72760<=g&&g<=72765||g==72767||72850<=g&&g<=72871||72874<=g&&g<=72880||72882<=g&&g<=72883||72885<=g&&g<=72886||73009<=g&&g<=73014||g==73018||73020<=g&&g<=73021||73023<=g&&g<=73029||g==73031||92912<=g&&g<=92916||92976<=g&&g<=92982||94095<=g&&g<=94098||113821<=g&&g<=113822||g==119141||119143<=g&&g<=119145||119150<=g&&g<=119154||119163<=g&&g<=119170||119173<=g&&g<=119179||119210<=g&&g<=119213||119362<=g&&g<=119364||121344<=g&&g<=121398||121403<=g&&g<=121452||g==121461||g==121476||121499<=g&&g<=121503||121505<=g&&g<=121519||122880<=g&&g<=122886||122888<=g&&g<=122904||122907<=g&&g<=122913||122915<=g&&g<=122916||122918<=g&&g<=122922||125136<=g&&g<=125142||125252<=g&&g<=125258||917536<=g&&g<=917631||917760<=g&&g<=917999?s:127462<=g&&g<=127487?a:g==2307||g==2363||2366<=g&&g<=2368||2377<=g&&g<=2380||2382<=g&&g<=2383||2434<=g&&g<=2435||2495<=g&&g<=2496||2503<=g&&g<=2504||2507<=g&&g<=2508||g==2563||2622<=g&&g<=2624||g==2691||2750<=g&&g<=2752||g==2761||2763<=g&&g<=2764||2818<=g&&g<=2819||g==2880||2887<=g&&g<=2888||2891<=g&&g<=2892||g==3007||3009<=g&&g<=3010||3014<=g&&g<=3016||3018<=g&&g<=3020||3073<=g&&g<=3075||3137<=g&&g<=3140||3202<=g&&g<=3203||g==3262||3264<=g&&g<=3265||3267<=g&&g<=3268||3271<=g&&g<=3272||3274<=g&&g<=3275||3330<=g&&g<=3331||3391<=g&&g<=3392||3398<=g&&g<=3400||3402<=g&&g<=3404||3458<=g&&g<=3459||3536<=g&&g<=3537||3544<=g&&g<=3550||3570<=g&&g<=3571||g==3635||g==3763||3902<=g&&g<=3903||g==3967||g==4145||4155<=g&&g<=4156||4182<=g&&g<=4183||g==4228||g==6070||6078<=g&&g<=6085||6087<=g&&g<=6088||6435<=g&&g<=6438||6441<=g&&g<=6443||6448<=g&&g<=6449||6451<=g&&g<=6456||6681<=g&&g<=6682||g==6741||g==6743||6765<=g&&g<=6770||g==6916||g==6965||g==6971||6973<=g&&g<=6977||6979<=g&&g<=6980||g==7042||g==7073||7078<=g&&g<=7079||g==7082||g==7143||7146<=g&&g<=7148||g==7150||7154<=g&&g<=7155||7204<=g&&g<=7211||7220<=g&&g<=7221||g==7393||7410<=g&&g<=7411||g==7415||43043<=g&&g<=43044||g==43047||43136<=g&&g<=43137||43188<=g&&g<=43203||43346<=g&&g<=43347||g==43395||43444<=g&&g<=43445||43450<=g&&g<=43451||43453<=g&&g<=43456||43567<=g&&g<=43568||43571<=g&&g<=43572||g==43597||g==43755||43758<=g&&g<=43759||g==43765||44003<=g&&g<=44004||44006<=g&&g<=44007||44009<=g&&g<=44010||g==44012||g==69632||g==69634||g==69762||69808<=g&&g<=69810||69815<=g&&g<=69816||g==69932||g==70018||70067<=g&&g<=70069||70079<=g&&g<=70080||70188<=g&&g<=70190||70194<=g&&g<=70195||g==70197||70368<=g&&g<=70370||70402<=g&&g<=70403||g==70463||70465<=g&&g<=70468||70471<=g&&g<=70472||70475<=g&&g<=70477||70498<=g&&g<=70499||70709<=g&&g<=70711||70720<=g&&g<=70721||g==70725||70833<=g&&g<=70834||g==70841||70843<=g&&g<=70844||g==70846||g==70849||71088<=g&&g<=71089||71096<=g&&g<=71099||g==71102||71216<=g&&g<=71218||71227<=g&&g<=71228||g==71230||g==71340||71342<=g&&g<=71343||g==71350||71456<=g&&g<=71457||g==71462||72199<=g&&g<=72200||g==72249||72279<=g&&g<=72280||g==72343||g==72751||g==72766||g==72873||g==72881||g==72884||94033<=g&&g<=94078||g==119142||g==119149?n:4352<=g&&g<=4447||43360<=g&&g<=43388?c:4448<=g&&g<=4519||55216<=g&&g<=55238?f:4520<=g&&g<=4607||55243<=g&&g<=55291?p:g==44032||g==44060||g==44088||g==44116||g==44144||g==44172||g==44200||g==44228||g==44256||g==44284||g==44312||g==44340||g==44368||g==44396||g==44424||g==44452||g==44480||g==44508||g==44536||g==44564||g==44592||g==44620||g==44648||g==44676||g==44704||g==44732||g==44760||g==44788||g==44816||g==44844||g==44872||g==44900||g==44928||g==44956||g==44984||g==45012||g==45040||g==45068||g==45096||g==45124||g==45152||g==45180||g==45208||g==45236||g==45264||g==45292||g==45320||g==45348||g==45376||g==45404||g==45432||g==45460||g==45488||g==45516||g==45544||g==45572||g==45600||g==45628||g==45656||g==45684||g==45712||g==45740||g==45768||g==45796||g==45824||g==45852||g==45880||g==45908||g==45936||g==45964||g==45992||g==46020||g==46048||g==46076||g==46104||g==46132||g==46160||g==46188||g==46216||g==46244||g==46272||g==46300||g==46328||g==46356||g==46384||g==46412||g==46440||g==46468||g==46496||g==46524||g==46552||g==46580||g==46608||g==46636||g==46664||g==46692||g==46720||g==46748||g==46776||g==46804||g==46832||g==46860||g==46888||g==46916||g==46944||g==46972||g==47e3||g==47028||g==47056||g==47084||g==47112||g==47140||g==47168||g==47196||g==47224||g==47252||g==47280||g==47308||g==47336||g==47364||g==47392||g==47420||g==47448||g==47476||g==47504||g==47532||g==47560||g==47588||g==47616||g==47644||g==47672||g==47700||g==47728||g==47756||g==47784||g==47812||g==47840||g==47868||g==47896||g==47924||g==47952||g==47980||g==48008||g==48036||g==48064||g==48092||g==48120||g==48148||g==48176||g==48204||g==48232||g==48260||g==48288||g==48316||g==48344||g==48372||g==48400||g==48428||g==48456||g==48484||g==48512||g==48540||g==48568||g==48596||g==48624||g==48652||g==48680||g==48708||g==48736||g==48764||g==48792||g==48820||g==48848||g==48876||g==48904||g==48932||g==48960||g==48988||g==49016||g==49044||g==49072||g==49100||g==49128||g==49156||g==49184||g==49212||g==49240||g==49268||g==49296||g==49324||g==49352||g==49380||g==49408||g==49436||g==49464||g==49492||g==49520||g==49548||g==49576||g==49604||g==49632||g==49660||g==49688||g==49716||g==49744||g==49772||g==49800||g==49828||g==49856||g==49884||g==49912||g==49940||g==49968||g==49996||g==50024||g==50052||g==50080||g==50108||g==50136||g==50164||g==50192||g==50220||g==50248||g==50276||g==50304||g==50332||g==50360||g==50388||g==50416||g==50444||g==50472||g==50500||g==50528||g==50556||g==50584||g==50612||g==50640||g==50668||g==50696||g==50724||g==50752||g==50780||g==50808||g==50836||g==50864||g==50892||g==50920||g==50948||g==50976||g==51004||g==51032||g==51060||g==51088||g==51116||g==51144||g==51172||g==51200||g==51228||g==51256||g==51284||g==51312||g==51340||g==51368||g==51396||g==51424||g==51452||g==51480||g==51508||g==51536||g==51564||g==51592||g==51620||g==51648||g==51676||g==51704||g==51732||g==51760||g==51788||g==51816||g==51844||g==51872||g==51900||g==51928||g==51956||g==51984||g==52012||g==52040||g==52068||g==52096||g==52124||g==52152||g==52180||g==52208||g==52236||g==52264||g==52292||g==52320||g==52348||g==52376||g==52404||g==52432||g==52460||g==52488||g==52516||g==52544||g==52572||g==52600||g==52628||g==52656||g==52684||g==52712||g==52740||g==52768||g==52796||g==52824||g==52852||g==52880||g==52908||g==52936||g==52964||g==52992||g==53020||g==53048||g==53076||g==53104||g==53132||g==53160||g==53188||g==53216||g==53244||g==53272||g==53300||g==53328||g==53356||g==53384||g==53412||g==53440||g==53468||g==53496||g==53524||g==53552||g==53580||g==53608||g==53636||g==53664||g==53692||g==53720||g==53748||g==53776||g==53804||g==53832||g==53860||g==53888||g==53916||g==53944||g==53972||g==54e3||g==54028||g==54056||g==54084||g==54112||g==54140||g==54168||g==54196||g==54224||g==54252||g==54280||g==54308||g==54336||g==54364||g==54392||g==54420||g==54448||g==54476||g==54504||g==54532||g==54560||g==54588||g==54616||g==54644||g==54672||g==54700||g==54728||g==54756||g==54784||g==54812||g==54840||g==54868||g==54896||g==54924||g==54952||g==54980||g==55008||g==55036||g==55064||g==55092||g==55120||g==55148||g==55176?h:44033<=g&&g<=44059||44061<=g&&g<=44087||44089<=g&&g<=44115||44117<=g&&g<=44143||44145<=g&&g<=44171||44173<=g&&g<=44199||44201<=g&&g<=44227||44229<=g&&g<=44255||44257<=g&&g<=44283||44285<=g&&g<=44311||44313<=g&&g<=44339||44341<=g&&g<=44367||44369<=g&&g<=44395||44397<=g&&g<=44423||44425<=g&&g<=44451||44453<=g&&g<=44479||44481<=g&&g<=44507||44509<=g&&g<=44535||44537<=g&&g<=44563||44565<=g&&g<=44591||44593<=g&&g<=44619||44621<=g&&g<=44647||44649<=g&&g<=44675||44677<=g&&g<=44703||44705<=g&&g<=44731||44733<=g&&g<=44759||44761<=g&&g<=44787||44789<=g&&g<=44815||44817<=g&&g<=44843||44845<=g&&g<=44871||44873<=g&&g<=44899||44901<=g&&g<=44927||44929<=g&&g<=44955||44957<=g&&g<=44983||44985<=g&&g<=45011||45013<=g&&g<=45039||45041<=g&&g<=45067||45069<=g&&g<=45095||45097<=g&&g<=45123||45125<=g&&g<=45151||45153<=g&&g<=45179||45181<=g&&g<=45207||45209<=g&&g<=45235||45237<=g&&g<=45263||45265<=g&&g<=45291||45293<=g&&g<=45319||45321<=g&&g<=45347||45349<=g&&g<=45375||45377<=g&&g<=45403||45405<=g&&g<=45431||45433<=g&&g<=45459||45461<=g&&g<=45487||45489<=g&&g<=45515||45517<=g&&g<=45543||45545<=g&&g<=45571||45573<=g&&g<=45599||45601<=g&&g<=45627||45629<=g&&g<=45655||45657<=g&&g<=45683||45685<=g&&g<=45711||45713<=g&&g<=45739||45741<=g&&g<=45767||45769<=g&&g<=45795||45797<=g&&g<=45823||45825<=g&&g<=45851||45853<=g&&g<=45879||45881<=g&&g<=45907||45909<=g&&g<=45935||45937<=g&&g<=45963||45965<=g&&g<=45991||45993<=g&&g<=46019||46021<=g&&g<=46047||46049<=g&&g<=46075||46077<=g&&g<=46103||46105<=g&&g<=46131||46133<=g&&g<=46159||46161<=g&&g<=46187||46189<=g&&g<=46215||46217<=g&&g<=46243||46245<=g&&g<=46271||46273<=g&&g<=46299||46301<=g&&g<=46327||46329<=g&&g<=46355||46357<=g&&g<=46383||46385<=g&&g<=46411||46413<=g&&g<=46439||46441<=g&&g<=46467||46469<=g&&g<=46495||46497<=g&&g<=46523||46525<=g&&g<=46551||46553<=g&&g<=46579||46581<=g&&g<=46607||46609<=g&&g<=46635||46637<=g&&g<=46663||46665<=g&&g<=46691||46693<=g&&g<=46719||46721<=g&&g<=46747||46749<=g&&g<=46775||46777<=g&&g<=46803||46805<=g&&g<=46831||46833<=g&&g<=46859||46861<=g&&g<=46887||46889<=g&&g<=46915||46917<=g&&g<=46943||46945<=g&&g<=46971||46973<=g&&g<=46999||47001<=g&&g<=47027||47029<=g&&g<=47055||47057<=g&&g<=47083||47085<=g&&g<=47111||47113<=g&&g<=47139||47141<=g&&g<=47167||47169<=g&&g<=47195||47197<=g&&g<=47223||47225<=g&&g<=47251||47253<=g&&g<=47279||47281<=g&&g<=47307||47309<=g&&g<=47335||47337<=g&&g<=47363||47365<=g&&g<=47391||47393<=g&&g<=47419||47421<=g&&g<=47447||47449<=g&&g<=47475||47477<=g&&g<=47503||47505<=g&&g<=47531||47533<=g&&g<=47559||47561<=g&&g<=47587||47589<=g&&g<=47615||47617<=g&&g<=47643||47645<=g&&g<=47671||47673<=g&&g<=47699||47701<=g&&g<=47727||47729<=g&&g<=47755||47757<=g&&g<=47783||47785<=g&&g<=47811||47813<=g&&g<=47839||47841<=g&&g<=47867||47869<=g&&g<=47895||47897<=g&&g<=47923||47925<=g&&g<=47951||47953<=g&&g<=47979||47981<=g&&g<=48007||48009<=g&&g<=48035||48037<=g&&g<=48063||48065<=g&&g<=48091||48093<=g&&g<=48119||48121<=g&&g<=48147||48149<=g&&g<=48175||48177<=g&&g<=48203||48205<=g&&g<=48231||48233<=g&&g<=48259||48261<=g&&g<=48287||48289<=g&&g<=48315||48317<=g&&g<=48343||48345<=g&&g<=48371||48373<=g&&g<=48399||48401<=g&&g<=48427||48429<=g&&g<=48455||48457<=g&&g<=48483||48485<=g&&g<=48511||48513<=g&&g<=48539||48541<=g&&g<=48567||48569<=g&&g<=48595||48597<=g&&g<=48623||48625<=g&&g<=48651||48653<=g&&g<=48679||48681<=g&&g<=48707||48709<=g&&g<=48735||48737<=g&&g<=48763||48765<=g&&g<=48791||48793<=g&&g<=48819||48821<=g&&g<=48847||48849<=g&&g<=48875||48877<=g&&g<=48903||48905<=g&&g<=48931||48933<=g&&g<=48959||48961<=g&&g<=48987||48989<=g&&g<=49015||49017<=g&&g<=49043||49045<=g&&g<=49071||49073<=g&&g<=49099||49101<=g&&g<=49127||49129<=g&&g<=49155||49157<=g&&g<=49183||49185<=g&&g<=49211||49213<=g&&g<=49239||49241<=g&&g<=49267||49269<=g&&g<=49295||49297<=g&&g<=49323||49325<=g&&g<=49351||49353<=g&&g<=49379||49381<=g&&g<=49407||49409<=g&&g<=49435||49437<=g&&g<=49463||49465<=g&&g<=49491||49493<=g&&g<=49519||49521<=g&&g<=49547||49549<=g&&g<=49575||49577<=g&&g<=49603||49605<=g&&g<=49631||49633<=g&&g<=49659||49661<=g&&g<=49687||49689<=g&&g<=49715||49717<=g&&g<=49743||49745<=g&&g<=49771||49773<=g&&g<=49799||49801<=g&&g<=49827||49829<=g&&g<=49855||49857<=g&&g<=49883||49885<=g&&g<=49911||49913<=g&&g<=49939||49941<=g&&g<=49967||49969<=g&&g<=49995||49997<=g&&g<=50023||50025<=g&&g<=50051||50053<=g&&g<=50079||50081<=g&&g<=50107||50109<=g&&g<=50135||50137<=g&&g<=50163||50165<=g&&g<=50191||50193<=g&&g<=50219||50221<=g&&g<=50247||50249<=g&&g<=50275||50277<=g&&g<=50303||50305<=g&&g<=50331||50333<=g&&g<=50359||50361<=g&&g<=50387||50389<=g&&g<=50415||50417<=g&&g<=50443||50445<=g&&g<=50471||50473<=g&&g<=50499||50501<=g&&g<=50527||50529<=g&&g<=50555||50557<=g&&g<=50583||50585<=g&&g<=50611||50613<=g&&g<=50639||50641<=g&&g<=50667||50669<=g&&g<=50695||50697<=g&&g<=50723||50725<=g&&g<=50751||50753<=g&&g<=50779||50781<=g&&g<=50807||50809<=g&&g<=50835||50837<=g&&g<=50863||50865<=g&&g<=50891||50893<=g&&g<=50919||50921<=g&&g<=50947||50949<=g&&g<=50975||50977<=g&&g<=51003||51005<=g&&g<=51031||51033<=g&&g<=51059||51061<=g&&g<=51087||51089<=g&&g<=51115||51117<=g&&g<=51143||51145<=g&&g<=51171||51173<=g&&g<=51199||51201<=g&&g<=51227||51229<=g&&g<=51255||51257<=g&&g<=51283||51285<=g&&g<=51311||51313<=g&&g<=51339||51341<=g&&g<=51367||51369<=g&&g<=51395||51397<=g&&g<=51423||51425<=g&&g<=51451||51453<=g&&g<=51479||51481<=g&&g<=51507||51509<=g&&g<=51535||51537<=g&&g<=51563||51565<=g&&g<=51591||51593<=g&&g<=51619||51621<=g&&g<=51647||51649<=g&&g<=51675||51677<=g&&g<=51703||51705<=g&&g<=51731||51733<=g&&g<=51759||51761<=g&&g<=51787||51789<=g&&g<=51815||51817<=g&&g<=51843||51845<=g&&g<=51871||51873<=g&&g<=51899||51901<=g&&g<=51927||51929<=g&&g<=51955||51957<=g&&g<=51983||51985<=g&&g<=52011||52013<=g&&g<=52039||52041<=g&&g<=52067||52069<=g&&g<=52095||52097<=g&&g<=52123||52125<=g&&g<=52151||52153<=g&&g<=52179||52181<=g&&g<=52207||52209<=g&&g<=52235||52237<=g&&g<=52263||52265<=g&&g<=52291||52293<=g&&g<=52319||52321<=g&&g<=52347||52349<=g&&g<=52375||52377<=g&&g<=52403||52405<=g&&g<=52431||52433<=g&&g<=52459||52461<=g&&g<=52487||52489<=g&&g<=52515||52517<=g&&g<=52543||52545<=g&&g<=52571||52573<=g&&g<=52599||52601<=g&&g<=52627||52629<=g&&g<=52655||52657<=g&&g<=52683||52685<=g&&g<=52711||52713<=g&&g<=52739||52741<=g&&g<=52767||52769<=g&&g<=52795||52797<=g&&g<=52823||52825<=g&&g<=52851||52853<=g&&g<=52879||52881<=g&&g<=52907||52909<=g&&g<=52935||52937<=g&&g<=52963||52965<=g&&g<=52991||52993<=g&&g<=53019||53021<=g&&g<=53047||53049<=g&&g<=53075||53077<=g&&g<=53103||53105<=g&&g<=53131||53133<=g&&g<=53159||53161<=g&&g<=53187||53189<=g&&g<=53215||53217<=g&&g<=53243||53245<=g&&g<=53271||53273<=g&&g<=53299||53301<=g&&g<=53327||53329<=g&&g<=53355||53357<=g&&g<=53383||53385<=g&&g<=53411||53413<=g&&g<=53439||53441<=g&&g<=53467||53469<=g&&g<=53495||53497<=g&&g<=53523||53525<=g&&g<=53551||53553<=g&&g<=53579||53581<=g&&g<=53607||53609<=g&&g<=53635||53637<=g&&g<=53663||53665<=g&&g<=53691||53693<=g&&g<=53719||53721<=g&&g<=53747||53749<=g&&g<=53775||53777<=g&&g<=53803||53805<=g&&g<=53831||53833<=g&&g<=53859||53861<=g&&g<=53887||53889<=g&&g<=53915||53917<=g&&g<=53943||53945<=g&&g<=53971||53973<=g&&g<=53999||54001<=g&&g<=54027||54029<=g&&g<=54055||54057<=g&&g<=54083||54085<=g&&g<=54111||54113<=g&&g<=54139||54141<=g&&g<=54167||54169<=g&&g<=54195||54197<=g&&g<=54223||54225<=g&&g<=54251||54253<=g&&g<=54279||54281<=g&&g<=54307||54309<=g&&g<=54335||54337<=g&&g<=54363||54365<=g&&g<=54391||54393<=g&&g<=54419||54421<=g&&g<=54447||54449<=g&&g<=54475||54477<=g&&g<=54503||54505<=g&&g<=54531||54533<=g&&g<=54559||54561<=g&&g<=54587||54589<=g&&g<=54615||54617<=g&&g<=54643||54645<=g&&g<=54671||54673<=g&&g<=54699||54701<=g&&g<=54727||54729<=g&&g<=54755||54757<=g&&g<=54783||54785<=g&&g<=54811||54813<=g&&g<=54839||54841<=g&&g<=54867||54869<=g&&g<=54895||54897<=g&&g<=54923||54925<=g&&g<=54951||54953<=g&&g<=54979||54981<=g&&g<=55007||55009<=g&&g<=55035||55037<=g&&g<=55063||55065<=g&&g<=55091||55093<=g&&g<=55119||55121<=g&&g<=55147||55149<=g&&g<=55175||55177<=g&&g<=55203?E:g==9757||g==9977||9994<=g&&g<=9997||g==127877||127938<=g&&g<=127940||g==127943||127946<=g&&g<=127948||128066<=g&&g<=128067||128070<=g&&g<=128080||g==128110||128112<=g&&g<=128120||g==128124||128129<=g&&g<=128131||128133<=g&&g<=128135||g==128170||128372<=g&&g<=128373||g==128378||g==128400||128405<=g&&g<=128406||128581<=g&&g<=128583||128587<=g&&g<=128591||g==128675||128692<=g&&g<=128694||g==128704||g==128716||129304<=g&&g<=129308||129310<=g&&g<=129311||g==129318||129328<=g&&g<=129337||129341<=g&&g<=129342||129489<=g&&g<=129501?P:127995<=g&&g<=127999?I:g==8205?R:g==9792||g==9794||9877<=g&&g<=9878||g==9992||g==10084||g==127752||g==127806||g==127859||g==127891||g==127908||g==127912||g==127979||g==127981||g==128139||128187<=g&&g<=128188||g==128295||g==128300||g==128488||g==128640||g==128658?N:128102<=g&&g<=128105?U:C}return this}typeof RT<\"u\"&&RT.exports&&(RT.exports=iit)});var Kpe=_((D4t,Jpe)=>{var sit=/^(.*?)(\\x1b\\[[^m]+m|\\x1b\\]8;;.*?(\\x1b\\\\|\\u0007))/,FT;function oit(){if(FT)return FT;if(typeof Intl.Segmenter<\"u\"){let t=new Intl.Segmenter(\"en\",{granularity:\"grapheme\"});return FT=e=>Array.from(t.segment(e),({segment:r})=>r)}else{let t=Vpe(),e=new t;return FT=r=>e.splitGraphemes(r)}}Jpe.exports=(t,e=0,r=t.length)=>{if(e<0||r<0)throw new RangeError(\"Negative indices aren't supported by this implementation\");let s=r-e,a=\"\",n=0,c=0;for(;t.length>0;){let f=t.match(sit)||[t,t,void 0],p=oit()(f[1]),h=Math.min(e-n,p.length);p=p.slice(h);let E=Math.min(s-c,p.length);a+=p.slice(0,E).join(\"\"),n+=h,c+=E,typeof f[2]<\"u\"&&(a+=f[2]),t=t.slice(f[0].length)}return a}});var fn,yv=Xe(()=>{fn=process.env.YARN_IS_TEST_ENV?\"0.0.0\":\"4.12.0\"});function the(t,{configuration:e,json:r}){if(!e.get(\"enableMessageNames\"))return\"\";let a=Yf(t===null?0:t);return!r&&t===null?Ht(e,a,\"grey\"):a}function Wj(t,{configuration:e,json:r}){let s=the(t,{configuration:e,json:r});if(!s||t===null||t===0)return s;let a=Br[t],n=`https://yarnpkg.com/advanced/error-codes#${s}---${a}`.toLowerCase();return KE(e,s,n)}async function SI({configuration:t,stdout:e,forceError:r},s){let a=await Ot.start({configuration:t,stdout:e,includeFooter:!1},async n=>{let c=!1,f=!1;for(let p of s)typeof p.option<\"u\"&&(p.error||r?(f=!0,n.reportError(50,p.message)):(c=!0,n.reportWarning(50,p.message)),p.callback?.());c&&!f&&n.reportSeparator()});return a.hasErrors()?a.exitCode():null}var $pe,NT,ait,zpe,Xpe,D0,ehe,Zpe,lit,cit,OT,uit,Ot,Ev=Xe(()=>{$pe=ut(Kpe()),NT=ut(Fd());Gx();Tc();yv();xc();ait=\"\\xB7\",zpe=[\"\\u280B\",\"\\u2819\",\"\\u2839\",\"\\u2838\",\"\\u283C\",\"\\u2834\",\"\\u2826\",\"\\u2827\",\"\\u2807\",\"\\u280F\"],Xpe=80,D0=NT.default.GITHUB_ACTIONS?{start:t=>`::group::${t}\n`,end:t=>`::endgroup::\n`}:NT.default.TRAVIS?{start:t=>`travis_fold:start:${t}\n`,end:t=>`travis_fold:end:${t}\n`}:NT.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,ehe=D0!==null,Zpe=new Date,lit=[\"iTerm.app\",\"Apple_Terminal\",\"WarpTerminal\",\"vscode\"].includes(process.env.TERM_PROGRAM)||!!process.env.WT_SESSION,cit=t=>t,OT=cit({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}}),uit=lit&&Object.keys(OT).find(t=>{let e=OT[t];return!(e.date&&(e.date[0]!==Zpe.getDate()||e.date[1]!==Zpe.getMonth()+1))})||\"default\";Ot=class extends Ao{constructor({configuration:r,stdout:s,json:a=!1,forceSectionAlignment:n=!1,includeNames:c=!0,includePrefix:f=!0,includeFooter:p=!0,includeLogs:h=!a,includeInfos:E=h,includeWarnings:C=h}){super();this.uncommitted=new Set;this.warningCount=0;this.errorCount=0;this.timerFooter=[];this.startTime=Date.now();this.indent=0;this.level=0;this.progress=new Map;this.progressTime=0;this.progressFrame=0;this.progressTimeout=null;this.progressStyle=null;this.progressMaxScaledSize=null;if(RB(this,{configuration:r}),this.configuration=r,this.forceSectionAlignment=n,this.includeNames=c,this.includePrefix=f,this.includeFooter=p,this.includeInfos=E,this.includeWarnings=C,this.json=a,this.stdout=s,r.get(\"enableProgressBars\")&&!a&&s.isTTY&&s.columns>22){let S=r.get(\"progressBarStyle\")||uit;if(!Object.hasOwn(OT,S))throw new Error(\"Assertion failed: Invalid progress bar style\");this.progressStyle=OT[S];let P=Math.min(this.getRecommendedLength(),80);this.progressMaxScaledSize=Math.floor(this.progressStyle.size*P/80)}}static async start(r,s){let a=new this(r),n=process.emitWarning;process.emitWarning=(c,f)=>{if(typeof c!=\"string\"){let h=c;c=h.message,f=f??h.name}let p=typeof f<\"u\"?`${f}: ${c}`:c;a.reportWarning(0,p)},r.includeVersion&&a.reportInfo(0,zd(r.configuration,`Yarn ${fn}`,2));try{await s(a)}catch(c){a.reportExceptionOnce(c)}finally{await a.finalize(),process.emitWarning=n}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}getRecommendedLength(){let s=this.progressStyle!==null?this.stdout.columns-1:super.getRecommendedLength();return Math.max(40,s-12-this.indent*2)}startSectionSync({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}async startSectionPromise({reportHeader:r,reportFooter:s,skipIfEmpty:a},n){let c={committed:!1,action:()=>{r?.()}};a?this.uncommitted.add(c):(c.action(),c.committed=!0);let f=Date.now();try{return await n()}catch(p){throw this.reportExceptionOnce(p),p}finally{let p=Date.now();this.uncommitted.delete(c),c.committed&&s?.(p-f)}}startTimerImpl(r,s,a){return{cb:typeof s==\"function\"?s:a,reportHeader:()=>{this.level+=1,this.reportInfo(null,`\\u250C ${r}`),this.indent+=1,D0!==null&&!this.json&&this.includeInfos&&this.stdout.write(D0.start(r))},reportFooter:f=>{if(this.indent-=1,D0!==null&&!this.json&&this.includeInfos){this.stdout.write(D0.end(r));for(let p of this.timerFooter)p()}this.configuration.get(\"enableTimers\")&&f>200?this.reportInfo(null,`\\u2514 Completed in ${Ht(this.configuration,f,ht.DURATION)}`):this.reportInfo(null,\"\\u2514 Completed\"),this.level-=1},skipIfEmpty:(typeof s==\"function\"?{}:s).skipIfEmpty}}startTimerSync(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionSync(c,n)}async startTimerPromise(r,s,a){let{cb:n,...c}=this.startTimerImpl(r,s,a);return this.startSectionPromise(c,n)}reportSeparator(){this.indent===0?this.writeLine(\"\"):this.reportInfo(null,\"\")}reportInfo(r,s){if(!this.includeInfos)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\",c=`${this.formatPrefix(n,\"blueBright\")}${s}`;this.json?this.reportJson({type:\"info\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(c)}reportWarning(r,s){if(this.warningCount+=1,!this.includeWarnings)return;this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"warning\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,\"yellowBright\")}${s}`)}reportError(r,s){this.errorCount+=1,this.timerFooter.push(()=>this.reportErrorImpl(r,s)),this.reportErrorImpl(r,s)}reportErrorImpl(r,s){this.commit();let a=this.formatNameWithHyperlink(r),n=a?`${a}: `:\"\";this.json?this.reportJson({type:\"error\",name:r,displayName:this.formatName(r),indent:this.formatIndent(),data:s}):this.writeLine(`${this.formatPrefix(n,\"redBright\")}${s}`,{truncate:!1})}reportFold(r,s){if(!D0)return;let a=`${D0.start(r)}${s}${D0.end(r)}`;this.timerFooter.push(()=>this.stdout.write(a))}reportProgress(r){if(this.progressStyle===null)return{...Promise.resolve(),stop:()=>{}};if(r.hasProgress&&r.hasTitle)throw new Error(\"Unimplemented: Progress bars can't have both progress and titles.\");let s=!1,a=Promise.resolve().then(async()=>{let c={progress:r.hasProgress?0:void 0,title:r.hasTitle?\"\":void 0};this.progress.set(r,{definition:c,lastScaledSize:r.hasProgress?-1:void 0,lastTitle:void 0}),this.refreshProgress({delta:-1});for await(let{progress:f,title:p}of r)s||c.progress===f&&c.title===p||(c.progress=f,c.title=p,this.refreshProgress());n()}),n=()=>{s||(s=!0,this.progress.delete(r),this.refreshProgress({delta:1}))};return{...a,stop:n}}reportJson(r){this.json&&this.writeLine(`${JSON.stringify(r)}`)}async finalize(){if(!this.includeFooter)return;let r=\"\";this.errorCount>0?r=\"Failed with errors\":this.warningCount>0?r=\"Done with warnings\":r=\"Done\";let s=Ht(this.configuration,Date.now()-this.startTime,ht.DURATION),a=this.configuration.get(\"enableTimers\")?`${r} in ${s}`:r;this.errorCount>0?this.reportError(0,a):this.warningCount>0?this.reportWarning(0,a):this.reportInfo(0,a)}writeLine(r,{truncate:s}={}){this.clearProgress({clear:!0}),this.stdout.write(`${this.truncate(r,{truncate:s})}\n`),this.writeProgress()}writeLines(r,{truncate:s}={}){this.clearProgress({delta:r.length});for(let a of r)this.stdout.write(`${this.truncate(a,{truncate:s})}\n`);this.writeProgress()}commit(){let r=this.uncommitted;this.uncommitted=new Set;for(let s of r)s.committed=!0,s.action()}clearProgress({delta:r=0,clear:s=!1}){this.progressStyle!==null&&this.progress.size+r>0&&(this.stdout.write(`\\x1B[${this.progress.size+r}A`),(r>0||s)&&this.stdout.write(\"\\x1B[0J\"))}writeProgress(){if(this.progressStyle===null||(this.progressTimeout!==null&&clearTimeout(this.progressTimeout),this.progressTimeout=null,this.progress.size===0))return;let r=Date.now();r-this.progressTime>Xpe&&(this.progressFrame=(this.progressFrame+1)%zpe.length,this.progressTime=r);let s=zpe[this.progressFrame];for(let a of this.progress.values()){let n=\"\";if(typeof a.lastScaledSize<\"u\"){let h=this.progressStyle.chars[0].repeat(a.lastScaledSize),E=this.progressStyle.chars[1].repeat(this.progressMaxScaledSize-a.lastScaledSize);n=` ${h}${E}`}let c=this.formatName(null),f=c?`${c}: `:\"\",p=a.definition.title?` ${a.definition.title}`:\"\";this.stdout.write(`${Ht(this.configuration,\"\\u27A4\",\"blueBright\")} ${f}${s}${n}${p}\n`)}this.progressTimeout=setTimeout(()=>{this.refreshProgress({force:!0})},Xpe)}refreshProgress({delta:r=0,force:s=!1}={}){let a=!1,n=!1;if(s||this.progress.size===0)a=!0;else for(let c of this.progress.values()){let f=typeof c.definition.progress<\"u\"?Math.trunc(this.progressMaxScaledSize*c.definition.progress):void 0,p=c.lastScaledSize;c.lastScaledSize=f;let h=c.lastTitle;if(c.lastTitle=c.definition.title,f!==p||(n=h!==c.definition.title)){a=!0;break}}a&&(this.clearProgress({delta:r,clear:n}),this.writeProgress())}truncate(r,{truncate:s}={}){return this.progressStyle===null&&(s=!1),typeof s>\"u\"&&(s=this.configuration.get(\"preferTruncatedLines\")),s&&(r=(0,$pe.default)(r,0,this.stdout.columns-1)),r}formatName(r){return this.includeNames?the(r,{configuration:this.configuration,json:this.json}):\"\"}formatPrefix(r,s){return this.includePrefix?`${Ht(this.configuration,\"\\u27A4\",s)} ${r}${this.formatIndent()}`:\"\"}formatNameWithHyperlink(r){return this.includeNames?Wj(r,{configuration:this.configuration,json:this.json}):\"\"}formatIndent(){return this.level>0||!this.forceSectionAlignment?\"\\u2502 \".repeat(this.indent):`${ait} `}}});var In={};Vt(In,{PackageManager:()=>nhe,detectPackageManager:()=>ihe,executePackageAccessibleBinary:()=>che,executePackageScript:()=>LT,executePackageShellcode:()=>Yj,executeWorkspaceAccessibleBinary:()=>mit,executeWorkspaceLifecycleScript:()=>ahe,executeWorkspaceScript:()=>ohe,getPackageAccessibleBinaries:()=>MT,getWorkspaceAccessibleBinaries:()=>lhe,hasPackageScript:()=>hit,hasWorkspaceScript:()=>Vj,isNodeScript:()=>Jj,makeScriptEnv:()=>Iv,maybeExecuteWorkspaceLifecycleScript:()=>dit,prepareExternalProject:()=>pit});async function b0(t,e,r,s=[]){if(process.platform===\"win32\"){let a=`@goto #_undefined_# 2>NUL || @title %COMSPEC% & @setlocal & @\"${r}\" ${s.map(n=>`\"${n.replace('\"','\"\"')}\"`).join(\" \")} %*`;await ce.writeFilePromise(J.format({dir:t,name:e,ext:\".cmd\"}),a)}await ce.writeFilePromise(J.join(t,e),`#!/bin/sh\nexec \"${r}\" ${s.map(a=>`'${a.replace(/'/g,`'\"'\"'`)}'`).join(\" \")} \"$@\"\n`,{mode:493})}async function ihe(t){let e=await Ut.tryFind(t);if(e?.packageManager){let s=xQ(e.packageManager);if(s?.name){let a=`found ${JSON.stringify({packageManager:e.packageManager})} in manifest`,[n]=s.reference.split(\".\");switch(s.name){case\"yarn\":return{packageManagerField:!0,packageManager:Number(n)===1?\"Yarn Classic\":\"Yarn\",reason:a};case\"npm\":return{packageManagerField:!0,packageManager:\"npm\",reason:a};case\"pnpm\":return{packageManagerField:!0,packageManager:\"pnpm\",reason:a}}}}let r;try{r=await ce.readFilePromise(J.join(t,Er.lockfile),\"utf8\")}catch{}return r!==void 0?r.match(/^__metadata:$/m)?{packageManager:\"Yarn\",reason:'\"__metadata\" key found in yarn.lock'}:{packageManager:\"Yarn Classic\",reason:'\"__metadata\" key not found in yarn.lock, must be a Yarn classic lockfile'}:ce.existsSync(J.join(t,\"package-lock.json\"))?{packageManager:\"npm\",reason:`found npm's \"package-lock.json\" lockfile`}:ce.existsSync(J.join(t,\"pnpm-lock.yaml\"))?{packageManager:\"pnpm\",reason:`found pnpm's \"pnpm-lock.yaml\" lockfile`}:null}async function Iv({project:t,locator:e,binFolder:r,ignoreCorepack:s,lifecycleScript:a,baseEnv:n=t?.configuration.env??process.env}){let c={};for(let[E,C]of Object.entries(n))typeof C<\"u\"&&(c[E.toLowerCase()!==\"path\"?E:\"PATH\"]=C);let f=fe.fromPortablePath(r);c.BERRY_BIN_FOLDER=fe.fromPortablePath(f);let p=process.env.COREPACK_ROOT&&!s?fe.join(process.env.COREPACK_ROOT,\"dist/yarn.js\"):process.argv[1];if(await Promise.all([b0(r,\"node\",process.execPath),...fn!==null?[b0(r,\"run\",process.execPath,[p,\"run\"]),b0(r,\"yarn\",process.execPath,[p]),b0(r,\"yarnpkg\",process.execPath,[p]),b0(r,\"node-gyp\",process.execPath,[p,\"run\",\"--top-level\",\"node-gyp\"])]:[]]),t&&(c.INIT_CWD=fe.fromPortablePath(t.configuration.startingCwd),c.PROJECT_CWD=fe.fromPortablePath(t.cwd)),c.PATH=c.PATH?`${f}${fe.delimiter}${c.PATH}`:`${f}`,c.npm_execpath=`${f}${fe.sep}yarn`,c.npm_node_execpath=`${f}${fe.sep}node`,e){if(!t)throw new Error(\"Assertion failed: Missing project\");let E=t.tryWorkspaceByLocator(e),C=E?E.manifest.version??\"\":t.storedPackages.get(e.locatorHash).version??\"\";c.npm_package_name=un(e),c.npm_package_version=C;let S;if(E)S=E.cwd;else{let P=t.storedPackages.get(e.locatorHash);if(!P)throw new Error(`Package for ${Yr(t.configuration,e)} not found in the project`);let I=t.configuration.getLinkers(),R={project:t,report:new Ot({stdout:new P0.PassThrough,configuration:t.configuration})},N=I.find(U=>U.supportsPackage(P,R));if(!N)throw new Error(`The package ${Yr(t.configuration,P)} isn't supported by any of the available linkers`);S=await N.findPackageLocation(P,R)}c.npm_package_json=fe.fromPortablePath(J.join(S,Er.manifest))}let h=fn!==null?`yarn/${fn}`:`yarn/${Pp(\"@yarnpkg/core\").version}-core`;return c.npm_config_user_agent=`${h} npm/? node/${process.version} ${process.platform} ${process.arch}`,a&&(c.npm_lifecycle_event=a),t&&await t.configuration.triggerHook(E=>E.setupScriptEnvironment,t,c,async(E,C,S)=>await b0(r,E,C,S)),c}async function pit(t,e,{configuration:r,report:s,workspace:a=null,locator:n=null}){await Ait(async()=>{await ce.mktempPromise(async c=>{let f=J.join(c,\"pack.log\"),p=null,{stdout:h,stderr:E}=r.getSubprocessStreams(f,{prefix:fe.fromPortablePath(t),report:s}),C=n&&Gu(n)?rI(n):n,S=C?ll(C):\"an external project\";h.write(`Packing ${S} from sources\n`);let P=await ihe(t),I;P!==null?(h.write(`Using ${P.packageManager} for bootstrap. Reason: ${P.reason}\n\n`),I=P.packageManager):(h.write(`No package manager configuration detected; defaulting to Yarn\n\n`),I=\"Yarn\");let R=I===\"Yarn\"&&!P?.packageManagerField;await ce.mktempPromise(async N=>{let U=await Iv({binFolder:N,ignoreCorepack:R,baseEnv:{...process.env,COREPACK_ENABLE_AUTO_PIN:\"0\"}}),ee=new Map([[\"Yarn Classic\",async()=>{let ue=a!==null?[\"workspace\",a]:[],le=J.join(t,Er.manifest),me=await ce.readFilePromise(le),pe=await Wu(process.execPath,[process.argv[1],\"set\",\"version\",\"classic\",\"--only-if-needed\",\"--yarn-path\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(pe.code!==0)return pe.code;await ce.writeFilePromise(le,me),await ce.appendFilePromise(J.join(t,\".npmignore\"),`/.yarn\n`),h.write(`\n`),delete U.NODE_ENV;let Be=await Wu(\"yarn\",[\"install\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(Be.code!==0)return Be.code;h.write(`\n`);let Ce=await Wu(\"yarn\",[...ue,\"pack\",\"--filename\",fe.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return Ce.code!==0?Ce.code:0}],[\"Yarn\",async()=>{let ue=a!==null?[\"workspace\",a]:[];U.YARN_ENABLE_INLINE_BUILDS=\"1\";let le=J.join(t,Er.lockfile);await ce.existsPromise(le)||await ce.writeFilePromise(le,\"\");let me=await Wu(\"yarn\",[...ue,\"pack\",\"--install-if-needed\",\"--filename\",fe.fromPortablePath(e)],{cwd:t,env:U,stdin:p,stdout:h,stderr:E});return me.code!==0?me.code:0}],[\"npm\",async()=>{if(a!==null){let we=new P0.PassThrough,ye=WE(we);we.pipe(h,{end:!1});let Ae=await Wu(\"npm\",[\"--version\"],{cwd:t,env:U,stdin:p,stdout:we,stderr:E,end:0});if(we.end(),Ae.code!==0)return h.end(),E.end(),Ae.code;let se=(await ye).toString().trim();if(!Zf(se,\">=7.x\")){let Z=Da(null,\"npm\"),De=On(Z,se),Re=On(Z,\">=7.x\");throw new Error(`Workspaces aren't supported by ${ni(r,De)}; please upgrade to ${ni(r,Re)} (npm has been detected as the primary package manager for ${Ht(r,t,ht.PATH)})`)}}let ue=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 le=await Wu(\"npm\",[\"install\",\"--legacy-peer-deps\"],{cwd:t,env:U,stdin:p,stdout:h,stderr:E,end:1});if(le.code!==0)return le.code;let me=new P0.PassThrough,pe=WE(me);me.pipe(h);let Be=await Wu(\"npm\",[\"pack\",\"--silent\",...ue],{cwd:t,env:U,stdin:p,stdout:me,stderr:E});if(Be.code!==0)return Be.code;let Ce=(await pe).toString().trim().replace(/^.*\\n/s,\"\"),g=J.resolve(t,fe.toPortablePath(Ce));return await ce.renamePromise(g,e),0}]]).get(I);if(typeof ee>\"u\")throw new Error(\"Assertion failed: Unsupported workflow\");let ie=await ee();if(!(ie===0||typeof ie>\"u\"))throw ce.detachTemp(c),new jt(58,`Packing the package failed (exit code ${ie}, logs can be found here: ${Ht(r,f,ht.PATH)})`)})})})}async function hit(t,e,{project:r}){let s=r.tryWorkspaceByLocator(t);if(s!==null)return Vj(s,e);let a=r.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r.configuration,t)} not found in the project`);return await $f.openPromise(async n=>{let c=r.configuration,f=r.configuration.getLinkers(),p={project:r,report:new Ot({stdout:new P0.PassThrough,configuration:c})},h=f.find(P=>P.supportsPackage(a,p));if(!h)throw new Error(`The package ${Yr(r.configuration,a)} isn't supported by any of the available linkers`);let E=await h.findPackageLocation(a,p),C=new Sn(E,{baseFs:n});return(await Ut.find(vt.dot,{baseFs:C})).scripts.has(e)})}async function LT(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await ce.mktempPromise(async p=>{let{manifest:h,env:E,cwd:C}=await she(t,{project:a,binFolder:p,cwd:s,lifecycleScript:e}),S=h.scripts.get(e);if(typeof S>\"u\")return 1;let P=async()=>await vI(S,r,{cwd:C,env:E,stdin:n,stdout:c,stderr:f});return await(await a.configuration.reduceHook(R=>R.wrapScriptExecution,P,a,t,e,{script:S,args:r,cwd:C,env:E,stdin:n,stdout:c,stderr:f}))()})}async function Yj(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f}){return await ce.mktempPromise(async p=>{let{env:h,cwd:E}=await she(t,{project:a,binFolder:p,cwd:s});return await vI(e,r,{cwd:E,env:h,stdin:n,stdout:c,stderr:f})})}async function git(t,{binFolder:e,cwd:r,lifecycleScript:s}){let a=await Iv({project:t.project,locator:t.anchoredLocator,binFolder:e,lifecycleScript:s});return await Kj(e,await lhe(t)),typeof r>\"u\"&&(r=J.dirname(await ce.realpathPromise(J.join(t.cwd,\"package.json\")))),{manifest:t.manifest,binFolder:e,env:a,cwd:r}}async function she(t,{project:e,binFolder:r,cwd:s,lifecycleScript:a}){let n=e.tryWorkspaceByLocator(t);if(n!==null)return git(n,{binFolder:r,cwd:s,lifecycleScript:a});let c=e.storedPackages.get(t.locatorHash);if(!c)throw new Error(`Package for ${Yr(e.configuration,t)} not found in the project`);return await $f.openPromise(async f=>{let p=e.configuration,h=e.configuration.getLinkers(),E={project:e,report:new Ot({stdout:new P0.PassThrough,configuration:p})},C=h.find(N=>N.supportsPackage(c,E));if(!C)throw new Error(`The package ${Yr(e.configuration,c)} isn't supported by any of the available linkers`);let S=await Iv({project:e,locator:t,binFolder:r,lifecycleScript:a});await Kj(r,await MT(t,{project:e}));let P=await C.findPackageLocation(c,E),I=new Sn(P,{baseFs:f}),R=await Ut.find(vt.dot,{baseFs:I});return typeof s>\"u\"&&(s=P),{manifest:R,binFolder:r,env:S,cwd:s}})}async function ohe(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c}){return await LT(t.anchoredLocator,e,r,{cwd:s,project:t.project,stdin:a,stdout:n,stderr:c})}function Vj(t,e){return t.manifest.scripts.has(e)}async function ahe(t,e,{cwd:r,report:s}){let{configuration:a}=t.project,n=null;await ce.mktempPromise(async c=>{let f=J.join(c,`${e}.log`),p=`# This file contains the result of Yarn calling the \"${e}\" lifecycle script inside a workspace (\"${fe.fromPortablePath(t.cwd)}\")\n`,{stdout:h,stderr:E}=a.getSubprocessStreams(f,{report:s,prefix:Yr(a,t.anchoredLocator),header:p});s.reportInfo(36,`Calling the \"${e}\" lifecycle script`);let C=await ohe(t,e,[],{cwd:r,stdin:n,stdout:h,stderr:E});if(h.end(),E.end(),C!==0)throw ce.detachTemp(c),new jt(36,`${bB(e)} script failed (exit code ${Ht(a,C,ht.NUMBER)}, logs can be found here: ${Ht(a,f,ht.PATH)}); run ${Ht(a,`yarn ${e}`,ht.CODE)} to investigate`)})}async function dit(t,e,r){Vj(t,e)&&await ahe(t,e,r)}function Jj(t){let e=J.extname(t);if(e.match(/\\.[cm]?[jt]sx?$/))return!0;if(e===\".exe\"||e===\".bin\")return!1;let r=Buffer.alloc(4),s;try{s=ce.openSync(t,\"r\")}catch{return!0}try{ce.readSync(s,r,0,r.length,0)}finally{ce.closeSync(s)}let a=r.readUint32BE();return!(a===3405691582||a===3489328638||a===2135247942||(a&4294901760)===1297743872)}async function MT(t,{project:e}){let r=e.configuration,s=new Map,a=e.storedPackages.get(t.locatorHash);if(!a)throw new Error(`Package for ${Yr(r,t)} not found in the project`);let n=new P0.Writable,c=r.getLinkers(),f={project:e,report:new Ot({configuration:r,stdout:n})},p=new Set([t.locatorHash]);for(let E of a.dependencies.values()){let C=e.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(`Assertion failed: The resolution (${ni(r,E)}) should have been registered`);p.add(C)}let h=await Promise.all(Array.from(p,async E=>{let C=e.storedPackages.get(E);if(!C)throw new Error(`Assertion failed: The package (${E}) should have been registered`);if(C.bin.size===0)return Wl.skip;let S=c.find(I=>I.supportsPackage(C,f));if(!S)return Wl.skip;let P=null;try{P=await S.findPackageLocation(C,f)}catch(I){if(I.code===\"LOCATOR_NOT_INSTALLED\")return Wl.skip;throw I}return{dependency:C,packageLocation:P}}));for(let E of h){if(E===Wl.skip)continue;let{dependency:C,packageLocation:S}=E;for(let[P,I]of C.bin){let R=J.resolve(S,I);s.set(P,[C,fe.fromPortablePath(R),Jj(R)])}}return s}async function lhe(t){return await MT(t.anchoredLocator,{project:t.project})}async function Kj(t,e){await Promise.all(Array.from(e,([r,[,s,a]])=>a?b0(t,r,process.execPath,[s]):b0(t,r,s,[])))}async function che(t,e,r,{cwd:s,project:a,stdin:n,stdout:c,stderr:f,nodeArgs:p=[],packageAccessibleBinaries:h}){h??=await MT(t,{project:a});let E=h.get(e);if(!E)throw new Error(`Binary not found (${e}) for ${Yr(a.configuration,t)}`);return await ce.mktempPromise(async C=>{let[,S]=E,P=await Iv({project:a,locator:t,binFolder:C});await Kj(P.BERRY_BIN_FOLDER,h);let I=Jj(fe.toPortablePath(S))?Wu(process.execPath,[...p,S,...r],{cwd:s,env:P,stdin:n,stdout:c,stderr:f}):Wu(S,r,{cwd:s,env:P,stdin:n,stdout:c,stderr:f}),R;try{R=await I}finally{await ce.removePromise(P.BERRY_BIN_FOLDER)}return R.code})}async function mit(t,e,r,{cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f}){return await che(t.anchoredLocator,e,r,{project:t.project,cwd:s,stdin:a,stdout:n,stderr:c,packageAccessibleBinaries:f})}var rhe,P0,nhe,fit,Ait,zj=Xe(()=>{Dt();Dt();eA();pv();ql();rhe=ut(Ld()),P0=Ie(\"stream\");oI();Tc();Ev();yv();dT();xc();Pc();Rp();Wo();nhe=(a=>(a.Yarn1=\"Yarn Classic\",a.Yarn2=\"Yarn\",a.Npm=\"npm\",a.Pnpm=\"pnpm\",a))(nhe||{});fit=2,Ait=(0,rhe.default)(fit)});var DI=_((J4t,fhe)=>{\"use strict\";var uhe=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\"]]);fhe.exports=t=>t?Object.keys(t).map(e=>[uhe.has(e)?uhe.get(e):e,t[e]]).reduce((e,r)=>(e[r[0]]=r[1],e),Object.create(null)):{}});var PI=_((K4t,Ihe)=>{\"use strict\";var Ahe=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},yit=Ie(\"events\"),phe=Ie(\"stream\"),hhe=Ie(\"string_decoder\").StringDecoder,_p=Symbol(\"EOF\"),Hp=Symbol(\"maybeEmitEnd\"),x0=Symbol(\"emittedEnd\"),UT=Symbol(\"emittingEnd\"),Cv=Symbol(\"emittedError\"),_T=Symbol(\"closed\"),ghe=Symbol(\"read\"),HT=Symbol(\"flush\"),dhe=Symbol(\"flushChunk\"),ul=Symbol(\"encoding\"),jp=Symbol(\"decoder\"),jT=Symbol(\"flowing\"),wv=Symbol(\"paused\"),bI=Symbol(\"resume\"),Ys=Symbol(\"bufferLength\"),Xj=Symbol(\"bufferPush\"),Zj=Symbol(\"bufferShift\"),Ko=Symbol(\"objectMode\"),zo=Symbol(\"destroyed\"),$j=Symbol(\"emitData\"),mhe=Symbol(\"emitEnd\"),e6=Symbol(\"emitEnd2\"),Gp=Symbol(\"async\"),Bv=t=>Promise.resolve().then(t),yhe=global._MP_NO_ITERATOR_SYMBOLS_!==\"1\",Eit=yhe&&Symbol.asyncIterator||Symbol(\"asyncIterator not implemented\"),Iit=yhe&&Symbol.iterator||Symbol(\"iterator not implemented\"),Cit=t=>t===\"end\"||t===\"finish\"||t===\"prefinish\",wit=t=>t instanceof ArrayBuffer||typeof t==\"object\"&&t.constructor&&t.constructor.name===\"ArrayBuffer\"&&t.byteLength>=0,Bit=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),GT=class{constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[bI](),r.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},t6=class extends GT{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit(\"error\",a),e.on(\"error\",this.proxyErrors)}};Ihe.exports=class Ehe extends phe{constructor(e){super(),this[jT]=!1,this[wv]=!1,this.pipes=[],this.buffer=[],this[Ko]=e&&e.objectMode||!1,this[Ko]?this[ul]=null:this[ul]=e&&e.encoding||null,this[ul]===\"buffer\"&&(this[ul]=null),this[Gp]=e&&!!e.async||!1,this[jp]=this[ul]?new hhe(this[ul]):null,this[_p]=!1,this[x0]=!1,this[UT]=!1,this[_T]=!1,this[Cv]=null,this.writable=!0,this.readable=!0,this[Ys]=0,this[zo]=!1}get bufferLength(){return this[Ys]}get encoding(){return this[ul]}set encoding(e){if(this[Ko])throw new Error(\"cannot set encoding in objectMode\");if(this[ul]&&e!==this[ul]&&(this[jp]&&this[jp].lastNeed||this[Ys]))throw new Error(\"cannot change encoding\");this[ul]!==e&&(this[jp]=e?new hhe(e):null,this.buffer.length&&(this.buffer=this.buffer.map(r=>this[jp].write(r)))),this[ul]=e}setEncoding(e){this.encoding=e}get objectMode(){return this[Ko]}set objectMode(e){this[Ko]=this[Ko]||!!e}get async(){return this[Gp]}set async(e){this[Gp]=this[Gp]||!!e}write(e,r,s){if(this[_p])throw new Error(\"write after end\");if(this[zo])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof r==\"function\"&&(s=r,r=\"utf8\"),r||(r=\"utf8\");let a=this[Gp]?Bv:n=>n();return!this[Ko]&&!Buffer.isBuffer(e)&&(Bit(e)?e=Buffer.from(e.buffer,e.byteOffset,e.byteLength):wit(e)?e=Buffer.from(e):typeof e!=\"string\"&&(this.objectMode=!0)),this[Ko]?(this.flowing&&this[Ys]!==0&&this[HT](!0),this.flowing?this.emit(\"data\",e):this[Xj](e),this[Ys]!==0&&this.emit(\"readable\"),s&&a(s),this.flowing):e.length?(typeof e==\"string\"&&!(r===this[ul]&&!this[jp].lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[ul]&&(e=this[jp].write(e)),this.flowing&&this[Ys]!==0&&this[HT](!0),this.flowing?this.emit(\"data\",e):this[Xj](e),this[Ys]!==0&&this.emit(\"readable\"),s&&a(s),this.flowing):(this[Ys]!==0&&this.emit(\"readable\"),s&&a(s),this.flowing)}read(e){if(this[zo])return null;if(this[Ys]===0||e===0||e>this[Ys])return this[Hp](),null;this[Ko]&&(e=null),this.buffer.length>1&&!this[Ko]&&(this.encoding?this.buffer=[this.buffer.join(\"\")]:this.buffer=[Buffer.concat(this.buffer,this[Ys])]);let r=this[ghe](e||null,this.buffer[0]);return this[Hp](),r}[ghe](e,r){return e===r.length||e===null?this[Zj]():(this.buffer[0]=r.slice(e),r=r.slice(0,e),this[Ys]-=e),this.emit(\"data\",r),!this.buffer.length&&!this[_p]&&this.emit(\"drain\"),r}end(e,r,s){return typeof e==\"function\"&&(s=e,e=null),typeof r==\"function\"&&(s=r,r=\"utf8\"),e&&this.write(e,r),s&&this.once(\"end\",s),this[_p]=!0,this.writable=!1,(this.flowing||!this[wv])&&this[Hp](),this}[bI](){this[zo]||(this[wv]=!1,this[jT]=!0,this.emit(\"resume\"),this.buffer.length?this[HT]():this[_p]?this[Hp]():this.emit(\"drain\"))}resume(){return this[bI]()}pause(){this[jT]=!1,this[wv]=!0}get destroyed(){return this[zo]}get flowing(){return this[jT]}get paused(){return this[wv]}[Xj](e){this[Ko]?this[Ys]+=1:this[Ys]+=e.length,this.buffer.push(e)}[Zj](){return this.buffer.length&&(this[Ko]?this[Ys]-=1:this[Ys]-=this.buffer[0].length),this.buffer.shift()}[HT](e){do;while(this[dhe](this[Zj]()));!e&&!this.buffer.length&&!this[_p]&&this.emit(\"drain\")}[dhe](e){return e?(this.emit(\"data\",e),this.flowing):!1}pipe(e,r){if(this[zo])return;let s=this[x0];return r=r||{},e===Ahe.stdout||e===Ahe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this.pipes.push(r.proxyErrors?new t6(this,e,r):new GT(this,e,r)),this[Gp]?Bv(()=>this[bI]()):this[bI]()),e}unpipe(e){let r=this.pipes.find(s=>s.dest===e);r&&(this.pipes.splice(this.pipes.indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);return e===\"data\"&&!this.pipes.length&&!this.flowing?this[bI]():e===\"readable\"&&this[Ys]!==0?super.emit(\"readable\"):Cit(e)&&this[x0]?(super.emit(e),this.removeAllListeners(e)):e===\"error\"&&this[Cv]&&(this[Gp]?Bv(()=>r.call(this,this[Cv])):r.call(this,this[Cv])),s}get emittedEnd(){return this[x0]}[Hp](){!this[UT]&&!this[x0]&&!this[zo]&&this.buffer.length===0&&this[_p]&&(this[UT]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[_T]&&this.emit(\"close\"),this[UT]=!1)}emit(e,r,...s){if(e!==\"error\"&&e!==\"close\"&&e!==zo&&this[zo])return;if(e===\"data\")return r?this[Gp]?Bv(()=>this[$j](r)):this[$j](r):!1;if(e===\"end\")return this[mhe]();if(e===\"close\"){if(this[_T]=!0,!this[x0]&&!this[zo])return;let n=super.emit(\"close\");return this.removeAllListeners(\"close\"),n}else if(e===\"error\"){this[Cv]=r;let n=super.emit(\"error\",r);return this[Hp](),n}else if(e===\"resume\"){let n=super.emit(\"resume\");return this[Hp](),n}else if(e===\"finish\"||e===\"prefinish\"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,r,...s);return this[Hp](),a}[$j](e){for(let s of this.pipes)s.dest.write(e)===!1&&this.pause();let r=super.emit(\"data\",e);return this[Hp](),r}[mhe](){this[x0]||(this[x0]=!0,this.readable=!1,this[Gp]?Bv(()=>this[e6]()):this[e6]())}[e6](){if(this[jp]){let r=this[jp].end();if(r){for(let s of this.pipes)s.dest.write(r);super.emit(\"data\",r)}}for(let r of this.pipes)r.end();let e=super.emit(\"end\");return this.removeAllListeners(\"end\"),e}collect(){let e=[];this[Ko]||(e.dataLength=0);let r=this.promise();return this.on(\"data\",s=>{e.push(s),this[Ko]||(e.dataLength+=s.length)}),r.then(()=>e)}concat(){return this[Ko]?Promise.reject(new Error(\"cannot concat in objectMode\")):this.collect().then(e=>this[Ko]?Promise.reject(new Error(\"cannot concat in objectMode\")):this[ul]?e.join(\"\"):Buffer.concat(e,e.dataLength))}promise(){return new Promise((e,r)=>{this.on(zo,()=>r(new Error(\"stream destroyed\"))),this.on(\"error\",s=>r(s)),this.on(\"end\",()=>e())})}[Eit](){return{next:()=>{let r=this.read();if(r!==null)return Promise.resolve({done:!1,value:r});if(this[_p])return Promise.resolve({done:!0});let s=null,a=null,n=h=>{this.removeListener(\"data\",c),this.removeListener(\"end\",f),a(h)},c=h=>{this.removeListener(\"error\",n),this.removeListener(\"end\",f),this.pause(),s({value:h,done:!!this[_p]})},f=()=>{this.removeListener(\"error\",n),this.removeListener(\"data\",c),s({done:!0})},p=()=>n(new Error(\"stream destroyed\"));return new Promise((h,E)=>{a=E,s=h,this.once(zo,p),this.once(\"error\",n),this.once(\"end\",f),this.once(\"data\",c)})}}}[Iit](){return{next:()=>{let r=this.read();return{value:r,done:r===null}}}}destroy(e){return this[zo]?(e?this.emit(\"error\",e):this.emit(zo),this):(this[zo]=!0,this.buffer.length=0,this[Ys]=0,typeof this.close==\"function\"&&!this[_T]&&this.close(),e?this.emit(\"error\",e):this.emit(zo),this)}static isStream(e){return!!e&&(e instanceof Ehe||e instanceof phe||e instanceof yit&&(typeof e.pipe==\"function\"||typeof e.write==\"function\"&&typeof e.end==\"function\"))}}});var whe=_((z4t,Che)=>{var vit=Ie(\"zlib\").constants||{ZLIB_VERNUM:4736};Che.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},vit))});var m6=_(Kl=>{\"use strict\";var o6=Ie(\"assert\"),k0=Ie(\"buffer\").Buffer,She=Ie(\"zlib\"),fm=Kl.constants=whe(),Sit=PI(),Bhe=k0.concat,Am=Symbol(\"_superWrite\"),kI=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\"}},Dit=Symbol(\"opts\"),vv=Symbol(\"flushFlag\"),vhe=Symbol(\"finishFlushFlag\"),d6=Symbol(\"fullFlushFlag\"),Ii=Symbol(\"handle\"),qT=Symbol(\"onError\"),xI=Symbol(\"sawError\"),r6=Symbol(\"level\"),n6=Symbol(\"strategy\"),i6=Symbol(\"ended\"),X4t=Symbol(\"_defaultFullFlush\"),WT=class extends Sit{constructor(e,r){if(!e||typeof e!=\"object\")throw new TypeError(\"invalid options for ZlibBase constructor\");super(e),this[xI]=!1,this[i6]=!1,this[Dit]=e,this[vv]=e.flush,this[vhe]=e.finishFlush;try{this[Ii]=new She[r](e)}catch(s){throw new kI(s)}this[qT]=s=>{this[xI]||(this[xI]=!0,this.close(),this.emit(\"error\",s))},this[Ii].on(\"error\",s=>this[qT](new kI(s))),this.once(\"end\",()=>this.close)}close(){this[Ii]&&(this[Ii].close(),this[Ii]=null,this.emit(\"close\"))}reset(){if(!this[xI])return o6(this[Ii],\"zlib binding closed\"),this[Ii].reset()}flush(e){this.ended||(typeof e!=\"number\"&&(e=this[d6]),this.write(Object.assign(k0.alloc(0),{[vv]:e})))}end(e,r,s){return e&&this.write(e,r),this.flush(this[vhe]),this[i6]=!0,super.end(null,null,s)}get ended(){return this[i6]}write(e,r,s){if(typeof r==\"function\"&&(s=r,r=\"utf8\"),typeof e==\"string\"&&(e=k0.from(e,r)),this[xI])return;o6(this[Ii],\"zlib binding closed\");let a=this[Ii]._handle,n=a.close;a.close=()=>{};let c=this[Ii].close;this[Ii].close=()=>{},k0.concat=h=>h;let f;try{let h=typeof e[vv]==\"number\"?e[vv]:this[vv];f=this[Ii]._processChunk(e,h),k0.concat=Bhe}catch(h){k0.concat=Bhe,this[qT](new kI(h))}finally{this[Ii]&&(this[Ii]._handle=a,a.close=n,this[Ii].close=c,this[Ii].removeAllListeners(\"error\"))}this[Ii]&&this[Ii].on(\"error\",h=>this[qT](new kI(h)));let p;if(f)if(Array.isArray(f)&&f.length>0){p=this[Am](k0.from(f[0]));for(let h=1;h<f.length;h++)p=this[Am](f[h])}else p=this[Am](k0.from(f));return s&&s(),p}[Am](e){return super.write(e)}},qp=class extends WT{constructor(e,r){e=e||{},e.flush=e.flush||fm.Z_NO_FLUSH,e.finishFlush=e.finishFlush||fm.Z_FINISH,super(e,r),this[d6]=fm.Z_FULL_FLUSH,this[r6]=e.level,this[n6]=e.strategy}params(e,r){if(!this[xI]){if(!this[Ii])throw new Error(\"cannot switch params when binding is closed\");if(!this[Ii].params)throw new Error(\"not supported in this implementation\");if(this[r6]!==e||this[n6]!==r){this.flush(fm.Z_SYNC_FLUSH),o6(this[Ii],\"zlib binding closed\");let s=this[Ii].flush;this[Ii].flush=(a,n)=>{this.flush(a),n()};try{this[Ii].params(e,r)}finally{this[Ii].flush=s}this[Ii]&&(this[r6]=e,this[n6]=r)}}}},a6=class extends qp{constructor(e){super(e,\"Deflate\")}},l6=class extends qp{constructor(e){super(e,\"Inflate\")}},s6=Symbol(\"_portable\"),c6=class extends qp{constructor(e){super(e,\"Gzip\"),this[s6]=e&&!!e.portable}[Am](e){return this[s6]?(this[s6]=!1,e[9]=255,super[Am](e)):super[Am](e)}},u6=class extends qp{constructor(e){super(e,\"Gunzip\")}},f6=class extends qp{constructor(e){super(e,\"DeflateRaw\")}},A6=class extends qp{constructor(e){super(e,\"InflateRaw\")}},p6=class extends qp{constructor(e){super(e,\"Unzip\")}},YT=class extends WT{constructor(e,r){e=e||{},e.flush=e.flush||fm.BROTLI_OPERATION_PROCESS,e.finishFlush=e.finishFlush||fm.BROTLI_OPERATION_FINISH,super(e,r),this[d6]=fm.BROTLI_OPERATION_FLUSH}},h6=class extends YT{constructor(e){super(e,\"BrotliCompress\")}},g6=class extends YT{constructor(e){super(e,\"BrotliDecompress\")}};Kl.Deflate=a6;Kl.Inflate=l6;Kl.Gzip=c6;Kl.Gunzip=u6;Kl.DeflateRaw=f6;Kl.InflateRaw=A6;Kl.Unzip=p6;typeof She.BrotliCompress==\"function\"?(Kl.BrotliCompress=h6,Kl.BrotliDecompress=g6):Kl.BrotliCompress=Kl.BrotliDecompress=class{constructor(){throw new Error(\"Brotli is not supported in this version of Node.js\")}}});var QI=_((e3t,Dhe)=>{var bit=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform;Dhe.exports=bit!==\"win32\"?t=>t:t=>t&&t.replace(/\\\\/g,\"/\")});var VT=_((r3t,bhe)=>{\"use strict\";var Pit=PI(),y6=QI(),E6=Symbol(\"slurp\");bhe.exports=class extends Pit{constructor(e,r,s){switch(super(),this.pause(),this.extended=r,this.globalExtended=s,this.header=e,this.startBlockSize=512*Math.ceil(e.size/512),this.blockRemain=this.startBlockSize,this.remain=e.size,this.type=e.type,this.meta=!1,this.ignore=!1,this.type){case\"File\":case\"OldFile\":case\"Link\":case\"SymbolicLink\":case\"CharacterDevice\":case\"BlockDevice\":case\"Directory\":case\"FIFO\":case\"ContiguousFile\":case\"GNUDumpDir\":break;case\"NextFileHasLongLinkpath\":case\"NextFileHasLongPath\":case\"OldGnuLongPath\":case\"GlobalExtendedHeader\":case\"ExtendedHeader\":case\"OldExtendedHeader\":this.meta=!0;break;default:this.ignore=!0}this.path=y6(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=y6(e.linkpath),this.uname=e.uname,this.gname=e.gname,r&&this[E6](r),s&&this[E6](s,!0)}write(e){let r=e.length;if(r>this.blockRemain)throw new Error(\"writing more to entry than is appropriate\");let s=this.remain,a=this.blockRemain;return this.remain=Math.max(0,s-r),this.blockRemain=Math.max(0,a-r),this.ignore?!0:s>=r?super.write(e):super.write(e.slice(0,s))}[E6](e,r){for(let s in e)e[s]!==null&&e[s]!==void 0&&!(r&&s===\"path\")&&(this[s]=s===\"path\"||s===\"linkpath\"?y6(e[s]):e[s])}}});var I6=_(JT=>{\"use strict\";JT.name=new Map([[\"0\",\"File\"],[\"\",\"OldFile\"],[\"1\",\"Link\"],[\"2\",\"SymbolicLink\"],[\"3\",\"CharacterDevice\"],[\"4\",\"BlockDevice\"],[\"5\",\"Directory\"],[\"6\",\"FIFO\"],[\"7\",\"ContiguousFile\"],[\"g\",\"GlobalExtendedHeader\"],[\"x\",\"ExtendedHeader\"],[\"A\",\"SolarisACL\"],[\"D\",\"GNUDumpDir\"],[\"I\",\"Inode\"],[\"K\",\"NextFileHasLongLinkpath\"],[\"L\",\"NextFileHasLongPath\"],[\"M\",\"ContinuationFile\"],[\"N\",\"OldGnuLongPath\"],[\"S\",\"SparseFile\"],[\"V\",\"TapeVolumeHeader\"],[\"X\",\"OldExtendedHeader\"]]);JT.code=new Map(Array.from(JT.name).map(t=>[t[1],t[0]]))});var Qhe=_((i3t,khe)=>{\"use strict\";var xit=(t,e)=>{if(Number.isSafeInteger(t))t<0?Qit(t,e):kit(t,e);else throw Error(\"cannot encode number outside of javascript safe integer range\");return e},kit=(t,e)=>{e[0]=128;for(var r=e.length;r>1;r--)e[r-1]=t&255,t=Math.floor(t/256)},Qit=(t,e)=>{e[0]=255;var r=!1;t=t*-1;for(var s=e.length;s>1;s--){var a=t&255;t=Math.floor(t/256),r?e[s-1]=Phe(a):a===0?e[s-1]=0:(r=!0,e[s-1]=xhe(a))}},Tit=t=>{let e=t[0],r=e===128?Fit(t.slice(1,t.length)):e===255?Rit(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},Rit=t=>{for(var e=t.length,r=0,s=!1,a=e-1;a>-1;a--){var n=t[a],c;s?c=Phe(n):n===0?c=n:(s=!0,c=xhe(n)),c!==0&&(r-=c*Math.pow(256,e-a-1))}return r},Fit=t=>{for(var e=t.length,r=0,s=e-1;s>-1;s--){var a=t[s];a!==0&&(r+=a*Math.pow(256,e-s-1))}return r},Phe=t=>(255^t)&255,xhe=t=>(255^t)+1&255;khe.exports={encode:xit,parse:Tit}});var RI=_((s3t,Rhe)=>{\"use strict\";var C6=I6(),TI=Ie(\"path\").posix,The=Qhe(),w6=Symbol(\"slurp\"),zl=Symbol(\"type\"),S6=class{constructor(e,r,s,a){this.cksumValid=!1,this.needPax=!1,this.nullBlock=!1,this.block=null,this.path=null,this.mode=null,this.uid=null,this.gid=null,this.size=null,this.mtime=null,this.cksum=null,this[zl]=\"0\",this.linkpath=null,this.uname=null,this.gname=null,this.devmaj=0,this.devmin=0,this.atime=null,this.ctime=null,Buffer.isBuffer(e)?this.decode(e,r||0,s,a):e&&this.set(e)}decode(e,r,s,a){if(r||(r=0),!e||!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");if(this.path=pm(e,r,100),this.mode=Q0(e,r+100,8),this.uid=Q0(e,r+108,8),this.gid=Q0(e,r+116,8),this.size=Q0(e,r+124,12),this.mtime=B6(e,r+136,12),this.cksum=Q0(e,r+148,12),this[w6](s),this[w6](a,!0),this[zl]=pm(e,r+156,1),this[zl]===\"\"&&(this[zl]=\"0\"),this[zl]===\"0\"&&this.path.substr(-1)===\"/\"&&(this[zl]=\"5\"),this[zl]===\"5\"&&(this.size=0),this.linkpath=pm(e,r+157,100),e.slice(r+257,r+265).toString()===\"ustar\\x0000\")if(this.uname=pm(e,r+265,32),this.gname=pm(e,r+297,32),this.devmaj=Q0(e,r+329,8),this.devmin=Q0(e,r+337,8),e[r+475]!==0){let c=pm(e,r+345,155);this.path=c+\"/\"+this.path}else{let c=pm(e,r+345,130);c&&(this.path=c+\"/\"+this.path),this.atime=B6(e,r+476,12),this.ctime=B6(e,r+488,12)}let n=8*32;for(let c=r;c<r+148;c++)n+=e[c];for(let c=r+156;c<r+512;c++)n+=e[c];this.cksumValid=n===this.cksum,this.cksum===null&&n===8*32&&(this.nullBlock=!0)}[w6](e,r){for(let s in e)e[s]!==null&&e[s]!==void 0&&!(r&&s===\"path\")&&(this[s]=e[s])}encode(e,r){if(e||(e=this.block=Buffer.alloc(512),r=0),r||(r=0),!(e.length>=r+512))throw new Error(\"need 512 bytes for header\");let s=this.ctime||this.atime?130:155,a=Nit(this.path||\"\",s),n=a[0],c=a[1];this.needPax=a[2],this.needPax=hm(e,r,100,n)||this.needPax,this.needPax=T0(e,r+100,8,this.mode)||this.needPax,this.needPax=T0(e,r+108,8,this.uid)||this.needPax,this.needPax=T0(e,r+116,8,this.gid)||this.needPax,this.needPax=T0(e,r+124,12,this.size)||this.needPax,this.needPax=v6(e,r+136,12,this.mtime)||this.needPax,e[r+156]=this[zl].charCodeAt(0),this.needPax=hm(e,r+157,100,this.linkpath)||this.needPax,e.write(\"ustar\\x0000\",r+257,8),this.needPax=hm(e,r+265,32,this.uname)||this.needPax,this.needPax=hm(e,r+297,32,this.gname)||this.needPax,this.needPax=T0(e,r+329,8,this.devmaj)||this.needPax,this.needPax=T0(e,r+337,8,this.devmin)||this.needPax,this.needPax=hm(e,r+345,s,c)||this.needPax,e[r+475]!==0?this.needPax=hm(e,r+345,155,c)||this.needPax:(this.needPax=hm(e,r+345,130,c)||this.needPax,this.needPax=v6(e,r+476,12,this.atime)||this.needPax,this.needPax=v6(e,r+488,12,this.ctime)||this.needPax);let f=8*32;for(let p=r;p<r+148;p++)f+=e[p];for(let p=r+156;p<r+512;p++)f+=e[p];return this.cksum=f,T0(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 C6.name.get(this[zl])||this[zl]}get typeKey(){return this[zl]}set type(e){C6.code.has(e)?this[zl]=C6.code.get(e):this[zl]=e}},Nit=(t,e)=>{let s=t,a=\"\",n,c=TI.parse(t).root||\".\";if(Buffer.byteLength(s)<100)n=[s,a,!1];else{a=TI.dirname(s),s=TI.basename(s);do Buffer.byteLength(s)<=100&&Buffer.byteLength(a)<=e?n=[s,a,!1]:Buffer.byteLength(s)>100&&Buffer.byteLength(a)<=e?n=[s.substr(0,99),a,!0]:(s=TI.join(TI.basename(a),s),a=TI.dirname(a));while(a!==c&&!n);n||(n=[t.substr(0,99),\"\",!0])}return n},pm=(t,e,r)=>t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*/,\"\"),B6=(t,e,r)=>Oit(Q0(t,e,r)),Oit=t=>t===null?null:new Date(t*1e3),Q0=(t,e,r)=>t[e]&128?The.parse(t.slice(e,e+r)):Mit(t,e,r),Lit=t=>isNaN(t)?null:t,Mit=(t,e,r)=>Lit(parseInt(t.slice(e,e+r).toString(\"utf8\").replace(/\\0.*$/,\"\").trim(),8)),Uit={12:8589934591,8:2097151},T0=(t,e,r,s)=>s===null?!1:s>Uit[r]||s<0?(The.encode(s,t.slice(e,e+r)),!0):(_it(t,e,r,s),!1),_it=(t,e,r,s)=>t.write(Hit(s,r),e,r,\"ascii\"),Hit=(t,e)=>jit(Math.floor(t).toString(8),e),jit=(t,e)=>(t.length===e-1?t:new Array(e-t.length-1).join(\"0\")+t+\" \")+\"\\0\",v6=(t,e,r,s)=>s===null?!1:T0(t,e,r,s.getTime()/1e3),Git=new Array(156).join(\"\\0\"),hm=(t,e,r,s)=>s===null?!1:(t.write(s+Git,e,r,\"utf8\"),s.length!==Buffer.byteLength(s)||s.length>r);Rhe.exports=S6});var KT=_((o3t,Fhe)=>{\"use strict\";var qit=RI(),Wit=Ie(\"path\"),Sv=class{constructor(e,r){this.atime=e.atime||null,this.charset=e.charset||null,this.comment=e.comment||null,this.ctime=e.ctime||null,this.gid=e.gid||null,this.gname=e.gname||null,this.linkpath=e.linkpath||null,this.mtime=e.mtime||null,this.path=e.path||null,this.size=e.size||null,this.uid=e.uid||null,this.uname=e.uname||null,this.dev=e.dev||null,this.ino=e.ino||null,this.nlink=e.nlink||null,this.global=r||!1}encode(){let e=this.encodeBody();if(e===\"\")return null;let r=Buffer.byteLength(e),s=512*Math.ceil(1+r/512),a=Buffer.allocUnsafe(s);for(let n=0;n<512;n++)a[n]=0;new qit({path:(\"PaxHeader/\"+Wit.basename(this.path)).slice(0,99),mode:this.mode||420,uid:this.uid||null,gid:this.gid||null,size:r,mtime:this.mtime||null,type:this.global?\"GlobalExtendedHeader\":\"ExtendedHeader\",linkpath:\"\",uname:this.uname||\"\",gname:this.gname||\"\",devmaj:0,devmin:0,atime:this.atime||null,ctime:this.ctime||null}).encode(a),a.write(e,512,r,\"utf8\");for(let n=r+512;n<a.length;n++)a[n]=0;return a}encodeBody(){return this.encodeField(\"path\")+this.encodeField(\"ctime\")+this.encodeField(\"atime\")+this.encodeField(\"dev\")+this.encodeField(\"ino\")+this.encodeField(\"nlink\")+this.encodeField(\"charset\")+this.encodeField(\"comment\")+this.encodeField(\"gid\")+this.encodeField(\"gname\")+this.encodeField(\"linkpath\")+this.encodeField(\"mtime\")+this.encodeField(\"size\")+this.encodeField(\"uid\")+this.encodeField(\"uname\")}encodeField(e){if(this[e]===null||this[e]===void 0)return\"\";let r=this[e]instanceof Date?this[e].getTime()/1e3:this[e],s=\" \"+(e===\"dev\"||e===\"ino\"||e===\"nlink\"?\"SCHILY.\":\"\")+e+\"=\"+r+`\n`,a=Buffer.byteLength(s),n=Math.floor(Math.log(a)/Math.log(10))+1;return a+n>=Math.pow(10,n)&&(n+=1),n+a+s}};Sv.parse=(t,e,r)=>new Sv(Yit(Vit(t),e),r);var Yit=(t,e)=>e?Object.keys(t).reduce((r,s)=>(r[s]=t[s],r),e):t,Vit=t=>t.replace(/\\n$/,\"\").split(`\n`).reduce(Jit,Object.create(null)),Jit=(t,e)=>{let r=parseInt(e,10);if(r!==Buffer.byteLength(e)+1)return t;e=e.substr((r+\" \").length);let s=e.split(\"=\"),a=s.shift().replace(/^SCHILY\\.(dev|ino|nlink)/,\"$1\");if(!a)return t;let n=s.join(\"=\");return t[a]=/^([A-Z]+\\.)?([mac]|birth|creation)time$/.test(a)?new Date(n*1e3):/^[0-9]+$/.test(n)?+n:n,t};Fhe.exports=Sv});var FI=_((a3t,Nhe)=>{Nhe.exports=t=>{let e=t.length-1,r=-1;for(;e>-1&&t.charAt(e)===\"/\";)r=e,e--;return r===-1?t:t.slice(0,r)}});var zT=_((l3t,Ohe)=>{\"use strict\";Ohe.exports=t=>class extends t{warn(e,r,s={}){this.file&&(s.file=this.file),this.cwd&&(s.cwd=this.cwd),s.code=r instanceof Error&&r.code||e,s.tarCode=e,!this.strict&&s.recoverable!==!1?(r instanceof Error&&(s=Object.assign(r,s),r=r.message),this.emit(\"warn\",s.tarCode,r,s)):r instanceof Error?this.emit(\"error\",Object.assign(r,s)):this.emit(\"error\",Object.assign(new Error(`${e}: ${r}`),s))}}});var b6=_((u3t,Lhe)=>{\"use strict\";var XT=[\"|\",\"<\",\">\",\"?\",\":\"],D6=XT.map(t=>String.fromCharCode(61440+t.charCodeAt(0))),Kit=new Map(XT.map((t,e)=>[t,D6[e]])),zit=new Map(D6.map((t,e)=>[t,XT[e]]));Lhe.exports={encode:t=>XT.reduce((e,r)=>e.split(r).join(Kit.get(r)),t),decode:t=>D6.reduce((e,r)=>e.split(r).join(zit.get(r)),t)}});var P6=_((f3t,Uhe)=>{var{isAbsolute:Xit,parse:Mhe}=Ie(\"path\").win32;Uhe.exports=t=>{let e=\"\",r=Mhe(t);for(;Xit(t)||r.root;){let s=t.charAt(0)===\"/\"&&t.slice(0,4)!==\"//?/\"?\"/\":r.root;t=t.substr(s.length),e+=s,r=Mhe(t)}return[e,t]}});var Hhe=_((A3t,_he)=>{\"use strict\";_he.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 M6=_((g3t,t0e)=>{\"use strict\";var Jhe=PI(),Khe=KT(),zhe=RI(),nA=Ie(\"fs\"),jhe=Ie(\"path\"),rA=QI(),Zit=FI(),Xhe=(t,e)=>e?(t=rA(t).replace(/^\\.(\\/|$)/,\"\"),Zit(e)+\"/\"+t):rA(t),$it=16*1024*1024,Ghe=Symbol(\"process\"),qhe=Symbol(\"file\"),Whe=Symbol(\"directory\"),k6=Symbol(\"symlink\"),Yhe=Symbol(\"hardlink\"),Dv=Symbol(\"header\"),ZT=Symbol(\"read\"),Q6=Symbol(\"lstat\"),$T=Symbol(\"onlstat\"),T6=Symbol(\"onread\"),R6=Symbol(\"onreadlink\"),F6=Symbol(\"openfile\"),N6=Symbol(\"onopenfile\"),R0=Symbol(\"close\"),eR=Symbol(\"mode\"),O6=Symbol(\"awaitDrain\"),x6=Symbol(\"ondrain\"),iA=Symbol(\"prefix\"),Vhe=Symbol(\"hadError\"),Zhe=zT(),est=b6(),$he=P6(),e0e=Hhe(),tR=Zhe(class extends Jhe{constructor(e,r){if(r=r||{},super(r),typeof e!=\"string\")throw new TypeError(\"path is required\");this.path=rA(e),this.portable=!!r.portable,this.myuid=process.getuid&&process.getuid()||0,this.myuser=process.env.USER||\"\",this.maxReadSize=r.maxReadSize||$it,this.linkCache=r.linkCache||new Map,this.statCache=r.statCache||new Map,this.preservePaths=!!r.preservePaths,this.cwd=rA(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?rA(r.prefix):null,this.fd=null,this.blockLen=null,this.blockRemain=null,this.buf=null,this.offset=null,this.length=null,this.pos=null,this.remain=null,typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=$he(this.path);a&&(this.path=n,s=a)}this.win32=!!r.win32||process.platform===\"win32\",this.win32&&(this.path=est.decode(this.path.replace(/\\\\/g,\"/\")),e=e.replace(/\\\\/g,\"/\")),this.absolute=rA(r.absolute||jhe.resolve(this.cwd,e)),this.path===\"\"&&(this.path=\"./\"),s&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.statCache.has(this.absolute)?this[$T](this.statCache.get(this.absolute)):this[Q6]()}emit(e,...r){return e===\"error\"&&(this[Vhe]=!0),super.emit(e,...r)}[Q6](){nA.lstat(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[$T](r)})}[$T](e){this.statCache.set(this.absolute,e),this.stat=e,e.isFile()||(e.size=0),this.type=rst(e),this.emit(\"stat\",e),this[Ghe]()}[Ghe](){switch(this.type){case\"File\":return this[qhe]();case\"Directory\":return this[Whe]();case\"SymbolicLink\":return this[k6]();default:return this.end()}}[eR](e){return e0e(e,this.type===\"Directory\",this.portable)}[iA](e){return Xhe(e,this.prefix)}[Dv](){this.type===\"Directory\"&&this.portable&&(this.noMtime=!0),this.header=new zhe({path:this[iA](this.path),linkpath:this.type===\"Link\"?this[iA](this.linkpath):this.linkpath,mode:this[eR](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 Khe({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[iA](this.path),linkpath:this.type===\"Link\"?this[iA](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)}[Whe](){this.path.substr(-1)!==\"/\"&&(this.path+=\"/\"),this.stat.size=0,this[Dv](),this.end()}[k6](){nA.readlink(this.absolute,(e,r)=>{if(e)return this.emit(\"error\",e);this[R6](r)})}[R6](e){this.linkpath=rA(e),this[Dv](),this.end()}[Yhe](e){this.type=\"Link\",this.linkpath=rA(jhe.relative(this.cwd,e)),this.stat.size=0,this[Dv](),this.end()}[qhe](){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[Yhe](r)}this.linkCache.set(e,this.absolute)}if(this[Dv](),this.stat.size===0)return this.end();this[F6]()}[F6](){nA.open(this.absolute,\"r\",(e,r)=>{if(e)return this.emit(\"error\",e);this[N6](r)})}[N6](e){if(this.fd=e,this[Vhe])return this[R0]();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[ZT]()}[ZT](){let{fd:e,buf:r,offset:s,length:a,pos:n}=this;nA.read(e,r,s,a,n,(c,f)=>{if(c)return this[R0](()=>this.emit(\"error\",c));this[T6](f)})}[R0](e){nA.close(this.fd,e)}[T6](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[R0](()=>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[R0](()=>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[x6]():this[O6](()=>this[x6]())}[O6](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)}[x6](){if(!this.remain)return this.blockRemain&&super.write(Buffer.alloc(this.blockRemain)),this[R0](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[ZT]()}}),L6=class extends tR{[Q6](){this[$T](nA.lstatSync(this.absolute))}[k6](){this[R6](nA.readlinkSync(this.absolute))}[F6](){this[N6](nA.openSync(this.absolute,\"r\"))}[ZT](){let e=!0;try{let{fd:r,buf:s,offset:a,length:n,pos:c}=this,f=nA.readSync(r,s,a,n,c);this[T6](f),e=!1}finally{if(e)try{this[R0](()=>{})}catch{}}}[O6](e){e()}[R0](e){nA.closeSync(this.fd),e()}},tst=Zhe(class extends Jhe{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=rA(e.path),this.mode=this[eR](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=rA(e.linkpath),typeof r.onwarn==\"function\"&&this.on(\"warn\",r.onwarn);let s=!1;if(!this.preservePaths){let[a,n]=$he(this.path);a&&(this.path=n,s=a)}this.remain=e.size,this.blockRemain=e.startBlockSize,this.header=new zhe({path:this[iA](this.path),linkpath:this.type===\"Link\"?this[iA](this.linkpath):this.linkpath,mode:this.mode,uid:this.portable?null:this.uid,gid:this.portable?null:this.gid,size:this.size,mtime:this.noMtime?null:this.mtime,type:this.type,uname:this.portable?null:this.uname,atime:this.portable?null:this.atime,ctime:this.portable?null:this.ctime}),s&&this.warn(\"TAR_ENTRY_INFO\",`stripping ${s} from absolute path`,{entry:this,path:s+this.path}),this.header.encode()&&!this.noPax&&super.write(new Khe({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[iA](this.path),linkpath:this.type===\"Link\"?this[iA](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)}[iA](e){return Xhe(e,this.prefix)}[eR](e){return e0e(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()}});tR.Sync=L6;tR.Tar=tst;var rst=t=>t.isFile()?\"File\":t.isDirectory()?\"Directory\":t.isSymbolicLink()?\"SymbolicLink\":\"Unsupported\";t0e.exports=tR});var uR=_((m3t,l0e)=>{\"use strict\";var lR=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}},nst=PI(),ist=m6(),sst=VT(),V6=M6(),ost=V6.Sync,ast=V6.Tar,lst=$x(),r0e=Buffer.alloc(1024),iR=Symbol(\"onStat\"),rR=Symbol(\"ended\"),sA=Symbol(\"queue\"),NI=Symbol(\"current\"),gm=Symbol(\"process\"),nR=Symbol(\"processing\"),n0e=Symbol(\"processJob\"),oA=Symbol(\"jobs\"),U6=Symbol(\"jobDone\"),sR=Symbol(\"addFSEntry\"),i0e=Symbol(\"addTarEntry\"),G6=Symbol(\"stat\"),q6=Symbol(\"readdir\"),oR=Symbol(\"onreaddir\"),aR=Symbol(\"pipe\"),s0e=Symbol(\"entry\"),_6=Symbol(\"entryOpt\"),W6=Symbol(\"writeEntryClass\"),a0e=Symbol(\"write\"),H6=Symbol(\"ondrain\"),cR=Ie(\"fs\"),o0e=Ie(\"path\"),cst=zT(),j6=QI(),J6=cst(class extends nst{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=j6(e.prefix||\"\"),this.linkCache=e.linkCache||new Map,this.statCache=e.statCache||new Map,this.readdirCache=e.readdirCache||new Map,this[W6]=V6,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 ist.Gzip(e.gzip),this.zip.on(\"data\",r=>super.write(r)),this.zip.on(\"end\",r=>super.end()),this.zip.on(\"drain\",r=>this[H6]()),this.on(\"resume\",r=>this.zip.resume())):this.on(\"drain\",this[H6]),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[sA]=new lst,this[oA]=0,this.jobs=+e.jobs||4,this[nR]=!1,this[rR]=!1}[a0e](e){return super.write(e)}add(e){return this.write(e),this}end(e){return e&&this.write(e),this[rR]=!0,this[gm](),this}write(e){if(this[rR])throw new Error(\"write after end\");return e instanceof sst?this[i0e](e):this[sR](e),this.flowing}[i0e](e){let r=j6(o0e.resolve(this.cwd,e.path));if(!this.filter(e.path,e))e.resume();else{let s=new lR(e.path,r,!1);s.entry=new ast(e,this[_6](s)),s.entry.on(\"end\",a=>this[U6](s)),this[oA]+=1,this[sA].push(s)}this[gm]()}[sR](e){let r=j6(o0e.resolve(this.cwd,e));this[sA].push(new lR(e,r)),this[gm]()}[G6](e){e.pending=!0,this[oA]+=1;let r=this.follow?\"stat\":\"lstat\";cR[r](e.absolute,(s,a)=>{e.pending=!1,this[oA]-=1,s?this.emit(\"error\",s):this[iR](e,a)})}[iR](e,r){this.statCache.set(e.absolute,r),e.stat=r,this.filter(e.path,r)||(e.ignore=!0),this[gm]()}[q6](e){e.pending=!0,this[oA]+=1,cR.readdir(e.absolute,(r,s)=>{if(e.pending=!1,this[oA]-=1,r)return this.emit(\"error\",r);this[oR](e,s)})}[oR](e,r){this.readdirCache.set(e.absolute,r),e.readdir=r,this[gm]()}[gm](){if(!this[nR]){this[nR]=!0;for(let e=this[sA].head;e!==null&&this[oA]<this.jobs;e=e.next)if(this[n0e](e.value),e.value.ignore){let r=e.next;this[sA].removeNode(e),e.next=r}this[nR]=!1,this[rR]&&!this[sA].length&&this[oA]===0&&(this.zip?this.zip.end(r0e):(super.write(r0e),super.end()))}}get[NI](){return this[sA]&&this[sA].head&&this[sA].head.value}[U6](e){this[sA].shift(),this[oA]-=1,this[gm]()}[n0e](e){if(!e.pending){if(e.entry){e===this[NI]&&!e.piped&&this[aR](e);return}if(e.stat||(this.statCache.has(e.absolute)?this[iR](e,this.statCache.get(e.absolute)):this[G6](e)),!!e.stat&&!e.ignore&&!(!this.noDirRecurse&&e.stat.isDirectory()&&!e.readdir&&(this.readdirCache.has(e.absolute)?this[oR](e,this.readdirCache.get(e.absolute)):this[q6](e),!e.readdir))){if(e.entry=this[s0e](e),!e.entry){e.ignore=!0;return}e===this[NI]&&!e.piped&&this[aR](e)}}}[_6](e){return{onwarn:(r,s,a)=>this.warn(r,s,a),noPax:this.noPax,cwd:this.cwd,absolute:e.absolute,preservePaths:this.preservePaths,maxReadSize:this.maxReadSize,strict:this.strict,portable:this.portable,linkCache:this.linkCache,statCache:this.statCache,noMtime:this.noMtime,mtime:this.mtime,prefix:this.prefix}}[s0e](e){this[oA]+=1;try{return new this[W6](e.path,this[_6](e)).on(\"end\",()=>this[U6](e)).on(\"error\",r=>this.emit(\"error\",r))}catch(r){this.emit(\"error\",r)}}[H6](){this[NI]&&this[NI].entry&&this[NI].entry.resume()}[aR](e){e.piped=!0,e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[sR](c+a)});let r=e.entry,s=this.zip;s?r.on(\"data\",a=>{s.write(a)||r.pause()}):r.on(\"data\",a=>{super.write(a)||r.pause()})}pause(){return this.zip&&this.zip.pause(),super.pause()}}),Y6=class extends J6{constructor(e){super(e),this[W6]=ost}pause(){}resume(){}[G6](e){let r=this.follow?\"statSync\":\"lstatSync\";this[iR](e,cR[r](e.absolute))}[q6](e,r){this[oR](e,cR.readdirSync(e.absolute))}[aR](e){let r=e.entry,s=this.zip;e.readdir&&e.readdir.forEach(a=>{let n=e.path,c=n===\"./\"?\"\":n.replace(/\\/*$/,\"/\");this[sR](c+a)}),s?r.on(\"data\",a=>{s.write(a)}):r.on(\"data\",a=>{super[a0e](a)})}};J6.Sync=Y6;l0e.exports=J6});var GI=_(Pv=>{\"use strict\";var ust=PI(),fst=Ie(\"events\").EventEmitter,fl=Ie(\"fs\"),X6=fl.writev;if(!X6){let t=process.binding(\"fs\"),e=t.FSReqWrap||t.FSReqCallback;X6=(r,s,a,n)=>{let c=(p,h)=>n(p,h,s),f=new e;f.oncomplete=c,t.writeBuffers(r,s,a,f)}}var HI=Symbol(\"_autoClose\"),Yu=Symbol(\"_close\"),bv=Symbol(\"_ended\"),ii=Symbol(\"_fd\"),c0e=Symbol(\"_finished\"),N0=Symbol(\"_flags\"),K6=Symbol(\"_flush\"),Z6=Symbol(\"_handleChunk\"),$6=Symbol(\"_makeBuf\"),gR=Symbol(\"_mode\"),fR=Symbol(\"_needDrain\"),UI=Symbol(\"_onerror\"),jI=Symbol(\"_onopen\"),z6=Symbol(\"_onread\"),LI=Symbol(\"_onwrite\"),O0=Symbol(\"_open\"),Wp=Symbol(\"_path\"),dm=Symbol(\"_pos\"),aA=Symbol(\"_queue\"),MI=Symbol(\"_read\"),u0e=Symbol(\"_readSize\"),F0=Symbol(\"_reading\"),AR=Symbol(\"_remain\"),f0e=Symbol(\"_size\"),pR=Symbol(\"_write\"),OI=Symbol(\"_writing\"),hR=Symbol(\"_defaultFlag\"),_I=Symbol(\"_errored\"),dR=class extends ust{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[_I]=!1,this[ii]=typeof r.fd==\"number\"?r.fd:null,this[Wp]=e,this[u0e]=r.readSize||16*1024*1024,this[F0]=!1,this[f0e]=typeof r.size==\"number\"?r.size:1/0,this[AR]=this[f0e],this[HI]=typeof r.autoClose==\"boolean\"?r.autoClose:!0,typeof this[ii]==\"number\"?this[MI]():this[O0]()}get fd(){return this[ii]}get path(){return this[Wp]}write(){throw new TypeError(\"this is a readable stream\")}end(){throw new TypeError(\"this is a readable stream\")}[O0](){fl.open(this[Wp],\"r\",(e,r)=>this[jI](e,r))}[jI](e,r){e?this[UI](e):(this[ii]=r,this.emit(\"open\",r),this[MI]())}[$6](){return Buffer.allocUnsafe(Math.min(this[u0e],this[AR]))}[MI](){if(!this[F0]){this[F0]=!0;let e=this[$6]();if(e.length===0)return process.nextTick(()=>this[z6](null,0,e));fl.read(this[ii],e,0,e.length,null,(r,s,a)=>this[z6](r,s,a))}}[z6](e,r,s){this[F0]=!1,e?this[UI](e):this[Z6](r,s)&&this[MI]()}[Yu](){if(this[HI]&&typeof this[ii]==\"number\"){let e=this[ii];this[ii]=null,fl.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}[UI](e){this[F0]=!0,this[Yu](),this.emit(\"error\",e)}[Z6](e,r){let s=!1;return this[AR]-=e,e>0&&(s=super.write(e<r.length?r.slice(0,e):r)),(e===0||this[AR]<=0)&&(s=!1,this[Yu](),super.end()),s}emit(e,r){switch(e){case\"prefinish\":case\"finish\":break;case\"drain\":typeof this[ii]==\"number\"&&this[MI]();break;case\"error\":return this[_I]?void 0:(this[_I]=!0,super.emit(e,r));default:return super.emit(e,r)}}},eG=class extends dR{[O0](){let e=!0;try{this[jI](null,fl.openSync(this[Wp],\"r\")),e=!1}finally{e&&this[Yu]()}}[MI](){let e=!0;try{if(!this[F0]){this[F0]=!0;do{let r=this[$6](),s=r.length===0?0:fl.readSync(this[ii],r,0,r.length,null);if(!this[Z6](s,r))break}while(!0);this[F0]=!1}e=!1}finally{e&&this[Yu]()}}[Yu](){if(this[HI]&&typeof this[ii]==\"number\"){let e=this[ii];this[ii]=null,fl.closeSync(e),this.emit(\"close\")}}},mR=class extends fst{constructor(e,r){r=r||{},super(r),this.readable=!1,this.writable=!0,this[_I]=!1,this[OI]=!1,this[bv]=!1,this[fR]=!1,this[aA]=[],this[Wp]=e,this[ii]=typeof r.fd==\"number\"?r.fd:null,this[gR]=r.mode===void 0?438:r.mode,this[dm]=typeof r.start==\"number\"?r.start:null,this[HI]=typeof r.autoClose==\"boolean\"?r.autoClose:!0;let s=this[dm]!==null?\"r+\":\"w\";this[hR]=r.flags===void 0,this[N0]=this[hR]?s:r.flags,this[ii]===null&&this[O0]()}emit(e,r){if(e===\"error\"){if(this[_I])return;this[_I]=!0}return super.emit(e,r)}get fd(){return this[ii]}get path(){return this[Wp]}[UI](e){this[Yu](),this[OI]=!0,this.emit(\"error\",e)}[O0](){fl.open(this[Wp],this[N0],this[gR],(e,r)=>this[jI](e,r))}[jI](e,r){this[hR]&&this[N0]===\"r+\"&&e&&e.code===\"ENOENT\"?(this[N0]=\"w\",this[O0]()):e?this[UI](e):(this[ii]=r,this.emit(\"open\",r),this[K6]())}end(e,r){return e&&this.write(e,r),this[bv]=!0,!this[OI]&&!this[aA].length&&typeof this[ii]==\"number\"&&this[LI](null,0),this}write(e,r){return typeof e==\"string\"&&(e=Buffer.from(e,r)),this[bv]?(this.emit(\"error\",new Error(\"write() after end()\")),!1):this[ii]===null||this[OI]||this[aA].length?(this[aA].push(e),this[fR]=!0,!1):(this[OI]=!0,this[pR](e),!0)}[pR](e){fl.write(this[ii],e,0,e.length,this[dm],(r,s)=>this[LI](r,s))}[LI](e,r){e?this[UI](e):(this[dm]!==null&&(this[dm]+=r),this[aA].length?this[K6]():(this[OI]=!1,this[bv]&&!this[c0e]?(this[c0e]=!0,this[Yu](),this.emit(\"finish\")):this[fR]&&(this[fR]=!1,this.emit(\"drain\"))))}[K6](){if(this[aA].length===0)this[bv]&&this[LI](null,0);else if(this[aA].length===1)this[pR](this[aA].pop());else{let e=this[aA];this[aA]=[],X6(this[ii],e,this[dm],(r,s)=>this[LI](r,s))}}[Yu](){if(this[HI]&&typeof this[ii]==\"number\"){let e=this[ii];this[ii]=null,fl.close(e,r=>r?this.emit(\"error\",r):this.emit(\"close\"))}}},tG=class extends mR{[O0](){let e;if(this[hR]&&this[N0]===\"r+\")try{e=fl.openSync(this[Wp],this[N0],this[gR])}catch(r){if(r.code===\"ENOENT\")return this[N0]=\"w\",this[O0]();throw r}else e=fl.openSync(this[Wp],this[N0],this[gR]);this[jI](null,e)}[Yu](){if(this[HI]&&typeof this[ii]==\"number\"){let e=this[ii];this[ii]=null,fl.closeSync(e),this.emit(\"close\")}}[pR](e){let r=!0;try{this[LI](null,fl.writeSync(this[ii],e,0,e.length,this[dm])),r=!1}finally{if(r)try{this[Yu]()}catch{}}}};Pv.ReadStream=dR;Pv.ReadStreamSync=eG;Pv.WriteStream=mR;Pv.WriteStreamSync=tG});var vR=_((I3t,y0e)=>{\"use strict\";var Ast=zT(),pst=RI(),hst=Ie(\"events\"),gst=$x(),dst=1024*1024,mst=VT(),A0e=KT(),yst=m6(),rG=Buffer.from([31,139]),Lc=Symbol(\"state\"),mm=Symbol(\"writeEntry\"),Yp=Symbol(\"readEntry\"),nG=Symbol(\"nextEntry\"),p0e=Symbol(\"processEntry\"),Mc=Symbol(\"extendedHeader\"),xv=Symbol(\"globalExtendedHeader\"),L0=Symbol(\"meta\"),h0e=Symbol(\"emitMeta\"),Di=Symbol(\"buffer\"),Vp=Symbol(\"queue\"),ym=Symbol(\"ended\"),g0e=Symbol(\"emittedEnd\"),Em=Symbol(\"emit\"),Al=Symbol(\"unzip\"),yR=Symbol(\"consumeChunk\"),ER=Symbol(\"consumeChunkSub\"),iG=Symbol(\"consumeBody\"),d0e=Symbol(\"consumeMeta\"),m0e=Symbol(\"consumeHeader\"),IR=Symbol(\"consuming\"),sG=Symbol(\"bufferConcat\"),oG=Symbol(\"maybeEnd\"),kv=Symbol(\"writing\"),M0=Symbol(\"aborted\"),CR=Symbol(\"onDone\"),Im=Symbol(\"sawValidEntry\"),wR=Symbol(\"sawNullBlock\"),BR=Symbol(\"sawEOF\"),Est=t=>!0;y0e.exports=Ast(class extends hst{constructor(e){e=e||{},super(e),this.file=e.file||\"\",this[Im]=null,this.on(CR,r=>{(this[Lc]===\"begin\"||this[Im]===!1)&&this.warn(\"TAR_BAD_ARCHIVE\",\"Unrecognized archive format\")}),e.ondone?this.on(CR,e.ondone):this.on(CR,r=>{this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\")}),this.strict=!!e.strict,this.maxMetaEntrySize=e.maxMetaEntrySize||dst,this.filter=typeof e.filter==\"function\"?e.filter:Est,this.writable=!0,this.readable=!1,this[Vp]=new gst,this[Di]=null,this[Yp]=null,this[mm]=null,this[Lc]=\"begin\",this[L0]=\"\",this[Mc]=null,this[xv]=null,this[ym]=!1,this[Al]=null,this[M0]=!1,this[wR]=!1,this[BR]=!1,typeof e.onwarn==\"function\"&&this.on(\"warn\",e.onwarn),typeof e.onentry==\"function\"&&this.on(\"entry\",e.onentry)}[m0e](e,r){this[Im]===null&&(this[Im]=!1);let s;try{s=new pst(e,r,this[Mc],this[xv])}catch(a){return this.warn(\"TAR_ENTRY_INVALID\",a)}if(s.nullBlock)this[wR]?(this[BR]=!0,this[Lc]===\"begin\"&&(this[Lc]=\"header\"),this[Em](\"eof\")):(this[wR]=!0,this[Em](\"nullBlock\"));else if(this[wR]=!1,!s.cksumValid)this.warn(\"TAR_ENTRY_INVALID\",\"checksum failure\",{header:s});else if(!s.path)this.warn(\"TAR_ENTRY_INVALID\",\"path is required\",{header:s});else{let a=s.type;if(/^(Symbolic)?Link$/.test(a)&&!s.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath required\",{header:s});else if(!/^(Symbolic)?Link$/.test(a)&&s.linkpath)this.warn(\"TAR_ENTRY_INVALID\",\"linkpath forbidden\",{header:s});else{let n=this[mm]=new mst(s,this[Mc],this[xv]);if(!this[Im])if(n.remain){let c=()=>{n.invalid||(this[Im]=!0)};n.on(\"end\",c)}else this[Im]=!0;n.meta?n.size>this.maxMetaEntrySize?(n.ignore=!0,this[Em](\"ignoredEntry\",n),this[Lc]=\"ignore\",n.resume()):n.size>0&&(this[L0]=\"\",n.on(\"data\",c=>this[L0]+=c),this[Lc]=\"meta\"):(this[Mc]=null,n.ignore=n.ignore||!this.filter(n.path,n),n.ignore?(this[Em](\"ignoredEntry\",n),this[Lc]=n.remain?\"ignore\":\"header\",n.resume()):(n.remain?this[Lc]=\"body\":(this[Lc]=\"header\",n.end()),this[Yp]?this[Vp].push(n):(this[Vp].push(n),this[nG]())))}}}[p0e](e){let r=!0;return e?Array.isArray(e)?this.emit.apply(this,e):(this[Yp]=e,this.emit(\"entry\",e),e.emittedEnd||(e.on(\"end\",s=>this[nG]()),r=!1)):(this[Yp]=null,r=!1),r}[nG](){do;while(this[p0e](this[Vp].shift()));if(!this[Vp].length){let e=this[Yp];!e||e.flowing||e.size===e.remain?this[kv]||this.emit(\"drain\"):e.once(\"drain\",s=>this.emit(\"drain\"))}}[iG](e,r){let s=this[mm],a=s.blockRemain,n=a>=e.length&&r===0?e:e.slice(r,r+a);return s.write(n),s.blockRemain||(this[Lc]=\"header\",this[mm]=null,s.end()),n.length}[d0e](e,r){let s=this[mm],a=this[iG](e,r);return this[mm]||this[h0e](s),a}[Em](e,r,s){!this[Vp].length&&!this[Yp]?this.emit(e,r,s):this[Vp].push([e,r,s])}[h0e](e){switch(this[Em](\"meta\",this[L0]),e.type){case\"ExtendedHeader\":case\"OldExtendedHeader\":this[Mc]=A0e.parse(this[L0],this[Mc],!1);break;case\"GlobalExtendedHeader\":this[xv]=A0e.parse(this[L0],this[xv],!0);break;case\"NextFileHasLongPath\":case\"OldGnuLongPath\":this[Mc]=this[Mc]||Object.create(null),this[Mc].path=this[L0].replace(/\\0.*/,\"\");break;case\"NextFileHasLongLinkpath\":this[Mc]=this[Mc]||Object.create(null),this[Mc].linkpath=this[L0].replace(/\\0.*/,\"\");break;default:throw new Error(\"unknown meta: \"+e.type)}}abort(e){this[M0]=!0,this.emit(\"abort\",e),this.warn(\"TAR_ABORT\",e,{recoverable:!1})}write(e){if(this[M0])return;if(this[Al]===null&&e){if(this[Di]&&(e=Buffer.concat([this[Di],e]),this[Di]=null),e.length<rG.length)return this[Di]=e,!0;for(let s=0;this[Al]===null&&s<rG.length;s++)e[s]!==rG[s]&&(this[Al]=!1);if(this[Al]===null){let s=this[ym];this[ym]=!1,this[Al]=new yst.Unzip,this[Al].on(\"data\",n=>this[yR](n)),this[Al].on(\"error\",n=>this.abort(n)),this[Al].on(\"end\",n=>{this[ym]=!0,this[yR]()}),this[kv]=!0;let a=this[Al][s?\"end\":\"write\"](e);return this[kv]=!1,a}}this[kv]=!0,this[Al]?this[Al].write(e):this[yR](e),this[kv]=!1;let r=this[Vp].length?!1:this[Yp]?this[Yp].flowing:!0;return!r&&!this[Vp].length&&this[Yp].once(\"drain\",s=>this.emit(\"drain\")),r}[sG](e){e&&!this[M0]&&(this[Di]=this[Di]?Buffer.concat([this[Di],e]):e)}[oG](){if(this[ym]&&!this[g0e]&&!this[M0]&&!this[IR]){this[g0e]=!0;let e=this[mm];if(e&&e.blockRemain){let r=this[Di]?this[Di].length:0;this.warn(\"TAR_BAD_ARCHIVE\",`Truncated input (needed ${e.blockRemain} more bytes, only ${r} available)`,{entry:e}),this[Di]&&e.write(this[Di]),e.end()}this[Em](CR)}}[yR](e){if(this[IR])this[sG](e);else if(!e&&!this[Di])this[oG]();else{if(this[IR]=!0,this[Di]){this[sG](e);let r=this[Di];this[Di]=null,this[ER](r)}else this[ER](e);for(;this[Di]&&this[Di].length>=512&&!this[M0]&&!this[BR];){let r=this[Di];this[Di]=null,this[ER](r)}this[IR]=!1}(!this[Di]||this[ym])&&this[oG]()}[ER](e){let r=0,s=e.length;for(;r+512<=s&&!this[M0]&&!this[BR];)switch(this[Lc]){case\"begin\":case\"header\":this[m0e](e,r),r+=512;break;case\"ignore\":case\"body\":r+=this[iG](e,r);break;case\"meta\":r+=this[d0e](e,r);break;default:throw new Error(\"invalid state: \"+this[Lc])}r<s&&(this[Di]?this[Di]=Buffer.concat([e.slice(r),this[Di]]):this[Di]=e.slice(r))}end(e){this[M0]||(this[Al]?this[Al].end(e):(this[ym]=!0,this.write(e)))}})});var SR=_((C3t,w0e)=>{\"use strict\";var Ist=DI(),I0e=vR(),qI=Ie(\"fs\"),Cst=GI(),E0e=Ie(\"path\"),aG=FI();w0e.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=Ist(t);if(s.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!s.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Bst(s,e),s.noResume||wst(s),s.file&&s.sync?vst(s):s.file?Sst(s,r):C0e(s)};var wst=t=>{let e=t.onentry;t.onentry=e?r=>{e(r),r.resume()}:r=>r.resume()},Bst=(t,e)=>{let r=new Map(e.map(n=>[aG(n),!0])),s=t.filter,a=(n,c)=>{let f=c||E0e.parse(n).root||\".\",p=n===f?!1:r.has(n)?r.get(n):a(E0e.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(aG(n)):n=>a(aG(n))},vst=t=>{let e=C0e(t),r=t.file,s=!0,a;try{let n=qI.statSync(r),c=t.maxReadSize||16*1024*1024;if(n.size<c)e.end(qI.readFileSync(r));else{let f=0,p=Buffer.allocUnsafe(c);for(a=qI.openSync(r,\"r\");f<n.size;){let h=qI.readSync(a,p,0,c,f);f+=h,e.write(p.slice(0,h))}e.end()}s=!1}finally{if(s&&a)try{qI.closeSync(a)}catch{}}},Sst=(t,e)=>{let r=new I0e(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on(\"error\",f),r.on(\"end\",c),qI.stat(a,(p,h)=>{if(p)f(p);else{let E=new Cst.ReadStream(a,{readSize:s,size:h.size});E.on(\"error\",f),E.pipe(r)}})});return e?n.then(e,e):n},C0e=t=>new I0e(t)});var P0e=_((w3t,b0e)=>{\"use strict\";var Dst=DI(),DR=uR(),B0e=GI(),v0e=SR(),S0e=Ie(\"path\");b0e.exports=(t,e,r)=>{if(typeof e==\"function\"&&(r=e),Array.isArray(t)&&(e=t,t={}),!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");e=Array.from(e);let s=Dst(t);if(s.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!s.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return s.file&&s.sync?bst(s,e):s.file?Pst(s,e,r):s.sync?xst(s,e):kst(s,e)};var bst=(t,e)=>{let r=new DR.Sync(t),s=new B0e.WriteStreamSync(t.file,{mode:t.mode||438});r.pipe(s),D0e(r,e)},Pst=(t,e,r)=>{let s=new DR(t),a=new B0e.WriteStream(t.file,{mode:t.mode||438});s.pipe(a);let n=new Promise((c,f)=>{a.on(\"error\",f),a.on(\"close\",c),s.on(\"error\",f)});return lG(s,e),r?n.then(r,r):n},D0e=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?v0e({file:S0e.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},lG=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return v0e({file:S0e.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>lG(t,e));t.add(r)}t.end()},xst=(t,e)=>{let r=new DR.Sync(t);return D0e(r,e),r},kst=(t,e)=>{let r=new DR(t);return lG(r,e),r}});var cG=_((B3t,N0e)=>{\"use strict\";var Qst=DI(),x0e=uR(),Xl=Ie(\"fs\"),k0e=GI(),Q0e=SR(),T0e=Ie(\"path\"),R0e=RI();N0e.exports=(t,e,r)=>{let s=Qst(t);if(!s.file)throw new TypeError(\"file is required\");if(s.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),s.sync?Tst(s,e):Fst(s,e,r)};var Tst=(t,e)=>{let r=new x0e.Sync(t),s=!0,a,n;try{try{a=Xl.openSync(t.file,\"r+\")}catch(p){if(p.code===\"ENOENT\")a=Xl.openSync(t.file,\"w+\");else throw p}let c=Xl.fstatSync(a),f=Buffer.alloc(512);e:for(n=0;n<c.size;n+=512){for(let E=0,C=0;E<512;E+=C){if(C=Xl.readSync(a,f,E,f.length-E,n+E),n===0&&f[0]===31&&f[1]===139)throw new Error(\"cannot append to compressed archives\");if(!C)break e}let p=new R0e(f);if(!p.cksumValid)break;let h=512*Math.ceil(p.size/512);if(n+h+512>c.size)break;n+=h,t.mtimeCache&&t.mtimeCache.set(p.path,p.mtime)}s=!1,Rst(t,r,n,a,e)}finally{if(s)try{Xl.closeSync(a)}catch{}}},Rst=(t,e,r,s,a)=>{let n=new k0e.WriteStreamSync(t.file,{fd:s,start:r});e.pipe(n),Nst(e,a)},Fst=(t,e,r)=>{e=Array.from(e);let s=new x0e(t),a=(c,f,p)=>{let h=(I,R)=>{I?Xl.close(c,N=>p(I)):p(null,R)},E=0;if(f===0)return h(null,0);let C=0,S=Buffer.alloc(512),P=(I,R)=>{if(I)return h(I);if(C+=R,C<512&&R)return Xl.read(c,S,C,S.length-C,E+C,P);if(E===0&&S[0]===31&&S[1]===139)return h(new Error(\"cannot append to compressed archives\"));if(C<512)return h(null,E);let N=new R0e(S);if(!N.cksumValid)return h(null,E);let U=512*Math.ceil(N.size/512);if(E+U+512>f||(E+=U+512,E>=f))return h(null,E);t.mtimeCache&&t.mtimeCache.set(N.path,N.mtime),C=0,Xl.read(c,S,0,512,E,P)};Xl.read(c,S,0,512,E,P)},n=new Promise((c,f)=>{s.on(\"error\",f);let p=\"r+\",h=(E,C)=>{if(E&&E.code===\"ENOENT\"&&p===\"r+\")return p=\"w+\",Xl.open(t.file,p,h);if(E)return f(E);Xl.fstat(C,(S,P)=>{if(S)return Xl.close(C,()=>f(S));a(C,P.size,(I,R)=>{if(I)return f(I);let N=new k0e.WriteStream(t.file,{fd:C,start:R});s.pipe(N),N.on(\"error\",f),N.on(\"close\",c),F0e(s,e)})})};Xl.open(t.file,p,h)});return r?n.then(r,r):n},Nst=(t,e)=>{e.forEach(r=>{r.charAt(0)===\"@\"?Q0e({file:T0e.resolve(t.cwd,r.substr(1)),sync:!0,noResume:!0,onentry:s=>t.add(s)}):t.add(r)}),t.end()},F0e=(t,e)=>{for(;e.length;){let r=e.shift();if(r.charAt(0)===\"@\")return Q0e({file:T0e.resolve(t.cwd,r.substr(1)),noResume:!0,onentry:s=>t.add(s)}).then(s=>F0e(t,e));t.add(r)}t.end()}});var L0e=_((v3t,O0e)=>{\"use strict\";var Ost=DI(),Lst=cG();O0e.exports=(t,e,r)=>{let s=Ost(t);if(!s.file)throw new TypeError(\"file is required\");if(s.gzip)throw new TypeError(\"cannot append to compressed archives\");if(!e||!Array.isArray(e)||!e.length)throw new TypeError(\"no files or directories specified\");return e=Array.from(e),Mst(s),Lst(s,e,r)};var Mst=t=>{let e=t.filter;t.mtimeCache||(t.mtimeCache=new Map),t.filter=e?(r,s)=>e(r,s)&&!(t.mtimeCache.get(r)>s.mtime):(r,s)=>!(t.mtimeCache.get(r)>s.mtime)}});var _0e=_((S3t,U0e)=>{var{promisify:M0e}=Ie(\"util\"),U0=Ie(\"fs\"),Ust=t=>{if(!t)t={mode:511,fs:U0};else if(typeof t==\"object\")t={mode:511,fs:U0,...t};else if(typeof t==\"number\")t={mode:t,fs:U0};else if(typeof t==\"string\")t={mode:parseInt(t,8),fs:U0};else throw new TypeError(\"invalid options argument\");return t.mkdir=t.mkdir||t.fs.mkdir||U0.mkdir,t.mkdirAsync=M0e(t.mkdir),t.stat=t.stat||t.fs.stat||U0.stat,t.statAsync=M0e(t.stat),t.statSync=t.statSync||t.fs.statSync||U0.statSync,t.mkdirSync=t.mkdirSync||t.fs.mkdirSync||U0.mkdirSync,t};U0e.exports=Ust});var j0e=_((D3t,H0e)=>{var _st=process.platform,{resolve:Hst,parse:jst}=Ie(\"path\"),Gst=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=Hst(t),_st===\"win32\"){let e=/[*|\"<>?:]/,{root:r}=jst(t);if(e.test(t.substr(r.length)))throw Object.assign(new Error(\"Illegal characters in path.\"),{path:t,code:\"EINVAL\"})}return t};H0e.exports=Gst});var V0e=_((b3t,Y0e)=>{var{dirname:G0e}=Ie(\"path\"),q0e=(t,e,r=void 0)=>r===e?Promise.resolve():t.statAsync(e).then(s=>s.isDirectory()?r:void 0,s=>s.code===\"ENOENT\"?q0e(t,G0e(e),e):void 0),W0e=(t,e,r=void 0)=>{if(r!==e)try{return t.statSync(e).isDirectory()?r:void 0}catch(s){return s.code===\"ENOENT\"?W0e(t,G0e(e),e):void 0}};Y0e.exports={findMade:q0e,findMadeSync:W0e}});var AG=_((P3t,K0e)=>{var{dirname:J0e}=Ie(\"path\"),uG=(t,e,r)=>{e.recursive=!1;let s=J0e(t);return s===t?e.mkdirAsync(t,e).catch(a=>{if(a.code!==\"EISDIR\")throw a}):e.mkdirAsync(t,e).then(()=>r||t,a=>{if(a.code===\"ENOENT\")return uG(s,e).then(n=>uG(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})})},fG=(t,e,r)=>{let s=J0e(t);if(e.recursive=!1,s===t)try{return e.mkdirSync(t,e)}catch(a){if(a.code!==\"EISDIR\")throw a;return}try{return e.mkdirSync(t,e),r||t}catch(a){if(a.code===\"ENOENT\")return fG(t,e,fG(s,e,r));if(a.code!==\"EEXIST\"&&a.code!==\"EROFS\")throw a;try{if(!e.statSync(t).isDirectory())throw a}catch{throw a}}};K0e.exports={mkdirpManual:uG,mkdirpManualSync:fG}});var Z0e=_((x3t,X0e)=>{var{dirname:z0e}=Ie(\"path\"),{findMade:qst,findMadeSync:Wst}=V0e(),{mkdirpManual:Yst,mkdirpManualSync:Vst}=AG(),Jst=(t,e)=>(e.recursive=!0,z0e(t)===t?e.mkdirAsync(t,e):qst(e,t).then(s=>e.mkdirAsync(t,e).then(()=>s).catch(a=>{if(a.code===\"ENOENT\")return Yst(t,e);throw a}))),Kst=(t,e)=>{if(e.recursive=!0,z0e(t)===t)return e.mkdirSync(t,e);let s=Wst(e,t);try{return e.mkdirSync(t,e),s}catch(a){if(a.code===\"ENOENT\")return Vst(t,e);throw a}};X0e.exports={mkdirpNative:Jst,mkdirpNativeSync:Kst}});var rge=_((k3t,tge)=>{var $0e=Ie(\"fs\"),zst=process.version,pG=zst.replace(/^v/,\"\").split(\".\"),ege=+pG[0]>10||+pG[0]==10&&+pG[1]>=12,Xst=ege?t=>t.mkdir===$0e.mkdir:()=>!1,Zst=ege?t=>t.mkdirSync===$0e.mkdirSync:()=>!1;tge.exports={useNative:Xst,useNativeSync:Zst}});var lge=_((Q3t,age)=>{var WI=_0e(),YI=j0e(),{mkdirpNative:nge,mkdirpNativeSync:ige}=Z0e(),{mkdirpManual:sge,mkdirpManualSync:oge}=AG(),{useNative:$st,useNativeSync:eot}=rge(),VI=(t,e)=>(t=YI(t),e=WI(e),$st(e)?nge(t,e):sge(t,e)),tot=(t,e)=>(t=YI(t),e=WI(e),eot(e)?ige(t,e):oge(t,e));VI.sync=tot;VI.native=(t,e)=>nge(YI(t),WI(e));VI.manual=(t,e)=>sge(YI(t),WI(e));VI.nativeSync=(t,e)=>ige(YI(t),WI(e));VI.manualSync=(t,e)=>oge(YI(t),WI(e));age.exports=VI});var gge=_((T3t,hge)=>{\"use strict\";var Uc=Ie(\"fs\"),Cm=Ie(\"path\"),rot=Uc.lchown?\"lchown\":\"chown\",not=Uc.lchownSync?\"lchownSync\":\"chownSync\",uge=Uc.lchown&&!process.version.match(/v1[1-9]+\\./)&&!process.version.match(/v10\\.[6-9]/),cge=(t,e,r)=>{try{return Uc[not](t,e,r)}catch(s){if(s.code!==\"ENOENT\")throw s}},iot=(t,e,r)=>{try{return Uc.chownSync(t,e,r)}catch(s){if(s.code!==\"ENOENT\")throw s}},sot=uge?(t,e,r,s)=>a=>{!a||a.code!==\"EISDIR\"?s(a):Uc.chown(t,e,r,s)}:(t,e,r,s)=>s,hG=uge?(t,e,r)=>{try{return cge(t,e,r)}catch(s){if(s.code!==\"EISDIR\")throw s;iot(t,e,r)}}:(t,e,r)=>cge(t,e,r),oot=process.version,fge=(t,e,r)=>Uc.readdir(t,e,r),aot=(t,e)=>Uc.readdirSync(t,e);/^v4\\./.test(oot)&&(fge=(t,e,r)=>Uc.readdir(t,r));var bR=(t,e,r,s)=>{Uc[rot](t,e,r,sot(t,e,r,a=>{s(a&&a.code!==\"ENOENT\"?a:null)}))},Age=(t,e,r,s,a)=>{if(typeof e==\"string\")return Uc.lstat(Cm.resolve(t,e),(n,c)=>{if(n)return a(n.code!==\"ENOENT\"?n:null);c.name=e,Age(t,c,r,s,a)});if(e.isDirectory())gG(Cm.resolve(t,e.name),r,s,n=>{if(n)return a(n);let c=Cm.resolve(t,e.name);bR(c,r,s,a)});else{let n=Cm.resolve(t,e.name);bR(n,r,s,a)}},gG=(t,e,r,s)=>{fge(t,{withFileTypes:!0},(a,n)=>{if(a){if(a.code===\"ENOENT\")return s();if(a.code!==\"ENOTDIR\"&&a.code!==\"ENOTSUP\")return s(a)}if(a||!n.length)return bR(t,e,r,s);let c=n.length,f=null,p=h=>{if(!f){if(h)return s(f=h);if(--c===0)return bR(t,e,r,s)}};n.forEach(h=>Age(t,h,e,r,p))})},lot=(t,e,r,s)=>{if(typeof e==\"string\")try{let a=Uc.lstatSync(Cm.resolve(t,e));a.name=e,e=a}catch(a){if(a.code===\"ENOENT\")return;throw a}e.isDirectory()&&pge(Cm.resolve(t,e.name),r,s),hG(Cm.resolve(t,e.name),r,s)},pge=(t,e,r)=>{let s;try{s=aot(t,{withFileTypes:!0})}catch(a){if(a.code===\"ENOENT\")return;if(a.code===\"ENOTDIR\"||a.code===\"ENOTSUP\")return hG(t,e,r);throw a}return s&&s.length&&s.forEach(a=>lot(t,a,e,r)),hG(t,e,r)};hge.exports=gG;gG.sync=pge});var Ege=_((R3t,dG)=>{\"use strict\";var dge=lge(),_c=Ie(\"fs\"),PR=Ie(\"path\"),mge=gge(),Vu=QI(),xR=class extends Error{constructor(e,r){super(\"Cannot extract through symbolic link\"),this.path=r,this.symlink=e}get name(){return\"SylinkError\"}},kR=class extends Error{constructor(e,r){super(r+\": Cannot cd into '\"+e+\"'\"),this.path=e,this.code=r}get name(){return\"CwdError\"}},QR=(t,e)=>t.get(Vu(e)),Qv=(t,e,r)=>t.set(Vu(e),r),cot=(t,e)=>{_c.stat(t,(r,s)=>{(r||!s.isDirectory())&&(r=new kR(t,r&&r.code||\"ENOTDIR\")),e(r)})};dG.exports=(t,e,r)=>{t=Vu(t);let s=e.umask,a=e.mode|448,n=(a&s)!==0,c=e.uid,f=e.gid,p=typeof c==\"number\"&&typeof f==\"number\"&&(c!==e.processUid||f!==e.processGid),h=e.preserve,E=e.unlink,C=e.cache,S=Vu(e.cwd),P=(N,U)=>{N?r(N):(Qv(C,t,!0),U&&p?mge(U,c,f,W=>P(W)):n?_c.chmod(t,a,r):r())};if(C&&QR(C,t)===!0)return P();if(t===S)return cot(t,P);if(h)return dge(t,{mode:a}).then(N=>P(null,N),P);let R=Vu(PR.relative(S,t)).split(\"/\");TR(S,R,a,C,E,S,null,P)};var TR=(t,e,r,s,a,n,c,f)=>{if(!e.length)return f(null,c);let p=e.shift(),h=Vu(PR.resolve(t+\"/\"+p));if(QR(s,h))return TR(h,e,r,s,a,n,c,f);_c.mkdir(h,r,yge(h,e,r,s,a,n,c,f))},yge=(t,e,r,s,a,n,c,f)=>p=>{p?_c.lstat(t,(h,E)=>{if(h)h.path=h.path&&Vu(h.path),f(h);else if(E.isDirectory())TR(t,e,r,s,a,n,c,f);else if(a)_c.unlink(t,C=>{if(C)return f(C);_c.mkdir(t,r,yge(t,e,r,s,a,n,c,f))});else{if(E.isSymbolicLink())return f(new xR(t,t+\"/\"+e.join(\"/\")));f(p)}}):(c=c||t,TR(t,e,r,s,a,n,c,f))},uot=t=>{let e=!1,r=\"ENOTDIR\";try{e=_c.statSync(t).isDirectory()}catch(s){r=s.code}finally{if(!e)throw new kR(t,r)}};dG.exports.sync=(t,e)=>{t=Vu(t);let r=e.umask,s=e.mode|448,a=(s&r)!==0,n=e.uid,c=e.gid,f=typeof n==\"number\"&&typeof c==\"number\"&&(n!==e.processUid||c!==e.processGid),p=e.preserve,h=e.unlink,E=e.cache,C=Vu(e.cwd),S=N=>{Qv(E,t,!0),N&&f&&mge.sync(N,n,c),a&&_c.chmodSync(t,s)};if(E&&QR(E,t)===!0)return S();if(t===C)return uot(C),S();if(p)return S(dge.sync(t,s));let I=Vu(PR.relative(C,t)).split(\"/\"),R=null;for(let N=I.shift(),U=C;N&&(U+=\"/\"+N);N=I.shift())if(U=Vu(PR.resolve(U)),!QR(E,U))try{_c.mkdirSync(U,s),R=R||U,Qv(E,U,!0)}catch{let ee=_c.lstatSync(U);if(ee.isDirectory()){Qv(E,U,!0);continue}else if(h){_c.unlinkSync(U),_c.mkdirSync(U,s),R=R||U,Qv(E,U,!0);continue}else if(ee.isSymbolicLink())return new xR(U,U+\"/\"+I.join(\"/\"))}return S(R)}});var yG=_((F3t,Ige)=>{var mG=Object.create(null),{hasOwnProperty:fot}=Object.prototype;Ige.exports=t=>(fot.call(mG,t)||(mG[t]=t.normalize(\"NFKD\")),mG[t])});var vge=_((N3t,Bge)=>{var Cge=Ie(\"assert\"),Aot=yG(),pot=FI(),{join:wge}=Ie(\"path\"),hot=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,got=hot===\"win32\";Bge.exports=()=>{let t=new Map,e=new Map,r=h=>h.split(\"/\").slice(0,-1).reduce((C,S)=>(C.length&&(S=wge(C[C.length-1],S)),C.push(S||\"/\"),C),[]),s=new Set,a=h=>{let E=e.get(h);if(!E)throw new Error(\"function does not have any path reservations\");return{paths:E.paths.map(C=>t.get(C)),dirs:[...E.dirs].map(C=>t.get(C))}},n=h=>{let{paths:E,dirs:C}=a(h);return E.every(S=>S[0]===h)&&C.every(S=>S[0]instanceof Set&&S[0].has(h))},c=h=>s.has(h)||!n(h)?!1:(s.add(h),h(()=>f(h)),!0),f=h=>{if(!s.has(h))return!1;let{paths:E,dirs:C}=e.get(h),S=new Set;return E.forEach(P=>{let I=t.get(P);Cge.equal(I[0],h),I.length===1?t.delete(P):(I.shift(),typeof I[0]==\"function\"?S.add(I[0]):I[0].forEach(R=>S.add(R)))}),C.forEach(P=>{let I=t.get(P);Cge(I[0]instanceof Set),I[0].size===1&&I.length===1?t.delete(P):I[0].size===1?(I.shift(),S.add(I[0])):I[0].delete(h)}),s.delete(h),S.forEach(P=>c(P)),!0};return{check:n,reserve:(h,E)=>{h=got?[\"win32 parallelization disabled\"]:h.map(S=>Aot(pot(wge(S))).toLowerCase());let C=new Set(h.map(S=>r(S)).reduce((S,P)=>S.concat(P)));return e.set(E,{dirs:C,paths:h}),h.forEach(S=>{let P=t.get(S);P?P.push(E):t.set(S,[E])}),C.forEach(S=>{let P=t.get(S);P?P[P.length-1]instanceof Set?P[P.length-1].add(E):P.push(new Set([E])):t.set(S,[new Set([E])])}),c(E)}}}});var bge=_((O3t,Dge)=>{var dot=process.platform,mot=dot===\"win32\",yot=global.__FAKE_TESTING_FS__||Ie(\"fs\"),{O_CREAT:Eot,O_TRUNC:Iot,O_WRONLY:Cot,UV_FS_O_FILEMAP:Sge=0}=yot.constants,wot=mot&&!!Sge,Bot=512*1024,vot=Sge|Iot|Eot|Cot;Dge.exports=wot?t=>t<Bot?vot:\"w\":()=>\"w\"});var bG=_((L3t,Hge)=>{\"use strict\";var Sot=Ie(\"assert\"),Dot=vR(),Mn=Ie(\"fs\"),bot=GI(),Jp=Ie(\"path\"),Mge=Ege(),Pge=b6(),Pot=vge(),xot=P6(),Zl=QI(),kot=FI(),Qot=yG(),xge=Symbol(\"onEntry\"),CG=Symbol(\"checkFs\"),kge=Symbol(\"checkFs2\"),NR=Symbol(\"pruneCache\"),wG=Symbol(\"isReusable\"),Hc=Symbol(\"makeFs\"),BG=Symbol(\"file\"),vG=Symbol(\"directory\"),OR=Symbol(\"link\"),Qge=Symbol(\"symlink\"),Tge=Symbol(\"hardlink\"),Rge=Symbol(\"unsupported\"),Fge=Symbol(\"checkPath\"),_0=Symbol(\"mkdir\"),Xo=Symbol(\"onError\"),RR=Symbol(\"pending\"),Nge=Symbol(\"pend\"),JI=Symbol(\"unpend\"),EG=Symbol(\"ended\"),IG=Symbol(\"maybeClose\"),SG=Symbol(\"skip\"),Tv=Symbol(\"doChown\"),Rv=Symbol(\"uid\"),Fv=Symbol(\"gid\"),Nv=Symbol(\"checkedCwd\"),Uge=Ie(\"crypto\"),_ge=bge(),Tot=process.env.TESTING_TAR_FAKE_PLATFORM||process.platform,Ov=Tot===\"win32\",Rot=(t,e)=>{if(!Ov)return Mn.unlink(t,e);let r=t+\".DELETE.\"+Uge.randomBytes(16).toString(\"hex\");Mn.rename(t,r,s=>{if(s)return e(s);Mn.unlink(r,e)})},Fot=t=>{if(!Ov)return Mn.unlinkSync(t);let e=t+\".DELETE.\"+Uge.randomBytes(16).toString(\"hex\");Mn.renameSync(t,e),Mn.unlinkSync(e)},Oge=(t,e,r)=>t===t>>>0?t:e===e>>>0?e:r,Lge=t=>Qot(kot(Zl(t))).toLowerCase(),Not=(t,e)=>{e=Lge(e);for(let r of t.keys()){let s=Lge(r);(s===e||s.indexOf(e+\"/\")===0)&&t.delete(r)}},Oot=t=>{for(let e of t.keys())t.delete(e)},Lv=class extends Dot{constructor(e){if(e||(e={}),e.ondone=r=>{this[EG]=!0,this[IG]()},super(e),this[Nv]=!1,this.reservations=Pot(),this.transform=typeof e.transform==\"function\"?e.transform:null,this.writable=!0,this.readable=!1,this[RR]=0,this[EG]=!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||Ov,this.newer=!!e.newer,this.keep=!!e.keep,this.noMtime=!!e.noMtime,this.preservePaths=!!e.preservePaths,this.unlink=!!e.unlink,this.cwd=Zl(Jp.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[xge](r))}warn(e,r,s={}){return(e===\"TAR_BAD_ARCHIVE\"||e===\"TAR_ABORT\")&&(s.recoverable=!1),super.warn(e,r,s)}[IG](){this[EG]&&this[RR]===0&&(this.emit(\"prefinish\"),this.emit(\"finish\"),this.emit(\"end\"),this.emit(\"close\"))}[Fge](e){if(this.strip){let r=Zl(e.path).split(\"/\");if(r.length<this.strip)return!1;if(e.path=r.slice(this.strip).join(\"/\"),e.type===\"Link\"){let s=Zl(e.linkpath).split(\"/\");if(s.length>=this.strip)e.linkpath=s.slice(this.strip).join(\"/\");else return!1}}if(!this.preservePaths){let r=Zl(e.path),s=r.split(\"/\");if(s.includes(\"..\")||Ov&&/^[a-z]:\\.\\.$/i.test(s[0]))return this.warn(\"TAR_ENTRY_ERROR\",\"path contains '..'\",{entry:e,path:r}),!1;let[a,n]=xot(r);a&&(e.path=n,this.warn(\"TAR_ENTRY_INFO\",`stripping ${a} from absolute path`,{entry:e,path:r}))}if(Jp.isAbsolute(e.path)?e.absolute=Zl(Jp.resolve(e.path)):e.absolute=Zl(Jp.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:Zl(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}=Jp.win32.parse(e.absolute);e.absolute=r+Pge.encode(e.absolute.substr(r.length));let{root:s}=Jp.win32.parse(e.path);e.path=s+Pge.encode(e.path.substr(s.length))}return!0}[xge](e){if(!this[Fge](e))return e.resume();switch(Sot.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[CG](e);case\"CharacterDevice\":case\"BlockDevice\":case\"FIFO\":default:return this[Rge](e)}}[Xo](e,r){e.name===\"CwdError\"?this.emit(\"error\",e):(this.warn(\"TAR_ENTRY_ERROR\",e,{entry:r}),this[JI](),r.resume())}[_0](e,r,s){Mge(Zl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r,noChmod:this.noChmod},s)}[Tv](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}[Rv](e){return Oge(this.uid,e.uid,this.processUid)}[Fv](e){return Oge(this.gid,e.gid,this.processGid)}[BG](e,r){let s=e.mode&4095||this.fmode,a=new bot.WriteStream(e.absolute,{flags:_ge(e.size),mode:s,autoClose:!1});a.on(\"error\",p=>{a.fd&&Mn.close(a.fd,()=>{}),a.write=()=>!0,this[Xo](p,e),r()});let n=1,c=p=>{if(p){a.fd&&Mn.close(a.fd,()=>{}),this[Xo](p,e),r();return}--n===0&&Mn.close(a.fd,h=>{h?this[Xo](h,e):this[JI](),r()})};a.on(\"finish\",p=>{let h=e.absolute,E=a.fd;if(e.mtime&&!this.noMtime){n++;let C=e.atime||new Date,S=e.mtime;Mn.futimes(E,C,S,P=>P?Mn.utimes(h,C,S,I=>c(I&&P)):c())}if(this[Tv](e)){n++;let C=this[Rv](e),S=this[Fv](e);Mn.fchown(E,C,S,P=>P?Mn.chown(h,C,S,I=>c(I&&P)):c())}c()});let f=this.transform&&this.transform(e)||e;f!==e&&(f.on(\"error\",p=>{this[Xo](p,e),r()}),e.pipe(f)),f.pipe(a)}[vG](e,r){let s=e.mode&4095||this.dmode;this[_0](e.absolute,s,a=>{if(a){this[Xo](a,e),r();return}let n=1,c=f=>{--n===0&&(r(),this[JI](),e.resume())};e.mtime&&!this.noMtime&&(n++,Mn.utimes(e.absolute,e.atime||new Date,e.mtime,c)),this[Tv](e)&&(n++,Mn.chown(e.absolute,this[Rv](e),this[Fv](e),c)),c()})}[Rge](e){e.unsupported=!0,this.warn(\"TAR_ENTRY_UNSUPPORTED\",`unsupported entry type: ${e.type}`,{entry:e}),e.resume()}[Qge](e,r){this[OR](e,e.linkpath,\"symlink\",r)}[Tge](e,r){let s=Zl(Jp.resolve(this.cwd,e.linkpath));this[OR](e,s,\"link\",r)}[Nge](){this[RR]++}[JI](){this[RR]--,this[IG]()}[SG](e){this[JI](),e.resume()}[wG](e,r){return e.type===\"File\"&&!this.unlink&&r.isFile()&&r.nlink<=1&&!Ov}[CG](e){this[Nge]();let r=[e.path];e.linkpath&&r.push(e.linkpath),this.reservations.reserve(r,s=>this[kge](e,s))}[NR](e){e.type===\"SymbolicLink\"?Oot(this.dirCache):e.type!==\"Directory\"&&Not(this.dirCache,e.absolute)}[kge](e,r){this[NR](e);let s=f=>{this[NR](e),r(f)},a=()=>{this[_0](this.cwd,this.dmode,f=>{if(f){this[Xo](f,e),s();return}this[Nv]=!0,n()})},n=()=>{if(e.absolute!==this.cwd){let f=Zl(Jp.dirname(e.absolute));if(f!==this.cwd)return this[_0](f,this.dmode,p=>{if(p){this[Xo](p,e),s();return}c()})}c()},c=()=>{Mn.lstat(e.absolute,(f,p)=>{if(p&&(this.keep||this.newer&&p.mtime>e.mtime)){this[SG](e),s();return}if(f||this[wG](e,p))return this[Hc](null,e,s);if(p.isDirectory()){if(e.type===\"Directory\"){let h=!this.noChmod&&e.mode&&(p.mode&4095)!==e.mode,E=C=>this[Hc](C,e,s);return h?Mn.chmod(e.absolute,e.mode,E):E()}if(e.absolute!==this.cwd)return Mn.rmdir(e.absolute,h=>this[Hc](h,e,s))}if(e.absolute===this.cwd)return this[Hc](null,e,s);Rot(e.absolute,h=>this[Hc](h,e,s))})};this[Nv]?n():a()}[Hc](e,r,s){if(e){this[Xo](e,r),s();return}switch(r.type){case\"File\":case\"OldFile\":case\"ContiguousFile\":return this[BG](r,s);case\"Link\":return this[Tge](r,s);case\"SymbolicLink\":return this[Qge](r,s);case\"Directory\":case\"GNUDumpDir\":return this[vG](r,s)}}[OR](e,r,s,a){Mn[s](r,e.absolute,n=>{n?this[Xo](n,e):(this[JI](),e.resume()),a()})}},FR=t=>{try{return[null,t()]}catch(e){return[e,null]}},DG=class extends Lv{[Hc](e,r){return super[Hc](e,r,()=>{})}[CG](e){if(this[NR](e),!this[Nv]){let n=this[_0](this.cwd,this.dmode);if(n)return this[Xo](n,e);this[Nv]=!0}if(e.absolute!==this.cwd){let n=Zl(Jp.dirname(e.absolute));if(n!==this.cwd){let c=this[_0](n,this.dmode);if(c)return this[Xo](c,e)}}let[r,s]=FR(()=>Mn.lstatSync(e.absolute));if(s&&(this.keep||this.newer&&s.mtime>e.mtime))return this[SG](e);if(r||this[wG](e,s))return this[Hc](null,e);if(s.isDirectory()){if(e.type===\"Directory\"){let c=!this.noChmod&&e.mode&&(s.mode&4095)!==e.mode,[f]=c?FR(()=>{Mn.chmodSync(e.absolute,e.mode)}):[];return this[Hc](f,e)}let[n]=FR(()=>Mn.rmdirSync(e.absolute));this[Hc](n,e)}let[a]=e.absolute===this.cwd?[]:FR(()=>Fot(e.absolute));this[Hc](a,e)}[BG](e,r){let s=e.mode&4095||this.fmode,a=f=>{let p;try{Mn.closeSync(n)}catch(h){p=h}(f||p)&&this[Xo](f||p,e),r()},n;try{n=Mn.openSync(e.absolute,_ge(e.size),s)}catch(f){return a(f)}let c=this.transform&&this.transform(e)||e;c!==e&&(c.on(\"error\",f=>this[Xo](f,e)),e.pipe(c)),c.on(\"data\",f=>{try{Mn.writeSync(n,f,0,f.length)}catch(p){a(p)}}),c.on(\"end\",f=>{let p=null;if(e.mtime&&!this.noMtime){let h=e.atime||new Date,E=e.mtime;try{Mn.futimesSync(n,h,E)}catch(C){try{Mn.utimesSync(e.absolute,h,E)}catch{p=C}}}if(this[Tv](e)){let h=this[Rv](e),E=this[Fv](e);try{Mn.fchownSync(n,h,E)}catch(C){try{Mn.chownSync(e.absolute,h,E)}catch{p=p||C}}}a(p)})}[vG](e,r){let s=e.mode&4095||this.dmode,a=this[_0](e.absolute,s);if(a){this[Xo](a,e),r();return}if(e.mtime&&!this.noMtime)try{Mn.utimesSync(e.absolute,e.atime||new Date,e.mtime)}catch{}if(this[Tv](e))try{Mn.chownSync(e.absolute,this[Rv](e),this[Fv](e))}catch{}r(),e.resume()}[_0](e,r){try{return Mge.sync(Zl(e),{uid:this.uid,gid:this.gid,processUid:this.processUid,processGid:this.processGid,umask:this.processUmask,preserve:this.preservePaths,unlink:this.unlink,cache:this.dirCache,cwd:this.cwd,mode:r})}catch(s){return s}}[OR](e,r,s,a){try{Mn[s+\"Sync\"](r,e.absolute),a(),e.resume()}catch(n){return this[Xo](n,e)}}};Lv.Sync=DG;Hge.exports=Lv});var Yge=_((M3t,Wge)=>{\"use strict\";var Lot=DI(),LR=bG(),Gge=Ie(\"fs\"),qge=GI(),jge=Ie(\"path\"),PG=FI();Wge.exports=(t,e,r)=>{typeof t==\"function\"?(r=t,e=null,t={}):Array.isArray(t)&&(e=t,t={}),typeof e==\"function\"&&(r=e,e=null),e?e=Array.from(e):e=[];let s=Lot(t);if(s.sync&&typeof r==\"function\")throw new TypeError(\"callback not supported for sync tar functions\");if(!s.file&&typeof r==\"function\")throw new TypeError(\"callback only supported with file option\");return e.length&&Mot(s,e),s.file&&s.sync?Uot(s):s.file?_ot(s,r):s.sync?Hot(s):jot(s)};var Mot=(t,e)=>{let r=new Map(e.map(n=>[PG(n),!0])),s=t.filter,a=(n,c)=>{let f=c||jge.parse(n).root||\".\",p=n===f?!1:r.has(n)?r.get(n):a(jge.dirname(n),f);return r.set(n,p),p};t.filter=s?(n,c)=>s(n,c)&&a(PG(n)):n=>a(PG(n))},Uot=t=>{let e=new LR.Sync(t),r=t.file,s=Gge.statSync(r),a=t.maxReadSize||16*1024*1024;new qge.ReadStreamSync(r,{readSize:a,size:s.size}).pipe(e)},_ot=(t,e)=>{let r=new LR(t),s=t.maxReadSize||16*1024*1024,a=t.file,n=new Promise((c,f)=>{r.on(\"error\",f),r.on(\"close\",c),Gge.stat(a,(p,h)=>{if(p)f(p);else{let E=new qge.ReadStream(a,{readSize:s,size:h.size});E.on(\"error\",f),E.pipe(r)}})});return e?n.then(e,e):n},Hot=t=>new LR.Sync(t),jot=t=>new LR(t)});var Vge=_(Ps=>{\"use strict\";Ps.c=Ps.create=P0e();Ps.r=Ps.replace=cG();Ps.t=Ps.list=SR();Ps.u=Ps.update=L0e();Ps.x=Ps.extract=Yge();Ps.Pack=uR();Ps.Unpack=bG();Ps.Parse=vR();Ps.ReadEntry=VT();Ps.WriteEntry=M6();Ps.Header=RI();Ps.Pax=KT();Ps.types=I6()});var xG,Jge,H0,Mv,Uv,Kge=Xe(()=>{xG=ut(Ld()),Jge=Ie(\"worker_threads\"),H0=Symbol(\"kTaskInfo\"),Mv=class{constructor(e,r){this.fn=e;this.limit=(0,xG.default)(r.poolSize)}run(e){return this.limit(()=>this.fn(e))}},Uv=class{constructor(e,r){this.source=e;this.workers=[];this.limit=(0,xG.default)(r.poolSize),this.cleanupInterval=setInterval(()=>{if(this.limit.pendingCount===0&&this.limit.activeCount===0){let s=this.workers.pop();s?s.terminate():clearInterval(this.cleanupInterval)}},5e3).unref()}createWorker(){this.cleanupInterval.refresh();let e=new Jge.Worker(this.source,{eval:!0,execArgv:[...process.execArgv,\"--unhandled-rejections=strict\"]});return e.on(\"message\",r=>{if(!e[H0])throw new Error(\"Assertion failed: Worker sent a result without having a task assigned\");e[H0].resolve(r),e[H0]=null,e.unref(),this.workers.push(e)}),e.on(\"error\",r=>{e[H0]?.reject(r),e[H0]=null}),e.on(\"exit\",r=>{r!==0&&e[H0]?.reject(new Error(`Worker exited with code ${r}`)),e[H0]=null}),e}run(e){return this.limit(()=>{let r=this.workers.pop()??this.createWorker();return r.ref(),new Promise((s,a)=>{r[H0]={resolve:s,reject:a},r.postMessage(e)})})}}});var Xge=_((j3t,zge)=>{var kG;zge.exports.getContent=()=>(typeof kG>\"u\"&&(kG=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"W2xFdgBPZrjSneDvVbLecg9fIhuy4cX6GuF9CJQpmu4RdNt2tSIi3YZAPJzO1Ju/O0dV1bTkYsgCLThVdbatry9HdhTU1geV2ROjsMltUFBZJKzSZoSLXaDMA7MJtfXUZJlq3aQXKbUKncLmJdo5ByJUTvhIXveNwEBNvBd2oxvnpn4bPkVdGHlvHIlNFxsdCpFJELoRwnbMYlM4po2Z06KXwCi1p2pjs9id3NE2aovZB2yHbSj773jMlfchfy8YwvdDUZ/vn38/MrcgKXdhPVyCRIJINOTc+nvG10A05G5fDWBJlRYRLcZ2SJ9KXzV9P+t4bZ/4ta/XzPq/ny+h1gFHGaDHLBUStJHA1I6ePGRc71wTQyYfc9XD5lW9lkNwtRR9fQNnHnpZTidToeBJ1Jm1RF0pyQsV2LW+fcW218zX0zX/IxA45ZhdTxJH79h9EQSUiPkborYYSHZWctm7f//rd+ZPtVfMU6BpdkJgCVQmfvqm+fVbEgYxqmR7xsfeTPDsKih7u8clJ/eEIKB1UIl7ilvT1LKqXzCI9eUZcoOKhSFnla7zhX1BzrDkzGO57PXtznEtQ5DI6RoVcQbKVsRC1v/6verXL2YYcm90hZP2vehoS2TLcW3ZHklOOlVVgmElU0lA2ZUfMcB//6lpq63QR6LxhEs0eyZXsfAPJnM1aQnRmWpTsunAngg8P3/llEf/LfOOuZqsQdCgcRCUxFQtq9rYCAxxd6DQ1POB53uacqH73VQR/fjG1vHQQUpr8fjmM+CgUANS0Y0wBrINE3e/ZGGx+Xz4MEVr7XN2s8kFODQXAtIf2roXIqLa9ogq2qqyBS5z7CeYnNVZchZhFsDSTev96F0FZpBgFPCIpvrj8NtZ6eMDCElwZ9JHVxBmuu6Hpnl4+nDr+/x4u6vOw5XfU7e701UkJJXQQvzDoBWIBB0ce3RguzkawgT8AMPzlHgdDw5idYnj+5NJM9XBL7HSG0M/wsbK7v5iUUOt5+PuLthWduVnVU8PNAbsQUGJ/JPlTUOUBMvIGWn96Efznz4/dnfvRE2e+TxVXd0UA2iBjTJ/E+ZaENTxhknQ/K5h3/EKWn6Wo8yMRhKZla5AvalupPqw5Kso3q/5ebzuH7bEI/DiYAraB7m1PH5xtjTj/2+m9u366oab8TLrfeSCpGGktTbc8Adh1zXvEuWaaAeyuwEMAYLUgJQ4BCGNce++V01VVUOaBsDZA0DaORiOMSZa+fUuC5wNNwyMTcL9/3vTrLb3/R8IBAgmBTJZEqgsk1WebctvO2CkSqmMPX3Uzq16sRHevfe/k/+990OK/yPQiv8j0EJEAEeIAHkKEQCrCYD5fwBkBUBmDpiZVYOkpDqUqTOUqTkse7KqfRKkZpSZ0jmVmVKbVHvVGONSY6xdOXf2bfxYs+r97Gaz7/VidrNczmo5i+X4/79WaRtnVo6UQAk7u1v/33o7HGQdPSpQj/7rqqYgCstG5MTLOF+dsIv//2aWtasTQFXXSGVKy0Ch0FwtLAv5xL+sjMzIJeSZkqQ+090j9RMRiYjIRDMBVHEBdLMPuzhK9ArtKWmta6w91npmkeMIbXl7nz+t0qqu7mqNZH8NgWcOML8gqf5fsvkoWoqCW/Uv9a31Jb231iAdAFq2b0f2AXJIgEFCSX5xeJctKHDjpJQ3m3Urk0iC5/t7U/875277i6mGdxYoptsKpVKptp46HgxpRCOeWYxBRAIkEfH8P2f4vnxABfSq3okFhW7Sh7EOU6Zknm9b/2dQZl1CfrShJVuQKkmDUKRlwEAYpohyd7/uuRO4vjhiW92oa7DifsWphJQsLIonVqN9+X6G95E9gJv1/aVCu6Vysu/NbAvVQJAIkgSLIIEgCcE1iBZvi3Talbv/B95N+2tvY1Qof7OKQVArLUEjJSQhhBgSgWJaCGz+exJ5As24WxMMguChXfbB3r3z09qdsMUgWww4SIpBUgwSMGCKKVKkSDFoiimmuGKFLRY8P+/j/1z/z8vcC0/38z9ixBEjRoTHiLRERESEEhFKHk1poFts2iWWWCLiyP783Pr/f3p9jjDzv+KKLbZo0QLRAoEgGQSZIMgEgSCZEogSJUqUWJmUwG/uv3/60+facZ/fES1atGixxRZhCENEGEpElAhMifCIiMh7RNRARD0osUTmQzS53d7gIWweY/AMx+gtFBHZ+QKBsEAgEAiEnXyTePKGdLaKJm1heyFaU3uzbTmJnADDv5s+/2iBsQLt8213mBZIEC+iwULwYIFUkDqt7977a5EjE/PA5Kn3lAZJ2jN6FtU6hpJswxeRU8EDzmheRavGU+8SAXcv9hs2VHFHpGFd2uSqhHfl+2vjalI8eXtMfadrWGGNgIrP+vNSPghBQhnaYRowg/SWg6qitd+w5dduV3M/w+v7ZmNa2EHT7PCw7b26WSDoIaI+BqiP5p2zrxStV+M2GSTNwLZe7+NuQ2yBmwrOzjTUkFHwTV/eBa16T3gA4/213h/1KeX+30V2dZfwJfquaEB6xymhDz3/VMrY5GD9qnZSnAOdHwOrSiaW52B2t2N16zP70evD5mkQyIw0SkzGfUSC0v6MnmPjA/zDgnWuNgwjo7uqtquP5iVWyxtfYeRFHYCX8Ri+J5QLlWqdxq/rU5NcBfWU0gwJLQozOPn8AKW8O8tlag5jTBhcLinjQ3x+ROz+sC1XeAEFjsiL/RBz5ZaHIRt1Zbw7BI/oqy9GqIvPir/AVOOYmyvYsW4S+OjA6lAao99TaXVi1/zOSY7OsRX/YRjJGmdyzupZMt8/DVsorPED2dvEHJaq3K/NE3bKc+Ilrb/azbMvPOIR2+6+xdd8ma/RzeYh23z26tLr9RU6lUdspWd2NAZvk1KsuWtCCp0djmdRFF8HywmTO5KH5Q7JmWezwwKTluDzWDDEEErDdtCCr0a3/GLiI1+HFJKGSB6KtqRHbbS4nsotDPyRz6MFVsQZEL/84gHTA3INdbmG+IoQeUnuY9jGbwRzWSQPASvKFzPQ8sMX+Ty0xAooDSUYEg2rB2Asi8sg++mGqyPPdcZaQiV7O4lZKh/GtbLxz6f2bTsRiLCS7YyUlJjXyQfUAqv97xnph6+1be14kuOkiiW9yBJa3qGJc/jQpCNb/vnTbiO8xEL8sWjHbz2Bnbw/6u0defDAf0FGLaQbLe/+iCD19fZdW4gLDjOLrMbQ2T9vzdtlMqbVl3aCRT/5cB8G8CCpn5B9Lf3jpPZHybpehwzVihnKVbsZkH26pXEqhZl3TmBX61DuBRGWyjOcuBvMT14I2t2ppPMw9ZDpZixooFP9mAgeVVq/i0VyO1POaBTOdukyymNgYmnefdg99y0VvJTipQXLHiIB+GYJk6iLBUtXC5Eut2DpuKRTvuBkW3pv6b3l9xr3/tvyL7GOfiZJ5G+M1aBLJ8TSrpD/ib7xQ9H4b9AfOQ/uEcDmZB6cL2xC41vkwfpiTmh85keSHMtuqSwHp3CQjy0hCN4mosrShflH0n4J1MoTLAROsfy6R7DbEVIUplDwMc4bwsJzphym5GmaVt3+FVff00PZlpU7E5+eHCn5OBo5v0P3QHYrsHNk0PZ7klsowDlcZtJdJgvEbmwvROEM44XY0SuLhahpubgq3SzjsieuutCgAA3qM4rw/MfmzN6HiA++fyU4Rojl44Jb3lXXiQdVSyENix+uraEeD7BibuDCZyFx7aSSW3MA55ymmgAwipqWKus8ykE9HSnJ7CAcn4q4rnO13Ll54POTEjqOxF+FpSAggq+iW01ABNH0JIpBemwUz1pq6GW5MeY0mCE5NtDFSzPrukTra4iNQgyYuZRHSsz72UwNvCA042mO1PKJUG7b896RNyXM88mIr7W1lyhCT8uigfq1LwQ1zXpPQsUrUocxVC+No06fCYUsGWWUjl0/D4tExtJmp4w1SYeaLpnQJ7CNbVODe+nUys2PIKLyxnBq0kHPfRWcq+THl5c2JS2fQeZBVxYtIn74wmnVXuTeFKjE4apGeJAQWnr5Jum5VD/KXuOoyZRPRtrgkZfqvDIhmlbcO6TcjEIhK7mkfR/ad7WeqFjihp7L40OITvp037LNCGX/L6y51MCmkxcpjKCpzBA0noqXTJW2WtDBHUAiBTBi4eBW4rLSC2L+o208CmJ/sxGolgvDgv6hwNsfmxveCnGodx1iKVgEsUO1vE1JKVnT4SgRTO2dgh9K+H599CAmLZE8YvfNp3nhge3MhwAfna99yEZihxv/XwtnAneD0/eEOhyhBTIjd37wBrwuGTKcNBm0/Mx8mIj73As7n47h25bDP3X6UH6TyhtoUa+4M/rKf5ClWLs9Y21CYGxQE809XrP2Jk3orKEJ6hOiL28/33rVJeS5dVpluNegSJcPZfWrG3wDPe1BG6B5cHPnHbNBlhNozcJdZMyFTFG7UPzgl+oUCXRn+ISQ1WnXACLe4kbKtvvthKJhtUPPc2w70asPUj6hAjfITl0GnlA+vRox2VZA9LnskDs68Tk16hXuKd1zfFgC7b6qnLKaoEVXr+2g/BhWXIgw+GVBoqgnDnVuAp2qiUC6qOG4x6GNRVF5WUi7Odw/iUrK/gQUFTBttWGE+ceQumw2t+2dqUrzOrsHSaolipYpBpeLVPvA+1LureB631Tl56A1Wd0ryu96SzibapY3Nz1TXxbMfhInq7WkbUrgGfVaH2vd/tsicD5w5CYV+eISjPH/omyb0wzec5XMokuSw+38AZ2b9rNMawsYSIHvehmbPWUWUuFHVW7var3Am1LM8YFd+G9VDZuKFOvxqm68LDL8bNbjxFevGsFlTyXE1FAbwNZcd6k29dl6ub5BZ6V/O5cTFBmJtgRrraPr7PoqJUnMj6QIpMIodZLDE57k2i6TROku8ZdH3m6Y1vYJFSWTeioWMDaeNqyKHeN8tlp4nDWkSQxHMqbaON4f71KnQF1IwiOkHHPCMrVw/D5W089eWX3/j60UkkuvoRPJTsumkpFd6wW09GwYBwLMgvEZcBgHED3tGu6bESdiXTBcD8W+EIsfaJeutJZ5THXopIx6YVJDbcsMGmYsZtIXb8bsVjewXzc88FcTZ5lYYoFhIrBcO6ljLt5+dp5HmzXv1Kg2MwCJDrRr7qVlXdraGTP828XfilNRkEJ1GwtTE3I1t/aITjVWiTHgXNljdnMXh5wdZpZcKzszsONMKEJhMh0NK+bDGn+rAJDC3mgiOZxq1OUUXNsxkQWhYW1GFtRiWFZNcNDeLLlIQll0jLYPjE2ynxKXI4lcBwCNsxFW85dwAN0PW2KmOMcI6cTvka8d0LYiqm5TNUQfQJPIoralnyMJ4bt6oiIaYBwZu+k4MkkXTQfL1e90rIWXSgjgUBMgCXkoTn9Rr9HCuegYSj1NaIXnzEQUfbtnz7/FkaUwrNSQpHIL+Jj0VvXs5zg6Gn4hCOMevrvMmTvdBdt6DOzxoF88Zp3bG+juT/Zl9hHsXlZY/IeRVTezaepfT0+FNz8u+rCFX+1LykI9/PPmJIfH8/IRAejJVADY7rGj+r8PWPt4mhxDEd6+n9rB/NPcTe2dTs3pXtOjtNyFndrtwLPSz6s+d+vOkWnztCqcbmMfyfd0LcFRcVF8kjkoWIncdj9IKIfZhh+PP+DeY7TVAGAK++IgvZUF6PTLIJT9EhxpprSPCoWuxThGwP8vmEbDs6kDehX0zWXz47U9+/Hqajad+simdjof8lRabLnIvfxoaVOQL907ZBofU7FPER91ifRhlz9nXfSHyGA+c9sQnfOh/SDUqx+vRyM4oJLJXEyfaISzIFoC6MDWR2JB9vBLhhchIiznCQbr7n4zxaEcvphNcZfivwbIKk4C7kb+IcPA8u66nd2Gb/vUiilkp7G6ydQXj82jFjlebJ0yyezuSSbikTcg/iPlGxcWL0JnPmnSbXtHfKBGopIcI3lir17wt8hz8Tw0UHbloVh1oDnNdFBZVkteweiH42CzircC5ZTif9eeYhieGEnmUuVH7ai/JO7HRhjYEPIibvKkVqM3z0jfZE3TOv0ECUC8NkRhCWEHvAOZQ2Di9cpB1UFmdoTca81BmGHQHV52E9WYKITgpIkjtau2nj2g+/51uj2O1NqXpe7/et2u+ywiRJcxClnpB8zPWr8KpuDNG1On7P5XzL7w4LaThoWCyw51tg67gUiQxAvac5QMfVAg7A9hcPddIYKqXNqHKVTRL1cI18UOJxu71LHOStvahBLKaojwKBgRA37Txbt+RZS2SV8fnhjPK3JtIrQYXS/KbLS+FL65SGQrNoZCPoQ3jPPJ5oGmhVQ7p1HPtUJWZUSK9u52UhHSn7Fz4LaB7f232yKKRJk07LL/FidQB0163aXVWAUV+9Uo0KWhJRPowfH1uqYdJztTXYWif3SQ2veJvBWruwtw9FsVjhQC7panWsvhWmb/auexdM60b7dpZ6YWOyOJa0qT+G9zC+cUTlJul16NOjStrdI5+HmW42OyTZigq9e6wSExmEs9irgKnyuV2XcQjptcAhXGxzo0uId2qEuEZLPpPSpkxKQDdnY2nESOYlFBYmNWyWgXWU1cgMEOrISgwBaXV58jMLxLhTFsomEXb26Cnyiq2J2giU9Fm2absgPt4Rbymjjkcd7KgXAtHaXNVLic47oHHBk8ARny/M5iBziv+H09TI7cjX/4l1dt0YkbjOG67cwvyDnwimukP5zYBXBFF7hxXAov2L5b2RfPdccCG3yiboYvK/mEAdstGcwwoUpM2weBoiRPCYEpRZxbEcXZdI3lGC5+PAl0a9AOvplhycISXApYj/Cb6zYy1K01G+osg1+ehGE0m/zhJpyLJ7Z57DmuoP90ZNkReZoycA3m5rCOFZTV8N6IbLjf5BqGMUl4znKQZT8ehgTTt5IvwXbnJLz/7W2WXCWlXpiwfXydTi/zOvfh/iZZU5gT/fCx3nc4PpiXjU8MdqGAs84cdBbTDHTs/YbHBvUVFzcLVURv20/zNCLGxwIchrqFeEBiuug3jSpTTTU7nE2FRDhL0LYczn6cZASeq3qNqi1zQVYub8kofKMm6437UYd5b3/SO7CKivw4FWFPLCLc4Z8CBcULyQE9K8kclUkMZwxwWqSVYIrnqhl3jFaMYj9xzk4XxZQBOZeTHSYKTGcyN0fb56s9a6UvmqOL8RLP5maDP0skmaEs2VciXWCWkS8gbAyh6gHDIsnXCmDhDERh10JM1UdBGKpt3XYeJrw/+Ox5PFGyCLErC+uRMXw76JlFhorQtT6lEItxakSkm2joAbmHfVOulpr1LyuY5qrCVm7ZV8y6SBu2UYc1R9GKlgLZ0FCB7GyxzUfoiunzAJUkS4CwDLnKYZlJE5rs6JF008a55Dco1ZmpojV5KSQyO3RGmuIu6MJqCkKcv/VWPC5Cmzr77J8L2amlHANFA8v4MLWPFTxCuY9+llLIkHb9KqC6drvO76U/HhzYd4TCrtX3hIMtbCl4wpA/crGvRH0eb0k3lkNxfNADxb3kdLBtYQIKSVtpVDXnukN6/Jdmoy9bYx2lx/ziK38opmSgnSmwC8vM2i8fKZ8MSMatN+ll9Va3rQptqQeOiUWdB5P8j67+kp4MWQFGUJgq/jA2SU0WLYbL3FznrYOcZUA2pFzq8l+c26QbiCbAl8Ch0La9zRiLDPy2srfCpXRVcMOatjv3XJEqv6lQBhL4ygI3GKN8DSMNoacSezvDfw84MD+EGYUFiyxXhVwAcjhmct3ea/nmTEyFPJL03efr5cMR1jXApiV6KATnd6csvUBQIDUUE/gF87lpIhcASzc3FNkongQzQBhyilusxM5JCHhq1vsAHUSGlgfPu3T1LMf8fUvu+nWo1UBLM6eduqghd2CF8y4g+jxwScriC7to9zCH1oCqa+AO4eXSC2V6Ayu3vW127r3ABmlmG7suJd51EhqnAydEaetoL5Z+Ih9DtWAiYG1DSpjkcYPAD5smccfdVDpabrJdAdk1Bwhk2f/0XFt+gZ89z9cWBxBadW17CYPkcnfxboTMe+1Gm9uLOdI72/ZEW8/y0dSUqGtJdXZHqbBgpaZqxg9gdyvqrqrbu6pWaCOvqGZ9bS2aNQDDcttEfa7PXefhfw+AEl08ngtUlua0VZbiX43A5T84leaUEbC5JWu0ClotsUtMv9U9Ma8XonMcneCouY74ROyoXJb2qJ3JxdQ0t2Q4GJsnrM6NKuEQsucEeknJx9Kow/RNlZAi5gmhVfd9kZGBWxrcGjGGclP8Dlyf/begmrKtRtKZ5yBT8yKmq5BbFMBNJ3ipr7VHfJAIAEVxbHyfCVVxhN4Ea+KJOX1kmZaTU/zPKeIuHT9RFhcximF6rOEch4CCeVy0QojIiYrbkxQjbaoz5+dTT2lV8Rvem+gxY85I+O944aZIxHzaH3mJ0YT77dfahgwJEN+Ecac7wiCCIbmkaWV98mdvPxjT8bb5DRzhJR3z2dolyrlyaNktNUvWxPOjxcke/OgOG/FwhyIXgS9DOAEITNdNLXNtuKDHc8plFH43V4UF92UVd917U4OC+UYmM9htdQeQb5I/FQp+3cw6YsWkTBNupvHaX4FOeZk90YqUGUsSz1gWzC1geFSSiYQeEdS0CY6LXPM4KVsvR61UCB4pu70JHkvpAE4e0B7PIba/7aQvUbAr9ZlScVQ3ZXzHatAGkBg+fO4eawSGac8km+CpXbCs+fb7FJ8xW/0Fy3TDoZwOwb6pW+BIv8uCG5EDbNrUSRJ/WUcQn4nnt35rFYyt6GLoroOfLw+6Gcj0pO2fsa+AtutLPb9/jmtx+rXd6t3Ls22SglWOFNbJHGG8r7Q9xIThX+tITsfORZ/N/tf/jGqe2ikQDYq2celmNH7OnXLzSvuO9YNSrDOoTSTs3LlGKochkEZlMW/XAAMt7Yp/jbjIlVq2TSg8sewqPiwvBC23Zm/dTcmPDerVVzsUQcHhB+nzht1kaCTCdTNhdvoWKwvYZ4oSsaqOGGcbb5Fl+rid+q6arHmMR20GI6+uWKihVOIb707/PrT1cPyirhOh3NZKdbTbl0cuJuRSqmEV3BOkAGkr3zd0DUr+L5QTewxGAetWpDipU3AdliEJHg0sdyYLdHyNYQueZGb6g0jlOWQQ5J5v3aM199JVy3Uf/1Ge3bkUt13caf0uBvT8mPeOg705fTxlxlV8YqKpH3Ky0eqPaZDkVLcckyXL+x/Se8g56COoCA+vP5ov6o+Gq0F+INLDEJbG6H7QTc1uS8BzgI5xdRrVjdzNfNl7xrtUcdNhwEyTmciqsCw9t2xIe+RMCZTaG6rH0HSa8IzUrSafJqsbmtZwLNfIT+ipGbS6EDg/AOjP2S0Q7NpnkskF6On9uZfJBNMc/vRuPPO+CgdQfjClqSgsCSMKIdCVJSvc5lo7XijOtAu1+cAnisoJqanxLtNhMiZquTYxAg0RznpnCrQ1N8m5SKv/9Ka54quCMo1bPbNcYTa/iO3IWD+FCky5gplE7yvElfoQPOiy3GB0tsPgZH0HbIeEcx5cI6QO00aSWe8+aiLcg8lMxFwL5rRyH2XFwnT+ZpIDbUYiKNB/G0P3n75pLoHkRmfle8JmO5BO2juC2oc1qe6HJ/TC45AjhJ6czzOtLg0Q99Zri3cs+gIfZMwKN+ZARqPe540Aj0bGZso2NHB1O1t5/RkeDdikWUxkEFPKEMbII7WtZuIc1sFeyNo0fo+No1AljZ40n68sAS64VLmvZ4P5++PAqbMkRjyKYh3PXfxynQI1lAg/kz1Ky+RNG2hK0Lu+tIqLD7o9+gSk4ACGxLoKeLU1+YaI1HXJtoNRuw1pMGcuWfZTpIvUyIatl1l45Elm6xNdbDS02RGC7HxTMmZULCwdGyYXsYp4/RJgdqBWINVf7FKIaio4QYm6H5aZIpV+2XsVIn2ATFIBBq739vS8O10e1CI9Zros+/6UQ2nmCDXg6z3adf3sV9bEp8t+e7piPl0Vn6K+O0ZwZDjsWLVv1mgXeNI1bBh6kk8iojUn7nRitqTJ7o+xfs6NZTQfilDoypCeK/kaNg0+yScxuUa3HXBSpNCIkv8gbspwrErL08UpBDJieyBraCuOA1hAPfmkPFJZ9wWq4uR4fB3I6YYRqJERQ5cGX7At+5Np41bUzSNyjseRMm+HeG/Y4AOTh4sFQ6eZrtDMr6g0N5x4Qj/WEqGJ53g3lPIgwX/BjbkvAN63C4acLsxgdIE6mJCCXUZhvDTnr7Nxa6EAYH4AlflhCVNGE6TM10ypmFEoUVr30VFr5dMlvj1dIZ+iXWpUQpswhGTZ0rUdIE1uAB2ho3IZCUkoAETlgWTYTpeHTq+R59HnIeee8yLnEKghPA6gPynJCqv9EmBxl5DHixNZwGIC+ISIP596tmySz1lKWOfJSzCNvSCsphu1WSjnZ5BhOFZrKuj4Q5BJTEAqjd5FcdDoy7EPgtGmeNT6dAtdPT5oKKNBnrUNt1bmp3X8dGpblRXKqVL6+ReHnjdSY3QaLY1HU/FmqVXaPTFvxYHJxUlqTNMfb/OJaIMHrSXQ6d5QHmVpnSy8xGXfAcd6FdokA1MKAzBqB+j85xb7scozV4FTownJXNbX9hsG6i8VjLYfYfFVwvqdoWg8d49fazKaITx5BOo3bIcHKBdMaTC3DrBju3cwmjGERPEz67R4I+AEDzJIO3z0q/ZjUo9uI6WejbnyrEJp+V/2TkToGvLmdDxPqLdErgttfHueQZ4wRk42tDr1WI8ZUpkTvHvSi0wss9WMPTuTccFYOp7Vc+65+JKgOZUryMKe4H6cmOM0m3GsQxeaOPGNKY9TnaotMkhqAptsqyevZ4uGBuo0ZWacIsUxWpCQz+DT7IwKbQRnd1CSfDDOh1mmV0VZj9xygoOSlrf3TxLf8QylmirPfJRzz0bzs5Rn15+jMml2WhWeddU8AM4eATCKiVf/80RzQzE/HS7HcZBCA7w7y8fl0m+8fuf2BIEPdXRYvXUac2yxwkuOKA77mLoxfFbWKQndw7U8GDJShjJxBIgNBGN+UU14ox0YgJ+IM7vYX5ObmNF8NKUC4CN00gHk+OEuqpI3rCNei6d1kR6KzxyHsQ2bruIRx1VHoFq+zW9Ig0WemXUnkWLSlgPd0Dm+ARifyFS0uujurMDt1a8HpqbYz911nQb4TwHyRqdLsFgm3PLoUmOnDL4udj7Z/97w1eaPfyMtBP0ewBq4l/Xnypqpl4el6OnUYFt4SecDUJjh5B0Hg3uQayutsdsj6iRMwO2hMuVSyPagTWUEh5No3x8CE/QRkQHzxmWErQwksxqj7aIQyRA0obK2FRuX67Fs04IxIWOrytjmMZpyMlZdOQowSjQ2jstNQt9dyGFTjTwsdzQsyj4OQ1SOojVrNBLDUtOyjB36Q88MyXlKDihQT1mhoAElDZhpRAJ1KJkLj2EwzWYaI+3SN/5dVpV5LZftFyzcztT2sLCjuGuAKPgaNxY7Nc2bn2UgA3xIlzlUPE0x5wMiNMa7b4KpKq1kS2RcZXz1l0RJajkZzj5iiSqvqYNE0wvIytCMEQBK8fuOzqNBwV/CBCcfhfuwuq64o6mT4miwYCeoAblNBALa6rhaPPQTiijH4KaYg2bD9IUkWwtoDFhpw2/q+paPxEU3jCQGs/LnZKbNxJoqZecAyVC18y6st4me59Qnfco59MewM7GFrp8eZChAKRvXk1tLx+HFdBacQZHR0oXoXdscR+45nbBRMdY0Jt1QH04iAHUwDO7Iku+pHtupJ/XuNcuDeCgbKlpbAd1u91zwSjAOoE80NFnZX8q1YRnYpbffDudICa6eWt5NSVcKLfl+cbdk+sUIOibTNqBNJjyYHkBbLOfADZHkSI8CCggwbr9goMPQZcvj6cKiR+uOQ4/HK/GAOIzNcVLj8a5bVHwJIbNgV+IosU8kQnt/O6JN4z08ORoYvyN5iOfg4xJgMRceOc3anQf65YOrZTSP0Zq+Rcsyms8Itz+PxKCKxZkYMeVFOKfGYbISW3i7P5Iax0nQH+BW/QAjDik9AJDdDqTFQb1zfgQv2wJ/FO2jTAh2jL6lLnM2dnbL/7BygCU0AWKvBHJbwu+CED04ZVad3yNuNpb93gn+XsopRH5LteJEwkqG+Ekrqy7OJlRyn5UJ4BnpxLRCksfT+YhG57Ay0Ivh6rmqT+9J7yZXr58Eus52M4TYBYndTj3HkRS7OBJ7dUkfcRDKiLrgSRcxZxD1MikpUfnjLYoBgonb3gcE2R/otu25r2+sl8+C/eTRvq4+dTSetKZnL4qG/6D/Im0MDe3VQRr+lkROZBeXPhUhu7hVT5NL512dVCWx71GZo3MherjBXD2vePP+q3poRAc6+bB6IvVW+xcbAVAujruIz8OE3RbaOl1Ugqs/uDJjqJRpZPQ0SlQ9Ivo1WkaqU6R68Mvrt3lPeOvET1iGUQXgTMyshouibO3A/wuZoOjc2hD3B/OdIjSXYkhPII7JCPu3QKMV80nSyM/n4VKY7pdIb6qZhR2JvplYrasbD6F/cIKnNGHvZkbINmSUNy0sdlwHbCEExifPCp+l5HM/2kKUEJzMZluCjiXCNENLG7iyYGLvnhldiknwSxYHZN3NzDk9D8kbcCT2woGofSJem943nDYcmMtyZCpzEMdwsO/loCxz+grJ4MZitO6rDKDHIacWBxibAWoc9BWWwTyoy/kNdOVEloQkyII9AVU18e871tLqGS3CaI3folUwms9IXwEaXE/cqv9yRW4ESOkBgOxmgJYM/6tyrZOHVK8w4pDSA+DB6ZW0ZOhTtGRUjoZEfVEetd9rNOYClETrOvfURb1BWPYd9e9lMmN9edm6qA3CfC/S4BpRLTvrhQw5kfcdLVg/ig29gUiTiPdeo+VHCmwWnCxcl0ZNLYmYOGTBPoLkfUd5/fRqQQVr2ToqcEtoKAc1mT1AXDno0x4vt+vn5WzkXyHLXjI38zzj4ty/MLhuiLqYb0FXHHmQRABZsAOpKkB3CYy8rp6YggkRGyElTkgUR4gqkhCxE57jta3ILH4Gn+nru/dQmojvt1k+R06Ba4lIkp9IDHJ5VWdBdyIFINaQgHe9u1B7PKcdQhGKWcg4sJTW6K90F0JTZChHDNkce5itjJb5yr8O89zqdb632zyIPe0df+TBW2qNtJQt+7585WbdQ2dOlTAnHsQSz002FRKZvcPR8/Qc/fK4lhzqXcgkRtdPoTN7kXOMGRXItT0fr4Zi1GSJvOeB9SzIa1APrT+tTPeDxfHZpd1itV1vgdSXkiUlzxzTS+hJfUoD2UoZphAnfXB5uXoUI8EF2hcXj820hev769o1gsGYtEa1tFPgATELWqPyeV2ZYIzyAl7J+Qo4F/a1N3LqV/OjrnJGpoZo0uI4Y1DW1jf3DRqEzWv7RRdVv5yG4Lnyh7agT/tf+tktBzkd0sPdHFLfP3ZBpI74T8AdJc1Tf2g4TN06i6ziXBnwpqSoypI3u7D/aPNAz/D6tI4YyGUT+cOzJ71ReWL1AerHHOeqeO7CeqEBneqw3DHPhYutpNg4VQ+NMwDTWTzmnjE/97qTUKzdmxox9WPjwyr8/58Bdi4dU5JylYkp9ubriWgYgJYJBF9Qw//H4tSwBgDEJRALURops49OS5z6RZtluLDJ0x9lA799/c34tDHsfWLhDLX8IklPe7Wtp/V4NO89nFMo7i9+6RC8gWUx0FyZIMGGOR/WjiMQ9paDOkxFdRTBSfaVVDA2Gsr0lxDsbwrR863VdxY6i6KQQBLJJV2nGQjU/Mjtwp7+AekN3fW3A/7Dexq8poXDXB3kGW19YXa47n+n9gMpu//ZPwFzWR62lY6J/Tm8pVlB305Smnkl6In+9yEVNsbk1wRrxY7077fU9sjDB6ntBtBpgd2hEdKrv+kraxOWGwjTjOhRX6IQXE17xq3LixEEvQkMM+Ye0BFpOg5jWMCwStz5yGye48bVSa3WvB19O1p7nRv6tXlp9IpT58bvHtjrXsWLLe4QSmL14mnfcL2GmS7BYK/vjDkt4lm8AN3zWxix275LeB7nitYSH3boqqh84JEUlRdUCSqMLxf5cfwC+0KEBfU01o0U2ddbRNFuQICKoT+p8MeYhwZi35FzW5c3BatsW/X09ZfOw2K/XY8NNZ7bW3hPd09j+DhJoFopL2Td1KTEJV199pnPzC1Mv7csySdSqxt52wPq1/vxEY94I+PF/p4w7nn2/maWKq4ij//uPUbPPtz7Iet8uu9+34heqvtT6XaMBcCQA5dmE6YdznFrpM1jhceli/E/VkZsWyo9dL+wWwvPYJeLud2MkvsCQBaTjuwjPqTReNJIMrJAKcvsIuCR1x45zt00mwAMdDhr0uwmz5o/E672l6mxa5uSvi7g6dVUyiyjl+Ki4M8PdC8vnIdK695dhKM/IU1YflL554i+KIFsmpa+vhg1dPxi4pPRf47NVb4nh/b+1BZZyXt8m1BEkHM6OzTEEb7jhtlIZMb1tOgRe12nWf0kp1iu7Y3Zjwtxxi9cscph6+Wpdek9k2NZe6t15LBAOMAA9bM02pYzOjsovPhIrf7cfs7Pa1Or4UaRtUAbKlhl5F/unfqvPMiBnAOil/djhSc4rS0c3Ji1evkgvKI4lyivNmGl70MPpN63Gk1Mix9dtf7pivhKe1Ib1LmcwTNoFNQS2XxhhNIA1gDKgwua/CzrXHScGUBOTb361NcszobHMitEj7TzDDB2266FC1hc0XliJvE0ltDflTsPLq32TMqeA0njyEngPyfkyRXqv39HpwJQZsRBHPrD0Fx2UhF7UTSH675ZD1i9ETygY3cFWcZM6IUJ+J3v5jc0jwzjp0Yr1DTOT4vezCVrqO3TJVoEswD42nl73LYLP03itFGb20YFwZ7zi3SiVmeqwt45dMeut02k0c0o0Lot9LMq64I1WzlSzuXGc45veEqE3SHDeM2WZ1kQRmnpGBpUi9bv+8NbQo7Th+8W2d63Fw42nFzatdTjhWEak2mQF8tkhmhwJYuzf2v33iN68SJPVkzcqiR3znKD1ZXD/ydzLbUdwLltd1Mfbc9w/P9S+4qyDsQ20e/3mfbvRAtCzNLQRm4cN4p2KGwDTxGdnkbSnUOI7uM1LiKXvqWXrOoKc+rxbDC09VyntHsFxIEmCUlRhHU/YTOyP74+KouFO1OF1LfmUzwkF/i1U4/8yTtIqbJKPRltRFFLn7Ld4PjOGFYGNAmd+EGG2P5pFEtTglQu9qPaQg8ZtHIFXQAukCgCpPde4xQoIzaxP+yPQxTA5riD/0FwJ4hED9uhk0W6/Wchrrgw82nl/xaCX8uKIUgLKoacHY+ZmBtbX4JSrV/vUalha6YBUOAH1tMAG7W4VAmCoWNQDLkBMzH49fMDlIO/b6jYig6JCXyhfTiyFGjymkPiyM3p5hvXg0mpQTJsYPtjTjqu1mbeYSWrYh80f90OJHOHOHJahZCL1EEuhUSUR9FiUXNaRpX89llNu8DXdA4xj7doINu8Q6kXN3lvp3fost3vHV7KMdYhtGIpvpx1pVimIu2Gm39hPpK/m6KMKVvhT91EOxJSgQ1TxNtzmt8WV+IfeiutIrRxznlCMrRB9aYamZ0sdMVm2pbCCBeLeArNOWnRQ8r44uYvXqV0MMHl6r8fCp/XFpGYVC6/gNOBclOa1pZkwbmU87FR0wh3DFIvsMqzO8g86q92AVgXKlCDBtZOfX+3SW0vXa/92dBx5L3PMRjFFkbhJRAXzIDOLgv3CZuOiQqD10pHQb7FoqtUS4xfsVCxKgAnW+72X+7PkgNFjPE8WgUgh8eX6W1gvY/UcjnbfPzAd5vjl6DB/TISaX1DFWUWFEkzvM3jer1BwAtKx0B2AOPYGL2DtxvhiW/TuwocAXO/UKtnTvGLWPJCWbwN0f5yTlkUIGNIo707TNY/KbbRWsvKVjYTm2CO/BAtV0XWnW15YA7T+B92yN5IUvGvXl94bN5x49vD5JKuS4yjdcrx+g6JyTxZL1NTFHTkOfIfWUseh69la1YBzdgi7a9WXyzxQrEVDzC1YWqh8rN39vtEbeIBDVEHgH56nsgYq/fauFgbD6u+q1RzO6zaA6D2RAxNGAePqVW0nDzqiZtPCGp8P/GPmID82P9wS/UHKxXbJxfAWsYCENQGbsfydLYzy8vhkTksn3XgNShDELREsxG2VjPi6AJZOwyV8xOO+EqHDmtt/jw/hCIg3XsVvgXPPsTybLbfbbzS0EZ/2+b9zj+1PA87FNYgYrlvvx/V3lMqQ8Hz+s8bnDiSUu2vIL00oMn81NaO1WxIIixPWxlo9WvX8dsw7aNR7kDgCsJppKHso1VBGmvmHqAhiana1+i3yYFETyE1vtPpc6J1QXLUwboWe5/R7cJkOisw6fCPiJBghYzyKL6zc9nahDl+l/xFNCfSJimbUCCP7wp+vDzeCuQ7S4VAPoD9S1dwJHZp3fng8+GCfP7vBIMn7GbdIQRpHv05T2a9+2kp84hZ1Nn6Tc18ueBdXfHcV0C9lPxtPc08HucFChZoyXjCIAsErejHgtEusvRrFk3HA7jXY6EZEL/S29ZFrZ6Km/CGs+fj3M8qkWzMJFb5HyWNCtfBCryU7wQnVm3bIYK3jqBPkkt9nF3sY+f1wTYtgvRA58uqvY1pf8TLanzsaDA3IEhQM12NiVlqFuNwizzh7/6bwIxnzOza9VAeILoQDrVZzVG0+IDA8jNTJ9fKJuwx99dq9p37ZhlqHJeZeMXo8yFEfdE2jZCaou76IAWa9H4dhts7MWKZZ74O0z/f7BoanEpX/aIq/EEKHvPDlKHLSXo145vg7QBkxFSvXmpf+lO/M09T9aPbfIgziu7rnKrRj+4d6kb1zorI6B0nJ8qhMc7+7M7zSh3XSAuQLtWWUSsLXGoSkGMWK3VgT3BOy3F02Gg/9wMw1p9wa6SwkrafkmrpfgN7L2GJbR72nAClVbtye8V8a4DPyQIu0EhmSgo1Oltrp4RVWpS0Xx/UqzodyprcKVDqpERN9RliKi608b1uKy1UyO8G54ZoWIoP3OTJzFh5aCU3ZceHeqFTMzja5JbLsh51q1IIq4MQFyaT1Hq9aojBzuMDlvwwJD6TKp6+rWlSfKUNWYVIQmBkGlgo+CFyfygBgmKKuzxTIxSJdsZf1+FqPFugGUHKZjm8ZP72tG55AIUZpcWdiQ/iE8lKqIKrajmMvGXyzTO3bjaQCZ3rMJaJaap54V9QPftcmAkl2lZfLmS9tbn5mBnkCIRY8tvSowaesopFhUnUOclWirztsmmtqu93W0fRf41ucwSLGiMtgStPNm3WNxtMSHLsMeq8jaFSHZ9kOvZJ6wuT7FEyLD8Yv+uzisUw68n3H5TQQsaL/tjUTwYIkkBML99VKpPdISLwCENHAOANUmcwqI0g+IMUjpy+Nn9Fx1Yr2b0mvqZSEdEm4lBwNgdeuPyhlGru8p5SvbNUDA6YP2MF/TB7xkwIeDIEzqYH5UKymipf76wlfWXxhDxYSjrdnuAGg30N6qzifM8DvBdcRryjmrU+CDMJtLhGuoKZVMBSscgJk9Y/l5ZctkwNwPmKJtRcd4lIq5g1qIu+sefQmeuUmleU0WG3YXalHaQqxdlY80WdMzsp0FtN2Q2UlDsLV1i6fhnTUre7pq0kcQ7hmtpU8VJUsxEMOngMNVuEibhaNZLMr8x11LZoeJ0dpEIvtywIwo4YvPktiRepoD8PLoi0IDzu7ubGEvms6twDJy3JnenAR24eKHclGnNwXEbn8uyxfgTABY3pz+GPQbaWgDyWTY++zP/jg3fRHy7Kxrh6TxvZsC2K0T071qArULYam2hKmhnOCoWJGXXxi9VPOadzx5lj43GN/7fYAFRFNDubI4Eh9vxm01VOZFEI0fHJzHHmuHl9bVjDr6rk/P8cb9c4JhW6vBtXLFJDy/GMplr8MaHAyknKnf2/1CFf6Jo1kW9+iFXItI6Dcw0u8hKZqJWt6QiY6riwjCKlNbBwDI6uYwtYdJTCRt5GE/PO/XBaI6fZHr2+NuiZDiFbkXMCWUwsVe3gDJeyZ66raXNpnzff0JBDH+dQnV5JpeTYqz7nQFDpUdkP9YAM6ZCby+tO3fZDHLobrKhJqsaj5tvBnDDiRXEsLzX6IK2djp9wKKH3vbjd5OZ5wxTRYFWmnCmAHmN8+2zO7mWQANUwBvDpxx44kS2x2d461wJgzA+hnt+VYujuO9J8ab1bz7g08J+XxtrdHMU2Q11sWGtb1ajdvRX7Ycf13NOJlfWdUBpxoN4kfMEmgC4l/4py7Xm9nnkuaWf2o9CJOVLNTWS/X/aOtXoph3sNY27ym0FqAug2/kj7jZJ28dOPYrD5RrnfdXjbU+pSi3VZyj8LJLzZCqYtRB1bOo1Sue/XF3F3pc2dVBq+FHZuod0Rivt3zsE98h99arUCUaYEBPvjmCZqeXtTGQiT0Yeh0iLEnGAfH0dUht9WKOViaxVrqsh+izP6oFdT0ouFvQjVQDFcl+mpeEcUdOpFoHg0JJy3c11gAvurWC8gzBPdtiSewge+BiFZA4AJUlAyZdkO7YFtBxiLmN4l6oTbCAJdv3OspEXBV8vYxoFEjJyMWACi5XM8QmQIoC3oqf+IkHD8SdUhWI1jcxhqk27jbLYY4yox5OIp8XavBwDYAr2Rb6Wc884TqFDh3qYjC3El2lk/AqyCRRnh7siTEuH3VB7Kaqyt8GQ/lzeN5SViIgrDCtM8hvbhCmFPpSH99dE1IS62QU3eflbvuA1SEeClfhqvC/i7YQgOFc7GRfmRyzsgTUAXLPcD8ND34Km5UzfowwTQMWAiu5h1CZ7aN6DhlIDy4iqkSoPlppfyXq5UWgl/baz8ATbywzL5mEAJ6JnGJ6xaCFwnFNkAnDzFnQZqIAPICL9OKyHzSsOEUrYHGHjQelWQEjGojkIZ8ji9sIB7w7xlMd3APfhNODKB51feEbINNvfm7b9oUONTI1dybZxzm9n2kmJgvcw5sF8kJhN3kemSjhZibMxV27jV75hATdrH15J6CroCWB+DOkVH+EOiCdyb6yMTbufK9guzqSbeuJK4hLOmnKIwcTQspZUClg2K7Mf0JtGTeQ/HqZpC7PNYxCzeU0mt5tbrlti1J0MdOQZ33QVJf/n7PbOsAbCO2d06CNQbtAyAdSQrNMXC0NWpnPmSCRoUFFlRJaeZ+Z4SOR6gQAqo/U4DoE5Sbb3AZx4vgZhyrFy6PbzhlkTxWCgrhcDezEZKldMgzVOrPSAsbAHowadGZDEuniZpVvfnPdGL+KZ00NGg1Vs1N40WVs1va07fSuDovh6mAjuCGmXjqCIULnVPsStWPWUq456n6IMmHXOn9vTIb0AV+ERrADpOHYglvFGNj3JJ8hVKSynUPqAclHrQNnkCyX6WtXTJ/GdiBA2HcX4/UA3GpNF70urARZWnYBv1wuaAUqU54MFwvl3KsEPVH8rq9rFPKR0dqm3aLUbZSRhkCUxKCYBicPVYuqQo0V93Aoqo+mkUJzRgqj6RqIVWw+n2kXts59IRMd/wVOYTaEhD1DnfGOmTGNus1E5edrHH/Y+UaerZUTEuEgoFEyTSAAD3IAwNUZ/nm/tKwfIr/2bG1XjYK1a4YhFg+BbjYpXxfvEHngADkXfSAeOQXULQGVY8O4nRqnxFYPZHtdm0DBPlLu/H96SoJ2wT05u1ye8xkVRGQmnwLzNiUdb7UC7sc0oQO1No54IgN2tFG0ZMmOoYlhgmV8+xFl0cL6eCq1lcSntZAd6Q+kZk0ls0fVD08fDVu8Kzem7zfET94w8YcJK41b5/DKVDevEFJPsliIBqUMj+mpnH5Ht6ccyltm8CnB/ZJWECv5StR6y2FqniG7V/26IMzRPd0+UMruS+naD0z7DCdStVfdu+wN7YKxb7YCtilZrWSNJKZG9fjkNx77fRbomr0j7W4w6Z/IVl9Icc8IPfApB+OF2PG66NK731jLUGYWb9HgEazE6l8b5tzCqZ7Z2heyMdgOE8V5pvT99gHP8y++9t0IoYnMJASKHDGM13KGwG8dhLjno6k4A1mXpfQO+N+1oNP1wCZqTLpJ61+jy5jCJb8sGP3NPC5dp2Wc09GKpX/WBq1CWj8906tTk+lB9ytk+A5ZHFhabqGin1lQRN4wmxNEd1CSuiy0k+hg5RORQJF4f8CMXsXxR3E1Dm6F+40ajj8hkCx2ARwO9rw1rnp/kspFw9Y6H71m8FsW9fbNsYt3bCM/g9P+cvNwcSHdwwa3yCAz3t9lUag/6sKdbcBqaqLy9BExuvW8eOcyv7uKMJFlKycAGdjCNCC0h1+mcJqbaf5lrIHJEhTOR5+scW2FzN9kZQZaMsgAbpmEiYy6pej/RnhPesKTP61hCKcR5ERR2f0xWT/JbZev3QBAZ7Z4DjWzlvxIVMVvqTS71FWaobdBnVmW+ZeFXiUUYJ+wJlf2hEGySkL6qtk0yNG8CL/AC9704eCnBepEB9scj9OrJX3kfdaChUHK2UV7F2dOeQuB9I5i9vANRw457YlljMHIeJaDbWe+TiaJ26riL3f1329f3Q2FucOurSIWWQ2jCJ52j6ZSSn/+sYAtocRfTp50EQ8tDUZjFOrVF8OEPWv5xrPf6G4kFNhxzFco+09JikmOpFjTjKWh27NQZiGqlrf5jvkkN+2szHUX8DgE3XbY7OTf5ldJP3zFOGogsH4rsJSstLjxZnSazmsMNQQsm0sjinT+eaNm7PG0j0NSNlGeQ4qPjasFM8y+RnBwGKcbSiNFr2PzsE6I8fFdYJ4IWnjWotZtBZtDqukcucDohIqXMoWhJF4eJcU6Ff9iDCw176pIzLKfh+WyJr7fZm5/tJvyC6nSPyxBT+dgdgUMOnMaz/fH7IZqehJvh2a2T6ZEhnNrqFRny3DkgMal0Z7sGS3Jw58rf1Tf1Uhsk31rItwgsotYpCHuucOO3f4TxC9gMEg9X6GM0AxUBhUa3l+hCXvXDSCSNTOiHxnUH2/MN+rNIWygUiPlmORqhYZ0tvGhJavnaPJTCCxggvqEsul7zhE/JVNAn9C7IVRwkvI/PFAYY7lEAGxpdeDQ+EHWlrM/glBLgb8+VTQmsDrkDsGcKUDFHUpOxbqlg3kJ6ej+y234ABf4gpjGJTr/NtpjBhmC3MarGDlAxpakIsaeoPBZiATv/rhJY6gyIneE80q0E0D3gXlbtZKVcXaYS9rQgRU8B5HIlYFqUfQsbm3oeAkUDBE++iIe0zqrQEPhCA86AsBvWFdEMgzgV0nBnV0bARuDOZhbZa59eN0Ar7ZzsrpNoV8gd9ZJlv5TwyuSu6DMJxAu8nZno/XBFGEm2e+MWiJZYFYfmg4XE/5rMzFLbZ9XiIYp92cBmdYmkwDJN8Pq+TU3T00JmGEbcduvzw+P/a4tY8VM65gdFAIpPNMcLoq6HbY+03j2qA+r+psSEyIUWU3Hv/We8dR3+seisFnkWi0cfgp1NXhh7Aa3QLpIz0wjlGSqdxQIRMioFv7uduNcltFYnu0HLS4MQTTgg2qXkRoc/PQZ5PaZYXQiJlS2H/1EaLUD4oPVGPNTex/ED6/k32yHB+SB6Dwdj80C+uhfT60+lI5NXc8moC9WB7oR5LAfcZRIi1cxTimeIpdJ98kJQF0PjHQhAQ5clWTFamAOqVG8wzCu7RadNvQqM1Mu5rTRqsSgMwVJJnx6RWra+kuT3YIIsALStrOFb9MFInjnh+ZOQGyi8Y7979auPp/EF+x0KKmAaIByCjiQePNoeo4IvljmG6Th6MrmVjtiBgC7RyKnHCNcLKw7x5UeLzcZDhSGcE8NhqXgCfC8DvAZchyih6JxiQLAHp7plvSyAdNQkcJhIm3PLAiHLiqDOuGLpbPaHIGzJfN2k7zgfWBo2R1fX6FHEQSDebBhhMqNVbH8/atmoReisrOgCuVeLgc4ZLesQ5obNElBQbQFBQRpYTFADoNRmwgMF4zGesJb+Skf5bqYg6KOomQZcNLWbnNBpFtrrdwwJKf4tC8133rLcwPbmheDZHfjnJIOz96sr8FKcIR35n5yA++nosoJR2U77fRxwfKlSEtiUxgzh/rhVEk813AY57CS4w/5l4iBxyUQFpWP+ILPgWOHpMiSWTZ5M6rg3WuWIKqG2GBAFIAa81WmDiCRd6g2P/NAAaPEySnz2AffbGZ/PuMlKx+CYQDs/iV3US5w73T8PFVWLcMMWjBY12DM/L2GaGGdxNQXVLmMEhVKi5oyW3eHF1ZzjMlozYk6g7Jk2TEAP5h72HUe+/H4cP+sKY8IJJL2pQT7T/kmIA5UoLZraDBPXY8oFEnRTy01TbC0PYGV++2L0oceQypwwEquHXJSUNPuU+KeChw3qQUIwmbCTULskc+m1FtHQDJxC7Rw5l/Jf/cirjF7/nAHAr91yKyD6ECzge6PiL3fd0aMW+UF0fdMxqd5h5Xyauxv7+rKpEq8oQKlQyouG6u5XKaGg66ZRUgnokQtJKJm8G2/aDkg23ZBXSwV70MAONVIExLPZGWV/d1TW4OatRa4FjL7/F9+2L7GH+N/4NusigrwXcoEqYqCVSTLlxi6LBtvew+9YrLNxfo773YTuhCh1eSGemgpjQVEGN6mq8SvDpffNaNuQHRIMA7oAPuTO/b0v6RgHy6AEG3ZQ2uyF3F/f7B97cPwNLZyFNoOVovg1sUQuM9/uJ2HWiYJsKc6vAyJgo50PFK41+5MXKQYrNCATVspR+lMxyOI6coxpqbLaoRVF4deS3rVy7bTxVxUm7qriOr2jiExdDj3/htp0zKpaQEeTZrIWtJ6p3QBihnzvMMLRbWSHr5CpDNUDeiFJ9kXeSJ7lEo/2R3XBlxSBzv5SoSTKlFAH2MWNofhf4L5qwD+rGgp2FI7/SquPiw2+x9fi8ofZeKbbKjnXuNLejn6mlDlDb4L1VKIea5lxExFFlj2Fo1b4Huozuk1mTiQ9WEYKTNYoE8A+qXFekEXF0Ho300UnSta4RBoO1swiEekYYNJf689Z4eruKWefoYM5mc2OIpqYb1shI+Eb5b82V4h6iDGI+JFb3XooGueQA5Mk9wrjKwSD+k0KbF7aA5L/wejFYxcMvZ3DH1urC+xog3W/1/2oyySIrT6iPRqFMFRtbwhgVc8rAUVkvgQUC6e26yaroEXGhIS5/edUT17dmc2sTePHCnsxLlhfx7KHzu7VXq0zH02j6PVqk5OW172tQJ72Lg4BDXZeKr8mlDAgLIKoGw+RdarEVEYMUqcASNY0vZsJmnXeazGFbJuXSkjEsEf+B5lHhYopRgSFYVD7l2/rmh+sLB+GxSXG8tBobHAjncV5gjGn6o6l4dBe6/85SkRIBBKRQtmCi/kHgh+uzVQczrsAMjd5OVdq2E3r6+cbfA88Oyqp8Q0Qv0Cq9nQptRq4xmfUoy1zr88LmKmH0HFUWdV+HL0aby3yD6BHAanRufB2bz0puq+G56TtfHBiWIVdt/Ggs1oQrLFV5pVJIIheyapbxVMeL6cHg7fGHR7bYJDfaKdZHVuEWasDvkFRR7KY1g4RXDzDOg57exUYPVTnRjk6DvmG3L4Y+ory30leorypJmM4Wf6EUAB7wWOX34s1VcCtB6L6UuDzRSD9hLAWUFdBMUzZywBu3jEuHqVyVXBaov6qr2vfYRN8Xdk91XrcUnOlRqCi6tSA7HLqrAG8izlmvOsogVF8i2kaSTJDAnuo8rVTq8G4K/ZjxwAkYmtw/eYBtI7WjJYzq6921FWhIhV7TUmuOxmgezAAkpGPAWfFofuSTQMgCx/1m2GUaU+WSlbPwP+fLJiVeVrwLaUpzTJWeeekRBvK7JIc5T854+ZEQQP8pr2I1VVkqPHHKX/lDHSD1MCeoWIpoj1gnTqFYwFk6OR85WMSqvGK1uT6ppX7rxo6eZHb2gspPWQ+kIfNGPSnDGNdmC2wYJ8oyhVzNaNOCx1RUxpTteGoGnC50456n3aC7xs+ugeGJpLR5QaofOCf2qjAKzmZYnDnvF/1WWW0nKZMFo1Lf3MT+PeO8zirLRZMzOyu8/VPQ7WYzpzEUrLYHmUvPFBkmrIaHkIQxxR4xJ1oOahd5jLZ9kOoHThbs5z66lR7WUp1ocp8cpPculdPKkRdYgrMRRqaaIVCDp4Cw+JbjbjaEj8yIQEIcjKHN0Tp2muBYroVGXXji14U5Zt8FTzbkqHMp4byJRc0FcF2L+rjRslgumUaNi1PMZ7xVJi3c8IhbyTT2sS9X1NdtwuPjX3EcXeiJhrIZLW3yN6NhyYhVsOch4AuRG6yJMjZlHW46PULXjuPtgYnsjAK5wMzlIU7CIapAZuNGaCWbXgseFqngcRjFa6ZbHnHR4pMgVVyjheGcYeqZ7lv+yjVhKusjsYgGsfEg91ioNKbsFNQCJ7/Pw06iSqz92tvwwxUyr2fECoqDSLUmJgUV/TSeWw00hlsD5hD73UzkL3ACWJ0tsKT0QnhP8WgCmUGVbAUK9wvhN9smcoZwEbCGCkHQzor941LOpfkJdM32c3EuzozmR/lHP4v/MfcO/2lSbN+Vfe0xUMN9JcU0BO32/PCOJ5C2mYgsKKqawVF2UMFgPp8fn6GzMTOtyzIhWeXcJUMXVBLpFaJq6lEI9cYltaBcMtjtgQsO/26ZZOjLdPVjhLYDxvp8YYFofLgAkjmbQhsQcDa38qBcSli22uYA0iTlg+4Pws5FB2vKDFgK3r4Bv2YpwaBwQ5wIk3TxH5JhMw9SPqUAXGpjQ9GG6hC4eGTGR/3Woh4Xwkas4DiLhdHMEQEtUuZo5e4USnZj1k6dFsu8X2cRtbX2aK7Wo7BXpvCN5YdLFAIykmyBw0YiRus7lUx6lR/mafZ1ekJal9iThy7Q0H1SdCIJqthItA4aedoB45I2UJ4NpV2YGOECTc8Iz9CcYZ8g4H62rryPso2tKbEfAxkIZ27Lno2U9jcONseDH+vSz6Y26JbBsIwyYL8KVSg/OefVfOQJVqgWcTyd3su2ZG1quF1SpdWE+eNlMKaN9b9SVQJidb1OS7TSH82J9mf/GNn92SxUnLEkdFJRRPwwGdzRgBa+V4tw7rqmVWXWJdUnyj8vgxkgJ0Xa0Y/jMB72C2aF3LveEPOJpIPQn3bMgqwBGc3CslNoSDEdqgt8n3Y+4ACfZEnZDTrOBEB+8cadmvk8Ci6xW4ek/KrOMHIaQIWyNVMyx7m7RSbIYuokoTetUAtcUpWnTMrNFLntX6FAXlBvJhPls8gi5DgKtmMC5rgECl0X4tyjhC7U9FVkogMpBH1/pEcd+l334uTDgqAGzK13yVFn0gHaXbrGWU+0Shi2K/kx7sTmXEzNjg0usmC9Kvj0nSWuqf+E4HBunQ8wIF0OW/gE9glOykYo3rfStrcYRlcfSs5FRpUap9CcIiCikzNLd4k4LOR69veGmSOds+ZFNz4ShbftUfnw8wvM27bPzeV6H8zE+pIqO1Gz8mzFcqhw6DANr8VL6Lh67tI8lAPMlmNOnI5lOpCUYXpvI/FarqxN2bHMsQdgG6/JjL1Py+D7js6M5WdrrkZ2ovqIHEQvqUlpa6XLumFpayUgXScAr+V5jFa7L4vzEitaOTIO8QR5lKyzNrATn9AsmkC0bRKP1j5YB7a9SP66YtWJL4dbDrdsL+PF57kAZooIyheTMhwOcMBayIGj+bsaNOW87s0DZlzqrslkFa2c7fPaAMtV3ncWpztjTzi97c8Odfa12wtx3UyzMicoZiUxt7DF5tD7bxkfLoyKfdCapQNk4EzvbN0FVO0JGePRaN5/dODIBVJmGhN8qHDlDBRfG2mXefC4eahBFojRskKPUpXa1ArYqHIdaHN5QO4KQ4BDzQwGVk0KmDKAMAYQsTDclQTjfyTIAHhIDWog8s5SUVLHHY0Wo4AzqwTpgyHxABhQP1QAvoNG2+BFjhDhAMxGoXRg9/1WpwEgjvJfjMPYC9gyA9cXzGD1XGtPA0AnONL9jhWI5VlnHYsGdTN2Feq5HXXWZYhQsCslwhLAVDhVU5bdUMXjFUnNjeOpGB530QdqbdDaj6UlPExmeBQkc40IPwlwkg5SKz4HH4qyc8b2nF0qyXuSn5SKVqPxWFFJfkKEqkurmKBsTI2woYiISrv3SGZL4+MU8mZvI6LjzzfBvtjuYXQ67SdRSyU8RnrHS01sKyR2fITg1knC+II82444iVk9UeGDxiTJz1XAfCh8bG0Hw9vcmMJi2MPVs1jq6LqdLPocnn06PYd19D65mB2a7LhTxN6V6eMZwKFoyQm0UY3wXijyjoifO/BlIKxK6GiFqjpVeEfAKAeR/WwkoaZH4ZzeO0SUMEtcxM5gswrFAOIIh9CVDlRaAoaHqWTZLt7g9j5pa6v2w8MfYMUMIAk3v4jSATueDk9U3MLdUH0/qjh1ywHEOLOUohk+FuS9js5qHTsIyRcsODsq7X8kovdbHWzgbBOftCoVdMkxnZN1uied4oK7Brc60QzHQuMlIeq2eazCgCDmSTcx8NGdVO+0+7T1jxQbMkWp5CNjT2PqgaQ0JfQzgeG24P7p/asg0Lp8anDZYjPJ88ddRxe7ExgNs7YI3B34Fhat+fdW2KHjB7SaW81dKXZAhRs3rOaCAlc2jJvuKnTBETKpGW67xwbbnLt09ipyNfzAYlsJ6yGQNnnHgHpvtfx2J7rAaqi/2uMc5XRptsyNFJOhgQb5VebV/SD7io2MejwNLCJRQGBgmc1vNHVAdcBtL6Du13XggvEgZ34I9veqmrgVYWg09zw2hlHuIKbSeGxIZ7Fwz6qjmsx2BiwVJ9rJiopl7cfnE6iFIUBY0dKR6WVaTxUB8QOaLbIu2GINk27++FwOtgVap0bMzCVI8KJK7eTkTBmwL0Jfeby1y1vrpfKF2UeqI0S7ocPrHO4m3kWgtu/YFGYnGIdoOjicp52CNi7P7EzZMjMmG3bjynaGg7xz4MrxKZlQAm5GJRxUlHqE9LFsNQkCByxqxGEG+j2y+aHBnyAI8qQDw4uBJrm4aCWQ33C5no5vsfgzdiYCCsoR7gLwHScxgLAmPxOTJlDSQail9rcC+0n14FIdo0qrSmoyPNBOox7Wv+zIS7qL6DNn9dz5e7Hjn3bjchqBH/sKnNy7dg/WKy40/rrTKywLwjbftwovOqUgClosgqFpHeCAOQlillefGI+/Sf6XUi2CH+ynjHFUf+8ik9q0O93ebMcdkQ9HsU7NEOQ+9xFhvzPRM9E90fvwHPhH2IiTk2BvOvH2ys/qW9z6fwTy06bwMJitnR8HXp3V4pJ2GcbDzmRWuT6J/sgHV98j4v8ATmQ2sLrhCR15j+YCfLhaJIU7YkyRrJn6ZcGF8aZ3oCXTG+IeJiIzCyjFiHOZrDkVLOoc/BiLdUUpskucvq5Fzmlv6qkS6I3HhL6vryG6XViEfsyvqsxA+Mq208JOGGbbk09+0OkFR/YvAeCpChuIC95zYVW+ExMRJLF2Ix0U2W6A2Lun5+Rnf/PMxl82gO8r/y2EyvTXpHLefzU/7wYbCuogUYtisx9L7PoDVapgg/emvB7EOXwXrI2U67GzXF/I27qKEkCF7mCDMsKGap9Rwwxh12yrR1XGlexnIlsHSPYXyOp7jokuht6TNDnijSUVgZykbs4IluMUUnWd7vQlkf3yBCqgTP30Q8cEVQ58PuubMGPjIjaDW23AR4xFs0WiAGByugzWDXx+VTxRIdm5f1B2XEmPUPD0lll6BWeN/4NGWRPZouiP1KBC+oW+a7reSgAqRL9MWWV436LOQh67IXPTTYsSHq1uljwXMkFIB1fUaX5ym0Kc1YUfOtUaCUr6gbvIBcqduJicG89qt1Lm1pzdC5Vl7TAWUAlSOdxtuIAQf5gD+BMm6MES83MeAB8Bl8z6yo1U4vd84IxJaZTXqWTv+aYN9lrBxjyklm0PwML/ulXg7Zv0WWvVwJN9WzqxagM6Kk12OTA+OYJIrXOHYtxOklzBtrqq1AoH4qvokdysJ60/+v/zAMmJGLqWuFn3wgB2G9V/Uh/m32M3XT9Qf7vwx8nZiyJ+WNqcsi8VbsotHVSENJC1DaY4XgL2U8ddj+8H2PGq9v319qaup+9XmUHbblm0paZJ82T+AsJhY4fwjpUtmTmUouTJFm/kl/il2ht9wIFCI7z6EHNX3Gia5/BQK0yRimbJujfZeUDzQusaqDMggRTo5DKIjsZDh3HqK8K5eHwCMK2ee1FdxNnbZxLjbT3/FVj5suDMPhoLGSg+PaeRqmAn6ifao66xcxTxUQG9nCAvmuFTxcL+2dNBwJ6yaBUZPMy0tePe9scNtOIRrj6RquPqJ7W5v+1U76/yQkEF7teG4cDGOj5sWbOdq4OHWlfX2kr+q8dq6T9GquFSFbZbzBBvmArbfp+gn5l6T7Ai/9bOAITxxhn8b1jTQPgdFtvLbKcIhLuIUvkt7pHNFZNLlmrI1j//4iP0TYSomqi/PZ4EIXlvLa99PTKWZ+FkhPFup80IFmpoEybwX0AEfTYho5gmbmIt40QOkxA8fJD+tVl13N4O98sgaH3eZInMJMmI5U+UJ8b0/z5Zo5gtnGpHdl9SQK1xKg5CpBISxYgbnC+02vb4D2VRICQ+rV2l56BFRWQl2jNqYZG/xAH2RYPQmp3F6sM2OO1fnwISvKa1DEhrVfH82JyhEFfAkjLuHVWFjmWba6O7EewTCA35G1Lk+QEsTUmk7hO/9IsYhVSmV9Ri+JwmhAuNVWqaq0YRe+4RoXN9iEuHs0jCWpmm6IM4EO/Mo3So5iM6uGxTDds5WLEEfa76zFyEcr6Iqx4mV9VVO+h568MkU9CXoOLE8YnhF30GY0sdKCoczpvQxCsKTgUQ6qPx8EgWNJIZbFxXizVNcVTTKbqovZFfW0FvdLmniEVM4/5/QrpYXAFbVCEEu0J0pfCGk1vK4jHal8pCM82+shClbWhRbP4ziOiGl66/I4jV3uJJEeu6IK/Df9ygqOtovnmMaSaICNfWeKMgEiKtYKJZ2WZZQZgQVYEdObRP9sEmz1UVBt48Wqv6AJYHqDIvJYk8v1OEXhvJlKo2i+ZfT71l+S4TiDJLNhydJURrLQQlwHNZMKakMwxVi24V61JyvW0p+037zm2yCCPGqJU8NK6NFAKy+enGJpLDC4DHCWAMEEBiApYIRmtgbc7cK8t0LZP10wjlQRqlZrvj+NMJMSUHMwu41YQUAVUX+H4KGj9ZLutUKP9yWk5PIlkc8nRQrOt3jrX5zi6KDcVEv32++o6D0QQwCEsn68NEum5DvwR8kvgHXTlcZdDCkBCwWRPZA5PdXnDG1Y6dT98lu+O+Z4NejVSMWhI54GOCZT7vw3EBjKXl8Q2p7w6g7SX8ZnDMrp8IzRDcQGNxGkzP14FRvxVJnDamGL0a1sEIFsdieRLPQU++q7RwICGpdvYG/fEDWDmeCbCSJGjmmtis6Ma409c+kJGwiCKOLsL12hOX6b3EaU9Z6C32lk8GdFj2YjQuJVKrk3Uam+HDBVous5xZJYhciFGWG/R10+oxfEHerfWDLGFXg2TfPQl9DhYbzpvnyjl4nWxiBMpipIyJackA5h8VPqkiuEJZf0woD/qeFnJ7k6DGDJAhcNwIsy2SSiDOsrHJya8HOZJIYVFNpY15i4yiNMxvqLnFE1ppEEJPAoFfhPnTpmS15GYqqf4Yq47WHhRB3Yi+wfpBTCexINpsDWc9Vwj4E4VN1y3UVz7s9cvrWfSVepMo+hgj/UDHVLTw1qPcE+OUU+1IvUWMNl5bZUE2xGtyLl8ZWxE9hQC8ssihqH0uwUFC7/vTzqBkbfjx6fYrpdfn14cfj3SnnpubC3bNQXsJeot4YUO9urxJdrfQ/CrMaA8Zd+e97v8W6y/DRQlY4FOh3OHumblV29Hm+IZ7pZV7GeXh6fO10N0kIh9e95w/E/9kYKQKRHlCPNvqaBXFTJ3c4TcVyh2EjwTHxmABGNDfkEjrU9lpSUHUYiJP2Nt6fNKvG3X7ppsODhgcQfRW1TmQigS0EgYb+iIG6z/NPL4COclYWIDVRXDFEWpgaYECwggrpC2KgnAdaslISl5KLZa+vdp73X+OV7OFqM+pjueu9XG7fIyh3/XSPidzk1L3r44R6NK7wcJ+XJdmYfr1kvLLQSdNC8XvK79vgAU40yCLy1IFyY9v4qgETv0qlP61A6vIs5yY1ahNFp2wfDFwAlLxntFWt6qCD+RRnNO/fGHnSN32HfVSr4o1Z1dTID4oz+7r5XpgOUYB2T4oWHFUxfZYxc11uRCORyixMI7vKR/UyTM0AIglNvYAzQKb+HQW76Z2yYPnMd4kCowCuxjpQHcfpnmL52IAx95ytVEv5//LlV9OjYMtvXmFOOCmBFisc9xRdAulCODb8T0/z3JgqnnqtHwAaU/7bD0eKoBuQzei1OyXfB81j+4wOi/egyoHoRunYwD6A3jnVaFBOfo0Ds3yph7JwHVP9/bwku0xxwqsXZgRWNogv6r5vKOdS916kmgc6LDQ+mBYuTKuQxAwyHtQz6SAGTtwIk2Qc/tz+qBUxI9Jr/taZPYR4yxNmXGy6YXU2XLh5+68Uw7o0rhKjxfD4V1ROLxL2lC+MbRTCXZ1dEoLiSzllw+ghs2HBSVthh8hNXeCc+3ZEnvuTrtPf5ufwdR+AXnzq3UeOyy03jhcHKsmzWGiP2rONY0VgUNaVEvG/N0bhIvv1bgPiKVQO3Ls0usuYCOtB1WUSsAchHQQTk2I7UoYsuGploBQeKIWmhXG1WJFMc24fONjOn85KxjFlLh80dgtBhv0QiK56iDnJyCdnlcSYGb6UWJImqbQWuGO1W2Z4XZSAkLRtd83wZvfpKYBGUJ3AGJ7spEbwPO2sFnjMqlUhHp9FZMPic7lgJ72/sWbOATLXUb8wVWYJw4XZV5M1DbskjvUdu+qIluO/qdsk+TrbF16zc69gWWf6/hABsERZndhgw6eACxIGTycQS7a9Ew5jOAHGHzQYcuWj+8u9/cjMfqhf46hisR2xqoeLO1CZV1VY+LDSaLojJc5yXwVbvMYMcA8CIscca+CYTmvvXyFvrTX6u7iLjD5VUClfgq8Al8ubHV3ceePWyhiIW2UquAPImGK22ZmHbe7h/iWMHo46hLC2JrXh9kDCH5BRBwS74y8tycMd+zvCVMci16R3kKfF96zzx+9vAIcJiVCPKBCDr7Uc3eDqwHkxgagAz33NAC6hgyCvmjuwJAV8ztii3O5AYZfX/JZoisZ/qF4td8ub+R2zI0kbdIS1GvejepoScGs7V5P1RD1ZJU0JERoi/nrweld1YfaAP8IF/Up3y/v5eGbt9Se/PHuTYOPnthgU5xd46ejr1PYWrLO4VSelbBjVeQxB5vyh9zn8FKO5Gi+0OhDyeSbC3fdsFGPo+ywqW3Ww4kDv3VCom3Y18plV11sZsu0dPuGswyoDQF4nKFm0Cy53tv2+ndXcb/JZ9CINPy04x+uyeGuB+2lVP8OJFsg8h4FRKvYHYHl0hpYD0VFegsd3nYNL7Ulzrc5m8kPrkhVTUE5C/8yQXTuZWBICE6Fbp8g6r4iR0yuB6K9zr5vrwReYOoCaVLWTp86KG4aWOFEdo7hO93sCIfJla7vrIC8wBQRrd5mwFag47us79GwAgrPfTwdmMNFeUfQeH5So1Vgk0M5DAsGoSk0FLhsJ/XF0lcX7447xSN5+Pn00s4PBD/Sl2pbFznqL0Y166wybWbKy1+s7zs1I6+oRvTf0tBxpWZzkn4cGLNezhTnGLJnJ2iogZ1qHA7e3uTf2sMlWwfHh784XJRXsu/jMfEx7tx7ViCeU3GzrjL0AFazslaqRo/Qatkb8IHiPfHu47Ad3wiqvI494lke8TAH0lWkfC9ytdV6PfpnVJJ6ktD9JLsH845XQGX24sUmXyj6gSFc9kwikQ6V+vhfr949YvKgdEKCZZTWAzIjLGZNToY3lnTZJWzmV32SYlP82haTbsU5xSZF1nac+RCmvTwP3qDb6hGOOQrFaQ7cBmFm7FDnGFl2ACmLX0j6QSfWD47WsG0KQubHAt9JvrsJKDag+gPRsQpFYq4QucRAA6mP95Sf9RfTqXA7VrSeBg/cfzEfd/weIl45yeqmVjNVUAY+ENiUyhpbEppm9YbVF6ljKQkSbKOUfdxPCqR0vwG5amMMN9XscvyKb3LRSxE8VN+kjmH62/s/GplOfxCVmpRhFDemyqTuJtkvmhDZmr2QjIV8W8sX/Ci1Jelsr6j9RX6JEihAxROfuG9zm7jgY0YkajA8ANj48JkdZ4QQ/EV//JcdmlsgWCF0fHFU1eHuGSGTw8fxzubYySuRo637fJmpId6imVh4Dul0Xxkw+XRWo5FNLzpbw7TipeuS/iV/iVqzcUJrKcVNHK10tufaJ9do5m5+RvRWfUR0fok5Hha50OBURRedWObHT6qw1BjqnJQIlYu5MhvFQeAY23jMIx4HSzzmgOOgxjWr3ilj8ODrS9D7g6HxgnvJ2hGBteRTbH/7sVYpKnx1EcA+DmwJfe8zzyvlPI8fOLhMvM7fykrCAXXCATmd5cr5zymxK9t3zm0T2LopDGkPI71130tCDoAe018dbCUzpV8m290WI67TwnrfpaBGFUwwFAkyT7H3xG7WEQobVs/lMsbMzz3aoukkFOgemQIVKTqGGOba7EF6fjEHwQoTOU6PvYNc4vxw6lLcdweccmHD/EKxIiPKj8J06UwybFTQ1ltvqx2CqMj06uxuW82a8ViKUfJB31csKMOCq2SjDJ/Z5EHsLs+2bN+k5+pMvn7FedIwOAYoJzXV+/7U/NSwlchc1RiNREtHNOOF3D8uyk+wVKTpvM36vOrq0PUlv/SRmbcy5KIY3/drDL5JUJWvn33LVXbL40mFjIwivr2FaKHDlZFY1apOb+GIMfjmt7tZCoiOCjufSx9uZU/zIbDfe/LO6lLu9d0judEFDsooN2jb0437G6WHd0tCy1hwvnMStPzeWtaHxSCIvgjT40S3/BML47tivCg3anAOFE5WakeID9iCgrGBBlTksuMSm6LTp4icidpU4ZBpnhqYrVzIsLUzua0lBUzzExgDImsy0qKF2oiUuw6MbcOwWnKb+tZh/uKWjqga6EJv59C1DcO04Dauf2MK+lscYbwn1FTqyqDbMAiUqtBChYe7hT2iLwmt3s5hAKwk5OWOy+hvQV1F9/SW8Kejk9+MxQTorcuH3gXI1lmFZJx8Ac4X0u6F6QMhXqnEQekVviAWK3wBaykqAEEdw1SuugAdYuCEHJRqYxbVZPNUE9g8IRekR8z0mlySHqmTSOOwt21ex8D38HBgvH5l84zv2aLnhNY7st55Ch10borHIJZOuuYg1gTnQCPUsUlMQq004Qu2owdInYCvrtnh2GvUJ6zZeDJV9igdXCVh3Bp5A9QbaL1Gnutdgh0VY7S4G1B7EjNyycpOdGqGmbbNPeGVsmxcS8kq1q6BxWukRwBTFiWg+hjgyjX+mB4BTOmTHBummeG6JBWKaMQJHP9xdJQtzLPSMIK2eoFRsxKAH4N+eyT5skyuIMt8AQdbXOcgrA9xugiqLyi8VMlH3ItsZa0rArKdLHi7lEO0g5cq6x7cdiIx+ComcliJA3E4iSzreVhxFtloGDYchPqFVJ3UbXlH8vV3zIJujcFiX7Otw5RWJMMTh9f4+CVbuVWHxIye1lqoqR6muCK0bglwMPhJW03aB6XRNC9Caj961DJt2syzZbIj+RP9+yTX2jsneeA1B7r/UFFd0Nq4qMOiP2QF+t/b+VJWyoZRZV0d8OfiCI/bEMgcgIZAx7G81nq3kt/V53NoO8BhdwVEqLbL92pyforF3ahaX5bh3pv2dFgf25ypJ0dWQKMsM0sfCLq/U13ER21xsdBcLzhtPaBs9P+QNJjfscNTJ8gDo2qQwzbUbLhmwza+cjXQCUlrGIsVII60OtOmbsq1YXrxBFJrotDiJbDJMKBivZFTXHHN+YeL2HSzffjnMccpHJT4whVizD9hIbwagSPzxT4Nyn/IHUMSUQ/sCoo0ieaMNcOH0ulIm5f7eBTgFoG5C3PMgIw7hhy5dkL1n7uBgyRkcW2sBBfcx2z4UeJE/Za+zhz3EiRIrLkID+4hTSHSQYFuHVyDYg3HOjCNjNOI4wzhPdijRkGtFNkoPWcLgqUANyM2OA2Pbjt5co05nA0ATReWW1IC085Dj6+L7i9xzxeUP1yVbhKQhBAn6bOFuHmOXe8cKev+jDY9Bo7byXfHiKwdhC1QXoQ6LqiFjV87Ic/3CljDWoEteGuzPC/6AmbIbQ7KK7ynejfyTokUJjeVKNAL6Uy14lXQKJop7tYdySAu7wML0EdWA7fzGP5mic5TNFTjmrsAGTaOVadL74fdFB1TCUh2y/To5BTJQzuWTvTdFKhJtmCZVhBlpUOjQGs1fZCw4IWBGhmlvKWsUL7yD5wkp9h/clGdYN592+M97VoiZ+H1YOE62Vy7ZEhFM4BJrZjDqjgje29swXPd2VDlejd3CUeCpmNdi8wQNVNcFxjD64ofaTzZVPRh82yyBi53cS+4NLJq7OGpU4ZUixVBzIzAj7VsS+b5cZOn98ftPC71c+Kx9pUqzp/3OMaain4tFxcv+/33qM19LPkMfv/OTBDDO/uDAH9ARZpeJKwReUBxwPYXx3ofbR5NGkAFt976AKs9Wbiy9uRSMnjyEbK2Zynapfke4GVV5RcFsh0Odg8qLv2xXV385xV9Qefhu8DcTnEXmimI1o4ZPvvydergaWdWcW1tzpUeRMlCv01dCEmDiYaxj1tQvYKJCok6IdBctLa5XL10+A+gQr5/OO2KTgvHJ+F3w/JL9Qu0a1njElxJVXgzK1orXSes0rhakFHP8oK2C261nDsTiALuCLo4avykuBkMx4QzpGlgtIjzCFMXhWxI1PBhT/KcaT5LwFz9YqTK9tbnuB2U1FaY/nJ1dg0UThFmfJLUkG3SyxVoUAjrL5RmA4zElppDiDV9Q2Co0OSM6K23ffGYIfhaEGrZa+iTY9KN/xQYGvUq1jKdX7eoblJtBTP2KKFp0o6d2cNJd5fzsvcQdjQV9/GLZ4zCdwuPyaoU32LBWTQhTRZ8+iuGoAzKhVM1tw2MoD5zf4x5ql0E3J6aULhC8NQ/GZooz4R6fA5PpcfsrxByGKc2nVMXUwHUmAvhs0kr7kGU6QT2lRP2r8JNI/pAMJsDw81XNJqQOZRI0V4H5Fjcc4zLTVZtytMfF6bChVg3kILIyJakQr06XrdwYqyfpFBrvTHrsAIDh8ELs6mZTvNNFfxRAvnz+HDqRucTB6YyylRLVYgFDjOt0NMIllIi5UyEEIWP5xW/j7RiH+qZjFNEWvoCiyA2w9lIseiMzisyObBH2ppURL9auW0hmmYFgzinZdiGeNjT4BkmMkywLE0tv0Qu96KQPVqZU7Giir3K8iaVejG/CpZOkGIYNs8hoy4aRT9+c0TDQvmQLzPjMTcy9PtAywWPRCX9lcML3J5uBll6JzvXzZpW+ARXnmFvMg5JLVBqFx+ksEOCS3rEKaWdGUzYc7lzYnqpzb4wD+bsLZPCiMEi9ey1VgfZ7twhZt/aje2NNiRSiWyjy4QBFWktrYr85JFwdPyY4oEWliUDDEknpVn7iAPOAs7+sWUlW3Eu5R+5CirwejT6kiO3cXCGn3agkTHzc1SP25yEp0ZPCJbuDLcFaHE1kzgVLeFDK0AmaSlEsLBHGHEYLOnqYrGd6/B2A5jvkz9GvcmcMOlY5q+bT6YcNj0OBwKrQfB1fHzb/j8RseMumdWe/dsdihuynyzeLJBSAPwMj73b6g3W+uRP6IeXUGAThGvUKWPV9dek/Stzg9jBpoOUu3NR61T4VU09HOCVyPQKwhatlIjGibdAG64yeLdAvNv7KkGzlugUFEelerd5VkX6LzKHEb7WKbykFMLz4v9LAkchdMQkVrQgChs6I4QAJqa3mZGC7CgazReEMF8dKlT601GcMB3ElEKyjJ40Xlf2F46IzW4qiBjTRbPjKIbCaqk9kAxasHslTKnhRVsbwFcgbk0iINOhoVwjlkbEUV6R0DLimAkOEitBcAtMEopViSEXGldzHuf7K4zSYLM3TGJVuIBILtiiOOH9sIZPVx4DWxqqwm3tZ9lOgWJ43fVWnpN//s4mn+wWbD9vHJiQebYDCpSY4Wyaz7js+GRCkE9yWg0EaxxBym+lo1WPRDHv1b943jn0JCMcNeZMdQdtKkEpK8NiZ7yqRKcLlvNbzlCTD++/2bhbwainlm9jHBYT/7oARrT4oHxckgA9hTYKTCYX3L9Vadg1t8LfV6N19vsKDodSgZ8+if579G12SwnMij0CqIjtZQcMKbUSipj7aPYv47+zPf+pNtErza0vs8Z/LQA0gbz7Y0VuJXdrWqrR/7JOb/GW1EfH8vC9bKpZ1Z+MDv9pZ/BniKZviEWxFi7oRvXj6mVHAHmCk6wy9mXasMKKxSVNo6kF87c5VKuBHpby6oBC7iP74aEPjte4fJaqbe2BFhhj7Fs0vL9/FrVX3t0NuHW4fyz73UiiMeWnmqsfy3S+weHtGSX9Ahwx3hPo3obYHtNujr4iMNtOCTRkYXHOvDaDjnPgBgoKEIfnmU6laDHJA91VF1/LHmRQFoIF+z+xu+BwfRjz0eCzHJ2Yq2a+9MlQE9/GWlvH2Pr21+6inbtCMySmwmL+T3Z0GjX9ojoBque9MaEvlUJ7zI0r9PLJMiW5EkuqOLlJGBthHY3YbSL/ZE4T1GhnzLhwA37aPonY4Ek9g7cc8nxTIId+eYUArHKwbZs40512ve4v+btfh6xrqj9tmPTUCLXap/EVVv3O30Z/xHW7dQOsSr72rFVO3EvHqXNtf+M/6TjXqXDFn7ziXreZmtb1LhTH3EM0pt/5W+KFC/zW1OGwb0z28Ik6vONc3UoVWPCBUs+n0s0ZHvS2+x2MN3/I7ffjHYbyx9Ll6IseAir+tpPDm+zWZ8JvUXPmTk1egQLl58RW/pB00e5dMEVH4RhYvp0tKbUDrPcSGqsKk39aW/hEpfytKQVGmGkP9tfqhs/uJ39ZFyhmkED161KVXhT5qbEh3cbV8QTcYl+CT1NcZwhq68Oz3fDF0Yc7kmKcwlq9eSXnWha4v12YXy1jzU6QqZzZbTESuFWYrZCww2Klx2+r34yjowqskqTv8K2DyNYtNTaszvP1ebTgx2h+RSaXvz21xDKv+1OTptqS6OfoezVb12oiDc3FTIACpfjTC9eqKX7kyFYm8eqi1WFl+44ZmQPTU2/zdnYQRQcY1Nn7siFNlUmM3qVlbnRDnbB334QvZdem8y5rIPWoav/L3C8ckxHBafJYBR7vLNJvzov+rhyMV0e81h/8jWe+kQe+kT6wc/DxmQm9lkSZ5ZfLN+9eBDacOtCHktpvsAHvMdXxc93Vl/WjRtRfZeN5hAOW39dOkjdJ4Rt86u8hT/UsScuHa4/jsxJiqODB6ef+mk9qB5ZwtDp+ODBtKhoLYB+KvA2UaMMcpRVzeQeyR8Zcwm8vK88VD7m+4xhpzcf3iFw6NFntNP0KaT+I1PUsHDTomU14ep7aSTz4JAjtvvPjWYgR3Qw6Hrm4knXGl0W8STZn4fOdP3Aap4HgdqLt9l2+8Mt+U52Yy9NIhIoWpWk02ySyq61XXWtwqOqo9rXqavKbrnV/OnUs9tAwpM8+DfHf29GWSdWOzwk+VV1n7Z+q+Q/mzTcy4WYBG9qJ6ex+czepnguyWvy1fhCr1bQpXH2fA29+Dwqc+CBv7Ee+Z/9a323nszyzPtHp38h0hMHB2ETgew0Pxg/5Mp74xWD+HYQY+3uF4LbLPyo4/b0DZ6ez+Iexu6NNzQQPn34ArI9cJGmTulBOSVub8gqfveI1v39ztNk4C2L0UdwUvh5/hX18T5aL3tdHTa2k88+9z+rk7UvMLnzw/2oXmImFbRRXU76hgmnzm1j+FIZvb5tBn56QPtmhnPko/Qi/GrMw6q6nVXza8+eXGuz95pwpwyW/5sf5nMO/GsOH7FmvGM7MzWTvcpRXAu0fkPcLewAk8e9LEgCghee6Q7Polmt2t6Aux8sa5WJfYq+tcYEE8nx3n1B2FQP6Rcr5VSq79dEHSMfMyvea3S/AyGdo5/xR8XrveL3/D17Xjqv79TaGK221mAGma0wDK93imAuMgeBgDdIXaGAFvCIw99BEgpDHdP7+P0gKDAdsg5UPY4hCls1/6qCXeN6uirbMQPlRAE61plrjHqhfMDgCnw7sMYEvR8XfyXCfq/8vnTEDNrXYtIvgwdmhE1cbFW2EhYGRDZsRJle+HhWWEekUsbUWLZhQA+4NeQU22MSSTfzOgzzJ2nVMXJA/bPm6AsErgjIcz4jCcPNxCahhBkpk1sGLhrciwioGZxEMGUAiZSatgvPLBq6WVAoYKwPsVBkGchByOgq2I2FMZOrJdiCoECxhUwbQAhKccglD6fRIGLOzGaB+gjFhA8ONSQXksSDLFYAANyZlIY091uEn0pYYwGZgsiOfcySzV8KX6sL4C9tWgDjilJpqfxDjHywn4nHClITewSfE+IKFEY8rvGel9ywviLHHIiM8Mc4ItS6PiPEvehCeFL9D6ZD4HhbfQVb+zqEQ4xVqI56OOGeljwgMiwn1kciK3wiph0c2sMYx9jUhD7hkpcLLDBYLqoqQF/yFUGnyhRjvUAkhb/hMQnt1HjF+xD4k8i3+QKgC/yPGBfYB0Qt+QajasGejYB832Cuhr1FbfICBXsBnxPgN+1HQj5xd6dUHB+MFvRJe44hlSLzWI5Yr4rUbsQzoXo0QIff718SfM/r0MqI/vfzIcfedy9/YfNyxuT3M1b09f319wq9RjsnXOLR88XKDg9IxlwkHpoe0Gflzw+9eveBPpVXadPgDLb36jd+ZM68esavoLm1qnA785tUGp0RBrhJOSgGKJ4wr/qYuw7iwuV7nrIvbLizv0yaLIEWXaygojhQOET1OswIiSqYZRSHH1WETcExzWKDIQm0yUETCdYwjZUeD3UKhHj9MO7papC0UnQYUwLEdGxhB28nQmUBGjQ6k3Zp7LaCoR9QnCqSa35n3hOuelmbU9N3eoY7mYp1QYT3sfSPIKRghZ5TUTcjpTq/g6LEtjgLlZr1AHIcdO2zCM+wWOojVTh2CoB7RPJFHjQ5hC1V1U6xrFzmQQK/g3sImiQ5Bi+LH1E4oimAHRUOcxqSEgEWCEoGZIkiFHRzFOoENZMnHdN5CoZ5WYJAW9GNRHMlEWCQoKsGJCLUDVmcdVrAUitrQXDonrJoG6eOdx+OYwiaQgc1BFHIFhyIG1PfJkNOKzBT+pFg1aqHGEiKMUPTnE+DZcm7giyMh5WY7QoURDe1BsskMLiSTNxlIEtd2xKpTol/YRXMEWeh/kmYJ7SCh8AXs/arogMYMiuzI8abd7xw5BAERnuQKnhSM0CRozBD84mhwe18ACtTNDVDKCG/biOHMRUbgRXtiol+LJKjv4CRvkbQVCdcxcExHgfoLRKj9kRV1S4ddGY5wfBakkH0bbhtBT7PsKCYWVxBys6aSRy6sQSGLfF7OkzrnIIeVYoFqx7sUJX2xWcJhcjHNg3S4Kh5PpR9gOiIvDmzckbqjC+Ime105u8Ol6kNDK4Hsz+ZMJt5xwgJlqoW6EztiHNezE9Z2Q+j9W/aO3swQ/yTuv3CgM+p3/za9Tx+n2OuSi/IM/CTdLMchRSNb3RfskhJnLRNIX+8Z7ydCy/LijwHYz7YUEC18vCKGQ0TKE6r6Z0C50PcNUryIHQ868NAxTUJhu+jVni8HG3kG9lDlWVkAx9eOnQN3ry87GqDkkfpl3DZahCMKVg1XmKCQYrE4rEcjPEjkNrVIz1ZHN093b5TijdyGZ5y3Fbjus8oheJ0UhnyWQyjg7Q+4dAVFy50hgdsJGX8tE1noIIAiUvxyuk0aXw9HfdqnMQfJBvJLrsoH7Y6jx3eLzIoSWEj/WKCp7tyBDxKKdshiLNKKk1HQB7B+3gOKpsY/4EQQOQhKwtPb2VDSJti9v4qwQM4oRsQcCpmFTYi10GytkPzLfa17JLBqHJiJk0GqxXWf3mlBP3ihrrqhm5L8SL9A+3CSOYieeBFHR2J1PFqRg+CDnzIKguARgoNaEw82PlFUf53F4zQhcSHAj04N7D8KQUJ3BWsNefA9FHAkMEOPDty7GVCUPxYzpw5QxN8U82sfC2CBQiQQlo/QRFU9qEolYLUJ2gCfUdDO9V8AfAOcpdmkEe3O45hUmLQWcG+TRorKedCnsaGuklmkAGTpwGBBS5qMKXntgAYKdSQTlTMvk7azC7SFahCyR0fLUW1ENgEzZ/Q+wcwZnRXnnNZKZHPgyp/Yc1Y7pOxnwhu+xnt4+t1IKzpbZEeNOE5jQZ+T6c0UXuwpUg7aGBHJsrjZMUo2F6TTAOx5HG1Vi5QYDmaW3odIP3pynCadZ4fIX22noEcHXRIAP2cwZ0V99RrFfZhcHAXKBWAHFAD4UQavR9JS/0WSwhw6YG0CUCUGBVoocAFEzAF7qAiGnQBGtjSnfM5oE/6AiDXT+hRgRQksL9ScDmwesL/2oEgWU97cH/1nLw6RqiymSfVsWdH6SvNTynHRBkrtBtykW9U8MI90b0aNVV+RaX+yCFYHcYbFoh3R9ED0Gvd7243aq5o7n1+djKoKrs00kSCRkxBBb6wL+0gnF/GeZtFa+OFfR4nBysKCMjAngYHjM3Mk8KGSGREo6HwYhJppUBBFmzfigmded4Us8XDUMG4CFOVsEEd3EOzI5DhBId2hmif9h3Q1BhR1rPq6KQHP9PZj2hGu04DmAewcNEbqCbDiUiIDt6OdOd4ImuVhE6JPCQFxLcARv9EHuLBBpaWJ3hkyFJjrw4TR1VKNZ3t3xOlHDQN+OHtiuFRTt2kqIb0yEuWC6TZ0oIMEspETfA4Soilww3FGLBvbQQgEIZ72xaizVeTRcBUKYcCX8C7E1nFQrkSmIfC7klThPJ4vKcZnUyhE6sNRY7uRuef5Lml/Oe55ZSTS0YIZC5qZi5/u8euNeOvp3oYuSN192sVe+4thereYGRIzdmB14C3UxOmI4SghzglaDVwmXSyomWaKprg9gtDqci+x3t7uZtCAExzredfpNhrEDw15tNvnMA2GwUBjew+L1V1YIUPKia8qG+MU6aLQH8xaB4u4t4vTQouQ9gZ+QGZ/cQhYm/gajsKAvd9/Kn0BLcVz4h/nRO198sKPVxYawBQufhoxaU4v0t8dScBy7EAndjOCdZ8Wh35orOLodt82A+L122YAHoBpMQ0uXAGdhm6JZZLsc0RU1DhAHLxDFRN2wfRMUiLe8W4/4bRYl8kyOdnPhAWKQt3t7QTNU6TjBQRGPdHRkzjWggRJB7l2cB5WEGnz2hBxhIU+8aDC+ELecuwggVqp7uyQz55xBwn4v5cOf7kaXi6mdJFmptL00CJ/7WB1yDi6YYiuV6BNcxxR1VsbxmVEe217gUxUJlSeY6IyWc08G7wkkVYDjP3v4hJMcaBmJs5GHnBnCmxk9JEJsqeCT06GGKtuLcYAG1BbN3Yesp2qSgYYIz+hRm3j4aTvsDKxAQSH4rELQLaYZSfEfvbyjE4VFt7PGRQ4pMaq13BVX7vnTzDp0zwEBakAQTpCKLZK2UV+D2a93oaDmZo97DIwCUeTLqOhBp+imkOqCVuGk/ehf9Rq55ucKHBK6lEgdpbuMDJcVbCpoXBUUQYwmvewRU+iquxu0Vou1wruk+eizAagtKCtdmw4cTQ99b2+849bc1T13/XrmIrPFxTwQZuc+FQ5uns4b999+4U70WgIBc/XdNK9wBouzahJd6pwbKdJrrTNtgcNHvRjVurcJsRE9zaOxz+wreI4Jwlhr0EjEKesHfszb23kUgHT4hpixYqSFoGcINatYAgxU0DAuTWUHNG/G5pdpNku0S6crHipILybRuqKXU4DLPZMR1M00424Hga1aXjOheMnm6615nxwEIxF2HJjKehp8V/1C2/0Z6slMe3azPhUg+somjyy1V8hkM4XlZvhmI8TDCp8wQjeBGTncXFe6Sy5uFkcHh5KsHRU5kkNAdp+2notVCETsEp0gL2uy0jhIrLtE7fXAPZWCsWtJFic28uJ2/nLxTS24OHCKFvEtlVcFD7q+Gz/chKgxrXDhWDE5hFvpebIM0AWDj2WlT0E7SW2igMtSXIawM2FuKDyY47MTy2gsk8CTdbu7yAyWfqCF6ttSyZVvBIo+FXRNdXMiLTHEp6doFb2pxpdwGEoyldBr4gF0kPaopQ48WLRDbFAvumKUWJ/qqnXPPYR6fzctsRdr4h0fHH30sdw6mwcIlIx0Q2KyFwZQvaf/taM9DV07qJ65oqB9jUJc6GBIc82xvETQzMrNNI5qumHZISIyPm3ifdTAQ60dTLLedHqq8kyQVqSWjf3pxQPl7LZcFZak4Jch6jhIhYy+cZFtJ240B6OvvuXirNH4AJ8kDfcqBodasWRUIhsdCDHrnmA6AxzrYkrw+kdCT38Tkb12LVr+88pPosDavhWR96iCOdU4ac4PZXPTiiarqcHxQ4ijdROEYC1WjrDOnFHTAkH0mDZmZ84amXGrCOGMUeVEs9CFhGqs4J5GfG9HCCwaLS5zi7yjRa6qm+Ua5pUFxqA2IQ97xwqYLU8QONYIUfyXXMgxrebzakJasF/85f0oeBm0aIdBIqSXHIiLfXHPt0J3GU7phyXEQUnOM0RMw5FXDTUsAU9qkkCh+h4IWqQDTsXKpXSvQkLOBvO4xywgFJfayS0DfNAHz0tjq3sap7DsXl/A/J412tj8kD3bSw+Vm4zBjHINkoEsJFQZ7I9cX7YzSxcW8iWYYNv37LI1BAEQTsI7JTI8oVDdSCbDxYLZt4o5faTxcpR6MI3k+/21P3WWLGnqMuoRBQThliQh0uFu2FOsBqaylFcTEUuQFAnMOdZ+e57DAVcgANUXwhjHVVkhvicMJIwMOjDNpL6W2xndnMHyRH84vmFrNrf3kUS/vlcn9JA0aHamcP4DXkrxe2EQ6T/CUmTdH1rEMeVObr0bErCkxoKsOL55/Wo1H6b0yYZG7A6C2jMngwHh9CKMCCIjDXDGNM6TCxFXf5f7sqQgAAHfOyM5aE6glHQOGlBjQ095q3p42Kz7lbI993emrEP5rpAQ6oepzIUP0eJGWesB5KgRhTFIjeA2ykq+luboI1G4xsg5yfIyF2y3j9agT6/+UnJnranwIz0zfZogA0tpTNExZhEd+ct6fp/BKMNwTYdX0xrSn7hNdbOzc2REyajm37mIhyzDg3C9VePkOvdCQSyziEh9aI/2akF09aiiYgGaodM62TUpoRBteHyXlig/cOU6p7TuyUjXygIqWE741mGCJUIu6ADuAdSx4D96gTQCLQ8GMfxz1YO9NkinMbQeIto67rYosxRnfO6HDK3SYqDb8HshGdqREDHkcAQaAQK61pHTICwblJQQJksHgBHucf+wOY7gO1mRscBaLv9oxMDW+2nCxecdYsK9V9lpJ7CSw/jZciQMgtcjRsbGOnABZmUx2CIaXdWSQen4BKs+77g6Jf8IVNZRACK4t7iWh7iSuCgZIiflQoiXUMNdwAZhHqwQMlGnp7PYkhrPXmEQD3SWLfBy+wfz7p2JEc6WhDF/oFiH0iScGIpFtNAqU/u2jQItBHADTCyLnFkVsYujiV+C0bvjdoyQwshKRITcA6OLiTjhJnYoE2RmCaCwEdYbbDzzf0R5gs+2IELD8w3g5n8/+ebMGzD+IYATzjFqrJxbQDH6eB1Km09JQ/zUJo4tGotGwMVioZnKSC2NihWpbYop2yaIRIrXbBAuPdAWz+BKEfEkwLPmBe77j2ourc8JKYGrRA6jHuwM9QskU1RZsiopEhzFogUEp39q8hWN0hQayn1KY34ciiuG2XIbRQk31USJrw7r022IYTUoEmud2fEzbMVZ4D9DB5AzcA20Lb9PCjgjcmaJiarPfD74TNWYwt+H8M4dEEHxrM0ZihBxJMCWcq0E3u1mBZNGlMXtvL9m2aXDBQRqXqcZTtFW8yXP/hn2MRJ36rErjQ2ApYTE4S1zqZILXTaTCakl7uvzZcr0Wso6qDbR+LMAYVYBGWOz83JIELJeh0kmiTCg5C20Hg1B3aWFONEm6tEkfMkCmWY3LpbKc5lcgcqlFzvXDQgW2vHMjgFFkvC21AVg+EcGLQFwlequ0i5hts8uxfiM5W8OMTTfIELXhEdqTCtLOrnAKsbwXqYSp4fgmHnbmfF24pdri9VtoBKCZ18x3kll+utJS83OrzliQL2mskjdnQzYIpvABEUThQKmoTxqf53BJz7Ngpqw/721EwA+/MIrS/AhASqXrA0vhMfg7Cwft98TSarcacDUt807qxywySMLC2psiOSxRK5Urr/ECTaf0dlP1qk8oBR8TIeHeAwCyxdiCdxmiZhBRaEi7xDOO/KdxvYfnU2ESWjJwME8kvtY1ai3+vFSuLrCySAyCS+UOwE47aHCFhU7iJzD2dYitfc3QQFv1ld3/rIXvHtTQSsBJvUU4xM03rUJHOeI7RMixQqZP398jwlUC9RDCOVn0s6kpYtVfNLht3mLhnhoF48qxT+VY9Gxk4eJq++0ouys4ydbNdxoEwcabtfIbKkVPT3Vv1471TunnN3saoxzCCpfNPze545BaPGEpR7IVFqa4o9Q/nb1cAh7yENPoHKVydiEAT4gz+DVrOMCL1pPrtfHC+foAf38METgjj5ISZvmo/u/zcrNJ+SmH1u/nax9Gp2JObTzLvKHcUtoiUmamdquXo8LyE2SQqD2jbapD/NVFUid3Vm0fHX/Ad/KpnbIqper8WaV1Xe4jMZ6HdQRai7LQfGp3nhAkeNt70voiDGkVY12eKo6pp0UWtbbGei48LNy5RoHv1/kVKM2+NccwcoiNZ8+1HHfLuuI/kg/lAH9EWlco3w1xt+F964KiRp/HduyoC96UuTNgiIPvnrx+KBYE6CD0Ju1FgKrUcJsHeLtySWsL/IE5+vOscOTmZVwKXZndb9c62ktnpEYpHVpOPRW1os6q7dhHvBl70y3LqKP9HqOBOnYDn2ti5D/erBfa/6+K4htbpceH42fF9W+I75U09ilbMhKF5Kq3x0wEWED+Ubv7j5Md0py2tChJqHhaugu6vyxAQTYif82VI81d4vkxT8zutc8LIeJ4UpJmp9KWhjYiJ86kLrUUBJTtSiWQYfCH0KdNROkH9I05XAR4mTB8Zd61d6H0GKxmbzH0Swm/am+Xv1pUH78y/7ASM+Epmm+TPWCx+FdSpVqUlfUk0j8FLPMKOdMP1LnUvDag/jE58WQ9v3CNFEK+x/SbuCd85/YHBf+gJpIBAToeMoGF0YZWEFkwEopqZrnvJ2n+7r+v+2+Di+QqVUqgkYTyqjtQdpLpB9WUwN21OMSAM5rl23lrhjAdOsl1ouYKBWUNUWpq4N7hKGf7y+Ec1wiV/GkKBqxyZg81BXkWWUORXvevd34cx/P+P1njwDq8dP+3xNYId07NLvGIzb92ZSBMWxDnBISuK/pOM6COynwg67TdHcPZaNz7ticNui2W7RLehWZvnYy3FrxuBhF5cLPtyEcG3a4O8uGsLOuPDBaPDvGnbKWfcb+3Stqn1fqLiZmkjru/GNCyzVe+lu6f6+hXQtFqxcTm+hKPJFTf0fDSdGodjQAfWI69e/zE9PUeEYpg4dRHGqrOpO0BBeT2cbxMHHcJTrMTKwx96a4qSa/5i+8j4oQneXdBkn8iTSzZHG19LNWh8tNl1C2gKt9S6ILR4paYxoW8DhP5/kkhE1gaoZWHh+LdB5t7MYbAnAsf6R/kER5dMS6ellGtmQtAUU8fy+01F1cTC63D/udkOkjP/DP4E+ciuwOtqC3Aa2Ru78vG+kc8yf8Hf/8EGdUhD9z7dQc0I2RPKgxKMsoV7YJLnxmBPPiIjKVyuI6djOFtLwnWmhz01+3099oZSSBxzbf+uk0rkZUJLrBjyoa6Nei9ea4nFe3D7DzUUU87W12WFklYwSfanV5frihQqP6XFpDA9OJ5L/cIjpZcSnNXxpWEAzrn5H2ZnZP+yviw2po5Kz6XgGJ6DqdrX9DUNNBTDk+PLWtM2MIv/bj2VkQnkW6QQ9PS5Lhw7xvJGs6IlextNgrWshTxPrflbclahfr3790x7K9xvBdTGqsShtQU698Nz+19+535RCj8K/lxF1f3lH0rWNE8s84/cc16Tdz2ZgaN3xln/XcDSWYyzgjnwQKhOhLWubsXg9Gvkdh4pBhcXMeIM/qy0U4grqGluwoCWLjZ74PElI36IXpHEFyF6wWvvQEpiztzQpchv3uqTGBTFmmoQmBsIVZfTDjcwPqlm3IDvdrNaPH0Us9zst5GgOjROSm9AikbXiA0mqc8wR2ceCpF+wptE1PXnwL0D5ZQ5AdNbepA1IZerHp2/dlRZ4oq9f2rOmd2brzQ83TqobGTy9VS71eRdJbXOcj+DQhuI9IlgvW/bVRGfTxhT6PujXI21Cyj8u9vo47D4LwsfxWgFnOkeLQyHGbf3v47sbA2w3zFLNQvG3GF7kERiSKsgXY3WIoDFV14G1mdRpea4CSm6DkEJTPdEQPnofMmHpzXC304AO2ca2x8KEONhhNa7Rwhc4OZMFNhC7MQJ5Qbp0x0rxJSg5MIcnodXQdoUd7A/QS7x72ycsaNZJ2aLBxb7vvy35j0qPjm/pe+1osBVNwZFkaPpgELRhX6t4mc8NRLDc+WbcGm45GB5Odn8AoMXZpuI1fxztknLYV+Vj4Ng6mEADwbdKy2ykU4RgdsDg3Rj96Q6HHzPLMI7E1sVV6fyI7AAK6/FHAJcBHi1QkCJuibfmpthkt/PXdSJfTqia0rGWXuOD2P2Lc7qdT39n5e7awgo6m7YVEhei6tTWcfkEB2Lsjgjtsgqn9jFhxGI6co0NOW3RnkQ97qqECyWQ+P9svcLqMGpNVihs9+yNO482Lv/nG0ibjBkbw3BOA7/GHnD07cB4WrG7AsSPZSjkFszUV2IYOviz5VSe6v1AZYj9XLX2ZkSBtLD1xjWwYmBk4zDXpQXBiFTrF4RrSQ8p5276VizmMF509xKVpuUzQi2nhFCK2wUlWj3Du+A7qYZ0oIfWbWCmkHRthcZ7JNkE/kD04xYx89O1vjpVOjdjm8f9mPq+fL36ufUZMlhnC376z8nvgWJz1m0qE2hoy1dzW/E1kMuDXo6IMxzHp8s5HbPJa5XwhT+5bKyrYOPZvkujzngX20fnpnwDSu3aUgOsgYEXIGDqzUSGBgfin5VDbRXH9OJ8Ol+KHkiqpg3gmZauv8LXmGy3YE48f++o01+4JQJoncPZcN+uJFctHYipbLaym22XTB7UJdXr+xUmzP3S9UWQBJyYUhDf/ej+IQU1suQI8smUpLjQZUn0X9PQX03tfCgStx+/hgWZ/UuRiAmuKIDTg3yND6dYVN/T4qR3vcUInDFOSJq+sOrzZtrQPGa1nXENo1Ab8hAOoVjHNWJiThkhAu7oa9dztzN2TAWdwRSRbRB8KZYc42VpBbXQnRgciruCAPADWNo15O7XRKui11XLq2+rwCB4kzHV9bW+fC4u0TvvbKyP8c/6RZ7pKDvOj7Rk3DTiPXc3MJTSIKixPv7Eq6g8OnyJjAY8uRB/SlPYMJyDGJZYMfmoUMR93ov9mc95aeaQnoTZHp7eYBM7M55pNECE6vNp+N7pOYDs656supWBK9Bi+10Ty6CjTeMEakWhn9NulNehqAMI64mg/QTMcoLUJmV7Fp7x+QOJlf3SjUf4WPPae+fe43QB46f3C9gvV7AnG954CRd5GaaSh9fuCoIFW56mXINwNR6gTcJTOGd692gX+hpaYvVkKEZ6lP3M2GRu54l51AIjrwuZKJCE8zAPqNTrWEcXxv8ycGS9geyTOdpl/3BoeLkmrtcOZuLqHju2aY6ZeWUQo9VaH7oIhS25jGILCFz3uv7X0HTnHS6XtHNk89trAI1zAruV+WIXHMc6bGNZgI4DdZ/TwLY2eCB39lNzlY3cJnTIZBDkZQW63lYQIfEkLXJSTK0SU22FFRoo4cx9SSl93heU9ET8dt0d9G6GTiGs2L3tVElL+Kjq8Rd0LacCeFtLd9H/AbVDB7lExoC6bpSWYszafbuGflRqATo3wUbd6YqjVteDUw5Rx61E5Jgj5OWK/X3n/EeaWlVUYl8XMsVHoVl3mHE7BWn7qODRHDssFud31qgFFPkClOThrmkHKnwhgqUD304JMg6Fm6aIpYauJOns7EO8eWqHWFU6xYWHUlL0ugijD7whcNBfJpESEVv3N70m82k6f7YeKn1zdBZOnv8i6IBfu10P7aAwLm9d41jSGcO4yyhWQ/fRj8CEhKiv6wdYckm96/NAtOy5kGLo39/HHgUaECXkhHE8TWVeVbp6uAZzdoVLJh8zSULjLq/bBnfFjD3ULMp7BiTqZkvEuXpVdesyoz48OmhykbjWJMsPWT/YV3kV9cpjoZKV9W6kEPRUGFkeyVrbInhJ8vmCAPN7kMl+bLIl5JZqZlQtXIByOtppnJjfT2rWWkJkeTG8U+HS5O7tzgoD2fH2hMhI2zc3MrjqWrxcu5nmtQq4tCOwDGOq6hLUxcb0PBUUsLDOW9VrMlKa6Bv/BQiVxeVkUXcC2zGWSczQoENUZWcWKq/LKFWh9kxgTtjBmVA0aRZva2fy9dTqErxbrFpn53XMDbZr3AZ1XPWyLf7TpRUEEb7dtUguyxojJleLK3szonAd/cDeW0vfz/S0jBmaeYUu9oQrMxhUTqfrBe9Vrc1Yt/5p3HTFtNUvQ9GWBGZYtouByZTnvt/o3USgqBi3qdSs1FJG93D21B2tw4SHSbXEEO7Vj8erlmDFQguZGFOkAH2TXrBbTpHFlZVExzCyvOECWTSSKA6hSEGUewgdrB/41MwQapKantwgy1M+yVSQXWG+Gsjrxqjf/f5pRty8OPT8QYxhhTaUEw8VbYY2aSFCXEcdJvdkTRDxoTnzUVg6tQTmWm7nshRKrvg18ElQ55y7hmC7K1l/JAc8i7WHyguZVNbjlbzOHfgtMKb1D0mzddFTL+C8cQ+ao38XmHVjMCI0v1oL8AO4JY48ycMr7FqjBSZ3JLgyF0O/mOWf9guJZKXCGuoS8fKCOMPi3Ml1oKL4MtrR4FsjvN2zN6GCtM6HRzQ93h42gQWwocrlcMqstyGsoEBRiQ07GoVBaq28nBg2WpeMLFunBnsNm9xDIeVihdB8clxkOGiyiansFj97i4c19um4umE3SQ6hGfD7a9b9RVWDUOISMhIY2WMpWi6iIukBTY/Ep5thVxTNx9uZu037Lv1f7UYcdkQkPIzQAC3xRTPkSLp7v4eZrT+/6S2Wt7H2hFErvXs69tebEcflQYCLKKPk6NEr6q2+d8fdulE7ulW836zNk+Jb8vaXBZeK8jitjVYQ6J5qdJ1PX1wJbyMrSh/WZSVxKfGoaWGvrRJUnANSP7V0YjYpRoyFtWuL5/fphqJTBJLWIYIRgzXhThOvKy2ZAV++PZNHi/betb5Vgg7tQmAqTpGAHX1UUAlh/3ENXa3ImA+UJDlBwt+eL0AdcMIiRBz0LQm0U9qKJHWpo5NvkHMAc8kHqEcx2M715sYi3g0EBdaXTgiAAtcBzfqgd5MNrB0ulDUlpSHafrQLx4m1JfnH6MOxQKuoix4pmLjycl4nHQrt6dZAkgEraJc4D7NxPt040TcmOh1BDDCk02COSuzOUZhnRXJcxoaRtc49vSQY90mbzgFwUi7S9f5PR8oJb8K2oaPe64/xgHv5SBk/bI5frgvluNi/7+eFFuqlOej4DqI1usTk8jmWqNs7TIzKiex0zp3Wn/WkzojkkV3iE3mx0VRnePWzre+CHT5bGuV7HbiY24P0fAj5m0v/GcWAzcaQuAC1x0BtstcKfppMtVtQpwk4lyazsdtw01g5bnJNmhPIpd+gtDQyY5ULadSn4lioGSuBgd0MsQZqEicQe1qtnqJGDqiZK9beDLnKPgRFFzViqafJfJ0KQjyburfAsgFKt3wYN4u337JEdDOYNrdvsSDPC68nErgxgAWcwVe304iY3/rXniyNT7lzNcARmKPv6fJOQdf3zD2AK7ykHjZ3lHWip+sgLRyAtrXnaoiJmPXSfDib9i7Symi7E6rprI6H5YeQCVR1tZux5youfVH6/ImwuklPPKkWWO+RAgi71WUd5aIeeBftdwIDNl4ltydzRJqtNh0sLh0IWb2NieHzYEBiXjNqbbQrbIy8iFKsKolqRqYPHn5TxQcs0xHis4UmllssWLr7QmC2WsVFDzmsAGFnL+cclCPbCSQEiPzfORF/mNdJ0oK+uRkMNHRdtbIPXL0wi3bYMRZyFRsDBCOPUy4V1tkH+wY/Cc424ZVGQpeZkGaSNO6FyH5hWvdnlwTzhVCYQ0rN5rMnKESe3tq787RtqTsFIR/NFaCNQ5QGneVN2zMnFjZ7iBx6zW6BhbsuVsvMrWpFMAZ5E556BRGzZ7iEWYmFz+5pRgLhzr7vt8mydjjs3yJUVR+cx//woDbO6/tRW1EvRasxrv4uDrZfn4/1JZVX7N4u37W+ZFNyECkYN427nx12+SSgGLzbUs/VUHEy87emuF/NoRYzM66azvG2kuql9rN6M5xMkwyIKRm8o0GpUBZMK6yyVXmaFyVIBSHy8YSywoKzMEILeZ3p4GeSMl8AJfF6vMbOBeokS9ypoDRSdiaUutI6HOYUU1Li50GOEovFZxiHG0uxDmjRXLip0/YqBiiJhxgZSJj2kyPOLjZkHVJ7VA6CqA8Oh+MpAk7Ubw+Ui6Eg4O1zkpCr71fZQEifFRzSaIXJF/qTDsut2sMHX4gnXn2tCW9K3smEBLKn5GzGhWE1PHU8EPWWoqhUxQGC6G82RckNl9yGlMAsTOahtM6BMqVlvaYjvOkqOdbEh+uSdfCPZ71PFkafMsXj9agn0J0RRsirwai1EgJ+E7Lc2qStusNMUNDYULHFDrV0tb8QwOlQcTh7J7WqIWy4RpMsQmmJASet1b3WRI3YyIPCYJNRMz21kaHnZKUP78N+JEJWMUVvzDnRu5POlYo/vpKFNlBClhh9X0TGdXzTLW1lTilADwh2pWb4mDA4PtSDmmVwOgCTRzHqzYOizjmCe+DtqmUCXoPG72no09mI64oLXPs0N2sGwv/mozbVe6kSNwVBn3rRH1b66FaGNSEx1E4C8Tpl4b5bLBu43hiZKXStvC4L1QSyeUSuHhITrg02GdxaoOtjCQvxFApZeLY81qDz4HVazE1V3TXyTugJNo2smpftr5JkMWeMd/ktrRnIoMl2TIhK3scgxjjzTFi73lgbmg4dwtavJ5JDwt73ZuacqBo7MAQ8BPSCvH7RneCUDJoRy4e/x90M4T8DwdKFDNvkANQZFqAOtxVsRdiqkWeF/XlNIgi+StBxaIIvrQjjkJp8rthY+wCqWFq7XLhRmhzmOoLpn3OcwwZ3Uy0rmY+wcRXzlPU3xa1iTTTEfYaXtHTr3MJ/uuKf6A9IxDHdS7mkFOME2f7TdEtYnmmq6BtnoD8rX0kS2SVEvrhJTNNzshwmzw2tXNqurdDOa1/BTvtjoe0uyDLvL6D79B9X+j/YlWCOgqYprfU/UDTexVhpfDPNBgSdhZgj03ACP8YeoCerF/487EKKPezc7cSAUaipVYk9iDX296ceRwpZqXIhbRJkaqNMUZ+8o40il5m1a+5JxxCkEtOCBn7Va4h6vYa2movddA7rzTOK3ei0Zm4W+hHmKYF5fPPvWPNNtQR/RzKbrhl0tsqSC7e2/eis9qTUNpeN8g5UzL07YoZl8i3pFFzdsAHHUwtvKknl0pTxX5XZvBUZbFFjOKnS7rTl0FoQhos6xjBw7IWGY1b5BT94cHS9iJepy4uJ93jSL1Fzwvp1Iyd1lutEsSV/URz0y4j51tcwUAnpR2IYri7OSaXAPJ7ZubpBYOpcjsil9N7nfEIcAGhvBHbCGU4Ny1OJ6zFoMau7t1GoRxfAtYx7poaZXbR1B0dXPMAnqvNOnt+NzFpv9neLmLD6ba2/1C/zWU5fgDxxOs4KyYTm/b8A9OC+OKoRNOo2rZMZVbtEIzYIalyCjtOU41RL5983HuO4Mfg2U35qLU/mIo5uN6FIAhVh7ww7IggWfS70wgZXAmcdK3YN98Xt3K0MokD+II6nrKhrUYlwtv61ftXnovqEKUoEF+bT06MRDN8yB/1kBu55oKdkrIcks4qXWPpiMI6knb93RQrF4u+K6VfRV/FEg6PQ10izCKJ9nkT0KlD1Mkt1KE8vwFY6/JqbJKgnoSsQiL1vp7QvAMDHmb7PPOFwm8KvfT8qcV7bWnXss8smMXnZXZFaGzK8owFdDpXjGnz03ekdMSxyC0hY2m8tLphS6nIOrNN39uuzH2p/ykuSufGHQg9h9v3K2iGIitjvp/2PqLEqivS++5Ji5Ke/unWn7+VbenOqNyVdvDFPI/r0UnkVqgS1was5a+j2dSLi7C1KFpJMj+wU/8ELkpuvUJeIOl19Ep/+AFwAyPOE3WqmVCn4ikeLajgjKFrqHJ8h22xb47C+1rqKi/24sFncErVG4nS5M9YVnJ0t82fFmcBXExAXfnoqxDi5h/muCrG6EjxYIavvp8o2uPD5qgs3w2tF5xpw0XMHSxcCuQCYoEDLAKCSH6xsIskSLWdkMquSToL9UFsBLtjqVQpzkdK6tsefA1DvhYK7i0WlViHjU1l9RnKM/+OqVvBv7NedCZAUqsLdMriWSj7GkZXdu1oQlQJMvH+D8AhJ3D6QGSWXDpiQqpH6nTf0yA2uxYiCUNHsfDfNjVvUBcjsh/NdRH0SAyh01P5QjZZ76y/pxBPT2kUVDnzdSKsYj0GJcSW7uU3UnMTP0fiBPwvfJUcYGOXbxGFBjGk5E9rj+SGU1N21fw5pkk0b+7D2iMB7Kc5Ij9gBHM1Ymw9Eh6eQXcWxke+rwg5wId/NB68KKN7XHKrMykogMHvXyytYNybgTMPt02iyhfd6xm6vPP/r89SjWS0+3Ogg8YJ8mjb6bqpX+PAmwE6Y3LGp2dBAYSMKxf4WOTA4789KnQT6royDDp5daHnyIIpVFHy6IEslgUTKoPTiLvc6uCv0Jo/LW6H4wEXJvfkonosBGxVusNzbZ0aFEb67b0oyiqCJias2FBpYkWUKAZ/pnmawDf0H76zUIgJmEkiN6+T3ELwDeDYEVIii6H9bKGxptCCcQINdFlpe3U4d1GwzNKxBegGoBFM0dlm6w8gkDi9VppxT6rA0L9jrZG2HAplYlxtBsYIxiRA7YYtQ8ADGrpDLi8gEVgUBbv0btjcB76nNgAHqlgOmr7xQgELKD/nGh1ab8WNwcCBNCrCtiyeWxQkWtkaDGzcJWbta4LFnrLHvEkE3CH119OQrwMc+r95q8Oa1lOdS/ba+P1gIJEsAn+cSxcAtrQFBRPJEFYkot0KimsdeWjAL8DppVX997Gi9S0GbH5TmoQ1hxxzqZFAyVozZAEqtHb71jdn82PAIrJ08fowfemxej/IoJEmCAUHG6EREyiGHkQK+Bq+g7oqiIBC2FvsZlAuPINv4eAu8HOmqq7cNj2le9zQIMVWgwrIFYDsuBw8ln21Xx/Ha2O1vAMB/OXLseX+hMxkEkTDvn2HIqAKDWVO6orI4RbabqXyT2MoymHjaHgRla8HCAJBc5lufvnqjhJQW6ttfIWkAv4bA/eR8uhoJiGiTkhmk0wDpGC8F4qim08nTizSjmVdogGCTTLmT02LuYRDTcYq01KvdTXbKILBC7EfiEH7s5J3Xo6noOKW9gUmMI/v3aaZlAAPCmnP+maco+L0SSp1vNTPee6iP1K8DWcRFxjsNpiNobZR7/w5dUfn5ktR7WaSMjQ3a3p9No4tUnCxuaB1zJAqsSxZabbFqnvZspiAt+z7rOp4nixzHKgLKcHXjnWEEGCggkKzzNOmZbXea6jZSolRqZh8GY8M0HTNLPETyxQUL/phxNAnrt7IuFu+wIVpF6bDkX7EN1olFxf0I7muqRUNxByAx1YlL+lwd7AgogG6qyhSBiCLEFVWC03egEJRWhm8rhRHrKqfQ/B4Sv+d3+XxCPI/83X0BJ3DKhxNkV48p2pKA8ltag/x/dd1sQWpFYhNEbjU2U6kOICPZAhz1ISKZULBkgG3RfOOBVzzsUWsOhEg/iOrVK2/KYu7LDsTr+4AF9BckhTGlOc8/xfpiSyTesBojMy8odz+03h1gNswp6rtta75lY9p0S3UB0orpVNDopR8oTLJl8hRAK2ZLrYQKgAmmbvsrQchq2ZvhzdEDRQ4yZSFwTPAsZ8Q/z6r9UKr2Khv8pkUuOSoxFYEyU610YIv7OwdG/IV524k2g8GUtY+WaeT2qBcUvediMSOuYT1GpvDUFcKL3PRmc/dZsc0PxGXI9mFbGMm3gjht4FEdCgFfvksgpFRiono8/jytqiuBQS00lqruTQZ1quPP9yd14T6CcpCVx9GxXoegqu6hLYdIdDyMQVMvJhpgtpHgSSmK/LFw35fKHN0M52aDAmfKW8LjhXPaw0xiH+zX91tTkGHvy/XG7Bk7tMdwJdWGYVODtX9hFHjG7qqDwm3vbe+YoHjwuwoTPWDDhDHkRkTfZsMqjfAJtCCuSOmRylipd+Y2tI5EpoplO/E9tsAYqMuTMdfAxulNKXJ3k+O9GCqLIWqMWBuJwXHGddWIkP09W7CgZluLJMghMASvVFhLWJZyFptZl+j7UeieY9tWsBRqrfs2DIgCogHgSixKX4n5pZG6P0JLfANQUcx6AQRQJtH3jmkBByIr1Glk656nRmo3ElUxYeo6aCKksyzOEXC0m67TxoTbwA3nzrzuUXt5lIlyae/RktvDiUA2w+I/iNqcqV76NCsbnlE+uEPtbg/E05rMPka7WFCDCcO66RH/g5nDlKD2sIHE6gak3qLFD2aKqIGqFNRgQIGY8GNPfz4kijzn7YV40gq0h2dARTvDxo/86Tm7ECnE4puM5filRT/EprX8Nv7ZwYlRGwpDTKZp8ibfjIYpJteQ56pIJt2Mu+UvN73B+MhpaRWb2qQQm2qWomRZ3g1aXQdB4DyveVCa7pKkx+7gZ5t7s/fBLTHdb2iRQUqyUtB6eyeJNqEaeI7QE3xjZ7+4sPU7wr5XZ+m+86SorObiDnPw208c626f57+cvxTIMFsIIKe34xjmawjTHqbafFPhWAEs8PlESKDW2HxRaYHt3e11dawvI9S73lSbV7z3IyvfG+SQvMw/+dDYZiQKnPjUOINtxvbpGoT8OGSTO6JhdwCCNJd479lwWOR0TX1CQ4lNzrE8bh60pGl4135T72Ome40AEfUwQtLyz8DCAuOafDG6ea2HMvz3V91wPnW1b3ll08tSYAdWPuS/y+9nC4qKsCj5Y9GuBHlHHvuZn0uPDTPDu+DJT1pqHvVwYsDuvNuEAj7wz1oOZSv56NR6msS2LqUwjH2ncOGODEB8cCwyAlw7QYNshzW4K5zFZd1kPEAATSYIbRHQrpcO1hEW6wSIPcI2uolIezHWvd83pRN1zndjzPjQTkcl3G2vp4K97nnpUhl7Fy3X0k1nsANwnOZSwEqW636OnZXfzU1bYd+bYeOKN4633pmSBCUq4OLWw3FxZDdzDvtPI4BySLACUd27Y9rdFtdvgDITP4yIO+YVRiev29o9n4gR3gu1ar3yLGW0Sax2mrG+9EDL49Sb5QJESquRIMeC6MoKaoO9khvFelE/32y9wEck1Fo+J8Om/T7OgchzAuWHbatGIE1UJmkaOyX25/BAlm2/6H7vixABSmD07C8SIN3T2eKa6LgVRMLVPBeCpDfIITA51v0dp08lerDHUnAzhgQENdecGyxKAgxIKSrujE50OMP1RzbAMfI6KU/hkYlcrGX+gQXkWiP4Xl53DpTf8hq50cq52xbWlp24vbcQ+pRo6AW5GaV4fR5g2fON7jNtgkV/qOEQnJLhVsGYwQzZIQfhvYAvjiRyK2JRLDNC/bnMQIhOPCMUUym25prvXBwHxUYZQRWSpHgSd7HETUI7BWupn2IMzCIWCL1dfLyQ2+4FxJoHFCfZISBXko61pmHC80zEjWOBtjFd8BRjrGugE3Eo2TGccfqcp8q2nV2MnrNW4TJbxpSPtDoCCplEo9ySsW+8MgcO8zTUlPa3KzFtxiTR7ohJhG4oTyUxspkNTw2zW2bipVKQdQjsmDiC5tOkGSBz9QJL8v1EybiBr2zEuoC2JMRssMljrDk511BmhY6khjT+g6+Z39ySR8SLNlArlvIIQ4p7d1irOC76deOLKqYgZ3GkQFYAEwuLSj0HSfenZd/L579BP1YufKYMpOEhB2XW+6S9hzjS2sKEZpynTatoW5FgnDyLIBfV2VfYoSYEIPM6gIs+eTF2UlvtQ0tl/dSEaphwo3mFyhBfPrtx6fHPi2l24br805R/WHwjMDfa1KAWujIr+uTTzpBYi2HEdt+Z9Hl9MYgjy73/0n3Xv5gumY304NiP1UiSjqdfQvSOe7LV46j9+fncHD4suUKIJxPvv0ja6v2aKuptyTds9jcHmT7SYysuZ+IYop+TsMKy86DESqkM8HxBHTAJRG2k/tCyCDrele3rMMVQrMKwj59oG7un/RWeArANVxN/wx7CGwqHj0sSXNSH3xbLGBF2sZD/xH3jqyrtf00mCjO/i8zkZkSx1pHFDxupBfkdBvPWkWBgCvv3XAePiwPtMtL0BByNrK3ViheVze6/io0RRWVWyYqzLcPAbdRIM2Odgmjuy8VdppPHtPtEpqDmQbSceShZjTyARgFrJeT3fbyh7bF4ddpcGBl9savCS/MNMrG4topmWv/3QlyyvywVcO+pJ1k+G7NCqVjblK6w43BRBbRYnQ1GulLe3A9Nbb6Euht86KBdhqmpvqADGuHtNjaHrG1FT5RhDTWmekUnhGnL7vvz/VuRlqboysEOmzqd3ki7rEi8gri/mWTqgd02DBrjexrdv0/eq56WfRiW+sq+mmBjBOZCcM4NP9bDjS5gkPKR6a28qoea8HYhNDJfqWKLc3fx6JC33pDUFRK8WP0aEZba/k4WctryDCWzdapwGejBXJUN8+btDhoU28gCzaMClnsN0yjRG8+Ye9SbIjbppETcdqxbibktliYu9CaXnEQrgcKm13TDhbI+n/pOg/VEYWjkaSj0q7UiWwjFCsb05130O5Co5w6MImJ9e2l2ukFCC2cUZ+pOJUhGxPmpaOABu+hmwEq4NJBg0HQGEb32hOi72VrzQ94vaVrOfmFzZGygTcEzv5sfBKs7K4NKKyiAcwQ30TGvXGosvah+ICa7TSS8bXxELbGBfpXbSPJywfjLzrccg38xfAfF6pKQBJFAfAIzRbBdxj0eq0CpFtCwxLpmSY6uPwqwi9IIMYwBDfjfUWbLVBilYPEg/mL6djJ1l4aguDz42UjgzhGvBnhoWDGvHCKbQVwYSWsH2mSazoDt4VLoVWHpDChGD4Tf30BTnBTQNferAO+ZhzfHaT6R9ahaog22CZXblfLE0FzoO1NqZJK/pOLth5yEeS9AR+U5dz/MUyZwvaAtPquEeMdWlT7HIsfMMVSSaT3XvKxP+EMx/KGlPjiBVqoF1CyYB3FbCZd6gI8p9BGHewFGovd1rPyMnZrmKQtZVdV141/MMeeKq9uU4Cs8Zyc7/9OBmdX4jVyxyoPWO5xMZLX1ZGImB8uLBRfx4Gxy2IqLeFxj+uSy1vcOT37kwuFnSaKBAXExgoV6r55aIC1ujOZHxiA4y36TN95ydaXWM3qeGrxLrFioF8hDClYmxMAZQuwjemL5zkTlfNJtHtV2GMEqnMYm1actepyqdx57OF2k9U7QmowzwoDj0VtWsLo6AhJ1jhlSRj8VO2a7i2s2MQUACdvRldIwSUZrfM6LQPaAxgYEixEHhvcoM1U0UoNJ2QE9sug40O4zWxY1ab+gyOqiD3r4xzEInPTLQMTz1M9d0GYtp38OD8HUkBgI5t4ozsNygToPzRRDe7oj0KpB0aLz7TeRDtsLUW3Qlu6bOcVbm16HUNDyxaTZDwNU46Mxb2h/aVfITsZu9pFmc1ueR2VIUJ0y3ANR5unaWJHnfYwLqSoXzq8lL8adqKDddglztPR9Q5JhRbHPdY3mSpiXq95DFvI8nIDZOq3BHPzHWLD7XJMXMqa3lVmdYCkFrIF1WbmnW+jPtw8p1puTl7Y590ey8IntRGrBcAGknuZQy/kCPdpmhU3fJ+uX95b+lLfUb06bMZUrbtIJx4dtYAfYhhvWvCjxtAwJtlXmuzYaV69++77fRMrT9dfvTO5utCHk9iod1eZ76MOwJrGES2KazlgNIsZDs29EKgL09q779xD4wgxYhkVr7NLQs2y0PSzH4I9R8bPut3AzoGCcIrShgnMdgnAsvzYQbs3f5sultRqU53MCm8vCXG6ZVEaIg75WG8rhtvIehtXDB0QAkPQZckEX6Thgq6nNRSw21R6nQCCWy4h1WUjKzwnppYcbChcdJva58ec7mCWiAO6HnEmPjUmYDrt2dDsWll9dUi1TyHi5Zpymcx/e9nOhvQ5OLobeH+fTl56y1ZIRCkPpEQL5impXVbx5Ykjg3ZTF6ItkKF9y+d9AcN5G8o2cLJBbUY9Nff1NRZvX4dvIB5RgLg71aRIeEgoapcKIh+8pDvDTDjnS04KLFAehRblnBeHdGrqd1wvpdSWz5qTn2ERdjTO40PI92ppP2ME0uHvBN0GJIseVYPyDtXUQqcSma5h6bjwak7nSCGs9A7fm3zQN9eQ51rfGak4ZPk3NTLaQgt5YQFMfyxuieSpL0aFA3ifuACUxdf2wFpwbYuCVfNRclTbSXojOAhqBg7i+FiWhki91OcP9+6uhsjiqIu8/yRJxQso72gpB9sqf58GEk8X1vn9ZOmSRND06GOM+SH+bAV102HH1Gk0eD57AEXYTMAI7yqzmYzcpPAjhpyAKfj/G3PrAX5idkx7+zeK5sMYsZr8w2eC/wMzm8gtRD2X7C/PIMnyHbsx/AX7S4776ZDMDbYm7cdTdji6FLk1oTwSzot1Pz0TMdILbv2FqbLgXoh/T3Q9YbWzwQumJiDOXu9EVzrtnt7Jv0y3cwYn7cuqutp7Gl24E27t2gBvnV9/3+Sb/bAL0WeVW/FQa1icjQSv9dJY9ccTJRb+pZJs2Aq9HwXt3XTQ4EHh+cRGh1pLckjC3nZsIXhq9T0cS7e+GLmGuDWOrxFGNCLX88NeAtdvU4U9Ylv9Awt2m4BlzocnLcRlDluzM/otHQZ612E4VkwIbDusRzBjoi98JRqN6aqzmZClMKoW/TZhKSb+VCevSCqraKlwMtlXF5YgLP7IA03RDjBpce4sqvtBVqxTU26E5SHhYENXBL1c/h7ViQmOHpf0DSMS6pBLU21Ta0f8VMCVbFg+zZYwTjx7GnBMVkTBscOXb3jOwZkkkINtebgXwUldYxWT6bdkHGKPtY6gsk4wLkqkM31+yxslD4f4wWa+vocer1LOw5zNF9ihLVDdL9dOSu4T2cVMWOnr8mkGHgwDfALhgBw60a1cuhVkNMgl74NfwS6H4egkR1VwwklKZKjFDbCOvlnjiDlQInRSvycrj0A5tTIpRlhnXvZRWZSleT8+DzVnpsk4hvijl2qHwhGnC2fbRVdkl4V6w83BepqLUzmsaUcKRwj2fNNw3U3vBMgpKevFIOi3pxzC9Zf0SdqSLivDMF7ly36QHKOWRbCNrBCkStkWCxQXurxc/dnTBW/OUTBCqTU2lxJdLiMBIgXnBIog9rIsBzQ2SZ0Snm4vHpDieiTfKewTBheo3HTfoKA30txZ3EZ6UoktEHoyU9z7Ew4OnEKgzGnVXOMlyXvp9QBRsTbQZEvMxcpBjqrzDuJrzkvyzxwt1rrUBEhzvdcpy7etS29SKs7HwrVxAdNtAJeqbVXF4EF0rkVt/5sdnbMadd5daRynC75CthQti9kRHsOtxL0ZdVlcmPoqC+wLgOvVQE15LeG/FxNg4Fr6V60JLqn2q+KLeQrCzLtV5XVrR+A2tJrTXX6+lObAsg7JCHBZBmSbSY0nryqqMgZ0epLcAHH6BCIbHUJHdPWxpbsdE/LYGHGj+Da2in2CDAo9YEuH0+axeM67wDe8pYgLp2ESj6KzH3so7f1sY3FzfKmiBGPmYh+3Vt1v/QwIUjfXv0H58wxMdCcfxje/yckqx0y3og8faGRieBRk2lDJI8ix3e7IYbitWzcvYNL3WSf8TbaP2yowToj12ovNzZEMKJnZMeMsc6EH1Um3t5WeczREkSU0V+zYunaRktgTguJ2L8CGVHjdNxbmcqlaNebK4EoFJbj10WiwK66vPGYZ86J76VaLXAECVCB7pqyfUjCYNXcbGvb584wd/n1aekUEUtVYRlfSPvptQME6NF6F4OaV9vO3TVoKhZyxZFmjzDup+aAYFvSAEIU47EJGOhZjqL3aNvsvpcMHeFJvhiZGoB1Zch94VTnIEZnkH01ZlNq9AJBONAmYlbaR6NYtJlyQVQUXVjd8Wh2pVahgrmpXATTMxDIVoqMTcDJqb0PnigezmmTrnbFWnGSmRU6UNbUbkdDmhgcxiYdW90TgxeVWOWEZSfeiwMutNPYzRIWoY3r3Fx3YXhxmhxs0fKKAi2yb+JjpmPMgNQokqvGFIfUtVmWCRVgaXQ5SbosBawkAWFWdIyMIsZmPA2nqTMikF6GT6ZtQyKCf7FbtQVVYMtVBAtI5bQVuMRDKqy2b1kB6HIwyp6PdaCLzRLGOk3p4SWUysHmkKuGsaLq27bZMLV0890G6XeqEQF20Wq2ZYJYS5AW+LfR/pWn5MOTbIUyOldel1zKFR8Zu8UB158is+Sf0MP7kBBV0NIwPl4O51jyenOaiZW1dBbOrtYNVhOIcxtwKUZ1tZU2hCg3uqifqoGiTGndqxSd1UEvb5/K6z7AXqUpeXFOOfRwUU2XlYiBlRTMBepNwepliv4LmWg7uugR3KFHtWHNu6l8iQ3lCMPVTM08o3jC3XQd0tpMKrB7EXzLZ3Hiqp0o7axN33zMzi1j8pq38U0ceAKaXrVRVXOkI+lwZWJ8eq1YENwuf4Aw8XzgZIHswjdKPbFZaNL7RxYgCBuWrC/SLUWvHh+FLeBKElGLA3/23fDU3dml/8faLCZcMTsmhO3pUxAVjtoG6JoujUROTqVaXE20Zq+YN8phz2Bw+6b9HLCujaekvFqg5dc/2DmAMONBkTZZjXaGoXk9nuKrEfl+p61LJ1/pHjExdaNe0yHaoJLgvlVA/sVm1/q8dzKhKcWsSuGoCgGrr1aLg7frto3vUX8tEMDfdPUmZIWEd5mt/4W+n2uO7mYzWr2vpeKJmUc4o3IxwSB94rbMoNUNF5fIiYmF5QVFpTJUQOVuyS6HFa1YcZ4V4RmLpp2jHa2PoQEuzbJ8ljr50bylh6jh0a7vsaic6xbFBreZuU9aKvem5pW/DysOUM2/nq83z1IDFcoWWQjWzlp3DWTDP4t5ECDa7G6+UdgxzxMFctO5g2GbXvejLjcMpCguoTps082mhyJFsg1gQnm173J7AEyFqCw7eveeTmUyKH9Q+SpZMsnbQyklZGUiRLkSydjKWTsfQykV4m1D0K/mDwju2r/0F7TzADAzFCM+V1Y4vFdq2TFwtEJ8FRbkqG8E97vKRTucCqc04m0TeBp/E/ego8nCwEQ+5st+BZ6EYHDe9FtcArO/PrP5Nc0ukkmok+Hx+inzMTH+m44940PR9tN5z8pj5dh/bbnJhBzbMdBf0M8CCjKK7C2Ft6cqORIjtHEHiL4rKGsCOOXvhnSzr1NQXWawSp+k0QvgmYkUhMMo75SRSluw+XWWEvevPZ9FEflg4OKzMi7IPNgPBRmKsKG8iFHmGD2hKMgkAol3BR9xQhQd4UC4VYhXekE2+/84oEKG74gMpfllbV0Mn+jkpayxp1zVvjUvP6fcP3vchaTg+zZUQtv7HkKJAJaN4IxqrIU+WCGBegf+a79xvxKn2QFLqobkvdo4ftQnrJSfb0IVGNWr5Rg1Arzv02dU1k0PyN0sDuSf7eG7nVjf8PZhn9V64aOg3o/OUSMcAJEuAS+gMMmsB92C6kF5nGrychi1psrXOdhLAU5ip4GfEeHKgo0kDQrq9GydBiIdALWu8yv1M3B7lcz3KHnHQogUAoKb5g429Ek7RKJmub059O+28zBkAUnvG0YvzG2Pp9onBKcf3k8ykNFBx8S7DpiZUQSvMQqk/LQ8a1UxmUUAtDUZCacQccUP09oMMc/KC7YweUjMkE5Zwoze4SV7gPhdnrsPnb22mfJgqOn/HDY8WZ3qi6HYA0bUsxy3kNRZsb2oq5xqB7tXyxnm6pkg1mHzbAzVeVuec8cIWlN1ADsP1rc1K/CatOVgdh1kJ2J7SYVhLT6QbgDnLT0Hsa2HmgbX6DC8wK6nTy6/aGB+31+HDz03l5LhRQUNIJyPQSfdSIllpJPcEXiM11e+p41q0QkeX6w4Ys+tz5D6Q+P/q7jBFtreFgAkiznTW9WPuWGdrKscIjxB6JZGTzecd4g3MFN2iuHN899R8wlgk2ADpkaWPb9+KMITzRvztDUdlPEExcWDE3TcAF1wB3a6fb30bp1YVq5lEsYoka2GFU/dBnD9J8mpGqMrcSI7wA7LxKoPNOp/3+xvU1zmifsmgJi2SGW4luZle/gh8dNLVIoYktoLBpQtDHU5bLi6UpCS6ky5fIy5g6GhzvKYyTYX+ZVE5MCQPo5FJ9J1Bk0hIzSi+uFwqci1uJVo+q0+m3UX+ZimVjkgQdaq4vpmaiRUqCpTgpakacgJEihK05AgwJ4J3yVMeyPy5uCdfP5xQPLWDZW/8iylSSNaOXO4Ojc2eOX0hTeq1NRrDrlQoAO/IFfR66VN5idHJeW8+uoO6uS2DcylTz7gMvLEvOEkseAJICauTDmtp9/kTzfSVF+n/eUvhTMbLfumbKNDI1txKX2XEPCZOa3sb8fmtduQzEjw7DzOLCBU8EpUW835rgXl3arQYV/WqJlcQprTPlYmFAZn5w5ggeMxfwDYxluu33J+UP6hbtw20Quqxt+vhusSoyncnF8msI97byUeam0OG9G9ceWsLMnugxXF30ePG762/TO7cDsZ7Iib7ZWeWWNg/6O/5dMFURuyXpPhgiMOIWwToy+jgE+muREKBdOpz3qYn/gsFCLbbXghvn8XxS0uM93tSPy/QVG5OpxQLCqtToCIaVrT5V3Dq2/w42zsH3Yto17J0ug59t//NqnuKFuzZE1N05kNeA3qU2YNAXQb00ow6M3XD3iqlDWqxvOmUz4q+pRZq78GOS0Bh4L6b9azHtHZS6uMhJ7rnYe1V4MrrHuvNjKpKJ4WXTfSa/WzRNu2r6fRM86ddgFm+TPVqZ7lNh0M7ohj5pcZQOH7XwDiTQdxCuQbdCNwWlk4QiaENFS9VhksVjn1kLntrGkFmtfpPK4HRcnVzfIDzQ2NAG8RaZGa0PuPGEC17UGNOMGtUZd5g518QzcQQDd7xD7xN6nvDP4I/S53waG8tqcBCvlfUBNB62q/a8vdtV1NVvlgUC0Mmd7zYymIqKVjRnh+uLn4Tj0eITwoADu6b2gvDsrlg8+aKJF/zj/sec4dWlj+y9vCrG6knHD5Kf8dJFMqScSh3dh0xeSVVeMRTzgm2E8m6UStBJxUFrTT6wv2sDNS/ztCv48yb8MBqj/Jbex+ek/txZOtM7QMWdtXIOqJ6a2pOvC4yxJeXHBSuQnV4GWZ5fN4GKF9ur2Uxi0l+4d6SLjZ/vbbokqzA2Jin8u4xGK68Y/37sHphX2qKF0jQaWs8/2ticnz25aBwsUKch2NWe80r4+bIWeqV2xCtdoD59Vcda5Ke1I3Ihxn7gc9L48+a9IM7QF2ZyK1A155FTjfQNDrxDGcotOjve8DX23CN7RmfFLW9rDtMRNZKMASNH9D7hyCd84qdRZ9qvflZtTaZm7qaTdGg85E26210nraQZm2aR+o7FF8Z+hJuxrzruRZ4QBsyZ9kJFj7DmiQshvq7t/NTdluGNU8c/5Mnocm+t95JajAPtsew22MXDa1W6o1gB/dkZzxXzzSXeGAjBSNdk2pexLa2qLzjVYQfO1+eKyEITztNPJY0EiaPppFSBjHq2Pm5VJYhutcEoEYaKPD2nyEpwXEBrMRjm14q3KxrYzzvQywsodz9xlqxrek+Z1j4jIXew42wUiVju+3Pw/STy9VgFAvUJmEVvN74sAVNtnW9NB+mP/uilF6hPwCx66aWXXsBe9EIw9AJm0UsvvfRyBOTKlmXTLO7TC3hWBXhWBXhOBLgNueQo1kxubRrn7/OlFV/ay43oVqmS8NMibZbDIP4BgYdsYEAhxWnTX/Hf+00YB+xofh3MePg4wLF9qy8auHCWIDbDDzOuOmYczJ89C1PdC56ugpt22H/ryVsyih36Vqs4vhNpHv/Ayhh1m/CclIl2fQtp+gd67Jqut3jHd2h9wDOfMAzD8KKxoXLExAnFCxor7v0ekS5cbbuewk9CLTGjztUTNB52rOP917u9M0d045lDY0dUjg1OsWEbN7dTynTkIJwQNFdzzyJIMIZu4pp5Cq+/pGL8+L6R0eiUBn3GIKnuusPN9KRBcgNMpEBjYmuO7wvMmBcomvu6mHHngoZGGjLLg+2r+fbMk3nQOM5pbx5GYNE4UdnZ8XKPELm53ycMuXjI/1ika9J2QiiSBRnAYfJ6bV+XEc3khkdFa1gyVsIEuabSBZF72LNi1z4xl/iCgqFHQhTLTBKnYT5HRixtuD1vYxXQTmc2jPoS3NKUBxtPoGd8Z2zCTnbMFkMNLWJzaO2AQczuUFyaEDmfUm8Rb7lOFNmemLRMWhYP7Rkg4/NQUGtkQWuoymzNjMoeRgyxOkM4LQ7tXJlPzgtlBZTUyXFRHNt5MSU/F6d2/pqB34qLdu7MzAfUoR3MYapoBGT2pALX84RpFG4uxNjUiTY41zTWYf19jgQy3OEtR8WBsy/hLFWoi6m++qLdBCFGIEtgupEX4rGLUOnL3KgcuGpnDumU1vnQgPgC5FVvUVhqtM+oxIEHLHbosjS95myaVP6ssWSr6jzzsu5hBA4hp3mTNHXEiuMBc1Jc7EmUW0pcprxlqbIdgJMcpqc9pWGqHOQjHwTlOe0yhw4ISYH2Dft3RnL7Yft0mGKGczBg9CqXCwFfxmN92df9DcZK7qblD5LaAHGT551AsCO5ikBmKZ2FlOtqKHLY0wkXVX0F41vZbRmUFo5jsmVT4w6wB32DC4HSJSlEi4oJAHaQhxSHdq7MJxeFsgJK6uT4uTi282JKfitO7fw1Ax+Ki3buzIy9yVBBKrpy+Cib4hoZSStvjfSzAEthK/J862Kx7VPV7lM9qSfQWkv+GR13Jn7OULWNVhxL5HITQr0vhNngSfDCUgOGICsRxAJqQ1AHeouBbUX10AszZ0ze936zR3Sj2fA8TYszKMEtqSSFxQnSQYAHgT9XaTx1V8wIiRYrPacEs1plexFQ/Y+7D8wKsxEkUaej6Pj+c7L6VDp9kz6/4BVkCwvyD9Mtwx0cd88Wd4ItWytrEX49SZrY94/AmbdE0sJLbNbonBqVN+qNtczq7lPeHbcLGjHzADkDuhGjxHd0XVKA6NvLUA1QG3lOe94V5mAqY4ybM2Mv0lpVQFmCrcapuL6Kp08BnUxES1PM84JqCCJs1RSishk/ksF0qgtzuhQH4N/4W7sJlu33rc2Rjae0cRpld3FT978zgkXwhRODXr8s1kpok+bA0Cpng5KgqrNUYlT+aCXBRQay2y+3iiCnmNLfPLX8ANlGROhbzkBMZqp+L92oZQzi+dX1IZY0+9RVRdJ4yjJFuEgPsmqhKevRDL8QUqANDznxSV0qfA8BCAQhA/iQYxSHcSha7WTyqqEX8EDBDgTVyWeL2icSbtwgx7KQNjZynxNpyOiY80azL3hpB0UQs03uv0GcSmu9KvJisg64UFH0jJR+zgBHzqsBhVnb1RTOK7sZXvNWzl01KeoTFgJVrIWuG8ECESRvhsB8K9KSjQbzg5LLdPXDbdyEeWJTnaqTjDnpSXVg1ddNHZSAcz/M0MrVUnyvSayu2LxpEtr7wjYD0Q5bvUOBjS331HQP0BerRwVgtsFcGS0t7nmmAHwNcy/YCZ4COqCex1lJihg+sZeVoUcXGhHvU61FnYGPW3dNXTbZdMCv6sQ4aUaRD/cDEZCBeYzofB6NmFwKVSz0wb5T6FDoomA3h1H9ZYpJg9EuMKFMsX2X+I8dKT90PgSmFZGoGxG+g6aKymx9fCGoLKaRAzH9zKBerOGC1KOsp1Nf6ndhxuPlpVxYrc+2wBncdZXmbiQmPQWce4FMiqAJLfxsrR1bqsBlx+2CLLF0/LBNwX4odmsFzd6c6eAopL4nTHFBwdAtS19uwxK+5hMHxeDXkVQXRnmQ8Cil6UjAK9xcGUkovo5HnUrVMwbzvjdZEBjXlIlSO1fZysuAV4scwO2DQGQsX9GDOwPbXnqxJtEQq0q2GTICotXRTCuewo3JMuKwaFDJcSG92sSHHG9HDviApDotu6Ru3zlTyZlEyFn7ZKW1tc3Cy89ob5BIFdafLAGxaNF9RCxYavJFd0Ewi8hpgcCE9oWpC2VitnD0YeUt2celrNhZI3TevPFgA2PmMlGJBREWQYqRe1xkHnXweyhxEUjs7R4KXIikgbG8HEoXpbHi0mVHDuwhUSJLQy5MhsA+TaDV/QVaXHLUwntilCQO1vRb+XBy9dmhJWq/gUbigL0AhG8Pb95+bXBLYgqypi3Cg1FnxEKTNl2NgBb8n/61SyYH7EQYnM7mNhbT/WSqMUWYmgErox2GvR60+GpWV69zneWOVXsUSApnr0qN3VIrin8qT97LSY9OK0WBBxSwuGU0//BTqufjHGsAOwJ8IsqrdhCjj4djdctlpCCU8Twn2u9nWuBwSb8xxdYFRm5Ll6unodOt2BorTUIqc1yoOd51vxMZ/WeeBqm9mtfiOf94qOrd+xH6FgeikZNOtSFXsVDl5xJ+He7angXNf7v+13RL8fPI9XJUvf/JZ6/Jku6TXve8J5flam+R/x6u6nIraBLdjDJjO7PMSlwFCMyIrxcyI80KBPgknv+MiJATqHLIggzPfby4SMqas8hExTo/xUD55XY/gWxARE9TnJEkNPVeK7O0xHWCBMdPPwDKLv/ti8YBpxst/v2+jNjetfa4+u/f0/tNfz+oOPz+Fj63Mv9zdHX6v9qTs3jPFXnGIDLnNFM2ZJo/t9ytsKVfjK5GxAsORVIU27yzz2Dj9duShl+koNneQhnp0X6WruzCsfYemdWkiS4m3MPCWInTLiAeclBiEQOFfPp0O8KFO+9GuAZf3hpKgE1yWqhgtMH0YyUFy4BTE5ivP2RK7GdNMQBKSRNaVNkf0YP3BoW5aJFGz8FsC/MYbHBYQD0ae4GhaNYPSLcGExd1oZH80raauqOjuLAubp/kMCv8CYCCl3eiMFRYDblamPqol0C57ybDiAzQ3/aAm7+hMNFs3eIYqYjN2HlORWu0PvJZYf1eoID98XShe6AkPADn4NRXw3n6qPR5qsimqcdhuFhNl2tTwiRcvtkqiBgFl6obDFJCGTwzV2PziATab3rKx9a/JzY1PVL9G0qa9rulYwALqz3YXVlA3gozcYWP9YLSkTRMiMZDx0dt8LJhYsF5pMBBNhILJ9vBXgKVoyheRYKXWOrd9dQG+P7pQ2bRxB4ephvE54jtcw4VKyenaq1AsWeJOqaokhZnkMw49AJb/yKqJn65w4KQ7bmaBEmimDwgiJXBLtUiQeSlgo6u9UmfCXaJPBte1nupEE7FdaAYpflmgaED/fEbRCTPSNy7siqchC9mDHGakKqVp6vhkqG9V/Uq9ayTBe2qaMzM9054EzQA6qszpNd93eGN2zKit7RKtLkkEF5NmXy403DTQju//AVATcxoO6UdDheQtA6zmzDXHlpjs9G7Y0JaNzuyQkBmjKFsi+JS9049EpfEPo4pNNNTqfAPK1Cky+nsGqv2NxP7UWCLuAjgg90BvQA7RaJWRXuCx5ocJReCtIhurSZniQHsI1zWalB6FSRIYB+QcPLWxVIEcJ9F8S0Hn212wVrw+E3KFslIhN0v2cCmGqN2vpJQTh1fFn9+hcnCcG3ThMNFIv/WtHLcf+qhJ7Wm/3esWZKknQK0WTlLD+yQtppplzYOWF1ubvYlsiJdWSfnx2BrDX+vwxATLmJrn5QL0aCX/zUiqwhlIyAaH2v6YXCclxnQhhgv4gSOYQabcAbdoaygU+UwHlJYmDxYcoiFySMQptjS7/hcKKhEZGwNQHguOAfUlgvudSZS2K3LFjlOf4ISoBC8jLHzxYu6ZnTJ8nzbBDxB8eCB3HJnfipl0cO0vF/fbADGjJqQmsr/KbgZvISvb+aRVqe1BKI/ZuW+VZ9RR15yYp+MlfbuNm/LFjufRM0CCelnRKaXS16YYEgT3QncTVhiIiRzKSiKKuWhjG+TtRhzScSOwSE2OyX/xQd6qauSPgYH9Of0eYedO5Opdwcz7nwcmQP0yhKOBaUAHn7F5BPxN+KJxRz22gJjGqA0qD9u0ZmhnwgPE/OWRykavVTJSo81MQDV0hIdWjQvyPAe4ayo9f+R+slKwTMW5+3pHF2Coj1FibLJaR/8v3OKaB4nC3RTBZLXUE8HkaQ2Rp3d2ALhkpAYYLyb98NrI3OifAbFFyJkh0QEVLZz2O6K2OoQ2e3Tgm2SNnyy8Rj9f2islVIj7yKK3RB/uvwfkiTdxPRd7PowEw34Z93E555YFvY1GNeLcVxy680JYcoQ5pBKMjJb9xocqXx+9onJTiOZH6zqz/VYXMehBculYeIZa3u0mIM4vv2Wl/q+77BzvfQIT8sAmkCfwgCy61hlADCM1XI2KRHbOiHbotu+K2mNDUNAbhlmZkGexZxp/N/jKDKvk1I7kduoMFmMg9eSuUQZbUE/Q8tMmuGKNMzQ+I8YnahNFf8Me7+kJNz12GFkTQDnA5mdJaHecTJL4TShl7OhwaIcmjLa+TbZeZO9vvQEFUwzQipNVtLAmnD0PWv0myXoXekwN4QHHi/qRKsVgVaNv+/gu7GzX2uuleYn/KAmckqejSpW/nGI4APeKgWLuQak73qbSNF2LMhhthHrRj10s74YTzrD03TrmtHgTvWNG925HWriAu95nHHXzumVV8sQW/drI/rp9ysFNYah2rFvK0lUAox4cT3r8mVHcO5szJT9B4j87jQ3Lz+MJ5ztFCdMkr63wj6AtFbhPbcPynunCeVWhwXaJUb4wArjte8jhLSXTDUPrZ5ygmA4qXIb4H5nA1wiKVAUbiosm1/FGDYoZXt+sHEr5asUbk4vMUFMr6f0BJjC0lJSocEA6QtH9hsAU8IxPNnOXWGn30XHTSGCa3cwZrt3ylk7YWsVMjzvXTnG7MqryEAz9R4aTAEBwxVuD2p67IhhyCKSdoZ3BQ8bPaEnY5ERNv0eOCN4M/Ux/ndEP4ANuoe5sgWO5Ol6ZPvLzjbsUI0IeN9ix9OarwJXoUMqDzfKw3FKbxfwd4pF4Hyg8DNkq0aTGcDzT6yeSjVgYEhjA8Bt2Ja1DxdtA9Dyo6xTS+qwLggcGTfAXSYOhWoM/sdB9ceVcb0yR5Lfnkk7J0R4wg7ojhk30v0mVm/Z8OuqVEUyq3AGBG6a1EzMzcZAs+kqNM4DCgyxEv3CFNIRmr9ufyVwdPYSU5uR5CkoJDE/bBvyXgORRe6tYCVsWBUmeBlsngceK04BRpBoWazHIa2ewPwoNjfoW90HGaqARVhGJdiTPFyqLIGeAplZlbXyPROWh5g0LWEMAxtwKewRNpGLYAVMTkjFiOk4d+RO3azjsMyFxnfhH8CnMPMBZ7kfHEJYhQGom927fr3EtslAB0e5rtIEYS33Es8GPHt38sQElWGOg2gDTiBq58YLgAbZa3D3NiZzXwix5t46H0cqoqMvQrHm6ECMjUH6GBCLnKRzjwfx0X/62nhU9fzflnRzB7cOGEu0qMEYaBQXGeVAECyREHZAcbI5JUko1m6QYR0mvuU573TgqyMPpg6BWo1g75eRneNOe/eNJzSU5wgmt9pKZCZFy5IQVZsVO1IapTS7jOmmOXOvyw0tuWKp2mJmI9khHOsr3Z+u5lTzXaR7RdxqFlbYgfbKlPa6W4lPrM5lAH1EkX3e8jkQl+/EILVg/nvYWYddswlzj6JSqaNpp0dNo3YkoFTHVYh7dye4FIx0D5dxcnAntYKfhvKSzy0p6C7ZOeB7r4F4Ku4LgKqHkBJQPAGF5ET3Hb/PAbJBR0RkoGI29thvNGRHnJqNc8hZRp2EoKtE302X59myfA/L51SBok5ZQOTBngwtnHZjcPsx8tdJYdbsgHG6fTLaE3/gzj7/szld1boZTCDr059Xt8CALKhq1NJOD6NR3ksQU34DcIDEwu2kc38hbBjH0Nj1wVjRxsh1amaitcxtwlvBworhtTQiIdNDG/QuE77bsDmMwkkkML1GViER4Rcmev2mIoYj9wiIBqFyym9kuWRZgG6B0yLR67pFkdNE1LFO7IP3ruJNQZOZTObkXEXZnxT7m0mstBmXvY8btHa4si+rftZONUN5LQ4OISU69YFLE8yA+RU1cF3dsag/LwntQJcEgxzMXHacbau6j0w+dxd/9E4BzKJaVKWTM1wqKoXgKZoLrJS2show1npI/H/YhNYzNmaC4LnDDVnwZkxsWSenfvCHQOPj9Re571yRsWTPrhtU8ypG18jz1gLjZoWdst72Tkr9pirjbyt+jIqC6Uz9AV59SSBzxT+9EKlG/eRzHQmKF1GMIJSXoD1Ustpzv7i85kn3mJTyIih1ZDo2E/XZsOqqoFzJlkjQDQOnt1lINhpqBkaLpO4k2Ny/SXkqZvwJkXzL1kxk7tJF5zPSC9+hX2j8FSk57LTJ7ZRsZc2V6g7MaEBn7BzBOWDVDkDeNhjU3aiLuyCBmNMVxmH9dVWKtKqZb2mNTU7f2hIIP1PMx+mwCMOVcJfl8mt7NS3FukK68L1/eFcIFneGfShkMWy86KMOsdRZo/tQSChnBTbV+O5Xhu1HbgbT2gpCrCJNJuOwcN8WniZPQxBdf++c/biuEgv1yTMtQNaEYhJ762XVMlezR7O3+r2IwlnJhOMGSoyUuyj0Geu7Qo3FYIQPg+ENMzeDvo2o1QNA/8xLGctSrPZO1JFl0FAkvlaWeyQsR1NubSU4FrtKAndrfJN5TvDiLpjk4zoSTBUQMZTyiTotgYDm2P9MGrzaBjUAmPOhmcTwNyF2WtDkrItBoBhKVfFeGF7htmoRDNQ0rktFBWy4qHblWXmvCuG7sUaOr5j3xQckY40AUjVFFNpRHhQqmBJBwlyVrVNTprQN3tYxTyPGiYfJRvVYSOfkAidNvHHj/SJE2VqxEUHwF/Sde/pE9PkB53+I8XRSXiFmvhFfJk6cu4aJThDclACA5ygdi9SMr/K0+ue7RruovGA9F9hbhIIkbx31Ri6DNTDCSQlw5nfoFW5BdISAnGtk1AbGfxU2WqB9sk1oqv8jHcms1EeX+E4xTXLYoDwncCdLqR+rknN8YMUB4u6usHifyJoZ0NCI+0mRaEs4WNze9gWBzU4sJDBuxSxfEwGIHxOVd8pAQ3ZJpkqPai0ECDjGiruTm0bQBr0uV/aFJUnBkyDuLX4uFoepBI/j65QivbW0qNa0wyUHoC0B7hY2mLBX7hN8mXgCwxrId+lzsNe2zn1iYfKFBdUbF+pnezx1A1CCM4JXG5GNKarzqGPw9G34bSOnYbM+3xOwYj8BgR74QEYGjAEUVGbLCJ47geJveyj+nj0kmqtT8pAsbZzjlapCzPFC3PQJEGXJBRnjQOEpNwyAObhZiyYPuz4NY2/B1QDPR3J/M46G+KOKYbC+H7nzxUkWvwtZymasHgBhbMmRHYx1PA1QTx7UTWXWCKMYd3k3ttZvRBtmqOQ7YvyR+XyPq/8yA7+HQneva/aNBICvTHwxuUcutguxFu4WAfyAHCiogb6e9QLQQcvba1MaMd6Yni+SVT8vaecWCHY5FlLK/QUwXf7WDDJCLzGsr0HYBxo8plSI8M4PL/01olkvGMD0MVBYgM47gn/WI3of0kPm3tpXX9QdjtU0hNj+vi2/y81vNNo4OtPGxWTusBNVeaOg4jD5Djn/53/1SYc7TTeyrDo/pNeAbxSflqmo+MDnoE0iFanEhBhtfgEoUtG9p/GWK3IP7T4Mxo7VUdzp8VUcSWBb8bYCZZhXgViduB7jOxfIb/y7F6eBrBC6E4mW5oKfK41oLwIY14UUvlCtR/FedPUp1I8cFdVHFeowhzpXiekrAnvfqqnNG/7ll2JQgZsONE03bxr8U+u5xz/1dQmExRker060frT8Nv6MzjkwWVPet8Zq8hEfLaudPxssDmEJFO9OUYBfaCikDzj1pH7WQF+r56ntzP08lKSXrIetXTV+2zF4rM3WaNO1fjtoXQnHOrWbKQ8tVMcP/D1yBVC5lQn8Gf0xJvJk5MfONhidyxEg0TsrawtRzJ3i4euvjI22BJF8xlLQXdL/Ne0uH0xQn9vEIepYl92WXC0Wbb+Tp9Uo0ZXvy8n+Jsa6+i8yKelWTimma8h0dNObq8tjdgrhpoZKVLCzJybHwMgwvrfu0UHkmL2riZosFAg4fh0GoAL8dI8H5NHb+GP+s+FP3N5Xq28/ev9Qf+KT+y3N00jZXlC17MEk0bdeD3KQAEIjdoHtS7PFaZYCpvVgpOQWVOGEGpbC7srAjGktIMUNOQe8VhzJSHbBg0E4i3bI0bzOpFQpBaqHDXSBc9oTwZo+Y5dtGgoiNq1+rxnlRVW+T2riAwelrRi8B4/rUcp3Ez8MCSKfFB6TW20yvJ6tXjJ0LCledsT9WsIid7vAZxs0hy0YMmAc3H8vb6uMffMCfPQvLthdrRTnN1iZGcPhdxJnlpt9kwWA1U+6RchD4ygxGg7eKCDgmmteLbYAGZ3l5fP5D7Ym2rWkiONP6ePyxI450+IF7GDdePLYRXhV8omvnrKNgR+8ABJlQn7hKWKY7p0F7VLnkoXao+iXZEaWHaZm9nDYoSej4Kby4VDYI0vr1E6O3i3BzLO81b5T9KskUIg9/DE770BqFuccDJQCvF93yjtyhCA/0TcvQCdUwPRHeEBOFpSW57jCfminreRQfnAebthmxCPo8gGy9FoTu2J7jqwgYc0IIWggnEsDDdruEmWdz0FctECPtbUj0qsP2lgdQpNUFHBiFnfi7CmUqmlgFSybjtp7rFtiOEcsSZORCCaRmAsunB8VFZnIw/uTjI7KuUaEQ8O6c27n43vaH3qshhq/JJZEy9vxkEukbk4YdB1pSZNMaCAG98U847qyKFG3cGlFjWhnb5pBhBp8crOSpBNVqN3rufCcCoTCQBA/ecT9PeuxoPeeRtcc0OXZPTeY4YIePBCM+QCxUEN6qoG977y3P2fpR9hPjjPZ+bWZizaDTc7B/h2g8/LaKdpg1Eq3pG74nITMnb/Ljgdqv9fGfpKTz5II44g9SuL3LYyg0D/+IMhpjCSO83KL/0YK0owdojwkiCQXuBd9MtF+vyBDjT83s/n2ywk74FStjaUEu/8JmDEn8eTox4QE9Tuz8wh1m+G/CzhTHTjydy25OWHxHWc/OQaHUHwlGfRRcz8l/gPj05gQcQC/kD2ruwfUq6STC/8eMscXOcnUDuzXe3Jao7UvHQSVTpc8whXwhXp4sxQLLC0ZJWtkkH15aG573kJ5CQm1wuaoIAU2VUTiODcGIdb93jve8J8D29XQ15VyS21u80Gm7Z5li2t3Tkgmp0gHZaTDiCt85UH3X+/hcCTc+N/pw7Udrmu2yyhJSd7GLR+SNLR1h0A/XgvLuiAGZQqsPzvUNkMJNnb2thcUdNGYDnMRpT7iz1gGI72G9QQ7T3emenOuc2CmVR5LTG4eiHFbAl/bPEI2SJAiTBPp4RaNml1F2y8W/tvpn3eJrI5QNCu11bZFxjWE5bpo/uRaGIj1WaQdrNMZWfHAVy49euuwfG6YqUePP/L6J0e34Hxv9+5P9BKRwcqJOxL8QVqZsrImtvQugjLFdZvgdCXDNpJ6H+tpI+1NiCAefiRjPlxNh/jYGfsJ6bLHgtxFuyPG3UncUKTL6Ge4zyP2AFiFNSE4r3ivuNR6i0rZHR5nPGkIA4O9EzlnFzV2fgr6HdOKm1SFefsMx9Q6/MOZ0pN8YHcwKlhVM4ADzSXWIbDW9DbFTtjmolshfAHn1J3Z5XNlpEKPppSp54JOKSpyZHDZO0r6nkPl5d9o4LOPpPIjkxaYlAOg0pxNcXNSlT03w7n+I7a2YZZZHuOKdUJslnVypY592LJXRMUHrdE8kn94QjfBQFe+yuPm0NCGFI1JkqNU5LZii+tLpwnnbC2fcvVLEFieg30m4F7sCVRwsD71ModjfsYVcRGuvC5OjzNSu/UdXryT1XYS2BkDCDQDlFiSUBVADLlCICwhxz9kqR4p8T7UUn9rej2Hay6CFT/MKOOdPwiyNE0eiMjyi0/SLebZ9Vc5/wSt95dfJFhVygoriEpfVbZvMqCZmCrC+k2qyVCTYxRCeVC9DOCKH1QzNisO/CUjJeOurBxYcFzMbibOg06fq40GNcvaNmdUqVQ9S4N3F/ZMWOjUAqvclM9YwgjpR5A0aSJUlUKW5qjJYi5xUM/qrdhOnVlUxgzRY+mggwFGept707ZHXaVx9LT5kqtFsFulrK3ek/RYQpxN7fErT7/cJirOtyOGEDhtSDs3fnFvkn0ZlDsS9qopgcHJ/ngvrRZ+VP5eh84TqzHYCvRBeA5CGrZNC/KjMKwrfJYvUlBu0UHTrA7hg7yZduYRXd9HhTRHN5gtuNjLHpsbkBy714+jeZqmZF6ihkCy63dqdRdfKJVJzu4MjSP/afc+YZQaNv08bkyZ7b2ndG3VS8tHkT27vyHYoaB01QT0eG1okG9Q2G36Tg84vVf4w82FpIg7oy3Lan/tyO+sji51p6iU7UKOWjulqrQn8qM79/lWOylu5WzGru5o9Ky4Q4pkosZ9mK5ZyTcgrP88QFOXg+mv0wn3bjsWpi02o0/u+oD3o7MEauOunMAFGJVy/41T/B93NTvOfPurKbAekwrf1dUMWhH1NOHKRbEKjwe/8EkLHMH3Yy0MzLaLjeBOPueOpbZdeaVdy53XusvTuwrf3XW/0f9zHF/cWdDgECNXbb7bal/GeLA7dXwfKl+mWOVYsvU5UVnmQO+ciUNbhZrbo+EO9JH5fhG8FS+WEHR/PVqj1MNd2zlu2J7+ppLWlrzOl4Mbk+XKWPhWLgh02wjZhBilstr7LzLzlbc1C7q6Bd312vM1Fn5fXFJg5Te+WZLuZl2omH0r/HraBecMUBjVI5yit12QoKWGFhzkex0CCBQ4glqxTtYHP2E0WJjWn89U2d/jdC68ldtIDDhPVRomJ+VBEEsSV1pcfHjTqKbG/HtoNofR8WaJvbadyfduJZBKBdXw9SKujzrGFuwn1RpZxSdMs/ZZbzOICr+86w3E2KnXlxL+ZkgqjH1vqUhB1ZfUKr7zVKu491G7imGyIln0ISHkbi2xSxqzN8trq/+78VxDlcs4NYkBPmQoiNAeGi0OR8/Rf9sJmhJYji9pF+2QxhXALFn4IEGP6YudV27SvOD8hIh3hLHUKfy5pYMSKRuVUFQlH+8bD5lErhNgNmlD/kZeSJ6iwJHnOTNSiZ4nwzW17Zq5n2DEGTMVvsvry0Qc0+zwZdJ4VoGh1VvQfDWjIukkikpeWrMayTDOlZNeIn6C03QTdT5C7dyJ5aOpu2Tm5QSDZ2QVvrtL57RAez4uU19Fm7vubUIY4RrTUzjCEzAiR1VsQHXQZ49RGX+9UVVAQqrJG99e43zwe80Xs0OK7WrHn4dJqKA+oiN//Wg1GPmhQuf447c26Ynp8vZ+Q8+vIogvhPzh2I8qK7Y9uNxSp83DzByGY0Lwf9Oq70kmTm1CTrS+efkrFSGflNZKexahXk3nX2bNnL4fQx7kSK7lp3D5m9umrMMxP0kKIQLiiMmp/FdyrPl3gs386n9ZW4eHnCcKKL8btw16Eas6x3dehWeR1rvyAe7qVAEsjsKctzV47nJXGwCY2f2oBA0b+9ei2CGyBCJUJHMgT6snXOPIGdsIEOY5wfoZgW0C8iq6HpngmunhZAJMLE/YBmrdNdyzNsM3qHJwpOP8GoWFKNDShCYTvWz+KQuM39sbk22ThlUnUoHDN46iiwcRI6qxPKnHCl7DmHRu2YVnaxT89zvFPOjmsMU9fIleIu0q4w2CQWnwx1vz5yeihHfVMjIcYHQnQkn95OCiPtusK/Nn4HtQsgE5jCRCXNEz6MYzxhTp0c/n/QU22aOG7wUZ+USyHJHPZIMdhI6d0Hwn/0pokD000239GAKcnohyBz/wgJ+XU/mYHjdt6X9mvGQG2AUY3qUpVc8cIEBs0FKn9qhbI+eyJE5vGxflonbHGxFe8fio4GM2aaul+g9s6neYl3DPzIG0pkXpCyZWX7KG6CKxvrdIuof8w2C5nT0vreGrC5ibyOuSTz7SUGb/PI1WjqJIFI/qjs6PMtu5e2PcPNcn0nFuAs3jmdY/Q+56QR8Ag8Ih04PzFFAaAjvXyTJ1H4ZVyZLj4fDVYRJItG+alEyeXtpiyjT45p14FhQFCzLF8CvkoMNUG1dK57ylpI+9zDRWmMiuEUzf4EiiN0bSJWHlqnhGHLNvo8FOqnPw7BBaFGsbJo0s257qMQgvxPmZAKLBIzFs9wAVSknoMOwr0LvGRBGR7z3Bj3BJwAfb8zkxNACkccAFQgbo1OZK4J9mJDBdBLnZlN7X9ebfhfTm66UhqY1cqUkKVypSiKXCl2Iei13KCIYzqIwAQOwJQfsFiLyo9KcFJMyq0zHAw2kyFD39BpDDRAFuCfCMv1nAifwX4T0AY4k07sCgEGaIvpZsVgHFpr083gKw9+rr7nv8/qJyfzhWFws/XPbpLkZpZ5op9Y63Qd62KzeHb4YiOp7wqR98IrAeh4d5MMwmymAqlEhE29XceKEBSLqu7+8u/3w60y6fafE/rNoVTQWm4tCPdAE2aMwHMDpWcDiP0OpfKOFJ9/qvUPjI4S0+/D8Ja0IWPiWsc8Uq/GUKYRMRMdUfMwoylHdRou7rwzUqpqjZRIN4V7fXuGcKYxMtUrqxGumYaklm6PTd403RiQv2q4lqQqry5/5CQMvsrzeqaytDa//Y+qB579GVo0sn7/TeGhi48teQuVvAq6wvMmaKxmM0TP+xCPhPQUGpSiPN68sR5gRPbjsd+THfOsLfv6y6FBm4148emIIYw3EMh4WjDUcdEVVEaERkESHBcDAorH+paURdprS5e/5XX4lQfyRyMYpm6Fnnc76aXVG+0/5LR/MP9yFP6tLBjdrBkjqETK73qIRj/0cKzD+3cAxGZPBBHPj9Vyc69l8++J9fw6BzfDFPs3HwXz7wD2uW/s+WqTVTFz7eSwnOuj60MTwm/F8+2n8Uqqkc6w4USbJWUNG2JrlFJn9kMxB8xSM3E6HIVMjL5+8e1v2Q1LE2fUGMFOfZt4e6TE3r//KBcb3qmFpNWOBf7qmLf4WwOkjolbHlCIgwlpr1WLO2NdmxCWici0d7nmCBnDmmlY6sJ53rttY8xu91s5osOK/h+C/Ow+L1ZlTHv8aB9KMiHsEsMvMNjbv+XiHqW+5Wg+Nb0g2avaoTOO2yomXJV7pwSsf9kPfWVb6DwNt3QWca3/gYs8Y5Sdlw3yyywQ27IzZ6ZyBPFDSODN0mRB0LwPhzadR3JZ7FqOvjSPcYLuUklPIWf00C3uZzfctdJTkSM31bu05CeMHuAZvEOZkIN2AAqW/j17QEJaV164uBJX5chqEXre65X7JNUCKDUq/77VOFxexdfqWii4pJnzzBn3++7Kgcs4zUkggzHI6O0jhWqNWGVoH2oxUWKy2K1OuTt6v/DWtLtgSqDKvbn3nEfAj6xwtpqJg7VBCjAPwgSxiQCvhlR9omY92xPL/ux0jNJc+gDGQW64z0Zf+TSIpg2Y831FAEhWsMhblenoiRMBcVROuEDk3F/isNnQCAp8F2j9oygQ9AdspwddIsCtBXw/mD8kGFDS27wpxvvhLOjN44ffGg8wZ8HoKPc1U0iOhZ+NqaNv6pJ/w1jSw6f1fAsb9pHrNSNz0eHpkW7jxKr/UnwY0b1a4wd3lmDybRuI4jj7Iovuqals4bhERHkah061nh9dEje6/R60UaVt/IWMurmdfYq3amdFdIp6R0W9rq9pSn8j/6+jKgoW74e2UWcsEQ9FAOipltqfJmL0m7JJhL1hkQm138olzstJzR1NRJTPXJnhp1aq/AtWxcGYsxcD/xlH7KQMlYYhnmgNiJZRWK4NKo3RFr/tylcodVR8IXEuQ1cdtKTzOPp8q0KnfN9RwgxEE/1FUVbtyOx/dlvReOmxsRPZoQzyLq08lTAkPeNSqLN/j+LAg7+FE1+KjUSEdtrpA6V7hpoAT6zhMlFw3004XWAxSmEV2CcO6j6kCdqBlfWLsAxUTObX27+8XxHhN9Vj/zocvvrIS3lXRTtZdH5vIQmpTM7enIGPtj8jDtUmgO64XuqGAgCR9/0LrESg9sYjDYVoaGrwWDD7rhk0Bd5BB6UukTon+/NXPxETEpinfsIXasmO9CB4soO8qiqpnZUwCmuOl1kCwLs1vTuMhudTo4WbiTgkVNo3pLRNS7fjoKyuVkRFIuNZ8p+Bzqy50NMLBYQqG3BMLb5hXUex3USosl0ggLAVVWSZwsSol4bZ2gy72iQKjKo4BdK6VGPDGxTYJyTzV6CEUdO1QEftEmRJ87Jym6E3VguhqlwcsJF0e/AC+lIJCDdOf7aDjiWF2cOGcOwUSbLKtKu3HINuzX34wD/crZ2teKcWEv2NU28Wh1GPK1WoH7H+r/Zf6U2MxhuKcTuH6WKuTbvOTJWpJrLG6ndD3MMksziwKtLwCRP71JO8Trjn6tCBu5C8SqQ+J+v8zykBOgQTYeO4ooUzZ/9M18zUB9NRy8Hqw7DgufGUHFAF7UcMxsyUOBVadpzRkBcsC7/QGmABy+x73rjmfxGxCfvdIOjw5NWiZ+ToY6hyvDHQWcrUOS0cEhwX8LXzElhCvX3grDHYv2kNCh5OgHc6G93DRMpKc3wNyM0I5YRFSWG/+RUKXIm7xJFJ6exrlfhQgpUtD6kqBnbhr2lwNlfpikWc67qiNT97vGqd4tpzMbLdf27PHWNlIIOpsejzAD/waRrwQDSdHgsFKpyoG3VTq8feZk/UQvT92nKmR5a6njBdzIu4QdepHRluefkjHd+TLCNAOMeiW8w/cNlRyMHVai8j+O/fvUjHE+M0gmTubu4pH/QsDMENCyd7Er4O95fnAz1m7Vmn6zZA/ZRATJW6U5PU6//ywhD0LbSCgvktkWWvSXNPSl1n/0uFnwwrs01sVegunEzfJIwUEsC6rPbF5HRNZecXi5XozgoVQ93c6J7nN7sYUjTxXg0xbM/i7Ix/HA3pBHETvB+k5RLDXTQJhxr69M/np3Wlt3wYzr95mE1PNReplduGH4XLqJZZkOSjHnN+qMX/uORlSHu9l8SkGQJ631SeoJVv/WsAVHu1ZXRzDubOmdbxMrvvJGJugqVLrsSp5aBDt3lUJPCshk0qhHKWKYqvUxQ+khMD8I1MpSohoyx8ClnMoFFvsd6YPknGuH1MM7Z/z2Q4VWD6hch2Q/b1PrqJADJ4boeNuDF+opP6aDSMf49lumQhX9YIzGQ1kexkd5vwFRhLb2251Ez2sg3z8QtchIWlIOJ3eFGVTNw48j/vGH87CXpG4QZiqUz26MvDVsEHstQsu0eENQpCPXBXV5RHb4yvWeK0o9G+yHR6o7osGxTI4PadDnQYWnyAallMCP9XXa6Vbnqul+ZoBUJIrI0zxnNPfgaVkBxJCoT/wdmZtIFePEfDSUoYGHTZ3wwASXxHzncpG86N/fTV8pr2dit2jkciFFG6Kzx+DA6uY8sLpppvrKmDDgz9FRADgLtnnkjYIoYC3O0b2+hRvVTJ80wLQkrqtMyU1jxuKYWPvHqnBvKE137AqfePLEWE8AeHeklXQf+iLu2ZyBxvkvvRwSY9+PVlA3H3sen5TSrKyVl2d1eYlJ9f31lIbi/ADADrL9+2WsVOVxp71TVkfJElwDA2P2VMmnrdBxGK5QM2uL/n0KmH3mR6U265a7oMVkQC4lgOCfsZDaFEzbmaGMIieKelhcMf+ZnO1zXNs0qDZsOwmPz2ZdKfVP1udRaBCm6VniteQ57vSpf28kNb0qpm2CpJ9a0fwPWg2VzbSSO9ijlFOG4mSiEWld66x2TYk6gQGXqtKZZJhZqiwyNO7QqpGqforWGZ/oX0+tm5L79EsiMhp+/hEhtfhwFbvxHl90hTop85U8zdNPDoHhOj9t6qib9bG+FBOs7tS/6pNZl1/Qft7OQx5eCdJJI3RY0o89aYhFv0T4MKRh1Rbukp7VnUYNKuQWKuXyd5B3TrebDL/hyvyn9GiH2bmE2WgyavxFJq03VsOjFjXcHF/ztEt4fJlNKof8oze+BYKUd/JZQn7SX0MNZG06b1n4he+t4h9BIfOY9XdE7dCVoeYYdgV7x5qvdqyMaee1Zno4AcFRGhvTle7C7Ptd9eySGqWWYNeq9aj7HHrnN4iTUIs/N8rNeOV0NC65+POCm2XaFrrzJvSdhEEos9j5aTsSl5UdHRrlNfAHVDpukFjGwPJAJvPUG2a7SbRqi2s1EQ7TOHsoyVOdwVQNodot3mysUroZLFh6nS9udz100+c6oTb+iWBqr8678NZIXK8uX8eE2cw4XwChoYMteJCktq9kjfbYoLyHKMzusjUrjquNdV4ItQCku9ogwJqMTn4E3AgdXtRHrP1lmsShUjWbrf+n7C5sjcbVLWW/2VjviEdyQii/ovOA82oyZUOUeMZn13f25GbD6QzuJXeFnXrYcphq7HQ63A5ucLpc+hYJ6XPFWeyakA9G62vwHDLffFXJnWcFP4KCmTgv8Fr2Th7RoiHpZ5tjmXeCTyjsFGuImcVq/z5iF/C2rs9mlWnLZpBKrNBzU6Mg5KEXo1fNvue4f0zf26q5GzHln1Up4cUv7Z10L4ZwsVGx3jB9VmDpREZbyB5tD+d6obSATFO+wYtGkO4rjpMi0VEFnPZvStUhCVg2BFPX1gjTvmsjms9Ga+HCma4L7eb05rpWD4H0jEVzlYunJtq3v/8n2ZLjjFoEDUWcQAJUWrNziHuHd+X8T+UL55MdSU/g4CSWePim0MVoiM/GCGqHFJulknQBlYHJlGco3Q6FWKOhc0herQRrx9zXYMW1hkejo4SeZoUxPuJRKF3b9AwSTVeN5lu2a7zzIoLRlTnXTRnnbtCKmqZ+r7C0aTVXQtIG9rm10RQKZxlmrSzadjSGN0e4MIjFxwic9QMxUXaEDlu+u9STG0gRtAfea+TA0vpH2Djalia0raMpndvVJO6Z0TE8vgrXwyd22G5K4Rg4HLYWHf478/He5XIi7BjtmgV+ikrZfhJU6bDpsLpio8CbgFvLQeYg6uKglxmSyUwrGUgOAM+ivRxvFyowjTLkcc3q4BbDL0Ah+q4asrDUElQsdPLiW7EAaapgCG5nZl303RRmgi2xqyJ89do3NJDUeYv/qiRJnqI/3jzK1n4WAG6e/rTG25ylk4SjOvkHJapn7FXLtPFGx19yu7Qj0tm6G8n6DA/rGKXDpCcF+9HTO0Mzm3ZEm9pwZZlRHS+IKTOS6TPCJqaWVn7EB31yUpkvlY4qcB3uoVxtlUIr5v4uhobOZL7iV19kIfnaEjr+MPcgNu1zF8+ayirObcaftmbhp6Dfm0dx2Gdznh4FM0IuRQIDVgEvIlqtw4MgobzrICJ6ADIm/dTIvvBFcDPWavHWplaZjqGPNQe2wB5L7ODXOfTgRk7MBWMI5PVWQRAg65fu2vqgak6inOTofMBusgbnvbcn01oheQjmCYyJ3VA+5TSCJyZdVE/mEFkaJ2JwdwzGecZpkmNzqvOptDYk+s+XEt0V0A0Kf+FTJTPMnTm2omCfMmuXKxmLPMV/twt9S+6gI2Oo0n+TtaJxAZsX5xTg5ATdn7W4RY2Sm5UoHu/oC2MfNWqVCsWRPc8PD1I+tMEN1jYXxg52A4hghTLhN8Yh/yhJ+hEPggvx9KjYbsWGVHpiGscNR+Jg9nOkHS3HmaNUROb4swtMI2F3qHvN2V0xa8MymT/CaY5i5rY8vK2x1EuGlFd5cD1SrsNHR8Mv+ilqBZc9B6MQ7X9V8ZYm/iCDDkMbCiiGsIHbwc1ogKThobH+EYuMp2dslk5mIt99OBUaZFtx9uNr2XrbTqtePQuFZMYyJSvlDh2UsvyBo2SWS7mYT+3JY3GJD6eWMh393C9j1MVZFoTdbOVJ6Gv3+P7IGT6+0KWl0F851k0hfU2cWhmnUeRSRIVk26HWy82sen8qxqD6HdE96jQYgJQDNzRS91e5gFuwBlWXx3uIqzGyq24q38RUoysqPZPWnsKBuZv9NJkuWuv3X0HaL/pu7qsGbWsfgIA03Kq3Jc2p1HRCCfZ+RU0Lu8l07WlSh0GH3eLICmb94PF3SN5hfLKGtdBbpa6PNtQWGYPgKZ1xMnV4+2m08Ett+Wca1CBq+5M2uM38Asu/MjFNdmP0icqeBz98tgYGWbzdpEQk0zaGJwkYiuIykv2y1OMC7yndieAXdrtdOloS6/uUacGlnDTMrq5Oxs1kEknyprcJBKSa1tK2ZXc0HgZ0tKZ+x936M+6bbiIUO4rlFDgVMiVNI4tUOAqM2LQy6oD58b4PQNufxbHWeLs31n8QKT0sTpQxexiB+3f0bPpzmqiN6eW7C61KFExu+nmlGHXt9Yh7nH9dyoZt7diuYE0EmW1tK+yOXFHnRrGVyjEnpqbNsQmisz1jR50K+WdReiNuBSCKhwYLvJVDFzTGO11AgJz1K3l4s+eqHXei4FzkEyRTOvUNTDbCwyuZZB6Y3/b3Y8jdzLmAZN1D2U5u3XSTNX2wzjRQI0ewhH4BO0//0p76I+MM8G96aj2yPFTeQ+nxm9H8w4bJ1Rh1EvLv5GmeuqdCwSYbaT8uD0dLyD8lQtNnfEJRDkEYR6d/bQp/JufkcdZwdKjlw+UCjW7JM4XjlTH6+aq8oZOXcqPYzRQoFd6t3E9Njy9pPEzgFUXkMJkPXHtJ53JVlOmNFtl7KUQ5nrgmL96w2W+tMwZMDFoGLRUd4RBZaEPGxlUuKDvpeGGrzOj38KtyouxD79nl/L3X1k27tO7aMyS3dwqhfD5rc4P1b2ubsApZhiv/GJAdoWIXn10fj/NaiuBIA1XXaWRKGVXFma1VMjnU3fE6eLKM+Ks57OeVUMsfMKLIr10IIVQleZYphy/ZQA8B0yFG8HUNw52rHiEcEs02gWbmI29AaCIiQgeMjjpwR2qAaqibFlsROBMhXcVNKuY80MjB47WZnqw8mndEV9dogO/sVjGMU6glsvfzFSBged5ZMkv/LYo3l8xUjXjvhF7TSku+xEtSsGMF5MXpvQCWo2uO3hWl/OXpwCWRc6WWmoAP7tmUNvyg0pL6z8LEiNm52ImQkSqjPEErMBpOcEMxIqGxUJG73MU9QbQQy0eo54NqjicJBRNh4kpd7jkFYzAZkrY46XQCfJWa4nApxLvgVzxJIH38DtvryIbX+ydieDaakJXJXHDGyQt3R4IeeS6kjDn6TifH6CrvTdp473clu/Z/7ZXJrrD51LnE4KMKLRwbxR1/BXyLNCGuJqlwzq0+k+G05ijCT2/jcIVPx9u0bMN6/3Osr7eN4n9L0EKwtfbfhRZafP6ZirffX8Fj3lfbx/uv8G33HmA7rbHXGiz07Gz1uH3y669J7Zsl+Fjt0ubUnw/olxYeVlPkNBXZHyOpBLbdrPetORc3s63ngDIbKuRQSffXNyGDMWN206ld+fPSLHn7ECR+9Ywr8xVFrpRwfcFIdogq9g0mrjfXMw7xQ3MxqzfsLRVCq76JZNQykgmFgTStBDxtJBhpdSOTJD/LyCQDOqfIzN0swzGPZR6ys8P4RBmYTBmJGsvgwoGnOxD8BkfGL+1B7/D0o10iPtyBLCDeyeqGIgWnhQ1jXVtSrwQMSol8Mc3Y2bX0g8rofFXAyJ2ybqoKTRZlKAm4b+dmrn5NYl7NAtEzcfyhNFp6x1GkrSaCySVPd2aUbZFVSSx7WdTszWYTbL3d2HCVaQC5Lwz6kU/JUcn5/FzrugllT6SEFqkiu4HGFNWZamDVSIbEOzWQgCIRiXOoD/hUHR3kri+R9v/UnApAaGWqGX2WQxTaHj1mRa8FlF7urQWvPuLEmEyuI24CNzEMqUZRLg1XBxA+6y8dBc+bcPj3Dscfj1TSUNAzXkRbQIhnq3VMoyq+0z+j53spISmueX48dyYYW8PQsf1TJE8Mp6KaRjQC/C/niUZNiJGjvxsN46JSRUxJoyIX9mgpqhbqlBeQCY03Mn0Est1NiBaeR0kIHBtYeDN1YbgVPRpTfKylWgl5c6ahOOJ2tuP+ZjxTVNghgNY2v9BvCko2Fcv8bu+xDiU2i7etrrkZXIEhVPTAUPXv49LzORRTuagUYIDWmovn0b6SFadd5x8FPplpjgiNuweVEper3Aru3lDcIL5MuWMUGbnkPNxPE3M/eGzLokKOO7vcstYYfXfs7qhnPNHI19xXpcrLLrjDp31AOGGPtyIu7k05tgHthXFwNhQ6y2483Zrl9EQl98PcOEKv70FbwCSaX368Xo+j2VyWTNw3UevhcTnT3nCw8ZSjiIgO2NIwRB0mDeCdHAA9Hfc28LCI6ibQYuEmtgdkmX2tvv6wr3Kl9zHceRBvuU35bPX5gRQWhQfj2PmnQZUdnKioxqMrFbu4Cdh1NKNXb4G8CchSk4jizhNAneEX5oHnLERcU00Rkc2mSmUsnW/x3AVXbH44JU6wTYP8hCSY2w0vtz0v+JQeY6HtQw8jLsLyKyJm8lfC+yM/GrLRGpjTc28S8QrOna3lGTZw1MK7HW0fp9Ho54d2kysZ4U41jLRRwicLOp0sJK14p8dj81uDaDszdoVKilqiyTYitBeGSGm96hDvEFI/RkVQV0qtPTBn6UFMtow+THv4K+hDuxL6oK2tEAgRLtCANFW7FitP5FZTRDEdYkBU8GDGPRIyurzaKIUHUp8/oNhgY0VXhcJpxy+qKyMzpfoVwihsNAk6mqsB/Ix4flSw/hOzdetDMGqb0GZw8N/C7fNseL+OCh6pVv/Fy4lS/xCqfSqZs+pfxe7Pm0BIJgp5io2sxUZC8zn95O4mqpIW1fxF32NNRFj3JggdmyFvoKp49mchzwnbEwaKExV+4hovScQ85f21mFyRYJ3uis0pfe7vbr8kmUl8O2Xx89uCF3c5LD1ofZY9ekoxfbum7KsBgzpFJMMNGsrCo40ONaaJ/cbEcEf2JPbrh2JZJvDVlqiVfZVQ1se+u2K0jip407S4bmn2qUmqKQwDAeYtwdRY6S1pLznrgWJCzqzCXVbYl8oKAcKHyarp06cpQUOiQ5REIXWOk0GJsrN9KIe+LvVDlT4z9U7jiXjy2Enb4wSoM1p9SbGT4laksfgZ0td+fDqIdk2cMGirG5CUw3NUeJiMijEHw+NPsRXXxVos06BXl2PtyZ0csZQMW7uUNixTkAYOjsPfMblZIX3HOpVslSVPNMH1pNurmXZaH0TSaXScnHAispfGeWWZYBzJ/lntnLxi5gKdBd6DlrjKMH91iJALUsq3yhn0WNNHZZ3UKjRMinc0tKofDnBZAyo7JfODNx2+K4mnFST5taM1808j5kCmSmFc+G33SCyCpnf0TMYZlW2BxmjfITBhISPMyg+o1+tLccPzmDA3dLZKZNfKlNVkY8Ds0sXA+PJRr1zaUtQ+YvNgFaUH4OSEu505p2MfnOOyOqqXn+qp76GYTvzkuTFyphqXTcl5RpdmBzys23+1r3JhK0qJVkm0F0XhdFWlZra94qzoDCC/PK3ISJMp2e9gzTTYVELScULUDF8kIscgnWh9R1CE7nEA1ooEzZ8UREDPALmHo2mS2kDnXj9lrhyJCHhmpzZWp6AiqXqOd7daEdKF/nh8ocCfRW8eJrhD35zonIZT7YOPPmQj2/eMYvIsXACZUmbu3qSPPAPjGbkKKCK2RzO6AF5wMJjF9uO74fIut0sJwyndxbGCtMvT2US2/n/IPbclT/6fTbw5K8+KF9VfrKuVO4mdF2tCA5+qFSO7TvMAlSoVBot680ljUrCBSCGNM8/hh9Igbrr2X1qsy5Ry1RtAMsv6KZREODcu3QDPukEHtUNsa5x5uWP6nHfe27W0zeywNn1m2KAPNHmU+nnsVRB7tIbcyFbCBAtNw9LoaEGrojFpHePnLfbdRmtj0Jkps2HseS4UNGvzZwCwh7C2TfffYSsNQ0NWPOgZjDgyZt3sWpV42pO1KVCCQ9gUOQgIu+h478CcvqUBHgl51Wwd5U2rFm9HOmxwJV51mowcmoIvFHBcyLOWHiDVhJ0usaGnAqA/i3uRncaNyJqeHXoXUCJG9UwPY8hIzeVc1zr7xCLtSpES5mrGrP+dv96h0PEvmDEwIZSJmJNW8eCy+HaMDaDD1GnTGTW9/ie2rSphH17jolvfcnaZ+8wUwBQlQwKxpEJF1eJMtATINl29XBWRCJYywHtEnsQEpYTSszknixECpYpG7sHHfLEnV594EtWGUvPBYbfarH+QCnsUA8FbR/ZPuk54V6lGRMoMVHe6bGeQsWWQbdT65Mz7BX/UI2uei43xawjUbSRGcI0GrzLbQQ8CPKeV0vUpQNCg0hdVG22jvO3Q7kNwh41e+9ExJKfbuW9rJLTvCx1gldUMw00IhamTJ7UOicTYZtrr7WywsKTJ+sgrU6SdaO64wMhFBVIMbo4LpK6gf4lUDyakwlc9R6jw5lCzkrHrxWZkboTNodT2lyWZG18eQUKNZzffrDvQ7nGeXE/xuAv18rPaexF5RtZHKu/AcNVxKTK0zPqwGZMH17oHjdOQ6qY+C4Fq4gmxm37mcrColTxzWrizkhJp0GKPTUmRqOGiJr5AtUNUkEcQ9reCp4BB/TuFESOvtFfPlwu+v1RFJLI+rnMCBVE3fL7I10JHMXEe+0QBpn+w+aOXK+XWen3HRL4McYSjFA07xtIlhkxSIfgy28mvadwVzEWUGvl2x7AcjpO1rZ7/ADK0GkCZrAh8Z77QArpqhHeDtXcPVbwRlVNVDbLsGZyyJZrqHFiNV1I+3xkiJhjTnPWf/v6Oa4eM7SKxPZCpZ+Ouxc6Hy3xilPdSmqKq9fk4HpSdBlKrNKSBAb9eFbafGqHMUfyai5YlQi74Ufj97DvCv/f5+SLfBKPplzzchmDuVRaEUzS8bel3JcKA45VlcM8lIcaPXw8KhPA+NJnwKBAoChMRHhmHwpRd7nGmXHDrhzK77U/G9FXk84fzLlWdOQwFH60jTZWOP5rdniz/tH9920XKVjQQ65x+FGBCv5hwvJEVP7ojzVM/omNR1CaHHadmGAZz1VII0DTx3YdJYVEYfLneXoopBvZUIs/Yx6Tg3HaC3p4nZofJsnBKH3TddtQS1E3gv2AnFAX17PqSYIeLOG/BlohdkZrj8iY3rWbrMQDGQJMOhf48H/H6sk/ENA7S68Fp5dJim9y9PVhFknuAOqX2VOvlqer39J4WDI6LfRM0hrhZT+ytmerKYF4wCG3eJb0WqY68owilztDdY+kjRosL8j8Aoz3Ui4Z2I7WYuLKzfKh1L6DpzRHH3aOhnS1qAK3nkETBNqXluXx0bhO0Wb4ND+l4x47cRg054R9TzUW3B9A3CEW1u4bQLUcRJC9Z8hAhoTq5dLToST38aaqevoUnc7xeNuQ+8G0+/NjdMLT9heoFWSWyUDshAG1lc8N3PdK2jO/ByXnB2nagxzzw89VSaKFXVfYbhiMpg+E0nXbuxO53DrSTq7xbx2k3Lc4v69oYR6pEiGbvEWkl8uR7ihgG2Td5JEKhdgNtHmwVU5nICE6lstZ+Ye/6kEUL8xQ9SbxNEDh2H+e9GuwhwAzwtEdlCpFhbnPAPgbarR6LFBniLUE8r+qKSe1PLh03VhZdA4OpndXU7b5kpUpIGf04EOR0nS3g7u6czr041+6lQBvOh/ZN3YZ/NN2KIpuxKfA34COL6b3oYPBIrho1sogiEpaReLvmH5J6Pl8Xq2MhSwyvsg0Oqaq73w/rWGg5NQbpih1xWJHizC9K9rr0I7M3v5vSu7Ec+6stdKVgBSWC3J65OLRnzpfVJhBqHveKOjjEqg6V3N0rD9wKlw1q6sr+GbXTdsBxrH4AxgQRgv12P316z5p5jtwuon12S3lSJpKgDE38BEP55v0zkXRsj+IPCMNBhPD9lUuUUCQD9qJftJUq49JMedwIs82xTtgt0A760FtKN0L7k9SHbgTtOS3OedE7qBSQmBjR7k4EgKQ8I4wE+qAE6a6UbbQDDeBsttsZFjzFpFq6jQM15YO25adUnaR1RGksD8byTZQ2sGstb6KQcsLPNG89SxSLi9HXpVp8NBtSqUlwJ2zHkBiqcG9RuT/48/C2zcIEXaKf7iCqlGc6tOBMKlw2YCPE2IuGRcUP1s24ruRdB6whHuexi/ZIhLLi1DeBD8Wf91k6p/+LmptN0ujQl/zbppiy963pcsDaZHlwzGwfdZNAGNGeLIpmFcJBj9VyG8c6IKmIhMXm8Z2nhd/8hCQJXjqrvKuL4DISR+ay94/Bh4ft3ou9rHxnCJliHFmG+cu+j96f8nZV1I6h18Fn2iXemezvcLnXaV9AZvNisoHO4RHTJMUItskYSkA2AqolIBkk20uMcU/FiIXIJrKYpJIvDPmRz47Ak+VP/PCkcIEiJcrIpL2iMGgYKoXhJtTOynjT3HHip6pIZxfxiHLBpgYsJ1n2G3oMC2qNq39wU0N8GfnOMsOj+KB1YhW9vm0QK3lKsAIcb0D89CSaTDugntp2ltrH1SbJqqDAaGw6EmyLsKLkw3u0INX8ykHGCww0o1SSyVuXP5jJKA4GiYnvVjNk4fHxYbbFpXJUSt1Kat1F1Ldtqq4FjQDx26Y2Qe42KVlq3ErAEbmzGC5UUwMYyrxp/MdfccUfFqvaD7l17KJvS5VvEmHyySK88d847xOReoY+wDLh6QPsyt74DhEvuB2Lz8Ft2PbehACZglMo+mMz/e2nyNHEwGQ5QWYP+vKpXF10XD0Q9RecCcL9dTJdZyxC94yDUgkDbduqwv4ieFfZqXtvhHwcW3xyju/XhWhvEuY+9yFSWv+x1ov5HhSi3PS2wIYA3SnfLdTEloD1ukxWFoUgQ9mjEQfd8OgNQDBpuUjJywDBOGIPaOGUyzbzG5rXS3VM6T+F65w0WguerjljNSfwBhsANMrySokQWhSHS9vikmE0p4hDCm35FaSizT3lVOU59QSlBWU9NFmf7AgE/WYsfkBk6hsFJcZ0rJFvYMbP83ovXkANiVZKbdKaZCcgO7eWLobFPCoX0qtMOUmO9uBsWQcg8+I59YXGLvnz5gJ5q8QRvE1G44vEdeV+CbXOAdiSWeSHH21RTPLwKLXIp7viDw6OZFqyFYOyTSSQP/hTQ/iPmrDpUny4UKzmf2bCZQ5HRvOq9bjcGH+S0detLeFq4eEcLx3NUjY5pVj/60xatkTLwfqfqONmoWZuB1PiMwM//53/9i9vmZffhqE9qRBHSpoG/rEdNNVogxxYgkE9sSk9E7Eaf5gFNW9jPKcIi7qO6OjGJbmWZldqKKkbhbmMXdieXOY9zpNuzo5vVc0JHFtOfJaYrGh9LIXPl18HKb2B0PnAoOhwPipL/a5+dQv6ERiQcLbDzJIU0wRWTdnIuiV9QI7rw6CFx7opyRRTdeLka0XW6IUBTSY4J8mUIU7Czg3XowYqOa75PrMb85aPJnDbSMgVqKe0LcrSpeQs5Uxfkrm+82cFVPIGX9LkWQsb9R2uSvR10+ay19+LsVz3MG4fqo0X/nweoDlSozaDFqk3EJ7mkuUAfyMLs93WV8M7fjjJkK+HC82gQkeR8lptvZdriqv17rne8CmWuRzA8Mxofx14Q1YlZxnQZRFKznCz9Md1H4gPAxnYqe277m4z3TAbkTI9XKmZFNXrlt4JadEX8IhHFGRmQy7j/GTe0BDKG+S23R5+21KMtxSyubqiUhC1SZ25pw7l5lKPsX6yeWci2mQcmfIEf4ToZmiDlCfwPPIXxrRO4o0U7YLEuRzwYHrl1OybRY1NmxdRWChvIucM+p5q718ukFzYBcvn5VomXi1h6VTaJL4s8ol4KkuLpoKf+2pP/ul6/Kid+MahMIQ/GVOG/Du3MqHQ98x92lPGPTnByRUeRTnZ5Qe7WxgtjFVx+LcxQFi8sW0eZ06VxMaQIEv30taEsaQtkrqN+wj2Xv4w+8e/zBQT/z5d4zhW3zntAuv4tS43syR/buL07C31+GlfWFdofPGIvz8tVVuTErzRGL3Cohj8Em4wVVFBsOK32LK2t3lk7S8km/soa30ci9qb5e7BF2+AY61KnKIFAWsfL0kdK2PvNYx4EDCFxfP1RMdjZx1EjV0Q14DmbcHSoaeorNSMNCBzgQn0wIaJ3wt3PqjJcW5ScFr0tdXAyUzX7tf8UxS5InjSX1ejzf4CASIpiTNQ2AeecWEcY012GnTrrEdCiad2LkZUVbjDqO3zbh0vBYaf82NOdF/GplM/RJrQdbNcZ7GCCC+J1VB++JGRcU6lfiiL6IzH9o2ST5bx7i4aiW6KWqybSH3w1/OjGKYvLYgTH6F70O/6DpnVrDt5MW25LzQ4GcHt/6eBfAOQFxM8Px+4FyKjzPKlob2LP2QPKJCSipojue03fT7PQDHqE9MQOHnMjfplRFX6tucrBLXKQ2IJkTXImXiroZoSLDi3/Dxx6TBb7+IpwRrMpyAlcVGz8eEed15GJjRimj1iDa7Kl78SeW761jPzzw0WjaNNlKhrwwRenQXbBLuR2FblPPVjER1FjY9TXCsHbVPrvAaGH/Xx3AvzHZsCXsdZyALxlHzV35+IfPL/H/XXozW3N3hOfdZvh2y9O05piTlW98SqGxxTazt0xAQR8JtHRPjOGsEnvHkSqeZZoLUBNHjwB2W43fX6+G9RJI90o++9Wcvwhz7hkpd1ZODHMo+0Juf1ycjyGVDT4tqrJlqB18/fC9UWZuMU1v08ekABI5RVGcdvYUYBPcJie1UjlJ6oVT3O6GIIydsVc1DbCW3r+YYdJkFuKABJI/M69/0DoCgiEePhk5tTZ4OJGHly9JSGP8K90wecZvLQltKqYn9+K/aCd3HGyc/i7lCFV3pukXvX0yWbJ/mrhR6qi1Vut9am9r37TbdjLOw3vQWo3dulS89DNp/4+iSC4H015sve93zXERddUgaOAcLJR/5MV0tt6Zdc3tEpc9FDT3ZwUhi2Om2fwlaxVlgyC+Bx+lkQhdmm0daafz+dFVTizcDQ3hRCUQiSL8jeCv1HIEF8Sl3ZIuyc+GkMh8YF8bAzFt6yJuvpc6Dj758ycR5D8FWCIsHcKZJqm+vBVWfzOV3LvQoh3vXCDPiJrvXD1xPUGNQu9rBGyEF/MO/ssFtUagnCUGsm5FiDRZxfQUoC2KexT3IKqbDEtoIywnjGg8cSsWnTlHdNBbNFiTAKiPoYbaVzvyduuXQ0f9y5Qgpbz+kHktEJ4dEX4Op96XtIidAoA+dfNyu4aXA95S37mJbGISKZgeoGYWspuiBM6fOSyZz3gHgBsq5ArITzNcVcUunw5fqvg+BQjNzQoHOiiV4EvmQ9AIzHJx63zVNBct9LDOpv9+AtV/nVWGa2d+74NqHZOzgOLt8M/c6FYPeKmLE3QrZfsGMpJeidlHXWpQ8eHx0Z+8cNvWCU58tmjB0hY5SXej30e6cID7vhlLl6/N8lFiOdHBWuJxWRBJsalnGYZ5beOlZRy6oapVoQY7kZ2cMvr2j549TliM/pMUnTrVC5ZrRUNwbX9bSRIsxj4a9rLIs5lhtPJuj5zIECOOFdrCHUTrvMpE74erDQLTNmkbtnSiC3f1IBTBaUCslMX81KIFAy+BgiNfymZgPgTfUwaUJTll1WS90Ajkkr4O4I93CcQ8zyMtgjAZVRTF93l0SWQKcYouXT+yEealmpz4ER4eusFn/qg4USkd+xFCX2Tir7VeXD/Uaxx4pS7S+jGfYVZGs9RENOkElNsNj1asmNslKBQj++xEFu4zJAGAe0djRTdcZtAzOhIfZHNXTXpUN5s5UmJMAUw7GralnZH5Zh0/REO+beMP+FLV72EpriYumPNNBgi4M6hVpHz8QFl1ZbLT4FW+cqe2jCRFlOh6t7SoxCTS/mPKeqjy7jEcsOlJpJJw/HKDk0Uv0gY+N9gVBPiDchyBbNkQGTiatPAhAiiRbSNS5e25lCg6SKNiairKJ0LeQb/f8kzs5QZ3UdDUPUPdabzunn/+B7fA8gDeWb0gnTmC2sPuvqnmjDQj52OGQl7qkuRoqzFRab8oqxl4xK9QvWtt2pfeaZpZ7puaAQuud9VhHD+rSVPbBfwa5Et9PZmahke2NIrGTikr2+3bxgOfTd5lzT+rQbDFuqNPZ3g43OH5jfSiY11kI71WWlpxLK55TbdFL7v6Zz7DX0wtKxe9yceGCY2Kuu7rs+H7TTA5rLz6e4k99Cp0ac4FgplwE8+YIPqq+552+xBmpK34k29SByGm9CSaoETWYp9lxuCPSHCT2WV5LTbl7ZXu6vZ5tgdlUfdPf0hXlMeUAiSEg0XdLiDCBGqDvpv0Sb/ZjdS/ZwhyMDNYMNG+hafgnd8BgNvEQdqnN/TLRb9MVhSlb+K3kDtNMb/q4baVjy4T/y41RbNeWAoChyBEFMNtdVsVxDUkbKtFuPoOTxgAiGnHm3IgtL27bh8EVBe56iKsKVbhbGqo5Jm9BPslQ1TPVIBXcolcurrNY+9qICRUjkfbOpJqXkzlQrL34T1/wVlTRZPncAjtQHzGMc7iA0JQDBRijqUdEn/W1+Qe/OgJOULwzvgMY/KkagcvhoXfuGlPMbjhnw005FOPka7Q9ida7H44YO91Lie4LnF1e245E6Uy8/fNZjCba+vtFmqbNINcFEH2p6uv1XtmC35utNzAVn2JOIYEn1fZfeEpFTYZKWNuYFgwv4bd34EY5zlTgr0rwqTn4lkudIo0rppjkxMpy1U21EQX0ghSwhrcYeTGzdro2S6XECRzNivIToA50vn/yPMWdgohcsBT4JvuIRE2Up1Fg66ajdEs54eNGALwDF1aZ7rTci3GIT7n2DlsMG17IYOwyGPpbajM/2JMwvasx55uxZflzr5eMsLkYJWBgp8Hv6tH0VXyA/gsxITWeX28Mu5QvJbvHL2Z7+GUBXyif2ToGXAz2qF13Jt9WlYL71TbmXFCF42Ybm1f2AzFvYHN+TEhZ2HhQMv1snXICjUxIIHV3KnB3s7kkB8RzirZYNC6H0aiMqGBnes8p2IbHYSZ7LuYlKcKlOE5it6ixsUlQ8wTFhCU8bf39PKk0uhbtj+h3GUwtW8ZGGlEiltTGsvFs1p0CWRH1MBFnFJAek+DTj7rXnCK8SXLXWLNrjGYmTvN/6GKgVqjLiT9TuSMauIHgRtxMs+TatELHtpk8F0VBrcJD3SYZyYvw/dqxMBfXUoghzvtUSrrudQIrh4//7q1Le+KTDXSH/kSWzatDk+KkWY9Me9dkRwYl5Sidc99nQvEl89XMUzJJPj0UOAgtFi2cS0f2ZDl+Xx+kO7gH9lmGj3cEgd/gisI5oCFP2zRTvoiIzybflptnyPb7UG4J1GNh2eYuOrGq0TzDXFz4d1+kEJXMhdDGXTn6saIXgUSjBYxXozdhoeholAkGBmNfjJn9VLFuW3TW/fMg/eMyRmhuZNFWLWz9p/uTSP5PYK0YvNEaVcGC5mcr178AMDnv3hNx56wqbdd9whLm9wzumoju78cI/Yp8QLwvPRse0HnzVx38bf2U97mx4I9amYWLuRwWrPbC/FmWbB1MylqPqXDovipowpy/w4JIQzE/+O7/GA+SQF/WCzWOtThbmxjdZKCxU6/aMjvfzEwRe9NRsNmxU0WspD9YodTUeO2Io/4ff2RVcDNBZvOhsM0w9JC7FPW5/8NkKC67fZtyeTT+zFEfJ4R1+fmUKbpnwpK10RjCOAum4T4iYFyULUl+urZKABvrniA88F9CwcMWQz3TWSfwlTpLVMazbJDAno0k1dMGDl4Tq7ypBxzjZ8muhmROsvlYahuZ7/8HifzDD9oFdrnamszkth4jL8a2aJLL3GGM9PYPcXvE5xXDjvrGPxxipb3hOcLmFutsTK6p5Mrwsy9IzGfzMoRgLoMKt/V00KXIXZ+uvEY36+RCXbXLpVcTz6GZUkSHeWDkWxYjyEct86UqW0LCsESNCFgyPka9yoDZJTLKrn2nLijzvnRxQO5TwTKHRZ4ItFS33G9swxGbpVnT9FxTa3EE+PlcDhZ9E8r21FclAuASvx8jmlm4m49KKSudi8g5ROq/JAI9ZhMn51uGfctSnYW1oD0zkdzfpxcvcXhZKQZ2BjWwRO//O+VX7zjtOU1StrOIZl6l/MpUaL9kXJzp4mKzapt0EeD0CWFLRX524Koi03IDQKl4eyIwC4k6fLYxyTvPj89CwyJY/6CpTJN69YxobUw0tGheyIeaSw8XTO+klFtOV0Xo6zITjugWZcvcGbpjt0Vm54Vsk7GdqxM/X99fj44yYiFgOBjEw41QKxYYaVKMwJwukNC9i7gG1BztUqIJdUuNgupUaqbfh3dBsBjSlVjvDu9Ba3VaQWrAoEJX+u6lo/91z7mtaxTc1iAO8xMZwRdFHstZS8N3OU12qis4mSB6h9FbUVKnz25de3n+85j44+Rv9q5O4eEsd7tdrh1Q8XHT0RO9bSwe1bYzGd5FlsKp/M8BM/OUkzZZC8NAQmyQ2i1LzK0+ecD8SQKIRRd672RWFmY3mC5lWK66WMH+kafL3w6T4pXJWqCBi13QqIcoXzd3ZHCo4Rb4eIizqEo1gtK0vUfCObhFsCuIL7FwVLxNqJuZiWfg5CKxh6bQW3cyZ1YyfxkYSQUF2YXPMio0PYZk9h6/N+eNtyCgfy0xAeFH3qmpwPGMJ5bGjU46J8vO849ysa9ogPNDIEg2yZaWUUkpFSimlFIKQlJRSSrkS5q6dUbM8z3PD8qYnkoZlmOhlRhIENONYJ0AdYGVuai8oUiyefNHES6SYM7y69Epm9uq4NYwgvHhQpr9s6laBOGDmIKvibQdobfPQLc7Bb/8777ogKL5zdg1NBc9ylXeNPtSKB26GhoBQz8NyzOsj6yB8a6xs+vdofItpgKn+MXB04zwSxDHXnxDFPgzYQ0HWsicmUSDU7GJzkcRy0vR2FfgNIz+lnIpZZsCglTZdSFc7DVwd29nFlwy8ANi4kNGOpEx3BmjZMy4fk//vpcjbljLUuAPYmHkaTRhcHsMyM0eTWzrFDkDnG4cmQvrfYWXfxtuNLscxiARkIJIctbO6KtVYtQCbLXIk/CoO7MzwYoO9r0kRGckPov+G8YCfIVz1EGAN0KSaJNoYHzDK0x5ugVQugDJ/LvG82r2VLH/Ska0/F+tuhTq+GI8UPK3Q+UIEkX7/rDBpKvXl1PB8AbrQBYtHxxEF1tdwBkR+Q2+hI+qjhHTrd4ZxrMfn9lF/Uxmkzz1yT4uza+H7HYTtHpQNIxYMGcBsXr8vLjY6NI92sDS2+8N2jPyRnq0fbGmMeNAE7+8BhxYJq1zzROYxkCb1eOYQGzDWI5gR+6Za4I2HwA4bUXtKGQQ7cwrehS+8l7B8x0zrom4JcYAOaGkyOVuu9sWBJRgQVpFZB0P2XxkcgALrcBsOZQxOpNQq8mfJAWnHKsGmIq+H76WVk6i9doRqwt/HSLwvlXIgpvNbVMkrCgJKdBzZd+D3KqZqH5+NBIL81MLyXJwGC81px7EmL+No2m5ji+BsQkRdKtN8czxkifBGmAVByDWOzN5hShyndUaXdD7wHgwlN7pWw0Bm1wcFg21O32oafYKSbcmPMCooaXRIujKbyUGzIiZFPqCvIGf4C6yNaxqXB/RqSRpjU+gKzAcG5Zr1uPBZ5IksmfWdhmXbpjGe8scruI70w+FMLNy7/tjYB1kEFgMjjZi2MOoRlpRe7e+k7DVb5CT2e30HomX/M17/JHvyf1ZojxpOgqjt9/+Ah3cY7FDWOx8TknK8x2Eumz64GdksMooTdJWCQy/bypWfeodNMbCNVJ9/gh6Uj2GLzKoWHjFw2xVEQgRQ7m2NKOCCkT3ND7eQ80cEkEa2iYuiBEpxGex2bIybJKjLu3Yw8hT1hvc54f/09QT798IweEddJv59jhm2FWlvplkpJ52gnNVGc0P1Mj/mDVJaNLpxDKWfU/DJ6GMVRM/yGqPatUKXG6cWBIvVAzU9EPuSOOSwYxWQxfTq1nonrl4vyoPQM8N2G1Kq1qvAT1MoybGdDNPtpTFV+CzbfxJIPw7tUgHbxwltQunSEax03iLBSjqsvTOmck4mPaDMvOkrlvVMeSdOcRUzytAZvq1+mWSjBMcxBDeMJYYdFd2RZwQuoEBWaesMVFFndkAgjmwcWjJICj/4A2Lu7QlHQf7KoCEAoaNIiHikkJTZyoITvGV9wsmjCl9sCMMbhvgmcW2dqxaM4qX7pJqU6dBleaPqGKRiW8w9+Ytal1tzOk0ZM2LVe82tjjcxNG7cBObkqele/V+ckRPlcjd1qMp8HcltrDl7iVnVulKhbF6834bB+vGw/n0OB2Y1So7xNkAf3E7mkWQoIHMPVhPJMw65z2dpCVcX4mq5xZ/01wfJmXLlaHGY86RSuTlHTpmK9feGQhGRr/ux+qySdXWH316zPqGaJaD+p8aQc6akkU1KAkdLfOyEU6+zvC+TsrxQaudS2OEyGQcMKQmnlGbymAUuXS8bG4EiWupCg2DjAn30HR8iQ4p+nf03oQ5FINCR7A9yX2rf9r3UIkPf7dMnVVBz8Xx8cuQijH/feOh6bDPIdLHmq5mXvwX74Y3+7ecfG6jxyQYTNR0Tp21ZYnU6cx3ElF+9wPufEFRq4de+vOant1Kio0VMr4tppEunUwgd+n6Z6yN9DzugwtSv8L4n0pPTfAvyNIDGXj8X362a1E1sHS9F/Zg/X5y0dmTJZ/yEPFZfE7/ErdIMUOairpe0pfssVw0DQ/ktl1D1h0/xGXqLgqPFDQiL1jctMb6OPfyWt3t+9OojIDTAx1sLVMGFR+YObJ1tN5usEENbs+zLCWlTOlBqhg9K80OGXQdX6up6S5dfci/9CnT5iFl3/6IKhrQm3XKtsdD0mDZljqCxrsHUws3IBgpoZnvptKmhcMG11qWg9xo8pvcEsfoYuDNsmD9XNiwjT/JFyA+RGsQFFXrQkRx22uPkab+BzZ+9TkzPkJ6/QOtda5wr3XBSeefdyZlod9WmDO4ADvWP4UkO+lR4VBj4rmrnuinIV8NRCBFf+9f1kM8bpexUtfnmJpaF44xjWmayGRTq0laZhEKBMDYC5a3AfnYC01yP9f+EiBSlbQm+NGRQEJKS/euMH+yiFqJ4YUzcKgJHhOZv9bR4mIi126dx7l09XDgm/dYIuQw8UuXE2/nAtMPiiazD2OgblTlTamkplnkXXTI9TlFTlENT9Jf3fTc39+Zvu7kJYx8IuN7rj/dtbj5r/xK/jk8hjXkoi/wKsQGAeSZ9YoYD6JRFog63GuNVm3mohTcYX7PQMI3W6owrwxdZN8cQO+JQC1nPmMndnHBQmUvF26XsYJ2TLc8+dWChkyqOEHNgJCcFmHQBm6h8d7zC/dOkXQEFFOHUBaKTQv0Yi5s5EqdOfJAYvbR8JsM8UMcwTxM1VEojFe57vWI9Dr7UYZMnCU2CELzFkRYyjTIKk4BUiebxooP+Wi6vcBpVUu8tw50gBzyZiDlDikXCo01NnfJirrdAbJWfV1UXC/WglgVa7+QBz6Hr3qp4qaymBGaOAdtSUN65nA8+d0939y0YyCOPDPD0U3+hLUKYEogjWoHsaYQU96N2wxRBR7GMitKlAXL8EJHPJgO8tGE/MPabwR3H5B5R+dX4t1IwL7vvb689kuIcLyctD9FWW5HpE4fVzfc+0K+VWJP45UUV91QCwN9rr+mSDCnfY3A2U0pxN+u6OMw6PATzULT8YaQEe13K/DgTn+aurDEs5+bodpb14Xo8QJE2LdJ6NEARpnIRuENRKslssaZS9vE9Bz2yGkkhn7FWdwRzEbKb4InEXRYWngfsTL2dzokVyNE6U8ZYltMkbdzD+DeJUaMAxFI/0AKQEkFQwIYVRHh6LSJeMFYVkZVu1TVyBeJe5CKrAsb18WIe/xqO6/dN6NTiOlJxjX7xlna1a17ebFM2HMN+uBQKrREcegwm/q3rjyQp8GiasCU1Do42Q096s1jbVHtJAIn5yD+aCvCzXJSDJqY8Q+Vrr9T0Z7SqjaPRBpw7EY+nhwkqSHIQQ7bp2VTCQyP05daD0o845ysESLAtf0zkJOB6Nm26PFypQ1MJKT74efKG1HQonJymG5SMTw+Y5EU+WoFR3We3S81dgH8GrzesPSl62Kdivo8035y/68RRfMCXToFSciJVcvjCi+zayRa3QlHFPSZ5+p5L9TqHcabZ0W2OalWFrXTU5R6oDTWWO48640XOzQ58m5XR8kY2ZdBg7EFLh6aR2Bn1u6Bk1jltZqnDjHG1ak26xURHMaRBh136eNXUBiM0aBbCgFH+uXRiKn6cCQCRHZ6mD60Wvo3vEvaCKZyJYVSZguAg3BaGsCMmLJyQqWGYq+jUGBYE3qqinw34bBD88gqaTGNZJUsoZow0iAhXfIGn1/TunGk+42DxWvp9ybaX2ZRMRZZPr9hRig/5GbvE8i4sn8HFwbSf/yHnrU3GUQcp+xoxsUZKg6G5vZz5WWvG8ikUK1pPXULMuH9T0XWsAOzidXiJgR0o6VzfGrobOH7qKljKiYNgC0/OCPz+gFC6weX5NBfmTdhvQlNRGi2NAUXWqNUmh60JUMIVXo1AqhQu1jvCadRZDnBxFMmY3buGiW3jmlU2inn2XFyLygnakVb3/VjDYDrcrOBH94ylMvwUQklIWJy5MfJACzEpw2Yb1+L+8ZEOz4G+jxL4warcy03u1YYlKLE56fTS62Ad+NUgnVdl1PpxTpdgNN3ick46jTKZrD6HApCKQKHkwx6//6DJ/tVJp/z+Jk11xHVBsbd2Las9BwP2QrZ+ym054bvchBWXD6CB7XpsDqHlm9IrQSytFIeekpM/ii7P+fxBTwfuHk9c7U0Kf+LNHoNCvE3nbU6LuZCxhLko1eAmkdftyuJCbT9b9G3LN86YXxpIzQPZMRucJK1AlSulCLkuaeNoamJZJ/8AFDiBcXECs88dHTPAKI+iiMklec3HQm8SgNI6/13J8OV3PePkIL0WllxqUOVGm/p7w+bTTDyBOk1Z8Vr4LrONZZpc/bH8NI++zHbNZ11fgYb9biTcv8yu/PkLQ1wDtriZbbNzj8OZ+TD4Pq5rGc0MpWf9ylA+qa6h9bXtqBaMGnfVnPcvZZWPADy4idwJ3aT2Hh4dt1z1+IOlYb8mYVsfpvLvG4GyY2/ACvNR7Nn6THJfrso6qVLu0bJNYC8nqzd/5KONaLq1b96Qp5P9pFN5jKR/Aj7gSznxOh0NUC0Lr9BzkYgHv87Llvw/p6UTOBxU+5WsMn06PGz6snmX1aWL0LEuLGpH7ur3yvVW+1/LZYyAC0n3IbrK37II9NjLoLK5gvlyewmr9hI13c9FR2jSVNeCrFXQwiHLYKBJ6TEgzUYT1VrHLyL1oQV2Ntgpnzo5FvZFu6IDvVMu23ysMB9F18BOXETxGXjLknvCkz7twKjGBXFcqP1GWTHA7VA3COh4x96fymIlXdTsH6AyiXdBcU7w3TrkpkJKbGniweny1dcjTXk2jXkdtf9bzxhyP++855AZB6qsDcWbvIVpDKSb6oQOFlyWTX2eYL4OvfKejC1wWd/u2wqfQqihrS5HlHQGGUsulHbgFzaRuZPWyboQpH+rQ1+l7y8kU7d7RXk4aNZ1EZdFkdyIDGixTh9UyO5P6jKHIlMJXR5MvCd5Fjqfyq+xEVCyriad9jWyuGnelLBzH8RXcSGP8/7m4bfvP/aw++YD0uAgjMs0OzcL+/WjZK5f1iO3dHvqhp8A1XFcqmZt0YAU38c520UlguiDSPkRbfaHVG6we/sDfdEMvLEjwMNd69Et8vVujrr8ugeWd0jOBDZhEyFTlZjO4NqV3LJdtVOLSwXXQAw/bD3AswCPHTMaB8BX4utGNXtyM7hL20AEIh2JYHe5/ZXDPBn5Efy4QeTo+1Xt3hXKYzD1NDYh8ZAojHqfKZxDme3Eg3YGroVHgdH/yVOFgYFnQG4FKueZS1XLzAKhele8stKBnMWC5OK1438ZifspS51vF4OVVJR6ExH8zj3Ra0Grp5Dtt14W4dnQqwVi/XeTH5jhQ1pUAlIKTOJj5KUEgxjDbufhDyTAsCc4Vzk/adgIuoJyVSIHLWT59mFqDjgpngwPdGe4CX6XdgeF4I8gb0JaJ2S/vQ223VK//fl8+ubt/UksobUfuDxzjHHYhxHULhtT5hH2dnht6kkvSR06jtjdN6O8e2C+gOqi6/KjdMY7rnQTWhjLsh7GJlgE5AhuLAZcjVXBB/WkWnR5mowL+uvUjlAPLLej9r10w8kSSNdVpDrzvVZSMrgKbElMF9FwEYudM26lpxW0x1Cmif0ANTKZHCe9iwwaB549AbRnUwaOtNAwIv3rYhC7P6BZhI0dUipvXtAvyAp+DK/gQPIwcc6CM7t5Q2D1ADyYQ0P1VYHXfQXeK+aEDaES0wZs6hY6+Hi45BW6F4eInaDJpdh/pNPl3xpLFGrPvPGFYLjAhxOMtFN6Lazg8w+bW4cM1tnjyS+TjP6myhjVRnYUHpTyjxkmnjFWDVB69hQuyFRCQNKKWAwAS0Qx9/v7nejNSVFr/jWoGESsI2cgcj/SgczmNF2auR0XC8i1bxy3xyhniKK7nPmFJqMgywdgPT+KO0AVy0M0OH3diQR2ye4doRmuR0zz3xeAs6pYU4rSad9Mhf1m0QtVCiQtAf7Br9l+feO4KzlAU4qxV3oTYkWXZ+6NTvCizoknsaDaPr8+mb7qOH8+NEr+BRWTN/ECOyhO5fh62JRLlGkrPGUMURrm/1+pYB6AQdG+ZJ3foCH3ptXIkUkYnzlWeXDzs24QRvKTeJsFNi6LXQXuBtlxjqiBdjI7mYppU152YYTsyo7FXOseigCvhy3XYLa+Hkd5+MWNCRl9YfeHMMutgSeGStgdEkEpsSVdvtDTIYuXceuhugr6WaEb0cphXdLw9dfkg3Jx1P/ToXhOirTlXwdpIUumMhtrdvYXi/3dbVp3Xz4+XvynGt1ivoDxTmQ2s7Nygoylbliw9DeokgLkWO3kXgM/XHsTFtjJRc5Jc2mk+w6og0wZWg0hqwpVgWMUEHISwYkZ7uRZ+t3zxZBNB7eRAmbgugl2pndCvfvuT0rfqyg/7qFoeaX/+Gl2CFGfHPXDEluaRwZ2hH3ki4qN24i4wkKaAXOl1JDnnJqPeTqBnI95OoE8GiNVoAQi09ZARE9qMPrmSA7N1McoLoXhpc3V4xOD1rXXgXQXeYkrtLNOHPXkT6Q+uCaYVnXB9nX0s7TDUlIf8y6u2Z81p0jBh1UrDRxUSFFK5b+ZxYf9hi9u0cRlG17l7Az3Nr/ZX/bckERglKNIEvrFgdcEjfHS1NHQCdp1sjIo2tD8qyFapwdElTP86PkctBJSBUghlSiCtVXYnGRxWFATeltf+RKpVCtorHUzeFZ6t6VF521x75YimMT919IAmKBpxYuBBOBXvgsB7NW7lh9GpoqxyJ54sLOqOz7V5yE8LiRasKEOvoZ38lx01SetQD4xJ9NxsqnNcPvuCusqwDBJZFIkvGfh/nYRJfCLrcVv6Z0qcmWCrQhUptMJMlkb1wcDjqslduAnN162JXa3F6+T4S03fFFklWTWDoWW0mxGNG+yf4i/8F3QcKUs2brYyaQITA/TAvQSMweIOaLrEvCz9cAuv4NgG+vVSAOM/0EfqrGeVuO9sXTgLJq1cPjhjOIU5KIfydg2PIPVxj04E77fg5bmUMyqh5vUZhWdqbML1AG0dZPFhhZH9exCreUavQuYbYFkCgxSaMBBdE3/kszGPK3zH5Pyp6280wAb3kHguqRuP05ripDeUDJuqjOG8H9aTl+3GFlORAasgWEwG1USjEe3Y2lHOvEYcJ7ytvhcf35l/vyTUKBNskETDVD5agbzJ7vGkEQClbrJd9NfoF6ZS8Sw5vMmsGlRPWGfTHNtvmMg3ugs2kSzrhL/WpgWHVxHPm/P83rTn79NIwpOcEgV/5ejpe99kiwDiRsEqSXI5JoIwAyao8nzNJE/rZQDXnUDmlBE9jXz8Wj9t4us3XAIzfutBQQIM4KTitGG1RjhRlT7pRAQSsEZDqpVrfMVVfyaV+FVzedNvhkJOWKz0Xd2hs84f5dmnTrV1TsdiU4DzL25KSf596l0OoHA3ARRqKhHkisn6Fx5I1yMU0CmyCjlkyuMdmMjk0e6Px3nLyVfEHnZMFGmRiqheUjXCieFbZ8e5ULKRprDjIRArUwtSmw8xc35LHkeAg03PUuIlsmkZzI0qwrYQj/hizoWeI3OcuM84BuRaTGKZxvzQM7sHepdFcBVOmRV1Mhm4MgZXv31ELH6q6EvuMkgGOf/OrBXrP4sJYd4gfW6ki0Yfy4weFYyC0w5AWcYIHJMh7KI8/tRuvxWII/zzzHWpwz4z0zMbkcJtCSvRumk9PSOIEweIIE2kavWQKxP9MZML9YZVNWmV/l0L4zJxZ4J6rsxKh3/R409DO62VWZjvf5p+NdjdbHVT6VRE+rjnQF5/HTYGizJeC+QW9XlvFszciomvO8Y7ljEGivVTO572ueKRoRc0VKYeBIxIStFzp3YByP/GjWAetRaeUXRTXDnczfQaDJe5oldu83TkuGcB2BU1ULr8L4gS1K84ESwfhTdEGzwPDTq4/ESUHRjHURNsLhs8GP82BbFe8ZQS747vU1gsUBL4MN6DdM3Tw1RO6EQ7CCRlgFC5vJ7y8bFu1nMkojTVLs67R8AURc8BMl0fm3JCY5oIXEHcL/usuMQQ/OLmAm4G8hA3sQnOJt98RqGk6OH1FwJkl8tSBGGhWgiJ607LiyVSlxIISuP36akUxlKYq1j+iq5H3R0KaAlRe+vxUwKKzERB31oPepBlk8lgU6qMWqAz1z7tv7yXaQKg2+156MZhjigx/8yDywrwLqVnzIYkmowUiJlMTJUJOiYHPUoQCkpaSXFS9WoRNIMxrRPMgrBcG2Uv6uxdeRExvzt/HZoyDk/Bt3VmaK7bOIFmNc0uJzIKO/spBZxMaNElNfMEXMoJt7JYZWJJpv1vHWe0XsCM8inFr6w307BA9fSMioOVWfnD5Ci3v1373X4v2zQl+qEBydw/b/qHOvQ//hA/lq2T1fv5Bvwn7VXq1P+S0n5Jf+Iv3Ls/SMwx+D/MjcmMO00zRun/S8l4etCgdpnVq9cBL+hI6sy/FM+HjJkk9qYnj1YHhwqyJyxW38NLv8lT9gA0AT/7XmUwST7tbSe7yKpHPTbsYpyRiEddxQXY/SSTmityg4waV6VK3/Tv/UH5z/Ofm8yrIbyH61gtK6SO6l1QcJDE1QiBhKNrWcHtFqs0nsqPYFYPd/k/dyGzc72+s0eWe1XSTMrtp9wLVhhvyb0EMA5ozpSDu8X3hJh2jSPSNX+DCUPZ/jrZK63oHrqr3jRGm6p6fbrron23ChgF/l/d4qAoilEdSCVHx3qhqmzXMlfcpX2Y/WBzheYssAdzz6tJoESlVFofaj88EQJVrlPzRR+ktMw8XJC5yj76T2xKa6v0+JKGxm0ro9jqiy/02DFls83tUUrjcZAfyGWbMEUpK88cLw9VJL8O1b+i937FUXoenJ3/F6Tbdjv7i5/Hcv9xVTZunYOrotWFcVVLDyE/X+yFGiYL5YjAz3/Ciqq8fratk9u+3yIXB//JCMAeht6wyNFKZeU+8Tm2C3ezT58p/8cnLr7Fr8NVLbfpMjRa/m7uX0//y9FqGQm4NON9O6OW2MLerae8LAwR79VCbbRbsVeAiY5Ff/ll2+aum+ab4n4W4K6XRQvc2rP/Z7Y2Zpssi8veIQWqMRPKXK+657ZHKjm2JUn26DnX+BpPWmr88p/1tlaGXgo55Kye2umpHHKZ91/KQDbRPEp18/X9/fN9T3e/unfYfxHkzW4v0oSYO8LmpZG+Mbzmrmz+MKB/P+hxDx6YleZ5zW5R1TiT2m87efojrffFCpqTVGCPyk8h4EeUzoBhZMlXv2qe3sN2+w4yFVYl2QDB1+zoiUH1qwi5gJqL0KtxicFT9svAcwxfD/jY03NglAd1gSk5r89PUwSag7NXNA1k2ERGts0KuLJgNxPhFcPttoheT6XsV6+VoEuuz77fCjzTCRHLeEEemky4xnMCyqqI4CEhMfkCd1lOMQzF48gKdS90yUPUjuQ9U0fem9xI63ZujibjNoSl10hft+FQ/3pPrPihs+BcNWaaiJXqDQCDx8s6HkAZOrfQT8yUrxD45nzfm5jcwx1lR5F/TKJtvdfNYra5D83nkIaE9VSsIGORRhxt+f0zIaTEu0oHeoN7aggoalQq4f+3Xgk5p68ffkhd36y9GWqyZOrTyCONmaXDY981d48hb82HOgvtweR1ZRbHQviOrYxgsWmrd3GweXFcE5/JCuuA15Sq+UHZLJcL0hmJUTaX/PFZJGi9VheHE8RBLtqKOdeYcrly9g7N7P8XRDcv58r+lj3gvzR12LF1L8uk0m99n5x/BSz/lmFaMAbUcwcUHIiLQJ89okSB6QTUbzaxDAkfJYZ70zx2tH9kYYzEytbEl8BoxlhHakTeGGPBQP8I9hYoasT3YE4nmzPakx0TwHvrbBMC6RbUfzggEAtdhP7mIAKejj2tCKnktdBQw/QPv9d6po/66wPNoXHRD9et/wzLrvpff17+231PDwPv7dt9Zjaj7hbrx7Hb/Vxq7xP7/df+8vV5/T2b9zephu3ny3OXPnbj1hs0qf8PD4ua9rWL2+x+Fp99m+ZI5HkmRPRK8aZMK6UH8TMEj+JBUtnpotWxh865Vr5i66w5j3dxHrmkq5iY7whUlUC/YotqaXfs3XJ+hM7kyX9zI3Kpf6SSdowJNMsk6H30eSOwbhVuWeYuSM9Miy4c2kfLgU8TSif/n9/xTuLwj3pg8XEvadXFhWfLf1ixEHTF2PmgXTEOPDg6YJx5IulD4zOV00HkJ/2c3fJ+sSFNSfWvNfmN+sX/t+bF9aXfLDmlZXyr3Yr1nv+te4tm4FLaz6wGXnj5ZZr58Xiiave96/Y8SX6oM03m4lLbTZcTfxj8QaBB6r9znA0oz/M4nA7ox/M4EWemhoj0wWDGglj0oWRGgZj8oWuGhZj7IWFGh6jwAWB6jujzgWF6jCjzYWVGlJj1IWBGg1j2oWNGjJjzoWzGjVjyoWjGg5jxIWeGhpj9oWb6jYjz0WKmjhjz0WOmjDj4dg1oxr8w1g9Qxn86fACQyT8xFgrQzq83OkSQwa85qmtsgtM6qmD0jG94tkoIzTdwTCpsheM1KmgoivMwkUNwzAMw3CRwZSoLgkWua8ulw7pK0FyD7pbwUdjAkz9GHmVsfQ5v3kYKg8VUcZNZ87e+J3G2Ux0rYsA+yEYjgvljbODoBcl1XFPNrTvVduVkxNCXfqZdN0DGsHuWfrQi8V+A2dJztrMJp1DdY8dWP1qmqx2zAgBEj1Sghg0D+4w73Tmx7GXBWNOFvyDE/FhMYvzcsoD878yzLg6mAQmNF0wt8XEpgdwrnafc+bqRZ8MkH8HhvyJMYcFCsU2X+ZF5KPuRjwP4iUEY+JuI8rxx6YtpAMwrTutQnl/uE7hdVD2miPYvDecxnQKGwIf4vySag36kZRU/lGuL7XJ9sLt40NnumeOU74IO8s5kz8NtDabYMZ3l0Rv4QLw2WQjrgO1QXsYoekqizYQ4DB2vzXq2HYJf0kkH62g7sMnp5ZHqgpsLNkTLYp7hqhtzv6JIUWi37AddSEhO73k6gj5UztKM9YCD8YSkrNjYE2ocG3YvZxUp88U+qJlMgwn0sZ/bVpGGvwBALftMaBWkAdEyXDUAijPRbvsWtIajMeJHaEClPkkbeZ+do2rA/5p3rtSJ1UnpLcNMhsnK/ij7Bh/DD3adowUX0JU4YTONgic+jIORxKSwvyqmodLSFpi/jEqLGX4DLjt35A4OhLJVw6rsvbOoXsLTBWxnZtp4yCQ3p/FnVdnru+MolgYmWf/jS8Gtif8dGpvyY8yXG13SWul6OU5qxgRKhseh9h9y5/DyONb7iBLNK0ER1EWrqIglxrz3jDakWJyHXg+D/Le8nRyZiusfJMcO41liOjoh5RjIwtIzs4zO51X2d4BeDE7hI1ZdS7OL+xlioD1Vc84SRKWQxKoSEfWIfHLQudRvdruUvgcwrceddI2FVUkFJXxreUluweg92efZy47X7aG9Gw3PSy8ObEEK8g8ifB1WNLzZgFW3ov4PY1Sr5vt9258un8NNFGjealLsIYobzy8+1zk5Sac0lETG0aARe6ixlz0sarZyR1CtpvFCoLm6WUb0iN9PodDzsgqInkuVY+Jmuxj1sytdDY/d7SVbabC/hOLwMKZRRU/fBixGTZwdF3isrRLI0XSYi+EVy8LWhXzPuPxBMCh5uQaee4AOi3JufSAqrsfjdqroZf6dzOgCY/pqvO2JNm7hCpUstKMU9ona0Aw9oeUjo/OuDI4T5GdZXgHmDaYIaL4I09UWYq2WKTHl2XQPK717AZvRcKUEjUqTrzjB+XqlSea97iWndKFinuERImOQvxj0Q0aEAS1FVF10Tj4k6pM1ABssP9354j27LtmqNYfEFl/co5onhwxPHn8e2OMjh6Y0kOvz+t0kK2WFA4nIW05cuet9RXAkV7bNz8v0ZQYLejNdBDDMAzj9uecJi/yH7vmZ9MdVffpt6DTdXc4e5YwEKmA5XqE4ChE5j9mb0wYol1e9Ppu+7m/O6l7TqUOsENbqDSlZreESZazJNGKOs1GAuntoy+jERhRQb9O8fmY6onZNFJcuzANBSkhsYcOkWVp6L73r/ljYN05wimH8STOmmc6M6cDsquZ4SfYfskHGUIZ5qF3vWIgKixilKSJ4kRC7z15JcncggB1LAWmrNEsqMvSLPb8jmkKN+TI2UNgvqVJkOQC/p3IDLacCc2keX44VzMsXz4+eWE/TJlM2xG4QxiQ8OfEojoTl4QTxOPew7TxjF58m2dtQHj3hel5LsPuiEgSNx4zQy6fYS6D+xxELdidBloX40MtZKV6fjQ/kkC6TW8oO2vBBlj4vYYhI/WysEUGU9TC92vaEvMlHuYwaXb2fEO3zxA2xOm5UfSRwVEa0XXDTCvXzQsCryySQ6nZ4wVqSnT0jHpqOsjcvovzcNbA6QbhmKziI7oPBV76WZVcsqGkGOeOqLP3Vkn6rji+M4Rx2XtNHKXpG1/JvWrvx5T5N2pCSX2V8z5WYMatpHAvWxT5fZ067DSc4o0E+YRq1NO3xJv7UbxZsw3SnUek2nRPJOnRMWHuoH4gi7z1iJtuO0Lr3dH79RQwn5yE8ZZ5dJ6GkByS1bAc0LEW+D2SvLM8vpehonOr8MRa+ARcqsSMDBfe3mc0cJZ07LmELgAke6TNa7LRZ3f6qeFhlkOF5sVHRUm/ZMe6G196z6EWDfTkbaESf6X7NOuQS1QCgcyvKzYEDJ+9bkLeGV+UrWNPA/xn+0GTbE6zy/mb0NGhsvi4+dzBjZisFjzZEdH8uLJMRI+qL2MWkbBnrbenh0WSITKgM0liPIU9SplRC3TRuYd4KRe+Z35AIPJ27vRIXFp3KM3/HEQuyxLFRslEYLiwE+fxjkZ+uCg02g/1ByRGVI8kPZ4HXF7L0cleZzERbOTKCf0cEuTwdhqVyEBJNClVHYcvwCSBgXbf6TKnNfN3nK2HFkRgzFjV5nlZZBa9uP/sGf8mzz0IXPA0aHzX3p5tQWreWINAh23xeTSxAlNwgUpWyO+iPmCOQJoQIrJTQZEPatLJ0G3f4/hs5uXbjgjBTjoJQdYoN8NMUBR+Z35Yy392MHDOrtMTRPq7nbwj1zhDOmLQco7nuWrOTYsxfDXb/ek8vfTQgYt2uNLeRUL2903H1rlEb6PpEwvmgHPCB9eJuzQ2SHIhRVh6+WMLFuN73iWX52Y+eFWcm/+F92HGLs9kfRNIvzUEHRs8aXuCEVmF66L7NV8Rza1fCci2LdO0JIy6WW4S/NzQC11o+zFRyMc4aQ6qTYheLtwJs+l8JARnxJ8wDMMwYsdgZ/2yuwttSRotgGJm1kT0yQIIz13MwaXbwybKmaCiKcyjs5OLMXRMYLWlL69iPOBofxWJMxL8a1Y7z0I6reldBC8AP4qkhEWLOr+Y3U4ceq7o7vDMC84e8pv2X95LZzUxBQwoYnmpGwdfEbR3oAFvyDDMHAS2lHeiIROUizP5djpRVfgYokZTpibS8338BEnybSPXYUfGIELkqrirHqgSVI0lEuJGf38W2PunAyppQHYLidoAuZ5h7DnKAyqZQW6qln57qMqe1OWM98vs5zc8wqPzQZJtYiwBMpAHUkE9NCcSyBpBUPPBvVRXIWTDnlySjqZE5NVC5pmWXX9wAvzk1pYh1UZZibjFF6lhETcMk8QV/z3DJtunfyLvtbS6dvh6uFnQL/Swcg3iEEg9GRTXnEnc9wojVUqMD9bB0FpVY7V0pe2C3aYH7k8/5tKdeJs9EvOias5n4QuJWq0RcA16zcSEx1srD27ctSu+mAXIQdlmuc+a1H44ZVDa6mZkiJPl+2/OfFOP7p99JhHjiiaJTxrquOjQc+EenYS3H9xhTm2fQcdObuIw8c1G2Cp2j6Gt8Lf1tgxSzeNrfNb+c3sp3ne/REnwKjVP5h3sWub23Cu4XbQJV0hrN/Md5HsX1UH1Wcpd5yFK/YJDo/SyeKMaVWgvevWTdoMG/ukgrJRxYv/7mVytFYnHQ4EfZ4gXwBpOhMtDFCRLsHFDZiweqmW6oSqohiHg6MvjPYN+ZkvkUEPsRW7lDFH5C5lGl+l3jtofIbHjVU1TSCBqe39ZCN/k54R6VWeLrLjkhV2Dt8a0KOaEH4m5t4tUmtPbtZVlUfhXOmnQHlaOcmx8g3eN+VPoc7mfWdN+FrQ8LzAtIByCnVE3YzV6nmCr2Y08uQGd6fDDk/KcCc9mfNiJnQXE4kvaO6FDe79oyoJxN22NZXWLbQBXOuAn9D0LmGDsage6t5PEqVjOzfGxLrnixaWUW+ZzqvtaC8lBk2IpTLC2Lm4XTkxNZsdv/cUwUH9UvJPCHwcBD6caG9JDuWqX6oIXPsldqb1mPyh6vQWqOEpreV+t2ZhxznPz2hrsAE7Ln++YUDUYF38pk8ufmyaNsmJHlLP15OA3z3wf5qXyUeUwvXF+iu4CkyC08IC3UmTRr078GeBJ7CKJAoHHq3fkbVAPnWvOKP/j7DAF+pe+Snk4K/qahgqqKyxoSSy+xun1AwhLZm6LFA16gXio1NRfwFjbdveiNHZL4qT0Ap9m46EHo+MGtIa89xpgUtTBjPal81xjPYnbfhTXyBX9IMCdxIXO5y5oMS7KWOHrD/2wrO9TmdwvwCtsVu2+ldawrlWYaIiYcV5pM35yQkU2i2YWh2EYhm/PUb8b5A7YSC/ba5FgotFxRCZwJaJqBh+4jmx5DXdFAEoYsLPfJPDy2Y5BZ8UB999/4v47VzmlqBtqMElizbiAan+f9EDL7yQaLxbk5dDVmqKjYisxk2pqMTP/1/+ofoZdjY9GfJhsOblL0/DUcPko3FDQVLT6vnwA808MvZXiUrBEXfshXE2CKWbOP73JMY+R/MNPxyEC2Psy/aHEttTQjBXXnKYfiK4+XGqsQwKd8kTJjMC36RQi9sG3rx/w2FaDvSo2jHrLYcETfLgMCMZ+LKhHAk6mGDbI4/JUYYNSI6bw5ZqViG3dtfj6TitlCeQ1iGCWOleygWWmJWwKBSGaIq/DysijnOJ253TSrRiPpHBLmBx/W4JYeesj5K9QDTEzBedIMlA2BuOjody42Js6kpq8auwWzVBgWzUq7rlGdcpq+SZdcHOlW1rqmSTbFaj90n3AlPWm9pkYOYSaGeBH3zlzu143LIlicFyLMY471e7bqH7txjIFpXWTkVc+oHrrdVAgwqixXgl9B45kxD5OYngZOoROYICeK5BiKcsoHXU+Fqz5gITt/SikcXuN+yJZhAmQcp/Avj1OVlRGqVc3TyHU4wZv49m8Cuv9wWaeDYSHDjU11pd1FZc0wSGskhh76XhfWD6RL5/v3+XIVA4X+OatQ5LckmkMtgCbKt33iXWsQOD6HNix/z5dpXgfIpxaXNRYcYkXKz7cADA9fsNzG1/CBuvJ/b/H/PU7HPCOaVkfEVJoIUOJQAkidSI+hcV4db2lUyja+pz9aavziNPr8/hS9pFOhaQPK21H10tH1Os+tIlqCPFoaqjr1OaN9P3KyPwFrR+nWqhONHvjDv0DqwVlXoGBOvcb4khPbBIBMQHht4CwUabh0OGFHX1qyy3cDtPt9VqwkjqBhiBV2r+jVZIYvjUYa0+BURE3R7PQoINQXtmycE8+mlJMAgzVM7US1MF1nfwgClIW/ht3E9RcdjNVL5c5CpSLcGgW9ESfQDdVD2sEzRaeLH81QIrw1mEU3SeTG/qExNQTm5ydAKvZuygoydmmdhNno4dJv0OZ57Pw6r0CxJB6IHiJ6r7lp9GiAJ0zxdf5ZPimSse/ISAk+YnheGsHH8hFynbAFz0Nl9hvGqfKfoDmgt0RMBxEDgqgIefKBmQ0tcKHo/4P8pmEJr6+mE8yznLzfjcgj2g8n0uoLfXc2DUO0JgWusY5QUF8eDtDVS9cMhj6rS8bW6xsPuuPkNzV8ALjuIIQuExDf285ck1sBXauZK9vavwYpFheUVK8do6T7brbBLXX7Dz01sYb6LdqZDorDpHe8vUKzt0YlZZOLIXXRw6mw9CB+ejurAscibnqTY5qVWAYhmEc6ppaqnJs0xMifPX/r1AK7D/221HO35s99PMUFbcFKy9bPW2jkjqMdgm6PXQztguFzQKENcdUQQ4NTJfqdHTFH/donCO4COWBQtddXQOiyH/LGuxLDx8PPh+fv+7hQX4XFp3LzpVqL5z78up0W1SbiSLIJ96TOIw2bfehevmWj8ABJ1rtTKuBGV+tGILF7CzLEzORWxNHbHr9XrBSGfk/rkLEAOjJhCowLlkn4swu8l4GF6JyY5Pzj2KVqpM3UMFfiQ3ugSH/C+Ipqd085Se85pRjA7FlI6t+s2wkdx6wk850yE3Q2a84HAEr5Y8eYDtGpzW0V/ThufUmmQdpKZTivLowc/npeFMLniz4/uT8Dse6qltBU/2AnUphGd60MSO1Sn5sDSGyCbyK4l9WB64+K5cAge7mSCmUMBcmbKZEaNdMUjb96dnnBpl7d5SQl8JZl8PvRdQVAOUaJdxE0pB30cUW73aU/8QGoCtBugt4GshjYkzkx/k5+LfH5LFCIPz99OVpY5aRrNJ4mWqemD8ZRSM9rJAwUw5c70QDnEnoNPYh2PBCrFcd1+VzKq1tEJ1k282TtLsfX89TqYILioBSnhGFy4LipXtoPLhM8l9vtgaVdnMqdGKev/vUwT+bzOP2YeFYb3EnMV2RnnSVLTuoSDy5OR/NlRnXG0KWq9d7fdsZbqF1+Hry6XPEa5hJxVdTruj8i6UuFunPl8jKxStiPrSt83pFjVOok5J4cupHDiQyXlvq3lqAH8X4+QuDEznhdSS1UeeweHC5oAaiOQ7RdgIKeCrxatDQDrd75yj/4FTg6TZ+BX1njJbCtxesI8BaUOzvx9qA6mWSkN6Fe7hHUfg61w4z12TGTYNfGq1UoKrERGykAcsNeBLv3DPOnv5+FEnp4JgYIlHILGgdXEAZh82GJBMY5w5fajuDiW7qxTg2uhE2m+VC4CBxk2tcNH8w7HdKpI69zhlk6+spj77SXB8+S0FuWHvL2IfMHlPSNqUfinOBtM2effVBISj2Y59jJDwS8wDo3krokIMgbOZGleVS1gikGmdCWk1eTG+RRma1+ZPcWJ5gJyMcUTXfU/34BoboZI3ILVfnoGkTv8opTqfsuJpWohjw6GEXAnMGzD6RPxCyhLvDb9W5kgcr5Yhu3TgHv19OSiWVVxQNEeDT2ArUSkd/EnhPxknNKyuyYhpDirYU5w3lSJcpfFkvRCKymZftCtvjiDgx+14r08T1/0hQogMdKCZBpe9rvYaK8Idsus4LyTU73rqJB8hZv68Qg6ii8AtZZqnjTTNDTnl2t17HbvOP5sUhedrAJtQ0vpWahACfcwlIRXCP6dZyj9W7LJN+BqVllbbMfUn0KGSgolQdvIaKo030rSV+SwUVXRoQtSiWnKhDI/h1HOoEkdG4QbZyAq9o/I1s4QTdjMaIrDhBKmj8F1nnBFGj8RXZxgkEGs1kfRZ0AY3cyK6SIL2gcWFkKQniGo2pkV0ngd9ovJpsTILuC40wsvxCkM7R+G2ymAjiDxr3Jlu/ELhH49lkw0TQ3aOxbmTLiSCdoPEfI7MniCUaWyNbDQSe0fhussVA0L2jMRhZGQjSLzTeGVk3EMQPNB5MthkIrGk8may/IOguaSyN7GpBkP6h8cHI0oIgntC4M7LrBYH/QOOXycYFQXcADZUs94IkaMwqiyiIZzT2SrbuBbZonFQ2REG3QWOlZMsoSHs0LpXMiSBWaOyUbDUS+I7GD5UtRoLuA42FkpWRIG3R+EvJupEgfqLxRWWbkcCAxlFl/SToWjSKkl31gvSGxnslS70gbtH4qGTXvcA7NH6qbOwF3REanZLltwTpAo0/KouKIP6i8Vll67cEHtA4q2yoCLpHNDZKtqwI0hkab5QsZUK5oY6cXKFkCSo3ODHNsXCdCW1uqCMrp9BlCRq+ceLV+8KYCZVv6silU9hkCcoSJ8JjIb8SGtbUkZ1T6F8ltFnjxG/vCzETyt/UkR+ucDVLqHzixL33hfUroc0ndWThFNIsoeEBJ569LwwzofJAHfnLKVzPEsoHnFjPsbCcCQ2n1JEvrjDOEtqc4sR/3AoOhDJSR46ukA8SKh1ObD0WVoXQpqOOFKcQRULDb5z47n1hUQiV39SR905hfZBQ7nBi8FgohdBwRx356BSGIqHNHU6881joCqH8lzry0xWWRULlGCcevC9sCqHNMXWkcwouJWi4wokn7wv9JaFyRR354wqrWoLyCyeWHgtXNaHhP3Xksyssagna/MeJDx4LqSaUr9SRsyuUWoLKDifuPBaua0KbHXVk4xS6WoKGQzjxy/vCWBMqh+jIG6ewqSUoOFAxEkguDQd6RgYkZ8aBA0Y0kkvmwBVGFkZy9jhwi5HOSC4XOJAw0leSc8KBTxhJSnKZOHCNkVFJTodGc1m/IugaNPJMdpUJ0isaF06GpFRMAgPJSErPZMCAmaQcMNEYSElSrjBZGAP2JOUWk84YSAuSkjDpKwNOJOUTJkkZSL2kXGMyKgNWJOUGk3AG0kxSRkwGZ6BfyJdbnrIXWu4T0yA2LMTKmLw8PiZ9cjV0+Nux6fznPy/Df3GsOuZfHG8vGv3fmC3Wa39m1ZvG1146iW08ppv4r06D6G276T+2z8Pt2ufctfuCNT8QfgHbxWb8ufE83f/ieFj8O2tv9T+Y4M+sx3FbrWU//VeNT9bW4cnInYuwXWpfV8VJ3B7UbzVYuqbKh6WLHKDLPKALYyhd6UGgPSwdu9s6f2j4wOGROxjKg6HVzREd9feAM+rIOPoy35mxMzmL+eTWnCunO+bCqc5wLJlzcLITGsD6TnW4ucY/f9WYwUVZeewXAlVVG0En6w5crlxwrIVTK77jZsk39x67pFD0VA2ToL/YQI7o6lfGBpncvJf0o1Uzy5s7e6pSFPVO25NLpTpiUNkHUg0N3WmmtKftRz3CcutSudiZMcuw36Id9xsL6hZHnRd9RRzf77Xgzlt8d/m3eWcs0+yBm6gkLzhuk+CwSja14bpirqKxuIn9qWNN938cvPO1icUPnoOdU8vNHj+flzUIyc+sytLSvoxRsXeddmcqyeBUo39o8CaBDFn1WzonOimoXuCUFqEemWS+OBEn/Q3zkqeZjDEPXOL8VfdKp2xIUT9zR5oZnSdiZuV8oF8xzfLEmGkeT6wyF05QGcVOP+C43jL6FaAH2UGYmLlxMu8qAdmbGFSy1vfSBavJ8nzmMS6J/bdm/vvJJyJaqQiLqGkn6JNpn2ixo6qIxay69Po9O1JmwC3wkDxTHv3Ljj358oHBuCMVFtiTRhbKPWli4XwmOSMeSBWVhIXv2PbXG9Z0cDvZ1zg68gqioHc4R95DBPBsQ4LEsV0WN1V82C/DYV6oqbY3/Vw+AHwZTvn/QDurFMdYEUuDNkGZIWjwmJB3EDv0DhH5I4Qog76+Srk7d0Sn0CqUL2zFKxxH5AJxb2gR+QgRK5wnEmOAaB1aQXnHlI4yHGvkDcSj6Vu5Q/4MERyeF8gdRJrhmFEOoIpnHK+R+8bHcJ7p5/KEfDCiSThHKY7BEcuE9gLlA4KMx4BcDfGkeocO+dYQMsFzL2mnjugmaCcoR9jJPuP4B/nKEA+Kdo78aER8gXMlMYoi2gHaL72MG/nOOP5AvjZEcX0tV8ifDBEGeJ6RkyHSHo5LlFNU8RHHJ8ijIbbOwMMr8lcjmgWci5TGpSOWC2j/oPyH4AIeL5FvDLFzew4gTxUh0aAvjZTGzhFdRNujuKniExyfkXNF3Cc0QW5KxB7nFxKjGKIdoW1RRnMj3zOOP5HXFfGY9LVskO+VCCM8fyGHItIJjiuU2qjiiuMt8qDUQE5xLn8jPyjR9DifS3FsFLHs0d5Q/hjBhMcWeauIp4neISHfKUIqeL4nadfPiK6Cdobyw9jJvuD4F3mpiIcJ2gXykxLxLZxPJEZmRJuh3Uh9nt2NfGUcv5FXjiiDvpY18t4RIcPzO7IZkVZwbFB+GlW84PiAvHDEdmDgoUH+4kQzw/mXlMY4I5YztE+Uv0bwCo9r5J0jdoPeoUX+6AgpVBpS7rIjugLtGOXbbMVrHH8jF0fcL9A65KMT8QDnfyTGoIi2hrZD+W2m9CPD8RDyxhGPC30rn5E/OxFqeD6A3DkiXcLxCuXQpMkMjorcM0WX6Vv5inyAaMBZJMZgiCVohjIpATyCXCGeot5hiXwLIQbPGyl3lzOiM2gLlErZyj7iOEG+gniIaAn5ESI2OO8lRoFoFVov9fnCuZGvGccK+RqijPpaLpA/QQSF5w/kBJEqHCPKiVLFDceCPEJsRwYebpC/QjQO562UxtYRS4c2o/xTghkeM/INxG7UOzTIU0NIMujLq5S7NCO6hPaFsldb8RnHF8i5Ie57tIDcjIgZ5zeJURzRTtDuobypKVUZjifI64Z47PWt3CDfGxEmeD5CDkOkFzieo5wpVbzH8RfyYCKgn8sf5AcjmgHOF1IcG0csB2jvKJ9KsIfHJfLWEE+V3mGFfGcIWcDzo6Td4IhuAe0AyrGyk/2M4z/IS0M8VGiXyE9GxAs4ny0BiNXmQJ+bezRllOgrlV5puVs0ZZQx3TD6gXNyhaaMHvc+CoEJ0HvUct9QZluUKX1S+dhyz9A0o1Seorz1ouXelDlnnJw6sq84Kxs8FZw53TF72nI/cYprnNd0TOl15zGeapzif5yDXcvd4anGqdOO2v84l17hf2ytNyVSadV4I5to4X2KKQ6ifBKN/aC3QqpaJlU0s2BKHHVIlYPU2GLrC2lqVfuVhqgykRho3MkQU5z7T6S5tbVN0sJC+yTP/TAoD1Jbi6ZeslbNfbqJRqaUJQ2Nci81rlq7S/QGqEv0e7QLAN+wJ4wBrySssKJTAheobOhHO2WpmyiMbdxGF/iG3LsTF+Dwa/SVTXiO21jzuTgJp3U4Qoc1LLHfgH4bt/SL/WllmepMs0j2MY0uNVk3SnCowz+RdHJQCY8r+vHYjK1Wne6cchyir+1I8vG00KPXLv0GONVn9Z2OmDCw8eMDqMfGz6SzWsM4BLG63mFpxttT2sXzk9O/OlzsNMJjOk4XeldEqoPabLGs7U5ntzgTVTVv1Ge97kwutjXf4JX/TrFq4u/8R99dvJaL9TQErTbtxiT9vGIS/5lY1xrL7pD4K/L3BXns/yXf7sfdtpnD5ms/Dk31nb08pNN2ubkpVzs9uRz8wniz/7j6M3y9fqwO7Ph2vou5k/42PS7qZbdYXzRxv+02R48vZync1T/j7qLJ43l5meYhhWFazdWP7unXSvYf+bRfT980yXyVxWK63H260NfW63EUNXs3J8EUIKeAbKEwBFLueaEO64zA/Uf91nqNg9bLoN4cP/QmMoLvlEaSrJ4NPvk37L8sCnUEqRrVCTvWJUIfL2+qSzZRI7hYpDe+1wn8SqYhlagFXd7ml4jhA2TQ8w0KrJzian4D3mMbNRgLGS65S1pLoygDbJfyFU/mKErmsIr+/2QgXDldCyAQbb/+npQhGRPgY2jQi/fTDo0VMlxhja/d3XpU4g+mVvDwIYF0TDYnEKBOkm+U9j4wpOMzTvgnl7ePfyPD/bxOXhq2q+YbanqipRtby0l5kKh2LVR9b6vIHxSCDIQSPKWzFwaPL7pIYxtNS3GcZnnb3+d58iCBQBkygh/ayE5oFT0toq7iUe8jpKvvTnSLKcDv73OfRD2FqyYUNO2HqozXApUI50Z1iBfriR2t7rhJ6gVUYbiiFCu/ImF/+z88w83yrZ9ifBf/xpO6k8SHFrSTt2sYXYtCxgCIfqQbc1XOcThPhKyjVrNfK4/jz7hu/Jrq+IavUI/xGRc8I8fD9VIeY2drDOo8393UwGRoBBS9VpxPfUU2JbZf02zDFF6YEhhUStBLHWHi9+ISkQbJKaQSKchwav3VP+c6B86nZv8DKD/ayDZ+jbrtxX4tGa4lsB9O6nLxywlEDMfQwxyz0S19vXSd3L0WGDGLtz0jjumKT9DFFcog3NWy3oEX5bKcDXcrzR88j0gauZCbt8E+YDi5EQ/Pjic3BIKi8FOTDsXD3OomrqXTRcc+y+dWzVOFaMroVaukJJAQId5cPKRWD/NM7kDxcFIhgUA9diiPnjEIAYq3FqMzRfIjUYNsKGl1rb2W1C3I12WAtCQT+0QXU5LhvZGjlsDnwcPNtnThJVKsgrRHcCfvNKFG3Vyj0CbOoJIGQ+oFZUgqvUunVKESqTNQsuyqSSVqqbsQzrMHzG8rB+jHJFBJm4A0c0mF+isRqLMi72rYO6lZEYouE/Xdt9H8eGHCmh/Lk32W5fx4I1BXiV2VJc5E6JSpWuFEVLoWSVP40ahGVyLIYF6HQgZP6GZCD7Z6p8A9RpEeQTZVQLqL4ti+07HSosdPmIHOAQr1+/BK9S9N0b07rSUVu/JoqqLFoCcnXbcaf3eTr9OSDA+JdCac5Wi5eDxJx6B/CR4gzdgn/qjq9q83Ep1M+Lu4ZwP5oVo4udDdZJL+g0Re0HhFY+zqu78iB7TgMt38rUeRC42SSdSViP5LEnpBKfUpIFPsid3o87exlmxjAE2qsepK3MLibhiFBiqOo3AWvIrA3MersfLehEjRbBdpjaIZMvWxKdrexzVZ0vptZ+52CumYlx05Vgqp2g0nN5OTsbp72yehELdxP+/p1XYgp2yeXsKpPSa0xxPwk9olRrMw0hsByAf98ZYN1R82dV3zeuP+wGFZhmOcnOTaoG3UtLNcf2jnaVMtbpUuwm+wcugUvAPXBl35v/RwXe13F4k/9TX0/oX/VKPuroM6h7tYqQ+ho8765rc2ctFNOBqT7a9pxHp2MSpB0NCyBDnZ9cbXPjh3K0Dv9mgFPyyBt1NBmjeibL5YEKBMfMCFPju7/LGstqRPBPjcFIxtMlu7JA/U9BLL9MMJ1pxTq39AgrP77kxuQ4P9q5i6yH4e8jzK70jiZXBTPerpgnyBa1oMRzcCBbWkjuleTn/y64R/9tXvHm+3j0eopqSmoCVquGMFi6BlGQEfoXWzCDB70nDc9O5dYvMWm5NTfz4R0/2PfWuXRdC6FbMQr//Tv+zMGW0lCXHvCyX8GF/auZNLyZGdXH6WZvkVor8Zi9i0mGC5DB/AOHBneetJcl5BdSW6HSw01Kk1tU4O+91QijXnSoz0t8MOiQamt1aN4eamLWV8TdkaCp0wLVjOX4jsGqH4DcbiLq311fUtpDvIIzDwokRLyW55RygeQUGOjkBMYBL8P62Eyccbp+lqsAr6s7+CMvPIB6DMCForJYS85p8lsPSNxjhe1iixkLp6e4SfttoAXu8E+i7uUf8QjnCpCe+g6GZSZICFXHDzi1+eCg5u/Pir/E5PH4Rp+hlJ+bGkzjZR7cb9if+LK2t6Zjk6mJ84LUqlWFyABH+U6yjECy1RrsUZqeLHdv3+ZCB7HyB35Ha3tx10K2lVrKU4e2a10EtnhY48ZvGEsDjhVVXX6DHc0SdI1zRlz1TKSOzj8fexT3p8keP9y2Liy3F91vaK052T7BpuXcLibpCpq3YqjRfQ4CsNBvnoRBq0p7H/hNLgeADUzUtfLh/8lIl/0wm8ooVhD7PnSfdTByfP5Humb+3zepcCtrsno3h0xh6YApdVhGGiE1Tk9eebKvYPkIEL/ZeXkTH8eWNaDnjXXRK2PIffU+fffc6POGDpn0q2/oob6qpZml5XE+SJm0MQv67o1tXa/FFZaUe1UMLcD5sFqHiRP2RmRaql56BYo5hN58IMoVvmbBAWQRhRu7f+hk969spX76rXy6U0pG7GbAPLwR6f4ScO3uJLjOKaOFIjXvMZyYoBiBB0BBLKNYs7Iy7QeFFSnSjHU0DKuXNECIThIhfaJrtHN3HhtW25Dv5MB8TPlg8vHWKw0MzpX18xJTZa8oYEFo5lAPeHSfzav2pjgOWVTrSHmusR46LxGS/FRCNUqL7KYXUf5gbTooWzTZK9yu6MJdaQYz3G4VT8LqbqaTqZ0gqd+683DI/j0+Ef1V2BH1+lt2F4LkqOSEjrEkZ29fhbYRDmnIO0THxF+i8z2pYr/WNAhd5QYPWzqYwBl906tTcBwwTyWc/OUdbOnfvI685qU7H6ske5f1oIed3auW8fAG140BzltoT+p/QkKEcjXRp8Grc1HL4p1O+ULIrFUn7hWbQhX7nfP1Ku/ck40Z+/A/uJQWLMsF0w8/uKpv79dqhtjV/78/diWhZX+teIbYT7AeLf1J5KshUhjuX0QblxLnG31fMLA8oKwmWBctEvZnDGLBL7X9a8ylnIpipMlZfGhqLv0C+WGXXjl0F+XBkbn8efW/Fc1D8atzuX8UfDb1Nj9NgfX2bOfAU78FnljoPD5TFAmK5LT+LOLIYYaohDexGQrfA8HcA2K5v99BMdGojWlLFfAUDYezbeX18/hUdpcZ30avoe134PPc2Dn0uTtv86FpBJU7vyhQTz9In3ZW/SKbuURmKqU34AgpRzHwkAvnFqPbThYZlFlD4mh8flGLhtAcTl4tXrnrMlBEcAypuUYvbSay1MIIxMyoXCY7Rp0KE+uYl7Y0I+p4B23shmy0yKAM0FcaHslTY9f51xvpKFtYNybuC67s230qVjCk2GgubH3pTbE6rKaSZEXzEXubncWmfrcy7T7HJTEDWyvjR43E2KeHlvWft/LQ2dhsGg91biXEQnMlJzfdWOubZks8PyWjWHW+ZN5XpKmQOtDf2t2pgqtZe+sFvYHOwmq39pa6Q6X1Pu8rZ6435IzZ82JFU7LeaC5naxkDi9kiG/+T1sBTxVUE6InduHhlMXbJaaCXnVQWV01IVq8qGWUBsL+VccpZDFVnUcwxNWdSL88k/ZNEucYidCWOrsl695v5+7wGUvfR5fzofBf/mDH/u0t74f5q0r+VMzvKVXOpkJ+an75vvU9EgL4UefNT8TAtbbMMhvwBfyo5dJ/ypsgraP2Zsmy2/apeslSg5KUfwNwnXrf5vTf9Uw7Hl9MK/iXL2zbv2VvmC+Z9y2Md3m79YWwxi9jCIUV5HOHPRExrFzoTviJyAffGgl3lQoadaxv99aK71i30/rc6nNh/M6n116Cc74V0f+lT5j953kj6ZtUk3Ne9DdeCgFCXBPAgkkkFsLpBRh2a/rX8f40OJTmN06SloyojQX29GHnxO2Dd2qjuSJ0iUBB1DgR1XiboeKGBYchHPcm9Y+6zSQjR9tQ5vdKxlTlMT3gef8q42wBLh6Ap9vHMwH9M5nB4WTSxD4ump85W5hI7z6JZMDlL1kuFBktXC3bPmbXTBUvZAUouG9wQvwvkrlz2X3kDXeXL4+UboNfsPN+LjfFkzTYWa8VtYOhd0j5uYT8fXnV3zMTpQGSuci138VvfZLKSVF9JBLEt+bDVYQTRPK1yVnKcRVgeN73/NLnLkMfi6WglP4zgQlgbzPTJ/D05CxlQJlXQU3ez7H8TGLVR1r7NHngCZtv94rcH63DfBQyLW1JB6J9AdFEkgkt/2jTNRk7hCW4U5hfY7AEA8PzAJmrdDGCl4V9IRYQBKTNpH5fOOXqPtVnXFL1i5LZK4Vw7axXhsLRiD98GakVo70TiKy6R1xkGwdrwSusTpcGp28o8SAjykDIlcR4vuQrpMgUi0ATT22nT2icpa3g8GlT1w6hEzt+F5XJDpasq3etU8UOhQOWL9TwU1c0ejkSPoZXbdJRaqTETGc9x2GWpQ6IRC0Y5ORW6Q60ajlLVinqN2/3ndLvFQzEqmO0FfnpqpbKXWYieq8Seup1Q6xXzJZyzTj9XLHOEbkcol1vUWlI2jf1k1RH1vuGvrw1XMQxa2dhqYfpxz9onElfp8vUlkdSqlDZOcZTahTubWT+AL9UqB1abVjIDbF68C9l1Yxjgb8ulAkXeuplNp5t5QNaz3ThRKNFpFDIU2aertjXCtUGrwwonMO/pVeqa6vLdcRoJLIrtPkiNS5spjo1RElsc1EHf7Y8HQ0yR1yiAld3juFN0GyjTU/3a4vWDwUxFpneRdBPvzn92ISVVgkpw/YsloX4v43+a6AfSQBeBqEtA0Jc2YIPoGNi0/RNE5DQIUGMRkZQ+KB9AwMlhGrTVzMv2jZ6rVaKBVC9e0x84oAP2z/y6fsbSTwleQ0yPO+UzaPuvB/CWyobLVB5vnl1fbPCgwyet6NvFgP0OHuzWgkfRrGf9lvm4YV8mf5TtJiBUTeq6d5Ix45VWrkvzT6omLK1QN68hURG8AjvBpJBTfm1YXKsrE+oKEEyryiu33l8whYYi5dyMxu+GzENbMJF5zI3JE0PhyvnXBcETPuz3yYbxgyvEPfooE4h9vSnGb0VO6MwBYtQQq6mYsfvFiaOVhJlqQPAkYT+VEzmGL0u0fSearp/ocYD/ihwUxC+eHJsWngD45RPkagFwvFqxF3DKWFm1LgA/yLOCh4JRwIDZUME2EQIseGqUNAezNF5C9HLl4ecHFJA5MFnoCImLfyTtPqyaXS+eEm27k/T97VejSXp44XRjLCbLcYLQjygkoQGJsuoBb5vaxKneFe9Qtbta1nFfhnqS9UgA+fZbgvGQGyaaW19o0pFiRb19oCrk3zhNOVk8qXxBZcEzylLSIKvxmX/7g+K2WTjfl6iwwF/lvwd/KHOe9t0UGxLMo8dGrjfM8WShdayhcPdQiMqWeyLeje/4r3J+iJ5Qu+oJ1pJig3Nw1I7V219lEiZrnXCkfTkfALne0aCQhyzzJW1M9cdC84VSXnUn0YOXdz8RRA4bULJg+8Ld1bbsiSZdaT0cJq7oP2MwUx4lxB+1msMRDnHht3oLTonu+R5cIGAVoOzv2j/SZRQN8RKlp3IThENY+1RZfXOTlTsydI21sQ8Beg3IH2yQSdUE4Zn55KQxXfzJAak+CD1n4Jmos1/YBzT031cdsbn05rHpdn1DwBl+25dxRZmuei8NpyDNHDC/6mRpSfqmtS3uctAVSoE1GAPlSnVzk1MVh4paLednMce+HCPBQE0pAFw06kjn/NNwGb+15aOz8+HAlmhDCf/b2xxAmzLD1hH3qHIlmAVXI3XgcJXFaszSGYJ7WQr+TBz2UWExyAvgFA4KDI+lYGfgQe0CvW8jOZy15RCJl3CVIHcJRxbnrEAQ0acM13scEshB+dEEVKy+VdVqS/t+mLdVZm+ykq7A8o7MEVF0xMkPGxQ7EBt9cv7yoWGpDE1PQnUNoAAlHFWUPZAhwFOQYTf6CiRYzXTuKlL7Qg4AAS7+7+LZqbEswEdZ9IF7SlcQmTyhMg0AHjkEeEPTwWCzMr+0mXYDA7c3853ARWVMAA79UgJrK6OusHXgA1jtCtMhDkTchGDyQm2mzHegGO/bXBZtIOyKLHjcO9HO892GQy2PlbbIZk03JnNiCY02GYntKqYhRuFdh3318y/plw/Tt8jr6edbH6jLvOsUBTZCMWvvXhWK6+pAqqZHoJ9ggLGTl26luSH1egvbG3QHYEWeKfxjVMcIKFa9Yktjo8vucEVDGwB9UxcgwBYxF0cgszar7izZgrSzuZVLsXxrdnCxgJ+zyoWoAJRmo3f41ywOAAixMEM8hMHSfQiqyXGM70p9VU5f4lZti5L+olVGalHaU+dgklCe96VEzoiLCpBcxcZKWwMeSRnPMCIbzmRrxv2V5+m8G0iok0FEUv6836f6YIPkxe6Z50bv5B1YEuH5ZsgvQ7OKmGrsQfqWA9/IVBO+nMh7M64llJbzI6spBEzkn/6TRYv3kzfE/JUlN7BrkEIUeFJaVLdLGvGLIfPgSUKOD4XsmcmaMI1dOFa5QIpd3FOeCs/QByGtWYS127EFGo350/MmQleE2e+Jk8yACshFi6tj7ClmY0jYZOXDQRabHtRRPKawQ6gihuHIqniS0GM1gmRlUN3b4lIbF+LNhc2hE6856JULb+PdV7Sd2Gf57bVtOJX5We0Ltkg3uG2iV9EtFFP+PHQ7Dv9UPIznHCrA2G48GqI0vBlFUfwK/CWAz+84MA2JlTJZGG8Y6n11lDbFOha67t9OkYt/1oKQFJOmAkNiYmoK06L7gog8QC/uKEuIO+kC2APKtR8dzQnPuuJap5ZYnBXCnkYzhMbyRDRLUE7DJxEl1QTOAsJP5XhDaIQybEymbHJ7NaMAhiJd15mYBkIYVVFOkfgS4tYJ8DSeKmEqXeXCcUNQC+EMNgkSWNZbEqmaIDsFbA8IS3lMtBmhCPZwtyOQJiFWfZNI0g9s8V/UMe3KUn1FMj9wQ6VAJ52kerxy9BfiHwWY/fRjIH0LBBXaJVzBk6TBlTFsBTLuhzkKLTAqdJ2LEAyxYkdB/0jDYTuQJE5kF8Y1RcWEJ3USTbO+mcCZGZPVNHszTuOU2mmZ1WHYWM1Sbx4T4nUrQPDYFIi4q0zcOl5aBAwWNe57yc0XwJEoMBL1HQglKgMPH/rY/MkFO+L41iGYdVTQGgBag+oiyNAAuk4A6laNB2xYnh5hul9SqJ7Hkp8votIiINBk2ieClQnN9rJlDSEle6PONmby4hcmHe/I1R02UtFvg/nHxa/zrWmqOKcbVGtRnJ6cULJ0c3/puL/jG0cSprp6Wg4G+S+5q4Zy9GqSWZf47TWUKs1ohwkOQyOh+nWIWhZu6yTNeWGYQ4ZEzXk1dvoGMhUbdMFPZONE0xY/QmAxWAsYnxxqtIP6PG4NlNMXBpx44JRY//GrrzfsIxIkSzEb7LYNokgCt0Hh4diSD2I4HTFWMxwgd5yc1sMFSsORkhyvIciUWaj3DbgrMIhxMhicOQzbCs5aHZIUJjh8qqbxI3/Dx72OPhJC5RFybyDokUiwYgvXs7MHJAnD18NwzZ0OHTixcddIoHs2+zK28FrWlmDe314w0Zyqmon2MmpDZaqWVuHpMMps3wLZcrS3jTFAjA5qiRtjKZCvxFrlZc5XU1mMZuGoAKS+PHaNyQvEbkbNtoC4qxtAAuB5/pOayIwNxgoIi7+VHRUCQCa4Y308KVwyOvSqZ9RDC86Mtji6GavZUxA6fJ9/OQkfnfwp+i/J2V1c8EO+WGwpMeVxvWeWX104XqQkQe1CDgi/etLaEfDKoMC+bA4tAeqERCaGu40RBW7ZC3AXkY5m+epTEDXr/fkEquCYg1+IrgoUrEGSw2SnAn62WaQJ9IvaHN7JzCwq4V4XmAEwLPMWo1W4j/UcWJlENYpQ/4A1O//2be2HgtXXMinNF5fHc1HsiRyezmN5wCIHHyALCl32Qg/x4GSPZ3WmzXA6d+x2g96EwzmtjMOFQ9jN3UEARxlrP5H4JpzC6UEDR6NO0tAA2FRtfzEJH5uzmfaNHDYycKYifxNtPqFEka8mLzg7OUnKBOktA9o1l8EX+W7hUq5Y3n951FRYti93tPjJ7T/85m0RmiBScUP2zkQn8IPIldzt37/vDDvwCzHHwl2dkU6+PyjyiqQfvrO5eci66Hp8sSHNn54O84X0XyR0Co5PkwJG6Q8lYXpb2IzJCIBgMzo3hCO90uuCN9gMiZsxDEGRLAd+nZqPlyyI5Xxrun9uX9wh8yqN3wDknK8ufSrSg/4W+z2w2hQQEEyik79bfLRiRUzgHBzZtCiWmLHg3sVVwYVi8wawTbFT+jtfTnb1lACexlOAgJJvOSZwtFQuIn5zF2jDHyswmsNMyEYTbU4pFxNaEUBzMSzS94GPFQOHDY0OBJzwATOwc3iTPOfiBnF1aJLmAIzI4ABUSeFpj/4oNGhqH/QNQZV0A+asyxF9mgf4oFN9OtMsML2fScoSBPGV6AgnyYBOU2xksS+MNODLV7E+Q8RlgLR4+Gb3x7GNWfh1aAm1pFjWIXtqPBT9Yh4/9OtGh3tlv1H5Pg4LBhwS1ndVb1WPWb5FvVUK/6I93I4W+WXnXmXrWsV8EJpJYNHAmbeuBHhMuk1XWOlYtvhVecYWzON6ceK/GEP2ng/2NObzlGv6CWQtyQag0PVxNM/9DtbzRN0wFZ21Mwp31Vl8s91Y+fgRn3LptE/sjGQNaiGByuyXKvrYXT3WUuTMy9UbA03AVrw3Uwn3jUAH+Y1uUxcjJRY3KBxczh5fULSXIEmM5ov8AEYozQ/+bfbVroT4Xxh/oWz/PgxMH6KADu9++T+IL5rRjaE235J3GeYAhI8fw9y3YuhTJ6KZSzlu9GVb6+7L4EGYFpaaQKkbNo/UQ8T9pR97zWp3cgWpRcu9udmZo+kFG86OHLL175Jphh4fCD/+D1nqvf5gEkXVCmg/PDINP2GXFu4N7ClGbkrLhLkSBwBWolCTGicsHxPFGyxbJl2bkwVb6gFhajIDesQSmfqPQHcK9NC6tm/ADnOzGui/ZAgqUXm3M5ucWt/hRWn3ML3c/aHVy3xVx23efSjHRVhAd763LNF1YjpYkEYX35dSymjdyC86qXvHlzPTitThS9R77iJU0A3Q6BGd7AlrLgsshP5zsdA0UKdFUN3z9wyFaE+BluzPuN7xWbbymR6Z8FxhsSZTix4tMKRYtlEN2Cg+yxETsBuu/3dS5S4qcXjT4DsATXIbz3+IzxUQux2yLPsDgmj5PmOUsMQkYaVZ3GCPvxMGIEb47oLmGmi42Txu2IWffGHIt4tv/R4b7ysWGZJOnJxykaKQ4/aWxag2ZJVSSov42hxwK5HiqXiLIlsO0GLIwta2scsUsttnv4zKCBYS6FVHmM6UuY72NvWkLnHXWXSc+nBTwOuDsYu7qW5JtPcUTFlS0FUrZ2ALY4gIYAJKApaQSmGj8BNIwFGZYO6KV79pwame2xONGZecJyTQweAnYfjfGlloYlfhHZWEc2QY6Scw6Y/E3Jawr6ubaTH7Ibpq30cxPirDX6ZjLLhCimaZGPsjjC8CYr97vz85jK9grgUi2bM2SZlehRBO42IlmDA+DDtlkXYi+sndYKkfxeptmGCuxs2mfw0sk/ApuLkTLqnnL+jL033KK2N970inDuikN1X3E2X4ptd0mvSVRk8JkNHU/VqyU7k60ZTbbNjstxgUcpzLNptUjDriSubCe/z0gB1LvVqY2wrqu/twi/DJVhFc66jhWaolCr2TRFVwyUXJSRfYLGT8yO0ojEzcz7xmaGO2m4TWSnuHZPr6iRgUUvYTAV+hyrXU+T9PeGiC1xm4jVPo6/g5udg6H3JkuMTimV6Jdi9gbDyDcFq903LYIuKvLa7NQHbiP8+W0KQrF8maYfoajtvek0F2mDvgSjarG40n/0gcLP5CXU47NwEz3zTNEJhJSSYntQIk2np70Ut4U/58pjhMt5BYqeVnOHuFyX9Etr172ircnErTqi1Dl38e4/aPtP8RIBxGsHyebQd7HSWKozKzLfUsVaWss7oWhrQf+2NZ8wMmy8/ZNW+7x7BGV0Nc859xyOTm5UpuWmroj6i89cCA48wG3V0SfAIeMPNXMYqRCmUg5k6F+1ShuNkTGbXPm/5zm4tAqHL0B8GgWZxhFX4SU/usm08c1Ao9oKy2EyTAPSM1ZHy4SGUQDAjAzZMnxAsM0OoRVCErO2SnNxzZu0WqnCHox2n8OC4hnGxRz4guIy4oLF9thU26tfDn5/hItBQacxg7d3BljGZi2a66Cz+6zz7Sn87ufoF2f9bU6b9s2vwrYp7//+lZotfjhkZt4W8WKEMNykFRMgmJGiW0YeWJPKCXslpjFsrfQrcONotN6+1xy4MXIo6AnM2oXUHP0tVF293fJAdyE7EI1obdVjZWwlk8LkF9796b02nytZ9fMcdQObG58Q1Sa6EePigvfw/ZwVmTdyZlf6vQ1nhsuKlytNaXJOK9FRRDhqxcwUPCrkSA82+UlMKLBQLPFaT0dwBxLArwDGHA4RBz0c4orpnKF6z0aJeWTAWHfQbVPM8sriQl+cdrfuvUM74j1q1/P2zAG7LN7MexHYpc+6ppTvH9tCIW2Dr+JxtbZV/jlqh8yKxW30jCEe5LWwVRMyIn+WlD1aFP+8mzmrTK9EDyKTsEfceeOchVdZrqJohCwVIaxWYJPB58tkuYEDXVLjdUNvty0eP3Y4knRr3Jt1+EjBVBcqp0Y5J8r3b7j7s9LI+qu/cvcWw7u/dBBBDpfc0E/uiX+H2eNt0KMrtJp1H7txv3jFN2sVUYbmMCz8DM01f8zp99dU8t4+qiC+oqGAUV3X/aOEP69le5rfn5s5G7D8kqVZTqxM+VqOR3cyD/3UCKbQ8vqjSNN0E5XgRFgYSiwVnMviy01ePEvHYh6xS1VJyAg1KTAXgRYkFc5WtFlUvmxqcwbj3kUKNUjOqBUDFvdhlt+b0LfS78BGIa0ea89AV8FyJKSYhDv7i9kCAPKioVYcOW1o3CoDxUeo2I2gg8LGhTfmdZSCsx1VS1j1pn6r+qT0KszHmxwZM6ETSS25FNjm/greq39XtJkzoHD0rADl7Izm23WaT8VlYx8m3xsR7vb1c03Qz7Zz8L3AITsx00xnIje1TshB6QBIlUaxKVLwnkuXo0zSp9GVVYS9LkAHD759iEt4U54axMqPuePg80pB876omzqrgKBGktC/5i5MYmBa2pRWdYkJQIeNSRjLxnBP1GJQg7/Qvmlc/ur9cLJaWR+cA17IoPeFnE0Edx2eUE6br4BWNk01TnNqmpdIc0qaxWhOXdNKk9HVfA3BDb60Z4bbnoI2+78puCExWW+2jGGrLMY3xWwMkCQHpobByHDsHEyWTa7cJBP+DBQx8shk3x5Fhq2qsRyTRqN5hW3q+VPQcHTcOPKcrg8E826b+KWam7ydIO4f9odUWDYnpN06wzql+0mdFtY9LCoViIxojBwZ+Txjn8JmGkwjiqjqN7xBGati8sm6fRi0kY0PRk4vjxkZpxStPD6tQobrphfNFzjVbD2BfHluXWE0p3eZjyfWvv5Gt3tY+AUyzyajvFKOe3tkuAEVeHYrMmx3HeQflhfZ7UVA8rQUIOLHGR3DTZtDXg09QNqY/tbeoW5fBCKh4EqJ4FKurTTz+2FgjlQB5qtb9L3yC3x1vXiRbkriNtCgWlR8l8dNK6FNdXudfQU91nD4fLJergct5M2oXbZvFpvUp8b4cCuuWpf4gGBTm+zokshHqDo6k+I+YnS5W5SUrxbP7thrZACjWfkSlvxvNl3kEl0q52mkvyFWbGieeB7mbO7SMOTVaKF3F3Rbej0ObCwo0jxETzo6vuVuByU6foHiFO96ALKLZ+zvc27SDe9JsXj+WXtOSL62+2yRCBRlQ0zewIXfhXTB7bd1+ITlvOI32c54DzhiN3X5GP+p3f3o03GATk4B6m98DmdCmv5FpLQBXje1Bz8cPt47yjeIqHZijtpBHI5z0pQctjAFWLvBS/tFFF+VZSxP98XTZqswkSV/1RkcvqbLdiLpee224HXFbojP3zOsaDx+O21oPCEPnFGD2oWUwWvWw0fxRgjPjEnEY0MWv3hJM8TfiIB0o9XVQ61QGgd2C/JXLjuHDLZEKKLlHrKLq4GCx0g+VIMA4WE5FaklP25a2+0BdnGekfb7NPFJ+ZvCRwWKhzdaThBRK74/sH1fNuKOYYMJo6utlbinMwvSBCvDgWYI+JcTOMHUcnCIiRLuf3tpeHj02bT4SRQTbpTiIRom9hD2uAlT23ABLiy/DPDMOS0nnSujA7m4LnGjfqeqwy8GDptik1cbt2MVfu2aIE8OFcVHE5LUFsBFP0Q/wtFtdrjmQEMeuv3yOoCBVslSjOYKdzLiXmwQpKQPnX+WxKwztC4vPUecNwO+0ySgNq6voBS8Y+mYIF2R6k/wjKPrRX100I0T6sdN237PPXVfpWd7tGCaZyK7dvkdNmghOFr40agJUuhZFFNuymqJYkK4RnaB0pq+/7qQUea7rraCA4T/sLtXI5Vz8V5wc7ZR+JgEjECxdeezrCqoMQ4yCG/Lzg84nggVPaNZnBgYd7vDEWFIvJmbfhBrqdeDxTMdH+1R9VX8ocvR9v2TvsouYjCSWdRm0SGUb1+hAsXRApI5/lE4sYl269HXmQPsif4lGeqvrT0Tw3NpyL+rpR4jqTiu0w1JdDmSuDt361V96q6aGhGT2aVCFMXvip8eErgLqiio5g5mycdEEJJZNAKamlRgsEuuLisAH3yy1yXNlCLWlXvV6g8UgZxZNIjqmohmZyQFpG5E/CIUyFhF6GraLLRtf7i6xyWYiIN0d5NWyyE3ktbh1L6PShIL0dgkqtsROTEUcAI70nmiZB/f9EivsTwUBKspsEOWfn2EjnMpSvt40ihVNYSyHIlF+2AyAmZpH4VJWwagwLsWVGHbPiw7aZRTSLlOh2I9YQTKBU7O4TjrxrhzxtXHAqRbBWIyobtxMsyTW7aEoz5B/o0BrxE9guxthPju+p4DSqiODnQK468Ht6LNygqAQ0ct7NboO3gnPbRvXfd95zQEIZBI50jE/xhYu3KfLG6E8iDp8Qd8/PGyFWRKoCaOtCvjWijBsIc1+6Q7d37iwUGcH4UcsiGOYtc8h8gm6oB5dA+itMxZy87UIPaHyrC6AKYXIqkh7jeNIj2yhXv3+5VNZi1OcI5USbcVlHEAek+zFS0lESQTQ+k8cTCJUtSxQPMglV5NOiumdjCKsqETiXMPHVbNsDD8zhAlfpgrqdINyH1sn0p6aB2BF1lhEBLVk2Omw/4+MgadjImZDixDY79q94cYOgtY5KtcFDxomzyz3XFkMU4HWulPjZkfgCX2mJ3xcJtuKQAuqzPsrXotiDm7diMSDssLuxvE3FEYCHso+R45Rkac890hNh35Qk44EnrLcvJdkBATlUWXKcKSvQwPpe0Kb7zxSpbuS8L4xEs6P8GVlDDB8T8z7BjIkOkBUmHox4WqMkflQOvwALSAemO/QmCIPdmC8E4iz9xhs6Dc754rSYNWIpAVZbPVFaIvIdEbx6SPW3JoOBZTEwo3IhsEWpmQ5kMlijpov4p/cqJu4xJaVVJQ7IERmo/6Z1CLre1+HYxnoI2wosUL2o0LZ7riR6RH5j+A/gsDHZ38xKTMLQHTHfyTrTDEi2xCPecRJXI1FdJ4JUb+VA7yqWos2IbqzHPmpFjyeyTEowLavBztmqC1MJBDLMdenOdQx0Sc6Lfe6UqVN9QlIKUWDwDiUkfrQDuHqMFq4+apw/7on3XmvHZ1Ycu9eq8C4Ve17b9NgCBAonSslY94AzckF+HNWYz4LtEh6W+1FR2QVjBtU3wPC+H7p2O2mPE9C8QsfjslSz/ZrV9AGbOsPYgFTTcNUe6n8kuhFczdhWt2wXScWFsOPKrYUkxgPcDojQT3LDPefDve1+Mra6Ai9Ptun8/hKthQbm2XSboGzht+p6vp++PZY4hlCbB4KrXIhRN2f2Jh7oRE43tY3OmuZse/yOi7aIOtS34+iaMIA9o5MkvS0d7beKrtM/sRE9u/iIF41BkGpYfmBn5RNWvLt3AMlnN7ej9DrUaPx1VaJzVHuZHfoQsCbOUgs4A3CJpm7th0OamslMim00/IemtTYZ9LaLTvZwMdzmUslKSKnm5f1rs4mRVa/JZEURzKwURjC6Rg4gUcctJmxlIxm4Ku2xH0WcAuNU+9DkGIjsMOCCHEIdPI4XWgS6rvZx380K1KL+NyGNJeFDQfJCZnOdsmYnOfWQX1Uon6Qi+vsFT5UJL+6Ka+wd2EhG84fZeNvul/REpU24U21Z4Dd3I1iZGH78HCPoOn5G8XpB4XW+NJXekMFToVjoAQm06jpeS9LTTCT+YVU4TYaXX//HDz44fzwvn+eWPMDiW8y+y3KmglJuBSJbwPnoNEvAyDpSh1ODGmF4uhppyvCercTVIYHgOujT8/L4mDpN6OWF0WW8YwQpV0EQ5V8kWdMR7zzu8iNefCybqM5mbZg4xm2/OLBraNRbL8olZacFIpqq6/N6Gj6vmhkBl5UDIajaaqFlY8VqljEREjOF+L1hsdG8AC15WE9+hR9jFAMX2RqGR8AsnZtCxFMv6k0DPPVLxtXMXlf0DQQ5xZcDQxTOoSd/ZL1sUQyXp4hmnQQ2kBxB1F36iGKYyw++JJozMEHzewgcZxavy4VJ/O2YC/s092CPAX4I5Gy3KrEwJqcB8DkixBZXSJiDAFc4sqdG9Tmzblcp5gT82p8uZEmnMGB648peTIncRa9JQmkzmS0cNNScpQt2HnOkMzdXnqRpt5o0Den6Dnq0Yt5aEtZ2Ti9Tng2FYiwZBHtAlBOGp/0Pg8AsK4i2dDvkzAuor37QIFtoremjpVpE/1Bb2s+K6W0rZj2qkNQ9myJZkK9MWtEnKLYBYxYxgmRbYgurr0beUUGPSBaddGoHRMtQ0FeBvqo6WuNM/AKO+WZjat2SR2grICebUe79u1HnFKOv2ZOMMJkexBJYtKDwghYSpkdgM8a9SfoUcftntY0gZrPPzoLIRhHpikYAJHpxel7GhnYpnaNuRkdtrZycl/qUs4uxJIuNSsUxBkisHRpZcmFH9KYY5J/EDM2s+BmULvX4dcXr7eP+urQJa8R0c7nUcALp7Cx7Q8TCwrhyInRdQJWy9UUvuzSxS1En/h1sxDJm8wme5X/FjIeINIMdmBJryg/JnbTa1kDavGjYoY5Nt4PmbDDQ1ZyHCCGT2SZlh8Dk8q7VsacCLZcN/byr3GXCNCyMqzSOsY5lPoYHNL0uFGNVODK8onowsWaTN5RIFu1bNcKWSVpLqt/EPVkgI5GLYCrlfYIJ5Oh+yADonlGvbO2otGHfr8hCxWji94Al8jPsBnaQQ7Z9DDEgU8SOx1UgYy6JGikeoquECXvcExuS1yLuyGWWIk1u8sdcR25rdbOZJ9zqDMozCKBFxDFE62M5PjIgvaHDVOp9wv7rMu7dxWusBcOrB4vksVgKVJmnbrw9Y/9vi4vNVg+nuZTW7SyrObXyo38H5q8EJ2IDG4P6X0DG6VwPNWAaJDHKeHfKvMBnw6XMuC3Ad4M7HUfipx2LgGYIx8WONm7MlJTdciC081I5h4r0FipxzJ8VmkIUk4bAu9dNuAfTuA8ewdKXDBLY1wm8saYeRmdDWtZ3KBofV7PAjSCBmyMQ0KTsp+OxCMUbQ83RsR0RsUZKLc1db3ZiEUT/oetOHjP+rQY8wo9o5uEOcNTZQhyeVN3MQ/AwzfmxDnfc92cL7kS1i+9rrxhoNXl8+Z3d1WPEN+JINuHWcf2+dDS0tsI7U+jNk7SPAkNjLLW7QBEn63YUx/P7xMI2Op7ZgALkNtQPl4MjmN93fHkjkiHCF5hHLC1zDpAo7lDUOfvbCYzb5o6kuVaOBI0wto+p7Zj9PNxRC2oOBYpzV2mFoZun84U8MKeAxyRGOlmf3k4khosCJs/JZIcEjAAW6CcA8Eh29Ouf5g31iLL8fLhYA/sbUt6qmVnwvM738ZLRJlGbqp5T2iimtABsnIAC6tXEPdXs5FGDaDVjjywZkjbcHRB9LaIythIR3MgPQfDFyR1ySuwzP7icPhMH+xxLJCXL5b5RvZgfyNDVIzSNM/UPYTAcLEXyzyBdpOfkFyTFPUCdTUfjZxlC6tEk70FxUHWRDqGWXC37BclLIY2dLU8YPSm2onRRk20YUd6r2ZzDEmhAiP45vmTxznZ5GS3GapbJm+ticlQU/tZyzn/97o0hdSlGbCy5KIbuQ+CqKF04DTmrQwBwRBceWi7+AcGSgQaMSvLNSKT5rfVzFTaeXZ8UkugMPoykvIkoeVt7SiEW72/aLTzK18qOUz0Bxcep95kjbYPzhCJXglHvpXDgtqxUO6Yqp2MBQrF/+i8UDyPn1YV9uvPA0Ui4e4fNlJapvIdxnUoMnIXH7PzS0OBuHizfAfAgMbvGaU4GHFAPQfjw0OxmF/pVTUE8JKU9Oi1ffqSanafqVNNQylSxriDyf4h6DodAH38QRb9fkwVxtDc+WGm+4FjOmaXD9xxyAFjNVrdcLSiyME12Dof0dqTB46kakd8x/j802xszefa4FWRgmumizF1IibLs0cyIHXxne+w+p4aw6poad4pi81la+3naSE8mtllzet6fJrTFX4fzH8/uGntqoBrXEnHFH1MUkTHikrPStRAl6C4CqJm/6cMrAstx0vFUAHSjCItyDXAl+5iC0RSG3tv0DX5LDKGllEBiTBiHxDB8G1J6xhTC6E+z08dQg76/qt7vu9Wq2gE2hBhBsxIcuDp1uCoVUz0t4wpmeVGIqWnwmCQzaiw4JhjdgrhnTECNVor4RhM19V6HW0cFCqZnAEofHCzQKt4JsBb+yr8BSPEG0QwLWpsqIGuWDWUZSkGGMuZiApgynd8boaDYolChAurClWoH1CzValJeZqoZTz6yuet21lnhRIRy40XtNb3CGTsw+jZcQ/3hZDjpJarsvEMZSPBuEP9vG7RBJ1SecD/nzMcjx8VhRFLq4hqf6WiDZjRSQ0EoOgTZR+lZqCMAfhVeAJ1duXmMzlHcKAOnBh2x7HVdGTMTEvDqaXYoC93fVU41DqUqpeGE+2c2yoRm3C56U+WnKaDaxiq6S2AWwOC9GPGF0qxQzNSHYLCWTASAEB33Ef5rY9wpqp6oWMsENCG5To+y6GHDwoWf3IRm6AgWfxB2l7nj/O5p1BKLe3kwG0i+8jiAHqU5keal+fcgkxs48r9X67NBjk58Ksj6STOnkaIYMwTkRK9w3eae3hTEIIsAZIi3KuH59A5PqlRnYO+a1cuSdUC7voshGfKl77RSqu7+kfX7mqWsvA/PX2z3JRGMbognUPzZPak9TtV2xjKMGwUcZIT/hY9tzWNpo+tE7IL3Qd2T6s9J9vQRmLHePR86PHqD0T2ox/hzUhMqUO3FubecRMe3F/poGeInpPRUQshEiQN61C++UNMmZxLRwL0V3+KDfAsJC9nE97LSLJMaX1Bm4AeZqN5REDmMmBinpcIEBrskexv9PRUxIyWaEDZMlrYFYvxV+XdvTssmd04yq10gSThU5k/ymfwKk7hESyLL7eR2dtqUf5KzEkTFF3LB4Qk9Tvy6NXMYCEGAFoboaC7gcv8tpH3t6gsfIYJDdzv7x8quwWwJdf3lRgKDpvElwyLoNTrl7uR611FOS88CwIlgmr/Mr6ZvNBZHpBowDvBv84LO/P2qU0RENrlyokaK535uVdqkPqiR+11TsxhzEGk4iApT2J4U36rhID96H/D0x77fblzNroqo22i2zOsOB5t8GNJ0F1y9NMotoiaVZrgWFYf+/sWXCMMAWPi0e0l8xwfC7CL9m8CVigNDbBgUmVvlrhmJWYHtjBKZcLVBCwUJ2y8tFsnwqcSxyIGuxEB5pAOIAU4ypsoEGsfyYOuw1ZuN18u2RPBSWGdF9MN3P6WxxWYhXRPhhMLnD3oCIe1dcC09cl018Ko/+M/Z6oXSRHMjhqP74Xl8U7nwOHQMupiE07qEbc6BASvVvq4RzyN53iVaLEjTkYG3drgXLWKBIi/ZaBaZjvKd9cd914JN9oL8e24QTSig6+B6xeu65qG5HL6ujPPZBm4LfYqIEQmhswvxAQ2KnPrW6FIKzlOoDrfgwxjYxLqZ94dsrjLTEU2xjvnxrlqghyLDiquwwExOFU3YgfBqS3VBLJC+/uxGU32iuUHMOEnOqtrOg2Qbpr1dW/flsY0b3c9NDc3Q2mEfY16hHH1RvjdpGqI1RrLERo58ifvz3WRxvy9/zzTQ//x6ZYBJufFQSbqPLKYq/ZdZJtdBgq3JaGE6ogJl03XcjRov/nghNwuVTbaA9+hUfI5mR3L5vndGjfWxQUXQAITgtLuLWbEYY6FBMH3/WUWzrUeuxr9VoA/6fVkU1ewaq+3uoUn9SZmt5BpiBfleTPOpnik5jehm1w22053B87Tims3gyO2oxTTW3c1dzwGZpX8ftGlHnX4Ip4GAJ9MGFranAFOI3HCXpz5TmOhO/1Fn8vPauOOnijqCLB1NE4dS84dnOcWiv3jja11phKxPz5F8zFNtPshwmua2QUCEBOyZAoxkvIsp7tyRKrKGjChDZUccO6X13hfl6LtSxmtlTFrGtFTmQOFP/3wKadEelg76dQb1e47Yy7/ZpQwQeiRaDt+qJlffCR9KAIfhC9WAQ/OvV4FPwkemNe+1n0qAt+IT0YBL+69GgTbP3tBjqovfj2aslrLGrO2tImy8k0OFM0DhS1y+uXt7qIKLjKxejkFmpuPdtns/h3quPEVvTBjd0Jio/aIl5INLw4r30BDGUl9Ou1Tyb5i4gzpaOzOMUk5WnvVEtFzXdsqyHGjmtw/zWoqGlfRbh+0Q4ZDvyhkJcYBlxgtYSsnZuy5h0QAULMcAvKNS3k7NyoaQMA5SRK69PKtyImMga/VzE2SZgbnGA1zwqo4EhiPuTSS0+dLZN3GZnSMOYnYKuIL68oDdPALz8ACpLAnoXHVcoUhCREKfBYupshyvl+6a3IGhYUWU2B+I9qIcVyCVcGthfFCdBOE8an8A5l+GwIYznse/vWGWyyGW9qt9DMsQYR+thYtBjlLhByAt8reut7tXSqMIik5i3FLiVHQNTsdGK/c9pcuE5LwZtLnPkh5R1V8tWWpQJj/CkqKsogOgeYYs56u+vhN+6LG+Gs3dtj2PS/pij2nFWQHMRTalOWz9bVut2uY6vMLng+BzXluXC3KU7Vx43/Qbk+0y5lcD/uheQovpAHJcatrnmxeLdDSHX7E/pqS80mCRAeVK8wuJ1+Qrkjdr2npzrdVVr6g/yoqEYWG5UTBaWqIpkpCtKHFAwCd6vmP6FFRbWDcchKguohPJkkhOoJ2xRgQeGBXySd26WBgW+FqhmSARmAXDGk/qGSTXEHkxnVYu5/2BgDPs67ubdYxtDOmoylPbiDGLbJPnSqRQyNYrJK7/6oftYP1VyQ0icbfWT2r/H56ZD9h179ZWU1CDHAXnb3kVnzZ5a/3c7DzTln1wM4fXEFsjNIDJ/sbEPokCfQuakXDB4Uh5lTMrojLPYcHxm0xeQctkzLpMMwpfDoJud3zeQwrw7Mo3JyIDWJFBvDGi5H37H2Tr0HftGZUYih9qFEzABRrORIXsCbdF8eshRySOLLYxUWcI/1w0R+jyBHFUi9BFKlP3pPkCoBDokp+Io09g1+UMntzJGrit1FL6J3hAhs/rzjzx3KGI0mKmp8NC3FtJ+O02KSn/aKY1QGmL3QBsfPczndCp5OPZnq7vwW90/wRAovdfRFrbjWEBXBI5VWwGgioaMvCoXa2h+KhYOVdAXgUIT4r9OYMKRESaWTEFLC+cCML2I1DuALA2ve5oFofIehpv0FVhIXk6qT99ajkUU34zTBJqkmMrIzHJyGOYVzQ9WM3FG99YqwU51ZDRFzPn/udd8YyiplGbAimlvzFOilUcucRvotnOoSlP+wzN3fGZ35OVyjHf06PU0pdFM+a52X5P9UI3AfUoKqvtqXTjjMDRWQoFkLCruwABrvuz70c/CqBSUMML6It86R8eDAuQp9xAzT0NTW3p0OHW17z9AVxfsI0QGDQbeKctg+m4479n6Apfp3J9NzsgsoB458dhDQxjgUXQjwe1OY4YqXYYD5maFAu7THbaPmd1vfcYfpOtS2e56ZOmbbZi9sI28KujfPmFdrBMCcY/1zqdbjFwVuTVWgxZZJt/WOQyju5eSa1tVr+/0q73AHfhdGJi+s5O1D95J1uZgZRd/NAtwejn5v4+YJnaIWBUykvd7kBg+f80QC26zYSF72Xx6JgeaomSQG8HzlKswfrZvbd4qmEKV+oUiotB3twIFEeBUKRY3z15Zex3BV8XBgLrD/gsQKuJL/9rVmWgSMfaDnJRB3rooEFFZ6I3vfxf8NmY6Ba+0NZwNvll0PzL08U9fs3KtCEXbi5MRJiFwTyw1fYwt6afg+y6Qs48nXerzfiNSIe2005Rr4NNr7jkuW46SKbYFRnAN/gIqC101SClkXLtgj3P3kqzADHgnDLoOCAmBB+dt7muGnbtCzZ70esX8DTjXKWhkyr9/uh2VqzGAf1f7LRZEr+A3IH6Xh/zTapxB+mMA//CT1qB+TNjdGrfHx3lekjN6Sxof+7dyn6uYb6VAg2uYQUqwDTz5E1c8JMUcXl0GTmQpotXFwSdhS8v9GenbbIP0y1dZCTO3EZd9xK2c6je44GFWwT7Y/1ESE2TwWb3XJCx3TXSSOWEZEr7W8pRGBMxR89HHgIy6D8Runr1y2Ty4/y5odVUk09K/64rDU/w//kIpbqx7x6WyWVZcvK1acFq9gK/cx8ncUrzr027B29g+XKpDhMPpA0nR43xv27T9DBelCGmQfMrcogz//Yp9An/616kJ9PKQcHAUhOYWkZsVTMuxAQ2A8MFUFqrUjSg4TFxA8BnS5aDZmEAr6zLU04GiOqWKHqiq4TumZg74+qQxd/8I0BWQr6NvE3DCXMTmnrXHqLlDmU73pBPCAmrqjQ6cepMJWMyeNJ+c5zqAibN9z0qrP6/Gdg56Htkcvpe7aqTLFoJwAtDsE7AOHjiUk5nOKY0ijnb3CR9/Lk1g0CUaRIaZ5q4NM+Y9Q2cE7ljFJUQ1m9Fz+cHju5aRR8UKK2TJQ6WgDH7ouOM8pU5TEd+A2hHtvtOkum/Rw/dFpN0BFQ7FM83wmgiQ0iDdoRzNqD2mrlA/P1+KqLYTaD15B2Q+jmv1Lue8Knv+RoG3urqKV4qFyqwaxSINNcHFLQFrwY2Ob30Fh9Q9U//ELy6qzpmw7dK7vbHMnvQg2EYcySJ52Njkj0XD5IszqHH+vka5wUJcDaiJuTyNj04tbtKLpkuEmJzA/2V321kV+svyty1vNFSE/VBKT2/Q4P3jrbSnucWHltlLiuX21w+MSDOYnqxwTcevY843YgD+trdB2g8vmL2ESEwHkNfR2Gch5aTTMZPpMucr/pvivs5gcOF3fPFGJNq6iyH7by5MAlUz1HUctmPZjoKjBaVIQl4xbw7BpO37+YK5bCjy+fdOBSYOM8PNUL2BCg7SIwx0NdSDkvWew+mZTKWLoHOYKB2923Jt/r00E6F6dGbs3S6OHoQPDR1ReXrElG2ZRqK3+H7k2LEBIGwFCBt5QDemKThycmHIPyBgJkD2Bjg/0b7hVxJFbIBJ+EtqiMtKUPl6QHzuIJj2N9Z09DWPfaYMFEkWk+U+oBqVjNBOt1ig7BCmDHxe8FgOqhXDU5se/UHN++VgZYt1wiRcqQIEICkD85YJoJ2heczgusNH+TcrX2yuHZh1KptbZ4HnQWVMb5p8bEYgf9ImOVsfRCQDf6bygGsR4qhxiIu/pstrK9z7BSKeNuSR9xJnkzgcUQWh+OKl8w9Ghsrvm6Mh+L9D6nxU2xOqTVzO/pbaa0VRWYTk23bWxOrDf50beiQum8Pi5BVPDKWi/KRzApwyG4ZFWHah7CNECalOkejPrKpxJWWSztuBtt2XuxhAQe/4xZ4Ft2RN0YC9IP+wBp2YTwun4IHGKvie2J3A+hSKiu5bbV/ZKpJCpBT+1NFuUTZ6ALRI7+9RZFH1YS+N7TX+YSmt+KxU8sjWD2HTctpFOeJMx4enp0Se4lXRZ4s36lWTNhxDietteEAI8eY/c/9I5jKHpVISfwAqk3tAHEeK6IeoLYNMoROJ6jF86N9yUUw6MGj37DyKmqTATgLDHUWBClYLzsfD2TWb06eoHp52Nxi2wmCxshIYIrpMqsh5GqdfgQEcO2rPCpdcYAe6OArAUV/Ns99RgLy/Pm/qJqZNXn1JzpyqAFpCNap2kAQm51Akwf4r+IwQ49jxnShOaQsS7lYiI3DR/NdQ70g56UuOCREN+/y7lA+ITsfnnkXgiRjcuiafqeMhk55bfBra/yoLefUgvMobOOHv7Am6P4AK3hDTFW3GxthSvQLHcoM0EZ14mmojI/IMHqxc9FVD+o14GEAAopZ1lmVW9ow5j6Khzc2eh8IPQCbIDxXrhjx9yKUXOjGsU7M3OjBH4bfEqUrYldKJhJ9/JBLatwLf0nuju8TX/JBHYH/kVE0L5sA3UoAJkZDX7RwgfmqiWpJD0sY2h+lt3asOGx5O/QOyL3VqSDxIQDkQvB5yoyF4V9Lt1Ul4YJw+zET35xp5RQK+PofRKsvLPUpzGxyj+F5ozcguKLCp+qHN1djd5Co0drD97fzArDuTXqwsaqUmc33hIJg7wgExq67khoIutB0k6yg7o5hIwm8ugDKi07DlaeIXrjBRwTmoNcRW3an4pdxaQzfLA/pw3Acw+kvmVh9AMd9E7aBRip1dSyf3t1UBs9+M7voTWC2Lm49UFoagIekLmfMx1a9qbH+gXuoBmq+LINcKeGq13rjR8F5HG8Ll+HUd14DM4canu8DVU+KcKy0k6Y4yLXO5MqLigc/wddaMeJiW/ic1rUu9gUsoXOdBH94pevjqu0b1UzlzM9HNfJ0rM3cPL6m4LE86Z33AdxBQrov1jY6yRiBN0jAU21vBqrna/qwTzu0Tup43i8dyUMqoqlgXNLhTcHZJyWuMVAieyOtcFZ+d8YkMGDYX17hPCMlD2y5dnXQXMCIwnT1A7AqyvgnWKDKOfHQg64cdoKnxFg9Vh570sbpdbauVjATYPIXIfS0WXAc1vng1M0pVG/At7MLEf2K4DrnLxI01ZbVFvUX+vGA194ikffttt38sVpBb6YCsL3RgYM6DKJi/mfNr0JZ1SoItG7+Nvhtnpizs9LkvxkwWLnvpVFSp6C7xO80HM6K3zPnegk5W1ERXmg+jPSavJeRquQ3cdyKdSw3Rort0ErI+6o60Lsu9dAGHUQgfQP6v8axFXy65QL5QwFcfKSuBZKOfcJYyzajAWyXW8Uq3N3oZyKpF3Cl4HwNGYJW9X1kdOlTV0jsp6rpOFA3DTe5VuXiEwPlT0eBRfU1FeC9V3oRj+8RwBn44TwldRFjWJQp4hnAjEofrmMzf6zEqhb5MAEDeDo6xcl7PMhb1E+yoeznNcMdJqBR/gSvoAQXKNdEhnIgBF9fpWpxtIUGmv0hXIugEW51lpGLzJRdsWTp8g0W6RTAWRcB1dzVGQWByi7YbBMNBzyrVjPuj3eVtE4ax6Bmr0vZmbDlSkgG8XbksQgoWtJbDYGhYTHLOtdb44X2J72VEVMKSRi+2M57SNanM0gWN2SN0dLfJ57PoZiLb6zzFUInZsAchApqtk1Dm0sHEUbuscm3Ay7mEpQpNhvLgzGbRDWIrh/g7nDRHrUpWaKhc1XhHcTtOOFqG14yrsFF4iVDSOt2n+SkCo+QT2ViNo4Y+wzSl3ssBsA+2j7IhKOTR4LEAm1qArHnXoDHEGW+RNRFMAYNVg4y2MYxMtiGBd0bjMokKIQtu0gLHErEL2ySm8IHeGmSJrvmsznngKXABkUYM+gqp3OLWPh8Z/HOCqNzdeLzoDZPkQA5bbJz7Dt3qijmakv9U4cPgDRRe+KZMHiJuwJQWX3jcvss8TrasOt6T6bA1S6ptgJQq9NpdVQLmk9KPulHFy+20NvvL1fSORPlJBr/tKI5geKushVnGxZnqYEcWZZjdmyItn4/NkA4WrXmeAI5b8lDw+EVQppej3Eb+ErAXN2viAjXYYtzUDtkYL617Nf40vg6RpFLHiHw72zv7HISTfyXeGJTnJ+5tAehnL1jEnNLcUo2yL1P7W81IqlR82o9c9NuDNW86FiJghZqJHIfDqih6V76/pNfgajmF8tsrWwOEG2tfJwXKtr83VTZGvW/eu/MwGeETrXAibRSSIzUuNDBEgClzSmTslCMRckNi7Qo3p7yBKPnfwL/fqISAf+U7rpfCod8BBGxhIi3SJR753hpMPfQL9XZCc3uAqQGvt0TJrFmxYqBLRo3qIzgJe2RHEOBMvYKHy+4FN1kpBTSWEBqk/Py4UXpkIMch5mJQhQcwhJtkrEzHuDoEDwlx7uiPkv/wFfE8CtPu6tuHOZ5tFIG4w0gsKIBKfhOxfzLd5bjD3x1P6mEaj5ve+Uft3RYGkb9CB4QXSUBvli8jBIrN+WarerU0Kr7Z1eb1yswLIyDJrmVJVMTbPaJ8+/J8EXcb4DwBHobgKQy8z+ArIzSL7GpagknzB6hdL+0Tz8VLoxkw+czDTTZy0RBZls3ZuicHX5mxpSjs6sSyLdiYt1KKdifO3qK7kpVN0m3uJF6VxfkWrvPiLHpY8J4zu1DNLzB793ZLU8zmXFD69C4s0bbo0juDVLN/wtb1xmZtT2lZcvJacOKRnblEVtZv1uKshUiwX/6CuQrMX06aJ23xSNqd8zdu2RrUFideczknC5rSVlbM9Bjavy7cLdgjEKiA2aXEsxFVh9jvJvOd99cQz6fnXCPOsC1vruNaJPxsEi9sH0ItOMgXvpM1E7eDiHq7oDJu1LqpIp9P2mmIqMae0Q00Z1U2atnPq93xDMnpIIsai/JI67nZ/pvYdxm7s3+8drFEXbmmpsf8E0aYdElcwQNwarUAXLNhk1EBO0pWfuWoExbUNNLClStDZiRwV45CebHjU8AUvE0UhR6nlBHsUmWD0QHOQQyBatg6fjIhsAROUTtT9aLrY5W/BxYXP9vA2fgGHnXoXK6bb18TWrdwN+yDp17WgtWIQso6oLEMdyqHmb/p9Wb7yz9SOTWMykZxfkaTv14X7+eAsiTNfb0KI9e4Hwevgi+mxz4mamxsq+8kSlO39a2ogVXmeBlZAk5FAaUERHPCvHPDm0PEfifYD+znGFpkbytZ+7t9mJ/AcUtg35+iqT5jLBpbYAJur88CFGaKVWGiA4as+7161ZG18dTFgC/zuCux3SJV8bBfPjVptO8B+kXle7jgbVo8tS2njSfpaV7DqYCc5vAwYSJT0hroLDRqJ9wSagvfGNqBRZnLtyOE6JXqQ+129WuwOCqEKiCuJfWiFeN1BgFLBZVd4BXHreSc8+VwazaV0H/XFOqzeIzdpYC1/pL71QcC4a2NaY4qC0ik4m5dmVjfGUfRNNYPavC+XTDJxrLQ5PmNsE5uTfLIFrwnXPRAIIIKQG+RYGE0Xog+tFoR95Ix0vptSAbG7KECieh47kM9he8QdNB5BCY17mKOC3K/1RzGcF5JopS6Bif25BcL3Yykx0OFD1PhwvfPNABuvrorSMbo4NaRt+qqKm744F7PX4z4HKJvjNNoYZxCR9jlppVMzFFXDU3t1nFITpAWWQloith6bj4UWmPrhulfZZKj3BB7ZkR2p6rOebtJAwiximrcqH7ouwC+7UBi4AjDlVseFL2NHnqkpGuan1IC0hNeYipcAy9il1v183BXs3DD4AcX0r2JcX38yBzYNZb7VzrmFg0fawMOwPSiwBpGPFT3VOuA/B/iR0HljMXeqOZJZ9CqfZA3OG36ZtuAyhc0Fvl1G+8vAtv0Rlaho6o4YncG4uJTD6lzs72c3hfUyJbxM2bsOs0RnOaPcVBs7sy6FeqUZQBWvsb1ht/gdIjkAB647uyakoV0dqd2nGedQ6HgiJ5EE1V6XR/165PPaX0hJl6R7fiSpRzH0lFPNVZPhvmGSh2D6gDS/UC7UdwT3Xo82Qdc3na0TbBUfwT+8NGJlJR6giCeJISgfmda+Z/4xTtESeL7cpy5mTbU2WzVbop3+IHzNLp+TyXWYYCUQIUJS77SMpQwgLi145LpHdH5GqoDrsVW3kvo9m0Ur2IobNS2Y+KvOgR2fZ32Bh2FFZc5OBmEFoSqYzdwVFuiO2Y4v6JxdBm0Gez2eBfVYrjRNrK9szto4xcabff5Ek+dqHWTqG3G42Bx3JIzgzFKvGqfTN5Z3rqaRQTarlyu4/02lDYFPXL8pFG0pj9ZV5MQLGQLsr7oxVALgGi4ihMg9Oa+FQQ7EgLUIF3oPV2pBFzsIVW7efF9ntngJBp1AJpflfNbnHls9iQ91SFbeGlHKErIQI3i1O0LOYQPJKm75YA0oLPOX/1DIk8Wjj+AQXBEky2+AMZkbymYr6o1bg8R7DJ9h2Fu84fzU3Kg07kDMQs41X4URlxx9LZuOxNzigXzvIHAcWimeSKjKfVEc1hpGJ2tYH29FVwuhoIbDOch05mHmz54n5yZe+aRuFL/D+7olLSRJGcQHIltoJDpo17Kl0JAwo0aXZduacWbkXbgzPR/Kajdh2QiPJHyFx4Ge36GgoyAAPU1L8HMHmlYGZpoiCZpvsoMRKUmRape81sn+j/IdTp7i9tiQ+qLpcYItLKSG7KsQb/BmCexn6OVirIBlTvHW/hO0TP05d8YKZ5ipfYfCwVOqkUxR9Z9aW+jvn75q1nQuVKgy5Cw2v0uUl8fR3J99xo0BOn8xDB4xe2YmMGV4TGkInlmDOhV9HE0z/DMmXFsuxHm85/69oohhbGaAwiKFzuPeWBvE1E6DiorgE5dsa3+KGNBdgyUsg5Sa4ZJCiZMidQ/ept1lQ00RZsW1WniJRYhDwy/yS6yQN+KC8vpuIzzhyru04KmEyFIqA6A7AnDYgFuEmeuNLCBlRvBYhGU6NfhIiHjcQA9AxAgI3FPA2VAxABeiqoRiKzhFWDi9g6+xhOz3RzNno3mRpwFqR1sgq/ZoJvNjlUNKORwaPjmKMEa0N1O4j5uVW7/Q6wliSieQt8A3fofe0OWykocWl1sk4fcfZzFc39cYdWd9YAkm5SQBJJUIxzGw4+XNXbxLLxdqeBobObRyPklP9RETYyI6JMr3lDVAZZGN7PX4d9rudCZCxXrnQsNiOXyi05yNnqScOsYLITbPdqpCK8uS7zg+fEya5sbHPLx0e+0poa+4a9Z+K+5idYqzFWL/lR5u8jz15HT7oVZmuO2Ci0crQKPESBqBBnX8QFXyCjUOkZkUrBJHKxS36KPpESyABg5Rg4ccA6imp7jGp24ih00NpmCgJ2/wy0lw+wL9N5223rYgk9i5bEz7Ye8MbrpjMmcfONCQK3HTbwU0BKa3iAkJT5esWJQWibyxFKpay6XO7VxR0BuuWTXrQix6xp17Pgx7gavz/CQKFMoGmAHSNn15/Ur4eHg8UXymxACP0KB/dAAG9wvoGOPB66Hp9b0H8UvqnQ81GuZRs9g4NSar0Hp4uudM7x/9pDp8BjKHxDr50AmhYlyqRciEZdGV8OSCX5lPXsKsGAUVlXg3fQuo6ih61AMK9cgi58CusI+khxN5IwC8qtjQQyssuTudN1Llhw0HRAnwhQHIITkbUo/gIopEIXSMM3xkOfEgWWdCQDAzUGK/BvXmqT51cmATnJMEmdUsx94aBnUgJgFntAd++St5MdCpSZkGEtifRwFn1DBKuKEW1h3lmRi8jDJ14Y4orAUMt73O/z0EYCfM4HMWyh99w9taGPvzO9LFN7SF2j+XKC6tNlDp2zrTHxDyqbA6Q7ERMzWxP2i2HcU4e5YWOFbXp4EbSZoMPr9kXe6etDw6xwySniAB0y35C/cA2IwwxSRpuZGe0+HPUtqDChSj1VI+bMdzeTA6eFkcI5aAf3/nSlIyHTGw+SqINS3teR0K8t3p+ZHi+cek4PNEaOYTVfOiucU/m0Oczee28lxit5CxqhqIn7orgm3hy5xS3CWq+e4tIguSKhkYFHzYnb5G3buPUvfAmtAJzwUS3PaRJUrc0P2jZgSs4liWtZCKE5L8ial0stcEVvm4UQ2F6iJBUwkKJ7jctLkQ4yFil3DhZPCIEeSEhzH3sCmRR+cepD5Scu5iC05SAKH6n8luJDmuP+It0I45Eo1v/Js93QAnPkdjY/a8Vh/8UrfOkfyIdom2pMXhYNZ9Iv5zCLEgNPh81bDw7EjMkuJeeiJDT9pXu2pWgTyr2p4KLMA43p7Bq76hVc4YYRaflGXJd/9RB9hJT7pkzLLy7ynWoGqTYNtVb7ScZjSRcBuRAX4KYccKgE5EUWumg8/LxRErFYIrzrFFxS7OMyD4GV1Tlk96t9pesToZqsbsns8h9FKiDO+G5fse12nGyLqqBMcDZf7ThSe7Tk9zGlCUQO6VbkCCdBR3+Fvtj3MVDrR/PZ/7xO6b3scZ5LF2j4YK8AvnHyJ0adSQIwC6f0Pg+EVwQhegHwbmH9vdlQ2CBAJVhEsZuCeRM3soCuBS4GLGEdF0I0qf+AAEBP3O7xXH0uaLyPCy4y3j3QeuYrLxYSBZLoI7brDIi8IA3vWHV/fWtS8/ryxq+5Mo/nXEYaQARhkCyAIsAIABUT1fgh589PqHMuGIX49j1zy24MYEccqcPZLpehyJj5lqPvaF9x7NUrSRxmNo/4nn/RsDR0l2P3qMZ5vMWBAXHxqM8LqEK2oJYYtg/OVU1jeIGJVzjUpUIYsPeV1SyoCENcxGDa8tR+Dlq9SGDQw/GkK2D42kVx6SbB79jMkfpNW1SuS5v5QH+fofC8atOTfsoq28X/iPdslR/0+fQViLGGqArZT+W7b8Efxr7RNBmT3tHshcwuHKBRIYnBMnDIG4ozFkfly4DkP8ws53F9wXmhJCu9kouO6svqe0w4PTRu58lQ87KRTc4JrwnlUSEEnK7ONWRc7lv/QMvORqgWfK/Zx1OWWaAQ0QpB6rIOmFhRf/PkEjrdrjBlyWYK7IX2cvXmFkzImo1WRv5ZUAAkh0j9Khv92Vm/Q8QdDIVgPS5LcUbTJ2l6Nh0QZxfWbN16WctRc1soxYSnmoKnmfUEH4EaeG8/cafTJ1I4Ct0JZgn113KgJomkrN8t+ugzhhl9K/3HCpPK2zinW8XE2TCPe5vTOGXo6amGb6bYsMrJNLM+fyIdtTX1HR4716E+OC31D1Vz2Yz+3kEGmOMRV64OpSCuiBnDqGQ8rNIcx+pDvIgpm3eabOYZgMI581fQAzDppv5GHMiJc61MOXcsxJaE8P9PYoI7eUtl4HIE3qZGyZ8S/TiEm6hxzJivU5gHHyosEDgQv3p2gN3IaEmoGty80kBziX5619mkqh1PrR6sA4/4Tz1mVApIknkxTjOoKAIiugAZ1GPSCx0mD8DXUPBp2khjBBv22QPF7A3J+2DqRod2DVPvT+AAOkJX6+wQldfRVqkRgji9B/LH66VsvTuzqyD4YBRbeGwKHzQGw/+iTOMG2yopqMqLA4uAa723hn9/5JbV5hKHmtco/b8QJXUQImudu9GiN/6LOYo5CBEcmUhc63hn8+sOgWcsA7FXmTFSj6Q3X4mLjRtlGclTYduj4XBv2T3rFyr6W0mlZBxaTXDQQEohaUkUYcUKk0M4saD8Fko9WBXA0fG6mMjt223CWKeagJjiEFSf6Kx+bPdbX3o7uK2jTIrsPsY8ZpjVjIoOX6ngosRb2oPeCAiD7+KpvWVjWhmrrrXCOKb2y0l4V2hpdvq5dv7/ACVd9BgsvHfNowkq6LvyEZ2Sa2Z8n9+Sw8ajAZzaNvZeyf62TaAqiwJ+pMSvjAbggTYjg+PexKY4eoySweZx9jc53bKlL8nTKj0Y4I3W+7Hnw1WgwnO+cJLRp0AQVf6RouXgxWCUHWkKZ1RjKuqBeRd/tusGEzepQmcIn6Ca05dqXzowN9FTd8S2sgf2rDm/nG1OrZsqLSNepdubsp/+NkQTLewXnKxz4IdOTAoIFDazI3OYwQjWzUMGa4Vy9y4uFCC34WMxRQfGNCinFjF3aH6lLabedml0BZAodhMRMsMyrLOpYtIMYxeS41LR5gRqAWRL19Dcv8g5OTyfgQVa6hkinyAb3dhbM0bJpEx0KRssFmS7qEaaSZS0YKuia3MW7R+eKDRkLPLM0BuKPswJQgTe6CZu/bVv2QSx1d/f4VB6tCy5RPW3NZfv6vdbhVv9iPqB9BWmefVq0zJtNgzrNjXYBOhCj5AnvuVi0OvWMKzLIt8E0GMZH1Lhf5IIQBNFdlyBsiTANBWYGrBsGm4F4l5UyRnPlk9E3F1AlWdwuyzF3C1jDGLIMuL9FwPb8WntoR4mzqyCO4ihAlum8qhWS/87LEYaLRYkhgHwbSjjfqZRUCWqUdjBxYXeHXRLqjbE/3G34qFW89gD6XLeeCFilfEGHzWejZXOtT2EgAhxx0Kw4F+xni7iXiUdzDVTaYxqtR2Q/5A7QWgkqp7DE8AlB6xsR8kAgSOVURL5dHSwNBc6g5VLBp/+5iPDvclzmsxIDZU8efSv2pe/QMZYTROES7lDOdjjIPz66TW2dvOVfxE5WE3lWsS3U6UypHrdpX89liJb+v41AI3fLt+ys4aP7dfcQvXtHTfZ/XCTVvB1arZdAdO3zV6+vvqnx/8230VFj5b4gQ/+dZUHD0/SehYeB1/doqdZ0sPCKhEvifVYX8VLVxOz5HAH6CAGhBtcqJhkeiFb0fSp2LgY46l0zDAD88EUihgGSiC84Yc8tDBADusLoFk7g0dpSxcFHAXl0pSMPn8afxD0TOdBo/JqbeD8Ne6fM44YbF2PS0wy1wOcSUXlC8Seqx1C1ykVhQEw0+FajP9nrxMXFhJwXz2IZG2XLGkTmf+Ll2WIO8hiY7pXJDlVji8bVINrsaQoqLgkv4RFmR3Dpn8seDmWzMeGonHfa1ocMm5GDfhROsxhK9CuqCU34UD6Fu5RKdj4wqLtUT+xEYj0mVw8vQGVChpTYHd13NCxoHFf6WaweIYTpNAgabIOL/lsYelUDC+yDbaty+3I58YYeGTj08yGx/sJ395mM5CQZ5IJNzZCvklYu6Uc4dwYrhbYjry1+4lhFRFCMAPQXIpymtx3DH6wtj5pebZ/Jt+5yMi9WWa/IrHbFVwMs/pLCPHrNn8g9cZo+OqHXF4n16D8OzhlAuBAUR00Gtgw7cznKQ7+qWu/R+7IUuCJ3ZdWQqIiIMb2u+Zd9nB/SDTW1Y4KyiPiFqqje/2JwoMD5ymnP8frnCf9UN71ZSdY63/s5C/4iohhSUsZ2Q78zdYlBtnS/rQ67ROeqVIOi8UgrCzb3eEMazMagDp2aEmfob45XtPny/UE0Zz8PrAuuZwE3tYqaiV2U7pCQ1wHc4pXjswhrH4ZZqQ5smVcdOtmk64IBsfblwGF2eapLkfGEL6qjkXxWMKP3I8AFO3T9Mf5hpHqyOvd/yrMv0gFOF1Zi7qoIVuwKg11JTPOiHZSsMCZ2rbV+x9lfDFrmm+GyauEM8DFIpDR3FYmeIxtxvLy+J3xaQ2LV4iO3RMv76bWRGEYJetQ+eAI8CacPz0BbOUaohqvJxsTUNKQvmfGJvGbffg8XyvEFuUPRJ+L1l16Y9F9XCtYCKpv2Jw7FbRNXXgMjRba9I1CqZxKupJ+x5UH4oD5qduewd1fQ6Urz7UtYryK+IvszAo5I59kQualULXKq3mp8VS+Ecj+nvRBsiU8EXrg34lAZEwwgXh7/V5xb18Z+JcTCbzzrbhADhxzuT3wklVvlLta4T/eCejyxWvrGydgdjArNGWAf3jDL1SawYieMqP5EJ/gJ+P26geYB+12PV+jdVYiP381BCO/ffbXLRiCJT+448PHSXfXiOKLtyvVbcr8IU7p1lzvXM2P0D87mtZ/olU8QzZU0deo6ZF086CeUSNFKYzpdXDGcxz2DXrZSTf1JBQjDHUddu3WW2AUVGvc/ROsYZzej14e1Z7zEftk7hL7XlgNNqNttTMLJbllA04coA+6izvfGf3TRPUWvTvmIE99gh1Icos4T7f5x2tZUxWeDb3EJ29DwXDChPJ4Zh+DuyBZdNq4T58wkVGp9hAbniA2NnZ+P6wck5ZRlu9SQQZQVb1mEeR6zY8hy3T0JOZXZ9ROj9szrCrW1UCjvbqBJFVjF/IEUkzsnuKJBKUPp9q6+z1Ch/rfcOgJGs/SU6FRvfa6H7heUn7GlUIRHRYu38luMVPXDt0LJsqqDbd418Di3Yun1Sbw/dv8LYkxfz4/Vo3ddb74bPddQGi29NtybRsl2AKpPFBz1C32cRI66U99+w+kJC0gANCe4AC3k5dmX4dtmotzTK/VzG5Bq42VE49kTqN22hpmXJsbtXw0bGdgdblMVZfkvYH20s99Q91PwBPuk6DSx3JNzjDjgpYuKYoxNz79bk7HdW+IMrrbRzEtMzVBg4CxCJVVUz2TqCwL3JzBWYDOs50seRCq2YXD5Q/1bvSb/F/tF0JSezmOM2czri1osaoD35fUQi3UtZfn49rmE/e7l57RsP2+PzBEnAoC81wToWBeZLjYajJl/P+pFmtbb3n53dIBMVPOteyXlXbmIaW+K2hkU8eE2duUiGoWldlO+VxbHSCkO02VNeknXSQZi5vGOoItmnZzhm6Lv6OCflAsyEJ1kLQmBGchg2WY7EKDkTDgGqLjRFZAqHs1ZzJsZBTIwEUJymGnHuPGJ1QqJg3aOhP0qRCEJcu+/W4/vrHz/kx6vAugF7ZsI6lK2gVDxk8tjqUVS4ZEjdpgDBnVPb0tbDdBWK2k/3fukhQAsW1mVuxNyF3XxoKtu+PmXBbesQidi0GE7Ajwy0w3902f1vsaOP2qtXjw29PD+M/sxQC+AZPVRuGaCRGA29qN7T75qA2VYjGNl54iEw6lKN5RrZdKEAcgpg9vasZaaO2xCJUwkF21wDz/QDdZgLeqeZoUDj2bF3I+mvE6eXF6IkmmcqQEl3SPsYsBUdbfsY4WLK9Y8J3XM5kmJ75tDZiodTj5/MwC/JcROn4Zd9UI25G2F9U3dOe7gULWNRT+cd5U1/JQPK9FUs8l4FZBlcZBu7cMwpsLtSPF7TtepEMNnRtCAmQKurOaIwOC3xIWXsi2BE7wndGL9ZCgPsLAcp//w4aM0kBHLf3uIOPEP3eFuxii4Ao8EKSOlzbY+WQpfeVRTOnVsRw8bgW4BXg1jsaP2WmFObwqxCgovePjQ4XF2IZGHA7g9CqkJouGSsARuSZuhNNAwV9eqqvWETQkaN3LS2Alwe72ZyU4XNIncx0lRHU+1OKOpNEBRhSX3eoZQCncSAikGx85co70QpskU6xPXu0/haX1nCqnDTqwQVAv4yiz4wYhaO1jDl490M0/beILUjN/pMIpHymqfsOQqI4Ujdu4wKPE1Ro6AHbech5PO5pyhxBTurIJajQdBFC1/h6pk2dG/H2H2EXkPMBKAAJAZUOMaB4NX42wQ1WJwlPgLojAtaVPSIFmNi3ny2sqcGsEEfS7SFhJ1EVP89YW1UbDm+S8wBaFbrJCqo9AVPfE1YJY93TkgYotJ3Cc6HScowibq+lLL8vh89LUIHqiV7U6oRgZNrJvliAITVEI4iMUj3IdRRjorsgmwUKlrcnqP8XUq/XDETUR8DtotmGY4VZhtxLhHnCcYDm2LNhgBZh0lhxz0cKbPR1iug4g10jme95j7JNhxf6jrUAmK15XuHOlsgGdsE/rHySriDpwPL5yLdF3zV/RVYVxmwI91VtBKAdUYLAFa7QAi9tggnhKYgGBoCNtt5kkLNNLnGmQ2d4O71e382OZSzOAMPPK9B2KHujr/Gj6TqaPExTi25XdTLuehRYEIPcCnP6JfTw+kWuojjCqbyW6Dsv/+UTt8Q/nrPbCql789dH3DP+yuPFc6wlTN7RyC7Oy9v6Eth6TBEOfVEPys2zL26hfJkCEzxrWEXbF1N1CiVtt9vXakggtXRjoCW9w45g8OI7tU6KTQzK/MrXOV4dYMqs96lixXrLG4as9hcpiE0/S/3OIQ8t8EUxE4whT2uMsUgFUN0OZW+LPED3rt6/wUt6i6s7dRjqpV184DhwZfiqSqYTWya0Hwoq7g8mHTdiIV3utlAd925FMWWvKC9It+JmK/e+Do5SepknyQP8DSgu1HHhnXOLb81zXL9wjvqpDHerlM/HITMJl5UXxbAGWxkxSY8Y+ttLM9UpVtiV4ec4fsGnsn1vuLHxqk+Ek1o97clkqHpyH6CtrV+iW0esqZqrQDNuPdPTbJ6Q+BDI6ddMp9pKlfwbp2/zkunZLnwnOS54x4VVc1PmjZw32jJZc294N3vzEczEk0ea+ktRCO5cOeqoHSg+cTp27kb8t2a6Jl4SgakcfWJMuLeO0hlRuodJcfDnWM723J+D7lkSx0IhuD24Cn8tyt40iSF/DT03F3yCQkXHHcOQBJAfDniRA2kuQhNNkwFjk7z8FcTCtk2XQXTpXokWp+k0OurHidStDO+JrFVyzcKVukrG2fWcs3uKTbVcJJBj3xvKBIL3aDvdnMixNDN2IAHpcD9+mUmmNXhTWYe5oAx6TOfmm2XAdMV3P/nqzz47Lp3an4uXPYd9J16C9i/Pv89BlT/IHEc/XcO6mED2rN9sVr25Z7X+ZIyvlXzszDjv0IJQgzTX2NVOxrdqHlEiqeTsagRoJCXrt8b0JyEadRNCN9OqHgZAuSAgIuDpgmkkwcSkN20Kw8WhhSG2oxqJtMoTXemo3l+8w3rNbM7MW1iXUNYv66LN9/akEAlAfRdyfSg/gQpg1pPqh+JhDWlJopFzyWc6H6UmFIrGlxcYGZMgGRXJuhmia3JMuH3xrK0Oj4hwaI3TyIyQ2V45ydqI+M6LQJG+zgaZMj145Y+idKoX8n33WE6bqFgqCx0YPRbmrzdmS6UTKt7/aWJUn+anO5wq7CzVdKEb4jxSUnFXL8i68GVWQs7uYSH3twUp4go3V8lXfcW3lOnVoKo1uCUQno1tV7jnsZFJllpauvUmkzKKiu1VhcalOe62ybZVVl1UaF0QTiJ2XVyk0B8K5OhUoSB9kvFmV1aNbsjzgjAC0LcCZ62c7favizvvZLop/ILhWeLM9Njs0wYHsnvUz4dTYdyKSR+lcle6SCumkp1fAlLQfR0DPZTnAVuUiwvlGAtF+82YklI0Y6c46Qs32IqCOyCG4yjaDD0ajI4HUhpf+RWDa9HPlFjczDDuROVaywiSt9uRHIYXkphybr89dt2vTaXVKQPoVrFTWeWdjyca7Wi/jE5BQuxSDP2iIZ1zufqMnk5r9WlfelxUWmYF6bllvaqPkiYXc1NAbO22Iaej6mrE1L6PMmppFJC+4umxqlhXWohUzYWRl2h6KP8ChxA9hifPvQpX1pqIar57qAiaVuop6zkNnWI8ScW0eRMW6mEKS1qzpwGb7dp4+GAkCStjMW14rE28na3uTKI65SEqcrjjfqSRNIicmWORapTMW8h2zXDl32hOMlt3OHiWneDj5NsfGo5Clv3Wb9U9qhPkH+O3A4aTjKhp9Q6ehZivOUTQOFQ0WundUlwWNsWlFsckmdXWMm1/V66mR5DqcWt0jU92ScCMSPsnW62X1n+gxvbli0wx2gVk94UnxLO6cw7pBYqaUWTsc36aczZB6KaFyZ1Rk3u/CzaC9EMc55iI2Rp5KiinLtcPLBKnftM9Nm5Nl589UtnFXdvxwtk/stO8HCtXt247hU2ergVW6twjGUEms+4/7J7ZCOkJuFsyVod3assY4lxjN6OZj3EPZTpxdlIwdPgx1lhOma6qVhlGvh19x4v9eqbJZLVJMx09aMAaAesnouGnCU/dqUKkuh1lDPNBfItH1X2W3l9IVqd2pUcBap4vc64zn/RiVXQryMhN/F1IEboDJstO+5QmKYv+wkNQCPP0dm+4tA4Y4TZH72uzIztzaguvNhFcItDSYF7Dj9bKO72arvaE9a5ylaNUw31AzFS7TxSn0KstnjI97jHSrwhzxWDWe4q8x1eHbv79teDVbZJg7JNqCjZTWKLbO7Sc9lJRTkwOSKgvHcDep2Psn1jYL/vyWlvm3iX+bJ3ZDONHBU9FJvdhlZxe5Wu3AE9DNanFArMMbrHSq4NTZ/Og1xI+jNaypqmc+w+dCZ1XoXDNrHlJIx0yRwEjHqd3GuNyjO6/rUlPOYTWqSovY9nYWEJatq3djs5ccXEElUyTb+7MSDntCDfWzXn3xNcnzPMTRUSw8ttYz9Wfos6nx/+5cK8ErZ5/KamXfzBWT8lwv7pyZBJmb/9j6KMm2Mre81Cmr9Dul3I38WULtxMU62MDGDVwoTFvs9WotQqzOOiRspnd7fM7m6r724qlG2HXwdg7dYF3IE9/9aiWltByKi483o8+jt+G1BeRHejnLxa7IzdQ542oyeSazI6vJDDG/YQhHPckXOwVHjbYU29C0BnUga6YF8GnD9OMtQ8/0E3J7HKch66NjVgcM+ufkSlcEMXIguITOkDZ8uUAfH1zarU5+MONa+RzUPNYgn4zF08ksWEVI85lMyaEVidg7QHkPeAdXVTMAVPTmUL+4LArutl8Rei2PoBlyJoLBgCxXirXmDso0RHg1c404Ot7BZcxcxBZf0eO1E4cJzwBS5ECAoyA+BcbfgF7jZ9rcAAfsQWZUZYIM/C4df7aflRlOzv8t6E9rrropsowfNPQcH8Ofz4sPGT8SL5Qh2YNHcPNcj60DMaZpeVoOh9ymAGTqXqdtGUKLIg9NlOxRqNO74n1kfhbfSfIKfDJ4OrVOZmP/kExX2VhjzFECGx7FUaqOQuu0abqMO5kntiO1tn8RaUdTMaaVoBEfNJPlW+6VcW2vOY8GfdsfXg1FJFa0H7oQsj9RYf6RjMtuUTV2G+yblcaatHeR7q0bPKVoeCB+F4MWVBQHfSN2MIn7thmbSOYqq1TxZyXlawNeUq+FPeShGXaq/e4GavG+cEf+JInzZC34h1zta1al7Qh0DucBlZVATZUwQyiwEMmmlAUwgQbwCsFGyaNXDNVtY72ZS049ualMOhMCq6+hxwLVsjotCCUQjzgdfgUItNUoJJUtyEp3MoyRRGGNLZxFzX3V3zd8we1uy+4hZ4m0PMeeSdy993YNwVCi3nl+2rudFFuZp+ogrlCT6jnrHcfDNhnlc5f81xnp1BCDa5NrvlzOigrSNUnia6opwpLYKQY686xiidTAyxSl8SeoEJFUQFMA21l4C0nu/8KgZ58urD2npcPhp8F238DtsdtrxtLfENt0JTbheifcFg/BUg2y9Te5o+B4qcitSHF9k0u3zSBvOm9lhmSWHPgJwlk2WX+to7WArs2S37ow1qnBTM4RGO1KDP9YUfmPTysT51aantlzxJhbJpiYv0TB8PK+M1S5EFocpO1a2L+Ox/k6HudjfvRu1JACB+8bhXYVyBmyTPzULu1PFAsoJPjxkFm4Qp38dsKjS3BFF8MPoCONt3dwVJWT6Lpaavlwfl0VN5KSNjpFmEdYLpko534TsNqO6/DLBt9PtVMhat2Fwiq9Q0hs/BqLDCXuoA8ENHzJsf6+NiGzZ0t+E+q00oZR4YLyKkTurGMpTS70VmU/+HQ1leUX7XD67xn8W1ZgwJVprRGsP74ScSRa1Rtg+J7/pH0GP+yMOCu+IRO+VTBOnEjauu/MzkeJCo+ZQE4gW5S3lHcJcwzVrc1C0k0DqNOJUm+RBUP6+CHROhtYxwlCIhjEwIeOYi4trOKRsXiuKCIkeZwpr0r+GKlm5tXJFfxUlJPTQppKzH/aR/OHLluoLfGKeuhzLhwk5HdtbczFoh51OpuWNpbJd3TEeUwBbFMtgm7F/ndMvH1f9+gQMk5DD0gmFSt920ZDehEw5VRAswvMgnL7ka+irncnFgDeBzOqQ2DFsKEnYndVlao48bEyKj9BGMkGLA57NZGtdYrLCc8LPuLTwH5wyT8ykgg98Yk3ttBtqTy8HurppNiMWTFOKYrAhOAEUlOTI9QTZA4rtymyFmiPWcLand9bYCOfB/ug1SIwwQnjDgnh5lKdtjgky5RIyKo0pCAvI7XWxcNCpilAIjnTiTlJ9EVs7labivqjg+xQq2qYdkZUgVVKjq7/9ag+MmIheVL6WYGlbUV6DHpj2zfOsN/NU1qk6Jpp1xdLGM2SUcZIT29pZB5x3MbfwF/fLd18EvpFZi7kLeVocM7/1c3OXLLdwJty6o1jJA5iPTiC4feTSlSDs85V0wudwYGE7zTDWF6bwQyhS15kTBLL90gx+mSl5YfBi6M6TIDEM+kXAtGBFjVlcTsEpdATLsUXCK+7VWMN0yPEd9G73keW0sS43n6iIVkAyBPRyMEE9cErbfj+u+uLNyEKCSOkSrEgJ1v8oK+9VEkIHvUR26yqtNWhuLTdMZIVHYqV5pBpt15AD8A5VHRUvOPN29FSO+8ew4SA/DNddt8oG7XgP7WYnGYUUAVeKm2i9Q6zFH5Bpyqmdfw6sFQV2OpihI8PPxx5jqiqkN15jWKO7gg8L363Sr9jQB/nZpZdNzzQWycxOVNwbbuNgwrkk8vqMt4/g3SjcT3Z1kO1bI+MILxFrfNmHu3JjEHwUPxVKFD3+Yhwi0HB8bHMgWcTg1DAjp79UVQWEBEVtYqxqPZJhnrSfdeyyRW9FYe/Sp269H4nIJ+85225Qo14yQNJfOl3W47f8AGtry4/D3OiujuxJMUWhx9teW7v5Qgyu/e+l+LiudLN0jnKkJnAAEpovL/3piwoah5ckoBEq/15r/RhbonG/sj0aFLFp1857pQjzEYrVErvCu3XVLFDoBzmZW0q6rF8oygI7D6+z39WCUe5yMgDtE+uZa3N0nxuUZOJoOkNNHProiBAw5QZoF3oaOF+Aj70L7vn8MiZQ5eTOsIN/OxCR8eJXezKkQ56qqLkVKe3CLu+AdboSWaXp/iCWdcYP0Y462m3hbVI1BzIevHzp55ul0/q7D8fzBiwOA3EgCP534E6H1gDzLC1vZbwE0Vl5qcPMtCmQyGEU9BDmlVRtdjrU9CaXJw9RiK1WMVnSqtR8BO1CJg0OhBvttBAVeUbYnwl09NkjokELchjbZZV7atY5KGJxYUfNGS64LNsvBX0nG6UBhHB7Rj6lgc0NIovm5PJYiZHaEAzSFa8LBwoTU+PvJcDnTk1hQRd0Cp62/mwzcNG94e++Om5EJvUKNMPmPsXf/FU58fsvIlDgvnjFaRkRPMfVIdUrweWB88nQFaTe67rzJ9+EK2oSv725Gv309dDz2Pks52Mmqu214fJBrtPcmBxfTwJepCtrA8XNwwnAOub8ZjeSDV4ltSHBzxlRKUfWZbl35KYNNDbmP99onATfE9686N6zidx1sed9Gczy+Q+ZhgTcULUc6K2H3JyDuVCloPac09RPltr6JLSD22UFkR0Aj5bYX6NevIgpD5FsdbGqBooN+nlRrms580rOlFl4Teh+6IF8sQES+UYQ1EfA5tH3TO8zM7rI8lEJ0IyaM1x4BYoLWguVtv9tHTLDcNCk3fNh3eKjgkHYNOfC7PXFZw+2TEhDWGt2gM6mmDSUEraUDmiQcqm0cKikZGWx448Du3GxgokXAcrlBa5mBxIbDFikCUOPjh7n5kUwsXWzTXuKZ24SfbFCF9iTYNy2oLHfbC+h2Anqe4UkutRfWXdD9C3V3cmopBjc5UqZd/UZBbL2kk45hcE6Axw+/wneWAZ+NYobI5SLIAulEo1ICQXlrCUcnKS8iIOqyOnNrqDNjKgbg9DuVo3eC/KQlGHYzXgQSxYagtAF+/hH8BggsoEd5pWFjuABVVrgAoa1oETGHQtHaukBUh4sETwF8WcAUFBDBlwg4ECRNcqp26A4nAmPGwzbcnWknjIWbJ/os7LxbdltSEhmgC5NwAvDSwQjkCp/yF8l6mUH4TQm1LKpUWVGCgAoZMBE+58lHrih//Zv1ML8rxYO4NkE/Fu8Z/31XwU+cyDn2sZJNAp/k4W12bz3O4Nv41HnyAiyNezA76pU/JS/73eBuEPXX18LqPLp1t9weEcW4VmdNkx6b32eZXlX6YsmjT8x3A+yBUb3PpEdL8AVcB5Q77kcHip+GhH7XI7OkccRp+pmPGLEO+rClBNSOQPKAmqk3EnybUKU6B1VM1LLAiRDVdCYIuyWo/PLZObqTL99ogi6f8w/Zt+JAFgZSFW387WeqEM8p9GYlrcIyd82D0RMLeqwesdS7U98qUCoouJPlQdsbny6XsU5z7U7JayX135INNTzZCpTbjWP0QNh0G/3skJvN+cYv34bpM58zg/SZQzI5gnoxf2C4WovXcFlo4byite4FpF0/bz7zESslMfq4NsJ1gEGbwG3/8ay+/Wc4yOtz9x9xwHyQSqsGZY4GPWJ6XBfz/sNdaZR1lcxpjc3Ll2oC3/WJ+Xz6rmHxcdxZHpClKgqiWbmZEYBPnjRhytlL4kos67A6SfIUz6COPvWOS4hrSF8Wl/u19O54W+AkK56NnWmW5pmqY5TbHTgdClLDAg92AslKZcu4X3qsiluFx62lA5XZqgqDRo5YYWsqdyk9Vn0Y+5BFggcC5MZ4D5FEs0V4sEK8EA/wPcpDFlWMyvg8WKeNgWb7EbHbqR1d92dlSn0E8nRsdOo+z3J7tbSAC3f9e3SzDJB5xVXbt+Zq3ayiGJzf4KV4Mfkf\",\"base64\")).toString()),kG)});var ps={};Vt(ps,{convertToZip:()=>Yot,convertToZipWorker:()=>RG,extractArchiveTo:()=>rde,getDefaultTaskPool:()=>ede,getTaskPoolForConfiguration:()=>tde,makeArchiveFromDirectory:()=>Wot});function Got(t,e){switch(t){case\"async\":return new Mv(RG,{poolSize:e});case\"workers\":return new Uv((0,TG.getContent)(),{poolSize:e});default:throw new Error(`Assertion failed: Unknown value ${t} for taskPoolMode`)}}function ede(){return typeof QG>\"u\"&&(QG=Got(\"workers\",Ui.availableParallelism())),QG}function tde(t){return typeof t>\"u\"?ede():Yl(qot,t,()=>{let e=t.get(\"taskPoolMode\"),r=t.get(\"taskPoolConcurrency\");switch(e){case\"async\":return new Mv(RG,{poolSize:r});case\"workers\":return new Uv((0,TG.getContent)(),{poolSize:r});default:throw new Error(`Assertion failed: Unknown value ${e} for taskPoolMode`)}})}async function RG(t){let{tmpFile:e,tgz:r,compressionLevel:s,extractBufferOpts:a}=t,n=new As(e,{create:!0,level:s,stats:$a.makeDefaultStats()}),c=Buffer.from(r.buffer,r.byteOffset,r.byteLength);return await rde(c,n,a),n.saveAndClose(),e}async function Wot(t,{baseFs:e=new Yn,prefixPath:r=vt.root,compressionLevel:s,inMemory:a=!1}={}){let n;if(a)n=new As(null,{level:s});else{let f=await ce.mktempPromise(),p=J.join(f,\"archive.zip\");n=new As(p,{create:!0,level:s})}let c=J.resolve(vt.root,r);return await n.copyPromise(c,t,{baseFs:e,stableTime:!0,stableSort:!0}),n}async function Yot(t,e={}){let r=await ce.mktempPromise(),s=J.join(r,\"archive.zip\"),a=e.compressionLevel??e.configuration?.get(\"compressionLevel\")??\"mixed\",n={prefixPath:e.prefixPath,stripComponents:e.stripComponents};return await(e.taskPool??tde(e.configuration)).run({tmpFile:s,tgz:t,compressionLevel:a,extractBufferOpts:n}),new As(s,{level:e.compressionLevel})}async function*Vot(t){let e=new $ge.default.Parse,r=new Zge.PassThrough({objectMode:!0,autoDestroy:!0,emitClose:!0});e.on(\"entry\",s=>{r.write(s)}),e.on(\"error\",s=>{r.destroy(s)}),e.on(\"close\",()=>{r.destroyed||r.end()}),e.end(t);for await(let s of r){let a=s;yield a,a.resume()}}async function rde(t,e,{stripComponents:r=0,prefixPath:s=vt.dot}={}){function a(n){if(n.path[0]===\"/\")return!0;let c=n.path.split(/\\//g);return!!(c.some(f=>f===\"..\")||c.length<=r)}for await(let n of Vot(t)){if(a(n))continue;let c=J.normalize(fe.toPortablePath(n.path)).replace(/\\/$/,\"\").split(/\\//g);if(c.length<=r)continue;let f=c.slice(r).join(\"/\"),p=J.join(s,f),h=420;switch((n.type===\"Directory\"||(n.mode??0)&73)&&(h|=73),n.type){case\"Directory\":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),e.mkdirSync(p,{mode:h}),e.utimesSync(p,fi.SAFE_TIME,fi.SAFE_TIME);break;case\"OldFile\":case\"File\":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),e.writeFileSync(p,await WE(n),{mode:h}),e.utimesSync(p,fi.SAFE_TIME,fi.SAFE_TIME);break;case\"SymbolicLink\":e.mkdirpSync(J.dirname(p),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),e.symlinkSync(n.linkpath,p),e.lutimesSync(p,fi.SAFE_TIME,fi.SAFE_TIME);break}}return e}var Zge,$ge,TG,QG,qot,nde=Xe(()=>{Ge();Dt();eA();Zge=Ie(\"stream\"),$ge=ut(Vge());Kge();Pc();TG=ut(Xge());qot=new WeakMap});var sde=_((FG,ide)=>{(function(t,e){typeof FG==\"object\"?ide.exports=e():typeof define==\"function\"&&define.amd?define(e):t.treeify=e()})(FG,function(){function t(a,n){var c=n?\"\\u2514\":\"\\u251C\";return a?c+=\"\\u2500 \":c+=\"\\u2500\\u2500\\u2510\",c}function e(a,n){var c=[];for(var f in a)a.hasOwnProperty(f)&&(n&&typeof a[f]==\"function\"||c.push(f));return c}function r(a,n,c,f,p,h,E){var C=\"\",S=0,P,I,R=f.slice(0);if(R.push([n,c])&&f.length>0&&(f.forEach(function(U,W){W>0&&(C+=(U[1]?\" \":\"\\u2502\")+\"  \"),!I&&U[0]===n&&(I=!0)}),C+=t(a,c)+a,p&&(typeof n!=\"object\"||n instanceof Date)&&(C+=\": \"+n),I&&(C+=\" (circular ref.)\"),E(C)),!I&&typeof n==\"object\"){var N=e(n,h);N.forEach(function(U){P=++S===N.length,r(U,n[U],P,R,p,h,E)})}}var s={};return s.asLines=function(a,n,c,f){var p=typeof c!=\"function\"?c:!1;r(\".\",a,!1,[],n,p,f||c)},s.asTree=function(a,n,c){var f=\"\";return r(\".\",a,!1,[],n,c,function(p){f+=p+`\n`}),f},s})});var xs={};Vt(xs,{emitList:()=>Jot,emitTree:()=>cde,treeNodeToJson:()=>lde,treeNodeToTreeify:()=>ade});function ade(t,{configuration:e}){let r={},s=0,a=(n,c)=>{let f=Array.isArray(n)?n.entries():Object.entries(n);for(let[p,h]of f){if(!h)continue;let{label:E,value:C,children:S}=h,P=[];typeof E<\"u\"&&P.push(zd(e,E,2)),typeof C<\"u\"&&P.push(Ht(e,C[0],C[1])),P.length===0&&P.push(zd(e,`${p}`,2));let I=P.join(\": \").trim(),R=`\\0${s++}\\0`,N=c[`${R}${I}`]={};typeof S<\"u\"&&a(S,N)}};if(typeof t.children>\"u\")throw new Error(\"The root node must only contain children\");return a(t.children,r),r}function lde(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 Xd(r.value[0],r.value[1])}let s=Array.isArray(r.children)?r.children.entries():Object.entries(r.children??{}),a=Array.isArray(r.children)?[]:{};for(let[n,c]of s)c&&(a[Kot(n)]=e(c));return typeof r.value>\"u\"?a:{value:Xd(r.value[0],r.value[1]),children:a}};return e(t)}function Jot(t,{configuration:e,stdout:r,json:s}){let a=t.map(n=>({value:n}));cde({children:a},{configuration:e,stdout:r,json:s})}function cde(t,{configuration:e,stdout:r,json:s,separators:a=0}){if(s){let c=Array.isArray(t.children)?t.children.values():Object.values(t.children??{});for(let f of c)f&&r.write(`${JSON.stringify(lde(f))}\n`);return}let n=(0,ode.asTree)(ade(t,{configuration:e}),!1,!1);if(n=n.replace(/\\0[0-9]+\\0/g,\"\"),a>=1&&(n=n.replace(/^([├└]─)/gm,`\\u2502\n$1`).replace(/^│\\n/,\"\")),a>=2)for(let c=0;c<2;++c)n=n.replace(/^([│ ].{2}[├│ ].{2}[^\\n]+\\n)(([│ ]).{2}[├└].{2}[^\\n]*\\n[│ ].{2}[│ ].{2}[├└]─)/gm,`$1$3  \\u2502 \n$2`).replace(/^│\\n/,\"\");if(a>=3)throw new Error(\"Only the first two levels are accepted by treeUtils.emitTree\");r.write(n)}function Kot(t){return typeof t==\"string\"?t.replace(/^\\0[0-9]+\\0/,\"\"):t}var ode,ude=Xe(()=>{ode=ut(sde());xc()});var MR,fde=Xe(()=>{MR=class{constructor(e){this.releaseFunction=e;this.map=new Map}addOrCreate(e,r){let s=this.map.get(e);if(typeof s<\"u\"){if(s.refCount<=0)throw new Error(`Race condition in RefCountedMap. While adding a new key the refCount is: ${s.refCount} for ${JSON.stringify(e)}`);return s.refCount++,{value:s.value,release:()=>this.release(e)}}else{let a=r();return this.map.set(e,{refCount:1,value:a}),{value:a,release:()=>this.release(e)}}}release(e){let r=this.map.get(e);if(!r)throw new Error(`Unbalanced calls to release. No known instances of: ${JSON.stringify(e)}`);let s=r.refCount;if(s<=0)throw new Error(`Unbalanced calls to release. Too many release vs alloc refcount would become: ${s-1} of ${JSON.stringify(e)}`);s==1?(this.map.delete(e),this.releaseFunction(r.value)):r.refCount--}}});function _v(t){let e=t.match(zot);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 Ade,NG,OG,UR,Kr,zot,LG=Xe(()=>{Ge();Dt();Dt();eA();Ade=Ie(\"crypto\"),NG=ut(Ie(\"fs\"));fde();Tc();I0();Pc();Wo();OG=YE(process.env.YARN_CACHE_CHECKPOINT_OVERRIDE??process.env.YARN_CACHE_VERSION_OVERRIDE??9),UR=YE(process.env.YARN_CACHE_VERSION_OVERRIDE??10),Kr=class t{constructor(e,{configuration:r,immutable:s=r.get(\"enableImmutableCache\"),check:a=!1}){this.markedFiles=new Set;this.mutexes=new Map;this.refCountedZipFsCache=new MR(e=>{e.discardAndClose()});this.cacheId=`-${(0,Ade.randomBytes)(8).toString(\"hex\")}.tmp`;this.configuration=r,this.cwd=e,this.immutable=s,this.check=a;let{cacheSpec:n,cacheKey:c}=t.getCacheKey(r);this.cacheSpec=n,this.cacheKey=c}static async find(e,{immutable:r,check:s}={}){let a=new t(e.get(\"cacheFolder\"),{configuration:e,immutable:r,check:s});return await a.setup(),a}static getCacheKey(e){let r=e.get(\"compressionLevel\"),s=r!==\"mixed\"?`c${r}`:\"\";return{cacheKey:[UR,s].join(\"\"),cacheSpec:s}}get mirrorCwd(){if(!this.configuration.get(\"enableMirror\"))return null;let e=`${this.configuration.get(\"globalFolder\")}/cache`;return e!==this.cwd?e:null}getVersionFilename(e){return`${nI(e)}-${this.cacheKey}.zip`}getChecksumFilename(e,r){let a=_v(r).hash.slice(0,10);return`${nI(e)}-${a}.zip`}isChecksumCompatible(e){if(e===null)return!1;let{cacheVersion:r,cacheSpec:s}=_v(e);if(r===null||r<OG)return!1;let a=this.configuration.get(\"cacheMigrationMode\");return!(r<UR&&a===\"always\"||s!==this.cacheSpec&&a!==\"required-only\")}getLocatorPath(e,r){return this.mirrorCwd===null?J.resolve(this.cwd,this.getVersionFilename(e)):r===null?J.resolve(this.cwd,this.getVersionFilename(e)):J.resolve(this.cwd,this.getChecksumFilename(e,r))}getLocatorMirrorPath(e){let r=this.mirrorCwd;return r!==null?J.resolve(r,this.getVersionFilename(e)):null}async setup(){if(!this.configuration.get(\"enableGlobalCache\"))if(this.immutable){if(!await ce.existsPromise(this.cwd))throw new jt(56,\"Cache path does not exist.\")}else{await ce.mkdirPromise(this.cwd,{recursive:!0});let e=J.resolve(this.cwd,\".gitignore\");await ce.changeFilePromise(e,`/.gitignore\n*.flock\n*.tmp\n`)}(this.mirrorCwd||!this.immutable)&&await ce.mkdirPromise(this.mirrorCwd||this.cwd,{recursive:!0})}async fetchPackageFromCache(e,r,{onHit:s,onMiss:a,loader:n,...c}){let f=this.getLocatorMirrorPath(e),p=new Yn,h=()=>{let pe=new As,Be=J.join(vt.root,x8(e));return pe.mkdirSync(Be,{recursive:!0}),pe.writeJsonSync(J.join(Be,Er.manifest),{name:un(e),mocked:!0}),pe},E=async(pe,{isColdHit:Be,controlPath:Ce=null})=>{if(Ce===null&&c.unstablePackages?.has(e.locatorHash))return{isValid:!0,hash:null};let g=r&&!Be?_v(r).cacheKey:this.cacheKey,we=!c.skipIntegrityCheck||!r?`${g}/${await SQ(pe)}`:r;if(Ce!==null){let Ae=!c.skipIntegrityCheck||!r?`${this.cacheKey}/${await SQ(Ce)}`:r;if(we!==Ae)throw new jt(18,\"The remote archive doesn't match the local checksum - has the local cache been corrupted?\")}let ye=null;switch(r!==null&&we!==r&&(this.check?ye=\"throw\":_v(r).cacheKey!==_v(we).cacheKey?ye=\"update\":ye=this.configuration.get(\"checksumBehavior\")),ye){case null:case\"update\":return{isValid:!0,hash:we};case\"ignore\":return{isValid:!0,hash:r};case\"reset\":return{isValid:!1,hash:r};default:case\"throw\":throw new jt(18,\"The remote archive doesn't match the expected checksum\")}},C=async pe=>{if(!n)throw new Error(`Cache check required but no loader configured for ${Yr(this.configuration,e)}`);let Be=await n(),Ce=Be.getRealPath();Be.saveAndClose(),await ce.chmodPromise(Ce,420);let g=await E(pe,{controlPath:Ce,isColdHit:!1});if(!g.isValid)throw new Error(\"Assertion failed: Expected a valid checksum\");return g.hash},S=async()=>{if(f===null||!await ce.existsPromise(f)){let pe=await n(),Be=pe.getRealPath();return pe.saveAndClose(),{source:\"loader\",path:Be}}return{source:\"mirror\",path:f}},P=async()=>{if(!n)throw new Error(`Cache entry required but missing for ${Yr(this.configuration,e)}`);if(this.immutable)throw new jt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}`);let{path:pe,source:Be}=await S(),{hash:Ce}=await E(pe,{isColdHit:!0}),g=this.getLocatorPath(e,Ce),we=[];Be!==\"mirror\"&&f!==null&&we.push(async()=>{let Ae=`${f}${this.cacheId}`;await ce.copyFilePromise(pe,Ae,NG.default.constants.COPYFILE_FICLONE),await ce.chmodPromise(Ae,420),await ce.renamePromise(Ae,f)}),(!c.mirrorWriteOnly||f===null)&&we.push(async()=>{let Ae=`${g}${this.cacheId}`;await ce.copyFilePromise(pe,Ae,NG.default.constants.COPYFILE_FICLONE),await ce.chmodPromise(Ae,420),await ce.renamePromise(Ae,g)});let ye=c.mirrorWriteOnly?f??g:g;return await Promise.all(we.map(Ae=>Ae())),[!1,ye,Ce]},I=async()=>{let Be=(async()=>{let Ce=c.unstablePackages?.has(e.locatorHash),g=Ce||!r||this.isChecksumCompatible(r)?this.getLocatorPath(e,r):null,we=g!==null?this.markedFiles.has(g)||await p.existsPromise(g):!1,ye=!!c.mockedPackages?.has(e.locatorHash)&&(!this.check||!we),Ae=ye||we,se=Ae?s:a;if(se&&se(),Ae){let Z=null,De=g;if(!ye)if(this.check)Z=await C(De);else{let Re=await E(De,{isColdHit:!1});if(Re.isValid)Z=Re.hash;else return P()}return[ye,De,Z]}else{if(this.immutable&&Ce)throw new jt(56,`Cache entry required but missing for ${Yr(this.configuration,e)}; consider defining ${he.pretty(this.configuration,\"supportedArchitectures\",he.Type.CODE)} to cache packages for multiple systems`);return P()}})();this.mutexes.set(e.locatorHash,Be);try{return await Be}finally{this.mutexes.delete(e.locatorHash)}};for(let pe;pe=this.mutexes.get(e.locatorHash);)await pe;let[R,N,U]=await I();R||this.markedFiles.add(N);let W=()=>this.refCountedZipFsCache.addOrCreate(N,()=>R?h():new As(N,{baseFs:p,readOnly:!0})),ee,ie=new oE(()=>W4(()=>(ee=W(),ee.value),pe=>`Failed to open the cache entry for ${Yr(this.configuration,e)}: ${pe}`),J),ue=new _f(N,{baseFs:ie,pathUtils:J}),le=()=>{ee?.release()},me=c.unstablePackages?.has(e.locatorHash)?null:U;return[ue,le,me]}},zot=/^(?:(?<cacheKey>(?<cacheVersion>[0-9]+)(?<cacheSpec>.*))\\/)?(?<hash>.*)$/});var _R,pde=Xe(()=>{_R=(r=>(r[r.SCRIPT=0]=\"SCRIPT\",r[r.SHELLCODE=1]=\"SHELLCODE\",r))(_R||{})});var Xot,KI,MG=Xe(()=>{Dt();wc();Rp();Wo();Xot=[[/^(git(?:\\+(?:https|ssh))?:\\/\\/.*(?:\\.git)?)#(.*)$/,(t,e,r,s)=>`${r}#commit=${s}`],[/^https:\\/\\/((?:[^/]+?)@)?codeload\\.github\\.com\\/([^/]+\\/[^/]+)\\/tar\\.gz\\/([0-9a-f]+)$/,(t,e,r=\"\",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https:\\/\\/((?:[^/]+?)@)?github\\.com\\/([^/]+\\/[^/]+?)(?:\\.git)?#([0-9a-f]+)$/,(t,e,r=\"\",s,a)=>`https://${r}github.com/${s}.git#commit=${a}`],[/^https?:\\/\\/[^/]+\\/(?:[^/]+\\/)*(?:@.+(?:\\/|(?:%2f)))?([^/]+)\\/(?:-|download)\\/\\1-[^/]+\\.tgz(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.pkg\\.github\\.com\\/download\\/(?:@[^/]+)\\/(?:[^/]+)\\/(?:[^/]+)\\/(?:[0-9a-f]+)(?:#|$)/,t=>`npm:${t}`],[/^https:\\/\\/npm\\.fontawesome\\.com\\/(?:@[^/]+)\\/([^/]+)\\/-\\/([^/]+)\\/\\1-\\2.tgz(?:#|$)/,t=>`npm:${t}`],[/^https?:\\/\\/[^/]+\\/.*\\/(@[^/]+)\\/([^/]+)\\/-\\/\\1\\/\\2-(?:[.\\d\\w-]+)\\.tgz(?:#|$)/,(t,e)=>kQ({protocol:\"npm:\",source:null,selector:t,params:{__archiveUrl:e}})],[/^[^/]+\\.tgz#[0-9a-f]+$/,t=>`npm:${t}`]],KI=class{constructor(e){this.resolver=e;this.resolutions=null}async setup(e,{report:r}){let s=J.join(e.cwd,Er.lockfile);if(!ce.existsSync(s))return;let a=await ce.readFilePromise(s,\"utf8\"),n=ls(a);if(Object.hasOwn(n,\"__metadata\"))return;let c=this.resolutions=new Map;for(let f of Object.keys(n)){let p=HB(f);if(!p){r.reportWarning(14,`Failed to parse the string \"${f}\" into a proper descriptor`);continue}let h=cl(p.range)?On(p,`npm:${p.range}`):p,{version:E,resolved:C}=n[f];if(!C)continue;let S;for(let[I,R]of Xot){let N=C.match(I);if(N){S=R(E,...N);break}}if(!S){r.reportWarning(14,`${ni(e.configuration,h)}: Only some patterns can be imported from legacy lockfiles (not \"${C}\")`);continue}let P=h;try{let I=em(h.range),R=HB(I.selector,!0);R&&(P=R)}catch{}c.set(h.descriptorHash,Ws(P,S))}}supportsDescriptor(e,r){return this.resolutions?this.resolutions.has(e.descriptorHash):!1}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!this.resolutions)throw new Error(\"Assertion failed: The resolution store should have been setup\");let a=this.resolutions.get(e.descriptorHash);if(!a)throw new Error(\"Assertion failed: The resolution should have been registered\");let n=S8(a),c=s.project.configuration.normalizeDependency(n);return await this.resolver.getCandidates(c,r,s)}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){throw new Error(\"Assertion failed: This resolver doesn't support resolving locators to packages\")}}});var lA,hde=Xe(()=>{Tc();Ev();xc();lA=class extends Ao{constructor({configuration:r,stdout:s,suggestInstall:a=!0}){super();this.errorCount=0;RB(this,{configuration:r}),this.configuration=r,this.stdout=s,this.suggestInstall=a}static async start(r,s){let a=new this(r);try{await s(a)}catch(n){a.reportExceptionOnce(n)}finally{await a.finalize()}return a}hasErrors(){return this.errorCount>0}exitCode(){return this.hasErrors()?1:0}reportCacheHit(r){}reportCacheMiss(r){}startSectionSync(r,s){return s()}async startSectionPromise(r,s){return await s()}startTimerSync(r,s,a){return(typeof s==\"function\"?s:a)()}async startTimerPromise(r,s,a){return await(typeof s==\"function\"?s:a)()}reportSeparator(){}reportInfo(r,s){}reportWarning(r,s){}reportError(r,s){this.errorCount+=1,this.stdout.write(`${Ht(this.configuration,\"\\u27A4\",\"redBright\")} ${this.formatNameWithHyperlink(r)}: ${s}\n`)}reportProgress(r){return{...Promise.resolve().then(async()=>{for await(let{}of r);}),stop:()=>{}}}reportJson(r){}reportFold(r,s){}async finalize(){this.errorCount>0&&(this.stdout.write(`\n`),this.stdout.write(`${Ht(this.configuration,\"\\u27A4\",\"redBright\")} Errors happened when preparing the environment required to run this command.\n`),this.suggestInstall&&this.stdout.write(`${Ht(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 Wj(r,{configuration:this.configuration,json:!1})}}});var zI,UG=Xe(()=>{Wo();zI=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return!!(r.project.storedResolutions.get(e.descriptorHash)||r.project.originalPackages.has(bQ(e).locatorHash))}supportsLocator(e,r){return!!(r.project.originalPackages.has(e.locatorHash)&&!r.project.lockfileNeedsRefresh)}shouldPersistResolution(e,r){throw new Error(\"The shouldPersistResolution method shouldn't be called on the lockfile resolver, which would always answer yes\")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){let a=s.project.storedResolutions.get(e.descriptorHash);if(a){let c=s.project.originalPackages.get(a);if(c)return[c]}let n=s.project.originalPackages.get(bQ(e).locatorHash);if(n)return[n];throw new Error(\"Resolution expected from the lockfile data\")}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let s=r.project.originalPackages.get(e.locatorHash);if(!s)throw new Error(\"The lockfile resolver isn't meant to resolve packages - they should already have been stored into a cache\");return s}}});function Kp(){}function Zot(t,e,r,s,a){for(var n=0,c=e.length,f=0,p=0;n<c;n++){var h=e[n];if(h.removed){if(h.value=t.join(s.slice(p,p+h.count)),p+=h.count,n&&e[n-1].added){var C=e[n-1];e[n-1]=e[n],e[n]=C}}else{if(!h.added&&a){var E=r.slice(f,f+h.count);E=E.map(function(P,I){var R=s[p+I];return R.length>P.length?R:P}),h.value=t.join(E)}else h.value=t.join(r.slice(f,f+h.count));f+=h.count,h.added||(p+=h.count)}}var S=e[c-1];return c>1&&typeof S.value==\"string\"&&(S.added||S.removed)&&t.equals(\"\",S.value)&&(e[c-2].value+=S.value,e.pop()),e}function $ot(t){return{newPos:t.newPos,components:t.components.slice(0)}}function eat(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 mde(t,e,r){return r=eat(r,{ignoreWhitespace:!0}),qG.diff(t,e,r)}function tat(t,e,r){return WG.diff(t,e,r)}function HR(t){\"@babel/helpers - typeof\";return typeof Symbol==\"function\"&&typeof Symbol.iterator==\"symbol\"?HR=function(e){return typeof e}:HR=function(e){return e&&typeof Symbol==\"function\"&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},HR(t)}function _G(t){return iat(t)||sat(t)||oat(t)||aat()}function iat(t){if(Array.isArray(t))return HG(t)}function sat(t){if(typeof Symbol<\"u\"&&Symbol.iterator in Object(t))return Array.from(t)}function oat(t,e){if(t){if(typeof t==\"string\")return HG(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 HG(t,e)}}function HG(t,e){(e==null||e>t.length)&&(e=t.length);for(var r=0,s=new Array(e);r<e;r++)s[r]=t[r];return s}function aat(){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 jG(t,e,r,s,a){e=e||[],r=r||[],s&&(t=s(a,t));var n;for(n=0;n<e.length;n+=1)if(e[n]===t)return r[n];var c;if(lat.call(t)===\"[object Array]\"){for(e.push(t),c=new Array(t.length),r.push(c),n=0;n<t.length;n+=1)c[n]=jG(t[n],e,r,s,a);return e.pop(),r.pop(),c}if(t&&t.toJSON&&(t=t.toJSON()),HR(t)===\"object\"&&t!==null){e.push(t),c={},r.push(c);var f=[],p;for(p in t)t.hasOwnProperty(p)&&f.push(p);for(f.sort(),n=0;n<f.length;n+=1)p=f[n],c[p]=jG(t[p],e,r,s,p);e.pop(),r.pop()}else c=t;return c}function yde(t,e,r,s,a,n,c){c||(c={}),typeof c.context>\"u\"&&(c.context=4);var f=tat(r,s,c);if(!f)return;f.push({value:\"\",lines:[]});function p(U){return U.map(function(W){return\" \"+W})}for(var h=[],E=0,C=0,S=[],P=1,I=1,R=function(W){var ee=f[W],ie=ee.lines||ee.value.replace(/\\n$/,\"\").split(`\n`);if(ee.lines=ie,ee.added||ee.removed){var ue;if(!E){var le=f[W-1];E=P,C=I,le&&(S=c.context>0?p(le.lines.slice(-c.context)):[],E-=S.length,C-=S.length)}(ue=S).push.apply(ue,_G(ie.map(function(Ae){return(ee.added?\"+\":\"-\")+Ae}))),ee.added?I+=ie.length:P+=ie.length}else{if(E)if(ie.length<=c.context*2&&W<f.length-2){var me;(me=S).push.apply(me,_G(p(ie)))}else{var pe,Be=Math.min(ie.length,c.context);(pe=S).push.apply(pe,_G(p(ie.slice(0,Be))));var Ce={oldStart:E,oldLines:P-E+Be,newStart:C,newLines:I-C+Be,lines:S};if(W>=f.length-2&&ie.length<=c.context){var g=/\\n$/.test(r),we=/\\n$/.test(s),ye=ie.length==0&&S.length>Ce.oldLines;!g&&ye&&r.length>0&&S.splice(Ce.oldLines,0,\"\\\\ No newline at end of file\"),(!g&&!ye||!we)&&S.push(\"\\\\ No newline at end of file\")}h.push(Ce),E=0,C=0,S=[]}P+=ie.length,I+=ie.length}},N=0;N<f.length;N++)R(N);return{oldFileName:t,newFileName:e,oldHeader:a,newHeader:n,hunks:h}}var y8t,gde,dde,qG,WG,rat,nat,lat,Hv,GG,YG=Xe(()=>{Kp.prototype={diff:function(e,r){var s=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},a=s.callback;typeof s==\"function\"&&(a=s,s={}),this.options=s;var n=this;function c(R){return a?(setTimeout(function(){a(void 0,R)},0),!0):R}e=this.castInput(e),r=this.castInput(r),e=this.removeEmpty(this.tokenize(e)),r=this.removeEmpty(this.tokenize(r));var f=r.length,p=e.length,h=1,E=f+p;s.maxEditLength&&(E=Math.min(E,s.maxEditLength));var C=[{newPos:-1,components:[]}],S=this.extractCommon(C[0],r,e,0);if(C[0].newPos+1>=f&&S+1>=p)return c([{value:this.join(r),count:r.length}]);function P(){for(var R=-1*h;R<=h;R+=2){var N=void 0,U=C[R-1],W=C[R+1],ee=(W?W.newPos:0)-R;U&&(C[R-1]=void 0);var ie=U&&U.newPos+1<f,ue=W&&0<=ee&&ee<p;if(!ie&&!ue){C[R]=void 0;continue}if(!ie||ue&&U.newPos<W.newPos?(N=$ot(W),n.pushComponent(N.components,void 0,!0)):(N=U,N.newPos++,n.pushComponent(N.components,!0,void 0)),ee=n.extractCommon(N,r,e,R),N.newPos+1>=f&&ee+1>=p)return c(Zot(n,N.components,r,e,n.useLongestToken));C[R]=N}h++}if(a)(function R(){setTimeout(function(){if(h>E)return a();P()||R()},0)})();else for(;h<=E;){var I=P();if(I)return I}},pushComponent:function(e,r,s){var a=e[e.length-1];a&&a.added===r&&a.removed===s?e[e.length-1]={count:a.count+1,added:r,removed:s}:e.push({count:1,added:r,removed:s})},extractCommon:function(e,r,s,a){for(var n=r.length,c=s.length,f=e.newPos,p=f-a,h=0;f+1<n&&p+1<c&&this.equals(r[f+1],s[p+1]);)f++,p++,h++;return h&&e.components.push({count:h}),e.newPos=f,p},equals:function(e,r){return this.options.comparator?this.options.comparator(e,r):e===r||this.options.ignoreCase&&e.toLowerCase()===r.toLowerCase()},removeEmpty:function(e){for(var r=[],s=0;s<e.length;s++)e[s]&&r.push(e[s]);return r},castInput:function(e){return e},tokenize:function(e){return e.split(\"\")},join:function(e){return e.join(\"\")}};y8t=new Kp;gde=/^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/,dde=/\\S/,qG=new Kp;qG.equals=function(t,e){return this.options.ignoreCase&&(t=t.toLowerCase(),e=e.toLowerCase()),t===e||this.options.ignoreWhitespace&&!dde.test(t)&&!dde.test(e)};qG.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]&&gde.test(e[r])&&gde.test(e[r+2])&&(e[r]+=e[r+2],e.splice(r+1,2),r--);return e};WG=new Kp;WG.tokenize=function(t){var e=[],r=t.split(/(\\n|\\r\\n)/);r[r.length-1]||r.pop();for(var s=0;s<r.length;s++){var a=r[s];s%2&&!this.options.newlineIsToken?e[e.length-1]+=a:(this.options.ignoreWhitespace&&(a=a.trim()),e.push(a))}return e};rat=new Kp;rat.tokenize=function(t){return t.split(/(\\S.+?[.!?])(?=\\s+|$)/)};nat=new Kp;nat.tokenize=function(t){return t.split(/([{}:;,]|\\s+)/)};lat=Object.prototype.toString,Hv=new Kp;Hv.useLongestToken=!0;Hv.tokenize=WG.tokenize;Hv.castInput=function(t){var e=this.options,r=e.undefinedReplacement,s=e.stringifyReplacer,a=s===void 0?function(n,c){return typeof c>\"u\"?r:c}:s;return typeof t==\"string\"?t:JSON.stringify(jG(t,null,null,a),a,\"  \")};Hv.equals=function(t,e){return Kp.prototype.equals.call(Hv,t.replace(/,([\\r\\n])/g,\"$1\"),e.replace(/,([\\r\\n])/g,\"$1\"))};GG=new Kp;GG.tokenize=function(t){return t.slice()};GG.join=GG.removeEmpty=function(t){return t}});var jR,Ede=Xe(()=>{Tc();jR=class{constructor(e){this.resolver=e}supportsDescriptor(e,r){return this.resolver.supportsDescriptor(e,r)}supportsLocator(e,r){return this.resolver.supportsLocator(e,r)}shouldPersistResolution(e,r){return this.resolver.shouldPersistResolution(e,r)}bindDescriptor(e,r,s){return this.resolver.bindDescriptor(e,r,s)}getResolutionDependencies(e,r){return this.resolver.getResolutionDependencies(e,r)}async getCandidates(e,r,s){throw new jt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}async getSatisfying(e,r,s,a){throw new jt(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 jt(20,`This package doesn't seem to be present in your lockfile; run \"yarn install\" to update the lockfile`)}}});var ki,VG=Xe(()=>{Tc();ki=class extends Ao{reportCacheHit(e){}reportCacheMiss(e){}startSectionSync(e,r){return r()}async startSectionPromise(e,r){return await r()}startTimerSync(e,r,s){return(typeof r==\"function\"?r:s)()}async startTimerPromise(e,r,s){return await(typeof r==\"function\"?r:s)()}reportSeparator(){}reportInfo(e,r){}reportWarning(e,r){}reportError(e,r){}reportProgress(e){return{...Promise.resolve().then(async()=>{for await(let{}of e);}),stop:()=>{}}}reportJson(e){}reportFold(e,r){}async finalize(){}}});var Ide,XI,JG=Xe(()=>{Dt();Ide=ut(BQ());oI();tm();xc();I0();Rp();Wo();XI=class{constructor(e,{project:r}){this.workspacesCwds=new Set;this.project=r,this.cwd=e}async setup(){this.manifest=await Ut.tryFind(this.cwd)??new Ut,this.relativeCwd=J.relative(this.project.cwd,this.cwd)||vt.dot;let e=this.manifest.name?this.manifest.name:Da(null,`${this.computeCandidateName()}-${us(this.relativeCwd).substring(0,6)}`);this.anchoredDescriptor=On(e,`${Ei.protocol}${this.relativeCwd}`),this.anchoredLocator=Ws(e,`${Ei.protocol}${this.relativeCwd}`);let r=this.manifest.workspaceDefinitions.map(({pattern:a})=>a);if(r.length===0)return;let s=await(0,Ide.default)(r,{cwd:fe.fromPortablePath(this.cwd),onlyDirectories:!0,ignore:[\"**/node_modules\",\"**/.git\",\"**/.yarn\"]});s.sort(),await s.reduce(async(a,n)=>{let c=J.resolve(this.cwd,fe.toPortablePath(n)),f=await ce.existsPromise(J.join(c,\"package.json\"));await a,f&&this.workspacesCwds.add(c)},Promise.resolve())}get anchoredPackage(){let e=this.project.storedPackages.get(this.anchoredLocator.locatorHash);if(!e)throw new Error(`Assertion failed: Expected workspace ${GB(this.project.configuration,this)} (${Ht(this.project.configuration,J.join(this.cwd,Er.manifest),ht.PATH)}) to have been resolved. Run \"yarn install\" to update the lockfile`);return e}accepts(e){let r=e.indexOf(\":\"),s=r!==-1?e.slice(0,r+1):null,a=r!==-1?e.slice(r+1):e;if(s===Ei.protocol&&J.normalize(a)===this.relativeCwd||s===Ei.protocol&&(a===\"*\"||a===\"^\"||a===\"~\"))return!0;let n=cl(a);return n?s===Ei.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\":`${J.basename(this.cwd)}`||\"unnamed-workspace\"}getRecursiveWorkspaceDependencies({dependencies:e=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of e)for(let c of a.manifest[n].values()){let f=this.project.tryWorkspaceByDescriptor(c);f===null||r.has(f)||(r.add(f),s(f))}};return s(this),r}getRecursiveWorkspaceDependents({dependencies:e=Ut.hardDependencies}={}){let r=new Set,s=a=>{for(let n of this.project.workspaces)e.some(f=>[...n.manifest[f].values()].some(p=>{let h=this.project.tryWorkspaceByDescriptor(p);return h!==null&&_B(h.anchoredLocator,a.anchoredLocator)}))&&!r.has(n)&&(r.add(n),s(n))};return s(this),r}getRecursiveWorkspaceChildren(){let e=new Set([this]);for(let r of e)for(let s of r.workspacesCwds){let a=this.project.workspacesByCwd.get(s);a&&e.add(a)}return e.delete(this),Array.from(e)}async persistManifest(){let e={};this.manifest.exportTo(e);let r=J.join(this.cwd,Ut.fileName),s=`${JSON.stringify(e,null,this.manifest.indent)}\n`;await ce.changeFilePromise(r,s,{automaticNewlines:!0}),this.manifest.raw=e}}});function hat({project:t,allDescriptors:e,allResolutions:r,allPackages:s,accessibleLocators:a=new Set,optionalBuilds:n=new Set,peerRequirements:c=new Map,peerWarnings:f=[],peerRequirementNodes:p=new Map,volatileDescriptors:h=new Set}){let E=new Map,C=[],S=new Map,P=new Map,I=new Map,R=new Map,N=new Map,U=new Map(t.workspaces.map(le=>{let me=le.anchoredLocator.locatorHash,pe=s.get(me);if(typeof pe>\"u\")throw new Error(\"Assertion failed: The workspace should have an associated package\");return[me,LB(pe)]})),W=()=>{let le=ce.mktempSync(),me=J.join(le,\"stacktrace.log\"),pe=String(C.length+1).length,Be=C.map((Ce,g)=>`${`${g+1}.`.padStart(pe,\" \")} ${ll(Ce)}\n`).join(\"\");throw ce.writeFileSync(me,Be),ce.detachTemp(le),new jt(45,`Encountered a stack overflow when resolving peer dependencies; cf ${fe.fromPortablePath(me)}`)},ee=le=>{let me=r.get(le.descriptorHash);if(typeof me>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let pe=s.get(me);if(!pe)throw new Error(\"Assertion failed: The package could not be found\");return pe},ie=(le,me,pe,{top:Be,optional:Ce})=>{C.length>1e3&&W(),C.push(me);let g=ue(le,me,pe,{top:Be,optional:Ce});return C.pop(),g},ue=(le,me,pe,{top:Be,optional:Ce})=>{if(Ce||n.delete(me.locatorHash),a.has(me.locatorHash))return;a.add(me.locatorHash);let g=s.get(me.locatorHash);if(!g)throw new Error(`Assertion failed: The package (${Yr(t.configuration,me)}) should have been registered`);let we=new Set,ye=new Map,Ae=[],se=[],Z=[],De=[];for(let Re of Array.from(g.dependencies.values())){if(g.peerDependencies.has(Re.identHash)&&g.locatorHash!==Be)continue;if(kp(Re))throw new Error(\"Assertion failed: Virtual packages shouldn't be encountered when virtualizing a branch\");h.delete(Re.descriptorHash);let mt=Ce;if(!mt){let ke=g.dependenciesMeta.get(un(Re));if(typeof ke<\"u\"){let it=ke.get(null);typeof it<\"u\"&&it.optional&&(mt=!0)}}let j=r.get(Re.descriptorHash);if(!j)throw new Error(`Assertion failed: The resolution (${ni(t.configuration,Re)}) should have been registered`);let rt=U.get(j)||s.get(j);if(!rt)throw new Error(`Assertion failed: The package (${j}, resolved from ${ni(t.configuration,Re)}) should have been registered`);if(rt.peerDependencies.size===0){ie(Re,rt,new Map,{top:Be,optional:mt});continue}let Fe,Ne,Pe=new Set,Ve=new Map;Ae.push(()=>{Fe=b8(Re,me.locatorHash),Ne=P8(rt,me.locatorHash),g.dependencies.set(Re.identHash,Fe),r.set(Fe.descriptorHash,Ne.locatorHash),e.set(Fe.descriptorHash,Fe),s.set(Ne.locatorHash,Ne),bp(R,Ne.locatorHash).add(Fe.descriptorHash),we.add(Ne.locatorHash)}),se.push(()=>{N.set(Ne.locatorHash,Ve);for(let ke of Ne.peerDependencies.values()){let Ue=Yl(ye,ke.identHash,()=>{let x=pe.get(ke.identHash)??null,w=g.dependencies.get(ke.identHash);return!w&&UB(me,ke)&&(le.identHash===me.identHash?w=le:(w=On(me,le.range),e.set(w.descriptorHash,w),r.set(w.descriptorHash,me.locatorHash),h.delete(w.descriptorHash),x=null)),w||(w=On(ke,\"missing:\")),{subject:me,ident:ke,provided:w,root:!x,requests:new Map,hash:`p${us(me.locatorHash,ke.identHash).slice(0,6)}`}}).provided;if(Ue.range===\"missing:\"&&Ne.dependencies.has(ke.identHash)){Ne.peerDependencies.delete(ke.identHash);continue}if(Ve.set(ke.identHash,{requester:Ne,descriptor:ke,meta:Ne.peerDependenciesMeta.get(un(ke)),children:new Map}),Ne.dependencies.set(ke.identHash,Ue),kp(Ue)){let x=r.get(Ue.descriptorHash);bp(I,x).add(Ne.locatorHash)}S.set(Ue.identHash,Ue),Ue.range===\"missing:\"&&Pe.add(Ue.identHash)}Ne.dependencies=new Map(qs(Ne.dependencies,([ke,it])=>un(it)))}),Z.push(()=>{if(!s.has(Ne.locatorHash))return;let ke=E.get(rt.locatorHash);typeof ke==\"number\"&&ke>=2&&W();let it=E.get(rt.locatorHash),Ue=typeof it<\"u\"?it+1:1;E.set(rt.locatorHash,Ue),ie(Fe,Ne,Ve,{top:Be,optional:mt}),E.set(rt.locatorHash,Ue-1)}),De.push(()=>{let ke=r.get(Fe.descriptorHash);if(typeof ke>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let it=N.get(ke);if(typeof it>\"u\")throw new Error(\"Assertion failed: Expected the peer requests to be registered\");for(let Ue of ye.values()){let x=it.get(Ue.ident.identHash);x&&(Ue.requests.set(Fe.descriptorHash,x),p.set(Ue.hash,Ue),Ue.root||pe.get(Ue.ident.identHash)?.children.set(Fe.descriptorHash,x))}if(s.has(Ne.locatorHash))for(let Ue of Pe)Ne.dependencies.delete(Ue)})}for(let Re of[...Ae,...se])Re();for(let Re of we){we.delete(Re);let mt=s.get(Re),j=us(rI(mt).locatorHash,...Array.from(mt.dependencies.values(),Pe=>{let Ve=Pe.range!==\"missing:\"?r.get(Pe.descriptorHash):\"missing:\";if(typeof Ve>\"u\")throw new Error(`Assertion failed: Expected the resolution for ${ni(t.configuration,Pe)} to have been registered`);return Ve===Be?`${Ve} (top)`:Ve})),rt=P.get(j);if(typeof rt>\"u\"){P.set(j,mt);continue}let Fe=bp(R,rt.locatorHash);for(let Pe of R.get(mt.locatorHash)??[])r.set(Pe,rt.locatorHash),Fe.add(Pe);s.delete(mt.locatorHash),a.delete(mt.locatorHash),we.delete(mt.locatorHash);let Ne=I.get(mt.locatorHash);if(Ne!==void 0){let Pe=bp(I,rt.locatorHash);for(let Ve of Ne)Pe.add(Ve),we.add(Ve)}}for(let Re of[...Z,...De])Re()};for(let le of t.workspaces){let me=le.anchoredLocator;h.delete(le.anchoredDescriptor.descriptorHash),ie(le.anchoredDescriptor,me,new Map,{top:me.locatorHash,optional:!1})}for(let le of p.values()){if(!le.root)continue;let me=s.get(le.subject.locatorHash);if(typeof me>\"u\")continue;for(let Be of le.requests.values()){let Ce=`p${us(le.subject.locatorHash,un(le.ident),Be.requester.locatorHash).slice(0,6)}`;c.set(Ce,{subject:le.subject.locatorHash,requested:le.ident,rootRequester:Be.requester.locatorHash,allRequesters:Array.from(qB(Be),g=>g.requester.locatorHash)})}let pe=[...qB(le)];if(le.provided.range!==\"missing:\"){let Be=ee(le.provided),Ce=Be.version??\"0.0.0\",g=ye=>{if(ye.startsWith(Ei.protocol)){if(!t.tryWorkspaceByLocator(Be))return null;ye=ye.slice(Ei.protocol.length),(ye===\"^\"||ye===\"~\")&&(ye=\"*\")}return ye},we=!0;for(let ye of pe){let Ae=g(ye.descriptor.range);if(Ae===null){we=!1;continue}if(!Zf(Ce,Ae)){we=!1;let se=`p${us(le.subject.locatorHash,un(le.ident),ye.requester.locatorHash).slice(0,6)}`;f.push({type:1,subject:me,requested:le.ident,requester:ye.requester,version:Ce,hash:se,requirementCount:pe.length})}}if(!we){let ye=pe.map(Ae=>g(Ae.descriptor.range));f.push({type:3,node:le,range:ye.includes(null)?null:Q8(ye),hash:le.hash})}}else{let Be=!0;for(let Ce of pe)if(!Ce.meta?.optional){Be=!1;let g=`p${us(le.subject.locatorHash,un(le.ident),Ce.requester.locatorHash).slice(0,6)}`;f.push({type:0,subject:me,requested:le.ident,requester:Ce.requester,hash:g})}Be||f.push({type:2,node:le,hash:le.hash})}}}function*gat(t){let e=new Map;if(\"children\"in t)e.set(t,t);else for(let r of t.requests.values())e.set(r,r);for(let[r,s]of e){yield{request:r,root:s};for(let a of r.children.values())e.has(a)||e.set(a,s)}}function dat(t,e){let r=[],s=[],a=!1;for(let n of t.peerWarnings)if(!(n.type===1||n.type===0)){if(!t.tryWorkspaceByLocator(n.node.subject)){a=!0;continue}if(n.type===3){let c=t.storedResolutions.get(n.node.provided.descriptorHash);if(typeof c>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let f=t.storedPackages.get(c);if(typeof f>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let p=p0(gat(n.node),({request:C,root:S})=>Zf(f.version??\"0.0.0\",C.descriptor.range)?p0.skip:C===S?$i(t.configuration,C.requester):`${$i(t.configuration,C.requester)} (via ${$i(t.configuration,S.requester)})`),h=[...qB(n.node)].length>1?\"and other dependencies request\":\"requests\",E=n.range?iI(t.configuration,n.range):Ht(t.configuration,\"but they have non-overlapping ranges!\",\"redBright\");r.push(`${$i(t.configuration,n.node.ident)} is listed by your project with version ${jB(t.configuration,f.version??\"0.0.0\")} (${Ht(t.configuration,n.hash,ht.CODE)}), which doesn't satisfy what ${p} ${h} (${E}).`)}if(n.type===2){let c=n.node.requests.size>1?\" and other dependencies\":\"\";s.push(`${Yr(t.configuration,n.node.subject)} doesn't provide ${$i(t.configuration,n.node.ident)} (${Ht(t.configuration,n.hash,ht.CODE)}), requested by ${$i(t.configuration,n.node.requests.values().next().value.requester)}${c}.`)}}e.startSectionSync({reportFooter:()=>{e.reportWarning(86,`Some peer dependencies are incorrectly met by your project; run ${Ht(t.configuration,\"yarn explain peer-requirements <hash>\",ht.CODE)} for details, where ${Ht(t.configuration,\"<hash>\",ht.CODE)} is the six-letter p-prefixed code.`)},skipIfEmpty:!0},()=>{for(let n of qs(r,c=>JE.default(c)))e.reportWarning(60,n);for(let n of qs(s,c=>JE.default(c)))e.reportWarning(2,n)}),a&&e.reportWarning(86,`Some peer dependencies are incorrectly met by dependencies; run ${Ht(t.configuration,\"yarn explain peer-requirements\",ht.CODE)} for details.`)}var GR,qR,Bde,XG,zG,ZG,WR,cat,uat,Cde,fat,Aat,pat,$l,KG,YR,wde,Tt,vde=Xe(()=>{Dt();Dt();wc();Yt();GR=Ie(\"crypto\");YG();ql();qR=ut(Ld()),Bde=ut(Ai()),XG=Ie(\"util\"),zG=ut(Ie(\"v8\")),ZG=ut(Ie(\"zlib\"));LG();av();MG();UG();oI();F8();Tc();Ede();Ev();VG();tm();JG();LQ();xc();I0();Pc();gT();zj();Rp();Wo();WR=YE(process.env.YARN_LOCKFILE_VERSION_OVERRIDE??8),cat=3,uat=/ *, */g,Cde=/\\/$/,fat=32,Aat=(0,XG.promisify)(ZG.default.gzip),pat=(0,XG.promisify)(ZG.default.gunzip),$l=(r=>(r.UpdateLockfile=\"update-lockfile\",r.SkipBuild=\"skip-build\",r))($l||{}),KG={restoreLinkersCustomData:[\"linkersCustomData\"],restoreResolutions:[\"accessibleLocators\",\"conditionalLocators\",\"disabledLocators\",\"optionalBuilds\",\"storedDescriptors\",\"storedResolutions\",\"storedPackages\",\"lockFileChecksum\"],restoreBuildState:[\"skippedBuilds\",\"storedBuildState\"]},YR=(a=>(a[a.NotProvided=0]=\"NotProvided\",a[a.NotCompatible=1]=\"NotCompatible\",a[a.NodeNotProvided=2]=\"NodeNotProvided\",a[a.NodeNotCompatible=3]=\"NodeNotCompatible\",a))(YR||{}),wde=t=>us(`${cat}`,t),Tt=class t{constructor(e,{configuration:r}){this.resolutionAliases=new Map;this.workspaces=[];this.workspacesByCwd=new Map;this.workspacesByIdent=new Map;this.storedResolutions=new Map;this.storedDescriptors=new Map;this.storedPackages=new Map;this.storedChecksums=new Map;this.storedBuildState=new Map;this.accessibleLocators=new Set;this.conditionalLocators=new Set;this.disabledLocators=new Set;this.originalPackages=new Map;this.optionalBuilds=new Set;this.skippedBuilds=new Set;this.lockfileLastVersion=null;this.lockfileNeedsRefresh=!1;this.peerRequirements=new Map;this.peerWarnings=[];this.peerRequirementNodes=new Map;this.linkersCustomData=new Map;this.lockFileChecksum=null;this.installStateChecksum=null;this.configuration=r,this.cwd=e}static async find(e,r){if(!e.projectCwd)throw new nt(`No project found in ${r}`);let s=e.projectCwd,a=r,n=null;for(;n!==e.projectCwd;){if(n=a,ce.existsSync(J.join(n,Er.manifest))){s=n;break}a=J.dirname(n)}let c=new t(e.projectCwd,{configuration:e});ze.telemetry?.reportProject(c.cwd),await c.setupResolutions(),await c.setupWorkspaces(),ze.telemetry?.reportWorkspaceCount(c.workspaces.length),ze.telemetry?.reportDependencyCount(c.workspaces.reduce((I,R)=>I+R.manifest.dependencies.size+R.manifest.devDependencies.size,0));let f=c.tryWorkspaceByCwd(s);if(f)return{project:c,workspace:f,locator:f.anchoredLocator};let p=await c.findLocatorForLocation(`${s}/`,{strict:!0});if(p)return{project:c,locator:p,workspace:null};let h=Ht(e,c.cwd,ht.PATH),E=Ht(e,J.relative(c.cwd,s),ht.PATH),C=`- If ${h} isn't intended to be a project, remove any yarn.lock and/or package.json file there.`,S=`- If ${h} is intended to be a project, it might be that you forgot to list ${E} in its workspace configuration.`,P=`- Finally, if ${h} is fine and you intend ${E} to be treated as a completely separate project (not even a workspace), create an empty yarn.lock file in it.`;throw new nt(`The nearest package directory (${Ht(e,s,ht.PATH)}) doesn't seem to be part of the project declared in ${Ht(e,c.cwd,ht.PATH)}.\n\n${[C,S,P].join(`\n`)}`)}async setupResolutions(){this.storedResolutions=new Map,this.storedDescriptors=new Map,this.storedPackages=new Map,this.lockFileChecksum=null;let e=J.join(this.cwd,Er.lockfile),r=this.configuration.get(\"defaultLanguageName\");if(ce.existsSync(e)){let s=await ce.readFilePromise(e,\"utf8\");this.lockFileChecksum=wde(s);let a=ls(s);if(a.__metadata){let n=a.__metadata.version,c=a.__metadata.cacheKey;this.lockfileLastVersion=n,this.lockfileNeedsRefresh=n<WR;for(let f of Object.keys(a)){if(f===\"__metadata\")continue;let p=a[f];if(typeof p.resolution>\"u\")throw new Error(`Assertion failed: Expected the lockfile entry to have a resolution field (${f})`);let h=Qp(p.resolution,!0),E=new Ut;E.load(p,{yamlCompatibilityMode:!0});let C=E.version,S=E.languageName||r,P=p.linkType.toUpperCase(),I=p.conditions??null,R=E.dependencies,N=E.peerDependencies,U=E.dependenciesMeta,W=E.peerDependenciesMeta,ee=E.bin;if(p.checksum!=null){let ue=typeof c<\"u\"&&!p.checksum.includes(\"/\")?`${c}/${p.checksum}`:p.checksum;this.storedChecksums.set(h.locatorHash,ue)}let ie={...h,version:C,languageName:S,linkType:P,conditions:I,dependencies:R,peerDependencies:N,dependenciesMeta:U,peerDependenciesMeta:W,bin:ee};this.originalPackages.set(ie.locatorHash,ie);for(let ue of f.split(uat)){let le=C0(ue);n<=6&&(le=this.configuration.normalizeDependency(le),le=On(le,le.range.replace(/^patch:[^@]+@(?!npm(:|%3A))/,\"$1npm%3A\"))),this.storedDescriptors.set(le.descriptorHash,le),this.storedResolutions.set(le.descriptorHash,h.locatorHash)}}}else s.includes(\"yarn lockfile v1\")&&(this.lockfileLastVersion=-1)}}async setupWorkspaces(){this.workspaces=[],this.workspacesByCwd=new Map,this.workspacesByIdent=new Map;let e=new Set,r=(0,qR.default)(4),s=async(a,n)=>{if(e.has(n))return a;e.add(n);let c=new XI(n,{project:this});await r(()=>c.setup());let f=a.then(()=>{this.addWorkspace(c)});return Array.from(c.workspacesCwds).reduce(s,f)};await s(Promise.resolve(),this.cwd)}addWorkspace(e){let r=this.workspacesByIdent.get(e.anchoredLocator.identHash);if(typeof r<\"u\")throw new Error(`Duplicate workspace name ${$i(this.configuration,e.anchoredLocator)}: ${fe.fromPortablePath(e.cwd)} conflicts with ${fe.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){J.isAbsolute(e)||(e=J.resolve(this.cwd,e)),e=J.normalize(e).replace(/\\/+$/,\"\");let r=this.workspacesByCwd.get(e);return r||null}getWorkspaceByCwd(e){let r=this.tryWorkspaceByCwd(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByFilePath(e){let r=null;for(let s of this.workspaces)J.relative(s.cwd,e).startsWith(\"../\")||r&&r.cwd.length>=s.cwd.length||(r=s);return r||null}getWorkspaceByFilePath(e){let r=this.tryWorkspaceByFilePath(e);if(!r)throw new Error(`Workspace not found (${e})`);return r}tryWorkspaceByIdent(e){let r=this.workspacesByIdent.get(e.identHash);return typeof r>\"u\"?null:r}getWorkspaceByIdent(e){let r=this.tryWorkspaceByIdent(e);if(!r)throw new Error(`Workspace not found (${$i(this.configuration,e)})`);return r}tryWorkspaceByDescriptor(e){if(e.range.startsWith(Ei.protocol)){let s=e.range.slice(Ei.protocol.length);if(s!==\"^\"&&s!==\"~\"&&s!==\"*\"&&!cl(s))return this.tryWorkspaceByCwd(s)}let r=this.tryWorkspaceByIdent(e);return r===null||(kp(e)&&(e=MB(e)),!r.accepts(e.range))?null:r}getWorkspaceByDescriptor(e){let r=this.tryWorkspaceByDescriptor(e);if(r===null)throw new Error(`Workspace not found (${ni(this.configuration,e)})`);return r}tryWorkspaceByLocator(e){let r=this.tryWorkspaceByIdent(e);return r===null||(Gu(e)&&(e=rI(e)),r.anchoredLocator.locatorHash!==e.locatorHash)?null:r}getWorkspaceByLocator(e){let r=this.tryWorkspaceByLocator(e);if(!r)throw new Error(`Workspace not found (${Yr(this.configuration,e)})`);return r}deleteDescriptor(e){this.storedResolutions.delete(e),this.storedDescriptors.delete(e)}deleteLocator(e){this.originalPackages.delete(e),this.storedPackages.delete(e),this.accessibleLocators.delete(e)}forgetResolution(e){if(\"descriptorHash\"in e){let r=this.storedResolutions.get(e.descriptorHash);this.deleteDescriptor(e.descriptorHash);let s=new Set(this.storedResolutions.values());typeof r<\"u\"&&!s.has(r)&&this.deleteLocator(r)}if(\"locatorHash\"in e){this.deleteLocator(e.locatorHash);for(let[r,s]of this.storedResolutions)s===e.locatorHash&&this.deleteDescriptor(r)}}forgetTransientResolutions(){let e=this.configuration.makeResolver(),r=new Map;for(let[s,a]of this.storedResolutions.entries()){let n=r.get(a);n||r.set(a,n=new Set),n.add(s)}for(let s of this.originalPackages.values()){let a;try{a=e.shouldPersistResolution(s,{project:this,resolver:e})}catch{a=!1}if(!a){this.deleteLocator(s.locatorHash);let n=r.get(s.locatorHash);if(n){r.delete(s.locatorHash);for(let c of n)this.deleteDescriptor(c)}}}}forgetVirtualResolutions(){for(let e of this.storedPackages.values())for(let[r,s]of e.dependencies)kp(s)&&e.dependencies.set(r,MB(s))}getDependencyMeta(e,r){let s={},n=this.topLevelWorkspace.manifest.dependenciesMeta.get(un(e));if(!n)return s;let c=n.get(null);if(c&&Object.assign(s,c),r===null||!Bde.default.valid(r))return s;for(let[f,p]of n)f!==null&&f===r&&Object.assign(s,p);return s}async findLocatorForLocation(e,{strict:r=!1}={}){let s=new ki,a=this.configuration.getLinkers(),n={project:this,report:s};for(let c of a){let f=await c.findPackageLocator(e,n);if(f){if(r&&(await c.findPackageLocation(f,n)).replace(Cde,\"\")!==e.replace(Cde,\"\"))continue;return f}}return null}async loadUserConfig(){let e=J.join(this.cwd,\".pnp.cjs\");await ce.existsPromise(e)&&Pp(e).setup();let r=J.join(this.cwd,\"yarn.config.cjs\");return await ce.existsPromise(r)?Pp(r):null}async preparePackage(e,{resolver:r,resolveOptions:s}){let a=await this.configuration.getPackageExtensions(),n=this.configuration.normalizePackage(e,{packageExtensions:a});for(let[c,f]of n.dependencies){let p=await this.configuration.reduceHook(E=>E.reduceDependency,f,this,n,f,{resolver:r,resolveOptions:s});if(!UB(f,p))throw new Error(\"Assertion failed: The descriptor ident cannot be changed through aliases\");let h=r.bindDescriptor(p,n,s);n.dependencies.set(c,h)}return n}async resolveEverything(e){if(!this.workspacesByCwd||!this.workspacesByIdent)throw new Error(\"Workspaces must have been setup before calling this function\");this.forgetVirtualResolutions();let r=new Map(this.originalPackages),s=[];e.lockfileOnly||this.forgetTransientResolutions();let a=e.resolver||this.configuration.makeResolver(),n=new KI(a);await n.setup(this,{report:e.report});let c=e.lockfileOnly?[new jR(a)]:[n,a],f=new rm([new zI(a),...c]),p=new rm([...c]),h=this.configuration.makeFetcher(),E=e.lockfileOnly?{project:this,report:e.report,resolver:f}:{project:this,report:e.report,resolver:f,fetchOptions:{project:this,cache:e.cache,checksums:this.storedChecksums,report:e.report,fetcher:h,cacheOptions:{mirrorWriteOnly:!0}}},C=new Map,S=new Map,P=new Map,I=new Map,R=new Map,N=new Map,U=this.topLevelWorkspace.anchoredLocator,W=new Set,ee=[],ie=uj(),ue=this.configuration.getSupportedArchitectures();await e.report.startProgressPromise(Ao.progressViaTitle(),async se=>{let Z=async rt=>{let Fe=await qE(async()=>await f.resolve(rt,E),ke=>`${Yr(this.configuration,rt)}: ${ke}`);if(!_B(rt,Fe))throw new Error(`Assertion failed: The locator cannot be changed by the resolver (went from ${Yr(this.configuration,rt)} to ${Yr(this.configuration,Fe)})`);I.set(Fe.locatorHash,Fe),!r.delete(Fe.locatorHash)&&!this.tryWorkspaceByLocator(Fe)&&s.push(Fe);let Pe=await this.preparePackage(Fe,{resolver:f,resolveOptions:E}),Ve=Uu([...Pe.dependencies.values()].map(ke=>j(ke)));return ee.push(Ve),Ve.catch(()=>{}),S.set(Pe.locatorHash,Pe),Pe},De=async rt=>{let Fe=R.get(rt.locatorHash);if(typeof Fe<\"u\")return Fe;let Ne=Promise.resolve().then(()=>Z(rt));return R.set(rt.locatorHash,Ne),Ne},Re=async(rt,Fe)=>{let Ne=await j(Fe);return C.set(rt.descriptorHash,rt),P.set(rt.descriptorHash,Ne.locatorHash),Ne},mt=async rt=>{se.setTitle(ni(this.configuration,rt));let Fe=this.resolutionAliases.get(rt.descriptorHash);if(typeof Fe<\"u\")return Re(rt,this.storedDescriptors.get(Fe));let Ne=f.getResolutionDependencies(rt,E),Pe=Object.fromEntries(await Uu(Object.entries(Ne).map(async([it,Ue])=>{let x=f.bindDescriptor(Ue,U,E),w=await j(x);return W.add(w.locatorHash),[it,w]}))),ke=(await qE(async()=>await f.getCandidates(rt,Pe,E),it=>`${ni(this.configuration,rt)}: ${it}`))[0];if(typeof ke>\"u\")throw new jt(82,`${ni(this.configuration,rt)}: No candidates found`);if(e.checkResolutions){let{locators:it}=await p.getSatisfying(rt,Pe,[ke],{...E,resolver:p});if(!it.find(Ue=>Ue.locatorHash===ke.locatorHash))throw new jt(78,`Invalid resolution ${FB(this.configuration,rt,ke)}`)}return C.set(rt.descriptorHash,rt),P.set(rt.descriptorHash,ke.locatorHash),De(ke)},j=rt=>{let Fe=N.get(rt.descriptorHash);if(typeof Fe<\"u\")return Fe;C.set(rt.descriptorHash,rt);let Ne=Promise.resolve().then(()=>mt(rt));return N.set(rt.descriptorHash,Ne),Ne};for(let rt of this.workspaces){let Fe=rt.anchoredDescriptor;ee.push(j(Fe))}for(;ee.length>0;){let rt=[...ee];ee.length=0,await Uu(rt)}});let le=Wl(r.values(),se=>this.tryWorkspaceByLocator(se)?Wl.skip:se);if(s.length>0||le.length>0){let se=new Set(this.workspaces.flatMap(rt=>{let Fe=S.get(rt.anchoredLocator.locatorHash);if(!Fe)throw new Error(\"Assertion failed: The workspace should have been resolved\");return Array.from(Fe.dependencies.values(),Ne=>{let Pe=P.get(Ne.descriptorHash);if(!Pe)throw new Error(\"Assertion failed: The resolution should have been registered\");return Pe})})),Z=rt=>se.has(rt.locatorHash)?\"0\":\"1\",De=rt=>ll(rt),Re=qs(s,[Z,De]),mt=qs(le,[Z,De]),j=e.report.getRecommendedLength();Re.length>0&&e.report.reportInfo(85,`${Ht(this.configuration,\"+\",ht.ADDED)} ${$k(this.configuration,Re,j)}`),mt.length>0&&e.report.reportInfo(85,`${Ht(this.configuration,\"-\",ht.REMOVED)} ${$k(this.configuration,mt,j)}`)}let me=new Set(this.resolutionAliases.values()),pe=new Set(S.keys()),Be=new Set,Ce=new Map,g=[],we=new Map;hat({project:this,accessibleLocators:Be,volatileDescriptors:me,optionalBuilds:pe,peerRequirements:Ce,peerWarnings:g,peerRequirementNodes:we,allDescriptors:C,allResolutions:P,allPackages:S});for(let se of W)pe.delete(se);for(let se of me)C.delete(se),P.delete(se);let ye=new Set,Ae=new Set;for(let se of S.values())se.conditions!=null&&pe.has(se.locatorHash)&&(TQ(se,ue)||(TQ(se,ie)&&e.report.reportWarningOnce(77,`${Yr(this.configuration,se)}: Your current architecture (${process.platform}-${process.arch}) is supported by this package, but is missing from the ${Ht(this.configuration,\"supportedArchitectures\",ht.SETTING)} setting`),Ae.add(se.locatorHash)),ye.add(se.locatorHash));this.storedResolutions=P,this.storedDescriptors=C,this.storedPackages=S,this.accessibleLocators=Be,this.conditionalLocators=ye,this.disabledLocators=Ae,this.originalPackages=I,this.optionalBuilds=pe,this.peerRequirements=Ce,this.peerWarnings=g,this.peerRequirementNodes=we}async fetchEverything({cache:e,report:r,fetcher:s,mode:a,persistProject:n=!0}){let c={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators},f=s||this.configuration.makeFetcher(),p={checksums:this.storedChecksums,project:this,cache:e,fetcher:f,report:r,cacheOptions:c},h=Array.from(new Set(qs(this.storedResolutions.values(),[I=>{let R=this.storedPackages.get(I);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");return ll(R)}])));a===\"update-lockfile\"&&(h=h.filter(I=>!this.storedChecksums.has(I)));let E=!1,C=Ao.progressViaCounter(h.length);await r.reportProgress(C);let S=(0,qR.default)(fat);if(await Uu(h.map(I=>S(async()=>{let R=this.storedPackages.get(I);if(!R)throw new Error(\"Assertion failed: The locator should have been registered\");if(Gu(R))return;let N;try{N=await f.fetch(R,p)}catch(U){U.message=`${Yr(this.configuration,R)}: ${U.message}`,r.reportExceptionOnce(U),E=U;return}N.checksum!=null?this.storedChecksums.set(R.locatorHash,N.checksum):this.storedChecksums.delete(R.locatorHash),N.releaseFs&&N.releaseFs()}).finally(()=>{C.tick()}))),E)throw E;let P=n&&a!==\"update-lockfile\"?await this.cacheCleanup({cache:e,report:r}):null;if(r.cacheMisses.size>0||P){let R=(await Promise.all([...r.cacheMisses].map(async le=>{let me=this.storedPackages.get(le),pe=this.storedChecksums.get(le)??null,Be=e.getLocatorPath(me,pe);return(await ce.statPromise(Be)).size}))).reduce((le,me)=>le+me,0)-(P?.size??0),N=r.cacheMisses.size,U=P?.count??0,W=`${Wk(N,{zero:\"No new packages\",one:\"A package was\",more:`${Ht(this.configuration,N,ht.NUMBER)} packages were`})} added to the project`,ee=`${Wk(U,{zero:\"none were\",one:\"one was\",more:`${Ht(this.configuration,U,ht.NUMBER)} were`})} removed`,ie=R!==0?` (${Ht(this.configuration,R,ht.SIZE_DIFF)})`:\"\",ue=U>0?N>0?`${W}, and ${ee}${ie}.`:`${W}, but ${ee}${ie}.`:`${W}${ie}.`;r.reportInfo(13,ue)}}async linkEverything({cache:e,report:r,fetcher:s,mode:a}){let n={mockedPackages:this.disabledLocators,unstablePackages:this.conditionalLocators,skipIntegrityCheck:!0},c=s||this.configuration.makeFetcher(),f={checksums:this.storedChecksums,project:this,cache:e,fetcher:c,report:r,cacheOptions:n},p=this.configuration.getLinkers(),h={project:this,report:r},E=new Map(p.map(ye=>{let Ae=ye.makeInstaller(h),se=ye.getCustomDataKey(),Z=this.linkersCustomData.get(se);return typeof Z<\"u\"&&Ae.attachCustomData(Z),[ye,Ae]})),C=new Map,S=new Map,P=new Map,I=new Map(await Uu([...this.accessibleLocators].map(async ye=>{let Ae=this.storedPackages.get(ye);if(!Ae)throw new Error(\"Assertion failed: The locator should have been registered\");return[ye,await c.fetch(Ae,f)]}))),R=[],N=new Set,U=[];for(let ye of this.accessibleLocators){let Ae=this.storedPackages.get(ye);if(typeof Ae>\"u\")throw new Error(\"Assertion failed: The locator should have been registered\");let se=I.get(Ae.locatorHash);if(typeof se>\"u\")throw new Error(\"Assertion failed: The fetch result should have been registered\");let Z=[],De=mt=>{Z.push(mt)},Re=this.tryWorkspaceByLocator(Ae);if(Re!==null){let mt=[],{scripts:j}=Re.manifest;for(let Fe of[\"preinstall\",\"install\",\"postinstall\"])j.has(Fe)&&mt.push({type:0,script:Fe});try{for(let[Fe,Ne]of E)if(Fe.supportsPackage(Ae,h)&&(await Ne.installPackage(Ae,se,{holdFetchResult:De})).buildRequest!==null)throw new Error(\"Assertion failed: Linkers can't return build directives for workspaces; this responsibility befalls to the Yarn core\")}finally{Z.length===0?se.releaseFs?.():R.push(Uu(Z).catch(()=>{}).then(()=>{se.releaseFs?.()}))}let rt=J.join(se.packageFs.getRealPath(),se.prefixPath);S.set(Ae.locatorHash,rt),!Gu(Ae)&&mt.length>0&&P.set(Ae.locatorHash,{buildDirectives:mt,buildLocations:[rt]})}else{let mt=p.find(Fe=>Fe.supportsPackage(Ae,h));if(!mt)throw new jt(12,`${Yr(this.configuration,Ae)} isn't supported by any available linker`);let j=E.get(mt);if(!j)throw new Error(\"Assertion failed: The installer should have been registered\");let rt;try{rt=await j.installPackage(Ae,se,{holdFetchResult:De})}finally{Z.length===0?se.releaseFs?.():R.push(Uu(Z).then(()=>{}).then(()=>{se.releaseFs?.()}))}C.set(Ae.locatorHash,mt),S.set(Ae.locatorHash,rt.packageLocation),rt.buildRequest&&rt.packageLocation&&(rt.buildRequest.skipped?(N.add(Ae.locatorHash),this.skippedBuilds.has(Ae.locatorHash)||U.push([Ae,rt.buildRequest.explain])):P.set(Ae.locatorHash,{buildDirectives:rt.buildRequest.directives,buildLocations:[rt.packageLocation]}))}}let W=new Map;for(let ye of this.accessibleLocators){let Ae=this.storedPackages.get(ye);if(!Ae)throw new Error(\"Assertion failed: The locator should have been registered\");let se=this.tryWorkspaceByLocator(Ae)!==null,Z=async(De,Re)=>{let mt=S.get(Ae.locatorHash);if(typeof mt>\"u\")throw new Error(`Assertion failed: The package (${Yr(this.configuration,Ae)}) should have been registered`);let j=[];for(let rt of Ae.dependencies.values()){let Fe=this.storedResolutions.get(rt.descriptorHash);if(typeof Fe>\"u\")throw new Error(`Assertion failed: The resolution (${ni(this.configuration,rt)}, from ${Yr(this.configuration,Ae)})should have been registered`);let Ne=this.storedPackages.get(Fe);if(typeof Ne>\"u\")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ni(this.configuration,rt)}) should have been registered`);let Pe=this.tryWorkspaceByLocator(Ne)===null?C.get(Fe):null;if(typeof Pe>\"u\")throw new Error(`Assertion failed: The package (${Fe}, resolved from ${ni(this.configuration,rt)}) should have been registered`);Pe===De||Pe===null?S.get(Ne.locatorHash)!==null&&j.push([rt,Ne]):!se&&mt!==null&&xB(W,Fe).push(mt)}mt!==null&&await Re.attachInternalDependencies(Ae,j)};if(se)for(let[De,Re]of E)De.supportsPackage(Ae,h)&&await Z(De,Re);else{let De=C.get(Ae.locatorHash);if(!De)throw new Error(\"Assertion failed: The linker should have been found\");let Re=E.get(De);if(!Re)throw new Error(\"Assertion failed: The installer should have been registered\");await Z(De,Re)}}for(let[ye,Ae]of W){let se=this.storedPackages.get(ye);if(!se)throw new Error(\"Assertion failed: The package should have been registered\");let Z=C.get(se.locatorHash);if(!Z)throw new Error(\"Assertion failed: The linker should have been found\");let De=E.get(Z);if(!De)throw new Error(\"Assertion failed: The installer should have been registered\");await De.attachExternalDependents(se,Ae)}let ee=new Map;for(let[ye,Ae]of E){let se=await Ae.finalizeInstall();for(let Z of se?.records??[])Z.buildRequest.skipped?(N.add(Z.locator.locatorHash),this.skippedBuilds.has(Z.locator.locatorHash)||U.push([Z.locator,Z.buildRequest.explain])):P.set(Z.locator.locatorHash,{buildDirectives:Z.buildRequest.directives,buildLocations:Z.buildLocations});typeof se?.customData<\"u\"&&ee.set(ye.getCustomDataKey(),se.customData)}if(this.linkersCustomData=ee,await Uu(R),a===\"skip-build\")return;for(let[,ye]of qs(U,([Ae])=>ll(Ae)))ye(r);let ie=new Set(P.keys()),ue=(0,GR.createHash)(\"sha512\");ue.update(process.versions.node),await this.configuration.triggerHook(ye=>ye.globalHashGeneration,this,ye=>{ue.update(\"\\0\"),ue.update(ye)});let le=ue.digest(\"hex\"),me=new Map,pe=ye=>{let Ae=me.get(ye.locatorHash);if(typeof Ae<\"u\")return Ae;let se=this.storedPackages.get(ye.locatorHash);if(typeof se>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let Z=(0,GR.createHash)(\"sha512\");Z.update(ye.locatorHash),me.set(ye.locatorHash,\"<recursive>\");for(let De of se.dependencies.values()){let Re=this.storedResolutions.get(De.descriptorHash);if(typeof Re>\"u\")throw new Error(`Assertion failed: The resolution (${ni(this.configuration,De)}) should have been registered`);let mt=this.storedPackages.get(Re);if(typeof mt>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");Z.update(pe(mt))}return Ae=Z.digest(\"hex\"),me.set(ye.locatorHash,Ae),Ae},Be=(ye,Ae)=>{let se=(0,GR.createHash)(\"sha512\");se.update(le),se.update(pe(ye));for(let Z of Ae)se.update(Z);return se.digest(\"hex\")},Ce=new Map,g=!1,we=ye=>{let Ae=new Set([ye.locatorHash]);for(let se of Ae){let Z=this.storedPackages.get(se);if(!Z)throw new Error(\"Assertion failed: The package should have been registered\");for(let De of Z.dependencies.values()){let Re=this.storedResolutions.get(De.descriptorHash);if(!Re)throw new Error(`Assertion failed: The resolution (${ni(this.configuration,De)}) should have been registered`);if(Re!==ye.locatorHash&&ie.has(Re))return!1;let mt=this.storedPackages.get(Re);if(!mt)throw new Error(\"Assertion failed: The package should have been registered\");let j=this.tryWorkspaceByLocator(mt);if(j){if(j.anchoredLocator.locatorHash!==ye.locatorHash&&ie.has(j.anchoredLocator.locatorHash))return!1;Ae.add(j.anchoredLocator.locatorHash)}Ae.add(Re)}}return!0};for(;ie.size>0;){let ye=ie.size,Ae=[];for(let se of ie){let Z=this.storedPackages.get(se);if(!Z)throw new Error(\"Assertion failed: The package should have been registered\");if(!we(Z))continue;let De=P.get(Z.locatorHash);if(!De)throw new Error(\"Assertion failed: The build directive should have been registered\");let Re=Be(Z,De.buildLocations);if(this.storedBuildState.get(Z.locatorHash)===Re){Ce.set(Z.locatorHash,Re),ie.delete(se);continue}g||(await this.persistInstallStateFile(),g=!0),this.storedBuildState.has(Z.locatorHash)?r.reportInfo(8,`${Yr(this.configuration,Z)} must be rebuilt because its dependency tree changed`):r.reportInfo(7,`${Yr(this.configuration,Z)} must be built because it never has been before or the last one failed`);let mt=De.buildLocations.map(async j=>{if(!J.isAbsolute(j))throw new Error(`Assertion failed: Expected the build location to be absolute (not ${j})`);for(let rt of De.buildDirectives){let Fe=`# This file contains the result of Yarn building a package (${ll(Z)})\n`;switch(rt.type){case 0:Fe+=`# Script name: ${rt.script}\n`;break;case 1:Fe+=`# Script code: ${rt.script}\n`;break}let Ne=null;if(!await ce.mktempPromise(async Ve=>{let ke=J.join(Ve,\"build.log\"),{stdout:it,stderr:Ue}=this.configuration.getSubprocessStreams(ke,{header:Fe,prefix:Yr(this.configuration,Z),report:r}),x;try{switch(rt.type){case 0:x=await LT(Z,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:Ue});break;case 1:x=await Yj(Z,rt.script,[],{cwd:j,project:this,stdin:Ne,stdout:it,stderr:Ue});break}}catch(y){Ue.write(y.stack),x=1}if(it.end(),Ue.end(),x===0)return!0;ce.detachTemp(Ve);let w=`${Yr(this.configuration,Z)} couldn't be built successfully (exit code ${Ht(this.configuration,x,ht.NUMBER)}, logs can be found here: ${Ht(this.configuration,ke,ht.PATH)})`,b=this.optionalBuilds.has(Z.locatorHash);return b?r.reportInfo(9,w):r.reportError(9,w),ehe&&r.reportFold(fe.fromPortablePath(ke),ce.readFileSync(ke,\"utf8\")),b}))return!1}return!0});Ae.push(...mt,Promise.allSettled(mt).then(j=>{ie.delete(se),j.every(rt=>rt.status===\"fulfilled\"&&rt.value===!0)&&Ce.set(Z.locatorHash,Re)}))}if(await Uu(Ae),ye===ie.size){let se=Array.from(ie).map(Z=>{let De=this.storedPackages.get(Z);if(!De)throw new Error(\"Assertion failed: The package should have been registered\");return Yr(this.configuration,De)}).join(\", \");r.reportError(3,`Some packages have circular dependencies that make their build order unsatisfiable - as a result they won't be built (affected packages are: ${se})`);break}}this.storedBuildState=Ce,this.skippedBuilds=N}async installWithNewReport(e,r){return(await Ot.start({configuration:this.configuration,json:e.json,stdout:e.stdout,forceSectionAlignment:!0,includeLogs:!e.json&&!e.quiet,includeVersion:!0},async a=>{await this.install({...r,report:a})})).exitCode()}async install(e){let r=this.configuration.get(\"nodeLinker\");ze.telemetry?.reportInstall(r);let s=!1;if(await e.report.startTimerPromise(\"Project validation\",{skipIfEmpty:!0},async()=>{this.configuration.get(\"enableOfflineMode\")&&e.report.reportWarning(90,\"Offline work is enabled; Yarn won't fetch packages from the remote registry if it can avoid it\"),await this.configuration.triggerHook(E=>E.validateProject,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),s=!0}})}),s)return;let a=await this.configuration.getPackageExtensions();for(let E of a.values())for(let[,C]of E)for(let S of C)S.status=\"inactive\";let n=J.join(this.cwd,Er.lockfile),c=null;if(e.immutable)try{c=await ce.readFilePromise(n,\"utf8\")}catch(E){throw E.code===\"ENOENT\"?new jt(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()=>{dat(this,e.report);for(let[,E]of a)for(let[,C]of E)for(let S of C)if(S.userProvided){let P=Ht(this.configuration,S,ht.PACKAGE_EXTENSION);switch(S.status){case\"inactive\":e.report.reportWarning(68,`${P}: No matching package in the dependency tree; you may not need this rule anymore.`);break;case\"redundant\":e.report.reportWarning(69,`${P}: This rule seems redundant when applied on the original package; the extension may have been applied upstream.`);break}}if(c!==null){let E=Ed(c,this.generateLockfile());if(E!==c){let C=yde(n,n,c,E,void 0,void 0,{maxEditLength:100});if(C){e.report.reportSeparator();for(let S of C.hunks){e.report.reportInfo(null,`@@ -${S.oldStart},${S.oldLines} +${S.newStart},${S.newLines} @@`);for(let P of S.lines)P.startsWith(\"+\")?e.report.reportError(28,Ht(this.configuration,P,ht.ADDED)):P.startsWith(\"-\")?e.report.reportError(28,Ht(this.configuration,P,ht.REMOVED)):e.report.reportInfo(null,Ht(this.configuration,P,\"grey\"))}e.report.reportSeparator()}throw new jt(28,\"The lockfile would have been modified by this install, which is explicitly forbidden.\")}}});for(let E of a.values())for(let[,C]of E)for(let S of C)S.userProvided&&S.status===\"active\"&&ze.telemetry?.reportPackageExtension(Xd(S,ht.PACKAGE_EXTENSION));await e.report.startTimerPromise(\"Fetch step\",async()=>{await this.fetchEverything(e)});let f=e.immutable?[...new Set(this.configuration.get(\"immutablePatterns\"))].sort():[],p=await Promise.all(f.map(async E=>DQ(E,{cwd:this.cwd})));(typeof e.persistProject>\"u\"||e.persistProject)&&await this.persist(),await e.report.startTimerPromise(\"Link step\",async()=>{if(e.mode===\"update-lockfile\"){e.report.reportWarning(73,`Skipped due to ${Ht(this.configuration,\"mode=update-lockfile\",ht.CODE)}`);return}await this.linkEverything(e);let E=await Promise.all(f.map(async C=>DQ(C,{cwd:this.cwd})));for(let C=0;C<f.length;++C)p[C]!==E[C]&&e.report.reportError(64,`The checksum for ${f[C]} has been modified by this install, which is explicitly forbidden.`)}),await this.persistInstallStateFile();let h=!1;await e.report.startTimerPromise(\"Post-install validation\",{skipIfEmpty:!0},async()=>{await this.configuration.triggerHook(E=>E.validateProjectAfterInstall,this,{reportWarning:(E,C)=>{e.report.reportWarning(E,C)},reportError:(E,C)=>{e.report.reportError(E,C),h=!0}})}),!h&&await this.configuration.triggerHook(E=>E.afterAllInstalled,this,e)}generateLockfile(){let e=new Map;for(let[n,c]of this.storedResolutions.entries()){let f=e.get(c);f||e.set(c,f=new Set),f.add(n)}let r={},{cacheKey:s}=Kr.getCacheKey(this.configuration);r.__metadata={version:WR,cacheKey:s};for(let[n,c]of e.entries()){let f=this.originalPackages.get(n);if(!f)continue;let p=[];for(let C of c){let S=this.storedDescriptors.get(C);if(!S)throw new Error(\"Assertion failed: The descriptor should have been registered\");p.push(S)}let h=p.map(C=>al(C)).sort().join(\", \"),E=new Ut;E.version=f.linkType===\"HARD\"?f.version:\"0.0.0-use.local\",E.languageName=f.languageName,E.dependencies=new Map(f.dependencies),E.peerDependencies=new Map(f.peerDependencies),E.dependenciesMeta=new Map(f.dependenciesMeta),E.peerDependenciesMeta=new Map(f.peerDependenciesMeta),E.bin=new Map(f.bin),r[h]={...E.exportTo({},{compatibilityMode:!1}),linkType:f.linkType.toLowerCase(),resolution:ll(f),checksum:this.storedChecksums.get(f.locatorHash),conditions:f.conditions||void 0}}return`${[`# This file is generated by running \"yarn install\" inside your project.\n`,`# Manual changes might be lost - proceed with caution!\n`].join(\"\")}\n`+nl(r)}async persistLockfile(){let e=J.join(this.cwd,Er.lockfile),r=\"\";try{r=await ce.readFilePromise(e,\"utf8\")}catch{}let s=this.generateLockfile(),a=Ed(r,s);a!==r&&(await ce.writeFilePromise(e,a),this.lockFileChecksum=wde(a),this.lockfileNeedsRefresh=!1)}async persistInstallStateFile(){let e=[];for(let c of Object.values(KG))e.push(...c);let r=Kd(this,e),s=zG.default.serialize(r),a=us(s);if(this.installStateChecksum===a)return;let n=this.configuration.get(\"installStatePath\");await ce.mkdirPromise(J.dirname(n),{recursive:!0}),await ce.writeFilePromise(n,await Aat(s)),this.installStateChecksum=a}async restoreInstallState({restoreLinkersCustomData:e=!0,restoreResolutions:r=!0,restoreBuildState:s=!0}={}){let a=this.configuration.get(\"installStatePath\"),n;try{let c=await pat(await ce.readFilePromise(a));n=zG.default.deserialize(c),this.installStateChecksum=us(c)}catch{r&&await this.applyLightResolution();return}e&&typeof n.linkersCustomData<\"u\"&&(this.linkersCustomData=n.linkersCustomData),s&&Object.assign(this,Kd(n,KG.restoreBuildState)),r&&(n.lockFileChecksum===this.lockFileChecksum?Object.assign(this,Kd(n,KG.restoreResolutions)):await this.applyLightResolution())}async applyLightResolution(){await this.resolveEverything({lockfileOnly:!0,report:new ki}),await this.persistInstallStateFile()}async persist(){let e=(0,qR.default)(4);await Promise.all([this.persistLockfile(),...this.workspaces.map(r=>e(()=>r.persistManifest()))])}async cacheCleanup({cache:e,report:r}){if(this.configuration.get(\"enableGlobalCache\"))return null;let s=new Set([\".gitignore\"]);if(!q8(e.cwd,this.cwd)||!await ce.existsPromise(e.cwd))return null;let a=[];for(let c of await ce.readdirPromise(e.cwd)){if(s.has(c))continue;let f=J.resolve(e.cwd,c);e.markedFiles.has(f)||(e.immutable?r.reportError(56,`${Ht(this.configuration,J.basename(f),\"magenta\")} appears to be unused and would be marked for deletion, but the cache is immutable`):a.push(ce.lstatPromise(f).then(async p=>(await ce.removePromise(f),p.size))))}if(a.length===0)return null;let n=await Promise.all(a);return{count:a.length,size:n.reduce((c,f)=>c+f,0)}}}});function mat(t){let s=Math.floor(t.timeNow/864e5),a=t.updateInterval*864e5,n=t.state.lastUpdate??t.timeNow+a+Math.floor(a*t.randomInitialInterval),c=n+a,f=t.state.lastTips??s*864e5,p=f+864e5+8*36e5-t.timeZone,h=c<=t.timeNow,E=p<=t.timeNow,C=null;return(h||E||!t.state.lastUpdate||!t.state.lastTips)&&(C={},C.lastUpdate=h?t.timeNow:n,C.lastTips=f,C.blocks=h?{}:t.state.blocks,C.displayedTips=t.state.displayedTips),{nextState:C,triggerUpdate:h,triggerTips:E,nextTips:E?s*864e5:f}}var ZI,Sde=Xe(()=>{Dt();yv();I0();pT();Pc();Rp();ZI=class{constructor(e,r){this.values=new Map;this.hits=new Map;this.enumerators=new Map;this.nextTips=0;this.displayedTips=[];this.shouldCommitTips=!1;this.configuration=e;let s=this.getRegistryPath();this.isNew=!ce.existsSync(s),this.shouldShowTips=!1,this.sendReport(r),this.startBuffer()}commitTips(){this.shouldShowTips&&(this.shouldCommitTips=!0)}selectTip(e){let r=new Set(this.displayedTips),s=f=>f&&fn?Zf(fn,f):!1,a=e.map((f,p)=>p).filter(f=>e[f]&&s(e[f]?.selector));if(a.length===0)return null;let n=a.filter(f=>!r.has(f));if(n.length===0){let f=Math.floor(a.length*.2);this.displayedTips=f>0?this.displayedTips.slice(-f):[],n=a.filter(p=>!r.has(p))}let c=n[Math.floor(Math.random()*n.length)];return this.displayedTips.push(c),this.commitTips(),e[c]}reportVersion(e){this.reportValue(\"version\",e.replace(/-git\\..*/,\"-git\"))}reportCommandName(e){this.reportValue(\"commandName\",e||\"<none>\")}reportPluginName(e){this.reportValue(\"pluginName\",e)}reportProject(e){this.reportEnumerator(\"projectCount\",e)}reportInstall(e){this.reportHit(\"installCount\",e)}reportPackageExtension(e){this.reportValue(\"packageExtension\",e)}reportWorkspaceCount(e){this.reportValue(\"workspaceCount\",String(e))}reportDependencyCount(e){this.reportValue(\"dependencyCount\",String(e))}reportValue(e,r){bp(this.values,e).add(r)}reportEnumerator(e,r){bp(this.enumerators,e).add(us(r))}reportHit(e,r=\"*\"){let s=q4(this.hits,e),a=Yl(s,r,()=>0);s.set(r,a+1)}getRegistryPath(){let e=this.configuration.get(\"globalFolder\");return J.join(e,\"telemetry.json\")}sendReport(e){let r=this.getRegistryPath(),s;try{s=ce.readJsonSync(r)}catch{s={}}let{nextState:a,triggerUpdate:n,triggerTips:c,nextTips:f}=mat({state:s,timeNow:Date.now(),timeZone:new Date().getTimezoneOffset()*60*1e3,randomInitialInterval:Math.random(),updateInterval:this.configuration.get(\"telemetryInterval\")});if(this.nextTips=f,this.displayedTips=s.displayedTips??[],a!==null)try{ce.mkdirSync(J.dirname(r),{recursive:!0}),ce.writeJsonSync(r,a)}catch{return!1}if(c&&this.configuration.get(\"enableTips\")&&(this.shouldShowTips=!0),n){let p=s.blocks??{};if(Object.keys(p).length===0){let h=`https://browser-http-intake.logs.datadoghq.eu/v1/input/${e}?ddsource=yarn`,E=C=>cj(h,C,{configuration:this.configuration}).catch(()=>{});for(let[C,S]of Object.entries(s.blocks??{})){if(Object.keys(S).length===0)continue;let P=S;P.userId=C,P.reportType=\"primary\";for(let N of Object.keys(P.enumerators??{}))P.enumerators[N]=P.enumerators[N].length;E(P);let I=new Map,R=20;for(let[N,U]of Object.entries(P.values))U.length>0&&I.set(N,U.slice(0,R));for(;I.size>0;){let N={};N.userId=C,N.reportType=\"secondary\",N.metrics={};for(let[U,W]of I)N.metrics[U]=W.shift(),W.length===0&&I.delete(U);E(N)}}}}return!0}applyChanges(){let e=this.getRegistryPath(),r;try{r=ce.readJsonSync(e)}catch{r={}}let s=this.configuration.get(\"telemetryUserId\")??\"*\",a=r.blocks=r.blocks??{},n=a[s]=a[s]??{};for(let c of this.hits.keys()){let f=n.hits=n.hits??{},p=f[c]=f[c]??{};for(let[h,E]of this.hits.get(c))p[h]=(p[h]??0)+E}for(let c of[\"values\",\"enumerators\"])for(let f of this[c].keys()){let p=n[c]=n[c]??{};p[f]=[...new Set([...p[f]??[],...this[c].get(f)??[]])]}this.shouldCommitTips&&(r.lastTips=this.nextTips,r.displayedTips=this.displayedTips),ce.mkdirSync(J.dirname(e),{recursive:!0}),ce.writeJsonSync(e,r)}startBuffer(){process.on(\"exit\",()=>{try{this.applyChanges()}catch{}})}}});var jv={};Vt(jv,{BuildDirectiveType:()=>_R,CACHE_CHECKPOINT:()=>OG,CACHE_VERSION:()=>UR,Cache:()=>Kr,Configuration:()=>ze,DEFAULT_RC_FILENAME:()=>dj,DurationUnit:()=>mj,FormatType:()=>upe,InstallMode:()=>$l,LEGACY_PLUGINS:()=>ov,LOCKFILE_VERSION:()=>WR,LegacyMigrationResolver:()=>KI,LightReport:()=>lA,LinkType:()=>VE,LockfileResolver:()=>zI,Manifest:()=>Ut,MessageName:()=>Br,MultiFetcher:()=>aI,PackageExtensionStatus:()=>J4,PackageExtensionType:()=>V4,PeerWarningType:()=>YR,Project:()=>Tt,Report:()=>Ao,ReportError:()=>jt,SettingsType:()=>wI,StreamReport:()=>Ot,TAG_REGEXP:()=>Mp,TelemetryManager:()=>ZI,ThrowReport:()=>ki,VirtualFetcher:()=>lI,WindowsLinkType:()=>IT,Workspace:()=>XI,WorkspaceFetcher:()=>cI,WorkspaceResolver:()=>Ei,YarnVersion:()=>fn,execUtils:()=>qr,folderUtils:()=>OQ,formatUtils:()=>he,hashUtils:()=>Nn,httpUtils:()=>nn,miscUtils:()=>je,nodeUtils:()=>Ui,parseMessageName:()=>jx,reportOptionDeprecations:()=>SI,scriptUtils:()=>In,semverUtils:()=>Fr,stringifyMessageName:()=>Yf,structUtils:()=>G,tgzUtils:()=>ps,treeUtils:()=>xs});var Ge=Xe(()=>{dT();LQ();xc();I0();pT();Pc();gT();zj();Rp();Wo();nde();ude();LG();av();av();pde();MG();hde();UG();oI();Gx();R8();vde();Tc();Ev();Sde();VG();N8();O8();tm();JG();yv();hle()});var Qde=_((WHt,qv)=>{\"use strict\";var Eat=process.env.TERM_PROGRAM===\"Hyper\",Iat=process.platform===\"win32\",Pde=process.platform===\"linux\",$G={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\"},xde=Object.assign({},$G,{check:\"\\u221A\",cross:\"\\xD7\",ellipsisLarge:\"...\",ellipsis:\"...\",info:\"i\",question:\"?\",questionSmall:\"?\",pointer:\">\",pointerSmall:\"\\xBB\",radioOff:\"( )\",radioOn:\"(*)\",warning:\"\\u203C\"}),kde=Object.assign({},$G,{ballotCross:\"\\u2718\",check:\"\\u2714\",cross:\"\\u2716\",ellipsisLarge:\"\\u22EF\",ellipsis:\"\\u2026\",info:\"\\u2139\",question:\"?\",questionFull:\"\\uFF1F\",questionSmall:\"\\uFE56\",pointer:Pde?\"\\u25B8\":\"\\u276F\",pointerSmall:Pde?\"\\u2023\":\"\\u203A\",radioOff:\"\\u25EF\",radioOn:\"\\u25C9\",warning:\"\\u26A0\"});qv.exports=Iat&&!Eat?xde:kde;Reflect.defineProperty(qv.exports,\"common\",{enumerable:!1,value:$G});Reflect.defineProperty(qv.exports,\"windows\",{enumerable:!1,value:xde});Reflect.defineProperty(qv.exports,\"other\",{enumerable:!1,value:kde})});var Ju=_((YHt,e5)=>{\"use strict\";var Cat=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t),wat=/[\\u001b\\u009b][[\\]#;?()]*(?:(?:(?:[^\\W_]*;?[^\\W_]*)\\u0007)|(?:(?:[0-9]{1,4}(;[0-9]{0,4})*)?[~0-9=<>cf-nqrtyA-PRZ]))/g,Tde=()=>{let t={enabled:!0,visible:!0,styles:{},keys:{}};\"FORCE_COLOR\"in process.env&&(t.enabled=process.env.FORCE_COLOR!==\"0\");let e=n=>{let c=n.open=`\\x1B[${n.codes[0]}m`,f=n.close=`\\x1B[${n.codes[1]}m`,p=n.regex=new RegExp(`\\\\u001b\\\\[${n.codes[1]}m`,\"g\");return n.wrap=(h,E)=>{h.includes(f)&&(h=h.replace(p,f+c));let C=c+h+f;return E?C.replace(/\\r*\\n/g,`${f}$&${c}`):C},n},r=(n,c,f)=>typeof n==\"function\"?n(c):n.wrap(c,f),s=(n,c)=>{if(n===\"\"||n==null)return\"\";if(t.enabled===!1)return n;if(t.visible===!1)return\"\";let f=\"\"+n,p=f.includes(`\n`),h=c.length;for(h>0&&c.includes(\"unstyle\")&&(c=[...new Set([\"unstyle\",...c])].reverse());h-- >0;)f=r(t.styles[c[h]],f,p);return f},a=(n,c,f)=>{t.styles[n]=e({name:n,codes:c}),(t.keys[f]||(t.keys[f]=[])).push(n),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(h){t.alias(n,h)},get(){let h=E=>s(E,h.stack);return Reflect.setPrototypeOf(h,t),h.stack=this.stack?this.stack.concat(n):[n],h}})};return a(\"reset\",[0,0],\"modifier\"),a(\"bold\",[1,22],\"modifier\"),a(\"dim\",[2,22],\"modifier\"),a(\"italic\",[3,23],\"modifier\"),a(\"underline\",[4,24],\"modifier\"),a(\"inverse\",[7,27],\"modifier\"),a(\"hidden\",[8,28],\"modifier\"),a(\"strikethrough\",[9,29],\"modifier\"),a(\"black\",[30,39],\"color\"),a(\"red\",[31,39],\"color\"),a(\"green\",[32,39],\"color\"),a(\"yellow\",[33,39],\"color\"),a(\"blue\",[34,39],\"color\"),a(\"magenta\",[35,39],\"color\"),a(\"cyan\",[36,39],\"color\"),a(\"white\",[37,39],\"color\"),a(\"gray\",[90,39],\"color\"),a(\"grey\",[90,39],\"color\"),a(\"bgBlack\",[40,49],\"bg\"),a(\"bgRed\",[41,49],\"bg\"),a(\"bgGreen\",[42,49],\"bg\"),a(\"bgYellow\",[43,49],\"bg\"),a(\"bgBlue\",[44,49],\"bg\"),a(\"bgMagenta\",[45,49],\"bg\"),a(\"bgCyan\",[46,49],\"bg\"),a(\"bgWhite\",[47,49],\"bg\"),a(\"blackBright\",[90,39],\"bright\"),a(\"redBright\",[91,39],\"bright\"),a(\"greenBright\",[92,39],\"bright\"),a(\"yellowBright\",[93,39],\"bright\"),a(\"blueBright\",[94,39],\"bright\"),a(\"magentaBright\",[95,39],\"bright\"),a(\"cyanBright\",[96,39],\"bright\"),a(\"whiteBright\",[97,39],\"bright\"),a(\"bgBlackBright\",[100,49],\"bgBright\"),a(\"bgRedBright\",[101,49],\"bgBright\"),a(\"bgGreenBright\",[102,49],\"bgBright\"),a(\"bgYellowBright\",[103,49],\"bgBright\"),a(\"bgBlueBright\",[104,49],\"bgBright\"),a(\"bgMagentaBright\",[105,49],\"bgBright\"),a(\"bgCyanBright\",[106,49],\"bgBright\"),a(\"bgWhiteBright\",[107,49],\"bgBright\"),t.ansiRegex=wat,t.hasColor=t.hasAnsi=n=>(t.ansiRegex.lastIndex=0,typeof n==\"string\"&&n!==\"\"&&t.ansiRegex.test(n)),t.alias=(n,c)=>{let f=typeof c==\"string\"?t[c]:c;if(typeof f!=\"function\")throw new TypeError(\"Expected alias to be the name of an existing color (string) or a function\");f.stack||(Reflect.defineProperty(f,\"name\",{value:n}),t.styles[n]=f,f.stack=[n]),Reflect.defineProperty(t,n,{configurable:!0,enumerable:!0,set(p){t.alias(n,p)},get(){let p=h=>s(h,p.stack);return Reflect.setPrototypeOf(p,t),p.stack=this.stack?this.stack.concat(f.stack):f.stack,p}})},t.theme=n=>{if(!Cat(n))throw new TypeError(\"Expected theme to be an object\");for(let c of Object.keys(n))t.alias(c,n[c]);return t},t.alias(\"unstyle\",n=>typeof n==\"string\"&&n!==\"\"?(t.ansiRegex.lastIndex=0,n.replace(t.ansiRegex,\"\")):\"\"),t.alias(\"noop\",n=>n),t.none=t.clear=t.noop,t.stripColor=t.unstyle,t.symbols=Qde(),t.define=a,t};e5.exports=Tde();e5.exports.create=Tde});var Zo=_(pn=>{\"use strict\";var Bat=Object.prototype.toString,jc=Ju(),Rde=!1,t5=[],Fde={yellow:\"blue\",cyan:\"red\",green:\"magenta\",black:\"white\",blue:\"yellow\",red:\"cyan\",magenta:\"green\",white:\"black\"};pn.longest=(t,e)=>t.reduce((r,s)=>Math.max(r,e?s[e].length:s.length),0);pn.hasColor=t=>!!t&&jc.hasColor(t);var JR=pn.isObject=t=>t!==null&&typeof t==\"object\"&&!Array.isArray(t);pn.nativeType=t=>Bat.call(t).slice(8,-1).toLowerCase().replace(/\\s/g,\"\");pn.isAsyncFn=t=>pn.nativeType(t)===\"asyncfunction\";pn.isPrimitive=t=>t!=null&&typeof t!=\"object\"&&typeof t!=\"function\";pn.resolve=(t,e,...r)=>typeof e==\"function\"?e.call(t,...r):e;pn.scrollDown=(t=[])=>[...t.slice(1),t[0]];pn.scrollUp=(t=[])=>[t.pop(),...t];pn.reorder=(t=[])=>{let e=t.slice();return e.sort((r,s)=>r.index>s.index?1:r.index<s.index?-1:0),e};pn.swap=(t,e,r)=>{let s=t.length,a=r===s?0:r<0?s-1:r,n=t[e];t[e]=t[a],t[a]=n};pn.width=(t,e=80)=>{let r=t&&t.columns?t.columns:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[0]),process.platform===\"win32\"?r-1:r};pn.height=(t,e=20)=>{let r=t&&t.rows?t.rows:e;return t&&typeof t.getWindowSize==\"function\"&&(r=t.getWindowSize()[1]),r};pn.wordWrap=(t,e={})=>{if(!t)return t;typeof e==\"number\"&&(e={width:e});let{indent:r=\"\",newline:s=`\n`+r,width:a=80}=e,n=(s+r).match(/[^\\S\\n]/g)||[];a-=n.length;let c=`.{1,${a}}([\\\\s\\\\u200B]+|$)|[^\\\\s\\\\u200B]+?([\\\\s\\\\u200B]+|$)`,f=t.trim(),p=new RegExp(c,\"g\"),h=f.match(p)||[];return h=h.map(E=>E.replace(/\\n$/,\"\")),e.padEnd&&(h=h.map(E=>E.padEnd(a,\" \"))),e.padStart&&(h=h.map(E=>E.padStart(a,\" \"))),r+h.join(s)};pn.unmute=t=>{let e=t.stack.find(s=>jc.keys.color.includes(s));return e?jc[e]:t.stack.find(s=>s.slice(2)===\"bg\")?jc[e.slice(2)]:s=>s};pn.pascal=t=>t?t[0].toUpperCase()+t.slice(1):\"\";pn.inverse=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>jc.keys.color.includes(s));if(e){let s=jc[\"bg\"+pn.pascal(e)];return s?s.black:t}let r=t.stack.find(s=>s.slice(0,2)===\"bg\");return r?jc[r.slice(2).toLowerCase()]||t:jc.none};pn.complement=t=>{if(!t||!t.stack)return t;let e=t.stack.find(s=>jc.keys.color.includes(s)),r=t.stack.find(s=>s.slice(0,2)===\"bg\");if(e&&!r)return jc[Fde[e]||e];if(r){let s=r.slice(2).toLowerCase(),a=Fde[s];return a&&jc[\"bg\"+pn.pascal(a)]||t}return jc.none};pn.meridiem=t=>{let e=t.getHours(),r=t.getMinutes(),s=e>=12?\"pm\":\"am\";e=e%12;let a=e===0?12:e,n=r<10?\"0\"+r:r;return a+\":\"+n+\" \"+s};pn.set=(t={},e=\"\",r)=>e.split(\".\").reduce((s,a,n,c)=>{let f=c.length-1>n?s[a]||{}:r;return!pn.isObject(f)&&n<c.length-1&&(f={}),s[a]=f},t);pn.get=(t={},e=\"\",r)=>{let s=t[e]==null?e.split(\".\").reduce((a,n)=>a&&a[n],t):t[e];return s??r};pn.mixin=(t,e)=>{if(!JR(t))return e;if(!JR(e))return t;for(let r of Object.keys(e)){let s=Object.getOwnPropertyDescriptor(e,r);if(s.hasOwnProperty(\"value\"))if(t.hasOwnProperty(r)&&JR(s.value)){let a=Object.getOwnPropertyDescriptor(t,r);JR(a.value)?t[r]=pn.merge({},t[r],e[r]):Reflect.defineProperty(t,r,s)}else Reflect.defineProperty(t,r,s);else Reflect.defineProperty(t,r,s)}return t};pn.merge=(...t)=>{let e={};for(let r of t)pn.mixin(e,r);return e};pn.mixinEmitter=(t,e)=>{let r=e.constructor.prototype;for(let s of Object.keys(r)){let a=r[s];typeof a==\"function\"?pn.define(t,s,a.bind(e)):pn.define(t,s,a)}};pn.onExit=t=>{let e=(r,s)=>{Rde||(Rde=!0,t5.forEach(a=>a()),r===!0&&process.exit(128+s))};t5.length===0&&(process.once(\"SIGTERM\",e.bind(null,!0,15)),process.once(\"SIGINT\",e.bind(null,!0,2)),process.once(\"exit\",e)),t5.push(t)};pn.define=(t,e,r)=>{Reflect.defineProperty(t,e,{value:r})};pn.defineExport=(t,e,r)=>{let s;Reflect.defineProperty(t,e,{enumerable:!0,configurable:!0,set(a){s=a},get(){return s?s():r()}})}});var Nde=_(rC=>{\"use strict\";rC.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\"};rC.shift={up:\"shiftUp\",down:\"shiftDown\",left:\"shiftLeft\",right:\"shiftRight\",tab:\"prev\"};rC.fn={up:\"pageUp\",down:\"pageDown\",left:\"pageLeft\",right:\"pageRight\",delete:\"deleteForward\"};rC.option={b:\"backward\",f:\"forward\",d:\"cutRight\",left:\"cutLeft\",up:\"altUp\",down:\"altDown\"};rC.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 Mde=_((KHt,Lde)=>{\"use strict\";var Ode=Ie(\"readline\"),vat=Nde(),Sat=/^(?:\\x1b)([a-zA-Z0-9])$/,Dat=/^(?:\\x1b+)(O|N|\\[|\\[\\[)(?:(\\d+)(?:;(\\d+))?([~^$])|(?:1;)?(\\d+)?([a-zA-Z]))/,bat={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 Pat(t){return[\"[a\",\"[b\",\"[c\",\"[d\",\"[e\",\"[2$\",\"[3$\",\"[5$\",\"[6$\",\"[7$\",\"[8$\",\"[Z\"].includes(t)}function xat(t){return[\"Oa\",\"Ob\",\"Oc\",\"Od\",\"Oe\",\"[2^\",\"[3^\",\"[5^\",\"[6^\",\"[7^\",\"[8^\"].includes(t)}var KR=(t=\"\",e={})=>{let r,s={name:e.name,ctrl:!1,meta:!1,shift:!1,option:!1,sequence:t,raw:t,...e};if(Buffer.isBuffer(t)?t[0]>127&&t[1]===void 0?(t[0]-=128,t=\"\\x1B\"+String(t)):t=String(t):t!==void 0&&typeof t!=\"string\"?t=String(t):t||(t=s.sequence||\"\"),s.sequence=s.sequence||t||s.name,t===\"\\r\")s.raw=void 0,s.name=\"return\";else if(t===`\n`)s.name=\"enter\";else if(t===\"\t\")s.name=\"tab\";else if(t===\"\\b\"||t===\"\\x7F\"||t===\"\\x1B\\x7F\"||t===\"\\x1B\\b\")s.name=\"backspace\",s.meta=t.charAt(0)===\"\\x1B\";else if(t===\"\\x1B\"||t===\"\\x1B\\x1B\")s.name=\"escape\",s.meta=t.length===2;else if(t===\" \"||t===\"\\x1B \")s.name=\"space\",s.meta=t.length===2;else if(t<=\"\u001a\")s.name=String.fromCharCode(t.charCodeAt(0)+97-1),s.ctrl=!0;else if(t.length===1&&t>=\"0\"&&t<=\"9\")s.name=\"number\";else if(t.length===1&&t>=\"a\"&&t<=\"z\")s.name=t;else if(t.length===1&&t>=\"A\"&&t<=\"Z\")s.name=t.toLowerCase(),s.shift=!0;else if(r=Sat.exec(t))s.meta=!0,s.shift=/^[A-Z]$/.test(r[1]);else if(r=Dat.exec(t)){let a=[...t];a[0]===\"\\x1B\"&&a[1]===\"\\x1B\"&&(s.option=!0);let n=[r[1],r[2],r[4],r[6]].filter(Boolean).join(\"\"),c=(r[3]||r[5]||1)-1;s.ctrl=!!(c&4),s.meta=!!(c&10),s.shift=!!(c&1),s.code=n,s.name=bat[n],s.shift=Pat(n)||s.shift,s.ctrl=xat(n)||s.ctrl}return s};KR.listen=(t={},e)=>{let{stdin:r}=t;if(!r||r!==process.stdin&&!r.isTTY)throw new Error(\"Invalid stream passed\");let s=Ode.createInterface({terminal:!0,input:r});Ode.emitKeypressEvents(r,s);let a=(f,p)=>e(f,KR(f,p),s),n=r.isRaw;return r.isTTY&&r.setRawMode(!0),r.on(\"keypress\",a),s.resume(),()=>{r.isTTY&&r.setRawMode(n),r.removeListener(\"keypress\",a),s.pause(),s.close()}};KR.action=(t,e,r)=>{let s={...vat,...r};return e.ctrl?(e.action=s.ctrl[e.name],e):e.option&&s.option?(e.action=s.option[e.name],e):e.shift?(e.action=s.shift[e.name],e):(e.action=s.keys[e.name],e)};Lde.exports=KR});var _de=_((zHt,Ude)=>{\"use strict\";Ude.exports=t=>{t.timers=t.timers||{};let e=t.options.timers;if(e)for(let r of Object.keys(e)){let s=e[r];typeof s==\"number\"&&(s={interval:s}),kat(t,r,s)}};function kat(t,e,r={}){let s=t.timers[e]={name:e,start:Date.now(),ms:0,tick:0},a=r.interval||120;s.frames=r.frames||[],s.loading=!0;let n=setInterval(()=>{s.ms=Date.now()-s.start,s.tick++,t.render()},a);return s.stop=()=>{s.loading=!1,clearInterval(n)},Reflect.defineProperty(s,\"interval\",{value:n}),t.once(\"close\",()=>s.stop()),s.stop}});var jde=_((XHt,Hde)=>{\"use strict\";var{define:Qat,width:Tat}=Zo(),r5=class{constructor(e){let r=e.options;Qat(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=Tat(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\"}};Hde.exports=r5});var qde=_((ZHt,Gde)=>{\"use strict\";var n5=Zo(),ho=Ju(),i5={default:ho.noop,noop:ho.noop,set inverse(t){this._inverse=t},get inverse(){return this._inverse||n5.inverse(this.primary)},set complement(t){this._complement=t},get complement(){return this._complement||n5.complement(this.primary)},primary:ho.cyan,success:ho.green,danger:ho.magenta,strong:ho.bold,warning:ho.yellow,muted:ho.dim,disabled:ho.gray,dark:ho.dim.gray,underline:ho.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}};i5.merge=(t={})=>{t.styles&&typeof t.styles.enabled==\"boolean\"&&(ho.enabled=t.styles.enabled),t.styles&&typeof t.styles.visible==\"boolean\"&&(ho.visible=t.styles.visible);let e=n5.merge({},i5,t.styles);delete e.merge;for(let r of Object.keys(ho))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>ho[r]});for(let r of Object.keys(ho.styles))e.hasOwnProperty(r)||Reflect.defineProperty(e,r,{get:()=>ho[r]});return e};Gde.exports=i5});var Yde=_(($Ht,Wde)=>{\"use strict\";var s5=process.platform===\"win32\",zp=Ju(),Rat=Zo(),o5={...zp.symbols,upDownDoubleArrow:\"\\u21D5\",upDownDoubleArrow2:\"\\u2B0D\",upDownArrow:\"\\u2195\",asterisk:\"*\",asterism:\"\\u2042\",bulletWhite:\"\\u25E6\",electricArrow:\"\\u2301\",ellipsisLarge:\"\\u22EF\",ellipsisSmall:\"\\u2026\",fullBlock:\"\\u2588\",identicalTo:\"\\u2261\",indicator:zp.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:zp.symbols.question,submitted:zp.symbols.check,cancelled:zp.symbols.cross},separator:{pending:zp.symbols.pointerSmall,submitted:zp.symbols.middot,cancelled:zp.symbols.middot},radio:{off:s5?\"( )\":\"\\u25EF\",on:s5?\"(*)\":\"\\u25C9\",disabled:s5?\"(|)\":\"\\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\"]};o5.merge=t=>{let e=Rat.merge({},zp.symbols,o5,t.symbols);return delete e.merge,e};Wde.exports=o5});var Jde=_((ejt,Vde)=>{\"use strict\";var Fat=qde(),Nat=Yde(),Oat=Zo();Vde.exports=t=>{t.options=Oat.merge({},t.options.theme,t.options),t.symbols=Nat.merge(t.options),t.styles=Fat.merge(t.options)}});var $de=_((Xde,Zde)=>{\"use strict\";var Kde=process.env.TERM_PROGRAM===\"Apple_Terminal\",Lat=Ju(),a5=Zo(),Ku=Zde.exports=Xde,_i=\"\\x1B[\",zde=\"\\x07\",l5=!1,j0=Ku.code={bell:zde,beep:zde,beginning:`${_i}G`,down:`${_i}J`,esc:_i,getPosition:`${_i}6n`,hide:`${_i}?25l`,line:`${_i}2K`,lineEnd:`${_i}K`,lineStart:`${_i}1K`,restorePosition:_i+(Kde?\"8\":\"u\"),savePosition:_i+(Kde?\"7\":\"s\"),screen:`${_i}2J`,show:`${_i}?25h`,up:`${_i}1J`},wm=Ku.cursor={get hidden(){return l5},hide(){return l5=!0,j0.hide},show(){return l5=!1,j0.show},forward:(t=1)=>`${_i}${t}C`,backward:(t=1)=>`${_i}${t}D`,nextLine:(t=1)=>`${_i}E`.repeat(t),prevLine:(t=1)=>`${_i}F`.repeat(t),up:(t=1)=>t?`${_i}${t}A`:\"\",down:(t=1)=>t?`${_i}${t}B`:\"\",right:(t=1)=>t?`${_i}${t}C`:\"\",left:(t=1)=>t?`${_i}${t}D`:\"\",to(t,e){return e?`${_i}${e+1};${t+1}H`:`${_i}${t+1}G`},move(t=0,e=0){let r=\"\";return r+=t<0?wm.left(-t):t>0?wm.right(t):\"\",r+=e<0?wm.up(-e):e>0?wm.down(e):\"\",r},restore(t={}){let{after:e,cursor:r,initial:s,input:a,prompt:n,size:c,value:f}=t;if(s=a5.isPrimitive(s)?String(s):\"\",a=a5.isPrimitive(a)?String(a):\"\",f=a5.isPrimitive(f)?String(f):\"\",c){let p=Ku.cursor.up(c)+Ku.cursor.to(n.length),h=a.length-r;return h>0&&(p+=Ku.cursor.left(h)),p}if(f||e){let p=!a&&s?-s.length:-a.length+r;return e&&(p-=e.length),a===\"\"&&s&&!n.includes(s)&&(p+=s.length),Ku.cursor.move(p)}}},c5=Ku.erase={screen:j0.screen,up:j0.up,down:j0.down,line:j0.line,lineEnd:j0.lineEnd,lineStart:j0.lineStart,lines(t){let e=\"\";for(let r=0;r<t;r++)e+=Ku.erase.line+(r<t-1?Ku.cursor.up(1):\"\");return t&&(e+=Ku.code.beginning),e}};Ku.clear=(t=\"\",e=process.stdout.columns)=>{if(!e)return c5.line+wm.to(0);let r=n=>[...Lat.unstyle(n)].length,s=t.split(/\\r?\\n/),a=0;for(let n of s)a+=1+Math.floor(Math.max(r(n)-1,0)/e);return(c5.line+wm.prevLine()).repeat(a-1)+c5.line+wm.to(0)}});var nC=_((tjt,tme)=>{\"use strict\";var Mat=Ie(\"events\"),eme=Ju(),u5=Mde(),Uat=_de(),_at=jde(),Hat=Jde(),pl=Zo(),Bm=$de(),f5=class t extends Mat{constructor(e={}){super(),this.name=e.name,this.type=e.type,this.options=e,Hat(this),Uat(this),this.state=new _at(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=Gat(this.options.margin),this.setMaxListeners(0),jat(this)}async keypress(e,r={}){this.keypressed=!0;let s=u5.action(e,u5(e,r),this.options.actions);this.state.keypress=s,this.emit(\"keypress\",e,s),this.emit(\"state\",this.state.clone());let a=this.options[s.action]||this[s.action]||this.dispatch;if(typeof a==\"function\")return await a.call(this,e,s);this.alert()}alert(){delete this.state.alert,this.options.show===!1?this.emit(\"alert\"):this.stdout.write(Bm.code.beep)}cursorHide(){this.stdout.write(Bm.cursor.hide()),pl.onExit(()=>this.cursorShow())}cursorShow(){this.stdout.write(Bm.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(Bm.cursor.down(e)+Bm.clear(r,this.width))}restore(){if(this.state.closed||this.options.show===!1)return;let{prompt:e,after:r,rest:s}=this.sections(),{cursor:a,initial:n=\"\",input:c=\"\",value:f=\"\"}=this,p=this.state.size=s.length,h={after:r,cursor:a,initial:n,input:c,prompt:e,size:p,value:f},E=Bm.cursor.restore(h);E&&this.stdout.write(E)}sections(){let{buffer:e,input:r,prompt:s}=this.state;s=eme.unstyle(s);let a=eme.unstyle(e),n=a.indexOf(s),c=a.slice(0,n),p=a.slice(n).split(`\n`),h=p[0],E=p[p.length-1],S=(s+(r?\" \"+r:\"\")).length,P=S<h.length?h.slice(S+1):\"\";return{header:c,prompt:h,after:P,rest:p.slice(1),last:E}}async submit(){this.state.submitted=!0,this.state.validating=!0,this.options.onSubmit&&await this.options.onSubmit.call(this,this.name,this.value,this);let e=this.state.error||await this.validate(this.value,this.state);if(e!==!0){let r=`\n`+this.symbols.pointer+\" \";typeof e==\"string\"?r+=e.trim():r+=\"Invalid input\",this.state.error=`\n`+this.styles.danger(r),this.state.submitted=!1,await this.render(),await this.alert(),this.state.validating=!1,this.state.error=void 0;return}this.state.validating=!1,await this.render(),await this.close(),this.value=await this.result(this.value),this.emit(\"submit\",this.value)}async cancel(e){this.state.cancelled=this.state.submitted=!0,await this.render(),await this.close(),typeof this.options.onCancel==\"function\"&&await this.options.onCancel.call(this,this.name,this.value,this),this.emit(\"cancel\",await this.error(e))}async close(){this.state.closed=!0;try{let e=this.sections(),r=Math.ceil(e.prompt.length/this.width);e.rest&&this.write(Bm.cursor.down(e.rest.length)),this.write(`\n`.repeat(r))}catch{}this.emit(\"close\")}start(){!this.stop&&this.options.show!==!1&&(this.stop=u5.listen(this,this.keypress.bind(this)),this.once(\"close\",this.stop))}async skip(){return this.skipped=this.options.skip===!0,typeof this.options.skip==\"function\"&&(this.skipped=await this.options.skip.call(this,this.name,this.value)),this.skipped}async initialize(){let{format:e,options:r,result:s}=this;if(this.format=()=>e.call(this,this.value),this.result=()=>s.call(this,this.value),typeof r.initial==\"function\"&&(this.initial=await r.initial.call(this,this)),typeof r.onRun==\"function\"&&await r.onRun.call(this,this),typeof r.onSubmit==\"function\"){let a=r.onSubmit.bind(this),n=this.submit.bind(this);delete this.options.onSubmit,this.submit=async()=>(await a(this.name,this.value,this),n())}await this.start(),await this.render()}render(){throw new Error(\"expected prompt to have a custom render method\")}run(){return new Promise(async(e,r)=>{if(this.once(\"submit\",e),this.once(\"cancel\",r),await this.skip())return this.render=()=>{},this.submit();await this.initialize(),this.emit(\"run\")})}async element(e,r,s){let{options:a,state:n,symbols:c,timers:f}=this,p=f&&f[e];n.timer=p;let h=a[e]||n[e]||c[e],E=r&&r[e]!=null?r[e]:await h;if(E===\"\")return E;let C=await this.resolve(E,n,r,s);return!C&&r&&r[e]?this.resolve(h,n,r,s):C}async prefix(){let e=await this.element(\"prefix\")||this.symbols,r=this.timers&&this.timers.prefix,s=this.state;return s.timer=r,pl.isObject(e)&&(e=e[s.status]||e.pending),pl.hasColor(e)?e:(this.styles[s.status]||this.styles.pending)(e)}async message(){let e=await this.element(\"message\");return pl.hasColor(e)?e:this.styles.strong(e)}async separator(){let e=await this.element(\"separator\")||this.symbols,r=this.timers&&this.timers.separator,s=this.state;s.timer=r;let a=e[s.status]||e.pending||s.separator,n=await this.resolve(a,s);return pl.isObject(n)&&(n=n[s.status]||n.pending),pl.hasColor(n)?n:this.styles.muted(n)}async pointer(e,r){let s=await this.element(\"pointer\",e,r);if(typeof s==\"string\"&&pl.hasColor(s))return s;if(s){let a=this.styles,n=this.index===r,c=n?a.primary:h=>h,f=await this.resolve(s[n?\"on\":\"off\"]||s,this.state),p=pl.hasColor(f)?f:c(f);return n?p:\" \".repeat(f.length)}}async indicator(e,r){let s=await this.element(\"indicator\",e,r);if(typeof s==\"string\"&&pl.hasColor(s))return s;if(s){let a=this.styles,n=e.enabled===!0,c=n?a.success:a.dark,f=s[n?\"on\":\"off\"]||s;return pl.hasColor(f)?f:c(f)}return\"\"}body(){return null}footer(){if(this.state.status===\"pending\")return this.element(\"footer\")}header(){if(this.state.status===\"pending\")return this.element(\"header\")}async hint(){if(this.state.status===\"pending\"&&!this.isValue(this.state.input)){let e=await this.element(\"hint\");return pl.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 pl.resolve(this,e,...r)}get base(){return t.prototype}get style(){return this.styles[this.state.status]}get height(){return this.options.rows||pl.height(this.stdout,25)}get width(){return this.options.columns||pl.width(this.stdout,80)}get size(){return{width:this.width,height:this.height}}set cursor(e){this.state.cursor=e}get cursor(){return this.state.cursor}set input(e){this.state.input=e}get input(){return this.state.input}set value(e){this.state.value=e}get value(){let{input:e,value:r}=this.state,s=[r,e].find(this.isValue.bind(this));return this.isValue(s)?s:this.initial}static get prompt(){return e=>new this(e).run()}};function jat(t){let e=a=>t[a]===void 0||typeof t[a]==\"function\",r=[\"actions\",\"choices\",\"initial\",\"margin\",\"roles\",\"styles\",\"symbols\",\"theme\",\"timers\",\"value\"],s=[\"body\",\"footer\",\"error\",\"header\",\"hint\",\"indicator\",\"message\",\"prefix\",\"separator\",\"skip\"];for(let a of Object.keys(t.options)){if(r.includes(a)||/^on[A-Z]/.test(a))continue;let n=t.options[a];typeof n==\"function\"&&e(a)?s.includes(a)||(t[a]=n.bind(t)):typeof t[a]!=\"function\"&&(t[a]=n)}}function Gat(t){typeof t==\"number\"&&(t=[t,t,t,t]);let e=[].concat(t||[]),r=a=>a%2===0?`\n`:\" \",s=[];for(let a=0;a<4;a++){let n=r(a);e[a]?s.push(n.repeat(e[a])):s.push(\"\")}return s}tme.exports=f5});var ime=_((rjt,nme)=>{\"use strict\";var qat=Zo(),rme={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 rme.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}};nme.exports=(t,e={})=>{let r=qat.merge({},rme,e.roles);return r[t]||r.default}});var Wv=_((njt,ame)=>{\"use strict\";var Wat=Ju(),Yat=nC(),Vat=ime(),zR=Zo(),{reorder:A5,scrollUp:Jat,scrollDown:Kat,isObject:sme,swap:zat}=zR,p5=class extends Yat{constructor(e){super(e),this.cursorHide(),this.maxSelected=e.maxSelected||1/0,this.multiple=e.multiple||!1,this.initial=e.initial||0,this.delay=e.delay||0,this.longest=0,this.num=\"\"}async initialize(){typeof this.options.initial==\"function\"&&(this.initial=await this.options.initial.call(this)),await this.reset(!0),await super.initialize()}async reset(){let{choices:e,initial:r,autofocus:s,suggest:a}=this.options;if(this.state._choices=[],this.state.choices=[],this.choices=await Promise.all(await this.toChoices(e)),this.choices.forEach(n=>n.enabled=!1),typeof a!=\"function\"&&this.selectable.length===0)throw new Error(\"At least one choice must be selectable\");sme(r)&&(r=Object.keys(r)),Array.isArray(r)?(s!=null&&(this.index=this.findIndex(s)),r.forEach(n=>this.enable(this.find(n))),await this.render()):(s!=null&&(r=s),typeof r==\"string\"&&(r=this.findIndex(r)),typeof r==\"number\"&&r>-1&&(this.index=Math.max(0,Math.min(r,this.choices.length)),this.enable(this.find(this.index)))),this.isDisabled(this.focused)&&await this.down()}async toChoices(e,r){this.state.loadingChoices=!0;let s=[],a=0,n=async(c,f)=>{typeof c==\"function\"&&(c=await c.call(this)),c instanceof Promise&&(c=await c);for(let p=0;p<c.length;p++){let h=c[p]=await this.toChoice(c[p],a++,f);s.push(h),h.choices&&await n(h.choices,h)}return s};return n(e,r).then(c=>(this.state.loadingChoices=!1,c))}async toChoice(e,r,s){if(typeof e==\"function\"&&(e=await e.call(this,this)),e instanceof Promise&&(e=await e),typeof e==\"string\"&&(e={name:e}),e.normalized)return e;e.normalized=!0;let a=e.value;if(e=Vat(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,zR.define(e,\"parent\",s),e.level=s?s.level+1:1,e.indent==null&&(e.indent=s?s.indent+\"  \":e.indent||\"\"),e.path=s?s.path+\".\"+e.name:e.name,e.enabled=!!(this.multiple&&!this.isDisabled(e)&&(e.enabled||this.isSelected(e))),this.isDisabled(e)||(this.longest=Math.max(this.longest,Wat.unstyle(e.message).length));let c={...e};return e.reset=(f=c.input,p=c.value)=>{for(let h of Object.keys(c))e[h]=c[h];e.input=f,e.value=p},a==null&&typeof e.initial==\"function\"&&(e.input=await e.initial.call(this,this.state,e,r)),e}async onChoice(e,r){this.emit(\"choice\",e,r,this),typeof e.onChoice==\"function\"&&await e.onChoice.call(this,this.state,e,r)}async addChoice(e,r,s){let a=await this.toChoice(e,r,s);return this.choices.push(a),this.index=this.choices.length-1,this.limit=this.choices.length,a}async newItem(e,r,s){let a={name:\"New choice name?\",editable:!0,newChoice:!0,...e},n=await this.addChoice(a,r,s);return n.updateChoice=()=>{delete n.newChoice,n.name=n.message=n.input,n.input=\"\",n.cursor=0},this.render()}indent(e){return e.indent==null?e.level>1?\"  \".repeat(e.level-1):\"\":e.indent}dispatch(e,r){if(this.multiple&&this[r.name])return this[r.name]();this.alert()}focus(e,r){return typeof r!=\"boolean\"&&(r=e.enabled),r&&!e.enabled&&this.selected.length>=this.maxSelected?this.alert():(this.index=e.index,e.enabled=r&&!this.isDisabled(e),e)}space(){return this.multiple?(this.toggle(this.focused),this.render()):this.alert()}a(){if(this.maxSelected<this.choices.length)return this.alert();let e=this.selectable.every(r=>r.enabled);return this.choices.forEach(r=>r.enabled=!e),this.render()}i(){return this.choices.length-this.selected.length>this.maxSelected?this.alert():(this.choices.forEach(e=>e.enabled=!e.enabled),this.render())}g(e=this.focused){return this.choices.some(r=>!!r.parent)?(this.toggle(e.parent&&!e.choices?e.parent:e),this.render()):this.a()}toggle(e,r){if(!e.enabled&&this.selected.length>=this.maxSelected)return this.alert();typeof r!=\"boolean\"&&(r=!e.enabled),e.enabled=r,e.choices&&e.choices.forEach(a=>this.toggle(a,r));let s=e.parent;for(;s;){let a=s.choices.filter(n=>this.isDisabled(n));s.enabled=a.every(n=>n.enabled===!0),s=s.parent}return ome(this,this.choices),this.emit(\"toggle\",e,this),e}enable(e){return this.selected.length>=this.maxSelected?this.alert():(e.enabled=!this.isDisabled(e),e.choices&&e.choices.forEach(this.enable.bind(this)),e)}disable(e){return e.enabled=!1,e.choices&&e.choices.forEach(this.disable.bind(this)),e}number(e){this.num+=e;let r=s=>{let a=Number(s);if(a>this.choices.length-1)return this.alert();let n=this.focused,c=this.choices.find(f=>a===f.index);if(!c.enabled&&this.selected.length>=this.maxSelected)return this.alert();if(this.visible.indexOf(c)===-1){let f=A5(this.choices),p=f.indexOf(c);if(n.index>p){let h=f.slice(p,p+this.limit),E=f.filter(C=>!h.includes(C));this.choices=h.concat(E)}else{let h=p-this.limit+1;this.choices=f.slice(h).concat(f.slice(0,h))}}return this.index=this.choices.indexOf(c),this.toggle(this.focused),this.render()};return clearTimeout(this.numberTimeout),new Promise(s=>{let a=this.choices.length,n=this.num,c=(f=!1,p)=>{clearTimeout(this.numberTimeout),f&&(p=r(n)),this.num=\"\",s(p)};if(n===\"0\"||n.length===1&&+(n+\"0\")>a)return c(!0);if(Number(n)>a)return c(!1,this.alert());this.numberTimeout=setTimeout(()=>c(!0),this.delay)})}home(){return this.choices=A5(this.choices),this.index=0,this.render()}end(){let e=this.choices.length-this.limit,r=A5(this.choices);return this.choices=r.slice(e).concat(r.slice(0,e)),this.index=this.limit-1,this.render()}first(){return this.index=0,this.render()}last(){return this.index=this.visible.length-1,this.render()}prev(){return this.visible.length<=1?this.alert():this.up()}next(){return this.visible.length<=1?this.alert():this.down()}right(){return this.cursor>=this.input.length?this.alert():(this.cursor++,this.render())}left(){return this.cursor<=0?this.alert():(this.cursor--,this.render())}up(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===0?this.alert():e>r&&s===0?this.scrollUp():(this.index=(s-1%e+e)%e,this.isDisabled()?this.up():this.render())}down(){let e=this.choices.length,r=this.visible.length,s=this.index;return this.options.scroll===!1&&s===r-1?this.alert():e>r&&s===r-1?this.scrollDown():(this.index=(s+1)%e,this.isDisabled()?this.down():this.render())}scrollUp(e=0){return this.choices=Jat(this.choices),this.index=e,this.isDisabled()?this.up():this.render()}scrollDown(e=this.visible.length-1){return this.choices=Kat(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){zat(this.choices,this.index,e)}isDisabled(e=this.focused){return e&&[\"disabled\",\"collapsed\",\"hidden\",\"completing\",\"readonly\"].some(s=>e[s]===!0)?!0:e&&e.role===\"heading\"}isEnabled(e=this.focused){if(Array.isArray(e))return e.every(r=>this.isEnabled(r));if(e.choices){let r=e.choices.filter(s=>!this.isDisabled(s));return e.enabled&&r.every(s=>this.isEnabled(s))}return e.enabled&&!this.isDisabled(e)}isChoice(e,r){return e.name===r||e.index===Number(r)}isSelected(e){return Array.isArray(this.initial)?this.initial.some(r=>this.isChoice(e,r)):this.isChoice(e,this.initial)}map(e=[],r=\"value\"){return[].concat(e||[]).reduce((s,a)=>(s[a]=this.find(a,r),s),{})}filter(e,r){let a=typeof e==\"function\"?e:(f,p)=>[f.name,p].includes(e),c=(this.options.multiple?this.state._choices:this.choices).filter(a);return r?c.map(f=>f[r]):c}find(e,r){if(sme(e))return r?e[r]:e;let a=typeof e==\"function\"?e:(c,f)=>[c.name,f].includes(e),n=this.choices.find(a);if(n)return r?n[r]:n}findIndex(e){return this.choices.indexOf(this.find(e))}async submit(){let e=this.focused;if(!e)return this.alert();if(e.newChoice)return e.input?(e.updateChoice(),this.render()):this.alert();if(this.choices.some(c=>c.newChoice))return this.alert();let{reorder:r,sort:s}=this.options,a=this.multiple===!0,n=this.selected;return n===void 0?this.alert():(Array.isArray(n)&&r!==!1&&s!==!0&&(n=zR.reorder(n)),this.value=a?n.map(c=>c.name):n.name,super.submit())}set choices(e=[]){this.state._choices=this.state._choices||[],this.state.choices=e;for(let r of e)this.state._choices.some(s=>s.name===r.name)||this.state._choices.push(r);if(!this._initial&&this.options.initial){this._initial=!0;let r=this.initial;if(typeof r==\"string\"||typeof r==\"number\"){let s=this.find(r);s&&(this.initial=s.index,this.focus(s,!0))}}}get choices(){return ome(this,this.state.choices||[])}set visible(e){this.state.visible=e}get visible(){return(this.state.visible||this.choices).slice(0,this.limit)}set limit(e){this.state.limit=e}get limit(){let{state:e,options:r,choices:s}=this,a=e.limit||this._limit||r.limit||s.length;return Math.min(a,this.height)}set value(e){super.value=e}get value(){return typeof super.value!=\"string\"&&super.value===this.initial?this.input:super.value}set index(e){this.state.index=e}get index(){return Math.max(0,this.state?this.state.index:0)}get enabled(){return this.filter(this.isEnabled.bind(this))}get focused(){let e=this.choices[this.index];return e&&this.state.submitted&&this.multiple!==!0&&(e.enabled=!0),e}get selectable(){return this.choices.filter(e=>!this.isDisabled(e))}get selected(){return this.multiple?this.enabled:this.focused}};function ome(t,e){if(e instanceof Promise)return e;if(typeof e==\"function\"){if(zR.isAsyncFn(e))return e;e=e.call(t,t)}for(let r of e){if(Array.isArray(r.choices)){let s=r.choices.filter(a=>!t.isDisabled(a));r.enabled=s.every(a=>a.enabled===!0)}t.isDisabled(r)===!0&&delete r.enabled}return e}ame.exports=p5});var G0=_((ijt,lme)=>{\"use strict\";var Xat=Wv(),h5=Zo(),g5=class extends Xat{constructor(e){super(e),this.emptyError=this.options.emptyError||\"No items were selected\"}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}separator(){if(this.options.separator)return super.separator();let e=this.styles.muted(this.symbols.ellipsis);return this.state.submitted?super.separator():e}pointer(e,r){return!this.multiple||this.options.pointer?super.pointer(e,r):\"\"}indicator(e,r){return this.multiple?super.indicator(e,r):\"\"}choiceMessage(e,r){let s=this.resolve(e.message,this.state,e,r);return e.role===\"heading\"&&!h5.hasColor(s)&&(s=this.styles.strong(s)),this.resolve(s,this.state,e,r)}choiceSeparator(){return\":\"}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await this.indicator(e,r)+(e.pad||\"\"),c=await this.resolve(e.hint,this.state,e,r);c&&!h5.hasColor(c)&&(c=this.styles.muted(c));let f=this.indent(e),p=await this.choiceMessage(e,r),h=()=>[this.margin[3],f+a+n,p,this.margin[1],c].filter(Boolean).join(\" \");return e.role===\"heading\"?h():e.disabled?(h5.hasColor(p)||(p=this.styles.disabled(p)),h()):(s&&(p=this.styles.em(p)),h())}async renderChoices(){if(this.state.loading===\"choices\")return this.styles.warning(\"Loading choices\");if(this.state.submitted)return\"\";let e=this.visible.map(async(n,c)=>await this.renderChoice(n,c)),r=await Promise.all(e);r.length||r.push(this.styles.danger(\"No matching choices\"));let s=this.margin[0]+r.join(`\n`),a;return this.options.choicesHeader&&(a=await this.resolve(this.options.choicesHeader,this.state)),[a,s].filter(Boolean).join(`\n`)}format(){return!this.state.submitted||this.state.cancelled?\"\":Array.isArray(this.selected)?this.selected.map(e=>this.styles.primary(e.name)).join(\", \"):this.styles.primary(this.selected.name)}async render(){let{submitted:e,size:r}=this.state,s=\"\",a=await this.header(),n=await this.prefix(),c=await this.separator(),f=await this.message();this.options.promptLine!==!1&&(s=[n,f,c,\"\"].join(\" \"),this.state.prompt=s);let p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();p&&(s+=p),h&&!s.includes(h)&&(s+=\" \"+h),e&&!p&&!E.trim()&&this.multiple&&this.emptyError!=null&&(s+=this.styles.danger(this.emptyError)),this.clear(r),this.write([a,s,E,C].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};lme.exports=g5});var ume=_((sjt,cme)=>{\"use strict\";var Zat=G0(),$at=(t,e)=>{let r=t.toLowerCase();return s=>{let n=s.toLowerCase().indexOf(r),c=e(s.slice(n,n+r.length));return n>=0?s.slice(0,n)+c+s.slice(n+r.length):s}},d5=class extends Zat{constructor(e){super(e),this.cursorShow()}moveCursor(e){this.state.cursor+=e}dispatch(e){return this.append(e)}space(e){return this.options.multiple?super.space(e):this.append(e)}append(e){let{cursor:r,input:s}=this.state;return this.input=s.slice(0,r)+e+s.slice(r),this.moveCursor(1),this.complete()}delete(){let{cursor:e,input:r}=this.state;return r?(this.input=r.slice(0,e-1)+r.slice(e),this.moveCursor(-1),this.complete()):this.alert()}deleteForward(){let{cursor:e,input:r}=this.state;return r[e]===void 0?this.alert():(this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.complete())}number(e){return this.append(e)}async complete(){this.completing=!0,this.choices=await this.suggest(this.input,this.state._choices),this.state.limit=void 0,this.index=Math.min(Math.max(this.visible.length-1,0),this.index),await this.render(),this.completing=!1}suggest(e=this.input,r=this.state._choices){if(typeof this.options.suggest==\"function\")return this.options.suggest.call(this,e,r);let s=e.toLowerCase();return r.filter(a=>a.message.toLowerCase().includes(s))}pointer(){return\"\"}format(){if(!this.focused)return this.input;if(this.options.multiple&&this.state.submitted)return this.selected.map(e=>this.styles.primary(e.message)).join(\", \");if(this.state.submitted){let e=this.value=this.input=this.focused.value;return this.styles.primary(e)}return this.input}async render(){if(this.state.status!==\"pending\")return super.render();let e=this.options.highlight?this.options.highlight.bind(this):this.styles.placeholder,r=$at(this.input,e),s=this.choices;this.choices=s.map(a=>({...a,message:r(a.message)})),await super.render(),this.choices=s}submit(){return this.options.multiple&&(this.value=this.selected.map(e=>e.name)),super.submit()}};cme.exports=d5});var y5=_((ojt,fme)=>{\"use strict\";var m5=Zo();fme.exports=(t,e={})=>{t.cursorHide();let{input:r=\"\",initial:s=\"\",pos:a,showCursor:n=!0,color:c}=e,f=c||t.styles.placeholder,p=m5.inverse(t.styles.primary),h=R=>p(t.styles.black(R)),E=r,C=\" \",S=h(C);if(t.blink&&t.blink.off===!0&&(h=R=>R,S=\"\"),n&&a===0&&s===\"\"&&r===\"\")return h(C);if(n&&a===0&&(r===s||r===\"\"))return h(s[0])+f(s.slice(1));s=m5.isPrimitive(s)?`${s}`:\"\",r=m5.isPrimitive(r)?`${r}`:\"\";let P=s&&s.startsWith(r)&&s!==r,I=P?h(s[r.length]):S;if(a!==r.length&&n===!0&&(E=r.slice(0,a)+h(r[a])+r.slice(a+1),I=\"\"),n===!1&&(I=\"\"),P){let R=t.styles.unstyle(E+I);return E+I+f(s.slice(R.length))}return E+I}});var XR=_((ajt,Ame)=>{\"use strict\";var elt=Ju(),tlt=G0(),rlt=y5(),E5=class extends tlt{constructor(e){super({...e,multiple:!0}),this.type=\"form\",this.initial=this.options.initial,this.align=[this.options.align,\"right\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}async reset(e){return await super.reset(),e===!0&&(this._index=this.index),this.index=this._index,this.values={},this.choices.forEach(r=>r.reset&&r.reset()),this.render()}dispatch(e){return!!e&&this.append(e)}append(e){let r=this.focused;if(!r)return this.alert();let{cursor:s,input:a}=r;return r.value=r.input=a.slice(0,s)+e+a.slice(s),r.cursor++,this.render()}delete(){let e=this.focused;if(!e||e.cursor<=0)return this.alert();let{cursor:r,input:s}=e;return e.value=e.input=s.slice(0,r-1)+s.slice(r),e.cursor--,this.render()}deleteForward(){let e=this.focused;if(!e)return this.alert();let{cursor:r,input:s}=e;if(s[r]===void 0)return this.alert();let a=`${s}`.slice(0,r)+`${s}`.slice(r+1);return e.value=e.input=a,this.render()}right(){let e=this.focused;return e?e.cursor>=e.input.length?this.alert():(e.cursor++,this.render()):this.alert()}left(){let e=this.focused;return e?e.cursor<=0?this.alert():(e.cursor--,this.render()):this.alert()}space(e,r){return this.dispatch(e,r)}number(e,r){return this.dispatch(e,r)}next(){let e=this.focused;if(!e)return this.alert();let{initial:r,input:s}=e;return r&&r.startsWith(s)&&s!==r?(e.value=e.input=r,e.cursor=e.value.length,this.render()):super.next()}prev(){let e=this.focused;return e?e.cursor===0?super.prev():(e.value=e.input=\"\",e.cursor=0,this.render()):this.alert()}separator(){return\"\"}format(e){return this.state.submitted?\"\":super.format(e)}pointer(){return\"\"}indicator(e){return e.input?\"\\u29BF\":\"\\u2299\"}async choiceSeparator(e,r){let s=await this.resolve(e.separator,this.state,e,r)||\":\";return s?\" \"+this.styles.disabled(s):\"\"}async renderChoice(e,r){await this.onChoice(e,r);let{state:s,styles:a}=this,{cursor:n,initial:c=\"\",name:f,hint:p,input:h=\"\"}=e,{muted:E,submitted:C,primary:S,danger:P}=a,I=p,R=this.index===r,N=e.validate||(()=>!0),U=await this.choiceSeparator(e,r),W=e.message;this.align===\"right\"&&(W=W.padStart(this.longest+1,\" \")),this.align===\"left\"&&(W=W.padEnd(this.longest+1,\" \"));let ee=this.values[f]=h||c,ie=h?\"success\":\"dark\";await N.call(e,ee,this.state)!==!0&&(ie=\"danger\");let ue=a[ie],le=ue(await this.indicator(e,r))+(e.pad||\"\"),me=this.indent(e),pe=()=>[me,le,W+U,h,I].filter(Boolean).join(\" \");if(s.submitted)return W=elt.unstyle(W),h=C(h),I=\"\",pe();if(e.format)h=await e.format.call(this,h,e,r);else{let Be=this.styles.muted;h=rlt(this,{input:h,initial:c,pos:n,showCursor:R,color:Be})}return this.isValue(h)||(h=this.styles.muted(this.symbols.ellipsis)),e.result&&(this.values[f]=await e.result.call(this,ee,e,r)),R&&(W=S(W)),e.error?h+=(h?\" \":\"\")+P(e.error.trim()):e.hint&&(h+=(h?\" \":\"\")+E(e.hint.trim())),pe()}async submit(){return this.value=this.values,super.base.submit.call(this)}};Ame.exports=E5});var I5=_((ljt,hme)=>{\"use strict\";var nlt=XR(),ilt=()=>{throw new Error(\"expected prompt to have a custom authenticate method\")},pme=(t=ilt)=>{class e extends nlt{constructor(s){super(s)}async submit(){this.value=await t.call(this,this.values,this.state),super.base.submit.call(this)}static create(s){return pme(s)}}return e};hme.exports=pme()});var mme=_((cjt,dme)=>{\"use strict\";var slt=I5();function olt(t,e){return t.username===this.options.username&&t.password===this.options.password}var gme=(t=olt)=>{let e=[{name:\"username\",message:\"username\"},{name:\"password\",message:\"password\",format(s){return this.options.showPassword?s:(this.state.submitted?this.styles.primary:this.styles.muted)(this.symbols.asterisk.repeat(s.length))}}];class r extends slt.create(t){constructor(a){super({...a,choices:e})}static create(a){return gme(a)}}return r};dme.exports=gme()});var ZR=_((ujt,yme)=>{\"use strict\";var alt=nC(),{isPrimitive:llt,hasColor:clt}=Zo(),C5=class extends alt{constructor(e){super(e),this.cursorHide()}async initialize(){let e=await this.resolve(this.initial,this.state);this.input=await this.cast(e),await super.initialize()}dispatch(e){return this.isValue(e)?(this.input=e,this.submit()):this.alert()}format(e){let{styles:r,state:s}=this;return s.submitted?r.success(e):r.primary(e)}cast(e){return this.isTrue(e)}isTrue(e){return/^[ty1]/i.test(e)}isFalse(e){return/^[fn0]/i.test(e)}isValue(e){return llt(e)&&(this.isTrue(e)||this.isFalse(e))}async hint(){if(this.state.status===\"pending\"){let e=await this.element(\"hint\");return clt(e)?e:this.styles.muted(e)}}async render(){let{input:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=this.styles.muted(this.default),f=[s,n,c,a].filter(Boolean).join(\" \");this.state.prompt=f;let p=await this.header(),h=this.value=this.cast(e),E=await this.format(h),C=await this.error()||await this.hint(),S=await this.footer();C&&!f.includes(C)&&(E+=\" \"+C),f+=\" \"+E,this.clear(r),this.write([p,f,S].filter(Boolean).join(`\n`)),this.restore()}set value(e){super.value=e}get value(){return this.cast(super.value)}};yme.exports=C5});var Ime=_((fjt,Eme)=>{\"use strict\";var ult=ZR(),w5=class extends ult{constructor(e){super(e),this.default=this.options.default||(this.initial?\"(Y/n)\":\"(y/N)\")}};Eme.exports=w5});var wme=_((Ajt,Cme)=>{\"use strict\";var flt=G0(),Alt=XR(),iC=Alt.prototype,B5=class extends flt{constructor(e){super({...e,multiple:!0}),this.align=[this.options.align,\"left\"].find(r=>r!=null),this.emptyError=\"\",this.values={}}dispatch(e,r){let s=this.focused,a=s.parent||{};return!s.editable&&!a.editable&&(e===\"a\"||e===\"i\")?super[e]():iC.dispatch.call(this,e,r)}append(e,r){return iC.append.call(this,e,r)}delete(e,r){return iC.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?iC.next.call(this):super.next()}prev(){return this.focused.editable?iC.prev.call(this):super.prev()}async indicator(e,r){let s=e.indicator||\"\",a=e.editable?s:super.indicator(e,r);return await this.resolve(a,this.state,e,r)||\"\"}indent(e){return e.role===\"heading\"?\"\":e.editable?\" \":\"  \"}async renderChoice(e,r){return e.indent=\"\",e.editable?iC.renderChoice.call(this,e,r):super.renderChoice(e,r)}error(){return\"\"}footer(){return this.state.error}async validate(){let e=!0;for(let r of this.choices){if(typeof r.validate!=\"function\"||r.role===\"heading\")continue;let s=r.parent?this.value[r.parent.name]:this.value;if(r.editable?s=r.value===r.name?r.initial||\"\":r.value:this.isDisabled(r)||(s=r.enabled===!0),e=await r.validate(s,this.state),e!==!0)break}return e!==!0&&(this.state.error=typeof e==\"string\"?e:\"Invalid Input\"),e}submit(){if(this.focused.newChoice===!0)return super.submit();if(this.choices.some(e=>e.newChoice))return this.alert();this.value={};for(let e of this.choices){let r=e.parent?this.value[e.parent.name]:this.value;if(e.role===\"heading\"){this.value[e.name]={};continue}e.editable?r[e.name]=e.value===e.name?e.initial||\"\":e.value:this.isDisabled(e)||(r[e.name]=e.enabled===!0)}return this.base.submit.call(this)}};Cme.exports=B5});var vm=_((pjt,Bme)=>{\"use strict\";var plt=nC(),hlt=y5(),{isPrimitive:glt}=Zo(),v5=class extends plt{constructor(e){super(e),this.initial=glt(this.initial)?String(this.initial):\"\",this.initial&&this.cursorHide(),this.state.prevCursor=0,this.state.clipboard=[]}async keypress(e,r={}){let s=this.state.prevKeypress;return this.state.prevKeypress=r,this.options.multiline===!0&&r.name===\"return\"&&(!s||s.name!==\"return\")?this.append(`\n`,r):super.keypress(e,r)}moveCursor(e){this.cursor+=e}reset(){return this.input=this.value=\"\",this.cursor=0,this.render()}dispatch(e,r){if(!e||r.ctrl||r.code)return this.alert();this.append(e)}append(e){let{cursor:r,input:s}=this.state;this.input=`${s}`.slice(0,r)+e+`${s}`.slice(r),this.moveCursor(String(e).length),this.render()}insert(e){this.append(e)}delete(){let{cursor:e,input:r}=this.state;if(e<=0)return this.alert();this.input=`${r}`.slice(0,e-1)+`${r}`.slice(e),this.moveCursor(-1),this.render()}deleteForward(){let{cursor:e,input:r}=this.state;if(r[e]===void 0)return this.alert();this.input=`${r}`.slice(0,e)+`${r}`.slice(e+1),this.render()}cutForward(){let e=this.cursor;if(this.input.length<=e)return this.alert();this.state.clipboard.push(this.input.slice(e)),this.input=this.input.slice(0,e),this.render()}cutLeft(){let e=this.cursor;if(e===0)return this.alert();let r=this.input.slice(0,e),s=this.input.slice(e),a=r.split(\" \");this.state.clipboard.push(a.pop()),this.input=a.join(\" \"),this.cursor=this.input.length,this.input+=s,this.render()}paste(){if(!this.state.clipboard.length)return this.alert();this.insert(this.state.clipboard.pop()),this.render()}toggleCursor(){this.state.prevCursor?(this.cursor=this.state.prevCursor,this.state.prevCursor=0):(this.state.prevCursor=this.cursor,this.cursor=0),this.render()}first(){this.cursor=0,this.render()}last(){this.cursor=this.input.length-1,this.render()}next(){let e=this.initial!=null?String(this.initial):\"\";if(!e||!e.startsWith(this.input))return this.alert();this.input=this.initial,this.cursor=this.initial.length,this.render()}prev(){if(!this.input)return this.alert();this.reset()}backward(){return this.left()}forward(){return this.right()}right(){return this.cursor>=this.input.length?this.alert():(this.moveCursor(1),this.render())}left(){return this.cursor<=0?this.alert():(this.moveCursor(-1),this.render())}isValue(e){return!!e}async format(e=this.value){let r=await this.resolve(this.initial,this.state);return this.state.submitted?this.styles.submitted(e||r):hlt(this,{input:e,initial:r,pos:this.cursor})}async render(){let e=this.state.size,r=await this.prefix(),s=await this.separator(),a=await this.message(),n=[r,a,s].filter(Boolean).join(\" \");this.state.prompt=n;let c=await this.header(),f=await this.format(),p=await this.error()||await this.hint(),h=await this.footer();p&&!f.includes(p)&&(f+=\" \"+p),n+=\" \"+f,this.clear(e),this.write([c,n,h].filter(Boolean).join(`\n`)),this.restore()}};Bme.exports=v5});var Sme=_((hjt,vme)=>{\"use strict\";var dlt=t=>t.filter((e,r)=>t.lastIndexOf(e)===r),$R=t=>dlt(t).filter(Boolean);vme.exports=(t,e={},r=\"\")=>{let{past:s=[],present:a=\"\"}=e,n,c;switch(t){case\"prev\":case\"undo\":return n=s.slice(0,s.length-1),c=s[s.length-1]||\"\",{past:$R([r,...n]),present:c};case\"next\":case\"redo\":return n=s.slice(1),c=s[0]||\"\",{past:$R([...n,r]),present:c};case\"save\":return{past:$R([...s,r]),present:\"\"};case\"remove\":return c=$R(s.filter(f=>f!==r)),a=\"\",c.length&&(a=c.pop()),{past:c,present:a};default:throw new Error(`Invalid action: \"${t}\"`)}}});var D5=_((gjt,bme)=>{\"use strict\";var mlt=vm(),Dme=Sme(),S5=class extends mlt{constructor(e){super(e);let r=this.options.history;if(r&&r.store){let s=r.values||this.initial;this.autosave=!!r.autosave,this.store=r.store,this.data=this.store.get(\"values\")||{past:[],present:s},this.initial=this.data.present||this.data.past[this.data.past.length-1]}}completion(e){return this.store?(this.data=Dme(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=Dme(\"save\",this.data,this.input),this.store.set(\"values\",this.data))}submit(){return this.store&&this.autosave===!0&&this.save(),super.submit()}};bme.exports=S5});var xme=_((djt,Pme)=>{\"use strict\";var ylt=vm(),b5=class extends ylt{format(){return\"\"}};Pme.exports=b5});var Qme=_((mjt,kme)=>{\"use strict\";var Elt=vm(),P5=class extends Elt{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()}};kme.exports=P5});var Rme=_((yjt,Tme)=>{\"use strict\";var Ilt=G0(),x5=class extends Ilt{constructor(e){super({...e,multiple:!0})}};Tme.exports=x5});var Q5=_((Ejt,Fme)=>{\"use strict\";var Clt=vm(),k5=class extends Clt{constructor(e={}){super({style:\"number\",...e}),this.min=this.isValue(e.min)?this.toNumber(e.min):-1/0,this.max=this.isValue(e.max)?this.toNumber(e.max):1/0,this.delay=e.delay!=null?e.delay:1e3,this.float=e.float!==!1,this.round=e.round===!0||e.float===!1,this.major=e.major||10,this.minor=e.minor||1,this.initial=e.initial!=null?e.initial:\"\",this.input=String(this.initial),this.cursor=this.input.length,this.cursorShow()}append(e){return!/[-+.]/.test(e)||e===\".\"&&this.input.includes(\".\")?this.alert(\"invalid number\"):super.append(e)}number(e){return super.append(e)}next(){return this.input&&this.input!==this.initial?this.alert():this.isValue(this.initial)?(this.input=this.initial,this.cursor=String(this.initial).length,this.render()):this.alert()}up(e){let r=e||this.minor,s=this.toNumber(this.input);return s>this.max+r?this.alert():(this.input=`${s+r}`,this.render())}down(e){let r=e||this.minor,s=this.toNumber(this.input);return s<this.min-r?this.alert():(this.input=`${s-r}`,this.render())}shiftDown(){return this.down(this.major)}shiftUp(){return this.up(this.major)}format(e=this.input){return typeof this.options.format==\"function\"?this.options.format.call(this,e):this.styles.info(e)}toNumber(e=\"\"){return this.float?+e:Math.round(+e)}isValue(e){return/^[-+]?[0-9]+((\\.)|(\\.[0-9]+))?$/.test(e)}submit(){let e=[this.input,this.initial].find(r=>this.isValue(r));return this.value=this.toNumber(e||0),super.submit()}};Fme.exports=k5});var Ome=_((Ijt,Nme)=>{Nme.exports=Q5()});var Mme=_((Cjt,Lme)=>{\"use strict\";var wlt=vm(),T5=class extends wlt{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)):\"\"}};Lme.exports=T5});var Hme=_((wjt,_me)=>{\"use strict\";var Blt=Ju(),vlt=Wv(),Ume=Zo(),R5=class extends vlt{constructor(e={}){super(e),this.widths=[].concat(e.messageWidth||50),this.align=[].concat(e.align||\"left\"),this.linebreak=e.linebreak||!1,this.edgeLength=e.edgeLength||3,this.newline=e.newline||`\n   `;let r=e.startNumber||1;typeof this.scale==\"number\"&&(this.scaleKey=!1,this.scale=Array(this.scale).fill(0).map((s,a)=>({name:a+r})))}async reset(){return this.tableized=!1,await super.reset(),this.render()}tableize(){if(this.tableized===!0)return;this.tableized=!0;let e=0;for(let r of this.choices){e=Math.max(e,r.message.length),r.scaleIndex=r.initial||2,r.scale=[];for(let s=0;s<this.scale.length;s++)r.scale.push({index:s})}this.widths[0]=Math.min(this.widths[0],e+3)}async dispatch(e,r){if(this.multiple)return this[r.name]?await this[r.name](e,r):await super.dispatch(e,r);this.alert()}heading(e,r,s){return this.styles.strong(e)}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIndex>=this.scale.length-1?this.alert():(e.scaleIndex++,this.render())}left(){let e=this.focused;return e.scaleIndex<=0?this.alert():(e.scaleIndex--,this.render())}indent(){return\"\"}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.index)).join(\", \"):\"\"}pointer(){return\"\"}renderScaleKey(){return this.scaleKey===!1||this.state.submitted?\"\":[\"\",...this.scale.map(s=>`   ${s.name} - ${s.message}`)].map(s=>this.styles.muted(s)).join(`\n`)}renderScaleHeading(e){let r=this.scale.map(p=>p.name);typeof this.options.renderScaleHeading==\"function\"&&(r=this.options.renderScaleHeading.call(this,e));let s=this.scaleLength-r.join(\"\").length,a=Math.round(s/(r.length-1)),c=r.map(p=>this.styles.strong(p)).join(\" \".repeat(a)),f=\" \".repeat(this.widths[0]);return this.margin[3]+f+this.margin[1]+c}scaleIndicator(e,r,s){if(typeof this.options.scaleIndicator==\"function\")return this.options.scaleIndicator.call(this,e,r,s);let a=e.scaleIndex===r.index;return r.disabled?this.styles.hint(this.symbols.radio.disabled):a?this.styles.success(this.symbols.radio.on):this.symbols.radio.off}renderScale(e,r){let s=e.scale.map(n=>this.scaleIndicator(e,n,r)),a=this.term===\"Hyper\"?\"\":\" \";return s.join(a+this.symbols.line.repeat(this.edgeLength))}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=await this.pointer(e,r),n=await e.hint;n&&!Ume.hasColor(n)&&(n=this.styles.muted(n));let c=I=>this.margin[3]+I.replace(/\\s+$/,\"\").padEnd(this.widths[0],\" \"),f=this.newline,p=this.indent(e),h=await this.resolve(e.message,this.state,e,r),E=await this.renderScale(e,r),C=this.margin[1]+this.margin[3];this.scaleLength=Blt.unstyle(E).length,this.widths[0]=Math.min(this.widths[0],this.width-this.scaleLength-C.length);let P=Ume.wordWrap(h,{width:this.widths[0],newline:f}).split(`\n`).map(I=>c(I)+this.margin[1]);return s&&(E=this.styles.info(E),P=P.map(I=>this.styles.info(I))),P[0]+=E,this.linebreak&&P.push(\"\"),[p+a,P.join(`\n`)].filter(Boolean)}async renderChoices(){if(this.state.submitted)return\"\";this.tableize();let e=this.visible.map(async(a,n)=>await this.renderChoice(a,n)),r=await Promise.all(e),s=await this.renderScaleHeading();return this.margin[0]+[s,...r.map(a=>a.join(\" \"))].join(`\n`)}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=\"\";this.options.promptLine!==!1&&(c=[s,n,a,\"\"].join(\" \"),this.state.prompt=c);let f=await this.header(),p=await this.format(),h=await this.renderScaleKey(),E=await this.error()||await this.hint(),C=await this.renderChoices(),S=await this.footer(),P=this.emptyError;p&&(c+=p),E&&!c.includes(E)&&(c+=\" \"+E),e&&!p&&!C.trim()&&this.multiple&&P!=null&&(c+=this.styles.danger(P)),this.clear(r),this.write([f,c,h,C,S].filter(Boolean).join(`\n`)),this.state.submitted||this.write(this.margin[2]),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIndex;return this.base.submit.call(this)}};_me.exports=R5});var qme=_((Bjt,Gme)=>{\"use strict\";var jme=Ju(),Slt=(t=\"\")=>typeof t==\"string\"?t.replace(/^['\"]|['\"]$/g,\"\"):\"\",N5=class{constructor(e){this.name=e.key,this.field=e.field||{},this.value=Slt(e.initial||this.field.initial||\"\"),this.message=e.message||this.name,this.cursor=0,this.input=\"\",this.lines=[]}},Dlt=async(t={},e={},r=s=>s)=>{let s=new Set,a=t.fields||[],n=t.template,c=[],f=[],p=[],h=1;typeof n==\"function\"&&(n=await n());let E=-1,C=()=>n[++E],S=()=>n[E+1],P=I=>{I.line=h,c.push(I)};for(P({type:\"bos\",value:\"\"});E<n.length-1;){let I=C();if(/^[^\\S\\n ]$/.test(I)){P({type:\"text\",value:I});continue}if(I===`\n`){P({type:\"newline\",value:I}),h++;continue}if(I===\"\\\\\"){I+=C(),P({type:\"text\",value:I});continue}if((I===\"$\"||I===\"#\"||I===\"{\")&&S()===\"{\"){let N=C();I+=N;let U={type:\"template\",open:I,inner:\"\",close:\"\",value:I},W;for(;W=C();){if(W===\"}\"){S()===\"}\"&&(W+=C()),U.value+=W,U.close=W;break}W===\":\"?(U.initial=\"\",U.key=U.inner):U.initial!==void 0&&(U.initial+=W),U.value+=W,U.inner+=W}U.template=U.open+(U.initial||U.inner)+U.close,U.key=U.key||U.inner,e.hasOwnProperty(U.key)&&(U.initial=e[U.key]),U=r(U),P(U),p.push(U.key),s.add(U.key);let ee=f.find(ie=>ie.name===U.key);U.field=a.find(ie=>ie.name===U.key),ee||(ee=new N5(U),f.push(ee)),ee.lines.push(U.line-1);continue}let R=c[c.length-1];R.type===\"text\"&&R.line===h?R.value+=I:P({type:\"text\",value:I})}return P({type:\"eos\",value:\"\"}),{input:n,tabstops:c,unique:s,keys:p,items:f}};Gme.exports=async t=>{let e=t.options,r=new Set(e.required===!0?[]:e.required||[]),s={...e.values,...e.initial},{tabstops:a,items:n,keys:c}=await Dlt(e,s),f=F5(\"result\",t,e),p=F5(\"format\",t,e),h=F5(\"validate\",t,e,!0),E=t.isValue.bind(t);return async(C={},S=!1)=>{let P=0;C.required=r,C.items=n,C.keys=c,C.output=\"\";let I=async(W,ee,ie,ue)=>{let le=await h(W,ee,ie,ue);return le===!1?\"Invalid field \"+ie.name:le};for(let W of a){let ee=W.value,ie=W.key;if(W.type!==\"template\"){ee&&(C.output+=ee);continue}if(W.type===\"template\"){let ue=n.find(Ce=>Ce.name===ie);e.required===!0&&C.required.add(ue.name);let le=[ue.input,C.values[ue.value],ue.value,ee].find(E),pe=(ue.field||{}).message||W.inner;if(S){let Ce=await I(C.values[ie],C,ue,P);if(Ce&&typeof Ce==\"string\"||Ce===!1){C.invalid.set(ie,Ce);continue}C.invalid.delete(ie);let g=await f(C.values[ie],C,ue,P);C.output+=jme.unstyle(g);continue}ue.placeholder=!1;let Be=ee;ee=await p(ee,C,ue,P),le!==ee?(C.values[ie]=le,ee=t.styles.typing(le),C.missing.delete(pe)):(C.values[ie]=void 0,le=`<${pe}>`,ee=t.styles.primary(le),ue.placeholder=!0,C.required.has(ie)&&C.missing.add(pe)),C.missing.has(pe)&&C.validating&&(ee=t.styles.warning(le)),C.invalid.has(ie)&&C.validating&&(ee=t.styles.danger(le)),P===C.index&&(Be!==ee?ee=t.styles.underline(ee):ee=t.styles.heading(jme.unstyle(ee))),P++}ee&&(C.output+=ee)}let R=C.output.split(`\n`).map(W=>\" \"+W),N=n.length,U=0;for(let W of n)C.invalid.has(W.name)&&W.lines.forEach(ee=>{R[ee][0]===\" \"&&(R[ee]=C.styles.danger(C.symbols.bullet)+R[ee].slice(1))}),t.isValue(C.values[W.name])&&U++;return C.completed=(U/N*100).toFixed(0),C.output=R.join(`\n`),C.output}};function F5(t,e,r,s){return(a,n,c,f)=>typeof c.field[t]==\"function\"?c.field[t].call(e,a,n,c,f):[s,a].find(p=>e.isValue(p))}});var Yme=_((vjt,Wme)=>{\"use strict\";var blt=Ju(),Plt=qme(),xlt=nC(),O5=class extends xlt{constructor(e){super(e),this.cursorHide(),this.reset(!0)}async initialize(){this.interpolate=await Plt(this),await super.initialize()}async reset(e){this.state.keys=[],this.state.invalid=new Map,this.state.missing=new Set,this.state.completed=0,this.state.values={},e!==!0&&(await this.initialize(),await this.render())}moveCursor(e){let r=this.getItem();this.cursor+=e,r.cursor+=e}dispatch(e,r){if(!r.code&&!r.ctrl&&e!=null&&this.getItem()){this.append(e,r);return}this.alert()}append(e,r){let s=this.getItem(),a=s.input.slice(0,this.cursor),n=s.input.slice(this.cursor);this.input=s.input=`${a}${e}${n}`,this.moveCursor(1),this.render()}delete(){let e=this.getItem();if(this.cursor<=0||!e.input)return this.alert();let r=e.input.slice(this.cursor),s=e.input.slice(0,this.cursor-1);this.input=e.input=`${s}${r}`,this.moveCursor(-1),this.render()}increment(e){return e>=this.state.keys.length-1?0:e+1}decrement(e){return e<=0?this.state.keys.length-1:e-1}first(){this.state.index=0,this.render()}last(){this.state.index=this.state.keys.length-1,this.render()}right(){if(this.cursor>=this.input.length)return this.alert();this.moveCursor(1),this.render()}left(){if(this.cursor<=0)return this.alert();this.moveCursor(-1),this.render()}prev(){this.state.index=this.decrement(this.state.index),this.getItem(),this.render()}next(){this.state.index=this.increment(this.state.index),this.getItem(),this.render()}up(){this.prev()}down(){this.next()}format(e){let r=this.state.completed<100?this.styles.warning:this.styles.success;return this.state.submitted===!0&&this.state.completed!==100&&(r=this.styles.danger),r(`${this.state.completed}% completed`)}async render(){let{index:e,keys:r=[],submitted:s,size:a}=this.state,n=[this.options.newline,`\n`].find(W=>W!=null),c=await this.prefix(),f=await this.separator(),p=await this.message(),h=[c,p,f].filter(Boolean).join(\" \");this.state.prompt=h;let E=await this.header(),C=await this.error()||\"\",S=await this.hint()||\"\",P=s?\"\":await this.interpolate(this.state),I=this.state.key=r[e]||\"\",R=await this.format(I),N=await this.footer();R&&(h+=\" \"+R),S&&!R&&this.state.completed===0&&(h+=\" \"+S),this.clear(a);let U=[E,h,P,N,C.trim()];this.write(U.filter(Boolean).join(n)),this.restore()}getItem(e){let{items:r,keys:s,index:a}=this.state,n=r.find(c=>c.name===s[a]);return n&&n.input!=null&&(this.input=n.input,this.cursor=n.cursor),n}async submit(){typeof this.interpolate!=\"function\"&&await this.initialize(),await this.interpolate(this.state,!0);let{invalid:e,missing:r,output:s,values:a}=this.state;if(e.size){let f=\"\";for(let[p,h]of e)f+=`Invalid ${p}: ${h}\n`;return this.state.error=f,super.submit()}if(r.size)return this.state.error=\"Required: \"+[...r.keys()].join(\", \"),super.submit();let c=blt.unstyle(s).split(`\n`).map(f=>f.slice(1)).join(`\n`);return this.value={values:a,result:c},super.submit()}};Wme.exports=O5});var Jme=_((Sjt,Vme)=>{\"use strict\";var klt=\"(Use <shift>+<up/down> to sort)\",Qlt=G0(),L5=class extends Qlt{constructor(e){super({...e,reorder:!1,sort:!0,multiple:!0}),this.state.hint=[this.options.hint,klt].find(this.isValue.bind(this))}indicator(){return\"\"}async renderChoice(e,r){let s=await super.renderChoice(e,r),a=this.symbols.identicalTo+\" \",n=this.index===r&&this.sorting?this.styles.muted(a):\"  \";return this.options.drag===!1&&(n=\"\"),this.options.numbered===!0?n+`${r+1} - `+s:n+s}get selected(){return this.choices}submit(){return this.value=this.choices.map(e=>e.value),super.submit()}};Vme.exports=L5});var zme=_((Djt,Kme)=>{\"use strict\";var Tlt=Wv(),M5=class extends Tlt{constructor(e={}){if(super(e),this.emptyError=e.emptyError||\"No items were selected\",this.term=process.env.TERM_PROGRAM,!this.options.header){let r=[\"\",\"4 - Strongly Agree\",\"3 - Agree\",\"2 - Neutral\",\"1 - Disagree\",\"0 - Strongly Disagree\",\"\"];r=r.map(s=>this.styles.muted(s)),this.state.header=r.join(`\n   `)}}async toChoices(...e){if(this.createdScales)return!1;this.createdScales=!0;let r=await super.toChoices(...e);for(let s of r)s.scale=Rlt(5,this.options),s.scaleIdx=2;return r}dispatch(){this.alert()}space(){let e=this.focused,r=e.scale[e.scaleIdx],s=r.selected;return e.scale.forEach(a=>a.selected=!1),r.selected=!s,this.render()}indicator(){return\"\"}pointer(){return\"\"}separator(){return this.styles.muted(this.symbols.ellipsis)}right(){let e=this.focused;return e.scaleIdx>=e.scale.length-1?this.alert():(e.scaleIdx++,this.render())}left(){let e=this.focused;return e.scaleIdx<=0?this.alert():(e.scaleIdx--,this.render())}indent(){return\"   \"}async renderChoice(e,r){await this.onChoice(e,r);let s=this.index===r,a=this.term===\"Hyper\",n=a?9:8,c=a?\"\":\" \",f=this.symbols.line.repeat(n),p=\" \".repeat(n+(a?0:1)),h=ee=>(ee?this.styles.success(\"\\u25C9\"):\"\\u25EF\")+c,E=r+1+\".\",C=s?this.styles.heading:this.styles.noop,S=await this.resolve(e.message,this.state,e,r),P=this.indent(e),I=P+e.scale.map((ee,ie)=>h(ie===e.scaleIdx)).join(f),R=ee=>ee===e.scaleIdx?C(ee):ee,N=P+e.scale.map((ee,ie)=>R(ie)).join(p),U=()=>[E,S].filter(Boolean).join(\" \"),W=()=>[U(),I,N,\" \"].filter(Boolean).join(`\n`);return s&&(I=this.styles.cyan(I),N=this.styles.cyan(N)),W()}async renderChoices(){if(this.state.submitted)return\"\";let e=this.visible.map(async(s,a)=>await this.renderChoice(s,a)),r=await Promise.all(e);return r.length||r.push(this.styles.danger(\"No matching choices\")),r.join(`\n`)}format(){return this.state.submitted?this.choices.map(r=>this.styles.info(r.scaleIdx)).join(\", \"):\"\"}async render(){let{submitted:e,size:r}=this.state,s=await this.prefix(),a=await this.separator(),n=await this.message(),c=[s,n,a].filter(Boolean).join(\" \");this.state.prompt=c;let f=await this.header(),p=await this.format(),h=await this.error()||await this.hint(),E=await this.renderChoices(),C=await this.footer();(p||!h)&&(c+=\" \"+p),h&&!c.includes(h)&&(c+=\" \"+h),e&&!p&&!E&&this.multiple&&this.type!==\"form\"&&(c+=this.styles.danger(this.emptyError)),this.clear(r),this.write([c,f,E,C].filter(Boolean).join(`\n`)),this.restore()}submit(){this.value={};for(let e of this.choices)this.value[e.name]=e.scaleIdx;return this.base.submit.call(this)}};function Rlt(t,e={}){if(Array.isArray(e.scale))return e.scale.map(s=>({...s}));let r=[];for(let s=1;s<t+1;s++)r.push({i:s,selected:!1});return r}Kme.exports=M5});var Zme=_((bjt,Xme)=>{Xme.exports=D5()});var eye=_((Pjt,$me)=>{\"use strict\";var Flt=ZR(),U5=class extends Flt{async initialize(){await super.initialize(),this.value=this.initial=!!this.options.initial,this.disabled=this.options.disabled||\"no\",this.enabled=this.options.enabled||\"yes\",await this.render()}reset(){this.value=this.initial,this.render()}delete(){this.alert()}toggle(){this.value=!this.value,this.render()}enable(){if(this.value===!0)return this.alert();this.value=!0,this.render()}disable(){if(this.value===!1)return this.alert();this.value=!1,this.render()}up(){this.toggle()}down(){this.toggle()}right(){this.toggle()}left(){this.toggle()}next(){this.toggle()}prev(){this.toggle()}dispatch(e=\"\",r){switch(e.toLowerCase()){case\" \":return this.toggle();case\"1\":case\"y\":case\"t\":return this.enable();case\"0\":case\"n\":case\"f\":return this.disable();default:return this.alert()}}format(){let e=s=>this.styles.primary.underline(s);return[this.value?this.disabled:e(this.disabled),this.value?e(this.enabled):this.enabled].join(this.styles.muted(\" / \"))}async render(){let{size:e}=this.state,r=await this.header(),s=await this.prefix(),a=await this.separator(),n=await this.message(),c=await this.format(),f=await this.error()||await this.hint(),p=await this.footer(),h=[s,n,a,c].join(\" \");this.state.prompt=h,f&&!h.includes(f)&&(h+=\" \"+f),this.clear(e),this.write([r,h,p].filter(Boolean).join(`\n`)),this.write(this.margin[2]),this.restore()}};$me.exports=U5});var rye=_((xjt,tye)=>{\"use strict\";var Nlt=G0(),_5=class extends Nlt{constructor(e){if(super(e),typeof this.options.correctChoice!=\"number\"||this.options.correctChoice<0)throw new Error(\"Please specify the index of the correct answer from the list of choices\")}async toChoices(e,r){let s=await super.toChoices(e,r);if(s.length<2)throw new Error(\"Please give at least two choices to the user\");if(this.options.correctChoice>s.length)throw new Error(\"Please specify the index of the correct answer from the list of choices\");return s}check(e){return e.index===this.options.correctChoice}async result(e){return{selectedAnswer:e,correctAnswer:this.options.choices[this.options.correctChoice].value,correct:await this.check(this.state)}}};tye.exports=_5});var iye=_(H5=>{\"use strict\";var nye=Zo(),ks=(t,e)=>{nye.defineExport(H5,t,e),nye.defineExport(H5,t.toLowerCase(),e)};ks(\"AutoComplete\",()=>ume());ks(\"BasicAuth\",()=>mme());ks(\"Confirm\",()=>Ime());ks(\"Editable\",()=>wme());ks(\"Form\",()=>XR());ks(\"Input\",()=>D5());ks(\"Invisible\",()=>xme());ks(\"List\",()=>Qme());ks(\"MultiSelect\",()=>Rme());ks(\"Numeral\",()=>Ome());ks(\"Password\",()=>Mme());ks(\"Scale\",()=>Hme());ks(\"Select\",()=>G0());ks(\"Snippet\",()=>Yme());ks(\"Sort\",()=>Jme());ks(\"Survey\",()=>zme());ks(\"Text\",()=>Zme());ks(\"Toggle\",()=>eye());ks(\"Quiz\",()=>rye())});var oye=_((Qjt,sye)=>{sye.exports={ArrayPrompt:Wv(),AuthPrompt:I5(),BooleanPrompt:ZR(),NumberPrompt:Q5(),StringPrompt:vm()}});var Vv=_((Tjt,lye)=>{\"use strict\";var aye=Ie(\"assert\"),G5=Ie(\"events\"),q0=Zo(),zu=class extends G5{constructor(e,r){super(),this.options=q0.merge({},e),this.answers={...r}}register(e,r){if(q0.isObject(e)){for(let a of Object.keys(e))this.register(a,e[a]);return this}aye.equal(typeof r,\"function\",\"expected a function\");let s=e.toLowerCase();return r.prototype instanceof this.Prompt?this.prompts[s]=r:this.prompts[s]=r(this.Prompt,this),this}async prompt(e=[]){for(let r of[].concat(e))try{typeof r==\"function\"&&(r=await r.call(this)),await this.ask(q0.merge({},this.options,r))}catch(s){return Promise.reject(s)}return this.answers}async ask(e){typeof e==\"function\"&&(e=await e.call(this));let r=q0.merge({},this.options,e),{type:s,name:a}=e,{set:n,get:c}=q0;if(typeof s==\"function\"&&(s=await s.call(this,e,this.answers)),!s)return this.answers[a];aye(this.prompts[s],`Prompt \"${s}\" is not registered`);let f=new this.prompts[s](r),p=c(this.answers,a);f.state.answers=this.answers,f.enquirer=this,a&&f.on(\"submit\",E=>{this.emit(\"answer\",a,E,f),n(this.answers,a,E)});let h=f.emit.bind(f);return f.emit=(...E)=>(this.emit.call(this,...E),h(...E)),this.emit(\"prompt\",f,this),r.autofill&&p!=null?(f.value=f.input=p,r.autofill===\"show\"&&await f.submit()):p=f.value=await f.run(),p}use(e){return e.call(this,this),this}set Prompt(e){this._Prompt=e}get Prompt(){return this._Prompt||this.constructor.Prompt}get prompts(){return this.constructor.prompts}static set Prompt(e){this._Prompt=e}static get Prompt(){return this._Prompt||nC()}static get prompts(){return iye()}static get types(){return oye()}static get prompt(){let e=(r,...s)=>{let a=new this(...s),n=a.emit.bind(a);return a.emit=(...c)=>(e.emit(...c),n(...c)),a.prompt(r)};return q0.mixinEmitter(e,new G5),e}};q0.mixinEmitter(zu,new G5);var j5=zu.prompts;for(let t of Object.keys(j5)){let e=t.toLowerCase(),r=s=>new j5[t](s).run();zu.prompt[e]=r,zu[e]=r,zu[t]||Reflect.defineProperty(zu,t,{get:()=>j5[t]})}var Yv=t=>{q0.defineExport(zu,t,()=>zu.types[t])};Yv(\"ArrayPrompt\");Yv(\"AuthPrompt\");Yv(\"BooleanPrompt\");Yv(\"NumberPrompt\");Yv(\"StringPrompt\");lye.exports=zu});var dye=_((tGt,qlt)=>{qlt.exports={name:\"@yarnpkg/cli\",version:\"4.12.0\",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-catalog\":\"workspace:^\",\"@yarnpkg/plugin-compat\":\"workspace:^\",\"@yarnpkg/plugin-constraints\":\"workspace:^\",\"@yarnpkg/plugin-dlx\":\"workspace:^\",\"@yarnpkg/plugin-essentials\":\"workspace:^\",\"@yarnpkg/plugin-exec\":\"workspace:^\",\"@yarnpkg/plugin-file\":\"workspace:^\",\"@yarnpkg/plugin-git\":\"workspace:^\",\"@yarnpkg/plugin-github\":\"workspace:^\",\"@yarnpkg/plugin-http\":\"workspace:^\",\"@yarnpkg/plugin-init\":\"workspace:^\",\"@yarnpkg/plugin-interactive-tools\":\"workspace:^\",\"@yarnpkg/plugin-jsr\":\"workspace:^\",\"@yarnpkg/plugin-link\":\"workspace:^\",\"@yarnpkg/plugin-nm\":\"workspace:^\",\"@yarnpkg/plugin-npm\":\"workspace:^\",\"@yarnpkg/plugin-npm-cli\":\"workspace:^\",\"@yarnpkg/plugin-pack\":\"workspace:^\",\"@yarnpkg/plugin-patch\":\"workspace:^\",\"@yarnpkg/plugin-pnp\":\"workspace:^\",\"@yarnpkg/plugin-pnpm\":\"workspace:^\",\"@yarnpkg/plugin-stage\":\"workspace:^\",\"@yarnpkg/plugin-typescript\":\"workspace:^\",\"@yarnpkg/plugin-version\":\"workspace:^\",\"@yarnpkg/plugin-workspace-tools\":\"workspace:^\",\"@yarnpkg/shell\":\"workspace:^\",\"ci-info\":\"^4.0.0\",clipanion:\"^4.0.0-rc.2\",semver:\"^7.1.2\",tslib:\"^2.4.0\",typanion:\"^3.14.0\"},devDependencies:{\"@types/semver\":\"^7.1.0\",\"@yarnpkg/builder\":\"workspace:^\",\"@yarnpkg/monorepo\":\"workspace:^\",\"@yarnpkg/pnpify\":\"workspace:^\"},peerDependencies:{\"@yarnpkg/core\":\"workspace:^\"},scripts:{postpack:\"rm -rf lib\",prepack:'run build:compile \"$(pwd)\"',\"build:cli+hook\":\"run build:pnp:hook && builder build bundle\",\"build:cli\":\"builder build bundle\",\"run:cli\":\"builder run\",\"update-local\":\"run build:cli --no-git-hash && rsync -a --delete bundles/ bin/\"},publishConfig:{main:\"./lib/index.js\",bin:null,exports:{\".\":\"./lib/index.js\",\"./package.json\":\"./package.json\"}},files:[\"/lib/**/*\",\"!/lib/pluginConfiguration.*\",\"!/lib/cli.*\"],\"@yarnpkg/builder\":{bundles:{standard:[\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-catalog\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-jsr\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"]}},repository:{type:\"git\",url:\"git+https://github.com/yarnpkg/berry.git\",directory:\"packages/yarnpkg-cli\"},engines:{node:\">=18.12.0\"}}});var iq=_((R9t,Pye)=>{\"use strict\";Pye.exports=function(e,r){r===!0&&(r=0);var s=\"\";if(typeof e==\"string\")try{s=new URL(e).protocol}catch{}else e&&e.constructor===URL&&(s=e.protocol);var a=s.split(/\\:|\\+/).filter(Boolean);return typeof r==\"number\"?a[r]:a}});var kye=_((F9t,xye)=>{\"use strict\";var uct=iq();function fct(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=uct(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}xye.exports=fct});var Rye=_((N9t,Tye)=>{\"use strict\";var Act=kye();function pct(t){return t&&typeof t==\"object\"&&\"default\"in t?t:{default:t}}var hct=pct(Act),gct=\"text/plain\",dct=\"us-ascii\",Qye=(t,e)=>e.some(r=>r instanceof RegExp?r.test(t):r===t),mct=(t,{stripHash:e})=>{let r=/^data:(?<type>[^,]*?),(?<data>[^#]*?)(?:#(?<hash>.*))?$/.exec(t);if(!r)throw new Error(`Invalid URL: ${t}`);let{type:s,data:a,hash:n}=r.groups,c=s.split(\";\");n=e?\"\":n;let f=!1;c[c.length-1]===\"base64\"&&(c.pop(),f=!0);let p=(c.shift()||\"\").toLowerCase(),E=[...c.map(C=>{let[S,P=\"\"]=C.split(\"=\").map(I=>I.trim());return S===\"charset\"&&(P=P.toLowerCase(),P===dct)?\"\":`${S}${P?`=${P}`:\"\"}`}).filter(Boolean)];return f&&E.push(\"base64\"),(E.length>0||p&&p!==gct)&&E.unshift(p),`data:${E.join(\";\")},${f?a.trim():a}${n?`#${n}`:\"\"}`};function yct(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 mct(t,e);if(/^view-source:/i.test(t))throw new Error(\"`view-source:` is not supported as it is a non-standard protocol\");let r=t.startsWith(\"//\");!r&&/^\\.*\\//.test(t)||(t=t.replace(/^(?!(?:\\w+:)?\\/\\/)|^\\/\\//,e.defaultProtocol));let a=new URL(t);if(e.forceHttp&&e.forceHttps)throw new Error(\"The `forceHttp` and `forceHttps` options cannot be used together\");if(e.forceHttp&&a.protocol===\"https:\"&&(a.protocol=\"http:\"),e.forceHttps&&a.protocol===\"http:\"&&(a.protocol=\"https:\"),e.stripAuthentication&&(a.username=\"\",a.password=\"\"),e.stripHash?a.hash=\"\":e.stripTextFragment&&(a.hash=a.hash.replace(/#?:~:text.*?$/i,\"\")),a.pathname){let c=/\\b[a-z][a-z\\d+\\-.]{1,50}:\\/\\//g,f=0,p=\"\";for(;;){let E=c.exec(a.pathname);if(!E)break;let C=E[0],S=E.index,P=a.pathname.slice(f,S);p+=P.replace(/\\/{2,}/g,\"/\"),p+=C,f=S+C.length}let h=a.pathname.slice(f,a.pathname.length);p+=h.replace(/\\/{2,}/g,\"/\"),a.pathname=p}if(a.pathname)try{a.pathname=decodeURI(a.pathname)}catch{}if(e.removeDirectoryIndex===!0&&(e.removeDirectoryIndex=[/^index\\.[a-z]+$/]),Array.isArray(e.removeDirectoryIndex)&&e.removeDirectoryIndex.length>0){let c=a.pathname.split(\"/\"),f=c[c.length-1];Qye(f,e.removeDirectoryIndex)&&(c=c.slice(0,-1),a.pathname=c.slice(1).join(\"/\")+\"/\")}if(a.hostname&&(a.hostname=a.hostname.replace(/\\.$/,\"\"),e.stripWWW&&/^www\\.(?!www\\.)[a-z\\-\\d]{1,63}\\.[a-z.\\-\\d]{2,63}$/.test(a.hostname)&&(a.hostname=a.hostname.replace(/^www\\./,\"\"))),Array.isArray(e.removeQueryParameters))for(let c of[...a.searchParams.keys()])Qye(c,e.removeQueryParameters)&&a.searchParams.delete(c);if(e.removeQueryParameters===!0&&(a.search=\"\"),e.sortQueryParameters){a.searchParams.sort();try{a.search=decodeURIComponent(a.search)}catch{}}e.removeTrailingSlash&&(a.pathname=a.pathname.replace(/\\/$/,\"\"));let n=t;return t=a.toString(),!e.removeSingleSlash&&a.pathname===\"/\"&&!n.endsWith(\"/\")&&a.hash===\"\"&&(t=t.replace(/\\/$/,\"\")),(e.removeTrailingSlash||a.pathname===\"/\")&&a.hash===\"\"&&e.removeSingleSlash&&(t=t.replace(/\\/$/,\"\")),r&&!e.normalizeProtocol&&(t=t.replace(/^http:\\/\\//,\"//\")),e.stripProtocol&&(t=t.replace(/^(?:https?:)?\\/\\//,\"\")),t}var sq=(t,e=!1)=>{let r=/^(?:([a-z_][a-z0-9_-]{0,31})@|https?:\\/\\/)([\\w\\.\\-@]+)[\\/:]([\\~,\\.\\w,\\-,\\_,\\/]+?(?:\\.git|\\/)?)$/,s=n=>{let c=new Error(n);throw c.subject_url=t,c};(typeof t!=\"string\"||!t.trim())&&s(\"Invalid url.\"),t.length>sq.MAX_INPUT_LENGTH&&s(\"Input exceeds maximum length. If needed, change the value of parseUrl.MAX_INPUT_LENGTH.\"),e&&(typeof e!=\"object\"&&(e={stripHash:!1}),t=yct(t,e));let a=hct.default(t);if(a.parse_failed){let n=a.href.match(r);n?(a.protocols=[\"ssh\"],a.protocol=\"ssh\",a.resource=n[2],a.host=n[2],a.user=n[1],a.pathname=`/${n[3]}`,a.parse_failed=!1):s(\"URL parsing failed.\")}return a};sq.MAX_INPUT_LENGTH=2048;Tye.exports=sq});var Oye=_((O9t,Nye)=>{\"use strict\";var Ect=iq();function Fye(t){if(Array.isArray(t))return t.indexOf(\"ssh\")!==-1||t.indexOf(\"rsync\")!==-1;if(typeof t!=\"string\")return!1;var e=Ect(t);if(t=t.substring(t.indexOf(\"://\")+3),Fye(e))return!0;var r=new RegExp(\".([a-zA-Z\\\\d]+):(\\\\d+)/\");return!t.match(r)&&t.indexOf(\"@\")<t.indexOf(\":\")}Nye.exports=Fye});var Uye=_((L9t,Mye)=>{\"use strict\";var Ict=Rye(),Lye=Oye();function Cct(t){var e=Ict(t);return e.token=\"\",e.password===\"x-oauth-basic\"?e.token=e.user:e.user===\"x-token-auth\"&&(e.token=e.password),Lye(e.protocols)||e.protocols.length===0&&Lye(t)?e.protocol=\"ssh\":e.protocols.length?e.protocol=e.protocols[0]:(e.protocol=\"file\",e.protocols=[\"file\"]),e.href=e.href.replace(/\\/$/,\"\"),e}Mye.exports=Cct});var Hye=_((M9t,_ye)=>{\"use strict\";var wct=Uye();function oq(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=wct(t),s=r.resource.split(\".\"),a=null;switch(r.toString=function(N){return oq.stringify(this,N)},r.source=s.length>2?s.slice(1-s.length).join(\".\"):r.source=r.resource,r.git_suffix=/\\.git$/.test(r.pathname),r.name=decodeURIComponent((r.pathname||r.href).replace(/(^\\/)|(\\/$)/g,\"\").replace(/\\.git$/,\"\")),r.owner=decodeURIComponent(r.user),r.source){case\"git.cloudforge.com\":r.owner=r.user,r.organization=s[0],r.source=\"cloudforge.com\";break;case\"visualstudio.com\":if(r.resource===\"vs-ssh.visualstudio.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3],r.full_name=a[2]+\"/\"+a[3]);break}else{a=r.name.split(\"/\"),a.length===2?(r.owner=a[1],r.name=a[1],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name);break}case\"dev.azure.com\":case\"azure.com\":if(r.resource===\"ssh.dev.azure.com\"){a=r.name.split(\"/\"),a.length===4&&(r.organization=a[1],r.owner=a[2],r.name=a[3]);break}else{a=r.name.split(\"/\"),a.length===5?(r.organization=a[0],r.owner=a[1],r.name=a[4],r.full_name=\"_git/\"+r.name):a.length===3?(r.name=a[2],a[0]===\"DefaultCollection\"?(r.owner=a[2],r.organization=a[0],r.full_name=r.organization+\"/_git/\"+r.name):(r.owner=a[0],r.full_name=r.owner+\"/_git/\"+r.name)):a.length===4&&(r.organization=a[0],r.owner=a[1],r.name=a[3],r.full_name=r.organization+\"/\"+r.owner+\"/_git/\"+r.name),r.query&&r.query.path&&(r.filepath=r.query.path.replace(/^\\/+/g,\"\")),r.query&&r.query.version&&(r.ref=r.query.version.replace(/^GB/,\"\"));break}default:a=r.name.split(\"/\");var n=a.length-1;if(a.length>=2){var c=a.indexOf(\"-\",2),f=a.indexOf(\"blob\",2),p=a.indexOf(\"tree\",2),h=a.indexOf(\"commit\",2),E=a.indexOf(\"src\",2),C=a.indexOf(\"raw\",2),S=a.indexOf(\"edit\",2);n=c>0?c-1:f>0?f-1:p>0?p-1:h>0?h-1:E>0?E-1:C>0?C-1:S>0?S-1:n,r.owner=a.slice(0,n).join(\"/\"),r.name=a[n],h&&(r.commit=a[n+2])}r.ref=\"\",r.filepathtype=\"\",r.filepath=\"\";var P=a.length>n&&a[n+1]===\"-\"?n+1:n;a.length>P+2&&[\"raw\",\"src\",\"blob\",\"tree\",\"edit\"].indexOf(a[P+1])>=0&&(r.filepathtype=a[P+1],r.ref=a[P+2],a.length>P+3&&(r.filepath=a.slice(P+3).join(\"/\"))),r.organization=r.owner;break}r.full_name||(r.full_name=r.owner,r.name&&(r.full_name&&(r.full_name+=\"/\"),r.full_name+=r.name)),r.owner.startsWith(\"scm/\")&&(r.source=\"bitbucket-server\",r.owner=r.owner.replace(\"scm/\",\"\"),r.organization=r.owner,r.full_name=r.owner+\"/\"+r.name);var I=/(projects|users)\\/(.*?)\\/repos\\/(.*?)((\\/.*$)|$)/,R=I.exec(r.pathname);return R!=null&&(r.source=\"bitbucket-server\",R[1]===\"users\"?r.owner=\"~\"+R[2]:r.owner=R[2],r.organization=r.owner,r.name=R[3],a=R[4].split(\"/\"),a.length>1&&([\"raw\",\"browse\"].indexOf(a[1])>=0?(r.filepathtype=a[1],a.length>2&&(r.filepath=a.slice(2).join(\"/\"))):a[1]===\"commits\"&&a.length>2&&(r.commit=a[2])),r.full_name=r.owner+\"/\"+r.name,r.query.at?r.ref=r.query.at:r.ref=\"\"),r}oq.stringify=function(t,e){e=e||(t.protocols&&t.protocols.length?t.protocols.join(\"+\"):t.protocol);var r=t.port?\":\"+t.port:\"\",s=t.user||\"git\",a=t.git_suffix?\".git\":\"\";switch(e){case\"ssh\":return r?\"ssh://\"+s+\"@\"+t.resource+r+\"/\"+t.full_name+a:s+\"@\"+t.resource+\":\"+t.full_name+a;case\"git+ssh\":case\"ssh+git\":case\"ftp\":case\"ftps\":return e+\"://\"+s+\"@\"+t.resource+r+\"/\"+t.full_name+a;case\"http\":case\"https\":var n=t.token?Bct(t):t.user&&(t.protocols.includes(\"http\")||t.protocols.includes(\"https\"))?t.user+\"@\":\"\";return e+\"://\"+n+t.resource+r+\"/\"+vct(t)+a;default:return t.href}};function Bct(t){switch(t.source){case\"bitbucket.org\":return\"x-token-auth:\"+t.token+\"@\";default:return t.token+\"@\"}}function vct(t){switch(t.source){case\"bitbucket-server\":return\"scm/\"+t.full_name;default:return\"\"+t.full_name}}_ye.exports=oq});function jct(t,e){return e===1&&Hct.has(t[0])}function nS(t){let e=Array.isArray(t)?t:Mu(t);return e.map((s,a)=>Uct.test(s)?`[${s}]`:_ct.test(s)&&!jct(e,a)?`.${s}`:`[${JSON.stringify(s)}]`).join(\"\").replace(/^\\./,\"\")}function Gct(t,e){let r=[];if(e.methodName!==null&&r.push(he.pretty(t,e.methodName,he.Type.CODE)),e.file!==null){let s=[];s.push(he.pretty(t,e.file,he.Type.PATH)),e.line!==null&&(s.push(he.pretty(t,e.line,he.Type.NUMBER)),e.column!==null&&s.push(he.pretty(t,e.column,he.Type.NUMBER))),r.push(`(${s.join(he.pretty(t,\":\",\"grey\"))})`)}return r.join(\" \")}function iF(t,{manifestUpdates:e,reportedErrors:r},{fix:s}={}){let a=new Map,n=new Map,c=[...r.keys()].map(f=>[f,new Map]);for(let[f,p]of[...c,...e]){let h=r.get(f)?.map(P=>({text:P,fixable:!1}))??[],E=!1,C=t.getWorkspaceByCwd(f),S=C.manifest.exportTo({});for(let[P,I]of p){if(I.size>1){let R=[...I].map(([N,U])=>{let W=he.pretty(t.configuration,N,he.Type.INSPECT),ee=U.size>0?Gct(t.configuration,U.values().next().value):null;return ee!==null?`\n${W} at ${ee}`:`\n${W}`}).join(\"\");h.push({text:`Conflict detected in constraint targeting ${he.pretty(t.configuration,P,he.Type.CODE)}; conflicting values are:${R}`,fixable:!1})}else{let[[R]]=I,N=va(S,P);if(JSON.stringify(N)===JSON.stringify(R))continue;if(!s){let U=typeof N>\"u\"?`Missing field ${he.pretty(t.configuration,P,he.Type.CODE)}; expected ${he.pretty(t.configuration,R,he.Type.INSPECT)}`:typeof R>\"u\"?`Extraneous field ${he.pretty(t.configuration,P,he.Type.CODE)} currently set to ${he.pretty(t.configuration,N,he.Type.INSPECT)}`:`Invalid field ${he.pretty(t.configuration,P,he.Type.CODE)}; expected ${he.pretty(t.configuration,R,he.Type.INSPECT)}, found ${he.pretty(t.configuration,N,he.Type.INSPECT)}`;h.push({text:U,fixable:!0});continue}typeof R>\"u\"?A0(S,P):Jd(S,P,R),E=!0}E&&a.set(C,S)}h.length>0&&n.set(C,h)}return{changedWorkspaces:a,remainingErrors:n}}function rEe(t,{configuration:e}){let r={children:[]};for(let[s,a]of t){let n=[];for(let f of a){let p=f.text.split(/\\n/);f.fixable&&(p[0]=`${he.pretty(e,\"\\u2699\",\"gray\")} ${p[0]}`),n.push({value:he.tuple(he.Type.NO_HINT,p[0]),children:p.slice(1).map(h=>({value:he.tuple(he.Type.NO_HINT,h)}))})}let c={value:he.tuple(he.Type.LOCATOR,s.anchoredLocator),children:je.sortMap(n,f=>f.value[1])};r.children.push(c)}return r.children=je.sortMap(r.children,s=>s.value[1]),r}var WC,Uct,_ct,Hct,iS=Xe(()=>{Ge();ql();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 s=Object.hasOwn(e,r)?e[r]:void 0;if(typeof s>\"u\")continue;je.getArrayWithDefault(this.indexes[r],s).push(e)}return e}find(e){if(typeof e>\"u\")return this.items;let r=Object.entries(e);if(r.length===0)return this.items;let s=[],a;for(let[c,f]of r){let p=c,h=Object.hasOwn(this.indexes,p)?this.indexes[p]:void 0;if(typeof h>\"u\"){s.push([p,f]);continue}let E=new Set(h.get(f)??[]);if(E.size===0)return[];if(typeof a>\"u\")a=E;else for(let C of a)E.has(C)||a.delete(C);if(a.size===0)break}let n=[...a??[]];return s.length>0&&(n=n.filter(c=>{for(let[f,p]of s)if(!(typeof p<\"u\"?Object.hasOwn(c,f)&&c[f]===p:Object.hasOwn(c,f)===!1))return!1;return!0})),n}},Uct=/^[0-9]+$/,_ct=/^[a-zA-Z0-9_]+$/,Hct=new Set([\"scripts\",...Ut.allDependencies])});var nEe=_((_Yt,vq)=>{var qct;(function(t){var e=function(){return{\"append/2\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"L\")]),new t.type.Term(\"foldl\",[new t.type.Term(\"append\",[]),new t.type.Var(\"X\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"L\")]))],\"append/3\":[new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"X\"),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"append\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"append\",[new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"S\")]))],\"member/2\":[new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"_\")])]),null),new t.type.Rule(new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\"member\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]))],\"permutation/2\":[new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"permutation\",[new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"permutation\",[new t.type.Var(\"T\"),new t.type.Var(\"P\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"P\")]),new t.type.Term(\"append\",[new t.type.Var(\"X\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"Y\")]),new t.type.Var(\"S\")])])]))],\"maplist/2\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"X\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"Xs\")])]))],\"maplist/3\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\")])]))],\"maplist/4\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\")])]))],\"maplist/5\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\")])]))],\"maplist/6\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\")])]))],\"maplist/7\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\")])]))],\"maplist/8\":[new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"A\"),new t.type.Var(\"As\")]),new t.type.Term(\".\",[new t.type.Var(\"B\"),new t.type.Var(\"Bs\")]),new t.type.Term(\".\",[new t.type.Var(\"C\"),new t.type.Var(\"Cs\")]),new t.type.Term(\".\",[new t.type.Var(\"D\"),new t.type.Var(\"Ds\")]),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Es\")]),new t.type.Term(\".\",[new t.type.Var(\"F\"),new t.type.Var(\"Fs\")]),new t.type.Term(\".\",[new t.type.Var(\"G\"),new t.type.Var(\"Gs\")])]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P\"),new t.type.Var(\"A\"),new t.type.Var(\"B\"),new t.type.Var(\"C\"),new t.type.Var(\"D\"),new t.type.Var(\"E\"),new t.type.Var(\"F\"),new t.type.Var(\"G\")]),new t.type.Term(\"maplist\",[new t.type.Var(\"P\"),new t.type.Var(\"As\"),new t.type.Var(\"Bs\"),new t.type.Var(\"Cs\"),new t.type.Var(\"Ds\"),new t.type.Var(\"Es\"),new t.type.Var(\"Fs\"),new t.type.Var(\"Gs\")])]))],\"include/3\":[new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"A\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"A\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"F\"),new t.type.Var(\"B\")]),new t.type.Term(\",\",[new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"F\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"S\")])]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"L\"),new t.type.Var(\"S\")])]),new t.type.Term(\"include\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"S\")])])])])]))],\"exclude/3\":[new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Term(\"[]\",[])]),null),new t.type.Rule(new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"exclude\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"E\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"Q\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"R\"),new t.type.Var(\"Q\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"!\",[]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"E\")])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"E\")])])])])])])]))],\"foldl/4\":[new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"_\"),new t.type.Term(\"[]\",[]),new t.type.Var(\"I\"),new t.type.Var(\"I\")]),null),new t.type.Rule(new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Var(\"T\")]),new t.type.Var(\"I\"),new t.type.Var(\"R\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P\"),new t.type.Var(\"L\")]),new t.type.Term(\",\",[new t.type.Term(\"append\",[new t.type.Var(\"L\"),new t.type.Term(\".\",[new t.type.Var(\"I\"),new t.type.Term(\".\",[new t.type.Var(\"H\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])])])]),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"=..\",[new t.type.Var(\"P2\"),new t.type.Var(\"L2\")]),new t.type.Term(\",\",[new t.type.Term(\"call\",[new t.type.Var(\"P2\")]),new t.type.Term(\"foldl\",[new t.type.Var(\"P\"),new t.type.Var(\"T\"),new t.type.Var(\"X\"),new t.type.Var(\"R\")])])])])]))],\"select/3\":[new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\"select\",[new t.type.Var(\"E\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Ys\")]))],\"sum_list/2\":[new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(0,!1)]),null),new t.type.Rule(new t.type.Term(\"sum_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"sum_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"+\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"max_list/2\":[new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"max_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"max_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"min_list/2\":[new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"min_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"min_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\";\",[new t.type.Term(\",\",[new t.type.Term(\"=<\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")]),new t.type.Term(\",\",[new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"X\")]),new t.type.Term(\"!\",[])])]),new t.type.Term(\"=\",[new t.type.Var(\"S\"),new t.type.Var(\"Y\")])])]))],\"prod_list/2\":[new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\"[]\",[]),new t.type.Num(1,!1)]),null),new t.type.Rule(new t.type.Term(\"prod_list\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"S\")]),new t.type.Term(\",\",[new t.type.Term(\"prod_list\",[new t.type.Var(\"Xs\"),new t.type.Var(\"Y\")]),new t.type.Term(\"is\",[new t.type.Var(\"S\"),new t.type.Term(\"*\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\")])])]))],\"last/2\":[new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Term(\"[]\",[])]),new t.type.Var(\"X\")]),null),new t.type.Rule(new t.type.Term(\"last\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\")]),new t.type.Term(\"last\",[new t.type.Var(\"Xs\"),new t.type.Var(\"X\")]))],\"prefix/2\":[new t.type.Rule(new t.type.Term(\"prefix\",[new t.type.Var(\"Part\"),new t.type.Var(\"Whole\")]),new t.type.Term(\"append\",[new t.type.Var(\"Part\"),new t.type.Var(\"_\"),new t.type.Var(\"Whole\")]))],\"nth0/3\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/3\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"_\")]),new t.type.Term(\"!\",[])])])]))],\"nth0/4\":[new t.type.Rule(new t.type.Term(\"nth0\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">=\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(0,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth1/4\":[new t.type.Rule(new t.type.Term(\"nth1\",[new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\";\",[new t.type.Term(\"->\",[new t.type.Term(\"var\",[new t.type.Var(\"X\")]),new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")])]),new t.type.Term(\",\",[new t.type.Term(\">\",[new t.type.Var(\"X\"),new t.type.Num(0,!1)]),new t.type.Term(\",\",[new t.type.Term(\"nth\",[new t.type.Num(1,!1),new t.type.Var(\"X\"),new t.type.Var(\"Y\"),new t.type.Var(\"Z\"),new t.type.Var(\"W\")]),new t.type.Term(\"!\",[])])])]))],\"nth/5\":[new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"N\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),null),new t.type.Rule(new t.type.Term(\"nth\",[new t.type.Var(\"N\"),new t.type.Var(\"O\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Xs\")]),new t.type.Var(\"Y\"),new t.type.Term(\".\",[new t.type.Var(\"X\"),new t.type.Var(\"Ys\")])]),new t.type.Term(\",\",[new t.type.Term(\"is\",[new t.type.Var(\"M\"),new t.type.Term(\"+\",[new t.type.Var(\"N\"),new t.type.Num(1,!1)])]),new t.type.Term(\"nth\",[new t.type.Var(\"M\"),new t.type.Var(\"O\"),new t.type.Var(\"Xs\"),new t.type.Var(\"Y\"),new t.type.Var(\"Ys\")])]))],\"length/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(!t.type.is_variable(f)&&!t.type.is_integer(f))s.throw_error(t.error.type(\"integer\",f,n.indicator));else if(t.type.is_integer(f)&&f.value<0)s.throw_error(t.error.domain(\"not_less_than_zero\",f,n.indicator));else{var p=new t.type.Term(\"length\",[c,new t.type.Num(0,!1),f]);t.type.is_integer(f)&&(p=new t.type.Term(\",\",[p,new t.type.Term(\"!\",[])])),s.prepend([new t.type.State(a.goal.replace(p),a.substitution,a)])}},\"length/3\":[new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\"[]\",[]),new t.type.Var(\"N\"),new t.type.Var(\"N\")]),null),new t.type.Rule(new t.type.Term(\"length\",[new t.type.Term(\".\",[new t.type.Var(\"_\"),new t.type.Var(\"X\")]),new t.type.Var(\"A\"),new t.type.Var(\"N\")]),new t.type.Term(\",\",[new t.type.Term(\"succ\",[new t.type.Var(\"A\"),new t.type.Var(\"B\")]),new t.type.Term(\"length\",[new t.type.Var(\"X\"),new t.type.Var(\"B\"),new t.type.Var(\"N\")])]))],\"replicate/3\":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_integer(f))s.throw_error(t.error.type(\"integer\",f,n.indicator));else if(f.value<0)s.throw_error(t.error.domain(\"not_less_than_zero\",f,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=new t.type.Term(\"[]\"),E=0;E<f.value;E++)h=new t.type.Term(\".\",[c,h]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[h,p])),a.substitution,a)])}},\"sort/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else{for(var p=[],h=c;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))s.throw_error(t.error.type(\"list\",c,n.indicator));else{for(var E=p.sort(t.compare),C=E.length-1;C>0;C--)E[C].equals(E[C-1])&&E.splice(C,1);for(var S=new t.type.Term(\"[]\"),C=E.length-1;C>=0;C--)S=new t.type.Term(\".\",[E[C],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[S,f])),a.substitution,a)])}}},\"msort/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else{for(var p=[],h=c;h.indicator===\"./2\";)p.push(h.args[0]),h=h.args[1];if(t.type.is_variable(h))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(h))s.throw_error(t.error.type(\"list\",c,n.indicator));else{for(var E=p.sort(t.compare),C=new t.type.Term(\"[]\"),S=E.length-1;S>=0;S--)C=new t.type.Term(\".\",[E[S],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[C,f])),a.substitution,a)])}}},\"keysort/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else{for(var p=[],h,E=c;E.indicator===\"./2\";){if(h=E.args[0],t.type.is_variable(h)){s.throw_error(t.error.instantiation(n.indicator));return}else if(!t.type.is_term(h)||h.indicator!==\"-/2\"){s.throw_error(t.error.type(\"pair\",h,n.indicator));return}h.args[0].pair=h.args[1],p.push(h.args[0]),E=E.args[1]}if(t.type.is_variable(E))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_empty_list(E))s.throw_error(t.error.type(\"list\",c,n.indicator));else{for(var C=p.sort(t.compare),S=new t.type.Term(\"[]\"),P=C.length-1;P>=0;P--)S=new t.type.Term(\".\",[new t.type.Term(\"-\",[C[P],C[P].pair]),S]),delete C[P].pair;s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[S,f])),a.substitution,a)])}}},\"take/3\":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type(\"integer\",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator===\"./2\";)E.push(C.args[0]),C=C.args[1],h--;if(h===0){for(var S=new t.type.Term(\"[]\"),h=E.length-1;h>=0;h--)S=new t.type.Term(\".\",[E[h],S]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[S,p])),a.substitution,a)])}}},\"drop/3\":function(s,a,n){var c=n.args[0],f=n.args[1],p=n.args[2];if(t.type.is_variable(f)||t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else if(!t.type.is_integer(c))s.throw_error(t.error.type(\"integer\",c,n.indicator));else if(!t.type.is_variable(p)&&!t.type.is_list(p))s.throw_error(t.error.type(\"list\",p,n.indicator));else{for(var h=c.value,E=[],C=f;h>0&&C.indicator===\"./2\";)E.push(C.args[0]),C=C.args[1],h--;h===0&&s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[C,p])),a.substitution,a)])}},\"reverse/2\":function(s,a,n){var c=n.args[0],f=n.args[1],p=t.type.is_instantiated_list(c),h=t.type.is_instantiated_list(f);if(t.type.is_variable(c)&&t.type.is_variable(f))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_variable(c)&&!t.type.is_fully_list(c))s.throw_error(t.error.type(\"list\",c,n.indicator));else if(!t.type.is_variable(f)&&!t.type.is_fully_list(f))s.throw_error(t.error.type(\"list\",f,n.indicator));else if(!p&&!h)s.throw_error(t.error.instantiation(n.indicator));else{for(var E=p?c:f,C=new t.type.Term(\"[]\",[]);E.indicator===\"./2\";)C=new t.type.Term(\".\",[E.args[0],C]),E=E.args[1];s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[C,p?f:c])),a.substitution,a)])}},\"list_to_set/2\":function(s,a,n){var c=n.args[0],f=n.args[1];if(t.type.is_variable(c))s.throw_error(t.error.instantiation(n.indicator));else{for(var p=c,h=[];p.indicator===\"./2\";)h.push(p.args[0]),p=p.args[1];if(t.type.is_variable(p))s.throw_error(t.error.instantiation(n.indicator));else if(!t.type.is_term(p)||p.indicator!==\"[]/0\")s.throw_error(t.error.type(\"list\",c,n.indicator));else{for(var E=[],C=new t.type.Term(\"[]\",[]),S,P=0;P<h.length;P++){S=!1;for(var I=0;I<E.length&&!S;I++)S=t.compare(h[P],E[I])===0;S||E.push(h[P])}for(P=E.length-1;P>=0;P--)C=new t.type.Term(\".\",[E[P],C]);s.prepend([new t.type.State(a.goal.replace(new t.type.Term(\"=\",[f,C])),a.substitution,a)])}}}}},r=[\"append/2\",\"append/3\",\"member/2\",\"permutation/2\",\"maplist/2\",\"maplist/3\",\"maplist/4\",\"maplist/5\",\"maplist/6\",\"maplist/7\",\"maplist/8\",\"include/3\",\"exclude/3\",\"foldl/4\",\"sum_list/2\",\"max_list/2\",\"min_list/2\",\"prod_list/2\",\"last/2\",\"prefix/2\",\"nth0/3\",\"nth1/3\",\"nth0/4\",\"nth1/4\",\"length/2\",\"replicate/3\",\"select/3\",\"sort/2\",\"msort/2\",\"keysort/2\",\"take/3\",\"drop/3\",\"reverse/2\",\"list_to_set/2\"];typeof vq<\"u\"?vq.exports=function(s){t=s,new t.type.Module(\"lists\",e(),r)}:new t.type.Module(\"lists\",e(),r)})(qct)});var yEe=_($r=>{\"use strict\";var bm=process.platform===\"win32\",Sq=\"aes-256-cbc\",Wct=\"sha256\",oEe=\"The current environment doesn't support interactive reading from TTY.\",si=Ie(\"fs\"),iEe=process.binding(\"tty_wrap\").TTY,bq=Ie(\"child_process\"),V0=Ie(\"path\"),Pq={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},Xp=\"none\",Zu,VC,sEe=!1,Y0,oF,Dq,Yct=0,Rq=\"\",Dm=[],aF,aEe=!1,xq=!1,sS=!1;function lEe(t){function e(r){return r.replace(/[^\\w\\u0080-\\uFFFF]/g,function(s){return\"#\"+s.charCodeAt(0)+\";\"})}return oF.concat(function(r){var s=[];return Object.keys(r).forEach(function(a){r[a]===\"boolean\"?t[a]&&s.push(\"--\"+a):r[a]===\"string\"&&t[a]&&s.push(\"--\"+a,e(t[a]))}),s}({display:\"string\",displayOnly:\"boolean\",keyIn:\"boolean\",hideEchoBack:\"boolean\",mask:\"string\",limit:\"string\",caseSensitive:\"boolean\"}))}function Vct(t,e){function r(U){var W,ee=\"\",ie;for(Dq=Dq||Ie(\"os\").tmpdir();;){W=V0.join(Dq,U+ee);try{ie=si.openSync(W,\"wx\")}catch(ue){if(ue.code===\"EEXIST\"){ee++;continue}else throw ue}si.closeSync(ie);break}return W}var s,a,n,c={},f,p,h=r(\"readline-sync.stdout\"),E=r(\"readline-sync.stderr\"),C=r(\"readline-sync.exit\"),S=r(\"readline-sync.done\"),P=Ie(\"crypto\"),I,R,N;I=P.createHash(Wct),I.update(\"\"+process.pid+Yct+++Math.random()),N=I.digest(\"hex\"),R=P.createDecipher(Sq,N),s=lEe(t),bm?(a=process.env.ComSpec||\"cmd.exe\",process.env.Q='\"',n=[\"/V:ON\",\"/S\",\"/C\",\"(%Q%\"+a+\"%Q% /V:ON /S /C %Q%%Q%\"+Y0+\"%Q%\"+s.map(function(U){return\" %Q%\"+U+\"%Q%\"}).join(\"\")+\" & (echo !ERRORLEVEL!)>%Q%\"+C+\"%Q%%Q%) 2>%Q%\"+E+\"%Q% |%Q%\"+process.execPath+\"%Q% %Q%\"+__dirname+\"\\\\encrypt.js%Q% %Q%\"+Sq+\"%Q% %Q%\"+N+\"%Q% >%Q%\"+h+\"%Q% & (echo 1)>%Q%\"+S+\"%Q%\"]):(a=\"/bin/sh\",n=[\"-c\",'(\"'+Y0+'\"'+s.map(function(U){return\" '\"+U.replace(/'/g,\"'\\\\''\")+\"'\"}).join(\"\")+'; echo $?>\"'+C+'\") 2>\"'+E+'\" |\"'+process.execPath+'\" \"'+__dirname+'/encrypt.js\" \"'+Sq+'\" \"'+N+'\" >\"'+h+'\"; echo 1 >\"'+S+'\"']),sS&&sS(\"_execFileSync\",s);try{bq.spawn(a,n,e)}catch(U){c.error=new Error(U.message),c.error.method=\"_execFileSync - spawn\",c.error.program=a,c.error.args=n}for(;si.readFileSync(S,{encoding:t.encoding}).trim()!==\"1\";);return(f=si.readFileSync(C,{encoding:t.encoding}).trim())===\"0\"?c.input=R.update(si.readFileSync(h,{encoding:\"binary\"}),\"hex\",t.encoding)+R.final(t.encoding):(p=si.readFileSync(E,{encoding:t.encoding}).trim(),c.error=new Error(oEe+(p?`\n`+p:\"\")),c.error.method=\"_execFileSync\",c.error.program=a,c.error.args=n,c.error.extMessage=p,c.error.exitCode=+f),si.unlinkSync(h),si.unlinkSync(E),si.unlinkSync(C),si.unlinkSync(S),c}function Jct(t){var e,r={},s,a={env:process.env,encoding:t.encoding};if(Y0||(bm?process.env.PSModulePath?(Y0=\"powershell.exe\",oF=[\"-ExecutionPolicy\",\"Bypass\",\"-File\",__dirname+\"\\\\read.ps1\"]):(Y0=\"cscript.exe\",oF=[\"//nologo\",__dirname+\"\\\\read.cs.js\"]):(Y0=\"/bin/sh\",oF=[__dirname+\"/read.sh\"])),bm&&!process.env.PSModulePath&&(a.stdio=[process.stdin]),bq.execFileSync){e=lEe(t),sS&&sS(\"execFileSync\",e);try{r.input=bq.execFileSync(Y0,e,a)}catch(n){s=n.stderr?(n.stderr+\"\").trim():\"\",r.error=new Error(oEe+(s?`\n`+s:\"\")),r.error.method=\"execFileSync\",r.error.program=Y0,r.error.args=e,r.error.extMessage=s,r.error.exitCode=n.status,r.error.code=n.code,r.error.signal=n.signal}}else r=Vct(t,a);return r.error||(r.input=r.input.replace(/^\\s*'|'\\s*$/g,\"\"),t.display=\"\"),r}function kq(t){var e=\"\",r=t.display,s=!t.display&&t.keyIn&&t.hideEchoBack&&!t.mask;function a(){var n=Jct(t);if(n.error)throw n.error;return n.input}return xq&&xq(t),function(){var n,c,f;function p(){return n||(n=process.binding(\"fs\"),c=process.binding(\"constants\")),n}if(typeof Xp==\"string\")if(Xp=null,bm){if(f=function(h){var E=h.replace(/^\\D+/,\"\").split(\".\"),C=0;return(E[0]=+E[0])&&(C+=E[0]*1e4),(E[1]=+E[1])&&(C+=E[1]*100),(E[2]=+E[2])&&(C+=E[2]),C}(process.version),!(f>=20302&&f<40204||f>=5e4&&f<50100||f>=50600&&f<60200)&&process.stdin.isTTY)process.stdin.pause(),Xp=process.stdin.fd,VC=process.stdin._handle;else try{Xp=p().open(\"CONIN$\",c.O_RDWR,parseInt(\"0666\",8)),VC=new iEe(Xp,!0)}catch{}if(process.stdout.isTTY)Zu=process.stdout.fd;else{try{Zu=si.openSync(\"\\\\\\\\.\\\\CON\",\"w\")}catch{}if(typeof Zu!=\"number\")try{Zu=p().open(\"CONOUT$\",c.O_RDWR,parseInt(\"0666\",8))}catch{}}}else{if(process.stdin.isTTY){process.stdin.pause();try{Xp=si.openSync(\"/dev/tty\",\"r\"),VC=process.stdin._handle}catch{}}else try{Xp=si.openSync(\"/dev/tty\",\"r\"),VC=new iEe(Xp,!1)}catch{}if(process.stdout.isTTY)Zu=process.stdout.fd;else try{Zu=si.openSync(\"/dev/tty\",\"w\")}catch{}}}(),function(){var n,c,f=!t.hideEchoBack&&!t.keyIn,p,h,E,C,S;aF=\"\";function P(I){return I===sEe?!0:VC.setRawMode(I)!==0?!1:(sEe=I,!0)}if(aEe||!VC||typeof Zu!=\"number\"&&(t.display||!f)){e=a();return}if(t.display&&(si.writeSync(Zu,t.display),t.display=\"\"),!t.displayOnly){if(!P(!f)){e=a();return}for(h=t.keyIn?1:t.bufferSize,p=Buffer.allocUnsafe&&Buffer.alloc?Buffer.alloc(h):new Buffer(h),t.keyIn&&t.limit&&(c=new RegExp(\"[^\"+t.limit+\"]\",\"g\"+(t.caseSensitive?\"\":\"i\")));;){E=0;try{E=si.readSync(Xp,p,0,h)}catch(I){if(I.code!==\"EOF\"){P(!1),e+=a();return}}if(E>0?(C=p.toString(t.encoding,0,E),aF+=C):(C=`\n`,aF+=\"\\0\"),C&&typeof(S=(C.match(/^(.*?)[\\r\\n]/)||[])[1])==\"string\"&&(C=S,n=!0),C&&(C=C.replace(/[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]/g,\"\")),C&&c&&(C=C.replace(c,\"\")),C&&(f||(t.hideEchoBack?t.mask&&si.writeSync(Zu,new Array(C.length+1).join(t.mask)):si.writeSync(Zu,C)),e+=C),!t.keyIn&&n||t.keyIn&&e.length>=h)break}!f&&!s&&si.writeSync(Zu,`\n`),P(!1)}}(),t.print&&!s&&t.print(r+(t.displayOnly?\"\":(t.hideEchoBack?new Array(e.length+1).join(t.mask):e)+`\n`),t.encoding),t.displayOnly?\"\":Rq=t.keepWhitespace||t.keyIn?e:e.trim()}function Kct(t,e){var r=[];function s(a){a!=null&&(Array.isArray(a)?a.forEach(s):(!e||e(a))&&r.push(a))}return s(t),r}function Fq(t){return t.replace(/[\\x00-\\x7f]/g,function(e){return\"\\\\x\"+(\"00\"+e.charCodeAt().toString(16)).substr(-2)})}function Vs(){var t=Array.prototype.slice.call(arguments),e,r;return t.length&&typeof t[0]==\"boolean\"&&(r=t.shift(),r&&(e=Object.keys(Pq),t.unshift(Pq))),t.reduce(function(s,a){return a==null||(a.hasOwnProperty(\"noEchoBack\")&&!a.hasOwnProperty(\"hideEchoBack\")&&(a.hideEchoBack=a.noEchoBack,delete a.noEchoBack),a.hasOwnProperty(\"noTrim\")&&!a.hasOwnProperty(\"keepWhitespace\")&&(a.keepWhitespace=a.noTrim,delete a.noTrim),r||(e=Object.keys(a)),e.forEach(function(n){var c;if(a.hasOwnProperty(n))switch(c=a[n],n){case\"mask\":case\"limitMessage\":case\"defaultInput\":case\"encoding\":c=c!=null?c+\"\":\"\",c&&n!==\"limitMessage\"&&(c=c.replace(/[\\r\\n]/g,\"\")),s[n]=c;break;case\"bufferSize\":!isNaN(c=parseInt(c,10))&&typeof c==\"number\"&&(s[n]=c);break;case\"displayOnly\":case\"keyIn\":case\"hideEchoBack\":case\"caseSensitive\":case\"keepWhitespace\":case\"history\":case\"cd\":s[n]=!!c;break;case\"limit\":case\"trueValue\":case\"falseValue\":s[n]=Kct(c,function(f){var p=typeof f;return p===\"string\"||p===\"number\"||p===\"function\"||f instanceof RegExp}).map(function(f){return typeof f==\"string\"?f.replace(/[\\r\\n]/g,\"\"):f});break;case\"print\":case\"phContent\":case\"preCheck\":s[n]=typeof c==\"function\"?c:void 0;break;case\"prompt\":case\"display\":s[n]=c??\"\";break}})),s},{})}function Qq(t,e,r){return e.some(function(s){var a=typeof s;return a===\"string\"?r?t===s:t.toLowerCase()===s.toLowerCase():a===\"number\"?parseFloat(t)===s:a===\"function\"?s(t):s instanceof RegExp?s.test(t):!1})}function Nq(t,e){var r=V0.normalize(bm?(process.env.HOMEDRIVE||\"\")+(process.env.HOMEPATH||\"\"):process.env.HOME||\"\").replace(/[\\/\\\\]+$/,\"\");return t=V0.normalize(t),e?t.replace(/^~(?=\\/|\\\\|$)/,r):t.replace(new RegExp(\"^\"+Fq(r)+\"(?=\\\\/|\\\\\\\\|$)\",bm?\"i\":\"\"),\"~\")}function JC(t,e){var r=\"(?:\\\\(([\\\\s\\\\S]*?)\\\\))?(\\\\w+|.-.)(?:\\\\(([\\\\s\\\\S]*?)\\\\))?\",s=new RegExp(\"(\\\\$)?(\\\\$<\"+r+\">)\",\"g\"),a=new RegExp(\"(\\\\$)?(\\\\$\\\\{\"+r+\"\\\\})\",\"g\");function n(c,f,p,h,E,C){var S;return f||typeof(S=e(E))!=\"string\"?p:S?(h||\"\")+S+(C||\"\"):\"\"}return t.replace(s,n).replace(a,n)}function cEe(t,e,r){var s,a=[],n=-1,c=0,f=\"\",p;function h(E,C){return C.length>3?(E.push(C[0]+\"...\"+C[C.length-1]),p=!0):C.length&&(E=E.concat(C)),E}return s=t.reduce(function(E,C){return E.concat((C+\"\").split(\"\"))},[]).reduce(function(E,C){var S,P;return e||(C=C.toLowerCase()),S=/^\\d$/.test(C)?1:/^[A-Z]$/.test(C)?2:/^[a-z]$/.test(C)?3:0,r&&S===0?f+=C:(P=C.charCodeAt(0),S&&S===n&&P===c+1?a.push(C):(E=h(E,a),a=[C],n=S),c=P),E},[]),s=h(s,a),f&&(s.push(f),p=!0),{values:s,suppressed:p}}function uEe(t,e){return t.join(t.length>2?\", \":e?\" / \":\"/\")}function fEe(t,e){var r,s,a={},n;if(e.phContent&&(r=e.phContent(t,e)),typeof r!=\"string\")switch(t){case\"hideEchoBack\":case\"mask\":case\"defaultInput\":case\"caseSensitive\":case\"keepWhitespace\":case\"encoding\":case\"bufferSize\":case\"history\":case\"cd\":r=e.hasOwnProperty(t)?typeof e[t]==\"boolean\"?e[t]?\"on\":\"off\":e[t]+\"\":\"\";break;case\"limit\":case\"trueValue\":case\"falseValue\":s=e[e.hasOwnProperty(t+\"Src\")?t+\"Src\":t],e.keyIn?(a=cEe(s,e.caseSensitive),s=a.values):s=s.filter(function(c){var f=typeof c;return f===\"string\"||f===\"number\"}),r=uEe(s,a.suppressed);break;case\"limitCount\":case\"limitCountNotZero\":r=e[e.hasOwnProperty(\"limitSrc\")?\"limitSrc\":\"limit\"].length,r=r||t!==\"limitCountNotZero\"?r+\"\":\"\";break;case\"lastInput\":r=Rq;break;case\"cwd\":case\"CWD\":case\"cwdHome\":r=process.cwd(),t===\"CWD\"?r=V0.basename(r):t===\"cwdHome\"&&(r=Nq(r));break;case\"date\":case\"time\":case\"localeDate\":case\"localeTime\":r=new Date()[\"to\"+t.replace(/^./,function(c){return c.toUpperCase()})+\"String\"]();break;default:typeof(n=(t.match(/^history_m(\\d+)$/)||[])[1])==\"string\"&&(r=Dm[Dm.length-n]||\"\")}return r}function AEe(t){var e=/^(.)-(.)$/.exec(t),r=\"\",s,a,n,c;if(!e)return null;for(s=e[1].charCodeAt(0),a=e[2].charCodeAt(0),c=s<a?1:-1,n=s;n!==a+c;n+=c)r+=String.fromCharCode(n);return r}function Tq(t){var e=new RegExp(/(\\s*)(?:(\"|')(.*?)(?:\\2|$)|(\\S+))/g),r,s=\"\",a=[],n;for(t=t.trim();r=e.exec(t);)n=r[3]||r[4]||\"\",r[1]&&(a.push(s),s=\"\"),s+=n;return s&&a.push(s),a}function pEe(t,e){return e.trueValue.length&&Qq(t,e.trueValue,e.caseSensitive)?!0:e.falseValue.length&&Qq(t,e.falseValue,e.caseSensitive)?!1:t}function hEe(t){var e,r,s,a,n,c,f;function p(E){return fEe(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=JC(t.display+\"\",p);;){if(e=kq(t),r=!1,s=\"\",t.defaultInput&&!e&&(e=t.defaultInput),t.history&&((a=/^\\s*\\!(?:\\!|-1)(:p)?\\s*$/.exec(e))?(n=Dm[0]||\"\",a[1]?r=!0:e=n,h(n+`\n`),r||(t.displayOnly=!0,kq(t),t.displayOnly=!1)):e&&e!==Dm[Dm.length-1]&&(Dm=[e])),!r&&t.cd&&e)switch(c=Tq(e),c[0].toLowerCase()){case\"cd\":if(c[1])try{process.chdir(Nq(c[1],!0))}catch(E){h(E+\"\")}r=!0;break;case\"pwd\":h(process.cwd()),r=!0;break}if(!r&&t.preCheck&&(f=t.preCheck(e,t),e=f.res,f.forceNext&&(r=!0)),!r){if(!t.limitSrc.length||Qq(e,t.limitSrc,t.caseSensitive))break;t.limitMessage&&(s=JC(t.limitMessage,p))}h((s?s+`\n`:\"\")+JC(t.displaySrc+\"\",p))}return pEe(e,t)}$r._DBG_set_useExt=function(t){aEe=t};$r._DBG_set_checkOptions=function(t){xq=t};$r._DBG_set_checkMethod=function(t){sS=t};$r._DBG_clearHistory=function(){Rq=\"\",Dm=[]};$r.setDefaultOptions=function(t){return Pq=Vs(!0,t),Vs(!0)};$r.question=function(t,e){return hEe(Vs(Vs(!0,e),{display:t}))};$r.prompt=function(t){var e=Vs(!0,t);return e.display=e.prompt,hEe(e)};$r.keyIn=function(t,e){var r=Vs(Vs(!0,e),{display:t,keyIn:!0,keepWhitespace:!0});return r.limitSrc=r.limit.filter(function(s){var a=typeof s;return a===\"string\"||a===\"number\"}).map(function(s){return JC(s+\"\",AEe)}),r.limit=Fq(r.limitSrc.join(\"\")),[\"trueValue\",\"falseValue\"].forEach(function(s){r[s]=r[s].reduce(function(a,n){var c=typeof n;return c===\"string\"||c===\"number\"?a=a.concat((n+\"\").split(\"\")):a.push(n),a},[])}),r.display=JC(r.display+\"\",function(s){return fEe(s,r)}),pEe(kq(r),r)};$r.questionEMail=function(t,e){return t==null&&(t=\"Input e-mail address: \"),$r.question(t,Vs({hideEchoBack:!1,limit:/^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/,limitMessage:\"Input valid e-mail address, please.\",trueValue:null,falseValue:null},e,{keepWhitespace:!1,cd:!1}))};$r.questionNewPassword=function(t,e){var r,s,a,n=Vs({hideEchoBack:!0,mask:\"*\",limitMessage:`It can include: $<charlist>\nAnd the length must be: $<length>`,trueValue:null,falseValue:null,caseSensitive:!0},e,{history:!1,cd:!1,phContent:function(P){return P===\"charlist\"?r.text:P===\"length\"?s+\"...\"+a:null}}),c,f,p,h,E,C,S;for(e=e||{},c=JC(e.charlist?e.charlist+\"\":\"$<!-~>\",AEe),(isNaN(s=parseInt(e.min,10))||typeof s!=\"number\")&&(s=12),(isNaN(a=parseInt(e.max,10))||typeof a!=\"number\")&&(a=24),h=new RegExp(\"^[\"+Fq(c)+\"]{\"+s+\",\"+a+\"}$\"),r=cEe([c],n.caseSensitive,!0),r.text=uEe(r.values,r.suppressed),f=e.confirmMessage!=null?e.confirmMessage:\"Reinput a same one to confirm it: \",p=e.unmatchMessage!=null?e.unmatchMessage:\"It differs from first one. Hit only the Enter key if you want to retry from first one.\",t==null&&(t=\"Input new password: \"),E=n.limitMessage;!S;)n.limit=h,n.limitMessage=E,C=$r.question(t,n),n.limit=[C,\"\"],n.limitMessage=p,S=$r.question(f,n);return C};function gEe(t,e,r){var s;function a(n){return s=r(n),!isNaN(s)&&typeof s==\"number\"}return $r.question(t,Vs({limitMessage:\"Input valid number, please.\"},e,{limit:a,cd:!1})),s}$r.questionInt=function(t,e){return gEe(t,e,function(r){return parseInt(r,10)})};$r.questionFloat=function(t,e){return gEe(t,e,parseFloat)};$r.questionPath=function(t,e){var r,s=\"\",a=Vs({hideEchoBack:!1,limitMessage:`$<error(\n)>Input valid path, please.$<( Min:)min>$<( Max:)max>`,history:!0,cd:!0},e,{keepWhitespace:!1,limit:function(n){var c,f,p;n=Nq(n,!0),s=\"\";function h(E){E.split(/\\/|\\\\/).reduce(function(C,S){var P=V0.resolve(C+=S+V0.sep);if(!si.existsSync(P))si.mkdirSync(P);else if(!si.statSync(P).isDirectory())throw new Error(\"Non directory already exists: \"+P);return C},\"\")}try{if(c=si.existsSync(n),r=c?si.realpathSync(n):V0.resolve(n),!e.hasOwnProperty(\"exists\")&&!c||typeof e.exists==\"boolean\"&&e.exists!==c)return s=(c?\"Already exists\":\"No such file or directory\")+\": \"+r,!1;if(!c&&e.create&&(e.isDirectory?h(r):(h(V0.dirname(r)),si.closeSync(si.openSync(r,\"w\"))),r=si.realpathSync(r)),c&&(e.min||e.max||e.isFile||e.isDirectory)){if(f=si.statSync(r),e.isFile&&!f.isFile())return s=\"Not file: \"+r,!1;if(e.isDirectory&&!f.isDirectory())return s=\"Not directory: \"+r,!1;if(e.min&&f.size<+e.min||e.max&&f.size>+e.max)return s=\"Size \"+f.size+\" is out of range: \"+r,!1}if(typeof e.validate==\"function\"&&(p=e.validate(r))!==!0)return typeof p==\"string\"&&(s=p),!1}catch(E){return s=E+\"\",!1}return!0},phContent:function(n){return n===\"error\"?s:n!==\"min\"&&n!==\"max\"?null:e.hasOwnProperty(n)?e[n]+\"\":\"\"}});return e=e||{},t==null&&(t='Input path (you can \"cd\" and \"pwd\"): '),$r.question(t,a),r};function dEe(t,e){var r={},s={};return typeof t==\"object\"?(Object.keys(t).forEach(function(a){typeof t[a]==\"function\"&&(s[e.caseSensitive?a:a.toLowerCase()]=t[a])}),r.preCheck=function(a){var n;return r.args=Tq(a),n=r.args[0]||\"\",e.caseSensitive||(n=n.toLowerCase()),r.hRes=n!==\"_\"&&s.hasOwnProperty(n)?s[n].apply(a,r.args.slice(1)):s.hasOwnProperty(\"_\")?s._.apply(a,r.args):null,{res:a,forceNext:!1}},s.hasOwnProperty(\"_\")||(r.limit=function(){var a=r.args[0]||\"\";return e.caseSensitive||(a=a.toLowerCase()),s.hasOwnProperty(a)})):r.preCheck=function(a){return r.args=Tq(a),r.hRes=typeof t==\"function\"?t.apply(a,r.args):!0,{res:a,forceNext:!1}},r}$r.promptCL=function(t,e){var r=Vs({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),s=dEe(t,r);return r.limit=s.limit,r.preCheck=s.preCheck,$r.prompt(r),s.args};$r.promptLoop=function(t,e){for(var r=Vs({hideEchoBack:!1,trueValue:null,falseValue:null,caseSensitive:!1,history:!0},e);!t($r.prompt(r)););};$r.promptCLLoop=function(t,e){var r=Vs({hideEchoBack:!1,limitMessage:\"Requested command is not available.\",caseSensitive:!1,history:!0},e),s=dEe(t,r);for(r.limit=s.limit,r.preCheck=s.preCheck;$r.prompt(r),!s.hRes;);};$r.promptSimShell=function(t){return $r.prompt(Vs({hideEchoBack:!1,history:!0},t,{prompt:function(){return bm?\"$<cwd>>\":(process.env.USER||\"\")+(process.env.HOSTNAME?\"@\"+process.env.HOSTNAME.replace(/\\..*$/,\"\"):\"\")+\":$<cwdHome>$ \"}()}))};function mEe(t,e,r){var s;return t==null&&(t=\"Are you sure? \"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s*:?\\s*$/,\"\")+\" [y/n]: \"),s=$r.keyIn(t,Vs(e,{hideEchoBack:!1,limit:r,trueValue:\"y\",falseValue:\"n\",caseSensitive:!1})),typeof s==\"boolean\"?s:\"\"}$r.keyInYN=function(t,e){return mEe(t,e)};$r.keyInYNStrict=function(t,e){return mEe(t,e,\"yn\")};$r.keyInPause=function(t,e){t==null&&(t=\"Continue...\"),(!e||e.guide!==!1)&&(t+=\"\")&&(t=t.replace(/\\s+$/,\"\")+\" (Hit any key)\"),$r.keyIn(t,Vs({limit:null},e,{hideEchoBack:!0,mask:\"\"}))};$r.keyInSelect=function(t,e,r){var s=Vs({hideEchoBack:!1},r,{trueValue:null,falseValue:null,caseSensitive:!1,phContent:function(p){return p===\"itemsCount\"?t.length+\"\":p===\"firstItem\"?(t[0]+\"\").trim():p===\"lastItem\"?(t[t.length-1]+\"\").trim():null}}),a=\"\",n={},c=49,f=`\n`;if(!Array.isArray(t)||!t.length||t.length>35)throw\"`items` must be Array (max length: 35).\";return t.forEach(function(p,h){var E=String.fromCharCode(c);a+=E,n[E]=h,f+=\"[\"+E+\"] \"+(p+\"\").trim()+`\n`,c=c===57?97:c+1}),(!r||r.cancel!==!1)&&(a+=\"0\",n[0]=-1,f+=\"[0] \"+(r&&r.cancel!=null&&typeof r.cancel!=\"boolean\"?(r.cancel+\"\").trim():\"CANCEL\")+`\n`),s.limit=a,f+=`\n`,e==null&&(e=\"Choose one from list: \"),(e+=\"\")&&((!r||r.guide!==!1)&&(e=e.replace(/\\s*:?\\s*$/,\"\")+\" [$<limit>]: \"),f+=e),n[$r.keyIn(f,s).toLowerCase()]};$r.getRawInput=function(){return aF};function oS(t,e){var r;return e.length&&(r={},r[t]=e[0]),$r.setDefaultOptions(r)[t]}$r.setPrint=function(){return oS(\"print\",arguments)};$r.setPrompt=function(){return oS(\"prompt\",arguments)};$r.setEncoding=function(){return oS(\"encoding\",arguments)};$r.setMask=function(){return oS(\"mask\",arguments)};$r.setBufferSize=function(){return oS(\"bufferSize\",arguments)}});var Oq=_((jYt,ec)=>{(function(){var t={major:0,minor:2,patch:66,status:\"beta\"};tau_file_system={files:{},open:function(w,b,y){var F=tau_file_system.files[w];if(!F){if(y===\"read\")return null;F={path:w,text:\"\",type:b,get:function(z,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 $=n(this.text[Math.floor(z/2)],0);return z%2===0?$&255:$/256>>>0},put_byte:function(z,X){var $=X===\"end_of_stream\"?this.text.length:Math.floor(X/2);if(this.text.length<$)return null;var oe=this.text.length===$?-1:n(this.text[Math.floor(X/2)],0);return X%2===0?(oe=oe/256>>>0,oe=(oe&255)<<8|z&255):(oe=oe&255,oe=(z&255)<<8|oe&255),this.text.length===$?this.text+=c(oe):this.text=this.text.substring(0,$)+c(oe)+this.text.substring($+1),!0},flush:function(){return!0},close:function(){var z=tau_file_system.files[this.path];return z?!0:null}},tau_file_system.files[w]=F}return y===\"write\"&&(F.text=\"\"),F}},tau_user_input={buffer:\"\",get:function(w,b){for(var y;tau_user_input.buffer.length<w;)y=window.prompt(),y&&(tau_user_input.buffer+=y);return y=tau_user_input.buffer.substr(0,w),tau_user_input.buffer=tau_user_input.buffer.substr(w),y}},tau_user_output={put:function(w,b){return console.log(w),!0},flush:function(){return!0}},nodejs_file_system={open:function(w,b,y){var F=Ie(\"fs\"),z=F.openSync(w,y[0]);return y===\"read\"&&!F.existsSync(w)?null:{get:function(X,$){var oe=new Buffer(X);return F.readSync(z,oe,0,X,$),oe.toString()},put:function(X,$){var oe=Buffer.from(X);if($===\"end_of_file\")F.writeSync(z,oe);else{if($===\"past_end_of_file\")return null;F.writeSync(z,oe,0,oe.length,$)}return!0},get_byte:function(X){return null},put_byte:function(X,$){return null},flush:function(){return!0},close:function(){return F.closeSync(z),!0}}}},nodejs_user_input={buffer:\"\",get:function(w,b){for(var y,F=yEe();nodejs_user_input.buffer.length<w;)nodejs_user_input.buffer+=F.question();return y=nodejs_user_input.buffer.substr(0,w),nodejs_user_input.buffer=nodejs_user_input.buffer.substr(w),y}},nodejs_user_output={put:function(w,b){return process.stdout.write(w),!0},flush:function(){return!0}};var e;Array.prototype.indexOf?e=function(w,b){return w.indexOf(b)}:e=function(w,b){for(var y=w.length,F=0;F<y;F++)if(b===w[F])return F;return-1};var r=function(w,b){if(w.length!==0){for(var y=w[0],F=w.length,z=1;z<F;z++)y=b(y,w[z]);return y}},s;Array.prototype.map?s=function(w,b){return w.map(b)}:s=function(w,b){for(var y=[],F=w.length,z=0;z<F;z++)y.push(b(w[z]));return y};var a;Array.prototype.filter?a=function(w,b){return w.filter(b)}:a=function(w,b){for(var y=[],F=w.length,z=0;z<F;z++)b(w[z])&&y.push(w[z]);return y};var n;String.prototype.codePointAt?n=function(w,b){return w.codePointAt(b)}:n=function(w,b){return w.charCodeAt(b)};var c;String.fromCodePoint?c=function(){return String.fromCodePoint.apply(null,arguments)}:c=function(){return String.fromCharCode.apply(null,arguments)};var f=0,p=1,h=/(\\\\a)|(\\\\b)|(\\\\f)|(\\\\n)|(\\\\r)|(\\\\t)|(\\\\v)|\\\\x([0-9a-fA-F]+)\\\\|\\\\([0-7]+)\\\\|(\\\\\\\\)|(\\\\')|('')|(\\\\\")|(\\\\`)|(\\\\.)|(.)/g,E={\"\\\\a\":7,\"\\\\b\":8,\"\\\\f\":12,\"\\\\n\":10,\"\\\\r\":13,\"\\\\t\":9,\"\\\\v\":11};function C(w){var b=[],y=!1;return w.replace(h,function(F,z,X,$,oe,xe,Te,lt,Ct,qt,ir,Pt,gn,Pr,Ir,Or,on){switch(!0){case Ct!==void 0:return b.push(parseInt(Ct,16)),\"\";case qt!==void 0:return b.push(parseInt(qt,8)),\"\";case ir!==void 0:case Pt!==void 0:case gn!==void 0:case Pr!==void 0:case Ir!==void 0:return b.push(n(F.substr(1),0)),\"\";case on!==void 0:return b.push(n(on,0)),\"\";case Or!==void 0:y=!0;default:return b.push(E[F]),\"\"}}),y?null:b}function S(w,b){var y=\"\";if(w.length<2)return w;try{w=w.replace(/\\\\([0-7]+)\\\\/g,function($,oe){return c(parseInt(oe,8))}),w=w.replace(/\\\\x([0-9a-fA-F]+)\\\\/g,function($,oe){return c(parseInt(oe,16))})}catch{return null}for(var F=0;F<w.length;F++){var z=w.charAt(F),X=w.charAt(F+1);if(z===b&&X===b)F++,y+=b;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 P(w){for(var b=\"\",y=0;y<w.length;y++)switch(w.charAt(y)){case\"'\":b+=\"\\\\'\";break;case\"\\\\\":b+=\"\\\\\\\\\";break;case\"\\b\":b+=\"\\\\b\";break;case\"\\f\":b+=\"\\\\f\";break;case`\n`:b+=\"\\\\n\";break;case\"\\r\":b+=\"\\\\r\";break;case\"\t\":b+=\"\\\\t\";break;case\"\\v\":b+=\"\\\\v\";break;default:b+=w.charAt(y);break}return b}function I(w){var b=w.substr(2);switch(w.substr(0,2).toLowerCase()){case\"0x\":return parseInt(b,16);case\"0b\":return parseInt(b,2);case\"0o\":return parseInt(b,8);case\"0'\":return C(b)[0];default:return parseFloat(w)}}var R={whitespace:/^\\s*(?:(?:%.*)|(?:\\/\\*(?:\\n|\\r|.)*?\\*\\/)|(?:\\s+))\\s*/,variable:/^(?:[A-Z_][a-zA-Z0-9_]*)/,atom:/^(\\!|,|;|[a-z][0-9a-zA-Z_]*|[#\\$\\&\\*\\+\\-\\.\\/\\:\\<\\=\\>\\?\\@\\^\\~\\\\]+|'(?:[^']*?(?:\\\\(?:x?\\d+)?\\\\)*(?:'')*(?:\\\\')*)*')/,number:/^(?:0o[0-7]+|0x[0-9a-fA-F]+|0b[01]+|0'(?:''|\\\\[abfnrtv\\\\'\"`]|\\\\x?\\d+\\\\|[^\\\\])|\\d+(?:\\.\\d+(?:[eE][+-]?\\d+)?)?)/,string:/^(?:\"([^\"]|\"\"|\\\\\")*\"|`([^`]|``|\\\\`)*`)/,l_brace:/^(?:\\[)/,r_brace:/^(?:\\])/,l_bracket:/^(?:\\{)/,r_bracket:/^(?:\\})/,bar:/^(?:\\|)/,l_paren:/^(?:\\()/,r_paren:/^(?:\\))/};function N(w,b){return w.get_flag(\"char_conversion\").id===\"on\"?b.replace(/./g,function(y){return w.get_char_conversion(y)}):b}function U(w){this.thread=w,this.text=\"\",this.tokens=[]}U.prototype.set_last_tokens=function(w){return this.tokens=w},U.prototype.new_text=function(w){this.text=w,this.tokens=[]},U.prototype.get_tokens=function(w){var b,y=0,F=0,z=0,X=[],$=!1;if(w){var oe=this.tokens[w-1];y=oe.len,b=N(this.thread,this.text.substr(oe.len)),F=oe.line,z=oe.start}else b=this.text;if(/^\\s*$/.test(b))return null;for(;b!==\"\";){var xe=[],Te=!1;if(/^\\n/.exec(b)!==null){F++,z=0,y++,b=b.replace(/\\n/,\"\"),$=!0;continue}for(var lt in R)if(R.hasOwnProperty(lt)){var Ct=R[lt].exec(b);Ct&&xe.push({value:Ct[0],name:lt,matches:Ct})}if(!xe.length)return this.set_last_tokens([{value:b,matches:[],name:\"lexical\",line:F,start:z}]);var oe=r(xe,function(Pr,Ir){return Pr.value.length>=Ir.value.length?Pr:Ir});switch(oe.start=z,oe.line=F,b=b.replace(oe.value,\"\"),z+=oe.value.length,y+=oe.value.length,oe.name){case\"atom\":oe.raw=oe.value,oe.value.charAt(0)===\"'\"&&(oe.value=S(oe.value.substr(1,oe.value.length-2),\"'\"),oe.value===null&&(oe.name=\"lexical\",oe.value=\"unknown escape sequence\"));break;case\"number\":oe.float=oe.value.substring(0,2)!==\"0x\"&&oe.value.match(/[.eE]/)!==null&&oe.value!==\"0'.\",oe.value=I(oe.value),oe.blank=Te;break;case\"string\":var qt=oe.value.charAt(0);oe.value=S(oe.value.substr(1,oe.value.length-2),qt),oe.value===null&&(oe.name=\"lexical\",oe.value=\"unknown escape sequence\");break;case\"whitespace\":var ir=X[X.length-1];ir&&(ir.space=!0),Te=!0;continue;case\"r_bracket\":X.length>0&&X[X.length-1].name===\"l_bracket\"&&(oe=X.pop(),oe.name=\"atom\",oe.value=\"{}\",oe.raw=\"{}\",oe.space=!1);break;case\"r_brace\":X.length>0&&X[X.length-1].name===\"l_brace\"&&(oe=X.pop(),oe.name=\"atom\",oe.value=\"[]\",oe.raw=\"[]\",oe.space=!1);break}oe.len=y,X.push(oe),Te=!1}var Pt=this.set_last_tokens(X);return Pt.length===0?null:Pt};function W(w,b,y,F,z){if(!b[y])return{type:f,value:x.error.syntax(b[y-1],\"expression expected\",!0)};var X;if(F===\"0\"){var $=b[y];switch($.name){case\"number\":return{type:p,len:y+1,value:new x.type.Num($.value,$.float)};case\"variable\":return{type:p,len:y+1,value:new x.type.Var($.value)};case\"string\":var oe;switch(w.get_flag(\"double_quotes\").id){case\"atom\":oe=new j($.value,[]);break;case\"codes\":oe=new j(\"[]\",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(\".\",[new x.type.Num(n($.value,xe),!1),oe]);break;case\"chars\":oe=new j(\"[]\",[]);for(var xe=$.value.length-1;xe>=0;xe--)oe=new j(\".\",[new x.type.Term($.value.charAt(xe),[]),oe]);break}return{type:p,len:y+1,value:oe};case\"l_paren\":var Pt=W(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name===\"r_paren\"?(Pt.len++,Pt):{type:f,derived:!0,value:x.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],\") or operator expected\",!b[Pt.len])};case\"l_bracket\":var Pt=W(w,b,y+1,w.__get_max_priority(),!0);return Pt.type!==p?Pt:b[Pt.len]&&b[Pt.len].name===\"r_bracket\"?(Pt.len++,Pt.value=new j(\"{}\",[Pt.value]),Pt):{type:f,derived:!0,value:x.error.syntax(b[Pt.len]?b[Pt.len]:b[Pt.len-1],\"} or operator expected\",!b[Pt.len])}}var Te=ee(w,b,y,z);return Te.type===p||Te.derived||(Te=ie(w,b,y),Te.type===p||Te.derived)?Te:{type:f,derived:!1,value:x.error.syntax(b[y],\"unexpected token\")}}var lt=w.__get_max_priority(),Ct=w.__get_next_priority(F),qt=y;if(b[y].name===\"atom\"&&b[y+1]&&(b[y].space||b[y+1].name!==\"l_paren\")){var $=b[y++],ir=w.__lookup_operator_classes(F,$.value);if(ir&&ir.indexOf(\"fy\")>-1){var Pt=W(w,b,y,F,z);if(Pt.type!==f)return $.value===\"-\"&&!$.space&&x.type.is_number(Pt.value)?{value:new x.type.Num(-Pt.value.value,Pt.value.is_float),len:Pt.len,type:p}:{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};X=Pt}else if(ir&&ir.indexOf(\"fx\")>-1){var Pt=W(w,b,y,Ct,z);if(Pt.type!==f)return{value:new x.type.Term($.value,[Pt.value]),len:Pt.len,type:p};X=Pt}}y=qt;var Pt=W(w,b,y,Ct,z);if(Pt.type===p){y=Pt.len;var $=b[y];if(b[y]&&(b[y].name===\"atom\"&&w.__lookup_operator_classes(F,$.value)||b[y].name===\"bar\"&&w.__lookup_operator_classes(F,\"|\"))){var gn=Ct,Pr=F,ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf(\"xf\")>-1)return{value:new x.type.Term($.value,[Pt.value]),len:++Pt.len,type:p};if(ir.indexOf(\"xfx\")>-1){var Ir=W(w,b,y+1,gn,z);return Ir.type===p?{value:new x.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(ir.indexOf(\"xfy\")>-1){var Ir=W(w,b,y+1,Pr,z);return Ir.type===p?{value:new x.type.Term($.value,[Pt.value,Ir.value]),len:Ir.len,type:p}:(Ir.derived=!0,Ir)}else if(Pt.type!==f)for(;;){y=Pt.len;var $=b[y];if($&&$.name===\"atom\"&&w.__lookup_operator_classes(F,$.value)){var ir=w.__lookup_operator_classes(F,$.value);if(ir.indexOf(\"yf\")>-1)Pt={value:new x.type.Term($.value,[Pt.value]),len:++y,type:p};else if(ir.indexOf(\"yfx\")>-1){var Ir=W(w,b,++y,gn,z);if(Ir.type===f)return Ir.derived=!0,Ir;y=Ir.len,Pt={value:new x.type.Term($.value,[Pt.value,Ir.value]),len:y,type:p}}else break}else break}}else X={type:f,value:x.error.syntax(b[Pt.len-1],\"operator expected\")};return Pt}return Pt}function ee(w,b,y,F){if(!b[y]||b[y].name===\"atom\"&&b[y].raw===\".\"&&!F&&(b[y].space||!b[y+1]||b[y+1].name!==\"l_paren\"))return{type:f,derived:!1,value:x.error.syntax(b[y-1],\"unfounded token\")};var z=b[y],X=[];if(b[y].name===\"atom\"&&b[y].raw!==\",\"){if(y++,b[y-1].space)return{type:p,len:y,value:new x.type.Term(z.value,X)};if(b[y]&&b[y].name===\"l_paren\"){if(b[y+1]&&b[y+1].name===\"r_paren\")return{type:f,derived:!0,value:x.error.syntax(b[y+1],\"argument expected\")};var $=W(w,b,++y,\"999\",!0);if($.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],\"argument expected\",!b[y])};for(X.push($.value),y=$.len;b[y]&&b[y].name===\"atom\"&&b[y].value===\",\";){if($=W(w,b,y+1,\"999\",!0),$.type===f)return $.derived?$:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],\"argument expected\",!b[y+1])};X.push($.value),y=$.len}if(b[y]&&b[y].name===\"r_paren\")y++;else return{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],\", or ) expected\",!b[y])}}return{type:p,len:y,value:new x.type.Term(z.value,X)}}return{type:f,derived:!1,value:x.error.syntax(b[y],\"term expected\")}}function ie(w,b,y){if(!b[y])return{type:f,derived:!1,value:x.error.syntax(b[y-1],\"[ expected\")};if(b[y]&&b[y].name===\"l_brace\"){var F=W(w,b,++y,\"999\",!0),z=[F.value],X=void 0;if(F.type===f)return b[y]&&b[y].name===\"r_brace\"?{type:p,len:y+1,value:new x.type.Term(\"[]\",[])}:{type:f,derived:!0,value:x.error.syntax(b[y],\"] expected\")};for(y=F.len;b[y]&&b[y].name===\"atom\"&&b[y].value===\",\";){if(F=W(w,b,y+1,\"999\",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],\"argument expected\",!b[y+1])};z.push(F.value),y=F.len}var $=!1;if(b[y]&&b[y].name===\"bar\"){if($=!0,F=W(w,b,y+1,\"999\",!0),F.type===f)return F.derived?F:{type:f,derived:!0,value:x.error.syntax(b[y+1]?b[y+1]:b[y],\"argument expected\",!b[y+1])};X=F.value,y=F.len}return b[y]&&b[y].name===\"r_brace\"?{type:p,len:y+1,value:g(z,X)}:{type:f,derived:!0,value:x.error.syntax(b[y]?b[y]:b[y-1],$?\"] expected\":\", or | or ] expected\",!b[y])}}return{type:f,derived:!1,value:x.error.syntax(b[y],\"list expected\")}}function ue(w,b,y){var F=b[y].line,z=W(w,b,y,w.__get_max_priority(),!1),X=null,$;if(z.type!==f)if(y=z.len,b[y]&&b[y].name===\"atom\"&&b[y].raw===\".\")if(y++,x.type.is_term(z.value)){if(z.value.indicator===\":-/2\"?(X=new x.type.Rule(z.value.args[0],Ce(z.value.args[1])),$={value:X,len:y,type:p}):z.value.indicator===\"-->/2\"?(X=pe(new x.type.Rule(z.value.args[0],z.value.args[1]),w),X.body=Ce(X.body),$={value:X,len:y,type:x.type.is_rule(X)?p:f}):(X=new x.type.Rule(z.value,null),$={value:X,len:y,type:p}),X){var oe=X.singleton_variables();oe.length>0&&w.throw_warning(x.warning.singleton(oe,X.head.indicator,F))}return $}else return{type:f,value:x.error.syntax(b[y],\"callable expected\")};else return{type:f,value:x.error.syntax(b[y]?b[y]:b[y-1],\". or operator expected\")};return z}function le(w,b,y){y=y||{},y.from=y.from?y.from:\"$tau-js\",y.reconsult=y.reconsult!==void 0?y.reconsult:!0;var F=new U(w),z={},X;F.new_text(b);var $=0,oe=F.get_tokens($);do{if(oe===null||!oe[$])break;var xe=ue(w,oe,$);if(xe.type===f)return new j(\"throw\",[xe.value]);if(xe.value.body===null&&xe.value.head.indicator===\"?-/1\"){var Te=new it(w.session);Te.add_goal(xe.value.head.args[0]),Te.answer(function(Ct){x.type.is_error(Ct)?w.throw_warning(Ct.args[0]):(Ct===!1||Ct===null)&&w.throw_warning(x.warning.failed_goal(xe.value.head.args[0],xe.len))}),$=xe.len;var lt=!0}else if(xe.value.body===null&&xe.value.head.indicator===\":-/1\"){var lt=w.run_directive(xe.value.head.args[0]);$=xe.len,xe.value.head.args[0].indicator===\"char_conversion/2\"&&(oe=F.get_tokens($),$=0)}else{X=xe.value.head.indicator,y.reconsult!==!1&&z[X]!==!0&&!w.is_multifile_predicate(X)&&(w.session.rules[X]=a(w.session.rules[X]||[],function(qt){return qt.dynamic}),z[X]=!0);var lt=w.add_rule(xe.value,y);$=xe.len}if(!lt)return lt}while(!0);return!0}function me(w,b){var y=new U(w);y.new_text(b);var F=0;do{var z=y.get_tokens(F);if(z===null)break;var X=W(w,z,0,w.__get_max_priority(),!1);if(X.type!==f){var $=X.len,oe=$;if(z[$]&&z[$].name===\"atom\"&&z[$].raw===\".\")w.add_goal(Ce(X.value));else{var xe=z[$];return new j(\"throw\",[x.error.syntax(xe||z[$-1],\". or operator expected\",!xe)])}F=X.len+1}else return new j(\"throw\",[X.value])}while(!0);return!0}function pe(w,b){w=w.rename(b);var y=b.next_free_variable(),F=Be(w.body,y,b);return F.error?F.value:(w.body=F.value,w.head.args=w.head.args.concat([y,F.variable]),w.head=new j(w.head.id,w.head.args),w)}function Be(w,b,y){var F;if(x.type.is_term(w)&&w.indicator===\"!/0\")return{value:w,variable:b,error:!1};if(x.type.is_term(w)&&w.indicator===\",/2\"){var z=Be(w.args[0],b,y);if(z.error)return z;var X=Be(w.args[1],z.variable,y);return X.error?X:{value:new j(\",\",[z.value,X.value]),variable:X.variable,error:!1}}else{if(x.type.is_term(w)&&w.indicator===\"{}/1\")return{value:w.args[0],variable:b,error:!1};if(x.type.is_empty_list(w))return{value:new j(\"true\",[]),variable:b,error:!1};if(x.type.is_list(w)){F=y.next_free_variable();for(var $=w,oe;$.indicator===\"./2\";)oe=$,$=$.args[1];return x.type.is_variable($)?{value:x.error.instantiation(\"DCG\"),variable:b,error:!0}:x.type.is_empty_list($)?(oe.args[1]=F,{value:new j(\"=\",[b,w]),variable:F,error:!1}):{value:x.error.type(\"list\",w,\"DCG\"),variable:b,error:!0}}else return x.type.is_callable(w)?(F=y.next_free_variable(),w.args=w.args.concat([b,F]),w=new j(w.id,w.args),{value:w,variable:F,error:!1}):{value:x.error.type(\"callable\",w,\"DCG\"),variable:b,error:!0}}}function Ce(w){return x.type.is_variable(w)?new j(\"call\",[w]):x.type.is_term(w)&&[\",/2\",\";/2\",\"->/2\"].indexOf(w.indicator)!==-1?new j(w.id,[Ce(w.args[0]),Ce(w.args[1])]):w}function g(w,b){for(var y=b||new x.type.Term(\"[]\",[]),F=w.length-1;F>=0;F--)y=new x.type.Term(\".\",[w[F],y]);return y}function we(w,b){for(var y=w.length-1;y>=0;y--)w[y]===b&&w.splice(y,1)}function ye(w){for(var b={},y=[],F=0;F<w.length;F++)w[F]in b||(y.push(w[F]),b[w[F]]=!0);return y}function Ae(w,b,y,F){if(w.session.rules[y]!==null){for(var z=0;z<w.session.rules[y].length;z++)if(w.session.rules[y][z]===F){w.session.rules[y].splice(z,1),w.success(b);break}}}function se(w){return function(b,y,F){var z=F.args[0],X=F.args.slice(1,w);if(x.type.is_variable(z))b.throw_error(x.error.instantiation(b.level));else if(!x.type.is_callable(z))b.throw_error(x.error.type(\"callable\",z,b.level));else{var $=new j(z.id,z.args.concat(X));b.prepend([new Pe(y.goal.replace($),y.substitution,y)])}}}function Z(w){for(var b=w.length-1;b>=0;b--)if(w.charAt(b)===\"/\")return new j(\"/\",[new j(w.substring(0,b)),new Re(parseInt(w.substring(b+1)),!1)])}function De(w){this.id=w}function Re(w,b){this.is_float=b!==void 0?b:parseInt(w)!==w,this.value=this.is_float?w:parseInt(w)}var mt=0;function j(w,b,y){this.ref=y||++mt,this.id=w,this.args=b||[],this.indicator=w+\"/\"+this.args.length}var rt=0;function Fe(w,b,y,F,z,X){this.id=rt++,this.stream=w,this.mode=b,this.alias=y,this.type=F!==void 0?F:\"text\",this.reposition=z!==void 0?z:!0,this.eof_action=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 Ne(w){w=w||{},this.links=w}function Pe(w,b,y){b=b||new Ne,y=y||null,this.goal=w,this.substitution=b,this.parent=y}function Ve(w,b,y){this.head=w,this.body=b,this.dynamic=y||!1}function ke(w){w=w===void 0||w<=0?1e3:w,this.rules={},this.src_predicates={},this.rename=0,this.modules=[],this.thread=new it(this),this.total_threads=1,this.renamed_variables={},this.public_predicates={},this.multifile_predicates={},this.limit=w,this.streams={user_input:new Fe(typeof ec<\"u\"&&ec.exports?nodejs_user_input:tau_user_input,\"read\",\"user_input\",\"text\",!1,\"reset\"),user_output:new Fe(typeof ec<\"u\"&&ec.exports?nodejs_user_output:tau_user_output,\"write\",\"user_output\",\"text\",!1,\"eof_code\")},this.file_system=typeof ec<\"u\"&&ec.exports?nodejs_file_system:tau_file_system,this.standard_input=this.streams.user_input,this.standard_output=this.streams.user_output,this.current_input=this.streams.user_input,this.current_output=this.streams.user_output,this.format_success=function(b){return b.substitution},this.format_error=function(b){return b.goal},this.flag={bounded:x.flag.bounded.value,max_integer:x.flag.max_integer.value,min_integer:x.flag.min_integer.value,integer_rounding_function:x.flag.integer_rounding_function.value,char_conversion:x.flag.char_conversion.value,debug:x.flag.debug.value,max_arity:x.flag.max_arity.value,unknown:x.flag.unknown.value,double_quotes:x.flag.double_quotes.value,occurs_check:x.flag.occurs_check.value,dialect:x.flag.dialect.value,version_data:x.flag.version_data.value,nodejs:x.flag.nodejs.value},this.__loaded_modules=[],this.__char_conversion={},this.__operators={1200:{\":-\":[\"fx\",\"xfx\"],\"-->\":[\"xfx\"],\"?-\":[\"fx\"]},1100:{\";\":[\"xfy\"]},1050:{\"->\":[\"xfy\"]},1e3:{\",\":[\"xfy\"]},900:{\"\\\\+\":[\"fy\"]},700:{\"=\":[\"xfx\"],\"\\\\=\":[\"xfx\"],\"==\":[\"xfx\"],\"\\\\==\":[\"xfx\"],\"@<\":[\"xfx\"],\"@=<\":[\"xfx\"],\"@>\":[\"xfx\"],\"@>=\":[\"xfx\"],\"=..\":[\"xfx\"],is:[\"xfx\"],\"=:=\":[\"xfx\"],\"=\\\\=\":[\"xfx\"],\"<\":[\"xfx\"],\"=<\":[\"xfx\"],\">\":[\"xfx\"],\">=\":[\"xfx\"]},600:{\":\":[\"xfy\"]},500:{\"+\":[\"yfx\"],\"-\":[\"yfx\"],\"/\\\\\":[\"yfx\"],\"\\\\/\":[\"yfx\"]},400:{\"*\":[\"yfx\"],\"/\":[\"yfx\"],\"//\":[\"yfx\"],rem:[\"yfx\"],mod:[\"yfx\"],\"<<\":[\"yfx\"],\">>\":[\"yfx\"]},200:{\"**\":[\"xfx\"],\"^\":[\"xfy\"],\"-\":[\"fy\"],\"+\":[\"fy\"],\"\\\\\":[\"fy\"]}}}function it(w){this.epoch=Date.now(),this.session=w,this.session.total_threads++,this.total_steps=0,this.cpu_time=0,this.cpu_time_last=0,this.points=[],this.debugger=!1,this.debugger_states=[],this.level=\"top_level/0\",this.__calls=[],this.current_limit=this.session.limit,this.warnings=[]}function Ue(w,b,y){this.id=w,this.rules=b,this.exports=y,x.module[w]=this}Ue.prototype.exports_predicate=function(w){return this.exports.indexOf(w)!==-1},De.prototype.unify=function(w,b){if(b&&e(w.variables(),this.id)!==-1&&!x.type.is_variable(w))return null;var y={};return y[this.id]=w,new Ne(y)},Re.prototype.unify=function(w,b){return x.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float?new Ne:null},j.prototype.unify=function(w,b){if(x.type.is_term(w)&&this.indicator===w.indicator){for(var y=new Ne,F=0;F<this.args.length;F++){var z=x.unify(this.args[F].apply(y),w.args[F].apply(y),b);if(z===null)return null;for(var X in z.links)y.links[X]=z.links[X];y=y.apply(z)}return y}return null},Fe.prototype.unify=function(w,b){return x.type.is_stream(w)&&this.id===w.id?new Ne:null},De.prototype.toString=function(w){return this.id},Re.prototype.toString=function(w){return this.is_float&&e(this.value.toString(),\".\")===-1?this.value+\".0\":this.value.toString()},j.prototype.toString=function(w,b,y){if(w=w||{},w.quoted=w.quoted===void 0?!0:w.quoted,w.ignore_ops=w.ignore_ops===void 0?!1:w.ignore_ops,w.numbervars=w.numbervars===void 0?!1:w.numbervars,b=b===void 0?1200:b,y=y===void 0?\"\":y,w.numbervars&&this.indicator===\"$VAR/1\"&&x.type.is_integer(this.args[0])&&this.args[0].value>=0){var F=this.args[0].value,z=Math.floor(F/26),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 $=\"[\"+this.args[0].toString(w),oe=this.args[1];oe.indicator===\"./2\";)$+=\", \"+oe.args[0].toString(w),oe=oe.args[1];return oe.indicator!==\"[]/0\"&&($+=\"|\"+oe.toString(w)),$+=\"]\",$;case\",/2\":return\"(\"+this.args[0].toString(w)+\", \"+this.args[1].toString(w)+\")\";default:var xe=this.id,Te=w.session?w.session.lookup_operator(this.id,this.args.length):null;if(w.session===void 0||w.ignore_ops||Te===null)return w.quoted&&!/^(!|,|;|[a-z][0-9a-zA-Z_]*)$/.test(xe)&&xe!==\"{}\"&&xe!==\"[]\"&&(xe=\"'\"+P(xe)+\"'\"),xe+(this.args.length?\"(\"+s(this.args,function(ir){return ir.toString(w)}).join(\", \")+\")\":\"\");var lt=Te.priority>b.priority||Te.priority===b.priority&&(Te.class===\"xfy\"&&this.indicator!==b.indicator||Te.class===\"yfx\"&&this.indicator!==b.indicator||this.indicator===b.indicator&&Te.class===\"yfx\"&&y===\"right\"||this.indicator===b.indicator&&Te.class===\"xfy\"&&y===\"left\");Te.indicator=this.indicator;var Ct=lt?\"(\":\"\",qt=lt?\")\":\"\";return this.args.length===0?\"(\"+this.id+\")\":[\"fy\",\"fx\"].indexOf(Te.class)!==-1?Ct+xe+\" \"+this.args[0].toString(w,Te)+qt:[\"yf\",\"xf\"].indexOf(Te.class)!==-1?Ct+this.args[0].toString(w,Te)+\" \"+xe+qt:Ct+this.args[0].toString(w,Te,\"left\")+\" \"+this.id+\" \"+this.args[1].toString(w,Te,\"right\")+qt}},Fe.prototype.toString=function(w){return\"<stream>(\"+this.id+\")\"},Ne.prototype.toString=function(w){var b=\"{\";for(var y in this.links)this.links.hasOwnProperty(y)&&(b!==\"{\"&&(b+=\", \"),b+=y+\"/\"+this.links[y].toString(w));return b+=\"}\",b},Pe.prototype.toString=function(w){return this.goal===null?\"<\"+this.substitution.toString(w)+\">\":\"<\"+this.goal.toString(w)+\", \"+this.substitution.toString(w)+\">\"},Ve.prototype.toString=function(w){return this.body?this.head.toString(w)+\" :- \"+this.body.toString(w)+\".\":this.head.toString(w)+\".\"},ke.prototype.toString=function(w){for(var b=\"\",y=0;y<this.modules.length;y++)b+=\":- use_module(library(\"+this.modules[y]+`)).\n`;b+=`\n`;for(key in this.rules)for(y=0;y<this.rules[key].length;y++)b+=this.rules[key][y].toString(w),b+=`\n`;return b},De.prototype.clone=function(){return new De(this.id)},Re.prototype.clone=function(){return new Re(this.value,this.is_float)},j.prototype.clone=function(){return new j(this.id,s(this.args,function(w){return w.clone()}))},Fe.prototype.clone=function(){return new Stram(this.stream,this.mode,this.alias,this.type,this.reposition,this.eof_action)},Ne.prototype.clone=function(){var w={};for(var b in this.links)this.links.hasOwnProperty(b)&&(w[b]=this.links[b].clone());return new Ne(w)},Pe.prototype.clone=function(){return new Pe(this.goal.clone(),this.substitution.clone(),this.parent)},Ve.prototype.clone=function(){return new Ve(this.head.clone(),this.body!==null?this.body.clone():null)},De.prototype.equals=function(w){return x.type.is_variable(w)&&this.id===w.id},Re.prototype.equals=function(w){return x.type.is_number(w)&&this.value===w.value&&this.is_float===w.is_float},j.prototype.equals=function(w){if(!x.type.is_term(w)||this.indicator!==w.indicator)return!1;for(var b=0;b<this.args.length;b++)if(!this.args[b].equals(w.args[b]))return!1;return!0},Fe.prototype.equals=function(w){return x.type.is_stream(w)&&this.id===w.id},Ne.prototype.equals=function(w){var b;if(!x.type.is_substitution(w))return!1;for(b in this.links)if(this.links.hasOwnProperty(b)&&(!w.links[b]||!this.links[b].equals(w.links[b])))return!1;for(b in w.links)if(w.links.hasOwnProperty(b)&&!this.links[b])return!1;return!0},Pe.prototype.equals=function(w){return x.type.is_state(w)&&this.goal.equals(w.goal)&&this.substitution.equals(w.substitution)&&this.parent===w.parent},Ve.prototype.equals=function(w){return x.type.is_rule(w)&&this.head.equals(w.head)&&(this.body===null&&w.body===null||this.body!==null&&this.body.equals(w.body))},De.prototype.rename=function(w){return w.get_free_variable(this)},Re.prototype.rename=function(w){return this},j.prototype.rename=function(w){return new j(this.id,s(this.args,function(b){return b.rename(w)}))},Fe.prototype.rename=function(w){return this},Ve.prototype.rename=function(w){return new Ve(this.head.rename(w),this.body!==null?this.body.rename(w):null)},De.prototype.variables=function(){return[this.id]},Re.prototype.variables=function(){return[]},j.prototype.variables=function(){return[].concat.apply([],s(this.args,function(w){return w.variables()}))},Fe.prototype.variables=function(){return[]},Ve.prototype.variables=function(){return this.body===null?this.head.variables():this.head.variables().concat(this.body.variables())},De.prototype.apply=function(w){return w.lookup(this.id)?w.lookup(this.id):this},Re.prototype.apply=function(w){return this},j.prototype.apply=function(w){if(this.indicator===\"./2\"){for(var b=[],y=this;y.indicator===\"./2\";)b.push(y.args[0].apply(w)),y=y.args[1];for(var F=y.apply(w),z=b.length-1;z>=0;z--)F=new j(\".\",[b[z],F]);return F}return new j(this.id,s(this.args,function(X){return X.apply(w)}),this.ref)},Fe.prototype.apply=function(w){return this},Ve.prototype.apply=function(w){return new Ve(this.head.apply(w),this.body!==null?this.body.apply(w):null)},Ne.prototype.apply=function(w){var b,y={};for(b in this.links)this.links.hasOwnProperty(b)&&(y[b]=this.links[b].apply(w));return new Ne(y)},j.prototype.select=function(){for(var w=this;w.indicator===\",/2\";)w=w.args[0];return w},j.prototype.replace=function(w){return this.indicator===\",/2\"?this.args[0].indicator===\",/2\"?new j(\",\",[this.args[0].replace(w),this.args[1]]):w===null?this.args[1]:new j(\",\",[w,this.args[1]]):w},j.prototype.search=function(w){if(x.type.is_term(w)&&w.ref!==void 0&&this.ref===w.ref)return!0;for(var b=0;b<this.args.length;b++)if(x.type.is_term(this.args[b])&&this.args[b].search(w))return!0;return!1},ke.prototype.get_current_input=function(){return this.current_input},it.prototype.get_current_input=function(){return this.session.get_current_input()},ke.prototype.get_current_output=function(){return this.current_output},it.prototype.get_current_output=function(){return this.session.get_current_output()},ke.prototype.set_current_input=function(w){this.current_input=w},it.prototype.set_current_input=function(w){return this.session.set_current_input(w)},ke.prototype.set_current_output=function(w){this.current_input=w},it.prototype.set_current_output=function(w){return this.session.set_current_output(w)},ke.prototype.get_stream_by_alias=function(w){return this.streams[w]},it.prototype.get_stream_by_alias=function(w){return this.session.get_stream_by_alias(w)},ke.prototype.file_system_open=function(w,b,y){return this.file_system.open(w,b,y)},it.prototype.file_system_open=function(w,b,y){return this.session.file_system_open(w,b,y)},ke.prototype.get_char_conversion=function(w){return this.__char_conversion[w]||w},it.prototype.get_char_conversion=function(w){return this.session.get_char_conversion(w)},ke.prototype.parse=function(w){return this.thread.parse(w)},it.prototype.parse=function(w){var b=new U(this);b.new_text(w);var y=b.get_tokens();if(y===null)return!1;var F=W(this,y,0,this.__get_max_priority(),!1);return F.len!==y.length?!1:{value:F.value,expr:F,tokens:y}},ke.prototype.get_flag=function(w){return this.flag[w]},it.prototype.get_flag=function(w){return this.session.get_flag(w)},ke.prototype.add_rule=function(w,b){return b=b||{},b.from=b.from?b.from:\"$tau-js\",this.src_predicates[w.head.indicator]=b.from,this.rules[w.head.indicator]||(this.rules[w.head.indicator]=[]),this.rules[w.head.indicator].push(w),this.public_predicates.hasOwnProperty(w.head.indicator)||(this.public_predicates[w.head.indicator]=!1),!0},it.prototype.add_rule=function(w,b){return this.session.add_rule(w,b)},ke.prototype.run_directive=function(w){this.thread.run_directive(w)},it.prototype.run_directive=function(w){return x.type.is_directive(w)?(x.directive[w.indicator](this,w),!0):!1},ke.prototype.__get_max_priority=function(){return\"1200\"},it.prototype.__get_max_priority=function(){return this.session.__get_max_priority()},ke.prototype.__get_next_priority=function(w){var b=0;w=parseInt(w);for(var y in this.__operators)if(this.__operators.hasOwnProperty(y)){var F=parseInt(y);F>b&&F<w&&(b=F)}return b.toString()},it.prototype.__get_next_priority=function(w){return this.session.__get_next_priority(w)},ke.prototype.__lookup_operator_classes=function(w,b){return this.__operators.hasOwnProperty(w)&&this.__operators[w][b]instanceof Array&&this.__operators[w][b]||!1},it.prototype.__lookup_operator_classes=function(w,b){return this.session.__lookup_operator_classes(w,b)},ke.prototype.lookup_operator=function(w,b){for(var y in this.__operators)if(this.__operators[y][w]){for(var F=0;F<this.__operators[y][w].length;F++)if(b===0||this.__operators[y][w][F].length===b+1)return{priority:y,class:this.__operators[y][w][F]}}return null},it.prototype.lookup_operator=function(w,b){return this.session.lookup_operator(w,b)},ke.prototype.throw_warning=function(w){this.thread.throw_warning(w)},it.prototype.throw_warning=function(w){this.warnings.push(w)},ke.prototype.get_warnings=function(){return this.thread.get_warnings()},it.prototype.get_warnings=function(){return this.warnings},ke.prototype.add_goal=function(w,b){this.thread.add_goal(w,b)},it.prototype.add_goal=function(w,b,y){y=y||null,b===!0&&(this.points=[]);for(var F=w.variables(),z={},X=0;X<F.length;X++)z[F[X]]=new De(F[X]);this.points.push(new Pe(w,new Ne(z),y))},ke.prototype.consult=function(w,b){return this.thread.consult(w,b)},it.prototype.consult=function(w,b){var y=\"\";if(typeof w==\"string\"){y=w;var F=y.length;if(y.substring(F-3,F)===\".pl\"&&document.getElementById(y)){var z=document.getElementById(y),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=[],le(this,y,b)},ke.prototype.query=function(w){return this.thread.query(w)},it.prototype.query=function(w){return this.points=[],this.debugger_points=[],me(this,w)},ke.prototype.head_point=function(){return this.thread.head_point()},it.prototype.head_point=function(){return this.points[this.points.length-1]},ke.prototype.get_free_variable=function(w){return this.thread.get_free_variable(w)},it.prototype.get_free_variable=function(w){var b=[];if(w.id===\"_\"||this.session.renamed_variables[w.id]===void 0){for(this.session.rename++,this.points.length>0&&(b=this.head_point().substitution.domain());e(b,x.format_variable(this.session.rename))!==-1;)this.session.rename++;if(w.id===\"_\")return new De(x.format_variable(this.session.rename));this.session.renamed_variables[w.id]=x.format_variable(this.session.rename)}return new De(this.session.renamed_variables[w.id])},ke.prototype.next_free_variable=function(){return this.thread.next_free_variable()},it.prototype.next_free_variable=function(){this.session.rename++;var w=[];for(this.points.length>0&&(w=this.head_point().substitution.domain());e(w,x.format_variable(this.session.rename))!==-1;)this.session.rename++;return new De(x.format_variable(this.session.rename))},ke.prototype.is_public_predicate=function(w){return!this.public_predicates.hasOwnProperty(w)||this.public_predicates[w]===!0},it.prototype.is_public_predicate=function(w){return this.session.is_public_predicate(w)},ke.prototype.is_multifile_predicate=function(w){return this.multifile_predicates.hasOwnProperty(w)&&this.multifile_predicates[w]===!0},it.prototype.is_multifile_predicate=function(w){return this.session.is_multifile_predicate(w)},ke.prototype.prepend=function(w){return this.thread.prepend(w)},it.prototype.prepend=function(w){for(var b=w.length-1;b>=0;b--)this.points.push(w[b])},ke.prototype.success=function(w,b){return this.thread.success(w,b)},it.prototype.success=function(w,y){var y=typeof y>\"u\"?w:y;this.prepend([new Pe(w.goal.replace(null),w.substitution,y)])},ke.prototype.throw_error=function(w){return this.thread.throw_error(w)},it.prototype.throw_error=function(w){this.prepend([new Pe(new j(\"throw\",[w]),new Ne,null,null)])},ke.prototype.step_rule=function(w,b){return this.thread.step_rule(w,b)},it.prototype.step_rule=function(w,b){var y=b.indicator;if(w===\"user\"&&(w=null),w===null&&this.session.rules.hasOwnProperty(y))return this.session.rules[y];for(var F=w===null?this.session.modules:e(this.session.modules,w)===-1?[]:[w],z=0;z<F.length;z++){var X=x.module[F[z]];if(X.rules.hasOwnProperty(y)&&(X.rules.hasOwnProperty(this.level)||X.exports_predicate(y)))return x.module[F[z]].rules[y]}return null},ke.prototype.step=function(){return this.thread.step()},it.prototype.step=function(){if(this.points.length!==0){var w=!1,b=this.points.pop();if(this.debugger&&this.debugger_states.push(b),x.type.is_term(b.goal)){var y=b.goal.select(),F=null,z=[];if(y!==null){this.total_steps++;for(var X=b;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,x.type.is_term(y)&&y.indicator===\":/2\"&&(F=y.args[0].id,y=y.args[1]),F===null&&x.type.is_builtin(y))this.__call_indicator=y.indicator,w=x.predicate[y.indicator](this,b,y);else{var $=this.step_rule(F,y);if($===null)this.session.rules.hasOwnProperty(y.indicator)||(this.get_flag(\"unknown\").id===\"error\"?this.throw_error(x.error.existence(\"procedure\",y.indicator,this.level)):this.get_flag(\"unknown\").id===\"warning\"&&this.throw_warning(\"unknown procedure \"+y.indicator+\" (from \"+this.level+\")\"));else if($ instanceof Function)w=$(this,b,y);else{for(var oe in $)if($.hasOwnProperty(oe)){var xe=$[oe];this.session.renamed_variables={},xe=xe.rename(this);var Te=this.get_flag(\"occurs_check\").indicator===\"true/0\",lt=new Pe,Ct=x.unify(y,xe.head,Te);Ct!==null&&(lt.goal=b.goal.replace(xe.body),lt.goal!==null&&(lt.goal=lt.goal.apply(Ct)),lt.substitution=b.substitution.apply(Ct),lt.parent=b,z.push(lt))}this.prepend(z)}}}}else x.type.is_variable(b.goal)?this.throw_error(x.error.instantiation(this.level)):this.throw_error(x.error.type(\"callable\",b.goal,this.level));return w}},ke.prototype.answer=function(w){return this.thread.answer(w)},it.prototype.answer=function(w){w=w||function(b){},this.__calls.push(w),!(this.__calls.length>1)&&this.again()},ke.prototype.answers=function(w,b,y){return this.thread.answers(w,b,y)},it.prototype.answers=function(w,b,y){var F=b||1e3,z=this;if(b<=0){y&&y();return}this.answer(function(X){w(X),X!==!1?setTimeout(function(){z.answers(w,b-1,y)},1):y&&y()})},ke.prototype.again=function(w){return this.thread.again(w)},it.prototype.again=function(w){for(var b,y=Date.now();this.__calls.length>0;){for(this.warnings=[],w!==!1&&(this.current_limit=this.session.limit);this.current_limit>0&&this.points.length>0&&this.head_point().goal!==null&&!x.type.is_error(this.head_point().goal);)if(this.current_limit--,this.step()===!0)return;var F=Date.now();this.cpu_time_last=F-y,this.cpu_time+=this.cpu_time_last;var z=this.__calls.shift();this.current_limit<=0?z(null):this.points.length===0?z(!1):x.type.is_error(this.head_point().goal)?(b=this.session.format_error(this.points.pop()),this.points=[],z(b)):(this.debugger&&this.debugger_states.push(this.head_point()),b=this.session.format_success(this.points.pop()),z(b))}},ke.prototype.unfold=function(w){if(w.body===null)return!1;var b=w.head,y=w.body,F=y.select(),z=new it(this),X=[];z.add_goal(F),z.step();for(var $=z.points.length-1;$>=0;$--){var oe=z.points[$],xe=b.apply(oe.substitution),Te=y.replace(oe.goal);Te!==null&&(Te=Te.apply(oe.substitution)),X.push(new Ve(xe,Te))}var lt=this.rules[b.indicator],Ct=e(lt,w);return X.length>0&&Ct!==-1?(lt.splice.apply(lt,[Ct,1].concat(X)),!0):!1},it.prototype.unfold=function(w){return this.session.unfold(w)},De.prototype.interpret=function(w){return x.error.instantiation(w.level)},Re.prototype.interpret=function(w){return this},j.prototype.interpret=function(w){return x.type.is_unitary_list(this)?this.args[0].interpret(w):x.operate(w,this)},De.prototype.compare=function(w){return this.id<w.id?-1:this.id>w.id?1:0},Re.prototype.compare=function(w){if(this.value===w.value&&this.is_float===w.is_float)return 0;if(this.value<w.value||this.value===w.value&&this.is_float&&!w.is_float)return-1;if(this.value>w.value)return 1},j.prototype.compare=function(w){if(this.args.length<w.args.length||this.args.length===w.args.length&&this.id<w.id)return-1;if(this.args.length>w.args.length||this.args.length===w.args.length&&this.id>w.id)return 1;for(var b=0;b<this.args.length;b++){var y=x.compare(this.args[b],w.args[b]);if(y!==0)return y}return 0},Ne.prototype.lookup=function(w){return this.links[w]?this.links[w]:null},Ne.prototype.filter=function(w){var b={};for(var y in this.links)if(this.links.hasOwnProperty(y)){var F=this.links[y];w(y,F)&&(b[y]=F)}return new Ne(b)},Ne.prototype.exclude=function(w){var b={};for(var y in this.links)this.links.hasOwnProperty(y)&&e(w,y)===-1&&(b[y]=this.links[y]);return new Ne(b)},Ne.prototype.add=function(w,b){this.links[w]=b},Ne.prototype.domain=function(w){var b=w===!0?function(z){return z}:function(z){return new De(z)},y=[];for(var F in this.links)y.push(b(F));return y},De.prototype.compile=function(){return'new pl.type.Var(\"'+this.id.toString()+'\")'},Re.prototype.compile=function(){return\"new pl.type.Num(\"+this.value.toString()+\", \"+this.is_float.toString()+\")\"},j.prototype.compile=function(){return'new pl.type.Term(\"'+this.id.replace(/\"/g,'\\\\\"')+'\", ['+s(this.args,function(w){return w.compile()})+\"])\"},Ve.prototype.compile=function(){return\"new pl.type.Rule(\"+this.head.compile()+\", \"+(this.body===null?\"null\":this.body.compile())+\")\"},ke.prototype.compile=function(){var w,b=[],y;for(var F in this.rules)if(this.rules.hasOwnProperty(F)){var z=this.rules[F];y=[],w='\"'+F+'\": [';for(var X=0;X<z.length;X++)y.push(z[X].compile());w+=y.join(),w+=\"]\",b.push(w)}return\"{\"+b.join()+\"};\"},De.prototype.toJavaScript=function(){},Re.prototype.toJavaScript=function(){return this.value},j.prototype.toJavaScript=function(){if(this.args.length===0&&this.indicator!==\"[]/0\")return this.id;if(x.type.is_list(this)){for(var w=[],b=this,y;b.indicator===\"./2\";){if(y=b.args[0].toJavaScript(),y===void 0)return;w.push(y),b=b.args[1]}if(b.indicator===\"[]/0\")return w}},Ve.prototype.singleton_variables=function(){var w=this.head.variables(),b={},y=[];this.body!==null&&(w=w.concat(this.body.variables()));for(var F=0;F<w.length;F++)b[w[F]]===void 0&&(b[w[F]]=0),b[w[F]]++;for(var z in b)z!==\"_\"&&b[z]===1&&y.push(z);return y};var x={__env:typeof ec<\"u\"&&ec.exports?global:window,module:{},version:t,parser:{tokenizer:U,expression:W},utils:{str_indicator:Z,codePointAt:n,fromCodePoint:c},statistics:{getCountTerms:function(){return mt}},fromJavaScript:{test:{boolean:function(w){return w===!0||w===!1},number:function(w){return typeof w==\"number\"},string:function(w){return typeof w==\"string\"},list:function(w){return w instanceof Array},variable:function(w){return w===void 0},any:function(w){return!0}},conversion:{boolean:function(w){return new j(w?\"true\":\"false\",[])},number:function(w){return new Re(w,w%1!==0)},string:function(w){return new j(w,[])},list:function(w){for(var b=[],y,F=0;F<w.length;F++){if(y=x.fromJavaScript.apply(w[F]),y===void 0)return;b.push(y)}return g(b)},variable:function(w){return new De(\"_\")},any:function(w){}},apply:function(w){for(var b in x.fromJavaScript.test)if(b!==\"any\"&&x.fromJavaScript.test[b](w))return x.fromJavaScript.conversion[b](w);return x.fromJavaScript.conversion.any(w)}},type:{Var:De,Num:Re,Term:j,Rule:Ve,State:Pe,Stream:Fe,Module:Ue,Thread:it,Session:ke,Substitution:Ne,order:[De,Re,j,Fe],compare:function(w,b){var y=e(x.type.order,w.constructor),F=e(x.type.order,b.constructor);if(y<F)return-1;if(y>F)return 1;if(w.constructor===Re){if(w.is_float&&b.is_float)return 0;if(w.is_float)return-1;if(b.is_float)return 1}return 0},is_substitution:function(w){return w instanceof Ne},is_state:function(w){return w instanceof Pe},is_rule:function(w){return w instanceof Ve},is_variable:function(w){return w instanceof De},is_stream:function(w){return w instanceof Fe},is_anonymous_var:function(w){return w instanceof De&&w.id===\"_\"},is_callable:function(w){return w instanceof j},is_number:function(w){return w instanceof Re},is_integer:function(w){return w instanceof Re&&!w.is_float},is_float:function(w){return w instanceof Re&&w.is_float},is_term:function(w){return w instanceof j},is_atom:function(w){return w instanceof j&&w.args.length===0},is_ground:function(w){if(w instanceof De)return!1;if(w instanceof j){for(var b=0;b<w.args.length;b++)if(!x.type.is_ground(w.args[b]))return!1}return!0},is_atomic:function(w){return w instanceof j&&w.args.length===0||w instanceof Re},is_compound:function(w){return w instanceof j&&w.args.length>0},is_list:function(w){return w instanceof j&&(w.indicator===\"[]/0\"||w.indicator===\"./2\")},is_empty_list:function(w){return w instanceof j&&w.indicator===\"[]/0\"},is_non_empty_list:function(w){return w instanceof j&&w.indicator===\"./2\"},is_fully_list:function(w){for(;w instanceof j&&w.indicator===\"./2\";)w=w.args[1];return w instanceof De||w instanceof j&&w.indicator===\"[]/0\"},is_instantiated_list:function(w){for(;w instanceof j&&w.indicator===\"./2\";)w=w.args[1];return w instanceof j&&w.indicator===\"[]/0\"},is_unitary_list:function(w){return w instanceof j&&w.indicator===\"./2\"&&w.args[1]instanceof j&&w.args[1].indicator===\"[]/0\"},is_character:function(w){return w instanceof j&&(w.id.length===1||w.id.length>0&&w.id.length<=2&&n(w.id,0)>=65536)},is_character_code:function(w){return w instanceof Re&&!w.is_float&&w.value>=0&&w.value<=1114111},is_byte:function(w){return w instanceof Re&&!w.is_float&&w.value>=0&&w.value<=255},is_operator:function(w){return w instanceof j&&x.arithmetic.evaluation[w.indicator]},is_directive:function(w){return w instanceof j&&x.directive[w.indicator]!==void 0},is_builtin:function(w){return w instanceof j&&x.predicate[w.indicator]!==void 0},is_error:function(w){return w instanceof j&&w.indicator===\"throw/1\"},is_predicate_indicator:function(w){return w instanceof j&&w.indicator===\"//2\"&&w.args[0]instanceof j&&w.args[0].args.length===0&&w.args[1]instanceof Re&&w.args[1].is_float===!1},is_flag:function(w){return w instanceof j&&w.args.length===0&&x.flag[w.id]!==void 0},is_value_flag:function(w,b){if(!x.type.is_flag(w))return!1;for(var y in x.flag[w.id].allowed)if(x.flag[w.id].allowed.hasOwnProperty(y)&&x.flag[w.id].allowed[y].equals(b))return!0;return!1},is_io_mode:function(w){return x.type.is_atom(w)&&[\"read\",\"write\",\"append\"].indexOf(w.id)!==-1},is_stream_option:function(w){return x.type.is_term(w)&&(w.indicator===\"alias/1\"&&x.type.is_atom(w.args[0])||w.indicator===\"reposition/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"type/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\")||w.indicator===\"eof_action/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))},is_stream_position:function(w){return x.type.is_integer(w)&&w.value>=0||x.type.is_atom(w)&&(w.id===\"end_of_stream\"||w.id===\"past_end_of_stream\")},is_stream_property:function(w){return x.type.is_term(w)&&(w.indicator===\"input/0\"||w.indicator===\"output/0\"||w.indicator===\"alias/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator===\"file_name/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0]))||w.indicator===\"position/1\"&&(x.type.is_variable(w.args[0])||x.type.is_stream_position(w.args[0]))||w.indicator===\"reposition/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))||w.indicator===\"type/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"text\"||w.args[0].id===\"binary\"))||w.indicator===\"mode/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"read\"||w.args[0].id===\"write\"||w.args[0].id===\"append\"))||w.indicator===\"eof_action/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"error\"||w.args[0].id===\"eof_code\"||w.args[0].id===\"reset\"))||w.indicator===\"end_of_stream/1\"&&(x.type.is_variable(w.args[0])||x.type.is_atom(w.args[0])&&(w.args[0].id===\"at\"||w.args[0].id===\"past\"||w.args[0].id===\"not\")))},is_streamable:function(w){return w.__proto__.stream!==void 0},is_read_option:function(w){return x.type.is_term(w)&&[\"variables/1\",\"variable_names/1\",\"singletons/1\"].indexOf(w.indicator)!==-1},is_write_option:function(w){return x.type.is_term(w)&&(w.indicator===\"quoted/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"ignore_ops/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")||w.indicator===\"numbervars/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\"))},is_close_option:function(w){return x.type.is_term(w)&&w.indicator===\"force/1\"&&x.type.is_atom(w.args[0])&&(w.args[0].id===\"true\"||w.args[0].id===\"false\")},is_modifiable_flag:function(w){return x.type.is_flag(w)&&x.flag[w.id].changeable},is_module:function(w){return w instanceof j&&w.indicator===\"library/1\"&&w.args[0]instanceof j&&w.args[0].args.length===0&&x.module[w.args[0].id]!==void 0}},arithmetic:{evaluation:{\"e/0\":{type_args:null,type_result:!0,fn:function(w){return Math.E}},\"pi/0\":{type_args:null,type_result:!0,fn:function(w){return Math.PI}},\"tau/0\":{type_args:null,type_result:!0,fn:function(w){return 2*Math.PI}},\"epsilon/0\":{type_args:null,type_result:!0,fn:function(w){return Number.EPSILON}},\"+/1\":{type_args:null,type_result:null,fn:function(w,b){return w}},\"-/1\":{type_args:null,type_result:null,fn:function(w,b){return-w}},\"\\\\/1\":{type_args:!1,type_result:!1,fn:function(w,b){return~w}},\"abs/1\":{type_args:null,type_result:null,fn:function(w,b){return Math.abs(w)}},\"sign/1\":{type_args:null,type_result:null,fn:function(w,b){return Math.sign(w)}},\"float_integer_part/1\":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},\"float_fractional_part/1\":{type_args:!0,type_result:!0,fn:function(w,b){return w-parseInt(w)}},\"float/1\":{type_args:null,type_result:!0,fn:function(w,b){return parseFloat(w)}},\"floor/1\":{type_args:!0,type_result:!1,fn:function(w,b){return Math.floor(w)}},\"truncate/1\":{type_args:!0,type_result:!1,fn:function(w,b){return parseInt(w)}},\"round/1\":{type_args:!0,type_result:!1,fn:function(w,b){return Math.round(w)}},\"ceiling/1\":{type_args:!0,type_result:!1,fn:function(w,b){return Math.ceil(w)}},\"sin/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.sin(w)}},\"cos/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.cos(w)}},\"tan/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.tan(w)}},\"asin/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.asin(w)}},\"acos/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.acos(w)}},\"atan/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.atan(w)}},\"atan2/2\":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.atan2(w,b)}},\"exp/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.exp(w)}},\"sqrt/1\":{type_args:null,type_result:!0,fn:function(w,b){return Math.sqrt(w)}},\"log/1\":{type_args:null,type_result:!0,fn:function(w,b){return w>0?Math.log(w):x.error.evaluation(\"undefined\",b.__call_indicator)}},\"+/2\":{type_args:null,type_result:null,fn:function(w,b,y){return w+b}},\"-/2\":{type_args:null,type_result:null,fn:function(w,b,y){return w-b}},\"*/2\":{type_args:null,type_result:null,fn:function(w,b,y){return w*b}},\"//2\":{type_args:null,type_result:!0,fn:function(w,b,y){return b?w/b:x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"///2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?parseInt(w/b):x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"**/2\":{type_args:null,type_result:!0,fn:function(w,b,y){return Math.pow(w,b)}},\"^/2\":{type_args:null,type_result:null,fn:function(w,b,y){return Math.pow(w,b)}},\"<</2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w<<b}},\">>/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w>>b}},\"/\\\\/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w&b}},\"\\\\//2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w|b}},\"xor/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return w^b}},\"rem/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w%b:x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"mod/2\":{type_args:!1,type_result:!1,fn:function(w,b,y){return b?w-parseInt(w/b)*b:x.error.evaluation(\"zero_division\",y.__call_indicator)}},\"max/2\":{type_args:null,type_result:null,fn:function(w,b,y){return Math.max(w,b)}},\"min/2\":{type_args:null,type_result:null,fn:function(w,b,y){return Math.min(w,b)}}}},directive:{\"dynamic/1\":function(w,b){var y=b.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_compound(y)||y.indicator!==\"//2\")w.throw_error(x.error.type(\"predicate_indicator\",y,b.indicator));else if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type(\"atom\",y.args[0],b.indicator));else if(!x.type.is_integer(y.args[1]))w.throw_error(x.error.type(\"integer\",y.args[1],b.indicator));else{var F=b.args[0].args[0].id+\"/\"+b.args[0].args[1].value;w.session.public_predicates[F]=!0,w.session.rules[F]||(w.session.rules[F]=[])}},\"multifile/1\":function(w,b){var y=b.args[0];x.type.is_variable(y)?w.throw_error(x.error.instantiation(b.indicator)):!x.type.is_compound(y)||y.indicator!==\"//2\"?w.throw_error(x.error.type(\"predicate_indicator\",y,b.indicator)):x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1])?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_atom(y.args[0])?x.type.is_integer(y.args[1])?w.session.multifile_predicates[b.args[0].args[0].id+\"/\"+b.args[0].args[1].value]=!0:w.throw_error(x.error.type(\"integer\",y.args[1],b.indicator)):w.throw_error(x.error.type(\"atom\",y.args[0],b.indicator))},\"set_prolog_flag/2\":function(w,b){var y=b.args[0],F=b.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_atom(y)?x.type.is_flag(y)?x.type.is_value_flag(y,F)?x.type.is_modifiable_flag(y)?w.session.flag[y.id]=F:w.throw_error(x.error.permission(\"modify\",\"flag\",y)):w.throw_error(x.error.domain(\"flag_value\",new j(\"+\",[y,F]),b.indicator)):w.throw_error(x.error.domain(\"prolog_flag\",y,b.indicator)):w.throw_error(x.error.type(\"atom\",y,b.indicator))},\"use_module/1\":function(w,b){var y=b.args[0];if(x.type.is_variable(y))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_term(y))w.throw_error(x.error.type(\"term\",y,b.indicator));else if(x.type.is_module(y)){var F=y.args[0].id;e(w.session.modules,F)===-1&&w.session.modules.push(F)}},\"char_conversion/2\":function(w,b){var y=b.args[0],F=b.args[1];x.type.is_variable(y)||x.type.is_variable(F)?w.throw_error(x.error.instantiation(b.indicator)):x.type.is_character(y)?x.type.is_character(F)?y.id===F.id?delete w.session.__char_conversion[y.id]:w.session.__char_conversion[y.id]=F.id:w.throw_error(x.error.type(\"character\",F,b.indicator)):w.throw_error(x.error.type(\"character\",y,b.indicator))},\"op/3\":function(w,b){var y=b.args[0],F=b.args[1],z=b.args[2];if(x.type.is_variable(y)||x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(b.indicator));else if(!x.type.is_integer(y))w.throw_error(x.error.type(\"integer\",y,b.indicator));else if(!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,b.indicator));else if(!x.type.is_atom(z))w.throw_error(x.error.type(\"atom\",z,b.indicator));else if(y.value<0||y.value>1200)w.throw_error(x.error.domain(\"operator_priority\",y,b.indicator));else if(z.id===\",\")w.throw_error(x.error.permission(\"modify\",\"operator\",z,b.indicator));else if(z.id===\"|\"&&(y.value<1001||F.id.length!==3))w.throw_error(x.error.permission(\"modify\",\"operator\",z,b.indicator));else if([\"fy\",\"fx\",\"yf\",\"xf\",\"xfx\",\"yfx\",\"xfy\"].indexOf(F.id)===-1)w.throw_error(x.error.domain(\"operator_specifier\",F,b.indicator));else{var X={prefix:null,infix:null,postfix:null};for(var $ in w.session.__operators)if(w.session.__operators.hasOwnProperty($)){var oe=w.session.__operators[$][z.id];oe&&(e(oe,\"fx\")!==-1&&(X.prefix={priority:$,type:\"fx\"}),e(oe,\"fy\")!==-1&&(X.prefix={priority:$,type:\"fy\"}),e(oe,\"xf\")!==-1&&(X.postfix={priority:$,type:\"xf\"}),e(oe,\"yf\")!==-1&&(X.postfix={priority:$,type:\"yf\"}),e(oe,\"xfx\")!==-1&&(X.infix={priority:$,type:\"xfx\"}),e(oe,\"xfy\")!==-1&&(X.infix={priority:$,type:\"xfy\"}),e(oe,\"yfx\")!==-1&&(X.infix={priority:$,type:\"yfx\"}))}var xe;switch(F.id){case\"fy\":case\"fx\":xe=\"prefix\";break;case\"yf\":case\"xf\":xe=\"postfix\";break;default:xe=\"infix\";break}if(((X.prefix&&xe===\"prefix\"||X.postfix&&xe===\"postfix\"||X.infix&&xe===\"infix\")&&X[xe].type!==F.id||X.infix&&xe===\"postfix\"||X.postfix&&xe===\"infix\")&&y.value!==0)w.throw_error(x.error.permission(\"create\",\"operator\",z,b.indicator));else return X[xe]&&(we(w.session.__operators[X[xe].priority][z.id],F.id),w.session.__operators[X[xe].priority][z.id].length===0&&delete w.session.__operators[X[xe].priority][z.id]),y.value>0&&(w.session.__operators[y.value]||(w.session.__operators[y.value.toString()]={}),w.session.__operators[y.value][z.id]||(w.session.__operators[y.value][z.id]=[]),w.session.__operators[y.value][z.id].push(F.id)),!0}}},predicate:{\"op/3\":function(w,b,y){x.directive[\"op/3\"](w,y)&&w.success(b)},\"current_op/3\":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=[];for(var oe in w.session.__operators)for(var xe in w.session.__operators[oe])for(var Te=0;Te<w.session.__operators[oe][xe].length;Te++)$.push(new Pe(b.goal.replace(new j(\",\",[new j(\"=\",[new Re(oe,!1),F]),new j(\",\",[new j(\"=\",[new j(w.session.__operators[oe][xe][Te],[]),z]),new j(\"=\",[new j(xe,[]),X])])])),b.substitution,b));w.prepend($)},\";/2\":function(w,b,y){if(x.type.is_term(y.args[0])&&y.args[0].indicator===\"->/2\"){var F=w.points,z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(Te){return Te.substitution},w.session.format_error=function(Te){return Te.goal},w.points=[new Pe(y.args[0].args[0],b.substitution,b)];var $=function(Te){w.points=F,w.session.format_success=z,w.session.format_error=X,Te===!1?w.prepend([new Pe(b.goal.replace(y.args[1]),b.substitution,b)]):x.type.is_error(Te)?w.throw_error(Te.args[0]):Te===null?(w.prepend([b]),w.__calls.shift()(null)):w.prepend([new Pe(b.goal.replace(y.args[0].args[1]).apply(Te),b.substitution.apply(Te),b)])};w.__calls.unshift($)}else{var oe=new Pe(b.goal.replace(y.args[0]),b.substitution,b),xe=new Pe(b.goal.replace(y.args[1]),b.substitution,b);w.prepend([oe,xe])}},\"!/0\":function(w,b,y){var F,z,X=[];for(F=b,z=null;F.parent!==null&&F.parent.goal.search(y);)if(z=F,F=F.parent,F.goal!==null){var $=F.goal.select();if($&&$.id===\"call\"&&$.search(y)){F=z;break}}for(var oe=w.points.length-1;oe>=0;oe--){for(var xe=w.points[oe],Te=xe.parent;Te!==null&&Te!==F.parent;)Te=Te.parent;Te===null&&Te!==F.parent&&X.push(xe)}w.points=X.reverse(),w.success(b)},\"\\\\+/1\":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(w.level)):x.type.is_callable(F)?w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\",\",[new j(\"call\",[F]),new j(\"!\",[])]),new j(\"fail\",[])])),b.substitution,b),new Pe(b.goal.replace(null),b.substitution,b)]):w.throw_error(x.error.type(\"callable\",F,w.level))},\"->/2\":function(w,b,y){var F=b.goal.replace(new j(\",\",[y.args[0],new j(\",\",[new j(\"!\"),y.args[1]])]));w.prepend([new Pe(F,b.substitution,b)])},\"fail/0\":function(w,b,y){},\"false/0\":function(w,b,y){},\"true/0\":function(w,b,y){w.success(b)},\"call/1\":se(1),\"call/2\":se(2),\"call/3\":se(3),\"call/4\":se(4),\"call/5\":se(5),\"call/6\":se(6),\"call/7\":se(7),\"call/8\":se(8),\"once/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"call\",[F]),new j(\"!\",[])])),b.substitution,b)])},\"forall/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"\\\\+\",[new j(\",\",[new j(\"call\",[F]),new j(\"\\\\+\",[new j(\"call\",[z])])])])),b.substitution,b)])},\"repeat/0\":function(w,b,y){w.prepend([new Pe(b.goal.replace(null),b.substitution,b),b])},\"throw/1\":function(w,b,y){x.type.is_variable(y.args[0])?w.throw_error(x.error.instantiation(w.level)):w.throw_error(y.args[0])},\"catch/3\":function(w,b,y){var F=w.points;w.points=[],w.prepend([new Pe(y.args[0],b.substitution,b)]);var z=w.session.format_success,X=w.session.format_error;w.session.format_success=function(oe){return oe.substitution},w.session.format_error=function(oe){return oe.goal};var $=function(oe){var xe=w.points;if(w.points=F,w.session.format_success=z,w.session.format_error=X,x.type.is_error(oe)){for(var Te=[],lt=w.points.length-1;lt>=0;lt--){for(var ir=w.points[lt],Ct=ir.parent;Ct!==null&&Ct!==b.parent;)Ct=Ct.parent;Ct===null&&Ct!==b.parent&&Te.push(ir)}w.points=Te;var qt=w.get_flag(\"occurs_check\").indicator===\"true/0\",ir=new Pe,Pt=x.unify(oe.args[0],y.args[1],qt);Pt!==null?(ir.substitution=b.substitution.apply(Pt),ir.goal=b.goal.replace(y.args[2]).apply(Pt),ir.parent=b,w.prepend([ir])):w.throw_error(oe.args[0])}else if(oe!==!1){for(var gn=oe===null?[]:[new Pe(b.goal.apply(oe).replace(null),b.substitution.apply(oe),b)],Pr=[],lt=xe.length-1;lt>=0;lt--){Pr.push(xe[lt]);var Ir=xe[lt].goal!==null?xe[lt].goal.select():null;if(x.type.is_term(Ir)&&Ir.indicator===\"!/0\")break}var Or=s(Pr,function(on){return on.goal===null&&(on.goal=new j(\"true\",[])),on=new Pe(b.goal.replace(new j(\"catch\",[on.goal,y.args[1],y.args[2]])),b.substitution.apply(on.substitution),on.parent),on.exclude=y.args[0].variables(),on}).reverse();w.prepend(Or),w.prepend(gn),oe===null&&(this.current_limit=0,w.__calls.shift()(null))}};w.__calls.unshift($)},\"=/2\":function(w,b,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=new Pe,X=x.unify(y.args[0],y.args[1],F);X!==null&&(z.goal=b.goal.apply(X).replace(null),z.substitution=b.substitution.apply(X),z.parent=b,w.prepend([z]))},\"unify_with_occurs_check/2\":function(w,b,y){var F=new Pe,z=x.unify(y.args[0],y.args[1],!0);z!==null&&(F.goal=b.goal.apply(z).replace(null),F.substitution=b.substitution.apply(z),F.parent=b,w.prepend([F]))},\"\\\\=/2\":function(w,b,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=x.unify(y.args[0],y.args[1],F);z===null&&w.success(b)},\"subsumes_term/2\":function(w,b,y){var F=w.get_flag(\"occurs_check\").indicator===\"true/0\",z=x.unify(y.args[1],y.args[0],F);z!==null&&y.args[1].apply(z).equals(y.args[1])&&w.success(b)},\"findall/3\":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(z))w.throw_error(x.error.type(\"callable\",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else{var $=w.next_free_variable(),oe=new j(\",\",[z,new j(\"=\",[$,F])]),xe=w.points,Te=w.session.limit,lt=w.session.format_success;w.session.format_success=function(ir){return ir.substitution},w.add_goal(oe,!0,b);var Ct=[],qt=function(ir){if(ir!==!1&&ir!==null&&!x.type.is_error(ir))w.__calls.unshift(qt),Ct.push(ir.links[$.id]),w.session.limit=w.current_limit;else if(w.points=xe,w.session.limit=Te,w.session.format_success=lt,x.type.is_error(ir))w.throw_error(ir.args[0]);else if(w.current_limit>0){for(var Pt=new j(\"[]\"),gn=Ct.length-1;gn>=0;gn--)Pt=new j(\".\",[Ct[gn],Pt]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[X,Pt])),b.substitution,b)])}};w.__calls.unshift(qt)}},\"bagof/3\":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))w.throw_error(x.error.type(\"callable\",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type(\"list\",$,y.indicator));else{var oe=w.next_free_variable(),xe;X.indicator===\"^/2\"?(xe=X.args[0].variables(),X=X.args[1]):xe=[],xe=xe.concat(z.variables());for(var Te=X.variables().filter(function(Or){return e(xe,Or)===-1}),lt=new j(\"[]\"),Ct=Te.length-1;Ct>=0;Ct--)lt=new j(\".\",[new De(Te[Ct]),lt]);var qt=new j(\",\",[X,new j(\"=\",[oe,new j(\",\",[lt,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!x.type.is_error(Or)){w.__calls.unshift(Ir);var on=!1,ai=Or.links[oe.id].args[0],Io=Or.links[oe.id].args[1];for(var rs in Pr)if(Pr.hasOwnProperty(rs)){var $s=Pr[rs];if($s.variables.equals(ai)){$s.answers.push(Io),on=!0;break}}on||Pr.push({variables:ai,answers:[Io]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,x.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Co=[],ji=0;ji<Pr.length;ji++){Or=Pr[ji].answers;for(var eo=new j(\"[]\"),wo=Or.length-1;wo>=0;wo--)eo=new j(\".\",[Or[wo],eo]);Co.push(new Pe(b.goal.replace(new j(\",\",[new j(\"=\",[lt,Pr[ji].variables]),new j(\"=\",[$,eo])])),b.substitution,b))}w.prepend(Co)}};w.__calls.unshift(Ir)}},\"setof/3\":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(X))w.throw_error(x.error.type(\"callable\",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_list($))w.throw_error(x.error.type(\"list\",$,y.indicator));else{var oe=w.next_free_variable(),xe;X.indicator===\"^/2\"?(xe=X.args[0].variables(),X=X.args[1]):xe=[],xe=xe.concat(z.variables());for(var Te=X.variables().filter(function(Or){return e(xe,Or)===-1}),lt=new j(\"[]\"),Ct=Te.length-1;Ct>=0;Ct--)lt=new j(\".\",[new De(Te[Ct]),lt]);var qt=new j(\",\",[X,new j(\"=\",[oe,new j(\",\",[lt,z])])]),ir=w.points,Pt=w.session.limit,gn=w.session.format_success;w.session.format_success=function(Or){return Or.substitution},w.add_goal(qt,!0,b);var Pr=[],Ir=function(Or){if(Or!==!1&&Or!==null&&!x.type.is_error(Or)){w.__calls.unshift(Ir);var on=!1,ai=Or.links[oe.id].args[0],Io=Or.links[oe.id].args[1];for(var rs in Pr)if(Pr.hasOwnProperty(rs)){var $s=Pr[rs];if($s.variables.equals(ai)){$s.answers.push(Io),on=!0;break}}on||Pr.push({variables:ai,answers:[Io]}),w.session.limit=w.current_limit}else if(w.points=ir,w.session.limit=Pt,w.session.format_success=gn,x.type.is_error(Or))w.throw_error(Or.args[0]);else if(w.current_limit>0){for(var Co=[],ji=0;ji<Pr.length;ji++){Or=Pr[ji].answers.sort(x.compare);for(var eo=new j(\"[]\"),wo=Or.length-1;wo>=0;wo--)eo=new j(\".\",[Or[wo],eo]);Co.push(new Pe(b.goal.replace(new j(\",\",[new j(\"=\",[lt,Pr[ji].variables]),new j(\"=\",[$,eo])])),b.substitution,b))}w.prepend(Co)}};w.__calls.unshift(Ir)}},\"functor/3\":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2];if(x.type.is_variable(z)&&(x.type.is_variable(X)||x.type.is_variable($)))w.throw_error(x.error.instantiation(\"functor/3\"));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type(\"integer\",y.args[2],\"functor/3\"));else if(!x.type.is_variable(X)&&!x.type.is_atomic(X))w.throw_error(x.error.type(\"atomic\",y.args[1],\"functor/3\"));else if(x.type.is_integer(X)&&x.type.is_integer($)&&$.value!==0)w.throw_error(x.error.type(\"atom\",y.args[1],\"functor/3\"));else if(x.type.is_variable(z)){if(y.args[2].value>=0){for(var oe=[],xe=0;xe<$.value;xe++)oe.push(w.next_free_variable());var Te=x.type.is_integer(X)?X:new j(X.id,oe);w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,Te])),b.substitution,b)])}}else{var lt=x.type.is_integer(z)?z:new j(z.id,[]),Ct=x.type.is_integer(z)?new Re(0,!1):new Re(z.args.length,!1),qt=new j(\",\",[new j(\"=\",[lt,X]),new j(\"=\",[Ct,$])]);w.prepend([new Pe(b.goal.replace(qt),b.substitution,b)])}},\"arg/3\":function(w,b,y){if(x.type.is_variable(y.args[0])||x.type.is_variable(y.args[1]))w.throw_error(x.error.instantiation(y.indicator));else if(y.args[0].value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",y.args[0],y.indicator));else if(!x.type.is_compound(y.args[1]))w.throw_error(x.error.type(\"compound\",y.args[1],y.indicator));else{var F=y.args[0].value;if(F>0&&F<=y.args[1].args.length){var z=new j(\"=\",[y.args[1].args[F-1],y.args[2]]);w.prepend([new Pe(b.goal.replace(z),b.substitution,b)])}}},\"=../2\":function(w,b,y){var F;if(x.type.is_variable(y.args[0])&&(x.type.is_variable(y.args[1])||x.type.is_non_empty_list(y.args[1])&&x.type.is_variable(y.args[1].args[0])))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_fully_list(y.args[1]))w.throw_error(x.error.type(\"list\",y.args[1],y.indicator));else if(x.type.is_variable(y.args[0])){if(!x.type.is_variable(y.args[1])){var X=[];for(F=y.args[1].args[1];F.indicator===\"./2\";)X.push(F.args[0]),F=F.args[1];x.type.is_variable(y.args[0])&&x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):X.length===0&&x.type.is_compound(y.args[1].args[0])?w.throw_error(x.error.type(\"atomic\",y.args[1].args[0],y.indicator)):X.length>0&&(x.type.is_compound(y.args[1].args[0])||x.type.is_number(y.args[1].args[0]))?w.throw_error(x.error.type(\"atom\",y.args[1].args[0],y.indicator)):X.length===0?w.prepend([new Pe(b.goal.replace(new j(\"=\",[y.args[1].args[0],y.args[0]],b)),b.substitution,b)]):w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j(y.args[1].args[0].id,X),y.args[0]])),b.substitution,b)])}}else{if(x.type.is_atomic(y.args[0]))F=new j(\".\",[y.args[0],new j(\"[]\")]);else{F=new j(\"[]\");for(var z=y.args[0].args.length-1;z>=0;z--)F=new j(\".\",[y.args[0].args[z],F]);F=new j(\".\",[new j(y.args[0].id),F])}w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,y.args[1]])),b.substitution,b)])}},\"copy_term/2\":function(w,b,y){var F=y.args[0].rename(w);w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,y.args[1]])),b.substitution,b.parent)])},\"term_variables/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(!x.type.is_fully_list(z))w.throw_error(x.error.type(\"list\",z,y.indicator));else{var X=g(s(ye(F.variables()),function($){return new De($)}));w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,X])),b.substitution,b)])}},\"clause/2\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_callable(y.args[1]))w.throw_error(x.error.type(\"callable\",y.args[1],y.indicator));else if(w.session.rules[y.args[0].indicator]!==void 0)if(w.is_public_predicate(y.args[0].indicator)){var F=[];for(var z in w.session.rules[y.args[0].indicator])if(w.session.rules[y.args[0].indicator].hasOwnProperty(z)){var X=w.session.rules[y.args[0].indicator][z];w.session.renamed_variables={},X=X.rename(w),X.body===null&&(X.body=new j(\"true\"));var $=new j(\",\",[new j(\"=\",[X.head,y.args[0]]),new j(\"=\",[X.body,y.args[1]])]);F.push(new Pe(b.goal.replace($),b.substitution,b))}w.prepend(F)}else w.throw_error(x.error.permission(\"access\",\"private_procedure\",y.args[0].indicator,y.indicator))},\"current_predicate/1\":function(w,b,y){var F=y.args[0];if(!x.type.is_variable(F)&&(!x.type.is_compound(F)||F.indicator!==\"//2\"))w.throw_error(x.error.type(\"predicate_indicator\",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[0])&&!x.type.is_atom(F.args[0]))w.throw_error(x.error.type(\"atom\",F.args[0],y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_variable(F.args[1])&&!x.type.is_integer(F.args[1]))w.throw_error(x.error.type(\"integer\",F.args[1],y.indicator));else{var z=[];for(var X in w.session.rules)if(w.session.rules.hasOwnProperty(X)){var $=X.lastIndexOf(\"/\"),oe=X.substr(0,$),xe=parseInt(X.substr($+1,X.length-($+1))),Te=new j(\"/\",[new j(oe),new Re(xe,!1)]),lt=new j(\"=\",[Te,F]);z.push(new Pe(b.goal.replace(lt),b.substitution,b))}w.prepend(z)}},\"asserta/1\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator]=[new Ve(F,z,!0)].concat(w.session.rules[F.indicator]),w.success(b)):w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(x.error.type(\"callable\",F,y.indicator))}},\"assertz/1\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=Ce(y.args[0].args[1])):(F=y.args[0],z=null),x.type.is_callable(F)?z!==null&&!x.type.is_callable(z)?w.throw_error(x.error.type(\"callable\",z,y.indicator)):w.is_public_predicate(F.indicator)?(w.session.rules[F.indicator]===void 0&&(w.session.rules[F.indicator]=[]),w.session.public_predicates[F.indicator]=!0,w.session.rules[F.indicator].push(new Ve(F,z,!0)),w.success(b)):w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator)):w.throw_error(x.error.type(\"callable\",F,y.indicator))}},\"retract/1\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_callable(y.args[0]))w.throw_error(x.error.type(\"callable\",y.args[0],y.indicator));else{var F,z;if(y.args[0].indicator===\":-/2\"?(F=y.args[0].args[0],z=y.args[0].args[1]):(F=y.args[0],z=new j(\"true\")),typeof b.retract>\"u\")if(w.is_public_predicate(F.indicator)){if(w.session.rules[F.indicator]!==void 0){for(var X=[],$=0;$<w.session.rules[F.indicator].length;$++){w.session.renamed_variables={};var oe=w.session.rules[F.indicator][$],xe=oe.rename(w);xe.body===null&&(xe.body=new j(\"true\",[]));var Te=w.get_flag(\"occurs_check\").indicator===\"true/0\",lt=x.unify(new j(\",\",[F,z]),new j(\",\",[xe.head,xe.body]),Te);if(lt!==null){var Ct=new Pe(b.goal.replace(new j(\",\",[new j(\"retract\",[new j(\":-\",[F,z])]),new j(\",\",[new j(\"=\",[F,xe.head]),new j(\"=\",[z,xe.body])])])),b.substitution,b);Ct.retract=oe,X.push(Ct)}}w.prepend(X)}}else w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F.indicator,y.indicator));else Ae(w,b,F.indicator,b.retract)}},\"retractall/1\":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_callable(F)?w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"retract\",[new x.type.Term(\":-\",[F,new De(\"_\")])]),new j(\"fail\",[])])),b.substitution,b),new Pe(b.goal.replace(null),b.substitution,b)]):w.throw_error(x.error.type(\"callable\",F,y.indicator))},\"abolish/1\":function(w,b,y){if(x.type.is_variable(y.args[0])||x.type.is_term(y.args[0])&&y.args[0].indicator===\"//2\"&&(x.type.is_variable(y.args[0].args[0])||x.type.is_variable(y.args[0].args[1])))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_term(y.args[0])||y.args[0].indicator!==\"//2\")w.throw_error(x.error.type(\"predicate_indicator\",y.args[0],y.indicator));else if(!x.type.is_atom(y.args[0].args[0]))w.throw_error(x.error.type(\"atom\",y.args[0].args[0],y.indicator));else if(!x.type.is_integer(y.args[0].args[1]))w.throw_error(x.error.type(\"integer\",y.args[0].args[1],y.indicator));else if(y.args[0].args[1].value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",y.args[0].args[1],y.indicator));else if(x.type.is_number(w.get_flag(\"max_arity\"))&&y.args[0].args[1].value>w.get_flag(\"max_arity\").value)w.throw_error(x.error.representation(\"max_arity\",y.indicator));else{var F=y.args[0].args[0].id+\"/\"+y.args[0].args[1].value;w.is_public_predicate(F)?(delete w.session.rules[F],w.success(b)):w.throw_error(x.error.permission(\"modify\",\"static_procedure\",F,y.indicator))}},\"atom_length/2\":function(w,b,y){if(x.type.is_variable(y.args[0]))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_atom(y.args[0]))w.throw_error(x.error.type(\"atom\",y.args[0],y.indicator));else if(!x.type.is_variable(y.args[1])&&!x.type.is_integer(y.args[1]))w.throw_error(x.error.type(\"integer\",y.args[1],y.indicator));else if(x.type.is_integer(y.args[1])&&y.args[1].value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",y.args[1],y.indicator));else{var F=new Re(y.args[0].id.length,!1);w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,y.args[1]])),b.substitution,b)])}},\"atom_concat/3\":function(w,b,y){var F,z,X=y.args[0],$=y.args[1],oe=y.args[2];if(x.type.is_variable(oe)&&(x.type.is_variable(X)||x.type.is_variable($)))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))w.throw_error(x.error.type(\"atom\",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_atom($))w.throw_error(x.error.type(\"atom\",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_atom(oe))w.throw_error(x.error.type(\"atom\",oe,y.indicator));else{var xe=x.type.is_variable(X),Te=x.type.is_variable($);if(!xe&&!Te)z=new j(\"=\",[oe,new j(X.id+$.id)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]);else if(xe&&!Te)F=oe.id.substr(0,oe.id.length-$.id.length),F+$.id===oe.id&&(z=new j(\"=\",[X,new j(F)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]));else if(Te&&!xe)F=oe.id.substr(X.id.length),X.id+F===oe.id&&(z=new j(\"=\",[$,new j(F)]),w.prepend([new Pe(b.goal.replace(z),b.substitution,b)]));else{for(var lt=[],Ct=0;Ct<=oe.id.length;Ct++){var qt=new j(oe.id.substr(0,Ct)),ir=new j(oe.id.substr(Ct));z=new j(\",\",[new j(\"=\",[qt,X]),new j(\"=\",[ir,$])]),lt.push(new Pe(b.goal.replace(z),b.substitution,b))}w.prepend(lt)}}},\"sub_atom/5\":function(w,b,y){var F,z=y.args[0],X=y.args[1],$=y.args[2],oe=y.args[3],xe=y.args[4];if(x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))w.throw_error(x.error.type(\"integer\",X,y.indicator));else if(!x.type.is_variable($)&&!x.type.is_integer($))w.throw_error(x.error.type(\"integer\",$,y.indicator));else if(!x.type.is_variable(oe)&&!x.type.is_integer(oe))w.throw_error(x.error.type(\"integer\",oe,y.indicator));else if(x.type.is_integer(X)&&X.value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",X,y.indicator));else if(x.type.is_integer($)&&$.value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",$,y.indicator));else if(x.type.is_integer(oe)&&oe.value<0)w.throw_error(x.error.domain(\"not_less_than_zero\",oe,y.indicator));else{var Te=[],lt=[],Ct=[];if(x.type.is_variable(X))for(F=0;F<=z.id.length;F++)Te.push(F);else Te.push(X.value);if(x.type.is_variable($))for(F=0;F<=z.id.length;F++)lt.push(F);else lt.push($.value);if(x.type.is_variable(oe))for(F=0;F<=z.id.length;F++)Ct.push(F);else Ct.push(oe.value);var qt=[];for(var ir in Te)if(Te.hasOwnProperty(ir)){F=Te[ir];for(var Pt in lt)if(lt.hasOwnProperty(Pt)){var gn=lt[Pt],Pr=z.id.length-F-gn;if(e(Ct,Pr)!==-1&&F+gn+Pr===z.id.length){var Ir=z.id.substr(F,gn);if(z.id===z.id.substr(0,F)+Ir+z.id.substr(F+gn,Pr)){var Or=new j(\"=\",[new j(Ir),xe]),on=new j(\"=\",[X,new Re(F)]),ai=new j(\"=\",[$,new Re(gn)]),Io=new j(\"=\",[oe,new Re(Pr)]),rs=new j(\",\",[new j(\",\",[new j(\",\",[on,ai]),Io]),Or]);qt.push(new Pe(b.goal.replace(rs),b.substitution,b))}}}}w.prepend(qt)}},\"atom_chars/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Te=\"\";oe.indicator===\"./2\";){if(x.type.is_character(oe.args[0]))Te+=oe.args[0].id;else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type(\"character\",oe.args[0],y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type(\"list\",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j(Te),F])),b.substitution,b)])}else{for(var X=new j(\"[]\"),$=F.id.length-1;$>=0;$--)X=new j(\".\",[new j(F.id.charAt($)),X]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,X])),b.substitution,b)])}},\"atom_codes/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(x.type.is_variable(F)){for(var oe=z,xe=x.type.is_variable(F),Te=\"\";oe.indicator===\"./2\";){if(x.type.is_character_code(oe.args[0]))Te+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0])&&xe){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.representation(\"character_code\",y.indicator));return}oe=oe.args[1]}x.type.is_variable(oe)&&xe?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)?w.throw_error(x.error.type(\"list\",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j(Te),F])),b.substitution,b)])}else{for(var X=new j(\"[]\"),$=F.id.length-1;$>=0;$--)X=new j(\".\",[new Re(n(F.id,$),!1),X]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,X])),b.substitution,b)])}},\"char_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(x.type.is_variable(F)&&x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_character(F))w.throw_error(x.error.type(\"character\",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",z,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character_code(z))w.throw_error(x.error.representation(\"character_code\",y.indicator));else if(x.type.is_variable(z)){var X=new Re(n(F.id,0),!1);w.prepend([new Pe(b.goal.replace(new j(\"=\",[X,z])),b.substitution,b)])}else{var $=new j(c(z.value));w.prepend([new Pe(b.goal.replace(new j(\"=\",[$,F])),b.substitution,b)])}},\"number_chars/2\":function(w,b,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type(\"number\",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(X)){var oe=X,xe=!0;for(F=\"\";oe.indicator===\"./2\";){if(x.type.is_character(oe.args[0]))F+=oe.args[0].id;else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type(\"character\",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type(\"list\",X,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Te=w.parse(F),lt=Te.value;!x.type.is_number(lt)||Te.tokens[Te.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,lt])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new j(\"[]\"),qt=F.length-1;qt>=0;qt--)Ct=new j(\".\",[new j(F.charAt(qt)),Ct]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[X,Ct])),b.substitution,b)])}}},\"number_codes/2\":function(w,b,y){var F,z=y.args[0],X=y.args[1];if(x.type.is_variable(z)&&x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_number(z))w.throw_error(x.error.type(\"number\",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else{var $=x.type.is_variable(z);if(!x.type.is_variable(X)){var oe=X,xe=!0;for(F=\"\";oe.indicator===\"./2\";){if(x.type.is_character_code(oe.args[0]))F+=c(oe.args[0].value);else if(x.type.is_variable(oe.args[0]))xe=!1;else if(!x.type.is_variable(oe.args[0])){w.throw_error(x.error.type(\"character_code\",oe.args[0],y.indicator));return}oe=oe.args[1]}if(xe=xe&&x.type.is_empty_list(oe),!x.type.is_empty_list(oe)&&!x.type.is_variable(oe)){w.throw_error(x.error.type(\"list\",X,y.indicator));return}if(!xe&&$){w.throw_error(x.error.instantiation(y.indicator));return}else if(xe)if(x.type.is_variable(oe)&&$){w.throw_error(x.error.instantiation(y.indicator));return}else{var Te=w.parse(F),lt=Te.value;!x.type.is_number(lt)||Te.tokens[Te.tokens.length-1].space?w.throw_error(x.error.syntax_by_predicate(\"parseable_number\",y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,lt])),b.substitution,b)]);return}}if(!$){F=z.toString();for(var Ct=new j(\"[]\"),qt=F.length-1;qt>=0;qt--)Ct=new j(\".\",[new Re(n(F,qt),!1),Ct]);w.prepend([new Pe(b.goal.replace(new j(\"=\",[X,Ct])),b.substitution,b)])}}},\"upcase_atom/2\":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type(\"atom\",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,new j(F.id.toUpperCase(),[])])),b.substitution,b)]):w.throw_error(x.error.type(\"atom\",F,y.indicator))},\"downcase_atom/2\":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?!x.type.is_variable(z)&&!x.type.is_atom(z)?w.throw_error(x.error.type(\"atom\",z,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,new j(F.id.toLowerCase(),[])])),b.substitution,b)]):w.throw_error(x.error.type(\"atom\",F,y.indicator))},\"atomic_list_concat/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"atomic_list_concat\",[F,new j(\"\",[]),z])),b.substitution,b)])},\"atomic_list_concat/3\":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(z)||x.type.is_variable(F)&&x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_list(F))w.throw_error(x.error.type(\"list\",F,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_atom(X))w.throw_error(x.error.type(\"atom\",X,y.indicator));else if(x.type.is_variable(X)){for(var oe=\"\",xe=F;x.type.is_term(xe)&&xe.indicator===\"./2\";){if(!x.type.is_atom(xe.args[0])&&!x.type.is_number(xe.args[0])){w.throw_error(x.error.type(\"atomic\",xe.args[0],y.indicator));return}oe!==\"\"&&(oe+=z.id),x.type.is_atom(xe.args[0])?oe+=xe.args[0].id:oe+=\"\"+xe.args[0].value,xe=xe.args[1]}oe=new j(oe,[]),x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_term(xe)||xe.indicator!==\"[]/0\"?w.throw_error(x.error.type(\"list\",F,y.indicator)):w.prepend([new Pe(b.goal.replace(new j(\"=\",[oe,X])),b.substitution,b)])}else{var $=g(s(X.id.split(z.id),function(Te){return new j(Te,[])}));w.prepend([new Pe(b.goal.replace(new j(\"=\",[$,F])),b.substitution,b)])}},\"@=</2\":function(w,b,y){x.compare(y.args[0],y.args[1])<=0&&w.success(b)},\"==/2\":function(w,b,y){x.compare(y.args[0],y.args[1])===0&&w.success(b)},\"\\\\==/2\":function(w,b,y){x.compare(y.args[0],y.args[1])!==0&&w.success(b)},\"@</2\":function(w,b,y){x.compare(y.args[0],y.args[1])<0&&w.success(b)},\"@>/2\":function(w,b,y){x.compare(y.args[0],y.args[1])>0&&w.success(b)},\"@>=/2\":function(w,b,y){x.compare(y.args[0],y.args[1])>=0&&w.success(b)},\"compare/3\":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(x.type.is_atom(F)&&[\"<\",\">\",\"=\"].indexOf(F.id)===-1)w.throw_error(x.type.domain(\"order\",F,y.indicator));else{var $=x.compare(z,X);$=$===0?\"=\":$===-1?\"<\":\">\",w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,new j($,[])])),b.substitution,b)])}},\"is/2\":function(w,b,y){var F=y.args[1].interpret(w);x.type.is_number(F)?w.prepend([new Pe(b.goal.replace(new j(\"=\",[y.args[0],F],w.level)),b.substitution,b)]):w.throw_error(F)},\"between/3\":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_integer(F))w.throw_error(x.error.type(\"integer\",F,y.indicator));else if(!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",z,y.indicator));else if(!x.type.is_variable(X)&&!x.type.is_integer(X))w.throw_error(x.error.type(\"integer\",X,y.indicator));else if(x.type.is_variable(X)){var $=[new Pe(b.goal.replace(new j(\"=\",[X,F])),b.substitution,b)];F.value<z.value&&$.push(new Pe(b.goal.replace(new j(\"between\",[new Re(F.value+1,!1),z,X])),b.substitution,b)),w.prepend($)}else F.value<=X.value&&z.value>=X.value&&w.success(b)},\"succ/2\":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)&&x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_integer(F)?w.throw_error(x.error.type(\"integer\",F,y.indicator)):!x.type.is_variable(z)&&!x.type.is_integer(z)?w.throw_error(x.error.type(\"integer\",z,y.indicator)):!x.type.is_variable(F)&&F.value<0?w.throw_error(x.error.domain(\"not_less_than_zero\",F,y.indicator)):!x.type.is_variable(z)&&z.value<0?w.throw_error(x.error.domain(\"not_less_than_zero\",z,y.indicator)):(x.type.is_variable(z)||z.value>0)&&(x.type.is_variable(F)?w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,new Re(z.value-1,!1)])),b.substitution,b)]):w.prepend([new Pe(b.goal.replace(new j(\"=\",[z,new Re(F.value+1,!1)])),b.substitution,b)]))},\"=:=/2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F===0&&w.success(b)},\"=\\\\=/2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F!==0&&w.success(b)},\"</2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F<0&&w.success(b)},\"=</2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F<=0&&w.success(b)},\">/2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>0&&w.success(b)},\">=/2\":function(w,b,y){var F=x.arithmetic_compare(w,y.args[0],y.args[1]);x.type.is_term(F)?w.throw_error(F):F>=0&&w.success(b)},\"var/1\":function(w,b,y){x.type.is_variable(y.args[0])&&w.success(b)},\"atom/1\":function(w,b,y){x.type.is_atom(y.args[0])&&w.success(b)},\"atomic/1\":function(w,b,y){x.type.is_atomic(y.args[0])&&w.success(b)},\"compound/1\":function(w,b,y){x.type.is_compound(y.args[0])&&w.success(b)},\"integer/1\":function(w,b,y){x.type.is_integer(y.args[0])&&w.success(b)},\"float/1\":function(w,b,y){x.type.is_float(y.args[0])&&w.success(b)},\"number/1\":function(w,b,y){x.type.is_number(y.args[0])&&w.success(b)},\"nonvar/1\":function(w,b,y){x.type.is_variable(y.args[0])||w.success(b)},\"ground/1\":function(w,b,y){y.variables().length===0&&w.success(b)},\"acyclic_term/1\":function(w,b,y){for(var F=b.substitution.apply(b.substitution),z=y.args[0].variables(),X=0;X<z.length;X++)if(b.substitution.links[z[X]]!==void 0&&!b.substitution.links[z[X]].equals(F.links[z[X]]))return;w.success(b)},\"callable/1\":function(w,b,y){x.type.is_callable(y.args[0])&&w.success(b)},\"is_list/1\":function(w,b,y){for(var F=y.args[0];x.type.is_term(F)&&F.indicator===\"./2\";)F=F.args[1];x.type.is_term(F)&&F.indicator===\"[]/0\"&&w.success(b)},\"current_input/1\":function(w,b,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream\",F,y.indicator)):(x.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,w.get_current_input()])),b.substitution,b)]))},\"current_output/1\":function(w,b,y){var F=y.args[0];!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):(x.type.is_atom(F)&&w.get_stream_by_alias(F.id)&&(F=w.get_stream_by_alias(F.id)),w.prepend([new Pe(b.goal.replace(new j(\"=\",[F,w.get_current_output()])),b.substitution,b)]))},\"set_input/1\":function(w,b,y){var F=y.args[0],z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):x.type.is_stream(z)?z.output===!0?w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator)):(w.set_current_input(z),w.success(b)):w.throw_error(x.error.existence(\"stream\",F,y.indicator))},\"set_output/1\":function(w,b,y){var F=y.args[0],z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):x.type.is_stream(z)?z.input===!0?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):(w.set_current_output(z),w.success(b)):w.throw_error(x.error.existence(\"stream\",F,y.indicator))},\"open/3\":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2];w.prepend([new Pe(b.goal.replace(new j(\"open\",[F,z,X,new j(\"[]\",[])])),b.substitution,b)])},\"open/4\":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=y.args[3];if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_atom(z))w.throw_error(x.error.type(\"atom\",z,y.indicator));else if(!x.type.is_list($))w.throw_error(x.error.type(\"list\",$,y.indicator));else if(!x.type.is_variable(X))w.throw_error(x.error.type(\"variable\",X,y.indicator));else if(!x.type.is_atom(F)&&!x.type.is_streamable(F))w.throw_error(x.error.domain(\"source_sink\",F,y.indicator));else if(!x.type.is_io_mode(z))w.throw_error(x.error.domain(\"io_mode\",z,y.indicator));else{for(var oe={},xe=$,Te;x.type.is_term(xe)&&xe.indicator===\"./2\";){if(Te=xe.args[0],x.type.is_variable(Te)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_stream_option(Te)){w.throw_error(x.error.domain(\"stream_option\",Te,y.indicator));return}oe[Te.id]=Te.args[0].id,xe=xe.args[1]}if(xe.indicator!==\"[]/0\"){x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",$,y.indicator));return}else{var lt=oe.alias;if(lt&&w.get_stream_by_alias(lt)){w.throw_error(x.error.permission(\"open\",\"source_sink\",new j(\"alias\",[new j(lt,[])]),y.indicator));return}oe.type||(oe.type=\"text\");var Ct;if(x.type.is_atom(F)?Ct=w.file_system_open(F.id,oe.type,z.id):Ct=F.stream(oe.type,z.id),Ct===!1){w.throw_error(x.error.permission(\"open\",\"source_sink\",F,y.indicator));return}else if(Ct===null){w.throw_error(x.error.existence(\"source_sink\",F,y.indicator));return}var qt=new Fe(Ct,z.id,oe.alias,oe.type,oe.reposition===\"true\",oe.eof_action);lt?w.session.streams[lt]=qt:w.session.streams[qt.id]=qt,w.prepend([new Pe(b.goal.replace(new j(\"=\",[X,qt])),b.substitution,b)])}}},\"close/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\"close\",[F,new j(\"[]\",[])])),b.substitution,b)])},\"close/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(z))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(z))w.throw_error(x.error.type(\"list\",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else{for(var $={},oe=z,xe;x.type.is_term(oe)&&oe.indicator===\"./2\";){if(xe=oe.args[0],x.type.is_variable(xe)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_close_option(xe)){w.throw_error(x.error.domain(\"close_option\",xe,y.indicator));return}$[xe.id]=xe.args[0].id===\"true\",oe=oe.args[1]}if(oe.indicator!==\"[]/0\"){x.type.is_variable(oe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",z,y.indicator));return}else{if(X===w.session.standard_input||X===w.session.standard_output){w.success(b);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 Te=X.stream.close();X.stream=null,($.force===!0||Te===!0)&&w.success(b)}}},\"flush_output/0\":function(w,b,y){w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"flush_output\",[new De(\"S\")])])),b.substitution,b)])},\"flush_output/1\":function(w,b,y){var F=y.args[0],z=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(z)||z.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):F.input===!0?w.throw_error(x.error.permission(\"output\",\"stream\",output,y.indicator)):(z.stream.flush(),w.success(b))},\"stream_property/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_variable(F)&&(!x.type.is_stream(X)||X.stream===null))w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_stream_property(z))w.throw_error(x.error.domain(\"stream_property\",z,y.indicator));else{var $=[],oe=[];if(!x.type.is_variable(F))$.push(X);else for(var xe in w.session.streams)$.push(w.session.streams[xe]);for(var Te=0;Te<$.length;Te++){var lt=[];$[Te].filename&&lt.push(new j(\"file_name\",[new j($[Te].file_name,[])])),lt.push(new j(\"mode\",[new j($[Te].mode,[])])),lt.push(new j($[Te].input?\"input\":\"output\",[])),$[Te].alias&&lt.push(new j(\"alias\",[new j($[Te].alias,[])])),lt.push(new j(\"position\",[typeof $[Te].position==\"number\"?new Re($[Te].position,!1):new j($[Te].position,[])])),lt.push(new j(\"end_of_stream\",[new j($[Te].position===\"end_of_stream\"?\"at\":$[Te].position===\"past_end_of_stream\"?\"past\":\"not\",[])])),lt.push(new j(\"eof_action\",[new j($[Te].eof_action,[])])),lt.push(new j(\"reposition\",[new j($[Te].reposition?\"true\":\"false\",[])])),lt.push(new j(\"type\",[new j($[Te].type,[])]));for(var Ct=0;Ct<lt.length;Ct++)oe.push(new Pe(b.goal.replace(new j(\",\",[new j(\"=\",[x.type.is_variable(F)?F:X,$[Te]]),new j(\"=\",[z,lt[Ct]])])),b.substitution,b))}w.prepend(oe)}},\"at_end_of_stream/0\":function(w,b,y){w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\",\",[new j(\"stream_property\",[new De(\"S\"),new j(\"end_of_stream\",[new De(\"E\")])]),new j(\",\",[new j(\"!\",[]),new j(\";\",[new j(\"=\",[new De(\"E\"),new j(\"at\",[])]),new j(\"=\",[new De(\"E\"),new j(\"past\",[])])])])])])),b.substitution,b)])},\"at_end_of_stream/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"stream_property\",[F,new j(\"end_of_stream\",[new De(\"E\")])]),new j(\",\",[new j(\"!\",[]),new j(\";\",[new j(\"=\",[new De(\"E\"),new j(\"at\",[])]),new j(\"=\",[new De(\"E\"),new j(\"past\",[])])])])])),b.substitution,b)])},\"set_stream_position/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):x.type.is_stream_position(z)?X.reposition===!1?w.throw_error(x.error.permission(\"reposition\",\"stream\",F,y.indicator)):(x.type.is_integer(z)?X.position=z.value:X.position=z.id,w.success(b)):w.throw_error(x.error.domain(\"stream_position\",z,y.indicator))},\"get_char/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"get_char\",[new De(\"S\"),F])])),b.substitution,b)])},\"get_char/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))w.throw_error(x.error.type(\"in_character\",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(X.position===\"end_of_stream\")$=\"end_of_file\",X.position=\"past_end_of_stream\";else{if($=X.stream.get(1,X.position),$===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}X.position++}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j($,[]),z])),b.substitution,b)])}},\"get_code/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"get_code\",[new De(\"S\"),F])])),b.substitution,b)])},\"get_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(X.position===\"end_of_stream\")$=-1,X.position=\"past_end_of_stream\";else{if($=X.stream.get(1,X.position),$===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}$=n($,0),X.position++}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new Re($,!1),z])),b.substitution,b)])}},\"peek_char/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"peek_char\",[new De(\"S\"),F])])),b.substitution,b)])},\"peek_char/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_character(z))w.throw_error(x.error.type(\"in_character\",z,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(X.position===\"end_of_stream\")$=\"end_of_file\",X.position=\"past_end_of_stream\";else if($=X.stream.get(1,X.position),$===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new j($,[]),z])),b.substitution,b)])}},\"peek_code/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"peek_code\",[new De(\"S\"),F])])),b.substitution,b)])},\"peek_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_integer(z))w.throw_error(x.error.type(\"integer\",char,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(X.position===\"end_of_stream\")$=-1,X.position=\"past_end_of_stream\";else{if($=X.stream.get(1,X.position),$===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}$=n($,0)}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new Re($,!1),z])),b.substitution,b)])}},\"put_char/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"put_char\",[new De(\"S\"),F])])),b.substitution,b)])},\"put_char/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_character(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(x.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put(z.id,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(b)):w.throw_error(x.error.type(\"character\",z,y.indicator))},\"put_code/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"put_code\",[new De(\"S\"),F])])),b.substitution,b)])},\"put_code/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(z)?x.type.is_character_code(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"binary\"?w.throw_error(x.error.permission(\"output\",\"binary_stream\",F,y.indicator)):X.stream.put_char(c(z.value),X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(b)):w.throw_error(x.error.representation(\"character_code\",y.indicator)):w.throw_error(x.error.type(\"integer\",z,y.indicator))},\"nl/0\":function(w,b,y){w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"put_char\",[new De(\"S\"),new j(`\n`,[])])])),b.substitution,b)])},\"nl/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\"put_char\",[F,new j(`\n`,[])])),b.substitution,b)])},\"get_byte/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"get_byte\",[new De(\"S\"),F])])),b.substitution,b)])},\"get_byte/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))w.throw_error(x.error.type(\"in_byte\",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(x.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(X.position===\"end_of_stream\")$=\"end_of_file\",X.position=\"past_end_of_stream\";else{if($=X.stream.get_byte(X.position),$===null){w.throw_error(x.error.representation(\"byte\",y.indicator));return}X.position++}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new Re($,!1),z])),b.substitution,b)])}},\"peek_byte/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"peek_byte\",[new De(\"S\"),F])])),b.substitution,b)])},\"peek_byte/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_variable(z)&&!x.type.is_byte(z))w.throw_error(x.error.type(\"in_byte\",char,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream(X)||X.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if(X.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if(X.type===\"text\")w.throw_error(x.error.permission(\"input\",\"text_stream\",F,y.indicator));else if(X.position===\"past_end_of_stream\"&&X.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{var $;if(X.position===\"end_of_stream\")$=\"end_of_file\",X.position=\"past_end_of_stream\";else if($=X.stream.get_byte(X.position),$===null){w.throw_error(x.error.representation(\"byte\",y.indicator));return}w.prepend([new Pe(b.goal.replace(new j(\"=\",[new Re($,!1),z])),b.substitution,b)])}},\"put_byte/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"put_byte\",[new De(\"S\"),F])])),b.substitution,b)])},\"put_byte/2\":function(w,b,y){var F=y.args[0],z=y.args[1],X=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_byte(z)?!x.type.is_variable(F)&&!x.type.is_stream(F)&&!x.type.is_atom(F)?w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator)):!x.type.is_stream(X)||X.stream===null?w.throw_error(x.error.existence(\"stream\",F,y.indicator)):X.input?w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator)):X.type===\"text\"?w.throw_error(x.error.permission(\"output\",\"text_stream\",F,y.indicator)):X.stream.put_byte(z.value,X.position)&&(typeof X.position==\"number\"&&X.position++,w.success(b)):w.throw_error(x.error.type(\"byte\",z,y.indicator))},\"read/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"read_term\",[new De(\"S\"),F,new j(\"[]\",[])])])),b.substitution,b)])},\"read/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"read_term\",[F,z,new j(\"[]\",[])])),b.substitution,b)])},\"read_term/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_input\",[new De(\"S\")]),new j(\"read_term\",[new De(\"S\"),F,z])])),b.substitution,b)])},\"read_term/3\":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if($.output)w.throw_error(x.error.permission(\"input\",\"stream\",F,y.indicator));else if($.type===\"binary\")w.throw_error(x.error.permission(\"input\",\"binary_stream\",F,y.indicator));else if($.position===\"past_end_of_stream\"&&$.eof_action===\"error\")w.throw_error(x.error.permission(\"input\",\"past_end_of_stream\",F,y.indicator));else{for(var oe={},xe=X,Te;x.type.is_term(xe)&&xe.indicator===\"./2\";){if(Te=xe.args[0],x.type.is_variable(Te)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_read_option(Te)){w.throw_error(x.error.domain(\"read_option\",Te,y.indicator));return}oe[Te.id]=Te.args[0],xe=xe.args[1]}if(xe.indicator!==\"[]/0\"){x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",X,y.indicator));return}else{for(var lt,Ct,qt,ir=\"\",Pt=[],gn=null;gn===null||gn.name!==\"atom\"||gn.value!==\".\"||qt.type===f&&x.flatten_error(new j(\"throw\",[qt.value])).found===\"token_not_found\";){if(lt=$.stream.get(1,$.position),lt===null){w.throw_error(x.error.representation(\"character\",y.indicator));return}if(lt===\"end_of_file\"||lt===\"past_end_of_file\"){qt?w.throw_error(x.error.syntax(Pt[qt.len-1],\". or expression expected\",!1)):w.throw_error(x.error.syntax(null,\"token not found\",!0));return}$.position++,ir+=lt,Ct=new U(w),Ct.new_text(ir),Pt=Ct.get_tokens(),gn=Pt!==null&&Pt.length>0?Pt[Pt.length-1]:null,Pt!==null&&(qt=W(w,Pt,0,w.__get_max_priority(),!1))}if(qt.type===p&&qt.len===Pt.length-1&&gn.value===\".\"){qt=qt.value.rename(w);var Pr=new j(\"=\",[z,qt]);if(oe.variables){var Ir=g(s(ye(qt.variables()),function(Or){return new De(Or)}));Pr=new j(\",\",[Pr,new j(\"=\",[oe.variables,Ir])])}if(oe.variable_names){var Ir=g(s(ye(qt.variables()),function(on){var ai;for(ai in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(ai)&&w.session.renamed_variables[ai]===on)break;return new j(\"=\",[new j(ai,[]),new De(on)])}));Pr=new j(\",\",[Pr,new j(\"=\",[oe.variable_names,Ir])])}if(oe.singletons){var Ir=g(s(new Ve(qt,null).singleton_variables(),function(on){var ai;for(ai in w.session.renamed_variables)if(w.session.renamed_variables.hasOwnProperty(ai)&&w.session.renamed_variables[ai]===on)break;return new j(\"=\",[new j(ai,[]),new De(on)])}));Pr=new j(\",\",[Pr,new j(\"=\",[oe.singletons,Ir])])}w.prepend([new Pe(b.goal.replace(Pr),b.substitution,b)])}else qt.type===p?w.throw_error(x.error.syntax(Pt[qt.len],\"unexpected token\",!1)):w.throw_error(qt.value)}}},\"write/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"write\",[new De(\"S\"),F])])),b.substitution,b)])},\"write/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"write_term\",[F,z,new j(\".\",[new j(\"quoted\",[new j(\"false\",[])]),new j(\".\",[new j(\"ignore_ops\",[new j(\"false\")]),new j(\".\",[new j(\"numbervars\",[new j(\"true\")]),new j(\"[]\",[])])])])])),b.substitution,b)])},\"writeq/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"writeq\",[new De(\"S\"),F])])),b.substitution,b)])},\"writeq/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"write_term\",[F,z,new j(\".\",[new j(\"quoted\",[new j(\"true\",[])]),new j(\".\",[new j(\"ignore_ops\",[new j(\"false\")]),new j(\".\",[new j(\"numbervars\",[new j(\"true\")]),new j(\"[]\",[])])])])])),b.substitution,b)])},\"write_canonical/1\":function(w,b,y){var F=y.args[0];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"write_canonical\",[new De(\"S\"),F])])),b.substitution,b)])},\"write_canonical/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\"write_term\",[F,z,new j(\".\",[new j(\"quoted\",[new j(\"true\",[])]),new j(\".\",[new j(\"ignore_ops\",[new j(\"true\")]),new j(\".\",[new j(\"numbervars\",[new j(\"false\")]),new j(\"[]\",[])])])])])),b.substitution,b)])},\"write_term/2\":function(w,b,y){var F=y.args[0],z=y.args[1];w.prepend([new Pe(b.goal.replace(new j(\",\",[new j(\"current_output\",[new De(\"S\")]),new j(\"write_term\",[new De(\"S\"),F,z])])),b.substitution,b)])},\"write_term/3\":function(w,b,y){var F=y.args[0],z=y.args[1],X=y.args[2],$=x.type.is_stream(F)?F:w.get_stream_by_alias(F.id);if(x.type.is_variable(F)||x.type.is_variable(X))w.throw_error(x.error.instantiation(y.indicator));else if(!x.type.is_list(X))w.throw_error(x.error.type(\"list\",X,y.indicator));else if(!x.type.is_stream(F)&&!x.type.is_atom(F))w.throw_error(x.error.domain(\"stream_or_alias\",F,y.indicator));else if(!x.type.is_stream($)||$.stream===null)w.throw_error(x.error.existence(\"stream\",F,y.indicator));else if($.input)w.throw_error(x.error.permission(\"output\",\"stream\",F,y.indicator));else if($.type===\"binary\")w.throw_error(x.error.permission(\"output\",\"binary_stream\",F,y.indicator));else if($.position===\"past_end_of_stream\"&&$.eof_action===\"error\")w.throw_error(x.error.permission(\"output\",\"past_end_of_stream\",F,y.indicator));else{for(var oe={},xe=X,Te;x.type.is_term(xe)&&xe.indicator===\"./2\";){if(Te=xe.args[0],x.type.is_variable(Te)){w.throw_error(x.error.instantiation(y.indicator));return}else if(!x.type.is_write_option(Te)){w.throw_error(x.error.domain(\"write_option\",Te,y.indicator));return}oe[Te.id]=Te.args[0].id===\"true\",xe=xe.args[1]}if(xe.indicator!==\"[]/0\"){x.type.is_variable(xe)?w.throw_error(x.error.instantiation(y.indicator)):w.throw_error(x.error.type(\"list\",X,y.indicator));return}else{oe.session=w.session;var lt=z.toString(oe);$.stream.put(lt,$.position),typeof $.position==\"number\"&&($.position+=lt.length),w.success(b)}}},\"halt/0\":function(w,b,y){w.points=[]},\"halt/1\":function(w,b,y){var F=y.args[0];x.type.is_variable(F)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_integer(F)?w.points=[]:w.throw_error(x.error.type(\"integer\",F,y.indicator))},\"current_prolog_flag/2\":function(w,b,y){var F=y.args[0],z=y.args[1];if(!x.type.is_variable(F)&&!x.type.is_atom(F))w.throw_error(x.error.type(\"atom\",F,y.indicator));else if(!x.type.is_variable(F)&&!x.type.is_flag(F))w.throw_error(x.error.domain(\"prolog_flag\",F,y.indicator));else{var X=[];for(var $ in x.flag)if(x.flag.hasOwnProperty($)){var oe=new j(\",\",[new j(\"=\",[new j($),F]),new j(\"=\",[w.get_flag($),z])]);X.push(new Pe(b.goal.replace(oe),b.substitution,b))}w.prepend(X)}},\"set_prolog_flag/2\":function(w,b,y){var F=y.args[0],z=y.args[1];x.type.is_variable(F)||x.type.is_variable(z)?w.throw_error(x.error.instantiation(y.indicator)):x.type.is_atom(F)?x.type.is_flag(F)?x.type.is_value_flag(F,z)?x.type.is_modifiable_flag(F)?(w.session.flag[F.id]=z,w.success(b)):w.throw_error(x.error.permission(\"modify\",\"flag\",F)):w.throw_error(x.error.domain(\"flag_value\",new j(\"+\",[F,z]),y.indicator)):w.throw_error(x.error.domain(\"prolog_flag\",F,y.indicator)):w.throw_error(x.error.type(\"atom\",F,y.indicator))}},flag:{bounded:{allowed:[new j(\"true\"),new j(\"false\")],value:new j(\"true\"),changeable:!1},max_integer:{allowed:[new Re(Number.MAX_SAFE_INTEGER)],value:new Re(Number.MAX_SAFE_INTEGER),changeable:!1},min_integer:{allowed:[new Re(Number.MIN_SAFE_INTEGER)],value:new Re(Number.MIN_SAFE_INTEGER),changeable:!1},integer_rounding_function:{allowed:[new j(\"down\"),new j(\"toward_zero\")],value:new j(\"toward_zero\"),changeable:!1},char_conversion:{allowed:[new j(\"on\"),new j(\"off\")],value:new j(\"on\"),changeable:!0},debug:{allowed:[new j(\"on\"),new j(\"off\")],value:new j(\"off\"),changeable:!0},max_arity:{allowed:[new j(\"unbounded\")],value:new j(\"unbounded\"),changeable:!1},unknown:{allowed:[new j(\"error\"),new j(\"fail\"),new j(\"warning\")],value:new j(\"error\"),changeable:!0},double_quotes:{allowed:[new j(\"chars\"),new j(\"codes\"),new j(\"atom\")],value:new j(\"codes\"),changeable:!0},occurs_check:{allowed:[new j(\"false\"),new j(\"true\")],value:new j(\"false\"),changeable:!0},dialect:{allowed:[new j(\"tau\")],value:new j(\"tau\"),changeable:!1},version_data:{allowed:[new j(\"tau\",[new Re(t.major,!1),new Re(t.minor,!1),new Re(t.patch,!1),new j(t.status)])],value:new j(\"tau\",[new Re(t.major,!1),new Re(t.minor,!1),new Re(t.patch,!1),new j(t.status)]),changeable:!1},nodejs:{allowed:[new j(\"yes\"),new j(\"no\")],value:new j(typeof ec<\"u\"&&ec.exports?\"yes\":\"no\"),changeable:!1}},unify:function(w,b,y){y=y===void 0?!1:y;for(var F=[{left:w,right:b}],z={};F.length!==0;){var X=F.pop();if(w=X.left,b=X.right,x.type.is_term(w)&&x.type.is_term(b)){if(w.indicator!==b.indicator)return null;for(var $=0;$<w.args.length;$++)F.push({left:w.args[$],right:b.args[$]})}else if(x.type.is_number(w)&&x.type.is_number(b)){if(w.value!==b.value||w.is_float!==b.is_float)return null}else if(x.type.is_variable(w)){if(x.type.is_variable(b)&&w.id===b.id)continue;if(y===!0&&b.variables().indexOf(w.id)!==-1)return null;if(w.id!==\"_\"){var oe=new Ne;oe.add(w.id,b);for(var $=0;$<F.length;$++)F[$].left=F[$].left.apply(oe),F[$].right=F[$].right.apply(oe);for(var $ in z)z[$]=z[$].apply(oe);z[w.id]=b}}else if(x.type.is_variable(b))F.push({left:b,right:w});else if(w.unify!==void 0){if(!w.unify(b))return null}else return null}return new Ne(z)},compare:function(w,b){var y=x.type.compare(w,b);return y!==0?y:w.compare(b)},arithmetic_compare:function(w,b,y){var F=b.interpret(w);if(x.type.is_number(F)){var z=y.interpret(w);return x.type.is_number(z)?F.value<z.value?-1:F.value>z.value?1:0:z}else return F},operate:function(w,b){if(x.type.is_operator(b)){for(var y=x.type.is_operator(b),F=[],z,X=!1,$=0;$<b.args.length;$++){if(z=b.args[$].interpret(w),x.type.is_number(z)){if(y.type_args!==null&&z.is_float!==y.type_args)return x.error.type(y.type_args?\"float\":\"integer\",z,w.__call_indicator);F.push(z.value)}else return z;X=X||z.is_float}return F.push(w),z=x.arithmetic.evaluation[b.indicator].fn.apply(this,F),X=y.type_result===null?X:y.type_result,x.type.is_term(z)?z:z===Number.POSITIVE_INFINITY||z===Number.NEGATIVE_INFINITY?x.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)?x.error.evaluation(\"int_overflow\",w.__call_indicator):new Re(z,X)}else return x.error.type(\"evaluable\",b.indicator,w.__call_indicator)},error:{existence:function(w,b,y){return typeof b==\"string\"&&(b=Z(b)),new j(\"error\",[new j(\"existence_error\",[new j(w),b]),Z(y)])},type:function(w,b,y){return new j(\"error\",[new j(\"type_error\",[new j(w),b]),Z(y)])},instantiation:function(w){return new j(\"error\",[new j(\"instantiation_error\"),Z(w)])},domain:function(w,b,y){return new j(\"error\",[new j(\"domain_error\",[new j(w),b]),Z(y)])},representation:function(w,b){return new j(\"error\",[new j(\"representation_error\",[new j(w)]),Z(b)])},permission:function(w,b,y,F){return new j(\"error\",[new j(\"permission_error\",[new j(w),new j(b),y]),Z(F)])},evaluation:function(w,b){return new j(\"error\",[new j(\"evaluation_error\",[new j(w)]),Z(b)])},syntax:function(w,b,y){w=w||{value:\"\",line:0,column:0,matches:[\"\"],start:0};var F=y&&w.matches.length>0?w.start+w.matches[0].length:w.start,z=y?new j(\"token_not_found\"):new j(\"found\",[new j(w.value.toString())]),X=new j(\".\",[new j(\"line\",[new Re(w.line+1)]),new j(\".\",[new j(\"column\",[new Re(F+1)]),new j(\".\",[z,new j(\"[]\",[])])])]);return new j(\"error\",[new j(\"syntax_error\",[new j(b)]),X])},syntax_by_predicate:function(w,b){return new j(\"error\",[new j(\"syntax_error\",[new j(w)]),Z(b)])}},warning:{singleton:function(w,b,y){for(var F=new j(\"[]\"),z=w.length-1;z>=0;z--)F=new j(\".\",[new De(w[z]),F]);return new j(\"warning\",[new j(\"singleton_variables\",[F,Z(b)]),new j(\".\",[new j(\"line\",[new Re(y,!1)]),new j(\"[]\")])])},failed_goal:function(w,b){return new j(\"warning\",[new j(\"failed_goal\",[w]),new j(\".\",[new j(\"line\",[new Re(b,!1)]),new j(\"[]\")])])}},format_variable:function(w){return\"_\"+w},format_answer:function(w,b,F){b instanceof ke&&(b=b.thread);var F=F||{};if(F.session=b?b.session:void 0,x.type.is_error(w))return\"uncaught exception: \"+w.args[0].toString();if(w===!1)return\"false.\";if(w===null)return\"limit exceeded ;\";var z=0,X=\"\";if(x.type.is_substitution(w)){var $=w.domain(!0);w=w.filter(function(Te,lt){return!x.type.is_variable(lt)||$.indexOf(lt.id)!==-1&&Te!==lt.id})}for(var oe in w.links)w.links.hasOwnProperty(oe)&&(z++,X!==\"\"&&(X+=\", \"),X+=oe.toString(F)+\" = \"+w.links[oe].toString(F));var xe=typeof b>\"u\"||b.points.length>0?\" ;\":\".\";return z===0?\"true\"+xe:X+xe},flatten_error:function(w){if(!x.type.is_error(w))return null;w=w.args[0];var b={};return b.type=w.args[0].id,b.thrown=b.type===\"syntax_error\"?null:w.args[1].id,b.expected=null,b.found=null,b.representation=null,b.existence=null,b.existence_type=null,b.line=null,b.column=null,b.permission_operation=null,b.permission_type=null,b.evaluation_type=null,b.type===\"type_error\"||b.type===\"domain_error\"?(b.expected=w.args[0].args[0].id,b.found=w.args[0].args[1].toString()):b.type===\"syntax_error\"?w.args[1].indicator===\"./2\"?(b.expected=w.args[0].args[0].id,b.found=w.args[1].args[1].args[1].args[0],b.found=b.found.id===\"token_not_found\"?b.found.id:b.found.args[0].id,b.line=w.args[1].args[0].args[0].value,b.column=w.args[1].args[1].args[0].args[0].value):b.thrown=w.args[1].id:b.type===\"permission_error\"?(b.found=w.args[0].args[2].toString(),b.permission_operation=w.args[0].args[0].id,b.permission_type=w.args[0].args[1].id):b.type===\"evaluation_error\"?b.evaluation_type=w.args[0].args[0].id:b.type===\"representation_error\"?b.representation=w.args[0].args[0].id:b.type===\"existence_error\"&&(b.existence=w.args[0].args[1].toString(),b.existence_type=w.args[0].args[0].id),b},create:function(w){return new x.type.Session(w)}};typeof ec<\"u\"?ec.exports=x:window.pl=x})()});function EEe(t,e,r){t.prepend(r.map(s=>new hl.default.type.State(e.goal.replace(s),e.substitution,e)))}function Lq(t){let e=CEe.get(t.session);if(e==null)throw new Error(\"Assertion failed: A project should have been registered for the active session\");return e}function wEe(t,e){CEe.set(t,e),t.consult(`:- use_module(library(${Zct.id})).`)}var hl,IEe,J0,zct,Xct,CEe,Zct,BEe=Xe(()=>{Ge();ql();hl=ut(Oq()),IEe=ut(Ie(\"vm\")),{is_atom:J0,is_variable:zct,is_instantiated_list:Xct}=hl.default.type;CEe=new WeakMap;Zct=new hl.default.type.Module(\"constraints\",{\"project_workspaces_by_descriptor/3\":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(hl.default.error.instantiation(r.indicator));return}let c=G.parseIdent(s.id),f=G.makeDescriptor(c,a.id),h=Lq(t).tryWorkspaceByDescriptor(f);zct(n)&&h!==null&&EEe(t,e,[new hl.default.type.Term(\"=\",[n,new hl.default.type.Term(String(h.relativeCwd))])]),J0(n)&&h!==null&&h.relativeCwd===n.id&&t.success(e)},\"workspace_field/3\":(t,e,r)=>{let[s,a,n]=r.args;if(!J0(s)||!J0(a)){t.throw_error(hl.default.error.instantiation(r.indicator));return}let f=Lq(t).tryWorkspaceByCwd(s.id);if(f==null)return;let p=va(f.manifest.raw,a.id);typeof p>\"u\"||EEe(t,e,[new hl.default.type.Term(\"=\",[n,new hl.default.type.Term(typeof p==\"object\"?JSON.stringify(p):p)])])},\"workspace_field_test/3\":(t,e,r)=>{let[s,a,n]=r.args;t.prepend([new hl.default.type.State(e.goal.replace(new hl.default.type.Term(\"workspace_field_test\",[s,a,n,new hl.default.type.Term(\"[]\",[])])),e.substitution,e)])},\"workspace_field_test/4\":(t,e,r)=>{let[s,a,n,c]=r.args;if(!J0(s)||!J0(a)||!J0(n)||!Xct(c)){t.throw_error(hl.default.error.instantiation(r.indicator));return}let p=Lq(t).tryWorkspaceByCwd(s.id);if(p==null)return;let h=va(p.manifest.raw,a.id);if(typeof h>\"u\")return;let E={$$:h};for(let[S,P]of c.toJavaScript().entries())E[`$${S}`]=P;IEe.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 aS={};Vt(aS,{Constraints:()=>Uq,DependencyType:()=>bEe});function go(t){if(t instanceof KC.default.type.Num)return t.value;if(t instanceof KC.default.type.Term)switch(t.indicator){case\"throw/1\":return go(t.args[0]);case\"error/1\":return go(t.args[0]);case\"error/2\":if(t.args[0]instanceof KC.default.type.Term&&t.args[0].indicator===\"syntax_error/1\")return Object.assign(go(t.args[0]),...go(t.args[1]));{let e=go(t.args[0]);return e.message+=` (in ${go(t.args[1])})`,e}case\"syntax_error/1\":return new jt(43,`Syntax error: ${go(t.args[0])}`);case\"existence_error/2\":return new jt(44,`Existence error: ${go(t.args[0])} ${go(t.args[1])} not found`);case\"instantiation_error/0\":return new jt(75,\"Instantiation error: an argument is variable when an instantiated argument was expected\");case\"line/1\":return{line:go(t.args[0])};case\"column/1\":return{column:go(t.args[0])};case\"found/1\":return{found:go(t.args[0])};case\"./2\":return[go(t.args[0])].concat(go(t.args[1]));case\"//2\":return`${go(t.args[0])}/${go(t.args[1])}`;default:return t.id}throw`couldn't pretty print because of unsupported node ${t}`}function SEe(t){let e;try{e=go(t)}catch(r){throw typeof r==\"string\"?new jt(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 Pm(t){return t.id===\"null\"?null:`${t.toJavaScript()}`}function $ct(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 K0(t){return typeof t==\"string\"?`'${t}'`:\"[]\"}var DEe,KC,bEe,vEe,Mq,Uq,lS=Xe(()=>{Ge();Ge();Dt();DEe=ut(nEe()),KC=ut(Oq());iS();BEe();(0,DEe.default)(KC.default);bEe=(s=>(s.Dependencies=\"dependencies\",s.DevDependencies=\"devDependencies\",s.PeerDependencies=\"peerDependencies\",s))(bEe||{}),vEe=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];Mq=class{constructor(e,r){let s=1e3*e.workspaces.length;this.session=KC.default.create(s),wEe(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 SEe(r);for(;;){let s=await this.fetchNextAnswer();if(s===null)throw new jt(79,\"Resolution limit exceeded\");if(!s)break;if(s.id===\"throw\")throw SEe(s);yield s}}};Uq=class t{constructor(e){this.source=\"\";this.project=e;let r=e.configuration.get(\"constraintsPath\");ce.existsSync(r)&&(this.source=ce.readFileSync(r,\"utf8\"))}static async find(e){return new t(e)}getProjectDatabase(){let e=\"\";for(let r of vEe)e+=`dependency_type(${r}).\n`;for(let r of this.project.workspacesByCwd.values()){let s=r.relativeCwd;e+=`workspace(${K0(s)}).\n`,e+=`workspace_ident(${K0(s)}, ${K0(G.stringifyIdent(r.anchoredLocator))}).\n`,e+=`workspace_version(${K0(s)}, ${K0(r.manifest.version)}).\n`;for(let a of vEe)for(let n of r.manifest[a].values())e+=`workspace_has_dependency(${K0(s)}, ${K0(G.stringifyIdent(n))}, ${K0(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 Mq(this.project,this.fullSource)}async processClassic(){let e=this.createSession();return{enforcedDependencies:await this.genEnforcedDependencies(e),enforcedFields:await this.genEnforcedFields(e)}}async process(){let{enforcedDependencies:e,enforcedFields:r}=await this.processClassic(),s=new Map;for(let{workspace:a,dependencyIdent:n,dependencyRange:c,dependencyType:f}of e){let p=nS([f,G.stringifyIdent(n)]),h=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(h,p).set(c??void 0,new Set)}for(let{workspace:a,fieldPath:n,fieldValue:c}of r){let f=nS(n),p=je.getMapWithDefault(s,a.cwd);je.getMapWithDefault(p,f).set(JSON.parse(c)??void 0,new Set)}return{manifestUpdates:s,reportedErrors:new Map}}async genEnforcedDependencies(e){let r=[];for await(let s of e.makeQuery(\"workspace(WorkspaceCwd), dependency_type(DependencyType), gen_enforced_dependency(WorkspaceCwd, DependencyIdent, DependencyRange, DependencyType).\")){let a=J.resolve(this.project.cwd,Pm(s.links.WorkspaceCwd)),n=Pm(s.links.DependencyIdent),c=Pm(s.links.DependencyRange),f=Pm(s.links.DependencyType);if(a===null||n===null)throw new Error(\"Invalid rule\");let p=this.project.getWorkspaceByCwd(a),h=G.parseIdent(n);r.push({workspace:p,dependencyIdent:h,dependencyRange:c,dependencyType:f})}return je.sortMap(r,[({dependencyRange:s})=>s!==null?\"0\":\"1\",({workspace:s})=>G.stringifyIdent(s.anchoredLocator),({dependencyIdent:s})=>G.stringifyIdent(s)])}async genEnforcedFields(e){let r=[];for await(let s of e.makeQuery(\"workspace(WorkspaceCwd), gen_enforced_field(WorkspaceCwd, FieldPath, FieldValue).\")){let a=J.resolve(this.project.cwd,Pm(s.links.WorkspaceCwd)),n=Pm(s.links.FieldPath),c=$ct(s.links.FieldValue);if(a===null||n===null)throw new Error(\"Invalid rule\");let f=this.project.getWorkspaceByCwd(a);r.push({workspace:f,fieldPath:n,fieldValue:c})}return je.sortMap(r,[({workspace:s})=>G.stringifyIdent(s.anchoredLocator),({fieldPath:s})=>s])}async*query(e){let r=this.createSession();for await(let s of r.makeQuery(e)){let a={};for(let[n,c]of Object.entries(s.links))n!==\"_\"&&(a[n]=Pm(c));yield a}}}});var OEe=_(fF=>{\"use strict\";Object.defineProperty(fF,\"__esModule\",{value:!0});function BS(t){let e=[...t.caches],r=e.shift();return r===void 0?NEe():{get(s,a,n={miss:()=>Promise.resolve()}){return r.get(s,a,n).catch(()=>BS({caches:e}).get(s,a,n))},set(s,a){return r.set(s,a).catch(()=>BS({caches:e}).set(s,a))},delete(s){return r.delete(s).catch(()=>BS({caches:e}).delete(s))},clear(){return r.clear().catch(()=>BS({caches:e}).clear())}}}function NEe(){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()}}}fF.createFallbackableCache=BS;fF.createNullCache=NEe});var MEe=_((BJt,LEe)=>{LEe.exports=OEe()});var UEe=_($q=>{\"use strict\";Object.defineProperty($q,\"__esModule\",{value:!0});function yut(t={serializable:!0}){let e={};return{get(r,s,a={miss:()=>Promise.resolve()}){let n=JSON.stringify(r);if(n in e)return Promise.resolve(t.serializable?JSON.parse(e[n]):e[n]);let c=s(),f=a&&a.miss||(()=>Promise.resolve());return c.then(p=>f(p)).then(()=>c)},set(r,s){return e[JSON.stringify(r)]=t.serializable?JSON.stringify(s):s,Promise.resolve(s)},delete(r){return delete e[JSON.stringify(r)],Promise.resolve()},clear(){return e={},Promise.resolve()}}}$q.createInMemoryCache=yut});var HEe=_((SJt,_Ee)=>{_Ee.exports=UEe()});var GEe=_($u=>{\"use strict\";Object.defineProperty($u,\"__esModule\",{value:!0});function Eut(t,e,r){let s={\"x-algolia-api-key\":r,\"x-algolia-application-id\":e};return{headers(){return t===e9.WithinHeaders?s:{}},queryParameters(){return t===e9.WithinQueryParameters?s:{}}}}function Iut(t){let e=0,r=()=>(e++,new Promise(s=>{setTimeout(()=>{s(t(r))},Math.min(100*e,1e3))}));return t(r)}function jEe(t,e=(r,s)=>Promise.resolve()){return Object.assign(t,{wait(r){return jEe(t.then(s=>Promise.all([e(s,r),s])).then(s=>s[1]))}})}function Cut(t){let e=t.length-1;for(e;e>0;e--){let r=Math.floor(Math.random()*(e+1)),s=t[e];t[e]=t[r],t[r]=s}return t}function wut(t,e){return e&&Object.keys(e).forEach(r=>{t[r]=e[r](t)}),t}function But(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}var vut=\"4.22.1\",Sut=t=>()=>t.transporter.requester.destroy(),e9={WithinQueryParameters:0,WithinHeaders:1};$u.AuthMode=e9;$u.addMethods=wut;$u.createAuth=Eut;$u.createRetryablePromise=Iut;$u.createWaitablePromise=jEe;$u.destroy=Sut;$u.encode=But;$u.shuffle=Cut;$u.version=vut});var vS=_((bJt,qEe)=>{qEe.exports=GEe()});var WEe=_(t9=>{\"use strict\";Object.defineProperty(t9,\"__esModule\",{value:!0});var Dut={Delete:\"DELETE\",Get:\"GET\",Post:\"POST\",Put:\"PUT\"};t9.MethodEnum=Dut});var SS=_((xJt,YEe)=>{YEe.exports=WEe()});var aIe=_(Yi=>{\"use strict\";Object.defineProperty(Yi,\"__esModule\",{value:!0});var JEe=SS();function r9(t,e){let r=t||{},s=r.data||{};return Object.keys(r).forEach(a=>{[\"timeout\",\"headers\",\"queryParameters\",\"data\",\"cacheable\"].indexOf(a)===-1&&(s[a]=r[a])}),{data:Object.entries(s).length>0?s:void 0,timeout:r.timeout||e,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var DS={Read:1,Write:2,Any:3},sw={Up:1,Down:2,Timeouted:3},KEe=2*60*1e3;function i9(t,e=sw.Up){return{...t,status:e,lastUpdate:Date.now()}}function zEe(t){return t.status===sw.Up||Date.now()-t.lastUpdate>KEe}function XEe(t){return t.status===sw.Timeouted&&Date.now()-t.lastUpdate<=KEe}function s9(t){return typeof t==\"string\"?{protocol:\"https\",url:t,accept:DS.Any}:{protocol:t.protocol||\"https\",url:t.url,accept:t.accept||DS.Any}}function but(t,e){return Promise.all(e.map(r=>t.get(r,()=>Promise.resolve(i9(r))))).then(r=>{let s=r.filter(f=>zEe(f)),a=r.filter(f=>XEe(f)),n=[...s,...a],c=n.length>0?n.map(f=>s9(f)):e;return{getTimeout(f,p){return(a.length===0&&f===0?1:a.length+3+f)*p},statelessHosts:c}})}var Put=({isTimedOut:t,status:e})=>!t&&~~e===0,xut=t=>{let e=t.status;return t.isTimedOut||Put(t)||~~(e/100)!==2&&~~(e/100)!==4},kut=({status:t})=>~~(t/100)===2,Qut=(t,e)=>xut(t)?e.onRetry(t):kut(t)?e.onSuccess(t):e.onFail(t);function VEe(t,e,r,s){let a=[],n=rIe(r,s),c=nIe(t,s),f=r.method,p=r.method!==JEe.MethodEnum.Get?{}:{...r.data,...s.data},h={\"x-algolia-agent\":t.userAgent.value,...t.queryParameters,...p,...s.queryParameters},E=0,C=(S,P)=>{let I=S.pop();if(I===void 0)throw oIe(n9(a));let R={data:n,headers:c,method:f,url:eIe(I,r.path,h),connectTimeout:P(E,t.timeouts.connect),responseTimeout:P(E,s.timeout)},N=W=>{let ee={request:R,response:W,host:I,triesLeft:S.length};return a.push(ee),ee},U={onSuccess:W=>ZEe(W),onRetry(W){let ee=N(W);return W.isTimedOut&&E++,Promise.all([t.logger.info(\"Retryable failure\",o9(ee)),t.hostsCache.set(I,i9(I,W.isTimedOut?sw.Timeouted:sw.Down))]).then(()=>C(S,P))},onFail(W){throw N(W),$Ee(W,n9(a))}};return t.requester.send(R).then(W=>Qut(W,U))};return but(t.hostsCache,e).then(S=>C([...S.statelessHosts].reverse(),S.getTimeout))}function Tut(t){let{hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,hosts:p,queryParameters:h,headers:E}=t,C={hostsCache:e,logger:r,requester:s,requestsCache:a,responsesCache:n,timeouts:c,userAgent:f,headers:E,queryParameters:h,hosts:p.map(S=>s9(S)),read(S,P){let I=r9(P,C.timeouts.read),R=()=>VEe(C,C.hosts.filter(W=>(W.accept&DS.Read)!==0),S,I);if((I.cacheable!==void 0?I.cacheable:S.cacheable)!==!0)return R();let U={request:S,mappedRequestOptions:I,transporter:{queryParameters:C.queryParameters,headers:C.headers}};return C.responsesCache.get(U,()=>C.requestsCache.get(U,()=>C.requestsCache.set(U,R()).then(W=>Promise.all([C.requestsCache.delete(U),W]),W=>Promise.all([C.requestsCache.delete(U),Promise.reject(W)])).then(([W,ee])=>ee)),{miss:W=>C.responsesCache.set(U,W)})},write(S,P){return VEe(C,C.hosts.filter(I=>(I.accept&DS.Write)!==0),S,r9(P,C.timeouts.write))}};return C}function Rut(t){let e={value:`Algolia for JavaScript (${t})`,add(r){let s=`; ${r.segment}${r.version!==void 0?` (${r.version})`:\"\"}`;return e.value.indexOf(s)===-1&&(e.value=`${e.value}${s}`),e}};return e}function ZEe(t){try{return JSON.parse(t.content)}catch(e){throw sIe(e.message,t)}}function $Ee({content:t,status:e},r){let s=t;try{s=JSON.parse(t).message}catch{}return iIe(s,e,r)}function Fut(t,...e){let r=0;return t.replace(/%s/g,()=>encodeURIComponent(e[r++]))}function eIe(t,e,r){let s=tIe(r),a=`${t.protocol}://${t.url}/${e.charAt(0)===\"/\"?e.substr(1):e}`;return s.length&&(a+=`?${s}`),a}function tIe(t){let e=r=>Object.prototype.toString.call(r)===\"[object Object]\"||Object.prototype.toString.call(r)===\"[object Array]\";return Object.keys(t).map(r=>Fut(\"%s=%s\",r,e(t[r])?JSON.stringify(t[r]):t[r])).join(\"&\")}function rIe(t,e){if(t.method===JEe.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 nIe(t,e){let r={...t.headers,...e.headers},s={};return Object.keys(r).forEach(a=>{let n=r[a];s[a.toLowerCase()]=n}),s}function n9(t){return t.map(e=>o9(e))}function o9(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 iIe(t,e,r){return{name:\"ApiError\",message:t,status:e,transporterStackTrace:r}}function sIe(t,e){return{name:\"DeserializationError\",message:t,response:e}}function oIe(t){return{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:t}}Yi.CallEnum=DS;Yi.HostStatusEnum=sw;Yi.createApiError=iIe;Yi.createDeserializationError=sIe;Yi.createMappedRequestOptions=r9;Yi.createRetryError=oIe;Yi.createStatefulHost=i9;Yi.createStatelessHost=s9;Yi.createTransporter=Tut;Yi.createUserAgent=Rut;Yi.deserializeFailure=$Ee;Yi.deserializeSuccess=ZEe;Yi.isStatefulHostTimeouted=XEe;Yi.isStatefulHostUp=zEe;Yi.serializeData=rIe;Yi.serializeHeaders=nIe;Yi.serializeQueryParameters=tIe;Yi.serializeUrl=eIe;Yi.stackFrameWithoutCredentials=o9;Yi.stackTraceWithoutCredentials=n9});var bS=_((QJt,lIe)=>{lIe.exports=aIe()});var cIe=_(X0=>{\"use strict\";Object.defineProperty(X0,\"__esModule\",{value:!0});var ow=vS(),Nut=bS(),PS=SS(),Out=t=>{let e=t.region||\"us\",r=ow.createAuth(ow.AuthMode.WithinHeaders,t.appId,t.apiKey),s=Nut.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 ow.addMethods({appId:a,transporter:s},t.methods)},Lut=t=>(e,r)=>t.transporter.write({method:PS.MethodEnum.Post,path:\"2/abtests\",data:e},r),Mut=t=>(e,r)=>t.transporter.write({method:PS.MethodEnum.Delete,path:ow.encode(\"2/abtests/%s\",e)},r),Uut=t=>(e,r)=>t.transporter.read({method:PS.MethodEnum.Get,path:ow.encode(\"2/abtests/%s\",e)},r),_ut=t=>e=>t.transporter.read({method:PS.MethodEnum.Get,path:\"2/abtests\"},e),Hut=t=>(e,r)=>t.transporter.write({method:PS.MethodEnum.Post,path:ow.encode(\"2/abtests/%s/stop\",e)},r);X0.addABTest=Lut;X0.createAnalyticsClient=Out;X0.deleteABTest=Mut;X0.getABTest=Uut;X0.getABTests=_ut;X0.stopABTest=Hut});var fIe=_((RJt,uIe)=>{uIe.exports=cIe()});var pIe=_(xS=>{\"use strict\";Object.defineProperty(xS,\"__esModule\",{value:!0});var a9=vS(),jut=bS(),AIe=SS(),Gut=t=>{let e=t.region||\"us\",r=a9.createAuth(a9.AuthMode.WithinHeaders,t.appId,t.apiKey),s=jut.createTransporter({hosts:[{url:`personalization.${e}.algolia.com`}],...t,headers:{...r.headers(),\"content-type\":\"application/json\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}});return a9.addMethods({appId:t.appId,transporter:s},t.methods)},qut=t=>e=>t.transporter.read({method:AIe.MethodEnum.Get,path:\"1/strategies/personalization\"},e),Wut=t=>(e,r)=>t.transporter.write({method:AIe.MethodEnum.Post,path:\"1/strategies/personalization\",data:e},r);xS.createPersonalizationClient=Gut;xS.getPersonalizationStrategy=qut;xS.setPersonalizationStrategy=Wut});var gIe=_((NJt,hIe)=>{hIe.exports=pIe()});var xIe=_(Ft=>{\"use strict\";Object.defineProperty(Ft,\"__esModule\",{value:!0});var Jt=vS(),gl=bS(),br=SS(),Yut=Ie(\"crypto\");function AF(t){let e=r=>t.request(r).then(s=>{if(t.batch!==void 0&&t.batch(s.hits),!t.shouldStop(s))return s.cursor?e({cursor:s.cursor}):e({page:(r.page||0)+1})});return e({})}var Vut=t=>{let e=t.appId,r=Jt.createAuth(t.authMode!==void 0?t.authMode:Jt.AuthMode.WithinHeaders,e,t.apiKey),s=gl.createTransporter({hosts:[{url:`${e}-dsn.algolia.net`,accept:gl.CallEnum.Read},{url:`${e}.algolia.net`,accept:gl.CallEnum.Write}].concat(Jt.shuffle([{url:`${e}-1.algolianet.com`},{url:`${e}-2.algolianet.com`},{url:`${e}-3.algolianet.com`}])),...t,headers:{...r.headers(),\"content-type\":\"application/x-www-form-urlencoded\",...t.headers},queryParameters:{...r.queryParameters(),...t.queryParameters}}),a={transporter:s,appId:e,addAlgoliaAgent(n,c){s.userAgent.add({segment:n,version:c})},clearCache(){return Promise.all([s.requestsCache.clear(),s.responsesCache.clear()]).then(()=>{})}};return Jt.addMethods(a,t.methods)};function dIe(){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 mIe(){return{name:\"ObjectNotFoundError\",message:\"Object not found.\"}}function yIe(){return{name:\"ValidUntilNotFoundError\",message:\"ValidUntil not found in given secured api key.\"}}var Jut=t=>(e,r)=>{let{queryParameters:s,...a}=r||{},n={acl:e,...s!==void 0?{queryParameters:s}:{}},c=(f,p)=>Jt.createRetryablePromise(h=>kS(t)(f.key,p).catch(E=>{if(E.status!==404)throw E;return h()}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:\"1/keys\",data:n},a),c)},Kut=t=>(e,r,s)=>{let a=gl.createMappedRequestOptions(s);return a.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:br.MethodEnum.Post,path:\"1/clusters/mapping\",data:{cluster:r}},a)},zut=t=>(e,r,s)=>t.transporter.write({method:br.MethodEnum.Post,path:\"1/clusters/mapping/batch\",data:{users:e,cluster:r}},s),Xut=t=>(e,r)=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:{action:\"addEntry\",body:[]}}},r),(s,a)=>aw(t)(s.taskID,a)),pF=t=>(e,r,s)=>{let a=(n,c)=>QS(t)(e,{methods:{waitTask:hs}}).waitTask(n.taskID,c);return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"copy\",destination:r}},s),a)},Zut=t=>(e,r,s)=>pF(t)(e,r,{...s,scope:[gF.Rules]}),$ut=t=>(e,r,s)=>pF(t)(e,r,{...s,scope:[gF.Settings]}),eft=t=>(e,r,s)=>pF(t)(e,r,{...s,scope:[gF.Synonyms]}),tft=t=>(e,r)=>e.method===br.MethodEnum.Get?t.transporter.read(e,r):t.transporter.write(e,r),rft=t=>(e,r)=>{let s=(a,n)=>Jt.createRetryablePromise(c=>kS(t)(e,n).then(c).catch(f=>{if(f.status!==404)throw f}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode(\"1/keys/%s\",e)},r),s)},nft=t=>(e,r,s)=>{let a=r.map(n=>({action:\"deleteEntry\",body:{objectID:n}}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>aw(t)(n.taskID,c))},ift=()=>(t,e)=>{let r=gl.serializeQueryParameters(e),s=Yut.createHmac(\"sha256\",t).update(r).digest(\"hex\");return Buffer.from(s+r).toString(\"base64\")},kS=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode(\"1/keys/%s\",e)},r),EIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode(\"1/task/%s\",e.toString())},r),sft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"/1/dictionaries/*/settings\"},e),oft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/logs\"},e),aft=()=>t=>{let e=Buffer.from(t,\"base64\").toString(\"ascii\"),r=/validUntil=(\\d+)/,s=e.match(r);if(s===null)throw yIe();return parseInt(s[1],10)-Math.round(new Date().getTime()/1e3)},lft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters/mapping/top\"},e),cft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode(\"1/clusters/mapping/%s\",e)},r),uft=t=>e=>{let{retrieveMappings:r,...s}=e||{};return r===!0&&(s.getClusters=!0),t.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters/mapping/pending\"},s)},QS=t=>(e,r={})=>{let s={transporter:t.transporter,appId:t.appId,indexName:e};return Jt.addMethods(s,r.methods)},fft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/keys\"},e),Aft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters\"},e),pft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/indexes\"},e),hft=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:\"1/clusters/mapping\"},e),gft=t=>(e,r,s)=>{let a=(n,c)=>QS(t)(e,{methods:{waitTask:hs}}).waitTask(n.taskID,c);return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/operation\",e),data:{operation:\"move\",destination:r}},s),a)},dft=t=>(e,r)=>{let s=(a,n)=>Promise.all(Object.keys(a.taskID).map(c=>QS(t)(c,{methods:{waitTask:hs}}).waitTask(a.taskID[c],n)));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:\"1/indexes/*/batch\",data:{requests:e}},r),s)},mft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:e}},r),yft=t=>(e,r)=>{let s=e.map(a=>({...a,params:gl.serializeQueryParameters(a.params||{})}));return t.transporter.read({method:br.MethodEnum.Post,path:\"1/indexes/*/queries\",data:{requests:s},cacheable:!0},r)},Eft=t=>(e,r)=>Promise.all(e.map(s=>{let{facetName:a,facetQuery:n,...c}=s.params;return QS(t)(s.indexName,{methods:{searchForFacetValues:DIe}}).searchForFacetValues(a,n,{...r,...c})})),Ift=t=>(e,r)=>{let s=gl.createMappedRequestOptions(r);return s.queryParameters[\"X-Algolia-User-ID\"]=e,t.transporter.write({method:br.MethodEnum.Delete,path:\"1/clusters/mapping\"},s)},Cft=t=>(e,r,s)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!0,requests:a}},s),(n,c)=>aw(t)(n.taskID,c))},wft=t=>(e,r)=>{let s=(a,n)=>Jt.createRetryablePromise(c=>kS(t)(e,n).catch(f=>{if(f.status!==404)throw f;return c()}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/keys/%s/restore\",e)},r),s)},Bft=t=>(e,r,s)=>{let a=r.map(n=>({action:\"addEntry\",body:n}));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"/1/dictionaries/%s/batch\",e),data:{clearExistingDictionaryEntries:!1,requests:a}},s),(n,c)=>aw(t)(n.taskID,c))},vft=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode(\"/1/dictionaries/%s/search\",e),data:{query:r},cacheable:!0},s),Sft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:\"1/clusters/mapping/search\",data:{query:e}},r),Dft=t=>(e,r)=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:\"/1/dictionaries/*/settings\",data:e},r),(s,a)=>aw(t)(s.taskID,a)),bft=t=>(e,r)=>{let s=Object.assign({},r),{queryParameters:a,...n}=r||{},c=a?{queryParameters:a}:{},f=[\"acl\",\"indexes\",\"referers\",\"restrictSources\",\"queryParameters\",\"description\",\"maxQueriesPerIPPerHour\",\"maxHitsPerQuery\"],p=E=>Object.keys(s).filter(C=>f.indexOf(C)!==-1).every(C=>{if(Array.isArray(E[C])&&Array.isArray(s[C])){let S=E[C];return S.length===s[C].length&&S.every((P,I)=>P===s[C][I])}else return E[C]===s[C]}),h=(E,C)=>Jt.createRetryablePromise(S=>kS(t)(e,C).then(P=>p(P)?Promise.resolve():S()));return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:Jt.encode(\"1/keys/%s\",e),data:c},n),h)},aw=t=>(e,r)=>Jt.createRetryablePromise(s=>EIe(t)(e,r).then(a=>a.status!==\"published\"?s():void 0)),IIe=t=>(e,r)=>{let s=(a,n)=>hs(t)(a.taskID,n);return Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/batch\",t.indexName),data:{requests:e}},r),s)},Pft=t=>e=>AF({shouldStop:r=>r.cursor===void 0,...e,request:r=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/browse\",t.indexName),data:r},e)}),xft=t=>e=>{let r={hitsPerPage:1e3,...e};return AF({shouldStop:s=>s.hits.length<r.hitsPerPage,...r,request(s){return bIe(t)(\"\",{...r,...s}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},kft=t=>e=>{let r={hitsPerPage:1e3,...e};return AF({shouldStop:s=>s.hits.length<r.hitsPerPage,...r,request(s){return PIe(t)(\"\",{...r,...s}).then(a=>({...a,hits:a.hits.map(n=>(delete n._highlightResult,n))}))}})},hF=t=>(e,r,s)=>{let{batchSize:a,...n}=s||{},c={taskIDs:[],objectIDs:[]},f=(p=0)=>{let h=[],E;for(E=p;E<e.length&&(h.push(e[E]),h.length!==(a||1e3));E++);return h.length===0?Promise.resolve(c):IIe(t)(h.map(C=>({action:r,body:C})),n).then(C=>(c.objectIDs=c.objectIDs.concat(C.objectIDs),c.taskIDs.push(C.taskID),E++,f(E)))};return Jt.createWaitablePromise(f(),(p,h)=>Promise.all(p.taskIDs.map(E=>hs(t)(E,h))))},Qft=t=>e=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/clear\",t.indexName)},e),(r,s)=>hs(t)(r.taskID,s)),Tft=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=gl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/rules/clear\",t.indexName)},a),(n,c)=>hs(t)(n.taskID,c))},Rft=t=>e=>{let{forwardToReplicas:r,...s}=e||{},a=gl.createMappedRequestOptions(s);return r&&(a.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/synonyms/clear\",t.indexName)},a),(n,c)=>hs(t)(n.taskID,c))},Fft=t=>(e,r)=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/deleteByQuery\",t.indexName),data:e},r),(s,a)=>hs(t)(s.taskID,a)),Nft=t=>e=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode(\"1/indexes/%s\",t.indexName)},e),(r,s)=>hs(t)(r.taskID,s)),Oft=t=>(e,r)=>Jt.createWaitablePromise(CIe(t)([e],r).then(s=>({taskID:s.taskIDs[0]})),(s,a)=>hs(t)(s.taskID,a)),CIe=t=>(e,r)=>{let s=e.map(a=>({objectID:a}));return hF(t)(s,km.DeleteObject,r)},Lft=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=gl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},n),(c,f)=>hs(t)(c.taskID,f))},Mft=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=gl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Delete,path:Jt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},n),(c,f)=>hs(t)(c.taskID,f))},Uft=t=>e=>wIe(t)(e).then(()=>!0).catch(r=>{if(r.status!==404)throw r;return!1}),_ft=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode(\"1/answers/%s/prediction\",t.indexName),data:{query:e,queryLanguages:r},cacheable:!0},s),Hft=t=>(e,r)=>{let{query:s,paginate:a,...n}=r||{},c=0,f=()=>SIe(t)(s||\"\",{...n,page:c}).then(p=>{for(let[h,E]of Object.entries(p.hits))if(e(E))return{object:E,position:parseInt(h,10),page:c};if(c++,a===!1||c>=p.nbPages)throw mIe();return f()});return f()},jft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode(\"1/indexes/%s/%s\",t.indexName,e)},r),Gft=()=>(t,e)=>{for(let[r,s]of Object.entries(t.hits))if(s.objectID===e)return parseInt(r,10);return-1},qft=t=>(e,r)=>{let{attributesToRetrieve:s,...a}=r||{},n=e.map(c=>({indexName:t.indexName,objectID:c,...s?{attributesToRetrieve:s}:{}}));return t.transporter.read({method:br.MethodEnum.Post,path:\"1/indexes/*/objects\",data:{requests:n}},a)},Wft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode(\"1/indexes/%s/rules/%s\",t.indexName,e)},r),wIe=t=>e=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode(\"1/indexes/%s/settings\",t.indexName),data:{getVersion:2}},e),Yft=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode(\"1/indexes/%s/synonyms/%s\",t.indexName,e)},r),BIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Get,path:Jt.encode(\"1/indexes/%s/task/%s\",t.indexName,e.toString())},r),Vft=t=>(e,r)=>Jt.createWaitablePromise(vIe(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>hs(t)(s.taskID,a)),vIe=t=>(e,r)=>{let{createIfNotExists:s,...a}=r||{},n=s?km.PartialUpdateObject:km.PartialUpdateObjectNoCreate;return hF(t)(e,n,a)},Jft=t=>(e,r)=>{let{safe:s,autoGenerateObjectIDIfNotExist:a,batchSize:n,...c}=r||{},f=(I,R,N,U)=>Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/operation\",I),data:{operation:N,destination:R}},U),(W,ee)=>hs(t)(W.taskID,ee)),p=Math.random().toString(36).substring(7),h=`${t.indexName}_tmp_${p}`,E=l9({appId:t.appId,transporter:t.transporter,indexName:h}),C=[],S=f(t.indexName,h,\"copy\",{...c,scope:[\"settings\",\"synonyms\",\"rules\"]});C.push(S);let P=(s?S.wait(c):S).then(()=>{let I=E(e,{...c,autoGenerateObjectIDIfNotExist:a,batchSize:n});return C.push(I),s?I.wait(c):I}).then(()=>{let I=f(h,t.indexName,\"move\",c);return C.push(I),s?I.wait(c):I}).then(()=>Promise.all(C)).then(([I,R,N])=>({objectIDs:R.objectIDs,taskIDs:[I.taskID,...R.taskIDs,N.taskID]}));return Jt.createWaitablePromise(P,(I,R)=>Promise.all(C.map(N=>N.wait(R))))},Kft=t=>(e,r)=>c9(t)(e,{...r,clearExistingRules:!0}),zft=t=>(e,r)=>u9(t)(e,{...r,clearExistingSynonyms:!0}),Xft=t=>(e,r)=>Jt.createWaitablePromise(l9(t)([e],r).then(s=>({objectID:s.objectIDs[0],taskID:s.taskIDs[0]})),(s,a)=>hs(t)(s.taskID,a)),l9=t=>(e,r)=>{let{autoGenerateObjectIDIfNotExist:s,...a}=r||{},n=s?km.AddObject:km.UpdateObject;if(n===km.UpdateObject){for(let c of e)if(c.objectID===void 0)return Jt.createWaitablePromise(Promise.reject(dIe()))}return hF(t)(e,n,a)},Zft=t=>(e,r)=>c9(t)([e],r),c9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingRules:a,...n}=r||{},c=gl.createMappedRequestOptions(n);return s&&(c.queryParameters.forwardToReplicas=1),a&&(c.queryParameters.clearExistingRules=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/rules/batch\",t.indexName),data:e},c),(f,p)=>hs(t)(f.taskID,p))},$ft=t=>(e,r)=>u9(t)([e],r),u9=t=>(e,r)=>{let{forwardToReplicas:s,clearExistingSynonyms:a,replaceExistingSynonyms:n,...c}=r||{},f=gl.createMappedRequestOptions(c);return s&&(f.queryParameters.forwardToReplicas=1),(n||a)&&(f.queryParameters.replaceExistingSynonyms=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/synonyms/batch\",t.indexName),data:e},f),(p,h)=>hs(t)(p.taskID,h))},SIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/query\",t.indexName),data:{query:e},cacheable:!0},r),DIe=t=>(e,r,s)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/facets/%s/query\",t.indexName,e),data:{facetQuery:r},cacheable:!0},s),bIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/rules/search\",t.indexName),data:{query:e}},r),PIe=t=>(e,r)=>t.transporter.read({method:br.MethodEnum.Post,path:Jt.encode(\"1/indexes/%s/synonyms/search\",t.indexName),data:{query:e}},r),eAt=t=>(e,r)=>{let{forwardToReplicas:s,...a}=r||{},n=gl.createMappedRequestOptions(a);return s&&(n.queryParameters.forwardToReplicas=1),Jt.createWaitablePromise(t.transporter.write({method:br.MethodEnum.Put,path:Jt.encode(\"1/indexes/%s/settings\",t.indexName),data:e},n),(c,f)=>hs(t)(c.taskID,f))},hs=t=>(e,r)=>Jt.createRetryablePromise(s=>BIe(t)(e,r).then(a=>a.status!==\"published\"?s():void 0)),tAt={AddObject:\"addObject\",Analytics:\"analytics\",Browser:\"browse\",DeleteIndex:\"deleteIndex\",DeleteObject:\"deleteObject\",EditSettings:\"editSettings\",Inference:\"inference\",ListIndexes:\"listIndexes\",Logs:\"logs\",Personalization:\"personalization\",Recommendation:\"recommendation\",Search:\"search\",SeeUnretrievableAttributes:\"seeUnretrievableAttributes\",Settings:\"settings\",Usage:\"usage\"},km={AddObject:\"addObject\",UpdateObject:\"updateObject\",PartialUpdateObject:\"partialUpdateObject\",PartialUpdateObjectNoCreate:\"partialUpdateObjectNoCreate\",DeleteObject:\"deleteObject\",DeleteIndex:\"delete\",ClearIndex:\"clear\"},gF={Settings:\"settings\",Synonyms:\"synonyms\",Rules:\"rules\"},rAt={None:\"none\",StopIfEnoughMatches:\"stopIfEnoughMatches\"},nAt={Synonym:\"synonym\",OneWaySynonym:\"oneWaySynonym\",AltCorrection1:\"altCorrection1\",AltCorrection2:\"altCorrection2\",Placeholder:\"placeholder\"};Ft.ApiKeyACLEnum=tAt;Ft.BatchActionEnum=km;Ft.ScopeEnum=gF;Ft.StrategyEnum=rAt;Ft.SynonymEnum=nAt;Ft.addApiKey=Jut;Ft.assignUserID=Kut;Ft.assignUserIDs=zut;Ft.batch=IIe;Ft.browseObjects=Pft;Ft.browseRules=xft;Ft.browseSynonyms=kft;Ft.chunkedBatch=hF;Ft.clearDictionaryEntries=Xut;Ft.clearObjects=Qft;Ft.clearRules=Tft;Ft.clearSynonyms=Rft;Ft.copyIndex=pF;Ft.copyRules=Zut;Ft.copySettings=$ut;Ft.copySynonyms=eft;Ft.createBrowsablePromise=AF;Ft.createMissingObjectIDError=dIe;Ft.createObjectNotFoundError=mIe;Ft.createSearchClient=Vut;Ft.createValidUntilNotFoundError=yIe;Ft.customRequest=tft;Ft.deleteApiKey=rft;Ft.deleteBy=Fft;Ft.deleteDictionaryEntries=nft;Ft.deleteIndex=Nft;Ft.deleteObject=Oft;Ft.deleteObjects=CIe;Ft.deleteRule=Lft;Ft.deleteSynonym=Mft;Ft.exists=Uft;Ft.findAnswers=_ft;Ft.findObject=Hft;Ft.generateSecuredApiKey=ift;Ft.getApiKey=kS;Ft.getAppTask=EIe;Ft.getDictionarySettings=sft;Ft.getLogs=oft;Ft.getObject=jft;Ft.getObjectPosition=Gft;Ft.getObjects=qft;Ft.getRule=Wft;Ft.getSecuredApiKeyRemainingValidity=aft;Ft.getSettings=wIe;Ft.getSynonym=Yft;Ft.getTask=BIe;Ft.getTopUserIDs=lft;Ft.getUserID=cft;Ft.hasPendingMappings=uft;Ft.initIndex=QS;Ft.listApiKeys=fft;Ft.listClusters=Aft;Ft.listIndices=pft;Ft.listUserIDs=hft;Ft.moveIndex=gft;Ft.multipleBatch=dft;Ft.multipleGetObjects=mft;Ft.multipleQueries=yft;Ft.multipleSearchForFacetValues=Eft;Ft.partialUpdateObject=Vft;Ft.partialUpdateObjects=vIe;Ft.removeUserID=Ift;Ft.replaceAllObjects=Jft;Ft.replaceAllRules=Kft;Ft.replaceAllSynonyms=zft;Ft.replaceDictionaryEntries=Cft;Ft.restoreApiKey=wft;Ft.saveDictionaryEntries=Bft;Ft.saveObject=Xft;Ft.saveObjects=l9;Ft.saveRule=Zft;Ft.saveRules=c9;Ft.saveSynonym=$ft;Ft.saveSynonyms=u9;Ft.search=SIe;Ft.searchDictionaryEntries=vft;Ft.searchForFacetValues=DIe;Ft.searchRules=bIe;Ft.searchSynonyms=PIe;Ft.searchUserIDs=Sft;Ft.setDictionarySettings=Dft;Ft.setSettings=eAt;Ft.updateApiKey=bft;Ft.waitAppTask=aw;Ft.waitTask=hs});var QIe=_((LJt,kIe)=>{kIe.exports=xIe()});var TIe=_(dF=>{\"use strict\";Object.defineProperty(dF,\"__esModule\",{value:!0});function iAt(){return{debug(t,e){return Promise.resolve()},info(t,e){return Promise.resolve()},error(t,e){return Promise.resolve()}}}var sAt={Debug:1,Info:2,Error:3};dF.LogLevelEnum=sAt;dF.createNullLogger=iAt});var FIe=_((UJt,RIe)=>{RIe.exports=TIe()});var MIe=_(f9=>{\"use strict\";Object.defineProperty(f9,\"__esModule\",{value:!0});var NIe=Ie(\"http\"),OIe=Ie(\"https\"),oAt=Ie(\"url\"),LIe={keepAlive:!0},aAt=new NIe.Agent(LIe),lAt=new OIe.Agent(LIe);function cAt({agent:t,httpAgent:e,httpsAgent:r,requesterOptions:s={}}={}){let a=e||t||aAt,n=r||t||lAt;return{send(c){return new Promise(f=>{let p=oAt.parse(c.url),h=p.query===null?p.pathname:`${p.pathname}?${p.query}`,E={...s,agent:p.protocol===\"https:\"?n:a,hostname:p.hostname,path:h,method:c.method,headers:{...s&&s.headers?s.headers:{},...c.headers},...p.port!==void 0?{port:p.port||\"\"}:{}},C=(p.protocol===\"https:\"?OIe:NIe).request(E,R=>{let N=[];R.on(\"data\",U=>{N=N.concat(U)}),R.on(\"end\",()=>{clearTimeout(P),clearTimeout(I),f({status:R.statusCode||0,content:Buffer.concat(N).toString(),isTimedOut:!1})})}),S=(R,N)=>setTimeout(()=>{C.abort(),f({status:0,content:N,isTimedOut:!0})},R*1e3),P=S(c.connectTimeout,\"Connection timeout\"),I;C.on(\"error\",R=>{clearTimeout(P),clearTimeout(I),f({status:0,content:R.message,isTimedOut:!1})}),C.once(\"response\",()=>{clearTimeout(P),I=S(c.responseTimeout,\"Socket timeout\")}),c.data!==void 0&&C.write(c.data),C.end()})},destroy(){return a.destroy(),n.destroy(),Promise.resolve()}}}f9.createNodeHttpRequester=cAt});var _Ie=_((HJt,UIe)=>{UIe.exports=MIe()});var qIe=_((jJt,GIe)=>{\"use strict\";var HIe=MEe(),uAt=HEe(),lw=fIe(),p9=vS(),A9=gIe(),Gt=QIe(),fAt=FIe(),AAt=_Ie(),pAt=bS();function jIe(t,e,r){let s={appId:t,apiKey:e,timeouts:{connect:2,read:5,write:30},requester:AAt.createNodeHttpRequester(),logger:fAt.createNullLogger(),responsesCache:HIe.createNullCache(),requestsCache:HIe.createNullCache(),hostsCache:uAt.createInMemoryCache(),userAgent:pAt.createUserAgent(p9.version).add({segment:\"Node.js\",version:process.versions.node})},a={...s,...r},n=()=>c=>A9.createPersonalizationClient({...s,...c,methods:{getPersonalizationStrategy:A9.getPersonalizationStrategy,setPersonalizationStrategy:A9.setPersonalizationStrategy}});return Gt.createSearchClient({...a,methods:{search:Gt.multipleQueries,searchForFacetValues:Gt.multipleSearchForFacetValues,multipleBatch:Gt.multipleBatch,multipleGetObjects:Gt.multipleGetObjects,multipleQueries:Gt.multipleQueries,copyIndex:Gt.copyIndex,copySettings:Gt.copySettings,copyRules:Gt.copyRules,copySynonyms:Gt.copySynonyms,moveIndex:Gt.moveIndex,listIndices:Gt.listIndices,getLogs:Gt.getLogs,listClusters:Gt.listClusters,multipleSearchForFacetValues:Gt.multipleSearchForFacetValues,getApiKey:Gt.getApiKey,addApiKey:Gt.addApiKey,listApiKeys:Gt.listApiKeys,updateApiKey:Gt.updateApiKey,deleteApiKey:Gt.deleteApiKey,restoreApiKey:Gt.restoreApiKey,assignUserID:Gt.assignUserID,assignUserIDs:Gt.assignUserIDs,getUserID:Gt.getUserID,searchUserIDs:Gt.searchUserIDs,listUserIDs:Gt.listUserIDs,getTopUserIDs:Gt.getTopUserIDs,removeUserID:Gt.removeUserID,hasPendingMappings:Gt.hasPendingMappings,generateSecuredApiKey:Gt.generateSecuredApiKey,getSecuredApiKeyRemainingValidity:Gt.getSecuredApiKeyRemainingValidity,destroy:p9.destroy,clearDictionaryEntries:Gt.clearDictionaryEntries,deleteDictionaryEntries:Gt.deleteDictionaryEntries,getDictionarySettings:Gt.getDictionarySettings,getAppTask:Gt.getAppTask,replaceDictionaryEntries:Gt.replaceDictionaryEntries,saveDictionaryEntries:Gt.saveDictionaryEntries,searchDictionaryEntries:Gt.searchDictionaryEntries,setDictionarySettings:Gt.setDictionarySettings,waitAppTask:Gt.waitAppTask,customRequest:Gt.customRequest,initIndex:c=>f=>Gt.initIndex(c)(f,{methods:{batch:Gt.batch,delete:Gt.deleteIndex,findAnswers:Gt.findAnswers,getObject:Gt.getObject,getObjects:Gt.getObjects,saveObject:Gt.saveObject,saveObjects:Gt.saveObjects,search:Gt.search,searchForFacetValues:Gt.searchForFacetValues,waitTask:Gt.waitTask,setSettings:Gt.setSettings,getSettings:Gt.getSettings,partialUpdateObject:Gt.partialUpdateObject,partialUpdateObjects:Gt.partialUpdateObjects,deleteObject:Gt.deleteObject,deleteObjects:Gt.deleteObjects,deleteBy:Gt.deleteBy,clearObjects:Gt.clearObjects,browseObjects:Gt.browseObjects,getObjectPosition:Gt.getObjectPosition,findObject:Gt.findObject,exists:Gt.exists,saveSynonym:Gt.saveSynonym,saveSynonyms:Gt.saveSynonyms,getSynonym:Gt.getSynonym,searchSynonyms:Gt.searchSynonyms,browseSynonyms:Gt.browseSynonyms,deleteSynonym:Gt.deleteSynonym,clearSynonyms:Gt.clearSynonyms,replaceAllObjects:Gt.replaceAllObjects,replaceAllSynonyms:Gt.replaceAllSynonyms,searchRules:Gt.searchRules,getRule:Gt.getRule,deleteRule:Gt.deleteRule,saveRule:Gt.saveRule,saveRules:Gt.saveRules,replaceAllRules:Gt.replaceAllRules,browseRules:Gt.browseRules,clearRules:Gt.clearRules}}),initAnalytics:()=>c=>lw.createAnalyticsClient({...s,...c,methods:{addABTest:lw.addABTest,getABTest:lw.getABTest,getABTests:lw.getABTests,stopABTest:lw.stopABTest,deleteABTest:lw.deleteABTest}}),initPersonalization:n,initRecommendation:()=>c=>(a.logger.info(\"The `initRecommendation` method is deprecated. Use `initPersonalization` instead.\"),n()(c))}})}jIe.version=p9.version;GIe.exports=jIe});var g9=_((GJt,h9)=>{var WIe=qIe();h9.exports=WIe;h9.exports.default=WIe});var y9=_((WJt,JIe)=>{\"use strict\";var VIe=Object.getOwnPropertySymbols,gAt=Object.prototype.hasOwnProperty,dAt=Object.prototype.propertyIsEnumerable;function mAt(t){if(t==null)throw new TypeError(\"Object.assign cannot be called with null or undefined\");return Object(t)}function yAt(){try{if(!Object.assign)return!1;var t=new String(\"abc\");if(t[5]=\"de\",Object.getOwnPropertyNames(t)[0]===\"5\")return!1;for(var e={},r=0;r<10;r++)e[\"_\"+String.fromCharCode(r)]=r;var s=Object.getOwnPropertyNames(e).map(function(n){return e[n]});if(s.join(\"\")!==\"0123456789\")return!1;var a={};return\"abcdefghijklmnopqrst\".split(\"\").forEach(function(n){a[n]=n}),Object.keys(Object.assign({},a)).join(\"\")===\"abcdefghijklmnopqrst\"}catch{return!1}}JIe.exports=yAt()?Object.assign:function(t,e){for(var r,s=mAt(t),a,n=1;n<arguments.length;n++){r=Object(arguments[n]);for(var c in r)gAt.call(r,c)&&(s[c]=r[c]);if(VIe){a=VIe(r);for(var f=0;f<a.length;f++)dAt.call(r,a[f])&&(s[a[f]]=r[a[f]])}}return s}});var uCe=_(Dn=>{\"use strict\";var I9=y9(),cw=60103,XIe=60106;Dn.Fragment=60107;Dn.StrictMode=60108;Dn.Profiler=60114;var ZIe=60109,$Ie=60110,eCe=60112;Dn.Suspense=60113;var tCe=60115,rCe=60116;typeof Symbol==\"function\"&&Symbol.for&&(Gc=Symbol.for,cw=Gc(\"react.element\"),XIe=Gc(\"react.portal\"),Dn.Fragment=Gc(\"react.fragment\"),Dn.StrictMode=Gc(\"react.strict_mode\"),Dn.Profiler=Gc(\"react.profiler\"),ZIe=Gc(\"react.provider\"),$Ie=Gc(\"react.context\"),eCe=Gc(\"react.forward_ref\"),Dn.Suspense=Gc(\"react.suspense\"),tCe=Gc(\"react.memo\"),rCe=Gc(\"react.lazy\"));var Gc,KIe=typeof Symbol==\"function\"&&Symbol.iterator;function EAt(t){return t===null||typeof t!=\"object\"?null:(t=KIe&&t[KIe]||t[\"@@iterator\"],typeof t==\"function\"?t:null)}function TS(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 nCe={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},iCe={};function uw(t,e,r){this.props=t,this.context=e,this.refs=iCe,this.updater=r||nCe}uw.prototype.isReactComponent={};uw.prototype.setState=function(t,e){if(typeof t!=\"object\"&&typeof t!=\"function\"&&t!=null)throw Error(TS(85));this.updater.enqueueSetState(this,t,e,\"setState\")};uw.prototype.forceUpdate=function(t){this.updater.enqueueForceUpdate(this,t,\"forceUpdate\")};function sCe(){}sCe.prototype=uw.prototype;function C9(t,e,r){this.props=t,this.context=e,this.refs=iCe,this.updater=r||nCe}var w9=C9.prototype=new sCe;w9.constructor=C9;I9(w9,uw.prototype);w9.isPureReactComponent=!0;var B9={current:null},oCe=Object.prototype.hasOwnProperty,aCe={key:!0,ref:!0,__self:!0,__source:!0};function lCe(t,e,r){var s,a={},n=null,c=null;if(e!=null)for(s in e.ref!==void 0&&(c=e.ref),e.key!==void 0&&(n=\"\"+e.key),e)oCe.call(e,s)&&!aCe.hasOwnProperty(s)&&(a[s]=e[s]);var f=arguments.length-2;if(f===1)a.children=r;else if(1<f){for(var p=Array(f),h=0;h<f;h++)p[h]=arguments[h+2];a.children=p}if(t&&t.defaultProps)for(s in f=t.defaultProps,f)a[s]===void 0&&(a[s]=f[s]);return{$$typeof:cw,type:t,key:n,ref:c,props:a,_owner:B9.current}}function IAt(t,e){return{$$typeof:cw,type:t.type,key:e,ref:t.ref,props:t.props,_owner:t._owner}}function v9(t){return typeof t==\"object\"&&t!==null&&t.$$typeof===cw}function CAt(t){var e={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+t.replace(/[=:]/g,function(r){return e[r]})}var zIe=/\\/+/g;function E9(t,e){return typeof t==\"object\"&&t!==null&&t.key!=null?CAt(\"\"+t.key):e.toString(36)}function yF(t,e,r,s,a){var n=typeof t;(n===\"undefined\"||n===\"boolean\")&&(t=null);var c=!1;if(t===null)c=!0;else switch(n){case\"string\":case\"number\":c=!0;break;case\"object\":switch(t.$$typeof){case cw:case XIe:c=!0}}if(c)return c=t,a=a(c),t=s===\"\"?\".\"+E9(c,0):s,Array.isArray(a)?(r=\"\",t!=null&&(r=t.replace(zIe,\"$&/\")+\"/\"),yF(a,e,r,\"\",function(h){return h})):a!=null&&(v9(a)&&(a=IAt(a,r+(!a.key||c&&c.key===a.key?\"\":(\"\"+a.key).replace(zIe,\"$&/\")+\"/\")+t)),e.push(a)),1;if(c=0,s=s===\"\"?\".\":s+\":\",Array.isArray(t))for(var f=0;f<t.length;f++){n=t[f];var p=s+E9(n,f);c+=yF(n,e,r,p,a)}else if(p=EAt(t),typeof p==\"function\")for(t=p.call(t),f=0;!(n=t.next()).done;)n=n.value,p=s+E9(n,f++),c+=yF(n,e,r,p,a);else if(n===\"object\")throw e=\"\"+t,Error(TS(31,e===\"[object Object]\"?\"object with keys {\"+Object.keys(t).join(\", \")+\"}\":e));return c}function mF(t,e,r){if(t==null)return t;var s=[],a=0;return yF(t,s,\"\",\"\",function(n){return e.call(r,n,a++)}),s}function wAt(t){if(t._status===-1){var e=t._result;e=e(),t._status=0,t._result=e,e.then(function(r){t._status===0&&(r=r.default,t._status=1,t._result=r)},function(r){t._status===0&&(t._status=2,t._result=r)})}if(t._status===1)return t._result;throw t._result}var cCe={current:null};function Zp(){var t=cCe.current;if(t===null)throw Error(TS(321));return t}var BAt={ReactCurrentDispatcher:cCe,ReactCurrentBatchConfig:{transition:0},ReactCurrentOwner:B9,IsSomeRendererActing:{current:!1},assign:I9};Dn.Children={map:mF,forEach:function(t,e,r){mF(t,function(){e.apply(this,arguments)},r)},count:function(t){var e=0;return mF(t,function(){e++}),e},toArray:function(t){return mF(t,function(e){return e})||[]},only:function(t){if(!v9(t))throw Error(TS(143));return t}};Dn.Component=uw;Dn.PureComponent=C9;Dn.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=BAt;Dn.cloneElement=function(t,e,r){if(t==null)throw Error(TS(267,t));var s=I9({},t.props),a=t.key,n=t.ref,c=t._owner;if(e!=null){if(e.ref!==void 0&&(n=e.ref,c=B9.current),e.key!==void 0&&(a=\"\"+e.key),t.type&&t.type.defaultProps)var f=t.type.defaultProps;for(p in e)oCe.call(e,p)&&!aCe.hasOwnProperty(p)&&(s[p]=e[p]===void 0&&f!==void 0?f[p]:e[p])}var p=arguments.length-2;if(p===1)s.children=r;else if(1<p){f=Array(p);for(var h=0;h<p;h++)f[h]=arguments[h+2];s.children=f}return{$$typeof:cw,type:t.type,key:a,ref:n,props:s,_owner:c}};Dn.createContext=function(t,e){return e===void 0&&(e=null),t={$$typeof:$Ie,_calculateChangedBits:e,_currentValue:t,_currentValue2:t,_threadCount:0,Provider:null,Consumer:null},t.Provider={$$typeof:ZIe,_context:t},t.Consumer=t};Dn.createElement=lCe;Dn.createFactory=function(t){var e=lCe.bind(null,t);return e.type=t,e};Dn.createRef=function(){return{current:null}};Dn.forwardRef=function(t){return{$$typeof:eCe,render:t}};Dn.isValidElement=v9;Dn.lazy=function(t){return{$$typeof:rCe,_payload:{_status:-1,_result:t},_init:wAt}};Dn.memo=function(t,e){return{$$typeof:tCe,type:t,compare:e===void 0?null:e}};Dn.useCallback=function(t,e){return Zp().useCallback(t,e)};Dn.useContext=function(t,e){return Zp().useContext(t,e)};Dn.useDebugValue=function(){};Dn.useEffect=function(t,e){return Zp().useEffect(t,e)};Dn.useImperativeHandle=function(t,e,r){return Zp().useImperativeHandle(t,e,r)};Dn.useLayoutEffect=function(t,e){return Zp().useLayoutEffect(t,e)};Dn.useMemo=function(t,e){return Zp().useMemo(t,e)};Dn.useReducer=function(t,e,r){return Zp().useReducer(t,e,r)};Dn.useRef=function(t){return Zp().useRef(t)};Dn.useState=function(t){return Zp().useState(t)};Dn.version=\"17.0.2\"});var hn=_((VJt,fCe)=>{\"use strict\";fCe.exports=uCe()});var EF=_((JJt,ACe)=>{function vAt(t){var e=typeof t;return t!=null&&(e==\"object\"||e==\"function\")}ACe.exports=vAt});var hCe=_((KJt,pCe)=>{var SAt=typeof global==\"object\"&&global&&global.Object===Object&&global;pCe.exports=SAt});var S9=_((zJt,gCe)=>{var DAt=hCe(),bAt=typeof self==\"object\"&&self&&self.Object===Object&&self,PAt=DAt||bAt||Function(\"return this\")();gCe.exports=PAt});var mCe=_((XJt,dCe)=>{var xAt=S9(),kAt=function(){return xAt.Date.now()};dCe.exports=kAt});var ECe=_((ZJt,yCe)=>{var QAt=/\\s/;function TAt(t){for(var e=t.length;e--&&QAt.test(t.charAt(e)););return e}yCe.exports=TAt});var CCe=_(($Jt,ICe)=>{var RAt=ECe(),FAt=/^\\s+/;function NAt(t){return t&&t.slice(0,RAt(t)+1).replace(FAt,\"\")}ICe.exports=NAt});var D9=_((eKt,wCe)=>{var OAt=S9(),LAt=OAt.Symbol;wCe.exports=LAt});var DCe=_((tKt,SCe)=>{var BCe=D9(),vCe=Object.prototype,MAt=vCe.hasOwnProperty,UAt=vCe.toString,RS=BCe?BCe.toStringTag:void 0;function _At(t){var e=MAt.call(t,RS),r=t[RS];try{t[RS]=void 0;var s=!0}catch{}var a=UAt.call(t);return s&&(e?t[RS]=r:delete t[RS]),a}SCe.exports=_At});var PCe=_((rKt,bCe)=>{var HAt=Object.prototype,jAt=HAt.toString;function GAt(t){return jAt.call(t)}bCe.exports=GAt});var TCe=_((nKt,QCe)=>{var xCe=D9(),qAt=DCe(),WAt=PCe(),YAt=\"[object Null]\",VAt=\"[object Undefined]\",kCe=xCe?xCe.toStringTag:void 0;function JAt(t){return t==null?t===void 0?VAt:YAt:kCe&&kCe in Object(t)?qAt(t):WAt(t)}QCe.exports=JAt});var FCe=_((iKt,RCe)=>{function KAt(t){return t!=null&&typeof t==\"object\"}RCe.exports=KAt});var OCe=_((sKt,NCe)=>{var zAt=TCe(),XAt=FCe(),ZAt=\"[object Symbol]\";function $At(t){return typeof t==\"symbol\"||XAt(t)&&zAt(t)==ZAt}NCe.exports=$At});var _Ce=_((oKt,UCe)=>{var ept=CCe(),LCe=EF(),tpt=OCe(),MCe=NaN,rpt=/^[-+]0x[0-9a-f]+$/i,npt=/^0b[01]+$/i,ipt=/^0o[0-7]+$/i,spt=parseInt;function opt(t){if(typeof t==\"number\")return t;if(tpt(t))return MCe;if(LCe(t)){var e=typeof t.valueOf==\"function\"?t.valueOf():t;t=LCe(e)?e+\"\":e}if(typeof t!=\"string\")return t===0?t:+t;t=ept(t);var r=npt.test(t);return r||ipt.test(t)?spt(t.slice(2),r?2:8):rpt.test(t)?MCe:+t}UCe.exports=opt});var GCe=_((aKt,jCe)=>{var apt=EF(),b9=mCe(),HCe=_Ce(),lpt=\"Expected a function\",cpt=Math.max,upt=Math.min;function fpt(t,e,r){var s,a,n,c,f,p,h=0,E=!1,C=!1,S=!0;if(typeof t!=\"function\")throw new TypeError(lpt);e=HCe(e)||0,apt(r)&&(E=!!r.leading,C=\"maxWait\"in r,n=C?cpt(HCe(r.maxWait)||0,e):n,S=\"trailing\"in r?!!r.trailing:S);function P(le){var me=s,pe=a;return s=a=void 0,h=le,c=t.apply(pe,me),c}function I(le){return h=le,f=setTimeout(U,e),E?P(le):c}function R(le){var me=le-p,pe=le-h,Be=e-me;return C?upt(Be,n-pe):Be}function N(le){var me=le-p,pe=le-h;return p===void 0||me>=e||me<0||C&&pe>=n}function U(){var le=b9();if(N(le))return W(le);f=setTimeout(U,R(le))}function W(le){return f=void 0,S&&s?P(le):(s=a=void 0,c)}function ee(){f!==void 0&&clearTimeout(f),h=0,s=p=a=f=void 0}function ie(){return f===void 0?c:W(b9())}function ue(){var le=b9(),me=N(le);if(s=arguments,a=this,p=le,me){if(f===void 0)return I(p);if(C)return clearTimeout(f),f=setTimeout(U,e),P(p)}return f===void 0&&(f=setTimeout(U,e)),c}return ue.cancel=ee,ue.flush=ie,ue}jCe.exports=fpt});var WCe=_((lKt,qCe)=>{var Apt=GCe(),ppt=EF(),hpt=\"Expected a function\";function gpt(t,e,r){var s=!0,a=!0;if(typeof t!=\"function\")throw new TypeError(hpt);return ppt(r)&&(s=\"leading\"in r?!!r.leading:s,a=\"trailing\"in r?!!r.trailing:a),Apt(t,e,{leading:s,maxWait:e,trailing:a})}qCe.exports=gpt});var x9=_((cKt,P9)=>{\"use strict\";var Cn=P9.exports;P9.exports.default=Cn;var Xn=\"\\x1B[\",NS=\"\\x1B]\",fw=\"\\x07\",IF=\";\",YCe=process.env.TERM_PROGRAM===\"Apple_Terminal\";Cn.cursorTo=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");return typeof e!=\"number\"?Xn+(t+1)+\"G\":Xn+(e+1)+\";\"+(t+1)+\"H\"};Cn.cursorMove=(t,e)=>{if(typeof t!=\"number\")throw new TypeError(\"The `x` argument is required\");let r=\"\";return t<0?r+=Xn+-t+\"D\":t>0&&(r+=Xn+t+\"C\"),e<0?r+=Xn+-e+\"A\":e>0&&(r+=Xn+e+\"B\"),r};Cn.cursorUp=(t=1)=>Xn+t+\"A\";Cn.cursorDown=(t=1)=>Xn+t+\"B\";Cn.cursorForward=(t=1)=>Xn+t+\"C\";Cn.cursorBackward=(t=1)=>Xn+t+\"D\";Cn.cursorLeft=Xn+\"G\";Cn.cursorSavePosition=YCe?\"\\x1B7\":Xn+\"s\";Cn.cursorRestorePosition=YCe?\"\\x1B8\":Xn+\"u\";Cn.cursorGetPosition=Xn+\"6n\";Cn.cursorNextLine=Xn+\"E\";Cn.cursorPrevLine=Xn+\"F\";Cn.cursorHide=Xn+\"?25l\";Cn.cursorShow=Xn+\"?25h\";Cn.eraseLines=t=>{let e=\"\";for(let r=0;r<t;r++)e+=Cn.eraseLine+(r<t-1?Cn.cursorUp():\"\");return t&&(e+=Cn.cursorLeft),e};Cn.eraseEndLine=Xn+\"K\";Cn.eraseStartLine=Xn+\"1K\";Cn.eraseLine=Xn+\"2K\";Cn.eraseDown=Xn+\"J\";Cn.eraseUp=Xn+\"1J\";Cn.eraseScreen=Xn+\"2J\";Cn.scrollUp=Xn+\"S\";Cn.scrollDown=Xn+\"T\";Cn.clearScreen=\"\\x1Bc\";Cn.clearTerminal=process.platform===\"win32\"?`${Cn.eraseScreen}${Xn}0f`:`${Cn.eraseScreen}${Xn}3J${Xn}H`;Cn.beep=fw;Cn.link=(t,e)=>[NS,\"8\",IF,IF,e,fw,t,NS,\"8\",IF,IF,fw].join(\"\");Cn.image=(t,e={})=>{let r=`${NS}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\")+fw};Cn.iTerm={setCwd:(t=process.cwd())=>`${NS}50;CurrentDir=${t}${fw}`,annotation:(t,e={})=>{let r=`${NS}1337;`,s=typeof e.x<\"u\",a=typeof e.y<\"u\";if((s||a)&&!(s&&a&&typeof e.length<\"u\"))throw new Error(\"`x`, `y` and `length` must be defined when `x` or `y` is defined\");return t=t.replace(/\\|/g,\"\"),r+=e.isHidden?\"AddHiddenAnnotation=\":\"AddAnnotation=\",e.length>0?r+=(s?[t,e.length,e.x,e.y]:[e.length,t]).join(\"|\"):r+=t,r+fw}}});var JCe=_((uKt,k9)=>{\"use strict\";var VCe=(t,e)=>{for(let r of Reflect.ownKeys(e))Object.defineProperty(t,r,Object.getOwnPropertyDescriptor(e,r));return t};k9.exports=VCe;k9.exports.default=VCe});var zCe=_((fKt,wF)=>{\"use strict\";var dpt=JCe(),CF=new WeakMap,KCe=(t,e={})=>{if(typeof t!=\"function\")throw new TypeError(\"Expected a function\");let r,s=0,a=t.displayName||t.name||\"<anonymous>\",n=function(...c){if(CF.set(n,++s),s===1)r=t.apply(this,c),t=null;else if(e.throw===!0)throw new Error(`Function \\`${a}\\` can only be called once`);return r};return dpt(n,t),CF.set(n,s),n};wF.exports=KCe;wF.exports.default=KCe;wF.exports.callCount=t=>{if(!CF.has(t))throw new Error(`The given function \\`${t.name}\\` is not wrapped by the \\`onetime\\` package`);return CF.get(t)}});var XCe=_((AKt,BF)=>{BF.exports=[\"SIGABRT\",\"SIGALRM\",\"SIGHUP\",\"SIGINT\",\"SIGTERM\"];process.platform!==\"win32\"&&BF.exports.push(\"SIGVTALRM\",\"SIGXCPU\",\"SIGXFSZ\",\"SIGUSR2\",\"SIGTRAP\",\"SIGSYS\",\"SIGQUIT\",\"SIGIOT\");process.platform===\"linux\"&&BF.exports.push(\"SIGIO\",\"SIGPOLL\",\"SIGPWR\",\"SIGSTKFLT\",\"SIGUNUSED\")});var R9=_((pKt,hw)=>{var Qi=global.process,Qm=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\"};Qm(Qi)?(ZCe=Ie(\"assert\"),Aw=XCe(),$Ce=/^win/i.test(Qi.platform),OS=Ie(\"events\"),typeof OS!=\"function\"&&(OS=OS.EventEmitter),Qi.__signal_exit_emitter__?Js=Qi.__signal_exit_emitter__:(Js=Qi.__signal_exit_emitter__=new OS,Js.count=0,Js.emitted={}),Js.infinite||(Js.setMaxListeners(1/0),Js.infinite=!0),hw.exports=function(t,e){if(!Qm(global.process))return function(){};ZCe.equal(typeof t,\"function\",\"a callback must be provided for exit handler\"),pw===!1&&Q9();var r=\"exit\";e&&e.alwaysLast&&(r=\"afterexit\");var s=function(){Js.removeListener(r,t),Js.listeners(\"exit\").length===0&&Js.listeners(\"afterexit\").length===0&&vF()};return Js.on(r,t),s},vF=function(){!pw||!Qm(global.process)||(pw=!1,Aw.forEach(function(e){try{Qi.removeListener(e,SF[e])}catch{}}),Qi.emit=DF,Qi.reallyExit=T9,Js.count-=1)},hw.exports.unload=vF,Tm=function(e,r,s){Js.emitted[e]||(Js.emitted[e]=!0,Js.emit(e,r,s))},SF={},Aw.forEach(function(t){SF[t]=function(){if(Qm(global.process)){var r=Qi.listeners(t);r.length===Js.count&&(vF(),Tm(\"exit\",null,t),Tm(\"afterexit\",null,t),$Ce&&t===\"SIGHUP\"&&(t=\"SIGINT\"),Qi.kill(Qi.pid,t))}}}),hw.exports.signals=function(){return Aw},pw=!1,Q9=function(){pw||!Qm(global.process)||(pw=!0,Js.count+=1,Aw=Aw.filter(function(e){try{return Qi.on(e,SF[e]),!0}catch{return!1}}),Qi.emit=twe,Qi.reallyExit=ewe)},hw.exports.load=Q9,T9=Qi.reallyExit,ewe=function(e){Qm(global.process)&&(Qi.exitCode=e||0,Tm(\"exit\",Qi.exitCode,null),Tm(\"afterexit\",Qi.exitCode,null),T9.call(Qi,Qi.exitCode))},DF=Qi.emit,twe=function(e,r){if(e===\"exit\"&&Qm(global.process)){r!==void 0&&(Qi.exitCode=r);var s=DF.apply(this,arguments);return Tm(\"exit\",Qi.exitCode,null),Tm(\"afterexit\",Qi.exitCode,null),s}else return DF.apply(this,arguments)}):hw.exports=function(){return function(){}};var ZCe,Aw,$Ce,OS,Js,vF,Tm,SF,pw,Q9,T9,ewe,DF,twe});var nwe=_((hKt,rwe)=>{\"use strict\";var mpt=zCe(),ypt=R9();rwe.exports=mpt(()=>{ypt(()=>{process.stderr.write(\"\\x1B[?25h\")},{alwaysLast:!0})})});var F9=_(gw=>{\"use strict\";var Ept=nwe(),bF=!1;gw.show=(t=process.stderr)=>{t.isTTY&&(bF=!1,t.write(\"\\x1B[?25h\"))};gw.hide=(t=process.stderr)=>{t.isTTY&&(Ept(),bF=!0,t.write(\"\\x1B[?25l\"))};gw.toggle=(t,e)=>{t!==void 0&&(bF=t),bF?gw.show(e):gw.hide(e)}});var awe=_(LS=>{\"use strict\";var owe=LS&&LS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(LS,\"__esModule\",{value:!0});var iwe=owe(x9()),swe=owe(F9()),Ipt=(t,{showCursor:e=!1}={})=>{let r=0,s=\"\",a=!1,n=c=>{!e&&!a&&(swe.default.hide(),a=!0);let f=c+`\n`;f!==s&&(s=f,t.write(iwe.default.eraseLines(r)+f),r=f.split(`\n`).length)};return n.clear=()=>{t.write(iwe.default.eraseLines(r)),s=\"\",r=0},n.done=()=>{s=\"\",r=0,e||(swe.default.show(),a=!1)},n};LS.default={create:Ipt}});var lwe=_((mKt,Cpt)=>{Cpt.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 fwe=_(tc=>{\"use strict\";var uwe=lwe(),uA=process.env;Object.defineProperty(tc,\"_vendors\",{value:uwe.map(function(t){return t.constant})});tc.name=null;tc.isPR=null;uwe.forEach(function(t){var e=Array.isArray(t.env)?t.env:[t.env],r=e.every(function(s){return cwe(s)});if(tc[t.constant]=r,r)switch(tc.name=t.name,typeof t.pr){case\"string\":tc.isPR=!!uA[t.pr];break;case\"object\":\"env\"in t.pr?tc.isPR=t.pr.env in uA&&uA[t.pr.env]!==t.pr.ne:\"any\"in t.pr?tc.isPR=t.pr.any.some(function(s){return!!uA[s]}):tc.isPR=cwe(t.pr);break;default:tc.isPR=null}});tc.isCI=!!(uA.CI||uA.CONTINUOUS_INTEGRATION||uA.BUILD_NUMBER||uA.RUN_ID||tc.name);function cwe(t){return typeof t==\"string\"?!!uA[t]:Object.keys(t).every(function(e){return uA[e]===t[e]})}});var pwe=_((EKt,Awe)=>{\"use strict\";Awe.exports=fwe().isCI});var gwe=_((IKt,hwe)=>{\"use strict\";var wpt=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};hwe.exports=(t,{include:e,exclude:r}={})=>{let s=a=>{let n=c=>typeof c==\"string\"?a===c:c.test(a);return e?e.some(n):r?!r.some(n):!0};for(let[a,n]of wpt(t.constructor.prototype)){if(n===\"constructor\"||!s(n))continue;let c=Reflect.getOwnPropertyDescriptor(a,n);c&&typeof c.value==\"function\"&&(t[n]=t[n].bind(t))}return t}});var Cwe=_(Vn=>{\"use strict\";var mw,_S,QF,H9;typeof performance==\"object\"&&typeof performance.now==\"function\"?(dwe=performance,Vn.unstable_now=function(){return dwe.now()}):(N9=Date,mwe=N9.now(),Vn.unstable_now=function(){return N9.now()-mwe});var dwe,N9,mwe;typeof window>\"u\"||typeof MessageChannel!=\"function\"?(dw=null,O9=null,L9=function(){if(dw!==null)try{var t=Vn.unstable_now();dw(!0,t),dw=null}catch(e){throw setTimeout(L9,0),e}},mw=function(t){dw!==null?setTimeout(mw,0,t):(dw=t,setTimeout(L9,0))},_S=function(t,e){O9=setTimeout(t,e)},QF=function(){clearTimeout(O9)},Vn.unstable_shouldYield=function(){return!1},H9=Vn.unstable_forceFrameRate=function(){}):(ywe=window.setTimeout,Ewe=window.clearTimeout,typeof console<\"u\"&&(Iwe=window.cancelAnimationFrame,typeof window.requestAnimationFrame!=\"function\"&&console.error(\"This browser doesn't support requestAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\"),typeof Iwe!=\"function\"&&console.error(\"This browser doesn't support cancelAnimationFrame. Make sure that you load a polyfill in older browsers. https://reactjs.org/link/react-polyfills\")),MS=!1,US=null,PF=-1,M9=5,U9=0,Vn.unstable_shouldYield=function(){return Vn.unstable_now()>=U9},H9=function(){},Vn.unstable_forceFrameRate=function(t){0>t||125<t?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):M9=0<t?Math.floor(1e3/t):5},_9=new MessageChannel,xF=_9.port2,_9.port1.onmessage=function(){if(US!==null){var t=Vn.unstable_now();U9=t+M9;try{US(!0,t)?xF.postMessage(null):(MS=!1,US=null)}catch(e){throw xF.postMessage(null),e}}else MS=!1},mw=function(t){US=t,MS||(MS=!0,xF.postMessage(null))},_S=function(t,e){PF=ywe(function(){t(Vn.unstable_now())},e)},QF=function(){Ewe(PF),PF=-1});var dw,O9,L9,ywe,Ewe,Iwe,MS,US,PF,M9,U9,_9,xF;function j9(t,e){var r=t.length;t.push(e);e:for(;;){var s=r-1>>>1,a=t[s];if(a!==void 0&&0<kF(a,e))t[s]=e,t[r]=a,r=s;else break e}}function ef(t){return t=t[0],t===void 0?null:t}function TF(t){var e=t[0];if(e!==void 0){var r=t.pop();if(r!==e){t[0]=r;e:for(var s=0,a=t.length;s<a;){var n=2*(s+1)-1,c=t[n],f=n+1,p=t[f];if(c!==void 0&&0>kF(c,r))p!==void 0&&0>kF(p,c)?(t[s]=p,t[f]=r,s=f):(t[s]=c,t[n]=r,s=n);else if(p!==void 0&&0>kF(p,r))t[s]=p,t[f]=r,s=f;else break e}}return e}return null}function kF(t,e){var r=t.sortIndex-e.sortIndex;return r!==0?r:t.id-e.id}var fA=[],Z0=[],Bpt=1,qc=null,$o=3,RF=!1,Rm=!1,HS=!1;function G9(t){for(var e=ef(Z0);e!==null;){if(e.callback===null)TF(Z0);else if(e.startTime<=t)TF(Z0),e.sortIndex=e.expirationTime,j9(fA,e);else break;e=ef(Z0)}}function q9(t){if(HS=!1,G9(t),!Rm)if(ef(fA)!==null)Rm=!0,mw(W9);else{var e=ef(Z0);e!==null&&_S(q9,e.startTime-t)}}function W9(t,e){Rm=!1,HS&&(HS=!1,QF()),RF=!0;var r=$o;try{for(G9(e),qc=ef(fA);qc!==null&&(!(qc.expirationTime>e)||t&&!Vn.unstable_shouldYield());){var s=qc.callback;if(typeof s==\"function\"){qc.callback=null,$o=qc.priorityLevel;var a=s(qc.expirationTime<=e);e=Vn.unstable_now(),typeof a==\"function\"?qc.callback=a:qc===ef(fA)&&TF(fA),G9(e)}else TF(fA);qc=ef(fA)}if(qc!==null)var n=!0;else{var c=ef(Z0);c!==null&&_S(q9,c.startTime-e),n=!1}return n}finally{qc=null,$o=r,RF=!1}}var vpt=H9;Vn.unstable_IdlePriority=5;Vn.unstable_ImmediatePriority=1;Vn.unstable_LowPriority=4;Vn.unstable_NormalPriority=3;Vn.unstable_Profiling=null;Vn.unstable_UserBlockingPriority=2;Vn.unstable_cancelCallback=function(t){t.callback=null};Vn.unstable_continueExecution=function(){Rm||RF||(Rm=!0,mw(W9))};Vn.unstable_getCurrentPriorityLevel=function(){return $o};Vn.unstable_getFirstCallbackNode=function(){return ef(fA)};Vn.unstable_next=function(t){switch($o){case 1:case 2:case 3:var e=3;break;default:e=$o}var r=$o;$o=e;try{return t()}finally{$o=r}};Vn.unstable_pauseExecution=function(){};Vn.unstable_requestPaint=vpt;Vn.unstable_runWithPriority=function(t,e){switch(t){case 1:case 2:case 3:case 4:case 5:break;default:t=3}var r=$o;$o=t;try{return e()}finally{$o=r}};Vn.unstable_scheduleCallback=function(t,e,r){var s=Vn.unstable_now();switch(typeof r==\"object\"&&r!==null?(r=r.delay,r=typeof r==\"number\"&&0<r?s+r:s):r=s,t){case 1:var a=-1;break;case 2:a=250;break;case 5:a=1073741823;break;case 4:a=1e4;break;default:a=5e3}return a=r+a,t={id:Bpt++,callback:e,priorityLevel:t,startTime:r,expirationTime:a,sortIndex:-1},r>s?(t.sortIndex=r,j9(Z0,t),ef(fA)===null&&t===ef(Z0)&&(HS?QF():HS=!0,_S(q9,r-s))):(t.sortIndex=a,j9(fA,t),Rm||RF||(Rm=!0,mw(W9))),t};Vn.unstable_wrapCallback=function(t){var e=$o;return function(){var r=$o;$o=e;try{return t.apply(this,arguments)}finally{$o=r}}}});var Y9=_((wKt,wwe)=>{\"use strict\";wwe.exports=Cwe()});var Bwe=_((BKt,jS)=>{jS.exports=function(e){var r={},s=y9(),a=hn(),n=Y9();function c(v){for(var D=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+v,Q=1;Q<arguments.length;Q++)D+=\"&args[]=\"+encodeURIComponent(arguments[Q]);return\"Minified React error #\"+v+\"; visit \"+D+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var f=a.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,p=60103,h=60106,E=60107,C=60108,S=60114,P=60109,I=60110,R=60112,N=60113,U=60120,W=60115,ee=60116,ie=60121,ue=60129,le=60130,me=60131;if(typeof Symbol==\"function\"&&Symbol.for){var pe=Symbol.for;p=pe(\"react.element\"),h=pe(\"react.portal\"),E=pe(\"react.fragment\"),C=pe(\"react.strict_mode\"),S=pe(\"react.profiler\"),P=pe(\"react.provider\"),I=pe(\"react.context\"),R=pe(\"react.forward_ref\"),N=pe(\"react.suspense\"),U=pe(\"react.suspense_list\"),W=pe(\"react.memo\"),ee=pe(\"react.lazy\"),ie=pe(\"react.block\"),pe(\"react.scope\"),ue=pe(\"react.debug_trace_mode\"),le=pe(\"react.offscreen\"),me=pe(\"react.legacy_hidden\")}var Be=typeof Symbol==\"function\"&&Symbol.iterator;function Ce(v){return v===null||typeof v!=\"object\"?null:(v=Be&&v[Be]||v[\"@@iterator\"],typeof v==\"function\"?v:null)}function g(v){if(v==null)return null;if(typeof v==\"function\")return v.displayName||v.name||null;if(typeof v==\"string\")return v;switch(v){case E:return\"Fragment\";case h:return\"Portal\";case S:return\"Profiler\";case C:return\"StrictMode\";case N:return\"Suspense\";case U:return\"SuspenseList\"}if(typeof v==\"object\")switch(v.$$typeof){case I:return(v.displayName||\"Context\")+\".Consumer\";case P:return(v._context.displayName||\"Context\")+\".Provider\";case R:var D=v.render;return D=D.displayName||D.name||\"\",v.displayName||(D!==\"\"?\"ForwardRef(\"+D+\")\":\"ForwardRef\");case W:return g(v.type);case ie:return g(v._render);case ee:D=v._payload,v=v._init;try{return g(v(D))}catch{}}return null}function we(v){var D=v,Q=v;if(v.alternate)for(;D.return;)D=D.return;else{v=D;do D=v,D.flags&1026&&(Q=D.return),v=D.return;while(v)}return D.tag===3?Q:null}function ye(v){if(we(v)!==v)throw Error(c(188))}function Ae(v){var D=v.alternate;if(!D){if(D=we(v),D===null)throw Error(c(188));return D!==v?null:v}for(var Q=v,H=D;;){var V=Q.return;if(V===null)break;var ne=V.alternate;if(ne===null){if(H=V.return,H!==null){Q=H;continue}break}if(V.child===ne.child){for(ne=V.child;ne;){if(ne===Q)return ye(V),v;if(ne===H)return ye(V),D;ne=ne.sibling}throw Error(c(188))}if(Q.return!==H.return)Q=V,H=ne;else{for(var Se=!1,_e=V.child;_e;){if(_e===Q){Se=!0,Q=V,H=ne;break}if(_e===H){Se=!0,H=V,Q=ne;break}_e=_e.sibling}if(!Se){for(_e=ne.child;_e;){if(_e===Q){Se=!0,Q=ne,H=V;break}if(_e===H){Se=!0,H=ne,Q=V;break}_e=_e.sibling}if(!Se)throw Error(c(189))}}if(Q.alternate!==H)throw Error(c(190))}if(Q.tag!==3)throw Error(c(188));return Q.stateNode.current===Q?v:D}function se(v){if(v=Ae(v),!v)return null;for(var D=v;;){if(D.tag===5||D.tag===6)return D;if(D.child)D.child.return=D,D=D.child;else{if(D===v)break;for(;!D.sibling;){if(!D.return||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function Z(v){if(v=Ae(v),!v)return null;for(var D=v;;){if(D.tag===5||D.tag===6)return D;if(D.child&&D.tag!==4)D.child.return=D,D=D.child;else{if(D===v)break;for(;!D.sibling;){if(!D.return||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}}return null}function De(v,D){for(var Q=v.alternate;D!==null;){if(D===v||D===Q)return!0;D=D.return}return!1}var Re=e.getPublicInstance,mt=e.getRootHostContext,j=e.getChildHostContext,rt=e.prepareForCommit,Fe=e.resetAfterCommit,Ne=e.createInstance,Pe=e.appendInitialChild,Ve=e.finalizeInitialChildren,ke=e.prepareUpdate,it=e.shouldSetTextContent,Ue=e.createTextInstance,x=e.scheduleTimeout,w=e.cancelTimeout,b=e.noTimeout,y=e.isPrimaryRenderer,F=e.supportsMutation,z=e.supportsPersistence,X=e.supportsHydration,$=e.getInstanceFromNode,oe=e.makeOpaqueHydratingObject,xe=e.makeClientId,Te=e.beforeActiveInstanceBlur,lt=e.afterActiveInstanceBlur,Ct=e.preparePortalMount,qt=e.supportsTestSelectors,ir=e.findFiberRoot,Pt=e.getBoundingRect,gn=e.getTextContent,Pr=e.isHiddenSubtree,Ir=e.matchAccessibilityRole,Or=e.setFocusIfFocusable,on=e.setupIntersectionObserver,ai=e.appendChild,Io=e.appendChildToContainer,rs=e.commitTextUpdate,$s=e.commitMount,Co=e.commitUpdate,ji=e.insertBefore,eo=e.insertInContainerBefore,wo=e.removeChild,QA=e.removeChildFromContainer,Af=e.resetTextContent,dh=e.hideInstance,mh=e.hideTextInstance,to=e.unhideInstance,jn=e.unhideTextInstance,Ts=e.clearContainer,ro=e.cloneInstance,ou=e.createContainerChildSet,au=e.appendChildToContainerChildSet,lu=e.finalizeContainerChildren,TA=e.replaceContainerChildren,RA=e.cloneHiddenInstance,oa=e.cloneHiddenTextInstance,aa=e.canHydrateInstance,FA=e.canHydrateTextInstance,gr=e.isSuspenseInstancePending,Bo=e.isSuspenseInstanceFallback,Me=e.getNextHydratableSibling,cu=e.getFirstHydratableChild,Cr=e.hydrateInstance,pf=e.hydrateTextInstance,NA=e.getNextHydratableInstanceAfterSuspenseInstance,OA=e.commitHydratedContainer,uu=e.commitHydratedSuspenseInstance,fu;function oc(v){if(fu===void 0)try{throw Error()}catch(Q){var D=Q.stack.trim().match(/\\n( *(at )?)/);fu=D&&D[1]||\"\"}return`\n`+fu+v}var ve=!1;function Nt(v,D){if(!v||ve)return\"\";ve=!0;var Q=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(D)if(D=function(){throw Error()},Object.defineProperty(D.prototype,\"props\",{set:function(){throw Error()}}),typeof Reflect==\"object\"&&Reflect.construct){try{Reflect.construct(D,[])}catch(pt){var H=pt}Reflect.construct(v,[],D)}else{try{D.call()}catch(pt){H=pt}v.call(D.prototype)}else{try{throw Error()}catch(pt){H=pt}v()}}catch(pt){if(pt&&H&&typeof pt.stack==\"string\"){for(var V=pt.stack.split(`\n`),ne=H.stack.split(`\n`),Se=V.length-1,_e=ne.length-1;1<=Se&&0<=_e&&V[Se]!==ne[_e];)_e--;for(;1<=Se&&0<=_e;Se--,_e--)if(V[Se]!==ne[_e]){if(Se!==1||_e!==1)do if(Se--,_e--,0>_e||V[Se]!==ne[_e])return`\n`+V[Se].replace(\" at new \",\" at \");while(1<=Se&&0<=_e);break}}}finally{ve=!1,Error.prepareStackTrace=Q}return(v=v?v.displayName||v.name:\"\")?oc(v):\"\"}var ac=[],Oi=-1;function no(v){return{current:v}}function Rt(v){0>Oi||(v.current=ac[Oi],ac[Oi]=null,Oi--)}function xn(v,D){Oi++,ac[Oi]=v.current,v.current=D}var la={},Gi=no(la),Li=no(!1),Na=la;function dn(v,D){var Q=v.type.contextTypes;if(!Q)return la;var H=v.stateNode;if(H&&H.__reactInternalMemoizedUnmaskedChildContext===D)return H.__reactInternalMemoizedMaskedChildContext;var V={},ne;for(ne in Q)V[ne]=D[ne];return H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=D,v.__reactInternalMemoizedMaskedChildContext=V),V}function Kn(v){return v=v.childContextTypes,v!=null}function Au(){Rt(Li),Rt(Gi)}function yh(v,D,Q){if(Gi.current!==la)throw Error(c(168));xn(Gi,D),xn(Li,Q)}function Oa(v,D,Q){var H=v.stateNode;if(v=D.childContextTypes,typeof H.getChildContext!=\"function\")return Q;H=H.getChildContext();for(var V in H)if(!(V in v))throw Error(c(108,g(D)||\"Unknown\",V));return s({},Q,H)}function La(v){return v=(v=v.stateNode)&&v.__reactInternalMemoizedMergedChildContext||la,Na=Gi.current,xn(Gi,v),xn(Li,Li.current),!0}function Ma(v,D,Q){var H=v.stateNode;if(!H)throw Error(c(169));Q?(v=Oa(v,D,Na),H.__reactInternalMemoizedMergedChildContext=v,Rt(Li),Rt(Gi),xn(Gi,v)):Rt(Li),xn(Li,Q)}var $e=null,Ua=null,hf=n.unstable_now;hf();var lc=0,wn=8;function ca(v){if(1&v)return wn=15,1;if(2&v)return wn=14,2;if(4&v)return wn=13,4;var D=24&v;return D!==0?(wn=12,D):v&32?(wn=11,32):(D=192&v,D!==0?(wn=10,D):v&256?(wn=9,256):(D=3584&v,D!==0?(wn=8,D):v&4096?(wn=7,4096):(D=4186112&v,D!==0?(wn=6,D):(D=62914560&v,D!==0?(wn=5,D):v&67108864?(wn=4,67108864):v&134217728?(wn=3,134217728):(D=805306368&v,D!==0?(wn=2,D):1073741824&v?(wn=1,1073741824):(wn=8,v))))))}function LA(v){switch(v){case 99:return 15;case 98:return 10;case 97:case 96:return 8;case 95:return 2;default:return 0}}function MA(v){switch(v){case 15:case 14:return 99;case 13:case 12:case 11:case 10:return 98;case 9:case 8:case 7:case 6:case 4:case 5:return 97;case 3:case 2:case 1:return 95;case 0:return 90;default:throw Error(c(358,v))}}function ua(v,D){var Q=v.pendingLanes;if(Q===0)return wn=0;var H=0,V=0,ne=v.expiredLanes,Se=v.suspendedLanes,_e=v.pingedLanes;if(ne!==0)H=ne,V=wn=15;else if(ne=Q&134217727,ne!==0){var pt=ne&~Se;pt!==0?(H=ca(pt),V=wn):(_e&=ne,_e!==0&&(H=ca(_e),V=wn))}else ne=Q&~Se,ne!==0?(H=ca(ne),V=wn):_e!==0&&(H=ca(_e),V=wn);if(H===0)return 0;if(H=31-ns(H),H=Q&((0>H?0:1<<H)<<1)-1,D!==0&&D!==H&&!(D&Se)){if(ca(D),V<=wn)return D;wn=V}if(D=v.entangledLanes,D!==0)for(v=v.entanglements,D&=H;0<D;)Q=31-ns(D),V=1<<Q,H|=v[Q],D&=~V;return H}function Bl(v){return v=v.pendingLanes&-1073741825,v!==0?v:v&1073741824?1073741824:0}function Mt(v,D){switch(v){case 15:return 1;case 14:return 2;case 12:return v=kn(24&~D),v===0?Mt(10,D):v;case 10:return v=kn(192&~D),v===0?Mt(8,D):v;case 8:return v=kn(3584&~D),v===0&&(v=kn(4186112&~D),v===0&&(v=512)),v;case 2:return D=kn(805306368&~D),D===0&&(D=268435456),D}throw Error(c(358,v))}function kn(v){return v&-v}function fa(v){for(var D=[],Q=0;31>Q;Q++)D.push(v);return D}function Ha(v,D,Q){v.pendingLanes|=D;var H=D-1;v.suspendedLanes&=H,v.pingedLanes&=H,v=v.eventTimes,D=31-ns(D),v[D]=Q}var ns=Math.clz32?Math.clz32:uc,cc=Math.log,pu=Math.LN2;function uc(v){return v===0?32:31-(cc(v)/pu|0)|0}var ja=n.unstable_runWithPriority,Mi=n.unstable_scheduleCallback,Is=n.unstable_cancelCallback,vl=n.unstable_shouldYield,gf=n.unstable_requestPaint,fc=n.unstable_now,wi=n.unstable_getCurrentPriorityLevel,Qn=n.unstable_ImmediatePriority,Ac=n.unstable_UserBlockingPriority,Ke=n.unstable_NormalPriority,st=n.unstable_LowPriority,St=n.unstable_IdlePriority,lr={},te=gf!==void 0?gf:function(){},Ee=null,Oe=null,dt=!1,Et=fc(),bt=1e4>Et?fc:function(){return fc()-Et};function tr(){switch(wi()){case Qn:return 99;case Ac:return 98;case Ke:return 97;case st:return 96;case St:return 95;default:throw Error(c(332))}}function An(v){switch(v){case 99:return Qn;case 98:return Ac;case 97:return Ke;case 96:return st;case 95:return St;default:throw Error(c(332))}}function li(v,D){return v=An(v),ja(v,D)}function qi(v,D,Q){return v=An(v),Mi(v,D,Q)}function Tn(){if(Oe!==null){var v=Oe;Oe=null,Is(v)}Ga()}function Ga(){if(!dt&&Ee!==null){dt=!0;var v=0;try{var D=Ee;li(99,function(){for(;v<D.length;v++){var Q=D[v];do Q=Q(!0);while(Q!==null)}}),Ee=null}catch(Q){throw Ee!==null&&(Ee=Ee.slice(v+1)),Mi(Qn,Tn),Q}finally{dt=!1}}}var my=f.ReactCurrentBatchConfig;function Z1(v,D){return v===D&&(v!==0||1/v===1/D)||v!==v&&D!==D}var vo=typeof Object.is==\"function\"?Object.is:Z1,yy=Object.prototype.hasOwnProperty;function Eh(v,D){if(vo(v,D))return!0;if(typeof v!=\"object\"||v===null||typeof D!=\"object\"||D===null)return!1;var Q=Object.keys(v),H=Object.keys(D);if(Q.length!==H.length)return!1;for(H=0;H<Q.length;H++)if(!yy.call(D,Q[H])||!vo(v[Q[H]],D[Q[H]]))return!1;return!0}function $1(v){switch(v.tag){case 5:return oc(v.type);case 16:return oc(\"Lazy\");case 13:return oc(\"Suspense\");case 19:return oc(\"SuspenseList\");case 0:case 2:case 15:return v=Nt(v.type,!1),v;case 11:return v=Nt(v.type.render,!1),v;case 22:return v=Nt(v.type._render,!1),v;case 1:return v=Nt(v.type,!0),v;default:return\"\"}}function So(v,D){if(v&&v.defaultProps){D=s({},D),v=v.defaultProps;for(var Q in v)D[Q]===void 0&&(D[Q]=v[Q]);return D}return D}var Ih=no(null),Ch=null,hu=null,wh=null;function Fg(){wh=hu=Ch=null}function Ng(v,D){v=v.type._context,y?(xn(Ih,v._currentValue),v._currentValue=D):(xn(Ih,v._currentValue2),v._currentValue2=D)}function Og(v){var D=Ih.current;Rt(Ih),v=v.type._context,y?v._currentValue=D:v._currentValue2=D}function Ey(v,D){for(;v!==null;){var Q=v.alternate;if((v.childLanes&D)===D){if(Q===null||(Q.childLanes&D)===D)break;Q.childLanes|=D}else v.childLanes|=D,Q!==null&&(Q.childLanes|=D);v=v.return}}function df(v,D){Ch=v,wh=hu=null,v=v.dependencies,v!==null&&v.firstContext!==null&&(v.lanes&D&&(Je=!0),v.firstContext=null)}function Do(v,D){if(wh!==v&&D!==!1&&D!==0)if((typeof D!=\"number\"||D===1073741823)&&(wh=v,D=1073741823),D={context:v,observedBits:D,next:null},hu===null){if(Ch===null)throw Error(c(308));hu=D,Ch.dependencies={lanes:0,firstContext:D,responders:null}}else hu=hu.next=D;return y?v._currentValue:v._currentValue2}var Sl=!1;function Bh(v){v.updateQueue={baseState:v.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null},effects:null}}function Lg(v,D){v=v.updateQueue,D.updateQueue===v&&(D.updateQueue={baseState:v.baseState,firstBaseUpdate:v.firstBaseUpdate,lastBaseUpdate:v.lastBaseUpdate,shared:v.shared,effects:v.effects})}function Dl(v,D){return{eventTime:v,lane:D,tag:0,payload:null,callback:null,next:null}}function bl(v,D){if(v=v.updateQueue,v!==null){v=v.shared;var Q=v.pending;Q===null?D.next=D:(D.next=Q.next,Q.next=D),v.pending=D}}function Iy(v,D){var Q=v.updateQueue,H=v.alternate;if(H!==null&&(H=H.updateQueue,Q===H)){var V=null,ne=null;if(Q=Q.firstBaseUpdate,Q!==null){do{var Se={eventTime:Q.eventTime,lane:Q.lane,tag:Q.tag,payload:Q.payload,callback:Q.callback,next:null};ne===null?V=ne=Se:ne=ne.next=Se,Q=Q.next}while(Q!==null);ne===null?V=ne=D:ne=ne.next=D}else V=ne=D;Q={baseState:H.baseState,firstBaseUpdate:V,lastBaseUpdate:ne,shared:H.shared,effects:H.effects},v.updateQueue=Q;return}v=Q.lastBaseUpdate,v===null?Q.firstBaseUpdate=D:v.next=D,Q.lastBaseUpdate=D}function UA(v,D,Q,H){var V=v.updateQueue;Sl=!1;var ne=V.firstBaseUpdate,Se=V.lastBaseUpdate,_e=V.shared.pending;if(_e!==null){V.shared.pending=null;var pt=_e,Wt=pt.next;pt.next=null,Se===null?ne=Wt:Se.next=Wt,Se=pt;var Sr=v.alternate;if(Sr!==null){Sr=Sr.updateQueue;var Lr=Sr.lastBaseUpdate;Lr!==Se&&(Lr===null?Sr.firstBaseUpdate=Wt:Lr.next=Wt,Sr.lastBaseUpdate=pt)}}if(ne!==null){Lr=V.baseState,Se=0,Sr=Wt=pt=null;do{_e=ne.lane;var Zt=ne.eventTime;if((H&_e)===_e){Sr!==null&&(Sr=Sr.next={eventTime:Zt,lane:0,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null});e:{var zn=v,yi=ne;switch(_e=D,Zt=Q,yi.tag){case 1:if(zn=yi.payload,typeof zn==\"function\"){Lr=zn.call(Zt,Lr,_e);break e}Lr=zn;break e;case 3:zn.flags=zn.flags&-4097|64;case 0:if(zn=yi.payload,_e=typeof zn==\"function\"?zn.call(Zt,Lr,_e):zn,_e==null)break e;Lr=s({},Lr,_e);break e;case 2:Sl=!0}}ne.callback!==null&&(v.flags|=32,_e=V.effects,_e===null?V.effects=[ne]:_e.push(ne))}else Zt={eventTime:Zt,lane:_e,tag:ne.tag,payload:ne.payload,callback:ne.callback,next:null},Sr===null?(Wt=Sr=Zt,pt=Lr):Sr=Sr.next=Zt,Se|=_e;if(ne=ne.next,ne===null){if(_e=V.shared.pending,_e===null)break;ne=_e.next,_e.next=null,V.lastBaseUpdate=_e,V.shared.pending=null}}while(!0);Sr===null&&(pt=Lr),V.baseState=pt,V.firstBaseUpdate=Wt,V.lastBaseUpdate=Sr,Zg|=Se,v.lanes=Se,v.memoizedState=Lr}}function Cy(v,D,Q){if(v=D.effects,D.effects=null,v!==null)for(D=0;D<v.length;D++){var H=v[D],V=H.callback;if(V!==null){if(H.callback=null,H=Q,typeof V!=\"function\")throw Error(c(191,V));V.call(H)}}}var wy=new a.Component().refs;function _A(v,D,Q,H){D=v.memoizedState,Q=Q(H,D),Q=Q==null?D:s({},D,Q),v.memoizedState=Q,v.lanes===0&&(v.updateQueue.baseState=Q)}var HA={isMounted:function(v){return(v=v._reactInternals)?we(v)===v:!1},enqueueSetState:function(v,D,Q){v=v._reactInternals;var H=ko(),V=Bs(v),ne=Dl(H,V);ne.payload=D,Q!=null&&(ne.callback=Q),bl(v,ne),Tl(v,V,H)},enqueueReplaceState:function(v,D,Q){v=v._reactInternals;var H=ko(),V=Bs(v),ne=Dl(H,V);ne.tag=1,ne.payload=D,Q!=null&&(ne.callback=Q),bl(v,ne),Tl(v,V,H)},enqueueForceUpdate:function(v,D){v=v._reactInternals;var Q=ko(),H=Bs(v),V=Dl(Q,H);V.tag=2,D!=null&&(V.callback=D),bl(v,V),Tl(v,H,Q)}};function Y(v,D,Q,H,V,ne,Se){return v=v.stateNode,typeof v.shouldComponentUpdate==\"function\"?v.shouldComponentUpdate(H,ne,Se):D.prototype&&D.prototype.isPureReactComponent?!Eh(Q,H)||!Eh(V,ne):!0}function xt(v,D,Q){var H=!1,V=la,ne=D.contextType;return typeof ne==\"object\"&&ne!==null?ne=Do(ne):(V=Kn(D)?Na:Gi.current,H=D.contextTypes,ne=(H=H!=null)?dn(v,V):la),D=new D(Q,ne),v.memoizedState=D.state!==null&&D.state!==void 0?D.state:null,D.updater=HA,v.stateNode=D,D._reactInternals=v,H&&(v=v.stateNode,v.__reactInternalMemoizedUnmaskedChildContext=V,v.__reactInternalMemoizedMaskedChildContext=ne),D}function jA(v,D,Q,H){v=D.state,typeof D.componentWillReceiveProps==\"function\"&&D.componentWillReceiveProps(Q,H),typeof D.UNSAFE_componentWillReceiveProps==\"function\"&&D.UNSAFE_componentWillReceiveProps(Q,H),D.state!==v&&HA.enqueueReplaceState(D,D.state,null)}function bo(v,D,Q,H){var V=v.stateNode;V.props=Q,V.state=v.memoizedState,V.refs=wy,Bh(v);var ne=D.contextType;typeof ne==\"object\"&&ne!==null?V.context=Do(ne):(ne=Kn(D)?Na:Gi.current,V.context=dn(v,ne)),UA(v,Q,V,H),V.state=v.memoizedState,ne=D.getDerivedStateFromProps,typeof ne==\"function\"&&(_A(v,D,ne,Q),V.state=v.memoizedState),typeof D.getDerivedStateFromProps==\"function\"||typeof V.getSnapshotBeforeUpdate==\"function\"||typeof V.UNSAFE_componentWillMount!=\"function\"&&typeof V.componentWillMount!=\"function\"||(D=V.state,typeof V.componentWillMount==\"function\"&&V.componentWillMount(),typeof V.UNSAFE_componentWillMount==\"function\"&&V.UNSAFE_componentWillMount(),D!==V.state&&HA.enqueueReplaceState(V,V.state,null),UA(v,Q,V,H),V.state=v.memoizedState),typeof V.componentDidMount==\"function\"&&(v.flags|=4)}var mf=Array.isArray;function yt(v,D,Q){if(v=Q.ref,v!==null&&typeof v!=\"function\"&&typeof v!=\"object\"){if(Q._owner){if(Q=Q._owner,Q){if(Q.tag!==1)throw Error(c(309));var H=Q.stateNode}if(!H)throw Error(c(147,v));var V=\"\"+v;return D!==null&&D.ref!==null&&typeof D.ref==\"function\"&&D.ref._stringRef===V?D.ref:(D=function(ne){var Se=H.refs;Se===wy&&(Se=H.refs={}),ne===null?delete Se[V]:Se[V]=ne},D._stringRef=V,D)}if(typeof v!=\"string\")throw Error(c(284));if(!Q._owner)throw Error(c(290,v))}return v}function gu(v,D){if(v.type!==\"textarea\")throw Error(c(31,Object.prototype.toString.call(D)===\"[object Object]\"?\"object with keys {\"+Object.keys(D).join(\", \")+\"}\":D))}function By(v){function D(et,qe){if(v){var gt=et.lastEffect;gt!==null?(gt.nextEffect=qe,et.lastEffect=qe):et.firstEffect=et.lastEffect=qe,qe.nextEffect=null,qe.flags=8}}function Q(et,qe){if(!v)return null;for(;qe!==null;)D(et,qe),qe=qe.sibling;return null}function H(et,qe){for(et=new Map;qe!==null;)qe.key!==null?et.set(qe.key,qe):et.set(qe.index,qe),qe=qe.sibling;return et}function V(et,qe){return et=Su(et,qe),et.index=0,et.sibling=null,et}function ne(et,qe,gt){return et.index=gt,v?(gt=et.alternate,gt!==null?(gt=gt.index,gt<qe?(et.flags=2,qe):gt):(et.flags=2,qe)):qe}function Se(et){return v&&et.alternate===null&&(et.flags=2),et}function _e(et,qe,gt,Xt){return qe===null||qe.tag!==6?(qe=b2(gt,et.mode,Xt),qe.return=et,qe):(qe=V(qe,gt),qe.return=et,qe)}function pt(et,qe,gt,Xt){return qe!==null&&qe.elementType===gt.type?(Xt=V(qe,gt.props),Xt.ref=yt(et,qe,gt),Xt.return=et,Xt):(Xt=sd(gt.type,gt.key,gt.props,null,et.mode,Xt),Xt.ref=yt(et,qe,gt),Xt.return=et,Xt)}function Wt(et,qe,gt,Xt){return qe===null||qe.tag!==4||qe.stateNode.containerInfo!==gt.containerInfo||qe.stateNode.implementation!==gt.implementation?(qe=Qo(gt,et.mode,Xt),qe.return=et,qe):(qe=V(qe,gt.children||[]),qe.return=et,qe)}function Sr(et,qe,gt,Xt,Dr){return qe===null||qe.tag!==7?(qe=kf(gt,et.mode,Xt,Dr),qe.return=et,qe):(qe=V(qe,gt),qe.return=et,qe)}function Lr(et,qe,gt){if(typeof qe==\"string\"||typeof qe==\"number\")return qe=b2(\"\"+qe,et.mode,gt),qe.return=et,qe;if(typeof qe==\"object\"&&qe!==null){switch(qe.$$typeof){case p:return gt=sd(qe.type,qe.key,qe.props,null,et.mode,gt),gt.ref=yt(et,null,qe),gt.return=et,gt;case h:return qe=Qo(qe,et.mode,gt),qe.return=et,qe}if(mf(qe)||Ce(qe))return qe=kf(qe,et.mode,gt,null),qe.return=et,qe;gu(et,qe)}return null}function Zt(et,qe,gt,Xt){var Dr=qe!==null?qe.key:null;if(typeof gt==\"string\"||typeof gt==\"number\")return Dr!==null?null:_e(et,qe,\"\"+gt,Xt);if(typeof gt==\"object\"&&gt!==null){switch(gt.$$typeof){case p:return gt.key===Dr?gt.type===E?Sr(et,qe,gt.props.children,Xt,Dr):pt(et,qe,gt,Xt):null;case h:return gt.key===Dr?Wt(et,qe,gt,Xt):null}if(mf(gt)||Ce(gt))return Dr!==null?null:Sr(et,qe,gt,Xt,null);gu(et,gt)}return null}function zn(et,qe,gt,Xt,Dr){if(typeof Xt==\"string\"||typeof Xt==\"number\")return et=et.get(gt)||null,_e(qe,et,\"\"+Xt,Dr);if(typeof Xt==\"object\"&&Xt!==null){switch(Xt.$$typeof){case p:return et=et.get(Xt.key===null?gt:Xt.key)||null,Xt.type===E?Sr(qe,et,Xt.props.children,Dr,Xt.key):pt(qe,et,Xt,Dr);case h:return et=et.get(Xt.key===null?gt:Xt.key)||null,Wt(qe,et,Xt,Dr)}if(mf(Xt)||Ce(Xt))return et=et.get(gt)||null,Sr(qe,et,Xt,Dr,null);gu(qe,Xt)}return null}function yi(et,qe,gt,Xt){for(var Dr=null,Zn=null,kr=qe,Rn=qe=0,_n=null;kr!==null&&Rn<gt.length;Rn++){kr.index>Rn?(_n=kr,kr=null):_n=kr.sibling;var zr=Zt(et,kr,gt[Rn],Xt);if(zr===null){kr===null&&(kr=_n);break}v&&kr&&zr.alternate===null&&D(et,kr),qe=ne(zr,qe,Rn),Zn===null?Dr=zr:Zn.sibling=zr,Zn=zr,kr=_n}if(Rn===gt.length)return Q(et,kr),Dr;if(kr===null){for(;Rn<gt.length;Rn++)kr=Lr(et,gt[Rn],Xt),kr!==null&&(qe=ne(kr,qe,Rn),Zn===null?Dr=kr:Zn.sibling=kr,Zn=kr);return Dr}for(kr=H(et,kr);Rn<gt.length;Rn++)_n=zn(kr,et,Rn,gt[Rn],Xt),_n!==null&&(v&&_n.alternate!==null&&kr.delete(_n.key===null?Rn:_n.key),qe=ne(_n,qe,Rn),Zn===null?Dr=_n:Zn.sibling=_n,Zn=_n);return v&&kr.forEach(function(ci){return D(et,ci)}),Dr}function za(et,qe,gt,Xt){var Dr=Ce(gt);if(typeof Dr!=\"function\")throw Error(c(150));if(gt=Dr.call(gt),gt==null)throw Error(c(151));for(var Zn=Dr=null,kr=qe,Rn=qe=0,_n=null,zr=gt.next();kr!==null&&!zr.done;Rn++,zr=gt.next()){kr.index>Rn?(_n=kr,kr=null):_n=kr.sibling;var ci=Zt(et,kr,zr.value,Xt);if(ci===null){kr===null&&(kr=_n);break}v&&kr&&ci.alternate===null&&D(et,kr),qe=ne(ci,qe,Rn),Zn===null?Dr=ci:Zn.sibling=ci,Zn=ci,kr=_n}if(zr.done)return Q(et,kr),Dr;if(kr===null){for(;!zr.done;Rn++,zr=gt.next())zr=Lr(et,zr.value,Xt),zr!==null&&(qe=ne(zr,qe,Rn),Zn===null?Dr=zr:Zn.sibling=zr,Zn=zr);return Dr}for(kr=H(et,kr);!zr.done;Rn++,zr=gt.next())zr=zn(kr,et,Rn,zr.value,Xt),zr!==null&&(v&&zr.alternate!==null&&kr.delete(zr.key===null?Rn:zr.key),qe=ne(zr,qe,Rn),Zn===null?Dr=zr:Zn.sibling=zr,Zn=zr);return v&&kr.forEach(function(Du){return D(et,Du)}),Dr}return function(et,qe,gt,Xt){var Dr=typeof gt==\"object\"&&gt!==null&&gt.type===E&&gt.key===null;Dr&&(gt=gt.props.children);var Zn=typeof gt==\"object\"&&gt!==null;if(Zn)switch(gt.$$typeof){case p:e:{for(Zn=gt.key,Dr=qe;Dr!==null;){if(Dr.key===Zn){switch(Dr.tag){case 7:if(gt.type===E){Q(et,Dr.sibling),qe=V(Dr,gt.props.children),qe.return=et,et=qe;break e}break;default:if(Dr.elementType===gt.type){Q(et,Dr.sibling),qe=V(Dr,gt.props),qe.ref=yt(et,Dr,gt),qe.return=et,et=qe;break e}}Q(et,Dr);break}else D(et,Dr);Dr=Dr.sibling}gt.type===E?(qe=kf(gt.props.children,et.mode,Xt,gt.key),qe.return=et,et=qe):(Xt=sd(gt.type,gt.key,gt.props,null,et.mode,Xt),Xt.ref=yt(et,qe,gt),Xt.return=et,et=Xt)}return Se(et);case h:e:{for(Dr=gt.key;qe!==null;){if(qe.key===Dr)if(qe.tag===4&&qe.stateNode.containerInfo===gt.containerInfo&&qe.stateNode.implementation===gt.implementation){Q(et,qe.sibling),qe=V(qe,gt.children||[]),qe.return=et,et=qe;break e}else{Q(et,qe);break}else D(et,qe);qe=qe.sibling}qe=Qo(gt,et.mode,Xt),qe.return=et,et=qe}return Se(et)}if(typeof gt==\"string\"||typeof gt==\"number\")return gt=\"\"+gt,qe!==null&&qe.tag===6?(Q(et,qe.sibling),qe=V(qe,gt),qe.return=et,et=qe):(Q(et,qe),qe=b2(gt,et.mode,Xt),qe.return=et,et=qe),Se(et);if(mf(gt))return yi(et,qe,gt,Xt);if(Ce(gt))return za(et,qe,gt,Xt);if(Zn&&gu(et,gt),typeof gt>\"u\"&&!Dr)switch(et.tag){case 1:case 22:case 0:case 11:case 15:throw Error(c(152,g(et.type)||\"Component\"))}return Q(et,qe)}}var Mg=By(!0),e2=By(!1),vh={},ur=no(vh),zi=no(vh),yf=no(vh);function qa(v){if(v===vh)throw Error(c(174));return v}function Ug(v,D){xn(yf,D),xn(zi,v),xn(ur,vh),v=mt(D),Rt(ur),xn(ur,v)}function du(){Rt(ur),Rt(zi),Rt(yf)}function Ef(v){var D=qa(yf.current),Q=qa(ur.current);D=j(Q,v.type,D),Q!==D&&(xn(zi,v),xn(ur,D))}function wt(v){zi.current===v&&(Rt(ur),Rt(zi))}var di=no(0);function GA(v){for(var D=v;D!==null;){if(D.tag===13){var Q=D.memoizedState;if(Q!==null&&(Q=Q.dehydrated,Q===null||gr(Q)||Bo(Q)))return D}else if(D.tag===19&&D.memoizedProps.revealOrder!==void 0){if(D.flags&64)return D}else if(D.child!==null){D.child.return=D,D=D.child;continue}if(D===v)break;for(;D.sibling===null;){if(D.return===null||D.return===v)return null;D=D.return}D.sibling.return=D.return,D=D.sibling}return null}var Wa=null,Aa=null,Ya=!1;function _g(v,D){var Q=Ka(5,null,null,0);Q.elementType=\"DELETED\",Q.type=\"DELETED\",Q.stateNode=D,Q.return=v,Q.flags=8,v.lastEffect!==null?(v.lastEffect.nextEffect=Q,v.lastEffect=Q):v.firstEffect=v.lastEffect=Q}function Sh(v,D){switch(v.tag){case 5:return D=aa(D,v.type,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 6:return D=FA(D,v.pendingProps),D!==null?(v.stateNode=D,!0):!1;case 13:return!1;default:return!1}}function Hg(v){if(Ya){var D=Aa;if(D){var Q=D;if(!Sh(v,D)){if(D=Me(Q),!D||!Sh(v,D)){v.flags=v.flags&-1025|2,Ya=!1,Wa=v;return}_g(Wa,Q)}Wa=v,Aa=cu(D)}else v.flags=v.flags&-1025|2,Ya=!1,Wa=v}}function vy(v){for(v=v.return;v!==null&&v.tag!==5&&v.tag!==3&&v.tag!==13;)v=v.return;Wa=v}function qA(v){if(!X||v!==Wa)return!1;if(!Ya)return vy(v),Ya=!0,!1;var D=v.type;if(v.tag!==5||D!==\"head\"&&D!==\"body\"&&!it(D,v.memoizedProps))for(D=Aa;D;)_g(v,D),D=Me(D);if(vy(v),v.tag===13){if(!X)throw Error(c(316));if(v=v.memoizedState,v=v!==null?v.dehydrated:null,!v)throw Error(c(317));Aa=NA(v)}else Aa=Wa?Me(v.stateNode):null;return!0}function jg(){X&&(Aa=Wa=null,Ya=!1)}var mu=[];function yu(){for(var v=0;v<mu.length;v++){var D=mu[v];y?D._workInProgressVersionPrimary=null:D._workInProgressVersionSecondary=null}mu.length=0}var If=f.ReactCurrentDispatcher,Rs=f.ReactCurrentBatchConfig,Eu=0,Gn=null,is=null,Pi=null,WA=!1,Cf=!1;function mn(){throw Error(c(321))}function Gg(v,D){if(D===null)return!1;for(var Q=0;Q<D.length&&Q<v.length;Q++)if(!vo(v[Q],D[Q]))return!1;return!0}function qg(v,D,Q,H,V,ne){if(Eu=ne,Gn=D,D.memoizedState=null,D.updateQueue=null,D.lanes=0,If.current=v===null||v.memoizedState===null?O:K,v=Q(H,V),Cf){ne=0;do{if(Cf=!1,!(25>ne))throw Error(c(301));ne+=1,Pi=is=null,D.updateQueue=null,If.current=re,v=Q(H,V)}while(Cf)}if(If.current=kt,D=is!==null&&is.next!==null,Eu=0,Pi=is=Gn=null,WA=!1,D)throw Error(c(300));return v}function ss(){var v={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return Pi===null?Gn.memoizedState=Pi=v:Pi=Pi.next=v,Pi}function Pl(){if(is===null){var v=Gn.alternate;v=v!==null?v.memoizedState:null}else v=is.next;var D=Pi===null?Gn.memoizedState:Pi.next;if(D!==null)Pi=D,is=v;else{if(v===null)throw Error(c(310));is=v,v={memoizedState:is.memoizedState,baseState:is.baseState,baseQueue:is.baseQueue,queue:is.queue,next:null},Pi===null?Gn.memoizedState=Pi=v:Pi=Pi.next=v}return Pi}function Po(v,D){return typeof D==\"function\"?D(v):D}function wf(v){var D=Pl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=is,V=H.baseQueue,ne=Q.pending;if(ne!==null){if(V!==null){var Se=V.next;V.next=ne.next,ne.next=Se}H.baseQueue=V=ne,Q.pending=null}if(V!==null){V=V.next,H=H.baseState;var _e=Se=ne=null,pt=V;do{var Wt=pt.lane;if((Eu&Wt)===Wt)_e!==null&&(_e=_e.next={lane:0,action:pt.action,eagerReducer:pt.eagerReducer,eagerState:pt.eagerState,next:null}),H=pt.eagerReducer===v?pt.eagerState:v(H,pt.action);else{var Sr={lane:Wt,action:pt.action,eagerReducer:pt.eagerReducer,eagerState:pt.eagerState,next:null};_e===null?(Se=_e=Sr,ne=H):_e=_e.next=Sr,Gn.lanes|=Wt,Zg|=Wt}pt=pt.next}while(pt!==null&&pt!==V);_e===null?ne=H:_e.next=Se,vo(H,D.memoizedState)||(Je=!0),D.memoizedState=H,D.baseState=ne,D.baseQueue=_e,Q.lastRenderedState=H}return[D.memoizedState,Q.dispatch]}function Bf(v){var D=Pl(),Q=D.queue;if(Q===null)throw Error(c(311));Q.lastRenderedReducer=v;var H=Q.dispatch,V=Q.pending,ne=D.memoizedState;if(V!==null){Q.pending=null;var Se=V=V.next;do ne=v(ne,Se.action),Se=Se.next;while(Se!==V);vo(ne,D.memoizedState)||(Je=!0),D.memoizedState=ne,D.baseQueue===null&&(D.baseState=ne),Q.lastRenderedState=ne}return[ne,H]}function xl(v,D,Q){var H=D._getVersion;H=H(D._source);var V=y?D._workInProgressVersionPrimary:D._workInProgressVersionSecondary;if(V!==null?v=V===H:(v=v.mutableReadLanes,(v=(Eu&v)===v)&&(y?D._workInProgressVersionPrimary=H:D._workInProgressVersionSecondary=H,mu.push(D))),v)return Q(D._source);throw mu.push(D),Error(c(350))}function yn(v,D,Q,H){var V=so;if(V===null)throw Error(c(349));var ne=D._getVersion,Se=ne(D._source),_e=If.current,pt=_e.useState(function(){return xl(V,D,Q)}),Wt=pt[1],Sr=pt[0];pt=Pi;var Lr=v.memoizedState,Zt=Lr.refs,zn=Zt.getSnapshot,yi=Lr.source;Lr=Lr.subscribe;var za=Gn;return v.memoizedState={refs:Zt,source:D,subscribe:H},_e.useEffect(function(){Zt.getSnapshot=Q,Zt.setSnapshot=Wt;var et=ne(D._source);if(!vo(Se,et)){et=Q(D._source),vo(Sr,et)||(Wt(et),et=Bs(za),V.mutableReadLanes|=et&V.pendingLanes),et=V.mutableReadLanes,V.entangledLanes|=et;for(var qe=V.entanglements,gt=et;0<gt;){var Xt=31-ns(gt),Dr=1<<Xt;qe[Xt]|=et,gt&=~Dr}}},[Q,D,H]),_e.useEffect(function(){return H(D._source,function(){var et=Zt.getSnapshot,qe=Zt.setSnapshot;try{qe(et(D._source));var gt=Bs(za);V.mutableReadLanes|=gt&V.pendingLanes}catch(Xt){qe(function(){throw Xt})}})},[D,H]),vo(zn,Q)&&vo(yi,D)&&vo(Lr,H)||(v={pending:null,dispatch:null,lastRenderedReducer:Po,lastRenderedState:Sr},v.dispatch=Wt=xh.bind(null,Gn,v),pt.queue=v,pt.baseQueue=null,Sr=xl(V,D,Q),pt.memoizedState=pt.baseState=Sr),Sr}function xo(v,D,Q){var H=Pl();return yn(H,v,D,Q)}function Iu(v){var D=ss();return typeof v==\"function\"&&(v=v()),D.memoizedState=D.baseState=v,v=D.queue={pending:null,dispatch:null,lastRenderedReducer:Po,lastRenderedState:v},v=v.dispatch=xh.bind(null,Gn,v),[D.memoizedState,v]}function pa(v,D,Q,H){return v={tag:v,create:D,destroy:Q,deps:H,next:null},D=Gn.updateQueue,D===null?(D={lastEffect:null},Gn.updateQueue=D,D.lastEffect=v.next=v):(Q=D.lastEffect,Q===null?D.lastEffect=v.next=v:(H=Q.next,Q.next=v,v.next=H,D.lastEffect=v)),v}function Fs(v){var D=ss();return v={current:v},D.memoizedState=v}function Dh(){return Pl().memoizedState}function YA(v,D,Q,H){var V=ss();Gn.flags|=v,V.memoizedState=pa(1|D,Q,void 0,H===void 0?null:H)}function vf(v,D,Q,H){var V=Pl();H=H===void 0?null:H;var ne=void 0;if(is!==null){var Se=is.memoizedState;if(ne=Se.destroy,H!==null&&Gg(H,Se.deps)){pa(D,Q,ne,H);return}}Gn.flags|=v,V.memoizedState=pa(1|D,Q,ne,H)}function io(v,D){return YA(516,4,v,D)}function Zr(v,D){return vf(516,4,v,D)}function bh(v,D){return vf(4,2,v,D)}function VA(v,D){if(typeof D==\"function\")return v=v(),D(v),function(){D(null)};if(D!=null)return v=v(),D.current=v,function(){D.current=null}}function Sy(v,D,Q){return Q=Q!=null?Q.concat([v]):null,vf(4,2,VA.bind(null,D,v),Q)}function Wg(){}function Ph(v,D){var Q=Pl();D=D===void 0?null:D;var H=Q.memoizedState;return H!==null&&D!==null&&Gg(D,H[1])?H[0]:(Q.memoizedState=[v,D],v)}function pc(v,D){var Q=Pl();D=D===void 0?null:D;var H=Q.memoizedState;return H!==null&&D!==null&&Gg(D,H[1])?H[0]:(v=v(),Q.memoizedState=[v,D],v)}function Dy(v,D){var Q=tr();li(98>Q?98:Q,function(){v(!0)}),li(97<Q?97:Q,function(){var H=Rs.transition;Rs.transition=1;try{v(!1),D()}finally{Rs.transition=H}})}function xh(v,D,Q){var H=ko(),V=Bs(v),ne={lane:V,action:Q,eagerReducer:null,eagerState:null,next:null},Se=D.pending;if(Se===null?ne.next=ne:(ne.next=Se.next,Se.next=ne),D.pending=ne,Se=v.alternate,v===Gn||Se!==null&&Se===Gn)Cf=WA=!0;else{if(v.lanes===0&&(Se===null||Se.lanes===0)&&(Se=D.lastRenderedReducer,Se!==null))try{var _e=D.lastRenderedState,pt=Se(_e,Q);if(ne.eagerReducer=Se,ne.eagerState=pt,vo(pt,_e))return}catch{}finally{}Tl(v,V,H)}}var kt={readContext:Do,useCallback:mn,useContext:mn,useEffect:mn,useImperativeHandle:mn,useLayoutEffect:mn,useMemo:mn,useReducer:mn,useRef:mn,useState:mn,useDebugValue:mn,useDeferredValue:mn,useTransition:mn,useMutableSource:mn,useOpaqueIdentifier:mn,unstable_isNewReconciler:!1},O={readContext:Do,useCallback:function(v,D){return ss().memoizedState=[v,D===void 0?null:D],v},useContext:Do,useEffect:io,useImperativeHandle:function(v,D,Q){return Q=Q!=null?Q.concat([v]):null,YA(4,2,VA.bind(null,D,v),Q)},useLayoutEffect:function(v,D){return YA(4,2,v,D)},useMemo:function(v,D){var Q=ss();return D=D===void 0?null:D,v=v(),Q.memoizedState=[v,D],v},useReducer:function(v,D,Q){var H=ss();return D=Q!==void 0?Q(D):D,H.memoizedState=H.baseState=D,v=H.queue={pending:null,dispatch:null,lastRenderedReducer:v,lastRenderedState:D},v=v.dispatch=xh.bind(null,Gn,v),[H.memoizedState,v]},useRef:Fs,useState:Iu,useDebugValue:Wg,useDeferredValue:function(v){var D=Iu(v),Q=D[0],H=D[1];return io(function(){var V=Rs.transition;Rs.transition=1;try{H(v)}finally{Rs.transition=V}},[v]),Q},useTransition:function(){var v=Iu(!1),D=v[0];return v=Dy.bind(null,v[1]),Fs(v),[v,D]},useMutableSource:function(v,D,Q){var H=ss();return H.memoizedState={refs:{getSnapshot:D,setSnapshot:null},source:v,subscribe:Q},yn(H,v,D,Q)},useOpaqueIdentifier:function(){if(Ya){var v=!1,D=oe(function(){throw v||(v=!0,Q(xe())),Error(c(355))}),Q=Iu(D)[1];return!(Gn.mode&2)&&(Gn.flags|=516,pa(5,function(){Q(xe())},void 0,null)),D}return D=xe(),Iu(D),D},unstable_isNewReconciler:!1},K={readContext:Do,useCallback:Ph,useContext:Do,useEffect:Zr,useImperativeHandle:Sy,useLayoutEffect:bh,useMemo:pc,useReducer:wf,useRef:Dh,useState:function(){return wf(Po)},useDebugValue:Wg,useDeferredValue:function(v){var D=wf(Po),Q=D[0],H=D[1];return Zr(function(){var V=Rs.transition;Rs.transition=1;try{H(v)}finally{Rs.transition=V}},[v]),Q},useTransition:function(){var v=wf(Po)[0];return[Dh().current,v]},useMutableSource:xo,useOpaqueIdentifier:function(){return wf(Po)[0]},unstable_isNewReconciler:!1},re={readContext:Do,useCallback:Ph,useContext:Do,useEffect:Zr,useImperativeHandle:Sy,useLayoutEffect:bh,useMemo:pc,useReducer:Bf,useRef:Dh,useState:function(){return Bf(Po)},useDebugValue:Wg,useDeferredValue:function(v){var D=Bf(Po),Q=D[0],H=D[1];return Zr(function(){var V=Rs.transition;Rs.transition=1;try{H(v)}finally{Rs.transition=V}},[v]),Q},useTransition:function(){var v=Bf(Po)[0];return[Dh().current,v]},useMutableSource:xo,useOpaqueIdentifier:function(){return Bf(Po)[0]},unstable_isNewReconciler:!1},de=f.ReactCurrentOwner,Je=!1;function At(v,D,Q,H){D.child=v===null?e2(D,null,Q,H):Mg(D,v.child,Q,H)}function dr(v,D,Q,H,V){Q=Q.render;var ne=D.ref;return df(D,V),H=qg(v,D,Q,H,ne,V),v!==null&&!Je?(D.updateQueue=v.updateQueue,D.flags&=-517,v.lanes&=~V,qn(v,D,V)):(D.flags|=1,At(v,D,H,V),D.child)}function vr(v,D,Q,H,V,ne){if(v===null){var Se=Q.type;return typeof Se==\"function\"&&!S2(Se)&&Se.defaultProps===void 0&&Q.compare===null&&Q.defaultProps===void 0?(D.tag=15,D.type=Se,Un(v,D,Se,H,V,ne)):(v=sd(Q.type,null,H,D,D.mode,ne),v.ref=D.ref,v.return=D,D.child=v)}return Se=v.child,!(V&ne)&&(V=Se.memoizedProps,Q=Q.compare,Q=Q!==null?Q:Eh,Q(V,H)&&v.ref===D.ref)?qn(v,D,ne):(D.flags|=1,v=Su(Se,H),v.ref=D.ref,v.return=D,D.child=v)}function Un(v,D,Q,H,V,ne){if(v!==null&&Eh(v.memoizedProps,H)&&v.ref===D.ref)if(Je=!1,(ne&V)!==0)v.flags&16384&&(Je=!0);else return D.lanes=v.lanes,qn(v,D,ne);return JA(v,D,Q,H,ne)}function mi(v,D,Q){var H=D.pendingProps,V=H.children,ne=v!==null?v.memoizedState:null;if(H.mode===\"hidden\"||H.mode===\"unstable-defer-without-hiding\")if(!(D.mode&4))D.memoizedState={baseLanes:0},qy(D,Q);else if(Q&1073741824)D.memoizedState={baseLanes:0},qy(D,ne!==null?ne.baseLanes:Q);else return v=ne!==null?ne.baseLanes|Q:Q,D.lanes=D.childLanes=1073741824,D.memoizedState={baseLanes:v},qy(D,v),null;else ne!==null?(H=ne.baseLanes|Q,D.memoizedState=null):H=Q,qy(D,H);return At(v,D,V,Q),D.child}function Cs(v,D){var Q=D.ref;(v===null&&Q!==null||v!==null&&v.ref!==Q)&&(D.flags|=128)}function JA(v,D,Q,H,V){var ne=Kn(Q)?Na:Gi.current;return ne=dn(D,ne),df(D,V),Q=qg(v,D,Q,H,ne,V),v!==null&&!Je?(D.updateQueue=v.updateQueue,D.flags&=-517,v.lanes&=~V,qn(v,D,V)):(D.flags|=1,At(v,D,Q,V),D.child)}function lP(v,D,Q,H,V){if(Kn(Q)){var ne=!0;La(D)}else ne=!1;if(df(D,V),D.stateNode===null)v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),xt(D,Q,H),bo(D,Q,H,V),H=!0;else if(v===null){var Se=D.stateNode,_e=D.memoizedProps;Se.props=_e;var pt=Se.context,Wt=Q.contextType;typeof Wt==\"object\"&&Wt!==null?Wt=Do(Wt):(Wt=Kn(Q)?Na:Gi.current,Wt=dn(D,Wt));var Sr=Q.getDerivedStateFromProps,Lr=typeof Sr==\"function\"||typeof Se.getSnapshotBeforeUpdate==\"function\";Lr||typeof Se.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof Se.componentWillReceiveProps!=\"function\"||(_e!==H||pt!==Wt)&&jA(D,Se,H,Wt),Sl=!1;var Zt=D.memoizedState;Se.state=Zt,UA(D,H,Se,V),pt=D.memoizedState,_e!==H||Zt!==pt||Li.current||Sl?(typeof Sr==\"function\"&&(_A(D,Q,Sr,H),pt=D.memoizedState),(_e=Sl||Y(D,Q,_e,H,Zt,pt,Wt))?(Lr||typeof Se.UNSAFE_componentWillMount!=\"function\"&&typeof Se.componentWillMount!=\"function\"||(typeof Se.componentWillMount==\"function\"&&Se.componentWillMount(),typeof Se.UNSAFE_componentWillMount==\"function\"&&Se.UNSAFE_componentWillMount()),typeof Se.componentDidMount==\"function\"&&(D.flags|=4)):(typeof Se.componentDidMount==\"function\"&&(D.flags|=4),D.memoizedProps=H,D.memoizedState=pt),Se.props=H,Se.state=pt,Se.context=Wt,H=_e):(typeof Se.componentDidMount==\"function\"&&(D.flags|=4),H=!1)}else{Se=D.stateNode,Lg(v,D),_e=D.memoizedProps,Wt=D.type===D.elementType?_e:So(D.type,_e),Se.props=Wt,Lr=D.pendingProps,Zt=Se.context,pt=Q.contextType,typeof pt==\"object\"&&pt!==null?pt=Do(pt):(pt=Kn(Q)?Na:Gi.current,pt=dn(D,pt));var zn=Q.getDerivedStateFromProps;(Sr=typeof zn==\"function\"||typeof Se.getSnapshotBeforeUpdate==\"function\")||typeof Se.UNSAFE_componentWillReceiveProps!=\"function\"&&typeof Se.componentWillReceiveProps!=\"function\"||(_e!==Lr||Zt!==pt)&&jA(D,Se,H,pt),Sl=!1,Zt=D.memoizedState,Se.state=Zt,UA(D,H,Se,V);var yi=D.memoizedState;_e!==Lr||Zt!==yi||Li.current||Sl?(typeof zn==\"function\"&&(_A(D,Q,zn,H),yi=D.memoizedState),(Wt=Sl||Y(D,Q,Wt,H,Zt,yi,pt))?(Sr||typeof Se.UNSAFE_componentWillUpdate!=\"function\"&&typeof Se.componentWillUpdate!=\"function\"||(typeof Se.componentWillUpdate==\"function\"&&Se.componentWillUpdate(H,yi,pt),typeof Se.UNSAFE_componentWillUpdate==\"function\"&&Se.UNSAFE_componentWillUpdate(H,yi,pt)),typeof Se.componentDidUpdate==\"function\"&&(D.flags|=4),typeof Se.getSnapshotBeforeUpdate==\"function\"&&(D.flags|=256)):(typeof Se.componentDidUpdate!=\"function\"||_e===v.memoizedProps&&Zt===v.memoizedState||(D.flags|=4),typeof Se.getSnapshotBeforeUpdate!=\"function\"||_e===v.memoizedProps&&Zt===v.memoizedState||(D.flags|=256),D.memoizedProps=H,D.memoizedState=yi),Se.props=H,Se.state=yi,Se.context=pt,H=Wt):(typeof Se.componentDidUpdate!=\"function\"||_e===v.memoizedProps&&Zt===v.memoizedState||(D.flags|=4),typeof Se.getSnapshotBeforeUpdate!=\"function\"||_e===v.memoizedProps&&Zt===v.memoizedState||(D.flags|=256),H=!1)}return t2(v,D,Q,H,ne,V)}function t2(v,D,Q,H,V,ne){Cs(v,D);var Se=(D.flags&64)!==0;if(!H&&!Se)return V&&Ma(D,Q,!1),qn(v,D,ne);H=D.stateNode,de.current=D;var _e=Se&&typeof Q.getDerivedStateFromError!=\"function\"?null:H.render();return D.flags|=1,v!==null&&Se?(D.child=Mg(D,v.child,null,ne),D.child=Mg(D,null,_e,ne)):At(v,D,_e,ne),D.memoizedState=H.state,V&&Ma(D,Q,!0),D.child}function by(v){var D=v.stateNode;D.pendingContext?yh(v,D.pendingContext,D.pendingContext!==D.context):D.context&&yh(v,D.context,!1),Ug(v,D.containerInfo)}var kh={dehydrated:null,retryLane:0};function r2(v,D,Q){var H=D.pendingProps,V=di.current,ne=!1,Se;return(Se=(D.flags&64)!==0)||(Se=v!==null&&v.memoizedState===null?!1:(V&2)!==0),Se?(ne=!0,D.flags&=-65):v!==null&&v.memoizedState===null||H.fallback===void 0||H.unstable_avoidThisFallback===!0||(V|=1),xn(di,V&1),v===null?(H.fallback!==void 0&&Hg(D),v=H.children,V=H.fallback,ne?(v=Va(D,v,V,Q),D.child.memoizedState={baseLanes:Q},D.memoizedState=kh,v):typeof H.unstable_expectedLoadTime==\"number\"?(v=Va(D,v,V,Q),D.child.memoizedState={baseLanes:Q},D.memoizedState=kh,D.lanes=33554432,v):(Q=D2({mode:\"visible\",children:v},D.mode,Q,null),Q.return=D,D.child=Q)):v.memoizedState!==null?ne?(H=KA(v,D,H.children,H.fallback,Q),ne=D.child,V=v.child.memoizedState,ne.memoizedState=V===null?{baseLanes:Q}:{baseLanes:V.baseLanes|Q},ne.childLanes=v.childLanes&~Q,D.memoizedState=kh,H):(Q=n2(v,D,H.children,Q),D.memoizedState=null,Q):ne?(H=KA(v,D,H.children,H.fallback,Q),ne=D.child,V=v.child.memoizedState,ne.memoizedState=V===null?{baseLanes:Q}:{baseLanes:V.baseLanes|Q},ne.childLanes=v.childLanes&~Q,D.memoizedState=kh,H):(Q=n2(v,D,H.children,Q),D.memoizedState=null,Q)}function Va(v,D,Q,H){var V=v.mode,ne=v.child;return D={mode:\"hidden\",children:D},!(V&2)&&ne!==null?(ne.childLanes=0,ne.pendingProps=D):ne=D2(D,V,0,null),Q=kf(Q,V,H,null),ne.return=v,Q.return=v,ne.sibling=Q,v.child=ne,Q}function n2(v,D,Q,H){var V=v.child;return v=V.sibling,Q=Su(V,{mode:\"visible\",children:Q}),!(D.mode&2)&&(Q.lanes=H),Q.return=D,Q.sibling=null,v!==null&&(v.nextEffect=null,v.flags=8,D.firstEffect=D.lastEffect=v),D.child=Q}function KA(v,D,Q,H,V){var ne=D.mode,Se=v.child;v=Se.sibling;var _e={mode:\"hidden\",children:Q};return!(ne&2)&&D.child!==Se?(Q=D.child,Q.childLanes=0,Q.pendingProps=_e,Se=Q.lastEffect,Se!==null?(D.firstEffect=Q.firstEffect,D.lastEffect=Se,Se.nextEffect=null):D.firstEffect=D.lastEffect=null):Q=Su(Se,_e),v!==null?H=Su(v,H):(H=kf(H,ne,V,null),H.flags|=2),H.return=D,Q.return=D,Q.sibling=H,D.child=Q,H}function Qh(v,D){v.lanes|=D;var Q=v.alternate;Q!==null&&(Q.lanes|=D),Ey(v.return,D)}function Py(v,D,Q,H,V,ne){var Se=v.memoizedState;Se===null?v.memoizedState={isBackwards:D,rendering:null,renderingStartTime:0,last:H,tail:Q,tailMode:V,lastEffect:ne}:(Se.isBackwards=D,Se.rendering=null,Se.renderingStartTime=0,Se.last=H,Se.tail=Q,Se.tailMode=V,Se.lastEffect=ne)}function cP(v,D,Q){var H=D.pendingProps,V=H.revealOrder,ne=H.tail;if(At(v,D,H.children,Q),H=di.current,H&2)H=H&1|2,D.flags|=64;else{if(v!==null&&v.flags&64)e:for(v=D.child;v!==null;){if(v.tag===13)v.memoizedState!==null&&Qh(v,Q);else if(v.tag===19)Qh(v,Q);else if(v.child!==null){v.child.return=v,v=v.child;continue}if(v===D)break e;for(;v.sibling===null;){if(v.return===null||v.return===D)break e;v=v.return}v.sibling.return=v.return,v=v.sibling}H&=1}if(xn(di,H),!(D.mode&2))D.memoizedState=null;else switch(V){case\"forwards\":for(Q=D.child,V=null;Q!==null;)v=Q.alternate,v!==null&&GA(v)===null&&(V=Q),Q=Q.sibling;Q=V,Q===null?(V=D.child,D.child=null):(V=Q.sibling,Q.sibling=null),Py(D,!1,V,Q,ne,D.lastEffect);break;case\"backwards\":for(Q=null,V=D.child,D.child=null;V!==null;){if(v=V.alternate,v!==null&&GA(v)===null){D.child=V;break}v=V.sibling,V.sibling=Q,Q=V,V=v}Py(D,!0,Q,null,ne,D.lastEffect);break;case\"together\":Py(D,!1,null,null,void 0,D.lastEffect);break;default:D.memoizedState=null}return D.child}function qn(v,D,Q){if(v!==null&&(D.dependencies=v.dependencies),Zg|=D.lanes,Q&D.childLanes){if(v!==null&&D.child!==v.child)throw Error(c(153));if(D.child!==null){for(v=D.child,Q=Su(v,v.pendingProps),D.child=Q,Q.return=D;v.sibling!==null;)v=v.sibling,Q=Q.sibling=Su(v,v.pendingProps),Q.return=D;Q.sibling=null}return D.child}return null}function os(v){v.flags|=4}var kl,Ql,Cu,ha;if(F)kl=function(v,D){for(var Q=D.child;Q!==null;){if(Q.tag===5||Q.tag===6)Pe(v,Q.stateNode);else if(Q.tag!==4&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}},Ql=function(){},Cu=function(v,D,Q,H,V){if(v=v.memoizedProps,v!==H){var ne=D.stateNode,Se=qa(ur.current);Q=ke(ne,Q,v,H,V,Se),(D.updateQueue=Q)&&os(D)}},ha=function(v,D,Q,H){Q!==H&&os(D)};else if(z){kl=function(v,D,Q,H){for(var V=D.child;V!==null;){if(V.tag===5){var ne=V.stateNode;Q&&H&&(ne=RA(ne,V.type,V.memoizedProps,V)),Pe(v,ne)}else if(V.tag===6)ne=V.stateNode,Q&&H&&(ne=oa(ne,V.memoizedProps,V)),Pe(v,ne);else if(V.tag!==4){if(V.tag===13&&V.flags&4&&(ne=V.memoizedState!==null)){var Se=V.child;if(Se!==null&&(Se.child!==null&&(Se.child.return=Se,kl(v,Se,!0,ne)),ne=Se.sibling,ne!==null)){ne.return=V,V=ne;continue}}if(V.child!==null){V.child.return=V,V=V.child;continue}}if(V===D)break;for(;V.sibling===null;){if(V.return===null||V.return===D)return;V=V.return}V.sibling.return=V.return,V=V.sibling}};var zA=function(v,D,Q,H){for(var V=D.child;V!==null;){if(V.tag===5){var ne=V.stateNode;Q&&H&&(ne=RA(ne,V.type,V.memoizedProps,V)),au(v,ne)}else if(V.tag===6)ne=V.stateNode,Q&&H&&(ne=oa(ne,V.memoizedProps,V)),au(v,ne);else if(V.tag!==4){if(V.tag===13&&V.flags&4&&(ne=V.memoizedState!==null)){var Se=V.child;if(Se!==null&&(Se.child!==null&&(Se.child.return=Se,zA(v,Se,!0,ne)),ne=Se.sibling,ne!==null)){ne.return=V,V=ne;continue}}if(V.child!==null){V.child.return=V,V=V.child;continue}}if(V===D)break;for(;V.sibling===null;){if(V.return===null||V.return===D)return;V=V.return}V.sibling.return=V.return,V=V.sibling}};Ql=function(v){var D=v.stateNode;if(v.firstEffect!==null){var Q=D.containerInfo,H=ou(Q);zA(H,v,!1,!1),D.pendingChildren=H,os(v),lu(Q,H)}},Cu=function(v,D,Q,H,V){var ne=v.stateNode,Se=v.memoizedProps;if((v=D.firstEffect===null)&&Se===H)D.stateNode=ne;else{var _e=D.stateNode,pt=qa(ur.current),Wt=null;Se!==H&&(Wt=ke(_e,Q,Se,H,V,pt)),v&&Wt===null?D.stateNode=ne:(ne=ro(ne,Wt,Q,Se,H,D,v,_e),Ve(ne,Q,H,V,pt)&&os(D),D.stateNode=ne,v?os(D):kl(ne,D,!1,!1))}},ha=function(v,D,Q,H){Q!==H?(v=qa(yf.current),Q=qa(ur.current),D.stateNode=Ue(H,v,Q,D),os(D)):D.stateNode=v.stateNode}}else Ql=function(){},Cu=function(){},ha=function(){};function XA(v,D){if(!Ya)switch(v.tailMode){case\"hidden\":D=v.tail;for(var Q=null;D!==null;)D.alternate!==null&&(Q=D),D=D.sibling;Q===null?v.tail=null:Q.sibling=null;break;case\"collapsed\":Q=v.tail;for(var H=null;Q!==null;)Q.alternate!==null&&(H=Q),Q=Q.sibling;H===null?D||v.tail===null?v.tail=null:v.tail.sibling=null:H.sibling=null}}function jL(v,D,Q){var H=D.pendingProps;switch(D.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return null;case 1:return Kn(D.type)&&Au(),null;case 3:return du(),Rt(Li),Rt(Gi),yu(),H=D.stateNode,H.pendingContext&&(H.context=H.pendingContext,H.pendingContext=null),(v===null||v.child===null)&&(qA(D)?os(D):H.hydrate||(D.flags|=256)),Ql(D),null;case 5:wt(D);var V=qa(yf.current);if(Q=D.type,v!==null&&D.stateNode!=null)Cu(v,D,Q,H,V),v.ref!==D.ref&&(D.flags|=128);else{if(!H){if(D.stateNode===null)throw Error(c(166));return null}if(v=qa(ur.current),qA(D)){if(!X)throw Error(c(175));v=Cr(D.stateNode,D.type,D.memoizedProps,V,v,D),D.updateQueue=v,v!==null&&os(D)}else{var ne=Ne(Q,H,V,v,D);kl(ne,D,!1,!1),D.stateNode=ne,Ve(ne,Q,H,V,v)&&os(D)}D.ref!==null&&(D.flags|=128)}return null;case 6:if(v&&D.stateNode!=null)ha(v,D,v.memoizedProps,H);else{if(typeof H!=\"string\"&&D.stateNode===null)throw Error(c(166));if(v=qa(yf.current),V=qa(ur.current),qA(D)){if(!X)throw Error(c(176));pf(D.stateNode,D.memoizedProps,D)&&os(D)}else D.stateNode=Ue(H,v,V,D)}return null;case 13:return Rt(di),H=D.memoizedState,D.flags&64?(D.lanes=Q,D):(H=H!==null,V=!1,v===null?D.memoizedProps.fallback!==void 0&&qA(D):V=v.memoizedState!==null,H&&!V&&D.mode&2&&(v===null&&D.memoizedProps.unstable_avoidThisFallback!==!0||di.current&1?ws===0&&(ws=3):((ws===0||ws===3)&&(ws=4),so===null||!(Zg&134217727)&&!(Fh&134217727)||Nh(so,Ns))),z&&H&&(D.flags|=4),F&&(H||V)&&(D.flags|=4),null);case 4:return du(),Ql(D),v===null&&Ct(D.stateNode.containerInfo),null;case 10:return Og(D),null;case 17:return Kn(D.type)&&Au(),null;case 19:if(Rt(di),H=D.memoizedState,H===null)return null;if(V=(D.flags&64)!==0,ne=H.rendering,ne===null)if(V)XA(H,!1);else{if(ws!==0||v!==null&&v.flags&64)for(v=D.child;v!==null;){if(ne=GA(v),ne!==null){for(D.flags|=64,XA(H,!1),v=ne.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),H.lastEffect===null&&(D.firstEffect=null),D.lastEffect=H.lastEffect,v=Q,H=D.child;H!==null;)V=H,Q=v,V.flags&=2,V.nextEffect=null,V.firstEffect=null,V.lastEffect=null,ne=V.alternate,ne===null?(V.childLanes=0,V.lanes=Q,V.child=null,V.memoizedProps=null,V.memoizedState=null,V.updateQueue=null,V.dependencies=null,V.stateNode=null):(V.childLanes=ne.childLanes,V.lanes=ne.lanes,V.child=ne.child,V.memoizedProps=ne.memoizedProps,V.memoizedState=ne.memoizedState,V.updateQueue=ne.updateQueue,V.type=ne.type,Q=ne.dependencies,V.dependencies=Q===null?null:{lanes:Q.lanes,firstContext:Q.firstContext}),H=H.sibling;return xn(di,di.current&1|2),D.child}v=v.sibling}H.tail!==null&&bt()>m2&&(D.flags|=64,V=!0,XA(H,!1),D.lanes=33554432)}else{if(!V)if(v=GA(ne),v!==null){if(D.flags|=64,V=!0,v=v.updateQueue,v!==null&&(D.updateQueue=v,D.flags|=4),XA(H,!0),H.tail===null&&H.tailMode===\"hidden\"&&!ne.alternate&&!Ya)return D=D.lastEffect=H.lastEffect,D!==null&&(D.nextEffect=null),null}else 2*bt()-H.renderingStartTime>m2&&Q!==1073741824&&(D.flags|=64,V=!0,XA(H,!1),D.lanes=33554432);H.isBackwards?(ne.sibling=D.child,D.child=ne):(v=H.last,v!==null?v.sibling=ne:D.child=ne,H.last=ne)}return H.tail!==null?(v=H.tail,H.rendering=v,H.tail=v.sibling,H.lastEffect=D.lastEffect,H.renderingStartTime=bt(),v.sibling=null,D=di.current,xn(di,V?D&1|2:D&1),v):null;case 23:case 24:return B2(),v!==null&&v.memoizedState!==null!=(D.memoizedState!==null)&&H.mode!==\"unstable-defer-without-hiding\"&&(D.flags|=4),null}throw Error(c(156,D.tag))}function qL(v){switch(v.tag){case 1:Kn(v.type)&&Au();var D=v.flags;return D&4096?(v.flags=D&-4097|64,v):null;case 3:if(du(),Rt(Li),Rt(Gi),yu(),D=v.flags,D&64)throw Error(c(285));return v.flags=D&-4097|64,v;case 5:return wt(v),null;case 13:return Rt(di),D=v.flags,D&4096?(v.flags=D&-4097|64,v):null;case 19:return Rt(di),null;case 4:return du(),null;case 10:return Og(v),null;case 23:case 24:return B2(),null;default:return null}}function Yg(v,D){try{var Q=\"\",H=D;do Q+=$1(H),H=H.return;while(H);var V=Q}catch(ne){V=`\nError generating stack: `+ne.message+`\n`+ne.stack}return{value:v,source:D,stack:V}}function Vg(v,D){try{console.error(D.value)}catch(Q){setTimeout(function(){throw Q})}}var WL=typeof WeakMap==\"function\"?WeakMap:Map;function i2(v,D,Q){Q=Dl(-1,Q),Q.tag=3,Q.payload={element:null};var H=D.value;return Q.callback=function(){_y||(_y=!0,y2=H),Vg(v,D)},Q}function Jg(v,D,Q){Q=Dl(-1,Q),Q.tag=3;var H=v.type.getDerivedStateFromError;if(typeof H==\"function\"){var V=D.value;Q.payload=function(){return Vg(v,D),H(V)}}var ne=v.stateNode;return ne!==null&&typeof ne.componentDidCatch==\"function\"&&(Q.callback=function(){typeof H!=\"function\"&&(hc===null?hc=new Set([this]):hc.add(this),Vg(v,D));var Se=D.stack;this.componentDidCatch(D.value,{componentStack:Se!==null?Se:\"\"})}),Q}var YL=typeof WeakSet==\"function\"?WeakSet:Set;function s2(v){var D=v.ref;if(D!==null)if(typeof D==\"function\")try{D(null)}catch(Q){xf(v,Q)}else D.current=null}function xy(v,D){switch(D.tag){case 0:case 11:case 15:case 22:return;case 1:if(D.flags&256&&v!==null){var Q=v.memoizedProps,H=v.memoizedState;v=D.stateNode,D=v.getSnapshotBeforeUpdate(D.elementType===D.type?Q:So(D.type,Q),H),v.__reactInternalSnapshotBeforeUpdate=D}return;case 3:F&&D.flags&256&&Ts(D.stateNode.containerInfo);return;case 5:case 6:case 4:case 17:return}throw Error(c(163))}function Th(v,D){if(D=D.updateQueue,D=D!==null?D.lastEffect:null,D!==null){var Q=D=D.next;do{if((Q.tag&v)===v){var H=Q.destroy;Q.destroy=void 0,H!==void 0&&H()}Q=Q.next}while(Q!==D)}}function uP(v,D,Q){switch(Q.tag){case 0:case 11:case 15:case 22:if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{if((v.tag&3)===3){var H=v.create;v.destroy=H()}v=v.next}while(v!==D)}if(D=Q.updateQueue,D=D!==null?D.lastEffect:null,D!==null){v=D=D.next;do{var V=v;H=V.next,V=V.tag,V&4&&V&1&&(vP(Q,v),tM(Q,v)),v=H}while(v!==D)}return;case 1:v=Q.stateNode,Q.flags&4&&(D===null?v.componentDidMount():(H=Q.elementType===Q.type?D.memoizedProps:So(Q.type,D.memoizedProps),v.componentDidUpdate(H,D.memoizedState,v.__reactInternalSnapshotBeforeUpdate))),D=Q.updateQueue,D!==null&&Cy(Q,D,v);return;case 3:if(D=Q.updateQueue,D!==null){if(v=null,Q.child!==null)switch(Q.child.tag){case 5:v=Re(Q.child.stateNode);break;case 1:v=Q.child.stateNode}Cy(Q,D,v)}return;case 5:v=Q.stateNode,D===null&&Q.flags&4&&$s(v,Q.type,Q.memoizedProps,Q);return;case 6:return;case 4:return;case 12:return;case 13:X&&Q.memoizedState===null&&(Q=Q.alternate,Q!==null&&(Q=Q.memoizedState,Q!==null&&(Q=Q.dehydrated,Q!==null&&uu(Q))));return;case 19:case 17:case 20:case 21:case 23:case 24:return}throw Error(c(163))}function fP(v,D){if(F)for(var Q=v;;){if(Q.tag===5){var H=Q.stateNode;D?dh(H):to(Q.stateNode,Q.memoizedProps)}else if(Q.tag===6)H=Q.stateNode,D?mh(H):jn(H,Q.memoizedProps);else if((Q.tag!==23&&Q.tag!==24||Q.memoizedState===null||Q===v)&&Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===v)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===v)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}}function ky(v,D){if(Ua&&typeof Ua.onCommitFiberUnmount==\"function\")try{Ua.onCommitFiberUnmount($e,D)}catch{}switch(D.tag){case 0:case 11:case 14:case 15:case 22:if(v=D.updateQueue,v!==null&&(v=v.lastEffect,v!==null)){var Q=v=v.next;do{var H=Q,V=H.destroy;if(H=H.tag,V!==void 0)if(H&4)vP(D,Q);else{H=D;try{V()}catch(ne){xf(H,ne)}}Q=Q.next}while(Q!==v)}break;case 1:if(s2(D),v=D.stateNode,typeof v.componentWillUnmount==\"function\")try{v.props=D.memoizedProps,v.state=D.memoizedState,v.componentWillUnmount()}catch(ne){xf(D,ne)}break;case 5:s2(D);break;case 4:F?gP(v,D):z&&z&&(D=D.stateNode.containerInfo,v=ou(D),TA(D,v))}}function AP(v,D){for(var Q=D;;)if(ky(v,Q),Q.child===null||F&&Q.tag===4){if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return}Q.sibling.return=Q.return,Q=Q.sibling}else Q.child.return=Q,Q=Q.child}function Qy(v){v.alternate=null,v.child=null,v.dependencies=null,v.firstEffect=null,v.lastEffect=null,v.memoizedProps=null,v.memoizedState=null,v.pendingProps=null,v.return=null,v.updateQueue=null}function pP(v){return v.tag===5||v.tag===3||v.tag===4}function hP(v){if(F){e:{for(var D=v.return;D!==null;){if(pP(D))break e;D=D.return}throw Error(c(160))}var Q=D;switch(D=Q.stateNode,Q.tag){case 5:var H=!1;break;case 3:D=D.containerInfo,H=!0;break;case 4:D=D.containerInfo,H=!0;break;default:throw Error(c(161))}Q.flags&16&&(Af(D),Q.flags&=-17);e:t:for(Q=v;;){for(;Q.sibling===null;){if(Q.return===null||pP(Q.return)){Q=null;break e}Q=Q.return}for(Q.sibling.return=Q.return,Q=Q.sibling;Q.tag!==5&&Q.tag!==6&&Q.tag!==18;){if(Q.flags&2||Q.child===null||Q.tag===4)continue t;Q.child.return=Q,Q=Q.child}if(!(Q.flags&2)){Q=Q.stateNode;break e}}H?o2(v,Q,D):a2(v,Q,D)}}function o2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?eo(Q,v,D):Io(Q,v);else if(H!==4&&(v=v.child,v!==null))for(o2(v,D,Q),v=v.sibling;v!==null;)o2(v,D,Q),v=v.sibling}function a2(v,D,Q){var H=v.tag,V=H===5||H===6;if(V)v=V?v.stateNode:v.stateNode.instance,D?ji(Q,v,D):ai(Q,v);else if(H!==4&&(v=v.child,v!==null))for(a2(v,D,Q),v=v.sibling;v!==null;)a2(v,D,Q),v=v.sibling}function gP(v,D){for(var Q=D,H=!1,V,ne;;){if(!H){H=Q.return;e:for(;;){if(H===null)throw Error(c(160));switch(V=H.stateNode,H.tag){case 5:ne=!1;break e;case 3:V=V.containerInfo,ne=!0;break e;case 4:V=V.containerInfo,ne=!0;break e}H=H.return}H=!0}if(Q.tag===5||Q.tag===6)AP(v,Q),ne?QA(V,Q.stateNode):wo(V,Q.stateNode);else if(Q.tag===4){if(Q.child!==null){V=Q.stateNode.containerInfo,ne=!0,Q.child.return=Q,Q=Q.child;continue}}else if(ky(v,Q),Q.child!==null){Q.child.return=Q,Q=Q.child;continue}if(Q===D)break;for(;Q.sibling===null;){if(Q.return===null||Q.return===D)return;Q=Q.return,Q.tag===4&&(H=!1)}Q.sibling.return=Q.return,Q=Q.sibling}}function l2(v,D){if(F){switch(D.tag){case 0:case 11:case 14:case 15:case 22:Th(3,D);return;case 1:return;case 5:var Q=D.stateNode;if(Q!=null){var H=D.memoizedProps;v=v!==null?v.memoizedProps:H;var V=D.type,ne=D.updateQueue;D.updateQueue=null,ne!==null&&Co(Q,ne,V,v,H,D)}return;case 6:if(D.stateNode===null)throw Error(c(162));Q=D.memoizedProps,rs(D.stateNode,v!==null?v.memoizedProps:Q,Q);return;case 3:X&&(D=D.stateNode,D.hydrate&&(D.hydrate=!1,OA(D.containerInfo)));return;case 12:return;case 13:dP(D),Kg(D);return;case 19:Kg(D);return;case 17:return;case 23:case 24:fP(D,D.memoizedState!==null);return}throw Error(c(163))}switch(D.tag){case 0:case 11:case 14:case 15:case 22:Th(3,D);return;case 12:return;case 13:dP(D),Kg(D);return;case 19:Kg(D);return;case 3:X&&(Q=D.stateNode,Q.hydrate&&(Q.hydrate=!1,OA(Q.containerInfo)));break;case 23:case 24:return}e:if(z){switch(D.tag){case 1:case 5:case 6:case 20:break e;case 3:case 4:D=D.stateNode,TA(D.containerInfo,D.pendingChildren);break e}throw Error(c(163))}}function dP(v){v.memoizedState!==null&&(d2=bt(),F&&fP(v.child,!0))}function Kg(v){var D=v.updateQueue;if(D!==null){v.updateQueue=null;var Q=v.stateNode;Q===null&&(Q=v.stateNode=new YL),D.forEach(function(H){var V=nM.bind(null,v,H);Q.has(H)||(Q.add(H),H.then(V,V))})}}function VL(v,D){return v!==null&&(v=v.memoizedState,v===null||v.dehydrated!==null)?(D=D.memoizedState,D!==null&&D.dehydrated===null):!1}var Ty=0,Ry=1,Fy=2,zg=3,Ny=4;if(typeof Symbol==\"function\"&&Symbol.for){var Xg=Symbol.for;Ty=Xg(\"selector.component\"),Ry=Xg(\"selector.has_pseudo_class\"),Fy=Xg(\"selector.role\"),zg=Xg(\"selector.test_id\"),Ny=Xg(\"selector.text\")}function Oy(v){var D=$(v);if(D!=null){if(typeof D.memoizedProps[\"data-testname\"]!=\"string\")throw Error(c(364));return D}if(v=ir(v),v===null)throw Error(c(362));return v.stateNode.current}function Sf(v,D){switch(D.$$typeof){case Ty:if(v.type===D.value)return!0;break;case Ry:e:{D=D.value,v=[v,0];for(var Q=0;Q<v.length;){var H=v[Q++],V=v[Q++],ne=D[V];if(H.tag!==5||!Pr(H)){for(;ne!=null&&Sf(H,ne);)V++,ne=D[V];if(V===D.length){D=!0;break e}else for(H=H.child;H!==null;)v.push(H,V),H=H.sibling}}D=!1}return D;case Fy:if(v.tag===5&&Ir(v.stateNode,D.value))return!0;break;case Ny:if((v.tag===5||v.tag===6)&&(v=gn(v),v!==null&&0<=v.indexOf(D.value)))return!0;break;case zg:if(v.tag===5&&(v=v.memoizedProps[\"data-testname\"],typeof v==\"string\"&&v.toLowerCase()===D.value.toLowerCase()))return!0;break;default:throw Error(c(365,D))}return!1}function Df(v){switch(v.$$typeof){case Ty:return\"<\"+(g(v.value)||\"Unknown\")+\">\";case Ry:return\":has(\"+(Df(v)||\"\")+\")\";case Fy:return'[role=\"'+v.value+'\"]';case Ny:return'\"'+v.value+'\"';case zg:return'[data-testname=\"'+v.value+'\"]';default:throw Error(c(365,v))}}function c2(v,D){var Q=[];v=[v,0];for(var H=0;H<v.length;){var V=v[H++],ne=v[H++],Se=D[ne];if(V.tag!==5||!Pr(V)){for(;Se!=null&&Sf(V,Se);)ne++,Se=D[ne];if(ne===D.length)Q.push(V);else for(V=V.child;V!==null;)v.push(V,ne),V=V.sibling}}return Q}function u2(v,D){if(!qt)throw Error(c(363));v=Oy(v),v=c2(v,D),D=[],v=Array.from(v);for(var Q=0;Q<v.length;){var H=v[Q++];if(H.tag===5)Pr(H)||D.push(H.stateNode);else for(H=H.child;H!==null;)v.push(H),H=H.sibling}return D}var Ly=null;function JL(v){if(Ly===null)try{var D=(\"require\"+Math.random()).slice(0,7);Ly=(jS&&jS[D]).call(jS,\"timers\").setImmediate}catch{Ly=function(H){var V=new MessageChannel;V.port1.onmessage=H,V.port2.postMessage(void 0)}}return Ly(v)}var KL=Math.ceil,My=f.ReactCurrentDispatcher,f2=f.ReactCurrentOwner,A2=f.IsSomeRendererActing,xr=0,so=null,Xi=null,Ns=0,ZA=0,p2=no(0),ws=0,Uy=null,Rh=0,Zg=0,Fh=0,h2=0,g2=null,d2=0,m2=1/0;function bf(){m2=bt()+500}var sr=null,_y=!1,y2=null,hc=null,Pf=!1,$g=null,ed=90,E2=[],I2=[],wu=null,td=0,C2=null,Hy=-1,Bu=0,jy=0,rd=null,nd=!1;function ko(){return xr&48?bt():Hy!==-1?Hy:Hy=bt()}function Bs(v){if(v=v.mode,!(v&2))return 1;if(!(v&4))return tr()===99?1:2;if(Bu===0&&(Bu=Rh),my.transition!==0){jy!==0&&(jy=g2!==null?g2.pendingLanes:0),v=Bu;var D=4186112&~jy;return D&=-D,D===0&&(v=4186112&~v,D=v&-v,D===0&&(D=8192)),D}return v=tr(),xr&4&&v===98?v=Mt(12,Bu):(v=LA(v),v=Mt(v,Bu)),v}function Tl(v,D,Q){if(50<td)throw td=0,C2=null,Error(c(185));if(v=Gy(v,D),v===null)return null;Ha(v,D,Q),v===so&&(Fh|=D,ws===4&&Nh(v,Ns));var H=tr();D===1?xr&8&&!(xr&48)?w2(v):(ga(v,Q),xr===0&&(bf(),Tn())):(!(xr&4)||H!==98&&H!==99||(wu===null?wu=new Set([v]):wu.add(v)),ga(v,Q)),g2=v}function Gy(v,D){v.lanes|=D;var Q=v.alternate;for(Q!==null&&(Q.lanes|=D),Q=v,v=v.return;v!==null;)v.childLanes|=D,Q=v.alternate,Q!==null&&(Q.childLanes|=D),Q=v,v=v.return;return Q.tag===3?Q.stateNode:null}function ga(v,D){for(var Q=v.callbackNode,H=v.suspendedLanes,V=v.pingedLanes,ne=v.expirationTimes,Se=v.pendingLanes;0<Se;){var _e=31-ns(Se),pt=1<<_e,Wt=ne[_e];if(Wt===-1){if(!(pt&H)||pt&V){Wt=D,ca(pt);var Sr=wn;ne[_e]=10<=Sr?Wt+250:6<=Sr?Wt+5e3:-1}}else Wt<=D&&(v.expiredLanes|=pt);Se&=~pt}if(H=ua(v,v===so?Ns:0),D=wn,H===0)Q!==null&&(Q!==lr&&Is(Q),v.callbackNode=null,v.callbackPriority=0);else{if(Q!==null){if(v.callbackPriority===D)return;Q!==lr&&Is(Q)}D===15?(Q=w2.bind(null,v),Ee===null?(Ee=[Q],Oe=Mi(Qn,Ga)):Ee.push(Q),Q=lr):D===14?Q=qi(99,w2.bind(null,v)):(Q=MA(D),Q=qi(Q,mP.bind(null,v))),v.callbackPriority=D,v.callbackNode=Q}}function mP(v){if(Hy=-1,jy=Bu=0,xr&48)throw Error(c(327));var D=v.callbackNode;if(vu()&&v.callbackNode!==D)return null;var Q=ua(v,v===so?Ns:0);if(Q===0)return null;var H=Q,V=xr;xr|=16;var ne=CP();(so!==v||Ns!==H)&&(bf(),Oh(v,H));do try{ZL();break}catch(_e){IP(v,_e)}while(!0);if(Fg(),My.current=ne,xr=V,Xi!==null?H=0:(so=null,Ns=0,H=ws),Rh&Fh)Oh(v,0);else if(H!==0){if(H===2&&(xr|=64,v.hydrate&&(v.hydrate=!1,Ts(v.containerInfo)),Q=Bl(v),Q!==0&&(H=id(v,Q))),H===1)throw D=Uy,Oh(v,0),Nh(v,Q),ga(v,bt()),D;switch(v.finishedWork=v.current.alternate,v.finishedLanes=Q,H){case 0:case 1:throw Error(c(345));case 2:$A(v);break;case 3:if(Nh(v,Q),(Q&62914560)===Q&&(H=d2+500-bt(),10<H)){if(ua(v,0)!==0)break;if(V=v.suspendedLanes,(V&Q)!==Q){ko(),v.pingedLanes|=v.suspendedLanes&V;break}v.timeoutHandle=x($A.bind(null,v),H);break}$A(v);break;case 4:if(Nh(v,Q),(Q&4186112)===Q)break;for(H=v.eventTimes,V=-1;0<Q;){var Se=31-ns(Q);ne=1<<Se,Se=H[Se],Se>V&&(V=Se),Q&=~ne}if(Q=V,Q=bt()-Q,Q=(120>Q?120:480>Q?480:1080>Q?1080:1920>Q?1920:3e3>Q?3e3:4320>Q?4320:1960*KL(Q/1960))-Q,10<Q){v.timeoutHandle=x($A.bind(null,v),Q);break}$A(v);break;case 5:$A(v);break;default:throw Error(c(329))}}return ga(v,bt()),v.callbackNode===D?mP.bind(null,v):null}function Nh(v,D){for(D&=~h2,D&=~Fh,v.suspendedLanes|=D,v.pingedLanes&=~D,v=v.expirationTimes;0<D;){var Q=31-ns(D),H=1<<Q;v[Q]=-1,D&=~H}}function w2(v){if(xr&48)throw Error(c(327));if(vu(),v===so&&v.expiredLanes&Ns){var D=Ns,Q=id(v,D);Rh&Fh&&(D=ua(v,D),Q=id(v,D))}else D=ua(v,0),Q=id(v,D);if(v.tag!==0&&Q===2&&(xr|=64,v.hydrate&&(v.hydrate=!1,Ts(v.containerInfo)),D=Bl(v),D!==0&&(Q=id(v,D))),Q===1)throw Q=Uy,Oh(v,0),Nh(v,D),ga(v,bt()),Q;return v.finishedWork=v.current.alternate,v.finishedLanes=D,$A(v),ga(v,bt()),null}function zL(){if(wu!==null){var v=wu;wu=null,v.forEach(function(D){D.expiredLanes|=24&D.pendingLanes,ga(D,bt())})}Tn()}function yP(v,D){var Q=xr;xr|=1;try{return v(D)}finally{xr=Q,xr===0&&(bf(),Tn())}}function EP(v,D){var Q=xr;if(Q&48)return v(D);xr|=1;try{if(v)return li(99,v.bind(null,D))}finally{xr=Q,Tn()}}function qy(v,D){xn(p2,ZA),ZA|=D,Rh|=D}function B2(){ZA=p2.current,Rt(p2)}function Oh(v,D){v.finishedWork=null,v.finishedLanes=0;var Q=v.timeoutHandle;if(Q!==b&&(v.timeoutHandle=b,w(Q)),Xi!==null)for(Q=Xi.return;Q!==null;){var H=Q;switch(H.tag){case 1:H=H.type.childContextTypes,H!=null&&Au();break;case 3:du(),Rt(Li),Rt(Gi),yu();break;case 5:wt(H);break;case 4:du();break;case 13:Rt(di);break;case 19:Rt(di);break;case 10:Og(H);break;case 23:case 24:B2()}Q=Q.return}so=v,Xi=Su(v.current,null),Ns=ZA=Rh=D,ws=0,Uy=null,h2=Fh=Zg=0}function IP(v,D){do{var Q=Xi;try{if(Fg(),If.current=kt,WA){for(var H=Gn.memoizedState;H!==null;){var V=H.queue;V!==null&&(V.pending=null),H=H.next}WA=!1}if(Eu=0,Pi=is=Gn=null,Cf=!1,f2.current=null,Q===null||Q.return===null){ws=1,Uy=D,Xi=null;break}e:{var ne=v,Se=Q.return,_e=Q,pt=D;if(D=Ns,_e.flags|=2048,_e.firstEffect=_e.lastEffect=null,pt!==null&&typeof pt==\"object\"&&typeof pt.then==\"function\"){var Wt=pt;if(!(_e.mode&2)){var Sr=_e.alternate;Sr?(_e.updateQueue=Sr.updateQueue,_e.memoizedState=Sr.memoizedState,_e.lanes=Sr.lanes):(_e.updateQueue=null,_e.memoizedState=null)}var Lr=(di.current&1)!==0,Zt=Se;do{var zn;if(zn=Zt.tag===13){var yi=Zt.memoizedState;if(yi!==null)zn=yi.dehydrated!==null;else{var za=Zt.memoizedProps;zn=za.fallback===void 0?!1:za.unstable_avoidThisFallback!==!0?!0:!Lr}}if(zn){var et=Zt.updateQueue;if(et===null){var qe=new Set;qe.add(Wt),Zt.updateQueue=qe}else et.add(Wt);if(!(Zt.mode&2)){if(Zt.flags|=64,_e.flags|=16384,_e.flags&=-2981,_e.tag===1)if(_e.alternate===null)_e.tag=17;else{var gt=Dl(-1,1);gt.tag=2,bl(_e,gt)}_e.lanes|=1;break e}pt=void 0,_e=D;var Xt=ne.pingCache;if(Xt===null?(Xt=ne.pingCache=new WL,pt=new Set,Xt.set(Wt,pt)):(pt=Xt.get(Wt),pt===void 0&&(pt=new Set,Xt.set(Wt,pt))),!pt.has(_e)){pt.add(_e);var Dr=DP.bind(null,ne,Wt,_e);Wt.then(Dr,Dr)}Zt.flags|=4096,Zt.lanes=D;break e}Zt=Zt.return}while(Zt!==null);pt=Error((g(_e.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.`)}ws!==5&&(ws=2),pt=Yg(pt,_e),Zt=Se;do{switch(Zt.tag){case 3:ne=pt,Zt.flags|=4096,D&=-D,Zt.lanes|=D;var Zn=i2(Zt,ne,D);Iy(Zt,Zn);break e;case 1:ne=pt;var kr=Zt.type,Rn=Zt.stateNode;if(!(Zt.flags&64)&&(typeof kr.getDerivedStateFromError==\"function\"||Rn!==null&&typeof Rn.componentDidCatch==\"function\"&&(hc===null||!hc.has(Rn)))){Zt.flags|=4096,D&=-D,Zt.lanes|=D;var _n=Jg(Zt,ne,D);Iy(Zt,_n);break e}}Zt=Zt.return}while(Zt!==null)}BP(Q)}catch(zr){D=zr,Xi===Q&&Q!==null&&(Xi=Q=Q.return);continue}break}while(!0)}function CP(){var v=My.current;return My.current=kt,v===null?kt:v}function id(v,D){var Q=xr;xr|=16;var H=CP();so===v&&Ns===D||Oh(v,D);do try{XL();break}catch(V){IP(v,V)}while(!0);if(Fg(),xr=Q,My.current=H,Xi!==null)throw Error(c(261));return so=null,Ns=0,ws}function XL(){for(;Xi!==null;)wP(Xi)}function ZL(){for(;Xi!==null&&!vl();)wP(Xi)}function wP(v){var D=bP(v.alternate,v,ZA);v.memoizedProps=v.pendingProps,D===null?BP(v):Xi=D,f2.current=null}function BP(v){var D=v;do{var Q=D.alternate;if(v=D.return,D.flags&2048){if(Q=qL(D),Q!==null){Q.flags&=2047,Xi=Q;return}v!==null&&(v.firstEffect=v.lastEffect=null,v.flags|=2048)}else{if(Q=jL(Q,D,ZA),Q!==null){Xi=Q;return}if(Q=D,Q.tag!==24&&Q.tag!==23||Q.memoizedState===null||ZA&1073741824||!(Q.mode&4)){for(var H=0,V=Q.child;V!==null;)H|=V.lanes|V.childLanes,V=V.sibling;Q.childLanes=H}v!==null&&!(v.flags&2048)&&(v.firstEffect===null&&(v.firstEffect=D.firstEffect),D.lastEffect!==null&&(v.lastEffect!==null&&(v.lastEffect.nextEffect=D.firstEffect),v.lastEffect=D.lastEffect),1<D.flags&&(v.lastEffect!==null?v.lastEffect.nextEffect=D:v.firstEffect=D,v.lastEffect=D))}if(D=D.sibling,D!==null){Xi=D;return}Xi=D=v}while(D!==null);ws===0&&(ws=5)}function $A(v){var D=tr();return li(99,$L.bind(null,v,D)),null}function $L(v,D){do vu();while($g!==null);if(xr&48)throw Error(c(327));var Q=v.finishedWork;if(Q===null)return null;if(v.finishedWork=null,v.finishedLanes=0,Q===v.current)throw Error(c(177));v.callbackNode=null;var H=Q.lanes|Q.childLanes,V=H,ne=v.pendingLanes&~V;v.pendingLanes=V,v.suspendedLanes=0,v.pingedLanes=0,v.expiredLanes&=V,v.mutableReadLanes&=V,v.entangledLanes&=V,V=v.entanglements;for(var Se=v.eventTimes,_e=v.expirationTimes;0<ne;){var pt=31-ns(ne),Wt=1<<pt;V[pt]=0,Se[pt]=-1,_e[pt]=-1,ne&=~Wt}if(wu!==null&&!(H&24)&&wu.has(v)&&wu.delete(v),v===so&&(Xi=so=null,Ns=0),1<Q.flags?Q.lastEffect!==null?(Q.lastEffect.nextEffect=Q,H=Q.firstEffect):H=Q:H=Q.firstEffect,H!==null){V=xr,xr|=32,f2.current=null,rd=rt(v.containerInfo),nd=!1,sr=H;do try{eM()}catch(qe){if(sr===null)throw Error(c(330));xf(sr,qe),sr=sr.nextEffect}while(sr!==null);rd=null,sr=H;do try{for(Se=v;sr!==null;){var Sr=sr.flags;if(Sr&16&&F&&Af(sr.stateNode),Sr&128){var Lr=sr.alternate;if(Lr!==null){var Zt=Lr.ref;Zt!==null&&(typeof Zt==\"function\"?Zt(null):Zt.current=null)}}switch(Sr&1038){case 2:hP(sr),sr.flags&=-3;break;case 6:hP(sr),sr.flags&=-3,l2(sr.alternate,sr);break;case 1024:sr.flags&=-1025;break;case 1028:sr.flags&=-1025,l2(sr.alternate,sr);break;case 4:l2(sr.alternate,sr);break;case 8:_e=Se,ne=sr,F?gP(_e,ne):AP(_e,ne);var zn=ne.alternate;Qy(ne),zn!==null&&Qy(zn)}sr=sr.nextEffect}}catch(qe){if(sr===null)throw Error(c(330));xf(sr,qe),sr=sr.nextEffect}while(sr!==null);nd&&lt(),Fe(v.containerInfo),v.current=Q,sr=H;do try{for(Sr=v;sr!==null;){var yi=sr.flags;if(yi&36&&uP(Sr,sr.alternate,sr),yi&128){Lr=void 0;var za=sr.ref;if(za!==null){var et=sr.stateNode;switch(sr.tag){case 5:Lr=Re(et);break;default:Lr=et}typeof za==\"function\"?za(Lr):za.current=Lr}}sr=sr.nextEffect}}catch(qe){if(sr===null)throw Error(c(330));xf(sr,qe),sr=sr.nextEffect}while(sr!==null);sr=null,te(),xr=V}else v.current=Q;if(Pf)Pf=!1,$g=v,ed=D;else for(sr=H;sr!==null;)D=sr.nextEffect,sr.nextEffect=null,sr.flags&8&&(yi=sr,yi.sibling=null,yi.stateNode=null),sr=D;if(H=v.pendingLanes,H===0&&(hc=null),H===1?v===C2?td++:(td=0,C2=v):td=0,Q=Q.stateNode,Ua&&typeof Ua.onCommitFiberRoot==\"function\")try{Ua.onCommitFiberRoot($e,Q,void 0,(Q.current.flags&64)===64)}catch{}if(ga(v,bt()),_y)throw _y=!1,v=y2,y2=null,v;return xr&8||Tn(),null}function eM(){for(;sr!==null;){var v=sr.alternate;nd||rd===null||(sr.flags&8?De(sr,rd)&&(nd=!0,Te()):sr.tag===13&&VL(v,sr)&&De(sr,rd)&&(nd=!0,Te()));var D=sr.flags;D&256&&xy(v,sr),!(D&512)||Pf||(Pf=!0,qi(97,function(){return vu(),null})),sr=sr.nextEffect}}function vu(){if(ed!==90){var v=97<ed?97:ed;return ed=90,li(v,rM)}return!1}function tM(v,D){E2.push(D,v),Pf||(Pf=!0,qi(97,function(){return vu(),null}))}function vP(v,D){I2.push(D,v),Pf||(Pf=!0,qi(97,function(){return vu(),null}))}function rM(){if($g===null)return!1;var v=$g;if($g=null,xr&48)throw Error(c(331));var D=xr;xr|=32;var Q=I2;I2=[];for(var H=0;H<Q.length;H+=2){var V=Q[H],ne=Q[H+1],Se=V.destroy;if(V.destroy=void 0,typeof Se==\"function\")try{Se()}catch(pt){if(ne===null)throw Error(c(330));xf(ne,pt)}}for(Q=E2,E2=[],H=0;H<Q.length;H+=2){V=Q[H],ne=Q[H+1];try{var _e=V.create;V.destroy=_e()}catch(pt){if(ne===null)throw Error(c(330));xf(ne,pt)}}for(_e=v.current.firstEffect;_e!==null;)v=_e.nextEffect,_e.nextEffect=null,_e.flags&8&&(_e.sibling=null,_e.stateNode=null),_e=v;return xr=D,Tn(),!0}function SP(v,D,Q){D=Yg(Q,D),D=i2(v,D,1),bl(v,D),D=ko(),v=Gy(v,1),v!==null&&(Ha(v,1,D),ga(v,D))}function xf(v,D){if(v.tag===3)SP(v,v,D);else for(var Q=v.return;Q!==null;){if(Q.tag===3){SP(Q,v,D);break}else if(Q.tag===1){var H=Q.stateNode;if(typeof Q.type.getDerivedStateFromError==\"function\"||typeof H.componentDidCatch==\"function\"&&(hc===null||!hc.has(H))){v=Yg(D,v);var V=Jg(Q,v,1);if(bl(Q,V),V=ko(),Q=Gy(Q,1),Q!==null)Ha(Q,1,V),ga(Q,V);else if(typeof H.componentDidCatch==\"function\"&&(hc===null||!hc.has(H)))try{H.componentDidCatch(D,v)}catch{}break}}Q=Q.return}}function DP(v,D,Q){var H=v.pingCache;H!==null&&H.delete(D),D=ko(),v.pingedLanes|=v.suspendedLanes&Q,so===v&&(Ns&Q)===Q&&(ws===4||ws===3&&(Ns&62914560)===Ns&&500>bt()-d2?Oh(v,0):h2|=Q),ga(v,D)}function nM(v,D){var Q=v.stateNode;Q!==null&&Q.delete(D),D=0,D===0&&(D=v.mode,D&2?D&4?(Bu===0&&(Bu=Rh),D=kn(62914560&~Bu),D===0&&(D=4194304)):D=tr()===99?1:2:D=1),Q=ko(),v=Gy(v,D),v!==null&&(Ha(v,D,Q),ga(v,Q))}var bP;bP=function(v,D,Q){var H=D.lanes;if(v!==null)if(v.memoizedProps!==D.pendingProps||Li.current)Je=!0;else if(Q&H)Je=!!(v.flags&16384);else{switch(Je=!1,D.tag){case 3:by(D),jg();break;case 5:Ef(D);break;case 1:Kn(D.type)&&La(D);break;case 4:Ug(D,D.stateNode.containerInfo);break;case 10:Ng(D,D.memoizedProps.value);break;case 13:if(D.memoizedState!==null)return Q&D.child.childLanes?r2(v,D,Q):(xn(di,di.current&1),D=qn(v,D,Q),D!==null?D.sibling:null);xn(di,di.current&1);break;case 19:if(H=(Q&D.childLanes)!==0,v.flags&64){if(H)return cP(v,D,Q);D.flags|=64}var V=D.memoizedState;if(V!==null&&(V.rendering=null,V.tail=null,V.lastEffect=null),xn(di,di.current),H)break;return null;case 23:case 24:return D.lanes=0,mi(v,D,Q)}return qn(v,D,Q)}else Je=!1;switch(D.lanes=0,D.tag){case 2:if(H=D.type,v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,V=dn(D,Gi.current),df(D,Q),V=qg(null,D,H,v,V,Q),D.flags|=1,typeof V==\"object\"&&V!==null&&typeof V.render==\"function\"&&V.$$typeof===void 0){if(D.tag=1,D.memoizedState=null,D.updateQueue=null,Kn(H)){var ne=!0;La(D)}else ne=!1;D.memoizedState=V.state!==null&&V.state!==void 0?V.state:null,Bh(D);var Se=H.getDerivedStateFromProps;typeof Se==\"function\"&&_A(D,H,Se,v),V.updater=HA,D.stateNode=V,V._reactInternals=D,bo(D,H,v,Q),D=t2(null,D,H,!0,ne,Q)}else D.tag=0,At(null,D,V,Q),D=D.child;return D;case 16:V=D.elementType;e:{switch(v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),v=D.pendingProps,ne=V._init,V=ne(V._payload),D.type=V,ne=D.tag=sM(V),v=So(V,v),ne){case 0:D=JA(null,D,V,v,Q);break e;case 1:D=lP(null,D,V,v,Q);break e;case 11:D=dr(null,D,V,v,Q);break e;case 14:D=vr(null,D,V,So(V.type,v),H,Q);break e}throw Error(c(306,V,\"\"))}return D;case 0:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:So(H,V),JA(v,D,H,V,Q);case 1:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:So(H,V),lP(v,D,H,V,Q);case 3:if(by(D),H=D.updateQueue,v===null||H===null)throw Error(c(282));if(H=D.pendingProps,V=D.memoizedState,V=V!==null?V.element:null,Lg(v,D),UA(D,H,null,Q),H=D.memoizedState.element,H===V)jg(),D=qn(v,D,Q);else{if(V=D.stateNode,(ne=V.hydrate)&&(X?(Aa=cu(D.stateNode.containerInfo),Wa=D,ne=Ya=!0):ne=!1),ne){if(X&&(v=V.mutableSourceEagerHydrationData,v!=null))for(V=0;V<v.length;V+=2)ne=v[V],Se=v[V+1],y?ne._workInProgressVersionPrimary=Se:ne._workInProgressVersionSecondary=Se,mu.push(ne);for(Q=e2(D,null,H,Q),D.child=Q;Q;)Q.flags=Q.flags&-3|1024,Q=Q.sibling}else At(v,D,H,Q),jg();D=D.child}return D;case 5:return Ef(D),v===null&&Hg(D),H=D.type,V=D.pendingProps,ne=v!==null?v.memoizedProps:null,Se=V.children,it(H,V)?Se=null:ne!==null&&it(H,ne)&&(D.flags|=16),Cs(v,D),At(v,D,Se,Q),D.child;case 6:return v===null&&Hg(D),null;case 13:return r2(v,D,Q);case 4:return Ug(D,D.stateNode.containerInfo),H=D.pendingProps,v===null?D.child=Mg(D,null,H,Q):At(v,D,H,Q),D.child;case 11:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:So(H,V),dr(v,D,H,V,Q);case 7:return At(v,D,D.pendingProps,Q),D.child;case 8:return At(v,D,D.pendingProps.children,Q),D.child;case 12:return At(v,D,D.pendingProps.children,Q),D.child;case 10:e:{if(H=D.type._context,V=D.pendingProps,Se=D.memoizedProps,ne=V.value,Ng(D,ne),Se!==null){var _e=Se.value;if(ne=vo(_e,ne)?0:(typeof H._calculateChangedBits==\"function\"?H._calculateChangedBits(_e,ne):1073741823)|0,ne===0){if(Se.children===V.children&&!Li.current){D=qn(v,D,Q);break e}}else for(_e=D.child,_e!==null&&(_e.return=D);_e!==null;){var pt=_e.dependencies;if(pt!==null){Se=_e.child;for(var Wt=pt.firstContext;Wt!==null;){if(Wt.context===H&&Wt.observedBits&ne){_e.tag===1&&(Wt=Dl(-1,Q&-Q),Wt.tag=2,bl(_e,Wt)),_e.lanes|=Q,Wt=_e.alternate,Wt!==null&&(Wt.lanes|=Q),Ey(_e.return,Q),pt.lanes|=Q;break}Wt=Wt.next}}else Se=_e.tag===10&&_e.type===D.type?null:_e.child;if(Se!==null)Se.return=_e;else for(Se=_e;Se!==null;){if(Se===D){Se=null;break}if(_e=Se.sibling,_e!==null){_e.return=Se.return,Se=_e;break}Se=Se.return}_e=Se}}At(v,D,V.children,Q),D=D.child}return D;case 9:return V=D.type,ne=D.pendingProps,H=ne.children,df(D,Q),V=Do(V,ne.unstable_observedBits),H=H(V),D.flags|=1,At(v,D,H,Q),D.child;case 14:return V=D.type,ne=So(V,D.pendingProps),ne=So(V.type,ne),vr(v,D,V,ne,H,Q);case 15:return Un(v,D,D.type,D.pendingProps,H,Q);case 17:return H=D.type,V=D.pendingProps,V=D.elementType===H?V:So(H,V),v!==null&&(v.alternate=null,D.alternate=null,D.flags|=2),D.tag=1,Kn(H)?(v=!0,La(D)):v=!1,df(D,Q),xt(D,H,V),bo(D,H,V,Q),t2(null,D,H,!0,v,Q);case 19:return cP(v,D,Q);case 23:return mi(v,D,Q);case 24:return mi(v,D,Q)}throw Error(c(156,D.tag))};var Wy={current:!1},Os=n.unstable_flushAllWithoutAsserting,PP=typeof Os==\"function\";function v2(){if(Os!==void 0)return Os();for(var v=!1;vu();)v=!0;return v}function da(v){try{v2(),JL(function(){v2()?da(v):v()})}catch(D){v(D)}}var Ja=0,Yy=!1;function iM(v,D,Q,H){this.tag=v,this.key=Q,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=D,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=H,this.flags=0,this.lastEffect=this.firstEffect=this.nextEffect=null,this.childLanes=this.lanes=0,this.alternate=null}function Ka(v,D,Q,H){return new iM(v,D,Q,H)}function S2(v){return v=v.prototype,!(!v||!v.isReactComponent)}function sM(v){if(typeof v==\"function\")return S2(v)?1:0;if(v!=null){if(v=v.$$typeof,v===R)return 11;if(v===W)return 14}return 2}function Su(v,D){var Q=v.alternate;return Q===null?(Q=Ka(v.tag,D,v.key,v.mode),Q.elementType=v.elementType,Q.type=v.type,Q.stateNode=v.stateNode,Q.alternate=v,v.alternate=Q):(Q.pendingProps=D,Q.type=v.type,Q.flags=0,Q.nextEffect=null,Q.firstEffect=null,Q.lastEffect=null),Q.childLanes=v.childLanes,Q.lanes=v.lanes,Q.child=v.child,Q.memoizedProps=v.memoizedProps,Q.memoizedState=v.memoizedState,Q.updateQueue=v.updateQueue,D=v.dependencies,Q.dependencies=D===null?null:{lanes:D.lanes,firstContext:D.firstContext},Q.sibling=v.sibling,Q.index=v.index,Q.ref=v.ref,Q}function sd(v,D,Q,H,V,ne){var Se=2;if(H=v,typeof v==\"function\")S2(v)&&(Se=1);else if(typeof v==\"string\")Se=5;else e:switch(v){case E:return kf(Q.children,V,ne,D);case ue:Se=8,V|=16;break;case C:Se=8,V|=1;break;case S:return v=Ka(12,Q,D,V|8),v.elementType=S,v.type=S,v.lanes=ne,v;case N:return v=Ka(13,Q,D,V),v.type=N,v.elementType=N,v.lanes=ne,v;case U:return v=Ka(19,Q,D,V),v.elementType=U,v.lanes=ne,v;case le:return D2(Q,V,ne,D);case me:return v=Ka(24,Q,D,V),v.elementType=me,v.lanes=ne,v;default:if(typeof v==\"object\"&&v!==null)switch(v.$$typeof){case P:Se=10;break e;case I:Se=9;break e;case R:Se=11;break e;case W:Se=14;break e;case ee:Se=16,H=null;break e;case ie:Se=22;break e}throw Error(c(130,v==null?v:typeof v,\"\"))}return D=Ka(Se,Q,D,V),D.elementType=v,D.type=H,D.lanes=ne,D}function kf(v,D,Q,H){return v=Ka(7,v,H,D),v.lanes=Q,v}function D2(v,D,Q,H){return v=Ka(23,v,H,D),v.elementType=le,v.lanes=Q,v}function b2(v,D,Q){return v=Ka(6,v,null,D),v.lanes=Q,v}function Qo(v,D,Q){return D=Ka(4,v.children!==null?v.children:[],v.key,D),D.lanes=Q,D.stateNode={containerInfo:v.containerInfo,pendingChildren:null,implementation:v.implementation},D}function oM(v,D,Q){this.tag=D,this.containerInfo=v,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=b,this.pendingContext=this.context=null,this.hydrate=Q,this.callbackNode=null,this.callbackPriority=0,this.eventTimes=fa(0),this.expirationTimes=fa(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=fa(0),X&&(this.mutableSourceEagerHydrationData=null)}function xP(v){var D=v._reactInternals;if(D===void 0)throw typeof v.render==\"function\"?Error(c(188)):Error(c(268,Object.keys(v)));return v=se(D),v===null?null:v.stateNode}function kP(v,D){if(v=v.memoizedState,v!==null&&v.dehydrated!==null){var Q=v.retryLane;v.retryLane=Q!==0&&Q<D?Q:D}}function Vy(v,D){kP(v,D),(v=v.alternate)&&kP(v,D)}function aM(v){return v=se(v),v===null?null:v.stateNode}function lM(){return null}return r.IsThisRendererActing=Wy,r.act=function(v){function D(){Ja--,A2.current=Q,Wy.current=H}Yy===!1&&(Yy=!0,console.error(\"act(...) is not supported in production builds of React, and might not behave as expected.\")),Ja++;var Q=A2.current,H=Wy.current;A2.current=!0,Wy.current=!0;try{var V=yP(v)}catch(ne){throw D(),ne}if(V!==null&&typeof V==\"object\"&&typeof V.then==\"function\")return{then:function(ne,Se){V.then(function(){1<Ja||PP===!0&&Q===!0?(D(),ne()):da(function(_e){D(),_e?Se(_e):ne()})},function(_e){D(),Se(_e)})}};try{Ja!==1||PP!==!1&&Q!==!1||v2(),D()}catch(ne){throw D(),ne}return{then:function(ne){ne()}}},r.attemptContinuousHydration=function(v){if(v.tag===13){var D=ko();Tl(v,67108864,D),Vy(v,67108864)}},r.attemptHydrationAtCurrentPriority=function(v){if(v.tag===13){var D=ko(),Q=Bs(v);Tl(v,Q,D),Vy(v,Q)}},r.attemptSynchronousHydration=function(v){switch(v.tag){case 3:var D=v.stateNode;if(D.hydrate){var Q=ca(D.pendingLanes);D.expiredLanes|=Q&D.pendingLanes,ga(D,bt()),!(xr&48)&&(bf(),Tn())}break;case 13:var H=ko();EP(function(){return Tl(v,1,H)}),Vy(v,4)}},r.attemptUserBlockingHydration=function(v){if(v.tag===13){var D=ko();Tl(v,4,D),Vy(v,4)}},r.batchedEventUpdates=function(v,D){var Q=xr;xr|=2;try{return v(D)}finally{xr=Q,xr===0&&(bf(),Tn())}},r.batchedUpdates=yP,r.createComponentSelector=function(v){return{$$typeof:Ty,value:v}},r.createContainer=function(v,D,Q){return v=new oM(v,D,Q),D=Ka(3,null,null,D===2?7:D===1?3:0),v.current=D,D.stateNode=v,Bh(D),v},r.createHasPsuedoClassSelector=function(v){return{$$typeof:Ry,value:v}},r.createPortal=function(v,D,Q){var H=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:h,key:H==null?null:\"\"+H,children:v,containerInfo:D,implementation:Q}},r.createRoleSelector=function(v){return{$$typeof:Fy,value:v}},r.createTestNameSelector=function(v){return{$$typeof:zg,value:v}},r.createTextSelector=function(v){return{$$typeof:Ny,value:v}},r.deferredUpdates=function(v){return li(97,v)},r.discreteUpdates=function(v,D,Q,H,V){var ne=xr;xr|=4;try{return li(98,v.bind(null,D,Q,H,V))}finally{xr=ne,xr===0&&(bf(),Tn())}},r.findAllNodes=u2,r.findBoundingRects=function(v,D){if(!qt)throw Error(c(363));D=u2(v,D),v=[];for(var Q=0;Q<D.length;Q++)v.push(Pt(D[Q]));for(D=v.length-1;0<D;D--){Q=v[D];for(var H=Q.x,V=H+Q.width,ne=Q.y,Se=ne+Q.height,_e=D-1;0<=_e;_e--)if(D!==_e){var pt=v[_e],Wt=pt.x,Sr=Wt+pt.width,Lr=pt.y,Zt=Lr+pt.height;if(H>=Wt&&ne>=Lr&&V<=Sr&&Se<=Zt){v.splice(D,1);break}else if(H!==Wt||Q.width!==pt.width||Zt<ne||Lr>Se){if(!(ne!==Lr||Q.height!==pt.height||Sr<H||Wt>V)){Wt>H&&(pt.width+=Wt-H,pt.x=H),Sr<V&&(pt.width=V-Wt),v.splice(D,1);break}}else{Lr>ne&&(pt.height+=Lr-ne,pt.y=ne),Zt<Se&&(pt.height=Se-Lr),v.splice(D,1);break}}}return v},r.findHostInstance=xP,r.findHostInstanceWithNoPortals=function(v){return v=Z(v),v===null?null:v.tag===20?v.stateNode.instance:v.stateNode},r.findHostInstanceWithWarning=function(v){return xP(v)},r.flushControlled=function(v){var D=xr;xr|=1;try{li(99,v)}finally{xr=D,xr===0&&(bf(),Tn())}},r.flushDiscreteUpdates=function(){!(xr&49)&&(zL(),vu())},r.flushPassiveEffects=vu,r.flushSync=EP,r.focusWithin=function(v,D){if(!qt)throw Error(c(363));for(v=Oy(v),D=c2(v,D),D=Array.from(D),v=0;v<D.length;){var Q=D[v++];if(!Pr(Q)){if(Q.tag===5&&Or(Q.stateNode))return!0;for(Q=Q.child;Q!==null;)D.push(Q),Q=Q.sibling}}return!1},r.getCurrentUpdateLanePriority=function(){return lc},r.getFindAllNodesFailureDescription=function(v,D){if(!qt)throw Error(c(363));var Q=0,H=[];v=[Oy(v),0];for(var V=0;V<v.length;){var ne=v[V++],Se=v[V++],_e=D[Se];if((ne.tag!==5||!Pr(ne))&&(Sf(ne,_e)&&(H.push(Df(_e)),Se++,Se>Q&&(Q=Se)),Se<D.length))for(ne=ne.child;ne!==null;)v.push(ne,Se),ne=ne.sibling}if(Q<D.length){for(v=[];Q<D.length;Q++)v.push(Df(D[Q]));return`findAllNodes was able to match part of the selector:\n  `+(H.join(\" > \")+`\n\nNo matching component was found for:\n  `)+v.join(\" > \")}return null},r.getPublicRootInstance=function(v){if(v=v.current,!v.child)return null;switch(v.child.tag){case 5:return Re(v.child.stateNode);default:return v.child.stateNode}},r.injectIntoDevTools=function(v){if(v={bundleType:v.bundleType,version:v.version,rendererPackageName:v.rendererPackageName,rendererConfig:v.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:f.ReactCurrentDispatcher,findHostInstanceByFiber:aM,findFiberByHostInstance:v.findFiberByHostInstance||lM,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null},typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>\"u\")v=!1;else{var D=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!D.isDisabled&&D.supportsFiber)try{$e=D.inject(v),Ua=D}catch{}v=!0}return v},r.observeVisibleRects=function(v,D,Q,H){if(!qt)throw Error(c(363));v=u2(v,D);var V=on(v,Q,H).disconnect;return{disconnect:function(){V()}}},r.registerMutableSourceForHydration=function(v,D){var Q=D._getVersion;Q=Q(D._source),v.mutableSourceEagerHydrationData==null?v.mutableSourceEagerHydrationData=[D,Q]:v.mutableSourceEagerHydrationData.push(D,Q)},r.runWithPriority=function(v,D){var Q=lc;try{return lc=v,D()}finally{lc=Q}},r.shouldSuspend=function(){return!1},r.unbatchedUpdates=function(v,D){var Q=xr;xr&=-2,xr|=8;try{return v(D)}finally{xr=Q,xr===0&&(bf(),Tn())}},r.updateContainer=function(v,D,Q,H){var V=D.current,ne=ko(),Se=Bs(V);e:if(Q){Q=Q._reactInternals;t:{if(we(Q)!==Q||Q.tag!==1)throw Error(c(170));var _e=Q;do{switch(_e.tag){case 3:_e=_e.stateNode.context;break t;case 1:if(Kn(_e.type)){_e=_e.stateNode.__reactInternalMemoizedMergedChildContext;break t}}_e=_e.return}while(_e!==null);throw Error(c(171))}if(Q.tag===1){var pt=Q.type;if(Kn(pt)){Q=Oa(Q,pt,_e);break e}}Q=_e}else Q=la;return D.context===null?D.context=Q:D.pendingContext=Q,D=Dl(ne,Se),D.payload={element:v},H=H===void 0?null:H,H!==null&&(D.callback=H),bl(V,D),Tl(V,Se,ne),Se},r}});var Swe=_((vKt,vwe)=>{\"use strict\";vwe.exports=Bwe()});var bwe=_((SKt,Dwe)=>{\"use strict\";var Spt={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};Dwe.exports=Spt});var Qwe=_((DKt,kwe)=>{\"use strict\";var Dpt=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(t[s]=r[s])}return t},FF=function(){function t(e,r){for(var s=0;s<r.length;s++){var a=r[s];a.enumerable=a.enumerable||!1,a.configurable=!0,\"value\"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(e,r,s){return r&&t(e.prototype,r),s&&t(e,s),e}}();function V9(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function J9(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}var tf=bwe(),bpt=function(){function t(e,r,s,a,n,c){J9(this,t),this.left=e,this.right=r,this.top=s,this.bottom=a,this.width=n,this.height=c}return FF(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}(),Pwe=function(){FF(t,null,[{key:\"fromJS\",value:function(r){var s=r.width,a=r.height;return new t(s,a)}}]);function t(e,r){J9(this,t),this.width=e,this.height=r}return FF(t,[{key:\"fromJS\",value:function(r){r(this.width,this.height)}},{key:\"toString\",value:function(){return\"<Size#\"+this.width+\"x\"+this.height+\">\"}}]),t}(),xwe=function(){function t(e,r){J9(this,t),this.unit=e,this.value=r}return FF(t,[{key:\"fromJS\",value:function(r){r(this.unit,this.value)}},{key:\"toString\",value:function(){switch(this.unit){case tf.UNIT_POINT:return String(this.value);case tf.UNIT_PERCENT:return this.value+\"%\";case tf.UNIT_AUTO:return\"auto\";default:return this.value+\"?\"}}},{key:\"valueOf\",value:function(){return this.value}}]),t}();kwe.exports=function(t,e){function r(c,f,p){var h=c[f];c[f]=function(){for(var E=arguments.length,C=Array(E),S=0;S<E;S++)C[S]=arguments[S];return p.call.apply(p,[this,h].concat(C))}}for(var s=[\"setPosition\",\"setMargin\",\"setFlexBasis\",\"setWidth\",\"setHeight\",\"setMinWidth\",\"setMinHeight\",\"setMaxWidth\",\"setMaxHeight\",\"setPadding\"],a=function(){var f,p=s[n],h=(f={},V9(f,tf.UNIT_POINT,e.Node.prototype[p]),V9(f,tf.UNIT_PERCENT,e.Node.prototype[p+\"Percent\"]),V9(f,tf.UNIT_AUTO,e.Node.prototype[p+\"Auto\"]),f);r(e.Node.prototype,p,function(E){for(var C=arguments.length,S=Array(C>1?C-1:0),P=1;P<C;P++)S[P-1]=arguments[P];var I=S.pop(),R=void 0,N=void 0;if(I===\"auto\")R=tf.UNIT_AUTO,N=void 0;else if(I instanceof xwe)R=I.unit,N=I.valueOf();else if(R=typeof I==\"string\"&&I.endsWith(\"%\")?tf.UNIT_PERCENT:tf.UNIT_POINT,N=parseFloat(I),!Number.isNaN(I)&&Number.isNaN(N))throw new Error(\"Invalid value \"+I+\" for \"+p);if(!h[R])throw new Error('Failed to execute \"'+p+`\": Unsupported unit '`+I+\"'\");if(N!==void 0){var U;return(U=h[R]).call.apply(U,[this].concat(S,[N]))}else{var W;return(W=h[R]).call.apply(W,[this].concat(S))}})},n=0;n<s.length;n++)a();return r(e.Config.prototype,\"free\",function(){e.Config.destroy(this)}),r(e.Node,\"create\",function(c,f){return f?e.Node.createWithConfig(f):e.Node.createDefault()}),r(e.Node.prototype,\"free\",function(){e.Node.destroy(this)}),r(e.Node.prototype,\"freeRecursive\",function(){for(var c=0,f=this.getChildCount();c<f;++c)this.getChild(0).freeRecursive();this.free()}),r(e.Node.prototype,\"setMeasureFunc\",function(c,f){return f?c.call(this,function(){return Pwe.fromJS(f.apply(void 0,arguments))}):this.unsetMeasureFunc()}),r(e.Node.prototype,\"calculateLayout\",function(c){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:NaN,p=arguments.length>2&&arguments[2]!==void 0?arguments[2]:NaN,h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:tf.DIRECTION_LTR;return c.call(this,f,p,h)}),Dpt({Config:e.Config,Node:e.Node,Layout:t(\"Layout\",bpt),Size:t(\"Size\",Pwe),Value:t(\"Value\",xwe),getInstanceCount:function(){return e.getInstanceCount.apply(e,arguments)}},tf)}});var Twe=_((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 Ie==\"function\"&&!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_WORKER,ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(ENVIRONMENT_IS_NODE){Module.print||(Module.print=console.log),Module.printErr||(Module.printErr=console.warn);var nodeFS,nodePath;Module.read=function(e,r){nodeFS||(nodeFS={}(\"\")),nodePath||(nodePath={}(\"\")),e=nodePath.normalize(e);var s=nodeFS.readFileSync(e);return r?s:s.toString()},Module.readBinary=function(e){var r=Module.read(e,!0);return r.buffer||(r=new Uint8Array(r)),assert(r.buffer),r},Module.load=function(e){globalEval(read(e))},Module.thisProgram||(process.argv.length>1?Module.thisProgram=process.argv[1].replace(/\\\\/g,\"/\"):Module.thisProgram=\"unknown-program\"),Module.arguments=process.argv.slice(2),typeof module<\"u\"&&(module.exports=Module),Module.inspect=function(){return\"[Emscripten Module object]\"}}else if(ENVIRONMENT_IS_SHELL)Module.print||(Module.print=print),typeof printErr<\"u\"&&(Module.printErr=printErr),typeof read<\"u\"?Module.read=read:Module.read=function(){throw\"no read() available\"},Module.readBinary=function(e){if(typeof readbuffer==\"function\")return new Uint8Array(readbuffer(e));var r=read(e,\"binary\");return assert(typeof r==\"object\"),r},typeof scriptArgs<\"u\"?Module.arguments=scriptArgs:typeof arguments<\"u\"&&(Module.arguments=arguments),typeof quit==\"function\"&&(Module.quit=function(t,e){quit(t)});else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(Module.read=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.send(null),r.responseText},ENVIRONMENT_IS_WORKER&&(Module.readBinary=function(e){var r=new XMLHttpRequest;return r.open(\"GET\",e,!1),r.responseType=\"arraybuffer\",r.send(null),new Uint8Array(r.response)}),Module.readAsync=function(e,r,s){var a=new XMLHttpRequest;a.open(\"GET\",e,!0),a.responseType=\"arraybuffer\",a.onload=function(){a.status==200||a.status==0&&a.response?r(a.response):s()},a.onerror=s,a.send(null)},typeof arguments<\"u\"&&(Module.arguments=arguments),typeof console<\"u\")Module.print||(Module.print=function(e){console.log(e)}),Module.printErr||(Module.printErr=function(e){console.warn(e)});else{var TRY_USE_DUMP=!1;Module.print||(Module.print=TRY_USE_DUMP&&typeof dump<\"u\"?function(t){dump(t)}:function(t){})}ENVIRONMENT_IS_WORKER&&(Module.load=importScripts),typeof Module.setWindowTitle>\"u\"&&(Module.setWindowTitle=function(t){document.title=t})}else throw\"Unknown runtime environment. Where are we?\";function globalEval(t){eval.call(null,t)}!Module.load&&Module.read&&(Module.load=function(e){globalEval(Module.read(e))}),Module.print||(Module.print=function(){}),Module.printErr||(Module.printErr=Module.print),Module.arguments||(Module.arguments=[]),Module.thisProgram||(Module.thisProgram=\"./this.program\"),Module.quit||(Module.quit=function(t,e){throw e}),Module.print=Module.print,Module.printErr=Module.printErr,Module.preRun=[],Module.postRun=[];for(var key in moduleOverrides)moduleOverrides.hasOwnProperty(key)&&(Module[key]=moduleOverrides[key]);moduleOverrides=void 0;var Runtime={setTempRet0:function(t){return tempRet0=t,t},getTempRet0:function(){return tempRet0},stackSave:function(){return STACKTOP},stackRestore:function(t){STACKTOP=t},getNativeTypeSize:function(t){switch(t){case\"i1\":case\"i8\":return 1;case\"i16\":return 2;case\"i32\":return 4;case\"i64\":return 8;case\"float\":return 4;case\"double\":return 8;default:{if(t[t.length-1]===\"*\")return Runtime.QUANTUM_SIZE;if(t[0]===\"i\"){var e=parseInt(t.substr(1));return assert(e%8===0),e/8}else return 0}}},getNativeFieldSize:function(t){return Math.max(Runtime.getNativeTypeSize(t),Runtime.QUANTUM_SIZE)},STACK_ALIGN:16,prepVararg:function(t,e){return e===\"double\"||e===\"i64\"?t&7&&(assert((t&7)===4),t+=4):assert((t&3)===0),t},getAlignSize:function(t,e,r){return!r&&(t==\"i64\"||t==\"double\")?8:t?Math.min(e||(t?Runtime.getNativeFieldSize(t):0),Runtime.QUANTUM_SIZE):Math.min(e,8)},dynCall:function(t,e,r){return r&&r.length?Module[\"dynCall_\"+t].apply(null,[e].concat(r)):Module[\"dynCall_\"+t].call(null,e)},functionPointers:[],addFunction:function(t){for(var e=0;e<Runtime.functionPointers.length;e++)if(!Runtime.functionPointers[e])return Runtime.functionPointers[e]=t,2*(1+e);throw\"Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS.\"},removeFunction:function(t){Runtime.functionPointers[(t-2)/2]=null},warnOnce:function(t){Runtime.warnOnce.shown||(Runtime.warnOnce.shown={}),Runtime.warnOnce.shown[t]||(Runtime.warnOnce.shown[t]=1,Module.printErr(t))},funcWrappers:{},getFuncWrapper:function(t,e){if(t){assert(e),Runtime.funcWrappers[e]||(Runtime.funcWrappers[e]={});var r=Runtime.funcWrappers[e];return r[t]||(e.length===1?r[t]=function(){return Runtime.dynCall(e,t)}:e.length===2?r[t]=function(a){return Runtime.dynCall(e,t,[a])}:r[t]=function(){return Runtime.dynCall(e,t,Array.prototype.slice.call(arguments))}),r[t]}},getCompilerSetting:function(t){throw\"You must build with -s RETAIN_COMPILER_SETTINGS=1 for Runtime.getCompilerSetting or emscripten_get_compiler_setting to work\"},stackAlloc:function(t){var e=STACKTOP;return STACKTOP=STACKTOP+t|0,STACKTOP=STACKTOP+15&-16,e},staticAlloc:function(t){var e=STATICTOP;return STATICTOP=STATICTOP+t|0,STATICTOP=STATICTOP+15&-16,e},dynamicAlloc:function(t){var e=HEAP32[DYNAMICTOP_PTR>>2],r=(e+t+15|0)&-16;if(HEAP32[DYNAMICTOP_PTR>>2]=r,r>=TOTAL_MEMORY){var s=enlargeMemory();if(!s)return HEAP32[DYNAMICTOP_PTR>>2]=e,0}return e},alignMemory:function(t,e){var r=t=Math.ceil(t/(e||16))*(e||16);return r},makeBigInt:function(t,e,r){var s=r?+(t>>>0)+ +(e>>>0)*4294967296:+(t>>>0)+ +(e|0)*4294967296;return s},GLOBAL_BASE:8,QUANTUM_SIZE:4,__dummy__:0};Module.Runtime=Runtime;var ABORT=0,EXITSTATUS=0;function assert(t,e){t||abort(\"Assertion failed: \"+e)}function getCFunc(ident){var func=Module[\"_\"+ident];if(!func)try{func=eval(\"_\"+ident)}catch(t){}return assert(func,\"Cannot call unknown function \"+ident+\" (perhaps LLVM optimizations or closure removed it?)\"),func}var cwrap,ccall;(function(){var JSfuncs={stackSave:function(){Runtime.stackSave()},stackRestore:function(){Runtime.stackRestore()},arrayToC:function(t){var e=Runtime.stackAlloc(t.length);return writeArrayToMemory(t,e),e},stringToC:function(t){var e=0;if(t!=null&&t!==0){var r=(t.length<<2)+1;e=Runtime.stackAlloc(r),stringToUTF8(t,e,r)}return e}},toC={string:JSfuncs.stringToC,array:JSfuncs.arrayToC};ccall=function(e,r,s,a,n){var c=getCFunc(e),f=[],p=0;if(a)for(var h=0;h<a.length;h++){var E=toC[s[h]];E?(p===0&&(p=Runtime.stackSave()),f[h]=E(a[h])):f[h]=a[h]}var C=c.apply(null,f);if(r===\"string\"&&(C=Pointer_stringify(C)),p!==0){if(n&&n.async){EmterpreterAsync.asyncFinalizers.push(function(){Runtime.stackRestore(p)});return}Runtime.stackRestore(p)}return C};var sourceRegex=/^function\\s*[a-zA-Z$_0-9]*\\s*\\(([^)]*)\\)\\s*{\\s*([^*]*?)[\\s;]*(?:return\\s*(.*?)[;\\s]*)?}$/;function parseJSFunc(t){var e=t.toString().match(sourceRegex).slice(1);return{arguments:e[0],body:e[1],returnValue:e[2]}}var JSsource=null;function ensureJSsource(){if(!JSsource){JSsource={};for(var t in JSfuncs)JSfuncs.hasOwnProperty(t)&&(JSsource[t]=parseJSFunc(JSfuncs[t]))}}cwrap=function cwrap(ident,returnType,argTypes){argTypes=argTypes||[];var cfunc=getCFunc(ident),numericArgs=argTypes.every(function(t){return t===\"number\"}),numericRet=returnType!==\"string\";if(numericRet&&numericArgs)return cfunc;var argNames=argTypes.map(function(t,e){return\"$\"+e}),funcstr=\"(function(\"+argNames.join(\",\")+\") {\",nargs=argTypes.length;if(!numericArgs){ensureJSsource(),funcstr+=\"var stack = \"+JSsource.stackSave.body+\";\";for(var i=0;i<nargs;i++){var arg=argNames[i],type=argTypes[i];if(type!==\"number\"){var convertCode=JSsource[type+\"ToC\"];funcstr+=\"var \"+convertCode.arguments+\" = \"+arg+\";\",funcstr+=convertCode.body+\";\",funcstr+=arg+\"=(\"+convertCode.returnValue+\");\"}}}var cfuncname=parseJSFunc(function(){return cfunc}).returnValue;if(funcstr+=\"var ret = \"+cfuncname+\"(\"+argNames.join(\",\")+\");\",!numericRet){var strgfy=parseJSFunc(function(){return Pointer_stringify}).returnValue;funcstr+=\"ret = \"+strgfy+\"(ret);\"}return numericArgs||(ensureJSsource(),funcstr+=JSsource.stackRestore.body.replace(\"()\",\"(stack)\")+\";\"),funcstr+=\"return ret})\",eval(funcstr)}})(),Module.ccall=ccall,Module.cwrap=cwrap;function setValue(t,e,r,s){switch(r=r||\"i8\",r.charAt(r.length-1)===\"*\"&&(r=\"i32\"),r){case\"i1\":HEAP8[t>>0]=e;break;case\"i8\":HEAP8[t>>0]=e;break;case\"i16\":HEAP16[t>>1]=e;break;case\"i32\":HEAP32[t>>2]=e;break;case\"i64\":tempI64=[e>>>0,(tempDouble=e,+Math_abs(tempDouble)>=1?tempDouble>0?(Math_min(+Math_floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math_ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[t>>2]=tempI64[0],HEAP32[t+4>>2]=tempI64[1];break;case\"float\":HEAPF32[t>>2]=e;break;case\"double\":HEAPF64[t>>3]=e;break;default:abort(\"invalid type for setValue: \"+r)}}Module.setValue=setValue;function getValue(t,e,r){switch(e=e||\"i8\",e.charAt(e.length-1)===\"*\"&&(e=\"i32\"),e){case\"i1\":return HEAP8[t>>0];case\"i8\":return HEAP8[t>>0];case\"i16\":return HEAP16[t>>1];case\"i32\":return HEAP32[t>>2];case\"i64\":return HEAP32[t>>2];case\"float\":return HEAPF32[t>>2];case\"double\":return HEAPF64[t>>3];default:abort(\"invalid type for setValue: \"+e)}return null}Module.getValue=getValue;var ALLOC_NORMAL=0,ALLOC_STACK=1,ALLOC_STATIC=2,ALLOC_DYNAMIC=3,ALLOC_NONE=4;Module.ALLOC_NORMAL=ALLOC_NORMAL,Module.ALLOC_STACK=ALLOC_STACK,Module.ALLOC_STATIC=ALLOC_STATIC,Module.ALLOC_DYNAMIC=ALLOC_DYNAMIC,Module.ALLOC_NONE=ALLOC_NONE;function allocate(t,e,r,s){var a,n;typeof t==\"number\"?(a=!0,n=t):(a=!1,n=t.length);var c=typeof e==\"string\"?e:null,f;if(r==ALLOC_NONE?f=s:f=[typeof _malloc==\"function\"?_malloc:Runtime.staticAlloc,Runtime.stackAlloc,Runtime.staticAlloc,Runtime.dynamicAlloc][r===void 0?ALLOC_STATIC:r](Math.max(n,c?1:e.length)),a){var s=f,p;for(assert((f&3)==0),p=f+(n&-4);s<p;s+=4)HEAP32[s>>2]=0;for(p=f+n;s<p;)HEAP8[s++>>0]=0;return f}if(c===\"i8\")return t.subarray||t.slice?HEAPU8.set(t,f):HEAPU8.set(new Uint8Array(t),f),f;for(var h=0,E,C,S;h<n;){var P=t[h];if(typeof P==\"function\"&&(P=Runtime.getFunctionIndex(P)),E=c||e[h],E===0){h++;continue}E==\"i64\"&&(E=\"i32\"),setValue(f+h,P,E),S!==E&&(C=Runtime.getNativeTypeSize(E),S=E),h+=C}return f}Module.allocate=allocate;function getMemory(t){return staticSealed?runtimeInitialized?_malloc(t):Runtime.dynamicAlloc(t):Runtime.staticAlloc(t)}Module.getMemory=getMemory;function Pointer_stringify(t,e){if(e===0||!t)return\"\";for(var r=0,s,a=0;s=HEAPU8[t+a>>0],r|=s,!(s==0&&!e||(a++,e&&a==e)););e||(e=a);var n=\"\";if(r<128){for(var c=1024,f;e>0;)f=String.fromCharCode.apply(String,HEAPU8.subarray(t,t+Math.min(e,c))),n=n?n+f:f,t+=c,e-=c;return n}return Module.UTF8ToString(t)}Module.Pointer_stringify=Pointer_stringify;function AsciiToString(t){for(var e=\"\";;){var r=HEAP8[t++>>0];if(!r)return e;e+=String.fromCharCode(r)}}Module.AsciiToString=AsciiToString;function stringToAscii(t,e){return writeAsciiToMemory(t,e,!1)}Module.stringToAscii=stringToAscii;var UTF8Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf8\"):void 0;function UTF8ArrayToString(t,e){for(var r=e;t[r];)++r;if(r-e>16&&t.subarray&&UTF8Decoder)return UTF8Decoder.decode(t.subarray(e,r));for(var s,a,n,c,f,p,h=\"\";;){if(s=t[e++],!s)return h;if(!(s&128)){h+=String.fromCharCode(s);continue}if(a=t[e++]&63,(s&224)==192){h+=String.fromCharCode((s&31)<<6|a);continue}if(n=t[e++]&63,(s&240)==224?s=(s&15)<<12|a<<6|n:(c=t[e++]&63,(s&248)==240?s=(s&7)<<18|a<<12|n<<6|c:(f=t[e++]&63,(s&252)==248?s=(s&3)<<24|a<<18|n<<12|c<<6|f:(p=t[e++]&63,s=(s&1)<<30|a<<24|n<<18|c<<12|f<<6|p))),s<65536)h+=String.fromCharCode(s);else{var E=s-65536;h+=String.fromCharCode(55296|E>>10,56320|E&1023)}}}Module.UTF8ArrayToString=UTF8ArrayToString;function UTF8ToString(t){return UTF8ArrayToString(HEAPU8,t)}Module.UTF8ToString=UTF8ToString;function stringToUTF8Array(t,e,r,s){if(!(s>0))return 0;for(var a=r,n=r+s-1,c=0;c<t.length;++c){var f=t.charCodeAt(c);if(f>=55296&&f<=57343&&(f=65536+((f&1023)<<10)|t.charCodeAt(++c)&1023),f<=127){if(r>=n)break;e[r++]=f}else if(f<=2047){if(r+1>=n)break;e[r++]=192|f>>6,e[r++]=128|f&63}else if(f<=65535){if(r+2>=n)break;e[r++]=224|f>>12,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=2097151){if(r+3>=n)break;e[r++]=240|f>>18,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else if(f<=67108863){if(r+4>=n)break;e[r++]=248|f>>24,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}else{if(r+5>=n)break;e[r++]=252|f>>30,e[r++]=128|f>>24&63,e[r++]=128|f>>18&63,e[r++]=128|f>>12&63,e[r++]=128|f>>6&63,e[r++]=128|f&63}}return e[r]=0,r-a}Module.stringToUTF8Array=stringToUTF8Array;function stringToUTF8(t,e,r){return stringToUTF8Array(t,HEAPU8,e,r)}Module.stringToUTF8=stringToUTF8;function lengthBytesUTF8(t){for(var e=0,r=0;r<t.length;++r){var s=t.charCodeAt(r);s>=55296&&s<=57343&&(s=65536+((s&1023)<<10)|t.charCodeAt(++r)&1023),s<=127?++e:s<=2047?e+=2:s<=65535?e+=3:s<=2097151?e+=4:s<=67108863?e+=5:e+=6}return e}Module.lengthBytesUTF8=lengthBytesUTF8;var UTF16Decoder=typeof TextDecoder<\"u\"?new TextDecoder(\"utf-16le\"):void 0;function demangle(t){var e=Module.___cxa_demangle||Module.__cxa_demangle;if(e){try{var r=t.substr(1),s=lengthBytesUTF8(r)+1,a=_malloc(s);stringToUTF8(r,a,s);var n=_malloc(4),c=e(a,0,0,n);if(getValue(n,\"i32\")===0&&c)return Pointer_stringify(c)}catch{}finally{a&&_free(a),n&&_free(n),c&&_free(c)}return t}return Runtime.warnOnce(\"warning: build with  -s DEMANGLE_SUPPORT=1  to link in libcxxabi demangling\"),t}function demangleAll(t){var e=/__Z[\\w\\d_]+/g;return t.replace(e,function(r){var s=demangle(r);return r===s?r:r+\" [\"+s+\"]\"})}function jsStackTrace(){var t=new Error;if(!t.stack){try{throw new Error(0)}catch(e){t=e}if(!t.stack)return\"(no stack trace available)\"}return t.stack.toString()}function stackTrace(){var t=jsStackTrace();return Module.extraStackTrace&&(t+=`\n`+Module.extraStackTrace()),demangleAll(t)}Module.stackTrace=stackTrace;var HEAP,buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferViews(){Module.HEAP8=HEAP8=new Int8Array(buffer),Module.HEAP16=HEAP16=new Int16Array(buffer),Module.HEAP32=HEAP32=new Int32Array(buffer),Module.HEAPU8=HEAPU8=new Uint8Array(buffer),Module.HEAPU16=HEAPU16=new Uint16Array(buffer),Module.HEAPU32=HEAPU32=new Uint32Array(buffer),Module.HEAPF32=HEAPF32=new Float32Array(buffer),Module.HEAPF64=HEAPF64=new Float64Array(buffer)}var STATIC_BASE,STATICTOP,staticSealed,STACK_BASE,STACKTOP,STACK_MAX,DYNAMIC_BASE,DYNAMICTOP_PTR;STATIC_BASE=STATICTOP=STACK_BASE=STACKTOP=STACK_MAX=DYNAMIC_BASE=DYNAMICTOP_PTR=0,staticSealed=!1;function abortOnCannotGrowMemory(){abort(\"Cannot enlarge memory arrays. Either (1) compile with  -s TOTAL_MEMORY=X  with X higher than the current value \"+TOTAL_MEMORY+\", (2) compile with  -s ALLOW_MEMORY_GROWTH=1  which allows increasing the size at runtime but prevents some optimizations, (3) set Module.TOTAL_MEMORY to a higher value before the program runs, or (4) if you want malloc to return NULL (0) instead of this abort, compile with  -s ABORTING_MALLOC=0 \")}function enlargeMemory(){abortOnCannotGrowMemory()}var TOTAL_STACK=Module.TOTAL_STACK||5242880,TOTAL_MEMORY=Module.TOTAL_MEMORY||134217728;TOTAL_MEMORY<TOTAL_STACK&&Module.printErr(\"TOTAL_MEMORY should be larger than TOTAL_STACK, was \"+TOTAL_MEMORY+\"! (TOTAL_STACK=\"+TOTAL_STACK+\")\"),Module.buffer?buffer=Module.buffer:buffer=new ArrayBuffer(TOTAL_MEMORY),updateGlobalBufferViews();function getTotalMemory(){return TOTAL_MEMORY}if(HEAP32[0]=1668509029,HEAP16[1]=25459,HEAPU8[2]!==115||HEAPU8[3]!==99)throw\"Runtime error: expected the system to be little-endian!\";Module.HEAP=HEAP,Module.buffer=buffer,Module.HEAP8=HEAP8,Module.HEAP16=HEAP16,Module.HEAP32=HEAP32,Module.HEAPU8=HEAPU8,Module.HEAPU16=HEAPU16,Module.HEAPU32=HEAPU32,Module.HEAPF32=HEAPF32,Module.HEAPF64=HEAPF64;function callRuntimeCallbacks(t){for(;t.length>0;){var e=t.shift();if(typeof e==\"function\"){e();continue}var r=e.func;typeof r==\"number\"?e.arg===void 0?Module.dynCall_v(r):Module.dynCall_vi(r,e.arg):r(e.arg===void 0?null:e.arg)}}var __ATPRERUN__=[],__ATINIT__=[],__ATMAIN__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1,runtimeExited=!1;function preRun(){if(Module.preRun)for(typeof Module.preRun==\"function\"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function ensureInitRuntime(){runtimeInitialized||(runtimeInitialized=!0,callRuntimeCallbacks(__ATINIT__))}function preMain(){callRuntimeCallbacks(__ATMAIN__)}function exitRuntime(){callRuntimeCallbacks(__ATEXIT__),runtimeExited=!0}function postRun(){if(Module.postRun)for(typeof Module.postRun==\"function\"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(t){__ATPRERUN__.unshift(t)}Module.addOnPreRun=addOnPreRun;function addOnInit(t){__ATINIT__.unshift(t)}Module.addOnInit=addOnInit;function addOnPreMain(t){__ATMAIN__.unshift(t)}Module.addOnPreMain=addOnPreMain;function addOnExit(t){__ATEXIT__.unshift(t)}Module.addOnExit=addOnExit;function addOnPostRun(t){__ATPOSTRUN__.unshift(t)}Module.addOnPostRun=addOnPostRun;function intArrayFromString(t,e,r){var s=r>0?r:lengthBytesUTF8(t)+1,a=new Array(s),n=stringToUTF8Array(t,a,0,a.length);return e&&(a.length=n),a}Module.intArrayFromString=intArrayFromString;function intArrayToString(t){for(var e=[],r=0;r<t.length;r++){var s=t[r];s>255&&(s&=255),e.push(String.fromCharCode(s))}return e.join(\"\")}Module.intArrayToString=intArrayToString;function writeStringToMemory(t,e,r){Runtime.warnOnce(\"writeStringToMemory is deprecated and should not be called! Use stringToUTF8() instead!\");var s,a;r&&(a=e+lengthBytesUTF8(t),s=HEAP8[a]),stringToUTF8(t,e,1/0),r&&(HEAP8[a]=s)}Module.writeStringToMemory=writeStringToMemory;function writeArrayToMemory(t,e){HEAP8.set(t,e)}Module.writeArrayToMemory=writeArrayToMemory;function writeAsciiToMemory(t,e,r){for(var s=0;s<t.length;++s)HEAP8[e++>>0]=t.charCodeAt(s);r||(HEAP8[e>>0]=0)}if(Module.writeAsciiToMemory=writeAsciiToMemory,(!Math.imul||Math.imul(4294967295,5)!==-5)&&(Math.imul=function t(e,r){var s=e>>>16,a=e&65535,n=r>>>16,c=r&65535;return a*c+(s*c+a*n<<16)|0}),Math.imul=Math.imul,!Math.fround){var froundBuffer=new Float32Array(1);Math.fround=function(t){return froundBuffer[0]=t,froundBuffer[0]}}Math.fround=Math.fround,Math.clz32||(Math.clz32=function(t){t=t>>>0;for(var e=0;e<32;e++)if(t&1<<31-e)return e;return 32}),Math.clz32=Math.clz32,Math.trunc||(Math.trunc=function(t){return t<0?Math.ceil(t):Math.floor(t)}),Math.trunc=Math.trunc;var Math_abs=Math.abs,Math_cos=Math.cos,Math_sin=Math.sin,Math_tan=Math.tan,Math_acos=Math.acos,Math_asin=Math.asin,Math_atan=Math.atan,Math_atan2=Math.atan2,Math_exp=Math.exp,Math_log=Math.log,Math_sqrt=Math.sqrt,Math_ceil=Math.ceil,Math_floor=Math.floor,Math_pow=Math.pow,Math_imul=Math.imul,Math_fround=Math.fround,Math_round=Math.round,Math_min=Math.min,Math_clz32=Math.clz32,Math_trunc=Math.trunc,runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null;function getUniqueRunDependency(t){return t}function addRunDependency(t){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies)}Module.addRunDependency=addRunDependency;function removeRunDependency(t){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var e=dependenciesFulfilled;dependenciesFulfilled=null,e()}}Module.removeRunDependency=removeRunDependency,Module.preloadedImages={},Module.preloadedAudios={};var ASM_CONSTS=[function(t,e,r,s,a,n,c,f){return _nbind.callbackSignatureList[t].apply(this,arguments)}];function _emscripten_asm_const_iiiiiiii(t,e,r,s,a,n,c,f){return ASM_CONSTS[t](e,r,s,a,n,c,f)}function _emscripten_asm_const_iiiii(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiidddddd(t,e,r,s,a,n,c,f,p){return ASM_CONSTS[t](e,r,s,a,n,c,f,p)}function _emscripten_asm_const_iiididi(t,e,r,s,a,n,c){return ASM_CONSTS[t](e,r,s,a,n,c)}function _emscripten_asm_const_iiii(t,e,r,s){return ASM_CONSTS[t](e,r,s)}function _emscripten_asm_const_iiiid(t,e,r,s,a){return ASM_CONSTS[t](e,r,s,a)}function _emscripten_asm_const_iiiiii(t,e,r,s,a,n){return ASM_CONSTS[t](e,r,s,a,n)}STATIC_BASE=Runtime.GLOBAL_BASE,STATICTOP=STATIC_BASE+12800,__ATINIT__.push({func:function(){__GLOBAL__sub_I_Yoga_cpp()}},{func:function(){__GLOBAL__sub_I_nbind_cc()}},{func:function(){__GLOBAL__sub_I_common_cc()}},{func:function(){__GLOBAL__sub_I_Binding_cc()}}),allocate([0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,192,127,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,3,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,192,127,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,0,0,128,191,0,0,128,191,0,0,192,127,0,0,0,0,0,0,0,0,0,0,128,63,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,3,0,0,0,1,0,0,0,2,0,0,0,0,0,0,0,190,12,0,0,200,12,0,0,208,12,0,0,216,12,0,0,230,12,0,0,242,12,0,0,1,0,0,0,3,0,0,0,0,0,0,0,2,0,0,0,0,0,192,127,3,0,0,0,180,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,182,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,3,0,0,0,1,0,0,0,4,0,0,0,183,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,181,45,0,0,184,45,0,0,185,45,0,0,181,45,0,0,181,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,148,4,0,0,3,0,0,0,187,45,0,0,164,4,0,0,188,45,0,0,2,0,0,0,189,45,0,0,164,4,0,0,188,45,0,0,185,45,0,0,164,4,0,0,185,45,0,0,164,4,0,0,188,45,0,0,181,45,0,0,182,45,0,0,181,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,5,0,0,0,6,0,0,0,1,0,0,0,7,0,0,0,183,45,0,0,182,45,0,0,181,45,0,0,190,45,0,0,190,45,0,0,182,45,0,0,182,45,0,0,185,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,181,45,0,0,185,45,0,0,182,45,0,0,185,45,0,0,48,5,0,0,3,0,0,0,56,5,0,0,1,0,0,0,189,45,0,0,185,45,0,0,164,4,0,0,76,5,0,0,2,0,0,0,191,45,0,0,186,45,0,0,182,45,0,0,185,45,0,0,192,45,0,0,185,45,0,0,182,45,0,0,186,45,0,0,185,45,0,0,76,5,0,0,76,5,0,0,136,5,0,0,182,45,0,0,181,45,0,0,2,0,0,0,190,45,0,0,136,5,0,0,56,19,0,0,156,5,0,0,2,0,0,0,184,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,8,0,0,0,9,0,0,0,1,0,0,0,10,0,0,0,204,5,0,0,181,45,0,0,181,45,0,0,2,0,0,0,180,45,0,0,204,5,0,0,2,0,0,0,195,45,0,0,236,5,0,0,97,19,0,0,198,45,0,0,211,45,0,0,212,45,0,0,213,45,0,0,214,45,0,0,215,45,0,0,188,45,0,0,182,45,0,0,216,45,0,0,217,45,0,0,218,45,0,0,219,45,0,0,192,45,0,0,181,45,0,0,0,0,0,0,185,45,0,0,110,19,0,0,186,45,0,0,115,19,0,0,221,45,0,0,120,19,0,0,148,4,0,0,132,19,0,0,96,6,0,0,145,19,0,0,222,45,0,0,164,19,0,0,223,45,0,0,173,19,0,0,0,0,0,0,3,0,0,0,104,6,0,0,1,0,0,0,187,45,0,0,0,0,0,0,0,0,0,0,1,0,0,0,11,0,0,0,12,0,0,0,1,0,0,0,13,0,0,0,185,45,0,0,224,45,0,0,164,6,0,0,188,45,0,0,172,6,0,0,180,6,0,0,2,0,0,0,188,6,0,0,7,0,0,0,224,45,0,0,7,0,0,0,164,6,0,0,1,0,0,0,213,45,0,0,185,45,0,0,224,45,0,0,172,6,0,0,185,45,0,0,224,45,0,0,164,6,0,0,185,45,0,0,224,45,0,0,211,45,0,0,211,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,222,45,0,0,211,45,0,0,224,45,0,0,172,6,0,0,222,45,0,0,211,45,0,0,224,45,0,0,188,45,0,0,222,45,0,0,211,45,0,0,40,7,0,0,188,45,0,0,2,0,0,0,224,45,0,0,185,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,188,45,0,0,222,45,0,0,224,45,0,0,148,4,0,0,185,45,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,148,4,0,0,185,45,0,0,164,6,0,0,148,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,14,0,0,0,15,0,0,0,1,0,0,0,16,0,0,0,148,7,0,0,2,0,0,0,225,45,0,0,183,45,0,0,188,45,0,0,168,7,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,2,0,0,0,234,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,148,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,9,0,0,5,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,2,0,0,0,242,45,0,0,0,4,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,110,111,100,101,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,119,104,105,99,104,32,115,116,105,108,108,32,104,97,115,32,99,104,105,108,100,114,101,110,32,97,116,116,97,99,104,101,100,0,67,97,110,110,111,116,32,114,101,115,101,116,32,97,32,110,111,100,101,32,115,116,105,108,108,32,97,116,116,97,99,104,101,100,32,116,111,32,97,32,112,97,114,101,110,116,0,67,111,117,108,100,32,110,111,116,32,97,108,108,111,99,97,116,101,32,109,101,109,111,114,121,32,102,111,114,32,99,111,110,102,105,103,0,67,97,110,110,111,116,32,115,101,116,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,67,104,105,108,100,32,97,108,114,101,97,100,121,32,104,97,115,32,97,32,112,97,114,101,110,116,44,32,105,116,32,109,117,115,116,32,98,101,32,114,101,109,111,118,101,100,32,102,105,114,115,116,46,0,67,97,110,110,111,116,32,97,100,100,32,99,104,105,108,100,58,32,78,111,100,101,115,32,119,105,116,104,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,32,99,97,110,110,111,116,32,104,97,118,101,32,99,104,105,108,100,114,101,110,46,0,79,110,108,121,32,108,101,97,102,32,110,111,100,101,115,32,119,105,116,104,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,115,115,104,111,117,108,100,32,109,97,110,117,97,108,108,121,32,109,97,114,107,32,116,104,101,109,115,101,108,118,101,115,32,97,115,32,100,105,114,116,121,0,67,97,110,110,111,116,32,103,101,116,32,108,97,121,111,117,116,32,112,114,111,112,101,114,116,105,101,115,32,111,102,32,109,117,108,116,105,45,101,100,103,101,32,115,104,111,114,116,104,97,110,100,115,0,37,115,37,100,46,123,91,115,107,105,112,112,101,100,93,32,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,61,62,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,37,115,37,100,46,123,37,115,0,42,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,97,119,58,32,37,102,32,97,104,58,32,37,102,32,37,115,10,0,37,115,37,100,46,125,37,115,0,119,109,58,32,37,115,44,32,104,109,58,32,37,115,44,32,100,58,32,40,37,102,44,32,37,102,41,32,37,115,10,0,79,117,116,32,111,102,32,99,97,99,104,101,32,101,110,116,114,105,101,115,33,10,0,83,99,97,108,101,32,102,97,99,116,111,114,32,115,104,111,117,108,100,32,110,111,116,32,98,101,32,108,101,115,115,32,116,104,97,110,32,122,101,114,111,0,105,110,105,116,105,97,108,0,37,115,10,0,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,0,85,78,68,69,70,73,78,69,68,0,69,88,65,67,84,76,89,0,65,84,95,77,79,83,84,0,76,65,89,95,85,78,68,69,70,73,78,69,68,0,76,65,89,95,69,88,65,67,84,76,89,0,76,65,89,95,65,84,95,77,79,83,84,0,97,118,97,105,108,97,98,108,101,87,105,100,116,104,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,119,105,100,116,104,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,97,118,97,105,108,97,98,108,101,72,101,105,103,104,116,32,105,115,32,105,110,100,101,102,105,110,105,116,101,32,115,111,32,104,101,105,103,104,116,77,101,97,115,117,114,101,77,111,100,101,32,109,117,115,116,32,98,101,32,89,71,77,101,97,115,117,114,101,77,111,100,101,85,110,100,101,102,105,110,101,100,0,102,108,101,120,0,115,116,114,101,116,99,104,0,109,117,108,116,105,108,105,110,101,45,115,116,114,101,116,99,104,0,69,120,112,101,99,116,101,100,32,110,111,100,101,32,116,111,32,104,97,118,101,32,99,117,115,116,111,109,32,109,101,97,115,117,114,101,32,102,117,110,99,116,105,111,110,0,109,101,97,115,117,114,101,0,69,120,112,101,99,116,32,99,117,115,116,111,109,32,98,97,115,101,108,105,110,101,32,102,117,110,99,116,105,111,110,32,116,111,32,110,111,116,32,114,101,116,117,114,110,32,78,97,78,0,97,98,115,45,109,101,97,115,117,114,101,0,97,98,115,45,108,97,121,111,117,116,0,78,111,100,101,0,99,114,101,97,116,101,68,101,102,97,117,108,116,0,99,114,101,97,116,101,87,105,116,104,67,111,110,102,105,103,0,100,101,115,116,114,111,121,0,114,101,115,101,116,0,99,111,112,121,83,116,121,108,101,0,115,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,115,101,116,80,111,115,105,116,105,111,110,0,115,101,116,80,111,115,105,116,105,111,110,80,101,114,99,101,110,116,0,115,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,115,101,116,65,108,105,103,110,73,116,101,109,115,0,115,101,116,65,108,105,103,110,83,101,108,102,0,115,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,115,101,116,70,108,101,120,87,114,97,112,0,115,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,115,101,116,77,97,114,103,105,110,0,115,101,116,77,97,114,103,105,110,80,101,114,99,101,110,116,0,115,101,116,77,97,114,103,105,110,65,117,116,111,0,115,101,116,79,118,101,114,102,108,111,119,0,115,101,116,68,105,115,112,108,97,121,0,115,101,116,70,108,101,120,0,115,101,116,70,108,101,120,66,97,115,105,115,0,115,101,116,70,108,101,120,66,97,115,105,115,80,101,114,99,101,110,116,0,115,101,116,70,108,101,120,71,114,111,119,0,115,101,116,70,108,101,120,83,104,114,105,110,107,0,115,101,116,87,105,100,116,104,0,115,101,116,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,87,105,100,116,104,65,117,116,111,0,115,101,116,72,101,105,103,104,116,0,115,101,116,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,72,101,105,103,104,116,65,117,116,111,0,115,101,116,77,105,110,87,105,100,116,104,0,115,101,116,77,105,110,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,105,110,72,101,105,103,104,116,0,115,101,116,77,105,110,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,77,97,120,87,105,100,116,104,0,115,101,116,77,97,120,87,105,100,116,104,80,101,114,99,101,110,116,0,115,101,116,77,97,120,72,101,105,103,104,116,0,115,101,116,77,97,120,72,101,105,103,104,116,80,101,114,99,101,110,116,0,115,101,116,65,115,112,101,99,116,82,97,116,105,111,0,115,101,116,66,111,114,100,101,114,0,115,101,116,80,97,100,100,105,110,103,0,115,101,116,80,97,100,100,105,110,103,80,101,114,99,101,110,116,0,103,101,116,80,111,115,105,116,105,111,110,84,121,112,101,0,103,101,116,80,111,115,105,116,105,111,110,0,103,101,116,65,108,105,103,110,67,111,110,116,101,110,116,0,103,101,116,65,108,105,103,110,73,116,101,109,115,0,103,101,116,65,108,105,103,110,83,101,108,102,0,103,101,116,70,108,101,120,68,105,114,101,99,116,105,111,110,0,103,101,116,70,108,101,120,87,114,97,112,0,103,101,116,74,117,115,116,105,102,121,67,111,110,116,101,110,116,0,103,101,116,77,97,114,103,105,110,0,103,101,116,70,108,101,120,66,97,115,105,115,0,103,101,116,70,108,101,120,71,114,111,119,0,103,101,116,70,108,101,120,83,104,114,105,110,107,0,103,101,116,87,105,100,116,104,0,103,101,116,72,101,105,103,104,116,0,103,101,116,77,105,110,87,105,100,116,104,0,103,101,116,77,105,110,72,101,105,103,104,116,0,103,101,116,77,97,120,87,105,100,116,104,0,103,101,116,77,97,120,72,101,105,103,104,116,0,103,101,116,65,115,112,101,99,116,82,97,116,105,111,0,103,101,116,66,111,114,100,101,114,0,103,101,116,79,118,101,114,102,108,111,119,0,103,101,116,68,105,115,112,108,97,121,0,103,101,116,80,97,100,100,105,110,103,0,105,110,115,101,114,116,67,104,105,108,100,0,114,101,109,111,118,101,67,104,105,108,100,0,103,101,116,67,104,105,108,100,67,111,117,110,116,0,103,101,116,80,97,114,101,110,116,0,103,101,116,67,104,105,108,100,0,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,117,110,115,101,116,77,101,97,115,117,114,101,70,117,110,99,0,109,97,114,107,68,105,114,116,121,0,105,115,68,105,114,116,121,0,99,97,108,99,117,108,97,116,101,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,76,101,102,116,0,103,101,116,67,111,109,112,117,116,101,100,82,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,84,111,112,0,103,101,116,67,111,109,112,117,116,101,100,66,111,116,116,111,109,0,103,101,116,67,111,109,112,117,116,101,100,87,105,100,116,104,0,103,101,116,67,111,109,112,117,116,101,100,72,101,105,103,104,116,0,103,101,116,67,111,109,112,117,116,101,100,76,97,121,111,117,116,0,103,101,116,67,111,109,112,117,116,101,100,77,97,114,103,105,110,0,103,101,116,67,111,109,112,117,116,101,100,66,111,114,100,101,114,0,103,101,116,67,111,109,112,117,116,101,100,80,97,100,100,105,110,103,0,67,111,110,102,105,103,0,99,114,101,97,116,101,0,115,101,116,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,115,101,116,80,111,105,110,116,83,99,97,108,101,70,97,99,116,111,114,0,105,115,69,120,112,101,114,105,109,101,110,116,97,108,70,101,97,116,117,114,101,69,110,97,98,108,101,100,0,86,97,108,117,101,0,76,97,121,111,117,116,0,83,105,122,101,0,103,101,116,73,110,115,116,97,110,99,101,67,111,117,110,116,0,73,110,116,54,52,0,1,1,1,2,2,4,4,4,4,8,8,4,8,118,111,105,100,0,98,111,111,108,0,115,116,100,58,58,115,116,114,105,110,103,0,99,98,70,117,110,99,116,105,111,110,32,38,0,99,111,110,115,116,32,99,98,70,117,110,99,116,105,111,110,32,38,0,69,120,116,101,114,110,97,108,0,66,117,102,102,101,114,0,78,66,105,110,100,73,68,0,78,66,105,110,100,0,98,105,110,100,95,118,97,108,117,101,0,114,101,102,108,101,99,116,0,113,117,101,114,121,84,121,112,101,0,108,97,108,108,111,99,0,108,114,101,115,101,116,0,123,114,101,116,117,114,110,40,95,110,98,105,110,100,46,99,97,108,108,98,97,99,107,83,105,103,110,97,116,117,114,101,76,105,115,116,91,36,48,93,46,97,112,112,108,121,40,116,104,105,115,44,97,114,103,117,109,101,110,116,115,41,41,59,125,0,95,110,98,105,110,100,95,110,101,119,0,17,0,10,0,17,17,17,0,0,0,0,5,0,0,0,0,0,0,9,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,15,10,17,17,17,3,10,7,0,1,19,9,11,11,0,0,9,6,11,0,0,11,0,6,17,0,0,0,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,17,0,10,10,17,17,17,0,10,0,0,2,0,9,11,0,0,0,9,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,4,13,0,0,0,0,9,14,0,0,0,0,0,14,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,15,0,0,0,0,9,16,0,0,0,0,0,16,0,0,16,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,0,0,0,18,18,18,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,10,0,0,0,0,9,11,0,0,0,0,0,11,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,12,0,0,0,0,9,12,0,0,0,0,0,12,0,0,12,0,0,45,43,32,32,32,48,88,48,120,0,40,110,117,108,108,41,0,45,48,88,43,48,88,32,48,88,45,48,120,43,48,120,32,48,120,0,105,110,102,0,73,78,70,0,110,97,110,0,78,65,78,0,48,49,50,51,52,53,54,55,56,57,65,66,67,68,69,70,46,0,84,33,34,25,13,1,2,3,17,75,28,12,16,4,11,29,18,30,39,104,110,111,112,113,98,32,5,6,15,19,20,21,26,8,22,7,40,36,23,24,9,10,14,27,31,37,35,131,130,125,38,42,43,60,61,62,63,67,71,74,77,88,89,90,91,92,93,94,95,96,97,99,100,101,102,103,105,106,107,108,114,115,116,121,122,123,124,0,73,108,108,101,103,97,108,32,98,121,116,101,32,115,101,113,117,101,110,99,101,0,68,111,109,97,105,110,32,101,114,114,111,114,0,82,101,115,117,108,116,32,110,111,116,32,114,101,112,114,101,115,101,110,116,97,98,108,101,0,78,111,116,32,97,32,116,116,121,0,80,101,114,109,105,115,115,105,111,110,32,100,101,110,105,101,100,0,79,112,101,114,97,116,105,111,110,32,110,111,116,32,112,101,114,109,105,116,116,101,100,0,78,111,32,115,117,99,104,32,102,105,108,101,32,111,114,32,100,105,114,101,99,116,111,114,121,0,78,111,32,115,117,99,104,32,112,114,111,99,101,115,115,0,70,105,108,101,32,101,120,105,115,116,115,0,86,97,108,117,101,32,116,111,111,32,108,97,114,103,101,32,102,111,114,32,100,97,116,97,32,116,121,112,101,0,78,111,32,115,112,97,99,101,32,108,101,102,116,32,111,110,32,100,101,118,105,99,101,0,79,117,116,32,111,102,32,109,101,109,111,114,121,0,82,101,115,111,117,114,99,101,32,98,117,115,121,0,73,110,116,101,114,114,117,112,116,101,100,32,115,121,115,116,101,109,32,99,97,108,108,0,82,101,115,111,117,114,99,101,32,116,101,109,112,111,114,97,114,105,108,121,32,117,110,97,118,97,105,108,97,98,108,101,0,73,110,118,97,108,105,100,32,115,101,101,107,0,67,114,111,115,115,45,100,101,118,105,99,101,32,108,105,110,107,0,82,101,97,100,45,111,110,108,121,32,102,105,108,101,32,115,121,115,116,101,109,0,68,105,114,101,99,116,111,114,121,32,110,111,116,32,101,109,112,116,121,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,112,101,101,114,0,79,112,101,114,97,116,105,111,110,32,116,105,109,101,100,32,111,117,116,0,67,111,110,110,101,99,116,105,111,110,32,114,101,102,117,115,101,100,0,72,111,115,116,32,105,115,32,100,111,119,110,0,72,111,115,116,32,105,115,32,117,110,114,101,97,99,104,97,98,108,101,0,65,100,100,114,101,115,115,32,105,110,32,117,115,101,0,66,114,111,107,101,110,32,112,105,112,101,0,73,47,79,32,101,114,114,111,114,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,32,111,114,32,97,100,100,114,101,115,115,0,66,108,111,99,107,32,100,101,118,105,99,101,32,114,101,113,117,105,114,101,100,0,78,111,32,115,117,99,104,32,100,101,118,105,99,101,0,78,111,116,32,97,32,100,105,114,101,99,116,111,114,121,0,73,115,32,97,32,100,105,114,101,99,116,111,114,121,0,84,101,120,116,32,102,105,108,101,32,98,117,115,121,0,69,120,101,99,32,102,111,114,109,97,116,32,101,114,114,111,114,0,73,110,118,97,108,105,100,32,97,114,103,117,109,101,110,116,0,65,114,103,117,109,101,110,116,32,108,105,115,116,32,116,111,111,32,108,111,110,103,0,83,121,109,98,111,108,105,99,32,108,105,110,107,32,108,111,111,112,0,70,105,108,101,110,97,109,101,32,116,111,111,32,108,111,110,103,0,84,111,111,32,109,97,110,121,32,111,112,101,110,32,102,105,108,101,115,32,105,110,32,115,121,115,116,101,109,0,78,111,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,115,32,97,118,97,105,108,97,98,108,101,0,66,97,100,32,102,105,108,101,32,100,101,115,99,114,105,112,116,111,114,0,78,111,32,99,104,105,108,100,32,112,114,111,99,101,115,115,0,66,97,100,32,97,100,100,114,101,115,115,0,70,105,108,101,32,116,111,111,32,108,97,114,103,101,0,84,111,111,32,109,97,110,121,32,108,105,110,107,115,0,78,111,32,108,111,99,107,115,32,97,118,97,105,108,97,98,108,101,0,82,101,115,111,117,114,99,101,32,100,101,97,100,108,111,99,107,32,119,111,117,108,100,32,111,99,99,117,114,0,83,116,97,116,101,32,110,111,116,32,114,101,99,111,118,101,114,97,98,108,101,0,80,114,101,118,105,111,117,115,32,111,119,110,101,114,32,100,105,101,100,0,79,112,101,114,97,116,105,111,110,32,99,97,110,99,101,108,101,100,0,70,117,110,99,116,105,111,110,32,110,111,116,32,105,109,112,108,101,109,101,110,116,101,100,0,78,111,32,109,101,115,115,97,103,101,32,111,102,32,100,101,115,105,114,101,100,32,116,121,112,101,0,73,100,101,110,116,105,102,105,101,114,32,114,101,109,111,118,101,100,0,68,101,118,105,99,101,32,110,111,116,32,97,32,115,116,114,101,97,109,0,78,111,32,100,97,116,97,32,97,118,97,105,108,97,98,108,101,0,68,101,118,105,99,101,32,116,105,109,101,111,117,116,0,79,117,116,32,111,102,32,115,116,114,101,97,109,115,32,114,101,115,111,117,114,99,101,115,0,76,105,110,107,32,104,97,115,32,98,101,101,110,32,115,101,118,101,114,101,100,0,80,114,111,116,111,99,111,108,32,101,114,114,111,114,0,66,97,100,32,109,101,115,115,97,103,101,0,70,105,108,101,32,100,101,115,99,114,105,112,116,111,114,32,105,110,32,98,97,100,32,115,116,97,116,101,0,78,111,116,32,97,32,115,111,99,107,101,116,0,68,101,115,116,105,110,97,116,105,111,110,32,97,100,100,114,101,115,115,32,114,101,113,117,105,114,101,100,0,77,101,115,115,97,103,101,32,116,111,111,32,108,97,114,103,101,0,80,114,111,116,111,99,111,108,32,119,114,111,110,103,32,116,121,112,101,32,102,111,114,32,115,111,99,107,101,116,0,80,114,111,116,111,99,111,108,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,80,114,111,116,111,99,111,108,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,83,111,99,107,101,116,32,116,121,112,101,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,78,111,116,32,115,117,112,112,111,114,116,101,100,0,80,114,111,116,111,99,111,108,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,0,65,100,100,114,101,115,115,32,102,97,109,105,108,121,32,110,111,116,32,115,117,112,112,111,114,116,101,100,32,98,121,32,112,114,111,116,111,99,111,108,0,65,100,100,114,101,115,115,32,110,111,116,32,97,118,97,105,108,97,98,108,101,0,78,101,116,119,111,114,107,32,105,115,32,100,111,119,110,0,78,101,116,119,111,114,107,32,117,110,114,101,97,99,104,97,98,108,101,0,67,111,110,110,101,99,116,105,111,110,32,114,101,115,101,116,32,98,121,32,110,101,116,119,111,114,107,0,67,111,110,110,101,99,116,105,111,110,32,97,98,111,114,116,101,100,0,78,111,32,98,117,102,102,101,114,32,115,112,97,99,101,32,97,118,97,105,108,97,98,108,101,0,83,111,99,107,101,116,32,105,115,32,99,111,110,110,101,99,116,101,100,0,83,111,99,107,101,116,32,110,111,116,32,99,111,110,110,101,99,116,101,100,0,67,97,110,110,111,116,32,115,101,110,100,32,97,102,116,101,114,32,115,111,99,107,101,116,32,115,104,117,116,100,111,119,110,0,79,112,101,114,97,116,105,111,110,32,97,108,114,101,97,100,121,32,105,110,32,112,114,111,103,114,101,115,115,0,79,112,101,114,97,116,105,111,110,32,105,110,32,112,114,111,103,114,101,115,115,0,83,116,97,108,101,32,102,105,108,101,32,104,97,110,100,108,101,0,82,101,109,111,116,101,32,73,47,79,32,101,114,114,111,114,0,81,117,111,116,97,32,101,120,99,101,101,100,101,100,0,78,111,32,109,101,100,105,117,109,32,102,111,117,110,100,0,87,114,111,110,103,32,109,101,100,105,117,109,32,116,121,112,101,0,78,111,32,101,114,114,111,114,32,105,110,102,111,114,109,97,116,105,111,110,0,0],\"i8\",ALLOC_NONE,Runtime.GLOBAL_BASE);var tempDoublePtr=STATICTOP;STATICTOP+=16;function _atexit(t,e){__ATEXIT__.unshift({func:t,arg:e})}function ___cxa_atexit(){return _atexit.apply(null,arguments)}function _abort(){Module.abort()}function __ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj(){Module.printErr(\"missing function: _ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj\"),abort(-1)}function __decorate(t,e,r,s){var a=arguments.length,n=a<3?e:s===null?s=Object.getOwnPropertyDescriptor(e,r):s,c;if(typeof Reflect==\"object\"&&typeof Reflect.decorate==\"function\")n=Reflect.decorate(t,e,r,s);else for(var f=t.length-1;f>=0;f--)(c=t[f])&&(n=(a<3?c(n):a>3?c(e,r,n):c(e,r))||n);return a>3&&n&&Object.defineProperty(e,r,n),n}function _defineHidden(t){return function(e,r){Object.defineProperty(e,r,{configurable:!1,enumerable:!1,value:t,writable:!0})}}var _nbind={};function __nbind_free_external(t){_nbind.externalList[t].dereference(t)}function __nbind_reference_external(t){_nbind.externalList[t].reference()}function _llvm_stackrestore(t){var e=_llvm_stacksave,r=e.LLVM_SAVEDSTACKS[t];e.LLVM_SAVEDSTACKS.splice(t,1),Runtime.stackRestore(r)}function __nbind_register_pool(t,e,r,s){_nbind.Pool.pageSize=t,_nbind.Pool.usedPtr=e/4,_nbind.Pool.rootPtr=r,_nbind.Pool.pagePtr=s/4,HEAP32[e/4]=16909060,HEAP8[e]==1&&(_nbind.bigEndian=!0),HEAP32[e/4]=0,_nbind.makeTypeKindTbl=(n={},n[1024]=_nbind.PrimitiveType,n[64]=_nbind.Int64Type,n[2048]=_nbind.BindClass,n[3072]=_nbind.BindClassPtr,n[4096]=_nbind.SharedClassPtr,n[5120]=_nbind.ArrayType,n[6144]=_nbind.ArrayType,n[7168]=_nbind.CStringType,n[9216]=_nbind.CallbackType,n[10240]=_nbind.BindType,n),_nbind.makeTypeNameTbl={Buffer:_nbind.BufferType,External:_nbind.ExternalType,Int64:_nbind.Int64Type,_nbind_new:_nbind.CreateValueType,bool:_nbind.BooleanType,\"cbFunction &\":_nbind.CallbackType,\"const cbFunction &\":_nbind.CallbackType,\"const std::string &\":_nbind.StringType,\"std::string\":_nbind.StringType},Module.toggleLightGC=_nbind.toggleLightGC,_nbind.callUpcast=Module.dynCall_ii;var a=_nbind.makeType(_nbind.constructType,{flags:2048,id:0,name:\"\"});a.proto=Module,_nbind.BindClass.list.push(a);var n}function _emscripten_set_main_loop_timing(t,e){if(Browser.mainLoop.timingMode=t,Browser.mainLoop.timingValue=e,!Browser.mainLoop.func)return 1;if(t==0)Browser.mainLoop.scheduler=function(){var c=Math.max(0,Browser.mainLoop.tickStartTime+e-_emscripten_get_now())|0;setTimeout(Browser.mainLoop.runner,c)},Browser.mainLoop.method=\"timeout\";else if(t==1)Browser.mainLoop.scheduler=function(){Browser.requestAnimationFrame(Browser.mainLoop.runner)},Browser.mainLoop.method=\"rAF\";else if(t==2){if(!window.setImmediate){let n=function(c){c.source===window&&c.data===s&&(c.stopPropagation(),r.shift()())};var a=n,r=[],s=\"setimmediate\";window.addEventListener(\"message\",n,!0),window.setImmediate=function(f){r.push(f),ENVIRONMENT_IS_WORKER?(Module.setImmediates===void 0&&(Module.setImmediates=[]),Module.setImmediates.push(f),window.postMessage({target:s})):window.postMessage(s,\"*\")}}Browser.mainLoop.scheduler=function(){window.setImmediate(Browser.mainLoop.runner)},Browser.mainLoop.method=\"immediate\"}return 0}function _emscripten_get_now(){abort()}function _emscripten_set_main_loop(t,e,r,s,a){Module.noExitRuntime=!0,assert(!Browser.mainLoop.func,\"emscripten_set_main_loop: there can only be one main loop function at once: call emscripten_cancel_main_loop to cancel the previous one before setting a new one with different parameters.\"),Browser.mainLoop.func=t,Browser.mainLoop.arg=s;var n;typeof s<\"u\"?n=function(){Module.dynCall_vi(t,s)}:n=function(){Module.dynCall_v(t)};var c=Browser.mainLoop.currentlyRunningMainloop;if(Browser.mainLoop.runner=function(){if(!ABORT){if(Browser.mainLoop.queue.length>0){var p=Date.now(),h=Browser.mainLoop.queue.shift();if(h.func(h.arg),Browser.mainLoop.remainingBlockers){var E=Browser.mainLoop.remainingBlockers,C=E%1==0?E-1:Math.floor(E);h.counted?Browser.mainLoop.remainingBlockers=C:(C=C+.5,Browser.mainLoop.remainingBlockers=(8*E+C)/9)}if(console.log('main loop blocker \"'+h.name+'\" took '+(Date.now()-p)+\" ms\"),Browser.mainLoop.updateStatus(),c<Browser.mainLoop.currentlyRunningMainloop)return;setTimeout(Browser.mainLoop.runner,0);return}if(!(c<Browser.mainLoop.currentlyRunningMainloop)){if(Browser.mainLoop.currentFrameNumber=Browser.mainLoop.currentFrameNumber+1|0,Browser.mainLoop.timingMode==1&&Browser.mainLoop.timingValue>1&&Browser.mainLoop.currentFrameNumber%Browser.mainLoop.timingValue!=0){Browser.mainLoop.scheduler();return}else Browser.mainLoop.timingMode==0&&(Browser.mainLoop.tickStartTime=_emscripten_get_now());Browser.mainLoop.method===\"timeout\"&&Module.ctx&&(Module.printErr(\"Looks like you are rendering without using requestAnimationFrame for the main loop. You should use 0 for the frame rate in emscripten_set_main_loop in order to use requestAnimationFrame, as that can greatly improve your frame rates!\"),Browser.mainLoop.method=\"\"),Browser.mainLoop.runIter(n),!(c<Browser.mainLoop.currentlyRunningMainloop)&&(typeof SDL==\"object\"&&SDL.audio&&SDL.audio.queueNewAudioData&&SDL.audio.queueNewAudioData(),Browser.mainLoop.scheduler())}}},a||(e&&e>0?_emscripten_set_main_loop_timing(0,1e3/e):_emscripten_set_main_loop_timing(1,1),Browser.mainLoop.scheduler()),r)throw\"SimulateInfiniteLoop\"}var Browser={mainLoop:{scheduler:null,method:\"\",currentlyRunningMainloop:0,func:null,arg:0,timingMode:0,timingValue:0,currentFrameNumber:0,queue:[],pause:function(){Browser.mainLoop.scheduler=null,Browser.mainLoop.currentlyRunningMainloop++},resume:function(){Browser.mainLoop.currentlyRunningMainloop++;var t=Browser.mainLoop.timingMode,e=Browser.mainLoop.timingValue,r=Browser.mainLoop.func;Browser.mainLoop.func=null,_emscripten_set_main_loop(r,0,!1,Browser.mainLoop.arg,!0),_emscripten_set_main_loop_timing(t,e),Browser.mainLoop.scheduler()},updateStatus:function(){if(Module.setStatus){var t=Module.statusMessage||\"Please wait...\",e=Browser.mainLoop.remainingBlockers,r=Browser.mainLoop.expectedBlockers;e?e<r?Module.setStatus(t+\" (\"+(r-e)+\"/\"+r+\")\"):Module.setStatus(t):Module.setStatus(\"\")}},runIter:function(t){if(!ABORT){if(Module.preMainLoop){var e=Module.preMainLoop();if(e===!1)return}try{t()}catch(r){if(r instanceof ExitStatus)return;throw r&&typeof r==\"object\"&&r.stack&&Module.printErr(\"exception thrown: \"+[r,r.stack]),r}Module.postMainLoop&&Module.postMainLoop()}}},isFullscreen:!1,pointerLock:!1,moduleContextCreatedCallbacks:[],workers:[],init:function(){if(Module.preloadPlugins||(Module.preloadPlugins=[]),Browser.initted)return;Browser.initted=!0;try{new Blob,Browser.hasBlobConstructor=!0}catch{Browser.hasBlobConstructor=!1,console.log(\"warning: no blob constructor, cannot create blobs with mimetypes\")}Browser.BlobBuilder=typeof MozBlobBuilder<\"u\"?MozBlobBuilder:typeof WebKitBlobBuilder<\"u\"?WebKitBlobBuilder:Browser.hasBlobConstructor?null:console.log(\"warning: no BlobBuilder\"),Browser.URLObject=typeof window<\"u\"?window.URL?window.URL:window.webkitURL:void 0,!Module.noImageDecoding&&typeof Browser.URLObject>\"u\"&&(console.log(\"warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available.\"),Module.noImageDecoding=!0);var t={};t.canHandle=function(n){return!Module.noImageDecoding&&/\\.(jpg|jpeg|png|bmp)$/i.test(n)},t.handle=function(n,c,f,p){var h=null;if(Browser.hasBlobConstructor)try{h=new Blob([n],{type:Browser.getMimetype(c)}),h.size!==n.length&&(h=new Blob([new Uint8Array(n).buffer],{type:Browser.getMimetype(c)}))}catch(P){Runtime.warnOnce(\"Blob constructor present but fails: \"+P+\"; falling back to blob builder\")}if(!h){var E=new Browser.BlobBuilder;E.append(new Uint8Array(n).buffer),h=E.getBlob()}var C=Browser.URLObject.createObjectURL(h),S=new Image;S.onload=function(){assert(S.complete,\"Image \"+c+\" could not be decoded\");var I=document.createElement(\"canvas\");I.width=S.width,I.height=S.height;var R=I.getContext(\"2d\");R.drawImage(S,0,0),Module.preloadedImages[c]=I,Browser.URLObject.revokeObjectURL(C),f&&f(n)},S.onerror=function(I){console.log(\"Image \"+C+\" could not be decoded\"),p&&p()},S.src=C},Module.preloadPlugins.push(t);var e={};e.canHandle=function(n){return!Module.noAudioDecoding&&n.substr(-4)in{\".ogg\":1,\".wav\":1,\".mp3\":1}},e.handle=function(n,c,f,p){var h=!1;function E(R){h||(h=!0,Module.preloadedAudios[c]=R,f&&f(n))}function C(){h||(h=!0,Module.preloadedAudios[c]=new Audio,p&&p())}if(Browser.hasBlobConstructor){try{var S=new Blob([n],{type:Browser.getMimetype(c)})}catch{return C()}var P=Browser.URLObject.createObjectURL(S),I=new Audio;I.addEventListener(\"canplaythrough\",function(){E(I)},!1),I.onerror=function(N){if(h)return;console.log(\"warning: browser could not fully decode audio \"+c+\", trying slower base64 approach\");function U(W){for(var ee=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\",ie=\"=\",ue=\"\",le=0,me=0,pe=0;pe<W.length;pe++)for(le=le<<8|W[pe],me+=8;me>=6;){var Be=le>>me-6&63;me-=6,ue+=ee[Be]}return me==2?(ue+=ee[(le&3)<<4],ue+=ie+ie):me==4&&(ue+=ee[(le&15)<<2],ue+=ie),ue}I.src=\"data:audio/x-\"+c.substr(-3)+\";base64,\"+U(n),E(I)},I.src=P,Browser.safeSetTimeout(function(){E(I)},1e4)}else return C()},Module.preloadPlugins.push(e);function r(){Browser.pointerLock=document.pointerLockElement===Module.canvas||document.mozPointerLockElement===Module.canvas||document.webkitPointerLockElement===Module.canvas||document.msPointerLockElement===Module.canvas}var s=Module.canvas;s&&(s.requestPointerLock=s.requestPointerLock||s.mozRequestPointerLock||s.webkitRequestPointerLock||s.msRequestPointerLock||function(){},s.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock||document.webkitExitPointerLock||document.msExitPointerLock||function(){},s.exitPointerLock=s.exitPointerLock.bind(document),document.addEventListener(\"pointerlockchange\",r,!1),document.addEventListener(\"mozpointerlockchange\",r,!1),document.addEventListener(\"webkitpointerlockchange\",r,!1),document.addEventListener(\"mspointerlockchange\",r,!1),Module.elementPointerLock&&s.addEventListener(\"click\",function(a){!Browser.pointerLock&&Module.canvas.requestPointerLock&&(Module.canvas.requestPointerLock(),a.preventDefault())},!1))},createContext:function(t,e,r,s){if(e&&Module.ctx&&t==Module.canvas)return Module.ctx;var a,n;if(e){var c={antialias:!1,alpha:!1};if(s)for(var f in s)c[f]=s[f];n=GL.createContext(t,c),n&&(a=GL.getContext(n).GLctx)}else a=t.getContext(\"2d\");return a?(r&&(e||assert(typeof GLctx>\"u\",\"cannot set in module if GLctx is used, but we are a non-GL context that would replace it\"),Module.ctx=a,e&&GL.makeContextCurrent(n),Module.useWebGL=e,Browser.moduleContextCreatedCallbacks.forEach(function(p){p()}),Browser.init()),a):null},destroyContext:function(t,e,r){},fullscreenHandlersInstalled:!1,lockPointer:void 0,resizeCanvas:void 0,requestFullscreen:function(t,e,r){Browser.lockPointer=t,Browser.resizeCanvas=e,Browser.vrDevice=r,typeof Browser.lockPointer>\"u\"&&(Browser.lockPointer=!0),typeof Browser.resizeCanvas>\"u\"&&(Browser.resizeCanvas=!1),typeof Browser.vrDevice>\"u\"&&(Browser.vrDevice=null);var s=Module.canvas;function a(){Browser.isFullscreen=!1;var c=s.parentNode;(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===c?(s.exitFullscreen=document.exitFullscreen||document.cancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen||document.webkitCancelFullScreen||function(){},s.exitFullscreen=s.exitFullscreen.bind(document),Browser.lockPointer&&s.requestPointerLock(),Browser.isFullscreen=!0,Browser.resizeCanvas&&Browser.setFullscreenCanvasSize()):(c.parentNode.insertBefore(s,c),c.parentNode.removeChild(c),Browser.resizeCanvas&&Browser.setWindowedCanvasSize()),Module.onFullScreen&&Module.onFullScreen(Browser.isFullscreen),Module.onFullscreen&&Module.onFullscreen(Browser.isFullscreen),Browser.updateCanvasDimensions(s)}Browser.fullscreenHandlersInstalled||(Browser.fullscreenHandlersInstalled=!0,document.addEventListener(\"fullscreenchange\",a,!1),document.addEventListener(\"mozfullscreenchange\",a,!1),document.addEventListener(\"webkitfullscreenchange\",a,!1),document.addEventListener(\"MSFullscreenChange\",a,!1));var n=document.createElement(\"div\");s.parentNode.insertBefore(n,s),n.appendChild(s),n.requestFullscreen=n.requestFullscreen||n.mozRequestFullScreen||n.msRequestFullscreen||(n.webkitRequestFullscreen?function(){n.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT)}:null)||(n.webkitRequestFullScreen?function(){n.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)}:null),r?n.requestFullscreen({vrDisplay:r}):n.requestFullscreen()},requestFullScreen:function(t,e,r){return Module.printErr(\"Browser.requestFullScreen() is deprecated. Please call Browser.requestFullscreen instead.\"),Browser.requestFullScreen=function(s,a,n){return Browser.requestFullscreen(s,a,n)},Browser.requestFullscreen(t,e,r)},nextRAF:0,fakeRequestAnimationFrame:function(t){var e=Date.now();if(Browser.nextRAF===0)Browser.nextRAF=e+1e3/60;else for(;e+2>=Browser.nextRAF;)Browser.nextRAF+=1e3/60;var r=Math.max(Browser.nextRAF-e,0);setTimeout(t,r)},requestAnimationFrame:function t(e){typeof window>\"u\"?Browser.fakeRequestAnimationFrame(e):(window.requestAnimationFrame||(window.requestAnimationFrame=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame||Browser.fakeRequestAnimationFrame),window.requestAnimationFrame(e))},safeCallback:function(t){return function(){if(!ABORT)return t.apply(null,arguments)}},allowAsyncCallbacks:!0,queuedAsyncCallbacks:[],pauseAsyncCallbacks:function(){Browser.allowAsyncCallbacks=!1},resumeAsyncCallbacks:function(){if(Browser.allowAsyncCallbacks=!0,Browser.queuedAsyncCallbacks.length>0){var t=Browser.queuedAsyncCallbacks;Browser.queuedAsyncCallbacks=[],t.forEach(function(e){e()})}},safeRequestAnimationFrame:function(t){return Browser.requestAnimationFrame(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))})},safeSetTimeout:function(t,e){return Module.noExitRuntime=!0,setTimeout(function(){ABORT||(Browser.allowAsyncCallbacks?t():Browser.queuedAsyncCallbacks.push(t))},e)},safeSetInterval:function(t,e){return Module.noExitRuntime=!0,setInterval(function(){ABORT||Browser.allowAsyncCallbacks&&t()},e)},getMimetype:function(t){return{jpg:\"image/jpeg\",jpeg:\"image/jpeg\",png:\"image/png\",bmp:\"image/bmp\",ogg:\"audio/ogg\",wav:\"audio/wav\",mp3:\"audio/mpeg\"}[t.substr(t.lastIndexOf(\".\")+1)]},getUserMedia:function(t){window.getUserMedia||(window.getUserMedia=navigator.getUserMedia||navigator.mozGetUserMedia),window.getUserMedia(t)},getMovementX:function(t){return t.movementX||t.mozMovementX||t.webkitMovementX||0},getMovementY:function(t){return t.movementY||t.mozMovementY||t.webkitMovementY||0},getMouseWheelDelta:function(t){var e=0;switch(t.type){case\"DOMMouseScroll\":e=t.detail;break;case\"mousewheel\":e=t.wheelDelta;break;case\"wheel\":e=t.deltaY;break;default:throw\"unrecognized mouse wheel event: \"+t.type}return e},mouseX:0,mouseY:0,mouseMovementX:0,mouseMovementY:0,touches:{},lastTouches:{},calculateMouseEvent:function(t){if(Browser.pointerLock)t.type!=\"mousemove\"&&\"mozMovementX\"in t?Browser.mouseMovementX=Browser.mouseMovementY=0:(Browser.mouseMovementX=Browser.getMovementX(t),Browser.mouseMovementY=Browser.getMovementY(t)),typeof SDL<\"u\"?(Browser.mouseX=SDL.mouseX+Browser.mouseMovementX,Browser.mouseY=SDL.mouseY+Browser.mouseMovementY):(Browser.mouseX+=Browser.mouseMovementX,Browser.mouseY+=Browser.mouseMovementY);else{var e=Module.canvas.getBoundingClientRect(),r=Module.canvas.width,s=Module.canvas.height,a=typeof window.scrollX<\"u\"?window.scrollX:window.pageXOffset,n=typeof window.scrollY<\"u\"?window.scrollY:window.pageYOffset;if(t.type===\"touchstart\"||t.type===\"touchend\"||t.type===\"touchmove\"){var c=t.touch;if(c===void 0)return;var f=c.pageX-(a+e.left),p=c.pageY-(n+e.top);f=f*(r/e.width),p=p*(s/e.height);var h={x:f,y:p};if(t.type===\"touchstart\")Browser.lastTouches[c.identifier]=h,Browser.touches[c.identifier]=h;else if(t.type===\"touchend\"||t.type===\"touchmove\"){var E=Browser.touches[c.identifier];E||(E=h),Browser.lastTouches[c.identifier]=E,Browser.touches[c.identifier]=h}return}var C=t.pageX-(a+e.left),S=t.pageY-(n+e.top);C=C*(r/e.width),S=S*(s/e.height),Browser.mouseMovementX=C-Browser.mouseX,Browser.mouseMovementY=S-Browser.mouseY,Browser.mouseX=C,Browser.mouseY=S}},asyncLoad:function(t,e,r,s){var a=s?\"\":\"al \"+t;Module.readAsync(t,function(n){assert(n,'Loading data file \"'+t+'\" failed (no arrayBuffer).'),e(new Uint8Array(n)),a&&removeRunDependency(a)},function(n){if(r)r();else throw'Loading data file \"'+t+'\" failed.'}),a&&addRunDependency(a)},resizeListeners:[],updateResizeListeners:function(){var t=Module.canvas;Browser.resizeListeners.forEach(function(e){e(t.width,t.height)})},setCanvasSize:function(t,e,r){var s=Module.canvas;Browser.updateCanvasDimensions(s,t,e),r||Browser.updateResizeListeners()},windowedWidth:0,windowedHeight:0,setFullscreenCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t|8388608,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},setWindowedCanvasSize:function(){if(typeof SDL<\"u\"){var t=HEAPU32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2];t=t&-8388609,HEAP32[SDL.screen+Runtime.QUANTUM_SIZE*0>>2]=t}Browser.updateResizeListeners()},updateCanvasDimensions:function(t,e,r){e&&r?(t.widthNative=e,t.heightNative=r):(e=t.widthNative,r=t.heightNative);var s=e,a=r;if(Module.forcedAspectRatio&&Module.forcedAspectRatio>0&&(s/a<Module.forcedAspectRatio?s=Math.round(a*Module.forcedAspectRatio):a=Math.round(s/Module.forcedAspectRatio)),(document.fullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement||document.webkitCurrentFullScreenElement)===t.parentNode&&typeof screen<\"u\"){var n=Math.min(screen.width/s,screen.height/a);s=Math.round(s*n),a=Math.round(a*n)}Browser.resizeCanvas?(t.width!=s&&(t.width=s),t.height!=a&&(t.height=a),typeof t.style<\"u\"&&(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))):(t.width!=e&&(t.width=e),t.height!=r&&(t.height=r),typeof t.style<\"u\"&&(s!=e||a!=r?(t.style.setProperty(\"width\",s+\"px\",\"important\"),t.style.setProperty(\"height\",a+\"px\",\"important\")):(t.style.removeProperty(\"width\"),t.style.removeProperty(\"height\"))))},wgetRequests:{},nextWgetRequestHandle:0,getNextWgetRequestHandle:function(){var t=Browser.nextWgetRequestHandle;return Browser.nextWgetRequestHandle++,t}},SYSCALLS={varargs:0,get:function(t){SYSCALLS.varargs+=4;var e=HEAP32[SYSCALLS.varargs-4>>2];return e},getStr:function(){var t=Pointer_stringify(SYSCALLS.get());return t},get64:function(){var t=SYSCALLS.get(),e=SYSCALLS.get();return t>=0?assert(e===0):assert(e===-1),t},getZero:function(){assert(SYSCALLS.get()===0)}};function ___syscall6(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD();return FS.close(r),0}catch(s){return(typeof FS>\"u\"||!(s instanceof FS.ErrnoError))&&abort(s),-s.errno}}function ___syscall54(t,e){SYSCALLS.varargs=e;try{return 0}catch(r){return(typeof FS>\"u\"||!(r instanceof FS.ErrnoError))&&abort(r),-r.errno}}function _typeModule(t){var e=[[0,1,\"X\"],[1,1,\"const X\"],[128,1,\"X *\"],[256,1,\"X &\"],[384,1,\"X &&\"],[512,1,\"std::shared_ptr<X>\"],[640,1,\"std::unique_ptr<X>\"],[5120,1,\"std::vector<X>\"],[6144,2,\"std::array<X, Y>\"],[9216,-1,\"std::function<X (Y)>\"]];function r(p,h,E,C,S,P){if(h==1){var I=C&896;(I==128||I==256||I==384)&&(p=\"X const\")}var R;return P?R=E.replace(\"X\",p).replace(\"Y\",S):R=p.replace(\"X\",E).replace(\"Y\",S),R.replace(/([*&]) (?=[*&])/g,\"$1\")}function s(p,h,E,C,S){throw new Error(p+\" type \"+E.replace(\"X\",h+\"?\")+(C?\" with flag \"+C:\"\")+\" in \"+S)}function a(p,h,E,C,S,P,I,R){P===void 0&&(P=\"X\"),R===void 0&&(R=1);var N=E(p);if(N)return N;var U=C(p),W=U.placeholderFlag,ee=e[W];I&&ee&&(P=r(I[2],I[0],P,ee[0],\"?\",!0));var ie;W==0&&(ie=\"Unbound\"),W>=10&&(ie=\"Corrupt\"),R>20&&(ie=\"Deeply nested\"),ie&&s(ie,p,P,W,S||\"?\");var ue=U.paramList[0],le=a(ue,h,E,C,S,P,ee,R+1),me,pe={flags:ee[0],id:p,name:\"\",paramList:[le]},Be=[],Ce=\"?\";switch(U.placeholderFlag){case 1:me=le.spec;break;case 2:if((le.flags&15360)==1024&&le.spec.ptrSize==1){pe.flags=7168;break}case 3:case 6:case 5:me=le.spec,le.flags&15360;break;case 8:Ce=\"\"+U.paramList[1],pe.paramList.push(U.paramList[1]);break;case 9:for(var g=0,we=U.paramList[1];g<we.length;g++){var ye=we[g],Ae=a(ye,h,E,C,S,P,ee,R+1);Be.push(Ae.name),pe.paramList.push(Ae)}Ce=Be.join(\", \");break;default:break}if(pe.name=r(ee[2],ee[0],le.name,le.flags,Ce),me){for(var se=0,Z=Object.keys(me);se<Z.length;se++){var De=Z[se];pe[De]=pe[De]||me[De]}pe.flags|=me.flags}return n(h,pe)}function n(p,h){var E=h.flags,C=E&896,S=E&15360;return!h.name&&S==1024&&(h.ptrSize==1?h.name=(E&16?\"\":(E&8?\"un\":\"\")+\"signed \")+\"char\":h.name=(E&8?\"u\":\"\")+(E&32?\"float\":\"int\")+(h.ptrSize*8+\"_t\")),h.ptrSize==8&&!(E&32)&&(S=64),S==2048&&(C==512||C==640?S=4096:C&&(S=3072)),p(S,h)}var c=function(){function p(h){this.id=h.id,this.name=h.name,this.flags=h.flags,this.spec=h}return p.prototype.toString=function(){return this.name},p}(),f={Type:c,getComplexType:a,makeType:n,structureList:e};return t.output=f,t.output||f}function __nbind_register_type(t,e){var r=_nbind.readAsciiString(e),s={flags:10240,id:t,name:r};_nbind.makeType(_nbind.constructType,s)}function __nbind_register_callback_signature(t,e){var r=_nbind.readTypeIdList(t,e),s=_nbind.callbackSignatureList.length;return _nbind.callbackSignatureList[s]=_nbind.makeJSCaller(r),s}function __extends(t,e){for(var r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);function s(){this.constructor=t}s.prototype=e.prototype,t.prototype=new s}function __nbind_register_class(t,e,r,s,a,n,c){var f=_nbind.readAsciiString(c),p=_nbind.readPolicyList(e),h=HEAPU32.subarray(t/4,t/4+2),E={flags:2048|(p.Value?2:0),id:h[0],name:f},C=_nbind.makeType(_nbind.constructType,E);C.ptrType=_nbind.getComplexType(h[1],_nbind.constructType,_nbind.getType,_nbind.queryType),C.destroy=_nbind.makeMethodCaller(C.ptrType,{boundID:E.id,flags:0,name:\"destroy\",num:0,ptr:n,title:C.name+\".free\",typeList:[\"void\",\"uint32_t\",\"uint32_t\"]}),a&&(C.superIdList=Array.prototype.slice.call(HEAPU32.subarray(r/4,r/4+a)),C.upcastList=Array.prototype.slice.call(HEAPU32.subarray(s/4,s/4+a))),Module[C.name]=C.makeBound(p),_nbind.BindClass.list.push(C)}function _removeAccessorPrefix(t){var e=/^[Gg]et_?([A-Z]?([A-Z]?))/;return t.replace(e,function(r,s,a){return a?s:s.toLowerCase()})}function __nbind_register_function(t,e,r,s,a,n,c,f,p,h){var E=_nbind.getType(t),C=_nbind.readPolicyList(e),S=_nbind.readTypeIdList(r,s),P;if(c==5)P=[{direct:a,name:\"__nbindConstructor\",ptr:0,title:E.name+\" constructor\",typeList:[\"uint32_t\"].concat(S.slice(1))},{direct:n,name:\"__nbindValueConstructor\",ptr:0,title:E.name+\" value constructor\",typeList:[\"void\",\"uint32_t\"].concat(S.slice(1))}];else{var I=_nbind.readAsciiString(f),R=(E.name&&E.name+\".\")+I;(c==3||c==4)&&(I=_removeAccessorPrefix(I)),P=[{boundID:t,direct:n,name:I,ptr:a,title:R,typeList:S}]}for(var N=0,U=P;N<U.length;N++){var W=U[N];W.signatureType=c,W.policyTbl=C,W.num=p,W.flags=h,E.addMethod(W)}}function _nbind_value(t,e){_nbind.typeNameTbl[t]||_nbind.throwError(\"Unknown value type \"+t),Module.NBind.bind_value(t,e),_defineHidden(_nbind.typeNameTbl[t].proto.prototype.__nbindValueConstructor)(e.prototype,\"__nbindValueConstructor\")}Module._nbind_value=_nbind_value;function __nbind_get_value_object(t,e){var r=_nbind.popValue(t);if(!r.fromJS)throw new Error(\"Object \"+r+\" has no fromJS function\");r.fromJS(function(){r.__nbindValueConstructor.apply(this,Array.prototype.concat.apply([e],arguments))})}function _emscripten_memcpy_big(t,e,r){return HEAPU8.set(HEAPU8.subarray(e,e+r),t),t}function __nbind_register_primitive(t,e,r){var s={flags:1024|r,id:t,ptrSize:e};_nbind.makeType(_nbind.constructType,s)}var cttz_i8=allocate([8,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,7,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,6,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,5,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0,4,0,1,0,2,0,1,0,3,0,1,0,2,0,1,0],\"i8\",ALLOC_STATIC);function ___setErrNo(t){return Module.___errno_location&&(HEAP32[Module.___errno_location()>>2]=t),t}function _llvm_stacksave(){var t=_llvm_stacksave;return t.LLVM_SAVEDSTACKS||(t.LLVM_SAVEDSTACKS=[]),t.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),t.LLVM_SAVEDSTACKS.length-1}function ___syscall140(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.getStreamFromFD(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=SYSCALLS.get(),c=SYSCALLS.get(),f=a;return FS.llseek(r,f,c),HEAP32[n>>2]=r.position,r.getdents&&f===0&&c===0&&(r.getdents=null),0}catch(p){return(typeof FS>\"u\"||!(p instanceof FS.ErrnoError))&&abort(p),-p.errno}}function ___syscall146(t,e){SYSCALLS.varargs=e;try{var r=SYSCALLS.get(),s=SYSCALLS.get(),a=SYSCALLS.get(),n=0;___syscall146.buffer||(___syscall146.buffers=[null,[],[]],___syscall146.printChar=function(E,C){var S=___syscall146.buffers[E];assert(S),C===0||C===10?((E===1?Module.print:Module.printErr)(UTF8ArrayToString(S,0)),S.length=0):S.push(C)});for(var c=0;c<a;c++){for(var f=HEAP32[s+c*8>>2],p=HEAP32[s+(c*8+4)>>2],h=0;h<p;h++)___syscall146.printChar(r,HEAPU8[f+h]);n+=p}return n}catch(E){return(typeof FS>\"u\"||!(E instanceof FS.ErrnoError))&&abort(E),-E.errno}}function __nbind_finish(){for(var t=0,e=_nbind.BindClass.list;t<e.length;t++){var r=e[t];r.finish()}}var ___dso_handle=STATICTOP;STATICTOP+=16,function(_nbind){var typeIdTbl={};_nbind.typeNameTbl={};var Pool=function(){function t(){}return t.lalloc=function(e){e=e+7&-8;var r=HEAPU32[t.usedPtr];if(e>t.pageSize/2||e>t.pageSize-r){var s=_nbind.typeNameTbl.NBind.proto;return s.lalloc(e)}else return HEAPU32[t.usedPtr]=r+e,t.rootPtr+r},t.lreset=function(e,r){var s=HEAPU32[t.pagePtr];if(s){var a=_nbind.typeNameTbl.NBind.proto;a.lreset(e,r)}else HEAPU32[t.usedPtr]=e},t}();_nbind.Pool=Pool;function constructType(t,e){var r=t==10240?_nbind.makeTypeNameTbl[e.name]||_nbind.BindType:_nbind.makeTypeKindTbl[t],s=new r(e);return typeIdTbl[e.id]=s,_nbind.typeNameTbl[e.name]=s,s}_nbind.constructType=constructType;function getType(t){return typeIdTbl[t]}_nbind.getType=getType;function queryType(t){var e=HEAPU8[t],r=_nbind.structureList[e][1];t/=4,r<0&&(++t,r=HEAPU32[t]+1);var s=Array.prototype.slice.call(HEAPU32.subarray(t+1,t+1+r));return e==9&&(s=[s[0],s.slice(1)]),{paramList:s,placeholderFlag:e}}_nbind.queryType=queryType;function getTypes(t,e){return t.map(function(r){return typeof r==\"number\"?_nbind.getComplexType(r,constructType,getType,queryType,e):_nbind.typeNameTbl[r]})}_nbind.getTypes=getTypes;function readTypeIdList(t,e){return Array.prototype.slice.call(HEAPU32,t/4,t/4+e)}_nbind.readTypeIdList=readTypeIdList;function readAsciiString(t){for(var e=t;HEAPU8[e++];);return String.fromCharCode.apply(\"\",HEAPU8.subarray(t,e-1))}_nbind.readAsciiString=readAsciiString;function readPolicyList(t){var e={};if(t)for(;;){var r=HEAPU32[t/4];if(!r)break;e[readAsciiString(r)]=!0,t+=4}return e}_nbind.readPolicyList=readPolicyList;function getDynCall(t,e){var r={float32_t:\"d\",float64_t:\"d\",int64_t:\"d\",uint64_t:\"d\",void:\"v\"},s=t.map(function(n){return r[n.name]||\"i\"}).join(\"\"),a=Module[\"dynCall_\"+s];if(!a)throw new Error(\"dynCall_\"+s+\" not found for \"+e+\"(\"+t.map(function(n){return n.name}).join(\", \")+\")\");return a}_nbind.getDynCall=getDynCall;function addMethod(t,e,r,s){var a=t[e];t.hasOwnProperty(e)&&a?((a.arity||a.arity===0)&&(a=_nbind.makeOverloader(a,a.arity),t[e]=a),a.addMethod(r,s)):(r.arity=s,t[e]=r)}_nbind.addMethod=addMethod;function throwError(t){throw new Error(t)}_nbind.throwError=throwError,_nbind.bigEndian=!1,_a=_typeModule(_typeModule),_nbind.Type=_a.Type,_nbind.makeType=_a.makeType,_nbind.getComplexType=_a.getComplexType,_nbind.structureList=_a.structureList;var BindType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.heap=HEAPU32,r.ptrSize=4,r}return e.prototype.needsWireRead=function(r){return!!this.wireRead||!!this.makeWireRead},e.prototype.needsWireWrite=function(r){return!!this.wireWrite||!!this.makeWireWrite},e}(_nbind.Type);_nbind.BindType=BindType;var PrimitiveType=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this,a=r.flags&32?{32:HEAPF32,64:HEAPF64}:r.flags&8?{8:HEAPU8,16:HEAPU16,32:HEAPU32}:{8:HEAP8,16:HEAP16,32:HEAP32};return s.heap=a[r.ptrSize*8],s.ptrSize=r.ptrSize,s}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a==\"number\")return a;throw new Error(\"Type mismatch\")}},e}(BindType);_nbind.PrimitiveType=PrimitiveType;function pushCString(t,e){if(t==null){if(e&&e.Nullable)return 0;throw new Error(\"Type mismatch\")}if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t)+1,s=_nbind.Pool.lalloc(r);return Module.stringToUTF8Array(t,HEAPU8,s,r),s}_nbind.pushCString=pushCString;function popCString(t){return t===0?null:Module.Pointer_stringify(t)}_nbind.popCString=popCString;var CStringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popCString,r.wireWrite=pushCString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,s){return function(a){return pushCString(a,s)}},e}(BindType);_nbind.CStringType=CStringType;var BooleanType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=function(s){return!!s},r}return e.prototype.needsWireWrite=function(r){return!!r&&!!r.Strict},e.prototype.makeWireRead=function(r){return\"!!(\"+r+\")\"},e.prototype.makeWireWrite=function(r,s){return s&&s.Strict&&function(a){if(typeof a==\"boolean\")return a;throw new Error(\"Type mismatch\")}||r},e}(BindType);_nbind.BooleanType=BooleanType;var Wrapper=function(){function t(){}return t.prototype.persist=function(){this.__nbindState|=1},t}();_nbind.Wrapper=Wrapper;function makeBound(t,e){var r=function(s){__extends(a,s);function a(n,c,f,p){var h=s.call(this)||this;if(!(h instanceof a))return new(Function.prototype.bind.apply(a,Array.prototype.concat.apply([null],arguments)));var E=c,C=f,S=p;if(n!==_nbind.ptrMarker){var P=h.__nbindConstructor.apply(h,arguments);E=4608,S=HEAPU32[P/4],C=HEAPU32[P/4+1]}var I={configurable:!0,enumerable:!1,value:null,writable:!1},R={__nbindFlags:E,__nbindPtr:C};S&&(R.__nbindShared=S,_nbind.mark(h));for(var N=0,U=Object.keys(R);N<U.length;N++){var W=U[N];I.value=R[W],Object.defineProperty(h,W,I)}return _defineHidden(0)(h,\"__nbindState\"),h}return a.prototype.free=function(){e.destroy.call(this,this.__nbindShared,this.__nbindFlags),this.__nbindState|=2,disableMember(this,\"__nbindShared\"),disableMember(this,\"__nbindPtr\")},a}(Wrapper);return __decorate([_defineHidden()],r.prototype,\"__nbindConstructor\",void 0),__decorate([_defineHidden()],r.prototype,\"__nbindValueConstructor\",void 0),__decorate([_defineHidden(t)],r.prototype,\"__nbindPolicies\",void 0),r}_nbind.makeBound=makeBound;function disableMember(t,e){function r(){throw new Error(\"Accessing deleted object\")}Object.defineProperty(t,e,{configurable:!1,enumerable:!1,get:r,set:r})}_nbind.ptrMarker={};var BindClass=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this;return s.wireRead=function(a){return _nbind.popValue(a,s.ptrType)},s.wireWrite=function(a){return pushPointer(a,s.ptrType,!0)},s.pendingSuperCount=0,s.ready=!1,s.methodTbl={},r.paramList?(s.classType=r.paramList[0].classType,s.proto=s.classType.proto):s.classType=s,s}return e.prototype.makeBound=function(r){var s=_nbind.makeBound(r,this);return this.proto=s,this.ptrType.proto=s,s},e.prototype.addMethod=function(r){var s=this.methodTbl[r.name]||[];s.push(r),this.methodTbl[r.name]=s},e.prototype.registerMethods=function(r,s){for(var a,n=0,c=Object.keys(r.methodTbl);n<c.length;n++)for(var f=c[n],p=r.methodTbl[f],h=0,E=p;h<E.length;h++){var C=E[h],S=void 0,P=void 0;if(S=this.proto.prototype,!(s&&C.signatureType!=1))switch(C.signatureType){case 1:S=this.proto;case 5:P=_nbind.makeCaller(C),_nbind.addMethod(S,C.name,P,C.typeList.length-1);break;case 4:a=_nbind.makeMethodCaller(r.ptrType,C);break;case 3:Object.defineProperty(S,C.name,{configurable:!0,enumerable:!1,get:_nbind.makeMethodCaller(r.ptrType,C),set:a});break;case 2:P=_nbind.makeMethodCaller(r.ptrType,C),_nbind.addMethod(S,C.name,P,C.typeList.length-1);break;default:break}}},e.prototype.registerSuperMethods=function(r,s,a){if(!a[r.name]){a[r.name]=!0;for(var n=0,c,f=0,p=r.superIdList||[];f<p.length;f++){var h=p[f],E=_nbind.getType(h);n++<s||s<0?c=-1:c=0,this.registerSuperMethods(E,c,a)}this.registerMethods(r,s<0)}},e.prototype.finish=function(){if(this.ready)return this;this.ready=!0,this.superList=(this.superIdList||[]).map(function(a){return _nbind.getType(a).finish()});var r=this.proto;if(this.superList.length){var s=function(){this.constructor=r};s.prototype=this.superList[0].proto.prototype,r.prototype=new s}return r!=Module&&(r.prototype.__nbindType=this),this.registerSuperMethods(this,1,{}),this},e.prototype.upcastStep=function(r,s){if(r==this)return s;for(var a=0;a<this.superList.length;++a){var n=this.superList[a].upcastStep(r,_nbind.callUpcast(this.upcastList[a],s));if(n)return n}return 0},e}(_nbind.BindType);BindClass.list=[],_nbind.BindClass=BindClass;function popPointer(t,e){return t?new e.proto(_nbind.ptrMarker,e.flags,t):null}_nbind.popPointer=popPointer;function pushPointer(t,e,r){if(!(t instanceof _nbind.Wrapper)){if(r)return _nbind.pushValue(t);throw new Error(\"Type mismatch\")}var s=t.__nbindPtr,a=t.__nbindType.classType,n=e.classType;if(t instanceof e.proto)for(;a!=n;)s=_nbind.callUpcast(a.upcastList[0],s),a=a.superList[0];else if(s=a.upcastStep(n,s),!s)throw new Error(\"Type mismatch\");return s}_nbind.pushPointer=pushPointer;function pushMutablePointer(t,e){var r=pushPointer(t,e);if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return r}var BindClassPtr=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this;s.classType=r.paramList[0].classType,s.proto=s.classType.proto;var a=r.flags&1,n=(s.flags&896)==256&&r.flags&2,c=a?pushPointer:pushMutablePointer,f=n?_nbind.popValue:popPointer;return s.makeWireWrite=function(p,h){return h.Nullable?function(E){return E?c(E,s):0}:function(E){return c(E,s)}},s.wireRead=function(p){return f(p,s)},s.wireWrite=function(p){return c(p,s)},s}return e}(_nbind.BindType);_nbind.BindClassPtr=BindClassPtr;function popShared(t,e){var r=HEAPU32[t/4],s=HEAPU32[t/4+1];return s?new e.proto(_nbind.ptrMarker,e.flags,s,r):null}_nbind.popShared=popShared;function pushShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");return t.__nbindShared}function pushMutableShared(t,e){if(!(t instanceof e.proto))throw new Error(\"Type mismatch\");if(t.__nbindFlags&1)throw new Error(\"Passing a const value as a non-const argument\");return t.__nbindShared}var SharedClassPtr=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this;s.readResources=[_nbind.resources.pool],s.classType=r.paramList[0].classType,s.proto=s.classType.proto;var a=r.flags&1,n=a?pushShared:pushMutableShared;return s.wireRead=function(c){return popShared(c,s)},s.wireWrite=function(c){return n(c,s)},s}return e}(_nbind.BindType);_nbind.SharedClassPtr=SharedClassPtr,_nbind.externalList=[0];var firstFreeExternal=0,External=function(){function t(e){this.refCount=1,this.data=e}return t.prototype.register=function(){var e=firstFreeExternal;return e?firstFreeExternal=_nbind.externalList[e]:e=_nbind.externalList.length,_nbind.externalList[e]=this,e},t.prototype.reference=function(){++this.refCount},t.prototype.dereference=function(e){--this.refCount==0&&(this.free&&this.free(),_nbind.externalList[e]=firstFreeExternal,firstFreeExternal=e)},t}();_nbind.External=External;function popExternal(t){var e=_nbind.externalList[t];return e.dereference(t),e.data}function pushExternal(t){var e=new External(t);return e.reference(),e.register()}var ExternalType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popExternal,r.wireWrite=pushExternal,r}return e}(_nbind.BindType);_nbind.ExternalType=ExternalType,_nbind.callbackSignatureList=[];var CallbackType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=function(s){return typeof s!=\"function\"&&_nbind.throwError(\"Type mismatch\"),new _nbind.External(s).register()},r}return e}(_nbind.BindType);_nbind.CallbackType=CallbackType,_nbind.valueList=[0];var firstFreeValue=0;function pushValue(t){var e=firstFreeValue;return e?firstFreeValue=_nbind.valueList[e]:e=_nbind.valueList.length,_nbind.valueList[e]=t,e*2+1}_nbind.pushValue=pushValue;function popValue(t,e){if(t||_nbind.throwError(\"Value type JavaScript class is missing or not registered\"),t&1){t>>=1;var r=_nbind.valueList[t];return _nbind.valueList[t]=firstFreeValue,firstFreeValue=t,r}else{if(e)return _nbind.popShared(t,e);throw new Error(\"Invalid value slot \"+t)}}_nbind.popValue=popValue;var valueBase=18446744073709552e3;function push64(t){return typeof t==\"number\"?t:pushValue(t)*4096+valueBase}function pop64(t){return t<valueBase?t:popValue((t-valueBase)/4096)}var CreateValueType=function(t){__extends(e,t);function e(){return t!==null&&t.apply(this,arguments)||this}return e.prototype.makeWireWrite=function(r){return\"(_nbind.pushValue(new \"+r+\"))\"},e}(_nbind.BindType);_nbind.CreateValueType=CreateValueType;var Int64Type=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=push64,r.wireRead=pop64,r}return e}(_nbind.BindType);_nbind.Int64Type=Int64Type;function pushArray(t,e){if(!t)return 0;var r=t.length;if((e.size||e.size===0)&&r<e.size)throw new Error(\"Type mismatch\");var s=e.memberType.ptrSize,a=_nbind.Pool.lalloc(4+r*s);HEAPU32[a/4]=r;var n=e.memberType.heap,c=(a+4)/s,f=e.memberType.wireWrite,p=0;if(f)for(;p<r;)n[c++]=f(t[p++]);else for(;p<r;)n[c++]=t[p++];return a}_nbind.pushArray=pushArray;function popArray(t,e){if(t===0)return null;var r=HEAPU32[t/4],s=new Array(r),a=e.memberType.heap;t=(t+4)/e.memberType.ptrSize;var n=e.memberType.wireRead,c=0;if(n)for(;c<r;)s[c++]=n(a[t++]);else for(;c<r;)s[c++]=a[t++];return s}_nbind.popArray=popArray;var ArrayType=function(t){__extends(e,t);function e(r){var s=t.call(this,r)||this;return s.wireRead=function(a){return popArray(a,s)},s.wireWrite=function(a){return pushArray(a,s)},s.readResources=[_nbind.resources.pool],s.writeResources=[_nbind.resources.pool],s.memberType=r.paramList[0],r.paramList[1]&&(s.size=r.paramList[1]),s}return e}(_nbind.BindType);_nbind.ArrayType=ArrayType;function pushString(t,e){if(t==null)if(e&&e.Nullable)t=\"\";else throw new Error(\"Type mismatch\");if(e&&e.Strict){if(typeof t!=\"string\")throw new Error(\"Type mismatch\")}else t=t.toString();var r=Module.lengthBytesUTF8(t),s=_nbind.Pool.lalloc(4+r+1);return HEAPU32[s/4]=r,Module.stringToUTF8Array(t,HEAPU8,s+4,r+1),s}_nbind.pushString=pushString;function popString(t){if(t===0)return null;var e=HEAPU32[t/4];return Module.Pointer_stringify(t+4,e)}_nbind.popString=popString;var StringType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireRead=popString,r.wireWrite=pushString,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,s){return function(a){return pushString(a,s)}},e}(_nbind.BindType);_nbind.StringType=StringType;function makeArgList(t){return Array.apply(null,Array(t)).map(function(e,r){return\"a\"+(r+1)})}function anyNeedsWireWrite(t,e){return t.reduce(function(r,s){return r||s.needsWireWrite(e)},!1)}function anyNeedsWireRead(t,e){return t.reduce(function(r,s){return r||!!s.needsWireRead(e)},!1)}function makeWireRead(t,e,r,s){var a=t.length;return r.makeWireRead?r.makeWireRead(s,t,a):r.wireRead?(t[a]=r.wireRead,\"(convertParamList[\"+a+\"](\"+s+\"))\"):s}function makeWireWrite(t,e,r,s){var a,n=t.length;return r.makeWireWrite?a=r.makeWireWrite(s,e,t,n):a=r.wireWrite,a?typeof a==\"string\"?a:(t[n]=a,\"(convertParamList[\"+n+\"](\"+s+\"))\"):s}function buildCallerFunction(dynCall,ptrType,ptr,num,policyTbl,needsWireWrite,prefix,returnType,argTypeList,mask,err){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireRead(convertParamList,policyTbl,returnType,\"dynCall(\"+[prefix].concat(argList.map(function(t,e){return makeWireWrite(convertParamList,policyTbl,argTypeList[e],t)})).join(\",\")+\")\"),resourceSet=_nbind.listResources([returnType],argTypeList),sourceCode=\"function(\"+argList.join(\",\")+\"){\"+(mask?\"this.__nbindFlags&mask&&err();\":\"\")+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}function buildJSCallerFunction(returnType,argTypeList){var argList=makeArgList(argTypeList.length),convertParamList=[],callExpression=makeWireWrite(convertParamList,null,returnType,\"_nbind.externalList[num].data(\"+argList.map(function(t,e){return makeWireRead(convertParamList,null,argTypeList[e],t)}).join(\",\")+\")\"),resourceSet=_nbind.listResources(argTypeList,[returnType]);resourceSet.remove(_nbind.resources.pool);var sourceCode=\"function(\"+[\"dummy\",\"num\"].concat(argList).join(\",\")+\"){\"+resourceSet.makeOpen()+\"var r=\"+callExpression+\";\"+resourceSet.makeClose()+\"return r;}\";return eval(\"(\"+sourceCode+\")\")}_nbind.buildJSCallerFunction=buildJSCallerFunction;function makeJSCaller(t){var e=t.length-1,r=_nbind.getTypes(t,\"callback\"),s=r[0],a=r.slice(1),n=anyNeedsWireRead(a,null),c=s.needsWireWrite(null);if(!c&&!n)switch(e){case 0:return function(f,p){return _nbind.externalList[p].data()};case 1:return function(f,p,h){return _nbind.externalList[p].data(h)};case 2:return function(f,p,h,E){return _nbind.externalList[p].data(h,E)};case 3:return function(f,p,h,E,C){return _nbind.externalList[p].data(h,E,C)};default:break}return buildJSCallerFunction(s,a)}_nbind.makeJSCaller=makeJSCaller;function makeMethodCaller(t,e){var r=e.typeList.length-1,s=e.typeList.slice(0);s.splice(1,0,\"uint32_t\",e.boundID);var a=_nbind.getTypes(s,e.title),n=a[0],c=a.slice(3),f=n.needsWireRead(e.policyTbl),p=anyNeedsWireWrite(c,e.policyTbl),h=e.ptr,E=e.num,C=_nbind.getDynCall(a,e.title),S=~e.flags&1;function P(){throw new Error(\"Calling a non-const method on a const object\")}if(!f&&!p)switch(r){case 0:return function(){return this.__nbindFlags&S?P():C(h,E,_nbind.pushPointer(this,t))};case 1:return function(I){return this.__nbindFlags&S?P():C(h,E,_nbind.pushPointer(this,t),I)};case 2:return function(I,R){return this.__nbindFlags&S?P():C(h,E,_nbind.pushPointer(this,t),I,R)};case 3:return function(I,R,N){return this.__nbindFlags&S?P():C(h,E,_nbind.pushPointer(this,t),I,R,N)};default:break}return buildCallerFunction(C,t,h,E,e.policyTbl,p,\"ptr,num,pushPointer(this,ptrType)\",n,c,S,P)}_nbind.makeMethodCaller=makeMethodCaller;function makeCaller(t){var e=t.typeList.length-1,r=_nbind.getTypes(t.typeList,t.title),s=r[0],a=r.slice(1),n=s.needsWireRead(t.policyTbl),c=anyNeedsWireWrite(a,t.policyTbl),f=t.direct,p=t.ptr;if(t.direct&&!n&&!c){var h=_nbind.getDynCall(r,t.title);switch(e){case 0:return function(){return h(f)};case 1:return function(P){return h(f,P)};case 2:return function(P,I){return h(f,P,I)};case 3:return function(P,I,R){return h(f,P,I,R)};default:break}p=0}var E;if(p){var C=t.typeList.slice(0);C.splice(1,0,\"uint32_t\"),r=_nbind.getTypes(C,t.title),E=\"ptr,num\"}else p=f,E=\"ptr\";var S=_nbind.getDynCall(r,t.title);return buildCallerFunction(S,null,p,t.num,t.policyTbl,c,E,s,a)}_nbind.makeCaller=makeCaller;function makeOverloader(t,e){var r=[];function s(){return r[arguments.length].apply(this,arguments)}return s.addMethod=function(a,n){r[n]=a},s.addMethod(t,e),s}_nbind.makeOverloader=makeOverloader;var Resource=function(){function t(e,r){var s=this;this.makeOpen=function(){return Object.keys(s.openTbl).join(\"\")},this.makeClose=function(){return Object.keys(s.closeTbl).join(\"\")},this.openTbl={},this.closeTbl={},e&&(this.openTbl[e]=!0),r&&(this.closeTbl[r]=!0)}return t.prototype.add=function(e){for(var r=0,s=Object.keys(e.openTbl);r<s.length;r++){var a=s[r];this.openTbl[a]=!0}for(var n=0,c=Object.keys(e.closeTbl);n<c.length;n++){var a=c[n];this.closeTbl[a]=!0}},t.prototype.remove=function(e){for(var r=0,s=Object.keys(e.openTbl);r<s.length;r++){var a=s[r];delete this.openTbl[a]}for(var n=0,c=Object.keys(e.closeTbl);n<c.length;n++){var a=c[n];delete this.closeTbl[a]}},t}();_nbind.Resource=Resource;function listResources(t,e){for(var r=new Resource,s=0,a=t;s<a.length;s++)for(var n=a[s],c=0,f=n.readResources||[];c<f.length;c++){var p=f[c];r.add(p)}for(var h=0,E=e;h<E.length;h++)for(var n=E[h],C=0,S=n.writeResources||[];C<S.length;C++){var p=S[C];r.add(p)}return r}_nbind.listResources=listResources,_nbind.resources={pool:new Resource(\"var used=HEAPU32[_nbind.Pool.usedPtr],page=HEAPU32[_nbind.Pool.pagePtr];\",\"_nbind.Pool.lreset(used,page);\")};var ExternalBuffer=function(t){__extends(e,t);function e(r,s){var a=t.call(this,r)||this;return a.ptr=s,a}return e.prototype.free=function(){_free(this.ptr)},e}(_nbind.External);function getBuffer(t){return t instanceof ArrayBuffer?new Uint8Array(t):t instanceof DataView?new Uint8Array(t.buffer,t.byteOffset,t.byteLength):t}function pushBuffer(t,e){if(t==null&&e&&e.Nullable&&(t=[]),typeof t!=\"object\")throw new Error(\"Type mismatch\");var r=t,s=r.byteLength||r.length;if(!s&&s!==0&&r.byteLength!==0)throw new Error(\"Type mismatch\");var a=_nbind.Pool.lalloc(8),n=_malloc(s),c=a/4;return HEAPU32[c++]=s,HEAPU32[c++]=n,HEAPU32[c++]=new ExternalBuffer(t,n).register(),HEAPU8.set(getBuffer(t),n),a}var BufferType=function(t){__extends(e,t);function e(){var r=t!==null&&t.apply(this,arguments)||this;return r.wireWrite=pushBuffer,r.readResources=[_nbind.resources.pool],r.writeResources=[_nbind.resources.pool],r}return e.prototype.makeWireWrite=function(r,s){return function(a){return pushBuffer(a,s)}},e}(_nbind.BindType);_nbind.BufferType=BufferType;function commitBuffer(t,e,r){var s=_nbind.externalList[t].data,a=Buffer;if(typeof Buffer!=\"function\"&&(a=function(){}),!(s instanceof Array)){var n=HEAPU8.subarray(e,e+r);if(s instanceof a){var c=void 0;typeof Buffer.from==\"function\"&&Buffer.from.length>=3?c=Buffer.from(n):c=new Buffer(n),c.copy(s)}else getBuffer(s).set(n)}}_nbind.commitBuffer=commitBuffer;var dirtyList=[],gcTimer=0;function sweep(){for(var t=0,e=dirtyList;t<e.length;t++){var r=e[t];r.__nbindState&3||r.free()}dirtyList=[],gcTimer=0}_nbind.mark=function(t){};function toggleLightGC(t){t?_nbind.mark=function(e){dirtyList.push(e),gcTimer||(gcTimer=setTimeout(sweep,0))}:_nbind.mark=function(e){}}_nbind.toggleLightGC=toggleLightGC}(_nbind),Module.requestFullScreen=function t(e,r,s){Module.printErr(\"Module.requestFullScreen is deprecated. Please call Module.requestFullscreen instead.\"),Module.requestFullScreen=Module.requestFullscreen,Browser.requestFullScreen(e,r,s)},Module.requestFullscreen=function t(e,r,s){Browser.requestFullscreen(e,r,s)},Module.requestAnimationFrame=function t(e){Browser.requestAnimationFrame(e)},Module.setCanvasSize=function t(e,r,s){Browser.setCanvasSize(e,r,s)},Module.pauseMainLoop=function t(){Browser.mainLoop.pause()},Module.resumeMainLoop=function t(){Browser.mainLoop.resume()},Module.getUserMedia=function t(){Browser.getUserMedia()},Module.createContext=function t(e,r,s,a){return Browser.createContext(e,r,s,a)},ENVIRONMENT_IS_NODE?_emscripten_get_now=function(){var e=process.hrtime();return e[0]*1e3+e[1]/1e6}:typeof dateNow<\"u\"?_emscripten_get_now=dateNow:typeof self==\"object\"&&self.performance&&typeof self.performance.now==\"function\"?_emscripten_get_now=function(){return self.performance.now()}:typeof performance==\"object\"&&typeof performance.now==\"function\"?_emscripten_get_now=function(){return performance.now()}:_emscripten_get_now=Date.now,__ATEXIT__.push(function(){var t=Module._fflush;t&&t(0);var e=___syscall146.printChar;if(e){var r=___syscall146.buffers;r[1].length&&e(1,10),r[2].length&&e(2,10)}}),DYNAMICTOP_PTR=allocate(1,\"i32\",ALLOC_STATIC),STACK_BASE=STACKTOP=Runtime.alignMemory(STATICTOP),STACK_MAX=STACK_BASE+TOTAL_STACK,DYNAMIC_BASE=Runtime.alignMemory(STACK_MAX),HEAP32[DYNAMICTOP_PTR>>2]=DYNAMIC_BASE,staticSealed=!0;function invoke_viiiii(t,e,r,s,a,n){try{Module.dynCall_viiiii(t,e,r,s,a,n)}catch(c){if(typeof c!=\"number\"&&c!==\"longjmp\")throw c;Module.setThrew(1,0)}}function invoke_vif(t,e,r){try{Module.dynCall_vif(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_vid(t,e,r){try{Module.dynCall_vid(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_fiff(t,e,r,s){try{return Module.dynCall_fiff(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_vi(t,e){try{Module.dynCall_vi(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_vii(t,e,r){try{Module.dynCall_vii(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_ii(t,e){try{return Module.dynCall_ii(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_viddi(t,e,r,s,a){try{Module.dynCall_viddi(t,e,r,s,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_vidd(t,e,r,s){try{Module.dynCall_vidd(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_iiii(t,e,r,s){try{return Module.dynCall_iiii(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_diii(t,e,r,s){try{return Module.dynCall_diii(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_di(t,e){try{return Module.dynCall_di(t,e)}catch(r){if(typeof r!=\"number\"&&r!==\"longjmp\")throw r;Module.setThrew(1,0)}}function invoke_iid(t,e,r){try{return Module.dynCall_iid(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_iii(t,e,r){try{return Module.dynCall_iii(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_viiddi(t,e,r,s,a,n){try{Module.dynCall_viiddi(t,e,r,s,a,n)}catch(c){if(typeof c!=\"number\"&&c!==\"longjmp\")throw c;Module.setThrew(1,0)}}function invoke_viiiiii(t,e,r,s,a,n,c){try{Module.dynCall_viiiiii(t,e,r,s,a,n,c)}catch(f){if(typeof f!=\"number\"&&f!==\"longjmp\")throw f;Module.setThrew(1,0)}}function invoke_dii(t,e,r){try{return Module.dynCall_dii(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_i(t){try{return Module.dynCall_i(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_iiiiii(t,e,r,s,a,n){try{return Module.dynCall_iiiiii(t,e,r,s,a,n)}catch(c){if(typeof c!=\"number\"&&c!==\"longjmp\")throw c;Module.setThrew(1,0)}}function invoke_viiid(t,e,r,s,a){try{Module.dynCall_viiid(t,e,r,s,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}function invoke_viififi(t,e,r,s,a,n,c){try{Module.dynCall_viififi(t,e,r,s,a,n,c)}catch(f){if(typeof f!=\"number\"&&f!==\"longjmp\")throw f;Module.setThrew(1,0)}}function invoke_viii(t,e,r,s){try{Module.dynCall_viii(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_v(t){try{Module.dynCall_v(t)}catch(e){if(typeof e!=\"number\"&&e!==\"longjmp\")throw e;Module.setThrew(1,0)}}function invoke_viid(t,e,r,s){try{Module.dynCall_viid(t,e,r,s)}catch(a){if(typeof a!=\"number\"&&a!==\"longjmp\")throw a;Module.setThrew(1,0)}}function invoke_idd(t,e,r){try{return Module.dynCall_idd(t,e,r)}catch(s){if(typeof s!=\"number\"&&s!==\"longjmp\")throw s;Module.setThrew(1,0)}}function invoke_viiii(t,e,r,s,a){try{Module.dynCall_viiii(t,e,r,s,a)}catch(n){if(typeof n!=\"number\"&&n!==\"longjmp\")throw n;Module.setThrew(1,0)}}Module.asmGlobalArg={Math,Int8Array,Int16Array,Int32Array,Uint8Array,Uint16Array,Uint32Array,Float32Array,Float64Array,NaN:NaN,Infinity:1/0},Module.asmLibraryArg={abort,assert,enlargeMemory,getTotalMemory,abortOnCannotGrowMemory,invoke_viiiii,invoke_vif,invoke_vid,invoke_fiff,invoke_vi,invoke_vii,invoke_ii,invoke_viddi,invoke_vidd,invoke_iiii,invoke_diii,invoke_di,invoke_iid,invoke_iii,invoke_viiddi,invoke_viiiiii,invoke_dii,invoke_i,invoke_iiiiii,invoke_viiid,invoke_viififi,invoke_viii,invoke_v,invoke_viid,invoke_idd,invoke_viiii,_emscripten_asm_const_iiiii,_emscripten_asm_const_iiidddddd,_emscripten_asm_const_iiiid,__nbind_reference_external,_emscripten_asm_const_iiiiiiii,_removeAccessorPrefix,_typeModule,__nbind_register_pool,__decorate,_llvm_stackrestore,___cxa_atexit,__extends,__nbind_get_value_object,__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,_emscripten_set_main_loop_timing,__nbind_register_primitive,__nbind_register_type,_emscripten_memcpy_big,__nbind_register_function,___setErrNo,__nbind_register_class,__nbind_finish,_abort,_nbind_value,_llvm_stacksave,___syscall54,_defineHidden,_emscripten_set_main_loop,_emscripten_get_now,__nbind_register_callback_signature,_emscripten_asm_const_iiiiii,__nbind_free_external,_emscripten_asm_const_iiii,_emscripten_asm_const_iiididi,___syscall6,_atexit,___syscall140,___syscall146,DYNAMICTOP_PTR,tempDoublePtr,ABORT,STACKTOP,STACK_MAX,cttz_i8,___dso_handle};var asm=function(t,e,r){var s=new t.Int8Array(r),a=new t.Int16Array(r),n=new t.Int32Array(r),c=new t.Uint8Array(r),f=new t.Uint16Array(r),p=new t.Uint32Array(r),h=new t.Float32Array(r),E=new t.Float64Array(r),C=e.DYNAMICTOP_PTR|0,S=e.tempDoublePtr|0,P=e.ABORT|0,I=e.STACKTOP|0,R=e.STACK_MAX|0,N=e.cttz_i8|0,U=e.___dso_handle|0,W=0,ee=0,ie=0,ue=0,le=t.NaN,me=t.Infinity,pe=0,Be=0,Ce=0,g=0,we=0,ye=0,Ae=t.Math.floor,se=t.Math.abs,Z=t.Math.sqrt,De=t.Math.pow,Re=t.Math.cos,mt=t.Math.sin,j=t.Math.tan,rt=t.Math.acos,Fe=t.Math.asin,Ne=t.Math.atan,Pe=t.Math.atan2,Ve=t.Math.exp,ke=t.Math.log,it=t.Math.ceil,Ue=t.Math.imul,x=t.Math.min,w=t.Math.max,b=t.Math.clz32,y=t.Math.fround,F=e.abort,z=e.assert,X=e.enlargeMemory,$=e.getTotalMemory,oe=e.abortOnCannotGrowMemory,xe=e.invoke_viiiii,Te=e.invoke_vif,lt=e.invoke_vid,Ct=e.invoke_fiff,qt=e.invoke_vi,ir=e.invoke_vii,Pt=e.invoke_ii,gn=e.invoke_viddi,Pr=e.invoke_vidd,Ir=e.invoke_iiii,Or=e.invoke_diii,on=e.invoke_di,ai=e.invoke_iid,Io=e.invoke_iii,rs=e.invoke_viiddi,$s=e.invoke_viiiiii,Co=e.invoke_dii,ji=e.invoke_i,eo=e.invoke_iiiiii,wo=e.invoke_viiid,QA=e.invoke_viififi,Af=e.invoke_viii,dh=e.invoke_v,mh=e.invoke_viid,to=e.invoke_idd,jn=e.invoke_viiii,Ts=e._emscripten_asm_const_iiiii,ro=e._emscripten_asm_const_iiidddddd,ou=e._emscripten_asm_const_iiiid,au=e.__nbind_reference_external,lu=e._emscripten_asm_const_iiiiiiii,TA=e._removeAccessorPrefix,RA=e._typeModule,oa=e.__nbind_register_pool,aa=e.__decorate,FA=e._llvm_stackrestore,gr=e.___cxa_atexit,Bo=e.__extends,Me=e.__nbind_get_value_object,cu=e.__ZN8facebook4yoga14YGNodeToStringEPNSt3__212basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEP6YGNode14YGPrintOptionsj,Cr=e._emscripten_set_main_loop_timing,pf=e.__nbind_register_primitive,NA=e.__nbind_register_type,OA=e._emscripten_memcpy_big,uu=e.__nbind_register_function,fu=e.___setErrNo,oc=e.__nbind_register_class,ve=e.__nbind_finish,Nt=e._abort,ac=e._nbind_value,Oi=e._llvm_stacksave,no=e.___syscall54,Rt=e._defineHidden,xn=e._emscripten_set_main_loop,la=e._emscripten_get_now,Gi=e.__nbind_register_callback_signature,Li=e._emscripten_asm_const_iiiiii,Na=e.__nbind_free_external,dn=e._emscripten_asm_const_iiii,Kn=e._emscripten_asm_const_iiididi,Au=e.___syscall6,yh=e._atexit,Oa=e.___syscall140,La=e.___syscall146,Ma=y(0);let $e=y(0);function Ua(o){o=o|0;var l=0;return l=I,I=I+o|0,I=I+15&-16,l|0}function hf(){return I|0}function lc(o){o=o|0,I=o}function wn(o,l){o=o|0,l=l|0,I=o,R=l}function ca(o,l){o=o|0,l=l|0,W||(W=o,ee=l)}function LA(o){o=o|0,ye=o}function MA(){return ye|0}function ua(){var o=0,l=0;Qr(8104,8,400)|0,Qr(8504,408,540)|0,o=9044,l=o+44|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));s[9088]=0,s[9089]=1,n[2273]=0,n[2274]=948,n[2275]=948,gr(17,8104,U|0)|0}function Bl(o){o=o|0,dt(o+948|0)}function Mt(o){return o=y(o),((fP(o)|0)&2147483647)>>>0>2139095040|0}function kn(o,l,u){o=o|0,l=l|0,u=u|0;e:do if(n[o+(l<<3)+4>>2]|0)o=o+(l<<3)|0;else{if((l|2|0)==3&&n[o+60>>2]|0){o=o+56|0;break}switch(l|0){case 0:case 2:case 4:case 5:{if(n[o+52>>2]|0){o=o+48|0;break e}break}default:}if(n[o+68>>2]|0){o=o+64|0;break}else{o=(l|1|0)==5?948:u;break}}while(!1);return o|0}function fa(o){o=o|0;var l=0;return l=_P(1e3)|0,Ha(o,(l|0)!=0,2456),n[2276]=(n[2276]|0)+1,Qr(l|0,8104,1e3)|0,s[o+2>>0]|0&&(n[l+4>>2]=2,n[l+12>>2]=4),n[l+976>>2]=o,l|0}function Ha(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,Wg(o,5,3197,A)),I=d}function ns(){return fa(956)|0}function cc(o){o=o|0;var l=0;return l=Kt(1e3)|0,pu(l,o),Ha(n[o+976>>2]|0,1,2456),n[2276]=(n[2276]|0)+1,n[l+944>>2]=0,l|0}function pu(o,l){o=o|0,l=l|0;var u=0;Qr(o|0,l|0,948)|0,Dy(o+948|0,l+948|0),u=o+960|0,o=l+960|0,l=u+40|0;do n[u>>2]=n[o>>2],u=u+4|0,o=o+4|0;while((u|0)<(l|0))}function uc(o){o=o|0;var l=0,u=0,A=0,d=0;if(l=o+944|0,u=n[l>>2]|0,u|0&&(ja(u+948|0,o)|0,n[l>>2]=0),u=Mi(o)|0,u|0){l=0;do n[(Is(o,l)|0)+944>>2]=0,l=l+1|0;while((l|0)!=(u|0))}u=o+948|0,A=n[u>>2]|0,d=o+952|0,l=n[d>>2]|0,(l|0)!=(A|0)&&(n[d>>2]=l+(~((l+-4-A|0)>>>2)<<2)),vl(u),HP(o),n[2276]=(n[2276]|0)+-1}function ja(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0;A=n[o>>2]|0,k=o+4|0,u=n[k>>2]|0,m=u;e:do if((A|0)==(u|0))d=A,B=4;else for(o=A;;){if((n[o>>2]|0)==(l|0)){d=o,B=4;break e}if(o=o+4|0,(o|0)==(u|0)){o=0;break}}while(!1);return(B|0)==4&&((d|0)!=(u|0)?(A=d+4|0,o=m-A|0,l=o>>2,l&&(Q2(d|0,A|0,o|0)|0,u=n[k>>2]|0),o=d+(l<<2)|0,(u|0)==(o|0)||(n[k>>2]=u+(~((u+-4-o|0)>>>2)<<2)),o=1):o=0),o|0}function Mi(o){return o=o|0,(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2|0}function Is(o,l){o=o|0,l=l|0;var u=0;return u=n[o+948>>2]|0,(n[o+952>>2]|0)-u>>2>>>0>l>>>0?o=n[u+(l<<2)>>2]|0:o=0,o|0}function vl(o){o=o|0;var l=0,u=0,A=0,d=0;A=I,I=I+32|0,l=A,d=n[o>>2]|0,u=(n[o+4>>2]|0)-d|0,((n[o+8>>2]|0)-d|0)>>>0>u>>>0&&(d=u>>2,ky(l,d,d,o+8|0),AP(o,l),Qy(l)),I=A}function gf(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0;M=Mi(o)|0;do if(M|0){if((n[(Is(o,0)|0)+944>>2]|0)==(o|0)){if(!(ja(o+948|0,l)|0))break;Qr(l+400|0,8504,540)|0,n[l+944>>2]=0,Oe(o);break}B=n[(n[o+976>>2]|0)+12>>2]|0,k=o+948|0,T=(B|0)==0,u=0,m=0;do A=n[(n[k>>2]|0)+(m<<2)>>2]|0,(A|0)==(l|0)?Oe(o):(d=cc(A)|0,n[(n[k>>2]|0)+(u<<2)>>2]=d,n[d+944>>2]=o,T||dU[B&15](A,d,o,u),u=u+1|0),m=m+1|0;while((m|0)!=(M|0));if(u>>>0<M>>>0){T=o+948|0,k=o+952|0,B=u,u=n[k>>2]|0;do m=(n[T>>2]|0)+(B<<2)|0,A=m+4|0,d=u-A|0,l=d>>2,l&&(Q2(m|0,A|0,d|0)|0,u=n[k>>2]|0),d=u,A=m+(l<<2)|0,(d|0)!=(A|0)&&(u=d+(~((d+-4-A|0)>>>2)<<2)|0,n[k>>2]=u),B=B+1|0;while((B|0)!=(M|0))}}while(!1)}function fc(o){o=o|0;var l=0,u=0,A=0,d=0;wi(o,(Mi(o)|0)==0,2491),wi(o,(n[o+944>>2]|0)==0,2545),l=o+948|0,u=n[l>>2]|0,A=o+952|0,d=n[A>>2]|0,(d|0)!=(u|0)&&(n[A>>2]=d+(~((d+-4-u|0)>>>2)<<2)),vl(l),l=o+976|0,u=n[l>>2]|0,Qr(o|0,8104,1e3)|0,s[u+2>>0]|0&&(n[o+4>>2]=2,n[o+12>>2]=4),n[l>>2]=u}function wi(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;d=I,I=I+16|0,A=d,l||(n[A>>2]=u,xo(o,5,3197,A)),I=d}function Qn(){return n[2276]|0}function Ac(){var o=0;return o=_P(20)|0,Ke((o|0)!=0,2592),n[2277]=(n[2277]|0)+1,n[o>>2]=n[239],n[o+4>>2]=n[240],n[o+8>>2]=n[241],n[o+12>>2]=n[242],n[o+16>>2]=n[243],o|0}function Ke(o,l){o=o|0,l=l|0;var u=0,A=0;A=I,I=I+16|0,u=A,o||(n[u>>2]=l,xo(0,5,3197,u)),I=A}function st(o){o=o|0,HP(o),n[2277]=(n[2277]|0)+-1}function St(o,l){o=o|0,l=l|0;var u=0;l?(wi(o,(Mi(o)|0)==0,2629),u=1):(u=0,l=0),n[o+964>>2]=l,n[o+988>>2]=u}function lr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+8|0,d=A+4|0,B=A,n[d>>2]=l,wi(o,(n[l+944>>2]|0)==0,2709),wi(o,(n[o+964>>2]|0)==0,2763),te(o),l=o+948|0,n[B>>2]=(n[l>>2]|0)+(u<<2),n[m>>2]=n[B>>2],Ee(l,m,d)|0,n[(n[d>>2]|0)+944>>2]=o,Oe(o),I=A}function te(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;if(u=Mi(o)|0,u|0&&(n[(Is(o,0)|0)+944>>2]|0)!=(o|0)){A=n[(n[o+976>>2]|0)+12>>2]|0,d=o+948|0,m=(A|0)==0,l=0;do B=n[(n[d>>2]|0)+(l<<2)>>2]|0,k=cc(B)|0,n[(n[d>>2]|0)+(l<<2)>>2]=k,n[k+944>>2]=o,m||dU[A&15](B,k,o,l),l=l+1|0;while((l|0)!=(u|0))}}function Ee(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0;tt=I,I=I+64|0,q=tt+52|0,k=tt+48|0,ae=tt+28|0,Ye=tt+24|0,Le=tt+20|0,Qe=tt,A=n[o>>2]|0,m=A,l=A+((n[l>>2]|0)-m>>2<<2)|0,A=o+4|0,d=n[A>>2]|0,B=o+8|0;do if(d>>>0<(n[B>>2]|0)>>>0){if((l|0)==(d|0)){n[l>>2]=n[u>>2],n[A>>2]=(n[A>>2]|0)+4;break}pP(o,l,d,l+4|0),l>>>0<=u>>>0&&(u=(n[A>>2]|0)>>>0>u>>>0?u+4|0:u),n[l>>2]=n[u>>2]}else{A=(d-m>>2)+1|0,d=O(o)|0,d>>>0<A>>>0&&an(o),L=n[o>>2]|0,M=(n[B>>2]|0)-L|0,m=M>>1,ky(Qe,M>>2>>>0<d>>>1>>>0?m>>>0<A>>>0?A:m:d,l-L>>2,o+8|0),L=Qe+8|0,A=n[L>>2]|0,m=Qe+12|0,M=n[m>>2]|0,B=M,T=A;do if((A|0)==(M|0)){if(M=Qe+4|0,A=n[M>>2]|0,Ze=n[Qe>>2]|0,d=Ze,A>>>0<=Ze>>>0){A=B-d>>1,A=A|0?A:1,ky(ae,A,A>>>2,n[Qe+16>>2]|0),n[Ye>>2]=n[M>>2],n[Le>>2]=n[L>>2],n[k>>2]=n[Ye>>2],n[q>>2]=n[Le>>2],o2(ae,k,q),A=n[Qe>>2]|0,n[Qe>>2]=n[ae>>2],n[ae>>2]=A,A=ae+4|0,Ze=n[M>>2]|0,n[M>>2]=n[A>>2],n[A>>2]=Ze,A=ae+8|0,Ze=n[L>>2]|0,n[L>>2]=n[A>>2],n[A>>2]=Ze,A=ae+12|0,Ze=n[m>>2]|0,n[m>>2]=n[A>>2],n[A>>2]=Ze,Qy(ae),A=n[L>>2]|0;break}m=A,B=((m-d>>2)+1|0)/-2|0,k=A+(B<<2)|0,d=T-m|0,m=d>>2,m&&(Q2(k|0,A|0,d|0)|0,A=n[M>>2]|0),Ze=k+(m<<2)|0,n[L>>2]=Ze,n[M>>2]=A+(B<<2),A=Ze}while(!1);n[A>>2]=n[u>>2],n[L>>2]=(n[L>>2]|0)+4,l=hP(o,Qe,l)|0,Qy(Qe)}while(!1);return I=tt,l|0}function Oe(o){o=o|0;var l=0;do{if(l=o+984|0,s[l>>0]|0)break;s[l>>0]=1,h[o+504>>2]=y(le),o=n[o+944>>2]|0}while(o|0)}function dt(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function Et(o){return o=o|0,n[o+944>>2]|0}function bt(o){o=o|0,wi(o,(n[o+964>>2]|0)!=0,2832),Oe(o)}function tr(o){return o=o|0,(s[o+984>>0]|0)!=0|0}function An(o,l){o=o|0,l=l|0,l6e(o,l,400)|0&&(Qr(o|0,l|0,400)|0,Oe(o))}function li(o){o=o|0;var l=$e;return l=y(h[o+44>>2]),o=Mt(l)|0,y(o?y(0):l)}function qi(o){o=o|0;var l=$e;return l=y(h[o+48>>2]),Mt(l)|0&&(l=s[(n[o+976>>2]|0)+2>>0]|0?y(1):y(0)),y(l)}function Tn(o,l){o=o|0,l=l|0,n[o+980>>2]=l}function Ga(o){return o=o|0,n[o+980>>2]|0}function my(o,l){o=o|0,l=l|0;var u=0;u=o+4|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Z1(o){return o=o|0,n[o+4>>2]|0}function vo(o,l){o=o|0,l=l|0;var u=0;u=o+8|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function yy(o){return o=o|0,n[o+8>>2]|0}function Eh(o,l){o=o|0,l=l|0;var u=0;u=o+12|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function $1(o){return o=o|0,n[o+12>>2]|0}function So(o,l){o=o|0,l=l|0;var u=0;u=o+16|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Ih(o){return o=o|0,n[o+16>>2]|0}function Ch(o,l){o=o|0,l=l|0;var u=0;u=o+20|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function hu(o){return o=o|0,n[o+20>>2]|0}function wh(o,l){o=o|0,l=l|0;var u=0;u=o+24|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Fg(o){return o=o|0,n[o+24>>2]|0}function Ng(o,l){o=o|0,l=l|0;var u=0;u=o+28|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Og(o){return o=o|0,n[o+28>>2]|0}function Ey(o,l){o=o|0,l=l|0;var u=0;u=o+32|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function df(o){return o=o|0,n[o+32>>2]|0}function Do(o,l){o=o|0,l=l|0;var u=0;u=o+36|0,(n[u>>2]|0)!=(l|0)&&(n[u>>2]=l,Oe(o))}function Sl(o){return o=o|0,n[o+36>>2]|0}function Bh(o,l){o=o|0,l=y(l);var u=0;u=o+40|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Lg(o,l){o=o|0,l=y(l);var u=0;u=o+44|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function Dl(o,l){o=o|0,l=y(l);var u=0;u=o+48|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function bl(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+52|0,d=o+56|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Iy(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+52|0,u=o+56|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function UA(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+52|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Cy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function wy(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+132+(l<<3)|0,l=o+132+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function _A(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+132+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function HA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function Y(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+60+(l<<3)|0,l=o+60+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function xt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+60+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function jA(o,l){o=o|0,l=l|0;var u=0;u=o+60+(l<<3)+4|0,(n[u>>2]|0)!=3&&(h[o+60+(l<<3)>>2]=y(le),n[u>>2]=3,Oe(o))}function bo(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function mf(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=m?0:2,d=o+204+(l<<3)|0,l=o+204+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function yt(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=l+204+(u<<3)|0,l=n[A+4>>2]|0,u=o,n[u>>2]=n[A>>2],n[u+4>>2]=l}function gu(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0,m=0;m=Mt(u)|0,A=(m^1)&1,d=o+276+(l<<3)|0,l=o+276+(l<<3)+4|0,m|y(h[d>>2])==u&&(n[l>>2]|0)==(A|0)||(h[d>>2]=u,n[l>>2]=A,Oe(o))}function By(o,l){return o=o|0,l=l|0,y(h[o+276+(l<<3)>>2])}function Mg(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+348|0,d=o+352|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function e2(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+348|0,u=o+352|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function vh(o){o=o|0;var l=0;l=o+352|0,(n[l>>2]|0)!=3&&(h[o+348>>2]=y(le),n[l>>2]=3,Oe(o))}function ur(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+348|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function zi(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+356|0,d=o+360|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function yf(o,l){o=o|0,l=y(l);var u=0,A=0;A=o+356|0,u=o+360|0,y(h[A>>2])==l&&(n[u>>2]|0)==2||(h[A>>2]=l,A=Mt(l)|0,n[u>>2]=A?3:2,Oe(o))}function qa(o){o=o|0;var l=0;l=o+360|0,(n[l>>2]|0)!=3&&(h[o+356>>2]=y(le),n[l>>2]=3,Oe(o))}function Ug(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+356|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function du(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ef(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+364|0,d=o+368|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function wt(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+364|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function di(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function GA(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+372|0,d=o+376|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Wa(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+372|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Aa(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Ya(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+380|0,d=o+384|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function _g(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+380|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function Sh(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=(m^1)&1,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function Hg(o,l){o=o|0,l=y(l);var u=0,A=0,d=0,m=0;m=Mt(l)|0,u=m?0:2,A=o+388|0,d=o+392|0,m|y(h[A>>2])==l&&(n[d>>2]|0)==(u|0)||(h[A>>2]=l,n[d>>2]=u,Oe(o))}function vy(o,l){o=o|0,l=l|0;var u=0,A=0;A=l+388|0,u=n[A+4>>2]|0,l=o,n[l>>2]=n[A>>2],n[l+4>>2]=u}function qA(o,l){o=o|0,l=y(l);var u=0;u=o+396|0,y(h[u>>2])!=l&&(h[u>>2]=l,Oe(o))}function jg(o){return o=o|0,y(h[o+396>>2])}function mu(o){return o=o|0,y(h[o+400>>2])}function yu(o){return o=o|0,y(h[o+404>>2])}function If(o){return o=o|0,y(h[o+408>>2])}function Rs(o){return o=o|0,y(h[o+412>>2])}function Eu(o){return o=o|0,y(h[o+416>>2])}function Gn(o){return o=o|0,y(h[o+420>>2])}function is(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+424+(l<<2)>>2])}function Pi(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+448+(l<<2)>>2])}function WA(o,l){switch(o=o|0,l=l|0,wi(o,(l|0)<6,2918),l|0){case 0:{l=(n[o+496>>2]|0)==2?5:4;break}case 2:{l=(n[o+496>>2]|0)==2?4:5;break}default:}return y(h[o+472+(l<<2)>>2])}function Cf(o,l){o=o|0,l=l|0;var u=0,A=$e;return u=n[o+4>>2]|0,(u|0)==(n[l+4>>2]|0)?u?(A=y(h[o>>2]),o=y(se(y(A-y(h[l>>2]))))<y(999999974e-13)):o=1:o=0,o|0}function mn(o,l){o=y(o),l=y(l);var u=0;return Mt(o)|0?u=Mt(l)|0:u=y(se(y(o-l)))<y(999999974e-13),u|0}function Gg(o,l){o=o|0,l=l|0,qg(o,l)}function qg(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u+4|0,n[A>>2]=0,n[A+4>>2]=0,n[A+8>>2]=0,cu(A|0,o|0,l|0,0),xo(o,3,(s[A+11>>0]|0)<0?n[A>>2]|0:A,u),Q6e(A),I=u}function ss(o,l,u,A){o=y(o),l=y(l),u=u|0,A=A|0;var d=$e;o=y(o*l),d=y(uU(o,y(1)));do if(mn(d,y(0))|0)o=y(o-d);else{if(o=y(o-d),mn(d,y(1))|0){o=y(o+y(1));break}if(u){o=y(o+y(1));break}A||(d>y(.5)?d=y(1):(A=mn(d,y(.5))|0,d=y(A?1:0)),o=y(o+d))}while(!1);return y(o/l)}function Pl(o,l,u,A,d,m,B,k,T,M,L,q,ae){o=o|0,l=y(l),u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,k=y(k),T=y(T),M=y(M),L=y(L),q=y(q),ae=ae|0;var Ye=0,Le=$e,Qe=$e,tt=$e,Ze=$e,ct=$e,He=$e;return T<y(0)|M<y(0)?ae=0:(ae|0&&(Le=y(h[ae+4>>2]),Le!=y(0))?(tt=y(ss(l,Le,0,0)),Ze=y(ss(A,Le,0,0)),Qe=y(ss(m,Le,0,0)),Le=y(ss(k,Le,0,0))):(Qe=m,tt=l,Le=k,Ze=A),(d|0)==(o|0)?Ye=mn(Qe,tt)|0:Ye=0,(B|0)==(u|0)?ae=mn(Le,Ze)|0:ae=0,!Ye&&(ct=y(l-L),!(Po(o,ct,T)|0))&&!(wf(o,ct,d,T)|0)?Ye=Bf(o,ct,d,m,T)|0:Ye=1,!ae&&(He=y(A-q),!(Po(u,He,M)|0))&&!(wf(u,He,B,M)|0)?ae=Bf(u,He,B,k,M)|0:ae=1,ae=Ye&ae),ae|0}function Po(o,l,u){return o=o|0,l=y(l),u=y(u),(o|0)==1?o=mn(l,u)|0:o=0,o|0}function wf(o,l,u,A){return o=o|0,l=y(l),u=u|0,A=y(A),(o|0)==2&(u|0)==0?l>=A?o=1:o=mn(l,A)|0:o=0,o|0}function Bf(o,l,u,A,d){return o=o|0,l=y(l),u=u|0,A=y(A),d=y(d),(o|0)==2&(u|0)==2&A>l?d<=l?o=1:o=mn(l,d)|0:o=0,o|0}function xl(o,l,u,A,d,m,B,k,T,M,L){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),T=T|0,M=M|0,L=L|0;var q=0,ae=0,Ye=0,Le=0,Qe=$e,tt=$e,Ze=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=$e,To=$e,Ro=$e,Fo=0,Za=0;cr=I,I=I+160|0,$t=cr+152|0,fr=cr+120|0,Gr=cr+104|0,He=cr+72|0,Le=cr+56|0,Lt=cr+8|0,ct=cr,We=(n[2279]|0)+1|0,n[2279]=We,Tr=o+984|0,s[Tr>>0]|0&&(n[o+512>>2]|0)!=(n[2278]|0)?Ze=4:(n[o+516>>2]|0)==(A|0)?Hr=0:Ze=4,(Ze|0)==4&&(n[o+520>>2]=0,n[o+924>>2]=-1,n[o+928>>2]=-1,h[o+932>>2]=y(-1),h[o+936>>2]=y(-1),Hr=1);e:do if(n[o+964>>2]|0)if(Qe=y(yn(o,2,B)),tt=y(yn(o,0,B)),q=o+916|0,Ro=y(h[q>>2]),To=y(h[o+920>>2]),Hn=y(h[o+932>>2]),Pl(d,l,m,u,n[o+924>>2]|0,Ro,n[o+928>>2]|0,To,Hn,y(h[o+936>>2]),Qe,tt,L)|0)Ze=22;else if(Ye=n[o+520>>2]|0,!Ye)Ze=21;else for(ae=0;;){if(q=o+524+(ae*24|0)|0,Hn=y(h[q>>2]),To=y(h[o+524+(ae*24|0)+4>>2]),Ro=y(h[o+524+(ae*24|0)+16>>2]),Pl(d,l,m,u,n[o+524+(ae*24|0)+8>>2]|0,Hn,n[o+524+(ae*24|0)+12>>2]|0,To,Ro,y(h[o+524+(ae*24|0)+20>>2]),Qe,tt,L)|0){Ze=22;break e}if(ae=ae+1|0,ae>>>0>=Ye>>>0){Ze=21;break}}else{if(T){if(q=o+916|0,!(mn(y(h[q>>2]),l)|0)){Ze=21;break}if(!(mn(y(h[o+920>>2]),u)|0)){Ze=21;break}if((n[o+924>>2]|0)!=(d|0)){Ze=21;break}q=(n[o+928>>2]|0)==(m|0)?q:0,Ze=22;break}if(Ye=n[o+520>>2]|0,!Ye)Ze=21;else for(ae=0;;){if(q=o+524+(ae*24|0)|0,mn(y(h[q>>2]),l)|0&&mn(y(h[o+524+(ae*24|0)+4>>2]),u)|0&&(n[o+524+(ae*24|0)+8>>2]|0)==(d|0)&&(n[o+524+(ae*24|0)+12>>2]|0)==(m|0)){Ze=22;break e}if(ae=ae+1|0,ae>>>0>=Ye>>>0){Ze=21;break}}}while(!1);do if((Ze|0)==21)s[11697]|0?(q=0,Ze=28):(q=0,Ze=31);else if((Ze|0)==22){if(ae=(s[11697]|0)!=0,!((q|0)!=0&(Hr^1)))if(ae){Ze=28;break}else{Ze=31;break}Le=q+16|0,n[o+908>>2]=n[Le>>2],Ye=q+20|0,n[o+912>>2]=n[Ye>>2],(s[11698]|0)==0|ae^1||(n[ct>>2]=Iu(We)|0,n[ct+4>>2]=We,xo(o,4,2972,ct),ae=n[o+972>>2]|0,ae|0&&ip[ae&127](o),d=pa(d,T)|0,m=pa(m,T)|0,Za=+y(h[Le>>2]),Fo=+y(h[Ye>>2]),n[Lt>>2]=d,n[Lt+4>>2]=m,E[Lt+8>>3]=+l,E[Lt+16>>3]=+u,E[Lt+24>>3]=Za,E[Lt+32>>3]=Fo,n[Lt+40>>2]=M,xo(o,4,2989,Lt))}while(!1);return(Ze|0)==28&&(ae=Iu(We)|0,n[Le>>2]=ae,n[Le+4>>2]=We,n[Le+8>>2]=Hr?3047:11699,xo(o,4,3038,Le),ae=n[o+972>>2]|0,ae|0&&ip[ae&127](o),Lt=pa(d,T)|0,Ze=pa(m,T)|0,n[He>>2]=Lt,n[He+4>>2]=Ze,E[He+8>>3]=+l,E[He+16>>3]=+u,n[He+24>>2]=M,xo(o,4,3049,He),Ze=31),(Ze|0)==31&&(Fs(o,l,u,A,d,m,B,k,T,L),s[11697]|0&&(ae=n[2279]|0,Lt=Iu(ae)|0,n[Gr>>2]=Lt,n[Gr+4>>2]=ae,n[Gr+8>>2]=Hr?3047:11699,xo(o,4,3083,Gr),ae=n[o+972>>2]|0,ae|0&&ip[ae&127](o),Lt=pa(d,T)|0,Gr=pa(m,T)|0,Fo=+y(h[o+908>>2]),Za=+y(h[o+912>>2]),n[fr>>2]=Lt,n[fr+4>>2]=Gr,E[fr+8>>3]=Fo,E[fr+16>>3]=Za,n[fr+24>>2]=M,xo(o,4,3092,fr)),n[o+516>>2]=A,q||(ae=o+520|0,q=n[ae>>2]|0,(q|0)==16&&(s[11697]|0&&xo(o,4,3124,$t),n[ae>>2]=0,q=0),T?q=o+916|0:(n[ae>>2]=q+1,q=o+524+(q*24|0)|0),h[q>>2]=l,h[q+4>>2]=u,n[q+8>>2]=d,n[q+12>>2]=m,n[q+16>>2]=n[o+908>>2],n[q+20>>2]=n[o+912>>2],q=0)),T&&(n[o+416>>2]=n[o+908>>2],n[o+420>>2]=n[o+912>>2],s[o+985>>0]=1,s[Tr>>0]=0),n[2279]=(n[2279]|0)+-1,n[o+512>>2]=n[2278],I=cr,Hr|(q|0)==0|0}function yn(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(K(o,l,u)),y(A+y(re(o,l,u)))}function xo(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=I,I=I+16|0,d=m,n[d>>2]=A,o?A=n[o+976>>2]|0:A=0,Ph(A,o,l,u,d),I=m}function Iu(o){return o=o|0,(o>>>0>60?3201:3201+(60-o)|0)|0}function pa(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+32|0,u=d+12|0,A=d,n[u>>2]=n[254],n[u+4>>2]=n[255],n[u+8>>2]=n[256],n[A>>2]=n[257],n[A+4>>2]=n[258],n[A+8>>2]=n[259],(o|0)>2?o=11699:o=n[(l?A:u)+(o<<2)>>2]|0,I=d,o|0}function Fs(o,l,u,A,d,m,B,k,T,M){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=m|0,B=y(B),k=y(k),T=T|0,M=M|0;var L=0,q=0,ae=0,Ye=0,Le=$e,Qe=$e,tt=$e,Ze=$e,ct=$e,He=$e,We=$e,Lt=0,Gr=0,fr=0,$t=$e,Tr=$e,Hr=0,cr=$e,Hn=0,To=0,Ro=0,Fo=0,Za=0,Wh=0,Yh=0,gc=0,Vh=0,Rf=0,Ff=0,Jh=0,Kh=0,zh=0,ln=0,dc=0,Xh=0,Pu=0,Zh=$e,$h=$e,Nf=$e,Of=$e,xu=$e,oo=0,Ll=0,ma=0,mc=0,op=0,ap=$e,Lf=$e,lp=$e,cp=$e,ao=$e,Ms=$e,yc=0,Wn=$e,up=$e,No=$e,ku=$e,Oo=$e,Qu=$e,fp=0,Ap=0,Tu=$e,lo=$e,Ec=0,pp=0,hp=0,gp=0,Nr=$e,ui=0,Us=0,Lo=0,co=0,Mr=0,Ar=0,Ic=0,zt=$e,dp=0,Bi=0;Ic=I,I=I+16|0,oo=Ic+12|0,Ll=Ic+8|0,ma=Ic+4|0,mc=Ic,wi(o,(d|0)==0|(Mt(l)|0)^1,3326),wi(o,(m|0)==0|(Mt(u)|0)^1,3406),Us=At(o,A)|0,n[o+496>>2]=Us,Mr=dr(2,Us)|0,Ar=dr(0,Us)|0,h[o+440>>2]=y(K(o,Mr,B)),h[o+444>>2]=y(re(o,Mr,B)),h[o+428>>2]=y(K(o,Ar,B)),h[o+436>>2]=y(re(o,Ar,B)),h[o+464>>2]=y(vr(o,Mr)),h[o+468>>2]=y(Un(o,Mr)),h[o+452>>2]=y(vr(o,Ar)),h[o+460>>2]=y(Un(o,Ar)),h[o+488>>2]=y(mi(o,Mr,B)),h[o+492>>2]=y(Cs(o,Mr,B)),h[o+476>>2]=y(mi(o,Ar,B)),h[o+484>>2]=y(Cs(o,Ar,B));do if(n[o+964>>2]|0)JA(o,l,u,d,m,B,k);else{if(Lo=o+948|0,co=(n[o+952>>2]|0)-(n[Lo>>2]|0)>>2,!co){lP(o,l,u,d,m,B,k);break}if(!T&&t2(o,l,u,d,m,B,k)|0)break;te(o),dc=o+508|0,s[dc>>0]=0,Mr=dr(n[o+4>>2]|0,Us)|0,Ar=by(Mr,Us)|0,ui=de(Mr)|0,Xh=n[o+8>>2]|0,pp=o+28|0,Pu=(n[pp>>2]|0)!=0,Oo=ui?B:k,Tu=ui?k:B,Zh=y(kh(o,Mr,B)),$h=y(r2(o,Mr,B)),Le=y(kh(o,Ar,B)),Qu=y(Va(o,Mr,B)),lo=y(Va(o,Ar,B)),fr=ui?d:m,Ec=ui?m:d,Nr=ui?Qu:lo,ct=ui?lo:Qu,ku=y(yn(o,2,B)),Ze=y(yn(o,0,B)),Qe=y(y(Zr(o+364|0,B))-Nr),tt=y(y(Zr(o+380|0,B))-Nr),He=y(y(Zr(o+372|0,k))-ct),We=y(y(Zr(o+388|0,k))-ct),Nf=ui?Qe:He,Of=ui?tt:We,ku=y(l-ku),l=y(ku-Nr),Mt(l)|0?Nr=l:Nr=y($n(y(pd(l,tt)),Qe)),up=y(u-Ze),l=y(up-ct),Mt(l)|0?No=l:No=y($n(y(pd(l,We)),He)),Qe=ui?Nr:No,Wn=ui?No:Nr;e:do if((fr|0)==1)for(A=0,q=0;;){if(L=Is(o,q)|0,!A)y(KA(L))>y(0)&&y(Qh(L))>y(0)?A=L:A=0;else if(n2(L)|0){Ye=0;break e}if(q=q+1|0,q>>>0>=co>>>0){Ye=A;break}}else Ye=0;while(!1);Lt=Ye+500|0,Gr=Ye+504|0,A=0,L=0,l=y(0),ae=0;do{if(q=n[(n[Lo>>2]|0)+(ae<<2)>>2]|0,(n[q+36>>2]|0)==1)Py(q),s[q+985>>0]=1,s[q+984>>0]=0;else{vf(q),T&&bh(q,At(q,Us)|0,Qe,Wn,Nr);do if((n[q+24>>2]|0)!=1)if((q|0)==(Ye|0)){n[Lt>>2]=n[2278],h[Gr>>2]=y(0);break}else{cP(o,q,Nr,d,No,Nr,No,m,Us,M);break}else L|0&&(n[L+960>>2]=q),n[q+960>>2]=0,L=q,A=A|0?A:q;while(!1);Ms=y(h[q+504>>2]),l=y(l+y(Ms+y(yn(q,Mr,Nr))))}ae=ae+1|0}while((ae|0)!=(co|0));for(Ro=l>Qe,yc=Pu&((fr|0)==2&Ro)?1:fr,Hn=(Ec|0)==1,Za=Hn&(T^1),Wh=(yc|0)==1,Yh=(yc|0)==2,gc=976+(Mr<<2)|0,Vh=(Ec|2|0)==2,zh=Hn&(Pu^1),Rf=1040+(Ar<<2)|0,Ff=1040+(Mr<<2)|0,Jh=976+(Ar<<2)|0,Kh=(Ec|0)!=1,Ro=Pu&((fr|0)!=0&Ro),To=o+976|0,Hn=Hn^1,l=Qe,Hr=0,Fo=0,Ms=y(0),xu=y(0);;){e:do if(Hr>>>0<co>>>0)for(Gr=n[Lo>>2]|0,ae=0,We=y(0),He=y(0),tt=y(0),Qe=y(0),q=0,L=0,Ye=Hr;;){if(Lt=n[Gr+(Ye<<2)>>2]|0,(n[Lt+36>>2]|0)!=1&&(n[Lt+940>>2]=Fo,(n[Lt+24>>2]|0)!=1)){if(Ze=y(yn(Lt,Mr,Nr)),ln=n[gc>>2]|0,u=y(Zr(Lt+380+(ln<<3)|0,Oo)),ct=y(h[Lt+504>>2]),u=y(pd(u,ct)),u=y($n(y(Zr(Lt+364+(ln<<3)|0,Oo)),u)),Pu&(ae|0)!=0&y(Ze+y(He+u))>l){m=ae,Ze=We,fr=Ye;break e}Ze=y(Ze+u),u=y(He+Ze),Ze=y(We+Ze),n2(Lt)|0&&(tt=y(tt+y(KA(Lt))),Qe=y(Qe-y(ct*y(Qh(Lt))))),L|0&&(n[L+960>>2]=Lt),n[Lt+960>>2]=0,ae=ae+1|0,L=Lt,q=q|0?q:Lt}else Ze=We,u=He;if(Ye=Ye+1|0,Ye>>>0<co>>>0)We=Ze,He=u;else{m=ae,fr=Ye;break}}else m=0,Ze=y(0),tt=y(0),Qe=y(0),q=0,fr=Hr;while(!1);ln=tt>y(0)&tt<y(1),$t=ln?y(1):tt,ln=Qe>y(0)&Qe<y(1),We=ln?y(1):Qe;do if(Wh)ln=51;else if(Ze<Nf&((Mt(Nf)|0)^1))l=Nf,ln=51;else if(Ze>Of&((Mt(Of)|0)^1))l=Of,ln=51;else if(s[(n[To>>2]|0)+3>>0]|0)ln=51;else{if($t!=y(0)&&y(KA(o))!=y(0)){ln=53;break}l=Ze,ln=53}while(!1);if((ln|0)==51&&(ln=0,Mt(l)|0?ln=53:(Tr=y(l-Ze),cr=l)),(ln|0)==53&&(ln=0,Ze<y(0)?(Tr=y(-Ze),cr=l):(Tr=y(0),cr=l)),!Za&&(op=(q|0)==0,!op)){ae=n[gc>>2]|0,Ye=Tr<y(0),ct=y(Tr/We),Lt=Tr>y(0),He=y(Tr/$t),tt=y(0),Ze=y(0),l=y(0),L=q;do u=y(Zr(L+380+(ae<<3)|0,Oo)),Qe=y(Zr(L+364+(ae<<3)|0,Oo)),Qe=y(pd(u,y($n(Qe,y(h[L+504>>2]))))),Ye?(u=y(Qe*y(Qh(L))),u!=y(-0)&&(zt=y(Qe-y(ct*u)),ap=y(qn(L,Mr,zt,cr,Nr)),zt!=ap)&&(tt=y(tt-y(ap-Qe)),l=y(l+u))):Lt&&(Lf=y(KA(L)),Lf!=y(0))&&(zt=y(Qe+y(He*Lf)),lp=y(qn(L,Mr,zt,cr,Nr)),zt!=lp)&&(tt=y(tt-y(lp-Qe)),Ze=y(Ze-Lf)),L=n[L+960>>2]|0;while(L|0);if(l=y(We+l),Qe=y(Tr+tt),op)l=y(0);else{ct=y($t+Ze),Ye=n[gc>>2]|0,Lt=Qe<y(0),Gr=l==y(0),He=y(Qe/l),ae=Qe>y(0),ct=y(Qe/ct),l=y(0);do{zt=y(Zr(q+380+(Ye<<3)|0,Oo)),tt=y(Zr(q+364+(Ye<<3)|0,Oo)),tt=y(pd(zt,y($n(tt,y(h[q+504>>2]))))),Lt?(zt=y(tt*y(Qh(q))),Qe=y(-zt),zt!=y(-0)?(zt=y(He*Qe),Qe=y(qn(q,Mr,y(tt+(Gr?Qe:zt)),cr,Nr))):Qe=tt):ae&&(cp=y(KA(q)),cp!=y(0))?Qe=y(qn(q,Mr,y(tt+y(ct*cp)),cr,Nr)):Qe=tt,l=y(l-y(Qe-tt)),Ze=y(yn(q,Mr,Nr)),u=y(yn(q,Ar,Nr)),Qe=y(Qe+Ze),h[Ll>>2]=Qe,n[mc>>2]=1,tt=y(h[q+396>>2]);e:do if(Mt(tt)|0){L=Mt(Wn)|0;do if(!L){if(Ro|(io(q,Ar,Wn)|0|Hn)||(os(o,q)|0)!=4||(n[(kl(q,Ar)|0)+4>>2]|0)==3||(n[(Ql(q,Ar)|0)+4>>2]|0)==3)break;h[oo>>2]=Wn,n[ma>>2]=1;break e}while(!1);if(io(q,Ar,Wn)|0){L=n[q+992+(n[Jh>>2]<<2)>>2]|0,zt=y(u+y(Zr(L,Wn))),h[oo>>2]=zt,L=Kh&(n[L+4>>2]|0)==2,n[ma>>2]=((Mt(zt)|0|L)^1)&1;break}else{h[oo>>2]=Wn,n[ma>>2]=L?0:2;break}}else zt=y(Qe-Ze),$t=y(zt/tt),zt=y(tt*zt),n[ma>>2]=1,h[oo>>2]=y(u+(ui?$t:zt));while(!1);Cu(q,Mr,cr,Nr,mc,Ll),Cu(q,Ar,Wn,Nr,ma,oo);do if(!(io(q,Ar,Wn)|0)&&(os(o,q)|0)==4){if((n[(kl(q,Ar)|0)+4>>2]|0)==3){L=0;break}L=(n[(Ql(q,Ar)|0)+4>>2]|0)!=3}else L=0;while(!1);zt=y(h[Ll>>2]),$t=y(h[oo>>2]),dp=n[mc>>2]|0,Bi=n[ma>>2]|0,xl(q,ui?zt:$t,ui?$t:zt,Us,ui?dp:Bi,ui?Bi:dp,Nr,No,T&(L^1),3488,M)|0,s[dc>>0]=s[dc>>0]|s[q+508>>0],q=n[q+960>>2]|0}while(q|0)}}else l=y(0);if(l=y(Tr+l),Bi=l<y(0)&1,s[dc>>0]=Bi|c[dc>>0],Yh&l>y(0)?(L=n[gc>>2]|0,n[o+364+(L<<3)+4>>2]|0&&(ao=y(Zr(o+364+(L<<3)|0,Oo)),ao>=y(0))?Qe=y($n(y(0),y(ao-y(cr-l)))):Qe=y(0)):Qe=l,Lt=Hr>>>0<fr>>>0,Lt){Ye=n[Lo>>2]|0,ae=Hr,L=0;do q=n[Ye+(ae<<2)>>2]|0,n[q+24>>2]|0||(L=((n[(kl(q,Mr)|0)+4>>2]|0)==3&1)+L|0,L=L+((n[(Ql(q,Mr)|0)+4>>2]|0)==3&1)|0),ae=ae+1|0;while((ae|0)!=(fr|0));L?(Ze=y(0),u=y(0)):ln=101}else ln=101;e:do if((ln|0)==101)switch(ln=0,Xh|0){case 1:{L=0,Ze=y(Qe*y(.5)),u=y(0);break e}case 2:{L=0,Ze=Qe,u=y(0);break e}case 3:{if(m>>>0<=1){L=0,Ze=y(0),u=y(0);break e}u=y((m+-1|0)>>>0),L=0,Ze=y(0),u=y(y($n(Qe,y(0)))/u);break e}case 5:{u=y(Qe/y((m+1|0)>>>0)),L=0,Ze=u;break e}case 4:{u=y(Qe/y(m>>>0)),L=0,Ze=y(u*y(.5));break e}default:{L=0,Ze=y(0),u=y(0);break e}}while(!1);if(l=y(Zh+Ze),Lt){tt=y(Qe/y(L|0)),ae=n[Lo>>2]|0,q=Hr,Qe=y(0);do{L=n[ae+(q<<2)>>2]|0;e:do if((n[L+36>>2]|0)!=1){switch(n[L+24>>2]|0){case 1:{if(ha(L,Mr)|0){if(!T)break e;zt=y(zA(L,Mr,cr)),zt=y(zt+y(vr(o,Mr))),zt=y(zt+y(K(L,Mr,Nr))),h[L+400+(n[Ff>>2]<<2)>>2]=zt;break e}break}case 0:if(Bi=(n[(kl(L,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,T&&(Bi=L+400+(n[Ff>>2]<<2)|0,h[Bi>>2]=y(l+y(h[Bi>>2]))),Bi=(n[(Ql(L,Mr)|0)+4>>2]|0)==3,zt=y(tt+l),l=Bi?zt:l,Za){zt=y(u+y(yn(L,Mr,Nr))),Qe=Wn,l=y(l+y(zt+y(h[L+504>>2])));break e}else{l=y(l+y(u+y(XA(L,Mr,Nr)))),Qe=y($n(Qe,y(XA(L,Ar,Nr))));break e}default:}T&&(zt=y(Ze+y(vr(o,Mr))),Bi=L+400+(n[Ff>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2])))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}else Qe=y(0);if(u=y($h+l),Vh?Ze=y(y(qn(o,Ar,y(lo+Qe),Tu,B))-lo):Ze=Wn,tt=y(y(qn(o,Ar,y(lo+(zh?Wn:Qe)),Tu,B))-lo),Lt&T){q=Hr;do{ae=n[(n[Lo>>2]|0)+(q<<2)>>2]|0;do if((n[ae+36>>2]|0)!=1){if((n[ae+24>>2]|0)==1){if(ha(ae,Ar)|0){if(zt=y(zA(ae,Ar,Wn)),zt=y(zt+y(vr(o,Ar))),zt=y(zt+y(K(ae,Ar,Nr))),L=n[Rf>>2]|0,h[ae+400+(L<<2)>>2]=zt,!(Mt(zt)|0))break}else L=n[Rf>>2]|0;zt=y(vr(o,Ar)),h[ae+400+(L<<2)>>2]=y(zt+y(K(ae,Ar,Nr)));break}L=os(o,ae)|0;do if((L|0)==4){if((n[(kl(ae,Ar)|0)+4>>2]|0)==3){ln=139;break}if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){ln=139;break}if(io(ae,Ar,Wn)|0){l=Le;break}dp=n[ae+908+(n[gc>>2]<<2)>>2]|0,n[oo>>2]=dp,l=y(h[ae+396>>2]),Bi=Mt(l)|0,Qe=(n[S>>2]=dp,y(h[S>>2])),Bi?l=tt:(Tr=y(yn(ae,Ar,Nr)),zt=y(Qe/l),l=y(l*Qe),l=y(Tr+(ui?zt:l))),h[Ll>>2]=l,h[oo>>2]=y(y(yn(ae,Mr,Nr))+Qe),n[ma>>2]=1,n[mc>>2]=1,Cu(ae,Mr,cr,Nr,ma,oo),Cu(ae,Ar,Wn,Nr,mc,Ll),l=y(h[oo>>2]),Tr=y(h[Ll>>2]),zt=ui?l:Tr,l=ui?Tr:l,Bi=((Mt(zt)|0)^1)&1,xl(ae,zt,l,Us,Bi,((Mt(l)|0)^1)&1,Nr,No,1,3493,M)|0,l=Le}else ln=139;while(!1);e:do if((ln|0)==139){ln=0,l=y(Ze-y(XA(ae,Ar,Nr)));do if((n[(kl(ae,Ar)|0)+4>>2]|0)==3){if((n[(Ql(ae,Ar)|0)+4>>2]|0)!=3)break;l=y(Le+y($n(y(0),y(l*y(.5)))));break e}while(!1);if((n[(Ql(ae,Ar)|0)+4>>2]|0)==3){l=Le;break}if((n[(kl(ae,Ar)|0)+4>>2]|0)==3){l=y(Le+y($n(y(0),l)));break}switch(L|0){case 1:{l=Le;break e}case 2:{l=y(Le+y(l*y(.5)));break e}default:{l=y(Le+l);break e}}}while(!1);zt=y(Ms+l),Bi=ae+400+(n[Rf>>2]<<2)|0,h[Bi>>2]=y(zt+y(h[Bi>>2]))}while(!1);q=q+1|0}while((q|0)!=(fr|0))}if(Ms=y(Ms+tt),xu=y($n(xu,u)),m=Fo+1|0,fr>>>0>=co>>>0)break;l=cr,Hr=fr,Fo=m}do if(T){if(L=m>>>0>1,!L&&!(jL(o)|0))break;if(!(Mt(Wn)|0)){l=y(Wn-Ms);e:do switch(n[o+12>>2]|0){case 3:{Le=y(Le+l),He=y(0);break}case 2:{Le=y(Le+y(l*y(.5))),He=y(0);break}case 4:{Wn>Ms?He=y(l/y(m>>>0)):He=y(0);break}case 7:if(Wn>Ms){Le=y(Le+y(l/y(m<<1>>>0))),He=y(l/y(m>>>0)),He=L?He:y(0);break e}else{Le=y(Le+y(l*y(.5))),He=y(0);break e}case 6:{He=y(l/y(Fo>>>0)),He=Wn>Ms&L?He:y(0);break}default:He=y(0)}while(!1);if(m|0)for(Lt=1040+(Ar<<2)|0,Gr=976+(Ar<<2)|0,Ye=0,q=0;;){e:do if(q>>>0<co>>>0)for(Qe=y(0),tt=y(0),l=y(0),ae=q;;){L=n[(n[Lo>>2]|0)+(ae<<2)>>2]|0;do if((n[L+36>>2]|0)!=1&&!(n[L+24>>2]|0)){if((n[L+940>>2]|0)!=(Ye|0))break e;if(qL(L,Ar)|0&&(zt=y(h[L+908+(n[Gr>>2]<<2)>>2]),l=y($n(l,y(zt+y(yn(L,Ar,Nr)))))),(os(o,L)|0)!=5)break;ao=y(Yg(L)),ao=y(ao+y(K(L,0,Nr))),zt=y(h[L+912>>2]),zt=y(y(zt+y(yn(L,0,Nr)))-ao),ao=y($n(tt,ao)),zt=y($n(Qe,zt)),Qe=zt,tt=ao,l=y($n(l,y(ao+zt)))}while(!1);if(L=ae+1|0,L>>>0<co>>>0)ae=L;else{ae=L;break}}else tt=y(0),l=y(0),ae=q;while(!1);if(ct=y(He+l),u=Le,Le=y(Le+ct),q>>>0<ae>>>0){Ze=y(u+tt),L=q;do{q=n[(n[Lo>>2]|0)+(L<<2)>>2]|0;e:do if((n[q+36>>2]|0)!=1&&!(n[q+24>>2]|0))switch(os(o,q)|0){case 1:{zt=y(u+y(K(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 3:{zt=y(y(Le-y(re(q,Ar,Nr)))-y(h[q+908+(n[Gr>>2]<<2)>>2])),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 2:{zt=y(u+y(y(ct-y(h[q+908+(n[Gr>>2]<<2)>>2]))*y(.5))),h[q+400+(n[Lt>>2]<<2)>>2]=zt;break e}case 4:{if(zt=y(u+y(K(q,Ar,Nr))),h[q+400+(n[Lt>>2]<<2)>>2]=zt,io(q,Ar,Wn)|0||(ui?(Qe=y(h[q+908>>2]),l=y(Qe+y(yn(q,Mr,Nr))),tt=ct):(tt=y(h[q+912>>2]),tt=y(tt+y(yn(q,Ar,Nr))),l=ct,Qe=y(h[q+908>>2])),mn(l,Qe)|0&&mn(tt,y(h[q+912>>2]))|0))break e;xl(q,l,tt,Us,1,1,Nr,No,1,3501,M)|0;break e}case 5:{h[q+404>>2]=y(y(Ze-y(Yg(q)))+y(zA(q,0,Wn)));break e}default:break e}while(!1);L=L+1|0}while((L|0)!=(ae|0))}if(Ye=Ye+1|0,(Ye|0)==(m|0))break;q=ae}}}while(!1);if(h[o+908>>2]=y(qn(o,2,ku,B,B)),h[o+912>>2]=y(qn(o,0,up,k,B)),yc|0&&(fp=n[o+32>>2]|0,Ap=(yc|0)==2,!(Ap&(fp|0)!=2))?Ap&(fp|0)==2&&(l=y(Qu+cr),l=y($n(y(pd(l,y(Vg(o,Mr,xu,Oo)))),Qu)),ln=198):(l=y(qn(o,Mr,xu,Oo,B)),ln=198),(ln|0)==198&&(h[o+908+(n[976+(Mr<<2)>>2]<<2)>>2]=l),Ec|0&&(hp=n[o+32>>2]|0,gp=(Ec|0)==2,!(gp&(hp|0)!=2))?gp&(hp|0)==2&&(l=y(lo+Wn),l=y($n(y(pd(l,y(Vg(o,Ar,y(lo+Ms),Tu)))),lo)),ln=204):(l=y(qn(o,Ar,y(lo+Ms),Tu,B)),ln=204),(ln|0)==204&&(h[o+908+(n[976+(Ar<<2)>>2]<<2)>>2]=l),T){if((n[pp>>2]|0)==2){q=976+(Ar<<2)|0,ae=1040+(Ar<<2)|0,L=0;do Ye=Is(o,L)|0,n[Ye+24>>2]|0||(dp=n[q>>2]|0,zt=y(h[o+908+(dp<<2)>>2]),Bi=Ye+400+(n[ae>>2]<<2)|0,zt=y(zt-y(h[Bi>>2])),h[Bi>>2]=y(zt-y(h[Ye+908+(dp<<2)>>2]))),L=L+1|0;while((L|0)!=(co|0))}if(A|0){L=ui?yc:d;do WL(o,A,Nr,L,No,Us,M),A=n[A+960>>2]|0;while(A|0)}if(L=(Mr|2|0)==3,q=(Ar|2|0)==3,L|q){A=0;do ae=n[(n[Lo>>2]|0)+(A<<2)>>2]|0,(n[ae+36>>2]|0)!=1&&(L&&i2(o,ae,Mr),q&&i2(o,ae,Ar)),A=A+1|0;while((A|0)!=(co|0))}}}while(!1);I=Ic}function Dh(o,l){o=o|0,l=y(l);var u=0;Ha(o,l>=y(0),3147),u=l==y(0),h[o+4>>2]=u?y(0):l}function YA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=A|0;var d=$e,m=$e,B=0,k=0,T=0;n[2278]=(n[2278]|0)+1,vf(o),io(o,2,l)|0?(d=y(Zr(n[o+992>>2]|0,l)),T=1,d=y(d+y(yn(o,2,l)))):(d=y(Zr(o+380|0,l)),d>=y(0)?T=2:(T=((Mt(l)|0)^1)&1,d=l)),io(o,0,u)|0?(m=y(Zr(n[o+996>>2]|0,u)),k=1,m=y(m+y(yn(o,0,l)))):(m=y(Zr(o+388|0,u)),m>=y(0)?k=2:(k=((Mt(u)|0)^1)&1,m=u)),B=o+976|0,xl(o,d,m,A,T,k,l,u,1,3189,n[B>>2]|0)|0&&(bh(o,n[o+496>>2]|0,l,u,l),VA(o,y(h[(n[B>>2]|0)+4>>2]),y(0),y(0)),s[11696]|0)&&Gg(o,7)}function vf(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;k=I,I=I+32|0,B=k+24|0,m=k+16|0,A=k+8|0,d=k,u=0;do l=o+380+(u<<3)|0,n[o+380+(u<<3)+4>>2]|0&&(T=l,M=n[T+4>>2]|0,L=A,n[L>>2]=n[T>>2],n[L+4>>2]=M,L=o+364+(u<<3)|0,M=n[L+4>>2]|0,T=d,n[T>>2]=n[L>>2],n[T+4>>2]=M,n[m>>2]=n[A>>2],n[m+4>>2]=n[A+4>>2],n[B>>2]=n[d>>2],n[B+4>>2]=n[d+4>>2],Cf(m,B)|0)||(l=o+348+(u<<3)|0),n[o+992+(u<<2)>>2]=l,u=u+1|0;while((u|0)!=2);I=k}function io(o,l,u){o=o|0,l=l|0,u=y(u);var A=0;switch(o=n[o+992+(n[976+(l<<2)>>2]<<2)>>2]|0,n[o+4>>2]|0){case 0:case 3:{o=0;break}case 1:{y(h[o>>2])<y(0)?o=0:A=5;break}case 2:{y(h[o>>2])<y(0)?o=0:o=(Mt(u)|0)^1;break}default:A=5}return(A|0)==5&&(o=1),o|0}function Zr(o,l){switch(o=o|0,l=y(l),n[o+4>>2]|0){case 2:{l=y(y(y(h[o>>2])*l)/y(100));break}case 1:{l=y(h[o>>2]);break}default:l=y(le)}return y(l)}function bh(o,l,u,A,d){o=o|0,l=l|0,u=y(u),A=y(A),d=y(d);var m=0,B=$e;l=n[o+944>>2]|0?l:1,m=dr(n[o+4>>2]|0,l)|0,l=by(m,l)|0,u=y(uP(o,m,u)),A=y(uP(o,l,A)),B=y(u+y(K(o,m,d))),h[o+400+(n[1040+(m<<2)>>2]<<2)>>2]=B,u=y(u+y(re(o,m,d))),h[o+400+(n[1e3+(m<<2)>>2]<<2)>>2]=u,u=y(A+y(K(o,l,d))),h[o+400+(n[1040+(l<<2)>>2]<<2)>>2]=u,d=y(A+y(re(o,l,d))),h[o+400+(n[1e3+(l<<2)>>2]<<2)>>2]=d}function VA(o,l,u,A){o=o|0,l=y(l),u=y(u),A=y(A);var d=0,m=0,B=$e,k=$e,T=0,M=0,L=$e,q=0,ae=$e,Ye=$e,Le=$e,Qe=$e;if(l!=y(0)&&(d=o+400|0,Qe=y(h[d>>2]),m=o+404|0,Le=y(h[m>>2]),q=o+416|0,Ye=y(h[q>>2]),M=o+420|0,B=y(h[M>>2]),ae=y(Qe+u),L=y(Le+A),A=y(ae+Ye),k=y(L+B),T=(n[o+988>>2]|0)==1,h[d>>2]=y(ss(Qe,l,0,T)),h[m>>2]=y(ss(Le,l,0,T)),u=y(uU(y(Ye*l),y(1))),mn(u,y(0))|0?m=0:m=(mn(u,y(1))|0)^1,u=y(uU(y(B*l),y(1))),mn(u,y(0))|0?d=0:d=(mn(u,y(1))|0)^1,Qe=y(ss(A,l,T&m,T&(m^1))),h[q>>2]=y(Qe-y(ss(ae,l,0,T))),Qe=y(ss(k,l,T&d,T&(d^1))),h[M>>2]=y(Qe-y(ss(L,l,0,T))),m=(n[o+952>>2]|0)-(n[o+948>>2]|0)>>2,m|0)){d=0;do VA(Is(o,d)|0,l,ae,L),d=d+1|0;while((d|0)!=(m|0))}}function Sy(o,l,u,A,d){switch(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,u|0){case 5:case 0:{o=IZ(n[489]|0,A,d)|0;break}default:o=b6e(A,d)|0}return o|0}function Wg(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;d=I,I=I+16|0,m=d,n[m>>2]=A,Ph(o,0,l,u,m),I=d}function Ph(o,l,u,A,d){if(o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,o=o|0?o:956,HZ[n[o+8>>2]&1](o,l,u,A,d)|0,(u|0)==5)Nt();else return}function pc(o,l,u){o=o|0,l=l|0,u=u|0,s[o+l>>0]=u&1}function Dy(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(xh(o,A),kt(o,n[l>>2]|0,n[u>>2]|0,A))}function xh(o,l){o=o|0,l=l|0;var u=0;if((O(o)|0)>>>0<l>>>0&&an(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function kt(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function O(o){return o=o|0,1073741823}function K(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+96>>2]|0?o=o+92|0:o=kn(o+60|0,n[1040+(l<<2)>>2]|0,992)|0,y(Je(o,u))}function re(o,l,u){return o=o|0,l=l|0,u=y(u),de(l)|0&&n[o+104>>2]|0?o=o+100|0:o=kn(o+60|0,n[1e3+(l<<2)>>2]|0,992)|0,y(Je(o,u))}function de(o){return o=o|0,(o|1|0)==3|0}function Je(o,l){return o=o|0,l=y(l),(n[o+4>>2]|0)==3?l=y(0):l=y(Zr(o,l)),y(l)}function At(o,l){return o=o|0,l=l|0,o=n[o>>2]|0,(o|0?o:(l|0)>1?l:1)|0}function dr(o,l){o=o|0,l=l|0;var u=0;e:do if((l|0)==2){switch(o|0){case 2:{o=3;break e}case 3:break;default:{u=4;break e}}o=2}else u=4;while(!1);return o|0}function vr(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+312>>2]|0&&(u=y(h[o+308>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1040+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function Un(o,l){o=o|0,l=l|0;var u=$e;return de(l)|0&&n[o+320>>2]|0&&(u=y(h[o+316>>2]),u>=y(0))||(u=y($n(y(h[(kn(o+276|0,n[1e3+(l<<2)>>2]|0,992)|0)>>2]),y(0)))),y(u)}function mi(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+240>>2]|0&&(A=y(Zr(o+236|0,u)),A>=y(0))||(A=y($n(y(Zr(kn(o+204|0,n[1040+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function Cs(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return de(l)|0&&n[o+248>>2]|0&&(A=y(Zr(o+244|0,u)),A>=y(0))||(A=y($n(y(Zr(kn(o+204|0,n[1e3+(l<<2)>>2]|0,992)|0,u)),y(0)))),y(A)}function JA(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,T=$e,M=$e,L=$e,q=$e,ae=$e,Ye=0,Le=0,Qe=0;Qe=I,I=I+16|0,Ye=Qe,Le=o+964|0,wi(o,(n[Le>>2]|0)!=0,3519),k=y(Va(o,2,l)),T=y(Va(o,0,l)),M=y(yn(o,2,l)),L=y(yn(o,0,l)),Mt(l)|0?q=l:q=y($n(y(0),y(y(l-M)-k))),Mt(u)|0?ae=u:ae=y($n(y(0),y(y(u-L)-T))),(A|0)==1&(d|0)==1?(h[o+908>>2]=y(qn(o,2,y(l-M),m,m)),l=y(qn(o,0,y(u-L),B,m))):(jZ[n[Le>>2]&1](Ye,o,q,A,ae,d),q=y(k+y(h[Ye>>2])),ae=y(l-M),h[o+908>>2]=y(qn(o,2,(A|2|0)==2?q:ae,m,m)),ae=y(T+y(h[Ye+4>>2])),l=y(u-L),l=y(qn(o,0,(d|2|0)==2?ae:l,B,m))),h[o+912>>2]=l,I=Qe}function lP(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=$e,T=$e,M=$e,L=$e;M=y(Va(o,2,m)),k=y(Va(o,0,m)),L=y(yn(o,2,m)),T=y(yn(o,0,m)),l=y(l-L),h[o+908>>2]=y(qn(o,2,(A|2|0)==2?M:l,m,m)),u=y(u-T),h[o+912>>2]=y(qn(o,0,(d|2|0)==2?k:u,B,m))}function t2(o,l,u,A,d,m,B){o=o|0,l=y(l),u=y(u),A=A|0,d=d|0,m=y(m),B=y(B);var k=0,T=$e,M=$e;return k=(A|0)==2,!(l<=y(0)&k)&&!(u<=y(0)&(d|0)==2)&&!((A|0)==1&(d|0)==1)?o=0:(T=y(yn(o,0,m)),M=y(yn(o,2,m)),k=l<y(0)&k|(Mt(l)|0),l=y(l-M),h[o+908>>2]=y(qn(o,2,k?y(0):l,m,m)),l=y(u-T),k=u<y(0)&(d|0)==2|(Mt(u)|0),h[o+912>>2]=y(qn(o,0,k?y(0):l,B,m)),o=1),o|0}function by(o,l){return o=o|0,l=l|0,Jg(o)|0?o=dr(2,l)|0:o=0,o|0}function kh(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(mi(o,l,u)),y(u+y(vr(o,l)))}function r2(o,l,u){return o=o|0,l=l|0,u=y(u),u=y(Cs(o,l,u)),y(u+y(Un(o,l)))}function Va(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(kh(o,l,u)),y(A+y(r2(o,l,u)))}function n2(o){return o=o|0,n[o+24>>2]|0?o=0:y(KA(o))!=y(0)?o=1:o=y(Qh(o))!=y(0),o|0}function KA(o){o=o|0;var l=$e;if(n[o+944>>2]|0){if(l=y(h[o+44>>2]),Mt(l)|0)return l=y(h[o+40>>2]),o=l>y(0)&((Mt(l)|0)^1),y(o?l:y(0))}else l=y(0);return y(l)}function Qh(o){o=o|0;var l=$e,u=0,A=$e;do if(n[o+944>>2]|0){if(l=y(h[o+48>>2]),Mt(l)|0){if(u=s[(n[o+976>>2]|0)+2>>0]|0,!(u<<24>>24)&&(A=y(h[o+40>>2]),A<y(0)&((Mt(A)|0)^1))){l=y(-A);break}l=u<<24>>24?y(1):y(0)}}else l=y(0);while(!1);return y(l)}function Py(o){o=o|0;var l=0,u=0;if(eE(o+400|0,0,540)|0,s[o+985>>0]=1,te(o),u=Mi(o)|0,u|0){l=o+948|0,o=0;do Py(n[(n[l>>2]|0)+(o<<2)>>2]|0),o=o+1|0;while((o|0)!=(u|0))}}function cP(o,l,u,A,d,m,B,k,T,M){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=y(m),B=y(B),k=k|0,T=T|0,M=M|0;var L=0,q=$e,ae=0,Ye=0,Le=$e,Qe=$e,tt=0,Ze=$e,ct=0,He=$e,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0,To=0;Hn=I,I=I+16|0,Gr=Hn+12|0,fr=Hn+8|0,$t=Hn+4|0,Tr=Hn,cr=dr(n[o+4>>2]|0,T)|0,We=de(cr)|0,q=y(Zr(YL(l)|0,We?m:B)),Lt=io(l,2,m)|0,Hr=io(l,0,B)|0;do if(!(Mt(q)|0)&&!(Mt(We?u:d)|0)){if(L=l+504|0,!(Mt(y(h[L>>2]))|0)&&(!(s2(n[l+976>>2]|0,0)|0)||(n[l+500>>2]|0)==(n[2278]|0)))break;h[L>>2]=y($n(q,y(Va(l,cr,m))))}else ae=7;while(!1);do if((ae|0)==7){if(ct=We^1,!(ct|Lt^1)){B=y(Zr(n[l+992>>2]|0,m)),h[l+504>>2]=y($n(B,y(Va(l,2,m))));break}if(!(We|Hr^1)){B=y(Zr(n[l+996>>2]|0,B)),h[l+504>>2]=y($n(B,y(Va(l,0,m))));break}h[Gr>>2]=y(le),h[fr>>2]=y(le),n[$t>>2]=0,n[Tr>>2]=0,Ze=y(yn(l,2,m)),He=y(yn(l,0,m)),Lt?(Le=y(Ze+y(Zr(n[l+992>>2]|0,m))),h[Gr>>2]=Le,n[$t>>2]=1,Ye=1):(Ye=0,Le=y(le)),Hr?(q=y(He+y(Zr(n[l+996>>2]|0,B))),h[fr>>2]=q,n[Tr>>2]=1,L=1):(L=0,q=y(le)),ae=n[o+32>>2]|0,We&(ae|0)==2?ae=2:Mt(Le)|0&&!(Mt(u)|0)&&(h[Gr>>2]=u,n[$t>>2]=2,Ye=2,Le=u),!((ae|0)==2&ct)&&Mt(q)|0&&!(Mt(d)|0)&&(h[fr>>2]=d,n[Tr>>2]=2,L=2,q=d),Qe=y(h[l+396>>2]),tt=Mt(Qe)|0;do if(tt)ae=Ye;else{if((Ye|0)==1&ct){h[fr>>2]=y(y(Le-Ze)/Qe),n[Tr>>2]=1,L=1,ae=1;break}We&(L|0)==1?(h[Gr>>2]=y(Qe*y(q-He)),n[$t>>2]=1,L=1,ae=1):ae=Ye}while(!1);To=Mt(u)|0,Ye=(os(o,l)|0)!=4,!(We|Lt|((A|0)!=1|To)|(Ye|(ae|0)==1))&&(h[Gr>>2]=u,n[$t>>2]=1,!tt)&&(h[fr>>2]=y(y(u-Ze)/Qe),n[Tr>>2]=1,L=1),!(Hr|ct|((k|0)!=1|(Mt(d)|0))|(Ye|(L|0)==1))&&(h[fr>>2]=d,n[Tr>>2]=1,!tt)&&(h[Gr>>2]=y(Qe*y(d-He)),n[$t>>2]=1),Cu(l,2,m,m,$t,Gr),Cu(l,0,B,m,Tr,fr),u=y(h[Gr>>2]),d=y(h[fr>>2]),xl(l,u,d,T,n[$t>>2]|0,n[Tr>>2]|0,m,B,0,3565,M)|0,B=y(h[l+908+(n[976+(cr<<2)>>2]<<2)>>2]),h[l+504>>2]=y($n(B,y(Va(l,cr,m))))}while(!1);n[l+500>>2]=n[2278],I=Hn}function qn(o,l,u,A,d){return o=o|0,l=l|0,u=y(u),A=y(A),d=y(d),A=y(Vg(o,l,u,A)),y($n(A,y(Va(o,l,d))))}function os(o,l){return o=o|0,l=l|0,l=l+20|0,l=n[(n[l>>2]|0?l:o+16|0)>>2]|0,(l|0)==5&&Jg(n[o+4>>2]|0)|0&&(l=1),l|0}function kl(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+96>>2]|0?l=4:l=n[1040+(l<<2)>>2]|0,o+60+(l<<3)|0}function Ql(o,l){return o=o|0,l=l|0,de(l)|0&&n[o+104>>2]|0?l=5:l=n[1e3+(l<<2)>>2]|0,o+60+(l<<3)|0}function Cu(o,l,u,A,d,m){switch(o=o|0,l=l|0,u=y(u),A=y(A),d=d|0,m=m|0,u=y(Zr(o+380+(n[976+(l<<2)>>2]<<3)|0,u)),u=y(u+y(yn(o,l,A))),n[d>>2]|0){case 2:case 1:{d=Mt(u)|0,A=y(h[m>>2]),h[m>>2]=d|A<u?A:u;break}case 0:{Mt(u)|0||(n[d>>2]=2,h[m>>2]=u);break}default:}}function ha(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,4,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1040+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function zA(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,4,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1040+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Zr(A,u))),y(u)}function XA(o,l,u){o=o|0,l=l|0,u=y(u);var A=$e;return A=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),A=y(A+y(K(o,l,u))),y(A+y(re(o,l,u)))}function jL(o){o=o|0;var l=0,u=0,A=0;e:do if(Jg(n[o+4>>2]|0)|0)l=0;else if((n[o+16>>2]|0)!=5)if(u=Mi(o)|0,!u)l=0;else for(l=0;;){if(A=Is(o,l)|0,!(n[A+24>>2]|0)&&(n[A+20>>2]|0)==5){l=1;break e}if(l=l+1|0,l>>>0>=u>>>0){l=0;break}}else l=1;while(!1);return l|0}function qL(o,l){o=o|0,l=l|0;var u=$e;return u=y(h[o+908+(n[976+(l<<2)>>2]<<2)>>2]),u>=y(0)&((Mt(u)|0)^1)|0}function Yg(o){o=o|0;var l=$e,u=0,A=0,d=0,m=0,B=0,k=0,T=$e;if(u=n[o+968>>2]|0,u)T=y(h[o+908>>2]),l=y(h[o+912>>2]),l=y(LZ[u&0](o,T,l)),wi(o,(Mt(l)|0)^1,3573);else{m=Mi(o)|0;do if(m|0){for(u=0,d=0;;){if(A=Is(o,d)|0,n[A+940>>2]|0){B=8;break}if((n[A+24>>2]|0)!=1)if(k=(os(o,A)|0)==5,k){u=A;break}else u=u|0?u:A;if(d=d+1|0,d>>>0>=m>>>0){B=8;break}}if((B|0)==8&&!u)break;return l=y(Yg(u)),y(l+y(h[u+404>>2]))}while(!1);l=y(h[o+912>>2])}return y(l)}function Vg(o,l,u,A){o=o|0,l=l|0,u=y(u),A=y(A);var d=$e,m=0;return Jg(l)|0?(l=1,m=3):de(l)|0?(l=0,m=3):(A=y(le),d=y(le)),(m|0)==3&&(d=y(Zr(o+364+(l<<3)|0,A)),A=y(Zr(o+380+(l<<3)|0,A))),m=A<u&(A>=y(0)&((Mt(A)|0)^1)),u=m?A:u,m=d>=y(0)&((Mt(d)|0)^1)&u<d,y(m?d:u)}function WL(o,l,u,A,d,m,B){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,B=B|0;var k=$e,T=$e,M=0,L=0,q=$e,ae=$e,Ye=$e,Le=0,Qe=0,tt=0,Ze=0,ct=$e,He=0;tt=dr(n[o+4>>2]|0,m)|0,Le=by(tt,m)|0,Qe=de(tt)|0,q=y(yn(l,2,u)),ae=y(yn(l,0,u)),io(l,2,u)|0?k=y(q+y(Zr(n[l+992>>2]|0,u))):ha(l,2)|0&&xy(l,2)|0?(k=y(h[o+908>>2]),T=y(vr(o,2)),T=y(k-y(T+y(Un(o,2)))),k=y(zA(l,2,u)),k=y(qn(l,2,y(T-y(k+y(Th(l,2,u)))),u,u))):k=y(le),io(l,0,d)|0?T=y(ae+y(Zr(n[l+996>>2]|0,d))):ha(l,0)|0&&xy(l,0)|0?(T=y(h[o+912>>2]),ct=y(vr(o,0)),ct=y(T-y(ct+y(Un(o,0)))),T=y(zA(l,0,d)),T=y(qn(l,0,y(ct-y(T+y(Th(l,0,d)))),d,u))):T=y(le),M=Mt(k)|0,L=Mt(T)|0;do if(M^L&&(Ye=y(h[l+396>>2]),!(Mt(Ye)|0)))if(M){k=y(q+y(y(T-ae)*Ye));break}else{ct=y(ae+y(y(k-q)/Ye)),T=L?ct:T;break}while(!1);L=Mt(k)|0,M=Mt(T)|0,L|M&&(He=(L^1)&1,A=u>y(0)&((A|0)!=0&L),k=Qe?k:A?u:k,xl(l,k,T,m,Qe?He:A?2:He,L&(M^1)&1,k,T,0,3623,B)|0,k=y(h[l+908>>2]),k=y(k+y(yn(l,2,u))),T=y(h[l+912>>2]),T=y(T+y(yn(l,0,u)))),xl(l,k,T,m,1,1,k,T,1,3635,B)|0,xy(l,tt)|0&&!(ha(l,tt)|0)?(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(Un(o,tt))),ct=y(ct-y(re(l,tt,u))),ct=y(ct-y(Th(l,tt,Qe?u:d))),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct):Ze=21;do if((Ze|0)==21){if(!(ha(l,tt)|0)&&(n[o+8>>2]|0)==1){He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct;break}!(ha(l,tt)|0)&&(n[o+8>>2]|0)==2&&(He=n[976+(tt<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(tt<<2)>>2]<<2)>>2]=ct)}while(!1);xy(l,Le)|0&&!(ha(l,Le)|0)?(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),ct=y(ct-y(Un(o,Le))),ct=y(ct-y(re(l,Le,u))),ct=y(ct-y(Th(l,Le,Qe?d:u))),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct):Ze=30;do if((Ze|0)==30&&!(ha(l,Le)|0)){if((os(o,l)|0)==2){He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(y(ct-y(h[l+908+(He<<2)>>2]))*y(.5)),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct;break}He=(os(o,l)|0)==3,He^(n[o+28>>2]|0)==2&&(He=n[976+(Le<<2)>>2]|0,ct=y(h[o+908+(He<<2)>>2]),ct=y(ct-y(h[l+908+(He<<2)>>2])),h[l+400+(n[1040+(Le<<2)>>2]<<2)>>2]=ct)}while(!1)}function i2(o,l,u){o=o|0,l=l|0,u=u|0;var A=$e,d=0;d=n[976+(u<<2)>>2]|0,A=y(h[l+908+(d<<2)>>2]),A=y(y(h[o+908+(d<<2)>>2])-A),A=y(A-y(h[l+400+(n[1040+(u<<2)>>2]<<2)>>2])),h[l+400+(n[1e3+(u<<2)>>2]<<2)>>2]=A}function Jg(o){return o=o|0,(o|1|0)==1|0}function YL(o){o=o|0;var l=$e;switch(n[o+56>>2]|0){case 0:case 3:{l=y(h[o+40>>2]),l>y(0)&((Mt(l)|0)^1)?o=s[(n[o+976>>2]|0)+2>>0]|0?1056:992:o=1056;break}default:o=o+52|0}return o|0}function s2(o,l){return o=o|0,l=l|0,(s[o+l>>0]|0)!=0|0}function xy(o,l){return o=o|0,l=l|0,o=o+132|0,de(l)|0&&n[(kn(o,5,948)|0)+4>>2]|0?o=1:o=(n[(kn(o,n[1e3+(l<<2)>>2]|0,948)|0)+4>>2]|0)!=0,o|0}function Th(o,l,u){o=o|0,l=l|0,u=y(u);var A=0,d=0;return o=o+132|0,de(l)|0&&(A=kn(o,5,948)|0,(n[A+4>>2]|0)!=0)?d=4:(A=kn(o,n[1e3+(l<<2)>>2]|0,948)|0,n[A+4>>2]|0?d=4:u=y(0)),(d|0)==4&&(u=y(Zr(A,u))),y(u)}function uP(o,l,u){return o=o|0,l=l|0,u=y(u),ha(o,l)|0?u=y(zA(o,l,u)):u=y(-y(Th(o,l,u))),y(u)}function fP(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function ky(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Kt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function AP(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function Qy(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function pP(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;if(B=o+4|0,k=n[B>>2]|0,d=k-A|0,m=d>>2,o=l+(m<<2)|0,o>>>0<u>>>0){A=k;do n[A>>2]=n[o>>2],o=o+4|0,A=(n[B>>2]|0)+4|0,n[B>>2]=A;while(o>>>0<u>>>0)}m|0&&Q2(k+(0-m<<2)|0,l|0,d|0)|0}function hP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0;return k=l+4|0,T=n[k>>2]|0,d=n[o>>2]|0,B=u,m=B-d|0,A=T+(0-(m>>2)<<2)|0,n[k>>2]=A,(m|0)>0&&Qr(A|0,d|0,m|0)|0,d=o+4|0,m=l+8|0,A=(n[d>>2]|0)-B|0,(A|0)>0&&(Qr(n[m>>2]|0,u|0,A|0)|0,n[m>>2]=(n[m>>2]|0)+(A>>>2<<2)),B=n[o>>2]|0,n[o>>2]=n[k>>2],n[k>>2]=B,B=n[d>>2]|0,n[d>>2]=n[m>>2],n[m>>2]=B,B=o+8|0,u=l+12|0,o=n[B>>2]|0,n[B>>2]=n[u>>2],n[u>>2]=o,n[l>>2]=n[k>>2],T|0}function o2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(B=n[l>>2]|0,m=n[u>>2]|0,(B|0)!=(m|0)){d=o+8|0,u=((m+-4-B|0)>>>2)+1|0,o=B,A=n[d>>2]|0;do n[A>>2]=n[o>>2],A=(n[d>>2]|0)+4|0,n[d>>2]=A,o=o+4|0;while((o|0)!=(m|0));n[l>>2]=B+(u<<2)}}function a2(){ua()}function gP(){var o=0;return o=Kt(4)|0,l2(o),o|0}function l2(o){o=o|0,n[o>>2]=Ac()|0}function dP(o){o=o|0,o|0&&(Kg(o),It(o))}function Kg(o){o=o|0,st(n[o>>2]|0)}function VL(o,l,u){o=o|0,l=l|0,u=u|0,pc(n[o>>2]|0,l,u)}function Ty(o,l){o=o|0,l=y(l),Dh(n[o>>2]|0,l)}function Ry(o,l){return o=o|0,l=l|0,s2(n[o>>2]|0,l)|0}function Fy(){var o=0;return o=Kt(8)|0,zg(o,0),o|0}function zg(o,l){o=o|0,l=l|0,l?l=fa(n[l>>2]|0)|0:l=ns()|0,n[o>>2]=l,n[o+4>>2]=0,Tn(l,o)}function Ny(o){o=o|0;var l=0;return l=Kt(8)|0,zg(l,o),l|0}function Xg(o){o=o|0,o|0&&(Oy(o),It(o))}function Oy(o){o=o|0;var l=0;uc(n[o>>2]|0),l=o+4|0,o=n[l>>2]|0,n[l>>2]=0,o|0&&(Sf(o),It(o))}function Sf(o){o=o|0,Df(o)}function Df(o){o=o|0,o=n[o>>2]|0,o|0&&Na(o|0)}function c2(o){return o=o|0,Ga(o)|0}function u2(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Sf(l),It(l)),fc(n[o>>2]|0)}function Ly(o,l){o=o|0,l=l|0,An(n[o>>2]|0,n[l>>2]|0)}function JL(o,l){o=o|0,l=l|0,wh(n[o>>2]|0,l)}function KL(o,l,u){o=o|0,l=l|0,u=+u,Cy(n[o>>2]|0,l,y(u))}function My(o,l,u){o=o|0,l=l|0,u=+u,wy(n[o>>2]|0,l,y(u))}function f2(o,l){o=o|0,l=l|0,Eh(n[o>>2]|0,l)}function A2(o,l){o=o|0,l=l|0,So(n[o>>2]|0,l)}function xr(o,l){o=o|0,l=l|0,Ch(n[o>>2]|0,l)}function so(o,l){o=o|0,l=l|0,my(n[o>>2]|0,l)}function Xi(o,l){o=o|0,l=l|0,Ng(n[o>>2]|0,l)}function Ns(o,l){o=o|0,l=l|0,vo(n[o>>2]|0,l)}function ZA(o,l,u){o=o|0,l=l|0,u=+u,HA(n[o>>2]|0,l,y(u))}function p2(o,l,u){o=o|0,l=l|0,u=+u,Y(n[o>>2]|0,l,y(u))}function ws(o,l){o=o|0,l=l|0,jA(n[o>>2]|0,l)}function Uy(o,l){o=o|0,l=l|0,Ey(n[o>>2]|0,l)}function Rh(o,l){o=o|0,l=l|0,Do(n[o>>2]|0,l)}function Zg(o,l){o=o|0,l=+l,Bh(n[o>>2]|0,y(l))}function Fh(o,l){o=o|0,l=+l,bl(n[o>>2]|0,y(l))}function h2(o,l){o=o|0,l=+l,Iy(n[o>>2]|0,y(l))}function g2(o,l){o=o|0,l=+l,Lg(n[o>>2]|0,y(l))}function d2(o,l){o=o|0,l=+l,Dl(n[o>>2]|0,y(l))}function m2(o,l){o=o|0,l=+l,Mg(n[o>>2]|0,y(l))}function bf(o,l){o=o|0,l=+l,e2(n[o>>2]|0,y(l))}function sr(o){o=o|0,vh(n[o>>2]|0)}function _y(o,l){o=o|0,l=+l,zi(n[o>>2]|0,y(l))}function y2(o,l){o=o|0,l=+l,yf(n[o>>2]|0,y(l))}function hc(o){o=o|0,qa(n[o>>2]|0)}function Pf(o,l){o=o|0,l=+l,du(n[o>>2]|0,y(l))}function $g(o,l){o=o|0,l=+l,Ef(n[o>>2]|0,y(l))}function ed(o,l){o=o|0,l=+l,di(n[o>>2]|0,y(l))}function E2(o,l){o=o|0,l=+l,GA(n[o>>2]|0,y(l))}function I2(o,l){o=o|0,l=+l,Aa(n[o>>2]|0,y(l))}function wu(o,l){o=o|0,l=+l,Ya(n[o>>2]|0,y(l))}function td(o,l){o=o|0,l=+l,Sh(n[o>>2]|0,y(l))}function C2(o,l){o=o|0,l=+l,Hg(n[o>>2]|0,y(l))}function Hy(o,l){o=o|0,l=+l,qA(n[o>>2]|0,y(l))}function Bu(o,l,u){o=o|0,l=l|0,u=+u,gu(n[o>>2]|0,l,y(u))}function jy(o,l,u){o=o|0,l=l|0,u=+u,bo(n[o>>2]|0,l,y(u))}function rd(o,l,u){o=o|0,l=l|0,u=+u,mf(n[o>>2]|0,l,y(u))}function nd(o){return o=o|0,Fg(n[o>>2]|0)|0}function ko(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,_A(d,n[l>>2]|0,u),Bs(o,d),I=A}function Bs(o,l){o=o|0,l=l|0,Tl(o,n[l+4>>2]|0,+y(h[l>>2]))}function Tl(o,l,u){o=o|0,l=l|0,u=+u,n[o>>2]=l,E[o+8>>3]=u}function Gy(o){return o=o|0,$1(n[o>>2]|0)|0}function ga(o){return o=o|0,Ih(n[o>>2]|0)|0}function mP(o){return o=o|0,hu(n[o>>2]|0)|0}function Nh(o){return o=o|0,Z1(n[o>>2]|0)|0}function w2(o){return o=o|0,Og(n[o>>2]|0)|0}function zL(o){return o=o|0,yy(n[o>>2]|0)|0}function yP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,xt(d,n[l>>2]|0,u),Bs(o,d),I=A}function EP(o){return o=o|0,df(n[o>>2]|0)|0}function qy(o){return o=o|0,Sl(n[o>>2]|0)|0}function B2(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,UA(A,n[l>>2]|0),Bs(o,A),I=u}function Oh(o){return o=o|0,+ +y(li(n[o>>2]|0))}function IP(o){return o=o|0,+ +y(qi(n[o>>2]|0))}function CP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,ur(A,n[l>>2]|0),Bs(o,A),I=u}function id(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Ug(A,n[l>>2]|0),Bs(o,A),I=u}function XL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,wt(A,n[l>>2]|0),Bs(o,A),I=u}function ZL(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,Wa(A,n[l>>2]|0),Bs(o,A),I=u}function wP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,_g(A,n[l>>2]|0),Bs(o,A),I=u}function BP(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,vy(A,n[l>>2]|0),Bs(o,A),I=u}function $A(o){return o=o|0,+ +y(jg(n[o>>2]|0))}function $L(o,l){return o=o|0,l=l|0,+ +y(By(n[o>>2]|0,l))}function eM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,yt(d,n[l>>2]|0,u),Bs(o,d),I=A}function vu(o,l,u){o=o|0,l=l|0,u=u|0,lr(n[o>>2]|0,n[l>>2]|0,u)}function tM(o,l){o=o|0,l=l|0,gf(n[o>>2]|0,n[l>>2]|0)}function vP(o){return o=o|0,Mi(n[o>>2]|0)|0}function rM(o){return o=o|0,o=Et(n[o>>2]|0)|0,o?o=c2(o)|0:o=0,o|0}function SP(o,l){return o=o|0,l=l|0,o=Is(n[o>>2]|0,l)|0,o?o=c2(o)|0:o=0,o|0}function xf(o,l){o=o|0,l=l|0;var u=0,A=0;A=Kt(4)|0,DP(A,l),u=o+4|0,l=n[u>>2]|0,n[u>>2]=A,l|0&&(Sf(l),It(l)),St(n[o>>2]|0,1)}function DP(o,l){o=o|0,l=l|0,oM(o,l)}function nM(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,bP(k,Ga(l)|0,+u,A,+d,m),h[o>>2]=y(+E[k>>3]),h[o+4>>2]=y(+E[k+8>>3]),I=B}function bP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0,k=0,T=0,M=0,L=0;B=I,I=I+32|0,L=B+8|0,M=B+20|0,T=B,k=B+16|0,E[L>>3]=u,n[M>>2]=A,E[T>>3]=d,n[k>>2]=m,Wy(o,n[l+4>>2]|0,L,M,T,k),I=B}function Wy(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0;B=I,I=I+16|0,k=B,Fl(k),l=Os(l)|0,PP(o,l,+E[u>>3],n[A>>2]|0,+E[d>>3],n[m>>2]|0),Nl(k),I=B}function Os(o){return o=o|0,n[o>>2]|0}function PP(o,l,u,A,d,m){o=o|0,l=l|0,u=+u,A=A|0,d=+d,m=m|0;var B=0;B=da(v2()|0)|0,u=+Ja(u),A=Yy(A)|0,d=+Ja(d),iM(o,Kn(0,B|0,l|0,+u,A|0,+d,Yy(m)|0)|0)}function v2(){var o=0;return s[7608]|0||(D2(9120),o=7608,n[o>>2]=1,n[o+4>>2]=0),9120}function da(o){return o=o|0,n[o+8>>2]|0}function Ja(o){return o=+o,+ +kf(o)}function Yy(o){return o=o|0,sd(o)|0}function iM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=l,A&1?(Ka(u,0),Me(A|0,u|0)|0,S2(o,u),sM(u)):(n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]),I=d}function Ka(o,l){o=o|0,l=l|0,Su(o,l),n[o+8>>2]=0,s[o+24>>0]=0}function S2(o,l){o=o|0,l=l|0,l=l+8|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2]}function sM(o){o=o|0,s[o+24>>0]=0}function Su(o,l){o=o|0,l=l|0,n[o>>2]=l}function sd(o){return o=o|0,o|0}function kf(o){return o=+o,+o}function D2(o){o=o|0,Qo(o,b2()|0,4)}function b2(){return 1064}function Qo(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=Gi(l|0,u+1|0)|0}function oM(o,l){o=o|0,l=l|0,l=n[l>>2]|0,n[o>>2]=l,au(l|0)}function xP(o){o=o|0;var l=0,u=0;u=o+4|0,l=n[u>>2]|0,n[u>>2]=0,l|0&&(Sf(l),It(l)),St(n[o>>2]|0,0)}function kP(o){o=o|0,bt(n[o>>2]|0)}function Vy(o){return o=o|0,tr(n[o>>2]|0)|0}function aM(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,YA(n[o>>2]|0,y(l),y(u),A)}function lM(o){return o=o|0,+ +y(mu(n[o>>2]|0))}function v(o){return o=o|0,+ +y(If(n[o>>2]|0))}function D(o){return o=o|0,+ +y(yu(n[o>>2]|0))}function Q(o){return o=o|0,+ +y(Rs(n[o>>2]|0))}function H(o){return o=o|0,+ +y(Eu(n[o>>2]|0))}function V(o){return o=o|0,+ +y(Gn(n[o>>2]|0))}function ne(o,l){o=o|0,l=l|0,E[o>>3]=+y(mu(n[l>>2]|0)),E[o+8>>3]=+y(If(n[l>>2]|0)),E[o+16>>3]=+y(yu(n[l>>2]|0)),E[o+24>>3]=+y(Rs(n[l>>2]|0)),E[o+32>>3]=+y(Eu(n[l>>2]|0)),E[o+40>>3]=+y(Gn(n[l>>2]|0))}function Se(o,l){return o=o|0,l=l|0,+ +y(is(n[o>>2]|0,l))}function _e(o,l){return o=o|0,l=l|0,+ +y(Pi(n[o>>2]|0,l))}function pt(o,l){return o=o|0,l=l|0,+ +y(WA(n[o>>2]|0,l))}function Wt(){return Qn()|0}function Sr(){Lr(),Zt(),zn(),yi(),za(),et()}function Lr(){p4e(11713,4938,1)}function Zt(){T_e(10448)}function zn(){p_e(10408)}function yi(){OUe(10324)}function za(){qLe(10096)}function et(){qe(9132)}function qe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0,To=0,Ro=0,Fo=0,Za=0,Wh=0,Yh=0,gc=0,Vh=0,Rf=0,Ff=0,Jh=0,Kh=0,zh=0,ln=0,dc=0,Xh=0,Pu=0,Zh=0,$h=0,Nf=0,Of=0,xu=0,oo=0,Ll=0,ma=0,mc=0,op=0,ap=0,Lf=0,lp=0,cp=0,ao=0,Ms=0,yc=0,Wn=0,up=0,No=0,ku=0,Oo=0,Qu=0,fp=0,Ap=0,Tu=0,lo=0,Ec=0,pp=0,hp=0,gp=0,Nr=0,ui=0,Us=0,Lo=0,co=0,Mr=0,Ar=0,Ic=0;l=I,I=I+672|0,u=l+656|0,Ic=l+648|0,Ar=l+640|0,Mr=l+632|0,co=l+624|0,Lo=l+616|0,Us=l+608|0,ui=l+600|0,Nr=l+592|0,gp=l+584|0,hp=l+576|0,pp=l+568|0,Ec=l+560|0,lo=l+552|0,Tu=l+544|0,Ap=l+536|0,fp=l+528|0,Qu=l+520|0,Oo=l+512|0,ku=l+504|0,No=l+496|0,up=l+488|0,Wn=l+480|0,yc=l+472|0,Ms=l+464|0,ao=l+456|0,cp=l+448|0,lp=l+440|0,Lf=l+432|0,ap=l+424|0,op=l+416|0,mc=l+408|0,ma=l+400|0,Ll=l+392|0,oo=l+384|0,xu=l+376|0,Of=l+368|0,Nf=l+360|0,$h=l+352|0,Zh=l+344|0,Pu=l+336|0,Xh=l+328|0,dc=l+320|0,ln=l+312|0,zh=l+304|0,Kh=l+296|0,Jh=l+288|0,Ff=l+280|0,Rf=l+272|0,Vh=l+264|0,gc=l+256|0,Yh=l+248|0,Wh=l+240|0,Za=l+232|0,Fo=l+224|0,Ro=l+216|0,To=l+208|0,Hn=l+200|0,cr=l+192|0,Hr=l+184|0,Tr=l+176|0,$t=l+168|0,fr=l+160|0,Gr=l+152|0,Lt=l+144|0,We=l+136|0,He=l+128|0,ct=l+120|0,Ze=l+112|0,tt=l+104|0,Qe=l+96|0,Le=l+88|0,Ye=l+80|0,ae=l+72|0,q=l+64|0,L=l+56|0,M=l+48|0,T=l+40|0,k=l+32|0,B=l+24|0,m=l+16|0,d=l+8|0,A=l,gt(o,3646),Xt(o,3651,2)|0,Dr(o,3665,2)|0,Zn(o,3682,18)|0,n[Ic>>2]=19,n[Ic+4>>2]=0,n[u>>2]=n[Ic>>2],n[u+4>>2]=n[Ic+4>>2],kr(o,3690,u)|0,n[Ar>>2]=1,n[Ar+4>>2]=0,n[u>>2]=n[Ar>>2],n[u+4>>2]=n[Ar+4>>2],Rn(o,3696,u)|0,n[Mr>>2]=2,n[Mr+4>>2]=0,n[u>>2]=n[Mr>>2],n[u+4>>2]=n[Mr+4>>2],_n(o,3706,u)|0,n[co>>2]=1,n[co+4>>2]=0,n[u>>2]=n[co>>2],n[u+4>>2]=n[co+4>>2],zr(o,3722,u)|0,n[Lo>>2]=2,n[Lo+4>>2]=0,n[u>>2]=n[Lo>>2],n[u+4>>2]=n[Lo+4>>2],zr(o,3734,u)|0,n[Us>>2]=3,n[Us+4>>2]=0,n[u>>2]=n[Us>>2],n[u+4>>2]=n[Us+4>>2],_n(o,3753,u)|0,n[ui>>2]=4,n[ui+4>>2]=0,n[u>>2]=n[ui>>2],n[u+4>>2]=n[ui+4>>2],_n(o,3769,u)|0,n[Nr>>2]=5,n[Nr+4>>2]=0,n[u>>2]=n[Nr>>2],n[u+4>>2]=n[Nr+4>>2],_n(o,3783,u)|0,n[gp>>2]=6,n[gp+4>>2]=0,n[u>>2]=n[gp>>2],n[u+4>>2]=n[gp+4>>2],_n(o,3796,u)|0,n[hp>>2]=7,n[hp+4>>2]=0,n[u>>2]=n[hp>>2],n[u+4>>2]=n[hp+4>>2],_n(o,3813,u)|0,n[pp>>2]=8,n[pp+4>>2]=0,n[u>>2]=n[pp>>2],n[u+4>>2]=n[pp+4>>2],_n(o,3825,u)|0,n[Ec>>2]=3,n[Ec+4>>2]=0,n[u>>2]=n[Ec>>2],n[u+4>>2]=n[Ec+4>>2],zr(o,3843,u)|0,n[lo>>2]=4,n[lo+4>>2]=0,n[u>>2]=n[lo>>2],n[u+4>>2]=n[lo+4>>2],zr(o,3853,u)|0,n[Tu>>2]=9,n[Tu+4>>2]=0,n[u>>2]=n[Tu>>2],n[u+4>>2]=n[Tu+4>>2],_n(o,3870,u)|0,n[Ap>>2]=10,n[Ap+4>>2]=0,n[u>>2]=n[Ap>>2],n[u+4>>2]=n[Ap+4>>2],_n(o,3884,u)|0,n[fp>>2]=11,n[fp+4>>2]=0,n[u>>2]=n[fp>>2],n[u+4>>2]=n[fp+4>>2],_n(o,3896,u)|0,n[Qu>>2]=1,n[Qu+4>>2]=0,n[u>>2]=n[Qu>>2],n[u+4>>2]=n[Qu+4>>2],ci(o,3907,u)|0,n[Oo>>2]=2,n[Oo+4>>2]=0,n[u>>2]=n[Oo>>2],n[u+4>>2]=n[Oo+4>>2],ci(o,3915,u)|0,n[ku>>2]=3,n[ku+4>>2]=0,n[u>>2]=n[ku>>2],n[u+4>>2]=n[ku+4>>2],ci(o,3928,u)|0,n[No>>2]=4,n[No+4>>2]=0,n[u>>2]=n[No>>2],n[u+4>>2]=n[No+4>>2],ci(o,3948,u)|0,n[up>>2]=5,n[up+4>>2]=0,n[u>>2]=n[up>>2],n[u+4>>2]=n[up+4>>2],ci(o,3960,u)|0,n[Wn>>2]=6,n[Wn+4>>2]=0,n[u>>2]=n[Wn>>2],n[u+4>>2]=n[Wn+4>>2],ci(o,3974,u)|0,n[yc>>2]=7,n[yc+4>>2]=0,n[u>>2]=n[yc>>2],n[u+4>>2]=n[yc+4>>2],ci(o,3983,u)|0,n[Ms>>2]=20,n[Ms+4>>2]=0,n[u>>2]=n[Ms>>2],n[u+4>>2]=n[Ms+4>>2],kr(o,3999,u)|0,n[ao>>2]=8,n[ao+4>>2]=0,n[u>>2]=n[ao>>2],n[u+4>>2]=n[ao+4>>2],ci(o,4012,u)|0,n[cp>>2]=9,n[cp+4>>2]=0,n[u>>2]=n[cp>>2],n[u+4>>2]=n[cp+4>>2],ci(o,4022,u)|0,n[lp>>2]=21,n[lp+4>>2]=0,n[u>>2]=n[lp>>2],n[u+4>>2]=n[lp+4>>2],kr(o,4039,u)|0,n[Lf>>2]=10,n[Lf+4>>2]=0,n[u>>2]=n[Lf>>2],n[u+4>>2]=n[Lf+4>>2],ci(o,4053,u)|0,n[ap>>2]=11,n[ap+4>>2]=0,n[u>>2]=n[ap>>2],n[u+4>>2]=n[ap+4>>2],ci(o,4065,u)|0,n[op>>2]=12,n[op+4>>2]=0,n[u>>2]=n[op>>2],n[u+4>>2]=n[op+4>>2],ci(o,4084,u)|0,n[mc>>2]=13,n[mc+4>>2]=0,n[u>>2]=n[mc>>2],n[u+4>>2]=n[mc+4>>2],ci(o,4097,u)|0,n[ma>>2]=14,n[ma+4>>2]=0,n[u>>2]=n[ma>>2],n[u+4>>2]=n[ma+4>>2],ci(o,4117,u)|0,n[Ll>>2]=15,n[Ll+4>>2]=0,n[u>>2]=n[Ll>>2],n[u+4>>2]=n[Ll+4>>2],ci(o,4129,u)|0,n[oo>>2]=16,n[oo+4>>2]=0,n[u>>2]=n[oo>>2],n[u+4>>2]=n[oo+4>>2],ci(o,4148,u)|0,n[xu>>2]=17,n[xu+4>>2]=0,n[u>>2]=n[xu>>2],n[u+4>>2]=n[xu+4>>2],ci(o,4161,u)|0,n[Of>>2]=18,n[Of+4>>2]=0,n[u>>2]=n[Of>>2],n[u+4>>2]=n[Of+4>>2],ci(o,4181,u)|0,n[Nf>>2]=5,n[Nf+4>>2]=0,n[u>>2]=n[Nf>>2],n[u+4>>2]=n[Nf+4>>2],zr(o,4196,u)|0,n[$h>>2]=6,n[$h+4>>2]=0,n[u>>2]=n[$h>>2],n[u+4>>2]=n[$h+4>>2],zr(o,4206,u)|0,n[Zh>>2]=7,n[Zh+4>>2]=0,n[u>>2]=n[Zh>>2],n[u+4>>2]=n[Zh+4>>2],zr(o,4217,u)|0,n[Pu>>2]=3,n[Pu+4>>2]=0,n[u>>2]=n[Pu>>2],n[u+4>>2]=n[Pu+4>>2],Du(o,4235,u)|0,n[Xh>>2]=1,n[Xh+4>>2]=0,n[u>>2]=n[Xh>>2],n[u+4>>2]=n[Xh+4>>2],cM(o,4251,u)|0,n[dc>>2]=4,n[dc+4>>2]=0,n[u>>2]=n[dc>>2],n[u+4>>2]=n[dc+4>>2],Du(o,4263,u)|0,n[ln>>2]=5,n[ln+4>>2]=0,n[u>>2]=n[ln>>2],n[u+4>>2]=n[ln+4>>2],Du(o,4279,u)|0,n[zh>>2]=6,n[zh+4>>2]=0,n[u>>2]=n[zh>>2],n[u+4>>2]=n[zh+4>>2],Du(o,4293,u)|0,n[Kh>>2]=7,n[Kh+4>>2]=0,n[u>>2]=n[Kh>>2],n[u+4>>2]=n[Kh+4>>2],Du(o,4306,u)|0,n[Jh>>2]=8,n[Jh+4>>2]=0,n[u>>2]=n[Jh>>2],n[u+4>>2]=n[Jh+4>>2],Du(o,4323,u)|0,n[Ff>>2]=9,n[Ff+4>>2]=0,n[u>>2]=n[Ff>>2],n[u+4>>2]=n[Ff+4>>2],Du(o,4335,u)|0,n[Rf>>2]=2,n[Rf+4>>2]=0,n[u>>2]=n[Rf>>2],n[u+4>>2]=n[Rf+4>>2],cM(o,4353,u)|0,n[Vh>>2]=12,n[Vh+4>>2]=0,n[u>>2]=n[Vh>>2],n[u+4>>2]=n[Vh+4>>2],od(o,4363,u)|0,n[gc>>2]=1,n[gc+4>>2]=0,n[u>>2]=n[gc>>2],n[u+4>>2]=n[gc+4>>2],ep(o,4376,u)|0,n[Yh>>2]=2,n[Yh+4>>2]=0,n[u>>2]=n[Yh>>2],n[u+4>>2]=n[Yh+4>>2],ep(o,4388,u)|0,n[Wh>>2]=13,n[Wh+4>>2]=0,n[u>>2]=n[Wh>>2],n[u+4>>2]=n[Wh+4>>2],od(o,4402,u)|0,n[Za>>2]=14,n[Za+4>>2]=0,n[u>>2]=n[Za>>2],n[u+4>>2]=n[Za+4>>2],od(o,4411,u)|0,n[Fo>>2]=15,n[Fo+4>>2]=0,n[u>>2]=n[Fo>>2],n[u+4>>2]=n[Fo+4>>2],od(o,4421,u)|0,n[Ro>>2]=16,n[Ro+4>>2]=0,n[u>>2]=n[Ro>>2],n[u+4>>2]=n[Ro+4>>2],od(o,4433,u)|0,n[To>>2]=17,n[To+4>>2]=0,n[u>>2]=n[To>>2],n[u+4>>2]=n[To+4>>2],od(o,4446,u)|0,n[Hn>>2]=18,n[Hn+4>>2]=0,n[u>>2]=n[Hn>>2],n[u+4>>2]=n[Hn+4>>2],od(o,4458,u)|0,n[cr>>2]=3,n[cr+4>>2]=0,n[u>>2]=n[cr>>2],n[u+4>>2]=n[cr+4>>2],ep(o,4471,u)|0,n[Hr>>2]=1,n[Hr+4>>2]=0,n[u>>2]=n[Hr>>2],n[u+4>>2]=n[Hr+4>>2],QP(o,4486,u)|0,n[Tr>>2]=10,n[Tr+4>>2]=0,n[u>>2]=n[Tr>>2],n[u+4>>2]=n[Tr+4>>2],Du(o,4496,u)|0,n[$t>>2]=11,n[$t+4>>2]=0,n[u>>2]=n[$t>>2],n[u+4>>2]=n[$t+4>>2],Du(o,4508,u)|0,n[fr>>2]=3,n[fr+4>>2]=0,n[u>>2]=n[fr>>2],n[u+4>>2]=n[fr+4>>2],cM(o,4519,u)|0,n[Gr>>2]=4,n[Gr+4>>2]=0,n[u>>2]=n[Gr>>2],n[u+4>>2]=n[Gr+4>>2],Cke(o,4530,u)|0,n[Lt>>2]=19,n[Lt+4>>2]=0,n[u>>2]=n[Lt>>2],n[u+4>>2]=n[Lt+4>>2],wke(o,4542,u)|0,n[We>>2]=12,n[We+4>>2]=0,n[u>>2]=n[We>>2],n[u+4>>2]=n[We+4>>2],Bke(o,4554,u)|0,n[He>>2]=13,n[He+4>>2]=0,n[u>>2]=n[He>>2],n[u+4>>2]=n[He+4>>2],vke(o,4568,u)|0,n[ct>>2]=2,n[ct+4>>2]=0,n[u>>2]=n[ct>>2],n[u+4>>2]=n[ct+4>>2],Ske(o,4578,u)|0,n[Ze>>2]=20,n[Ze+4>>2]=0,n[u>>2]=n[Ze>>2],n[u+4>>2]=n[Ze+4>>2],Dke(o,4587,u)|0,n[tt>>2]=22,n[tt+4>>2]=0,n[u>>2]=n[tt>>2],n[u+4>>2]=n[tt+4>>2],kr(o,4602,u)|0,n[Qe>>2]=23,n[Qe+4>>2]=0,n[u>>2]=n[Qe>>2],n[u+4>>2]=n[Qe+4>>2],kr(o,4619,u)|0,n[Le>>2]=14,n[Le+4>>2]=0,n[u>>2]=n[Le>>2],n[u+4>>2]=n[Le+4>>2],bke(o,4629,u)|0,n[Ye>>2]=1,n[Ye+4>>2]=0,n[u>>2]=n[Ye>>2],n[u+4>>2]=n[Ye+4>>2],Pke(o,4637,u)|0,n[ae>>2]=4,n[ae+4>>2]=0,n[u>>2]=n[ae>>2],n[u+4>>2]=n[ae+4>>2],ep(o,4653,u)|0,n[q>>2]=5,n[q+4>>2]=0,n[u>>2]=n[q>>2],n[u+4>>2]=n[q+4>>2],ep(o,4669,u)|0,n[L>>2]=6,n[L+4>>2]=0,n[u>>2]=n[L>>2],n[u+4>>2]=n[L+4>>2],ep(o,4686,u)|0,n[M>>2]=7,n[M+4>>2]=0,n[u>>2]=n[M>>2],n[u+4>>2]=n[M+4>>2],ep(o,4701,u)|0,n[T>>2]=8,n[T+4>>2]=0,n[u>>2]=n[T>>2],n[u+4>>2]=n[T+4>>2],ep(o,4719,u)|0,n[k>>2]=9,n[k+4>>2]=0,n[u>>2]=n[k>>2],n[u+4>>2]=n[k+4>>2],ep(o,4736,u)|0,n[B>>2]=21,n[B+4>>2]=0,n[u>>2]=n[B>>2],n[u+4>>2]=n[B+4>>2],xke(o,4754,u)|0,n[m>>2]=2,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],QP(o,4772,u)|0,n[d>>2]=3,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],QP(o,4790,u)|0,n[A>>2]=4,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],QP(o,4808,u)|0,I=l}function gt(o,l){o=o|0,l=l|0;var u=0;u=NLe()|0,n[o>>2]=u,OLe(u,l),jh(n[o>>2]|0)}function Xt(o,l,u){return o=o|0,l=l|0,u=u|0,CLe(o,Bn(l)|0,u,0),o|0}function Dr(o,l,u){return o=o|0,l=l|0,u=u|0,sLe(o,Bn(l)|0,u,0),o|0}function Zn(o,l,u){return o=o|0,l=l|0,u=u|0,WOe(o,Bn(l)|0,u,0),o|0}function kr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xOe(o,l,d),I=A,o|0}function Rn(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uOe(o,l,d),I=A,o|0}function _n(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JNe(o,l,d),I=A,o|0}function zr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TNe(o,l,d),I=A,o|0}function ci(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],dNe(o,l,d),I=A,o|0}function Du(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eNe(o,l,d),I=A,o|0}function cM(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],MFe(o,l,d),I=A,o|0}function od(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uFe(o,l,d),I=A,o|0}function ep(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],JRe(o,l,d),I=A,o|0}function QP(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TRe(o,l,d),I=A,o|0}function Cke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],dRe(o,l,d),I=A,o|0}function wke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],eRe(o,l,d),I=A,o|0}function Bke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UTe(o,l,d),I=A,o|0}function vke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],vTe(o,l,d),I=A,o|0}function Ske(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],aTe(o,l,d),I=A,o|0}function Dke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],qQe(o,l,d),I=A,o|0}function bke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],PQe(o,l,d),I=A,o|0}function Pke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],uQe(o,l,d),I=A,o|0}function xke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kke(o,l,d),I=A,o|0}function kke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],Qke(o,u,d,1),I=A}function Bn(o){return o=o|0,o|0}function Qke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=uM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=Tke(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,Rke(m,A)|0,A),I=d}function uM(){var o=0,l=0;if(s[7616]|0||(mz(9136),gr(24,9136,U|0)|0,l=7616,n[l>>2]=1,n[l+4>>2]=0),!(_r(9136)|0)){o=9136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));mz(9136)}return 9136}function Tke(o){return o=o|0,0}function Rke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=uM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],dz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(Oke(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function vn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0;B=I,I=I+32|0,ae=B+24|0,q=B+20|0,T=B+16|0,L=B+12|0,M=B+8|0,k=B+4|0,Ye=B,n[q>>2]=l,n[T>>2]=u,n[L>>2]=A,n[M>>2]=d,n[k>>2]=m,m=o+28|0,n[Ye>>2]=n[m>>2],n[ae>>2]=n[Ye>>2],Fke(o+24|0,ae,q,L,M,T,k)|0,n[m>>2]=n[n[m>>2]>>2],I=B}function Fke(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,o=Nke(l)|0,l=Kt(24)|0,gz(l+4|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0,n[B>>2]|0),n[l>>2]=n[o>>2],n[o>>2]=l,l|0}function Nke(o){return o=o|0,n[o>>2]|0}function gz(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function yr(o,l){return o=o|0,l=l|0,l|o|0}function dz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function Oke(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=Lke(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,Mke(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],dz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,Uke(o,k),_ke(k),I=M;return}}function Lke(o){return o=o|0,357913941}function Mke(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function Uke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _ke(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function mz(o){o=o|0,Gke(o)}function Hke(o){o=o|0,jke(o+24|0)}function _r(o){return o=o|0,n[o>>2]|0}function jke(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function Gke(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,qke()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function tn(){return 9228}function qke(){return 1140}function Wke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=Yke(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=Vke(l,A)|0,I=u,l|0}function rn(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,n[o>>2]=l,n[o+4>>2]=u,n[o+8>>2]=A,n[o+12>>2]=d,n[o+16>>2]=m}function Yke(o){return o=o|0,(n[(uM()|0)+24>>2]|0)+(o*12|0)|0}function Vke(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+48|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sp[u&31](A,o),A=Jke(A)|0,I=d,A|0}function Jke(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=fM(yz()|0)|0,A?(AM(l,A),pM(u,l),Kke(o,u),o=hM(l)|0):o=zke(o)|0,I=d,o|0}function yz(){var o=0;return s[7632]|0||(oQe(9184),gr(25,9184,U|0)|0,o=7632,n[o>>2]=1,n[o+4>>2]=0),9184}function fM(o){return o=o|0,n[o+36>>2]|0}function AM(o,l){o=o|0,l=l|0,n[o>>2]=l,n[o+4>>2]=o,n[o+8>>2]=0}function pM(o,l){o=o|0,l=l|0,n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=0}function Kke(o,l){o=o|0,l=l|0,eQe(l,o,o+8|0,o+16|0,o+24|0,o+32|0,o+40|0)|0}function hM(o){return o=o|0,n[(n[o+4>>2]|0)+8>>2]|0}function zke(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0;T=I,I=I+16|0,u=T+4|0,A=T,d=Rl(8)|0,m=d,B=Kt(48)|0,k=B,l=k+48|0;do n[k>>2]=n[o>>2],k=k+4|0,o=o+4|0;while((k|0)<(l|0));return l=m+4|0,n[l>>2]=B,k=Kt(8)|0,B=n[l>>2]|0,n[A>>2]=0,n[u>>2]=n[A>>2],Ez(k,B,u),n[d>>2]=k,I=T,m|0}function Ez(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1092,n[u+12>>2]=l,n[o+4>>2]=u}function Xke(o){o=o|0,$y(o),It(o)}function Zke(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function $ke(o){o=o|0,It(o)}function eQe(o,l,u,A,d,m,B){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,m=tQe(n[o>>2]|0,l,u,A,d,m,B)|0,B=o+4|0,n[(n[B>>2]|0)+8>>2]=m,n[(n[B>>2]|0)+8>>2]|0}function tQe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0;var k=0,T=0;return k=I,I=I+16|0,T=k,Fl(T),o=Os(o)|0,B=rQe(o,+E[l>>3],+E[u>>3],+E[A>>3],+E[d>>3],+E[m>>3],+E[B>>3])|0,Nl(T),I=k,B|0}function rQe(o,l,u,A,d,m,B){o=o|0,l=+l,u=+u,A=+A,d=+d,m=+m,B=+B;var k=0;return k=da(nQe()|0)|0,l=+Ja(l),u=+Ja(u),A=+Ja(A),d=+Ja(d),m=+Ja(m),ro(0,k|0,o|0,+l,+u,+A,+d,+m,+ +Ja(B))|0}function nQe(){var o=0;return s[7624]|0||(iQe(9172),o=7624,n[o>>2]=1,n[o+4>>2]=0),9172}function iQe(o){o=o|0,Qo(o,sQe()|0,6)}function sQe(){return 1112}function oQe(o){o=o|0,Lh(o)}function aQe(o){o=o|0,Iz(o+24|0),Cz(o+16|0)}function Iz(o){o=o|0,cQe(o)}function Cz(o){o=o|0,lQe(o)}function lQe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function cQe(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function Lh(o){o=o|0;var l=0;n[o+16>>2]=0,n[o+20>>2]=0,l=o+24|0,n[l>>2]=0,n[o+28>>2]=l,n[o+36>>2]=0,s[o+40>>0]=0,s[o+41>>0]=0}function uQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fQe(o,u,d,0),I=A}function fQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=gM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=AQe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,pQe(m,A)|0,A),I=d}function gM(){var o=0,l=0;if(s[7640]|0||(Bz(9232),gr(26,9232,U|0)|0,l=7640,n[l>>2]=1,n[l+4>>2]=0),!(_r(9232)|0)){o=9232,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Bz(9232)}return 9232}function AQe(o){return o=o|0,0}function pQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=gM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],wz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(hQe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function wz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function hQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gQe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,dQe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],wz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,mQe(o,k),yQe(k),I=M;return}}function gQe(o){return o=o|0,357913941}function dQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function mQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Bz(o){o=o|0,CQe(o)}function EQe(o){o=o|0,IQe(o+24|0)}function IQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function CQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,wQe()|0,3),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wQe(){return 1144}function BQe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,B=m+8|0,k=m,T=vQe(o)|0,o=n[T+4>>2]|0,n[k>>2]=n[T>>2],n[k+4>>2]=o,n[B>>2]=n[k>>2],n[B+4>>2]=n[k+4>>2],SQe(l,B,u,A,d),I=m}function vQe(o){return o=o|0,(n[(gM()|0)+24>>2]|0)+(o*12|0)|0}function SQe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0;var m=0,B=0,k=0,T=0,M=0;M=I,I=I+16|0,B=M+2|0,k=M+1|0,T=M,m=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(m=n[(n[o>>2]|0)+m>>2]|0),Qf(B,u),u=+Tf(B,u),Qf(k,A),A=+Tf(k,A),tp(T,d),T=rp(T,d)|0,MZ[m&1](o,u,A,T),I=M}function Qf(o,l){o=o|0,l=+l}function Tf(o,l){return o=o|0,l=+l,+ +bQe(l)}function tp(o,l){o=o|0,l=l|0}function rp(o,l){return o=o|0,l=l|0,DQe(l)|0}function DQe(o){return o=o|0,o|0}function bQe(o){return o=+o,+o}function PQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],xQe(o,u,d,1),I=A}function xQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=dM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=kQe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,QQe(m,A)|0,A),I=d}function dM(){var o=0,l=0;if(s[7648]|0||(Sz(9268),gr(27,9268,U|0)|0,l=7648,n[l>>2]=1,n[l+4>>2]=0),!(_r(9268)|0)){o=9268,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Sz(9268)}return 9268}function kQe(o){return o=o|0,0}function QQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=dM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],vz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(TQe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function vz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function TQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=RQe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,FQe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],vz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,NQe(o,k),OQe(k),I=M;return}}function RQe(o){return o=o|0,357913941}function FQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function NQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function OQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Sz(o){o=o|0,UQe(o)}function LQe(o){o=o|0,MQe(o+24|0)}function MQe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function UQe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,_Qe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function _Qe(){return 1160}function HQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=jQe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=GQe(l,A)|0,I=u,l|0}function jQe(o){return o=o|0,(n[(dM()|0)+24>>2]|0)+(o*12|0)|0}function GQe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),Dz(gd[u&31](o)|0)|0}function Dz(o){return o=o|0,o&1|0}function qQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],WQe(o,u,d,0),I=A}function WQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=mM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=YQe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,VQe(m,A)|0,A),I=d}function mM(){var o=0,l=0;if(s[7656]|0||(Pz(9304),gr(28,9304,U|0)|0,l=7656,n[l>>2]=1,n[l+4>>2]=0),!(_r(9304)|0)){o=9304,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Pz(9304)}return 9304}function YQe(o){return o=o|0,0}function VQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=mM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],bz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(JQe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function bz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function JQe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=KQe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,zQe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],bz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,XQe(o,k),ZQe(k),I=M;return}}function KQe(o){return o=o|0,357913941}function zQe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function XQe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ZQe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Pz(o){o=o|0,tTe(o)}function $Qe(o){o=o|0,eTe(o+24|0)}function eTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function tTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,rTe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function rTe(){return 1164}function nTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=iTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],sTe(l,d,u),I=A}function iTe(o){return o=o|0,(n[(mM()|0)+24>>2]|0)+(o*12|0)|0}function sTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Mh(d,u),u=Uh(d,u)|0,sp[A&31](o,u),_h(d),I=m}function Mh(o,l){o=o|0,l=l|0,oTe(o,l)}function Uh(o,l){return o=o|0,l=l|0,o|0}function _h(o){o=o|0,Sf(o)}function oTe(o,l){o=o|0,l=l|0,yM(o,l)}function yM(o,l){o=o|0,l=l|0,n[o>>2]=l}function aTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],lTe(o,u,d,0),I=A}function lTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=EM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=cTe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,uTe(m,A)|0,A),I=d}function EM(){var o=0,l=0;if(s[7664]|0||(kz(9340),gr(29,9340,U|0)|0,l=7664,n[l>>2]=1,n[l+4>>2]=0),!(_r(9340)|0)){o=9340,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));kz(9340)}return 9340}function cTe(o){return o=o|0,0}function uTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=EM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],xz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(fTe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function xz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function fTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=ATe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,pTe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],xz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,hTe(o,k),gTe(k),I=M;return}}function ATe(o){return o=o|0,357913941}function pTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function hTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function gTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function kz(o){o=o|0,yTe(o)}function dTe(o){o=o|0,mTe(o+24|0)}function mTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function yTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,4,l,ETe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ETe(){return 1180}function ITe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=CTe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=wTe(l,d,u)|0,I=A,u|0}function CTe(o){return o=o|0,(n[(EM()|0)+24>>2]|0)+(o*12|0)|0}function wTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),ad(d,u),d=ld(d,u)|0,d=TP(gU[A&15](o,d)|0)|0,I=m,d|0}function ad(o,l){o=o|0,l=l|0}function ld(o,l){return o=o|0,l=l|0,BTe(l)|0}function TP(o){return o=o|0,o|0}function BTe(o){return o=o|0,o|0}function vTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],STe(o,u,d,0),I=A}function STe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=IM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=DTe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,bTe(m,A)|0,A),I=d}function IM(){var o=0,l=0;if(s[7672]|0||(Tz(9376),gr(30,9376,U|0)|0,l=7672,n[l>>2]=1,n[l+4>>2]=0),!(_r(9376)|0)){o=9376,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Tz(9376)}return 9376}function DTe(o){return o=o|0,0}function bTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=IM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Qz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(PTe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Qz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function PTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=xTe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,kTe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Qz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,QTe(o,k),TTe(k),I=M;return}}function xTe(o){return o=o|0,357913941}function kTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function QTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function TTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Tz(o){o=o|0,NTe(o)}function RTe(o){o=o|0,FTe(o+24|0)}function FTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function NTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,Rz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Rz(){return 1196}function OTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=LTe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=MTe(l,A)|0,I=u,l|0}function LTe(o){return o=o|0,(n[(IM()|0)+24>>2]|0)+(o*12|0)|0}function MTe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),TP(gd[u&31](o)|0)|0}function UTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],_Te(o,u,d,1),I=A}function _Te(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=CM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=HTe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,jTe(m,A)|0,A),I=d}function CM(){var o=0,l=0;if(s[7680]|0||(Nz(9412),gr(31,9412,U|0)|0,l=7680,n[l>>2]=1,n[l+4>>2]=0),!(_r(9412)|0)){o=9412,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Nz(9412)}return 9412}function HTe(o){return o=o|0,0}function jTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=CM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Fz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(GTe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Fz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function GTe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=qTe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,WTe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Fz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,YTe(o,k),VTe(k),I=M;return}}function qTe(o){return o=o|0,357913941}function WTe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function YTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function VTe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Nz(o){o=o|0,zTe(o)}function JTe(o){o=o|0,KTe(o+24|0)}function KTe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function zTe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,Oz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Oz(){return 1200}function XTe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=ZTe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=$Te(l,A)|0,I=u,l|0}function ZTe(o){return o=o|0,(n[(CM()|0)+24>>2]|0)+(o*12|0)|0}function $Te(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),RP(gd[u&31](o)|0)|0}function RP(o){return o=o|0,o|0}function eRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tRe(o,u,d,0),I=A}function tRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=wM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=rRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,nRe(m,A)|0,A),I=d}function wM(){var o=0,l=0;if(s[7688]|0||(Mz(9448),gr(32,9448,U|0)|0,l=7688,n[l>>2]=1,n[l+4>>2]=0),!(_r(9448)|0)){o=9448,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Mz(9448)}return 9448}function rRe(o){return o=o|0,0}function nRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=wM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Lz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(iRe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Lz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function iRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=sRe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,oRe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Lz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,aRe(o,k),lRe(k),I=M;return}}function sRe(o){return o=o|0,357913941}function oRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function aRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function lRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Mz(o){o=o|0,fRe(o)}function cRe(o){o=o|0,uRe(o+24|0)}function uRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function fRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,Uz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Uz(){return 1204}function ARe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=pRe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hRe(l,d,u),I=A}function pRe(o){return o=o|0,(n[(wM()|0)+24>>2]|0)+(o*12|0)|0}function hRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),BM(d,u),d=vM(d,u)|0,sp[A&31](o,d),I=m}function BM(o,l){o=o|0,l=l|0}function vM(o,l){return o=o|0,l=l|0,gRe(l)|0}function gRe(o){return o=o|0,o|0}function dRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mRe(o,u,d,0),I=A}function mRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=SM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=yRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,ERe(m,A)|0,A),I=d}function SM(){var o=0,l=0;if(s[7696]|0||(Hz(9484),gr(33,9484,U|0)|0,l=7696,n[l>>2]=1,n[l+4>>2]=0),!(_r(9484)|0)){o=9484,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Hz(9484)}return 9484}function yRe(o){return o=o|0,0}function ERe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=SM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],_z(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(IRe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function _z(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function IRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=CRe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,wRe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],_z(m,A,u),n[T>>2]=(n[T>>2]|0)+12,BRe(o,k),vRe(k),I=M;return}}function CRe(o){return o=o|0,357913941}function wRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function BRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function vRe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Hz(o){o=o|0,bRe(o)}function SRe(o){o=o|0,DRe(o+24|0)}function DRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function bRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,PRe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function PRe(){return 1212}function xRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=kRe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],QRe(l,m,u,A),I=d}function kRe(o){return o=o|0,(n[(SM()|0)+24>>2]|0)+(o*12|0)|0}function QRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),BM(m,u),m=vM(m,u)|0,ad(B,A),B=ld(B,A)|0,F2[d&15](o,m,B),I=k}function TRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RRe(o,u,d,1),I=A}function RRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=DM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=FRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,NRe(m,A)|0,A),I=d}function DM(){var o=0,l=0;if(s[7704]|0||(Gz(9520),gr(34,9520,U|0)|0,l=7704,n[l>>2]=1,n[l+4>>2]=0),!(_r(9520)|0)){o=9520,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Gz(9520)}return 9520}function FRe(o){return o=o|0,0}function NRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=DM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],jz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ORe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function jz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ORe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=LRe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,MRe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],jz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,URe(o,k),_Re(k),I=M;return}}function LRe(o){return o=o|0,357913941}function MRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function URe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _Re(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Gz(o){o=o|0,GRe(o)}function HRe(o){o=o|0,jRe(o+24|0)}function jRe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function GRe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,qRe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qRe(){return 1224}function WRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;return d=I,I=I+16|0,m=d+8|0,B=d,k=YRe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],A=+VRe(l,m,u),I=d,+A}function YRe(o){return o=o|0,(n[(DM()|0)+24>>2]|0)+(o*12|0)|0}function VRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(d,u),d=rp(d,u)|0,B=+kf(+_Z[A&7](o,d)),I=m,+B}function JRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KRe(o,u,d,1),I=A}function KRe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=bM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=zRe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,XRe(m,A)|0,A),I=d}function bM(){var o=0,l=0;if(s[7712]|0||(Wz(9556),gr(35,9556,U|0)|0,l=7712,n[l>>2]=1,n[l+4>>2]=0),!(_r(9556)|0)){o=9556,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Wz(9556)}return 9556}function zRe(o){return o=o|0,0}function XRe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=bM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],qz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ZRe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function qz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ZRe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=$Re(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,eFe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],qz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,tFe(o,k),rFe(k),I=M;return}}function $Re(o){return o=o|0,357913941}function eFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function tFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Wz(o){o=o|0,sFe(o)}function nFe(o){o=o|0,iFe(o+24|0)}function iFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function sFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,oFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oFe(){return 1232}function aFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=lFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=+cFe(l,d),I=A,+u}function lFe(o){return o=o|0,(n[(bM()|0)+24>>2]|0)+(o*12|0)|0}function cFe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),+ +kf(+UZ[u&15](o))}function uFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fFe(o,u,d,1),I=A}function fFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=PM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=AFe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,pFe(m,A)|0,A),I=d}function PM(){var o=0,l=0;if(s[7720]|0||(Vz(9592),gr(36,9592,U|0)|0,l=7720,n[l>>2]=1,n[l+4>>2]=0),!(_r(9592)|0)){o=9592,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Vz(9592)}return 9592}function AFe(o){return o=o|0,0}function pFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=PM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Yz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(hFe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Yz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function hFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gFe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,dFe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Yz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,mFe(o,k),yFe(k),I=M;return}}function gFe(o){return o=o|0,357913941}function dFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function mFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Vz(o){o=o|0,CFe(o)}function EFe(o){o=o|0,IFe(o+24|0)}function IFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function CFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,wFe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wFe(){return 1276}function BFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=vFe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=SFe(l,A)|0,I=u,l|0}function vFe(o){return o=o|0,(n[(PM()|0)+24>>2]|0)+(o*12|0)|0}function SFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;return d=I,I=I+16|0,A=d,u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sp[u&31](A,o),A=Jz(A)|0,I=d,A|0}function Jz(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=fM(Kz()|0)|0,A?(AM(l,A),pM(u,l),DFe(o,u),o=hM(l)|0):o=bFe(o)|0,I=d,o|0}function Kz(){var o=0;return s[7736]|0||(LFe(9640),gr(25,9640,U|0)|0,o=7736,n[o>>2]=1,n[o+4>>2]=0),9640}function DFe(o,l){o=o|0,l=l|0,QFe(l,o,o+8|0)|0}function bFe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Rl(8)|0,l=A,k=Kt(16)|0,n[k>>2]=n[o>>2],n[k+4>>2]=n[o+4>>2],n[k+8>>2]=n[o+8>>2],n[k+12>>2]=n[o+12>>2],m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],xM(o,m,d),n[A>>2]=o,I=u,l|0}function xM(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1244,n[u+12>>2]=l,n[o+4>>2]=u}function PFe(o){o=o|0,$y(o),It(o)}function xFe(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function kFe(o){o=o|0,It(o)}function QFe(o,l,u){return o=o|0,l=l|0,u=u|0,l=TFe(n[o>>2]|0,l,u)|0,u=o+4|0,n[(n[u>>2]|0)+8>>2]=l,n[(n[u>>2]|0)+8>>2]|0}function TFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return A=I,I=I+16|0,d=A,Fl(d),o=Os(o)|0,u=RFe(o,n[l>>2]|0,+E[u>>3])|0,Nl(d),I=A,u|0}function RFe(o,l,u){o=o|0,l=l|0,u=+u;var A=0;return A=da(FFe()|0)|0,l=Yy(l)|0,ou(0,A|0,o|0,l|0,+ +Ja(u))|0}function FFe(){var o=0;return s[7728]|0||(NFe(9628),o=7728,n[o>>2]=1,n[o+4>>2]=0),9628}function NFe(o){o=o|0,Qo(o,OFe()|0,2)}function OFe(){return 1264}function LFe(o){o=o|0,Lh(o)}function MFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],UFe(o,u,d,1),I=A}function UFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=kM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=_Fe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,HFe(m,A)|0,A),I=d}function kM(){var o=0,l=0;if(s[7744]|0||(Xz(9684),gr(37,9684,U|0)|0,l=7744,n[l>>2]=1,n[l+4>>2]=0),!(_r(9684)|0)){o=9684,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));Xz(9684)}return 9684}function _Fe(o){return o=o|0,0}function HFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=kM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],zz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(jFe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function zz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function jFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=GFe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,qFe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],zz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,WFe(o,k),YFe(k),I=M;return}}function GFe(o){return o=o|0,357913941}function qFe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function WFe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function YFe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function Xz(o){o=o|0,KFe(o)}function VFe(o){o=o|0,JFe(o+24|0)}function JFe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function KFe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,5,l,zFe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function zFe(){return 1280}function XFe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=ZFe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=$Fe(l,d,u)|0,I=A,u|0}function ZFe(o){return o=o|0,(n[(kM()|0)+24>>2]|0)+(o*12|0)|0}function $Fe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return B=I,I=I+32|0,d=B,m=B+16|0,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(m,u),m=rp(m,u)|0,F2[A&15](d,o,m),m=Jz(d)|0,I=B,m|0}function eNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],tNe(o,u,d,1),I=A}function tNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=QM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=rNe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,nNe(m,A)|0,A),I=d}function QM(){var o=0,l=0;if(s[7752]|0||($z(9720),gr(38,9720,U|0)|0,l=7752,n[l>>2]=1,n[l+4>>2]=0),!(_r(9720)|0)){o=9720,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));$z(9720)}return 9720}function rNe(o){return o=o|0,0}function nNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=QM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],Zz(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(iNe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function Zz(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function iNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=sNe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,oNe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],Zz(m,A,u),n[T>>2]=(n[T>>2]|0)+12,aNe(o,k),lNe(k),I=M;return}}function sNe(o){return o=o|0,357913941}function oNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function aNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function lNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function $z(o){o=o|0,fNe(o)}function cNe(o){o=o|0,uNe(o+24|0)}function uNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function fNe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,ANe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function ANe(){return 1288}function pNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;return u=I,I=I+16|0,A=u+8|0,d=u,m=hNe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],l=gNe(l,A)|0,I=u,l|0}function hNe(o){return o=o|0,(n[(QM()|0)+24>>2]|0)+(o*12|0)|0}function gNe(o,l){o=o|0,l=l|0;var u=0;return u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),sd(gd[u&31](o)|0)|0}function dNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],mNe(o,u,d,0),I=A}function mNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=TM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=yNe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,ENe(m,A)|0,A),I=d}function TM(){var o=0,l=0;if(s[7760]|0||(tX(9756),gr(39,9756,U|0)|0,l=7760,n[l>>2]=1,n[l+4>>2]=0),!(_r(9756)|0)){o=9756,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));tX(9756)}return 9756}function yNe(o){return o=o|0,0}function ENe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=TM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],eX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(INe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function eX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function INe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=CNe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,wNe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],eX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,BNe(o,k),vNe(k),I=M;return}}function CNe(o){return o=o|0,357913941}function wNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function BNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function vNe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function tX(o){o=o|0,bNe(o)}function SNe(o){o=o|0,DNe(o+24|0)}function DNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function bNe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,PNe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function PNe(){return 1292}function xNe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=kNe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],QNe(l,d,u),I=A}function kNe(o){return o=o|0,(n[(TM()|0)+24>>2]|0)+(o*12|0)|0}function QNe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),Qf(d,u),u=+Tf(d,u),OZ[A&31](o,u),I=m}function TNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RNe(o,u,d,0),I=A}function RNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=RM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=FNe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,NNe(m,A)|0,A),I=d}function RM(){var o=0,l=0;if(s[7768]|0||(nX(9792),gr(40,9792,U|0)|0,l=7768,n[l>>2]=1,n[l+4>>2]=0),!(_r(9792)|0)){o=9792,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));nX(9792)}return 9792}function FNe(o){return o=o|0,0}function NNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=RM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],rX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ONe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function rX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ONe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=LNe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,MNe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],rX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,UNe(o,k),_Ne(k),I=M;return}}function LNe(o){return o=o|0,357913941}function MNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function UNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _Ne(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function nX(o){o=o|0,GNe(o)}function HNe(o){o=o|0,jNe(o+24|0)}function jNe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function GNe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,1,l,qNe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qNe(){return 1300}function WNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=YNe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],VNe(l,m,u,A),I=d}function YNe(o){return o=o|0,(n[(RM()|0)+24>>2]|0)+(o*12|0)|0}function VNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),tp(m,u),m=rp(m,u)|0,Qf(B,A),A=+Tf(B,A),qZ[d&15](o,m,A),I=k}function JNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],KNe(o,u,d,0),I=A}function KNe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=FM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=zNe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,XNe(m,A)|0,A),I=d}function FM(){var o=0,l=0;if(s[7776]|0||(sX(9828),gr(41,9828,U|0)|0,l=7776,n[l>>2]=1,n[l+4>>2]=0),!(_r(9828)|0)){o=9828,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));sX(9828)}return 9828}function zNe(o){return o=o|0,0}function XNe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=FM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],iX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ZNe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function iX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ZNe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=$Ne(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,eOe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],iX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,tOe(o,k),rOe(k),I=M;return}}function $Ne(o){return o=o|0,357913941}function eOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function tOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function rOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function sX(o){o=o|0,sOe(o)}function nOe(o){o=o|0,iOe(o+24|0)}function iOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function sOe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,7,l,oOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function oOe(){return 1312}function aOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=lOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],cOe(l,d,u),I=A}function lOe(o){return o=o|0,(n[(FM()|0)+24>>2]|0)+(o*12|0)|0}function cOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(d,u),d=rp(d,u)|0,sp[A&31](o,d),I=m}function uOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],fOe(o,u,d,0),I=A}function fOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=NM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=AOe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,pOe(m,A)|0,A),I=d}function NM(){var o=0,l=0;if(s[7784]|0||(aX(9864),gr(42,9864,U|0)|0,l=7784,n[l>>2]=1,n[l+4>>2]=0),!(_r(9864)|0)){o=9864,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));aX(9864)}return 9864}function AOe(o){return o=o|0,0}function pOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=NM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],oX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(hOe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function oX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function hOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=gOe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,dOe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],oX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,mOe(o,k),yOe(k),I=M;return}}function gOe(o){return o=o|0,357913941}function dOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function mOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function yOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function aX(o){o=o|0,COe(o)}function EOe(o){o=o|0,IOe(o+24|0)}function IOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function COe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,8,l,wOe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function wOe(){return 1320}function BOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=vOe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],SOe(l,d,u),I=A}function vOe(o){return o=o|0,(n[(NM()|0)+24>>2]|0)+(o*12|0)|0}function SOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),DOe(d,u),d=bOe(d,u)|0,sp[A&31](o,d),I=m}function DOe(o,l){o=o|0,l=l|0}function bOe(o,l){return o=o|0,l=l|0,POe(l)|0}function POe(o){return o=o|0,o|0}function xOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],kOe(o,u,d,0),I=A}function kOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=OM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=QOe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,TOe(m,A)|0,A),I=d}function OM(){var o=0,l=0;if(s[7792]|0||(cX(9900),gr(43,9900,U|0)|0,l=7792,n[l>>2]=1,n[l+4>>2]=0),!(_r(9900)|0)){o=9900,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));cX(9900)}return 9900}function QOe(o){return o=o|0,0}function TOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=OM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],lX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(ROe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function lX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function ROe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=FOe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,NOe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],lX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,OOe(o,k),LOe(k),I=M;return}}function FOe(o){return o=o|0,357913941}function NOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function OOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function LOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function cX(o){o=o|0,_Oe(o)}function MOe(o){o=o|0,UOe(o+24|0)}function UOe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function _Oe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,22,l,HOe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function HOe(){return 1344}function jOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0;u=I,I=I+16|0,A=u+8|0,d=u,m=GOe(o)|0,o=n[m+4>>2]|0,n[d>>2]=n[m>>2],n[d+4>>2]=o,n[A>>2]=n[d>>2],n[A+4>>2]=n[d+4>>2],qOe(l,A),I=u}function GOe(o){return o=o|0,(n[(OM()|0)+24>>2]|0)+(o*12|0)|0}function qOe(o,l){o=o|0,l=l|0;var u=0;u=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(u=n[(n[o>>2]|0)+u>>2]|0),ip[u&127](o)}function WOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=LM()|0,o=YOe(u)|0,vn(m,l,d,o,VOe(u,A)|0,A)}function LM(){var o=0,l=0;if(s[7800]|0||(fX(9936),gr(44,9936,U|0)|0,l=7800,n[l>>2]=1,n[l+4>>2]=0),!(_r(9936)|0)){o=9936,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));fX(9936)}return 9936}function YOe(o){return o=o|0,o|0}function VOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=LM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(uX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(JOe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function uX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function JOe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=KOe(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,zOe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,uX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,XOe(o,d),ZOe(d),I=k;return}}function KOe(o){return o=o|0,536870911}function zOe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function XOe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ZOe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function fX(o){o=o|0,tLe(o)}function $Oe(o){o=o|0,eLe(o+24|0)}function eLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function tLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,23,l,Uz()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function rLe(o,l){o=o|0,l=l|0,iLe(n[(nLe(o)|0)>>2]|0,l)}function nLe(o){return o=o|0,(n[(LM()|0)+24>>2]|0)+(o<<3)|0}function iLe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,BM(A,l),l=vM(A,l)|0,ip[o&127](l),I=u}function sLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=MM()|0,o=oLe(u)|0,vn(m,l,d,o,aLe(u,A)|0,A)}function MM(){var o=0,l=0;if(s[7808]|0||(pX(9972),gr(45,9972,U|0)|0,l=7808,n[l>>2]=1,n[l+4>>2]=0),!(_r(9972)|0)){o=9972,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));pX(9972)}return 9972}function oLe(o){return o=o|0,o|0}function aLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=MM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(AX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(lLe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function AX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function lLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=cLe(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,uLe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,AX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,fLe(o,d),ALe(d),I=k;return}}function cLe(o){return o=o|0,536870911}function uLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function fLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ALe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function pX(o){o=o|0,gLe(o)}function pLe(o){o=o|0,hLe(o+24|0)}function hLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function gLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,9,l,dLe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function dLe(){return 1348}function mLe(o,l){return o=o|0,l=l|0,ELe(n[(yLe(o)|0)>>2]|0,l)|0}function yLe(o){return o=o|0,(n[(MM()|0)+24>>2]|0)+(o<<3)|0}function ELe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,hX(A,l),l=gX(A,l)|0,l=TP(gd[o&31](l)|0)|0,I=u,l|0}function hX(o,l){o=o|0,l=l|0}function gX(o,l){return o=o|0,l=l|0,ILe(l)|0}function ILe(o){return o=o|0,o|0}function CLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=UM()|0,o=wLe(u)|0,vn(m,l,d,o,BLe(u,A)|0,A)}function UM(){var o=0,l=0;if(s[7816]|0||(mX(10008),gr(46,10008,U|0)|0,l=7816,n[l>>2]=1,n[l+4>>2]=0),!(_r(10008)|0)){o=10008,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));mX(10008)}return 10008}function wLe(o){return o=o|0,o|0}function BLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=UM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(dX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(vLe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function dX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function vLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=SLe(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,DLe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,dX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,bLe(o,d),PLe(d),I=k;return}}function SLe(o){return o=o|0,536870911}function DLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function bLe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function PLe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function mX(o){o=o|0,QLe(o)}function xLe(o){o=o|0,kLe(o+24|0)}function kLe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function QLe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,15,l,Rz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function TLe(o){return o=o|0,FLe(n[(RLe(o)|0)>>2]|0)|0}function RLe(o){return o=o|0,(n[(UM()|0)+24>>2]|0)+(o<<3)|0}function FLe(o){return o=o|0,TP(VP[o&7]()|0)|0}function NLe(){var o=0;return s[7832]|0||(GLe(10052),gr(25,10052,U|0)|0,o=7832,n[o>>2]=1,n[o+4>>2]=0),10052}function OLe(o,l){o=o|0,l=l|0,n[o>>2]=LLe()|0,n[o+4>>2]=MLe()|0,n[o+12>>2]=l,n[o+8>>2]=ULe()|0,n[o+32>>2]=2}function LLe(){return 11709}function MLe(){return 1188}function ULe(){return FP()|0}function _Le(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(HLe(u),It(u)):l|0&&(Oy(l),It(l))}function Hh(o,l){return o=o|0,l=l|0,l&o|0}function HLe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function FP(){var o=0;return s[7824]|0||(n[2511]=jLe()|0,n[2512]=0,o=7824,n[o>>2]=1,n[o+4>>2]=0),10044}function jLe(){return 0}function GLe(o){o=o|0,Lh(o)}function qLe(o){o=o|0;var l=0,u=0,A=0,d=0,m=0;l=I,I=I+32|0,u=l+24|0,m=l+16|0,d=l+8|0,A=l,WLe(o,4827),YLe(o,4834,3)|0,VLe(o,3682,47)|0,n[m>>2]=9,n[m+4>>2]=0,n[u>>2]=n[m>>2],n[u+4>>2]=n[m+4>>2],JLe(o,4841,u)|0,n[d>>2]=1,n[d+4>>2]=0,n[u>>2]=n[d>>2],n[u+4>>2]=n[d+4>>2],KLe(o,4871,u)|0,n[A>>2]=10,n[A+4>>2]=0,n[u>>2]=n[A>>2],n[u+4>>2]=n[A+4>>2],zLe(o,4891,u)|0,I=l}function WLe(o,l){o=o|0,l=l|0;var u=0;u=PUe()|0,n[o>>2]=u,xUe(u,l),jh(n[o>>2]|0)}function YLe(o,l,u){return o=o|0,l=l|0,u=u|0,AUe(o,Bn(l)|0,u,0),o|0}function VLe(o,l,u){return o=o|0,l=l|0,u=u|0,XMe(o,Bn(l)|0,u,0),o|0}function JLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],TMe(o,l,d),I=A,o|0}function KLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],pMe(o,l,d),I=A,o|0}function zLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=n[u+4>>2]|0,n[m>>2]=n[u>>2],n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],XLe(o,l,d),I=A,o|0}function XLe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],ZLe(o,u,d,1),I=A}function ZLe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=_M()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=$Le(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,eMe(m,A)|0,A),I=d}function _M(){var o=0,l=0;if(s[7840]|0||(EX(10100),gr(48,10100,U|0)|0,l=7840,n[l>>2]=1,n[l+4>>2]=0),!(_r(10100)|0)){o=10100,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));EX(10100)}return 10100}function $Le(o){return o=o|0,0}function eMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=_M()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],yX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(tMe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function yX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function tMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=rMe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,nMe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],yX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,iMe(o,k),sMe(k),I=M;return}}function rMe(o){return o=o|0,357913941}function nMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function iMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function sMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function EX(o){o=o|0,lMe(o)}function oMe(o){o=o|0,aMe(o+24|0)}function aMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function lMe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,6,l,cMe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function cMe(){return 1364}function uMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;return A=I,I=I+16|0,d=A+8|0,m=A,B=fMe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],u=AMe(l,d,u)|0,I=A,u|0}function fMe(o){return o=o|0,(n[(_M()|0)+24>>2]|0)+(o*12|0)|0}function AMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),tp(d,u),d=rp(d,u)|0,d=Dz(gU[A&15](o,d)|0)|0,I=m,d|0}function pMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],hMe(o,u,d,0),I=A}function hMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=HM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=gMe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,dMe(m,A)|0,A),I=d}function HM(){var o=0,l=0;if(s[7848]|0||(CX(10136),gr(49,10136,U|0)|0,l=7848,n[l>>2]=1,n[l+4>>2]=0),!(_r(10136)|0)){o=10136,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));CX(10136)}return 10136}function gMe(o){return o=o|0,0}function dMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=HM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],IX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(mMe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function IX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function mMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=yMe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,EMe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],IX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,IMe(o,k),CMe(k),I=M;return}}function yMe(o){return o=o|0,357913941}function EMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function IMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CMe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function CX(o){o=o|0,vMe(o)}function wMe(o){o=o|0,BMe(o+24|0)}function BMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function vMe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,9,l,SMe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function SMe(){return 1372}function DMe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,d=A+8|0,m=A,B=bMe(o)|0,o=n[B+4>>2]|0,n[m>>2]=n[B>>2],n[m+4>>2]=o,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],PMe(l,d,u),I=A}function bMe(o){return o=o|0,(n[(HM()|0)+24>>2]|0)+(o*12|0)|0}function PMe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=$e;m=I,I=I+16|0,d=m,A=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(A=n[(n[o>>2]|0)+A>>2]|0),xMe(d,u),B=y(kMe(d,u)),NZ[A&1](o,B),I=m}function xMe(o,l){o=o|0,l=+l}function kMe(o,l){return o=o|0,l=+l,y(QMe(l))}function QMe(o){return o=+o,y(o)}function TMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,d=A+8|0,m=A,k=n[u>>2]|0,B=n[u+4>>2]|0,u=Bn(l)|0,n[m>>2]=k,n[m+4>>2]=B,n[d>>2]=n[m>>2],n[d+4>>2]=n[m+4>>2],RMe(o,u,d,0),I=A}function RMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0,T=0,M=0,L=0;d=I,I=I+32|0,m=d+16|0,L=d+8|0,k=d,M=n[u>>2]|0,T=n[u+4>>2]|0,B=n[o>>2]|0,o=jM()|0,n[L>>2]=M,n[L+4>>2]=T,n[m>>2]=n[L>>2],n[m+4>>2]=n[L+4>>2],u=FMe(m)|0,n[k>>2]=M,n[k+4>>2]=T,n[m>>2]=n[k>>2],n[m+4>>2]=n[k+4>>2],vn(B,l,o,u,NMe(m,A)|0,A),I=d}function jM(){var o=0,l=0;if(s[7856]|0||(BX(10172),gr(50,10172,U|0)|0,l=7856,n[l>>2]=1,n[l+4>>2]=0),!(_r(10172)|0)){o=10172,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));BX(10172)}return 10172}function FMe(o){return o=o|0,0}function NMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0;return L=I,I=I+32|0,d=L+24|0,B=L+16|0,k=L,T=L+8|0,m=n[o>>2]|0,A=n[o+4>>2]|0,n[k>>2]=m,n[k+4>>2]=A,q=jM()|0,M=q+24|0,o=yr(l,4)|0,n[T>>2]=o,l=q+28|0,u=n[l>>2]|0,u>>>0<(n[q+32>>2]|0)>>>0?(n[B>>2]=m,n[B+4>>2]=A,n[d>>2]=n[B>>2],n[d+4>>2]=n[B+4>>2],wX(u,d,o),o=(n[l>>2]|0)+12|0,n[l>>2]=o):(OMe(M,k,T),o=n[l>>2]|0),I=L,((o-(n[M>>2]|0)|0)/12|0)+-1|0}function wX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=n[l+4>>2]|0,n[o>>2]=n[l>>2],n[o+4>>2]=A,n[o+8>>2]=u}function OMe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;if(M=I,I=I+48|0,A=M+32|0,B=M+24|0,k=M,T=o+4|0,d=(((n[T>>2]|0)-(n[o>>2]|0)|0)/12|0)+1|0,m=LMe(o)|0,m>>>0<d>>>0)an(o);else{L=n[o>>2]|0,ae=((n[o+8>>2]|0)-L|0)/12|0,q=ae<<1,MMe(k,ae>>>0<m>>>1>>>0?q>>>0<d>>>0?d:q:m,((n[T>>2]|0)-L|0)/12|0,o+8|0),T=k+8|0,m=n[T>>2]|0,d=n[l+4>>2]|0,u=n[u>>2]|0,n[B>>2]=n[l>>2],n[B+4>>2]=d,n[A>>2]=n[B>>2],n[A+4>>2]=n[B+4>>2],wX(m,A,u),n[T>>2]=(n[T>>2]|0)+12,UMe(o,k),_Me(k),I=M;return}}function LMe(o){return o=o|0,357913941}function MMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>357913941)Nt();else{d=Kt(l*12|0)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u*12|0)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l*12|0)}function UMe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(((d|0)/-12|0)*12|0)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function _Me(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~(((A+-12-l|0)>>>0)/12|0)*12|0)),o=n[o>>2]|0,o|0&&It(o)}function BX(o){o=o|0,GMe(o)}function HMe(o){o=o|0,jMe(o+24|0)}function jMe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~(((l+-12-A|0)>>>0)/12|0)*12|0)),It(u))}function GMe(o){o=o|0;var l=0;l=tn()|0,rn(o,2,3,l,qMe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qMe(){return 1380}function WMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+8|0,B=d,k=YMe(o)|0,o=n[k+4>>2]|0,n[B>>2]=n[k>>2],n[B+4>>2]=o,n[m>>2]=n[B>>2],n[m+4>>2]=n[B+4>>2],VMe(l,m,u,A),I=d}function YMe(o){return o=o|0,(n[(jM()|0)+24>>2]|0)+(o*12|0)|0}function VMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;k=I,I=I+16|0,m=k+1|0,B=k,d=n[l>>2]|0,l=n[l+4>>2]|0,o=o+(l>>1)|0,l&1&&(d=n[(n[o>>2]|0)+d>>2]|0),tp(m,u),m=rp(m,u)|0,JMe(B,A),B=KMe(B,A)|0,F2[d&15](o,m,B),I=k}function JMe(o,l){o=o|0,l=l|0}function KMe(o,l){return o=o|0,l=l|0,zMe(l)|0}function zMe(o){return o=o|0,(o|0)!=0|0}function XMe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=GM()|0,o=ZMe(u)|0,vn(m,l,d,o,$Me(u,A)|0,A)}function GM(){var o=0,l=0;if(s[7864]|0||(SX(10208),gr(51,10208,U|0)|0,l=7864,n[l>>2]=1,n[l+4>>2]=0),!(_r(10208)|0)){o=10208,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));SX(10208)}return 10208}function ZMe(o){return o=o|0,o|0}function $Me(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=GM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(vX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(eUe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function vX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function eUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=tUe(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,rUe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,vX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,nUe(o,d),iUe(d),I=k;return}}function tUe(o){return o=o|0,536870911}function rUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function nUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function iUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function SX(o){o=o|0,aUe(o)}function sUe(o){o=o|0,oUe(o+24|0)}function oUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function aUe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,24,l,lUe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lUe(){return 1392}function cUe(o,l){o=o|0,l=l|0,fUe(n[(uUe(o)|0)>>2]|0,l)}function uUe(o){return o=o|0,(n[(GM()|0)+24>>2]|0)+(o<<3)|0}function fUe(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,hX(A,l),l=gX(A,l)|0,ip[o&127](l),I=u}function AUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=qM()|0,o=pUe(u)|0,vn(m,l,d,o,hUe(u,A)|0,A)}function qM(){var o=0,l=0;if(s[7872]|0||(bX(10244),gr(52,10244,U|0)|0,l=7872,n[l>>2]=1,n[l+4>>2]=0),!(_r(10244)|0)){o=10244,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));bX(10244)}return 10244}function pUe(o){return o=o|0,o|0}function hUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=qM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(DX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(gUe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function DX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function gUe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=dUe(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,mUe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,DX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,yUe(o,d),EUe(d),I=k;return}}function dUe(o){return o=o|0,536870911}function mUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function yUe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function EUe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function bX(o){o=o|0,wUe(o)}function IUe(o){o=o|0,CUe(o+24|0)}function CUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function wUe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,16,l,BUe()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function BUe(){return 1400}function vUe(o){return o=o|0,DUe(n[(SUe(o)|0)>>2]|0)|0}function SUe(o){return o=o|0,(n[(qM()|0)+24>>2]|0)+(o<<3)|0}function DUe(o){return o=o|0,bUe(VP[o&7]()|0)|0}function bUe(o){return o=o|0,o|0}function PUe(){var o=0;return s[7880]|0||(NUe(10280),gr(25,10280,U|0)|0,o=7880,n[o>>2]=1,n[o+4>>2]=0),10280}function xUe(o,l){o=o|0,l=l|0,n[o>>2]=kUe()|0,n[o+4>>2]=QUe()|0,n[o+12>>2]=l,n[o+8>>2]=TUe()|0,n[o+32>>2]=4}function kUe(){return 11711}function QUe(){return 1356}function TUe(){return FP()|0}function RUe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(FUe(u),It(u)):l|0&&(Kg(l),It(l))}function FUe(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function NUe(o){o=o|0,Lh(o)}function OUe(o){o=o|0,LUe(o,4920),MUe(o)|0,UUe(o)|0}function LUe(o,l){o=o|0,l=l|0;var u=0;u=Kz()|0,n[o>>2]=u,o_e(u,l),jh(n[o>>2]|0)}function MUe(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,zUe()|0),o|0}function UUe(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,_Ue()|0),o|0}function _Ue(){var o=0;return s[7888]|0||(PX(10328),gr(53,10328,U|0)|0,o=7888,n[o>>2]=1,n[o+4>>2]=0),_r(10328)|0||PX(10328),10328}function cd(o,l){o=o|0,l=l|0,vn(o,0,l,0,0,0)}function PX(o){o=o|0,GUe(o),ud(o,10)}function HUe(o){o=o|0,jUe(o+24|0)}function jUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function GUe(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,VUe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function qUe(o,l,u){o=o|0,l=l|0,u=+u,WUe(o,l,u)}function ud(o,l){o=o|0,l=l|0,n[o+20>>2]=l}function WUe(o,l,u){o=o|0,l=l|0,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+16|0,m=A+8|0,k=A+13|0,d=A,B=A+12|0,tp(k,l),n[m>>2]=rp(k,l)|0,Qf(B,u),E[d>>3]=+Tf(B,u),YUe(o,m,d),I=A}function YUe(o,l,u){o=o|0,l=l|0,u=u|0,Tl(o+8|0,n[l>>2]|0,+E[u>>3]),s[o+24>>0]=1}function VUe(){return 1404}function JUe(o,l){return o=o|0,l=+l,KUe(o,l)|0}function KUe(o,l){o=o|0,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,m=A+4|0,B=A+8|0,k=A,d=Rl(8)|0,u=d,T=Kt(16)|0,tp(m,o),o=rp(m,o)|0,Qf(B,l),Tl(T,o,+Tf(B,l)),B=u+4|0,n[B>>2]=T,o=Kt(8)|0,B=n[B>>2]|0,n[k>>2]=0,n[m>>2]=n[k>>2],xM(o,B,m),n[d>>2]=o,I=A,u|0}function zUe(){var o=0;return s[7896]|0||(xX(10364),gr(54,10364,U|0)|0,o=7896,n[o>>2]=1,n[o+4>>2]=0),_r(10364)|0||xX(10364),10364}function xX(o){o=o|0,$Ue(o),ud(o,55)}function XUe(o){o=o|0,ZUe(o+24|0)}function ZUe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function $Ue(o){o=o|0;var l=0;l=tn()|0,rn(o,5,4,l,n_e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function e_e(o){o=o|0,t_e(o)}function t_e(o){o=o|0,r_e(o)}function r_e(o){o=o|0,kX(o+8|0),s[o+24>>0]=1}function kX(o){o=o|0,n[o>>2]=0,E[o+8>>3]=0}function n_e(){return 1424}function i_e(){return s_e()|0}function s_e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Rl(8)|0,o=u,A=Kt(16)|0,kX(A),m=o+4|0,n[m>>2]=A,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],xM(A,m,d),n[u>>2]=A,I=l,o|0}function o_e(o,l){o=o|0,l=l|0,n[o>>2]=a_e()|0,n[o+4>>2]=l_e()|0,n[o+12>>2]=l,n[o+8>>2]=c_e()|0,n[o+32>>2]=5}function a_e(){return 11710}function l_e(){return 1416}function c_e(){return NP()|0}function u_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(f_e(u),It(u)):l|0&&It(l)}function f_e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function NP(){var o=0;return s[7904]|0||(n[2600]=A_e()|0,n[2601]=0,o=7904,n[o>>2]=1,n[o+4>>2]=0),10400}function A_e(){return n[357]|0}function p_e(o){o=o|0,h_e(o,4926),g_e(o)|0}function h_e(o,l){o=o|0,l=l|0;var u=0;u=yz()|0,n[o>>2]=u,D_e(u,l),jh(n[o>>2]|0)}function g_e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,d_e()|0),o|0}function d_e(){var o=0;return s[7912]|0||(QX(10412),gr(56,10412,U|0)|0,o=7912,n[o>>2]=1,n[o+4>>2]=0),_r(10412)|0||QX(10412),10412}function QX(o){o=o|0,E_e(o),ud(o,57)}function m_e(o){o=o|0,y_e(o+24|0)}function y_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function E_e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,5,l,B_e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function I_e(o){o=o|0,C_e(o)}function C_e(o){o=o|0,w_e(o)}function w_e(o){o=o|0;var l=0,u=0;l=o+8|0,u=l+48|0;do n[l>>2]=0,l=l+4|0;while((l|0)<(u|0));s[o+56>>0]=1}function B_e(){return 1432}function v_e(){return S_e()|0}function S_e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0;B=I,I=I+16|0,o=B+4|0,l=B,u=Rl(8)|0,A=u,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=A+4|0,n[m>>2]=d,k=Kt(8)|0,m=n[m>>2]|0,n[l>>2]=0,n[o>>2]=n[l>>2],Ez(k,m,o),n[u>>2]=k,I=B,A|0}function D_e(o,l){o=o|0,l=l|0,n[o>>2]=b_e()|0,n[o+4>>2]=P_e()|0,n[o+12>>2]=l,n[o+8>>2]=x_e()|0,n[o+32>>2]=6}function b_e(){return 11704}function P_e(){return 1436}function x_e(){return NP()|0}function k_e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(Q_e(u),It(u)):l|0&&It(l)}function Q_e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function T_e(o){o=o|0,R_e(o,4933),F_e(o)|0,N_e(o)|0}function R_e(o,l){o=o|0,l=l|0;var u=0;u=s4e()|0,n[o>>2]=u,o4e(u,l),jh(n[o>>2]|0)}function F_e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,K_e()|0),o|0}function N_e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,O_e()|0),o|0}function O_e(){var o=0;return s[7920]|0||(TX(10452),gr(58,10452,U|0)|0,o=7920,n[o>>2]=1,n[o+4>>2]=0),_r(10452)|0||TX(10452),10452}function TX(o){o=o|0,U_e(o),ud(o,1)}function L_e(o){o=o|0,M_e(o+24|0)}function M_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function U_e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,1,l,G_e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function __e(o,l,u){o=o|0,l=+l,u=+u,H_e(o,l,u)}function H_e(o,l,u){o=o|0,l=+l,u=+u;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,m=A+8|0,k=A+17|0,d=A,B=A+16|0,Qf(k,l),E[m>>3]=+Tf(k,l),Qf(B,u),E[d>>3]=+Tf(B,u),j_e(o,m,d),I=A}function j_e(o,l,u){o=o|0,l=l|0,u=u|0,RX(o+8|0,+E[l>>3],+E[u>>3]),s[o+24>>0]=1}function RX(o,l,u){o=o|0,l=+l,u=+u,E[o>>3]=l,E[o+8>>3]=u}function G_e(){return 1472}function q_e(o,l){return o=+o,l=+l,W_e(o,l)|0}function W_e(o,l){o=+o,l=+l;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+16|0,B=A+4|0,k=A+8|0,T=A,d=Rl(8)|0,u=d,m=Kt(16)|0,Qf(B,o),o=+Tf(B,o),Qf(k,l),RX(m,o,+Tf(k,l)),k=u+4|0,n[k>>2]=m,m=Kt(8)|0,k=n[k>>2]|0,n[T>>2]=0,n[B>>2]=n[T>>2],FX(m,k,B),n[d>>2]=m,I=A,u|0}function FX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1452,n[u+12>>2]=l,n[o+4>>2]=u}function Y_e(o){o=o|0,$y(o),It(o)}function V_e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function J_e(o){o=o|0,It(o)}function K_e(){var o=0;return s[7928]|0||(NX(10488),gr(59,10488,U|0)|0,o=7928,n[o>>2]=1,n[o+4>>2]=0),_r(10488)|0||NX(10488),10488}function NX(o){o=o|0,Z_e(o),ud(o,60)}function z_e(o){o=o|0,X_e(o+24|0)}function X_e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function Z_e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,6,l,r4e()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function $_e(o){o=o|0,e4e(o)}function e4e(o){o=o|0,t4e(o)}function t4e(o){o=o|0,OX(o+8|0),s[o+24>>0]=1}function OX(o){o=o|0,n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,n[o+12>>2]=0}function r4e(){return 1492}function n4e(){return i4e()|0}function i4e(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Rl(8)|0,o=u,A=Kt(16)|0,OX(A),m=o+4|0,n[m>>2]=A,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],FX(A,m,d),n[u>>2]=A,I=l,o|0}function s4e(){var o=0;return s[7936]|0||(A4e(10524),gr(25,10524,U|0)|0,o=7936,n[o>>2]=1,n[o+4>>2]=0),10524}function o4e(o,l){o=o|0,l=l|0,n[o>>2]=a4e()|0,n[o+4>>2]=l4e()|0,n[o+12>>2]=l,n[o+8>>2]=c4e()|0,n[o+32>>2]=7}function a4e(){return 11700}function l4e(){return 1484}function c4e(){return NP()|0}function u4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(f4e(u),It(u)):l|0&&It(l)}function f4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function A4e(o){o=o|0,Lh(o)}function p4e(o,l,u){o=o|0,l=l|0,u=u|0,o=Bn(l)|0,l=h4e(u)|0,u=g4e(u,0)|0,W4e(o,l,u,WM()|0,0)}function h4e(o){return o=o|0,o|0}function g4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=WM()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(MX(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(w4e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function WM(){var o=0,l=0;if(s[7944]|0||(LX(10568),gr(61,10568,U|0)|0,l=7944,n[l>>2]=1,n[l+4>>2]=0),!(_r(10568)|0)){o=10568,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));LX(10568)}return 10568}function LX(o){o=o|0,y4e(o)}function d4e(o){o=o|0,m4e(o+24|0)}function m4e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function y4e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,17,l,Oz()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function E4e(o){return o=o|0,C4e(n[(I4e(o)|0)>>2]|0)|0}function I4e(o){return o=o|0,(n[(WM()|0)+24>>2]|0)+(o<<3)|0}function C4e(o){return o=o|0,RP(VP[o&7]()|0)|0}function MX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function w4e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=B4e(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,v4e(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,MX(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,S4e(o,d),D4e(d),I=k;return}}function B4e(o){return o=o|0,536870911}function v4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function S4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function D4e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function b4e(){P4e()}function P4e(){x4e(10604)}function x4e(o){o=o|0,k4e(o,4955)}function k4e(o,l){o=o|0,l=l|0;var u=0;u=Q4e()|0,n[o>>2]=u,T4e(u,l),jh(n[o>>2]|0)}function Q4e(){var o=0;return s[7952]|0||(H4e(10612),gr(25,10612,U|0)|0,o=7952,n[o>>2]=1,n[o+4>>2]=0),10612}function T4e(o,l){o=o|0,l=l|0,n[o>>2]=O4e()|0,n[o+4>>2]=L4e()|0,n[o+12>>2]=l,n[o+8>>2]=M4e()|0,n[o+32>>2]=8}function jh(o){o=o|0;var l=0,u=0;l=I,I=I+16|0,u=l,Jy()|0,n[u>>2]=o,R4e(10608,u),I=l}function Jy(){return s[11714]|0||(n[2652]=0,gr(62,10608,U|0)|0,s[11714]=1),10608}function R4e(o,l){o=o|0,l=l|0;var u=0;u=Kt(8)|0,n[u+4>>2]=n[l>>2],n[u>>2]=n[o>>2],n[o>>2]=u}function F4e(o){o=o|0,N4e(o)}function N4e(o){o=o|0;var l=0,u=0;if(l=n[o>>2]|0,l|0)do u=l,l=n[l>>2]|0,It(u);while(l|0);n[o>>2]=0}function O4e(){return 11715}function L4e(){return 1496}function M4e(){return FP()|0}function U4e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(_4e(u),It(u)):l|0&&It(l)}function _4e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function H4e(o){o=o|0,Lh(o)}function j4e(o,l){o=o|0,l=l|0;var u=0,A=0;Jy()|0,u=n[2652]|0;e:do if(u|0){for(;A=n[u+4>>2]|0,!(A|0&&!(EZ(YM(A)|0,o)|0));)if(u=n[u>>2]|0,!u)break e;G4e(A,l)}while(!1)}function YM(o){return o=o|0,n[o+12>>2]|0}function G4e(o,l){o=o|0,l=l|0;var u=0;o=o+36|0,u=n[o>>2]|0,u|0&&(Sf(u),It(u)),u=Kt(4)|0,DP(u,l),n[o>>2]=u}function VM(){return s[11716]|0||(n[2664]=0,gr(63,10656,U|0)|0,s[11716]=1),10656}function UX(){var o=0;return s[11717]|0?o=n[2665]|0:(q4e(),n[2665]=1504,s[11717]=1,o=1504),o|0}function q4e(){s[11740]|0||(s[11718]=yr(yr(8,0)|0,0)|0,s[11719]=yr(yr(0,0)|0,0)|0,s[11720]=yr(yr(0,16)|0,0)|0,s[11721]=yr(yr(8,0)|0,0)|0,s[11722]=yr(yr(0,0)|0,0)|0,s[11723]=yr(yr(8,0)|0,0)|0,s[11724]=yr(yr(0,0)|0,0)|0,s[11725]=yr(yr(8,0)|0,0)|0,s[11726]=yr(yr(0,0)|0,0)|0,s[11727]=yr(yr(8,0)|0,0)|0,s[11728]=yr(yr(0,0)|0,0)|0,s[11729]=yr(yr(0,0)|0,32)|0,s[11730]=yr(yr(0,0)|0,32)|0,s[11740]=1)}function _X(){return 1572}function W4e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0,L=0;m=I,I=I+32|0,L=m+16|0,M=m+12|0,T=m+8|0,k=m+4|0,B=m,n[L>>2]=o,n[M>>2]=l,n[T>>2]=u,n[k>>2]=A,n[B>>2]=d,VM()|0,Y4e(10656,L,M,T,k,B),I=m}function Y4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0;B=Kt(24)|0,gz(B+4|0,n[l>>2]|0,n[u>>2]|0,n[A>>2]|0,n[d>>2]|0,n[m>>2]|0),n[B>>2]=n[o>>2],n[o>>2]=B}function HX(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0;if(ct=I,I=I+32|0,Le=ct+20|0,Qe=ct+8|0,tt=ct+4|0,Ze=ct,l=n[l>>2]|0,l|0){Ye=Le+4|0,T=Le+8|0,M=Qe+4|0,L=Qe+8|0,q=Qe+8|0,ae=Le+8|0;do{if(B=l+4|0,k=JM(B)|0,k|0){if(d=P2(k)|0,n[Le>>2]=0,n[Ye>>2]=0,n[T>>2]=0,A=(x2(k)|0)+1|0,V4e(Le,A),A|0)for(;A=A+-1|0,bu(Qe,n[d>>2]|0),m=n[Ye>>2]|0,m>>>0<(n[ae>>2]|0)>>>0?(n[m>>2]=n[Qe>>2],n[Ye>>2]=(n[Ye>>2]|0)+4):KM(Le,Qe),A;)d=d+4|0;A=k2(k)|0,n[Qe>>2]=0,n[M>>2]=0,n[L>>2]=0;e:do if(n[A>>2]|0)for(d=0,m=0;;){if((d|0)==(m|0)?J4e(Qe,A):(n[d>>2]=n[A>>2],n[M>>2]=(n[M>>2]|0)+4),A=A+4|0,!(n[A>>2]|0))break e;d=n[M>>2]|0,m=n[q>>2]|0}while(!1);n[tt>>2]=OP(B)|0,n[Ze>>2]=_r(k)|0,K4e(u,o,tt,Ze,Le,Qe),zM(Qe),np(Le)}l=n[l>>2]|0}while(l|0)}I=ct}function JM(o){return o=o|0,n[o+12>>2]|0}function P2(o){return o=o|0,n[o+12>>2]|0}function x2(o){return o=o|0,n[o+16>>2]|0}function V4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+32|0,u=d,A=n[o>>2]|0,(n[o+8>>2]|0)-A>>2>>>0<l>>>0&&(KX(u,l,(n[o+4>>2]|0)-A>>2,o+8|0),zX(o,u),XX(u)),I=d}function KM(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=JX(o)|0,m>>>0<d>>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,T=M>>1,KX(u,M>>2>>>0<m>>>1>>>0?T>>>0<d>>>0?d:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,zX(o,u),XX(u),I=B;return}}function k2(o){return o=o|0,n[o+8>>2]|0}function J4e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0;if(B=I,I=I+32|0,u=B,A=o+4|0,d=((n[A>>2]|0)-(n[o>>2]|0)>>2)+1|0,m=VX(o)|0,m>>>0<d>>>0)an(o);else{k=n[o>>2]|0,M=(n[o+8>>2]|0)-k|0,T=M>>1,h3e(u,M>>2>>>0<m>>>1>>>0?T>>>0<d>>>0?d:T:m,(n[A>>2]|0)-k>>2,o+8|0),m=u+8|0,n[n[m>>2]>>2]=n[l>>2],n[m>>2]=(n[m>>2]|0)+4,g3e(o,u),d3e(u),I=B;return}}function OP(o){return o=o|0,n[o>>2]|0}function K4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,z4e(o,l,u,A,d,m)}function zM(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function np(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-4-A|0)>>>2)<<2)),It(u))}function z4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0;B=I,I=I+48|0,L=B+40|0,k=B+32|0,q=B+24|0,T=B+12|0,M=B,Fl(k),o=Os(o)|0,n[q>>2]=n[l>>2],u=n[u>>2]|0,A=n[A>>2]|0,XM(T,d),X4e(M,m),n[L>>2]=n[q>>2],Z4e(o,L,u,A,T,M),zM(M),np(T),Nl(k),I=B}function XM(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(A3e(o,A),p3e(o,n[l>>2]|0,n[u>>2]|0,A))}function X4e(o,l){o=o|0,l=l|0;var u=0,A=0;n[o>>2]=0,n[o+4>>2]=0,n[o+8>>2]=0,u=l+4|0,A=(n[u>>2]|0)-(n[l>>2]|0)>>2,A|0&&(u3e(o,A),f3e(o,n[l>>2]|0,n[u>>2]|0,A))}function Z4e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0;B=I,I=I+32|0,L=B+28|0,q=B+24|0,k=B+12|0,T=B,M=da($4e()|0)|0,n[q>>2]=n[l>>2],n[L>>2]=n[q>>2],l=fd(L)|0,u=jX(u)|0,A=ZM(A)|0,n[k>>2]=n[d>>2],L=d+4|0,n[k+4>>2]=n[L>>2],q=d+8|0,n[k+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[d>>2]=0,d=$M(k)|0,n[T>>2]=n[m>>2],L=m+4|0,n[T+4>>2]=n[L>>2],q=m+8|0,n[T+8>>2]=n[q>>2],n[q>>2]=0,n[L>>2]=0,n[m>>2]=0,lu(0,M|0,o|0,l|0,u|0,A|0,d|0,e3e(T)|0)|0,zM(T),np(k),I=B}function $4e(){var o=0;return s[7968]|0||(l3e(10708),o=7968,n[o>>2]=1,n[o+4>>2]=0),10708}function fd(o){return o=o|0,qX(o)|0}function jX(o){return o=o|0,GX(o)|0}function ZM(o){return o=o|0,RP(o)|0}function $M(o){return o=o|0,r3e(o)|0}function e3e(o){return o=o|0,t3e(o)|0}function t3e(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Rl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=GX(n[(n[o>>2]|0)+(l<<2)>>2]|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function GX(o){return o=o|0,o|0}function r3e(o){o=o|0;var l=0,u=0,A=0;if(A=(n[o+4>>2]|0)-(n[o>>2]|0)|0,u=A>>2,A=Rl(A+4|0)|0,n[A>>2]=u,u|0){l=0;do n[A+4+(l<<2)>>2]=qX((n[o>>2]|0)+(l<<2)|0)|0,l=l+1|0;while((l|0)!=(u|0))}return A|0}function qX(o){o=o|0;var l=0,u=0,A=0,d=0;return d=I,I=I+32|0,l=d+12|0,u=d,A=fM(WX()|0)|0,A?(AM(l,A),pM(u,l),Mje(o,u),o=hM(l)|0):o=n3e(o)|0,I=d,o|0}function WX(){var o=0;return s[7960]|0||(a3e(10664),gr(25,10664,U|0)|0,o=7960,n[o>>2]=1,n[o+4>>2]=0),10664}function n3e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Rl(8)|0,l=A,k=Kt(4)|0,n[k>>2]=n[o>>2],m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],YX(o,m,d),n[A>>2]=o,I=u,l|0}function YX(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1656,n[u+12>>2]=l,n[o+4>>2]=u}function i3e(o){o=o|0,$y(o),It(o)}function s3e(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function o3e(o){o=o|0,It(o)}function a3e(o){o=o|0,Lh(o)}function l3e(o){o=o|0,Qo(o,c3e()|0,5)}function c3e(){return 1676}function u3e(o,l){o=o|0,l=l|0;var u=0;if((VX(o)|0)>>>0<l>>>0&&an(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function f3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function VX(o){return o=o|0,1073741823}function A3e(o,l){o=o|0,l=l|0;var u=0;if((JX(o)|0)>>>0<l>>>0&&an(o),l>>>0>1073741823)Nt();else{u=Kt(l<<2)|0,n[o+4>>2]=u,n[o>>2]=u,n[o+8>>2]=u+(l<<2);return}}function p3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,A=o+4|0,o=u-l|0,(o|0)>0&&(Qr(n[A>>2]|0,l|0,o|0)|0,n[A>>2]=(n[A>>2]|0)+(o>>>2<<2))}function JX(o){return o=o|0,1073741823}function h3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Kt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function g3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function d3e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function KX(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>1073741823)Nt();else{d=Kt(l<<2)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<2)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<2)}function zX(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>2)<<2)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function XX(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-4-l|0)>>>2)<<2)),o=n[o>>2]|0,o|0&&It(o)}function m3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0;if(Qe=I,I=I+32|0,L=Qe+20|0,q=Qe+12|0,M=Qe+16|0,ae=Qe+4|0,Ye=Qe,Le=Qe+8|0,k=UX()|0,m=n[k>>2]|0,B=n[m>>2]|0,B|0)for(T=n[k+8>>2]|0,k=n[k+4>>2]|0;bu(L,B),y3e(o,L,k,T),m=m+4|0,B=n[m>>2]|0,B;)T=T+1|0,k=k+1|0;if(m=_X()|0,B=n[m>>2]|0,B|0)do bu(L,B),n[q>>2]=n[m+4>>2],E3e(l,L,q),m=m+8|0,B=n[m>>2]|0;while(B|0);if(m=n[(Jy()|0)>>2]|0,m|0)do l=n[m+4>>2]|0,bu(L,n[(Ky(l)|0)>>2]|0),n[q>>2]=YM(l)|0,I3e(u,L,q),m=n[m>>2]|0;while(m|0);if(bu(M,0),m=VM()|0,n[L>>2]=n[M>>2],HX(L,m,d),m=n[(Jy()|0)>>2]|0,m|0){o=L+4|0,l=L+8|0,u=L+8|0;do{if(T=n[m+4>>2]|0,bu(q,n[(Ky(T)|0)>>2]|0),C3e(ae,ZX(T)|0),B=n[ae>>2]|0,B|0){n[L>>2]=0,n[o>>2]=0,n[l>>2]=0;do bu(Ye,n[(Ky(n[B+4>>2]|0)|0)>>2]|0),k=n[o>>2]|0,k>>>0<(n[u>>2]|0)>>>0?(n[k>>2]=n[Ye>>2],n[o>>2]=(n[o>>2]|0)+4):KM(L,Ye),B=n[B>>2]|0;while(B|0);w3e(A,q,L),np(L)}n[Le>>2]=n[q>>2],M=$X(T)|0,n[L>>2]=n[Le>>2],HX(L,M,d),Cz(ae),m=n[m>>2]|0}while(m|0)}I=Qe}function y3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F3e(o,l,u,A)}function E3e(o,l,u){o=o|0,l=l|0,u=u|0,R3e(o,l,u)}function Ky(o){return o=o|0,o|0}function I3e(o,l,u){o=o|0,l=l|0,u=u|0,x3e(o,l,u)}function ZX(o){return o=o|0,o+16|0}function C3e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;if(m=I,I=I+16|0,d=m+8|0,u=m,n[o>>2]=0,A=n[l>>2]|0,n[d>>2]=A,n[u>>2]=o,u=P3e(u)|0,A|0){if(A=Kt(12)|0,B=(eZ(d)|0)+4|0,o=n[B+4>>2]|0,l=A+4|0,n[l>>2]=n[B>>2],n[l+4>>2]=o,l=n[n[d>>2]>>2]|0,n[d>>2]=l,!l)o=A;else for(l=A;o=Kt(12)|0,T=(eZ(d)|0)+4|0,k=n[T+4>>2]|0,B=o+4|0,n[B>>2]=n[T>>2],n[B+4>>2]=k,n[l>>2]=o,B=n[n[d>>2]>>2]|0,n[d>>2]=B,B;)l=o;n[o>>2]=n[u>>2],n[u>>2]=A}I=m}function w3e(o,l,u){o=o|0,l=l|0,u=u|0,B3e(o,l,u)}function $X(o){return o=o|0,o+24|0}function B3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+24|0,d=A+16|0,k=A+12|0,m=A,Fl(d),o=Os(o)|0,n[k>>2]=n[l>>2],XM(m,u),n[B>>2]=n[k>>2],v3e(o,B,m),np(m),Nl(d),I=A}function v3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=I,I=I+32|0,B=A+16|0,k=A+12|0,d=A,m=da(S3e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=fd(B)|0,n[d>>2]=n[u>>2],B=u+4|0,n[d+4>>2]=n[B>>2],k=u+8|0,n[d+8>>2]=n[k>>2],n[k>>2]=0,n[B>>2]=0,n[u>>2]=0,Ts(0,m|0,o|0,l|0,$M(d)|0)|0,np(d),I=A}function S3e(){var o=0;return s[7976]|0||(D3e(10720),o=7976,n[o>>2]=1,n[o+4>>2]=0),10720}function D3e(o){o=o|0,Qo(o,b3e()|0,2)}function b3e(){return 1732}function P3e(o){return o=o|0,n[o>>2]|0}function eZ(o){return o=o|0,n[o>>2]|0}function x3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Fl(d),o=Os(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],tZ(o,m,u),Nl(d),I=A}function tZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+16|0,m=A+4|0,B=A,d=da(k3e()|0)|0,n[B>>2]=n[l>>2],n[m>>2]=n[B>>2],l=fd(m)|0,Ts(0,d|0,o|0,l|0,jX(u)|0)|0,I=A}function k3e(){var o=0;return s[7984]|0||(Q3e(10732),o=7984,n[o>>2]=1,n[o+4>>2]=0),10732}function Q3e(o){o=o|0,Qo(o,T3e()|0,2)}function T3e(){return 1744}function R3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;A=I,I=I+32|0,m=A+16|0,d=A+8|0,B=A,Fl(d),o=Os(o)|0,n[B>>2]=n[l>>2],u=n[u>>2]|0,n[m>>2]=n[B>>2],tZ(o,m,u),Nl(d),I=A}function F3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Fl(m),o=Os(o)|0,n[k>>2]=n[l>>2],u=s[u>>0]|0,A=s[A>>0]|0,n[B>>2]=n[k>>2],N3e(o,B,u,A),Nl(m),I=d}function N3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,B=d+4|0,k=d,m=da(O3e()|0)|0,n[k>>2]=n[l>>2],n[B>>2]=n[k>>2],l=fd(B)|0,u=zy(u)|0,Li(0,m|0,o|0,l|0,u|0,zy(A)|0)|0,I=d}function O3e(){var o=0;return s[7992]|0||(M3e(10744),o=7992,n[o>>2]=1,n[o+4>>2]=0),10744}function zy(o){return o=o|0,L3e(o)|0}function L3e(o){return o=o|0,o&255|0}function M3e(o){o=o|0,Qo(o,U3e()|0,3)}function U3e(){return 1756}function _3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;switch(ae=I,I=I+32|0,k=ae+8|0,T=ae+4|0,M=ae+20|0,L=ae,yM(o,0),A=Lje(l)|0,n[k>>2]=0,q=k+4|0,n[q>>2]=0,n[k+8>>2]=0,A<<24>>24){case 0:{s[M>>0]=0,H3e(T,u,M),LP(o,T)|0,Df(T);break}case 8:{q=sU(l)|0,s[M>>0]=8,bu(L,n[q+4>>2]|0),j3e(T,u,M,L,q+8|0),LP(o,T)|0,Df(T);break}case 9:{if(m=sU(l)|0,l=n[m+4>>2]|0,l|0)for(B=k+8|0,d=m+12|0;l=l+-1|0,bu(T,n[d>>2]|0),A=n[q>>2]|0,A>>>0<(n[B>>2]|0)>>>0?(n[A>>2]=n[T>>2],n[q>>2]=(n[q>>2]|0)+4):KM(k,T),l;)d=d+4|0;s[M>>0]=9,bu(L,n[m+8>>2]|0),G3e(T,u,M,L,k),LP(o,T)|0,Df(T);break}default:q=sU(l)|0,s[M>>0]=A,bu(L,n[q+4>>2]|0),q3e(T,u,M,L),LP(o,T)|0,Df(T)}np(k),I=ae}function H3e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;A=I,I=I+16|0,d=A,Fl(d),l=Os(l)|0,n8e(o,l,s[u>>0]|0),Nl(d),I=A}function LP(o,l){o=o|0,l=l|0;var u=0;return u=n[o>>2]|0,u|0&&Na(u|0),n[o>>2]=n[l>>2],n[l>>2]=0,o|0}function j3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+32|0,k=m+16|0,B=m+8|0,T=m,Fl(B),l=Os(l)|0,u=s[u>>0]|0,n[T>>2]=n[A>>2],d=n[d>>2]|0,n[k>>2]=n[T>>2],$3e(o,l,u,k,d),Nl(B),I=m}function G3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0;m=I,I=I+32|0,T=m+24|0,B=m+16|0,M=m+12|0,k=m,Fl(B),l=Os(l)|0,u=s[u>>0]|0,n[M>>2]=n[A>>2],XM(k,d),n[T>>2]=n[M>>2],K3e(o,l,u,T,k),np(k),Nl(B),I=m}function q3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+32|0,B=d+16|0,m=d+8|0,k=d,Fl(m),l=Os(l)|0,u=s[u>>0]|0,n[k>>2]=n[A>>2],n[B>>2]=n[k>>2],W3e(o,l,u,B),Nl(m),I=d}function W3e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0,B=0,k=0;d=I,I=I+16|0,m=d+4|0,k=d,B=da(Y3e()|0)|0,u=zy(u)|0,n[k>>2]=n[A>>2],n[m>>2]=n[k>>2],MP(o,Ts(0,B|0,l|0,u|0,fd(m)|0)|0),I=d}function Y3e(){var o=0;return s[8e3]|0||(V3e(10756),o=8e3,n[o>>2]=1,n[o+4>>2]=0),10756}function MP(o,l){o=o|0,l=l|0,yM(o,l)}function V3e(o){o=o|0,Qo(o,J3e()|0,2)}function J3e(){return 1772}function K3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0;m=I,I=I+32|0,T=m+16|0,M=m+12|0,B=m,k=da(z3e()|0)|0,u=zy(u)|0,n[M>>2]=n[A>>2],n[T>>2]=n[M>>2],A=fd(T)|0,n[B>>2]=n[d>>2],T=d+4|0,n[B+4>>2]=n[T>>2],M=d+8|0,n[B+8>>2]=n[M>>2],n[M>>2]=0,n[T>>2]=0,n[d>>2]=0,MP(o,Li(0,k|0,l|0,u|0,A|0,$M(B)|0)|0),np(B),I=m}function z3e(){var o=0;return s[8008]|0||(X3e(10768),o=8008,n[o>>2]=1,n[o+4>>2]=0),10768}function X3e(o){o=o|0,Qo(o,Z3e()|0,3)}function Z3e(){return 1784}function $3e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0;m=I,I=I+16|0,k=m+4|0,T=m,B=da(e8e()|0)|0,u=zy(u)|0,n[T>>2]=n[A>>2],n[k>>2]=n[T>>2],A=fd(k)|0,MP(o,Li(0,B|0,l|0,u|0,A|0,ZM(d)|0)|0),I=m}function e8e(){var o=0;return s[8016]|0||(t8e(10780),o=8016,n[o>>2]=1,n[o+4>>2]=0),10780}function t8e(o){o=o|0,Qo(o,r8e()|0,3)}function r8e(){return 1800}function n8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;A=da(i8e()|0)|0,MP(o,dn(0,A|0,l|0,zy(u)|0)|0)}function i8e(){var o=0;return s[8024]|0||(s8e(10792),o=8024,n[o>>2]=1,n[o+4>>2]=0),10792}function s8e(o){o=o|0,Qo(o,o8e()|0,1)}function o8e(){return 1816}function a8e(){l8e(),c8e(),u8e()}function l8e(){n[2702]=xZ(65536)|0}function c8e(){k8e(10856)}function u8e(){f8e(10816)}function f8e(o){o=o|0,A8e(o,5044),p8e(o)|0}function A8e(o,l){o=o|0,l=l|0;var u=0;u=WX()|0,n[o>>2]=u,v8e(u,l),jh(n[o>>2]|0)}function p8e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,h8e()|0),o|0}function h8e(){var o=0;return s[8032]|0||(rZ(10820),gr(64,10820,U|0)|0,o=8032,n[o>>2]=1,n[o+4>>2]=0),_r(10820)|0||rZ(10820),10820}function rZ(o){o=o|0,m8e(o),ud(o,25)}function g8e(o){o=o|0,d8e(o+24|0)}function d8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function m8e(o){o=o|0;var l=0;l=tn()|0,rn(o,5,18,l,C8e()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function y8e(o,l){o=o|0,l=l|0,E8e(o,l)}function E8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;u=I,I=I+16|0,A=u,d=u+4|0,ad(d,l),n[A>>2]=ld(d,l)|0,I8e(o,A),I=u}function I8e(o,l){o=o|0,l=l|0,nZ(o+4|0,n[l>>2]|0),s[o+8>>0]=1}function nZ(o,l){o=o|0,l=l|0,n[o>>2]=l}function C8e(){return 1824}function w8e(o){return o=o|0,B8e(o)|0}function B8e(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0;return u=I,I=I+16|0,d=u+4|0,B=u,A=Rl(8)|0,l=A,k=Kt(4)|0,ad(d,o),nZ(k,ld(d,o)|0),m=l+4|0,n[m>>2]=k,o=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],YX(o,m,d),n[A>>2]=o,I=u,l|0}function Rl(o){o=o|0;var l=0,u=0;return o=o+7&-8,o>>>0<=32768&&(l=n[2701]|0,o>>>0<=(65536-l|0)>>>0)?(u=(n[2702]|0)+l|0,n[2701]=l+o,o=u):(o=xZ(o+8|0)|0,n[o>>2]=n[2703],n[2703]=o,o=o+8|0),o|0}function v8e(o,l){o=o|0,l=l|0,n[o>>2]=S8e()|0,n[o+4>>2]=D8e()|0,n[o+12>>2]=l,n[o+8>>2]=b8e()|0,n[o+32>>2]=9}function S8e(){return 11744}function D8e(){return 1832}function b8e(){return NP()|0}function P8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(x8e(u),It(u)):l|0&&It(l)}function x8e(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function k8e(o){o=o|0,Q8e(o,5052),T8e(o)|0,R8e(o,5058,26)|0,F8e(o,5069,1)|0,N8e(o,5077,10)|0,O8e(o,5087,19)|0,L8e(o,5094,27)|0}function Q8e(o,l){o=o|0,l=l|0;var u=0;u=xje()|0,n[o>>2]=u,kje(u,l),jh(n[o>>2]|0)}function T8e(o){o=o|0;var l=0;return l=n[o>>2]|0,cd(l,gje()|0),o|0}function R8e(o,l,u){return o=o|0,l=l|0,u=u|0,XHe(o,Bn(l)|0,u,0),o|0}function F8e(o,l,u){return o=o|0,l=l|0,u=u|0,OHe(o,Bn(l)|0,u,0),o|0}function N8e(o,l,u){return o=o|0,l=l|0,u=u|0,hHe(o,Bn(l)|0,u,0),o|0}function O8e(o,l,u){return o=o|0,l=l|0,u=u|0,$8e(o,Bn(l)|0,u,0),o|0}function iZ(o,l){o=o|0,l=l|0;var u=0,A=0;e:for(;;){for(u=n[2703]|0;;){if((u|0)==(l|0))break e;if(A=n[u>>2]|0,n[2703]=A,!u)u=A;else break}It(u)}n[2701]=o}function L8e(o,l,u){return o=o|0,l=l|0,u=u|0,M8e(o,Bn(l)|0,u,0),o|0}function M8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=eU()|0,o=U8e(u)|0,vn(m,l,d,o,_8e(u,A)|0,A)}function eU(){var o=0,l=0;if(s[8040]|0||(oZ(10860),gr(65,10860,U|0)|0,l=8040,n[l>>2]=1,n[l+4>>2]=0),!(_r(10860)|0)){o=10860,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));oZ(10860)}return 10860}function U8e(o){return o=o|0,o|0}function _8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=eU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(sZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(H8e(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function sZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function H8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=j8e(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,G8e(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,sZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,q8e(o,d),W8e(d),I=k;return}}function j8e(o){return o=o|0,536870911}function G8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function q8e(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function W8e(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function oZ(o){o=o|0,J8e(o)}function Y8e(o){o=o|0,V8e(o+24|0)}function V8e(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function J8e(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,K8e()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function K8e(){return 1840}function z8e(o,l,u){o=o|0,l=l|0,u=u|0,Z8e(n[(X8e(o)|0)>>2]|0,l,u)}function X8e(o){return o=o|0,(n[(eU()|0)+24>>2]|0)+(o<<3)|0}function Z8e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+1|0,d=A,ad(m,l),l=ld(m,l)|0,ad(d,u),u=ld(d,u)|0,sp[o&31](l,u),I=A}function $8e(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=tU()|0,o=eHe(u)|0,vn(m,l,d,o,tHe(u,A)|0,A)}function tU(){var o=0,l=0;if(s[8048]|0||(lZ(10896),gr(66,10896,U|0)|0,l=8048,n[l>>2]=1,n[l+4>>2]=0),!(_r(10896)|0)){o=10896,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));lZ(10896)}return 10896}function eHe(o){return o=o|0,o|0}function tHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=tU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(aZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(rHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function aZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function rHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=nHe(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,iHe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,aZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,sHe(o,d),oHe(d),I=k;return}}function nHe(o){return o=o|0,536870911}function iHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function sHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function oHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function lZ(o){o=o|0,cHe(o)}function aHe(o){o=o|0,lHe(o+24|0)}function lHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function cHe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,11,l,uHe()|0,1),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function uHe(){return 1852}function fHe(o,l){return o=o|0,l=l|0,pHe(n[(AHe(o)|0)>>2]|0,l)|0}function AHe(o){return o=o|0,(n[(tU()|0)+24>>2]|0)+(o<<3)|0}function pHe(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,ad(A,l),l=ld(A,l)|0,l=RP(gd[o&31](l)|0)|0,I=u,l|0}function hHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=rU()|0,o=gHe(u)|0,vn(m,l,d,o,dHe(u,A)|0,A)}function rU(){var o=0,l=0;if(s[8056]|0||(uZ(10932),gr(67,10932,U|0)|0,l=8056,n[l>>2]=1,n[l+4>>2]=0),!(_r(10932)|0)){o=10932,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));uZ(10932)}return 10932}function gHe(o){return o=o|0,o|0}function dHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=rU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(cZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(mHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function cZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function mHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=yHe(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,EHe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,cZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,IHe(o,d),CHe(d),I=k;return}}function yHe(o){return o=o|0,536870911}function EHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function IHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function CHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function uZ(o){o=o|0,vHe(o)}function wHe(o){o=o|0,BHe(o+24|0)}function BHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function vHe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,7,l,SHe()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function SHe(){return 1860}function DHe(o,l,u){return o=o|0,l=l|0,u=u|0,PHe(n[(bHe(o)|0)>>2]|0,l,u)|0}function bHe(o){return o=o|0,(n[(rU()|0)+24>>2]|0)+(o<<3)|0}function PHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0;return A=I,I=I+32|0,B=A+12|0,m=A+8|0,k=A,T=A+16|0,d=A+4|0,xHe(T,l),kHe(k,T,l),Mh(d,u),u=Uh(d,u)|0,n[B>>2]=n[k>>2],F2[o&15](m,B,u),u=QHe(m)|0,Df(m),_h(d),I=A,u|0}function xHe(o,l){o=o|0,l=l|0}function kHe(o,l,u){o=o|0,l=l|0,u=u|0,THe(o,u)}function QHe(o){return o=o|0,Os(o)|0}function THe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0;d=I,I=I+16|0,u=d,A=l,A&1?(RHe(u,0),Me(A|0,u|0)|0,FHe(o,u),NHe(u)):n[o>>2]=n[l>>2],I=d}function RHe(o,l){o=o|0,l=l|0,Su(o,l),n[o+4>>2]=0,s[o+8>>0]=0}function FHe(o,l){o=o|0,l=l|0,n[o>>2]=n[l+4>>2]}function NHe(o){o=o|0,s[o+8>>0]=0}function OHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=nU()|0,o=LHe(u)|0,vn(m,l,d,o,MHe(u,A)|0,A)}function nU(){var o=0,l=0;if(s[8064]|0||(AZ(10968),gr(68,10968,U|0)|0,l=8064,n[l>>2]=1,n[l+4>>2]=0),!(_r(10968)|0)){o=10968,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));AZ(10968)}return 10968}function LHe(o){return o=o|0,o|0}function MHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=nU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(fZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(UHe(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function fZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function UHe(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=_He(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,HHe(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,fZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,jHe(o,d),GHe(d),I=k;return}}function _He(o){return o=o|0,536870911}function HHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function jHe(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function GHe(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function AZ(o){o=o|0,YHe(o)}function qHe(o){o=o|0,WHe(o+24|0)}function WHe(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function YHe(o){o=o|0;var l=0;l=tn()|0,rn(o,1,1,l,VHe()|0,5),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function VHe(){return 1872}function JHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,zHe(n[(KHe(o)|0)>>2]|0,l,u,A,d,m)}function KHe(o){return o=o|0,(n[(nU()|0)+24>>2]|0)+(o<<3)|0}function zHe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0;B=I,I=I+32|0,k=B+16|0,T=B+12|0,M=B+8|0,L=B+4|0,q=B,Mh(k,l),l=Uh(k,l)|0,Mh(T,u),u=Uh(T,u)|0,Mh(M,A),A=Uh(M,A)|0,Mh(L,d),d=Uh(L,d)|0,Mh(q,m),m=Uh(q,m)|0,FZ[o&1](l,u,A,d,m),_h(q),_h(L),_h(M),_h(T),_h(k),I=B}function XHe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;m=n[o>>2]|0,d=iU()|0,o=ZHe(u)|0,vn(m,l,d,o,$He(u,A)|0,A)}function iU(){var o=0,l=0;if(s[8072]|0||(hZ(11004),gr(69,11004,U|0)|0,l=8072,n[l>>2]=1,n[l+4>>2]=0),!(_r(11004)|0)){o=11004,l=o+36|0;do n[o>>2]=0,o=o+4|0;while((o|0)<(l|0));hZ(11004)}return 11004}function ZHe(o){return o=o|0,o|0}function $He(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0,k=0,T=0;return k=I,I=I+16|0,d=k,m=k+4|0,n[d>>2]=o,T=iU()|0,B=T+24|0,l=yr(l,4)|0,n[m>>2]=l,u=T+28|0,A=n[u>>2]|0,A>>>0<(n[T+32>>2]|0)>>>0?(pZ(A,o,l),l=(n[u>>2]|0)+8|0,n[u>>2]=l):(eje(B,d,m),l=n[u>>2]|0),I=k,(l-(n[B>>2]|0)>>3)+-1|0}function pZ(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,n[o+4>>2]=u}function eje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0;if(k=I,I=I+32|0,d=k,m=o+4|0,B=((n[m>>2]|0)-(n[o>>2]|0)>>3)+1|0,A=tje(o)|0,A>>>0<B>>>0)an(o);else{T=n[o>>2]|0,L=(n[o+8>>2]|0)-T|0,M=L>>2,rje(d,L>>3>>>0<A>>>1>>>0?M>>>0<B>>>0?B:M:A,(n[m>>2]|0)-T>>3,o+8|0),B=d+8|0,pZ(n[B>>2]|0,n[l>>2]|0,n[u>>2]|0),n[B>>2]=(n[B>>2]|0)+8,nje(o,d),ije(d),I=k;return}}function tje(o){return o=o|0,536870911}function rje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0;n[o+12>>2]=0,n[o+16>>2]=A;do if(l)if(l>>>0>536870911)Nt();else{d=Kt(l<<3)|0;break}else d=0;while(!1);n[o>>2]=d,A=d+(u<<3)|0,n[o+8>>2]=A,n[o+4>>2]=A,n[o+12>>2]=d+(l<<3)}function nje(o,l){o=o|0,l=l|0;var u=0,A=0,d=0,m=0,B=0;A=n[o>>2]|0,B=o+4|0,m=l+4|0,d=(n[B>>2]|0)-A|0,u=(n[m>>2]|0)+(0-(d>>3)<<3)|0,n[m>>2]=u,(d|0)>0?(Qr(u|0,A|0,d|0)|0,A=m,u=n[m>>2]|0):A=m,m=n[o>>2]|0,n[o>>2]=u,n[A>>2]=m,m=l+8|0,d=n[B>>2]|0,n[B>>2]=n[m>>2],n[m>>2]=d,m=o+8|0,B=l+12|0,o=n[m>>2]|0,n[m>>2]=n[B>>2],n[B>>2]=o,n[l>>2]=n[A>>2]}function ije(o){o=o|0;var l=0,u=0,A=0;l=n[o+4>>2]|0,u=o+8|0,A=n[u>>2]|0,(A|0)!=(l|0)&&(n[u>>2]=A+(~((A+-8-l|0)>>>3)<<3)),o=n[o>>2]|0,o|0&&It(o)}function hZ(o){o=o|0,aje(o)}function sje(o){o=o|0,oje(o+24|0)}function oje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function aje(o){o=o|0;var l=0;l=tn()|0,rn(o,1,12,l,lje()|0,2),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function lje(){return 1896}function cje(o,l,u){o=o|0,l=l|0,u=u|0,fje(n[(uje(o)|0)>>2]|0,l,u)}function uje(o){return o=o|0,(n[(iU()|0)+24>>2]|0)+(o<<3)|0}function fje(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;A=I,I=I+16|0,m=A+4|0,d=A,Aje(m,l),l=pje(m,l)|0,Mh(d,u),u=Uh(d,u)|0,sp[o&31](l,u),_h(d),I=A}function Aje(o,l){o=o|0,l=l|0}function pje(o,l){return o=o|0,l=l|0,hje(l)|0}function hje(o){return o=o|0,o|0}function gje(){var o=0;return s[8080]|0||(gZ(11040),gr(70,11040,U|0)|0,o=8080,n[o>>2]=1,n[o+4>>2]=0),_r(11040)|0||gZ(11040),11040}function gZ(o){o=o|0,yje(o),ud(o,71)}function dje(o){o=o|0,mje(o+24|0)}function mje(o){o=o|0;var l=0,u=0,A=0;u=n[o>>2]|0,A=u,u|0&&(o=o+4|0,l=n[o>>2]|0,(l|0)!=(u|0)&&(n[o>>2]=l+(~((l+-8-A|0)>>>3)<<3)),It(u))}function yje(o){o=o|0;var l=0;l=tn()|0,rn(o,5,7,l,wje()|0,0),n[o+24>>2]=0,n[o+28>>2]=0,n[o+32>>2]=0}function Eje(o){o=o|0,Ije(o)}function Ije(o){o=o|0,Cje(o)}function Cje(o){o=o|0,s[o+8>>0]=1}function wje(){return 1936}function Bje(){return vje()|0}function vje(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0;return l=I,I=I+16|0,d=l+4|0,B=l,u=Rl(8)|0,o=u,m=o+4|0,n[m>>2]=Kt(1)|0,A=Kt(8)|0,m=n[m>>2]|0,n[B>>2]=0,n[d>>2]=n[B>>2],Sje(A,m,d),n[u>>2]=A,I=l,o|0}function Sje(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]=l,u=Kt(16)|0,n[u+4>>2]=0,n[u+8>>2]=0,n[u>>2]=1916,n[u+12>>2]=l,n[o+4>>2]=u}function Dje(o){o=o|0,$y(o),It(o)}function bje(o){o=o|0,o=n[o+12>>2]|0,o|0&&It(o)}function Pje(o){o=o|0,It(o)}function xje(){var o=0;return s[8088]|0||(Oje(11076),gr(25,11076,U|0)|0,o=8088,n[o>>2]=1,n[o+4>>2]=0),11076}function kje(o,l){o=o|0,l=l|0,n[o>>2]=Qje()|0,n[o+4>>2]=Tje()|0,n[o+12>>2]=l,n[o+8>>2]=Rje()|0,n[o+32>>2]=10}function Qje(){return 11745}function Tje(){return 1940}function Rje(){return FP()|0}function Fje(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,(Hh(A,896)|0)==512?u|0&&(Nje(u),It(u)):l|0&&It(l)}function Nje(o){o=o|0,o=n[o+4>>2]|0,o|0&&Gh(o)}function Oje(o){o=o|0,Lh(o)}function bu(o,l){o=o|0,l=l|0,n[o>>2]=l}function sU(o){return o=o|0,n[o>>2]|0}function Lje(o){return o=o|0,s[n[o>>2]>>0]|0}function Mje(o,l){o=o|0,l=l|0;var u=0,A=0;u=I,I=I+16|0,A=u,n[A>>2]=n[o>>2],Uje(l,A)|0,I=u}function Uje(o,l){o=o|0,l=l|0;var u=0;return u=_je(n[o>>2]|0,l)|0,l=o+4|0,n[(n[l>>2]|0)+8>>2]=u,n[(n[l>>2]|0)+8>>2]|0}function _je(o,l){o=o|0,l=l|0;var u=0,A=0;return u=I,I=I+16|0,A=u,Fl(A),o=Os(o)|0,l=Hje(o,n[l>>2]|0)|0,Nl(A),I=u,l|0}function Fl(o){o=o|0,n[o>>2]=n[2701],n[o+4>>2]=n[2703]}function Hje(o,l){o=o|0,l=l|0;var u=0;return u=da(jje()|0)|0,dn(0,u|0,o|0,ZM(l)|0)|0}function Nl(o){o=o|0,iZ(n[o>>2]|0,n[o+4>>2]|0)}function jje(){var o=0;return s[8096]|0||(Gje(11120),o=8096,n[o>>2]=1,n[o+4>>2]=0),11120}function Gje(o){o=o|0,Qo(o,qje()|0,1)}function qje(){return 1948}function Wje(){Yje()}function Yje(){var o=0,l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0;if(Le=I,I=I+16|0,L=Le+4|0,q=Le,oa(65536,10804,n[2702]|0,10812),u=UX()|0,l=n[u>>2]|0,o=n[l>>2]|0,o|0)for(A=n[u+8>>2]|0,u=n[u+4>>2]|0;pf(o|0,c[u>>0]|0|0,s[A>>0]|0),l=l+4|0,o=n[l>>2]|0,o;)A=A+1|0,u=u+1|0;if(o=_X()|0,l=n[o>>2]|0,l|0)do NA(l|0,n[o+4>>2]|0),o=o+8|0,l=n[o>>2]|0;while(l|0);NA(Vje()|0,5167),M=Jy()|0,o=n[M>>2]|0;e:do if(o|0){do Jje(n[o+4>>2]|0),o=n[o>>2]|0;while(o|0);if(o=n[M>>2]|0,o|0){T=M;do{for(;d=o,o=n[o>>2]|0,d=n[d+4>>2]|0,!!(Kje(d)|0);)if(n[q>>2]=T,n[L>>2]=n[q>>2],zje(M,L)|0,!o)break e;if(Xje(d),T=n[T>>2]|0,l=dZ(d)|0,m=Oi()|0,B=I,I=I+((1*(l<<2)|0)+15&-16)|0,k=I,I=I+((1*(l<<2)|0)+15&-16)|0,l=n[(ZX(d)|0)>>2]|0,l|0)for(u=B,A=k;n[u>>2]=n[(Ky(n[l+4>>2]|0)|0)>>2],n[A>>2]=n[l+8>>2],l=n[l>>2]|0,l;)u=u+4|0,A=A+4|0;Qe=Ky(d)|0,l=Zje(d)|0,u=dZ(d)|0,A=$je(d)|0,oc(Qe|0,l|0,B|0,k|0,u|0,A|0,YM(d)|0),FA(m|0)}while(o|0)}}while(!1);if(o=n[(VM()|0)>>2]|0,o|0)do Qe=o+4|0,M=JM(Qe)|0,d=k2(M)|0,m=P2(M)|0,B=(x2(M)|0)+1|0,k=UP(M)|0,T=mZ(Qe)|0,M=_r(M)|0,L=OP(Qe)|0,q=oU(Qe)|0,uu(0,d|0,m|0,B|0,k|0,T|0,M|0,L|0,q|0,aU(Qe)|0),o=n[o>>2]|0;while(o|0);o=n[(Jy()|0)>>2]|0;e:do if(o|0){t:for(;;){if(l=n[o+4>>2]|0,l|0&&(ae=n[(Ky(l)|0)>>2]|0,Ye=n[($X(l)|0)>>2]|0,Ye|0)){u=Ye;do{l=u+4|0,A=JM(l)|0;r:do if(A|0)switch(_r(A)|0){case 0:break t;case 4:case 3:case 2:{k=k2(A)|0,T=P2(A)|0,M=(x2(A)|0)+1|0,L=UP(A)|0,q=_r(A)|0,Qe=OP(l)|0,uu(ae|0,k|0,T|0,M|0,L|0,0,q|0,Qe|0,oU(l)|0,aU(l)|0);break r}case 1:{B=k2(A)|0,k=P2(A)|0,T=(x2(A)|0)+1|0,M=UP(A)|0,L=mZ(l)|0,q=_r(A)|0,Qe=OP(l)|0,uu(ae|0,B|0,k|0,T|0,M|0,L|0,q|0,Qe|0,oU(l)|0,aU(l)|0);break r}case 5:{M=k2(A)|0,L=P2(A)|0,q=(x2(A)|0)+1|0,Qe=UP(A)|0,uu(ae|0,M|0,L|0,q|0,Qe|0,e6e(A)|0,_r(A)|0,0,0,0);break r}default:break r}while(!1);u=n[u>>2]|0}while(u|0)}if(o=n[o>>2]|0,!o)break e}Nt()}while(!1);ve(),I=Le}function Vje(){return 11703}function Jje(o){o=o|0,s[o+40>>0]=0}function Kje(o){return o=o|0,(s[o+40>>0]|0)!=0|0}function zje(o,l){return o=o|0,l=l|0,l=t6e(l)|0,o=n[l>>2]|0,n[l>>2]=n[o>>2],It(o),n[l>>2]|0}function Xje(o){o=o|0,s[o+40>>0]=1}function dZ(o){return o=o|0,n[o+20>>2]|0}function Zje(o){return o=o|0,n[o+8>>2]|0}function $je(o){return o=o|0,n[o+32>>2]|0}function UP(o){return o=o|0,n[o+4>>2]|0}function mZ(o){return o=o|0,n[o+4>>2]|0}function oU(o){return o=o|0,n[o+8>>2]|0}function aU(o){return o=o|0,n[o+16>>2]|0}function e6e(o){return o=o|0,n[o+20>>2]|0}function t6e(o){return o=o|0,n[o>>2]|0}function _P(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,We=0,Lt=0;Lt=I,I=I+16|0,ae=Lt;do if(o>>>0<245){if(M=o>>>0<11?16:o+11&-8,o=M>>>3,q=n[2783]|0,u=q>>>o,u&3|0)return l=(u&1^1)+o|0,o=11172+(l<<1<<2)|0,u=o+8|0,A=n[u>>2]|0,d=A+8|0,m=n[d>>2]|0,(o|0)==(m|0)?n[2783]=q&~(1<<l):(n[m+12>>2]=o,n[u>>2]=m),We=l<<3,n[A+4>>2]=We|3,We=A+We+4|0,n[We>>2]=n[We>>2]|1,We=d,I=Lt,We|0;if(L=n[2785]|0,M>>>0>L>>>0){if(u|0)return l=2<<o,l=u<<o&(l|0-l),l=(l&0-l)+-1|0,B=l>>>12&16,l=l>>>B,u=l>>>5&8,l=l>>>u,d=l>>>2&4,l=l>>>d,o=l>>>1&2,l=l>>>o,A=l>>>1&1,A=(u|B|d|o|A)+(l>>>A)|0,l=11172+(A<<1<<2)|0,o=l+8|0,d=n[o>>2]|0,B=d+8|0,u=n[B>>2]|0,(l|0)==(u|0)?(o=q&~(1<<A),n[2783]=o):(n[u+12>>2]=l,n[o>>2]=u,o=q),m=(A<<3)-M|0,n[d+4>>2]=M|3,A=d+M|0,n[A+4>>2]=m|1,n[A+m>>2]=m,L|0&&(d=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=d,n[l+12>>2]=d,n[d+8>>2]=l,n[d+12>>2]=u),n[2785]=m,n[2788]=A,We=B,I=Lt,We|0;if(k=n[2784]|0,k){if(u=(k&0-k)+-1|0,B=u>>>12&16,u=u>>>B,m=u>>>5&8,u=u>>>m,T=u>>>2&4,u=u>>>T,A=u>>>1&2,u=u>>>A,o=u>>>1&1,o=n[11436+((m|B|T|A|o)+(u>>>o)<<2)>>2]|0,u=(n[o+4>>2]&-8)-M|0,A=n[o+16+(((n[o+16>>2]|0)==0&1)<<2)>>2]|0,!A)T=o,m=u;else{do B=(n[A+4>>2]&-8)-M|0,T=B>>>0<u>>>0,u=T?B:u,o=T?A:o,A=n[A+16+(((n[A+16>>2]|0)==0&1)<<2)>>2]|0;while(A|0);T=o,m=u}if(B=T+M|0,T>>>0<B>>>0){d=n[T+24>>2]|0,l=n[T+12>>2]|0;do if((l|0)==(T|0)){if(o=T+20|0,l=n[o>>2]|0,!l&&(o=T+16|0,l=n[o>>2]|0,!l)){u=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0,u=l}else u=n[T+8>>2]|0,n[u+12>>2]=l,n[l+8>>2]=u,u=l;while(!1);do if(d|0){if(l=n[T+28>>2]|0,o=11436+(l<<2)|0,(T|0)==(n[o>>2]|0)){if(n[o>>2]=u,!u){n[2784]=k&~(1<<l);break}}else if(n[d+16+(((n[d+16>>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=d,l=n[T+16>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),l=n[T+20>>2]|0,l|0&&(n[u+20>>2]=l,n[l+24>>2]=u)}while(!1);return m>>>0<16?(We=m+M|0,n[T+4>>2]=We|3,We=T+We+4|0,n[We>>2]=n[We>>2]|1):(n[T+4>>2]=M|3,n[B+4>>2]=m|1,n[B+m>>2]=m,L|0&&(A=n[2788]|0,l=L>>>3,u=11172+(l<<1<<2)|0,l=1<<l,q&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=q|l,l=u,o=u+8|0),n[o>>2]=A,n[l+12>>2]=A,n[A+8>>2]=l,n[A+12>>2]=u),n[2785]=m,n[2788]=B),We=T+8|0,I=Lt,We|0}else q=M}else q=M}else q=M}else if(o>>>0<=4294967231)if(o=o+11|0,M=o&-8,T=n[2784]|0,T){A=0-M|0,o=o>>>8,o?M>>>0>16777215?k=31:(q=(o+1048320|0)>>>16&8,He=o<<q,L=(He+520192|0)>>>16&4,He=He<<L,k=(He+245760|0)>>>16&2,k=14-(L|q|k)+(He<<k>>>15)|0,k=M>>>(k+7|0)&1|k<<1):k=0,u=n[11436+(k<<2)>>2]|0;e:do if(!u)u=0,o=0,He=57;else for(o=0,B=M<<((k|0)==31?0:25-(k>>>1)|0),m=0;;){if(d=(n[u+4>>2]&-8)-M|0,d>>>0<A>>>0)if(d)o=u,A=d;else{o=u,A=0,d=u,He=61;break e}if(d=n[u+20>>2]|0,u=n[u+16+(B>>>31<<2)>>2]|0,m=(d|0)==0|(d|0)==(u|0)?m:d,d=(u|0)==0,d){u=m,He=57;break}else B=B<<((d^1)&1)}while(!1);if((He|0)==57){if((u|0)==0&(o|0)==0){if(o=2<<k,o=T&(o|0-o),!o){q=M;break}q=(o&0-o)+-1|0,B=q>>>12&16,q=q>>>B,m=q>>>5&8,q=q>>>m,k=q>>>2&4,q=q>>>k,L=q>>>1&2,q=q>>>L,u=q>>>1&1,o=0,u=n[11436+((m|B|k|L|u)+(q>>>u)<<2)>>2]|0}u?(d=u,He=61):(k=o,B=A)}if((He|0)==61)for(;;)if(He=0,u=(n[d+4>>2]&-8)-M|0,q=u>>>0<A>>>0,u=q?u:A,o=q?d:o,d=n[d+16+(((n[d+16>>2]|0)==0&1)<<2)>>2]|0,d)A=u,He=61;else{k=o,B=u;break}if(k|0&&B>>>0<((n[2785]|0)-M|0)>>>0){if(m=k+M|0,k>>>0>=m>>>0)return We=0,I=Lt,We|0;d=n[k+24>>2]|0,l=n[k+12>>2]|0;do if((l|0)==(k|0)){if(o=k+20|0,l=n[o>>2]|0,!l&&(o=k+16|0,l=n[o>>2]|0,!l)){l=0;break}for(;;){if(u=l+20|0,A=n[u>>2]|0,A|0){l=A,o=u;continue}if(u=l+16|0,A=n[u>>2]|0,A)l=A,o=u;else break}n[o>>2]=0}else We=n[k+8>>2]|0,n[We+12>>2]=l,n[l+8>>2]=We;while(!1);do if(d){if(o=n[k+28>>2]|0,u=11436+(o<<2)|0,(k|0)==(n[u>>2]|0)){if(n[u>>2]=l,!l){A=T&~(1<<o),n[2784]=A;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(k|0)&1)<<2)>>2]=l,!l){A=T;break}n[l+24>>2]=d,o=n[k+16>>2]|0,o|0&&(n[l+16>>2]=o,n[o+24>>2]=l),o=n[k+20>>2]|0,o&&(n[l+20>>2]=o,n[o+24>>2]=l),A=T}else A=T;while(!1);do if(B>>>0>=16){if(n[k+4>>2]=M|3,n[m+4>>2]=B|1,n[m+B>>2]=B,l=B>>>3,B>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=m,n[l+12>>2]=m,n[m+8>>2]=l,n[m+12>>2]=u;break}if(l=B>>>8,l?B>>>0>16777215?l=31:(He=(l+1048320|0)>>>16&8,We=l<<He,ct=(We+520192|0)>>>16&4,We=We<<ct,l=(We+245760|0)>>>16&2,l=14-(ct|He|l)+(We<<l>>>15)|0,l=B>>>(l+7|0)&1|l<<1):l=0,u=11436+(l<<2)|0,n[m+28>>2]=l,o=m+16|0,n[o+4>>2]=0,n[o>>2]=0,o=1<<l,!(A&o)){n[2784]=A|o,n[u>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}for(o=B<<((l|0)==31?0:25-(l>>>1)|0),u=n[u>>2]|0;;){if((n[u+4>>2]&-8|0)==(B|0)){He=97;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=96;break}}if((He|0)==96){n[A>>2]=m,n[m+24>>2]=u,n[m+12>>2]=m,n[m+8>>2]=m;break}else if((He|0)==97){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=m,n[He>>2]=m,n[m+8>>2]=We,n[m+12>>2]=u,n[m+24>>2]=0;break}}else We=B+M|0,n[k+4>>2]=We|3,We=k+We+4|0,n[We>>2]=n[We>>2]|1;while(!1);return We=k+8|0,I=Lt,We|0}else q=M}else q=M;else q=-1;while(!1);if(u=n[2785]|0,u>>>0>=q>>>0)return l=u-q|0,o=n[2788]|0,l>>>0>15?(We=o+q|0,n[2788]=We,n[2785]=l,n[We+4>>2]=l|1,n[We+l>>2]=l,n[o+4>>2]=q|3):(n[2785]=0,n[2788]=0,n[o+4>>2]=u|3,We=o+u+4|0,n[We>>2]=n[We>>2]|1),We=o+8|0,I=Lt,We|0;if(B=n[2786]|0,B>>>0>q>>>0)return ct=B-q|0,n[2786]=ct,We=n[2789]|0,He=We+q|0,n[2789]=He,n[He+4>>2]=ct|1,n[We+4>>2]=q|3,We=We+8|0,I=Lt,We|0;if(n[2901]|0?o=n[2903]|0:(n[2903]=4096,n[2902]=4096,n[2904]=-1,n[2905]=-1,n[2906]=0,n[2894]=0,o=ae&-16^1431655768,n[ae>>2]=o,n[2901]=o,o=4096),k=q+48|0,T=q+47|0,m=o+T|0,d=0-o|0,M=m&d,M>>>0<=q>>>0||(o=n[2893]|0,o|0&&(L=n[2891]|0,ae=L+M|0,ae>>>0<=L>>>0|ae>>>0>o>>>0)))return We=0,I=Lt,We|0;e:do if(n[2894]&4)l=0,He=133;else{u=n[2789]|0;t:do if(u){for(A=11580;o=n[A>>2]|0,!(o>>>0<=u>>>0&&(Qe=A+4|0,(o+(n[Qe>>2]|0)|0)>>>0>u>>>0));)if(o=n[A+8>>2]|0,o)A=o;else{He=118;break t}if(l=m-B&d,l>>>0<2147483647)if(o=qh(l|0)|0,(o|0)==((n[A>>2]|0)+(n[Qe>>2]|0)|0)){if((o|0)!=-1){B=l,m=o,He=135;break e}}else A=o,He=126;else l=0}else He=118;while(!1);do if((He|0)==118)if(u=qh(0)|0,(u|0)!=-1&&(l=u,Ye=n[2902]|0,Le=Ye+-1|0,l=(Le&l|0?(Le+l&0-Ye)-l|0:0)+M|0,Ye=n[2891]|0,Le=l+Ye|0,l>>>0>q>>>0&l>>>0<2147483647)){if(Qe=n[2893]|0,Qe|0&&Le>>>0<=Ye>>>0|Le>>>0>Qe>>>0){l=0;break}if(o=qh(l|0)|0,(o|0)==(u|0)){B=l,m=u,He=135;break e}else A=o,He=126}else l=0;while(!1);do if((He|0)==126){if(u=0-l|0,!(k>>>0>l>>>0&(l>>>0<2147483647&(A|0)!=-1)))if((A|0)==-1){l=0;break}else{B=l,m=A,He=135;break e}if(o=n[2903]|0,o=T-l+o&0-o,o>>>0>=2147483647){B=l,m=A,He=135;break e}if((qh(o|0)|0)==-1){qh(u|0)|0,l=0;break}else{B=o+l|0,m=A,He=135;break e}}while(!1);n[2894]=n[2894]|4,He=133}while(!1);if((He|0)==133&&M>>>0<2147483647&&(ct=qh(M|0)|0,Qe=qh(0)|0,tt=Qe-ct|0,Ze=tt>>>0>(q+40|0)>>>0,!((ct|0)==-1|Ze^1|ct>>>0<Qe>>>0&((ct|0)!=-1&(Qe|0)!=-1)^1))&&(B=Ze?tt:l,m=ct,He=135),(He|0)==135){l=(n[2891]|0)+B|0,n[2891]=l,l>>>0>(n[2892]|0)>>>0&&(n[2892]=l),T=n[2789]|0;do if(T){for(l=11580;;){if(o=n[l>>2]|0,u=l+4|0,A=n[u>>2]|0,(m|0)==(o+A|0)){He=145;break}if(d=n[l+8>>2]|0,d)l=d;else break}if((He|0)==145&&!(n[l+12>>2]&8|0)&&T>>>0<m>>>0&T>>>0>=o>>>0){n[u>>2]=A+B,We=T+8|0,We=We&7|0?0-We&7:0,He=T+We|0,We=(n[2786]|0)+(B-We)|0,n[2789]=He,n[2786]=We,n[He+4>>2]=We|1,n[He+We+4>>2]=40,n[2790]=n[2905];break}for(m>>>0<(n[2787]|0)>>>0&&(n[2787]=m),u=m+B|0,l=11580;;){if((n[l>>2]|0)==(u|0)){He=153;break}if(o=n[l+8>>2]|0,o)l=o;else break}if((He|0)==153&&!(n[l+12>>2]&8|0)){n[l>>2]=m,L=l+4|0,n[L>>2]=(n[L>>2]|0)+B,L=m+8|0,L=m+(L&7|0?0-L&7:0)|0,l=u+8|0,l=u+(l&7|0?0-l&7:0)|0,M=L+q|0,k=l-L-q|0,n[L+4>>2]=q|3;do if((l|0)!=(T|0)){if((l|0)==(n[2788]|0)){We=(n[2785]|0)+k|0,n[2785]=We,n[2788]=M,n[M+4>>2]=We|1,n[M+We>>2]=We;break}if(o=n[l+4>>2]|0,(o&3|0)==1){B=o&-8,A=o>>>3;e:do if(o>>>0<256)if(o=n[l+8>>2]|0,u=n[l+12>>2]|0,(u|0)==(o|0)){n[2783]=n[2783]&~(1<<A);break}else{n[o+12>>2]=u,n[u+8>>2]=o;break}else{m=n[l+24>>2]|0,o=n[l+12>>2]|0;do if((o|0)==(l|0)){if(A=l+16|0,u=A+4|0,o=n[u>>2]|0,!o)if(o=n[A>>2]|0,o)u=A;else{o=0;break}for(;;){if(A=o+20|0,d=n[A>>2]|0,d|0){o=d,u=A;continue}if(A=o+16|0,d=n[A>>2]|0,d)o=d,u=A;else break}n[u>>2]=0}else We=n[l+8>>2]|0,n[We+12>>2]=o,n[o+8>>2]=We;while(!1);if(!m)break;u=n[l+28>>2]|0,A=11436+(u<<2)|0;do if((l|0)!=(n[A>>2]|0)){if(n[m+16+(((n[m+16>>2]|0)!=(l|0)&1)<<2)>>2]=o,!o)break e}else{if(n[A>>2]=o,o|0)break;n[2784]=n[2784]&~(1<<u);break e}while(!1);if(n[o+24>>2]=m,u=l+16|0,A=n[u>>2]|0,A|0&&(n[o+16>>2]=A,n[A+24>>2]=o),u=n[u+4>>2]|0,!u)break;n[o+20>>2]=u,n[u+24>>2]=o}while(!1);l=l+B|0,d=B+k|0}else d=k;if(l=l+4|0,n[l>>2]=n[l>>2]&-2,n[M+4>>2]=d|1,n[M+d>>2]=d,l=d>>>3,d>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=M,n[l+12>>2]=M,n[M+8>>2]=l,n[M+12>>2]=u;break}l=d>>>8;do if(!l)l=0;else{if(d>>>0>16777215){l=31;break}He=(l+1048320|0)>>>16&8,We=l<<He,ct=(We+520192|0)>>>16&4,We=We<<ct,l=(We+245760|0)>>>16&2,l=14-(ct|He|l)+(We<<l>>>15)|0,l=d>>>(l+7|0)&1|l<<1}while(!1);if(A=11436+(l<<2)|0,n[M+28>>2]=l,o=M+16|0,n[o+4>>2]=0,n[o>>2]=0,o=n[2784]|0,u=1<<l,!(o&u)){n[2784]=o|u,n[A>>2]=M,n[M+24>>2]=A,n[M+12>>2]=M,n[M+8>>2]=M;break}for(o=d<<((l|0)==31?0:25-(l>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){He=194;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=193;break}}if((He|0)==193){n[A>>2]=M,n[M+24>>2]=u,n[M+12>>2]=M,n[M+8>>2]=M;break}else if((He|0)==194){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=M,n[He>>2]=M,n[M+8>>2]=We,n[M+12>>2]=u,n[M+24>>2]=0;break}}else We=(n[2786]|0)+k|0,n[2786]=We,n[2789]=M,n[M+4>>2]=We|1;while(!1);return We=L+8|0,I=Lt,We|0}for(l=11580;o=n[l>>2]|0,!(o>>>0<=T>>>0&&(We=o+(n[l+4>>2]|0)|0,We>>>0>T>>>0));)l=n[l+8>>2]|0;d=We+-47|0,o=d+8|0,o=d+(o&7|0?0-o&7:0)|0,d=T+16|0,o=o>>>0<d>>>0?T:o,l=o+8|0,u=m+8|0,u=u&7|0?0-u&7:0,He=m+u|0,u=B+-40-u|0,n[2789]=He,n[2786]=u,n[He+4>>2]=u|1,n[He+u+4>>2]=40,n[2790]=n[2905],u=o+4|0,n[u>>2]=27,n[l>>2]=n[2895],n[l+4>>2]=n[2896],n[l+8>>2]=n[2897],n[l+12>>2]=n[2898],n[2895]=m,n[2896]=B,n[2898]=0,n[2897]=l,l=o+24|0;do He=l,l=l+4|0,n[l>>2]=7;while((He+8|0)>>>0<We>>>0);if((o|0)!=(T|0)){if(m=o-T|0,n[u>>2]=n[u>>2]&-2,n[T+4>>2]=m|1,n[o>>2]=m,l=m>>>3,m>>>0<256){u=11172+(l<<1<<2)|0,o=n[2783]|0,l=1<<l,o&l?(o=u+8|0,l=n[o>>2]|0):(n[2783]=o|l,l=u,o=u+8|0),n[o>>2]=T,n[l+12>>2]=T,n[T+8>>2]=l,n[T+12>>2]=u;break}if(l=m>>>8,l?m>>>0>16777215?u=31:(He=(l+1048320|0)>>>16&8,We=l<<He,ct=(We+520192|0)>>>16&4,We=We<<ct,u=(We+245760|0)>>>16&2,u=14-(ct|He|u)+(We<<u>>>15)|0,u=m>>>(u+7|0)&1|u<<1):u=0,A=11436+(u<<2)|0,n[T+28>>2]=u,n[T+20>>2]=0,n[d>>2]=0,l=n[2784]|0,o=1<<u,!(l&o)){n[2784]=l|o,n[A>>2]=T,n[T+24>>2]=A,n[T+12>>2]=T,n[T+8>>2]=T;break}for(o=m<<((u|0)==31?0:25-(u>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(m|0)){He=216;break}if(A=u+16+(o>>>31<<2)|0,l=n[A>>2]|0,l)o=o<<1,u=l;else{He=215;break}}if((He|0)==215){n[A>>2]=T,n[T+24>>2]=u,n[T+12>>2]=T,n[T+8>>2]=T;break}else if((He|0)==216){He=u+8|0,We=n[He>>2]|0,n[We+12>>2]=T,n[He>>2]=T,n[T+8>>2]=We,n[T+12>>2]=u,n[T+24>>2]=0;break}}}else{We=n[2787]|0,(We|0)==0|m>>>0<We>>>0&&(n[2787]=m),n[2895]=m,n[2896]=B,n[2898]=0,n[2792]=n[2901],n[2791]=-1,l=0;do We=11172+(l<<1<<2)|0,n[We+12>>2]=We,n[We+8>>2]=We,l=l+1|0;while((l|0)!=32);We=m+8|0,We=We&7|0?0-We&7:0,He=m+We|0,We=B+-40-We|0,n[2789]=He,n[2786]=We,n[He+4>>2]=We|1,n[He+We+4>>2]=40,n[2790]=n[2905]}while(!1);if(l=n[2786]|0,l>>>0>q>>>0)return ct=l-q|0,n[2786]=ct,We=n[2789]|0,He=We+q|0,n[2789]=He,n[He+4>>2]=ct|1,n[We+4>>2]=q|3,We=We+8|0,I=Lt,We|0}return n[(Xy()|0)>>2]=12,We=0,I=Lt,We|0}function HP(o){o=o|0;var l=0,u=0,A=0,d=0,m=0,B=0,k=0,T=0;if(o){u=o+-8|0,d=n[2787]|0,o=n[o+-4>>2]|0,l=o&-8,T=u+l|0;do if(o&1)k=u,B=u;else{if(A=n[u>>2]|0,!(o&3)||(B=u+(0-A)|0,m=A+l|0,B>>>0<d>>>0))return;if((B|0)==(n[2788]|0)){if(o=T+4|0,l=n[o>>2]|0,(l&3|0)!=3){k=B,l=m;break}n[2785]=m,n[o>>2]=l&-2,n[B+4>>2]=m|1,n[B+m>>2]=m;return}if(u=A>>>3,A>>>0<256)if(o=n[B+8>>2]|0,l=n[B+12>>2]|0,(l|0)==(o|0)){n[2783]=n[2783]&~(1<<u),k=B,l=m;break}else{n[o+12>>2]=l,n[l+8>>2]=o,k=B,l=m;break}d=n[B+24>>2]|0,o=n[B+12>>2]|0;do if((o|0)==(B|0)){if(u=B+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{o=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0}else k=n[B+8>>2]|0,n[k+12>>2]=o,n[o+8>>2]=k;while(!1);if(d){if(l=n[B+28>>2]|0,u=11436+(l<<2)|0,(B|0)==(n[u>>2]|0)){if(n[u>>2]=o,!o){n[2784]=n[2784]&~(1<<l),k=B,l=m;break}}else if(n[d+16+(((n[d+16>>2]|0)!=(B|0)&1)<<2)>>2]=o,!o){k=B,l=m;break}n[o+24>>2]=d,l=B+16|0,u=n[l>>2]|0,u|0&&(n[o+16>>2]=u,n[u+24>>2]=o),l=n[l+4>>2]|0,l?(n[o+20>>2]=l,n[l+24>>2]=o,k=B,l=m):(k=B,l=m)}else k=B,l=m}while(!1);if(!(B>>>0>=T>>>0)&&(o=T+4|0,A=n[o>>2]|0,!!(A&1))){if(A&2)n[o>>2]=A&-2,n[k+4>>2]=l|1,n[B+l>>2]=l,d=l;else{if(o=n[2788]|0,(T|0)==(n[2789]|0)){if(T=(n[2786]|0)+l|0,n[2786]=T,n[2789]=k,n[k+4>>2]=T|1,(k|0)!=(o|0))return;n[2788]=0,n[2785]=0;return}if((T|0)==(o|0)){T=(n[2785]|0)+l|0,n[2785]=T,n[2788]=B,n[k+4>>2]=T|1,n[B+T>>2]=T;return}d=(A&-8)+l|0,u=A>>>3;do if(A>>>0<256)if(l=n[T+8>>2]|0,o=n[T+12>>2]|0,(o|0)==(l|0)){n[2783]=n[2783]&~(1<<u);break}else{n[l+12>>2]=o,n[o+8>>2]=l;break}else{m=n[T+24>>2]|0,o=n[T+12>>2]|0;do if((o|0)==(T|0)){if(u=T+16|0,l=u+4|0,o=n[l>>2]|0,!o)if(o=n[u>>2]|0,o)l=u;else{u=0;break}for(;;){if(u=o+20|0,A=n[u>>2]|0,A|0){o=A,l=u;continue}if(u=o+16|0,A=n[u>>2]|0,A)o=A,l=u;else break}n[l>>2]=0,u=o}else u=n[T+8>>2]|0,n[u+12>>2]=o,n[o+8>>2]=u,u=o;while(!1);if(m|0){if(o=n[T+28>>2]|0,l=11436+(o<<2)|0,(T|0)==(n[l>>2]|0)){if(n[l>>2]=u,!u){n[2784]=n[2784]&~(1<<o);break}}else if(n[m+16+(((n[m+16>>2]|0)!=(T|0)&1)<<2)>>2]=u,!u)break;n[u+24>>2]=m,o=T+16|0,l=n[o>>2]|0,l|0&&(n[u+16>>2]=l,n[l+24>>2]=u),o=n[o+4>>2]|0,o|0&&(n[u+20>>2]=o,n[o+24>>2]=u)}}while(!1);if(n[k+4>>2]=d|1,n[B+d>>2]=d,(k|0)==(n[2788]|0)){n[2785]=d;return}}if(o=d>>>3,d>>>0<256){u=11172+(o<<1<<2)|0,l=n[2783]|0,o=1<<o,l&o?(l=u+8|0,o=n[l>>2]|0):(n[2783]=l|o,o=u,l=u+8|0),n[l>>2]=k,n[o+12>>2]=k,n[k+8>>2]=o,n[k+12>>2]=u;return}o=d>>>8,o?d>>>0>16777215?o=31:(B=(o+1048320|0)>>>16&8,T=o<<B,m=(T+520192|0)>>>16&4,T=T<<m,o=(T+245760|0)>>>16&2,o=14-(m|B|o)+(T<<o>>>15)|0,o=d>>>(o+7|0)&1|o<<1):o=0,A=11436+(o<<2)|0,n[k+28>>2]=o,n[k+20>>2]=0,n[k+16>>2]=0,l=n[2784]|0,u=1<<o;do if(l&u){for(l=d<<((o|0)==31?0:25-(o>>>1)|0),u=n[A>>2]|0;;){if((n[u+4>>2]&-8|0)==(d|0)){o=73;break}if(A=u+16+(l>>>31<<2)|0,o=n[A>>2]|0,o)l=l<<1,u=o;else{o=72;break}}if((o|0)==72){n[A>>2]=k,n[k+24>>2]=u,n[k+12>>2]=k,n[k+8>>2]=k;break}else if((o|0)==73){B=u+8|0,T=n[B>>2]|0,n[T+12>>2]=k,n[B>>2]=k,n[k+8>>2]=T,n[k+12>>2]=u,n[k+24>>2]=0;break}}else n[2784]=l|u,n[A>>2]=k,n[k+24>>2]=A,n[k+12>>2]=k,n[k+8>>2]=k;while(!1);if(T=(n[2791]|0)+-1|0,n[2791]=T,!T)o=11588;else return;for(;o=n[o>>2]|0,o;)o=o+8|0;n[2791]=-1}}}function r6e(){return 11628}function n6e(o){o=o|0;var l=0,u=0;return l=I,I=I+16|0,u=l,n[u>>2]=o6e(n[o+60>>2]|0)|0,o=jP(Au(6,u|0)|0)|0,I=l,o|0}function yZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0;q=I,I=I+48|0,M=q+16|0,m=q,d=q+32|0,k=o+28|0,A=n[k>>2]|0,n[d>>2]=A,T=o+20|0,A=(n[T>>2]|0)-A|0,n[d+4>>2]=A,n[d+8>>2]=l,n[d+12>>2]=u,A=A+u|0,B=o+60|0,n[m>>2]=n[B>>2],n[m+4>>2]=d,n[m+8>>2]=2,m=jP(La(146,m|0)|0)|0;e:do if((A|0)!=(m|0)){for(l=2;!((m|0)<0);)if(A=A-m|0,Ye=n[d+4>>2]|0,ae=m>>>0>Ye>>>0,d=ae?d+8|0:d,l=(ae<<31>>31)+l|0,Ye=m-(ae?Ye:0)|0,n[d>>2]=(n[d>>2]|0)+Ye,ae=d+4|0,n[ae>>2]=(n[ae>>2]|0)-Ye,n[M>>2]=n[B>>2],n[M+4>>2]=d,n[M+8>>2]=l,m=jP(La(146,M|0)|0)|0,(A|0)==(m|0)){L=3;break e}n[o+16>>2]=0,n[k>>2]=0,n[T>>2]=0,n[o>>2]=n[o>>2]|32,(l|0)==2?u=0:u=u-(n[d+4>>2]|0)|0}else L=3;while(!1);return(L|0)==3&&(Ye=n[o+44>>2]|0,n[o+16>>2]=Ye+(n[o+48>>2]|0),n[k>>2]=Ye,n[T>>2]=Ye),I=q,u|0}function i6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;return d=I,I=I+32|0,m=d,A=d+20|0,n[m>>2]=n[o+60>>2],n[m+4>>2]=0,n[m+8>>2]=l,n[m+12>>2]=A,n[m+16>>2]=u,(jP(Oa(140,m|0)|0)|0)<0?(n[A>>2]=-1,o=-1):o=n[A>>2]|0,I=d,o|0}function jP(o){return o=o|0,o>>>0>4294963200&&(n[(Xy()|0)>>2]=0-o,o=-1),o|0}function Xy(){return(s6e()|0)+64|0}function s6e(){return lU()|0}function lU(){return 2084}function o6e(o){return o=o|0,o|0}function a6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;return d=I,I=I+32|0,A=d,n[o+36>>2]=1,!(n[o>>2]&64|0)&&(n[A>>2]=n[o+60>>2],n[A+4>>2]=21523,n[A+8>>2]=d+16,no(54,A|0)|0)&&(s[o+75>>0]=-1),A=yZ(o,l,u)|0,I=d,A|0}function EZ(o,l){o=o|0,l=l|0;var u=0,A=0;if(u=s[o>>0]|0,A=s[l>>0]|0,!(u<<24>>24)||u<<24>>24!=A<<24>>24)o=A;else{do o=o+1|0,l=l+1|0,u=s[o>>0]|0,A=s[l>>0]|0;while(!(!(u<<24>>24)||u<<24>>24!=A<<24>>24));o=A}return(u&255)-(o&255)|0}function l6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0;e:do if(!u)o=0;else{for(;A=s[o>>0]|0,d=s[l>>0]|0,A<<24>>24==d<<24>>24;)if(u=u+-1|0,u)o=o+1|0,l=l+1|0;else{o=0;break e}o=(A&255)-(d&255)|0}while(!1);return o|0}function IZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0;Qe=I,I=I+224|0,L=Qe+120|0,q=Qe+80|0,Ye=Qe,Le=Qe+136|0,A=q,d=A+40|0;do n[A>>2]=0,A=A+4|0;while((A|0)<(d|0));return n[L>>2]=n[u>>2],(cU(0,l,L,Ye,q)|0)<0?u=-1:((n[o+76>>2]|0)>-1?ae=c6e(o)|0:ae=0,u=n[o>>2]|0,M=u&32,(s[o+74>>0]|0)<1&&(n[o>>2]=u&-33),A=o+48|0,n[A>>2]|0?u=cU(o,l,L,Ye,q)|0:(d=o+44|0,m=n[d>>2]|0,n[d>>2]=Le,B=o+28|0,n[B>>2]=Le,k=o+20|0,n[k>>2]=Le,n[A>>2]=80,T=o+16|0,n[T>>2]=Le+80,u=cU(o,l,L,Ye,q)|0,m&&(YP[n[o+36>>2]&7](o,0,0)|0,u=n[k>>2]|0?u:-1,n[d>>2]=m,n[A>>2]=0,n[T>>2]=0,n[B>>2]=0,n[k>>2]=0)),A=n[o>>2]|0,n[o>>2]=A|M,ae|0&&u6e(o),u=A&32|0?-1:u),I=Qe,u|0}function cU(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0;cr=I,I=I+64|0,fr=cr+16|0,$t=cr,Lt=cr+24|0,Tr=cr+8|0,Hr=cr+20|0,n[fr>>2]=l,ct=(o|0)!=0,He=Lt+40|0,We=He,Lt=Lt+39|0,Gr=Tr+4|0,B=0,m=0,L=0;e:for(;;){do if((m|0)>-1)if((B|0)>(2147483647-m|0)){n[(Xy()|0)>>2]=75,m=-1;break}else{m=B+m|0;break}while(!1);if(B=s[l>>0]|0,B<<24>>24)k=l;else{Ze=87;break}t:for(;;){switch(B<<24>>24){case 37:{B=k,Ze=9;break t}case 0:{B=k;break t}default:}tt=k+1|0,n[fr>>2]=tt,B=s[tt>>0]|0,k=tt}t:do if((Ze|0)==9)for(;;){if(Ze=0,(s[k+1>>0]|0)!=37)break t;if(B=B+1|0,k=k+2|0,n[fr>>2]=k,(s[k>>0]|0)==37)Ze=9;else break}while(!1);if(B=B-l|0,ct&&vs(o,l,B),B|0){l=k;continue}T=k+1|0,B=(s[T>>0]|0)+-48|0,B>>>0<10?(tt=(s[k+2>>0]|0)==36,Qe=tt?B:-1,L=tt?1:L,T=tt?k+3|0:T):Qe=-1,n[fr>>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0;t:do if(k>>>0<32)for(M=0,q=B;;){if(B=1<<k,!(B&75913)){B=q;break t}if(M=B|M,T=T+1|0,n[fr>>2]=T,B=s[T>>0]|0,k=(B<<24>>24)+-32|0,k>>>0>=32)break;q=B}else M=0;while(!1);if(B<<24>>24==42){if(k=T+1|0,B=(s[k>>0]|0)+-48|0,B>>>0<10&&(s[T+2>>0]|0)==36)n[d+(B<<2)>>2]=10,B=n[A+((s[k>>0]|0)+-48<<3)>>2]|0,L=1,T=T+3|0;else{if(L|0){m=-1;break}ct?(L=(n[u>>2]|0)+3&-4,B=n[L>>2]|0,n[u>>2]=L+4,L=0,T=k):(B=0,L=0,T=k)}n[fr>>2]=T,tt=(B|0)<0,B=tt?0-B|0:B,M=tt?M|8192:M}else{if(B=CZ(fr)|0,(B|0)<0){m=-1;break}T=n[fr>>2]|0}do if((s[T>>0]|0)==46){if((s[T+1>>0]|0)!=42){n[fr>>2]=T+1,k=CZ(fr)|0,T=n[fr>>2]|0;break}if(q=T+2|0,k=(s[q>>0]|0)+-48|0,k>>>0<10&&(s[T+3>>0]|0)==36){n[d+(k<<2)>>2]=10,k=n[A+((s[q>>0]|0)+-48<<3)>>2]|0,T=T+4|0,n[fr>>2]=T;break}if(L|0){m=-1;break e}ct?(tt=(n[u>>2]|0)+3&-4,k=n[tt>>2]|0,n[u>>2]=tt+4):k=0,n[fr>>2]=q,T=q}else k=-1;while(!1);for(Le=0;;){if(((s[T>>0]|0)+-65|0)>>>0>57){m=-1;break e}if(tt=T+1|0,n[fr>>2]=tt,q=s[(s[T>>0]|0)+-65+(5178+(Le*58|0))>>0]|0,ae=q&255,(ae+-1|0)>>>0<8)Le=ae,T=tt;else break}if(!(q<<24>>24)){m=-1;break}Ye=(Qe|0)>-1;do if(q<<24>>24==19)if(Ye){m=-1;break e}else Ze=49;else{if(Ye){n[d+(Qe<<2)>>2]=ae,Ye=A+(Qe<<3)|0,Qe=n[Ye+4>>2]|0,Ze=$t,n[Ze>>2]=n[Ye>>2],n[Ze+4>>2]=Qe,Ze=49;break}if(!ct){m=0;break e}wZ($t,ae,u)}while(!1);if((Ze|0)==49&&(Ze=0,!ct)){B=0,l=tt;continue}T=s[T>>0]|0,T=(Le|0)!=0&(T&15|0)==3?T&-33:T,Ye=M&-65537,Qe=M&8192|0?Ye:M;t:do switch(T|0){case 110:switch((Le&255)<<24>>24){case 0:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 1:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 2:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}case 3:{a[n[$t>>2]>>1]=m,B=0,l=tt;continue e}case 4:{s[n[$t>>2]>>0]=m,B=0,l=tt;continue e}case 6:{n[n[$t>>2]>>2]=m,B=0,l=tt;continue e}case 7:{B=n[$t>>2]|0,n[B>>2]=m,n[B+4>>2]=((m|0)<0)<<31>>31,B=0,l=tt;continue e}default:{B=0,l=tt;continue e}}case 112:{T=120,k=k>>>0>8?k:8,l=Qe|8,Ze=61;break}case 88:case 120:{l=Qe,Ze=61;break}case 111:{T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,ae=A6e(l,T,He)|0,Ye=We-ae|0,M=0,q=5642,k=(Qe&8|0)==0|(k|0)>(Ye|0)?k:Ye+1|0,Ye=Qe,Ze=67;break}case 105:case 100:if(T=$t,l=n[T>>2]|0,T=n[T+4>>2]|0,(T|0)<0){l=GP(0,0,l|0,T|0)|0,T=ye,M=$t,n[M>>2]=l,n[M+4>>2]=T,M=1,q=5642,Ze=66;break t}else{M=(Qe&2049|0)!=0&1,q=Qe&2048|0?5643:Qe&1|0?5644:5642,Ze=66;break t}case 117:{T=$t,M=0,q=5642,l=n[T>>2]|0,T=n[T+4>>2]|0,Ze=66;break}case 99:{s[Lt>>0]=n[$t>>2],l=Lt,M=0,q=5642,ae=He,T=1,k=Ye;break}case 109:{T=p6e(n[(Xy()|0)>>2]|0)|0,Ze=71;break}case 115:{T=n[$t>>2]|0,T=T|0?T:5652,Ze=71;break}case 67:{n[Tr>>2]=n[$t>>2],n[Gr>>2]=0,n[$t>>2]=Tr,ae=-1,T=Tr,Ze=75;break}case 83:{l=n[$t>>2]|0,k?(ae=k,T=l,Ze=75):(Ls(o,32,B,0,Qe),l=0,Ze=84);break}case 65:case 71:case 70:case 69:case 97:case 103:case 102:case 101:{B=g6e(o,+E[$t>>3],B,k,Qe,T)|0,l=tt;continue e}default:M=0,q=5642,ae=He,T=k,k=Qe}while(!1);t:do if((Ze|0)==61)Qe=$t,Le=n[Qe>>2]|0,Qe=n[Qe+4>>2]|0,ae=f6e(Le,Qe,He,T&32)|0,q=(l&8|0)==0|(Le|0)==0&(Qe|0)==0,M=q?0:2,q=q?5642:5642+(T>>4)|0,Ye=l,l=Le,T=Qe,Ze=67;else if((Ze|0)==66)ae=Zy(l,T,He)|0,Ye=Qe,Ze=67;else if((Ze|0)==71)Ze=0,Qe=h6e(T,0,k)|0,Le=(Qe|0)==0,l=T,M=0,q=5642,ae=Le?T+k|0:Qe,T=Le?k:Qe-T|0,k=Ye;else if((Ze|0)==75){for(Ze=0,q=T,l=0,k=0;M=n[q>>2]|0,!(!M||(k=BZ(Hr,M)|0,(k|0)<0|k>>>0>(ae-l|0)>>>0));)if(l=k+l|0,ae>>>0>l>>>0)q=q+4|0;else break;if((k|0)<0){m=-1;break e}if(Ls(o,32,B,l,Qe),!l)l=0,Ze=84;else for(M=0;;){if(k=n[T>>2]|0,!k){Ze=84;break t}if(k=BZ(Hr,k)|0,M=k+M|0,(M|0)>(l|0)){Ze=84;break t}if(vs(o,Hr,k),M>>>0>=l>>>0){Ze=84;break}else T=T+4|0}}while(!1);if((Ze|0)==67)Ze=0,T=(l|0)!=0|(T|0)!=0,Qe=(k|0)!=0|T,T=((T^1)&1)+(We-ae)|0,l=Qe?ae:He,ae=He,T=Qe?(k|0)>(T|0)?k:T:k,k=(k|0)>-1?Ye&-65537:Ye;else if((Ze|0)==84){Ze=0,Ls(o,32,B,l,Qe^8192),B=(B|0)>(l|0)?B:l,l=tt;continue}Le=ae-l|0,Ye=(T|0)<(Le|0)?Le:T,Qe=Ye+M|0,B=(B|0)<(Qe|0)?Qe:B,Ls(o,32,B,Qe,k),vs(o,q,M),Ls(o,48,B,Qe,k^65536),Ls(o,48,Ye,Le,0),vs(o,l,Le),Ls(o,32,B,Qe,k^8192),l=tt}e:do if((Ze|0)==87&&!o)if(!L)m=0;else{for(m=1;l=n[d+(m<<2)>>2]|0,!!l;)if(wZ(A+(m<<3)|0,l,u),m=m+1|0,(m|0)>=10){m=1;break e}for(;;){if(n[d+(m<<2)>>2]|0){m=-1;break e}if(m=m+1|0,(m|0)>=10){m=1;break}}}while(!1);return I=cr,m|0}function c6e(o){return o=o|0,0}function u6e(o){o=o|0}function vs(o,l,u){o=o|0,l=l|0,u=u|0,n[o>>2]&32||v6e(l,u,o)|0}function CZ(o){o=o|0;var l=0,u=0,A=0;if(u=n[o>>2]|0,A=(s[u>>0]|0)+-48|0,A>>>0<10){l=0;do l=A+(l*10|0)|0,u=u+1|0,n[o>>2]=u,A=(s[u>>0]|0)+-48|0;while(A>>>0<10)}else l=0;return l|0}function wZ(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;e:do if(l>>>0<=20)do switch(l|0){case 9:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,n[o>>2]=l;break e}case 10:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=((l|0)<0)<<31>>31;break e}case 11:{A=(n[u>>2]|0)+3&-4,l=n[A>>2]|0,n[u>>2]=A+4,A=o,n[A>>2]=l,n[A+4>>2]=0;break e}case 12:{A=(n[u>>2]|0)+7&-8,l=A,d=n[l>>2]|0,l=n[l+4>>2]|0,n[u>>2]=A+8,A=o,n[A>>2]=d,n[A+4>>2]=l;break e}case 13:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&65535)<<16>>16,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 14:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&65535,n[d+4>>2]=0;break e}case 15:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,A=(A&255)<<24>>24,d=o,n[d>>2]=A,n[d+4>>2]=((A|0)<0)<<31>>31;break e}case 16:{d=(n[u>>2]|0)+3&-4,A=n[d>>2]|0,n[u>>2]=d+4,d=o,n[d>>2]=A&255,n[d+4>>2]=0;break e}case 17:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}case 18:{d=(n[u>>2]|0)+7&-8,m=+E[d>>3],n[u>>2]=d+8,E[o>>3]=m;break e}default:break e}while(!1);while(!1)}function f6e(o,l,u,A){if(o=o|0,l=l|0,u=u|0,A=A|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=c[5694+(o&15)>>0]|0|A,o=qP(o|0,l|0,4)|0,l=ye;while(!((o|0)==0&(l|0)==0));return u|0}function A6e(o,l,u){if(o=o|0,l=l|0,u=u|0,!((o|0)==0&(l|0)==0))do u=u+-1|0,s[u>>0]=o&7|48,o=qP(o|0,l|0,3)|0,l=ye;while(!((o|0)==0&(l|0)==0));return u|0}function Zy(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if(l>>>0>0|(l|0)==0&o>>>0>4294967295){for(;A=pU(o|0,l|0,10,0)|0,u=u+-1|0,s[u>>0]=A&255|48,A=o,o=AU(o|0,l|0,10,0)|0,l>>>0>9|(l|0)==9&A>>>0>4294967295;)l=ye;l=o}else l=o;if(l)for(;u=u+-1|0,s[u>>0]=(l>>>0)%10|0|48,!(l>>>0<10);)l=(l>>>0)/10|0;return u|0}function p6e(o){return o=o|0,I6e(o,n[(E6e()|0)+188>>2]|0)|0}function h6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;m=l&255,A=(u|0)!=0;e:do if(A&(o&3|0)!=0)for(d=l&255;;){if((s[o>>0]|0)==d<<24>>24){B=6;break e}if(o=o+1|0,u=u+-1|0,A=(u|0)!=0,!(A&(o&3|0)!=0)){B=5;break}}else B=5;while(!1);(B|0)==5&&(A?B=6:u=0);e:do if((B|0)==6&&(d=l&255,(s[o>>0]|0)!=d<<24>>24)){A=Ue(m,16843009)|0;t:do if(u>>>0>3){for(;m=n[o>>2]^A,!((m&-2139062144^-2139062144)&m+-16843009|0);)if(o=o+4|0,u=u+-4|0,u>>>0<=3){B=11;break t}}else B=11;while(!1);if((B|0)==11&&!u){u=0;break}for(;;){if((s[o>>0]|0)==d<<24>>24)break e;if(o=o+1|0,u=u+-1|0,!u){u=0;break}}}while(!1);return(u|0?o:0)|0}function Ls(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0;if(B=I,I=I+256|0,m=B,(u|0)>(A|0)&(d&73728|0)==0){if(d=u-A|0,eE(m|0,l|0,(d>>>0<256?d:256)|0)|0,d>>>0>255){l=u-A|0;do vs(o,m,256),d=d+-256|0;while(d>>>0>255);d=l&255}vs(o,m,d)}I=B}function BZ(o,l){return o=o|0,l=l|0,o?o=m6e(o,l,0)|0:o=0,o|0}function g6e(o,l,u,A,d,m){o=o|0,l=+l,u=u|0,A=A|0,d=d|0,m=m|0;var B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0,Qe=0,tt=0,Ze=0,ct=0,He=0,We=0,Lt=0,Gr=0,fr=0,$t=0,Tr=0,Hr=0,cr=0,Hn=0;Hn=I,I=I+560|0,T=Hn+8|0,tt=Hn,cr=Hn+524|0,Hr=cr,M=Hn+512|0,n[tt>>2]=0,Tr=M+12|0,vZ(l)|0,(ye|0)<0?(l=-l,fr=1,Gr=5659):(fr=(d&2049|0)!=0&1,Gr=d&2048|0?5662:d&1|0?5665:5660),vZ(l)|0,$t=ye&2146435072;do if($t>>>0<2146435072|($t|0)==2146435072&!1){if(Ye=+d6e(l,tt)*2,B=Ye!=0,B&&(n[tt>>2]=(n[tt>>2]|0)+-1),ct=m|32,(ct|0)==97){Le=m&32,ae=Le|0?Gr+9|0:Gr,q=fr|2,B=12-A|0;do if(A>>>0>11|(B|0)==0)l=Ye;else{l=8;do B=B+-1|0,l=l*16;while(B|0);if((s[ae>>0]|0)==45){l=-(l+(-Ye-l));break}else{l=Ye+l-l;break}}while(!1);k=n[tt>>2]|0,B=(k|0)<0?0-k|0:k,B=Zy(B,((B|0)<0)<<31>>31,Tr)|0,(B|0)==(Tr|0)&&(B=M+11|0,s[B>>0]=48),s[B+-1>>0]=(k>>31&2)+43,L=B+-2|0,s[L>>0]=m+15,M=(A|0)<1,T=(d&8|0)==0,B=cr;do $t=~~l,k=B+1|0,s[B>>0]=c[5694+$t>>0]|Le,l=(l-+($t|0))*16,(k-Hr|0)==1&&!(T&(M&l==0))?(s[k>>0]=46,B=B+2|0):B=k;while(l!=0);$t=B-Hr|0,Hr=Tr-L|0,Tr=(A|0)!=0&($t+-2|0)<(A|0)?A+2|0:$t,B=Hr+q+Tr|0,Ls(o,32,u,B,d),vs(o,ae,q),Ls(o,48,u,B,d^65536),vs(o,cr,$t),Ls(o,48,Tr-$t|0,0,0),vs(o,L,Hr),Ls(o,32,u,B,d^8192);break}k=(A|0)<0?6:A,B?(B=(n[tt>>2]|0)+-28|0,n[tt>>2]=B,l=Ye*268435456):(l=Ye,B=n[tt>>2]|0),$t=(B|0)<0?T:T+288|0,T=$t;do We=~~l>>>0,n[T>>2]=We,T=T+4|0,l=(l-+(We>>>0))*1e9;while(l!=0);if((B|0)>0)for(M=$t,q=T;;){if(L=(B|0)<29?B:29,B=q+-4|0,B>>>0>=M>>>0){T=0;do He=kZ(n[B>>2]|0,0,L|0)|0,He=fU(He|0,ye|0,T|0,0)|0,We=ye,Ze=pU(He|0,We|0,1e9,0)|0,n[B>>2]=Ze,T=AU(He|0,We|0,1e9,0)|0,B=B+-4|0;while(B>>>0>=M>>>0);T&&(M=M+-4|0,n[M>>2]=T)}for(T=q;!(T>>>0<=M>>>0);)if(B=T+-4|0,!(n[B>>2]|0))T=B;else break;if(B=(n[tt>>2]|0)-L|0,n[tt>>2]=B,(B|0)>0)q=T;else break}else M=$t;if((B|0)<0){A=((k+25|0)/9|0)+1|0,Qe=(ct|0)==102;do{if(Le=0-B|0,Le=(Le|0)<9?Le:9,M>>>0<T>>>0){L=(1<<Le)+-1|0,q=1e9>>>Le,ae=0,B=M;do We=n[B>>2]|0,n[B>>2]=(We>>>Le)+ae,ae=Ue(We&L,q)|0,B=B+4|0;while(B>>>0<T>>>0);B=n[M>>2]|0?M:M+4|0,ae?(n[T>>2]=ae,M=B,B=T+4|0):(M=B,B=T)}else M=n[M>>2]|0?M:M+4|0,B=T;T=Qe?$t:M,T=(B-T>>2|0)>(A|0)?T+(A<<2)|0:B,B=(n[tt>>2]|0)+Le|0,n[tt>>2]=B}while((B|0)<0);B=M,A=T}else B=M,A=T;if(We=$t,B>>>0<A>>>0){if(T=(We-B>>2)*9|0,L=n[B>>2]|0,L>>>0>=10){M=10;do M=M*10|0,T=T+1|0;while(L>>>0>=M>>>0)}}else T=0;if(Qe=(ct|0)==103,Ze=(k|0)!=0,M=k-((ct|0)!=102?T:0)+((Ze&Qe)<<31>>31)|0,(M|0)<(((A-We>>2)*9|0)+-9|0)){if(M=M+9216|0,Le=$t+4+(((M|0)/9|0)+-1024<<2)|0,M=((M|0)%9|0)+1|0,(M|0)<9){L=10;do L=L*10|0,M=M+1|0;while((M|0)!=9)}else L=10;if(q=n[Le>>2]|0,ae=(q>>>0)%(L>>>0)|0,M=(Le+4|0)==(A|0),M&(ae|0)==0)M=Le;else if(Ye=((q>>>0)/(L>>>0)|0)&1|0?9007199254740994:9007199254740992,He=(L|0)/2|0,l=ae>>>0<He>>>0?.5:M&(ae|0)==(He|0)?1:1.5,fr&&(He=(s[Gr>>0]|0)==45,l=He?-l:l,Ye=He?-Ye:Ye),M=q-ae|0,n[Le>>2]=M,Ye+l!=Ye){if(He=M+L|0,n[Le>>2]=He,He>>>0>999999999)for(T=Le;M=T+-4|0,n[T>>2]=0,M>>>0<B>>>0&&(B=B+-4|0,n[B>>2]=0),He=(n[M>>2]|0)+1|0,n[M>>2]=He,He>>>0>999999999;)T=M;else M=Le;if(T=(We-B>>2)*9|0,q=n[B>>2]|0,q>>>0>=10){L=10;do L=L*10|0,T=T+1|0;while(q>>>0>=L>>>0)}}else M=Le;M=M+4|0,M=A>>>0>M>>>0?M:A,He=B}else M=A,He=B;for(ct=M;;){if(ct>>>0<=He>>>0){tt=0;break}if(B=ct+-4|0,!(n[B>>2]|0))ct=B;else{tt=1;break}}A=0-T|0;do if(Qe)if(B=((Ze^1)&1)+k|0,(B|0)>(T|0)&(T|0)>-5?(L=m+-1|0,k=B+-1-T|0):(L=m+-2|0,k=B+-1|0),B=d&8,B)Le=B;else{if(tt&&(Lt=n[ct+-4>>2]|0,(Lt|0)!=0))if((Lt>>>0)%10|0)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=((ct-We>>2)*9|0)+-9|0,(L|32|0)==102){Le=B-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}else{Le=B+T-M|0,Le=(Le|0)>0?Le:0,k=(k|0)<(Le|0)?k:Le,Le=0;break}}else L=m,Le=d&8;while(!1);if(Qe=k|Le,q=(Qe|0)!=0&1,ae=(L|32|0)==102,ae)Ze=0,B=(T|0)>0?T:0;else{if(B=(T|0)<0?A:T,B=Zy(B,((B|0)<0)<<31>>31,Tr)|0,M=Tr,(M-B|0)<2)do B=B+-1|0,s[B>>0]=48;while((M-B|0)<2);s[B+-1>>0]=(T>>31&2)+43,B=B+-2|0,s[B>>0]=L,Ze=B,B=M-B|0}if(B=fr+1+k+q+B|0,Ls(o,32,u,B,d),vs(o,Gr,fr),Ls(o,48,u,B,d^65536),ae){L=He>>>0>$t>>>0?$t:He,Le=cr+9|0,q=Le,ae=cr+8|0,M=L;do{if(T=Zy(n[M>>2]|0,0,Le)|0,(M|0)==(L|0))(T|0)==(Le|0)&&(s[ae>>0]=48,T=ae);else if(T>>>0>cr>>>0){eE(cr|0,48,T-Hr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}vs(o,T,q-T|0),M=M+4|0}while(M>>>0<=$t>>>0);if(Qe|0&&vs(o,5710,1),M>>>0<ct>>>0&(k|0)>0)for(;;){if(T=Zy(n[M>>2]|0,0,Le)|0,T>>>0>cr>>>0){eE(cr|0,48,T-Hr|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}if(vs(o,T,(k|0)<9?k:9),M=M+4|0,T=k+-9|0,M>>>0<ct>>>0&(k|0)>9)k=T;else{k=T;break}}Ls(o,48,k+9|0,9,0)}else{if(Qe=tt?ct:He+4|0,(k|0)>-1){tt=cr+9|0,Le=(Le|0)==0,A=tt,q=0-Hr|0,ae=cr+8|0,L=He;do{T=Zy(n[L>>2]|0,0,tt)|0,(T|0)==(tt|0)&&(s[ae>>0]=48,T=ae);do if((L|0)==(He|0)){if(M=T+1|0,vs(o,T,1),Le&(k|0)<1){T=M;break}vs(o,5710,1),T=M}else{if(T>>>0<=cr>>>0)break;eE(cr|0,48,T+q|0)|0;do T=T+-1|0;while(T>>>0>cr>>>0)}while(!1);Hr=A-T|0,vs(o,T,(k|0)>(Hr|0)?Hr:k),k=k-Hr|0,L=L+4|0}while(L>>>0<Qe>>>0&(k|0)>-1)}Ls(o,48,k+18|0,18,0),vs(o,Ze,Tr-Ze|0)}Ls(o,32,u,B,d^8192)}else cr=(m&32|0)!=0,B=fr+3|0,Ls(o,32,u,B,d&-65537),vs(o,Gr,fr),vs(o,l!=l|!1?cr?5686:5690:cr?5678:5682,3),Ls(o,32,u,B,d^8192);while(!1);return I=Hn,((B|0)<(u|0)?u:B)|0}function vZ(o){o=+o;var l=0;return E[S>>3]=o,l=n[S>>2]|0,ye=n[S+4>>2]|0,l|0}function d6e(o,l){return o=+o,l=l|0,+ +SZ(o,l)}function SZ(o,l){o=+o,l=l|0;var u=0,A=0,d=0;switch(E[S>>3]=o,u=n[S>>2]|0,A=n[S+4>>2]|0,d=qP(u|0,A|0,52)|0,d&2047){case 0:{o!=0?(o=+SZ(o*18446744073709552e3,l),u=(n[l>>2]|0)+-64|0):u=0,n[l>>2]=u;break}case 2047:break;default:n[l>>2]=(d&2047)+-1022,n[S>>2]=u,n[S+4>>2]=A&-2146435073|1071644672,o=+E[S>>3]}return+o}function m6e(o,l,u){o=o|0,l=l|0,u=u|0;do if(o){if(l>>>0<128){s[o>>0]=l,o=1;break}if(!(n[n[(y6e()|0)+188>>2]>>2]|0))if((l&-128|0)==57216){s[o>>0]=l,o=1;break}else{n[(Xy()|0)>>2]=84,o=-1;break}if(l>>>0<2048){s[o>>0]=l>>>6|192,s[o+1>>0]=l&63|128,o=2;break}if(l>>>0<55296|(l&-8192|0)==57344){s[o>>0]=l>>>12|224,s[o+1>>0]=l>>>6&63|128,s[o+2>>0]=l&63|128,o=3;break}if((l+-65536|0)>>>0<1048576){s[o>>0]=l>>>18|240,s[o+1>>0]=l>>>12&63|128,s[o+2>>0]=l>>>6&63|128,s[o+3>>0]=l&63|128,o=4;break}else{n[(Xy()|0)>>2]=84,o=-1;break}}else o=1;while(!1);return o|0}function y6e(){return lU()|0}function E6e(){return lU()|0}function I6e(o,l){o=o|0,l=l|0;var u=0,A=0;for(A=0;;){if((c[5712+A>>0]|0)==(o|0)){o=2;break}if(u=A+1|0,(u|0)==87){u=5800,A=87,o=5;break}else A=u}if((o|0)==2&&(A?(u=5800,o=5):u=5800),(o|0)==5)for(;;){do o=u,u=u+1|0;while(s[o>>0]|0);if(A=A+-1|0,A)o=5;else break}return C6e(u,n[l+20>>2]|0)|0}function C6e(o,l){return o=o|0,l=l|0,w6e(o,l)|0}function w6e(o,l){return o=o|0,l=l|0,l?l=B6e(n[l>>2]|0,n[l+4>>2]|0,o)|0:l=0,(l|0?l:o)|0}function B6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0;ae=(n[o>>2]|0)+1794895138|0,m=Ad(n[o+8>>2]|0,ae)|0,A=Ad(n[o+12>>2]|0,ae)|0,d=Ad(n[o+16>>2]|0,ae)|0;e:do if(m>>>0<l>>>2>>>0&&(q=l-(m<<2)|0,A>>>0<q>>>0&d>>>0<q>>>0)&&!((d|A)&3|0)){for(q=A>>>2,L=d>>>2,M=0;;){if(k=m>>>1,T=M+k|0,B=T<<1,d=B+q|0,A=Ad(n[o+(d<<2)>>2]|0,ae)|0,d=Ad(n[o+(d+1<<2)>>2]|0,ae)|0,!(d>>>0<l>>>0&A>>>0<(l-d|0)>>>0)){A=0;break e}if(s[o+(d+A)>>0]|0){A=0;break e}if(A=EZ(u,o+d|0)|0,!A)break;if(A=(A|0)<0,(m|0)==1){A=0;break e}else M=A?M:T,m=A?k:m-k|0}A=B+L|0,d=Ad(n[o+(A<<2)>>2]|0,ae)|0,A=Ad(n[o+(A+1<<2)>>2]|0,ae)|0,A>>>0<l>>>0&d>>>0<(l-A|0)>>>0?A=s[o+(A+d)>>0]|0?0:o+A|0:A=0}else A=0;while(!1);return A|0}function Ad(o,l){o=o|0,l=l|0;var u=0;return u=RZ(o|0)|0,(l|0?u:o)|0}function v6e(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0,k=0;A=u+16|0,d=n[A>>2]|0,d?m=5:S6e(u)|0?A=0:(d=n[A>>2]|0,m=5);e:do if((m|0)==5){if(k=u+20|0,B=n[k>>2]|0,A=B,(d-B|0)>>>0<l>>>0){A=YP[n[u+36>>2]&7](u,o,l)|0;break}t:do if((s[u+75>>0]|0)>-1){for(B=l;;){if(!B){m=0,d=o;break t}if(d=B+-1|0,(s[o+d>>0]|0)==10)break;B=d}if(A=YP[n[u+36>>2]&7](u,o,B)|0,A>>>0<B>>>0)break e;m=B,d=o+B|0,l=l-B|0,A=n[k>>2]|0}else m=0,d=o;while(!1);Qr(A|0,d|0,l|0)|0,n[k>>2]=(n[k>>2]|0)+l,A=m+l|0}while(!1);return A|0}function S6e(o){o=o|0;var l=0,u=0;return l=o+74|0,u=s[l>>0]|0,s[l>>0]=u+255|u,l=n[o>>2]|0,l&8?(n[o>>2]=l|32,o=-1):(n[o+8>>2]=0,n[o+4>>2]=0,u=n[o+44>>2]|0,n[o+28>>2]=u,n[o+20>>2]=u,n[o+16>>2]=u+(n[o+48>>2]|0),o=0),o|0}function $n(o,l){o=y(o),l=y(l);var u=0,A=0;u=DZ(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=DZ(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?l:o;break}else{o=o<l?l:o;break}}else o=l;while(!1);return y(o)}function DZ(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function pd(o,l){o=y(o),l=y(l);var u=0,A=0;u=bZ(o)|0;do if((u&2147483647)>>>0<=2139095040){if(A=bZ(l)|0,(A&2147483647)>>>0<=2139095040)if((A^u|0)<0){o=(u|0)<0?o:l;break}else{o=o<l?o:l;break}}else o=l;while(!1);return y(o)}function bZ(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function uU(o,l){o=y(o),l=y(l);var u=0,A=0,d=0,m=0,B=0,k=0,T=0,M=0;m=(h[S>>2]=o,n[S>>2]|0),k=(h[S>>2]=l,n[S>>2]|0),u=m>>>23&255,B=k>>>23&255,T=m&-2147483648,d=k<<1;e:do if(d|0&&!((u|0)==255|((D6e(l)|0)&2147483647)>>>0>2139095040)){if(A=m<<1,A>>>0<=d>>>0)return l=y(o*y(0)),y((A|0)==(d|0)?l:o);if(u)A=m&8388607|8388608;else{if(u=m<<9,(u|0)>-1){A=u,u=0;do u=u+-1|0,A=A<<1;while((A|0)>-1)}else u=0;A=m<<1-u}if(B)k=k&8388607|8388608;else{if(m=k<<9,(m|0)>-1){d=0;do d=d+-1|0,m=m<<1;while((m|0)>-1)}else d=0;B=d,k=k<<1-d}d=A-k|0,m=(d|0)>-1;t:do if((u|0)>(B|0)){for(;;){if(m)if(d)A=d;else break;if(A=A<<1,u=u+-1|0,d=A-k|0,m=(d|0)>-1,(u|0)<=(B|0))break t}l=y(o*y(0));break e}while(!1);if(m)if(d)A=d;else{l=y(o*y(0));break}if(A>>>0<8388608)do A=A<<1,u=u+-1|0;while(A>>>0<8388608);(u|0)>0?u=A+-8388608|u<<23:u=A>>>(1-u|0),l=(n[S>>2]=u|T,y(h[S>>2]))}else M=3;while(!1);return(M|0)==3&&(l=y(o*l),l=y(l/l)),y(l)}function D6e(o){return o=y(o),h[S>>2]=o,n[S>>2]|0|0}function b6e(o,l){return o=o|0,l=l|0,IZ(n[582]|0,o,l)|0}function an(o){o=o|0,Nt()}function $y(o){o=o|0}function P6e(o,l){return o=o|0,l=l|0,0}function x6e(o){return o=o|0,(PZ(o+4|0)|0)==-1?(ip[n[(n[o>>2]|0)+8>>2]&127](o),o=1):o=0,o|0}function PZ(o){o=o|0;var l=0;return l=n[o>>2]|0,n[o>>2]=l+-1,l+-1|0}function Gh(o){o=o|0,x6e(o)|0&&k6e(o)}function k6e(o){o=o|0;var l=0;l=o+8|0,n[l>>2]|0&&(PZ(l)|0)!=-1||ip[n[(n[o>>2]|0)+16>>2]&127](o)}function Kt(o){o=o|0;var l=0;for(l=o|0?o:1;o=_P(l)|0,!(o|0);){if(o=T6e()|0,!o){o=0;break}GZ[o&0]()}return o|0}function xZ(o){return o=o|0,Kt(o)|0}function It(o){o=o|0,HP(o)}function Q6e(o){o=o|0,(s[o+11>>0]|0)<0&&It(n[o>>2]|0)}function T6e(){var o=0;return o=n[2923]|0,n[2923]=o+0,o|0}function R6e(){}function GP(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,A=l-A-(u>>>0>o>>>0|0)>>>0,ye=A,o-u>>>0|0|0}function fU(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,u=o+u>>>0,ye=l+A+(u>>>0<o>>>0|0)>>>0,u|0|0}function eE(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0,B=0;if(m=o+u|0,l=l&255,(u|0)>=67){for(;o&3;)s[o>>0]=l,o=o+1|0;for(A=m&-4|0,d=A-64|0,B=l|l<<8|l<<16|l<<24;(o|0)<=(d|0);)n[o>>2]=B,n[o+4>>2]=B,n[o+8>>2]=B,n[o+12>>2]=B,n[o+16>>2]=B,n[o+20>>2]=B,n[o+24>>2]=B,n[o+28>>2]=B,n[o+32>>2]=B,n[o+36>>2]=B,n[o+40>>2]=B,n[o+44>>2]=B,n[o+48>>2]=B,n[o+52>>2]=B,n[o+56>>2]=B,n[o+60>>2]=B,o=o+64|0;for(;(o|0)<(A|0);)n[o>>2]=B,o=o+4|0}for(;(o|0)<(m|0);)s[o>>0]=l,o=o+1|0;return m-u|0}function kZ(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(ye=l<<u|(o&(1<<u)-1<<32-u)>>>32-u,o<<u):(ye=o<<u-32,0)}function qP(o,l,u){return o=o|0,l=l|0,u=u|0,(u|0)<32?(ye=l>>>u,o>>>u|(l&(1<<u)-1)<<32-u):(ye=0,l>>>u-32|0)}function Qr(o,l,u){o=o|0,l=l|0,u=u|0;var A=0,d=0,m=0;if((u|0)>=8192)return OA(o|0,l|0,u|0)|0;if(m=o|0,d=o+u|0,(o&3)==(l&3)){for(;o&3;){if(!u)return m|0;s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0,u=u-1|0}for(u=d&-4|0,A=u-64|0;(o|0)<=(A|0);)n[o>>2]=n[l>>2],n[o+4>>2]=n[l+4>>2],n[o+8>>2]=n[l+8>>2],n[o+12>>2]=n[l+12>>2],n[o+16>>2]=n[l+16>>2],n[o+20>>2]=n[l+20>>2],n[o+24>>2]=n[l+24>>2],n[o+28>>2]=n[l+28>>2],n[o+32>>2]=n[l+32>>2],n[o+36>>2]=n[l+36>>2],n[o+40>>2]=n[l+40>>2],n[o+44>>2]=n[l+44>>2],n[o+48>>2]=n[l+48>>2],n[o+52>>2]=n[l+52>>2],n[o+56>>2]=n[l+56>>2],n[o+60>>2]=n[l+60>>2],o=o+64|0,l=l+64|0;for(;(o|0)<(u|0);)n[o>>2]=n[l>>2],o=o+4|0,l=l+4|0}else for(u=d-4|0;(o|0)<(u|0);)s[o>>0]=s[l>>0]|0,s[o+1>>0]=s[l+1>>0]|0,s[o+2>>0]=s[l+2>>0]|0,s[o+3>>0]=s[l+3>>0]|0,o=o+4|0,l=l+4|0;for(;(o|0)<(d|0);)s[o>>0]=s[l>>0]|0,o=o+1|0,l=l+1|0;return m|0}function QZ(o){o=o|0;var l=0;return l=s[N+(o&255)>>0]|0,(l|0)<8?l|0:(l=s[N+(o>>8&255)>>0]|0,(l|0)<8?l+8|0:(l=s[N+(o>>16&255)>>0]|0,(l|0)<8?l+16|0:(s[N+(o>>>24)>>0]|0)+24|0))}function TZ(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0;var m=0,B=0,k=0,T=0,M=0,L=0,q=0,ae=0,Ye=0,Le=0;if(L=o,T=l,M=T,B=u,ae=A,k=ae,!M)return m=(d|0)!=0,k?m?(n[d>>2]=o|0,n[d+4>>2]=l&0,ae=0,d=0,ye=ae,d|0):(ae=0,d=0,ye=ae,d|0):(m&&(n[d>>2]=(L>>>0)%(B>>>0),n[d+4>>2]=0),ae=0,d=(L>>>0)/(B>>>0)>>>0,ye=ae,d|0);m=(k|0)==0;do if(B){if(!m){if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=31){q=m+1|0,k=31-m|0,l=m-31>>31,B=q,o=L>>>(q>>>0)&l|M<<k,l=M>>>(q>>>0)&l,m=0,k=L<<k;break}return d?(n[d>>2]=o|0,n[d+4>>2]=T|l&0,ae=0,d=0,ye=ae,d|0):(ae=0,d=0,ye=ae,d|0)}if(m=B-1|0,m&B|0){k=(b(B|0)|0)+33-(b(M|0)|0)|0,Le=64-k|0,q=32-k|0,T=q>>31,Ye=k-32|0,l=Ye>>31,B=k,o=q-1>>31&M>>>(Ye>>>0)|(M<<q|L>>>(k>>>0))&l,l=l&M>>>(k>>>0),m=L<<Le&T,k=(M<<Le|L>>>(Ye>>>0))&T|L<<q&k-33>>31;break}return d|0&&(n[d>>2]=m&L,n[d+4>>2]=0),(B|0)==1?(Ye=T|l&0,Le=o|0|0,ye=Ye,Le|0):(Le=QZ(B|0)|0,Ye=M>>>(Le>>>0)|0,Le=M<<32-Le|L>>>(Le>>>0)|0,ye=Ye,Le|0)}else{if(m)return d|0&&(n[d>>2]=(M>>>0)%(B>>>0),n[d+4>>2]=0),Ye=0,Le=(M>>>0)/(B>>>0)>>>0,ye=Ye,Le|0;if(!L)return d|0&&(n[d>>2]=0,n[d+4>>2]=(M>>>0)%(k>>>0)),Ye=0,Le=(M>>>0)/(k>>>0)>>>0,ye=Ye,Le|0;if(m=k-1|0,!(m&k))return d|0&&(n[d>>2]=o|0,n[d+4>>2]=m&M|l&0),Ye=0,Le=M>>>((QZ(k|0)|0)>>>0),ye=Ye,Le|0;if(m=(b(k|0)|0)-(b(M|0)|0)|0,m>>>0<=30){l=m+1|0,k=31-m|0,B=l,o=M<<k|L>>>(l>>>0),l=M>>>(l>>>0),m=0,k=L<<k;break}return d?(n[d>>2]=o|0,n[d+4>>2]=T|l&0,Ye=0,Le=0,ye=Ye,Le|0):(Ye=0,Le=0,ye=Ye,Le|0)}while(!1);if(!B)M=k,T=0,k=0;else{q=u|0|0,L=ae|A&0,M=fU(q|0,L|0,-1,-1)|0,u=ye,T=k,k=0;do A=T,T=m>>>31|T<<1,m=k|m<<1,A=o<<1|A>>>31|0,ae=o>>>31|l<<1|0,GP(M|0,u|0,A|0,ae|0)|0,Le=ye,Ye=Le>>31|((Le|0)<0?-1:0)<<1,k=Ye&1,o=GP(A|0,ae|0,Ye&q|0,(((Le|0)<0?-1:0)>>31|((Le|0)<0?-1:0)<<1)&L|0)|0,l=ye,B=B-1|0;while(B|0);M=T,T=0}return B=0,d|0&&(n[d>>2]=o,n[d+4>>2]=l),Ye=(m|0)>>>31|(M|B)<<1|(B<<1|m>>>31)&0|T,Le=(m<<1|0)&-2|k,ye=Ye,Le|0}function AU(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,TZ(o,l,u,A,0)|0}function qh(o){o=o|0;var l=0,u=0;return u=o+15&-16|0,l=n[C>>2]|0,o=l+u|0,(u|0)>0&(o|0)<(l|0)|(o|0)<0?(oe()|0,fu(12),-1):(n[C>>2]=o,(o|0)>($()|0)&&!(X()|0)?(n[C>>2]=l,fu(12),-1):l|0)}function Q2(o,l,u){o=o|0,l=l|0,u=u|0;var A=0;if((l|0)<(o|0)&(o|0)<(l+u|0)){for(A=o,l=l+u|0,o=o+u|0;(u|0)>0;)o=o-1|0,l=l-1|0,u=u-1|0,s[o>>0]=s[l>>0]|0;o=A}else Qr(o,l,u)|0;return o|0}function pU(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0;var d=0,m=0;return m=I,I=I+16|0,d=m|0,TZ(o,l,u,A,d)|0,I=m,ye=n[d+4>>2]|0,n[d>>2]|0|0}function RZ(o){return o=o|0,(o&255)<<24|(o>>8&255)<<16|(o>>16&255)<<8|o>>>24|0}function F6e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,FZ[o&1](l|0,u|0,A|0,d|0,m|0)}function N6e(o,l,u){o=o|0,l=l|0,u=y(u),NZ[o&1](l|0,y(u))}function O6e(o,l,u){o=o|0,l=l|0,u=+u,OZ[o&31](l|0,+u)}function L6e(o,l,u,A){return o=o|0,l=l|0,u=y(u),A=y(A),y(LZ[o&0](l|0,y(u),y(A)))}function M6e(o,l){o=o|0,l=l|0,ip[o&127](l|0)}function U6e(o,l,u){o=o|0,l=l|0,u=u|0,sp[o&31](l|0,u|0)}function _6e(o,l){return o=o|0,l=l|0,gd[o&31](l|0)|0}function H6e(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,MZ[o&1](l|0,+u,+A,d|0)}function j6e(o,l,u,A){o=o|0,l=l|0,u=+u,A=+A,wGe[o&1](l|0,+u,+A)}function G6e(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,YP[o&7](l|0,u|0,A|0)|0}function q6e(o,l,u,A){return o=o|0,l=l|0,u=u|0,A=A|0,+BGe[o&1](l|0,u|0,A|0)}function W6e(o,l){return o=o|0,l=l|0,+UZ[o&15](l|0)}function Y6e(o,l,u){return o=o|0,l=l|0,u=+u,vGe[o&1](l|0,+u)|0}function V6e(o,l,u){return o=o|0,l=l|0,u=u|0,gU[o&15](l|0,u|0)|0}function J6e(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=+A,d=+d,m=m|0,SGe[o&1](l|0,u|0,+A,+d,m|0)}function K6e(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,B=B|0,DGe[o&1](l|0,u|0,A|0,d|0,m|0,B|0)}function z6e(o,l,u){return o=o|0,l=l|0,u=u|0,+_Z[o&7](l|0,u|0)}function X6e(o){return o=o|0,VP[o&7]()|0}function Z6e(o,l,u,A,d,m){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,HZ[o&1](l|0,u|0,A|0,d|0,m|0)|0}function $6e(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=+d,bGe[o&1](l|0,u|0,A|0,+d)}function eGe(o,l,u,A,d,m,B){o=o|0,l=l|0,u=u|0,A=y(A),d=d|0,m=y(m),B=B|0,jZ[o&1](l|0,u|0,y(A),d|0,y(m),B|0)}function tGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F2[o&15](l|0,u|0,A|0)}function rGe(o){o=o|0,GZ[o&0]()}function nGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,qZ[o&15](l|0,u|0,+A)}function iGe(o,l,u){return o=o|0,l=+l,u=+u,PGe[o&1](+l,+u)|0}function sGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,dU[o&15](l|0,u|0,A|0,d|0)}function oGe(o,l,u,A,d){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(0)}function aGe(o,l){o=o|0,l=y(l),F(1)}function Xa(o,l){o=o|0,l=+l,F(2)}function lGe(o,l,u){return o=o|0,l=y(l),u=y(u),F(3),$e}function wr(o){o=o|0,F(4)}function T2(o,l){o=o|0,l=l|0,F(5)}function Ol(o){return o=o|0,F(6),0}function cGe(o,l,u,A){o=o|0,l=+l,u=+u,A=A|0,F(7)}function uGe(o,l,u){o=o|0,l=+l,u=+u,F(8)}function fGe(o,l,u){return o=o|0,l=l|0,u=u|0,F(9),0}function AGe(o,l,u){return o=o|0,l=l|0,u=u|0,F(10),0}function hd(o){return o=o|0,F(11),0}function pGe(o,l){return o=o|0,l=+l,F(12),0}function R2(o,l){return o=o|0,l=l|0,F(13),0}function hGe(o,l,u,A,d){o=o|0,l=l|0,u=+u,A=+A,d=d|0,F(14)}function gGe(o,l,u,A,d,m){o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,m=m|0,F(15)}function hU(o,l){return o=o|0,l=l|0,F(16),0}function dGe(){return F(17),0}function mGe(o,l,u,A,d){return o=o|0,l=l|0,u=u|0,A=A|0,d=d|0,F(18),0}function yGe(o,l,u,A){o=o|0,l=l|0,u=u|0,A=+A,F(19)}function EGe(o,l,u,A,d,m){o=o|0,l=l|0,u=y(u),A=A|0,d=y(d),m=m|0,F(20)}function WP(o,l,u){o=o|0,l=l|0,u=u|0,F(21)}function IGe(){F(22)}function tE(o,l,u){o=o|0,l=l|0,u=+u,F(23)}function CGe(o,l){return o=+o,l=+l,F(24),0}function rE(o,l,u,A){o=o|0,l=l|0,u=u|0,A=A|0,F(25)}var FZ=[oGe,m3e],NZ=[aGe,Ty],OZ=[Xa,Zg,Fh,h2,g2,d2,m2,bf,_y,y2,Pf,$g,ed,E2,I2,wu,td,C2,Hy,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa,Xa],LZ=[lGe],ip=[wr,$y,Xke,Zke,$ke,PFe,xFe,kFe,Y_e,V_e,J_e,i3e,s3e,o3e,Dje,bje,Pje,Bl,Xg,u2,sr,hc,xP,kP,Hke,aQe,EQe,LQe,$Qe,dTe,RTe,JTe,cRe,SRe,HRe,nFe,EFe,VFe,cNe,SNe,HNe,nOe,EOe,MOe,$Oe,pLe,xLe,dP,oMe,wMe,HMe,sUe,IUe,HUe,XUe,e_e,m_e,I_e,L_e,z_e,$_e,d4e,F4e,Iz,g8e,Y8e,aHe,wHe,qHe,sje,dje,Eje,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr,wr],sp=[T2,Ly,JL,f2,A2,xr,so,Xi,Ns,ws,Uy,Rh,B2,CP,id,XL,ZL,wP,BP,tM,xf,ne,jOe,rLe,cUe,y8e,j4e,iZ,T2,T2,T2,T2],gd=[Ol,n6e,Ny,nd,Gy,ga,mP,Nh,w2,zL,EP,qy,vP,rM,Vy,TLe,vUe,E4e,w8e,Rl,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol,Ol],MZ=[cGe,aM],wGe=[uGe,__e],YP=[fGe,yZ,i6e,a6e,ITe,XFe,uMe,DHe],BGe=[AGe,WRe],UZ=[hd,Oh,IP,$A,lM,v,D,Q,H,V,hd,hd,hd,hd,hd,hd],vGe=[pGe,JUe],gU=[R2,P6e,SP,Wke,HQe,OTe,XTe,BFe,pNe,mLe,Ry,fHe,R2,R2,R2,R2],SGe=[hGe,BQe],DGe=[gGe,JHe],_Z=[hU,$L,Se,_e,pt,aFe,hU,hU],VP=[dGe,Wt,Fy,gP,i_e,v_e,n4e,Bje],HZ=[mGe,Sy],bGe=[yGe,WNe],jZ=[EGe,nM],F2=[WP,ko,yP,eM,vu,nTe,ARe,aOe,BOe,VL,_3e,z8e,cje,WP,WP,WP],GZ=[IGe],qZ=[tE,KL,My,ZA,p2,Bu,jy,rd,xNe,DMe,qUe,tE,tE,tE,tE,tE],PGe=[CGe,q_e],dU=[rE,xRe,_Le,WMe,RUe,u_e,k_e,u4e,U4e,P8e,Fje,rE,rE,rE,rE,rE];return{_llvm_bswap_i32:RZ,dynCall_idd:iGe,dynCall_i:X6e,_i64Subtract:GP,___udivdi3:AU,dynCall_vif:N6e,setThrew:ca,dynCall_viii:tGe,_bitshift64Lshr:qP,_bitshift64Shl:kZ,dynCall_vi:M6e,dynCall_viiddi:J6e,dynCall_diii:q6e,dynCall_iii:V6e,_memset:eE,_sbrk:qh,_memcpy:Qr,__GLOBAL__sub_I_Yoga_cpp:a2,dynCall_vii:U6e,___uremdi3:pU,dynCall_vid:O6e,stackAlloc:Ua,_nbind_init:Wje,getTempRet0:MA,dynCall_di:W6e,dynCall_iid:Y6e,setTempRet0:LA,_i64Add:fU,dynCall_fiff:L6e,dynCall_iiii:G6e,_emscripten_get_global_libc:r6e,dynCall_viid:nGe,dynCall_viiid:$6e,dynCall_viififi:eGe,dynCall_ii:_6e,__GLOBAL__sub_I_Binding_cc:a8e,dynCall_viiii:sGe,dynCall_iiiiii:Z6e,stackSave:hf,dynCall_viiiii:F6e,__GLOBAL__sub_I_nbind_cc:Sr,dynCall_vidd:j6e,_free:HP,runPostSets:R6e,dynCall_viiiiii:K6e,establishStackSpace:wn,_memmove:Q2,stackRestore:lc,_malloc:_P,__GLOBAL__sub_I_common_cc:b4e,dynCall_viddi:H6e,dynCall_dii:z6e,dynCall_v:rGe}}(Module.asmGlobalArg,Module.asmLibraryArg,buffer),_llvm_bswap_i32=Module._llvm_bswap_i32=asm._llvm_bswap_i32,getTempRet0=Module.getTempRet0=asm.getTempRet0,___udivdi3=Module.___udivdi3=asm.___udivdi3,setThrew=Module.setThrew=asm.setThrew,_bitshift64Lshr=Module._bitshift64Lshr=asm._bitshift64Lshr,_bitshift64Shl=Module._bitshift64Shl=asm._bitshift64Shl,_memset=Module._memset=asm._memset,_sbrk=Module._sbrk=asm._sbrk,_memcpy=Module._memcpy=asm._memcpy,stackAlloc=Module.stackAlloc=asm.stackAlloc,___uremdi3=Module.___uremdi3=asm.___uremdi3,_nbind_init=Module._nbind_init=asm._nbind_init,_i64Subtract=Module._i64Subtract=asm._i64Subtract,setTempRet0=Module.setTempRet0=asm.setTempRet0,_i64Add=Module._i64Add=asm._i64Add,_emscripten_get_global_libc=Module._emscripten_get_global_libc=asm._emscripten_get_global_libc,__GLOBAL__sub_I_Yoga_cpp=Module.__GLOBAL__sub_I_Yoga_cpp=asm.__GLOBAL__sub_I_Yoga_cpp,__GLOBAL__sub_I_Binding_cc=Module.__GLOBAL__sub_I_Binding_cc=asm.__GLOBAL__sub_I_Binding_cc,stackSave=Module.stackSave=asm.stackSave,__GLOBAL__sub_I_nbind_cc=Module.__GLOBAL__sub_I_nbind_cc=asm.__GLOBAL__sub_I_nbind_cc,_free=Module._free=asm._free,runPostSets=Module.runPostSets=asm.runPostSets,establishStackSpace=Module.establishStackSpace=asm.establishStackSpace,_memmove=Module._memmove=asm._memmove,stackRestore=Module.stackRestore=asm.stackRestore,_malloc=Module._malloc=asm._malloc,__GLOBAL__sub_I_common_cc=Module.__GLOBAL__sub_I_common_cc=asm.__GLOBAL__sub_I_common_cc,dynCall_viiiii=Module.dynCall_viiiii=asm.dynCall_viiiii,dynCall_vif=Module.dynCall_vif=asm.dynCall_vif,dynCall_vid=Module.dynCall_vid=asm.dynCall_vid,dynCall_fiff=Module.dynCall_fiff=asm.dynCall_fiff,dynCall_vi=Module.dynCall_vi=asm.dynCall_vi,dynCall_vii=Module.dynCall_vii=asm.dynCall_vii,dynCall_ii=Module.dynCall_ii=asm.dynCall_ii,dynCall_viddi=Module.dynCall_viddi=asm.dynCall_viddi,dynCall_vidd=Module.dynCall_vidd=asm.dynCall_vidd,dynCall_iiii=Module.dynCall_iiii=asm.dynCall_iiii,dynCall_diii=Module.dynCall_diii=asm.dynCall_diii,dynCall_di=Module.dynCall_di=asm.dynCall_di,dynCall_iid=Module.dynCall_iid=asm.dynCall_iid,dynCall_iii=Module.dynCall_iii=asm.dynCall_iii,dynCall_viiddi=Module.dynCall_viiddi=asm.dynCall_viiddi,dynCall_viiiiii=Module.dynCall_viiiiii=asm.dynCall_viiiiii,dynCall_dii=Module.dynCall_dii=asm.dynCall_dii,dynCall_i=Module.dynCall_i=asm.dynCall_i,dynCall_iiiiii=Module.dynCall_iiiiii=asm.dynCall_iiiiii,dynCall_viiid=Module.dynCall_viiid=asm.dynCall_viiid,dynCall_viififi=Module.dynCall_viififi=asm.dynCall_viififi,dynCall_viii=Module.dynCall_viii=asm.dynCall_viii,dynCall_v=Module.dynCall_v=asm.dynCall_v,dynCall_viid=Module.dynCall_viid=asm.dynCall_viid,dynCall_idd=Module.dynCall_idd=asm.dynCall_idd,dynCall_viiii=Module.dynCall_viiii=asm.dynCall_viiii;Runtime.stackAlloc=Module.stackAlloc,Runtime.stackSave=Module.stackSave,Runtime.stackRestore=Module.stackRestore,Runtime.establishStackSpace=Module.establishStackSpace,Runtime.setTempRet0=Module.setTempRet0,Runtime.getTempRet0=Module.getTempRet0,Module.asm=asm;function ExitStatus(t){this.name=\"ExitStatus\",this.message=\"Program terminated with exit(\"+t+\")\",this.status=t}ExitStatus.prototype=new Error,ExitStatus.prototype.constructor=ExitStatus;var initialStackTop,preloadStartTime=null,calledMain=!1;dependenciesFulfilled=function t(){Module.calledRun||run(),Module.calledRun||(dependenciesFulfilled=t)},Module.callMain=Module.callMain=function t(e){e=e||[],ensureInitRuntime();var r=e.length+1;function s(){for(var p=0;p<3;p++)a.push(0)}var a=[allocate(intArrayFromString(Module.thisProgram),\"i8\",ALLOC_NORMAL)];s();for(var n=0;n<r-1;n=n+1)a.push(allocate(intArrayFromString(e[n]),\"i8\",ALLOC_NORMAL)),s();a.push(0),a=allocate(a,\"i32\",ALLOC_NORMAL);try{var c=Module._main(r,a,0);exit(c,!0)}catch(p){if(p instanceof ExitStatus)return;if(p==\"SimulateInfiniteLoop\"){Module.noExitRuntime=!0;return}else{var f=p;p&&typeof p==\"object\"&&p.stack&&(f=[p,p.stack]),Module.printErr(\"exception thrown: \"+f),Module.quit(1,p)}}finally{calledMain=!0}};function run(t){if(t=t||Module.arguments,preloadStartTime===null&&(preloadStartTime=Date.now()),runDependencies>0||(preRun(),runDependencies>0)||Module.calledRun)return;function e(){Module.calledRun||(Module.calledRun=!0,!ABORT&&(ensureInitRuntime(),preMain(),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),Module._main&&shouldRunNow&&Module.callMain(t),postRun()))}Module.setStatus?(Module.setStatus(\"Running...\"),setTimeout(function(){setTimeout(function(){Module.setStatus(\"\")},1),e()},1)):e()}Module.run=Module.run=run;function exit(t,e){e&&Module.noExitRuntime||(Module.noExitRuntime||(ABORT=!0,EXITSTATUS=t,STACKTOP=initialStackTop,exitRuntime(),Module.onExit&&Module.onExit(t)),ENVIRONMENT_IS_NODE&&process.exit(t),Module.quit(t,new ExitStatus(t)))}Module.exit=Module.exit=exit;var abortDecorators=[];function abort(t){Module.onAbort&&Module.onAbort(t),t!==void 0?(Module.print(t),Module.printErr(t),t=JSON.stringify(t)):t=\"\",ABORT=!0,EXITSTATUS=1;var e=`\nIf this abort() is unexpected, build with -s ASSERTIONS=1 which can give more information.`,r=\"abort(\"+t+\") at \"+stackTrace()+e;throw abortDecorators&&abortDecorators.forEach(function(s){r=s(r,t)}),r}if(Module.abort=Module.abort=abort,Module.preInit)for(typeof Module.preInit==\"function\"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();var shouldRunNow=!0;Module.noInitialRun&&(shouldRunNow=!1),run()})});var Fm=_((PKt,Rwe)=>{\"use strict\";var Ppt=Qwe(),xpt=Twe(),K9=!1,z9=null;xpt({},function(t,e){if(!K9){if(K9=!0,t)throw t;z9=e}});if(!K9)throw new Error(\"Failed to load the yoga module - it needed to be loaded synchronously, but didn't\");Rwe.exports=Ppt(z9.bind,z9.lib)});var Z9=_((xKt,X9)=>{\"use strict\";var Fwe=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);X9.exports=Fwe;X9.exports.default=Fwe});var Owe=_((kKt,Nwe)=>{\"use strict\";Nwe.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 GS=_((QKt,$9)=>{\"use strict\";var kpt=dk(),Qpt=Z9(),Tpt=Owe(),Lwe=t=>{if(typeof t!=\"string\"||t.length===0||(t=kpt(t),t.length===0))return 0;t=t.replace(Tpt(),\"  \");let e=0;for(let r=0;r<t.length;r++){let s=t.codePointAt(r);s<=31||s>=127&&s<=159||s>=768&&s<=879||(s>65535&&r++,e+=Qpt(s)?2:1)}return e};$9.exports=Lwe;$9.exports.default=Lwe});var tW=_((TKt,eW)=>{\"use strict\";var Rpt=GS(),Mwe=t=>{let e=0;for(let r of t.split(`\n`))e=Math.max(e,Rpt(r));return e};eW.exports=Mwe;eW.exports.default=Mwe});var Uwe=_(qS=>{\"use strict\";var Fpt=qS&&qS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(qS,\"__esModule\",{value:!0});var Npt=Fpt(tW()),rW={};qS.default=t=>{if(t.length===0)return{width:0,height:0};if(rW[t])return rW[t];let e=Npt.default(t),r=t.split(`\n`).length;return rW[t]={width:e,height:r},{width:e,height:r}}});var _we=_(WS=>{\"use strict\";var Opt=WS&&WS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(WS,\"__esModule\",{value:!0});var bn=Opt(Fm()),Lpt=(t,e)=>{\"position\"in e&&t.setPositionType(e.position===\"absolute\"?bn.default.POSITION_TYPE_ABSOLUTE:bn.default.POSITION_TYPE_RELATIVE)},Mpt=(t,e)=>{\"marginLeft\"in e&&t.setMargin(bn.default.EDGE_START,e.marginLeft||0),\"marginRight\"in e&&t.setMargin(bn.default.EDGE_END,e.marginRight||0),\"marginTop\"in e&&t.setMargin(bn.default.EDGE_TOP,e.marginTop||0),\"marginBottom\"in e&&t.setMargin(bn.default.EDGE_BOTTOM,e.marginBottom||0)},Upt=(t,e)=>{\"paddingLeft\"in e&&t.setPadding(bn.default.EDGE_LEFT,e.paddingLeft||0),\"paddingRight\"in e&&t.setPadding(bn.default.EDGE_RIGHT,e.paddingRight||0),\"paddingTop\"in e&&t.setPadding(bn.default.EDGE_TOP,e.paddingTop||0),\"paddingBottom\"in e&&t.setPadding(bn.default.EDGE_BOTTOM,e.paddingBottom||0)},_pt=(t,e)=>{var r;\"flexGrow\"in e&&t.setFlexGrow((r=e.flexGrow)!==null&&r!==void 0?r:0),\"flexShrink\"in e&&t.setFlexShrink(typeof e.flexShrink==\"number\"?e.flexShrink:1),\"flexDirection\"in e&&(e.flexDirection===\"row\"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_ROW),e.flexDirection===\"row-reverse\"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_ROW_REVERSE),e.flexDirection===\"column\"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_COLUMN),e.flexDirection===\"column-reverse\"&&t.setFlexDirection(bn.default.FLEX_DIRECTION_COLUMN_REVERSE)),\"flexBasis\"in e&&(typeof e.flexBasis==\"number\"?t.setFlexBasis(e.flexBasis):typeof e.flexBasis==\"string\"?t.setFlexBasisPercent(Number.parseInt(e.flexBasis,10)):t.setFlexBasis(NaN)),\"alignItems\"in e&&((e.alignItems===\"stretch\"||!e.alignItems)&&t.setAlignItems(bn.default.ALIGN_STRETCH),e.alignItems===\"flex-start\"&&t.setAlignItems(bn.default.ALIGN_FLEX_START),e.alignItems===\"center\"&&t.setAlignItems(bn.default.ALIGN_CENTER),e.alignItems===\"flex-end\"&&t.setAlignItems(bn.default.ALIGN_FLEX_END)),\"alignSelf\"in e&&((e.alignSelf===\"auto\"||!e.alignSelf)&&t.setAlignSelf(bn.default.ALIGN_AUTO),e.alignSelf===\"flex-start\"&&t.setAlignSelf(bn.default.ALIGN_FLEX_START),e.alignSelf===\"center\"&&t.setAlignSelf(bn.default.ALIGN_CENTER),e.alignSelf===\"flex-end\"&&t.setAlignSelf(bn.default.ALIGN_FLEX_END)),\"justifyContent\"in e&&((e.justifyContent===\"flex-start\"||!e.justifyContent)&&t.setJustifyContent(bn.default.JUSTIFY_FLEX_START),e.justifyContent===\"center\"&&t.setJustifyContent(bn.default.JUSTIFY_CENTER),e.justifyContent===\"flex-end\"&&t.setJustifyContent(bn.default.JUSTIFY_FLEX_END),e.justifyContent===\"space-between\"&&t.setJustifyContent(bn.default.JUSTIFY_SPACE_BETWEEN),e.justifyContent===\"space-around\"&&t.setJustifyContent(bn.default.JUSTIFY_SPACE_AROUND))},Hpt=(t,e)=>{var r,s;\"width\"in e&&(typeof e.width==\"number\"?t.setWidth(e.width):typeof e.width==\"string\"?t.setWidthPercent(Number.parseInt(e.width,10)):t.setWidthAuto()),\"height\"in e&&(typeof e.height==\"number\"?t.setHeight(e.height):typeof e.height==\"string\"?t.setHeightPercent(Number.parseInt(e.height,10)):t.setHeightAuto()),\"minWidth\"in e&&(typeof e.minWidth==\"string\"?t.setMinWidthPercent(Number.parseInt(e.minWidth,10)):t.setMinWidth((r=e.minWidth)!==null&&r!==void 0?r:0)),\"minHeight\"in e&&(typeof e.minHeight==\"string\"?t.setMinHeightPercent(Number.parseInt(e.minHeight,10)):t.setMinHeight((s=e.minHeight)!==null&&s!==void 0?s:0))},jpt=(t,e)=>{\"display\"in e&&t.setDisplay(e.display===\"flex\"?bn.default.DISPLAY_FLEX:bn.default.DISPLAY_NONE)},Gpt=(t,e)=>{if(\"borderStyle\"in e){let r=typeof e.borderStyle==\"string\"?1:0;t.setBorder(bn.default.EDGE_TOP,r),t.setBorder(bn.default.EDGE_BOTTOM,r),t.setBorder(bn.default.EDGE_LEFT,r),t.setBorder(bn.default.EDGE_RIGHT,r)}};WS.default=(t,e={})=>{Lpt(t,e),Mpt(t,e),Upt(t,e),_pt(t,e),Hpt(t,e),jpt(t,e),Gpt(t,e)}});var Gwe=_((NKt,jwe)=>{\"use strict\";var YS=GS(),qpt=dk(),Wpt=sk(),iW=new Set([\"\\x1B\",\"\\x9B\"]),Ypt=39,Hwe=t=>`${iW.values().next().value}[${t}m`,Vpt=t=>t.split(\" \").map(e=>YS(e)),nW=(t,e,r)=>{let s=[...e],a=!1,n=YS(qpt(t[t.length-1]));for(let[c,f]of s.entries()){let p=YS(f);if(n+p<=r?t[t.length-1]+=f:(t.push(f),n=0),iW.has(f))a=!0;else if(a&&f===\"m\"){a=!1;continue}a||(n+=p,n===r&&c<s.length-1&&(t.push(\"\"),n=0))}!n&&t[t.length-1].length>0&&t.length>1&&(t[t.length-2]+=t.pop())},Jpt=t=>{let e=t.split(\" \"),r=e.length;for(;r>0&&!(YS(e[r-1])>0);)r--;return r===e.length?t:e.slice(0,r).join(\" \")+e.slice(r).join(\"\")},Kpt=(t,e,r={})=>{if(r.trim!==!1&&t.trim()===\"\")return\"\";let s=\"\",a=\"\",n,c=Vpt(t),f=[\"\"];for(let[p,h]of t.split(\" \").entries()){r.trim!==!1&&(f[f.length-1]=f[f.length-1].trimLeft());let E=YS(f[f.length-1]);if(p!==0&&(E>=e&&(r.wordWrap===!1||r.trim===!1)&&(f.push(\"\"),E=0),(E>0||r.trim===!1)&&(f[f.length-1]+=\" \",E++)),r.hard&&c[p]>e){let C=e-E,S=1+Math.floor((c[p]-C-1)/e);Math.floor((c[p]-1)/e)<S&&f.push(\"\"),nW(f,h,e);continue}if(E+c[p]>e&&E>0&&c[p]>0){if(r.wordWrap===!1&&E<e){nW(f,h,e);continue}f.push(\"\")}if(E+c[p]>e&&r.wordWrap===!1){nW(f,h,e);continue}f[f.length-1]+=h}r.trim!==!1&&(f=f.map(Jpt)),s=f.join(`\n`);for(let[p,h]of[...s].entries()){if(a+=h,iW.has(h)){let C=parseFloat(/\\d[^m]*/.exec(s.slice(p,p+4)));n=C===Ypt?null:C}let E=Wpt.codes.get(Number(n));n&&E&&(s[p+1]===`\n`?a+=Hwe(E):h===`\n`&&(a+=Hwe(n)))}return a};jwe.exports=(t,e,r)=>String(t).normalize().replace(/\\r\\n/g,`\n`).split(`\n`).map(s=>Kpt(s,e,r)).join(`\n`)});var Ywe=_((OKt,Wwe)=>{\"use strict\";var qwe=\"[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]\",zpt=t=>t&&t.exact?new RegExp(`^${qwe}$`):new RegExp(qwe,\"g\");Wwe.exports=zpt});var sW=_((LKt,zwe)=>{\"use strict\";var Xpt=Z9(),Zpt=Ywe(),Vwe=sk(),Kwe=[\"\\x1B\",\"\\x9B\"],NF=t=>`${Kwe[0]}[${t}m`,Jwe=(t,e,r)=>{let s=[];t=[...t];for(let a of t){let n=a;a.match(\";\")&&(a=a.split(\";\")[0][0]+\"0\");let c=Vwe.codes.get(parseInt(a,10));if(c){let f=t.indexOf(c.toString());f>=0?t.splice(f,1):s.push(NF(e?c:n))}else if(e){s.push(NF(0));break}else s.push(NF(n))}if(e&&(s=s.filter((a,n)=>s.indexOf(a)===n),r!==void 0)){let a=NF(Vwe.codes.get(parseInt(r,10)));s=s.reduce((n,c)=>c===a?[c,...n]:[...n,c],[])}return s.join(\"\")};zwe.exports=(t,e,r)=>{let s=[...t.normalize()],a=[];r=typeof r==\"number\"?r:s.length;let n=!1,c,f=0,p=\"\";for(let[h,E]of s.entries()){let C=!1;if(Kwe.includes(E)){let S=/\\d[^m]*/.exec(t.slice(h,h+18));c=S&&S.length>0?S[0]:void 0,f<r&&(n=!0,c!==void 0&&a.push(c))}else n&&E===\"m\"&&(n=!1,C=!0);if(!n&&!C&&++f,!Zpt({exact:!0}).test(E)&&Xpt(E.codePointAt())&&++f,f>e&&f<=r)p+=E;else if(f===e&&!n&&c!==void 0)p=Jwe(a);else if(f>=r){p+=Jwe(a,!0,c);break}}return p}});var Zwe=_((MKt,Xwe)=>{\"use strict\";var $0=sW(),$pt=GS();function OF(t,e,r){if(t.charAt(e)===\" \")return e;for(let s=1;s<=3;s++)if(r){if(t.charAt(e+s)===\" \")return e+s}else if(t.charAt(e-s)===\" \")return e-s;return e}Xwe.exports=(t,e,r)=>{r={position:\"end\",preferTruncationOnSpace:!1,...r};let{position:s,space:a,preferTruncationOnSpace:n}=r,c=\"\\u2026\",f=1;if(typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a string, got ${typeof t}`);if(typeof e!=\"number\")throw new TypeError(`Expected \\`columns\\` to be a number, got ${typeof e}`);if(e<1)return\"\";if(e===1)return c;let p=$pt(t);if(p<=e)return t;if(s===\"start\"){if(n){let h=OF(t,p-e+1,!0);return c+$0(t,h,p).trim()}return a===!0&&(c+=\" \",f=2),c+$0(t,p-e+f,p)}if(s===\"middle\"){a===!0&&(c=\" \"+c+\" \",f=3);let h=Math.floor(e/2);if(n){let E=OF(t,h),C=OF(t,p-(e-h)+1,!0);return $0(t,0,E)+c+$0(t,C,p).trim()}return $0(t,0,h)+c+$0(t,p-(e-h)+f,p)}if(s===\"end\"){if(n){let h=OF(t,e-1);return $0(t,0,h)+c}return a===!0&&(c=\" \"+c,f=2),$0(t,0,e-f)+c}throw new Error(`Expected \\`options.position\\` to be either \\`start\\`, \\`middle\\` or \\`end\\`, got ${s}`)}});var aW=_(VS=>{\"use strict\";var $we=VS&&VS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(VS,\"__esModule\",{value:!0});var eht=$we(Gwe()),tht=$we(Zwe()),oW={};VS.default=(t,e,r)=>{let s=t+String(e)+String(r);if(oW[s])return oW[s];let a=t;if(r===\"wrap\"&&(a=eht.default(t,e,{trim:!1,hard:!0})),r.startsWith(\"truncate\")){let n=\"end\";r===\"truncate-middle\"&&(n=\"middle\"),r===\"truncate-start\"&&(n=\"start\"),a=tht.default(t,e,{position:n})}return oW[s]=a,a}});var cW=_(lW=>{\"use strict\";Object.defineProperty(lW,\"__esModule\",{value:!0});var e1e=t=>{let e=\"\";if(t.childNodes.length>0)for(let r of t.childNodes){let s=\"\";r.nodeName===\"#text\"?s=r.nodeValue:((r.nodeName===\"ink-text\"||r.nodeName===\"ink-virtual-text\")&&(s=e1e(r)),s.length>0&&typeof r.internal_transform==\"function\"&&(s=r.internal_transform(s))),e+=s}return e};lW.default=e1e});var uW=_(bi=>{\"use strict\";var JS=bi&&bi.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bi,\"__esModule\",{value:!0});bi.setTextNodeValue=bi.createTextNode=bi.setStyle=bi.setAttribute=bi.removeChildNode=bi.insertBeforeNode=bi.appendChildNode=bi.createNode=bi.TEXT_NAME=void 0;var rht=JS(Fm()),t1e=JS(Uwe()),nht=JS(_we()),iht=JS(aW()),sht=JS(cW());bi.TEXT_NAME=\"#text\";bi.createNode=t=>{var e;let r={nodeName:t,style:{},attributes:{},childNodes:[],parentNode:null,yogaNode:t===\"ink-virtual-text\"?void 0:rht.default.Node.create()};return t===\"ink-text\"&&((e=r.yogaNode)===null||e===void 0||e.setMeasureFunc(oht.bind(null,r))),r};bi.appendChildNode=(t,e)=>{var r;e.parentNode&&bi.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\")&&LF(t)};bi.insertBeforeNode=(t,e,r)=>{var s,a;e.parentNode&&bi.removeChildNode(e.parentNode,e),e.parentNode=t;let n=t.childNodes.indexOf(r);if(n>=0){t.childNodes.splice(n,0,e),e.yogaNode&&((s=t.yogaNode)===null||s===void 0||s.insertChild(e.yogaNode,n));return}t.childNodes.push(e),e.yogaNode&&((a=t.yogaNode)===null||a===void 0||a.insertChild(e.yogaNode,t.yogaNode.getChildCount())),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&LF(t)};bi.removeChildNode=(t,e)=>{var r,s;e.yogaNode&&((s=(r=e.parentNode)===null||r===void 0?void 0:r.yogaNode)===null||s===void 0||s.removeChild(e.yogaNode)),e.parentNode=null;let a=t.childNodes.indexOf(e);a>=0&&t.childNodes.splice(a,1),(t.nodeName===\"ink-text\"||t.nodeName===\"ink-virtual-text\")&&LF(t)};bi.setAttribute=(t,e,r)=>{t.attributes[e]=r};bi.setStyle=(t,e)=>{t.style=e,t.yogaNode&&nht.default(t.yogaNode,e)};bi.createTextNode=t=>{let e={nodeName:\"#text\",nodeValue:t,yogaNode:void 0,parentNode:null,style:{}};return bi.setTextNodeValue(e,t),e};var oht=function(t,e){var r,s;let a=t.nodeName===\"#text\"?t.nodeValue:sht.default(t),n=t1e.default(a);if(n.width<=e||n.width>=1&&e>0&&e<1)return n;let c=(s=(r=t.style)===null||r===void 0?void 0:r.textWrap)!==null&&s!==void 0?s:\"wrap\",f=iht.default(a,e,c);return t1e.default(f)},r1e=t=>{var e;if(!(!t||!t.parentNode))return(e=t.yogaNode)!==null&&e!==void 0?e:r1e(t.parentNode)},LF=t=>{let e=r1e(t);e?.markDirty()};bi.setTextNodeValue=(t,e)=>{typeof e!=\"string\"&&(e=String(e)),t.nodeValue=e,LF(t)}});var a1e=_(KS=>{\"use strict\";var o1e=KS&&KS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(KS,\"__esModule\",{value:!0});var n1e=Y9(),aht=o1e(Swe()),i1e=o1e(Fm()),ea=uW(),s1e=t=>{t?.unsetMeasureFunc(),t?.freeRecursive()};KS.default=aht.default({schedulePassiveEffects:n1e.unstable_scheduleCallback,cancelPassiveEffects:n1e.unstable_cancelCallback,now:Date.now,getRootHostContext:()=>({isInsideText:!1}),prepareForCommit:()=>null,preparePortalMount:()=>null,clearContainer:()=>!1,shouldDeprioritizeSubtree:()=>!1,resetAfterCommit:t=>{if(t.isStaticDirty){t.isStaticDirty=!1,typeof t.onImmediateRender==\"function\"&&t.onImmediateRender();return}typeof t.onRender==\"function\"&&t.onRender()},getChildHostContext:(t,e)=>{let r=t.isInsideText,s=e===\"ink-text\"||e===\"ink-virtual-text\";return r===s?t:{isInsideText:s}},shouldSetTextContent:()=>!1,createInstance:(t,e,r,s)=>{if(s.isInsideText&&t===\"ink-box\")throw new Error(\"<Box> can\\u2019t be nested inside <Text> component\");let a=t===\"ink-text\"&&s.isInsideText?\"ink-virtual-text\":t,n=ea.createNode(a);for(let[c,f]of Object.entries(e))c!==\"children\"&&(c===\"style\"?ea.setStyle(n,f):c===\"internal_transform\"?n.internal_transform=f:c===\"internal_static\"?n.internal_static=!0:ea.setAttribute(n,c,f));return n},createTextInstance:(t,e,r)=>{if(!r.isInsideText)throw new Error(`Text string \"${t}\" must be rendered inside <Text> component`);return ea.createTextNode(t)},resetTextContent:()=>{},hideTextInstance:t=>{ea.setTextNodeValue(t,\"\")},unhideTextInstance:(t,e)=>{ea.setTextNodeValue(t,e)},getPublicInstance:t=>t,hideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(i1e.default.DISPLAY_NONE)},unhideInstance:t=>{var e;(e=t.yogaNode)===null||e===void 0||e.setDisplay(i1e.default.DISPLAY_FLEX)},appendInitialChild:ea.appendChildNode,appendChild:ea.appendChildNode,insertBefore:ea.insertBeforeNode,finalizeInitialChildren:(t,e,r,s)=>(t.internal_static&&(s.isStaticDirty=!0,s.staticNode=t),!1),supportsMutation:!0,appendChildToContainer:ea.appendChildNode,insertInContainerBefore:ea.insertBeforeNode,removeChildFromContainer:(t,e)=>{ea.removeChildNode(t,e),s1e(e.yogaNode)},prepareUpdate:(t,e,r,s,a)=>{t.internal_static&&(a.isStaticDirty=!0);let n={},c=Object.keys(s);for(let f of c)if(s[f]!==r[f]){if(f===\"style\"&&typeof s.style==\"object\"&&typeof r.style==\"object\"){let h=s.style,E=r.style,C=Object.keys(h);for(let S of C){if(S===\"borderStyle\"||S===\"borderColor\"){if(typeof n.style!=\"object\"){let P={};n.style=P}n.style.borderStyle=h.borderStyle,n.style.borderColor=h.borderColor}if(h[S]!==E[S]){if(typeof n.style!=\"object\"){let P={};n.style=P}n.style[S]=h[S]}}continue}n[f]=s[f]}return n},commitUpdate:(t,e)=>{for(let[r,s]of Object.entries(e))r!==\"children\"&&(r===\"style\"?ea.setStyle(t,s):r===\"internal_transform\"?t.internal_transform=s:r===\"internal_static\"?t.internal_static=!0:ea.setAttribute(t,r,s))},commitTextUpdate:(t,e,r)=>{ea.setTextNodeValue(t,r)},removeChild:(t,e)=>{ea.removeChildNode(t,e),s1e(e.yogaNode)}})});var c1e=_((GKt,l1e)=>{\"use strict\";l1e.exports=(t,e=1,r)=>{if(r={indent:\" \",includeEmptyLines:!1,...r},typeof t!=\"string\")throw new TypeError(`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof t}\\``);if(typeof e!=\"number\")throw new TypeError(`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof e}\\``);if(typeof r.indent!=\"string\")throw new TypeError(`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof r.indent}\\``);if(e===0)return t;let s=r.includeEmptyLines?/^/gm:/^(?!\\s*$)/gm;return t.replace(s,r.indent.repeat(e))}});var u1e=_(zS=>{\"use strict\";var lht=zS&&zS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(zS,\"__esModule\",{value:!0});var MF=lht(Fm());zS.default=t=>t.getComputedWidth()-t.getComputedPadding(MF.default.EDGE_LEFT)-t.getComputedPadding(MF.default.EDGE_RIGHT)-t.getComputedBorder(MF.default.EDGE_LEFT)-t.getComputedBorder(MF.default.EDGE_RIGHT)});var f1e=_((WKt,cht)=>{cht.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 p1e=_((YKt,fW)=>{\"use strict\";var A1e=f1e();fW.exports=A1e;fW.exports.default=A1e});var AW=_(ZS=>{\"use strict\";var uht=ZS&&ZS.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ZS,\"__esModule\",{value:!0});var XS=uht(TE()),fht=/^(rgb|hsl|hsv|hwb)\\(\\s?(\\d+),\\s?(\\d+),\\s?(\\d+)\\s?\\)$/,Aht=/^(ansi|ansi256)\\(\\s?(\\d+)\\s?\\)$/,UF=(t,e)=>e===\"foreground\"?t:\"bg\"+t[0].toUpperCase()+t.slice(1);ZS.default=(t,e,r)=>{if(!e)return t;if(e in XS.default){let a=UF(e,r);return XS.default[a](t)}if(e.startsWith(\"#\")){let a=UF(\"hex\",r);return XS.default[a](e)(t)}if(e.startsWith(\"ansi\")){let a=Aht.exec(e);if(!a)return t;let n=UF(a[1],r),c=Number(a[2]);return XS.default[n](c)(t)}if(e.startsWith(\"rgb\")||e.startsWith(\"hsl\")||e.startsWith(\"hsv\")||e.startsWith(\"hwb\")){let a=fht.exec(e);if(!a)return t;let n=UF(a[1],r),c=Number(a[2]),f=Number(a[3]),p=Number(a[4]);return XS.default[n](c,f,p)(t)}return t}});var g1e=_($S=>{\"use strict\";var h1e=$S&&$S.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty($S,\"__esModule\",{value:!0});var pht=h1e(p1e()),pW=h1e(AW());$S.default=(t,e,r,s)=>{if(typeof r.style.borderStyle==\"string\"){let a=r.yogaNode.getComputedWidth(),n=r.yogaNode.getComputedHeight(),c=r.style.borderColor,f=pht.default[r.style.borderStyle],p=pW.default(f.topLeft+f.horizontal.repeat(a-2)+f.topRight,c,\"foreground\"),h=(pW.default(f.vertical,c,\"foreground\")+`\n`).repeat(n-2),E=pW.default(f.bottomLeft+f.horizontal.repeat(a-2)+f.bottomRight,c,\"foreground\");s.write(t,e,p,{transformers:[]}),s.write(t,e+1,h,{transformers:[]}),s.write(t+a-1,e+1,h,{transformers:[]}),s.write(t,e+n-1,E,{transformers:[]})}}});var m1e=_(eD=>{\"use strict\";var Nm=eD&&eD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(eD,\"__esModule\",{value:!0});var hht=Nm(Fm()),ght=Nm(tW()),dht=Nm(c1e()),mht=Nm(aW()),yht=Nm(u1e()),Eht=Nm(cW()),Iht=Nm(g1e()),Cht=(t,e)=>{var r;let s=(r=t.childNodes[0])===null||r===void 0?void 0:r.yogaNode;if(s){let a=s.getComputedLeft(),n=s.getComputedTop();e=`\n`.repeat(n)+dht.default(e,a)}return e},d1e=(t,e,r)=>{var s;let{offsetX:a=0,offsetY:n=0,transformers:c=[],skipStaticElements:f}=r;if(f&&t.internal_static)return;let{yogaNode:p}=t;if(p){if(p.getDisplay()===hht.default.DISPLAY_NONE)return;let h=a+p.getComputedLeft(),E=n+p.getComputedTop(),C=c;if(typeof t.internal_transform==\"function\"&&(C=[t.internal_transform,...c]),t.nodeName===\"ink-text\"){let S=Eht.default(t);if(S.length>0){let P=ght.default(S),I=yht.default(p);if(P>I){let R=(s=t.style.textWrap)!==null&&s!==void 0?s:\"wrap\";S=mht.default(S,I,R)}S=Cht(t,S),e.write(h,E,S,{transformers:C})}return}if(t.nodeName===\"ink-box\"&&Iht.default(h,E,t,e),t.nodeName===\"ink-root\"||t.nodeName===\"ink-box\")for(let S of t.childNodes)d1e(S,e,{offsetX:h,offsetY:E,transformers:C,skipStaticElements:f})}};eD.default=d1e});var I1e=_(tD=>{\"use strict\";var E1e=tD&&tD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(tD,\"__esModule\",{value:!0});var y1e=E1e(sW()),wht=E1e(GS()),hW=class{constructor(e){this.writes=[];let{width:r,height:s}=e;this.width=r,this.height=s}write(e,r,s,a){let{transformers:n}=a;s&&this.writes.push({x:e,y:r,text:s,transformers:n})}get(){let e=[];for(let s=0;s<this.height;s++)e.push(\" \".repeat(this.width));for(let s of this.writes){let{x:a,y:n,text:c,transformers:f}=s,p=c.split(`\n`),h=0;for(let E of p){let C=e[n+h];if(!C)continue;let S=wht.default(E);for(let P of f)E=P(E);e[n+h]=y1e.default(C,0,a)+E+y1e.default(C,a+S),h++}}return{output:e.map(s=>s.trimRight()).join(`\n`),height:e.length}}};tD.default=hW});var B1e=_(rD=>{\"use strict\";var gW=rD&&rD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(rD,\"__esModule\",{value:!0});var Bht=gW(Fm()),C1e=gW(m1e()),w1e=gW(I1e());rD.default=(t,e)=>{var r;if(t.yogaNode.setWidth(e),t.yogaNode){t.yogaNode.calculateLayout(void 0,void 0,Bht.default.DIRECTION_LTR);let s=new w1e.default({width:t.yogaNode.getComputedWidth(),height:t.yogaNode.getComputedHeight()});C1e.default(t,s,{skipStaticElements:!0});let a;!((r=t.staticNode)===null||r===void 0)&&r.yogaNode&&(a=new w1e.default({width:t.staticNode.yogaNode.getComputedWidth(),height:t.staticNode.yogaNode.getComputedHeight()}),C1e.default(t.staticNode,a,{skipStaticElements:!1}));let{output:n,height:c}=s.get();return{output:n,outputHeight:c,staticOutput:a?`${a.get().output}\n`:\"\"}}return{output:\"\",outputHeight:0,staticOutput:\"\"}}});var b1e=_((ZKt,D1e)=>{\"use strict\";var v1e=Ie(\"stream\"),S1e=[\"assert\",\"count\",\"countReset\",\"debug\",\"dir\",\"dirxml\",\"error\",\"group\",\"groupCollapsed\",\"groupEnd\",\"info\",\"log\",\"table\",\"time\",\"timeEnd\",\"timeLog\",\"trace\",\"warn\"],dW={},vht=t=>{let e=new v1e.PassThrough,r=new v1e.PassThrough;e.write=a=>t(\"stdout\",a),r.write=a=>t(\"stderr\",a);let s=new console.Console(e,r);for(let a of S1e)dW[a]=console[a],console[a]=s[a];return()=>{for(let a of S1e)console[a]=dW[a];dW={}}};D1e.exports=vht});var yW=_(mW=>{\"use strict\";Object.defineProperty(mW,\"__esModule\",{value:!0});mW.default=new WeakMap});var IW=_(EW=>{\"use strict\";Object.defineProperty(EW,\"__esModule\",{value:!0});var Sht=hn(),P1e=Sht.createContext({exit:()=>{}});P1e.displayName=\"InternalAppContext\";EW.default=P1e});var wW=_(CW=>{\"use strict\";Object.defineProperty(CW,\"__esModule\",{value:!0});var Dht=hn(),x1e=Dht.createContext({stdin:void 0,setRawMode:()=>{},isRawModeSupported:!1,internal_exitOnCtrlC:!0});x1e.displayName=\"InternalStdinContext\";CW.default=x1e});var vW=_(BW=>{\"use strict\";Object.defineProperty(BW,\"__esModule\",{value:!0});var bht=hn(),k1e=bht.createContext({stdout:void 0,write:()=>{}});k1e.displayName=\"InternalStdoutContext\";BW.default=k1e});var DW=_(SW=>{\"use strict\";Object.defineProperty(SW,\"__esModule\",{value:!0});var Pht=hn(),Q1e=Pht.createContext({stderr:void 0,write:()=>{}});Q1e.displayName=\"InternalStderrContext\";SW.default=Q1e});var _F=_(bW=>{\"use strict\";Object.defineProperty(bW,\"__esModule\",{value:!0});var xht=hn(),T1e=xht.createContext({activeId:void 0,add:()=>{},remove:()=>{},activate:()=>{},deactivate:()=>{},enableFocus:()=>{},disableFocus:()=>{},focusNext:()=>{},focusPrevious:()=>{},focus:()=>{}});T1e.displayName=\"InternalFocusContext\";bW.default=T1e});var F1e=_((szt,R1e)=>{\"use strict\";var kht=/[|\\\\{}()[\\]^$+*?.-]/g;R1e.exports=t=>{if(typeof t!=\"string\")throw new TypeError(\"Expected a string\");return t.replace(kht,\"\\\\$&\")}});var M1e=_((ozt,L1e)=>{\"use strict\";var Qht=F1e(),Tht=typeof process==\"object\"&&process&&typeof process.cwd==\"function\"?process.cwd():\".\",O1e=[].concat(Ie(\"module\").builtinModules,\"bootstrap_node\",\"node\").map(t=>new RegExp(`(?:\\\\((?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+\\\\)$|^\\\\s*at (?:node:)?${t}(?:\\\\.js)?:\\\\d+:\\\\d+$)`));O1e.push(/\\((?:node:)?internal\\/[^:]+:\\d+:\\d+\\)$/,/\\s*at (?:node:)?internal\\/[^:]+:\\d+:\\d+$/,/\\/\\.node-spawn-wrap-\\w+-\\w+\\/node:\\d+:\\d+\\)?$/);var PW=class t{constructor(e){e={ignoredPackages:[],...e},\"internals\"in e||(e.internals=t.nodeInternals()),\"cwd\"in e||(e.cwd=Tht),this._cwd=e.cwd.replace(/\\\\/g,\"/\"),this._internals=[].concat(e.internals,Rht(e.ignoredPackages)),this._wrapCallSite=e.wrapCallSite||!1}static nodeInternals(){return[...O1e]}clean(e,r=0){r=\" \".repeat(r),Array.isArray(e)||(e=e.split(`\n`)),!/^\\s*at /.test(e[0])&&/^\\s*at /.test(e[1])&&(e=e.slice(1));let s=!1,a=null,n=[];return e.forEach(c=>{if(c=c.replace(/\\\\/g,\"/\"),this._internals.some(p=>p.test(c)))return;let f=/^\\s*at /.test(c);s?c=c.trimEnd().replace(/^(\\s+)at /,\"$1\"):(c=c.trim(),f&&(c=c.slice(3))),c=c.replace(`${this._cwd}/`,\"\"),c&&(f?(a&&(n.push(a),a=null),n.push(c)):(s=!0,a=c))}),n.map(c=>`${r}${c}\n`).join(\"\")}captureString(e,r=this.captureString){typeof e==\"function\"&&(r=e,e=1/0);let{stackTraceLimit:s}=Error;e&&(Error.stackTraceLimit=e);let a={};Error.captureStackTrace(a,r);let{stack:n}=a;return Error.stackTraceLimit=s,this.clean(n)}capture(e,r=this.capture){typeof e==\"function\"&&(r=e,e=1/0);let{prepareStackTrace:s,stackTraceLimit:a}=Error;Error.prepareStackTrace=(f,p)=>this._wrapCallSite?p.map(this._wrapCallSite):p,e&&(Error.stackTraceLimit=e);let n={};Error.captureStackTrace(n,r);let{stack:c}=n;return Object.assign(Error,{prepareStackTrace:s,stackTraceLimit:a}),c}at(e=this.at){let[r]=this.capture(1,e);if(!r)return{};let s={line:r.getLineNumber(),column:r.getColumnNumber()};N1e(s,r.getFileName(),this._cwd),r.isConstructor()&&(s.constructor=!0),r.isEval()&&(s.evalOrigin=r.getEvalOrigin()),r.isNative()&&(s.native=!0);let a;try{a=r.getTypeName()}catch{}a&&a!==\"Object\"&&a!==\"[object Object]\"&&(s.type=a);let n=r.getFunctionName();n&&(s.function=n);let c=r.getMethodName();return c&&n!==c&&(s.method=c),s}parseLine(e){let r=e&&e.match(Fht);if(!r)return null;let s=r[1]===\"new\",a=r[2],n=r[3],c=r[4],f=Number(r[5]),p=Number(r[6]),h=r[7],E=r[8],C=r[9],S=r[10]===\"native\",P=r[11]===\")\",I,R={};if(E&&(R.line=Number(E)),C&&(R.column=Number(C)),P&&h){let N=0;for(let U=h.length-1;U>0;U--)if(h.charAt(U)===\")\")N++;else if(h.charAt(U)===\"(\"&&h.charAt(U-1)===\" \"&&(N--,N===-1&&h.charAt(U-1)===\" \")){let W=h.slice(0,U-1);h=h.slice(U+1),a+=` (${W}`;break}}if(a){let N=a.match(Nht);N&&(a=N[1],I=N[2])}return N1e(R,h,this._cwd),s&&(R.constructor=!0),n&&(R.evalOrigin=n,R.evalLine=f,R.evalColumn=p,R.evalFile=c&&c.replace(/\\\\/g,\"/\")),S&&(R.native=!0),a&&(R.function=a),I&&a!==I&&(R.method=I),R}};function N1e(t,e,r){e&&(e=e.replace(/\\\\/g,\"/\"),e.startsWith(`${r}/`)&&(e=e.slice(r.length+1)),t.file=e)}function Rht(t){if(t.length===0)return[];let e=t.map(r=>Qht(r));return new RegExp(`[/\\\\\\\\]node_modules[/\\\\\\\\](?:${e.join(\"|\")})[/\\\\\\\\][^:]+:\\\\d+:\\\\d+`)}var Fht=new RegExp(\"^(?:\\\\s*at )?(?:(new) )?(?:(.*?) \\\\()?(?:eval at ([^ ]+) \\\\((.+?):(\\\\d+):(\\\\d+)\\\\), )?(?:(.+?):(\\\\d+):(\\\\d+)|(native))(\\\\)?)$\"),Nht=/^(.*?) \\[as (.*?)\\]$/;L1e.exports=PW});var _1e=_((azt,U1e)=>{\"use strict\";U1e.exports=(t,e)=>t.replace(/^\\t+/gm,r=>\" \".repeat(r.length*(e||2)))});var j1e=_((lzt,H1e)=>{\"use strict\";var Oht=_1e(),Lht=(t,e)=>{let r=[],s=t-e,a=t+e;for(let n=s;n<=a;n++)r.push(n);return r};H1e.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=Oht(t).split(/\\r?\\n/),!(e>t.length))return r={around:3,...r},Lht(e,r.around).filter(s=>t[s-1]!==void 0).map(s=>({line:s,value:t[s-1]}))}});var HF=_(rf=>{\"use strict\";var Mht=rf&&rf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Uht=rf&&rf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),_ht=rf&&rf.__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)&&Mht(e,t,r);return Uht(e,t),e},Hht=rf&&rf.__rest||function(t,e){var r={};for(var s in t)Object.prototype.hasOwnProperty.call(t,s)&&e.indexOf(s)<0&&(r[s]=t[s]);if(t!=null&&typeof Object.getOwnPropertySymbols==\"function\")for(var a=0,s=Object.getOwnPropertySymbols(t);a<s.length;a++)e.indexOf(s[a])<0&&Object.prototype.propertyIsEnumerable.call(t,s[a])&&(r[s[a]]=t[s[a]]);return r};Object.defineProperty(rf,\"__esModule\",{value:!0});var G1e=_ht(hn()),xW=G1e.forwardRef((t,e)=>{var{children:r}=t,s=Hht(t,[\"children\"]);let a=Object.assign(Object.assign({},s),{marginLeft:s.marginLeft||s.marginX||s.margin||0,marginRight:s.marginRight||s.marginX||s.margin||0,marginTop:s.marginTop||s.marginY||s.margin||0,marginBottom:s.marginBottom||s.marginY||s.margin||0,paddingLeft:s.paddingLeft||s.paddingX||s.padding||0,paddingRight:s.paddingRight||s.paddingX||s.padding||0,paddingTop:s.paddingTop||s.paddingY||s.padding||0,paddingBottom:s.paddingBottom||s.paddingY||s.padding||0});return G1e.default.createElement(\"ink-box\",{ref:e,style:a},r)});xW.displayName=\"Box\";xW.defaultProps={flexDirection:\"row\",flexGrow:0,flexShrink:1};rf.default=xW});var TW=_(nD=>{\"use strict\";var kW=nD&&nD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nD,\"__esModule\",{value:!0});var jht=kW(hn()),yw=kW(TE()),q1e=kW(AW()),QW=({color:t,backgroundColor:e,dimColor:r,bold:s,italic:a,underline:n,strikethrough:c,inverse:f,wrap:p,children:h})=>{if(h==null)return null;let E=C=>(r&&(C=yw.default.dim(C)),t&&(C=q1e.default(C,t,\"foreground\")),e&&(C=q1e.default(C,e,\"background\")),s&&(C=yw.default.bold(C)),a&&(C=yw.default.italic(C)),n&&(C=yw.default.underline(C)),c&&(C=yw.default.strikethrough(C)),f&&(C=yw.default.inverse(C)),C);return jht.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\",textWrap:p},internal_transform:E},h)};QW.displayName=\"Text\";QW.defaultProps={dimColor:!1,bold:!1,italic:!1,underline:!1,strikethrough:!1,wrap:\"wrap\"};nD.default=QW});var J1e=_(nf=>{\"use strict\";var Ght=nf&&nf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),qht=nf&&nf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Wht=nf&&nf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&Ght(e,t,r);return qht(e,t),e},iD=nf&&nf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nf,\"__esModule\",{value:!0});var W1e=Wht(Ie(\"fs\")),Qs=iD(hn()),Y1e=iD(M1e()),Yht=iD(j1e()),$p=iD(HF()),AA=iD(TW()),V1e=new Y1e.default({cwd:process.cwd(),internals:Y1e.default.nodeInternals()}),Vht=({error:t})=>{let e=t.stack?t.stack.split(`\n`).slice(1):void 0,r=e?V1e.parseLine(e[0]):void 0,s,a=0;if(r?.file&&r?.line&&W1e.existsSync(r.file)){let n=W1e.readFileSync(r.file,\"utf8\");if(s=Yht.default(n,r.line),s)for(let{line:c}of s)a=Math.max(a,String(c).length)}return Qs.default.createElement($p.default,{flexDirection:\"column\",padding:1},Qs.default.createElement($p.default,null,Qs.default.createElement(AA.default,{backgroundColor:\"red\",color:\"white\"},\" \",\"ERROR\",\" \"),Qs.default.createElement(AA.default,null,\" \",t.message)),r&&Qs.default.createElement($p.default,{marginTop:1},Qs.default.createElement(AA.default,{dimColor:!0},r.file,\":\",r.line,\":\",r.column)),r&&s&&Qs.default.createElement($p.default,{marginTop:1,flexDirection:\"column\"},s.map(({line:n,value:c})=>Qs.default.createElement($p.default,{key:n},Qs.default.createElement($p.default,{width:a+1},Qs.default.createElement(AA.default,{dimColor:n!==r.line,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},String(n).padStart(a,\" \"),\":\")),Qs.default.createElement(AA.default,{key:n,backgroundColor:n===r.line?\"red\":void 0,color:n===r.line?\"white\":void 0},\" \"+c)))),t.stack&&Qs.default.createElement($p.default,{marginTop:1,flexDirection:\"column\"},t.stack.split(`\n`).slice(1).map(n=>{let c=V1e.parseLine(n);return c?Qs.default.createElement($p.default,{key:n},Qs.default.createElement(AA.default,{dimColor:!0},\"- \"),Qs.default.createElement(AA.default,{dimColor:!0,bold:!0},c.function),Qs.default.createElement(AA.default,{dimColor:!0,color:\"gray\"},\" \",\"(\",c.file,\":\",c.line,\":\",c.column,\")\")):Qs.default.createElement($p.default,{key:n},Qs.default.createElement(AA.default,{dimColor:!0},\"- \"),Qs.default.createElement(AA.default,{dimColor:!0,bold:!0},n))})))};nf.default=Vht});var z1e=_(sf=>{\"use strict\";var Jht=sf&&sf.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Kht=sf&&sf.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),zht=sf&&sf.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&Jht(e,t,r);return Kht(e,t),e},Lm=sf&&sf.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sf,\"__esModule\",{value:!0});var Om=zht(hn()),K1e=Lm(F9()),Xht=Lm(IW()),Zht=Lm(wW()),$ht=Lm(vW()),e0t=Lm(DW()),t0t=Lm(_F()),r0t=Lm(J1e()),n0t=\"\t\",i0t=\"\\x1B[Z\",s0t=\"\\x1B\",jF=class extends Om.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===s0t&&this.state.activeFocusId&&this.setState({activeFocusId:void 0}),this.state.isFocusEnabled&&this.state.focusables.length>0&&(e===n0t&&this.focusNext(),e===i0t&&this.focusPrevious())},this.handleExit=e=>{this.isRawModeSupported()&&this.handleSetRawMode(!1),this.props.onExit(e)},this.enableFocus=()=>{this.setState({isFocusEnabled:!0})},this.disableFocus=()=>{this.setState({isFocusEnabled:!1})},this.focus=e=>{this.setState(r=>r.focusables.some(a=>a?.id===e)?{activeFocusId:e}:r)},this.focusNext=()=>{this.setState(e=>{var r;let s=(r=e.focusables[0])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findNextFocusable(e)||s}})},this.focusPrevious=()=>{this.setState(e=>{var r;let s=(r=e.focusables[e.focusables.length-1])===null||r===void 0?void 0:r.id;return{activeFocusId:this.findPreviousFocusable(e)||s}})},this.addFocusable=(e,{autoFocus:r})=>{this.setState(s=>{let a=s.activeFocusId;return!a&&r&&(a=e),{activeFocusId:a,focusables:[...s.focusables,{id:e,isActive:!0}]}})},this.removeFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.filter(s=>s.id!==e)}))},this.activateFocusable=e=>{this.setState(r=>({focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!0})}))},this.deactivateFocusable=e=>{this.setState(r=>({activeFocusId:r.activeFocusId===e?void 0:r.activeFocusId,focusables:r.focusables.map(s=>s.id!==e?s:{id:e,isActive:!1})}))},this.findNextFocusable=e=>{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s+1;a<e.focusables.length;a++)if(!((r=e.focusables[a])===null||r===void 0)&&r.isActive)return e.focusables[a].id},this.findPreviousFocusable=e=>{var r;let s=e.focusables.findIndex(a=>a.id===e.activeFocusId);for(let a=s-1;a>=0;a--)if(!((r=e.focusables[a])===null||r===void 0)&&r.isActive)return e.focusables[a].id}}static getDerivedStateFromError(e){return{error:e}}isRawModeSupported(){return this.props.stdin.isTTY}render(){return Om.default.createElement(Xht.default.Provider,{value:{exit:this.handleExit}},Om.default.createElement(Zht.default.Provider,{value:{stdin:this.props.stdin,setRawMode:this.handleSetRawMode,isRawModeSupported:this.isRawModeSupported(),internal_exitOnCtrlC:this.props.exitOnCtrlC}},Om.default.createElement($ht.default.Provider,{value:{stdout:this.props.stdout,write:this.props.writeToStdout}},Om.default.createElement(e0t.default.Provider,{value:{stderr:this.props.stderr,write:this.props.writeToStderr}},Om.default.createElement(t0t.default.Provider,{value:{activeId:this.state.activeFocusId,add:this.addFocusable,remove:this.removeFocusable,activate:this.activateFocusable,deactivate:this.deactivateFocusable,enableFocus:this.enableFocus,disableFocus:this.disableFocus,focusNext:this.focusNext,focusPrevious:this.focusPrevious,focus:this.focus}},this.state.error?Om.default.createElement(r0t.default,{error:this.state.error}):this.props.children)))))}componentDidMount(){K1e.default.hide(this.props.stdout)}componentWillUnmount(){K1e.default.show(this.props.stdout),this.isRawModeSupported()&&this.handleSetRawMode(!1)}componentDidCatch(e){this.handleExit(e)}};sf.default=jF;jF.displayName=\"InternalApp\"});var $1e=_(of=>{\"use strict\";var o0t=of&&of.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),a0t=of&&of.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),l0t=of&&of.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.hasOwnProperty.call(t,r)&&o0t(e,t,r);return a0t(e,t),e},af=of&&of.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(of,\"__esModule\",{value:!0});var c0t=af(hn()),X1e=WCe(),u0t=af(awe()),f0t=af(x9()),A0t=af(pwe()),p0t=af(gwe()),RW=af(a1e()),h0t=af(B1e()),g0t=af(R9()),d0t=af(b1e()),m0t=l0t(uW()),y0t=af(yW()),E0t=af(z1e()),Ew=process.env.CI===\"false\"?!1:A0t.default,Z1e=()=>{},FW=class{constructor(e){this.resolveExitPromise=()=>{},this.rejectExitPromise=()=>{},this.unsubscribeExit=()=>{},this.onRender=()=>{if(this.isUnmounted)return;let{output:r,outputHeight:s,staticOutput:a}=h0t.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(Ew){n&&this.options.stdout.write(a),this.lastOutput=r;return}if(n&&(this.fullStaticOutput+=a),s>=this.options.stdout.rows){this.options.stdout.write(f0t.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},p0t.default(this),this.options=e,this.rootNode=m0t.createNode(\"ink-root\"),this.rootNode.onRender=e.debug?this.onRender:X1e(this.onRender,32,{leading:!0,trailing:!0}),this.rootNode.onImmediateRender=this.onRender,this.log=u0t.default.create(e.stdout),this.throttledLog=e.debug?this.log:X1e(this.log,void 0,{leading:!0,trailing:!0}),this.isUnmounted=!1,this.lastOutput=\"\",this.fullStaticOutput=\"\",this.container=RW.default.createContainer(this.rootNode,0,!1,null),this.unsubscribeExit=g0t.default(this.unmount,{alwaysLast:!1}),e.patchConsole&&this.patchConsole(),Ew||(e.stdout.on(\"resize\",this.onRender),this.unsubscribeResize=()=>{e.stdout.off(\"resize\",this.onRender)})}render(e){let r=c0t.default.createElement(E0t.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);RW.default.updateContainer(r,this.container,null,Z1e)}writeToStdout(e){if(!this.isUnmounted){if(this.options.debug){this.options.stdout.write(e+this.fullStaticOutput+this.lastOutput);return}if(Ew){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(Ew){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(),Ew?this.options.stdout.write(this.lastOutput+`\n`):this.options.debug||this.log.done(),this.isUnmounted=!0,RW.default.updateContainer(null,this.container,null,Z1e),y0t.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(){!Ew&&!this.options.debug&&this.log.clear()}patchConsole(){this.options.debug||(this.restoreConsole=d0t.default((e,r)=>{e===\"stdout\"&&this.writeToStdout(r),e===\"stderr\"&&(r.startsWith(\"The above error occurred\")||this.writeToStderr(r))}))}};of.default=FW});var t2e=_(sD=>{\"use strict\";var e2e=sD&&sD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(sD,\"__esModule\",{value:!0});var I0t=e2e($1e()),GF=e2e(yW()),C0t=Ie(\"stream\"),w0t=(t,e)=>{let r=Object.assign({stdout:process.stdout,stdin:process.stdin,stderr:process.stderr,debug:!1,exitOnCtrlC:!0,patchConsole:!0},B0t(e)),s=v0t(r.stdout,()=>new I0t.default(r));return s.render(t),{rerender:s.render,unmount:()=>s.unmount(),waitUntilExit:s.waitUntilExit,cleanup:()=>GF.default.delete(r.stdout),clear:s.clear}};sD.default=w0t;var B0t=(t={})=>t instanceof C0t.Stream?{stdout:t,stdin:process.stdin}:t,v0t=(t,e)=>{let r;return GF.default.has(t)?r=GF.default.get(t):(r=e(),GF.default.set(t,r)),r}});var n2e=_(eh=>{\"use strict\";var S0t=eh&&eh.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r),Object.defineProperty(t,s,{enumerable:!0,get:function(){return e[r]}})}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),D0t=eh&&eh.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),b0t=eh&&eh.__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)&&S0t(e,t,r);return D0t(e,t),e};Object.defineProperty(eh,\"__esModule\",{value:!0});var oD=b0t(hn()),r2e=t=>{let{items:e,children:r,style:s}=t,[a,n]=oD.useState(0),c=oD.useMemo(()=>e.slice(a),[e,a]);oD.useLayoutEffect(()=>{n(e.length)},[e.length]);let f=c.map((h,E)=>r(h,a+E)),p=oD.useMemo(()=>Object.assign({position:\"absolute\",flexDirection:\"column\"},s),[s]);return oD.default.createElement(\"ink-box\",{internal_static:!0,style:p},f)};r2e.displayName=\"Static\";eh.default=r2e});var s2e=_(aD=>{\"use strict\";var P0t=aD&&aD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(aD,\"__esModule\",{value:!0});var x0t=P0t(hn()),i2e=({children:t,transform:e})=>t==null?null:x0t.default.createElement(\"ink-text\",{style:{flexGrow:0,flexShrink:1,flexDirection:\"row\"},internal_transform:e},t);i2e.displayName=\"Transform\";aD.default=i2e});var a2e=_(lD=>{\"use strict\";var k0t=lD&&lD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(lD,\"__esModule\",{value:!0});var Q0t=k0t(hn()),o2e=({count:t=1})=>Q0t.default.createElement(\"ink-text\",null,`\n`.repeat(t));o2e.displayName=\"Newline\";lD.default=o2e});var u2e=_(cD=>{\"use strict\";var l2e=cD&&cD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(cD,\"__esModule\",{value:!0});var T0t=l2e(hn()),R0t=l2e(HF()),c2e=()=>T0t.default.createElement(R0t.default,{flexGrow:1});c2e.displayName=\"Spacer\";cD.default=c2e});var qF=_(uD=>{\"use strict\";var F0t=uD&&uD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(uD,\"__esModule\",{value:!0});var N0t=hn(),O0t=F0t(wW()),L0t=()=>N0t.useContext(O0t.default);uD.default=L0t});var A2e=_(fD=>{\"use strict\";var M0t=fD&&fD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(fD,\"__esModule\",{value:!0});var f2e=hn(),U0t=M0t(qF()),_0t=(t,e={})=>{let{stdin:r,setRawMode:s,internal_exitOnCtrlC:a}=U0t.default();f2e.useEffect(()=>{if(e.isActive!==!1)return s(!0),()=>{s(!1)}},[e.isActive,s]),f2e.useEffect(()=>{if(e.isActive===!1)return;let n=c=>{let f=String(c),p={upArrow:f===\"\\x1B[A\",downArrow:f===\"\\x1B[B\",leftArrow:f===\"\\x1B[D\",rightArrow:f===\"\\x1B[C\",pageDown:f===\"\\x1B[6~\",pageUp:f===\"\\x1B[5~\",return:f===\"\\r\",escape:f===\"\\x1B\",ctrl:!1,shift:!1,tab:f===\"\t\"||f===\"\\x1B[Z\",backspace:f===\"\\b\",delete:f===\"\\x7F\"||f===\"\\x1B[3~\",meta:!1};f<=\"\u001a\"&&!p.return&&(f=String.fromCharCode(f.charCodeAt(0)+97-1),p.ctrl=!0),f.startsWith(\"\\x1B\")&&(f=f.slice(1),p.meta=!0);let h=f>=\"A\"&&f<=\"Z\",E=f>=\"\\u0410\"&&f<=\"\\u042F\";f.length===1&&(h||E)&&(p.shift=!0),p.tab&&f===\"[Z\"&&(p.shift=!0),(p.tab||p.backspace||p.delete)&&(f=\"\"),(!(f===\"c\"&&p.ctrl)||!a)&&t(f,p)};return r?.on(\"data\",n),()=>{r?.off(\"data\",n)}},[e.isActive,r,a,t])};fD.default=_0t});var p2e=_(AD=>{\"use strict\";var H0t=AD&&AD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(AD,\"__esModule\",{value:!0});var j0t=hn(),G0t=H0t(IW()),q0t=()=>j0t.useContext(G0t.default);AD.default=q0t});var h2e=_(pD=>{\"use strict\";var W0t=pD&&pD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pD,\"__esModule\",{value:!0});var Y0t=hn(),V0t=W0t(vW()),J0t=()=>Y0t.useContext(V0t.default);pD.default=J0t});var g2e=_(hD=>{\"use strict\";var K0t=hD&&hD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hD,\"__esModule\",{value:!0});var z0t=hn(),X0t=K0t(DW()),Z0t=()=>z0t.useContext(X0t.default);hD.default=Z0t});var m2e=_(dD=>{\"use strict\";var d2e=dD&&dD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(dD,\"__esModule\",{value:!0});var gD=hn(),$0t=d2e(_F()),egt=d2e(qF()),tgt=({isActive:t=!0,autoFocus:e=!1,id:r}={})=>{let{isRawModeSupported:s,setRawMode:a}=egt.default(),{activeId:n,add:c,remove:f,activate:p,deactivate:h,focus:E}=gD.useContext($0t.default),C=gD.useMemo(()=>r??Math.random().toString().slice(2,7),[r]);return gD.useEffect(()=>(c(C,{autoFocus:e}),()=>{f(C)}),[C,e]),gD.useEffect(()=>{t?p(C):h(C)},[t,C]),gD.useEffect(()=>{if(!(!s||!t))return a(!0),()=>{a(!1)}},[t]),{isFocused:!!C&&n===C,focus:E}};dD.default=tgt});var y2e=_(mD=>{\"use strict\";var rgt=mD&&mD.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(mD,\"__esModule\",{value:!0});var ngt=hn(),igt=rgt(_F()),sgt=()=>{let t=ngt.useContext(igt.default);return{enableFocus:t.enableFocus,disableFocus:t.disableFocus,focusNext:t.focusNext,focusPrevious:t.focusPrevious,focus:t.focus}};mD.default=sgt});var E2e=_(NW=>{\"use strict\";Object.defineProperty(NW,\"__esModule\",{value:!0});NW.default=t=>{var e,r,s,a;return{width:(r=(e=t.yogaNode)===null||e===void 0?void 0:e.getComputedWidth())!==null&&r!==void 0?r:0,height:(a=(s=t.yogaNode)===null||s===void 0?void 0:s.getComputedHeight())!==null&&a!==void 0?a:0}}});var Wc=_(mo=>{\"use strict\";Object.defineProperty(mo,\"__esModule\",{value:!0});var ogt=t2e();Object.defineProperty(mo,\"render\",{enumerable:!0,get:function(){return ogt.default}});var agt=HF();Object.defineProperty(mo,\"Box\",{enumerable:!0,get:function(){return agt.default}});var lgt=TW();Object.defineProperty(mo,\"Text\",{enumerable:!0,get:function(){return lgt.default}});var cgt=n2e();Object.defineProperty(mo,\"Static\",{enumerable:!0,get:function(){return cgt.default}});var ugt=s2e();Object.defineProperty(mo,\"Transform\",{enumerable:!0,get:function(){return ugt.default}});var fgt=a2e();Object.defineProperty(mo,\"Newline\",{enumerable:!0,get:function(){return fgt.default}});var Agt=u2e();Object.defineProperty(mo,\"Spacer\",{enumerable:!0,get:function(){return Agt.default}});var pgt=A2e();Object.defineProperty(mo,\"useInput\",{enumerable:!0,get:function(){return pgt.default}});var hgt=p2e();Object.defineProperty(mo,\"useApp\",{enumerable:!0,get:function(){return hgt.default}});var ggt=qF();Object.defineProperty(mo,\"useStdin\",{enumerable:!0,get:function(){return ggt.default}});var dgt=h2e();Object.defineProperty(mo,\"useStdout\",{enumerable:!0,get:function(){return dgt.default}});var mgt=g2e();Object.defineProperty(mo,\"useStderr\",{enumerable:!0,get:function(){return mgt.default}});var ygt=m2e();Object.defineProperty(mo,\"useFocus\",{enumerable:!0,get:function(){return ygt.default}});var Egt=y2e();Object.defineProperty(mo,\"useFocusManager\",{enumerable:!0,get:function(){return Egt.default}});var Igt=E2e();Object.defineProperty(mo,\"measureElement\",{enumerable:!0,get:function(){return Igt.default}})});var LW={};Vt(LW,{Gem:()=>OW});var I2e,Mm,OW,WF=Xe(()=>{I2e=ut(Wc()),Mm=ut(hn()),OW=(0,Mm.memo)(({active:t})=>{let e=(0,Mm.useMemo)(()=>t?\"\\u25C9\":\"\\u25EF\",[t]),r=(0,Mm.useMemo)(()=>t?\"green\":\"yellow\",[t]);return Mm.default.createElement(I2e.Text,{color:r},e)})});var w2e={};Vt(w2e,{useKeypress:()=>Um});function Um({active:t},e,r){let{stdin:s}=(0,C2e.useStdin)(),a=(0,YF.useCallback)((n,c)=>e(n,c),r);(0,YF.useEffect)(()=>{if(!(!t||!s))return s.on(\"keypress\",a),()=>{s.off(\"keypress\",a)}},[t,a,s])}var C2e,YF,yD=Xe(()=>{C2e=ut(Wc()),YF=ut(hn())});var v2e={};Vt(v2e,{FocusRequest:()=>B2e,useFocusRequest:()=>MW});var B2e,MW,UW=Xe(()=>{yD();B2e=(r=>(r.BEFORE=\"before\",r.AFTER=\"after\",r))(B2e||{}),MW=function({active:t},e,r){Um({active:t},(s,a)=>{a.name===\"tab\"&&(a.shift?e(\"before\"):e(\"after\"))},r)}});var S2e={};Vt(S2e,{useListInput:()=>ED});var ED,VF=Xe(()=>{yD();ED=function(t,e,{active:r,minus:s,plus:a,set:n,loop:c=!0}){Um({active:r},(f,p)=>{let h=e.indexOf(t);switch(p.name){case s:{let E=h-1;if(c){n(e[(e.length+E)%e.length]);return}if(E<0)return;n(e[E])}break;case a:{let E=h+1;if(c){n(e[E%e.length]);return}if(E>=e.length)return;n(e[E])}break}},[e,t,a,n,c])}});var JF={};Vt(JF,{ScrollableItems:()=>Cgt});var eg,dl,Cgt,KF=Xe(()=>{eg=ut(Wc()),dl=ut(hn());UW();VF();Cgt=({active:t=!0,children:e=[],radius:r=10,size:s=1,loop:a=!0,onFocusRequest:n,willReachEnd:c})=>{let f=N=>{if(N.key===null)throw new Error(\"Expected all children to have a key\");return N.key},p=dl.default.Children.map(e,N=>f(N)),h=p[0],[E,C]=(0,dl.useState)(h),S=p.indexOf(E);(0,dl.useEffect)(()=>{p.includes(E)||C(h)},[e]),(0,dl.useEffect)(()=>{c&&S>=p.length-2&&c()},[S]),MW({active:t&&!!n},N=>{n?.(N)},[n]),ED(E,p,{active:t,minus:\"up\",plus:\"down\",set:C,loop:a});let P=S-r,I=S+r;I>p.length&&(P-=I-p.length,I=p.length),P<0&&(I+=-P,P=0),I>=p.length&&(I=p.length-1);let R=[];for(let N=P;N<=I;++N){let U=p[N],W=t&&U===E;R.push(dl.default.createElement(eg.Box,{key:U,height:s},dl.default.createElement(eg.Box,{marginLeft:1,marginRight:1},dl.default.createElement(eg.Text,null,W?dl.default.createElement(eg.Text,{color:\"cyan\",bold:!0},\">\"):\" \")),dl.default.createElement(eg.Box,null,dl.default.cloneElement(e[N],{active:W}))))}return dl.default.createElement(eg.Box,{flexDirection:\"column\",width:\"100%\"},R)}});var D2e,th,b2e,_W,P2e,HW=Xe(()=>{D2e=ut(Wc()),th=ut(hn()),b2e=Ie(\"readline\"),_W=th.default.createContext(null),P2e=({children:t})=>{let{stdin:e,setRawMode:r}=(0,D2e.useStdin)();(0,th.useEffect)(()=>{r&&r(!0),e&&(0,b2e.emitKeypressEvents)(e)},[e,r]);let[s,a]=(0,th.useState)(new Map),n=(0,th.useMemo)(()=>({getAll:()=>s,get:c=>s.get(c),set:(c,f)=>a(new Map([...s,[c,f]]))}),[s,a]);return th.default.createElement(_W.Provider,{value:n,children:t})}});var jW={};Vt(jW,{useMinistore:()=>wgt});function wgt(t,e){let r=(0,zF.useContext)(_W);if(r===null)throw new Error(\"Expected this hook to run with a ministore context attached\");if(typeof t>\"u\")return r.getAll();let s=(0,zF.useCallback)(n=>{r.set(t,n)},[t,r.set]),a=r.get(t);return typeof a>\"u\"&&(a=e),[a,s]}var zF,GW=Xe(()=>{zF=ut(hn());HW()});var ZF={};Vt(ZF,{renderForm:()=>Bgt});async function Bgt(t,e,{stdin:r,stdout:s,stderr:a}){let n,c=p=>{let{exit:h}=(0,XF.useApp)();Um({active:!0},(E,C)=>{C.name===\"return\"&&(n=p,h())},[h,p])},{waitUntilExit:f}=(0,XF.render)(qW.default.createElement(P2e,null,qW.default.createElement(t,{...e,useSubmit:c})),{stdin:r,stdout:s,stderr:a});return await f(),n}var XF,qW,$F=Xe(()=>{XF=ut(Wc()),qW=ut(hn());HW();yD()});var T2e=_(ID=>{\"use strict\";Object.defineProperty(ID,\"__esModule\",{value:!0});ID.UncontrolledTextInput=void 0;var k2e=hn(),WW=hn(),x2e=Wc(),_m=TE(),Q2e=({value:t,placeholder:e=\"\",focus:r=!0,mask:s,highlightPastedText:a=!1,showCursor:n=!0,onChange:c,onSubmit:f})=>{let[{cursorOffset:p,cursorWidth:h},E]=WW.useState({cursorOffset:(t||\"\").length,cursorWidth:0});WW.useEffect(()=>{E(R=>{if(!r||!n)return R;let N=t||\"\";return R.cursorOffset>N.length-1?{cursorOffset:N.length,cursorWidth:0}:R})},[t,r,n]);let C=a?h:0,S=s?s.repeat(t.length):t,P=S,I=e?_m.grey(e):void 0;if(n&&r){I=e.length>0?_m.inverse(e[0])+_m.grey(e.slice(1)):_m.inverse(\" \"),P=S.length>0?\"\":_m.inverse(\" \");let R=0;for(let N of S)R>=p-C&&R<=p?P+=_m.inverse(N):P+=N,R++;S.length>0&&p===S.length&&(P+=_m.inverse(\" \"))}return x2e.useInput((R,N)=>{if(N.upArrow||N.downArrow||N.ctrl&&R===\"c\"||N.tab||N.shift&&N.tab)return;if(N.return){f&&f(t);return}let U=p,W=t,ee=0;N.leftArrow?n&&U--:N.rightArrow?n&&U++:N.backspace||N.delete?p>0&&(W=t.slice(0,p-1)+t.slice(p,t.length),U--):(W=t.slice(0,p)+R+t.slice(p,t.length),U+=R.length,R.length>1&&(ee=R.length)),p<0&&(U=0),p>t.length&&(U=t.length),E({cursorOffset:U,cursorWidth:ee}),W!==t&&c(W)},{isActive:r}),k2e.createElement(x2e.Text,null,e?S.length>0?P:I:P)};ID.default=Q2e;ID.UncontrolledTextInput=({initialValue:t=\"\",...e})=>{let[r,s]=WW.useState(t);return k2e.createElement(Q2e,Object.assign({},e,{value:r,onChange:s}))}});var N2e={};Vt(N2e,{Pad:()=>YW});var R2e,F2e,YW,VW=Xe(()=>{R2e=ut(Wc()),F2e=ut(hn()),YW=({length:t,active:e})=>{if(t===0)return null;let r=t>1?` ${\"-\".repeat(t-1)}`:\" \";return F2e.default.createElement(R2e.Text,{dimColor:!e},r)}});var O2e={};Vt(O2e,{ItemOptions:()=>vgt});var wD,tg,vgt,L2e=Xe(()=>{wD=ut(Wc()),tg=ut(hn());VF();WF();VW();vgt=function({active:t,skewer:e,options:r,value:s,onChange:a,sizes:n=[]}){let c=r.filter(({label:p})=>!!p).map(({value:p})=>p),f=r.findIndex(p=>p.value===s&&p.label!=\"\");return ED(s,c,{active:t,minus:\"left\",plus:\"right\",set:a}),tg.default.createElement(tg.default.Fragment,null,r.map(({label:p},h)=>{let E=h===f,C=n[h]-1||0,S=p.replace(/[\\u001b\\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g,\"\"),P=Math.max(0,C-S.length-2);return p?tg.default.createElement(wD.Box,{key:p,width:C,marginLeft:1},tg.default.createElement(wD.Text,{wrap:\"truncate\"},tg.default.createElement(OW,{active:E}),\" \",p),e?tg.default.createElement(YW,{active:t,length:P}):null):tg.default.createElement(wD.Box,{key:`spacer-${h}`,width:C,marginLeft:1})}))}});var Z2e=_((AZt,X2e)=>{var iY;X2e.exports=()=>(typeof iY>\"u\"&&(iY=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"WzmldgG9bVwKtw2AiKrr15/TXjBi3O6p4GPsCmiaKasTbJt2D+y21UTTKAOXMxqqqpq6VIbMhM6nhTJgV91V/5cFDwSquCGpJ1XeWdjhTo079eGQs7AbMhPpEM0oNVKxWVSokGh1zUG1OJFHO+BouYdnwZE6MKWCZkTDEH/XOa63elQXHNewNtw3eZjOST/PFzqE15siLy8+9Pwl5wiSrGtqcy24yMtDbvbtnc6+SKLjQeHW8wsYF3HDH+mfwvahWfT13uhuqPbHARtcHABFCLFV+2AucYtH5HCfSPg0sVm+8ec1x5FggZBS6voI6fWF2RVXSgNifmuv/0ZNERTIsq4D3OVL3+xRCpTLpvbP52V0hXXqrhAMQ4qu15dSVmBI5AI7MVyT5/xv7+y/vukaU4ZnwuRwn4hn5d1As6UWYtXwXrV3/8ukdDu1OBMnIX+eJdAD2VdSuCm1+OVPq69f7e4FqJG5kPElJgbGGzLYDUyQHqruJlZh6vo3RK1FGymt7PHYsbWoLS3rsaf082OnA+jOWmb/+bwqd7VSdI672R2EYdi150KDcyLkJqaMO2bdiMKjEC1EbLN/SYfNIigs/ljpTlHV2m+ZhJtS9HWsba2FjgiYLuJDsvCvAPH9dDquCbfjlVUCu/qbvnTPDhYcX8D/1vx3uf3vkuYSnHgwBe0gu5bhtftLM/75W/n1+yZ31ybrQIXW8RNlQ40yb4Isl5Xga37U0P3x4EFs4//p8b3ZWRgCtEskmt7S9DtgVJoS3eT78Y2t46GDVLZrxzefAcfEeiAV3QxzMHfDxN0vDWw3R0OYgB9g+F5tVpaAbp+/dwM4x3V8PMeWYikddFcklIfn893+h4P7+eGT6To7SbNDS5tClDqDoifApehFX1SCp3q3jof9Bc1iPFbPdJIBRvehUcINBn1AgKjRbdCPfjT/6fNjd/dO1OSZz1PV1U0xgBbYKPM3Ya4FQR1vmASNHxabfzx4MEV/vz2+mUyyARbMhoD0hrbOhoiotl0ihGimlcWndUjlAMTuQZl2LhVBiM53foq69kP7z1/U0MZPaKKVd9KCFYh/SfIq0TVhqkIQLN203o/eVWAGCUYBfeGfZfEVqL154YYXt4BjyO/fN812PYeUt9kalyRymKXWuSBSkqGr7n1F/N/9e4gGmmQD4GhBM4YamXEy7lW912B3A9QBMGYBWc7IGBOtMSZINgpWSbpZpJls1/9/39LPFMS3mUJNpKUklaeTMSYItXL0uWe/Pexy89Ho5hIBkmOsufucc19VV1Xjo5v4f9GNcSaWS10YKVeaNMCR85ks2vv9z37IEml/UCSn4ZypWz8TslLY7a7uqY0XskNhlJnZJdwn/9/3pvm1Pfe9RCJBVLFAVn0JlL7h9+JXG7/tBEjpy7dx1XbXPWax+rz3nHtH7977spXvZaKV+V4ihHyZCCETZDQyE5ggDPMlACqBYtWApfo9KEr6wdJXR7Ak/Q5+6wogK0IsliJEsqpNSW2lsW41EdXGuN2PXs2flY19Gz/WrHo/u9nsZ72Y3SyXvVrOYjn/v00/23sf3Ddr2SPvfm3IDkFJRfMGbA6xiy5F9TXvzhxbM6M9sfzJsICkkeS17O+/DAGgGqlOmTJlSmw6wKpNl5Nqef7/j286sw/cWU8H5a4BGvNP3y9Qln1BBwPNtATCMINEApJEPPi+bnw7E3zFt7Z23y7ixMITTQIMNLD0vFB41eZwKoP+4Up1d+blBjlu0giFPH9zY8Ai2FNrWOGq1qzZLLOmj9BIhDE0G8L3q0osCmHIdU94WKarShKoBM7Qkopuv6w/D3o+/yfa0FtSb/Tea2UgA4kYRZQIYqyqas1aq2oUDUHveH8O4Wb931Ckh4TnXYEWQkyIAyEEleItjSCBtL7avv8dwW3spuaDXOkP0i3FLOhBc8V5FQww6HZB8AIT3E77h3Hv/P47dChYJEORiEEyBMzQIUPBgh063FCwQ4QbDvx8TV3P8/7dcwDpf8GCgAUBURVVAQZRZVUBVhXgSgEDrPcMDAzW1y3++f68m3xhr7hiBGLECASCZBFkg6hAVCAqEBUV3aTiZIOfrvrnvXMfzbIPGNBgQIMGBg0MrMjAwIospYCVGBg4kkF9qcCJdECBzjI8udm3JLZPkf/vLokF+hRgGgLDUAZQWleQVlUsEDdxr/Qpr0Qz2KZVZSfakAoBSsVsIv75RyhLwskA2/z/f+4au5ue/TxlT8IA0YmiTsHCyM0KjFkzcOlO/N+AxIs0Qfk9UFbArxp5km5W0QGc0HcqMcqgr+LK1I9eBf0Mmq/see0jsOJUuMguhCcf+1qd+5ZW75op4YvuCvoZ9Jj94rYKMTJNQjj2TXYPHb6XqZCwVlMG3jzbrKbWNutghn285871s3z5OEWrdwShnykkrOX+OfRknEF8d4xTQF80BLuriePXfUin0EnlXaA1eNGKMosEvfhya6R7WCQf+EQ5EQ3MNg3OGqqvGBFgVow+kkJiUrJXErBuR/NebYx4hta6H71fm7wuNmRaqkFcDjw7WbcM+rWA0S74PWtIhrSuAjWS1gOShuV27spkClYmhyA8lTySmUw0X8s/qFJvh2M3unws/vt6xtZaOQP/oEXE/J84i/3KJFoQ3AbCIqDUPFRdnsdAEiVziRyt11wyQAXJ7R9XP+F0sBe/77vvAAz6v+xaH/5Hv+SNxO9bZp1ePsXufZsFjvMnxXIm68xedh66UB45jl0V/50kJJYLIrxsukPBKJP0UccI+Hi8ky4Sy6VEvpMEMzwVqcFOkvZUfJqws2SBI0oPdpIaFFmS8TZqzSnX/uQrppF6wVxIpPgGll58oeL8Bo6V9cLCy03UTpzbkNHXmy3QV4tc1T9ZCiLZmXZXnXDCeHz/HJrOAgoiHAh8er+prR5YLci9jZwN4Pll5pfJey1GLJZz29QwjO7X9XK32nGg5VlqGWZ4Tkb4nsHSWahv9wJWIkbO3jDD7N7GQuA4bLbAN4l4gzIQAIwAox3MXdKQoZbKJ7eDlIOaRa4nq6B6jaHvHGuTXxwLcg8BRtSrh64NUXLnKnYCqY98cj2RhpgDsY9cgek8crLgOlmQC1v2dvU7QFWf9fxVA4wAqi4uI2GIWRv55FSyAc0iGrGhCV4IxU6MDacoDn0z9mmBVtGcQCbjS324rqV3Vpr6JG1t7dIsicL2utKK6dWBdj/1ROr/BU/WfvNYQteeTtAMubmB9AWes7kx5Wzd+H7hDJGM/uEAg3+lVghwpxzaOCguWf14LKU0mN139UeteCV4LCwHg8YX5Z93VZdoS0R9FjFDo4Rceown4BlgktP4Gg4a01s4/UgXTW/pYmLP9pbA/yjVr/PgtCA0/cuX5F36sJST0SekTuAmIgsjTLxKPgialVgEOycyamJ6s8YnoRWdtV69MDjNedux5M3CNiP3yWRvs9gpo012zrbfpTh/UwrvDqwqjGG76nblzJ1z9CWFl8EU1e/1TM0SY4TPyj4BgYRg31sNKQJUQxRSLUQiBF5Fe8WoopLTehXXr+L6VV6/9Po5KZJkH6IphhRRqiWu7owgURdk4tDsCEWX5p55EQZjiPwOwhhx+vGO4FZsRxz/z3AE62wgzq9HUIv1/szhoq/5a+MvFnp7MF9u1VduvVVpulrK/Pc5qWhygvCM8Ic7yO3QEE8Jc6Ne/uF+GHfOlsD3Wrm8rq67uzV3JJvoS14x27UrCT0i72U8DR+9V8P5j3FVjcPIepDhTufUi+SJImciDRVUj1GU6rU8X3VA4TlCLTEsRz9Ym/3wDGpvontKrI72sDSE509JQ4ysoIBmq6VVp8pCQiIvKUWz0X1UkubO1WZMLiM9+/ldJRiHGxlFdNrt1uNpR58fluHK5CictBrz6QYzm1DJf97krboSsqsDRisIu1pvN5ViEtvYMhzUnw4PH1R4Qb1qbGR7uKZO9fV8ZPAGI3NSyCqmfF+N9ZIqktqqvUTgRbUI4JybOCKYanylLN1wGtzUeH1Bb+TMeCpczNVJgQb1lpnLE+BFPWB5OSHTnQry2bvh8gj15FDwg4T8WG/JR8TTbFryA4Sfq6GZOdreyAzmiW2qq+FHFP9lfbBG9TOuA3ijk8Wwxttdp7sgbAZF8mZ5iXa6bYl4mtEyKSNBw2oy7vWj1Vyk5V71b1v+JDWVXZNuY7VWjDb9fErQqikGyzh2U8WvRHrJEknolZ09n/ovBSZeA63IVPTWvh6AihgPYe5prt1emr5/VNIPqazqNds34ONK7vSK7Rd6sL5Y/LysFW5yUBT+cGQbT/ZcJn32REu6jbplO/eretn7Hek3l4jxuWQCZyIoYyYkUBpPwSJNbl7IfwvWJHisYH/QKK3OJ1PihvsMW/2zduAk4x6m5+WB2F81uUYtYb5FJr0Oyppsdsh6p7d8sTJeUZoTHf+VvdESxeZhMZZi2syxaUNKDckoRr3XlfAG78FSOjCaj+aR9DFCRWtZShIeriaBbhz80F1CmF7X8u5/WqGfTRbTJclVYXmpwdeOQDcW8cthOaSXBwjm1aRWfYklfy6JyYaEO41XWYWyDmVEOO6TWIpgsn7w+/YEn45AG1r242i0gPpZb82uxPv/2XYzR4CSezjvTj8efeNVMFFI82OfLxlBijcP0GVFgiKX2Az5ljJ0QUCJfzmokD4FRqPfUhBBMWe6svtfql2NpqTOlWdfGAxL8zFnqVb2M012IDs1qJSqxRyZUlkjpkazpFB//K9e0PinG/X9v+aBvJT9o3Pv/Or26er0brYKyhT2E/rJ0eFvi/r+rv5SolLjE+n7OZXOaynWoti4wJbqsXXrn6kMqsCu0TdfxXftlNBnkgoxpX4Ai96ThXmaVAliWBFQuk4VOWYZa0YLIRaZz30GMzTyUEWJSqmmdpbjay0bkMaEb4Mtn5BvjKHCNsFc1XsyFl2Z1aqQLmY2QXdH1a3ogmjT4uF0LgIw7dCdio1eonRogRUEaTEWB5mxGKWhVmntjOqEyBTxNDL9GBtV0WlISmRtXwSIM4yKEA9eJIo5LGpFYW1upPDpqMoJi/doIsY3yWIpfj7xTE+D5mshpnElIDRMlmJvBrqLw/oezdXReWyY5zoYT1YufC1fZEW9pi4oaeaQWr9yUdlkXkJlYSqd6FyNSdbJ4K4x6OeX7eCKlfrOaCOp/ElKPNorOPeF9TD9eTHztnMrGeUGiRuCgA/rOmQIlWGWt+6jFI+4yNmxq86Lc3hNyCFljGYYgI0agjCZ49uMhUcGNOgCayjSc7AM9g8tEwPb8rCSFG6UvBO71WJTnXSUYZhqmtn918A0qfhO1yZCwxq7pHgvKYVg5kB9D2pz47jHUKXa3rI8j7gr1Tqknb4d9QFOyjOfMaOs5vCWpe87VF6fZMaLgYmUC90bSyhk74+k6CfvF9lciO4PqUe/wV4MrLlVUrdLwDhE+4g8WPpZFIoyu5B4Z02Yt9MNASGzjaqtVkd4R0Z1slBr6hV2/WqSg5X6vVQJA8WtA0msjtnNJVZtFZZkB2NEEiQjpFVtpmxUP6j1JOcr9d90KxYDbONpJK9whCyjfTIUwbrWqdkslp2JGvlmmW8zd+adLsywpErFm3PJog7WtFt4Ptk1lIoLZzsikuZ6son7tbgdyVvvWOrLnuCSmbWvMc+forl/ABu88b8f1ja0GJN+NEfk44GiriweW8hmtxxxavWRu07+NtvozokuZTU8Y6agyUyWeuTlGy12I5TMxd02onzFUiSbfrQGN/PfOEBpaopGXTBH8or9y3iuKvQFJ2DsLsBCSdBj9dkllfqzeepgJAOOjAYLd6ZVhCPupRimrZ54LUyZNnk3czOh2NRFV+2kcGfjeKccL5OaKp/+diQvL/RHrg+QoRDC95wbJXsTQ4jqhixBJ98KXzzUUrOgEHPxBGtLIWGx6J8qpO5rNgGFHgL48pooA0J0P0t+RsEYhQpKpc9dhaVQVtAh2whXL6FxldoZxAlmBmOp6xsABasN84zlhhdrx56loBTp5PP/48pulvxmYFcl88AgCkO/HOu4AZOsPlMG1/z21oibCrILJFusUUMbt3A3ejzakQ6gFLM82ZE+RTIFTnkSVjS8hws0ykUp6qRHUJM+8zGUzEhdOuShPlMplKxd28o2Izs+iq+blcloK1/q4GcX1WALGHCFZTeFGu9F3Xn9hsubvkTbz2hwcutuGPMzh0Is/+DK1YAnOcWxM0CngtIuKUNkaTiC7ScqLOOU/fXsbmykufFG5ZDkCdDp9yQ3RnIzJGSTSZfihq0HBidy8hdWxe36095pwgPx2Vj/9N6U+IWT9tqODy7KAXWmK/fslktPJhSXtNe3AqXvQ8Z+N38yuGoBPQuzRDR9iMa1cizoLTJ6XMuqr5xOm0ONYpYA7yxcw0mPXRpekmZp8bPlVFkH89jtjlsXmEM2MTz7urFF6RbevmqUHArVlUxu4YsPwBpL+/tGqyZOET/FvD1iUCeD0Zf6mLAh5fN1WWyQtmOI9gxhoAP26VNNwU3xe1H9NszbSnefpJemacA5psg5ACs6AEVBdXU5AWbg58VMv1vgCebXbCnxdLxWDjcf2UH4pcass5pKqKALi0iL830ZllHFePsL15XEujuJwk8aZxY7szFY3ONwI28H+S9PIH+wIvWROFKOmNB+ZCSD9tmUzCXmFSt4YRvEOdjWQvDdNkuUb832W+r/Z/swaHYudI6WbYXqjWPQhyl673Lie+/jZCtUtwk0OLJ7Pi0jTH57E1voliImhSjyG8vRC2hMfFpeXKJ3m1Y5uWbduvgM0ZPQdMBCrMzQaX7EEdm60AU+taUWGukV+hExLgUCBfnF64fBhI5y3lKNHIk4xZt2zOV5Sh75aHgKlZaTrTrDf/MDEfKpq7ueGzHCiG7tVFfUVWasaCFDWNc6L2JcOLmaamawVKST7ILiJ4M5UCxOtlr1PS7o5MOnE12lS6E+zyliVkHAwXSzoLpjR18dto+Fj9dhdeb1XXyp9zjWZrHfJN69NCajWaDTqUW3KRP1te2PgGjrtOusMxeh4l61ZZWrLsbirsl/Muq+rL+fazFc4sFxpDI/f5LaDOAL4CEZTLEFkD0PmMLT1UYqZtxOyBp5dknE4pJE3QEqFubBFHLzfXTs0iVyJkxjOLRJtU/y9ECtBLj4Ci/QNnrn6GVjWSep5rBvUHzInC5hPN6fHugOhbU2bv/7ElawutTG+03PFTU/acQUY9aL0sf/PxR9TGPtufInh8t1Yu4HM/7lLT+qXIPXjwvomTro+jORQ4mU5iHNsCxgzBlXl4t+3GLxh7nW3LCGbt66lrugm9twA3ooI3aiY0qan1nl2tXGJXlw5SbQq0cemg/SWuXIRM41cz3zWZ+/iJfppWI6jFlagPF/EjIRbMQfHwCVacXu2zjGDs/NOxoiF3AL1h6uupVGGsNyP0HCpj/qpqC8HK5ag/moKN9g4KoA+A8XEyFMokQmysfSEJdURKvWjc5YccPQd0mTUJtHKJHqjMxs293a3IEDuNs/a21eVRsHlznTC7z84L/xXr4cfjrpzsYv6TI1Ppcs3/offPI3Iw7ooyfXmVfehwbRVTjLhov3nnN2azUkzeW+s77dt+UOPb1Y48fpNlc/3O/COx25vYfahSBbb+4NlO/BmlSP6vO46QxfLrhIhtPv8IJhHw6z7JDd/IhgcBcJ2XHY4j46PILdJtjw28/DF64RuMqfIjNtvunMGMujhA9G6BDBaT7ojNyVkLkbGEMag6jCXsM7dL6X1NMLfVMATNZobijsTo0S/jFPZypmmy9uy1tPism4N2rNih8tUNK34z0zCx57iAguMmFwvpTzYxNdB2UZyyZh1/y57PAeSLV1MMg2qQzcL3unqMxUGW6f/2uvX8TyC78KZ+ZHWabSR+hDsKyoOqXSe+iP9r9fBKAsYnmVhhTuNNFCZvJQr3VK7hUpGuMQkphh7apDJN+Nh225pggazJwxcDbZkQ2Jr/HpPiXzQLIX2hV/OKpjEhzPYcIoRZMr2/vGx0mPGUes62mv6VRxHr2aP/ZQv0uiO2laHzDvfl80ceQO18GiXV0PeHIOvwu1ssWdeHrSLWad2fHNeFu8/OGKxrkdX5v7LH/fHgPXwQbpHX3qeyL9Z+SI21/DjWpumVyMCcqkqpOyHKYgi/kq6lqGYHe6o7WAUHKnQ1b4DBRaT0aN6vRtSjUbNCYuCiTV+X4mLsQZUvHQ/Gur9QTZ+bKZTtLtKTMeNSuMpB4jELTcWimnR9jNJwN4h/jAvZ/gXvTUwFRpJaHyo1xPTEaozShJXF6ocIV8j3/+YB81zOUdtbmT72Zf58nEN27WEyI6VgfnTMYNJFfHi2s8+Saq0rxFfxjMlLWsfveuzD8HZK2dEGNIFYODEvoJYtcl3BxANyQSNG0qgsm1GYM7w2MFGrXhH9xB+GJ1zPloO+Ct32tW/Za1WuhVPA63WhtLzmw10I6QNhUAjZntgPKfFmmdURTZ7UoAeyWBw0Y6XP9SWfSshHDM+xmDfWgAZg2cg51uyLSF6GDkDb8kuN2L0TE+m9pYfs48IM4yKbsC0CAv886A9X+m9lu382jsz5tpPSfhRp60F1+Vq65UZM4qkUatyWO+lpv/mjL5SZtFkDJPdDcEjcHDMd+vrobLqVaEk/XUMFoz6UVtGgkHqNJmMkf+Kd2h1CMzVQ8F7EfBxrQJYjUeB1FgenkyX8VpA5XZJUfKytonVKWVMTsJjY0AduI3gGS5cA6ya2NZsnqqHo111YTRLNxmo+CIj7S3r9OcXrTWOFZJr6B7TO5qLmIIzq0mlJ4DJHM6AGaV0eSvnZYxDCGoqENW6m/Ervu2ktAzV+A6mLWVE8EUjylqZZbSYinNuW0IuIq5L1wBYqr4Bgh27AoWvd3wrbaIdanf0tE73tx3mhDpul1aS6Km7+8OfUyNAo5lwyZEu6z33BGd6tYOfPvVugKsC7lyByPf4iF2xEdM+yJia2shELvLM4FIpxHBndiyH/s65AHPu2/GNTbCdelVRCvucl5yufVMvpx76fvpyL4qS4x5GDd/Dkf7OphM6oBsbtH4GSD0k/9meDeaG8qkA2tYCBBf8CnzXNIhqn/K8zcrL250wlnsvyDCU6/zH4yn40eb/3zrMv+lfvcZb4ax0+PpMEUGt5y6XPt9TdAF2on3UEJkxgTvS/vIUi+JIyJ1040pk+SU70ddIq5/LMGZR9yY2+B6QWPS3+OyEDlZ6dWyIg0szYXO8pnZ96klJ6fxz0tqWEbkbY7qH77V10mTb1wGbiynEk2mH031lut5qDe9/4+LO1bJPbnJcOgTm0NLM9guqOvbxkcY3/UBHFevgJ16Xm3Q6BrOkrvUUXIwCxHKZ7ud1MgekWx7SDjrVN2FzRNuODJ5WblfaohNY7NzbQ3kxHsy+1vvJ/GDYyl+1eER4Jg1rHOQYtHnxf+CwL0frCtbnI4e7Ymypv/YJ+yTIROauCSfraOexFuBmi2c5I4EfjDc6TjmxdOpdgkshazMUqO0wNMY669XXb+BnENz1tK+cTr+5yyEcL5HTePILzNz0Y7qnalqdcZPFSZCi24Bk3bE8J8hoNl+rsg3RlS667EIyWq/GrjoS6cFkpM3qAXoCpvcsgzZHpFmJVA8PTFCe6YkjHKGp5VRX56O7csL/R39wuQ0+HC9e8Pei8nlo7Zt7/wDjt3jvd6HXBlb4V0+vcEH5I9BtWS6q5R4Zm+/6hba0yPqZrKtvoqP7EeRfCVQU6s2GB03A8MbAx6hNNKujsCSTDOaaHtZJeaSnB0mRt8usUn/+K8XtInlMmJ5nW6cBN2vjDAKdYFFzNA42z15P3pAP/dTAWr7gftpZ1ZzPLW3BRZ9f/8E6loAwH90gvqqD1VsAZJaFCDdfnVnPW90xqA6j7e/bmNwL51a1jlVr6LvC8/zScudCJx9xYs6/NoeQwl0jyLsMjh+SHxuKJfOhTALDoVpJoU74SriZp2WkRvVVhRbUEdpDcs441j6UayT0A1Vbx0Ql45CLZqHx5+Ojq12CmgzO0F4iyzwzTFpksjHsTHS2E2Jim6fDR/+B1P1A//UkRSO7t2L5lQHxfsPmmnXvg15Drfa8GoPFofoudbjbS8qc2MrjYEK97cgmUP1vKsnqWdLBnitCA222lgEOBzQ4gIFlWhFVBKX/1gx83qhck/h04kD5wv7avkM/ssRFz8D/dbcjxfqtYpawZON9m+PQNDBLin2dqy+dt5wk9JVUxhHul2hQVjAfCDyj2s0pcPk1NYRc9gSRb22HEFrq8YbCqvAowzBk068qkCbrGjl9h0Rl4IBF6+Qqbxzt729FoVjHG2n2WB913QwxZVDbUHDL4udmkVd3pv4ulQPbzg86/OYCj/fbEoDF7+FfKG7j+/Ki/2SrpOmMuH6CaActgJB/ykTh0TZ6+pf2W1OGVpBxKTnLpgIX15CKBy04Le6loLeFiEgrEMpE7e1Xmolc7q3sTbmg269GuayrDc8joe32gBjFT3H615eDIJlpCmUjYbmKfo0jgmdWm1r82VPZgmG2ReXv/KQcAuGNHUm88C3Pv5BMuEvFuux7xeo/e+cpNW1I4pB1u1D+SwgVUY8qdyqHGAg4nFkehkJ/3NyYNfrtpbTUP3UKcn+cJbNR8UUnF9t3PCfJzdR6KXceXCi7Sj9vqr3gKvSuFsd7ij78iCxu00Sb6NF7FEUBcK1otcepQNV7/yHVtVjkhTRICJVtGf+SRwJdZq1lSOilCOeSG97GP1dRESQsu7ADfkZ98SjFiDmn7o9JGatahUAxbhlwPnV/1B9QW08zPmVs4DClelXyvPI5poWYn3VLlcv1ZlcBOs13T8o1Cf+tm880oF78JiWeLrW3gb2K47PNHy0Z9t6xw6/YlA7SXsl363hPZ5kiCnZbBYvrcjr62vxcFFsMGy7Yf4yF9/o6gld47D4eohGPrrwNf1W1yXLCWIZdaKY2choRtUOlh0M50fVUz2Gpwq5Zlyl7b1yA/tI3+RVFS8j9JpSK7zjx68/HuRC7Xha3JCSArbuKIOGh2HPvlAoslZBNXYaD2ljFd/yru54d+fvHWauX4+AYmj395EZk+WoUaNwZtq+eif2Vjy5Hb1LcE993DIom3DOzTE0Lf/RHtracp8M/RGMuxYho79QOyPv4Ibt6rg63TeDu+5IH1/X8lgoxjfbuwu4eLcVJYbyUih30sil3LaAKplTHYF4H/m3IHyvGHd95X5xfBF6AQkOMx8hlsJU3uWaeoHmti43WX3PsPLtAju0KnxQ0fudxNPH8fDWlmVwymTDHH+A7m7RV1IspWemOdvtiLnxf2LpBvTLYLzWL+OV8/H0SierBsPjwkw5Ao0+c4AHscZa6xNOmUp12fHO8OUpY3oOnjSHk0KdF8MnefMSe/BUUs98lHGIHk8TQQHL48jHH11FehWC/JZjb/OvMOLdz66yN4rL1EVYqx7JlUXLRIxPHeNkciY5SkdHIOFIGUZrh7GdG6TAtqw1Wpe8+85sAcURVWW1gz2NSwnFAmBVG4Ig5P7yHiFJm2VUy1kIIvs4pJKJBR+3cBaP1mBrSC6AsCYuCFg25N41dmXxAYiQ90FOQiaAZ0YIiogcffHaL0v6rzfjv9XA9CxGEZOJUmZFHvu3mZ0jZYY4x6FkuDOvarQPArw3mz4WwLyursIRNnQFdquoc43o2K8ByPRWQso8iQ9pYQsIB8VHeYjmPtUKF2XLfBsRU4wDVxKCS4V1fvfvWsc2ocpLDN89ceNGQrtg9avAHzHQnhd9vhBybyXGDujUZU5sg0f6qgwitlKMvRhJe3s7W68oaKrkIKBvbtfjoKHZkhgDvfVGHTNhqpA/59fHirGuFRnzRD6gemZGx4kx5xxJmfEMll1mTWlFBsrpxgwUChrKjX5ZcsROeYhSnpP414WVYaxZRm4tnlGtj42hx8XQY2WIbrpT7B91AzlUMjNGJ4lhxFnWiFcNXk2CDOYajsiRkVmI8KwMEfx1fjieTtXuT32rwbCIgKT8cipvnECePeJdg1eXIIO51jOyZGo2YgXt1yQKbh9+2eCafJp7bB4AfBYDuhMbpWnoyUZ3h24e4sg5L6RuoYn/5eWtu9Uqn6vZUKwqT8SXqwHYs2SjNs0H1UWTq3dpezgDMiMEbYUP6V92w6qyJhCNY8T+sl5XyIiZvAAR8jadA6DpQ/n0yyH+wGOIAkyOArJEs21uVaLI1hstjngPIFoH4Ddd4I2PfyxTizjyZIaTknD1dSJVIOhC8Wa+Ja9/Aoauz9D1GeKBukkTPMK2AbeNTCEyK/DPa1YJCNsG3K/YJzI1MO180vmc81nnoWO5vHJncyRQbJGIsDcZYDs0iwPAWyBIL6LIJ7z/0ixnEu2zg82n02XWdk55kkR0q2l44IAv8THRwV7TXDoyliuWDujgCdzuD8GJ/GITjDnP90XUdsbS8T0jGhALt1FM/3nS8ktJD6Ihn6Eo4GBQccJdrC3oX+z9n/FSB1sfeSGobRhCNc9sQaZXgh24UTA2WSZOBsRSYzaigJ8LmrFLZObxBOKzJBCdK4HdOFtb3QW2YQC4uQHQjANrZ/hjsK3V5NpthaocmbkkjSObSE6wLtEwIWatQ1zkIW9MDhGswXOBRzgaRZ7nJNT+I5EsxSNlFaXnQPubaAGpvv2B4sl5Dfz9L4JnTF7qZ+F/88czg1n7nItwIWDMYvE4c8h1qxm8/oHI0Q2Qs5i3hmcioc1TdjfvYHwTNX1LmPoGnbIhN97kvhC4F8p6/aoleOiJ2r2s4mW8N4dfHni+Q4rWRwUbkC0s+JjloGdQ2UWk4rsxQLcJHYHe/cnk/KO2QQz4zaj92Sl4nsa6o+2vL2VUvO8BUXQE9puNSv68faMOIqIWk0VZbLUSnON5lph2G5YjVVvgc+t3fqELeyQXOy2+wmvHhE4g/anZ04/XiilOlXZuqxSwR1BhcQvWKVvSnNbxhji2kEOmUM3gqppsmGdSMZuPrRCfkSqK1Y5G0OK5yoiH1m11T+3bjJmN3tzYVfHNiiU3rP+N+Scti9iOfbZX4fxcf9GI+KWLfW2yu2KSJDwJL+QB8WG7IubdHvmLRvGOsLoZKdsg+pgrLMjvQLFsKxyH83AeRrgans2uyloVJncUvzi5pJzw/yZH91tGY2ncFWZFzuJy8iIJoAlJfcCAGU/WPZtw8CCx9IgRdrylbbcKo1I2A/62um5HpSVGQkGeFrpOtK+Y+S32OxQs0SChEQDhssDWNJzoz9jsCZC0ayMhC+ALpH/hWvvoSlYYMOBSNpKqFHL6F0p967f1GQUDMTbdRc5WNi5Uyt36Py/OlQbDrINyiIFxPdcaGS/I+tZ6GmMqJFHVBe1a7/VlX5P5QF6OAx3VMdFWDxQBipIbbPa85jYotfibFmjbReaF0VFS08bQ3LcHlKnCDts3mV9FyA/VbSilPHSxEVFHKbE/NiK/YC1bay5fHk7qpOsv9UjDVsDR2XR2ImLqF6bGokvt3VrU23eIoVtl6E/H0G0xdH2G6s7A/sFs0CKR+V1X38EY5H3AL/wI1orEpZG283JkqWoaDidmv7IGvUjIYSJ9x2iy4Qd+ZYxgrZiMGuo7XeesVc3G43ztTwxyJS5hQV1Je7I1XZt9B2+CCBxsex2+/bIH9VIC3FST0Tl7WjGYncohTQQWiZxO5sbCuXyvk/HRXrCUwjvKYVmuu6jSH6bdEe5BxAEF9IzSHLRdsb4r/nIKz8M6DAb1mR7/OfA+T50+82YwYeRv8WifsnnR/jUpw+DPHAXWyVG938Pf6w0i/qnidWwvSeSjPFAZ9pSYFTQoVkHkwaCtxmEOzVxVbe7DKn4l3jpDV2To+gz1t8P41XcmVlkZup5ttYksVbXV33Kz/kraSX4LAGhF0N9RRJ4shbXT+Tbna57POa+eWw5P+VuYah9PBtZZPZh9QAtJAhfvjgNbfrWDZiUJHsJLj/+hzBR/QhBNG9FgeG5x9Hcv6WRAsY5Qnn03+0/FctcHNXenGNNLrr4raDHhtBkEbipiKl0uPwzg26bxCaXHu2ub36kgx3Ws9eXw7rFFwUBOl7ZjuPEF/NDAU0AIja/HPYnTXQpHAkoqSOgBd2RYOslEpvtHVvuZ19Wp/Tj3Phf+cQNIte6GOg27H65W9SnjSG2wZetcP3ld+eol7uej+CQuGx29lnMQWTEBKtXEjo544NEBgKoKDNssfVq/gCI4iU+T/8QtnDlbVU0ZtnK6FUZyoGLQTHt7KBNmAJQRFDS80zZRQAR+Rv3w9xclEIGaC2O/0Xq0mEO8rTpypE8zrMclR/ug03hESV11QlT6CbOE6CN59AxyrnkFW9aL/OBV1qq1nT2VUPKUwzYxolaApmGnZW2dlC+mpGuEFbrpOuhWs7QDSdHjZm8ZS3N9EQO5wWzr/XCIprpWZeAhurpZWdy+MsYNg3I4HnIvxXn6kqGfEIttqCmlGmZf+p36iK1WrF38VB8k50e3Zm+3VXQMlZWdxOCOOV9Rn+5yc9HHtT3PzRuhMn774wxSZDuGG5PwxubzFVmsxo3BTfnPL9M3dEhtkmL2uuhdqC24G8CLKHjmrHIe5tLLl9JrjGPZG2ag6783WPnopYYeGE1XVgDwBRHWoAVDN/9+YrPaJ4u7rufZWW7Y8Gdia582buq+uf1hUeJAkuwCFwwpjRq2cMHtHM7zusAbx/dIQW+rAjaSgd/26kDXmzOO84Z67iZFF9zO4XyQ9sreKLcCn51DaNz810wT3gQJtz2cF0ZnkJtx/Gc/p3Tz+r8nYPqx/Muz9tulbO93I0OzZEbDFX54jhD0U9/EApKI+Dc1d/lSWnRjwW/KKqRuxRExKX5lcr9oVSIx1K71y3qs4NdoVT3leYUmSbLB4Se1ADCWr7u2PEq/LDCGnj8ByGQpo4QON9lmjRamflEYj0eyNlCFD6afu+l5iV3Ncw1ZB0p9qaYMz1HiyM1X+2vzmNx8PgTi+JU44rNANz3oV+lj4kvkzN/P4ttbPJUIDkqpxsEFvogcAHFkxOadgNoBrFaLfppGSRlWLSBJmg3xTcck+I2jQNtiGMoExKt3ZNSIDT/59+P7ja/1+NkC7aMA/OaR05htGsgRUJtk4H+kCbqDYw7I+6fXEmOyd6ej+5pa7PEn2XNDhY70a/Wvd+n+Vhc4GcU4E9+k9/zptA8tRXbG4wiZY4HPgXtkkMYaJRwo3I928ZdM8zEw+xcJOJteLMhwR7yRcROvBv1SMXgzsD0MJ0ZWjHCstXR5OZmdB/U1rhs2NVOPRRtJK2r/E4fWr6S2JxTFiCGye7kEq6uWTZYjEm6bowGh9fQN/xgho7P4wHMSBxTI4HoSSdvogOIxVrsPln1gJ/b1VUnSC6kzyjJU3r7/lPh2U3yS55Sng3Hkbr4mSOnUpwV432NjqF+YIWS/kAAQ5TT1fOEL4KBXR31HQ3tLlmymrxwHUhBS+pKxFxrQ+mN1Qu5rOIFfz+Lme7bxz9pzqnrK3jdUPifBQf1eDHfpeLhBcnY+d/GCemyLcnxFL4w5XFNkzcqj4PgD9CGRFUuMVLisSxkW3DpWfsNzr6JxDUyJxUbZ9BRkbiwJdprNq2swNQlfz7ISKwiFySF9ktPqbU1K1L8aGEkwWveC5K8KAbllcIgYUzE8/qf8etOU/cUHOikAuaZ3L39RCgoefUbEOm+OY7P8OlWE/fFIpjOhOcyttbYOAnaIWDU046Gk9lmbprP4/O3kwLbWGiUYmfsPX/WrD0S2gqzr00TImNxGtU+ncaMMXYmh22PoVhh6GUP9Y7f8MU1o8djgwRaDEDHWf8SwP0Yye2nP2oEAJWPOU8/8QJP2A/1CmSDWOzHNf5aTcAHiLQvVP53NXyOKxBavGoOPrFr8S38UwuflmRAj59QnaNtVCVKbQWDCqMnQpPj94/mblhJ5f/MCSjkgwb5/PX8zo8n4mhrgLgro8uen9Yzc/WSO57BXgnpZqXHPxTaJnbWp+J5RzNt3b0rWTh8grR98pCP5jW/ZB9DJ3j3Keir33Pn1JqvK7KxyCXXTP/alcBHd2ls/vzqfH8rvZ3R4VMvZ2l4wwexWl6a/xTN2Go9JxbuU4M+mxHL/pul0SbYnhFNJnTiIJ6D5QgK6Km1dh2ZWn7pm9qwtb5BGktaQ0e8YIIfPU3iJwI460OzF7MKfmrZ2S/jW8xvexbSnro+EFtzc+yRHQPpfyFTQM8UijJ5FIz6n+06USjH4Odhet3gwaEket+xkI01JiOXhjTh6gYncgWh84fmgqCFWJ/hdPBxDq9jD5LdPwAQPWrUr3ffIuvrlYqrSHboyBswh9jvyNc/0M/bN+o56YEe+UVs/7/gtbv7qJDxbaOCNLUf+8wnl6zkMxLn3xGuEERsYNSTBytxYv6oXJxgfmr6XVjlhM8H7FqN9ABMkQ8zNCdyHFu8Va6qT0pAZsvAgahoadcozdkXvK76dTuRXKnzyMOzxwpBIiyRgTLLvMZ4ynfc4b9+BJn1J5te8j8m7F0j3CkJxQEFe+lBsyoL4/WkJSfZjzSoamjrDAGHvHXqDgltOrj5g3eZ/vXb/gjUag6O193vr969gNvmwL2ZqokCUUzb4yvctcNboOW/A5mT60seDXBtWEHCxchQ0Z0eBY9koqC0VBRFDtH3SvN8UUqL+ogeJlvvjyLIKAHIrIMYceD3h+/XX4MBfnJEegSTbP07fX9RFSja9k0A/z7SC2rES3DzXdXW6Zbo9ugpZHoE/QDdU9t+Onf4P7pytBQU/rvZ9ZZr1TpRXg52+c7YWFPx+jPO6S7SLqyWvplytdrXGVfHKt+hCv8dBPySrLrAHa9E+EPO9oyFvSO4GdYmWKcRJvupV8/wP/pjbcIE9+Is2AjDMCeGK21ValvDXduSAZ14Jf6iXHfbf5PaBTEKzP5+EP8xLNpluIvmWV2OY71Oc0rRXCe+Fxm0D8bUARcMZCdZT7FCXlTvqh0CjC8HKMhDImyHg1ZBpxn5/CFZo+8MxtwkAHGtO+O+/p4qGKVQj4dqd9RcX8A8zKDm0uJrOsI1Wyr0ycPQ/hM3PyUhntxtvny/ipbb8rgd/7IpvhfgcS3+atsACVVRBZUicOXOAFmKxPE+Fn7uwY1UOa4bIBDbpBTcyAPqLX3iA3I6O06+kaJUQCOSZcFZIYmrwJf2JrPbFolXySWDxB9tdElPwpXkhbMSk4/EGbg7nWyskFmYmv9h5jclts/3dD3tqfUq0eWB+zGkAAu9bGy2SWyVxydO0q6t7FU0XEpjuQ+eQjIUTPWi04Hecfq+6ZKHzLENbot0tv8/PhfC9Rfc2D9PgfraALtxoMA6HHn0gWA5hvyiFy46jM3LZk97bzOV4wE3ZLDXNET+/CJuNUVkpMVSMWyY/dfvItGXssbYRyW6PRyfKIl8wDVUukJG9OeMQ0tpYdoNPiezI4k5T1S6AfEqoCXGX2Mw+WRJz19iGi2lZ509gqODtNaElKPMtzLCrZIybi3eojIIOw3gtpIsdliXzzZzXXspTR/LFK+mhk7oDXghllfNt1nszD6nYMvw9ZSKf4aun08cz7+SqpRn23EuFIRvvq87fa3KVztbaDjObi7FEMheIUb8cNxiDofaWj8osjUFqesSw06K2wBOOOuc0dpKZu6QWl6HaZ0U9PWDDF5ThDXaTkrCJjbOfarMG1d9D8hZpXWQP6Mva3pkWJoFvTUS8N7ctagRaluCmAPYj7HlbIiGkfJtLHfDHDGBrdm/hIjCX4ONLvX+Sg66UcGnu76jdyXaR7TjkeWdwgLu7ZYIa9e64sqrcYxG9Elskg4PnqVsTwqUVBrNKCSmY+muDZMIy8NR3et7InDUqtwao6uJettTJGwOP6kHYnWpRXakt1ufTQIfFw7U8tI1kJn7NeG/vz/LSRFtwK8HGp5IH2aGSiHdWjElnL44rNQ4cyxbfCtqLdzQfM1xZV+XUFY2JYL9xzz17mbEYs95rINyUttm1FIZZp+rRhMWrlJ+Sxb8+rAaJLHYLvydyg9gKs9Hu1awlKjhyIkyhlyoFiIs2zLe1nBLgRLCA0XD3T3UWXtD1N++iCEpheDwgpCuKl+Pug2117wA9yXTzd2ZJeeLZF/26aFEZv0svCmCKWarMlVR+pBAr8NVw4sh53JENGOJ+PUqDleEYCfThyNxvVcgk9kcNty6kbzMNF+h0pawwF3Ou198d6WzIqpqTTQuVJmKnTSB3fW3l+Furo/le/fcBLJLhG19focW7V7vcRz7+OYcd8h/nL9Xb2b3WrhwuUNFEt/3ZmzI5nP1/fw4nRN7k8m4C71tR0/rVJr0+IenVCVpWsHZWinCWmHnL00LJ/7ARAD1uMs9w7f9iZDqI+zqC+kTiUI6J6aE9I+aDo2emVy4LhkyCoGZRfvWHklj3ttL2lZQ+ZM2q+EXsJ+ZHUEoajCdFo/vKPDuy40BqdUkRU8b8QG1iKvLFD/TInlHPtHrc9Q9kwJRjfWDPuql4shpuLhVM26zVMMCSx8lJ5bajkmRk2GOQ5Dayk7T7oFLJRNsu7KkEzMEMpIWIKjSTC6KeaSI0YxEQ+K3EQMaQ5AwL55Gg7SxbcTiPiCTu88iVAgPl+ljQsFFVkMQeIXrbfTVe6AhE24SatZTUhttlW7SUwV8g5k7IYE4W5VVgUmbbL/HzYfmutdtj5AG75yBzgpyNdCTXLjJqkg52YnjhePLkUzFUKJKat1Et1jJv0Ql7vOypGboMgBQpU2vEWVP7zZaVIkHXVkqbz4lHeYiKxoylVwvvB58JjPUES67oiI5VvN709pzRWuIrL5cca/9FePN3Fzij9/XUfAYg0k4AF0I/5VlbH6pEkCx3Ylz6LUs8P2Pbu/OF+AOuP2eIjYNNu1b2zWBLvhDNX2XzUHeHA3jF0U8FYpoCk5+S9OqfCQJyYeJYbfzvk1XZc8X8Kvf5NIsPzmdyhuxUWduFzisXiaOrRfGh9fafWpJskylmOmE8kTAn/5qP95Kc0djX8XudgVYh6Uw3mlLfHIWNnK6H6O57nfWnK6NPEuUBuawv9vsmzvJ63WPcxCGKdKQKq23tz4FV5Zw0LvSk/f3nc0TdjniRRxXeSsVDp8g240xqVkjf8Vl3H+XFMRxiTlmqEasItvPIOep4NE7ZDqHXWP98tQP9FXVW+3BkA7Yn4nqY2nItkufOT1xWgw8bdzxg/Ekt7rMl3Z+2h70te/t5V39oX6zOj6YX1L4+efGoifd3X1l16TRbm1b/EkA/aVr4minKKqRbCLj8EJN92iD9cqNu9SVCIp5PsCCdTlAob+mQXqkmQ8fdsu4ZMeTDC/DfobewJvwpeHOUfJ8fx/NnIoL/Yr4HrC/uJvKBVwlx/6uENPv8HXoOw6GEFvt55hQCvCgBMoVLeE2E/PrYO9ZeUqMAMbrML45/xKCArkDIoLJXRxrUg0dujaqgs/Yq3VbH9ZDYYOB8RBDqHpTNAdDg+RzAncq1Zn6tJx0zQKZ4dKZARPPObk92qVR4koSPhLRWmtED27+EpMNLG+ZtAbOs8rOOStDcPx10/RqiMzkQrS+JCGvz/ROR9De4sI2flUpM9KXazpLWaTudkwPtcPWoY5LUc3r5Z6fSD1yIjqiaaXzdoZwMeNQfm/mrKi/qRNz0HtXbcoN/TKt1GRhmvpkdB5q5GGg0Z2c8fteiRFWyFTEU4mitcJAYpVNqH3kwVVsfkRZPnNN2EJhT3bopfodXbw8VpxPaxlJP8Ch20lhkXsvhQ+W5n3/FvJZ796eo+NicnVuzT0dO4FC937zlW3/AYrfUTd58OxwdzREdb8wdFH1Xa5GoHT8Ni1e27+whq9pjgPuJTowpg3Jdu9HP+G6H+d01ToKdFJ/DGbBBi/CVFHA4A/bWxYGbQHt6A19NiU5oBlkUrcnaWMOMKbfvY/oLNkRlI/ywf2aBBdLjAC1uGwDSPMD2PRp7EHch0k/u+Xjyg912+ci7QO3g0wjWJoFNWjKft6Yx99Z9N0nTeF1nAalOKT11meQgqcHhI+FsJPpEaVdrOXUREgufgyCh8zXu9zkY5PYqB4gQ00sUIfw/dFLMJ11TJBQ0ok+G/CM9wvPQoJJUGAJQbifP5hLh5iqhwfozrqGzYg1Jz+5PZkc7pp9CIU15zyOP5h+BdrKpyfEehXLtYQPh2raD245vaGOW/FNbdNBwjYeWYY4/WhlWfN3snBeIB8tZZjPM+GR1nPnpJnaD2Tzz9XgxBh8IKmPfbLFEgxnttvCMBDLPxHUaInDNYNloWxGqOWZ7+fsj1HPLIa2tykpphjs4VGAO8RpaPoGViY2UQXEhh6/7cyQCLg60wPYuGCY2RF8eJvh0GRbeytZECzlF+uABX/DQm+zrgvJ2ub9k6yzeWhhivfu2IPr2C6b5+snPvxzdFv1n808pgJ3++rUg8TmIoqv+MeExyvOGUxEo9NkDODc27StuWUc7SkMAWJ+ImKTh6R7ak38Wd8cuPLomQYwFUrvsq3euqZrOJY0m1oF32Gq8pL5bHQDbdOuVrF/BJEQHQ2/CdevyNZRyMl7eUt7muyuRVxx9FeKyn3VTlX+cWtdaUGoztK6mEjWp16qKKhGiZx2RY5DWXQYVn+YGhYnrZzXpi5e5sZLwyzt7lyt7+QiYCH1OZp717kGVVCbDetDJPKxXBn46d3vuzenVMeDyMtfad2XBcXRPl3FC2Fdg4dXIYw1M8HuISJvqnfuID2vdYTyuyOZf4N7QLkycWHeJ/Q0Q4k3nQxlG9YuyvBtmAnDt7Y8T9aiPNThmwXeIQ52QthT/At+/cvSvHHysrc3uNQc7btH2M8tGrK3vjMOyGCGtWYWai3u6wb5NsNWaK6Iqmh91Ck6OTshnGqEe+thB/TKb09ibhDhzo1/42rHkWhE5tYnqkzUCYzjYFYaAReD+GtMR0qC7Ctw3zZJFYHqh6wMjMeRUw7zhQHOoowBriPxRzOlk0zSEza+7ronvs/RUKCEeoVYQwGNqGF9CyFSRKCROqvDRBLWBTaYNkBN9neK2j4yTgtr4WjAocLGxthMKIusoIZ15SPiUhtRG13oVBwB4VgBqA26mMIi4epNxNHyOzqMluwwsYoQ+q/jTgkc9ygFp+c8opLoeMSINLRfw9kVBTrPyBrsptj0O7M+aKZbvoO0PALvznpZWvcAQfVP31MLpVxrwrkjaThKLMQDedPX0+6eqPeMIjTq+xbmdZaXK6nuFG3BHuLzkN9a8YdnADFZEgEMqdaqdZI4heLvVM9itbu8HlpQVdzI/i2ReRWpK/IwAPRi93kQpcsE9IhMM6/dnf9fkwAp4JfloD6yY1REiyxuwN6HCbkz/UbTYpjuTa1xE7/vIQ8ATt2niK5SZr55vuYtO02oMRM0+mGyU66cyOMZ6s3MxsHMiuIx9w+036fbUL2knzVapvkTnklljy1HagPgCx6olwmRNhfpKQ8xMnNbDW4O78v07hc0cZZ4w5ATIzHIwrDZUjQu/cBPN5WsUoFRI+QSRumnygwTSbcvNFjfnXyodRJetQUOeJ1bqD9OG52o4HVE4OCjeWiNzv8xfgi0vVuHean7TsFcg0q3WG36GFXtndWRMTtYlwf2fZ/nK+8STlRZEtr++PDDFZemk7EQCaG1WejhKniOQ1m0/f9meCqq54hy50v4mo5B/WrNv4t9sCbT5taxrtiywuSogUdD6ZVoAMSKubZBp5QKx2Knd/z8McAhoeFofKmX4k4uVNODW6ghKzc7Rz2FOCZ+M58LmyHZz4hkLX/AuIeZ+fsaUfc4nhVg596KznqWCKgoOmNtCjiJ8sIUPOaynz/NfPm9T4XqiJ2n7dafiuWkkFbAQqaUEQNXUAF6mBjnbZSG0Gk08+zkqzD2Hwhe4nLJZ96qH2YQBgAiFD62w31hhkhSCAaLLEIyul3f+5sXJcsdV5JqTKUDDb1yk4Fo+yHw3dIdSTerK674DrnLqvzRQ4gOgc6YUCtQqG1FyzovAjovpF+NREhevQNUAYF9Ty6JXFk1CHCmWVzy0e+gR54FhpKMmd/xA76CR8TaqYdfMarQ6DmiFysr6bMqPNHFFuzbOjkuIX+/QHRDqtAPW3/+TzULbPy4kMPdbLsFeZvJ00G7fQHauyuNbySrNJKLTRQPERiwtskzTi0JZo9hYPXHfnIAT5fQrRi84YxaH4EQWhS09glP6D5cIPYj/CXcm4nx+P8FJg+IvIkH4E0pJ3acsfmZUDwZvMZZNTRa3WNwGEmgcaa+ou5MrgK8IfD+AuTpamqOuuEnOc+vcFcp49RbxdHWQDEK5jpT6MhK5Txkzjsnu51TXmzhMYGQlSbjD3EiWPWaoPUws6ryhKqnH4AQO86ZXb8IaTcnE4OMemIZNt+bZmg9J3xVsjhtvS4zkGigzryD6yLFCbrSSUhTn1gNzyu2N5/wBN1FNFYwJ2C50A/VCsJlH50H8qhe9rBhTJihdkXAHSurWdqPnpYoKddfHkqoUDBnGQ73cnZ2LEPs2Rs6pmSYyvOCxKTAMPA/1UWC+gi0IPgV+uxryHxjZjobN+eaJkj+t3+B0DV+TUaBuEabhijx2r0J74k8t9qkwKceO1CxaYNkdYE8n29O5Y75/JilUvM5vKERjpvV2i8Ui2jQCotyY7wojS835NsAC/jRg/iWeYTIXTdKW/A/mOHFH+VQfDI/bt9qEYxyTMX+FJwqepdvIGhJ3alXMsYfW45hqcGKoPrCLj3qJPGK4e5XBDHV1OYQQzLkLdEbdiEsS6Mji42Bi0nTt54TebDOpIRnfG5NK6wylGvuQ/BDfaX52FN8hJqIt92TLkfEpBFVk5oO12j4hBYniLj4WCXBaF5vb32I6h+Qum0IO5+/m8ui7t4trXZFK8C/olsWwFM+dbXrE61qFwb/L0ubWTTmTullqzB4lnsoH8Xj4xj+oWAH0aXSY1AYZYWRyqmT71AMz6tCeKkVoxSarDJNkO9YquSwgSk8RnttWBaQnfUs4cvPyBrKLMQWzGZpYhx5jXBE5yLbfVflodBo2tN4ifETE4ubNi78/tl8CFCUJ8M0M8eFVsd0/yE2ifG57woANWNnw1D2QYgSn0j2U6u8wctFr9dZuque63veo0wUBQ483nOWakhlhFcRl0BWxpT/3VSS7o6EOhOE8e6pkAEzvXahyWAGfYCTtSFP7O7xRaOZNthbsC6AP9+N4s5sfVEuw8kH9282wWJCQtDyBmEeH+U1pQYrkO2ngIQOOPo35Of6B+Id62J7qTcx4fFzbBB8i6GTZUtmFch/1ApyWNyG/sIkUOX82pcJBTfEolP6tJVx8efcsMb/lKZ+UH3KpTwgp97EzcZZj8IoO1s1gieLuJCx3qheA04CaWHjWeRXdTmW+/X4yrxh5ktIgcbVgkZhegB4dGE6A+5HnGVTVSsMv+2fOMMJSpJNTQpbjTtODrsLLniQf5X5joFhOVxrnMLw2mGBu8t7XQ8ltNt+w/493//HOB1Nxoi9JfixjNntF9KAyo9ekW9gJpp9onkZ8qnTQPNpAVbvoJi8EmarphhZk+kurRDff6XSZdLZWs3g2QCjw1L24X298k3w7IeBGErnoEhZ75vSG1SwSSmkq96nfjGg9o2KB7vPO0AqeJiO/xh2PRAMXA6uexbBUFn4tjDYkgMJGyUc1nxnfoNCA7w1Jz2zxxe7P4zxdV01pMriVMXim7j/TNSpFj1EZi2MYZ2fD5T3uKbfd+VgYDDhPHvWNVPFQCjGbnTtc3pDV/3JKytH9pe9qK+/V0QffRexiLBN2zH6z5knSJF2LhEAd/CR/SvYgMusdC72eNTvWqDCealdOnhCtT31IlSbMfKhGzTZf5+5vnt4Qo4L3CDg/eG3Bs+QHHAHHJxUpnrTiTgH4jM5QekP6UYpUgQDp1yAbSOEyK/rrEE6uCEtM1hvdYgL+vk1hOwpPrw19LxehWSGCTpFZlfTTOVfmaDE3e1eVY0+ci9c/KU2fp/CRP6MVlQg0DeGxivFZVA73jfpz9KnZGPPpDkrG2xuMdnX2GnevGF9E6MmW5LD+CIwIif7z+FY9Z5EimLAsSdicIIe2v0iozrqticl8AFqKPRNhr/S2STDHwdgNoq1z+2iW/9SPCMgbQDTnUK+JvbuzZwKfZ7UP2Ce7yR3LeU0/q9Mb+u032rY9Ui+iiHqAq+Zbi24lmQ2T71nQMZMIGKchJ50tnc6Wy6mq3FV+4JdPl6TV9klf25ZfvkfHVGSKcu8ZJTTuzgOdSt1LzCv5crYv8Lh3+QkU+i7J64Y9SP1bRAHQAU6BFD6KGHeTDjucMK6qrOqGbc3Ei+uAW8I6AnAhk3poC+HZjy9Xx3sZ8uLplaDR+/C0EpSS0A7aOqGGR+Xp4AYKrGejPqFTKJxRcHOvoX496pdp8BESQN4RXXs93Fbpltdn9nzq6Ra9TPUP9F1bFhArRBlOu0BuDHUaMV1qpUmVUGiefyqnUUarKpNjBltJsuwkZDBqJTFF2v5J4v8iZlQ7lQIVUzBLk4pJkeRDs9tBqOV0pL8ewponrHJipoWlMiLswRQhBLEcRGvsmljKN/xSYOX7aM93/uFz7WbXxVnwWDBYA0RtxGrNkks7sX8nHi3LZTHRS83l2YsTHOPqwT18jQ+9j2xUFPAYvz5skH1fPIYTOBTaeZRsjiFiJg9osFYTVIu2xTE41fyJopdV0Ggl0veWmG75puBeDTnW4lgFW5vihoVmzB3pW2zO9jMZhRXzgW1aPx8YZidG0whH9LKIc2hSGZiWu7eNGnXqkZYgMZeTKdS/xsBvwcCzo5e4ca0s05Cg62hxOnU/Aml1SvWsDzSv6iGnU/86H/irPrDYFML/Akb6+D/WCOrPz1Ou1weBZfW9nmVzZvjHXKHFn0NPI3ZZfndIQqOskTNRDHFko6YulyJv5ZlC0zBMumZhX8EfWmjwPJbsmSVpemxOnBUa05k2x0GBJQLRfqleo/wJOXwBmwcsXCWVUHaT5quM1AH8QEf9vSKDOhfQBEIuVuNmOJU1esD8laFB2Gq1WZlebVpTm4l6tSHXqwF4y9f3vlhULqs9P+zLBsgF6cbsQjEjpitxyhlce6WF4vQaC4hQa54pay0P325w2Td0s0B2IL4zmKBnPdym39wxhrIxMXbWbEj2yInK5//QRgyXD6MfzyxyQWgtEMapgEXe3vpXCpTM7s54gaP3n1gAbY/vWw9DUS0HX1wOdyNQyubdC0x9dCgOUaqXxapPonFslPi1jQ12m6cyup4A99PE31O2KslZTVZkapNKWfABEJsEvjAMxMQaqC5ONlOEt5Qay6wx2kj0AGxK65Hqn1CjvfwxDVY3avK9bxeebpeedhr/kN9Mvk7xfFJDxi905F5vD2YZGLpwksGqtmcdLWLbZBZhqtD3HYjwu50Qj4juXHqylQ9os77Q6XZDZCLqD/o7Z8+vxaEjUvxymUy5I6ryjFiSFbcr0D70O3PaR8//Fr+6EIBV9vOSBABoErXu0Ux2t2vu7kC7HK8blJObY9fGCVaQ5/uHB74sYkA/edLbIpXdfckDUMfiwteau1+gkc/QnvUfGRd3jteHD7i4dwjWFSqyxtt5EtjfZprawl0vc9VnYIN/X6mvOhadhVideWhihdDnnyELH7qpBjjgKF78bkxWcIj50Ao9x5R3VWHLIpSfAuAFG2mYdUAdwN4R+HQAB0fgj6Pw9/+Dp4S7XL0gFsCmFpt2KTw4P3biatOyjbBZUGTDZoTJlS8nhRUiHCK21qIFC2rAvaGowAabe7J53HtQJHm7yUQLiccdX1YgeEVQhuMZ0RhuPqsANcxASdw6eNHoVkRYzeAihSEDSEJlYR1CXLZwtUIrYKoMcCAVBgoQCuwF24kwJXH14nsQVAiWq1EBtICEQC1hKAMPhCkHnwHqJ5gSNjDcWGigiIV4rgAEuLFQhZhFbGYfhS0xgN3A4ic+50hur4Qv1ZXrF3atALHHUTbVfiNm31gOxOOAKQm9g4+I2RkLJx6neM9K71leELOIRSF4UpwRal0eEbMf9CA8Eb9DaZv4DpbdQFb+yqEQsylqJ54OuGSljwgMywT1gciK3wgxwiMbmFmGfSPIAy5ZqYwyg2WGqibkBX8gVLl8IWZLVEbIGz6T0JohImaP2M+IfIs/EKrB/4hZiX1C9IZfEKo3HNgSHOMWewr6BrXHBxjoBXxCzN6w7wV9z8WVXmNwMF3QU/AaRyxnxGs9YjklXrsRy4Th1QkRCj//TPw+pU8vI/rjy48c91+5/IXtxy3b6+Nc3dvzn69P+NnLKfkGh5YvXm5xoBxymXBQ+pXmPb+v+Z9XL/hdaZrmO/yGbr36hV+ZM68esa/pJs0bnI785tUWp0RJrhJOSgmKJ4wr/qSuwLiwud7mrIvrblbepXmRQopdrqGgLCUcInqcZg0kkg8zikKO0+M24JjmsECRhdpkoIiC65ilVEeDfYBCPX6YdnSxKA9QdExogGPXNzAC28nQuUBGjQHE3ZprllDUPeoTBSJXN+Y94bqXWzPZ9P3BoY7mYoNR6T3sfSvIKRkhZ5S0m5DTvV7B0WNbHAVaufUGcRz3HLAJj7AP0MGsCQwIhrpH80QeNQaEB6iqm2LThDSADHoF9xY2SAwILMtvUzujKIIdFI1o6pMSAjYJFAErpZAKOziKdQbbkyUf0/kBCvW0AoNYyrdFcyQXYZNAVIYTEZoArM46rGALKGpHc+mCMblI0sc7j8c+hV0gg1qAKOQKDkVMyPfJkNOU0BR+WawaWdJZQoQRyu5yrrpdzg18cSSkldueVG5ETXsQrSuDX6PJmyIkjm07cuUpzZDbp2c7ZKb/SZoltIOEMhaw95uiAxo3KLIjx6t2vQ8SEAwkeLIreFIwwiZB44YQF0eDW8cC9UDt3AAll/C2ThTOXBQk7tmLkvxYFEN9AydFi8JWeOxh4JjeCeqvEKH2R5rZNR125WyEm2lWCruvw21j6GXkniuKFQsIKzdiLiUzq0ChDT+384vLc5DB8xQTbHZqAZHXe80StpOLcZWk7U3xeCz9HqbE8tygplWJnZy7rrLXqbPbXhs/MbQycH87Z3LxQRMWKFM71K3YiaLUy8GY7ZbUx7YcHOs5Tfz7uP/Dgc6dP/DX9D59nGJvSs7Lp+GnGEZO9ika7uJYcFGKoaVMIL7eid5N2OaQuW8D8G+3NJBMYrYShUOYypIQ9k+AcsL3raB5gToeuOehaprYEiPDV/t9JdjII7CHKo/KBji+9hwCeIFd2dEAMY/Ur+C2YTkbUbB03GCCQorJZDLrt+EkSZg3LN2uSa+ebt4oxZuEuc693lvg8qBXjsDrpDDkiwJCDm+/x6UrJb3dOxK4nZDx1zKRhbYCKKJkL8e7xOxyPOnTIY3n4IIg33dV3mp3GD2+W1QmSmAh/ZtEbNbBHXgroWiHLKZMLTgZhQQASegZUDRB/h4ngcjBUAqe3k6GUubJ/v1VhA1yRjEirqCQWdiFVA711gt5e6WvTYcEJrPEzJwMIsvLIb1jKd89A10tRDcxeVFCjvbdeWbAepwN53Skqo6fJA2QEeDHjQLrRAmCg0oTt618tKj/HYvHYULixOBHpwaOfwpBwu4GZgN5iD0UcCSwQo8O3IcRUJTfFovAACjiT4qrSx9LYIFCJJDmr8BMWB2oShVqqxN0CD/DwOV1XwB8A9RlcpNGULYe+6TW8vYC/teoWaREFWINRSO7SmaRApClA4MNrTDvU/LaAQ0U6kguQgfm9CZdpxboAaoRyvCCllJvhD8BM2X0JsdMGZ0U57TwSvhz4Eqf2FPhHZP/M+EN3eI9PP1qxJpOFtVRI47T2NCvCLVGGtd7SqmBwxEJYRK/ckzy1QXpmIDjLIdbslyIwsHK/HtQ6jtPjtOkixOK7j/DkqBHB21IgJ8zmF9Y/dh1J/dhcnEUqGaBXTUDwItayDVNfJv+F0gwxw5YmwBUuUOBFgpcABELwB4qgmFpgIkvzTmfM53PfkDENtP6BcBECSw3ITud7LqvGtuBIllMfGd1+O+dOESqqhwmlbRlUesL1c8qx0mbKLVb8CbdkqvEPNKdmWz29VUZu7NFMANEHeaKdgTxnuhl7vWtN2of0xT6/OpkNJZwvVETCRI6seH327WyTzm4iP78O71oLTp0IFEwVdhQJuYkMHB8Zo4E3lYyIwIFnY6D0GYaFCTp/E200JnXfSFL3J40jNsARTkaxNEVGDsyOU5QQDedzdMOBHRtBjR1JvzYlFXP9fZt2hGu0x7bA0g98JTECdjHZiLDfIc7c7wyze1xG6JWMQFxLcARr7EIhKBBqIWJ4gkyFJh6BAnnKyGzccdb4vS9jAHfnr0oXOpmN2gqI37nkSgnphd0oK0E2iUn+RIkRFP0Dsa5a9G0JZhAYCLlz8ZTspNBQeBGZMNgZuy5ElvHSTllGg/B55JIOE+Xa4rZyRQKkXp70thuue54vknsrqUdr1OxxWhJUzM6Pec/3eLXG/HW050Ni+DW+7yLvXZXw/RusXAkZezADOAHqJnTicJRQlwwtEyUpr8ip2baZsyZ2yMQ952HBZXc+8IImnCGU5x3nXTDwTTRkE67fQbTYBhTaFzPsFhdiVV3SBnx1GhjmkJdRPqtWetgEwV3cVpoIULBQBNw4+8NAWsTX2ejMGDvDx+rWEBO1TnRkHOi9j7p4acrSyYwwsUPIybZ6cnzt0cSsJw60JHdiGC7j0eTuG0scVS8nz8D7PXnzwA8ANNiGly4AjoNXRfLJFnrkCyrxRFx8H4SEy4544m8Qjzw5jDhWN6X+W1Ss58ECxRFLPjgztA8pYSjmPyb1RMlPTFkDSaQP8jVo5OtuSjzV1LRi1ngcx3KjS+oL0e24us+xc6u+6kzbisB/8/S4c83w8vVlC5l4ULtP1yosS2sDjlJVw0xrAu0bk4jGjtrx7iMoKDtniMjnQmV5ypJ9VjMPBr0JJKWEGP/KzkvQCSomEt3Qx34o6LBekYfmSAKg5+MDBGtri/7AG+htorsbNLLKkuuMjbBBJ3aTsSx2GFhYgNYDmWnF8AF4wsqH660k0d0JPZ4t7ClwD41Fb6GsnpaQW+C8l5Nh5CRggiUkqgX4/p2ZlIds3FshsNG1XvY+Whir1nS/7uGDJ9GrurKycTUIvQPNaRSh0h0tMBxqSeGqrMsiLrDTcFNBYWUwhnAaN7Be3oMVXmF89ZidW/iLnkuymJfzdvQ1ncxdOJkevxrfe8djgN6VTeGIz7Z510FfNDmRz5VTm42p9277756T2w0BIKf1+6ku8sGLs1ok+5IOHbDJDc6at0Dkw0/ZiXQdUJKcmfjifw92ypOc5IQ1kwagzhl7TheeGcjlwSM5SXEmomSGlY6gd0nwRBQk4HBuTX0OKR/NzTLlMXyD+3s8aL7BeHdNNKu2K9kD5s9y8G0o+nOXAeD2jT8ng3Hj226VprTsYsINBJjl5eGXib/hT/7Jr+vShKzr81TH29wLUWzSnfrXxNIF4sqjHDKhwkGlbFgCm8CsvO0OG90llxcTSaTiSRLR9UbCsLH6M9br4UqZAJWiQGw1/syJVxEtkPi1kxgb5XRXEuGxbk7n+c7f76axjF0YKjTGrGHOk7KiDseObySBKhpHXAhGHHzgLdSc+QRIAzHDs/KEax2ElvFib5zhhrVqwsJSRXHHKc/voDyWjHUmbt/YWSyigUvVHuolEgEERQzltEN1joVyo94PDVBrerOFYZExlDksIReFLOkX8+EFqIPiUZXxQIOpytGiTSqol5L2UX48zJ1QRdfEln63O6ljxOqs3UIiVVFrjqxTM0B5P7G12bC15lzEzTjvAi1r02Ycw0M6bYxqh8ZGrtQS2dc078eIxjCgvUi3k8FOJHXsSznOctX12aCdIuCXd2dU9xey2YHWsmNq3IFoozzmMnkGxfpetGCHZx8rbAPaW+LC/BBnmsDRjCo1N04Eoo1EyjgKLjNfZ0u+i41cWo4vaMJHX8ho3rs2rX954TvU+VzBa53Ei0ycU4VfkDqqXxqQrHpej4pthWppXbCAJJr4VLbiktReuBsZSyX831HrcyYdcRBJlwpsB2ywKjWChblzHdygqCieHOFnTkcLXQV4ChXNKk1NKqqLqx7CSpAaGprFtmFAtEPL4CmvtFsTk3QPfyxX8qHgjeLFu0gUJQS8iPpVn8c0p3BXXZ9ymkZUXCGk5U47ZDHecNybIFHODOBh3S8MHXMhp0SFUr+HsUCToXzNAcs6nG1FRKodQZyDV2rxlbuytLFUbnRgDAuvXYmA3TTKgiZu0s4xEBW0UYAKkqMMKlecngYZxWqFeyWoIJp713EOASCxVQQsKMiixcOqoa04SBRIPa64HP92WLtKHQAThO0e9r9VrTYUQRmlCdEhSFm5WQpuN4vioStgtN10XhXYBfAqJWY8yJ+970KRQsDQdQhIYx1BIMX0+UORmIHBu+owkNI7e3CblwiqoJXnF/JZHd3E0n45/P+nAbBh3JnCuM3pKsQr6MOtvhPSJrE+zuDOG7M0S1OpiQ80VGAlc/fryel9ttc5nnfgNVZQOP2ZDgEhFaEAVaub0SJU62Dacnrsv8yN4YkGBDycTmWD+sIRoEnJYGabvWYt6ZHxnrdr/DWdX1npn6cY4GCqhmNGa9AhiJz2ixIbi06qUkyA7idcNF7aBWxS6PxrZCzAxSoMGn9H61AX958p+TfY0+JmfBt98UWLGtlMUKELB7hzeWKuv47w2IXwVadXkxryn9aKsxdRzeHucRjdNvNWszGrIcDe3vTV8DN3UkY0urBYXHZnXcqgbHd00hEodoh05YZtgvSoNrM81HYoCsUz2Ond1PbHBWEWKG1eckpBhFUSdgFOoB+kKoZ0FAnQI5AxeV4kn+0cqLPFuE0hiZa7Ni1yJgyQ3XI62LI1IYJCe/FrMkTNSJAL0QCQ5Aj0LK61UQECNZ1CgookcKL4SiX2QeoWTyA6iZHxxGousboxECWV6oDhchZLyHS0S/E6gfwonFiClyHL8BmvLIGRveYLfp0RoBMo7MUKRyHi79Z/ayTnwn2mYobAciLO4tyya4LgZNSYV6Rz4m0DTVcBQ4omQALlLzN0/MpDGm9R51giFNm0vVf7H911o0qOdJiKZJpiGB8T54DiiU0xqMST+7yNIDaEJgPMLIpMDar7c7POEUCo/fbmpijgUgfkQk4B+MLcjlhLjbIkyWiKirBh1h5tNc0z0aYP+ioBio0EO8BY/7/5xsgxtDzQoCXOMQqtKo8gL9CYAaUu10KnaFy1XGMaxULB7UUDc22gahaoyi1NaYcssFGZJOxywLhgwc5iryO50ScF3iEZUwVvKwWuDgkohqtJfJQ1WFtZFMkbZQySUZli23aAmKLFLb/ebpb55ChllO2quzMu8PYdc6QuwgmHy4JJu/91y67ICzxoBlnj2TEy7ASbYAGg0sIGrhl13uhgPlk40xToWvgxusH0FiNNfh9BNOwgx0YT9FYoASSjwq0V6Y17eVycJs0jJcY5/nbSZfvqeBo5dPM3XF6wEz5PeIEuzjeu0pZeB8bAcvRCcySkymeFlKtJxeSzM3X5suV5HUmDJDuxThzRCGWsEwInUwGOVdtdgnwj7i51xoDQv2lkrjTkmKWi8JBkoZIJFeGyePbFXEu5h0oV2rcufRIJpugcjwZ5krB22Blg6EV9JuL8NPUXUqt4Tbb91x2wneJRNLQQ0k+0U0UxtrSbo7Tq6lBD8bkzhAMy3A9K95W3OX6WmizqEjq2DsuC7m833n0SmPAW54oYM/CHrFjGAEjvgEkEDnSyGlixiOMLxR4FdtoqB2Hm3MzARwvI7S+wsVMiBIKXOAcH8SHIGzMr09fH5PVeKdDt65p3Fvq0OWhB7htmlsiWeyXr5UePgYJ91+47MU2Kf3CuXgFjw7wLAtsMbFG0jRMwgSWLjf3AeG0L99TzC69fzaR5r3kAgJqpo6oFfFr7a5Esb7qBmAZF8BULIN6N4YUcCu3ULxFcCzNa959goVX2YjkwyNHxZ+uIWAlWaeOss1o2MNNTk9WQothRLDgGA/L8xRB/R1RDIV+LulIclzKFp2GrZY39HBST57Jh3expJHTk4XJ/le/W3aKqZP9Cg20cU68JBzyvBLSH6j6572j3T3n7sqvMTxFVMVm7bc8cw5GZhao6+BIlTXFuv2208Ez3kEafAJVrM7EJBjwB78HLYti3mzUPPTso5MvKZ+grznArzki5J1HR94wah569NH/D1V46CnljaP5oV9+Ru221D7m00x9rNyvEVaYqN1mX1yVtxLiJokJWFsn88V3M1WVzE2dWXT8Nf+P35XQDRHJy62i4knzzT2TQ0ILVYp64XxofJ4nIXHUeNfHIhpilrKuxRdHVbdJF7W2xXYhOi3C6KiE85DAPUrRr6e55g5QkNzz7Vudztx2HckF9huXoK9C5auEf9fg98LvrgpJzP7OTRmwN75s0gYDySd/flvcEqzJ8EHIjZpKwaaXAHu3eE1RCfd7PPL5pnPs4GRVBVyareXuXco5v8UTkgq3JpUO39FkMmvabbg3fLmXhjtl8SZuLWfSBJdjb+sitGedPPSqz24aUqvrSVxdDN8dC89xv/BkVjsbguKltNSjAy4ivC3f+MXtt+leWV4TIrS5X+gH3ZzUiQlmpM6W26V4rH1cJin4ZVRr8IoeJ4URE7W+Nm0mSoJPXbDppTJaiYypl8EHUp8FHbQz5B/SdGXwUeLggXHXRl/veaTY2Gz+HxETTntV/7X6sun4m674HyYzcXQ09CesEz4M61Sq0iZ9Sbe/Czl7hkXt2Ol+rXNpWN2D+DRTwtA2Sggn7sPu19RLeJ/79wzuq1gg7QmkJOg0GkYXRll6wXwPFNPgJU95d0jv7fr/tfqxfwWDc9pgMfWkMlp74GeF7KtyaCZ+mBHvXgRqTdjdIC1LGItOarmAVSaB5Ji5vbtc5Evnm8gIl8dlDAmqdmgCNg/Vj0ScKceb9b0inPnnF7w+UGdgTf/pkK8J7JAOi7rLZNy9N5MiEMc6wCEpz/4SF54Q2Oth2/224kFpPfn4XDFZi826GyF2Ky3n23GnHr+Kq/hwBd6rxd+iPXdy/CXi38ZOOXP8XKvaVe37UuUWaXuvJnm7q5A42OU6XDP8fQN1LXtYOp+DKMS+oOkJwK1jI1fOsYCS/KlKkfz4FPmv3DB06CCKU2XJpaERvJ4vNpiDD+Ekt2NkYI+9N8WJXH2bvvI+qYDuJuk8TuRJpLOSxr3pes1HQ6cNxBZovVdCMeZiSX1E2wIq/+WkkPdCFkI4A1/vrAU67fceg90CcHhAvIcgpnxeojy9DCMbEltAEU/vex1VFwejW8XH/XKPlS/vP/x1kHgrsCZ9AIU5zEtufb9vpVPN7/N//scHBtJg/S+zUAtMlkWJoFynLHVeuUlyE2EVT4iI8iAJZjzd6df+ls2pCa2b/H6Yere0kAg4dv8Ok0oXRkDJrofQsa70eqtgMsTT7N4+x/erKOb31haJkWk0StSmZJfrq5sQeVUel+Hw4HQseQ+Jqrz0I9CLLwwuNPXW7502n+6P+etiwyJIpdnYn8JJqNYtXf+FkpoKYMjx5Z1pWzhF/ncYy8iE8iTSGXp5XJYOHeJpK1nRi7z0J8Fa10KeJjYdJvIIx+zb1a8/56F8/yS4LkY1Fq0tJTAKjxS+/87D09LoUTjoZESuz+/ddB3lxCKPFB3HQ9Lux0Aw6Hn82n8P4bAqx3DhDn0wqnKjB9W2mOTNaPgXESwGvs4Vzu8UZ/QABbsAXWOLSdBpsVEX75CM+Ja+IPUHgHYMVkvvWwJr7i91itwiX5voXJCjaaOwiaNwSaf69kbWB7JYGGSnO6PNk0dhzP2Orhxa0VMTUhkLAKzJxQMaN+iYI7QPl6TbsKbR9Xls61+AssvZCqKz/NbZHnFM/Qn1vMLfrklEvn6hQLLefGJpIa6e1zdcSMmVLvT3JpLa5jQ/gUMeanZXiBan7apJTqbDEfw+7p9Hms9of6/Y83FYfhakH8BrCVxsHyzuCzkc7f03wtsxwJYHrW9gYB5kSOxhGJJGyBdidYigcWPHwEZN6rQ8lwExN0BI4BQn2gNI569M2OLqwNvpSK9g74ByEhOQsMV0bjp2v2CFDgQRW4KBrImA6cCK+BIoAayhLbCsb9TYAYGA7vPu7ZCwoblPVEv3Lvb18O3Qf8Hp0fEtfa0dDbam4YlHSJYsFhAM7cy8VbzMZ/BMjsv7BiMjbLgdoIcGPpIAfM5ZR/OaP57sB1PtT8+HwJl3MIYaQlyXNn3ER4gAPGDwbiwAag/bHzMHsRpF8cVVfvnDcAeQ2/TfAbgM8IhBfuq6Jt6Zm2JLcPOfK0R+nFA2BmSJXuMjtPsrc7ybT35l5d2thZVyMm0rJE4sGIh2xAE6BFXsTj7atqbHFVLIKCZqyTU20FrFjiQd1kzhUfFlxF+oV1gdRm2TFQpbPkfjnUeUy/5+B2WeArIxDNEa+DO2weHXA+Npyt0NIO3A4ZATmKu1FLXCxJ8qp/Jc7/c4Czuc5dLrEQWiuF7TGlixNXUIBrrNhcBCqeQnhPnEZqTdTl+KBRCri+7vrKJiPifUVpILSnNL4rDFC3xIfqNqGAm6b9OG2BSSruvQKIWSQfBbon9uEMk/Uuub42UIp20zuN/Vc947UQ7d+gQZrHMNb/w5+T1QrM66TWUC7VfzM4QH8zWQi3vNjIgzPIBPVzM65pNcF4u5P7lo7FkRyyeE59M6ebxihfisyzdg3ratmOAUDCyCgIk3EyQNLuEBLWxrSxzTi/Pp/FEBAt+saXPxTBuwv8qLTHy/UM5jBN9Spz9Hl8KF1rmFoPtGpYR66RCa8oor5GyEfPDKNpGX97IYmvmp66KfVx2dkh9LXgp5i1JqWXIXXjYlzy91ORTdlzR0N1OkD0x6d+PXsBC3/2ckZHJYlIvTgXyNDw+ykONHxIklvfXxPWacsDR8ZdXn7bSsecxqd/AaRAtu0EY4BGKiq2WiUWWI6HKHX3vZ3cjUMRU0B1OM14Lxfiw/xOvKC7Lk0gwO9bz84OL7wNolFO7WRL3Ci+nay2+raj/YkzGyt9bXz+U52ufN4fqI/owv8hyQkul8vqXipjHveffJERWj0K2xrgEYWeGMeHmCHmD1VA3+taZEMaGFgUW5s6GVHSIG9FYcL3zOSzOHyHJnaE/YxerGoskeCqm+JQ3fOW0HUOb1WFbdytadRk/vd5tYBR1sGidQEwU/p22U+2sj9yBZ/dLAbgLOypcSfToFz/j8gciq7vBWR/h+M9rb55dxnC5gQKwFx+UGtmXDczvhIivDNPfw2mBBMuvLk9LVCFc7AlonPM205lXu0U74OosGAzIUez2qXt6zcX7nSbnXKUOvp5koEF/QwzyArTexDi8c8QZwZL2B4uUc7Lr7dWz4dk1crx2sFK3L+NgmLTPz2cCYVitHWAyMsZwj2eIG9rze/29oBHrA+Zr2QXx+e+tCC60QgqWIsQ2OY127sixApyF470nKhhryQA72Q3OTjcJ85hB1YCSJgfbaCiJktiSRYIVyFTTYVt5CDSXMuSe0/Kr3FZU8ia7R/VZl2A5iQW+xfd2Rkk34LNXjL+hSTgXwtpbdDcwPqB06IA+g3dM4jNJhrDJ3RdeFJT1s8W1xJWBNNKj37KjVLZ4ymSHORUkkKKfIB1ZI/ODVtzS1JCqzP0VO858KNOsOM25JEFtQO3ggjx0WtWZ0agFFvgClRLhL2oPKWIhh6cCISyJUcCxsMc0kzYauCtPJ3Ad4s9UOUV7pOJcRSr5Jj0XY/xCv6B50l3lKEYnXvbndOKd6iBeTUeEpSqfUyZ2vgg74td930A4Ki+atZzmaOmNi7iLKvKG7AYdgQkLk6/3GMdlQL7s8kNzKLqDM+e/uY4cCbYlK5QRZpqicW5kuNq7Gmo1h0+xjDpMEvPNcw+EuXmMHbRbldQzE6noronQls25dZGhE+4Ogy7euFcnyVtoS9lZRRX1gbJLOvKrdSmHoZTrEHr5vbYjhZdCXCwLM65eZZMkmW0FOyMKDtWCBn9PSjlkOwC9r1lpCZHkxvFPhFvnN27uVGGTTiqMiI23X3Mhg5rXZucZmms9WwLUdXcsgE2abUBeU6XgqJWGJz2vVa3LSIs9w/BcgVJXns0UuDbZULJOYoUGHSKozC1WXZZSqUHsWsCbs4EwoNmkWb2sngV5qdY26O65a9fMK5iXbtecGdbXq9Wq8p4wVHyJ4u1kTH5gVRmSgjlf6dUThMvoh5HeofD3T020UhxvP6MZecDWfBKvNTtsb3iu+zchd9zTedIXi6pfNaEgCx1i26yMGKtv9sNG7iURRMl5VoTmrhezfw1nmd7RulLhM4hPbUK6fjqetwMoJS5sYF74C9HV6we5AhRbPVhSDOpLFuYqktBFfxwlnJCdKMhIm9lnJIV02UTOs6cgNsjxRiqaC8ZWgrOF7XR31u+V/hBFXLw69/CFmjoV2P6c6VKwa2qiFpOJa6jBZlmsMUSYxu0SksLRqCcx8rueqMsov+Ln1UWAwz4uOYMsyF8a3B6TH2ut5khNzTV7N69yB3wJTQgBImvFFD3IQmuNuNff/JrDqxmAi/vxibcAP1y1yZDUPLkC2WguodygomzPUz2X5p32JULJU4RS1RXR58TmD8iTmGKiCfI54OPjaCG8P7ExoKq0acdGmx7vjNnAKbKhGc0Jpeu0MVkqSU4kMu0CKA9VpeSVx1rCpFFm2Tg32OmtWEQopJ2cENcoJgeMidWNTMUw+WR1n9/h0h5xv2E9SQKgH/P5KvLuoGhBKzwRhQnSXcYqWYljkMtDUyD7dDPu8aD4KJ+427dvyf7XvPbFDouChh/bQIZ8zR0bTXekWbrb5/KZ3WApj7Vl0LvWhfeyv1yOOS5OPYpgxd/jorMrz95GEa4e1w1vF+6e1eVJ8S/Z+Ww5TXh6ntREHgW6pJpf55MWV8La3rPQwvywkriweFZYerpVAcw5Ikkp0YgYVI3Bh7ekiDX+kkfQ4gagN6GIEsibcaeJbqRUg8OSUoIfH9tY132pBh3ZiLI+TJ2CHHxRUQTj+uYKe1xtVBKySpBMkcTtfgLrLCZMAcdvXJNCS8mBJqfWOzr5BzuEnA8LuKlPRYEfOabnC4/XFD4yXwUIA5V77pPd+byhrWDvPkOuKuYZg97Ey3CnKLvHvpgvHAq06z0WkpOvyzIxOmSiBqGsTyfdYQ3vIaaNNsOrGQ31jaadDRAGGdEy0tOH7hk4UaUVyHHuKvrXOsm4KxsPguguAQ8mHaW/82xE1eZywLeuo8/pjR+CeFyr4EwvySi5X9qv798NUNkjwZbjtPAWmdQBflXMMMaduJRjIL8dwp3XqtP7kFMXRLY/4dHAbTy431Rle/Wmbd3/voTVH+a+unlv5RmwfQP4H031GMWBDGUwvQC1jUJsQWzmgJgfbCdQJAucW+WhsONw0Vvar3CbNGeTF26zT+n0zynOJQOqzcSq0GSuBgcMIsQ20SZxBELVcPXUOA/xmYq2xGTLTHlyKLiqkomlQYG5ZiR5tX42FN+tjfsuXCXq8/pYVYhjBgXPjDguorrydSOANBOZwBl/cDSMixd7XnjyNT/SJEXDhmh+yAAxeEvR2y9wDuMJL6mHao/AJ23sgLRwubbLXat9XeK0b8+Fk2ruU7Gh7Z2rkKa93y0c4iWJYB51t1FzFQfOKM7WxSx96Cj6Q85ECCLrVi0S04Jjfw8OWYsDlSwL2CEiYtdWeCauWASFZ3MYc+qQjELnXMXXbFB265fBkmCKzmFYzokDi8holX2+VDhBvFzax3GHBMtwVAkNr1VvYyGF1ETa3c85RmbLN3AQf3f87Z2IRszpJLOXntIJcDV3PLbeCqyuzaIcd+2nO05CLYKRDn1GFdbpp12ApIdimpdRI/TwLki7x6T0X1Ssm193VKMF8NpRukvr0+dQJCpGn9/Th0o8usVN85MO1ArQJiNagw95+RHNibr6G1KFceAI2Fl6kVgCuXIc/VkqVR7kIn1lCFzMr/UTrHw9zEgh39vWwSwkkDrq3LmWy6Tz+hweinJT+qC2pz6MVjss/i4nt1udTfS1VmQzc9o3rfRolQKRQ3DThbnbY+eNMHiseUGZ0NfI4KQ2uEPfj+QCWcGSpNj3KW0vkufajeiCOhkm2xJQxvEO/zFHmjCXWxFVxmoclSAkJ5asTyhnzT6kRPMo9poNfGJZ5sqTEyF68CfECdUpMHFTKIqU6E8rMUg8OY4qLsMTLzRwmmEVPGIdbnGKDq4XacE3H9pYOUEkejMlAgrRWj2p2QZEepPakXAlRH0wO9VQhOAZ/O5C7GAopvF1OSWT73kVzMhBsdFikZ4yHwqK0VG7Vmk++EE+6+FoT3nJ5xxISyI4yajOuVjAi8+O+5G+xkxqXHyCw/lpTFHri0C1bCFgllnlLWueIZPFgH9IR3nSFDiFrlWu/uRbeKdb7gUGMY/sieT1mFFKcFEYIq8FkixMCfDdywrVOm3eXGKCQY01FFXvUyatGIYDLY84NbZ3yVTVhwR5NhgkOiwFr3ma+VkVhrOMhx6CSUDFd2MjQizRnxQsgSBaS5RyTj7TTAG/Nma3kn5HLUSs1JMti+kLSjF0Rp16qSpyyKr4gqFU2wRPCYNfsLtkUg8sjsPStgI+YLOM6RHAPvFuzmYBtLF8Wxxp69XSkWmD++6OzeiD8TyNvYVYZtDK3HII+y9EbxvrojkPrkDjLnvhid4rG1psrG1hz7I5BdKW6LEPVhG9zUa5+JSVcQzZCbiXQBUE4hjwKhDCesMeY87zJSc3XOsnlMg9CL7BhZNV8cH+1JIsFY5GX16jNEA6ajGRMFIEuBilG3TPh9MrdNgQPHWp7NwMpIHnft2bllUg9dmCI++DTDtIJFgZFKKXf7Fk2/H4PI4R/DwRbTBKxCSegkIXcOvFhwVYhWzmqXtifb5gGEfcCMjmo4s2VYNxUtmpUROTfR16sP3s5e6OkHua2i+l7UK/9DvdaLutEH3rHZcxK620FLmJNtO/9HC9pGe5zC/95Mf6+/oBEHNN9MhdzxXcggfDTdEdYnklZOm8SYfbJfinPEy8BcvEaMS6e0XKcbDe0fHC7dhtaRu3ZwNofC63AoEiV7mL3cY8b/R/sQrBGQ7OY5P4/qCN9x1hofDNlBCbMBZuLWMMJ1EHIANsWz/xx3Nfle9C5iokBI1NT5yV2oN/Yvx87HGnGOi8XyHxIih8FRl3yjjZKwszcG+eOdAhBqnSanzpgcQPJXy+hB67Msq3JbPeMiZc7NsqbJQAJVosQ5sktlgTvq2oJ/orkqK7V7UyqSgvDtv7grPak1C6YYHmTYMy9O2SEVYotcWgozxXCxSPBm8pgPjg5xUOFz3hBYo0aw0l19k4bjWQhGIoxxrB1ZIeGI7HshJpO9q5XkWRdfaGke7gxJHIlWK+rBauJ9ohiS76YH8IXj5W7AmEI4xz9jWwYrn7PSUVAk08fXC4zGEOgKaKpz2FPqpMTAO2VsSMucHQsj3P2YmA5qquxMVUvjADxWe2YlmaWHXsOQS54cKCQ681sv5ualXOyeHOYsAoq3bUO4VObHU/yxOk6ZUYlNB/7GaCmB7O0QlDkdWzyEVW7YSPWD/m4CJ2OKsZBT+fvO49x3Bh8nSk/tZZnMxKHt9tQ5ImKcHTWHhIMiz4XeuGSS4GJVxW7pd9RYjlhlUSD/EHsT+KitqUVwtPGe++qz0X1CTCKBJfYp6NHYxh+OQ/9BAS3PMhT3tdjklnFTjT/MFiUpD2Cb4sUxPFvi/FPIa3qRONJCWvT4jCqvLa1J3lNUXWySrUtz3fAWtr+mpskqC3BMgjEzrdzOhTAxRe6vst86HA7xquv/ueWoiSrS+rYZ6ON6eT5cEFab8CwjwYBc6DcWf9Deo/sRWGRmUAS8/1ocaJlIbucA3v/u/3a+m3tj3lJMi9/38xDrX0vW7sJYREE/x7/IzIjMan87UqKkZ8W6/o938s3CubEOQ6euzFPbfo9SxVVqBbwI8pny9Dd/WjEqQ8oVchIJlsacfKKFMZLJBRW9y8A00+/B84A5HnCPrCg1Aq+4NEiHRcERSs702cInW0LD701mzpO1jtDwLgmskHSdH43JgwiaIsGLTgTOD0BceaPTIUYD+9hvqlCrKkFD17I+ftC2RwXPt90EUZ41nSqARe9dLDFxMgFwAR1tQxcVLSEpXmatBTYGZrpVdRZQBD1McAF4V6pdCPJ59fG+HuE37vS3F0sMrgKGNt5BciXowigWtWm/Gvr+w4E+CaqxP1BKLn91PCjhpwh3/EiVPFg+L4oPELC64nCKSrdzSSs0vVjN/IYHezHQgVUbPq/h1zJctMAcl/Of2Lqk0AgqrFfqtFy7f11QHHftMiYtYDeYyQuro9BQ+O17IC7oRaS/NyRm1ZmJQNGCT07vU0cl8TLLJSM+8rzJZSyu29/X81JOW/7P1x7dOGvKTDyrBPC4G+LtflADHiaccd6sswPV2MHh4G6wyHmBbLI7+x9lTm3UoqjPfABK9dPE3B2G77CaZMxPpVN8VBOLfBrkiF7Fqs+vP6mAxsZxLnlu6ne4MObADticse2UUMDhfUoFIcb34Hd82tmpZ0E+lkbh0x49agRpU5KQT+4UZDzSgGlKcvSjku+uoN3hd5Q2d4ZTZok2m7PDX4cA9Yr3GCraJ+kvB5+H5tSEwlpfODqXCi0ek0WJbo0PI1gFP0176ximQIzCUTnJv85Bh8AHg3BL0Rh/39XmG5htEB4ERrsotDC6qnUgZqsj4Z1a3FRnaPy7VAZUO1HJkXxBX0lbLNsVnwybKncHd4OJYniVnlF8hSfijfT8JHQ4hJwF8mumMQCK7IGHPwXtruBv6pNggHZLQYsv8JCBCIpPIQbE+I24RNwcEDqFGBVR08k8wsUVI0GN2o27FrXFt5yxgr7sBT6idBUTUOmAkwsWL7PEAHWJegyDgf/QhgJJEUAk2cS0cCd3AACEcmQrEiSQiskWcPYSAwzB6/DxvyJ2BW/yyr7XzLNQmvCmimMkEGlUSJMBaBsU+KdXk7/q/cVsKnk6lW9+OrPibsiySaLAYGMUYsVZQ5yMMqAr4FXUH0jo0UgZBUaDAqFQSCr+DYLvBjp8ptCz2uM15MbRLKsQJFlDGBbTQi3hdKum+uFtbNrNABgvjRpNtwodKKAYCXMjRmGQlZgMGWcMXITsm/bL883jI9ZAkNPHwhBySqQEABSTudrV+DmorJA/u23kvbg1xC4m5yPNyMDicwX4gbpmCAd4rURRzWdjp9epBnpntcgcTcdmIuVO84/jkFKhyYAFaPa78miLENcmEjSRRF5tFf9TmRe/eOu7BtYc5XTtPA3mJYBDEjcrPzPT9Hw+0Ao7XyXNeOvD5sj9eduWdKL7PFsKR3c1q1yHUvQs2D+cCn5ewJcKMfnH9wE/ck0upRmZsUnrSOOlQSaCKRabcE1mX02MyXNrZ82HnfIIsexioAyXA15a+gBtgoEJG0+TWq17bem2EcmKVU+swuDs0FRx8xSHaJY45wFb2QdThL3WzkZc/fYgFhSmiz+k7bBSbFg3YvL+wpZVlV8A4hMVXUxQxeDQwgKwNeycpCAoSJkJdUQp+sgM9CCHaooFR5alznVt6ADJC7RnrIvTqD1WICPMwWf/PhxjCQakgAOEjYgD6B833yE1PTFJkjCYtxMJS5ARopZODjCULIqyUICV6P1Vbqv4rKnbLMvofRJVK9R6bOsoD8fQHrC91jw//yUY+zLOs88ZRnGRCRexTVGdM+vvn9ofd+jDM19we+6rfmWjWUumPICX6tKxyKQbv5AAcqWwycf2WLCapWqAJgAdutfCUJWKwpGP4/uKXKlKUeB+oKno0bxn1pJAErZXhMHP7Qo5AclpbKas9UaEKwJf+fAiD+O3nqR+d5g1OxHYkzDV+pZRW+7KJ1RrWEyQzA8foPQMTc9cG6dGKG+L0aD11Cshnz5JJgTBQ/rUBj4/F0C+UoFDVUfyD4fIbmQGNTgVakaeZJbp0R/vjurm31JUCay9Nib1isQ8qo75KNDKLojxvhT95LuYbWe4EkpivyxRL93wRrDCBdGgwJnylvZolYrr4nt/cMJv+ECa/Po0uw1Zs/YYUWG2VSfDOsavP2vI8ejEFgMmn34XveOCYqH+F1hogcsmzCGvIzw2wytfBo+ihbENe58xFkW6qW7Na4joTFn2chjj49g5KrzyJhxIHh6NEXurnG8F5tlsUnxiA1MbNJrnNNaimzxCcP8Ot6aI0OGweC/BsNaatNBZ76Z9ZB+DIXuub9tU5ZMrTXghl0in/4AcCmzXF+BI0wj3F/ECt8AVEFmXEAIyIn0vWmaxUHCFRQbot0dGqR2K5HEhKkT0cSMwXJ6Dl1HOxeeNiBuQ3RYa5gEpL7mIRll1J7RSlg7FL58Dqv+QczOmequj3pZi4wJhAPqcH0knu6p8cdoVzXU7oThzOkh/4O5w5SgFRFECoZ9yt8KzPfHIFHDr1LOBroU6BW++PT3j0ST57y7skaaIvAhHShpB23U6E0YZES4K1YUOJ4Tm5NuH5+t+Wl8696BnWsKE5pM02RNthkNU0ymQdtVshx2xwrxl1fjDcZHTsu6CGyjwkzZLNOSRXmf0mLuxQcnzaZtqbtLSj62Bz/a3J59M9yJBvw1loVTiTgFrbMPlmQ+yweeE/QC69g6LC6Mf4f49+oi3Vee1C+ruLjDHC33B4+N4Gf0b9RvA0OSAL8JRRTsuIvZBsK0h6k221QLsnA/aAQiZFDb2HxSR4kPvOvr6lBfp6iX8lSfr+jrD1e/M8gz6qKBvNjY50hMcfJy4yDbjCvUtRvyvZBd1iT77wMQ+IQpaiSKwyKj3fURDUW38vDeddxawqVpKGn/iftMA75aguj3kI+k5f8GCwrsbPTFaOi1Xgr6j1fdSkqx2jdqaQpcDuzAisf8M/1udqqwSBwFojOy+CtRHvmZX0iPDTPDu+ApTlp4D3uYMWB7vtuGwoGgPyURynXS1ZrpZUi3tSmFY/dbRZjtBQKqW8cxQ5drK86BElmNd4W52NZrygb4yMr4YTUMOshpbx0d4/OJxH3I1tBsGN3XmCKUxqbk15k6dTXGKprtdJXC+gN7X4MU0P1L5exDeruW3XQK2wLHaW4B4GSx7nvZKaubuWnLrTszfLqiT8dr74xigSJTXNh6OC2O7BOdo8nTugmJJH/qRrXvjmnrj1w/AGVhfhwRv5mXGM28bqf3fBJFKOVqlVzoLLM0yKwxm1V96V0tGVXfXi5AlEU9dugQDdGY5dT661xuGJtjfafZeoOPSKhZPecbp/2XnD1RtUIkINZNG4M0aTWobupMsr9ABLJsh0X361iELlAyfQWfoCVAXMvJ4j3RaWuIgqtZG/yUceCNYHK/hztNn02M4Iil4WYMCQh015wbLEopGJBCzLmTf6LDE66f3wDHyNtEnUKjidFYYnHDKeRKYzjn111A0G/5lFxtFUJFgrVlM27vMUKfhBr3slwJVsUCRYoA2z7iaD/TPFkyEBUckija36g7ZqAjm9BgUVZ9dSSTWxbzYpEB90apvoQ61RFholKxU1d/5+KwLTYmEtQ0vSkenywx5yqjJcGsMqjYhzOpCiTAnXs8k2svq6pcJUFOtEfwXTF5rHUUhTzPRdoEFWibSZKUjLxdg0wR1SOSCZ3TZ6qKcCO7mIzOyyJcZssoDcGaFChskizlmoxD44256zBDe17xC3cpLhYySbI8iEGMy6pjSQpCZ8JTw5ktp+NmaciZCCGaagqlVJcRCOfiAiflE5K8V6YkucD/XBwlIRISix5jQwSIR0GMX0rWIPX1103nr9flEfGcHagUS1yCkHrfHNYqjot+3cai6svIWRxqkBXAxMKCrRcgcX1cDr18/hf0jXPBM5HgUw+aKLP5Utp5yFI2HlSaPD1t1oUfFtGR4zELfFideoMdaoGPcF4nDmOLOeIopobah85LGVQTGDHhVesZ5TBPnt7YePv1appdmJs/R/WHxTcBa8NNDWozV1b1P+mxuVOsBRrFyg8mPt9fDeLIcm/BdCf8e+ny0Yhbx2GsRpJ1Ov0V0tX34qvH0Jl/3snN4cNSKI10MrH/c8RWIUuqtLOlZgn4VyeZPuWhFaMzcQjRy0SUY9l8W6pKi0TAnYI6YBZE2kjdcW0hdMdL29eNqkJxDoM+a9O+e9/jr/AUgG0oT/wLewvdROrwScUa8vrg24KNoeA7loiAql3jmeVXgIpNdM18jqwURkSz1pHFj1upDfkdBvPqJGVgCgR8oaPHxZb2NsrwBBxh1tb5ivvK5g9fzfqIojKrZMUZzTh4HZmycFYlrH6CUPLQTQ3HtHvSppDPg2iVfGA5H7kHTQ4sScjvX/KGtg7s1WkzYWT0ZGZlnk/gIBOLa1Jspu1AJ8Ql+8thAZftMml5O2aFUnlvU7rBjhuGLGjBnWVOulAK7oc6N18C9wa2XthBowxDMwBGezQquOvUArK2tYGiRGugsdyrOiNMOw5fnx/eitLIpAtXO2wbyp6ttXT6JF5FPFxPMvXALhAjxPEtje7fJ+/J43J4Ktp9dX+aYH0E1sJwrk8Ae2jYOQzcgWQ6Oa96oljeLiYN58z92OzcXjw61K6fmqkLZHgxDWsplv7+NhZyetAZykfrSLgM8stclQ3zzc0BGhTbyAJxUg7LrYZhlBiNR8z31GsiNiFTJG4x6yQptw0j60JvcttROhVl2PRe3WChY59+uk6CdURzQszjZOhXeYXSEMoFjOn3O4L7EFPPHRiFYXHszk2sGySw8CvcM7FTpSYLnfOzicQDdjGMgFVwaSDDwMUIMvUaE2IktHUCBLpf1LigvWLW4fggq4IX/md+dFkdrAyqvKABzjlcRac8dan5YNEUFxHaDRLjwPFNaokN9KPcZlshLsZfYt+8Ff5KxA6K1SUhGaKA9ARWSmHLqjsiVolSP6CJNmPNUoHY/MMEcZRaiLM80ID/h2W2TIVRGhYP4i+mb2dTd2kIisvGj0YGd454NcBDw0p56hDZDOLCSGwCaF5wMQK2hkuhJ2GLEVCMHgi/P0BTHH2gS+5WAd7vPSSXI0eh/Chb7h1sEKoQl5Lu0EzoOlNqVDO/SfMW5sRMfgNaKs+5+3eGwsJxQcd8SgnxQa36+pih+CCCJ2Ro964ZWd8RLIZgS11wBq38FlCTy9yPgSWx2H0AFbpIw51AS8K7HlV+xs6fJn0Lab+q68a/mGHG5dc3KMEXeKsdJf0bgZXpdIObsaoFVzycTbRr4+QiKAc7GHMhpelZ5bA1l1m/ym5+vCkb+oCnOHLp0Nso0d4GooYYM5XfHbVBWiSN1ojiwL84/ia/e8vlqcrP8Hka8ha1xVw9EZZIztqEGKhKiF0iTyrfbVHeo3Rby2w75M1OGrJx/WmIjtsjGsYeTpeyWRpaoXFCGHBib4BWwPpBVSLWWOjKYqeqOmXJK1ZtZIQKErT9ZooTxfe0xrmeJS2sLghBkDtiz/Ce6XQ1ztVgs2wPD3Z0NdEOtWXRl8YLiqwvhHp4h1bwnfOXVBG5V/+2FzK/l+N/+00wOpICOzgZxWlYTrBdzW5Qi5aeR6BFg6LVz9dfFe7XKwsOaU33xZyyB2ewfShkAYvCaThAOT6K8xq768gCDo7sep+y4G4ej8qQ6XVKdA/UMx+pnSV5jmSspLqchLh2epHmKXxoN7yFBbnd/YakypIi0nWZtpmQZa7oJ+yQO2gCZuvYgDVEIIsgoGs8yXFlMLM8QVYyWFPXuXrf04Tf3z6kWC9Q7m9zHp7IJOZ2J1IbhjMgPTWHfs4UDKR1Xtj0fbJ+ga/pj3lH3fYcjindMEzHXLxuADsobiJkTctS/MxDggfLvFBLE3rWbV8P25TKsN+/C3n3SRtBfQ+xV+H3wIeJjWKFTYkMddLWIHJMFPxGnEWAzj7s/j8GvjWDNkNua0HUwLPjaGVY9sH/x/9Zrf0tXO3RtGASDKkIbockGMu/ZYRb8zeO2VjTobxckro5L6xl0KQ0wj3oUXEoh9vuSy1WDxARACR9VrqgC3WcssXU5uIuNlWUk8E32dUQY4YakLyuFxrXFO52mNivnBAeZCcKF7gXeKNHtkoCQ2x5q9u0uex0Q3WbZsxu1zan6TYQGYDOtbf+aZPBuyf59MWnpDXfEzIXzkcIuFuUd1XX6yeGpL6bsiF9dRrykE8AVzGcA0mecSgzftN8EG916l1F8+28MAJRgjk7xMMklkggGJZ6ipb4jvICHzJ0UNSallxHcXXIwuYnkrNRGrpl1Cu71ZWjVcnVDk3kdORhr9Xv0tZ8wg7GJP0rfw8USYNWhvEvNt5BpDIbUiMrp14YP1TCSEcKUCv+jsl+JEWKIw9OFGcfn6IhxsotgDfkQlPAvCEKqKIUJgWSmDtAQYRdN6wFr1xnoLV82JyUubVnopOBRhRCscLmJKFyYOqSx7279FDZIHaSIlBcpmBJnsdgiLBfCdEjik4W14fuZemQRUp1cG+M+4f6Gw+00WHH9WtYQWXvaXmEhAIVqh1WV/Gx6xZSifASEF9E+wj6XP3jpSyD9fA3xrO3QYzZUoq9/wQT57qEZl92S3lkG96h7+bvJ0562lPf/Y4w0Fa4G8elQ4fS6NyE9kiwquJEhIGY6Qy3/8LobLg3km/T/f+wxtngjRY/2vVK97rUUT/rqXoba6G32vQfTX1RzRi+pFlUp9sSSR3Vivd+p2/4dxjAsp+bNCgUrfNI0G632PaiWYcXlCOnrQoF1qPhnWCxwVWBTnERoVaWfECejmyVidiZiv1ncXEy3U+e0roG5icnhxl1VIR/+ey9VSSPEjh9n4S7TcEj5kaDl+Myhix5O/sjeDTkWYvtSUyq2vQiuDFAjd8GRkMeG8uVeAqTShHvEqZS0hcnja01vWqtcLm3HYnEiDM/tADjYi6KGtb2GlV8YahXZ1Bnh2Yr4WFJlIe4YL0MTWJCI4n5DAjga9ZmWOB+U2p7VMmaxcNsGeOkpQcx14WNRAybXr7xPQHbLJEEVNyprQFeegvLmIK/iX2AWVrfh8oyybhgmYrw8L41Dh4K99vJer7OPN6kjoWDpsmylC1hvVmsn5fcEtrHTdno4PFrBh0OBnwD4IIdOFHiLpwLswZoEvrAa0o2QvH1GiIqbjBSVgUrOUscJa2X6sQaVggdXa/R1OPkDm2DimEWnmtfSktbjFfS83RTZbrsVYAvbrlGKDyhmgS/fWpSXRLuDTsPl2UqZm29phHljZBxd5KG+83U3rCMglJiXEzHSr4N03vyMAlSuigJ8z7LhftNeoBjLdE2sk+QQuFoJHi1wBS797GjM96ap2SCUeNqKoperiFCIxlmDMug6mHTEGhm4FJDOt5eOCbF6UK88d5hGC7hgNNxiw4XiQfX4j7Ek1u0SRKhSskcAR6S0iUQMxqHVzDJgm7+3iOatiZGDUejjDwpZ94kruasyT9rxBC/2wZQgLzLypbt5dRRtdMXqTdbuYDc63FUl6zFFQtH49WI5XrbP5+xGe+8u2aTLhA+BY4XvlUsOh2b5QJMR+HNklbx61Bw3wm4TR00iHdG+FDFJNyYerOVK2qF/ifDl9tnkMcjJuXO5bTG8ROtQbTHr9fb55iVd4DyTuL4NlAeJNQDlHbYmRTc6cv1FsAsCUKPgaLCW/jS3I2J9G0NOdD8CayWoGD9ApFYEPP0TpaXjBt8w3uKmCA8VtEoOu+xu9Le3xAGD9izJpolRU1ms8F69ujeJEDRxP/2HcY3RNGhcJze+C4v5xTJbiEhpHJnEHpmZDhUSjDJU8L12eJsXTFtXvqmKYNOHqDwIR0xTzozEZGd2PkltKEMiTsSvUWOHKHKcmt7+RlncwQpVCERruMqWMpHKwIuNnQWPqHS46blqJ7j1bQxjzFXFDHRrQeyVUURf/U4SaAP3cu/Uow+AKgcRQq/OKFWNXHyUlHu3vKNH/x1XntGppHVmkYqeiA9b0TGuSb3AsXLOR3i7ZC2MgwdY9s8i9u3X1OiHhT0CjGEgvFA2GIsxFTfgjj6rq79BXubb4ZZI1IPyrgO9GWOloSotMO0VZkxR9vREMMCZhVu6Hw1C7aLkoqponpH7/NDuap8jCXNbuC6uRiVgjXYZmYGzTXoYpHEyHmq1xlb1oknOXpfe0NbGLm/pcAgaEVz5bVLOTbITocqc6l+dFibcVMPZHQIhybuWzE2XdztZ4Q+13+gAIusG/iL6JQRIVcJFTrx1iF1LUmbEJNWIZd9lJvGwBJhoJKSMyhkdhazNYj+SraMSgE82X87aimck/2KXigru4YSFJCx5dbQNsTRjHqzyUGkxwkJQmr8oxYGHzZZGX3vj4ssNnawJjEEkZtwaQS3TT30UUnc7/peKcxFg81qHiuFwB3wNtf3KVfzY8pVh6RrKY2oVzAHR1Xf5EXucPdX9Sj1N/jkFuR3fQwNsoMI7B6OTXNQUwlXQWyit78imeBiUV8OSvzWoekfooTc+wapT85BVN1xJKvUTSVhX9PnzrY3qEtdXlLMvh8VUGTncSFmRMGCnUgr30yxZ/5zPwcTr4YdWmV7ch3bmk4YSq8pRhrl87TyjrFlOqjbhVRGB6Ggg9nR5y0lldren7h12pxe3Pr3afUPiX3xaErpetXJhY6Qz/mBHcqwGrdvH4onlQ88HMgPkCTQI3CT3CWWrS+wnjWAwFw1ITUHtbYCcLifN0FoCQbsLX47dEPTu/of/jrL4aLhhCKcU3slVIDouF+PRcl0HKTQ61W32Ntyavk/9Sw77DcidNeCzgrqmrylYp2HLln/ItbBmxrDiXyi1/hq5/LR1sWCks26HrV1nf/4CBVLrZz21Q7VIpfMcuyJIKy27/LpUg5Np4TU1QfgV5PXi4b18dvV966/CJC50HCfF72GJHrJHf3GJ3jHFytvJtZ81eB7oYKSX1UkTzjEjrRb2FQfoKTzDKE4Mb2psLTBBiWf6nuihI/Dut7PCCklYmLjgjTaFPsA8sKzJ1pkr5sbytjiVHXoG8+XcQLKZ4NjS25T1ht/zNNYG4aXzaYzbDnW4yvWSVG4QkswG07npQmtnmbwOyNNGlyV1+s7Y9wTkVstSYzbjNp5pdU4nCrhwHjCtJ2HG4OOGA3kuiC76Q1FgTmIl8dsv93MojBbcnvfnbTZDjbbwbZ2als7tcVWW2y1nZ3Zzs5sb+e2t3PZvQH+YIiO3e1/o70jWIGC6KBhet7akobT+ORmgSQlOJnrkiH8/j2e07lcYd6FYJPom8DT+EHHwPvjhWFYBd8vdBa64l7De1FNcKHOXExwkZ/T+Ti6iT6fNjHOmYlP2W/cmabnk+33x7+oT7eh/TYXZdDm2V6Gfgp4kNEYZ3Ps3p48bMTYzg4E4MLIrDYiicjBC7+25lXnN4zAQ0jnGyB8MzGFmBhmJHOTonT/TBkVEaMrR/NIPWOxd8SZYe9vIYT7Ua4rbKAw8wgrJ4aAFAhD2aBF01GETHlTLhVUFt6fjrz7vhYkQPHIB1Te6/wiHZ3t8MJNa9mnLkzJc9y8ft9qfvdYy2kzW0bU8hsrjQaZgOYdY9EZ7ixnVHEB/meme79lr7wXoktXONye51eKbdKLSSLMnK6JdPr5wgazNu9k2/I5Eb/5FvbAxCB/ilHpkn8bs8z/+qqhY8IQr5HkMmBEGAEjifkvYtAQUlPbt6aX/JS+msiiMdtMGOlEO6RX0EKiXdhXY6SGQOKXo1VpsRTwFa54ntuM0P7KsifLg192sAhDIKkEY+NvWRO1SjVrndMfz4dvMwqAlTJ8WjJ+Z2wPXyqcUlw+9tWUBkmOviPY8MRuCOV7CNSXpklT/aMqCuiHoUwoz5AEe1Q/e3Tgwo+7O3VA26Igo4xjpdlf7Cpu8Bbti8nx29v5kCaKKJIjiMfKE75TvdsDGdyacpTLGopR19hKwMaAwFpuyFPXrGxD4IdCcDNVHfA5D1xhoYfwAaz/2p7Vz2fVzloHI+WCVyiwWJqz0+kW4A780PB8GkR6oK1+g0vMStl55Xv2jgd2nny4eaMoz4UCirB1fAq+hB81pqVSSsfyLrG57o4dj7ozEvFcf9hQFDgLeDigkfTvMkaGRFuDwU2QejtqerX0LTO0teMFJxg+HM3Y9vP+8RPOtbpJfRX0Lt19xFgm2BSsngUGqK07g8YQoOjd+ChKhwmDqRZW6k0dcEE2wM3S6e630eLSiSrmUTFUimrYYV69UGsJan6Ekcoyj1NkuQvsvEqg016n3eHa9TXydI6dwf4yUp3YTHTDX90EPzqIudClKcaAT6cJfp9TxS4vlKZkuJBuYJrkIRUZ4XRLYZwM+/OkclJLCELHF+ubwSKjVlRVurfeKHEuriWdPqpO599G3ZUZi8ZMETxUv7+aBormKE8WwKSoOeoCRhph/lt3ABjya7/38lzHsuAMreD6+ZTilgaWh9c/iDaVDUGh/7gzODp35ngjpModrE1GsINTCgB45AnBDHSx/Foj8CtbL7tSdvddEeNxpop3H5hBWermeDwB4DyETz6oZeTnTzTfV3bkkt+4ucMECOyXt5mqDU0DrqhnttxDAlvj+yq/3sZXLJMKhMeBt6h5xhNBaQ7vd6a67E2jZVJJsESsEl2px5STiQOb+fGVU3jeTEK3MBbpuuYvy2/VTdpfd8HovLbpz3eLdaP91dxefg3h3lc+VglktH0n5NJjS5g5sD2Cm1s/Xvz+9tu0v09p8RN+qa93ljrW+lF/xe9ZU5X5E0l3IRQhsq4xrCNjjJOgvzYKAdrm4XRIX/xXDB5qsb423DhPl7ObHlM8GZ+W6abqTMEWCxCrcqQLOCyn+2xx69j929s4B9+LaWs4OJ0HP9rh5828zAuW7TNWt+dAXh913moDBt0g2KvJZmqF2kBgNrWI5f0nsqxG/DG1KCMRX5SM+sB7Me1ei2nn4NbFZf4pUEIpelV4MrrDO/gxFcmk8LLpoZrfLhqmrZp+3wZP+jWYx7vkj9amh1SGtFPeoZctjtLh0xY+gAz6DsI1KMF0VVA6SiiSUZRYOQ+jLJ7/xL3gqWEMWdnqNqkcjjNL79JDGKCTo5UxgUyM1gTcaMIFLTzGGMOTxuceM2VP3BdHEHBPe/QmYaQJf5e/3T7raRwu8+AgnlXWDbi8cqv2vDvoefTW96sEAWim13dbmU7GRTOesyn3+kfhrLeYRghQoFBnZxGe9RWJEVPW8YJ/9P+IfbzqxWtGL2+KsTrv+EHyE7ykWIasLuele9rglXQGem0o5g3bCPedTkuDPAO/zYZmZRAPDbR5maet4E/b8MOoj/Jbep+hkv7cW/gFHkAGT1CNj8zTYLXcRIpxLPgTWYP1dAGyPL9uAwHi9mZRE1H4jgdHOtv4+cGma7JEuFHZ4c8xGk29Yvz7sYJg1u3QQmkYQ63VRxsHdPvJRePeAu00BL/Zc20KQY/9oEuOBC91gebfpG/pWIv8sLbHLiT5X/KcNP4490EQefSaLGEKqrme33mAD+BAe5S2JNDJ8YZusace2TA6Ke5o5zmMRXhiPgNGiuhNwp7O+ERPnc79X0V2bg2ngY7TUZpcXv4m3fW+GecykL6VZNQjMaWw7xFGHKqOB5E0QoDYZ2ep1SOUG6LSElN7yzh6t/l4o4Xm7/JkdH6wNnopL6pQeyzTIeusfelMOo858J/NEZ2z5uwQx0AIQtKgaSGz6+Kq15zqsAPXbHJObKEI6/RDW6uG4i544pwgnY7jTzYrB6NbaXAcxpCxp8cU2QyaI+j1Y1D0siveXIh9PYBeb6Bc/iV80jX4Dc1hu2kZIXrMtFAkyfahmBs+eJZE9RYFAjUJmIST3hSByhqfd+SJODgYYwyYhDHGgI0wBIEBkzDGmCYgXca2vk3uUMDTKsDTKsAzIsBTkC0nGR3QNzkYI4cfwiWOdxFzIbxZsi0MuhBlfjsM45sEHoo9AwprkAa/9t+7bRgH7BiA9WdEvJhiMULvxQbRRYLhDD+c3nNcMZ13noWl6QRPF8FNu999s8w/APPIJWTUxBkeSpx808oY7bbhOSmT9PphpOkv6LEbPCWSxzWt0ZqAZzpjaIcJRidHUsRECcUIOikezAGRXTjddcvE56GW4Klj9QyXVx7r+PD1oO/NOe3NO3JsKkuxpikZWp8BJzOdpilYwRJ03VBPYonFONMD1cSjeP0pFePH962MRsc08AkmmfMunXCi8wbJDTTRzUrR6HwvM2deoDh735Qj8hxJ1NBcQ2F1uj1twB0zOw+ayWeaMk8kMGucqCLt4nJPEGnA3yQMuWjS/06ka9KWRsIo8zOEw+QV27gsIwZKQw+LNrRkrI0JclmFCGX3wGfSCF6ay2NBw9AhIZoVLknTRJ8jI1ZR3J63sQpoVS8jh0L2T/OyRwwfYc+obWLRdnbMllCN/tQ2cLwDpjG9R1F7TPgVFemF2mWPKLI9qWmp0mQg2hNExuPBoFbJrNZwltla3TFGnIoX+GeYiw7LFZ+uUh4kPwqWHZcXKp87LX/Z+9bFcsO4ObRFbdvpbKeuJpDMlnTh7DxhmodzF2Ya7EQrz319ZIEtFSIBaS8Rl51yq9s7QEseeiPqb71ot0FIEQQTmDT7XDymGJVCuCN38Kq99Vkz33WKBsQUIKOcQCHxaO1ThQMNWOzRVSq6xaa60elPPkuKq84oL+w/EkbQMBuhi0tTJ64oJzAVFss9inIri4u0oi1U0QNwtMT0tKvUTFWHvPjBUJ7Svgj4gIAIta/ZvzOW2wvH58MUM5yDAaNXuZwYPo+n+rpr+ivsK4WrVkOIagfIjXueQAQpqZNA5tY+CyjXY6HRYS8pXJT1FY5vZb8lWFowjgXnjc49YAeoA8FdvF2KS29TzBSA9VfPXlCH5YpPy5QHyY+Czx2XFyrfOi1/2bvtYrlh3FDsRIEKktMVwi9gU5xFRrLLfQl/I7AQtigPtxSNrZ7ydqdqSU+BVls5oTE0aXRdcg3bmeFoCS7HEjx/AXVD2eBxKyZ8ZpXBFONQrFBLTWAg61HqU8BMGZPxrZ8GEGlGFdaLk62E/IgAt1nVXDVBSAQ4Cfy5Se1pd0ONoHGx0GvKcV0r7c4matdH7UddoTb8ZOy0iE7vfyerT6XVb9LnF7yCrGFD/mG6U7n90/6ZaGfYtLUqF51fzxbfBNS/CGfeElkLMLHZp3N8VF6uN9Yq88BPcXc6VjRm7gF0BnQ1RonwaLukBAXWlzM1QK3XOu15Xzhbp7LIc21m7I1aqy4oS8DV6sLcY0UMlEPHI9Yik8lzUDVDBK6awlg24080mM55YU6X0gG8mx7XaIIVO36yOXL4FLdOowqv2Na976Jg4X/RxaDXL8u1FBrb7Bla96xfipR1tkuMWiBJMlysILu7cSsL/CJT+FOrlj8g2xgJXcsFiDmv6vf2jcbGIJ5fXR8yW7NLXVWklHSXKdGFnpBFD03Zk2b4FZMxmuOoUFNqUxl7mEBgCBrg2QwLg1hMRtJOJi9reoEW5O9gUK3VaJFU4SXNaxRI5spcRepDohx8OoS8ydEUdMuwEonpQXdfYbmw1unK8kLyDrhQAZBhSi8ngUPn9dADl4aur3A6uZ/hNc8VcoeArvqIjWAVS6HrxrDAGNXdJr3mkrWCo8b64OZqdkxwbsEETrGpV+VJZh09pToo6z1TByUg3fcztJY1r4AcFDksVm83Ca1jYdsBa/utWeLAxpZrHLyE9FXVowswPWTqjpYxdzxTAL6GmQ52AqgAB/T0AVa0I4ZPCmZp6PCFRgz8vvEKr0EX4lPKpnWM6oBf1Ilx8I0KTbwajJoaWMuIzqzSOeOLoZIFKuw6PR8KRPKXXCwcYKYENQjvAtMdAEW/zOOfjagP5IfEtEYSElIAeHoxY/PRqLwSVJXDyKmYdiaaaenjrNSTtacTNfW7OSO1ea6Z6NgXW+L074iluR/BRDGYcy+QSTE0gc1+k01QK+e79bjekCVWQR82KtgPRcKW0OzOKRIHIVGfUMU5BYG3LN24Ddn4hl/eLAYfR/qIGObBxsOyphMCr3JzZSSj7DIjMVX0NPrjzmdLaznJE6LdTp228trnlZATHPxAGBlZWJh0Z2Db2y/WbBpUVjE6YxvHRaK2ndY8vmkuzScNljWqKM6VV5XoEOLVSAlt2VJkSy+qG++cqdIsJET4tIcN2Gy7kDUapQcaVd31p0E8KGnhfSouyG7yxHqFEBjRM29Pwxpe1LpAJnVLzD9M5aJ9UioaPmMEIQY4TjYwZWrV5Txy8TaQRHbNjU5HnEKjzbcBEfTWaPKtkeixaHEaUpebUg2qKzNmk8xWyaIMFbi5/DDFLhi0urtFy261aJ8iU5QlawmuTnHSAOhIS9h+g41UE3YmkHi/f/72E4VrihGCTVuMB+HOUIlGf7qaAy0IQP0TmYy22BsxgqHNXT6S/NFUg0lIngHLsB0+fTNo/tUZXb3JdVo/ViNSMCnkfFleEOaQsvzn2tF7OXnSca0o+ICCFidG84+TSnE+ztkG0FGAl6K8afdi9HF7qu54GyUJrdzhRPv1TBPcXNMvTPl1gZJbs8vV09DxwXCtKk1RbHVcpHu8734stof/vqeA1N7Ms3ySfdxXdZ1jRH6ug8jIWaf+4GGxgPa3gV/H+7ZjwfPfqP8x3VH2ZOR2PpJ3f9nitVnSg9LpXvtsG7cm9erF6ud4U1efpwm7SIlsoyWWSAIQkVgQEkmx4CCfTut/voiQCEn3nBIyPD/lxY26yrmSSuak148wUI1q/y0Ue0T0NOXS+arp+bV0LBUyuBe909eCslv9UGPgRzubsffn6ozY3rf+YP+/Pzv36fs5Q3H4kcR/V/UzdLPzH6Zlke26zqLpwmS2iVdQ8vwrgwpSa+hKZL3nsSicNbwNcp+Azdj/JX1zbwqpXY1R9vKkfYwu7GazXT2T2Rp80WkQd7V0ZWLHm+g96ZksLhX0uUIPJFx/Gd0I1/DLTwwlwEG5lsjBzhYMyG4KtgKDCQrM0683FfqzohhAheQLzat0IlECfP0iYDRHo+fpbI1yH2xwaEA9hntBoajXv5ASGqyL3tBQfvpbTUPqME7ii+snOc4KfwKk4Lf9RGGoMB25mjh92kmgVewmw+g43MzDjfGk31C4cdazOEYqZrPqvJTDVRqPfHZZN/0QUCAC2Sh0E6XgAVhB1OfA2TgovVgVOW968nC4xE0ZnG9cCZWw/cCVH1EKLpU3hKSYEnymjWvMA1BYc5zT2cz63cSm5j6l+jeU8DR1pEMAG9M3dl9m4A/DTNzgo9dQBrFGDdFIHu7TNnisjmrBtSTfYTYcT7Db3k4eq6Oi4sozcbGlXl5Pb4C7N56xSAf2sJluYJ8jvsv5OVs5K+zYAhR71elVGlHlhCNjmXHyGdb+RSTzuNyjQTaQgEF5UiiIeRJhrAR3KZc5Jq/v4eE1n/gssHPk0RCz8rXCOOXXvqKUZpoFig70e28QkTwjuW/KJJyEL2YKcpqQquUOa7gmcO9jRqd6+pgF7qsinJntnfAoNADqx2ZQr/u6yTu3JUxvYVVsdSkgvJqyguGdjxuX2vnlHwCOYsLbKf9wMIGttZ+7CXUt8Rp3NHp3TIgNEgkrTWREGXJqYTC11+qR9CQ65diHZ3o6lTG5AEU6O7S/T5i3zEajxwlpkQAI2wN6A3oKja0SO5FHvhxlGYIkJNfWl1PEAI4hLqvVL3QF8RPcBySYfHxVKRLAz5z5jqefdX7FxvD4JczmxEms3S/px3U1Rf88ZaKOdbwh/vwKk4XhOqoJx1uK/FvT1HFZRsFPaq3hr9mzJEtLAjSfOksPHJAeWHCXtgFYXb5/OpSoHun++OTMGKKtwe/DRAReJ1wM12tIObFI6PxPIqsIFT0g6R9q+mZwXJYZ0FwUr9YTOE8+RIUr+I4sDhoUA1tIiAxIQoiEyCAgRMlY/6LPhYIqRMXWrDcNCjgH1I+bLr6pdx1Cl11PtjRo+vJLiIL/MsvOF5l5yeiS5fnBCXiC4uRBwu3e/HTLijOmxfX94wZgzOgLCVRAFLpIwkvw+hYgSTqt5bE4kVm6bx1oSMoNJ/Z5X2l94Oa92TLP5uFmAYV0MqLSy7k2LDKkxQ4C7yasKAkKuuSXjRXyZEZ3ycfM+URmhxcBtkglfYskvtZ1Wy/CAf0pfd5j584U7N0kkDuTpQGBjpVBGzTVB/HwKjEvxd+IJxUL2LMFxjTAbRA/bvE4QzcJHgbmTQ/L1HqrChYe+2IAq8VFOrQYoJ8BPsxZc+z/8frBWsEjFqfd+Qxdkbw1ZgqzWWof/79LihggFfR1WwXiuaHVHUQS92p7YZSI3dajJIUYbyXH8DrMjKlTg+wLirJ9IgIr2/zp1hqZc4jseE2ITuKWj1Eeo/+XxkplNfoWMtkN86fL/5po60bGd8Prk0y0xz/RTQmixbxwrOG4Ms8DkpO3YIQqE0CHvkIjs/VzgyO1x2eXme00CvrBzv5MLxpsObRgyzhRxLO2x4s5qMa3nxb77h487l0vPALUUpAm0KcxgO06UhsADKG1nG2fkW1dlK3R7dCV2KDDBCS3CGtoRjJmTlL+9zuKIuqk1E7kUSpUFiHhE+FYZxptfs+jRSXbUFdqZmhOkBiyap3mn4HvG0rCXY8d5tYEeD6Q2cUS4k5TYEowCr4+Exosy6Gpqs0T0c6bBvSVFtg08gQ3Gy/GqTWz+Zfx6G8gkw+nwzwUmnpxIRmtdgVaxQGeK9lKpP1yc78Mp3mEg6SyxI8qX/ZxSAAEcp2CFfX65PHqFSk+IWNTjlKUWDcOomv1xZjtIhZ1NHWne3fkmz66+UgU6wLveOS5y+ca1LmWIY3vV0b0F+CfJqgxDNWm1C3laRsw4oU9jeXLXuQcbKxU/AdI4v7Mndt/Sixnd64TEkq/ocL6EfqtgjtuIFj7Zizl1vsNShQjmmCJkcHzcwRvMR5rnlw91QXBaGF1cIAoTyG4SFLiKlxVWG5+FWPYolT0+WQTpsqPUR50us8EMV7O6QkwwhaVpZLJFOmrTvYDgCnhGJ6i567Rsd85x/dCCdduEs521+q4dqTWumSI8105wuzKQ2Sg0/USD6aggMGKgw+KQTZFMaQxSZsDvPxfWz3iJ6siI3D6GbggnGfqYvzviCcBlnENC9UYHMnSlcgRmM2j2AFdDMg7tifGpivHdeBQTiJHaUKO630Ff6VYJscPFIIGo9UiaAaQJxTLp9IR6BvW+N5AFaBoK1E4F+2IBImmyfhUUx32EAJlF1vgFosHQn0G/72g+u3KuF6bI8lrfWnnhARP6AG9U8eNTICJHZx3/Ly4VYWgVUgDhDdNsjBzszHgbLxyTZBQgSF1o69MMwZB8+12lwJJZy95tYVJnoZCIfMjusGfNmBF6D4OVsCWVVICmMEmz+CR6xRgDIuWRnvs0+oJzi8M5xp96QFCAiuIRizjEuzZIi5UsUDpQiZl5dXKf5mw1cSQNCEUA4Vw8elFPpGLZAVUTkDlnOnIPTxEQus4MWdD4y73H4WIYPxSqOluOBJCTgxAbPbvHvYCRyd9nR51eBVZhPzcTR4NiPb24IkFLEM6B0oHwUI40uUXAA3yucGtR5nMfTOonMuVPo6UR4dfhDKu0IEUm4r0IhBLg6VTjwfz8QT15fG86vE/GL1ze7cOGovSqKYYpBQ1GuYgEiyxEHbAcVJAJUooVq+fgR0mvieudzrwxZFH0yOBWsNgH5OJX3JPe/fOC2rKYxaTx20lOwmjeUmIzs2SHWSNcpttg+E0Vy+JbmjR5UvZFrwtBA8iWV/t/ngzR66WKXeLaqvZXKEjtJemvTfdCkyTQ5cg9CGlEXrLCvyeILZPY+B2MP85dtaB12TE3KG4VKxqnOuFrlGHQaBQh1aYe3fHuBDMdO8u89jeHbeL+DTcMXlMiydvkp0DvvdMhKu4KyCqEiPFoFYFeC4juq/6XY6gDXQSkQKL2VhnFWRvp8e3pYecYrSTEHR92wfoJbkt8w+wlVTlKMrPgsAe7Cjwwv1EBrcfI399FAo9E4AF7uVoT/qBtX1+mB5vasMIHiLj6e8rMdAnG6pstxTtYTTNegEblR8ATpBUuBU75ycCh0UrGttDCC1aG7m5n5bRWqQbEVcwsWJ6LfRYyP7G9XvShBcOLBDicCIJPGKLxUIkwpdM5P32BQ1GzhKQDsLlFN8otGlVgG+B4xzJ6z1NntMyrGOukIX34eJNYZOpaM7SubGyOykO15PYaVOkvU8b2ARc2ZdVP2pHFjivuSEgxDhSPXtpgjk0v6QGr4uDigJ0Q2j3dHky7IRpnV3N9qC8D0w+t3jH6J2CmIW1KEsnZ7hS45SAT6E0kFraSn8Q4Xoh8f9xG8pP6JgJgmcOV1XBtTGxRQ7d+uQPgca9/VX8W8vKWL4m8gbmvYyRHHneW2CcrkS19No6WMmvcWX8bUUnwqJwOlN/gJdfEsxcraDuRqpRN/mcPUHxIooRhnIf7KCS1Z67xeU1T3pApRQXSb4l06mZxp9l064O1GwmIoFThhBwvQzaaKoZGDCUuppgc/9G5bGQ+aMi2RbtmSmKyVGC3YkRwwsEK50/U0pAT5tcUi6Yl12qChFRDaiOzYM4B5G5PZDrNQZVuNDGrUgg5UUfo7PddVWZtNTNJ2yw7dTXtgLCzxRXLbVfhAFLYp6lHFT2dDtVdYU7g/f+64dDsNCn2QdCNsPoRR+1iGoRgPb4akIpF1hY4xtAmbYv3gzGxguCrEJNRuOg8K0hPExcQxBdH22ewDinkYWy8kw7xcsCMbfLHnPOKtczp5n6vwzKnJVoKLSvw5EijEKfsr8r3FgVjCvDoHiDzAXBIyOKdR/gP/OSyrwU0wONOrACHIrDr7UOHwrvpDG+hhIcjV0mA7zVvsksFdS9c2bZ2EOCkZCIoRRT2GkaCDUXLUCDg8yvX0OAKSaSJQTAMbFTl0a6rjgJKs5jZuQlw33cVmWCAQtHuSmpwA3n1E49w59WQYS3yJPjS+a18ay8rxFQqrqJQj9KzYJJ422QRLzK2qkpWpwIb+iUhxEtRQ1lI4O0TacIGI6ZeOXGh0UII7ZiJYLgLQSb1/XR9PNZl/+ImUApXoiZT8XbRIpT5dCw4weiEgDwAmVQkVrxVZ6m/33XaeeVK+7nAnsLkpMke1JnGgrYhqVwVAJr85faK9yC5AAxucxBBho3w2CFuRZwH6cKTPWfpgMZ1fpIim+VwyTHKUrSwJ0sLJisaqfjAS9KEOd3icZ7KWtmQCM97jtFkQfBweZ2uy/IFVYnFhIYX9jIg4kERCcilfexARttQ0HKo1oLAgKuYsXxsU0jaE1eb/v2ylKs0Ekw9xa/F4rDVIbHPjhOpPeUHuWa5rhoC5TGx/HsU0zoK/cJvkwmwrD6dlT4bO6lrfOQWCgPRFJx40IBbY9+NwAF0BFkflgxpijPI5f+05HR67Wc9tP1+Z6AFf0J8NXlA5oZRBggvy63jCC6IyjeG0P598KRqK9OiYULtVHKz1f1prYxDlB8AiRFfsbGOFCIymUDYA1Ea7bJwm78YewsyBrg+Sjhb0bS4AqpZGiu34jcxcKXxeeQpdyM1QYQxpac+NGY/UmAcnmEdirVSwjHuMXjsQ3fiTacpuZ7YvHLc9lO9P9tnv5GGh2/qcU7CYBemjvY4B4o4TbEWhAufDCBHCiwgb55ewHopOyNe1NqM5qa7hTFqx/XtA8TzPYrdKU+AgxguvzzMsjIiCnOdjUI60QvjCnlUnzo40v/GtE0DwYwffQJDNB5TvBOlkT+IX7t/2btxa/qtqdqGkJ4b01NVzPz20znDiXJZORQj6ROFYrU1SFCIf79N77ZIU/tfDeb8iBSarByVKyWPZEIwWVo85S2L5HnpD5/CDhSpX232aSrdj44/xAcW5MqPpDzNTwOgkXFxkLsYp4DYk0eOozvcngu/ncntAG/3HYbCWhXW79Bdyn9BUCSFyzYUIXHDb7S1j9/JKqPKrTDHEqvYsNPDexjq6Y2Y/i7n4xBJXDNQYbp8NEhPrWOe/zTXJbTsDjB/eWx1o/EP2SfN1AcNLAp/q3xvDzvoxVNiBeDZTNgAoY8KBrwCw2F9AHnjtTNGuhg8TK1vfk2Ax3UC5Zja6fFX3cIHmuz89Hpcp8oWpeCWqfmM8XREgr5gX8OPQCowtQE/oz/GBN5KvJjbhuMz6UgkBRq1xKk8Y7yXGz+/JPnJglkVgALLuzO6d+afp8TJijQbVoj6kyb3ZBcTbptd7Cn6SiRzHeoHK5jbOr/pJmkdT2nFBe9yHQjp5TW+TE7t+GmBkuUsLMoRqfA2DD6Zp3TQQMy8qtxPJktEHT8CgxQBfjhnvbII9/4Rf/Z8Ds+3FXTb996/6v+RCh3e5ovUqrFoGzFV5M2v3GzF1cCAhyxBXRf/8K4f1EBUy8YKb/GuHBUDdNBwjIwZVzzSXWD9IDXmSMZidB/MAmn8Q4ZmtF5MFVqgfJhDl6guHZEuOZSxYWwYTCwWLf8Wi+V50i9jyrmgwylrxg8C4/zwDW8hn8NCSQfFRHi3c/Uo7Sxx/HJo6l42Q/vlxO6udv5MWK/cbdgyISxd//Vwa0u7etn4KOGRZfdUl9xfvx1OWP4ykHmzHJzaLIAtPoptzj3llkaGQ2uN3IIotfVLxZbiIzOO+bz+Q92vrlLrMiyz7kjIa4dcxmNZ7GDfeOpYxfkofxTXHzaLgOCcAUk2oQYX9IpBs8uWdDe6lyyUHva/EWFc9EOUz17OM7Rk9FwU/pwMOyhpXdqZ0cfbrGcpx1X407R9xNfQfbw2+z5gVgwitsfxgrwXlMt6XQEQT/hN09CJ1jA9E48YIU2lMRrnKI/tI+uSCnfOw8ithkRCbp8gDVfa1IytqSyggQ1Y4RgA+HcItHAkhco8mz2Y7cFysWtHbFeXdDG63A+SkUhJ2ZxzM5SpVReJHbBFzWi4ut9KwrniOXgZCSISYPMijPnB0VWJvLw/hSjG+dcx6FDw75zbhnje5ohOqyBml7GRYm26+MhF0jhHDHodagnTTKhgRTrL1o19pRlhboFTKvxCOf2ujlkWyO+u1ntpSMSivc4F3GtAiE3EGRPXZzh05wFveYaXXbAl6dnXX8EDEqAIBitBNhCNerxBpZHWW9/yunzrAfHhRzi2tCF08GqEGD/9lDJvHwKOBi30i5lN3yKIa3PP+ygw3i/01p/UlPMnA0hieVYovstEOLQP/1ekFMfSRyX5Q7/jWNIPQuIOyJGuHeBe9ZHA+3RXTlq/LEdzbdfztg9jvRSFnL0/kswZ07mycm3CRnq9+XOReo2w39XrE11WJN/eCmMt+bfUQKTfXAIzPuSQS3V90PiN+i/BxcSDeBLvG5x+IWcFVS8xPs+c3rZKZmawn6lJ9oa9n7eRYTaacMjXAFfxg8ppyLJwu1SyfpAKNk850AG8IWyEgjyhQWSJxXcVA0TD/DG4Jx15nvLG/59XHjV+DpVb6npbSaI4O5YJrlGF4x25Rhsr4wj8Z9Bl8AWuP7zHo4nwo3/ET9c2+R12fYyOqhEb/26EokaeSBECCavhW2dEcEyGXrPDrX5Pg0bq3vdCwq6aLxTxMNKPOJ3a/rjiA2bCQ4Rj03lc/YEsNI0lqZSGJti3JbAlzcPkj7JSA1NE+nhWpg124q2W2z8N9K/7xJVqVAol9rq20LjPMJyRXRGuZYlRG8WaffWaY2scPAVqUc/UJbPDTP1xPlD3j9S3fzTN3sgQOFlgQ1WNO7Q8CZGyz47a2SrSBLksei5EU63gdjGwd7DitpIiSMRbBCfz5kPF9MhPnbmfsS67LAwd9ZuinJ3ExZVjMyCabjLI/oAWJ2tQ3Du8zLBvh4XljY/PMl41hH6BnzHAZ1IakR/8vs50wpRqqQ8gQZjKp94o2jxO3+JCiFcsMqoDwrNBhsQVGu53regsM0LvzChF3BG3ZldnimNVOmhUJlGGoKE/NjjEpf4Ubz3OVQ8/8UGXrON4GfoUgaT4kC7AhrjZgOc3XMznOvf4dZulsu0I6OstULcLOsIlEK2bJsMNkx90BvNICkEZ7QTBHWlV7F/mqhpwz21SRJVKnSbtbn1pdOI4rYWU0d1565P0cEuE3LPDggr2Fuf65muiBiNS+QCXHVZnB5rpLbrG7x4NasJxTcvAwJqBhjivYSy6AnjcwFo5HL8PTDFKWX1g2Vt7HRY6ea0JkKqH1oqi2NvUKU5TR6GkfkXn6RizDP5V9F//Jb/5RURZhbVe4Bmta9K3XMthKEYs0IaTszLUBNnGEKKUGUUcBEfmDcyLA78g2ZKQl5ZcVnwgJjdjJx7nayr5QY1z1o6p1f3qZwWBn6XqJugUK05Vn4o1ljECDGMIGoW+baqECI1J10WrRMH1a3ebdyxOvPKKkM0WTqpYoCx+qb6tK2zq34kPU6/SLbwl/2U9NU78jqLSLOxvfqq0x8qFSaYmKOdQ3jakFZv9cW9UPalWQ4k7MmFgMH5DHkrrSaxV/5ahx0Xq7a3FewDER2INWwYS2FSGNYW3uYPKSkf0EHTqA7j06MdFL58DNcJ/tCPWbjKbIFkz+tsb2ByEoA6o35qbzfMK+QRiJb9Vq3W8WWsMonuTuA4ZFC79xGj1LHp55ajsdnec6Urq05oH0fmdr8j2Imt0mMmqMfrQoO8Q2G/6jsj4PS88Hc3CISYO8OypfW/dlzxLI4uda+q5JSBRr2dUlba0wCkOwJ90k6KLw0EtmR3YfYsucOKpAJXuzC9shlLFhE2Hwc0dXHk/auRcC/bk8J0C1vIJ/ddQPw5bwLHxn1x4QKMSzlw48T/I6fxGH37ARqsw5RdGeh1dmBN42ceXiridPW4Z4Y/zxJH+d2xRQ7D7VmN4U5DseZ920C8tP2seeuSwz27MtjrgNH/M4ovclY2SMROqKffW9WxjNne1gr5a6CKZcqUjm2bI7vMgL5/Jg1TKrJ5bzSsQV+T71fBW3G9hMD1xbmG08SdtXN8F3z4m+61BuKdLwY3ogiVypVBXhDkdS1kEZJAueXf/JEm/oTtxEJe7UCF7S+/+Mod8rIFDvRGNwvKzbSLLKbfIr8eDomnARk6TQ+oaG0vSNDKhhYcrE4JCCBQYA+qpMrC32A0aJhz/n4md//pWuf6d3IdRQHoOSQNldPFIViXZGTapPslh1vV0BiAHzabQ+mkclLcWs8ur/8DGCwzsMZVtP1CRCmjC/ayjOkVP2GI7bG3CMmubO81Rwy0Heq9mfA3g1Jh7HpLRQrKvqihsecxX1Hno36VQ3lRtOjDrZDbtcQu6cy+gbK08W8L5Jdwl4/QSFMqll1RYUJ/XNNosT2VwOscNCWwnF7SPl0i9QcAs2ThrQQ9pi+WUXmT5g3nR0T4VURZ6gUAOtFBiZUNK6iqoo/3LUcmktsEmY3akI/Eaog7KUTbk9RE1RX2LA77aksW3Y8zYmSRXRnw9RoRxzQ7fBGb1C4wtPIF86+CrEnyRbGWl/JcGsUxSsvJUWLyCe4EDmuKUIs7XJ5IXSnRy3EGR2p2ZbBXK98NtOvjldcva5Mby85mBhNco3pyB8gtRujIjA24DvzsMCrjr7dxFRARGcHsl9dIn1MRBn4xc0Cj2uunOwl1sovkwJ/feo2HLXyK7Pwf1vg30xFtl3fzlTyfiiS+EOY3+/yoZso2t26uydbmoY0cmsac4P9M03xPZuCQmzBHer5F89fUhPmkZUP6Wsz0qu38S7vnijE/hvllDoS3D0UTm7umyoXvs3mWAgTMEQ2oz9FMTfx3jM38+n+erYMjJzcDinnjtn6/ySrPcZRV5mlTK1/ZAOuYasDF5wWlWcYlYe6xBghmekYqQMeGDFvceLAcESVYJOWSJ+kF10hyQjcCmEkarJdRyCrQ+vxtOi6DK6ZHdwJMtKMwDda6dcBnZYQnKXOg0lGMtcJiM5BoQhONXqb/PhuM17e4uHGdNKx2IhU8fPkouniQjUQ5Vr56rCA2jO3PLZN41kbDf79TXCUVHbT4Bl+s52hbinqZYaDsGXlL/vxEtLCv5nPDHkZCkdirH9u7qM+G6soUCPrulwuBDEYSYq7wDOjyC8YU5ZHp87ECm8xSw/dbGX6KgTkke2WDJYSWHdF8Lv9p0CB7aMYvP+EhhNCG8NP1jPgfD3glVYzpcdOW/mXGc2aAnYHhXZqO6ykXArgQanb0R+0a0suiOLxNXRiPmh+vRnhF5KOKDxdKa23Bf2BTP8fcxwOLAGIjkyoWzL2+XhwKksSr6CwK17iCO0rZAvfSGsI6h7mJq11k5eNchQtAqdPKUBhlzMPcC/ojz7Ru3hjnZ+KJ5NCNoX660DI0eKgX/AHQLyiZEtCTQ6kZzLOT5fF9GHYlS9TD4QtlEoi1j05KRq6X9rA89r/xE0+BomBBppg4KGnQYtLU1ad1XlPKx05m2mIYB14jqL7BwVhvbFDnrBVZ8YQ4Zj+fBjupzkFaIrSo1pYNGlW2WVUuEe4mxJkAkr1HUdjyF3RbitsOo2yBW24wUUTU6sCtHyKTgPe2J08x2ASocxBdBE3QfdMrwn/qUcAjI8i1pvRs12t/FtK1tyv7qHGuS02evFKSQiyUbIoZLJYpIyhOvzYDABEXAmcMEH5b6R8KuDWtUBenJFKTwOj91wAZTBTglgBp/k1DTvjfCu/1MJWQWRX6ZWiG6GneFllQC7VXxg8A7L36uv8e/3tRud+eqqtJ3F4P6S5MYW+cKfTUWz9P3KWb4xGBER2PCNWPPxBYHeKJWAhoE2YsK9SmCCess/NuA5B0WT/cX//7dKG9fZbJ/1nV9mlMsi8U/jbWDDJpzARQOlaQOBdp9S+U8KR9ZRw6+OJrgzVBkIX9hH0mRjc8wjtThG0iYhp/zBRklHcpUffj7S0VU2q2aRDvxu0t90wxtmmRtusUSU9p9jJH2veeN62eSNjvJqoJkTvQ6cTQvXj3Snpv7czG37b+0r3z4NTeWwdvjF6bmDj1xxnjpIQX1dhatyyqVqoYfhcB/y64VWpS6V7f9rAmeHITajGZX07w953pRFIT18b6yhChT+CQgCfQJtAkpU4Kk1IkxaJoFLR6FqSqtLM+98f/Apw3UTrU34q8CEcz9Kz1OV+NrsiB0/5LR/NDtUhiXdgSqR00GRCiuTIiG479HykwP9dpTEZE8XEc+P1XNTr2Xz7459cxCE7M52meOvgvH/gh3dL/2TJ6M1Xik71U8KwrZ9aKR4T/y0f7o3BNxdhUIU+itYKSNpnkDtH8rU1T0OuGI7dmUA82UEncoX9kWA+NEmNtagOXUhRr1x7qMhWu+8sHxvWqaiqNYIm/Xb+L/5owAyR0ythyBEQYS8081My2Jj81AU0IWW/PE2yQM6fU18XiEz27Heoe49e6MWuKoI43iQkwLLw3o1r+JQHEj4p6CKvIzDc04fUHhKnveLcaHN+SdtCslZ3A/aQVLZ2+tAt+Oh6GvCc3+R5b3q4LOtd4zcOoNYEmZcO3epEtDomQWOuDwzzFVuPQsNuGyL4AjLeNke9KOotR2F8U5Q70bUoT6uOLvzYB7425xnxXSw5Gy7613U5CeMFug06iuExcMVgCYu1WX9MSltSvXZ8LbPF3mCHwRdI9d0vEEUpEUei0v10kLFN++aW6gVU0+HEXf/Z524EpbBGJFodmOBwerQmqUGscLQuNRy8sXP9mJK7PXrLuN6wt+XJaRVne/YilyoekhuS5mooRovwYCOAFbYKA+4BfcZSHvK97lefXwxipueQRVIDcYlMIL3c/iaQUlsB4QwVFkr3MkJwbuSuGQ12UEO0TOhRW1GBhqAYAPA22fFSWOXoBjMcdN8fcIgMe1EI8qh/U2aFlZZjz4U+DM6M3jj9uQact+DQEH+eqaBDRs/ClJTxNHYS/ppFN5+8KOA7XzWNW2k0n9o9MXXcGJW/9KXBLpNoS6i7LtGsSjdcDyKPMiw9dUvO0RbjtMJJU4X5WeO18ZOfthrhIQ+sbaW1+P/Mye+XOlO4SaZWUdktb7Z7iKv+J15UBjeyGPzdmoZAMJ99Sg1rOJqr8Ppv0kxLM9eIZUDX77FKx2Ns5pauJyUz5SVyNmNqrcK2aV8Zi9J0p3qehMlAzFngXs0fMZ1mJUsC00O+wDX1uUb1DyiPmswkSANfbSlMzg6fsJFW45JwO2MZBP9RlFr67HbXwK3ovHN8/ienRhHQWUZ+OnxIY8q5TmbvC02dViOKHGSFnqaGO+lwmMdc4rKEE/k5uJucM9F2JZAOFcUSXMJwHqTpRKGpGGFauACCSS5vj9mFxvIcVrNXf+6HLr6yEt5XspozPj8ylG5q+XbfUkhH6x+SG2uK2Oagn2qOcA/f44rfGLZbXOhfSH6wrQ8PBrMGb3bAvUBcZBJ6U+ojp322Nnv0JlVTFm9YRUStmuhnFIiwOu1FV0LQfgCluei0k7YaJ2DQuslWtjhAXW+VaKmpUfbEU69dLKUaZHPXIvc3mMwXWob6e2wADE0YceiIQnjgvoeZrr1Z6LJZGmAmosksKcVFqxMvrtrpULwqGqjgFRK7kNpEbxQYZylnVqBuKGDtkBX7hNISfm9+Ud8dq37Q1SoeXMUoQ/wDkvYxA9tJ5+NGg4ljtnkJqZmGmT0ZfIKol0kX7/ptzkB+5WAmTDBfWg11NFI9XGyJbqz64+7YEb/C3xGZOXJFagStnyUS2zUqWpCe5zPLLlK5D2WZphlGg3gIQ+dMbtQO8zumXi7Mjd77YdXDD3y2zPKwE4CAbHY8izhQNIF0zXzNQYA0H3oN1DrHwDGKoCMIrdBynt8hRIOVpv+4MITng3X4P0ynRgE963zlo8RogeV9phEeHLi11R0aGOsqV4ZwCztbnotGxRoJ/FmwxtQ1X5N6SgpCFs0jgUHN0g7VgJ4c1F6nrZbAwIpSkKiJKy+X/2EKlWBV6lSg8PY1zzTJhkqeg8ZKgaa4b9meXMt9O0iiXfebFsu5z09Qsb6dTm96u7dnjnW2kGehkejrBEPwDIl8JBpKqwVGlVOVDb611ePvMwXpRL07d71fBIWtL9udwo0gK2/ciozXPO0djuvdkjGmeMuQlvN8PDbU7GDuuWOV9pA7cL9wYZ+Qa24dTuLvqyL/nwM1wKrF3sX3g978+hBGbMG1dv9mNbzFPEZS3KGN6nP78BcIejB5So1WZj7Zg2V3T0JV6/9HDbQwvXKe+LryG4k52Mz9S4Ipllnxe6LVFZO1Vh9vkMYIHUjV1m9/2YFizLRjpV4D8LZj9sZ8d8sDeCKeIaLCeMxXtm7EpzDjblyYPsDW9rbugpes3mYQF95H3M7sgYkwwwzUqy+QqxZyvKS+/9h2PqNy72eynwM9ia/1NcY6V4Rq0WNMu1dUJjLvWlB5uqoqvqyMTtBXqznRfnloYW+uKUF8BqWhqTS+JDEvGXjSUHgLrg0GtqiwqIjP03b1TOatif0Z6P9Fz7XD/8J6O33io0WoCFXmI1/QGDXuFuJwokL5yPy7UVL5ogEin+PZbpkIVfXOMxn1ZHlpI8d+AMEjCbrff08tekO1fH1kWuF9SlJObwhyqZvPtiG+3Huo0WtoNwkql+tmNobemDVxgs5AYyzcMRX/w2FCniAMPvTK9JKPExd5+qa3aIxrcosnxIT35ZVDhKbJMaSHgE/E6LbWrnUaL8D0DpcLNyMpDYNXcd+ZGD7ARCbu0wkODEypjnJiNhqI04NjEhIdlcEEMeC7nyT3//m76Snm9ELtFo5YTO29DDBYZ0bS60QcWt5upPjsmNPkLdJQAzoLdPPC7ishXPc7hPd9mW7LgExMIJq67ipQ/NmYsFDIMrSjDZWOazvEK+Tz54Fh9AHwk1tqdn/gi7tnpQOP6Fy8PibnvOyupNx97Hb8rtVlRqzRpd7nPpPr+ek5DedoAsK3s/n4ZK2V5tWNHy2op2QI50Pflnkr7EWv0AAxlqZ61RQ0/Days+VGpjLqTz+SQfI8ItlHa21hIDUqmVTaUWeRo2QwLGfPP52yf49qmQbVht5Pw+Oz2lUL/3cZYcg3MNZ3hmIk9x71G9Q9EoutNMa0JEsPUGnuA3+qobB4tqYpprHwrDPnJRDNST+usdjsWtQIDLplFr2Qiur7U0NS4SblG6vgULR0fR8COmvNK+xiaIjKafv64ED0+XMTOo8cXXSFXyoDFHT3dEhAUrvXTJpd600N6KzPD6rT+RZ+PujyA9st2HvLwaisdNUbukr7rSUMsuyXIJyENqzZ5l/So8DRqUkFiKNfM22Afmq63Ub7jVHorPFpiNk/jTBiNGv+IZVpnrIZHlnlcG1/ztCU8vsiTjCP7KFs4R+AaTz5LyE/5z5AHXt4fO8/+IvSWfxyN3GPW3xG1Q5eKkjJRGcSPNV8tWSnjzuvM9XgUItppbEyXuhLTIbZUt006JZ9gl8ucxDGH+vkBcRJq8+diuQX1nRazSou3u94s01roTtvQ7yQMRoXHLk5rW2wrQnQbJYv4LSqdNridz4LFQRpNKjjMbppIao8bRZFoqHGOUCJXneBUNaOGGG+2dindNBcsZfWzuy033vQ5JtTmPxZMw+u8Ce+MzPXm+rVVaKHZnS9AK4KktVUzcXtfyjztsGZ5hinM8rI2K44HG+vcFe4iAanIOAiUzKOzHweK5N1jriM2jJk6aaiVzfaBAdrEBTtUWaDt3m63sd6LtuWE0eqSSgLFVlcq9oGqMz7CrosnNxpSZ3A9OVOs1v2eg7AR7XS4bV7/9HLp50pIXyrOYtdbyTVaV4PXULDzVTY3lws6AQpuomSI17wP9ogXDYifDc5sngteUlgSa4iFx2p/P2IX8LbO0WratGM3SDYW6HlToyrI0auip25fUveP6HuDXIU2UwytUgkeP2/xqHtxjIuNqvWa6bMKS6eBNEH2aH041xstStA0xuy/6ATxW8nhK1JQVSDoeK1Qu0kQqUMwdX6NLNu3bEbzuNkSXDjTdgnLOV67olU3kNJcdLZk4vGB9n3vHyYP3QmGNkHDTY4vp9TdZkeJe7935ex3yZbOJ1FJj+LgJtzz0GGui+0hIzHRIL3C5n1JfxKlQQcqaSpdD4XYRkNHSV6sDGu3vP9BgZWreUq2k+Ca5cZ40aPR4t6mZ5hof+ZQ4tKVIz1G+COZOdNNGc9iUJ+apv4GYSnVYq6MrBTEurXRGAoXPtFa6baNaAzXDnFhkIqPETrrBXasahltd3y80ZPbk1JoHXzUyInd7R2h42hrmtC2jqYj3ZbEuGdEp/A76Eq8p7P/bikd/IIzmq03D/+d+XivdH4pbBntNgsAVXP13kVQpe20QwqL5QJvAm5tBylX1PlBL6NEo1lbeQQp5VsVCk9JzkM5plGGPK5ZuW4xfAkI0XPjoI2lkqCKIc0Lv7AFWF0Fw4VGZtVu305hJeASkRXh61PaNzSQBDfGvypJl6fp/2+csqWfJYCbp9+w8Qb35SjhqFD+VkWaEQflMk694fHXzr0OHm2kjd1ot08AsZZR2k6aUrCfenFjaEbTjmTeOG4sOarjpdDYLAbqE8Iupt6vfIcPfApWGTCVlsp3LW4gXSuVMyXifomhoROFqejVFH5IplaEjj7EPYhKB9zFhaW0Cr3NRH9rFkwF/V5ADEWszRl63JohdikUmLByeGHRMhcnQUardoCIaALQnPSFkX0ZixBGbOjxzqZWmQ6hz7gCtsARS+zA7Bx6IJLj8oJQBPyOKyMIJu8lDkt4IN1Jshp09KrJrrEGx9/bkUdbJlkwZgmMhruh7Oc0hN+O2qiOIiCqFI9Ff+0I4zzjMInjnPJ8sl8bEg3o/cRwAXSDwp/5VMkMr88cXyA4puTS5VT6Ik9XALcLYjvgQYfmUKUBR3tF7QI2MDaBPXwn6N7b4ho1SmFUGvNoTp8d+6hTK1WojuxZQiSofGgDHCxtLowdWg7AgpWxSRyJUMiQ4swvejBciKdH1XYSG1L6kWlsOdEWe7N7knZYjKNMboqUA7QVppGwc+tecXb3zBqwSgaQYJoDmbk1T3ypqNSLhj5euX9xKtfSo6NZMXoL5BIus44IhKP/Q+Vb//APMsgd2lCAMZj1wxxuRhMkNhC29ndYZDw9Y7p0Mw7z7YdjoWF3yy4dWdjddFdSq7ye2UIyZJkSmSJE+yU1b5DJxWVSJmZTY/BYSPHB1I5Nhz93yxh1cZYFYT77g+fJ6M+eFC4X+DuYNpdGf3eybgroj+hUyjiMI5dCKve2LWq93MrVx1IpBuXvCH0dpB3IwRy4xpQEWL6Em7UGmeepW5irMfKbbrNfx1SjMkq9Dq4dZQBrJ/8oThds+PVPsPaPBDd3VYO2DQvAJx23qm/OdSrVg1GOvl+gayE0eWT7HhYBA/fbwmkFLf7g8bdK3mF8soaN0Vutro82NB4Zg+Hk3XFyEfD2dbTwkz7/Mw00idre1waWmi5hDi5NWJOJjN+KBLA+MPHJHujnDe4qJRGbdvFKlIDGyK9C23dMPXbxjtIdCb5kdxOmowWxv0+ZZl2Kr2EiuzoFFZQGSdxxymnAJ+W0ltLNu6OtYkCztXKw90fLqv2mmwhlQTLzA6fOTUnTyByVQaZGUbgi6inz030dgba7iFOt8fZgrv84UnpY+JQxeyCB+2/47Bp0FNXa8PKdRKtu8yeiflYxTMxOndwLCWxTsV9r1bYNayLQbLKrsXO6ojxHkZ3KcSf2Cc6RCayz/dIOqxXyT6L0JtoyQGQPNRXwlYOQFEf6F2BAun4pD9d2XPTjTmSaST0CeYx+38A5GbqvxEFzz/y2xp9ArmiKByRNECVLuXXjTdr4QVpTX80c/hL8BWw9/Ut7qpEUHeDHPLUe2R5q76H0+M1o/GHD4GqMdhLy7+RpnnqgQsEu2/1+tTyebCF/VoyGz/iEouyDMI5O/5oQ/96ck8dZw9Ghtg+Xc9S7Jct4RbxSZj9PzTd05CnXin0XgkLBb6Waqnt8SS1iwmqRRTrLc77rL9EzV4k64mjbfTdDtKPPNX77hgx/S50xYe7wImix6Aqe49kGZGzIcn5ZTQ8Utroc/UZ+1bWoZNGTZc7b99vYtLvbXUtTcmNJyNjnsT2XWfe2tgmtkF5yZR/HJEXkDLF2PbzOaykCpwYqt9PYlDKqam22VMkSUFdIVvFkGfFHs+HPK6G2N3Ack183sYJAddCzOnZ4lvHVDZgOYfyvvRjuXMqh8AoRi8z5dE5RpyBhJMKhDlhQdeAOFQHlUKctsiNQNEzaiptUSj3QiOvxykzPmKfMO6arbbKHj+2WNREqV1to7x4WIIgUpTeZ5j+LxufiybIR/k7otQMyYhM3pWBbC0iG6rwAtkJXIL1LTDHm0eUSW1G2mk3Ax/rZlFZ8v9aTes/qHIZYrKRCNPLByuiqIAmMZi24rBiR0NiokDB3YUeQTCxzCuqZpJLyKKFYRpgsW9v1VDAG45PSmmAdB8D7qSncS7Xc2XBQnSQMfnRVlNiRZa93T6LgNpoQmcnr4BTNS8yPCD6SJFJCHf16Z8foSnmt33zvdXl7z4DttMlusLnwbHD4tEYLaiNb04GvX8SoUKkmdCh1i8/iOPc6DPLGNg43+HSeSe1uSPN/jvl63aj+1wQtBFtr/5FprsWXX6h4+zcoeMz7evvz/it8278H2JIN9mzARs/BV4/bx37/NY85cFKCDyUws/X743XroNTZZynytAT3+rmUgxth1PvynIvz0TZSoAyHCjtU0Bn2UWSwiJqIOpULf9ycRb4PguIXL7gx71NIpoTbFSM5ICrZl5l4v71ckIifmMtRvWmvWQitAieQUc9IRhSC0iQJeJpKRLDFrU2SmJahWRToqcjMiZb1PqmrV+U9jHzKwET2XCwuwQsH+ndAAI5oG69qEbwq/B9tEfPhDmgDkb7VDQXzj10bxlhbUbD4CksJfTHO2JFc+nFldL6qYHiIkddVhcRFmUp8rd2zh0z92qS8mAWiXnG8IT9aSocU/XYTxkjK050hZV1UVTIrLuc1O7PhRJTfbq24/caBqjzfTn7Hp/ygFGKMrnXdhNQnFoKESEQ40JyiqlM1rWrLgLiqmhKQJyxRHPGAT+XRXt7Vphj9/405F4DQ2lQz+mIFUWh78JgVPUsovdxZ25cYAMWJMR9cR+QEzokcVo6mXhquXRDe9id7wfM2HP69w/HHA9U0ePI5z6ItIKSz1VIapUqx00CviDhOJCzFZc8nzl0IxuQwdKyBKZIlAlRhXgPqIf7b+o7txsyI8+9aw9itVCJT0qjwpb2wFZULpeX5ZESjqUwfoWw3E5JJ1FESwpoNLLiZKjHYijqtSnbIp+oLWXOikSylkjbi4Xr0KsrsEGBrq1/o56Xk83rR/BGvsTamKBhNXG0LIzgLQ8hqeahrWAQe5IliKueVHAyQbLR4bu9LmfXQoE37A8JMc0Bowh2o2nO5pHJQBQfiJvF5WgXFkSEpp9WnTcjWP+i4ZU4hx5BIt6Q3Fuwdu3P2LHwaeZr+6an2skvu8WkfME6izpNUiztjjm1ge0GWeIcSdNnlxzuzlTyNk7tBOg7h5T1oC5gF9KrfwV737VlfVkrrbxyvh/sOjbPD3kY/R6HISGBL0xBWGW8C6TsAenT4NtBdRHkbRmPmJrYN0st9rWx/2Je10vwYrj6I192m1Wg5+pYUFmWE49jxt0a1uU5U48bjK1m7sAnYdTKiN3COognYUpOGxc1FQHnxC1YJdxbiarg2iIhMN2WpwunVJE+VcMkkxCmFiK0a7CckwYg31OF2vCBUOoyNHn7VsUBGWL2Iwxn/0ZBv/HcOWW4NrOm5PnH48i/Vre0MbOGobfV2a/s4j0bfP7QbXDdgOo75jIbs9pO2OgdlIWvVkWV0nJ8Moq1sbAmXFLY0KtuI0Z4dUo72qkqkG1IvzotAVwqtRTBj/c0Y7Ri12M/xV+CHRmX0MbomIZBhOEcD0pTxSqw94kdFERV1iCBR/oMh91DI6PJqoxQeBvvsUWwcbMzqotBs2laM6pXaNfXVLIRR2FQMWpqrPQga9vy4YP/H5db1D8moTaTNnuK/BkfPo+H91i7CqdpP9VMXFeH4e2efSu6s+kexe3sUhGyikKf4yIZtOTyb+7+7+4mqpE05/9l8jTWJYDUcBITOMHiUajKJxZ/ZVU7oniBQqLDwW63xepCYoVWNzeUXJGhrd8P2GEPm33a3JJkH+cZCxT24+S+EOZG+32ot7XxKLfu2PLYvBgwMqkgCHNSUZZU2OlSUBgWWJ4U7MpfYq19q0TKBr7Yg5eyqjIou1t4lG+0wi9dMi+ukZp8KpQpDQBBgmhRMDdc/Ke0kt5iQU/twV5X3S4VDgPBJMrl4+j4lqUkMPiWFmDrHyUCR9HofyqGvm/2ANmr2HWt8YK08cdb7KAocjhZfUtxJgUvSYH6G9Kgbnw6SZSdHL7TlDb6Ug0tUeZjsF+Mshvv3fM9v8plv06BTl33tJTw7opkcO2RKA1bQTQPdICbAI3KzQHzHJuaCFZYnnEA+afdqpp3eR/jSqXWaaDghmadxXtkmwCOJodXIKarXXKAzEVehxXolR38xRDIMUlgZy8ntsaYTCp+UFJwl1buAWsXbI0hrQEWnaGaI4OGbknlaQVJcO/ozvdfiCr6p+rxceG0FUTD8pnmUoHHyyzYrffTwAFiyIAyz9AMK9nhpDj2vEuauTrhEIlf24SZrA2ZSF7nG56+4coWmqHzE9kVKSunCyQk3O3Euhz44x2V/FJefytWXfkwnvvNcGzlTjnNipM/oEnhAE3vtf0Se2YpUaKB9ElqjMKSuytSU4auaFcMB5FemlThpMCXHPWwzDTaUkHSYEEXDV4nIMVArGu8JqtAdzoW1yoTR79JJQMceCr9O4CRlQqdxvw+wHJqIeMpWW1FnV8XM6vHOm9WKkM70h9NLHu52pqoeJ9hQSkx0SsOx9smJNioC6PeUavINcAFk6ge6y2UfcgOrM3IekEeESDO6BZ51sDuL9cd3w/ld7pbSESfvMI7npG1PaxP6+r8l99yWvMS/PPHarDyqXtSI0VNTO4vDF+lCfV+s5SO9U5MulUo1pou4+aQzyfmAmUGdM63ih9I0broRoLDYmSn1qpxCUhv7KRSlOHcv3VyetQP3aifZZJx5uWb6tDe37loxNDuszagZNBgFzeqm+DL2Sogd2kZuamtxggUXYv3+0fxWSWPSTsbLR9Xvtnobg+FMAYfF2LPS0NybP7sAewvWhunhu+NKw84hSx40DUaojGmiXVKZJ6usTcEiHGadkQKBEElHHoM7faIBfpuorXrrKIdJY97OdaLLFXTfaYoM4SJ8toAHhty29ACpBux5iw29FEEwWtyr9EJuRJb0HNCHKSVkVNB0KIZCCJhzXXLxiW3apcpMkKs1s/5/BXtAwf4v0hhYEvKIzUlLPLjMvh1hB7xwIN15QU2vH0a/qRP5T64J6bUbnV2lUbPPxRRGhCLRVKGyccVatICbbTy/XSURC5aSEFcxgxwXFKPqX885mY0QMF4Bc/c/VowdufrEkyg3lKIPjlvVZ/0RKuxRDARvnfhf7DoRXeurI/vK9FV7Om9HENzSzyi1LjnzfsWbHivnhdQUv4ZAu63EFK7ToH1mI3Arruc089qbEgQmlcao3IiOkgbR9kNyjy3H9mNoiI538+hWS8jyCx1gUdUcE04AdVR3oxFuJxLvN5O1t7XBwiJH/JEsVaCdcG6+38ikEXG4wRy2SG1D/5IqH0yIh85LKlTw/di2XLTr2WZkdSQ6RKEdMQuyOt5elpgaX+F0OQ4g+3GWXI930iAqU7Q6fmEGjeyQVOrkjfO4YRhaJr7fnAmAS+5B/UKkvG2ehoBt8UGxW4Bmsr8oliSgFtZW4kIdWtVjU1NEdJzWVDNQbXIzyEWE/bXgKami7iVhokitn9fTE2J/TdqqdZKW54eCZDd8vsjXQqoYuxz5BDD+u5s39nOl3urVd0zk8ySHnpTCYVm1eFI5TaIwdIGQ8l1NuIBVDaBVGxV6lcRx8Ybl6a9LhqQBtJpVFj9ULLSIrhqpvcH6u7dUvA2V43UNxPYMjJtM2kdADLMptKYPhogZxjRX/acLsenuIYVexIr3ZfFZu2lh+3CZSernvZAWqWqHPo4HidTA/CodqW+uXx8T6E+NcOYggNVFS2vrC7k78PvZd4R/7/LzVcoRRtMwSc8N/jyuzBov/OGtSz8rMQaoV5bdezaFFO9ePSyEE+99k0kt+eKMwkQfj+SJwhQ79zhTJrj1WzK77e/H9JPns4fzLlUdIAZvGK0DTc2O75oDH4d83b++61KqFR1Ej+NHAZb09VzjVW45wB1xpfq8QUVRuxz3vABiGKxWCyFI3cz3XyeFTWEIZAERyDh9+1wiCfcx6QbqPX6P6KlywHKZBaURumLX6wliMzAY7ORHQX263hTscFqsXERfFIORWuWSmRv3s3FM4GWgLttC3z9X0vXlkIgxS9LrlmCIsXzIb942loh0B/xOKatqXB2rkU8fcoM3eLIER52hMNdjBV9sqgtsEwzT0Opd4qVITRqpIhg/Oe8eWzyKG6sF+Q+B4RoKRiP2yB6xFhjp8gGbcUDT4SGH/aOhHS0yyBpNKr4P9iotn8WTy/vcaX4Lx8NC5redhDkdOeEfX11S7O6OPxZ4Z1Bu39wNhHbZiyABLpQmCQ7X+cnDRU/q4U9T9fQtfJjTlaIh/ey38fhjf8mIAUwoGHghKwLuxAA0yRb2v3HKtpTP0BSiaK07yGMe9PmGFZrtVZX+yHDMzGYONZ127sjuZw62GVneratpP2zPt3V2jFNVJuHPXmbTyu2T7yliGBm/xiOJH2o3oPlgrRhtIiPQSnm5/eN914M22qpP5SjKHnIfHFu/66Ma7FeQ00Dqj4oyQ4e5wQH7ewRy9UhKUSVyEyJ51SWz9p9cBm182XYNDki21b4AXcmKFF8Z3TgI5HRbLwj77lnPvDjX7iVHc0oJLaduE2+m21OkkzbFAQ740GKM9xwMHinUo0YVUUTBMhJvZ71jFOfzVcFaHrLEO1TC/iFedf03wgaV3Bzvg3jOjp5YRZ5TfzDiK9L/yVXJxR88Hsuxu3qArhRvQZHJPZoKhFZzuqDMQEL3uFMUwgFWhSiXP3K5BkbhmQ1qHMz+vFqyHXAcqx+AKUGEYP/INN+eWSuPtzeKaJ9gM0/K2URnhib7gKH46f33isQH96gaAiGHEAHcwrJBCUW+x572ir36StmcKQ+mMNs82Cnm3a3K9sS3uK6G9juyT9wY2lNslPacD1A9IDfxVrt/JsAHNC+FkRrdJUh3MSdmcGhccnZLFrzxrFw6CKBNvdzV93ODqmNE/2Z+cJZfzGsNuxZ7E4aUljiDK9dTRLG4GD1q1uYjcEjFxwtaYdeH3KOKJx4E8jdAKrVGwFWtmGoRgqlynujQgpIpadmFjWTHXnUsKgZ/Nce1Je86eBuimV4M0jKTUJacRifwgfjnLsvw9H9RV26TtJzoSw4aRkwZ8Ix4PmBtEt075oofdZM7MUKrrBDOMqQOZWXzYxwbn+QiFBacJw8xN3T4fbJkeOksay8WwQWRPQTMHuuD/Hy67M6IWb43hEJVHWLD9CIfA0JMedsWtUN4YUugnXjzjP9Cl2tO+wJyJi8mQ3T2j5iWKUa8m4yh+IQSkH0BM4LS3VSMh3yMWEhtyhhlquBbQ3plsyPwaPU7vaQczlLKbBlZtpcUkIahUhyuQR28lNfMg6YaVU3p7EOe/FwQ2IAkJd0Ahl7D4rfG5V/f+cGaGflKV4fM814bBCt8fTMRK4mKsIJDXp9qVMo0gjugnto2l9sn1SbLqqjAYGyGEuyNsMIEgnv0IdUBi0FGDAy4plSyScbLb81lFAdziimOFwtk4Rky5OAtUlGV+i5GNZe36tteFWtBGKD4talXIOGmT5pqd5LUCQ9JEGeroXEZSrVT+4c/AiveDe6r/C/XXTvvW7OKTcoaP0mIl/8dl0Micm9JaUc/nWFVw5xb+B9EwOB2LDv5d6EbBxNyyeSfw+FbO/3pp2J3jsERO4HAB339UayuvNg/YP5XXAjC/RUEr5M3Qnam7WcBU23DkkBg+O9KO3X1bZAfwE58OKeP6Uy0l6XXfVPvGCojHsvlvc+gkKSnd0U24tIdU15Dm9gRsF7h0SmLQnCLGRAwDrwkc+wjy6jnQjUvuQgWc/aAPo7prDP/RPd6qZAp/MtjT7CGjXnUNWdvzRG88Q4ADLIcUTToL4pCKjSuctuFcYpJBY1+OanQvKdoVZLW45cYyjhsskWJCnQFCxPINWJHQcky95AjJ5jxKz39wgMal5gR1CcFkmlAmXnG1Omp5VtQ9db0mp+mSfljZpumAJkX7tRXmrrkL5sb5D0SDbxBRsNGotZyvwRs0gAmMou806thikkiHicL/UhX/PVRJ6m+bAVStooM8ge/a5iTj1NV4Ybq8UrBmvmZs87TYm40r3qP7d7z9xn9XN8KrpZaPPsUDsCUVU4p7v93Rs5pBXYw/h313WlnMzeCKfGZ4UH/Q//yL1+oNn8+hvaYQhwpaCzirZE09YhC9j1Kv1naFJ6zsRi/mcVv3k3iKUVYOsIWGeElmdZfYX2TSWwUgBm7QJ9s8yqlipfPTK8nV4I6m89jlntJ1fpESk1vvxX6NAdMZwK7RYfzYVnqd/XTO9C3yIAFoz3OLEpxEcWiKTey6UvPyvH+OOjhResUZJGphnFkWyEePTegrgSvSwQzVJMxveFKtauSBzQ/aH51ftCHE7htJGQK1FPaGmXrFhI87tRokrqy+RnlquSt/kidRy0VueZmDsnyddvr0lc+irFdjzFuF9BnDG9+JcBVUq12cy4SN5BHzabVAMaRBXA3+Wp49yCOUuQxsdINKnQQKtlv405u81yu95/xhk/BzGQf0DPDEduPUFYlaSm3yywUHHSz8Ju8D3RN8DiQcFjbuxlwZSAGjBQ5QrNKnDyS7Zo+GLHsCgeJh5TiZme8jeOHefOHUNwive7u+NuWZmpUSKfrioqD1SYN51IhSh0mzrB+t9k2EW4yk0x5hN9MdDO5wYKW8DT358bUI/HKztstiXPd4wF85dTEzsLups0BKyzUN6FzDX1LtfcvV1id2SXLmfnaJp4vYPNU2GS+KPL7xGNpEpoKTPfFnuLT7QxSOfFNRm6YfSamnPHv3MqEgu+Zh7SnpHt2kmNTPLJybJc3dr81mh2rQvm3MUhQvLutHmfOlcz6sCDNe2ubrJGszZF22w7EVB78TfbtXzHFxD9PtziO1XdO+8Dsv9blepYUL00cnr2nHj/tC5saTSwe8fenpXpr4oI3nKUXVBRDz4RPIl5WQ7DCXEy87X0lWfkDyWT+FLVOjUV2Zrl7iMWby7GkFqdwQRDtL05yKyu49xJG3ArEwuJOvcjh1NkAUVMXn2tA87ZlaclTWtWKRpySqcjo9sCGpd/dOx/ocpqbFBzLrrZMnKx09mHNP1mZKf0nDXY5+vrPF1ckBaEDBX3CjQtif99kx6TrsQ4JpUe1czGVuvI8LPR98uIDlcH+Z/9YMN2Xsu4Yh9smeN/MN0VGN8JNsQbqDy+KMo5W6gUIS094bN8wgeg23lwXMNFVkeV9kzLe8GZ+ZMP0pUX22EfgHvif/Q6Z1aw7E5vW3JdMzkYg/n8dyDcAWTOB+/n6eyMxWl2ekNp1DEP2EQVcV1bTbW77rl+NpyEb9anahOvksdDrlzlVadzuVAhqtYekElJvfGeKizVykWXGmeWXikuHCcvTxw2rP1+EFISkZrPHexy8jExozFg8Yr1BlTB7xVaZ4eedmX9psmgcbaxEbRtn8ZosWGfYjcS2Kunxb4uCKmr8Xfm1omibWus18I5RH19FZp4TlMPrOAtQdlJs9Y8klZjAPxjNz7t05U94jv/Nfldg/911ii1vzmo+Ccob2CLju3TZmZICX5lK1nfXW0YT+3SCyJVDZjMBNFXlig6vXpm97mJ4UpFU1CXr+ax4x2s/4RTPWlThxzJP2WTo8RQZGy2AFFu2GVWK1qC2O3ujxsNspmK1zfMHFDBCmZBd/yQzKugIiyq6IrhwUU090winvG2xAEVPbDSXLLDtJMo1BZzSGNcgXoVROqMITeDDxzanLqYTNtLy6GkNv8V7s69ioUmTW59eVYzo12NveBdosfyZ22+rEPSvLjLvejpp8zJ/seC2utrntmtuaj++X3M7xtIApseA2j0ynfc9UdFHvz6yxH/fj3kSdj3fd6LFoJRyyADh2CN/9jdMZRmXdDbgc+bCTZ9x/6gyTDq2T6HLWJssmgUOcrpZEIWh09C45t1f0HIqB873RIO4EIpioIRB8R7ob8CB9Jy6okXoOfHDGB4b58fHnZH4dmoaBdsl2APvH1N3PYGoWQ4MDaunUCo6VzqsTqf0SGP3Kgx7/34t2KTAtX59e0ltOl0hbrUwQ4IRJp8edp1KLZE1oTdjcqTBHM6voCe62MfZj8sKqMRiW/EzQh6NB88mbN6gKW86i0hYyIRRl6hR7qQH+dzrqb4kBenQv0m8h8gplJKUL2xegJfeV7GHnKB2CtT91MwLQ++WIq++QqUGwTyC2SXnXSvLGYRAT1JJnq1AvAW5VoFYC6esfk2xmlRafL4CbCEEFHM3NOicaCKPwJOMdIHx5KIzt3kqSuZ7Qd362737lsf41V1O7x866G1UZx7gMLiEp+k3LwYRLKqMPQzZfvEei3FB7y5Qa134qOXDI2P/uKE3jPJ8wYz3h8heygu9JvqjU4Qn3mDK9frA3wtRkP4IsXgdqYgkoGpIymGe2nzr2EiJ1TXKNSumkjOyh1+ycNnD1OWIz/CIpOlWqF0zWqpLg1t72oi3zGDB2DW2kuk+Nx5L0POZE4XrhA+zgeR32uV06oS3gwUvmj6RzB3lBXLjJxWuyfzSJKkFrF6JBMoGPYhITcB96wHwpnqZtKTRsirR0jqAI9JyWN/BPZzmELO8KMZDFkqjgF+3Fkk6i045RBuoj0E81NLiqAMjwNd1Lb7Hg4cyIfOYK1P1Tpr7ofLXw0axwwpT7q7zmRgtEG09RJOOX8iNvyB7taSHialggZ8OqkFu7yYXYRTU2sOZyjPEDZEMTrLfqaG7LB1KnG42Jj4WGY5dhpZWS2GQfmym3HP5NYtfKoYygCVV9Vj4Kw843YppHcP10LNooeXV3o5Pw9aRZfdNmPKW0eHqqhKkQNOBOa+q4tFlRiLpgVKz7KQJWcgOzlXfytj4WCDcB8WbGKQL58iA5cRjTyIQIAmXyNm4eG3XCjWx6sZxEcJF6VrMt/nviV2cIWaGoYac1D3R8+Hpl/0Qe3wjIF3lXRmMcpkurj5r6z7YXMV8bHtMy9zTXYwcp5usatQ9YycZFfnHsW2jU/tMNZ1/ytGKwuiOd4mFCvxpkj0ws2BLwms6pX8jpbiBEiup2LDn29ULluPobc5trU/2YHjAZiPGG8x1/ko1rqRSYze0WWuWeikjP6dc90e2+2tMR15nMjQ9eA87FE0NE3uyfej6fNRPD+owv4ziRn5yHY3Q4FAtl3Z58hUfVF/T2J+oBulMvx7Nm73IoboNZWY5cDJLsaaSQwhGTOCxxJyhDivLxnJ9uaCCiaw+6PojVx5F3AOiEVmxk/NxSgIy4eyO92DMnf1Y33MF4F7MDdgRlm2gS/kldsP9jRA58lBd/Yto22VXHKeI+d+U10dPvervumVOlH34rwQ51dad2adbFD6GIEab6744qQ1DUgrcrUe35NU9Ihr82nsIsrC1bRtgHuBWTt2ssq60szCWdYzchJGS5Kpmqsd80JBSur5Ka+VjJ0ZQWQl97DjlvJLd0zWKx2/irr+kEitK6GauI83W6zG/4EGoWwACjkjYo6mPxbt8V+/OgJOULwzvgCY+KuagYvigr3xBINk53evrx2aFKL+mzx1T9HrxwKH9nZQYpOh55b3t6khdqxc3nxiiDOte32R+q7NYC+yQHPdvJYn31wc68ceYc86gFyERZdV3g3oiIqfiRK3MAQaDi/jz++4nOJwlu6jMyUaOfiWS6JBps7QXK1EkecZB9RLl7IO/LGUkaXxj7tft7igaHif3aEbgS8L/QOvLJ/9h1hkY7YqlwSfxsHjIRFkKNZVOPirXRHfcv2jwMADFY01XkzciXCQQ965Bz2EDuayKHaZDD4tt8tD2FMxPz4HRAJ/i8Ofocs8nzuBsNAuzI8UBnz4ZsKpnyDsj0+entV/5Zh/3SvI7/HL2qD8P6EL5xMEp8XKQR/ViMPn57VIw30anzEtfVsQFGzpY+wMyr45zvMiMWdBFt2DiNznjEk86BXOio0upswPyHlUQL2DeatmwMFpcbPQLhtB7UtrOJhWk5Lmcm7RyL7WqScymLiZVWPovomPCJh5Nf78/lQaXwvqYfo08qvmrAImmnC8bNnBY/rxqhkCSRX2KRlQWZdpnnh9h3L3+HOH13NzMW2C0rDUUKP7E9RFQEqqyz5+wXWZaDAb+i8AdZcm2/SoR25p9SohQrcGBvlkytC7G/2HT5lTOnhKKcN0nreB64PGlIB7+71+l8jsrHda51TfP21WHdu6QpWXfuUd9ek5wMlrUMdd9QrhyYl/1KhAXSs+PFXUIzBWteCoRhjjd9uvzMN3W2SJzGdY6PBrkgD8E1hENYdG+mrJlWhYuOQA/NPu+rJm4IeDDwDbKO3QZK0f/DnN9qakHdDpKSZ0KXADT0Y8VcQgyj7xgrAIejo2mp3nCFz8QM3oy85fFVsy8u+aDT/gXjznm52omDQ3jNk+ZP+vpDdQrRv/7q48q4aByM5UrvxAzOKzdo6if90wRPV9wgrnHw7uIR/cKF6f+uH1CvCw8Gx3SZu+rUf7n81c2486H54JtmmrM/ChhRQTf/L5OCQ+mVCwn5TnvvkLYmDl9jkdXmIgU+d/1azyAD3pWV2wea3XGmAcRt0AhserZKzrdr1CE60WpaLPBVIVHhTxdC7mr1LFjJ3rA/nd2RWcDdBYHOqOGcYwUm3FZ3x9/tsKi3m847i6mnyuVT8TDOw/6pSEQM+FJW/mMeDnyZeg+KmJe1Cwi/8Xai9HVQPcc8UHn4jYsOGDSp5w2yDw4D3OIZ9sQZLAuw0l1dP4DT0KNeKWgsxyn/VnQzBlW/ysgDcPme0+7+3a/PqjLzd51NqflMNVyemsoji5fY6yPjCC3VzXdV+XG/YpRXtzT9wvPES53zu52xKaqnw0vG7P+tYw4Q+HIG0BJWwReOKnvLkrYW+c0HOkDXAzlvF9hrYc3o5JMeBwrxhIQ0mrOMl8GkyYalm1iRMz84TXyVQxCFWVidv1Ub1YZlMd8SG1SxhMF088IWypc5rfoxZCZW2LRlX+g0qYh8sm1miq8pNSEj7QiG8Jhghwz0un1d5RxaXmlczF5DfM6owmCR5UkIvRsl3/aQZ8mtqG9ayKve0yvulz5wWxpaDWwoS3uz75TiuW+48dpCquVfTx5ZuqeTKXG6wqsJtpyTBZt226Dgz10saQiiPacpJUnck7YI7nFl4nCKSBymhRGeeoyyovRsKjWQNk1Jya233Eut6YaejQu5pZYiDDZPj1GJ7GgUkwdhiiM6g4ksJ4T9nEPYiXDWyTsoxr8Od1fR8eZiPCKiGVFNwZmXEwJwcEuVSvMMwZSmBcy8yD0B5s0qXK8pGbC/n5qpOWGl5OzGfwpJe0M72Jr1bDA7WBRJCz/B6hw/90L4WdaisMKxEEyujHcYAQjRbI0fEd6qpNl0/UESiSUck+NzTqzfRnnvYe77oMTuNrfOgmM3OzQyF45ptLHWYcf+C1ZBii6MRzfhbYT2V3VfwLMxZ/P0mxpBA8NcZPEzaK0+ZUnT7ifCyC5OeWWtR9NFOYozV9lOlhxtYT5Iw2Tvx8n9WB6rcWlIXqv+XGVkawMi8tsDhVPRSua6GBRmLQQ0Bn2m0jJtVbrw8YT77GTii/jdMM5Lqf/HMSxYfu8G705F14zfhrDJMri22XCio0vZ5s9B1/r88f3IKN8C3MBoYWbSViNs0lLKCcOTpkQ5edZR7le1+wMYYAuPcMDmdhhjDEQWhzGGGMMIZFxGGOM6RLmup2kW57luWa5b5NMzTJM8mVSEgToc8Y5YAQgJa6zs8RxSAyZso4XxyH28aoXZxRur15oDSOIWbYkS6+ER9zNDBNPZlKDQEtLPXS70kn+rHzfeV0vKL5znBzOJnhUWKXfklm0kDn47NAQ1qiXw1aYe0h1ilix01WRvDR+AWOR+lJDOaa6Gk9ukZNfY0STWix5joLcEqtYcx0INU+yKjp1udPqDXR6cRIDZRAxM6BXXwudeYS+TbeJ7TLJt235AuDhxQ3bHSkCz0u06mfSgfL8gCk337aLdWOf5Ub0QHm2vBRLNE2SpSj7LHXeODQM3T5W9mzmO7OsYcAcpOda0thYN+16terB4kIJ+nHccifiRbw2sX5NishIM+FJlyDjHr8s4srbsLABmqRLQtP4gHae9ngdpArJYuafJx77u+zLc0vsUP9zse5XyOW9eKTkaYouFmKI8vN3BbEp1dfCIWcDMYnOWjxMHWFgDZuQgdA/bXChw82PUqVbp9aLz8ZJf1EdpM9jckeLs2vB/vaDwUdIhzEMQ8plNu3g5xZz7hmYpSfv3GKN0wu+4aeN0y3OEifN8P7ua3iWRKNrPpN5DKRFQZ56jA0YaRLM6P2mXOBQ+mCHOaulWka4O3OKuA5fyJowv2alnVG7hDg4D0iYD14xu3+hsEi1h+5e12YPmcEyOAgG1yEAHIoYupFSrPAfKAVFm1WETYVeD7/NVbCov3YE20LvR0mOwc2yJy5WuEIpr/LgU7TjyOD+aQ4upmq/GAkE+emF5ZNxamy0qh3HBnnG4TR7Y0JwdiLMX1+y2eaBkDnK22BmAiHTOHLmDuPCu5ILunz4gXd/KHtTFY0iBHbs4g/onK7VNPrcT7YlJmFYUNPoEHlpNmcIgUWYGf6CvoSc5C+3dm5wZh4wrkVpjJ2hbbAYqijT9OLCZ5GnjPFM4EIH6drcGE854DCxk/RC4kQs3Lv+yNj7WQjmAiONmYYx6jkW1V6Nr6QcNxMKFke+roPIbf89Y3+GvcS/K7QHDSdBZPv9A3V4h8ISpLOVjwlJad7iMJZNH8KIDIwM4+S8SjlEL9q6Mz/9HptqYB2Rz99Bj+rHoEVyZZs9ZOCGK4iE1EW5NI4o1wUja1whrqEQTwggnWwdF0UZlOrS39tsjFsmqAtbphhJVb1RSyf8n66eYP9eQIM31WaKf62NeiQuxauFVh9Nxy9Pa8PVoTqYGbOJFLeNbhxD6daUfHT52AfhJ7/LKO1WSLpxakawWD5SU7qxLwglh6hVQBYLrOvrpbnyXhSHUAKx3QbVqnGV+PMUCvLgTnLULWOZavQ02z8DxI99uyRg6yyX+Ux2MTFWWm+Wi2bar72DUzlns3hEmXnTWMzrmXLMztUqZp7Bp/gm3TKJqQQQ9OLecJnEmVlh0Xiec42ZJDJND3Sgknp1++TGkeChBeNL4VvfIK6iPXlS4D86AgqA/lE4jD1iWExuYaEJThtPOHOqxIENochkKA4j15ZeNWsUB+0nMq9iwgv8UdUxSMkevO4d4gZeeXM+SUlLn1UfdeV1vCzCC9ON7zRPTVfjv3HxncgXvH2PVZmpY4ZrG808MUu9KxbL5u37DRjMj/sd8AsEsKpJfoh3AfqinjKDJEU+AT5IUcR9Dt8qn3+0gqsrcbXc4U/6w0JiSjkocJdqlcscovx2338oFBH5ehirz0pZVSyb/ONl64emJYnUAFUY4jVFnWxUCuqUYF7MRaF2ZMtMH/ZCKZ4LwcZlsyewkraEnnaUxywO0/Vi2vDVp6UudQg2btFH39FjZFDVrzODE+pQdAU6kr295hv926GXWmRovDVxVbjv4k58cuRiFv++8dj1MDTweK7Rq1matytYP+Pbd3r+sYUiH1GYQtcxcV5LU9VJ59qLKcW4wBZQSEq11NiuvOvHL1ynw02Ml8U00rnTRYQOoz9PdxHfwx5+YeIrvFtFOnIa70BcA2js7Wf+TWzSbqe0jDXyY75/dWITxBJr/Kg8ll9TjbE7pRvA5Fkdl/KQ81NCPewZim85L5R/4qN6hr4I0dFCBBKF65qWGF/7MX7N2wM/evURfDTAx3sK0L/iZG5SsWfanUmRizNbV9pPIcRN6UB9a3xQXCGS43VwpbCOWzn/4WHhR6SLB1x3dy8bYUjb0i2XG4uNr2lSuuy5o5e0L37SaBMVNFV84WzWUJ7BtbYmozzyH2P8ILE+4Yen2FANXdrQ5HuSTsNqH9GdXGCxBz2Uw05WTlr4G6D+7GVpeoJ4+gKtPFs7V7rkLPizd8dmot03nILcARzpHMOTHPWp+Kgy8NzYzm3dkK8mpAAiwPYv+ZCeOIoJqobrMc73sHiccEzL6ew0CrX5QCWxUG4Ya4myMbCbg8G40mT9vyEiReU7gi8NORSEpGb/etOTXdRCGK/gxEmROG6p/1Iv24eJ2IRdGnrv4vHKMWm4Rshl4JE6I9L2IWIPyqeM7cdGdlTqqVLNpVnBL9owPE5RU7THpugv37q+f3owf7PnRox9MGCv1x/vu9yc0fGg+jo+hTXmpTD5JVIIgHnO/MQM+9Aqs1w93mqM13mjoXr4mLMALHRMo7V6ypXh06SdIyc77FiZsblmfltu5uQ4czJ/18wO1jrZ8umnDiy0UvkRYgbky0m5TFrBLir/Ua+EBTVup3hw2iG8FeDYq7M6+zHWc+ZI1vfMB47TKbfP4pgHaznmi1wR1aeTCg69ZUVLDj7ZYpcnCY+i4L/dxdtIN+oojARSKTrnRScjNl9gcboZU/6W4WGQgh5LxJycioXC801FnRqLdK+D1GqmV1kXjHo7y1oaaNNnD6SUru+uipfKciFg5Xtg1w7qO8kUzicjaO/eggECoeJ6+pE/0RZiNeVOjtweZFfLit0be9QUkRNbjGTaNIDiWSITZCDd3DATjJkzic1x4w5R/bX1b6WAaYIfba89IuM0txNb6tO25YV23zl0sSlPVcPWZl3iawuJe6kA0AftNZ1sTioPGJxQoNhd7NoOscMszGw0OuoSbCrl8Dhnv7t+m2U5S3p+Ip5VWVz3BqjSQtGtSQNYCLIFHlIypWS1YEGqvh446FXVSaL92VrdEKzFjLvJQRHeVR3D85RdabnGSjRzc3QtU2ZYludJKk6bjTHeTWQUFiC8qe9pwZUSOqGATTTR2E7bjYguXlZVNkvddHCkJhTWyDkmAaUWuZfHP4bj4fs2dPS4SWmuEVy4pX0TNi8/7WKCjgFmDzITW2Oe6EVA9n+sP5KswKNpQhcUHhxuh7H0WrO2afiCuCSmh/7hYoA++bIcGBl1jUpnX63pz2jJjaPRB5w7EY/HlwlKSKSIiYrTs8WE9EfoycMHhf/vOl8jQAKu+W0iJwG3tGljpglLPTYVfcX73x9yUu0PJ5an/V2Kz1Cvd8kLfyWBUYUg4qXmQcA7FawwrD3x8ddXzte3zTSn35g0ChD4wilYn6Rwo+w/8yrB7yX54tQsBT4iefqeyvUmh3GmM6MbHNSSVrH4sMsdUByGqKCG7dZGxp0ZKACpo+eLJQlpMPZRS/uGkd4z4rvAjMaa5utUYGU1btgmnSCne0HEaYdIfbRvSsAIXVqKoa9+/ql8bMp/PB0ALDs8TR9YI37L3yXsDVNIE0OpUvmBItwQhlRIVbDUBY8NO7oKjw20wPd+FX5v3c/6gZmX02Q22CqeF4JGvgbRxxWeogU2Hp8zzRc8WjxOv9fV0oVrsgvfzvOy4GGKL/572UWWd6HpKVwUUPsVINqCaTkutJC8tiFzPFK/OzS359d+0puRhDIVTa2nQaHKuD8s6fo+HxVGO/GCunbAyDN9MnRXoH7qKmAfjQMdFx4bEejbHqGY/cvnI1y6XLJfg6aiNmr2AfWtUWlcEmsToIQrvMJAypR6jDvC86jTdUAFUpkWCX54mNg7LlulI5/PnPNrXjlKO9LqfiSrGUyLmxb98F69qQw/hVEyEhSv3irykBusplRFm5hdrsBexh0U7JsogV+kzN1uhK8xLH7pnROfX3oFrAV/LMjnY/Lm+DQnKViAt6ikk06jlFFSoEMB6LsFw/GXPf3+dZOB1ySdYv5NmuqAK4KCb+1sWn8OBizDJj/kulzybTdqVc970DjuemKO4fm29FJkF/eKQ48R8m+IF86+32iP5e7+8ZmrnUnhj/xuZZA+b1Opm9N2LmBsYv5MpAa8ScQacFWeqe1nn75h+cYZVycH5uf12TEbHCnuQRWZkoVMF7VZujixrJV/PRQ4inFxFLMvHR0zwCiPIo+RlLzkz8JoMgX1a/23JMXbH3zGJcDiclR2sUsVGxJ7+6bNptPxKOo0Zclr8dtmL0t1uvix/ARIb7Nn09OuL0HX/ggSHmHOrPxlC0NcAza/OdNm8zGHkvPQ5Lu4wWW0MJSf3qmhfCJ30frSe1QfFjp31aF3L6WVHgK4d54SCt2krA+Pj/uuev310rVfm7CtL1Nr8J1A2XQ8IJX5KHZsoyYSmMuyiayQx7R0J9jJESOzkx5uhAuuXVddeTrJCtXIEyQjFOgeX0oqruDDAcpVyQs9F0V0YHZuW/b/uZZhYDaQI8sgdfp0eLf5tmsvrU1noWXDrKip3OWnFflW+z/zZYxwGNI/iugqgfNi0Adf+jXqCubtjhNWERMVrkeAY7hsirVg5SrnwoHKdKBJ7TEg1loTidfxyrl63wI7FHYfq46Phl3Rs/CR3n2kbXqwMD2MroadkETFJ/CapfaCJz7ZYFT3gqxaqP2VwjHA7VA3Deh4zd4/l8VKzEK3v0eqSD4MxTnKj+iYmyYpsK+xjdNlq7cjTXGbxrwO23/9Zwx5mJdRUjKrgSptQ/EyGTGNceqmhqG9BdKyqZ8omK1Dr7WPcAuxsW90bQWrEGpoy8vJTzq5GUvOlN2OnbcKTx/zTnpCkP4dKH2lvjsVDd3+SEjEXrPkRe3GDPNdaEDzdfqgwrZ/Upc5HIIldPlo4h2JW+h8KmZjLaCsvIp0rG1oWee8JmHnLMSHuOCpmfjp5bU7kB1M4Hy9NDgI4zKdmTsD+/ZRUle29cos3R4H4g+C6oFcqm1t0YVUzY9ztoVmBNFboSqlEvXsJI0Iu7N/pK8AgteWAgdxl3siRr7ZzVGXX/8QJR6SpwKbYEZINaaIaXD7cnnpwdqp+aVy2IBVvt97uM8CPHFa1X9EKUXg64YsnsIIHtSWkYCEcxEstztiuYrLke/AP9eIGtlf5e5dpTwGE6cxiET6ojDknylPhzzTilvt3L2WvvGKIUP2jSN4csmt3MpJwFS5LDAI5XVxRGoHpIv5ieS16f87Eg9TlpivF8hK301xE3HDwT3JaynTpxnbb700wrOhIwuf9R8gJpjRx7SoKLgeIpIXyUsJBimG5TKCEcRAjk+eBzKUg4aNblcK4ZFFfneTdxMMQ3PEWfEEPdA76Cb4LSIPciEeItGE2OTi/xhh28MMSnHhp3qiqrherKBFEGwPkDEO+yQC/boFM4+otPHaNJZuWAR0GrELYXqJl+58AeXJbtAPF6PH41I3+AsjadbD7AQLn6jgxnqBqzBZsFfPykWXp8liS3+F2kPUfUvvsEMv3f54CaTLPlI99b1SSj68cuxRXExuFNtYPj2jMb1fRXsEZWqGropDk+Vx1IcU0jjw6RNAewEz0G2zDaOvf10gsbvDOQuz1YAUzzds6GdlBSbDqziIPQycq+Cp3WQSWNwCD05pKL/S9bpH8K0yTdgQKjN2YVP30cEPiIteoTtwCCsUNDoXhxP4fPn3xDKgQYAj4juP+9m0akl5Lb3g57ebW4cM+Ozx/AczjYxTBUe1KZJCOlP+LqOkMwbXAKVEVLhAsITFsjBUgQAWKM808gfa65xjJVb7qf+fsWN2hTwfIve6A4lzCkvRbU0sQLXz43aE8nyS9EaZJZNReBWxD6B6fuV3gDKWj9GgFEwncXxSdu/Rn2EvYlz9vLg4K4sFUxROljMV+ueIXrFZIGkJ8ke+Zvv1jeO+5AANKWa89DrEykHP3MNOxGmdo0eF6UUw3p9NX7WcvwwaJe+CLBIw2RbbL5/L8XbYFCnKtD2egkMU9juAn6ZgNsDAqsJg/OJGwmHSyCkojJ46Vtq4FVo7CCMxJd5rgXCZbSU4EbLlHFGDbQY8mYppU1a2AEN2bdOCLg2/igCvBy61YbrFnkT5+IurCbL/he09hvlcI3hSZwlb80VQyNGk82d6ecziNi6+Jad+vy50480cypw4e/01sVAujPw/7YvnvIwT/zpKH2kabYZrtvZni931dWx2Xz7+vPjQkG4xU/DyjhmtZ2etC4RLXbVgS1CjWoqQYWXLvQx+ufYoFtjJec5ZZNJI9wuhDgQzJA0hKwtVkaso+MiJDKfqcCeJ9bvliyEb925TwtHAFROQpgehXn71Z6WvVZQgd5u3vNRvn+eAkHbJSTcssaV56uAg2KexqNS0TUUrLKQRsFBZG8VL6akUiXxkikQ+sokd0lWCy2hRuyK6X4Pn8KAUzk59hgK7ULy5OX72zKBrtbdBuLz9PK7RrjuTea/5rWVfpSmnfV35cGQ+23tvStkJcrxlRqvSJA+fUU3Z86hCd9NmAbbxz/gNX9z5E29S8T6nv8O3w/P1hZSIhIF38nMUWvJ/sec1Oce4P3U0dIb2PnkZFO3M/CsUrdUDIiWNAxTrIElItUsKbkYWrG3E+iSL7ZYa/bd1lS8prdpDi3Y3A7dSBTjvjjdbXL2uSCZx/49pAEzQtYrTvgWhI7oOCRzU8Zf7cSRMuQ8RxYPpqu749JiHO9ZmgQK2r9OvUVuei7b6pNWVT5Xz4YGyfeZw+06GdRVgOFMIKmJeYtzfJ6IErzgSfkvv+UIyEzywgKV6JEEma+dmb8ADa7FCxHc3m7db7ALM3SbHphu+qIwVZN0OBTfTBCSaMbMg8hOP/eZZyhLaxU6gInA9LAwET8wcncxhzjaAn70HdinuBaOsF6PsYQ8g+LWc8Xk18tDSI2cFsIXuGM5+nPxc+BdTbFsewfTxIN1UZHegrzlUVdXHm5wfVYI8TGS+EEu3C2wxXOJkCBlqbb3hsSL1+pIsMEiuQUyjS/qXfDSWagODjNegH+fd72JDPgpcl/nbjec1hUiHGJGbYsVwxz+U0891Jp5TNn22wTCqWyglyCPdpuUd6dijz6nyB+Mz/fmp+fOPrIKski2adA+VsGIw/75dY0gkgcpd57vpH1BZ6gJVWf15GxhcFCfsI6rfm++rUFxqLdpEo7YydnJt4KPrkPV2h9dP/enbNKLgDId4xX951Pw6JBGTK3GDQJUEubxGBlQHrtK4pyb0x72yz/tuwBwUEfunsXx8sjazjaI4zMz7HQYCjKqCIquinTVkiBth7ZbCQChFZyhp2PROH/NFR5FJ0WdtT4YaHQRlHjMe6wKftLnLKq/rua7p85Hc8wDVm0xK6D1IRfrjKqj5goiKjU5SfDop83BRo4AExBAlIam/myJWs+78tn8Y5x8lYU6KCVG2TO2rBFcibSuDFeg+3UsG1w51hykZcWoyDBcUPkUd+hR5HgLtr3mWELHJqGkyBFb5jNEP+DJuFFK3ixjxzqGt0CSM4hll7stTe4d6sgK4UofE8hpOCI51g/s/j375UL9CfSFMBsM489dde1XVn+VkHy/AryvpgvEXA4PPyM4AU07AqSpgucqA0rDzN1+G1bVIKgqUw08b8B9QzD7ME/yBZhr5OUBPx+jEhPMSrxdCrlps2gDRGzOepmbhIw2VPt7leVVEND0Xo2L/BzWOUL3+6AOO6f5V+OvlLY4jx9KhE470tw5czz6VrIv7btU4MG11RC4TLISyHh3C+vE3sOvrKA8+rTNlLUVuaq5OdRIBkRVi3R1dJyP/GoVAPW42X150E6w9roiATVZf56nCtpoqKWP96MKorCW3w4eiNK14wTPBulHshmB77qFRlsd9oOjWO4iaYXHZ4scMsi6a94yhkX1nQgYX+p4hmT7XfZm+cTVY7QSu2CCh5lMET2f3lt2L7FlUKaGmxXZ5OrwArM558BN4fmnJCY7YRuwO4H7d4tDBhvoXcRNxNyBE3sQPOJcON+Lvn6ge3HYFyH65IEciNEQT69I6dSEoOaSqFlt4/DIlp9K+RBccU3+C5pinF9CXwvfXgkaFlaCwgz72H/VC7FNBnCc1GPXGn2D3bufP30Ua0f/Wfho3cpw9evp/5wGlBeuL9yB6kI/qMlwnhRkZKjJ0RE56FKE+OWkkxUvjqGj6qljEfoxRMIZbozW8mHlHQWjM3+FvS/+PLKAuYEtPFd1iJ5+FDZ2DSspNpZ6elBAXgyUKie1/yBwKinx2WGkgaLOUN8DfFYsECMkXDSkEN5EsEXzHAUOV7vwsKZrlf4Kvw/9lg37UMDw4iiv/VXqsQ//jA/ln3j5d+clX4d9rXqtT/ktJ+cN/nb+i9v4tGDX4v8z1UUw7TPPGaf9LSfhZaVD7zMrL5X/7G3poVaoGFcuDT9qoOMZP6ZiHXywI0NiuP/cu/2+eEATQJP//8yjIJDFbkuf7KEoH/fZgRX5NQS13GCezdFMntH5lB0dpstEV4/Qfr0KIf05/bTOsgfJvreS8c41PYbvJLHfQeCBI1rT5MQ90hVajVDrN3h0Jt/54k3czN+0me32gu9S431RT62ye5jqQQr+l570TnDLUGnLYZestAau2RURWLdB4kAB95mY2K3oCBp1hlnXeQeNtwJ5aOYQc52nIj0/uUbaFUCuy96cfaoMRJNf4n1xlXKgndDHCVAXT4eyzp95JFRZR4n2iYtW0KlpkLmqK8hn2TeI1QBco/fSOaIvq1/FYyBOFDPw0uib5Ni/SpOXjDXFOmh/Zgf+YsmQDIsesmaeuSajxSPXr13/QLZAfoUWv0+FzSzvC395d/n6s272pyfaoJkxVlKroXMXE1xL+mZIj36yWEwV//OW9qNbrV5c7du/zPnITv8xwgJ4bb1ikqOSa3btAG13np/WbB3sNeR/kOtcFW+UeVRZIm4f29pTixH/ml6Rkr0Y6nQ731g780TjSLvE4239UCbLRTpr8uqiTnIr/KVePOt88ajZH/C+pdaOj8zpELbtb03a9pV3pTylYhOZI8FlFzg/nSzoY1GC7cmTj/fEXaPbW46uU0iAtbqn0PNSkZcXpJtNXXs3uB+y/GpS0Af5M1/Hj6T55PcXpG29h8UfjrXr/hgRB78t8LJq7zMtauLL4SAr5/9cKRdS0/c28rHk6R4JjyXzfE5h930ahovJVvIqfEUIT7K4JxyFxaolX2bBvrKHLjgGGUmxD1rD3gpZpTlqRcq1zCBcg6GRPwSruFRXOLjg8524bNfUOtUqrwHH/2njWu1CD1XQy+1rL0AidtKFVREOBPPSkE4ynGyV4SaT4F1+/qjZVh1IDqntKl8NGcxypxks06txVUq1GuATtGk3Pd64ZaHQ2LqJVyG7zVU0QcQ8ZMh7Ar1MjrXC7kMxGzYFxZ4rf1eFQb/ZNiho2GGDUmbonV0g0T/yOen8cAUR9X29VVCMRNk0+d3HZmJgdRVbnvVnfIGCL/6hQCKZ/cQyO/BhQY8J4Ohph+JY7y+fWDAtsmw51hxaVk1BXCJr492EfKBz5/uGJDm5opqbuNT2URAilmfVLKYjSKjeOxfceBuRmMYu3ogQ66p2bmCcd5tp2NhDkxe2Y0M+yhakCXipXLVaU3u3XIlLrgmccs1GkkaJzeM3djpGKtpRU4qVpiuWe+uB2kb9LPORt+BXjmoEbK3/qs5KTqX1dlSzxoW1Wxsct8X8rigr+KMHiyDAOlHmHuzYx1I5yXILXnOi2A+5K468MvK5pvpfkZGKTK+KlQ59J5JqyLnhxYKXDt4JdTjSLgeaP0njMA5vdQPOlw5ucWA8ryqcSfHEkGKe87p5rASO08NX3WMqbMp51AaB++WOJM/9/B2O8zilaLdr+w9K33brfP25/XD6cPG4fty+XeXI31FdxcXZys/t3vLs0PO4fb18Oi5Mf+4fv8fnTcN3ya40nF+3hS6zOhw/j7e5hFcN+cfcQq5eT6/ZvMotBLp7ExpBOIl2EL+JgzVcxt24WTbVJPzXhMvytmWx5o9nbLs41M7v0hzNG6bQbe2WpPdi3MmifXGU50y6uo7zXnpuUc91gWspGt/Euy4UuvY9ypTu4UW50czetpFV1yHJvFT5EebSa3CrfrPZuWzlYzdxl+V/PMcqLfnSvHOm37luZ63c+Znmjbz5F+YN8fF6ahe2Ts+x3tryJ/sn2xf9av7c99zb7g034Hv2J7cH3bGZ2W+fZv7Hb+aOVzy6bl4x7FxufX+KDj9Xb6H/b7Z1Hf+5i71vGP+bxh3hr3bxE98P6wG612TWsq4GUXNnuCKfS75hq4dTUwNQVnpK6su0Mwm3LfgT84/bKIoFvVv+X2/2DLn1meoRD6ZVtCVx4+2C7Hg6sgG1HeGTVMFXDeerf2dBDYF2xk4CBd4KdCMx2/0vm9SGQ9UDuxsMi7JG8bQ8TWTvyfxw+75Un75vDfw2z1ccRXcPGquBYpe/Msb8L0FV/V/h7ee2lIk/e9QSEEPKha+KTzRLVJcEi99Xl0iF9JUjuQXcr+GhMgKkfI68ylj7nNw9D5aEiyrjpzNkbv9M4m4mudRFgPwTDcaG8cXYQ9KKkOu7Jhva9artyckKoSz+TrntAI9g9Sx96sdhv4CzJWZvZpHOo7rEDq19Nk9WOGSFAokdKEIPmwR3mnc78OPayYMzJgn9wIj4sZnFeTnlg/leGGVcHk8CEpgvmtpjY9ADO1e5zzly96JMB8u/AkD8x5rBAodjmy7yIfNTdiOdBvIRgTNxtRDn+2LSFdACmdadVKO8P1ym8DspecwSb94bTmE5hQ+BDnF9SrUE/kpLKP8r1pTbZXrh9fOhM98xxyhdhZzln8qeB1mYTzPjukugtXAA+m2zEdaA2aA8jNF1l0QYCHMbut0Yd2y7hL4nkoxXUffjk1PJIVYGNJXuiRXHPELXN2T8xpEj0G7ajLiRkp5dcHSF/akdpxlrgwVhCcnYMrAkVrg27l5Pq9JlCX7RMhuFE2vivTctIgz8A4LY9BtQK8oAoGY5aAOW5aJddS1qD8TixI1SAMp+kzdzPrnF1wD/Ne1fqpOqE9LZBZuNkBX+UHeOPoUfbjpHiS4gqnNDZBoFTX8bhSEJSmF9V83AJSUvMP0aFpQyfAbf9GxJHRyL5ymFV1t45dG+BqSK2czNtHATS+7O48+rM9Z1RFAsj8+y/8cXA9oSfTu0t+VGGq+0uaa0UvTxnFSNCZcPjELtv+XMYeXzLHWSJppXgKMrCVRTkUmPeG0Y7UkyuA8/nQd5bnk7ObIWVb5Jjp7EMER39kHJsZAHJ2Xlmp/Mq2zsAL2aHsDGrzsX5hb1MEbC+6hknScJySAIV6cg6JH5Z6DyqV9tdCp9D+NajTtqmooqEojK+tbxk9wD0/uzzzGXny9aQnu2mh4U3J5ZgBZknEb4OS3reLMDKexG/p1HqdbP93o1P96+BJmo0L3UJ1hDljYd3n4u83IRTOmpiwwiwyF3UmIs+VjU7uUPIdrNYQTB+etmG9Eifz+GQM7KKSJ5L1WOiJvuYNXMrnc3PHW1lm6mw/8QisHBmUcUPH0Zshg0cXZe4LO3SSJG02Avh1cuCVsW8z3g8AbCoOblGnjuATktyLj2g6u5Ho/Zq6KX+3QxowmO66rwtSfYuoQqVrDTjlPbJGhD8+kNKx0dnXBmcp8jOMrwDTBvMEFH8kSeqLEVbLNLjyzJoHtd6doO3ImFKiRoVJ97xg3L1yhPNe1zLTulCxT1CokRHIf6x6AYNCILaiqi6aBz8SVUmagA22P+7c0R79l0zVOsPiKw/OUc0T44Ynjz+vTFGRw9M6aHX53U6yFZLCoeTkLYcufPW+grgSK/tm5+XaEqMFvRmOohhGIZx+3NOkxf5j13zs+mOqvv0W9DpujucPUsYiFTAcj1CcBQi8x+zNyYM0S4ven23/dzfndQ9p1IH2KEtVJpSs1vCJMtZkmhFnWYjgfT20ZfRCIyooF+n+HxM9cRsGimuXZiGgpSQ2EOHyLI0dN/71/wxsO4c4ZTDeBJnzTOdmdMB2dXM8BNsv+SDDKEM89C7XjEQFRYxStJEcSKh9568kmRuQYB2LAWmrNEsqMvSLPb8jmkKN+TI2UNgvqVJkOQC/p3IDLacCc2keX44VzMsXz4+eWE/TJlM2xG4QxiQ8OfEojoTl4QTxOPew7TxjF58m2dtQHj3hel5LsPuiEgSNx4zQy6fYS6D+xxELdidBloX40MtZKV6fjQ/kkC6TW8oO2vBBlj4vYYhI/WysEUGU9TC92vaEvMlHuYwaXb2fEO3zxA2xOm5UfSRwVEa0XXDTCvXzQsCryySQ6nZ4wVqSnT0jHpqOsjcvovzcNbA6QbhmKziI7oPBV76WZVcsqGkGOeOqLP3Vkn6rji+M4Rx2XtNHKXpG1/JvWrvx5T5N2pCSX2V8z5WYMatpHAvWxT5fZ067DSc4o0E+YRq1NO3xJv7UbxZsw3SnUek2nRPJOnRMWHuoH4gi7z1iJtuO0Lr3dH79RQwn5yE8ZZ5dJ6GkByS1bAc0LEW+D2SvLM8vpehonOr8MRa+ARcqsSMDBfe3mc0cJZ07LmELgDE90ib12Sjz+70U8PDLIcKzYuPipJ+yY51N770nkMtGujJ20Il/kr3adYhl6gEAplfV2wIGD573YS8M74oW8eeBvjP9oMm2Zxml/M3oaNDZfFx87mDGzFZLXiyI6L5cWWZiB5VX8YsImHPWm9PD4skQ2RAZ5LEeAp7lDKjFuiicw/xUi58z/yAQOTt3OmRuLTuUJr/OYhcliWKjZKJwHBhJ87jHY38cFFotB/qD0iMqB5JejwPuLyWo5O9zmIi2MiVE/o5JMjh7TQqkYGSaFKqOg5fgEkCA+2+02VOa+bvOFsPLYjAmLGqzfOyyCx6cf/ZM/5NnnsQuOBp0PiuvT3bgtS8sQaBDtvi82hiBabgApWskN9FfcAcgTQhRGSngiIf1KSTodu+x/HZzMu3HRGCnXQSgqxRboaZoCj8zvywlv/sYOCcXacniPR3O3lHrnGGdMSg5RzPc9WcmxZj+Gq2+9N5eumhAxftcKW9i4Ts75uOrXOJ3kbTJxbMAeeED64Td2lskORCirD08scWLMb3vEsuz8188Ko4N/8L78OMXZ7J+iaQfmsIOjZ40vYEI7IK10X3a74imlu/EpBtW6ZpSRh1s9wk+LmhF7rQ9mOikI9x0hxUmxC9XLgTZtP5SAjOiD9hGIZhxI7BzvpldxfakjRaAMXMrInokwUQnruYg0u3h02UM0FFU5hHZycXY+iYwGpLX17FeMDR/ioSZyT416x2noV0WtO7CF4AfhRJCYsWdX4xu5049FzR3eGZF5w95Dftv7yXzmpiChhQxPJSNw6+ImjvQAPekGGYOQhsKe9EQyYoF2fy7XSiqvAxRI2mTE2k5/v4CZLk20auw46MQYTIVXFXPVAlqBpLJMSN/v4ssPdPB1TSgOwWErUBcj3D2HOUB1Qyg9xULf32UJU9qcsZ75fZz294hEfngyTbxFgCZCAPpIJ6aE4kkDWCoOaDe6muQsiGPbkkHU2JyKuFzDMtu/7gBPjJrS1Dqo2yEnGLL1LDIm4YJokr/nuGTbZP/0Tea2l17fD1cLOgX+hh5RrEIZB6MiiuOZO47xVGqpQYH6yDobWqxmrpStsFu00P3J9+zKU78TZ7JOZF1ZzPwhcStVoj4Br0mokJj7dWHty4a1d8MQuQg7LNcp81qf1wyqC01c3IECfL99+c+aYe3T/7TCLGFU0SnzTUcdGh58I9OglvP7jDnNo+g46d3MRh4puNsFXsHkNb4W/rbRmkmsfX+Kz95/ZSvO9+iZLgVWqezDvYtcztuVdwu2gTrpDWbuY7yPcuqoPqs5S7zkOU+gWHRull8UY1qtBe9Oon7QYN/NNBWCnjxP73M7laKxKPhwI/zhAvgDWcCJeHKEiWYOOGzFg8VMt0Q1VQDUPA0ZfHewb9zJbIoYbYi9zKGaLyFzKNLtPvHLU/QmLHq5qmkEDU9v6yEL7Jzwn1qs4WWXHJC7sGb41pUcwJPxJzbxepNKe3ayvLovCvdNKgPawc5dj4Bu8a86fQ53I/s6b9LGh5XmBaQDgEO6Nuxmr0PMFWsxt5cgM60+GHJ+U5E57N+LATOwuIxZe0d0KH9n7RlAXjbtoay+oW2wCudMBP6HsWMMHY1Q50byeJU7Gcm+NjXXLFi0spt8znVPe1FpKDJsVSmGBtXdwunJiazI7f+othoP6oeCeFPw4CHk41NqSHctUu1QUvfJK7UnvNflD0egtUcZTW8r5aszHjnOfmtTXYAZyWP98xoWowLv5SJpc/N00aZcWOKGfrycFvnvk+zEvlo8pheuP8FN0FJkFo4QFvpciiX534M8CT2EUSBQKPV+/I26AeOtecUf7H2WEK9C99lfJwVvQ1DRVUV1jQklh8jdPrBxCWzNwWKRr0AvFQqam/gLG27e5FaeyWxEnpBT7NxkMPRscNaA157zXApKiDGe1L57nGehK3/SiukSv6QUB1Ehc6n7ugxbgoY4WvP/TDsr5PZXK/AK+wWbX7VlrDulZhoiFixnmlzfjJCRXZLJpZHIZhGL49R/1ukDtgI71sr0WCiUbHEZnAlYiqGXzgOrLlNdwVAShhwM5+k8DLZzsGnRUH3H//ifvvXOWUom6owSSJNeMCqv190gMtv5NovFiQl0NXa4qOiq3ETKqpxcz8X/+j+hl2NT4a8WGy5eQuTcNTw+WjcENBU9Hq+/IBzD8x9FaKS8ESde2HcDUJppg5//QmxzxG8g8/HYcIYO/L9IcS21JDM1Zcc5p+ILr6cKmxDgl0yhMlMwLfplOI2Affvn7AY1sN9qrYMOothwVP8OEyIBj7saAeCTiZYtggj8tThQ1KjZjCl2tWIrZ11+LrO62UJZDXIIJZ6lzJBpaZlrApFIRoirwOKyOPcorbndNJt2I8ksItYXL8bQli5a2PkL9CNcTMFJwjyUDZGIyPhnLjYm/qSGryqrFbNEOBbdWouOca1Smr5Zt0wc2VbmmpZ5JsV6D2S/cBU9ab2mdi5BBqZoAffefM7XrdsCSKwXEtxjjuVLtvo/q1G8sUlNZNRl75gOqt10GBCKPGeiX0HTiSEfs4ieFl6BA6gQF6rkCKpSyjdNT5WLDmAxK296OQxu017otkESZAyn0C+/Y4WVEZpV7dPIVQjxu8jWfzKqz3B5t5NhAeOtTUWF/WVVzSBIewSmLspeN9YflEvny+f5cjUzlc4Ju3DklyS6Yx2AJsqnTfJ9axAoHrc2DH/vt0leJ9iHBqcVFjxSVerPhwA8D0+A3PbXwJG6wn9/8e89fvcMA7pmV9REihhQwlAiWI1In4FBbj1fWWTqFo63P2p63OI06vz+NL2Uc6FZI+rLQdXS8dUa/70CaqIcSjqaGuU5s30vcrI/MXtH6caqE60eyNO/QPrBaUeQUG6txviCM9sUkExASE3wLCRpmGQ4cXdvSpLbdwO0y312vBSuoEGoJUaf+OVkli+NZgrD0FRkXcHM1Cgw5CeWXLwj35aEoxCTBUz9RKUAfXdfKDKEhZ+G/cTVBz2c1UvVzmKFAuwqFZ0BN9At1UPawRNFt4svzVACnCW4dRdJ9MbugTElNPbHJ2Aqxm76KgJGeb2k2cjR4m/Q5lns/Cq/cKEEPqgeAlqvuWn0aLAnTOFF/nk+GbKh3/hoCQ5CeG460dfCAXKdsBX/Q0XGK/aZwq+wGaC3ZHwHAQOSiAhpwrG5DR1Aofjvo/yGcSmvj6Yj7JOMvN+92APKLxfC6httRzY9c4QGNa6BrnBAXx4e0MVb1wyWDot75sbLGy+aw/QnJXwwuM4wpC4DIN/b3lyDWxFdi5kr2+qfFjkGJ5RUnx2jlOtutuE9Res/PQWxtvoN+qkemsOER6y9crOHdjVFo6sRReHzmYDkMH5qO7sy5wJOaqNzmqVYFhGIZxqGtqqcqxTU+I8NX/v0IpsP/Yb0c5f2/20M9TVNwWrLxs9bSNSuow2iXo9tDN2C4UNgsQ1hxTBTk0MF2q09EVf9yjcY7gIpQHCl13dQ2IIv8ta7AvPXw8+Hx8/rqHB/ldWHQuO1eqvXDuy6vTbVFtJoogn3hP4jDatN2H6uVbPgIHnGi1M60GZny1YggWs7MsT8xEbk0csen1e8FKZeT/uAoRA6AnE6rAuGSdiDO7yHsZXIjKjU3OP4pVqk7eQAV/JTa4B4b8L4inpHbzlJ/wmlOODcSWjaz6zbKR3HnATjrTITdBZ7/icASslD96gO0YndbQXtGH59abZB6kpVCK8+rCzOWn400teLLg+5PzOxzrqm4FTfUDdiqFZXjTxozUKvmxNYTIJvAqin9ZHbj6rFwCBLqbI6VQwlyYsJkSoV0zSdn0p2efG2Tu3VFCXgpnXQ6/F1FXAJRrlHATSUPeRRdbvNtR/hMbgK4E6S7gaSCPiTGRH+fn4N8ek8cKgfD305enjVlGskrjZap5Yv5kFI30sELCTDlwvRMNcCah09iHYMMLsV51XJfPqbS2QXSSbTdP0u5+fD1PpQouKAJKeUYULguKl+6h8eAyyX+92RpU2s2p0Il5/u5TB/9sMo/bh4VjvcWdxHRFetJVtuygIvHk5nw0V2ZcbwhZrl7v9W1nuIXW4evJp88Rr2EmFV9NuaLzL5a6WKQ/XyIrF6+I+dC2zusVNU6hTkriyakfOZDIeG2pe2sBfhTj5y8MTuSE15HURp3D4sHlghqI5jhE2wko4KnEq0FDO9zunaP8g1OBp9v4FfSdMVoK316wjgBrQbG/H2sDqpdJQnoX7uEeReHrXDvMXJMZNw1+abRSgaoSE7GRBiw34Em8c884e/r7USSlg2NiiEQhs6B1cAFlHDYbkkxgnDt8qe0MJrqpF+PY6EbYbJYLgYPETa5x0fzBsN8pkTr2OmeQra+nPPpKc334LAW5Ye0tYx8ye0xJ25R+KM4F0jZ79tUHhaDYj32OkfBIzAOgeyuhQw6CsJkbVZZLWSOQapwJaTV5Mb1FGpnV5k9yY3mCnYxwRNV8T/XjGxiikzUit1ydg6ZN/CqnOJ2y42paiWLAo4ddCMwZMPtE/kDIEu4Ov1XnSh6slCO6deMc/H45KZVUXlE0RIBPYytQKx39SeA9GSc1r6zIimkMKdpSnDeUI12m8GW9EInIZl62K2yPI+LE7HutTBPX/yNBiQ50oJgElb6v9Roqwh+y6TovJNfseOsmHiBn/b5CDKKKwi9kmaWON80MOeXZ3Xodu80/mheH5GkDm1DT+FZqEgJ8ziUgFcE9plvLPVbvskz6GZSWVdoy9yURl06MDLM1Xrtgzom2LomnEjDSDB2xKMHak3HbF/7/OqIJMVJdkzZN8Er1H2nVhOZA1ZOGJpSJ6h9S04RYUH0i7ZogqGpKbQpNR5VVuhiEckd1llIZhPhANVXpchD8oHpNqR+E5oUqUsoXoZxS/Ugp9kJ8p7pNafsiuKV6TqnbC80V1bZK671Qjql+SZKDECuqfUqbreCZ6nNKq63QPFJ1KQ1boXym+iulZivEK6r7lHZbwZbqMaX2TGjeU61TupgL5RfV25TKXIgvVDcpXc4Fv1D9P6V+LjR/UBmlbIVSqJaQogpxS3UIadsK9lRPIXVVaM6pNiGtq1Ceqc5D8iTECdVVSJud4DPVl5BWO6H5RrUKadgJ5ZLq75CanRD/Un0MabcTdFRzSO0kNEuqIaSLjVAeqN6EVDZCfKJ6F9LlRvAX1deQ+o3QHFE1IeWfQnlH9TOkmAnxk+oupO2fgnuqU0jdTGhuqHYhrWdCeUv1R0hldAgLcYvsEJivcijfgo36Yb0iVG6RtTsoqxyKA7NHh+mKUD5wKwW2qxxiCaZ+mDVSLJENOhjaVJZgvw7RSPxzuwUWbcr/zGYdNo1U/rnVOshtih2zU4exkfKOWyawbhNXsG4/LBsprshWgWmbyhUs6EAlMUW2DczqlKdg/X5YVVKZIqODqFN8M7t2mFRS/uaWD2zqxCNYtR/mlRSPyMYdjHUqj2DpDqWSOCN7BpZ1ymewZYdtJZUzsnIHpIViC7bvMCShvEX2D6zSQuyZtfphkYRiz20emKSFyp5ZsUNOQrxwOwfmaaH8wmzaD+skVF649TooaaE4gr07TJNQPiJLAtu0EHdIcDTSC0oryVFLr6M0C0dHeqrSysDRBb1VKs2Bo/f0mlRamXNU6LWj0jxx9IFeCaWVDUeX9PpQmoaqNqndCE1PlYt0MQrlnuqsSShhZBJ0SiqhZdLRsSjhyETVKYMSLpisUsdBCe+ZNKlT5kooTNpRx5MSPjApoVM2Srhk0oeOjRKumUTTKQcl9Ey6ptOuykuzfuNQ1LEWU1dyuyo59aVN98nED1iDf/8F5P70l31Yd+1Xxaa3/Kr4810f/xvL+faPf7QWu779cf8U+zoP1/V7bLoSn5bnm3fL2+3nP77kYvk88SAYDH45l6vz3S+O2/3Vr4rr1fNBt8L/6wn8o3XTn8/+SH8EWM00K2ddi07u0q/b/m9XMVP3f6X/usGoIz3+nXSVAkp3KaB0ORhInaYBgW0DpesU+BvDFPb3uBpeBxurxAMUqw2xFcxhhOvltkk0Jqvb0tC60AxnxsMuIB3liLR8sGXcfvzAt5/GmrLY548UL30KZN3GmZO2Cfyqw2Gsdsc3PovuyUtXHzn3dYdg7PaM/ohJRBFpfJFYM6OW17R9zhbrj5IPdA0dCj3tyPypEhmkgIEIhzq9mumrDW0fR6wvaadobY47jWu3VXHu1jPsDk4UXirEkWi7veaB/Yk/M/8Gf6X1sPDiFszTXdf9IBxPSu6XXYvRMos+6+7Pf3BSg//H4a/2x8T8lRdw1YzTxy1fb9dxpguDjdE6v3qDNHJwGw5rSiXB8ap9y/CoIJ1E46Up6aQwysBxtcL4H9xSDu924nhzbdEyKamninDBqybslKpd3CgHffMoDjbNW+3GtJR7/ai2uLcZnTVhVJuddsAFvcftjQAetyPAxOLaGWnIBHi3Ygiu6G2VdzZ7EjOJdzEx9v6k/B/nH0S1iVKsqhp9oS0Ztai1MUYpWdPYStUeXCmjjvfAK/GoeCOePu9bXbpRJisOys4q3Cp7q+ZOaXrulZlRYWVCDGX59aHEcGyuyvMCc0NuEBOt4ynygOjgOauGwfy/tmHOWNoW8xa5QlzSLtNb5EdEnziFUvs6EqtE3WM4IFQ8DMgrxFdax4p8hyihi/t7ZVyfNmIdqDMML+xLm2HeIQfEVaJW5IyoI057Rd8hlg11wvDIVI5GzAvkDnGT2jrdIO8QXcPzHNkghgXziOEPxtJGzB+QbfWuOx21y/SIPCbRDzhVpfZdI1YD6h2GbwiJhw45JvEltI5r5Pskyh7PGyXW0Yj1HvUYwxFX5XnE/B15kcR1oJ4iH5KoLzjNFH0JYrlF/ayVuC6/R8yvkJdJTE07Tv8hPyTRbfF8QJYkhgPmFYY3jKXtMH9B9klcNp37e+SnJPo5TpMy9KtGrOaovzD8j3CGh/fI6yS+NgdHyGkkStXFXa8M/boR64r6jKGlsbQ95ltkjsTVgFqQNYja4nSn6EsSyx3qJYZdui6/D5j/RW5H4mbQjtM58jaIbofnF2QEMTxhPsGwSGNpgfkTsgtjJ0tdpv+Q90H0G5xOldr3Qaw2qA8YvidhwsMSuQ/iy17rOCBvgigzPF8psd4sxHqG+hbDq3RVnifMP5HrIK73qO+Qj0HUP3E6VvQWYjmiflQ2uTTX5WXE/Bu5acS01Y7TGfLQiG7E8yPSQgwbzD2Gf9NY2oT5GrlqxOVW575HfmxEf8DpszL0dSFWB9QfGH4m4RUPZ8irRnzdah2XyHeNKJNRpYzrsRHrCfU1ht9pX9oC8xNyaMTVHHWNnBtRjzj9UvRdEMsF6lcMT2kqr0bM/yB3jbiZa+t0h7xrRLfA8x/IphHDOeb/MPyTkqXBHMiWKdajtk6fkEdED6ei6LskVlATwz4I8AA5Ir5UreMK+R5REs/nyrh+vxDrRJ1jmIV9ea6Y98gLxHVFHZAPiFpxelb0BbEM1I2yybPmurwcMM+Ql4hppx2nd8gPiC7w/A1ZEMOIuWI4DmNpiXlC9ojLnc79R+QnRN9wulSGftmIVUM9YPgVhAUPI/Ia8XWndeyRUyXKoIu7e2VcDwuxHlBfMDyHfWkHzHfIrMTVBrVD1iRq4vSg6EsjlnvUKwwPYSqzEfMxcluJm422TtfI2yS6PZ6PkJHE8IL5FMPbMJa2wfwZ2WURaJfpJ/I+iX6L0zul9n0jVlvURww/gnDAwwq5T+LLTOt4grxJoszxfKPEetuI9Rz1Dwyvw1V5PmD+hVwncT1DfY98TKKe4fR2IqBOzpc2WfMs2ijU3Bu1KaVrS0e0mhnbjzFOMKYkWk1cteSdCOwAbZIKAcKagtC2Pyi3CsmJNhNQ3gkovEZ+pqHXgrp9qjMI6gShjYK5GXPeq+VPcM0/m7llrotMMqHtBdd4wTWf1fIrtL1g337t4wX73At/7H4GhSATqI0wfZBSkeJAShqFOAhVIp8FlERkmLBAQiZMyZlhZFRXHeagfoX5V2oUhgwQIhwP0ijpNvwEDRGt98QWnjVJN7iGODFmrsgC8ggralorCmQqxGJKHCVqnfk32kitDuNE/Q51LvANB5E6XhU2bDQhOGO00/b5hnWcV5H2dV/N/VbRV0/mcvwa7WjX3dZ9HcfT0hSezrpGxPYMaw7nwOyk1RaSLv8mVGYDsgOia14vn9w75iGCFc73IunXhwRH7SHFLaV5xuhwEyK2vOBgaQDJ8b/nVvWatueAk3yRBI44c/Dx2w8QjxSna+e+BtdPHeVSqeXnHPQ+sk4vx/o/r4PVNlmbLH2PS5kiyYdZAVtWdv9mJKdH4ixG8UWf3zGZ3mZ4hxfxtwmoU/1sv9K37vO4eswxMOmz0kl3T0B2NbGcparsPn5yVh6jf0x+vpy2QzrI/XitXJr83+J8xfq8LNftU+Kvxxg7FOvL2+Zr/7wtyxEJL5ukGqR+tPl5egzTZpXq8DYvr1+nNwyvs8/ardLisJnvf+wjhaY/mopzdfzay+XN6vUxvySS4SmAp/N5kkT0q/P61saa3rOTIHJwp4BsIDF62sLx4nfoMTzhndivBww28kVSG/J9d8JLcMvQEqeGgvPJbe3vE6VazaoxUe1hmA1AiZfN+htCRVoYyO13D080bRq/RMX7ZdfPnQzPevf+eHMLLATnatjCS+9GBca6GTZsKZ2lVn4GmDeyBxo6UVReh0WUvykULwTVHHwQDf9469Eh5UzesBrGJfWYW6ATlLRnYYk+qi0PzhJvZLaQ+J0EX8dkdhwBaqU3MyXHZ/twbHAo/Jnl+9u/iSbcNKlq6DbNZgj/ida/sTqd7N67qBc8RP5ov5Hf/BDIInDhUWktidE5MNrIj3lizhGqocfdv8cUyuAugSKEDt+2iQZoFWXNIasTum/GhxOQSHeJH+A/mueShOjN1T3KfMxGVXHMkQBOrWp1Xq2mbbtNh7ukGfHJwEXtp1j4FUmLByAIJmj+Vuao4YVf8ai2sPzpL2gE36+KtC1KGVVA/0d/8mwpFolCHwwEVBH0i8+TaKPZ1V9Tx8u+Uu3i0mHwnCzx8ZgeY9dbVOs8W9QIl8nQ5KLotM75dKmdNgUaVmo6OyqkotxlUEpxvsSApeQLS0ReXE5Zzp0KXKEKR/tEq0e4aMNn2WLNk3fj16lNxPql2McSODBAAn78FE48mqPo3Wyk9Wt+nLSo3q1GGD443/cMh0ybP82+PAtF4gIrZJhcL0pokYwQhfutFxHpl1x9N++FPoxgnmjevfRqr8YHgXp4sUorH/rGYEeqpdg5byVjnN0XalbFFI7UWlFx8YUwXlojUUVcN3V5jnzoR+WD8NoimxlID44QdFG8p7x5ykyeVdXAOxRBC/ylVm1OxeMEcF68ap/RKErst62ctAQ+jg7Tupw8JhxBqWlX9Y5toQONCshKgQ2HBhrVHyufUwZWVXDjnFVIkG/EVTLv6t6NlFRbQqHbBxSblAH0rnFSKarAGW2oEEfcs64XyleEH0LQUhldVdVT6UYB44kJK76Yprt1lnP0hiOrMWdVT9EWgVPMKomTT6VtkX4VD5L3qorwwtyCQnpNzzvR7SH4jtJbCqbzWOhpwNWp5IDUZHsLR42rMt9nofOlkUIlJQfL4i9/iodvd5bW3AXPijNbC//JQ72mOP+6Xh+rkjTzgXxJCuloOcp8KD/Ivg++rkPfSuI3u25/eSOdJ7v8HXcbT/5qL21eKViDKf+PRF5RjPKj7epwGeEemntmRsUdk7qbP8qa0dui+ammwAVtoI0AZpRFQT71Jowlc5lAY3usTMUEy3HFtEKkzpPjHFrSSaT12we7+T0juirjNWRWahY30xit2e5+qsariv3ShauFQgYtc0ne6txNtZrRvJ1sjpXFt11YpOR2ws3gv9r25FSfe0ZzatFKOR7kpglmxdbtsMZcuyBfDOsNGev4DTejEU5briHHeBiMBEEeWrPcWjQPnY4V7h4f1LoPjfpTP2DT0AT8BZeJZmo1PdiCoxkOf353TYuNv8dl+6lp/PqhMx66izoar7veeIh/dt4USD3EQbl8/oxpkwFGJjPc0MbEmXRszA3S1VFcFnCl82R5a2mzbO2qqIU1v//0za9F2uGGFOzMssZYsjRyfCq0jvK4MGCl3GNaCcCiAg3FGH5bgZRBrQxT2VJ2f2THGA+kZq8SJU8pycUbBmIpLzSkvuWDICh0pqvlzNuWWnu7+Rjpb9meJgaGic+yWd1BjWbibaBSTIgrUb6TQ5kUyJQZSGmmufldxUZNSra/vVhnbiwUqsmVSblN6qRFXUiEtZbYltBMt1EKGMiO/bxzP/9uw1aYijY6wolrdUzoJRxdopPTmLHsVsFS1MgHTBOsY8FqulFrC5Ko9QvbkGELc0g4eSYX1VeOFC0SuJ4VevFW+e9abrvtk//qAvx15ig28AM4HGoNsg3I2uGqhN8Y7BNUMIH0YAC3x8DZ5WRSBkZJFUsCYBPgDvSBwApNg5DhBNyTNHLrSDM3fi7sQLip3keZDxev6lho1hnlYo0G0kGU7e8qJs6KjItvjwa1PE7QbDKxMhRvqUfE9dFY0g4q7KZsxlfhfLTLOdWJU2j3vfmS8tqPB9nRWYMPnuKuCD4lkmdlPoTFLYZkKb9KNm7jaoSTlOQUvmgInD4wU7NGG1V0R92OiZsJwZRzCtn2jM+57J0pKX/MVCYpaWcswTIvMSqaFPTi3z2xPqMsd1473TkBPHWNg9FIOWWBZ7/xLd4Wm25f+qz9X9Brxk49gC2HfZsRi5aaCcs3JK46bn5f4uuw4elOAxgszbe8KK1EJHoFKRllae/a4R4iOh0JVtV4RLvGi3jRnyyPDnc+w2LW5nbEcA/ZyRkR3dRUJcApWSoIZPHvWLF/pQnSM5/77yBp2eh1On/sr6iBmbuyCTZjFHWeToP50P2xtzR32ZPjgHSdfTvlTWqSUinm2YGcYqHMGTjbgZCfHphZiVSaU78aKxBR84/vggHB5S31nc7OpaXyTEKIWlaH2Yj4ULRlFCxXZyxauZtlORgD2tGDHDUPatD8Z9oaimYqVbvD/nBSjAby09w3rspVdt78yjv7srxxfaZOq1V14khF4qXU9PTU8aWDFXFjyZxYgMku+2LGTGRvRhvnf+HtigztwygwiPijc/sTfzVlk07p8cDTEPwmvjk8ryYb70uPe/5StBq4IxmYS5sqoJtGDo5rPo41fAyT76XZ1TH3K4OEseUWhPjJI+7Q+jYsabPT0jcMecTJLonmHY3QMX+YhaTfzXACoPjrt4zTV99szWEH2Hl+WkmgwccrYAvv8s3A4BdRD8UAOATAZtgVJd04mR1uPBTNhMcfirL7l01iBoNfs1hM/qcDZQyuQB0WLDf+X4CePqtPuFVDc0o/sS3ZRN/8XnEUvbTvIfyjxVk2/WoESrVcaO4bMduzj8fhYHFs8RqQP+0XEPmlHXAUMJjfV9SVXRX7/1HtH2WOMwLr0N1vn33Xb+C+1iI4RbNyPVABx7lY0LLhtgRGlQMYY2B58E+VMC3M4FO09osQ37pXrlmGjN+HNi6WJ2vsR/qc+o3GDNL2xKm9r2vqelA2K2A/ncnwtcyJcXxm+J2qvuCg+EGV3FrlLx0DaKIA70luIubDFOsht01d2QnUXVbpLDBsY8nz308109GZnuZZeqlwa4u19vQmjeSzyH0Ixn7YxVZ2FPOofjg5KpRzgM9eMcdY8eioMNdkvVO2FPjyBZd3l2fC39NROX0dUhfnL8RKOZq+kB/WJzbWyMiKLZqThkvusatnY1RHvv7uqY9niDXguF72VSH2mf7cRNiFdYDLxu6K6ZvyEaAKqQaaiS1abzWiVXc1OYc5Y3S2xoOnGHNHsiNHf70JP8yq6j9q2/zubpEU5Zy0tMJv017Z4G7HYQdonkTAb2Puiy2HUgsXi1To8qSo8gH3OyKWVFQT1yI2HuKC24lEVTPHGgp4SJgEduePZAZYMoN25A3iWz3gY/GcdOCBntN/QbBKK9xlwsof/Ijvfu8wTVd5+UGr//uhNLamp2w1h4uSRZbN92qu84LAeh4eqhzHcJbEUwIE4paqOiieCLmae+gOirDGUXRK1QHzonL1zqOndTo5L2cTnG1dH1E/0VkJH9Bm0PQoYnRRpLULbftx7pLS+JbdrHPsru3O36fZ0QtUrqMynOZOLhNY1fjSNb9wMo6tnXTVaeDPpRzP/GcSj7P0/Rkzudq+xW4kvwlg0t7+eeTz//KOG6BWQI8u8nuLi/5R8fQhR7z7d55X6XSDJqZ505vwZvM6wHYIDKkrFoP+g4fzMLgRmSEfZhgr6bqCe+AdaH8Qk+PE9yebQbyqmQJ5xnWvpq++m6jSBJtN5rMGITi5FMlP49K+I+L0IW8I5mdpTSsR9mejB14LVUBFrijSS27ZQU8lu3cGLcFOvvnFoIyCSJ0ySwhLOVMZgBXtbrH0O4L/SsDjvAGUtq0g4k3uAbiD2+JuqzjJKYjHVIMydp8VsDr2YhFkEffyA8mz37qUaNeDSuIgoBkUZzMzcqtr2B9Ei4Swz3KdzqZBiWY5T2srSZhHT2tXTO/alSzwalV7aNXX4kqV2tfizlTY6NSvVJfNhoij+l+98bqsNDL4iu0CJeOMGV65cwfZSP+r6H+uGMvc/CsPsF2ZLv6Ke7Te1z4qqThG2DqxU3/lw3nDVu8yHX2cvnHWY0+Vej/ZWvcR52Kizj3SKo+23cvb716VwuALDlcBEJ+4v7eLXzvVw24V3DKywi442lMzXEmj70i/YVeSFeHowEg8a4+4zvp1DgXQWaIx9CpubAJVl+G42+lzDajCkXcqbzaPTgCSnqPvuzEozys/GCfLr5c1Xa5XfmzdYE0KFNWpvuKTidg7uhfaNAaPfq4HThYYv+JLxiXulTr1Vx1GC+bYpVo0L47mkb/nmVV41ZGJtnO/6l9/j9JtX/GPb8LRKL30dwbL+Vc/jwXSaXn5f7wNEcYJ6uIvj7w6Errp7dwvviTdqAWFqZ36TUL4SdppTRLSJ18h3WetdQBo8sYM/kb46QZu3wbAiazaLTn91FXAb92dh+2Is4JF4P71pzcaHM83MT2uJeopc47jswRYM8d8BDvqWgUlqXVO12C+LlA+kSYrjj+rAZUlPfNG9xg90j405F7C9KqpDCCVW5Rx5tUIEZzko/g1ZiLFz7m86JCyORgaOw7DOqWpVwNppXAy31jaMCzwvCOvcwTPdWXQc0/+8AOvzeRiMJe9I+odU67nv5fgsP4y/YwRwDiV81tbzFkl6/Cq7fv1/dyMMJtsUmc0DTBLLZol6SWAXgZicPaETm7K2XWfdwA3DC61AG/qkBGQU3Pur1bif3fvMrLZp44l7BsmB0Qhjdc774TKbP5Ezv0PjJgTnqzae2mtSOHdaw8A9xk4zS02XdhdToAzqxh4ABTWWdEZUta3H/4dVHcHNUd1WRypSp967JX7d22CATomMi2wMkxH+1BkqBhqEGnUBIVdhBF4huiR0RCrDiaFmkrfIAUQyaPH5nuljkzRmqbeNAawEkCOLT1rDZYbVYbpaOYgJgwJnSE6Ch00PqeET6YE0o0MEArKQHgDIhv46bWFgaKS3m1joZ0HniBywl82Z7xhgPS4C1Q+/Yiikh59SnXSQ9SGnFTU++0uOYSVFOSE2UMao6icpmZyLX+pBZ29unvFB6LcVcQYS7AaQ68obIHGAqTH6NDzaaRBeHQ3uU1/n/zwopI+VH8ctc97cFJRb8oiCZdjEwGq6b93A7N9bZBFmB41HhlN+rCmFGvWiNwmqGK6qqn0WG0w0TmNHpl1jsHGA1IzX11A++21ZeqDScrfFJt3ZJdnXP5I4syHJSyE8/zYf+D9go+T+XSRvfz23L+pOs+0zHd7G91yUT37lls9vsNjnPfm79qQZ0e3SPjTUMXtZGLFHu8T1NqZVs5/MQxvxHB6qFFn+9u7YZ9o4gVx1afbC5DTScixSvOoZM3l6VOpdu+WwTl5r04sY5NcHH5HdZ/6FSZlDaW8s3P97y7NjuZJrJQu9R6oNENVLa57orNb3VwCAlqly7CEb2/V415k+l7QQcnV7m1R5HXe/LFeIt+xQiTuYpe8xFo7ubzwL6sl6mxs09dtc/o53xP3bBPTPJvNRtTsC5thHSX+BIii7EoWl8KmX8jQhShifExKk1ELTHYon6PodgdOF3m4rc668FR1YelaOZC1wFasLo5Ey82vuruPh5ap5y2TAFEpO/S9LoR/D+tlGueJ0NpjG8Bf/wlOET9FETmSrjOLyQkx8+qHgZiiSekTk3E05TUcUwZ9ynetAnwDcl/B5wn7uO+7OCW+RVdp6/VLizAnKTJR8Nggi0NpbaUCQVC84c1RqWDIyHAEQNjIaNk8iOQT+46NFFSnY0gaJH/ePIzM5Qy0rzlmNffBB2ky0m5rBoLWh3m63Atpav9mie5bxyJtyGJEtC78ErNmc1YTA2ld/pkfzclQZFS5L2Xeq27urxlpb272xCcHzUoWprGLjso7680foG72R03V4EvuyQMavYxIEQNCm3gvoV8fQ55d9vLwPTZl7T/zsz/e/3pzBUwyHja//8qwh1axxO98hGgrzCmzb+Vx3GuTCVbFXihIPuGglL60uecBeT+vLUH4oMQk1XwYOawx8ijEYG+NOmxLzspZt6piMvoYX0xdhwBHL+GYWSuXabFa+qbPQJg0nzUUM8+H7raV6cjFDIxLvubW1PCUXAVmduPkJh0bHywazG7J4HWlosE+DxSNaY0SDokOkLOx+KLR7IbG8ci10c2iwewO8MgaODfMVxHzWHJiZqK5XGz4pJjJ1OYZxeR1GlJgdL5A5GbNiRjPSqpZSbMVzGN0m3Eu4q6CIaklnxQ0ZslrqWxW1TCvn0vZCviUZUuSclFLQjdkJlKxauKkT6z5zKxy+jJMCVRtMKDqfq4ZCEkIaVQdMpi8Gei3ygF0OL5GN0ScBjM2bYrKsGqHmjT1tclY85K00TdbGJUyQnctUn3s7QlQbHJRmeiuwm7p2cbMoN5DDS07EhAwIQkLhNomoe6zCzoeYrlEFzCpewL95TibuLHNnpKgvFwSs4UzbiReeCgn1FT8h/8UFHSJVmrE7+agk0WZ/t2+Y5cV+nq5J0xl3KBPi8HbCCJFvF1mJFaz0r6qx5If+EGoVUQCgxYRVrusj5KJaLET2InUPOiUYOcMVwfdR07UEiooL8ZwQz5idaun+hYXsuN9lhz9LkLlKlVOXabCvcCcCZig5sNIHhBNI3AS+fo6dySWof9d+kWMgWL4ClD2MNw8Rqr7udn7QSJX8D6dY2zuNYnaO2841LufTn7u7I1NZRks3w1g6GtpUkbF7iSFIynUuMqoCg1p+PWyo9JQbD/0ijQ+snc7pBCtV9jIEBZjliFO/o+6F+UGBkGCOI+fkczEsyr1yapZ1gMKQctk8WFGQes9YL7pp8xstWykZj4E2almUxRsiGaxYMbckhl6IDvWKTTqxH0Fl9yD+L1qbrRa9bo493Y2jzgL0L66K2ibniYSWIU9MEuBEb7FQueDubYzDKZUAREkXK34WughAtLHA6BUAtvIMKleujVbod4RedC8dOJDi2CbOonii+V6r2t9Gzmree6QCpKoK221WOckGnjbMzDqBktU9Sco/ok3LuBj29Wdqoq1KLsUgx8JC0Ef9jpiSg3pdbHARJo9f9PXYwBkoTx428Qw13s6Fh9ziLygiBmuWIk9mJB7/Z5nuKVuACPuQx7d7iXdTwKd7VA3VCMDjyhDPipTyec4LFQLs/6KRxQNqlkMA/YIY5LkOlrbsl4UfO06Z/T58jJSYi7eA0BI19GHtwy2Sno27H/s+ml9Lom/Xzn+ZA9jAz1fm/FvcEUjKfZ2pZiJAvnxeRx19xl9VD14iQlSIVnGEjAKltugj74vyn+1W1hytW4K8k3SWF1JIPVOSYlmQ3nMZXhGkWcFs+dGurypOR1wXKOPt+bjtD7RbPcSNmIeqds/YJD+VjXzibiI2OLmHSRj19sVEzvrJdOHcGV7gM55bKb6Vxj71F7wRnOdkiwvDTTxeP1dCYO0z1mcSOzvH0o/Fm2TzYzGzoJF5AfC80TkAPnwupTciU5J0YaljozEHj1faiatq+oAVs/JfwxMMZT6IO1ovMPSmOodMxfdpzYYvBqi3qb0cIonCv4wVDZn1TEPSMpC266yKMmsztQUpqy7/MAeGQfJEU6j0Jno9FGu0O0eMqA+ulIdEmIBk4Y3GGLpQs5IaiVN75+h2Yieo55UxQURhdlyuOs3mRS6joEY4w2fOg5icNTLC3vRjZ4RkZNIUpKzpLqMpttZKeaDmo6mPMFF2ajhQbHm5PqLbHRRSSkpTBEJbGBqSB8RYOO2lWc/YRVkCh2bkTnXPxnv/PleO3FEdZQ0Q4sGalptLXIud4nBpiogc9FD2jGFcdmcKSlT/25/ivXifBWtrpdoE4ptXbx7kkJsjayF1C81jIvxFtfVNDqffUMr7VlfExpSrPs4zABBd55Y0A2Qd9SNz9Cqt2ojCpxjk0eveopnKGo56UyotSZbF72GR1LI3tcmap0GtRQELdP9WHOuX+/PfGC+kfUWMNimWguQ2SIThIa0wdcha1ob9SxR/dO0piwXpCdSwxzZyBrqi0KghEhnoHyPqdr9MKL7krhfmY4FNZeHbMY/NqnomArrE6Y8wmftOUDwpMjjtDdH1BvmU9VSx72Gx89A8fyEJ6g/8aEJEdq5Cq03ievUkW5egcBtKRqZ9C2QvjrwzBJrBzUv7by+aNiIrt1tmt+Ie5cVcnYbW/2ZsFZwBoZtsELym2yLpjGObPpGYEibg9OE9dvLrZaPGSGbElKNYSfyXIpMrAe47Ybx6p3rwd0teasiLgja644/rF54X8XWtIVEtcpGDVHFGx/Fe9uPxLzKvCXl71b2LsiR36jMnLkS7vcFHKv+rTLu9UsUlJ3MO1p35G1eQ+z0/ETPG/g9sVGRecWgxcIqapR+OQuuFZ2TyxSKUX/YPZGOV+dV98jheLnP9MJKQfObepdE6paVMC+fCMdNBLuJalhvggOci9IE7MxTr4fXfoNqUNHCYFsH5Mg2Fos1SyFNw0y5MJb4beTtJjiKADYUSZREDhnC3e3k0vifJNSsY2H0qLyRj4lWIWOoydNZofRMZ9geQMa4C6KHok9yBCKDfmlWIoXxkbhUs43c11DyscifmSgEla5lW/o0r+RY9Gy9QVwXK9XsD6zpAZyRcqiBb5b32oo9129yP9+Whp2YT6KbzXK3FIwR67EReOEI//4QGN3QrtkAJVaGX3v8KBSwx1U2xzAbqulRVgPhIcKLA/fNbvtSIqY5O2JNl5MnzeDIiUsVyGtmKYAbiU0Wxwwsfth3HRMLwBmL/gCtuwSju8CPXpjiPBQDLqJjUDNFwG1l8tYgZA/zhxQRv7T8WDg+ViebOz44jm+w9/Gj/xIP/ziBPc8zH+dS93PqMgvw5GsB/KnD7BqbgCMzbIZU4hxL34Y8EHZ4zp4GwM6bcAvznAX8KB5B5+4y4GiueyUMy/34osP/MbRFcSciuBLMNe2gvq61OrFkuSGEJLGNZ1PI1kOSTzL6/CRRjvQ7iAcYiV6UYIYOz4eTkwSOqYp4IJRP+aGRzDj/STVxkBPvzEeZ99AyBqd5ijc4ipH0IXN+pMkXhS3M+bpIFmM6/Q76UdXPEYt1N8Ull+rlNQOtauKbhMUDKWsVusKtELhISkD14MOWeSAydTSIYaIvGI1+3gh0tnMuxsUU34zGfua6QujEt4adMm1DGCuHNAP5yiZSygTLIE1s60Ark5Ea50KvneaSTyZ2GH5akS8j1Xa5ZY1NwEOmUtvhWbJRSXAw3dlrPGCg6QgKJlwRCMhP1DjwWxS7aZSe6pPCWp57xiUx8WcFxOxiOWBzwOz6KdPmwqLquFdmtenFXNJTrIpz20gJyycIxTjaTfTjMABmu0kXVYyuXSebV1Ja3WMdUEU1ilQSRlTyMcKCj/fr28wR6SkzNohAXU0v8BimkBgi6R6HqaM+A4/RHE56A0nGPmvAQa2pUxX9eVOOD50umjsxwARxcUKiHoonhfaEhomuRJazMYGSa7eWoSl94smVbAP1FJymyqBXQQ1gDww+3dJbulkoc6Ww034YhrjWC+Kt0vve1jem6DFf0jwb5PL5x15gxVd2NHmKfsIMHDvEyIayx5hXE4Bl7QH3hYPjwDwVx7uuLe31ERVwqtyxYSIiRtGXto1jBW4PVhRkhRsLsHzdUZhD4lAcHW7vxa3UXNXcx6URsAVSdBb7nCvxey5/rvR6fRU0II9E+7kGo4STqvSBx6dnkk8Ko+XJjLHKiJX5eMDvKYarBE9HdvF9LbpuTSnFMLVJZ8BuFOPNhSjq+Ct9xQBMloKIq1YMwdVSoo7D50WuNo3bgl8UUef2+TEWBZVArP3vqh3h3li436UoihDKsanO12Rk3rxOR7F6Mcb587lY8skLjrnVwL3RyhWXHXRjZ/kyQsRTrE6TE4CMnUdM0zQd9yvlklv88bJlPujlGomv96olyWZXaDvI1X6tEDPGUQ11bcS3lrI7gwgcklEhiGhtZVPf+/ETOi1CHA20MHVRHskhgfSHboH1S6ptQ8yIoiHkuV7ogn8o52UfIAS3NAz/bhU4pihCNG0ZDFNm1gsmmRGS6w7nf16ia+4EUAoKQ94wCGv5uZyFXkS6/0tdmLwOxnGxq14XmDkp5EK4MhzMj6SvnAanzkFFMUgmmtzGp/k9gfNlmfCZOqejvk3ke3EPS2YSu0bQE6pmTTM77TxrcKaiCOgSp1/6k/fM5LRuOV6pPCvZI1emvV6xyLg3E/6o5KhrITaemZAyAExSG0KCC9UUPFa9ueacD0fkSBlzQMqWRcvXzY/vKwySfzamcP4ZfSPhl4aruw790uydVhwhhGs0vKsBIGuGjtbJAZYx8sn5WrMRlZL4+yOxDl/CUi8Hc4WhytWkCVySC1FrM9JktOE9Myh0GdQuLxKVc0R3WaAyoAuFiHYT+k+f/pfYjykQarBH9tEPAT47Bx+/H7OjPvTR3zlC3urWPgGVAUYpMHZpOjMKuFw65ZT6kzasWawanVKmGGFUHJm7L81o0P4ofNDEsZWvadUGOb3n+pk3fsVqO1CtDutx3mCUo+1mdSIkEdVdZ6gA+M/n6o/6pc78YfZPafrLkXejntPr/f41MLyJ5l15ZIfAJFJTZKyQDZ7KgfsqvxAe5LdkxvO+/9ytoKP2QD13rAzRlw5ALkEeFSxRmeKi3OQpIJgT5u7dLD5EyuAmxKLCzFOSo8NR7wbUK3nSvIjgkmq9Yl3nFsc7864QZs+GWf0OIolU5kUVF3cciUhsbKuvuKfJEAyt5l/jXhwnV7071MJjBrmYIOu7vYMlQ6CdNE+SQsWrk0ZlJ9qjrsh5bs2RUid/xQBGJgOXLaHkNMYlM7S3BdR2yfVOnWRjRyEYE/yMXrssV6j78WyYNODabW/zKdUF0vVtcJOmUe7LlUyv1l8H4BUToSls8o3H7jRRE0jVMXXSFOw2q3mMNV+9yN7awsfV2Y0HQMlIYn1rV1cLb8CMSTScg2DjVqQhnbOQCWkCuZhgjA9zOdSqIcwrPqD/Lpow9rmpsZ5354ZM8zRh41Vh8pBBUBvEwdTxCEY5qvdoLKoL658eRjGo4bCz5Xr9kitN1L2z5p+rbYI3tkj+rknwKYLvCMFH90E49BZSvDP7iuvsg1fYB0fPkGRcA1Rvo8HEcglmMYJSbE+yt5QoYHdVPPsn23yKPvj7KKnnFe2XlkrSpnzrTQZJeLTqGbxmk/cCiMRzA+69OLC/5PVSNcdKvOO5wZFB7B2GXt4S+eiQ/bG5SSYSwZDDwQvyDg1N8God34D7dJLda0rQ/z0oX72nnJMw5sJPuzcellze6sY0pirOOo8je9hWLGEBjxMnImgnYgYren9B4aUMugrGVwm7yUxXmMrCPJBg2sVAPJmLgpzUcJinUTnakhFjgI15JNBLMQwSpdB3FXcNRgB3ZVUKQY0D93GA/K2snFIhmBnHS5ug3NwHqYT2/cS6+Zef2lyY7lcW3gT35aBJ0Muf4wjm7hhWu4OwnAsL3DSdRAXP9rM6jh4z5gFHYA7XgAey+7jbx+PcveLyeVxcMHvlOfLukJYt/82Jl1c+qtHAe9D6uLoBXym88GAbMUgjIr0/VNgCqN7Xq29oNJrWxOA6vqDxKPxIXannAlvQmkIUT1vWi5ggHLI6JUmbQpHXiNPIrlMQlFSKAoxZVdUe5UpJpWOblYSqckp3nK0I6whqOuST6Z+USEybo70TRnU4rZx3iXmmokEbsHcVrPVq2JvLRiwS1SPW/ILyDDN+vI58ykNEnjWC1ZwEiZ/H6/Rqi6zN2U8Rg1cRF+V19BsxYVBruSGs6eKBdwyqhxGFspdHFVykU5yFZJBeok6wtKHgyPADk8Dm6Plz2O6Gg62NaCjEAsbjAuMjFPlNea7JvDmUtujmZ7wHaZTC8umaqdisY9wR3Sd2k1gcq7krjFCalkic6SlRl1QnovfY643pNl21412TD00ILQR66XT4rJRnmDFYRiDZaM5EXUt7WWpZmhkNUhyCKueMN/oX9/LwEI61NebA8Jd3+uAxhGemR64EIdtUFhPPvOzcP+uJIZ1waxRjPUT5YXwIiXZxGvNE4kGPT0SkmsNxsZ5orDrEFEREmg053pYNgmbaoZtvlsZiFBtZUhC80GdNAqX3TYuZlauHxx1y9tEhVzOaZ829+aXKMIVXZ3oFp5tGi2aKV55dUXpQzuuw98l5RTOoIbC1SoPVjdyr2Q+CypwryXlfjLAU2iw36KRHl71zoTtxrM3mG8x4ysLSkdulvcPVipyDS3mdaYPutCmDZuTkk3hL7+bs/KWpGXvlKQj5GHqljXUrO1bkIL9zcDsh7StS2JEeSqomfOc875Gr3vW2u03t4zAXKZNQh1zIOhR1rqOICNOkvVPdr7i1m1Cqg0VZ6FGisHz3ziweO3oxn/GxRapfRkmrifSzZ+YgKJX0jshvF5B9Z7NL9Xz4qoC4rLNRmCg2k8WxsylI5B6AVuJaf0PI1P06zjFgQnAmY6DggOMTF8HFDObZE2Q0YRAGWurIckFWq1oWmIeErSzG1UOmdArxWJS3wUdmntlFUpdEzF/cQI/tbwfroLQC8iN7MkSc4Wn+bBi4/6RqcQrlbzUKBPmBLcD9D90UA/E5BNtDACDSnFzQENubcS52oxSYGsmHcFrf4p1r0JqEQ8MMfSUMaL5+kfFHkTz6MTK9Hr82fVptp4h6hvR2FOamC60xfNM113WsfGApH+ay79kX9hE6SVD+Pqf4/9hMBvFnfSb5Jvzwn/WL9d0ATFe+PnuJ1EDiMkvbhLOBLWI3EN0VA8PVs11AB1K/H6ugNtD4yqz54RkoxycA0s7tboHFce3UDx+Q2GoFbJTrJ2xlQzfb4TSlwxYW72iAQCvMsnWaXDCTX1+Sn7RhqrN28vZJ1C7RcKwiN32hQ1LWHGX4Iab8AS4h9YkcK67ZlDL/2UyMkZh47ok7jYjcOmclmagq/qXLAWvO7SnCPg+AwY1P8EVjCequTwDj+2DLODzN98WQleEeY7VqPGcQ7FGh8IWRyG25jHf7WTUvtOrlPWDEsRgZR6b7lKmyeUzCkC/1iRk6jQjlIs00x4Ku8V99SFXY7xEvktw1e8WobTuDms0Q6WqoxONk0eBPNsieX8KzajL+tlcWKprllFIcb4NYTH2dwX0hNB+yHpPkgvfqcbdYzl92W6Z+qknMw6nvcoH008XyKuK54XyIUxY/widGLmEea0OY8PAYPXA0m9f+vo0c/w2eBo0IUIU3w/zqpM/WCyWOuTWeD3TNl6Tpsn7rn9x9R4YzIj3Ii2RB1WOWCaknup/j8eG4Lx50z6cJDDRNy/XSwzw2oM/ZhKj48sWEM3zJMRV6n7tBtsljrn58RVUX03oYqVpi67Mk68DoJYSNTNSY01zzUSfDlVLbR8I0FfZ/DaSkUpwPodSPojuU9koYOd7HZCuV4Lz3CSsczbSeAYAvqXT7YUamIj/waJXxxnp5S4vQNDfxoEXlSurJyf1SAhZpEFbZpe6+Zy9Tv3qYKsOyLw6V8+AHYas2aNE6H/Oi9JE7jpYTiY2OnNjcGmTmpzta/ZYyX/040jeG/Xah5mIwDTPNaECN4UQvpKg+/nNBCmlinA+aFgMJRUMIEpYogewSCIj0UorrJrh/M/v7HLuYGm3SuQxZbx1de0VeNsL8x11vhlr5pYv5pfYnsXEYuIxzzZpT2fWQRnwhdv7ilhFpDmxKOr3oO3hGewBurXN868HEADMJ6VUaL8siBxqBxn5mwGFrVmo+yc43k47M110Pf5B9RlLgvjz2W3X51L/5cJ90etGpYtijoZcS+rH4/U5XDXxoGl22ni2bHfczAXmhYZtNXosRkVKiuognNAlDaLTs1ZQgG3UjZ7un6bN/VDla7Gjbo12PVjja8GjuUTHfxafyDOL4bObm9NR8prNePUQ3cq/YFNdPYJ6PO0xFeALooyMAEyhAdOaXfI1B1xwbOWjA2MUmAMm71q1/Hmu7E0sFUDs4H0YGZW5Lo0bYfx3Z8qvfqtGtlnkR8vLQGzZIzkzx/Xk9p8dgeBqW0X824Awip/vkq7aoA+YTERQgFmV0lNzCEbeAaP4Zff0zff5npjXXvj/qRcmqO/M9eEUFIQ4/VH/nr1DZkwgKsLMktBjMIY2Uu9O53T2k8291bvMIhLU3PYp+2opESnava3bKoBiaGH7UgJtpQscM7rRFOZt7V7ivzKl+qQYZ72cgm7PCef83RtLwV5s5rMhkL+WQ51yFAp6TnZZEk/tzzNlK75q0sqvpCAByjTIhpW8yCZz0ySa6oZ51q/Np2WPubmyifh2dEzNoDUvxV66ql/U5ZreJVJy2P1PIv23RlJMqZ7SeOtNdDFsjcfAbyNN2fgVWvqjWN+6dN97Jz5KYRsnPw2XqkLEsaYHUaDPMAHSse1cyZIGjPLcP4a0v3ug/wyaPbAiYZK41kzlU8cGHvI2q5defXgLrWTqwxE0cbayXcKQ3N2/zH+iDHBn/6CSkZ9qVa4nKz0cpZ8o+WNHoFggG2L/IPWf11qjH8boZUWzZxzXDCv0IXDzWBJPMc6pTGyOXIIjBpHUbJRTgVavzsucr53/Hli+TRj8QZVYoKH/D1MbAAs5Ft95Ard9XGfmYvopjxgIORtyjpKa/J7zUPIXP66L7qykkICMJDdgFb5HkqsXVSolRnwFLly6smaK5uEqNlA/rfPyZCl7q/mGhWgunCiQg8hURj0+U6SEdcEpWYKa80LoG6SE45DvC7qyBxccxZczgSqyEKL6qLwpfiiQX3aW5PWUx1uZiPHs4djJNvh6HRUCQfSIVNd+wzO9Vm08Qy3mCMWZtFB/+2JQtI3ABgzb3ZlNVNCwgXfha/7R9fhhIblk0n1S3nR/Y/L7fXcCAdwfXBj+OBN/3s8zTG9w1/m/O61wUH93cJ/3HuxEJP50rw27rhfPip2CuoX3o194NOyX1Z8/yVRWkI5Ktqy+9ekQ4/zTcAWmt2eIFcIOk2Lf2CnAQG6sCuzZr4u8wkfu1+o1VUaP+xNtskG2a9g75WK0YCmaa1yrG6UmtaIyYJC1MJ6EUxBEiXDQmfJhz7dFnOSy0kD7oSLAW7OJKBGxo3AGxcG0sQ9CWbkzuJDNM5280WdrMkk6/h4mND2EL9F/68jG6MdewMlfn977d7vKfD3nDkWbrsK39yCFP7j0ExRiwSgUT74lPp3lDG5GfHDAaXla3PWndk0ljZxG9WfKXP3sD3tGGpcVR94sCZoIgcg7iNbTe+Sn8OaM/50NErHil7BSjljTpMpWqHuaHergLvPK8PF5WIrrzdDemWb4zw53Q+9/dLH7GXHNLq+ufF6tVlA4l0Z/hECfT0QHt9LKN3UhIdoBax4a+S5z/HVnAJEzDnd2NVzxlIvi0lsKNvSmrtKaBd8cXrlJXHo0xwVcD2J/F8jLp2c4f9zxL2O7qTOr7FOX9qoLda+WsvssFxs77mQCke5YKLjiGDoba/MVQ2jtFpUg61ahUS124X+IDSpByN+JiY6/EWxLsvTakP8M3wWRAKhel4ivwt+cug0YaEvRtfgZJvn8ifV+ZvPW0kXfBb5LyLtZGZIL6ZHD2q9rmnQcXWchjjfpvBE5qSZhoSG3KFj+pSbFBnf2QfhUu9/UQtVrixvntljhhVEP7vQ1qh3/x/Q6Qd/TSUErAwVil1x5cd7l0w4cxjPj0qVJXzK9oyXv1ws88hWt/aElbTq0d17c2WeeWNUB81/tijGphzUPrR+LxSOAD/nV04Q1jd4TU8zMtVRU3qluXgEKwL/BlFnnAlJL4jQwcBbtVDyRz239X7vMn9ouSYsfUofd85rorZ/8v6BCGK01clgAXappzmoab4bn8sFgpSoCJ+LIaTwcbJPgHstIRNxRX8bjT65V8O6FzJ2EFVJ5G+60PNN7okfuXTixj80RyuXSOgtvpi88lQn/Py4YmCMmF46GWBYxlpU/YAc9QRMsPhA3iiU6yyKezRK5DPZTNKpKb1LdA4Qm1kKCwwcT23m9p+Dqo7LxPZc+w90xZujX1EbB7ayrveCx3fEu59WGhRezlcsJokZvemlXd9IkkwR9L8nrWAZYEOnjNcjpGbWfYfHCvnWbrIp1Won4eYDg+qDlqhxlldif5dwfynLGtRSmvj98s2WcLiwKWIu6knXALsiqM9i37OtOt2TKK0FhrB+1fXs7YRTpsjq6N9yItDNHriQDkY/MxGs43g4QYfSTl17yFr+wd2ulhMVugtrhmAkrCzhUjccX6vnarm+2syBvJuJsh1QT6iLzcuskcIg5gRvIW8kkcJfWZkLq2KC7rtirzwVEiL6mKLm+74EHh3Bd2qQhFw9zZzklpHrSiYQOrWrh7wzXn83G6eojuTHadcp/U0MzKyb2Qw1f6S+X/xWLrfarj24LNu3DyhxrGzw6ZmRrXo7ZjWag7THHs+y2NH8+/jfHxQLa1E+hxRhzA6RQJmkNtvMrt1eOiP81RlfpZ357Nj4D5uniDRn4P9cxKu2rF2W9zU6/WyH8Tzk63XPKMWdVVe9dE/B7EzpLQPyIRS39vpzmpAecxdfwCqJVI5w5zong3qP3zPGFDTsjxSC5xUqPykzZEpUWbZYI/OFYolAkTVJ3mYRtyEwegbxG4Pp+KPZxv+IO4tj8FJ3eUEeOHCw0UeFLg8ZTe/U3veCay+q+L2tc5S/ffKAmXryF1Rx+SNyM0YDSQczSiSQpohBIHdJ0kOEnkzkilngoYgsyYW+K4ozWyRyvV+jwAz9vTIlhEL1Yx+b3z23JZ+Skd9qXpcn8p8dp0NdC1l3nsZS+GK3RwyvFd7tIC78ELDFQXIQGMBzyvUJnrY8cBFFLmMAVmP/qhy5cRBZxm6oBo0v/AERH2MoEYWPPmNbLbQljnoASPYm3JMMfn5k0wTzNUJmu53CNyqri2wHTY/AcEqU2xqi33w39gGp/e/XpdS929aZGhXWGVNPrcrPQWteeGQbKf/anlemCM6dB4sM9qEHJ4aFIQLlUq9XXzhyq0L8cerBhMf6LrwUXJ5ke0OVBjK8S1S6TUYsLBZRajTqwmglaUhr/UONvYLkwr4vTDSqHbIBv4byXbn+aroTmowrGgU1ZEEaGbvng9JWLtscSCCifDh4u03deteULDXGmGE63C9dcna6sZGffx8vqEzCy5VDDU2H+ZHlJm7uwNiob9jx0y2HD0BMTOOHnXl5W0c5inj+nPwI25dz+eKPIj73iYt3wnf+eywa/5GSBeb4ieCtNEaASeQ1Saf3LzYQxybtR7OC+eZ+yShj/hd1UxUwlfJ9LVGEl2NxuDRYDjLKeL9JeACI9FSCbDXD8RyXldRID6mkFyY0mPs92rjySf9qjelMnjZV6Jsq3m9BaD4bwCIOPyXep2k6NVtaS2RQC2y00nDTGiy8N54dYvC9wljxYQ+lincZn5IxVkovLoGONjVnZOlrVtfCXI7m3mfWDjl6Ys1OPjwfOZxc84kGoZr4/n7AxmqGMNRnHW9QKmgfkndPL9dDs+Hnh9nAUBxAGPSASLYbxbR9s5TA07UPzeZNe9P262Vu9DtgXCMVSou/3GprYScfptH8mAq4uemEQ5QzhL23AFrk20BlLHzWtTtLdiiF+pGvk6fknfsqbVUULbXrVA+791yQGpkPANqg8mEKw1tVQdlCqUgfghq2XdjsamKIOs6PIhuIRxpn4HTJjgay/TUBSXxpReRfKpyKNzeh+NkFuLUwFIaAp+zE1OS1qaR+vgVrVy80URE1AX6jNP3T7LpNy4gl8dc0cag2Kk3SW/LotHdGtyHuW0O/oxzA4RfEu6ne09Ar4x/t4893FwBqBz+3wKtyZiJZeHTeZZzl0EswoPEQhaFSJ/5ita/uln68H5JxHJjz6Q8tzTbGnNIF+5nBmVMlJb6NnIX72lFJquVGrsKFF3f8kYUjZKnY4IFZZVW0LRdxOYBWzBs8GiEstb16xkkdDcv/G5byJbcym3zbkRvqedrwFnzWieHIa2aGBrl6LzAWCckR4sW4yHkcwCWQDgLR68HRL4OKNMEEiZ9XLbv3dyIXndV0KmxuSUU5u4nw/Y0f/sINd4/F5ydIy2AC6pPRRPamUmK2YKpkApFtUTY6aeosPMSjB50lpN3khE0hzTSvEJl5lkXenNQ+vJUJIYU2DSNrM23VIu/mt1LyhfZMDNgHKEPzWNQ9LIQkeb3OwUBCw48S3/zRvxwa8E37G60LiedFKSIvy0VYr+pd0Yvlhk9ia8G169+HfC5Avo4MIlKqeZTTqyLqnsrcg5golzs0SdMLB/Hz9h4z1yyj3YmtJV9ihPdn4pXY3WvrCFu+RhzXqv+sv9S12DDne8+46ZciDI0kCJTgSBdpQIPkPNRkLCt0JD7TCXcRx5uHtM7bzP7eHDz0b4UDAYRJPozGZcGdJj1l5TGz4kP7diU9pE/TXONzaR0rPTva+hYwznwQaB3jdPj4WivkNIWy9kxEetVnraNDMWHTLUHSApXrdLQED7re5l1G7EtNl7P99GBpznP85SPBgzeKZYf0BOsWj+5RcSfl3hj4sRgikKVdaefK1fIXR7Tl0Y3UHTaI0mUGfAy7H350wEKK83jljYmwAH/WqRuD4aua+LYrymycPScYPTVmTia/udOvhxx76rHwMev3I2XbRHbgACjB8x3dITNZbP/yyIvBHO2y23NjoivuuQblHsKMQGFW0Yde6gwaXzBmMT6G62bQqTCDmj5277CAu+oo+3jplAAx46DDYOZuaJN96nMZzU3w8H0FY/6rObHMh9FS47TL2HvPhvzkLXRWHxdu2Zwszyt/6S87CjPgqyu3+ECAw4hXzIDFIV6//+P1jRssHCNCtXA4rO46ghpl7sJqrUDGI9NWwJ4y/j0hWjG9VZyhvGojjpOL2JynNAJfQ+KvfdVWdgW0cYTdCBvM4b6SAo2652R9Z+wtc3ghEwhtc09hFGrphLlTdEVWQOWzh53YB1wZi/u1DxkBEvbqZrjePRMIwDmUKo18V58C4hdVIzlelU6qfZJkyhCGhMG/H5Q5fCy4bQB/KQZczi8US6WsPoPRjqoCnganSwUK2pEa697wMMJGXN0SsQ38zX/kpnZFyIm17gJwCsThkbSd3XGURwB25VO/vmrMZVeHelriDuQUyhs6EJNqbz1wf7vpZ5nsI7gRC3feA3rHB20JpiJRFLZ4vVM2XnnYexztxV29sX4dAuPPs0/yTghPHavFWx6KPPxzpJpTLG+iDdZBVV3qVU6oMqQ+lbF6T3EKZMLH2rDZvnh/lhNLwsAXrogjKQBmmP44CCB5hmuHISuG/a/Ycm1RZQOrKoB9xbMNNeu2+H+IGh8/zpdG4fELrvDBpYke9yhMpWcKM88oB1WAz7ulFOZW2Q1aZdo1E15W2T1vCYpX8tHcicuQPCCxu8xJVTvYHt6hXlVkbHamdzYnG6kf2JnLXuSYGLB87s0tWenvp2IlKI3HRKIzVX/mqxP+2Y+7ibog+jtKgaG1HdgdRTqzaHyrfNSTKuLGv5/LG+yuPuzSnRsIbK6c+drk7d/qeqYt7+OA/FdL1wHn8NfY5pTz1WE57VI3iXvnZ9hqUEt8V/sXqPqdV5kdHhjfM3lCy79QoYdyfFyGoj5sK/25zJTjcxopHLXjPlF45zC5gxUlKnenNrdfOzucWuXwGmVWfvUuGfDuIWx+bZtcpOkApRL9X1VWXHkY72aCSey7PfSSUWN24NFkZdztJlc6iuy3ORTpopMEmMRjDygPlIIRutR8ZQ4Z9IJhAW7WTHzf1c8aDHH6du1+AzGIBtLmDIK1QD4VNKzNGGlGacE7OLw7/vhkqOSw4hj8DN5x37TMlGIjT4vb47CoJ24btfqS3Ai9dhZE3ju6tqw/0yAGjghS1IK58cN6m/7qXV8MHtdYFfMAAhCvA+v4dXoi2mqlih8OouSlF5dCYEsRohm1zTHs8w4RSI30+GuCOgI+94Ggb+8ijtw7/myeNvqAKsVcnQAA8VaZ6aJjImdNR7IV6SV9mhTaWDd1AAwBEcu3lWG6+lWjp2JgrvsjkCXSZYr3s5jj+/LYsOy+LD6KtFWkAG+9PJ5C6cm8ihWXwMcOXsOUAI4ETDeXFzfuAz+O6qa/qoRGKfCELuON3jUDQZarXTm9lpdTzIDenTIVP7LLvJaIhZvmoIE4XsvUN+PjBkqMNRuJwYS3KsK2hxNWngaQBBPpB4ukZNjixkCpu1jI2VJREoPJxo9BxOaARalDlsTlwIgZDgVtx1E22pqKvM/syolQTLNbl9hvwhEn/+ii6yFi6LsZI9y7NjG5Gu8cdOERnKHGEJE6DamNDtifXew10kMVdmOS2OFfl3YLMxObeeIOqdZTLJf8UtK6Z6/Pf4pUvS8yf52Mcmp3TJTLbpOYkb3YH16W+AuDfwqbaPT8H0gXJ4khmA8QlP04CZdWANgDDAO5Zo+gCi4N/+B/d2/m8c/aUWdwDK8C+temY4+/dD/xyl82PwbdrzNNDg0bbkTDefT8u7zwe5utP206ZDOFxfhO0uAoQB+tqLcdudmr22NjusfnIXVQtl+spiYjpUMlWhDWbOM37prPfMf589/5JpXbjK3ao0ATJHpIFxwIcbB/AyX2U+TVQKds0q87vZBDqpJVHNWcqmHxeY+Oc8Sbia5Et+KCyKX85oDM96nuQYZX5a6zduKtYAdCqNkQk7irHfhu3OlvIVX2CxlHNY9NAmdK8MUh/NhSLsI03e3Xn5H8CcxphqAqfTtBmQIkadXzoFEwBj/nXgt79oWVHLrCBOTOu/3Ll2/xTUoToDXEQtkSoqIip64r4zA67pVa9lJnwaKgZfkADCcx9usfGXX04nNixk7o3fETgMO49OmOkuIGgZwP+2+uokHImPYHCX/KqsmjgO+p84G0qzqHrBoD7+p0w5meVqPo8eo3jCWz2sQjjPovoRuV+c9kdKF6fl/7PiczhFh0XXHqFm7hx24kjm0XgH+C6mg8gDTT7LuTUWrPYRCPZpSFPgdWtVp4W1JWj5tHG03tS6pGzUMcMXV1M3aYd5c340ALQi6GHPw3YNDTXeWuC4DfVDdiakj7XjjJIGse8KCVFnUFKeoC8GcXq3bsAB0LcqNNwUjvAdF+7IxzR/K+Tvz/n/E0IR3EDdAaNs+Go8p0v6cYXs5SV6YjNPxgFuzxuTc/PMIk5HodN8yiHONpFuIc6OlIArHoZnsUwu14j50wmnnG5bwziDdi+Ku+rrobcObBzgA8QyXnNQwJ0tLIG2NwktQuuNdsBJ3BhwVAwwcbIjN27hD5mMWK0v24Z+s59bkjiy4vQ65RtBlugmZq5ycPjeztZ5wV7FjmDjV0HsElfkK1hnd4+arcuUbAGHYyy6uNLmgZNnM9IeHXIzayqmcsPCRsQRbCFcByMxYyKCsZxo99jXdojgWE1JYQsCxIQf+2d7Nxjknvp3gjSElIBruW4QvEUBiqLK+OPKSDS93jKZkj+FShNBBDi80QoYBv7DslN6jqCjWf0qx8Wo9MZp51ec1BM+WHy6mjZNQWErvsreNlWWq1pJVZljlEJIzjOCcCooxZpoaKB7cjEnXOt62hCgX7C6gBQYWDmjqpTZ+7LjuasZivEVlHLWYemXNjRJPp6SlM4P+/4zKbqkdp1i00ilIVQq7IiZUDE/F0rOizg0UxiC1xujOKqs+sOTlQx3LJyvwF6xUYaZuqZ3SODXQnt0mQNquxXCqO2RuFDiLQL0TOmtWsfJHMAwrb8rc8hnXZGmT/zdAHb0myJnBTaHeYOUQS80SjcJQOsBqppofveLBsBue5DkmFqtFpOSrptofCDLIW3CrXsxMCjwVVazGe77NWab2HoV/SYyEUaBU8lGrGcQuQDPvn4rGd04cXreTATCTO2AAUhTXbR1Gtu4vTH5i0mj5OZAUjGVhNcdFG/BvQpWjN+n6iLym5++EFnLT15XB1ws2BgPZxgHND7cqbJbZCrzXRa1BcduwyyrbjNDCCrNoAvIDj4E4WAmp8KQ1kX79JCKhUMmSmBHhO4Q7C1FKF+2XiNNxvCXc5c8hDbucvAHyyAZxc0y3PSlgE8q8WDw8sVOO53phtNkB+iEeoHZq43g7c2t74M+wnB3BmCspx2C4RFW4mHYVCnrEwrdAq28bgBw3FTxUwv1VOV/VFSw7/JUpdWKacIFqffrvwSoD71A8sNZmglQnWqpJTOgkw29vbGeTg49fgk+/b51poRs6lybLO/CISkwzxb2NLOOk//F+qcT2aRp4zXRAnrn4eNxDLl0T8FxXmNBaZlq4FmbKWC460rESrvbXoT7nkmtShIgy9Iy2M6pTO/jgg6wEhoT3Aw/kdAwUjoeET/cSCRADQt/MDCVXDsOnLXaXc4RjfHvAKrhHmoiR4J9HqleuhKtxGolkvxfcxI6gbEweWwhOatLTNian8faXBtrc22srdMA8eqcmQE1Xuh64/TLb6xp7TtuvmJI4irk7RD1zjBPK50qi2WWJSeR2FFdEteQsPJCvTG96jI1jjXqg+C/OdOdUXKzmCqtPufT3PmSRSuWyp3OpbqbO7y7EYkL1ur/AH1Ss8A/qZkfn9SdgI+/tz8Wo71Bw/Cot8u5Hki6Hp1s7GJjVMwZrJ6IcYo1krBs1xomMIt27cBiJYPtVuE4Xto9qIMIb3rIqn6xQPwlkDXvnwL3iEnw5k15rp8/7mqYOBauYjDNFj1gxvJoAZ+JaQNY1jjduGP+enxg+LspebiU8Q5+4i/OaEbf42n5811mYXnw8Rd+cYEEYosBATfLUcQNfu/r+3qYcGEsrwX82v0FdHlbRj/NB6pD86ZNYn5Sd06rcAsNBuTHxkK37i9RfGrs8xjAc5JimxpYyMTW1kOJmd0MmI48AdiriI0kVwmYjjyX5WeyHbE7XGkzSzHVwLsz6FkvHe2svaNQvYFhgmo3MA7LNLPY7D2dlja0lXLQ2puP+Wd5IjoA9wZwco4lmu6AvNnuMAnqRuTdj1MUHk9dwpciSmQ4+VqYHs8g7KLdjbUyDidbKyrRkPhbRR28x8kGzz3DynIJpzdpzyajeKHPusz3NgUgXIezL2MW4GWOvezH71h9jMt6sFXOpQloNMUJJjqo95+ZCrK44/YehMxRx4axIaUCxuuoYGVIo4wjSajQxY6A2ekBkSWZZjK6yKtjcH6+uA9vBq19jGykvrnSPWOUnWznoc+k+Sf2FDY6aEGlCeN1GrOD9Zw5+mznXdwIP5rXDlxEqS2l6VbOZgsvc1zi/dgAtrIHI8V3u9macIJVXpJGZcwupoblZETceHFar+Bpmw1vqlrK2zVabYorVBsgnJlhIKFy39A8mbWkOiblR7shYcRCZqX5rZYJ+LxvA/wQ4gFZH+cJoO9XaW8B3YoM1MG8nWjwK3zFvgMZRouTyiQvoAPLTwGgHNpNQpqmeq/xU3j7ircwjLA00jTixDibyTzyBr31duBUNpfNQbvXUT9SNQxI2tFEuvH3uU1PNTzingd1ZxiWZvW5zxlDy54wPutVuIZT5AoDYR3EobV8GUO10RcckSkm0i3dQ5IWs+08HRspZdXZuvHKOujiPIJg5uwDGW99LCexzUZrBJ6FGryBHqfJAxeId78ft7EwzC0LMjPVItfHknh/A9O6s2ShuCR02nhQOxrGDJJdn3LtLckBYySeC1nhaG6jtGAkB8gn+AJomFyZSpkecwEtXa5BH7NHNNYO8gjK21fidi3g+c1LTsoLgrwHnA/JYUw3FlevjGQ9Q18u7hssj6GA8XJ18/Jv6JKIDbyB5yN+i+DluFRk/v0VCOYLi1dRv6h+hdoph6htLHDWTPdqOy9afCqmOvVbcpZinbk+EcNU+DzFsLPzKS8qfLnvVhl+J0nUmFP409f4DkVrakb6WW0hl2IKdqUW3DI1rV7CxskQvcS9As27YGmFqujeYZ6SD0D5yAENkhYK0sRDmq8MLh+fvezy1S7vLoWPCx9cIsGCwXBg35yX2Or2pKSLXty4V1bF8xvKXYx3+ZpAaa7nBl7MmJ+Pa3PtcU776dYe9XpCvX/hWbsLmVdysn6qJ3ySkpy8fGQfpne+XdDwtP89cfSW/3GtYhveq4/plSyY3oQVvGfyis/nmKM2GoOUREHSFYEk+vDGqkwV4b2Z+61i5rott/PP3Zy/nPB2LRSBmBx/vLxWFfHTADXxJnBy/I3FUst+WrWfmOBmHe023s2pBNJtOIoDqYDBJqocea+ddWC/j4IaUxwAEWZ0Bq0C6W/NUxMuXAAAHnUrJyIrOiERfg5d8NyHVsOmLQhveOuiax5czOm4WaatdqrOY2i5DtDpENtTHq5Lr5fHmleoYRqeuBKF0sLuUpcWDPcD2ttfR+BF/t2aESvHHNRHOwi0fmjuN47toUUc5SD4CYlqOiJVix1hpSqthZFRhVmU1EJ3rEjcWqnq94sdk9NpzPjXs6+9h3xsaGTkGf2Ud3dM0psxcOTVNdrOh5+oigMk6avyALk9pZoF4pz1kzAU87azp19OW814OzGzMf9KI5u0PL3HiJsh8uybaJXpeMZUr54KQ55x3HgIo2/wUwY1A2fnrxxtfxQvs93xBsLJGRgY5Hq2EJVko85iv0X59ucDQY7CdZzYeoqM9u87X5pgGWa42BpvKOcJgGSd3AlrJDR0bGH4KjH2ScNIl3gIMGRjo0V8/2DNHMSKvGg5TlZHJUU7g7evSWbq4vRNUpPblZuTJhRJQ+iViEwB7Qr+xiNPUVErOVH3aRzhrNoWxUEi+mEkK6aDW0uHY2KGVvLs+P+n7+Wk3pZreRXlL3Dmfbys46wPknCk6i5UQsy+1x8Xy5piltk8OdmxERA0aArmH2k+z+Fhe9SwMLZFcTh0N6WTPP96ltFcjgqnR1Yql8KgHuG+Nv6xMhw4narBuoBCk+GoKePoahrb+WjtY/QjSKxOB3Necgh5YBdWumTgX9MrKbWrh7h+DNtvlAsRA75RrNmMDOTGCepCU7Eclwwbz/V5rsFMxdZR/Ki4KNOE+jGp6OqatEa6ScOMqhtjBYHMK8P1Bid85blD56vSaWqYbhh/hKrdUpWlZGciUytKJ4C9a0f1SpKppqRvpzZox/2KElXlZ/jKU66uRVWeju9vB1+Zmp9LdnV57apRyVI1LUk/dXapr7SOur6urcsjSVd29bh9pp9KRWv60ozboQ5GRGWnVNCltOfW1MozpubDePqnfduH88kHPtxX2zXKR0kyhwceFdpL3JwcXQp7+MycX8KjV+DM2X3K4nv9pl4cNoHKFj8R16ItKt/ELe4lHz+xSVDrxbP3S5+K3oRCyQovZiK3ye1LXMwIr0oex3pUGePaWVsGsCzeups2ttSAB6vJGdorKIyTfHVQL9z42Wqey2uh1jrceqVzT8GGs5QDV24tINCMhOy9UN07ws2MqzrDkrW3sHOlcPITmiCn1odGHAUc+13aN90jdNSPqoGfewVcVJ2ZBpCz41QZMbiuPwa/EFivUdbEt33Bo0E1ogES+UDPR5JWuXdex8KlCQTWFurGVtrQLJawiyH3RhYWVal2Y70+cGQwyTejI07f1VZoT65mr4rlbCdHFM/HfUhXqP9gqOifTIMPfAsxGSb0AeMNrWaOmvDJGAKSC1KTElVoD4OFohwHbICQCAlMv1qZelHydDEnX3qi0gpvQpfdGqA+JXfxN/3ClZtXd1kvNvUGiG56HDwzx9XCNKFzi+dJsIoxtv98iC7bbUuL+ch+qV8JBObgYlG/bqd/lxECY5zIzUR0jvd9ucx54bf1sYSwG85kgY/OcW6umWVnEONpDNOQrICjiCZYr7gumxCSb3manUmEnoTaWLq9QXJFSVWTuJ9OHLmaddXfkE5ZehL6uwS2JSAlAgBPrv+vPO39nqESHk9k/yHLSoTaS5W2VJITiIyp+mDCs4+YqVoCat2sXSaGQZVhBw0PstspfkjkpfURsWD1kETZyp36tzJuHWoDhEQMCygxQPkzzbyG5lMxmTuHcxvphWzyAnEQKBxTLF2kZUipYRl30AO5L5jOE/MDKu7JgtEAQ+Av0QKtdA5jIAcrkoRSWAmEll2Tg1VYFuHkHospzIIW0W6ePZ0kOUXo6UWrbV9NGjiz/erb4exa0cuZPZmqXZBzIQ3zP7C8Z+vp0TWussG/6KEP5MPdgFpUxbEWsb/DkRcCJFUTJGoL9jEOI7umy5c7X4uZJ74IkNViY88BflvQE7KxVun/1ZOa07SvKqdqEc7pt3NL0lcBVI3io8+e9IbIZaDFqeLJzjighpP8N5MASyUav0WgEPdYk3EwU3JmTYeWs3KhWTCy1yJDoCH8orxyQZLdVv6pfyYhb7KvYtm7wA2YhEZFuCG9sj8p9137/jfUHVrrCCPDg93WIKca4zwkXNBlBMM1ki6bZWKuJjULsaLfqcYNJuW4YDk4fhyeSID+U6EeBLn93lQQmTrt+CQpxSvk5j2JhFpMsQMBxs1YuFvwsMCVZQqQDpAgIjtwweXpSDKaQoz8fYyjD/J8oacl25QdZtBk3xcBEhULdk6ZYkVuOqebuapbctY7Sr8YxN86r5q4fvCX4m0d1/f0zTjTMhqwsTIHlCKBoSo51yLNla+tDjmOnzI5FqfBkNllJYfc0hrlAMOVlgfMU1geKvqZ/j1D08g7KV+BDvYCUgHolPy3CWm+NNcIkGVop+D68WBW+fpufQKup+gimS6nCVOLs1UaqWrYmUvS1XHUUcp0MfWxSVnukGx97GdsntIwcP/GnAgzTivsWY7SP6OPDdfLpQjplyruRdjlsnpUeabWYI3KfMLDbDlVieUjPmkFtMr7rB4mV7YQflXxbQUoPdQYtnP330uVYISjBgOXpEurFZFbIq0jcC+RSs+mz7GvI0FgbXMfEQGnRxg2OBUjWi1G3G19fNul88KKjG4anYPUnl3d7mXbwb/u2VI/s3n5/efAE8g9Xef/XzVuK7UcfEqgZMoCZDWI3HBY306S1VBkgwREoE4mfgL7k3jRgKLXkPL/Khtp6NJhD2cdiBeLTL4MeDmFwD1KtHIIVZKLKG3spoiJlw7MVclkkroOkVy8CMWKhOlyRaoBJWkKQSe/3Qtb2U2URCaMfNHSp5ROPLlM1dCZbAgP8A6Ze784YmjpvGkSsIHowo54CD7rNgClgSTisMH81gTsTDJdbcieQXyGt2ktQTr8CcXkNl0cJH6oRCgYOnKAdFjRaBnGyKYllSMIH6ygUSIYeA9w5sNZVugQkagxMN+0CTZj7C9RlrTmYmD1wlU2GV+dsrK1J/+pCtyPQXIAPorgcP5dN+GK6IV/vIRlooWLUnk2UwCq4j4BTwhNl0T8Fv8eIdYbqYBqVW5yOWm8SNk9+3cF4BRYmDgr8SwJ0c8ST1VWtqq8dRWnNy9QoLOCssnR1PZS/G/9eRZ2GArBrqBqxEf5Iw6FPisgVHG3ji7YArb8qwWLeL4FHKTe7ViyUhF/TBftcl2cIttWRHqr3DAVMW0rEDOxvihh4G+TWBaj21dD6CKLXX+KeLYQRetjYYn7i0JXecIjuvEOLruBo1fpos8wNy+H1+pXxitl0FTZdn4S7uSjTz0kgGcTqX909+LhPd0eWa4qaaUirZn5dlbqwl+WcXuPt9Qbk2sbF7g389BzsmlDRCcj775eoAQWjfnA7Guh6latRmaOnok6tCGLy4ZsdeWNENjhTpI8TPE0ObZGhxeiqfEozXJQIMTd0eml3YKaCdjqDTrfXgDt+BfwzlqULSvKllrlGi/rKbtgg/34LlVLyZlVcrKhx+4mqtDQZbgYN8xDBow30WzwZv5DJ+PlzQ42rZjhNIRrG7lu0+S7vTnkAMeqDtYD7Fgl7eyA1KHl+LyJWPQsDx4IcOR2tYeg4m8ZNIpx2qHDOuIS6KmvVBwWvZJdDBBMqFQZ73VRSX/jw7CTVqG0DB4/jofXr7FseK7bCigOMIlCQ/xSAoaHPuZHKauqoyqedlp06fY0zQGHFOHdr4FtEVZAyjwwInE3KIbL2LGPi4Z6CLEr/61rSVZWKgtHmRcG4c5SwfgEOfwhZTXCRGyAk7F+0SSuBz4zCy6632Au5vHgEKUfMrL83C22bUl3iT5XuXzDzZXu7X18D8q+W7IHlrKDuIwcTpvwVcwh6HYslWBVFILh48/JjV1f9igkrn800tnslGIjSFFedZ4uH4gzJwla7/BIKj5fpgBwEk0aPfVUJrbLOrc16B5TE29upv3JblszntzNha18CCXII2ySyfTTSxhTHYnUPKLHBhxQ6npsLEZHPjSPJNZ52Y1CfnfOJFc6arXE5tA4t5Ljph9sTKUfEvx72oLKz8l2M4z9pn3HDPgwfPSfzi28sH//ag5Yzcl6ZMohwzkMj4DNnDD78eTYnduk73Anm/PJgR94dYP2bdeVI89GXGaePEqJxikYWxtTbIZkUTDVFklyFkWiIOaztM1LN5s0wxe2oUhhX2DHSzYMOHKdX+oXqYzfs+nCHdQm1va7x+LGb7YXylnCRiL0xmsN8xBxzGy1thGJZ6MlNy08vPyzRdYfjhMjpbmkPT7WCAMJf0q8vvP45uHQXw5OxObRMBsdxb8WAPxm6/nZ4/fdc8lTS4FSA+vvgs2OH9q1E9h3jhc/L0s5HuB10UrIOU+uuXZ4c1vPBAlPN71bYo17dR493Y+oP4k1I4LqsiAHRrXwkp6uHH4i3HreYG7PO3gFIF/LmK0O6H18/ZNPP6C7b81HnHPBPdW6N1bxNq+J6xVPL/tghAh9o8dDnftjFMNHP/6r5tVAnR5H94AJ+Ow+5zmbi/HUhPyv9nblfI4D6lVv69aqmhE1RskbVz5OBYJ2HQ8ahpCREA0egRTPvm9dz3XI97uXvEnJnFIM3FR0+syfu8lIbu7y27Vp4zKaZKaIj++ha6Gk4/D9OHZVn2AiTW+q7TMveaR6hTsEUbda5IBPB8gSjwzHKUU3AZOU1IY10BsCLl2uPczDCJj0yL4YPdIoZKsTrFLpE9zRZHj906Nh4swfHPNH0ZEIvXFcjb+3wjSZ0N8p+1H78zUyTemmBvl2toi3Xn/COdQQYr+fhkQPJ3OWaWLtdODO7hOP1xMKF6Xlbo8c2oICTdb9IyQ/Ax1aDkVZBjYdjMXGJvYym+MJxsMeTiLZNHdqY9/GUWF1i3g7yyQSSLzAHMZe5kst8V5cc+D93mmjyVprTizr4Y4Tix1KGarWeZBdz/JnCoMmgUEYuJzFhFAwymOSUicrQUZYHF1CvAH4g9Y8/Id9522RQTOrbVUv+wHiWg3BLuqsmQxIdSJd9XyCBATaOG7ZLAiXArKiA7UEibJbYznbtRs3xs08597A2u4V9vL7n4KUodH9jEx9EnsPtyJ2O/HhRYglYutWk7p1qQC+b2j8ldVwlPm3I98+mFMWNR44NJh8ZKiL9ouMJmwl4fOOSOI0hdBQkdbCVzIdiuI0IHmernhjcLINMzmOnqEjPdHOxa0izz7jwSUWq4fdhG1I8YAPjIkhYhmS6AE0NxwZOtTeNZIbdwVc/T8hSkQGvZ7wbkN8jFyFbNGAfDWJvLolCtPFqX3zvXYZNjm58PSCPd7iCYxpd3TdrfTEi9Y5dz0HOuHa0hH5VI5DZgJgZS8USpLJo9XJN9/ipdS4jUJEWsH8OeuUDbjHRN4Dnb0gdA7kD4QwpxvjK5/JxM0gpI9Xr3oyHldrOzCmT4I1jToLe/8SzyGz49cwfa2ZDq8pIrh4bAaJcVNLub3JmzY1JJsnKC9SuaeQsqGTVy87UeJcjHK/bsJBJ1lCY5DIKNz6Y06Unjiun6LTdtWSd8ZnsDXG0WnlSl+587FTmVrnckfE5vPFzlgg1KseScklJUZ9BXgel/+ez04AguQ35nt8bjJ2iuXJEFbO+kbsA4UqbmdX5o3YAuh45Ez+gDH3flMnf0VjNAXQDyPsNtV11JWXAtUjOeyx0THx1QVCGRj8vpQHuHp3L6UbNmMXpVqWihWuhmOhkhTZzpoY1HR2tz2e+rYffDUdSdvlSf4y/lwZYQxHn9OKf5QN/20nlMAahwav5tcN63LyC2uN+e4RuY+4WEWTNZUvYdHtZpGOZX+Uvgvd0Opsh0U8KIdEhPlJpb8qoe86inSBO5zSOqLu1Sz60KJQuTW914DDqHGoqI7uBbFUywLGNymOqqFaGY8DrN83Yfe8p1mzioFCHTY+acG0q0pbT7KmBX2yybw+os0n024l4jc7TUh1t3Pveu0ewIRvoU7qyafaTjIj56iHj6eD2LbB6N/YdmuMbAqiMvvxWvD2SKc+vJP8HSQNbN8I6Oe+Wtj0mPZIDl1OPb71bl62Oeag0jvRodbOCtTmBfplAIv0bMbOQ2n1oWRXuaIE6cY7CndZi8kkNO3M4RWfm1BtC29B0PWhMDUpJON4atjU2eWhKsOUWEU6go+9l+uSQ5D0sLI/UrZhItLkWQrfamaMxhKSZWKz5TUL+EyeEFT4Mi7c6jCIM51FGb+SYBO+/GVewPeo5AnAxXuP7adGgrwP2RUp4RiklOhdCDkktzTGUhJ00+lVCPGcMjK2hpmj82L01+qB/DobaGTvpTCWzSj7maWTCND+hIElwLTNz9pBrp1S7xGIv85Tg8s0E8kzotC/WTKnAlrpwCOyUpf7hFZvVaXtLMmFQHVPPka0PiZF1VRGZupcOuTmgiS3RTGHipAecgWCZZSmT7hKgPWL0KOX10sWbJGE1Uu0b+TRww4Kuryq7qa6EIxS5f6gxo55WCzFjGDtFVCDG8awq3XHl9Ohzcdr5cCYO8dXu/BinVGKCau3Hedc+QGqubOnqM+Fy5PU+luqL1KvlWA66XOeBYZ6xzuenD1hrWgyVaoA0/W+BhQCxkiTYOglIyH2BpqwQytPO5t7ed0ndyfTrlRDFvvn3DcWgQtRho97x5jyq7uwOiqhDMSGUmDD857bzN2M06wc5saCMjNPZue1nkQ3x3ZCeggsV/HQ/aGL3ufB+9Dqff9XdGW6a4ck/5yr8g36Wvtl3pJP4GyvjFvuYwHNnXI/9OH3wXdypdIKjlT85MZtf2ETgKkmJfCBXRQfKULUDlfOSg5Szd3lyrDUFJ2H4DBTDVPNIcdssFjYNPc6WxLmOGRlHiUtDN1h1wbSexDiwdJOna3kkfs/XNP1aLwDoJeDgAWMh41e8KkuMmhurfdXZ1Nz9clWKOSGSgfBtFwlK4JoMR2NHCw4Nd7qlP8oJuGulwdZH1Zd9vQoef8WxwQsi9vcZrVIW3rHw9pf30BOt0B00yBgG178fyEFJl4bRvTktUUUyVsx91AusdJh8VBpTnbyv8qEXT3EM667at2158odyJTeODWjF2LKu8fuwIHZ7PMwlr3P7IwoO3/g4/Pp1h0wlHps+glyh9Johfusskaxt++xSRvV1oicVlwsHexYahYZmCCJ1NQqxwuy7iB9lhGCyGdSETUn7Pyxnq/wk1B3Tv9ZMvAtFbsca+UKxA05SpAW5xNrjUlhl1PNhllAvPUkFbPKvDiDFffBpTQGJkAd/cM3cmuHddJFGWDU7ag5ruNtyT19/2OR85eVZlwAtOdxL9fWtc+6dttaaqmF9qac6AxfId1Wl8iykfQQzcdeDasjuYZRRAi/X1C8YnwV5LDLtYLS8uUb/oKPgfJTicbzXcRS6DqZfrT4FFHvLK1lAdnKmsF5SzddGrwIEpq4w+lnog8PLZ57hVdZ/iBMxvVd/q4nO/2bGPW1KSNnB9B8l7lJH+oA/Fd8Fj4GeCoPKwceW6U8+t6badWluHONPo+cE9/qkIKPd+//I2CyHy9fGBc/fguXEGI4vXQW0grdXZdCHSx2hf7tkd0SiZUmWUJNbdhKkUJKJz7HVzk1E4nQDSvEY3Cdv8YNWEyxtKD3PA/uarQPpzy7E838nie3PLKzSx6WcfT2xjpdWHtrt4hXqRG11FYPJcpJl+NZWkWTTv6IMmsNPBEYq2dUnocsuuto4vOnFyErTSEn4S293oMg0n7vBVCbyIqp+kyF5YtQDYR0Ae9liUrjbXht3P7KIkaolwB6/jtd/xw2nn0QWYi5BL9j0c79nB1IMdWvUUIkRbZt2Oeci7xQO1gRW2fPQi0hrL5qnKzfnWh/yiomtpVGg72lrCrn5QOSa+QOuF7TGm5tG8jMSZrmSc513fx/UIdo0lL7s7DEbSrGGtP0MmZl3y7pIA1QxIAxZvu90/cH9j9dc2o7Acd/1kNsRD37MToOtr0vzTAnXS6uZangi8gVwpjydkPQAi5msU/WJ6lX06QFn2FHx2qglcxw4ey5JU6IKXK7Og2R/YZzYoVJJ7nzjAxM1YFOdc//hPJ2UMnw/5tOPn3E15TWl8orW/lO7dhJM28/EcHNXGObP02Hr4xI/TZrbZOSKPJ0iZ6OToa7BFIa6e1PpkGVJRV87KRZBZmD5CKR8xdYGcH3/hfIMpomE1lcOaAAvG93gcERSKrXGHvQGSpMl1gp7dwP8F4gMJL+q005TlylvM26vCC61XE413/UIuOcIP+vmp/F7W0XP+OFDRPF8z/338OVtTot/e+S4V+qMcKq7HrxEe7qeZptsWy8hT6UYucun9VGZkakSw6ZrRmeh+cBw76p+CEa+VQ89dbxEOP4gQzMaJ8WT6qsUnd3q1fREeDg30es7AerZ/oYcdgzhlpZ0DTjUlkhqD/oqemczQ81UXxD8dCGY2hAVeH+0NP48XYMO8doZrH9glVMOwXLZ7R5WB5BKikPgcLw8MxHcw7zZwhE3fE58JCt+3kZKJJnEdaxFLuvAtTk7g+YJJ4oWvf321RQcmVtNyb+d86XJqZqNoU8v1qxeOwBoE7Z0HydZw/rxUQGs+WAXsbmlGbmMJ57dHz7daeqKiHDQYYUdTzF9fEYC9gygXSUgc2bfxIUOBImGtFWB59ALM7YCodD5QtSpOOaqZ1WROmYTLe8OhbwqQ8bYK6cymjgMtPi3t7bINgWlvgixpugzp1DgEaDXUGkDwDXA3tFC6/kxnSRict4pGz9GXtEiAlmqxgkbzQ/otLbsRpMHxHUjkcAteWgrz/zLBFECzGNyq8o29kIf5akCAcjzOuR3QBuJ5WFUCTnzHA5wCloYz2DdztLpSXQ5RABcorvH1uEXCMngUS8IjbCajYpa7E3mvQRXxLL6IWfcp3+4IYWD/D4KXhKFsRPm2qtfbbgNZepRIa8gvOuo6VK8f15u2T+1yuDx2yB3/NUstwwblVqSF3ZaOjpyN/3Li6bICisZiRikcejAm+kVHx+OjPwgWfVSfUmJgeqYnPSK8J7E0Dlg2oGP04oMVlYu1a2XFYx9e2j3GZ0Df69D3bzG63qvbluuESo9s8+RGCiF1gi4+6W6YVV+7NwMVMWHBTJzCKCnjeXmKRQFJh78R5vxF4uEc1s3S5rW0U19YMLSDeNzxyqkucxyWem9PQSQQUkKNemRkpqjXZei3b/7SkfKD9CFjq2zG2287IdWH/ZiJHn8SaSvyXRLSQFCe/G7D8yByh7RFPUuhR/a+Lzi8BQq6g1fjRdGPk/dVpalFZ0Rwr/jyxJpB6lWG8rufTa/C54AN/z4/rC/ULSR6+jN0A6Mx79ppGPnrqt2/SKbv5fucQ5OItj9tbGLOH1ke06C94aUb5odsWBssEFfz8SmTyaertBDzDV2w6rK2xVGSHmd8JXXeMERSuAsdq5Dp2f68PGnj/9AVoOUCCTuuqTEJO9p5ZYjtEDuMNXuMTCkvPOKQlI4bMXPimvz61Qr93h5OxhXzIPv8bL7tLXwRNMR5XcvMY/53yW1xVVsRlIiVN5dVkxTh9Greh831woHm6sEA86OQukjImIFzERGIfhrfCyngpGqJ8NHqmVjs/EJcZzJjit1WdTgyWlB3NzPsA5NFUnrQTbeSCZJDE2Jbh+55o1nPM5tuIZvjJxYrHUce4FZ/0VgZBXFstn4t6Aqlyv/IAYiKXjT+xhgIFLLO2rqNqWMVvsOHmd+CLHb502yA2GDenyHLa57JdZtU9TiSeJFKoP2t+8zR5PvcYOvupUbDb3DU+6pj+0j6Oc5rkI2qSCn2OhYlmfTZqXSMXXwKMThR9Ewim2Q2ND5uTpy6NnaeJCby2P4Spt/DV32R66BxY9eX8n++dRC3ofxF7KQQRZvPKasPdBLFmvQ9xymUMvQYu3wGBgk8H9tbztpuzIwYa2RUCrFd2SOfL24hynlxbbtaVLn7n/2moZ+QprQ2uSOZTpUWSRVidMWXKRqRbQqPaKXCtM8UfbSpy8iWdjNgZIl8I6OSi1DBGC5A1ue57CIKxTFwWkrzkT9ycpXJzoaYszdJwHFxqAA7ajKyBaD0MMWbtb/DunEl5mM6/KOazL5GFapO+YxyPlc398OMvK+kQ0eipBTvnOitoca+ZdyS2Uu7ZKuSSHzgJDEdQyVLo88njsqnN5yB70FBGXSTOgjbRxaa+qcdTGK/6hs2ulSQPD6nAcEJp73pAQsXyOxh5WFGLc05ypJOtIF3gJ7A9mHzLPSz7lth44BzJ2GhCnYo7E8HrAtrHFP5J6vA6R6LHoHF8nNo8/AHU4yVKm+xMsAm2a2JNJol/kjwHIXQ8wFBe+NQd3Ra0rv9UVKRdOvecRIjftYaP/PIUnqPAbx0b+cLO+P+izO0rNoSZhU/ufas0j5ED3aCN7Ec+viIM7c71/StqokiycfrpAKgJH18IZWKGbruhC3QBxmmDaWw4q08FPK590VTtu8ifAXXkTgZ+bgq5JOGMm0tBkdqNB7dXEdyUfkB17fvX6Nbygi1WXqVPwTlT7H+zgCWPd7i0g0JXRS+fc/vtFtcMFVJ3J19xaRPbKiezL2XzJb4DmK9buKQOx3n7aKE7bANFg/BFFExD4ZJIiOrFZOnc0SLpSNyw9GzBi0NTl1200IsfxICneLkKPdalAQsh//orJJjCQjHmckssfM1y9fFczcDzcgdKhcvCGP7puPcbS9mhuVeP+gUQ8eDxc/0TJeJ2l+iLAevqIna19/ZdlaO7cW2BLXuPdaRMb9fEB4dPSE6aKHQHci3hku7gNjKoum4gzUD69aQCbH+LlLu06yMsQeCEmWqMMc0C/wzC5oosftbN9asFHM8aH4wnaOQA+zpzzj8XAUqffSSBFtJOHfLK8+eWapHHPLZRfuX8/gdFjsVAsdZwiIA7wM7zeS91PArafypYIDK7KS9Un3h+uX48tWz/efcNNOPuX/dR8Ac+u1gXf9HHveKXRS0TiSI+ZStKXKE2ephUhupQ9tQkSg6BaJClG1TGnkS1ggCYWfBOVlefwEtdeHsBKDhxxO4mJzxmqycY46nlQoBWCCwGopIjEMd4QRcLYdDH409fyxOQw0AuLb1z/dJiVR9b+nN2vEFcDeUKhfNhy2rLmqrqLc/YwWViPZ6wMp8jf0QCIxe9D0YtxHP0sOTITUzlY4aScxC/qdyYZvcWJccviV+nODq65Nwicmq5qJeTTzG5N8Rt5XNEvrw9JZgnNVksrhjvfW11YfH2iKq3BtUeJHxahXvB7fujQQka61yeJa8EoXQfAddBcUu0MP5pKoLfBorwcpXYobh1m9qPC1EC6PBR7XIl/r75S04PRG6aj7fs8Ab2tmk18bHw8H0aMdVqptnrKubYxZQ8psw6tvtbfxQJrrPi2sCVr1LbCNNt9OIbQy0yB8CC+0yGU8ALatNLTuRx9jIcbDVUW62/sIcf6U8o8TsNyMpEOruXEdn2AoRv395Ns6erfktVFVvsUslcINz0lc1L8AxUCVihBcfgk4Z52zx5mYqR04f+IuMieNjyEtS9ffvsagE/rwVH2WxxClaEUvE6vMwP8nN1qYd+UH59DLkLsLKtS1wt44J3UzvDDNe4zv723364Kpn4FIMCxn4mw7lybn/cx/iGxvQS1W3qHyOspIaXhRjjQ5UQk+vDqoSg0yIUbpgxdn48jXwLXQF5V9JNlL5b28X4Eosg56eOfOWXabUxGBbuWUxnuM0gYscP53o8yJPnwzAgufzLISOFyTcrNkLK3qbU2mXy+gittRJGK4yyHfH90aN6HYLUdL2YopqE87VLeSUHil6x471pnhmH2iJy9ei8ztHJ0dmOZOOIh+T4pePnl64AXRiO/N0yCNNHZNYVLd8iXyVfBjcqW6ihDQZZOJOPf+XEwy9lYUJZTZ/FGc+IpfkXeYlM4zrjrpjSwqjMdXwiT5GTK2up+AFUH7CC0WESZcNZLXcjFRuI/XQTHh0z4Nq/e38fbv7BV4kVhOWUunfwFU7fPLsvWpgVy3/pfVawHdNTRJH9tazLoblV/NDtmypiNuiQaEok4V4pZI4XLeMIofh3Uv4ZkVlSBVhlAOHEd0H0jiBazhAbMyg7xscTo1/ZBY14ZnvF1Tjepad282nsQfcwDvIGv8nvmOdOvtf99H4GtPhNA5SKQrRnsgxYNZb9eeqx8thAf9Diw/QBUXbhHu4bB6eSYyFGFD3JxBvOBSWXNnUqsKuwLXoIcAbuE7s25MQHrQoSWuw/AklHFvcXEQodRBqjvYnQPjM0cWW9dbguGovmVf0ncdmPUJti5L4GQfTJH+U1x7vII7T3VWtu9pwdAwPB8Lj+v+cDh5vTjOvtbqJ17n+JhTpuj3DIKjI3xWrRXnom6zv/9neYg4H7CEvf0/Qu0OsPHo3OcaVbncU/7ru6MOHKxdyjIlJzjWV398Xqzry9np1Yj4SqnuOz5WypqTsrv7FSWPCWZjlp0Oqb4+1wcft0yIHShagyc0G4PsKWZJTzOUQCbXrybrV1DP78JdXSBu73hBT8wlTtND+iHyNaBsN/sKNUtkCUcnuvLZu4Nv2l7/J/WRZel3F8H\",\"base64\")).toString()),iY)});var EBe=_((LZt,yBe)=>{var pY=Symbol(\"arg flag\"),Yc=class t extends Error{constructor(e,r){super(e),this.name=\"ArgError\",this.code=r,Object.setPrototypeOf(this,t.prototype)}};function UD(t,{argv:e=process.argv.slice(2),permissive:r=!1,stopAtPositional:s=!1}={}){if(!t)throw new Yc(\"argument specification object is required\",\"ARG_CONFIG_NO_SPEC\");let a={_:[]},n={},c={};for(let f of Object.keys(t)){if(!f)throw new Yc(\"argument key cannot be an empty string\",\"ARG_CONFIG_EMPTY_KEY\");if(f[0]!==\"-\")throw new Yc(`argument key must start with '-' but found: '${f}'`,\"ARG_CONFIG_NONOPT_KEY\");if(f.length===1)throw new Yc(`argument key must have a name; singular '-' keys are not allowed: ${f}`,\"ARG_CONFIG_NONAME_KEY\");if(typeof t[f]==\"string\"){n[f]=t[f];continue}let p=t[f],h=!1;if(Array.isArray(p)&&p.length===1&&typeof p[0]==\"function\"){let[E]=p;p=(C,S,P=[])=>(P.push(E(C,S,P[P.length-1])),P),h=E===Boolean||E[pY]===!0}else if(typeof p==\"function\")h=p===Boolean||p[pY]===!0;else throw new Yc(`type missing or not a function or valid array type: ${f}`,\"ARG_CONFIG_VAD_TYPE\");if(f[1]!==\"-\"&&f.length>2)throw new Yc(`short argument keys (with a single hyphen) must have only one character: ${f}`,\"ARG_CONFIG_SHORTOPT_TOOLONG\");c[f]=[p,h]}for(let f=0,p=e.length;f<p;f++){let h=e[f];if(s&&a._.length>0){a._=a._.concat(e.slice(f));break}if(h===\"--\"){a._=a._.concat(e.slice(f+1));break}if(h.length>1&&h[0]===\"-\"){let E=h[1]===\"-\"||h.length===2?[h]:h.slice(1).split(\"\").map(C=>`-${C}`);for(let C=0;C<E.length;C++){let S=E[C],[P,I]=S[1]===\"-\"?S.split(/=(.*)/,2):[S,void 0],R=P;for(;R in n;)R=n[R];if(!(R in c))if(r){a._.push(S);continue}else throw new Yc(`unknown or unexpected option: ${P}`,\"ARG_UNKNOWN_OPTION\");let[N,U]=c[R];if(!U&&C+1<E.length)throw new Yc(`option requires argument (but was followed by another short argument): ${P}`,\"ARG_MISSING_REQUIRED_SHORTARG\");if(U)a[R]=N(!0,R,a[R]);else if(I===void 0){if(e.length<f+2||e[f+1].length>1&&e[f+1][0]===\"-\"&&!(e[f+1].match(/^-?\\d*(\\.(?=\\d))?\\d*$/)&&(N===Number||typeof BigInt<\"u\"&&N===BigInt))){let W=P===R?\"\":` (alias for ${R})`;throw new Yc(`option requires argument: ${P}${W}`,\"ARG_MISSING_REQUIRED_LONGARG\")}a[R]=N(e[f+1],R,a[R]),++f}else a[R]=N(I,R,a[R])}}else a._.push(h)}return a}UD.flag=t=>(t[pY]=!0,t);UD.COUNT=UD.flag((t,e,r)=>(r||0)+1);UD.ArgError=Yc;yBe.exports=UD});var bBe=_((p$t,DBe)=>{var mY;DBe.exports=()=>(typeof mY>\"u\"&&(mY=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"W7YZIYpg4/ADhvxMjEQIGwcAGt8pgGWBbYj0o7UviYayJiw3vPFeTWWzdDZyI4g/zgB3ckSMeng+3aqqyQXxrRke/8Sqq0wDa5K1CuJ/ezX/3z9fZ50Gk2s5pcrpxSnVo3lixZWXGAHDxdl15uF/qnNnmbDSZHOomC6KSBu2bPKR50q1+UC6iJWq1rOp1jRMYxXuzFYYDpzTV4Je9yHEA03SbVpbvGIj/FQJeL7mh66qm3q9nguUEq1qZdc5Bn12j6J2/kKrr2lzEef375uWG0mAuCZIlekoidc4xutCHUUBu+q+d8U26Bl0A9ACxME4cD051ryqev+hu9GDRYNcCVxyjXWRjAtdFk8QbxhxKJvFUmkvPyEM1vBe/pU5naPXNGFth1H+DrZxgMyxYUJtZhbCaRtLz27ruqft3aYkgfCKiCF2X2y+j35IelDY2sSHrMOWZSUQ/ub3Y5mPrFirEXvpHAx4f9Rs/55yglK8C2Wx18DfjESbpWL5Uxafo02ms1ZJqz/dtngtnMql1YJ+v71s08jzoZlHGNE7NvPPiEXF3le+xheXLcUhOThn/6HG0jL516CHg6SeKYP/iC4fUokGT71K5LM7212ZyHT2QzO2dMJGJ1tpT7XjAjQYVWBIR2RJBjCjJxuzntxFq6x96E/kH0A/snZ/1w3kBnPChH8d4GdAjrG0oDZrAfb/C4KgIV+fEmjqxTLdJnB4PF7VGbJgQxu7OPuYJkVxZ7Bi+rub4dQCXGP+EAZk/mUFvUvi4pxd/N0U/HHhuh3F4lj5iO6bVyhvIQyNSyZRtBrzQOMO7JFSRbHsfiNEDB8IXTG4CSDMi3KKtNtQqRCwbDtpfUezkpqP+JuqmwsuZcL2NkgQjEedwMnFr6TCWRvXQwPUXAD+lhMwu+lNro/7VpwXEtxj8hHtrXMOADNQ4cFD7h+rxUrlZko0NfmIb8I54Nos5DONiyQQZmP9ow+RKkJ0i1cgfUQ4aUBgwp+rKUzly6REWSPwLqbpA+zAVnNGNZB8Uu1qeJ6vkhPp8u2pwbnk4QZnmIaTvHCgzBbcRDjvDv2eCf6WdNfch/zVQ+jk+T+kQD6NLl38f7xoh1ZEDAryVb1wCLBHFy0aE3FuZY73LGF3dKslVQu59ysM5G4pYvnKAU9damJz/0eknF708c2eC6wBHcdur37hekn2fh9EgmYq/4RWTQHrNglQkyMyDBAoFL+hHT3BjXoy96O8psGR+QTvg4XW5KdjMGCj0atxV61XAJlhVBWA/HvRqn+8qL4h2gNT9Yj7mznFCcCaVC6Uvr6DLEmJcs5J6fPPjBB8kkPjz6vQ4AmU99Vqs809/uySk4TSwfKNaXmfh0UsyzkMy09SgFWth+lu7VtImU9KhadmM4sd5KZZ2jZW/I2qLTj50XNwv3jOwlLMU69B22pogDPr1gYaobzhO+HRC6tF0ryj65xKZ2hgiQOI36RLUjllTXiDVwG8UKh+kgT6u45VlC95L2DZXrPln6Uko337svBb6fCfIF+p/F5+YeWijIfxC4z0qcEXZsDAJnXWDqKtIuVjmya4DHUjndKETXIMIHFKCFAmcsVmtu99MVy37vZRymW3R9rJR7/+82E484JOGqGW0mJDAo5bHOdYZjmS2DXSmhOCfs1LMQXjpoyEHpEctD1t2lmXU9QqlPY4Wb2xVynNDz4PcGyFK9+5Dv9ZKh9cfz0lr7A2S4g6g/BGTGzLJW7pxCq7Yoougq4Uzu7gVbfeSI8FCIj0OJ5BDmPpI2ioFgE4Q82q0iREfbgxfrEUz2gmkxSPRF2Z0uylN6krioG0dMdUewkyUdKRoGT2czC2BSmrmlf67wzXCu6+hlENc0YAAHnU8ifl6W4VjxKe3Gwn24DMgiG+HwWQrBnLSnsZ86BxcsDTk3ARbIx+yAZSPA0YffDCJtGaiC6JIqqW4IHC6NikeQ+A8+Iyq/LIan+Tomj4e84V+3DedENFS5MC9eqkCuh1fs9cOm6BTseTMjhtfPXFoTzAk7cpW2qwpSL8fHTeMSHVXLdUWrc2aZoqNOLevM3c5KGk8XFvCPZ7k+WyP5putfYT9bhWBHwyy35+QqoY9xAyeSiyN/Ow+de8dEVxjiO/1/TdUwIyC4LBQgjzh9NSDX1DFDVj81S3SNrrcoskAwU+MfkV5qRqO3GSCUCiPAkBBqqlSRWct75lqe4fTsrja5xDx8KNq26ZgwXNkKn69zIjzJ76RGpANs0ahAwhnfp9QPAk23SNIcHP/nVWhaJsIcXf7P2ZQYfAtgxIp5RAqdVVk3T5ZyXzGUUPyQ5DcHQpCOxCiyk2lFkLtOEE0xzugED1vI8S1U/4Y5jlZgGVM2bvTY8xPPpsvuHu5KyrEecMGIigi0WOLtR5g6OD95i9BmSl24ORZsYMf0ZusSSNq7qSRpQCLUe2BbB40bdsFJBmrLH+FXLczUK0WyUf9B0xk+lYqk6yXzmQYPVf3e4xlUbETyNDp7m59l7XHZNtJpbcgOMYLatBVKxjLGKSMIc0s3R1rZqWlHgABmx+eRyqfgqrt8T0AMdw/j0OY4oX9D4ymSMsiD6cJvyyQEuJKxB+tI0MNcy9784oIq+H+n6FqEZl1wihMarly7SOuO3KfrI0BZudTh6W6FPhx4m5eioQazCRNsnfFn1jRymtjVt0htfNi8QOOi79TUBwqDfqgtH7ms/mPCuZ5deTajrWhrxFlk+yYdWzpcHjuIk5S6c0pvA4RWKQhW0ZrlcpTLGiiihb227YY4IsOUOpafaanHlrFz7L+kyXTB/vMKf+wOcJrKJvpq/aDf2+oNNC9Nc9wFQP9BZfh68s3LsbQfyIlBOc95FoUOAeTW23njcxvoxurud1/XZ6IdaTrP3vsJ13AATa9njnpzaW/4ICcmkU+INciDjNr6DRTLOHPIOzF7HzXtiXFsainupUGqfh8nIUW1vGlbYBeAwn04D4NPsjJYFIrzko/1jViy0NwT65o0usO95lc/3sz/HM0lqNSFrepApkLuArH7MLk4Ud2FpCkHxxlVt3rrBOMa8tQt/aO8s6UaNd1oE9Mvb1ZfjlY4KdXhvNNHXKM5S6zxuj93bUaUFTFs0hXlBIyzyvhqqwtH3J57JCDfVqilT2+4v1T7RV/lc1IMp3jGuhyfkV6Rhd3OCiE7ElRGRCEDNHXazuEzKPP9lfqZ4l/rrpuXVydf/Eny+O48Cu1LPqAb3hPsyELxbyuE/EmXNcy0UNUFcsWhYzAY09S3+HOthcOAFEbCGK72x47AIAlbKq1LOqxZyGnOiLqTIzF82ko/YMPdZA1u35gWi2dXytsg6Dx73BLHPvNbr0+ZbGWhn2K8Jng+R75gfUN+TnNozA27QvgezhtGt3cw465Ve1o6BxRtgYL/mZIfKl2N4Q7I9rchlh+uVgH0tVBdKxp3lySqXkD2YbQzzh3uz4xRdomZ1A0OH9IGa1Moud+rbztgKiAzHAxOOTNxy+ZtPWnPWTHFDmlIfZMmvpU7jOtakpxejjhh3gYIcd9vH3766rS4/UFJnzFQuS0BeljjW9MY2mGhjFisY2jAFticOIgG9ntAnTVOx/Yy5wYdIMjLjLXrvgDQUGJ2runk1niyi1G0LrgH4rFw9bfuT6UzCP+8QwxdNPdnDsLWzHkrwSWt/EAfY6AZevfFPtcMsZU4t7aWrvJLiN70CzN8AUHnfzquATdPr342AYsZJj/rQ72YddOnbdf4ZzY7yPw7cgZmQlSBdfDqfJPpqzeNOPVaEY+l/2XNAeCstnNhZQKwtmH6sAAXfl9yuVJTi/magBJAxUbivQRKHCyxBmEl8pPIyk0MPq58LYx1iJkVg9Iu1/yLotS1F4y2fD1mm3CQnrphi6KURxydEshzi6W58CRn7afwPntq4bq12rzdlnlsD5AZMAyRK9fQbQNR3rAdvfG8eZ1/n49icsiUssBfYXK2iaVlUfYTkZj8RMpBxtxdRlWMQdELGlRPqWZl5tRPf9fJ/XNgd7YU2olh2VjW/2gfo+va+tfFyeFjvq5tvTMtNkHTcqKR5T/YL38aDImuvqm10LfhjkhzJpP2K6G/7Qz/MFdWlNGiycVs65WCOOXqVPufVResqbv/sPJNAktAUAwPhi63Y6F9EJDPBVfDmEQVpbSmcpl0j3HnvjFA3L2msqZBFphCBEaxuBKrmeqAtKa2iKoHEdDJ9Re1Jrx4j8QT2ybiTKEcJyHLIHDJojd9NcftJIuh2YHY0x6Bb++6Dtf73UpsIZgrnS9nakE9ayWlk/r8Xrn0ibW4deGgt/KZT7x/2x6RvB2ShOP7WGVQMNDVgaBhsnKr5ToiegazDrScH4zauteqNk3sSykTXx1cR5MShxFZIHlDrqsHJWesyrJTQuNJx3mpA1nnINBmWSVchFUD9VXSX7sfHXHd1lEiOGTPrlOZQvqoU5V4gAKctLd2jLXOFtZ5fCFa7OBcZaKHyJQSBUARJu/+vkVkg+ov0n6lYKPFHQ/Gakx0ns6IWc4q3pt7r5sN39Is12vWpTncKUOPL+nqmgO8T6zm6Xb8Xhcil+8mSH5ZNVnWpD4GdqwUP2FkiAZoDl3YBlwPHA2HKLD81OKdAeDXVGK+EJopfaq7XkIzhqBWRh6whrxOusdiIV1tbhid5K+ZYeB4HwUhV1v2P11U+MAOWZGNYlXX3eMjD1fm6kjSGKHa72+lLHiMM7K+dEhVNDTc51NUWwSsXcx3c84m0RLdbxv5g8h3R4D2/1BbYbT7zOCo5dXtmzSmHViTZxvZqbwz4jSj6wc/sYabvhhfy73XKz26oz/+T71R/G1frWlc4obxqaDTWIj9HG98/3+rPtnE9tjas3Yyn9UhO2PJErMN7DKinTMlksp05+GakYwb4ZAA4zQZSqrGyHsktqctSjTpMtaVdA4DwemhPyrmwcW+0NlDL9MrhvGiOS+eVu4bCo4jj9d/SV0i1kFZ5CTs/WjOU6Ml9d3JAf6pE89rv73/vApw9U3w11fy0wbP0WCX6V8c7Bmr8t7vhpBemDewoSVo6ghefic5xgecP8ysYyB1QC+Dk2JoiXTkwaEIU1d720dCIf5y0SYm9l5quKY2Yv5LeiFNbtLS98NQJ5mQs12Cp7BsJHzT1c5GLsm+hdKkAzxKA7R7hGPuIauQaNttK6XTBT1OZG5cM6ovLs52W7MA/HNbkjpwAuvzgnrg3T+Df1s3q8GIwwxlHfYvXfxUKsTx5t4cEZxsk2700PH3l3brazpnHEDDa1MLF2q1QGTvUpRt5Xbp+OMr5USgxt07r7JXR95TxwfnGIp8ocvTW1d5vunjz2oyORJzC+vrJ1drWx3XfYJGe7VlkOVPoHuYz49GYjmCXQp9EtzfUaAzKBEBTuhkU0cPYMcpaoLK3XiQtHd+dz6/GxMtpNFEOIqr0AiJGrBH+Gp+sNad0n9quQM4hqu5ohrF2G1Szx6s11MVqJRvd3QlxH8+mQ+4E54gFHyoz5iuQ77qXp49kehksFrzuZSI40Y3aR3T/Z/OnRX2egHXHoibXzcFFK19vVfCXReF6ItIzYw+U1Nx6UkwuJpcdR47EGr/xKs8UOEyZ6V/eJxtxF/qmtW9265WzSrqwNewgxToBKfVnkUrJdmiQIaNqb9r+UDgDuArRTpUUPqMzysWTQQIJbd+Xr9V8aUEpZ0371aZhhI/84RfW+dmtpjRn+yQIllTg7FK5LV0lyUk8eAITuqxaZfESPTa/QEWwg9+66Rbpmc1CBY/Oqk6pNubyv5segdfcpYgTsEpbzVndcExR7oEc4eJRw57hvSNN+AqH8ziy3hOB19jKuML6MKFSCuRVcix9x84zYfUftMusmkOvyGNUGrnKM7tw5Wmrsih6RTdtXe8+O1S6E0TMl8bL59GuZcXke7MfxnQvRvECXjo+1BQOpd75XyPL9Yfm8fLNjZzbMwk0ZgqVv3bFA+7Qu+xFgxwsJbo83PhOeNr6Mcq18n4EtGQhvrzAwQY61aBoMIv3G/FBw/SgYaPrk9ng1MffgnFfcJDNP/5se7spF7Gox82SeuOpiPaXZZFnKIF/5zLH1TMGUJHR8ySsXitq4sIuBlyykqukQhDEiN2DRUBDh2Z1M2h1BQtmcQpxhs8HJ13hVVENSgG3lOPlazd3sYmG92GvbvPbpKJip1q+WDwbQtfa8RkSKAoaY2IgQoLo/rJtMq71UR2VJ5T6Y85hL0JGFT56IQmcCseQ8ouKnL0Vwrs0bxTpbwScO+JYPcMBt3zvI6rqGpHxkDDMm9yLuWS7gRlOktJMAq1M6P2pDQkNcx6QSTmuWmHwHYEgskf9zZa6WdV2o23rX5hg78wKfLDaBkXcnI6ylSbSp+2NEzZ2NQOCt8NQGNc80A5OulHFQhCx8WkzDwEvXT419TFAuCmp18MmKi0ydLVgc7MPg6wnWJ51o6EnXvuOyp+/TJS56u6yiomDYxB3XXpSIxWyztaGhjqXYmOGcdu2bvO3UQcdXidioZ8lJawPuUAF+3VaoJIj6eF0KIrbdhZCmxWD2czpmWFKEMrycyV2MBqzr17lW7xVM/WdWWR/TkO941KAzOxL44QS9OU/M+5Py/kS9Jzg3d3/e2siuhogdsRGdGUYUno62enVUsYpt60mhAk2Y86s60H1QPA0/7U9nydqtBysJKQGT0WrdGcdUns62evVUsYrtHUmjMs2EVNi9Li7OKcOHj96u926XXb9AFnfg0lveGOVK6cWJuUZCQdM2WDBocMGB4RpkNVrvo321gNLF5WNEk22kk4oZaW+BmTxmd0QqgclRBtjJfCMoq8FXtRoFDHSKW0d5nxUtS+oABoxQc9Gg7h78va6jiDbpW7dwrVuEo2m9km21wjB1x61EvLs5trGzerpHde31jqvFWFp/cHhRrjnm2lAcCLsHxu/TsvafBu9P3vuT954F6Rpt25Gks9N3C4e2kfurO0y6v6/y9D7K0/s0T82aRk2bplVjlin5fpEdtwAql0Rk1G07gIufdqJB1j4w3t5FUPApCSdEkGznnFN/k6Ft2fVA5rZ0qVvQgDely/xvUvMgFRWKLUrcedIlqbk4VVnq4GvlqxyXhagrDku8eyTMEeKWnMjfW/94EspJUbqxpihAdFeLGbU8OzHdDcT/9Z7c0OY/vwHm6h4wc0fwj3w/2w4nCLptJ5MXXwad0U4YyFqFVitCvFv1IGnSo23W5yI4R3dYF2y6O0ze3oG6u/tRp7wPgyl57aYPfA7KJfKlgEmWlEkQl84CSFEfeHAnk5mhg6C6Fw/sGFW6Mo1pGPQWx+L8rzYlmce0abEbvNLIdGPj/JEvB4u7ow/zpzjZf36STbphaAbHf3YUksjbVSlOf1crtroPP5bOnfnydVL6zNkulKLzeEN7Cg+3k34rS9tTc670/JVgLvRawvNqKF/jfz/aZytcHkZ29OBZtQXoBGupMUboqsk59ai14cMpj3XHxVnFzFzTzuEyXuF/bnmKFvMTwYFG/UmoxS8ueocx3waoBBQ0G4KSOGHB55gKRMk8DNS5KxLExF7GTe9jU7wGN9vlFEeBD6lF+26RT6RInLpnDDmzERW31XTRHtxL2N7xoxb6onLubI49gVZ09Zq1x6C0t5mdk5WhD4LjxJ55oU7toCwbmZbLiCMR2lBcSk05iRcSma1hWDZdjl6tD94ohLBMSWwy2AbGyv/jbi7dLoGlT/ezqOm33fIA0b/aD18vTsI9I/N4HIIsxuU4uJe7c2Xj3R08xAjfKZAbbgibJqG0MjSEvWVDjki2UkNf13Vd13XUZC0DTx2bDwbsBH8fj2Hxn6DbLxEPq/QhLzcJEp4urxiMY8FRXecFSmDgL14S640Qkkhm+fzdV+xXWGM/p09EFViqjiv6KuiXzHphc4vol9T/UsKbIW5OB0bLOtsC4eR6duJtnxq8FgL0Lpb2B5aLpXyGjDHrCkDHMFTmn8sdIroYt/UVzIKjk0PhbBlisKdX5l/L1+wSG1cHztxB4XqXCgSDSR+TV7Oaxi448DHsYvT6BucMDab0e3AJM6gAeRCVHSNODMzz5zOIaOkle/XBj9NE6FinCSQ0r9ITp6mlDqKb7Ffl4A88ULI0Qp1awaBjjbwaNjId7GhM5vKZ4BQb8vzJnXnbEjajStV9ZlEnYp+8Tq5/az27/kPe/63evzvv/y7v3773POrXvx6DjGCuX2H1kcSQanT+WKPiUsJliz5KOWnC5wk9WtlvJcjJAmQ2USOgId3v/FZARaaO3jZadHXWqJNf9Chrfw8pjHoDJ81McWojt2MfyR0uO722bmS33+BDLNVDDXbIKGyZ9d3occQjO1dc/GhydaLE3ZBuyGdMvDiCkk4dx9G47sGU/sbZM7F6QYmOmLm2zvQyXV0fcr+Yped1XYdi9Ve12efh93r6EjM/DHkXkVq/DZErtsF/9zbH2d+CnbitS3X413Zg7t9DfDu1xEiWz66j5CVH/JaBKNZl2Uo79Uul1Eqx5nIXS/Fb72/3/i16//a975d58Zvt7Fc5JPT2anmarAlrp365mvUPoZ1S93AIK7p+waHQxZJIOzXbNGs2mqbR6ItJ+Zcs7Ko9BC9z2EBfFAtDOKfO6qJZfnNDFjdAdnqqv6fToPqZxig9IK2oNhX6hZTqIVGuFRt96Zr998DmmIdqnz3UlycZX/hnsVjV6Z/UYKJXpeHqK//49+ea+69+Y9DheUDnPA5RVw9nnh+gJ01XJrNjI+MmfyzWM2YXsb34d9x0eFoY4aOaWSOt+XZUtITHcMqWcE2v0v2ZqL5Xu1C8f3MBErrnQW05ul+zM7hk87HOqTQo1y+1znZ8UvvlU/fbMvKvj+Ec0Cv2YE/3W0LwoJvFgQPr9GUpjfYejnSnUJnRheU059qwNpKX1/RbakgJ9nKb9MuARm91wSk7wrb7lAWNEM6voL9MaLjsON1y2VA+P2Rh6rXMyJRspXjbjDretCxLwtqvve0ed0UAJclesqbidU5hxOL9IUu1WHeXZehNLzQMY+yfjIlGu3ArXU2LcpIDh0koQTTy/f/X69ul/mEyAr2S/PHEOfMyXbymM+Riva1xymz+fon2M7SEKpt5DOUz48NHqDB/7I0ILMB9Sk1n5MIp7OcrvIAw2epfCVC9UwyNSdl1Kx+x2IM9OMWgtAdQiKHeLax0/E0ZD2s52JOR+hEXA17aT9nSE0zFLExj3hUS5y0U5tPttXeNRUeWoaVHuht7j3knrVmLeIunqu3zqSZgzmdG+HgVKwNW9A8vCsuyFwzMOmdd5qHy2cBnCaG3AKokR0AW9RefKmI5BfHIVyw5s4Yg1DtB9xhszA270uiOCB8D+BenA20hHOpl/MVWCROFC1DAeQ10fu99qMpsQA8jfhDDoUqBCvJRW6J2pzqLnt8Mzoj/+ekeL2XRRgJhJ3qb4AXTV4aK/3Y3vY6DuN920Okd2WOPp08DfE1bQkBfPhf2f4DSORjXtwn7CaReEMU94zGEFKTW0gxHkFXd4qE5SclFXH4NMVNp557O+j7FT7iQMsPUhbdC4JFMphbansagkmu3SH+D8LNgaHeFLw6CrbEbe9Vvr8JjssSHy2DhhuD4J9OY24/T0N2HnjpwQr23izNcsz0OTSgl6HbYHxguT1X310zImOVKEYMeUTve3Caiih2i/Czr9SFu412TwspMTMhTno+cIq7hkm4/V5CUox/7c1LiVCYDfTsMn+WAjI9oYruk+Mo2Fo39BNc3n+Fuxm5sPUOUVNJY11ZkOjsYivrJcAqrKj0/E+pcq5R1JXIYouWzjPw4+8Fsa4xP40kzxBQRuX+KakC/OtjLXnhDoB98jWRcVUB0x5gjcQWCep0B31VeC+0coDBmXyeakM5adQ/eh/7DR3gxgfShsfABlCf+cKbAAh9HQze7MGeX+twMOnuJiQ+V+N33tl40X/z4OMPZbxu8iEMGUKL5peB+LtMHkAhzON15jSF9EsiaLx/i9SQyA52R4z1Zd04/SI7TsnSOQHSk2Idexi3ZU3b3iaPVM0mfFXp26lVupSzmHmPD3xtj+cLJZFNiFr+RpouhImOd70A4yRE5fwSUJds25rGVOMthYLt4Z2DSQFF0FQ9zmcrSfCGV/gGCU+jXsDv8b8QGX430pERs7CdIhk4yBwsLKgdIgbu0hcK5O8Jw1pMBa4ppsY9pAY6lQ/R5JbWsXMzFeY+nxzUeF0pNFweHkRrmg3sT+yX+zzad81iYfQIFKcv7qZ5jArC7UGZ8N9AUrzc87uCCavsUcfDghX26yBUJ7fCUD58hJ+f7Gsrlr0kDvDWVE81YkASoPUhifNjDekl9cHWdao+BmJNy4wAdUKtohv3KpWRhIiruWpp1zHYXYXjLs/gTOoqL5L8wRKt86ZHL8/uhqpz/8eFl8aLVkeWEkVAmh0IvSiFrMjlbEZL33lYnGjWSbveG/f5x/6X+I/0iVg3/Y/JMH08I895zjFmjl47uh99Gpo+wToBxddQPh1NszyEGDRSWwVzajG3tTtuqBnyMJouYE9hUF8UgvDKF+gq7LUjeLWNZ+uwVIIBWsoULBbto+RFS7N1YMgN9MbFBzQkuWhVEW+HdC6Z3sbtg3DwQa3MQiu3VnCXH1aTpb1lHY8/36jN7xdolzctdbjwZua2JJT12FSQJhM5JrMzdeKijSeVwHx8r7U9jSaED+XF6FzQ5dpthmAgOY1Rj+NkgxgNDkQ/AcHtrAQve1bcQLUwC3KUo5GyBTXRwvi+LMf1S5HDn1wTI/UnOFQiy7TVVD3755WuaEh/hRccyHVqVGR4o7Y6d1HakUEalTvswRZUYfWWbzdY36zTlQkk85VpLOQd3k9fUb+2EE4WyoHe5c7XHNnjP5wIBExdVhlh9miYTFY+a6/dlWUQU6N+HkvTbsv5mtRfaDwTwGj2I6MYz52z2o1fJ+/sGytq2u3e5crJzze4RDn+bVadJSgRec0QxcUQcHihrVCCK5rRVHGkYNTICvQWMqabLpiXatW69ON6sy/QgJ674u6+V+IlvY+ENFQoG81NSA7/6jObtmuI5gXPd+Q7Grd6WRVsIR9KCsjde2WZzkhum7VuwInzdrFTFRrqYT6DXkfQk9cuwN7jZOqAJHSj05LX8OQWzpo37SCt8WjBGYN50o0F76Gf+oFu7p73k8vE0vOuo/jjEm2O2BhwMHAP0+VdGTD8P4PH4D71h5BkJKXUGNH8CJFoGLT8zJWij5g95rjeJH47SO4yW02WexMt7zR2C46ThSWcSm2JqWjT+GG7AcgvHQadqUcDKjdTgE4Ub0tqlEPpgKTmZNw5Jd1DAs3rKAzp8+0furclUDr28+5dZUW/ybEfjBB1++nHXKXtuk+nz8sW76+dLvLtycDstCBCmkspzzcjvTQI8k2ho6fE0WKsuq4LQfxmyVjnHcKLJi3T4/vRqNd0ozdijYGNzct6ITHM6ORtfniyESPNWMBTbWRxSNGkFv8uZqfxpl42DVOGkrvP/ssJ1gbh9XdnQiSRXTq/kmpw7H7LM8XKtXwxfvoYW0APq+JvGSv0M+5lUhiAzwAq8O66O0f8qTS6MEIOUWjijJ0/ZCraxaJPhkpX49yAonqXZ8zAwX2tkIDp5IjjD2kvb1G6/QeVVv7qD5azxLHBpIWbI28rx6q+5D9nzUwkP2wOlDKsGw2/SJiOao4BPWyCXjRg2OXuPp228KdglNL17euvPYXUSGBO6FYxo42R6Ol7yNtW/MZD86somgsK1PR/IVstv3srrKUkbFnPBbpYYeNJs+p2w2fbfKnBxxi4zYK7cvr9ckBhxe+otENmKYn/Hh1YAZQEdReEZ5ZBRnwCO/G6kdDYuIw0Ewd60xZpkj209Bvh9LMJrLiT1tNsrTYy1wbxFCNgOzk8xPkzWye03VL3Jh6qQLRjTkth129p5IUhBfiDQyd131I/tLXEMJnRGwQBV2/X/L7Tv+VC3uYHo0zXq4CWw844CUJqYfDJLqkwaItbIreQF6svTa0TNvScy8r0j7VlLVqczG4USLIqC775j6VhD470dyQzM/16xBeQEy/X6tkgJQKSjL5N6J41QlPCxGHScYuYvTpJGcdVYq+bObbZdZK4v3BtLj3Vc5+/lTWrcSfyvc8LBExCmWLfJviNBX8c8ixX6VGS5VYWp0jjli1CeUgoHzA9zkDBbBM54ESqVKQecS1vWexQpK5UIsOMNSa8NYkRp25MkRpwF7OIQyAb9X8sZuPXgmsD1jbSFA+uweZsQNqGkYVPkBXLSphKJ/C2lIHdCfVKfqbkqTyl5co2vummREV3HZ+qbZBG5yG4G95Znbq56Dh1zYuOGWXhKoRyb+Fq7KYYV9bVJUk52DYc3VFLhlL6Qbkoy8G2Y0tCpCwXcwVBxu6GeicCChN24faPn9IB8cUD+hp3kvjKceZpSsmXP5PCO5piSt/bn+PL/gjVPgvub5jOgq7nNIaA3OqQMljSz8Vs0rD9t2BhzyPEOmpLsqlFtyJQZL8zLy1xJiDiVKOcrWuUdHtDEfILHwsqHsjuc8FY1AQqqj9eGqVtxRTYRMTGYUZPE4S0WfJ7DiRMfTADsQnDHlF+OA64ySBzOxLfNpOdwckf2zFgMQtG7JaygfYm/Xvw9GLu8hdlSf5mZO8coUGi87cEu+Y2LcFASUicf9TgShhXtYI3pZqFK75aBuQY4QLKNtM+1d+law/utG9LwahWnCLwRv2mZrbU9nOtnqcE70KSReJShsp72y7S/NvKWAfQRjoi1hHYvXngDd0xJtKeAJg5TRRkrhIwdD2+5YDWTXpv6DWka7njyJ3+KJ3+ql3gDYkvh5wUtLDo7+x9ieXW7fMMHUWgcF9g4dzHAQDaKZEPGOivoKFfwWcBZEKSo9f64bgDtRu+MPsXwiyfxVF1+9ouXD9TfFJT+mvASGsFIkW04E4Pk6QFt/jaUtQ+ZUuzJm9j6/E1sfV68/A43r5150Wch4uvNOOkKwHBFMfC7OBFob4hFCGp6WE7iMnUzu+OULbC1d1CLoInDP8ACxjiWgSE/N6YVpp7avokMwyJ+T72/AKOx0QfXthxqCYC8cSJmmpAjbQEAMqTtI3Sc4z8IyLiqpdSijDyR65ax/vmBXGOjz03+f8tZx+O5Pq6N68X6jbUb6+X6zbWba++XA1iv1+1SNtra53qtx+VDZn2YHxK7fIHWrz98HTqCd60G6juzQjrYVZbhi8pE3/QYc9NomQ0Ez+9ELpyaKyqpDcrLMGJxPKsFO6YEofopC46C2AU7LtgY3R7Jod8407Id+KwUE4DZ5JrV7K42vTUGtSV/5+TE6t3TkI8mEcr80pHiDMQzGQ1hxfO/y2KChIqxdMavftJ1c9UFSCMVMDhdHj4AcSbd8jJoOKd4kMTB89rjpiZbMCu3kS53nzKehcAb3L+r+II9l2iMFRVUVD+ghglHv0jaQVzLFJXt3QS763tfKo8V6UTxoNRxEVVDX5FLgavrZibQVdQMDHbs5/+WxpStii6woTFaBmXZFROE9Cc3+y0pEAdFxkpOzSBsLtPtWNJKigbwPmO1C5k25PgE3hLaORZi10reiVD1UnELZIw6fn4pYJGMoyUlnw4c04dUt+qZptvBhw33Lnd2iZTSWh3rJtWIpPFc/3Qsy4lMm45lNy2aqY8+aC7gidvQhQrxfmuaAiWKtWtGY43OmmJYnNr2XYMaVcnXosYANFzD8uGEQjAUioJFLJBRFuXNuOukSso2slYR0KLSAhz5lY7q1rroavP1eEGAcASAWbjfnBFK9IswYgGHA5BdQjJew7u4ZXaC3QTgGcaIUYyPEiSucelWSTuXUiG1LMXM8oIR+RU9W0qjNFg6fBugXD10ZeHkvyTrC4Cla5/q5MLq9memnJ8lQjCaYJPvnoYyXm2ByZjV6ZOL7d09CEUvdcIvF389YLM5OPeyxfBWUjiPqMfIGvgOBfjPGQW12cBc/YzZbxgYu92wRiOrYixVM5dG6fmqo6ZX6CK/bqqHboDFCUp73KU/YIS7DEu6Unw0H6X96WuVb2l36CMPyTLgjvFdAFCTA5kmyl1S7/mZ3xOqv651jJX+TnIfP193JOZKKEWTMhhvn1StNy/Twhd1gpgysTnFNWFl5O6/5cP/R2zcJU9ikalZB8sbL1Z4Ok5UqgiX/ZQTaOO+5+zXNcLvODwG2b+8dHsI0r9OSS/UZ0+h01p/chHZu2TvLVMaEqJxkyj10YV5yHd58pbHPIclCt5CeKNcMx5kSr+GsBUhcyT7lr/mRnyR2Sm9tpjpf7a3oR+H00IabdcdATsFp/9yGGPCLqqwyl6lpt9D97XV5mjcim80uvhG6AXM+Ewx4CBr4XXIIwZsYzkWKHrwhWZJM+ztSWXd2ErNAGPs+ZFpa5NxBrm8rN0tHrzoHNExuwMoB6SdGGldMXKFhcy+q99NjgYngNDKRu/vTPALyd3ZcCWg+pv3uW7lylwtESPVrRTHvPIJI9lH0z7FB8MQN0tddxm55q+hZSlHGn4HTIn1qYnBdytlMSEyfTXVh7rpRGakuXPD0vtF8W3QbN8GXgUrwbCybkIaMR9UGREBwaoa8M7qqGTpuHj6ekl9tZxBBouoxbJlLapftgCK1NIrtr6K9YBROQ1UBbINXOiw0wZ5r9zagqRBDFMQFyvzYFnYh8Ig5NoqlDFqSEd+WHiCEAafi3IUpXVePI8oy9fD7QDRWKpQMrIqyRqLMSAn7evHjrNRNKspUBOCq2ytGVeT8T2eOTeau8+WOvHmiLE/AOUmcgVQdwJVlvDgr8UFuw7pcXJArQozzSJo+2DmaKYphScNeSxACQsp4f1xmomLafbNNzK90dk4tdjwL9inPgZWECkUUjcBKLkATF/pFDq3q8VP1dnDEtXN6Ihxx26oXeBRLim6qo5s7nyCeEWn9uc4raEXSDlPqk/bHO1i2XXkIP/zF9RvnkQR1T4ftxeicKzDz7xlegnxpauHhn1hcP/Emh+vsw2CVHWC4V27XblqaC/xkO4YPJP6LpL6KEyLE9VbxKK813gqpcNy7oalqhJ92RanoMF1xUVtyRG0U31KceJT0bR5h8su5sVyAHil2LnWe4QPLNbS1lk5FefiiG2b3IX12+Ez+3Z7RbSvqVxtWcghZBStcIfYtE4wk9ZR0TB2axfOFw3iX6FdlE8tJFwqKr5D0HGTnZ3zvS1qvLEybAAHRSseffG3+vDgpSuyckW9TQTYbPc05tmGMPtCymY/OwC/7KqvBxPavQi/2pToMKv3ysfwamTLeW4bZrqKADs4q67jiKN2/yyucS8StnHeTg/Lm3VqVUHAVfyb0yLTUgpwCgBLocswkQtPaQ8d+y6cBWs1Annqp1igcpQLpghOOVHYg82cXYEYICfygPOL5hvAd9ShDTg5xbEaVI4yaS2ZQQ3+DYY1n1xCJa7Ue2KRIeZIgZQBem1NmIOBfPvonVqOs77IChs0HqPbdpjbrlhTT2YRFnSfOQcEsQG+w33eotwEpkbN3MOv8VvQIfmuY7vd1kG8WnVvzMxnZYubJHccY6zt3Iqw3jp0ehCj26dOpVzveIQ+JdBs7z9mi1F1WRHbG1nCZKkjzXeZWRsmAVuV63K+6fxczgXicHNOJ1byuXpDxgsiM4vGlf37hbCEojg5vBE/THcQU9c5ulMBqczQkatKAOyj1PTEHtuASZ7plKRQ86aNZPWcDTKBdjsZ8Q2H5ayc9oD/mPycHq6U+1y4P8yFbZkvfoLHvnE+hzdismty7Na2YWmYHREuaa7nfhBpxqKVsf0TI1f917qMKTieUfdlNsEnYhT7TbcgKFvREH46deSh9qjtW9KUSpPOWMqONNPcL1F4LUzN2UCO89sAnoX1H/WtjHdkqMtYzswsd1El/me4hRszg6YO0GgWxNuH38Tm2nUIAdMxaZmEKJ8L4rRiAe5WH7Hg8W8njHEcVDB2flFwshvQiuTLoN0XbKrhWHNW+CSKj/6oZf6TL52UpV5UHr/4fY3zbEnkSctnyS1fq8mlfy7IDBeKTRksjn5uKai+tWArnq4FyLGWTCS9Ajp60isRCoFJi1+ndJekdhnWAhnveiA6icBgsxQzkEVrAjZALn3tw/1UmTqKt8m1OdOY/v38fB3j4mcnBX2rrU1uGtLz+9jTF4/o6Ytlk4O5NiiyTKBCLOwKP7HhZqG1fQnBYtxks9dVZRHYDpVvtIokwERT7NPeSwnKqAWGHxPsiAL6YvVI+BBMtunYk+99NOWWtyiadeaGwCbDFz+OFqnQM9GPHlQ5/Lnt3tnrRWyXyaR/4mO/E/fv65K911gFohqGSVGLnzgM71eBIw8LF2+BLqq+mPqi8ovIVdliBIwN+MDY4zKOxfyM4zPjWIdHsZM19d1SrB7nmiLRA8+AP2XBcFaAm6B/sJ2iJA8=\",\"base64\")).toString()),mY)});var TBe=_((BY,vY)=>{(function(t){BY&&typeof BY==\"object\"&&typeof vY<\"u\"?vY.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 OBe=_((fer,NBe)=>{\"use strict\";SY.ifExists=Sdt;var Dw=Ie(\"util\"),Vc=Ie(\"path\"),RBe=TBe(),wdt=/^#!\\s*(?:\\/usr\\/bin\\/env)?\\s*([^ \\t]+)(.*)$/,Bdt={createPwshFile:!0,createCmdFile:RBe(),fs:Ie(\"fs\")},vdt=new Map([[\".js\",\"node\"],[\".cjs\",\"node\"],[\".mjs\",\"node\"],[\".cmd\",\"cmd\"],[\".bat\",\"cmd\"],[\".ps1\",\"pwsh\"],[\".sh\",\"sh\"]]);function FBe(t){let e={...Bdt,...t},r=e.fs;return e.fs_={chmod:r.chmod?Dw.promisify(r.chmod):async()=>{},mkdir:Dw.promisify(r.mkdir),readFile:Dw.promisify(r.readFile),stat:Dw.promisify(r.stat),unlink:Dw.promisify(r.unlink),writeFile:Dw.promisify(r.writeFile)},e}async function SY(t,e,r){let s=FBe(r);await s.fs_.stat(t),await bdt(t,e,s)}function Sdt(t,e,r){return SY(t,e,r).catch(()=>{})}function Ddt(t,e){return e.fs_.unlink(t).catch(()=>{})}async function bdt(t,e,r){let s=await Tdt(t,r);return await Pdt(e,r),xdt(t,e,s,r)}function Pdt(t,e){return e.fs_.mkdir(Vc.dirname(t),{recursive:!0})}function xdt(t,e,r,s){let a=FBe(s),n=[{generator:Ndt,extension:\"\"}];return a.createCmdFile&&n.push({generator:Fdt,extension:\".cmd\"}),a.createPwshFile&&n.push({generator:Odt,extension:\".ps1\"}),Promise.all(n.map(c=>Rdt(t,e+c.extension,r,c.generator,a)))}function kdt(t,e){return Ddt(t,e)}function Qdt(t,e){return Ldt(t,e)}async function Tdt(t,e){let a=(await e.fs_.readFile(t,\"utf8\")).trim().split(/\\r*\\n/)[0].match(wdt);if(!a){let n=Vc.extname(t).toLowerCase();return{program:vdt.get(n)||null,additionalArgs:\"\"}}return{program:a[1],additionalArgs:a[2]}}async function Rdt(t,e,r,s,a){let n=a.preserveSymlinks?\"--preserve-symlinks\":\"\",c=[r.additionalArgs,n].filter(f=>f).join(\" \");return a=Object.assign({},a,{prog:r.program,args:c}),await kdt(e,a),await a.fs_.writeFile(e,s(t,e,a),\"utf8\"),Qdt(e,a)}function Fdt(t,e,r){let a=Vc.relative(Vc.dirname(e),t).split(\"/\").join(\"\\\\\"),n=Vc.isAbsolute(a)?`\"${a}\"`:`\"%~dp0\\\\${a}\"`,c,f=r.prog,p=r.args||\"\",h=DY(r.nodePath).win32;f?(c=`\"%~dp0\\\\${f}.exe\"`,a=n):(f=n,p=\"\",a=\"\");let E=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",C=h?`@SET NODE_PATH=${h}\\r\n`:\"\";return c?C+=`@IF EXIST ${c} (\\r\n  ${c} ${p} ${a} ${E}%*\\r\n) ELSE (\\r\n  @SETLOCAL\\r\n  @SET PATHEXT=%PATHEXT:;.JS;=;%\\r\n  ${f} ${p} ${a} ${E}%*\\r\n)\\r\n`:C+=`@${f} ${p} ${a} ${E}%*\\r\n`,C}function Ndt(t,e,r){let s=Vc.relative(Vc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n;s=s.split(\"\\\\\").join(\"/\");let c=Vc.isAbsolute(s)?`\"${s}\"`:`\"$basedir/${s}\"`,f=r.args||\"\",p=DY(r.nodePath).posix;a?(n=`\"$basedir/${r.prog}\"`,s=c):(a=c,f=\"\",s=\"\");let h=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",E=`#!/bin/sh\nbasedir=$(dirname \"$(echo \"$0\" | sed -e 's,\\\\\\\\,/,g')\")\n\ncase \\`uname\\` in\n    *CYGWIN*) basedir=\\`cygpath -w \"$basedir\"\\`;;\nesac\n\n`,C=r.nodePath?`export NODE_PATH=\"${p}\"\n`:\"\";return n?E+=`${C}if [ -x ${n} ]; then\n  exec ${n} ${f} ${s} ${h}\"$@\"\nelse\n  exec ${a} ${f} ${s} ${h}\"$@\"\nfi\n`:E+=`${C}${a} ${f} ${s} ${h}\"$@\"\nexit $?\n`,E}function Odt(t,e,r){let s=Vc.relative(Vc.dirname(e),t),a=r.prog&&r.prog.split(\"\\\\\").join(\"/\"),n=a&&`\"${a}$exe\"`,c;s=s.split(\"\\\\\").join(\"/\");let f=Vc.isAbsolute(s)?`\"${s}\"`:`\"$basedir/${s}\"`,p=r.args||\"\",h=DY(r.nodePath),E=h.win32,C=h.posix;n?(c=`\"$basedir/${r.prog}$exe\"`,s=f):(n=f,p=\"\",s=\"\");let S=r.progArgs?`${r.progArgs.join(\" \")} `:\"\",P=`#!/usr/bin/env pwsh\n$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent\n\n$exe=\"\"\n${r.nodePath?`$env_node_path=$env:NODE_PATH\n$env:NODE_PATH=\"${E}\"\n`:\"\"}if ($PSVersionTable.PSVersion -lt \"6.0\" -or $IsWindows) {\n  # Fix case when both the Windows and Linux builds of Node\n  # are installed in the same directory\n  $exe=\".exe\"\n}`;return r.nodePath&&(P+=` else {\n  $env:NODE_PATH=\"${C}\"\n}`),c?P+=`\n$ret=0\nif (Test-Path ${c}) {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${c} ${p} ${s} ${S}$args\n  } else {\n    & ${c} ${p} ${s} ${S}$args\n  }\n  $ret=$LASTEXITCODE\n} else {\n  # Support pipeline input\n  if ($MyInvocation.ExpectingInput) {\n    $input | & ${n} ${p} ${s} ${S}$args\n  } else {\n    & ${n} ${p} ${s} ${S}$args\n  }\n  $ret=$LASTEXITCODE\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $ret\n`:P+=`\n# Support pipeline input\nif ($MyInvocation.ExpectingInput) {\n  $input | & ${n} ${p} ${s} ${S}$args\n} else {\n  & ${n} ${p} ${s} ${S}$args\n}\n${r.nodePath?`$env:NODE_PATH=$env_node_path\n`:\"\"}exit $LASTEXITCODE\n`,P}function Ldt(t,e){return e.fs_.chmod(t,493)}function DY(t){if(!t)return{win32:\"\",posix:\"\"};let e=typeof t==\"string\"?t.split(Vc.delimiter):Array.from(t),r={};for(let s=0;s<e.length;s++){let a=e[s].split(\"/\").join(\"\\\\\"),n=RBe()?e[s].split(\"\\\\\").join(\"/\").replace(/^([^:\\\\/]*):/,(c,f)=>`/mnt/${f.toLowerCase()}`):e[s];r.win32=r.win32?`${r.win32};${a}`:a,r.posix=r.posix?`${r.posix}:${n}`:n,r[s]={win32:a,posix:n}}return r}NBe.exports=SY});var _Y=_((_tr,tve)=>{tve.exports=Ie(\"stream\")});var sve=_((Htr,ive)=>{\"use strict\";function rve(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function mmt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?rve(Object(r),!0).forEach(function(s){ymt(t,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):rve(Object(r)).forEach(function(s){Object.defineProperty(t,s,Object.getOwnPropertyDescriptor(r,s))})}return t}function ymt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}function Emt(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}function nve(t,e){for(var r=0;r<e.length;r++){var s=e[r];s.enumerable=s.enumerable||!1,s.configurable=!0,\"value\"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}function Imt(t,e,r){return e&&nve(t.prototype,e),r&&nve(t,r),t}var Cmt=Ie(\"buffer\"),pN=Cmt.Buffer,wmt=Ie(\"util\"),HY=wmt.inspect,Bmt=HY&&HY.custom||\"inspect\";function vmt(t,e,r){pN.prototype.copy.call(t,e,r)}ive.exports=function(){function t(){Emt(this,t),this.head=null,this.tail=null,this.length=0}return Imt(t,[{key:\"push\",value:function(r){var s={data:r,next:null};this.length>0?this.tail.next=s:this.head=s,this.tail=s,++this.length}},{key:\"unshift\",value:function(r){var s={data:r,next:this.head};this.length===0&&(this.tail=s),this.head=s,++this.length}},{key:\"shift\",value:function(){if(this.length!==0){var r=this.head.data;return this.length===1?this.head=this.tail=null:this.head=this.head.next,--this.length,r}}},{key:\"clear\",value:function(){this.head=this.tail=null,this.length=0}},{key:\"join\",value:function(r){if(this.length===0)return\"\";for(var s=this.head,a=\"\"+s.data;s=s.next;)a+=r+s.data;return a}},{key:\"concat\",value:function(r){if(this.length===0)return pN.alloc(0);for(var s=pN.allocUnsafe(r>>>0),a=this.head,n=0;a;)vmt(a.data,s,n),n+=a.data.length,a=a.next;return s}},{key:\"consume\",value:function(r,s){var a;return r<this.head.data.length?(a=this.head.data.slice(0,r),this.head.data=this.head.data.slice(r)):r===this.head.data.length?a=this.shift():a=s?this._getString(r):this._getBuffer(r),a}},{key:\"first\",value:function(){return this.head.data}},{key:\"_getString\",value:function(r){var s=this.head,a=1,n=s.data;for(r-=n.length;s=s.next;){var c=s.data,f=r>c.length?c.length:r;if(f===c.length?n+=c:n+=c.slice(0,r),r-=f,r===0){f===c.length?(++a,s.next?this.head=s.next:this.head=this.tail=null):(this.head=s,s.data=c.slice(f));break}++a}return this.length-=a,n}},{key:\"_getBuffer\",value:function(r){var s=pN.allocUnsafe(r),a=this.head,n=1;for(a.data.copy(s),r-=a.data.length;a=a.next;){var c=a.data,f=r>c.length?c.length:r;if(c.copy(s,s.length-r,0,f),r-=f,r===0){f===c.length?(++n,a.next?this.head=a.next:this.head=this.tail=null):(this.head=a,a.data=c.slice(f));break}++n}return this.length-=n,s}},{key:Bmt,value:function(r,s){return HY(this,mmt({},s,{depth:0,customInspect:!1}))}}]),t}()});var GY=_((jtr,ave)=>{\"use strict\";function Smt(t,e){var r=this,s=this._readableState&&this._readableState.destroyed,a=this._writableState&&this._writableState.destroyed;return s||a?(e?e(t):t&&(this._writableState?this._writableState.errorEmitted||(this._writableState.errorEmitted=!0,process.nextTick(jY,this,t)):process.nextTick(jY,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(hN,r):(r._writableState.errorEmitted=!0,process.nextTick(ove,r,n)):process.nextTick(ove,r,n):e?(process.nextTick(hN,r),e(n)):process.nextTick(hN,r)}),this)}function ove(t,e){jY(t,e),hN(t)}function hN(t){t._writableState&&!t._writableState.emitClose||t._readableState&&!t._readableState.emitClose||t.emit(\"close\")}function Dmt(){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 jY(t,e){t.emit(\"error\",e)}function bmt(t,e){var r=t._readableState,s=t._writableState;r&&r.autoDestroy||s&&s.autoDestroy?t.destroy(e):t.emit(\"error\",e)}ave.exports={destroy:Smt,undestroy:Dmt,errorOrDestroy:bmt}});var lg=_((Gtr,uve)=>{\"use strict\";var cve={};function Kc(t,e,r){r||(r=Error);function s(n,c,f){return typeof e==\"string\"?e:e(n,c,f)}class a extends r{constructor(c,f,p){super(s(c,f,p))}}a.prototype.name=r.name,a.prototype.code=t,cve[t]=a}function lve(t,e){if(Array.isArray(t)){let r=t.length;return t=t.map(s=>String(s)),r>2?`one of ${e} ${t.slice(0,r-1).join(\", \")}, or `+t[r-1]:r===2?`one of ${e} ${t[0]} or ${t[1]}`:`of ${e} ${t[0]}`}else return`of ${e} ${String(t)}`}function Pmt(t,e,r){return t.substr(!r||r<0?0:+r,e.length)===e}function xmt(t,e,r){return(r===void 0||r>t.length)&&(r=t.length),t.substring(r-e.length,r)===e}function kmt(t,e,r){return typeof r!=\"number\"&&(r=0),r+e.length>t.length?!1:t.indexOf(e,r)!==-1}Kc(\"ERR_INVALID_OPT_VALUE\",function(t,e){return'The value \"'+e+'\" is invalid for option \"'+t+'\"'},TypeError);Kc(\"ERR_INVALID_ARG_TYPE\",function(t,e,r){let s;typeof e==\"string\"&&Pmt(e,\"not \")?(s=\"must not be\",e=e.replace(/^not /,\"\")):s=\"must be\";let a;if(xmt(t,\" argument\"))a=`The ${t} ${s} ${lve(e,\"type\")}`;else{let n=kmt(t,\".\")?\"property\":\"argument\";a=`The \"${t}\" ${n} ${s} ${lve(e,\"type\")}`}return a+=`. Received type ${typeof r}`,a},TypeError);Kc(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\");Kc(\"ERR_METHOD_NOT_IMPLEMENTED\",function(t){return\"The \"+t+\" method is not implemented\"});Kc(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\");Kc(\"ERR_STREAM_DESTROYED\",function(t){return\"Cannot call \"+t+\" after a stream was destroyed\"});Kc(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\");Kc(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\");Kc(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\");Kc(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);Kc(\"ERR_UNKNOWN_ENCODING\",function(t){return\"Unknown encoding: \"+t},TypeError);Kc(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\");uve.exports.codes=cve});var qY=_((qtr,fve)=>{\"use strict\";var Qmt=lg().codes.ERR_INVALID_OPT_VALUE;function Tmt(t,e,r){return t.highWaterMark!=null?t.highWaterMark:e?t[r]:null}function Rmt(t,e,r,s){var a=Tmt(e,s,r);if(a!=null){if(!(isFinite(a)&&Math.floor(a)===a)||a<0){var n=s?r:\"highWaterMark\";throw new Qmt(n,a)}return Math.floor(a)}return t.objectMode?16:16*1024}fve.exports={getHighWaterMark:Rmt}});var Ave=_((Wtr,WY)=>{typeof Object.create==\"function\"?WY.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:WY.exports=function(e,r){if(r){e.super_=r;var s=function(){};s.prototype=r.prototype,e.prototype=new s,e.prototype.constructor=e}}});var cg=_((Ytr,VY)=>{try{if(YY=Ie(\"util\"),typeof YY.inherits!=\"function\")throw\"\";VY.exports=YY.inherits}catch{VY.exports=Ave()}var YY});var hve=_((Vtr,pve)=>{pve.exports=Ie(\"util\").deprecate});var zY=_((Jtr,Ive)=>{\"use strict\";Ive.exports=Vi;function dve(t){var e=this;this.next=null,this.entry=null,this.finish=function(){oyt(e,t)}}var Tw;Vi.WritableState=ZD;var Fmt={deprecate:hve()},mve=_Y(),dN=Ie(\"buffer\").Buffer,Nmt=global.Uint8Array||function(){};function Omt(t){return dN.from(t)}function Lmt(t){return dN.isBuffer(t)||t instanceof Nmt}var KY=GY(),Mmt=qY(),Umt=Mmt.getHighWaterMark,ug=lg().codes,_mt=ug.ERR_INVALID_ARG_TYPE,Hmt=ug.ERR_METHOD_NOT_IMPLEMENTED,jmt=ug.ERR_MULTIPLE_CALLBACK,Gmt=ug.ERR_STREAM_CANNOT_PIPE,qmt=ug.ERR_STREAM_DESTROYED,Wmt=ug.ERR_STREAM_NULL_VALUES,Ymt=ug.ERR_STREAM_WRITE_AFTER_END,Vmt=ug.ERR_UNKNOWN_ENCODING,Rw=KY.errorOrDestroy;cg()(Vi,mve);function Jmt(){}function ZD(t,e,r){Tw=Tw||Ym(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof Tw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.writableObjectMode),this.highWaterMark=Umt(this,t,\"writableHighWaterMark\",r),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;var s=t.decodeStrings===!1;this.decodeStrings=!s,this.defaultEncoding=t.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=function(a){tyt(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 dve(this)}ZD.prototype.getBuffer=function(){for(var e=this.bufferedRequest,r=[];e;)r.push(e),e=e.next;return r};(function(){try{Object.defineProperty(ZD.prototype,\"buffer\",{get:Fmt.deprecate(function(){return this.getBuffer()},\"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.\",\"DEP0003\")})}catch{}})();var gN;typeof Symbol==\"function\"&&Symbol.hasInstance&&typeof Function.prototype[Symbol.hasInstance]==\"function\"?(gN=Function.prototype[Symbol.hasInstance],Object.defineProperty(Vi,Symbol.hasInstance,{value:function(e){return gN.call(this,e)?!0:this!==Vi?!1:e&&e._writableState instanceof ZD}})):gN=function(e){return e instanceof this};function Vi(t){Tw=Tw||Ym();var e=this instanceof Tw;if(!e&&!gN.call(Vi,this))return new Vi(t);this._writableState=new ZD(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)),mve.call(this)}Vi.prototype.pipe=function(){Rw(this,new Gmt)};function Kmt(t,e){var r=new Ymt;Rw(t,r),process.nextTick(e,r)}function zmt(t,e,r,s){var a;return r===null?a=new Wmt:typeof r!=\"string\"&&!e.objectMode&&(a=new _mt(\"chunk\",[\"string\",\"Buffer\"],r)),a?(Rw(t,a),process.nextTick(s,a),!1):!0}Vi.prototype.write=function(t,e,r){var s=this._writableState,a=!1,n=!s.objectMode&&Lmt(t);return n&&!dN.isBuffer(t)&&(t=Omt(t)),typeof e==\"function\"&&(r=e,e=null),n?e=\"buffer\":e||(e=s.defaultEncoding),typeof r!=\"function\"&&(r=Jmt),s.ending?Kmt(this,r):(n||zmt(this,s,t,r))&&(s.pendingcb++,a=Zmt(this,s,n,t,e,r)),a};Vi.prototype.cork=function(){this._writableState.corked++};Vi.prototype.uncork=function(){var t=this._writableState;t.corked&&(t.corked--,!t.writing&&!t.corked&&!t.bufferProcessing&&t.bufferedRequest&&yve(this,t))};Vi.prototype.setDefaultEncoding=function(e){if(typeof e==\"string\"&&(e=e.toLowerCase()),!([\"hex\",\"utf8\",\"utf-8\",\"ascii\",\"binary\",\"base64\",\"ucs2\",\"ucs-2\",\"utf16le\",\"utf-16le\",\"raw\"].indexOf((e+\"\").toLowerCase())>-1))throw new Vmt(e);return this._writableState.defaultEncoding=e,this};Object.defineProperty(Vi.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});function Xmt(t,e,r){return!t.objectMode&&t.decodeStrings!==!1&&typeof e==\"string\"&&(e=dN.from(e,r)),e}Object.defineProperty(Vi.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});function Zmt(t,e,r,s,a,n){if(!r){var c=Xmt(e,s,a);s!==c&&(r=!0,a=\"buffer\",s=c)}var f=e.objectMode?1:s.length;e.length+=f;var p=e.length<e.highWaterMark;if(p||(e.needDrain=!0),e.writing||e.corked){var h=e.lastBufferedRequest;e.lastBufferedRequest={chunk:s,encoding:a,isBuf:r,callback:n,next:null},h?h.next=e.lastBufferedRequest:e.bufferedRequest=e.lastBufferedRequest,e.bufferedRequestCount+=1}else JY(t,e,!1,f,s,a,n);return p}function JY(t,e,r,s,a,n,c){e.writelen=s,e.writecb=c,e.writing=!0,e.sync=!0,e.destroyed?e.onwrite(new qmt(\"write\")):r?t._writev(a,e.onwrite):t._write(a,n,e.onwrite),e.sync=!1}function $mt(t,e,r,s,a){--e.pendingcb,r?(process.nextTick(a,s),process.nextTick(XD,t,e),t._writableState.errorEmitted=!0,Rw(t,s)):(a(s),t._writableState.errorEmitted=!0,Rw(t,s),XD(t,e))}function eyt(t){t.writing=!1,t.writecb=null,t.length-=t.writelen,t.writelen=0}function tyt(t,e){var r=t._writableState,s=r.sync,a=r.writecb;if(typeof a!=\"function\")throw new jmt;if(eyt(r),e)$mt(t,r,s,e,a);else{var n=Eve(r)||t.destroyed;!n&&!r.corked&&!r.bufferProcessing&&r.bufferedRequest&&yve(t,r),s?process.nextTick(gve,t,r,n,a):gve(t,r,n,a)}}function gve(t,e,r,s){r||ryt(t,e),e.pendingcb--,s(),XD(t,e)}function ryt(t,e){e.length===0&&e.needDrain&&(e.needDrain=!1,t.emit(\"drain\"))}function yve(t,e){e.bufferProcessing=!0;var r=e.bufferedRequest;if(t._writev&&r&&r.next){var s=e.bufferedRequestCount,a=new Array(s),n=e.corkedRequestsFree;n.entry=r;for(var c=0,f=!0;r;)a[c]=r,r.isBuf||(f=!1),r=r.next,c+=1;a.allBuffers=f,JY(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 dve(e),e.bufferedRequestCount=0}else{for(;r;){var p=r.chunk,h=r.encoding,E=r.callback,C=e.objectMode?1:p.length;if(JY(t,e,!1,C,p,h,E),r=r.next,e.bufferedRequestCount--,e.writing)break}r===null&&(e.lastBufferedRequest=null)}e.bufferedRequest=r,e.bufferProcessing=!1}Vi.prototype._write=function(t,e,r){r(new Hmt(\"_write()\"))};Vi.prototype._writev=null;Vi.prototype.end=function(t,e,r){var s=this._writableState;return typeof t==\"function\"?(r=t,t=null,e=null):typeof e==\"function\"&&(r=e,e=null),t!=null&&this.write(t,e),s.corked&&(s.corked=1,this.uncork()),s.ending||syt(this,s,r),this};Object.defineProperty(Vi.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function Eve(t){return t.ending&&t.length===0&&t.bufferedRequest===null&&!t.finished&&!t.writing}function nyt(t,e){t._final(function(r){e.pendingcb--,r&&Rw(t,r),e.prefinished=!0,t.emit(\"prefinish\"),XD(t,e)})}function iyt(t,e){!e.prefinished&&!e.finalCalled&&(typeof t._final==\"function\"&&!e.destroyed?(e.pendingcb++,e.finalCalled=!0,process.nextTick(nyt,t,e)):(e.prefinished=!0,t.emit(\"prefinish\")))}function XD(t,e){var r=Eve(e);if(r&&(iyt(t,e),e.pendingcb===0&&(e.finished=!0,t.emit(\"finish\"),e.autoDestroy))){var s=t._readableState;(!s||s.autoDestroy&&s.endEmitted)&&t.destroy()}return r}function syt(t,e,r){e.ending=!0,XD(t,e),r&&(e.finished?process.nextTick(r):t.once(\"finish\",r)),e.ended=!0,t.writable=!1}function oyt(t,e,r){var s=t.entry;for(t.entry=null;s;){var a=s.callback;e.pendingcb--,a(r),s=s.next}e.corkedRequestsFree.next=t}Object.defineProperty(Vi.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._writableState===void 0?!1:this._writableState.destroyed},set:function(e){this._writableState&&(this._writableState.destroyed=e)}});Vi.prototype.destroy=KY.destroy;Vi.prototype._undestroy=KY.undestroy;Vi.prototype._destroy=function(t,e){e(t)}});var Ym=_((Ktr,wve)=>{\"use strict\";var ayt=Object.keys||function(t){var e=[];for(var r in t)e.push(r);return e};wve.exports=dA;var Cve=$Y(),ZY=zY();cg()(dA,Cve);for(XY=ayt(ZY.prototype),mN=0;mN<XY.length;mN++)yN=XY[mN],dA.prototype[yN]||(dA.prototype[yN]=ZY.prototype[yN]);var XY,yN,mN;function dA(t){if(!(this instanceof dA))return new dA(t);Cve.call(this,t),ZY.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\",lyt)))}Object.defineProperty(dA.prototype,\"writableHighWaterMark\",{enumerable:!1,get:function(){return this._writableState.highWaterMark}});Object.defineProperty(dA.prototype,\"writableBuffer\",{enumerable:!1,get:function(){return this._writableState&&this._writableState.getBuffer()}});Object.defineProperty(dA.prototype,\"writableLength\",{enumerable:!1,get:function(){return this._writableState.length}});function lyt(){this._writableState.ended||process.nextTick(cyt,this)}function cyt(t){t.end()}Object.defineProperty(dA.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 Sve=_((eV,vve)=>{var EN=Ie(\"buffer\"),ah=EN.Buffer;function Bve(t,e){for(var r in t)e[r]=t[r]}ah.from&&ah.alloc&&ah.allocUnsafe&&ah.allocUnsafeSlow?vve.exports=EN:(Bve(EN,eV),eV.Buffer=Fw);function Fw(t,e,r){return ah(t,e,r)}Bve(ah,Fw);Fw.from=function(t,e,r){if(typeof t==\"number\")throw new TypeError(\"Argument must not be a number\");return ah(t,e,r)};Fw.alloc=function(t,e,r){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");var s=ah(t);return e!==void 0?typeof r==\"string\"?s.fill(e,r):s.fill(e):s.fill(0),s};Fw.allocUnsafe=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return ah(t)};Fw.allocUnsafeSlow=function(t){if(typeof t!=\"number\")throw new TypeError(\"Argument must be a number\");return EN.SlowBuffer(t)}});var nV=_(bve=>{\"use strict\";var rV=Sve().Buffer,Dve=rV.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 uyt(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 fyt(t){var e=uyt(t);if(typeof e!=\"string\"&&(rV.isEncoding===Dve||!Dve(t)))throw new Error(\"Unknown encoding: \"+t);return e||t}bve.StringDecoder=$D;function $D(t){this.encoding=fyt(t);var e;switch(this.encoding){case\"utf16le\":this.text=myt,this.end=yyt,e=4;break;case\"utf8\":this.fillLast=hyt,e=4;break;case\"base64\":this.text=Eyt,this.end=Iyt,e=3;break;default:this.write=Cyt,this.end=wyt;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=rV.allocUnsafe(e)}$D.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||\"\"};$D.prototype.end=dyt;$D.prototype.text=gyt;$D.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 tV(t){return t<=127?0:t>>5===6?2:t>>4===14?3:t>>3===30?4:t>>6===2?-1:-2}function Ayt(t,e,r){var s=e.length-1;if(s<r)return 0;var a=tV(e[s]);return a>=0?(a>0&&(t.lastNeed=a-1),a):--s<r||a===-2?0:(a=tV(e[s]),a>=0?(a>0&&(t.lastNeed=a-2),a):--s<r||a===-2?0:(a=tV(e[s]),a>=0?(a>0&&(a===2?a=0:t.lastNeed=a-3),a):0))}function pyt(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 hyt(t){var e=this.lastTotal-this.lastNeed,r=pyt(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 gyt(t,e){var r=Ayt(this,t,e);if(!this.lastNeed)return t.toString(\"utf8\",e);this.lastTotal=r;var s=t.length-(r-this.lastNeed);return t.copy(this.lastChar,0,s),t.toString(\"utf8\",e,s)}function dyt(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+\"\\uFFFD\":e}function myt(t,e){if((t.length-e)%2===0){var r=t.toString(\"utf16le\",e);if(r){var s=r.charCodeAt(r.length-1);if(s>=55296&&s<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=t[t.length-2],this.lastChar[1]=t[t.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=t[t.length-1],t.toString(\"utf16le\",e,t.length-1)}function yyt(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 Eyt(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 Iyt(t){var e=t&&t.length?this.write(t):\"\";return this.lastNeed?e+this.lastChar.toString(\"base64\",0,3-this.lastNeed):e}function Cyt(t){return t.toString(this.encoding)}function wyt(t){return t&&t.length?this.write(t):\"\"}});var IN=_((Xtr,kve)=>{\"use strict\";var Pve=lg().codes.ERR_STREAM_PREMATURE_CLOSE;function Byt(t){var e=!1;return function(){if(!e){e=!0;for(var r=arguments.length,s=new Array(r),a=0;a<r;a++)s[a]=arguments[a];t.apply(this,s)}}}function vyt(){}function Syt(t){return t.setHeader&&typeof t.abort==\"function\"}function xve(t,e,r){if(typeof e==\"function\")return xve(t,null,e);e||(e={}),r=Byt(r||vyt);var s=e.readable||e.readable!==!1&&t.readable,a=e.writable||e.writable!==!1&&t.writable,n=function(){t.writable||f()},c=t._writableState&&t._writableState.finished,f=function(){a=!1,c=!0,s||r.call(t)},p=t._readableState&&t._readableState.endEmitted,h=function(){s=!1,p=!0,a||r.call(t)},E=function(I){r.call(t,I)},C=function(){var I;if(s&&!p)return(!t._readableState||!t._readableState.ended)&&(I=new Pve),r.call(t,I);if(a&&!c)return(!t._writableState||!t._writableState.ended)&&(I=new Pve),r.call(t,I)},S=function(){t.req.on(\"finish\",f)};return Syt(t)?(t.on(\"complete\",f),t.on(\"abort\",C),t.req?S():t.on(\"request\",S)):a&&!t._writableState&&(t.on(\"end\",n),t.on(\"close\",n)),t.on(\"end\",h),t.on(\"finish\",f),e.error!==!1&&t.on(\"error\",E),t.on(\"close\",C),function(){t.removeListener(\"complete\",f),t.removeListener(\"abort\",C),t.removeListener(\"request\",S),t.req&&t.req.removeListener(\"finish\",f),t.removeListener(\"end\",n),t.removeListener(\"close\",n),t.removeListener(\"finish\",f),t.removeListener(\"end\",h),t.removeListener(\"error\",E),t.removeListener(\"close\",C)}}kve.exports=xve});var Tve=_((Ztr,Qve)=>{\"use strict\";var CN;function fg(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var Dyt=IN(),Ag=Symbol(\"lastResolve\"),Vm=Symbol(\"lastReject\"),eb=Symbol(\"error\"),wN=Symbol(\"ended\"),Jm=Symbol(\"lastPromise\"),iV=Symbol(\"handlePromise\"),Km=Symbol(\"stream\");function pg(t,e){return{value:t,done:e}}function byt(t){var e=t[Ag];if(e!==null){var r=t[Km].read();r!==null&&(t[Jm]=null,t[Ag]=null,t[Vm]=null,e(pg(r,!1)))}}function Pyt(t){process.nextTick(byt,t)}function xyt(t,e){return function(r,s){t.then(function(){if(e[wN]){r(pg(void 0,!0));return}e[iV](r,s)},s)}}var kyt=Object.getPrototypeOf(function(){}),Qyt=Object.setPrototypeOf((CN={get stream(){return this[Km]},next:function(){var e=this,r=this[eb];if(r!==null)return Promise.reject(r);if(this[wN])return Promise.resolve(pg(void 0,!0));if(this[Km].destroyed)return new Promise(function(c,f){process.nextTick(function(){e[eb]?f(e[eb]):c(pg(void 0,!0))})});var s=this[Jm],a;if(s)a=new Promise(xyt(s,this));else{var n=this[Km].read();if(n!==null)return Promise.resolve(pg(n,!1));a=new Promise(this[iV])}return this[Jm]=a,a}},fg(CN,Symbol.asyncIterator,function(){return this}),fg(CN,\"return\",function(){var e=this;return new Promise(function(r,s){e[Km].destroy(null,function(a){if(a){s(a);return}r(pg(void 0,!0))})})}),CN),kyt),Tyt=function(e){var r,s=Object.create(Qyt,(r={},fg(r,Km,{value:e,writable:!0}),fg(r,Ag,{value:null,writable:!0}),fg(r,Vm,{value:null,writable:!0}),fg(r,eb,{value:null,writable:!0}),fg(r,wN,{value:e._readableState.endEmitted,writable:!0}),fg(r,iV,{value:function(n,c){var f=s[Km].read();f?(s[Jm]=null,s[Ag]=null,s[Vm]=null,n(pg(f,!1))):(s[Ag]=n,s[Vm]=c)},writable:!0}),r));return s[Jm]=null,Dyt(e,function(a){if(a&&a.code!==\"ERR_STREAM_PREMATURE_CLOSE\"){var n=s[Vm];n!==null&&(s[Jm]=null,s[Ag]=null,s[Vm]=null,n(a)),s[eb]=a;return}var c=s[Ag];c!==null&&(s[Jm]=null,s[Ag]=null,s[Vm]=null,c(pg(void 0,!0))),s[wN]=!0}),e.on(\"readable\",Pyt.bind(null,s)),s};Qve.exports=Tyt});var Ove=_(($tr,Nve)=>{\"use strict\";function Rve(t,e,r,s,a,n,c){try{var f=t[n](c),p=f.value}catch(h){r(h);return}f.done?e(p):Promise.resolve(p).then(s,a)}function Ryt(t){return function(){var e=this,r=arguments;return new Promise(function(s,a){var n=t.apply(e,r);function c(p){Rve(n,s,a,c,f,\"next\",p)}function f(p){Rve(n,s,a,c,f,\"throw\",p)}c(void 0)})}}function Fve(t,e){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(t);e&&(s=s.filter(function(a){return Object.getOwnPropertyDescriptor(t,a).enumerable})),r.push.apply(r,s)}return r}function Fyt(t){for(var e=1;e<arguments.length;e++){var r=arguments[e]!=null?arguments[e]:{};e%2?Fve(Object(r),!0).forEach(function(s){Nyt(t,s,r[s])}):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):Fve(Object(r)).forEach(function(s){Object.defineProperty(t,s,Object.getOwnPropertyDescriptor(r,s))})}return t}function Nyt(t,e,r){return e in t?Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}):t[e]=r,t}var Oyt=lg().codes.ERR_INVALID_ARG_TYPE;function Lyt(t,e,r){var s;if(e&&typeof e.next==\"function\")s=e;else if(e&&e[Symbol.asyncIterator])s=e[Symbol.asyncIterator]();else if(e&&e[Symbol.iterator])s=e[Symbol.iterator]();else throw new Oyt(\"iterable\",[\"Iterable\"],e);var a=new t(Fyt({objectMode:!0},r)),n=!1;a._read=function(){n||(n=!0,c())};function c(){return f.apply(this,arguments)}function f(){return f=Ryt(function*(){try{var p=yield s.next(),h=p.value,E=p.done;E?a.push(null):a.push(yield h)?c():n=!1}catch(C){a.destroy(C)}}),f.apply(this,arguments)}return a}Nve.exports=Lyt});var $Y=_((rrr,Yve)=>{\"use strict\";Yve.exports=Pn;var Nw;Pn.ReadableState=_ve;var trr=Ie(\"events\").EventEmitter,Uve=function(e,r){return e.listeners(r).length},rb=_Y(),BN=Ie(\"buffer\").Buffer,Myt=global.Uint8Array||function(){};function Uyt(t){return BN.from(t)}function _yt(t){return BN.isBuffer(t)||t instanceof Myt}var sV=Ie(\"util\"),cn;sV&&sV.debuglog?cn=sV.debuglog(\"stream\"):cn=function(){};var Hyt=sve(),AV=GY(),jyt=qY(),Gyt=jyt.getHighWaterMark,vN=lg().codes,qyt=vN.ERR_INVALID_ARG_TYPE,Wyt=vN.ERR_STREAM_PUSH_AFTER_EOF,Yyt=vN.ERR_METHOD_NOT_IMPLEMENTED,Vyt=vN.ERR_STREAM_UNSHIFT_AFTER_END_EVENT,Ow,oV,aV;cg()(Pn,rb);var tb=AV.errorOrDestroy,lV=[\"error\",\"close\",\"destroy\",\"pause\",\"resume\"];function Jyt(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 _ve(t,e,r){Nw=Nw||Ym(),t=t||{},typeof r!=\"boolean\"&&(r=e instanceof Nw),this.objectMode=!!t.objectMode,r&&(this.objectMode=this.objectMode||!!t.readableObjectMode),this.highWaterMark=Gyt(this,t,\"readableHighWaterMark\",r),this.buffer=new Hyt,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&&(Ow||(Ow=nV().StringDecoder),this.decoder=new Ow(t.encoding),this.encoding=t.encoding)}function Pn(t){if(Nw=Nw||Ym(),!(this instanceof Pn))return new Pn(t);var e=this instanceof Nw;this._readableState=new _ve(t,this,e),this.readable=!0,t&&(typeof t.read==\"function\"&&(this._read=t.read),typeof t.destroy==\"function\"&&(this._destroy=t.destroy)),rb.call(this)}Object.defineProperty(Pn.prototype,\"destroyed\",{enumerable:!1,get:function(){return this._readableState===void 0?!1:this._readableState.destroyed},set:function(e){this._readableState&&(this._readableState.destroyed=e)}});Pn.prototype.destroy=AV.destroy;Pn.prototype._undestroy=AV.undestroy;Pn.prototype._destroy=function(t,e){e(t)};Pn.prototype.push=function(t,e){var r=this._readableState,s;return r.objectMode?s=!0:typeof t==\"string\"&&(e=e||r.defaultEncoding,e!==r.encoding&&(t=BN.from(t,e),e=\"\"),s=!0),Hve(this,t,e,!1,s)};Pn.prototype.unshift=function(t){return Hve(this,t,null,!0,!1)};function Hve(t,e,r,s,a){cn(\"readableAddChunk\",e);var n=t._readableState;if(e===null)n.reading=!1,Xyt(t,n);else{var c;if(a||(c=Kyt(n,e)),c)tb(t,c);else if(n.objectMode||e&&e.length>0)if(typeof e!=\"string\"&&!n.objectMode&&Object.getPrototypeOf(e)!==BN.prototype&&(e=Uyt(e)),s)n.endEmitted?tb(t,new Vyt):cV(t,n,e,!0);else if(n.ended)tb(t,new Wyt);else{if(n.destroyed)return!1;n.reading=!1,n.decoder&&!r?(e=n.decoder.write(e),n.objectMode||e.length!==0?cV(t,n,e,!1):fV(t,n)):cV(t,n,e,!1)}else s||(n.reading=!1,fV(t,n))}return!n.ended&&(n.length<n.highWaterMark||n.length===0)}function cV(t,e,r,s){e.flowing&&e.length===0&&!e.sync?(e.awaitDrain=0,t.emit(\"data\",r)):(e.length+=e.objectMode?1:r.length,s?e.buffer.unshift(r):e.buffer.push(r),e.needReadable&&SN(t)),fV(t,e)}function Kyt(t,e){var r;return!_yt(e)&&typeof e!=\"string\"&&e!==void 0&&!t.objectMode&&(r=new qyt(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],e)),r}Pn.prototype.isPaused=function(){return this._readableState.flowing===!1};Pn.prototype.setEncoding=function(t){Ow||(Ow=nV().StringDecoder);var e=new Ow(t);this._readableState.decoder=e,this._readableState.encoding=this._readableState.decoder.encoding;for(var r=this._readableState.buffer.head,s=\"\";r!==null;)s+=e.write(r.data),r=r.next;return this._readableState.buffer.clear(),s!==\"\"&&this._readableState.buffer.push(s),this._readableState.length=s.length,this};var Lve=1073741824;function zyt(t){return t>=Lve?t=Lve:(t--,t|=t>>>1,t|=t>>>2,t|=t>>>4,t|=t>>>8,t|=t>>>16,t++),t}function Mve(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=zyt(t)),t<=e.length?t:e.ended?e.length:(e.needReadable=!0,0))}Pn.prototype.read=function(t){cn(\"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 cn(\"read: emitReadable\",e.length,e.ended),e.length===0&&e.ended?uV(this):SN(this),null;if(t=Mve(t,e),t===0&&e.ended)return e.length===0&&uV(this),null;var s=e.needReadable;cn(\"need readable\",s),(e.length===0||e.length-t<e.highWaterMark)&&(s=!0,cn(\"length less than watermark\",s)),e.ended||e.reading?(s=!1,cn(\"reading or ended\",s)):s&&(cn(\"do read\"),e.reading=!0,e.sync=!0,e.length===0&&(e.needReadable=!0),this._read(e.highWaterMark),e.sync=!1,e.reading||(t=Mve(r,e)));var a;return t>0?a=qve(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&&uV(this)),a!==null&&this.emit(\"data\",a),a};function Xyt(t,e){if(cn(\"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?SN(t):(e.needReadable=!1,e.emittedReadable||(e.emittedReadable=!0,jve(t)))}}function SN(t){var e=t._readableState;cn(\"emitReadable\",e.needReadable,e.emittedReadable),e.needReadable=!1,e.emittedReadable||(cn(\"emitReadable\",e.flowing),e.emittedReadable=!0,process.nextTick(jve,t))}function jve(t){var e=t._readableState;cn(\"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,pV(t)}function fV(t,e){e.readingMore||(e.readingMore=!0,process.nextTick(Zyt,t,e))}function Zyt(t,e){for(;!e.reading&&!e.ended&&(e.length<e.highWaterMark||e.flowing&&e.length===0);){var r=e.length;if(cn(\"maybeReadMore read 0\"),t.read(0),r===e.length)break}e.readingMore=!1}Pn.prototype._read=function(t){tb(this,new Yyt(\"_read()\"))};Pn.prototype.pipe=function(t,e){var r=this,s=this._readableState;switch(s.pipesCount){case 0:s.pipes=t;break;case 1:s.pipes=[s.pipes,t];break;default:s.pipes.push(t);break}s.pipesCount+=1,cn(\"pipe count=%d opts=%j\",s.pipesCount,e);var a=(!e||e.end!==!1)&&t!==process.stdout&&t!==process.stderr,n=a?f:R;s.endEmitted?process.nextTick(n):r.once(\"end\",n),t.on(\"unpipe\",c);function c(N,U){cn(\"onunpipe\"),N===r&&U&&U.hasUnpiped===!1&&(U.hasUnpiped=!0,E())}function f(){cn(\"onend\"),t.end()}var p=$yt(r);t.on(\"drain\",p);var h=!1;function E(){cn(\"cleanup\"),t.removeListener(\"close\",P),t.removeListener(\"finish\",I),t.removeListener(\"drain\",p),t.removeListener(\"error\",S),t.removeListener(\"unpipe\",c),r.removeListener(\"end\",f),r.removeListener(\"end\",R),r.removeListener(\"data\",C),h=!0,s.awaitDrain&&(!t._writableState||t._writableState.needDrain)&&p()}r.on(\"data\",C);function C(N){cn(\"ondata\");var U=t.write(N);cn(\"dest.write\",U),U===!1&&((s.pipesCount===1&&s.pipes===t||s.pipesCount>1&&Wve(s.pipes,t)!==-1)&&!h&&(cn(\"false write response, pause\",s.awaitDrain),s.awaitDrain++),r.pause())}function S(N){cn(\"onerror\",N),R(),t.removeListener(\"error\",S),Uve(t,\"error\")===0&&tb(t,N)}Jyt(t,\"error\",S);function P(){t.removeListener(\"finish\",I),R()}t.once(\"close\",P);function I(){cn(\"onfinish\"),t.removeListener(\"close\",P),R()}t.once(\"finish\",I);function R(){cn(\"unpipe\"),r.unpipe(t)}return t.emit(\"pipe\",r),s.flowing||(cn(\"pipe resume\"),r.resume()),t};function $yt(t){return function(){var r=t._readableState;cn(\"pipeOnDrain\",r.awaitDrain),r.awaitDrain&&r.awaitDrain--,r.awaitDrain===0&&Uve(t,\"data\")&&(r.flowing=!0,pV(t))}}Pn.prototype.unpipe=function(t){var e=this._readableState,r={hasUnpiped:!1};if(e.pipesCount===0)return this;if(e.pipesCount===1)return t&&t!==e.pipes?this:(t||(t=e.pipes),e.pipes=null,e.pipesCount=0,e.flowing=!1,t&&t.emit(\"unpipe\",this,r),this);if(!t){var s=e.pipes,a=e.pipesCount;e.pipes=null,e.pipesCount=0,e.flowing=!1;for(var n=0;n<a;n++)s[n].emit(\"unpipe\",this,{hasUnpiped:!1});return this}var c=Wve(e.pipes,t);return c===-1?this:(e.pipes.splice(c,1),e.pipesCount-=1,e.pipesCount===1&&(e.pipes=e.pipes[0]),t.emit(\"unpipe\",this,r),this)};Pn.prototype.on=function(t,e){var r=rb.prototype.on.call(this,t,e),s=this._readableState;return t===\"data\"?(s.readableListening=this.listenerCount(\"readable\")>0,s.flowing!==!1&&this.resume()):t===\"readable\"&&!s.endEmitted&&!s.readableListening&&(s.readableListening=s.needReadable=!0,s.flowing=!1,s.emittedReadable=!1,cn(\"on readable\",s.length,s.reading),s.length?SN(this):s.reading||process.nextTick(eEt,this)),r};Pn.prototype.addListener=Pn.prototype.on;Pn.prototype.removeListener=function(t,e){var r=rb.prototype.removeListener.call(this,t,e);return t===\"readable\"&&process.nextTick(Gve,this),r};Pn.prototype.removeAllListeners=function(t){var e=rb.prototype.removeAllListeners.apply(this,arguments);return(t===\"readable\"||t===void 0)&&process.nextTick(Gve,this),e};function Gve(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 eEt(t){cn(\"readable nexttick read 0\"),t.read(0)}Pn.prototype.resume=function(){var t=this._readableState;return t.flowing||(cn(\"resume\"),t.flowing=!t.readableListening,tEt(this,t)),t.paused=!1,this};function tEt(t,e){e.resumeScheduled||(e.resumeScheduled=!0,process.nextTick(rEt,t,e))}function rEt(t,e){cn(\"resume\",e.reading),e.reading||t.read(0),e.resumeScheduled=!1,t.emit(\"resume\"),pV(t),e.flowing&&!e.reading&&t.read(0)}Pn.prototype.pause=function(){return cn(\"call pause flowing=%j\",this._readableState.flowing),this._readableState.flowing!==!1&&(cn(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\")),this._readableState.paused=!0,this};function pV(t){var e=t._readableState;for(cn(\"flow\",e.flowing);e.flowing&&t.read()!==null;);}Pn.prototype.wrap=function(t){var e=this,r=this._readableState,s=!1;t.on(\"end\",function(){if(cn(\"wrapped end\"),r.decoder&&!r.ended){var c=r.decoder.end();c&&c.length&&e.push(c)}e.push(null)}),t.on(\"data\",function(c){if(cn(\"wrapped data\"),r.decoder&&(c=r.decoder.write(c)),!(r.objectMode&&c==null)&&!(!r.objectMode&&(!c||!c.length))){var f=e.push(c);f||(s=!0,t.pause())}});for(var a in t)this[a]===void 0&&typeof t[a]==\"function\"&&(this[a]=function(f){return function(){return t[f].apply(t,arguments)}}(a));for(var n=0;n<lV.length;n++)t.on(lV[n],this.emit.bind(this,lV[n]));return this._read=function(c){cn(\"wrapped _read\",c),s&&(s=!1,t.resume())},this};typeof Symbol==\"function\"&&(Pn.prototype[Symbol.asyncIterator]=function(){return oV===void 0&&(oV=Tve()),oV(this)});Object.defineProperty(Pn.prototype,\"readableHighWaterMark\",{enumerable:!1,get:function(){return this._readableState.highWaterMark}});Object.defineProperty(Pn.prototype,\"readableBuffer\",{enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}});Object.defineProperty(Pn.prototype,\"readableFlowing\",{enumerable:!1,get:function(){return this._readableState.flowing},set:function(e){this._readableState&&(this._readableState.flowing=e)}});Pn._fromList=qve;Object.defineProperty(Pn.prototype,\"readableLength\",{enumerable:!1,get:function(){return this._readableState.length}});function qve(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 uV(t){var e=t._readableState;cn(\"endReadable\",e.endEmitted),e.endEmitted||(e.ended=!0,process.nextTick(nEt,e,t))}function nEt(t,e){if(cn(\"endReadableNT\",t.endEmitted,t.length),!t.endEmitted&&t.length===0&&(t.endEmitted=!0,e.readable=!1,e.emit(\"end\"),t.autoDestroy)){var r=e._writableState;(!r||r.autoDestroy&&r.finished)&&e.destroy()}}typeof Symbol==\"function\"&&(Pn.from=function(t,e){return aV===void 0&&(aV=Ove()),aV(Pn,t,e)});function Wve(t,e){for(var r=0,s=t.length;r<s;r++)if(t[r]===e)return r;return-1}});var hV=_((nrr,Jve)=>{\"use strict\";Jve.exports=lh;var DN=lg().codes,iEt=DN.ERR_METHOD_NOT_IMPLEMENTED,sEt=DN.ERR_MULTIPLE_CALLBACK,oEt=DN.ERR_TRANSFORM_ALREADY_TRANSFORMING,aEt=DN.ERR_TRANSFORM_WITH_LENGTH_0,bN=Ym();cg()(lh,bN);function lEt(t,e){var r=this._transformState;r.transforming=!1;var s=r.writecb;if(s===null)return this.emit(\"error\",new sEt);r.writechunk=null,r.writecb=null,e!=null&&this.push(e),s(t);var a=this._readableState;a.reading=!1,(a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}function lh(t){if(!(this instanceof lh))return new lh(t);bN.call(this,t),this._transformState={afterTransform:lEt.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\",cEt)}function cEt(){var t=this;typeof this._flush==\"function\"&&!this._readableState.destroyed?this._flush(function(e,r){Vve(t,e,r)}):Vve(this,null,null)}lh.prototype.push=function(t,e){return this._transformState.needTransform=!1,bN.prototype.push.call(this,t,e)};lh.prototype._transform=function(t,e,r){r(new iEt(\"_transform()\"))};lh.prototype._write=function(t,e,r){var s=this._transformState;if(s.writecb=r,s.writechunk=t,s.writeencoding=e,!s.transforming){var a=this._readableState;(s.needTransform||a.needReadable||a.length<a.highWaterMark)&&this._read(a.highWaterMark)}};lh.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};lh.prototype._destroy=function(t,e){bN.prototype._destroy.call(this,t,function(r){e(r)})};function Vve(t,e,r){if(e)return t.emit(\"error\",e);if(r!=null&&t.push(r),t._writableState.length)throw new aEt;if(t._transformState.transforming)throw new oEt;return t.push(null)}});var Xve=_((irr,zve)=>{\"use strict\";zve.exports=nb;var Kve=hV();cg()(nb,Kve);function nb(t){if(!(this instanceof nb))return new nb(t);Kve.call(this,t)}nb.prototype._transform=function(t,e,r){r(null,t)}});var rSe=_((srr,tSe)=>{\"use strict\";var gV;function uEt(t){var e=!1;return function(){e||(e=!0,t.apply(void 0,arguments))}}var eSe=lg().codes,fEt=eSe.ERR_MISSING_ARGS,AEt=eSe.ERR_STREAM_DESTROYED;function Zve(t){if(t)throw t}function pEt(t){return t.setHeader&&typeof t.abort==\"function\"}function hEt(t,e,r,s){s=uEt(s);var a=!1;t.on(\"close\",function(){a=!0}),gV===void 0&&(gV=IN()),gV(t,{readable:e,writable:r},function(c){if(c)return s(c);a=!0,s()});var n=!1;return function(c){if(!a&&!n){if(n=!0,pEt(t))return t.abort();if(typeof t.destroy==\"function\")return t.destroy();s(c||new AEt(\"pipe\"))}}}function $ve(t){t()}function gEt(t,e){return t.pipe(e)}function dEt(t){return!t.length||typeof t[t.length-1]!=\"function\"?Zve:t.pop()}function mEt(){for(var t=arguments.length,e=new Array(t),r=0;r<t;r++)e[r]=arguments[r];var s=dEt(e);if(Array.isArray(e[0])&&(e=e[0]),e.length<2)throw new fEt(\"streams\");var a,n=e.map(function(c,f){var p=f<e.length-1,h=f>0;return hEt(c,p,h,function(E){a||(a=E),E&&n.forEach($ve),!p&&(n.forEach($ve),s(a))})});return e.reduce(gEt)}tSe.exports=mEt});var Lw=_((zc,sb)=>{var ib=Ie(\"stream\");process.env.READABLE_STREAM===\"disable\"&&ib?(sb.exports=ib.Readable,Object.assign(sb.exports,ib),sb.exports.Stream=ib):(zc=sb.exports=$Y(),zc.Stream=ib||zc,zc.Readable=zc,zc.Writable=zY(),zc.Duplex=Ym(),zc.Transform=hV(),zc.PassThrough=Xve(),zc.finished=IN(),zc.pipeline=rSe())});var sSe=_((orr,iSe)=>{\"use strict\";var{Buffer:cf}=Ie(\"buffer\"),nSe=Symbol.for(\"BufferList\");function Ci(t){if(!(this instanceof Ci))return new Ci(t);Ci._init.call(this,t)}Ci._init=function(e){Object.defineProperty(this,nSe,{value:!0}),this._bufs=[],this.length=0,e&&this.append(e)};Ci.prototype._new=function(e){return new Ci(e)};Ci.prototype._offset=function(e){if(e===0)return[0,0];let r=0;for(let s=0;s<this._bufs.length;s++){let a=r+this._bufs[s].length;if(e<a||s===this._bufs.length-1)return[s,e-r];r=a}};Ci.prototype._reverseOffset=function(t){let e=t[0],r=t[1];for(let s=0;s<e;s++)r+=this._bufs[s].length;return r};Ci.prototype.get=function(e){if(e>this.length||e<0)return;let r=this._offset(e);return this._bufs[r[0]][r[1]]};Ci.prototype.slice=function(e,r){return typeof e==\"number\"&&e<0&&(e+=this.length),typeof r==\"number\"&&r<0&&(r+=this.length),this.copy(null,0,e,r)};Ci.prototype.copy=function(e,r,s,a){if((typeof s!=\"number\"||s<0)&&(s=0),(typeof a!=\"number\"||a>this.length)&&(a=this.length),s>=this.length||a<=0)return e||cf.alloc(0);let n=!!e,c=this._offset(s),f=a-s,p=f,h=n&&r||0,E=c[1];if(s===0&&a===this.length){if(!n)return this._bufs.length===1?this._bufs[0]:cf.concat(this._bufs,this.length);for(let C=0;C<this._bufs.length;C++)this._bufs[C].copy(e,h),h+=this._bufs[C].length;return e}if(p<=this._bufs[c[0]].length-E)return n?this._bufs[c[0]].copy(e,r,E,E+p):this._bufs[c[0]].slice(E,E+p);n||(e=cf.allocUnsafe(f));for(let C=c[0];C<this._bufs.length;C++){let S=this._bufs[C].length-E;if(p>S)this._bufs[C].copy(e,h,E),h+=S;else{this._bufs[C].copy(e,h,E,E+p),h+=S;break}p-=S,E&&(E=0)}return e.length>h?e.slice(0,h):e};Ci.prototype.shallowSlice=function(e,r){if(e=e||0,r=typeof r!=\"number\"?this.length:r,e<0&&(e+=this.length),r<0&&(r+=this.length),e===r)return this._new();let s=this._offset(e),a=this._offset(r),n=this._bufs.slice(s[0],a[0]+1);return a[1]===0?n.pop():n[n.length-1]=n[n.length-1].slice(0,a[1]),s[1]!==0&&(n[0]=n[0].slice(s[1])),this._new(n)};Ci.prototype.toString=function(e,r,s){return this.slice(r,s).toString(e)};Ci.prototype.consume=function(e){if(e=Math.trunc(e),Number.isNaN(e)||e<=0)return this;for(;this._bufs.length;)if(e>=this._bufs[0].length)e-=this._bufs[0].length,this.length-=this._bufs[0].length,this._bufs.shift();else{this._bufs[0]=this._bufs[0].slice(e),this.length-=e;break}return this};Ci.prototype.duplicate=function(){let e=this._new();for(let r=0;r<this._bufs.length;r++)e.append(this._bufs[r]);return e};Ci.prototype.append=function(e){if(e==null)return this;if(e.buffer)this._appendBuffer(cf.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(cf.from(e));return this};Ci.prototype._appendBuffer=function(e){this._bufs.push(e),this.length+=e.length};Ci.prototype.indexOf=function(t,e,r){if(r===void 0&&typeof e==\"string\"&&(r=e,e=void 0),typeof t==\"function\"||Array.isArray(t))throw new TypeError('The \"value\" argument must be one of type string, Buffer, BufferList, or Uint8Array.');if(typeof t==\"number\"?t=cf.from([t]):typeof t==\"string\"?t=cf.from(t,r):this._isBufferList(t)?t=t.slice():Array.isArray(t.buffer)?t=cf.from(t.buffer,t.byteOffset,t.byteLength):cf.isBuffer(t)||(t=cf.from(t)),e=Number(e||0),isNaN(e)&&(e=0),e<0&&(e=this.length+e),e<0&&(e=0),t.length===0)return e>this.length?this.length:e;let s=this._offset(e),a=s[0],n=s[1];for(;a<this._bufs.length;a++){let c=this._bufs[a];for(;n<c.length;)if(c.length-n>=t.length){let p=c.indexOf(t,n);if(p!==-1)return this._reverseOffset([a,p]);n=c.length-t.length+1}else{let p=this._reverseOffset([a,n]);if(this._match(p,t))return p;n++}n=0}return-1};Ci.prototype._match=function(t,e){if(this.length-t<e.length)return!1;for(let r=0;r<e.length;r++)if(this.get(t+r)!==e[r])return!1;return!0};(function(){let t={readDoubleBE:8,readDoubleLE:8,readFloatBE:4,readFloatLE:4,readInt32BE:4,readInt32LE:4,readUInt32BE:4,readUInt32LE:4,readInt16BE:2,readInt16LE:2,readUInt16BE:2,readUInt16LE:2,readInt8:1,readUInt8:1,readIntBE:null,readIntLE:null,readUIntBE:null,readUIntLE:null};for(let e in t)(function(r){t[r]===null?Ci.prototype[r]=function(s,a){return this.slice(s,s+a)[r](0,a)}:Ci.prototype[r]=function(s=0){return this.slice(s,s+t[r])[r](0)}})(e)})();Ci.prototype._isBufferList=function(e){return e instanceof Ci||Ci.isBufferList(e)};Ci.isBufferList=function(e){return e!=null&&e[nSe]};iSe.exports=Ci});var oSe=_((arr,PN)=>{\"use strict\";var dV=Lw().Duplex,yEt=cg(),ob=sSe();function ra(t){if(!(this instanceof ra))return new ra(t);if(typeof t==\"function\"){this._callback=t;let e=function(s){this._callback&&(this._callback(s),this._callback=null)}.bind(this);this.on(\"pipe\",function(s){s.on(\"error\",e)}),this.on(\"unpipe\",function(s){s.removeListener(\"error\",e)}),t=null}ob._init.call(this,t),dV.call(this)}yEt(ra,dV);Object.assign(ra.prototype,ob.prototype);ra.prototype._new=function(e){return new ra(e)};ra.prototype._write=function(e,r,s){this._appendBuffer(e),typeof s==\"function\"&&s()};ra.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)};ra.prototype.end=function(e){dV.prototype.end.call(this,e),this._callback&&(this._callback(null,this.slice()),this._callback=null)};ra.prototype._destroy=function(e,r){this._bufs.length=0,this.length=0,r(e)};ra.prototype._isBufferList=function(e){return e instanceof ra||e instanceof ob||ra.isBufferList(e)};ra.isBufferList=ob.isBufferList;PN.exports=ra;PN.exports.BufferListStream=ra;PN.exports.BufferList=ob});var EV=_(Uw=>{var EEt=Buffer.alloc,IEt=\"0000000000000000000\",CEt=\"7777777777777777777\",aSe=48,lSe=Buffer.from(\"ustar\\0\",\"binary\"),wEt=Buffer.from(\"00\",\"binary\"),BEt=Buffer.from(\"ustar \",\"binary\"),vEt=Buffer.from(\" \\0\",\"binary\"),SEt=parseInt(\"7777\",8),ab=257,yV=263,DEt=function(t,e,r){return typeof t!=\"number\"?r:(t=~~t,t>=e?e:t>=0||(t+=e,t>=0)?t:0)},bEt=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},PEt=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},cSe=function(t,e,r,s){for(;r<s;r++)if(t[r]===e)return r;return s},uSe=function(t){for(var e=256,r=0;r<148;r++)e+=t[r];for(var s=156;s<512;s++)e+=t[s];return e},hg=function(t,e){return t=t.toString(8),t.length>e?CEt.slice(0,e)+\" \":IEt.slice(0,e-t.length)+t+\" \"};function xEt(t){var e;if(t[0]===128)e=!0;else if(t[0]===255)e=!1;else return null;for(var r=[],s=t.length-1;s>0;s--){var a=t[s];e?r.push(a):r.push(255-a)}var n=0,c=r.length;for(s=0;s<c;s++)n+=r[s]*Math.pow(256,s);return e?n:-1*n}var gg=function(t,e,r){if(t=t.slice(e,e+r),e=0,t[e]&128)return xEt(t);for(;e<t.length&&t[e]===32;)e++;for(var s=DEt(cSe(t,32,e,t.length),t.length,t.length);e<s&&t[e]===0;)e++;return s===e?0:parseInt(t.slice(e,s).toString(),8)},Mw=function(t,e,r,s){return t.slice(e,cSe(t,0,e,e+r)).toString(s)},mV=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};Uw.decodeLongPath=function(t,e){return Mw(t,0,t.length,e)};Uw.encodePax=function(t){var e=\"\";t.name&&(e+=mV(\" path=\"+t.name+`\n`)),t.linkname&&(e+=mV(\" linkpath=\"+t.linkname+`\n`));var r=t.pax;if(r)for(var s in r)e+=mV(\" \"+s+\"=\"+r[s]+`\n`);return Buffer.from(e)};Uw.decodePax=function(t){for(var e={};t.length;){for(var r=0;r<t.length&&t[r]!==32;)r++;var s=parseInt(t.slice(0,r).toString(),10);if(!s)return e;var a=t.slice(r+1,s-1).toString(),n=a.indexOf(\"=\");if(n===-1)return e;e[a.slice(0,n)]=a.slice(n+1),t=t.slice(s)}return e};Uw.encode=function(t){var e=EEt(512),r=t.name,s=\"\";if(t.typeflag===5&&r[r.length-1]!==\"/\"&&(r+=\"/\"),Buffer.byteLength(r)!==r.length)return null;for(;Buffer.byteLength(r)>100;){var a=r.indexOf(\"/\");if(a===-1)return null;s+=s?\"/\"+r.slice(0,a):r.slice(0,a),r=r.slice(a+1)}return Buffer.byteLength(r)>100||Buffer.byteLength(s)>155||t.linkname&&Buffer.byteLength(t.linkname)>100?null:(e.write(r),e.write(hg(t.mode&SEt,6),100),e.write(hg(t.uid,6),108),e.write(hg(t.gid,6),116),e.write(hg(t.size,11),124),e.write(hg(t.mtime.getTime()/1e3|0,11),136),e[156]=aSe+PEt(t.type),t.linkname&&e.write(t.linkname,157),lSe.copy(e,ab),wEt.copy(e,yV),t.uname&&e.write(t.uname,265),t.gname&&e.write(t.gname,297),e.write(hg(t.devmajor||0,6),329),e.write(hg(t.devminor||0,6),337),s&&e.write(s,345),e.write(hg(uSe(e),6),148),e)};Uw.decode=function(t,e,r){var s=t[156]===0?0:t[156]-aSe,a=Mw(t,0,100,e),n=gg(t,100,8),c=gg(t,108,8),f=gg(t,116,8),p=gg(t,124,12),h=gg(t,136,12),E=bEt(s),C=t[157]===0?null:Mw(t,157,100,e),S=Mw(t,265,32),P=Mw(t,297,32),I=gg(t,329,8),R=gg(t,337,8),N=uSe(t);if(N===8*32)return null;if(N!==gg(t,148,8))throw new Error(\"Invalid tar header. Maybe the tar is corrupted or it needs to be gunzipped?\");if(lSe.compare(t,ab,ab+6)===0)t[345]&&(a=Mw(t,345,155,e)+\"/\"+a);else if(!(BEt.compare(t,ab,ab+6)===0&&vEt.compare(t,yV,yV+2)===0)){if(!r)throw new Error(\"Invalid tar header: unknown format.\")}return s===0&&a&&a[a.length-1]===\"/\"&&(s=5),{name:a,mode:n,uid:c,gid:f,size:p,mtime:new Date(1e3*h),type:E,linkname:C,uname:S,gname:P,devmajor:I,devminor:R}}});var mSe=_((crr,dSe)=>{var ASe=Ie(\"util\"),kEt=oSe(),lb=EV(),pSe=Lw().Writable,hSe=Lw().PassThrough,gSe=function(){},fSe=function(t){return t&=511,t&&512-t},QEt=function(t,e){var r=new xN(t,e);return r.end(),r},TEt=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},xN=function(t,e){this._parent=t,this.offset=e,hSe.call(this,{autoDestroy:!1})};ASe.inherits(xN,hSe);xN.prototype.destroy=function(t){this._parent.destroy(t)};var ch=function(t){if(!(this instanceof ch))return new ch(t);pSe.call(this,t),t=t||{},this._offset=0,this._buffer=kEt(),this._missing=0,this._partial=!1,this._onparse=gSe,this._header=null,this._stream=null,this._overflow=null,this._cb=null,this._locked=!1,this._destroyed=!1,this._pax=null,this._paxGlobal=null,this._gnuLongPath=null,this._gnuLongLinkPath=null;var e=this,r=e._buffer,s=function(){e._continue()},a=function(S){if(e._locked=!1,S)return e.destroy(S);e._stream||s()},n=function(){e._stream=null;var S=fSe(e._header.size);S?e._parse(S,c):e._parse(512,C),e._locked||s()},c=function(){e._buffer.consume(fSe(e._header.size)),e._parse(512,C),s()},f=function(){var S=e._header.size;e._paxGlobal=lb.decodePax(r.slice(0,S)),r.consume(S),n()},p=function(){var S=e._header.size;e._pax=lb.decodePax(r.slice(0,S)),e._paxGlobal&&(e._pax=Object.assign({},e._paxGlobal,e._pax)),r.consume(S),n()},h=function(){var S=e._header.size;this._gnuLongPath=lb.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},E=function(){var S=e._header.size;this._gnuLongLinkPath=lb.decodeLongPath(r.slice(0,S),t.filenameEncoding),r.consume(S),n()},C=function(){var S=e._offset,P;try{P=e._header=lb.decode(r.slice(0,512),t.filenameEncoding,t.allowUnknownFormat)}catch(I){e.emit(\"error\",I)}if(r.consume(512),!P){e._parse(512,C),s();return}if(P.type===\"gnu-long-path\"){e._parse(P.size,h),s();return}if(P.type===\"gnu-long-link-path\"){e._parse(P.size,E),s();return}if(P.type===\"pax-global-header\"){e._parse(P.size,f),s();return}if(P.type===\"pax-header\"){e._parse(P.size,p),s();return}if(e._gnuLongPath&&(P.name=e._gnuLongPath,e._gnuLongPath=null),e._gnuLongLinkPath&&(P.linkname=e._gnuLongLinkPath,e._gnuLongLinkPath=null),e._pax&&(e._header=P=TEt(P,e._pax),e._pax=null),e._locked=!0,!P.size||P.type===\"directory\"){e._parse(512,C),e.emit(\"entry\",P,QEt(e,S),a);return}e._stream=new xN(e,S),e.emit(\"entry\",P,e._stream,a),e._parse(P.size,n),s()};this._onheader=C,this._parse(512,C)};ASe.inherits(ch,pSe);ch.prototype.destroy=function(t){this._destroyed||(this._destroyed=!0,t&&this.emit(\"error\",t),this.emit(\"close\"),this._stream&&this._stream.emit(\"close\"))};ch.prototype._parse=function(t,e){this._destroyed||(this._offset+=t,this._missing=t,e===this._onheader&&(this._partial=!1),this._onparse=e)};ch.prototype._continue=function(){if(!this._destroyed){var t=this._cb;this._cb=gSe,this._overflow?this._write(this._overflow,void 0,t):t()}};ch.prototype._write=function(t,e,r){if(!this._destroyed){var s=this._stream,a=this._buffer,n=this._missing;if(t.length&&(this._partial=!0),t.length<n)return this._missing-=t.length,this._overflow=null,s?s.write(t,r):(a.append(t),r());this._cb=r,this._missing=0;var c=null;t.length>n&&(c=t.slice(n),t=t.slice(0,n)),s?s.end(t):a.append(t),this._overflow=c,this._onparse()}};ch.prototype._final=function(t){if(this._partial)return this.destroy(new Error(\"Unexpected end of data\"));t()};dSe.exports=ch});var ESe=_((urr,ySe)=>{ySe.exports=Ie(\"fs\").constants||Ie(\"constants\")});var vSe=_((frr,BSe)=>{var _w=ESe(),ISe=cH(),QN=cg(),REt=Buffer.alloc,CSe=Lw().Readable,Hw=Lw().Writable,FEt=Ie(\"string_decoder\").StringDecoder,kN=EV(),NEt=parseInt(\"755\",8),OEt=parseInt(\"644\",8),wSe=REt(1024),CV=function(){},IV=function(t,e){e&=511,e&&t.push(wSe.slice(0,512-e))};function LEt(t){switch(t&_w.S_IFMT){case _w.S_IFBLK:return\"block-device\";case _w.S_IFCHR:return\"character-device\";case _w.S_IFDIR:return\"directory\";case _w.S_IFIFO:return\"fifo\";case _w.S_IFLNK:return\"symlink\"}return\"file\"}var TN=function(t){Hw.call(this),this.written=0,this._to=t,this._destroyed=!1};QN(TN,Hw);TN.prototype._write=function(t,e,r){if(this.written+=t.length,this._to.push(t))return r();this._to._drain=r};TN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var RN=function(){Hw.call(this),this.linkname=\"\",this._decoder=new FEt(\"utf-8\"),this._destroyed=!1};QN(RN,Hw);RN.prototype._write=function(t,e,r){this.linkname+=this._decoder.write(t),r()};RN.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var ub=function(){Hw.call(this),this._destroyed=!1};QN(ub,Hw);ub.prototype._write=function(t,e,r){r(new Error(\"No body allowed for this entry\"))};ub.prototype.destroy=function(){this._destroyed||(this._destroyed=!0,this.emit(\"close\"))};var mA=function(t){if(!(this instanceof mA))return new mA(t);CSe.call(this,t),this._drain=CV,this._finalized=!1,this._finalizing=!1,this._destroyed=!1,this._stream=null};QN(mA,CSe);mA.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=CV);var s=this;if((!t.size||t.type===\"symlink\")&&(t.size=0),t.type||(t.type=LEt(t.mode)),t.mode||(t.mode=t.type===\"directory\"?NEt:OEt),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 IV(s,t.size),a?process.nextTick(r):this._drain=r,new ub}if(t.type===\"symlink\"&&!t.linkname){var n=new RN;return ISe(n,function(f){if(f)return s.destroy(),r(f);t.linkname=n.linkname,s._encode(t),r()}),n}if(this._encode(t),t.type!==\"file\"&&t.type!==\"contiguous-file\")return process.nextTick(r),new ub;var c=new TN(this);return this._stream=c,ISe(c,function(f){if(s._stream=null,f)return s.destroy(),r(f);if(c.written!==t.size)return s.destroy(),r(new Error(\"size mismatch\"));IV(s,t.size),s._finalizing&&s.finalize(),r()}),c}};mA.prototype.finalize=function(){if(this._stream){this._finalizing=!0;return}this._finalized||(this._finalized=!0,this.push(wSe),this.push(null))};mA.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())};mA.prototype._encode=function(t){if(!t.pax){var e=kN.encode(t);if(e){this.push(e);return}}this._encodePax(t)};mA.prototype._encodePax=function(t){var e=kN.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(kN.encode(r)),this.push(e),IV(this,e.length),r.size=t.size,r.type=t.type,this.push(kN.encode(r))};mA.prototype._read=function(t){var e=this._drain;this._drain=CV,e()};BSe.exports=mA});var SSe=_(wV=>{wV.extract=mSe();wV.pack=vSe()});var MSe=_(Ta=>{\"use strict\";var zEt=Ta&&Ta.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Ta,\"__esModule\",{value:!0});Ta.Minipass=Ta.isWritable=Ta.isReadable=Ta.isStream=void 0;var RSe=typeof process==\"object\"&&process?process:{stdout:null,stderr:null},FV=Ie(\"node:events\"),LSe=zEt(Ie(\"node:stream\")),XEt=Ie(\"node:string_decoder\"),ZEt=t=>!!t&&typeof t==\"object\"&&(t instanceof jN||t instanceof LSe.default||(0,Ta.isReadable)(t)||(0,Ta.isWritable)(t));Ta.isStream=ZEt;var $Et=t=>!!t&&typeof t==\"object\"&&t instanceof FV.EventEmitter&&typeof t.pipe==\"function\"&&t.pipe!==LSe.default.Writable.prototype.pipe;Ta.isReadable=$Et;var eIt=t=>!!t&&typeof t==\"object\"&&t instanceof FV.EventEmitter&&typeof t.write==\"function\"&&typeof t.end==\"function\";Ta.isWritable=eIt;var uh=Symbol(\"EOF\"),fh=Symbol(\"maybeEmitEnd\"),dg=Symbol(\"emittedEnd\"),ON=Symbol(\"emittingEnd\"),fb=Symbol(\"emittedError\"),LN=Symbol(\"closed\"),FSe=Symbol(\"read\"),MN=Symbol(\"flush\"),NSe=Symbol(\"flushChunk\"),uf=Symbol(\"encoding\"),Gw=Symbol(\"decoder\"),Ks=Symbol(\"flowing\"),Ab=Symbol(\"paused\"),qw=Symbol(\"resume\"),zs=Symbol(\"buffer\"),Qa=Symbol(\"pipes\"),Xs=Symbol(\"bufferLength\"),PV=Symbol(\"bufferPush\"),UN=Symbol(\"bufferShift\"),na=Symbol(\"objectMode\"),ts=Symbol(\"destroyed\"),xV=Symbol(\"error\"),kV=Symbol(\"emitData\"),OSe=Symbol(\"emitEnd\"),QV=Symbol(\"emitEnd2\"),EA=Symbol(\"async\"),TV=Symbol(\"abort\"),_N=Symbol(\"aborted\"),pb=Symbol(\"signal\"),zm=Symbol(\"dataListeners\"),rc=Symbol(\"discarded\"),hb=t=>Promise.resolve().then(t),tIt=t=>t(),rIt=t=>t===\"end\"||t===\"finish\"||t===\"prefinish\",nIt=t=>t instanceof ArrayBuffer||!!t&&typeof t==\"object\"&&t.constructor&&t.constructor.name===\"ArrayBuffer\"&&t.byteLength>=0,iIt=t=>!Buffer.isBuffer(t)&&ArrayBuffer.isView(t),HN=class{src;dest;opts;ondrain;constructor(e,r,s){this.src=e,this.dest=r,this.opts=s,this.ondrain=()=>e[qw](),this.dest.on(\"drain\",this.ondrain)}unpipe(){this.dest.removeListener(\"drain\",this.ondrain)}proxyErrors(e){}end(){this.unpipe(),this.opts.end&&this.dest.end()}},RV=class extends HN{unpipe(){this.src.removeListener(\"error\",this.proxyErrors),super.unpipe()}constructor(e,r,s){super(e,r,s),this.proxyErrors=a=>r.emit(\"error\",a),e.on(\"error\",this.proxyErrors)}},sIt=t=>!!t.objectMode,oIt=t=>!t.objectMode&&!!t.encoding&&t.encoding!==\"buffer\",jN=class extends FV.EventEmitter{[Ks]=!1;[Ab]=!1;[Qa]=[];[zs]=[];[na];[uf];[EA];[Gw];[uh]=!1;[dg]=!1;[ON]=!1;[LN]=!1;[fb]=null;[Xs]=0;[ts]=!1;[pb];[_N]=!1;[zm]=0;[rc]=!1;writable=!0;readable=!0;constructor(...e){let r=e[0]||{};if(super(),r.objectMode&&typeof r.encoding==\"string\")throw new TypeError(\"Encoding and objectMode may not be used together\");sIt(r)?(this[na]=!0,this[uf]=null):oIt(r)?(this[uf]=r.encoding,this[na]=!1):(this[na]=!1,this[uf]=null),this[EA]=!!r.async,this[Gw]=this[uf]?new XEt.StringDecoder(this[uf]):null,r&&r.debugExposeBuffer===!0&&Object.defineProperty(this,\"buffer\",{get:()=>this[zs]}),r&&r.debugExposePipes===!0&&Object.defineProperty(this,\"pipes\",{get:()=>this[Qa]});let{signal:s}=r;s&&(this[pb]=s,s.aborted?this[TV]():s.addEventListener(\"abort\",()=>this[TV]()))}get bufferLength(){return this[Xs]}get encoding(){return this[uf]}set encoding(e){throw new Error(\"Encoding must be set at instantiation time\")}setEncoding(e){throw new Error(\"Encoding must be set at instantiation time\")}get objectMode(){return this[na]}set objectMode(e){throw new Error(\"objectMode must be set at instantiation time\")}get async(){return this[EA]}set async(e){this[EA]=this[EA]||!!e}[TV](){this[_N]=!0,this.emit(\"abort\",this[pb]?.reason),this.destroy(this[pb]?.reason)}get aborted(){return this[_N]}set aborted(e){}write(e,r,s){if(this[_N])return!1;if(this[uh])throw new Error(\"write after end\");if(this[ts])return this.emit(\"error\",Object.assign(new Error(\"Cannot call write after a stream was destroyed\"),{code:\"ERR_STREAM_DESTROYED\"})),!0;typeof r==\"function\"&&(s=r,r=\"utf8\"),r||(r=\"utf8\");let a=this[EA]?hb:tIt;if(!this[na]&&!Buffer.isBuffer(e)){if(iIt(e))e=Buffer.from(e.buffer,e.byteOffset,e.byteLength);else if(nIt(e))e=Buffer.from(e);else if(typeof e!=\"string\")throw new Error(\"Non-contiguous data written to non-objectMode stream\")}return this[na]?(this[Ks]&&this[Xs]!==0&&this[MN](!0),this[Ks]?this.emit(\"data\",e):this[PV](e),this[Xs]!==0&&this.emit(\"readable\"),s&&a(s),this[Ks]):e.length?(typeof e==\"string\"&&!(r===this[uf]&&!this[Gw]?.lastNeed)&&(e=Buffer.from(e,r)),Buffer.isBuffer(e)&&this[uf]&&(e=this[Gw].write(e)),this[Ks]&&this[Xs]!==0&&this[MN](!0),this[Ks]?this.emit(\"data\",e):this[PV](e),this[Xs]!==0&&this.emit(\"readable\"),s&&a(s),this[Ks]):(this[Xs]!==0&&this.emit(\"readable\"),s&&a(s),this[Ks])}read(e){if(this[ts])return null;if(this[rc]=!1,this[Xs]===0||e===0||e&&e>this[Xs])return this[fh](),null;this[na]&&(e=null),this[zs].length>1&&!this[na]&&(this[zs]=[this[uf]?this[zs].join(\"\"):Buffer.concat(this[zs],this[Xs])]);let r=this[FSe](e||null,this[zs][0]);return this[fh](),r}[FSe](e,r){if(this[na])this[UN]();else{let s=r;e===s.length||e===null?this[UN]():typeof s==\"string\"?(this[zs][0]=s.slice(e),r=s.slice(0,e),this[Xs]-=e):(this[zs][0]=s.subarray(e),r=s.subarray(0,e),this[Xs]-=e)}return this.emit(\"data\",r),!this[zs].length&&!this[uh]&&this.emit(\"drain\"),r}end(e,r,s){return typeof e==\"function\"&&(s=e,e=void 0),typeof r==\"function\"&&(s=r,r=\"utf8\"),e!==void 0&&this.write(e,r),s&&this.once(\"end\",s),this[uh]=!0,this.writable=!1,(this[Ks]||!this[Ab])&&this[fh](),this}[qw](){this[ts]||(!this[zm]&&!this[Qa].length&&(this[rc]=!0),this[Ab]=!1,this[Ks]=!0,this.emit(\"resume\"),this[zs].length?this[MN]():this[uh]?this[fh]():this.emit(\"drain\"))}resume(){return this[qw]()}pause(){this[Ks]=!1,this[Ab]=!0,this[rc]=!1}get destroyed(){return this[ts]}get flowing(){return this[Ks]}get paused(){return this[Ab]}[PV](e){this[na]?this[Xs]+=1:this[Xs]+=e.length,this[zs].push(e)}[UN](){return this[na]?this[Xs]-=1:this[Xs]-=this[zs][0].length,this[zs].shift()}[MN](e=!1){do;while(this[NSe](this[UN]())&&this[zs].length);!e&&!this[zs].length&&!this[uh]&&this.emit(\"drain\")}[NSe](e){return this.emit(\"data\",e),this[Ks]}pipe(e,r){if(this[ts])return e;this[rc]=!1;let s=this[dg];return r=r||{},e===RSe.stdout||e===RSe.stderr?r.end=!1:r.end=r.end!==!1,r.proxyErrors=!!r.proxyErrors,s?r.end&&e.end():(this[Qa].push(r.proxyErrors?new RV(this,e,r):new HN(this,e,r)),this[EA]?hb(()=>this[qw]()):this[qw]()),e}unpipe(e){let r=this[Qa].find(s=>s.dest===e);r&&(this[Qa].length===1?(this[Ks]&&this[zm]===0&&(this[Ks]=!1),this[Qa]=[]):this[Qa].splice(this[Qa].indexOf(r),1),r.unpipe())}addListener(e,r){return this.on(e,r)}on(e,r){let s=super.on(e,r);if(e===\"data\")this[rc]=!1,this[zm]++,!this[Qa].length&&!this[Ks]&&this[qw]();else if(e===\"readable\"&&this[Xs]!==0)super.emit(\"readable\");else if(rIt(e)&&this[dg])super.emit(e),this.removeAllListeners(e);else if(e===\"error\"&&this[fb]){let a=r;this[EA]?hb(()=>a.call(this,this[fb])):a.call(this,this[fb])}return s}removeListener(e,r){return this.off(e,r)}off(e,r){let s=super.off(e,r);return e===\"data\"&&(this[zm]=this.listeners(\"data\").length,this[zm]===0&&!this[rc]&&!this[Qa].length&&(this[Ks]=!1)),s}removeAllListeners(e){let r=super.removeAllListeners(e);return(e===\"data\"||e===void 0)&&(this[zm]=0,!this[rc]&&!this[Qa].length&&(this[Ks]=!1)),r}get emittedEnd(){return this[dg]}[fh](){!this[ON]&&!this[dg]&&!this[ts]&&this[zs].length===0&&this[uh]&&(this[ON]=!0,this.emit(\"end\"),this.emit(\"prefinish\"),this.emit(\"finish\"),this[LN]&&this.emit(\"close\"),this[ON]=!1)}emit(e,...r){let s=r[0];if(e!==\"error\"&&e!==\"close\"&&e!==ts&&this[ts])return!1;if(e===\"data\")return!this[na]&&!s?!1:this[EA]?(hb(()=>this[kV](s)),!0):this[kV](s);if(e===\"end\")return this[OSe]();if(e===\"close\"){if(this[LN]=!0,!this[dg]&&!this[ts])return!1;let n=super.emit(\"close\");return this.removeAllListeners(\"close\"),n}else if(e===\"error\"){this[fb]=s,super.emit(xV,s);let n=!this[pb]||this.listeners(\"error\").length?super.emit(\"error\",s):!1;return this[fh](),n}else if(e===\"resume\"){let n=super.emit(\"resume\");return this[fh](),n}else if(e===\"finish\"||e===\"prefinish\"){let n=super.emit(e);return this.removeAllListeners(e),n}let a=super.emit(e,...r);return this[fh](),a}[kV](e){for(let s of this[Qa])s.dest.write(e)===!1&&this.pause();let r=this[rc]?!1:super.emit(\"data\",e);return this[fh](),r}[OSe](){return this[dg]?!1:(this[dg]=!0,this.readable=!1,this[EA]?(hb(()=>this[QV]()),!0):this[QV]())}[QV](){if(this[Gw]){let r=this[Gw].end();if(r){for(let s of this[Qa])s.dest.write(r);this[rc]||super.emit(\"data\",r)}}for(let r of this[Qa])r.end();let e=super.emit(\"end\");return this.removeAllListeners(\"end\"),e}async collect(){let e=Object.assign([],{dataLength:0});this[na]||(e.dataLength=0);let r=this.promise();return this.on(\"data\",s=>{e.push(s),this[na]||(e.dataLength+=s.length)}),await r,e}async concat(){if(this[na])throw new Error(\"cannot concat in objectMode\");let e=await this.collect();return this[uf]?e.join(\"\"):Buffer.concat(e,e.dataLength)}async promise(){return new Promise((e,r)=>{this.on(ts,()=>r(new Error(\"stream destroyed\"))),this.on(\"error\",s=>r(s)),this.on(\"end\",()=>e())})}[Symbol.asyncIterator](){this[rc]=!1;let e=!1,r=async()=>(this.pause(),e=!0,{value:void 0,done:!0});return{next:()=>{if(e)return r();let a=this.read();if(a!==null)return Promise.resolve({done:!1,value:a});if(this[uh])return r();let n,c,f=C=>{this.off(\"data\",p),this.off(\"end\",h),this.off(ts,E),r(),c(C)},p=C=>{this.off(\"error\",f),this.off(\"end\",h),this.off(ts,E),this.pause(),n({value:C,done:!!this[uh]})},h=()=>{this.off(\"error\",f),this.off(\"data\",p),this.off(ts,E),r(),n({done:!0,value:void 0})},E=()=>f(new Error(\"stream destroyed\"));return new Promise((C,S)=>{c=S,n=C,this.once(ts,E),this.once(\"error\",f),this.once(\"end\",h),this.once(\"data\",p)})},throw:r,return:r,[Symbol.asyncIterator](){return this}}}[Symbol.iterator](){this[rc]=!1;let e=!1,r=()=>(this.pause(),this.off(xV,r),this.off(ts,r),this.off(\"end\",r),e=!0,{done:!0,value:void 0}),s=()=>{if(e)return r();let a=this.read();return a===null?r():{done:!1,value:a}};return this.once(\"end\",r),this.once(xV,r),this.once(ts,r),{next:s,throw:r,return:r,[Symbol.iterator](){return this}}}destroy(e){if(this[ts])return e?this.emit(\"error\",e):this.emit(ts),this;this[ts]=!0,this[rc]=!0,this[zs].length=0,this[Xs]=0;let r=this;return typeof r.close==\"function\"&&!this[LN]&&r.close(),e?this.emit(\"error\",e):this.emit(ts),this}static get isStream(){return Ta.isStream}};Ta.Minipass=jN});var HSe=_((Trr,IA)=>{\"use strict\";var db=Ie(\"crypto\"),{Minipass:aIt}=MSe(),OV=[\"sha512\",\"sha384\",\"sha256\"],MV=[\"sha512\"],lIt=/^[a-z0-9+/]+(?:=?=?)$/i,cIt=/^([a-z0-9]+)-([^?]+)([?\\S*]*)$/,uIt=/^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\\?[\\x21-\\x7E]*)?$/,fIt=/^[\\x21-\\x7E]+$/,mb=t=>t?.length?`?${t.join(\"?\")}`:\"\",LV=class extends aIt{#t;#r;#i;constructor(e){super(),this.size=0,this.opts=e,this.#e(),e?.algorithms?this.algorithms=[...e.algorithms]:this.algorithms=[...MV],this.algorithm!==null&&!this.algorithms.includes(this.algorithm)&&this.algorithms.push(this.algorithm),this.hashes=this.algorithms.map(db.createHash)}#e(){this.sri=this.opts?.integrity?nc(this.opts?.integrity,this.opts):null,this.expectedSize=this.opts?.size,this.sri?this.sri.isHash?(this.goodSri=!0,this.algorithm=this.sri.algorithm):(this.goodSri=!this.sri.isEmpty(),this.algorithm=this.sri.pickAlgorithm(this.opts)):this.algorithm=null,this.digests=this.goodSri?this.sri[this.algorithm]:null,this.optString=mb(this.opts?.options)}on(e,r){return e===\"size\"&&this.#r?r(this.#r):e===\"integrity\"&&this.#t?r(this.#t):e===\"verified\"&&this.#i?r(this.#i):super.on(e,r)}emit(e,r){return e===\"end\"&&this.#n(),super.emit(e,r)}write(e){return this.size+=e.length,this.hashes.forEach(r=>r.update(e)),super.write(e)}#n(){this.goodSri||this.#e();let e=nc(this.hashes.map((s,a)=>`${this.algorithms[a]}-${s.digest(\"base64\")}${this.optString}`).join(\" \"),this.opts),r=this.goodSri&&e.match(this.sri,this.opts);if(typeof this.expectedSize==\"number\"&&this.size!==this.expectedSize){let s=new Error(`stream size mismatch when checking ${this.sri}.\n  Wanted: ${this.expectedSize}\n  Found: ${this.size}`);s.code=\"EBADSIZE\",s.found=this.size,s.expected=this.expectedSize,s.sri=this.sri,this.emit(\"error\",s)}else if(this.sri&&!r){let s=new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${e}. (${this.size} bytes)`);s.code=\"EINTEGRITY\",s.found=e,s.expected=this.digests,s.algorithm=this.algorithm,s.sri=this.sri,this.emit(\"error\",s)}else this.#r=this.size,this.emit(\"size\",this.size),this.#t=e,this.emit(\"integrity\",e),r&&(this.#i=r,this.emit(\"verified\",r))}},Ah=class{get isHash(){return!0}constructor(e,r){let s=r?.strict;this.source=e.trim(),this.digest=\"\",this.algorithm=\"\",this.options=[];let a=this.source.match(s?uIt:cIt);if(!a||s&&!OV.includes(a[1]))return;this.algorithm=a[1],this.digest=a[2];let n=a[3];n&&(this.options=n.slice(1).split(\"?\"))}hexDigest(){return this.digest&&Buffer.from(this.digest,\"base64\").toString(\"hex\")}toJSON(){return this.toString()}match(e,r){let s=nc(e,r);if(!s)return!1;if(s.isIntegrity){let a=s.pickAlgorithm(r,[this.algorithm]);if(!a)return!1;let n=s[a].find(c=>c.digest===this.digest);return n||!1}return s.digest===this.digest?s:!1}toString(e){return e?.strict&&!(OV.includes(this.algorithm)&&this.digest.match(lIt)&&this.options.every(r=>r.match(fIt)))?\"\":`${this.algorithm}-${this.digest}${mb(this.options)}`}};function USe(t,e,r,s){let a=t!==\"\",n=!1,c=\"\",f=s.length-1;for(let h=0;h<f;h++){let E=Ah.prototype.toString.call(s[h],r);E&&(n=!0,c+=E,c+=e)}let p=Ah.prototype.toString.call(s[f],r);return p&&(n=!0,c+=p),a&&n?t+e+c:t+c}var Xm=class{get isIntegrity(){return!0}toJSON(){return this.toString()}isEmpty(){return Object.keys(this).length===0}toString(e){let r=e?.sep||\" \",s=\"\";if(e?.strict){r=r.replace(/\\S+/g,\" \");for(let a of OV)this[a]&&(s=USe(s,r,e,this[a]))}else for(let a of Object.keys(this))s=USe(s,r,e,this[a]);return s}concat(e,r){let s=typeof e==\"string\"?e:gb(e,r);return nc(`${this.toString(r)} ${s}`,r)}hexDigest(){return nc(this,{single:!0}).hexDigest()}merge(e,r){let s=nc(e,r);for(let a in s)if(this[a]){if(!this[a].find(n=>s[a].find(c=>n.digest===c.digest)))throw new Error(\"hashes do not match, cannot update integrity\")}else this[a]=s[a]}match(e,r){let s=nc(e,r);if(!s)return!1;let a=s.pickAlgorithm(r,Object.keys(this));return!!a&&this[a]&&s[a]&&this[a].find(n=>s[a].find(c=>n.digest===c.digest))||!1}pickAlgorithm(e,r){let s=e?.pickAlgorithm||EIt,a=Object.keys(this).filter(n=>r?.length?r.includes(n):!0);return a.length?a.reduce((n,c)=>s(n,c)||n):null}};IA.exports.parse=nc;function nc(t,e){if(!t)return null;if(typeof t==\"string\")return NV(t,e);if(t.algorithm&&t.digest){let r=new Xm;return r[t.algorithm]=[t],NV(gb(r,e),e)}else return NV(gb(t,e),e)}function NV(t,e){if(e?.single)return new Ah(t,e);let r=t.trim().split(/\\s+/).reduce((s,a)=>{let n=new Ah(a,e);if(n.algorithm&&n.digest){let c=n.algorithm;s[c]||(s[c]=[]),s[c].push(n)}return s},new Xm);return r.isEmpty()?null:r}IA.exports.stringify=gb;function gb(t,e){return t.algorithm&&t.digest?Ah.prototype.toString.call(t,e):typeof t==\"string\"?gb(nc(t,e),e):Xm.prototype.toString.call(t,e)}IA.exports.fromHex=AIt;function AIt(t,e,r){let s=mb(r?.options);return nc(`${e}-${Buffer.from(t,\"hex\").toString(\"base64\")}${s}`,r)}IA.exports.fromData=pIt;function pIt(t,e){let r=e?.algorithms||[...MV],s=mb(e?.options);return r.reduce((a,n)=>{let c=db.createHash(n).update(t).digest(\"base64\"),f=new Ah(`${n}-${c}${s}`,e);if(f.algorithm&&f.digest){let p=f.algorithm;a[p]||(a[p]=[]),a[p].push(f)}return a},new Xm)}IA.exports.fromStream=hIt;function hIt(t,e){let r=UV(e);return new Promise((s,a)=>{t.pipe(r),t.on(\"error\",a),r.on(\"error\",a);let n;r.on(\"integrity\",c=>{n=c}),r.on(\"end\",()=>s(n)),r.resume()})}IA.exports.checkData=gIt;function gIt(t,e,r){if(e=nc(e,r),!e||!Object.keys(e).length){if(r?.error)throw Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"});return!1}let s=e.pickAlgorithm(r),a=db.createHash(s).update(t).digest(\"base64\"),n=nc({algorithm:s,digest:a}),c=n.match(e,r);if(r=r||{},c||!r.error)return c;if(typeof r.size==\"number\"&&t.length!==r.size){let f=new Error(`data size mismatch when checking ${e}.\n  Wanted: ${r.size}\n  Found: ${t.length}`);throw f.code=\"EBADSIZE\",f.found=t.length,f.expected=r.size,f.sri=e,f}else{let f=new Error(`Integrity checksum failed when using ${s}: Wanted ${e}, but got ${n}. (${t.length} bytes)`);throw f.code=\"EINTEGRITY\",f.found=n,f.expected=e,f.algorithm=s,f.sri=e,f}}IA.exports.checkStream=dIt;function dIt(t,e,r){if(r=r||Object.create(null),r.integrity=e,e=nc(e,r),!e||!Object.keys(e).length)return Promise.reject(Object.assign(new Error(\"No valid integrity hashes to check against\"),{code:\"EINTEGRITY\"}));let s=UV(r);return new Promise((a,n)=>{t.pipe(s),t.on(\"error\",n),s.on(\"error\",n);let c;s.on(\"verified\",f=>{c=f}),s.on(\"end\",()=>a(c)),s.resume()})}IA.exports.integrityStream=UV;function UV(t=Object.create(null)){return new LV(t)}IA.exports.create=mIt;function mIt(t){let e=t?.algorithms||[...MV],r=mb(t?.options),s=e.map(db.createHash);return{update:function(a,n){return s.forEach(c=>c.update(a,n)),this},digest:function(){return e.reduce((n,c)=>{let f=s.shift().digest(\"base64\"),p=new Ah(`${c}-${f}${r}`,t);if(p.algorithm&&p.digest){let h=p.algorithm;n[h]||(n[h]=[]),n[h].push(p)}return n},new Xm)}}}var yIt=db.getHashes(),_Se=[\"md5\",\"whirlpool\",\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"sha3\",\"sha3-256\",\"sha3-384\",\"sha3-512\",\"sha3_256\",\"sha3_384\",\"sha3_512\"].filter(t=>yIt.includes(t));function EIt(t,e){return _Se.indexOf(t.toLowerCase())>=_Se.indexOf(e.toLowerCase())?t:e}});var _V=_(mg=>{\"use strict\";Object.defineProperty(mg,\"__esModule\",{value:!0});mg.Signature=mg.Envelope=void 0;mg.Envelope={fromJSON(t){return{payload:GN(t.payload)?Buffer.from(jSe(t.payload)):Buffer.alloc(0),payloadType:GN(t.payloadType)?globalThis.String(t.payloadType):\"\",signatures:globalThis.Array.isArray(t?.signatures)?t.signatures.map(e=>mg.Signature.fromJSON(e)):[]}},toJSON(t){let e={};return t.payload.length!==0&&(e.payload=GSe(t.payload)),t.payloadType!==\"\"&&(e.payloadType=t.payloadType),t.signatures?.length&&(e.signatures=t.signatures.map(r=>mg.Signature.toJSON(r))),e}};mg.Signature={fromJSON(t){return{sig:GN(t.sig)?Buffer.from(jSe(t.sig)):Buffer.alloc(0),keyid:GN(t.keyid)?globalThis.String(t.keyid):\"\"}},toJSON(t){let e={};return t.sig.length!==0&&(e.sig=GSe(t.sig)),t.keyid!==\"\"&&(e.keyid=t.keyid),e}};function jSe(t){return Uint8Array.from(globalThis.Buffer.from(t,\"base64\"))}function GSe(t){return globalThis.Buffer.from(t).toString(\"base64\")}function GN(t){return t!=null}});var WSe=_(qN=>{\"use strict\";Object.defineProperty(qN,\"__esModule\",{value:!0});qN.Timestamp=void 0;qN.Timestamp={fromJSON(t){return{seconds:qSe(t.seconds)?globalThis.String(t.seconds):\"0\",nanos:qSe(t.nanos)?globalThis.Number(t.nanos):0}},toJSON(t){let e={};return t.seconds!==\"0\"&&(e.seconds=t.seconds),t.nanos!==0&&(e.nanos=Math.round(t.nanos)),e}};function qSe(t){return t!=null}});var Ww=_(Ur=>{\"use strict\";Object.defineProperty(Ur,\"__esModule\",{value:!0});Ur.TimeRange=Ur.X509CertificateChain=Ur.SubjectAlternativeName=Ur.X509Certificate=Ur.DistinguishedName=Ur.ObjectIdentifierValuePair=Ur.ObjectIdentifier=Ur.PublicKeyIdentifier=Ur.PublicKey=Ur.RFC3161SignedTimestamp=Ur.LogId=Ur.MessageSignature=Ur.HashOutput=Ur.SubjectAlternativeNameType=Ur.PublicKeyDetails=Ur.HashAlgorithm=void 0;Ur.hashAlgorithmFromJSON=VSe;Ur.hashAlgorithmToJSON=JSe;Ur.publicKeyDetailsFromJSON=KSe;Ur.publicKeyDetailsToJSON=zSe;Ur.subjectAlternativeNameTypeFromJSON=XSe;Ur.subjectAlternativeNameTypeToJSON=ZSe;var IIt=WSe(),yl;(function(t){t[t.HASH_ALGORITHM_UNSPECIFIED=0]=\"HASH_ALGORITHM_UNSPECIFIED\",t[t.SHA2_256=1]=\"SHA2_256\",t[t.SHA2_384=2]=\"SHA2_384\",t[t.SHA2_512=3]=\"SHA2_512\",t[t.SHA3_256=4]=\"SHA3_256\",t[t.SHA3_384=5]=\"SHA3_384\"})(yl||(Ur.HashAlgorithm=yl={}));function VSe(t){switch(t){case 0:case\"HASH_ALGORITHM_UNSPECIFIED\":return yl.HASH_ALGORITHM_UNSPECIFIED;case 1:case\"SHA2_256\":return yl.SHA2_256;case 2:case\"SHA2_384\":return yl.SHA2_384;case 3:case\"SHA2_512\":return yl.SHA2_512;case 4:case\"SHA3_256\":return yl.SHA3_256;case 5:case\"SHA3_384\":return yl.SHA3_384;default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum HashAlgorithm\")}}function JSe(t){switch(t){case yl.HASH_ALGORITHM_UNSPECIFIED:return\"HASH_ALGORITHM_UNSPECIFIED\";case yl.SHA2_256:return\"SHA2_256\";case yl.SHA2_384:return\"SHA2_384\";case yl.SHA2_512:return\"SHA2_512\";case yl.SHA3_256:return\"SHA3_256\";case yl.SHA3_384:return\"SHA3_384\";default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum HashAlgorithm\")}}var sn;(function(t){t[t.PUBLIC_KEY_DETAILS_UNSPECIFIED=0]=\"PUBLIC_KEY_DETAILS_UNSPECIFIED\",t[t.PKCS1_RSA_PKCS1V5=1]=\"PKCS1_RSA_PKCS1V5\",t[t.PKCS1_RSA_PSS=2]=\"PKCS1_RSA_PSS\",t[t.PKIX_RSA_PKCS1V5=3]=\"PKIX_RSA_PKCS1V5\",t[t.PKIX_RSA_PSS=4]=\"PKIX_RSA_PSS\",t[t.PKIX_RSA_PKCS1V15_2048_SHA256=9]=\"PKIX_RSA_PKCS1V15_2048_SHA256\",t[t.PKIX_RSA_PKCS1V15_3072_SHA256=10]=\"PKIX_RSA_PKCS1V15_3072_SHA256\",t[t.PKIX_RSA_PKCS1V15_4096_SHA256=11]=\"PKIX_RSA_PKCS1V15_4096_SHA256\",t[t.PKIX_RSA_PSS_2048_SHA256=16]=\"PKIX_RSA_PSS_2048_SHA256\",t[t.PKIX_RSA_PSS_3072_SHA256=17]=\"PKIX_RSA_PSS_3072_SHA256\",t[t.PKIX_RSA_PSS_4096_SHA256=18]=\"PKIX_RSA_PSS_4096_SHA256\",t[t.PKIX_ECDSA_P256_HMAC_SHA_256=6]=\"PKIX_ECDSA_P256_HMAC_SHA_256\",t[t.PKIX_ECDSA_P256_SHA_256=5]=\"PKIX_ECDSA_P256_SHA_256\",t[t.PKIX_ECDSA_P384_SHA_384=12]=\"PKIX_ECDSA_P384_SHA_384\",t[t.PKIX_ECDSA_P521_SHA_512=13]=\"PKIX_ECDSA_P521_SHA_512\",t[t.PKIX_ED25519=7]=\"PKIX_ED25519\",t[t.PKIX_ED25519_PH=8]=\"PKIX_ED25519_PH\",t[t.LMS_SHA256=14]=\"LMS_SHA256\",t[t.LMOTS_SHA256=15]=\"LMOTS_SHA256\"})(sn||(Ur.PublicKeyDetails=sn={}));function KSe(t){switch(t){case 0:case\"PUBLIC_KEY_DETAILS_UNSPECIFIED\":return sn.PUBLIC_KEY_DETAILS_UNSPECIFIED;case 1:case\"PKCS1_RSA_PKCS1V5\":return sn.PKCS1_RSA_PKCS1V5;case 2:case\"PKCS1_RSA_PSS\":return sn.PKCS1_RSA_PSS;case 3:case\"PKIX_RSA_PKCS1V5\":return sn.PKIX_RSA_PKCS1V5;case 4:case\"PKIX_RSA_PSS\":return sn.PKIX_RSA_PSS;case 9:case\"PKIX_RSA_PKCS1V15_2048_SHA256\":return sn.PKIX_RSA_PKCS1V15_2048_SHA256;case 10:case\"PKIX_RSA_PKCS1V15_3072_SHA256\":return sn.PKIX_RSA_PKCS1V15_3072_SHA256;case 11:case\"PKIX_RSA_PKCS1V15_4096_SHA256\":return sn.PKIX_RSA_PKCS1V15_4096_SHA256;case 16:case\"PKIX_RSA_PSS_2048_SHA256\":return sn.PKIX_RSA_PSS_2048_SHA256;case 17:case\"PKIX_RSA_PSS_3072_SHA256\":return sn.PKIX_RSA_PSS_3072_SHA256;case 18:case\"PKIX_RSA_PSS_4096_SHA256\":return sn.PKIX_RSA_PSS_4096_SHA256;case 6:case\"PKIX_ECDSA_P256_HMAC_SHA_256\":return sn.PKIX_ECDSA_P256_HMAC_SHA_256;case 5:case\"PKIX_ECDSA_P256_SHA_256\":return sn.PKIX_ECDSA_P256_SHA_256;case 12:case\"PKIX_ECDSA_P384_SHA_384\":return sn.PKIX_ECDSA_P384_SHA_384;case 13:case\"PKIX_ECDSA_P521_SHA_512\":return sn.PKIX_ECDSA_P521_SHA_512;case 7:case\"PKIX_ED25519\":return sn.PKIX_ED25519;case 8:case\"PKIX_ED25519_PH\":return sn.PKIX_ED25519_PH;case 14:case\"LMS_SHA256\":return sn.LMS_SHA256;case 15:case\"LMOTS_SHA256\":return sn.LMOTS_SHA256;default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum PublicKeyDetails\")}}function zSe(t){switch(t){case sn.PUBLIC_KEY_DETAILS_UNSPECIFIED:return\"PUBLIC_KEY_DETAILS_UNSPECIFIED\";case sn.PKCS1_RSA_PKCS1V5:return\"PKCS1_RSA_PKCS1V5\";case sn.PKCS1_RSA_PSS:return\"PKCS1_RSA_PSS\";case sn.PKIX_RSA_PKCS1V5:return\"PKIX_RSA_PKCS1V5\";case sn.PKIX_RSA_PSS:return\"PKIX_RSA_PSS\";case sn.PKIX_RSA_PKCS1V15_2048_SHA256:return\"PKIX_RSA_PKCS1V15_2048_SHA256\";case sn.PKIX_RSA_PKCS1V15_3072_SHA256:return\"PKIX_RSA_PKCS1V15_3072_SHA256\";case sn.PKIX_RSA_PKCS1V15_4096_SHA256:return\"PKIX_RSA_PKCS1V15_4096_SHA256\";case sn.PKIX_RSA_PSS_2048_SHA256:return\"PKIX_RSA_PSS_2048_SHA256\";case sn.PKIX_RSA_PSS_3072_SHA256:return\"PKIX_RSA_PSS_3072_SHA256\";case sn.PKIX_RSA_PSS_4096_SHA256:return\"PKIX_RSA_PSS_4096_SHA256\";case sn.PKIX_ECDSA_P256_HMAC_SHA_256:return\"PKIX_ECDSA_P256_HMAC_SHA_256\";case sn.PKIX_ECDSA_P256_SHA_256:return\"PKIX_ECDSA_P256_SHA_256\";case sn.PKIX_ECDSA_P384_SHA_384:return\"PKIX_ECDSA_P384_SHA_384\";case sn.PKIX_ECDSA_P521_SHA_512:return\"PKIX_ECDSA_P521_SHA_512\";case sn.PKIX_ED25519:return\"PKIX_ED25519\";case sn.PKIX_ED25519_PH:return\"PKIX_ED25519_PH\";case sn.LMS_SHA256:return\"LMS_SHA256\";case sn.LMOTS_SHA256:return\"LMOTS_SHA256\";default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum PublicKeyDetails\")}}var CA;(function(t){t[t.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED=0]=\"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED\",t[t.EMAIL=1]=\"EMAIL\",t[t.URI=2]=\"URI\",t[t.OTHER_NAME=3]=\"OTHER_NAME\"})(CA||(Ur.SubjectAlternativeNameType=CA={}));function XSe(t){switch(t){case 0:case\"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED\":return CA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED;case 1:case\"EMAIL\":return CA.EMAIL;case 2:case\"URI\":return CA.URI;case 3:case\"OTHER_NAME\":return CA.OTHER_NAME;default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum SubjectAlternativeNameType\")}}function ZSe(t){switch(t){case CA.SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED:return\"SUBJECT_ALTERNATIVE_NAME_TYPE_UNSPECIFIED\";case CA.EMAIL:return\"EMAIL\";case CA.URI:return\"URI\";case CA.OTHER_NAME:return\"OTHER_NAME\";default:throw new globalThis.Error(\"Unrecognized enum value \"+t+\" for enum SubjectAlternativeNameType\")}}Ur.HashOutput={fromJSON(t){return{algorithm:ds(t.algorithm)?VSe(t.algorithm):0,digest:ds(t.digest)?Buffer.from(Zm(t.digest)):Buffer.alloc(0)}},toJSON(t){let e={};return t.algorithm!==0&&(e.algorithm=JSe(t.algorithm)),t.digest.length!==0&&(e.digest=$m(t.digest)),e}};Ur.MessageSignature={fromJSON(t){return{messageDigest:ds(t.messageDigest)?Ur.HashOutput.fromJSON(t.messageDigest):void 0,signature:ds(t.signature)?Buffer.from(Zm(t.signature)):Buffer.alloc(0)}},toJSON(t){let e={};return t.messageDigest!==void 0&&(e.messageDigest=Ur.HashOutput.toJSON(t.messageDigest)),t.signature.length!==0&&(e.signature=$m(t.signature)),e}};Ur.LogId={fromJSON(t){return{keyId:ds(t.keyId)?Buffer.from(Zm(t.keyId)):Buffer.alloc(0)}},toJSON(t){let e={};return t.keyId.length!==0&&(e.keyId=$m(t.keyId)),e}};Ur.RFC3161SignedTimestamp={fromJSON(t){return{signedTimestamp:ds(t.signedTimestamp)?Buffer.from(Zm(t.signedTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedTimestamp.length!==0&&(e.signedTimestamp=$m(t.signedTimestamp)),e}};Ur.PublicKey={fromJSON(t){return{rawBytes:ds(t.rawBytes)?Buffer.from(Zm(t.rawBytes)):void 0,keyDetails:ds(t.keyDetails)?KSe(t.keyDetails):0,validFor:ds(t.validFor)?Ur.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.rawBytes!==void 0&&(e.rawBytes=$m(t.rawBytes)),t.keyDetails!==0&&(e.keyDetails=zSe(t.keyDetails)),t.validFor!==void 0&&(e.validFor=Ur.TimeRange.toJSON(t.validFor)),e}};Ur.PublicKeyIdentifier={fromJSON(t){return{hint:ds(t.hint)?globalThis.String(t.hint):\"\"}},toJSON(t){let e={};return t.hint!==\"\"&&(e.hint=t.hint),e}};Ur.ObjectIdentifier={fromJSON(t){return{id:globalThis.Array.isArray(t?.id)?t.id.map(e=>globalThis.Number(e)):[]}},toJSON(t){let e={};return t.id?.length&&(e.id=t.id.map(r=>Math.round(r))),e}};Ur.ObjectIdentifierValuePair={fromJSON(t){return{oid:ds(t.oid)?Ur.ObjectIdentifier.fromJSON(t.oid):void 0,value:ds(t.value)?Buffer.from(Zm(t.value)):Buffer.alloc(0)}},toJSON(t){let e={};return t.oid!==void 0&&(e.oid=Ur.ObjectIdentifier.toJSON(t.oid)),t.value.length!==0&&(e.value=$m(t.value)),e}};Ur.DistinguishedName={fromJSON(t){return{organization:ds(t.organization)?globalThis.String(t.organization):\"\",commonName:ds(t.commonName)?globalThis.String(t.commonName):\"\"}},toJSON(t){let e={};return t.organization!==\"\"&&(e.organization=t.organization),t.commonName!==\"\"&&(e.commonName=t.commonName),e}};Ur.X509Certificate={fromJSON(t){return{rawBytes:ds(t.rawBytes)?Buffer.from(Zm(t.rawBytes)):Buffer.alloc(0)}},toJSON(t){let e={};return t.rawBytes.length!==0&&(e.rawBytes=$m(t.rawBytes)),e}};Ur.SubjectAlternativeName={fromJSON(t){return{type:ds(t.type)?XSe(t.type):0,identity:ds(t.regexp)?{$case:\"regexp\",regexp:globalThis.String(t.regexp)}:ds(t.value)?{$case:\"value\",value:globalThis.String(t.value)}:void 0}},toJSON(t){let e={};return t.type!==0&&(e.type=ZSe(t.type)),t.identity?.$case===\"regexp\"?e.regexp=t.identity.regexp:t.identity?.$case===\"value\"&&(e.value=t.identity.value),e}};Ur.X509CertificateChain={fromJSON(t){return{certificates:globalThis.Array.isArray(t?.certificates)?t.certificates.map(e=>Ur.X509Certificate.fromJSON(e)):[]}},toJSON(t){let e={};return t.certificates?.length&&(e.certificates=t.certificates.map(r=>Ur.X509Certificate.toJSON(r))),e}};Ur.TimeRange={fromJSON(t){return{start:ds(t.start)?YSe(t.start):void 0,end:ds(t.end)?YSe(t.end):void 0}},toJSON(t){let e={};return t.start!==void 0&&(e.start=t.start.toISOString()),t.end!==void 0&&(e.end=t.end.toISOString()),e}};function Zm(t){return Uint8Array.from(globalThis.Buffer.from(t,\"base64\"))}function $m(t){return globalThis.Buffer.from(t).toString(\"base64\")}function CIt(t){let e=(globalThis.Number(t.seconds)||0)*1e3;return e+=(t.nanos||0)/1e6,new globalThis.Date(e)}function YSe(t){return t instanceof globalThis.Date?t:typeof t==\"string\"?new globalThis.Date(t):CIt(IIt.Timestamp.fromJSON(t))}function ds(t){return t!=null}});var HV=_(ms=>{\"use strict\";Object.defineProperty(ms,\"__esModule\",{value:!0});ms.TransparencyLogEntry=ms.InclusionPromise=ms.InclusionProof=ms.Checkpoint=ms.KindVersion=void 0;var $Se=Ww();ms.KindVersion={fromJSON(t){return{kind:Ra(t.kind)?globalThis.String(t.kind):\"\",version:Ra(t.version)?globalThis.String(t.version):\"\"}},toJSON(t){let e={};return t.kind!==\"\"&&(e.kind=t.kind),t.version!==\"\"&&(e.version=t.version),e}};ms.Checkpoint={fromJSON(t){return{envelope:Ra(t.envelope)?globalThis.String(t.envelope):\"\"}},toJSON(t){let e={};return t.envelope!==\"\"&&(e.envelope=t.envelope),e}};ms.InclusionProof={fromJSON(t){return{logIndex:Ra(t.logIndex)?globalThis.String(t.logIndex):\"0\",rootHash:Ra(t.rootHash)?Buffer.from(WN(t.rootHash)):Buffer.alloc(0),treeSize:Ra(t.treeSize)?globalThis.String(t.treeSize):\"0\",hashes:globalThis.Array.isArray(t?.hashes)?t.hashes.map(e=>Buffer.from(WN(e))):[],checkpoint:Ra(t.checkpoint)?ms.Checkpoint.fromJSON(t.checkpoint):void 0}},toJSON(t){let e={};return t.logIndex!==\"0\"&&(e.logIndex=t.logIndex),t.rootHash.length!==0&&(e.rootHash=YN(t.rootHash)),t.treeSize!==\"0\"&&(e.treeSize=t.treeSize),t.hashes?.length&&(e.hashes=t.hashes.map(r=>YN(r))),t.checkpoint!==void 0&&(e.checkpoint=ms.Checkpoint.toJSON(t.checkpoint)),e}};ms.InclusionPromise={fromJSON(t){return{signedEntryTimestamp:Ra(t.signedEntryTimestamp)?Buffer.from(WN(t.signedEntryTimestamp)):Buffer.alloc(0)}},toJSON(t){let e={};return t.signedEntryTimestamp.length!==0&&(e.signedEntryTimestamp=YN(t.signedEntryTimestamp)),e}};ms.TransparencyLogEntry={fromJSON(t){return{logIndex:Ra(t.logIndex)?globalThis.String(t.logIndex):\"0\",logId:Ra(t.logId)?$Se.LogId.fromJSON(t.logId):void 0,kindVersion:Ra(t.kindVersion)?ms.KindVersion.fromJSON(t.kindVersion):void 0,integratedTime:Ra(t.integratedTime)?globalThis.String(t.integratedTime):\"0\",inclusionPromise:Ra(t.inclusionPromise)?ms.InclusionPromise.fromJSON(t.inclusionPromise):void 0,inclusionProof:Ra(t.inclusionProof)?ms.InclusionProof.fromJSON(t.inclusionProof):void 0,canonicalizedBody:Ra(t.canonicalizedBody)?Buffer.from(WN(t.canonicalizedBody)):Buffer.alloc(0)}},toJSON(t){let e={};return t.logIndex!==\"0\"&&(e.logIndex=t.logIndex),t.logId!==void 0&&(e.logId=$Se.LogId.toJSON(t.logId)),t.kindVersion!==void 0&&(e.kindVersion=ms.KindVersion.toJSON(t.kindVersion)),t.integratedTime!==\"0\"&&(e.integratedTime=t.integratedTime),t.inclusionPromise!==void 0&&(e.inclusionPromise=ms.InclusionPromise.toJSON(t.inclusionPromise)),t.inclusionProof!==void 0&&(e.inclusionProof=ms.InclusionProof.toJSON(t.inclusionProof)),t.canonicalizedBody.length!==0&&(e.canonicalizedBody=YN(t.canonicalizedBody)),e}};function WN(t){return Uint8Array.from(globalThis.Buffer.from(t,\"base64\"))}function YN(t){return globalThis.Buffer.from(t).toString(\"base64\")}function Ra(t){return t!=null}});var jV=_(Xc=>{\"use strict\";Object.defineProperty(Xc,\"__esModule\",{value:!0});Xc.Bundle=Xc.VerificationMaterial=Xc.TimestampVerificationData=void 0;var eDe=_V(),wA=Ww(),tDe=HV();Xc.TimestampVerificationData={fromJSON(t){return{rfc3161Timestamps:globalThis.Array.isArray(t?.rfc3161Timestamps)?t.rfc3161Timestamps.map(e=>wA.RFC3161SignedTimestamp.fromJSON(e)):[]}},toJSON(t){let e={};return t.rfc3161Timestamps?.length&&(e.rfc3161Timestamps=t.rfc3161Timestamps.map(r=>wA.RFC3161SignedTimestamp.toJSON(r))),e}};Xc.VerificationMaterial={fromJSON(t){return{content:yg(t.publicKey)?{$case:\"publicKey\",publicKey:wA.PublicKeyIdentifier.fromJSON(t.publicKey)}:yg(t.x509CertificateChain)?{$case:\"x509CertificateChain\",x509CertificateChain:wA.X509CertificateChain.fromJSON(t.x509CertificateChain)}:yg(t.certificate)?{$case:\"certificate\",certificate:wA.X509Certificate.fromJSON(t.certificate)}:void 0,tlogEntries:globalThis.Array.isArray(t?.tlogEntries)?t.tlogEntries.map(e=>tDe.TransparencyLogEntry.fromJSON(e)):[],timestampVerificationData:yg(t.timestampVerificationData)?Xc.TimestampVerificationData.fromJSON(t.timestampVerificationData):void 0}},toJSON(t){let e={};return t.content?.$case===\"publicKey\"?e.publicKey=wA.PublicKeyIdentifier.toJSON(t.content.publicKey):t.content?.$case===\"x509CertificateChain\"?e.x509CertificateChain=wA.X509CertificateChain.toJSON(t.content.x509CertificateChain):t.content?.$case===\"certificate\"&&(e.certificate=wA.X509Certificate.toJSON(t.content.certificate)),t.tlogEntries?.length&&(e.tlogEntries=t.tlogEntries.map(r=>tDe.TransparencyLogEntry.toJSON(r))),t.timestampVerificationData!==void 0&&(e.timestampVerificationData=Xc.TimestampVerificationData.toJSON(t.timestampVerificationData)),e}};Xc.Bundle={fromJSON(t){return{mediaType:yg(t.mediaType)?globalThis.String(t.mediaType):\"\",verificationMaterial:yg(t.verificationMaterial)?Xc.VerificationMaterial.fromJSON(t.verificationMaterial):void 0,content:yg(t.messageSignature)?{$case:\"messageSignature\",messageSignature:wA.MessageSignature.fromJSON(t.messageSignature)}:yg(t.dsseEnvelope)?{$case:\"dsseEnvelope\",dsseEnvelope:eDe.Envelope.fromJSON(t.dsseEnvelope)}:void 0}},toJSON(t){let e={};return t.mediaType!==\"\"&&(e.mediaType=t.mediaType),t.verificationMaterial!==void 0&&(e.verificationMaterial=Xc.VerificationMaterial.toJSON(t.verificationMaterial)),t.content?.$case===\"messageSignature\"?e.messageSignature=wA.MessageSignature.toJSON(t.content.messageSignature):t.content?.$case===\"dsseEnvelope\"&&(e.dsseEnvelope=eDe.Envelope.toJSON(t.content.dsseEnvelope)),e}};function yg(t){return t!=null}});var GV=_(Ri=>{\"use strict\";Object.defineProperty(Ri,\"__esModule\",{value:!0});Ri.ClientTrustConfig=Ri.SigningConfig=Ri.TrustedRoot=Ri.CertificateAuthority=Ri.TransparencyLogInstance=void 0;var El=Ww();Ri.TransparencyLogInstance={fromJSON(t){return{baseUrl:ia(t.baseUrl)?globalThis.String(t.baseUrl):\"\",hashAlgorithm:ia(t.hashAlgorithm)?(0,El.hashAlgorithmFromJSON)(t.hashAlgorithm):0,publicKey:ia(t.publicKey)?El.PublicKey.fromJSON(t.publicKey):void 0,logId:ia(t.logId)?El.LogId.fromJSON(t.logId):void 0,checkpointKeyId:ia(t.checkpointKeyId)?El.LogId.fromJSON(t.checkpointKeyId):void 0}},toJSON(t){let e={};return t.baseUrl!==\"\"&&(e.baseUrl=t.baseUrl),t.hashAlgorithm!==0&&(e.hashAlgorithm=(0,El.hashAlgorithmToJSON)(t.hashAlgorithm)),t.publicKey!==void 0&&(e.publicKey=El.PublicKey.toJSON(t.publicKey)),t.logId!==void 0&&(e.logId=El.LogId.toJSON(t.logId)),t.checkpointKeyId!==void 0&&(e.checkpointKeyId=El.LogId.toJSON(t.checkpointKeyId)),e}};Ri.CertificateAuthority={fromJSON(t){return{subject:ia(t.subject)?El.DistinguishedName.fromJSON(t.subject):void 0,uri:ia(t.uri)?globalThis.String(t.uri):\"\",certChain:ia(t.certChain)?El.X509CertificateChain.fromJSON(t.certChain):void 0,validFor:ia(t.validFor)?El.TimeRange.fromJSON(t.validFor):void 0}},toJSON(t){let e={};return t.subject!==void 0&&(e.subject=El.DistinguishedName.toJSON(t.subject)),t.uri!==\"\"&&(e.uri=t.uri),t.certChain!==void 0&&(e.certChain=El.X509CertificateChain.toJSON(t.certChain)),t.validFor!==void 0&&(e.validFor=El.TimeRange.toJSON(t.validFor)),e}};Ri.TrustedRoot={fromJSON(t){return{mediaType:ia(t.mediaType)?globalThis.String(t.mediaType):\"\",tlogs:globalThis.Array.isArray(t?.tlogs)?t.tlogs.map(e=>Ri.TransparencyLogInstance.fromJSON(e)):[],certificateAuthorities:globalThis.Array.isArray(t?.certificateAuthorities)?t.certificateAuthorities.map(e=>Ri.CertificateAuthority.fromJSON(e)):[],ctlogs:globalThis.Array.isArray(t?.ctlogs)?t.ctlogs.map(e=>Ri.TransparencyLogInstance.fromJSON(e)):[],timestampAuthorities:globalThis.Array.isArray(t?.timestampAuthorities)?t.timestampAuthorities.map(e=>Ri.CertificateAuthority.fromJSON(e)):[]}},toJSON(t){let e={};return t.mediaType!==\"\"&&(e.mediaType=t.mediaType),t.tlogs?.length&&(e.tlogs=t.tlogs.map(r=>Ri.TransparencyLogInstance.toJSON(r))),t.certificateAuthorities?.length&&(e.certificateAuthorities=t.certificateAuthorities.map(r=>Ri.CertificateAuthority.toJSON(r))),t.ctlogs?.length&&(e.ctlogs=t.ctlogs.map(r=>Ri.TransparencyLogInstance.toJSON(r))),t.timestampAuthorities?.length&&(e.timestampAuthorities=t.timestampAuthorities.map(r=>Ri.CertificateAuthority.toJSON(r))),e}};Ri.SigningConfig={fromJSON(t){return{mediaType:ia(t.mediaType)?globalThis.String(t.mediaType):\"\",caUrl:ia(t.caUrl)?globalThis.String(t.caUrl):\"\",oidcUrl:ia(t.oidcUrl)?globalThis.String(t.oidcUrl):\"\",tlogUrls:globalThis.Array.isArray(t?.tlogUrls)?t.tlogUrls.map(e=>globalThis.String(e)):[],tsaUrls:globalThis.Array.isArray(t?.tsaUrls)?t.tsaUrls.map(e=>globalThis.String(e)):[]}},toJSON(t){let e={};return t.mediaType!==\"\"&&(e.mediaType=t.mediaType),t.caUrl!==\"\"&&(e.caUrl=t.caUrl),t.oidcUrl!==\"\"&&(e.oidcUrl=t.oidcUrl),t.tlogUrls?.length&&(e.tlogUrls=t.tlogUrls),t.tsaUrls?.length&&(e.tsaUrls=t.tsaUrls),e}};Ri.ClientTrustConfig={fromJSON(t){return{mediaType:ia(t.mediaType)?globalThis.String(t.mediaType):\"\",trustedRoot:ia(t.trustedRoot)?Ri.TrustedRoot.fromJSON(t.trustedRoot):void 0,signingConfig:ia(t.signingConfig)?Ri.SigningConfig.fromJSON(t.signingConfig):void 0}},toJSON(t){let e={};return t.mediaType!==\"\"&&(e.mediaType=t.mediaType),t.trustedRoot!==void 0&&(e.trustedRoot=Ri.TrustedRoot.toJSON(t.trustedRoot)),t.signingConfig!==void 0&&(e.signingConfig=Ri.SigningConfig.toJSON(t.signingConfig)),e}};function ia(t){return t!=null}});var iDe=_(Vr=>{\"use strict\";Object.defineProperty(Vr,\"__esModule\",{value:!0});Vr.Input=Vr.Artifact=Vr.ArtifactVerificationOptions_ObserverTimestampOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions=Vr.ArtifactVerificationOptions_CtlogOptions=Vr.ArtifactVerificationOptions_TlogOptions=Vr.ArtifactVerificationOptions=Vr.PublicKeyIdentities=Vr.CertificateIdentities=Vr.CertificateIdentity=void 0;var rDe=jV(),Eg=Ww(),nDe=GV();Vr.CertificateIdentity={fromJSON(t){return{issuer:gi(t.issuer)?globalThis.String(t.issuer):\"\",san:gi(t.san)?Eg.SubjectAlternativeName.fromJSON(t.san):void 0,oids:globalThis.Array.isArray(t?.oids)?t.oids.map(e=>Eg.ObjectIdentifierValuePair.fromJSON(e)):[]}},toJSON(t){let e={};return t.issuer!==\"\"&&(e.issuer=t.issuer),t.san!==void 0&&(e.san=Eg.SubjectAlternativeName.toJSON(t.san)),t.oids?.length&&(e.oids=t.oids.map(r=>Eg.ObjectIdentifierValuePair.toJSON(r))),e}};Vr.CertificateIdentities={fromJSON(t){return{identities:globalThis.Array.isArray(t?.identities)?t.identities.map(e=>Vr.CertificateIdentity.fromJSON(e)):[]}},toJSON(t){let e={};return t.identities?.length&&(e.identities=t.identities.map(r=>Vr.CertificateIdentity.toJSON(r))),e}};Vr.PublicKeyIdentities={fromJSON(t){return{publicKeys:globalThis.Array.isArray(t?.publicKeys)?t.publicKeys.map(e=>Eg.PublicKey.fromJSON(e)):[]}},toJSON(t){let e={};return t.publicKeys?.length&&(e.publicKeys=t.publicKeys.map(r=>Eg.PublicKey.toJSON(r))),e}};Vr.ArtifactVerificationOptions={fromJSON(t){return{signers:gi(t.certificateIdentities)?{$case:\"certificateIdentities\",certificateIdentities:Vr.CertificateIdentities.fromJSON(t.certificateIdentities)}:gi(t.publicKeys)?{$case:\"publicKeys\",publicKeys:Vr.PublicKeyIdentities.fromJSON(t.publicKeys)}:void 0,tlogOptions:gi(t.tlogOptions)?Vr.ArtifactVerificationOptions_TlogOptions.fromJSON(t.tlogOptions):void 0,ctlogOptions:gi(t.ctlogOptions)?Vr.ArtifactVerificationOptions_CtlogOptions.fromJSON(t.ctlogOptions):void 0,tsaOptions:gi(t.tsaOptions)?Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.fromJSON(t.tsaOptions):void 0,integratedTsOptions:gi(t.integratedTsOptions)?Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.fromJSON(t.integratedTsOptions):void 0,observerOptions:gi(t.observerOptions)?Vr.ArtifactVerificationOptions_ObserverTimestampOptions.fromJSON(t.observerOptions):void 0}},toJSON(t){let e={};return t.signers?.$case===\"certificateIdentities\"?e.certificateIdentities=Vr.CertificateIdentities.toJSON(t.signers.certificateIdentities):t.signers?.$case===\"publicKeys\"&&(e.publicKeys=Vr.PublicKeyIdentities.toJSON(t.signers.publicKeys)),t.tlogOptions!==void 0&&(e.tlogOptions=Vr.ArtifactVerificationOptions_TlogOptions.toJSON(t.tlogOptions)),t.ctlogOptions!==void 0&&(e.ctlogOptions=Vr.ArtifactVerificationOptions_CtlogOptions.toJSON(t.ctlogOptions)),t.tsaOptions!==void 0&&(e.tsaOptions=Vr.ArtifactVerificationOptions_TimestampAuthorityOptions.toJSON(t.tsaOptions)),t.integratedTsOptions!==void 0&&(e.integratedTsOptions=Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions.toJSON(t.integratedTsOptions)),t.observerOptions!==void 0&&(e.observerOptions=Vr.ArtifactVerificationOptions_ObserverTimestampOptions.toJSON(t.observerOptions)),e}};Vr.ArtifactVerificationOptions_TlogOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,performOnlineVerification:gi(t.performOnlineVerification)?globalThis.Boolean(t.performOnlineVerification):!1,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.performOnlineVerification!==!1&&(e.performOnlineVerification=t.performOnlineVerification),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_CtlogOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TimestampAuthorityOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_TlogIntegratedTimestampOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.ArtifactVerificationOptions_ObserverTimestampOptions={fromJSON(t){return{threshold:gi(t.threshold)?globalThis.Number(t.threshold):0,disable:gi(t.disable)?globalThis.Boolean(t.disable):!1}},toJSON(t){let e={};return t.threshold!==0&&(e.threshold=Math.round(t.threshold)),t.disable!==!1&&(e.disable=t.disable),e}};Vr.Artifact={fromJSON(t){return{data:gi(t.artifactUri)?{$case:\"artifactUri\",artifactUri:globalThis.String(t.artifactUri)}:gi(t.artifact)?{$case:\"artifact\",artifact:Buffer.from(wIt(t.artifact))}:gi(t.artifactDigest)?{$case:\"artifactDigest\",artifactDigest:Eg.HashOutput.fromJSON(t.artifactDigest)}:void 0}},toJSON(t){let e={};return t.data?.$case===\"artifactUri\"?e.artifactUri=t.data.artifactUri:t.data?.$case===\"artifact\"?e.artifact=BIt(t.data.artifact):t.data?.$case===\"artifactDigest\"&&(e.artifactDigest=Eg.HashOutput.toJSON(t.data.artifactDigest)),e}};Vr.Input={fromJSON(t){return{artifactTrustRoot:gi(t.artifactTrustRoot)?nDe.TrustedRoot.fromJSON(t.artifactTrustRoot):void 0,artifactVerificationOptions:gi(t.artifactVerificationOptions)?Vr.ArtifactVerificationOptions.fromJSON(t.artifactVerificationOptions):void 0,bundle:gi(t.bundle)?rDe.Bundle.fromJSON(t.bundle):void 0,artifact:gi(t.artifact)?Vr.Artifact.fromJSON(t.artifact):void 0}},toJSON(t){let e={};return t.artifactTrustRoot!==void 0&&(e.artifactTrustRoot=nDe.TrustedRoot.toJSON(t.artifactTrustRoot)),t.artifactVerificationOptions!==void 0&&(e.artifactVerificationOptions=Vr.ArtifactVerificationOptions.toJSON(t.artifactVerificationOptions)),t.bundle!==void 0&&(e.bundle=rDe.Bundle.toJSON(t.bundle)),t.artifact!==void 0&&(e.artifact=Vr.Artifact.toJSON(t.artifact)),e}};function wIt(t){return Uint8Array.from(globalThis.Buffer.from(t,\"base64\"))}function BIt(t){return globalThis.Buffer.from(t).toString(\"base64\")}function gi(t){return t!=null}});var yb=_(Zc=>{\"use strict\";var vIt=Zc&&Zc.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Yw=Zc&&Zc.__exportStar||function(t,e){for(var r in t)r!==\"default\"&&!Object.prototype.hasOwnProperty.call(e,r)&&vIt(e,t,r)};Object.defineProperty(Zc,\"__esModule\",{value:!0});Yw(_V(),Zc);Yw(jV(),Zc);Yw(Ww(),Zc);Yw(HV(),Zc);Yw(GV(),Zc);Yw(iDe(),Zc)});var VN=_(Il=>{\"use strict\";Object.defineProperty(Il,\"__esModule\",{value:!0});Il.BUNDLE_V03_MEDIA_TYPE=Il.BUNDLE_V03_LEGACY_MEDIA_TYPE=Il.BUNDLE_V02_MEDIA_TYPE=Il.BUNDLE_V01_MEDIA_TYPE=void 0;Il.isBundleWithCertificateChain=SIt;Il.isBundleWithPublicKey=DIt;Il.isBundleWithMessageSignature=bIt;Il.isBundleWithDsseEnvelope=PIt;Il.BUNDLE_V01_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle+json;version=0.1\";Il.BUNDLE_V02_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle+json;version=0.2\";Il.BUNDLE_V03_LEGACY_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle+json;version=0.3\";Il.BUNDLE_V03_MEDIA_TYPE=\"application/vnd.dev.sigstore.bundle.v0.3+json\";function SIt(t){return t.verificationMaterial.content.$case===\"x509CertificateChain\"}function DIt(t){return t.verificationMaterial.content.$case===\"publicKey\"}function bIt(t){return t.content.$case===\"messageSignature\"}function PIt(t){return t.content.$case===\"dsseEnvelope\"}});var oDe=_(KN=>{\"use strict\";Object.defineProperty(KN,\"__esModule\",{value:!0});KN.toMessageSignatureBundle=kIt;KN.toDSSEBundle=QIt;var xIt=yb(),JN=VN();function kIt(t){return{mediaType:t.certificateChain?JN.BUNDLE_V02_MEDIA_TYPE:JN.BUNDLE_V03_MEDIA_TYPE,content:{$case:\"messageSignature\",messageSignature:{messageDigest:{algorithm:xIt.HashAlgorithm.SHA2_256,digest:t.digest},signature:t.signature}},verificationMaterial:sDe(t)}}function QIt(t){return{mediaType:t.certificateChain?JN.BUNDLE_V02_MEDIA_TYPE:JN.BUNDLE_V03_MEDIA_TYPE,content:{$case:\"dsseEnvelope\",dsseEnvelope:TIt(t)},verificationMaterial:sDe(t)}}function TIt(t){return{payloadType:t.artifactType,payload:t.artifact,signatures:[RIt(t)]}}function RIt(t){return{keyid:t.keyHint||\"\",sig:t.signature}}function sDe(t){return{content:FIt(t),tlogEntries:[],timestampVerificationData:{rfc3161Timestamps:[]}}}function FIt(t){return t.certificate?t.certificateChain?{$case:\"x509CertificateChain\",x509CertificateChain:{certificates:[{rawBytes:t.certificate}]}}:{$case:\"certificate\",certificate:{rawBytes:t.certificate}}:{$case:\"publicKey\",publicKey:{hint:t.keyHint||\"\"}}}});var WV=_(zN=>{\"use strict\";Object.defineProperty(zN,\"__esModule\",{value:!0});zN.ValidationError=void 0;var qV=class extends Error{constructor(e,r){super(e),this.fields=r}};zN.ValidationError=qV});var YV=_(ey=>{\"use strict\";Object.defineProperty(ey,\"__esModule\",{value:!0});ey.assertBundle=NIt;ey.assertBundleV01=aDe;ey.isBundleV01=OIt;ey.assertBundleV02=LIt;ey.assertBundleLatest=MIt;var XN=WV();function NIt(t){let e=ZN(t);if(e.length>0)throw new XN.ValidationError(\"invalid bundle\",e)}function aDe(t){let e=[];if(e.push(...ZN(t)),e.push(...UIt(t)),e.length>0)throw new XN.ValidationError(\"invalid v0.1 bundle\",e)}function OIt(t){try{return aDe(t),!0}catch{return!1}}function LIt(t){let e=[];if(e.push(...ZN(t)),e.push(...lDe(t)),e.length>0)throw new XN.ValidationError(\"invalid v0.2 bundle\",e)}function MIt(t){let e=[];if(e.push(...ZN(t)),e.push(...lDe(t)),e.push(..._It(t)),e.length>0)throw new XN.ValidationError(\"invalid bundle\",e)}function ZN(t){let e=[];if((t.mediaType===void 0||!t.mediaType.match(/^application\\/vnd\\.dev\\.sigstore\\.bundle\\+json;version=\\d\\.\\d/)&&!t.mediaType.match(/^application\\/vnd\\.dev\\.sigstore\\.bundle\\.v\\d\\.\\d\\+json/))&&e.push(\"mediaType\"),t.content===void 0)e.push(\"content\");else switch(t.content.$case){case\"messageSignature\":t.content.messageSignature.messageDigest===void 0?e.push(\"content.messageSignature.messageDigest\"):t.content.messageSignature.messageDigest.digest.length===0&&e.push(\"content.messageSignature.messageDigest.digest\"),t.content.messageSignature.signature.length===0&&e.push(\"content.messageSignature.signature\");break;case\"dsseEnvelope\":t.content.dsseEnvelope.payload.length===0&&e.push(\"content.dsseEnvelope.payload\"),t.content.dsseEnvelope.signatures.length!==1?e.push(\"content.dsseEnvelope.signatures\"):t.content.dsseEnvelope.signatures[0].sig.length===0&&e.push(\"content.dsseEnvelope.signatures[0].sig\");break}if(t.verificationMaterial===void 0)e.push(\"verificationMaterial\");else{if(t.verificationMaterial.content===void 0)e.push(\"verificationMaterial.content\");else switch(t.verificationMaterial.content.$case){case\"x509CertificateChain\":t.verificationMaterial.content.x509CertificateChain.certificates.length===0&&e.push(\"verificationMaterial.content.x509CertificateChain.certificates\"),t.verificationMaterial.content.x509CertificateChain.certificates.forEach((r,s)=>{r.rawBytes.length===0&&e.push(`verificationMaterial.content.x509CertificateChain.certificates[${s}].rawBytes`)});break;case\"certificate\":t.verificationMaterial.content.certificate.rawBytes.length===0&&e.push(\"verificationMaterial.content.certificate.rawBytes\");break}t.verificationMaterial.tlogEntries===void 0?e.push(\"verificationMaterial.tlogEntries\"):t.verificationMaterial.tlogEntries.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.logId===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].logId`),r.kindVersion===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].kindVersion`)})}return e}function UIt(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionPromise===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionPromise`)}),e}function lDe(t){let e=[];return t.verificationMaterial&&t.verificationMaterial.tlogEntries?.length>0&&t.verificationMaterial.tlogEntries.forEach((r,s)=>{r.inclusionProof===void 0?e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof`):r.inclusionProof.checkpoint===void 0&&e.push(`verificationMaterial.tlogEntries[${s}].inclusionProof.checkpoint`)}),e}function _It(t){let e=[];return t.verificationMaterial?.content?.$case===\"x509CertificateChain\"&&e.push(\"verificationMaterial.content.$case\"),e}});var uDe=_(BA=>{\"use strict\";Object.defineProperty(BA,\"__esModule\",{value:!0});BA.envelopeToJSON=BA.envelopeFromJSON=BA.bundleToJSON=BA.bundleFromJSON=void 0;var $N=yb(),cDe=VN(),VV=YV(),HIt=t=>{let e=$N.Bundle.fromJSON(t);switch(e.mediaType){case cDe.BUNDLE_V01_MEDIA_TYPE:(0,VV.assertBundleV01)(e);break;case cDe.BUNDLE_V02_MEDIA_TYPE:(0,VV.assertBundleV02)(e);break;default:(0,VV.assertBundleLatest)(e);break}return e};BA.bundleFromJSON=HIt;var jIt=t=>$N.Bundle.toJSON(t);BA.bundleToJSON=jIt;var GIt=t=>$N.Envelope.fromJSON(t);BA.envelopeFromJSON=GIt;var qIt=t=>$N.Envelope.toJSON(t);BA.envelopeToJSON=qIt});var Ib=_(Xr=>{\"use strict\";Object.defineProperty(Xr,\"__esModule\",{value:!0});Xr.isBundleV01=Xr.assertBundleV02=Xr.assertBundleV01=Xr.assertBundleLatest=Xr.assertBundle=Xr.envelopeToJSON=Xr.envelopeFromJSON=Xr.bundleToJSON=Xr.bundleFromJSON=Xr.ValidationError=Xr.isBundleWithPublicKey=Xr.isBundleWithMessageSignature=Xr.isBundleWithDsseEnvelope=Xr.isBundleWithCertificateChain=Xr.BUNDLE_V03_MEDIA_TYPE=Xr.BUNDLE_V03_LEGACY_MEDIA_TYPE=Xr.BUNDLE_V02_MEDIA_TYPE=Xr.BUNDLE_V01_MEDIA_TYPE=Xr.toMessageSignatureBundle=Xr.toDSSEBundle=void 0;var fDe=oDe();Object.defineProperty(Xr,\"toDSSEBundle\",{enumerable:!0,get:function(){return fDe.toDSSEBundle}});Object.defineProperty(Xr,\"toMessageSignatureBundle\",{enumerable:!0,get:function(){return fDe.toMessageSignatureBundle}});var Ig=VN();Object.defineProperty(Xr,\"BUNDLE_V01_MEDIA_TYPE\",{enumerable:!0,get:function(){return Ig.BUNDLE_V01_MEDIA_TYPE}});Object.defineProperty(Xr,\"BUNDLE_V02_MEDIA_TYPE\",{enumerable:!0,get:function(){return Ig.BUNDLE_V02_MEDIA_TYPE}});Object.defineProperty(Xr,\"BUNDLE_V03_LEGACY_MEDIA_TYPE\",{enumerable:!0,get:function(){return Ig.BUNDLE_V03_LEGACY_MEDIA_TYPE}});Object.defineProperty(Xr,\"BUNDLE_V03_MEDIA_TYPE\",{enumerable:!0,get:function(){return Ig.BUNDLE_V03_MEDIA_TYPE}});Object.defineProperty(Xr,\"isBundleWithCertificateChain\",{enumerable:!0,get:function(){return Ig.isBundleWithCertificateChain}});Object.defineProperty(Xr,\"isBundleWithDsseEnvelope\",{enumerable:!0,get:function(){return Ig.isBundleWithDsseEnvelope}});Object.defineProperty(Xr,\"isBundleWithMessageSignature\",{enumerable:!0,get:function(){return Ig.isBundleWithMessageSignature}});Object.defineProperty(Xr,\"isBundleWithPublicKey\",{enumerable:!0,get:function(){return Ig.isBundleWithPublicKey}});var WIt=WV();Object.defineProperty(Xr,\"ValidationError\",{enumerable:!0,get:function(){return WIt.ValidationError}});var eO=uDe();Object.defineProperty(Xr,\"bundleFromJSON\",{enumerable:!0,get:function(){return eO.bundleFromJSON}});Object.defineProperty(Xr,\"bundleToJSON\",{enumerable:!0,get:function(){return eO.bundleToJSON}});Object.defineProperty(Xr,\"envelopeFromJSON\",{enumerable:!0,get:function(){return eO.envelopeFromJSON}});Object.defineProperty(Xr,\"envelopeToJSON\",{enumerable:!0,get:function(){return eO.envelopeToJSON}});var Eb=YV();Object.defineProperty(Xr,\"assertBundle\",{enumerable:!0,get:function(){return Eb.assertBundle}});Object.defineProperty(Xr,\"assertBundleLatest\",{enumerable:!0,get:function(){return Eb.assertBundleLatest}});Object.defineProperty(Xr,\"assertBundleV01\",{enumerable:!0,get:function(){return Eb.assertBundleV01}});Object.defineProperty(Xr,\"assertBundleV02\",{enumerable:!0,get:function(){return Eb.assertBundleV02}});Object.defineProperty(Xr,\"isBundleV01\",{enumerable:!0,get:function(){return Eb.isBundleV01}})});var Cb=_(rO=>{\"use strict\";Object.defineProperty(rO,\"__esModule\",{value:!0});rO.ByteStream=void 0;var JV=class extends Error{},tO=class t{constructor(e){this.start=0,e?(this.buf=e,this.view=Buffer.from(e)):(this.buf=new ArrayBuffer(0),this.view=Buffer.from(this.buf))}get buffer(){return this.view.subarray(0,this.start)}get length(){return this.view.byteLength}get position(){return this.start}seek(e){this.start=e}slice(e,r){let s=e+r;if(s>this.length)throw new JV(\"request past end of buffer\");return this.view.subarray(e,s)}appendChar(e){this.ensureCapacity(1),this.view[this.start]=e,this.start+=1}appendUint16(e){this.ensureCapacity(2);let r=new Uint16Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[1],this.view[this.start+1]=s[0],this.start+=2}appendUint24(e){this.ensureCapacity(3);let r=new Uint32Array([e]),s=new Uint8Array(r.buffer);this.view[this.start]=s[2],this.view[this.start+1]=s[1],this.view[this.start+2]=s[0],this.start+=3}appendView(e){this.ensureCapacity(e.length),this.view.set(e,this.start),this.start+=e.length}getBlock(e){if(e<=0)return Buffer.alloc(0);if(this.start+e>this.view.length)throw new Error(\"request past end of buffer\");let r=this.view.subarray(this.start,this.start+e);return this.start+=e,r}getUint8(){return this.getBlock(1)[0]}getUint16(){let e=this.getBlock(2);return e[0]<<8|e[1]}ensureCapacity(e){if(this.start+e>this.view.byteLength){let r=t.BLOCK_SIZE+(e>t.BLOCK_SIZE?e:0);this.realloc(this.view.byteLength+r)}}realloc(e){let r=new ArrayBuffer(e),s=Buffer.from(r);s.set(this.view),this.buf=r,this.view=s}};rO.ByteStream=tO;tO.BLOCK_SIZE=1024});var nO=_(Vw=>{\"use strict\";Object.defineProperty(Vw,\"__esModule\",{value:!0});Vw.ASN1TypeError=Vw.ASN1ParseError=void 0;var KV=class extends Error{};Vw.ASN1ParseError=KV;var zV=class extends Error{};Vw.ASN1TypeError=zV});var pDe=_(iO=>{\"use strict\";Object.defineProperty(iO,\"__esModule\",{value:!0});iO.decodeLength=YIt;iO.encodeLength=VIt;var ADe=nO();function YIt(t){let e=t.getUint8();if(!(e&128))return e;let r=e&127;if(r>6)throw new ADe.ASN1ParseError(\"length exceeds 6 byte limit\");let s=0;for(let a=0;a<r;a++)s=s*256+t.getUint8();if(s===0)throw new ADe.ASN1ParseError(\"indefinite length encoding not supported\");return s}function VIt(t){if(t<128)return Buffer.from([t]);let e=BigInt(t),r=[];for(;e>0n;)r.unshift(Number(e&255n)),e=e>>8n;return Buffer.from([128|r.length,...r])}});var gDe=_(Cg=>{\"use strict\";Object.defineProperty(Cg,\"__esModule\",{value:!0});Cg.parseInteger=zIt;Cg.parseStringASCII=hDe;Cg.parseTime=XIt;Cg.parseOID=ZIt;Cg.parseBoolean=$It;Cg.parseBitString=eCt;var JIt=/^(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\.\\d{3})?Z$/,KIt=/^(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\.\\d{3})?Z$/;function zIt(t){let e=0,r=t.length,s=t[e],a=s>127,n=a?255:0;for(;s==n&&++e<r;)s=t[e];if(r-e===0)return BigInt(a?-1:0);s=a?s-256:s;let f=BigInt(s);for(let p=e+1;p<r;++p)f=f*BigInt(256)+BigInt(t[p]);return f}function hDe(t){return t.toString(\"ascii\")}function XIt(t,e){let r=hDe(t),s=e?JIt.exec(r):KIt.exec(r);if(!s)throw new Error(\"invalid time\");if(e){let a=Number(s[1]);a+=a>=50?1900:2e3,s[1]=a.toString()}return new Date(`${s[1]}-${s[2]}-${s[3]}T${s[4]}:${s[5]}:${s[6]}Z`)}function ZIt(t){let e=0,r=t.length,s=t[e++],a=Math.floor(s/40),n=s%40,c=`${a}.${n}`,f=0;for(;e<r;++e)s=t[e],f=(f<<7)+(s&127),s&128||(c+=`.${f}`,f=0);return c}function $It(t){return t[0]!==0}function eCt(t){let e=t[0],r=1,s=t.length,a=[];for(let n=r;n<s;++n){let c=t[n],f=n===s-1?e:0;for(let p=7;p>=f;--p)a.push(c>>p&1)}return a}});var mDe=_(sO=>{\"use strict\";Object.defineProperty(sO,\"__esModule\",{value:!0});sO.ASN1Tag=void 0;var dDe=nO(),ty={BOOLEAN:1,INTEGER:2,BIT_STRING:3,OCTET_STRING:4,OBJECT_IDENTIFIER:6,SEQUENCE:16,SET:17,PRINTABLE_STRING:19,UTC_TIME:23,GENERALIZED_TIME:24},XV={UNIVERSAL:0,APPLICATION:1,CONTEXT_SPECIFIC:2,PRIVATE:3},ZV=class{constructor(e){if(this.number=e&31,this.constructed=(e&32)===32,this.class=e>>6,this.number===31)throw new dDe.ASN1ParseError(\"long form tags not supported\");if(this.class===XV.UNIVERSAL&&this.number===0)throw new dDe.ASN1ParseError(\"unsupported tag 0x00\")}isUniversal(){return this.class===XV.UNIVERSAL}isContextSpecific(e){let r=this.class===XV.CONTEXT_SPECIFIC;return e!==void 0?r&&this.number===e:r}isBoolean(){return this.isUniversal()&&this.number===ty.BOOLEAN}isInteger(){return this.isUniversal()&&this.number===ty.INTEGER}isBitString(){return this.isUniversal()&&this.number===ty.BIT_STRING}isOctetString(){return this.isUniversal()&&this.number===ty.OCTET_STRING}isOID(){return this.isUniversal()&&this.number===ty.OBJECT_IDENTIFIER}isUTCTime(){return this.isUniversal()&&this.number===ty.UTC_TIME}isGeneralizedTime(){return this.isUniversal()&&this.number===ty.GENERALIZED_TIME}toDER(){return this.number|(this.constructed?32:0)|this.class<<6}};sO.ASN1Tag=ZV});var CDe=_(aO=>{\"use strict\";Object.defineProperty(aO,\"__esModule\",{value:!0});aO.ASN1Obj=void 0;var $V=Cb(),ry=nO(),EDe=pDe(),Jw=gDe(),tCt=mDe(),oO=class{constructor(e,r,s){this.tag=e,this.value=r,this.subs=s}static parseBuffer(e){return IDe(new $V.ByteStream(e))}toDER(){let e=new $V.ByteStream;if(this.subs.length>0)for(let a of this.subs)e.appendView(a.toDER());else e.appendView(this.value);let r=e.buffer,s=new $V.ByteStream;return s.appendChar(this.tag.toDER()),s.appendView((0,EDe.encodeLength)(r.length)),s.appendView(r),s.buffer}toBoolean(){if(!this.tag.isBoolean())throw new ry.ASN1TypeError(\"not a boolean\");return(0,Jw.parseBoolean)(this.value)}toInteger(){if(!this.tag.isInteger())throw new ry.ASN1TypeError(\"not an integer\");return(0,Jw.parseInteger)(this.value)}toOID(){if(!this.tag.isOID())throw new ry.ASN1TypeError(\"not an OID\");return(0,Jw.parseOID)(this.value)}toDate(){switch(!0){case this.tag.isUTCTime():return(0,Jw.parseTime)(this.value,!0);case this.tag.isGeneralizedTime():return(0,Jw.parseTime)(this.value,!1);default:throw new ry.ASN1TypeError(\"not a date\")}}toBitString(){if(!this.tag.isBitString())throw new ry.ASN1TypeError(\"not a bit string\");return(0,Jw.parseBitString)(this.value)}};aO.ASN1Obj=oO;function IDe(t){let e=new tCt.ASN1Tag(t.getUint8()),r=(0,EDe.decodeLength)(t),s=t.slice(t.position,r),a=t.position,n=[];if(e.constructed)n=yDe(t,r);else if(e.isOctetString())try{n=yDe(t,r)}catch{}return n.length===0&&t.seek(a+r),new oO(e,s,n)}function yDe(t,e){let r=t.position+e;if(r>t.length)throw new ry.ASN1ParseError(\"invalid length\");let s=[];for(;t.position<r;)s.push(IDe(t));if(t.position!==r)throw new ry.ASN1ParseError(\"invalid length\");return s}});var cO=_(lO=>{\"use strict\";Object.defineProperty(lO,\"__esModule\",{value:!0});lO.ASN1Obj=void 0;var rCt=CDe();Object.defineProperty(lO,\"ASN1Obj\",{enumerable:!0,get:function(){return rCt.ASN1Obj}})});var Kw=_(wg=>{\"use strict\";var nCt=wg&&wg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(wg,\"__esModule\",{value:!0});wg.createPublicKey=iCt;wg.digest=sCt;wg.verify=oCt;wg.bufferEqual=aCt;var wb=nCt(Ie(\"crypto\"));function iCt(t,e=\"spki\"){return typeof t==\"string\"?wb.default.createPublicKey(t):wb.default.createPublicKey({key:t,format:\"der\",type:e})}function sCt(t,...e){let r=wb.default.createHash(t);for(let s of e)r.update(s);return r.digest()}function oCt(t,e,r,s){try{return wb.default.verify(s,t,e,r)}catch{return!1}}function aCt(t,e){try{return wb.default.timingSafeEqual(t,e)}catch{return!1}}});var wDe=_(e7=>{\"use strict\";Object.defineProperty(e7,\"__esModule\",{value:!0});e7.preAuthEncoding=cCt;var lCt=\"DSSEv1\";function cCt(t,e){let r=[lCt,t.length,t,e.length,\"\"].join(\" \");return Buffer.concat([Buffer.from(r,\"ascii\"),e])}});var SDe=_(uO=>{\"use strict\";Object.defineProperty(uO,\"__esModule\",{value:!0});uO.base64Encode=uCt;uO.base64Decode=fCt;var BDe=\"base64\",vDe=\"utf-8\";function uCt(t){return Buffer.from(t,vDe).toString(BDe)}function fCt(t){return Buffer.from(t,BDe).toString(vDe)}});var DDe=_(r7=>{\"use strict\";Object.defineProperty(r7,\"__esModule\",{value:!0});r7.canonicalize=t7;function t7(t){let e=\"\";if(t===null||typeof t!=\"object\"||t.toJSON!=null)e+=JSON.stringify(t);else if(Array.isArray(t)){e+=\"[\";let r=!0;t.forEach(s=>{r||(e+=\",\"),r=!1,e+=t7(s)}),e+=\"]\"}else{e+=\"{\";let r=!0;Object.keys(t).sort().forEach(s=>{r||(e+=\",\"),r=!1,e+=JSON.stringify(s),e+=\":\",e+=t7(t[s])}),e+=\"}\"}return e}});var n7=_(fO=>{\"use strict\";Object.defineProperty(fO,\"__esModule\",{value:!0});fO.toDER=hCt;fO.fromDER=gCt;var ACt=/-----BEGIN (.*)-----/,pCt=/-----END (.*)-----/;function hCt(t){let e=\"\";return t.split(`\n`).forEach(r=>{r.match(ACt)||r.match(pCt)||(e+=r)}),Buffer.from(e,\"base64\")}function gCt(t,e=\"CERTIFICATE\"){let s=t.toString(\"base64\").match(/.{1,64}/g)||\"\";return[`-----BEGIN ${e}-----`,...s,`-----END ${e}-----`].join(`\n`).concat(`\n`)}});var AO=_(zw=>{\"use strict\";Object.defineProperty(zw,\"__esModule\",{value:!0});zw.SHA2_HASH_ALGOS=zw.ECDSA_SIGNATURE_ALGOS=void 0;zw.ECDSA_SIGNATURE_ALGOS={\"1.2.840.10045.4.3.1\":\"sha224\",\"1.2.840.10045.4.3.2\":\"sha256\",\"1.2.840.10045.4.3.3\":\"sha384\",\"1.2.840.10045.4.3.4\":\"sha512\"};zw.SHA2_HASH_ALGOS={\"2.16.840.1.101.3.4.2.1\":\"sha256\",\"2.16.840.1.101.3.4.2.2\":\"sha384\",\"2.16.840.1.101.3.4.2.3\":\"sha512\"}});var s7=_(pO=>{\"use strict\";Object.defineProperty(pO,\"__esModule\",{value:!0});pO.RFC3161TimestampVerificationError=void 0;var i7=class extends Error{};pO.RFC3161TimestampVerificationError=i7});var PDe=_(vA=>{\"use strict\";var dCt=vA&&vA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),mCt=vA&&vA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),yCt=vA&&vA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&dCt(e,t,r);return mCt(e,t),e};Object.defineProperty(vA,\"__esModule\",{value:!0});vA.TSTInfo=void 0;var bDe=yCt(Kw()),ECt=AO(),ICt=s7(),o7=class{constructor(e){this.root=e}get version(){return this.root.subs[0].toInteger()}get genTime(){return this.root.subs[4].toDate()}get messageImprintHashAlgorithm(){let e=this.messageImprintObj.subs[0].subs[0].toOID();return ECt.SHA2_HASH_ALGOS[e]}get messageImprintHashedMessage(){return this.messageImprintObj.subs[1].value}get raw(){return this.root.toDER()}verify(e){let r=bDe.digest(this.messageImprintHashAlgorithm,e);if(!bDe.bufferEqual(r,this.messageImprintHashedMessage))throw new ICt.RFC3161TimestampVerificationError(\"message imprint does not match artifact\")}get messageImprintObj(){return this.root.subs[2]}};vA.TSTInfo=o7});var kDe=_(SA=>{\"use strict\";var CCt=SA&&SA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),wCt=SA&&SA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),BCt=SA&&SA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&CCt(e,t,r);return wCt(e,t),e};Object.defineProperty(SA,\"__esModule\",{value:!0});SA.RFC3161Timestamp=void 0;var vCt=cO(),a7=BCt(Kw()),xDe=AO(),Bb=s7(),SCt=PDe(),DCt=\"1.2.840.113549.1.7.2\",bCt=\"1.2.840.113549.1.9.16.1.4\",PCt=\"1.2.840.113549.1.9.4\",l7=class t{constructor(e){this.root=e}static parse(e){let r=vCt.ASN1Obj.parseBuffer(e);return new t(r)}get status(){return this.pkiStatusInfoObj.subs[0].toInteger()}get contentType(){return this.contentTypeObj.toOID()}get eContentType(){return this.eContentTypeObj.toOID()}get signingTime(){return this.tstInfo.genTime}get signerIssuer(){return this.signerSidObj.subs[0].value}get signerSerialNumber(){return this.signerSidObj.subs[1].value}get signerDigestAlgorithm(){let e=this.signerDigestAlgorithmObj.subs[0].toOID();return xDe.SHA2_HASH_ALGOS[e]}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return xDe.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value}get tstInfo(){return new SCt.TSTInfo(this.eContentObj.subs[0].subs[0])}verify(e,r){if(!this.timeStampTokenObj)throw new Bb.RFC3161TimestampVerificationError(\"timeStampToken is missing\");if(this.contentType!==DCt)throw new Bb.RFC3161TimestampVerificationError(`incorrect content type: ${this.contentType}`);if(this.eContentType!==bCt)throw new Bb.RFC3161TimestampVerificationError(`incorrect encapsulated content type: ${this.eContentType}`);this.tstInfo.verify(e),this.verifyMessageDigest(),this.verifySignature(r)}verifyMessageDigest(){let e=a7.digest(this.signerDigestAlgorithm,this.tstInfo.raw),r=this.messageDigestAttributeObj.subs[1].subs[0].value;if(!a7.bufferEqual(e,r))throw new Bb.RFC3161TimestampVerificationError(\"signed data does not match tstInfo\")}verifySignature(e){let r=this.signedAttrsObj.toDER();if(r[0]=49,!a7.verify(r,e,this.signatureValue,this.signatureAlgorithm))throw new Bb.RFC3161TimestampVerificationError(\"signature verification failed\")}get pkiStatusInfoObj(){return this.root.subs[0]}get timeStampTokenObj(){return this.root.subs[1]}get contentTypeObj(){return this.timeStampTokenObj.subs[0]}get signedDataObj(){return this.timeStampTokenObj.subs.find(r=>r.tag.isContextSpecific(0)).subs[0]}get encapContentInfoObj(){return this.signedDataObj.subs[2]}get signerInfosObj(){let e=this.signedDataObj;return e.subs[e.subs.length-1]}get signerInfoObj(){return this.signerInfosObj.subs[0]}get eContentTypeObj(){return this.encapContentInfoObj.subs[0]}get eContentObj(){return this.encapContentInfoObj.subs[1]}get signedAttrsObj(){return this.signerInfoObj.subs.find(r=>r.tag.isContextSpecific(0))}get messageDigestAttributeObj(){return this.signedAttrsObj.subs.find(r=>r.subs[0].tag.isOID()&&r.subs[0].toOID()===PCt)}get signerSidObj(){return this.signerInfoObj.subs[1]}get signerDigestAlgorithmObj(){return this.signerInfoObj.subs[2]}get signatureAlgorithmObj(){return this.signerInfoObj.subs[4]}get signatureValueObj(){return this.signerInfoObj.subs[5]}};SA.RFC3161Timestamp=l7});var QDe=_(hO=>{\"use strict\";Object.defineProperty(hO,\"__esModule\",{value:!0});hO.RFC3161Timestamp=void 0;var xCt=kDe();Object.defineProperty(hO,\"RFC3161Timestamp\",{enumerable:!0,get:function(){return xCt.RFC3161Timestamp}})});var RDe=_(DA=>{\"use strict\";var kCt=DA&&DA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),QCt=DA&&DA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),TCt=DA&&DA.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&kCt(e,t,r);return QCt(e,t),e};Object.defineProperty(DA,\"__esModule\",{value:!0});DA.SignedCertificateTimestamp=void 0;var RCt=TCt(Kw()),TDe=Cb(),c7=class t{constructor(e){this.version=e.version,this.logID=e.logID,this.timestamp=e.timestamp,this.extensions=e.extensions,this.hashAlgorithm=e.hashAlgorithm,this.signatureAlgorithm=e.signatureAlgorithm,this.signature=e.signature}get datetime(){return new Date(Number(this.timestamp.readBigInt64BE()))}get algorithm(){switch(this.hashAlgorithm){case 0:return\"none\";case 1:return\"md5\";case 2:return\"sha1\";case 3:return\"sha224\";case 4:return\"sha256\";case 5:return\"sha384\";case 6:return\"sha512\";default:return\"unknown\"}}verify(e,r){let s=new TDe.ByteStream;return s.appendChar(this.version),s.appendChar(0),s.appendView(this.timestamp),s.appendUint16(1),s.appendView(e),s.appendUint16(this.extensions.byteLength),this.extensions.byteLength>0&&s.appendView(this.extensions),RCt.verify(s.buffer,r,this.signature,this.algorithm)}static parse(e){let r=new TDe.ByteStream(e),s=r.getUint8(),a=r.getBlock(32),n=r.getBlock(8),c=r.getUint16(),f=r.getBlock(c),p=r.getUint8(),h=r.getUint8(),E=r.getUint16(),C=r.getBlock(E);if(r.position!==e.length)throw new Error(\"SCT buffer length mismatch\");return new t({version:s,logID:a,timestamp:n,extensions:f,hashAlgorithm:p,signatureAlgorithm:h,signature:C})}};DA.SignedCertificateTimestamp=c7});var d7=_(sa=>{\"use strict\";Object.defineProperty(sa,\"__esModule\",{value:!0});sa.X509SCTExtension=sa.X509SubjectKeyIDExtension=sa.X509AuthorityKeyIDExtension=sa.X509SubjectAlternativeNameExtension=sa.X509KeyUsageExtension=sa.X509BasicConstraintsExtension=sa.X509Extension=void 0;var FCt=Cb(),NCt=RDe(),ph=class{constructor(e){this.root=e}get oid(){return this.root.subs[0].toOID()}get critical(){return this.root.subs.length===3?this.root.subs[1].toBoolean():!1}get value(){return this.extnValueObj.value}get valueObj(){return this.extnValueObj}get extnValueObj(){return this.root.subs[this.root.subs.length-1]}};sa.X509Extension=ph;var u7=class extends ph{get isCA(){return this.sequence.subs[0]?.toBoolean()??!1}get pathLenConstraint(){return this.sequence.subs.length>1?this.sequence.subs[1].toInteger():void 0}get sequence(){return this.extnValueObj.subs[0]}};sa.X509BasicConstraintsExtension=u7;var f7=class extends ph{get digitalSignature(){return this.bitString[0]===1}get keyCertSign(){return this.bitString[5]===1}get crlSign(){return this.bitString[6]===1}get bitString(){return this.extnValueObj.subs[0].toBitString()}};sa.X509KeyUsageExtension=f7;var A7=class extends ph{get rfc822Name(){return this.findGeneralName(1)?.value.toString(\"ascii\")}get uri(){return this.findGeneralName(6)?.value.toString(\"ascii\")}otherName(e){let r=this.findGeneralName(0);return r===void 0||r.subs[0].toOID()!==e?void 0:r.subs[1].subs[0].value.toString(\"ascii\")}findGeneralName(e){return this.generalNames.find(r=>r.tag.isContextSpecific(e))}get generalNames(){return this.extnValueObj.subs[0].subs}};sa.X509SubjectAlternativeNameExtension=A7;var p7=class extends ph{get keyIdentifier(){return this.findSequenceMember(0)?.value}findSequenceMember(e){return this.sequence.subs.find(r=>r.tag.isContextSpecific(e))}get sequence(){return this.extnValueObj.subs[0]}};sa.X509AuthorityKeyIDExtension=p7;var h7=class extends ph{get keyIdentifier(){return this.extnValueObj.subs[0].value}};sa.X509SubjectKeyIDExtension=h7;var g7=class extends ph{constructor(e){super(e)}get signedCertificateTimestamps(){let e=this.extnValueObj.subs[0].value,r=new FCt.ByteStream(e),s=r.getUint16()+2,a=[];for(;r.position<s;){let n=r.getUint16(),c=r.getBlock(n);a.push(NCt.SignedCertificateTimestamp.parse(c))}if(r.position!==s)throw new Error(\"SCT list length does not match actual length\");return a}};sa.X509SCTExtension=g7});var ODe=_(ic=>{\"use strict\";var OCt=ic&&ic.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),LCt=ic&&ic.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),NDe=ic&&ic.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&OCt(e,t,r);return LCt(e,t),e};Object.defineProperty(ic,\"__esModule\",{value:!0});ic.X509Certificate=ic.EXTENSION_OID_SCT=void 0;var MCt=cO(),FDe=NDe(Kw()),UCt=AO(),_Ct=NDe(n7()),ny=d7(),HCt=\"2.5.29.14\",jCt=\"2.5.29.15\",GCt=\"2.5.29.17\",qCt=\"2.5.29.19\",WCt=\"2.5.29.35\";ic.EXTENSION_OID_SCT=\"1.3.6.1.4.1.11129.2.4.2\";var m7=class t{constructor(e){this.root=e}static parse(e){let r=typeof e==\"string\"?_Ct.toDER(e):e,s=MCt.ASN1Obj.parseBuffer(r);return new t(s)}get tbsCertificate(){return this.tbsCertificateObj}get version(){return`v${(this.versionObj.subs[0].toInteger()+BigInt(1)).toString()}`}get serialNumber(){return this.serialNumberObj.value}get notBefore(){return this.validityObj.subs[0].toDate()}get notAfter(){return this.validityObj.subs[1].toDate()}get issuer(){return this.issuerObj.value}get subject(){return this.subjectObj.value}get publicKey(){return this.subjectPublicKeyInfoObj.toDER()}get signatureAlgorithm(){let e=this.signatureAlgorithmObj.subs[0].toOID();return UCt.ECDSA_SIGNATURE_ALGOS[e]}get signatureValue(){return this.signatureValueObj.value.subarray(1)}get subjectAltName(){let e=this.extSubjectAltName;return e?.uri||e?.rfc822Name}get extensions(){return this.extensionsObj?.subs[0]?.subs||[]}get extKeyUsage(){let e=this.findExtension(jCt);return e?new ny.X509KeyUsageExtension(e):void 0}get extBasicConstraints(){let e=this.findExtension(qCt);return e?new ny.X509BasicConstraintsExtension(e):void 0}get extSubjectAltName(){let e=this.findExtension(GCt);return e?new ny.X509SubjectAlternativeNameExtension(e):void 0}get extAuthorityKeyID(){let e=this.findExtension(WCt);return e?new ny.X509AuthorityKeyIDExtension(e):void 0}get extSubjectKeyID(){let e=this.findExtension(HCt);return e?new ny.X509SubjectKeyIDExtension(e):void 0}get extSCT(){let e=this.findExtension(ic.EXTENSION_OID_SCT);return e?new ny.X509SCTExtension(e):void 0}get isCA(){let e=this.extBasicConstraints?.isCA||!1;return this.extKeyUsage?e&&this.extKeyUsage.keyCertSign:e}extension(e){let r=this.findExtension(e);return r?new ny.X509Extension(r):void 0}verify(e){let r=e?.publicKey||this.publicKey,s=FDe.createPublicKey(r);return FDe.verify(this.tbsCertificate.toDER(),s,this.signatureValue,this.signatureAlgorithm)}validForDate(e){return this.notBefore<=e&&e<=this.notAfter}equals(e){return this.root.toDER().equals(e.root.toDER())}clone(){let e=this.root.toDER(),r=Buffer.alloc(e.length);return e.copy(r),t.parse(r)}findExtension(e){return this.extensions.find(r=>r.subs[0].toOID()===e)}get tbsCertificateObj(){return this.root.subs[0]}get signatureAlgorithmObj(){return this.root.subs[1]}get signatureValueObj(){return this.root.subs[2]}get versionObj(){return this.tbsCertificateObj.subs[0]}get serialNumberObj(){return this.tbsCertificateObj.subs[1]}get issuerObj(){return this.tbsCertificateObj.subs[3]}get validityObj(){return this.tbsCertificateObj.subs[4]}get subjectObj(){return this.tbsCertificateObj.subs[5]}get subjectPublicKeyInfoObj(){return this.tbsCertificateObj.subs[6]}get extensionsObj(){return this.tbsCertificateObj.subs.find(e=>e.tag.isContextSpecific(3))}};ic.X509Certificate=m7});var MDe=_(Bg=>{\"use strict\";Object.defineProperty(Bg,\"__esModule\",{value:!0});Bg.X509SCTExtension=Bg.X509Certificate=Bg.EXTENSION_OID_SCT=void 0;var LDe=ODe();Object.defineProperty(Bg,\"EXTENSION_OID_SCT\",{enumerable:!0,get:function(){return LDe.EXTENSION_OID_SCT}});Object.defineProperty(Bg,\"X509Certificate\",{enumerable:!0,get:function(){return LDe.X509Certificate}});var YCt=d7();Object.defineProperty(Bg,\"X509SCTExtension\",{enumerable:!0,get:function(){return YCt.X509SCTExtension}})});var Cl=_(Jn=>{\"use strict\";var VCt=Jn&&Jn.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),JCt=Jn&&Jn.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),vb=Jn&&Jn.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&VCt(e,t,r);return JCt(e,t),e};Object.defineProperty(Jn,\"__esModule\",{value:!0});Jn.X509SCTExtension=Jn.X509Certificate=Jn.EXTENSION_OID_SCT=Jn.ByteStream=Jn.RFC3161Timestamp=Jn.pem=Jn.json=Jn.encoding=Jn.dsse=Jn.crypto=Jn.ASN1Obj=void 0;var KCt=cO();Object.defineProperty(Jn,\"ASN1Obj\",{enumerable:!0,get:function(){return KCt.ASN1Obj}});Jn.crypto=vb(Kw());Jn.dsse=vb(wDe());Jn.encoding=vb(SDe());Jn.json=vb(DDe());Jn.pem=vb(n7());var zCt=QDe();Object.defineProperty(Jn,\"RFC3161Timestamp\",{enumerable:!0,get:function(){return zCt.RFC3161Timestamp}});var XCt=Cb();Object.defineProperty(Jn,\"ByteStream\",{enumerable:!0,get:function(){return XCt.ByteStream}});var y7=MDe();Object.defineProperty(Jn,\"EXTENSION_OID_SCT\",{enumerable:!0,get:function(){return y7.EXTENSION_OID_SCT}});Object.defineProperty(Jn,\"X509Certificate\",{enumerable:!0,get:function(){return y7.X509Certificate}});Object.defineProperty(Jn,\"X509SCTExtension\",{enumerable:!0,get:function(){return y7.X509SCTExtension}})});var UDe=_(E7=>{\"use strict\";Object.defineProperty(E7,\"__esModule\",{value:!0});E7.extractJWTSubject=$Ct;var ZCt=Cl();function $Ct(t){let e=t.split(\".\",3),r=JSON.parse(ZCt.encoding.base64Decode(e[1]));switch(r.iss){case\"https://accounts.google.com\":case\"https://oauth2.sigstore.dev/auth\":return r.email;default:return r.sub}}});var _De=_((dnr,ewt)=>{ewt.exports={name:\"@sigstore/sign\",version:\"3.1.0\",description:\"Sigstore signing library\",main:\"dist/index.js\",types:\"dist/index.d.ts\",scripts:{clean:\"shx rm -rf dist *.tsbuildinfo\",build:\"tsc --build\",test:\"jest\"},files:[\"dist\"],author:\"bdehamer@github.com\",license:\"Apache-2.0\",repository:{type:\"git\",url:\"git+https://github.com/sigstore/sigstore-js.git\"},bugs:{url:\"https://github.com/sigstore/sigstore-js/issues\"},homepage:\"https://github.com/sigstore/sigstore-js/tree/main/packages/sign#readme\",publishConfig:{provenance:!0},devDependencies:{\"@sigstore/jest\":\"^0.0.0\",\"@sigstore/mock\":\"^0.10.0\",\"@sigstore/rekor-types\":\"^3.0.0\",\"@types/make-fetch-happen\":\"^10.0.4\",\"@types/promise-retry\":\"^1.1.6\"},dependencies:{\"@sigstore/bundle\":\"^3.1.0\",\"@sigstore/core\":\"^2.0.0\",\"@sigstore/protobuf-specs\":\"^0.4.0\",\"make-fetch-happen\":\"^14.0.2\",\"proc-log\":\"^5.0.0\",\"promise-retry\":\"^2.0.1\"},engines:{node:\"^18.17.0 || >=20.5.0\"}}});var jDe=_(Xw=>{\"use strict\";var twt=Xw&&Xw.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Xw,\"__esModule\",{value:!0});Xw.getUserAgent=void 0;var HDe=twt(Ie(\"os\")),rwt=()=>{let t=_De().version,e=process.version,r=HDe.default.platform(),s=HDe.default.arch();return`sigstore-js/${t} (Node ${e}) (${r}/${s})`};Xw.getUserAgent=rwt});var vg=_(Ji=>{\"use strict\";var nwt=Ji&&Ji.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),iwt=Ji&&Ji.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),GDe=Ji&&Ji.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a<s.length;a++)s[a]!==\"default\"&&nwt(r,e,s[a]);return iwt(r,e),r}}();Object.defineProperty(Ji,\"__esModule\",{value:!0});Ji.ua=Ji.oidc=Ji.pem=Ji.json=Ji.encoding=Ji.dsse=Ji.crypto=void 0;var Sb=Cl();Object.defineProperty(Ji,\"crypto\",{enumerable:!0,get:function(){return Sb.crypto}});Object.defineProperty(Ji,\"dsse\",{enumerable:!0,get:function(){return Sb.dsse}});Object.defineProperty(Ji,\"encoding\",{enumerable:!0,get:function(){return Sb.encoding}});Object.defineProperty(Ji,\"json\",{enumerable:!0,get:function(){return Sb.json}});Object.defineProperty(Ji,\"pem\",{enumerable:!0,get:function(){return Sb.pem}});Ji.oidc=GDe(UDe());Ji.ua=GDe(jDe())});var C7=_(gO=>{\"use strict\";Object.defineProperty(gO,\"__esModule\",{value:!0});gO.BaseBundleBuilder=void 0;var I7=class{constructor(e){this.signer=e.signer,this.witnesses=e.witnesses}async create(e){let r=await this.prepare(e).then(f=>this.signer.sign(f)),s=await this.package(e,r),a=await Promise.all(this.witnesses.map(f=>f.testify(s.content,swt(r.key)))),n=[],c=[];return a.forEach(({tlogEntries:f,rfc3161Timestamps:p})=>{n.push(...f??[]),c.push(...p??[])}),s.verificationMaterial.tlogEntries=n,s.verificationMaterial.timestampVerificationData={rfc3161Timestamps:c},s}async prepare(e){return e.data}};gO.BaseBundleBuilder=I7;function swt(t){switch(t.$case){case\"publicKey\":return t.publicKey;case\"x509Certificate\":return t.certificate}}});var B7=_(bA=>{\"use strict\";var owt=bA&&bA.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),awt=bA&&bA.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),lwt=bA&&bA.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a<s.length;a++)s[a]!==\"default\"&&owt(r,e,s[a]);return awt(r,e),r}}();Object.defineProperty(bA,\"__esModule\",{value:!0});bA.toMessageSignatureBundle=cwt;bA.toDSSEBundle=uwt;var qDe=lwt(Ib()),w7=vg();function cwt(t,e){let r=w7.crypto.digest(\"sha256\",t.data);return qDe.toMessageSignatureBundle({digest:r,signature:e.signature,certificate:e.key.$case===\"x509Certificate\"?w7.pem.toDER(e.key.certificate):void 0,keyHint:e.key.$case===\"publicKey\"?e.key.hint:void 0,certificateChain:!0})}function uwt(t,e,r){return qDe.toDSSEBundle({artifact:t.data,artifactType:t.type,signature:e.signature,certificate:e.key.$case===\"x509Certificate\"?w7.pem.toDER(e.key.certificate):void 0,keyHint:e.key.$case===\"publicKey\"?e.key.hint:void 0,certificateChain:r})}});var YDe=_(dO=>{\"use strict\";Object.defineProperty(dO,\"__esModule\",{value:!0});dO.DSSEBundleBuilder=void 0;var fwt=vg(),Awt=C7(),pwt=B7(),v7=class extends Awt.BaseBundleBuilder{constructor(e){super(e),this.certificateChain=e.certificateChain??!1}async prepare(e){let r=WDe(e);return fwt.dsse.preAuthEncoding(r.type,r.data)}async package(e,r){return(0,pwt.toDSSEBundle)(WDe(e),r,this.certificateChain)}};dO.DSSEBundleBuilder=v7;function WDe(t){return{...t,type:t.type??\"\"}}});var VDe=_(mO=>{\"use strict\";Object.defineProperty(mO,\"__esModule\",{value:!0});mO.MessageSignatureBundleBuilder=void 0;var hwt=C7(),gwt=B7(),S7=class extends hwt.BaseBundleBuilder{constructor(e){super(e)}async package(e,r){return(0,gwt.toMessageSignatureBundle)(e,r)}};mO.MessageSignatureBundleBuilder=S7});var JDe=_(Zw=>{\"use strict\";Object.defineProperty(Zw,\"__esModule\",{value:!0});Zw.MessageSignatureBundleBuilder=Zw.DSSEBundleBuilder=void 0;var dwt=YDe();Object.defineProperty(Zw,\"DSSEBundleBuilder\",{enumerable:!0,get:function(){return dwt.DSSEBundleBuilder}});var mwt=VDe();Object.defineProperty(Zw,\"MessageSignatureBundleBuilder\",{enumerable:!0,get:function(){return mwt.MessageSignatureBundleBuilder}})});var EO=_(yO=>{\"use strict\";Object.defineProperty(yO,\"__esModule\",{value:!0});yO.HTTPError=void 0;var D7=class extends Error{constructor({status:e,message:r,location:s}){super(`(${e}) ${r}`),this.statusCode=e,this.location=s}};yO.HTTPError=D7});var $w=_(Db=>{\"use strict\";Object.defineProperty(Db,\"__esModule\",{value:!0});Db.InternalError=void 0;Db.internalError=Ewt;var ywt=EO(),IO=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.name=this.constructor.name,this.cause=s,this.code=e}};Db.InternalError=IO;function Ewt(t,e,r){throw t instanceof ywt.HTTPError&&(r+=` - ${t.message}`),new IO({code:e,message:r,cause:t})}});var CO=_((Dnr,KDe)=>{KDe.exports=fetch});var zDe=_(e1=>{\"use strict\";var Iwt=e1&&e1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e1,\"__esModule\",{value:!0});e1.CIContextProvider=void 0;var Cwt=Iwt(CO()),wwt=[Bwt,vwt],b7=class{constructor(e=\"sigstore\"){this.audience=e}async getToken(){return Promise.any(wwt.map(e=>e(this.audience))).catch(()=>Promise.reject(\"CI: no tokens available\"))}};e1.CIContextProvider=b7;async function Bwt(t){if(!process.env.ACTIONS_ID_TOKEN_REQUEST_URL||!process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN)return Promise.reject(\"no token available\");let e=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);return e.searchParams.append(\"audience\",t),(await(0,Cwt.default)(e.href,{retry:2,headers:{Accept:\"application/json\",Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).json().then(s=>s.value)}async function vwt(){return process.env.SIGSTORE_ID_TOKEN?process.env.SIGSTORE_ID_TOKEN:Promise.reject(\"no token available\")}});var XDe=_(wO=>{\"use strict\";Object.defineProperty(wO,\"__esModule\",{value:!0});wO.CIContextProvider=void 0;var Swt=zDe();Object.defineProperty(wO,\"CIContextProvider\",{enumerable:!0,get:function(){return Swt.CIContextProvider}})});var $De=_((xnr,ZDe)=>{var Dwt=Symbol(\"proc-log.meta\");ZDe.exports={META:Dwt,output:{LEVELS:[\"standard\",\"error\",\"buffer\",\"flush\"],KEYS:{standard:\"standard\",error:\"error\",buffer:\"buffer\",flush:\"flush\"},standard:function(...t){return process.emit(\"output\",\"standard\",...t)},error:function(...t){return process.emit(\"output\",\"error\",...t)},buffer:function(...t){return process.emit(\"output\",\"buffer\",...t)},flush:function(...t){return process.emit(\"output\",\"flush\",...t)}},log:{LEVELS:[\"notice\",\"error\",\"warn\",\"info\",\"verbose\",\"http\",\"silly\",\"timing\",\"pause\",\"resume\"],KEYS:{notice:\"notice\",error:\"error\",warn:\"warn\",info:\"info\",verbose:\"verbose\",http:\"http\",silly:\"silly\",timing:\"timing\",pause:\"pause\",resume:\"resume\"},error:function(...t){return process.emit(\"log\",\"error\",...t)},notice:function(...t){return process.emit(\"log\",\"notice\",...t)},warn:function(...t){return process.emit(\"log\",\"warn\",...t)},info:function(...t){return process.emit(\"log\",\"info\",...t)},verbose:function(...t){return process.emit(\"log\",\"verbose\",...t)},http:function(...t){return process.emit(\"log\",\"http\",...t)},silly:function(...t){return process.emit(\"log\",\"silly\",...t)},timing:function(...t){return process.emit(\"log\",\"timing\",...t)},pause:function(){return process.emit(\"log\",\"pause\")},resume:function(){return process.emit(\"log\",\"resume\")}},time:{LEVELS:[\"start\",\"end\"],KEYS:{start:\"start\",end:\"end\"},start:function(t,e){process.emit(\"time\",\"start\",t);function r(){return process.emit(\"time\",\"end\",t)}if(typeof e==\"function\"){let s=e();return s&&s.finally?s.finally(r):(r(),s)}return r},end:function(t){return process.emit(\"time\",\"end\",t)}},input:{LEVELS:[\"start\",\"end\",\"read\"],KEYS:{start:\"start\",end:\"end\",read:\"read\"},start:function(t){process.emit(\"input\",\"start\");function e(){return process.emit(\"input\",\"end\")}if(typeof t==\"function\"){let r=t();return r&&r.finally?r.finally(e):(e(),r)}return e},end:function(){return process.emit(\"input\",\"end\")},read:function(...t){let e,r,s=new Promise((a,n)=>{e=a,r=n});return process.emit(\"input\",\"read\",e,r,...t),s}}}});var rbe=_((knr,tbe)=>{\"use strict\";function ebe(t,e){for(let r in e)Object.defineProperty(t,r,{value:e[r],enumerable:!0,configurable:!0});return t}function bwt(t,e,r){if(!t||typeof t==\"string\")throw new TypeError(\"Please pass an Error to err-code\");r||(r={}),typeof e==\"object\"&&(r=e,e=void 0),e!=null&&(r.code=e);try{return ebe(t,r)}catch{r.message=t.message,r.stack=t.stack;let a=function(){};return a.prototype=Object.create(Object.getPrototypeOf(t)),ebe(new a,r)}}tbe.exports=bwt});var ibe=_((Qnr,nbe)=>{function $c(t,e){typeof e==\"boolean\"&&(e={forever:e}),this._originalTimeouts=JSON.parse(JSON.stringify(t)),this._timeouts=t,this._options=e||{},this._maxRetryTime=e&&e.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}nbe.exports=$c;$c.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts};$c.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null};$c.prototype.retry=function(t){if(this._timeout&&clearTimeout(this._timeout),!t)return!1;var e=new Date().getTime();if(t&&e-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error(\"RetryOperation timeout occurred\")),!1;this._errors.push(t);var r=this._timeouts.shift();if(r===void 0)if(this._cachedTimeouts)this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),r=this._timeouts.shift();else return!1;var s=this,a=setTimeout(function(){s._attempts++,s._operationTimeoutCb&&(s._timeout=setTimeout(function(){s._operationTimeoutCb(s._attempts)},s._operationTimeout),s._options.unref&&s._timeout.unref()),s._fn(s._attempts)},r);return this._options.unref&&a.unref(),!0};$c.prototype.attempt=function(t,e){this._fn=t,e&&(e.timeout&&(this._operationTimeout=e.timeout),e.cb&&(this._operationTimeoutCb=e.cb));var r=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){r._operationTimeoutCb()},r._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};$c.prototype.try=function(t){console.log(\"Using RetryOperation.try() is deprecated\"),this.attempt(t)};$c.prototype.start=function(t){console.log(\"Using RetryOperation.start() is deprecated\"),this.attempt(t)};$c.prototype.start=$c.prototype.try;$c.prototype.errors=function(){return this._errors};$c.prototype.attempts=function(){return this._attempts};$c.prototype.mainError=function(){if(this._errors.length===0)return null;for(var t={},e=null,r=0,s=0;s<this._errors.length;s++){var a=this._errors[s],n=a.message,c=(t[n]||0)+1;t[n]=c,c>=r&&(e=a,r=c)}return e}});var sbe=_(iy=>{var Pwt=ibe();iy.operation=function(t){var e=iy.timeouts(t);return new Pwt(e,{forever:t&&t.forever,unref:t&&t.unref,maxRetryTime:t&&t.maxRetryTime})};iy.timeouts=function(t){if(t instanceof Array)return[].concat(t);var e={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var r in t)e[r]=t[r];if(e.minTimeout>e.maxTimeout)throw new Error(\"minTimeout is greater than maxTimeout\");for(var s=[],a=0;a<e.retries;a++)s.push(this.createTimeout(a,e));return t&&t.forever&&!s.length&&s.push(this.createTimeout(a,e)),s.sort(function(n,c){return n-c}),s};iy.createTimeout=function(t,e){var r=e.randomize?Math.random()+1:1,s=Math.round(r*e.minTimeout*Math.pow(e.factor,t));return s=Math.min(s,e.maxTimeout),s};iy.wrap=function(t,e,r){if(e instanceof Array&&(r=e,e=null),!r){r=[];for(var s in t)typeof t[s]==\"function\"&&r.push(s)}for(var a=0;a<r.length;a++){var n=r[a],c=t[n];t[n]=function(p){var h=iy.operation(e),E=Array.prototype.slice.call(arguments,1),C=E.pop();E.push(function(S){h.retry(S)||(S&&(arguments[0]=h.mainError()),C.apply(this,arguments))}),h.attempt(function(){p.apply(t,E)})}.bind(t,c),t[n].options=e}}});var abe=_((Rnr,obe)=>{obe.exports=sbe()});var ube=_((Fnr,cbe)=>{\"use strict\";var xwt=rbe(),kwt=abe(),Qwt=Object.prototype.hasOwnProperty;function lbe(t){return t&&t.code===\"EPROMISERETRY\"&&Qwt.call(t,\"retried\")}function Twt(t,e){var r,s;return typeof t==\"object\"&&typeof e==\"function\"&&(r=e,e=t,t=r),s=kwt.operation(e),new Promise(function(a,n){s.attempt(function(c){Promise.resolve().then(function(){return t(function(f){throw lbe(f)&&(f=f.retried),xwt(new Error(\"Retrying\"),\"EPROMISERETRY\",{retried:f})},c)}).then(a,function(f){lbe(f)&&(f=f.retried,s.retry(f||new Error))||n(f)})})})}cbe.exports=Twt});var BO=_(bb=>{\"use strict\";var Abe=bb&&bb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(bb,\"__esModule\",{value:!0});bb.fetchWithRetry=qwt;var Rwt=Ie(\"http2\"),Fwt=Abe(CO()),fbe=$De(),Nwt=Abe(ube()),Owt=vg(),Lwt=EO(),{HTTP2_HEADER_LOCATION:Mwt,HTTP2_HEADER_CONTENT_TYPE:Uwt,HTTP2_HEADER_USER_AGENT:_wt,HTTP_STATUS_INTERNAL_SERVER_ERROR:Hwt,HTTP_STATUS_TOO_MANY_REQUESTS:jwt,HTTP_STATUS_REQUEST_TIMEOUT:Gwt}=Rwt.constants;async function qwt(t,e){return(0,Nwt.default)(async(r,s)=>{let a=e.method||\"POST\",n={[_wt]:Owt.ua.getUserAgent(),...e.headers},c=await(0,Fwt.default)(t,{method:a,headers:n,body:e.body,timeout:e.timeout,retry:!1}).catch(f=>(fbe.log.http(\"fetch\",`${a} ${t} attempt ${s} failed with ${f}`),r(f)));if(c.ok)return c;{let f=await Wwt(c);if(fbe.log.http(\"fetch\",`${a} ${t} attempt ${s} failed with ${c.status}`),Ywt(c.status))return r(f);throw f}},Vwt(e.retry))}var Wwt=async t=>{let e=t.statusText,r=t.headers.get(Mwt)||void 0;if(t.headers.get(Uwt)?.includes(\"application/json\"))try{e=(await t.json()).message||e}catch{}return new Lwt.HTTPError({status:t.status,message:e,location:r})},Ywt=t=>[Gwt,jwt].includes(t)||t>=Hwt,Vwt=t=>typeof t==\"boolean\"?{retries:t?1:0}:typeof t==\"number\"?{retries:t}:{retries:0,...t}});var pbe=_(vO=>{\"use strict\";Object.defineProperty(vO,\"__esModule\",{value:!0});vO.Fulcio=void 0;var Jwt=BO(),P7=class{constructor(e){this.options=e}async createSigningCertificate(e){let{baseURL:r,retry:s,timeout:a}=this.options,n=`${r}/api/v2/signingCert`;return(await(0,Jwt.fetchWithRetry)(n,{headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(e),timeout:a,retry:s})).json()}};vO.Fulcio=P7});var hbe=_(SO=>{\"use strict\";Object.defineProperty(SO,\"__esModule\",{value:!0});SO.CAClient=void 0;var Kwt=$w(),zwt=pbe(),x7=class{constructor(e){this.fulcio=new zwt.Fulcio({baseURL:e.fulcioBaseURL,retry:e.retry,timeout:e.timeout})}async createSigningCertificate(e,r,s){let a=Xwt(e,r,s);try{let n=await this.fulcio.createSigningCertificate(a);return(n.signedCertificateEmbeddedSct?n.signedCertificateEmbeddedSct:n.signedCertificateDetachedSct).chain.certificates}catch(n){(0,Kwt.internalError)(n,\"CA_CREATE_SIGNING_CERTIFICATE_ERROR\",\"error creating signing certificate\")}}};SO.CAClient=x7;function Xwt(t,e,r){return{credentials:{oidcIdentityToken:t},publicKeyRequest:{publicKey:{algorithm:\"ECDSA\",content:e},proofOfPossession:r.toString(\"base64\")}}}});var dbe=_(t1=>{\"use strict\";var Zwt=t1&&t1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(t1,\"__esModule\",{value:!0});t1.EphemeralSigner=void 0;var gbe=Zwt(Ie(\"crypto\")),$wt=\"ec\",e1t=\"P-256\",k7=class{constructor(){this.keypair=gbe.default.generateKeyPairSync($wt,{namedCurve:e1t})}async sign(e){let r=gbe.default.sign(null,e,this.keypair.privateKey),s=this.keypair.publicKey.export({format:\"pem\",type:\"spki\"}).toString(\"ascii\");return{signature:r,key:{$case:\"publicKey\",publicKey:s}}}};t1.EphemeralSigner=k7});var mbe=_(sy=>{\"use strict\";Object.defineProperty(sy,\"__esModule\",{value:!0});sy.FulcioSigner=sy.DEFAULT_FULCIO_URL=void 0;var Q7=$w(),t1t=vg(),r1t=hbe(),n1t=dbe();sy.DEFAULT_FULCIO_URL=\"https://fulcio.sigstore.dev\";var T7=class{constructor(e){this.ca=new r1t.CAClient({...e,fulcioBaseURL:e.fulcioBaseURL||sy.DEFAULT_FULCIO_URL}),this.identityProvider=e.identityProvider,this.keyHolder=e.keyHolder||new n1t.EphemeralSigner}async sign(e){let r=await this.getIdentityToken(),s;try{s=t1t.oidc.extractJWTSubject(r)}catch(f){throw new Q7.InternalError({code:\"IDENTITY_TOKEN_PARSE_ERROR\",message:`invalid identity token: ${r}`,cause:f})}let a=await this.keyHolder.sign(Buffer.from(s));if(a.key.$case!==\"publicKey\")throw new Q7.InternalError({code:\"CA_CREATE_SIGNING_CERTIFICATE_ERROR\",message:\"unexpected format for signing key\"});let n=await this.ca.createSigningCertificate(r,a.key.publicKey,a.signature);return{signature:(await this.keyHolder.sign(e)).signature,key:{$case:\"x509Certificate\",certificate:n[0]}}}async getIdentityToken(){try{return await this.identityProvider.getToken()}catch(e){throw new Q7.InternalError({code:\"IDENTITY_TOKEN_READ_ERROR\",message:\"error retrieving identity token\",cause:e})}}};sy.FulcioSigner=T7});var Ebe=_(r1=>{\"use strict\";Object.defineProperty(r1,\"__esModule\",{value:!0});r1.FulcioSigner=r1.DEFAULT_FULCIO_URL=void 0;var ybe=mbe();Object.defineProperty(r1,\"DEFAULT_FULCIO_URL\",{enumerable:!0,get:function(){return ybe.DEFAULT_FULCIO_URL}});Object.defineProperty(r1,\"FulcioSigner\",{enumerable:!0,get:function(){return ybe.FulcioSigner}})});var wbe=_(DO=>{\"use strict\";Object.defineProperty(DO,\"__esModule\",{value:!0});DO.Rekor=void 0;var Ibe=BO(),R7=class{constructor(e){this.options=e}async createEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries`,f=await(await(0,Ibe.fetchWithRetry)(n,{headers:{\"Content-Type\":\"application/json\",Accept:\"application/json\"},body:JSON.stringify(e),timeout:s,retry:a})).json();return Cbe(f)}async getEntry(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/log/entries/${e}`,f=await(await(0,Ibe.fetchWithRetry)(n,{method:\"GET\",headers:{Accept:\"application/json\"},timeout:s,retry:a})).json();return Cbe(f)}};DO.Rekor=R7;function Cbe(t){let e=Object.entries(t);if(e.length!=1)throw new Error(\"Received multiple entries in Rekor response\");let[r,s]=e[0];return{...s,uuid:r}}});var vbe=_(bO=>{\"use strict\";Object.defineProperty(bO,\"__esModule\",{value:!0});bO.TLogClient=void 0;var Bbe=$w(),i1t=EO(),s1t=wbe(),F7=class{constructor(e){this.fetchOnConflict=e.fetchOnConflict??!1,this.rekor=new s1t.Rekor({baseURL:e.rekorBaseURL,retry:e.retry,timeout:e.timeout})}async createEntry(e){let r;try{r=await this.rekor.createEntry(e)}catch(s){if(o1t(s)&&this.fetchOnConflict){let a=s.location.split(\"/\").pop()||\"\";try{r=await this.rekor.getEntry(a)}catch(n){(0,Bbe.internalError)(n,\"TLOG_FETCH_ENTRY_ERROR\",\"error fetching tlog entry\")}}else(0,Bbe.internalError)(s,\"TLOG_CREATE_ENTRY_ERROR\",\"error creating tlog entry\")}return r}};bO.TLogClient=F7;function o1t(t){return t instanceof i1t.HTTPError&&t.statusCode===409&&t.location!==void 0}});var Sbe=_(N7=>{\"use strict\";Object.defineProperty(N7,\"__esModule\",{value:!0});N7.toProposedEntry=l1t;var a1t=Ib(),Sg=vg(),Pb=\"sha256\";function l1t(t,e,r=\"dsse\"){switch(t.$case){case\"dsseEnvelope\":return r===\"intoto\"?f1t(t.dsseEnvelope,e):u1t(t.dsseEnvelope,e);case\"messageSignature\":return c1t(t.messageSignature,e)}}function c1t(t,e){let r=t.messageDigest.digest.toString(\"hex\"),s=t.signature.toString(\"base64\"),a=Sg.encoding.base64Encode(e);return{apiVersion:\"0.0.1\",kind:\"hashedrekord\",spec:{data:{hash:{algorithm:Pb,value:r}},signature:{content:s,publicKey:{content:a}}}}}function u1t(t,e){let r=JSON.stringify((0,a1t.envelopeToJSON)(t)),s=Sg.encoding.base64Encode(e);return{apiVersion:\"0.0.1\",kind:\"dsse\",spec:{proposedContent:{envelope:r,verifiers:[s]}}}}function f1t(t,e){let r=Sg.crypto.digest(Pb,t.payload).toString(\"hex\"),s=A1t(t,e),a=Sg.encoding.base64Encode(t.payload.toString(\"base64\")),n=Sg.encoding.base64Encode(t.signatures[0].sig.toString(\"base64\")),c=t.signatures[0].keyid,f=Sg.encoding.base64Encode(e),p={payloadType:t.payloadType,payload:a,signatures:[{sig:n,publicKey:f}]};return c.length>0&&(p.signatures[0].keyid=c),{apiVersion:\"0.0.2\",kind:\"intoto\",spec:{content:{envelope:p,hash:{algorithm:Pb,value:s},payloadHash:{algorithm:Pb,value:r}}}}}function A1t(t,e){let r={payloadType:t.payloadType,payload:t.payload.toString(\"base64\"),signatures:[{sig:t.signatures[0].sig.toString(\"base64\"),publicKey:e}]};return t.signatures[0].keyid.length>0&&(r.signatures[0].keyid=t.signatures[0].keyid),Sg.crypto.digest(Pb,Sg.json.canonicalize(r)).toString(\"hex\")}});var Dbe=_(oy=>{\"use strict\";Object.defineProperty(oy,\"__esModule\",{value:!0});oy.RekorWitness=oy.DEFAULT_REKOR_URL=void 0;var p1t=vg(),h1t=vbe(),g1t=Sbe();oy.DEFAULT_REKOR_URL=\"https://rekor.sigstore.dev\";var O7=class{constructor(e){this.entryType=e.entryType,this.tlog=new h1t.TLogClient({...e,rekorBaseURL:e.rekorBaseURL||oy.DEFAULT_REKOR_URL})}async testify(e,r){let s=(0,g1t.toProposedEntry)(e,r,this.entryType),a=await this.tlog.createEntry(s);return d1t(a)}};oy.RekorWitness=O7;function d1t(t){let e=Buffer.from(t.logID,\"hex\"),r=p1t.encoding.base64Decode(t.body),s=JSON.parse(r),a=t?.verification?.signedEntryTimestamp?m1t(t.verification.signedEntryTimestamp):void 0,n=t?.verification?.inclusionProof?y1t(t.verification.inclusionProof):void 0;return{tlogEntries:[{logIndex:t.logIndex.toString(),logId:{keyId:e},integratedTime:t.integratedTime.toString(),kindVersion:{kind:s.kind,version:s.apiVersion},inclusionPromise:a,inclusionProof:n,canonicalizedBody:Buffer.from(t.body,\"base64\")}]}}function m1t(t){return{signedEntryTimestamp:Buffer.from(t,\"base64\")}}function y1t(t){return{logIndex:t.logIndex.toString(),treeSize:t.treeSize.toString(),rootHash:Buffer.from(t.rootHash,\"hex\"),hashes:t.hashes.map(e=>Buffer.from(e,\"hex\")),checkpoint:{envelope:t.checkpoint}}}});var bbe=_(PO=>{\"use strict\";Object.defineProperty(PO,\"__esModule\",{value:!0});PO.TimestampAuthority=void 0;var E1t=BO(),L7=class{constructor(e){this.options=e}async createTimestamp(e){let{baseURL:r,timeout:s,retry:a}=this.options,n=`${r}/api/v1/timestamp`;return(await(0,E1t.fetchWithRetry)(n,{headers:{\"Content-Type\":\"application/json\"},body:JSON.stringify(e),timeout:s,retry:a})).buffer()}};PO.TimestampAuthority=L7});var xbe=_(xO=>{\"use strict\";Object.defineProperty(xO,\"__esModule\",{value:!0});xO.TSAClient=void 0;var I1t=$w(),C1t=bbe(),w1t=vg(),Pbe=\"sha256\",M7=class{constructor(e){this.tsa=new C1t.TimestampAuthority({baseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async createTimestamp(e){let r={artifactHash:w1t.crypto.digest(Pbe,e).toString(\"base64\"),hashAlgorithm:Pbe};try{return await this.tsa.createTimestamp(r)}catch(s){(0,I1t.internalError)(s,\"TSA_CREATE_TIMESTAMP_ERROR\",\"error creating timestamp\")}}};xO.TSAClient=M7});var kbe=_(kO=>{\"use strict\";Object.defineProperty(kO,\"__esModule\",{value:!0});kO.TSAWitness=void 0;var B1t=xbe(),U7=class{constructor(e){this.tsa=new B1t.TSAClient({tsaBaseURL:e.tsaBaseURL,retry:e.retry,timeout:e.timeout})}async testify(e){let r=v1t(e);return{rfc3161Timestamps:[{signedTimestamp:await this.tsa.createTimestamp(r)}]}}};kO.TSAWitness=U7;function v1t(t){switch(t.$case){case\"dsseEnvelope\":return t.dsseEnvelope.signatures[0].sig;case\"messageSignature\":return t.messageSignature.signature}}});var Tbe=_(Dg=>{\"use strict\";Object.defineProperty(Dg,\"__esModule\",{value:!0});Dg.TSAWitness=Dg.RekorWitness=Dg.DEFAULT_REKOR_URL=void 0;var Qbe=Dbe();Object.defineProperty(Dg,\"DEFAULT_REKOR_URL\",{enumerable:!0,get:function(){return Qbe.DEFAULT_REKOR_URL}});Object.defineProperty(Dg,\"RekorWitness\",{enumerable:!0,get:function(){return Qbe.RekorWitness}});var S1t=kbe();Object.defineProperty(Dg,\"TSAWitness\",{enumerable:!0,get:function(){return S1t.TSAWitness}})});var H7=_(ys=>{\"use strict\";Object.defineProperty(ys,\"__esModule\",{value:!0});ys.TSAWitness=ys.RekorWitness=ys.DEFAULT_REKOR_URL=ys.FulcioSigner=ys.DEFAULT_FULCIO_URL=ys.CIContextProvider=ys.InternalError=ys.MessageSignatureBundleBuilder=ys.DSSEBundleBuilder=void 0;var Rbe=JDe();Object.defineProperty(ys,\"DSSEBundleBuilder\",{enumerable:!0,get:function(){return Rbe.DSSEBundleBuilder}});Object.defineProperty(ys,\"MessageSignatureBundleBuilder\",{enumerable:!0,get:function(){return Rbe.MessageSignatureBundleBuilder}});var D1t=$w();Object.defineProperty(ys,\"InternalError\",{enumerable:!0,get:function(){return D1t.InternalError}});var b1t=XDe();Object.defineProperty(ys,\"CIContextProvider\",{enumerable:!0,get:function(){return b1t.CIContextProvider}});var Fbe=Ebe();Object.defineProperty(ys,\"DEFAULT_FULCIO_URL\",{enumerable:!0,get:function(){return Fbe.DEFAULT_FULCIO_URL}});Object.defineProperty(ys,\"FulcioSigner\",{enumerable:!0,get:function(){return Fbe.FulcioSigner}});var _7=Tbe();Object.defineProperty(ys,\"DEFAULT_REKOR_URL\",{enumerable:!0,get:function(){return _7.DEFAULT_REKOR_URL}});Object.defineProperty(ys,\"RekorWitness\",{enumerable:!0,get:function(){return _7.RekorWitness}});Object.defineProperty(ys,\"TSAWitness\",{enumerable:!0,get:function(){return _7.TSAWitness}})});var Obe=_(xb=>{\"use strict\";var Nbe=xb&&xb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xb,\"__esModule\",{value:!0});xb.appDataPath=x1t;var P1t=Nbe(Ie(\"os\")),n1=Nbe(Ie(\"path\"));function x1t(t){let e=P1t.default.homedir();switch(process.platform){case\"darwin\":{let r=n1.default.join(e,\"Library\",\"Application Support\");return n1.default.join(r,t)}case\"win32\":{let r=process.env.LOCALAPPDATA||n1.default.join(e,\"AppData\",\"Local\");return n1.default.join(r,t,\"Data\")}default:{let r=process.env.XDG_DATA_HOME||n1.default.join(e,\".local\",\"share\");return n1.default.join(r,t)}}}});var PA=_(wl=>{\"use strict\";Object.defineProperty(wl,\"__esModule\",{value:!0});wl.UnsupportedAlgorithmError=wl.CryptoError=wl.LengthOrHashMismatchError=wl.UnsignedMetadataError=wl.RepositoryError=wl.ValueError=void 0;var j7=class extends Error{};wl.ValueError=j7;var kb=class extends Error{};wl.RepositoryError=kb;var G7=class extends kb{};wl.UnsignedMetadataError=G7;var q7=class extends kb{};wl.LengthOrHashMismatchError=q7;var QO=class extends Error{};wl.CryptoError=QO;var W7=class extends QO{};wl.UnsupportedAlgorithmError=W7});var Mbe=_(bg=>{\"use strict\";Object.defineProperty(bg,\"__esModule\",{value:!0});bg.isDefined=k1t;bg.isObject=Lbe;bg.isStringArray=Q1t;bg.isObjectArray=T1t;bg.isStringRecord=R1t;bg.isObjectRecord=F1t;function k1t(t){return t!==void 0}function Lbe(t){return typeof t==\"object\"&&t!==null}function Q1t(t){return Array.isArray(t)&&t.every(e=>typeof e==\"string\")}function T1t(t){return Array.isArray(t)&&t.every(Lbe)}function R1t(t){return typeof t==\"object\"&&t!==null&&Object.keys(t).every(e=>typeof e==\"string\")&&Object.values(t).every(e=>typeof e==\"string\")}function F1t(t){return typeof t==\"object\"&&t!==null&&Object.keys(t).every(e=>typeof e==\"string\")&&Object.values(t).every(e=>typeof e==\"object\"&&e!==null)}});var V7=_(($nr,Hbe)=>{var Ube=\",\",N1t=\":\",O1t=\"[\",L1t=\"]\",M1t=\"{\",U1t=\"}\";function Y7(t){let e=[];if(typeof t==\"string\")e.push(_be(t));else if(typeof t==\"boolean\")e.push(JSON.stringify(t));else if(Number.isInteger(t))e.push(JSON.stringify(t));else if(t===null)e.push(JSON.stringify(t));else if(Array.isArray(t)){e.push(O1t);let r=!0;t.forEach(s=>{r||e.push(Ube),r=!1,e.push(Y7(s))}),e.push(L1t)}else if(typeof t==\"object\"){e.push(M1t);let r=!0;Object.keys(t).sort().forEach(s=>{r||e.push(Ube),r=!1,e.push(_be(s)),e.push(N1t),e.push(Y7(t[s]))}),e.push(U1t)}else throw new TypeError(\"cannot encode \"+t.toString());return e.join(\"\")}function _be(t){return'\"'+t.replace(/\\\\/g,\"\\\\\\\\\").replace(/\"/g,'\\\\\"')+'\"'}Hbe.exports={canonicalize:Y7}});var jbe=_(i1=>{\"use strict\";var _1t=i1&&i1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(i1,\"__esModule\",{value:!0});i1.verifySignature=void 0;var H1t=V7(),j1t=_1t(Ie(\"crypto\")),G1t=(t,e,r)=>{let s=Buffer.from((0,H1t.canonicalize)(t));return j1t.default.verify(void 0,s,e,Buffer.from(r,\"hex\"))};i1.verifySignature=G1t});var ff=_(eu=>{\"use strict\";var q1t=eu&&eu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),W1t=eu&&eu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Gbe=eu&&eu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&q1t(e,t,r);return W1t(e,t),e};Object.defineProperty(eu,\"__esModule\",{value:!0});eu.crypto=eu.guard=void 0;eu.guard=Gbe(Mbe());eu.crypto=Gbe(jbe())});var ay=_(hh=>{\"use strict\";var Y1t=hh&&hh.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(hh,\"__esModule\",{value:!0});hh.Signed=hh.MetadataKind=void 0;hh.isMetadataKind=J1t;var V1t=Y1t(Ie(\"util\")),Qb=PA(),J7=ff(),qbe=[\"1\",\"0\",\"31\"],K7;(function(t){t.Root=\"root\",t.Timestamp=\"timestamp\",t.Snapshot=\"snapshot\",t.Targets=\"targets\"})(K7||(hh.MetadataKind=K7={}));function J1t(t){return typeof t==\"string\"&&Object.values(K7).includes(t)}var z7=class t{constructor(e){this.specVersion=e.specVersion||qbe.join(\".\");let r=this.specVersion.split(\".\");if(!(r.length===2||r.length===3)||!r.every(s=>K1t(s)))throw new Qb.ValueError(\"Failed to parse specVersion\");if(r[0]!=qbe[0])throw new Qb.ValueError(\"Unsupported specVersion\");this.expires=e.expires,this.version=e.version,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.specVersion===e.specVersion&&this.expires===e.expires&&this.version===e.version&&V1t.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}isExpired(e){return e||(e=new Date),e>=new Date(this.expires)}static commonFieldsFromJSON(e){let{spec_version:r,expires:s,version:a,...n}=e;if(J7.guard.isDefined(r)){if(typeof r!=\"string\")throw new TypeError(\"spec_version must be a string\")}else throw new Qb.ValueError(\"spec_version is not defined\");if(J7.guard.isDefined(s)){if(typeof s!=\"string\")throw new TypeError(\"expires must be a string\")}else throw new Qb.ValueError(\"expires is not defined\");if(J7.guard.isDefined(a)){if(typeof a!=\"number\")throw new TypeError(\"version must be a number\")}else throw new Qb.ValueError(\"version is not defined\");return{specVersion:r,expires:s,version:a,unrecognizedFields:n}}};hh.Signed=z7;function K1t(t){return!isNaN(Number(t))}});var Tb=_(xg=>{\"use strict\";var Wbe=xg&&xg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(xg,\"__esModule\",{value:!0});xg.TargetFile=xg.MetaFile=void 0;var Ybe=Wbe(Ie(\"crypto\")),RO=Wbe(Ie(\"util\")),Pg=PA(),TO=ff(),X7=class t{constructor(e){if(e.version<=0)throw new Pg.ValueError(\"Metafile version must be at least 1\");e.length!==void 0&&Vbe(e.length),this.version=e.version,this.length=e.length,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}equals(e){return e instanceof t?this.version===e.version&&this.length===e.length&&RO.default.isDeepStrictEqual(this.hashes,e.hashes)&&RO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}verify(e){if(this.length!==void 0&&e.length!==this.length)throw new Pg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${e.length}`);this.hashes&&Object.entries(this.hashes).forEach(([r,s])=>{let a;try{a=Ybe.default.createHash(r)}catch{throw new Pg.LengthOrHashMismatchError(`Hash algorithm ${r} not supported`)}let n=a.update(e).digest(\"hex\");if(n!==s)throw new Pg.LengthOrHashMismatchError(`Expected hash ${s} but got ${n}`)})}toJSON(){let e={version:this.version,...this.unrecognizedFields};return this.length!==void 0&&(e.length=this.length),this.hashes&&(e.hashes=this.hashes),e}static fromJSON(e){let{version:r,length:s,hashes:a,...n}=e;if(typeof r!=\"number\")throw new TypeError(\"version must be a number\");if(TO.guard.isDefined(s)&&typeof s!=\"number\")throw new TypeError(\"length must be a number\");if(TO.guard.isDefined(a)&&!TO.guard.isStringRecord(a))throw new TypeError(\"hashes must be string keys and values\");return new t({version:r,length:s,hashes:a,unrecognizedFields:n})}};xg.MetaFile=X7;var Z7=class t{constructor(e){Vbe(e.length),this.length=e.length,this.path=e.path,this.hashes=e.hashes,this.unrecognizedFields=e.unrecognizedFields||{}}get custom(){let e=this.unrecognizedFields.custom;return!e||Array.isArray(e)||typeof e!=\"object\"?{}:e}equals(e){return e instanceof t?this.length===e.length&&this.path===e.path&&RO.default.isDeepStrictEqual(this.hashes,e.hashes)&&RO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}async verify(e){let r=0,s=Object.keys(this.hashes).reduce((a,n)=>{try{a[n]=Ybe.default.createHash(n)}catch{throw new Pg.LengthOrHashMismatchError(`Hash algorithm ${n} not supported`)}return a},{});for await(let a of e)r+=a.length,Object.values(s).forEach(n=>{n.update(a)});if(r!==this.length)throw new Pg.LengthOrHashMismatchError(`Expected length ${this.length} but got ${r}`);Object.entries(s).forEach(([a,n])=>{let c=this.hashes[a],f=n.digest(\"hex\");if(f!==c)throw new Pg.LengthOrHashMismatchError(`Expected hash ${c} but got ${f}`)})}toJSON(){return{length:this.length,hashes:this.hashes,...this.unrecognizedFields}}static fromJSON(e,r){let{length:s,hashes:a,...n}=r;if(typeof s!=\"number\")throw new TypeError(\"length must be a number\");if(!TO.guard.isStringRecord(a))throw new TypeError(\"hashes must have string keys and values\");return new t({length:s,path:e,hashes:a,unrecognizedFields:n})}};xg.TargetFile=Z7;function Vbe(t){if(t<0)throw new Pg.ValueError(\"Length must be at least 0\")}});var Jbe=_($7=>{\"use strict\";Object.defineProperty($7,\"__esModule\",{value:!0});$7.encodeOIDString=X1t;var z1t=6;function X1t(t){let e=t.split(\".\"),r=parseInt(e[0],10)*40+parseInt(e[1],10),s=[];e.slice(2).forEach(n=>{let c=Z1t(parseInt(n,10));s.push(...c)});let a=Buffer.from([r,...s]);return Buffer.from([z1t,a.length,...a])}function Z1t(t){let e=[],r=0;for(;t>0;)e.unshift(t&127|r),t>>=7,r=128;return e}});var Zbe=_(Fb=>{\"use strict\";var $1t=Fb&&Fb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Fb,\"__esModule\",{value:!0});Fb.getPublicKey=n2t;var s1=$1t(Ie(\"crypto\")),Rb=PA(),eJ=Jbe(),FO=48,Kbe=3,zbe=0,e2t=\"1.3.101.112\",t2t=\"1.2.840.10045.2.1\",r2t=\"1.2.840.10045.3.1.7\",tJ=\"-----BEGIN PUBLIC KEY-----\";function n2t(t){switch(t.keyType){case\"rsa\":return i2t(t);case\"ed25519\":return s2t(t);case\"ecdsa\":case\"ecdsa-sha2-nistp256\":case\"ecdsa-sha2-nistp384\":return o2t(t);default:throw new Rb.UnsupportedAlgorithmError(`Unsupported key type: ${t.keyType}`)}}function i2t(t){if(!t.keyVal.startsWith(tJ))throw new Rb.CryptoError(\"Invalid key format\");let e=s1.default.createPublicKey(t.keyVal);switch(t.scheme){case\"rsassa-pss-sha256\":return{key:e,padding:s1.default.constants.RSA_PKCS1_PSS_PADDING};default:throw new Rb.UnsupportedAlgorithmError(`Unsupported RSA scheme: ${t.scheme}`)}}function s2t(t){let e;if(t.keyVal.startsWith(tJ))e=s1.default.createPublicKey(t.keyVal);else{if(!Xbe(t.keyVal))throw new Rb.CryptoError(\"Invalid key format\");e=s1.default.createPublicKey({key:a2t.hexToDER(t.keyVal),format:\"der\",type:\"spki\"})}return{key:e}}function o2t(t){let e;if(t.keyVal.startsWith(tJ))e=s1.default.createPublicKey(t.keyVal);else{if(!Xbe(t.keyVal))throw new Rb.CryptoError(\"Invalid key format\");e=s1.default.createPublicKey({key:l2t.hexToDER(t.keyVal),format:\"der\",type:\"spki\"})}return{key:e}}var a2t={hexToDER:t=>{let e=Buffer.from(t,\"hex\"),r=(0,eJ.encodeOIDString)(e2t),s=Buffer.concat([Buffer.concat([Buffer.from([FO]),Buffer.from([r.length]),r]),Buffer.concat([Buffer.from([Kbe]),Buffer.from([e.length+1]),Buffer.from([zbe]),e])]);return Buffer.concat([Buffer.from([FO]),Buffer.from([s.length]),s])}},l2t={hexToDER:t=>{let e=Buffer.from(t,\"hex\"),r=Buffer.concat([Buffer.from([Kbe]),Buffer.from([e.length+1]),Buffer.from([zbe]),e]),s=Buffer.concat([(0,eJ.encodeOIDString)(t2t),(0,eJ.encodeOIDString)(r2t)]),a=Buffer.concat([Buffer.from([FO]),Buffer.from([s.length]),s]);return Buffer.concat([Buffer.from([FO]),Buffer.from([a.length+r.length]),a,r])}},Xbe=t=>/^[0-9a-fA-F]+$/.test(t)});var NO=_(o1=>{\"use strict\";var c2t=o1&&o1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(o1,\"__esModule\",{value:!0});o1.Key=void 0;var $be=c2t(Ie(\"util\")),Nb=PA(),ePe=ff(),u2t=Zbe(),rJ=class t{constructor(e){let{keyID:r,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c}=e;this.keyID=r,this.keyType=s,this.scheme=a,this.keyVal=n,this.unrecognizedFields=c||{}}verifySignature(e){let r=e.signatures[this.keyID];if(!r)throw new Nb.UnsignedMetadataError(\"no signature for key found in metadata\");if(!this.keyVal.public)throw new Nb.UnsignedMetadataError(\"no public key found\");let s=(0,u2t.getPublicKey)({keyType:this.keyType,scheme:this.scheme,keyVal:this.keyVal.public}),a=e.signed.toJSON();try{if(!ePe.crypto.verifySignature(a,s,r.sig))throw new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}catch(n){throw n instanceof Nb.UnsignedMetadataError?n:new Nb.UnsignedMetadataError(`failed to verify ${this.keyID} signature`)}}equals(e){return e instanceof t?this.keyID===e.keyID&&this.keyType===e.keyType&&this.scheme===e.scheme&&$be.default.isDeepStrictEqual(this.keyVal,e.keyVal)&&$be.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keytype:this.keyType,scheme:this.scheme,keyval:this.keyVal,...this.unrecognizedFields}}static fromJSON(e,r){let{keytype:s,scheme:a,keyval:n,...c}=r;if(typeof s!=\"string\")throw new TypeError(\"keytype must be a string\");if(typeof a!=\"string\")throw new TypeError(\"scheme must be a string\");if(!ePe.guard.isStringRecord(n))throw new TypeError(\"keyval must be a string record\");return new t({keyID:e,keyType:s,scheme:a,keyVal:n,unrecognizedFields:c})}};o1.Key=rJ});var sPe=_((air,iPe)=>{\"use strict\";iPe.exports=rPe;function rPe(t,e,r){t instanceof RegExp&&(t=tPe(t,r)),e instanceof RegExp&&(e=tPe(e,r));var s=nPe(t,e,r);return s&&{start:s[0],end:s[1],pre:r.slice(0,s[0]),body:r.slice(s[0]+t.length,s[1]),post:r.slice(s[1]+e.length)}}function tPe(t,e){var r=e.match(t);return r?r[0]:null}rPe.range=nPe;function nPe(t,e,r){var s,a,n,c,f,p=r.indexOf(t),h=r.indexOf(e,p+1),E=p;if(p>=0&&h>0){for(s=[],n=r.length;E>=0&&!f;)E==p?(s.push(E),p=r.indexOf(t,E+1)):s.length==1?f=[s.pop(),h]:(a=s.pop(),a<n&&(n=a,c=h),h=r.indexOf(e,E+1)),E=p<h&&p>=0?p:h;s.length&&(f=[n,c])}return f}});var pPe=_((lir,APe)=>{var oPe=sPe();APe.exports=p2t;var aPe=\"\\0SLASH\"+Math.random()+\"\\0\",lPe=\"\\0OPEN\"+Math.random()+\"\\0\",iJ=\"\\0CLOSE\"+Math.random()+\"\\0\",cPe=\"\\0COMMA\"+Math.random()+\"\\0\",uPe=\"\\0PERIOD\"+Math.random()+\"\\0\";function nJ(t){return parseInt(t,10)==t?parseInt(t,10):t.charCodeAt(0)}function f2t(t){return t.split(\"\\\\\\\\\").join(aPe).split(\"\\\\{\").join(lPe).split(\"\\\\}\").join(iJ).split(\"\\\\,\").join(cPe).split(\"\\\\.\").join(uPe)}function A2t(t){return t.split(aPe).join(\"\\\\\").split(lPe).join(\"{\").split(iJ).join(\"}\").split(cPe).join(\",\").split(uPe).join(\".\")}function fPe(t){if(!t)return[\"\"];var e=[],r=oPe(\"{\",\"}\",t);if(!r)return t.split(\",\");var s=r.pre,a=r.body,n=r.post,c=s.split(\",\");c[c.length-1]+=\"{\"+a+\"}\";var f=fPe(n);return n.length&&(c[c.length-1]+=f.shift(),c.push.apply(c,f)),e.push.apply(e,c),e}function p2t(t){return t?(t.substr(0,2)===\"{}\"&&(t=\"\\\\{\\\\}\"+t.substr(2)),Ob(f2t(t),!0).map(A2t)):[]}function h2t(t){return\"{\"+t+\"}\"}function g2t(t){return/^-?0\\d/.test(t)}function d2t(t,e){return t<=e}function m2t(t,e){return t>=e}function Ob(t,e){var r=[],s=oPe(\"{\",\"}\",t);if(!s)return[t];var a=s.pre,n=s.post.length?Ob(s.post,!1):[\"\"];if(/\\$$/.test(s.pre))for(var c=0;c<n.length;c++){var f=a+\"{\"+s.body+\"}\"+n[c];r.push(f)}else{var p=/^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(s.body),h=/^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(s.body),E=p||h,C=s.body.indexOf(\",\")>=0;if(!E&&!C)return s.post.match(/,.*\\}/)?(t=s.pre+\"{\"+s.body+iJ+s.post,Ob(t)):[t];var S;if(E)S=s.body.split(/\\.\\./);else if(S=fPe(s.body),S.length===1&&(S=Ob(S[0],!1).map(h2t),S.length===1))return n.map(function(Ce){return s.pre+S[0]+Ce});var P;if(E){var I=nJ(S[0]),R=nJ(S[1]),N=Math.max(S[0].length,S[1].length),U=S.length==3?Math.abs(nJ(S[2])):1,W=d2t,ee=R<I;ee&&(U*=-1,W=m2t);var ie=S.some(g2t);P=[];for(var ue=I;W(ue,R);ue+=U){var le;if(h)le=String.fromCharCode(ue),le===\"\\\\\"&&(le=\"\");else if(le=String(ue),ie){var me=N-le.length;if(me>0){var pe=new Array(me+1).join(\"0\");ue<0?le=\"-\"+pe+le.slice(1):le=pe+le}}P.push(le)}}else{P=[];for(var Be=0;Be<S.length;Be++)P.push.apply(P,Ob(S[Be],!1))}for(var Be=0;Be<P.length;Be++)for(var c=0;c<n.length;c++){var f=a+P[Be]+n[c];(!e||E||f)&&r.push(f)}}return r}});var hPe=_(OO=>{\"use strict\";Object.defineProperty(OO,\"__esModule\",{value:!0});OO.assertValidPattern=void 0;var y2t=1024*64,E2t=t=>{if(typeof t!=\"string\")throw new TypeError(\"invalid pattern\");if(t.length>y2t)throw new TypeError(\"pattern is too long\")};OO.assertValidPattern=E2t});var dPe=_(LO=>{\"use strict\";Object.defineProperty(LO,\"__esModule\",{value:!0});LO.parseClass=void 0;var I2t={\"[:alnum:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\",!0],\"[:alpha:]\":[\"\\\\p{L}\\\\p{Nl}\",!0],\"[:ascii:]\":[\"\\\\x00-\\\\x7f\",!1],\"[:blank:]\":[\"\\\\p{Zs}\\\\t\",!0],\"[:cntrl:]\":[\"\\\\p{Cc}\",!0],\"[:digit:]\":[\"\\\\p{Nd}\",!0],\"[:graph:]\":[\"\\\\p{Z}\\\\p{C}\",!0,!0],\"[:lower:]\":[\"\\\\p{Ll}\",!0],\"[:print:]\":[\"\\\\p{C}\",!0],\"[:punct:]\":[\"\\\\p{P}\",!0],\"[:space:]\":[\"\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f\",!0],\"[:upper:]\":[\"\\\\p{Lu}\",!0],\"[:word:]\":[\"\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}\",!0],\"[:xdigit:]\":[\"A-Fa-f0-9\",!1]},Lb=t=>t.replace(/[[\\]\\\\-]/g,\"\\\\$&\"),C2t=t=>t.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),gPe=t=>t.join(\"\"),w2t=(t,e)=>{let r=e;if(t.charAt(r)!==\"[\")throw new Error(\"not in a brace expression\");let s=[],a=[],n=r+1,c=!1,f=!1,p=!1,h=!1,E=r,C=\"\";e:for(;n<t.length;){let R=t.charAt(n);if((R===\"!\"||R===\"^\")&&n===r+1){h=!0,n++;continue}if(R===\"]\"&&c&&!p){E=n+1;break}if(c=!0,R===\"\\\\\"&&!p){p=!0,n++;continue}if(R===\"[\"&&!p){for(let[N,[U,W,ee]]of Object.entries(I2t))if(t.startsWith(N,n)){if(C)return[\"$.\",!1,t.length-r,!0];n+=N.length,ee?a.push(U):s.push(U),f=f||W;continue e}}if(p=!1,C){R>C?s.push(Lb(C)+\"-\"+Lb(R)):R===C&&s.push(Lb(R)),C=\"\",n++;continue}if(t.startsWith(\"-]\",n+1)){s.push(Lb(R+\"-\")),n+=2;continue}if(t.startsWith(\"-\",n+1)){C=R,n+=2;continue}s.push(Lb(R)),n++}if(E<n)return[\"\",!1,0,!1];if(!s.length&&!a.length)return[\"$.\",!1,t.length-r,!0];if(a.length===0&&s.length===1&&/^\\\\?.$/.test(s[0])&&!h){let R=s[0].length===2?s[0].slice(-1):s[0];return[C2t(R),!1,E-r,!1]}let S=\"[\"+(h?\"^\":\"\")+gPe(s)+\"]\",P=\"[\"+(h?\"\":\"^\")+gPe(a)+\"]\";return[s.length&&a.length?\"(\"+S+\"|\"+P+\")\":s.length?S:P,f,E-r,!0]};LO.parseClass=w2t});var UO=_(MO=>{\"use strict\";Object.defineProperty(MO,\"__esModule\",{value:!0});MO.unescape=void 0;var B2t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/\\[([^\\/\\\\])\\]/g,\"$1\"):t.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g,\"$1$2\").replace(/\\\\([^\\/])/g,\"$1\");MO.unescape=B2t});var aJ=_(jO=>{\"use strict\";Object.defineProperty(jO,\"__esModule\",{value:!0});jO.AST=void 0;var v2t=dPe(),_O=UO(),S2t=new Set([\"!\",\"?\",\"+\",\"*\",\"@\"]),mPe=t=>S2t.has(t),D2t=\"(?!(?:^|/)\\\\.\\\\.?(?:$|/))\",HO=\"(?!\\\\.)\",b2t=new Set([\"[\",\".\"]),P2t=new Set([\"..\",\".\"]),x2t=new Set(\"().*{}+?[]^$\\\\!\"),k2t=t=>t.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),oJ=\"[^/]\",yPe=oJ+\"*?\",EPe=oJ+\"+?\",sJ=class t{type;#t;#r;#i=!1;#e=[];#n;#o;#l;#a=!1;#s;#c;#f=!1;constructor(e,r,s={}){this.type=e,e&&(this.#r=!0),this.#n=r,this.#t=this.#n?this.#n.#t:this,this.#s=this.#t===this?s:this.#t.#s,this.#l=this.#t===this?[]:this.#t.#l,e===\"!\"&&!this.#t.#a&&this.#l.push(this),this.#o=this.#n?this.#n.#e.length:0}get hasMagic(){if(this.#r!==void 0)return this.#r;for(let e of this.#e)if(typeof e!=\"string\"&&(e.type||e.hasMagic))return this.#r=!0;return this.#r}toString(){return this.#c!==void 0?this.#c:this.type?this.#c=this.type+\"(\"+this.#e.map(e=>String(e)).join(\"|\")+\")\":this.#c=this.#e.map(e=>String(e)).join(\"\")}#p(){if(this!==this.#t)throw new Error(\"should only call on root\");if(this.#a)return this;this.toString(),this.#a=!0;let e;for(;e=this.#l.pop();){if(e.type!==\"!\")continue;let r=e,s=r.#n;for(;s;){for(let a=r.#o+1;!s.type&&a<s.#e.length;a++)for(let n of e.#e){if(typeof n==\"string\")throw new Error(\"string part in extglob AST??\");n.copyIn(s.#e[a])}r=s,s=r.#n}}return this}push(...e){for(let r of e)if(r!==\"\"){if(typeof r!=\"string\"&&!(r instanceof t&&r.#n===this))throw new Error(\"invalid part: \"+r);this.#e.push(r)}}toJSON(){let e=this.type===null?this.#e.slice().map(r=>typeof r==\"string\"?r:r.toJSON()):[this.type,...this.#e.map(r=>r.toJSON())];return this.isStart()&&!this.type&&e.unshift([]),this.isEnd()&&(this===this.#t||this.#t.#a&&this.#n?.type===\"!\")&&e.push({}),e}isStart(){if(this.#t===this)return!0;if(!this.#n?.isStart())return!1;if(this.#o===0)return!0;let e=this.#n;for(let r=0;r<this.#o;r++){let s=e.#e[r];if(!(s instanceof t&&s.type===\"!\"))return!1}return!0}isEnd(){if(this.#t===this||this.#n?.type===\"!\")return!0;if(!this.#n?.isEnd())return!1;if(!this.type)return this.#n?.isEnd();let e=this.#n?this.#n.#e.length:0;return this.#o===e-1}copyIn(e){typeof e==\"string\"?this.push(e):this.push(e.clone(this))}clone(e){let r=new t(this.type,e);for(let s of this.#e)r.copyIn(s);return r}static#u(e,r,s,a){let n=!1,c=!1,f=-1,p=!1;if(r.type===null){let P=s,I=\"\";for(;P<e.length;){let R=e.charAt(P++);if(n||R===\"\\\\\"){n=!n,I+=R;continue}if(c){P===f+1?(R===\"^\"||R===\"!\")&&(p=!0):R===\"]\"&&!(P===f+2&&p)&&(c=!1),I+=R;continue}else if(R===\"[\"){c=!0,f=P,p=!1,I+=R;continue}if(!a.noext&&mPe(R)&&e.charAt(P)===\"(\"){r.push(I),I=\"\";let N=new t(R,r);P=t.#u(e,N,P,a),r.push(N);continue}I+=R}return r.push(I),P}let h=s+1,E=new t(null,r),C=[],S=\"\";for(;h<e.length;){let P=e.charAt(h++);if(n||P===\"\\\\\"){n=!n,S+=P;continue}if(c){h===f+1?(P===\"^\"||P===\"!\")&&(p=!0):P===\"]\"&&!(h===f+2&&p)&&(c=!1),S+=P;continue}else if(P===\"[\"){c=!0,f=h,p=!1,S+=P;continue}if(mPe(P)&&e.charAt(h)===\"(\"){E.push(S),S=\"\";let I=new t(P,E);E.push(I),h=t.#u(e,I,h,a);continue}if(P===\"|\"){E.push(S),S=\"\",C.push(E),E=new t(null,r);continue}if(P===\")\")return S===\"\"&&r.#e.length===0&&(r.#f=!0),E.push(S),S=\"\",r.push(...C,E),h;S+=P}return r.type=null,r.#r=void 0,r.#e=[e.substring(s-1)],h}static fromGlob(e,r={}){let s=new t(null,void 0,r);return t.#u(e,s,0,r),s}toMMPattern(){if(this!==this.#t)return this.#t.toMMPattern();let e=this.toString(),[r,s,a,n]=this.toRegExpSource();if(!(a||this.#r||this.#s.nocase&&!this.#s.nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return s;let f=(this.#s.nocase?\"i\":\"\")+(n?\"u\":\"\");return Object.assign(new RegExp(`^${r}$`,f),{_src:r,_glob:e})}get options(){return this.#s}toRegExpSource(e){let r=e??!!this.#s.dot;if(this.#t===this&&this.#p(),!this.type){let p=this.isStart()&&this.isEnd(),h=this.#e.map(P=>{let[I,R,N,U]=typeof P==\"string\"?t.#h(P,this.#r,p):P.toRegExpSource(e);return this.#r=this.#r||N,this.#i=this.#i||U,I}).join(\"\"),E=\"\";if(this.isStart()&&typeof this.#e[0]==\"string\"&&!(this.#e.length===1&&P2t.has(this.#e[0]))){let I=b2t,R=r&&I.has(h.charAt(0))||h.startsWith(\"\\\\.\")&&I.has(h.charAt(2))||h.startsWith(\"\\\\.\\\\.\")&&I.has(h.charAt(4)),N=!r&&!e&&I.has(h.charAt(0));E=R?D2t:N?HO:\"\"}let C=\"\";return this.isEnd()&&this.#t.#a&&this.#n?.type===\"!\"&&(C=\"(?:$|\\\\/)\"),[E+h+C,(0,_O.unescape)(h),this.#r=!!this.#r,this.#i]}let s=this.type===\"*\"||this.type===\"+\",a=this.type===\"!\"?\"(?:(?!(?:\":\"(?:\",n=this.#A(r);if(this.isStart()&&this.isEnd()&&!n&&this.type!==\"!\"){let p=this.toString();return this.#e=[p],this.type=null,this.#r=void 0,[p,(0,_O.unescape)(this.toString()),!1,!1]}let c=!s||e||r||!HO?\"\":this.#A(!0);c===n&&(c=\"\"),c&&(n=`(?:${n})(?:${c})*?`);let f=\"\";if(this.type===\"!\"&&this.#f)f=(this.isStart()&&!r?HO:\"\")+EPe;else{let p=this.type===\"!\"?\"))\"+(this.isStart()&&!r&&!e?HO:\"\")+yPe+\")\":this.type===\"@\"?\")\":this.type===\"?\"?\")?\":this.type===\"+\"&&c?\")\":this.type===\"*\"&&c?\")?\":`)${this.type}`;f=a+n+p}return[f,(0,_O.unescape)(n),this.#r=!!this.#r,this.#i]}#A(e){return this.#e.map(r=>{if(typeof r==\"string\")throw new Error(\"string type in extglob ast??\");let[s,a,n,c]=r.toRegExpSource(e);return this.#i=this.#i||c,s}).filter(r=>!(this.isStart()&&this.isEnd())||!!r).join(\"|\")}static#h(e,r,s=!1){let a=!1,n=\"\",c=!1;for(let f=0;f<e.length;f++){let p=e.charAt(f);if(a){a=!1,n+=(x2t.has(p)?\"\\\\\":\"\")+p;continue}if(p===\"\\\\\"){f===e.length-1?n+=\"\\\\\\\\\":a=!0;continue}if(p===\"[\"){let[h,E,C,S]=(0,v2t.parseClass)(e,f);if(C){n+=h,c=c||E,f+=C-1,r=r||S;continue}}if(p===\"*\"){s&&e===\"*\"?n+=EPe:n+=yPe,r=!0;continue}if(p===\"?\"){n+=oJ,r=!0;continue}n+=k2t(p)}return[n,(0,_O.unescape)(e),!!r,c]}};jO.AST=sJ});var lJ=_(GO=>{\"use strict\";Object.defineProperty(GO,\"__esModule\",{value:!0});GO.escape=void 0;var Q2t=(t,{windowsPathsNoEscape:e=!1}={})=>e?t.replace(/[?*()[\\]]/g,\"[$&]\"):t.replace(/[?*()[\\]\\\\]/g,\"\\\\$&\");GO.escape=Q2t});var DPe=_(pr=>{\"use strict\";var T2t=pr&&pr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(pr,\"__esModule\",{value:!0});pr.unescape=pr.escape=pr.AST=pr.Minimatch=pr.match=pr.makeRe=pr.braceExpand=pr.defaults=pr.filter=pr.GLOBSTAR=pr.sep=pr.minimatch=void 0;var R2t=T2t(pPe()),qO=hPe(),wPe=aJ(),F2t=lJ(),N2t=UO(),O2t=(t,e,r={})=>((0,qO.assertValidPattern)(e),!r.nocomment&&e.charAt(0)===\"#\"?!1:new ly(e,r).match(t));pr.minimatch=O2t;var L2t=/^\\*+([^+@!?\\*\\[\\(]*)$/,M2t=t=>e=>!e.startsWith(\".\")&&e.endsWith(t),U2t=t=>e=>e.endsWith(t),_2t=t=>(t=t.toLowerCase(),e=>!e.startsWith(\".\")&&e.toLowerCase().endsWith(t)),H2t=t=>(t=t.toLowerCase(),e=>e.toLowerCase().endsWith(t)),j2t=/^\\*+\\.\\*+$/,G2t=t=>!t.startsWith(\".\")&&t.includes(\".\"),q2t=t=>t!==\".\"&&t!==\"..\"&&t.includes(\".\"),W2t=/^\\.\\*+$/,Y2t=t=>t!==\".\"&&t!==\"..\"&&t.startsWith(\".\"),V2t=/^\\*+$/,J2t=t=>t.length!==0&&!t.startsWith(\".\"),K2t=t=>t.length!==0&&t!==\".\"&&t!==\"..\",z2t=/^\\?+([^+@!?\\*\\[\\(]*)?$/,X2t=([t,e=\"\"])=>{let r=BPe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},Z2t=([t,e=\"\"])=>{let r=vPe([t]);return e?(e=e.toLowerCase(),s=>r(s)&&s.toLowerCase().endsWith(e)):r},$2t=([t,e=\"\"])=>{let r=vPe([t]);return e?s=>r(s)&&s.endsWith(e):r},eBt=([t,e=\"\"])=>{let r=BPe([t]);return e?s=>r(s)&&s.endsWith(e):r},BPe=([t])=>{let e=t.length;return r=>r.length===e&&!r.startsWith(\".\")},vPe=([t])=>{let e=t.length;return r=>r.length===e&&r!==\".\"&&r!==\"..\"},SPe=typeof process==\"object\"&&process?typeof process.env==\"object\"&&process.env&&process.env.__MINIMATCH_TESTING_PLATFORM__||process.platform:\"posix\",IPe={win32:{sep:\"\\\\\"},posix:{sep:\"/\"}};pr.sep=SPe===\"win32\"?IPe.win32.sep:IPe.posix.sep;pr.minimatch.sep=pr.sep;pr.GLOBSTAR=Symbol(\"globstar **\");pr.minimatch.GLOBSTAR=pr.GLOBSTAR;var tBt=\"[^/]\",rBt=tBt+\"*?\",nBt=\"(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?\",iBt=\"(?:(?!(?:\\\\/|^)\\\\.).)*?\",sBt=(t,e={})=>r=>(0,pr.minimatch)(r,t,e);pr.filter=sBt;pr.minimatch.filter=pr.filter;var tu=(t,e={})=>Object.assign({},t,e),oBt=t=>{if(!t||typeof t!=\"object\"||!Object.keys(t).length)return pr.minimatch;let e=pr.minimatch;return Object.assign((s,a,n={})=>e(s,a,tu(t,n)),{Minimatch:class extends e.Minimatch{constructor(a,n={}){super(a,tu(t,n))}static defaults(a){return e.defaults(tu(t,a)).Minimatch}},AST:class extends e.AST{constructor(a,n,c={}){super(a,n,tu(t,c))}static fromGlob(a,n={}){return e.AST.fromGlob(a,tu(t,n))}},unescape:(s,a={})=>e.unescape(s,tu(t,a)),escape:(s,a={})=>e.escape(s,tu(t,a)),filter:(s,a={})=>e.filter(s,tu(t,a)),defaults:s=>e.defaults(tu(t,s)),makeRe:(s,a={})=>e.makeRe(s,tu(t,a)),braceExpand:(s,a={})=>e.braceExpand(s,tu(t,a)),match:(s,a,n={})=>e.match(s,a,tu(t,n)),sep:e.sep,GLOBSTAR:pr.GLOBSTAR})};pr.defaults=oBt;pr.minimatch.defaults=pr.defaults;var aBt=(t,e={})=>((0,qO.assertValidPattern)(t),e.nobrace||!/\\{(?:(?!\\{).)*\\}/.test(t)?[t]:(0,R2t.default)(t));pr.braceExpand=aBt;pr.minimatch.braceExpand=pr.braceExpand;var lBt=(t,e={})=>new ly(t,e).makeRe();pr.makeRe=lBt;pr.minimatch.makeRe=pr.makeRe;var cBt=(t,e,r={})=>{let s=new ly(e,r);return t=t.filter(a=>s.match(a)),s.options.nonull&&!t.length&&t.push(e),t};pr.match=cBt;pr.minimatch.match=pr.match;var CPe=/[?*]|[+@!]\\(.*?\\)|\\[|\\]/,uBt=t=>t.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,\"\\\\$&\"),ly=class{options;set;pattern;windowsPathsNoEscape;nonegate;negate;comment;empty;preserveMultipleSlashes;partial;globSet;globParts;nocase;isWindows;platform;windowsNoMagicRoot;regexp;constructor(e,r={}){(0,qO.assertValidPattern)(e),r=r||{},this.options=r,this.pattern=e,this.platform=r.platform||SPe,this.isWindows=this.platform===\"win32\",this.windowsPathsNoEscape=!!r.windowsPathsNoEscape||r.allowWindowsEscape===!1,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\\\/g,\"/\")),this.preserveMultipleSlashes=!!r.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!r.nonegate,this.comment=!1,this.empty=!1,this.partial=!!r.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=r.windowsNoMagicRoot!==void 0?r.windowsNoMagicRoot:!!(this.isWindows&&this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(let e of this.set)for(let r of e)if(typeof r!=\"string\")return!0;return!1}debug(...e){}make(){let e=this.pattern,r=this.options;if(!r.nocomment&&e.charAt(0)===\"#\"){this.comment=!0;return}if(!e){this.empty=!0;return}this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],r.debug&&(this.debug=(...n)=>console.error(...n)),this.debug(this.pattern,this.globSet);let s=this.globSet.map(n=>this.slashSplit(n));this.globParts=this.preprocess(s),this.debug(this.pattern,this.globParts);let a=this.globParts.map((n,c,f)=>{if(this.isWindows&&this.windowsNoMagicRoot){let p=n[0]===\"\"&&n[1]===\"\"&&(n[2]===\"?\"||!CPe.test(n[2]))&&!CPe.test(n[3]),h=/^[a-z]:/i.test(n[0]);if(p)return[...n.slice(0,4),...n.slice(4).map(E=>this.parse(E))];if(h)return[n[0],...n.slice(1).map(E=>this.parse(E))]}return n.map(p=>this.parse(p))});if(this.debug(this.pattern,a),this.set=a.filter(n=>n.indexOf(!1)===-1),this.isWindows)for(let n=0;n<this.set.length;n++){let c=this.set[n];c[0]===\"\"&&c[1]===\"\"&&this.globParts[n][2]===\"?\"&&typeof c[3]==\"string\"&&/^[a-z]:$/i.test(c[3])&&(c[2]=\"?\")}this.debug(this.pattern,this.set)}preprocess(e){if(this.options.noglobstar)for(let s=0;s<e.length;s++)for(let a=0;a<e[s].length;a++)e[s][a]===\"**\"&&(e[s][a]=\"*\");let{optimizationLevel:r=1}=this.options;return r>=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):r>=1?e=this.levelOneOptimize(e):e=this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(r=>{let s=-1;for(;(s=r.indexOf(\"**\",s+1))!==-1;){let a=s;for(;r[a+1]===\"**\";)a++;a!==s&&r.splice(s,a-s)}return r})}levelOneOptimize(e){return e.map(r=>(r=r.reduce((s,a)=>{let n=s[s.length-1];return a===\"**\"&&n===\"**\"?s:a===\"..\"&&n&&n!==\"..\"&&n!==\".\"&&n!==\"**\"?(s.pop(),s):(s.push(a),s)},[]),r.length===0?[\"\"]:r))}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let r=!1;do{if(r=!1,!this.preserveMultipleSlashes){for(let a=1;a<e.length-1;a++){let n=e[a];a===1&&n===\"\"&&e[0]===\"\"||(n===\".\"||n===\"\")&&(r=!0,e.splice(a,1),a--)}e[0]===\".\"&&e.length===2&&(e[1]===\".\"||e[1]===\"\")&&(r=!0,e.pop())}let s=0;for(;(s=e.indexOf(\"..\",s+1))!==-1;){let a=e[s-1];a&&a!==\".\"&&a!==\"..\"&&a!==\"**\"&&(r=!0,e.splice(s-1,2),s-=2)}}while(r);return e.length===0?[\"\"]:e}firstPhasePreProcess(e){let r=!1;do{r=!1;for(let s of e){let a=-1;for(;(a=s.indexOf(\"**\",a+1))!==-1;){let c=a;for(;s[c+1]===\"**\";)c++;c>a&&s.splice(a+1,c-a);let f=s[a+1],p=s[a+2],h=s[a+3];if(f!==\"..\"||!p||p===\".\"||p===\"..\"||!h||h===\".\"||h===\"..\")continue;r=!0,s.splice(a,1);let E=s.slice(0);E[a]=\"**\",e.push(E),a--}if(!this.preserveMultipleSlashes){for(let c=1;c<s.length-1;c++){let f=s[c];c===1&&f===\"\"&&s[0]===\"\"||(f===\".\"||f===\"\")&&(r=!0,s.splice(c,1),c--)}s[0]===\".\"&&s.length===2&&(s[1]===\".\"||s[1]===\"\")&&(r=!0,s.pop())}let n=0;for(;(n=s.indexOf(\"..\",n+1))!==-1;){let c=s[n-1];if(c&&c!==\".\"&&c!==\"..\"&&c!==\"**\"){r=!0;let p=n===1&&s[n+1]===\"**\"?[\".\"]:[];s.splice(n-1,2,...p),s.length===0&&s.push(\"\"),n-=2}}}}while(r);return e}secondPhasePreProcess(e){for(let r=0;r<e.length-1;r++)for(let s=r+1;s<e.length;s++){let a=this.partsMatch(e[r],e[s],!this.preserveMultipleSlashes);if(a){e[r]=[],e[s]=a;break}}return e.filter(r=>r.length)}partsMatch(e,r,s=!1){let a=0,n=0,c=[],f=\"\";for(;a<e.length&&n<r.length;)if(e[a]===r[n])c.push(f===\"b\"?r[n]:e[a]),a++,n++;else if(s&&e[a]===\"**\"&&r[n]===e[a+1])c.push(e[a]),a++;else if(s&&r[n]===\"**\"&&e[a]===r[n+1])c.push(r[n]),n++;else if(e[a]===\"*\"&&r[n]&&(this.options.dot||!r[n].startsWith(\".\"))&&r[n]!==\"**\"){if(f===\"b\")return!1;f=\"a\",c.push(e[a]),a++,n++}else if(r[n]===\"*\"&&e[a]&&(this.options.dot||!e[a].startsWith(\".\"))&&e[a]!==\"**\"){if(f===\"a\")return!1;f=\"b\",c.push(r[n]),a++,n++}else return!1;return e.length===r.length&&c}parseNegate(){if(this.nonegate)return;let e=this.pattern,r=!1,s=0;for(let a=0;a<e.length&&e.charAt(a)===\"!\";a++)r=!r,s++;s&&(this.pattern=e.slice(s)),this.negate=r}matchOne(e,r,s=!1){let a=this.options;if(this.isWindows){let R=typeof e[0]==\"string\"&&/^[a-z]:$/i.test(e[0]),N=!R&&e[0]===\"\"&&e[1]===\"\"&&e[2]===\"?\"&&/^[a-z]:$/i.test(e[3]),U=typeof r[0]==\"string\"&&/^[a-z]:$/i.test(r[0]),W=!U&&r[0]===\"\"&&r[1]===\"\"&&r[2]===\"?\"&&typeof r[3]==\"string\"&&/^[a-z]:$/i.test(r[3]),ee=N?3:R?0:void 0,ie=W?3:U?0:void 0;if(typeof ee==\"number\"&&typeof ie==\"number\"){let[ue,le]=[e[ee],r[ie]];ue.toLowerCase()===le.toLowerCase()&&(r[ie]=ue,ie>ee?r=r.slice(ie):ee>ie&&(e=e.slice(ee)))}}let{optimizationLevel:n=1}=this.options;n>=2&&(e=this.levelTwoFileOptimize(e)),this.debug(\"matchOne\",this,{file:e,pattern:r}),this.debug(\"matchOne\",e.length,r.length);for(var c=0,f=0,p=e.length,h=r.length;c<p&&f<h;c++,f++){this.debug(\"matchOne loop\");var E=r[f],C=e[c];if(this.debug(r,E,C),E===!1)return!1;if(E===pr.GLOBSTAR){this.debug(\"GLOBSTAR\",[r,E,C]);var S=c,P=f+1;if(P===h){for(this.debug(\"** at the end\");c<p;c++)if(e[c]===\".\"||e[c]===\"..\"||!a.dot&&e[c].charAt(0)===\".\")return!1;return!0}for(;S<p;){var I=e[S];if(this.debug(`\nglobstar while`,e,S,r,P,I),this.matchOne(e.slice(S),r.slice(P),s))return this.debug(\"globstar found match!\",S,p,I),!0;if(I===\".\"||I===\"..\"||!a.dot&&I.charAt(0)===\".\"){this.debug(\"dot detected!\",e,S,r,P);break}this.debug(\"globstar swallow a segment, and continue\"),S++}return!!(s&&(this.debug(`\n>>> no match, partial?`,e,S,r,P),S===p))}let R;if(typeof E==\"string\"?(R=C===E,this.debug(\"string match\",E,C,R)):(R=E.test(C),this.debug(\"pattern match\",E,C,R)),!R)return!1}if(c===p&&f===h)return!0;if(c===p)return s;if(f===h)return c===p-1&&e[c]===\"\";throw new Error(\"wtf?\")}braceExpand(){return(0,pr.braceExpand)(this.pattern,this.options)}parse(e){(0,qO.assertValidPattern)(e);let r=this.options;if(e===\"**\")return pr.GLOBSTAR;if(e===\"\")return\"\";let s,a=null;(s=e.match(V2t))?a=r.dot?K2t:J2t:(s=e.match(L2t))?a=(r.nocase?r.dot?H2t:_2t:r.dot?U2t:M2t)(s[1]):(s=e.match(z2t))?a=(r.nocase?r.dot?Z2t:X2t:r.dot?$2t:eBt)(s):(s=e.match(j2t))?a=r.dot?q2t:G2t:(s=e.match(W2t))&&(a=Y2t);let n=wPe.AST.fromGlob(e,this.options).toMMPattern();return a&&typeof n==\"object\"&&Reflect.defineProperty(n,\"test\",{value:a}),n}makeRe(){if(this.regexp||this.regexp===!1)return this.regexp;let e=this.set;if(!e.length)return this.regexp=!1,this.regexp;let r=this.options,s=r.noglobstar?rBt:r.dot?nBt:iBt,a=new Set(r.nocase?[\"i\"]:[]),n=e.map(p=>{let h=p.map(E=>{if(E instanceof RegExp)for(let C of E.flags.split(\"\"))a.add(C);return typeof E==\"string\"?uBt(E):E===pr.GLOBSTAR?pr.GLOBSTAR:E._src});return h.forEach((E,C)=>{let S=h[C+1],P=h[C-1];E!==pr.GLOBSTAR||P===pr.GLOBSTAR||(P===void 0?S!==void 0&&S!==pr.GLOBSTAR?h[C+1]=\"(?:\\\\/|\"+s+\"\\\\/)?\"+S:h[C]=s:S===void 0?h[C-1]=P+\"(?:\\\\/|\"+s+\")?\":S!==pr.GLOBSTAR&&(h[C-1]=P+\"(?:\\\\/|\\\\/\"+s+\"\\\\/)\"+S,h[C+1]=pr.GLOBSTAR))}),h.filter(E=>E!==pr.GLOBSTAR).join(\"/\")}).join(\"|\"),[c,f]=e.length>1?[\"(?:\",\")\"]:[\"\",\"\"];n=\"^\"+c+n+f+\"$\",this.negate&&(n=\"^(?!\"+n+\").+$\");try{this.regexp=new RegExp(n,[...a].join(\"\"))}catch{this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split(\"/\"):this.isWindows&&/^\\/\\/[^\\/]+/.test(e)?[\"\",...e.split(/\\/+/)]:e.split(/\\/+/)}match(e,r=this.partial){if(this.debug(\"match\",e,this.pattern),this.comment)return!1;if(this.empty)return e===\"\";if(e===\"/\"&&r)return!0;let s=this.options;this.isWindows&&(e=e.split(\"\\\\\").join(\"/\"));let a=this.slashSplit(e);this.debug(this.pattern,\"split\",a);let n=this.set;this.debug(this.pattern,\"set\",n);let c=a[a.length-1];if(!c)for(let f=a.length-2;!c&&f>=0;f--)c=a[f];for(let f=0;f<n.length;f++){let p=n[f],h=a;if(s.matchBase&&p.length===1&&(h=[c]),this.matchOne(h,p,r))return s.flipNegate?!0:!this.negate}return s.flipNegate?!1:this.negate}static defaults(e){return pr.minimatch.defaults(e).Minimatch}};pr.Minimatch=ly;var fBt=aJ();Object.defineProperty(pr,\"AST\",{enumerable:!0,get:function(){return fBt.AST}});var ABt=lJ();Object.defineProperty(pr,\"escape\",{enumerable:!0,get:function(){return ABt.escape}});var pBt=UO();Object.defineProperty(pr,\"unescape\",{enumerable:!0,get:function(){return pBt.unescape}});pr.minimatch.AST=wPe.AST;pr.minimatch.Minimatch=ly;pr.minimatch.escape=F2t.escape;pr.minimatch.unescape=N2t.unescape});var fJ=_(ru=>{\"use strict\";var bPe=ru&&ru.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(ru,\"__esModule\",{value:!0});ru.SuccinctRoles=ru.DelegatedRole=ru.Role=ru.TOP_LEVEL_ROLE_NAMES=void 0;var PPe=bPe(Ie(\"crypto\")),hBt=DPe(),WO=bPe(Ie(\"util\")),YO=PA(),cy=ff();ru.TOP_LEVEL_ROLE_NAMES=[\"root\",\"targets\",\"snapshot\",\"timestamp\"];var Mb=class t{constructor(e){let{keyIDs:r,threshold:s,unrecognizedFields:a}=e;if(gBt(r))throw new YO.ValueError(\"duplicate key IDs found\");if(s<1)throw new YO.ValueError(\"threshold must be at least 1\");this.keyIDs=r,this.threshold=s,this.unrecognizedFields=a||{}}equals(e){return e instanceof t?this.threshold===e.threshold&&WO.default.isDeepStrictEqual(this.keyIDs,e.keyIDs)&&WO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{keyids:this.keyIDs,threshold:this.threshold,...this.unrecognizedFields}}static fromJSON(e){let{keyids:r,threshold:s,...a}=e;if(!cy.guard.isStringArray(r))throw new TypeError(\"keyids must be an array\");if(typeof s!=\"number\")throw new TypeError(\"threshold must be a number\");return new t({keyIDs:r,threshold:s,unrecognizedFields:a})}};ru.Role=Mb;function gBt(t){return new Set(t).size!==t.length}var cJ=class t extends Mb{constructor(e){super(e);let{name:r,terminating:s,paths:a,pathHashPrefixes:n}=e;if(this.name=r,this.terminating=s,e.paths&&e.pathHashPrefixes)throw new YO.ValueError(\"paths and pathHashPrefixes are mutually exclusive\");this.paths=a,this.pathHashPrefixes=n}equals(e){return e instanceof t?super.equals(e)&&this.name===e.name&&this.terminating===e.terminating&&WO.default.isDeepStrictEqual(this.paths,e.paths)&&WO.default.isDeepStrictEqual(this.pathHashPrefixes,e.pathHashPrefixes):!1}isDelegatedPath(e){if(this.paths)return this.paths.some(r=>mBt(e,r));if(this.pathHashPrefixes){let s=PPe.default.createHash(\"sha256\").update(e).digest(\"hex\");return this.pathHashPrefixes.some(a=>s.startsWith(a))}return!1}toJSON(){let e={...super.toJSON(),name:this.name,terminating:this.terminating};return this.paths&&(e.paths=this.paths),this.pathHashPrefixes&&(e.path_hash_prefixes=this.pathHashPrefixes),e}static fromJSON(e){let{keyids:r,threshold:s,name:a,terminating:n,paths:c,path_hash_prefixes:f,...p}=e;if(!cy.guard.isStringArray(r))throw new TypeError(\"keyids must be an array of strings\");if(typeof s!=\"number\")throw new TypeError(\"threshold must be a number\");if(typeof a!=\"string\")throw new TypeError(\"name must be a string\");if(typeof n!=\"boolean\")throw new TypeError(\"terminating must be a boolean\");if(cy.guard.isDefined(c)&&!cy.guard.isStringArray(c))throw new TypeError(\"paths must be an array of strings\");if(cy.guard.isDefined(f)&&!cy.guard.isStringArray(f))throw new TypeError(\"path_hash_prefixes must be an array of strings\");return new t({keyIDs:r,threshold:s,name:a,terminating:n,paths:c,pathHashPrefixes:f,unrecognizedFields:p})}};ru.DelegatedRole=cJ;var dBt=(t,e)=>t.map((r,s)=>[r,e[s]]);function mBt(t,e){let r=t.split(\"/\"),s=e.split(\"/\");return s.length!=r.length?!1:dBt(r,s).every(([a,n])=>(0,hBt.minimatch)(a,n))}var uJ=class t extends Mb{constructor(e){super(e);let{bitLength:r,namePrefix:s}=e;if(r<=0||r>32)throw new YO.ValueError(\"bitLength must be between 1 and 32\");this.bitLength=r,this.namePrefix=s,this.numberOfBins=Math.pow(2,r),this.suffixLen=(this.numberOfBins-1).toString(16).length}equals(e){return e instanceof t?super.equals(e)&&this.bitLength===e.bitLength&&this.namePrefix===e.namePrefix:!1}getRoleForTarget(e){let a=PPe.default.createHash(\"sha256\").update(e).digest().subarray(0,4),n=32-this.bitLength,f=(a.readUInt32BE()>>>n).toString(16).padStart(this.suffixLen,\"0\");return`${this.namePrefix}-${f}`}*getRoles(){for(let e=0;e<this.numberOfBins;e++){let r=e.toString(16).padStart(this.suffixLen,\"0\");yield`${this.namePrefix}-${r}`}}isDelegatedRole(e){let r=this.namePrefix+\"-\";if(!e.startsWith(r))return!1;let s=e.slice(r.length,e.length);if(s.length!=this.suffixLen||!s.match(/^[0-9a-fA-F]+$/))return!1;let a=parseInt(s,16);return 0<=a&&a<this.numberOfBins}toJSON(){return{...super.toJSON(),bit_length:this.bitLength,name_prefix:this.namePrefix}}static fromJSON(e){let{keyids:r,threshold:s,bit_length:a,name_prefix:n,...c}=e;if(!cy.guard.isStringArray(r))throw new TypeError(\"keyids must be an array of strings\");if(typeof s!=\"number\")throw new TypeError(\"threshold must be a number\");if(typeof a!=\"number\")throw new TypeError(\"bit_length must be a number\");if(typeof n!=\"string\")throw new TypeError(\"name_prefix must be a string\");return new t({keyIDs:r,threshold:s,bitLength:a,namePrefix:n,unrecognizedFields:c})}};ru.SuccinctRoles=uJ});var hJ=_(a1=>{\"use strict\";var yBt=a1&&a1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(a1,\"__esModule\",{value:!0});a1.Root=void 0;var xPe=yBt(Ie(\"util\")),AJ=ay(),kPe=PA(),EBt=NO(),VO=fJ(),JO=ff(),pJ=class t extends AJ.Signed{constructor(e){if(super(e),this.type=AJ.MetadataKind.Root,this.keys=e.keys||{},this.consistentSnapshot=e.consistentSnapshot??!0,!e.roles)this.roles=VO.TOP_LEVEL_ROLE_NAMES.reduce((r,s)=>({...r,[s]:new VO.Role({keyIDs:[],threshold:1})}),{});else{let r=new Set(Object.keys(e.roles));if(!VO.TOP_LEVEL_ROLE_NAMES.every(s=>r.has(s)))throw new kPe.ValueError(\"missing top-level role\");this.roles=e.roles}}addKey(e,r){if(!this.roles[r])throw new kPe.ValueError(`role ${r} does not exist`);this.roles[r].keyIDs.includes(e.keyID)||this.roles[r].keyIDs.push(e.keyID),this.keys[e.keyID]=e}equals(e){return e instanceof t?super.equals(e)&&this.consistentSnapshot===e.consistentSnapshot&&xPe.default.isDeepStrictEqual(this.keys,e.keys)&&xPe.default.isDeepStrictEqual(this.roles,e.roles):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,keys:IBt(this.keys),roles:CBt(this.roles),consistent_snapshot:this.consistentSnapshot,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=AJ.Signed.commonFieldsFromJSON(e),{keys:a,roles:n,consistent_snapshot:c,...f}=r;if(typeof c!=\"boolean\")throw new TypeError(\"consistent_snapshot must be a boolean\");return new t({...s,keys:wBt(a),roles:BBt(n),consistentSnapshot:c,unrecognizedFields:f})}};a1.Root=pJ;function IBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function CBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function wBt(t){let e;if(JO.guard.isDefined(t)){if(!JO.guard.isObjectRecord(t))throw new TypeError(\"keys must be an object\");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:EBt.Key.fromJSON(s,a)}),{})}return e}function BBt(t){let e;if(JO.guard.isDefined(t)){if(!JO.guard.isObjectRecord(t))throw new TypeError(\"roles must be an object\");e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:VO.Role.fromJSON(a)}),{})}return e}});var dJ=_(KO=>{\"use strict\";Object.defineProperty(KO,\"__esModule\",{value:!0});KO.Signature=void 0;var gJ=class t{constructor(e){let{keyID:r,sig:s}=e;this.keyID=r,this.sig=s}toJSON(){return{keyid:this.keyID,sig:this.sig}}static fromJSON(e){let{keyid:r,sig:s}=e;if(typeof r!=\"string\")throw new TypeError(\"keyid must be a string\");if(typeof s!=\"string\")throw new TypeError(\"sig must be a string\");return new t({keyID:r,sig:s})}};KO.Signature=gJ});var EJ=_(l1=>{\"use strict\";var vBt=l1&&l1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(l1,\"__esModule\",{value:!0});l1.Snapshot=void 0;var SBt=vBt(Ie(\"util\")),mJ=ay(),TPe=Tb(),QPe=ff(),yJ=class t extends mJ.Signed{constructor(e){super(e),this.type=mJ.MetadataKind.Snapshot,this.meta=e.meta||{\"targets.json\":new TPe.MetaFile({version:1})}}equals(e){return e instanceof t?super.equals(e)&&SBt.default.isDeepStrictEqual(this.meta,e.meta):!1}toJSON(){return{_type:this.type,meta:DBt(this.meta),spec_version:this.specVersion,version:this.version,expires:this.expires,...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=mJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,meta:bBt(a),unrecognizedFields:n})}};l1.Snapshot=yJ;function DBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function bBt(t){let e;if(QPe.guard.isDefined(t))if(QPe.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:TPe.MetaFile.fromJSON(a)}),{});else throw new TypeError(\"meta field is malformed\");return e}});var RPe=_(c1=>{\"use strict\";var PBt=c1&&c1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(c1,\"__esModule\",{value:!0});c1.Delegations=void 0;var zO=PBt(Ie(\"util\")),xBt=PA(),kBt=NO(),IJ=fJ(),XO=ff(),CJ=class t{constructor(e){if(this.keys=e.keys,this.unrecognizedFields=e.unrecognizedFields||{},e.roles&&Object.keys(e.roles).some(r=>IJ.TOP_LEVEL_ROLE_NAMES.includes(r)))throw new xBt.ValueError(\"Delegated role name conflicts with top-level role name\");this.succinctRoles=e.succinctRoles,this.roles=e.roles}equals(e){return e instanceof t?zO.default.isDeepStrictEqual(this.keys,e.keys)&&zO.default.isDeepStrictEqual(this.roles,e.roles)&&zO.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields)&&zO.default.isDeepStrictEqual(this.succinctRoles,e.succinctRoles):!1}*rolesForTarget(e){if(this.roles)for(let r of Object.values(this.roles))r.isDelegatedPath(e)&&(yield{role:r.name,terminating:r.terminating});else this.succinctRoles&&(yield{role:this.succinctRoles.getRoleForTarget(e),terminating:!0})}toJSON(){let e={keys:QBt(this.keys),...this.unrecognizedFields};return this.roles?e.roles=TBt(this.roles):this.succinctRoles&&(e.succinct_roles=this.succinctRoles.toJSON()),e}static fromJSON(e){let{keys:r,roles:s,succinct_roles:a,...n}=e,c;return XO.guard.isObject(a)&&(c=IJ.SuccinctRoles.fromJSON(a)),new t({keys:RBt(r),roles:FBt(s),unrecognizedFields:n,succinctRoles:c})}};c1.Delegations=CJ;function QBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function TBt(t){return Object.values(t).map(e=>e.toJSON())}function RBt(t){if(!XO.guard.isObjectRecord(t))throw new TypeError(\"keys is malformed\");return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:kBt.Key.fromJSON(r,s)}),{})}function FBt(t){let e;if(XO.guard.isDefined(t)){if(!XO.guard.isObjectArray(t))throw new TypeError(\"roles is malformed\");e=t.reduce((r,s)=>{let a=IJ.DelegatedRole.fromJSON(s);return{...r,[a.name]:a}},{})}return e}});var vJ=_(u1=>{\"use strict\";var NBt=u1&&u1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(u1,\"__esModule\",{value:!0});u1.Targets=void 0;var FPe=NBt(Ie(\"util\")),wJ=ay(),OBt=RPe(),LBt=Tb(),ZO=ff(),BJ=class t extends wJ.Signed{constructor(e){super(e),this.type=wJ.MetadataKind.Targets,this.targets=e.targets||{},this.delegations=e.delegations}addTarget(e){this.targets[e.path]=e}equals(e){return e instanceof t?super.equals(e)&&FPe.default.isDeepStrictEqual(this.targets,e.targets)&&FPe.default.isDeepStrictEqual(this.delegations,e.delegations):!1}toJSON(){let e={_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,targets:MBt(this.targets),...this.unrecognizedFields};return this.delegations&&(e.delegations=this.delegations.toJSON()),e}static fromJSON(e){let{unrecognizedFields:r,...s}=wJ.Signed.commonFieldsFromJSON(e),{targets:a,delegations:n,...c}=r;return new t({...s,targets:UBt(a),delegations:_Bt(n),unrecognizedFields:c})}};u1.Targets=BJ;function MBt(t){return Object.entries(t).reduce((e,[r,s])=>({...e,[r]:s.toJSON()}),{})}function UBt(t){let e;if(ZO.guard.isDefined(t))if(ZO.guard.isObjectRecord(t))e=Object.entries(t).reduce((r,[s,a])=>({...r,[s]:LBt.TargetFile.fromJSON(s,a)}),{});else throw new TypeError(\"targets must be an object\");return e}function _Bt(t){let e;if(ZO.guard.isDefined(t))if(ZO.guard.isObject(t))e=OBt.Delegations.fromJSON(t);else throw new TypeError(\"delegations must be an object\");return e}});var PJ=_($O=>{\"use strict\";Object.defineProperty($O,\"__esModule\",{value:!0});$O.Timestamp=void 0;var SJ=ay(),NPe=Tb(),DJ=ff(),bJ=class t extends SJ.Signed{constructor(e){super(e),this.type=SJ.MetadataKind.Timestamp,this.snapshotMeta=e.snapshotMeta||new NPe.MetaFile({version:1})}equals(e){return e instanceof t?super.equals(e)&&this.snapshotMeta.equals(e.snapshotMeta):!1}toJSON(){return{_type:this.type,spec_version:this.specVersion,version:this.version,expires:this.expires,meta:{\"snapshot.json\":this.snapshotMeta.toJSON()},...this.unrecognizedFields}}static fromJSON(e){let{unrecognizedFields:r,...s}=SJ.Signed.commonFieldsFromJSON(e),{meta:a,...n}=r;return new t({...s,snapshotMeta:HBt(a),unrecognizedFields:n})}};$O.Timestamp=bJ;function HBt(t){let e;if(DJ.guard.isDefined(t)){let r=t[\"snapshot.json\"];if(!DJ.guard.isDefined(r)||!DJ.guard.isObject(r))throw new TypeError(\"missing snapshot.json in meta\");e=NPe.MetaFile.fromJSON(r)}return e}});var LPe=_(A1=>{\"use strict\";var jBt=A1&&A1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(A1,\"__esModule\",{value:!0});A1.Metadata=void 0;var GBt=V7(),OPe=jBt(Ie(\"util\")),f1=ay(),Ub=PA(),qBt=hJ(),WBt=dJ(),YBt=EJ(),VBt=vJ(),JBt=PJ(),xJ=ff(),kJ=class t{constructor(e,r,s){this.signed=e,this.signatures=r||{},this.unrecognizedFields=s||{}}sign(e,r=!0){let s=Buffer.from((0,GBt.canonicalize)(this.signed.toJSON())),a=e(s);r||(this.signatures={}),this.signatures[a.keyID]=a}verifyDelegate(e,r){let s,a={};switch(this.signed.type){case f1.MetadataKind.Root:a=this.signed.keys,s=this.signed.roles[e];break;case f1.MetadataKind.Targets:if(!this.signed.delegations)throw new Ub.ValueError(`No delegations found for ${e}`);a=this.signed.delegations.keys,this.signed.delegations.roles?s=this.signed.delegations.roles[e]:this.signed.delegations.succinctRoles&&this.signed.delegations.succinctRoles.isDelegatedRole(e)&&(s=this.signed.delegations.succinctRoles);break;default:throw new TypeError(\"invalid metadata type\")}if(!s)throw new Ub.ValueError(`no delegation found for ${e}`);let n=new Set;if(s.keyIDs.forEach(c=>{let f=a[c];if(f)try{f.verifySignature(r),n.add(f.keyID)}catch{}}),n.size<s.threshold)throw new Ub.UnsignedMetadataError(`${e} was signed by ${n.size}/${s.threshold} keys`)}equals(e){return e instanceof t?this.signed.equals(e.signed)&&OPe.default.isDeepStrictEqual(this.signatures,e.signatures)&&OPe.default.isDeepStrictEqual(this.unrecognizedFields,e.unrecognizedFields):!1}toJSON(){return{signatures:Object.values(this.signatures).map(r=>r.toJSON()),signed:this.signed.toJSON(),...this.unrecognizedFields}}static fromJSON(e,r){let{signed:s,signatures:a,...n}=r;if(!xJ.guard.isDefined(s)||!xJ.guard.isObject(s))throw new TypeError(\"signed is not defined\");if(e!==s._type)throw new Ub.ValueError(`expected '${e}', got ${s._type}`);if(!xJ.guard.isObjectArray(a))throw new TypeError(\"signatures is not an array\");let c;switch(e){case f1.MetadataKind.Root:c=qBt.Root.fromJSON(s);break;case f1.MetadataKind.Timestamp:c=JBt.Timestamp.fromJSON(s);break;case f1.MetadataKind.Snapshot:c=YBt.Snapshot.fromJSON(s);break;case f1.MetadataKind.Targets:c=VBt.Targets.fromJSON(s);break;default:throw new TypeError(\"invalid metadata type\")}let f={};return a.forEach(p=>{let h=WBt.Signature.fromJSON(p);if(f[h.keyID])throw new Ub.ValueError(`multiple signatures found for keyid: ${h.keyID}`);f[h.keyID]=h}),new t(c,f,n)}};A1.Metadata=kJ});var eL=_(Fi=>{\"use strict\";Object.defineProperty(Fi,\"__esModule\",{value:!0});Fi.Timestamp=Fi.Targets=Fi.Snapshot=Fi.Signature=Fi.Root=Fi.Metadata=Fi.Key=Fi.TargetFile=Fi.MetaFile=Fi.ValueError=Fi.MetadataKind=void 0;var KBt=ay();Object.defineProperty(Fi,\"MetadataKind\",{enumerable:!0,get:function(){return KBt.MetadataKind}});var zBt=PA();Object.defineProperty(Fi,\"ValueError\",{enumerable:!0,get:function(){return zBt.ValueError}});var MPe=Tb();Object.defineProperty(Fi,\"MetaFile\",{enumerable:!0,get:function(){return MPe.MetaFile}});Object.defineProperty(Fi,\"TargetFile\",{enumerable:!0,get:function(){return MPe.TargetFile}});var XBt=NO();Object.defineProperty(Fi,\"Key\",{enumerable:!0,get:function(){return XBt.Key}});var ZBt=LPe();Object.defineProperty(Fi,\"Metadata\",{enumerable:!0,get:function(){return ZBt.Metadata}});var $Bt=hJ();Object.defineProperty(Fi,\"Root\",{enumerable:!0,get:function(){return $Bt.Root}});var evt=dJ();Object.defineProperty(Fi,\"Signature\",{enumerable:!0,get:function(){return evt.Signature}});var tvt=EJ();Object.defineProperty(Fi,\"Snapshot\",{enumerable:!0,get:function(){return tvt.Snapshot}});var rvt=vJ();Object.defineProperty(Fi,\"Targets\",{enumerable:!0,get:function(){return rvt.Targets}});var nvt=PJ();Object.defineProperty(Fi,\"Timestamp\",{enumerable:!0,get:function(){return nvt.Timestamp}})});var _Pe=_((Dir,UPe)=>{var p1=1e3,h1=p1*60,g1=h1*60,uy=g1*24,ivt=uy*7,svt=uy*365.25;UPe.exports=function(t,e){e=e||{};var r=typeof t;if(r===\"string\"&&t.length>0)return ovt(t);if(r===\"number\"&&isFinite(t))return e.long?lvt(t):avt(t);throw new Error(\"val is not a non-empty string or a valid number. val=\"+JSON.stringify(t))};function ovt(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),s=(e[2]||\"ms\").toLowerCase();switch(s){case\"years\":case\"year\":case\"yrs\":case\"yr\":case\"y\":return r*svt;case\"weeks\":case\"week\":case\"w\":return r*ivt;case\"days\":case\"day\":case\"d\":return r*uy;case\"hours\":case\"hour\":case\"hrs\":case\"hr\":case\"h\":return r*g1;case\"minutes\":case\"minute\":case\"mins\":case\"min\":case\"m\":return r*h1;case\"seconds\":case\"second\":case\"secs\":case\"sec\":case\"s\":return r*p1;case\"milliseconds\":case\"millisecond\":case\"msecs\":case\"msec\":case\"ms\":return r;default:return}}}}function avt(t){var e=Math.abs(t);return e>=uy?Math.round(t/uy)+\"d\":e>=g1?Math.round(t/g1)+\"h\":e>=h1?Math.round(t/h1)+\"m\":e>=p1?Math.round(t/p1)+\"s\":t+\"ms\"}function lvt(t){var e=Math.abs(t);return e>=uy?tL(t,e,uy,\"day\"):e>=g1?tL(t,e,g1,\"hour\"):e>=h1?tL(t,e,h1,\"minute\"):e>=p1?tL(t,e,p1,\"second\"):t+\" ms\"}function tL(t,e,r,s){var a=e>=r*1.5;return Math.round(t/r)+\" \"+s+(a?\"s\":\"\")}});var QJ=_((bir,HPe)=>{function cvt(t){r.debug=r,r.default=r,r.coerce=p,r.disable=c,r.enable=a,r.enabled=f,r.humanize=_Pe(),r.destroy=h,Object.keys(t).forEach(E=>{r[E]=t[E]}),r.names=[],r.skips=[],r.formatters={};function e(E){let C=0;for(let S=0;S<E.length;S++)C=(C<<5)-C+E.charCodeAt(S),C|=0;return r.colors[Math.abs(C)%r.colors.length]}r.selectColor=e;function r(E){let C,S=null,P,I;function R(...N){if(!R.enabled)return;let U=R,W=Number(new Date),ee=W-(C||W);U.diff=ee,U.prev=C,U.curr=W,C=W,N[0]=r.coerce(N[0]),typeof N[0]!=\"string\"&&N.unshift(\"%O\");let ie=0;N[0]=N[0].replace(/%([a-zA-Z%])/g,(le,me)=>{if(le===\"%%\")return\"%\";ie++;let pe=r.formatters[me];if(typeof pe==\"function\"){let Be=N[ie];le=pe.call(U,Be),N.splice(ie,1),ie--}return le}),r.formatArgs.call(U,N),(U.log||r.log).apply(U,N)}return R.namespace=E,R.useColors=r.useColors(),R.color=r.selectColor(E),R.extend=s,R.destroy=r.destroy,Object.defineProperty(R,\"enabled\",{enumerable:!0,configurable:!1,get:()=>S!==null?S:(P!==r.namespaces&&(P=r.namespaces,I=r.enabled(E)),I),set:N=>{S=N}}),typeof r.init==\"function\"&&r.init(R),R}function s(E,C){let S=r(this.namespace+(typeof C>\"u\"?\":\":C)+E);return S.log=this.log,S}function a(E){r.save(E),r.namespaces=E,r.names=[],r.skips=[];let C=(typeof E==\"string\"?E:\"\").trim().replace(\" \",\",\").split(\",\").filter(Boolean);for(let S of C)S[0]===\"-\"?r.skips.push(S.slice(1)):r.names.push(S)}function n(E,C){let S=0,P=0,I=-1,R=0;for(;S<E.length;)if(P<C.length&&(C[P]===E[S]||C[P]===\"*\"))C[P]===\"*\"?(I=P,R=S,P++):(S++,P++);else if(I!==-1)P=I+1,R++,S=R;else return!1;for(;P<C.length&&C[P]===\"*\";)P++;return P===C.length}function c(){let E=[...r.names,...r.skips.map(C=>\"-\"+C)].join(\",\");return r.enable(\"\"),E}function f(E){for(let C of r.skips)if(n(E,C))return!1;for(let C of r.names)if(n(E,C))return!0;return!1}function p(E){return E instanceof Error?E.stack||E.message:E}function h(){console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\")}return r.enable(r.load()),r}HPe.exports=cvt});var jPe=_((sc,rL)=>{sc.formatArgs=fvt;sc.save=Avt;sc.load=pvt;sc.useColors=uvt;sc.storage=hvt();sc.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn(\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\"))}})();sc.colors=[\"#0000CC\",\"#0000FF\",\"#0033CC\",\"#0033FF\",\"#0066CC\",\"#0066FF\",\"#0099CC\",\"#0099FF\",\"#00CC00\",\"#00CC33\",\"#00CC66\",\"#00CC99\",\"#00CCCC\",\"#00CCFF\",\"#3300CC\",\"#3300FF\",\"#3333CC\",\"#3333FF\",\"#3366CC\",\"#3366FF\",\"#3399CC\",\"#3399FF\",\"#33CC00\",\"#33CC33\",\"#33CC66\",\"#33CC99\",\"#33CCCC\",\"#33CCFF\",\"#6600CC\",\"#6600FF\",\"#6633CC\",\"#6633FF\",\"#66CC00\",\"#66CC33\",\"#9900CC\",\"#9900FF\",\"#9933CC\",\"#9933FF\",\"#99CC00\",\"#99CC33\",\"#CC0000\",\"#CC0033\",\"#CC0066\",\"#CC0099\",\"#CC00CC\",\"#CC00FF\",\"#CC3300\",\"#CC3333\",\"#CC3366\",\"#CC3399\",\"#CC33CC\",\"#CC33FF\",\"#CC6600\",\"#CC6633\",\"#CC9900\",\"#CC9933\",\"#CCCC00\",\"#CCCC33\",\"#FF0000\",\"#FF0033\",\"#FF0066\",\"#FF0099\",\"#FF00CC\",\"#FF00FF\",\"#FF3300\",\"#FF3333\",\"#FF3366\",\"#FF3399\",\"#FF33CC\",\"#FF33FF\",\"#FF6600\",\"#FF6633\",\"#FF9900\",\"#FF9933\",\"#FFCC00\",\"#FFCC33\"];function uvt(){if(typeof window<\"u\"&&window.process&&(window.process.type===\"renderer\"||window.process.__nwjs))return!0;if(typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/))return!1;let t;return typeof document<\"u\"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<\"u\"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<\"u\"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<\"u\"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/)}function fvt(t){if(t[0]=(this.useColors?\"%c\":\"\")+this.namespace+(this.useColors?\" %c\":\" \")+t[0]+(this.useColors?\"%c \":\" \")+\"+\"+rL.exports.humanize(this.diff),!this.useColors)return;let e=\"color: \"+this.color;t.splice(1,0,e,\"color: inherit\");let r=0,s=0;t[0].replace(/%[a-zA-Z%]/g,a=>{a!==\"%%\"&&(r++,a===\"%c\"&&(s=r))}),t.splice(s,0,e)}sc.log=console.debug||console.log||(()=>{});function Avt(t){try{t?sc.storage.setItem(\"debug\",t):sc.storage.removeItem(\"debug\")}catch{}}function pvt(){let t;try{t=sc.storage.getItem(\"debug\")}catch{}return!t&&typeof process<\"u\"&&\"env\"in process&&(t=process.env.DEBUG),t}function hvt(){try{return localStorage}catch{}}rL.exports=QJ()(sc);var{formatters:gvt}=rL.exports;gvt.j=function(t){try{return JSON.stringify(t)}catch(e){return\"[UnexpectedJSONParseError]: \"+e.message}}});var qPe=_((Zs,iL)=>{var dvt=Ie(\"tty\"),nL=Ie(\"util\");Zs.init=Bvt;Zs.log=Ivt;Zs.formatArgs=yvt;Zs.save=Cvt;Zs.load=wvt;Zs.useColors=mvt;Zs.destroy=nL.deprecate(()=>{},\"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.\");Zs.colors=[6,2,3,4,5,1];try{let t=Ie(\"supports-color\");t&&(t.stderr||t).level>=2&&(Zs.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}Zs.inspectOpts=Object.keys(process.env).filter(t=>/^debug_/i.test(t)).reduce((t,e)=>{let r=e.substring(6).toLowerCase().replace(/_([a-z])/g,(a,n)=>n.toUpperCase()),s=process.env[e];return/^(yes|on|true|enabled)$/i.test(s)?s=!0:/^(no|off|false|disabled)$/i.test(s)?s=!1:s===\"null\"?s=null:s=Number(s),t[r]=s,t},{});function mvt(){return\"colors\"in Zs.inspectOpts?!!Zs.inspectOpts.colors:dvt.isatty(process.stderr.fd)}function yvt(t){let{namespace:e,useColors:r}=this;if(r){let s=this.color,a=\"\\x1B[3\"+(s<8?s:\"8;5;\"+s),n=`  ${a};1m${e} \\x1B[0m`;t[0]=n+t[0].split(`\n`).join(`\n`+n),t.push(a+\"m+\"+iL.exports.humanize(this.diff)+\"\\x1B[0m\")}else t[0]=Evt()+e+\" \"+t[0]}function Evt(){return Zs.inspectOpts.hideDate?\"\":new Date().toISOString()+\" \"}function Ivt(...t){return process.stderr.write(nL.formatWithOptions(Zs.inspectOpts,...t)+`\n`)}function Cvt(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function wvt(){return process.env.DEBUG}function Bvt(t){t.inspectOpts={};let e=Object.keys(Zs.inspectOpts);for(let r=0;r<e.length;r++)t.inspectOpts[e[r]]=Zs.inspectOpts[e[r]]}iL.exports=QJ()(Zs);var{formatters:GPe}=iL.exports;GPe.o=function(t){return this.inspectOpts.colors=this.useColors,nL.inspect(t,this.inspectOpts).split(`\n`).map(e=>e.trim()).join(\" \")};GPe.O=function(t){return this.inspectOpts.colors=this.useColors,nL.inspect(t,this.inspectOpts)}});var RJ=_((Pir,TJ)=>{typeof process>\"u\"||process.type===\"renderer\"||process.browser===!0||process.__nwjs?TJ.exports=jPe():TJ.exports=qPe()});var oL=_(Ki=>{\"use strict\";Object.defineProperty(Ki,\"__esModule\",{value:!0});Ki.DownloadHTTPError=Ki.DownloadLengthMismatchError=Ki.DownloadError=Ki.ExpiredMetadataError=Ki.EqualVersionError=Ki.BadVersionError=Ki.RepositoryError=Ki.PersistError=Ki.RuntimeError=Ki.ValueError=void 0;var FJ=class extends Error{};Ki.ValueError=FJ;var NJ=class extends Error{};Ki.RuntimeError=NJ;var OJ=class extends Error{};Ki.PersistError=OJ;var _b=class extends Error{};Ki.RepositoryError=_b;var sL=class extends _b{};Ki.BadVersionError=sL;var LJ=class extends sL{};Ki.EqualVersionError=LJ;var MJ=class extends _b{};Ki.ExpiredMetadataError=MJ;var Hb=class extends Error{};Ki.DownloadError=Hb;var UJ=class extends Hb{};Ki.DownloadLengthMismatchError=UJ;var _J=class extends Hb{constructor(e,r){super(e),this.statusCode=r}};Ki.DownloadHTTPError=_J});var YPe=_(d1=>{\"use strict\";var jJ=d1&&d1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(d1,\"__esModule\",{value:!0});d1.withTempFile=void 0;var HJ=jJ(Ie(\"fs/promises\")),vvt=jJ(Ie(\"os\")),WPe=jJ(Ie(\"path\")),Svt=async t=>Dvt(async e=>t(WPe.default.join(e,\"tempfile\")));d1.withTempFile=Svt;var Dvt=async t=>{let e=await HJ.default.realpath(vvt.default.tmpdir()),r=await HJ.default.mkdtemp(e+WPe.default.sep);try{return await t(r)}finally{await HJ.default.rm(r,{force:!0,recursive:!0,maxRetries:3})}}});var qJ=_(kg=>{\"use strict\";var lL=kg&&kg.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(kg,\"__esModule\",{value:!0});kg.DefaultFetcher=kg.BaseFetcher=void 0;var bvt=lL(RJ()),VPe=lL(Ie(\"fs\")),Pvt=lL(CO()),xvt=lL(Ie(\"util\")),JPe=oL(),kvt=YPe(),Qvt=(0,bvt.default)(\"tuf:fetch\"),aL=class{async downloadFile(e,r,s){return(0,kvt.withTempFile)(async a=>{let n=await this.fetch(e),c=0,f=VPe.default.createWriteStream(a);try{for await(let p of n){let h=Buffer.from(p);if(c+=h.length,c>r)throw new JPe.DownloadLengthMismatchError(\"Max length reached\");await Tvt(f,h)}}finally{await xvt.default.promisify(f.close).bind(f)()}return s(a)})}async downloadBytes(e,r){return this.downloadFile(e,r,async s=>{let a=VPe.default.createReadStream(s),n=[];for await(let c of a)n.push(c);return Buffer.concat(n)})}};kg.BaseFetcher=aL;var GJ=class extends aL{constructor(e={}){super(),this.timeout=e.timeout,this.retry=e.retry}async fetch(e){Qvt(\"GET %s\",e);let r=await(0,Pvt.default)(e,{timeout:this.timeout,retry:this.retry});if(!r.ok||!r?.body)throw new JPe.DownloadHTTPError(\"Failed to download\",r.status);return r.body}};kg.DefaultFetcher=GJ;var Tvt=async(t,e)=>new Promise((r,s)=>{t.write(e,a=>{a&&s(a),r(!0)})})});var KPe=_(cL=>{\"use strict\";Object.defineProperty(cL,\"__esModule\",{value:!0});cL.defaultConfig=void 0;cL.defaultConfig={maxRootRotations:256,maxDelegations:32,rootMaxLength:512e3,timestampMaxLength:16384,snapshotMaxLength:2e6,targetsMaxLength:5e6,prefixTargetsWithHash:!0,fetchTimeout:1e5,fetchRetries:void 0,fetchRetry:2}});var zPe=_(uL=>{\"use strict\";Object.defineProperty(uL,\"__esModule\",{value:!0});uL.TrustedMetadataStore=void 0;var Es=eL(),Hi=oL(),WJ=class{constructor(e){this.trustedSet={},this.referenceTime=new Date,this.loadTrustedRoot(e)}get root(){if(!this.trustedSet.root)throw new ReferenceError(\"No trusted root metadata\");return this.trustedSet.root}get timestamp(){return this.trustedSet.timestamp}get snapshot(){return this.trustedSet.snapshot}get targets(){return this.trustedSet.targets}getRole(e){return this.trustedSet[e]}updateRoot(e){let r=JSON.parse(e.toString(\"utf8\")),s=Es.Metadata.fromJSON(Es.MetadataKind.Root,r);if(s.signed.type!=Es.MetadataKind.Root)throw new Hi.RepositoryError(`Expected 'root', got ${s.signed.type}`);if(this.root.verifyDelegate(Es.MetadataKind.Root,s),s.signed.version!=this.root.signed.version+1)throw new Hi.BadVersionError(`Expected version ${this.root.signed.version+1}, got ${s.signed.version}`);return s.verifyDelegate(Es.MetadataKind.Root,s),this.trustedSet.root=s,s}updateTimestamp(e){if(this.snapshot)throw new Hi.RuntimeError(\"Cannot update timestamp after snapshot\");if(this.root.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError(\"Final root.json is expired\");let r=JSON.parse(e.toString(\"utf8\")),s=Es.Metadata.fromJSON(Es.MetadataKind.Timestamp,r);if(s.signed.type!=Es.MetadataKind.Timestamp)throw new Hi.RepositoryError(`Expected 'timestamp', got ${s.signed.type}`);if(this.root.verifyDelegate(Es.MetadataKind.Timestamp,s),this.timestamp){if(s.signed.version<this.timestamp.signed.version)throw new Hi.BadVersionError(`New timestamp version ${s.signed.version} is less than current version ${this.timestamp.signed.version}`);if(s.signed.version===this.timestamp.signed.version)throw new Hi.EqualVersionError(`New timestamp version ${s.signed.version} is equal to current version ${this.timestamp.signed.version}`);let a=this.timestamp.signed.snapshotMeta,n=s.signed.snapshotMeta;if(n.version<a.version)throw new Hi.BadVersionError(`New snapshot version ${n.version} is less than current version ${a.version}`)}return this.trustedSet.timestamp=s,this.checkFinalTimestamp(),s}updateSnapshot(e,r=!1){if(!this.timestamp)throw new Hi.RuntimeError(\"Cannot update snapshot before timestamp\");if(this.targets)throw new Hi.RuntimeError(\"Cannot update snapshot after targets\");this.checkFinalTimestamp();let s=this.timestamp.signed.snapshotMeta;r||s.verify(e);let a=JSON.parse(e.toString(\"utf8\")),n=Es.Metadata.fromJSON(Es.MetadataKind.Snapshot,a);if(n.signed.type!=Es.MetadataKind.Snapshot)throw new Hi.RepositoryError(`Expected 'snapshot', got ${n.signed.type}`);return this.root.verifyDelegate(Es.MetadataKind.Snapshot,n),this.snapshot&&Object.entries(this.snapshot.signed.meta).forEach(([c,f])=>{let p=n.signed.meta[c];if(!p)throw new Hi.RepositoryError(`Missing file ${c} in new snapshot`);if(p.version<f.version)throw new Hi.BadVersionError(`New version ${p.version} of ${c} is less than current version ${f.version}`)}),this.trustedSet.snapshot=n,this.checkFinalSnapsnot(),n}updateDelegatedTargets(e,r,s){if(!this.snapshot)throw new Hi.RuntimeError(\"Cannot update delegated targets before snapshot\");this.checkFinalSnapsnot();let a=this.trustedSet[s];if(!a)throw new Hi.RuntimeError(`No trusted ${s} metadata`);let n=this.snapshot.signed.meta?.[`${r}.json`];if(!n)throw new Hi.RepositoryError(`Missing ${r}.json in snapshot`);n.verify(e);let c=JSON.parse(e.toString(\"utf8\")),f=Es.Metadata.fromJSON(Es.MetadataKind.Targets,c);if(f.signed.type!=Es.MetadataKind.Targets)throw new Hi.RepositoryError(`Expected 'targets', got ${f.signed.type}`);a.verifyDelegate(r,f);let p=f.signed.version;if(p!=n.version)throw new Hi.BadVersionError(`Version ${p} of ${r} does not match snapshot version ${n.version}`);if(f.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError(`${r}.json is expired`);this.trustedSet[r]=f}loadTrustedRoot(e){let r=JSON.parse(e.toString(\"utf8\")),s=Es.Metadata.fromJSON(Es.MetadataKind.Root,r);if(s.signed.type!=Es.MetadataKind.Root)throw new Hi.RepositoryError(`Expected 'root', got ${s.signed.type}`);s.verifyDelegate(Es.MetadataKind.Root,s),this.trustedSet.root=s}checkFinalTimestamp(){if(!this.timestamp)throw new ReferenceError(\"No trusted timestamp metadata\");if(this.timestamp.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError(\"Final timestamp.json is expired\")}checkFinalSnapsnot(){if(!this.snapshot)throw new ReferenceError(\"No trusted snapshot metadata\");if(!this.timestamp)throw new ReferenceError(\"No trusted timestamp metadata\");if(this.snapshot.signed.isExpired(this.referenceTime))throw new Hi.ExpiredMetadataError(\"snapshot.json is expired\");let e=this.timestamp.signed.snapshotMeta;if(this.snapshot.signed.version!==e.version)throw new Hi.BadVersionError(\"Snapshot version doesn't match timestamp\")}};uL.TrustedMetadataStore=WJ});var XPe=_(YJ=>{\"use strict\";Object.defineProperty(YJ,\"__esModule\",{value:!0});YJ.join=Fvt;var Rvt=Ie(\"url\");function Fvt(t,e){return new Rvt.URL(Nvt(t)+Ovt(e)).toString()}function Nvt(t){return t.endsWith(\"/\")?t:t+\"/\"}function Ovt(t){return t.startsWith(\"/\")?t.slice(1):t}});var ZPe=_(nu=>{\"use strict\";var Lvt=nu&&nu.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),Mvt=nu&&nu.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),KJ=nu&&nu.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r in t)r!==\"default\"&&Object.prototype.hasOwnProperty.call(t,r)&&Lvt(e,t,r);return Mvt(e,t),e},Uvt=nu&&nu.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(nu,\"__esModule\",{value:!0});nu.Updater=void 0;var xA=eL(),_vt=Uvt(RJ()),m1=KJ(Ie(\"fs\")),fL=KJ(Ie(\"path\")),Hvt=KPe(),fy=oL(),jvt=qJ(),Gvt=zPe(),jb=KJ(XPe()),VJ=(0,_vt.default)(\"tuf:cache\"),JJ=class{constructor(e){let{metadataDir:r,metadataBaseUrl:s,targetDir:a,targetBaseUrl:n,fetcher:c,config:f}=e;this.dir=r,this.metadataBaseUrl=s,this.targetDir=a,this.targetBaseUrl=n,this.forceCache=e.forceCache??!1;let p=this.loadLocalMetadata(xA.MetadataKind.Root);this.trustedSet=new Gvt.TrustedMetadataStore(p),this.config={...Hvt.defaultConfig,...f},this.fetcher=c||new jvt.DefaultFetcher({timeout:this.config.fetchTimeout,retry:this.config.fetchRetries??this.config.fetchRetry})}async refresh(){if(this.forceCache)try{await this.loadTimestamp({checkRemote:!1})}catch{await this.loadRoot(),await this.loadTimestamp()}else await this.loadRoot(),await this.loadTimestamp();await this.loadSnapshot(),await this.loadTargets(xA.MetadataKind.Targets,xA.MetadataKind.Root)}async getTargetInfo(e){return this.trustedSet.targets||await this.refresh(),this.preorderDepthFirstWalk(e)}async downloadTarget(e,r,s){let a=r||this.generateTargetPath(e);if(!s){if(!this.targetBaseUrl)throw new fy.ValueError(\"Target base URL not set\");s=this.targetBaseUrl}let n=e.path;if(this.trustedSet.root.signed.consistentSnapshot&&this.config.prefixTargetsWithHash){let p=Object.values(e.hashes),{dir:h,base:E}=fL.parse(n),C=`${p[0]}.${E}`;n=h?`${h}/${C}`:C}let f=jb.join(s,n);return await this.fetcher.downloadFile(f,e.length,async p=>{await e.verify(m1.createReadStream(p)),VJ(\"WRITE %s\",a),m1.copyFileSync(p,a)}),a}async findCachedTarget(e,r){r||(r=this.generateTargetPath(e));try{if(m1.existsSync(r))return await e.verify(m1.createReadStream(r)),r}catch{return}}loadLocalMetadata(e){let r=fL.join(this.dir,`${e}.json`);return VJ(\"READ %s\",r),m1.readFileSync(r)}async loadRoot(){let r=this.trustedSet.root.signed.version+1,s=r+this.config.maxRootRotations;for(let a=r;a<s;a++){let n=jb.join(this.metadataBaseUrl,`${a}.root.json`);try{let c=await this.fetcher.downloadBytes(n,this.config.rootMaxLength);this.trustedSet.updateRoot(c),this.persistMetadata(xA.MetadataKind.Root,c)}catch(c){if(c instanceof fy.DownloadHTTPError&&[403,404].includes(c.statusCode))break;throw c}}}async loadTimestamp({checkRemote:e}={checkRemote:!0}){try{let a=this.loadLocalMetadata(xA.MetadataKind.Timestamp);if(this.trustedSet.updateTimestamp(a),!e)return}catch{}let r=jb.join(this.metadataBaseUrl,\"timestamp.json\"),s=await this.fetcher.downloadBytes(r,this.config.timestampMaxLength);try{this.trustedSet.updateTimestamp(s)}catch(a){if(a instanceof fy.EqualVersionError)return;throw a}this.persistMetadata(xA.MetadataKind.Timestamp,s)}async loadSnapshot(){try{let e=this.loadLocalMetadata(xA.MetadataKind.Snapshot);this.trustedSet.updateSnapshot(e,!0)}catch{if(!this.trustedSet.timestamp)throw new ReferenceError(\"No timestamp metadata\");let r=this.trustedSet.timestamp.signed.snapshotMeta,s=r.length||this.config.snapshotMaxLength,a=this.trustedSet.root.signed.consistentSnapshot?r.version:void 0,n=jb.join(this.metadataBaseUrl,a?`${a}.snapshot.json`:\"snapshot.json\");try{let c=await this.fetcher.downloadBytes(n,s);this.trustedSet.updateSnapshot(c),this.persistMetadata(xA.MetadataKind.Snapshot,c)}catch(c){throw new fy.RuntimeError(`Unable to load snapshot metadata error ${c}`)}}}async loadTargets(e,r){if(this.trustedSet.getRole(e))return this.trustedSet.getRole(e);try{let s=this.loadLocalMetadata(e);this.trustedSet.updateDelegatedTargets(s,e,r)}catch{if(!this.trustedSet.snapshot)throw new ReferenceError(\"No snapshot metadata\");let a=this.trustedSet.snapshot.signed.meta[`${e}.json`],n=a.length||this.config.targetsMaxLength,c=this.trustedSet.root.signed.consistentSnapshot?a.version:void 0,f=encodeURIComponent(e),p=jb.join(this.metadataBaseUrl,c?`${c}.${f}.json`:`${f}.json`);try{let h=await this.fetcher.downloadBytes(p,n);this.trustedSet.updateDelegatedTargets(h,e,r),this.persistMetadata(e,h)}catch(h){throw new fy.RuntimeError(`Unable to load targets error ${h}`)}}return this.trustedSet.getRole(e)}async preorderDepthFirstWalk(e){let r=[{roleName:xA.MetadataKind.Targets,parentRoleName:xA.MetadataKind.Root}],s=new Set;for(;s.size<=this.config.maxDelegations&&r.length>0;){let{roleName:a,parentRoleName:n}=r.pop();if(s.has(a))continue;let c=(await this.loadTargets(a,n))?.signed;if(!c)continue;let f=c.targets?.[e];if(f)return f;if(s.add(a),c.delegations){let p=[],h=c.delegations.rolesForTarget(e);for(let{role:E,terminating:C}of h)if(p.push({roleName:E,parentRoleName:a}),C){r.splice(0);break}p.reverse(),r.push(...p)}}}generateTargetPath(e){if(!this.targetDir)throw new fy.ValueError(\"Target directory not set\");let r=encodeURIComponent(e.path);return fL.join(this.targetDir,r)}persistMetadata(e,r){let s=encodeURIComponent(e);try{let a=fL.join(this.dir,`${s}.json`);VJ(\"WRITE %s\",a),m1.writeFileSync(a,r.toString(\"utf8\"))}catch(a){throw new fy.PersistError(`Failed to persist metadata ${s} error: ${a}`)}}};nu.Updater=JJ});var $Pe=_(Qg=>{\"use strict\";Object.defineProperty(Qg,\"__esModule\",{value:!0});Qg.Updater=Qg.BaseFetcher=Qg.TargetFile=void 0;var qvt=eL();Object.defineProperty(Qg,\"TargetFile\",{enumerable:!0,get:function(){return qvt.TargetFile}});var Wvt=qJ();Object.defineProperty(Qg,\"BaseFetcher\",{enumerable:!0,get:function(){return Wvt.BaseFetcher}});var Yvt=ZPe();Object.defineProperty(Qg,\"Updater\",{enumerable:!0,get:function(){return Yvt.Updater}})});var XJ=_(AL=>{\"use strict\";Object.defineProperty(AL,\"__esModule\",{value:!0});AL.TUFError=void 0;var zJ=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}};AL.TUFError=zJ});var exe=_(Gb=>{\"use strict\";var Vvt=Gb&&Gb.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Gb,\"__esModule\",{value:!0});Gb.readTarget=Kvt;var Jvt=Vvt(Ie(\"fs\")),pL=XJ();async function Kvt(t,e){let r=await zvt(t,e);return new Promise((s,a)=>{Jvt.default.readFile(r,\"utf-8\",(n,c)=>{n?a(new pL.TUFError({code:\"TUF_READ_TARGET_ERROR\",message:`error reading target ${r}`,cause:n})):s(c)})})}async function zvt(t,e){let r;try{r=await t.getTargetInfo(e)}catch(a){throw new pL.TUFError({code:\"TUF_REFRESH_METADATA_ERROR\",message:\"error refreshing TUF metadata\",cause:a})}if(!r)throw new pL.TUFError({code:\"TUF_FIND_TARGET_ERROR\",message:`target ${e} not found`});let s=await t.findCachedTarget(r);if(!s)try{s=await t.downloadTarget(r)}catch(a){throw new pL.TUFError({code:\"TUF_DOWNLOAD_TARGET_ERROR\",message:`error downloading target ${s}`,cause:a})}return s}});var txe=_((Uir,Xvt)=>{Xvt.exports={\"https://tuf-repo-cdn.sigstore.dev\":{\"root.json\":\"ewogInNpZ25hdHVyZXMiOiBbCiAgewogICAia2V5aWQiOiAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICJzaWciOiAiMzA0NjAyMjEwMDhhYjFmNmYxN2Q0ZjllNmQ3ZGNmMWM4ODkxMmI2YjUzY2MxMDM4ODY0NGFlMWYwOWJjMzdhMDgyY2QwNjAwM2UwMjIxMDBlMTQ1ZWY0YzdiNzgyZDRlODEwN2I1MzQzN2U2NjlkMDQ3Njg5MmNlOTk5OTAzYWUzM2QxNDQ0ODM2Njk5NmU3IgogIH0sCiAgewogICAia2V5aWQiOiAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICJzaWciOiAiMzA0NTAyMjEwMGM3NjhiMmY4NmRhOTk1NjkwMTljMTYwYTA4MWRhNTRhZTM2YzM0YzBhMzEyMGQzY2I2OWI1M2I3ZDExMzc1OGUwMjIwNGY2NzE1MThmNjE3YjIwZDQ2NTM3ZmFlNmMzYjYzYmFlODkxM2Y0ZjE5NjIxNTYxMDVjYzRmMDE5YWMzNWM2YSIKICB9LAogIHsKICAgImtleWlkIjogIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAic2lnIjogIjMwNDUwMjIxMDBiNDQzNGU2OTk1ZDM2OGQyM2U3NDc1OWFjZDBjYjkwMTNjODNhNWQzNTExZjBmOTk3ZWM1NGM0NTZhZTQzNTBhMDIyMDE1YjBlMjY1ZDE4MmQyYjYxZGM3NGUxNTVkOThiM2MzZmJlNTY0YmEwNTI4NmFhMTRjOGRmMDJjOWI3NTY1MTYiCiAgfSwKICB7CiAgICJrZXlpZCI6ICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgInNpZyI6ICIzMDQ1MDIyMTAwODJjNTg0MTFkOTg5ZWI5Zjg2MTQxMDg1N2Q0MjM4MTU5MGVjOTQyNGRiZGFhNTFlNzhlZDEzNTE1NDMxOTA0ZTAyMjAxMTgxODVkYTZhNmMyOTQ3MTMxYzE3Nzk3ZTJiYjc2MjBjZTI2ZTVmMzAxZDFjZWFjNWYyYTdlNThmOWRjZjJlIgogIH0sCiAgewogICAia2V5aWQiOiAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIsCiAgICJzaWciOiAiMzA0NjAyMjEwMGM3ODUxMzg1NGNhZTljMzJlYWE2Yjg4ZTE4OTEyZjQ4MDA2YzI3NTdhMjU4ZjkxNzMxMmNhYmE3NTk0OGViOWUwMjIxMDBkOWUxYjRjZTBhZGZlOWZkMmUyMTQ4ZDdmYTI3YTJmNDBiYTExMjJiZDY5ZGE3NjEyZDhkMTc3NmIwMTNjOTFkIgogIH0sCiAgewogICAia2V5aWQiOiAiZmRmYTgzYTA3YjVhODM1ODliODdkZWQ0MWY3N2YzOWQyMzJhZDkxZjdjY2U1Mjg2OGRhY2QwNmJhMDg5ODQ5ZiIsCiAgICJzaWciOiAiMzA0NTAyMjA1NjQ4M2EyZDVkOWVhOWNlYzZlMTFlYWRmYjMzYzQ4NGI2MTQyOThmYWNhMTVhY2YxYzQzMWIxMWVkN2Y3MzRjMDIyMTAwZDBjMWQ3MjZhZjkyYTg3ZTRlNjY0NTljYTVhZGYzOGEwNWI0NGUxZjk0MzE4NDIzZjk1NGJhZThiY2E1YmIyZSIKICB9LAogIHsKICAgImtleWlkIjogImUyZjU5YWNiOTQ4ODUxOTQwN2UxOGNiZmM5MzI5NTEwYmUwM2MwNGFjYTk5MjlkMmYwMzAxMzQzZmVjODU1MjMiLAogICAic2lnIjogIjMwNDYwMjIxMDBkMDA0ZGU4ODAyNGMzMmRjNTY1M2E5ZjQ4NDNjZmM1MjE1NDI3MDQ4YWQ5NjAwZDJjZjljOTY5ZTZlZGZmM2QyMDIyMTAwZDllYmI3OThmNWZjNjZhZjEwODk5ZGVjZTAxNGE4NjI4Y2NmM2M1NDAyY2Q0YTQyNzAyMDc0NzJmOGY2ZTcxMiIKICB9LAogIHsKICAgImtleWlkIjogIjNjMzQ0YWEwNjhmZDRjYzRlODdkYzUwYjYxMmMwMjQzMWZiYzc3MWU5NTAwMzk5MzY4M2EyYjBiZjI2MGNmMGUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiN2IwOTk5NmM0NWNhMmQ0YjA1NjAzZTU2YmFlZmEyOTcxOGEwYjcxMTQ3Y2Y4YzZlNjYzNDliYWE2MTQ3N2RmMDIyMTAwYzRkYTgwYzcxN2I0ZmE3YmJhMGZkNWM3MmRhOGEwNDk5MzU4YjAxMzU4YjIzMDlmNDFkMTQ1NmVhMWU3ZTFkOSIKICB9LAogIHsKICAgImtleWlkIjogImVjODE2Njk3MzRlMDE3OTk2YzViODVmM2QwMmMzZGUxZGQ0NjM3YTE1MjAxOWZlMWFmMTI1ZDJmOTM2OGI5NWUiLAogICAic2lnIjogIjMwNDYwMjIxMDBiZTk3ODJjMzA3NDRlNDExYTgyZmE4NWI1MTM4ZDYwMWNlMTQ4YmMxOTI1OGFlYzY0ZTdlYzI0NDc4ZjM4ODEyMDIyMTAwY2FlZjYzZGNhZjFhNGI5YTUwMGQzYmQwZTNmMTY0ZWMxOGYxYjYzZDdhOTQ2MGQ5YWNhYjEwNjZkYjBmMDE2ZCIKICB9LAogIHsKICAgImtleWlkIjogIjFlMWQ2NWNlOThiMTBhZGRhZDQ3NjRmZWJmN2RkYTJkMDQzNmIzZDNhMzg5MzU3OWMwZGRkYWVhMjBlNTQ4NDkiLAogICAic2lnIjogIjMwNDUwMjIwNzQ2ZWMzZjg1MzRjZTU1NTMxZDBkMDFmZjY0OTY0ZWY0NDBkMWU3ZDJjNGMxNDI0MDliOGU5NzY5ZjFhZGE2ZjAyMjEwMGUzYjkyOWZjZDkzZWExOGZlYWEwODI1ODg3YTcyMTA0ODk4NzlhNjY3ODBjMDdhODNmNGJkNDZlMmYwOWFiM2IiCiAgfQogXSwKICJzaWduZWQiOiB7CiAgIl90eXBlIjogInJvb3QiLAogICJjb25zaXN0ZW50X3NuYXBzaG90IjogdHJ1ZSwKICAiZXhwaXJlcyI6ICIyMDI1LTAyLTE5VDA4OjA0OjMyWiIsCiAgImtleXMiOiB7CiAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFekJ6Vk9tSENQb2pNVkxTSTM2NFdpaVY4TlByRFxuNklnUnhWbGlza3ovdit5M0pFUjVtY1ZHY09ObGlEY1dNQzVKMmxmSG1qUE5QaGI0SDd4bThMemZTQT09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBzYW50aWFnb3RvcnJlcyIKICAgfSwKICAgIjYxNjQzODM4MTI1YjQ0MGI0MGRiNjk0MmY1Y2I1YTMxYzBkYzA0MzY4MzE2ZWIyYWFhNThiOTU5MDRhNTgyMjIiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVpbmlrU3NBUW1Za05lSDVlWXEvQ25JekxhYWNPXG54bFNhYXdRRE93cUt5L3RDcXhxNXh4UFNKYzIxSzRXSWhzOUd5T2tLZnp1ZVkzR0lMemNNSlo0Y1d3PT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2kta2V5b3duZXIiOiAiQGJvYmNhbGxhd2F5IgogICB9LAogICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRXk4WEtzbWhCWURJOEpjMEd3ekJ4ZUtheDBjbTVcblNUS0VVNjVIUEZ1blVuNDFzVDhwaTBGak00SWtIei9ZVW13bUxVTzBXdDdseGhqNkJrTElLNHFZQXc9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAZGxvcmVuYyIKICAgfSwKICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiOiB7CiAgICAia2V5aWRfaGFzaF9hbGdvcml0aG1zIjogWwogICAgICJzaGEyNTYiLAogICAgICJzaGE1MTIiCiAgICBdLAogICAgImtleXR5cGUiOiAiZWNkc2EiLAogICAgImtleXZhbCI6IHsKICAgICAicHVibGljIjogIi0tLS0tQkVHSU4gUFVCTElDIEtFWS0tLS0tXG5NRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUVXUmlHcjUraiszSjVTc0grWnRyNW5FMkgyd083XG5CVituTzNzOTNnTGNhMThxVE96SFkxb1d5QUdEeWtNU3NHVFVCU3Q5RCtBbjBLZktzRDJtZlNNNDJRPT1cbi0tLS0tRU5EIFBVQkxJQyBLRVktLS0tLVxuIgogICAgfSwKICAgICJzY2hlbWUiOiAiZWNkc2Etc2hhMi1uaXN0cDI1NiIsCiAgICAieC10dWYtb24tY2ktb25saW5lLXVyaSI6ICJnY3BrbXM6Ly9wcm9qZWN0cy9zaWdzdG9yZS1yb290LXNpZ25pbmcvbG9jYXRpb25zL2dsb2JhbC9rZXlSaW5ncy9yb290L2NyeXB0b0tleXMvdGltZXN0YW1wIgogICB9LAogICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCI6IHsKICAgICJrZXlpZF9oYXNoX2FsZ29yaXRobXMiOiBbCiAgICAgInNoYTI1NiIsCiAgICAgInNoYTUxMiIKICAgIF0sCiAgICAia2V5dHlwZSI6ICJlY2RzYSIsCiAgICAia2V5dmFsIjogewogICAgICJwdWJsaWMiOiAiLS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS1cbk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTBnaHJoOTJMdzFZcjNpZEdWNVdxQ3RNREI4Q3hcbitEOGhkQzR3MlpMTklwbFZSb1ZHTHNrWWEzZ2hlTXlPamlKOGtQaTE1YVEyLy83UCtvajdVdkpQR3c9PVxuLS0tLS1FTkQgUFVCTElDIEtFWS0tLS0tXG4iCiAgICB9LAogICAgInNjaGVtZSI6ICJlY2RzYS1zaGEyLW5pc3RwMjU2IiwKICAgICJ4LXR1Zi1vbi1jaS1rZXlvd25lciI6ICJAam9zaHVhZ2wiCiAgIH0sCiAgICJlNzFhNTRkNTQzODM1YmE4NmFkYWQ5NDYwMzc5Yzc2NDFmYjg3MjZkMTY0ZWE3NjY4MDFhMWM1MjJhYmE3ZWEyIjogewogICAgImtleWlkX2hhc2hfYWxnb3JpdGhtcyI6IFsKICAgICAic2hhMjU2IiwKICAgICAic2hhNTEyIgogICAgXSwKICAgICJrZXl0eXBlIjogImVjZHNhIiwKICAgICJrZXl2YWwiOiB7CiAgICAgInB1YmxpYyI6ICItLS0tLUJFR0lOIFBVQkxJQyBLRVktLS0tLVxuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFRVhzejNTWlhGYjhqTVY0Mmo2cEpseWpialI4S1xuTjNCd29jZXhxNkxNSWI1cXNXS09RdkxOMTZOVWVmTGM0SHN3T291bVJzVlZhYWpTcFFTNmZvYmtSdz09XG4tLS0tLUVORCBQVUJMSUMgS0VZLS0tLS1cbiIKICAgIH0sCiAgICAic2NoZW1lIjogImVjZHNhLXNoYTItbmlzdHAyNTYiLAogICAgIngtdHVmLW9uLWNpLWtleW93bmVyIjogIkBtbm02NzgiCiAgIH0KICB9LAogICJyb2xlcyI6IHsKICAgInJvb3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI2ZjI2MDA4OWQ1OTIzZGFmMjAxNjZjYTY1N2M1NDNhZjYxODM0NmFiOTcxODg0YTk5OTYyYjAxOTg4YmJlMGMzIiwKICAgICAiZTcxYTU0ZDU0MzgzNWJhODZhZGFkOTQ2MDM3OWM3NjQxZmI4NzI2ZDE2NGVhNzY2ODAxYTFjNTIyYWJhN2VhMiIsCiAgICAgIjIyZjRjYWVjNmQ4ZTZmOTU1NWFmNjZiM2Q0YzNjYjA2YTNiYjIzZmRjN2UzOWM5MTZjNjFmNDYyZTZmNTJiMDYiLAogICAgICI2MTY0MzgzODEyNWI0NDBiNDBkYjY5NDJmNWNiNWEzMWMwZGMwNDM2ODMxNmViMmFhYTU4Yjk1OTA0YTU4MjIyIiwKICAgICAiYTY4N2U1YmY0ZmFiODJiMGVlNThkNDZlMDVjOTUzNTE0NWEyYzlhZmI0NThmNDNkNDJiNDVjYTBmZGNlMmE3MCIKICAgIF0sCiAgICAidGhyZXNob2xkIjogMwogICB9LAogICAic25hcHNob3QiOiB7CiAgICAia2V5aWRzIjogWwogICAgICI3MjQ3ZjBkYmFkODViMTQ3ZTE4NjNiYWRlNzYxMjQzY2M3ODVkY2I3YWE0MTBlNzEwNWRkM2QyYjYxYTM2ZDJjIgogICAgXSwKICAgICJ0aHJlc2hvbGQiOiAxLAogICAgIngtdHVmLW9uLWNpLWV4cGlyeS1wZXJpb2QiOiAzNjUwLAogICAgIngtdHVmLW9uLWNpLXNpZ25pbmctcGVyaW9kIjogMzY1CiAgIH0sCiAgICJ0YXJnZXRzIjogewogICAgImtleWlkcyI6IFsKICAgICAiNmYyNjAwODlkNTkyM2RhZjIwMTY2Y2E2NTdjNTQzYWY2MTgzNDZhYjk3MTg4NGE5OTk2MmIwMTk4OGJiZTBjMyIsCiAgICAgImU3MWE1NGQ1NDM4MzViYTg2YWRhZDk0NjAzNzljNzY0MWZiODcyNmQxNjRlYTc2NjgwMWExYzUyMmFiYTdlYTIiLAogICAgICIyMmY0Y2FlYzZkOGU2Zjk1NTVhZjY2YjNkNGMzY2IwNmEzYmIyM2ZkYzdlMzljOTE2YzYxZjQ2MmU2ZjUyYjA2IiwKICAgICAiNjE2NDM4MzgxMjViNDQwYjQwZGI2OTQyZjVjYjVhMzFjMGRjMDQzNjgzMTZlYjJhYWE1OGI5NTkwNGE1ODIyMiIsCiAgICAgImE2ODdlNWJmNGZhYjgyYjBlZTU4ZDQ2ZTA1Yzk1MzUxNDVhMmM5YWZiNDU4ZjQzZDQyYjQ1Y2EwZmRjZTJhNzAiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDMKICAgfSwKICAgInRpbWVzdGFtcCI6IHsKICAgICJrZXlpZHMiOiBbCiAgICAgIjcyNDdmMGRiYWQ4NWIxNDdlMTg2M2JhZGU3NjEyNDNjYzc4NWRjYjdhYTQxMGU3MTA1ZGQzZDJiNjFhMzZkMmMiCiAgICBdLAogICAgInRocmVzaG9sZCI6IDEsCiAgICAieC10dWYtb24tY2ktZXhwaXJ5LXBlcmlvZCI6IDcsCiAgICAieC10dWYtb24tY2ktc2lnbmluZy1wZXJpb2QiOiA0CiAgIH0KICB9LAogICJzcGVjX3ZlcnNpb24iOiAiMS4wIiwKICAidmVyc2lvbiI6IDEwLAogICJ4LXR1Zi1vbi1jaS1leHBpcnktcGVyaW9kIjogMTgyLAogICJ4LXR1Zi1vbi1jaS1zaWduaW5nLXBlcmlvZCI6IDMxCiB9Cn0=\",targets:{\"trusted_root.json\":\"ewogICJtZWRpYVR5cGUiOiAiYXBwbGljYXRpb24vdm5kLmRldi5zaWdzdG9yZS50cnVzdGVkcm9vdCtqc29uO3ZlcnNpb249MC4xIiwKICAidGxvZ3MiOiBbCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vcmVrb3Iuc2lnc3RvcmUuZGV2IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUyRzJZKzJ0YWJkVFY1QmNHaUJJeDBhOWZBRndya0JibUxTR3RrczRMM3FYNnlZWTB6dWZCbmhDOFVyL2l5NTVHaFdQLzlBL2JZMkxoQzMwTTkrUll0dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDEtMTJUMTE6NTM6MjcuMDAwWiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAid05JOWF0UUdseitWV2ZPNkxSeWdINFFVZlkvOFc0UkZ3aVQ1aTVXUmdCMD0iCiAgICAgIH0KICAgIH0KICBdLAogICJjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzIjogWwogICAgewogICAgICAic3ViamVjdCI6IHsKICAgICAgICAib3JnYW5pemF0aW9uIjogInNpZ3N0b3JlLmRldiIsCiAgICAgICAgImNvbW1vbk5hbWUiOiAic2lnc3RvcmUiCiAgICAgIH0sCiAgICAgICJ1cmkiOiAiaHR0cHM6Ly9mdWxjaW8uc2lnc3RvcmUuZGV2IiwKICAgICAgImNlcnRDaGFpbiI6IHsKICAgICAgICAiY2VydGlmaWNhdGVzIjogWwogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQitEQ0NBWDZnQXdJQkFnSVROVmtEWm9DaW9mUERzeTdkZm02Z2VMYnVoekFLQmdncWhrak9QUVFEQXpBcU1SVXdFd1lEVlFRS0V3eHphV2R6ZEc5eVpTNWtaWFl4RVRBUEJnTlZCQU1UQ0hOcFozTjBiM0psTUI0WERUSXhNRE13TnpBek1qQXlPVm9YRFRNeE1ESXlNekF6TWpBeU9Wb3dLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQjJNQkFHQnlxR1NNNDlBZ0VHQlN1QkJBQWlBMklBQkxTeUE3SWk1aytwTk84WkVXWTB5bGVtV0Rvd09rTmEza0wrR1pFNVo1R1dlaEw5L0E5YlJOQTNSYnJzWjVpMEpjYXN0YVJMN1NwNWZwL2pENWR4cWMvVWRUVm5sdlMxNmFuKzJZZnN3ZS9RdUxvbFJVQ3JjT0UyKzJpQTUrdHpkNk5tTUdRd0RnWURWUjBQQVFIL0JBUURBZ0VHTUJJR0ExVWRFd0VCL3dRSU1BWUJBZjhDQVFFd0hRWURWUjBPQkJZRUZNakZIUUJCbWlRcE1sRWs2dzJ1U3UxS0J0UHNNQjhHQTFVZEl3UVlNQmFBRk1qRkhRQkJtaVFwTWxFazZ3MnVTdTFLQnRQc01Bb0dDQ3FHU000OUJBTURBMmdBTUdVQ01IOGxpV0pmTXVpNnZYWEJoakRnWTRNd3NsbU4vVEp4VmUvODNXckZvbXdtTmYwNTZ5MVg0OEY5YzRtM2Ezb3pYQUl4QUtqUmF5NS9hai9qc0tLR0lrbVFhdGpJOHV1cEhyLytDeEZ2YUpXbXBZcU5rTERHUlUrOW9yemg1aEkyUnJjdWFRPT0iCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMDdUMDM6MjA6MjkuMDAwWiIsCiAgICAgICAgImVuZCI6ICIyMDIyLTEyLTMxVDIzOjU5OjU5Ljk5OVoiCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAic2lnc3RvcmUuZGV2IiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJzaWdzdG9yZSIKICAgICAgfSwKICAgICAgInVyaSI6ICJodHRwczovL2Z1bGNpby5zaWdzdG9yZS5kZXYiLAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlDR2pDQ0FhR2dBd0lCQWdJVUFMblZpVmZuVTBickphc21Sa0hybi9VbmZhUXdDZ1lJS29aSXpqMEVBd013S2pFVk1CTUdBMVVFQ2hNTWMybG5jM1J2Y21VdVpHVjJNUkV3RHdZRFZRUURFd2h6YVdkemRHOXlaVEFlRncweU1qQTBNVE15TURBMk1UVmFGdzB6TVRFd01EVXhNelUyTlRoYU1EY3hGVEFUQmdOVkJBb1RESE5wWjNOMGIzSmxMbVJsZGpFZU1Cd0dBMVVFQXhNVmMybG5jM1J2Y21VdGFXNTBaWEp0WldScFlYUmxNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRThSVlMveXNIK05PdnVEWnlQSVp0aWxnVUY5TmxhcllwQWQ5SFAxdkJCSDFVNUNWNzdMU1M3czBaaUg0bkU3SHY3cHRTNkx2dlIvU1RrNzk4TFZnTXpMbEo0SGVJZkYzdEhTYWV4TGNZcFNBU3Ixa1MwTi9SZ0JKei85aldDaVhubzNzd2VUQU9CZ05WSFE4QkFmOEVCQU1DQVFZd0V3WURWUjBsQkF3d0NnWUlLd1lCQlFVSEF3TXdFZ1lEVlIwVEFRSC9CQWd3QmdFQi93SUJBREFkQmdOVkhRNEVGZ1FVMzlQcHoxWWtFWmI1cU5qcEtGV2l4aTRZWkQ4d0h3WURWUjBqQkJnd0ZvQVVXTUFlWDVGRnBXYXBlc3lRb1pNaTBDckZ4Zm93Q2dZSUtvWkl6ajBFQXdNRFp3QXdaQUl3UENzUUs0RFlpWllEUElhRGk1SEZLbmZ4WHg2QVNTVm1FUmZzeW5ZQmlYMlg2U0pSblpVODQvOURaZG5GdnZ4bUFqQk90NlFwQmxjNEovMER4dmtUQ3FwY2x2emlMNkJDQ1BuamRsSUIzUHUzQnhzUG15Z1VZN0lpMnpiZENkbGlpb3c9IgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUI5ekNDQVh5Z0F3SUJBZ0lVQUxaTkFQRmR4SFB3amVEbG9Ed3lZQ2hBTy80d0NnWUlLb1pJemowRUF3TXdLakVWTUJNR0ExVUVDaE1NYzJsbmMzUnZjbVV1WkdWMk1SRXdEd1lEVlFRREV3aHphV2R6ZEc5eVpUQWVGdzB5TVRFd01EY3hNelUyTlRsYUZ3MHpNVEV3TURVeE16VTJOVGhhTUNveEZUQVRCZ05WQkFvVERITnBaM04wYjNKbExtUmxkakVSTUE4R0ExVUVBeE1JYzJsbmMzUnZjbVV3ZGpBUUJnY3Foa2pPUFFJQkJnVXJnUVFBSWdOaUFBVDdYZUZUNHJiM1BRR3dTNElhanRMazMvT2xucGdhbmdhQmNsWXBzWUJyNWkrNHluQjA3Y2ViM0xQME9JT1pkeGV4WDY5YzVpVnV5SlJRK0h6MDV5aStVRjN1QldBbEhwaVM1c2gwK0gyR0hFN1NYcmsxRUM1bTFUcjE5TDlnZzkyall6QmhNQTRHQTFVZER3RUIvd1FFQXdJQkJqQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01CMEdBMVVkRGdRV0JCUll3QjVma1VXbFpxbDZ6SkNoa3lMUUtzWEYrakFmQmdOVkhTTUVHREFXZ0JSWXdCNWZrVVdsWnFsNnpKQ2hreUxRS3NYRitqQUtCZ2dxaGtqT1BRUURBd05wQURCbUFqRUFqMW5IZVhacCsxM05XQk5hK0VEc0RQOEcxV1dnMXRDTVdQL1dIUHFwYVZvMGpoc3dlTkZaZ1NzMGVFN3dZSTRxQWpFQTJXQjlvdDk4c0lrb0YzdlpZZGQzL1Z0V0I1YjlUTk1lYTdJeC9zdEo1VGZjTExlQUJMRTRCTkpPc1E0dm5CSEoiCiAgICAgICAgICB9CiAgICAgICAgXQogICAgICB9LAogICAgICAidmFsaWRGb3IiOiB7CiAgICAgICAgInN0YXJ0IjogIjIwMjItMDQtMTNUMjA6MDY6MTUuMDAwWiIKICAgICAgfQogICAgfQogIF0sCiAgImN0bG9ncyI6IFsKICAgIHsKICAgICAgImJhc2VVcmwiOiAiaHR0cHM6Ly9jdGZlLnNpZ3N0b3JlLmRldi90ZXN0IiwKICAgICAgImhhc2hBbGdvcml0aG0iOiAiU0hBMl8yNTYiLAogICAgICAicHVibGljS2V5IjogewogICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUViZndSK1JKdWRYc2NnUkJScEtYMVhGRHkzUHl1ZER4ei9TZm5SaTFmVDhla3BmQmQyTzF1b3o3anIzWjhuS3p4QTY5RVVRK2VGQ0ZJM3pldWJQV1U3dz09IiwKICAgICAgICAia2V5RGV0YWlscyI6ICJQS0lYX0VDRFNBX1AyNTZfU0hBXzI1NiIsCiAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgInN0YXJ0IjogIjIwMjEtMDMtMTRUMDA6MDA6MDAuMDAwWiIsCiAgICAgICAgICAiZW5kIjogIjIwMjItMTAtMzFUMjM6NTk6NTkuOTk5WiIKICAgICAgICB9CiAgICAgIH0sCiAgICAgICJsb2dJZCI6IHsKICAgICAgICAia2V5SWQiOiAiQ0dDUzhDaFMvMmhGMGRGcko0U2NSV2NZckJZOXd6alNiZWE4SWdZMmIzST0iCiAgICAgIH0KICAgIH0sCiAgICB7CiAgICAgICJiYXNlVXJsIjogImh0dHBzOi8vY3RmZS5zaWdzdG9yZS5kZXYvMjAyMiIsCiAgICAgICJoYXNoQWxnb3JpdGhtIjogIlNIQTJfMjU2IiwKICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAicmF3Qnl0ZXMiOiAiTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFaVBTbEZpMENtRlRmRWpDVXFGOUh1Q0VjWVhOS0FhWWFsSUptQlo4eXllelBqVHFoeHJLQnBNbmFvY1Z0TEpCSTFlTTN1WG5RelFHQUpkSjRnczlGeXc9PSIsCiAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICJzdGFydCI6ICIyMDIyLTEwLTIwVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgfQogICAgICB9LAogICAgICAibG9nSWQiOiB7CiAgICAgICAgImtleUlkIjogIjNUMHdhc2JIRVRKakdSNGNtV2MzQXFKS1hyamVQSzMvaDRweWdDOHA3bzQ9IgogICAgICB9CiAgICB9CiAgXSwKICAidGltZXN0YW1wQXV0aG9yaXRpZXMiOiBbCiAgICB7CiAgICAgICJzdWJqZWN0IjogewogICAgICAgICJvcmdhbml6YXRpb24iOiAiR2l0SHViLCBJbmMuIiwKICAgICAgICAiY29tbW9uTmFtZSI6ICJJbnRlcm5hbCBTZXJ2aWNlcyBSb290IgogICAgICB9LAogICAgICAiY2VydENoYWluIjogewogICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBbCiAgICAgICAgICB7CiAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNSUlCM0RDQ0FXS2dBd0lCQWdJVWNoa05zSDM2WGEwNGIxTHFJYytxcjlEVmVjTXdDZ1lJS29aSXpqMEVBd013TWpFVk1CTUdBMVVFQ2hNTVIybDBTSFZpTENCSmJtTXVNUmt3RndZRFZRUURFeEJVVTBFZ2FXNTBaWEp0WldScFlYUmxNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVEkwTURReE16QXdNREF3TUZvd01qRVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVJrd0Z3WURWUVFERXhCVVUwRWdWR2x0WlhOMFlXMXdhVzVuTUZrd0V3WUhLb1pJemowQ0FRWUlLb1pJemowREFRY0RRZ0FFVUQ1Wk5iU3FZTWQ2cjhxcE9PRVg5aWJHblpUOUdzdVhPaHIvZjhVOUZKdWdCR0V4S1lwNDBPVUxTMGVyalpXN3hWOXhWNTJObkpmNU9lRHE0ZTVaS3FOV01GUXdEZ1lEVlIwUEFRSC9CQVFEQWdlQU1CTUdBMVVkSlFRTU1Bb0dDQ3NHQVFVRkJ3TUlNQXdHQTFVZEV3RUIvd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVhVzFSdWRPZ1Z0MGxlcVkwV0tZYnVQcjQ3d0F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl3YlVIOUh2RDRlakNaSk9XUW5xQWxrcVVSbGx2dTlNOCtWcUxiaVJLK3pTZlpDWndzaWxqUm44TVFRUlNrWEVFNUFqRUFnK1Z4cXRvamZWZnU4RGh6emhDeDlHS0VUYkpIYjE5aVY3Mm1NS1ViREFGbXpaNmJROGI1NFpiOHRpZHk1YVdlIgogICAgICAgICAgfSwKICAgICAgICAgIHsKICAgICAgICAgICAgInJhd0J5dGVzIjogIk1JSUNFRENDQVpXZ0F3SUJBZ0lVWDhaTzVRWFA3dk40ZE1RNWU5c1UzbnViOE9nd0NnWUlLb1pJemowRUF3TXdPREVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1SOHdIUVlEVlFRREV4WkpiblJsY201aGJDQlRaWEoyYVdObGN5QlNiMjkwTUI0WERUSXpNRFF4TkRBd01EQXdNRm9YRFRJNE1EUXhNakF3TURBd01Gb3dNakVWTUJNR0ExVUVDaE1NUjJsMFNIVmlMQ0JKYm1NdU1Sa3dGd1lEVlFRREV4QlVVMEVnYVc1MFpYSnRaV1JwWVhSbE1IWXdFQVlIS29aSXpqMENBUVlGSzRFRUFDSURZZ0FFdk1MWS9kVFZidklKWUFOQXVzekV3Sm5RRTFsbGZ0eW55TUtJTWhoNDhIbXFiVnI1eWd5YnpzTFJMVktiQldPZFoyMWFlSnorZ1ppeXRaZXRxY3lGOVdsRVI1TkVNZjZKVjdaTm9qUXB4SHE0UkhHb0dTY2VRdi9xdlRpWnhFREtvMll3WkRBT0JnTlZIUThCQWY4RUJBTUNBUVl3RWdZRFZSMFRBUUgvQkFnd0JnRUIvd0lCQURBZEJnTlZIUTRFRmdRVWFXMVJ1ZE9nVnQwbGVxWTBXS1lidVByNDd3QXdId1lEVlIwakJCZ3dGb0FVOU5ZWWxvYm5BRzRjMC9xanh5SC9scS93eitRd0NnWUlLb1pJemowRUF3TURhUUF3WmdJeEFLMUIxODV5Z0NySVlGbElzM0dqc3dqbndTTUc2TFk4d29MVmRha0tEWnhWYThmOGNxTXMxRGhjeEowKzA5dzk1UUl4QU8rdEJ6Wms3dmpVSjlpSmdENFI2WldUeFFXS3FObTc0ak85OW8rbzlzdjRGSS9TWlRaVEZ5TW4wSUpFSGRObXlBPT0iCiAgICAgICAgICB9LAogICAgICAgICAgewogICAgICAgICAgICAicmF3Qnl0ZXMiOiAiTUlJQjlEQ0NBWHFnQXdJQkFnSVVhL0pBa2RVaks0SlV3c3F0YWlSSkdXaHFMU293Q2dZSUtvWkl6ajBFQXdNd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNQjRYRFRJek1EUXhOREF3TURBd01Gb1hEVE16TURReE1UQXdNREF3TUZvd09ERVZNQk1HQTFVRUNoTU1SMmwwU0hWaUxDQkpibU11TVI4d0hRWURWUVFERXhaSmJuUmxjbTVoYkNCVFpYSjJhV05sY3lCU2IyOTBNSFl3RUFZSEtvWkl6ajBDQVFZRks0RUVBQ0lEWWdBRWY5akZBWHh6NGt4NjhBSFJNT2tGQmhmbERjTVR2emFYejR4L0ZDY1hqSi8xcUVLb24vcVBJR25hVVJza0R0eU5iTkRPcGVKVERERnF0NDhpTVBybnpweDZJWndxZW1mVUpONHhCRVpmemErcFl0L2l5b2QrOXRacjIwUlJXU3YvbzBVd1F6QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0VnWURWUjBUQVFIL0JBZ3dCZ0VCL3dJQkFqQWRCZ05WSFE0RUZnUVU5TllZbG9ibkFHNGMwL3FqeHlIL2xxL3d6K1F3Q2dZSUtvWkl6ajBFQXdNRGFBQXdaUUl4QUxaTFo4QmdSWHpLeExNTU45VklsTytlNGhyQm5OQmdGN3R6N0hucm93djJOZXRaRXJJQUNLRnltQmx2V0R2dE1BSXdaTytraTZzc1ExYnNabzk4TzhtRUFmMk5aN2lpQ2dERFUwVndqZWNvNnp5ZWgwekJUczkvN2dWNkFITlE1M3hEIgogICAgICAgICAgfQogICAgICAgIF0KICAgICAgfSwKICAgICAgInZhbGlkRm9yIjogewogICAgICAgICJzdGFydCI6ICIyMDIzLTA0LTE0VDAwOjAwOjAwLjAwMFoiCiAgICAgIH0KICAgIH0KICBdCn0K\",\"registry.npmjs.org%2Fkeys.json\":\"ewogICAgImtleXMiOiBbCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OmpsM2J3c3d1ODBQampva0NnaDBvMnc1YzJVNExoUUFFNTdnajljejFrekEiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRTFPbGIzek1BRkZ4WEtIaUlrUU81Y0ozWWhsNWk2VVBwK0lodXRlQkpidUhjQTVVb2dLbzBFV3RsV3dXNktTYUtvVE5FWUw3SmxDUWlWbmtoQmt0VWdnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIxOTk5LTAxLTAxVDAwOjAwOjAwLjAwMFoiLAogICAgICAgICAgICAgICAgICAgICJlbmQiOiAiMjAyNS0wMS0yOVQwMDowMDowMC4wMDBaIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgICJrZXlJZCI6ICJTSEEyNTY6amwzYndzd3U4MFBqam9rQ2doMG8ydzVjMlU0TGhRQUU1N2dqOWN6MWt6QSIsCiAgICAgICAgICAgICJrZXlVc2FnZSI6ICJucG06YXR0ZXN0YXRpb25zIiwKICAgICAgICAgICAgInB1YmxpY0tleSI6IHsKICAgICAgICAgICAgICAgICJyYXdCeXRlcyI6ICJNRmt3RXdZSEtvWkl6ajBDQVFZSUtvWkl6ajBEQVFjRFFnQUUxT2xiM3pNQUZGeFhLSGlJa1FPNWNKM1lobDVpNlVQcCtJaHV0ZUJKYnVIY0E1VW9nS28wRVd0bFd3VzZLU2FLb1RORVlMN0psQ1FpVm5raEJrdFVnZz09IiwKICAgICAgICAgICAgICAgICJrZXlEZXRhaWxzIjogIlBLSVhfRUNEU0FfUDI1Nl9TSEFfMjU2IiwKICAgICAgICAgICAgICAgICJ2YWxpZEZvciI6IHsKICAgICAgICAgICAgICAgICAgICAic3RhcnQiOiAiMjAyMi0xMi0wMVQwMDowMDowMC4wMDBaIiwKICAgICAgICAgICAgICAgICAgICAiZW5kIjogIjIwMjUtMDEtMjlUMDA6MDA6MDAuMDAwWiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICAia2V5SWQiOiAiU0hBMjU2OkRoUTh3UjVBUEJ2RkhMRi8rVGMrQVl2UE9kVHBjSURxT2h4c0JIUndDN1UiLAogICAgICAgICAgICAia2V5VXNhZ2UiOiAibnBtOnNpZ25hdHVyZXMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgImtleUlkIjogIlNIQTI1NjpEaFE4d1I1QVBCdkZITEYvK1RjK0FZdlBPZFRwY0lEcU9oeHNCSFJ3QzdVIiwKICAgICAgICAgICAgImtleVVzYWdlIjogIm5wbTphdHRlc3RhdGlvbnMiLAogICAgICAgICAgICAicHVibGljS2V5IjogewogICAgICAgICAgICAgICAgInJhd0J5dGVzIjogIk1Ga3dFd1lIS29aSXpqMENBUVlJS29aSXpqMERBUWNEUWdBRVk2WWE3VysrN2FVUHp2TVRyZXpINlljeDNjK0hPS1lDY05HeWJKWlNDSnEvZmQ3UWE4dXVBS3RkSWtVUXRRaUVLRVJoQW1FNWxNTUpoUDhPa0RPYTJnPT0iLAogICAgICAgICAgICAgICAgImtleURldGFpbHMiOiAiUEtJWF9FQ0RTQV9QMjU2X1NIQV8yNTYiLAogICAgICAgICAgICAgICAgInZhbGlkRm9yIjogewogICAgICAgICAgICAgICAgICAgICJzdGFydCI6ICIyMDI1LTAxLTEzVDAwOjAwOjAwLjAwMFoiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICBdCn0K\"}}}});var nxe=_(y1=>{\"use strict\";var rxe=y1&&y1.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(y1,\"__esModule\",{value:!0});y1.TUFClient=void 0;var Tg=rxe(Ie(\"fs\")),qb=rxe(Ie(\"path\")),Zvt=$Pe(),$vt=hL(),eSt=exe(),$J=\"targets\",ZJ=class{constructor(e){let r=new URL(e.mirrorURL),s=encodeURIComponent(r.host+r.pathname.replace(/\\/$/,\"\")),a=qb.default.join(e.cachePath,s);tSt(a),rSt({cachePath:a,mirrorURL:e.mirrorURL,tufRootPath:e.rootPath,forceInit:e.forceInit}),this.updater=nSt({mirrorURL:e.mirrorURL,cachePath:a,forceCache:e.forceCache,retry:e.retry,timeout:e.timeout})}async refresh(){return this.updater.refresh()}getTarget(e){return(0,eSt.readTarget)(this.updater,e)}};y1.TUFClient=ZJ;function tSt(t){let e=qb.default.join(t,$J);Tg.default.existsSync(t)||Tg.default.mkdirSync(t,{recursive:!0}),Tg.default.existsSync(e)||Tg.default.mkdirSync(e)}function rSt({cachePath:t,mirrorURL:e,tufRootPath:r,forceInit:s}){let a=qb.default.join(t,\"root.json\");if(!Tg.default.existsSync(a)||s)if(r)Tg.default.copyFileSync(r,a);else{let c=txe()[e];if(!c)throw new $vt.TUFError({code:\"TUF_INIT_CACHE_ERROR\",message:`No root.json found for mirror: ${e}`});Tg.default.writeFileSync(a,Buffer.from(c[\"root.json\"],\"base64\")),Object.entries(c.targets).forEach(([f,p])=>{Tg.default.writeFileSync(qb.default.join(t,$J,f),Buffer.from(p,\"base64\"))})}}function nSt(t){let e={fetchTimeout:t.timeout,fetchRetry:t.retry};return new Zvt.Updater({metadataBaseUrl:t.mirrorURL,targetBaseUrl:`${t.mirrorURL}/targets`,metadataDir:t.cachePath,targetDir:qb.default.join(t.cachePath,$J),forceCache:t.forceCache,config:e})}});var hL=_(gh=>{\"use strict\";Object.defineProperty(gh,\"__esModule\",{value:!0});gh.TUFError=gh.DEFAULT_MIRROR_URL=void 0;gh.getTrustedRoot=fSt;gh.initTUF=ASt;var iSt=yb(),sSt=Obe(),oSt=nxe();gh.DEFAULT_MIRROR_URL=\"https://tuf-repo-cdn.sigstore.dev\";var aSt=\"sigstore-js\",lSt={retries:2},cSt=5e3,uSt=\"trusted_root.json\";async function fSt(t={}){let r=await ixe(t).getTarget(uSt);return iSt.TrustedRoot.fromJSON(JSON.parse(r))}async function ASt(t={}){let e=ixe(t);return e.refresh().then(()=>e)}function ixe(t){return new oSt.TUFClient({cachePath:t.cachePath||(0,sSt.appDataPath)(aSt),rootPath:t.rootPath,mirrorURL:t.mirrorURL||gh.DEFAULT_MIRROR_URL,retry:t.retry??lSt,timeout:t.timeout??cSt,forceCache:t.forceCache??!1,forceInit:t.forceInit??t.force??!1})}var pSt=XJ();Object.defineProperty(gh,\"TUFError\",{enumerable:!0,get:function(){return pSt.TUFError}})});var sxe=_(gL=>{\"use strict\";Object.defineProperty(gL,\"__esModule\",{value:!0});gL.DSSESignatureContent=void 0;var Wb=Cl(),eK=class{constructor(e){this.env=e}compareDigest(e){return Wb.crypto.bufferEqual(e,Wb.crypto.digest(\"sha256\",this.env.payload))}compareSignature(e){return Wb.crypto.bufferEqual(e,this.signature)}verifySignature(e){return Wb.crypto.verify(this.preAuthEncoding,e,this.signature)}get signature(){return this.env.signatures.length>0?this.env.signatures[0].sig:Buffer.from(\"\")}get preAuthEncoding(){return Wb.dsse.preAuthEncoding(this.env.payloadType,this.env.payload)}};gL.DSSESignatureContent=eK});var oxe=_(dL=>{\"use strict\";Object.defineProperty(dL,\"__esModule\",{value:!0});dL.MessageSignatureContent=void 0;var tK=Cl(),rK=class{constructor(e,r){this.signature=e.signature,this.messageDigest=e.messageDigest.digest,this.artifact=r}compareSignature(e){return tK.crypto.bufferEqual(e,this.signature)}compareDigest(e){return tK.crypto.bufferEqual(e,this.messageDigest)}verifySignature(e){return tK.crypto.verify(this.artifact,e,this.signature)}};dL.MessageSignatureContent=rK});var lxe=_(mL=>{\"use strict\";Object.defineProperty(mL,\"__esModule\",{value:!0});mL.toSignedEntity=dSt;mL.signatureContent=axe;var nK=Cl(),hSt=sxe(),gSt=oxe();function dSt(t,e){let{tlogEntries:r,timestampVerificationData:s}=t.verificationMaterial,a=[];for(let n of r)a.push({$case:\"transparency-log\",tlogEntry:n});for(let n of s?.rfc3161Timestamps??[])a.push({$case:\"timestamp-authority\",timestamp:nK.RFC3161Timestamp.parse(n.signedTimestamp)});return{signature:axe(t,e),key:mSt(t),tlogEntries:r,timestamps:a}}function axe(t,e){switch(t.content.$case){case\"dsseEnvelope\":return new hSt.DSSESignatureContent(t.content.dsseEnvelope);case\"messageSignature\":return new gSt.MessageSignatureContent(t.content.messageSignature,e)}}function mSt(t){switch(t.verificationMaterial.content.$case){case\"publicKey\":return{$case:\"public-key\",hint:t.verificationMaterial.content.publicKey.hint};case\"x509CertificateChain\":return{$case:\"certificate\",certificate:nK.X509Certificate.parse(t.verificationMaterial.content.x509CertificateChain.certificates[0].rawBytes)};case\"certificate\":return{$case:\"certificate\",certificate:nK.X509Certificate.parse(t.verificationMaterial.content.certificate.rawBytes)}}}});var Eo=_(E1=>{\"use strict\";Object.defineProperty(E1,\"__esModule\",{value:!0});E1.PolicyError=E1.VerificationError=void 0;var yL=class extends Error{constructor({code:e,message:r,cause:s}){super(r),this.code=e,this.cause=s,this.name=this.constructor.name}},iK=class extends yL{};E1.VerificationError=iK;var sK=class extends yL{};E1.PolicyError=sK});var cxe=_(EL=>{\"use strict\";Object.defineProperty(EL,\"__esModule\",{value:!0});EL.filterCertAuthorities=ySt;EL.filterTLogAuthorities=ESt;function ySt(t,e){return t.filter(r=>r.validFor.start<=e.start&&r.validFor.end>=e.end)}function ESt(t,e){return t.filter(r=>e.logID&&!r.logID.equals(e.logID)?!1:r.validFor.start<=e.targetDate&&e.targetDate<=r.validFor.end)}});var py=_(Ay=>{\"use strict\";Object.defineProperty(Ay,\"__esModule\",{value:!0});Ay.filterTLogAuthorities=Ay.filterCertAuthorities=void 0;Ay.toTrustMaterial=CSt;var oK=Cl(),Yb=yb(),ISt=Eo(),aK=new Date(0),lK=new Date(864e13),Axe=cxe();Object.defineProperty(Ay,\"filterCertAuthorities\",{enumerable:!0,get:function(){return Axe.filterCertAuthorities}});Object.defineProperty(Ay,\"filterTLogAuthorities\",{enumerable:!0,get:function(){return Axe.filterTLogAuthorities}});function CSt(t,e){let r=typeof e==\"function\"?e:wSt(e);return{certificateAuthorities:t.certificateAuthorities.map(fxe),timestampAuthorities:t.timestampAuthorities.map(fxe),tlogs:t.tlogs.map(uxe),ctlogs:t.ctlogs.map(uxe),publicKey:r}}function uxe(t){let e=t.publicKey.keyDetails,r=e===Yb.PublicKeyDetails.PKCS1_RSA_PKCS1V5||e===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V5||e===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V15_2048_SHA256||e===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V15_3072_SHA256||e===Yb.PublicKeyDetails.PKIX_RSA_PKCS1V15_4096_SHA256?\"pkcs1\":\"spki\";return{logID:t.logId.keyId,publicKey:oK.crypto.createPublicKey(t.publicKey.rawBytes,r),validFor:{start:t.publicKey.validFor?.start||aK,end:t.publicKey.validFor?.end||lK}}}function fxe(t){return{certChain:t.certChain.certificates.map(e=>oK.X509Certificate.parse(e.rawBytes)),validFor:{start:t.validFor?.start||aK,end:t.validFor?.end||lK}}}function wSt(t){return e=>{let r=(t||{})[e];if(!r)throw new ISt.VerificationError({code:\"PUBLIC_KEY_ERROR\",message:`key not found: ${e}`});return{publicKey:oK.crypto.createPublicKey(r.rawBytes),validFor:s=>(r.validFor?.start||aK)<=s&&(r.validFor?.end||lK)>=s}}}});var cK=_(Vb=>{\"use strict\";Object.defineProperty(Vb,\"__esModule\",{value:!0});Vb.CertificateChainVerifier=void 0;Vb.verifyCertificateChain=vSt;var hy=Eo(),BSt=py();function vSt(t,e){let r=(0,BSt.filterCertAuthorities)(e,{start:t.notBefore,end:t.notAfter}),s;for(let a of r)try{return new IL({trustedCerts:a.certChain,untrustedCert:t}).verify()}catch(n){s=n}throw new hy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"Failed to verify certificate chain\",cause:s})}var IL=class{constructor(e){this.untrustedCert=e.untrustedCert,this.trustedCerts=e.trustedCerts,this.localCerts=SSt([...e.trustedCerts,e.untrustedCert])}verify(){let e=this.sort();return this.checkPath(e),e}sort(){let e=this.untrustedCert,r=this.buildPaths(e);if(r=r.filter(a=>a.some(n=>this.trustedCerts.includes(n))),r.length===0)throw new hy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"no trusted certificate path found\"});let s=r.reduce((a,n)=>a.length<n.length?a:n);return[e,...s].slice(0,-1)}buildPaths(e){let r=[],s=this.findIssuer(e);if(s.length===0)throw new hy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"no valid certificate path found\"});for(let a=0;a<s.length;a++){let n=s[a];if(n.equals(e)){r.push([e]);continue}let c=this.buildPaths(n);for(let f=0;f<c.length;f++)r.push([n,...c[f]])}return r}findIssuer(e){let r=[],s;return e.subject.equals(e.issuer)&&e.verify()?[e]:(e.extAuthorityKeyID&&(s=e.extAuthorityKeyID.keyIdentifier),this.localCerts.forEach(a=>{if(s&&a.extSubjectKeyID){a.extSubjectKeyID.keyIdentifier.equals(s)&&r.push(a);return}a.subject.equals(e.issuer)&&r.push(a)}),r=r.filter(a=>{try{return e.verify(a)}catch{return!1}}),r)}checkPath(e){if(e.length<1)throw new hy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"certificate chain must contain at least one certificate\"});if(!e.slice(1).every(s=>s.isCA))throw new hy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"intermediate certificate is not a CA\"});for(let s=e.length-2;s>=0;s--)if(!e[s].issuer.equals(e[s+1].subject))throw new hy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"incorrect certificate name chaining\"});for(let s=0;s<e.length;s++){let a=e[s];if(a.extBasicConstraints?.isCA){let n=a.extBasicConstraints.pathLenConstraint;if(n!==void 0&&n<s-1)throw new hy.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"path length constraint exceeded\"})}}}};Vb.CertificateChainVerifier=IL;function SSt(t){for(let e=0;e<t.length;e++)for(let r=e+1;r<t.length;r++)t[e].equals(t[r])&&(t.splice(r,1),r--);return t}});var pxe=_(uK=>{\"use strict\";Object.defineProperty(uK,\"__esModule\",{value:!0});uK.verifySCTs=PSt;var CL=Cl(),DSt=Eo(),bSt=py();function PSt(t,e,r){let s,a=t.clone();for(let p=0;p<a.extensions.length;p++){let h=a.extensions[p];if(h.subs[0].toOID()===CL.EXTENSION_OID_SCT){s=new CL.X509SCTExtension(h),a.extensions.splice(p,1);break}}if(!s)return[];if(s.signedCertificateTimestamps.length===0)return[];let n=new CL.ByteStream,c=CL.crypto.digest(\"sha256\",e.publicKey);n.appendView(c);let f=a.tbsCertificate.toDER();return n.appendUint24(f.length),n.appendView(f),s.signedCertificateTimestamps.map(p=>{if(!(0,bSt.filterTLogAuthorities)(r,{logID:p.logID,targetDate:p.datetime}).some(C=>p.verify(n.buffer,C.publicKey)))throw new DSt.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"SCT verification failed\"});return p.logID})}});var gxe=_(wL=>{\"use strict\";Object.defineProperty(wL,\"__esModule\",{value:!0});wL.verifyPublicKey=FSt;wL.verifyCertificate=NSt;var xSt=Cl(),hxe=Eo(),kSt=cK(),QSt=pxe(),TSt=\"1.3.6.1.4.1.57264.1.1\",RSt=\"1.3.6.1.4.1.57264.1.8\";function FSt(t,e,r){let s=r.publicKey(t);return e.forEach(a=>{if(!s.validFor(a))throw new hxe.VerificationError({code:\"PUBLIC_KEY_ERROR\",message:`Public key is not valid for timestamp: ${a.toISOString()}`})}),{key:s.publicKey}}function NSt(t,e,r){let s=(0,kSt.verifyCertificateChain)(t,r.certificateAuthorities);if(!e.every(n=>s.every(c=>c.validForDate(n))))throw new hxe.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"certificate is not valid or expired at the specified date\"});return{scts:(0,QSt.verifySCTs)(s[0],s[1],r.ctlogs),signer:OSt(s[0])}}function OSt(t){let e,r=t.extension(RSt);r?e=r.valueObj.subs?.[0]?.value.toString(\"ascii\"):e=t.extension(TSt)?.value.toString(\"ascii\");let s={extensions:{issuer:e},subjectAlternativeName:t.subjectAltName};return{key:xSt.crypto.createPublicKey(t.publicKey),identity:s}}});var mxe=_(BL=>{\"use strict\";Object.defineProperty(BL,\"__esModule\",{value:!0});BL.verifySubjectAlternativeName=LSt;BL.verifyExtensions=MSt;var dxe=Eo();function LSt(t,e){if(e===void 0||!e.match(t))throw new dxe.PolicyError({code:\"UNTRUSTED_SIGNER_ERROR\",message:`certificate identity error - expected ${t}, got ${e}`})}function MSt(t,e={}){let r;for(r in t)if(e[r]!==t[r])throw new dxe.PolicyError({code:\"UNTRUSTED_SIGNER_ERROR\",message:`invalid certificate extension - expected ${r}=${t[r]}, got ${r}=${e[r]}`})}});var yxe=_(gK=>{\"use strict\";Object.defineProperty(gK,\"__esModule\",{value:!0});gK.verifyCheckpoint=HSt;var AK=Cl(),I1=Eo(),USt=py(),fK=`\n\n`,_St=/\\u2014 (\\S+) (\\S+)\\n/g;function HSt(t,e){let r=(0,USt.filterTLogAuthorities)(e,{targetDate:new Date(Number(t.integratedTime)*1e3)}),s=t.inclusionProof,a=pK.fromString(s.checkpoint.envelope),n=hK.fromString(a.note);if(!jSt(a,r))throw new I1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"invalid checkpoint signature\"});if(!AK.crypto.bufferEqual(n.logHash,s.rootHash))throw new I1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"root hash mismatch\"})}function jSt(t,e){let r=Buffer.from(t.note,\"utf-8\");return t.signatures.every(s=>{let a=e.find(n=>AK.crypto.bufferEqual(n.logID.subarray(0,4),s.keyHint));return a?AK.crypto.verify(r,a.publicKey,s.signature):!1})}var pK=class t{constructor(e,r){this.note=e,this.signatures=r}static fromString(e){if(!e.includes(fK))throw new I1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"missing checkpoint separator\"});let r=e.indexOf(fK),s=e.slice(0,r+1),n=e.slice(r+fK.length).matchAll(_St),c=Array.from(n,f=>{let[,p,h]=f,E=Buffer.from(h,\"base64\");if(E.length<5)throw new I1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"malformed checkpoint signature\"});return{name:p,keyHint:E.subarray(0,4),signature:E.subarray(4)}});if(c.length===0)throw new I1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"no signatures found in checkpoint\"});return new t(s,c)}},hK=class t{constructor(e,r,s,a){this.origin=e,this.logSize=r,this.logHash=s,this.rest=a}static fromString(e){let r=e.trimEnd().split(`\n`);if(r.length<3)throw new I1.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"too few lines in checkpoint header\"});let s=r[0],a=BigInt(r[1]),n=Buffer.from(r[2],\"base64\"),c=r.slice(3);return new t(s,a,n,c)}}});var Exe=_(EK=>{\"use strict\";Object.defineProperty(EK,\"__esModule\",{value:!0});EK.verifyMerkleInclusion=WSt;var yK=Cl(),dK=Eo(),GSt=Buffer.from([0]),qSt=Buffer.from([1]);function WSt(t){let e=t.inclusionProof,r=BigInt(e.logIndex),s=BigInt(e.treeSize);if(r<0n||r>=s)throw new dK.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:`invalid index: ${r}`});let{inner:a,border:n}=YSt(r,s);if(e.hashes.length!==a+n)throw new dK.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"invalid hash count\"});let c=e.hashes.slice(0,a),f=e.hashes.slice(a),p=ZSt(t.canonicalizedBody),h=JSt(VSt(p,c,r),f);if(!yK.crypto.bufferEqual(h,e.rootHash))throw new dK.VerificationError({code:\"TLOG_INCLUSION_PROOF_ERROR\",message:\"calculated root hash does not match inclusion proof\"})}function YSt(t,e){let r=KSt(t,e),s=zSt(t>>BigInt(r));return{inner:r,border:s}}function VSt(t,e,r){return e.reduce((s,a,n)=>r>>BigInt(n)&BigInt(1)?mK(a,s):mK(s,a),t)}function JSt(t,e){return e.reduce((r,s)=>mK(s,r),t)}function KSt(t,e){return XSt(t^e-BigInt(1))}function zSt(t){return t.toString(2).split(\"1\").length-1}function XSt(t){return t===0n?0:t.toString(2).length}function mK(t,e){return yK.crypto.digest(\"sha256\",qSt,t,e)}function ZSt(t){return yK.crypto.digest(\"sha256\",GSt,t)}});var Cxe=_(IK=>{\"use strict\";Object.defineProperty(IK,\"__esModule\",{value:!0});IK.verifyTLogSET=tDt;var Ixe=Cl(),$St=Eo(),eDt=py();function tDt(t,e){if(!(0,eDt.filterTLogAuthorities)(e,{logID:t.logId.keyId,targetDate:new Date(Number(t.integratedTime)*1e3)}).some(a=>{let n=rDt(t),c=Buffer.from(Ixe.json.canonicalize(n),\"utf8\"),f=t.inclusionPromise.signedEntryTimestamp;return Ixe.crypto.verify(c,a.publicKey,f)}))throw new $St.VerificationError({code:\"TLOG_INCLUSION_PROMISE_ERROR\",message:\"inclusion promise could not be verified\"})}function rDt(t){let{integratedTime:e,logIndex:r,logId:s,canonicalizedBody:a}=t;return{body:a.toString(\"base64\"),integratedTime:Number(e),logIndex:Number(r),logID:s.keyId.toString(\"hex\")}}});var wxe=_(BK=>{\"use strict\";Object.defineProperty(BK,\"__esModule\",{value:!0});BK.verifyRFC3161Timestamp=sDt;var CK=Cl(),wK=Eo(),nDt=cK(),iDt=py();function sDt(t,e,r){let s=t.signingTime;if(r=(0,iDt.filterCertAuthorities)(r,{start:s,end:s}),r=aDt(r,{serialNumber:t.signerSerialNumber,issuer:t.signerIssuer}),!r.some(n=>{try{return oDt(t,e,n),!0}catch{return!1}}))throw new wK.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"timestamp could not be verified\"})}function oDt(t,e,r){let[s,...a]=r.certChain,n=CK.crypto.createPublicKey(s.publicKey),c=t.signingTime;try{new nDt.CertificateChainVerifier({untrustedCert:s,trustedCerts:a}).verify()}catch{throw new wK.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"invalid certificate chain\"})}if(!r.certChain.every(p=>p.validForDate(c)))throw new wK.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"timestamp was signed with an expired certificate\"});t.verify(e,n)}function aDt(t,e){return t.filter(r=>r.certChain.length>0&&CK.crypto.bufferEqual(r.certChain[0].serialNumber,e.serialNumber)&&CK.crypto.bufferEqual(r.certChain[0].issuer,e.issuer))}});var Bxe=_(vL=>{\"use strict\";Object.defineProperty(vL,\"__esModule\",{value:!0});vL.verifyTSATimestamp=pDt;vL.verifyTLogTimestamp=hDt;var lDt=Eo(),cDt=yxe(),uDt=Exe(),fDt=Cxe(),ADt=wxe();function pDt(t,e,r){return(0,ADt.verifyRFC3161Timestamp)(t,e,r),{type:\"timestamp-authority\",logID:t.signerSerialNumber,timestamp:t.signingTime}}function hDt(t,e){let r=!1;if(gDt(t)&&((0,fDt.verifyTLogSET)(t,e),r=!0),dDt(t)&&((0,uDt.verifyMerkleInclusion)(t),(0,cDt.verifyCheckpoint)(t,e),r=!0),!r)throw new lDt.VerificationError({code:\"TLOG_MISSING_INCLUSION_ERROR\",message:\"inclusion could not be verified\"});return{type:\"transparency-log\",logID:t.logId.keyId,timestamp:new Date(Number(t.integratedTime)*1e3)}}function gDt(t){return t.inclusionPromise!==void 0}function dDt(t){return t.inclusionProof!==void 0}});var vxe=_(vK=>{\"use strict\";Object.defineProperty(vK,\"__esModule\",{value:!0});vK.verifyDSSETLogBody=mDt;var SL=Eo();function mDt(t,e){switch(t.apiVersion){case\"0.0.1\":return yDt(t,e);default:throw new SL.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported dsse version: ${t.apiVersion}`})}}function yDt(t,e){if(t.spec.signatures?.length!==1)throw new SL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"signature count mismatch\"});let r=t.spec.signatures[0].signature;if(!e.compareSignature(Buffer.from(r,\"base64\")))throw new SL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"tlog entry signature mismatch\"});let s=t.spec.payloadHash?.value||\"\";if(!e.compareDigest(Buffer.from(s,\"hex\")))throw new SL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"DSSE payload hash mismatch\"})}});var Sxe=_(DK=>{\"use strict\";Object.defineProperty(DK,\"__esModule\",{value:!0});DK.verifyHashedRekordTLogBody=EDt;var SK=Eo();function EDt(t,e){switch(t.apiVersion){case\"0.0.1\":return IDt(t,e);default:throw new SK.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported hashedrekord version: ${t.apiVersion}`})}}function IDt(t,e){let r=t.spec.signature.content||\"\";if(!e.compareSignature(Buffer.from(r,\"base64\")))throw new SK.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"signature mismatch\"});let s=t.spec.data.hash?.value||\"\";if(!e.compareDigest(Buffer.from(s,\"hex\")))throw new SK.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"digest mismatch\"})}});var Dxe=_(bK=>{\"use strict\";Object.defineProperty(bK,\"__esModule\",{value:!0});bK.verifyIntotoTLogBody=CDt;var DL=Eo();function CDt(t,e){switch(t.apiVersion){case\"0.0.2\":return wDt(t,e);default:throw new DL.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported intoto version: ${t.apiVersion}`})}}function wDt(t,e){if(t.spec.content.envelope.signatures?.length!==1)throw new DL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"signature count mismatch\"});let r=BDt(t.spec.content.envelope.signatures[0].sig);if(!e.compareSignature(Buffer.from(r,\"base64\")))throw new DL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"tlog entry signature mismatch\"});let s=t.spec.content.payloadHash?.value||\"\";if(!e.compareDigest(Buffer.from(s,\"hex\")))throw new DL.VerificationError({code:\"TLOG_BODY_ERROR\",message:\"DSSE payload hash mismatch\"})}function BDt(t){return Buffer.from(t,\"base64\").toString(\"utf-8\")}});var Pxe=_(PK=>{\"use strict\";Object.defineProperty(PK,\"__esModule\",{value:!0});PK.verifyTLogBody=bDt;var bxe=Eo(),vDt=vxe(),SDt=Sxe(),DDt=Dxe();function bDt(t,e){let{kind:r,version:s}=t.kindVersion,a=JSON.parse(t.canonicalizedBody.toString(\"utf8\"));if(r!==a.kind||s!==a.apiVersion)throw new bxe.VerificationError({code:\"TLOG_BODY_ERROR\",message:`kind/version mismatch - expected: ${r}/${s}, received: ${a.kind}/${a.apiVersion}`});switch(a.kind){case\"dsse\":return(0,vDt.verifyDSSETLogBody)(a,e);case\"intoto\":return(0,DDt.verifyIntotoTLogBody)(a,e);case\"hashedrekord\":return(0,SDt.verifyHashedRekordTLogBody)(a,e);default:throw new bxe.VerificationError({code:\"TLOG_BODY_ERROR\",message:`unsupported kind: ${r}`})}}});var Rxe=_(bL=>{\"use strict\";Object.defineProperty(bL,\"__esModule\",{value:!0});bL.Verifier=void 0;var PDt=Ie(\"util\"),C1=Eo(),xxe=gxe(),kxe=mxe(),Qxe=Bxe(),xDt=Pxe(),xK=class{constructor(e,r={}){this.trustMaterial=e,this.options={ctlogThreshold:r.ctlogThreshold??1,tlogThreshold:r.tlogThreshold??1,tsaThreshold:r.tsaThreshold??0}}verify(e,r){let s=this.verifyTimestamps(e),a=this.verifySigningKey(e,s);return this.verifyTLogs(e),this.verifySignature(e,a),r&&this.verifyPolicy(r,a.identity||{}),a}verifyTimestamps(e){let r=0,s=0,a=e.timestamps.map(n=>{switch(n.$case){case\"timestamp-authority\":return s++,(0,Qxe.verifyTSATimestamp)(n.timestamp,e.signature.signature,this.trustMaterial.timestampAuthorities);case\"transparency-log\":return r++,(0,Qxe.verifyTLogTimestamp)(n.tlogEntry,this.trustMaterial.tlogs)}});if(Txe(a))throw new C1.VerificationError({code:\"TIMESTAMP_ERROR\",message:\"duplicate timestamp\"});if(r<this.options.tlogThreshold)throw new C1.VerificationError({code:\"TIMESTAMP_ERROR\",message:`expected ${this.options.tlogThreshold} tlog timestamps, got ${r}`});if(s<this.options.tsaThreshold)throw new C1.VerificationError({code:\"TIMESTAMP_ERROR\",message:`expected ${this.options.tsaThreshold} tsa timestamps, got ${s}`});return a.map(n=>n.timestamp)}verifySigningKey({key:e},r){switch(e.$case){case\"public-key\":return(0,xxe.verifyPublicKey)(e.hint,r,this.trustMaterial);case\"certificate\":{let s=(0,xxe.verifyCertificate)(e.certificate,r,this.trustMaterial);if(Txe(s.scts))throw new C1.VerificationError({code:\"CERTIFICATE_ERROR\",message:\"duplicate SCT\"});if(s.scts.length<this.options.ctlogThreshold)throw new C1.VerificationError({code:\"CERTIFICATE_ERROR\",message:`expected ${this.options.ctlogThreshold} SCTs, got ${s.scts.length}`});return s.signer}}}verifyTLogs({signature:e,tlogEntries:r}){r.forEach(s=>(0,xDt.verifyTLogBody)(s,e))}verifySignature(e,r){if(!e.signature.verifySignature(r.key))throw new C1.VerificationError({code:\"SIGNATURE_ERROR\",message:\"signature verification failed\"})}verifyPolicy(e,r){e.subjectAlternativeName&&(0,kxe.verifySubjectAlternativeName)(e.subjectAlternativeName,r.subjectAlternativeName),e.extensions&&(0,kxe.verifyExtensions)(e.extensions,r.extensions)}};bL.Verifier=xK;function Txe(t){for(let e=0;e<t.length;e++)for(let r=e+1;r<t.length;r++)if((0,PDt.isDeepStrictEqual)(t[e],t[r]))return!0;return!1}});var PL=_(iu=>{\"use strict\";Object.defineProperty(iu,\"__esModule\",{value:!0});iu.Verifier=iu.toTrustMaterial=iu.VerificationError=iu.PolicyError=iu.toSignedEntity=void 0;var kDt=lxe();Object.defineProperty(iu,\"toSignedEntity\",{enumerable:!0,get:function(){return kDt.toSignedEntity}});var Fxe=Eo();Object.defineProperty(iu,\"PolicyError\",{enumerable:!0,get:function(){return Fxe.PolicyError}});Object.defineProperty(iu,\"VerificationError\",{enumerable:!0,get:function(){return Fxe.VerificationError}});var QDt=py();Object.defineProperty(iu,\"toTrustMaterial\",{enumerable:!0,get:function(){return QDt.toTrustMaterial}});var TDt=Rxe();Object.defineProperty(iu,\"Verifier\",{enumerable:!0,get:function(){return TDt.Verifier}})});var Nxe=_(Fa=>{\"use strict\";Object.defineProperty(Fa,\"__esModule\",{value:!0});Fa.DEFAULT_TIMEOUT=Fa.DEFAULT_RETRY=void 0;Fa.createBundleBuilder=NDt;Fa.createKeyFinder=ODt;Fa.createVerificationPolicy=LDt;var RDt=Cl(),w1=H7(),FDt=PL();Fa.DEFAULT_RETRY={retries:2};Fa.DEFAULT_TIMEOUT=5e3;function NDt(t,e){let r={signer:MDt(e),witnesses:_Dt(e)};switch(t){case\"messageSignature\":return new w1.MessageSignatureBundleBuilder(r);case\"dsseEnvelope\":return new w1.DSSEBundleBuilder({...r,certificateChain:e.legacyCompatibility})}}function ODt(t){return e=>{let r=t(e);if(!r)throw new FDt.VerificationError({code:\"PUBLIC_KEY_ERROR\",message:`key not found: ${e}`});return{publicKey:RDt.crypto.createPublicKey(r),validFor:()=>!0}}}function LDt(t){let e={},r=t.certificateIdentityEmail||t.certificateIdentityURI;return r&&(e.subjectAlternativeName=r),t.certificateIssuer&&(e.extensions={issuer:t.certificateIssuer}),e}function MDt(t){return new w1.FulcioSigner({fulcioBaseURL:t.fulcioURL,identityProvider:t.identityProvider||UDt(t),retry:t.retry??Fa.DEFAULT_RETRY,timeout:t.timeout??Fa.DEFAULT_TIMEOUT})}function UDt(t){let e=t.identityToken;return e?{getToken:()=>Promise.resolve(e)}:new w1.CIContextProvider(\"sigstore\")}function _Dt(t){let e=[];return HDt(t)&&e.push(new w1.RekorWitness({rekorBaseURL:t.rekorURL,entryType:t.legacyCompatibility?\"intoto\":\"dsse\",fetchOnConflict:!1,retry:t.retry??Fa.DEFAULT_RETRY,timeout:t.timeout??Fa.DEFAULT_TIMEOUT})),jDt(t)&&e.push(new w1.TSAWitness({tsaBaseURL:t.tsaServerURL,retry:t.retry??Fa.DEFAULT_RETRY,timeout:t.timeout??Fa.DEFAULT_TIMEOUT})),e}function HDt(t){return t.tlogUpload!==!1}function jDt(t){return t.tsaServerURL!==void 0}});var Mxe=_(su=>{\"use strict\";var GDt=su&&su.__createBinding||(Object.create?function(t,e,r,s){s===void 0&&(s=r);var a=Object.getOwnPropertyDescriptor(e,r);(!a||(\"get\"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,s,a)}:function(t,e,r,s){s===void 0&&(s=r),t[s]=e[r]}),qDt=su&&su.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,\"default\",{enumerable:!0,value:e})}:function(t,e){t.default=e}),Oxe=su&&su.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(r){var s=[];for(var a in r)Object.prototype.hasOwnProperty.call(r,a)&&(s[s.length]=a);return s},t(e)};return function(e){if(e&&e.__esModule)return e;var r={};if(e!=null)for(var s=t(e),a=0;a<s.length;a++)s[a]!==\"default\"&&GDt(r,e,s[a]);return qDt(r,e),r}}();Object.defineProperty(su,\"__esModule\",{value:!0});su.sign=YDt;su.attest=VDt;su.verify=JDt;su.createVerifier=Lxe;var QK=Ib(),WDt=Oxe(hL()),kK=PL(),B1=Oxe(Nxe());async function YDt(t,e={}){let s=await B1.createBundleBuilder(\"messageSignature\",e).create({data:t});return(0,QK.bundleToJSON)(s)}async function VDt(t,e,r={}){let a=await B1.createBundleBuilder(\"dsseEnvelope\",r).create({data:t,type:e});return(0,QK.bundleToJSON)(a)}async function JDt(t,e,r){let s;return Buffer.isBuffer(e)?s=e:r=e,Lxe(r).then(a=>a.verify(t,s))}async function Lxe(t={}){let e=await WDt.getTrustedRoot({mirrorURL:t.tufMirrorURL,rootPath:t.tufRootPath,cachePath:t.tufCachePath,forceCache:t.tufForceCache,retry:t.retry??B1.DEFAULT_RETRY,timeout:t.timeout??B1.DEFAULT_TIMEOUT}),r=t.keySelector?B1.createKeyFinder(t.keySelector):void 0,s=(0,kK.toTrustMaterial)(e,r),a={ctlogThreshold:t.ctLogThreshold,tlogThreshold:t.tlogThreshold},n=new kK.Verifier(s,a),c=B1.createVerificationPolicy(t);return{verify:(f,p)=>{let h=(0,QK.bundleFromJSON)(f),E=(0,kK.toSignedEntity)(h,p);n.verify(E,c)}}}});var _xe=_(Ni=>{\"use strict\";Object.defineProperty(Ni,\"__esModule\",{value:!0});Ni.verify=Ni.sign=Ni.createVerifier=Ni.attest=Ni.VerificationError=Ni.PolicyError=Ni.TUFError=Ni.InternalError=Ni.DEFAULT_REKOR_URL=Ni.DEFAULT_FULCIO_URL=Ni.ValidationError=void 0;var KDt=Ib();Object.defineProperty(Ni,\"ValidationError\",{enumerable:!0,get:function(){return KDt.ValidationError}});var TK=H7();Object.defineProperty(Ni,\"DEFAULT_FULCIO_URL\",{enumerable:!0,get:function(){return TK.DEFAULT_FULCIO_URL}});Object.defineProperty(Ni,\"DEFAULT_REKOR_URL\",{enumerable:!0,get:function(){return TK.DEFAULT_REKOR_URL}});Object.defineProperty(Ni,\"InternalError\",{enumerable:!0,get:function(){return TK.InternalError}});var zDt=hL();Object.defineProperty(Ni,\"TUFError\",{enumerable:!0,get:function(){return zDt.TUFError}});var Uxe=PL();Object.defineProperty(Ni,\"PolicyError\",{enumerable:!0,get:function(){return Uxe.PolicyError}});Object.defineProperty(Ni,\"VerificationError\",{enumerable:!0,get:function(){return Uxe.VerificationError}});var xL=Mxe();Object.defineProperty(Ni,\"attest\",{enumerable:!0,get:function(){return xL.attest}});Object.defineProperty(Ni,\"createVerifier\",{enumerable:!0,get:function(){return xL.createVerifier}});Object.defineProperty(Ni,\"sign\",{enumerable:!0,get:function(){return xL.sign}});Object.defineProperty(Ni,\"verify\",{enumerable:!0,get:function(){return xL.verify}})});Dt();Ge();Dt();var dke=Ie(\"child_process\"),mke=ut(Fd());Yt();var $I=new Map([]);var Gv={};Vt(Gv,{BaseCommand:()=>ft,WorkspaceRequiredError:()=>ar,getCli:()=>bde,getDynamicLibs:()=>Dde,getPluginConfiguration:()=>tC,openWorkspace:()=>eC,pluginCommands:()=>$I,runExit:()=>VR});Yt();var ft=class extends ot{constructor(){super(...arguments);this.cwd=ge.String(\"--cwd\",{hidden:!0})}validateAndExecute(){if(typeof this.cwd<\"u\")throw new nt(\"The --cwd option is ambiguous when used anywhere else than the very first parameter provided in the command line, before even the command path\");return super.validateAndExecute()}};Ge();Dt();Yt();var ar=class extends nt{constructor(e,r){let s=J.relative(e,r),a=J.join(e,Ut.fileName);super(`This command can only be run from within a workspace of your project (${s} isn't a workspace of ${a}).`)}};Ge();Dt();eA();wc();pv();Yt();var yat=ut(Ai());Ul();var Dde=()=>new Map([[\"@yarnpkg/cli\",Gv],[\"@yarnpkg/core\",jv],[\"@yarnpkg/fslib\",_2],[\"@yarnpkg/libzip\",fv],[\"@yarnpkg/parsers\",J2],[\"@yarnpkg/shell\",mv],[\"clipanion\",oB],[\"semver\",yat],[\"typanion\",Ea]]);Ge();async function eC(t,e){let{project:r,workspace:s}=await Tt.find(t,e);if(!s)throw new ar(r.cwd,e);return s}Ge();Dt();eA();wc();pv();Yt();var IPt=ut(Ai());Ul();var hq={};Vt(hq,{AddCommand:()=>sC,BinCommand:()=>oC,CacheCleanCommand:()=>aC,ClipanionCommand:()=>pC,ConfigCommand:()=>fC,ConfigGetCommand:()=>lC,ConfigSetCommand:()=>cC,ConfigUnsetCommand:()=>uC,DedupeCommand:()=>AC,EntryCommand:()=>gC,ExecCommand:()=>mC,ExplainCommand:()=>IC,ExplainPeerRequirementsCommand:()=>yC,HelpCommand:()=>hC,InfoCommand:()=>CC,LinkCommand:()=>BC,NodeCommand:()=>vC,PluginCheckCommand:()=>SC,PluginImportCommand:()=>PC,PluginImportSourcesCommand:()=>xC,PluginListCommand:()=>DC,PluginRemoveCommand:()=>kC,PluginRuntimeCommand:()=>QC,RebuildCommand:()=>TC,RemoveCommand:()=>RC,RunCommand:()=>NC,RunIndexCommand:()=>FC,SetResolutionCommand:()=>OC,SetVersionCommand:()=>EC,SetVersionSourcesCommand:()=>bC,UnlinkCommand:()=>LC,UpCommand:()=>MC,VersionCommand:()=>dC,WhyCommand:()=>UC,WorkspaceCommand:()=>qC,WorkspacesListCommand:()=>GC,YarnCommand:()=>wC,dedupeUtils:()=>rF,default:()=>Tct,suggestUtils:()=>Xu});var zye=ut(Fd());Ge();Ge();Ge();Yt();var hye=ut(Vv());Ul();var Xu={};Vt(Xu,{Modifier:()=>W5,Strategy:()=>eF,Target:()=>Jv,WorkspaceModifier:()=>cye,applyModifier:()=>Mlt,extractDescriptorFromPath:()=>Y5,extractRangeModifier:()=>uye,fetchDescriptorFrom:()=>V5,findProjectDescriptors:()=>pye,getModifier:()=>Kv,getSuggestedDescriptors:()=>zv,makeWorkspaceDescriptor:()=>Aye,toWorkspaceModifier:()=>fye});Ge();Ge();Dt();var q5=ut(Ai()),Olt=\"workspace:\",Jv=(s=>(s.REGULAR=\"dependencies\",s.DEVELOPMENT=\"devDependencies\",s.PEER=\"peerDependencies\",s))(Jv||{}),W5=(s=>(s.CARET=\"^\",s.TILDE=\"~\",s.EXACT=\"\",s))(W5||{}),cye=(s=>(s.CARET=\"^\",s.TILDE=\"~\",s.EXACT=\"*\",s))(cye||{}),eF=(n=>(n.KEEP=\"keep\",n.REUSE=\"reuse\",n.PROJECT=\"project\",n.LATEST=\"latest\",n.CACHE=\"cache\",n))(eF||{});function Kv(t,e){return t.exact?\"\":t.caret?\"^\":t.tilde?\"~\":e.configuration.get(\"defaultSemverRangePrefix\")}var Llt=/^([\\^~]?)[0-9]+(?:\\.[0-9]+){0,2}(?:-\\S+)?$/;function uye(t,{project:e}){let r=t.match(Llt);return r?r[1]:e.configuration.get(\"defaultSemverRangePrefix\")}function Mlt(t,e){let{protocol:r,source:s,params:a,selector:n}=G.parseRange(t.range);return q5.default.valid(n)&&(n=`${e}${t.range}`),G.makeDescriptor(t,G.makeRange({protocol:r,source:s,params:a,selector:n}))}function fye(t){switch(t){case\"^\":return\"^\";case\"~\":return\"~\";case\"\":return\"*\";default:throw new Error(`Assertion failed: Unknown modifier: \"${t}\"`)}}function Aye(t,e){return G.makeDescriptor(t.anchoredDescriptor,`${Olt}${fye(e)}`)}async function pye(t,{project:e,target:r}){let s=new Map,a=n=>{let c=s.get(n.descriptorHash);return c||s.set(n.descriptorHash,c={descriptor:n,locators:[]}),c};for(let n of e.workspaces)if(r===\"peerDependencies\"){let c=n.manifest.peerDependencies.get(t.identHash);c!==void 0&&a(c).locators.push(n.anchoredLocator)}else{let c=n.manifest.dependencies.get(t.identHash),f=n.manifest.devDependencies.get(t.identHash);r===\"devDependencies\"?f!==void 0?a(f).locators.push(n.anchoredLocator):c!==void 0&&a(c).locators.push(n.anchoredLocator):c!==void 0?a(c).locators.push(n.anchoredLocator):f!==void 0&&a(f).locators.push(n.anchoredLocator)}return s}async function Y5(t,{cwd:e,workspace:r}){return await _lt(async s=>{J.isAbsolute(t)||(t=J.relative(r.cwd,J.resolve(e,t)),t.match(/^\\.{0,2}\\//)||(t=`./${t}`));let{project:a}=r,n=await V5(G.makeIdent(null,\"archive\"),t,{project:r.project,cache:s,workspace:r});if(!n)throw new Error(\"Assertion failed: The descriptor should have been found\");let c=new ki,f=a.configuration.makeResolver(),p=a.configuration.makeFetcher(),h={checksums:a.storedChecksums,project:a,cache:s,fetcher:p,report:c,resolver:f},E=f.bindDescriptor(n,r.anchoredLocator,h),C=G.convertDescriptorToLocator(E),S=await p.fetch(C,h),P=await Ut.find(S.prefixPath,{baseFs:S.packageFs});if(!P.name)throw new Error(\"Target path doesn't have a name\");return G.makeDescriptor(P.name,t)})}function Ult(t){if(t.range===\"unknown\")return{type:\"resolve\",range:\"latest\"};if(Fr.validRange(t.range))return{type:\"fixed\",range:t.range};if(Mp.test(t.range))return{type:\"resolve\",range:t.range};let e=t.range.match(/^(?:jsr:|npm:)(.*)/);if(!e)return{type:\"fixed\",range:t.range};let[,r]=e,s=`${G.stringifyIdent(t)}@`;return r.startsWith(s)&&(r=r.slice(s.length)),Fr.validRange(r)?{type:\"fixed\",range:t.range}:Mp.test(r)?{type:\"resolve\",range:t.range}:{type:\"fixed\",range:t.range}}async function zv(t,{project:e,workspace:r,cache:s,target:a,fixed:n,modifier:c,strategies:f,maxResults:p=1/0}){if(!(p>=0))throw new Error(`Invalid maxResults (${p})`);let h=!n||t.range===\"unknown\"?Ult(t):{type:\"fixed\",range:t.range};if(h.type===\"fixed\")return{suggestions:[{descriptor:t,name:`Use ${G.prettyDescriptor(e.configuration,t)}`,reason:\"(unambiguous explicit request)\"}],rejections:[]};let E=typeof r<\"u\"&&r!==null&&r.manifest[a].get(t.identHash)||null,C=[],S=[],P=async I=>{try{await I()}catch(R){S.push(R)}};for(let I of f){if(C.length>=p)break;switch(I){case\"keep\":await P(async()=>{E&&C.push({descriptor:E,name:`Keep ${G.prettyDescriptor(e.configuration,E)}`,reason:\"(no changes)\"})});break;case\"reuse\":await P(async()=>{for(let{descriptor:R,locators:N}of(await pye(t,{project:e,target:a})).values()){if(N.length===1&&N[0].locatorHash===r.anchoredLocator.locatorHash&&f.includes(\"keep\"))continue;let U=`(originally used by ${G.prettyLocator(e.configuration,N[0])}`;U+=N.length>1?` and ${N.length-1} other${N.length>2?\"s\":\"\"})`:\")\",C.push({descriptor:R,name:`Reuse ${G.prettyDescriptor(e.configuration,R)}`,reason:U})}});break;case\"cache\":await P(async()=>{for(let R of e.storedDescriptors.values())R.identHash===t.identHash&&C.push({descriptor:R,name:`Reuse ${G.prettyDescriptor(e.configuration,R)}`,reason:\"(already used somewhere in the lockfile)\"})});break;case\"project\":await P(async()=>{if(r.manifest.name!==null&&t.identHash===r.manifest.name.identHash)return;let R=e.tryWorkspaceByIdent(t);if(R===null)return;let N=Aye(R,c);C.push({descriptor:N,name:`Attach ${G.prettyDescriptor(e.configuration,N)}`,reason:`(local workspace at ${he.pretty(e.configuration,R.relativeCwd,he.Type.PATH)})`})});break;case\"latest\":{let R=e.configuration.get(\"enableNetwork\"),N=e.configuration.get(\"enableOfflineMode\");await P(async()=>{if(a===\"peerDependencies\")C.push({descriptor:G.makeDescriptor(t,\"*\"),name:\"Use *\",reason:\"(catch-all peer dependency pattern)\"});else if(!R&&!N)C.push({descriptor:null,name:\"Resolve from latest\",reason:he.pretty(e.configuration,\"(unavailable because enableNetwork is toggled off)\",\"grey\")});else{let U=await V5(t,h.range,{project:e,cache:s,workspace:r,modifier:c});U&&C.push({descriptor:U,name:`Use ${G.prettyDescriptor(e.configuration,U)}`,reason:`(resolved from ${N?\"the cache\":\"latest\"})`})}})}break}}return{suggestions:C.slice(0,p),rejections:S.slice(0,p)}}async function V5(t,e,{project:r,cache:s,workspace:a,preserveModifier:n=!0,modifier:c}){let f=r.configuration.normalizeDependency(G.makeDescriptor(t,e)),p=new ki,h=r.configuration.makeFetcher(),E=r.configuration.makeResolver(),C={project:r,fetcher:h,cache:s,checksums:r.storedChecksums,report:p,cacheOptions:{skipIntegrityCheck:!0}},S={...C,resolver:E,fetchOptions:C},P=E.bindDescriptor(f,a.anchoredLocator,S),I=await E.getCandidates(P,{},S);if(I.length===0)return null;let R=I[0],{protocol:N,source:U,params:W,selector:ee}=G.parseRange(G.convertToManifestRange(R.reference));if(N===r.configuration.get(\"defaultProtocol\")&&(N=null),q5.default.valid(ee)){let ie=ee;if(typeof c<\"u\")ee=c+ee;else if(n!==!1){let me=typeof n==\"string\"?n:f.range;ee=uye(me,{project:r})+ee}let ue=G.makeDescriptor(R,G.makeRange({protocol:N,source:U,params:W,selector:ee}));(await E.getCandidates(r.configuration.normalizeDependency(ue),{},S)).length!==1&&(ee=ie)}return G.makeDescriptor(R,G.makeRange({protocol:N,source:U,params:W,selector:ee}))}async function _lt(t){return await ce.mktempPromise(async e=>{let r=ze.create(e);return r.useWithSource(e,{enableMirror:!1,compressionLevel:0},e,{overwrite:!0}),await t(new Kr(e,{configuration:r,check:!1,immutable:!1}))})}var sC=class extends ft{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:fo($l)});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.packages=ge.Rest()}static{this.paths=[[\"add\"]]}static{this.usage=ot.Usage({description:\"add dependencies to the project\",details:\"\\n      This command adds a package to the package.json for the nearest workspace.\\n\\n      - If it didn't exist before, the package will by default be added to the regular `dependencies` field, but this behavior can be overriden thanks to the `-D,--dev` flag (which will cause the dependency to be added to the `devDependencies` field instead) and the `-P,--peer` flag (which will do the same but for `peerDependencies`).\\n\\n      - If the package was already listed in your dependencies, it will by default be upgraded whether it's part of your `dependencies` or `devDependencies` (it won't ever update `peerDependencies`, though).\\n\\n      - If set, the `--prefer-dev` flag will operate as a more flexible `-D,--dev` in that it will add the package to your `devDependencies` if it isn't already listed in either `dependencies` or `devDependencies`, but it will also happily upgrade your `dependencies` if that's what you already use (whereas `-D,--dev` would throw an exception).\\n\\n      - If set, the `-O,--optional` flag will add the package to the `optionalDependencies` field and, in combination with the `-P,--peer` flag, it will add the package as an optional peer dependency. If the package was already listed in your `dependencies`, it will be upgraded to `optionalDependencies`. If the package was already listed in your `peerDependencies`, in combination with the `-P,--peer` flag, it will be upgraded to an optional peer dependency: `\\\"peerDependenciesMeta\\\": { \\\"<package>\\\": { \\\"optional\\\": true } }`\\n\\n      - If the added package doesn't specify a range at all its `latest` tag will be resolved and the returned version will be used to generate a new semver range (using the `^` modifier by default unless otherwise configured via the `defaultSemverRangePrefix` configuration, or the `~` modifier if `-T,--tilde` is specified, or no modifier at all if `-E,--exact` is specified). Two exceptions to this rule: the first one is that if the package is a workspace then its local version will be used, and the second one is that if you use `-P,--peer` the default range will be `*` and won't be resolved at all.\\n\\n      - If the added package specifies a range (such as `^1.0.0`, `latest`, or `rc`), Yarn will add this range as-is in the resulting package.json entry (in particular, tags such as `rc` will be encoded as-is rather than being converted into a semver range).\\n\\n      If the `--cached` option is used, Yarn will preferably reuse the highest version already used somewhere within the project, even if through a transitive dependency.\\n\\n      If the `-i,--interactive` option is used (or if the `preferInteractive` settings is toggled on) the command will first try to check whether other workspaces in the project use the specified package and, if so, will offer to reuse them.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      For a compilation of all the supported protocols, please consult the dedicated page from our website: https://yarnpkg.com/protocols.\\n    \",examples:[[\"Add a regular package to the current workspace\",\"$0 add lodash\"],[\"Add a specific version for a package to the current workspace\",\"$0 add lodash@1.2.3\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using a URL\",\"$0 add lodash@https://github.com/lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol\",\"$0 add lodash@github:lodash/lodash\"],[\"Add a package from a GitHub repository (the master branch) to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash@lodash/lodash\"],[\"Add a package from a specific branch of a GitHub repository to the current workspace using the GitHub protocol (shorthand)\",\"$0 add lodash-es@lodash/lodash#es\"],[\"Add a local package (gzipped tarball format) to the current workspace\",\"$0 add local-package-name@file:../path/to/local-package-name-v0.1.2.tgz\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=f||r.get(\"preferReuse\"),h=Kv(this,s),E=[p?\"reuse\":void 0,\"project\",this.cached?\"cache\":void 0,\"latest\"].filter(W=>typeof W<\"u\"),C=f?1/0:1,S=W=>{let ee=G.tryParseDescriptor(W.slice(4));return ee?ee.range===\"unknown\"?G.makeDescriptor(ee,`jsr:${G.stringifyIdent(ee)}@latest`):G.makeDescriptor(ee,`jsr:${ee.range}`):null},P=await Promise.all(this.packages.map(async W=>{let ee=W.match(/^\\.{0,2}\\//)?await Y5(W,{cwd:this.context.cwd,workspace:a}):W.startsWith(\"jsr:\")?S(W):G.tryParseDescriptor(W),ie=W.match(/^(https?:|git@github)/);if(ie)throw new nt(`It seems you are trying to add a package using a ${he.pretty(r,`${ie[0]}...`,he.Type.RANGE)} url; we now require package names to be explicitly specified.\nTry running the command again with the package name prefixed: ${he.pretty(r,\"yarn add\",he.Type.CODE)} ${he.pretty(r,G.makeDescriptor(G.makeIdent(null,\"my-package\"),`${ie[0]}...`),he.Type.DESCRIPTOR)}`);if(!ee)throw new nt(`The ${he.pretty(r,W,he.Type.CODE)} string didn't match the required format (package-name@range). Did you perhaps forget to explicitly reference the package name?`);let ue=Hlt(a,ee,{dev:this.dev,peer:this.peer,preferDev:this.preferDev,optional:this.optional});return await Promise.all(ue.map(async me=>{let pe=await zv(ee,{project:s,workspace:a,cache:n,fixed:c,target:me,modifier:h,strategies:E,maxResults:C});return{request:ee,suggestedDescriptors:pe,target:me}}))})).then(W=>W.flat()),I=await lA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async W=>{for(let{request:ee,suggestedDescriptors:{suggestions:ie,rejections:ue}}of P)if(ie.filter(me=>me.descriptor!==null).length===0){let[me]=ue;if(typeof me>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");s.configuration.get(\"enableNetwork\")?W.reportError(27,`${G.prettyDescriptor(r,ee)} can't be resolved to a satisfying range`):W.reportError(27,`${G.prettyDescriptor(r,ee)} can't be resolved to a satisfying range (note: network resolution has been disabled)`),W.reportSeparator(),W.reportExceptionOnce(me)}});if(I.hasErrors())return I.exitCode();let R=!1,N=[],U=[];for(let{suggestedDescriptors:{suggestions:W},target:ee}of P){let ie,ue=W.filter(Be=>Be.descriptor!==null),le=ue[0].descriptor,me=ue.every(Be=>G.areDescriptorsEqual(Be.descriptor,le));ue.length===1||me?ie=le:(R=!0,{answer:ie}=await(0,hye.prompt)({type:\"select\",name:\"answer\",message:\"Which range do you want to use?\",choices:W.map(({descriptor:Be,name:Ce,reason:g})=>Be?{name:Ce,hint:g,descriptor:Be}:{name:Ce,hint:g,disabled:!0}),onCancel:()=>process.exit(130),result(Be){return this.find(Be,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let pe=a.manifest[ee].get(ie.identHash);(typeof pe>\"u\"||pe.descriptorHash!==ie.descriptorHash)&&(a.manifest[ee].set(ie.identHash,ie),this.optional&&(ee===\"dependencies\"?a.manifest.ensureDependencyMeta({...ie,range:\"unknown\"}).optional=!0:ee===\"peerDependencies\"&&(a.manifest.ensurePeerDependencyMeta({...ie,range:\"unknown\"}).optional=!0)),typeof pe>\"u\"?N.push([a,ee,ie,E]):U.push([a,ee,pe,ie]))}return await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyAddition,N),await r.triggerMultipleHooks(W=>W.afterWorkspaceDependencyReplacement,U),R&&this.context.stdout.write(`\n`),await s.installWithNewReport({json:this.json,stdout:this.context.stdout,quiet:this.context.quiet},{cache:n,mode:this.mode})}};function Hlt(t,e,{dev:r,peer:s,preferDev:a,optional:n}){let c=t.manifest.dependencies.has(e.identHash),f=t.manifest.devDependencies.has(e.identHash),p=t.manifest.peerDependencies.has(e.identHash);if((r||s)&&c)throw new nt(`Package \"${G.prettyIdent(t.project.configuration,e)}\" is already listed as a regular dependency - remove the -D,-P flags or remove it from your dependencies first`);if(!r&&!s&&p)throw new nt(`Package \"${G.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - use either of -D or -P, or remove it from your peer dependencies first`);if(n&&f)throw new nt(`Package \"${G.prettyIdent(t.project.configuration,e)}\" is already listed as a dev dependency - remove the -O flag or remove it from your dev dependencies first`);if(n&&!s&&p)throw new nt(`Package \"${G.prettyIdent(t.project.configuration,e)}\" is already listed as a peer dependency - remove the -O flag or add the -P flag or remove it from your peer dependencies first`);if((r||a)&&n)throw new nt(`Package \"${G.prettyIdent(t.project.configuration,e)}\" cannot simultaneously be a dev dependency and an optional dependency`);let h=[];return s&&h.push(\"peerDependencies\"),(r||a)&&h.push(\"devDependencies\"),n&&h.push(\"dependencies\"),h.length>0?h:f?[\"devDependencies\"]:p?[\"peerDependencies\"]:[\"dependencies\"]}Ge();Ge();Yt();var oC=class extends ft{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Print both the binary name and the locator of the package that provides the binary\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.name=ge.String({required:!1})}static{this.paths=[[\"bin\"]]}static{this.usage=ot.Usage({description:\"get the path to a binary script\",details:`\n      When used without arguments, this command will print the list of all the binaries available in the current workspace. Adding the \\`-v,--verbose\\` flag will cause the output to contain both the binary name and the locator of the package that provides the binary.\n\n      When an argument is specified, this command will just print the path to the binary on the standard output and exit. Note that the reported path may be stored within a zip archive.\n    `,examples:[[\"List all the available binaries\",\"$0 bin\"],[\"Print the path to a specific binary\",\"$0 bin eslint\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);if(await s.restoreInstallState(),this.name){let f=(await In.getPackageAccessibleBinaries(a,{project:s})).get(this.name);if(!f)throw new nt(`Couldn't find a binary named \"${this.name}\" for package \"${G.prettyLocator(r,a)}\"`);let[,p]=f;return this.context.stdout.write(`${p}\n`),0}return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async c=>{let f=await In.getPackageAccessibleBinaries(a,{project:s}),h=Array.from(f.keys()).reduce((E,C)=>Math.max(E,C.length),0);for(let[E,[C,S]]of f)c.reportJson({name:E,source:G.stringifyIdent(C),path:S});if(this.verbose)for(let[E,[C]]of f)c.reportInfo(null,`${E.padEnd(h,\" \")}   ${G.prettyLocator(r,C)}`);else for(let E of f.keys())c.reportInfo(null,E)})).exitCode()}};Ge();Dt();Yt();var aC=class extends ft{constructor(){super(...arguments);this.mirror=ge.Boolean(\"--mirror\",!1,{description:\"Remove the global cache files instead of the local cache files\"});this.all=ge.Boolean(\"--all\",!1,{description:\"Remove both the global cache files and the local cache files of the current project\"})}static{this.paths=[[\"cache\",\"clean\"],[\"cache\",\"clear\"]]}static{this.usage=ot.Usage({description:\"remove the shared cache files\",details:`\n      This command will remove all the files from the cache.\n    `,examples:[[\"Remove all the local archives\",\"$0 cache clean\"],[\"Remove all the archives stored in the ~/.yarn directory\",\"$0 cache clean --mirror\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(!r.get(\"enableCacheClean\"))throw new nt(\"Cache cleaning is currently disabled. To enable it, set `enableCacheClean: true` in your configuration file. Note: Cache cleaning is typically not required and should be avoided when using Zero-Installs.\");let s=await Kr.find(r);return(await Ot.start({configuration:r,stdout:this.context.stdout},async()=>{let n=(this.all||this.mirror)&&s.mirrorCwd!==null,c=!this.mirror;n&&(await ce.removePromise(s.mirrorCwd),await r.triggerHook(f=>f.cleanGlobalArtifacts,r)),c&&await ce.removePromise(s.cwd)})).exitCode()}};Ge();Yt();ql();var J5=Ie(\"util\"),lC=class extends ft{constructor(){super(...arguments);this.why=ge.Boolean(\"--why\",!1,{description:\"Print the explanation for why a setting has its value\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.unsafe=ge.Boolean(\"--no-redacted\",!1,{description:\"Don't redact secrets (such as tokens) from the output\"});this.name=ge.String()}static{this.paths=[[\"config\",\"get\"]]}static{this.usage=ot.Usage({description:\"read a configuration settings\",details:`\n      This command will print a configuration setting.\n\n      Secrets (such as tokens) will be redacted from the output by default. If this behavior isn't desired, set the \\`--no-redacted\\` to get the untransformed value.\n    `,examples:[[\"Print a simple configuration setting\",\"yarn config get yarnPath\"],[\"Print a complex configuration setting\",\"yarn config get packageExtensions\"],[\"Print a nested field from the configuration\",`yarn config get 'npmScopes[\"my-company\"].npmRegistryServer'`],[\"Print a token from the configuration\",\"yarn config get npmAuthToken --no-redacted\"],[\"Print a configuration setting as JSON\",\"yarn config get packageExtensions --json\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=this.name.replace(/[.[].*$/,\"\"),a=this.name.replace(/^[^.[]*/,\"\");if(typeof r.settings.get(s)>\"u\")throw new nt(`Couldn't find a configuration settings named \"${s}\"`);let c=r.getSpecial(s,{hideSecrets:!this.unsafe,getNativePaths:!0}),f=je.convertMapsToIndexableObjects(c),p=a?va(f,a):f,h=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async E=>{E.reportJson(p)});if(!this.json){if(typeof p==\"string\")return this.context.stdout.write(`${p}\n`),h.exitCode();J5.inspect.styles.name=\"cyan\",this.context.stdout.write(`${(0,J5.inspect)(p,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}\n`)}return h.exitCode()}};Ge();Yt();ql();var K5=Ie(\"util\"),cC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Set complex configuration settings to JSON values\"});this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String();this.value=ge.String()}static{this.paths=[[\"config\",\"set\"]]}static{this.usage=ot.Usage({description:\"change a configuration settings\",details:`\n      This command will set a configuration setting.\n\n      When used without the \\`--json\\` flag, it can only set a simple configuration setting (a string, a number, or a boolean).\n\n      When used with the \\`--json\\` flag, it can set both simple and complex configuration settings, including Arrays and Objects.\n    `,examples:[[\"Set a simple configuration setting (a string, a number, or a boolean)\",\"yarn config set initScope myScope\"],[\"Set a simple configuration setting (a string, a number, or a boolean) using the `--json` flag\",'yarn config set initScope --json \\\\\"myScope\\\\\"'],[\"Set a complex configuration setting (an Array) using the `--json` flag\",`yarn config set unsafeHttpWhitelist --json '[\"*.example.com\", \"example.com\"]'`],[\"Set a complex configuration setting (an Object) using the `--json` flag\",`yarn config set packageExtensions --json '{ \"@babel/parser@*\": { \"dependencies\": { \"@babel/types\": \"*\" } } }'`],[\"Set a nested configuration setting\",'yarn config set npmScopes.company.npmRegistryServer \"https://npm.example.com\"'],[\"Set a nested configuration setting using indexed access for non-simple keys\",`yarn config set 'npmRegistries[\"//npm.example.com\"].npmAuthToken' \"ffffffff-ffff-ffff-ffff-ffffffffffff\"`]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new nt(`Couldn't find a configuration settings named \"${a}\"`);if(a===\"enableStrictSettings\")throw new nt(\"This setting only affects the file it's in, and thus cannot be set from the CLI\");let f=this.json?JSON.parse(this.value):this.value;await(this.home?I=>ze.updateHomeConfiguration(I):I=>ze.updateConfiguration(s(),I))(I=>{if(n){let R=f0(I);return Jd(R,this.name,f),R}else return{...I,[a]:f}});let E=(await ze.find(this.context.cwd,this.context.plugins)).getSpecial(a,{hideSecrets:!0,getNativePaths:!0}),C=je.convertMapsToIndexableObjects(E),S=n?va(C,n):C;return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async I=>{K5.inspect.styles.name=\"cyan\",I.reportInfo(0,`Successfully set ${this.name} to ${(0,K5.inspect)(S,{depth:1/0,colors:r.get(\"enableColors\"),compact:!1})}`)})).exitCode()}};Ge();Yt();ql();var uC=class extends ft{constructor(){super(...arguments);this.home=ge.Boolean(\"-H,--home\",!1,{description:\"Update the home configuration instead of the project configuration\"});this.name=ge.String()}static{this.paths=[[\"config\",\"unset\"]]}static{this.usage=ot.Usage({description:\"unset a configuration setting\",details:`\n      This command will unset a configuration setting.\n    `,examples:[[\"Unset a simple configuration setting\",\"yarn config unset initScope\"],[\"Unset a complex configuration setting\",\"yarn config unset packageExtensions\"],[\"Unset a nested configuration setting\",\"yarn config unset npmScopes.company.npmRegistryServer\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=()=>{if(!r.projectCwd)throw new nt(\"This command must be run from within a project folder\");return r.projectCwd},a=this.name.replace(/[.[].*$/,\"\"),n=this.name.replace(/^[^.[]*\\.?/,\"\");if(typeof r.settings.get(a)>\"u\")throw new nt(`Couldn't find a configuration settings named \"${a}\"`);let f=this.home?h=>ze.updateHomeConfiguration(h):h=>ze.updateConfiguration(s(),h);return(await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout},async h=>{let E=!1;await f(C=>{if(!vB(C,this.name))return h.reportWarning(0,`Configuration doesn't contain setting ${this.name}; there is nothing to unset`),E=!0,C;let S=n?f0(C):{...C};return A0(S,this.name),S}),E||h.reportInfo(0,`Successfully unset ${this.name}`)})).exitCode()}};Ge();Dt();Yt();var tF=Ie(\"util\"),fC=class extends ft{constructor(){super(...arguments);this.noDefaults=ge.Boolean(\"--no-defaults\",!1,{description:\"Omit the default values from the display\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.verbose=ge.Boolean(\"-v,--verbose\",{hidden:!0});this.why=ge.Boolean(\"--why\",{hidden:!0});this.names=ge.Rest()}static{this.paths=[[\"config\"]]}static{this.usage=ot.Usage({description:\"display the current configuration\",details:`\n      This command prints the current active configuration settings.\n    `,examples:[[\"Print the active configuration settings\",\"$0 config\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins,{strict:!1}),s=await SI({configuration:r,stdout:this.context.stdout,forceError:this.json},[{option:this.verbose,message:\"The --verbose option is deprecated, the settings' descriptions are now always displayed\"},{option:this.why,message:\"The --why option is deprecated, the settings' sources are now always displayed\"}]);if(s!==null)return s;let a=this.names.length>0?[...new Set(this.names)].sort():[...r.settings.keys()].sort(),n,c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async f=>{if(r.invalid.size>0&&!this.json){for(let[p,h]of r.invalid)f.reportError(34,`Invalid configuration key \"${p}\" in ${h}`);f.reportSeparator()}if(this.json)for(let p of a){if(this.noDefaults&&!r.sources.has(p))continue;let h=r.settings.get(p);typeof h>\"u\"&&f.reportError(34,`No configuration key named \"${p}\"`);let E=r.getSpecial(p,{hideSecrets:!0,getNativePaths:!0}),C=r.sources.get(p)??\"<default>\",S=C&&C[0]!==\"<\"?fe.fromPortablePath(C):C;f.reportJson({key:p,effective:E,source:S,...h})}else{let p={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},h={},E={children:h};for(let C of a){if(this.noDefaults&&!r.sources.has(C))continue;let S=r.settings.get(C),P=r.sources.get(C)??\"<default>\",I=r.getSpecial(C,{hideSecrets:!0,getNativePaths:!0}),R={Description:{label:\"Description\",value:he.tuple(he.Type.MARKDOWN,{text:S.description,format:this.cli.format(),paragraphs:!1})},Source:{label:\"Source\",value:he.tuple(P[0]===\"<\"?he.Type.CODE:he.Type.PATH,P)}};h[C]={value:he.tuple(he.Type.CODE,C),children:R};let N=(U,W)=>{for(let[ee,ie]of W)if(ie instanceof Map){let ue={};U[ee]={children:ue},N(ue,ie)}else U[ee]={label:ee,value:he.tuple(he.Type.NO_HINT,(0,tF.inspect)(ie,p))}};I instanceof Map?N(R,I):R.Value={label:\"Value\",value:he.tuple(he.Type.NO_HINT,(0,tF.inspect)(I,p))}}a.length!==1&&(n=void 0),xs.emitTree(E,{configuration:r,json:this.json,stdout:this.context.stdout,separators:2})}});if(!this.json&&typeof n<\"u\"){let f=a[0],p=(0,tF.inspect)(r.getSpecial(f,{hideSecrets:!0,getNativePaths:!0}),{colors:r.get(\"enableColors\")});this.context.stdout.write(`\n`),this.context.stdout.write(`${p}\n`)}return c.exitCode()}};Ge();Yt();Ul();var rF={};Vt(rF,{Strategy:()=>Xv,acceptedStrategies:()=>jlt,dedupe:()=>z5});Ge();Ge();var gye=ut(Go()),Xv=(e=>(e.HIGHEST=\"highest\",e))(Xv||{}),jlt=new Set(Object.values(Xv)),Glt={highest:async(t,e,{resolver:r,fetcher:s,resolveOptions:a,fetchOptions:n})=>{let c=new Map;for(let[p,h]of t.storedResolutions){let E=t.storedDescriptors.get(p);if(typeof E>\"u\")throw new Error(`Assertion failed: The descriptor (${p}) should have been registered`);je.getSetWithDefault(c,E.identHash).add(h)}let f=new Map(je.mapAndFilter(t.storedDescriptors.values(),p=>G.isVirtualDescriptor(p)?je.mapAndFilter.skip:[p.descriptorHash,je.makeDeferred()]));for(let p of t.storedDescriptors.values()){let h=f.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(`Assertion failed: The descriptor (${p.descriptorHash}) should have been registered`);let E=t.storedResolutions.get(p.descriptorHash);if(typeof E>\"u\")throw new Error(`Assertion failed: The resolution (${p.descriptorHash}) should have been registered`);let C=t.originalPackages.get(E);if(typeof C>\"u\")throw new Error(`Assertion failed: The package (${E}) should have been registered`);Promise.resolve().then(async()=>{let S=r.getResolutionDependencies(p,a),P=Object.fromEntries(await je.allSettledSafe(Object.entries(S).map(async([ee,ie])=>{let ue=f.get(ie.descriptorHash);if(typeof ue>\"u\")throw new Error(`Assertion failed: The descriptor (${ie.descriptorHash}) should have been registered`);let le=await ue.promise;if(!le)throw new Error(\"Assertion failed: Expected the dependency to have been through the dedupe process itself\");return[ee,le.updatedPackage]})));if(e.length&&!gye.default.isMatch(G.stringifyIdent(p),e)||!r.shouldPersistResolution(C,a))return C;let I=c.get(p.identHash);if(typeof I>\"u\")throw new Error(`Assertion failed: The resolutions (${p.identHash}) should have been registered`);if(I.size===1)return C;let R=[...I].map(ee=>{let ie=t.originalPackages.get(ee);if(typeof ie>\"u\")throw new Error(`Assertion failed: The package (${ee}) should have been registered`);return ie}),N=await r.getSatisfying(p,P,R,a),U=N.locators?.[0];if(typeof U>\"u\"||!N.sorted)return C;let W=t.originalPackages.get(U.locatorHash);if(typeof W>\"u\")throw new Error(`Assertion failed: The package (${U.locatorHash}) should have been registered`);return W}).then(async S=>{let P=await t.preparePackage(S,{resolver:r,resolveOptions:a});h.resolve({descriptor:p,currentPackage:C,updatedPackage:S,resolvedPackage:P})}).catch(S=>{h.reject(S)})}return[...f.values()].map(p=>p.promise)}};async function z5(t,{strategy:e,patterns:r,cache:s,report:a}){let{configuration:n}=t,c=new ki,f=n.makeResolver(),p=n.makeFetcher(),h={cache:s,checksums:t.storedChecksums,fetcher:p,project:t,report:c,cacheOptions:{skipIntegrityCheck:!0}},E={project:t,resolver:f,report:c,fetchOptions:h};return await a.startTimerPromise(\"Deduplication step\",async()=>{let C=Glt[e],S=await C(t,r,{resolver:f,resolveOptions:E,fetcher:p,fetchOptions:h}),P=Ao.progressViaCounter(S.length);await a.reportProgress(P);let I=0;await Promise.all(S.map(U=>U.then(W=>{if(W===null||W.currentPackage.locatorHash===W.updatedPackage.locatorHash)return;I++;let{descriptor:ee,currentPackage:ie,updatedPackage:ue}=W;a.reportInfo(0,`${G.prettyDescriptor(n,ee)} can be deduped from ${G.prettyLocator(n,ie)} to ${G.prettyLocator(n,ue)}`),a.reportJson({descriptor:G.stringifyDescriptor(ee),currentResolution:G.stringifyLocator(ie),updatedResolution:G.stringifyLocator(ue)}),t.storedResolutions.set(ee.descriptorHash,ue.locatorHash)}).finally(()=>P.tick())));let R;switch(I){case 0:R=\"No packages\";break;case 1:R=\"One package\";break;default:R=`${I} packages`}let N=he.pretty(n,e,he.Type.CODE);return a.reportInfo(0,`${R} can be deduped using the ${N} strategy`),I})}var AC=class extends ft{constructor(){super(...arguments);this.strategy=ge.String(\"-s,--strategy\",\"highest\",{description:\"The strategy to use when deduping dependencies\",validator:fo(Xv)});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:fo($l)});this.patterns=ge.Rest()}static{this.paths=[[\"dedupe\"]]}static{this.usage=ot.Usage({description:\"deduplicate dependencies with overlapping ranges\",details:\"\\n      Duplicates are defined as descriptors with overlapping ranges being resolved and locked to different locators. They are a natural consequence of Yarn's deterministic installs, but they can sometimes pile up and unnecessarily increase the size of your project.\\n\\n      This command dedupes dependencies in the current project using different strategies (only one is implemented at the moment):\\n\\n      - `highest`: Reuses (where possible) the locators with the highest versions. This means that dependencies can only be upgraded, never downgraded. It's also guaranteed that it never takes more than a single pass to dedupe the entire dependency tree.\\n\\n      **Note:** Even though it never produces a wrong dependency tree, this command should be used with caution, as it modifies the dependency tree, which can sometimes cause problems when packages don't strictly follow semver recommendations. Because of this, it is recommended to also review the changes manually.\\n\\n      If set, the `-c,--check` flag will only report the found duplicates, without persisting the modified dependency tree. If changes are found, the command will exit with a non-zero exit code, making it suitable for CI purposes.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      ### In-depth explanation:\\n\\n      Yarn doesn't deduplicate dependencies by default, otherwise installs wouldn't be deterministic and the lockfile would be useless. What it actually does is that it tries to not duplicate dependencies in the first place.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@*`will cause Yarn to reuse `foo@2.3.4`, even if the latest `foo` is actually `foo@2.10.14`, thus preventing unnecessary duplication.\\n\\n      Duplication happens when Yarn can't unlock dependencies that have already been locked inside the lockfile.\\n\\n      **Example:** If `foo@^2.3.4` (a dependency of a dependency) has already been resolved to `foo@2.3.4`, running `yarn add foo@2.10.14` will cause Yarn to install `foo@2.10.14` because the existing resolution doesn't satisfy the range `2.10.14`. This behavior can lead to (sometimes) unwanted duplication, since now the lockfile contains 2 separate resolutions for the 2 `foo` descriptors, even though they have overlapping ranges, which means that the lockfile can be simplified so that both descriptors resolve to `foo@2.10.14`.\\n    \",examples:[[\"Dedupe all packages\",\"$0 dedupe\"],[\"Dedupe all packages using a specific strategy\",\"$0 dedupe --strategy highest\"],[\"Dedupe a specific package\",\"$0 dedupe lodash\"],[\"Dedupe all packages with the `@babel/*` scope\",\"$0 dedupe '@babel/*'\"],[\"Check for duplicates (can be used as a CI step)\",\"$0 dedupe --check\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=await Kr.find(r);await s.restoreInstallState({restoreResolutions:!1});let n=0,c=await Ot.start({configuration:r,includeFooter:!1,stdout:this.context.stdout,json:this.json},async f=>{n=await z5(s,{strategy:this.strategy,patterns:this.patterns,cache:a,report:f})});return c.hasErrors()?c.exitCode():this.check?n?1:0:await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:a,mode:this.mode})}};Ge();Yt();var pC=class extends ft{static{this.paths=[[\"--clipanion=definitions\"]]}async execute(){let{plugins:e}=await ze.find(this.context.cwd,this.context.plugins),r=[];for(let c of e){let{commands:f}=c[1];if(f){let h=Ca.from(f).definitions();r.push([c[0],h])}}let s=this.cli.definitions(),a=(c,f)=>c.split(\" \").slice(1).join()===f.split(\" \").slice(1).join(),n=dye()[\"@yarnpkg/builder\"].bundles.standard;for(let c of r){let f=c[1];for(let p of f)s.find(h=>a(h.path,p.path)).plugin={name:c[0],isDefault:n.includes(c[0])}}this.context.stdout.write(`${JSON.stringify(s,null,2)}\n`)}};var hC=class extends ft{static{this.paths=[[\"help\"],[\"--help\"],[\"-h\"]]}async execute(){this.context.stdout.write(this.cli.usage(null))}};Ge();Dt();Yt();var gC=class extends ft{constructor(){super(...arguments);this.leadingArgument=ge.String();this.args=ge.Proxy()}async execute(){if(this.leadingArgument.match(/[\\\\/]/)&&!G.tryParseIdent(this.leadingArgument)){let r=J.resolve(this.context.cwd,fe.toPortablePath(this.leadingArgument));return await this.cli.run(this.args,{cwd:r})}else return await this.cli.run([\"run\",this.leadingArgument,...this.args])}};Ge();var dC=class extends ft{static{this.paths=[[\"-v\"],[\"--version\"]]}async execute(){this.context.stdout.write(`${fn||\"<unknown>\"}\n`)}};Ge();Ge();Yt();var mC=class extends ft{constructor(){super(...arguments);this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"exec\"]]}static{this.usage=ot.Usage({description:\"execute a shell script\",details:`\n      This command simply executes a shell script within the context of the root directory of the active workspace using the portable shell.\n\n      It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n    `,examples:[[\"Execute a single shell command\",\"$0 exec echo Hello World\"],[\"Execute a shell script\",'$0 exec \"tsc & babel src --out-dir lib\"']]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,locator:a}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState(),await In.executePackageShellcode(a,this.commandName,this.args,{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,project:s})}};Ge();Yt();Ul();var yC=class extends ft{constructor(){super(...arguments);this.hash=ge.String({required:!1,validator:Nx(wE(),[Z2(/^p[0-9a-f]{6}$/)])})}static{this.paths=[[\"explain\",\"peer-requirements\"]]}static{this.usage=ot.Usage({description:\"explain a set of peer requirements\",details:`\n      A peer requirement represents all peer requests that a subject must satisfy when providing a requested package to requesters.\n\n      When the hash argument is specified, this command prints a detailed explanation of the peer requirement corresponding to the hash and whether it is satisfied or not.\n\n      When used without arguments, this command lists all peer requirements and the corresponding hash that can be used to get detailed information about a given requirement.\n\n      **Note:** A hash is a seven-letter code consisting of the letter 'p' followed by six characters that can be obtained from peer dependency warnings or from the list of all peer requirements(\\`yarn explain peer-requirements\\`).\n    `,examples:[[\"Explain the corresponding peer requirement for a hash\",\"$0 explain peer-requirements p1a4ed\"],[\"List all peer requirements\",\"$0 explain peer-requirements\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return await s.restoreInstallState({restoreResolutions:!1}),await s.applyLightResolution(),typeof this.hash<\"u\"?await Wlt(this.hash,s,{stdout:this.context.stdout}):await Ylt(s,{stdout:this.context.stdout})}};async function Wlt(t,e,r){let s=e.peerRequirementNodes.get(t);if(typeof s>\"u\")throw new Error(`No peerDependency requirements found for hash: \"${t}\"`);let a=new Set,n=p=>a.has(p.requester.locatorHash)?{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:p.children.size>0?[{value:he.tuple(he.Type.NO_HINT,\"...\")}]:[]}:(a.add(p.requester.locatorHash),{value:he.tuple(he.Type.DEPENDENT,{locator:p.requester,descriptor:p.descriptor}),children:Object.fromEntries(Array.from(p.children.values(),h=>[G.stringifyLocator(h.requester),n(h)]))}),c=e.peerWarnings.find(p=>p.hash===t);return(await Ot.start({configuration:e.configuration,stdout:r.stdout,includeFooter:!1,includePrefix:!1},async p=>{let h=he.mark(e.configuration),E=c?h.Cross:h.Check;if(p.reportInfo(0,`Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} is requested to provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} by its descendants`),p.reportSeparator(),p.reportInfo(0,he.pretty(e.configuration,s.subject,he.Type.LOCATOR)),xs.emitTree({children:Object.fromEntries(Array.from(s.requests.values(),C=>[G.stringifyLocator(C.requester),n(C)]))},{configuration:e.configuration,stdout:r.stdout,json:!1}),p.reportSeparator(),s.provided.range===\"missing:\"){let C=c?\"\":\" , but all peer requests are optional\";p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} does not provide ${he.pretty(e.configuration,s.ident,he.Type.IDENT)}${C}.`)}else{let C=e.storedResolutions.get(s.provided.descriptorHash);if(!C)throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let S=e.storedPackages.get(C);if(!S)throw new Error(\"Assertion failed: Expected the package to be registered\");p.reportInfo(0,`${E} Package ${he.pretty(e.configuration,s.subject,he.Type.LOCATOR)} provides ${he.pretty(e.configuration,s.ident,he.Type.IDENT)} with version ${G.prettyReference(e.configuration,S.version??\"0.0.0\")}, ${c?\"which does not satisfy all requests.\":\"which satisfies all requests\"}`),c?.type===3&&(c.range?p.reportInfo(0,`  The combined requested range is ${he.pretty(e.configuration,c.range,he.Type.RANGE)}`):p.reportInfo(0,\"  Unfortunately, the requested ranges have no overlap\"))}})).exitCode()}async function Ylt(t,e){return(await Ot.start({configuration:t.configuration,stdout:e.stdout,includeFooter:!1,includePrefix:!1},async s=>{let a=he.mark(t.configuration),n=je.sortMap(t.peerRequirementNodes,[([,c])=>G.stringifyLocator(c.subject),([,c])=>G.stringifyIdent(c.ident)]);for(let[,c]of n.values()){if(!c.root)continue;let f=t.peerWarnings.find(E=>E.hash===c.hash),p=[...G.allPeerRequests(c)],h;if(p.length>2?h=` and ${p.length-1} other dependencies`:p.length===2?h=\" and 1 other dependency\":h=\"\",c.provided.range!==\"missing:\"){let E=t.storedResolutions.get(c.provided.descriptorHash);if(!E)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");let C=t.storedPackages.get(E);if(!C)throw new Error(\"Assertion failed: Expected the provided package to have been registered\");let S=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \\u2192 ${f?a.Cross:a.Check} ${G.prettyLocator(t.configuration,c.subject)} provides ${G.prettyLocator(t.configuration,C)} to ${G.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,S):s.reportInfo(0,S)}else{let E=`${he.pretty(t.configuration,c.hash,he.Type.CODE)} \\u2192 ${f?a.Cross:a.Check} ${G.prettyLocator(t.configuration,c.subject)} doesn't provide ${G.prettyIdent(t.configuration,c.ident)} to ${G.prettyLocator(t.configuration,p[0].requester)}${h}`;f?s.reportWarning(0,E):s.reportInfo(0,E)}}})).exitCode()}Ge();Yt();Ul();Ge();Ge();Dt();Yt();var mye=ut(Ai()),EC=class extends ft{constructor(){super(...arguments);this.useYarnPath=ge.Boolean(\"--yarn-path\",{description:\"Set the yarnPath setting even if the version can be accessed by Corepack\"});this.onlyIfNeeded=ge.Boolean(\"--only-if-needed\",!1,{description:\"Only lock the Yarn version if it isn't already locked\"});this.version=ge.String()}static{this.paths=[[\"set\",\"version\"]]}static{this.usage=ot.Usage({description:\"lock the Yarn version used by the project\",details:\"\\n      This command will set a specific release of Yarn to be used by Corepack: https://nodejs.org/api/corepack.html.\\n\\n      By default it only will set the `packageManager` field at the root of your project, but if the referenced release cannot be represented this way, if you already have `yarnPath` configured, or if you set the `--yarn-path` command line flag, then the release will also be downloaded from the Yarn GitHub repository, stored inside your project, and referenced via the `yarnPath` settings from your project `.yarnrc.yml` file.\\n\\n      A very good use case for this command is to enforce the version of Yarn used by any single member of your team inside the same project - by doing this you ensure that you have control over Yarn upgrades and downgrades (including on your deployment servers), and get rid of most of the headaches related to someone using a slightly different version and getting different behavior.\\n\\n      The version specifier can be:\\n\\n      - a tag:\\n        - `latest` / `berry` / `stable` -> the most recent stable berry (`>=2.0.0`) release\\n        - `canary` -> the most recent canary (release candidate) berry (`>=2.0.0`) release\\n        - `classic` -> the most recent classic (`^0.x || ^1.x`) release\\n\\n      - a semver range (e.g. `2.x`) -> the most recent version satisfying the range (limited to berry releases)\\n\\n      - a semver version (e.g. `2.4.1`, `1.22.1`)\\n\\n      - a local file referenced through either a relative or absolute path\\n\\n      - `self` -> the version used to invoke the command\\n    \",examples:[[\"Download the latest release from the Yarn repository\",\"$0 set version latest\"],[\"Download the latest canary release from the Yarn repository\",\"$0 set version canary\"],[\"Download the latest classic release from the Yarn repository\",\"$0 set version classic\"],[\"Download the most recent Yarn 3 build\",\"$0 set version 3.x\"],[\"Download a specific Yarn 2 build\",\"$0 set version 2.0.0-rc.30\"],[\"Switch back to a specific Yarn 1 release\",\"$0 set version 1.22.1\"],[\"Use a release from the local filesystem\",\"$0 set version ./yarn.cjs\"],[\"Use a release from a URL\",\"$0 set version https://repo.yarnpkg.com/3.1.0/packages/yarnpkg-cli/bin/yarn.js\"],[\"Download the version used to invoke the command\",\"$0 set version self\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(this.onlyIfNeeded&&r.get(\"yarnPath\")){let f=r.sources.get(\"yarnPath\");if(!f)throw new Error(\"Assertion failed: Expected 'yarnPath' to have a source\");let p=r.projectCwd??r.startingCwd;if(J.contains(p,f))return 0}let s=()=>{if(typeof fn>\"u\")throw new nt(\"The --install flag can only be used without explicit version specifier from the Yarn CLI\");return`file://${process.argv[1]}`},a,n=(f,p)=>({version:p,url:f.replace(/\\{\\}/g,p)});if(this.version===\"self\")a={url:s(),version:fn??\"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 Zv(r,\"stable\"));else if(this.version===\"canary\")a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await Zv(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}[\\\\/]/)||fe.isAbsolute(this.version))a={url:`file://${J.resolve(fe.toPortablePath(this.version))}`,version:\"file\"};else if(Fr.satisfiesWithPrereleases(this.version,\">=2.0.0\"))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",this.version);else if(Fr.satisfiesWithPrereleases(this.version,\"^0.x || ^1.x\"))a=n(\"https://github.com/yarnpkg/yarn/releases/download/v{}/yarn-{}.js\",this.version);else if(Fr.validRange(this.version))a=n(\"https://repo.yarnpkg.com/{}/packages/yarnpkg-cli/bin/yarn.js\",await Vlt(r,this.version));else throw new nt(`Invalid version descriptor \"${this.version}\"`);return(await Ot.start({configuration:r,stdout:this.context.stdout,includeLogs:!this.context.quiet},async f=>{let p=async()=>{let h=\"file://\";return a.url.startsWith(h)?(f.reportInfo(0,`Retrieving ${he.pretty(r,a.url,he.Type.PATH)}`),await ce.readFilePromise(a.url.slice(h.length))):(f.reportInfo(0,`Downloading ${he.pretty(r,a.url,he.Type.URL)}`),await nn.get(a.url,{configuration:r}))};await X5(r,a.version,p,{report:f,useYarnPath:this.useYarnPath})})).exitCode()}};async function Vlt(t,e){let s=(await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0})).tags.filter(a=>Fr.satisfiesWithPrereleases(a,e));if(s.length===0)throw new nt(`No matching release found for range ${he.pretty(t,e,he.Type.RANGE)}.`);return s[0]}async function Zv(t,e){let r=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:t,jsonResponse:!0});if(!r.latest[e])throw new nt(`Tag ${he.pretty(t,e,he.Type.RANGE)} not found`);return r.latest[e]}async function X5(t,e,r,{report:s,useYarnPath:a}){let n,c=async()=>(typeof n>\"u\"&&(n=await r()),n);if(e===null){let ee=await c();await ce.mktempPromise(async ie=>{let ue=J.join(ie,\"yarn.cjs\");await ce.writeFilePromise(ue,ee);let{stdout:le}=await qr.execvp(process.execPath,[fe.fromPortablePath(ue),\"--version\"],{cwd:ie,env:{...t.env,YARN_IGNORE_PATH:\"1\"}});if(e=le.trim(),!mye.default.valid(e))throw new Error(`Invalid semver version. ${he.pretty(t,\"yarn --version\",he.Type.CODE)} returned:\n${e}`)})}let f=t.projectCwd??t.startingCwd,p=J.resolve(f,\".yarn/releases\"),h=J.resolve(p,`yarn-${e}.cjs`),E=J.relative(t.startingCwd,h),C=je.isTaggedYarnVersion(e),S=t.get(\"yarnPath\"),P=!C,I=P||!!S||!!a;if(a===!1){if(P)throw new jt(0,\"You explicitly opted out of yarnPath usage in your command line, but the version you specified cannot be represented by Corepack\");I=!1}else!I&&!process.env.COREPACK_ROOT&&(s.reportWarning(0,`You don't seem to have ${he.applyHyperlink(t,\"Corepack\",\"https://nodejs.org/api/corepack.html\")} enabled; we'll have to rely on ${he.applyHyperlink(t,\"yarnPath\",\"https://yarnpkg.com/configuration/yarnrc#yarnPath\")} instead`),I=!0);if(I){let ee=await c();s.reportInfo(0,`Saving the new release in ${he.pretty(t,E,\"magenta\")}`),await ce.removePromise(J.dirname(h)),await ce.mkdirPromise(J.dirname(h),{recursive:!0}),await ce.writeFilePromise(h,ee,{mode:493}),await ze.updateConfiguration(f,{yarnPath:J.relative(f,h)})}else await ce.removePromise(J.dirname(h)),await ze.updateConfiguration(f,{yarnPath:ze.deleteProperty});let R=await Ut.tryFind(f)||new Ut;R.packageManager=`yarn@${C?e:await Zv(t,\"stable\")}`;let N={};R.exportTo(N);let U=J.join(f,Ut.fileName),W=`${JSON.stringify(N,null,R.indent)}\n`;return await ce.changeFilePromise(U,W,{automaticNewlines:!0}),{bundleVersion:e}}function yye(t){return Br[jx(t)]}var Jlt=/## (?<code>YN[0-9]{4}) - `(?<name>[A-Z_]+)`\\n\\n(?<details>(?:.(?!##))+)/gs;async function Klt(t){let r=`https://repo.yarnpkg.com/${je.isTaggedYarnVersion(fn)?fn:await Zv(t,\"canary\")}/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx`,s=await nn.get(r,{configuration:t});return new Map(Array.from(s.toString().matchAll(Jlt),({groups:a})=>{if(!a)throw new Error(\"Assertion failed: Expected the match to have been successful\");let n=yye(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 IC=class extends ft{constructor(){super(...arguments);this.code=ge.String({required:!1,validator:$2(wE(),[Z2(/^YN[0-9]{4}$/)])});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"explain\"]]}static{this.usage=ot.Usage({description:\"explain an error code\",details:`\n      When the code argument is specified, this command prints its name and its details.\n\n      When used without arguments, this command lists all error codes and their names.\n    `,examples:[[\"Explain an error code\",\"$0 explain YN0006\"],[\"List all error codes\",\"$0 explain\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);if(typeof this.code<\"u\"){let s=yye(this.code),a=he.pretty(r,s,he.Type.CODE),n=this.cli.format().header(`${this.code} - ${a}`),f=(await Klt(r)).get(this.code),p=typeof f<\"u\"?he.jsonOrPretty(this.json,r,he.tuple(he.Type.MARKDOWN,{text:f,format:this.cli.format(),paragraphs:!0})):`This error code does not have a description.\n\nYou can help us by editing this page on GitHub \\u{1F642}:\n${he.jsonOrPretty(this.json,r,he.tuple(he.Type.URL,\"https://github.com/yarnpkg/berry/blob/master/packages/docusaurus/docs/advanced/01-general-reference/error-codes.mdx\"))}\n`;this.json?this.context.stdout.write(`${JSON.stringify({code:this.code,name:s,details:p})}\n`):this.context.stdout.write(`${n}\n\n${p}\n`)}else{let s={children:je.mapAndFilter(Object.entries(Br),([a,n])=>Number.isNaN(Number(a))?je.mapAndFilter.skip:{label:Yf(Number(a)),value:he.tuple(he.Type.CODE,n)})};xs.emitTree(s,{configuration:r,stdout:this.context.stdout,json:this.json})}}};Ge();Dt();Yt();var Eye=ut(Go()),CC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Print versions of a package from the whole project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Print information for all packages, including transitive dependencies\"});this.extra=ge.Array(\"-X,--extra\",[],{description:\"An array of requests of extra data provided by plugins\"});this.cache=ge.Boolean(\"--cache\",!1,{description:\"Print information about the cache entry of a package (path, size, checksum)\"});this.dependents=ge.Boolean(\"--dependents\",!1,{description:\"Print all dependents for each matching package\"});this.manifest=ge.Boolean(\"--manifest\",!1,{description:\"Print data obtained by looking at the package archive (license, homepage, ...)\"});this.nameOnly=ge.Boolean(\"--name-only\",!1,{description:\"Only print the name for the matching packages\"});this.virtuals=ge.Boolean(\"--virtuals\",!1,{description:\"Print each instance of the virtual packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}static{this.paths=[[\"info\"]]}static{this.usage=ot.Usage({description:\"see information related to packages\",details:\"\\n      This command prints various information related to the specified packages, accepting glob patterns.\\n\\n      By default, if the locator reference is missing, Yarn will default to print the information about all the matching direct dependencies of the package for the active workspace. To instead print all versions of the package that are direct dependencies of any of your workspaces, use the `-A,--all` flag. Adding the `-R,--recursive` flag will also report transitive dependencies.\\n\\n      Some fields will be hidden by default in order to keep the output readable, but can be selectively displayed by using additional options (`--dependents`, `--manifest`, `--virtuals`, ...) described in the option descriptions.\\n\\n      Note that this command will only print the information directly related to the selected packages - if you wish to know why the package is there in the first place, use `yarn why` which will do just that (it also provides a `-R,--recursive` flag that may be of some help).\\n    \",examples:[[\"Show information about Lodash\",\"$0 info lodash\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a&&!this.all)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=new Set(this.extra);this.cache&&c.add(\"cache\"),this.dependents&&c.add(\"dependents\"),this.manifest&&c.add(\"manifest\");let f=(ie,{recursive:ue})=>{let le=ie.anchoredLocator.locatorHash,me=new Map,pe=[le];for(;pe.length>0;){let Be=pe.shift();if(me.has(Be))continue;let Ce=s.storedPackages.get(Be);if(typeof Ce>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");if(me.set(Be,Ce),G.isVirtualLocator(Ce)&&pe.push(G.devirtualizeLocator(Ce).locatorHash),!(!ue&&Be!==le))for(let g of Ce.dependencies.values()){let we=s.storedResolutions.get(g.descriptorHash);if(typeof we>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");pe.push(we)}}return me.values()},p=({recursive:ie})=>{let ue=new Map;for(let le of s.workspaces)for(let me of f(le,{recursive:ie}))ue.set(me.locatorHash,me);return ue.values()},h=({all:ie,recursive:ue})=>ie&&ue?s.storedPackages.values():ie?p({recursive:ue}):f(a,{recursive:ue}),E=({all:ie,recursive:ue})=>{let le=h({all:ie,recursive:ue}),me=this.patterns.map(Ce=>{let g=G.parseLocator(Ce),we=Eye.default.makeRe(G.stringifyIdent(g)),ye=G.isVirtualLocator(g),Ae=ye?G.devirtualizeLocator(g):g;return se=>{let Z=G.stringifyIdent(se);if(!we.test(Z))return!1;if(g.reference===\"unknown\")return!0;let De=G.isVirtualLocator(se),Re=De?G.devirtualizeLocator(se):se;return!(ye&&De&&g.reference!==se.reference||Ae.reference!==Re.reference)}}),pe=je.sortMap([...le],Ce=>G.stringifyLocator(Ce));return{selection:pe.filter(Ce=>me.length===0||me.some(g=>g(Ce))),sortedLookup:pe}},{selection:C,sortedLookup:S}=E({all:this.all,recursive:this.recursive});if(C.length===0)throw new nt(\"No package matched your request\");let P=new Map;if(this.dependents)for(let ie of S)for(let ue of ie.dependencies.values()){let le=s.storedResolutions.get(ue.descriptorHash);if(typeof le>\"u\")throw new Error(\"Assertion failed: Expected the resolution to be registered\");je.getArrayWithDefault(P,le).push(ie)}let I=new Map;for(let ie of S){if(!G.isVirtualLocator(ie))continue;let ue=G.devirtualizeLocator(ie);je.getArrayWithDefault(I,ue.locatorHash).push(ie)}let R={},N={children:R},U=r.makeFetcher(),W={project:s,fetcher:U,cache:n,checksums:s.storedChecksums,report:new ki,cacheOptions:{skipIntegrityCheck:!0}},ee=[async(ie,ue,le)=>{if(!ue.has(\"manifest\"))return;let me=await U.fetch(ie,W),pe;try{pe=await Ut.find(me.prefixPath,{baseFs:me.packageFs})}finally{me.releaseFs?.()}le(\"Manifest\",{License:he.tuple(he.Type.NO_HINT,pe.license),Homepage:he.tuple(he.Type.URL,pe.raw.homepage??null)})},async(ie,ue,le)=>{if(!ue.has(\"cache\"))return;let me=s.storedChecksums.get(ie.locatorHash)??null,pe=n.getLocatorPath(ie,me),Be;if(pe!==null)try{Be=await ce.statPromise(pe)}catch{}let Ce=typeof Be<\"u\"?[Be.size,he.Type.SIZE]:void 0;le(\"Cache\",{Checksum:he.tuple(he.Type.NO_HINT,me),Path:he.tuple(he.Type.PATH,pe),Size:Ce})}];for(let ie of C){let ue=G.isVirtualLocator(ie);if(!this.virtuals&&ue)continue;let le={},me={value:[ie,he.Type.LOCATOR],children:le};if(R[G.stringifyLocator(ie)]=me,this.nameOnly){delete me.children;continue}let pe=I.get(ie.locatorHash);typeof pe<\"u\"&&(le.Instances={label:\"Instances\",value:he.tuple(he.Type.NUMBER,pe.length)}),le.Version={label:\"Version\",value:he.tuple(he.Type.NO_HINT,ie.version)};let Be=(g,we)=>{let ye={};if(le[g]=ye,Array.isArray(we))ye.children=we.map(Ae=>({value:Ae}));else{let Ae={};ye.children=Ae;for(let[se,Z]of Object.entries(we))typeof Z>\"u\"||(Ae[se]={label:se,value:Z})}};if(!ue){for(let g of ee)await g(ie,c,Be);await r.triggerHook(g=>g.fetchPackageInfo,ie,c,Be)}ie.bin.size>0&&!ue&&Be(\"Exported Binaries\",[...ie.bin.keys()].map(g=>he.tuple(he.Type.PATH,g)));let Ce=P.get(ie.locatorHash);typeof Ce<\"u\"&&Ce.length>0&&Be(\"Dependents\",Ce.map(g=>he.tuple(he.Type.LOCATOR,g))),ie.dependencies.size>0&&!ue&&Be(\"Dependencies\",[...ie.dependencies.values()].map(g=>{let we=s.storedResolutions.get(g.descriptorHash),ye=typeof we<\"u\"?s.storedPackages.get(we)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:ye})})),ie.peerDependencies.size>0&&ue&&Be(\"Peer dependencies\",[...ie.peerDependencies.values()].map(g=>{let we=ie.dependencies.get(g.identHash),ye=typeof we<\"u\"?s.storedResolutions.get(we.descriptorHash)??null:null,Ae=ye!==null?s.storedPackages.get(ye)??null:null;return he.tuple(he.Type.RESOLUTION,{descriptor:g,locator:Ae})}))}xs.emitTree(N,{configuration:r,json:this.json,stdout:this.context.stdout,separators:this.nameOnly?0:2})}};Ge();Dt();wc();var nF=ut(Fd());Yt();var Z5=ut(Ai());Ul();var zlt=[{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\"}],wC=class extends ft{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:fo($l)});this.cacheFolder=ge.String(\"--cache-folder\",{hidden:!0});this.frozenLockfile=ge.Boolean(\"--frozen-lockfile\",{hidden:!0});this.ignoreEngines=ge.Boolean(\"--ignore-engines\",{hidden:!0});this.nonInteractive=ge.Boolean(\"--non-interactive\",{hidden:!0});this.preferOffline=ge.Boolean(\"--prefer-offline\",{hidden:!0});this.production=ge.Boolean(\"--production\",{hidden:!0});this.registry=ge.String(\"--registry\",{hidden:!0});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.networkTimeout=ge.String(\"--network-timeout\",{hidden:!0})}static{this.paths=[[\"install\"],ot.Default]}static{this.usage=ot.Usage({description:\"install the project dependencies\",details:\"\\n      This command sets up your project if needed. The installation is split into four different steps that each have their own characteristics:\\n\\n      - **Resolution:** First the package manager will resolve your dependencies. The exact way a dependency version is privileged over another isn't standardized outside of the regular semver guarantees. If a package doesn't resolve to what you would expect, check that all dependencies are correctly declared (also check our website for more information: ).\\n\\n      - **Fetch:** Then we download all the dependencies if needed, and make sure that they're all stored within our cache (check the value of `cacheFolder` in `yarn config` to see where the cache files are stored).\\n\\n      - **Link:** Then we send the dependency tree information to internal plugins tasked with writing them on the disk in some form (for example by generating the `.pnp.cjs` file you might know).\\n\\n      - **Build:** Once the dependency tree has been written on the disk, the package manager will now be free to run the build scripts for all packages that might need it, in a topological order compatible with the way they depend on one another. See https://yarnpkg.com/advanced/lifecycle-scripts for detail.\\n\\n      Note that running this command is not part of the recommended workflow. Yarn supports zero-installs, which means that as long as you store your cache and your `.pnp.cjs` file inside your repository, everything will work without requiring any install right after cloning your repository or switching branches.\\n\\n      If the `--immutable` option is set (defaults to true on CI), Yarn will abort with an error exit code if the lockfile was to be modified (other paths can be added using the `immutablePatterns` configuration setting). For backward compatibility we offer an alias under the name of `--frozen-lockfile`, but it will be removed in a later release.\\n\\n      If the `--immutable-cache` option is set, Yarn will abort with an error exit code if the cache folder was to be modified (either because files would be added, or because they'd be removed).\\n\\n      If the `--refresh-lockfile` option is set, Yarn will keep the same resolution for the packages currently in the lockfile but will refresh their metadata. If used together with `--immutable`, it can validate that the lockfile information are consistent. This flag is enabled by default when Yarn detects it runs within a pull request context.\\n\\n      If the `--check-cache` option is set, Yarn will always refetch the packages and will ensure that their checksum matches what's 1/ described in the lockfile 2/ inside the existing cache files (if present). This is recommended as part of your CI workflow if you're both following the Zero-Installs model and accepting PRs from third-parties, as they'd otherwise have the ability to alter the checked-in packages before submitting them.\\n\\n      If the `--inline-builds` option is set, Yarn will verbosely print the output of the build steps of your dependencies (instead of writing them into individual files). This is likely useful mostly for debug purposes only when using Docker-like environments.\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n    \",examples:[[\"Install the project\",\"$0 install\"],[\"Validate a project when using Zero-Installs\",\"$0 install --immutable --immutable-cache\"],[\"Validate a project when using Zero-Installs (slightly safer if you accept external PRs)\",\"$0 install --immutable --immutable-cache --check-cache\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);typeof this.inlineBuilds<\"u\"&&r.useWithSource(\"<cli>\",{enableInlineBuilds:this.inlineBuilds},r.startingCwd,{overwrite:!0});let s=!!process.env.FUNCTION_TARGET||!!process.env.GOOGLE_RUNTIME,a=await SI({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:!nF.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:!nF.default.VERCEL},{option:this.production,message:\"The --production option is deprecated on 'install'; use 'yarn workspaces focus' instead\",error:!0},{option:this.nonInteractive,message:\"The --non-interactive option is deprecated\",error:!s},{option:this.frozenLockfile,message:\"The --frozen-lockfile option is deprecated; use --immutable and/or --immutable-cache instead\",callback:()=>this.immutable=this.frozenLockfile},{option:this.cacheFolder,message:\"The cache-folder option has been deprecated; use rc settings instead\",error:!nF.default.NETLIFY}]);if(a!==null)return a;let n=this.mode===\"update-lockfile\";if(n&&(this.immutable||this.immutableCache))throw new nt(`${he.pretty(r,\"--immutable\",he.Type.CODE)} and ${he.pretty(r,\"--immutable-cache\",he.Type.CODE)} cannot be used with ${he.pretty(r,\"--mode=update-lockfile\",he.Type.CODE)}`);let c=(this.immutable??r.get(\"enableImmutableInstalls\"))&&!n,f=this.immutableCache&&!n;if(r.projectCwd!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U=!1;await $lt(r,c)&&(N.reportInfo(48,\"Automatically removed core plugins that are now builtins \\u{1F44D}\"),U=!0),await Zlt(r,c)&&(N.reportInfo(48,\"Automatically fixed merge conflicts \\u{1F44D}\"),U=!0),U&&N.reportSeparator()});if(R.hasErrors())return R.exitCode()}if(r.projectCwd!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{if(ze.telemetry?.isNew)ze.telemetry.commitTips(),N.reportInfo(65,\"Yarn will periodically gather anonymous telemetry: https://yarnpkg.com/advanced/telemetry\"),N.reportInfo(65,`Run ${he.pretty(r,\"yarn config set --home enableTelemetry 0\",he.Type.CODE)} to disable`),N.reportSeparator();else if(ze.telemetry?.shouldShowTips){let U=await nn.get(\"https://repo.yarnpkg.com/tags\",{configuration:r,jsonResponse:!0}).catch(()=>null);if(U!==null){let W=null;if(fn!==null){let ie=Z5.default.prerelease(fn)?\"canary\":\"stable\",ue=U.latest[ie];Z5.default.gt(ue,fn)&&(W=[ie,ue])}if(W)ze.telemetry.commitTips(),N.reportInfo(88,`${he.applyStyle(r,`A new ${W[0]} version of Yarn is available:`,he.Style.BOLD)} ${G.prettyReference(r,W[1])}!`),N.reportInfo(88,`Upgrade now by running ${he.pretty(r,`yarn set version ${W[1]}`,he.Type.CODE)}`),N.reportSeparator();else{let ee=ze.telemetry.selectTip(U.tips);ee&&(N.reportInfo(89,he.pretty(r,ee.message,he.Type.MARKDOWN_INLINE)),ee.url&&N.reportInfo(89,`Learn more at ${ee.url}`),N.reportSeparator())}}}});if(R.hasErrors())return R.exitCode()}let{project:p,workspace:h}=await Tt.find(r,this.context.cwd),E=p.lockfileLastVersion;if(E!==null){let R=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async N=>{let U={};for(let W of zlt)W.selector(E)&&typeof r.sources.get(W.name)>\"u\"&&(r.use(\"<compat>\",{[W.name]:W.value},p.cwd,{overwrite:!0}),U[W.name]=W.value);Object.keys(U).length>0&&(await ze.updateConfiguration(p.cwd,U),N.reportInfo(87,\"Migrated your project to the latest Yarn version \\u{1F680}\"),N.reportSeparator())});if(R.hasErrors())return R.exitCode()}let C=await Kr.find(r,{immutable:f,check:this.checkCache});if(!h)throw new ar(p.cwd,this.context.cwd);await p.restoreInstallState({restoreResolutions:!1});let S=r.get(\"enableHardenedMode\");S&&typeof r.sources.get(\"enableHardenedMode\")>\"u\"&&await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,includeFooter:!1},async R=>{R.reportWarning(0,\"Yarn detected that the current workflow is executed from a public pull request. For safety the hardened mode has been enabled.\"),R.reportWarning(0,`It will prevent malicious lockfile manipulations, in exchange for a slower install time. You can opt-out if necessary; check our ${he.applyHyperlink(r,\"documentation\",\"https://yarnpkg.com/features/security#hardened-mode\")} for more details.`),R.reportSeparator()}),(this.refreshLockfile??S)&&(p.lockfileNeedsRefresh=!0);let P=this.checkResolutions??S;return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout,forceSectionAlignment:!0,includeLogs:!0,includeVersion:!0},async R=>{await p.install({cache:C,report:R,immutable:c,checkResolutions:P,mode:this.mode})})).exitCode()}},Xlt=\"<<<<<<<\";async function Zlt(t,e){if(!t.projectCwd)return!1;let r=J.join(t.projectCwd,Er.lockfile);if(!await ce.existsPromise(r)||!(await ce.readFilePromise(r,\"utf8\")).includes(Xlt))return!1;if(e)throw new jt(47,\"Cannot autofix a lockfile when running an immutable install\");let a=await qr.execvp(\"git\",[\"rev-parse\",\"MERGE_HEAD\",\"HEAD\"],{cwd:t.projectCwd});if(a.code!==0&&(a=await qr.execvp(\"git\",[\"rev-parse\",\"REBASE_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0&&(a=await qr.execvp(\"git\",[\"rev-parse\",\"CHERRY_PICK_HEAD\",\"HEAD\"],{cwd:t.projectCwd})),a.code!==0)throw new jt(83,\"Git returned an error when trying to find the commits pertaining to the conflict\");let n=await Promise.all(a.stdout.trim().split(/\\n/).map(async f=>{let p=await qr.execvp(\"git\",[\"show\",`${f}:./${Er.lockfile}`],{cwd:t.projectCwd});if(p.code!==0)throw new jt(83,`Git returned an error when trying to access the lockfile content in ${f}`);try{return ls(p.stdout)}catch{throw new jt(46,\"A variant of the conflicting lockfile failed to parse\")}}));n=n.filter(f=>!!f.__metadata);for(let f of n){if(f.__metadata.version<7)for(let p of Object.keys(f)){if(p===\"__metadata\")continue;let h=G.parseDescriptor(p,!0),E=t.normalizeDependency(h),C=G.stringifyDescriptor(E);C!==p&&(f[C]=f[p],delete f[p])}for(let p of Object.keys(f)){if(p===\"__metadata\")continue;let h=f[p].checksum;typeof h>\"u\"||h.includes(\"/\")||(f[p].checksum=`${f.__metadata.cacheKey}/${h}`)}}let c=Object.assign({},...n);c.__metadata.version=`${Math.min(...n.map(f=>parseInt(f.__metadata.version??0)))}`,c.__metadata.cacheKey=\"merged\";for(let[f,p]of Object.entries(c))typeof p==\"string\"&&delete c[f];return await ce.changeFilePromise(r,nl(c),{automaticNewlines:!0}),!0}async function $lt(t,e){if(!t.projectCwd)return!1;let r=[],s=J.join(t.projectCwd,\".yarn/plugins/@yarnpkg\");return await ze.updateConfiguration(t.projectCwd,{plugins:n=>{if(!Array.isArray(n))return n;let c=n.filter(f=>{if(!f.path)return!0;let p=J.resolve(t.projectCwd,f.path),h=ov.has(f.spec)&&J.contains(s,p);return h&&r.push(p),!h});return c.length===0?ze.deleteProperty:c.length===n.length?n:c}},{immutable:e})?(await Promise.all(r.map(async n=>{await ce.removePromise(n)})),!0):!1}Ge();Dt();Yt();var BC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Link all workspaces belonging to the target projects to the current one\"});this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Also link private workspaces belonging to the target projects to the current one\"});this.relative=ge.Boolean(\"-r,--relative\",!1,{description:\"Link workspaces using relative paths instead of absolute paths\"});this.destinations=ge.Rest()}static{this.paths=[[\"link\"]]}static{this.usage=ot.Usage({description:\"connect the local project to another one\",details:\"\\n      This command will set a new `resolutions` field in the project-level manifest and point it to the workspace at the specified location (even if part of another project).\\n    \",examples:[[\"Register one or more remote workspaces for use in the current project\",\"$0 link ~/ts-loader ~/jest\"],[\"Register all workspaces from a remote project for use in the current project\",\"$0 link ~/jest --all\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=s.topLevelWorkspace,f=[];for(let p of this.destinations){let h=J.resolve(this.context.cwd,fe.toPortablePath(p)),E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(s.cwd===C.cwd)throw new nt(`Invalid destination '${p}'; Can't link the project to itself`);if(!S)throw new ar(C.cwd,h);if(this.all){let P=!1;for(let I of C.workspaces)I.manifest.name&&(!I.manifest.private||this.private)&&(f.push(I),P=!0);if(!P)throw new nt(`No workspace found to be linked in the target project: ${p}`)}else{if(!S.manifest.name)throw new nt(`The target workspace at '${p}' doesn't have a name and thus cannot be linked`);if(S.manifest.private&&!this.private)throw new nt(`The target workspace at '${p}' is marked private - use the --private flag to link it anyway`);f.push(S)}}for(let p of f){let h=G.stringifyIdent(p.anchoredLocator),E=this.relative?J.relative(s.cwd,p.cwd):p.cwd;c.manifest.resolutions.push({pattern:{descriptor:{fullName:h}},reference:`portal:${E}`})}return await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Yt();var vC=class extends ft{constructor(){super(...arguments);this.args=ge.Proxy()}static{this.paths=[[\"node\"]]}static{this.usage=ot.Usage({description:\"run node with the hook already setup\",details:`\n      This command simply runs Node. It also makes sure to call it in a way that's compatible with the current project (for example, on PnP projects the environment will be setup in such a way that PnP will be correctly injected into the environment).\n\n      The Node process will use the exact same version of Node as the one used to run Yarn itself, which might be a good way to ensure that your commands always use a consistent Node version.\n    `,examples:[[\"Run a Node script\",\"$0 node ./my-script.js\"]]})}async execute(){return this.cli.run([\"exec\",\"node\",...this.args])}};Ge();Yt();var SC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"plugin\",\"check\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"find all third-party plugins that differ from their own spec\",details:`\n      Check only the plugins from https.\n\n      If this command detects any plugin differences in the CI environment, it will throw an error.\n    `,examples:[[\"find all third-party plugins that differ from their own spec\",\"$0 plugin check\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await ze.findRcFiles(this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{for(let c of s)if(c.data?.plugins)for(let f of c.data.plugins){if(!f.checksum||!f.spec.match(/^https?:/))continue;let p=await nn.get(f.spec,{configuration:r}),h=Nn.makeHash(p);if(f.checksum===h)continue;let E=he.pretty(r,f.path,he.Type.PATH),C=he.pretty(r,f.spec,he.Type.URL),S=`${E} is different from the file provided by ${C}`;n.reportJson({...f,newChecksum:h}),n.reportError(0,S)}})).exitCode()}};Ge();Ge();Dt();Yt();var vye=Ie(\"os\");Ge();Dt();Yt();var Iye=Ie(\"os\");Ge();wc();Yt();var ect=\"https://raw.githubusercontent.com/yarnpkg/berry/master/plugins.yml\";async function Sm(t,e){let r=await nn.get(ect,{configuration:t}),s=ls(r.toString());return Object.fromEntries(Object.entries(s).filter(([a,n])=>!e||Fr.satisfiesWithPrereleases(e,n.range??\"<4.0.0-rc.1\")))}var DC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"plugin\",\"list\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"list the available official plugins\",details:\"\\n      This command prints the plugins available directly from the Yarn repository. Only those plugins can be referenced by name in `yarn plugin import`.\\n    \",examples:[[\"List the official plugins\",\"$0 plugin list\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{let n=await Sm(r,fn);for(let[c,{experimental:f,...p}]of Object.entries(n)){let h=c;f&&(h+=\" [experimental]\"),a.reportJson({name:c,experimental:f,...p}),a.reportInfo(null,h)}})).exitCode()}};var tct=/^[0-9]+$/,rct=process.platform===\"win32\";function Cye(t){return tct.test(t)?`pull/${t}/head`:t}var nct=({repository:t,branch:e},r)=>[[\"git\",\"init\",fe.fromPortablePath(r)],[\"git\",\"remote\",\"add\",\"origin\",t],[\"git\",\"fetch\",\"origin\",\"--depth=1\",Cye(e)],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"]],ict=({branch:t})=>[[\"git\",\"fetch\",\"origin\",\"--depth=1\",Cye(t),\"--force\"],[\"git\",\"reset\",\"--hard\",\"FETCH_HEAD\"],[\"git\",\"clean\",\"-dfx\",\"-e\",\"packages/yarnpkg-cli/bundles\"]],sct=({plugins:t,noMinify:e},r,s)=>[[\"yarn\",\"build:cli\",...new Array().concat(...t.map(a=>[\"--plugin\",J.resolve(s,a)])),...e?[\"--no-minify\"]:[],\"|\"],[rct?\"move\":\"mv\",\"packages/yarnpkg-cli/bundles/yarn.js\",fe.fromPortablePath(r),\"|\"]],bC=class extends ft{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.plugins=ge.Array(\"--plugin\",[],{description:\"An array of additional plugins that should be included in the bundle\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"If set, the bundle will be built but not added to the project\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a bundle for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.skipPlugins=ge.Boolean(\"--skip-plugins\",!1,{description:\"Skip updating the contrib plugins\"})}static{this.paths=[[\"set\",\"version\",\"from\",\"sources\"]]}static{this.usage=ot.Usage({description:\"build Yarn from master\",details:`\n      This command will clone the Yarn repository into a temporary folder, then build it. The resulting bundle will then be copied into the local project.\n\n      By default, it also updates all contrib plugins to the same commit the bundle is built from. This behavior can be disabled by using the \\`--skip-plugins\\` flag.\n    `,examples:[[\"Build Yarn from master\",\"$0 set version from sources\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.installPath<\"u\"?J.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):J.resolve(fe.toPortablePath((0,Iye.tmpdir)()),\"yarnpkg-sources\",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{await $5(this,{configuration:r,report:c,target:a}),c.reportSeparator(),c.reportInfo(0,\"Building a fresh bundle\"),c.reportSeparator();let f=await qr.execvp(\"git\",[\"rev-parse\",\"--short\",\"HEAD\"],{cwd:a,strict:!0}),p=J.join(a,`packages/yarnpkg-cli/bundles/yarn-${f.stdout.trim()}.js`);ce.existsSync(p)||(await $v(sct(this,p,a),{configuration:r,context:this.context,target:a}),c.reportSeparator());let h=await ce.readFilePromise(p);if(!this.dryRun){let{bundleVersion:E}=await X5(r,null,async()=>h,{report:c});this.skipPlugins||await oct(this,E,{project:s,report:c,target:a})}})).exitCode()}};async function $v(t,{configuration:e,context:r,target:s}){for(let[a,...n]of t){let c=n[n.length-1]===\"|\";if(c&&n.pop(),c)await qr.pipevp(a,n,{cwd:s,stdin:r.stdin,stdout:r.stdout,stderr:r.stderr,strict:!0});else{r.stdout.write(`${he.pretty(e,`  $ ${[a,...n].join(\" \")}`,\"grey\")}\n`);try{await qr.execvp(a,n,{cwd:s,strict:!0})}catch(f){throw r.stdout.write(f.stdout||f.stack),f}}}}async function $5(t,{configuration:e,report:r,target:s}){let a=!1;if(!t.force&&ce.existsSync(J.join(s,\".git\"))){r.reportInfo(0,\"Fetching the latest commits\"),r.reportSeparator();try{await $v(ict(t),{configuration:e,context:t.context,target:s}),a=!0}catch{r.reportSeparator(),r.reportWarning(0,\"Repository update failed; we'll try to regenerate it\")}}a||(r.reportInfo(0,\"Cloning the remote repository\"),r.reportSeparator(),await ce.removePromise(s),await ce.mkdirPromise(s,{recursive:!0}),await $v(nct(t,s),{configuration:e,context:t.context,target:s}))}async function oct(t,e,{project:r,report:s,target:a}){let n=await Sm(r.configuration,e),c=new Set(Object.keys(n));for(let f of r.configuration.plugins.keys())c.has(f)&&await eq(f,t,{project:r,report:s,target:a})}Ge();Ge();Dt();Yt();var wye=ut(Ai()),Bye=Ie(\"vm\");var PC=class extends ft{constructor(){super(...arguments);this.name=ge.String();this.checksum=ge.Boolean(\"--checksum\",!0,{description:\"Whether to care if this plugin is modified\"})}static{this.paths=[[\"plugin\",\"import\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"download a plugin\",details:`\n      This command downloads the specified plugin from its remote location and updates the configuration to reference it in further CLI invocations.\n\n      Three types of plugin references are accepted:\n\n      - If the plugin is stored within the Yarn repository, it can be referenced by name.\n      - Third-party plugins can be referenced directly through their public urls.\n      - Local plugins can be referenced by their path on the disk.\n\n      If the \\`--no-checksum\\` option is set, Yarn will no longer care if the plugin is modified.\n\n      Plugins cannot be downloaded from the npm registry, and aren't allowed to have dependencies (they need to be bundled into a single file, possibly thanks to the \\`@yarnpkg/builder\\` package).\n    `,examples:[['Download and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import @yarnpkg/plugin-exec\"],['Download and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import exec\"],[\"Download and activate a community plugin\",\"$0 plugin import https://example.org/path/to/plugin.js\"],[\"Activate a local plugin\",\"$0 plugin import ./path/to/plugin.js\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,stdout:this.context.stdout},async a=>{let{project:n}=await Tt.find(r,this.context.cwd),c,f;if(this.name.match(/^\\.{0,2}[\\\\/]/)||fe.isAbsolute(this.name)){let p=J.resolve(this.context.cwd,fe.toPortablePath(this.name));a.reportInfo(0,`Reading ${he.pretty(r,p,he.Type.PATH)}`),c=J.relative(n.cwd,p),f=await ce.readFilePromise(p)}else{let p;if(this.name.match(/^https?:/)){try{new URL(this.name)}catch{throw new jt(52,`Plugin specifier \"${this.name}\" is neither a plugin name nor a valid url`)}c=this.name,p=this.name}else{let h=G.parseLocator(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\"));if(h.reference!==\"unknown\"&&!wye.default.valid(h.reference))throw new jt(0,\"Official plugins only accept strict version references. Use an explicit URL if you wish to download them from another location.\");let E=G.stringifyIdent(h),C=await Sm(r,fn);if(!Object.hasOwn(C,E)){let S=`Couldn't find a plugin named ${G.prettyIdent(r,h)} on the remote registry.\n`;throw r.plugins.has(E)?S+=`A plugin named ${G.prettyIdent(r,h)} is already installed; possibly attempting to import a built-in plugin.`:S+=`Note that only the plugins referenced on our website (${he.pretty(r,\"https://github.com/yarnpkg/berry/blob/master/plugins.yml\",he.Type.URL)}) can be referenced by their name; any other plugin will have to be referenced through its public url (for example ${he.pretty(r,\"https://github.com/yarnpkg/berry/raw/master/packages/plugin-typescript/bin/%40yarnpkg/plugin-typescript.js\",he.Type.URL)}).`,new jt(51,S)}c=E,p=C[E].url,h.reference!==\"unknown\"?p=p.replace(/\\/master\\//,`/${E}/${h.reference}/`):fn!==null&&(p=p.replace(/\\/master\\//,`/@yarnpkg/cli/${fn}/`))}a.reportInfo(0,`Downloading ${he.pretty(r,p,\"green\")}`),f=await nn.get(p,{configuration:r})}await tq(c,f,{checksum:this.checksum,project:n,report:a})})).exitCode()}};async function tq(t,e,{checksum:r=!0,project:s,report:a}){let{configuration:n}=s,c={},f={exports:c};(0,Bye.runInNewContext)(e.toString(),{module:f,exports:c});let h=`.yarn/plugins/${f.exports.name}.cjs`,E=J.resolve(s.cwd,h);a.reportInfo(0,`Saving the new plugin in ${he.pretty(n,h,\"magenta\")}`),await ce.mkdirPromise(J.dirname(E),{recursive:!0}),await ce.writeFilePromise(E,e);let C={path:h,spec:t};r&&(C.checksum=Nn.makeHash(e)),await ze.addPlugin(s.cwd,[C])}var act=({pluginName:t,noMinify:e},r)=>[[\"yarn\",`build:${t}`,...e?[\"--no-minify\"]:[],\"|\"]],xC=class extends ft{constructor(){super(...arguments);this.installPath=ge.String(\"--path\",{description:\"The path where the repository should be cloned to\"});this.repository=ge.String(\"--repository\",\"https://github.com/yarnpkg/berry.git\",{description:\"The repository that should be cloned\"});this.branch=ge.String(\"--branch\",\"master\",{description:\"The branch of the repository that should be cloned\"});this.noMinify=ge.Boolean(\"--no-minify\",!1,{description:\"Build a plugin for development (debugging) - non-minified and non-mangled\"});this.force=ge.Boolean(\"-f,--force\",!1,{description:\"Always clone the repository instead of trying to fetch the latest commits\"});this.name=ge.String()}static{this.paths=[[\"plugin\",\"import\",\"from\",\"sources\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"build a plugin from sources\",details:`\n      This command clones the Yarn repository into a temporary folder, builds the specified contrib plugin and updates the configuration to reference it in further CLI invocations.\n\n      The plugins can be referenced by their short name if sourced from the official Yarn repository.\n    `,examples:[['Build and activate the \"@yarnpkg/plugin-exec\" plugin',\"$0 plugin import from sources @yarnpkg/plugin-exec\"],['Build and activate the \"@yarnpkg/plugin-exec\" plugin (shorthand)',\"$0 plugin import from sources exec\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.installPath<\"u\"?J.resolve(this.context.cwd,fe.toPortablePath(this.installPath)):J.resolve(fe.toPortablePath((0,vye.tmpdir)()),\"yarnpkg-sources\",Nn.makeHash(this.repository).slice(0,6));return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let{project:c}=await Tt.find(r,this.context.cwd),f=G.parseIdent(this.name.replace(/^((@yarnpkg\\/)?plugin-)?/,\"@yarnpkg/plugin-\")),p=G.stringifyIdent(f),h=await Sm(r,fn);if(!Object.hasOwn(h,p))throw new jt(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 $5(this,{configuration:r,report:n,target:s}),await eq(E,this,{project:c,report:n,target:s})})).exitCode()}};async function eq(t,{context:e,noMinify:r},{project:s,report:a,target:n}){let c=t.replace(/@yarnpkg\\//,\"\"),{configuration:f}=s;a.reportSeparator(),a.reportInfo(0,`Building a fresh ${c}`),a.reportSeparator(),await $v(act({pluginName:c,noMinify:r},n),{configuration:f,context:e,target:n}),a.reportSeparator();let p=J.resolve(n,`packages/${c}/bundles/${t}.js`),h=await ce.readFilePromise(p);await tq(t,h,{project:s,report:a})}Ge();Dt();Yt();var kC=class extends ft{constructor(){super(...arguments);this.name=ge.String()}static{this.paths=[[\"plugin\",\"remove\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"remove a plugin\",details:`\n      This command deletes the specified plugin from the .yarn/plugins folder and removes it from the configuration.\n\n      **Note:** The plugins have to be referenced by their name property, which can be obtained using the \\`yarn plugin runtime\\` command. Shorthands are not allowed.\n   `,examples:[[\"Remove a plugin imported from the Yarn repository\",\"$0 plugin remove @yarnpkg/plugin-typescript\"],[\"Remove a plugin imported from a local file\",\"$0 plugin remove my-local-plugin\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c=this.name,f=G.parseIdent(c);if(!r.plugins.has(c))throw new nt(`${G.prettyIdent(r,f)} isn't referenced by the current configuration`);let p=`.yarn/plugins/${c}.cjs`,h=J.resolve(s.cwd,p);ce.existsSync(h)&&(n.reportInfo(0,`Removing ${he.pretty(r,p,he.Type.PATH)}...`),await ce.removePromise(h)),n.reportInfo(0,\"Updating the configuration...\"),await ze.updateConfiguration(s.cwd,{plugins:E=>{if(!Array.isArray(E))return E;let C=E.filter(S=>S.path!==p);return C.length===0?ze.deleteProperty:C.length===E.length?E:C}})})).exitCode()}};Ge();Yt();var QC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"plugin\",\"runtime\"]]}static{this.usage=ot.Usage({category:\"Plugin-related commands\",description:\"list the active plugins\",details:`\n      This command prints the currently active plugins. Will be displayed both builtin plugins and external plugins.\n    `,examples:[[\"List the currently active plugins\",\"$0 plugin runtime\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async a=>{for(let n of r.plugins.keys()){let c=this.context.plugins.plugins.has(n),f=n;c&&(f+=\" [builtin]\"),a.reportJson({name:n,builtin:c}),a.reportInfo(null,`${f}`)}})).exitCode()}};Ge();Ge();Yt();var TC=class extends ft{constructor(){super(...arguments);this.idents=ge.Rest()}static{this.paths=[[\"rebuild\"]]}static{this.usage=ot.Usage({description:\"rebuild the project's native packages\",details:`\n      This command will automatically cause Yarn to forget about previous compilations of the given packages and to run them again.\n\n      Note that while Yarn forgets the compilation, the previous artifacts aren't erased from the filesystem and may affect the next builds (in good or bad). To avoid this, you may remove the .yarn/unplugged folder, or any other relevant location where packages might have been stored (Yarn may offer a way to do that automatically in the future).\n\n      By default all packages will be rebuilt, but you can filter the list by specifying the names of the packages you want to clear from memory.\n    `,examples:[[\"Rebuild all packages\",\"$0 rebuild\"],[\"Rebuild fsevents only\",\"$0 rebuild fsevents\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=new Set;for(let f of this.idents)c.add(G.parseIdent(f).identHash);if(await s.restoreInstallState({restoreResolutions:!1}),await s.resolveEverything({cache:n,report:new ki}),c.size>0)for(let f of s.storedPackages.values())c.has(f.identHash)&&(s.storedBuildState.delete(f.locatorHash),s.skippedBuilds.delete(f.locatorHash));else s.storedBuildState.clear(),s.skippedBuilds.clear();return await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ge();Ge();Ge();Yt();var rq=ut(Go());Ul();var RC=class extends ft{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:fo($l)});this.patterns=ge.Rest()}static{this.paths=[[\"remove\"]]}static{this.usage=ot.Usage({description:\"remove dependencies from the project\",details:`\n      This command will remove the packages matching the specified patterns from the current workspace.\n\n      If the \\`--mode=<mode>\\` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\n\n      - \\`skip-build\\` will not run the build scripts at all. Note that this is different from setting \\`enableScripts\\` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\n\n      - \\`update-lockfile\\` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\n\n      This command accepts glob patterns as arguments (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\n    `,examples:[[\"Remove a dependency from the current project\",\"$0 remove lodash\"],[\"Remove a dependency from all workspaces at once\",\"$0 remove lodash --all\"],[\"Remove all dependencies starting with `eslint-`\",\"$0 remove 'eslint-*'\"],[\"Remove all dependencies with the `@babel` scope\",\"$0 remove '@babel/*'\"],[\"Remove all dependencies matching `react-dom` or `react-helmet`\",\"$0 remove 'react-{dom,helmet}'\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.all?s.workspaces:[a],f=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],p=[],h=!1,E=[];for(let I of this.patterns){let R=!1,N=G.parseIdent(I);for(let U of c){let W=[...U.manifest.peerDependenciesMeta.keys()];for(let ee of(0,rq.default)(W,I))U.manifest.peerDependenciesMeta.delete(ee),h=!0,R=!0;for(let ee of f){let ie=U.manifest.getForScope(ee),ue=[...ie.values()].map(le=>G.stringifyIdent(le));for(let le of(0,rq.default)(ue,G.stringifyIdent(N))){let{identHash:me}=G.parseIdent(le),pe=ie.get(me);if(typeof pe>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");U.manifest[ee].delete(me),E.push([U,ee,pe]),h=!0,R=!0}}}R||p.push(I)}let C=p.length>1?\"Patterns\":\"Pattern\",S=p.length>1?\"don't\":\"doesn't\",P=this.all?\"any\":\"this\";if(p.length>0)throw new nt(`${C} ${he.prettyList(r,p,he.Type.CODE)} ${S} match any packages referenced by ${P} workspace`);return h?(await r.triggerMultipleHooks(I=>I.afterWorkspaceDependencyRemoval,E),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})):0}};Ge();Ge();Yt();var Sye=Ie(\"util\"),FC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"run\"]]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async c=>{let f=a.manifest.scripts,p=je.sortMap(f.keys(),C=>C),h={breakLength:1/0,colors:r.get(\"enableColors\"),maxArrayLength:2},E=p.reduce((C,S)=>Math.max(C,S.length),0);for(let[C,S]of f.entries())c.reportInfo(null,`${C.padEnd(E,\" \")}   ${(0,Sye.inspect)(S,h)}`),c.reportJson({name:C,script:S})})).exitCode()}};Ge();Ge();Yt();var NC=class extends ft{constructor(){super(...arguments);this.inspect=ge.String(\"--inspect\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.inspectBrk=ge.String(\"--inspect-brk\",!1,{tolerateBoolean:!0,description:\"Forwarded to the underlying Node process when executing a binary\"});this.topLevel=ge.Boolean(\"-T,--top-level\",!1,{description:\"Check the root workspace for scripts and/or binaries instead of the current one\"});this.binariesOnly=ge.Boolean(\"-B,--binaries-only\",!1,{description:\"Ignore any user defined scripts and only check for binaries\"});this.require=ge.String(\"--require\",{description:\"Forwarded to the underlying Node process when executing a binary\"});this.silent=ge.Boolean(\"--silent\",{hidden:!0});this.scriptName=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"run\"]]}static{this.usage=ot.Usage({description:\"run a script defined in the package.json\",details:`\n      This command will run a tool. The exact tool that will be executed will depend on the current state of your workspace:\n\n      - If the \\`scripts\\` field from your local package.json contains a matching script name, its definition will get executed.\n\n      - Otherwise, if one of the local workspace's dependencies exposes a binary with a matching name, this binary will get executed.\n\n      - Otherwise, if the specified name contains a colon character and if one of the workspaces in the project contains exactly one script with a matching name, then this script will get executed.\n\n      Whatever happens, the cwd of the spawned process will be the workspace that declares the script (which makes it possible to call commands cross-workspaces using the third syntax).\n    `,examples:[[\"Run the tests from the local workspace\",\"$0 run test\"],['Same thing, but without the \"run\" keyword',\"$0 test\"],[\"Inspect Webpack while running\",\"$0 run --inspect-brk webpack\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a,locator:n}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let c=this.topLevel?s.topLevelWorkspace.anchoredLocator:n;if(!this.binariesOnly&&await In.hasPackageScript(c,this.scriptName,{project:s}))return await In.executePackageScript(c,this.scriptName,this.args,{project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});let f=await In.getPackageAccessibleBinaries(c,{project:s});if(f.get(this.scriptName)){let h=[];return this.inspect&&(typeof this.inspect==\"string\"?h.push(`--inspect=${this.inspect}`):h.push(\"--inspect\")),this.inspectBrk&&(typeof this.inspectBrk==\"string\"?h.push(`--inspect-brk=${this.inspectBrk}`):h.push(\"--inspect-brk\")),this.require&&h.push(`--require=${this.require}`),await In.executePackageAccessibleBinary(c,this.scriptName,this.args,{cwd:this.context.cwd,project:s,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,nodeArgs:h,packageAccessibleBinaries:f})}if(!this.topLevel&&!this.binariesOnly&&a&&this.scriptName.includes(\":\")){let E=(await Promise.all(s.workspaces.map(async C=>C.manifest.scripts.has(this.scriptName)?C:null))).filter(C=>C!==null);if(E.length===1)return await In.executeWorkspaceScript(E[0],this.scriptName,this.args,{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})}if(this.topLevel)throw this.scriptName===\"node-gyp\"?new nt(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${G.prettyLocator(r,n)}). This typically happens because some package depends on \"node-gyp\" to build itself, but didn't list it in their dependencies. To fix that, please run \"yarn add node-gyp\" into your top-level workspace. You also can open an issue on the repository of the specified package to suggest them to use an optional peer dependency.`):new nt(`Couldn't find a script name \"${this.scriptName}\" in the top-level (used by ${G.prettyLocator(r,n)}).`);{if(this.scriptName===\"global\")throw new nt(\"The 'yarn global' commands have been removed in 2.x - consider using 'yarn dlx' or a third-party plugin instead\");let h=[this.scriptName].concat(this.args);for(let[E,C]of $I)for(let S of C)if(h.length>=S.length&&JSON.stringify(h.slice(0,S.length))===JSON.stringify(S))throw new nt(`Couldn't find a script named \"${this.scriptName}\", but a matching command can be found in the ${E} plugin. You can install it with \"yarn plugin import ${E}\".`);throw new nt(`Couldn't find a script named \"${this.scriptName}\".`)}}};Ge();Ge();Yt();var OC=class extends ft{constructor(){super(...arguments);this.descriptor=ge.String();this.resolution=ge.String()}static{this.paths=[[\"set\",\"resolution\"]]}static{this.usage=ot.Usage({description:\"enforce a package resolution\",details:'\\n      This command updates the resolution table so that `descriptor` is resolved by `resolution`.\\n\\n      Note that by default this command only affect the current resolution table - meaning that this \"manual override\" will disappear if you remove the lockfile, or if the package disappear from the table. If you wish to make the enforced resolution persist whatever happens, edit the `resolutions` field in your top-level manifest.\\n\\n      Note that no attempt is made at validating that `resolution` is a valid resolution entry for `descriptor`.\\n    ',examples:[[\"Force all instances of lodash@npm:^1.2.3 to resolve to 1.5.0\",\"$0 set resolution lodash@npm:^1.2.3 npm:1.5.0\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(await s.restoreInstallState({restoreResolutions:!1}),!a)throw new ar(s.cwd,this.context.cwd);let c=G.parseDescriptor(this.descriptor,!0),f=G.makeDescriptor(c,this.resolution);return s.storedDescriptors.set(c.descriptorHash,c),s.storedDescriptors.set(f.descriptorHash,f),s.resolutionAliases.set(c.descriptorHash,f.descriptorHash),await s.installWithNewReport({stdout:this.context.stdout},{cache:n})}};Ge();Dt();Yt();var Dye=ut(Go()),LC=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unlink all workspaces belonging to the target project from the current one\"});this.leadingArguments=ge.Rest()}static{this.paths=[[\"unlink\"]]}static{this.usage=ot.Usage({description:\"disconnect the local project from another one\",details:`\n      This command will remove any resolutions in the project-level manifest that would have been added via a yarn link with similar arguments.\n    `,examples:[[\"Unregister a remote workspace in the current project\",\"$0 unlink ~/ts-loader\"],[\"Unregister all workspaces from a remote project in the current project\",\"$0 unlink ~/jest --all\"],[\"Unregister all previously linked workspaces\",\"$0 unlink --all\"],[\"Unregister all workspaces matching a glob\",\"$0 unlink '@babel/*' 'pkg-{a,b}'\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);let c=s.topLevelWorkspace,f=new Set;if(this.leadingArguments.length===0&&this.all)for(let{pattern:p,reference:h}of c.manifest.resolutions)h.startsWith(\"portal:\")&&f.add(p.descriptor.fullName);if(this.leadingArguments.length>0)for(let p of this.leadingArguments){let h=J.resolve(this.context.cwd,fe.toPortablePath(p));if(je.isPathLike(p)){let E=await ze.find(h,this.context.plugins,{useRc:!1,strict:!1}),{project:C,workspace:S}=await Tt.find(E,h);if(!S)throw new ar(C.cwd,h);if(this.all){for(let P of C.workspaces)P.manifest.name&&f.add(G.stringifyIdent(P.anchoredLocator));if(f.size===0)throw new nt(\"No workspace found to be unlinked in the target project\")}else{if(!S.manifest.name)throw new nt(\"The target workspace doesn't have a name and thus cannot be unlinked\");f.add(G.stringifyIdent(S.anchoredLocator))}}else{let E=[...c.manifest.resolutions.map(({pattern:C})=>C.descriptor.fullName)];for(let C of(0,Dye.default)(E,p))f.add(C)}}return c.manifest.resolutions=c.manifest.resolutions.filter(({pattern:p})=>!f.has(p.descriptor.fullName)),await s.installWithNewReport({stdout:this.context.stdout,quiet:this.context.quiet},{cache:n})}};Ge();Ge();Ge();Yt();var bye=ut(Vv()),nq=ut(Go());Ul();var MC=class extends ft{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:fo($l)});this.patterns=ge.Rest()}static{this.paths=[[\"up\"]]}static{this.usage=ot.Usage({description:\"upgrade dependencies across the project\",details:\"\\n      This command upgrades the packages matching the list of specified patterns to their latest available version across the whole project (regardless of whether they're part of `dependencies` or `devDependencies` - `peerDependencies` won't be affected). This is a project-wide command: all workspaces will be upgraded in the process.\\n\\n      If `-R,--recursive` is set the command will change behavior and no other switch will be allowed. When operating under this mode `yarn up` will force all ranges matching the selected packages to be resolved again (often to the highest available versions) before being stored in the lockfile. It however won't touch your manifests anymore, so depending on your needs you might want to run both `yarn up` and `yarn up -R` to cover all bases.\\n\\n      If `-i,--interactive` is set (or if the `preferInteractive` settings is toggled on) the command will offer various choices, depending on the detected upgrade paths. Some upgrades require this flag in order to resolve ambiguities.\\n\\n      The, `-C,--caret`, `-E,--exact` and  `-T,--tilde` options have the same meaning as in the `add` command (they change the modifier used when the range is missing or a tag, and are ignored when the range is explicitly set).\\n\\n      If the `--mode=<mode>` option is set, Yarn will change which artifacts are generated. The modes currently supported are:\\n\\n      - `skip-build` will not run the build scripts at all. Note that this is different from setting `enableScripts` to false because the latter will disable build scripts, and thus affect the content of the artifacts generated on disk, whereas the former will just disable the build step - but not the scripts themselves, which just won't run.\\n\\n      - `update-lockfile` will skip the link step altogether, and only fetch packages that are missing from the lockfile (or that have no associated checksums). This mode is typically used by tools like Renovate or Dependabot to keep a lockfile up-to-date without incurring the full install cost.\\n\\n      Generally you can see `yarn up` as a counterpart to what was `yarn upgrade --latest` in Yarn 1 (ie it ignores the ranges previously listed in your manifests), but unlike `yarn upgrade` which only upgraded dependencies in the current workspace, `yarn up` will upgrade all workspaces at the same time.\\n\\n      This command accepts glob patterns as arguments (if valid Descriptors and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them.\\n\\n      **Note:** The ranges have to be static, only the package scopes and names can contain glob patterns.\\n    \",examples:[[\"Upgrade all instances of lodash to the latest release\",\"$0 up lodash\"],[\"Upgrade all instances of lodash to the latest release, but ask confirmation for each\",\"$0 up lodash -i\"],[\"Upgrade all instances of lodash to 1.2.3\",\"$0 up lodash@1.2.3\"],[\"Upgrade all instances of packages with the `@babel` scope to the latest release\",\"$0 up '@babel/*'\"],[\"Upgrade all instances of packages containing the word `jest` to the latest release\",\"$0 up '*jest*'\"],[\"Upgrade all instances of packages with the `@babel` scope to 7.0.0\",\"$0 up '@babel/*@7.0.0'\"]]})}static{this.schema=[tB(\"recursive\",qf.Forbids,[\"interactive\",\"exact\",\"tilde\",\"caret\"],{ignore:[void 0,!1]})]}async execute(){return this.recursive?await this.executeUpRecursive():await this.executeUpClassic()}async executeUpRecursive(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=[...s.storedDescriptors.values()],f=c.map(E=>G.stringifyIdent(E)),p=new Set;for(let E of this.patterns){if(G.parseDescriptor(E).range!==\"unknown\")throw new nt(\"Ranges aren't allowed when using --recursive\");for(let C of(0,nq.default)(f,E)){let S=G.parseIdent(C);p.add(S.identHash)}}let h=c.filter(E=>p.has(E.identHash));for(let E of h)s.storedDescriptors.delete(E.descriptorHash),s.storedResolutions.delete(E.descriptorHash);return await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}async executeUpClassic(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=this.fixed,f=r.isInteractive({interactive:this.interactive,stdout:this.context.stdout}),p=Kv(this,s),h=f?[\"keep\",\"reuse\",\"project\",\"latest\"]:[\"project\",\"latest\"],E=[],C=[];for(let N of this.patterns){let U=!1,W=G.parseDescriptor(N),ee=G.stringifyIdent(W);for(let ie of s.workspaces)for(let ue of[\"dependencies\",\"devDependencies\"]){let me=[...ie.manifest.getForScope(ue).values()].map(Be=>G.stringifyIdent(Be)),pe=ee===\"*\"?me:(0,nq.default)(me,ee);for(let Be of pe){let Ce=G.parseIdent(Be),g=ie.manifest[ue].get(Ce.identHash);if(typeof g>\"u\")throw new Error(\"Assertion failed: Expected the descriptor to be registered\");let we=G.makeDescriptor(Ce,W.range);E.push(Promise.resolve().then(async()=>[ie,ue,g,await zv(we,{project:s,workspace:ie,cache:n,target:ue,fixed:c,modifier:p,strategies:h})])),U=!0}}U||C.push(N)}if(C.length>1)throw new nt(`Patterns ${he.prettyList(r,C,he.Type.CODE)} don't match any packages referenced by any workspace`);if(C.length>0)throw new nt(`Pattern ${he.prettyList(r,C,he.Type.CODE)} doesn't match any packages referenced by any workspace`);let S=await Promise.all(E),P=await lA.start({configuration:r,stdout:this.context.stdout,suggestInstall:!1},async N=>{for(let[,,U,{suggestions:W,rejections:ee}]of S){let ie=W.filter(ue=>ue.descriptor!==null);if(ie.length===0){let[ue]=ee;if(typeof ue>\"u\")throw new Error(\"Assertion failed: Expected an error to have been set\");let le=this.cli.error(ue);s.configuration.get(\"enableNetwork\")?N.reportError(27,`${G.prettyDescriptor(r,U)} can't be resolved to a satisfying range\n\n${le}`):N.reportError(27,`${G.prettyDescriptor(r,U)} can't be resolved to a satisfying range (note: network resolution has been disabled)\n\n${le}`)}else ie.length>1&&!f&&N.reportError(27,`${G.prettyDescriptor(r,U)} has multiple possible upgrade strategies; use -i to disambiguate manually`)}});if(P.hasErrors())return P.exitCode();let I=!1,R=[];for(let[N,U,,{suggestions:W}]of S){let ee,ie=W.filter(pe=>pe.descriptor!==null),ue=ie[0].descriptor,le=ie.every(pe=>G.areDescriptorsEqual(pe.descriptor,ue));ie.length===1||le?ee=ue:(I=!0,{answer:ee}=await(0,bye.prompt)({type:\"select\",name:\"answer\",message:`Which range do you want to use in ${G.prettyWorkspace(r,N)} \\u276F ${U}?`,choices:W.map(({descriptor:pe,name:Be,reason:Ce})=>pe?{name:Be,hint:Ce,descriptor:pe}:{name:Be,hint:Ce,disabled:!0}),onCancel:()=>process.exit(130),result(pe){return this.find(pe,\"descriptor\")},stdin:this.context.stdin,stdout:this.context.stdout}));let me=N.manifest[U].get(ee.identHash);if(typeof me>\"u\")throw new Error(\"Assertion failed: This descriptor should have a matching entry\");if(me.descriptorHash!==ee.descriptorHash)N.manifest[U].set(ee.identHash,ee),R.push([N,U,me,ee]);else{let pe=r.makeResolver(),Be={project:s,resolver:pe},Ce=r.normalizeDependency(me),g=pe.bindDescriptor(Ce,N.anchoredLocator,Be);s.forgetResolution(g)}}return await r.triggerMultipleHooks(N=>N.afterWorkspaceDependencyReplacement,R),I&&this.context.stdout.write(`\n`),await s.installWithNewReport({stdout:this.context.stdout},{cache:n,mode:this.mode})}};Ge();Ge();Ge();Yt();var UC=class extends ft{constructor(){super(...arguments);this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"List, for each workspace, what are all the paths that lead to the dependency\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.peers=ge.Boolean(\"--peers\",!1,{description:\"Also print the peer dependencies that match the specified name\"});this.package=ge.String()}static{this.paths=[[\"why\"]]}static{this.usage=ot.Usage({description:\"display the reason why a package is needed\",details:`\n      This command prints the exact reasons why a package appears in the dependency tree.\n\n      If \\`-R,--recursive\\` is set, the listing will go in depth and will list, for each workspaces, what are all the paths that lead to the dependency. Note that the display is somewhat optimized in that it will not print the package listing twice for a single package, so if you see a leaf named \"Foo\" when looking for \"Bar\", it means that \"Foo\" already got printed higher in the tree.\n    `,examples:[[\"Explain why lodash is used in your project\",\"$0 why lodash\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=G.parseIdent(this.package).identHash,c=this.recursive?cct(s,n,{configuration:r,peers:this.peers}):lct(s,n,{configuration:r,peers:this.peers});xs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1})}};function lct(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.storedPackages.values(),f=>G.stringifyLocator(f)),n={},c={children:n};for(let f of a){let p={};for(let E of f.dependencies.values()){if(!s&&f.peerDependencies.has(E.identHash))continue;let C=t.storedResolutions.get(E.descriptorHash);if(!C)throw new Error(\"Assertion failed: The resolution should have been registered\");let S=t.storedPackages.get(C);if(!S)throw new Error(\"Assertion failed: The package should have been registered\");if(S.identHash!==e)continue;{let I=G.stringifyLocator(f);n[I]={value:[f,he.Type.LOCATOR],children:p}}let P=G.stringifyLocator(S);p[P]={value:[{descriptor:E,locator:S},he.Type.DEPENDENT]}}}return c}function cct(t,e,{configuration:r,peers:s}){let a=je.sortMap(t.workspaces,S=>G.stringifyLocator(S.anchoredLocator)),n=new Set,c=new Set,f=S=>{if(n.has(S.locatorHash))return c.has(S.locatorHash);if(n.add(S.locatorHash),S.identHash===e)return c.add(S.locatorHash),!0;let P=!1;S.identHash===e&&(P=!0);for(let I of S.dependencies.values()){if(!s&&S.peerDependencies.has(I.identHash))continue;let R=t.storedResolutions.get(I.descriptorHash);if(!R)throw new Error(\"Assertion failed: The resolution should have been registered\");let N=t.storedPackages.get(R);if(!N)throw new Error(\"Assertion failed: The package should have been registered\");f(N)&&(P=!0)}return P&&c.add(S.locatorHash),P};for(let S of a)f(S.anchoredPackage);let p=new Set,h={},E={children:h},C=(S,P,I)=>{if(!c.has(S.locatorHash))return;let R=I!==null?he.tuple(he.Type.DEPENDENT,{locator:S,descriptor:I}):he.tuple(he.Type.LOCATOR,S),N={},U={value:R,children:N},W=G.stringifyLocator(S);if(P[W]=U,!(I!==null&&t.tryWorkspaceByLocator(S))&&!p.has(S.locatorHash)){p.add(S.locatorHash);for(let ee of S.dependencies.values()){if(!s&&S.peerDependencies.has(ee.identHash))continue;let ie=t.storedResolutions.get(ee.descriptorHash);if(!ie)throw new Error(\"Assertion failed: The resolution should have been registered\");let ue=t.storedPackages.get(ie);if(!ue)throw new Error(\"Assertion failed: The package should have been registered\");C(ue,N,ee)}}};for(let S of a)C(S.anchoredPackage,h,null);return E}Ge();var pq={};Vt(pq,{GitFetcher:()=>tS,GitResolver:()=>rS,default:()=>kct,gitUtils:()=>ka});Ge();Dt();var ka={};Vt(ka,{TreeishProtocols:()=>eS,clone:()=>Aq,fetchBase:()=>Jye,fetchChangedFiles:()=>Kye,fetchChangedWorkspaces:()=>Pct,fetchRoot:()=>Vye,isGitUrl:()=>jC,lsRemote:()=>Yye,normalizeLocator:()=>bct,normalizeRepoUrl:()=>_C,resolveUrl:()=>fq,splitRepoUrl:()=>W0,validateRepoUrl:()=>uq});Ge();Dt();Yt();ql();var qye=ut(Hye()),HC=ut(Ie(\"querystring\")),lq=ut(Ai());function aq(t,e,r){let s=t.indexOf(r);return t.lastIndexOf(e,s>-1?s:1/0)}function jye(t){try{return new URL(t)}catch{return}}function Sct(t){let e=aq(t,\"@\",\"#\"),r=aq(t,\":\",\"#\");return r>e&&(t=`${t.slice(0,r)}/${t.slice(r+1)}`),aq(t,\":\",\"#\")===-1&&t.indexOf(\"//\")===-1&&(t=`ssh://${t}`),t}function Gye(t){return jye(t)||jye(Sct(t))}function _C(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=Gye(t);r&&(t=r.href),t=t.replace(/^git\\+([^:]+):/,\"$1:\")}return t}function Wye(){return{...process.env,GIT_SSH_COMMAND:process.env.GIT_SSH_COMMAND||`${process.env.GIT_SSH||\"ssh\"} -o BatchMode=yes`}}var Dct=[/^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\\/(.+)?$/],eS=(a=>(a.Commit=\"commit\",a.Head=\"head\",a.Tag=\"tag\",a.Semver=\"semver\",a))(eS||{});function jC(t){return t?Dct.some(e=>!!t.match(e)):!1}function W0(t){t=_C(t);let e=t.indexOf(\"#\");if(e===-1)return{repo:t,treeish:{protocol:\"head\",request:\"HEAD\"},extra:{}};let r=t.slice(0,e),s=t.slice(e+1);if(s.match(/^[a-z]+=/)){let a=HC.default.parse(s);for(let[p,h]of Object.entries(a))if(typeof h!=\"string\")throw new Error(`Assertion failed: The ${p} parameter must be a literal string`);let n=Object.values(eS).find(p=>Object.hasOwn(a,p)),[c,f]=typeof n<\"u\"?[n,a[n]]:[\"head\",\"HEAD\"];for(let p of Object.values(eS))delete a[p];return{repo:r,treeish:{protocol:c,request:f},extra:a}}else{let a=s.indexOf(\":\"),[n,c]=a===-1?[null,s]:[s.slice(0,a),s.slice(a+1)];return{repo:r,treeish:{protocol:n,request:c},extra:{}}}}function bct(t){return G.makeLocator(t,_C(t.reference))}function uq(t,{configuration:e}){let r=_C(t,{git:!0});if(!nn.getNetworkSettings(`https://${(0,qye.default)(r).resource}`,{configuration:e}).enableNetwork)throw new jt(80,`Request to '${r}' has been blocked because of your configuration settings`);return r}async function Yye(t,e){let r=uq(t,{configuration:e}),s=await cq(\"listing refs\",[\"ls-remote\",r],{cwd:e.startingCwd,env:Wye()},{configuration:e,normalizedRepoUrl:r}),a=new Map,n=/^([a-f0-9]{40})\\t([^\\n]+)/gm,c;for(;(c=n.exec(s.stdout))!==null;)a.set(c[2],c[1]);return a}async function fq(t,e){let{repo:r,treeish:{protocol:s,request:a},extra:n}=W0(t),c=await Yye(r,e),f=(h,E)=>{switch(h){case\"commit\":{if(!E.match(/^[a-f0-9]{40}$/))throw new Error(\"Invalid commit hash\");return HC.default.stringify({...n,commit:E})}case\"head\":{let C=c.get(E===\"HEAD\"?E:`refs/heads/${E}`);if(typeof C>\"u\")throw new Error(`Unknown head (\"${E}\")`);return HC.default.stringify({...n,commit:C})}case\"tag\":{let C=c.get(`refs/tags/${E}`);if(typeof C>\"u\")throw new Error(`Unknown tag (\"${E}\")`);return HC.default.stringify({...n,commit:C})}case\"semver\":{let C=Fr.validRange(E);if(!C)throw new Error(`Invalid range (\"${E}\")`);let S=new Map([...c.entries()].filter(([I])=>I.startsWith(\"refs/tags/\")).map(([I,R])=>[lq.default.parse(I.slice(10)),R]).filter(I=>I[0]!==null)),P=lq.default.maxSatisfying([...S.keys()],C);if(P===null)throw new Error(`No matching range (\"${E}\")`);return HC.default.stringify({...n,commit:S.get(P)})}case null:{let C;if((C=p(\"commit\",E))!==null||(C=p(\"tag\",E))!==null||(C=p(\"head\",E))!==null)return C;throw E.match(/^[a-f0-9]+$/)?new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head - if a commit, use the 40-characters commit hash`):new Error(`Couldn't resolve \"${E}\" as either a commit, a tag, or a head`)}default:throw new Error(`Invalid Git resolution protocol (\"${h}\")`)}},p=(h,E)=>{try{return f(h,E)}catch{return null}};return _C(`${r}#${f(s,a)}`)}async function Aq(t,e){return await e.getLimit(\"cloneConcurrency\")(async()=>{let{repo:r,treeish:{protocol:s,request:a}}=W0(t);if(s!==\"commit\")throw new Error(\"Invalid treeish protocol when cloning\");let n=uq(r,{configuration:e}),c=await ce.mktempPromise(),f={cwd:c,env:Wye()};return await cq(\"cloning the repository\",[\"clone\",\"-c\",\"core.autocrlf=false\",n,fe.fromPortablePath(c)],f,{configuration:e,normalizedRepoUrl:n}),await cq(\"switching branch\",[\"checkout\",`${a}`],f,{configuration:e,normalizedRepoUrl:n}),c})}async function Vye(t){let e,r=t;do{if(e=r,await ce.existsPromise(J.join(e,\".git\")))return e;r=J.dirname(e)}while(r!==e);return null}async function Jye(t,{baseRefs:e}){if(e.length===0)throw new nt(\"Can't run this command with zero base refs specified.\");let r=[];for(let f of e){let{code:p}=await qr.execvp(\"git\",[\"merge-base\",f,\"HEAD\"],{cwd:t});p===0&&r.push(f)}if(r.length===0)throw new nt(`No ancestor could be found between any of HEAD and ${e.join(\", \")}`);let{stdout:s}=await qr.execvp(\"git\",[\"merge-base\",\"HEAD\",...r],{cwd:t,strict:!0}),a=s.trim(),{stdout:n}=await qr.execvp(\"git\",[\"show\",\"--quiet\",\"--pretty=format:%s\",a],{cwd:t,strict:!0}),c=n.trim();return{hash:a,title:c}}async function Kye(t,{base:e,project:r}){let s=je.buildIgnorePattern(r.configuration.get(\"changesetIgnorePatterns\")),{stdout:a}=await qr.execvp(\"git\",[\"diff\",\"--name-only\",`${e}`],{cwd:t,strict:!0}),n=a.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>J.resolve(t,fe.toPortablePath(h))),{stdout:c}=await qr.execvp(\"git\",[\"ls-files\",\"--others\",\"--exclude-standard\"],{cwd:t,strict:!0}),f=c.split(/\\r\\n|\\r|\\n/).filter(h=>h.length>0).map(h=>J.resolve(t,fe.toPortablePath(h))),p=[...new Set([...n,...f].sort())];return s?p.filter(h=>!J.relative(r.cwd,h).match(s)):p}async function Pct({ref:t,project:e}){if(e.configuration.projectCwd===null)throw new nt(\"This command can only be run from within a Yarn project\");let r=[J.resolve(e.cwd,Er.lockfile),J.resolve(e.cwd,e.configuration.get(\"cacheFolder\")),J.resolve(e.cwd,e.configuration.get(\"installStatePath\")),J.resolve(e.cwd,e.configuration.get(\"virtualFolder\"))];await e.configuration.triggerHook(c=>c.populateYarnPaths,e,c=>{c!=null&&r.push(c)});let s=await Vye(e.configuration.projectCwd);if(s==null)throw new nt(\"This command can only be run on Git repositories\");let a=await Jye(s,{baseRefs:typeof t==\"string\"?[t]:e.configuration.get(\"changesetBaseRefs\")}),n=await Kye(s,{base:a.hash,project:e});return new Set(je.mapAndFilter(n,c=>{let f=e.tryWorkspaceByFilePath(c);return f===null?je.mapAndFilter.skip:r.some(p=>c.startsWith(p))?je.mapAndFilter.skip:f}))}async function cq(t,e,r,{configuration:s,normalizedRepoUrl:a}){try{return await qr.execvp(\"git\",e,{...r,strict:!0})}catch(n){if(!(n instanceof qr.ExecError))throw n;let c=n.reportExtra,f=n.stderr.toString();throw new jt(1,`Failed ${t}`,p=>{p.reportError(1,`  ${he.prettyField(s,{label:\"Repository URL\",value:he.tuple(he.Type.URL,a)})}`);for(let h of f.matchAll(/^(.+?): (.*)$/gm)){let[,E,C]=h;E=E.toLowerCase();let S=E===\"error\"?\"Error\":`${bB(E)} Error`;p.reportError(1,`  ${he.prettyField(s,{label:S,value:he.tuple(he.Type.NO_HINT,C)})}`)}c?.(p)})}}var tS=class{supports(e,r){return jC(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,a=new Map(r.checksums);a.set(e.locatorHash,s);let n={...r,checksums:a},c=await this.downloadHosted(e,n);if(c!==null)return c;let[f,p,h]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.prettyLocator(r.project.configuration,e)} can't be found in the cache and will be fetched from the remote repository`),loader:()=>this.cloneFromRemote(e,n),...r.cacheOptions});return{packageFs:f,releaseFs:p,prefixPath:G.getIdentVendorPath(e),checksum:h}}async downloadHosted(e,r){return r.project.configuration.reduceHook(s=>s.fetchHostedRepository,null,e,r)}async cloneFromRemote(e,r){let s=W0(e.reference),a=await Aq(e.reference,r.project.configuration),n=J.resolve(a,s.extra.cwd??vt.dot),c=J.join(n,\"package.tgz\");await In.prepareExternalProject(n,c,{configuration:r.project.configuration,report:r.report,workspace:s.extra.workspace,locator:e});let f=await ce.readFilePromise(c);return await je.releaseAfterUseAsync(async()=>await ps.convertToZip(f,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1}))}};Ge();Ge();var rS=class{supportsDescriptor(e,r){return jC(e.range)}supportsLocator(e,r){return jC(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=await fq(e.range,s.project.configuration);return[G.makeLocator(e,a)]}async getSatisfying(e,r,s,a){let n=W0(e.range);return{locators:s.filter(f=>{if(f.identHash!==e.identHash)return!1;let p=W0(f.reference);return!(n.repo!==p.repo||n.treeish.protocol===\"commit\"&&n.treeish.request!==p.treeish.request)}),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var xct={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:[tS],resolvers:[rS]};var kct=xct;Yt();var GC=class extends ft{constructor(){super(...arguments);this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Find packages via dependencies/devDependencies instead of using the workspaces field\"});this.noPrivate=ge.Boolean(\"--no-private\",{description:\"Exclude workspaces that have the private field set to true\"});this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also return the cross-dependencies between workspaces\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"workspaces\",\"list\"]]}static{this.usage=ot.Usage({category:\"Workspace-related commands\",description:\"list all available workspaces\",details:\"\\n      This command will print the list of all workspaces in the project.\\n\\n      - If `--since` is set, Yarn will only list workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `--no-private` is set, Yarn will not list any workspaces that have the `private` field set to `true`.\\n\\n      - If both the `-v,--verbose` and `--json` options are set, Yarn will also return the cross-dependencies between each workspaces (useful when you wish to automatically generate Buck / Bazel rules).\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);return(await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async n=>{let c=this.since?await ka.fetchChangedWorkspaces({ref:this.since,project:s}):s.workspaces,f=new Set(c);if(this.recursive)for(let p of[...c].map(h=>h.getRecursiveWorkspaceDependents()))for(let h of p)f.add(h);for(let p of f){let{manifest:h}=p;if(h.private&&this.noPrivate)continue;let E;if(this.verbose){let C=new Set,S=new Set;for(let P of Ut.hardDependencies)for(let[I,R]of h.getForScope(P)){let N=s.tryWorkspaceByDescriptor(R);N===null?s.workspacesByIdent.has(I)&&S.add(R):C.add(N)}E={workspaceDependencies:Array.from(C).map(P=>P.relativeCwd),mismatchedWorkspaceDependencies:Array.from(S).map(P=>G.stringifyDescriptor(P))}}n.reportInfo(null,`${p.relativeCwd}`),n.reportJson({location:p.relativeCwd,name:h.name?G.stringifyIdent(h.name):null,...E})}})).exitCode()}};Ge();Ge();Yt();var qC=class extends ft{constructor(){super(...arguments);this.workspaceName=ge.String();this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"workspace\"]]}static{this.usage=ot.Usage({category:\"Workspace-related commands\",description:\"run a command within the specified workspace\",details:`\n      This command will run a given sub-command on a single workspace.\n    `,examples:[[\"Add a package to a single workspace\",\"yarn workspace components add -D react\"],[\"Run build script on a single workspace\",\"yarn workspace components run build\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=s.workspaces,c=new Map(n.map(p=>[G.stringifyIdent(p.anchoredLocator),p])),f=c.get(this.workspaceName);if(f===void 0){let p=Array.from(c.keys()).sort();throw new nt(`Workspace '${this.workspaceName}' not found. Did you mean any of the following:\n  - ${p.join(`\n  - `)}?`)}return this.cli.run([this.commandName,...this.args],{cwd:f.cwd})}};var Qct={configuration:{enableImmutableInstalls:{description:\"If true (the default on CI), prevents the install command from modifying the lockfile\",type:\"BOOLEAN\",default:zye.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:[aC,lC,cC,uC,OC,bC,EC,GC,pC,hC,gC,dC,sC,oC,fC,AC,mC,yC,IC,CC,wC,BC,LC,vC,SC,xC,PC,kC,DC,QC,TC,RC,FC,NC,MC,UC,qC]},Tct=Qct;var yq={};Vt(yq,{default:()=>Oct});Ge();Ge();var gq=\"catalog:\";var dq=t=>t.startsWith(gq),Rct=t=>t.range.slice(gq.length)||null,Xye=t=>t===null?\"default catalog\":`catalog \"${t}\"`,Fct=t=>t.scope?`@${t.scope}/${t.name}`:t.name,mq=(t,e,r,s)=>{let a=Rct(e),n;if(a===null)n=t.configuration.get(\"catalog\");else try{let E=t.configuration.get(\"catalogs\");E&&(n=E.get(a))}catch{n=void 0}if(!n||n.size===0)throw new jt(82,`${G.prettyDescriptor(t.configuration,e)}: ${Xye(a)} not found or empty`);let c=Fct(e),f=n.get(c);if(!f)throw new jt(82,`${G.prettyDescriptor(t.configuration,e)}: entry not found in ${Xye(a)}`);let p=t.configuration.normalizeDependency(G.makeDescriptor(e,f));return r.supportsDescriptor(p,s)?r.bindDescriptor(p,t.topLevelWorkspace.anchoredLocator,s):p};var Nct={configuration:{catalog:{description:\"The default catalog of packages\",type:\"MAP\",valueDefinition:{description:\"The catalog of packages\",type:\"STRING\"}},catalogs:{description:\"Named catalogs of packages\",type:\"MAP\",valueDefinition:{description:\"A named catalog\",type:\"MAP\",valueDefinition:{description:\"Package version in the catalog\",type:\"STRING\"}}}},hooks:{beforeWorkspacePacking:(t,e)=>{let r=t.project,s=r.configuration.makeResolver(),a={project:r,resolver:s,report:new ki};for(let n of Ut.allDependencies){let c=e[n];if(c)for(let[f,p]of Object.entries(c)){if(typeof p!=\"string\"||!dq(p))continue;let h=G.parseIdent(f),E=G.makeDescriptor(h,p),C=mq(r,E,s,a),{protocol:S,source:P,params:I,selector:R}=G.parseRange(G.convertToManifestRange(C.range));S===t.project.configuration.get(\"defaultProtocol\")&&(S=null),c[f]=G.makeRange({protocol:S,source:P,params:I,selector:R})}}},reduceDependency:async(t,e,r,s,{resolver:a,resolveOptions:n})=>dq(t.range)?mq(e,t,a,n):t}},Oct=Nct;var Bq={};Vt(Bq,{default:()=>Mct});Ge();var Qt={optional:!0},Eq=[[\"@tailwindcss/aspect-ratio@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@tailwindcss/line-clamp@<0.2.1\",{peerDependencies:{tailwindcss:\"^2.0.2\"}}],[\"@fullhuman/postcss-purgecss@3.1.3 || 3.1.3-alpha.0\",{peerDependencies:{postcss:\"^8.0.0\"}}],[\"@samverschueren/stream-to-observable@<0.3.1\",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],[\"any-observable@<0.5.1\",{peerDependenciesMeta:{rxjs:Qt,zenObservable:Qt}}],[\"@pm2/agent@<1.0.4\",{dependencies:{debug:\"*\"}}],[\"debug@<4.2.0\",{peerDependenciesMeta:{\"supports-color\":Qt}}],[\"got@<11\",{dependencies:{\"@types/responselike\":\"^1.0.0\",\"@types/keyv\":\"^3.1.1\"}}],[\"cacheable-lookup@<4.1.2\",{dependencies:{\"@types/keyv\":\"^3.1.1\"}}],[\"http-link-dataloader@*\",{peerDependencies:{graphql:\"^0.13.1 || ^14.0.0\"}}],[\"typescript-language-server@*\",{dependencies:{\"vscode-jsonrpc\":\"^5.0.1\",\"vscode-languageserver-protocol\":\"^3.15.0\"}}],[\"postcss-syntax@*\",{peerDependenciesMeta:{\"postcss-html\":Qt,\"postcss-jsx\":Qt,\"postcss-less\":Qt,\"postcss-markdown\":Qt,\"postcss-scss\":Qt}}],[\"jss-plugin-rule-value-function@<=10.1.1\",{dependencies:{\"tiny-warning\":\"^1.0.2\"}}],[\"ink-select-input@<4.1.0\",{peerDependencies:{react:\"^16.8.2\"}}],[\"license-webpack-plugin@<2.3.18\",{peerDependenciesMeta:{webpack:Qt}}],[\"snowpack@>=3.3.0\",{dependencies:{\"node-gyp\":\"^7.1.0\"}}],[\"promise-inflight@*\",{peerDependenciesMeta:{bluebird:Qt}}],[\"reactcss@*\",{peerDependencies:{react:\"*\"}}],[\"react-color@<=2.19.0\",{peerDependencies:{react:\"*\"}}],[\"gatsby-plugin-i18n@*\",{dependencies:{ramda:\"^0.24.1\"}}],[\"useragent@^2.0.0\",{dependencies:{request:\"^2.88.0\",yamlparser:\"0.0.x\",semver:\"5.5.x\"}}],[\"@apollographql/apollo-tools@<=0.5.2\",{peerDependencies:{graphql:\"^14.2.1 || ^15.0.0\"}}],[\"material-table@^2.0.0\",{dependencies:{\"@babel/runtime\":\"^7.11.2\"}}],[\"@babel/parser@*\",{dependencies:{\"@babel/types\":\"^7.8.3\"}}],[\"fork-ts-checker-webpack-plugin@<=6.3.4\",{peerDependencies:{eslint:\">= 6\",typescript:\">= 2.7\",webpack:\">= 4\",\"vue-template-compiler\":\"*\"},peerDependenciesMeta:{eslint:Qt,\"vue-template-compiler\":Qt}}],[\"rc-animate@<=3.1.1\",{peerDependencies:{react:\">=16.9.0\",\"react-dom\":\">=16.9.0\"}}],[\"react-bootstrap-table2-paginator@*\",{dependencies:{classnames:\"^2.2.6\"}}],[\"react-draggable@<=4.4.3\",{peerDependencies:{react:\">= 16.3.0\",\"react-dom\":\">= 16.3.0\"}}],[\"apollo-upload-client@<14\",{peerDependencies:{graphql:\"14 - 15\"}}],[\"react-instantsearch-core@<=6.7.0\",{peerDependencies:{algoliasearch:\">= 3.1 < 5\"}}],[\"react-instantsearch-dom@<=6.7.0\",{dependencies:{\"react-fast-compare\":\"^3.0.0\"}}],[\"ws@<7.2.1\",{peerDependencies:{bufferutil:\"^4.0.1\",\"utf-8-validate\":\"^5.0.2\"},peerDependenciesMeta:{bufferutil:Qt,\"utf-8-validate\":Qt}}],[\"react-portal@<4.2.2\",{peerDependencies:{\"react-dom\":\"^15.0.0-0 || ^16.0.0-0 || ^17.0.0-0\"}}],[\"react-scripts@<=4.0.1\",{peerDependencies:{react:\"*\"}}],[\"testcafe@<=1.10.1\",{dependencies:{\"@babel/plugin-transform-for-of\":\"^7.12.1\",\"@babel/runtime\":\"^7.12.5\"}}],[\"testcafe-legacy-api@<=4.2.0\",{dependencies:{\"testcafe-hammerhead\":\"^17.0.1\",\"read-file-relative\":\"^1.2.0\"}}],[\"@google-cloud/firestore@<=4.9.3\",{dependencies:{protobufjs:\"^6.8.6\"}}],[\"gatsby-source-apiserver@*\",{dependencies:{\"babel-polyfill\":\"^6.26.0\"}}],[\"@webpack-cli/package-utils@<=1.0.1-alpha.4\",{dependencies:{\"cross-spawn\":\"^7.0.3\"}}],[\"gatsby-remark-prismjs@<3.3.28\",{dependencies:{lodash:\"^4\"}}],[\"gatsby-plugin-favicon@*\",{peerDependencies:{webpack:\"*\"}}],[\"gatsby-plugin-sharp@<=4.6.0-next.3\",{dependencies:{debug:\"^4.3.1\"}}],[\"gatsby-react-router-scroll@<=5.6.0-next.0\",{dependencies:{\"prop-types\":\"^15.7.2\"}}],[\"@rebass/forms@*\",{dependencies:{\"@styled-system/should-forward-prop\":\"^5.0.0\"},peerDependencies:{react:\"^16.8.6\"}}],[\"rebass@*\",{peerDependencies:{react:\"^16.8.6\"}}],[\"@ant-design/react-slick@<=0.28.3\",{peerDependencies:{react:\">=16.0.0\"}}],[\"mqtt@<4.2.7\",{dependencies:{duplexify:\"^4.1.1\"}}],[\"vue-cli-plugin-vuetify@<=2.0.3\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":Qt,\"vuetify-loader\":Qt}}],[\"vue-cli-plugin-vuetify@<=2.0.4\",{dependencies:{\"null-loader\":\"^3.0.0\"}}],[\"vue-cli-plugin-vuetify@>=2.4.3\",{peerDependencies:{vue:\"*\"}}],[\"@vuetify/cli-plugin-utils@<=0.0.4\",{dependencies:{semver:\"^6.3.0\"},peerDependenciesMeta:{\"sass-loader\":Qt}}],[\"@vue/cli-plugin-typescript@<=5.0.0-alpha.0\",{dependencies:{\"babel-loader\":\"^8.1.0\"}}],[\"@vue/cli-plugin-typescript@<=5.0.0-beta.0\",{dependencies:{\"@babel/core\":\"^7.12.16\"},peerDependencies:{\"vue-template-compiler\":\"^2.0.0\"},peerDependenciesMeta:{\"vue-template-compiler\":Qt}}],[\"cordova-ios@<=6.3.0\",{dependencies:{underscore:\"^1.9.2\"}}],[\"cordova-lib@<=10.0.1\",{dependencies:{underscore:\"^1.9.2\"}}],[\"git-node-fs@*\",{peerDependencies:{\"js-git\":\"^0.7.8\"},peerDependenciesMeta:{\"js-git\":Qt}}],[\"consolidate@<0.16.0\",{peerDependencies:{mustache:\"^3.0.0\"},peerDependenciesMeta:{mustache:Qt}}],[\"consolidate@<=0.16.0\",{peerDependencies:{velocityjs:\"^2.0.1\",tinyliquid:\"^0.2.34\",\"liquid-node\":\"^3.0.1\",jade:\"^1.11.0\",\"then-jade\":\"*\",dust:\"^0.3.0\",\"dustjs-helpers\":\"^1.7.4\",\"dustjs-linkedin\":\"^2.7.5\",swig:\"^1.4.2\",\"swig-templates\":\"^2.0.3\",\"razor-tmpl\":\"^1.3.1\",atpl:\">=0.7.6\",liquor:\"^0.0.5\",twig:\"^1.15.2\",ejs:\"^3.1.5\",eco:\"^1.1.0-rc-3\",jazz:\"^0.0.18\",jqtpl:\"~1.1.0\",hamljs:\"^0.6.2\",hamlet:\"^0.3.3\",whiskers:\"^0.4.0\",\"haml-coffee\":\"^1.14.1\",\"hogan.js\":\"^3.0.2\",templayed:\">=0.2.3\",handlebars:\"^4.7.6\",underscore:\"^1.11.0\",lodash:\"^4.17.20\",pug:\"^3.0.0\",\"then-pug\":\"*\",qejs:\"^3.0.5\",walrus:\"^0.10.1\",mustache:\"^4.0.1\",just:\"^0.1.8\",ect:\"^0.5.9\",mote:\"^0.2.0\",toffee:\"^0.3.6\",dot:\"^1.1.3\",\"bracket-template\":\"^1.1.5\",ractive:\"^1.3.12\",nunjucks:\"^3.2.2\",htmling:\"^0.0.8\",\"babel-core\":\"^6.26.3\",plates:\"~0.4.11\",\"react-dom\":\"^16.13.1\",react:\"^16.13.1\",\"arc-templates\":\"^0.5.3\",vash:\"^0.13.0\",slm:\"^2.0.0\",marko:\"^3.14.4\",teacup:\"^2.0.0\",\"coffee-script\":\"^1.12.7\",squirrelly:\"^5.1.0\",twing:\"^5.0.2\"},peerDependenciesMeta:{velocityjs:Qt,tinyliquid:Qt,\"liquid-node\":Qt,jade:Qt,\"then-jade\":Qt,dust:Qt,\"dustjs-helpers\":Qt,\"dustjs-linkedin\":Qt,swig:Qt,\"swig-templates\":Qt,\"razor-tmpl\":Qt,atpl:Qt,liquor:Qt,twig:Qt,ejs:Qt,eco:Qt,jazz:Qt,jqtpl:Qt,hamljs:Qt,hamlet:Qt,whiskers:Qt,\"haml-coffee\":Qt,\"hogan.js\":Qt,templayed:Qt,handlebars:Qt,underscore:Qt,lodash:Qt,pug:Qt,\"then-pug\":Qt,qejs:Qt,walrus:Qt,mustache:Qt,just:Qt,ect:Qt,mote:Qt,toffee:Qt,dot:Qt,\"bracket-template\":Qt,ractive:Qt,nunjucks:Qt,htmling:Qt,\"babel-core\":Qt,plates:Qt,\"react-dom\":Qt,react:Qt,\"arc-templates\":Qt,vash:Qt,slm:Qt,marko:Qt,teacup:Qt,\"coffee-script\":Qt,squirrelly:Qt,twing:Qt}}],[\"vue-loader@<=16.3.3\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",webpack:\"^4.1.0 || ^5.0.0-0\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":Qt}}],[\"vue-loader@^16.7.0\",{peerDependencies:{\"@vue/compiler-sfc\":\"^3.0.8\",vue:\"^3.2.13\"},peerDependenciesMeta:{\"@vue/compiler-sfc\":Qt,vue:Qt}}],[\"scss-parser@<=1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"query-ast@<1.0.5\",{dependencies:{lodash:\"^4.17.21\"}}],[\"redux-thunk@<=2.3.0\",{peerDependencies:{redux:\"^4.0.0\"}}],[\"skypack@<=0.3.2\",{dependencies:{tar:\"^6.1.0\"}}],[\"@npmcli/metavuln-calculator@<2.0.0\",{dependencies:{\"json-parse-even-better-errors\":\"^2.3.1\"}}],[\"bin-links@<2.3.0\",{dependencies:{\"mkdirp-infer-owner\":\"^1.0.2\"}}],[\"rollup-plugin-polyfill-node@<=0.8.0\",{peerDependencies:{rollup:\"^1.20.0 || ^2.0.0\"}}],[\"snowpack@<3.8.6\",{dependencies:{\"magic-string\":\"^0.25.7\"}}],[\"elm-webpack-loader@*\",{dependencies:{temp:\"^0.9.4\"}}],[\"winston-transport@<=4.4.0\",{dependencies:{logform:\"^2.2.0\"}}],[\"jest-vue-preprocessor@*\",{dependencies:{\"@babel/core\":\"7.8.7\",\"@babel/template\":\"7.8.6\"},peerDependencies:{pug:\"^2.0.4\"},peerDependenciesMeta:{pug:Qt}}],[\"redux-persist@*\",{peerDependencies:{react:\">=16\"},peerDependenciesMeta:{react:Qt}}],[\"sodium@>=3\",{dependencies:{\"node-gyp\":\"^3.8.0\"}}],[\"babel-plugin-graphql-tag@<=3.1.0\",{peerDependencies:{graphql:\"^14.0.0 || ^15.0.0\"}}],[\"@playwright/test@<=1.14.1\",{dependencies:{\"jest-matcher-utils\":\"^26.4.2\"}}],...[\"babel-plugin-remove-graphql-queries@<3.14.0-next.1\",\"babel-preset-gatsby-package@<1.14.0-next.1\",\"create-gatsby@<1.14.0-next.1\",\"gatsby-admin@<0.24.0-next.1\",\"gatsby-cli@<3.14.0-next.1\",\"gatsby-core-utils@<2.14.0-next.1\",\"gatsby-design-tokens@<3.14.0-next.1\",\"gatsby-legacy-polyfills@<1.14.0-next.1\",\"gatsby-plugin-benchmark-reporting@<1.14.0-next.1\",\"gatsby-plugin-graphql-config@<0.23.0-next.1\",\"gatsby-plugin-image@<1.14.0-next.1\",\"gatsby-plugin-mdx@<2.14.0-next.1\",\"gatsby-plugin-netlify-cms@<5.14.0-next.1\",\"gatsby-plugin-no-sourcemaps@<3.14.0-next.1\",\"gatsby-plugin-page-creator@<3.14.0-next.1\",\"gatsby-plugin-preact@<5.14.0-next.1\",\"gatsby-plugin-preload-fonts@<2.14.0-next.1\",\"gatsby-plugin-schema-snapshot@<2.14.0-next.1\",\"gatsby-plugin-styletron@<6.14.0-next.1\",\"gatsby-plugin-subfont@<3.14.0-next.1\",\"gatsby-plugin-utils@<1.14.0-next.1\",\"gatsby-recipes@<0.25.0-next.1\",\"gatsby-source-shopify@<5.6.0-next.1\",\"gatsby-source-wikipedia@<3.14.0-next.1\",\"gatsby-transformer-screenshot@<3.14.0-next.1\",\"gatsby-worker@<0.5.0-next.1\"].map(t=>[t,{dependencies:{\"@babel/runtime\":\"^7.14.8\"}}]),[\"gatsby-core-utils@<2.14.0-next.1\",{dependencies:{got:\"8.3.2\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.1.0-next.0\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"gatsby-plugin-gatsby-cloud@<=3.2.0-next.1\",{peerDependencies:{webpack:\"*\"}}],[\"babel-plugin-remove-graphql-queries@<=3.14.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.8.0-next.1\"}}],[\"gatsby-plugin-netlify@3.13.0-next.1\",{dependencies:{\"gatsby-core-utils\":\"^2.13.0-next.0\"}}],[\"clipanion-v3-codemod@<=0.2.0\",{peerDependencies:{jscodeshift:\"^0.11.0\"}}],[\"react-live@*\",{peerDependencies:{\"react-dom\":\"*\",react:\"*\"}}],[\"webpack@<4.44.1\",{peerDependenciesMeta:{\"webpack-cli\":Qt,\"webpack-command\":Qt}}],[\"webpack@<5.0.0-beta.23\",{peerDependenciesMeta:{\"webpack-cli\":Qt}}],[\"webpack-dev-server@<3.10.2\",{peerDependenciesMeta:{\"webpack-cli\":Qt}}],[\"@docusaurus/responsive-loader@<1.5.0\",{peerDependenciesMeta:{sharp:Qt,jimp:Qt}}],[\"eslint-module-utils@*\",{peerDependenciesMeta:{\"eslint-import-resolver-node\":Qt,\"eslint-import-resolver-typescript\":Qt,\"eslint-import-resolver-webpack\":Qt,\"@typescript-eslint/parser\":Qt}}],[\"eslint-plugin-import@*\",{peerDependenciesMeta:{\"@typescript-eslint/parser\":Qt}}],[\"critters-webpack-plugin@<3.0.2\",{peerDependenciesMeta:{\"html-webpack-plugin\":Qt}}],[\"terser@<=5.10.0\",{dependencies:{acorn:\"^8.5.0\"}}],[\"babel-preset-react-app@10.0.x <10.0.2\",{dependencies:{\"@babel/plugin-proposal-private-property-in-object\":\"^7.16.7\"}}],[\"eslint-config-react-app@*\",{peerDependenciesMeta:{typescript:Qt}}],[\"@vue/eslint-config-typescript@<11.0.0\",{peerDependenciesMeta:{typescript:Qt}}],[\"unplugin-vue2-script-setup@<0.9.1\",{peerDependencies:{\"@vue/composition-api\":\"^1.4.3\",\"@vue/runtime-dom\":\"^3.2.26\"}}],[\"@cypress/snapshot@*\",{dependencies:{debug:\"^3.2.7\"}}],[\"auto-relay@<=0.14.0\",{peerDependencies:{\"reflect-metadata\":\"^0.1.13\"}}],[\"vue-template-babel-compiler@<1.2.0\",{peerDependencies:{\"vue-template-compiler\":\"^2.6.0\"}}],[\"@parcel/transformer-image@<2.5.0\",{peerDependencies:{\"@parcel/core\":\"*\"}}],[\"@parcel/transformer-js@<2.5.0\",{peerDependencies:{\"@parcel/core\":\"*\"}}],[\"parcel@*\",{peerDependenciesMeta:{\"@parcel/core\":Qt}}],[\"react-scripts@*\",{peerDependencies:{eslint:\"*\"}}],[\"focus-trap-react@^8.0.0\",{dependencies:{tabbable:\"^5.3.2\"}}],[\"react-rnd@<10.3.7\",{peerDependencies:{react:\">=16.3.0\",\"react-dom\":\">=16.3.0\"}}],[\"connect-mongo@<5.0.0\",{peerDependencies:{\"express-session\":\"^1.17.1\"}}],[\"vue-i18n@<9\",{peerDependencies:{vue:\"^2\"}}],[\"vue-router@<4\",{peerDependencies:{vue:\"^2\"}}],[\"unified@<10\",{dependencies:{\"@types/unist\":\"^2.0.0\"}}],[\"react-github-btn@<=1.3.0\",{peerDependencies:{react:\">=16.3.0\"}}],[\"react-dev-utils@*\",{peerDependencies:{typescript:\">=2.7\",webpack:\">=4\"},peerDependenciesMeta:{typescript:Qt}}],[\"@asyncapi/react-component@<=1.0.0-next.39\",{peerDependencies:{react:\">=16.8.0\",\"react-dom\":\">=16.8.0\"}}],[\"xo@*\",{peerDependencies:{webpack:\">=1.11.0\"},peerDependenciesMeta:{webpack:Qt}}],[\"babel-plugin-remove-graphql-queries@<=4.20.0-next.0\",{dependencies:{\"@babel/types\":\"^7.15.4\"}}],[\"gatsby-plugin-page-creator@<=4.20.0-next.1\",{dependencies:{\"fs-extra\":\"^10.1.0\"}}],[\"gatsby-plugin-utils@<=3.14.0-next.1\",{dependencies:{fastq:\"^1.13.0\"},peerDependencies:{graphql:\"^15.0.0\"}}],[\"gatsby-plugin-mdx@<3.1.0-next.1\",{dependencies:{mkdirp:\"^1.0.4\"}}],[\"gatsby-plugin-mdx@^2\",{peerDependencies:{gatsby:\"^3.0.0-next\"}}],[\"fdir@<=5.2.0\",{peerDependencies:{picomatch:\"2.x\"},peerDependenciesMeta:{picomatch:Qt}}],[\"babel-plugin-transform-typescript-metadata@<=0.3.2\",{peerDependencies:{\"@babel/core\":\"^7\",\"@babel/traverse\":\"^7\"},peerDependenciesMeta:{\"@babel/traverse\":Qt}}],[\"graphql-compose@>=9.0.10\",{peerDependencies:{graphql:\"^14.2.0 || ^15.0.0 || ^16.0.0\"}}],[\"vite-plugin-vuetify@<=1.0.2\",{peerDependencies:{vue:\"^3.0.0\"}}],[\"webpack-plugin-vuetify@<=2.0.1\",{peerDependencies:{vue:\"^3.2.6\"}}],[\"eslint-import-resolver-vite@<2.0.1\",{dependencies:{debug:\"^4.3.4\",resolve:\"^1.22.8\"}}],[\"notistack@^3.0.0\",{dependencies:{csstype:\"^3.0.10\"}}],[\"@fastify/type-provider-typebox@^5.0.0\",{peerDependencies:{fastify:\"^5.0.0\"}}],[\"@fastify/type-provider-typebox@^4.0.0\",{peerDependencies:{fastify:\"^4.0.0\"}}]];var Iq;function Zye(){return typeof Iq>\"u\"&&(Iq=Ie(\"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()),Iq}var Cq;function $ye(){return typeof Cq>\"u\"&&(Cq=Ie(\"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()),Cq}var wq;function eEe(){return typeof wq>\"u\"&&(wq=Ie(\"zlib\").brotliDecompressSync(Buffer.from(\"m9XmPqMRsZ7bFo1U5CxexdgYepcdMsrcAbbqv7/rCXGM7SZhmJ2jPScITf1tA+qxuDFE8KC9mQaCs84ftss/pB0UrlDfSS52Q7rXyYIcHbrGG2egYMqC8FFfnNfZVLU+4ZieJEVLu1qxY0MYkbD8opX7TYstjKzqxwBObq8HUIQwogljOgs72xyCrxj0q79cf/hN2Ys/0fU6gkRgxFedikACuQLS4lvO/N5NpZ85m+BdO3c5VplDLMcfEDt6umRCbfM16uxnqUKPvPFg/qtuzzId3SjAxZFoZRqK3pdtWt/C+VU6+zuX09NsoBs3MwobpU1yyoXZnzA1EmiMRS5GfJeLxV51/jSXrfgTWr1af9hwKvqCfSVHiQuk+uO/N16Cror2c1QlthM7WkS/86azhK3b47PG6f5TAJVtrK7g+zlR2boyKBV+QkdOXcfBDrI8yCciS3LktLb+d3gopE3R1QYFN1QWdQtrso2qK3+OTVYpTdPAfICTe9//3y/1+6mixIob4kfOI1WT3DxyD2ZuR06a6RPOPlftc/bZeqWqUtoqSetJlgP0AOBsOOeWqkpKJDtgP25CmIz+ZAo8+zwb3wI5ZD/0a7Qb7Q8Ag8HkWzhVQqzLFksA/nKSsR6hEu4tymzAQcZUDV4D2f17NbNSreHMVG0D1Knfa5n//prG6IzFVH7GSdEZn+1eEohVH5hmz6wxnj0biDxnMlq0fHQ2v7ogu8tEBnHaJICmVgLINf+jr4b/AVtDfPSZWelMen+u+pT60nu+9LrK0z0L/oyvC+kDtsi13AdC/i6pd29uB/1alOsA0Kc6N0wICwzbHkBQGJ94pBZ5TyKj7lzzUQ5CYn3Xp/cLhrJ2GpBakWmkymfeKcX2Vy2QEDcIxnju2369rf+l+H7E96GzyVs0gyDzUD0ipfKdmd7LN80sxjSiau/0PX2e7EMt4hNqThHEad9B1L44EDU1ZyFL+QJ0n1v7McxqupfO9zYGEBGJ0XxHdZmWuNKcV+0WJmzGd4y1qu3RfbunEBAQgZyBUWwjoXAwxk2XVRjBAy1jWcGsnb/Tu2oRKUbqGxHjFxUihoreyXW2M2ZnxkQYPfCorcVYq7rnrfuUV1ZYBNakboTPj+b+PLaIyFVsA5nmcP8ZS23WpTvTnSog5wfhixjwbRCqUZs5CmhOL9EgGmgj/26ysZ0jCMvtwDK2F7UktN2QnwoB1S1oLmpPmOrFf/CT8ITb/UkMLLqMjdVY/y/EH/MtrH9VkMaxM7mf8v/TkuD1ov5CqEgw9xvc/+8UXQ/+Idb2isH35w98+skf/i3b72L4ElozP8Dyc9wbdJcY70N/9F9PVz4uSI/nhcrSt21q/fpyf6UbWyso4Ds08/rSPGAcAJs8sBMCYualxyZxlLqfQnp9jYxdy/TQVs6vYmnTgEERAfmtB2No5xf8eqN4yCWgmnR91NQZQ4CmYCqijiU983mMTgUPedf8L8/XiCu9jbsDMIARuL0a0MZlq7lU2nxB8T+N/F7EFutvEuWhxf3XFlS0KcKMiAbpPy3gv/6r+NIQcVkdlqicBgiYOnzr6FjwJVz+QQxpM+uMAIW4F13oWQzNh95KZlI9LOFocgrLUo8g+i+ZNTor6ypk+7O/PlsJ9WsFhRgnLuNv5P2Isk25gqT6i2tMopOL1+RQcnRBuKZ06E8Ri4/BOrY/bQ4GAZPE+LXKsS5jTYjEl5jHNgnm+kjV9trqJ4C9pcDVxTWux8uovsXQUEYh9BP+NR07OqmcjOsakIEI/xofJioScCLW09tzJAVwZwgbQtVnkX3x8H1sI2y8Hs4AiQYfXRNklTmb9mn9RgbJl2yf19aSzCGZqFq79dXW791Na6an1ydMUb/LNp5HdEZkkmTAdP7EPMC563MSh6zxa+Bz5hMDuNq43JYIRJRIWCuNWvM1xTjf8XaHnVPKElBLyFDMJyWiSAElJ0FJVA++8CIBc8ItAWrxhecW+tOoGq4yReF6Dcz615ifhRWLpIOaf8WTs3zUcjEBS1JEXbIByQhm6+oAoTb3QPkok35qz9L2c/mp5WEuCJgerL5QCxMXUWHBJ80t+LevvZ65pBkFa72ITFw4oGQ05TynQJyDjU1AqBylBAdTE9uIflWo0b+xSUCJ9Ty3GlCggfasdT0PX/ue3w16GUfU+QVQddTm9XiY2Bckz2tKt2il7oUIGBRa7Ft5qJfrRIK3mVs9QsDo9higyTz0N9jmILeRhROdecjV44DDZzYnJNryISvfdIq2x4c2/8e2UXrlRm303TE6kxkQ/0kylxgtsQimZ/nb6jUaggIXXN+F2vyIqMGIuJXQR8yzdFIHknqeWFDgsdvcftmkZyWojcZc+ZFY4rua8nU3XuMNchfTDpBbrjMXsJGonJ+vKX0sZbNcoakrr9c9i+bj6uf6f4yNDdaiXLRhJrlh5zmfbkOGQkosfTqWYgpEKdYx2Kxfb+ZDz4Ufteybj63LzVc7oklSvXHh5Nab4+b8DeoXZihVLRZRCBJuj0J6zk3PtbkjaEH3sD3j6hHhwmufk+pBoGYd9qCJEFL21AmLzzHHktN9jW7GSpe1p91X10Bm5/Dhxo3BNex+EtiAFD3dTK0NcvT58F0IFIQIhgLP6s1MX8wofvtnPX1PQ/bLAwNP+ulKiokjXruRYKzTErNjFrvX5n6QD7oiRbOs3OQUswDgOxzcd+WwGZH1ONZJLEKk2T4VGPrrdkN9ncxP/oQ8UFvRbI7zGVrpNjlniCHT6nYmp7SlDcZ1XmS7tm9CXTMumh89LnaNuF3/wPVa/NLSE195Ntstwz1V2ZLc/sULMGaL4gdF3src9sR1Fh33/xiS3qOrJQlLpy2luR0/y+0q0RnVBBBe4yi4ueiNOdNAq/pR8JehYiEiu7YVJJcGBNBHlCOREQviO39dwxTxdulwW+UOO+OrXOskQ/csaLPIKxUOUHktlUtch/SkuaV5QD2G4vweAaCoSxMZ8k9jagIRR/irArsMUBBkvwQBZj1NYclQ1WtdeoYsd38CObL/DJksETohDEy6ZCixViSEPvNKiV1SSCwIiVk0dPGwTZxeNwPoA0BDhYNc4tIkej3DcTHVTS8W1vYFlURRUS4k2naQ5xI0fseTRBHJQ3WJ6Tn45afc9k9VffnLeTH+Kdd9X9Rnont4E39i8pr21YM+umrbIBTB8Ex2jNapeDYMPaeXACP6jpZnFy8NEyG2AF+Ega5vkvKIWjidXnkItArCkmeU63Fx+eg8KiP95JfLbUQus2hJTKPeGTz9b9A0TJtnTVcdJW15L/+3ZIOQ3jeoFsEuB9IGzxFY52ntO1vJvNdPQMJhXkvTNcRYz7Qz6l09rNUNGbfVNOW7tQgzdp42/0sZtnFW0+64nFJ127Niq3QLT8vwHYw3kOplK43u3yllVjU+RYv76vu3JMghXWGsSB0u3ESlir8CjF5ZIflzQoMn0xbP3qWknhPYHTAfu11TcndM/gV+npAK5/yKkwjnzWs5UXGXJHwAFo1FU99jtfiDBlqk9Xmq1YKsy7YkB5nOmw6dy9mjCqYT72Nz9S4+BsTCObdH/e/YZR3MzUt/j/sjQMujqJNOqABq9wAJCDwn/vwSbELgikVGYviA89VqCQjLBkWsMBf7qNjRT3hPXMbT+DM+fsTUEgPlFV5oq2qzdgZ6uAb0yK/szd/zKqTdSC0GlgQ//otU9TAFEtm4moY7QTBAIb2YdPBQAqhW1LevpeqAvf9tku0fT+IfpA8fDsqAOAQxGbPa0YLgAOIZRFlh3WHrFyBDcFLdrSJP+9Ikfv1V16ukcQt9i8sBbU/+m0SAUsjdTq6mtQfoeI7xPWpsP+1vTo73Rz8VnYLmgxaDWgOuNmD8+vxzpyCIC1upRk0+Wd7Z0smljU7G9IdJYlY5vyGTyzRkkN88RMEm9OKFJ4IHwBxzcQtMNeMUwwUATphdaafYwiPK8NptzFLY0dUIAFj2UVoHzUBmmTP1mWCmKvvesqnrG3hj+FHkfjO3nN+MaWXgorgAAA6K9IXTUD1+uwaqHXsEALRgD82K6GVuzjQznaC89QI2B34wNf1dPIwydDO38xCsAKCdf19/ePn1xejxPZgLmzLlTLvloYWMde1luC66/CFwUdwGF5iJ4QIAM5jvbl94r6EYr52H2W12SlcjAHBSzoVjusrp7UZh18Z/J+vwjQccSS/JBNE2b1adygAAyNgJ5P+bqz5+CPu24bqx6Gjcz84IAtVx2VEyBJTqrocOCI9I7r4vD7cz9L3AGZ6DBzEu36w6fQsAkN2IsmzCZWMxqbMTE75ymnyFiK09l327D2K9sywTANigkEkmLwTn4RqDiPxpy5HKA4aeYqbSoi0AUAKsGA5go3ZXjR0qpUsAoMWolyNxzyiIPZ+qsEM7QDgbHW9WJWwBADq5800tDEPPiPa6ialFj0uNAEDJEC4am4A/oPGPxmDmXdikl4cLKa8CgG7265rxY/wjtmbutfwJ6M9Mer8dKHyeZkalbAEA49jkE8MATNz+qKwsMOlGAEC+lkvGJh0ds/j5uNtg3tilTY+NTe/JnqF4N6uSDACAHKQP1Lht8vSzU7iEyzPjut2EPs/Y38IspIepXm+8s+bS2w8QPd+8ONuavlmV3gIAJLA8T+O2x6fBKOJyYweNq/YsVtd2SjETADgxiwkX4POo7fsmuHnc8rCP05hqlnABgBq023MivCisNnZRtK+sru0oXAIAK+fRHim5pkf85kL/YfPLQ/xReQkXAChjtR0XhfDJaiOHaB9ZXctR2AQARsyesDkUv0deoTWmffvT4f6SYAUA6+xXzrX3Smi6X8zthH22b/w19LM0XlWqr0rjAgAWs1Wq4T6AhPsAVGoEAAa5PpwVKjiHWlfJ2TZJf63FjF8SUG6KBOOL9A4PW3qOHE295pQyfVPIvxcJeU+CKduBk6Q+a2BAVtKhf4QnHrHLFpj6sNDUDvhCfNPmtn4pdDSUkHE1wPPrF1UvkQS/L1S52Zv0Sb/r9YK+jx51oWU+i39Owb1p4MDw3LcwvjpMvtDXPEWBlLcw4DNpOOC8f11nKez61/hc4txssbudIo5lL+aszAI1EiiSfkCetqOyBs4trCbou3jqJZ4diL4zvDnDBRgP+086X66Tvj3JOY1rJwmj/sJrubDrVb32PWhOs6BN+sJXQ+6nOZJTgPRg4PWz8sp/wWI3wsGBQoSU6tr0dWOkrwhDNCN5mfGAM5vfnawcoCdm2CdzIN0r72XbbDWqjom1cMjYh229sPnvzWLZAaSiQR3bSL1XjCwFH1wa4ZmmLeiaD4xutxAZfzu0FwMUkXTsvb7SX7TLM4zwjGg+HbjiaRWI92lgwaxTyKgiXbnThL9j7uBDihzuMULvXXes0e9x7PwRK+6mBLGD9z7PAt7b7va1J2EHu/zZfZ6JPoQVd849MZCk3RJOxd5Nsxi+O0lUD4Pochlk5+4naG1j6yiVRKBPobLOad//hDECeD1ORiB9M37JsSxMC6yAkKEdy7S1aRmXRGrLECneqByM8iQ8x6d71F1uhkYUi3WEjh/A9Yw//HCidh7pl7XD8vEkuN/f7XQ3+fhmSfR/9fHkNcRp4qCD13IGIBIAsQXtoDUnASJc+5H5f7YWufNDdZ3SiHJqVvKw8K1RNB/4mJi3YzQP47nmN2cw2BH4yKk+zk7wcLx2bVzeS773YW/7nMg8DMlWZGeYPJ8lYLzOnN4o/0fk9Fb9upq1yXbRyN7iDSRnOnj+kn3vLjHbn3NmA2tRwcfVd/KHGxPybUwcg9e742hY/XBtEgCQYe9Qh8t8fte6aEo1Lt7a9rryutsDxLxo0o9/lhdL/GMs9n3cCxZiuv3as0lchJm9dQGckDBOT/R+y2ft/W/eswB4NFnsqcrBTerQmx0BTPclttiZPF+ctHerFc2RW9MJzpuGOShqyTLCNsCjhPV3EtMF8nVQf2TL6GzI6EphQEjQgG6JrtMu/0zWg2e97o/uoTIf4ipUvVVM0KYey+VkMCWrFynVZh/hpTTXcm3+EV7yX7W6Ehrz8KON4P9MrENJx2msYomlnUT80OrH6Y1+KEfOWn8KyenbZuHQkjBZcDAx5+J64Aj6TSooLJw3anwLeZGOQeSSPXLe6dVY7MF7HhAl2HU9fwES3l2dLETAm5btht91AwjpdUoQghLn7RhAIRWFRVWJa2Jtc0Tm+dHRGiAvx6wG/OCGa7BsWuJ6U3LwfOzSY5qNsj3Qpt6+JyEhflEfl2YZ7jhjJ3y+3ehNh4IBG4eEmVuhYdlx/EQQvnVDqC5Lodj7NWEXjMFyT14tjF768alhticUJrdl3w6P7cKsF4rhxIKWxOSELDHpzaBPR0EgNZlKdZrSiJfPGaWK++nvRxwoo0gt4maZU1CAx33oq3e+NirCq8K514FHpLc0jbti5KzNlr3ttdqoSeYKrOsq+jS0w4q5Z2AMeYnbAgCra8oCHFF0wJ/PTdXUMVyIdTRhS8cJZVr5dTMliVhKm9/TZduaYLTA346l+ILCTo1es+CVq/f+2MU+XuX47AuupenBsoFCNMV/2ywHjCr2flEAWipfnI46tqmjq81ytF7IWoydKyHCSI4ew+k4+ATvUzq2buldaR6SAI4VKAMyMT7zkBkAMB00NLbwmtJqj2k7NAGAqHKufA41DAksWEk7A33esJTuBprShiAOZCMOdd72+E7b1umdzQCSOsdaB3BxZgCAIhUUSdbxYbW7MfnSRjQBAOeidlz5FgodFOhlNAn2jcFu6KmERUygbnHGMpnfdLZ+KTEVgF9WExaIcJy8hr/tp7Y+ofIvp0nKjrUMZqLMAMAsmaCWuxWW9dpVpoxoAgBXKtOVhyhPGCAhWFJty3Ija39F5udrAvbBC+QD+d2Qpx5Dhfh+FqLgzUW10AwAWChUQzuhruPOnJ3rUZXMdgmhZDvzdRCfX1UCN4/l/wPrk1X0qHN3KbpjTKBihdxy04nZgZFKr7EcDqvvSSpivzg7QGxmssgfLo5KZRV1TZtdbR+k3S/kYjTNfDUZyWrcFtxkiVhetaWfvcxumYBgVeSozNkvIgSbt+L/2Cl6TuiPToNFUi3gzvnWRxo0ES1a/Wjq0Zc47dikmBBXXE4/cj/BEnTUGU8vsXsssBsmrEbCzB27QqDQGPdcgFpmIb3VQSk9zfTyXFlADILp0V5qUnuHn2SAu8QszfXheW/UnD34sJXHTECWUYQhLc5QozwqlP1qnYO/j2pQmGU03C06s3d2EjlIdLNuy+Z0X9GIUUWCXDpwtAPYI/zXrF26ADyEpyyj5o5bn4GKoyNdkhskDGYenTTQ+fRqo0EL0yIqcAfyVOvo2jq3CjCRKOLgRzv8NZ30rd0sMLzpKrIwt866C8KrAes6AeYvDWFOdG2WjV8dNiG2wUyaYIU3T/cDo3COPFw8EPEFcIZAcCNE6BpH0CBPxefguDvpbTKPZF5TYE+uaLtxvaIUB3bIQI6/yK34JNzrQt1az5ucZEtXCMlBED4lW3rAfndm6l/kCGLzwMc1jaGqJo9VNR0VIO4dMQMAo+m4cpFwrKQXPzW3czk7Vehrc4bS6j+UCQBQhrljlDaOxR/+L+5R2jt6Tz+GWNGIJbKP1cd9mk9gzEk9hjdUxnNNvHTW4dOvtRS4MRoQDFpUwYuR+pe67JmTNfNtDqx7LG4zNLjh8a/7i6F+adgW4ci+DW1Ilf9ok+1zg/3+lfN6pK5X6QelSexeWGj2JnH1ym6sQa173zvfno297vUcHC6hAoTC/3enX+ej+9JNHu5RQubQD4++jHOK2fiK8Df3A4QC1LZSDmK46S0VdPvZ8VSJnWHbWlJDsshRGb3dyRkMr3d8VnqqBEcrMSKUyBqMsk6yUayfov2tM+rgwqxlrsiFu4pvawUNfFtcuWrc8FmGXzmz8Vn5LxfzeQoLfUX/JWNR9xC9tZZamjtBesX5eUAqtw7rpFfDcdbgXsMcsICLg6iqrNnoDTf4umgefPn5ZdXLAEaKmKr9K2jWq3EjfHsxMwBg48Ul4dwopQnV1GzvwQsXaQIAGfxz3b1L+LfNKAGAuxiMqmZyB+AYNU1XTRJXly88AYU39jt8cP2yet2jRRzcU6scgDEiEryUmuE0/9XcsZcfId18ZowZMT1Pn3IAxpBI9rrhhqfOkyl7L398ZNuIPH7ElH1o1LGcrV7PCOR1IzMAwAuoc0mYU0VR8SZmewtvuEATAGjx8Jyr7ndZRRabBAAakrqa1eFyutex5al/HR9+Pg/51BPSD406ljMQA8pRvJ9nBgCMQyre6J1RTDLuzPw1pAsbjcEeOqQ1rdTmu87PE3XTX6L5Gyznwp9PhH9fPkpGQ8UNREgtj619rgZb/3wPFNQVbHc/a4jvwl/8oBKYjqAA6N6ujHBoGb4ATrvhNBnDILjc0CJKnveWTCZsDPoCAtX87ot1zaqQIOzniFoY5+YhQw5B2c/phhnSAZA9ApFkx0IJ7sCLThlPpxnHyv9oR13WpgPR4gUqXIl2N4nXnTkJrp58Eu4njBlKzTOEZg8IxnUq8+sqOnQo9N2SE6jdRZ1z/fsQ3CJqNvCck7DRQdc3RveF/dc5mlOPI8T4uL+oz+Z8sJ9wZo/NELlDNct9N677yFvr2oYCQ3/83EfWnj06lnR27o268AYQhVTPo3RYYPpkhgyVUD50TQGcbIPBCGxagjGtFBjceJbYSX958r3v5q3JbgoA8LXamYl9ce+UOusgjorz1/LGw/LsWuxIqVZLUflBNNzqe8wfBnngUekITgge65Xj6xD8Ero1H/HAEgzxiww6j8ZB7I9hA4PQLxy2xTCSF3tJ/60ye1nRAiEhHZjEwgdaaD7HdmaDiTG4HD0ArtUhToud4pjcKlanIcEUD7j13JTtBA9u040VgeqfcMoXejWyk7YDcHR0TNJsYM2cyGylQEg654jKROckKeaXtByXo7DqAQhhd+e41CpRPIm6zoUBBU30L6veKGoHUvVujt12wrswKY0GCX7BAJ1ePs85euedVbtDdCFD6u6HVpjhIAJuyalS4D2EoUBc+OfKne64AHj8o92ql+v1XqI15bZv54pNU+xgh2zxoFup3vOQ40Jgk6wnrxfKqgVYJ8SCL5iRzYqxfYJEKQ6I4V7umobUg1tBdDZCI6wYso5GIsPj5aztuwBIib7SFoG3neHuUIkB0omw3HgYMqAVKWPKX3j0zEOeXOXa53uihs/cCwK2zTUdWfmdaBXGvP2ca3oubeEUEhTjUTjLD469sBTbSoNat4Q6NAHDoLn1d7TVHjJAmwfrggxygS3ojqv4siKiccTvzqizQ/sT37uxiPOJBH54kEryjipahqC4WYQ3Ztrduw39FZkaL80/Kl1M7mFa0VRxRoxS2hASYUpIdRLxT54CSsaACskZURcD6T7DueOjXevevtHYqtG2ZT+lHHVdNiMYIjJ4fu/nmbJp1zaOCONKPSKaP8J95Ije8V4Dnzyb3018HkdmaFbKBJDZMrXEB/VBy2mXVnq8WJSTK8CQuWPax3x8N3IdHtP+nKkRuXSj644Hnl38rAj9tk+2VVRuWRjNa1nsrvymeydN2VmUP4vo65rVvUozV8g+vFK0Pl3TTFjraGzjnpqnYj8fEn7y8xRGCb8o0PpJFDvkn5OOcISVLmQL98k0v89Y4snCvN8eEeM3lT34MjVzW2tBDx823AnRhLHF+wMcfn1USCfNH/y2+Nkmud//9f0xIbj11Zu5Zj4+4VjnVY/3brOKzwL+ejBmAOA47WPUljHF/2vcrorTjC9qauGcdjWqnl4Xqn61TABAfHiRvtpVT/BXt6udWv7G98iwegCujaC1eL1yhl59ATcUPRL3AaIOA+I5uupJcT1P8HWp2/hzT0Sgulz3jhhpRAGwRce+/k0LmNKMTfgx0HDnnYCoD4hwwcoVOwxDBCUhRKsQoCSRhCue2/9c9F4/djN/iU8vqQQAu2W7NleXuELigy7hrrH0ugYBzkBDFOm6hLH5gmTFDrY922J2jrjyFiDRWEKvovHJtvocMB+GdcfEc26nXAIxds31Zvyjgg9jDEkcu356cP45FQyWQ/2Xr9D3uuWTcP5rnCe2ZJ0E+rAzmSuB7q8l5kKexhJKIEgrqufzwt4z0Ma+6Z2Tc87Mxal5/108FsEkt5OMAUkkyPVYQvnEFI//BZi8mLGfYTCJKmKnPSOjj6PKKtrk9r4yTzXtIoLNfgCFXbO64O3y2dHOc0mB/cn4z5fkuA4VivPPReLcHVz8e0Cn05dLt14MyJdAU5yPV1oQSPcU194ylCH1I3Xt+oTMx7XGZgDuxpWddWvXNDuvgrl5OdL1SFnrVEM9U/0qfyz+6vo/VODmhzpDG/dFXZtJ7jTriHeSCKPhhLO5/uYBuSfw1POp6E8u60XdpKOROkyUcoWjqimnNyHhPDDdV1/7ND2Bh/7aiuxpFbYlYhwZNrk3v2ylTvyNsFmfuRontBwiqKx329Zob7jLYDIb9PrG+AWk4nN4QAF3naK32CroJjFK0dzBGBdbhqGvOwlO4Bqc2B+K8vMn9SgTYKOTXQpGthMF0aJQHsdrTiN+fG+eK6bKky6CiukeqBgoB0KYhl0ngc3MWhYQhR6ULDmmmrqvURCguRGH+xUW59GyJPI78e38CbKxEQpOnYlmZUheRl8+5Orw0KnDEZXpMdVzYEcr8V95gf54U3cS7adnQVQm9yAR5pkyblumE52RaVLbIouY4WxcNzoLJraAqsbN7CUaEyQRtqm83YVxgTXFBNPk2z9SfS/2mTSulgEfWUOYmQEfiAaWnX+P0ezKFz1BzO/T9SX4B8Sm7NUmDnbHI74izpe3Dq/k2jqvsxNBX7keI1eux798aA+Ee3pag6xpPDa7uIun6dXBDb9xrdpAFa1TYvlj/3iacVrXUYInG3OQv5lASKQr6Ok3CWTOFrkE3Ab4lFR8hbY0DZsgpiXw3Ic8YccFXomJeuZ+zNjq4CmlxYhcXQnrgtpWb2S+JXEp5JHh9APA4IjKN4hdm0qnHRzhSFfJCcOkg/RinGMzwtgNDahb4H/uNWjrIexsVRC9uYlMT3CCWCLeq12rSi3BlAQrnIAdFhL2INatBUy7ruc1TE+6eZ2XkZ/C6d6+CJrwouvF0ghjWDogxPbgxotmr56iGJoKnuwNF/VWHb037trPU+K8a9PCmGGWrqdiVkSOISAAc7D91xXG8Svq43DBvltxo/jeFylAbMWcCDXDm0rM6DbyRvFtLzAazwd/SPi1x5/NHyxHgX5VESDDn1tRHXzSlbjz2ulMvtv9Dp+Ic6KQZ3edNwa+9iZsx7kIwYF4aRfPuiAwhoYbkgvhVzlgwfF3Z5tX5KgmwkDs6AQdqyuZv1U3sFzdM7UxaJQ6JM5ELO+d+/k6PEylnYrwSOBlurpS2rECSHSp8S5Sbrm9jweZ44BxmkOBY4P5BmhH1PRRkCRcXYG91K0JRzOD/B1vQCcHf//8atBI/HuWuilLAbut+HwOMwBwqaIhe73RUkx4vCmUs4j6ALwz2cUa21NgLwszAYDj7hk5AvfEbG4HnKsavV0z2HZTPwBwNCiFQ3kIus/yxQ2assWZAi2zvyzAEU2C3XdnMwLHq7+vztaFd9UtqeZAqkKXkjoBs2vNdgByZS2cA1XNs70DCmO/0wQp1xWZZFWF8W3oy6uDaQnLF/YRxHk4rtJAAui5f4zymPhhpt+bgyGzSZdePfx3cSoXJIAuErW2pSJav7eSO0FL2bOd0eNgTenDatV0qcMQm4q085gBgJZgp6OlHCwNuT4pJjv46ZFji8t1ho8XaAIABIPsmTYL/HWV3harXQv7AQAWvtqIyuK3dJ+Cj9PGMb7K/JvB5xoGYzzTeucCQeXKMYa5Jh9EzhnyD3aGdQvU/FS1qMnjkPpyqtBQbX+HZgCANU1TteXcz9EMPZ0a78Xu1gxoX41fMf9Gx5SxOfgyF43WlePpTPS7KysCZeKjhxfH8OR2QZTGU8btjQNsDjEviJ5zZ659N/5Cs3tCTKjmg9XhwU2AieBC2CpJAc9MszqjvkvHbiHW4L7rMM9qMRXNBirYkwJvjoctYaKk80gNWxIUK2xDd1rykGGMhRq2glXBCIanrVbE4ctMSCncz7rDmN8J8+7xEr+37HpwPbbLV7DuIoUNODXiuNOYAYAdqqXg3NFSErZEqkops7NsF4dEt0pzJgBg3t6nyOT+ujWUO3o/HWboODheW/ZPjzH7Y2vJl5Vf1yz6cJxee134g1HHKtqNR06Yb1afnVoMAHh1fMz7KJmMuovLqpY/VRzDP+iqbrVar9VPSZxLCflzMZyzGDZ8juE3iuEfdIFWywg4UAxhvkt7H3Vz2Nmijfg10C3pDCGbW5HkGR033VTgXud+mVEqiPa0FRwBokdONicFMVWtN2cDyUBXkaaL5B06Dqt35stna5O88Hr68+Z+0vHQeOL7mZXCPby/RztHkz1eoTOcHLwcfGzDjP9lqtKlou5FzABAt+Kmy07cqDp8+QpF+lRyz702fCBvwQM5RRMAiMkiog3HhpH3/YCarpVzwsDVzQUBQNA83tWEAQVHZpGCKOs9UgWB0sS0CoJt+jEqKJxR4KigJF3udZC6mslAYLpqlIKwZZRLawYKHLe1OAacLM8+C5yT/b4tcDp1RVdidcVxOsa8Vfh2fiRZ4tPLrNuhQJAAyu8f42gdo2Z48/uSo/P29+J71n4oGiSAghLF0zoExPPe086JT6uNadoIQf+UfWOXtuWPNasWv/o8ZgCguhluxCuXg+UWd3uW2hGf5Yq3s0gTAMDia0wbFX5SKZfmYVwWGgQAHXyMEWXhV+k+Ar+tjd34iPkX4kOGQRqfp70XJHXkjm/sJ/ruOb4mSeuYnTfjCWFvoEcG4BwfnEtpFvRelrlGIum4+DYYBA7AtEQyHmxHxTHP/CVxmr/Sp7QXobUx4qP+rGJRXehvjg/uZD3fs2M5+cf7E5+fOPC8KOzGyYE0ZYwhuF0MBVh+MePAVk05a3djJn7kqrUyvLsOroqbM46Z+nM6JvdaGsEjVfwqoN2SfHc135EyJUq88XZEIX8I5nbsDEklYj4fVQqmNM/LjlmbbOv7O+qij/N1bqYrmUIugDHNlrEKYJjRKVYXlHSPdfyGYRC+RPqs64u/jo2ougiKUNbbpI+Db/x2xXsz0rs6VPAcqFgWBi/RYfXDhM5Ens0FyhIjELEM6DiViir7E6DJ9dNP4HqWVSnodz119e7ebZ8KbVAEGh++0g/ApiYn5VRNSkMFBkNiOgyUXPxXrPkCEEh32BdBNi3O8TCdjh1Kx36Mgtx2wdrve3T5Tblwg3Dy+gFH1Y8bEJ4Y8CpF3f2ifCSfFN4eSp3qgkZwRVzRWFGKT6KmfJbumRyGcIXhjcutiG3UCPipFIo5tES/QJQ4o5fA1zjdnptOZ6UTfGNOqVAk55iL3/7V9vAJgEzoLJTAOcpesyuSLJ9+IW+7q3ToWSR3w5Y1jIGVKSSunuyIIgcV81NlP/hsnTQRh8qFuSJCUR//D4NH89aIdvtqj5KNjOeCsW9jtsu+p9no9a8geJI1GJXPffb0anRpeUfz4mHRTMBWKl2PDpgKGxjEFyPzEZovmYVbBJqzI/RTaIuAbGwW7lIsDnvF2tLp7Hu1b3qfcsk+/G3PLnDBtaF3JHFxcZZjXgxceGu9ILgKdVl711k70N7xjW3vWAcAGE3Dl1+jmMZYWowjir3aY4c8NRZirPY0Ev1+E7PCsPpUUrFDWx5UL3Rodd/wKDQrtaeR5aVhbA3ILyE3ZJhjvRLYnEuAOyGwKzeB1SZsOJCWaGuT/p5rkM+b8QSzB+lVCEqxH0kxZyEM08yz5OVyjGpfkg0zhcnqroQ1mRg3mTReLxNIU9elAcNGtsPJ5lXSDFeEIunTdwmY2MhZ8LoROcH35TLh3OplkQ6JJnwA1CB9d6SN0ThG3scVgT6N+LHBf3cmMBRjqZn7XbXIGemgb/Xk8bt/mx5VZe42eAID680ptynUQBNR9Rf8HbSWhuPaSJA7qG83SvHE4ZU8OEZqIpGXZ2GlaMKbIbq4uiDYovInRvGODQYcpAO4zgeB4dnzqV7jSqHt230tB5CUBEsE9/4cJkpF0SBAh3k35zXTHvCenvz1Ud2TezFEu6rBNFZnsbQrAZqU7ErkypRSf6XKqPZigpk+a+0vsVaED2D3JhRNwxIY2pE+dvJNX6SJNv8AiFzDxFryAUsX4o48r+31f43Yzj4WI6eSDCeJu+GPFvJDu133wd1RnUutlzOH90ntQT/X7R/amKrLW7A0s7jEKi1VMJ5La3AvXzgwxMrp+bww7wFh1HKN3Xhvv+lKLFWQ4sUEOD0zd8CG7eucPfHjJI21YN1vyB1iSH3wVqtyGD321FZKYMEewOQgYKGh26SN3RxAK4uhux5ehCjaQ3GjyCMS4cIeECSG9Ami/Bv5lzzDc4SKixDRO7muxtyUi7xbSGtZIACJ1BYtKuVj8nKICZEkv6tAB0p5TtJpK/9/XVrKVqIC5Gn5Gl+0A2Rp6qk+LbeXn8lN20x2VCwnMxjORdqIQiITNmlKN5I4thKV3Ze3OPhGP46gumAIlPrjldf1dBKZVqhtblr7/oNQt+T9uE7exCNrEZu9oghu1pbzbmo/SpgGJQZbzXpocaLCH1LDy+GH68PkYGdP4CubBJyQ1g6E90ERC3NTSp0QBu/GHRqDgqyK3V2j9dxCEcVLFpXzSIB7on3SnT1kN8WtZr7ekIrjZi5f0VjZ7TRFA2LXcUfw+v714j3uPV07vb6V+Guqzup7wTfa5UOr6bDQ1T3NbY5CGPvUfib/szeX2BjA7h6u+ioHp1/cw2IrfMVok9S9Z7yhpsnxkOmq8Xo0MV1RmRf8bpBvDNH6cgLW961Vv5SeD4Jpn5HEoPWpbBq9Bpna680qtL7lTEt5D8J1k+uhkho8aCcB6XQ2X8v3eZNlMhvyPqR7PLF2hJCMfG8uj+rFeMWAK3akFPtO/o/VbnP2iGtkR7/rWe7ck92lDvk8q6oXiA3cZktHYFYSaLq/Wd2Evot7Yw3RHQToOu7B9UKkrATgIggmR6iaaXml2a1gHX2n548XA7GA0NQHEl1jZVE8ujv65YK5p+tg0LLvdzacpN/toxn+ebxUhZ9WrxYP/6fr9Dd/3jKT9qPcwb0ZHjwa/vmHOeZ72aED+8NvjT7aj4YMnL9DKEMLCLsQsf5EarQaDzcmTWgys8xKOyFBrbcOon9JCV+wNpa53kzxvzJ5O7bVGIgO402v5IAgHbO+6RUbSNbEWEGK5hXuh+Ctu9QahUtfNk/FnItXny1lltmcqOehqOIVT1blWCfzlpMrYeA2qZwB3KGKD+QmDdOALt20yVYVTB5tTj2+GmMDy7xkk08/ezZRHkiu8F0SYN6kOz01gIVGhx4PnxMBNNZ19oSmZ0G7FbhqlOWIIN2tq4hR3nQRsLN+eWFM6eCpGpYrQ5lDB1p4wKcLgCNRIbYX1syQAvEl1a7llGiQmb6ECq/7/nV3Xt89iAoMLWoQN9mTtC42bTObuALCdRI0FV310Ea36gJCuyQ4X4E50iOCXlEIKYZ45eU7UrnNCS17WqO8MCAmY/Yand6v9O4d4kmT7ZC6qk2ekv8GIkgTdUVpWwTWFjLkaZ6q9fkiCDJsYM825A3DCEUh5hZUZGJFNwjUOTlKo3HuGa4aRV7sQlx3cjhkPGRIchPPtePHjmm8Ip2DZR/q5o86FVBaF5Sk9XumrXpwRZPTIQ8bJxNId0kTDy1nEIPjmvYo3kUVH3D7CVqAmawsvm8JH2Z8KLO8/ycLE/DBQ4WvxhWo0Pph5K98UQLfVWZ/UytitHvuWl11gNnpSwBMZijoDMvuarjMIyi2buz2w3nFt2lpdsU17X3m7DfPdSAU9ozBqxNBx8mWf4WzrW5IfaqvHR+vH+6YsTi6rz0tLf4aYgt3gu05+/SiYYq5pqhILfws18fN2XL7xjVL8jw9EWjAFXcAuix8blRIvBCOgrr//dB0izhF6Q4oWfD+aK30NB7cqT/Opn3kXl2QFB4JyrpPrPt0JPzeIdIfbzbr/hE9plcxZZnOkVdFV/zSp8FxdslyWpjEPNJJXZ1ePgtW8Q+fbzcSjnd79KdsHHypr2ZwICYguSrAJJFHlydIA6Ttjc067yPgP6S3LV3rdJuwzy3VURPPHcEuBE9RKTDdFVjDOea4iMrycYG+WNjo2W4TIQg4t+3bQ0kjB2yZ4EE1MQaEyWQTd7kBeL8RFGoyLWXUR5C3g+NeYxfCxVsIvZVoBp9HFHTUJCbXacDeU4pAR7s52EfaGGusTdyg4bF2zu/jkG6jO2B4phg6J6GFn4PPaNgei5xBroUV92Oj5wuQfwYpJO3/plgv5Y0r80XSsnGEXuAWiWmZmY1lsQ8US4K1dYzPRcTy5Jlxw4fYlmKuVWTRbRMYKmuw1I33DmDEq1P8VP92Od4QKQnw9hFYWJPYbHR0xKSftb2WMjZ8tBAxQRPsko2tgFd8fyI6MCWnUbiNYeCpRs+YHAIoP5A+IMw7ilfD67stGzBQbPe0rkPkdzvafekGuhsTZkCc1If+8DSkV43eb9zvJrl1ePyIq5kn1iSK48mmVI5s6WKnHAb87PJYKWmHAK/LiVmO1GT1IDxFSZpp6kLIrQ7z8uqWdiM1+HzjCOwrqHqwKVQCrrOeaQZV3Cn2NWhvzqwXdibTusuLztkgAGUlBxHXhPHbYl7s4t/uGwwBytV2qw66lXlF+tFiQG8sAr/l2+r8X+oPmPxVda9IVEtMFPehuoD+szcvsVuBjanjPfYXvZ1sY08gp19W6SxEGa5MH9kyBEfRetwvbGSqFojHD2jSJn5jmQ3OFTtWNPaj6WgL4LGDmfRvLGMwm5o3lTJkx2kAkCf27T4iS0PfW7p0PeQeHjoPZ90eKsPWr9dxgOSg7PKMbAB5+v0/X3SUGA8BZjFKz+g1kLfK4vgHtHa9G7ODeBAEKJ7NZ+pZtitnlTsDdSbUu3PeQvYjt8EhRO0QBPg22kUkFv+JRStiXAXYTTqYAjjf+cCyqr7UJcxbMM371xP4jigI4Kub0l4rz7G2iqZkzSvv47XPVqmV/l/qyRaVUsyrWGaB8Foer1e7OepmcSpQxfAbod3dnOIX4z27UQXtQgJobSIkWYTYZkjCAP37uo9WcCNqL9w4NRW40ADhRMYBmRub96mtPmEO9KOezoayE3UFzDVvk8YxLZha/Bzt9LXEfY5sF/FVyV4e+iHBKpbaCoIB/I7Ntfnf+qFO6ZQlYjH5ecDmKYSk61/ngM7IN9BaZKepxqwDSNsMK7eQ/gnoyGTVPFcPQgoPz7GMBocsvBftsYYjogrg5iLJtK+2TCKSnAt8VEF6h8ypqi4A7HaAjqhK8eQZOfi9fjaw35vff2n6/3Hy5fs4iRuaT43Vwu+NN/BLTk6tyTyTsd6o3OFwet5g6ojRzhtMnS3peiBHGEcGtg2GVTrJWp2gIFIs5KPyrAophV8Onw+qo/HH+YrmB6vkPieGt7VPry2xQCKnJ+lVCQrgZd0AQMCqvBgQp+mYcCLJzoVtart15zDIVzi0momismLW61a7tTrqbvnlGgR2GxHMECE3111MlUkwFXYtx1vcYe3fbYFXXPoPAKAoMCf2s2xwctbtusDZ1cPHEXsrhg3/zviTN7gbp4AtQqyGI8COwAUt782BS/OxOwDrfsN2AABVtfQvvN+Hai79m45zarWdRnmo7b48HqADqqPphAJOcVWmE6TrpjEPAGAPOIiNuy1QkZ2ZPlALnj0c0LW8YUJQOzVQI7Hs7nij+oX37OGikkz/Wu24Xl39/yx0G2C/WP7edwTWwENB1ZgUIXWF4/F+Hr/JnytTZk0+iu+3VNsAqsF0OLj5/sh79nCxF2bkfPhkWvtMijpO7Xf5R9kf4nyPCXtlFsb3H7YCf10Rc171fYX4MvixfNsA9tosnsxd4BIi9GaGT9iv+W53tfpIK2XugXoVRKRQcdx53QCAj68BNFTUdcqnmZ0LqS3ukg5q5isckmNHUVkxdEhOiVRJXISuGBHtETFhrrvIs0ngCmrX4y0mW/s3YzC3S/8BgF4cqD32EwR0ZN2mDHppiwcL+sT+RgXMwSnAcSFsTduP80FQBb4rDv49Ge9DKs6aW2psI90rV4gcAt7Eced1AQDnKIrYj0f8uwKmfu8wMr+ex/at+DweCrbC59l7ZD2HUL4oysJnurkIaug40ygE01hSAAAwASJFtvhpiPUHId5mMwgZ6lpROiDZvVwHAFBCCGOLuZhnvWQqIkz3JdKaxm5xUzevRXZkZY2929k7imOvtveTwVj3lH3OvBEvfIB4tw9/pcogEIS51MV2nLx6pta2ufndi5N/XyuzHOp4tX07VU0OQJPa84WmSZDrrfWbtTcfv/T39LPko+c1rF7YEz9rM6U1rF96M59g9cktVllRpsCqYhx3PjcAsAqrGUXBMKXcZPANOTGTJeUMraxbO2swl+LlKxzaRURxdsUEzquwS5GzJE5olHIeIgAQaVnLCVY9BRMda0k5d/1pC0gNvOwfANA6kA2xHyfxZ0FOob30iIXKxTmcqD8XxRNkr+jI0nuOA5Q5l/Jq2URemRf4ru8IkTdlT1JNaolgiwm6GXecj6Cx55gVt7BVgStP9CpJzZzxZDKMpraMBPF149VfuDk5W+JGpq7KhshgFoHBMTY8t4SruiUqOBuCgtuPmODsnl5BFd3SdTQ73pZ8fnYEBJfWAo1wYJhoYDrBwFRigU2n1YOJBAYIBC6Vl740850tyXxjgoDL/nFsp8JEAHMIANYhIQCe+XZ6Ki4wtj9z4s37J596qh8oJuSRpUTYdqvLqsl1IUNgMbGRMMVQqerjwIoOBIvhvCkAwLkOnN3usRMeBy7stGOP+bpL3ptAVFwl49CpoGt7WR4AcBwjboIWbqo65luDaW/ux0yvmj+YTumfhIntczgdVuwSmAxrg0FquqAGm9CpGElDj+MzoaBJj1s1e8vq2PD8Ub2HA5/0xTXL6K5pu/r9MM/tLnWJod96/hO400WAK2z3904HZ8b1HBMZXTWZkKNVzTR4IrD65o26AQALhQp4AbG8mTGwc8Xd5VXAeQsBSI0FsgDUVRK44G+FVjUhAgAtQ+sCJ9jUbPh1vDfcvcq/u15rNNB14z8A4DLk6XV+vLY4F6t5HHCxBfFN67IRXJ6mvw0U11QrpXisIL3DrfdWpyz1CcoU42Cq6+fWA06z7mHXSHJldz1Bkhc25j3eTjWa2gGAlJE0ZPmG5u00UW83EtQFOSsNCaSuMQ8AcA48R8Oh45ZVgdmyMih2uCIF5pZlo6wCC7EG1KjAVndAsbwg4+KWFd314aQ4TlpwPkNrbKkHhuodKaKYFRv6GbIfc/DTIS/9MrZTgbEBVOVonNhbndOIfBT6ofxW+ho/Rk89QuxZWDnKVkL8bABfj2PvaSj90uinomMD2POweJQ+Be/a1Cs42xFUIjL6yvFiE2NViUHkDnHced0AwLTOPzTImzsFZKTtprPxkryFUOjqikroqCpQTJVErdB9TYgAQEPQ4oYTrGru8jzeG2ZV+zfX4LSW/gMAWhl0k/3EBfraag4BBtTFkzBTRYeW3rOkWslLmQW+pPdhq706C5QyfZhgboceEvIzWO9lEqQ/ZO9xT/HNeinsY643vp+BGEBexdfzbQAABp/qaNw2vRWCquO3vPmnlM4CUVXQ3ZaB1pHCzA0IZ/H5u0IIma4MsYIQth1nEYuQ0CoWEwAA0w7bVYgUzJcJKp0cm5hka1dmMgCz4uQadgCA2UKsWExpLWFdNnMDYE1LvDGwFmySEogbcIxKHHj06/lwe8wpUMf+TymTqZT6cQlfVbGD4QS7nmACn+6OoP3enWfJG24ruwwvWxvb68HL+c16gt2TNasMXmaRIQBw0wgS+ynUJluos5PourUM3SwnJ0+i6Jh8vnMBH/+0qCq7K1ACAtXukEDFAHoaEAEAAARd7lPLiAJJU3vVf9PRNLE6vfgfABhAc5D5sxXKqv6W3tzG39LG2/hb36bb5EtKrTsBavpEC4MXLK+L+eAi1n/VrN8H+SC7f/79K/05bxVuEMRc/u+Ca6A8krSyN+q8ZhSj3vrcZL3BMXZZjEh+4pkDr12cFHsL/559wPd/sIUbHivH/4Z5/tj48SgOcLjTe8v3zOSy2/2M/gD9GkMWsVtTdyTVvg+3W6uwXhxk1FmId6QMP/uZeku8OJb5sRrrttOGRRDG+lpD88P7L10woNhld50dJssC2L3OGDzF47ApDuFpTp8CAII2lRzF8nnl43Csejuv2TTXrZuiCoipt3LVOC0PABikV4MhsqosnJsXcqNaGTOB3Fwn21xB7shpsLqgtLcrKqoQbBdOMXxwF9rGKrzKaemo3h+DlyEn+EL3F9zk7rf19d/HjKBNRb3EHooiBcy33plc/Tq+s+a6zu92p3tcZQgAjDX4ErKRamcBDryZOGA15vzu1LqhQJ9MYfDu3aUOAXV1EvABnDIihDlXeK67OE1OtL0glpV/vEGwZDDsxn8AYCRou9f8WQRwqr+tN5f4C228xF9cW+ZKN5RiEvjuRGUEldYn6Vt6kYQpp0tCIGG2M1CioNRuuxtMQ+kqZyxYIdOdZe0AQFgFBdiWL2IhA6bbLuIhJbK0klBFVWCVpjwAgOXhVVVBBTZuakC27IxTIAme7VmQXt6QEkijCio1Ltwj4zaUKHzkPcM5RXxjvU0t/cBQqSFFqKKiiIIb/jhTMe8lrqmdy2oNoAJD4wToKYbsWyW9Ofg7we/ImDz9CLE/XaFI8Oi10pejA7vfHCY/l9oawP52tWFpigZrOPMgp/nE2huTszl7klaVCKxzoloEDgCk2x8faoc3NwRE0HbZXL8sZyH17dVYFBuoUp1EWUDHRgR6xv+f6y66tlSUkduLpmZr/6Z3ZEMdTFfjPwAwIDTXNH+2QtTUn9Ob2/hb2ngbf+vadq70glDzAu6AcGy/akkqsE1/TKEItTbUb1F8oT/nBx9PzPQmWmTCtfG1dm8LcVdwF5g4UxQft+VK5Nvoj208DiQ8dQu3/atIawDmRPJ43jNDVrWAFTJ0OAJEYJGQzpeDGKkybTYd5mukPmldavVcjb4/dyfi/gLd/Ozoq0tIKBWjJy2eLim1ITyuoX2Edm7GMqOichceVrfRhypP98e5uOAaIt1SMlMZ2IhIq6e3SphC+I/h0nbG27Ai2dMU2mYYBoNsoANzwdjT0gvkUj0hNRpsDGuJBYmO1C7D5OPki6qP4mLe/obk8oiOTLSuUWjYBtLtYyCHeyA5Tw3tYSJItv1hitwsHaSGHT2dNhvkLxqYUw9Hu7C9CIQD18omTNkPwc1IQXEGbuS07nkzR6JsqXjCoNSB/tnqWkLsaDcUAmA8z86JiEM/Ni+SODFvBxi1gEAWZHLIlnoB1VkBkOBrf239cXXlpVD8c2NFej6ddl8uARiyiGrmQ9Hka+APe1xY9NRUTfwzLfv6FcD5A6WEtXxtbID+ymrVY9/J4iwNREZjukGdhjkX8hGsswGUWk7vnC9l7ibCX6ASP04eueRlIMD4qCzdpyeVoe+2oS3Uyi7xW4CtNYNLneV35GHLjDUvqWAwFviZPsYXKd3Uqh3A9GlyAfPGM0WbZ5+eTm8XiG9bTN+ULlK8BXWhTt9eX0xw6fmhzbNPz7XywsmFvyOUfKx3j5Wv9QMd33Kp0ouJJv36ePfA/bGqXGotwjghbiLn9s4bFtrzcNYh5vdx9wS8PmsHjblJ8rX0ORBx4SCS1KvrdExAQ9xPWeNmlEJnwqBsif2jfm+PyTxBNaN3rYpFkTQK+0rrGNAOxWV/wBCJ0kwgxiXHwLVoG8NTIrrxMiIcUDX6olm6hzE3XbRZFf1Psjqff6ujR29sTcPei1pgfGRzvgAqIHDToyngNbDbYTzaHmDsZMwrhVALcC6VHdMmJNirZ+h4+Aqx1qof3sHNn848n6ekkUKtk4gQdIA2AD2rUSVwMTGA95YBHeotFyOYhipzN3srWpDN6Iflf14z5Ob9ObbbRt2rWegh7JrzO+k0WiiO3AYhqgJrXDZ2t8iMcJNlDZRCMV8DndlBfACGGHAiLJcZtnQk7PVJE6jP8ceelv9dOzC53kfXG+wBAH1T9CXY8UBfmYmhWLzTo5rAMblPkTRKEaBgtZkotQhQ7LLEKNFqfgwbPtog3XsLUMN2ClDrVbGAADVaNwDlEhNsrXS6Fh2BW9tuLbBiz44n5lsQyCo5cbubMgQ5d85YKiOkr0f5k9PV5zqcONcoRMnJkGJoUL1q4RSvmp3aVQeS0lXTQxLDB3tHSL1gYmoFOfhhlYFVoBnIPzXLs4M6sfAJNaRCERBjfr4x17J5b7xCQllj2FP/auE0VrHLhG4qKin4El9AiQ9IcW4M8pntZMUtXK5iTkRlzvjn7m0nwtCCXVkoqCIlK6MULVW0ja07CkDffd/ZVrm6DRDZeDQv+PL2Pp6XH5qd5BLchhHXRrowk70ZsWolmlycHZeoRNFvkmOKUHKbe+0bYAslGi3kgZycD86ZfTZmRG4vKBRMphUh1Fh9Fyxz3n5RsXa4Fg9wYMTpDx4t5qxHiwKc9GSKY51QEz8zu/ENXOaQh+f8YjWU34kzjdUuErVYbcqaQkD6BQqcfSpwev9ejYSyePgOtL5aFtgex6x8BCSSdarUMGq9tUM+h7pXYPAnPvxK/trfumJ1bVjGnipf9E19v5hwCkD6GkwAgIDA0KbHTMcJyqIElfmfNAhW0nXG7kKw5twCNhvBunaR2DIAlxHBWm6unYoAAIgDcKLFgUb0ddjaX3MDHDhqAAgAcgPyiv0YByqrMdO9MjKCLhXFyfWXFHSblSYEBzYKdrKXAAVHZQbsqWAE3rVVYFw1hFuLXOXsbizkapuNJcPbVzcNEAFAlmDqdN/2OGovNz01d7tgMgPJVU6FTCfNhAAAF8As2rgpAgylZ3bHfVXaGDx7r5hsZmUQhwMzqBE7mFVjglV1DsU4rHmlNPXnfG4FjY7fKtQNoFpGYwS66swnSb8lOekLqzlu++bV36rWDWBfvdqocZ33hBvhXyZ3r8G/Gvvp1d8mlzydVnUtBMW2bB4ObwAT5g2gVoMJAKBewCzTwzOGq2ZRAqr4HwQm2HQoY1SflfFGpgGCtzGSVHhyqa2mhdv52no9+aJxO0zx0cU1B1GL+QH6viaAAEAH/LX5A+GHWrPCAHcFsZJY9ojfZZZ68VGlgozuYRGP1v5ZE1vnlIRkfUa71ybJ9dO1uT3X5/5+4usJ2R6uGEEGCTDhlSIelpNdDXBgDfkhCBXLMqgScP45B8E35l8YsGcK4Fw7QxJghRXQANhjyxkDshs+AACXENSWw0JPISL192ZMEJPWDZvfcaNoUgUWr8my5pPkuicgZwfXzWjenE2FgLkUZ0UjcwqkCxvDOpLUmfI84zmoYq4lrtJtYlvE0Rg2OJGLBAwb6zDa3AKN0xtp9MFLGD3+0V35Odcp3O5aBh7+rXbNUcL9weBlnWkPdwtovF19Mk3c9umJgmBvNLbXy/I4RKcX1VEid0n29ti6Wru6riQeoFgn7W2ZsDdAig0mAEBqgOnh6eMB1GUAyrXvEuyg9owogT3MgADAXpZECI9aJAoAqCAKw4hoGqCovAslO1ssU2z+xIvrKK6WagMAKHdsYcxmqYUBGtQ1dLmFHLASXdRstJktG2pqLXHrVu9Km2j6dKTaNSRecmGA9qR1RQ8ybuAEjYHGvy5OlEYDp5devkvTF9419AjUSoOS5RqG+RsheEFXiOU99MAgRldcPnYA8spa/hAAHFTSddLyHYfI69FHjjvfTtr1GStXaUzA5sw2rd/bwkxqm3uXVrj2bTNHsIXt+zFbJgi2cKeKY9tlsEVYYQ+eGGyzT6kR88DR5/KUvrhw0VS4vVLkuHwZmhvWJcb9+vDTWxjn+VWHK/kX/SoUq3XqR0HBGTPh2QLmpsEEANhq4LoN9XPvOoKU+F8UBOnUn1Glx5gGAh7XSBLxrEWiAIAPYtCMiINxvTWehk9Wqi4xuspxDTzbEA8ATDcorOHi3J3Pg4quWM3oQAuaOJv+nCho05SaGjfypyDOlHa9bu2tZMVZa/9jA26ti1vDuy4Gt11HeEMwHM276IdGeBEfuyWDSxogAoBbgzdj++6Wwc3W3N0ddJriKpdNi1hptqqGbxb5nHT+/YIBNdzO2JKvoMZaZqCCOhrZIxV0H4OYKdDNGrFJoAbFpivYPtPh8zIXnWTb4NoMHX9Ry20AdRga5LxjHugH46M3mZujv7QGO7LVx3JrfbcB7NhWfIaTEPDHbemR6f1aLg16p7axgc96WnvDbFfX3mDZOmlPyYQ9BnxoMAEAfAGmwtNHAXhn/kkD4OGGbFt7xj6AHWZANMAelkQQj1wkCgDwIKrDiGiM3q4BivTrJaIktTL/gMNFewCAKzU3zCRFgIYLM84tHjj8KvxqvSnhc7TxCk/L23TBjwvXHiotEtbfKvw5+lkkFSKsNf9Thf0xxbdyL0dmfhsdeZV96q/qm31cL/cESbWfcYgVSXcZmWQwLWX/OcrSNJ3jpCS+0D1+A3c9q/MHX0J4ghoN41Frez4G87xwUEUa3SS4QtPiGQjKX3b3V3oW8PrArxQTyNmt9IIQV8IZNPPN+xiDR7jOYBlumI9m+ndavwQK8ml2TBDE7KrwJRJLIrn933ZRANS++RXGPp5aMdhSrynKLZVl246VVuF28T/3Hn5NBXZYO3PdwK5YwbGAq7bkp0NM8ZZ8AABTuwjFcFc0An8wqrLx71lPM8Nb7ER+vOdplI0sAMBin1K76Ch1eqH2yGZ2Lu3EDKrTZYurZ3nk8Y3q4OOG8SVdqLdVwHYO1puo1IsrUjqt6k1Phhu+CwaMh00+Km9c85JuEr71c6VVc6coTDYFApkwkL5KBMBGkf7cdn4lfi756Ou6Iy5S8+ndlkiwa9w/tg7BPXed8XgIXq2t5KXgpeNnDGFXYCAtFKodFqHWisX+NAQAQNKCjEjHjDI6QG/rdRLRB9bgS/YaTXsAQN9mECdZpIQpcB+s8gqBTWC2tJk4uAlsR0uMy9xNswksRi6FG5OXWJJ+ZU+6uIlKLJ8pQMyjuLRZO127IrQ5dg/uumPEImCZvK/Lml4CluX7+axh4z38jDODyjDNmCHlRwt7m+xaULzsS+/TFP+b2XbHspvwWjdkEDxXhn/+BvDZ6YmXQQ6sjdKFuQiUIcsugueudKltySz0EOPMn0RzN0l5hU0iIj7H5H1Gz+NIo14fqzygBDhyqr6EhzVel9pnCR4A5ye8oyUn4drLXgFM3DSeijXfhN5+ndLoizM2fjpdAmKqvn+Snqv+DW0Rk5GiKkcF03T2GfKlFk7koDmkTRmuCo6N/+zDxA9a0gLghsGHa3f7GzHXnwufk7RCTgAGCjS113fL3VyubGSz8C9VH+J/TK/wlYbHe0XiOoCssAqQhVkOS85pjRk2/zek1zm94jq4saDT5fWk/ic7uyhNxQaIu7LyxeJbA2YtXN1P8V+fA+oqF+5lf1IrZOQoEtY1WkB4fxbUSPoEY/6uc8T/1/ZhckpcKWjvprk6wVs6sg3IUODu0ZONHFcd5ZLmswfUJMfvlsiykJf3jDY0f+sAYIYjjho0sQ2dX8JZIXw89IAQsCMyZnx3zb0lYgpPOEjADm2GTHmEMGSyRfXChbWO2QPb1UZmJNavM3IH52+cZz5oByzl+TwmeeBoGVT4zh2AHcEd2CTOq5zP2JnU9ZIhEU3pEacXOubXNmPYT9Iyrz2PkZDbaY4WD/ht8sKMY9q9r4QvYas9aWviMNFJ7+q9aTPy/dt0kK9cnAfMlygmIvIQnsU/inaR6Tqd2tTz6bImJEJrFGYCwef/j8G584jsg7cSkZ1JF7UcWR22TCVpWf993SKBcqVNaP6vE2h0aYGTARq0Jjksjoe12bjEw032fDSJyPo4Bj9xi9L9O1yaT3PfAikuJrNzdXzglixr6TVyW9QzWhZk588b3VhVCbcC4xJTFxmnmDpX3GLqAY5jTDVTGFTkj1k0gaF7sdGOfOKJtC34HbEThv/ggIetpwlCFx6rmTp37GbqgujyqYuM7QyKgtJjP1OXKRb0zm/d6pY/XjR1aeJHUxcST5o6pzcy2PGmqQ5+/GnqIRKPmmph8ampSxavyhWCsQWKjmflDxIyLTn48a5yuvCMFxofIbGbU486JeA8t6yE1FZkNQufzUtrjxxFUZqkrRb2bTiFNhiUFOkCkzvjRVs3+aQn9s+dK3UXPLHo6UEST47bcLYJGx5JyYXpCWpTCk4rYnqgJwpNKUPiECRAmoNrbKSqfJtl4GbRdC1ZtfiNNVsnc5QVV2ZQiC+Z7KDjcoTZG7RxejediCl9yz/pDuqIWIO7v8c6o26FgDWcOKdW2qUNpk5wVqZ7ptFicadaSggAbPUME2/Blh11ariFwULd92UWmY1TY4TgZCMXELL7gAFASrd5nTm20qrowm2O0CZ0+fa8hEMp+VDfYeNfM73HtRrCU936vdKrvZ2nniDHEYbSlRIGzTajAABaAClphug+jeeCBFabf1QPM439WLly2aO58otQF1wCtUUMYVdgIk0EbBsR5Jmiu9MQAADJ1WMSuftRfQBU7eskAt2jRClNewAAeuaMqUxS2Iv5w5rVDXyc3mTjs7QxG59lTLGZgghu8cozqD3JijALFJ0U7Ukv0uFieJ16c5d/rCI8scluSbvbRFbhssluR6vflGlG6h44PE0v1L1aehIANKeQjcJSuwGgBUFNleVrp+PcBWxq45x6tt0YTNtUh6kya7DVlNJMCAAwAcZVyHWi8K1gynpm50IIyLOxByE6BoFriBHrxHhNcgY6eZNjNMYb9XN/jvYv8QwfriF/EQKegg4B6o66JycYhQ3/gt8TNnbp1ww6pQJB/iMzP1UdAlQoyG9/mDg3Ka+NJbtD+ZDoVVWZIP+3VeaOqpnlsf2PBdz2cZHwYETZAuOijAIAzNGsbHlXe4jpul6Isq3L6V9z+S53FV57s2dYur2pDXToHok04xKlpSclUQCAWtQQRD3ZgTpUnE1s0KhLewDAZF57QdJ1rqUPcxgOh3Kc2TpUDsTnTYZ6SZ26LYJIdt3145JnScv+tSRc8pb7FhtjgQf6vRj++ubchl+5sg5v9gEyLz1kYmWXk62IXeBlOdlNA7fTXAIA3BXC3dAN7g4qlnMQpmH+jUrIe5qxR/047jpiuT7FOGsrJx0bGcfNGL68lS4nhNEu+gAA5vImDjGNuCyDjgTaXTWQggSvl7IAAHABIkrMhex5e3g6EjGxmeQN2beiyFIsMcXT9hZ3iuyPG+xLwkZ0je1mWAbOHxQNfKQpTmx6utzIWX3CX3kE3jpVnVXcTXJZCUe/tcVqnzf82BTL1RHGinX5gk01owAAG7FypjoLb2AATgBlas80DSjLDDQENMWSNAH2VG67rHZ9nrYUejhRlKgUI1qpTGTGF3BJr5fDAwCcXlAK+1EKkkWrqewEvULy2BZrcEF5WZuGkObGuuqUfsEkKmkb9kSXnAomtUSlWMAa3PdzsXaHIWs4UdUo7dmdYd2c+PANkUj5mKNI0finPMZ+7Q5msZJbXywQAmte7Cnnh4AIx+4TS5oJIjFCTBcDy+MV4BASLz0JALBuJLJcajcA4MoQFrF8LJ1nmNgilrLejmU3h9yVoTCYvedGEsw0EgIAmCQ5IpvLtrRwFBa7UcG6ui3NGr1awncZ2ga+y4QwofRV11jkIzgc831wRyDcOfZ9wuF8ujaslSif6D1qlWhvh0erDpx815boU9Cr1KLjboNFyIRZ7GvDwHIUp6MAAAr20U0nSOBQBuBlksIR2mzXma6B0G67BToSoavmSDqPxezCtWtGuM/7f56GAACIsTlRYnxOZSIXyZlr1AYAeD1DEM6oqJj9aA7ScNpM7RakydliXc/yg6hZLqUDyUu6a/3qPrPClqjkqmgU9+kSttRiwKbAu9ie6H6RzVoltjmJKhJMBLfdpUCIcDlsFAMRicNDGRAxu/QkAKAiJHFZajcA0L1Iiqf7kq4xPKBUc8cMpKp2VgRSHNZiQgDg4oTUauPSAlHOYKZRT5Qgo9K2IKOGsPluuPIquJia7Nufg4G3vbzgle+an/rvjhIrkkdV8vSiyY9lgfZxkXAaK9ey5KKIAgDcpWVv9UHkSpghSn0tAS+jlbvU2vmzK/RObXBA79VIJ85ccydtbi5QRKe03cTCKVGigz/+PQ67vqfziSqw0toAQFIrt7eSTrjssPD1jSVsyFzDbt8UKhDfeknToq27Ma/VLILrCknIq1vdzfGkfZYf9ZBRkydeukarr4LTHYTj3U7fmBxSsz48bCRP1SNCuQWUAMCm2Vm6GwDqgOI+9x4Jq+Fm7uL3eAcFCoZBm/3YTPOXj3u/dodfCq9c7Sr9478LSSSCQ4BKAPnt8RFmePFS/GQXvScfH5UKAPnP/GhWjT2uNvJPhw2292QYi3DRA5VSAAABI9UbVTFgYAs7yjNoOSDSoKFslJSKOlgwcduCqmxaW6QsEoh8IsEsxgMAOUAVkBcEcwY0HxcY4dbg8Ddo5thf+Or2EaYtZpAaF1cr2j59eY/k8Naz34seqeGRQSO5bhwydxXC3YniHBMA4ASoiwakl6g5B2F5DHDHQOZqZ6YHyJWuHE6sOcdQmIotHwvYqf/lXd/fFAn/IrGkC+jKzMsKG72neWn9SgIMsZb0gFdVW3Mn8JjlLAAAywXOwHDZ61tZUxJXozMvs129AjtniVWVBoJQcfffVak6ZognkNVP0rE+MijVuHUtoVZ7UQkaA41/VZxg8FE/kVvCOfkeIhEmfDpSQocNvw/f8R4uGSfp859wPXeh6nPW+BNxc6zfmDBuANxFcVoKAOAKDfUecH0lwJr9vJReqfpsVeMvb9s02OAtTaQ9wIUHXWM8bJOTKS9s3l1+DE6Zs0mUO5/eFUA99zqJEK7rFSaF3oZ4AEB0V1IlN8J+jBxRODTKapqeY73IUFli805CgE9geLP0VnmSFnsYwPK13nD62MBJa2QKhKCqeZcDUHUPeuq1xJBt7MI8D3lu+yBlRJuYz75QuY4eDVN/v/mwJRiiwrOMep/u1Qw7Boqcn6jpOpjfhm/FvzwPNuLtrWabFcXgVWG9nBXG/FP3N5slV1GFVP2BcohbSVCoXrdT3gNr7w3KIMOut9BvxuXNTe3gami2d2hgW7A8QabjNRuaaAkZkGmRFSH76GMMtFKFF6VJ4Uk/YIv/iZQooCIDM7pFPSQzdF2/py+WDSQo9rU0Q+FWmX3+t1DKAxY3EyLKkl0CC6AJmtF4eRiEqgChrTDnsh09afuxJ9csBnUPYVk35msPV7WwyOp94BCpCvT7TvyTaqY33Lgq5XAIY5butFhBbjePXBgoRYpxNObIQbCz3csteRS/Y0EWHXc/4gp8MA6BCw/mcqvz8y4kSiAYbIJFhjzwzQ5mXg7Fgl1oFHSKB1FRQ8hxY/qFJ8RHJz0PfDInOMJNxcuVPWiQ7nfORkOaaKIRaKEL8U5h3cf9ad3HCa378I+OqNf707oPi3wrHIAew+4tfQMpqChw+0EvGZ7pow/ub0BNi5yLvx78hDIKKaXMOUxKEKYekUoU7gfrPoYWiBUR9j45q3jGPQsjh1z+aRO6Bjnjwzj8El9kRqyraAuDfhWNNQ5YuDmIVjteui6G2rVJChUNWOnidyteR21FVirTNPBOzlnqOQjmclsbhdH3SMKeoktqZ2QQN9OLakubJS8mIGcB6ZArqOPhJXwgFqOiuycvMyMcatrFJ2bLsKAkuMb6VQkBgNzKzcTMqga1eAGOsqz4cJdkgqKo+DSXZQdoUfENL38INKIyXfvk4erResTmPg3OhDBdBdj6neA1KyFTSxVNuut6XZv8wHE1H3xq5dEiRPGueZJ5Rcc973b8I5quLGvS5D43j6or2+R3nrqKnGvVGOqyeEDPD+BhmkwoL3CfTRF7Xy7xm3cRKhw82Kq1Pj/QfJWv0EPRiRbc7pTb4/FqWa1QYWdkMWH25IuiwN7lKAAA+xirKBDL0plFqEz+p7pvwFjp323tmUvrTwFczQxcAVxkSa7FQzfvAgAYCrfHiaZu5oNNxKFVidrrH3hHarggHgCwJBNl/lh7wezEKrysprWgqMLYkiX7du5JjKm9txJqr4mT1QxYuElUS9aFnrwhZ5MowM5E9BI4tkOgBoAT9bA6MclJo376/N/FYJSFy3Vtq9Pg7S4nEwDUZ0hNt6dijFSLjECcqns/By5c2VhxF0+UCkZbvbdr/l1EouPM7GRskga1MrxBptUsW21kOsMgpAZZyLlWnmwdqBH3a7xpiG2Or1z4XkcTYqL/hS6wEvOvVTF07bUi4dtd3LLXvdMoAIAd2XU6zZlKsiLAHY7bzur25s9ce/WXdtUGLrSrSnJxZtT9L14AwIgCS8SKibYoXIui2cQJTTG5BwBUkFlhUuoWP76pxp15Fmfyxt44BDPx6BBTS+2gpaP33O0xtsjH/u0dqSy6UrDhOtScTxxBQE3QhCgWxrJtPUglqWpkgJrdNmjmlsoEgA2EHFMdGkoQpICMiMBd70UycRc2MGvGYVenseu8jVaekEL8m87+AEIM8TtT5989vD9lOjZNbhqj8EIG707iqQ6t03YLLYYNTCkFABigpbpRrAF3odnps31ZQGus2EALOkrSgirxAgAGpi7aBZ1NHG7oS+4BAJ2y1DAplvwRTS9zEkQoPjdccYBcT79lBR7BfaDZv/E1qef/onV5e7KR/4/t5Pf0CzxQ+7+qPP1X9c3e17palAmNWjQBAEBUmGFzFJrYQS3VgFvoNTviIgDHfqowrVLB+DuZ89x+zu953TiSprj7L+uPO6uJPq+ykAMAwGhd3JJaGW1w8H+vYfXZpBdaAIAx+qZyuU4FDIaSBpx5o+tY6ysxMbXW16qJ1Ky7ir2RUMZ/T91WKEiT+YGjqL2fzz/hHILfaDlBfarPwwjhnUJLzm0XUgCAKtpWcUMPQxQHvSiOAIvWO0s3smfOL+MtDQuD0SJZ9hxfazCqOwGEaWJ5FwDYwWhcnFF0nEtLProykWAVXhQPAHDxO2UX1g2yB9WH9CYXH6ONBXysKSXi6/R3hO8yBBKo1cO62lMDdm6yBduZ2N4ApBwCGgaoOGw0l0/T/10MRq3AQdc2HYG8Xk4mANC3EM1tTzlZJK0wAs60sUxy4AJruYqsxlS0gppaSAgATGX59QrWroVjGumTixk0g3y31hdazoZb69vzNuQgxIbqyVTFeM7P+6EhF+CDRh6WG1wf8aE4lFQvVYwDFc3u36vTOeHtZ1Txj6ejAAAqHpVTX52cnsoEVDNxVTzzzJl/fWTlSgZjZOWMpmPYogCkcRcAwDY0BXKiaaaBlhOpxqpE9wPu/46kuCAeAPBKpmW6WJ08zIO+UIzW9O52o2RlLbHTzeQlNag5JhUWmJ3idbsKocmKUyj+t1EQOpJQLMML/fhSJRT3GnpuonCa23qVCFY4nxVWO+eES6PG/5PwV5JjFG7dsa2eQapKy8kEAKEbUrvbU3EbqfZ1DYpXwKHZijtb5BQxUUMhAMCrZcrpY3WczSBNPaNmkLaZLTJIrwkhk/HEninzMcz0nzcDTo/z2RgbWqo9Z7SJof1NQSycOWQ6SokUAEDreTj+aCM/Bim1SwLejgZ1eTeyo9Kb1chc3cWVuZ8pf51qVt20ijFR9yzwAgADdCsuygvaOvGcqcSH6r7VcArxAMBokSx+dgOFsgjDmpOoZFrk4+IqZD0cqFoKDc2yK2ooeL9eyzEOKIvgHULLrn0MflgNbjpRfbQkAbSgwnAK0XaYCiUZ/UPfWNntSHdWoUwAKC0SGHV0sLKDq762BIrdk9PYYeP5CxDvGAte8KL06EJC/1ygT2p9ANGGeH50zxuWpP5ojzHlEiqVIw0J+tOCHkYMZ4pvPTVWKQUAWBXij8Z7YJBSqQbcheYyaARKHBiAcBqgS7wAQICKizJDn4fqM59YXMdiPAAQQBUQFgRzBjQfFxgx1eCE77oT8aG1hn+95Xg+xvMXOaKLqezwhuK7lqc/qjx4YZa9HELc2NV1mT1F6MFFEwDAQMRt0IMacEC98/td9tQ8eRs4/GBSFZlDFMve1d00hqHsblKeWYuQ8FFBMdFaXny6/Jou6idliJ+l3XXWcr3WLGpPXXl5UI4NLWx4V8qNCa14+0nhSQkOEAKyd3GFiuo18uLGPC+8MGFqQrFj3kmpv67078hXk0stMi2+frECpzezP5xLzKqmaqr+BIwIAHlx0mWje/pBvMGCHABgKMRMgbHMHJOxRSGZoLLmvMLsI3mdZhYAQEVB8pTposztl6cjSUFspm4WH/1BKVsPVEEcQaWYe6LeHZzl1vpL29NBmCA2NVDrsLRGsA60Uofd2c0BR4OG3DvDvOoIWsBXqc8/KWXy6td56555jDWs9IKBNcgXZK0vttHbZw6L7aiJj0RqozCEw6v8WHSlmhJqSqRATNPjaCEl9KYqiKQ73l9EeRL00EAN3JG8B59DKynocr5jPTlSDj6WNkLiMEHZhGxGciDWQnd3go42qClbafoELdPTDKM+/PrHeW+Iw/tdlTu5vqxiVkqanOxXrlg9QVTfbdZysCRR6mYUAEAaARNohgUb1yYPJIVYNgHFLe4B1Ecxhi+XUo0zYqzdTqFdJCR8VF0j2qqN9Ezkg8Mkz2lYRF/L5PHRJp2uINr+hcNcT/RitpEddkKCh4aWVF3zLjXuXw4XTpe/KzfMNa6xwnwF58PaMBxDV0J+hKulnP6E252B+GxGD6U1Ert8FwDQhkHX8iPOnlG09fitJ2NRl2heeaMiTXRDPABgubJ8pQA2f8ICOpHC7tuRaXaYWygUb0dWXCARUGjejnK7Rt8MEGfsNzI1hCLFC0MgQ0BY5XgRU5MCyrcqE6eQko8PxIWUprVwkrL/pFCltM0XM0RKN3Xb2WPgTkOZADAgmNCi7pFBpg2Cqw3NMP+tdLTGyu48xidts5kQAHA53Y0gi23jPAUNdu3MONCwwrPHCw0JBjEpaJXpMtsRJaPsxNklyHI7eR6H+EyAFr+Wu1tt+t7CSZCs/r/ONq6YFQWqy4bqrYWpLdVSUwspAADFht6u04NaSe5T0RpQ5HuGETJrbi5gZQYBsMQLACyomOgGejrYU4n1xIuDldwDAJr07YFSVPQzFfQdrKC5A146CsG4RnTvQch3ggndi56+BzucCEwxwnndLnYfcElnIhsD7AwjcGUO7aN2GZtrQe0xRteBuq7ddhf+saFMAHALdK1FNZuBa+sGTUCphKGE9aQzzU53X4hSIQDQYIW4+iXXwQkyPbSiHrDIHnuw4wd7MHkyMNDhKrwhI9zDMe6C+OWIeUU66f88q+/5bW7dywGKJYYbYCkFACAwoaGjCxYFSTgRSEC5uQUnMwggJV4AoFF7WjR34OQTl+u6GA8ACGwBZLCYUyD5eAHV7zrQDF7gSAHQnu60i91p7NkG57E7n9gb3yRlBYFnVZ0DJdhGB0owrpauzG3XaTVwoUwAoBYNGLV0sHKDraU9FQquNhPfk9rG91ypqz/kOwT2Ff2wRbbifQr3p/RAgEhX/K4dAJNcD2hetJu2v4D6iES54v9LDbPOdVxpeGK4AJRSAAAAkeoFrAgEwNzcgMkMNuASLwBQ4ERFj2Z9C5NPHLAW4wEAESz5Ixpc0Gxo9DqIUKyDlO8LiF/T1n/2LCb8d+qfvfXzbgzq18A/vhj2xwCb7fLg95bz4BvVQeTDRAPfs50lK1CV+dDjBRMAYJZ2qrlhmsbZkYMtCwKQBbuE1bV75mcPPbrSByhaGu+r6q74MPzus25ffqCBnb4/swfE/1X++1BdqH41n57m2UV39mbKtBUa2mmbMo3pijBXLQnXETtN1rJbid0/qYtdNeobpJrXZAEACO6JN86opJvmSq6FXDqt6U59KTfLta0uNqRy3fe3l9E7xFJQxtJ6l5XlmwRl3FqUsjiR5/hA8mtVILxavKcfPQIzjR8zj6aU0NEUTq9YsFYCk4oaMWHNAbo0owAArgLCMdMz3fQbIcYmoPTE498wUXHN1csxAqmtFVQVYBekfFwGOzu1EwAIaI62uZxooaSCmmx1baLjCXe16l0UDwBM42vzP+c+S4rv0ZvT+KnCeCoMky8lrfE+wV/o7xv8lSlwh7fNvHCDt6hPxC3ekBPogDfibDrhjTmjzngztdu6sDq3oEwAqGKgk0bt4WGdKgd7GXRPCcU3pWykNMvNhACAJeBgC5e+hhWkArOyM1uuUIZptsCztwaaxTKI7YL2wm6yA8/1mfYPU3HjUuX1KQBnOHmBh/jMaqX+RvfOlLzGFyswVv/5nL+qwNpM09lQw1qYyv3LNLWUAgBQtGHq9EzXU+FMjE4ApdqfxL9n9oXJmpsjaq4W5B2kK+oCAAInIjqQ2unBmkoswqGsG+YS8QBAffvuICOXfWTvG9vkQmal8dMDHYybhpAOtnwH6OB6noLlW6xwckiCBU4vEsHwLvLqlxUipK5Eqiy5bXfAVCB3xgqbPjjaSZ3GT5erYy7mJPexY9tc83aj0UwmAKgPafrsqfd4u5kxCHwVTEoOXDSdkWJlivj2HlSaEAB4pvs7qADXNEPvQYaZdI7HwY6zdXAiCB3E1JznlOvllt0FxUOllxDdpDdXOB5bcZf9EyOGg9qlFABAB0CqB+UqkAd0bs4AZwZ5KC3qAgA+ELKIIPOJAqcUDwBMt+3DwhFADSZsdgrqHsYnHwss+W6wGTwghcCyITCnXeRuq6UdwSsTyWPjVv6TwOTENNl4g/AptNhBapOVjAWtZrcn3FAslgkABRanFo1XEGybnj8GlxCBkjV2ui/HdD9v/xrmsdqFjZTKBItmxfcSFEjigQDRrfhdewJmzdTXA9cuZRLtdCWyFf/LTuD5Jbfu9VpBi2EDU0oBABboSL3ZSWiBYsAdK8CCys0JRGZwARZ1AYAFOyrqvcdZiHwiwSzGAwA5MAKoAB85c+CyMWl88l1gMbhBsP/ga70JnBvwnJXpxVHhNbLd7ylG7fI9tRH4kDISAKY4gQate1Cx0nMYOyWmaQiB4cRZeURPolI7P5cY/UImFqe7Ptx3/mWSDm4C7Hlb3c4bwRCm6nPMAqbyj/fYoyx8Pw9W77Z5aBpW6sERWsYBCUkKeAXWLb65e3yvxWCRRWniEIzl7Qhf+rFTQr83mCUQtK1DrWnuwj82gX2cp0vK7f0a1a075sa4iCnp6FqsoRcVp9w98OxdpKHRn9KNK15VN3oEIzK7mIWuGWyVGuwGfH58x4KvDEIVM0FsFm8AgAZKzNwfK7L4dlFptgaVQf58X62yzAIAREdJlnTZznr7jw+6Pg3I4MydDgg9ICaG9wtI+lDr5R2brvFXBIEa4LFH1uJN5c04CEpJNg2d7DKdYo6NJnEgQMyzHVxKb9MEHa7ZW3tum9WxwijycNI0itQ3Tseox9mncAd3S9gKAAvg4Bnm8X2a85Vj852EwM6fX+PDqV2BaNC+L6ymBfnXy8rqC87WjZkp7GZJFwDoQGpBlNOxqx5QLjFd5xYHWdoDAHgoTxQohRMl2pWp/K6jBeWweQh21aMmGNsDM+swNzJw/yeYg+Hu8zVkjX+fYAocLnMQbIvFSa/aQg4ul2NGsexGKwqOblKi7ehmSjQe3Wzy20e35cUyAcDF5RmyattdanbQoEvjVCWcnnK8G+okCgGAnj2LpRmWQ8kVbNGZZfbQjsahpsg+HeLVEBA0midLc2eZLlBPJYeBwipvDhNL8B2sGeN2zkTsBPCbzBUA3k8zd8L5lf4BFAVeedXP+pya8zsaJwb9TGdSFwCQVIIoH5oY6ANyKjFlvHYQyT0A4BhVOFAKG5d0tLP8igqaDUJ5BxOGj1YfboqJfR5AB4FPSAB/fLBY0OHfW24JjfDS9pawJex8oti6E0lAtu5ZyUa27l3JSLZGKbstXjTAYpkAIDpOsWpYczY/GMiSKPMIuL37Qk/vHbvJxvCCOa4rQwAHxDJztFHfg4iyvb9wI4iMts1BTpQ5UHo49E7S3c/QD0Annn/AwVGYJm4FgAUF8Qzz+J76M3cZZcEisIDOzQVkZrAAFXUBgAIpiwwyn2ium2I8AABwRA/B8CZofHxssLIPARG8979uBxVQPFzcElzhpa13YUso+USxdXskAdm6c5KNbN1zkpFs3efsNnnRaBXLBADRMc2qYc1cfjCQKVFmF57dD83ptfkYPWNU0zVv76h7ErsCwMKnSJNzAFH4eD4jhDIktZVbYwT3W+YdReCT0BUAFmjG08zt698j/RelKpAHVG7OAGYGeSgu6gIAPhCySCDyieK6FOMBgAYjegA6bDb5hixcNhaNL/tgsMPrkauPZ5Hh/xTVx9cy8jhHMpzD47/4Fx99uptiNG6wG0M4Wxt16Kmzte735N/vgqq3BxDt4vuLXcuP+m5O/KrHNQOEt3e3r3MTR7zVhdiXtWt+OywrmazPDUA93Fd82qtWXlzDyREPXF0sFF2rpHiSRAqkm9O0vnks6JXW0auyN3kfrYqZzW01yFo6JSEMGEDoBHISrfXXnaGBn2PjjPi+NnGstVVr1s/TIu6iYgQ+YbAPYGN56wZnTGXU89pAVxIAAudXACJYLd7u5Hvn3hQsXE/1FcZ4gX0WQHXr/hQ/PRI6rf9AIZYYkUnwuCN2bL5AhOglScUiRHdVXGRT9J9hTa0H+dZKTgIfURn9ZCuJxD1q+feF48pEzVHxf6ZtDotC6aiPBpTXnYNmibyhxiWQ16hJGk2TTk5j49pcHznrISXLcPjoXjyL7qO12v4raIhVQOLpe8qCLLNZZPeMTX6tkvcoY1N+3Lg+clEl6S7CRFWURYeLjv0yT9uU/urrwkbNt+Ms+ysCjcAKz7N1tc6uFqHVQYvQoX32t/je8bVtNyQQP6rWCrvAa/vDNeWZ7nnOsDUxfEVIgQxzPmSaC5kFfrecfUoKW/lHUhGY0xBayFMsQBzRTW9d/5m3qdcTVj9/h9BZWAf9ScJkpocTjamoWmXZOJMEhuMGgWpWHGmUyE9msihjgijVMayAsVUeG8zpC7L6YqEHGeBIIiJpAW808RWYRE6HofNLAmKkXFs70Nxl/70AMe1jfUm+wKJJxLalbtlCU+ABmc2IWeVjgVYyuIh+SrLeyQ9DXUScL8SpKUA+bTEtCIgKOa3jvWSVu0B/3AqoqHepvrEA3nB0LSQxy3dMX8RpZJ5BSUMAqYumdWepHnuI/XQewBJXXw2mrjhzjlCehsGI6MSKvXqaNFQvncKU+fAmGIGsBHNDlRBk1eaU+3Gvu/yN+g7BRp1z0FUQkPXkZRjxEzE3VLJZQcFsxoJ5aAtb/zLKbBpk6aQYjInSGrQlnrnzuvOfOYV5qjQtT0XJd5oq+pYJmV39gxMgLlB9uLT9vNhCMpk7A9PJeasWPBbOUlxIJEBqorrIesY35MkdxrFj9WrFDCDCkeyg7Je92OW05tDhKwiEnIWGwKkRpXURVNugtDIoMtm/XAKxpYZnzkT0YYnwxifqwmBJbqW0PtTNZvDU3te/d6b0Pt0X6kNuuKGHIxKDnyDu2Nq9Y3DYcPzDEtHiWZFDck++iCdgE9esQsy40FLokvtZ61HRKCrLTUIfBssNEEmHqbqfik6yMHX2w3v8hqGXdqyQjp0LDb8qhT7G/2Nvu73a78QS+5pYL6H5r9inSqjp8DJNqLnqoP7NvdlQMYSs0W3lopkwOX8O678qIepfbHXEH+ZGCq6yLd6yUA98mJLRse4/6Keyoa+zBb+bnzYhVeddHdxu6zBFhgxX6d63qeoJ6K4wu/seG7C+x49C6HWkkMTli+C1RBMSUdnmAiFYPRAPDHtUHqLPeReao6lgFEeI3EhzfReP1gjC8KlrdklHZoSX7Bj1W0Jnj7Ymv5tnADH3FDh+nVIytDyo1grvA0Do1k1IpVgE7nU8bFBDGRZD69nFSy3UvJf1OWwFrIhmWt90NtqgBDvj0fNHycyDc9QRRGvvgGUshqGtX42vAsO4tSt1DvJQ6UkBEIc+aXWOTVa99+WbOxDhMwRyYCZY7zYk3oihjI4Bj3kL7zfJ+BKQWzHwKH3DpQTdqeg7ED9yoRnQNJDCf7jcillJGhJxBYjYAdKwAaBsJ18S6D9nXmo4/0Lh+nPA8d9ZmIKPXeTN3dBwYB9C0UZp3KYoqKdEXz9k9zMNeD/9a0DyAwKKOmik5CAYeynb8raKJhY0Hc1g6fuEgWwmDO1mktqcDtBQXN5nqXnccYk8F1vfqQz7LE8mGKhHfkgsgwrUyHhBBdQO9F0QmHPB9MQU/YoUL/aNBXi5wPbup2Oa7DLrnACEWxzoLQ9QcTySOhYFZXvgQXcG8zE6q7xukivOOz8H44YT7rJJikywt0kwt1viT6vxy5oDz83yTouI78Z9Ux4EDbiWewhiI0fXSWVKSd+nUSdo2ZnBazv9m/rI9l1cH06KAswFolWytH4qZgmUJoE+lawZcgBlmXclXECDeU123a198j4H7Sq6GWUOTmj6tmqPJxGlopoSbbSo04Ci+jsTiUrROSNhs29ox7p2O98gnnrWh0S6UopfF8fRVZG6/o0nMEt8YpJH0iYKH3oXtdURpgo+zZI0pOnsWBZ5ha+gCftYn2KLHKSbUFQMC49QBm31FifBBwFENHeL0iTllYE5hRs57GbQ0LCI/z+gc5v+qZGBUY9HHYBU100FmUDfBVpn2QrLNamEbNhNWA+ynkyYvoLkZw1HdlmJ0dBB4ZhdmB/+DXVx3/Te3NZymCwMGM4MACcAvRGom6bwE2eKhIqHYVOtV2TgmoQDYw3qHl2HwrD+tM2+1ULm12r5nr4QjRzihyLnP4/edfJtsQWxdvD9YyfJxv/OeGDXhlF0x59Xv+UVvZm9XWFedVoyfQH2I0ztSxo20r1ZKcNmYXJC6PmIRwpNZp9S6lYVLsiUe5jR7JE35OFk1Ozsgojavt1k1ER7IohaZnd7lG8tmreZuYf2C43UlDQOfKx3WICBfv2VmUMjfcmdMTRyJOZ+KZGQ1eolpSWsOZ4qVm/qTnxP/6pP528flWdyglLkU5m6vnxPWUUFAptK2lE3ulEYfoiUlKlzR2TZ4EbuZDYDZwBYRfpZzvraIWXfTgZGt9t5YGE4435gov8/AwAC69pNBjLaXTJwe7sSckCDL15JSOvAiswKkb8HZr4YSLFd4EOchsPx6SL4efP+zAj6uIh2tqyebeyKLeqWraPrvGNyalt0n0tqRy99JfD5NOIPi4QCuTSTZyCZN0z+k9JewzvYJKhG7Kvkb+C/VPzjt3To9L7d5CPHfeXJembyomMU6pqBrBpcPgBncB8GdHkXgBPdZwEt7v4AnFtN0Hgz+wBM4RpYtPUuANO+Bhal2K0/DeT3zp9CPzGBb5MOCQhmi0oUuC4oHJzeUqkCV1gI22uNUzTGm2htZcG/r5QHAIYtTE5JBObnIiy/e4LVSVwaKCltZzKRuLu3rqBNp/eIkDZylGZ5iKMqoI01UReLUOSCj7DIgoEucKMXV4qKb6PKqT8HAj1Djqx/H3a5Fs8Gi2FZ+QVnERFZbSKHHHUN4TdjKApEeG9djAnBN8VfZPXMWsKxZZFvEb/SfJZOfvylx66TqaA2UjxdEG3TyEsSoUQtvZGkAxmzSov9x5toHtyz8+LXAiW68vpsbSnysrUogBb735H6ym8QdV5goZgU/qlQSMj3zjAIVzuFlfZP67IzcKUqA9hWiySaQiksO6PW6oZFO+vkQXcTKJX+asdnsYO7k2364jUgyVxH4jyuT3jl4jOFaOd4PCYixU28cAzA9kxmxEccZ5W+vgP7GIguiEjJc8x5CBsyX2gGQXvtHjQN7C3qAzjYxrKe0y+8RXAt7c4qEQixhKmPGUrUVqHR1/z8iMlni/EVOA29I+fINkuIQEDH59HwqBSfmitPhR/PM0RfBOLM/nyc0Nog1BON5D3QWzrGkMLaEbEkwqTR+V8f3y5gv+n0zn5M850OGBtfAApiQVsVfwwXEJVCH4WQTAl/5dvKHUF8UwJeSWeMRFdgUTnArtnOOdusnXNyWne2c153bnJid8ad2TK4GVI/a0jjrGKyxNhJQC/g6u+U5vLvFLv+O8c+gM7ufQGdYZ+ANyA0BBLy/OULODoFRJg6VoJwIUpx1Q5ZlDeqYRIVFgcTza1wmBQ7Iff+Oo6b7nq0qyjgQSqJSbUwnrDfOQaHtLm1/1GHd/PueSO0kCCUiSxb2Meps4Bad7mIfw39a1lJi0VlI765sx+ESHyMMyLHtuOD0QTK2yLayTMT3spDbUne9K0rp5iUA6XTrEpMk0tzs16wkk8oZzMhe8OHHoWA0sJIJsVXdjWnatsyay3IZRzCeqwY671Eza1dvLGVDCRJOfQDe0TMcB+sHoNJQemqQa2jjXaNyVlbGbtDQ4rfXSh8VfcN6N4xFR1rcp5Z4Jn9OCXcM9NGjSWbZIrBesmF1/iN86BGWmtvuQKJcpVGyYqbTdqAscRuR7cAD1d0p9z5TtnBGAYDRwqt+9ySNJvONDrn2TsDj3pWzmhQWN9R2oF27vxz1ZstYWeyUfI8qFMm5r4MDo+Ctsr+87qX0hum3GVWMnQlG4XCKSnql5PcV/e1RK0sW6K3/viVL6QqwJZkrPRasrNa1YLJxCg+GZMCM0dGRTYrUwDWo88FEaDCcG70apOyr8mXjNXqk7Fa3i6NKI7DKxNmJAwVrMlqh+XWSFHUOrAlVO+1ZGKWliI9qia9ymoJ2UHZqqmWJNZPLdFzQEZDk2Q45f4dufuyS8o1FRlzScWW+ZMeT7YpV1TIuaDiCIr7ur3KycRbtD+jTZyQbYnxmJKzKZThW4vzhdl9lTFufS6uqRIakE5ZNJACeJEQBS5xGgvljbLLN12Dk46bL0dx8TVwgfyy8XfXztmllhRfw7TpInvu/If6SrqmIuEr9krZsr8Ejc0Ts7hEvkwtsUEfGUterwtS5J98OfW5N1wzR8RbUgdCYq9GpuZvp5gHNEM5lZAFJCgJXbElXuiGByUFsMUl/yzkL4nILR4EgzmP4SVD9vyBVOu+ppTAacGj+v65MAWLr55QTV9kMTCfw+GiTCPM25vmGY/4E9+yD9T4hx4XX8pG/iT80Mx8Svng1YFTYKHgtXYqFz4CoTLA647tVU4I7tyfqyMsZX3XHfbFqSVtvZbbn9Hy/ORLoKNYofGbgo28BLeJapnGfgPig6vMrYu9okWpg2IzOyG3fiXpFeW834Q9yuNjJRF0nRjE0fZ7vv05MmviuhRP1dQP13cpQY3Ikf2AJU6UujIlOM5LzEXAi7QYN+iv1OL4Jgwau3Tresb39peHUu+2w591fvm9jY/Ivs5d2VHqqf694D4e9Hb1JnH3/Sx7XOag75knrm9oEFkEfZOChrCJy6RxVY+mUo/OKE6M34npq4GyF8enXlZf1ZBQSj4p8X1PA7hdkMREmnEgCa4iE8CU/Bp4oVCI5sKRaYp+tlQKweAJoJHwJpU7fHwOEQmhk/ntgyLZIGJB6ASXF5aWA6pT76qitdCeKT2QTYcFbffZ1s/7pqnywq3rWziqIKyvGnWIqlexPNQ1nJ+UP3vNTEIzjQksk/Lvy7DvKzGlLMBK/bC2AFjt2Ce+g0kg8gXdVfVW2wk7bstlfOjQAniWAA5wENiA6eLHcmubmEzvObFM+m6z77tB2qlNNcF/EKZWYU4Ty5gjOB0uBgt0GiGcofPoxOJgI0rc4oZRvCWB88saKH8wK6IFCRf4WgmuKMa9kg85JXjvEFKptgC+bQC2ADkDIISw06Li6lgbBlzSOcTlSitaDvhmAdyg0eFisQYARUSlXyPXgqGZdImceg/s3rWzr6sweDPYfqBVDKbaAvh6ACJtg0lTqSZk3mJbZmQmr1qDjAD2hwMGW7fRK77mUitexpHlc1msfthDomF11HS+hC7iq4IvNJhUmg+ONqc8l5R0QmPL89cKWUdTS3zxP8T6bgBB/DPok2JZOob4BOVxrENbnShM98RMysmfaXwqnbBlKYEO54w9X4wABB1OY8eOc3zWgkCodEEh5HqSqJ+aWLVmE//JKkBVrlqdjiJD+Wp9ukD451E7eM/As1ZCpOO7NaSZ13mh8fqGkFptLBwQ5uZ/4mXwf+K7Z8hvL8UmOHxZ0xWokU6fXq0BbuFfC/Lcxv2btgYYUW/YWLekvdmoKxN6qXV8qmEZdfj9d+CAzJudUy91O1bu4og01lJkTOTFHFHRO9frAEkHTzydVJwAQFDCC5wh2TOK6+enMTnXwVNK5RvCOWAFB5I94RgXL4ALTyk1CHLVgmKpIH301fWB8ibto2hKqRhhxQbECESYwtmTffMwaPV5lDDippaKi6GcQVjSBboYG0AODD2g5xXgTQWzKvPV/4IUDNQtRxdMrVYCNU3lT7ZZT3nzCBBAYK8F8DEFjD3RHvLw3sIdSE0GBuhXAELBWbdzUzbxq1A+aYWnYEt7PIxyZgF61g81yJa18fRK+hEl8ifpxh+Piz/xC5QFTuGaOZJsaXYINUAved54PjbeFwUHS5w8kc28cYfGno4OJizliCkGweF0sazgAkhMF/MPxIfj6tWUe+Ve4CTZW2Azf+zx2dM5o8ufVzqdYIoJazr/+HB8sFhuUAJCZw7nm388giN/2eLT4QIzfDocTofzD0ekw8VwASqIMQUxBZ+gEsJMUTv36ivJg5fgcdKsCT6/7IFI7IlGfM7ZE0JF1ndZeh1c50uDytl1k5Gj+UagknbzWfiVteODp9prGD3Fgtek4I65leMugso978cunBIfI8221n9WdL51XyAVAoOdDcc23YDZPt2muhvoS+NhdIbUuylyusTq9HIafR4dP/1zwFurCzmnm6r14eC5Z5cyFG3Icp8oOmLk9xGiQ7ePyOWRv+CFxXxKHhWR9JXwYAj7aqzQy2HtFX4CAKDzUwop3Kj9nAr+BK8I6QgKQipCA4GIAB9BB09owkQtPHUtCgy3wfSvtCzG6sABoxRV4mtaLOZW1Nyhj+Xady2aLyn/yRJcP86JBX2JRXWvHh5fH0N0QTujs5anK1eD9TgfRhJQi3zDL8/hC/kPvW/l0yvzFWOuT7dGZWE4gdFVMT1mTkbBjApPlBihJORJxsYKbxSo6b8r2Ow9WrA3aoEFmxxLGinRqEjEp+FR0ClQN39bcNyzsT3m73wUWguBiACg+/yVXFrBKv9tCbcXUq5bz8Dppkjpq75IvmROd0fGWVSgyQXYJlmjUdOIYIfAQnCCHm64d9LUPqk6KO1NlLGPsiaBGjNqkikJxKGnpx6dEHNlRT7MBRZL1psDk4eR2gN+RXt4M6hZye2qt1iP3xyAkHb6qv2eABhSnUVPIfAUM0JHPAIAFsrs8V0BTIRzxLwph/SN1g9OfWku8e3rCXY36mYvCj41ooH7Y57cpc0s10f4Oc2+Fox36Xv2+QVnCiQEv17N4zMZZAhE/Z2259iqT2baI2Y86YwnA5225+mCdNl5YZKJpQNe8P2HzwAAL1Yz46XcICq45KiUaLaHEzNHIPyZX5f0fY21m899lfmKUfwwUbdx8cGO0E3mvTfUPUOIkNO9FDKA0ViJSQCz4h5bhvuCY2foju96LsPldrCrolih55QtV4rMRHaruo43hCnaOeKBljBczeXNkUm4E7CsEIgnWTyJHry2askAXIS+mt0TV/xV0QAA3W6/ay9u9c1uGkW+QTRnPMqcZXmIyAVr+mn7Ka8ERWFD/moxtAiEQoBTP4OmsArmMYz1Dmmyrt2cwUc0XF2mzHWHC8EeB12GF6FpolsFosagKaJ7Kz2/GlVi3QJxYC+R9Wslt/w6S03FSVwT7eXXXUpy9k0sEZAwcQZXhNsDTWX0SRffyIprm1dJhFynuhD2ObfW3jn50W86OT0J/r4XmCHpKqLHyQLjhhIcnVySdhY7Xv75xrapwWY/MFfwPTn1wjSgsSxdUgmDk7C9WAeMI8kjil2onrJLbrrkSXrasCGQ8p422/I3YfAiXoqnYd6LptEZDxLPS808G7YlzW3RG9ETZ50DN7Z7uevubJaamvpOn0qjdovkBBN3hkq8pcTk+Gv4L82LZQ6aETE7bBQJEB1takIqYVyKUPYZpkT/pbNOZ19smJMNSmTURiiK77wKlZvYu8LmXmQFWP7zwaDaHbgNzBdgNBa+vHgA4TtnwO9I5N2RXI7etwscg7GFisbJi5v6o+68k5pPCiuvaIPwvkjbzOn1smMR7lzRyUKHhGFpzmdRTfOTpKiTOng3ehoHW/5UFM2LkgUg2wgnbcjAmsh+y0zQJj03oA8HJVNColAPYW9cVszdrRntOO2c5OBNqqitHOD1ZP0TiiX+noPLDLTMsx+7FtpmpgUFUsK6clkVK5bnQTn0Dv1WRcoj5qmhf4DN6jPP0xBt/Kk2X5KxA7NmWjs+MBe/zQNFbF+2jvwy0QdG5m6jmaIAHigFhb5LobPU1/My/2TeurS61yasvwNNbVkdM8AgMPSx4oL0yRm1DPqYaWP63AR9vGtb+myCPnW3eX0OQV96Wre+GYK+EK1p3xzJm08RJniX4vz88O5aiH5EegRIWr1q7VMNjO4zY8TcR51Wb8Qp2sQwKeNCUcCG4X1Am0kK0Tfqpw5vLMnjBpLS7ZRUhu7wds3dlAu2/vlaiS6Q/s06h11CjxfxcaoUKzCcx45U9M900Flq4HaXoAEArBWC8LFJcl1vnB1BVAxuZnq9EbNEZ97cDDQ71cG+pUPMXnXtbE1DyZ3rkt0yPYWECgcR1x/UAEKmjYFkAgh3bQukI4DY3eZBLgLIPa0bNEUAmWhNoQH1On103C3+/K2r3vy17GFlcQub/XBW/focHAPICc6nUOAtQ3c/c2JLbrAERGZM0Lpy5F5igG4U8Nm8JoFojvsJL5M/y/zJAHjAg30e2srcWH5yx7VFylr1i2/ZzhZZkrIYSUIDZXLX2ofdKejVbE8P4SFaX9/O4HZ1/5+JuqXnUwfAtqGpuWHvC5xKQ0eqsoJAsLsJ5iBBYXlCAABvQdDJPcQYEAE6/9QOxDm1HaptpH1tL3YO6dAW+UAo1ji6WQ7UFbV/zRmoMWnr20fCpvF1ydcO72AMXxTviK93PFn74/M6cGg8L/4SUpNwwwPRWhMu4PzSBYGIvWfrCpnu+n43ONzQ3Zk/fJxmIOd9zufJ6nSP42x+nd7qB5jucv+YfcTQ3eHW2gCAuvGwtluFwQ2NkS/Ma2h+IvCbm8DcRuNyNZM9JfrMp/dmxbB/MPpW/vz0ri5dSwg03CgdFRnOih9cfEaCwD2nghM13EJ79R6hw220qMI4jTskJhIFOD6fLOn4CFxLB6rZBCJOikDM14zAhHtkDEHA73ediZn8qdYFg0kQ4veVe19nci5/dxNv9XfesugnyIdnOfOolbWxdO+x8K1Vh8mlxMtx05pL1G4i/gr+QYsdFK67TfrGLgV42nwEXlFA9qYaxEUB7WxqQTYU0N2mPOSWHqb8u92V6GFQv9ceTMFqXm4COKQ+yKsinh6LwZ/fAazWf6039dGtZH7/MZKprOkc4TOTLuBLVfOmjzX1OmDHkiQ/OfIHQN0bgVLX+JCYnHC/XhKS89DfbylLpxaALXq63RR6Hdaro05eyxyGixAO65PR7mY9V0iC3Lq3+x/10KBo9f65U0d+L020uPWOAMCdZaK9f9zrNROd+W3UJ4r16UbfnQqvELGaJe3VUPbXoL435ou+fzNxmkn96ZH3j6aQDix1jykaDGOGvv77oexh4UAmz9433Levmf0wG8+yc6l+DfW6db9XyeWvUveUTUiElu5dbconDnSvsKUKocJjqNTjN758m/v0EXl8NLp4fXpIEAHEFMfGE7oDWrlkQZ/Po2J1VRArAoi/nWy42Rbc8Y4AYEqLTvX3eoct7H7EEQV4rpTn0+DYhyu9ubVjWDPvhLU93kHs9bVwewDDhEv3POHt7LGDRL1L0ACARGKYBOcEJ1mFAcHdW6wN66vDMP3M9kxypRPQQ2XF95PTbu1g7aAt3TVPpRVEdmvJtLx081zfBkemU3w0Uyg7mi4hTVzCFr/uzbuyorQR+sOJaNI07YfeeCT+kO2QLDmbIkdBEaZZpTRxoZ2VJSZ8ixPahjMTfYjn1Bi4QxzlmOtyJo7SQ0nOqP2mKz8K6wO0v+3Pr9NmPctarUhmuybxustm3pwRt4U3XZ23xYB1Z4R598GfZWqGGhJXuTMCJ81CrgIuYGVuQH+t+y6oquVLm7wRNB5Kfw1Vg79mfCcKSFEWhPkO/nnQUa02yaStZCVle9twrJ0Qn4Dhxto9COnri5l3buRlSuCV5bDJScQkAbjcNSmWWj3oYJk0yZQvJT2/YoagJNO8d/cqfIpqvRSPdPTw/q0DPyDbIx0/oj8ryM9Ds/3se5JEONLqIfNfN39k/Sck41nltNPfT0eoWWoPvei5O1J3JG98l5d9XQGUrR9v8skdAU7/eDAwfzoVp5zDWL2qlHR4aw0o8xu4LBIWahVb3xrdY3U/rMBWW4UtkX/t2SJneC67unXOuL+WoV1QW2HXVnhQhqqJjdg0x5CoNpEtDZYzkGCh3XN2HcRyloIBAGyjZyaQbK+kpmKBskLNjj9sMKQJt9Nfk5iD6/O2BpoLa9i3hZhb1u5sB5recV6G2WOcbhayR3AGVuZ84Jasy52B7bR5rhq+5EIHY66O0WTgohNr0IytX6Pzn82lO5Pj4DZsqvvqF8pX1zgFiy92MTHTzFutXSjP6x5yRUiLdglda9JV3UKRebjnO3O8mtGEpg/3+tEWO3VSNBow98QxxFRb6m20rTF2V87GETJu/3C7EHanrSdKhGFw6Drh8Lpt5O4VoHiq6lPWdtQeZNdK5Fq7t2Ta/Onm3XzLZJhmXUetz7pM473r3/Ngxg6mfyDu6tqBuzn/46ZaAFIxCGd9OcrrmQYTWPdQ6dPvOO9Q0t6ah/IO7L8LxFEuvNyh4ui4VjpUqozjPGlAi/csEW1L4/ItJQ2VKu2Mg8B8bHLA9tT+XQ5Yu4vapWamWn/HXTGuEHKBdyV0gx7Y/UkDu+2QsKaBE1obNge4UevCHgK3afPYa77EvisIsP0oeZ21jY99atCOjxomXbp0CP+OIWojqOah3Fc7Ptw/Z3ucENRt/oTu7V+vrfvwL12zwA83rNQMBY2qkXr/G3dWIWGVfxfTxztWnIgF3Qx0hVxWDgrycMt53Ic8bV9QpwxBN51OGAAJdzqUMDFzgus1jJCss4fjQBjzMsTCEmx1+J/glnge3v0i/ZfWfw4TOuUAQxzSbfWEESzdc7GSf3e/tP7kMmE8lx2Wl1djmpDsuaxofeylk6uRUn3P1RV5tNF2FWgLuwcrvA3FcqgXDhDeeYIVIwH0q+sBcAQQNh+zntA1UIklhWbD7yHBWap9aHcHnhhGrEhHADAHFh6fG2SEI2Depj46r1hfr1+DC9+b5DUeRxlWorgfhYRAMTaueIhzxT0/o6CzeikYAHAO09k6zM1ce5VbOtGX6elmfqFunYzSZhGXeP2rvM5fp0VfMhH8iM/q++1T7zMjvNLGq77GtxUk5DTfShc7jXcuFq6k43LugpTtTrRgek3BNL21eW56lasMjDrLYDU3SbC9jPVqgJY4HGSATI2eZLxRHbt76J1qdswjQLGsioHIpQDFrGJh3KvDTkap6ncWW5yMUvOqdmYgRz8fz2wcR7ggYxe/Mf8ezLRz5+feSh19zQ78H1WkPNGOi6anWzbV9/zsswMAk1/Q/VF98LP7ICi2MyMGYfjyXAhXD6sz6vCuonwvt542Mj555mIAAMChF1qextCbMMFWgUSZzEe8Rfl8ggcp2D2LwQAAtBRQO8uqF+1sWr0zizuC3k5tXhPILbh+HSVoS67dAQIq5C6RIMNwQSwKMts2xq4d2cJ1mBrbYpPrMFPugu3u/kzaGVfH40XaSyfWs8XIu7wHu/IWsyVMufQn27tMau6ga1x301FEXmuXIwQAxw10rHIPz16kU2L9m4XS43t+FHCiNbi5tmKRgbbA9njZDVzi6B4ciK5t/7hoiNNs61UswkRfkbzRjkI6qg6T6MnT0woyu9LDg+E04AAAo1L/lBYm1eFtXpcwhQVRMKu36Z/L0e6S8NcLzQCAHbxFVOf2qLdiZIvlbZPOPxcWvFYdelcBR9XHNIC3+x1pAqzc6qcoJNXHR1LHgFptk2FAt3aZRtKY3+kgU4v3PT4YH5zcB2nkYFbzITgYih0dyWBcLPhsSKW+xwgmdCR40FllwEcX+NJyK6u/Ny4Pq3uUDxmwakvVBZUl0ar0jg1OPT748z/OHsb/N/QQW9nIqaS3xGeLozO2Yyn+Ox4zRMoVSJtBkrPcc41GIJFzgg0JpPWYdqUkl/Dk6MYxkbRJ0R49xencyZ+rwXV7A2EPl5nuLHAKByZQnnzpVkSyLpUMC0mLF52VOIkbmrJGjkDz7L1zUEh1VSRcHkOHXeXRrfZg8Kqu/FXXmgdU9+F5BFDfAGg8oRRQiSWFvsZNz7EX3MH5QnUv0RfGkhhx4yYBwA648h99YCxDF+aPC+EPPYOfz7YgOd5X0PveM+rnVYeeYebN0cFxLgYo0g1OKQwAOGhLxAazAn7dt/Vi8HdjwvO58/2vN28eex/g8+Ojzpg247mlzEXvHnkO6L1a8EQ7mfp8u5/bWN0WlsEAgI39HLsAKop0yqZxASEmnDHa2W0gvVbnDSTEqcfGHDMkZFK1s3iyid4ZXRAUAPWp2hjUFdQ3aFvQCNS3dhfQPCT66OqAGiRQ5y6DOcKBipTffBT4V5EN8S5pI0F7K92zQnQrUZwLAACcQMfuCAUwxwRFAmky5mwAzjB0xaAaDWEAgGuB6dJXy3HhN4tWbBccuAUPWpzq88QDSdSwuxugUbdjErpyuS4HNpTVcZApjmzAm8g1tDJT1zcCMSfrMk0o53EXprXK6ZjtDN0tnOX0No8dDiMJiZwlbBZib0wpsucGBtOlUcUMkHY8pLbtZ85Ff0GLW/5oYkm7Pl3J69NPs3ToB6fyNeec9ryRFkyjVxU/1ESapHn/HPpfIC3o6n9ga0B8t9HjaA9if1aBk/pt4n+TiT735J/uB3VtBZPBIkgcUvRt0pdw6AhxfiTbW7rS6i0Fccd6MLiqtSpbzKHBdWEVpsteyZ60f949yLPd1qduuSEK6fUajgI732mg7x6Rp2bP0XQOkKoGHAAg1WDQ+gULBjAKcXgas9qGGoCZze6MgYOGF5oBADS+XdmTpX9ZZ8zdYMOdsu6PDaT7tgadK8jorY1RBeDgbuQUNALs/qQlV4WRuG8Oc0NX2hojAt3VtphVkLvlLpjNTZoAO7LR7wUGJnmwLdDBXcYrNlgHnSB2E2KjLytsEcnWsp6eAjtzQe09gimCqhiCtU5lH5p5rUk+7voUhTcSAACmfN3EglP5WnlOf27UCaZ0UsUcJ2xFwWDKc8rFcC3HRzHQ67vA9PmIDZJumwMbnsrj0q1kxpdKJ4bs7Uusd8EMVYbh4AeBcP2f1BeHe7wGrdFkwRHt/Qx55GI5gxWbgWpnOx/NFqHnzk+1WF51H55HAHUGAMcKsjtgicWFdsHqgYvOLvrqAhXcYFQIPP99BACpoF3nP86CkwxzmD/qgrRs07u/vQ323ixbI/agZ9BkHWPhszOz3saCo5WDCphmCX3yYwMFR3umwTg3yf5t+GKKnbBsVgwbwAunu6/dLAk6eI2PfesKE3IlhU6A6alZGhR4mEJn2spewVO9EtdXbbp+gK4Z+3EXxK0rn2diuop4UpXBlfOT7Mm/h6Cq0fCpGuuCMNbAF7p/jYPNjVNqtzTO9tehdaLuTGqKWI/mxerjx3dlUfrb5k8odZ1dOCA31SR72qON0BuV4sZAXYnwU4lz9CbIK8JUKrKxzJD+YO7Oky2gbI0QVFciRHRbGSAg2tYFLCboQMbADgNOGTuGA3AZMyzCwdv87k1rgz9fVet7FU8S37rZz0jeHI13tRAAADiCauidCSjYENwrDie6eznGPAIgwzy3Ik4l4u+cDwYArJHeLoO/ZsFXM9MXCsX2ksMtMR6I0nKmQs/QV1ex+/DEyp00dHCZL6fjXiinUkYIFPIPNA1amWFD07Z1GQqaznCGoV3lmDsOqzyj1gvshC+x9kJUtSvFNERh640iMJCmOSAAyBpMkR9uGtracfuXbjBpy3JaUBlrMTbobns8d6AspjsSlGq2fyGCDHptvWnCvR+8hVdHMfZe4B/tXTon74qzugFIVLmic3EAANPLWhhy6W39XtL1Kk7XkgFdwRCzThHvaGbvgMQ2mQEAYoHB/g7Gl+D9uTjpH85JOXCH0iWXx3YEFZ0YPCv/rkHMVGspCbhJJq93UxmzBuS+K4UHptfubw2IJiNREcTE2mgaZK11cQ1IFGNwHwNj2dFgGFjiwaMDlr7HpDTIbhYPoggKubBEAXNb6rnxXRTZi0SnUHGq6qIOZjB9TR8BwGWBHRuP3d2sEKfuYjkNJiTjBSYNpHlXi5IJMMvLZWoJ3F07FVYBW26NtmuA1bX3225gDrUVVzd8jD6GKqe/rwqbW/B0BaH6A/X5+EICqPQAZE/IC9RiSaOn6fdQ4CJWFGgHo1SMqOhHALAEVzePfb1wB+OrgtQR8jmSTztL6bmcWLsArN9kc/XJY/fymgogbeUQAcMxz8eHnEnBGSwGAwDmfDqppmw9FWflwCmGc1X0volr9L5s5epn8vDVXuXB7Wm1jhZvVbGz5oM7/7t41favd++//fife+PD3MryGqE8eqfrGCrC1vDB7aZ/Jj9PVR/kUeB2m8EAgJRUAHv1BZwFvDTisim1C8yoPm+X4DZq2M8WlqjduRnQFAvJHOgbHTN6omAI7TLbDu+ESIwBc0iswXZYhcRmeSwLJG8Y8JXWufUDI4SzT0KlhiRtLyp+0u0OgVAdPDHMSMk4Q9tKq2OnGdr2uYJ2wIa93fI3DnPv6nAqeikTPYcfLgoDAIb0jrULqgA4l+I0rJTSalOfFzZoqCJsKjkXzc4FS7U7A1/8jPmyBi0YIQNxUlZm5phMVFqXZYMxGMOK4KacnS03uBOHdmuIJKcuHB6x6+9g/D+JsaX5lBZm/39/j/8BVLxy5pQarOp6I7QZFKo5IACAF+yJgSgmmpY0t2GFC5O2vOonjfFUSzB+8x6dl2D0ridY/z1EBbpiPJESKuiKNp4zHpeJV1HaBb6qAHTmZ6n4siYOSKIZD8NOmtL85JCj6wOtrwr2ybvCwo5Ar5pOAIDeYV/7mU784ZCoHIV+GR/CRFAPL9QOkByvHi0ghWdbBWq7yQwA8BKc7Zq2awCd4mMsAXTX/rkIcq8O3WNAdbUxvgEc3o3GDW2l7f7CeVOm7zgk3l1x0tbmHHAu1uXOwNa6C6kaZKrjGgVtZIpwggMOGOKuExMM5m64Kva/S+2MIbeM2f/f7xOhDQ/hwMsKWoSAas4DIeP62yK48qKaWhA5E0E3ypPl7xxgd6EAAGAO5GTzF3oa4lWVIJureE1ZSKJ9gdE10jjWongKGO9lJOVl/K7j/0W2bPvn+3Drf/Zg87cglrtXhSH+2u/j0eUE7tWHMJcWaev2ACFeKY0v4G8qGK5IOHMcvGEE309e79B28qscVtOAbHFUaAOitQzRWqgzcreZh7mtc89zi6zkIcitFNX5YABAHCa1VsHVm7mfqbPScKjh5fSCJH6tof9L+vv6uPWpryoJez6948M7VDedwe7TOwHYhCk4RqbQefQ028JPLQoDANJshCnrC6QDEhlxk46XAWtX6F3y8EFvrx6bRWbI/jU5A8tPcj0p92AAXOiEgF35XByxkDaGPYFYaetC9OB0RKwhYyAwVztJYvvdSNHjYmFPSMd/1inf0e94n36o999UHX7hvMxf+DFpaAZJ3DixlIcp9LeMkGwUlMDanPg3KPO7yidJvXHRM51hTgHm9AInwyWcx+nMtBcqprbQmQJxFAy6LLhGeoPfhZO3f3drbiY7O0+F6cwFJCihz3gfqmBuzgkDAManVVXL1tXYpdNM9sAMYNaEc5WLtbH2WZ03Ja1vath3ho1Nj5U2c1LV4B8WnIWoF+VQRBDGQbpSlMZe4NcU9Pwkb6gkkW/4w626ZtNJwsEQdJ2MuILsWTAF+mmyLvkD+FT+CcF6KjzIcWIF5ilc6IJsyy2DtpA2ZtGEttJty8KAtobuwiJCLrYdoNWgy7Wfs07s6sR67kNHNlTFkhFVIa+nUsRxKatAcw2McVFk5JJyeDqwp7p/rgAy8tsj+Dacpol4U+wY6DLrnxx0Pb68nYJ8ncLtWIvG1B0GdtEiNxu4Ga4L5IueC4oTC5idcW0bZsYWTy0ryP5e2hp2cR5588OvEuHeENRY/wd+gaeeWYu7vt+IW9mpx3H7/vE7nuFhh6dJ+hk2kGmcJwG+Yk+Lvxl6ssISfPkkku8QOKj9bMCC7cFvaZVAmUU44kCP7Tdfq9qV891AIPcirduHo/6FQM3C2UuI4Qe31FqOBmirjr3x0zsV+kUTqjOZFwuDbuIKErqcOddRgcA6615enHLHxd9maKDSF+uQPaWw02DtBsA17AAAIOxl9IuZQF9ANG5hrBOGxau3Ds9laKfwrYVmAEDEYKWKtjEI0hybAQVV/k1ABbXo0dJb2PNMkRdq8FUIc1daCFT4O4pxSx8/pYAf4JsBfOwui/DSrWrz4QlTBfEuVG+mVeWU7jNJwikAyk/rmxAKeqxL1NmGIQZwGCLsNhDndxRmvD/xE9jxX0Em4e73sSWhh7P/UEamG5x4W2wVR7nLnBdCOY4OkEOCxoXFAzAs1rNuYJuXVRYH2Bo3o4sgxzUGvOEiSxYAgK4x+f3x3g1u4To23FBX5jLZFCCOdYlRsSBvuwsldYCCrctVvNUSqzKuu+huF3KJtkUBkcvY2ieDPHbXY6TNDx+1z2YeTbjH/MG3u/tP3t5A/wy4kmwmZlNnR2+6fL7RrqjgVRaDAQAHFWxtaf0arm1WDEsK+X08a/PeNZbeF5+plr2+qoPbC3VOiNj21DhtJ3xTgatiR1OHtQK8YYNSXQBn85waBY0UJGsxGADAU4HwKgwG4Zvav9S7h5W2GH/Wx6FtviD4bl9sWIfRqM0p3N+B4TXUzU8Tvn9uHpmlQtxcqqJUtOIL5K16mGwnjg2HwpsiPhLsuo/p1Gmy5zIOKmiKih501YqKtFY9Zks2r674l5Mza8zV7P863Tf9qtocqqPvE6lvjPrvCS1CMmE85aWQGrogSERZGWnwxbZFrsMXGYOMKVxaynMOkIZspgcpn3msxvlWVvKtohruZL0wb4X8xZvQnmjBHQnbn27dMz0hEymQuGkAAEgWuJLWucyEOwpcDxe8bQQ65z4DAv3L8HOVd6+0qapgMxgAoDoVj11e10Hum0khZx63RBlVYu9UoXc9FWP4V/rqwNxExZVhNBwmZ4xMXmr2uQPtqhZKpcMMCzk5YuzpqLIyZ0DHsXU5BzruMIbzIM93DtDNlfLSdmhvG5CbxYlMRh0qOZYj5Y0h9smmUJVcsr1kdH1xdH1BdH0F0/X9dM02mim1eKOrJJrWiHLGyPaS0vUZdE3+c+J5S7f30zWf0lipRTpdicw5hwyG4EoTp/9qFFmowXUrqi5sIiXctrUgMitgEAtqjckGxMs5boKPauDcUn0a/JfNhvXuDr4Hth6qifu+cVjpsFpX6iP3w9nvMn6kutByExbVhJ/SNdOO1gJeZW7Ipz1W63zQxB3qwdoy9QaEqu1fHYVp/Gri/e6KOHn7adnAtAi3ntbhfA55EzzG5r6tk7c3peumADcvDO4wx//BTx/GbV8WDUzICZdkaFU7CrP6JMwdz94juFSDGQBwDIQWOtqAIWCtRslNnxn72RjpHylrpqZuJwPkxJqzqbCayr+75zVt6F1bMjW7qUSonjXO4tTpGIfMuaAslMgqbJIlP2Bm969s0afumU7bAed16vPQ6SSm8SMlNftvpt+Mmw2nHGGvCborDTRX6dNlr4W9nW1iVBqhGcmkU4A2Gq3amskcNO6zLjO9ch6iMdtdmGFtckZ0mOYE5IzPCZ6LoC0XLYITAySH69ALMfFlhbuGeCLrUadDt5NafUkVYwhKMQ1kR7Cb/NYmobmmBQAAg9HqJrcvITR7xNXIdIMYXChxB3mqLjG+CTQzXYuypekkgxbM5WrNbLSKL7k7CcEVq+4TXaVAcEXxfv1VZIJr7Kpivz64q731t+j/Fxo6l8QIL0AqRH8oQycvx+/ti+LoD5fGF//K4BOdT1Yb8CgTLB5c9sU2rQo9fS9Zv5v0uBAGAKS1WgHVuqarUe6NRjxCD9nr4mDgFzx87jRotXJwk1ITO8lV8B6phnXYS26ttapiQR29G6EPQ7wOgYkwAMBeAjIGjbaqORvgdN6Yw+tAsxWdUlS1ZPAoxBvmXbMYhSy9IR2dHGXcIZnaSWWxi+2kFg1KnaO+r8BbDTTHOuoT5q3GgHmUd57xSvpd47IX3BH6VLs8AABMo+bIMw2h5KDQgxg6JFMtVfJcSzSkn8s7O2XgdJK6JNZxbPf2VNhIrowqR00+TzroSXgd8Ow9j0LFHxkENkjCCHH3c37FPxcyK55oXS4AT2IMF3LnYmkCraLRXlmdKsfGsf7aJNoDp86UOoRHKpFVj9CtMhGNV41v1z/Inrll6QkVUakZbHOlPsi+t8gW2cecWnZ+LXuP9xKXaWc20ZiarTdyKmqGIQ4Npo737xDE9oXNWSS7bS1UBDtljaVFqqtMN96CufIkFnfH/qEKeZWz79wQNuQeUjkaBevufHF3x8nbKxaCFaypYbP3sUqpw3upuIfcR6oMd7uS83UAgOOKihhxJWXDcGXL1sMKctqZjvBq77lmAMCh+HRlW8IKTLYNV3r+X9/993aUoiTOkxT3rkDf3vyf+XuFrwKNetwKyrpbi5mL37uyfI+gu584vL2CPe/n9g+p6/ZK8lvvL3EGM65h3/n1lmjHmG0isu15X9ayVBOu+jMGSQa0yt4MjT/WLyP8nRLDJohSyuqdyXQLbtsN3kKBXbnbsBcUwXUig4O+uJwa787kARZ0EhHv5qIqNOjMg3MoFZH9V8Zg/DBPs/CTuGHgzR/VuAAADLa3/89oo68mV82D8cMcdAYuGgxG4o/DGhMACMt6j7LLU24G1vG294qtNL7OfjOxwkKXmXQVeJVKlN78UIqW05eszbSYwoX3iqAYXTQcCwAU1La2n53dhxUUOnr9O4hC1cNOsw+D3wAYL3TwmZFby4HQKCDI5I42+6Nm1egSFC+FAQA76O4ZhAAT9Gf3tufFyMuWvCbCx9+TPLq9NFjpDvZQvyLUayethS3ExXjkYr+CDltjn14/3tf6LDEPuU4fn5X2XBW3C81zF0yq4vZsDN4xtBZ0z60dAmu9qhaDAQAHh3ZnugtsGKG037Oa3r3Pll+Um9J8FkLXqs9zIUE7JZ1hrVzH3ESFbkDuvmPK9p+Z9uwH3aN7PJsq7vVNr12XGsSZ3Lp8MJNv/FXyVLkgXg3kCdsYXxvy3OoXX850St4uxuDLZMcoU4ADlJ7dZIrLY4PKISiTN6zw7qa+92GMz65grmcc0HEk+/cx+B5Jn4K/N4xmuXFldyOqsWn6kHCt0FcFP9XBzfcT+/kBXXUCnGLACoHI1sX/zqsV63KPoYQG1g3964Dbhv7VEmevBynsEMJs6aIH+A3YOQBjKIwXewqwhifIscrtDAY/vx2l+b0oHJ5DMsSJtRjMVe8PXU/djVB7XIFAzhYMeDSyuV3urD1142583+I32Z2NWc03BJI4Oo3ew1QLpql0kLYoFInsqzpYe/No6WJL4Dn5wZcML+kXj4sOt7LX9Ql5wU7+r0+eDSRPhFs9+kwzH0bC+4Q/pBCV/N9j99bG99MjXrah7FP888CcJRPL5hfHSwJBMXaHLgSlY4N0IzjVaoznicLGGehOWry0qR25IAwAcBzqHb7OglNVikjl5MVzhY6KDK8zL7uBMjNd8DkvInPTuZHbgrBoZ4BVas3fgLW0C8KuDiXagLW3bQy7loB1pH5h53pMxDpdY+cXvM5ujwPEprnO7qFLy+ZA27RDtFRDm6MjtVeBMuxHcppXmih/rS/rLcCctbfx7yMZ15v9SO74SiPnMQEAa8bfNMjlhDct5Rrvgenh+qeDXJqkLpj94kBMsHnaGi9trhsow2krprBQZvO9NzVDoivLjG2I855042Qv6qQGo5Mhh5/5ML3dtLnZge3OzGyH0JQryQo0I7gZxjW+LYQ5bWI52VmIp0k+Fmsz5PMLxRNdcW9QX9qJWIyVee04ez8dcvZGUVGVvkcKMONiZ7PfKgVm1xRcRheGApmY50MVnO7FYADAjApUp76gawCRPM8MvUGNnpbApPWVbtlHOz/R/mwbDbp1IG1Gf58TPI8RcnXELe94+9Qy08Ba1iXV6/hQ8iYuQwrQHxlA4H66IqtX5VibvGGOfThx5zD6y/G3a2GBG7kie5xiOfR6yhlFqJxXonHYV6G/PExfYCdvz6UDXYQ76syf6CFdhsdA9dW/5O0PcpEcBK+0WAEAKAHI6R1yhaEkiIUzSGr1TAM6BRAwz9VrsGQF6akykJ2bZD9B3YJnA0JEpG8MvbBYURHtVuglUAxXw2cQsVxJkYFwfS4Bu3CvEnywDFItJBPx10XMrDpvIz6qaOmFgXLEJ0wGmFVVHqhfDkdWnZysI+WchhO1CRrFpYYEtq/TaYqODxGZ5eqjqZUd7umoAICUu/DDgfPwtM0T27J+eeck+c1z4by4mQ3luluLQfW9RMBL2We4wPOaxnCciCR2ktU8FNj8Er/D/o/SH4be//bMaS23l3LG1IsVvXbULkuH3GzimLOp7o4iiFRRyXgWYAgi1VFKg+lm6J+s7cfOJnpd4D9SHW5RGABQBzTowDdhpnLYEjyPoZfC056d5+5GrnjrSvjmcHgxcZWt3DCg+GSGZM59b1DisTPZymsJIQfrklWuU38nU/qHYCyk1MgTCcO92bNlGD2Ewz/FffCn4E7Y9xMfuroecun6/G5w9+qUsx7/BdRn/2A/gOe49gdftOrTCi8BqAHSb1fOQydWHq5SsmL5ejYbTp5uaGQG1FxuBAYw5SccEFU98jfgGwcWPaqaSnh8TDp6BK7k+eWFeP++s3kQ6PK7sSSwZOMFX1iH5+gSOPi9XH+6b3Y/cBe/Njjxd3h9Lub2VIfg7m/Wkp+fFaehNuqdqY7ORDGO8ewz/p9h5vPT4qo55YurCjzaLX8STLKf3ya4xZamKR30krko8TSYZDFNOu0u7rmLOqZigLFAU5AvYd9lS8pn7Ic+RzyBW5/D3K5n5gsjJ6Lt2NBHfV5KuWVZWr71XOmHmOFbXqFzXlvpmWjWXY6UoLYL+SJh09cnt+Q3hubO8COP6War8uqA+M9XqMh1l2+vFpfL4TU4H7gWB1cBfE7g+UFteZ7vI05o+u3xUsP9UZK3bgCNNCoAAI0D6NY76sWwwgYZaQyKByN1wjQ1oHfxTuXzPe7tCgq3GAwAMFRgKBN+05NcZkfAmOepBTipzpueqSzvJEXPhN9wHt9IQGs3tlLAJ5EEH6A72McDtjmqTJBB2bEBO1WKjpk1YIdWdMvCgB2NYi6sDNhrt25EiT9gb/afYgEQx7Vvp94/l4lQs3y6CpjUYRYL6FszcVtDtcmxChhMZolEADDXAGfpIG4dgHO/+42ekjghnfPv9q0OWvv8q/5UZR8eYx/f3Bvb+L6w7/pON2u7fbO85b0+3MlVn3053tMWO4O5xmTC1TofFrnRPXjqV+QxerGjYvs5jkrsR0f07/RUYf0w5vURO62d6WOAT+g4YLNWNuULi6qrWhCPU+jskS+PeK7S4LlRhzWPfrpIJ9ILzzZo5yfpZcvwbpisaQijY3lrQK64Oq/nkHdP3AUr4aEYG/qyG18xuJYrb+j2zYsdi1sFzZjG586pDdm9b/ZVu28Ca8fKT3aktXL+4rMD4H4jsyPodkZvG7OjPnfMKFeh/TmbB1kgnkauWMd0NbZUxN/JXs5nzij+XXnBF2UTNX/7m3YL63UvByhLwwXhxY7E6cOb7J8rx/4V9POIDU/l+xnxOsT4TbQn6svnbM8VFhiirzobqG7CMllCe++j7cI3F2l9Fnpwe67vKl14wWIFACDG2yl0vCDbVVBV5mBCT8efBwLEyqMvkagiXnxaGABgxJsqw98xPJ0dgTkzzxVnlhvJ2jP0dummQxlAX+Xm2ef5idunR18xMJThcjCJIR0Cbqf687AUB0F1F29XYG9sDGpV4AjbgoYKnMQX0HSLaEPrRhmJjq0BI2ANl+jKA/LuN0k3zNWcDWcUnDBQ+h7AOTO5krUrz+cekJFCPLOL/0THPo/AKTDmixuvK0vq9Ulp3dBwnWkOLa/4R9nkfs4U+aMIo00vYzBL1SeYrb3XoZplSZPq1Mvt2iUSAcDShVxM8UOzkFaK9Q8CpveiHw20NW0tlmkafNyGfV41X7yO/PcUnp3XZ+c1DM43ifNdG/8MbPHaM7ctvH7Bfe58+qy89rq+m+ziscCOY86oWkGDYscthaWA1uVBK5rxV1p9XuVEpti6T79c8Tg7i9Gl/YPz9uvXa4xrQ7a9TcBvPdn3rNsxnjiOveaCMABAc/iioafZem8NEzrTrSm8MECeZ+JARW/YPKvz4gUe8cSeqK0GiQz5/ETRF6Y8InJsl0NmmKSmSUfPzGTmhZOJe7MtW4OchAbDdjJnvzG7bfu2xQH21EJsOTxPXp8nr2ExvnyIdPR26W1/eH5x+D6ensGb1zDs4OA6HwX4qryTBV9CT8HeStOs6KvOZqiL3kwhONHhH+b156T7iGeuqDX6s9CDb73cd5M5wHONCgCAF8CWip1N5zMV2J7S4Pq0qkRnTa1mH8XLjT6SpoF5dvCLXtcnl02dqpxH8t42gwEAvps8UZ92+ka2PkQKETOT9WOHRTjexQxntaCiMg97QDODWT2nPlXwjN+Y1fcVA0N5UfojCuMOSN76sUtoaYQkcZ5DsGRjMJweBbcIz226ZcYtwteaC7MqsHXtG6sALNASsNAEKkiqDCJpMGIJVNt96k6qusBNfp1x5rVkx2sHMvorxoZ/qfU/87VzW1T9Hqi2arYe58Xt4n/WAYCthkgunYswtQKy/iD02p+bEGyVpIofsiQOxfsnBW7rgr8iQaruFF3BbUh3SrUU7SwapCkq//ZDm2P8bd+VPw8n6NvuWj/1sZt6S3d2UOFzb/eMqosIfIhLKXYsxK2UBuOkVa1BZePpFoUBAO4YpoHRVhcsm4VdjefJ6W2KNzo7b6NS9I7T7Znw9o7D1lSeBafbBFm3W5CCM9Ayh2ZhH8yWdrkwmG2D4Qbcon3bPnDLNmLRzKJzqCt5Ps+lYuchzZfhu/7UP+Hl9g2YZmXOe1PfTU4BaSxWAADSzb7uLTXPFd7aGLxG8e7Ka2P60duYUxPgqIYwAGCKfdsWB6xcYPA2Rt4dkd5MZR4xM4ArA7QKq0uxr+YniqC4snpAsQ2CdBewJYTHQbA4DzigBqeqmNkYj/Ex+gWHh1HKDCfiYt/YBnFjC9iDgqriRCmDN7KbvaEhH7bV4/9o8iqpt0UijZeK23fqXPbwbLEu9l5qH4qOLfxsXPvOyZqOi7ptV29mkEylzceyh1rHKduSdPqEVtt98zl85h7vsomK8+M9/w++WIvOoaq8J3yCf7UYvCR8OKm+lE/yGH2CB+m5Dv6JidLoIU/mh/hiOQXtjzhatQ85YkdsD7v/8VPmJEog7ZUKj2jCxvO6LsXNCcLK7+niPQryHDEdafxurmo3xH/8VbK/jwV5rg03y/tvC9T1Rd8JKI2usEZSQgV1ss8+gJtjtpcD\",\"base64\")).toString()),wq}var tEe=new Map([[G.makeIdent(null,\"fsevents\").identHash,Zye],[G.makeIdent(null,\"resolve\").identHash,$ye],[G.makeIdent(null,\"typescript\").identHash,eEe]]),Lct={hooks:{registerPackageExtensions:async(t,e)=>{for(let[r,s]of Eq)e(G.parseDescriptor(r,!0),s)},getBuiltinPatch:async(t,e)=>{let r=\"compat/\";if(!e.startsWith(r))return;let s=G.parseIdent(e.slice(r.length)),a=tEe.get(s.identHash)?.();return typeof a<\"u\"?a:null},reduceDependency:async(t,e,r,s)=>typeof tEe.get(t.identHash)>\"u\"?t:G.makeDescriptor(t,G.makeRange({protocol:\"patch:\",source:G.stringifyDescriptor(t),selector:`optional!builtin<compat/${G.stringifyIdent(t)}>`,params:null}))}},Mct=Lct;var _q={};Vt(_q,{ConstraintsCheckCommand:()=>ZC,ConstraintsQueryCommand:()=>zC,ConstraintsSourceCommand:()=>XC,default:()=>nut});Ge();Ge();iS();var YC=class{constructor(e){this.project=e}createEnvironment(){let e=new WC([\"cwd\",\"ident\"]),r=new WC([\"workspace\",\"type\",\"ident\"]),s=new WC([\"ident\"]),a={manifestUpdates:new Map,reportedErrors:new Map},n=new Map,c=new Map;for(let f of this.project.storedPackages.values()){let p=Array.from(f.peerDependencies.values(),h=>[G.stringifyIdent(h),h.range]);n.set(f.locatorHash,{workspace:null,ident:G.stringifyIdent(f),version:f.version,dependencies:new Map,peerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional!==!0)),optionalPeerDependencies:new Map(p.filter(([h])=>f.peerDependenciesMeta.get(h)?.optional===!0))})}for(let f of this.project.storedPackages.values()){let p=n.get(f.locatorHash);p.dependencies=new Map(Array.from(f.dependencies.values(),h=>{let E=this.project.storedResolutions.get(h.descriptorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let C=n.get(E);if(typeof C>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");return[G.stringifyIdent(h),C]})),p.dependencies.delete(p.ident)}for(let f of this.project.workspaces){let p=G.stringifyIdent(f.anchoredLocator),h=f.manifest.exportTo({}),E=n.get(f.anchoredLocator.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");let C=(R,N,{caller:U=Ui.getCaller()}={})=>{let W=nS(R),ee=je.getMapWithDefault(a.manifestUpdates,f.cwd),ie=je.getMapWithDefault(ee,W),ue=je.getSetWithDefault(ie,N);U!==null&&ue.add(U)},S=R=>C(R,void 0,{caller:Ui.getCaller()}),P=R=>{je.getArrayWithDefault(a.reportedErrors,f.cwd).push(R)},I=e.insert({cwd:f.relativeCwd,ident:p,manifest:h,pkg:E,set:C,unset:S,error:P});c.set(f,I);for(let R of Ut.allDependencies)for(let N of f.manifest[R].values()){let U=G.stringifyIdent(N),W=()=>{C([R,U],void 0,{caller:Ui.getCaller()})},ee=ue=>{C([R,U],ue,{caller:Ui.getCaller()})},ie=null;if(R!==\"peerDependencies\"&&(R!==\"dependencies\"||!f.manifest.devDependencies.has(N.identHash))){let ue=f.anchoredPackage.dependencies.get(N.identHash);if(ue){if(typeof ue>\"u\")throw new Error(\"Assertion failed: The dependency should have been registered\");let le=this.project.storedResolutions.get(ue.descriptorHash);if(typeof le>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");let me=n.get(le);if(typeof me>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");ie=me}}r.insert({workspace:I,ident:U,range:N.range,type:R,resolution:ie,update:ee,delete:W,error:P})}}for(let f of this.project.storedPackages.values()){let p=this.project.tryWorkspaceByLocator(f);if(!p)continue;let h=c.get(p);if(typeof h>\"u\")throw new Error(\"Assertion failed: The workspace should have been registered\");let E=n.get(f.locatorHash);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");E.workspace=h}return{workspaces:e,dependencies:r,packages:s,result:a}}async process(){let e=this.createEnvironment(),r={Yarn:{workspace:a=>e.workspaces.find(a)[0]??null,workspaces:a=>e.workspaces.find(a),dependency:a=>e.dependencies.find(a)[0]??null,dependencies:a=>e.dependencies.find(a),package:a=>e.packages.find(a)[0]??null,packages:a=>e.packages.find(a)}},s=await this.project.loadUserConfig();return s?.constraints?(await s.constraints(r),e.result):null}};Ge();Ge();Yt();var zC=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.query=ge.String()}static{this.paths=[[\"constraints\",\"query\"]]}static{this.usage=ot.Usage({category:\"Constraints-related commands\",description:\"query the constraints fact database\",details:`\n      This command will output all matches to the given prolog query.\n    `,examples:[[\"List all dependencies throughout the workspace\",\"yarn constraints query 'workspace_has_dependency(_, DependencyName, _, _).'\"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a),c=this.query;return c.endsWith(\".\")||(c=`${c}.`),(await Ot.start({configuration:s,json:this.json,stdout:this.context.stdout},async p=>{for await(let h of n.query(c)){let E=Array.from(Object.entries(h)),C=E.length,S=E.reduce((P,[I])=>Math.max(P,I.length),0);for(let P=0;P<C;P++){let[I,R]=E[P];p.reportInfo(null,`${tut(P,C)}${I.padEnd(S,\" \")} = ${eut(R)}`)}p.reportJson(h)}})).exitCode()}};function eut(t){return typeof t!=\"string\"?`${t}`:t.match(/^[a-zA-Z][a-zA-Z0-9_]+$/)?t:`'${t}'`}function tut(t,e){let r=t===0,s=t===e-1;return r&&s?\"\":r?\"\\u250C \":s?\"\\u2514 \":\"\\u2502 \"}Ge();Yt();var XC=class extends ft{constructor(){super(...arguments);this.verbose=ge.Boolean(\"-v,--verbose\",!1,{description:\"Also print the fact database automatically compiled from the workspace manifests\"})}static{this.paths=[[\"constraints\",\"source\"]]}static{this.usage=ot.Usage({category:\"Constraints-related commands\",description:\"print the source code for the constraints\",details:\"\\n      This command will print the Prolog source code used by the constraints engine. Adding the `-v,--verbose` flag will print the *full* source code, including the fact database automatically compiled from the workspace manifests.\\n    \",examples:[[\"Prints the source code\",\"yarn constraints source\"],[\"Print the source code and the fact database\",\"yarn constraints source -v\"]]})}async execute(){let{Constraints:r}=await Promise.resolve().then(()=>(lS(),aS)),s=await ze.find(this.context.cwd,this.context.plugins),{project:a}=await Tt.find(s,this.context.cwd),n=await r.find(a);this.context.stdout.write(this.verbose?n.fullSource:n.source)}};Ge();Ge();Yt();iS();var ZC=class extends ft{constructor(){super(...arguments);this.fix=ge.Boolean(\"--fix\",!1,{description:\"Attempt to automatically fix unambiguous issues, following a multi-pass process\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"constraints\"]]}static{this.usage=ot.Usage({category:\"Constraints-related commands\",description:\"check that the project constraints are met\",details:`\n      This command will run constraints on your project and emit errors for each one that is found but isn't met. If any error is emitted the process will exit with a non-zero exit code.\n\n      If the \\`--fix\\` flag is used, Yarn will attempt to automatically fix the issues the best it can, following a multi-pass process (with a maximum of 10 iterations). Some ambiguous patterns cannot be autofixed, in which case you'll have to manually specify the right resolution.\n\n      For more information as to how to write constraints, please consult our dedicated page on our website: https://yarnpkg.com/features/constraints.\n    `,examples:[[\"Check that all constraints are satisfied\",\"yarn constraints\"],[\"Autofix all unmet constraints\",\"yarn constraints --fix\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd);await s.restoreInstallState();let a=await s.loadUserConfig(),n;if(a?.constraints)n=new YC(s);else{let{Constraints:h}=await Promise.resolve().then(()=>(lS(),aS));n=await h.find(s)}let c,f=!1,p=!1;for(let h=this.fix?10:1;h>0;--h){let E=await n.process();if(!E)break;let{changedWorkspaces:C,remainingErrors:S}=iF(s,E,{fix:this.fix}),P=[];for(let[I,R]of C){let N=I.manifest.indent;I.manifest=new Ut,I.manifest.indent=N,I.manifest.load(R),P.push(I.persistManifest())}if(await Promise.all(P),!(C.size>0&&h>1)){c=rEe(S,{configuration:r}),f=!1,p=!0;for(let[,I]of S)for(let R of I)R.fixable?f=!0:p=!1}}if(c.children.length===0)return 0;if(f){let h=p?`Those errors can all be fixed by running ${he.pretty(r,\"yarn constraints --fix\",he.Type.CODE)}`:`Errors prefixed by '\\u2699' can be fixed by running ${he.pretty(r,\"yarn constraints --fix\",he.Type.CODE)}`;await Ot.start({configuration:r,stdout:this.context.stdout,includeNames:!1,includeFooter:!1},async E=>{E.reportInfo(0,h),E.reportSeparator()})}return c.children=je.sortMap(c.children,h=>h.value[1]),xs.emitTree(c,{configuration:r,stdout:this.context.stdout,json:this.json,separators:1}),1}};iS();var rut={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:[zC,XC,ZC],hooks:{async validateProjectAfterInstall(t,{reportError:e}){if(!t.configuration.get(\"enableConstraintsChecks\"))return;let r=await t.loadUserConfig(),s;if(r?.constraints)s=new YC(t);else{let{Constraints:c}=await Promise.resolve().then(()=>(lS(),aS));s=await c.find(t)}let a=await s.process();if(!a)return;let{remainingErrors:n}=iF(t,a);if(n.size!==0)if(t.configuration.isCI)for(let[c,f]of n)for(let p of f)e(84,`${he.pretty(t.configuration,c.anchoredLocator,he.Type.IDENT)}: ${p.text}`);else e(84,`Constraint check failed; run ${he.pretty(t.configuration,\"yarn constraints\",he.Type.CODE)} for more details`)}}},nut=rut;var Hq={};Vt(Hq,{CreateCommand:()=>$C,DlxCommand:()=>ew,default:()=>sut});Ge();Yt();var $C=class extends ft{constructor(){super(...arguments);this.pkg=ge.String(\"-p,--package\",{description:\"The package to run the provided command from\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"create\"]]}async execute(){let r=[];this.pkg&&r.push(\"--package\",this.pkg),this.quiet&&r.push(\"--quiet\");let s=this.command.replace(/^(@[^@/]+)(@|$)/,\"$1/create$2\"),a=G.parseDescriptor(s),n=a.name.match(/^create(-|$)/)?a:a.scope?G.makeIdent(a.scope,`create-${a.name}`):G.makeIdent(null,`create-${a.name}`),c=G.stringifyIdent(n);return a.range!==\"unknown\"&&(c+=`@${a.range}`),this.cli.run([\"dlx\",...r,c,...this.args])}};Ge();Ge();Dt();Yt();var ew=class extends ft{constructor(){super(...arguments);this.packages=ge.Array(\"-p,--package\",{description:\"The package(s) to install before running the command\"});this.quiet=ge.Boolean(\"-q,--quiet\",!1,{description:\"Only report critical errors instead of printing the full install logs\"});this.command=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"dlx\"]]}static{this.usage=ot.Usage({description:\"run a package in a temporary environment\",details:\"\\n      This command will install a package within a temporary environment, and run its binary script if it contains any. The binary will run within the current cwd.\\n\\n      By default Yarn will download the package named `command`, but this can be changed through the use of the `-p,--package` flag which will instruct Yarn to still run the same command but from a different package.\\n\\n      Using `yarn dlx` as a replacement of `yarn add` isn't recommended, as it makes your project non-deterministic (Yarn doesn't keep track of the packages installed through `dlx` - neither their name, nor their version).\\n    \",examples:[[\"Use create-vite to scaffold a new Vite project\",\"yarn dlx create-vite\"],[\"Install multiple packages for a single command\",`yarn dlx -p typescript -p ts-node ts-node --transpile-only -e \"console.log('hello!')\"`]]})}async execute(){return ze.telemetry=null,await ce.mktempPromise(async r=>{let s=J.join(r,`dlx-${process.pid}`);await ce.mkdirPromise(s),await ce.writeFilePromise(J.join(s,\"package.json\"),`{}\n`),await ce.writeFilePromise(J.join(s,\"yarn.lock\"),\"\");let a=J.join(s,\".yarnrc.yml\"),n=await ze.findProjectCwd(this.context.cwd),f={enableGlobalCache:!(await ze.find(this.context.cwd,null,{strict:!1})).get(\"enableGlobalCache\"),enableTelemetry:!1,logFilters:[{code:Yf(68),level:he.LogLevel.Discard}]},p=n!==null?J.join(n,\".yarnrc.yml\"):null;p!==null&&ce.existsSync(p)?(await ce.copyFilePromise(p,a),await ze.updateConfiguration(s,N=>{let U=je.toMerged(N,f);return Array.isArray(N.plugins)&&(U.plugins=N.plugins.map(W=>{let ee=typeof W==\"string\"?W:W.path,ie=fe.isAbsolute(ee)?ee:fe.resolve(fe.fromPortablePath(n),ee);return typeof W==\"string\"?ie:{path:ie,spec:W.spec}})),U})):await ce.writeJsonPromise(a,f);let h=this.packages??[this.command],E=G.parseDescriptor(this.command).name,C=await this.cli.run([\"add\",\"--fixed\",\"--\",...h],{cwd:s,quiet:this.quiet});if(C!==0)return C;this.quiet||this.context.stdout.write(`\n`);let S=await ze.find(s,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,s);if(I===null)throw new ar(P.cwd,s);await P.restoreInstallState();let R=await In.getWorkspaceAccessibleBinaries(I);return R.has(E)===!1&&R.size===1&&typeof this.packages>\"u\"&&(E=Array.from(R)[0][0]),await In.executeWorkspaceAccessibleBinary(I,E,this.args,{packageAccessibleBinaries:R,cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr})})}};var iut={commands:[$C,ew]},sut=iut;var qq={};Vt(qq,{ExecFetcher:()=>uS,ExecResolver:()=>fS,default:()=>lut,execUtils:()=>lF});Ge();Ge();Dt();var cA=\"exec:\";var lF={};Vt(lF,{loadGeneratorFile:()=>cS,makeLocator:()=>Gq,makeSpec:()=>PEe,parseSpec:()=>jq});Ge();Dt();function jq(t){let{params:e,selector:r}=G.parseRange(t),s=fe.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?G.parseLocator(e.locator):null,path:s}}function PEe({parentLocator:t,path:e,generatorHash:r,protocol:s}){let a=t!==null?{locator:G.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return G.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function Gq(t,{parentLocator:e,path:r,generatorHash:s,protocol:a}){return G.makeLocator(t,PEe({parentLocator:e,path:r,generatorHash:s,protocol:a}))}async function cS(t,e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(t,{protocol:e}),n=J.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,n.localPath)}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.join(c.prefixPath,a);return await f.readFilePromise(p,\"utf8\")}var uS=class{supports(e,r){return!!e.reference.startsWith(cA)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:cA});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e),loader:()=>this.fetchFromDisk(e,r),...r.cacheOptions});return{packageFs:a,releaseFs:n,prefixPath:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){let s=await cS(e.reference,cA,r);return ce.mktempPromise(async a=>{let n=J.join(a,\"generator.js\");return await ce.writeFilePromise(n,s),ce.mktempPromise(async c=>{if(await this.generatePackage(c,e,n,r),!ce.existsSync(J.join(c,\"build\")))throw new Error(\"The script should have generated a build directory\");return await ps.makeArchiveFromDirectory(J.join(c,\"build\"),{prefixPath:G.getIdentVendorPath(e),compressionLevel:r.project.configuration.get(\"compressionLevel\")})})})}async generatePackage(e,r,s,a){return await ce.mktempPromise(async n=>{let c=await In.makeScriptEnv({project:a.project,binFolder:n}),f=J.join(e,\"runtime.js\");return await ce.mktempPromise(async p=>{let h=J.join(p,\"buildfile.log\"),E=J.join(e,\"generator\"),C=J.join(e,\"build\");await ce.mkdirPromise(E),await ce.mkdirPromise(C);let S={tempDir:fe.fromPortablePath(E),buildDir:fe.fromPortablePath(C),locator:G.stringifyLocator(r)};await ce.writeFilePromise(f,`\n          // Expose 'Module' as a global variable\n          Object.defineProperty(global, 'Module', {\n            get: () => require('module'),\n            configurable: true,\n            enumerable: false,\n          });\n\n          // Expose non-hidden built-in modules as global variables\n          for (const name of Module.builtinModules.filter((name) => name !== 'module' && !name.startsWith('_'))) {\n            Object.defineProperty(global, name, {\n              get: () => require(name),\n              configurable: true,\n              enumerable: false,\n            });\n          }\n\n          // Expose the 'execEnv' global variable\n          Object.defineProperty(global, 'execEnv', {\n            value: {\n              ...${JSON.stringify(S)},\n            },\n            enumerable: true,\n          });\n        `);let P=c.NODE_OPTIONS||\"\",I=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g;P=P.replace(I,\" \").trim(),c.NODE_OPTIONS=P;let{stdout:R,stderr:N}=a.project.configuration.getSubprocessStreams(h,{header:`# This file contains the result of Yarn generating a package (${G.stringifyLocator(r)})\n`,prefix:G.prettyLocator(a.project.configuration,r),report:a.report}),{code:U}=await qr.pipevp(process.execPath,[\"--require\",fe.fromPortablePath(f),fe.fromPortablePath(s),G.stringifyIdent(r)],{cwd:e,env:c,stdin:null,stdout:R,stderr:N});if(U!==0)throw ce.detachTemp(p),new Error(`Package generation failed (exit code ${U}, logs can be found here: ${he.pretty(a.project.configuration,h,he.Type.PATH)})`)})})}};Ge();Ge();var out=2,fS=class{supportsDescriptor(e,r){return!!e.range.startsWith(cA)}supportsLocator(e,r){return!!e.reference.startsWith(cA)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=jq(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let c=await cS(G.makeRange({protocol:cA,source:a,selector:a,params:{locator:G.stringifyLocator(n)}}),cA,s.fetchOptions),f=Nn.makeHash(`${out}`,c).slice(0,6);return[Gq(e,{parentLocator:n,path:a,generatorHash:f,protocol:cA})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var aut={fetchers:[uS],resolvers:[fS]},lut=aut;var Yq={};Vt(Yq,{FileFetcher:()=>gS,FileResolver:()=>dS,TarballFileFetcher:()=>mS,TarballFileResolver:()=>yS,default:()=>fut,fileUtils:()=>xm});Ge();Dt();var tw=/^(?:[a-zA-Z]:[\\\\/]|\\.{0,2}\\/)/,AS=/^[^?]*\\.(?:tar\\.gz|tgz)(?:::.*)?$/,es=\"file:\";var xm={};Vt(xm,{fetchArchiveFromLocator:()=>hS,makeArchiveFromLocator:()=>cF,makeBufferFromLocator:()=>Wq,makeLocator:()=>rw,makeSpec:()=>xEe,parseSpec:()=>pS});Ge();Dt();function pS(t){let{params:e,selector:r}=G.parseRange(t),s=fe.toPortablePath(r);return{parentLocator:e&&typeof e.locator==\"string\"?G.parseLocator(e.locator):null,path:s}}function xEe({parentLocator:t,path:e,hash:r,protocol:s}){let a=t!==null?{locator:G.stringifyLocator(t)}:{},n=typeof r<\"u\"?{hash:r}:{};return G.makeRange({protocol:s,source:e,selector:e,params:{...n,...a}})}function rw(t,{parentLocator:e,path:r,hash:s,protocol:a}){return G.makeLocator(t,xEe({parentLocator:e,path:r,hash:s,protocol:a}))}async function hS(t,e){let{parentLocator:r,path:s}=G.parseFileStyleRange(t.reference,{protocol:es}),a=J.isAbsolute(s)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await e.fetcher.fetch(r,e),n=a.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,a.localPath)}:a;a!==n&&a.releaseFs&&a.releaseFs();let c=n.packageFs,f=J.join(n.prefixPath,s);return await je.releaseAfterUseAsync(async()=>await c.readFilePromise(f),n.releaseFs)}async function cF(t,{protocol:e,fetchOptions:r,inMemory:s=!1}){let{parentLocator:a,path:n}=G.parseFileStyleRange(t.reference,{protocol:e}),c=J.isAbsolute(n)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(a,r),f=c.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,c.localPath)}:c;c!==f&&c.releaseFs&&c.releaseFs();let p=f.packageFs,h=J.join(f.prefixPath,n);return await je.releaseAfterUseAsync(async()=>await ps.makeArchiveFromDirectory(h,{baseFs:p,prefixPath:G.getIdentVendorPath(t),compressionLevel:r.project.configuration.get(\"compressionLevel\"),inMemory:s}),f.releaseFs)}async function Wq(t,{protocol:e,fetchOptions:r}){return(await cF(t,{protocol:e,fetchOptions:r,inMemory:!0})).getBufferAndClose()}var gS=class{supports(e,r){return!!e.reference.startsWith(es)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:es});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.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:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async fetchFromDisk(e,r){return cF(e,{protocol:es,fetchOptions:r})}};Ge();Ge();var cut=2,dS=class{supportsDescriptor(e,r){return e.range.match(tw)?!0:!!e.range.startsWith(es)}supportsLocator(e,r){return!!e.reference.startsWith(es)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return tw.test(e.range)&&(e=G.makeDescriptor(e,`${es}${e.range}`)),G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=pS(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let c=await Wq(G.makeLocator(e,G.makeRange({protocol:es,source:a,selector:a,params:{locator:G.stringifyLocator(n)}})),{protocol:es,fetchOptions:s.fetchOptions}),f=Nn.makeHash(`${cut}`,c).slice(0,6);return[rw(e,{parentLocator:n,path:a,hash:f,protocol:es})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};Ge();var mS=class{supports(e,r){return AS.test(e.reference)?!!e.reference.startsWith(es):!1}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.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:G.getIdentVendorPath(e),checksum:c}}async fetchFromDisk(e,r){let s=await hS(e,r);return await ps.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};Ge();Ge();Ge();var yS=class{supportsDescriptor(e,r){return AS.test(e.range)?!!(e.range.startsWith(es)||tw.test(e.range)):!1}supportsLocator(e,r){return AS.test(e.reference)?!!e.reference.startsWith(es):!1}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return tw.test(e.range)&&(e=G.makeDescriptor(e,`${es}${e.range}`)),G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{path:a,parentLocator:n}=pS(e.range);if(n===null)throw new Error(\"Assertion failed: The descriptor should have been bound\");let c=rw(e,{parentLocator:n,path:a,hash:\"\",protocol:es}),f=await hS(c,s.fetchOptions),p=Nn.makeHash(f).slice(0,6);return[rw(e,{parentLocator:n,path:a,hash:p,protocol:es})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var uut={fetchers:[mS,gS],resolvers:[yS,dS]},fut=uut;var Kq={};Vt(Kq,{GithubFetcher:()=>ES,default:()=>put,githubUtils:()=>uF});Ge();Dt();var uF={};Vt(uF,{invalidGithubUrlMessage:()=>TEe,isGithubUrl:()=>Vq,parseGithubUrl:()=>Jq});var kEe=ut(Ie(\"querystring\")),QEe=[/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+)\\/tarball\\/([^/#]+)(?:#(.*))?$/,/^https?:\\/\\/(?:([^/]+?)@)?github.com\\/([^/#]+)\\/([^/#]+?)(?:\\.git)?(?:#(.*))?$/];function Vq(t){return t?QEe.some(e=>!!t.match(e)):!1}function Jq(t){let e;for(let f of QEe)if(e=t.match(f),e)break;if(!e)throw new Error(TEe(t));let[,r,s,a,n=\"master\"]=e,{commit:c}=kEe.default.parse(n);return n=c||n.replace(/[^:]*:/,\"\"),{auth:r,username:s,reponame:a,treeish:n}}function TEe(t){return`Input cannot be parsed as a valid GitHub URL ('${t}').`}var ES=class{supports(e,r){return!!Vq(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.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:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await nn.get(this.getLocatorUrl(e,r),{configuration:r.project.configuration});return await ce.mktempPromise(async a=>{let n=new Sn(a);await ps.extractArchiveTo(s,n,{stripComponents:1});let c=ka.splitRepoUrl(e.reference),f=J.join(a,\"package.tgz\");await In.prepareExternalProject(a,f,{configuration:r.project.configuration,report:r.report,workspace:c.extra.workspace,locator:e});let p=await ce.readFilePromise(f);return await ps.convertToZip(p,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})})}getLocatorUrl(e,r){let{auth:s,username:a,reponame:n,treeish:c}=Jq(e.reference);return`https://${s?`${s}@`:\"\"}github.com/${a}/${n}/archive/${c}.tar.gz`}};var Aut={hooks:{async fetchHostedRepository(t,e,r){if(t!==null)return t;let s=new ES;if(!s.supports(e,r))return null;try{return await s.fetch(e,r)}catch{return null}}}},put=Aut;var zq={};Vt(zq,{TarballHttpFetcher:()=>CS,TarballHttpResolver:()=>wS,default:()=>gut});Ge();function IS(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 CS=class{supports(e,r){return IS(e.reference)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.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:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s=await nn.get(e.reference,{configuration:r.project.configuration});return await ps.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};Ge();Ge();var wS=class{supportsDescriptor(e,r){return IS(e.range)}supportsLocator(e,r){return IS(e.reference)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){return[G.convertDescriptorToLocator(e)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"HARD\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var hut={fetchers:[CS],resolvers:[wS]},gut=hut;var Xq={};Vt(Xq,{InitCommand:()=>z0,InitInitializerCommand:()=>nw,default:()=>mut});Yt();Ge();Ge();Dt();Yt();var z0=class extends ft{constructor(){super(...arguments);this.private=ge.Boolean(\"-p,--private\",!1,{description:\"Initialize a private package\"});this.workspace=ge.Boolean(\"-w,--workspace\",!1,{description:\"Initialize a workspace root with a `packages/` directory\"});this.install=ge.String(\"-i,--install\",!1,{tolerateBoolean:!0,description:\"Initialize a package with a specific bundle that will be locked in the project\"});this.name=ge.String(\"-n,--name\",{description:\"Initialize a package with the given name\"});this.usev2=ge.Boolean(\"-2\",!1,{hidden:!0});this.yes=ge.Boolean(\"-y,--yes\",{hidden:!0})}static{this.paths=[[\"init\"]]}static{this.usage=ot.Usage({description:\"create a new package\",details:\"\\n      This command will setup a new package in your local directory.\\n\\n      If the `-p,--private` or `-w,--workspace` options are set, the package will be private by default.\\n\\n      If the `-w,--workspace` option is set, the package will be configured to accept a set of workspaces in the `packages/` directory.\\n\\n      If the `-i,--install` option is given a value, Yarn will first download it using `yarn set version` and only then forward the init call to the newly downloaded bundle. Without arguments, the downloaded bundle will be `latest`.\\n\\n      The initial settings of the manifest can be changed by using the `initScope` and `initFields` configuration values. Additionally, Yarn will generate an EditorConfig file whose rules can be altered via `initEditorConfig`, and will initialize a Git repository in the current directory.\\n    \",examples:[[\"Create a new package in the local directory\",\"yarn init\"],[\"Create a new private package in the local directory\",\"yarn init -p\"],[\"Create a new package and store the Yarn release inside\",\"yarn init -i=latest\"],[\"Create a new private package and defines it as a workspace root\",\"yarn init -w\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=typeof this.install==\"string\"?this.install:this.usev2||this.install===!0?\"latest\":null;return s!==null?await this.executeProxy(r,s):await this.executeRegular(r)}async executeProxy(r,s){if(r.projectCwd!==null&&r.projectCwd!==this.context.cwd)throw new nt(\"Cannot use the --install flag from within a project subdirectory\");ce.existsSync(this.context.cwd)||await ce.mkdirPromise(this.context.cwd,{recursive:!0});let a=J.join(this.context.cwd,Er.lockfile);ce.existsSync(a)||await ce.writeFilePromise(a,\"\");let n=await this.cli.run([\"set\",\"version\",s],{quiet:!0});if(n!==0)return n;let c=[];return this.private&&c.push(\"-p\"),this.workspace&&c.push(\"-w\"),this.name&&c.push(`-n=${this.name}`),this.yes&&c.push(\"-y\"),await ce.mktempPromise(async f=>{let{code:p}=await qr.pipevp(\"yarn\",[\"init\",...c],{cwd:this.context.cwd,stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr,env:await In.makeScriptEnv({binFolder:f})});return p})}async initialize(){}async executeRegular(r){let s=null;try{s=(await Tt.find(r,this.context.cwd)).project}catch{s=null}ce.existsSync(this.context.cwd)||await ce.mkdirPromise(this.context.cwd,{recursive:!0});let a=await Ut.tryFind(this.context.cwd),n=a??new Ut,c=Object.fromEntries(r.get(\"initFields\").entries());n.load(c),n.name=n.name??G.makeIdent(r.get(\"initScope\"),this.name??J.basename(this.context.cwd)),n.packageManager=fn&&je.isTaggedYarnVersion(fn)?`yarn@${fn}`:null,(!a&&this.workspace||this.private)&&(n.private=!0),this.workspace&&n.workspaceDefinitions.length===0&&(await ce.mkdirPromise(J.join(this.context.cwd,\"packages\"),{recursive:!0}),n.workspaceDefinitions=[{pattern:\"packages/*\"}]);let f={};n.exportTo(f);let p=J.join(this.context.cwd,Ut.fileName);await ce.changeFilePromise(p,`${JSON.stringify(f,null,2)}\n`,{automaticNewlines:!0});let h=[p],E=J.join(this.context.cwd,\"README.md\");if(ce.existsSync(E)||(await ce.writeFilePromise(E,`# ${G.stringifyIdent(n.name)}\n`),h.push(E)),!s||s.cwd===this.context.cwd){let C=J.join(this.context.cwd,Er.lockfile);ce.existsSync(C)||(await ce.writeFilePromise(C,\"\"),h.push(C));let P=[\".yarn/*\",\"!.yarn/patches\",\"!.yarn/plugins\",\"!.yarn/releases\",\"!.yarn/sdks\",\"!.yarn/versions\",\"\",\"# Whether you use PnP or not, the node_modules folder is often used to store\",\"# build artifacts that should be gitignored\",\"node_modules\",\"\",\"# Swap the comments on the following lines if you wish to use zero-installs\",\"# In that case, don't forget to run `yarn config set enableGlobalCache false`!\",\"# Documentation here: https://yarnpkg.com/features/caching#zero-installs\",\"\",\"#!.yarn/cache\",\".pnp.*\"].map(ue=>`${ue}\n`).join(\"\"),I=J.join(this.context.cwd,\".gitignore\");ce.existsSync(I)||(await ce.writeFilePromise(I,P),h.push(I));let N=[\"/.yarn/**            linguist-vendored\",\"/.yarn/releases/*    binary\",\"/.yarn/plugins/**/*  binary\",\"/.pnp.*              binary linguist-generated\"].map(ue=>`${ue}\n`).join(\"\"),U=J.join(this.context.cwd,\".gitattributes\");ce.existsSync(U)||(await ce.writeFilePromise(U,N),h.push(U));let W={\"*\":{charset:\"utf-8\",endOfLine:\"lf\",indentSize:2,indentStyle:\"space\",insertFinalNewline:!0}};je.mergeIntoTarget(W,r.get(\"initEditorConfig\"));let ee=`root = true\n`;for(let[ue,le]of Object.entries(W)){ee+=`\n[${ue}]\n`;for(let[me,pe]of Object.entries(le)){let Be=me.replace(/[A-Z]/g,Ce=>`_${Ce.toLowerCase()}`);ee+=`${Be} = ${pe}\n`}}let ie=J.join(this.context.cwd,\".editorconfig\");ce.existsSync(ie)||(await ce.writeFilePromise(ie,ee),h.push(ie)),await this.cli.run([\"install\"],{quiet:!0}),await this.initialize(),ce.existsSync(J.join(this.context.cwd,\".git\"))||(await qr.execvp(\"git\",[\"init\"],{cwd:this.context.cwd}),await qr.execvp(\"git\",[\"add\",\"--\",...h],{cwd:this.context.cwd}),await qr.execvp(\"git\",[\"commit\",\"--allow-empty\",\"-m\",\"First commit\"],{cwd:this.context.cwd}))}}};var nw=class extends z0{constructor(){super(...arguments);this.initializer=ge.String();this.argv=ge.Proxy()}static{this.paths=[[\"init\"]]}async initialize(){this.context.stdout.write(`\n`),await this.cli.run([\"dlx\",this.initializer,...this.argv],{quiet:!0})}};var dut={configuration:{initScope:{description:\"Scope used when creating packages via the init command\",type:\"STRING\",default:null},initFields:{description:\"Additional fields to set when creating packages via the init command\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}},initEditorConfig:{description:\"Extra rules to define in the generator editorconfig\",type:\"MAP\",valueDefinition:{description:\"\",type:\"ANY\"}}},commands:[z0,nw]},mut=dut;var JW={};Vt(JW,{SearchCommand:()=>Iw,UpgradeInteractiveCommand:()=>Cw,default:()=>Dgt});Ge();var FEe=ut(Ie(\"os\"));function iw({stdout:t}){if(FEe.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\")}Yt();var YIe=ut(g9()),d9={appId:\"OFCNCOG2CU\",apiKey:\"6fe4476ee5a1832882e326b506d14126\",indexName:\"npm-search\"},hAt=(0,YIe.default)(d9.appId,d9.apiKey).initIndex(d9.indexName),m9=async(t,e=0)=>await hAt.search(t,{analyticsTags:[\"yarn-plugin-interactive-tools\"],attributesToRetrieve:[\"name\",\"version\",\"owner\",\"repository\",\"humanDownloadsLast30Days\"],page:e,hitsPerPage:10});var CD=[\"regular\",\"dev\",\"peer\"],Iw=class extends ft{static{this.paths=[[\"search\"]]}static{this.usage=ot.Usage({category:\"Interactive commands\",description:\"open the search interface\",details:`\n    This command opens a fullscreen terminal interface where you can search for and install packages from the npm registry.\n    `,examples:[[\"Open the search window\",\"yarn search\"]]})}async execute(){iw(this.context);let{Gem:e}=await Promise.resolve().then(()=>(WF(),LW)),{ScrollableItems:r}=await Promise.resolve().then(()=>(KF(),JF)),{useKeypress:s}=await Promise.resolve().then(()=>(yD(),w2e)),{useMinistore:a}=await Promise.resolve().then(()=>(GW(),jW)),{renderForm:n}=await Promise.resolve().then(()=>($F(),ZF)),{default:c}=await Promise.resolve().then(()=>ut(T2e())),{Box:f,Text:p}=await Promise.resolve().then(()=>ut(Wc())),{default:h,useEffect:E,useState:C}=await Promise.resolve().then(()=>ut(hn())),S=await ze.find(this.context.cwd,this.context.plugins),P=()=>h.createElement(f,{flexDirection:\"row\"},h.createElement(f,{flexDirection:\"column\",width:48},h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to move between packages.\")),h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" to select a package.\")),h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<space>\"),\" again to change the target.\"))),h.createElement(f,{flexDirection:\"column\"},h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install the selected packages.\")),h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),I=()=>h.createElement(h.Fragment,null,h.createElement(f,{width:15},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Owner\")),h.createElement(f,{width:11},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Version\")),h.createElement(f,{width:10},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Downloads\"))),R=()=>h.createElement(f,{width:17},h.createElement(p,{bold:!0,underline:!0,color:\"gray\"},\"Target\")),N=({hit:pe,active:Be})=>{let[Ce,g]=a(pe.name,null);s({active:Be},(Ae,se)=>{if(se.name!==\"space\")return;if(!Ce){g(CD[0]);return}let Z=CD.indexOf(Ce)+1;Z===CD.length?g(null):g(CD[Z])},[Ce,g]);let we=G.parseIdent(pe.name),ye=G.prettyIdent(S,we);return h.createElement(f,null,h.createElement(f,{width:45},h.createElement(p,{bold:!0,wrap:\"wrap\"},ye)),h.createElement(f,{width:14,marginLeft:1},h.createElement(p,{bold:!0,wrap:\"truncate\"},pe.owner.name)),h.createElement(f,{width:10,marginLeft:1},h.createElement(p,{italic:!0,wrap:\"truncate\"},pe.version)),h.createElement(f,{width:16,marginLeft:1},h.createElement(p,null,pe.humanDownloadsLast30Days)))},U=({name:pe,active:Be})=>{let[Ce]=a(pe,null),g=G.parseIdent(pe);return h.createElement(f,null,h.createElement(f,{width:47},h.createElement(p,{bold:!0},\" - \",G.prettyIdent(S,g))),CD.map(we=>h.createElement(f,{key:we,width:14,marginLeft:1},h.createElement(p,null,\" \",h.createElement(e,{active:Ce===we}),\" \",h.createElement(p,{bold:!0},we)))))},W=()=>h.createElement(f,{marginTop:1},h.createElement(p,null,\"Powered by Algolia.\")),ie=await n(({useSubmit:pe})=>{let Be=a();pe(Be);let Ce=Array.from(Be.keys()).filter(j=>Be.get(j)!==null),[g,we]=C(\"\"),[ye,Ae]=C(0),[se,Z]=C([]),De=j=>{j.match(/\\t| /)||we(j)},Re=async()=>{Ae(0);let j=await m9(g);j.query===g&&Z(j.hits)},mt=async()=>{let j=await m9(g,ye+1);j.query===g&&j.page-1===ye&&(Ae(j.page),Z([...se,...j.hits]))};return E(()=>{g?Re():Z([])},[g]),h.createElement(f,{flexDirection:\"column\"},h.createElement(P,null),h.createElement(f,{flexDirection:\"row\",marginTop:1},h.createElement(p,{bold:!0},\"Search: \"),h.createElement(f,{width:41},h.createElement(c,{value:g,onChange:De,placeholder:\"i.e. babel, webpack, react...\",showCursor:!1})),h.createElement(I,null)),se.length?h.createElement(r,{radius:2,loop:!1,children:se.map(j=>h.createElement(N,{key:j.name,hit:j,active:!1})),willReachEnd:mt}):h.createElement(p,{color:\"gray\"},\"Start typing...\"),h.createElement(f,{flexDirection:\"row\",marginTop:1},h.createElement(f,{width:49},h.createElement(p,{bold:!0},\"Selected:\")),h.createElement(R,null)),Ce.length?Ce.map(j=>h.createElement(U,{key:j,name:j,active:!1})):h.createElement(p,{color:\"gray\"},\"No selected packages...\"),h.createElement(W,null))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof ie>\"u\")return 1;let ue=Array.from(ie.keys()).filter(pe=>ie.get(pe)===\"regular\"),le=Array.from(ie.keys()).filter(pe=>ie.get(pe)===\"dev\"),me=Array.from(ie.keys()).filter(pe=>ie.get(pe)===\"peer\");return ue.length&&await this.cli.run([\"add\",...ue]),le.length&&await this.cli.run([\"add\",\"--dev\",...le]),me&&await this.cli.run([\"add\",\"--peer\",...me]),0}};Ge();Yt();YG();var U2e=ut(Ai()),M2e=/^((?:[\\^~]|>=?)?)([0-9]+)(\\.[0-9]+)(\\.[0-9]+)((?:-\\S+)?)$/;function _2e(t,e){return t.length>0?[t.slice(0,e)].concat(_2e(t.slice(e),e)):[]}var Cw=class extends ft{static{this.paths=[[\"upgrade-interactive\"]]}static{this.usage=ot.Usage({category:\"Interactive commands\",description:\"open the upgrade interface\",details:`\n      This command opens a fullscreen terminal interface where you can see any out of date packages used by your application, their status compared to the latest versions available on the remote registry, and select packages to upgrade.\n    `,examples:[[\"Open the upgrade window\",\"yarn upgrade-interactive\"]]})}async execute(){iw(this.context);let{ItemOptions:e}=await Promise.resolve().then(()=>(L2e(),O2e)),{Pad:r}=await Promise.resolve().then(()=>(VW(),N2e)),{ScrollableItems:s}=await Promise.resolve().then(()=>(KF(),JF)),{useMinistore:a}=await Promise.resolve().then(()=>(GW(),jW)),{renderForm:n}=await Promise.resolve().then(()=>($F(),ZF)),{Box:c,Text:f}=await Promise.resolve().then(()=>ut(Wc())),{default:p,useEffect:h,useRef:E,useState:C}=await Promise.resolve().then(()=>ut(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,this.context.cwd),R=await Kr.find(S);if(!I)throw new ar(P.cwd,this.context.cwd);await P.restoreInstallState({restoreResolutions:!1});let N=this.context.stdout.rows-7,U=(we,ye)=>{let Ae=mde(we,ye),se=\"\";for(let Z of Ae)Z.added?se+=he.pretty(S,Z.value,\"green\"):Z.removed||(se+=Z.value);return se},W=(we,ye)=>{if(we===ye)return ye;let Ae=G.parseRange(we),se=G.parseRange(ye),Z=Ae.selector.match(M2e),De=se.selector.match(M2e);if(!Z||!De)return U(we,ye);let Re=[\"gray\",\"red\",\"yellow\",\"green\",\"magenta\"],mt=null,j=\"\";for(let rt=1;rt<Re.length;++rt)mt!==null||Z[rt]!==De[rt]?(mt===null&&(mt=Re[rt-1]),j+=he.pretty(S,De[rt],mt)):j+=De[rt];return j},ee=async(we,ye,Ae)=>{let se=await Xu.fetchDescriptorFrom(we,Ae,{project:P,cache:R,preserveModifier:ye,workspace:I});return se!==null?se.range:we.range},ie=async we=>{let ye=U2e.default.valid(we.range)?`^${we.range}`:we.range,[Ae,se]=await Promise.all([ee(we,we.range,ye).catch(()=>null),ee(we,we.range,\"latest\").catch(()=>null)]),Z=[{value:null,label:we.range}];return Ae&&Ae!==we.range?Z.push({value:Ae,label:W(we.range,Ae)}):Z.push({value:null,label:\"\"}),se&&se!==Ae&&se!==we.range?Z.push({value:se,label:W(we.range,se)}):Z.push({value:null,label:\"\"}),Z},ue=()=>p.createElement(c,{flexDirection:\"row\"},p.createElement(c,{flexDirection:\"column\",width:49},p.createElement(c,{marginLeft:1},p.createElement(f,null,\"Press \",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select packages.\")),p.createElement(c,{marginLeft:1},p.createElement(f,null,\"Press \",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select versions.\"))),p.createElement(c,{flexDirection:\"column\"},p.createElement(c,{marginLeft:1},p.createElement(f,null,\"Press \",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to install.\")),p.createElement(c,{marginLeft:1},p.createElement(f,null,\"Press \",p.createElement(f,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),le=()=>p.createElement(c,{flexDirection:\"row\",paddingTop:1,paddingBottom:1},p.createElement(c,{width:50},p.createElement(f,{bold:!0},p.createElement(f,{color:\"greenBright\"},\"?\"),\" Pick the packages you want to upgrade.\")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:\"gray\"},\"Current\")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:\"gray\"},\"Range\")),p.createElement(c,{width:17},p.createElement(f,{bold:!0,underline:!0,color:\"gray\"},\"Latest\"))),me=({active:we,descriptor:ye,suggestions:Ae})=>{let[se,Z]=a(ye.descriptorHash,null),De=G.stringifyIdent(ye),Re=Math.max(0,45-De.length);return p.createElement(p.Fragment,null,p.createElement(c,null,p.createElement(c,{width:45},p.createElement(f,{bold:!0},G.prettyIdent(S,ye)),p.createElement(r,{active:we,length:Re})),p.createElement(e,{active:we,options:Ae,value:se,skewer:!0,onChange:Z,sizes:[17,17,17]})))},pe=({dependencies:we})=>{let[ye,Ae]=C(we.map(()=>null)),se=E(!0),Z=async De=>{let Re=await ie(De);return Re.filter(mt=>mt.label!==\"\").length<=1?null:{descriptor:De,suggestions:Re}};return h(()=>()=>{se.current=!1},[]),h(()=>{let De=Math.trunc(N*1.75),Re=we.slice(0,De),mt=we.slice(De),j=_2e(mt,N),rt=Re.map(Z).reduce(async(Fe,Ne)=>{await Fe;let Pe=await Ne;Pe!==null&&se.current&&Ae(Ve=>{let ke=Ve.findIndex(Ue=>Ue===null),it=[...Ve];return it[ke]=Pe,it})},Promise.resolve());j.reduce((Fe,Ne)=>Promise.all(Ne.map(Pe=>Promise.resolve().then(()=>Z(Pe)))).then(async Pe=>{Pe=Pe.filter(Ve=>Ve!==null),await Fe,se.current&&Ae(Ve=>{let ke=Ve.findIndex(it=>it===null);return Ve.slice(0,ke).concat(Pe).concat(Ve.slice(ke+Pe.length))})}),rt).then(()=>{se.current&&Ae(Fe=>Fe.filter(Ne=>Ne!==null))})},[]),ye.length?p.createElement(s,{radius:N>>1,children:ye.map((De,Re)=>De!==null?p.createElement(me,{key:Re,active:!1,descriptor:De.descriptor,suggestions:De.suggestions}):p.createElement(f,{key:Re},\"Loading...\"))}):p.createElement(f,null,\"No upgrades found\")},Ce=await n(({useSubmit:we})=>{we(a());let ye=new Map;for(let se of P.workspaces)for(let Z of[\"dependencies\",\"devDependencies\"])for(let De of se.manifest[Z].values())P.tryWorkspaceByDescriptor(De)===null&&(De.range.startsWith(\"link:\")||ye.set(De.descriptorHash,De));let Ae=je.sortMap(ye.values(),se=>G.stringifyDescriptor(se));return p.createElement(c,{flexDirection:\"column\"},p.createElement(ue,null),p.createElement(le,null),p.createElement(pe,{dependencies:Ae}))},{},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof Ce>\"u\")return 1;let g=!1;for(let we of P.workspaces)for(let ye of[\"dependencies\",\"devDependencies\"]){let Ae=we.manifest[ye];for(let se of Ae.values()){let Z=Ce.get(se.descriptorHash);typeof Z<\"u\"&&Z!==null&&(Ae.set(se.identHash,G.makeDescriptor(se,Z)),g=!0)}}return g?await P.installWithNewReport({quiet:this.context.quiet,stdout:this.context.stdout},{cache:R}):0}};var Sgt={commands:[Iw,Cw]},Dgt=Sgt;var zW={};Vt(zW,{default:()=>kgt});Ge();var BD=\"jsr:\";Ge();Ge();function ww(t){let e=t.range.slice(4);if(Fr.validRange(e))return G.makeDescriptor(t,`npm:${G.stringifyIdent(G.wrapIdentIntoScope(t,\"jsr\"))}@${e}`);let r=G.tryParseDescriptor(e,!0);if(r!==null)return G.makeDescriptor(t,`npm:${G.stringifyIdent(G.wrapIdentIntoScope(r,\"jsr\"))}@${r.range}`);throw new Error(`Invalid range: ${t.range}`)}function Bw(t){return G.makeLocator(G.wrapIdentIntoScope(t,\"jsr\"),`npm:${t.reference.slice(4)}`)}function KW(t){return G.makeLocator(G.unwrapIdentFromScope(t,\"jsr\"),`jsr:${t.reference.slice(4)}`)}var eN=class{supports(e,r){return e.reference.startsWith(BD)}getLocalPath(e,r){let s=Bw(e);return r.fetcher.getLocalPath(s,r)}fetch(e,r){let s=Bw(e);return r.fetcher.fetch(s,r)}};var tN=class{supportsDescriptor(e,r){return!!e.range.startsWith(BD)}supportsLocator(e,r){return!!e.reference.startsWith(BD)}shouldPersistResolution(e,r){let s=Bw(e);return r.resolver.shouldPersistResolution(s,r)}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{inner:ww(e)}}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(ww(e));return(await s.resolver.getCandidates(a,r,s)).map(c=>KW(c))}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(ww(e));return a.resolver.getSatisfying(n,r,s,a)}async resolve(e,r){let s=Bw(e),a=await r.resolver.resolve(s,r);return{...a,...KW(a)}}};var bgt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"];function Pgt(t,e){for(let r of bgt)for(let s of t.manifest.getForScope(r).values()){if(!s.range.startsWith(\"jsr:\"))continue;let a=ww(s),n=r===\"dependencies\"?G.makeDescriptor(s,\"unknown\"):null,c=n!==null&&t.manifest.ensureDependencyMeta(n).optional?\"optionalDependencies\":r;e[c][G.stringifyIdent(s)]=a.range}}var xgt={hooks:{beforeWorkspacePacking:Pgt},resolvers:[tN],fetchers:[eN]},kgt=xgt;var XW={};Vt(XW,{LinkFetcher:()=>vD,LinkResolver:()=>SD,PortalFetcher:()=>DD,PortalResolver:()=>bD,default:()=>Tgt});Ge();Dt();var rh=\"portal:\",nh=\"link:\";var vD=class{supports(e,r){return!!e.reference.startsWith(nh)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:nh});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:nh}),n=J.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0,localPath:p}:{packageFs:new Hf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,discardFromLookup:!0}}};Ge();Dt();var SD=class{supportsDescriptor(e,r){return!!e.range.startsWith(nh)}supportsLocator(e,r){return!!e.reference.startsWith(nh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(nh.length);return[G.makeLocator(e,`${nh}${fe.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){return{...e,version:\"0.0.0\",languageName:r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:null,dependencies:new Map,peerDependencies:new Map,dependenciesMeta:new Map,peerDependenciesMeta:new Map,bin:new Map}}};Ge();Dt();var DD=class{supports(e,r){return!!e.reference.startsWith(rh)}getLocalPath(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:rh});if(J.isAbsolute(a))return a;let n=r.fetcher.getLocalPath(s,r);return n===null?null:J.resolve(n,a)}async fetch(e,r){let{parentLocator:s,path:a}=G.parseFileStyleRange(e.reference,{protocol:rh}),n=J.isAbsolute(a)?{packageFs:new Sn(vt.root),prefixPath:vt.dot,localPath:vt.root}:await r.fetcher.fetch(s,r),c=n.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,n.localPath),localPath:vt.root}:n;n!==c&&n.releaseFs&&n.releaseFs();let f=c.packageFs,p=J.resolve(c.localPath??c.packageFs.getRealPath(),c.prefixPath,a);return n.localPath?{packageFs:new Sn(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot,localPath:p}:{packageFs:new Hf(p,{baseFs:f}),releaseFs:c.releaseFs,prefixPath:vt.dot}}};Ge();Ge();Dt();var bD=class{supportsDescriptor(e,r){return!!e.range.startsWith(rh)}supportsLocator(e,r){return!!e.reference.startsWith(rh)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){return G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(rh.length);return[G.makeLocator(e,`${rh}${fe.toPortablePath(a)}`)]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){if(!r.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let s=await r.fetchOptions.fetcher.fetch(e,r.fetchOptions),a=await je.releaseAfterUseAsync(async()=>await Ut.find(s.prefixPath,{baseFs:s.packageFs}),s.releaseFs);return{...e,version:a.version||\"0.0.0\",languageName:a.languageName||r.project.configuration.get(\"defaultLanguageName\"),linkType:\"SOFT\",conditions:a.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(a.dependencies),peerDependencies:a.peerDependencies,dependenciesMeta:a.dependenciesMeta,peerDependenciesMeta:a.peerDependenciesMeta,bin:a.bin}}};var Qgt={fetchers:[vD,DD],resolvers:[SD,bD]},Tgt=Qgt;var FY={};Vt(FY,{NodeModulesLinker:()=>jD,NodeModulesMode:()=>kY,PnpLooseLinker:()=>GD,default:()=>Kdt});Dt();Ge();Dt();Dt();var $W=(t,e)=>`${t}@${e}`,H2e=(t,e)=>{let r=e.indexOf(\"#\"),s=r>=0?e.substring(r+1):e;return $W(t,s)};var G2e=(t,e={})=>{let r=e.debugLevel||Number(process.env.NM_DEBUG_LEVEL||-1),s=e.check||r>=9,a=e.hoistingLimits||new Map,n={check:s,debugLevel:r,hoistingLimits:a,fastLookupPossible:!0},c;n.debugLevel>=0&&(c=Date.now());let f=Ugt(t,n),p=!1,h=0;do{let E=eY(f,[f],new Set([f.locator]),new Map,n);p=E.anotherRoundNeeded||E.isGraphChanged,n.fastLookupPossible=!1,h++}while(p);if(n.debugLevel>=0&&console.log(`hoist time: ${Date.now()-c}ms, rounds: ${h}`),n.debugLevel>=1){let E=PD(f);if(eY(f,[f],new Set([f.locator]),new Map,n).isGraphChanged)throw new Error(`The hoisting result is not terminal, prev tree:\n${E}, next tree:\n${PD(f)}`);let S=q2e(f);if(S)throw new Error(`${S}, after hoisting finished:\n${PD(f)}`)}return n.debugLevel>=2&&console.log(PD(f)),_gt(f)},Rgt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=n=>{if(!s.has(n)){s.add(n);for(let c of n.hoistedDependencies.values())r.set(c.name,c);for(let c of n.dependencies.values())n.peerNames.has(c.name)||a(c)}};return a(e),r},Fgt=t=>{let e=t[t.length-1],r=new Map,s=new Set,a=new Set,n=(c,f)=>{if(s.has(c))return;s.add(c);for(let h of c.hoistedDependencies.values())if(!f.has(h.name)){let E;for(let C of t)E=C.dependencies.get(h.name),E&&r.set(E.name,E)}let p=new Set;for(let h of c.dependencies.values())p.add(h.name);for(let h of c.dependencies.values())c.peerNames.has(h.name)||n(h,p)};return n(e,a),r},j2e=(t,e)=>{if(e.decoupled)return e;let{name:r,references:s,ident:a,locator:n,dependencies:c,originalDependencies:f,hoistedDependencies:p,peerNames:h,reasons:E,isHoistBorder:C,hoistPriority:S,dependencyKind:P,hoistedFrom:I,hoistedTo:R}=e,N={name:r,references:new Set(s),ident:a,locator:n,dependencies:new Map(c),originalDependencies:new Map(f),hoistedDependencies:new Map(p),peerNames:new Set(h),reasons:new Map(E),decoupled:!0,isHoistBorder:C,hoistPriority:S,dependencyKind:P,hoistedFrom:new Map(I),hoistedTo:new Map(R)},U=N.dependencies.get(r);return U&&U.ident==N.ident&&N.dependencies.set(r,N),t.dependencies.set(N.name,N),N},Ngt=(t,e)=>{let r=new Map([[t.name,[t.ident]]]);for(let a of t.dependencies.values())t.peerNames.has(a.name)||r.set(a.name,[a.ident]);let s=Array.from(e.keys());s.sort((a,n)=>{let c=e.get(a),f=e.get(n);if(f.hoistPriority!==c.hoistPriority)return f.hoistPriority-c.hoistPriority;{let p=c.dependents.size+c.peerDependents.size;return f.dependents.size+f.peerDependents.size-p}});for(let a of s){let n=a.substring(0,a.indexOf(\"@\",1)),c=a.substring(n.length+1);if(!t.peerNames.has(n)){let f=r.get(n);f||(f=[],r.set(n,f)),f.indexOf(c)<0&&f.push(c)}}return r},ZW=t=>{let e=new Set,r=(s,a=new Set)=>{if(!a.has(s)){a.add(s);for(let n of s.peerNames)if(!t.peerNames.has(n)){let c=t.dependencies.get(n);c&&!e.has(c)&&r(c,a)}e.add(s)}};for(let s of t.dependencies.values())t.peerNames.has(s.name)||r(s);return e},eY=(t,e,r,s,a,n=new Set)=>{let c=e[e.length-1];if(n.has(c))return{anotherRoundNeeded:!1,isGraphChanged:!1};n.add(c);let f=Hgt(c),p=Ngt(c,f),h=t==c?new Map:a.fastLookupPossible?Rgt(e):Fgt(e),E,C=!1,S=!1,P=new Map(Array.from(p.entries()).map(([R,N])=>[R,N[0]])),I=new Map;do{let R=Mgt(t,e,r,h,P,p,s,I,a);R.isGraphChanged&&(S=!0),R.anotherRoundNeeded&&(C=!0),E=!1;for(let[N,U]of p)U.length>1&&!c.dependencies.has(N)&&(P.delete(N),U.shift(),P.set(N,U[0]),E=!0)}while(E);for(let R of c.dependencies.values())if(!c.peerNames.has(R.name)&&!r.has(R.locator)){r.add(R.locator);let N=eY(t,[...e,R],r,I,a);N.isGraphChanged&&(S=!0),N.anotherRoundNeeded&&(C=!0),r.delete(R.locator)}return{anotherRoundNeeded:C,isGraphChanged:S}},Ogt=t=>{for(let[e,r]of t.dependencies)if(!t.peerNames.has(e)&&r.ident!==t.ident)return!0;return!1},Lgt=(t,e,r,s,a,n,c,f,{outputReason:p,fastLookupPossible:h})=>{let E,C=null,S=new Set;p&&(E=`${Array.from(e).map(N=>yo(N)).join(\"\\u2192\")}`);let P=r[r.length-1],R=!(s.ident===P.ident);if(p&&!R&&(C=\"- self-reference\"),R&&(R=s.dependencyKind!==1,p&&!R&&(C=\"- workspace\")),R&&s.dependencyKind===2&&(R=!Ogt(s),p&&!R&&(C=\"- external soft link with unhoisted dependencies\")),R&&(R=!t.peerNames.has(s.name),p&&!R&&(C=`- cannot shadow peer: ${yo(t.originalDependencies.get(s.name).locator)} at ${E}`)),R){let N=!1,U=a.get(s.name);if(N=!U||U.ident===s.ident,p&&!N&&(C=`- filled by: ${yo(U.locator)} at ${E}`),N)for(let W=r.length-1;W>=1;W--){let ie=r[W].dependencies.get(s.name);if(ie&&ie.ident!==s.ident){N=!1;let ue=f.get(P);ue||(ue=new Set,f.set(P,ue)),ue.add(s.name),p&&(C=`- filled by ${yo(ie.locator)} at ${r.slice(0,W).map(le=>yo(le.locator)).join(\"\\u2192\")}`);break}}R=N}if(R&&(R=n.get(s.name)===s.ident,p&&!R&&(C=`- filled by: ${yo(c.get(s.name)[0])} at ${E}`)),R){let N=!0,U=new Set(s.peerNames);for(let W=r.length-1;W>=1;W--){let ee=r[W];for(let ie of U){if(ee.peerNames.has(ie)&&ee.originalDependencies.has(ie))continue;let ue=ee.dependencies.get(ie);ue&&t.dependencies.get(ie)!==ue&&(W===r.length-1?S.add(ue):(S=null,N=!1,p&&(C=`- peer dependency ${yo(ue.locator)} from parent ${yo(ee.locator)} was not hoisted to ${E}`))),U.delete(ie)}if(!N)break}R=N}if(R&&!h)for(let N of s.hoistedDependencies.values()){let U=a.get(N.name)||t.dependencies.get(N.name);if(!U||N.ident!==U.ident){R=!1,p&&(C=`- previously hoisted dependency mismatch, needed: ${yo(N.locator)}, available: ${yo(U?.locator)}`);break}}return S!==null&&S.size>0?{isHoistable:2,dependsOn:S,reason:C}:{isHoistable:R?0:1,reason:C}},rN=t=>`${t.name}@${t.locator}`,Mgt=(t,e,r,s,a,n,c,f,p)=>{let h=e[e.length-1],E=new Set,C=!1,S=!1,P=(U,W,ee,ie,ue)=>{if(E.has(ie))return;let le=[...W,rN(ie)],me=[...ee,rN(ie)],pe=new Map,Be=new Map;for(let Ae of ZW(ie)){let se=Lgt(h,r,[h,...U,ie],Ae,s,a,n,f,{outputReason:p.debugLevel>=2,fastLookupPossible:p.fastLookupPossible});if(Be.set(Ae,se),se.isHoistable===2)for(let Z of se.dependsOn){let De=pe.get(Z.name)||new Set;De.add(Ae.name),pe.set(Z.name,De)}}let Ce=new Set,g=(Ae,se,Z)=>{if(!Ce.has(Ae)){Ce.add(Ae),Be.set(Ae,{isHoistable:1,reason:Z});for(let De of pe.get(Ae.name)||[])g(ie.dependencies.get(De),se,p.debugLevel>=2?`- peer dependency ${yo(Ae.locator)} from parent ${yo(ie.locator)} was not hoisted`:\"\")}};for(let[Ae,se]of Be)se.isHoistable===1&&g(Ae,se,se.reason);let we=!1;for(let Ae of Be.keys())if(!Ce.has(Ae)){S=!0;let se=c.get(ie);se&&se.has(Ae.name)&&(C=!0),we=!0,ie.dependencies.delete(Ae.name),ie.hoistedDependencies.set(Ae.name,Ae),ie.reasons.delete(Ae.name);let Z=h.dependencies.get(Ae.name);if(p.debugLevel>=2){let De=Array.from(W).concat([ie.locator]).map(mt=>yo(mt)).join(\"\\u2192\"),Re=h.hoistedFrom.get(Ae.name);Re||(Re=[],h.hoistedFrom.set(Ae.name,Re)),Re.push(De),ie.hoistedTo.set(Ae.name,Array.from(e).map(mt=>yo(mt.locator)).join(\"\\u2192\"))}if(!Z)h.ident!==Ae.ident&&(h.dependencies.set(Ae.name,Ae),ue.add(Ae));else for(let De of Ae.references)Z.references.add(De)}if(ie.dependencyKind===2&&we&&(C=!0),p.check){let Ae=q2e(t);if(Ae)throw new Error(`${Ae}, after hoisting dependencies of ${[h,...U,ie].map(se=>yo(se.locator)).join(\"\\u2192\")}:\n${PD(t)}`)}let ye=ZW(ie);for(let Ae of ye)if(Ce.has(Ae)){let se=Be.get(Ae);if((a.get(Ae.name)===Ae.ident||!ie.reasons.has(Ae.name))&&se.isHoistable!==0&&ie.reasons.set(Ae.name,se.reason),!Ae.isHoistBorder&&me.indexOf(rN(Ae))<0){E.add(ie);let De=j2e(ie,Ae);P([...U,ie],le,me,De,R),E.delete(ie)}}},I,R=new Set(ZW(h)),N=Array.from(e).map(U=>rN(U));do{I=R,R=new Set;for(let U of I){if(U.locator===h.locator||U.isHoistBorder)continue;let W=j2e(h,U);P([],Array.from(r),N,W,R)}}while(R.size>0);return{anotherRoundNeeded:C,isGraphChanged:S}},q2e=t=>{let e=[],r=new Set,s=new Set,a=(n,c,f)=>{if(r.has(n)||(r.add(n),s.has(n)))return;let p=new Map(c);for(let h of n.dependencies.values())n.peerNames.has(h.name)||p.set(h.name,h);for(let h of n.originalDependencies.values()){let E=p.get(h.name),C=()=>`${Array.from(s).concat([n]).map(S=>yo(S.locator)).join(\"\\u2192\")}`;if(n.peerNames.has(h.name)){let S=c.get(h.name);(S!==E||!S||S.ident!==h.ident)&&e.push(`${C()} - broken peer promise: expected ${h.ident} but found ${S&&S.ident}`)}else{let S=f.hoistedFrom.get(n.name),P=n.hoistedTo.get(h.name),I=`${S?` hoisted from ${S.join(\", \")}`:\"\"}`,R=`${P?` hoisted to ${P}`:\"\"}`,N=`${C()}${I}`;E?E.ident!==h.ident&&e.push(`${N} - broken require promise for ${h.name}${R}: expected ${h.ident}, but found: ${E.ident}`):e.push(`${N} - broken require promise: no required dependency ${h.name}${R} found`)}}s.add(n);for(let h of n.dependencies.values())n.peerNames.has(h.name)||a(h,p,n);s.delete(n)};return a(t,t.dependencies,t),e.join(`\n`)},Ugt=(t,e)=>{let{identName:r,name:s,reference:a,peerNames:n}=t,c={name:s,references:new Set([a]),locator:$W(r,a),ident:H2e(r,a),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(n),reasons:new Map,decoupled:!0,isHoistBorder:!0,hoistPriority:0,dependencyKind:1,hoistedFrom:new Map,hoistedTo:new Map},f=new Map([[t,c]]),p=(h,E)=>{let C=f.get(h),S=!!C;if(!C){let{name:P,identName:I,reference:R,peerNames:N,hoistPriority:U,dependencyKind:W}=h,ee=e.hoistingLimits.get(E.locator);C={name:P,references:new Set([R]),locator:$W(I,R),ident:H2e(I,R),dependencies:new Map,originalDependencies:new Map,hoistedDependencies:new Map,peerNames:new Set(N),reasons:new Map,decoupled:!0,isHoistBorder:ee?ee.has(P):!1,hoistPriority:U||0,dependencyKind:W||0,hoistedFrom:new Map,hoistedTo:new Map},f.set(h,C)}if(E.dependencies.set(h.name,C),E.originalDependencies.set(h.name,C),S){let P=new Set,I=R=>{if(!P.has(R)){P.add(R),R.decoupled=!1;for(let N of R.dependencies.values())R.peerNames.has(N.name)||I(N)}};I(C)}else for(let P of h.dependencies)p(P,C)};for(let h of t.dependencies)p(h,c);return c},tY=t=>t.substring(0,t.indexOf(\"@\",1)),_gt=t=>{let e={name:t.name,identName:tY(t.locator),references:new Set(t.references),dependencies:new Set},r=new Set([t]),s=(a,n,c)=>{let f=r.has(a),p;if(n===a)p=c;else{let{name:h,references:E,locator:C}=a;p={name:h,identName:tY(C),references:E,dependencies:new Set}}if(c.dependencies.add(p),!f){r.add(a);for(let h of a.dependencies.values())a.peerNames.has(h.name)||s(h,a,p);r.delete(a)}};for(let a of t.dependencies.values())s(a,t,e);return e},Hgt=t=>{let e=new Map,r=new Set([t]),s=c=>`${c.name}@${c.ident}`,a=c=>{let f=s(c),p=e.get(f);return p||(p={dependents:new Set,peerDependents:new Set,hoistPriority:0},e.set(f,p)),p},n=(c,f)=>{let p=!!r.has(f);if(a(f).dependents.add(c.ident),!p){r.add(f);for(let E of f.dependencies.values()){let C=a(E);C.hoistPriority=Math.max(C.hoistPriority,E.hoistPriority),f.peerNames.has(E.name)?C.peerDependents.add(f.ident):n(f,E)}}};for(let c of t.dependencies.values())t.peerNames.has(c.name)||n(t,c);return e},yo=t=>{if(!t)return\"none\";let e=t.indexOf(\"@\",1),r=t.substring(0,e);r.endsWith(\"$wsroot$\")&&(r=`wh:${r.replace(\"$wsroot$\",\"\")}`);let s=t.substring(e+1);if(s===\"workspace:.\")return\".\";if(s){let a=(s.indexOf(\"#\")>0?s.split(\"#\")[1]:s).replace(\"npm:\",\"\");return s.startsWith(\"virtual\")&&(r=`v:${r}`),a.startsWith(\"workspace\")&&(r=`w:${r}`,a=\"\"),`${r}${a?`@${a}`:\"\"}`}else return`${r}`};var PD=t=>{let e=0,r=(a,n,c=\"\")=>{if(e>5e4||n.has(a))return\"\";e++;let f=Array.from(a.dependencies.values()).sort((h,E)=>h.name===E.name?0:h.name>E.name?1:-1),p=\"\";n.add(a);for(let h=0;h<f.length;h++){let E=f[h];if(!a.peerNames.has(E.name)&&E!==a){let C=a.reasons.get(E.name),S=tY(E.locator);p+=`${c}${h<f.length-1?\"\\u251C\\u2500\":\"\\u2514\\u2500\"}${(n.has(E)?\">\":\"\")+(S!==E.name?`a:${E.name}:`:\"\")+yo(E.locator)+(C?` ${C}`:\"\")}\n`,p+=r(E,n,`${c}${h<f.length-1?\"\\u2502 \":\"  \"}`)}}return n.delete(a),p};return r(t,new Set)+(e>5e4?`\nTree is too large, part of the tree has been dunped\n`:\"\")};var xD=(s=>(s.WORKSPACES=\"workspaces\",s.DEPENDENCIES=\"dependencies\",s.NONE=\"none\",s))(xD||{}),W2e=\"node_modules\",rg=\"$wsroot$\";var kD=(t,e)=>{let{packageTree:r,hoistingLimits:s,errors:a,preserveSymlinksRequired:n}=Ggt(t,e),c=null;if(a.length===0){let f=G2e(r,{hoistingLimits:s});c=Wgt(t,f,e)}return{tree:c,errors:a,preserveSymlinksRequired:n}},pA=t=>`${t.name}@${t.reference}`,nY=t=>{let e=new Map;for(let[r,s]of t.entries())if(!s.dirList){let a=e.get(s.locator);a||(a={target:s.target,linkType:s.linkType,locations:[],aliases:s.aliases},e.set(s.locator,a)),a.locations.push(r)}for(let r of e.values())r.locations=r.locations.sort((s,a)=>{let n=s.split(J.delimiter).length,c=a.split(J.delimiter).length;return a===s?0:n!==c?c-n:a>s?1:-1});return e},Y2e=(t,e)=>{let r=G.isVirtualLocator(t)?G.devirtualizeLocator(t):t,s=G.isVirtualLocator(e)?G.devirtualizeLocator(e):e;return G.areLocatorsEqual(r,s)},rY=(t,e,r,s)=>{if(t.linkType!==\"SOFT\")return!1;let a=fe.toPortablePath(r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation);return J.contains(s,a)===null},jgt=t=>{let e=t.getPackageInformation(t.topLevel);if(e===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");if(t.findPackageLocator(e.packageLocation)===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let s=fe.toPortablePath(e.packageLocation.slice(0,-1)),a=new Map,n={children:new Map},c=t.getDependencyTreeRoots(),f=new Map,p=new Set,h=(S,P)=>{let I=pA(S);if(p.has(I))return;p.add(I);let R=t.getPackageInformation(S);if(R){let N=P?pA(P):\"\";if(pA(S)!==N&&R.linkType===\"SOFT\"&&!S.reference.startsWith(\"link:\")&&!rY(R,S,t,s)){let U=V2e(R,S,t);(!f.get(U)||S.reference.startsWith(\"workspace:\"))&&f.set(U,S)}for(let[U,W]of R.packageDependencies)W!==null&&(R.packagePeers.has(U)||h(t.getLocator(U,W),S))}};for(let S of c)h(S,null);let E=s.split(J.sep);for(let S of f.values()){let P=t.getPackageInformation(S),R=fe.toPortablePath(P.packageLocation.slice(0,-1)).split(J.sep).slice(E.length),N=n;for(let U of R){let W=N.children.get(U);W||(W={children:new Map},N.children.set(U,W)),N=W}N.workspaceLocator=S}let C=(S,P)=>{if(S.workspaceLocator){let I=pA(P),R=a.get(I);R||(R=new Set,a.set(I,R)),R.add(S.workspaceLocator)}for(let I of S.children.values())C(I,S.workspaceLocator||P)};for(let S of n.children.values())C(S,n.workspaceLocator);return a},Ggt=(t,e)=>{let r=[],s=!1,a=new Map,n=jgt(t),c=t.getPackageInformation(t.topLevel);if(c===null)throw new Error(\"Assertion failed: Expected the top-level package to have been registered\");let f=t.findPackageLocator(c.packageLocation);if(f===null)throw new Error(\"Assertion failed: Expected the top-level package to have a physical locator\");let p=fe.toPortablePath(c.packageLocation.slice(0,-1)),h={name:f.name,identName:f.name,reference:f.reference,peerNames:c.packagePeers,dependencies:new Set,dependencyKind:1},E=new Map,C=(P,I)=>`${pA(I)}:${P}`,S=(P,I,R,N,U,W,ee,ie)=>{let ue=C(P,R),le=E.get(ue),me=!!le;!me&&R.name===f.name&&R.reference===f.reference&&(le=h,E.set(ue,h));let pe=rY(I,R,t,p);if(!le){let Ae=0;pe?Ae=2:I.linkType===\"SOFT\"&&R.name.endsWith(rg)&&(Ae=1),le={name:P,identName:R.name,reference:R.reference,dependencies:new Set,peerNames:Ae===1?new Set:I.packagePeers,dependencyKind:Ae},E.set(ue,le)}let Be;if(pe?Be=2:U.linkType===\"SOFT\"?Be=1:Be=0,le.hoistPriority=Math.max(le.hoistPriority||0,Be),ie&&!pe){let Ae=pA({name:N.identName,reference:N.reference}),se=a.get(Ae)||new Set;a.set(Ae,se),se.add(le.name)}let Ce=new Map(I.packageDependencies);if(e.project){let Ae=e.project.workspacesByCwd.get(fe.toPortablePath(I.packageLocation.slice(0,-1)));if(Ae){let se=new Set([...Array.from(Ae.manifest.peerDependencies.values(),Z=>G.stringifyIdent(Z)),...Array.from(Ae.manifest.peerDependenciesMeta.keys())]);for(let Z of se)Ce.has(Z)||(Ce.set(Z,W.get(Z)||null),le.peerNames.add(Z))}}let g=pA({name:R.name.replace(rg,\"\"),reference:R.reference}),we=n.get(g);if(we)for(let Ae of we)Ce.set(`${Ae.name}${rg}`,Ae.reference);(I!==U||I.linkType!==\"SOFT\"||!pe&&(!e.selfReferencesByCwd||e.selfReferencesByCwd.get(ee)))&&N.dependencies.add(le);let ye=R!==f&&I.linkType===\"SOFT\"&&!R.name.endsWith(rg)&&!pe;if(!me&&!ye){let Ae=new Map;for(let[se,Z]of Ce)if(Z!==null){let De=t.getLocator(se,Z),Re=t.getLocator(se.replace(rg,\"\"),Z),mt=t.getPackageInformation(Re);if(mt===null)throw new Error(\"Assertion failed: Expected the package to have been registered\");let j=rY(mt,De,t,p);if(e.validateExternalSoftLinks&&e.project&&j){mt.packageDependencies.size>0&&(s=!0);for(let[Ve,ke]of mt.packageDependencies)if(ke!==null){let it=G.parseLocator(Array.isArray(ke)?`${ke[0]}@${ke[1]}`:`${Ve}@${ke}`);if(pA(it)!==pA(De)){let Ue=Ce.get(Ve);if(Ue){let x=G.parseLocator(Array.isArray(Ue)?`${Ue[0]}@${Ue[1]}`:`${Ve}@${Ue}`);Y2e(x,it)||r.push({messageName:71,text:`Cannot link ${G.prettyIdent(e.project.configuration,G.parseIdent(De.name))} into ${G.prettyLocator(e.project.configuration,G.parseLocator(`${R.name}@${R.reference}`))} dependency ${G.prettyLocator(e.project.configuration,it)} conflicts with parent dependency ${G.prettyLocator(e.project.configuration,x)}`})}else{let x=Ae.get(Ve);if(x){let w=x.target,b=G.parseLocator(Array.isArray(w)?`${w[0]}@${w[1]}`:`${Ve}@${w}`);Y2e(b,it)||r.push({messageName:71,text:`Cannot link ${G.prettyIdent(e.project.configuration,G.parseIdent(De.name))} into ${G.prettyLocator(e.project.configuration,G.parseLocator(`${R.name}@${R.reference}`))} dependency ${G.prettyLocator(e.project.configuration,it)} conflicts with dependency ${G.prettyLocator(e.project.configuration,b)} from sibling portal ${G.prettyIdent(e.project.configuration,G.parseIdent(x.portal.name))}`})}else Ae.set(Ve,{target:it.reference,portal:De})}}}}let rt=e.hoistingLimitsByCwd?.get(ee),Fe=j?ee:J.relative(p,fe.toPortablePath(mt.packageLocation))||vt.dot,Ne=e.hoistingLimitsByCwd?.get(Fe);S(se,mt,De,le,I,Ce,Fe,rt===\"dependencies\"||Ne===\"dependencies\"||Ne===\"workspaces\")}}};return S(f.name,c,f,h,c,c.packageDependencies,vt.dot,!1),{packageTree:h,hoistingLimits:a,errors:r,preserveSymlinksRequired:s}};function V2e(t,e,r){let s=r.resolveVirtual&&e.reference&&e.reference.startsWith(\"virtual:\")?r.resolveVirtual(t.packageLocation):t.packageLocation;return fe.toPortablePath(s||t.packageLocation)}function qgt(t,e,r){let s=e.getLocator(t.name.replace(rg,\"\"),t.reference),a=e.getPackageInformation(s);if(a===null)throw new Error(\"Assertion failed: Expected the package to be registered\");return r.pnpifyFs?{linkType:\"SOFT\",target:fe.toPortablePath(a.packageLocation)}:{linkType:a.linkType,target:V2e(a,t,e)}}var Wgt=(t,e,r)=>{let s=new Map,a=(E,C,S)=>{let{linkType:P,target:I}=qgt(E,t,r);return{locator:pA(E),nodePath:C,target:I,linkType:P,aliases:S}},n=E=>{let[C,S]=E.split(\"/\");return S?{scope:C,name:S}:{scope:null,name:C}},c=new Set,f=(E,C,S)=>{if(c.has(E))return;c.add(E);let P=Array.from(E.references).sort().join(\"#\");for(let I of E.dependencies){let R=Array.from(I.references).sort().join(\"#\");if(I.identName===E.identName.replace(rg,\"\")&&R===P)continue;let N=Array.from(I.references).sort(),U={name:I.identName,reference:N[0]},{name:W,scope:ee}=n(I.name),ie=ee?[ee,W]:[W],ue=J.join(C,W2e),le=J.join(ue,...ie),me=`${S}/${U.name}`,pe=a(U,S,N.slice(1)),Be=!1;if(pe.linkType===\"SOFT\"&&r.project){let Ce=r.project.workspacesByCwd.get(pe.target.slice(0,-1));Be=!!(Ce&&!Ce.manifest.name)}if(!I.name.endsWith(rg)&&!Be){let Ce=s.get(le);if(Ce){if(Ce.dirList)throw new Error(`Assertion failed: ${le} cannot merge dir node with leaf node`);{let ye=G.parseLocator(Ce.locator),Ae=G.parseLocator(pe.locator);if(Ce.linkType!==pe.linkType)throw new Error(`Assertion failed: ${le} cannot merge nodes with different link types ${Ce.nodePath}/${G.stringifyLocator(ye)} and ${S}/${G.stringifyLocator(Ae)}`);if(ye.identHash!==Ae.identHash)throw new Error(`Assertion failed: ${le} cannot merge nodes with different idents ${Ce.nodePath}/${G.stringifyLocator(ye)} and ${S}/s${G.stringifyLocator(Ae)}`);pe.aliases=[...pe.aliases,...Ce.aliases,G.parseLocator(Ce.locator).reference]}}s.set(le,pe);let g=le.split(\"/\"),we=g.indexOf(W2e);for(let ye=g.length-1;we>=0&&ye>we;ye--){let Ae=fe.toPortablePath(g.slice(0,ye).join(J.sep)),se=g[ye],Z=s.get(Ae);if(!Z)s.set(Ae,{dirList:new Set([se])});else if(Z.dirList){if(Z.dirList.has(se))break;Z.dirList.add(se)}}}f(I,pe.linkType===\"SOFT\"?pe.target:le,me)}},p=a({name:e.name,reference:Array.from(e.references)[0]},\"\",[]),h=p.target;return s.set(h,p),f(e,h,\"\"),s};Ge();Ge();Dt();Dt();eA();wc();var wY={};Vt(wY,{PnpInstaller:()=>Gm,PnpLinker:()=>sg,UnplugCommand:()=>Sw,default:()=>Cdt,getPnpPath:()=>og,jsInstallUtils:()=>gA,pnpUtils:()=>HD,quotePathIfNeeded:()=>QBe});Dt();var kBe=Ie(\"url\");Ge();Ge();Dt();Dt();var J2e={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 Ygt(t,e,r){let s=\"\";s+=\"[\";for(let a=0,n=t.length;a<n;++a)s+=nN(String(a),t[a],e,r).replace(/^ +/g,\"\"),a+1<n&&(s+=\", \");return s+=\"]\",s}function Vgt(t,e,r){let s=`${r}  `,a=\"\";a+=r,a+=`[\n`;for(let n=0,c=t.length;n<c;++n)a+=s+nN(String(n),t[n],e,s).replace(/^ +/,\"\"),n+1<c&&(a+=\",\"),a+=`\n`;return a+=r,a+=\"]\",a}function Jgt(t,e,r){let s=Object.keys(t),a=\"\";a+=\"{\";for(let n=0,c=s.length,f=0;n<c;++n){let p=s[n],h=t[p];typeof h>\"u\"||(f!==0&&(a+=\", \"),a+=JSON.stringify(p),a+=\": \",a+=nN(p,h,e,r).replace(/^ +/g,\"\"),f+=1)}return a+=\"}\",a}function Kgt(t,e,r){let s=Object.keys(t),a=`${r}  `,n=\"\";n+=r,n+=`{\n`;let c=0;for(let f=0,p=s.length;f<p;++f){let h=s[f],E=t[h];typeof E>\"u\"||(c!==0&&(n+=\",\",n+=`\n`),n+=a,n+=JSON.stringify(h),n+=\": \",n+=nN(h,E,e,a).replace(/^ +/g,\"\"),c+=1)}return c!==0&&(n+=`\n`),n+=r,n+=\"}\",n}function nN(t,e,r,s){let{next:a}=J2e[r],n=a[t]||a[\"*\"];return K2e(e,n,s)}function K2e(t,e,r){let{collapsed:s}=J2e[e];return Array.isArray(t)?s?Ygt(t,e,r):Vgt(t,e,r):typeof t==\"object\"&&t!==null?s?Jgt(t,e,r):Kgt(t,e,r):JSON.stringify(t)}function z2e(t){return K2e(t,\"TOP_LEVEL\",\"\")}function QD(t,e){let r=Array.from(t);Array.isArray(e)||(e=[e]);let s=[];for(let n of e)s.push(r.map(c=>n(c)));let a=r.map((n,c)=>c);return a.sort((n,c)=>{for(let f of s){let p=f[n]<f[c]?-1:f[n]>f[c]?1:0;if(p!==0)return p}return 0}),a.map(n=>r[n])}function zgt(t){let e=new Map,r=QD(t.fallbackExclusionList||[],[({name:s,reference:a})=>s,({name:s,reference:a})=>a]);for(let{name:s,reference:a}of r){let n=e.get(s);typeof n>\"u\"&&e.set(s,n=new Set),n.add(a)}return Array.from(e).map(([s,a])=>[s,Array.from(a)])}function Xgt(t){return QD(t.fallbackPool||[],([e])=>e)}function Zgt(t){let e=[],r=t.dependencyTreeRoots.find(s=>t.packageRegistry.get(s.name)?.get(s.reference)?.packageLocation===\"./\");for(let[s,a]of QD(t.packageRegistry,([n])=>n===null?\"0\":`1${n}`)){if(s===null)continue;let n=[];e.push([s,n]);for(let[c,{packageLocation:f,packageDependencies:p,packagePeers:h,linkType:E,discardFromLookup:C}]of QD(a,([S])=>S===null?\"0\":`1${S}`)){if(c===null)continue;let S=[];s!==null&&c!==null&&!p.has(s)&&S.push([s,c]);for(let[U,W]of p)S.push([U,W]);let P=QD(S,([U])=>U),I=h&&h.size>0?Array.from(h):void 0,N={packageLocation:f,packageDependencies:P,packagePeers:I,linkType:E,discardFromLookup:C||void 0};n.push([c,N]),r&&s===r.name&&c===r.reference&&e.unshift([null,[[null,N]]])}}return e}function TD(t){return{__info:[\"This file is automatically generated. Do not touch it, or risk\",\"your modifications being lost.\"],dependencyTreeRoots:t.dependencyTreeRoots,enableTopLevelFallback:t.enableTopLevelFallback||!1,ignorePatternData:t.ignorePattern||null,pnpZipBackend:t.pnpZipBackend,fallbackExclusionList:zgt(t),fallbackPool:Xgt(t),packageRegistryData:Zgt(t)}}var $2e=ut(Z2e());function eBe(t,e){return[t?`${t}\n`:\"\",`/* eslint-disable */\n`,`// @ts-nocheck\n`,`\"use strict\";\n`,`\n`,e,`\n`,(0,$2e.default)()].join(\"\")}function $gt(t){return JSON.stringify(t,null,2)}function edt(t){return`'${t.replace(/\\\\/g,\"\\\\\\\\\").replace(/'/g,\"\\\\'\").replace(/\\n/g,`\\\\\n`)}'`}function tdt(t){return[`const RAW_RUNTIME_STATE =\n`,`${edt(z2e(t))};\n\n`,`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  return hydrateRuntimeState(JSON.parse(RAW_RUNTIME_STATE), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function rdt(){return[`function $$SETUP_STATE(hydrateRuntimeState, basePath) {\n`,`  const fs = require('fs');\n`,`  const path = require('path');\n`,`  const pnpDataFilepath = path.resolve(__dirname, ${JSON.stringify(Er.pnpData)});\n`,`  return hydrateRuntimeState(JSON.parse(fs.readFileSync(pnpDataFilepath, 'utf8')), {basePath: basePath || __dirname});\n`,`}\n`].join(\"\")}function tBe(t){let e=TD(t),r=tdt(e);return eBe(t.shebang,r)}function rBe(t){let e=TD(t),r=rdt(),s=eBe(t.shebang,r);return{dataFile:$gt(e),loaderFile:s}}Dt();function sY(t,{basePath:e}){let r=fe.toPortablePath(e),s=J.resolve(r),a=t.ignorePatternData!==null?new RegExp(t.ignorePatternData):null,n=new Map,c=new Map(t.packageRegistryData.map(([C,S])=>[C,new Map(S.map(([P,I])=>{if(C===null!=(P===null))throw new Error(\"Assertion failed: The name and reference should be null, or neither should\");let R=I.discardFromLookup??!1,N={name:C,reference:P},U=n.get(I.packageLocation);U?(U.discardFromLookup=U.discardFromLookup&&R,R||(U.locator=N)):n.set(I.packageLocation,{locator:N,discardFromLookup:R});let W=null;return[P,{packageDependencies:new Map(I.packageDependencies),packagePeers:new Set(I.packagePeers),linkType:I.linkType,discardFromLookup:R,get packageLocation(){return W||(W=J.join(s,I.packageLocation))}}]}))])),f=new Map(t.fallbackExclusionList.map(([C,S])=>[C,new Set(S)])),p=new Map(t.fallbackPool),h=t.dependencyTreeRoots,E=t.enableTopLevelFallback;return{basePath:r,dependencyTreeRoots:h,enableTopLevelFallback:E,fallbackExclusionList:f,pnpZipBackend:t.pnpZipBackend,fallbackPool:p,ignorePattern:a,packageLocatorsByLocations:n,packageRegistry:c}}Dt();Dt();var sh=Ie(\"module\"),jm=Ie(\"url\"),gY=Ie(\"util\");var ta=Ie(\"url\");var oBe=ut(Ie(\"assert\"));var oY=Array.isArray,RD=JSON.stringify,FD=Object.getOwnPropertyNames,Hm=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),aY=(t,e)=>RegExp.prototype.exec.call(t,e),lY=(t,...e)=>RegExp.prototype[Symbol.replace].apply(t,e),ng=(t,...e)=>String.prototype.endsWith.apply(t,e),cY=(t,...e)=>String.prototype.includes.apply(t,e),uY=(t,...e)=>String.prototype.lastIndexOf.apply(t,e),ND=(t,...e)=>String.prototype.indexOf.apply(t,e),nBe=(t,...e)=>String.prototype.replace.apply(t,e),ig=(t,...e)=>String.prototype.slice.apply(t,e),hA=(t,...e)=>String.prototype.startsWith.apply(t,e),iBe=Map,sBe=JSON.parse;function OD(t,e,r){return class extends r{constructor(...s){super(e(...s)),this.code=t,this.name=`${r.name} [${t}]`}}}var aBe=OD(\"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),fY=OD(\"ERR_INVALID_MODULE_SPECIFIER\",(t,e,r=void 0)=>`Invalid module \"${t}\" ${e}${r?` imported from ${r}`:\"\"}`,TypeError),lBe=OD(\"ERR_INVALID_PACKAGE_TARGET\",(t,e,r,s=!1,a=void 0)=>{let n=typeof r==\"string\"&&!s&&r.length&&!hA(r,\"./\");return e===\".\"?((0,oBe.default)(s===!1),`Invalid \"exports\" main target ${RD(r)} defined in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`):`Invalid \"${s?\"imports\":\"exports\"}\" target ${RD(r)} defined for '${e}' in the package config ${t}package.json${a?` imported from ${a}`:\"\"}${n?'; targets must start with \"./\"':\"\"}`},Error),LD=OD(\"ERR_INVALID_PACKAGE_CONFIG\",(t,e,r)=>`Invalid package config ${t}${e?` while importing ${e}`:\"\"}${r?`. ${r}`:\"\"}`,Error),cBe=OD(\"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 sN=Ie(\"url\");function uBe(t,e){let r=Object.create(null);for(let s=0;s<e.length;s++){let a=e[s];Hm(t,a)&&(r[a]=t[a])}return r}var iN=new iBe;function ndt(t,e,r,s){let a=iN.get(t);if(a!==void 0)return a;let n=s(t);if(n===void 0){let P={pjsonPath:t,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return iN.set(t,P),P}let c;try{c=sBe(n)}catch(P){throw new LD(t,(r?`\"${e}\" from `:\"\")+(0,sN.fileURLToPath)(r||e),P.message)}let{imports:f,main:p,name:h,type:E}=uBe(c,[\"imports\",\"main\",\"name\",\"type\"]),C=Hm(c,\"exports\")?c.exports:void 0;(typeof f!=\"object\"||f===null)&&(f=void 0),typeof p!=\"string\"&&(p=void 0),typeof h!=\"string\"&&(h=void 0),E!==\"module\"&&E!==\"commonjs\"&&(E=\"none\");let S={pjsonPath:t,exists:!0,main:p,name:h,type:E,exports:C,imports:f};return iN.set(t,S),S}function fBe(t,e){let r=new URL(\"./package.json\",t);for(;;){let n=r.pathname;if(ng(n,\"node_modules/package.json\"))break;let c=ndt((0,sN.fileURLToPath)(r),t,void 0,e);if(c.exists)return c;let f=r;if(r=new URL(\"../package.json\",r),r.pathname===f.pathname)break}let s=(0,sN.fileURLToPath)(r),a={pjsonPath:s,exists:!1,main:void 0,name:void 0,type:\"none\",exports:void 0,imports:void 0};return iN.set(s,a),a}function idt(t,e,r){throw new aBe(t,e&&(0,ta.fileURLToPath)(new URL(\".\",e)),(0,ta.fileURLToPath)(r))}function sdt(t,e,r,s){let a=`request is not a valid subpath for the \"${r?\"imports\":\"exports\"}\" resolution of ${(0,ta.fileURLToPath)(e)}`;throw new fY(t,a,s&&(0,ta.fileURLToPath)(s))}function MD(t,e,r,s,a){throw typeof e==\"object\"&&e!==null?e=RD(e,null,\"\"):e=`${e}`,new lBe((0,ta.fileURLToPath)(new URL(\".\",r)),t,e,s,a&&(0,ta.fileURLToPath)(a))}var ABe=/(^|\\\\|\\/)((\\.|%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,pBe=/\\*/g;function odt(t,e,r,s,a,n,c,f){if(e!==\"\"&&!n&&t[t.length-1]!==\"/\"&&MD(r,t,s,c,a),!hA(t,\"./\")){if(c&&!hA(t,\"../\")&&!hA(t,\"/\")){let C=!1;try{new URL(t),C=!0}catch{}if(!C)return n?lY(pBe,t,()=>e):t+e}MD(r,t,s,c,a)}aY(ABe,ig(t,2))!==null&&MD(r,t,s,c,a);let p=new URL(t,s),h=p.pathname,E=new URL(\".\",s).pathname;if(hA(h,E)||MD(r,t,s,c,a),e===\"\")return p;if(aY(ABe,e)!==null){let C=n?nBe(r,\"*\",()=>e):r+e;sdt(C,s,c,a)}return n?new URL(lY(pBe,p.href,()=>e)):new URL(e,p)}function adt(t){let e=+t;return`${e}`!==t?!1:e>=0&&e<4294967295}function vw(t,e,r,s,a,n,c,f){if(typeof e==\"string\")return odt(e,r,s,t,a,n,c,f);if(oY(e)){if(e.length===0)return null;let p;for(let h=0;h<e.length;h++){let E=e[h],C;try{C=vw(t,E,r,s,a,n,c,f)}catch(S){if(p=S,S.code===\"ERR_INVALID_PACKAGE_TARGET\")continue;throw S}if(C!==void 0){if(C===null){p=null;continue}return C}}if(p==null)return p;throw p}else if(typeof e==\"object\"&&e!==null){let p=FD(e);for(let h=0;h<p.length;h++){let E=p[h];if(adt(E))throw new LD((0,ta.fileURLToPath)(t),a,'\"exports\" cannot contain numeric property keys.')}for(let h=0;h<p.length;h++){let E=p[h];if(E===\"default\"||f.has(E)){let C=e[E],S=vw(t,C,r,s,a,n,c,f);if(S===void 0)continue;return S}}return}else if(e===null)return null;MD(s,e,t,c,a)}function gBe(t,e){let r=ND(t,\"*\"),s=ND(e,\"*\"),a=r===-1?t.length:r+1,n=s===-1?e.length:s+1;return a>n?-1:n>a||r===-1?1:s===-1||t.length>e.length?-1:e.length>t.length?1:0}function ldt(t,e,r){if(typeof t==\"string\"||oY(t))return!0;if(typeof t!=\"object\"||t===null)return!1;let s=FD(t),a=!1,n=0;for(let c=0;c<s.length;c++){let f=s[c],p=f===\"\"||f[0]!==\".\";if(n++===0)a=p;else if(a!==p)throw new LD((0,ta.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 AY(t,e,r){throw new cBe((0,ta.fileURLToPath)(new URL(\".\",e)),t,r&&(0,ta.fileURLToPath)(r))}var hBe=new Set;function cdt(t,e,r){let s=(0,ta.fileURLToPath)(e);hBe.has(s+\"|\"+t)||(hBe.add(s+\"|\"+t),process.emitWarning(`Use of deprecated trailing slash pattern mapping \"${t}\" in the \"exports\" field module resolution of the package at ${s}${r?` imported from ${(0,ta.fileURLToPath)(r)}`:\"\"}. Mapping specifiers ending in \"/\" is no longer supported.`,\"DeprecationWarning\",\"DEP0155\"))}function dBe({packageJSONUrl:t,packageSubpath:e,exports:r,base:s,conditions:a}){if(ldt(r,t,s)&&(r={\".\":r}),Hm(r,e)&&!cY(e,\"*\")&&!ng(e,\"/\")){let p=r[e],h=vw(t,p,\"\",e,s,!1,!1,a);return h==null&&AY(e,t,s),h}let n=\"\",c,f=FD(r);for(let p=0;p<f.length;p++){let h=f[p],E=ND(h,\"*\");if(E!==-1&&hA(e,ig(h,0,E))){ng(e,\"/\")&&cdt(e,t,s);let C=ig(h,E+1);e.length>=h.length&&ng(e,C)&&gBe(n,h)===1&&uY(h,\"*\")===E&&(n=h,c=ig(e,E,e.length-C.length))}}if(n){let p=r[n],h=vw(t,p,c,n,s,!0,!1,a);return h==null&&AY(e,t,s),h}AY(e,t,s)}function mBe({name:t,base:e,conditions:r,readFileSyncFn:s}){if(t===\"#\"||hA(t,\"#/\")||ng(t,\"/\")){let c=\"is not a valid internal imports specifier name\";throw new fY(t,c,(0,ta.fileURLToPath)(e))}let a,n=fBe(e,s);if(n.exists){a=(0,ta.pathToFileURL)(n.pjsonPath);let c=n.imports;if(c)if(Hm(c,t)&&!cY(t,\"*\")){let f=vw(a,c[t],\"\",t,e,!1,!0,r);if(f!=null)return f}else{let f=\"\",p,h=FD(c);for(let E=0;E<h.length;E++){let C=h[E],S=ND(C,\"*\");if(S!==-1&&hA(t,ig(C,0,S))){let P=ig(C,S+1);t.length>=C.length&&ng(t,P)&&gBe(f,C)===1&&uY(C,\"*\")===S&&(f=C,p=ig(t,S,t.length-P.length))}}if(f){let E=c[f],C=vw(a,E,p,f,e,!0,!0,r);if(C!=null)return C}}}idt(t,a,e)}Dt();var udt=new Set([\"BUILTIN_NODE_RESOLUTION_FAILED\",\"MISSING_DEPENDENCY\",\"MISSING_PEER_DEPENDENCY\",\"QUALIFIED_PATH_RESOLUTION_FAILED\",\"UNDECLARED_DEPENDENCY\"]);function gs(t,e,r={},s){s??=udt.has(t)?\"MODULE_NOT_FOUND\":t;let a={configurable:!0,writable:!0,enumerable:!1};return Object.defineProperties(new Error(e),{code:{...a,value:s},pnpCode:{...a,value:t},data:{...a,value:r}})}function lf(t){return fe.normalize(fe.fromPortablePath(t))}var CBe=ut(EBe());function wBe(t){return fdt(),hY[t]}var hY;function fdt(){hY||(hY={\"--conditions\":[],...IBe(Adt()),...IBe(process.execArgv)})}function IBe(t){return(0,CBe.default)({\"--conditions\":[String],\"-C\":\"--conditions\"},{argv:t,permissive:!0})}function Adt(){let t=[],e=pdt(process.env.NODE_OPTIONS||\"\",t);return t.length,e}function pdt(t,e){let r=[],s=!1,a=!0;for(let n=0;n<t.length;++n){let c=t[n];if(c===\"\\\\\"&&s){if(n+1===t.length)return e.push(`invalid value for NODE_OPTIONS (invalid escape)\n`),r;c=t[++n]}else if(c===\" \"&&!s){a=!0;continue}else if(c==='\"'){s=!s;continue}a?(r.push(c),a=!1):r[r.length-1]+=c}return s&&e.push(`invalid value for NODE_OPTIONS (unterminated string)\n`),r}Dt();var[ml,ih]=process.versions.node.split(\".\").map(t=>parseInt(t,10)),BBe=ml>19||ml===19&&ih>=2||ml===18&&ih>=13,UZt=ml===20&&ih<6||ml===19&&ih>=3,_Zt=ml>19||ml===19&&ih>=6,HZt=ml>=21||ml===20&&ih>=10||ml===18&&ih>=19,jZt=ml>=21||ml===20&&ih>=10||ml===18&&ih>=20,GZt=ml>=22;function vBe(t){if(process.env.WATCH_REPORT_DEPENDENCIES&&process.send)if(t=t.map(e=>fe.fromPortablePath(uo.resolveVirtual(fe.toPortablePath(e)))),BBe)process.send({\"watch:require\":t});else for(let e of t)process.send({\"watch:require\":e})}function dY(t,e){let r=Number(process.env.PNP_ALWAYS_WARN_ON_FALLBACK)>0,s=Number(process.env.PNP_DEBUG_LEVEL),a=/^(?![a-zA-Z]:[\\\\/]|\\\\\\\\|\\.{0,2}(?:\\/|$))((?:node:)?(?:@[^/]+\\/)?[^/]+)\\/*(.*|)$/,n=/^(\\/|\\.{1,2}(\\/|$))/,c=/\\/$/,f=/^\\.{0,2}\\//,p={name:null,reference:null},h=[],E=new Set;if(t.enableTopLevelFallback===!0&&h.push(p),e.compatibilityMode!==!1)for(let Fe of[\"react-scripts\",\"gatsby\"]){let Ne=t.packageRegistry.get(Fe);if(Ne)for(let Pe of Ne.keys()){if(Pe===null)throw new Error(\"Assertion failed: This reference shouldn't be null\");h.push({name:Fe,reference:Pe})}}let{ignorePattern:C,packageRegistry:S,packageLocatorsByLocations:P}=t;function I(Fe,Ne){return{fn:Fe,args:Ne,error:null,result:null}}function R(Fe){let Ne=process.stderr?.hasColors?.()??process.stdout.isTTY,Pe=(it,Ue)=>`\\x1B[${it}m${Ue}\\x1B[0m`,Ve=Fe.error;console.error(Ve?Pe(\"31;1\",`\\u2716 ${Fe.error?.message.replace(/\\n.*/s,\"\")}`):Pe(\"33;1\",\"\\u203C Resolution\")),Fe.args.length>0&&console.error();for(let it of Fe.args)console.error(`  ${Pe(\"37;1\",\"In \\u2190\")} ${(0,gY.inspect)(it,{colors:Ne,compact:!0})}`);Fe.result&&(console.error(),console.error(`  ${Pe(\"37;1\",\"Out \\u2192\")} ${(0,gY.inspect)(Fe.result,{colors:Ne,compact:!0})}`));let ke=new Error().stack.match(/(?<=^ +)at.*/gm)?.slice(2)??[];if(ke.length>0){console.error();for(let it of ke)console.error(`  ${Pe(\"38;5;244\",it)}`)}console.error()}function N(Fe,Ne){if(e.allowDebug===!1)return Ne;if(Number.isFinite(s)){if(s>=2)return(...Pe)=>{let Ve=I(Fe,Pe);try{return Ve.result=Ne(...Pe)}catch(ke){throw Ve.error=ke}finally{R(Ve)}};if(s>=1)return(...Pe)=>{try{return Ne(...Pe)}catch(Ve){let ke=I(Fe,Pe);throw ke.error=Ve,R(ke),Ve}}}return Ne}function U(Fe){let Ne=g(Fe);if(!Ne)throw gs(\"INTERNAL\",\"Couldn't find a matching entry in the dependency tree for the specified parent (this is probably an internal error)\");return Ne}function W(Fe){if(Fe.name===null)return!0;for(let Ne of t.dependencyTreeRoots)if(Ne.name===Fe.name&&Ne.reference===Fe.reference)return!0;return!1}let ee=new Set([\"node\",\"require\",...wBe(\"--conditions\")]);function ie(Fe,Ne=ee,Pe){let Ve=Ae(J.join(Fe,\"internal.js\"),{resolveIgnored:!0,includeDiscardFromLookup:!0});if(Ve===null)throw gs(\"INTERNAL\",`The locator that owns the \"${Fe}\" path can't be found inside the dependency tree (this is probably an internal error)`);let{packageLocation:ke}=U(Ve),it=J.join(ke,Er.manifest);if(!e.fakeFs.existsSync(it))return null;let Ue=JSON.parse(e.fakeFs.readFileSync(it,\"utf8\"));if(Ue.exports==null)return null;let x=J.contains(ke,Fe);if(x===null)throw gs(\"INTERNAL\",\"unqualifiedPath doesn't contain the packageLocation (this is probably an internal error)\");x!==\".\"&&!f.test(x)&&(x=`./${x}`);try{let w=dBe({packageJSONUrl:(0,jm.pathToFileURL)(fe.fromPortablePath(it)),packageSubpath:x,exports:Ue.exports,base:Pe?(0,jm.pathToFileURL)(fe.fromPortablePath(Pe)):null,conditions:Ne});return fe.toPortablePath((0,jm.fileURLToPath)(w))}catch(w){throw gs(\"EXPORTS_RESOLUTION_FAILED\",w.message,{unqualifiedPath:lf(Fe),locator:Ve,pkgJson:Ue,subpath:lf(x),conditions:Ne},w.code)}}function ue(Fe,Ne,{extensions:Pe}){let Ve;try{Ne.push(Fe),Ve=e.fakeFs.statSync(Fe)}catch{}if(Ve&&!Ve.isDirectory())return e.fakeFs.realpathSync(Fe);if(Ve&&Ve.isDirectory()){let ke;try{ke=JSON.parse(e.fakeFs.readFileSync(J.join(Fe,Er.manifest),\"utf8\"))}catch{}let it;if(ke&&ke.main&&(it=J.resolve(Fe,ke.main)),it&&it!==Fe){let Ue=ue(it,Ne,{extensions:Pe});if(Ue!==null)return Ue}}for(let ke=0,it=Pe.length;ke<it;ke++){let Ue=`${Fe}${Pe[ke]}`;if(Ne.push(Ue),e.fakeFs.existsSync(Ue))return Ue}if(Ve&&Ve.isDirectory())for(let ke=0,it=Pe.length;ke<it;ke++){let Ue=J.format({dir:Fe,name:\"index\",ext:Pe[ke]});if(Ne.push(Ue),e.fakeFs.existsSync(Ue))return Ue}return null}function le(Fe){let Ne=new sh.Module(Fe,null);return Ne.filename=Fe,Ne.paths=sh.Module._nodeModulePaths(Fe),Ne}function me(Fe,Ne){return Ne.endsWith(\"/\")&&(Ne=J.join(Ne,\"internal.js\")),sh.Module._resolveFilename(fe.fromPortablePath(Fe),le(fe.fromPortablePath(Ne)),!1,{plugnplay:!1})}function pe(Fe){if(C===null)return!1;let Ne=J.contains(t.basePath,Fe);return Ne===null?!1:!!C.test(Ne.replace(/\\/$/,\"\"))}let Be={std:3,resolveVirtual:1,getAllLocators:1},Ce=p;function g({name:Fe,reference:Ne}){let Pe=S.get(Fe);if(!Pe)return null;let Ve=Pe.get(Ne);return Ve||null}function we({name:Fe,reference:Ne}){let Pe=[];for(let[Ve,ke]of S)if(Ve!==null)for(let[it,Ue]of ke)it===null||Ue.packageDependencies.get(Fe)!==Ne||Ve===Fe&&it===Ne||Pe.push({name:Ve,reference:it});return Pe}function ye(Fe,Ne){let Pe=new Map,Ve=new Set,ke=Ue=>{let x=JSON.stringify(Ue.name);if(Ve.has(x))return;Ve.add(x);let w=we(Ue);for(let b of w)if(U(b).packagePeers.has(Fe))ke(b);else{let F=Pe.get(b.name);typeof F>\"u\"&&Pe.set(b.name,F=new Set),F.add(b.reference)}};ke(Ne);let it=[];for(let Ue of[...Pe.keys()].sort())for(let x of[...Pe.get(Ue)].sort())it.push({name:Ue,reference:x});return it}function Ae(Fe,{resolveIgnored:Ne=!1,includeDiscardFromLookup:Pe=!1}={}){if(pe(Fe)&&!Ne)return null;let Ve=J.relative(t.basePath,Fe);Ve.match(n)||(Ve=`./${Ve}`),Ve.endsWith(\"/\")||(Ve=`${Ve}/`);do{let ke=P.get(Ve);if(typeof ke>\"u\"||ke.discardFromLookup&&!Pe){Ve=Ve.substring(0,Ve.lastIndexOf(\"/\",Ve.length-2)+1);continue}return ke.locator}while(Ve!==\"\");return null}function se(Fe){try{return e.fakeFs.readFileSync(fe.toPortablePath(Fe),\"utf8\")}catch(Ne){if(Ne.code===\"ENOENT\")return;throw Ne}}function Z(Fe,Ne,{considerBuiltins:Pe=!0}={}){if(Fe.startsWith(\"#\"))throw new Error(\"resolveToUnqualified can not handle private import mappings\");if(Fe===\"pnpapi\")return fe.toPortablePath(e.pnpapiResolution);if(Pe&&(0,sh.isBuiltin)(Fe))return null;let Ve=lf(Fe),ke=Ne&&lf(Ne);if(Ne&&pe(Ne)&&(!J.isAbsolute(Fe)||Ae(Fe)===null)){let x=me(Fe,Ne);if(x===!1)throw gs(\"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: \"${Ve}\"\nRequired by: ${ke}\n`,{request:Ve,issuer:ke});return fe.toPortablePath(x)}let it,Ue=Fe.match(a);if(Ue){if(!Ne)throw gs(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:Ve,issuer:ke});let[,x,w]=Ue,b=Ae(Ne);if(!b){let Te=me(Fe,Ne);if(Te===!1)throw gs(\"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: \"${Ve}\"\nRequired by: ${ke}\n`,{request:Ve,issuer:ke});return fe.toPortablePath(Te)}let F=U(b).packageDependencies.get(x),z=null;if(F==null&&b.name!==null){let Te=t.fallbackExclusionList.get(b.name);if(!Te||!Te.has(b.reference)){for(let Ct=0,qt=h.length;Ct<qt;++Ct){let Pt=U(h[Ct]).packageDependencies.get(x);if(Pt!=null){r?z=Pt:F=Pt;break}}if(t.enableTopLevelFallback&&F==null&&z===null){let Ct=t.fallbackPool.get(x);Ct!=null&&(z=Ct)}}}let X=null;if(F===null)if(W(b))X=gs(\"MISSING_PEER_DEPENDENCY\",`Your application tried to access ${x} (a peer dependency); this isn't allowed as there is no ancestor to satisfy the requirement. Use a devDependency if needed.\n\nRequired package: ${x}${x!==Ve?` (via \"${Ve}\")`:\"\"}\nRequired by: ${ke}\n`,{request:Ve,issuer:ke,dependencyName:x});else{let Te=ye(x,b);Te.every(lt=>W(lt))?X=gs(\"MISSING_PEER_DEPENDENCY\",`${b.name} tried to access ${x} (a peer dependency) but it isn't provided by your application; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ve?` (via \"${Ve}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${ke})\n${Te.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference}\n`).join(\"\")}\n`,{request:Ve,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x,brokenAncestors:Te}):X=gs(\"MISSING_PEER_DEPENDENCY\",`${b.name} tried to access ${x} (a peer dependency) but it isn't provided by its ancestors; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ve?` (via \"${Ve}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${ke})\n\n${Te.map(lt=>`Ancestor breaking the chain: ${lt.name}@${lt.reference}\n`).join(\"\")}\n`,{request:Ve,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x,brokenAncestors:Te})}else F===void 0&&(!Pe&&(0,sh.isBuiltin)(Fe)?W(b)?X=gs(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in your dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ve?` (via \"${Ve}\")`:\"\"}\nRequired by: ${ke}\n`,{request:Ve,issuer:ke,dependencyName:x}):X=gs(\"UNDECLARED_DEPENDENCY\",`${b.name} tried to access ${x}. While this module is usually interpreted as a Node builtin, your resolver is running inside a non-Node resolution context where such builtins are ignored. Since ${x} isn't otherwise declared in ${b.name}'s dependencies, this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ve?` (via \"${Ve}\")`:\"\"}\nRequired by: ${ke}\n`,{request:Ve,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x}):W(b)?X=gs(\"UNDECLARED_DEPENDENCY\",`Your application tried to access ${x}, but it isn't declared in your dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ve?` (via \"${Ve}\")`:\"\"}\nRequired by: ${ke}\n`,{request:Ve,issuer:ke,dependencyName:x}):X=gs(\"UNDECLARED_DEPENDENCY\",`${b.name} tried to access ${x}, but it isn't declared in its dependencies; this makes the require call ambiguous and unsound.\n\nRequired package: ${x}${x!==Ve?` (via \"${Ve}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${ke})\n`,{request:Ve,issuer:ke,issuerLocator:Object.assign({},b),dependencyName:x}));if(F==null){if(z===null||X===null)throw X||new Error(\"Assertion failed: Expected an error to have been set\");F=z;let Te=X.message.replace(/\\n.*/g,\"\");X.message=Te,!E.has(Te)&&s!==0&&(E.add(Te),process.emitWarning(X))}let $=Array.isArray(F)?{name:F[0],reference:F[1]}:{name:x,reference:F},oe=U($);if(!oe.packageLocation)throw gs(\"MISSING_DEPENDENCY\",`A dependency seems valid but didn't get installed for some reason. This might be caused by a partial install, such as dev vs prod.\n\nRequired package: ${$.name}@${$.reference}${$.name!==Ve?` (via \"${Ve}\")`:\"\"}\nRequired by: ${b.name}@${b.reference} (via ${ke})\n`,{request:Ve,issuer:ke,dependencyLocator:Object.assign({},$)});let xe=oe.packageLocation;w?it=J.join(xe,w):it=xe}else if(J.isAbsolute(Fe))it=J.normalize(Fe);else{if(!Ne)throw gs(\"API_ERROR\",\"The resolveToUnqualified function must be called with a valid issuer when the path isn't a builtin nor absolute\",{request:Ve,issuer:ke});let x=J.resolve(Ne);Ne.match(c)?it=J.normalize(J.join(x,Fe)):it=J.normalize(J.join(J.dirname(x),Fe))}return J.normalize(it)}function De(Fe,Ne,Pe=ee,Ve){if(n.test(Fe))return Ne;let ke=ie(Ne,Pe,Ve);return ke?J.normalize(ke):Ne}function Re(Fe,{extensions:Ne=Object.keys(sh.Module._extensions)}={}){let Pe=[],Ve=ue(Fe,Pe,{extensions:Ne});if(Ve)return J.normalize(Ve);{vBe(Pe.map(Ue=>fe.fromPortablePath(Ue)));let ke=lf(Fe),it=Ae(Fe);if(it){let{packageLocation:Ue}=U(it),x=!0;try{e.fakeFs.accessSync(Ue)}catch(w){if(w?.code===\"ENOENT\")x=!1;else{let b=(w?.message??w??\"empty exception thrown\").replace(/^[A-Z]/,y=>y.toLowerCase());throw gs(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Required package exists but could not be accessed (${b}).\n\nMissing package: ${it.name}@${it.reference}\nExpected package location: ${lf(Ue)}\n`,{unqualifiedPath:ke,extensions:Ne})}}if(!x){let w=Ue.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 gs(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`${w}\n\nMissing package: ${it.name}@${it.reference}\nExpected package location: ${lf(Ue)}\n`,{unqualifiedPath:ke,extensions:Ne})}}throw gs(\"QUALIFIED_PATH_RESOLUTION_FAILED\",`Qualified path resolution failed: we looked for the following paths, but none could be accessed.\n\nSource path: ${ke}\n${Pe.map(Ue=>`Not found: ${lf(Ue)}\n`).join(\"\")}`,{unqualifiedPath:ke,extensions:Ne})}}function mt(Fe,Ne,Pe){if(!Ne)throw new Error(\"Assertion failed: An issuer is required to resolve private import mappings\");let Ve=mBe({name:Fe,base:(0,jm.pathToFileURL)(fe.fromPortablePath(Ne)),conditions:Pe.conditions??ee,readFileSyncFn:se});if(Ve instanceof URL)return Re(fe.toPortablePath((0,jm.fileURLToPath)(Ve)),{extensions:Pe.extensions});if(Ve.startsWith(\"#\"))throw new Error(\"Mapping from one private import to another isn't allowed\");return j(Ve,Ne,Pe)}function j(Fe,Ne,Pe={}){try{if(Fe.startsWith(\"#\"))return mt(Fe,Ne,Pe);let{considerBuiltins:Ve,extensions:ke,conditions:it}=Pe,Ue=Z(Fe,Ne,{considerBuiltins:Ve});if(Fe===\"pnpapi\")return Ue;if(Ue===null)return null;let x=()=>Ne!==null?pe(Ne):!1,w=(!Ve||!(0,sh.isBuiltin)(Fe))&&!x()?De(Fe,Ue,it,Ne):Ue;return Re(w,{extensions:ke})}catch(Ve){throw Object.hasOwn(Ve,\"pnpCode\")&&Object.assign(Ve.data,{request:lf(Fe),issuer:Ne&&lf(Ne)}),Ve}}function rt(Fe){let Ne=J.normalize(Fe),Pe=uo.resolveVirtual(Ne);return Pe!==Ne?Pe:null}return{VERSIONS:Be,topLevel:Ce,getLocator:(Fe,Ne)=>Array.isArray(Ne)?{name:Ne[0],reference:Ne[1]}:{name:Fe,reference:Ne},getDependencyTreeRoots:()=>[...t.dependencyTreeRoots],getAllLocators(){let Fe=[];for(let[Ne,Pe]of S)for(let Ve of Pe.keys())Ne!==null&&Ve!==null&&Fe.push({name:Ne,reference:Ve});return Fe},getPackageInformation:Fe=>{let Ne=g(Fe);if(Ne===null)return null;let Pe=fe.fromPortablePath(Ne.packageLocation);return{...Ne,packageLocation:Pe}},findPackageLocator:Fe=>Ae(fe.toPortablePath(Fe)),resolveToUnqualified:N(\"resolveToUnqualified\",(Fe,Ne,Pe)=>{let Ve=Ne!==null?fe.toPortablePath(Ne):null,ke=Z(fe.toPortablePath(Fe),Ve,Pe);return ke===null?null:fe.fromPortablePath(ke)}),resolveUnqualified:N(\"resolveUnqualified\",(Fe,Ne)=>fe.fromPortablePath(Re(fe.toPortablePath(Fe),Ne))),resolveRequest:N(\"resolveRequest\",(Fe,Ne,Pe)=>{let Ve=Ne!==null?fe.toPortablePath(Ne):null,ke=j(fe.toPortablePath(Fe),Ve,Pe);return ke===null?null:fe.fromPortablePath(ke)}),resolveVirtual:N(\"resolveVirtual\",Fe=>{let Ne=rt(fe.toPortablePath(Fe));return Ne!==null?fe.fromPortablePath(Ne):null})}}Dt();var SBe=(t,e,r)=>{let s=TD(t),a=sY(s,{basePath:e}),n=fe.join(e,Er.pnpCjs);return dY(a,{fakeFs:r,pnpapiResolution:n})};var yY=ut(bBe());Yt();var gA={};Vt(gA,{checkManifestCompatibility:()=>PBe,extractBuildRequest:()=>oN,getExtractHint:()=>EY,hasBindingGyp:()=>IY});Ge();Dt();function PBe(t){return G.isPackageCompatible(t,Ui.getArchitectureSet())}function oN(t,e,r,{configuration:s}){let a=[];for(let n of[\"preinstall\",\"install\",\"postinstall\"])e.manifest.scripts.has(n)&&a.push({type:0,script:n});return!e.manifest.scripts.has(\"install\")&&e.misc.hasBindingGyp&&a.push({type:1,script:\"node-gyp rebuild\"}),a.length===0?null:t.linkType!==\"HARD\"?{skipped:!0,explain:n=>n.reportWarningOnce(6,`${G.prettyLocator(s,t)} lists build scripts, but is referenced through a soft link. Soft links don't support build scripts, so they'll be ignored.`)}:r&&r.built===!1?{skipped:!0,explain:n=>n.reportInfoOnce(5,`${G.prettyLocator(s,t)} lists build scripts, but its build has been explicitly disabled through configuration.`)}:!s.get(\"enableScripts\")&&!r.built?{skipped:!0,explain:n=>n.reportWarningOnce(4,`${G.prettyLocator(s,t)} lists build scripts, but all build scripts have been disabled.`)}:PBe(t)?{skipped:!1,directives:a}:{skipped:!0,explain:n=>n.reportWarningOnce(76,`${G.prettyLocator(s,t)} The ${Ui.getArchitectureName()} architecture is incompatible with this package, build skipped.`)}}var gdt=new Set([\".exe\",\".bin\",\".h\",\".hh\",\".hpp\",\".c\",\".cc\",\".cpp\",\".java\",\".jar\",\".node\"]);function EY(t){return t.packageFs.getExtractHint({relevantExtensions:gdt})}function IY(t){let e=J.join(t.prefixPath,\"binding.gyp\");return t.packageFs.existsSync(e)}var HD={};Vt(HD,{getUnpluggedPath:()=>_D});Ge();Dt();function _D(t,{configuration:e}){return J.resolve(e.get(\"pnpUnpluggedFolder\"),G.slugifyLocator(t))}var ddt=new Set([G.makeIdent(null,\"open\").identHash,G.makeIdent(null,\"opn\").identHash]),sg=class{constructor(){this.mode=\"strict\";this.pnpCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"PnpLinker\",version:2})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the PnP linker to be enabled\");let s=og(r.project).cjs;if(!ce.existsSync(s))throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let a=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})),n={name:G.stringifyIdent(e),reference:e.reference},c=a.getPackageInformation(n);if(!c)throw new nt(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed PnP map - running an install might help`);return fe.toPortablePath(c.packageLocation)}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=og(r.project).cjs;if(!ce.existsSync(s))return null;let n=je.getFactoryWithDefault(this.pnpCache,s,()=>je.dynamicRequire(s,{cachingStrategy:je.CachingStrategy.FsTime})).findPackageLocator(fe.fromPortablePath(e));return n?G.makeLocator(G.parseIdent(n.name),n.reference):null}makeInstaller(e){return new Gm(e)}isEnabled(e){return!(e.project.configuration.get(\"nodeLinker\")!==\"pnp\"||e.project.configuration.get(\"pnpMode\")!==this.mode)}},Gm=class{constructor(e){this.opts=e;this.mode=\"strict\";this.asyncActions=new je.AsyncActions(10);this.packageRegistry=new Map;this.virtualTemplates=new Map;this.isESMLoaderRequired=!1;this.customData={store:new Map};this.unpluggedPaths=new Set;this.opts=e}attachCustomData(e){this.customData=e}async installPackage(e,r,s){let a=G.stringifyIdent(e),n=e.reference,c=!!this.opts.project.tryWorkspaceByLocator(e),f=G.isVirtualLocator(e),p=e.peerDependencies.size>0&&!f,h=!p&&!c,E=!p&&e.linkType!==\"SOFT\",C,S;if(h||E){let ee=f?G.devirtualizeLocator(e):e;C=this.customData.store.get(ee.locatorHash),typeof C>\"u\"&&(C=await mdt(r),e.linkType===\"HARD\"&&this.customData.store.set(ee.locatorHash,C)),C.manifest.type===\"module\"&&(this.isESMLoaderRequired=!0),S=this.opts.project.getDependencyMeta(ee,e.version)}let P=h?oN(e,C,S,{configuration:this.opts.project.configuration}):null,I=E?await this.unplugPackageIfNeeded(e,C,r,S,s):r.packageFs;if(J.isAbsolute(r.prefixPath))throw new Error(`Assertion failed: Expected the prefix path (${r.prefixPath}) to be relative to the parent`);let R=J.resolve(I.getRealPath(),r.prefixPath),N=CY(this.opts.project.cwd,R),U=new Map,W=new Set;if(f){for(let ee of e.peerDependencies.values())U.set(G.stringifyIdent(ee),null),W.add(G.stringifyIdent(ee));if(!c){let ee=G.devirtualizeLocator(e);this.virtualTemplates.set(ee.locatorHash,{location:CY(this.opts.project.cwd,uo.resolveVirtual(R)),locator:ee})}}return je.getMapWithDefault(this.packageRegistry,a).set(n,{packageLocation:N,packageDependencies:U,packagePeers:W,linkType:e.linkType,discardFromLookup:r.discardFromLookup||!1}),{packageLocation:R,buildRequest:P}}async attachInternalDependencies(e,r){let s=this.getPackageInformation(e);for(let[a,n]of r){let c=G.areIdentsEqual(a,n)?n.reference:[G.stringifyIdent(n),n.reference];s.packageDependencies.set(G.stringifyIdent(a),c)}}async attachExternalDependents(e,r){for(let s of r)this.getDiskInformation(s).packageDependencies.set(G.stringifyIdent(e),e.reference)}async finalizeInstall(){if(this.opts.project.configuration.get(\"pnpMode\")!==this.mode)return;let e=og(this.opts.project);if(this.isEsmEnabled()||await ce.removePromise(e.esmLoader),this.opts.project.configuration.get(\"nodeLinker\")!==\"pnp\"){await ce.removePromise(e.cjs),await ce.removePromise(e.data),await ce.removePromise(e.esmLoader),await ce.removePromise(this.opts.project.configuration.get(\"pnpUnpluggedFolder\"));return}for(let{locator:C,location:S}of this.virtualTemplates.values())je.getMapWithDefault(this.packageRegistry,G.stringifyIdent(C)).set(C.reference,{packageLocation:S,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1});let r=this.opts.project.configuration.get(\"pnpFallbackMode\"),s=this.opts.project.workspaces.map(({anchoredLocator:C})=>({name:G.stringifyIdent(C),reference:C.reference})),a=r!==\"none\",n=[],c=new Map,f=je.buildIgnorePattern([\".yarn/sdks/**\",...this.opts.project.configuration.get(\"pnpIgnorePatterns\")]),p=this.packageRegistry,h=this.opts.project.configuration.get(\"pnpShebang\"),E=this.opts.project.configuration.get(\"pnpZipBackend\");if(r===\"dependencies-only\")for(let C of this.opts.project.storedPackages.values())this.opts.project.tryWorkspaceByLocator(C)&&n.push({name:G.stringifyIdent(C),reference:C.reference});return await this.asyncActions.wait(),await this.finalizeInstallWithPnp({dependencyTreeRoots:s,enableTopLevelFallback:a,fallbackExclusionList:n,fallbackPool:c,ignorePattern:f,pnpZipBackend:E,packageRegistry:p,shebang:h}),{customData:this.customData}}async transformPnpSettings(e){}isEsmEnabled(){if(this.opts.project.configuration.sources.has(\"pnpEnableEsmLoader\"))return this.opts.project.configuration.get(\"pnpEnableEsmLoader\");if(this.isESMLoaderRequired)return!0;for(let e of this.opts.project.workspaces)if(e.manifest.type===\"module\")return!0;return!1}async finalizeInstallWithPnp(e){let r=og(this.opts.project),s=await this.locateNodeModules(e.ignorePattern);if(s.length>0){this.opts.report.reportWarning(31,\"One or more node_modules have been detected and will be removed. This operation may take some time.\");for(let n of s)await ce.removePromise(n)}if(await this.transformPnpSettings(e),this.opts.project.configuration.get(\"pnpEnableInlining\")){let n=tBe(e);await ce.changeFilePromise(r.cjs,n,{automaticNewlines:!0,mode:493}),await ce.removePromise(r.data)}else{let{dataFile:n,loaderFile:c}=rBe(e);await ce.changeFilePromise(r.cjs,c,{automaticNewlines:!0,mode:493}),await ce.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 ce.changeFilePromise(r.esmLoader,(0,yY.default)(),{automaticNewlines:!0,mode:420}));let a=this.opts.project.configuration.get(\"pnpUnpluggedFolder\");if(this.unpluggedPaths.size===0)await ce.removePromise(a);else for(let n of await ce.readdirPromise(a)){let c=J.resolve(a,n);this.unpluggedPaths.has(c)||await ce.removePromise(c)}}async locateNodeModules(e){let r=[],s=e?new RegExp(e):null;for(let a of this.opts.project.workspaces){let n=J.join(a.cwd,\"node_modules\");if(s&&s.test(J.relative(this.opts.project.cwd,a.cwd))||!ce.existsSync(n))continue;let c=await ce.readdirPromise(n,{withFileTypes:!0}),f=c.filter(p=>!p.isDirectory()||p.name===\".bin\"||!p.name.startsWith(\".\"));if(f.length===c.length)r.push(n);else for(let p of f)r.push(J.join(n,p.name))}return r}async unplugPackageIfNeeded(e,r,s,a,n){return this.shouldBeUnplugged(e,r,a)?this.unplugPackage(e,s,n):s.packageFs}shouldBeUnplugged(e,r,s){return typeof s.unplugged<\"u\"?s.unplugged:ddt.has(e.identHash)||e.conditions!=null?!0:r.manifest.preferUnplugged!==null?r.manifest.preferUnplugged:!!(oN(e,r,s,{configuration:this.opts.project.configuration})?.skipped===!1||r.misc.extractHint)}async unplugPackage(e,r,s){let a=_D(e,{configuration:this.opts.project.configuration});return this.opts.project.disabledLocators.has(e.locatorHash)?new _f(a,{baseFs:r.packageFs,pathUtils:J}):(this.unpluggedPaths.add(a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{let n=J.join(a,r.prefixPath,\".ready\");await ce.existsPromise(n)||(this.opts.project.storedBuildState.delete(e.locatorHash),await ce.mkdirPromise(a,{recursive:!0}),await ce.copyPromise(a,vt.dot,{baseFs:r.packageFs,overwrite:!1}),await ce.writeFilePromise(n,\"\"))})),new Sn(a))}getPackageInformation(e){let r=G.stringifyIdent(e),s=e.reference,a=this.packageRegistry.get(r);if(!a)throw new Error(`Assertion failed: The package information store should have been available (for ${G.prettyIdent(this.opts.project.configuration,e)})`);let n=a.get(s);if(!n)throw new Error(`Assertion failed: The package information should have been available (for ${G.prettyLocator(this.opts.project.configuration,e)})`);return n}getDiskInformation(e){let r=je.getMapWithDefault(this.packageRegistry,\"@@disk\"),s=CY(this.opts.project.cwd,e);return je.getFactoryWithDefault(r,s,()=>({packageLocation:s,packageDependencies:new Map,packagePeers:new Set,linkType:\"SOFT\",discardFromLookup:!1}))}};function CY(t,e){let r=J.relative(t,e);return r.match(/^\\.{0,2}\\//)||(r=`./${r}`),r.replace(/\\/?$/,\"/\")}async function mdt(t){let e=await Ut.tryFind(t.prefixPath,{baseFs:t.packageFs})??new Ut,r=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let s of e.scripts.keys())r.has(s)||e.scripts.delete(s);return{manifest:{scripts:e.scripts,preferUnplugged:e.preferUnplugged,type:e.type},misc:{extractHint:EY(t),hasBindingGyp:IY(t)}}}Ge();Ge();Yt();var xBe=ut(Go());var Sw=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Unplug direct dependencies from the entire project\"});this.recursive=ge.Boolean(\"-R,--recursive\",!1,{description:\"Unplug both direct and transitive dependencies\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.patterns=ge.Rest()}static{this.paths=[[\"unplug\"]]}static{this.usage=ot.Usage({description:\"force the unpacking of a list of packages\",details:\"\\n      This command will add the selectors matching the specified patterns to the list of packages that must be unplugged when installed.\\n\\n      A package being unplugged means that instead of being referenced directly through its archive, it will be unpacked at install time in the directory configured via `pnpUnpluggedFolder`. Note that unpacking packages this way is generally not recommended because it'll make it harder to store your packages within the repository. However, it's a good approach to quickly and safely debug some packages, and can even sometimes be required depending on the context (for example when the package contains shellscripts).\\n\\n      Running the command will set a persistent flag inside your top-level `package.json`, in the `dependenciesMeta` field. As such, to undo its effects, you'll need to revert the changes made to the manifest and run `yarn install` to apply the modification.\\n\\n      By default, only direct dependencies from the current workspace are affected. If `-A,--all` is set, direct dependencies from the entire project are affected. Using the `-R,--recursive` flag will affect transitive dependencies as well as direct ones.\\n\\n      This command accepts glob patterns inside the scope and name components (not the range). Make sure to escape the patterns to prevent your own shell from trying to expand them.\\n    \",examples:[[\"Unplug the lodash dependency from the active workspace\",\"yarn unplug lodash\"],[\"Unplug all instances of lodash referenced by any workspace\",\"yarn unplug lodash -A\"],[\"Unplug all instances of lodash referenced by the active workspace and its dependencies\",\"yarn unplug lodash -R\"],[\"Unplug all instances of lodash, anywhere\",\"yarn unplug lodash -AR\"],[\"Unplug one specific version of lodash\",\"yarn unplug lodash@1.2.3\"],[\"Unplug all packages with the `@babel` scope\",\"yarn unplug '@babel/*'\"],[\"Unplug all packages (only for testing, not recommended)\",\"yarn unplug -R '*'\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);if(r.get(\"nodeLinker\")!==\"pnp\")throw new nt(\"This command can only be used if the `nodeLinker` option is set to `pnp`\");await s.restoreInstallState();let c=new Set(this.patterns),f=this.patterns.map(P=>{let I=G.parseDescriptor(P),R=I.range!==\"unknown\"?I:G.makeDescriptor(I,\"*\");if(!Fr.validRange(R.range))throw new nt(`The range of the descriptor patterns must be a valid semver range (${G.prettyDescriptor(r,R)})`);return N=>{let U=G.stringifyIdent(N);return!xBe.default.isMatch(U,G.stringifyIdent(R))||N.version&&!Fr.satisfiesWithPrereleases(N.version,R.range)?!1:(c.delete(P),!0)}}),p=()=>{let P=[];for(let I of s.storedPackages.values())!s.tryWorkspaceByLocator(I)&&!G.isVirtualLocator(I)&&f.some(R=>R(I))&&P.push(I);return P},h=P=>{let I=new Set,R=[],N=(U,W)=>{if(I.has(U.locatorHash))return;let ee=!!s.tryWorkspaceByLocator(U);if(!(W>0&&!this.recursive&&ee)&&(I.add(U.locatorHash),!s.tryWorkspaceByLocator(U)&&f.some(ie=>ie(U))&&R.push(U),!(W>0&&!this.recursive)))for(let ie of U.dependencies.values()){let ue=s.storedResolutions.get(ie.descriptorHash);if(!ue)throw new Error(\"Assertion failed: The resolution should have been registered\");let le=s.storedPackages.get(ue);if(!le)throw new Error(\"Assertion failed: The package should have been registered\");N(le,W+1)}};for(let U of P)N(U.anchoredPackage,0);return R},E,C;if(this.all&&this.recursive?(E=p(),C=\"the project\"):this.all?(E=h(s.workspaces),C=\"any workspace\"):(E=h([a]),C=\"this workspace\"),c.size>1)throw new nt(`Patterns ${he.prettyList(r,c,he.Type.CODE)} don't match any packages referenced by ${C}`);if(c.size>0)throw new nt(`Pattern ${he.prettyList(r,c,he.Type.CODE)} doesn't match any packages referenced by ${C}`);E=je.sortMap(E,P=>G.stringifyLocator(P));let S=await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async P=>{for(let I of E){let R=I.version??\"unknown\",N=s.topLevelWorkspace.manifest.ensureDependencyMeta(G.makeDescriptor(I,R));N.unplugged=!0,P.reportInfo(0,`Will unpack ${G.prettyLocator(r,I)} to ${he.pretty(r,_D(I,{configuration:r}),he.Type.PATH)}`),P.reportJson({locator:G.stringifyLocator(I),version:R})}await s.topLevelWorkspace.persistManifest(),this.json||P.reportSeparator()});return S.hasErrors()?S.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};var og=t=>({cjs:J.join(t.cwd,Er.pnpCjs),data:J.join(t.cwd,Er.pnpData),esmLoader:J.join(t.cwd,Er.pnpEsmLoader)}),QBe=t=>/\\s/.test(t)?JSON.stringify(t):t;async function ydt(t,e,r){let s=/\\s*--require\\s+\\S*\\.pnp\\.c?js\\s*/g,a=/\\s*--experimental-loader\\s+\\S*\\.pnp\\.loader\\.mjs\\s*/,n=(e.NODE_OPTIONS??\"\").replace(s,\" \").replace(a,\" \").trim();if(t.configuration.get(\"nodeLinker\")!==\"pnp\"){e.NODE_OPTIONS=n||void 0;return}let c=og(t),f=`--require ${QBe(fe.fromPortablePath(c.cjs))}`;ce.existsSync(c.esmLoader)&&(f=`${f} --experimental-loader ${(0,kBe.pathToFileURL)(fe.fromPortablePath(c.esmLoader)).href}`),ce.existsSync(c.cjs)&&(e.NODE_OPTIONS=n?`${f} ${n}`:f)}async function Edt(t,e){let r=og(t);e(r.cjs),e(r.data),e(r.esmLoader),e(t.configuration.get(\"pnpUnpluggedFolder\"))}var Idt={hooks:{populateYarnPaths:Edt,setupScriptEnvironment:ydt},configuration:{nodeLinker:{description:'The linker used for installing Node packages, one of: \"pnp\", \"pnpm\", or \"node-modules\"',type:\"STRING\",default:\"pnp\"},minizip:{description:\"Whether Yarn should use minizip to extract archives\",type:\"BOOLEAN\",default:!1},winLinkType:{description:\"Whether Yarn should use Windows Junctions or symlinks when creating links on Windows.\",type:\"STRING\",values:[\"junctions\",\"symlinks\"],default:\"junctions\"},pnpMode:{description:\"If 'strict', generates standard PnP maps. If 'loose', merges them with the n_m resolution.\",type:\"STRING\",default:\"strict\"},pnpShebang:{description:\"String to prepend to the generated PnP script\",type:\"STRING\",default:\"#!/usr/bin/env node\"},pnpIgnorePatterns:{description:\"Array of glob patterns; files matching them will use the classic resolution\",type:\"STRING\",default:[],isArray:!0},pnpZipBackend:{description:\"Whether to use the experimental js implementation for the ZipFS\",type:\"STRING\",values:[\"libzip\",\"js\"],default:\"libzip\"},pnpEnableEsmLoader:{description:\"If true, Yarn will generate an ESM loader (`.pnp.loader.mjs`). If this is not explicitly set Yarn tries to automatically detect whether ESM support is required.\",type:\"BOOLEAN\",default:!1},pnpEnableInlining:{description:\"If true, the PnP data will be inlined along with the generated loader\",type:\"BOOLEAN\",default:!0},pnpFallbackMode:{description:\"If true, the generated PnP loader will follow the top-level fallback rule\",type:\"STRING\",default:\"dependencies-only\"},pnpUnpluggedFolder:{description:\"Folder where the unplugged packages must be stored\",type:\"ABSOLUTE_PATH\",default:\"./.yarn/unplugged\"}},linkers:[sg],commands:[Sw]},Cdt=Idt;var UBe=ut(OBe());Yt();var xY=ut(Ie(\"crypto\")),_Be=ut(Ie(\"fs\")),HBe=1,Ti=\"node_modules\",aN=\".bin\",jBe=\".yarn-state.yml\",Mdt=1e3,kY=(s=>(s.CLASSIC=\"classic\",s.HARDLINKS_LOCAL=\"hardlinks-local\",s.HARDLINKS_GLOBAL=\"hardlinks-global\",s))(kY||{}),jD=class{constructor(){this.installStateCache=new Map}getCustomDataKey(){return JSON.stringify({name:\"NodeModulesLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the node-modules linker to be enabled\");let s=r.project.tryWorkspaceByLocator(e);if(s)return s.cwd;let a=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await PY(r.project,{unrollAliases:!0}));if(a===null)throw new nt(\"Couldn't find the node_modules state file - running an install might help (findPackageLocation)\");let n=a.locatorMap.get(G.stringifyLocator(e));if(!n){let p=new nt(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed node_modules map - running an install might help`);throw p.code=\"LOCATOR_NOT_INSTALLED\",p}let c=n.locations.sort((p,h)=>p.split(J.sep).length-h.split(J.sep).length),f=J.join(r.project.configuration.startingCwd,Ti);return c.find(p=>J.contains(f,p))||n.locations[0]}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=await je.getFactoryWithDefault(this.installStateCache,r.project.cwd,async()=>await PY(r.project,{unrollAliases:!0}));if(s===null)return null;let{locationRoot:a,segments:n}=lN(J.resolve(e),{skipPrefix:r.project.cwd}),c=s.locationTree.get(a);if(!c)return null;let f=c.locator;for(let p of n){if(c=c.children.get(p),!c)break;f=c.locator||f}return G.parseLocator(f)}makeInstaller(e){return new bY(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"node-modules\"}},bY=class{constructor(e){this.opts=e;this.localStore=new Map;this.realLocatorChecksums=new Map;this.customData={store:new Map}}attachCustomData(e){this.customData=e}async installPackage(e,r){let s=J.resolve(r.packageFs.getRealPath(),r.prefixPath),a=this.customData.store.get(e.locatorHash);if(typeof a>\"u\"&&(a=await Udt(e,r),e.linkType===\"HARD\"&&this.customData.store.set(e.locatorHash,a)),!G.isPackageCompatible(e,this.opts.project.configuration.getSupportedArchitectures()))return{packageLocation:null,buildRequest:null};let n=new Map,c=new Set;n.has(G.stringifyIdent(e))||n.set(G.stringifyIdent(e),e.reference);let f=e;if(G.isVirtualLocator(e)){f=G.devirtualizeLocator(e);for(let E of e.peerDependencies.values())n.set(G.stringifyIdent(E),null),c.add(G.stringifyIdent(E))}let p={packageLocation:`${fe.fromPortablePath(s)}/`,packageDependencies:n,packagePeers:c,linkType:e.linkType,discardFromLookup:r.discardFromLookup??!1};this.localStore.set(e.locatorHash,{pkg:e,customPackageData:a,dependencyMeta:this.opts.project.getDependencyMeta(e,e.version),pnpNode:p});let h=r.checksum?r.checksum.substring(r.checksum.indexOf(\"/\")+1):null;return this.realLocatorChecksums.set(f.locatorHash,h),{packageLocation:s,buildRequest:null}}async attachInternalDependencies(e,r){let s=this.localStore.get(e.locatorHash);if(typeof s>\"u\")throw new Error(\"Assertion failed: Expected information object to have been registered\");for(let[a,n]of r){let c=G.areIdentsEqual(a,n)?n.reference:[G.stringifyIdent(n),n.reference];s.pnpNode.packageDependencies.set(G.stringifyIdent(a),c)}}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the node-modules linker\")}async finalizeInstall(){if(this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\")return;let e=new uo({baseFs:new $f({maxOpenFiles:80,readOnlyArchives:!0})}),r=await PY(this.opts.project),s=this.opts.project.configuration.get(\"nmMode\");(r===null||s!==r.nmMode)&&(this.opts.project.storedBuildState.clear(),r={locatorMap:new Map,binSymlinks:new Map,locationTree:new Map,nmMode:s,mtimeMs:0});let a=new Map(this.opts.project.workspaces.map(S=>{let P=this.opts.project.configuration.get(\"nmHoistingLimits\");try{P=je.validateEnum(xD,S.manifest.installConfig?.hoistingLimits??P)}catch{let I=G.prettyWorkspace(this.opts.project.configuration,S);this.opts.report.reportWarning(57,`${I}: Invalid 'installConfig.hoistingLimits' value. Expected one of ${Object.values(xD).join(\", \")}, using default: \"${P}\"`)}return[S.relativeCwd,P]})),n=new Map(this.opts.project.workspaces.map(S=>{let P=this.opts.project.configuration.get(\"nmSelfReferences\");return P=S.manifest.installConfig?.selfReferences??P,[S.relativeCwd,P]})),c={VERSIONS:{std:1},topLevel:{name:null,reference:null},getLocator:(S,P)=>Array.isArray(P)?{name:P[0],reference:P[1]}:{name:S,reference:P},getDependencyTreeRoots:()=>this.opts.project.workspaces.map(S=>{let P=S.anchoredLocator;return{name:G.stringifyIdent(P),reference:P.reference}}),getPackageInformation:S=>{let P=S.reference===null?this.opts.project.topLevelWorkspace.anchoredLocator:G.makeLocator(G.parseIdent(S.name),S.reference),I=this.localStore.get(P.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the package reference to have been registered\");return I.pnpNode},findPackageLocator:S=>{let P=this.opts.project.tryWorkspaceByCwd(fe.toPortablePath(S));if(P!==null){let I=P.anchoredLocator;return{name:G.stringifyIdent(I),reference:I.reference}}throw new Error(\"Assertion failed: Unimplemented\")},resolveToUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveUnqualified:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveRequest:()=>{throw new Error(\"Assertion failed: Unimplemented\")},resolveVirtual:S=>fe.fromPortablePath(uo.resolveVirtual(fe.toPortablePath(S)))},{tree:f,errors:p,preserveSymlinksRequired:h}=kD(c,{pnpifyFs:!1,validateExternalSoftLinks:!0,hoistingLimitsByCwd:a,project:this.opts.project,selfReferencesByCwd:n});if(!f){for(let{messageName:S,text:P}of p)this.opts.report.reportError(S,P);return}let E=nY(f);await Ydt(r,E,{baseFs:e,project:this.opts.project,report:this.opts.report,realLocatorChecksums:this.realLocatorChecksums,loadManifest:async S=>{let P=G.parseLocator(S),I=this.localStore.get(P.locatorHash);if(typeof I>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");return I.customPackageData.manifest}});let C=[];for(let[S,P]of E.entries()){if(WBe(S))continue;let I=G.parseLocator(S),R=this.localStore.get(I.locatorHash);if(typeof R>\"u\")throw new Error(\"Assertion failed: Expected the slot to exist\");if(this.opts.project.tryWorkspaceByLocator(R.pkg))continue;let N=gA.extractBuildRequest(R.pkg,R.customPackageData,R.dependencyMeta,{configuration:this.opts.project.configuration});N&&C.push({buildLocations:P.locations,locator:I,buildRequest:N})}return h&&this.opts.report.reportWarning(72,`The application uses portals and that's why ${he.pretty(this.opts.project.configuration,\"--preserve-symlinks\",he.Type.CODE)} Node option is required for launching it`),{customData:this.customData,records:C}}};async function Udt(t,e){let r=await Ut.tryFind(e.prefixPath,{baseFs:e.packageFs})??new Ut,s=new Set([\"preinstall\",\"install\",\"postinstall\"]);for(let a of r.scripts.keys())s.has(a)||r.scripts.delete(a);return{manifest:{bin:r.bin,scripts:r.scripts},misc:{hasBindingGyp:gA.hasBindingGyp(e)}}}async function _dt(t,e,r,s,{installChangedByUser:a}){let n=\"\";n+=`# Warning: This file is automatically generated. Removing it is fine, but will\n`,n+=`# cause your node_modules installation to become invalidated.\n`,n+=`\n`,n+=`__metadata:\n`,n+=`  version: ${HBe}\n`,n+=`  nmMode: ${s.value}\n`;let c=Array.from(e.keys()).sort(),f=G.stringifyLocator(t.topLevelWorkspace.anchoredLocator);for(let E of c){let C=e.get(E);n+=`\n`,n+=`${JSON.stringify(E)}:\n`,n+=`  locations:\n`;for(let S of C.locations){let P=J.contains(t.cwd,S);if(P===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=`    - ${JSON.stringify(P)}\n`}if(C.aliases.length>0){n+=`  aliases:\n`;for(let S of C.aliases)n+=`    - ${JSON.stringify(S)}\n`}if(E===f&&r.size>0){n+=`  bin:\n`;for(let[S,P]of r){let I=J.contains(t.cwd,S);if(I===null)throw new Error(`Assertion failed: Expected the path to be within the project (${S})`);n+=`    ${JSON.stringify(I)}:\n`;for(let[R,N]of P){let U=J.relative(J.join(S,Ti),N);n+=`      ${JSON.stringify(R)}: ${JSON.stringify(U)}\n`}}}}let p=t.cwd,h=J.join(p,Ti,jBe);a&&await ce.removePromise(h),await ce.changeFilePromise(h,n,{automaticNewlines:!0})}async function PY(t,{unrollAliases:e=!1}={}){let r=t.cwd,s=J.join(r,Ti,jBe),a;try{a=await ce.statPromise(s)}catch{}if(!a)return null;let n=ls(await ce.readFilePromise(s,\"utf8\"));if(n.__metadata.version>HBe)return null;let c=n.__metadata.nmMode||\"classic\",f=new Map,p=new Map;delete n.__metadata;for(let[h,E]of Object.entries(n)){let C=E.locations.map(P=>J.join(r,P)),S=E.bin;if(S)for(let[P,I]of Object.entries(S)){let R=J.join(r,fe.toPortablePath(P)),N=je.getMapWithDefault(p,R);for(let[U,W]of Object.entries(I))N.set(U,fe.toPortablePath([R,Ti,W].join(J.sep)))}if(f.set(h,{target:vt.dot,linkType:\"HARD\",locations:C,aliases:E.aliases||[]}),e&&E.aliases)for(let P of E.aliases){let{scope:I,name:R}=G.parseLocator(h),N=G.makeLocator(G.makeIdent(I,R),P),U=G.stringifyLocator(N);f.set(U,{target:vt.dot,linkType:\"HARD\",locations:C,aliases:[]})}}return{locatorMap:f,binSymlinks:p,locationTree:GBe(f,{skipPrefix:t.cwd}),nmMode:c,mtimeMs:a.mtimeMs}}var bw=async(t,e)=>{if(t.split(J.sep).indexOf(Ti)<0)throw new Error(`Assertion failed: trying to remove dir that doesn't contain node_modules: ${t}`);try{let r;if(!e.innerLoop&&(r=await ce.lstatPromise(t),!r.isDirectory()&&!r.isSymbolicLink()||r.isSymbolicLink()&&!e.isWorkspaceDir)){await ce.unlinkPromise(t);return}let s=await ce.readdirPromise(t,{withFileTypes:!0});for(let n of s){let c=J.join(t,n.name);n.isDirectory()?(n.name!==Ti||e&&e.innerLoop)&&await bw(c,{innerLoop:!0,contentsOnly:!1}):await ce.unlinkPromise(c)}let a=!e.innerLoop&&e.isWorkspaceDir&&r?.isSymbolicLink();!e.contentsOnly&&!a&&await ce.rmdirPromise(t)}catch(r){if(r.code!==\"ENOENT\"&&r.code!==\"ENOTEMPTY\")throw r}},LBe=4,lN=(t,{skipPrefix:e})=>{let r=J.contains(e,t);if(r===null)throw new Error(`Assertion failed: Writing attempt prevented to ${t} which is outside project root: ${e}`);let s=r.split(J.sep).filter(p=>p!==\"\"),a=s.indexOf(Ti),n=s.slice(0,a).join(J.sep),c=J.join(e,n),f=s.slice(a);return{locationRoot:c,segments:f}},GBe=(t,{skipPrefix:e})=>{let r=new Map;if(t===null)return r;let s=()=>({children:new Map,linkType:\"HARD\"});for(let[a,n]of t.entries()){if(n.linkType===\"SOFT\"&&J.contains(e,n.target)!==null){let f=je.getFactoryWithDefault(r,n.target,s);f.locator=a,f.linkType=n.linkType}for(let c of n.locations){let{locationRoot:f,segments:p}=lN(c,{skipPrefix:e}),h=je.getFactoryWithDefault(r,f,s);for(let E=0;E<p.length;++E){let C=p[E];if(C!==\".\"){let S=je.getFactoryWithDefault(h.children,C,s);h.children.set(C,S),h=S}E===p.length-1&&(h.locator=a,h.linkType=n.linkType)}}}return r},QY=async(t,e,r)=>{if(process.platform===\"win32\"&&r===\"junctions\"){let s;try{s=await ce.lstatPromise(t)}catch{}if(!s||s.isDirectory()){await ce.symlinkPromise(t,e,\"junction\");return}}await ce.symlinkPromise(J.relative(J.dirname(e),t),e)};async function qBe(t,e,r){let s=J.join(t,`${xY.default.randomBytes(16).toString(\"hex\")}.tmp`);try{await ce.writeFilePromise(s,r);try{await ce.linkPromise(s,e)}catch{}}finally{await ce.unlinkPromise(s)}}async function Hdt({srcPath:t,dstPath:e,entry:r,globalHardlinksStore:s,baseFs:a,nmMode:n}){if(r.kind===\"file\"){if(n.value===\"hardlinks-global\"&&s&&r.digest){let f=J.join(s,r.digest.substring(0,2),`${r.digest.substring(2)}.dat`),p;try{let h=await ce.statPromise(f);if(h&&(!r.mtimeMs||h.mtimeMs>r.mtimeMs||h.mtimeMs<r.mtimeMs-Mdt))if(await Nn.checksumFile(f,{baseFs:ce,algorithm:\"sha1\"})!==r.digest){let C=J.join(s,`${xY.default.randomBytes(16).toString(\"hex\")}.tmp`);await ce.renamePromise(f,C);let S=await a.readFilePromise(t);await ce.writeFilePromise(C,S);try{await ce.linkPromise(C,f),r.mtimeMs=new Date().getTime(),await ce.unlinkPromise(C)}catch{}}else r.mtimeMs||(r.mtimeMs=Math.ceil(h.mtimeMs));await ce.linkPromise(f,e),p=!0}catch{p=!1}if(!p){let h=await a.readFilePromise(t);await qBe(s,f,h),r.mtimeMs=new Date().getTime();try{await ce.linkPromise(f,e)}catch(E){E&&E.code&&E.code==\"EXDEV\"&&(n.value=\"hardlinks-local\",await a.copyFilePromise(t,e))}}}else await a.copyFilePromise(t,e);let c=r.mode&511;c!==420&&await ce.chmodPromise(e,c)}}var jdt=async(t,e,{baseFs:r,globalHardlinksStore:s,nmMode:a,windowsLinkType:n,packageChecksum:c})=>{await ce.mkdirPromise(t,{recursive:!0});let f=async(E=vt.dot)=>{let C=J.join(e,E),S=await r.readdirPromise(C,{withFileTypes:!0}),P=new Map;for(let I of S){let R=J.join(E,I.name),N,U=J.join(C,I.name);if(I.isFile()){if(N={kind:\"file\",mode:(await r.lstatPromise(U)).mode},a.value===\"hardlinks-global\"){let W=await Nn.checksumFile(U,{baseFs:r,algorithm:\"sha1\"});N.digest=W}}else if(I.isDirectory())N={kind:\"directory\"};else if(I.isSymbolicLink())N={kind:\"symlink\",symlinkTo:await r.readlinkPromise(U)};else throw new Error(`Unsupported file type (file: ${U}, mode: 0o${await r.statSync(U).mode.toString(8).padStart(6,\"0\")})`);if(P.set(R,N),I.isDirectory()&&R!==Ti){let W=await f(R);for(let[ee,ie]of W)P.set(ee,ie)}}return P},p;if(a.value===\"hardlinks-global\"&&s&&c){let E=J.join(s,c.substring(0,2),`${c.substring(2)}.json`);try{p=new Map(Object.entries(JSON.parse(await ce.readFilePromise(E,\"utf8\"))))}catch{p=await f()}}else p=await f();let h=!1;for(let[E,C]of p){let S=J.join(e,E),P=J.join(t,E);if(C.kind===\"directory\")await ce.mkdirPromise(P,{recursive:!0});else if(C.kind===\"file\"){let I=C.mtimeMs;await Hdt({srcPath:S,dstPath:P,entry:C,nmMode:a,baseFs:r,globalHardlinksStore:s}),C.mtimeMs!==I&&(h=!0)}else C.kind===\"symlink\"&&await QY(J.resolve(J.dirname(P),C.symlinkTo),P,n)}if(a.value===\"hardlinks-global\"&&s&&h&&c){let E=J.join(s,c.substring(0,2),`${c.substring(2)}.json`);await ce.removePromise(E),await qBe(s,E,Buffer.from(JSON.stringify(Object.fromEntries(p))))}};function Gdt(t,e,r,s){let a=new Map,n=new Map,c=new Map,f=!1,p=(h,E,C,S,P)=>{let I=!0,R=J.join(h,E),N=new Set;if(E===Ti||E.startsWith(\"@\")){let W;try{W=ce.statSync(R)}catch{}I=!!W,W?W.mtimeMs>r?(f=!0,N=new Set(ce.readdirSync(R))):N=new Set(C.children.get(E).children.keys()):f=!0;let ee=e.get(h);if(ee){let ie=J.join(h,Ti,aN),ue;try{ue=ce.statSync(ie)}catch{}if(!ue)f=!0;else if(ue.mtimeMs>r){f=!0;let le=new Set(ce.readdirSync(ie)),me=new Map;n.set(h,me);for(let[pe,Be]of ee)le.has(pe)&&me.set(pe,Be)}else n.set(h,ee)}}else I=P.has(E);let U=C.children.get(E);if(I){let{linkType:W,locator:ee}=U,ie={children:new Map,linkType:W,locator:ee};if(S.children.set(E,ie),ee){let ue=je.getSetWithDefault(c,ee);ue.add(R),c.set(ee,ue)}for(let ue of U.children.keys())p(R,ue,U,ie,N)}else U.locator&&s.storedBuildState.delete(G.parseLocator(U.locator).locatorHash)};for(let[h,E]of t){let{linkType:C,locator:S}=E,P={children:new Map,linkType:C,locator:S};if(a.set(h,P),S){let I=je.getSetWithDefault(c,E.locator);I.add(h),c.set(E.locator,I)}E.children.has(Ti)&&p(h,Ti,E,P,new Set)}return{locationTree:a,binSymlinks:n,locatorLocations:c,installChangedByUser:f}}function WBe(t){let e=G.parseDescriptor(t);return G.isVirtualDescriptor(e)&&(e=G.devirtualizeDescriptor(e)),e.range.startsWith(\"link:\")}async function qdt(t,e,r,{loadManifest:s}){let a=new Map;for(let[f,{locations:p}]of t){let h=WBe(f)?null:await s(f,p[0]),E=new Map;if(h)for(let[C,S]of h.bin){let P=J.join(p[0],S);S!==\"\"&&ce.existsSync(P)&&E.set(C,S)}a.set(f,E)}let n=new Map,c=(f,p,h)=>{let E=new Map,C=J.contains(r,f);if(h.locator&&C!==null){let S=a.get(h.locator);for(let[P,I]of S){let R=J.join(f,fe.toPortablePath(I));E.set(P,R)}for(let[P,I]of h.children){let R=J.join(f,P),N=c(R,R,I);N.size>0&&n.set(f,new Map([...n.get(f)||new Map,...N]))}}else for(let[S,P]of h.children){let I=c(J.join(f,S),p,P);for(let[R,N]of I)E.set(R,N)}return E};for(let[f,p]of e){let h=c(f,f,p);h.size>0&&n.set(f,new Map([...n.get(f)||new Map,...h]))}return n}var MBe=(t,e)=>{if(!t||!e)return t===e;let r=G.parseLocator(t);G.isVirtualLocator(r)&&(r=G.devirtualizeLocator(r));let s=G.parseLocator(e);return G.isVirtualLocator(s)&&(s=G.devirtualizeLocator(s)),G.areLocatorsEqual(r,s)};function TY(t){return J.join(t.get(\"globalFolder\"),\"store\")}function Wdt(t,e){let r=s=>{let a=s.split(J.sep),n=a.lastIndexOf(Ti);if(n<0||n==a.length-1)throw new Error(`Assertion failed. Path is outside of any node_modules package ${s}`);return a.slice(0,n+(a[n+1].startsWith(\"@\")?3:2)).join(J.sep)};for(let s of t.values())for(let[a,n]of s)e.has(r(n))&&s.delete(a)}async function Ydt(t,e,{baseFs:r,project:s,report:a,loadManifest:n,realLocatorChecksums:c}){let f=J.join(s.cwd,Ti),{locationTree:p,binSymlinks:h,locatorLocations:E,installChangedByUser:C}=Gdt(t.locationTree,t.binSymlinks,t.mtimeMs,s),S=GBe(e,{skipPrefix:s.cwd}),P=[],I=async({srcDir:Be,dstDir:Ce,linkType:g,globalHardlinksStore:we,nmMode:ye,windowsLinkType:Ae,packageChecksum:se})=>{let Z=(async()=>{try{g===\"SOFT\"?(await ce.mkdirPromise(J.dirname(Ce),{recursive:!0}),await QY(J.resolve(Be),Ce,Ae)):await jdt(Ce,Be,{baseFs:r,globalHardlinksStore:we,nmMode:ye,windowsLinkType:Ae,packageChecksum:se})}catch(De){throw De.message=`While persisting ${Be} -> ${Ce} ${De.message}`,De}finally{ie.tick()}})().then(()=>P.splice(P.indexOf(Z),1));P.push(Z),P.length>LBe&&await Promise.race(P)},R=async(Be,Ce,g)=>{let we=(async()=>{let ye=async(Ae,se,Z)=>{try{Z.innerLoop||await ce.mkdirPromise(se,{recursive:!0});let De=await ce.readdirPromise(Ae,{withFileTypes:!0});for(let Re of De){if(!Z.innerLoop&&Re.name===aN)continue;let mt=J.join(Ae,Re.name),j=J.join(se,Re.name);Re.isDirectory()?(Re.name!==Ti||Z&&Z.innerLoop)&&(await ce.mkdirPromise(j,{recursive:!0}),await ye(mt,j,{...Z,innerLoop:!0})):me.value===\"hardlinks-local\"||me.value===\"hardlinks-global\"?await ce.linkPromise(mt,j):await ce.copyFilePromise(mt,j,_Be.default.constants.COPYFILE_FICLONE)}}catch(De){throw Z.innerLoop||(De.message=`While cloning ${Ae} -> ${se} ${De.message}`),De}finally{Z.innerLoop||ie.tick()}};await ye(Be,Ce,g)})().then(()=>P.splice(P.indexOf(we),1));P.push(we),P.length>LBe&&await Promise.race(P)},N=async(Be,Ce,g)=>{if(g)for(let[we,ye]of Ce.children){let Ae=g.children.get(we);await N(J.join(Be,we),ye,Ae)}else{Ce.children.has(Ti)&&await bw(J.join(Be,Ti),{contentsOnly:!1});let we=J.basename(Be)===Ti&&p.has(J.join(J.dirname(Be)));await bw(Be,{contentsOnly:Be===f,isWorkspaceDir:we})}};for(let[Be,Ce]of p){let g=S.get(Be);for(let[we,ye]of Ce.children){if(we===\".\")continue;let Ae=g&&g.children.get(we),se=J.join(Be,we);await N(se,ye,Ae)}}let U=async(Be,Ce,g)=>{if(g){MBe(Ce.locator,g.locator)||await bw(Be,{contentsOnly:Ce.linkType===\"HARD\"});for(let[we,ye]of Ce.children){let Ae=g.children.get(we);await U(J.join(Be,we),ye,Ae)}}else{Ce.children.has(Ti)&&await bw(J.join(Be,Ti),{contentsOnly:!0});let we=J.basename(Be)===Ti&&S.has(J.join(J.dirname(Be)));await bw(Be,{contentsOnly:Ce.linkType===\"HARD\",isWorkspaceDir:we})}};for(let[Be,Ce]of S){let g=p.get(Be);for(let[we,ye]of Ce.children){if(we===\".\")continue;let Ae=g&&g.children.get(we);await U(J.join(Be,we),ye,Ae)}}let W=new Map,ee=[];for(let[Be,Ce]of E)for(let g of Ce){let{locationRoot:we,segments:ye}=lN(g,{skipPrefix:s.cwd}),Ae=S.get(we),se=we;if(Ae){for(let Z of ye)if(se=J.join(se,Z),Ae=Ae.children.get(Z),!Ae)break;if(Ae){let Z=MBe(Ae.locator,Be),De=e.get(Ae.locator),Re=De.target,mt=se,j=De.linkType;if(Z)W.has(Re)||W.set(Re,mt);else if(Re!==mt){let rt=G.parseLocator(Ae.locator);G.isVirtualLocator(rt)&&(rt=G.devirtualizeLocator(rt)),ee.push({srcDir:Re,dstDir:mt,linkType:j,realLocatorHash:rt.locatorHash})}}}}for(let[Be,{locations:Ce}]of e.entries())for(let g of Ce){let{locationRoot:we,segments:ye}=lN(g,{skipPrefix:s.cwd}),Ae=p.get(we),se=S.get(we),Z=we,De=e.get(Be),Re=G.parseLocator(Be);G.isVirtualLocator(Re)&&(Re=G.devirtualizeLocator(Re));let mt=Re.locatorHash,j=De.target,rt=g;if(j===rt)continue;let Fe=De.linkType;for(let Ne of ye)se=se.children.get(Ne);if(!Ae)ee.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:mt});else for(let Ne of ye)if(Z=J.join(Z,Ne),Ae=Ae.children.get(Ne),!Ae){ee.push({srcDir:j,dstDir:rt,linkType:Fe,realLocatorHash:mt});break}}let ie=Ao.progressViaCounter(ee.length),ue=a.reportProgress(ie),le=s.configuration.get(\"nmMode\"),me={value:le},pe=s.configuration.get(\"winLinkType\");try{let Be=me.value===\"hardlinks-global\"?`${TY(s.configuration)}/v1`:null;if(Be&&!await ce.existsPromise(Be)){await ce.mkdirpPromise(Be);for(let g=0;g<256;g++)await ce.mkdirPromise(J.join(Be,g.toString(16).padStart(2,\"0\")))}for(let g of ee)(g.linkType===\"SOFT\"||!W.has(g.srcDir))&&(W.set(g.srcDir,g.dstDir),await I({...g,globalHardlinksStore:Be,nmMode:me,windowsLinkType:pe,packageChecksum:c.get(g.realLocatorHash)||null}));await Promise.all(P),P.length=0;for(let g of ee){let we=W.get(g.srcDir);g.linkType!==\"SOFT\"&&g.dstDir!==we&&await R(we,g.dstDir,{nmMode:me})}await Promise.all(P),await ce.mkdirPromise(f,{recursive:!0}),Wdt(h,new Set(ee.map(g=>g.dstDir)));let Ce=await qdt(e,S,s.cwd,{loadManifest:n});await Vdt(h,Ce,s.cwd,pe),await _dt(s,e,Ce,me,{installChangedByUser:C}),le==\"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{ue.stop()}}async function Vdt(t,e,r,s){for(let a of t.keys()){if(J.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=J.join(a,Ti,aN);await ce.removePromise(n)}}for(let[a,n]of e){if(J.contains(r,a)===null)throw new Error(`Assertion failed. Excepted bin symlink location to be inside project dir, instead it was at ${a}`);let c=J.join(a,Ti,aN),f=t.get(a)||new Map;await ce.mkdirPromise(c,{recursive:!0});for(let p of f.keys())n.has(p)||(await ce.removePromise(J.join(c,p)),process.platform===\"win32\"&&await ce.removePromise(J.join(c,`${p}.cmd`)));for(let[p,h]of n){let E=f.get(p),C=J.join(c,p);E!==h&&(process.platform===\"win32\"?await(0,UBe.default)(fe.fromPortablePath(h),fe.fromPortablePath(C),{createPwshFile:!1}):(await ce.removePromise(C),await QY(h,C,s),J.contains(r,await ce.realpathPromise(h))!==null&&await ce.chmodPromise(h,493)))}}}Ge();Dt();eA();var GD=class extends sg{constructor(){super(...arguments);this.mode=\"loose\"}makeInstaller(r){return new RY(r)}},RY=class extends Gm{constructor(){super(...arguments);this.mode=\"loose\"}async transformPnpSettings(r){let s=new uo({baseFs:new $f({maxOpenFiles:80,readOnlyArchives:!0})}),a=SBe(r,this.opts.project.cwd,s),{tree:n,errors:c}=kD(a,{pnpifyFs:!1,project:this.opts.project});if(!n){for(let{messageName:C,text:S}of c)this.opts.report.reportError(C,S);return}let f=new Map;r.fallbackPool=f;let p=(C,S)=>{let P=G.parseLocator(S.locator),I=G.stringifyIdent(P);I===C?f.set(C,P.reference):f.set(C,[I,P.reference])},h=J.join(this.opts.project.cwd,Er.nodeModules),E=n.get(h);if(!(typeof E>\"u\")){if(\"target\"in E)throw new Error(\"Assertion failed: Expected the root junction point to be a directory\");for(let C of E.dirList){let S=J.join(h,C),P=n.get(S);if(typeof P>\"u\")throw new Error(\"Assertion failed: Expected the child to have been registered\");if(\"target\"in P)p(C,P);else for(let I of P.dirList){let R=J.join(S,I),N=n.get(R);if(typeof N>\"u\")throw new Error(\"Assertion failed: Expected the subchild to have been registered\");if(\"target\"in N)p(`${C}/${I}`,N);else throw new Error(\"Assertion failed: Expected the leaf junction to be a package\")}}}}};var Jdt={hooks:{cleanGlobalArtifacts:async t=>{let e=TY(t);await ce.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:[jD,GD]},Kdt=Jdt;var FK={};Vt(FK,{NpmHttpFetcher:()=>VD,NpmRemapResolver:()=>JD,NpmSemverFetcher:()=>oh,NpmSemverResolver:()=>KD,NpmTagResolver:()=>zD,default:()=>ubt,npmConfigUtils:()=>hi,npmHttpUtils:()=>en,npmPublishUtils:()=>v1});Ge();var $Be=ut(Ai());var oi=\"npm:\";var en={};Vt(en,{AuthType:()=>zBe,customPackageError:()=>qm,del:()=>Amt,get:()=>Wm,getIdentUrl:()=>WD,getPackageMetadata:()=>Qw,handleInvalidAuthenticationError:()=>ag,post:()=>umt,put:()=>fmt});Ge();Ge();Dt();var LY=ut(Vv());ql();var KBe=ut(Ai());var hi={};Vt(hi,{RegistryType:()=>VBe,getAuditRegistry:()=>zdt,getAuthConfiguration:()=>OY,getDefaultRegistry:()=>qD,getPublishRegistry:()=>Xdt,getRegistryConfiguration:()=>JBe,getScopeConfiguration:()=>NY,getScopeRegistry:()=>Pw,isPackageApproved:()=>xw,normalizeRegistry:()=>Jc});Ge();var YBe=ut(Go()),VBe=(s=>(s.AUDIT_REGISTRY=\"npmAuditRegistry\",s.FETCH_REGISTRY=\"npmRegistryServer\",s.PUBLISH_REGISTRY=\"npmPublishRegistry\",s))(VBe||{});function Jc(t){return t.replace(/\\/$/,\"\")}function zdt({configuration:t}){return qD({configuration:t,type:\"npmAuditRegistry\"})}function Xdt(t,{configuration:e}){return t.publishConfig?.registry?Jc(t.publishConfig.registry):t.name?Pw(t.name.scope,{configuration:e,type:\"npmPublishRegistry\"}):qD({configuration:e,type:\"npmPublishRegistry\"})}function Pw(t,{configuration:e,type:r=\"npmRegistryServer\"}){let s=NY(t,{configuration:e});if(s===null)return qD({configuration:e,type:r});let a=s.get(r);return a===null?qD({configuration:e,type:r}):Jc(a)}function qD({configuration:t,type:e=\"npmRegistryServer\"}){let r=t.get(e);return Jc(r!==null?r:t.get(\"npmRegistryServer\"))}function JBe(t,{configuration:e}){let r=e.get(\"npmRegistries\"),s=Jc(t),a=r.get(s);if(typeof a<\"u\")return a;let n=r.get(s.replace(/^[a-z]+:/,\"\"));return typeof n<\"u\"?n:null}var Zdt=new Map([[\"npmRegistryServer\",\"https://npm.jsr.io/\"]]);function NY(t,{configuration:e}){if(t===null)return null;let s=e.get(\"npmScopes\").get(t);return s||(t===\"jsr\"?Zdt:null)}function OY(t,{configuration:e,ident:r}){let s=r&&NY(r.scope,{configuration:e});return s?.get(\"npmAuthIdent\")||s?.get(\"npmAuthToken\")?s:JBe(t,{configuration:e})||e}function $dt({configuration:t,version:e,publishTimes:r}){let s=t.get(\"npmMinimalAgeGate\");if(s){let a=r?.[e];if(typeof a>\"u\"||(new Date().getTime()-new Date(a).getTime())/60/1e3<s)return!0}return!1}function emt(t,e,r){let s=G.tryParseDescriptor(r);if(!s||s.identHash!==t.identHash&&!YBe.default.isMatch(G.stringifyIdent(t),G.stringifyIdent(s)))return!1;if(s.range===\"unknown\")return!0;let a=Fr.validRange(s.range);return!(!a||!a.test(e))}function tmt({configuration:t,ident:e,version:r}){return t.get(\"npmPreapprovedPackages\").some(s=>emt(e,r,s))}function xw(t){return!$dt(t)||tmt(t)}var zBe=(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))(zBe||{});async function ag(t,{attemptedAs:e,registry:r,headers:s,configuration:a}){if(uN(t))throw new jt(41,\"Invalid OTP token\");if(t.originalError?.name===\"HTTPError\"&&t.originalError?.response.statusCode===401)throw new jt(41,`Invalid authentication (${typeof e!=\"string\"?`as ${await hmt(r,s,{configuration:a})}`:`attempted as ${e}`})`)}function qm(t,e){let r=t.response?.statusCode;return r?r===404?\"Package not found\":r>=500&&r<600?`The registry appears to be down (using a ${he.applyHyperlink(e,\"local cache\",\"https://yarnpkg.com/advanced/lexicon#local-cache\")} might have protected you against such outages)`:null:null}function WD(t){return t.scope?`/@${t.scope}%2f${t.name}`:`/${t.name}`}var XBe=new Map,rmt=new Map;async function nmt(t){return await je.getFactoryWithDefault(XBe,t,async()=>{let e=null;try{e=await ce.readJsonPromise(t)}catch{}return e})}async function imt(t,e,{configuration:r,cached:s,registry:a,headers:n,version:c,...f}){return await je.getFactoryWithDefault(rmt,t,async()=>await Wm(WD(e),{...f,customErrorMessage:qm,configuration:r,registry:a,ident:e,headers:{...n,\"If-None-Match\":s?.etag,\"If-Modified-Since\":s?.lastModified},wrapNetworkRequest:async p=>async()=>{let h=await p();if(h.statusCode===304){if(s===null)throw new Error(\"Assertion failed: cachedMetadata should not be null\");return{...h,body:s.metadata}}let E=omt(JSON.parse(h.body.toString())),C={metadata:E,etag:h.headers.etag,lastModified:h.headers[\"last-modified\"]};return XBe.set(t,Promise.resolve(C)),Promise.resolve().then(async()=>{let S=`${t}-${process.pid}.tmp`;await ce.mkdirPromise(J.dirname(S),{recursive:!0}),await ce.writeJsonPromise(S,C,{compact:!0}),await ce.renamePromise(S,t)}).catch(()=>{}),{...h,body:E}}}))}function smt(t){return t.scope!==null?`@${t.scope}-${t.name}-${t.scope.length}`:t.name}async function Qw(t,{cache:e,project:r,registry:s,headers:a,version:n,...c}){let{configuration:f}=r;s=YD(f,{ident:t,registry:s});let p=lmt(f,s),h=J.join(p,`${smt(t)}.json`),E=null;if(!r.lockfileNeedsRefresh&&(E=await nmt(h),E)){if(typeof n<\"u\"&&typeof E.metadata.versions[n]<\"u\")return E.metadata;if(f.get(\"enableOfflineMode\")){let C=structuredClone(E.metadata),S=new Set;if(e){for(let I of Object.keys(C.versions)){let R=G.makeLocator(t,`npm:${I}`),N=e.getLocatorMirrorPath(R);(!N||!ce.existsSync(N))&&(delete C.versions[I],S.add(I))}let P=C[\"dist-tags\"].latest;if(S.has(P)){let I=Object.keys(E.metadata.versions).sort(KBe.default.compare),R=I.indexOf(P);for(;S.has(I[R])&&R>=0;)R-=1;R>=0?C[\"dist-tags\"].latest=I[R]:delete C[\"dist-tags\"].latest}}return C}}return await imt(h,t,{...c,configuration:f,cached:E,registry:s,headers:a,version:n})}var ZBe=[\"name\",\"dist.tarball\",\"bin\",\"scripts\",\"os\",\"cpu\",\"libc\",\"dependencies\",\"dependenciesMeta\",\"optionalDependencies\",\"peerDependencies\",\"peerDependenciesMeta\",\"deprecated\"];function omt(t){return{\"dist-tags\":t[\"dist-tags\"],versions:Object.fromEntries(Object.entries(t.versions).map(([e,r])=>[e,Kd(r,ZBe)])),time:t.time}}var amt=Nn.makeHash(\"time\",...ZBe).slice(0,6);function lmt(t,e){let r=cmt(t),s=new URL(e);return J.join(r,amt,s.hostname)}function cmt(t){return J.join(t.get(\"globalFolder\"),\"metadata/npm\")}async function Wm(t,{configuration:e,headers:r,ident:s,authType:a,allowOidc:n,registry:c,...f}){c=YD(e,{ident:s,registry:c}),s&&s.scope&&typeof a>\"u\"&&(a=1);let p=await cN(c,{authType:a,allowOidc:n,configuration:e,ident:s});p&&(r={...r,authorization:p});try{return await nn.get(t.charAt(0)===\"/\"?`${c}${t}`:t,{configuration:e,headers:r,...f})}catch(h){throw await ag(h,{registry:c,configuration:e,headers:r}),h}}async function umt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=YD(s,{ident:n,registry:p});let C=await cN(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...kw(h)});try{return await nn.post(p+t,e,{configuration:s,headers:a,...E})}catch(S){if(!uN(S)||h)throw await ag(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await MY(S,{configuration:s});let P={...a,...kw(h)};try{return await nn.post(`${p}${t}`,e,{configuration:s,headers:P,...E})}catch(I){throw await ag(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function fmt(t,e,{attemptedAs:r,configuration:s,headers:a,ident:n,authType:c=3,allowOidc:f,registry:p,otp:h,...E}){p=YD(s,{ident:n,registry:p});let C=await cN(p,{authType:c,allowOidc:f,configuration:s,ident:n});C&&(a={...a,authorization:C}),h&&(a={...a,...kw(h)});try{return await nn.put(p+t,e,{configuration:s,headers:a,...E})}catch(S){if(!uN(S))throw await ag(S,{attemptedAs:r,registry:p,configuration:s,headers:a}),S;h=await MY(S,{configuration:s});let P={...a,...kw(h)};try{return await nn.put(`${p}${t}`,e,{configuration:s,headers:P,...E})}catch(I){throw await ag(I,{attemptedAs:r,registry:p,configuration:s,headers:a}),I}}}async function Amt(t,{attemptedAs:e,configuration:r,headers:s,ident:a,authType:n=3,allowOidc:c,registry:f,otp:p,...h}){f=YD(r,{ident:a,registry:f});let E=await cN(f,{authType:n,allowOidc:c,configuration:r,ident:a});E&&(s={...s,authorization:E}),p&&(s={...s,...kw(p)});try{return await nn.del(f+t,{configuration:r,headers:s,...h})}catch(C){if(!uN(C)||p)throw await ag(C,{attemptedAs:e,registry:f,configuration:r,headers:s}),C;p=await MY(C,{configuration:r});let S={...s,...kw(p)};try{return await nn.del(`${f}${t}`,{configuration:r,headers:S,...h})}catch(P){throw await ag(P,{attemptedAs:e,registry:f,configuration:r,headers:s}),P}}}function YD(t,{ident:e,registry:r}){if(typeof r>\"u\"&&e)return Pw(e.scope,{configuration:t});if(typeof r!=\"string\")throw new Error(\"Assertion failed: The registry should be a string\");return Jc(r)}async function cN(t,{authType:e=2,allowOidc:r=!1,configuration:s,ident:a}){let n=OY(t,{configuration:s,ident:a}),c=pmt(n,e);if(!c)return null;let f=await s.reduceHook(p=>p.getNpmAuthenticationHeader,void 0,t,{configuration:s,ident:a});if(f)return f;if(n.get(\"npmAuthToken\"))return`Bearer ${n.get(\"npmAuthToken\")}`;if(n.get(\"npmAuthIdent\")){let p=n.get(\"npmAuthIdent\");return p.includes(\":\")?`Basic ${Buffer.from(p).toString(\"base64\")}`:`Basic ${p}`}if(r&&a){let p=await gmt(t,{configuration:s,ident:a});if(p)return`Bearer ${p}`}if(c&&e!==1)throw new jt(33,\"No authentication configured for request\");return null}function pmt(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 hmt(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 MY(t,{configuration:e}){let r=t.originalError?.response.headers[\"npm-notice\"];if(r&&(await Ot.start({configuration:e,stdout:process.stdout,includeFooter:!1},async a=>{if(a.reportInfo(0,r.replace(/(https?:\\/\\/\\S+)/g,he.pretty(e,\"$1\",he.Type.URL))),!process.env.YARN_IS_TEST_ENV){let n=r.match(/open (https?:\\/\\/\\S+)/i);if(n&&Ui.openUrl){let{openNow:c}=await(0,LY.prompt)({type:\"confirm\",name:\"openNow\",message:\"Do you want to try to open this url now?\",required:!0,initial:!0,onCancel:()=>process.exit(130)});c&&(await Ui.openUrl(n[1])||(a.reportSeparator(),a.reportWarning(0,\"We failed to automatically open the url; you'll have to open it yourself in your browser of choice.\")))}}}),process.stdout.write(`\n`)),process.env.YARN_IS_TEST_ENV)return process.env.YARN_INJECT_NPM_2FA_TOKEN||\"\";let{otp:s}=await(0,LY.prompt)({type:\"password\",name:\"otp\",message:\"One-time password:\",required:!0,onCancel:()=>process.exit(130)});return process.stdout.write(`\n`),s}function uN(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 kw(t){return{\"npm-otp\":t}}async function gmt(t,{configuration:e,ident:r}){let s=null;if(process.env.GITLAB_CI)s=process.env.NPM_ID_TOKEN||null;else if(process.env.GITHUB_ACTIONS){if(!(process.env.ACTIONS_ID_TOKEN_REQUEST_URL&&process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN))return null;let a=`npm:${new URL(t).host.replace(\"registry.yarnpkg.com\",\"registry.npmjs.org\").replace(\"yarn.npmjs.org\",\"registry.npmjs.org\")}`,n=new URL(process.env.ACTIONS_ID_TOKEN_REQUEST_URL);n.searchParams.append(\"audience\",a),s=(await nn.get(n.href,{configuration:e,jsonResponse:!0,headers:{Authorization:`Bearer ${process.env.ACTIONS_ID_TOKEN_REQUEST_TOKEN}`}})).value}if(!s)return null;try{return(await nn.post(`${t}/-/npm/v1/oidc/token/exchange/package${WD(r)}`,null,{configuration:e,jsonResponse:!0,headers:{Authorization:`Bearer ${s}`}})).token||null}catch{}return null}var VD=class{supports(e,r){if(!e.reference.startsWith(oi))return!1;let{selector:s,params:a}=G.parseRange(e.reference);return!(!$Be.default.valid(s)||a===null||typeof a.__archiveUrl!=\"string\")}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.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:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let{params:s}=G.parseRange(e.reference);if(s===null||typeof s.__archiveUrl!=\"string\")throw new Error(\"Assertion failed: The archiveUrl querystring parameter should have been available\");let a=await Wm(s.__archiveUrl,{customErrorMessage:qm,configuration:r.project.configuration,ident:e});return await ps.convertToZip(a,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}};Ge();var JD=class{supportsDescriptor(e,r){return!(!e.range.startsWith(oi)||!G.tryParseDescriptor(e.range.slice(oi.length),!0))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){let s=r.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(oi.length),!0));return r.resolver.getResolutionDependencies(s,r)}async getCandidates(e,r,s){let a=s.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(oi.length),!0));return await s.resolver.getCandidates(a,r,s)}async getSatisfying(e,r,s,a){let n=a.project.configuration.normalizeDependency(G.parseDescriptor(e.range.slice(oi.length),!0));return a.resolver.getSatisfying(n,r,s,a)}resolve(e,r){throw new Error(\"Unreachable\")}};Ge();Ge();var eve=ut(Ai());var oh=class t{supports(e,r){if(!e.reference.startsWith(oi))return!1;let s=new URL(e.reference);return!(!eve.default.valid(s.pathname)||s.searchParams.has(\"__archiveUrl\"))}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.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:G.getIdentVendorPath(e),checksum:c}}async fetchFromNetwork(e,r){let s;try{s=await Wm(t.getLocatorUrl(e),{customErrorMessage:qm,configuration:r.project.configuration,ident:e})}catch{s=await Wm(t.getLocatorUrl(e).replace(/%2f/g,\"/\"),{customErrorMessage:qm,configuration:r.project.configuration,ident:e})}return await ps.convertToZip(s,{configuration:r.project.configuration,prefixPath:G.getIdentVendorPath(e),stripComponents:1})}static isConventionalTarballUrl(e,r,{configuration:s}){let a=Pw(e.scope,{configuration:s}),n=t.getLocatorUrl(e);return r=r.replace(/^https?:(\\/\\/(?:[^/]+\\.)?npmjs.org(?:$|\\/))/,\"https:$1\"),a=a.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r=r.replace(/^https:\\/\\/registry\\.npmjs\\.org($|\\/)/,\"https://registry.yarnpkg.com$1\"),r===a+n||r===a+n.replace(/%2f/g,\"/\")}static getLocatorUrl(e){let r=Fr.clean(e.reference.slice(oi.length));if(r===null)throw new jt(10,\"The npm semver resolver got selected, but the version isn't semver\");return`${WD(e)}/-/${e.name}-${r}.tgz`}};Ge();Ge();Ge();var UY=ut(Ai());var fN=G.makeIdent(null,\"node-gyp\"),dmt=/\\b(node-gyp|prebuild-install)\\b/,KD=class{supportsDescriptor(e,r){return e.range.startsWith(oi)?!!Fr.validRange(e.range.slice(oi.length)):!1}supportsLocator(e,r){if(!e.reference.startsWith(oi))return!1;let{selector:s}=G.parseRange(e.reference);return!!UY.default.valid(s)}shouldPersistResolution(e,r){return!0}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=Fr.validRange(e.range.slice(oi.length));if(a===null)throw new Error(`Expected a valid range, got ${e.range.slice(oi.length)}`);let n=await Qw(e,{cache:s.fetchOptions?.cache,project:s.project,version:UY.default.valid(a.raw)?a.raw:void 0}),c=je.mapAndFilter(Object.keys(n.versions),h=>{try{let E=new Fr.SemVer(h);if(a.test(E))return xw({configuration:s.project.configuration,ident:e,version:h,publishTimes:n.time})?E:je.mapAndFilter.skip}catch{}return je.mapAndFilter.skip}),f=c.filter(h=>!n.versions[h.raw].deprecated),p=f.length>0?f:c;return p.sort((h,E)=>-h.compare(E)),p.map(h=>{let E=G.makeLocator(e,`${oi}${h.raw}`),C=n.versions[h.raw].dist.tarball;return oh.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?E:G.bindLocator(E,{__archiveUrl:C})})}async getSatisfying(e,r,s,a){let n=Fr.validRange(e.range.slice(oi.length));if(n===null)throw new Error(`Expected a valid range, got ${e.range.slice(oi.length)}`);return{locators:je.mapAndFilter(s,p=>{if(p.identHash!==e.identHash)return je.mapAndFilter.skip;let h=G.tryParseRange(p.reference,{requireProtocol:oi});if(!h)return je.mapAndFilter.skip;let E=new Fr.SemVer(h.selector);return n.test(E)?{locator:p,version:E}:je.mapAndFilter.skip}).sort((p,h)=>-p.version.compare(h.version)).map(({locator:p})=>p),sorted:!0}}async resolve(e,r){let{selector:s}=G.parseRange(e.reference),a=Fr.clean(s);if(a===null)throw new jt(10,\"The npm semver resolver got selected, but the version isn't semver\");let n=await Qw(e,{cache:r.fetchOptions?.cache,project:r.project,version:a});if(!Object.hasOwn(n,\"versions\"))throw new jt(15,'Registry returned invalid data for - missing \"versions\" field');if(!Object.hasOwn(n.versions,a))throw new jt(16,`Registry failed to return reference \"${a}\"`);let c=new Ut;if(c.load(n.versions[a]),!c.dependencies.has(fN.identHash)&&!c.peerDependencies.has(fN.identHash)){for(let f of c.scripts.values())if(f.match(dmt)){c.dependencies.set(fN.identHash,G.makeDescriptor(fN,\"latest\"));break}}return{...e,version:a,languageName:\"node\",linkType:\"HARD\",conditions:c.getConditions(),dependencies:r.project.configuration.normalizeDependencyMap(c.dependencies),peerDependencies:c.peerDependencies,dependenciesMeta:c.dependenciesMeta,peerDependenciesMeta:c.peerDependenciesMeta,bin:c.bin}}};Ge();Ge();var AN=ut(Ai());var zD=class{supportsDescriptor(e,r){return!(!e.range.startsWith(oi)||!Mp.test(e.range.slice(oi.length)))}supportsLocator(e,r){return!1}shouldPersistResolution(e,r){throw new Error(\"Unreachable\")}bindDescriptor(e,r,s){return e}getResolutionDependencies(e,r){return{}}async getCandidates(e,r,s){let a=e.range.slice(oi.length),n=await Qw(e,{cache:s.fetchOptions?.cache,project:s.project});if(!Object.hasOwn(n,\"dist-tags\"))throw new jt(15,'Registry returned invalid data - missing \"dist-tags\" field');let c=n[\"dist-tags\"];if(!Object.hasOwn(c,a))throw new jt(16,`Registry failed to return tag \"${a}\"`);let f=Object.keys(n.versions),p=n.time,h=c[a];if(a===\"latest\"&&!xw({configuration:s.project.configuration,ident:e,version:h,publishTimes:p})){let S=h.includes(\"-\"),P=AN.default.rsort(f).find(I=>AN.default.lt(I,h)&&(S||!I.includes(\"-\"))&&xw({configuration:s.project.configuration,ident:e,version:I,publishTimes:p}));if(!P)throw new jt(16,`The version for tag \"${a}\" is quarantined, and no lower version is available`);h=P}let E=G.makeLocator(e,`${oi}${h}`),C=n.versions[h].dist.tarball;return oh.isConventionalTarballUrl(E,C,{configuration:s.project.configuration})?[E]:[G.bindLocator(E,{__archiveUrl:C})]}async getSatisfying(e,r,s,a){let n=[];for(let c of s){if(c.identHash!==e.identHash)continue;let f=G.tryParseRange(c.reference,{requireProtocol:oi});if(!(!f||!AN.default.valid(f.selector))){if(f.params?.__archiveUrl){let p=G.makeRange({protocol:oi,selector:f.selector,source:null,params:null}),[h]=await a.resolver.getCandidates(G.makeDescriptor(e,p),r,a);if(c.reference!==h.reference)continue}n.push(c)}}return{locators:n,sorted:!1}}async resolve(e,r){throw new Error(\"Unreachable\")}};var v1={};Vt(v1,{getGitHead:()=>abt,getPublishAccess:()=>qxe,getReadmeContent:()=>Wxe,makePublishBody:()=>obt});Ge();Ge();Dt();var bV={};Vt(bV,{PackCommand:()=>jw,default:()=>KEt,packUtils:()=>yA});Ge();Ge();Ge();Dt();Yt();var yA={};Vt(yA,{genPackList:()=>NN,genPackStream:()=>DV,genPackageManifest:()=>QSe,hasPackScripts:()=>vV,prepareForPack:()=>SV});Ge();Dt();var BV=ut(Go()),xSe=ut(SSe()),kSe=Ie(\"zlib\"),MEt=[\"/package.json\",\"/readme\",\"/readme.*\",\"/license\",\"/license.*\",\"/licence\",\"/licence.*\",\"/changelog\",\"/changelog.*\"],UEt=[\"/package.tgz\",\".github\",\".git\",\".hg\",\"node_modules\",\".npmignore\",\".gitignore\",\".#*\",\".DS_Store\"];async function vV(t){return!!(In.hasWorkspaceScript(t,\"prepack\")||In.hasWorkspaceScript(t,\"postpack\"))}async function SV(t,{report:e},r){await In.maybeExecuteWorkspaceLifecycleScript(t,\"prepack\",{report:e});try{let s=J.join(t.cwd,Ut.fileName);await ce.existsPromise(s)&&await t.manifest.loadFile(s,{baseFs:ce}),await r()}finally{await In.maybeExecuteWorkspaceLifecycleScript(t,\"postpack\",{report:e})}}async function DV(t,e){typeof e>\"u\"&&(e=await NN(t));let r=new Set;for(let n of t.manifest.publishConfig?.executableFiles??new Set)r.add(J.normalize(n));for(let n of t.manifest.bin.values())r.add(J.normalize(n));let s=xSe.default.pack();process.nextTick(async()=>{for(let n of e){let c=J.normalize(n),f=J.resolve(t.cwd,c),p=J.join(\"package\",c),h=await ce.lstatPromise(f),E={name:p,mtime:new Date(fi.SAFE_TIME*1e3)},C=r.has(c)?493:420,S,P,I=new Promise((N,U)=>{S=N,P=U}),R=N=>{N?P(N):S()};if(h.isFile()){let N;c===\"package.json\"?N=Buffer.from(JSON.stringify(await QSe(t),null,2)):N=await ce.readFilePromise(f),s.entry({...E,mode:C,type:\"file\"},N,R)}else h.isSymbolicLink()?s.entry({...E,mode:C,type:\"symlink\",linkname:await ce.readlinkPromise(f)},R):R(new Error(`Unsupported file type ${h.mode} for ${fe.fromPortablePath(c)}`));await I}s.finalize()});let a=(0,kSe.createGzip)();return s.pipe(a),a}async function QSe(t){let e=JSON.parse(JSON.stringify(t.manifest.raw));return await t.project.configuration.triggerHook(r=>r.beforeWorkspacePacking,t,e),e}async function NN(t){let e=t.project,r=e.configuration,s={accept:[],reject:[]};for(let C of UEt)s.reject.push(C);for(let C of MEt)s.accept.push(C);s.reject.push(r.get(\"rcFilename\"));let a=C=>{if(C===null||!C.startsWith(`${t.cwd}/`))return;let S=J.relative(t.cwd,C),P=J.resolve(vt.root,S);s.reject.push(P)};a(J.resolve(e.cwd,Er.lockfile)),a(r.get(\"cacheFolder\")),a(r.get(\"globalFolder\")),a(r.get(\"installStatePath\")),a(r.get(\"virtualFolder\")),a(r.get(\"yarnPath\")),await r.triggerHook(C=>C.populateYarnPaths,e,C=>{a(C)});for(let C of e.workspaces){let S=J.relative(t.cwd,C.cwd);S!==\"\"&&!S.match(/^(\\.\\.)?\\//)&&s.reject.push(`/${S}`)}let n={accept:[],reject:[]},c=t.manifest.publishConfig?.main??t.manifest.main,f=t.manifest.publishConfig?.module??t.manifest.module,p=t.manifest.publishConfig?.browser??t.manifest.browser,h=t.manifest.publishConfig?.bin??t.manifest.bin;c!=null&&n.accept.push(J.resolve(vt.root,c)),f!=null&&n.accept.push(J.resolve(vt.root,f)),typeof p==\"string\"&&n.accept.push(J.resolve(vt.root,p));for(let C of h.values())n.accept.push(J.resolve(vt.root,C));if(p instanceof Map)for(let[C,S]of p.entries())n.accept.push(J.resolve(vt.root,C)),typeof S==\"string\"&&n.accept.push(J.resolve(vt.root,S));let E=t.manifest.files!==null;if(E){n.reject.push(\"/*\");for(let C of t.manifest.files)TSe(n.accept,C,{cwd:vt.root})}return await _Et(t.cwd,{hasExplicitFileList:E,globalList:s,ignoreList:n})}async function _Et(t,{hasExplicitFileList:e,globalList:r,ignoreList:s}){let a=[],n=new Hf(t),c=[[vt.root,[s]]];for(;c.length>0;){let[f,p]=c.pop(),h=await n.lstatPromise(f);if(!bSe(f,{globalList:r,ignoreLists:h.isDirectory()?null:p}))if(h.isDirectory()){let E=await n.readdirPromise(f),C=!1,S=!1;if(!e||f!==vt.root)for(let R of E)C=C||R===\".gitignore\",S=S||R===\".npmignore\";let P=S?await DSe(n,f,\".npmignore\"):C?await DSe(n,f,\".gitignore\"):null,I=P!==null?[P].concat(p):p;bSe(f,{globalList:r,ignoreLists:p})&&(I=[...p,{accept:[],reject:[\"**/*\"]}]);for(let R of E)c.push([J.resolve(f,R),I])}else(h.isFile()||h.isSymbolicLink())&&a.push(J.relative(vt.root,f))}return a.sort()}async function DSe(t,e,r){let s={accept:[],reject:[]},a=await t.readFilePromise(J.join(e,r),\"utf8\");for(let n of a.split(/\\n/g))TSe(s.reject,n,{cwd:e});return s}function HEt(t,{cwd:e}){let r=t[0]===\"!\";return r&&(t=t.slice(1)),t.match(/\\.{0,1}\\//)&&(t=J.resolve(e,t)),r&&(t=`!${t}`),t}function TSe(t,e,{cwd:r}){let s=e.trim();s===\"\"||s[0]===\"#\"||t.push(HEt(s,{cwd:r}))}function bSe(t,{globalList:e,ignoreLists:r}){let s=FN(t,e.accept);if(s!==0)return s===2;let a=FN(t,e.reject);if(a!==0)return a===1;if(r!==null)for(let n of r){let c=FN(t,n.accept);if(c!==0)return c===2;let f=FN(t,n.reject);if(f!==0)return f===1}return!1}function FN(t,e){let r=e,s=[];for(let a=0;a<e.length;++a)e[a][0]!==\"!\"?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),s.push(e[a].slice(1)));return PSe(t,s)?2:PSe(t,r)?1:0}function PSe(t,e){let r=e,s=[];for(let a=0;a<e.length;++a)e[a].includes(\"/\")?r!==e&&r.push(e[a]):(r===e&&(r=e.slice(0,a)),s.push(e[a]));return!!(BV.default.isMatch(t,r,{dot:!0,nocase:!0})||BV.default.isMatch(t,s,{dot:!0,basename:!0,nocase:!0}))}var jw=class extends ft{constructor(){super(...arguments);this.installIfNeeded=ge.Boolean(\"--install-if-needed\",!1,{description:\"Run a preliminary `yarn install` if the package contains build scripts\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the file paths without actually generating the package archive\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.out=ge.String(\"-o,--out\",{description:\"Create the archive at the specified path\"});this.filename=ge.String(\"--filename\",{hidden:!0})}static{this.paths=[[\"pack\"]]}static{this.usage=ot.Usage({description:\"generate a tarball from the active workspace\",details:\"\\n      This command will turn the active workspace into a compressed archive suitable for publishing. The archive will by default be stored at the root of the workspace (`package.tgz`).\\n\\n      If the `-o,--out` is set the archive will be created at the specified path. The `%s` and `%v` variables can be used within the path and will be respectively replaced by the package name and version.\\n    \",examples:[[\"Create an archive from the active workspace\",\"yarn pack\"],[\"List the files that would be made part of the workspace's archive\",\"yarn pack --dry-run\"],[\"Name and output the archive in a dedicated folder\",\"yarn pack --out /artifacts/%s-%v.tgz\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await vV(a)&&(this.installIfNeeded?await s.install({cache:await Kr.find(r),report:new ki}):await s.restoreInstallState());let n=this.out??this.filename,c=typeof n<\"u\"?J.resolve(this.context.cwd,jEt(n,{workspace:a})):J.resolve(a.cwd,\"package.tgz\");return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async p=>{await SV(a,{report:p},async()=>{p.reportJson({base:fe.fromPortablePath(a.cwd)});let h=await NN(a);for(let E of h)p.reportInfo(null,fe.fromPortablePath(E)),p.reportJson({location:fe.fromPortablePath(E)});if(!this.dryRun){let E=await DV(a,h);await ce.mkdirPromise(J.dirname(c),{recursive:!0});let C=ce.createWriteStream(c);E.pipe(C),await new Promise(S=>{C.on(\"finish\",S)})}}),this.dryRun||(p.reportInfo(0,`Package archive generated in ${he.pretty(r,c,he.Type.PATH)}`),p.reportJson({output:fe.fromPortablePath(c)}))})).exitCode()}};function jEt(t,{workspace:e}){let r=t.replace(\"%s\",GEt(e)).replace(\"%v\",qEt(e));return fe.toPortablePath(r)}function GEt(t){return t.manifest.name!==null?G.slugifyIdent(t.manifest.name):\"package\"}function qEt(t){return t.manifest.version!==null?t.manifest.version:\"unknown\"}var WEt=[\"dependencies\",\"devDependencies\",\"peerDependencies\"],YEt=\"workspace:\",VEt=(t,e)=>{e.publishConfig&&(e.publishConfig.type&&(e.type=e.publishConfig.type),e.publishConfig.main&&(e.main=e.publishConfig.main),e.publishConfig.browser&&(e.browser=e.publishConfig.browser),e.publishConfig.module&&(e.module=e.publishConfig.module),e.publishConfig.exports&&(e.exports=e.publishConfig.exports),e.publishConfig.imports&&(e.imports=e.publishConfig.imports),e.publishConfig.bin&&(e.bin=e.publishConfig.bin));let r=t.project;for(let s of WEt)for(let a of t.manifest.getForScope(s).values()){let n=r.tryWorkspaceByDescriptor(a),c=G.parseRange(a.range);if(c.protocol===YEt)if(n===null){if(r.tryWorkspaceByIdent(a)===null)throw new jt(21,`${G.prettyDescriptor(r.configuration,a)}: No local workspace found for this range`)}else{let f;G.areDescriptorsEqual(a,n.anchoredDescriptor)||c.selector===\"*\"?f=n.manifest.version??\"0.0.0\":c.selector===\"~\"||c.selector===\"^\"?f=`${c.selector}${n.manifest.version??\"0.0.0\"}`:f=c.selector;let p=s===\"dependencies\"?G.makeDescriptor(a,\"unknown\"):null,h=p!==null&&t.manifest.ensureDependencyMeta(p).optional?\"optionalDependencies\":s;e[h][G.stringifyIdent(a)]=f}}},JEt={hooks:{beforeWorkspacePacking:VEt},commands:[jw]},KEt=JEt;var Gxe=ut(HSe());Ge();var Hxe=ut(_xe()),{env:Bt}=process,XDt=\"application/vnd.in-toto+json\",ZDt=\"https://in-toto.io/Statement/v0.1\",$Dt=\"https://in-toto.io/Statement/v1\",ebt=\"https://slsa.dev/provenance/v0.2\",tbt=\"https://slsa.dev/provenance/v1\",rbt=\"https://github.com/actions/runner\",nbt=\"https://slsa-framework.github.io/github-actions-buildtypes/workflow/v1\",ibt=\"https://github.com/npm/cli/gitlab\",sbt=\"v0alpha1\",jxe=async(t,e)=>{let r;if(Bt.GITHUB_ACTIONS){if(!Bt.ACTIONS_ID_TOKEN_REQUEST_URL)throw new jt(91,'Provenance generation in GitHub Actions requires \"write\" access to the \"id-token\" permission');let s=(Bt.GITHUB_WORKFLOW_REF||\"\").replace(`${Bt.GITHUB_REPOSITORY}/`,\"\"),a=s.indexOf(\"@\"),n=s.slice(0,a),c=s.slice(a+1);r={_type:$Dt,subject:t,predicateType:tbt,predicate:{buildDefinition:{buildType:nbt,externalParameters:{workflow:{ref:c,repository:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}`,path:n}},internalParameters:{github:{event_name:Bt.GITHUB_EVENT_NAME,repository_id:Bt.GITHUB_REPOSITORY_ID,repository_owner_id:Bt.GITHUB_REPOSITORY_OWNER_ID}},resolvedDependencies:[{uri:`git+${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}@${Bt.GITHUB_REF}`,digest:{gitCommit:Bt.GITHUB_SHA}}]},runDetails:{builder:{id:`${rbt}/${Bt.RUNNER_ENVIRONMENT}`},metadata:{invocationId:`${Bt.GITHUB_SERVER_URL}/${Bt.GITHUB_REPOSITORY}/actions/runs/${Bt.GITHUB_RUN_ID}/attempts/${Bt.GITHUB_RUN_ATTEMPT}`}}}}}else if(Bt.GITLAB_CI){if(!Bt.SIGSTORE_ID_TOKEN)throw new jt(91,`Provenance generation in GitLab CI requires \"SIGSTORE_ID_TOKEN\" with \"sigstore\" audience to be present in \"id_tokens\". For more info see:\nhttps://docs.gitlab.com/ee/ci/secrets/id_token_authentication.html`);r={_type:ZDt,subject:t,predicateType:ebt,predicate:{buildType:`${ibt}/${sbt}`,builder:{id:`${Bt.CI_PROJECT_URL}/-/runners/${Bt.CI_RUNNER_ID}`},invocation:{configSource:{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA},entryPoint:Bt.CI_JOB_NAME},parameters:{CI:Bt.CI,CI_API_GRAPHQL_URL:Bt.CI_API_GRAPHQL_URL,CI_API_V4_URL:Bt.CI_API_V4_URL,CI_BUILD_BEFORE_SHA:Bt.CI_BUILD_BEFORE_SHA,CI_BUILD_ID:Bt.CI_BUILD_ID,CI_BUILD_NAME:Bt.CI_BUILD_NAME,CI_BUILD_REF:Bt.CI_BUILD_REF,CI_BUILD_REF_NAME:Bt.CI_BUILD_REF_NAME,CI_BUILD_REF_SLUG:Bt.CI_BUILD_REF_SLUG,CI_BUILD_STAGE:Bt.CI_BUILD_STAGE,CI_COMMIT_BEFORE_SHA:Bt.CI_COMMIT_BEFORE_SHA,CI_COMMIT_BRANCH:Bt.CI_COMMIT_BRANCH,CI_COMMIT_REF_NAME:Bt.CI_COMMIT_REF_NAME,CI_COMMIT_REF_PROTECTED:Bt.CI_COMMIT_REF_PROTECTED,CI_COMMIT_REF_SLUG:Bt.CI_COMMIT_REF_SLUG,CI_COMMIT_SHA:Bt.CI_COMMIT_SHA,CI_COMMIT_SHORT_SHA:Bt.CI_COMMIT_SHORT_SHA,CI_COMMIT_TIMESTAMP:Bt.CI_COMMIT_TIMESTAMP,CI_COMMIT_TITLE:Bt.CI_COMMIT_TITLE,CI_CONFIG_PATH:Bt.CI_CONFIG_PATH,CI_DEFAULT_BRANCH:Bt.CI_DEFAULT_BRANCH,CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_DIRECT_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX:Bt.CI_DEPENDENCY_PROXY_GROUP_IMAGE_PREFIX,CI_DEPENDENCY_PROXY_SERVER:Bt.CI_DEPENDENCY_PROXY_SERVER,CI_DEPENDENCY_PROXY_USER:Bt.CI_DEPENDENCY_PROXY_USER,CI_JOB_ID:Bt.CI_JOB_ID,CI_JOB_NAME:Bt.CI_JOB_NAME,CI_JOB_NAME_SLUG:Bt.CI_JOB_NAME_SLUG,CI_JOB_STAGE:Bt.CI_JOB_STAGE,CI_JOB_STARTED_AT:Bt.CI_JOB_STARTED_AT,CI_JOB_URL:Bt.CI_JOB_URL,CI_NODE_TOTAL:Bt.CI_NODE_TOTAL,CI_PAGES_DOMAIN:Bt.CI_PAGES_DOMAIN,CI_PAGES_URL:Bt.CI_PAGES_URL,CI_PIPELINE_CREATED_AT:Bt.CI_PIPELINE_CREATED_AT,CI_PIPELINE_ID:Bt.CI_PIPELINE_ID,CI_PIPELINE_IID:Bt.CI_PIPELINE_IID,CI_PIPELINE_SOURCE:Bt.CI_PIPELINE_SOURCE,CI_PIPELINE_URL:Bt.CI_PIPELINE_URL,CI_PROJECT_CLASSIFICATION_LABEL:Bt.CI_PROJECT_CLASSIFICATION_LABEL,CI_PROJECT_DESCRIPTION:Bt.CI_PROJECT_DESCRIPTION,CI_PROJECT_ID:Bt.CI_PROJECT_ID,CI_PROJECT_NAME:Bt.CI_PROJECT_NAME,CI_PROJECT_NAMESPACE:Bt.CI_PROJECT_NAMESPACE,CI_PROJECT_NAMESPACE_ID:Bt.CI_PROJECT_NAMESPACE_ID,CI_PROJECT_PATH:Bt.CI_PROJECT_PATH,CI_PROJECT_PATH_SLUG:Bt.CI_PROJECT_PATH_SLUG,CI_PROJECT_REPOSITORY_LANGUAGES:Bt.CI_PROJECT_REPOSITORY_LANGUAGES,CI_PROJECT_ROOT_NAMESPACE:Bt.CI_PROJECT_ROOT_NAMESPACE,CI_PROJECT_TITLE:Bt.CI_PROJECT_TITLE,CI_PROJECT_URL:Bt.CI_PROJECT_URL,CI_PROJECT_VISIBILITY:Bt.CI_PROJECT_VISIBILITY,CI_REGISTRY:Bt.CI_REGISTRY,CI_REGISTRY_IMAGE:Bt.CI_REGISTRY_IMAGE,CI_REGISTRY_USER:Bt.CI_REGISTRY_USER,CI_RUNNER_DESCRIPTION:Bt.CI_RUNNER_DESCRIPTION,CI_RUNNER_ID:Bt.CI_RUNNER_ID,CI_RUNNER_TAGS:Bt.CI_RUNNER_TAGS,CI_SERVER_HOST:Bt.CI_SERVER_HOST,CI_SERVER_NAME:Bt.CI_SERVER_NAME,CI_SERVER_PORT:Bt.CI_SERVER_PORT,CI_SERVER_PROTOCOL:Bt.CI_SERVER_PROTOCOL,CI_SERVER_REVISION:Bt.CI_SERVER_REVISION,CI_SERVER_SHELL_SSH_HOST:Bt.CI_SERVER_SHELL_SSH_HOST,CI_SERVER_SHELL_SSH_PORT:Bt.CI_SERVER_SHELL_SSH_PORT,CI_SERVER_URL:Bt.CI_SERVER_URL,CI_SERVER_VERSION:Bt.CI_SERVER_VERSION,CI_SERVER_VERSION_MAJOR:Bt.CI_SERVER_VERSION_MAJOR,CI_SERVER_VERSION_MINOR:Bt.CI_SERVER_VERSION_MINOR,CI_SERVER_VERSION_PATCH:Bt.CI_SERVER_VERSION_PATCH,CI_TEMPLATE_REGISTRY_HOST:Bt.CI_TEMPLATE_REGISTRY_HOST,GITLAB_CI:Bt.GITLAB_CI,GITLAB_FEATURES:Bt.GITLAB_FEATURES,GITLAB_USER_ID:Bt.GITLAB_USER_ID,GITLAB_USER_LOGIN:Bt.GITLAB_USER_LOGIN,RUNNER_GENERATE_ARTIFACTS_METADATA:Bt.RUNNER_GENERATE_ARTIFACTS_METADATA},environment:{name:Bt.CI_RUNNER_DESCRIPTION,architecture:Bt.CI_RUNNER_EXECUTABLE_ARCH,server:Bt.CI_SERVER_URL,project:Bt.CI_PROJECT_PATH,job:{id:Bt.CI_JOB_ID},pipeline:{id:Bt.CI_PIPELINE_ID,ref:Bt.CI_CONFIG_PATH}}},metadata:{buildInvocationId:`${Bt.CI_JOB_URL}`,completeness:{parameters:!0,environment:!0,materials:!1},reproducible:!1},materials:[{uri:`git+${Bt.CI_PROJECT_URL}`,digest:{sha1:Bt.CI_COMMIT_SHA}}]}}}else throw new jt(91,\"Provenance generation is only supported in GitHub Actions and GitLab CI\");return Hxe.attest(Buffer.from(JSON.stringify(r)),XDt,e)};async function obt(t,e,{access:r,tag:s,registry:a,gitHead:n,provenance:c}){let f=t.manifest.name,p=t.manifest.version,h=G.stringifyIdent(f),E=Gxe.default.fromData(e,{algorithms:[\"sha1\",\"sha512\"]}),C=r??qxe(t,f),S=await Wxe(t),P=await yA.genPackageManifest(t),I=`${h}-${p}.tgz`,R=new URL(`${Jc(a)}/${h}/-/${I}`),N={[I]:{content_type:\"application/octet-stream\",data:e.toString(\"base64\"),length:e.length}};if(c){let U={name:`pkg:npm/${h.replace(/^@/,\"%40\")}@${p}`,digest:{sha512:E.sha512[0].hexDigest()}},W=await jxe([U]),ee=JSON.stringify(W);N[`${h}-${p}.sigstore`]={content_type:W.mediaType,data:ee,length:ee.length}}return{_id:h,_attachments:N,name:h,access:C,\"dist-tags\":{[s]:p},versions:{[p]:{...P,_id:`${h}@${p}`,name:h,version:p,gitHead:n,dist:{shasum:E.sha1[0].hexDigest(),integrity:E.sha512[0].toString(),tarball:R.toString()}}},readme:S}}async function abt(t){try{let{stdout:e}=await qr.execvp(\"git\",[\"rev-parse\",\"--revs-only\",\"HEAD\"],{cwd:t});return e.trim()===\"\"?void 0:e.trim()}catch{return}}function qxe(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 Wxe(t){let e=fe.toPortablePath(`${t.cwd}/README.md`),r=t.manifest.name,a=`# ${G.stringifyIdent(r)}\n`;try{a=await ce.readFilePromise(e,\"utf8\")}catch(n){if(n.code===\"ENOENT\")return a;throw n}return a}var RK={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}},Yxe={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\"}},lbt={npmMinimalAgeGate:{description:\"Minimum age of a package version according to the publish date on the npm registry to be considered for installation\",type:\"DURATION\",unit:\"m\",default:\"0m\"},npmPreapprovedPackages:{description:\"Array of package descriptors or package name glob patterns to exclude from the minimum release age check\",type:\"STRING\",isArray:!0,default:[]}},cbt={configuration:{...RK,...Yxe,...lbt,npmScopes:{description:\"Settings per package scope\",type:\"MAP\",valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...RK,...Yxe}}},npmRegistries:{description:\"Settings per registry\",type:\"MAP\",normalizeKeys:Jc,valueDefinition:{description:\"\",type:\"SHAPE\",properties:{...RK}}}},fetchers:[VD,oh],resolvers:[JD,KD,zD]},ubt=cbt;var qK={};Vt(qK,{NpmAuditCommand:()=>D1,NpmInfoCommand:()=>b1,NpmLoginCommand:()=>P1,NpmLogoutCommand:()=>k1,NpmPublishCommand:()=>Q1,NpmTagAddCommand:()=>R1,NpmTagListCommand:()=>T1,NpmTagRemoveCommand:()=>F1,NpmWhoamiCommand:()=>N1,default:()=>wbt,npmAuditTypes:()=>zb,npmAuditUtils:()=>kL});Ge();Ge();Yt();var UK=ut(Go());Ul();var zb={};Vt(zb,{Environment:()=>Jb,Severity:()=>Kb});var Jb=(s=>(s.All=\"all\",s.Production=\"production\",s.Development=\"development\",s))(Jb||{}),Kb=(n=>(n.Info=\"info\",n.Low=\"low\",n.Moderate=\"moderate\",n.High=\"high\",n.Critical=\"critical\",n))(Kb||{});var kL={};Vt(kL,{allSeverities:()=>S1,getPackages:()=>MK,getReportTree:()=>OK,getSeverityInclusions:()=>NK,getTopLevelDependencies:()=>LK});Ge();var Vxe=ut(Ai());var S1=[\"info\",\"low\",\"moderate\",\"high\",\"critical\"];function NK(t){if(typeof t>\"u\")return new Set(S1);let e=S1.indexOf(t),r=S1.slice(e);return new Set(r)}function OK(t){let e={},r={children:e};for(let[s,a]of je.sortMap(Object.entries(t),n=>n[0]))for(let n of je.sortMap(a,c=>`${c.id}`))e[`${s}/${n.id}`]={value:he.tuple(he.Type.IDENT,G.parseIdent(s)),children:{ID:typeof n.id<\"u\"&&{label:\"ID\",value:he.tuple(he.Type.ID,n.id)},Issue:{label:\"Issue\",value:he.tuple(he.Type.NO_HINT,n.title)},URL:typeof n.url<\"u\"&&{label:\"URL\",value:he.tuple(he.Type.URL,n.url)},Severity:{label:\"Severity\",value:he.tuple(he.Type.NO_HINT,n.severity)},\"Vulnerable Versions\":{label:\"Vulnerable Versions\",value:he.tuple(he.Type.RANGE,n.vulnerable_versions)},\"Tree Versions\":{label:\"Tree Versions\",children:[...n.versions].sort(Vxe.default.compare).map(c=>({value:he.tuple(he.Type.REFERENCE,c)}))},Dependents:{label:\"Dependents\",children:je.sortMap(n.dependents,c=>G.stringifyLocator(c)).map(c=>({value:he.tuple(he.Type.LOCATOR,c)}))}}};return r}function LK(t,e,{all:r,environment:s}){let a=[],n=r?t.workspaces:[e],c=[\"all\",\"production\"].includes(s),f=[\"all\",\"development\"].includes(s);for(let p of n)for(let h of p.anchoredPackage.dependencies.values())(p.manifest.devDependencies.has(h.identHash)?!f:!c)||a.push({workspace:p,dependency:h});return a}function MK(t,e,{recursive:r}){let s=new Map,a=new Set,n=[],c=(f,p)=>{let h=t.storedResolutions.get(p.descriptorHash);if(typeof h>\"u\")throw new Error(\"Assertion failed: The resolution should have been registered\");if(!a.has(h))a.add(h);else return;let E=t.storedPackages.get(h);if(typeof E>\"u\")throw new Error(\"Assertion failed: The package should have been registered\");if(G.ensureDevirtualizedLocator(E).reference.startsWith(\"npm:\")&&E.version!==null){let S=G.stringifyIdent(E),P=je.getMapWithDefault(s,S);je.getArrayWithDefault(P,E.version).push(f)}if(r)for(let S of E.dependencies.values())n.push([E,S])};for(let{workspace:f,dependency:p}of e)n.push([f.anchoredLocator,p]);for(;n.length>0;){let[f,p]=n.shift();c(f,p)}return s}var D1=class extends ft{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:fo(Jb)});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:fo(Kb)});this.excludes=ge.Array(\"--exclude\",[],{description:\"Array of glob patterns of packages to exclude from audit\"});this.ignores=ge.Array(\"--ignore\",[],{description:\"Array of glob patterns of advisory ID's to ignore in the audit report\"})}static{this.paths=[[\"npm\",\"audit\"]]}static{this.usage=ot.Usage({description:\"perform a vulnerability audit against the installed packages\",details:`\n      This command checks for known security reports on the packages you use. The reports are by default extracted from the npm registry, and may or may not be relevant to your actual program (not all vulnerabilities affect all code paths).\n\n      For consistency with our other commands the default is to only check the direct dependencies for the active workspace. To extend this search to all workspaces, use \\`-A,--all\\`. To extend this search to both direct and transitive dependencies, use \\`-R,--recursive\\`.\n\n      Applying the \\`--severity\\` flag will limit the audit table to vulnerabilities of the corresponding severity and above. Valid values are ${S1.map(r=>`\\`${r}\\``).join(\", \")}.\n\n      If the \\`--json\\` flag is set, Yarn will print the output exactly as received from the registry. Regardless of this flag, the process will exit with a non-zero exit code if a report is found for the selected packages.\n\n      If certain packages produce false positives for a particular environment, the \\`--exclude\\` flag can be used to exclude any number of packages from the audit. This can also be set in the configuration file with the \\`npmAuditExcludePackages\\` option.\n\n      If particular advisories are needed to be ignored, the \\`--ignore\\` flag can be used with Advisory ID's to ignore any number of advisories in the audit report. This can also be set in the configuration file with the \\`npmAuditIgnoreAdvisories\\` option.\n\n      To understand the dependency tree requiring vulnerable packages, check the raw report with the \\`--json\\` flag or use \\`yarn why package\\` to get more information as to who depends on them.\n    `,examples:[[\"Checks for known security issues with the installed packages. The output is a list of known issues.\",\"yarn npm audit\"],[\"Audit dependencies in all workspaces\",\"yarn npm audit --all\"],[\"Limit auditing to `dependencies` (excludes `devDependencies`)\",\"yarn npm audit --environment production\"],[\"Show audit report as valid JSON\",\"yarn npm audit --json\"],[\"Audit all direct and transitive dependencies\",\"yarn npm audit --recursive\"],[\"Output moderate (or more severe) vulnerabilities\",\"yarn npm audit --severity moderate\"],[\"Exclude certain packages\",\"yarn npm audit --exclude package1 --exclude package2\"],[\"Ignore specific advisories\",\"yarn npm audit --ignore 1234567 --ignore 7654321\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=LK(s,a,{all:this.all,environment:this.environment}),c=MK(s,n,{recursive:this.recursive}),f=Array.from(new Set([...r.get(\"npmAuditExcludePackages\"),...this.excludes])),p=Object.create(null);for(let[N,U]of c)f.some(W=>UK.default.isMatch(N,W))||(p[N]=[...U.keys()]);let h=hi.getAuditRegistry({configuration:r}),E,C=await lA.start({configuration:r,stdout:this.context.stdout},async()=>{let N=en.post(\"/-/npm/v1/security/advisories/bulk\",p,{authType:en.AuthType.BEST_EFFORT,configuration:r,jsonResponse:!0,registry:h}),U=this.noDeprecations?[]:await Promise.all(Array.from(Object.entries(p),async([ee,ie])=>{let ue=await en.getPackageMetadata(G.parseIdent(ee),{project:s});return je.mapAndFilter(ie,le=>{let{deprecated:me}=ue.versions[le];return me?[ee,le,me]:je.mapAndFilter.skip})})),W=await N;for(let[ee,ie,ue]of U.flat(1))Object.hasOwn(W,ee)&&W[ee].some(le=>Fr.satisfiesWithPrereleases(ie,le.vulnerable_versions))||(W[ee]??=[],W[ee].push({id:`${ee} (deprecation)`,title:(typeof ue==\"string\"?ue:\"\").trim()||\"This package has been deprecated.\",severity:\"moderate\",vulnerable_versions:ie}));E=W});if(C.hasErrors())return C.exitCode();let S=NK(this.severity),P=Array.from(new Set([...r.get(\"npmAuditIgnoreAdvisories\"),...this.ignores])),I=Object.create(null);for(let[N,U]of Object.entries(E)){let W=U.filter(ee=>!UK.default.isMatch(`${ee.id}`,P)&&S.has(ee.severity));W.length>0&&(I[N]=W.map(ee=>{let ie=c.get(N);if(typeof ie>\"u\")throw new Error(\"Assertion failed: Expected the registry to only return packages that were requested\");let ue=[...ie.keys()].filter(me=>Fr.satisfiesWithPrereleases(me,ee.vulnerable_versions)),le=new Map;for(let me of ue)for(let pe of ie.get(me))le.set(pe.locatorHash,pe);return{...ee,versions:ue,dependents:[...le.values()]}}))}let R=Object.keys(I).length>0;return R?(xs.emitTree(OK(I),{configuration:r,json:this.json,stdout:this.context.stdout,separators:2}),1):(await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async N=>{N.reportInfo(1,\"No audit suggestions\")}),R?1:0)}};Ge();Ge();Dt();Yt();var _K=ut(Ai()),HK=Ie(\"util\"),b1=class extends ft{constructor(){super(...arguments);this.fields=ge.String(\"-f,--fields\",{description:\"A comma-separated list of manifest fields that should be displayed\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.packages=ge.Rest()}static{this.paths=[[\"npm\",\"info\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"show information about a package\",details:\"\\n      This command fetches information about a package from the npm registry and prints it in a tree format.\\n\\n      The package does not have to be installed locally, but needs to have been published (in particular, local changes will be ignored even for workspaces).\\n\\n      Append `@<range>` to the package argument to provide information specific to the latest version that satisfies the range or to the corresponding tagged version. If the range is invalid or if there is no version satisfying the range, the command will print a warning and fall back to the latest version.\\n\\n      If the `-f,--fields` option is set, it's a comma-separated list of fields which will be used to only display part of the package information.\\n\\n      By default, this command won't return the `dist`, `readme`, and `users` fields, since they are often very long. To explicitly request those fields, explicitly list them with the `--fields` flag or request the output in JSON mode.\\n    \",examples:[[\"Show all available information about react (except the `dist`, `readme`, and `users` fields)\",\"yarn npm info react\"],[\"Show all available information about react as valid JSON (including the `dist`, `readme`, and `users` fields)\",\"yarn npm info react --json\"],[\"Show all available information about react@16.12.0\",\"yarn npm info react@16.12.0\"],[\"Show all available information about react@next\",\"yarn npm info react@next\"],[\"Show the description of react\",\"yarn npm info react --fields description\"],[\"Show all available versions of react\",\"yarn npm info react --fields versions\"],[\"Show the readme of react\",\"yarn npm info react --fields readme\"],[\"Show a few fields of react\",\"yarn npm info react --fields homepage,repository\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),a=typeof this.fields<\"u\"?new Set([\"name\",...this.fields.split(/\\s*,\\s*/)]):null,n=[],c=!1,f=await Ot.start({configuration:r,includeFooter:!1,json:this.json,stdout:this.context.stdout},async p=>{for(let h of this.packages){let E;if(h===\".\"){let ie=s.topLevelWorkspace;if(!ie.manifest.name)throw new nt(`Missing ${he.pretty(r,\"name\",he.Type.CODE)} field in ${fe.fromPortablePath(J.join(ie.cwd,Er.manifest))}`);E=G.makeDescriptor(ie.manifest.name,\"unknown\")}else E=G.parseDescriptor(h);let C=en.getIdentUrl(E),S=jK(await en.get(C,{configuration:r,ident:E,jsonResponse:!0,customErrorMessage:en.customPackageError})),P=Object.keys(S.versions).sort(_K.default.compareLoose),R=S[\"dist-tags\"].latest||P[P.length-1],N=Fr.validRange(E.range);if(N){let ie=_K.default.maxSatisfying(P,N);ie!==null?R=ie:(p.reportWarning(0,`Unmet range ${G.prettyRange(r,E.range)}; falling back to the latest version`),c=!0)}else Object.hasOwn(S[\"dist-tags\"],E.range)?R=S[\"dist-tags\"][E.range]:E.range!==\"unknown\"&&(p.reportWarning(0,`Unknown tag ${G.prettyRange(r,E.range)}; falling back to the latest version`),c=!0);let U=S.versions[R],W={...S,...U,version:R,versions:P},ee;if(a!==null){ee={};for(let ie of a){let ue=W[ie];if(typeof ue<\"u\")ee[ie]=ue;else{p.reportWarning(1,`The ${he.pretty(r,ie,he.Type.CODE)} field doesn't exist inside ${G.prettyIdent(r,E)}'s information`),c=!0;continue}}}else this.json||(delete W.dist,delete W.readme,delete W.users),ee=W;p.reportJson(ee),this.json||n.push(ee)}});HK.inspect.styles.name=\"cyan\";for(let p of n)(p!==n[0]||c)&&this.context.stdout.write(`\n`),this.context.stdout.write(`${(0,HK.inspect)(p,{depth:1/0,colors:!0,compact:!1})}\n`);return f.exitCode()}};function jK(t){if(Array.isArray(t)){let e=[];for(let r of t)r=jK(r),r&&e.push(r);return e}else if(typeof t==\"object\"&&t!==null){let e={};for(let r of Object.keys(t)){if(r.startsWith(\"_\"))continue;let s=jK(t[r]);s&&(e[r]=s)}return e}else return t||null}Ge();Ge();Yt();var GK=ut(Vv()),P1=class extends ft{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\"});this.webLogin=ge.Boolean(\"--web-login\",{description:\"Enable web login\"})}static{this.paths=[[\"npm\",\"login\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"store new login info to access the npm registry\",details:\"\\n      This command will ask you for your username, password, and 2FA One-Time-Password (when it applies). It will then modify your local configuration (in your home folder, never in the project itself) to reference the new tokens thus generated.\\n\\n      Adding the `-s,--scope` flag will cause the authentication to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the authentication to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n    \",examples:[[\"Login to the default registry\",\"yarn npm login\"],[\"Login to the registry linked to the @my-scope registry\",\"yarn npm login --scope my-scope\"],[\"Login to the publish registry for the current package\",\"yarn npm login --publish\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=await QL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope});return(await Ot.start({configuration:r,stdout:this.context.stdout,includeFooter:!1},async n=>{let c=await gbt({registry:s,configuration:r,report:n,webLogin:this.webLogin,stdin:this.context.stdin,stdout:this.context.stdout});return await mbt(s,c,{alwaysAuth:this.alwaysAuth,scope:this.scope}),n.reportInfo(0,\"Successfully logged in\")})).exitCode()}};async function QL({scope:t,publish:e,configuration:r,cwd:s}){return t&&e?hi.getScopeRegistry(t,{configuration:r,type:hi.RegistryType.PUBLISH_REGISTRY}):t?hi.getScopeRegistry(t,{configuration:r}):e?hi.getPublishRegistry((await eC(r,s)).manifest,{configuration:r}):hi.getDefaultRegistry({configuration:r})}async function fbt(t,e){let r;try{r=await en.post(\"/-/v1/login\",null,{configuration:e,registry:t,authType:en.AuthType.NO_AUTH,jsonResponse:!0,headers:{\"npm-auth-type\":\"web\"}})}catch{return null}return r}async function Abt(t,e){let r=await nn.request(t,null,{configuration:e,jsonResponse:!0});if(r.statusCode===202){let s=r.headers[\"retry-after\"]??\"1\";return{type:\"waiting\",sleep:parseInt(s,10)}}return r.statusCode===200?{type:\"success\",token:r.body.token}:null}async function pbt({registry:t,configuration:e,report:r}){let s=await fbt(t,e);if(!s)return null;if(Ui.openUrl){r.reportInfo(0,\"Starting the web login process...\"),r.reportSeparator();let{openNow:a}=await(0,GK.prompt)({type:\"confirm\",name:\"openNow\",message:\"Do you want to try to open your browser now?\",required:!0,initial:!0,onCancel:()=>process.exit(130)});r.reportSeparator(),(!a||!await Ui.openUrl(s.loginUrl))&&(r.reportWarning(0,\"We failed to automatically open the url; you'll have to open it yourself in your browser of choice:\"),r.reportWarning(0,he.pretty(e,s.loginUrl,he.Type.URL)),r.reportSeparator())}for(;;){let a=await Abt(s.doneUrl,e);if(a===null)return null;if(a.type===\"waiting\")await new Promise(n=>setTimeout(n,a.sleep*1e3));else return a.token}}var hbt=[\"https://registry.yarnpkg.com\",\"https://registry.npmjs.org\"];async function gbt(t){if(t.webLogin??hbt.includes(t.registry)){let e=await pbt(t);if(e!==null)return e}return await dbt(t)}async function dbt({registry:t,configuration:e,report:r,stdin:s,stdout:a}){let n=await ybt({configuration:e,registry:t,report:r,stdin:s,stdout:a}),c=`/-/user/org.couchdb.user:${encodeURIComponent(n.name)}`,f={_id:`org.couchdb.user:${n.name}`,name:n.name,password:n.password,type:\"user\",roles:[],date:new Date().toISOString()},p={attemptedAs:n.name,configuration:e,registry:t,jsonResponse:!0,authType:en.AuthType.NO_AUTH};try{return(await en.put(c,f,p)).token}catch(P){if(!(P.originalError?.name===\"HTTPError\"&&P.originalError?.response.statusCode===409))throw P}let h={...p,authType:en.AuthType.NO_AUTH,headers:{authorization:`Basic ${Buffer.from(`${n.name}:${n.password}`).toString(\"base64\")}`}},E=await en.get(c,h);for(let[P,I]of Object.entries(E))(!f[P]||P===\"roles\")&&(f[P]=I);let C=`${c}/-rev/${f._rev}`;return(await en.put(C,f,h)).token}async function mbt(t,e,{alwaysAuth:r,scope:s}){let a=c=>f=>{let p=je.isIndexableObject(f)?f:{},h=p[c],E=je.isIndexableObject(h)?h:{};return{...p,[c]:{...E,...r!==void 0?{npmAlwaysAuth:r}:{},npmAuthToken:e}}},n=s?{npmScopes:a(s)}:{npmRegistries:a(t)};return await ze.updateHomeConfiguration(n)}async function ybt({configuration:t,registry:e,report:r,stdin:s,stdout:a}){r.reportInfo(0,`Logging in to ${he.pretty(t,e,he.Type.URL)}`);let n=!1;if(e.match(/^https:\\/\\/npm\\.pkg\\.github\\.com(\\/|$)/)&&(r.reportInfo(0,\"You seem to be using the GitHub Package Registry. Tokens must be generated with the 'repo', 'write:packages', and 'read:packages' permissions.\"),n=!0),r.reportSeparator(),t.env.YARN_IS_TEST_ENV)return{name:t.env.YARN_INJECT_NPM_USER||\"\",password:t.env.YARN_INJECT_NPM_PASSWORD||\"\"};let c=await(0,GK.prompt)([{type:\"input\",name:\"name\",message:\"Username:\",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a},{type:\"password\",name:\"password\",message:n?\"Token:\":\"Password:\",required:!0,onCancel:()=>process.exit(130),stdin:s,stdout:a}]);return r.reportSeparator(),c}Ge();Ge();Yt();var x1=new Set([\"npmAuthIdent\",\"npmAuthToken\"]),k1=class extends ft{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Logout of the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Logout of the publish registry\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Logout of all registries\"})}static{this.paths=[[\"npm\",\"logout\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"logout of the npm registry\",details:\"\\n      This command will log you out by modifying your local configuration (in your home folder, never in the project itself) to delete all credentials linked to a registry.\\n\\n      Adding the `-s,--scope` flag will cause the deletion to be done against whatever registry is configured for the associated scope (see also `npmScopes`).\\n\\n      Adding the `--publish` flag will cause the deletion to be done against the registry used when publishing the package (see also `publishConfig.registry` and `npmPublishRegistry`).\\n\\n      Adding the `-A,--all` flag will cause the deletion to be done against all registries and scopes.\\n    \",examples:[[\"Logout of the default registry\",\"yarn npm logout\"],[\"Logout of the @my-scope scope\",\"yarn npm logout --scope my-scope\"],[\"Logout of the publish registry for the current package\",\"yarn npm logout --publish\"],[\"Logout of all registries\",\"yarn npm logout --all\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s=async()=>{let n=await QL({configuration:r,cwd:this.context.cwd,publish:this.publish,scope:this.scope}),c=await ze.find(this.context.cwd,this.context.plugins),f=G.makeIdent(this.scope??null,\"pkg\");return!hi.getAuthConfiguration(n,{configuration:c,ident:f}).get(\"npmAuthToken\")};return(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{if(this.all&&(await Ibt(),n.reportInfo(0,\"Successfully logged out from everything\")),this.scope){await Jxe(\"npmScopes\",this.scope),await s()?n.reportInfo(0,`Successfully logged out from ${this.scope}`):n.reportWarning(0,\"Scope authentication settings removed, but some other ones settings still apply to it\");return}let c=await QL({configuration:r,cwd:this.context.cwd,publish:this.publish});await Jxe(\"npmRegistries\",c),await s()?n.reportInfo(0,`Successfully logged out from ${c}`):n.reportWarning(0,\"Registry authentication settings removed, but some other ones settings still apply to it\")})).exitCode()}};function Ebt(t,e){let r=t[e];if(!je.isIndexableObject(r))return!1;let s=new Set(Object.keys(r));if([...x1].every(n=>!s.has(n)))return!1;for(let n of x1)s.delete(n);if(s.size===0)return t[e]=void 0,!0;let a={...r};for(let n of x1)delete a[n];return t[e]=a,!0}async function Ibt(){let t=e=>{let r=!1,s=je.isIndexableObject(e)?{...e}:{};s.npmAuthToken&&(delete s.npmAuthToken,r=!0);for(let a of Object.keys(s))Ebt(s,a)&&(r=!0);if(Object.keys(s).length!==0)return r?s:e};return await ze.updateHomeConfiguration({npmRegistries:t,npmScopes:t})}async function Jxe(t,e){return await ze.updateHomeConfiguration({[t]:r=>{let s=je.isIndexableObject(r)?r:{};if(!Object.hasOwn(s,e))return r;let a=s[e],n=je.isIndexableObject(a)?a:{},c=new Set(Object.keys(n));if([...x1].every(p=>!c.has(p)))return r;for(let p of x1)c.delete(p);if(c.size===0)return Object.keys(s).length===1?void 0:{...s,[e]:void 0};let f={};for(let p of x1)f[p]=void 0;return{...s,[e]:{...n,...f}}}})}Ge();Dt();Yt();var Q1=class extends ft{constructor(){super(...arguments);this.access=ge.String(\"--access\",{description:\"The access for the published package (public or restricted)\"});this.tag=ge.String(\"--tag\",\"latest\",{description:\"The tag on the registry that the package should be attached to\"});this.tolerateRepublish=ge.Boolean(\"--tolerate-republish\",!1,{description:\"Warn and exit when republishing an already existing version of a package\"});this.otp=ge.String(\"--otp\",{description:\"The OTP token to use with the command\"});this.provenance=ge.Boolean(\"--provenance\",!1,{description:\"Generate provenance for the package. Only available in GitHub Actions and GitLab CI. Can be set globally through the `npmPublishProvenance` setting or the `YARN_NPM_CONFIG_PROVENANCE` environment variable, or per-package through the `publishConfig.provenance` field in package.json.\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Show what would be published without actually publishing\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Output the result in JSON format\"})}static{this.paths=[[\"npm\",\"publish\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"publish the active workspace to the npm registry\",details:'\\n      This command will pack the active workspace into a fresh archive and upload it to the npm registry.\\n\\n      The package will by default be attached to the `latest` tag on the registry, but this behavior can be overridden by using the `--tag` option.\\n\\n      Note that for legacy reasons scoped packages are by default published with an access set to `restricted` (aka \"private packages\"). This requires you to register for a paid npm plan. In case you simply wish to publish a public scoped package to the registry (for free), just add the `--access public` flag. This behavior can be enabled by default through the `npmPublishAccess` settings.\\n    ',examples:[[\"Publish the active workspace\",\"yarn npm publish\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);if(a.manifest.private)throw new nt(\"Private workspaces cannot be published\");if(a.manifest.name===null||a.manifest.version===null)throw new nt(\"Workspaces must have valid names and versions to be published on an external registry\");await s.restoreInstallState();let n=a.manifest.name,c=a.manifest.version,f=hi.getPublishRegistry(a.manifest,{configuration:r});return(await Ot.start({configuration:r,stdout:this.context.stdout,json:this.json},async h=>{if(this.tolerateRepublish)try{let E=await en.get(en.getIdentUrl(n),{configuration:r,registry:f,ident:n,jsonResponse:!0});if(!Object.hasOwn(E,\"versions\"))throw new jt(15,'Registry returned invalid data for - missing \"versions\" field');if(Object.hasOwn(E.versions,c)){let C=`Registry already knows about version ${c}; skipping.`;h.reportWarning(0,C),h.reportJson({name:G.stringifyIdent(n),version:c,registry:f,warning:C,skipped:!0});return}}catch(E){if(E.originalError?.response?.statusCode!==404)throw E}await In.maybeExecuteWorkspaceLifecycleScript(a,\"prepublish\",{report:h}),await yA.prepareForPack(a,{report:h},async()=>{let E=await yA.genPackList(a);for(let W of E)h.reportInfo(null,fe.fromPortablePath(W)),h.reportJson({file:fe.fromPortablePath(W)});let C=await yA.genPackStream(a,E),S=await je.bufferStream(C),P=await v1.getGitHead(a.cwd),I=!1,R=\"\";a.manifest.publishConfig&&\"provenance\"in a.manifest.publishConfig?(I=!!a.manifest.publishConfig.provenance,R=I?\"Generating provenance statement because `publishConfig.provenance` field is set.\":\"Skipping provenance statement because `publishConfig.provenance` field is set to false.\"):this.provenance?(I=!0,R=\"Generating provenance statement because `--provenance` flag is set.\"):r.get(\"npmPublishProvenance\")&&(I=!0,R=\"Generating provenance statement because `npmPublishProvenance` setting is set.\"),R&&(h.reportInfo(null,R),h.reportJson({type:\"provenance\",enabled:I,provenanceMessage:R}));let N=await v1.makePublishBody(a,S,{access:this.access,tag:this.tag,registry:f,gitHead:P,provenance:I});this.dryRun||await en.put(en.getIdentUrl(n),N,{configuration:r,registry:f,ident:n,otp:this.otp,jsonResponse:!0,allowOidc:!!(process.env.CI&&(process.env.GITHUB_ACTIONS||process.env.GITLAB_CI))});let U=this.dryRun?`[DRY RUN] Package would be published to ${f} with tag ${this.tag}`:\"Package archive published\";h.reportInfo(0,U),h.reportJson({name:G.stringifyIdent(n),version:c,registry:f,tag:this.tag||\"latest\",files:E.map(W=>fe.fromPortablePath(W)),access:this.access||null,dryRun:this.dryRun,published:!this.dryRun,message:U,provenance:!!I})})})).exitCode()}};Ge();Yt();var Kxe=ut(Ai());Ge();Dt();Yt();var T1=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String({required:!1})}static{this.paths=[[\"npm\",\"tag\",\"list\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"list all dist-tags of a package\",details:`\n      This command will list all tags of a package from the npm registry.\n\n      If the package is not specified, Yarn will default to the current workspace.\n    `,examples:[[\"List all tags of package `my-pkg`\",\"yarn npm tag list my-pkg\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n;if(typeof this.package<\"u\")n=G.parseIdent(this.package);else{if(!a)throw new ar(s.cwd,this.context.cwd);if(!a.manifest.name)throw new nt(`Missing 'name' field in ${fe.fromPortablePath(J.join(a.cwd,Er.manifest))}`);n=a.manifest.name}let c=await Xb(n,r),p={children:je.sortMap(Object.entries(c),([h])=>h).map(([h,E])=>({value:he.tuple(he.Type.RESOLUTION,{descriptor:G.makeDescriptor(n,h),locator:G.makeLocator(n,E)})}))};return xs.emitTree(p,{configuration:r,json:this.json,stdout:this.context.stdout})}};async function Xb(t,e){let r=`/-/package${en.getIdentUrl(t)}/dist-tags`;return en.get(r,{configuration:e,ident:t,jsonResponse:!0,customErrorMessage:en.customPackageError})}var R1=class extends ft{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[[\"npm\",\"tag\",\"add\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"add a tag for a specific version of a package\",details:`\n      This command will add a tag to the npm registry for a specific version of a package. If the tag already exists, it will be overwritten.\n    `,examples:[[\"Add a `beta` tag for version `2.3.4-beta.4` of package `my-pkg`\",\"yarn npm tag add my-pkg@2.3.4-beta.4 beta\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=G.parseDescriptor(this.package,!0),c=n.range;if(!Kxe.default.valid(c))throw new nt(`The range ${he.pretty(r,n.range,he.Type.RANGE)} must be a valid semver version`);let f=hi.getPublishRegistry(a.manifest,{configuration:r}),p=he.pretty(r,n,he.Type.IDENT),h=he.pretty(r,c,he.Type.RANGE),E=he.pretty(r,this.tag,he.Type.CODE);return(await Ot.start({configuration:r,stdout:this.context.stdout},async S=>{let P=await Xb(n,r);Object.hasOwn(P,this.tag)&&P[this.tag]===c&&S.reportWarning(0,`Tag ${E} is already set to version ${h}`);let I=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.put(I,c,{configuration:r,registry:f,ident:n,jsonRequest:!0,jsonResponse:!0}),S.reportInfo(0,`Tag ${E} added to version ${h} of package ${p}`)})).exitCode()}};Ge();Yt();var F1=class extends ft{constructor(){super(...arguments);this.package=ge.String();this.tag=ge.String()}static{this.paths=[[\"npm\",\"tag\",\"remove\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"remove a tag from a package\",details:`\n      This command will remove a tag from a package from the npm registry.\n    `,examples:[[\"Remove the `beta` tag from package `my-pkg`\",\"yarn npm tag remove my-pkg beta\"]]})}async execute(){if(this.tag===\"latest\")throw new nt(\"The 'latest' tag cannot be removed.\");let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=G.parseIdent(this.package),c=hi.getPublishRegistry(a.manifest,{configuration:r}),f=he.pretty(r,this.tag,he.Type.CODE),p=he.pretty(r,n,he.Type.IDENT),h=await Xb(n,r);if(!Object.hasOwn(h,this.tag))throw new nt(`${f} is not a tag of package ${p}`);return(await Ot.start({configuration:r,stdout:this.context.stdout},async C=>{let S=`/-/package${en.getIdentUrl(n)}/dist-tags/${encodeURIComponent(this.tag)}`;await en.del(S,{configuration:r,registry:c,ident:n,jsonResponse:!0}),C.reportInfo(0,`Tag ${f} removed from package ${p}`)})).exitCode()}};Ge();Ge();Yt();var N1=class extends ft{constructor(){super(...arguments);this.scope=ge.String(\"-s,--scope\",{description:\"Print username for the registry configured for a given scope\"});this.publish=ge.Boolean(\"--publish\",!1,{description:\"Print username for the publish registry\"})}static{this.paths=[[\"npm\",\"whoami\"]]}static{this.usage=ot.Usage({category:\"Npm-related commands\",description:\"display the name of the authenticated user\",details:\"\\n      Print the username associated with the current authentication settings to the standard output.\\n\\n      When using `-s,--scope`, the username printed will be the one that matches the authentication settings of the registry associated with the given scope (those settings can be overriden using the `npmRegistries` map, and the registry associated with the scope is configured via the `npmScopes` map).\\n\\n      When using `--publish`, the registry we'll select will by default be the one used when publishing packages (`publishConfig.registry` or `npmPublishRegistry` if available, otherwise we'll fallback to the regular `npmRegistryServer`).\\n    \",examples:[[\"Print username for the default registry\",\"yarn npm whoami\"],[\"Print username for the registry on a given scope\",\"yarn npm whoami --scope company\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),s;return this.scope&&this.publish?s=hi.getScopeRegistry(this.scope,{configuration:r,type:hi.RegistryType.PUBLISH_REGISTRY}):this.scope?s=hi.getScopeRegistry(this.scope,{configuration:r}):this.publish?s=hi.getPublishRegistry((await eC(r,this.context.cwd)).manifest,{configuration:r}):s=hi.getDefaultRegistry({configuration:r}),(await Ot.start({configuration:r,stdout:this.context.stdout},async n=>{let c;try{c=await en.get(\"/-/whoami\",{configuration:r,registry:s,authType:en.AuthType.ALWAYS_AUTH,jsonResponse:!0,ident:this.scope?G.makeIdent(this.scope,\"\"):void 0})}catch(f){if(f.response?.statusCode===401||f.response?.statusCode===403){n.reportError(41,\"Authentication failed - your credentials may have expired\");return}else throw f}n.reportInfo(0,c.username)})).exitCode()}};var Cbt={configuration:{npmPublishAccess:{description:\"Default access of the published packages\",type:\"STRING\",default:null},npmPublishProvenance:{description:\"Whether to generate provenance for the published packages\",type:\"BOOLEAN\",default:!1},npmAuditExcludePackages:{description:\"Array of glob patterns of packages to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0},npmAuditIgnoreAdvisories:{description:\"Array of glob patterns of advisory IDs to exclude from npm audit\",type:\"STRING\",default:[],isArray:!0}},commands:[D1,b1,P1,k1,Q1,R1,T1,F1,N1]},wbt=Cbt;var XK={};Vt(XK,{PatchCommand:()=>H1,PatchCommitCommand:()=>_1,PatchFetcher:()=>rP,PatchResolver:()=>nP,default:()=>_bt,patchUtils:()=>gy});Ge();Ge();Dt();eA();var gy={};Vt(gy,{applyPatchFile:()=>RL,diffFolders:()=>KK,ensureUnpatchedDescriptor:()=>WK,ensureUnpatchedLocator:()=>NL,extractPackageToDisk:()=>JK,extractPatchFlags:()=>rke,isParentRequired:()=>VK,isPatchDescriptor:()=>FL,isPatchLocator:()=>Rg,loadPatchFiles:()=>tP,makeDescriptor:()=>OL,makeLocator:()=>YK,makePatchHash:()=>zK,parseDescriptor:()=>$b,parseLocator:()=>eP,parsePatchFile:()=>Zb,unpatchDescriptor:()=>Lbt,unpatchLocator:()=>Mbt});Ge();Dt();Ge();Dt();var Bbt=/^@@ -(\\d+)(,(\\d+))? \\+(\\d+)(,(\\d+))? @@.*/;function O1(t){return J.relative(vt.root,J.resolve(vt.root,fe.toPortablePath(t)))}function vbt(t){let e=t.trim().match(Bbt);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 Sbt=420,Dbt=493;var zxe=()=>({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}),bbt=t=>({header:vbt(t),parts:[]}),Pbt={\"@\":\"header\",\"-\":\"deletion\",\"+\":\"insertion\",\" \":\"context\",\"\\\\\":\"pragma\",undefined:\"context\"};function xbt(t){let e=[],r=zxe(),s=\"parsing header\",a=null,n=null;function c(){a&&(n&&(a.parts.push(n),n=null),r.hunks.push(a),a=null)}function f(){c(),e.push(r),r=zxe()}for(let p=0;p<t.length;p++){let h=t[p];if(s===\"parsing header\")if(h.startsWith(\"@@\"))s=\"parsing hunks\",r.hunks=[],p-=1;else if(h.startsWith(\"diff --git \")){r&&r.diffLineFromPath&&f();let E=h.match(/^diff --git a\\/(.*?) b\\/(.*?)\\s*$/);if(!E)throw new Error(`Bad diff line: ${h}`);r.diffLineFromPath=E[1],r.diffLineToPath=E[2]}else if(h.startsWith(\"old mode \"))r.oldMode=h.slice(9).trim();else if(h.startsWith(\"new mode \"))r.newMode=h.slice(9).trim();else if(h.startsWith(\"deleted file mode \"))r.deletedFileMode=h.slice(18).trim();else if(h.startsWith(\"new file mode \"))r.newFileMode=h.slice(14).trim();else if(h.startsWith(\"rename from \"))r.renameFrom=h.slice(12).trim();else if(h.startsWith(\"rename to \"))r.renameTo=h.slice(10).trim();else if(h.startsWith(\"index \")){let E=h.match(/(\\w+)\\.\\.(\\w+)/);if(!E)continue;r.beforeHash=E[1],r.afterHash=E[2]}else h.startsWith(\"semver exclusivity \")?r.semverExclusivity=h.slice(19).trim():h.startsWith(\"--- \")?r.fromPath=h.slice(6).trim():h.startsWith(\"+++ \")&&(r.toPath=h.slice(6).trim());else{let E=Pbt[h[0]]||null;switch(E){case\"header\":c(),a=bbt(h);break;case null:s=\"parsing header\",f(),p-=1;break;case\"pragma\":{if(!h.startsWith(\"\\\\ No newline at end of file\"))throw new Error(`Unrecognized pragma in patch file: ${h}`);if(!n)throw new Error(\"Bad parser state: No newline at EOF pragma encountered without context\");n.noNewlineAtEndOfFile=!0}break;case\"context\":case\"deletion\":case\"insertion\":{if(!a)throw new Error(\"Bad parser state: Hunk lines encountered before hunk header\");n&&n.type!==E&&(a.parts.push(n),n=null),n||(n={type:E,lines:[],noNewlineAtEndOfFile:!1}),n.lines.push(h.slice(1))}break;default:je.assertNever(E);break}}}f();for(let{hunks:p}of e)if(p)for(let h of p)Qbt(h);return e}function kbt(t){let e=[];for(let r of t){let{semverExclusivity:s,diffLineFromPath:a,diffLineToPath:n,oldMode:c,newMode:f,deletedFileMode:p,newFileMode:h,renameFrom:E,renameTo:C,beforeHash:S,afterHash:P,fromPath:I,toPath:R,hunks:N}=r,U=E?\"rename\":p?\"file deletion\":h?\"file creation\":N&&N.length>0?\"patch\":\"mode change\",W=null;switch(U){case\"rename\":{if(!E||!C)throw new Error(\"Bad parser state: rename from & to not given\");e.push({type:\"rename\",semverExclusivity:s,fromPath:O1(E),toPath:O1(C)}),W=C}break;case\"file deletion\":{let ee=a||I;if(!ee)throw new Error(\"Bad parse state: no path given for file deletion\");e.push({type:\"file deletion\",semverExclusivity:s,hunk:N&&N[0]||null,path:O1(ee),mode:TL(p),hash:S})}break;case\"file creation\":{let ee=n||R;if(!ee)throw new Error(\"Bad parse state: no path given for file creation\");e.push({type:\"file creation\",semverExclusivity:s,hunk:N&&N[0]||null,path:O1(ee),mode:TL(h),hash:P})}break;case\"patch\":case\"mode change\":W=R||n;break;default:je.assertNever(U);break}W&&c&&f&&c!==f&&e.push({type:\"mode change\",semverExclusivity:s,path:O1(W),oldMode:TL(c),newMode:TL(f)}),W&&N&&N.length&&e.push({type:\"patch\",semverExclusivity:s,path:O1(W),hunks:N,beforeHash:S,afterHash:P})}if(e.length===0)throw new Error(\"Unable to parse patch file: No changes found. Make sure the patch is a valid UTF8 encoded string\");return e}function TL(t){let e=parseInt(t,8)&511;if(e!==Sbt&&e!==Dbt)throw new Error(`Unexpected file mode string: ${t}`);return e}function Zb(t){let e=t.split(/\\n/g);return e[e.length-1]===\"\"&&e.pop(),kbt(xbt(e))}function Qbt(t){let e=0,r=0;for(let{type:s,lines:a}of t.parts)switch(s){case\"context\":r+=a.length,e+=a.length;break;case\"deletion\":e+=a.length;break;case\"insertion\":r+=a.length;break;default:je.assertNever(s);break}if(e!==t.header.original.length||r!==t.header.patched.length){let s=a=>a<0?a:`+${a}`;throw new Error(`hunk header integrity check failed (expected @@ ${s(t.header.original.length)} ${s(t.header.patched.length)} @@, got @@ ${s(e)} ${s(r)} @@)`)}}Ge();Dt();var L1=class extends Error{constructor(r,s){super(`Cannot apply hunk #${r+1}`);this.hunk=s}};async function M1(t,e,r){let s=await t.lstatPromise(e),a=await r();typeof a<\"u\"&&(e=a),await t.lutimesPromise(e,s.atime,s.mtime)}async function RL(t,{baseFs:e=new Yn,dryRun:r=!1,version:s=null}={}){for(let a of t)if(!(a.semverExclusivity!==null&&s!==null&&!Fr.satisfiesWithPrereleases(s,a.semverExclusivity)))switch(a.type){case\"file deletion\":if(r){if(!e.existsSync(a.path))throw new Error(`Trying to delete a file that doesn't exist: ${a.path}`)}else await M1(e,J.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 M1(e,J.dirname(a.fromPath),async()=>{await M1(e,J.dirname(a.toPath),async()=>{await M1(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(J.dirname(a.path),{chmod:493,utimes:[fi.SAFE_TIME,fi.SAFE_TIME]}),await e.writeFilePromise(a.path,n,{mode:a.mode}),await e.utimesPromise(a.path,fi.SAFE_TIME,fi.SAFE_TIME)}break;case\"patch\":await M1(e,a.path,async()=>{await Fbt(a,{baseFs:e,dryRun:r})});break;case\"mode change\":{let c=(await e.statPromise(a.path)).mode;if(Xxe(a.newMode)!==Xxe(c))continue;await M1(e,a.path,async()=>{await e.chmodPromise(a.path,a.newMode)})}break;default:je.assertNever(a);break}}function Xxe(t){return(t&64)>0}function Zxe(t){return t.replace(/\\s+$/,\"\")}function Rbt(t,e){return Zxe(t)===Zxe(e)}async function Fbt({hunks:t,path:e},{baseFs:r,dryRun:s=!1}){let a=await r.statSync(e).mode,c=(await r.readFileSync(e,\"utf8\")).split(/\\n/),f=[],p=0,h=0;for(let C of t){let S=Math.max(h,C.header.patched.start+p),P=Math.max(0,S-h),I=Math.max(0,c.length-S-C.header.original.length),R=Math.max(P,I),N=0,U=0,W=null;for(;N<=R;){if(N<=P&&(U=S-N,W=$xe(C,c,U),W!==null)){N=-N;break}if(N<=I&&(U=S+N,W=$xe(C,c,U),W!==null))break;N+=1}if(W===null)throw new L1(t.indexOf(C),C);f.push(W),p+=N,h=U+C.header.original.length}if(s)return;let E=0;for(let C of f)for(let S of C)switch(S.type){case\"splice\":{let P=S.index+E;c.splice(P,S.numToDelete,...S.linesToInsert),E+=S.linesToInsert.length-S.numToDelete}break;case\"pop\":c.pop();break;case\"push\":c.push(S.line);break;default:je.assertNever(S);break}await r.writeFilePromise(e,c.join(`\n`),{mode:a})}function $xe(t,e,r){let s=[];for(let a of t.parts)switch(a.type){case\"context\":case\"deletion\":{for(let n of a.lines){let c=e[r];if(c==null||!Rbt(c,n))return null;r+=1}a.type===\"deletion\"&&(s.push({type:\"splice\",index:r-a.lines.length,numToDelete:a.lines.length,linesToInsert:[]}),a.noNewlineAtEndOfFile&&s.push({type:\"push\",line:\"\"}))}break;case\"insertion\":s.push({type:\"splice\",index:r,numToDelete:0,linesToInsert:a.lines}),a.noNewlineAtEndOfFile&&s.push({type:\"pop\"});break;default:je.assertNever(a.type);break}return s}var Obt=/^builtin<([^>]+)>$/;function U1(t,e){let{protocol:r,source:s,selector:a,params:n}=G.parseRange(t);if(r!==\"patch:\")throw new Error(\"Invalid patch range\");if(s===null)throw new Error(\"Patch locators must explicitly define their source\");let c=a?a.split(/&/).map(E=>fe.toPortablePath(E)):[],f=n&&typeof n.locator==\"string\"?G.parseLocator(n.locator):null,p=n&&typeof n.version==\"string\"?n.version:null,h=e(s);return{parentLocator:f,sourceItem:h,patchPaths:c,sourceVersion:p}}function FL(t){return t.range.startsWith(\"patch:\")}function Rg(t){return t.reference.startsWith(\"patch:\")}function $b(t){let{sourceItem:e,...r}=U1(t.range,G.parseDescriptor);return{...r,sourceDescriptor:e}}function eP(t){let{sourceItem:e,...r}=U1(t.reference,G.parseLocator);return{...r,sourceLocator:e}}function Lbt(t){let{sourceItem:e}=U1(t.range,G.parseDescriptor);return e}function Mbt(t){let{sourceItem:e}=U1(t.reference,G.parseLocator);return e}function WK(t){if(!FL(t))return t;let{sourceItem:e}=U1(t.range,G.parseDescriptor);return e}function NL(t){if(!Rg(t))return t;let{sourceItem:e}=U1(t.reference,G.parseLocator);return e}function eke({parentLocator:t,sourceItem:e,patchPaths:r,sourceVersion:s,patchHash:a},n){let c=t!==null?{locator:G.stringifyLocator(t)}:{},f=typeof s<\"u\"?{version:s}:{},p=typeof a<\"u\"?{hash:a}:{};return G.makeRange({protocol:\"patch:\",source:n(e),selector:r.join(\"&\"),params:{...f,...p,...c}})}function OL(t,{parentLocator:e,sourceDescriptor:r,patchPaths:s}){return G.makeDescriptor(t,eke({parentLocator:e,sourceItem:r,patchPaths:s},G.stringifyDescriptor))}function YK(t,{parentLocator:e,sourcePackage:r,patchPaths:s,patchHash:a}){return G.makeLocator(t,eke({parentLocator:e,sourceItem:r,sourceVersion:r.version,patchPaths:s,patchHash:a},G.stringifyLocator))}function tke({onAbsolute:t,onRelative:e,onProject:r,onBuiltin:s},a){let n=a.lastIndexOf(\"!\");n!==-1&&(a=a.slice(n+1));let c=a.match(Obt);return c!==null?s(c[1]):a.startsWith(\"~/\")?r(a.slice(2)):J.isAbsolute(a)?t(a):e(a)}function rke(t){let e=t.lastIndexOf(\"!\");return{optional:(e!==-1?new Set(t.slice(0,e).split(/!/)):new Set).has(\"optional\")}}function VK(t){return tke({onAbsolute:()=>!1,onRelative:()=>!0,onProject:()=>!1,onBuiltin:()=>!1},t)}async function tP(t,e,r){let s=t!==null?await r.fetcher.fetch(t,r):null,a=s&&s.localPath?{packageFs:new Sn(vt.root),prefixPath:J.relative(vt.root,s.localPath)}:s;s&&s!==a&&s.releaseFs&&s.releaseFs();let n=await je.releaseAfterUseAsync(async()=>await Promise.all(e.map(async c=>{let f=rke(c),p=await tke({onAbsolute:async h=>await ce.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(J.join(a.prefixPath,h),\"utf8\")},onProject:async h=>await ce.readFilePromise(J.join(r.project.cwd,h),\"utf8\"),onBuiltin:async h=>await r.project.configuration.firstHook(E=>E.getBuiltinPatch,r.project,h)},c);return{...f,source:p}})));for(let c of n)typeof c.source==\"string\"&&(c.source=c.source.replace(/\\r\\n?/g,`\n`));return n}async function JK(t,{cache:e,project:r}){let s=r.storedPackages.get(t.locatorHash);if(typeof s>\"u\")throw new Error(\"Assertion failed: Expected the package to be registered\");let a=NL(t),n=r.storedChecksums,c=new ki,f=await ce.mktempPromise(),p=J.join(f,\"source\"),h=J.join(f,\"user\"),E=J.join(f,\".yarn-patch.json\"),C=r.configuration.makeFetcher(),S=[];try{let P,I;if(t.locatorHash===a.locatorHash){let R=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c});S.push(()=>R.releaseFs?.()),P=R,I=R}else P=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>P.releaseFs?.()),I=await C.fetch(t,{cache:e,project:r,fetcher:C,checksums:n,report:c}),S.push(()=>I.releaseFs?.());await Promise.all([ce.copyPromise(p,P.prefixPath,{baseFs:P.packageFs}),ce.copyPromise(h,I.prefixPath,{baseFs:I.packageFs}),ce.writeJsonPromise(E,{locator:G.stringifyLocator(t),version:s.version})])}finally{for(let P of S)P()}return ce.detachTemp(f),h}async function KK(t,e){let r=fe.fromPortablePath(t).replace(/\\\\/g,\"/\"),s=fe.fromPortablePath(e).replace(/\\\\/g,\"/\"),{stdout:a,stderr:n}=await qr.execvp(\"git\",[\"-c\",\"core.safecrlf=false\",\"diff\",\"--src-prefix=a/\",\"--dst-prefix=b/\",\"--ignore-cr-at-eol\",\"--full-index\",\"--no-index\",\"--no-renames\",\"--text\",r,s],{cwd:fe.toPortablePath(process.cwd()),env:{...process.env,GIT_CONFIG_NOSYSTEM:\"1\",HOME:\"\",XDG_CONFIG_HOME:\"\",USERPROFILE:\"\"}});if(n.length>0)throw new Error(`Unable to diff directories. Make sure you have a recent version of 'git' available in PATH.\nThe following error was reported by 'git':\n${n}`);let c=r.startsWith(\"/\")?f=>f.slice(1):f=>f;return a.replace(new RegExp(`(a|b)(${je.escapeRegExp(`/${c(r)}/`)})`,\"g\"),\"$1/\").replace(new RegExp(`(a|b)${je.escapeRegExp(`/${c(s)}/`)}`,\"g\"),\"$1/\").replace(new RegExp(je.escapeRegExp(`${r}/`),\"g\"),\"\").replace(new RegExp(je.escapeRegExp(`${s}/`),\"g\"),\"\")}function zK(t,e){let r=[];for(let{source:s}of t){if(s===null)continue;let a=Zb(s);for(let n of a){let{semverExclusivity:c,...f}=n;c!==null&&e!==null&&!Fr.satisfiesWithPrereleases(e,c)||r.push(JSON.stringify(f))}}return Nn.makeHash(`${3}`,...r).slice(0,6)}Ge();function nke(t,{configuration:e,report:r}){for(let s of t.parts)for(let a of s.lines)switch(s.type){case\"context\":r.reportInfo(null,`  ${he.pretty(e,a,\"grey\")}`);break;case\"deletion\":r.reportError(28,`- ${he.pretty(e,a,he.Type.REMOVED)}`);break;case\"insertion\":r.reportError(28,`+ ${he.pretty(e,a,he.Type.ADDED)}`);break;default:je.assertNever(s.type)}}var rP=class{supports(e,r){return!!Rg(e)}getLocalPath(e,r){return null}async fetch(e,r){let s=r.checksums.get(e.locatorHash)||null,[a,n,c]=await r.cache.fetchPackageFromCache(e,s,{onHit:()=>r.report.reportCacheHit(e),onMiss:()=>r.report.reportCacheMiss(e,`${G.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:G.getIdentVendorPath(e),localPath:this.getLocalPath(e,r),checksum:c}}async patchPackage(e,r){let{parentLocator:s,sourceLocator:a,sourceVersion:n,patchPaths:c}=eP(e),f=await tP(s,c,r),p=await ce.mktempPromise(),h=J.join(p,\"current.zip\"),E=await r.fetcher.fetch(a,r),C=G.getIdentVendorPath(e),S=new As(h,{create:!0,level:r.project.configuration.get(\"compressionLevel\")});await je.releaseAfterUseAsync(async()=>{await S.copyPromise(C,E.prefixPath,{baseFs:E.packageFs,stableSort:!0})},E.releaseFs),S.saveAndClose();for(let{source:P,optional:I}of f){if(P===null)continue;let R=new As(h,{level:r.project.configuration.get(\"compressionLevel\")}),N=new Sn(J.resolve(vt.root,C),{baseFs:R});try{await RL(Zb(P),{baseFs:N,version:n})}catch(U){if(!(U instanceof L1))throw U;let W=r.project.configuration.get(\"enableInlineHunks\"),ee=!W&&!I?\" (set enableInlineHunks for details)\":\"\",ie=`${G.prettyLocator(r.project.configuration,e)}: ${U.message}${ee}`,ue=le=>{W&&nke(U.hunk,{configuration:r.project.configuration,report:le})};if(R.discardAndClose(),I){r.report.reportWarningOnce(66,ie,{reportExtra:ue});continue}else throw new jt(66,ie,ue)}R.saveAndClose()}return new As(h,{level:r.project.configuration.get(\"compressionLevel\")})}};Ge();var nP=class{supportsDescriptor(e,r){return!!FL(e)}supportsLocator(e,r){return!!Rg(e)}shouldPersistResolution(e,r){return!1}bindDescriptor(e,r,s){let{patchPaths:a}=$b(e);return a.every(n=>!VK(n))?e:G.bindDescriptor(e,{locator:G.stringifyLocator(r)})}getResolutionDependencies(e,r){let{sourceDescriptor:s}=$b(e);return{sourceDescriptor:r.project.configuration.normalizeDependency(s)}}async getCandidates(e,r,s){if(!s.fetchOptions)throw new Error(\"Assertion failed: This resolver cannot be used unless a fetcher is configured\");let{parentLocator:a,patchPaths:n}=$b(e),c=await tP(a,n,s.fetchOptions),f=r.sourceDescriptor;if(typeof f>\"u\")throw new Error(\"Assertion failed: The dependency should have been resolved\");let p=zK(c,f.version);return[YK(e,{parentLocator:a,sourcePackage:f,patchPaths:n,patchHash:p})]}async getSatisfying(e,r,s,a){let[n]=await this.getCandidates(e,r,a);return{locators:s.filter(c=>c.locatorHash===n.locatorHash),sorted:!1}}async resolve(e,r){let{sourceLocator:s}=eP(e);return{...await r.resolver.resolve(s,r),...e}}};Ge();Dt();Yt();var _1=class extends ft{constructor(){super(...arguments);this.save=ge.Boolean(\"-s,--save\",!1,{description:\"Add the patch to your resolution entries\"});this.patchFolder=ge.String()}static{this.paths=[[\"patch-commit\"]]}static{this.usage=ot.Usage({description:\"generate a patch out of a directory\",details:\"\\n      By default, this will print a patchfile on stdout based on the diff between the folder passed in and the original version of the package. Such file is suitable for consumption with the `patch:` protocol.\\n\\n      With the `-s,--save` option set, the patchfile won't be printed on stdout anymore and will instead be stored within a local file (by default kept within `.yarn/patches`, but configurable via the `patchFolder` setting). A `resolutions` entry will also be added to your top-level manifest, referencing the patched package via the `patch:` protocol.\\n\\n      Note that only folders generated by `yarn patch` are accepted as valid input for `yarn patch-commit`.\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=J.resolve(this.context.cwd,fe.toPortablePath(this.patchFolder)),c=J.join(n,\"../source\"),f=J.join(n,\"../.yarn-patch.json\");if(!ce.existsSync(c))throw new nt(\"The argument folder didn't get created by 'yarn patch'\");let p=await KK(c,n),h=await ce.readJsonPromise(f),E=G.parseLocator(h.locator,!0);if(!s.storedPackages.has(E.locatorHash))throw new nt(\"No package found in the project for the given locator\");if(!this.save){this.context.stdout.write(p);return}let C=r.get(\"patchFolder\"),S=J.join(C,`${G.slugifyLocator(E)}.patch`);await ce.mkdirPromise(C,{recursive:!0}),await ce.writeFilePromise(S,p);let P=[],I=new Map;for(let R of s.storedPackages.values()){if(G.isVirtualLocator(R))continue;let N=R.dependencies.get(E.identHash);if(!N)continue;let U=G.ensureDevirtualizedDescriptor(N),W=WK(U),ee=s.storedResolutions.get(W.descriptorHash);if(!ee)throw new Error(\"Assertion failed: Expected the resolution to have been registered\");if(!s.storedPackages.get(ee))throw new Error(\"Assertion failed: Expected the package to have been registered\");let ue=s.tryWorkspaceByLocator(R);if(ue)P.push(ue);else{let le=s.originalPackages.get(R.locatorHash);if(!le)throw new Error(\"Assertion failed: Expected the original package to have been registered\");let me=le.dependencies.get(N.identHash);if(!me)throw new Error(\"Assertion failed: Expected the original dependency to have been registered\");I.set(me.descriptorHash,me)}}for(let R of P)for(let N of Ut.hardDependencies){let U=R.manifest[N].get(E.identHash);if(!U)continue;let W=OL(U,{parentLocator:null,sourceDescriptor:G.convertLocatorToDescriptor(E),patchPaths:[J.join(Er.home,J.relative(s.cwd,S))]});R.manifest[N].set(U.identHash,W)}for(let R of I.values()){let N=OL(R,{parentLocator:null,sourceDescriptor:G.convertLocatorToDescriptor(E),patchPaths:[J.join(Er.home,J.relative(s.cwd,S))]});s.topLevelWorkspace.manifest.resolutions.push({pattern:{descriptor:{fullName:G.stringifyIdent(N),description:R.range}},reference:N.range})}await s.persist()}};Ge();Dt();Yt();var H1=class extends ft{constructor(){super(...arguments);this.update=ge.Boolean(\"-u,--update\",!1,{description:\"Reapply local patches that already apply to this packages\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.package=ge.String()}static{this.paths=[[\"patch\"]]}static{this.usage=ot.Usage({description:\"prepare a package for patching\",details:\"\\n      This command will cause a package to be extracted in a temporary directory intended to be editable at will.\\n\\n      Once you're done with your changes, run `yarn patch-commit -s path` (with `path` being the temporary directory you received) to generate a patchfile and register it into your top-level manifest via the `patch:` protocol. Run `yarn patch-commit -h` for more details.\\n\\n      Calling the command when you already have a patch won't import it by default (in other words, the default behavior is to reset existing patches). However, adding the `-u,--update` flag will import any current patch.\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let c=G.parseLocator(this.package);if(c.reference===\"unknown\"){let f=je.mapAndFilter([...s.storedPackages.values()],p=>p.identHash!==c.identHash?je.mapAndFilter.skip:G.isVirtualLocator(p)?je.mapAndFilter.skip:Rg(p)!==this.update?je.mapAndFilter.skip:p);if(f.length===0)throw new nt(\"No package found in the project for the given locator\");if(f.length>1)throw new nt(`Multiple candidate packages found; explicitly choose one of them (use \\`yarn why <package>\\` to get more information as to who depends on them):\n${f.map(p=>`\n- ${G.prettyLocator(r,p)}`).join(\"\")}`);c=f[0]}if(!s.storedPackages.has(c.locatorHash))throw new nt(\"No package found in the project for the given locator\");await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=NL(c),h=await JK(c,{cache:n,project:s});f.reportJson({locator:G.stringifyLocator(p),path:fe.fromPortablePath(h)});let E=this.update?\" along with its current modifications\":\"\";f.reportInfo(0,`Package ${G.prettyLocator(r,p)} got extracted with success${E}!`),f.reportInfo(0,`You can now edit the following folder: ${he.pretty(r,fe.fromPortablePath(h),\"magenta\")}`),f.reportInfo(0,`Once you are done run ${he.pretty(r,`yarn patch-commit -s ${process.platform===\"win32\"?'\"':\"\"}${fe.fromPortablePath(h)}${process.platform===\"win32\"?'\"':\"\"}`,\"cyan\")} and Yarn will store a patchfile based on your changes.`)})}};var Ubt={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:[_1,H1],fetchers:[rP],resolvers:[nP]},_bt=Ubt;var ez={};Vt(ez,{PnpmLinker:()=>iP,default:()=>Ybt});Ge();Dt();Yt();var iP=class{getCustomDataKey(){return JSON.stringify({name:\"PnpmLinker\",version:3})}supportsPackage(e,r){return this.isEnabled(r)}async findPackageLocation(e,r){if(!this.isEnabled(r))throw new Error(\"Assertion failed: Expected the pnpm linker to be enabled\");let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=a.pathsByLocator.get(e.locatorHash);if(typeof n>\"u\")throw new nt(`Couldn't find ${G.prettyLocator(r.project.configuration,e)} in the currently installed pnpm map - running an install might help`);return n.packageLocation}async findPackageLocator(e,r){if(!this.isEnabled(r))return null;let s=this.getCustomDataKey(),a=r.project.linkersCustomData.get(s);if(!a)throw new nt(`The project in ${he.pretty(r.project.configuration,`${r.project.cwd}/package.json`,he.Type.PATH)} doesn't seem to have been installed - running an install there might help`);let n=e.match(/(^.*\\/node_modules\\/(@[^/]*\\/)?[^/]+)(\\/.*$)/);if(n){let p=a.locatorByPath.get(n[1]);if(p)return p}let c=e,f=e;do{f=c,c=J.dirname(f);let p=a.locatorByPath.get(f);if(p)return p}while(c!==f);return null}makeInstaller(e){return new ZK(e)}isEnabled(e){return e.project.configuration.get(\"nodeLinker\")===\"pnpm\"}},ZK=class{constructor(e){this.opts=e;this.asyncActions=new je.AsyncActions(10);this.customData={pathsByLocator:new Map,locatorByPath:new Map};this.indexFolderPromise=$P(ce,{indexPath:J.join(e.project.configuration.get(\"globalFolder\"),\"index\")})}attachCustomData(e){}async installPackage(e,r,s){switch(e.linkType){case\"SOFT\":return this.installPackageSoft(e,r,s);case\"HARD\":return this.installPackageHard(e,r,s)}throw new Error(\"Assertion failed: Unsupported package link type\")}async installPackageSoft(e,r,s){let a=J.resolve(r.packageFs.getRealPath(),r.prefixPath),n=this.opts.project.tryWorkspaceByLocator(e)?J.join(a,Er.nodeModules):null;return this.customData.pathsByLocator.set(e.locatorHash,{packageLocation:a,dependenciesLocation:n}),{packageLocation:a,buildRequest:null}}async installPackageHard(e,r,s){let a=jbt(e,{project:this.opts.project}),n=a.packageLocation;this.customData.locatorByPath.set(n,G.stringifyLocator(e)),this.customData.pathsByLocator.set(e.locatorHash,a),s.holdFetchResult(this.asyncActions.set(e.locatorHash,async()=>{await ce.mkdirPromise(n,{recursive:!0}),await ce.copyPromise(n,r.prefixPath,{baseFs:r.packageFs,overwrite:!1,linkStrategy:{type:\"HardlinkFromIndex\",indexPath:await this.indexFolderPromise,autoRepair:!0}})}));let f=G.isVirtualLocator(e)?G.devirtualizeLocator(e):e,p={manifest:await Ut.tryFind(r.prefixPath,{baseFs:r.packageFs})??new Ut,misc:{hasBindingGyp:gA.hasBindingGyp(r)}},h=this.opts.project.getDependencyMeta(f,e.version),E=gA.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\"||!ike(e,{project:this.opts.project}))return;let s=this.customData.pathsByLocator.get(e.locatorHash);if(typeof s>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${G.stringifyLocator(e)})`);let{dependenciesLocation:a}=s;a&&this.asyncActions.reduce(e.locatorHash,async n=>{await ce.mkdirPromise(a,{recursive:!0});let c=await Gbt(a),f=new Map(c),p=[n],h=(C,S)=>{let P=S;ike(S,{project:this.opts.project})||(this.opts.report.reportWarningOnce(0,\"The pnpm linker doesn't support providing different versions to workspaces' peer dependencies\"),P=G.devirtualizeLocator(S));let I=this.customData.pathsByLocator.get(P.locatorHash);if(typeof I>\"u\")throw new Error(`Assertion failed: Expected the package to have been registered (${G.stringifyLocator(S)})`);let R=G.stringifyIdent(C),N=J.join(a,R),U=J.relative(J.dirname(N),I.packageLocation),W=f.get(R);f.delete(R),p.push(Promise.resolve().then(async()=>{if(W){if(W.isSymbolicLink()&&await ce.readlinkPromise(N)===U)return;await ce.removePromise(N)}await ce.mkdirpPromise(J.dirname(N)),process.platform==\"win32\"&&this.opts.project.configuration.get(\"winLinkType\")===\"junctions\"?await ce.symlinkPromise(I.packageLocation,N,\"junction\"):await ce.symlinkPromise(U,N)}))},E=!1;for(let[C,S]of r)C.identHash===e.identHash&&(E=!0),h(C,S);!E&&!this.opts.project.tryWorkspaceByLocator(e)&&h(G.convertLocatorToDescriptor(e),e),p.push(qbt(a,f)),await Promise.all(p)})}async attachExternalDependents(e,r){throw new Error(\"External dependencies haven't been implemented for the pnpm linker\")}async finalizeInstall(){let e=ske(this.opts.project);if(this.opts.project.configuration.get(\"nodeLinker\")!==\"pnpm\")await ce.removePromise(e);else{let r;try{r=new Set(await ce.readdirPromise(e))}catch{r=new Set}for(let{dependenciesLocation:s}of this.customData.pathsByLocator.values()){if(!s)continue;let a=J.contains(e,s);if(a===null)continue;let[n]=a.split(J.sep);r.delete(n)}await Promise.all([...r].map(async s=>{await ce.removePromise(J.join(e,s))}))}return await this.asyncActions.wait(),await $K(e),this.opts.project.configuration.get(\"nodeLinker\")!==\"node-modules\"&&await $K(Hbt(this.opts.project)),{customData:this.customData}}};function Hbt(t){return J.join(t.cwd,Er.nodeModules)}function ske(t){return t.configuration.get(\"pnpmStoreFolder\")}function jbt(t,{project:e}){let r=G.slugifyLocator(t),s=ske(e),a=J.join(s,r,\"package\"),n=J.join(s,r,Er.nodeModules);return{packageLocation:a,dependenciesLocation:n}}function ike(t,{project:e}){return!G.isVirtualLocator(t)||!e.tryWorkspaceByLocator(t)}async function Gbt(t){let e=new Map,r=[];try{r=await ce.readdirPromise(t,{withFileTypes:!0})}catch(s){if(s.code!==\"ENOENT\")throw s}try{for(let s of r)if(!s.name.startsWith(\".\"))if(s.name.startsWith(\"@\")){let a=await ce.readdirPromise(J.join(t,s.name),{withFileTypes:!0});if(a.length===0)e.set(s.name,s);else for(let n of a)e.set(`${s.name}/${n.name}`,n)}else e.set(s.name,s)}catch(s){if(s.code!==\"ENOENT\")throw s}return e}async function qbt(t,e){let r=[],s=new Set;for(let a of e.keys()){r.push(ce.removePromise(J.join(t,a)));let n=G.tryParseIdent(a)?.scope;n&&s.add(`@${n}`)}return Promise.all(r).then(()=>Promise.all([...s].map(a=>$K(J.join(t,a)))))}async function $K(t){try{await ce.rmdirPromise(t)}catch(e){if(e.code!==\"ENOENT\"&&e.code!==\"ENOTEMPTY\"&&e.code!==\"EBUSY\")throw e}}var Wbt={configuration:{pnpmStoreFolder:{description:\"By default, the store is stored in the 'node_modules/.store' of the project. Sometimes in CI scenario's it is convenient to store this in a different location so it can be cached and reused.\",type:\"ABSOLUTE_PATH\",default:\"./node_modules/.store\"}},linkers:[iP]},Ybt=Wbt;var az={};Vt(az,{StageCommand:()=>j1,default:()=>nPt,stageUtils:()=>ML});Ge();Dt();Yt();Ge();Dt();var ML={};Vt(ML,{ActionType:()=>tz,checkConsensus:()=>LL,expandDirectory:()=>iz,findConsensus:()=>sz,findVcsRoot:()=>rz,genCommitMessage:()=>oz,getCommitPrefix:()=>oke,isYarnFile:()=>nz});Dt();var tz=(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))(tz||{});async function rz(t,{marker:e}){do if(!ce.existsSync(J.join(t,e)))t=J.dirname(t);else return t;while(t!==\"/\");return null}function nz(t,{roots:e,names:r}){if(r.has(J.basename(t)))return!0;do if(!e.has(t))t=J.dirname(t);else return!0;while(t!==\"/\");return!1}function iz(t){let e=[],r=[t];for(;r.length>0;){let s=r.pop(),a=ce.readdirSync(s);for(let n of a){let c=J.resolve(s,n);ce.lstatSync(c).isDirectory()?r.push(c):e.push(c)}}return e}function LL(t,e){let r=0,s=0;for(let a of t)a!==\"wip\"&&(e.test(a)?r+=1:s+=1);return r>=s}function sz(t){let e=LL(t,/^(\\w\\(\\w+\\):\\s*)?\\w+s/),r=LL(t,/^(\\w\\(\\w+\\):\\s*)?[A-Z]/),s=LL(t,/^\\w\\(\\w+\\):/);return{useThirdPerson:e,useUpperCase:r,useComponent:s}}function oke(t){return t.useComponent?\"chore(yarn): \":\"\"}var Vbt=new Map([[0,\"create\"],[1,\"delete\"],[2,\"add\"],[3,\"remove\"],[4,\"update\"]]);function oz(t,e){let r=oke(t),s=[],a=e.slice().sort((n,c)=>n[0]-c[0]);for(;a.length>0;){let[n,c]=a.shift(),f=Vbt.get(n);t.useUpperCase&&s.length===0&&(f=`${f[0].toUpperCase()}${f.slice(1)}`),t.useThirdPerson&&(f+=\"s\");let p=[c];for(;a.length>0&&a[0][0]===n;){let[,E]=a.shift();p.push(E)}p.sort();let h=p.shift();p.length===1?h+=\" (and one other)\":p.length>1&&(h+=` (and ${p.length} others)`),s.push(`${f} ${h}`)}return`${r}${s.join(\", \")}`}var Jbt=\"Commit generated via `yarn stage`\",Kbt=11;async function ake(t){let{code:e,stdout:r}=await qr.execvp(\"git\",[\"log\",\"-1\",\"--pretty=format:%H\"],{cwd:t});return e===0?r.trim():null}async function zbt(t,e){let r=[],s=e.filter(h=>J.basename(h.path)===\"package.json\");for(let{action:h,path:E}of s){let C=J.relative(t,E);if(h===4){let S=await ake(t),{stdout:P}=await qr.execvp(\"git\",[\"show\",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ut.fromText(P),R=await Ut.fromFile(E),N=new Map([...R.dependencies,...R.devDependencies]),U=new Map([...I.dependencies,...I.devDependencies]);for(let[W,ee]of U){let ie=G.stringifyIdent(ee),ue=N.get(W);ue?ue.range!==ee.range&&r.push([4,`${ie} to ${ue.range}`]):r.push([3,ie])}for(let[W,ee]of N)U.has(W)||r.push([2,G.stringifyIdent(ee)])}else if(h===0){let S=await Ut.fromFile(E);S.name?r.push([0,G.stringifyIdent(S.name)]):r.push([0,\"a package\"])}else if(h===1){let S=await ake(t),{stdout:P}=await qr.execvp(\"git\",[\"show\",`${S}:${C}`],{cwd:t,strict:!0}),I=await Ut.fromText(P);I.name?r.push([1,G.stringifyIdent(I.name)]):r.push([1,\"a package\"])}else throw new Error(\"Assertion failed: Unsupported action type\")}let{code:a,stdout:n}=await qr.execvp(\"git\",[\"log\",`-${Kbt}`,\"--pretty=format:%s\"],{cwd:t}),c=a===0?n.split(/\\n/g).filter(h=>h!==\"\"):[],f=sz(c);return oz(f,r)}var Xbt={0:[\" A \",\"?? \"],4:[\" M \"],1:[\" D \"]},Zbt={0:[\"A  \"],4:[\"M  \"],1:[\"D  \"]},lke={async findRoot(t){return await rz(t,{marker:\".git\"})},async filterChanges(t,e,r,s){let{stdout:a}=await qr.execvp(\"git\",[\"status\",\"-s\"],{cwd:t,strict:!0}),n=a.toString().split(/\\n/g),c=s?.staged?Zbt:Xbt;return[].concat(...n.map(p=>{if(p===\"\")return[];let h=p.slice(0,3),E=J.resolve(t,p.slice(3));if(!s?.staged&&h===\"?? \"&&p.endsWith(\"/\"))return iz(E).map(C=>({action:0,path:C}));{let S=[0,4,1].find(P=>c[P].includes(h));return S!==void 0?[{action:S,path:E}]:[]}})).filter(p=>nz(p.path,{roots:e,names:r}))},async genCommitMessage(t,e){return await zbt(t,e)},async makeStage(t,e){let r=e.map(s=>fe.fromPortablePath(s.path));await qr.execvp(\"git\",[\"add\",\"--\",...r],{cwd:t,strict:!0})},async makeCommit(t,e,r){let s=e.map(a=>fe.fromPortablePath(a.path));await qr.execvp(\"git\",[\"add\",\"-N\",\"--\",...s],{cwd:t,strict:!0}),await qr.execvp(\"git\",[\"commit\",\"-m\",`${r}\n\n${Jbt}\n`,\"--\",...s],{cwd:t,strict:!0})},async makeReset(t,e){let r=e.map(s=>fe.fromPortablePath(s.path));await qr.execvp(\"git\",[\"reset\",\"HEAD\",\"--\",...r],{cwd:t,strict:!0})}};var $bt=[lke],j1=class extends ft{constructor(){super(...arguments);this.commit=ge.Boolean(\"-c,--commit\",!1,{description:\"Commit the staged files\"});this.reset=ge.Boolean(\"-r,--reset\",!1,{description:\"Remove all files from the staging area\"});this.dryRun=ge.Boolean(\"-n,--dry-run\",!1,{description:\"Print the commit message and the list of modified files without staging / committing\"});this.update=ge.Boolean(\"-u,--update\",!1,{hidden:!0})}static{this.paths=[[\"stage\"]]}static{this.usage=ot.Usage({description:\"add all yarn files to your vcs\",details:\"\\n      This command will add to your staging area the files belonging to Yarn (typically any modified `package.json` and `.yarnrc.yml` files, but also linker-generated files, cache data, etc). It will take your ignore list into account, so the cache files won't be added if the cache is ignored in a `.gitignore` file (assuming you use Git).\\n\\n      Running `--reset` will instead remove them from the staging area (the changes will still be there, but won't be committed until you stage them back).\\n\\n      Since the staging area is a non-existent concept in Mercurial, Yarn will always create a new commit when running this command on Mercurial repositories. You can get this behavior when using Git by using the `--commit` flag which will directly create a commit.\\n    \",examples:[[\"Adds all modified project files to the staging area\",\"yarn stage\"],[\"Creates a new commit containing all modified project files\",\"yarn stage --commit\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s}=await Tt.find(r,this.context.cwd),{driver:a,root:n}=await ePt(s.cwd),c=[r.get(\"cacheFolder\"),r.get(\"globalFolder\"),r.get(\"virtualFolder\"),r.get(\"yarnPath\")];await r.triggerHook(C=>C.populateYarnPaths,s,C=>{c.push(C)});let f=new Set;for(let C of c)for(let S of tPt(n,C))f.add(S);let p=new Set([r.get(\"rcFilename\"),Er.lockfile,Er.manifest]),h=await a.filterChanges(n,f,p),E=await a.genCommitMessage(n,h);if(this.dryRun)if(this.commit)this.context.stdout.write(`${E}\n`);else for(let C of h)this.context.stdout.write(`${fe.fromPortablePath(C.path)}\n`);else if(this.reset){let C=await a.filterChanges(n,f,p,{staged:!0});C.length===0?this.context.stdout.write(\"No staged changes found!\"):await a.makeReset(n,C)}else h.length===0?this.context.stdout.write(\"No changes found!\"):this.commit?await a.makeCommit(n,h,E):(await a.makeStage(n,h),this.context.stdout.write(E))}};async function ePt(t){let e=null,r=null;for(let s of $bt)if((r=await s.findRoot(t))!==null){e=s;break}if(e===null||r===null)throw new nt(\"No stage driver has been found for your current project\");return{driver:e,root:r}}function tPt(t,e){let r=[];if(e===null)return r;for(;;){(e===t||e.startsWith(`${t}/`))&&r.push(e);let s;try{s=ce.statSync(e)}catch{break}if(s.isSymbolicLink())e=J.resolve(J.dirname(e),ce.readlinkSync(e));else break}return r}var rPt={commands:[j1]},nPt=rPt;var lz={};Vt(lz,{default:()=>fPt});Ge();Ge();Dt();var fke=ut(Ai());Ge();var cke=ut(g9()),iPt=\"e8e1bd300d860104bb8c58453ffa1eb4\",sPt=\"OFCNCOG2CU\",uke=async(t,e)=>{let r=G.stringifyIdent(t),a=oPt(e).initIndex(\"npm-search\");try{return(await a.getObject(r,{attributesToRetrieve:[\"types\"]})).types?.ts===\"definitely-typed\"}catch{return!1}},oPt=t=>(0,cke.default)(sPt,iPt,{requester:{async send(r){try{let s=await nn.request(r.url,r.data||null,{configuration:t,headers:r.headers});return{content:s.body,isTimedOut:!1,status:s.statusCode}}catch(s){return{content:s.response.body,isTimedOut:!1,status:s.response.statusCode}}}}});var Ake=t=>t.scope?`${t.scope}__${t.name}`:`${t.name}`,aPt=async(t,e,r,s)=>{if(r.scope===\"types\")return;let{project:a}=t,{configuration:n}=a;if(!(n.get(\"tsEnableAutoTypes\")??(ce.existsSync(J.join(t.cwd,\"tsconfig.json\"))||ce.existsSync(J.join(a.cwd,\"tsconfig.json\")))))return;let f=n.makeResolver(),p={project:a,resolver:f,report:new ki};if(!await uke(r,n))return;let E=Ake(r),C=G.parseRange(r.range).selector;if(!Fr.validRange(C)){let N=n.normalizeDependency(r),U=await f.getCandidates(N,{},p);C=G.parseRange(U[0].reference).selector}let S=fke.default.coerce(C);if(S===null)return;let P=`${Xu.Modifier.CARET}${S.major}`,I=G.makeDescriptor(G.makeIdent(\"types\",E),P),R=je.mapAndFind(a.workspaces,N=>{let U=N.manifest.dependencies.get(r.identHash)?.descriptorHash,W=N.manifest.devDependencies.get(r.identHash)?.descriptorHash;if(U!==r.descriptorHash&&W!==r.descriptorHash)return je.mapAndFind.skip;let ee=[];for(let ie of Ut.allDependencies){let ue=N.manifest[ie].get(I.identHash);typeof ue>\"u\"||ee.push([ie,ue])}return ee.length===0?je.mapAndFind.skip:ee});if(typeof R<\"u\")for(let[N,U]of R)t.manifest[N].set(U.identHash,U);else{try{let N=n.normalizeDependency(I);if((await f.getCandidates(N,{},p)).length===0)return}catch{return}t.manifest[Xu.Target.DEVELOPMENT].set(I.identHash,I)}},lPt=async(t,e,r)=>{if(r.scope===\"types\")return;let{project:s}=t,{configuration:a}=s;if(!(a.get(\"tsEnableAutoTypes\")??(ce.existsSync(J.join(t.cwd,\"tsconfig.json\"))||ce.existsSync(J.join(s.cwd,\"tsconfig.json\")))))return;let c=Ake(r),f=G.makeIdent(\"types\",c);for(let p of Ut.allDependencies)typeof t.manifest[p].get(f.identHash)>\"u\"||t.manifest[p].delete(f.identHash)},cPt=(t,e)=>{e.publishConfig&&e.publishConfig.typings&&(e.typings=e.publishConfig.typings),e.publishConfig&&e.publishConfig.types&&(e.types=e.publishConfig.types)},uPt={configuration:{tsEnableAutoTypes:{description:\"Whether Yarn should auto-install @types/ dependencies on 'yarn add'\",type:\"BOOLEAN\",isNullable:!0,default:null}},hooks:{afterWorkspaceDependencyAddition:aPt,afterWorkspaceDependencyRemoval:lPt,beforeWorkspacePacking:cPt}},fPt=uPt;var pz={};Vt(pz,{VersionApplyCommand:()=>Y1,VersionCheckCommand:()=>V1,VersionCommand:()=>J1,default:()=>dPt,versionUtils:()=>W1});Ge();Ge();Yt();var W1={};Vt(W1,{Decision:()=>G1,applyPrerelease:()=>pke,applyReleases:()=>Az,applyStrategy:()=>sP,clearVersionFiles:()=>cz,getUndecidedDependentWorkspaces:()=>aP,getUndecidedWorkspaces:()=>UL,openVersionFile:()=>q1,requireMoreDecisions:()=>pPt,resolveVersionFiles:()=>oP,suggestStrategy:()=>fz,updateVersionFiles:()=>uz,validateReleaseDecision:()=>dy});Ge();Dt();wc();Yt();ql();var kA=ut(Ai()),APt=/^(>=|[~^]|)(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-]+)*)?$/,G1=(h=>(h.UNDECIDED=\"undecided\",h.DECLINE=\"decline\",h.MAJOR=\"major\",h.MINOR=\"minor\",h.PATCH=\"patch\",h.PREMAJOR=\"premajor\",h.PREMINOR=\"preminor\",h.PREPATCH=\"prepatch\",h.PRERELEASE=\"prerelease\",h))(G1||{});function dy(t){let e=kA.default.valid(t);return e||je.validateEnum(O4(G1,\"UNDECIDED\"),t)}async function oP(t,{prerelease:e=null}={}){let r=new Map,s=t.configuration.get(\"deferredVersionFolder\");if(!ce.existsSync(s))return r;let a=await ce.readdirPromise(s);for(let n of a){if(!n.endsWith(\".yml\"))continue;let c=J.join(s,n),f=await ce.readFilePromise(c,\"utf8\"),p=ls(f);for(let[h,E]of Object.entries(p.releases||{})){if(E===\"decline\")continue;let C=G.parseIdent(h),S=t.tryWorkspaceByIdent(C);if(S===null)throw new Error(`Assertion failed: Expected a release definition file to only reference existing workspaces (${J.basename(c)} references ${h})`);if(S.manifest.version===null)throw new Error(`Assertion failed: Expected the workspace to have a version (${G.prettyLocator(t.configuration,S.anchoredLocator)})`);let P=S.manifest.raw.stableVersion??S.manifest.version,I=r.get(S),R=sP(E===\"prerelease\"?S.manifest.version:P,dy(E));if(R===null)throw new Error(`Assertion failed: Expected ${P} to support being bumped via strategy ${E}`);let N=typeof I<\"u\"?kA.default.gt(R,I)?R:I:R;r.set(S,N)}}return e&&(r=new Map([...r].map(([n,c])=>[n,pke(c,{current:n.manifest.version,prerelease:e})]))),r}async function cz(t){let e=t.configuration.get(\"deferredVersionFolder\");ce.existsSync(e)&&await ce.removePromise(e)}async function uz(t,e){let r=new Set(e),s=t.configuration.get(\"deferredVersionFolder\");if(!ce.existsSync(s))return;let a=await ce.readdirPromise(s);for(let n of a){if(!n.endsWith(\".yml\"))continue;let c=J.join(s,n),f=await ce.readFilePromise(c,\"utf8\"),p=ls(f),h=p?.releases;if(h){for(let E of Object.keys(h)){let C=G.parseIdent(E),S=t.tryWorkspaceByIdent(C);(S===null||r.has(S))&&delete p.releases[E]}Object.keys(p.releases).length>0?await ce.changeFilePromise(c,nl(new nl.PreserveOrdering(p))):await ce.unlinkPromise(c)}}}async function q1(t,{allowEmpty:e=!1}={}){let r=t.configuration;if(r.projectCwd===null)throw new nt(\"This command can only be run from within a Yarn project\");let s=await ka.fetchRoot(r.projectCwd),a=s!==null?await ka.fetchBase(s,{baseRefs:r.get(\"changesetBaseRefs\")}):null,n=s!==null?await ka.fetchChangedFiles(s,{base:a.hash,project:t}):[],c=r.get(\"deferredVersionFolder\"),f=n.filter(P=>J.contains(c,P)!==null);if(f.length>1)throw new nt(`Your current branch contains multiple versioning files; this isn't supported:\n- ${f.map(P=>fe.fromPortablePath(P)).join(`\n- `)}`);let p=new Set(je.mapAndFilter(n,P=>{let I=t.tryWorkspaceByFilePath(P);return I===null?je.mapAndFilter.skip:I}));if(f.length===0&&p.size===0&&!e)return null;let h=f.length===1?f[0]:J.join(c,`${Nn.makeHash(Math.random().toString()).slice(0,8)}.yml`),E=ce.existsSync(h)?await ce.readFilePromise(h,\"utf8\"):\"{}\",C=ls(E),S=new Map;for(let P of C.declined||[]){let I=G.parseIdent(P),R=t.getWorkspaceByIdent(I);S.set(R,\"decline\")}for(let[P,I]of Object.entries(C.releases||{})){let R=G.parseIdent(P),N=t.getWorkspaceByIdent(R);S.set(N,dy(I))}return{project:t,root:s,baseHash:a!==null?a.hash:null,baseTitle:a!==null?a.title:null,changedFiles:new Set(n),changedWorkspaces:p,releaseRoots:new Set([...p].filter(P=>P.manifest.version!==null)),releases:S,async saveAll(){let P={},I=[],R=[];for(let N of t.workspaces){if(N.manifest.version===null)continue;let U=G.stringifyIdent(N.anchoredLocator),W=S.get(N);W===\"decline\"?I.push(U):typeof W<\"u\"?P[U]=dy(W):p.has(N)&&R.push(U)}await ce.mkdirPromise(J.dirname(h),{recursive:!0}),await ce.changeFilePromise(h,nl(new nl.PreserveOrdering({releases:Object.keys(P).length>0?P:void 0,declined:I.length>0?I:void 0,undecided:R.length>0?R:void 0})))}}}function pPt(t){return UL(t).size>0||aP(t).length>0}function UL(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 aP(t,{include:e=new Set}={}){let r=[],s=new Map(je.mapAndFilter([...t.releases],([n,c])=>c===\"decline\"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n])),a=new Map(je.mapAndFilter([...t.releases],([n,c])=>c!==\"decline\"?je.mapAndFilter.skip:[n.anchoredLocator.locatorHash,n]));for(let n of t.project.workspaces)if(!(!e.has(n)&&(a.has(n.anchoredLocator.locatorHash)||s.has(n.anchoredLocator.locatorHash)))&&n.manifest.version!==null)for(let c of Ut.hardDependencies)for(let f of n.manifest.getForScope(c).values()){let p=t.project.tryWorkspaceByDescriptor(f);p!==null&&s.has(p.anchoredLocator.locatorHash)&&r.push([n,p])}return r}function fz(t,e){let r=kA.default.clean(e);for(let s of Object.values(G1))if(s!==\"undecided\"&&s!==\"decline\"&&kA.default.inc(t,s)===r)return s;return null}function sP(t,e){if(kA.default.valid(e))return e;if(t===null)throw new nt(`Cannot apply the release strategy \"${e}\" unless the workspace already has a valid version`);if(!kA.default.valid(t))throw new nt(`Cannot apply the release strategy \"${e}\" on a non-semver version (${t})`);let r=kA.default.inc(t,e);if(r===null)throw new nt(`Cannot apply the release strategy \"${e}\" on the specified version (${t})`);return r}function Az(t,e,{report:r,exact:s}){let a=new Map;for(let n of t.workspaces)for(let c of Ut.allDependencies)for(let f of n.manifest[c].values()){let p=t.tryWorkspaceByDescriptor(f);if(p===null||!e.has(p))continue;je.getArrayWithDefault(a,p).push([n,c,f.identHash])}for(let[n,c]of e){let f=n.manifest.version;n.manifest.version=c,kA.default.prerelease(c)===null?delete n.manifest.raw.stableVersion:n.manifest.raw.stableVersion||(n.manifest.raw.stableVersion=f);let p=n.manifest.name!==null?G.stringifyIdent(n.manifest.name):null;r.reportInfo(0,`${G.prettyLocator(t.configuration,n.anchoredLocator)}: Bumped to ${c}`),r.reportJson({cwd:fe.fromPortablePath(n.cwd),ident:p,oldVersion:f,newVersion:c});let h=a.get(n);if(!(typeof h>\"u\"))for(let[E,C,S]of h){let P=E.manifest[C].get(S);if(typeof P>\"u\")throw new Error(\"Assertion failed: The dependency should have existed\");let I=P.range,R=!1;if(I.startsWith(Ei.protocol)&&(I=I.slice(Ei.protocol.length),R=!0,I===n.relativeCwd))continue;let N=I.match(APt);if(!N){r.reportWarning(0,`Couldn't auto-upgrade range ${I} (in ${G.prettyLocator(t.configuration,E.anchoredLocator)})`);continue}let U=s?`${c}`:`${N[1]}${c}`;R&&(U=`${Ei.protocol}${U}`);let W=G.makeDescriptor(P,U);E.manifest[C].set(S,W)}}}var hPt=new Map([[\"%n\",{extract:t=>t.length>=1?[t[0],t.slice(1)]:null,generate:(t=0)=>`${t+1}`}]]);function pke(t,{current:e,prerelease:r}){let s=new kA.default.SemVer(e),a=s.prerelease.slice(),n=[];s.prerelease=[],s.format()!==t&&(a.length=0);let c=!0,f=r.split(/\\./g);for(let p of f){let h=hPt.get(p);if(typeof h>\"u\")n.push(p),a[0]===p?a.shift():c=!1;else{let E=c?h.extract(a):null;E!==null&&typeof E[0]==\"number\"?(n.push(h.generate(E[0])),a=E[1]):(n.push(h.generate()),c=!1)}}return s.prerelease&&(s.prerelease=[]),`${t}-${n.join(\".\")}`}var Y1=class extends ft{constructor(){super(...arguments);this.all=ge.Boolean(\"--all\",!1,{description:\"Apply the deferred version changes on all workspaces\"});this.dryRun=ge.Boolean(\"--dry-run\",!1,{description:\"Print the versions without actually generating the package archive\"});this.prerelease=ge.String(\"--prerelease\",{description:\"Add a prerelease identifier to new versions\",tolerateBoolean:!0});this.exact=ge.Boolean(\"--exact\",!1,{description:\"Use the exact version of each package, removes any range. Useful for nightly releases where the range might match another version.\"});this.recursive=ge.Boolean(\"-R,--recursive\",{description:\"Release the transitive workspaces as well\"});this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"})}static{this.paths=[[\"version\",\"apply\"]]}static{this.usage=ot.Usage({category:\"Release-related commands\",description:\"apply all the deferred version bumps at once\",details:`\n      This command will apply the deferred version changes and remove their definitions from the repository.\n\n      Note that if \\`--prerelease\\` is set, the given prerelease identifier (by default \\`rc.%n\\`) will be used on all new versions and the version definitions will be kept as-is.\n\n      By default only the current workspace will be bumped, but you can configure this behavior by using one of:\n\n      - \\`--recursive\\` to also apply the version bump on its dependencies\n      - \\`--all\\` to apply the version bump on all packages in the repository\n\n      Note that this command will also update the \\`workspace:\\` references across all your local workspaces, thus ensuring that they keep referring to the same workspaces even after the version bump.\n    `,examples:[[\"Apply the version change to the local workspace\",\"yarn version apply\"],[\"Apply the version change to all the workspaces in the local workspace\",\"yarn version apply --all\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);if(!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState({restoreResolutions:!1});let c=await Ot.start({configuration:r,json:this.json,stdout:this.context.stdout},async f=>{let p=this.prerelease?typeof this.prerelease!=\"boolean\"?this.prerelease:\"rc.%n\":null,h=await oP(s,{prerelease:p}),E=new Map;if(this.all)E=h;else{let C=this.recursive?a.getRecursiveWorkspaceDependencies():[a];for(let S of C){let P=h.get(S);typeof P<\"u\"&&E.set(S,P)}}if(E.size===0){let C=h.size>0?\" Did you want to add --all?\":\"\";f.reportWarning(0,`The current workspace doesn't seem to require a version bump.${C}`);return}Az(s,E,{report:f,exact:this.exact}),this.dryRun||(p||(this.all?await cz(s):await uz(s,[...E.keys()])),f.reportSeparator())});return this.dryRun||c.hasErrors()?c.exitCode():await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n})}};Ge();Dt();Yt();var _L=ut(Ai());var V1=class extends ft{constructor(){super(...arguments);this.interactive=ge.Boolean(\"-i,--interactive\",{description:\"Open an interactive interface used to set version bumps\"})}static{this.paths=[[\"version\",\"check\"]]}static{this.usage=ot.Usage({category:\"Release-related commands\",description:\"check that all the relevant packages have been bumped\",details:\"\\n      **Warning:** This command currently requires Git.\\n\\n      This command will check that all the packages covered by the files listed in argument have been properly bumped or declined to bump.\\n\\n      In the case of a bump, the check will also cover transitive packages - meaning that should `Foo` be bumped, a package `Bar` depending on `Foo` will require a decision as to whether `Bar` will need to be bumped. This check doesn't cross packages that have declined to bump.\\n\\n      In case no arguments are passed to the function, the list of modified files will be generated by comparing the HEAD against `master`.\\n    \",examples:[[\"Check whether the modified packages need a bump\",\"yarn version check\"]]})}async execute(){return this.interactive?await this.executeInteractive():await this.executeStandard()}async executeInteractive(){iw(this.context);let{Gem:r}=await Promise.resolve().then(()=>(WF(),LW)),{ScrollableItems:s}=await Promise.resolve().then(()=>(KF(),JF)),{FocusRequest:a}=await Promise.resolve().then(()=>(UW(),v2e)),{useListInput:n}=await Promise.resolve().then(()=>(VF(),S2e)),{renderForm:c}=await Promise.resolve().then(()=>($F(),ZF)),{Box:f,Text:p}=await Promise.resolve().then(()=>ut(Wc())),{default:h,useCallback:E,useState:C}=await Promise.resolve().then(()=>ut(hn())),S=await ze.find(this.context.cwd,this.context.plugins),{project:P,workspace:I}=await Tt.find(S,this.context.cwd);if(!I)throw new ar(P.cwd,this.context.cwd);await P.restoreInstallState();let R=await q1(P);if(R===null||R.releaseRoots.size===0)return 0;if(R.root===null)throw new nt(\"This command can only be run on Git repositories\");let N=()=>h.createElement(f,{flexDirection:\"row\",paddingBottom:1},h.createElement(f,{flexDirection:\"column\",width:60},h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<up>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<down>\"),\" to select workspaces.\")),h.createElement(f,null,h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<left>\"),\"/\",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<right>\"),\" to select release strategies.\"))),h.createElement(f,{flexDirection:\"column\"},h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<enter>\"),\" to save.\")),h.createElement(f,{marginLeft:1},h.createElement(p,null,\"Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<ctrl+c>\"),\" to abort.\")))),U=({workspace:me,active:pe,decision:Be,setDecision:Ce})=>{let g=me.manifest.raw.stableVersion??me.manifest.version;if(g===null)throw new Error(`Assertion failed: The version should have been set (${G.prettyLocator(S,me.anchoredLocator)})`);if(_L.default.prerelease(g)!==null)throw new Error(`Assertion failed: Prerelease identifiers shouldn't be found (${g})`);let we=[\"undecided\",\"decline\",\"patch\",\"minor\",\"major\"];n(Be,we,{active:pe,minus:\"left\",plus:\"right\",set:Ce});let ye=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\"},_L.default.valid(Be)?Be:_L.default.inc(g,Be)));return h.createElement(f,{flexDirection:\"column\"},h.createElement(f,null,h.createElement(p,null,G.prettyLocator(S,me.anchoredLocator),\" - \",ye)),h.createElement(f,null,we.map(Ae=>h.createElement(f,{key:Ae,paddingLeft:2},h.createElement(p,null,h.createElement(r,{active:Ae===Be}),\" \",Ae)))))},W=me=>{let pe=new Set(R.releaseRoots),Be=new Map([...me].filter(([Ce])=>pe.has(Ce)));for(;;){let Ce=aP({project:R.project,releases:Be}),g=!1;if(Ce.length>0){for(let[we]of Ce)if(!pe.has(we)){pe.add(we),g=!0;let ye=me.get(we);typeof ye<\"u\"&&Be.set(we,ye)}}if(!g)break}return{relevantWorkspaces:pe,relevantReleases:Be}},ee=()=>{let[me,pe]=C(()=>new Map(R.releases)),Be=E((Ce,g)=>{let we=new Map(me);g!==\"undecided\"?we.set(Ce,g):we.delete(Ce);let{relevantReleases:ye}=W(we);pe(ye)},[me,pe]);return[me,Be]},ie=({workspaces:me,releases:pe})=>{let Be=[];Be.push(`${me.size} total`);let Ce=0,g=0;for(let we of me){let ye=pe.get(we);typeof ye>\"u\"?g+=1:ye!==\"decline\"&&(Ce+=1)}return Be.push(`${Ce} release${Ce===1?\"\":\"s\"}`),Be.push(`${g} remaining`),h.createElement(p,{color:\"yellow\"},Be.join(\", \"))},le=await c(({useSubmit:me})=>{let[pe,Be]=ee();me(pe);let{relevantWorkspaces:Ce}=W(pe),g=new Set([...Ce].filter(se=>!R.releaseRoots.has(se))),[we,ye]=C(0),Ae=E(se=>{switch(se){case a.BEFORE:ye(we-1);break;case a.AFTER:ye(we+1);break}},[we,ye]);return h.createElement(f,{flexDirection:\"column\"},h.createElement(N,null),h.createElement(f,null,h.createElement(p,{wrap:\"wrap\"},\"The following files have been modified in your local checkout.\")),h.createElement(f,{flexDirection:\"column\",marginTop:1,paddingLeft:2},[...R.changedFiles].map(se=>h.createElement(f,{key:se},h.createElement(p,null,h.createElement(p,{color:\"grey\"},fe.fromPortablePath(R.root)),fe.sep,fe.relative(fe.fromPortablePath(R.root),fe.fromPortablePath(se)))))),R.releaseRoots.size>0&&h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"Because of those files having been modified, the following workspaces may need to be released again (note that private workspaces are also shown here, because even though they won't be published, releasing them will allow us to flag their dependents for potential re-release):\")),g.size>3?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:R.releaseRoots,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:\"column\"},h.createElement(s,{active:we%2===0,radius:1,size:2,onFocusRequest:Ae},[...R.releaseRoots].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||\"undecided\",setDecision:Z=>Be(se,Z)}))))),g.size>0?h.createElement(h.Fragment,null,h.createElement(f,{marginTop:1},h.createElement(p,{wrap:\"wrap\"},\"The following workspaces depend on other workspaces that have been marked for release, and thus may need to be released as well:\")),h.createElement(f,null,h.createElement(p,null,\"(Press \",h.createElement(p,{bold:!0,color:\"cyanBright\"},\"<tab>\"),\" to move the focus between the workspace groups.)\")),g.size>5?h.createElement(f,{marginTop:1},h.createElement(ie,{workspaces:g,releases:pe})):null,h.createElement(f,{marginTop:1,flexDirection:\"column\"},h.createElement(s,{active:we%2===1,radius:2,size:2,onFocusRequest:Ae},[...g].map(se=>h.createElement(U,{key:se.cwd,workspace:se,decision:pe.get(se)||\"undecided\",setDecision:Z=>Be(se,Z)}))))):null)},{versionFile:R},{stdin:this.context.stdin,stdout:this.context.stdout,stderr:this.context.stderr});if(typeof le>\"u\")return 1;R.releases.clear();for(let[me,pe]of le)R.releases.set(me,pe);await R.saveAll()}async executeStandard(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);return await s.restoreInstallState(),(await Ot.start({configuration:r,stdout:this.context.stdout},async c=>{let f=await q1(s);if(f===null||f.releaseRoots.size===0)return;if(f.root===null)throw new nt(\"This command can only be run on Git repositories\");if(c.reportInfo(0,`Your PR was started right after ${he.pretty(r,f.baseHash.slice(0,7),\"yellow\")} ${he.pretty(r,f.baseTitle,\"magenta\")}`),f.changedFiles.size>0){c.reportInfo(0,\"You have changed the following files since then:\"),c.reportSeparator();for(let S of f.changedFiles)c.reportInfo(null,`${he.pretty(r,fe.fromPortablePath(f.root),\"gray\")}${fe.sep}${fe.relative(fe.fromPortablePath(f.root),fe.fromPortablePath(S))}`)}let p=!1,h=!1,E=UL(f);if(E.size>0){p||c.reportSeparator();for(let S of E)c.reportError(0,`${G.prettyLocator(r,S.anchoredLocator)} has been modified but doesn't have a release strategy attached`);p=!0}let C=aP(f);for(let[S,P]of C)h||c.reportSeparator(),c.reportError(0,`${G.prettyLocator(r,S.anchoredLocator)} doesn't have a release strategy attached, but depends on ${G.prettyWorkspace(r,P)} which is planned for release.`),h=!0;(p||h)&&(c.reportSeparator(),c.reportInfo(0,\"This command detected that at least some workspaces have received modifications without explicit instructions as to how they had to be released (if needed).\"),c.reportInfo(0,\"To correct these errors, run `yarn version check --interactive` then follow the instructions.\"))})).exitCode()}};Ge();Yt();var HL=ut(Ai());var J1=class extends ft{constructor(){super(...arguments);this.deferred=ge.Boolean(\"-d,--deferred\",{description:\"Prepare the version to be bumped during the next release cycle\"});this.immediate=ge.Boolean(\"-i,--immediate\",{description:\"Bump the version immediately\"});this.strategy=ge.String()}static{this.paths=[[\"version\"]]}static{this.usage=ot.Usage({category:\"Release-related commands\",description:\"apply a new version to the current package\",details:\"\\n      This command will bump the version number for the given package, following the specified strategy:\\n\\n      - If `major`, the first number from the semver range will be increased (`X.0.0`).\\n      - If `minor`, the second number from the semver range will be increased (`0.X.0`).\\n      - If `patch`, the third number from the semver range will be increased (`0.0.X`).\\n      - If prefixed by `pre` (`premajor`, ...), a `-0` suffix will be set (`0.0.0-0`).\\n      - If `prerelease`, the suffix will be increased (`0.0.0-X`); the third number from the semver range will also be increased if there was no suffix in the previous version.\\n      - If `decline`, the nonce will be increased for `yarn version check` to pass without version bump.\\n      - If a valid semver range, it will be used as new version.\\n      - If unspecified, Yarn will ask you for guidance.\\n\\n      For more information about the `--deferred` flag, consult our documentation (https://yarnpkg.com/features/release-workflow#deferred-versioning).\\n    \",examples:[[\"Immediately bump the version to the next major\",\"yarn version major\"],[\"Prepare the version to be bumped to the next major\",\"yarn version major --deferred\"]]})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!a)throw new ar(s.cwd,this.context.cwd);let n=r.get(\"preferDeferredVersions\");this.deferred&&(n=!0),this.immediate&&(n=!1);let c=HL.default.valid(this.strategy),f=this.strategy===\"decline\",p;if(c)if(a.manifest.version!==null){let E=fz(a.manifest.version,this.strategy);E!==null?p=E:p=this.strategy}else p=this.strategy;else{let E=a.manifest.version;if(!f){if(E===null)throw new nt(\"Can't bump the version if there wasn't a version to begin with - use 0.0.0 as initial version then run the command again.\");if(typeof E!=\"string\"||!HL.default.valid(E))throw new nt(`Can't bump the version (${E}) if it's not valid semver`)}p=dy(this.strategy)}if(!n){let C=(await oP(s)).get(a);if(typeof C<\"u\"&&p!==\"decline\"){let S=sP(a.manifest.version,p);if(HL.default.lt(S,C))throw new nt(`Can't bump the version to one that would be lower than the current deferred one (${C})`)}}let h=await q1(s,{allowEmpty:!0});return h.releases.set(a,p),await h.saveAll(),n?0:await this.cli.run([\"version\",\"apply\"])}};var gPt={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:[Y1,V1,J1]},dPt=gPt;var hz={};Vt(hz,{WorkspacesFocusCommand:()=>K1,WorkspacesForeachCommand:()=>X1,default:()=>EPt});Ge();Ge();Yt();var K1=class extends ft{constructor(){super(...arguments);this.json=ge.Boolean(\"--json\",!1,{description:\"Format the output as an NDJSON stream\"});this.production=ge.Boolean(\"--production\",!1,{description:\"Only install regular dependencies by omitting dev dependencies\"});this.all=ge.Boolean(\"-A,--all\",!1,{description:\"Install the entire project\"});this.workspaces=ge.Rest()}static{this.paths=[[\"workspaces\",\"focus\"]]}static{this.usage=ot.Usage({category:\"Workspace-related commands\",description:\"install a single workspace and its dependencies\",details:\"\\n      This command will run an install as if the specified workspaces (and all other workspaces they depend on) were the only ones in the project. If no workspaces are explicitly listed, the active one will be assumed.\\n\\n      Note that this command is only very moderately useful when using zero-installs, since the cache will contain all the packages anyway - meaning that the only difference between a full install and a focused install would just be a few extra lines in the `.pnp.cjs` file, at the cost of introducing an extra complexity.\\n\\n      If the `-A,--all` flag is set, the entire project will be installed. Combine with `--production` to replicate the old `yarn install --production`.\\n    \"})}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd),n=await Kr.find(r);await s.restoreInstallState({restoreResolutions:!1});let c;if(this.all)c=new Set(s.workspaces);else if(this.workspaces.length===0){if(!a)throw new ar(s.cwd,this.context.cwd);c=new Set([a])}else c=new Set(this.workspaces.map(f=>s.getWorkspaceByIdent(G.parseIdent(f))));for(let f of c)for(let p of this.production?[\"dependencies\"]:Ut.hardDependencies)for(let h of f.manifest.getForScope(p).values()){let E=s.tryWorkspaceByDescriptor(h);E!==null&&c.add(E)}for(let f of s.workspaces)c.has(f)?this.production&&f.manifest.devDependencies.clear():(f.manifest.installConfig=f.manifest.installConfig||{},f.manifest.installConfig.selfReferences=!1,f.manifest.dependencies.clear(),f.manifest.devDependencies.clear(),f.manifest.peerDependencies.clear(),f.manifest.scripts.clear());return await s.installWithNewReport({json:this.json,stdout:this.context.stdout},{cache:n,persistProject:!1})}};Ge();Ge();Ge();Yt();var z1=ut(Go()),gke=ut(Ld());Ul();var X1=class extends ft{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:g_([fo([\"unlimited\"]),$2(h_(),[m_(),d_(1)])])});this.topological=ge.Boolean(\"-t,--topological\",!1,{description:\"Run the command after all workspaces it depends on (regular) have finished\"});this.topologicalDev=ge.Boolean(\"--topological-dev\",!1,{description:\"Run the command after all workspaces it depends on (regular + dev) have finished\"});this.include=ge.Array(\"--include\",[],{description:\"An array of glob pattern idents or paths; only matching workspaces will be traversed\"});this.exclude=ge.Array(\"--exclude\",[],{description:\"An array of glob pattern idents or paths; matching workspaces won't be traversed\"});this.publicOnly=ge.Boolean(\"--no-private\",{description:\"Avoid running the command on private workspaces\"});this.since=ge.String(\"--since\",{description:\"Only include workspaces that have been changed since the specified ref.\",tolerateBoolean:!0});this.dryRun=ge.Boolean(\"-n,--dry-run\",{description:\"Print the commands that would be run, without actually running them\"});this.commandName=ge.String();this.args=ge.Proxy()}static{this.paths=[[\"workspaces\",\"foreach\"]]}static{this.usage=ot.Usage({category:\"Workspace-related commands\",description:\"run a command on all workspaces\",details:\"\\n      This command will run a given sub-command on current and all its descendant workspaces. Various flags can alter the exact behavior of the command:\\n\\n      - If `-p,--parallel` is set, the commands will be ran in parallel; they'll by default be limited to a number of parallel tasks roughly equal to half your core number, but that can be overridden via `-j,--jobs`, or disabled by setting `-j unlimited`.\\n\\n      - If `-p,--parallel` and `-i,--interlaced` are both set, Yarn will print the lines from the output as it receives them. If `-i,--interlaced` wasn't set, it would instead buffer the output from each process and print the resulting buffers only after their source processes have exited.\\n\\n      - If `-t,--topological` is set, Yarn will only run the command after all workspaces that it depends on through the `dependencies` field have successfully finished executing. If `--topological-dev` is set, both the `dependencies` and `devDependencies` fields will be considered when figuring out the wait points.\\n\\n      - If `-A,--all` is set, Yarn will run the command on all the workspaces of a project.\\n\\n      - If `-R,--recursive` is set, Yarn will find workspaces to run the command on by recursively evaluating `dependencies` and `devDependencies` fields, instead of looking at the `workspaces` fields.\\n\\n      - If `-W,--worktree` is set, Yarn will find workspaces to run the command on by looking at the current worktree.\\n\\n      - If `--from` is set, Yarn will use the packages matching the 'from' glob as the starting point for any recursive search.\\n\\n      - If `--since` is set, Yarn will only run the command on workspaces that have been modified since the specified ref. By default Yarn will use the refs specified by the `changesetBaseRefs` configuration option.\\n\\n      - If `--dry-run` is set, Yarn will explain what it would do without actually doing anything.\\n\\n      - The command may apply to only some workspaces through the use of `--include` which acts as a whitelist. The `--exclude` flag will do the opposite and will be a list of packages that mustn't execute the script. Both flags accept glob patterns (if valid Idents and supported by [micromatch](https://github.com/micromatch/micromatch)). Make sure to escape the patterns, to prevent your own shell from trying to expand them. You can also use the `--no-private` flag to avoid running the command in private workspaces.\\n\\n      The `-v,--verbose` flag can be passed up to twice: once to prefix output lines with the originating workspace's name, and again to include start/finish/timing log lines. Maximum verbosity is enabled by default in terminal environments.\\n\\n      If the command is `run` and the script being run does not exist the child workspace will be skipped without error.\\n    \",examples:[[\"Publish all packages\",\"yarn workspaces foreach -A --no-private npm publish --tolerate-republish\"],[\"Run the build script on all descendant packages\",\"yarn workspaces foreach -A run build\"],[\"Run the build script on current and all descendant packages in parallel, building package dependencies first\",\"yarn workspaces foreach -Apt run build\"],[\"Run the build script on several packages and all their dependencies, building dependencies first\",\"yarn workspaces foreach -Rpt --from '{workspace-a,workspace-b}' run build\"]]})}static{this.schema=[tB(\"all\",qf.Forbids,[\"from\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"}),y_([\"all\",\"recursive\",\"since\",\"worktree\"],{missingIf:\"undefined\"})]}async execute(){let r=await ze.find(this.context.cwd,this.context.plugins),{project:s,workspace:a}=await Tt.find(r,this.context.cwd);if(!this.all&&!a)throw new ar(s.cwd,this.context.cwd);await s.restoreInstallState();let n=this.cli.process([this.commandName,...this.args]),c=n.path.length===1&&n.path[0]===\"run\"&&typeof n.scriptName<\"u\"?n.scriptName:null;if(n.path.length===0)throw new nt(\"Invalid subcommand name for iteration - use the 'run' keyword if you wish to execute a script\");let f=Ce=>{this.dryRun&&this.context.stdout.write(`${Ce}\n`)},p=()=>{let Ce=this.from.map(g=>z1.default.matcher(g));return s.workspaces.filter(g=>{let we=G.stringifyIdent(g.anchoredLocator),ye=g.relativeCwd;return Ce.some(Ae=>Ae(we)||Ae(ye))})},h=[];if(this.since?(f(\"Option --since is set; selecting the changed workspaces as root for workspace selection\"),h=Array.from(await ka.fetchChangedWorkspaces({ref:this.since,project:s}))):this.from?(f(\"Option --from is set; selecting the specified workspaces\"),h=[...p()]):this.worktree?(f(\"Option --worktree is set; selecting the current workspace\"),h=[a]):this.recursive?(f(\"Option --recursive is set; selecting the current workspace\"),h=[a]):this.all&&(f(\"Option --all is set; selecting all workspaces\"),h=[...s.workspaces]),this.dryRun&&!this.all){for(let Ce of h)f(`\n- ${Ce.relativeCwd}\n  ${G.prettyLocator(r,Ce.anchoredLocator)}`);h.length>0&&f(\"\")}let E;if(this.recursive?this.since?(f(\"Option --recursive --since is set; recursively selecting all dependent workspaces\"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependents()]).flat())):(f(\"Option --recursive is set; recursively selecting all transitive dependencies\"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceDependencies()]).flat())):this.worktree?(f(\"Option --worktree is set; recursively selecting all nested workspaces\"),E=new Set(h.map(Ce=>[...Ce.getRecursiveWorkspaceChildren()]).flat())):E=null,E!==null&&(h=[...new Set([...h,...E])],this.dryRun))for(let Ce of E)f(`\n- ${Ce.relativeCwd}\n  ${G.prettyLocator(r,Ce.anchoredLocator)}`);let C=[],S=!1;if(c?.includes(\":\")){for(let Ce of s.workspaces)if(Ce.manifest.scripts.has(c)&&(S=!S,S===!1))break}for(let Ce of h){if(c&&!Ce.manifest.scripts.has(c)&&!S&&!(await In.getWorkspaceAccessibleBinaries(Ce)).has(c)){f(`Excluding ${Ce.relativeCwd} because it doesn't have a \"${c}\" script`);continue}if(!(c===r.env.npm_lifecycle_event&&Ce.cwd===a.cwd)){if(this.include.length>0&&!z1.default.isMatch(G.stringifyIdent(Ce.anchoredLocator),this.include)&&!z1.default.isMatch(Ce.relativeCwd,this.include)){f(`Excluding ${Ce.relativeCwd} because it doesn't match the --include filter`);continue}if(this.exclude.length>0&&(z1.default.isMatch(G.stringifyIdent(Ce.anchoredLocator),this.exclude)||z1.default.isMatch(Ce.relativeCwd,this.exclude))){f(`Excluding ${Ce.relativeCwd} because it matches the --exclude filter`);continue}if(this.publicOnly&&Ce.manifest.private===!0){f(`Excluding ${Ce.relativeCwd} because it's a private workspace and --no-private was set`);continue}C.push(Ce)}}if(this.dryRun)return 0;let P=this.verbose??(this.context.stdout.isTTY?1/0:0),I=P>0,R=P>1,N=this.parallel?this.jobs===\"unlimited\"?1/0:Number(this.jobs)||Math.ceil(Ui.availableParallelism()/2):1,U=N===1?!1:this.parallel,W=U?this.interlaced:!0,ee=(0,gke.default)(N),ie=new Map,ue=new Set,le=0,me=null,pe=!1,Be=await Ot.start({configuration:r,stdout:this.context.stdout,includePrefix:!1},async Ce=>{let g=async(we,{commandIndex:ye})=>{if(pe)return-1;!U&&R&&ye>1&&Ce.reportSeparator();let Ae=mPt(we,{configuration:r,label:I,commandIndex:ye}),[se,Z]=hke(Ce,{prefix:Ae,interlaced:W}),[De,Re]=hke(Ce,{prefix:Ae,interlaced:W});try{R&&Ce.reportInfo(null,`${Ae?`${Ae} `:\"\"}Process started`);let mt=Date.now(),j=await this.cli.run([this.commandName,...this.args],{cwd:we.cwd,stdout:se,stderr:De})||0;se.end(),De.end(),await Z,await Re;let rt=Date.now();if(R){let Fe=r.get(\"enableTimers\")?`, completed in ${he.pretty(r,rt-mt,he.Type.DURATION)}`:\"\";Ce.reportInfo(null,`${Ae?`${Ae} `:\"\"}Process exited (exit code ${j})${Fe}`)}return j===130&&(pe=!0,me=j),j}catch(mt){throw se.end(),De.end(),await Z,await Re,mt}};for(let we of C)ie.set(we.anchoredLocator.locatorHash,we);for(;ie.size>0&&!Ce.hasErrors();){let we=[];for(let[Z,De]of ie){if(ue.has(De.anchoredDescriptor.descriptorHash))continue;let Re=!0;if(this.topological||this.topologicalDev){let mt=this.topologicalDev?new Map([...De.manifest.dependencies,...De.manifest.devDependencies]):De.manifest.dependencies;for(let j of mt.values()){let rt=s.tryWorkspaceByDescriptor(j);if(Re=rt===null||!ie.has(rt.anchoredLocator.locatorHash),!Re)break}}if(Re&&(ue.add(De.anchoredDescriptor.descriptorHash),we.push(ee(async()=>{let mt=await g(De,{commandIndex:++le});return ie.delete(Z),ue.delete(De.anchoredDescriptor.descriptorHash),{workspace:De,exitCode:mt}})),!U))break}if(we.length===0){let Z=Array.from(ie.values()).map(De=>G.prettyLocator(r,De.anchoredLocator)).join(\", \");Ce.reportError(3,`Dependency cycle detected (${Z})`);return}let ye=await Promise.all(we);ye.forEach(({workspace:Z,exitCode:De})=>{De!==0&&Ce.reportError(0,`The command failed in workspace ${G.prettyLocator(r,Z.anchoredLocator)} with exit code ${De}`)});let se=ye.map(Z=>Z.exitCode).find(Z=>Z!==0);(this.topological||this.topologicalDev)&&typeof se<\"u\"&&Ce.reportError(0,\"The command failed for workspaces that are depended upon by other workspaces; can't satisfy the dependency graph\")}});return me!==null?me:Be.exitCode()}};function hke(t,{prefix:e,interlaced:r}){let s=t.createStreamReporter(e),a=new je.DefaultStream;a.pipe(s,{end:!1}),a.on(\"finish\",()=>{s.end()});let n=new Promise(f=>{s.on(\"finish\",()=>{f(a.active)})});if(r)return[a,n];let c=new je.BufferStream;return c.pipe(a,{end:!1}),c.on(\"finish\",()=>{a.end()}),[c,n]}function mPt(t,{configuration:e,commandIndex:r,label:s}){if(!s)return null;let n=`[${G.stringifyIdent(t.anchoredLocator)}]:`,c=[\"#2E86AB\",\"#A23B72\",\"#F18F01\",\"#C73E1D\",\"#CCE2A3\"],f=c[r%c.length];return he.pretty(e,n,f)}var yPt={commands:[K1,X1]},EPt=yPt;var tC=()=>({modules:new Map([[\"@yarnpkg/cli\",Gv],[\"@yarnpkg/core\",jv],[\"@yarnpkg/fslib\",_2],[\"@yarnpkg/libzip\",fv],[\"@yarnpkg/parsers\",J2],[\"@yarnpkg/shell\",mv],[\"clipanion\",oB],[\"semver\",IPt],[\"typanion\",Ea],[\"@yarnpkg/plugin-essentials\",hq],[\"@yarnpkg/plugin-catalog\",yq],[\"@yarnpkg/plugin-compat\",Bq],[\"@yarnpkg/plugin-constraints\",_q],[\"@yarnpkg/plugin-dlx\",Hq],[\"@yarnpkg/plugin-exec\",qq],[\"@yarnpkg/plugin-file\",Yq],[\"@yarnpkg/plugin-git\",pq],[\"@yarnpkg/plugin-github\",Kq],[\"@yarnpkg/plugin-http\",zq],[\"@yarnpkg/plugin-init\",Xq],[\"@yarnpkg/plugin-interactive-tools\",JW],[\"@yarnpkg/plugin-jsr\",zW],[\"@yarnpkg/plugin-link\",XW],[\"@yarnpkg/plugin-nm\",FY],[\"@yarnpkg/plugin-npm\",FK],[\"@yarnpkg/plugin-npm-cli\",qK],[\"@yarnpkg/plugin-pack\",bV],[\"@yarnpkg/plugin-patch\",XK],[\"@yarnpkg/plugin-pnp\",wY],[\"@yarnpkg/plugin-pnpm\",ez],[\"@yarnpkg/plugin-stage\",az],[\"@yarnpkg/plugin-typescript\",lz],[\"@yarnpkg/plugin-version\",pz],[\"@yarnpkg/plugin-workspace-tools\",hz]]),plugins:new Set([\"@yarnpkg/plugin-essentials\",\"@yarnpkg/plugin-catalog\",\"@yarnpkg/plugin-compat\",\"@yarnpkg/plugin-constraints\",\"@yarnpkg/plugin-dlx\",\"@yarnpkg/plugin-exec\",\"@yarnpkg/plugin-file\",\"@yarnpkg/plugin-git\",\"@yarnpkg/plugin-github\",\"@yarnpkg/plugin-http\",\"@yarnpkg/plugin-init\",\"@yarnpkg/plugin-interactive-tools\",\"@yarnpkg/plugin-jsr\",\"@yarnpkg/plugin-link\",\"@yarnpkg/plugin-nm\",\"@yarnpkg/plugin-npm\",\"@yarnpkg/plugin-npm-cli\",\"@yarnpkg/plugin-pack\",\"@yarnpkg/plugin-patch\",\"@yarnpkg/plugin-pnp\",\"@yarnpkg/plugin-pnpm\",\"@yarnpkg/plugin-stage\",\"@yarnpkg/plugin-typescript\",\"@yarnpkg/plugin-version\",\"@yarnpkg/plugin-workspace-tools\"])});function yke({cwd:t,pluginConfiguration:e}){let r=new Ca({binaryLabel:\"Yarn Package Manager\",binaryName:\"yarn\",binaryVersion:fn??\"<unknown>\"});return Object.assign(r,{defaultContext:{...Ca.defaultContext,cwd:t,plugins:e,quiet:!1,stdin:process.stdin,stdout:process.stdout,stderr:process.stderr}})}function CPt(t){if(je.parseOptionalBoolean(process.env.YARN_IGNORE_NODE))return!0;let r=process.versions.node,s=\">=18.12.0\";if(Fr.satisfiesWithPrereleases(r,s))return!0;let a=new nt(`This tool requires a Node version compatible with ${s} (got ${r}). Upgrade Node, or set \\`YARN_IGNORE_NODE=1\\` in your environment.`);return Ca.defaultContext.stdout.write(t.error(a)),!1}async function Eke({selfPath:t,pluginConfiguration:e}){return await ze.find(fe.toPortablePath(process.cwd()),e,{strict:!1,usePathCheck:t})}function wPt(t,e,{yarnPath:r}){if(!ce.existsSync(r))return t.error(new Error(`The \"yarn-path\" option has been set, but the specified location doesn't exist (${r}).`)),1;process.on(\"SIGINT\",()=>{});let s={stdio:\"inherit\",env:{...process.env,YARN_IGNORE_PATH:\"1\"}};try{(0,dke.execFileSync)(process.execPath,[fe.fromPortablePath(r),...e],s)}catch(a){return a.status??1}return 0}function BPt(t,e){let r=null,s=e;return e.length>=2&&e[0]===\"--cwd\"?(r=fe.toPortablePath(e[1]),s=e.slice(2)):e.length>=1&&e[0].startsWith(\"--cwd=\")?(r=fe.toPortablePath(e[0].slice(6)),s=e.slice(1)):e[0]===\"add\"&&e[e.length-2]===\"--cwd\"&&(r=fe.toPortablePath(e[e.length-1]),s=e.slice(0,e.length-2)),t.defaultContext.cwd=r!==null?J.resolve(r):J.cwd(),s}function vPt(t,{configuration:e}){if(!e.get(\"enableTelemetry\")||mke.isCI||!process.stdout.isTTY)return;ze.telemetry=new ZI(e,\"puba9cdc10ec5790a2cf4969dd413a47270\");let s=/^@yarnpkg\\/plugin-(.*)$/;for(let a of e.plugins.keys())$I.has(a.match(s)?.[1]??\"\")&&ze.telemetry?.reportPluginName(a);t.binaryVersion&&ze.telemetry.reportVersion(t.binaryVersion)}function Ike(t,{configuration:e}){for(let r of e.plugins.values())for(let s of r.commands||[])t.register(s)}async function SPt(t,e,{selfPath:r,pluginConfiguration:s}){if(!CPt(t))return 1;let a=await Eke({selfPath:r,pluginConfiguration:s}),n=a.get(\"yarnPath\"),c=a.get(\"ignorePath\");if(n&&!c)return wPt(t,e,{yarnPath:n});delete process.env.YARN_IGNORE_PATH;let f=BPt(t,e);vPt(t,{configuration:a}),Ike(t,{configuration:a});let p=t.process(f,t.defaultContext);return p.help||ze.telemetry?.reportCommandName(p.path.join(\" \")),await t.run(p,t.defaultContext)}async function bde({cwd:t=J.cwd(),pluginConfiguration:e=tC()}={}){let r=yke({cwd:t,pluginConfiguration:e}),s=await Eke({pluginConfiguration:e,selfPath:null});return Ike(r,{configuration:s}),r}async function VR(t,{cwd:e=J.cwd(),selfPath:r,pluginConfiguration:s}){let a=yke({cwd:e,pluginConfiguration:s});function n(){Ca.defaultContext.stdout.write(`ERROR: Yarn is terminating due to an unexpected empty event loop.\nPlease report this issue at https://github.com/yarnpkg/berry/issues.`)}process.once(\"beforeExit\",n);try{process.exitCode=42,process.exitCode=await SPt(a,t,{selfPath:r,pluginConfiguration:s})}catch(c){Ca.defaultContext.stdout.write(a.error(c)),process.exitCode=1}finally{process.off(\"beforeExit\",n),await ce.rmtempPromise()}}VR(process.argv.slice(2),{cwd:J.cwd(),selfPath:fe.toPortablePath(fe.resolve(process.argv[1])),pluginConfiguration:tC()});})();\n/**\n  @license\n  Copyright (c) 2015, Rebecca Turner\n\n  Permission to use, copy, modify, and/or distribute this software for any\n  purpose with or without fee is hereby granted, provided that the above\n  copyright notice and this permission notice appear in all copies.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n  REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n  FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n  INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n  PERFORMANCE OF THIS SOFTWARE.\n */\n/**\n  @license\n  Copyright Node.js contributors. All rights reserved.\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to\n  deal in the Software without restriction, including without limitation the\n  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n  sell copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n  IN THE SOFTWARE.\n*/\n/**\n  @license\n  The MIT License (MIT)\n\n  Copyright (c) 2014 Blake Embrey (hello@blakeembrey.com)\n\n  Permission is hereby granted, free of charge, to any person obtaining a copy\n  of this software and associated documentation files (the \"Software\"), to deal\n  in the Software without restriction, including without limitation the rights\n  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n  copies of the Software, and to permit persons to whom the Software is\n  furnished to do so, subject to the following conditions:\n\n  The above copyright notice and this permission notice shall be included in\n  all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n  THE SOFTWARE.\n*/\n/**\n  @license\n  Copyright Joyent, Inc. and other Node contributors.\n\n  Permission is hereby granted, free of charge, to any person obtaining a\n  copy of this software and associated documentation files (the\n  \"Software\"), to deal in the Software without restriction, including\n  without limitation the rights to use, copy, modify, merge, publish,\n  distribute, sublicense, and/or sell copies of the Software, and to permit\n  persons to whom the Software is furnished to do so, subject to the\n  following conditions:\n\n  The above copyright notice and this permission notice shall be included\n  in all copies or substantial portions of the Software.\n\n  THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n  OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n  NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n  DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n  OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n  USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n/*! Bundled license information:\n\nis-number/index.js:\n  (*!\n   * is-number <https://github.com/jonschlinkert/is-number>\n   *\n   * Copyright (c) 2014-present, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n\nto-regex-range/index.js:\n  (*!\n   * to-regex-range <https://github.com/micromatch/to-regex-range>\n   *\n   * Copyright (c) 2015-present, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n\nfill-range/index.js:\n  (*!\n   * fill-range <https://github.com/jonschlinkert/fill-range>\n   *\n   * Copyright (c) 2014-present, Jon Schlinkert.\n   * Licensed under the MIT License.\n   *)\n\nis-extglob/index.js:\n  (*!\n   * is-extglob <https://github.com/jonschlinkert/is-extglob>\n   *\n   * Copyright (c) 2014-2016, Jon Schlinkert.\n   * Licensed under the MIT License.\n   *)\n\nis-glob/index.js:\n  (*!\n   * is-glob <https://github.com/jonschlinkert/is-glob>\n   *\n   * Copyright (c) 2014-2017, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n\nqueue-microtask/index.js:\n  (*! queue-microtask. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\nrun-parallel/index.js:\n  (*! run-parallel. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)\n\ngit-url-parse/lib/index.js:\n  (*!\n   * buildToken\n   * Builds OAuth token prefix (helper function)\n   *\n   * @name buildToken\n   * @function\n   * @param {GitUrl} obj The parsed Git url object.\n   * @return {String} token prefix\n   *)\n\nobject-assign/index.js:\n  (*\n  object-assign\n  (c) Sindre Sorhus\n  @license MIT\n  *)\n\nreact/cjs/react.production.min.js:\n  (** @license React v17.0.2\n   * react.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nscheduler/cjs/scheduler.production.min.js:\n  (** @license React v0.20.2\n   * scheduler.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nreact-reconciler/cjs/react-reconciler.production.min.js:\n  (** @license React v0.26.2\n   * react-reconciler.production.min.js\n   *\n   * Copyright (c) Facebook, Inc. and its affiliates.\n   *\n   * This source code is licensed under the MIT license found in the\n   * LICENSE file in the root directory of this source tree.\n   *)\n\nis-windows/index.js:\n  (*!\n   * is-windows <https://github.com/jonschlinkert/is-windows>\n   *\n   * Copyright © 2015-2018, Jon Schlinkert.\n   * Released under the MIT License.\n   *)\n*/\n"
  },
  {
    "path": ".yarnrc.yml",
    "content": "compressionLevel: mixed\n\nenableGlobalCache: true\n\ngitHooksPath: .github/hooks\n\nnodeLinker: node-modules\n\nplugins:\n  - path: .yarn/plugins/@yarnpkg/plugin-git-hooks.cjs\n    spec: 'https://raw.githubusercontent.com/trufflehq/yarn-plugin-git-hooks/main/bundles/%40yarnpkg/plugin-git-hooks.js'\n\nyarnPath: .yarn/releases/yarn-4.12.0.cjs\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\n# [8.8.1](https://github.com/favware/graphql-pokemon/compare/v8.8.0...v8.8.1) - (2026-04-23)\n\n## 🐛 Bug Fixes\n\n- Remove `cooldown` and `plusMovePower` ([70957ca](https://github.com/favware/graphql-pokemon/commit/70957ca3853f267b28db04513eeaeb691abd7788))\n\n# [8.8.0](https://github.com/favware/graphql-pokemon/compare/v8.7.3...v8.8.0) - (2026-04-23)\n\n## 🏠 Refactor\n\n- **flavor-text-updater:** Remove unused parser function ([64a4399](https://github.com/favware/graphql-pokemon/commit/64a4399f3102e3a5ef30ff665a59031c46391398))\n- **docker-compose:** Remove version declaration ([b01b314](https://github.com/favware/graphql-pokemon/commit/b01b314f7bf8bcf2bc821ab0cf1a41359965b63f))\n- Update data [skip publish] ([007181f](https://github.com/favware/graphql-pokemon/commit/007181f342098d289805fb99966ffeda09ff023c))\n- Update data [skip publish] ([7ff3ee6](https://github.com/favware/graphql-pokemon/commit/7ff3ee6e34cfddd4fc57bbe00ed29eadc17785ae))\n- Update data [skip publish] ([68f39c0](https://github.com/favware/graphql-pokemon/commit/68f39c00f896f1e9b3a73f50915442703461d1e6))\n- Update data [skip publish] ([466d441](https://github.com/favware/graphql-pokemon/commit/466d441edf66e0994b7cc782f996fcf4879eea22))\n- Update data [skip publish] ([a52b3c6](https://github.com/favware/graphql-pokemon/commit/a52b3c6a48d5363e4f742cf5a4de6e9230fa17c1))\n- Update data [skip publish] ([048cb14](https://github.com/favware/graphql-pokemon/commit/048cb14d3f21c106359b75d3c351202236b8ca62))\n- Update data [skip publish] ([dd36b73](https://github.com/favware/graphql-pokemon/commit/dd36b7315ef8b06cbb549b36ed015bf6264d2bc4))\n- Update data [skip publish] ([3ace22b](https://github.com/favware/graphql-pokemon/commit/3ace22bf95d2f42e1c2d32c8eea067f9518281a8))\n- Update data [skip publish] ([29735bc](https://github.com/favware/graphql-pokemon/commit/29735bc9fbd1bc7b20a2d1186dc2abc49f437abd))\n- Update data [skip publish] ([46a8940](https://github.com/favware/graphql-pokemon/commit/46a894084c5dddfd9fed14d2ab551477181e60a7))\n- Update data [skip publish] ([8741e5d](https://github.com/favware/graphql-pokemon/commit/8741e5d328cbcb6b6500bfb61969e50957c00ff2))\n- Update data [skip publish] ([a2cb4b4](https://github.com/favware/graphql-pokemon/commit/a2cb4b470296d86249ea9d2078de863ce2867489))\n- Update data [skip publish] ([be4f5d3](https://github.com/favware/graphql-pokemon/commit/be4f5d33abacf5298b7f0ce7dad6e53d3ac5222f))\n- Update data [skip publish] ([e0cfb05](https://github.com/favware/graphql-pokemon/commit/e0cfb050ff7a76883702688cdb9171bd40248f2f))\n- Update data [skip publish] ([8590393](https://github.com/favware/graphql-pokemon/commit/85903937e9be3bbabde923768bba2820d57480e9))\n- Update data [skip publish] ([b186a30](https://github.com/favware/graphql-pokemon/commit/b186a301101f59c553b580335cda15af3d8f1c54))\n\n## 🐛 Bug Fixes\n\n- Add and update multiple sprites (#1119) ([6998b10](https://github.com/favware/graphql-pokemon/commit/6998b10126221ad5db05d930627cbaadaca278bb))\n- **deps:** Update all non-major dependencies (#1113) ([6f58d80](https://github.com/favware/graphql-pokemon/commit/6f58d80602751e77f5f4381358869c65afa6f967))\n\n## 🚀 Features\n\n- **flavor-text:** Add new flavor text for Pokopia version ([194d64b](https://github.com/favware/graphql-pokemon/commit/194d64bc9ca37c0e55b79e819ad94e951f82a277))\n- Add new Legends Z-A DLC (#1147) ([2e5b639](https://github.com/favware/graphql-pokemon/commit/2e5b639d05116a5778bad9fd5a094a4f6f23ea8e))\n- Add Legends Z-A Megas (#1120) ([01effc3](https://github.com/favware/graphql-pokemon/commit/01effc31695daf82e7db806a490d896b061d99e8))\n\n# [8.7.3](https://github.com/favware/graphql-pokemon/compare/v8.7.2...v8.7.3) - (2025-10-19)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([48706d4](https://github.com/favware/graphql-pokemon/commit/48706d4591e400673c743aba4a8f781f3ee55db9))\n- Update data [skip publish] ([6555872](https://github.com/favware/graphql-pokemon/commit/65558722cf8c04bada341a4ffb1ae37b42ea3402))\n- Update data [skip publish] ([8b0f59c](https://github.com/favware/graphql-pokemon/commit/8b0f59cc3ca659e7294c4da96b73cd944e94a98c))\n- Update data [skip publish] ([78334e9](https://github.com/favware/graphql-pokemon/commit/78334e9024b48375ee147e67a0a3355a379d095f))\n- Update data [skip publish] ([28f84f9](https://github.com/favware/graphql-pokemon/commit/28f84f9ea03897127a30f75998a875f3889a4b25))\n- Update data [skip publish] ([13991cc](https://github.com/favware/graphql-pokemon/commit/13991cc6d92b0abb12236f4d48c1c050ea9010f7))\n- Update data [skip publish] ([f0908d0](https://github.com/favware/graphql-pokemon/commit/f0908d06a27d01ddb2c04ab02a57d22fa5336a41))\n- Update data [skip publish] ([c3a90c6](https://github.com/favware/graphql-pokemon/commit/c3a90c65e51295eaf70ced5424d3e1b9bb591a0a))\n- Update data [skip publish] ([ecf0b0b](https://github.com/favware/graphql-pokemon/commit/ecf0b0b450c731449b51ad5998c98ee3fa435b4e))\n- Update data [skip publish] ([00b58ae](https://github.com/favware/graphql-pokemon/commit/00b58aea09e9069df8158092e6d13270ee0078cc))\n- Update data [skip publish] ([d4b79fb](https://github.com/favware/graphql-pokemon/commit/d4b79fbeeab7e18b026bc30c99286d8d83fe9554))\n- Update data [skip publish] ([a27b843](https://github.com/favware/graphql-pokemon/commit/a27b843b22f25e1c3d856962f49df188abae43e0))\n- Update data [skip publish] ([aadccca](https://github.com/favware/graphql-pokemon/commit/aadccca0f523ad90a809019698e8926a038aa557))\n- Update data [skip publish] ([ea849a4](https://github.com/favware/graphql-pokemon/commit/ea849a454a5a3187273566be1507c0d9917600b8))\n- Update data [skip publish] ([091ab82](https://github.com/favware/graphql-pokemon/commit/091ab82c59d068585c75c7f311916108929fef92))\n- Update data [skip publish] ([0d26fae](https://github.com/favware/graphql-pokemon/commit/0d26fae5fa9a41b0eee53c9d42832e53661552b9))\n- Update data [skip publish] ([4a495f1](https://github.com/favware/graphql-pokemon/commit/4a495f106a53896ecac392e04d9b2515c8ad65f3))\n\n## 🐛 Bug Fixes\n\n- Fix typings, base stats, and sprites errors in #1101 and #1102 (#1103) ([6d721ff](https://github.com/favware/graphql-pokemon/commit/6d721ff3f23167b79833cf90b2d7e6da10eddbac))\n\n# [8.7.2](https://github.com/favware/graphql-pokemon/compare/v8.7.1...v8.7.2) - (2025-08-13)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([1a99ae9](https://github.com/favware/graphql-pokemon/commit/1a99ae9ad74f806cb363bfd6ce939d20256f92ce))\n- Update data [skip publish] ([0fb5e6d](https://github.com/favware/graphql-pokemon/commit/0fb5e6d47c4555e6ad853c18ebe85703f6b1ecbb))\n- Update data [skip publish] ([14c7b9e](https://github.com/favware/graphql-pokemon/commit/14c7b9e4e8e585c505dcc7128216f2c5de26d3fe))\n- Update data [skip publish] ([4686c43](https://github.com/favware/graphql-pokemon/commit/4686c4363198a4bacd1ebbb8aa1db640f4b2749b))\n- Update data [skip publish] ([c31ed4c](https://github.com/favware/graphql-pokemon/commit/c31ed4ce699b6e3f65d48571ca13940871283da3))\n- Update data [skip publish] ([6d7f76b](https://github.com/favware/graphql-pokemon/commit/6d7f76b3cbc09e22f0092fb36f67f3b6787cb090))\n- Update data [skip publish] ([9abf7bb](https://github.com/favware/graphql-pokemon/commit/9abf7bbe7b53f277a6cbb73f555f2aaac31be46f))\n- Update data [skip publish] ([b5241e1](https://github.com/favware/graphql-pokemon/commit/b5241e1b425fcdf843b11a3f0ff6a48ed8020119))\n- Update data [skip publish] ([2f5d005](https://github.com/favware/graphql-pokemon/commit/2f5d00561255f81bbc8742a4502644bdcfce4aca))\n- Update data [skip publish] ([6be0cf8](https://github.com/favware/graphql-pokemon/commit/6be0cf801cc2708d7010519cad59f0f01245ea5f))\n- Update data [skip publish] ([3dfbb65](https://github.com/favware/graphql-pokemon/commit/3dfbb658259476e33d72d9deacebad876b5eb935))\n- Update data [skip publish] ([56e1d01](https://github.com/favware/graphql-pokemon/commit/56e1d017bdd2419125d0ca5e485c04c1eb200846))\n- Update data [skip publish] ([8095509](https://github.com/favware/graphql-pokemon/commit/80955095761a91302ddb6f1f123d00451fec7d27))\n- Update data [skip publish] ([3e4e509](https://github.com/favware/graphql-pokemon/commit/3e4e509f045397ca0ff70364d1813a295c2b2f96))\n- Update data [skip publish] ([f72724f](https://github.com/favware/graphql-pokemon/commit/f72724fd2474d106db35c30721f3103922014523))\n- Update data [skip publish] ([d26c9c0](https://github.com/favware/graphql-pokemon/commit/d26c9c044c2ecaf3500e209a10aef9d3e164c724))\n- Update data [skip publish] ([fbe4a9c](https://github.com/favware/graphql-pokemon/commit/fbe4a9cb1386040ee76e208511919ac7ca7cefb1))\n- Update data [skip publish] ([1d94a9b](https://github.com/favware/graphql-pokemon/commit/1d94a9b9c57da366656f4d79d93e1e1544b284a9))\n- Update data [skip publish] ([98ae638](https://github.com/favware/graphql-pokemon/commit/98ae638e622a050c459fbd8ed41b8238cbc3ba65))\n- Update data [skip publish] ([12d1d89](https://github.com/favware/graphql-pokemon/commit/12d1d89351cb5243d6ba486798e5172ab02268c2))\n- Update data [skip publish] ([b96e97b](https://github.com/favware/graphql-pokemon/commit/b96e97b1af24868f8d66e87343af0bfd41f827fc))\n- Update data [skip publish] ([e964e89](https://github.com/favware/graphql-pokemon/commit/e964e89e4003169b57b635d2ef382385569aea34))\n- Update data [skip publish] ([3cf44f7](https://github.com/favware/graphql-pokemon/commit/3cf44f753dbe8bf342a4d7de32b8f16324127aab))\n\n## 🐛 Bug Fixes\n\n- Return more animated gen 9 sprites ([8ffb474](https://github.com/favware/graphql-pokemon/commit/8ffb4746d3c0b09557ec7cf0a13b96196826da7d))\n- Add missing properties to CAP move Polar Flare ([46b160d](https://github.com/favware/graphql-pokemon/commit/46b160d07e098bb36f5a1a78a36497c8c2ad5c40))\n- **deps:** Update all non-major dependencies (#1064) ([7a526b2](https://github.com/favware/graphql-pokemon/commit/7a526b2632307bd24011181b905d06bc2fe32b71))\n\n# [8.7.1](https://github.com/favware/graphql-pokemon/compare/v8.7.0...v8.7.1) - (2025-04-06)\n\n## 🏠 Refactor\n\n- Start adding gen9 gif sprites (#1059) ([aa2e69e](https://github.com/favware/graphql-pokemon/commit/aa2e69eeec966da1cbb89be1a4ac74c9594db679))\n- Update data [skip publish] ([b85b72d](https://github.com/favware/graphql-pokemon/commit/b85b72d7bd67bc566cd991e5d92912cd9bc22f90))\n- Update data [skip publish] ([62e00e7](https://github.com/favware/graphql-pokemon/commit/62e00e7d6284efc6cdb0fa62860efd9845e0122f))\n- Update data [skip publish] ([7122f28](https://github.com/favware/graphql-pokemon/commit/7122f28d709bd41cc88f47474a07f9d5b342560d))\n- Update data [skip publish] ([3051b95](https://github.com/favware/graphql-pokemon/commit/3051b95ff6111289af803a262680f3060d8a379d))\n- Update data [skip publish] ([d07eb54](https://github.com/favware/graphql-pokemon/commit/d07eb5474a5d4a327c3ff969dd21b67e625d1233))\n- Update data [skip publish] ([869adbd](https://github.com/favware/graphql-pokemon/commit/869adbda67ee93b49c3f3f52ea67cc2353b8765e))\n- Update data [skip publish] ([47e7801](https://github.com/favware/graphql-pokemon/commit/47e78012a7a998460bed2ea676dd3866fc65b589))\n- Update data [skip publish] ([4eebd47](https://github.com/favware/graphql-pokemon/commit/4eebd47450a4ef7850762b1943a6317c468e6b07))\n- Update data [skip publish] ([55f29bd](https://github.com/favware/graphql-pokemon/commit/55f29bd73f06ee602973e4ce0ecc403f1233798e))\n- Update data [skip publish] ([dfe558f](https://github.com/favware/graphql-pokemon/commit/dfe558f61b0586f004e42d5481f3e52310a0ab90))\n- Update data [skip publish] ([b39ba1f](https://github.com/favware/graphql-pokemon/commit/b39ba1fcf8a3b87858b93b59c584a9cdacdbde33))\n- Update data [skip publish] ([25e58b0](https://github.com/favware/graphql-pokemon/commit/25e58b09f314f6dac49956e5fac5edccda4315e3))\n- Update data [skip publish] ([ffae598](https://github.com/favware/graphql-pokemon/commit/ffae5985de96adc0b1b5020b475918fb4afd62b9))\n- Update data [skip publish] ([2b4749a](https://github.com/favware/graphql-pokemon/commit/2b4749a5d9575158300910384bdce434dc5f999c))\n- Update data [skip publish] ([1c9be2f](https://github.com/favware/graphql-pokemon/commit/1c9be2fa62cbab4de958f27b3a052f4a0543ef6c))\n- Update data [skip publish] ([bfc2be7](https://github.com/favware/graphql-pokemon/commit/bfc2be7045b13827dc6d43193b2d9e53d388112b))\n- Update data [skip publish] ([03eb443](https://github.com/favware/graphql-pokemon/commit/03eb44350fb399161a04725eb3878cfd2e031b9f))\n- Update data [skip publish] ([84bb835](https://github.com/favware/graphql-pokemon/commit/84bb8355c65a3640170212c4d17f1e82221b845e))\n- Update data [skip publish] ([9894fe4](https://github.com/favware/graphql-pokemon/commit/9894fe400965dfb93b40f6fb03c42c5906191c87))\n- Update data [skip publish] ([0f5948a](https://github.com/favware/graphql-pokemon/commit/0f5948a47b9bd20e89856c4370dfc8fb0b28711f))\n- Update data [skip publish] ([124f1f2](https://github.com/favware/graphql-pokemon/commit/124f1f2e388262b746f3e300eaa9254e80186fee))\n- Update data [skip publish] ([86c7906](https://github.com/favware/graphql-pokemon/commit/86c79066d7ed7e4998818556984a81d97872a323))\n- Update data [skip publish] ([bfa8f0c](https://github.com/favware/graphql-pokemon/commit/bfa8f0c5da1b66b4df5e2a8e1f5a32675f4fd768))\n- Update data [skip publish] ([56ef4cb](https://github.com/favware/graphql-pokemon/commit/56ef4cbea8d6c704c2a904617ad50cc96b143a34))\n- Update data [skip publish] ([4e58a99](https://github.com/favware/graphql-pokemon/commit/4e58a99ebca18b9875a8a1d861a1d7b6de9c227c))\n\n## 🧪 Testing\n\n- Fix hisui typhlosion smogon tier ([9efa5ee](https://github.com/favware/graphql-pokemon/commit/9efa5ee10342892ae01d1f7bece74eed4d61a861))\n\n# [8.7.0](https://github.com/favware/graphql-pokemon/compare/v8.6.2...v8.7.0) - (2025-01-02)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([e3bc7dc](https://github.com/favware/graphql-pokemon/commit/e3bc7dc768b49de4f4d1b524ae4ddb3634645f77))\n\n## 🚀 Features\n\n- Add Natures (#1028) ([5d5d8fc](https://github.com/favware/graphql-pokemon/commit/5d5d8fcfd36cf8d0d33f5b212c011b4633cfb83d))\n\n# [8.6.2](https://github.com/favware/graphql-pokemon/compare/v8.6.1...v8.6.2) - (2024-12-29)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([eb7a536](https://github.com/favware/graphql-pokemon/commit/eb7a5369684125e10bae2d554f49a1093b6330cc))\n- Update data [skip publish] ([2e067d4](https://github.com/favware/graphql-pokemon/commit/2e067d488c47ee2ea6bac637977e896db2af80d1))\n- Update data [skip publish] ([377be21](https://github.com/favware/graphql-pokemon/commit/377be21f1152d3231c43ca7d2af34cb201e0cba5))\n- Update data [skip publish] ([b98d0c8](https://github.com/favware/graphql-pokemon/commit/b98d0c89358ef3aa6fdd7aee740a5dc0445a1437))\n- Update data [skip publish] ([3777dd0](https://github.com/favware/graphql-pokemon/commit/3777dd0068d10ece11b80843245e44d6c47ae737))\n- Update data [skip publish] ([693e58e](https://github.com/favware/graphql-pokemon/commit/693e58ef277cdde23243729c76f4f763e70001a0))\n- Update data [skip publish] ([5e57608](https://github.com/favware/graphql-pokemon/commit/5e57608ebd5475c8b3055725abd0314b756342f2))\n- Update data [skip publish] ([018e4d1](https://github.com/favware/graphql-pokemon/commit/018e4d1482e52ffd8927fff3b26aeb3b6be13c7c))\n- Update data [skip publish] ([ad32fad](https://github.com/favware/graphql-pokemon/commit/ad32fad57fe56976b4455f3f353fcc41214800da))\n- Update data [skip publish] ([d4c0216](https://github.com/favware/graphql-pokemon/commit/d4c0216ddca19d625e3b6caac44175c3d0865fce))\n- Update data [skip publish] ([28fe4b0](https://github.com/favware/graphql-pokemon/commit/28fe4b09b7168c0f5ada9e1b8edf1c0b38b8ec32))\n- Update data [skip publish] ([8c33df8](https://github.com/favware/graphql-pokemon/commit/8c33df894ab2b84abed80472f59b57088fe837e9))\n- Update data [skip publish] ([930ff9e](https://github.com/favware/graphql-pokemon/commit/930ff9e92ab480b873ba6b345c26b2eefb33f485))\n- Update data [skip publish] ([f27ac3f](https://github.com/favware/graphql-pokemon/commit/f27ac3fdd4dc2820496d9d68f68244e45f632769))\n- Update data [skip publish] ([0dcdf9d](https://github.com/favware/graphql-pokemon/commit/0dcdf9d053d30bbbcb0b9826c215347df486362a))\n- Update data [skip publish] ([9647b11](https://github.com/favware/graphql-pokemon/commit/9647b11958c98d0423cc083f35b4aa231c0f5750))\n- Update data [skip publish] ([73ad31e](https://github.com/favware/graphql-pokemon/commit/73ad31e390ced7bc86f6b1fcd692efd71ed389f2))\n- Make regexp for flavor text updater more generic (#1014) ([4c8228f](https://github.com/favware/graphql-pokemon/commit/4c8228ff6c91c14d268efaeb5c16266d6b679f20))\n- Update data [skip publish] ([19ae3ce](https://github.com/favware/graphql-pokemon/commit/19ae3ce37c8520ab36683c9b84a2e4c0d4a5d8c9))\n\n## 🐛 Bug Fixes\n\n- Correctly set corvisquire and frosmoth evolutions (#1026) ([1bcb713](https://github.com/favware/graphql-pokemon/commit/1bcb713e36262d69546375276fdfa3ead30f4552))\n- **deps:** Update all non-major dependencies (#1025) ([d47ed2e](https://github.com/favware/graphql-pokemon/commit/d47ed2e5629ba33221906f25a7065d3f743a0711))\n\n# [8.6.1](https://github.com/favware/graphql-pokemon/compare/v8.6.0...v8.6.1) - (2024-10-29)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([a922ea9](https://github.com/favware/graphql-pokemon/commit/a922ea997aa49addfd1866e84b1982c8365f1702))\n- Update data [skip publish] ([31f00a8](https://github.com/favware/graphql-pokemon/commit/31f00a88c1171c43fad39779abdebdc4ee274300))\n- Update data [skip publish] ([5ef86a0](https://github.com/favware/graphql-pokemon/commit/5ef86a09f7a38e523ec49466c23e296860444f02))\n- Update data [skip publish] ([d8f1ff2](https://github.com/favware/graphql-pokemon/commit/d8f1ff27addc74dd8529d431874353ab5dede36e))\n- Update data [skip publish] ([8befea5](https://github.com/favware/graphql-pokemon/commit/8befea55fa515052d0a9d1c33e6c43583f109e3e))\n- Update data [skip publish] ([a80a4dc](https://github.com/favware/graphql-pokemon/commit/a80a4dc07730207d7e552d8bca7eecac16ecf36d))\n- Update data [skip publish] ([4dbe0dd](https://github.com/favware/graphql-pokemon/commit/4dbe0dd33b914262bac8f2f5be81a967ef039cd5))\n- Update data [skip publish] ([bd93115](https://github.com/favware/graphql-pokemon/commit/bd93115a70f80f79beb1755c10b75c953727f235))\n- Update data [skip publish] ([948f218](https://github.com/favware/graphql-pokemon/commit/948f2182c7ab3804479ef870f6f53425a21d9bbe))\n- Update data [skip publish] ([4d54482](https://github.com/favware/graphql-pokemon/commit/4d54482d0dcaecefae78b72722afb60027edc144))\n- Update data [skip publish] ([0f5f206](https://github.com/favware/graphql-pokemon/commit/0f5f20683850bc7119d558b8d6471e46eca63d7a))\n- Update data [skip publish] ([3b900b5](https://github.com/favware/graphql-pokemon/commit/3b900b51ce14062773613d46969010e2bba6eb7e))\n- Update data [skip publish] ([cbbafcc](https://github.com/favware/graphql-pokemon/commit/cbbafcc7b82558d4b9a82ada378622870eb12dd1))\n- Update data [skip publish] ([dbe30db](https://github.com/favware/graphql-pokemon/commit/dbe30dbd2d0e58c544397ec30aea61390ea3e893))\n- Update data [skip publish] ([468d7b4](https://github.com/favware/graphql-pokemon/commit/468d7b44e51b24a063636aac3c5287a492aac145))\n- Update data [skip publish] ([c850e31](https://github.com/favware/graphql-pokemon/commit/c850e31f9f9d294f73ca58a856f1db5acae83708))\n- Update data [skip publish] ([31db8fe](https://github.com/favware/graphql-pokemon/commit/31db8fefecd05b9d15a04f288495a7f05badd918))\n- Update data [skip publish] ([350dc97](https://github.com/favware/graphql-pokemon/commit/350dc97e36b37a3da86efdc411004334857885aa))\n- Update data [skip publish] ([f3895c3](https://github.com/favware/graphql-pokemon/commit/f3895c3ecd61f6f5c764eda7278ed8ee080ccbfb))\n- Update data [skip publish] ([3ebfc13](https://github.com/favware/graphql-pokemon/commit/3ebfc133df9a619cceaeacffa5d4153b4584515b))\n- Update data [skip publish] ([14e048b](https://github.com/favware/graphql-pokemon/commit/14e048b5fbb60ac077663ffb4b7a5d4352864763))\n- Update data [skip publish] ([b21f01a](https://github.com/favware/graphql-pokemon/commit/b21f01ad1c200fc779599c976960d2d7502f6bde))\n- Update data [skip publish] ([de8bc36](https://github.com/favware/graphql-pokemon/commit/de8bc36b7d829fe0259778557a2362fbb44b0c49))\n- Update data [skip publish] ([b4f2595](https://github.com/favware/graphql-pokemon/commit/b4f2595f016d8c46fa87fb7587322a535e8b132b))\n- Update data [skip publish] ([80f52f9](https://github.com/favware/graphql-pokemon/commit/80f52f99afb44bea21e1c265d6119862984a5337))\n- Update data [skip publish] ([964431d](https://github.com/favware/graphql-pokemon/commit/964431deaa115fff2a1f2bdf9dd3f4384c5fc962))\n\n## 🐛 Bug Fixes\n\n- Fixed packaging of the code ([e20c694](https://github.com/favware/graphql-pokemon/commit/e20c694f30a50252a11afbe9b36b5bd1934c3cdd))\n- Add milcery evolution (#1013) ([711ef0d](https://github.com/favware/graphql-pokemon/commit/711ef0d9a6118dc6ad6b9db3347a1c6daaab2a6c))\n- Update broken flavor texts due to bulbapedia updates ([485c355](https://github.com/favware/graphql-pokemon/commit/485c35512b6b62f34193cd269e96f25e79c878fb))\n\n## 📝 Documentation\n\n- Remove colon [skip ci] ([8610704](https://github.com/favware/graphql-pokemon/commit/86107045e3e26a2cc2a734c26638d842e8d68f69))\n- Document known bugs in the readme [skip ci] ([6eaa1cd](https://github.com/favware/graphql-pokemon/commit/6eaa1cd12187f331e4d4850d9287138f79be4ec1))\n\n## 🧪 Testing\n\n- Update tests [skip publish] ([eb49da7](https://github.com/favware/graphql-pokemon/commit/eb49da7452a7c407d4890f0fedf1b49363007ced))\n\n# [8.6.0](https://github.com/favware/graphql-pokemon/compare/v8.5.3...v8.6.0) - (2024-06-22)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([dea6ab4](https://github.com/favware/graphql-pokemon/commit/dea6ab435020493fbf90809d241a28b1fad13454))\n- Update data [skip publish] ([6f4d23f](https://github.com/favware/graphql-pokemon/commit/6f4d23f8f0d7499fe04507a3ed820447b2d8f13d))\n- Update data [skip publish] ([648638a](https://github.com/favware/graphql-pokemon/commit/648638a7a5164d322a272812da0a7a8bcbd81cee))\n- Update data [skip publish] ([7b56b0d](https://github.com/favware/graphql-pokemon/commit/7b56b0d37c417075b6e45423c48bf6c2aa88f204))\n- Update data [skip publish] ([6f468d9](https://github.com/favware/graphql-pokemon/commit/6f468d9d38d99c3f019d64ca5c83ce104bb29fd0))\n- Update data [skip publish] ([cafddaf](https://github.com/favware/graphql-pokemon/commit/cafddafe103e8516410a1ef053f6818baedc3673))\n- Update data [skip publish] ([b35347e](https://github.com/favware/graphql-pokemon/commit/b35347efdf9627a41af2299cdca9b73bdcabf086))\n- Update data [skip publish] ([8ed58af](https://github.com/favware/graphql-pokemon/commit/8ed58af7b52a1b71c37f7254f244b02d98a46372))\n\n## 🐛 Bug Fixes\n\n- **flavors:** Parse out wrong content ([fd09b7b](https://github.com/favware/graphql-pokemon/commit/fd09b7bed3c612eb3834467e9e70ce6d448a569b))\n\n## 🚀 Features\n\n- Update learnsets ([f142c33](https://github.com/favware/graphql-pokemon/commit/f142c33da21932a61e225b360cf8ce02ef411122))\n- Add `respelling` and `ipa` properties to each Pokémon ([3680c2e](https://github.com/favware/graphql-pokemon/commit/3680c2e48357cb9c3a49e5f71351b7aaa556a78f))\n\n## 🧪 Testing\n\n- Update test data with `respelling` and `ipa` properties ([b7dfcf1](https://github.com/favware/graphql-pokemon/commit/b7dfcf1d214d54f3743e8ebb3cfdf561b28a4a2c))\n\n# [8.5.3](https://github.com/favware/graphql-pokemon/compare/v8.5.2...v8.5.3) - (2024-05-26)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([79740e5](https://github.com/favware/graphql-pokemon/commit/79740e5e180db90151c862ea15ab59a9926a3fee))\n- Update data [skip publish] ([ace5704](https://github.com/favware/graphql-pokemon/commit/ace5704b6f61814f531c3c62a59386ce943d4f98))\n- Update data [skip publish] ([8c45057](https://github.com/favware/graphql-pokemon/commit/8c45057b36c4f38e48ab084a23abdbaa1610e73b))\n- Update data [skip publish] ([2fe85e4](https://github.com/favware/graphql-pokemon/commit/2fe85e4c946831ce62254c270c2af7b2ac7bdc6a))\n- Update data [skip publish] ([4765396](https://github.com/favware/graphql-pokemon/commit/47653960db25ea9223c74689a864c9c1ff1be5b3))\n- Update data [skip publish] ([d05e843](https://github.com/favware/graphql-pokemon/commit/d05e8438947e83ff150a83c5c960da9a6fa65aaf))\n- Update data [skip publish] ([3240a75](https://github.com/favware/graphql-pokemon/commit/3240a75825680d0a071cf6e86aff2f49a9777cbd))\n\n## 🐛 Bug Fixes\n\n- Fully update to shapeshift v4 and set custom error messages ([63a0752](https://github.com/favware/graphql-pokemon/commit/63a07527e250062234a4c329a466cef2572e0d1a))\n\n# [8.5.1](https://github.com/favware/graphql-pokemon/compare/v8.5.0...v8.5.1) - (2024-05-05)\n\n## 🏠 Refactor\n\n- Migrate over code from graphql-parse-resolve-info ([4b46845](https://github.com/favware/graphql-pokemon/commit/4b46845e8fefb2c3cfe02ae1feba136fa526916d))\n- Update data [skip publish] ([3c4d47d](https://github.com/favware/graphql-pokemon/commit/3c4d47de4e12c179fa96560d1d126b5395fd59c4))\n- Update data [skip publish] ([23a135b](https://github.com/favware/graphql-pokemon/commit/23a135bd94ccae02f755ac9cc649465e5c6118be))\n- Update data [skip publish] ([3dfeaba](https://github.com/favware/graphql-pokemon/commit/3dfeabacbd03b4c4b6ea55f105b3cf27c5f73d26))\n- Update data [skip publish] ([47bc806](https://github.com/favware/graphql-pokemon/commit/47bc806ecf48bf4adef830db9817f04c4dc572af))\n- Update data [skip publish] ([3384375](https://github.com/favware/graphql-pokemon/commit/33843759f77e0738723a8773ddb881d6c200b550))\n- Update data [skip publish] ([c7adf17](https://github.com/favware/graphql-pokemon/commit/c7adf17c46a19a6bf0543574fc6d4889b66f11b9))\n- Update data [skip publish] ([faf2683](https://github.com/favware/graphql-pokemon/commit/faf2683100440edead1f11738a8de36505c99288))\n- Update data [skip publish] ([da9b448](https://github.com/favware/graphql-pokemon/commit/da9b44818bb2210455474b2db4f4ebb96f68a332))\n- Update data [skip publish] ([6c601f8](https://github.com/favware/graphql-pokemon/commit/6c601f8121cb34926f77b7c29cc25994a8db3683))\n- Process only a quarter of the pokemon for flavor updates every day ([ade6b0b](https://github.com/favware/graphql-pokemon/commit/ade6b0b4b8d025ddd28e227b48b95a5052278b16))\n- Import improvement ([6f19b64](https://github.com/favware/graphql-pokemon/commit/6f19b64223933acdddf2f52b7fd81632af5b230b))\n- Reduce cognitive complexity for `sprite-parser` ([0b06d69](https://github.com/favware/graphql-pokemon/commit/0b06d69780aac4846961fcd58206ca260193ccb3))\n- Update data [skip publish] ([f9a43d4](https://github.com/favware/graphql-pokemon/commit/f9a43d4052c4d15082b68c232de95de2d51195c6))\n- Update data [skip publish] ([df4f3ee](https://github.com/favware/graphql-pokemon/commit/df4f3ee79cc4202e617c1fc1cce6ed16f78e9cf1))\n- Update data [skip publish] ([d166528](https://github.com/favware/graphql-pokemon/commit/d166528bcc529ba93ac90ceda8fa154b69dcfc71))\n- Update data [skip publish] ([5c29978](https://github.com/favware/graphql-pokemon/commit/5c299787a093faf78382aeda801ecfa491569648))\n- Update data [skip publish] ([e31a619](https://github.com/favware/graphql-pokemon/commit/e31a61920b375731d22bad55620f8f407f04ddec))\n\n## 🐛 Bug Fixes\n\n- Fixed problematic data with Mime Jr., Mr. Mime, and Mr. Rime ([4e83dd7](https://github.com/favware/graphql-pokemon/commit/4e83dd76e0647c5b7c95df2cdbce87dd6da080a4))\n- Fixed import from graphql ([0f68dbb](https://github.com/favware/graphql-pokemon/commit/0f68dbb1d0ce9f1f3bfcc0f2097766a7dd78118f))\n\n## 📝 Documentation\n\n- Add custom style sheet (#964) ([9f5b97a](https://github.com/favware/graphql-pokemon/commit/9f5b97aed3ef587f6e11f56b05d3651352c91ae2))\n\n# [8.5.0](https://github.com/favware/graphql-pokemon/compare/v8.5.0...v8.5.0) - (2024-03-02)\n\n## 🏠 Refactor\n\n- Rework script updaters ([8311da2](https://github.com/favware/graphql-pokemon/commit/8311da2a7d6f512f3a32074c6e1c00d7716600f1))\n- Add scripts for updating pokedex classifications ([1ebcd05](https://github.com/favware/graphql-pokemon/commit/1ebcd05834860d8e6a8938c250155bfc40f98f7a))\n\n## 🐛 Bug Fixes\n\n- Update formats and learnsets ([99c4e0a](https://github.com/favware/graphql-pokemon/commit/99c4e0ae70bce4584e0888f06e252ce0026b312d))\n- Update learnset and tiers updater scripts ([e68db19](https://github.com/favware/graphql-pokemon/commit/e68db19bae7a891897d683f91856e817ae515e12))\n- Add cries for form pokemon ([22753bb](https://github.com/favware/graphql-pokemon/commit/22753bb8eafa21ed35a177184e089bd63d61040b))\n- Update cry updater to handle forms ([206aa9e](https://github.com/favware/graphql-pokemon/commit/206aa9ee964141783f55a839e4a9ed1d52b4009e))\n- Publish docker image for both amd64 and arm64 ([eca9b44](https://github.com/favware/graphql-pokemon/commit/eca9b4489b751b40d1682173ed4ed2a5d5472f3b))\n- Use english classifications, not japanese ([b363816](https://github.com/favware/graphql-pokemon/commit/b363816d7d62570d6540efb5f6510e3dd9c3c091))\n- Add missing classifications that werent parseable ([ed37461](https://github.com/favware/graphql-pokemon/commit/ed37461e3a6a87f269ddc4e39bfb2ee987a94bda))\n- Auto update abilities, items, and moves and update the data directly ([7ae7e3a](https://github.com/favware/graphql-pokemon/commit/7ae7e3ab3ce34261faef8886e1df79530c97f5da))\n- Fixed dex number for slowking-galar ([bb64ef1](https://github.com/favware/graphql-pokemon/commit/bb64ef1fdb8b83bfa614e9d68647f87b539d537d))\n\n## 🚀 Features\n\n- Add cries data ([6906cc7](https://github.com/favware/graphql-pokemon/commit/6906cc7cdaa3351811f6345d4b51f591a25467e1))\n- Add `cry` property to pokemon ([7a7b39b](https://github.com/favware/graphql-pokemon/commit/7a7b39b41380f06f76582925e18cf9ba917acba1))\n- Add classifications data for special form Pokémon ([619cec2](https://github.com/favware/graphql-pokemon/commit/619cec21d1d97110c546a4fb9b5ba035fe1e782a))\n- Add classifications data for non special form Pokémon ([f7c3943](https://github.com/favware/graphql-pokemon/commit/f7c3943d2c6ada40dc204f4184f1022c983e0460))\n\n## 🧪 Testing\n\n- Update test data ([0210312](https://github.com/favware/graphql-pokemon/commit/021031279c7750ab7ae0d04289357f5501af9fbf))\n- Update test data ([6b6ae1b](https://github.com/favware/graphql-pokemon/commit/6b6ae1b50ff325bba7428c2fde5e425408c1ca3e))\n- Update test data ([c3b2d74](https://github.com/favware/graphql-pokemon/commit/c3b2d74c38ad6dc1ecddd6476ed250758c595807))\n\n# [8.4.2](https://github.com/favware/graphql-pokemon/compare/v8.4.2...v8.4.2) - (2024-02-25)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([daca94d](https://github.com/favware/graphql-pokemon/commit/daca94d5431980a25cf1d34c428e00218706040d))\n- Update data [skip publish] ([63ee667](https://github.com/favware/graphql-pokemon/commit/63ee667c5bb0be914b345ba06108b12dab581815))\n- Update data [skip publish] ([77fee85](https://github.com/favware/graphql-pokemon/commit/77fee85ff19987d6c1dd3452ada0ca77e3e58773))\n- Update data [skip publish] ([2ae00de](https://github.com/favware/graphql-pokemon/commit/2ae00de72401879157b52ae3a416d591246b708f))\n- Update data [skip publish] ([1ff0cad](https://github.com/favware/graphql-pokemon/commit/1ff0cade1332d819e91676867ed0ac8dbf7762bb))\n- Update data [skip publish] ([a8f2287](https://github.com/favware/graphql-pokemon/commit/a8f228770555b1f78eee3c0d022f940f7d4ab125))\n- Update data [skip publish] ([35dcd07](https://github.com/favware/graphql-pokemon/commit/35dcd0715732db23dc57ef0cb227e488c8604d24))\n- Update data [skip publish] ([2f3b427](https://github.com/favware/graphql-pokemon/commit/2f3b427b5570ef88183a0d658f5c3be0674c4639))\n- Update data [skip publish] ([c8454cd](https://github.com/favware/graphql-pokemon/commit/c8454cd8f8b48042875afb20d243d4ce5154656e))\n- Update data [skip publish] ([4d3a744](https://github.com/favware/graphql-pokemon/commit/4d3a74459581c1a0a0d9ab43ed658b30f9903dfc))\n- Update data [skip publish] ([e39bf0e](https://github.com/favware/graphql-pokemon/commit/e39bf0e09efe4cf69dd8901638c8f14be5624b97))\n- Update data [skip publish] ([bf56d49](https://github.com/favware/graphql-pokemon/commit/bf56d49d616b672fb200c66eba0bd889fddf768f))\n- Update data [skip publish] ([7713711](https://github.com/favware/graphql-pokemon/commit/7713711bc3bbc1b93749dbc5eb2db50d83151f2f))\n- Update data [skip publish] ([27dded8](https://github.com/favware/graphql-pokemon/commit/27dded8d53d751b4f1d963149d404aea28a9b520))\n- Update data [skip publish] ([4b6e45c](https://github.com/favware/graphql-pokemon/commit/4b6e45c41190c8b607edb38eaf6af079357fae75))\n\n## 🐛 Bug Fixes\n\n- Ensure `getByPokedexNumber` has the correct boundaries ([c232686](https://github.com/favware/graphql-pokemon/commit/c2326867ca4470149d9bb0f652dc9e9b5d13a56b))\n\n## 📝 Documentation\n\n- Change how docs lists are rendered ([6bc2ffb](https://github.com/favware/graphql-pokemon/commit/6bc2ffbe5dab2fd529e2ab7ef889f402d5b88a71))\n\n# [8.4.1](https://github.com/favware/graphql-pokemon/compare/v8.4.1...v8.4.1) - (2024-01-07)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([bbe3eba](https://github.com/favware/graphql-pokemon/commit/bbe3eba0fc8cf54db72f80a1bbe8b6de3b960d82))\n\n## 🐛 Bug Fixes\n\n- Update formats data ([3b56a24](https://github.com/favware/graphql-pokemon/commit/3b56a2434837d6ccc162666be3e7f4898aebeff2))\n- Fixed published bundle files ([cc9df0e](https://github.com/favware/graphql-pokemon/commit/cc9df0e934c1b698ddcf2cc2fee7ad6f80643b99))\n\n# [8.4.0](https://github.com/favware/graphql-pokemon/compare/v8.4.0...v8.4.0) - (2024-01-04)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([586cb40](https://github.com/favware/graphql-pokemon/commit/586cb40e851543859999b92c3b5c7bed619e582a))\n- Update apollo server and implement streaming JSON.stringify for the result ([db34157](https://github.com/favware/graphql-pokemon/commit/db34157fa7212dd9a71beadb3f37ad963be0b7b2))\n\n## 🚀 Features\n\n- Add utilities for parsing graphql-pokemon data (#925) ([af3bea5](https://github.com/favware/graphql-pokemon/commit/af3bea51567fb66c90001080506b8bf02131a7c0))\n\n# [8.3.3](https://github.com/favware/graphql-pokemon/compare/v8.3.3...v8.3.3) - (2023-12-28)\n\n## 🐛 Bug Fixes\n\n- Fixed species for `palafinhero` so the sprite gives the correct URL ([c745f24](https://github.com/favware/graphql-pokemon/commit/c745f245af8677f9150090a4205c1872161b4db2))\n\n# [8.3.2](https://github.com/favware/graphql-pokemon/compare/v8.3.2...v8.3.2) - (2023-12-28)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([3c53921](https://github.com/favware/graphql-pokemon/commit/3c539213b5d893a162fc731f93313b2fc205b4f2))\n- Update data [skip publish] ([eb4adea](https://github.com/favware/graphql-pokemon/commit/eb4adea8e54056f1983cba57387bc4e27e642731))\n- Update data [skip publish] ([d7596f8](https://github.com/favware/graphql-pokemon/commit/d7596f861aa4b2d76b8c78ec7bbbaa4d996c64a9))\n- Update data [skip publish] ([dcf5d68](https://github.com/favware/graphql-pokemon/commit/dcf5d68d58e290c18a735a56b8f433076a249089))\n- Update data [skip publish] ([12c8d15](https://github.com/favware/graphql-pokemon/commit/12c8d1530b653da4c2d99be5ecf3da019d5b2320))\n- Update data [skip publish] ([6a1540f](https://github.com/favware/graphql-pokemon/commit/6a1540f7ac671ea18bf84f08e0b7766aad482be2))\n\n## 🐛 Bug Fixes\n\n- **moves:** Update description for Tera Blast ([b15a070](https://github.com/favware/graphql-pokemon/commit/b15a0704b33ab4dcefe6375d060f3ef555634951))\n- **abilities:** Update descriptions for Teraform Zero and Tera Shidt ([d1a2b74](https://github.com/favware/graphql-pokemon/commit/d1a2b74c4a6629957399086cde7e987a01bd45e4))\n- Correct various gigantamax form heights ([e3f8412](https://github.com/favware/graphql-pokemon/commit/e3f84129d8e29a000bfc050eb9e19154e593d3e5))\n\n## 🧪 Testing\n\n- Update test data ([ead5d30](https://github.com/favware/graphql-pokemon/commit/ead5d30dec9047ea9f34f935d196599a8e7941e6))\n\n# [8.3.1](https://github.com/favware/graphql-pokemon/compare/v8.3.1...v8.3.1) - (2023-12-19)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([f983884](https://github.com/favware/graphql-pokemon/commit/f983884b7ee38ae9c444f218c709db950f2bb1f9))\n\n## 🐛 Bug Fixes\n\n- Fixed evolution condition for doublade ([9d6c947](https://github.com/favware/graphql-pokemon/commit/9d6c947c014bc8e3f028205aeb65afaadb28a9e2))\n- Fixed evolution condition for florges ([8eae40b](https://github.com/favware/graphql-pokemon/commit/8eae40b6ef84e595073bb4ae9c5bca32cc679d94))\n\n# [8.3.0](https://github.com/favware/graphql-pokemon/compare/v8.3.0...v8.3.0) - (2023-12-17)\n\n## 🏠 Refactor\n\n- Resort moves items and moves alphabetically ([e38272b](https://github.com/favware/graphql-pokemon/commit/e38272b613107e68e527f9f642eb402b4101794a))\n- Update data [skip publish] ([70fac71](https://github.com/favware/graphql-pokemon/commit/70fac7170cb733930707a34a1904cffa5876588c))\n\n## 🐛 Bug Fixes\n\n- Update formats and learnsets ([407da17](https://github.com/favware/graphql-pokemon/commit/407da1754312b28c092bd190369ea9ae8d8459d2))\n- **abilities:** Update descriptions for Poison Puppeteer, Teraform Zero, Tera Shell, and Tera Shift ([5597534](https://github.com/favware/graphql-pokemon/commit/5597534af2c12a1ebc3491cb5d1c0809c05ec1ba))\n- **items:** Mark items added in Indigo Disk as available in generation 9 ([9e01c90](https://github.com/favware/graphql-pokemon/commit/9e01c9053d121178f1f01f46c01aaa6e8acea36e))\n\n## 🚀 Features\n\n- Update graphql enums with the added items and moves ([9811807](https://github.com/favware/graphql-pokemon/commit/981180753f8fd88317a7f6032580507ad9987ecd))\n- **moves:** Update to Indigo Disk data. This includes descriptions, marking moves as available for gen9, and adding moves \"Alluring Voice\", \"Hard Press\", and \"Supercell Slam\" ([a8e95cb](https://github.com/favware/graphql-pokemon/commit/a8e95cbd922f1ff6ce75c4c1a61313bdd9ea87f9))\n- **items:** Add Metal Alloy ([cee8fec](https://github.com/favware/graphql-pokemon/commit/cee8fecfb1b5c6a4fb3f1988af18c59f64744257))\n\n## 🧪 Testing\n\n- Update test data ([23d6d52](https://github.com/favware/graphql-pokemon/commit/23d6d52190e3ae843841c9c2e7495a87454eb197))\n\n# [8.2.1](https://github.com/favware/graphql-pokemon/compare/v8.2.1...v8.2.1) - (2023-12-16)\n\n## 🐛 Bug Fixes\n\n- Add missing pecharunt entry ([c407a63](https://github.com/favware/graphql-pokemon/commit/c407a632e42d18e46fd4478a34378fe99c0c870e))\n\n# [8.2.0](https://github.com/favware/graphql-pokemon/compare/v8.2.0...v8.2.0) - (2023-12-15)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([b409d42](https://github.com/favware/graphql-pokemon/commit/b409d42bc074a608cf100f4a53d3740ca6c7175b))\n- Update data [skip publish] ([353a1e4](https://github.com/favware/graphql-pokemon/commit/353a1e432a230b437be9ad2b6617c95bb4e4d3c3))\n- Update data [skip publish] ([8766b59](https://github.com/favware/graphql-pokemon/commit/8766b590e803fdb9f03d8e3c68a3f7fa1b57559a))\n- Update data [skip publish] ([b636241](https://github.com/favware/graphql-pokemon/commit/b636241829cba4431d404a6a0ae03784ef532fce))\n- Update data [skip publish] ([232c397](https://github.com/favware/graphql-pokemon/commit/232c3974c6093d533ea0292d6948e08731e7d96f))\n- Update data [skip publish] ([a1e0557](https://github.com/favware/graphql-pokemon/commit/a1e05575627f53319d0821767a3bfd2bda726bcb))\n\n## 🐛 Bug Fixes\n\n- Add indigo disk moves to graphql enum ([b288a34](https://github.com/favware/graphql-pokemon/commit/b288a346212ee7060e55845c501a93dda7d3774d))\n- Fixed a few mistakes in indigo disk moves ([de4b819](https://github.com/favware/graphql-pokemon/commit/de4b81901abbba60363cd82bd1d132eae21ebc1e))\n- Fixed other forms for pokestar ufo ([c31e145](https://github.com/favware/graphql-pokemon/commit/c31e14584902f66fea98cc4e01f172a749ab834f))\n- Fixed incorrect prevo names for urshifu, quaxwell, and quaquaval ([b37f4a6](https://github.com/favware/graphql-pokemon/commit/b37f4a6d2763330654411961ae6e2c5d8f2b59b5))\n- Fixed abilities for archaludon ([60c2835](https://github.com/favware/graphql-pokemon/commit/60c2835a2cef91afe29f6f84a4febf3b213fc956))\n- Ensure that base species properly link back to the pokemon they refer to ([e458ef0](https://github.com/favware/graphql-pokemon/commit/e458ef0d98103e32dbe72afba0e45f1929edf850))\n\n## 🚀 Features\n\n- Add the remaining moves ([0038c22](https://github.com/favware/graphql-pokemon/commit/0038c2217438aea2dc5e683809e5a42f95f6992a))\n- Update flavor texts ([8c9334f](https://github.com/favware/graphql-pokemon/commit/8c9334f0a894b75058bfb13083053229324bce44))\n- Add indigo disk dlc data to graphql enums ([1dc1817](https://github.com/favware/graphql-pokemon/commit/1dc18176279f7a27dc26a6bab0825165cb13f440))\n- Expand allowed amount to take for `getAllPokemon` ([69f193f](https://github.com/favware/graphql-pokemon/commit/69f193f4d81ba94028ac85385517b74c50440017))\n- Add indigo disk dlc data ([11ee6d9](https://github.com/favware/graphql-pokemon/commit/11ee6d9c207ca4c51d6641a46692d6e1ff4f6a34))\n\n## 🧪 Testing\n\n- Update test data after jaro winkler update ([e9cbfe7](https://github.com/favware/graphql-pokemon/commit/e9cbfe7503699cb464ebfeb53200cfbce1c38288))\n- Update test data ([1305c40](https://github.com/favware/graphql-pokemon/commit/1305c40d641201db7ceb44616607db346b0ed75c))\n- Update test data ([73c363c](https://github.com/favware/graphql-pokemon/commit/73c363cf13e61ce0318b980af5297cd48e40db59))\n- Cover newly added pokemon in tests ([dbf70d1](https://github.com/favware/graphql-pokemon/commit/dbf70d1dbe12725b17dce05b57e66a6694dda7e8))\n- Cleanup vitest config [skip publish] ([164de94](https://github.com/favware/graphql-pokemon/commit/164de946ca2240d6674d364c481b503f32dea074))\n\n# [8.1.1](https://github.com/favware/graphql-pokemon/compare/v8.1.1...v8.1.1) - (2023-11-28)\n\n## 🐛 Bug Fixes\n\n- Fixed sprite url parsing for ursaluna-bloodmoon ([5d4a6e3](https://github.com/favware/graphql-pokemon/commit/5d4a6e3ae4236903567a104bb4e4fc3ba5f8cc27))\n- Fixed smogon url parsing for ursaluna-bloodmoon ([19d3658](https://github.com/favware/graphql-pokemon/commit/19d3658aef035866869e65ce450bbf50310480ca))\n- Fixed species name for several ogerpon forms ([68609d0](https://github.com/favware/graphql-pokemon/commit/68609d0b01b4289861a5f535b72ce6ad6943d447))\n- Fixed species name for ursaluna-bloodmoon ([28c829d](https://github.com/favware/graphql-pokemon/commit/28c829d96f82757629e285747fbaa0544fddd07c))\n\n## 🧪 Testing\n\n- Update test data ([bd52390](https://github.com/favware/graphql-pokemon/commit/bd523904d26328939cead33a8be2a2ee45a4869e))\n\n# [8.1.0](https://github.com/favware/graphql-pokemon/compare/v8.1.0...v8.1.0) - (2023-11-28)\n\n## 🏠 Refactor\n\n- Update data ([447244b](https://github.com/favware/graphql-pokemon/commit/447244b0c888af004cbe87defdca898c80df95e5))\n\n## 🐛 Bug Fixes\n\n- **cap:** Fixed abilities for Revenankh ([3b6a476](https://github.com/favware/graphql-pokemon/commit/3b6a476fed6262db25631518c35df78443192c26))\n\n## 🚀 Features\n\n- **cap:** Add Cresceidon ([c6a31f8](https://github.com/favware/graphql-pokemon/commit/c6a31f8524b534599b2ad9e0dfb4e8513763acc4))\n\n# [8.0.0](https://github.com/favware/graphql-pokemon/compare/v8.0.0...v8.0.0) - (2023-11-27)\n\n## 🏠 Refactor\n\n- Cleanup file locations, add a lot of documentation ([76fb16a](https://github.com/favware/graphql-pokemon/commit/76fb16ab0825e5a9435b1264cc98616fa57b0129))\n- Update data [skip publish] ([18f2eff](https://github.com/favware/graphql-pokemon/commit/18f2eff49ae91f663eb9231da26378cb8cedc934))\n- Update data [skip publish] ([d0cb50d](https://github.com/favware/graphql-pokemon/commit/d0cb50d1d91644c4431d11a5fd83b808ef84d530))\n- Update data [skip publish] ([623c570](https://github.com/favware/graphql-pokemon/commit/623c570c2a179018c05029070a50028e8628a0cc))\n- Update data [skip publish] ([4216bfc](https://github.com/favware/graphql-pokemon/commit/4216bfcbeb13b3e2c79c04881fb794e8ba48c0df))\n- Update data [skip publish] ([f523d6f](https://github.com/favware/graphql-pokemon/commit/f523d6fd675e5d4f855f4969dacbd83d16bffbda))\n- Update data [skip publish] ([542c291](https://github.com/favware/graphql-pokemon/commit/542c29160986d26ff6cf067a3182a122dbf076fb))\n- Update data [skip publish] ([f6b6f5e](https://github.com/favware/graphql-pokemon/commit/f6b6f5e306f5f70d1e4f265072bc1b32697143d9))\n- Update data [skip publish] ([32cb553](https://github.com/favware/graphql-pokemon/commit/32cb553c86fdba462def6c4fadee7305802cb2e8))\n- Update data [skip publish] ([49fc9ef](https://github.com/favware/graphql-pokemon/commit/49fc9ef4fab319b1688ee23ab48d9a754b6feef1))\n- Update data [skip publish] ([2c3e0c1](https://github.com/favware/graphql-pokemon/commit/2c3e0c155a83de1adb7cf5d61e745d1601e52b67))\n- Update data [skip publish] ([c499649](https://github.com/favware/graphql-pokemon/commit/c499649d4d864d370906b271fec9952cbbe0ff46))\n- Update data [skip publish] ([408717d](https://github.com/favware/graphql-pokemon/commit/408717deaeec31fdca18fcdca730e2fc866dc3ec))\n- Update data [skip publish] ([fe87502](https://github.com/favware/graphql-pokemon/commit/fe87502ecd54dfded1095f42ace109f4ed7ebf6f))\n- Update data [skip publish] ([ef441c4](https://github.com/favware/graphql-pokemon/commit/ef441c4bf232133192055a7bb94efd0cac85f8b4))\n\n## 🐛 Bug Fixes\n\n- Update dockerfile ([d06ebf5](https://github.com/favware/graphql-pokemon/commit/d06ebf5a3dbce6d0578d237252d3019f72a06d3a))\n- Set correct species for hemogoblin ([0550342](https://github.com/favware/graphql-pokemon/commit/0550342ecae6b8f51c80eb2e39540c70ca3ab514))\n- Correct the maximums for `take` and `offset` for `getAllPokemon` ([e72df87](https://github.com/favware/graphql-pokemon/commit/e72df87c36f1cc3c02f42efd5359c0df36a0c3c8))\n- Fixed some of the abilities, items and moves data ([9fa63e8](https://github.com/favware/graphql-pokemon/commit/9fa63e897cdbb4477dccd74d570994dab31ed9e7))\n- Finish all parsing of flavor texts ([5dbd079](https://github.com/favware/graphql-pokemon/commit/5dbd0790583b44ebd929185e259572c442761066))\n- Replace all remaining `[[templates]]` ([c8f4e62](https://github.com/favware/graphql-pokemon/commit/c8f4e62c330464fd72f4bf8435aa1aeafc20bf9d))\n- Make type for flavors module ([062a19f](https://github.com/favware/graphql-pokemon/commit/062a19fc2d3e0f6bbc81f015ad314668572e0116))\n- Update `Legends Arceus` to `Legends: Arceus` in `version_id` ([a8e4a0c](https://github.com/favware/graphql-pokemon/commit/a8e4a0c9a8bb5afe493cafcfc10699e7b4c4813b))\n  - 💥 **BREAKING CHANGE:** `Legends Arceus` is now `Legends: Arceus` for `pokemon.flavor.game`\n- Proper export mapping ([08ad5c7](https://github.com/favware/graphql-pokemon/commit/08ad5c73472a7b3ac42503a67ade9c02f0ba9bbb))\n\n## 📝 Documentation\n\n- Update urls to mention v8 ([f7e4cb0](https://github.com/favware/graphql-pokemon/commit/f7e4cb0d06cfc04470f538e8964d37f05c4308dd))\n- Update readme header ([0968274](https://github.com/favware/graphql-pokemon/commit/096827432d96df3e25c5cdf34a54faabffae63b4))\n\n## 🚀 Features\n\n- Update flavor texts, add stadium and stadium 2 ([5ebc599](https://github.com/favware/graphql-pokemon/commit/5ebc59937e49e98f99e433eb04d2a84d35513879))\n- Update flavor text for Teal Mask DLC ([4dc2acf](https://github.com/favware/graphql-pokemon/commit/4dc2acf20ba9d2eade178d366eee87939018af90))\n- Add flavor texts for Teal Mask DLC Pokemon ([4f2d360](https://github.com/favware/graphql-pokemon/commit/4f2d3602cdeec01b55898773d36de09c33acc4fb))\n- Add Ogerpon Pokémon ([aa2ce64](https://github.com/favware/graphql-pokemon/commit/aa2ce64160e5db156362ed77b5c77ef0afdf6721))\n- Add Teal Mask DLC Pokémon ([2815898](https://github.com/favware/graphql-pokemon/commit/28158982380a4ef69d362b6e7c8569276b1207c7))\n- Add `isNonStandard` to abilities for the CAP and Past abilities ([19c129b](https://github.com/favware/graphql-pokemon/commit/19c129b19b24c28b28e58dded20baf8be1019b0c))\n- Update abilities data to include all known abilities ([3658b41](https://github.com/favware/graphql-pokemon/commit/3658b4194ddd7cf57b83ccd1f7df84edd35232af))\n- Update moves data to include all known moves ([72c714c](https://github.com/favware/graphql-pokemon/commit/72c714ca939a32de3814098de2e9610b02dc161e))\n- Update items data to include all known items ([bfd8b19](https://github.com/favware/graphql-pokemon/commit/bfd8b193c51f66bc78f41e84858cded695906285))\n\n## 🧪 Testing\n\n- Update test data ([0f07022](https://github.com/favware/graphql-pokemon/commit/0f07022c47d81c0eca6df6661b1aede7ce02ecac))\n- Update test data ([1cb6c28](https://github.com/favware/graphql-pokemon/commit/1cb6c284cfbebe2495f1892b2da1fdc5ec32b3d1))\n- Update test data ([5392fa8](https://github.com/favware/graphql-pokemon/commit/5392fa88edd7bfb1eb89b026f623020d7d6552a9))\n\n# [7.3.4](https://github.com/favware/graphql-pokemon/compare/v7.3.4...v7.3.4) - (2023-10-15)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([244656e](https://github.com/favware/graphql-pokemon/commit/244656e667e014b589b8ac93ac9cef079e287625))\n- Update data [skip publish] ([3245069](https://github.com/favware/graphql-pokemon/commit/324506921268e4cd19e386ca86b6e2b72bc07cbc))\n- Update data [skip publish] ([3fe9d53](https://github.com/favware/graphql-pokemon/commit/3fe9d534da64c91c5ceb39d077903c368e73aff5))\n- Update data [skip publish] ([088ec37](https://github.com/favware/graphql-pokemon/commit/088ec376b0255faf826fbed94ce89ee598373483))\n- Update data [skip publish] ([c1ac242](https://github.com/favware/graphql-pokemon/commit/c1ac242e281e7f3f7a25dafa535a4aaf9e51de14))\n- Update data [skip publish] ([702379f](https://github.com/favware/graphql-pokemon/commit/702379f6d1092dfd9dfb273b4e8e1ab103afd6e6))\n- Update data [skip publish] ([43a9110](https://github.com/favware/graphql-pokemon/commit/43a9110000e12ec3f3d04e4e4efc83f230d826dd))\n- Update data [skip publish] ([e055964](https://github.com/favware/graphql-pokemon/commit/e055964d15f8b22b41d4a070be7a81dd9c41daee))\n- Update data [skip publish] ([3c2046e](https://github.com/favware/graphql-pokemon/commit/3c2046e99bcd268d884027c226ec08862b4d2ae6))\n- Update data [skip publish] ([afe5ea3](https://github.com/favware/graphql-pokemon/commit/afe5ea3f37faa833159ec381a88815ba6e7ba6d5))\n- Update data [skip publish] ([6df87f5](https://github.com/favware/graphql-pokemon/commit/6df87f54570cbe24cfbb2d6e207eadd5b48df974))\n- Update data [skip publish] ([1facf0c](https://github.com/favware/graphql-pokemon/commit/1facf0cede3ff70a4a15906495a631dfa637a826))\n- Update data [skip publish] ([09157b2](https://github.com/favware/graphql-pokemon/commit/09157b2c3a3b77624964821085964a0428016318))\n- Update data [skip publish] ([c7d301f](https://github.com/favware/graphql-pokemon/commit/c7d301fce298491759e8d94c14533fbd2ddac7ce))\n- Update data [skip publish] ([be133eb](https://github.com/favware/graphql-pokemon/commit/be133eb25ab21889c3b2b7c277b73973f01c7b29))\n- Update data [skip publish] ([ea92b04](https://github.com/favware/graphql-pokemon/commit/ea92b041393fbc518f482b9da9f9491ffe2de764))\n- Remove options that are default with apollo server v4 ([7e04a48](https://github.com/favware/graphql-pokemon/commit/7e04a48efd5e67419113514d8e22ffa9966bcf3b))\n- Updated the server to Apollo Server v4 ([69f3ab6](https://github.com/favware/graphql-pokemon/commit/69f3ab6021599278f0cbfd2b02390e33c92f4e5d))\n- Update data [skip publish] ([2d16837](https://github.com/favware/graphql-pokemon/commit/2d16837f6c15b8451be66aeac7458761732bc521))\n- Update data [skip publish] ([ae976a7](https://github.com/favware/graphql-pokemon/commit/ae976a765ad3c6f9ac647b461ba9ed579635b188))\n- Update data [skip publish] ([b28d953](https://github.com/favware/graphql-pokemon/commit/b28d953236c17e68d86412d914967cc55637a7f2))\n- Update data [skip publish] ([0377166](https://github.com/favware/graphql-pokemon/commit/03771664d7ea106ebeaf4d9544b106295be59521))\n- Update data [skip publish] ([91d75bc](https://github.com/favware/graphql-pokemon/commit/91d75bc6268a64f3a9560f22a418b98dad17e656))\n- Update data [skip publish] ([3bcd36e](https://github.com/favware/graphql-pokemon/commit/3bcd36e411b37996955e26922e94a45bafd1d941))\n- Update data [skip publish] ([cd8d754](https://github.com/favware/graphql-pokemon/commit/cd8d7542e68c3c977b36e5fb4c221c2d59ca6bd4))\n- Update data [skip publish] ([0b8adf4](https://github.com/favware/graphql-pokemon/commit/0b8adf45fd6e76baa8df74bcae6d2503186179bc))\n- Update data [skip publish] ([ef86fcd](https://github.com/favware/graphql-pokemon/commit/ef86fcd7bbf2a8d6de9a6f692642d44b7f949973))\n- Update data [skip publish] ([c9a0234](https://github.com/favware/graphql-pokemon/commit/c9a02341bcf308b52c70c1fbb3a9e7dfe5acbc13))\n- Update data [skip publish] ([fef2c2b](https://github.com/favware/graphql-pokemon/commit/fef2c2b6523d1d1d548814148b006db3a7b5f6ba))\n- Update data [skip publish] ([bd8e7f4](https://github.com/favware/graphql-pokemon/commit/bd8e7f4d4d0b3406feca98c680da62d37f33eb6f))\n- Update data [skip publish] ([8a45c47](https://github.com/favware/graphql-pokemon/commit/8a45c474fb9ab342a060d2fad7819da2fde8a3cb))\n- Update data [skip publish] ([8efde4a](https://github.com/favware/graphql-pokemon/commit/8efde4ad78f3ca1c9e9ec67a53cf1d484b780237))\n- Update data [skip publish] ([9929748](https://github.com/favware/graphql-pokemon/commit/9929748ea9d44d3d0b05d64c2df0431e176a02b2))\n\n## 🐛 Bug Fixes\n\n- **deps:** Update dependency graphql to v16.8.1 [security] ([907576c](https://github.com/favware/graphql-pokemon/commit/907576c9a2040a01772bf9b80daa4a2286e8b143))\n- Resolve apollo server v4 regression ([3a43ae7](https://github.com/favware/graphql-pokemon/commit/3a43ae7b44f34b673fad42547ce69231e1706e41))\n\n## 🧪 Testing\n\n- Update test data due to Teal Mask release ([dc4bdfc](https://github.com/favware/graphql-pokemon/commit/dc4bdfc0ff0635e84b819f196c27fe869c3a4349))\n- Update test data ([75e6927](https://github.com/favware/graphql-pokemon/commit/75e6927d1a5881a3be5f0afc2e12da158df06024))\n\n# [7.3.3](https://github.com/favware/graphql-pokemon/compare/v7.3.2...v7.3.3) - (2023-07-13)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([2cdbb65](https://github.com/favware/graphql-pokemon/commit/2cdbb6574f38b0490a1fdc7f478a9d8917d53fba))\n- Update data [skip publish] ([d3f96a0](https://github.com/favware/graphql-pokemon/commit/d3f96a091f3f8f11a12984e856c09ef22625afbb))\n- Update data [skip publish] ([32c698d](https://github.com/favware/graphql-pokemon/commit/32c698dcfaa0660f3a8b3eebf80da4d34c348256))\n- Update data [skip publish] ([f4bbf3c](https://github.com/favware/graphql-pokemon/commit/f4bbf3c149f2702ac80b0ae1ccbaa2e6054e07a2))\n- Update data [skip publish] ([5f8bb0f](https://github.com/favware/graphql-pokemon/commit/5f8bb0f2e2ba35cc1673549cd8816ded112cb517))\n- Update data [skip publish] ([17ab58d](https://github.com/favware/graphql-pokemon/commit/17ab58d8aba41b4406591ece48afca733df97f05))\n- Update data [skip publish] ([0bf59a8](https://github.com/favware/graphql-pokemon/commit/0bf59a816d9c16cb83523bc04b9571858a59bd33))\n- Update data [skip publish] ([6b05f16](https://github.com/favware/graphql-pokemon/commit/6b05f163ce3ec750ab298f60c7c5be99fc3ed975))\n- Update data [skip publish] ([115d9f9](https://github.com/favware/graphql-pokemon/commit/115d9f9cb82b28ac4bbb483ee4e0f99033d1b0df))\n- Update data [skip publish] ([f95461e](https://github.com/favware/graphql-pokemon/commit/f95461eb14f7efe7e376ed7b9edb3627296a72c6))\n- Update data [skip publish] ([91dc65d](https://github.com/favware/graphql-pokemon/commit/91dc65d92e0165d80daa87283523e40f2bced4ed))\n- Update data [skip publish] ([c1c5838](https://github.com/favware/graphql-pokemon/commit/c1c5838bfddb88530344cba200e85149724caaa7))\n- Update data [skip publish] ([da7df3f](https://github.com/favware/graphql-pokemon/commit/da7df3f501f49e85a68c46c760a102efec501bc7))\n\n## 🐛 Bug Fixes\n\n- Add `hydrostream` and `psyblade` to the `MovesEnum` ([8258eaa](https://github.com/favware/graphql-pokemon/commit/8258eaafb961715bb51a61116f34618519f6294c))\n- Move types export to the top to ensure it is selected first and not as a fallback ([5ddfa94](https://github.com/favware/graphql-pokemon/commit/5ddfa94dbe4dd2082d1af2b78483dac7530de2f3))\n\n## 📝 Documentation\n\n- **readme:** Fix ToC link for contributors ([9768be2](https://github.com/favware/graphql-pokemon/commit/9768be269d221bb960039721e99ef6fcaf6bea25))\n\n## 🧪 Testing\n\n- Switch to coverage v8 ([a56cdb7](https://github.com/favware/graphql-pokemon/commit/a56cdb73505b582c17871ce6f64638f066fdeb9c))\n\n# [7.3.2](https://github.com/favware/graphql-pokemon/compare/v7.3.1...v7.3.2) - (2023-06-04)\n\n## 🏠 Refactor\n\n- Update data [skip publish] ([29f0fe8](https://github.com/favware/graphql-pokemon/commit/29f0fe86a91805551cf90216925c703e3b05f935))\n- Update data [skip publish] ([d44d9dc](https://github.com/favware/graphql-pokemon/commit/d44d9dcd2be062adb1cdf2bd0a288c7acb7d95fc))\n- Update data [skip publish] ([a2a301e](https://github.com/favware/graphql-pokemon/commit/a2a301ee092e270f07d4c1410d577fd4047c5315))\n- Update data [skip publish] ([192960e](https://github.com/favware/graphql-pokemon/commit/192960ebe3bc355eba88981d83d59d6b81bdf076))\n- Update data [skip publish] ([b49770b](https://github.com/favware/graphql-pokemon/commit/b49770bd3866762f2080adaa45b989a8a92db4ce))\n- Update data [skip publish] ([4cec27f](https://github.com/favware/graphql-pokemon/commit/4cec27fa8e8f3fac6bf74a01d4d06ff5ff8f2fb9))\n- Update data [skip publish] ([5a110b1](https://github.com/favware/graphql-pokemon/commit/5a110b12df5983850c7bc276822c23747311a7fd))\n- Update data [skip publish] ([6db1055](https://github.com/favware/graphql-pokemon/commit/6db105555bec761643693bb1c6d2e8a23c777e1c))\n- Update data [skip publish] (#830) ([de9b4be](https://github.com/favware/graphql-pokemon/commit/de9b4be22601adcb8e97df4ecf5878f3c2a30fd1))\n\n## 📝 Documentation\n\n- Add missing links ([19dee74](https://github.com/favware/graphql-pokemon/commit/19dee74623211af5a86a7bbe8c2cb434dd9a955a))\n\n# [7.3.1](https://github.com/favware/graphql-pokemon/compare/v7.3.0...v7.3.1) - (2023-05-10)\n\n## 🐛 Bug Fixes\n\n- Add empty flavortext entries for Walking Wake and Iron Leaves ([20313bb](https://github.com/favware/graphql-pokemon/commit/20313bb9a2135d84f048e3fb6390b340a98312eb))\n\n# [7.3.0](https://github.com/favware/graphql-pokemon/compare/v7.2.2...v7.3.0) - (2023-05-10)\n\n## 🏠 Refactor\n\n- Allow a maximum take of 1392 for `getAllPokemon` ([c46a067](https://github.com/favware/graphql-pokemon/commit/c46a0676060ba37f8c03b89bcb493f593239fd7d))\n\n## 🐛 Bug Fixes\n\n- Remove test move magikarp's revenge ([9341d4b](https://github.com/favware/graphql-pokemon/commit/9341d4bc8ece35b00ca5c18ac341bc5e32795944))\n- Fixed various move descriptions ([a83b641](https://github.com/favware/graphql-pokemon/commit/a83b641d2cf4611d602179118b05676a45fceb23))\n- Fixed various ability descriptions ([1093231](https://github.com/favware/graphql-pokemon/commit/1093231db4fca9ab580c7e7583df5f82cd77909d))\n- Add bundlechan as alias for iron bundle ([aadf79a](https://github.com/favware/graphql-pokemon/commit/aadf79a928e5ca1f2d78becda406d30cf9b0f2b0))\n- Fixed base stats for flittle ([aeff100](https://github.com/favware/graphql-pokemon/commit/aeff10063ad57101b61bfe8df3eef5ed93da370b))\n- Fixed kleavor's base stats ([8d861c2](https://github.com/favware/graphql-pokemon/commit/8d861c2d74c4f4e9251f6a876c820e2c21f8574f))\n- Fixed abilities for kubfu ([62cfa5f](https://github.com/favware/graphql-pokemon/commit/62cfa5f0926667a6507224f6c99844c466c7bdd3))\n- Fixed base states for hisuian zoroark ([957c2e5](https://github.com/favware/graphql-pokemon/commit/957c2e5576fe2c46560e470686bb55345c52f1dd))\n- Rename tauros paldean forms ([ec52753](https://github.com/favware/graphql-pokemon/commit/ec52753e7a42657cc9dd82e0c4855b7898cd6045))\n- Add egg groups to rebble, tactite, and stratagem ([2ce22e2](https://github.com/favware/graphql-pokemon/commit/2ce22e29cade241ab92aa59d12a0a4be72f840da))\n\n## 🚀 Features\n\n- Add hydro steam and psyblade moves ([58aac30](https://github.com/favware/graphql-pokemon/commit/58aac300bf5eac4340d419fd58c1bbe9122ce085))\n- Add Walking Wake and Iron Leaves ([725d273](https://github.com/favware/graphql-pokemon/commit/725d2735226ac5b6c014f0cb740b830a64e1e722))\n- Update learnsets ([d5efb52](https://github.com/favware/graphql-pokemon/commit/d5efb524d241e9b463065ce3527eee9955d6cf7e))\n- Update smogon tiers file ([039d765](https://github.com/favware/graphql-pokemon/commit/039d765db8a78677bff7d9087d8e1af9b33cfa71))\n- Add `pokemon.legendary` and `pokemon.mythical` boolean fields ([f4bf096](https://github.com/favware/graphql-pokemon/commit/f4bf09625720fc0b113de7fbe478dd03587ad2dc))\n\n## 🧪 Testing\n\n- Update all the test data ([951d6ee](https://github.com/favware/graphql-pokemon/commit/951d6ee316805613988d9dc52a5f67323a83228c))\n\n# [7.2.1](https://github.com/favware/graphql-pokemon/compare/v7.2.0...v7.2.1) - (2023-03-19)\n\n## 🐛 Bug Fixes\n\n- **gen1:** Fixed bulbapedia urls for missingno and m00 ([c35b07e](https://github.com/favware/graphql-pokemon/commit/c35b07e42a0e812bd3b911aecb3798596a1bd6ee))\n\n# [7.2.0](https://github.com/favware/graphql-pokemon/compare/v7.1.2...v7.2.0) - (2023-02-27)\n\n## 🚀 Features\n\n- Add `m00` glitch Pokémon ([43c9f09](https://github.com/favware/graphql-pokemon/commit/43c9f0970bf39901843b5808b8674f63d3fc30c9))\n\n# [7.1.1](https://github.com/favware/graphql-pokemon/compare/v7.1.0...v7.1.1) - (2022-12-30)\n\n## 🐛 Bug Fixes\n\n- Fixed an issue with mismatches of Tauron Paldean forms ([b310261](https://github.com/favware/graphql-pokemon/commit/b3102613ad89f3f0df50e18bf6cf92ca07c51ff9))\n\n# [7.1.0](https://github.com/favware/graphql-pokemon/compare/v7.0.9...v7.1.0) - (2022-12-28)\n\n## 📝 Documentation\n\n- Actually do what previous commit claimed ([18d55bf](https://github.com/favware/graphql-pokemon/commit/18d55bf0038c54495cacda3784f18b58eea80262))\n- Fix magidoc config now that the site is on `.js.org` ([4c77522](https://github.com/favware/graphql-pokemon/commit/4c7752224a5b2498efc8e4dcfdde67794969f6df))\n- Add CNAME file for `.js.org` [skip publish] ([5787c5a](https://github.com/favware/graphql-pokemon/commit/5787c5a6571744c5fd898c4be01f514359ca8daa))\n- **magidoc:** Add custom pages and appLogo [skip publish] ([4298f01](https://github.com/favware/graphql-pokemon/commit/4298f01f97ef98bfd626b04380380ec39125ca19))\n- Add @pelletier197 as a contributor [skip publish] ([2c0c5d9](https://github.com/favware/graphql-pokemon/commit/2c0c5d91bd5bb17b5ebceedb56092ac35173fb85))\n- Update readme ([90309e0](https://github.com/favware/graphql-pokemon/commit/90309e03d95297dbe7b73d15dfa3ebde31fd2519))\n- Fix robots.txt file [skip publish] ([03a2772](https://github.com/favware/graphql-pokemon/commit/03a277243e5fc10b72116c253bea90365089dba7))\n- Fix deploy [skip publish] ([2c68438](https://github.com/favware/graphql-pokemon/commit/2c684389ec7d3cb2f73f141d9cddac33adcdf64d))\n- Fixed deploy to github pages (#792) [skip publish] ([282e9b8](https://github.com/favware/graphql-pokemon/commit/282e9b88112f3b155da8ece300a4a8510772e31e))\n- Update tsdoc for `flavorTexts` to mention it can be an empty array [skip publish] ([21188cf](https://github.com/favware/graphql-pokemon/commit/21188cfc24ac1b2ebf8fcf53c757acc73d94ae18))\n\n## 🚀 Features\n\n- Add generation 9 data (#795) ([4c3b0af](https://github.com/favware/graphql-pokemon/commit/4c3b0aff122e6b770a8bfde5120f848bca3bda96))\n\n# [7.0.9](https://github.com/favware/graphql-pokemon/compare/v7.0.8...v7.0.9) - (2022-12-02)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#786) ([a96abdd](https://github.com/favware/graphql-pokemon/commit/a96abdd37f93260397014745e9c8ff9970846b7b))\n- Update data [skip publish] (#783) ([730b131](https://github.com/favware/graphql-pokemon/commit/730b131f38167daf5782e844b41f72cf6e5d78e9))\n- Update data [skip publish] (#782) ([7d26490](https://github.com/favware/graphql-pokemon/commit/7d2649056907595626fa021c139e1745ae09b7a5))\n- Update data [skip publish] (#780) ([a4106f0](https://github.com/favware/graphql-pokemon/commit/a4106f091db4b1e7278c466e449474401f637c02))\n- Update data [skip publish] (#778) ([ee58674](https://github.com/favware/graphql-pokemon/commit/ee586749297025633074fbc41aaaddc884285291))\n- Update data [skip publish] (#777) ([809a868](https://github.com/favware/graphql-pokemon/commit/809a868298f78c188e3dd85a5277eee959b253fd))\n\n## 🐛 Bug Fixes\n\n- Fixed \"As One (Glastrier)\" causing an unexpected error when querying data for calyrex-ice ([253ae5f](https://github.com/favware/graphql-pokemon/commit/253ae5f03d28e7ec8be03b6cdb068ee754b663ab))\n- Fixed flavor text mapping for `indeedee-male` and `basculegion` ([5729586](https://github.com/favware/graphql-pokemon/commit/5729586f0ed1e5307f77b365003ec9e6f750f963))\n- **docs:** Improved and fixed readme ([6052161](https://github.com/favware/graphql-pokemon/commit/60521610a825ff348b75c723a7c0448113b923dd))\n\n# [7.0.7](https://github.com/favware/graphql-pokemon/tree/v7.0.7) - (2022-10-23)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#772) ([39bd0a8](https://github.com/favware/graphql-pokemon/commit/39bd0a8806a89ed7e96e0fedd13ac181013bae5b))\n\n# [7.0.5](https://github.com/favware/graphql-pokemon/tree/v7.0.5) - (2022-10-16)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#762) ([48af13c](https://github.com/favware/graphql-pokemon/commit/48af13c41eac54aeca77926da684e09b4d11389c))\n- Update data [skip publish] (#766) ([f39fc38](https://github.com/favware/graphql-pokemon/commit/f39fc3808da3a664990310fe86806d7a8c1a6f32))\n\n# [7.0.4](https://github.com/favware/graphql-pokemon/compare/v7.0.3...v7.0.4) - (2022-10-02)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#755) ([236632b](https://github.com/favware/graphql-pokemon/commit/236632b3cfbd174223c93ea07b8e3b74265b852e))\n- Update data [skip publish] (#754) ([03b8366](https://github.com/favware/graphql-pokemon/commit/03b8366bf69e7a1fc00a89cb4583367e6cb88cdc))\n- Update data [skip publish] (#753) ([1f1adee](https://github.com/favware/graphql-pokemon/commit/1f1adee41d5590e172ab6652a850147140bf84bb))\n- Update data [skip publish] (#750) ([4f69544](https://github.com/favware/graphql-pokemon/commit/4f695444f61c8537feb4c9cbceada09b4bfea1c9))\n- Update data [skip publish] (#745) ([48513c6](https://github.com/favware/graphql-pokemon/commit/48513c6e4cf3856003116d89f7df04215331b95d))\n- Update data [skip publish] (#744) ([6572120](https://github.com/favware/graphql-pokemon/commit/6572120f47a54b5c6c8ec75dde632138283e9528))\n- Update data [skip publish] (#741) ([73789ad](https://github.com/favware/graphql-pokemon/commit/73789addf9e3154387de693a12dfb073c15e06be))\n- Update data [skip publish] (#740) ([2db8c89](https://github.com/favware/graphql-pokemon/commit/2db8c89f522e7f97d8ed715c8638adb835333412))\n- Update data [skip publish] (#739) ([0cb3986](https://github.com/favware/graphql-pokemon/commit/0cb3986ae5367f45340341f75ed70c1879d49442))\n\n# [7.0.3](https://github.com/favware/graphql-pokemon/compare/v7.0.2...v7.0.3) - (2022-08-21)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#735) ([4338e0b](https://github.com/favware/graphql-pokemon/commit/4338e0b7a3c1c5f8ea330c74610163916583e897))\n\n## 🐛 Bug Fixes\n\n- Fixed export paths for ESM code ([a3df70b](https://github.com/favware/graphql-pokemon/commit/a3df70bef685f30dfd92991018ee8aa056206bde))\n\n# [7.0.0](https://github.com/favware/graphql-pokemon/compare/v6.5.11...v7.0.0) - (2022-07-31)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#725) ([776ee78](https://github.com/favware/graphql-pokemon/commit/776ee789ddee4b9e9ae098c9461af369ddf1c31d))\n- Update data [skip publish] (#724) ([b721d35](https://github.com/favware/graphql-pokemon/commit/b721d352c2cf0862164460be7e03a1ccaa0ebf2a))\n- Update data [skip publish] (#720) ([31b9c25](https://github.com/favware/graphql-pokemon/commit/31b9c25a1d1a0cfb2c27a042096c10b084d9f6b6))\n- Update data [skip publish] (#715) ([ee2bb31](https://github.com/favware/graphql-pokemon/commit/ee2bb3196424fa238fde377539875c9a1c89b078))\n- Update data [skip publish] (#713) ([e86b0ab](https://github.com/favware/graphql-pokemon/commit/e86b0ab142d5feedb9b713487e60afe69ddd61c6))\n- Update data [skip publish] (#710) ([2458c03](https://github.com/favware/graphql-pokemon/commit/2458c0336a050ed4aa91b2950bad2a8ad0c16484))\n- Update data [skip publish] (#709) ([edec683](https://github.com/favware/graphql-pokemon/commit/edec6833e326ccb5b164c25ab79b6f489c0aff95))\n- Update data [skip publish] (#708) ([71c85c9](https://github.com/favware/graphql-pokemon/commit/71c85c98b511050629fe1651cabe3cacef27543e))\n- Update data [skip publish] (#699) ([2f0e516](https://github.com/favware/graphql-pokemon/commit/2f0e5163900b6a2cee02165ca584ef6c221fc814))\n- Update data [skip publish] (#692) ([bb2a004](https://github.com/favware/graphql-pokemon/commit/bb2a00489e298bfe59875a8697c21d500e990186))\n\n## 🚀 Features\n\n- Complete rewrite, version 7.0.0 (#700) ([06695a6](https://github.com/favware/graphql-pokemon/commit/06695a6b9562061a74609cca9d73e8b21b75187a))\n  - 💥 **feat:** `Pokemon` now have a new field `learnset` to get access to the moves learned by the Pokémon\n  - 💥 **feat:** `Ability` now has a new field `pokemonThatHaveThisAbility` which is a list of Pokémon that get this ability\n  - 💥 **BREAKING CHANGE:** This package now depends on GraphQL v16\n  - 💥 **BREAKING CHANGE:** The schema has changed, please see below for further details\n  - 💥 **BREAKING CHANGE:** your requests MUST now include a `Content-Type` header with `application/json` as value to [prevent CSFR](https://www.apollographql.com/docs/apollo-server/security/cors#:~:text=apollo%20server%203.7%20introduced%20a%20csrf%20prevention%20feature)\n  - 💥 **BREAKING CHANGE:** The property in `name` in `LearnsetMove` and `LearnsetLevelUpMove` is now removed in favour of `move`\n  - 💥 **BREAKING CHANGE:** Every move in a `LearnsetMove` and `LearnsetLevelUpMove` is now a `Move` object instead of just the name of the move\n  - 💥 **BREAKING CHANGE:** Each entry in `Pokemon.abilities` is now an `Ability` type instead of a `string` type. Use `Pokemon.ability[x].name` to get the name.\n  - 💥 **BREAKING CHANGE:** Each entry in `Pokemon.types` is now a `PokemonType` object. Use `Pokemon.types[n].name` to get the type name\n  - 💥 **BREAKING CHANGE:** `getPokemonByName` query has been removed, use `getPokemon` instead.\n  - 💥 **BREAKING CHANGE:** `getPokemonBySpecies` query has been removed, use `getPokemon` instead.\n  - 💥 **BREAKING CHANGE:** `getAllPokemon` now returns a full `Pokemon` object instead of just a string of names\n  - 💥 **BREAKING CHANGE:** The `getTypeMatchup` query now takes 2 parameters, the required `primaryType` and optional `secondaryType`. The replaces the array of `types` which left it ambiguous that the limit was 2 types.\n  - 💥 **BREAKING CHANGE:** The GraphQL type `Type` has been renamed to `TypeEffectiveness` to avoid confusion with the noun `type`.\n  - 💥 **BREAKING CHANGE:** When providing 2 identical types to `getTypeMatchup` the `secondaryType` will be nulled out.\n\n# [6.5.11](https://github.com/favware/graphql-pokemon/compare/v6.5.10...v6.5.11) - (2022-05-13)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#678) ([7ee8dcc](https://github.com/favware/graphql-pokemon/commit/7ee8dcc3db4b75ceeedd08db0c82f117bd583829))\n- Update data [skip publish] (#672) ([ee03e16](https://github.com/favware/graphql-pokemon/commit/ee03e16f1ae615276b1bb55b29bf3c5fd5b8048c))\n- Update data [skip publish] (#670) ([81da5a2](https://github.com/favware/graphql-pokemon/commit/81da5a22e2242c1031a0385bb0d8079aa6a85611))\n\n## 🐛 Bug Fixes\n\n- Remove package engines ([5fc5cdb](https://github.com/favware/graphql-pokemon/commit/5fc5cdbba9fd9329a575f733d3b87224eb288c54))\n- **pokemon:** Fixed species for Zygarde 10% causing an incorrect sprite url to be returned ([8fd689f](https://github.com/favware/graphql-pokemon/commit/8fd689fa113472e3719a2c53d2a37ba13c97e8b5))\n\n## 🧪 Testing\n\n- Resolve coverage threshold issues ([9b7cd5a](https://github.com/favware/graphql-pokemon/commit/9b7cd5a27d425d07be942472d726c5c157dcecf7))\n- Update test for 8fd689f ([0c9b952](https://github.com/favware/graphql-pokemon/commit/0c9b9523f10356eeb5f17e4e4afa7a2d422e859b))\n\n# [6.5.10](https://github.com/favware/graphql-pokemon/compare/v6.5.9...v6.5.10) - (2022-05-01)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#665) ([36a3653](https://github.com/favware/graphql-pokemon/commit/36a3653dbe097a992fffd243b4c235d443be98aa))\n\n# [@favware/graphql-pokemon@6.5.13](https://github.com/favware/graphql-pokemon/compare/v6.5.11...@favware/graphql-pokemon@6.5.13) - (2022-07-17)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#715) ([ee2bb31](https://github.com/favware/graphql-pokemon/commit/ee2bb3196424fa238fde377539875c9a1c89b078))\n- Update data [skip publish] (#713) ([e86b0ab](https://github.com/favware/graphql-pokemon/commit/e86b0ab142d5feedb9b713487e60afe69ddd61c6))\n- Update data [skip publish] (#710) ([2458c03](https://github.com/favware/graphql-pokemon/commit/2458c0336a050ed4aa91b2950bad2a8ad0c16484))\n- Update data [skip publish] (#709) ([edec683](https://github.com/favware/graphql-pokemon/commit/edec6833e326ccb5b164c25ab79b6f489c0aff95))\n- Update data [skip publish] (#708) ([71c85c9](https://github.com/favware/graphql-pokemon/commit/71c85c98b511050629fe1651cabe3cacef27543e))\n- Update data [skip publish] (#699) ([2f0e516](https://github.com/favware/graphql-pokemon/commit/2f0e5163900b6a2cee02165ca584ef6c221fc814))\n- Update data [skip publish] (#692) ([bb2a004](https://github.com/favware/graphql-pokemon/commit/bb2a00489e298bfe59875a8697c21d500e990186))\n\n# [6.5.11](https://github.com/favware/graphql-pokemon/compare/v6.5.10...v6.5.11) - (2022-05-13)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#678) ([7ee8dcc](https://github.com/favware/graphql-pokemon/commit/7ee8dcc3db4b75ceeedd08db0c82f117bd583829))\n- Update data [skip publish] (#672) ([ee03e16](https://github.com/favware/graphql-pokemon/commit/ee03e16f1ae615276b1bb55b29bf3c5fd5b8048c))\n- Update data [skip publish] (#670) ([81da5a2](https://github.com/favware/graphql-pokemon/commit/81da5a22e2242c1031a0385bb0d8079aa6a85611))\n\n## 🐛 Bug Fixes\n\n- Remove package engines ([5fc5cdb](https://github.com/favware/graphql-pokemon/commit/5fc5cdbba9fd9329a575f733d3b87224eb288c54))\n- **pokemon:** Fixed species for Zygarde 10% causing an incorrect sprite url to be returned ([8fd689f](https://github.com/favware/graphql-pokemon/commit/8fd689fa113472e3719a2c53d2a37ba13c97e8b5))\n\n## 🧪 Testing\n\n- Resolve coverage threshold issues ([9b7cd5a](https://github.com/favware/graphql-pokemon/commit/9b7cd5a27d425d07be942472d726c5c157dcecf7))\n- Update test for 8fd689f ([0c9b952](https://github.com/favware/graphql-pokemon/commit/0c9b9523f10356eeb5f17e4e4afa7a2d422e859b))\n\n# [6.5.10](https://github.com/favware/graphql-pokemon/compare/v6.5.9...v6.5.10) - (2022-05-01)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#665) ([36a3653](https://github.com/favware/graphql-pokemon/commit/36a3653dbe097a992fffd243b4c235d443be98aa))\n\n# [@favware/graphql-pokemon@6.5.12](https://github.com/favware/graphql-pokemon/compare/v6.5.11...@favware/graphql-pokemon@6.5.12) - (2022-06-12)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#699) ([2f0e516](https://github.com/favware/graphql-pokemon/commit/2f0e5163900b6a2cee02165ca584ef6c221fc814))\n- Update data [skip publish] (#692) ([bb2a004](https://github.com/favware/graphql-pokemon/commit/bb2a00489e298bfe59875a8697c21d500e990186))\n\n# [6.5.11](https://github.com/favware/graphql-pokemon/compare/v6.5.10...v6.5.11) - (2022-05-13)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#678) ([7ee8dcc](https://github.com/favware/graphql-pokemon/commit/7ee8dcc3db4b75ceeedd08db0c82f117bd583829))\n- Update data [skip publish] (#672) ([ee03e16](https://github.com/favware/graphql-pokemon/commit/ee03e16f1ae615276b1bb55b29bf3c5fd5b8048c))\n- Update data [skip publish] (#670) ([81da5a2](https://github.com/favware/graphql-pokemon/commit/81da5a22e2242c1031a0385bb0d8079aa6a85611))\n\n## 🐛 Bug Fixes\n\n- Remove package engines ([5fc5cdb](https://github.com/favware/graphql-pokemon/commit/5fc5cdbba9fd9329a575f733d3b87224eb288c54))\n- **pokemon:** Fixed species for Zygarde 10% causing an incorrect sprite url to be returned ([8fd689f](https://github.com/favware/graphql-pokemon/commit/8fd689fa113472e3719a2c53d2a37ba13c97e8b5))\n\n## 🧪 Testing\n\n- Resolve coverage threshold issues ([9b7cd5a](https://github.com/favware/graphql-pokemon/commit/9b7cd5a27d425d07be942472d726c5c157dcecf7))\n- Update test for 8fd689f ([0c9b952](https://github.com/favware/graphql-pokemon/commit/0c9b9523f10356eeb5f17e4e4afa7a2d422e859b))\n\n# [6.5.10](https://github.com/favware/graphql-pokemon/compare/v6.5.9...v6.5.10) - (2022-05-01)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#665) ([36a3653](https://github.com/favware/graphql-pokemon/commit/36a3653dbe097a992fffd243b4c235d443be98aa))\n\n# [6.5.11](https://github.com/favware/graphql-pokemon/compare/v6.5.10...v6.5.11) - (2022-05-13)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#678) ([7ee8dcc](https://github.com/favware/graphql-pokemon/commit/7ee8dcc3db4b75ceeedd08db0c82f117bd583829))\n- Update data [skip publish] (#672) ([ee03e16](https://github.com/favware/graphql-pokemon/commit/ee03e16f1ae615276b1bb55b29bf3c5fd5b8048c))\n- Update data [skip publish] (#670) ([81da5a2](https://github.com/favware/graphql-pokemon/commit/81da5a22e2242c1031a0385bb0d8079aa6a85611))\n\n## 🐛 Bug Fixes\n\n- Remove package engines ([5fc5cdb](https://github.com/favware/graphql-pokemon/commit/5fc5cdbba9fd9329a575f733d3b87224eb288c54))\n- **pokemon:** Fixed species for Zygarde 10% causing an incorrect sprite url to be returned ([8fd689f](https://github.com/favware/graphql-pokemon/commit/8fd689fa113472e3719a2c53d2a37ba13c97e8b5))\n\n## 🧪 Testing\n\n- Resolve coverage threshold issues ([9b7cd5a](https://github.com/favware/graphql-pokemon/commit/9b7cd5a27d425d07be942472d726c5c157dcecf7))\n- Update test for 8fd689f ([0c9b952](https://github.com/favware/graphql-pokemon/commit/0c9b9523f10356eeb5f17e4e4afa7a2d422e859b))\n\n# [6.5.10](https://github.com/favware/graphql-pokemon/compare/v6.5.9...v6.5.10) - (2022-05-01)\n\n## 🏠 Refactor\n\n- Update data [skip publish] (#665) ([36a3653](https://github.com/favware/graphql-pokemon/commit/36a3653dbe097a992fffd243b4c235d443be98aa))\n\n### [6.5.10](https://github.com/favware/graphql-pokemon/compare/v6.5.9...v6.5.10) (2022-05-01)\n\n### [6.5.9](https://github.com/favware/graphql-pokemon/compare/v6.5.8...v6.5.9) (2022-04-24)\n\n### [6.5.8](https://github.com/favware/graphql-pokemon/compare/v6.5.7...v6.5.8) (2022-04-17)\n\n### [6.5.7](https://github.com/favware/graphql-pokemon/compare/v6.5.6...v6.5.7) (2022-04-03)\n\n### [6.5.6](https://github.com/favware/graphql-pokemon/compare/v6.5.5...v6.5.6) (2022-03-27)\n\n### [6.5.5](https://github.com/favware/graphql-pokemon/compare/v6.5.4...v6.5.5) (2022-03-20)\n\n### [6.5.4](https://github.com/favware/graphql-pokemon/compare/v6.5.3...v6.5.4) (2022-03-06)\n\n### [6.5.3](https://github.com/favware/graphql-pokemon/compare/v6.5.2...v6.5.3) (2022-03-06)\n\n### [6.5.2](https://github.com/favware/graphql-pokemon/compare/v6.5.1...v6.5.2) (2022-03-06)\n\n### [6.5.1](https://github.com/favware/graphql-pokemon/compare/v6.5.0...v6.5.1) (2022-03-06)\n\n### Bug Fixes\n\n- allow proper maximum amount for `getAllPokemonSpecies` ([397abf1](https://github.com/favware/graphql-pokemon/commit/397abf1bb4a33d116a95195ed7ee8c7a3aff14fb))\n- assign form specific properties to `arceus-legend` ([a9a1879](https://github.com/favware/graphql-pokemon/commit/a9a1879f5371e34594f496e67580c8a3321b95fe))\n\n## [6.5.0](https://github.com/favware/graphql-pokemon/compare/v6.4.0...v6.5.0) (2022-03-05)\n\n### Features\n\n- add Legendary Arceus data ([50eedaf](https://github.com/favware/graphql-pokemon/commit/50eedaff08c5d937def4e52ba39b6dd46fe2d8ba))\n\n## [6.4.0](https://github.com/favware/graphql-pokemon/compare/v6.3.3...v6.4.0) (2022-02-19)\n\n### Features\n\n- add BDSP flavor texts ([18dad91](https://github.com/favware/graphql-pokemon/commit/18dad9194358a253936dd61d517415e102f65a89))\n- add flavor texts for hisuian forms ([9a2ffa7](https://github.com/favware/graphql-pokemon/commit/9a2ffa77a11c5ecc44159e58c1c6b00e5ecc8c66))\n- add Legends Arceus data ([14affc4](https://github.com/favware/graphql-pokemon/commit/14affc4cc823ce3ab27dfb1584df3a95118135dd))\n- add Legends Arceus moves ([44d3ea0](https://github.com/favware/graphql-pokemon/commit/44d3ea0ff831420c168196f22ef2b7596d19e7be))\n- add legends arceus pokedex data ([8e02a13](https://github.com/favware/graphql-pokemon/commit/8e02a13c999d044ad544590b8665d831b76b1a5a))\n- add otherFormes to all separate formes ([9a237f6](https://github.com/favware/graphql-pokemon/commit/9a237f6cb6d1bb21afad491c73b6d4cd3e3f2b9d))\n\n### Bug Fixes\n\n- add missing `baseSpecies` and `otherFormes` ([8f9c13a](https://github.com/favware/graphql-pokemon/commit/8f9c13ae2413ce9dc4d83328dd09ee5874d4158b))\n- allow `pokemon number` queries to go up to dex number 905 ([82b8178](https://github.com/favware/graphql-pokemon/commit/82b8178925ff305d49a099fd8d882929c65fdf94))\n- allow maximum of all pokemon listing to go up to 1271 ([a6c1a41](https://github.com/favware/graphql-pokemon/commit/a6c1a41d731adc23fef3f9b8bac1f3bc87783d7d))\n- fixed species for hisuian sliggoo ([de56079](https://github.com/favware/graphql-pokemon/commit/de56079c630994516da5d6520c6ca225a7eca9d5))\n- fixed various move types ([6689181](https://github.com/favware/graphql-pokemon/commit/66891818952e352d17cada2b136657e027ebf1d5))\n- use special sprites for hisuian forms ([ab4d0fd](https://github.com/favware/graphql-pokemon/commit/ab4d0fda205cd4afe278317fc63f4d0fa17cb1c0))\n\n### [6.3.3](https://github.com/favware/graphql-pokemon/compare/v6.3.2...v6.3.3) (2022-02-14)\n\n### [6.3.2](https://github.com/favware/graphql-pokemon/compare/v6.3.1...v6.3.2) (2022-02-06)\n\n### [6.3.1](https://github.com/favware/graphql-pokemon/compare/v6.3.0...v6.3.1) (2022-01-23)\n\n## [6.3.0](https://github.com/favware/graphql-pokemon/compare/v6.2.9...v6.3.0) (2022-01-22)\n\n### Features\n\n- add `key` property to all primary structures ([82f9ab6](https://github.com/favware/graphql-pokemon/commit/82f9ab66365c3086bc55a4849c086cc4fb217444))\n- add `pokemonKey` to `Learnset` ([ee1ca27](https://github.com/favware/graphql-pokemon/commit/ee1ca27880da754d6dacb551a02ea7aed6f3cab9))\n- migrate from fuse to jaro-winkler ([bc69694](https://github.com/favware/graphql-pokemon/commit/bc6969427f42ec771be398b2d64bec1313d320bf))\n\n### Bug Fixes\n\n- ensure `forme` and `formeLetter` are actually mapped ([90f5fc6](https://github.com/favware/graphql-pokemon/commit/90f5fc6989f5a21e0f9e8c2b034d1f608fa2cd84))\n- fixed key for 10,000,000 volt thunderbolt to be supported by GraphQL Enum ([7caedda](https://github.com/favware/graphql-pokemon/commit/7caedda005b20a4ced9f0f1ae15d7d86b3664196))\n\n### [6.2.9](https://github.com/favware/graphql-pokemon/compare/v6.2.8...v6.2.9) (2022-01-16)\n\n### Bug Fixes\n\n- fixed species name for alakazam-mega ([3a41adf](https://github.com/favware/graphql-pokemon/commit/3a41adfe1c14f3962bb271f2c78452cdc7637d96))\n\n### [6.2.8](https://github.com/favware/graphql-pokemon/compare/v6.2.7...v6.2.8) (2022-01-02)\n\n### [6.2.7](https://github.com/favware/graphql-pokemon/compare/v6.2.6...v6.2.7) (2021-12-19)\n\n### [6.2.6](https://github.com/favware/graphql-pokemon/compare/v6.2.5...v6.2.6) (2021-12-12)\n\n### [6.2.5](https://github.com/favware/graphql-pokemon/compare/v6.2.4...v6.2.5) (2021-12-05)\n\n### Bug Fixes\n\n- **cap:** add Venomicon ([#582](https://github.com/favware/graphql-pokemon/issues/582)) ([1f3c8cc](https://github.com/favware/graphql-pokemon/commit/1f3c8ccdedcdc5952ba39961454fb478fcda2a16))\n\n### [6.2.4](https://github.com/favware/graphql-pokemon/compare/v6.2.3...v6.2.4) (2021-12-05)\n\n### [6.2.3](https://github.com/favware/graphql-pokemon/compare/v6.2.2...v6.2.3) (2021-11-29)\n\n### [6.2.2](https://github.com/favware/graphql-pokemon/compare/v6.2.1...v6.2.2) (2021-11-28)\n\n### [6.2.1](https://github.com/favware/graphql-pokemon/compare/v6.2.0...v6.2.1) (2021-11-07)\n\n## [6.2.0](https://github.com/favware/graphql-pokemon/compare/v6.1.0...v6.2.0) (2021-10-10)\n\n### Features\n\n- add `getAllPokemonSpecies` query to get all Pokémon in the API ([482c28e](https://github.com/favware/graphql-pokemon/commit/482c28eb17c545849c89245b05624693f11864ac))\n\n## [6.1.0](https://github.com/favware/graphql-pokemon/compare/v6.0.5...v6.1.0) (2021-10-01)\n\n### Features\n\n- add new CAP pokemon ([#542](https://github.com/favware/graphql-pokemon/issues/542)) ([12cfdc3](https://github.com/favware/graphql-pokemon/commit/12cfdc3f4dac508eeaa6aca9df00c53142a52ead))\n\n### Bug Fixes\n\n- fixed evolution criteria for Galarian Slowking ([c653e73](https://github.com/favware/graphql-pokemon/commit/c653e73d88d6e38dbf991c8ba2cdc71134be8358))\n- fixed various descriptions ([c7bcc09](https://github.com/favware/graphql-pokemon/commit/c7bcc0972c71beed69601da1e456826c4e53c286))\n\n### [6.0.5](https://github.com/favware/graphql-pokemon/compare/v6.0.4...v6.0.5) (2021-09-30)\n\n### Bug Fixes\n\n- **deps:** update dependency graphql to ^15.6.0 ([#532](https://github.com/favware/graphql-pokemon/issues/532)) ([074a10c](https://github.com/favware/graphql-pokemon/commit/074a10cd520bad048e0c830a2de2b8806a59c7f2))\n\n### [6.0.4](https://github.com/favware/graphql-pokemon/compare/v6.0.3...v6.0.4) (2021-09-27)\n\n### [6.0.3](https://github.com/favware/graphql-pokemon/compare/v6.0.2...v6.0.3) (2021-09-27)\n\n### [6.0.2](https://github.com/favware/graphql-pokemon/compare/v6.0.1...v6.0.2) (2021-09-19)\n\n### Bug Fixes\n\n- **Type:** properly mark properties of `Type` as non-nullable ([467be09](https://github.com/favware/graphql-pokemon/commit/467be09872a8368213a042ee5182fc8734239b91))\n\n### [6.0.1](https://github.com/favware/graphql-pokemon/compare/v6.0.0...v6.0.1) (2021-09-19)\n\n### Bug Fixes\n\n- fixed 1 remaining `pokemon` -> `Pokémon` ([82d02ef](https://github.com/favware/graphql-pokemon/commit/82d02ef4f4a59b8bc8196d9a9bc262e7aeebfff3))\n- fixed various incorrect characters ([1fe9195](https://github.com/favware/graphql-pokemon/commit/1fe9195e9cf1250131ef880eaa4c587d8be2bbcb))\n\n## [6.0.0](https://github.com/favware/graphql-pokemon/compare/v5.7.1...v6.0.0) (2021-09-19)\n\n### ⚠ BREAKING CHANGES\n\n- removed `DexEntry.evos` property, if you want to get just the evolution names use `evolutions { species }`\n- removed `DexEntry.prevo` property, if you want to get just the evolution names use `preevolutions { species }`\n- removed `DexEntry` structure, most of its properties are merged into `DexDetails`\n- removed `getAbilityByFuzzy`\n- removed `getAbilityByName`\n- removed `getDexEntries`\n- removed `getDexEntryByDexNumber`\n- removed `getDexEntryBySpeciesName`\n- removed `getItemByFuzzy`\n- removed `getItemByName`\n- removed `getMoveByFuzzy`\n- removed `getMoveByName`\n- removed `getTypeByName`\n- removed `take`, `skip` and `reverse` from `getPokemon`. They are renamed to `takeFlavorTexts` (default: 1), `offsetFlavorTexts` (default: 0), and `reverseFlavorTexts` (default: true)\n- renamed `Abilities` enum to `AbilitiesEnum`\n- renamed `AbilityPaginatedArgs` to `FuzzyAbilityArgs`\n- renamed `ExactPokemonPaginatedArgs` to `PokemonArgs`\n- renamed `getAbilityDetailsByFuzzy` to `getFuzzyAbility`\n- renamed `getAbilityDetailsByName` to `getAbility`\n- renamed `getItemDetailsByFuzzy` to `getFuzzyItem`\n- renamed `getItemDetailsByName` to `getItem`\n- renamed `getMoveDetailsByFuzzy` to `getFuzzyMove`\n- renamed `getMoveDetailsByName` to `getMove`\n- renamed `getPokemonDetails` to `getPokemon`\n- renamed `getPokemonDetailsByFuzzy` to `getFuzzyPokemon`\n- renamed `getPokemonDetailsByName` to `getPokemonByName` and `getPokemonBySpecies`\n- renamed `getPokemonDetailsByNumber` to `getPokemonByDexNumber`\n- renamed `getPokemonLearnset` to `getLearnset`\n- renamed `getPokemonLearnsetByFuzzy` to `getFuzzyLearnset`\n- renamed `ItemPaginatedArgs` to `FuzzyItemArgs`\n- renamed `Items` enum to `ItemsEnum`\n- renamed `LearnsetFuzzyArgs` to `FuzzyLearnsetArgs`\n- renamed `MovePaginatedArgs` to `FuzzyMoveArgs`\n- renamed `Moves` enum to `MovesEnum`\n- renamed `Pokemon` enum to `PokemonEnum`\n- renamed `PokemonNumberPaginatedArgs` to `PokemonNumberArgs`\n- renamed `PokemonPaginatedArgs` to `FuzzyPokemonArgs`\n- renamed `Types` enum to `TypesEnum`\n- renamed the `skip` parameter for all `getFuzzy*` queries has been renamed to `offset` to better represent what it does.\n\n### Features\n\n- `getFuzzy*` queries can now return multiple results that match the fuzzy query. By default only 1 result is returned. You can modify this by passing the `take` parameter. Furthermore you can provide the `offset` parameter to skip that many items from the start, and the `reverse` parameter to reverse the array before applying `take` and `offset`. ([1fa1240](https://github.com/favware/graphql-pokemon/commit/1fa1240bfa8b113f411b8a7bd8b50425e276321b))\n- added the missing type-specific hidden powers ([c1a8e83](https://github.com/favware/graphql-pokemon/commit/c1a8e836594c0ee1d96c594cc2ed70d377561aeb))\n- rewrite API to version 6 ([#516](https://github.com/favware/graphql-pokemon/issues/516)) ([#521](https://github.com/favware/graphql-pokemon/issues/521)) ([920a466](https://github.com/favware/graphql-pokemon/commit/920a4664f6f92bd1195ed7e2f174044090d6f478))\n\n### Bug Fixes\n\n- also return base Pokémon data for `getLearnset` when only requesting `backSprite` and/or `shinyBackSprite` ([ff8455a](https://github.com/favware/graphql-pokemon/commit/ff8455a88dbc09465277c1dccef31fd1061b6018))\n- fixed `hidden power` being marked as a water type move ([578653c](https://github.com/favware/graphql-pokemon/commit/578653c0b48b3b32273c068aef526230b4e6af6f))\n- fixed the `basePower` for the moves `frustration` and `return` ([32f9d18](https://github.com/favware/graphql-pokemon/commit/32f9d183a729f6d46bee0b30747fbec31335d8ff))\n- fixed the `cosmeticFormes` for `flabébé` ([ae0ee83](https://github.com/favware/graphql-pokemon/commit/ae0ee83464aad40316dc866d7490672511674d08))\n- fixed the `version_id` (game) for Missingno's flavour text ([7855a3c](https://github.com/favware/graphql-pokemon/commit/7855a3c4e7e7aa05529abe007cb30bd08eb5131c))\n- fixed the `zMovePower` for the moves `frustration`, `return`, `seismic toss`, and `night shade` ([b124212](https://github.com/favware/graphql-pokemon/commit/b124212acc1ae74ef4732f7760478fd5bcef41ef))\n- fixed the bulbapedia URL for nidoran-female ([f8a04a9](https://github.com/favware/graphql-pokemon/commit/f8a04a90ad755cf3b064a3f0954490272e7250c1))\n- fixed the bulbapedia URL for nidoran-male ([8bd546f](https://github.com/favware/graphql-pokemon/commit/8bd546f0cbb302b31cbcce655624dd9e92f6257b))\n- fixed the quotes used in the flavour texts ([08c4358](https://github.com/favware/graphql-pokemon/commit/08c43586d241267d23765d77d1d07c9213dfdc12))\n- fixed the registered name for `gengargmax` ([309273e](https://github.com/favware/graphql-pokemon/commit/309273e219d7f70363687c138e87221a81d03c8f))\n- fixed the way prefixed fuzzy queries are parsed. It is now possible to prefix with `galarian`, `alolan`, and `gigantamax` alongside their respective values of `galar`, `alola` and `gmax`. ([a3fe56b](https://github.com/favware/graphql-pokemon/commit/a3fe56becfd6e0a3e99e35c41e53d3b7240ee6dd))\n- fixed various text issues in flavour texts, in particular garbled characters being in the place of the common `é` character ([aa1cd41](https://github.com/favware/graphql-pokemon/commit/aa1cd41c13ce87b20b1deec45ec50561387983e0))\n- when a move's z-move power cannot be computed the value of `0` is now returned, as opposed to `Infinity`, which would cause an error. ([4a07fc3](https://github.com/favware/graphql-pokemon/commit/4a07fc3e9a5b3f65bd9451724b42c4de06405cc6))\n\n### [5.7.1](https://github.com/favware/graphql-pokemon/compare/v5.7.0...v5.7.1) (2021-09-11)\n\n### Bug Fixes\n\n- fixed the published bundle ([312915d](https://github.com/favware/graphql-pokemon/commit/312915dff492a7076df29f8ef6a1155b8b77dc1c))\n\n## [5.7.0](https://github.com/favware/graphql-pokemon/compare/v5.6.0...v5.7.0) (2021-09-06)\n\n### Features\n\n- add Effort Value yields to all Pokémon ([#444](https://github.com/favware/graphql-pokemon/issues/444)) ([dd69b57](https://github.com/favware/graphql-pokemon/commit/dd69b57f4562a8265b1655a4c3b16ab6177fbdc7))\n\n### Bug Fixes\n\n- fixed pre-evolution parsing for sirfetch'd ([09b03ff](https://github.com/favware/graphql-pokemon/commit/09b03ffe4518a652241c6d91a02fb5b6028ae8b4))\n- fixed some pokemon -> pokémon ([b9a9ffb](https://github.com/favware/graphql-pokemon/commit/b9a9ffbc4a743128cd55f530538440fba331264a))\n- fixed various bulbapedia, smogon, serebii and sprite urls ([8193ed3](https://github.com/favware/graphql-pokemon/commit/8193ed39ea1ffa5e8ef73893976a46f154cdcc4f))\n- fixed various incorrect symbols in flavour texts ([307a256](https://github.com/favware/graphql-pokemon/commit/307a25686296ecfae48d3d59a917f03f13e3f2f3))\n\n## [5.6.0](https://github.com/favware/graphql-pokemon/compare/v5.5.9...v5.6.0) (2021-09-05)\n\n### Features\n\n- add growth rate catch rate and hatch time ([#509](https://github.com/favware/graphql-pokemon/issues/509)) ([f4da2b6](https://github.com/favware/graphql-pokemon/commit/f4da2b690f1e2b13239aaf897b4bf70fc00846b4))\n\n### [5.5.9](https://github.com/favware/graphql-pokemon/compare/v5.5.8...v5.5.9) (2021-07-18)\n\n### Bug Fixes\n\n- mark package as side effect free ([5a924c4](https://github.com/favware/graphql-pokemon/commit/5a924c47842672a36841f5554bd4a35e56362e3f))\n\n### [5.5.8](https://github.com/favware/graphql-pokemon/compare/v5.5.7...v5.5.8) (2021-07-04)\n\n### [5.5.7](https://github.com/favware/graphql-pokemon/compare/v5.5.6...v5.5.7) (2021-06-30)\n\n### [5.5.6](https://github.com/favware/graphql-pokemon/compare/v5.5.5...v5.5.6) (2021-06-27)\n\n### [5.5.5](https://github.com/favware/graphql-pokemon/compare/v5.5.4...v5.5.5) (2021-06-20)\n\n### [5.5.4](https://github.com/favware/graphql-pokemon/compare/v5.5.3...v5.5.4) (2021-06-19)\n\n### Bug Fixes\n\n- swap import and require in export paths ([5689ae0](https://github.com/favware/graphql-pokemon/commit/5689ae0adf9030195ccb2b74356dc891c7b3e676))\n\n### [5.5.3](https://github.com/favware/graphql-pokemon/compare/v5.5.2...v5.5.3) (2021-06-19)\n\n### Bug Fixes\n\n- bundle with rollup to output proper JS files ([3163171](https://github.com/favware/graphql-pokemon/commit/3163171a5323533edb29f6bc69d76047832106f5))\n\n### [5.5.2](https://github.com/favware/graphql-pokemon/compare/v5.5.1...v5.5.2) (2021-05-30)\n\n### [5.5.1](https://github.com/favware/graphql-pokemon/compare/v5.5.0...v5.5.1) (2021-05-29)\n\n### Bug Fixes\n\n- add back sprite support to learnset queries ([c02f2fc](https://github.com/favware/graphql-pokemon/commit/c02f2fc3804203c19b4b27e0ce45eecf3206d943))\n\n## [5.5.0](https://github.com/favware/graphql-pokemon/compare/v5.4.0...v5.5.0) (2021-05-29)\n\n### Features\n\n- add support for back sprites ([2891254](https://github.com/favware/graphql-pokemon/commit/289125496f4ef1289be0aa791ac897cfe16eabdb))\n\n## [5.4.0](https://github.com/favware/graphql-pokemon/compare/v5.3.0...v5.4.0) (2021-05-27)\n\n### Features\n\n- add a whole slew of extra pokemon aliases based on pokemon showdown data ([592e19d](https://github.com/favware/graphql-pokemon/commit/592e19d050b836752a81e65aa82a1ef771c276a4))\n\n### Bug Fixes\n\n- ensure spaces are trimmed before and after fuzzy search input for better matches ([0af6583](https://github.com/favware/graphql-pokemon/commit/0af65834b8fccab61a478b88cfab59747ababcbe))\n- **blacephalon:** fixed species name, now fuzzy searching its number will work ([ebe4611](https://github.com/favware/graphql-pokemon/commit/ebe46114302be4b874f53d2cbd53596e2ca3ffd6))\n\n## [5.3.0](https://github.com/favware/graphql-pokemon/compare/v5.2.0...v5.3.0) (2021-05-18)\n\n### Features\n\n- **dex:** add `getPokemonDetailsByNumber` query ([ec861fa](https://github.com/favware/graphql-pokemon/commit/ec861fae6f4db53623a28a55e1297de137379076))\n\n### Bug Fixes\n\n- **cap data:** add missing `miasmite` ([16624d1](https://github.com/favware/graphql-pokemon/commit/16624d1cd1788eeb60cb6c2e0a4175b891df4240))\n- **data:** move missingno to Gen 1 ([bb2a13b](https://github.com/favware/graphql-pokemon/commit/bb2a13be9370dd818d80012d2c47b7dd3c2a66dc))\n- **data:** update descriptions for various moves and abilities ([5b628a4](https://github.com/favware/graphql-pokemon/commit/5b628a403e0e84375ca1a07d4a6a0540c3eb1485))\n- **dex:** ensure common form prefixes are also resolved ([d2fbd3e](https://github.com/favware/graphql-pokemon/commit/d2fbd3e0461febb71a504cdbc62b5108b3886c05))\n\n## [5.2.0](https://github.com/favware/graphql-pokemon/compare/v5.1.2...v5.2.0) (2021-05-05)\n\n### Features\n\n- add gmime and gmrmime as aliases for Galarian Mr. Mime ([7a750a7](https://github.com/favware/graphql-pokemon/commit/7a750a76084e27bd428c9b490469aef9f2b70f21))\n\n### [5.1.2](https://github.com/favware/graphql-pokemon/compare/v5.1.1...v5.1.2) (2021-02-20)\n\n### Bug Fixes\n\n- add CAP specialSprite for remaining pokemons ([6b4eab3](https://github.com/favware/graphql-pokemon/commit/6b4eab30a6da6efeacd23994912be0f4323b375a))\n- add specialShinySprites to CAP Pokémon ([bf74695](https://github.com/favware/graphql-pokemon/commit/bf74695fda9052022605f016eebf9bcac1be2351))\n- add specialSprites for CAP Pokémon ([180d8ab](https://github.com/favware/graphql-pokemon/commit/180d8ab93ab38b6857a032d5a97ce1bb13dd9ff0))\n\n### [5.1.1](https://github.com/favware/graphql-pokemon/compare/v5.1.0...v5.1.1) (2021-02-15)\n\n### Bug Fixes\n\n- **itementry:** smogon page is nullable ([4efeb36](https://github.com/favware/graphql-pokemon/commit/4efeb36e5764151c6b19bbd3278c535c336d9955))\n- **items:** add non-standard to items not in gen 8 ([0c30822](https://github.com/favware/graphql-pokemon/commit/0c3082261851de38bc7906e783348c9a5ac5405f))\n- **items:** mark all key items as key items ([48a89bf](https://github.com/favware/graphql-pokemon/commit/48a89bf903387eb522733745d5b53b58520e6065))\n- never set smogon page for key items ([65200d7](https://github.com/favware/graphql-pokemon/commit/65200d748d40074a8a685360deb49dc63ec4387b))\n\n## [5.1.0](https://github.com/favware/graphql-pokemon/compare/v5.0.1...v5.1.0) (2021-02-15)\n\n### Features\n\n- add key items ([#397](https://github.com/favware/graphql-pokemon/issues/397)) ([8152383](https://github.com/favware/graphql-pokemon/commit/815238359d38fb6e60c265f097f254a56e79d5e2))\n\n### Bug Fixes\n\n- fixed victiny -> victini in aliases ([931d1b4](https://github.com/favware/graphql-pokemon/commit/931d1b4f976dbd5afbd9ddd3f008cfac8db00200))\n\n### [5.0.1](https://github.com/favware/graphql-pokemon/compare/v5.0.0...v5.0.1) (2021-01-10)\n\n### Bug Fixes\n\n- **pokedex:** assign proper evolution conditions for happiness evolutions ([a802dc6](https://github.com/favware/graphql-pokemon/commit/a802dc691c1b33811953a2c2a16603ce2263efa1))\n\n## [5.0.0](https://github.com/favware/graphql-pokemon/compare/v4.5.0...v5.0.0) (2020-11-28)\n\n### ⚠ BREAKING CHANGES\n\n- While this should not be a breaking change to a lot of people, the types for\n  aliasses have drastically changed so this should be considered a breaking change.\n\n### Features\n\n- rework parsing of aliases ([9fb32bc](https://github.com/favware/graphql-pokemon/commit/9fb32bcb903afc7bfd761723d1b8a3530f124d6c))\n\n## [4.5.0](https://github.com/favware/graphql-pokemon/compare/v4.4.0...v4.5.0) (2020-11-09)\n\n### Features\n\n- add information on out-of-battle effects to move & ability info ([#336](https://github.com/favware/graphql-pokemon/issues/336)) ([f7e8d11](https://github.com/favware/graphql-pokemon/commit/f7e8d11a7368f4d643ed0e8b94c7d5103cb71d6d))\n\n### Bug Fixes\n\n- **items:** add info for potions ([#332](https://github.com/favware/graphql-pokemon/issues/332)) ([b52f151](https://github.com/favware/graphql-pokemon/commit/b52f1513a7a5ce600333777caa21443a353ef2d9))\n- **items:** add obtainable items ([#321](https://github.com/favware/graphql-pokemon/issues/321)) ([65e1cc7](https://github.com/favware/graphql-pokemon/commit/65e1cc70f03a8b3810d8bb8be53650a6942d40f0))\n\n## [4.4.0](https://github.com/favware/graphql-pokemon/compare/v4.3.0...v4.4.0) (2020-10-25)\n\n### Features\n\n- add Crown Tundra ([#316](https://github.com/favware/graphql-pokemon/issues/316)) ([66987c7](https://github.com/favware/graphql-pokemon/commit/66987c7bdfaa15b7d3316b59648e53d3890538f9))\n\n## [4.3.0](https://github.com/favware/graphql-pokemon/compare/v4.2.5...v4.3.0) (2020-09-02)\n\n### Features\n\n- remove nuget publish ([6db4d4c](https://github.com/favware/graphql-pokemon/commit/6db4d4ce3cd1891e1ac3a27dd9e30711fa472e54))\n\n### [4.2.5](https://github.com/favware/graphql-pokemon/compare/v4.2.4...v4.2.5) (2020-08-20)\n\n### [4.2.4](https://github.com/favware/graphql-pokemon/compare/v4.2.3...v4.2.4) (2020-08-06)\n\n### Bug Fixes\n\n- cover data changes ([1fa2f7f](https://github.com/favware/graphql-pokemon/commit/1fa2f7f0d3a27fc8fffadee3dbaf814bb1d54243))\n- resolve security vulnerability CVE-2020-8203 ([9133413](https://github.com/favware/graphql-pokemon/commit/91334135c40a58094225b7033f87337e0d6722f8))\n\n### [4.2.3](https://github.com/favware/graphql-pokemon/compare/v4.2.2...v4.2.3) (2020-07-05)\n\n### [4.2.2](https://github.com/favware/graphql-pokemon/compare/v4.2.1...v4.2.2) (2020-07-01)\n\n### Bug Fixes\n\n- **moves:** add z-move baser power for surging strikes ([f98e274](https://github.com/favware/graphql-pokemon/commit/f98e27435b516b74a2bbe805e9a18602f2c6a99e))\n- **moves:** fixed descr for Shell Side Arm ([a66fb8a](https://github.com/favware/graphql-pokemon/commit/a66fb8a403ab6e62d847ae9a205da0736b04fab2))\n\n### [4.2.1](https://github.com/favware/graphql-pokemon/compare/v4.2.0...v4.2.1) (2020-06-20)\n\n### Bug Fixes\n\n- **moves:** fixed zMovePower for Struggle ([f54cda0](https://github.com/favware/graphql-pokemon/commit/f54cda08f92bb7b87cc99e57cb18be3a35de25a1))\n\n## [4.2.0](https://github.com/favware/graphql-pokemon/compare/v4.1.0...v4.2.0) (2020-06-20)\n\n### Features\n\n- **data:** add flavour texts for Isle of Armor Pokemon (part 1) ([#224](https://github.com/favware/graphql-pokemon/issues/224)) ([558c7c2](https://github.com/favware/graphql-pokemon/commit/558c7c2442b1a35c4987e204a55e86b56767abff))\n- **data:** add flavour texts for Isle of Armor Pokemon (part 2) ([#223](https://github.com/favware/graphql-pokemon/issues/223)) ([46f3a67](https://github.com/favware/graphql-pokemon/commit/46f3a676c22a1b9217de4348483b5d2f084b2484))\n- **data:** add Isle of Armor data ([edaa401](https://github.com/favware/graphql-pokemon/commit/edaa401bfc5d6a54a2a945ebd904fbbd8bcf2366))\n\n### Bug Fixes\n\n- **abilities:** fixed coaching description ([f480ded](https://github.com/favware/graphql-pokemon/commit/f480ded2cbf02e3da925003ae729bcf5cde0cb30))\n\n## [4.1.0](https://github.com/favware/graphql-pokemon/compare/v4.0.4...v4.1.0) (2020-06-19)\n\n### Features\n\n- add z-move power ([875b196](https://github.com/favware/graphql-pokemon/commit/875b1968bff6e53158b589b4b35709ca37463c76))\n- max move basepowers ([169eccf](https://github.com/favware/graphql-pokemon/commit/169eccf3eedd1395c8857cc9d950071a52f74f12))\n\n### Bug Fixes\n\n- target gen8 dex for ability/item/move pages ([d256511](https://github.com/favware/graphql-pokemon/commit/d25651130039471fca163bc3ed449af1687f66c6))\n- **pokedex:** added missingno sprites ([063ae0f](https://github.com/favware/graphql-pokemon/commit/063ae0fd83046ae21a09de0293ddb0823668a7d8))\n\n### [4.0.4](https://github.com/favware/graphql-pokemon/compare/v4.0.3...v4.0.4) (2020-06-14)\n\n### Bug Fixes\n\n- add cosmeticFormes to DexEntry ([9ea20c0](https://github.com/favware/graphql-pokemon/commit/9ea20c0777fbe8f7b872cfe77254ec74acdeede7))\n- target GCP url for schema generation ([1f2174a](https://github.com/favware/graphql-pokemon/commit/1f2174ab1b687ce9a3d2d5f870fcffd0a4da8711))\n\n### [4.0.3](https://github.com/favware/graphql-pokemon/compare/v4.0.2...v4.0.3) (2020-06-13)\n\n### Features\n\n- **dex:** implement cosmeticFormes ([45c503a](https://github.com/favware/graphql-pokemon/commit/45c503aed920b6e9bcf7f43f0dcdea5de308ad0c))\n\n### Bug Fixes\n\n- **dexservice:** properly parse data for smogon and serebii page links ([1ca99d8](https://github.com/favware/graphql-pokemon/commit/1ca99d81c4d8a1d8d729cc08fcca54e9a086b95b))\n- **pokedex:** properly add Xerneas Neutral ([dbc579b](https://github.com/favware/graphql-pokemon/commit/dbc579b2f058d4d93ccbfd38a95565f77c9e80fc))\n- **typeservice:** fixed parsing of attacking matchups ([08364b6](https://github.com/favware/graphql-pokemon/commit/08364b64041794ea2ed8c46f5352fbc1213b180a))\n\n### [4.0.2](https://github.com/favware/graphql-pokemon/compare/v4.0.1...v4.0.2) (2020-06-08)\n\n### Features\n\n- update urls across code ([#213](https://github.com/favware/graphql-pokemon/issues/213)) ([4fa2b21](https://github.com/favware/graphql-pokemon/commit/4fa2b21c1eb712dcf13bfcdb4aa807a52a0e3c85))\n\n### Bug Fixes\n\n- **dexdata:** gloom evolution conditions ([#201](https://github.com/favware/graphql-pokemon/issues/201)) ([#202](https://github.com/favware/graphql-pokemon/issues/202)) ([7fe907d](https://github.com/favware/graphql-pokemon/commit/7fe907d57f264636649ccd7c66ebfb612fa69824))\n\n### [4.0.1](https://github.com/favware/graphql-pokemon/compare/v4.0.0...v4.0.1) (2020-05-26)\n\n### Bug Fixes\n\n- **data:** properly format farfetch'd and sirfetch'd names ([95a527c](https://github.com/favware/graphql-pokemon/commit/95a527c5b729cc26e908a92ee90b9eff5025eb56))\n\n## [4.0.0](https://github.com/favware/graphql-pokemon/compare/v3.1.1...v4.0.0) (2020-05-18)\n\n### ⚠ BREAKING CHANGES\n\n- TypeGraphQL no longer supports NodeJS versions\n  lower than 10.3 so the engine fields in this library have been\n  adjusted similarly. You will now need at least NodeJS v12 to\n  run this API locally.\n- FuseJS now returns data for their fuzzy searches\n  differently. Before the data would be directly on the result, now you'll\n  need to access it on the \"items\" property. This affects all queries for\n  this API that return `[JSONObject!]!` as type.\n\n### Features\n\n- bump FuseJS, TypeGraphql & GraphQL deps ([e9626a1](https://github.com/favware/graphql-pokemon/commit/e9626a171507c60aeab1915cc6801419dcbc9057))\n\n### 3.1.2 (2020-05-16)\n\n### 3.1.1 (2020-05-04)\n\n### Bug Fixes\n\n- **graphqlset:** fixed LGTM error ([72a748e](https://github.com/favware/graphql-pokemon/commit/72a748e32daa366bab503617bafa45c35278fa9c))\n\n## 3.1.0 (2020-05-03)\n\n### Features\n\n- various updates and fixes ([#184](https://github.com/favware/graphql-pokemon/issues/184)) ([c05c736](https://github.com/favware/graphql-pokemon/commit/c05c7369eaaacfc0356b82039ca9f16d23644e8a))\n\n### 3.0.3 (2020-05-02)\n\n### 3.0.2 (2020-05-02)\n\n### 3.0.1 (2020-04-25)\n\n### Bug Fixes\n\n- references and schema-ast codegen ([#180](https://github.com/favware/graphql-pokemon/issues/180)) ([e3d141a](https://github.com/favware/graphql-pokemon/commit/e3d141ae41c709d037584c9fe6ffe2a5bf9b35be)), closes [#177](https://github.com/favware/graphql-pokemon/issues/177) [#179](https://github.com/favware/graphql-pokemon/issues/179)\n\n## 3.0.0 (2020-04-25)\n\n### ⚠ BREAKING CHANGES\n\n- For the TypeScript typings enums are now replaced with \"const enums\" and the\n  published bundle only includes a .d.ts file.\n\n### Features\n\n- disable Strict Property Initialization ([39b0983](https://github.com/favware/graphql-pokemon/commit/39b098300fa88c3b831606c62031b409b23bea9b))\n\n## [1.8.0](https://github.com/favware/graphql-pokemon/compare/v1.7.0...v1.8.0) (2020-02-16)\n\n### Features\n\n- **datasets:** update datasets to latest data from showdown repo ([d72b1f4](https://github.com/favware/graphql-pokemon/commit/d72b1f4b66fed044bd85c6e5f079d237dbff4d08)), closes [#121](https://github.com/favware/graphql-pokemon/issues/121)\n- update smogon tierlists ([#100](https://github.com/favware/graphql-pokemon/issues/100)) ([eb18900](https://github.com/favware/graphql-pokemon/commit/eb189008f5099db19477374b40f65cd49983a437))\n- update smogon tierlists ([#101](https://github.com/favware/graphql-pokemon/issues/101)) ([274fb32](https://github.com/favware/graphql-pokemon/commit/274fb328e1e969114f2cf3edd05b6d95a7c28d9d))\n- update smogon tierlists ([#102](https://github.com/favware/graphql-pokemon/issues/102)) ([da01b0e](https://github.com/favware/graphql-pokemon/commit/da01b0ee645617b5e070a13361b11b2d16dd0bff))\n- update smogon tierlists ([#103](https://github.com/favware/graphql-pokemon/issues/103)) ([7284447](https://github.com/favware/graphql-pokemon/commit/7284447a9cb2b4f8aa2ee8f821f302dc22f8c0c8))\n\n## [1.7.0](https://github.com/favware/graphql-pokemon/compare/v1.6.0...v1.7.0) (2020-01-09)\n\n### Features\n\n- add galarian slowpoke ([389bf09](https://github.com/favware/graphql-pokemon/commit/389bf0948ff9cb81db6b27f39928a84efb5a3792))\n- update smogon tierlists ([#91](https://github.com/favware/graphql-pokemon/issues/91)) ([5aad6be](https://github.com/favware/graphql-pokemon/commit/5aad6be2f19a01afe59d24cf61d34d36a6e89c80))\n- update smogon tierlists ([#98](https://github.com/favware/graphql-pokemon/issues/98)) ([a55f303](https://github.com/favware/graphql-pokemon/commit/a55f3037a8a9040fa9fc9707bf0efc545eddc131))\n- update smogon tierlists ([#99](https://github.com/favware/graphql-pokemon/issues/99)) ([7846573](https://github.com/favware/graphql-pokemon/commit/78465736977af28c2d13904ba596063a3761aa14))\n\n### Bug Fixes\n\n- **assets:** update a lot of descriptions and other details on entries ([52ec837](https://github.com/favware/graphql-pokemon/commit/52ec837ac9d6c50c1c3d460c7f62c3d538505ef8))\n- **dexservice:** fixed critical bug when searching regional forms ([8e8355d](https://github.com/favware/graphql-pokemon/commit/8e8355d6081d1c931b216429890dafb0342c2834))\n- fixed gigantamax [pokemon] resolving to proper gmax forme ([8e2aa9e](https://github.com/favware/graphql-pokemon/commit/8e2aa9e51fe929b2f4a97365cae9760008d3946c))\n- **pokedex:** fixed a few duplicate num/forme combinations ([0f3ae45](https://github.com/favware/graphql-pokemon/commit/0f3ae45effe6f159a1cf26a9bf8c5c7f571d6688))\n- pikapapow had an invalid description ([2cb943c](https://github.com/favware/graphql-pokemon/commit/2cb943c07100634b5b3bd408a15619d113ee914a))\n\n## [1.6.0](https://github.com/favware/graphql-pokemon/compare/v1.5.1...v1.6.0) (2020-01-02)\n\n### Features\n\n- **moveentry:** remove type unions for category and target ([8f8b652](https://github.com/favware/graphql-pokemon/commit/8f8b65252caeba777bcadc196d8a984ee4d99eaa))\n\n### [1.5.1](https://github.com/favware/graphql-pokemon/compare/v1.5.0...v1.5.1) (2020-01-02)\n\n### Bug Fixes\n\n- fixed union typings script ([a848628](https://github.com/favware/graphql-pokemon/commit/a848628eccce6e2b3772ad7a317272d8d53aa8a9))\n\n## [1.5.0](https://github.com/favware/graphql-pokemon/compare/v1.4.1...v1.5.0) (2020-01-02)\n\n### Features\n\n- update smogon tierlists ([#90](https://github.com/favware/graphql-pokemon/issues/90)) ([4b0015a](https://github.com/favware/graphql-pokemon/commit/4b0015aa741de6e08e20c067281188e278b460f1))\n\n### [1.4.1](https://github.com/favware/graphql-pokemon/compare/v1.4.0...v1.4.1) (2020-01-01)\n\n### Bug Fixes\n\n- **typings:** add proper union typings to published typings ([acb04cf](https://github.com/favware/graphql-pokemon/commit/acb04cfff35565a3d3733a9e03b4b287577089fd))\n\n## [1.4.0](https://github.com/favware/graphql-pokemon/compare/v1.3.0...v1.4.0) (2020-01-01)\n\n### Features\n\n- strong type move target property ([5495e84](https://github.com/favware/graphql-pokemon/commit/5495e84f749a66d1300266b7a52cff48c7db80af))\n- update gen8 data ([7a2bc47](https://github.com/favware/graphql-pokemon/commit/7a2bc47a624b68effa70ae3cbd0415b9fb18c8f2))\n- update smogon tierlists ([#61](https://github.com/favware/graphql-pokemon/issues/61)) ([b726be2](https://github.com/favware/graphql-pokemon/commit/b726be2f860c3c0df4caf4394959bd67fd40dd9e))\n- update smogon tierlists ([#62](https://github.com/favware/graphql-pokemon/issues/62)) ([47d2575](https://github.com/favware/graphql-pokemon/commit/47d2575f0dbf64585ad97056e813f406ee9bd513))\n- update smogon tierlists ([#63](https://github.com/favware/graphql-pokemon/issues/63)) ([4d1fe51](https://github.com/favware/graphql-pokemon/commit/4d1fe51fcfe09be9fe87972fee7cfab080a4312b))\n- update smogon tierlists ([#64](https://github.com/favware/graphql-pokemon/issues/64)) ([13c2646](https://github.com/favware/graphql-pokemon/commit/13c2646adbc651b9fdd4a16beab3149ce287d49d))\n- update smogon tierlists ([#65](https://github.com/favware/graphql-pokemon/issues/65)) ([724fe89](https://github.com/favware/graphql-pokemon/commit/724fe894220b55e7a1df64fc87b63c9a0ba82054))\n- update smogon tierlists ([#68](https://github.com/favware/graphql-pokemon/issues/68)) ([6ada314](https://github.com/favware/graphql-pokemon/commit/6ada314b2af6e08cdb57b1cd06a6d2e401e9ddda))\n- update smogon tierlists ([#69](https://github.com/favware/graphql-pokemon/issues/69)) ([f79614a](https://github.com/favware/graphql-pokemon/commit/f79614a13cba6b0ffee4f150b34fcef573d5c24e))\n- update smogon tierlists ([#70](https://github.com/favware/graphql-pokemon/issues/70)) ([e9784d9](https://github.com/favware/graphql-pokemon/commit/e9784d95e3792e898439e78a6de634a1e6fed0cc))\n- update smogon tierlists ([#73](https://github.com/favware/graphql-pokemon/issues/73)) ([7031718](https://github.com/favware/graphql-pokemon/commit/70317180bd75040d3296285ffd7731b5b72fbc87))\n- update smogon tierlists ([#75](https://github.com/favware/graphql-pokemon/issues/75)) ([0ca625b](https://github.com/favware/graphql-pokemon/commit/0ca625be66bb492b4914d7e03c7e68f78c0bd830))\n- update smogon tierlists ([#76](https://github.com/favware/graphql-pokemon/issues/76)) ([f45d602](https://github.com/favware/graphql-pokemon/commit/f45d602bafa53104d9f514254e48b1ced41d4a83))\n- update smogon tierlists ([#77](https://github.com/favware/graphql-pokemon/issues/77)) ([869cbcb](https://github.com/favware/graphql-pokemon/commit/869cbcbf1caf612a395ab0663d48da314d8674f4))\n- update smogon tierlists ([#85](https://github.com/favware/graphql-pokemon/issues/85)) ([59ea50b](https://github.com/favware/graphql-pokemon/commit/59ea50bbdb0925866172cfd9520a7f50cc900ddf))\n- update smogon tierlists ([#86](https://github.com/favware/graphql-pokemon/issues/86)) ([04a2aac](https://github.com/favware/graphql-pokemon/commit/04a2aac9a2abb6486fd39c4f26d754116c0966ae))\n- update smogon tierlists ([#88](https://github.com/favware/graphql-pokemon/issues/88)) ([8103c94](https://github.com/favware/graphql-pokemon/commit/8103c94fd956d218c0cf16933f624b1b337b8420))\n- update smogon tierlists ([#89](https://github.com/favware/graphql-pokemon/issues/89)) ([313ded3](https://github.com/favware/graphql-pokemon/commit/313ded3054919f4ef2ebb81282c17f9e11a7364e))\n\n### Bug Fixes\n\n- typo in espeon species name ([e49de3f](https://github.com/favware/graphql-pokemon/commit/e49de3f6f30524e15939c2f18f1445fa1f7e7d24))\n\n## [1.3.0](https://github.com/favware/graphql-pokemon/compare/v1.2.3...v1.3.0) (2019-11-30)\n\n### Features\n\n- **learnset:** expose num and species in learnset calls ([0297b62](https://github.com/favware/graphql-pokemon/commit/0297b623e41af9de9e9284fc507d3c0a33bbfbde))\n\n### [1.2.3](https://github.com/favware/graphql-pokemon/compare/v1.2.2...v1.2.3) (2019-11-30)\n\n### Bug Fixes\n\n- **learnsetargs:** allow generation 8 as argument for generation ([f7c8867](https://github.com/favware/graphql-pokemon/commit/f7c8867a7c4d5e0dc3f50249f0e9917dcdcd4556))\n\n### [1.2.2](https://github.com/favware/graphql-pokemon/compare/v1.2.1...v1.2.2) (2019-11-30)\n\n### Bug Fixes\n\n- fixed published file refs ([44806eb](https://github.com/favware/graphql-pokemon/commit/44806eb5a53ada4fe235c3a0bbfb7c463ee8fa0b))\n\n### [1.2.1](https://github.com/favware/graphql-pokemon/compare/v1.2.0...v1.2.1) (2019-11-30)\n\n## [1.2.0](https://github.com/favware/graphql-pokemon/compare/v1.1.1...v1.2.0) (2019-11-30)\n\n### Features\n\n- update gen 8 data ([#58](https://github.com/favware/graphql-pokemon/issues/58)) ([d012e91](https://github.com/favware/graphql-pokemon/commit/d012e917854e43c46da9f607d4ae14d1c245b006))\n- update smogon tierlists ([#52](https://github.com/favware/graphql-pokemon/issues/52)) ([45efaf4](https://github.com/favware/graphql-pokemon/commit/45efaf4a288c9cae64881c1289c84de1dde74a5c))\n- update smogon tierlists ([#53](https://github.com/favware/graphql-pokemon/issues/53)) ([e83fff5](https://github.com/favware/graphql-pokemon/commit/e83fff55fdda5e41794b61d4cca2c6fa51b0b653))\n\n### [1.1.1](https://github.com/favware/graphql-pokemon/compare/v1.1.0...v1.1.1) (2019-11-26)\n\n### Bug Fixes\n\n- fixed published version ([bbdd1e4](https://github.com/favware/graphql-pokemon/commit/bbdd1e4b655419a959a42a62d79bca739513d79c))\n\n## [1.1.0](https://github.com/favware/graphql-pokemon/compare/v1.0.1...v1.1.0) (2019-11-26)\n\n### Features\n\n- add Data for Generation 8 Pokemon ([#34](https://github.com/favware/graphql-pokemon/issues/34)) ([2b9684d](https://github.com/favware/graphql-pokemon/commit/2b9684d03f32008529d038974dcda6670263d0c2))\n- add gen8 learnsets ([#47](https://github.com/favware/graphql-pokemon/issues/47)) ([29b51bf](https://github.com/favware/graphql-pokemon/commit/29b51bf08070e6128eb49de437627e549d4085d7))\n- add gen8 moves ([#46](https://github.com/favware/graphql-pokemon/issues/46)) ([85606e8](https://github.com/favware/graphql-pokemon/commit/85606e8ff2f3f4df75f51d0a06e19530e52f7745))\n- expose (shiny)sprite and color in learnset for discord embe… ([#45](https://github.com/favware/graphql-pokemon/issues/45)) ([7992c1c](https://github.com/favware/graphql-pokemon/commit/7992c1ca8e6075ae7227d8db780ee37688c45438))\n- gen8 flavours ([#51](https://github.com/favware/graphql-pokemon/issues/51)) ([82f868c](https://github.com/favware/graphql-pokemon/commit/82f868c8bf89114a1cb1909f1adc7460681bb251))\n- special(shiny)sprite field for odd-cases ([f671821](https://github.com/favware/graphql-pokemon/commit/f6718210e415ec142e8d7e0c49f84ac06fe7380a))\n- update smogon tierlists ([#50](https://github.com/favware/graphql-pokemon/issues/50)) ([39dbebc](https://github.com/favware/graphql-pokemon/commit/39dbebc4a7a08b8786cfba569215a901f62bf028))\n- **abilities:** add gen8 abilities ([#44](https://github.com/favware/graphql-pokemon/issues/44)) ([496e17b](https://github.com/favware/graphql-pokemon/commit/496e17bef34d8843185d075cc60dcd47d71039de))\n- gen8 pokemon data ([#43](https://github.com/favware/graphql-pokemon/issues/43)) ([c0594e1](https://github.com/favware/graphql-pokemon/commit/c0594e1bd24bbf91bc57040bd6e285a326e0ff32)), closes [#40](https://github.com/favware/graphql-pokemon/issues/40)\n- **dex:** add basestatstotal field ([#39](https://github.com/favware/graphql-pokemon/issues/39)) ([311f43a](https://github.com/favware/graphql-pokemon/commit/311f43a3960a5bc7ec844b3e695adaed6042beca)), closes [#38](https://github.com/favware/graphql-pokemon/issues/38)\n- **items:** add gen8 data and expose item sprite ([#42](https://github.com/favware/graphql-pokemon/issues/42)) ([7f01fae](https://github.com/favware/graphql-pokemon/commit/7f01faef901f1e2de85d411fc59da5727c4c35e5)), closes [#24](https://github.com/favware/graphql-pokemon/issues/24)\n\n### Bug Fixes\n\n- **dexservice:** fix pokemon sprites missing .gif extension ([e9f68ed](https://github.com/favware/graphql-pokemon/commit/e9f68edb8fbd19af1e08149edc59c0e8c302cf1e)), closes [#30](https://github.com/favware/graphql-pokemon/issues/30)\n- **dexservice:** fixed evos and prevo not showing in details ([b1a27a3](https://github.com/favware/graphql-pokemon/commit/b1a27a3188d84b10d19f74b756a6b8ef656599b5)), closes [#29](https://github.com/favware/graphql-pokemon/issues/29)\n- **dexservice:** properly parse sprites and evos ([#36](https://github.com/favware/graphql-pokemon/issues/36)) ([d51f009](https://github.com/favware/graphql-pokemon/commit/d51f009353631933206e1ef8ce00dba09ecf3916))\n- **itemservice:** add missing generationIntroduced field ([cf40973](https://github.com/favware/graphql-pokemon/commit/cf4097301a1ff53ea26ce04ab2718fb98184a1a1))\n\n### [1.0.1](https://github.com/favware/graphql-pokemon/compare/v1.0.0...v1.0.1) (2019-11-12)\n\n### Bug Fixes\n\n- **dexentry:** set height and weight as floats to allow decimal values ([e62c262](https://github.com/favware/graphql-pokemon/commit/e62c262aa1d0b5c0556dfd972bdbd391d5526354))\n\n## 1.0.0 (2019-11-12)\n\n### Features\n\n- 🎉 Hello GitHub ([80b1c66](https://github.com/favware/graphql-pokemon/commit/80b1c6650857a022921342c169b0f32d732c3470))\n- add ability's querying ([91bad53](https://github.com/favware/graphql-pokemon/commit/91bad530307607801fa3a0afbb3b482c8821d157))\n- add script for updating formats ([5127d87](https://github.com/favware/graphql-pokemon/commit/5127d87adc431ec59dde334fc3f64025ad6d78d5))\n- finish up move queries ([5e404d2](https://github.com/favware/graphql-pokemon/commit/5e404d28910be56762cc83efa1ac403b43eaaf2d)), closes [#7](https://github.com/favware/graphql-pokemon/issues/7)\n- firebase hosting ([3f9e3da](https://github.com/favware/graphql-pokemon/commit/3f9e3da389e2b18345bf0d6d7f5935216c55bcfc))\n- learnset query ([db6465e](https://github.com/favware/graphql-pokemon/commit/db6465ea7789f015558513f8d671a9129e659e39)), closes [#6](https://github.com/favware/graphql-pokemon/issues/6)\n- type matchup queries ([0eadb20](https://github.com/favware/graphql-pokemon/commit/0eadb20385ccc7ac48255691799b85e86399b431)), closes [#8](https://github.com/favware/graphql-pokemon/issues/8)\n- update data files ([1b2f3c1](https://github.com/favware/graphql-pokemon/commit/1b2f3c1adb401e3a99e731cdbcb12f3596550c7e))\n- update smogon formats ([01b7a0c](https://github.com/favware/graphql-pokemon/commit/01b7a0ce227232a249600112bdd73bcbb5725338))\n- implement pokemon details and dex entries ([786b539](https://github.com/favware/graphql-pokemon/commit/786b53926e0c18e4ae1dfa3a638681c7f676539f)), closes [#2](https://github.com/favware/graphql-pokemon/issues/2) [#3](https://github.com/favware/graphql-pokemon/issues/3)\n- subfield selection + better args + prep move queries ([06ec225](https://github.com/favware/graphql-pokemon/commit/06ec2251271b1fd908f744a2105b834ebe1e4071)), closes [#14](https://github.com/favware/graphql-pokemon/issues/14)\n- **query:** add item query endpoint ([f920694](https://github.com/favware/graphql-pokemon/commit/f92069438774a85b51261910969c3a50b2fedf4c)), closes [#5](https://github.com/favware/graphql-pokemon/issues/5)\n\n### Bug Fixes\n\n- better firebase hosting ([bf1da3a](https://github.com/favware/graphql-pokemon/commit/bf1da3ae44f1426a9e8da63a6c43384af9dc8217))\n- fix building ([65617e0](https://github.com/favware/graphql-pokemon/commit/65617e03386668f77f0af6084df85e653edee107))\n- fixed ability,item by fuzzy ([0d134ea](https://github.com/favware/graphql-pokemon/commit/0d134ea792d3b7bfa8f430a5cfc4c640c174b506))\n- fixed firebase deploy ([ea47780](https://github.com/favware/graphql-pokemon/commit/ea47780a5cc0749c2c4514515987c6964d273b93))\n"
  },
  {
    "path": "Dockerfile",
    "content": "# ================ #\n#    Base Stage    #\n# ================ #\n\nFROM node:24-alpine AS base\n\nWORKDIR /usr/src/app\n\nENV YARN_DISABLE_GIT_HOOKS=1\nENV CI=true\n\nRUN apk add --no-cache dumb-init\n\nCOPY --chown=node:node package.json .\nCOPY --chown=node:node yarn.lock .\nCOPY --chown=node:node .yarnrc.yml .\nCOPY --chown=node:node .yarn/ .yarn/\nCOPY --chown=node:node graphql/ graphql/\n\nRUN yarn install --immutable\n\nENTRYPOINT [\"dumb-init\", \"--\"]\n\n# ================ #\n#   Builder Stage  #\n# ================ #\n\nFROM base AS builder\n\nCOPY --from=base --chown=node:node /usr/src/app/node_modules/ /usr/src/app/node_modules/\n\nCOPY --chown=node:node tsconfig.base.json .\nCOPY --chown=node:node tsup.config.ts .\nCOPY --chown=node:node .prettierrc.mjs .\nCOPY --chown=node:node src/ src/\nCOPY --chown=node:node scripts/on-build-success.ts scripts/on-build-success.ts\nCOPY --chown=node:node scripts/utils.ts scripts/utils.ts\nCOPY --chown=node:node scripts/tsconfig.json scripts/tsconfig.json\n\nRUN yarn build\n\n# ================ #\n#   Runner Stage   #\n# ================ #\n\nFROM base AS runner\n\nENV NODE_ENV=\"production\"\nENV NODE_OPTIONS=\"--enable-source-maps\"\n\nCOPY --from=base --chown=node:node /usr/src/app/node_modules/ /usr/src/app/node_modules/\nCOPY --from=builder --chown=node:node /usr/src/app/api/ /usr/src/app/api/\n\nUSER node\n\nCMD [ \"yarn\", \"run\", \"start\"]\n"
  },
  {
    "path": "LICENSE.md",
    "content": "# The MIT License (MIT)\n\nCopyright © `2019` `Favware`\n\nPermission is hereby granted, free of charge, to any person\nobtaining a copy of this software and associated documentation\nfiles (the “Software”), to deal in the Software without\nrestriction, including without limitation the rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the\nSoftware is furnished to do so, subject to the following\nconditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "<div align=\"center\">\n\n[<img height=\"200\" src=\"https://cdn.favware.tech/img/gqlp.png\" alt=\"ArchAngel\"/>][dashboard]\n\n# [`GraphQL-Pokemon`][dashboard]\n\n**Extensive Pokémon GraphQL API!**\n\n[![GitHub](https://img.shields.io/github/license/favware/graphql-pokemon)](https://github.com/favware/graphql-pokemon/blob/main/LICENSE)\n\n[![npm](https://img.shields.io/npm/v/@favware/graphql-pokemon?color=crimson&label=TypeScript%20API%20Typings%20Version&logo=npm)](https://www.npmjs.com/package/@favware/graphql-pokemon)\n\n[![Support Server](https://discord.com/api/guilds/512303595966824458/embed.png?style=banner2)](https://join.favware.tech)\n\n</div>\n\n---\n\n**Table of Contents**\n\n- [GraphQL-Pokemon](#graphql-pokemon)\n  - [About](#about)\n  - [Key Features](#key-features)\n  - [JavaScript Companion Library](#javascript-companion-library)\n  - [Known bugs / limitations](#known-bugs--limitations)\n  - [API Documentation](#api-documentation)\n    - [Autogenerated text based documentation](#autogenerated-text-based-documentation)\n    - [Interactive playground with documentation embedded](#interactive-playground-with-documentation-embedded)\n  - [Usage](#usage)\n    - [Using `Fetch`](#using-fetch)\n    - [Using `Apollo Boost`](#using-apollo-boost)\n    - [Using `Apollo Client React`](#using-apollo-client-react)\n  - [Meta](#meta)\n    - [License](#license)\n    - [Buy us some doughnuts](#buy-us-some-doughnuts)\n  - [Contributors](#contributors)\n\n---\n\n## About\n\n[GraphQL-Pokemon][dashboard] is a GraphQL API that provides extensive Pokémon\ndata. Unlike contemporary APIs this API focusses on speed, accuracy and data\nquality. New game data is added within relatively short time after release, and\nSmogon tier data is automatically updated after tier shifts. Data used for this\nAPI is pulled from the [Pokemon Showdown GitHub][showdown-github], [Serebii],\nand [Bulbapedia].\n\n## Key Features\n\n- Fully generated client-side TypeScript typings published to\n  - [npm] as `@favware/graphql-pokemon`\n  - [GitHub Package Registry][ghcr_npm] as `@favware/graphql-pokemon`\n- Docker images of the API for private hosting published to\n  - [Dockerhub] as `favware/graphql-pokemon`\n  - [GitHub Package Registry][ghcr_docker] as\n    `ghcr.io/favware/graphql-pokemon:latest`\n- Provides information about various assets in Pokémon\n  - Pokédex\n  - Items\n  - Abilities\n  - Moves\n  - Learnsets\n  - Type matchups\n  - Natures\n\n## JavaScript Companion Library\n\nFor those consuming this API through JavaScript, you can install the companion\nlibrary to add additional tools for parsing the responses as well as get the\nTypeScript typings for the responses.\n\nInstall library through your favourite package manager:\n\n```sh\nnpm install @favware/graphql-pokemon\nyarn add @favware/graphql-pokemon\npnpm add @favware/graphql-pokemon\nbun add @favware/graphql-pokemon\n```\n\nFor the usage of the JavaScript Companion Library please see [the autogenerated\ndocumentation][docs].\n\n## Known bugs / limitations\n\n- [ ] It is currently not possible to get all data of all Pokémon in one query,\n      as the resulting data object is too large for NodeJS to process. This will\n      be fixed in [#900](https://github.com/favware/graphql-pokemon/issues/900).\n\n## API Documentation\n\nThere are two ways to consume the documentation that this API offers. They are\nas follows.\n\n### Autogenerated text based documentation\n\nFor those who want purely text based documentation about all the GraphQL Queries\nand Types that are in this API, including a documentation search for those\nsymbols, please see [the autogenerated documentation][docs] powered by\n[magidoc].\n\n### Interactive playground with documentation embedded\n\nFor those who want an interactive playground where they can directly test their\nqueries and read about each query as they select them, please use [the GraphQL\nPlayground on the API][dashboard].\n\n## Usage\n\n_These examples are written as based on TypeScript. For JavaScript simply change\nout the imports to `require` syntax and remove any type information._\n\n### Using `Fetch`\n\n_note: for a working example see [dragonite]_\n\n```ts\nimport type { Query } from '@favware/graphql-pokemon';\n\ninterface GraphQLPokemonResponse<K extends keyof Omit<Query, '__typename'>> {\n  data: Record<K, Omit<Query[K], '__typename'>>;\n}\n\nfetch('https://graphqlpokemon.favware.tech/v8', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    query: `\n      {\n        getPokemon(pokemon: dragonite) {\n            sprite\n            num\n            species\n            color\n        }\n      }\n    `\n  })\n})\n  .then((res) => res.json() as Promise<GraphQLPokemonResponse<'getPokemon'>>)\n  .then((json) => console.log(json.data));\n```\n\n### Using `Apollo Boost`\n\n_note: for a working example see [dexa]_\n\n```ts\nimport type { Query, QueryGetFuzzyPokemonArgs } from '@favware/graphql-pokemon';\nimport ApolloClient from 'apollo-boost';\nimport fetch from 'cross-fetch';\nimport gql from 'graphql-tag';\n\ntype GraphQLPokemonResponse<K extends keyof Omit<Query, '__typename'>> = Record<\n  K,\n  Omit<Query[K], '__typename'>\n>;\n\nconst getFuzzyPokemon = gql`\n  query getFuzzyPokemon($pokemon: String!) {\n    getFuzzyPokemon(pokemon: $pokemon) {\n      sprite\n      num\n      species\n      color\n    }\n  }\n`;\n\nconst apolloClient = new ApolloClient({\n  uri: 'https://graphqlpokemon.favware.tech/v8',\n  fetch\n});\n\nconst {\n  data: { getFuzzyPokemon: pokemonData }\n} = await apolloClient.query<\n  GraphQLPokemonResponse<'getFuzzyPokemon'>,\n  QueryGetFuzzyPokemonArgs\n>({\n  query: getFuzzyPokemon,\n  variables: { pokemon: 'dragonite' }\n});\n\nconsole.log(pokemonData);\n```\n\n### Using `Apollo Client React`\n\n```ts\n// ApolloClient setup\nimport { ApolloClient } from 'apollo-client';\nimport { InMemoryCache } from 'apollo-cache-inmemory';\nimport { HttpLink } from 'apollo-link-http';\n\n// Instantiate required constructor fields\nconst cache = new InMemoryCache();\nconst link = new HttpLink({\n  uri: 'https://graphqlpokemon.favware.tech/v8'\n});\n\nexport const client = new ApolloClient({\n  // Provide required constructor fields\n  cache: cache,\n  link: link,\n\n  // Provide some optional constructor fields\n  name: 'graphql-pokemon-client',\n  version: '1.0',\n  queryDeduplication: false,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-and-network'\n    }\n  }\n});\n```\n\n```tsx\n// Component\nimport React from 'react';\nimport gql from 'graphql-tag';\nimport { useQuery } from '@apollo/react-hooks';\nimport type { Query } from '@favware/graphql-pokemon';\nimport { client } from './ApolloClient';\n\ninterface GraphQLPokemonResponse<K extends keyof Omit<Query, '__typename'>> {\n  data: Record<K, Omit<Query[K], '__typename'>>;\n}\n\nconst GET_POKEMON_DETAILS = gql`\n  {\n    getPokemon(pokemon: dragonite) {\n      sprite\n      num\n      species\n      color\n    }\n  }\n`;\n\nexport const Pokemon: React.FC = () => {\n  const { loading, error, data } = useQuery<\n    GraphQLPokemonResponse<'getPokemon'>\n  >(GET_POKEMON_DETAILS, {\n    client: client\n  });\n\n  if (loading) return 'Loading...';\n  if (error) return `Error! ${error.message}`;\n\n  return <div> Insert how you want to display the data here </div>;\n};\n```\n\n## Meta\n\n### License\n\nCopyright © 2019, [Favware](https://github.com/favware). Released under the\n[MIT License](LICENSE.md).\n\n### Buy us some doughnuts\n\nFavware projects is and always will be open source, even if we don't get\ndonations. That being said, we know there are amazing people who may still want\nto donate just to show their appreciation. Thank you very much in advance!\n\nWe accept donations through Ko-fi, Paypal, Patreon, GitHub Sponsorships, and\nvarious crypto currencies. You can use the buttons below to donate through your\nmethod of choice.\n\n|   Donate With   |                      Address                      |\n| :-------------: | :-----------------------------------------------: |\n|      Ko-fi      |  [Click Here](https://donate.favware.tech/kofi)   |\n|     Patreon     | [Click Here](https://donate.favware.tech/patreon) |\n|     PayPal      | [Click Here](https://donate.favware.tech/paypal)  |\n| GitHub Sponsors |  [Click Here](https://github.com/sponsors/Favna)  |\n|     Bitcoin     |       `1E643TNif2MTh75rugepmXuq35Tck4TnE5`        |\n|    Ethereum     |   `0xF653F666903cd8739030D2721bF01095896F5D6E`    |\n|    LiteCoin     |       `LZHvBkaJqKJRa8N7Dyu41Jd1PDBAofCik6`        |\n\n## Contributors\n\nPlease make sure to read the [Contributing Guide][contributing] before making a\npull request.\n\nThank you to all the people who already contributed to GraphQL-Pokemon!\n\n<a href=\"https://github.com/favware/graphql-pokemon/graphs/contributors\">\n  <img src=\"https://contrib.rocks/image?repo=favware/graphql-pokemon\" />\n</a>\n\n[contributing]: ./.github/CONTRIBUTING.md\n[dashboard]: https://graphqlpokemon.favware.tech/v8\n[yarn]: https://yarnpkg.com/package/@favware/graphql-pokemon\n[npm]: https://www.npmjs.com/package/@favware/graphql-pokemon\n[ghcr_npm]: https://github.com/favware/graphql-pokemon/packages/199047\n[ghcr_docker]:\n  https://github.com/orgs/favware/packages/container/package/graphql-pokemon\n[dockerhub]: https://hub.docker.com/r/favware/graphql-pokemon\n[dexa]: https://github.com/favware/dexa\n[dragonite]: https://github.com/favware/dragonite\n[showdown-github]: https://github.com/smogon/pokemon-showdown/\n[serebii]: https://www.serebii.net/\n[bulbapedia]: https://bulbapedia.bulbagarden.net/wiki/Main_Page\n[magidoc]: https://github.com/magidoc-org/magidoc\n[docs]: https://graphql-pokemon.js.org/\n"
  },
  {
    "path": "cliff.toml",
    "content": "[changelog]\nheader = \"\"\"\n# Changelog\n\nAll notable changes to this project will be documented in this file.\\n\n\"\"\"\nbody = \"\"\"\n{% if version %}\\\n    # [{{ version | trim_start_matches(pat=\"v\") }}]\\\n    {% if previous %}\\\n        {% if previous.version %}\\\n            (https://github.com/favware/graphql-pokemon/compare/{{ previous.version }}...{{ version }})\\\n        {% else %}\\\n            (https://github.com/favware/graphql-pokemon/tree/{{ version }})\\\n        {% endif %}\\\n    {% endif %} \\\n    - ({{ timestamp | date(format=\"%Y-%m-%d\") }})\n{% else %}\\\n    # [unreleased]\n{% endif %}\\\n{% for group, commits in commits | group_by(attribute=\"group\") %}\n    ## {{ group | upper_first }}\n    {% for commit in commits %}\n\t\t- {% if commit.scope %}\\\n\t\t\t**{{commit.scope}}:** \\\n\t\t  {% endif %}\\\n            {{ commit.message | upper_first }} ([{{ commit.id | truncate(length=7, end=\"\") }}](https://github.com/favware/graphql-pokemon/commit/{{ commit.id }}))\\\n\t\t{% if commit.breaking %}\\\n\t\t\t{% for breakingChange in commit.footers %}\\\n\t\t\t\t\\n{% raw %}  {% endraw %}- 💥 **{{ breakingChange.token }}{{ breakingChange.separator }}** {{ breakingChange.value }}\\\n\t\t\t{% endfor %}\\\n\t\t{% endif %}\\\n    {% endfor %}\n{% endfor %}\\n\n\"\"\"\ntrim = true\nfooter = \"\"\n\n[git]\nconventional_commits = true\nfilter_unconventional = true\ncommit_parsers = [\n    { message = \"^feat\", group = \"🚀 Features\"},\n    { message = \"^fix\", group = \"🐛 Bug Fixes\"},\n    { message = \"^docs\", group = \"📝 Documentation\"},\n    { message = \"^perf\", group = \"🏃 Performance\"},\n    { message = \"^refactor\", group = \"🏠 Refactor\"},\n    { message = \"^typings\", group = \"⌨️ Typings\"},\n    { message = \"^types\", group = \"⌨️ Typings\"},\n    { message = \".*deprecated\", body = \".*deprecated\", group = \"🚨 Deprecation\"},\n    { message = \"^revert\", skip = true},\n    { message = \"^style\", group = \"🪞 Styling\"},\n    { message = \"^test\", group = \"🧪 Testing\"},\n    { message = \"^chore\", skip = true},\n    { message = \"^ci\", skip = true},\n    { message = \"^build\", skip = true},\n    { body = \".*security\", group = \"🛡️ Security\"},\n]\nfilter_commits = true\ntag_pattern = \"v[0-9]*\"\nignore_tags = \"\"\ntopo_order = false\nsort_commits = \"newest\"\n"
  },
  {
    "path": "codegen.yml",
    "content": "overwrite: true\nschema: http://localhost:4000\ngenerates:\n  ./codegen/graphql-pokemon.ts:\n    plugins:\n      - typescript\n      - typescript-resolvers\n    config:\n      scalars:\n        JSONObject: 'Record<PropertyKey, any>'\n      constEnums: false\n      immutableTypes: true\n      useTypeImports: true\n      skipTypename: true\n"
  },
  {
    "path": "docker-compose.yml",
    "content": "services:\n  pokedex:\n    build: ./\n    container_name: graphql-pokemon\n    image: 'favware/graphql-pokemon:latest'\n    networks:\n      - pokedex\n    ports:\n      - '8080:4000'\n    restart: 'no'\n\n  flaresolverr:\n    image: ghcr.io/flaresolverr/flaresolverr:latest\n    container_name: flaresolverr\n    environment:\n      - LOG_LEVEL=info\n      - LOG_HTML=false\n      - CAPTCHA_SOLVER=none\n      - TZ=Europe/London\n    ports:\n      - '8191:8191'\n    restart: no\n\nnetworks:\n  pokedex:\n"
  },
  {
    "path": "docs/magidoc.mjs",
    "content": "import { fileURLToPath } from 'node:url';\n\nconst { pages } = await import('./pages.mjs');\n\nconst CommonDescription = 'Extensive Pokémon GraphQL API with data for all generations.';\nconst CommonTitle = 'GraphQL Pokémon';\nconst CommonURL = 'https://graphqlpokemon.js.org';\n\n/**\n * @type {import(\"@magidoc/cli\").MagidocConfiguration}\n */\nconst config = {\n  introspection: {\n    type: 'sdl',\n    paths: ['./graphql/*.graphql'] // CWD is the root of the project, not the current docs/ directory\n  },\n  dev: {\n    watch: [fileURLToPath(new URL('./pages/', import.meta.url)), fileURLToPath(new URL('./pages.mjs', import.meta.url))]\n  },\n  website: {\n    template: 'carbon-multi-page',\n    output: fileURLToPath(new URL('./magidoc/', import.meta.url)),\n    staticAssets: fileURLToPath(new URL('./static/', import.meta.url)),\n    options: {\n      pages,\n      appTitle: 'GraphQL Pokémon Docs',\n      appFavicon: 'https://cdn.favware.tech/img/gqlp.png',\n      appLogo: 'https://cdn.favware.tech/img/gqlp-and-name.png',\n      customStyles: ['/styles/custom.css'],\n      externalLinks: [\n        {\n          label: 'Github',\n          href: 'https://github.com/favware/graphql-pokemon'\n        },\n        {\n          group: 'Demo',\n          label: 'Playground',\n          href: 'https://graphqlpokemon.favware.tech/v8'\n        },\n        {\n          group: 'Donate',\n          label: 'Patreon',\n          href: 'https://donate.favware.tech/patreon'\n        },\n        {\n          group: 'Donate',\n          label: 'GitHub',\n          href: 'https://donate.favware.tech/github'\n        },\n        {\n          group: 'Donate',\n          label: 'PayPal',\n          href: 'https://donate.favware.tech/paypal'\n        }\n      ],\n      siteMeta: {\n        'apple-mobile-web-app-capable': 'yes',\n        'apple-mobile-web-app-status-bar-style': 'black',\n        'apple-mobile-web-app-title': CommonTitle,\n        'application-name': CommonTitle,\n        'identifier-URL': CommonURL,\n        'og:description': CommonDescription,\n        'og:email': 'support@favware.tech',\n        'og:image:alt': 'OpenGraphImage',\n        'og:image:height': '1836',\n        'og:image:width': '1836',\n        'og:image': 'https://cdn.favware.tech/img/gqlp.png',\n        'og:locale': 'en_US',\n        'og:site_name': CommonTitle,\n        'og:title': CommonTitle,\n        'og:type': 'website',\n        'reply-to': 'support@favware.tech',\n        'revisit-after': '7 days',\n        'twitter:card': 'summary',\n        'twitter:creator': '@favna_',\n        'twitter:image': 'https://cdn.favware.tech/img/gqlp.png',\n        'twitter:site': '@favna_',\n        audience: 'all',\n        author: 'Favware',\n        coverage: 'Worldwide',\n        description: CommonDescription,\n        designer: 'Favware, Sunny Pelletier',\n        distribution: 'Global',\n        googlebot: 'index,follow',\n        HandheldFriendly: 'True',\n        keywords: 'graphql,documentation,docs,api,pokemon,favware,favna,static,javascript,typescript,nodejs',\n        owner: 'Favware, support@favware.tech',\n        rating: 'safe for kids',\n        robots: 'archive,follow,imageindex,index,odp,snippet,translate',\n        shortlink: CommonURL,\n        subject: CommonDescription,\n        summary: CommonDescription,\n        target: 'all',\n        url: CommonURL\n      }\n    }\n  }\n};\n\nexport default config;\n"
  },
  {
    "path": "docs/pages/01.Introduction/01.Welcome.md",
    "content": "# Welcome\n\nWelcome to the `graphql-pokemon` project!\n\nThis projects contains a GraphQL API for retrieving information about Pokémon.\nThe API allows users to query for information about Pokémon, including their\ntypes, abilities, and moves. The data for the Pokémon is sourced from the\npopular video game series, provided by external sources such as\n[Smogon](https://www.smogon.com), [Serebii](https://serebii.net), and\n[Bulbapedia](https://bulbapedia.bulbagarden.net).\n\nThe easiest way to get to know this API is to try it out in the\n[playground](https://graphqlpokemon.favware.tech/v8).\n\nFor implementing the API in your own code, choose your preferred language and\nmethod of making Web requests. Beyond that point you will need to learn the\nGraphQL syntax, and the documentation on this website as well as the queries\nprovided by the [playground](https://graphqlpokemon.favware.tech/v8) will help\nyou get started.\n"
  },
  {
    "path": "docs/pages/01.Introduction/02.JavaScript Examples.md",
    "content": "# JavaScript Examples\n\n_These examples are written as based on TypeScript. For JavaScript simply change\nout the imports to `require` syntax and remove any type information._\n\n## Using `Fetch`\n\n_note: for a working example see\n[dragonite](https://github.com/favware/dragonite)_\n\n```ts\nimport type { Query } from '@favware/graphql-pokemon';\n\ninterface GraphQLPokemonResponse<K extends keyof Omit<Query, '__typename'>> {\n  data: Record<K, Omit<Query[K], '__typename'>>;\n}\n\nfetch('https://graphqlpokemon.favware.tech/v8', {\n  method: 'POST',\n  headers: {\n    'Content-Type': 'application/json'\n  },\n  body: JSON.stringify({\n    query: `\n      {\n        getPokemon(pokemon: dragonite) {\n            sprite\n            num\n            species\n            color\n        }\n      }\n    `\n  })\n})\n  .then((res) => res.json() as Promise<GraphQLPokemonResponse<'getPokemon'>>)\n  .then((json) => console.log(json.data));\n```\n\n## Using `Apollo Boost`\n\n_note: for a working example see [dexa](https://github.com/favware/dexa)_\n\n```ts\nimport type { Query, QueryGetFuzzyPokemonArgs } from '@favware/graphql-pokemon';\nimport ApolloClient from 'apollo-boost';\nimport fetch from 'cross-fetch';\nimport gql from 'graphql-tag';\n\ntype GraphQLPokemonResponse<K extends keyof Omit<Query, '__typename'>> = Record<\n  K,\n  Omit<Query[K], '__typename'>\n>;\n\nconst getFuzzyPokemon = gql`\n  query getFuzzyPokemon($pokemon: String!) {\n    getFuzzyPokemon(pokemon: $pokemon) {\n      sprite\n      num\n      species\n      color\n    }\n  }\n`;\n\nconst apolloClient = new ApolloClient({\n  uri: 'https://graphqlpokemon.favware.tech/v8',\n  fetch\n});\n\nconst {\n  data: { getFuzzyPokemon: pokemonData }\n} = await apolloClient.query<\n  GraphQLPokemonResponse<'getFuzzyPokemon'>,\n  QueryGetFuzzyPokemonArgs\n>({\n  query: getFuzzyPokemon,\n  variables: { pokemon: 'dragonite' }\n});\n\nconsole.log(pokemonData);\n```\n\n## Using `Apollo Client React`\n\n**First setup your Apollo Client**\n\n```ts\nimport { ApolloClient } from 'apollo-client';\nimport { InMemoryCache } from 'apollo-cache-inmemory';\nimport { HttpLink } from 'apollo-link-http';\n\n// Instantiate required constructor fields\nconst cache = new InMemoryCache();\nconst link = new HttpLink({\n  uri: 'https://graphqlpokemon.favware.tech/v8'\n});\n\nexport const client = new ApolloClient({\n  // Provide required constructor fields\n  cache: cache,\n  link: link,\n\n  // Provide some optional constructor fields\n  name: 'graphql-pokemon-client',\n  version: '1.0',\n  queryDeduplication: false,\n  defaultOptions: {\n    watchQuery: {\n      fetchPolicy: 'cache-and-network'\n    }\n  }\n});\n```\n\n**Then use the client in your component**\n\n```ts\nimport React from 'react';\nimport gql from 'graphql-tag';\nimport { useQuery } from '@apollo/react-hooks';\nimport type { Query } from '@favware/graphql-pokemon';\nimport { client } from './ApolloClient';\n\ninterface GraphQLPokemonResponse<K extends keyof Omit<Query, '__typename'>> {\n  data: Record<K, Omit<Query[K], '__typename'>>;\n}\n\nconst GET_POKEMON_DETAILS = gql`\n  {\n    getPokemon(pokemon: dragonite) {\n      sprite\n      num\n      species\n      color\n    }\n  }\n`;\n\nexport const Pokemon: React.FC = () => {\n  const { loading, error, data } = useQuery<\n    GraphQLPokemonResponse<'getPokemon'>\n  >(GET_POKEMON_DETAILS, {\n    client: client\n  });\n\n  if (loading) return 'Loading...';\n  if (error) return `Error! ${error.message}`;\n\n  return <div> Insert how you want to display the data here </div>;\n};\n```\n"
  },
  {
    "path": "docs/pages/02.Utilities/01.Utilities.md",
    "content": "# Utilities\n\nThe API also publishes an npm library called\n[`@favware/graphql-pokemon`](https://www.github.com/favware/graphql-pokemon)\nwhich contains a set of utilities to make usage of the API responses easier to\nparse. The following utilities are available:\n\n- [isCapPokemon]\n- [isM00]\n- [isMissingNo]\n- [isMissingNoOrM00]\n- [isRegularPokemon]\n- [parseBulbapediaURL]\n- [pokemonEnumToSpecies]\n- [resolveBulbapediaURL]\n- [resolveColor]\n- [resolveSerebiiUrl]\n\n## isCapPokemon\n\n▸ **isCapPokemon**(`pokemon`): `boolean`\n\nChecks if a Pokemon is a Cap Pokemon by checking if the number is below (not\nequal to) 0.\n\nMissingNo and M00 are not considered Cap Pokemon, to check if the Pokémon is\neither of those, use [isMissingNoOrM00].\n\n### Parameters\n\n| Name      | Type      | Description                 |\n| :-------- | :-------- | :-------------------------- |\n| `pokemon` | `Pokemon` | The details of the Pokemon. |\n\n### Returns\n\n`boolean`\n\n`true` if the Pokemon is a Cap Pokemon, `false` otherwise.\n\n---\n\n## isM00\n\n▸ **isM00**(`pokemon`): `boolean`\n\nChecks if the given Pokemon is M00.\n\nThis uses the Pokemon's key, rather than the number. To check if it's either\nMissingNo or M00, use [isMissingNoOrM00].\n\n### Parameters\n\n| Name      | Type      | Description           |\n| :-------- | :-------- | :-------------------- |\n| `pokemon` | `Pokemon` | The Pokemon to check. |\n\n### Returns\n\n`boolean`\n\n`true` if the Pokemon is M00, `false` otherwise.\n\n---\n\n## isMissingNo\n\n▸ **isMissingNo**(`pokemon`): `boolean`\n\nChecks if the given Pokemon is MissingNo.\n\nThis uses the Pokemon's key, rather than the number. To check if it's either\nMissingNo or M00, use [isMissingNoOrM00].\n\n### Parameters\n\n| Name      | Type      | Description                  |\n| :-------- | :-------- | :--------------------------- |\n| `pokemon` | `Pokemon` | The Pokemon object to check. |\n\n### Returns\n\n`boolean`\n\n`true` if the Pokemon is MissingNo, `false` otherwise.\n\n---\n\n## isMissingNoOrM00\n\n▸ **isMissingNoOrM00**(`pokemon`): `boolean`\n\nChecks if the given Pokemon is either MissingNo or M00.\n\nThis uses the Pokemon's key, rather than the number. This performs both\n[isMissingNo] and [isM00].\n\n### Parameters\n\n| Name      | Type      | Description           |\n| :-------- | :-------- | :-------------------- |\n| `pokemon` | `Pokemon` | The Pokemon to check. |\n\n### Returns\n\n`boolean`\n\n`true` if the Pokemon is MissingNo or M00, `false` otherwise.\n\n---\n\n## isRegularPokemon\n\n▸ **isRegularPokemon**(`pokemon`): `boolean`\n\nChecks if a given Pokemon is a not a CAP Pokémon nor MissingNo nor M00. This\nchecks if the number is above (not equal to) 0.\n\n### Parameters\n\n| Name      | Type      | Description                 |\n| :-------- | :-------- | :-------------------------- |\n| `pokemon` | `Pokemon` | The details of the Pokemon. |\n\n### Returns\n\n`boolean`\n\n`true` if the Pokemon is regular, `false` otherwise.\n\n---\n\n## parseBulbapediaURL\n\n▸ **parseBulbapediaURL**(`url`): `string`\n\nParses a Bulbapedia-like URL to be properly embeddable on Discord\n\nWhat this essentially does is replace spaces with underscores and parentheses\nwith their URL-encoded counterparts\n\n### Parameters\n\n| Name  | Type     | Description           |\n| :---- | :------- | :-------------------- |\n| `url` | `string` | The URL to be parsed. |\n\n### Returns\n\n`string`\n\nThe parsed URL with spaces replaced by underscores and parentheses encoded.\n\n### Example\n\n```typescript\nconst url = 'https://bulbapedia.org/wiki/Pikachu_(Pokémon)';\nconst parsedUrl = parseBulbapediaURL(url);\nconsole.log(parsedUrl);\n// Output: 'https://bulbapedia.org/wiki/Pikachu_%28Pokémon%29'\n```\n\n---\n\n## pokemonEnumToSpecies\n\n▸ **pokemonEnumToSpecies**(`pokemon`): `string`\n\nConverts a PokemonEnum value to its corresponding species name in a\nhuman-readable format.\n\nThis can be useful when you want to display the name to the user, for example on\na web dashboard or in your application.\n\nIf `undefined`, `null` or an empty string is passed in, the function will return\nthe same value.\n\n### Parameters\n\n| Name      | Type          | Description                       |\n| :-------- | :------------ | :-------------------------------- |\n| `pokemon` | `PokemonEnum` | The PokemonEnum value to convert. |\n\n### Returns\n\n`string`\n\nThe species name of the Pokemon in human-readable format\n\n---\n\n## resolveBulbapediaURL\n\n▸ **resolveBulbapediaURL**(`pokemon`): `string`\n\nTransforms the Bulbapedia URL for a given Pokemon.\n\nThis function takes in the details of a Pokemon and returns the corresponding\nBulbapedia URL.\n\n- If the Pokemon is MissingNo, it returns the URL for MissingNo on Bulbapedia.\n- If the Pokemon is M00, it returns the URL for M00 on Bulbapedia.\n\n### Parameters\n\n| Name      | Type      | Description                 |\n| :-------- | :-------- | :-------------------------- |\n| `pokemon` | `Pokemon` | The details of the Pokemon. |\n\n### Returns\n\n`string`\n\nThe resolved Bulbapedia embedded URL.\n\n### Throws\n\nThis function will not work for CAP or PokéStar Pokémon as they do not have\nBulbapedia pages. This function will throw a RangeError when a Pokémon with\nPokemon.num < 0 is passed in.\n\n### Example\n\n```typescript\nconst pokeDetails: Pokemon = {\n  name: 'Pikachu',\n  type: 'Electric',\n  level: 25\n};\n\nconst url = resolveBulbapediaURL(pokeDetails);\n// Returns: \"[Bulbapedia](<https://bulbapedia.bulbagarden.net/wiki/Pikachu>)\"\n```\n\n---\n\n## resolveColor\n\n▸ **resolveColor**(`color`): `number`\n\nParses PokéDex colors to Discord MessageEmbed colors\n\n### Parameters\n\n| Name    | Type     | Description        |\n| :------ | :------- | :----------------- |\n| `color` | `string` | The color to parse |\n\n▸ **resolveColor**(`pokemon`): `number`\n\nParses PokéDex colors to Discord MessageEmbed colors\n\n### Parameters\n\n| Name      | Type      | Description                                    |\n| :-------- | :-------- | :--------------------------------------------- |\n| `pokemon` | `Pokemon` | The Pokemon data, with a color field, to parse |\n\n### Returns\n\n`number`\n\nThe color as a hexadecimal color code that can be used for a\n[DiscordJS Embed](https://discord.js.org/docs/packages/discord.js/14.14.1/Embed:Class)\n\n### Remarks\n\nThe various colours that can be generated are:\n\n<ul class=\"customUnorderedList\">\n  <li class=\"customListItem\">Black: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/323232.png\" alt=\"Black\"></li>\n  <li class=\"customListItem\">Blue: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/257cff.png\" alt=\"Blue\"></li>\n  <li class=\"customListItem\">Brown: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/a3501a.png\" alt=\"Brown\"></li>\n  <li class=\"customListItem\">Gray: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/969696.png\" alt=\"Gray\"></li>\n  <li class=\"customListItem\">Green: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/3eff4e.png\" alt=\"Green\"></li>\n  <li class=\"customListItem\">Pink: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/ff65a5.png\" alt=\"Pink\"></li>\n  <li class=\"customListItem\">Purple: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/a63de8.png\" alt=\"Purple\"></li>\n  <li class=\"customListItem\">Red: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/ff3232.png\" alt=\"Red\"></li>\n  <li class=\"customListItem\">White: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/e1e1e1.png\" alt=\"White\"></li>\n  <li class=\"customListItem\">Yellow: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/fff359.png\" alt=\"Yellow\"></li>\n  <li class=\"customListItem\">Unknown: <img src=\"https://cdn.favware.tech/img/graphql-pokemon-colours/000000.png\" alt=\"Unknown\"></li>\n</ul>\n\n---\n\n## resolveSerebiiUrl\n\n▸ **resolveSerebiiUrl**(`pokemon`): `string`\n\nResolves the Serebii URL for a given Pokemon. If the Pokemon is MissingNo or\nM00, it returns the URL for MissingNo's Serebii page. Otherwise, it returns the\nURL specified in the `serebiiPage` property of the Pokemon object.\n\n### Parameters\n\n| Name      | Type      | Description                 |\n| :-------- | :-------- | :-------------------------- |\n| `pokemon` | `Pokemon` | The details of the Pokemon. |\n\n### Returns\n\n`string`\n\nThe Serebii URL for the Pokemon.\n\n### Throws\n\nThis function will not work for CAP or PokéStar Pokémon as they do not have\nSerebii pages. This function will throw a RangeError when a Pokémon with\nPokemon.num < 0 is passed in.\n\n### Example\n\n```typescript\nconst pokeDetails: Pokemon = {\n  name: 'Pikachu',\n  type: 'Electric',\n  level: 25\n};\n\nconst url = resolveSerebiiUrl(pokeDetails);\n// Returns: \"https://www.serebii.net/pokedex/025.shtml\"\n```\n\n[isCapPokemon]: /utilities/utilities#iscappokemon\n[isM00]: /utilities/utilities#ism00\n[isMissingNo]: /utilities/utilities#ismissingno\n[isMissingNoOrM00]: /utilities/utilities#ismissingnoorm00\n[isRegularPokemon]: /utilities/utilities#isregularpokemon\n[parseBulbapediaURL]: /utilities/utilities#parsebulbapediaurl\n[pokemonEnumToSpecies]: /utilities/utilities#pokemonenumtospecies\n[resolveBulbapediaURL]: /utilities/utilities#resolvebulbapediaurl\n[resolveColor]: /utilities/utilities#resolvecolor\n[resolveSerebiiUrl]: /utilities/utilities#resolveserebiiurl\n"
  },
  {
    "path": "docs/pages.mjs",
    "content": "/**\n * MIT License\n * Copyright (c) 2022 Sunny Pelletier\n */\n\nimport { readdir, readFile, stat } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\n/**\n * Scans the directory for files and collects them\n * @param {import('node:fs').PathLike} dir The directory to scan the files from\n * @returns {Promise<Array<{ dir: boolean; name: string; path: string; }>>} The files in the directory\n */\nasync function getFiles(dir) {\n  /**\n   * @type Array<{ dir: boolean; name: string; path: string; }>\n   */\n  const result = [];\n  const dirAsPathString = dir instanceof URL ? fileURLToPath(dir) : dir;\n\n  const dirContents = await readdir(dir);\n\n  for (const item of dirContents) {\n    const currentPath = join(dirAsPathString, item);\n\n    const currentPathStat = await stat(currentPath);\n\n    result.push({\n      dir: currentPathStat.isDirectory(),\n      name: item,\n      path: currentPath\n    });\n  }\n\n  return result;\n}\n\n/**\n * Get all items as page objects\n * @param {{ dir: boolean; name: string; path: string; }} item The item to parse\n * @returns {{ title: string; content: any }} Returns the item as a Page\n */\nasync function asPage(item) {\n  const title = item.name.split('.')[1];\n\n  if (item.dir) {\n    const filesInDirectory = await getFiles(item.path);\n\n    return {\n      title,\n      content: await Promise.all(filesInDirectory.map((item) => asPage(item)))\n    };\n  }\n\n  return {\n    title,\n    content: await readFile(item.path, { encoding: 'utf-8' })\n  };\n}\n\nconst pagesDirectory = new URL('./pages', import.meta.url);\n\nconst filesInPagesDirectory = await getFiles(pagesDirectory);\n\nexport const pages = await Promise.all(filesInPagesDirectory.map((item) => asPage(item)));\n"
  },
  {
    "path": "docs/static/styles/custom.css",
    "content": ".customUnorderedList {\n  padding: 0;\n}\n\n.customListItem {\n  display: flex;\n  align-items: center;\n  margin-bottom: 10px;\n  gap: 0.2rem;\n}\n\n.customUnorderedList .customListItem:before {\n  content: '－';\n  position: relative;\n}\n"
  },
  {
    "path": "graphql/enums.graphql",
    "content": "\"The supported abilities\"\nenum AbilitiesEnum {\n  adaptability\n  aerilate\n  aftermath\n  airlock\n  analytic\n  angerpoint\n  angershell\n  anticipation\n  arenatrap\n  armortail\n  aromaveil\n  asoneglastrier\n  asonespectrier\n  aurabreak\n  baddreams\n  ballfetch\n  battery\n  battlearmor\n  battlebond\n  beadsofruin\n  beastboost\n  berserk\n  bigpecks\n  blaze\n  bulletproof\n  cheekpouch\n  chillingneigh\n  chlorophyll\n  clearbody\n  cloudnine\n  colorchange\n  comatose\n  commander\n  competitive\n  compoundeyes\n  contrary\n  corrosion\n  costar\n  cottondown\n  cudchew\n  curiousmedicine\n  cursedbody\n  cutecharm\n  damp\n  dancer\n  darkaura\n  dauntlessshield\n  dazzling\n  defeatist\n  defiant\n  deltastream\n  desolateland\n  disguise\n  download\n  dragonsmaw\n  drizzle\n  drought\n  dryskin\n  earlybird\n  eartheater\n  effectspore\n  electricsurge\n  electromorphosis\n  embodyaspectcornerstone\n  embodyaspecthearthflame\n  embodyaspectteal\n  embodyaspectwellspring\n  emergencyexit\n  fairyaura\n  filter\n  flamebody\n  flareboost\n  flashfire\n  flowergift\n  flowerveil\n  fluffy\n  forecast\n  forewarn\n  friendguard\n  frisk\n  fullmetalbody\n  furcoat\n  galewings\n  galvanize\n  gluttony\n  goodasgold\n  gooey\n  gorillatactics\n  grasspelt\n  grassysurge\n  grimneigh\n  guarddog\n  gulpmissile\n  guts\n  hadronengine\n  harvest\n  healer\n  heatproof\n  heavymetal\n  honeygather\n  hospitality\n  hugepower\n  hungerswitch\n  hustle\n  hydration\n  hypercutter\n  icebody\n  iceface\n  icescales\n  illuminate\n  illusion\n  immunity\n  imposter\n  infiltrator\n  innardsout\n  innerfocus\n  insomnia\n  intimidate\n  intrepidsword\n  ironbarbs\n  ironfist\n  justified\n  keeneye\n  klutz\n  leafguard\n  levitate\n  libero\n  lightmetal\n  lightningrod\n  limber\n  lingeringaroma\n  liquidooze\n  liquidvoice\n  longreach\n  magicbounce\n  magicguard\n  magician\n  magmaarmor\n  magnetpull\n  marvelscale\n  megalauncher\n  merciless\n  mimicry\n  mindseye\n  minus\n  mirrorarmor\n  mistysurge\n  moldbreaker\n  moody\n  motordrive\n  mountaineer\n  moxie\n  multiscale\n  multitype\n  mummy\n  myceliummight\n  naturalcure\n  neuroforce\n  neutralizinggas\n  noability\n  noguard\n  normalize\n  oblivious\n  opportunist\n  orichalcumpulse\n  overcoat\n  overgrow\n  owntempo\n  parentalbond\n  pastelveil\n  perishbody\n  persistent\n  pickpocket\n  pickup\n  pixilate\n  plus\n  poisonheal\n  poisonpoint\n  poisonpuppeteer\n  poisontouch\n  powerconstruct\n  powerofalchemy\n  powerspot\n  prankster\n  pressure\n  primordialsea\n  prismarmor\n  propellertail\n  protean\n  protosynthesis\n  psychicsurge\n  punkrock\n  purepower\n  purifyingsalt\n  quarkdrive\n  queenlymajesty\n  quickdraw\n  quickfeet\n  raindish\n  rattled\n  rebound\n  receiver\n  reckless\n  refrigerate\n  regenerator\n  ripen\n  rivalry\n  rkssystem\n  rockhead\n  rockypayload\n  roughskin\n  runaway\n  sandforce\n  sandrush\n  sandspit\n  sandstream\n  sandveil\n  sapsipper\n  schooling\n  scrappy\n  screencleaner\n  seedsower\n  serenegrace\n  shadowshield\n  shadowtag\n  sharpness\n  shedskin\n  sheerforce\n  shellarmor\n  shielddust\n  shieldsdown\n  simple\n  skilllink\n  slowstart\n  slushrush\n  sniper\n  snowcloak\n  snowwarning\n  solarpower\n  solidrock\n  soulheart\n  soundproof\n  speedboost\n  stakeout\n  stall\n  stalwart\n  stamina\n  stancechange\n  static\n  steadfast\n  steamengine\n  steelworker\n  steelyspirit\n  stench\n  stickyhold\n  stormdrain\n  strongjaw\n  sturdy\n  suctioncups\n  superluck\n  supersweetsyrup\n  supremeoverlord\n  surgesurfer\n  swarm\n  sweetveil\n  swiftswim\n  swordofruin\n  symbiosis\n  synchronize\n  tabletsofruin\n  tangledfeet\n  tanglinghair\n  technician\n  telepathy\n  teraformzero\n  terashell\n  terashift\n  teravolt\n  thermalexchange\n  thickfat\n  tintedlens\n  torrent\n  toughclaws\n  toxicboost\n  toxicchain\n  toxicdebris\n  trace\n  transistor\n  triage\n  truant\n  turboblaze\n  unaware\n  unburden\n  unnerve\n  unseenfist\n  vesselofruin\n  victorystar\n  vitalspirit\n  voltabsorb\n  wanderingspirit\n  waterabsorb\n  waterbubble\n  watercompaction\n  waterveil\n  weakarmor\n  wellbakedbody\n  whitesmoke\n  wimpout\n  windpower\n  windrider\n  wonderguard\n  wonderskin\n  zenmode\n  zerotohero\n}\n\n\"The supported Pokémon\"\nenum PokemonEnum {\n  pokestarsmeargle\n  pokestarufo\n  pokestarufo2\n  pokestarbrycenman\n  pokestarmt\n  pokestarmt2\n  pokestartransport\n  pokestargiant\n  pokestarhumanoid\n  pokestarmonster\n  pokestarf00\n  pokestarf002\n  pokestarspirit\n  pokestarblackdoor\n  pokestarwhitedoor\n  pokestarblackbelt\n  pokestarufopropu2\n  syclar\n  syclant\n  revenankh\n  embirch\n  flarelm\n  pyroak\n  breezi\n  fidgit\n  rebble\n  tactite\n  stratagem\n  privatyke\n  arghonaut\n  kitsunoh\n  cyclohm\n  colossoil\n  krilowatt\n  voodoll\n  voodoom\n  scratchet\n  tomohawk\n  necturine\n  necturna\n  mollux\n  cupra\n  argalis\n  aurumoth\n  brattler\n  malaconda\n  cawdet\n  cawmodore\n  volkritter\n  volkraken\n  snugglow\n  plasmanta\n  floatoy\n  caimanoe\n  naviathan\n  crucibelle\n  crucibellemega\n  pluffle\n  kerfluffle\n  pajantom\n  mumbao\n  jumbao\n  fawnifer\n  electrelk\n  caribolt\n  smogecko\n  smoguana\n  smokomodo\n  swirlpool\n  coribalis\n  snaelstrom\n  justyke\n  equilibra\n  solotl\n  astrolotl\n  miasmite\n  miasmaw\n  chromera\n  nohface\n  monohm\n  duohm\n  dorsoil\n  protowatt\n  venomicon\n  venomiconepilogue\n  saharascal\n  saharaja\n  ababo\n  scattervein\n  hemogoblin\n  cresceidon\n  missingno\n  m00\n  bulbasaur\n  ivysaur\n  venusaur\n  venusaurgmax\n  venusaurmega\n  charmander\n  charmeleon\n  charizard\n  charizardmegax\n  charizardmegay\n  charizardgmax\n  squirtle\n  wartortle\n  blastoise\n  blastoisegmax\n  blastoisemega\n  caterpie\n  metapod\n  butterfree\n  butterfreegmax\n  weedle\n  kakuna\n  beedrill\n  beedrillmega\n  pidgey\n  pidgeotto\n  pidgeot\n  pidgeotmega\n  rattata\n  rattataalola\n  raticate\n  raticatealola\n  raticatealolatotem\n  spearow\n  fearow\n  ekans\n  arbok\n  pikachu\n  pikachugmax\n  pikachucosplay\n  pikachurockstar\n  pikachubelle\n  pikachupopstar\n  pikachuphd\n  pikachulibre\n  pikachuoriginal\n  pikachuhoenn\n  pikachusinnoh\n  pikachuunova\n  pikachukalos\n  pikachualola\n  pikachupartner\n  pikachustarter\n  pikachuworld\n  raichu\n  raichualola\n  raichumegax\n  raichumegay\n  sandshrew\n  sandshrewalola\n  sandslash\n  sandslashalola\n  nidoranf\n  nidorina\n  nidoqueen\n  nidoranm\n  nidorino\n  nidoking\n  clefairy\n  clefable\n  clefablemega\n  vulpix\n  vulpixalola\n  ninetales\n  ninetalesalola\n  jigglypuff\n  wigglytuff\n  zubat\n  golbat\n  oddish\n  gloom\n  vileplume\n  paras\n  parasect\n  venonat\n  venomoth\n  diglett\n  diglettalola\n  dugtrio\n  dugtrioalola\n  meowth\n  meowthalola\n  meowthgalar\n  meowthgmax\n  persian\n  persianalola\n  psyduck\n  golduck\n  mankey\n  primeape\n  growlithe\n  growlithehisui\n  arcanine\n  arcaninehisui\n  poliwag\n  poliwhirl\n  poliwrath\n  abra\n  kadabra\n  alakazam\n  alakazammega\n  machop\n  machoke\n  machamp\n  machampgmax\n  bellsprout\n  weepinbell\n  victreebel\n  victreebelmega\n  tentacool\n  tentacruel\n  geodude\n  geodudealola\n  graveler\n  graveleralola\n  golem\n  golemalola\n  ponyta\n  ponytagalar\n  rapidash\n  rapidashgalar\n  slowpoke\n  slowpokegalar\n  slowbro\n  slowbrogalar\n  slowbromega\n  magnemite\n  magneton\n  farfetchd\n  farfetchdgalar\n  doduo\n  dodrio\n  seel\n  dewgong\n  grimer\n  grimeralola\n  muk\n  mukalola\n  shellder\n  cloyster\n  gastly\n  haunter\n  gengar\n  gengarmega\n  gengargmax\n  onix\n  drowzee\n  hypno\n  krabby\n  kingler\n  kinglergmax\n  voltorb\n  voltorbhisui\n  electrode\n  electrodehisui\n  exeggcute\n  exeggutor\n  exeggutoralola\n  cubone\n  marowak\n  marowakalola\n  marowakalolatotem\n  hitmonlee\n  hitmonchan\n  lickitung\n  koffing\n  weezing\n  weezinggalar\n  rhyhorn\n  rhydon\n  chansey\n  tangela\n  kangaskhan\n  kangaskhanmega\n  horsea\n  seadra\n  goldeen\n  seaking\n  staryu\n  starmie\n  starmiemega\n  mrmime\n  mrmimegalar\n  scyther\n  jynx\n  electabuzz\n  magmar\n  pinsir\n  pinsirmega\n  tauros\n  taurospaldeacombat\n  taurospaldeablaze\n  taurospaldeaaqua\n  magikarp\n  gyarados\n  gyaradosmega\n  lapras\n  laprasgmax\n  ditto\n  eevee\n  eeveestarter\n  eeveegmax\n  vaporeon\n  jolteon\n  flareon\n  porygon\n  omanyte\n  omastar\n  kabuto\n  kabutops\n  aerodactyl\n  aerodactylmega\n  snorlax\n  snorlaxgmax\n  articuno\n  articunogalar\n  zapdos\n  zapdosgalar\n  moltres\n  moltresgalar\n  dratini\n  dragonair\n  dragonite\n  dragonitemega\n  mewtwo\n  mewtwomegax\n  mewtwomegay\n  mew\n  chikorita\n  bayleef\n  meganium\n  meganiummega\n  cyndaquil\n  quilava\n  typhlosion\n  typhlosionhisui\n  totodile\n  croconaw\n  feraligatr\n  feraligatrmega\n  sentret\n  furret\n  hoothoot\n  noctowl\n  ledyba\n  ledian\n  spinarak\n  ariados\n  crobat\n  chinchou\n  lanturn\n  pichu\n  pichuspikyeared\n  cleffa\n  igglybuff\n  togepi\n  togetic\n  natu\n  xatu\n  mareep\n  flaaffy\n  ampharos\n  ampharosmega\n  bellossom\n  marill\n  azumarill\n  sudowoodo\n  politoed\n  hoppip\n  skiploom\n  jumpluff\n  aipom\n  sunkern\n  sunflora\n  yanma\n  wooper\n  wooperpaldea\n  quagsire\n  espeon\n  umbreon\n  murkrow\n  slowking\n  slowkinggalar\n  misdreavus\n  unown\n  wobbuffet\n  girafarig\n  pineco\n  forretress\n  dunsparce\n  gligar\n  steelix\n  steelixmega\n  snubbull\n  granbull\n  qwilfish\n  qwilfishhisui\n  scizor\n  scizormega\n  shuckle\n  heracross\n  heracrossmega\n  sneasel\n  sneaselhisui\n  teddiursa\n  ursaring\n  slugma\n  magcargo\n  swinub\n  piloswine\n  corsola\n  corsolagalar\n  remoraid\n  octillery\n  delibird\n  mantine\n  skarmory\n  skarmorymega\n  houndour\n  houndoom\n  houndoommega\n  kingdra\n  phanpy\n  donphan\n  porygon2\n  stantler\n  smeargle\n  tyrogue\n  hitmontop\n  smoochum\n  elekid\n  magby\n  miltank\n  blissey\n  raikou\n  entei\n  suicune\n  larvitar\n  pupitar\n  tyranitar\n  tyranitarmega\n  lugia\n  hooh\n  celebi\n  treecko\n  grovyle\n  sceptile\n  sceptilemega\n  torchic\n  combusken\n  blaziken\n  blazikenmega\n  mudkip\n  marshtomp\n  swampert\n  swampertmega\n  poochyena\n  mightyena\n  zigzagoon\n  zigzagoongalar\n  linoone\n  linoonegalar\n  wurmple\n  silcoon\n  beautifly\n  cascoon\n  dustox\n  lotad\n  lombre\n  ludicolo\n  seedot\n  nuzleaf\n  shiftry\n  taillow\n  swellow\n  wingull\n  pelipper\n  ralts\n  kirlia\n  gardevoir\n  gardevoirmega\n  surskit\n  masquerain\n  shroomish\n  breloom\n  slakoth\n  vigoroth\n  slaking\n  nincada\n  ninjask\n  shedinja\n  whismur\n  loudred\n  exploud\n  makuhita\n  hariyama\n  azurill\n  nosepass\n  skitty\n  delcatty\n  sableye\n  sableyemega\n  mawile\n  mawilemega\n  aron\n  lairon\n  aggron\n  aggronmega\n  meditite\n  medicham\n  medichammega\n  electrike\n  manectric\n  manectricmega\n  plusle\n  minun\n  volbeat\n  illumise\n  roselia\n  gulpin\n  swalot\n  carvanha\n  sharpedo\n  sharpedomega\n  wailmer\n  wailord\n  numel\n  camerupt\n  cameruptmega\n  torkoal\n  spoink\n  grumpig\n  spinda\n  trapinch\n  vibrava\n  flygon\n  cacnea\n  cacturne\n  swablu\n  altaria\n  altariamega\n  zangoose\n  seviper\n  lunatone\n  solrock\n  barboach\n  whiscash\n  corphish\n  crawdaunt\n  baltoy\n  claydol\n  lileep\n  cradily\n  anorith\n  armaldo\n  feebas\n  milotic\n  castform\n  castformsunny\n  castformrainy\n  castformsnowy\n  kecleon\n  shuppet\n  banette\n  banettemega\n  duskull\n  dusclops\n  tropius\n  chimecho\n  chimechomega\n  absol\n  absolmega\n  absolmegaz\n  wynaut\n  snorunt\n  glalie\n  glaliemega\n  spheal\n  sealeo\n  walrein\n  clamperl\n  huntail\n  gorebyss\n  relicanth\n  luvdisc\n  bagon\n  shelgon\n  salamence\n  salamencemega\n  beldum\n  metang\n  metagross\n  metagrossmega\n  regirock\n  regice\n  registeel\n  latias\n  latiasmega\n  latios\n  latiosmega\n  kyogre\n  kyogreprimal\n  groudon\n  groudonprimal\n  rayquaza\n  rayquazamega\n  jirachi\n  deoxys\n  deoxysattack\n  deoxysdefense\n  deoxysspeed\n  turtwig\n  grotle\n  torterra\n  chimchar\n  monferno\n  infernape\n  piplup\n  prinplup\n  empoleon\n  starly\n  staravia\n  staraptor\n  staraptormega\n  bidoof\n  bibarel\n  kricketot\n  kricketune\n  shinx\n  luxio\n  luxray\n  budew\n  roserade\n  cranidos\n  rampardos\n  shieldon\n  bastiodon\n  burmy\n  wormadam\n  wormadamsandy\n  wormadamtrash\n  mothim\n  combee\n  vespiquen\n  pachirisu\n  buizel\n  floatzel\n  cherubi\n  cherrim\n  cherrimsunshine\n  shellos\n  gastrodon\n  ambipom\n  drifloon\n  drifblim\n  buneary\n  lopunny\n  lopunnymega\n  mismagius\n  honchkrow\n  glameow\n  purugly\n  chingling\n  stunky\n  skuntank\n  bronzor\n  bronzong\n  bonsly\n  mimejr\n  happiny\n  chatot\n  spiritomb\n  gible\n  gabite\n  garchomp\n  garchompmega\n  garchompmegaz\n  munchlax\n  riolu\n  lucario\n  lucariomega\n  lucariomegaz\n  hippopotas\n  hippowdon\n  skorupi\n  drapion\n  croagunk\n  toxicroak\n  carnivine\n  finneon\n  lumineon\n  mantyke\n  snover\n  abomasnow\n  abomasnowmega\n  weavile\n  magnezone\n  lickilicky\n  rhyperior\n  tangrowth\n  electivire\n  magmortar\n  togekiss\n  yanmega\n  leafeon\n  glaceon\n  gliscor\n  mamoswine\n  porygonz\n  gallade\n  gallademega\n  probopass\n  dusknoir\n  froslass\n  froslassmega\n  rotom\n  rotomheat\n  rotomwash\n  rotomfrost\n  rotomfan\n  rotommow\n  uxie\n  mesprit\n  azelf\n  dialga\n  dialgaorigin\n  palkia\n  palkiaorigin\n  heatran\n  heatranmega\n  regigigas\n  giratina\n  giratinaorigin\n  cresselia\n  phione\n  manaphy\n  darkrai\n  darkraimega\n  shaymin\n  shayminsky\n  arceus\n  arceusbug\n  arceusdark\n  arceusdragon\n  arceuselectric\n  arceusfairy\n  arceusfighting\n  arceusfire\n  arceusflying\n  arceusghost\n  arceusgrass\n  arceusground\n  arceusice\n  arceuspoison\n  arceuspsychic\n  arceusrock\n  arceussteel\n  arceuswater\n  arceuslegend\n  victini\n  snivy\n  servine\n  serperior\n  tepig\n  pignite\n  emboar\n  emboarmega\n  oshawott\n  dewott\n  samurott\n  samurotthisui\n  patrat\n  watchog\n  lillipup\n  herdier\n  stoutland\n  purrloin\n  liepard\n  pansage\n  simisage\n  pansear\n  simisear\n  panpour\n  simipour\n  munna\n  musharna\n  pidove\n  tranquill\n  unfezant\n  blitzle\n  zebstrika\n  roggenrola\n  boldore\n  gigalith\n  woobat\n  swoobat\n  drilbur\n  excadrill\n  excadrillmega\n  audino\n  audinomega\n  timburr\n  gurdurr\n  conkeldurr\n  tympole\n  palpitoad\n  seismitoad\n  throh\n  sawk\n  sewaddle\n  swadloon\n  leavanny\n  venipede\n  whirlipede\n  scolipede\n  scolipedemega\n  cottonee\n  whimsicott\n  petilil\n  lilligant\n  lilliganthisui\n  basculin\n  basculinbluestriped\n  basculinwhitestriped\n  sandile\n  krokorok\n  krookodile\n  darumaka\n  darumakagalar\n  darmanitan\n  darmanitangalar\n  darmanitanzen\n  darmanitangalarzen\n  maractus\n  dwebble\n  crustle\n  scraggy\n  scrafty\n  scraftymega\n  sigilyph\n  yamask\n  yamaskgalar\n  cofagrigus\n  tirtouga\n  carracosta\n  archen\n  archeops\n  trubbish\n  garbodor\n  garbodorgmax\n  zorua\n  zoruahisui\n  zoroark\n  zoroarkhisui\n  minccino\n  cinccino\n  gothita\n  gothorita\n  gothitelle\n  solosis\n  duosion\n  reuniclus\n  ducklett\n  swanna\n  vanillite\n  vanillish\n  vanilluxe\n  deerling\n  sawsbuck\n  emolga\n  karrablast\n  escavalier\n  foongus\n  amoonguss\n  frillish\n  frillishfemale\n  jellicent\n  jellicentfemale\n  alomomola\n  joltik\n  galvantula\n  ferroseed\n  ferrothorn\n  klink\n  klang\n  klinklang\n  tynamo\n  eelektrik\n  eelektross\n  eelektrossmega\n  elgyem\n  beheeyem\n  litwick\n  lampent\n  chandelure\n  chandeluremega\n  axew\n  fraxure\n  haxorus\n  cubchoo\n  beartic\n  cryogonal\n  shelmet\n  accelgor\n  stunfisk\n  stunfiskgalar\n  mienfoo\n  mienshao\n  druddigon\n  golett\n  golurk\n  golurkmega\n  pawniard\n  bisharp\n  bouffalant\n  rufflet\n  braviary\n  braviaryhisui\n  vullaby\n  mandibuzz\n  heatmor\n  durant\n  deino\n  zweilous\n  hydreigon\n  larvesta\n  volcarona\n  cobalion\n  terrakion\n  virizion\n  tornadus\n  tornadustherian\n  thundurus\n  thundurustherian\n  reshiram\n  zekrom\n  landorus\n  landorustherian\n  kyurem\n  kyuremblack\n  kyuremwhite\n  keldeo\n  keldeoresolute\n  meloetta\n  meloettapirouette\n  genesect\n  genesectdouse\n  genesectshock\n  genesectburn\n  genesectchill\n  chespin\n  quilladin\n  chesnaught\n  chesnaughtmega\n  fennekin\n  braixen\n  delphox\n  delphoxmega\n  froakie\n  frogadier\n  greninja\n  greninjaash\n  greninjamega\n  bunnelby\n  diggersby\n  fletchling\n  fletchinder\n  talonflame\n  scatterbug\n  spewpa\n  vivillon\n  vivillonfancy\n  vivillonpokeball\n  litleo\n  pyroar\n  pyroarmega\n  flabebe\n  floette\n  floetteeternal\n  floettemega\n  florges\n  skiddo\n  gogoat\n  pancham\n  pangoro\n  furfrou\n  espurr\n  meowstic\n  meowsticf\n  meowsticmega\n  honedge\n  doublade\n  aegislash\n  aegislashblade\n  spritzee\n  aromatisse\n  swirlix\n  slurpuff\n  inkay\n  malamar\n  malamarmega\n  binacle\n  barbaracle\n  barbaraclemega\n  skrelp\n  dragalge\n  dragalgemega\n  clauncher\n  clawitzer\n  helioptile\n  heliolisk\n  tyrunt\n  tyrantrum\n  amaura\n  aurorus\n  sylveon\n  hawlucha\n  hawluchamega\n  dedenne\n  carbink\n  goomy\n  sliggoo\n  sliggoohisui\n  goodra\n  goodrahisui\n  klefki\n  phantump\n  trevenant\n  pumpkaboo\n  pumpkaboosmall\n  pumpkaboolarge\n  pumpkaboosuper\n  gourgeist\n  gourgeistsmall\n  gourgeistlarge\n  gourgeistsuper\n  bergmite\n  avalugg\n  avalugghisui\n  noibat\n  noivern\n  xerneas\n  xerneasneutral\n  yveltal\n  zygarde\n  zygarde10\n  zygardecomplete\n  zygardecompletemega\n  diancie\n  dianciemega\n  hoopa\n  hoopaunbound\n  volcanion\n  rowlet\n  dartrix\n  decidueye\n  decidueyehisui\n  litten\n  torracat\n  incineroar\n  popplio\n  brionne\n  primarina\n  pikipek\n  trumbeak\n  toucannon\n  yungoos\n  gumshoos\n  gumshoostotem\n  grubbin\n  charjabug\n  vikavolt\n  vikavolttotem\n  crabrawler\n  crabominable\n  crabominablemega\n  oricorio\n  oricoriopompom\n  oricoriopau\n  oricoriosensu\n  cutiefly\n  ribombee\n  ribombeetotem\n  rockruff\n  lycanroc\n  lycanrocmidnight\n  lycanrocdusk\n  wishiwashi\n  wishiwashischool\n  mareanie\n  toxapex\n  mudbray\n  mudsdale\n  dewpider\n  araquanid\n  araquanidtotem\n  fomantis\n  lurantis\n  lurantistotem\n  morelull\n  shiinotic\n  salandit\n  salazzle\n  salazzletotem\n  stufful\n  bewear\n  bounsweet\n  steenee\n  tsareena\n  comfey\n  oranguru\n  passimian\n  wimpod\n  golisopod\n  golisopodmega\n  sandygast\n  palossand\n  pyukumuku\n  typenull\n  silvally\n  silvallybug\n  silvallydark\n  silvallydragon\n  silvallyelectric\n  silvallyfairy\n  silvallyfighting\n  silvallyfire\n  silvallyflying\n  silvallyghost\n  silvallygrass\n  silvallyground\n  silvallyice\n  silvallypoison\n  silvallypsychic\n  silvallyrock\n  silvallysteel\n  silvallywater\n  minior\n  miniormeteor\n  komala\n  turtonator\n  togedemaru\n  togedemarutotem\n  mimikyu\n  mimikyubusted\n  mimikyutotem\n  mimikyubustedtotem\n  bruxish\n  drampa\n  drampamega\n  dhelmise\n  jangmoo\n  hakamoo\n  kommoo\n  kommoototem\n  tapukoko\n  tapulele\n  tapubulu\n  tapufini\n  cosmog\n  cosmoem\n  solgaleo\n  lunala\n  nihilego\n  buzzwole\n  pheromosa\n  xurkitree\n  celesteela\n  kartana\n  guzzlord\n  necrozma\n  necrozmaduskmane\n  necrozmadawnwings\n  necrozmaultra\n  magearna\n  magearnamega\n  magearnaoriginal\n  magearnaoriginalmega\n  marshadow\n  poipole\n  naganadel\n  stakataka\n  blacephalon\n  zeraora\n  zeraoramega\n  meltan\n  melmetal\n  melmetalgmax\n  grookey\n  thwackey\n  rillaboom\n  rillaboomgmax\n  scorbunny\n  raboot\n  cinderace\n  cinderacegmax\n  sobble\n  drizzile\n  inteleon\n  inteleongmax\n  skwovet\n  greedent\n  rookidee\n  corvisquire\n  corviknight\n  corviknightgmax\n  blipbug\n  dottler\n  orbeetle\n  orbeetlegmax\n  nickit\n  thievul\n  gossifleur\n  eldegoss\n  wooloo\n  dubwool\n  chewtle\n  drednaw\n  drednawgmax\n  yamper\n  boltund\n  rolycoly\n  carkol\n  coalossal\n  coalossalgmax\n  applin\n  flapple\n  flapplegmax\n  appletun\n  appletungmax\n  silicobra\n  sandaconda\n  sandacondagmax\n  cramorant\n  cramorantgulping\n  cramorantgorging\n  arrokuda\n  barraskewda\n  toxel\n  toxtricity\n  toxtricitylowkey\n  toxtricitygmax\n  toxtricitylowkeygmax\n  sizzlipede\n  centiskorch\n  centiskorchgmax\n  clobbopus\n  grapploct\n  sinistea\n  sinisteaantique\n  polteageist\n  polteageistantique\n  hatenna\n  hattrem\n  hatterene\n  hatterenegmax\n  impidimp\n  morgrem\n  grimmsnarl\n  grimmsnarlgmax\n  obstagoon\n  perrserker\n  cursola\n  sirfetchd\n  mrrime\n  runerigus\n  milcery\n  alcremie\n  alcremiegmax\n  falinks\n  falinksmega\n  pincurchin\n  snom\n  frosmoth\n  stonjourner\n  eiscue\n  eiscuenoice\n  indeedee\n  indeedeef\n  morpeko\n  morpekohangry\n  cufant\n  copperajah\n  copperajahgmax\n  dracozolt\n  arctozolt\n  dracovish\n  arctovish\n  duraludon\n  duraludongmax\n  dreepy\n  drakloak\n  dragapult\n  zacian\n  zaciancrowned\n  zamazenta\n  zamazentacrowned\n  eternatus\n  eternatuseternamax\n  kubfu\n  urshifu\n  urshifurapidstrike\n  urshifugmax\n  urshifurapidstrikegmax\n  zarude\n  zarudedada\n  regieleki\n  regidrago\n  glastrier\n  spectrier\n  calyrex\n  calyrexice\n  calyrexshadow\n  wyrdeer\n  kleavor\n  ursaluna\n  ursalunabloodmoon\n  basculegion\n  basculegionf\n  sneasler\n  overqwil\n  enamorus\n  enamorustherian\n  sprigatito\n  floragato\n  meowscarada\n  fuecoco\n  crocalor\n  skeledirge\n  quaxly\n  quaxwell\n  quaquaval\n  lechonk\n  oinkologne\n  oinkolognef\n  tarountula\n  spidops\n  nymble\n  lokix\n  pawmi\n  pawmo\n  pawmot\n  tandemaus\n  maushold\n  mausholdfour\n  fidough\n  dachsbun\n  smoliv\n  dolliv\n  arboliva\n  squawkabilly\n  squawkabillyblue\n  squawkabillyyellow\n  squawkabillywhite\n  nacli\n  naclstack\n  garganacl\n  charcadet\n  armarouge\n  ceruledge\n  tadbulb\n  bellibolt\n  wattrel\n  kilowattrel\n  maschiff\n  mabosstiff\n  shroodle\n  grafaiai\n  bramblin\n  brambleghast\n  toedscool\n  toedscruel\n  klawf\n  capsakid\n  scovillain\n  scovillainmega\n  rellor\n  rabsca\n  flittle\n  espathra\n  tinkatink\n  tinkatuff\n  tinkaton\n  wiglett\n  wugtrio\n  bombirdier\n  finizen\n  palafin\n  palafinhero\n  varoom\n  revavroom\n  cyclizar\n  orthworm\n  glimmet\n  glimmora\n  glimmoramega\n  greavard\n  houndstone\n  flamigo\n  cetoddle\n  cetitan\n  veluza\n  dondozo\n  tatsugiri\n  tatsugirimega\n  annihilape\n  clodsire\n  farigiraf\n  dudunsparce\n  dudunsparcethreesegment\n  kingambit\n  greattusk\n  screamtail\n  brutebonnet\n  fluttermane\n  slitherwing\n  sandyshocks\n  irontreads\n  ironbundle\n  ironhands\n  ironjugulis\n  ironmoth\n  ironthorns\n  frigibax\n  arctibax\n  baxcalibur\n  baxcaliburmega\n  gimmighoul\n  gimmighoulroaming\n  gholdengo\n  wochien\n  chienpao\n  tinglu\n  chiyu\n  roaringmoon\n  ironvaliant\n  koraidon\n  miraidon\n  walkingwake\n  ironleaves\n  dipplin\n  poltchageist\n  poltchageistartisan\n  sinistcha\n  sinistchamasterpiece\n  okidogi\n  munkidori\n  fezandipiti\n  ogerpon\n  ogerponcornerstone\n  ogerponcornerstonetera\n  ogerponhearthflame\n  ogerponhearthflametera\n  ogerponwellspring\n  ogerponwellspringtera\n  ogerpontealtera\n  archaludon\n  hydrapple\n  gougingfire\n  ragingbolt\n  ironboulder\n  ironcrown\n  terapagos\n  terapagosterastal\n  terapagosstellar\n  pecharunt\n}\n\n\"The supported items\"\nenum ItemsEnum {\n  abilityshield\n  abomasite\n  absolite\n  absolitez\n  absorbbulb\n  acrobike\n  adamantcrystal\n  adamantorb\n  adrenalineorb\n  adventureguide\n  aerodactylite\n  aggronite\n  aguavberry\n  airballoon\n  alakazite\n  aloraichiumz\n  altarianite\n  amazingbutter\n  ampharosite\n  apicotberry\n  apricornbox\n  aquasuit\n  arbolivaoil\n  armorfossil\n  aspearberry\n  assaultvest\n  audinite\n  auroraticket\n  auspiciousarmor\n  autograph\n  autographedplush\n  azureflute\n  babiriberry\n  bandautograph\n  banettite\n  barbaracite\n  basementkey\n  baxcalibrite\n  beastball\n  beedrillite\n  belueberry\n  berry\n  berryjuice\n  berrypots\n  berrypouch\n  berrysweet\n  berserkgene\n  bicycle\n  bignugget\n  bigroot\n  bikevoucher\n  bindingband\n  bitterberry\n  blackbelt\n  blackglasses\n  blacksludge\n  blastoisinite\n  blazikenite\n  bluecanariplushlv1\n  bluecanariplushlv2\n  bluecanariplushlv3\n  bluecard\n  blueorb\n  bluepetal\n  blukberry\n  blunderpolicy\n  boosterenergy\n  bottlecap\n  brightpowder\n  buggem\n  buginiumz\n  bugmemory\n  bugterashard\n  burndrive\n  burntberry\n  cameruptite\n  campinggear\n  canaribread\n  cardkey\n  catchingcharm\n  cellbattery\n  chandelurite\n  charcoal\n  charizarditex\n  charizarditey\n  chartiberry\n  cheriberry\n  cherishball\n  cherishedring\n  chesnaughtite\n  chesnautite\n  chestoberry\n  chilanberry\n  chilldrive\n  chimechite\n  chippedpot\n  choiceband\n  choicescarf\n  choicespecs\n  chopleberry\n  clawfossil\n  clearamulet\n  clearbell\n  clefablite\n  cloversweet\n  cobaberry\n  coincase\n  colburberry\n  colorfulscrew\n  colressmchn\n  contestcostume\n  contestpass\n  cornerstonemask\n  cornnberry\n  coupon1\n  coupon2\n  coupon3\n  coverfossil\n  covertcloak\n  crabominite\n  crackedpot\n  crucibellite\n  custapberry\n  damprock\n  darkgem\n  darkiniumz\n  darkmemory\n  darkranite\n  darkstone\n  darkterashard\n  dawnstone\n  decidiumz\n  deepseascale\n  deepseatooth\n  delphoxite\n  destinyknot\n  devongoods\n  devonparts\n  devonscope\n  devonscubagear\n  diancite\n  diveball\n  dnasplicers\n  domefossil\n  dousedrive\n  dowsingmachine\n  dowsingmchn\n  dracoplate\n  dragalgite\n  dragonfang\n  dragongem\n  dragoninite\n  dragoniumz\n  dragonmemory\n  dragonscale\n  dragonskull\n  dragonterashard\n  drampanite\n  dreadplate\n  dreamball\n  droppeditem\n  dubiousdisc\n  durinberry\n  duskball\n  duskstone\n  dynamaxband\n  earthplate\n  eelektrossite\n  eeviumz\n  eggcard\n  ejectbutton\n  ejectpack\n  electirizer\n  electricgem\n  electricmemory\n  electricseed\n  electricterashard\n  electriumz\n  elevatorkey\n  emboarite\n  endorsement\n  energypowder\n  enigmaberry\n  enigmastone\n  enigmaticcard\n  eonflute\n  eonticket\n  epicenoire\n  escaperope\n  eviolite\n  excadrite\n  expertbelt\n  explorerkit\n  expshare\n  fairiumz\n  fairyfeather\n  fairygem\n  fairymemory\n  fairyterashard\n  falinksite\n  famechecker\n  fashioncase\n  fastball\n  feraligite\n  fightinggem\n  fightingmemory\n  fightingterashard\n  fightiniumz\n  figyberry\n  firegem\n  firememory\n  firestone\n  fireterashard\n  firiumz\n  fishingrod\n  fistplate\n  flameorb\n  flameplate\n  floatstone\n  floettite\n  flowersweet\n  flyinggem\n  flyingmemory\n  flyingterashard\n  flyiniumz\n  focusband\n  focussash\n  foragebag\n  fossilizedbird\n  fossilizeddino\n  fossilizeddrake\n  fossilizedfish\n  friendball\n  froslassite\n  fullincense\n  fullrestore\n  galactickey\n  galaricacuff\n  galaricawreath\n  galladite\n  ganlonberry\n  garchompite\n  garchompitez\n  gardevoirite\n  gbsounds\n  gengarite\n  ghostgem\n  ghostiumz\n  ghostmemory\n  ghostterashard\n  glalitite\n  glimmoranite\n  godstone\n  gogoggles\n  goldberry\n  goldbottlecap\n  goldcanariplushlv1\n  goldcanariplushlv2\n  goldcanariplushlv3\n  goldteeth\n  golisopite\n  golurkite\n  goodrod\n  gracidea\n  gram1\n  gram2\n  gram3\n  grassgem\n  grassiumz\n  grassmemory\n  grassterashard\n  grassyseed\n  greatball\n  greatbutter\n  greencanariplushlv1\n  greencanariplushlv2\n  greencanariplushlv3\n  greenpetal\n  greninjite\n  grepaberry\n  gripclaw\n  griseouscore\n  griseousorb\n  groundgem\n  groundiumz\n  groundmemory\n  groundterashard\n  grubbyhanky\n  gsball\n  gyaradosite\n  habanberry\n  hardstone\n  hawluchanite\n  healball\n  hearthflamemask\n  heatranite\n  heatrock\n  heavyball\n  heavydutyboots\n  helixfossil\n  heracronite\n  hitechearbuds\n  hoenniansalt\n  holocaster\n  hondewberry\n  honorofkalos\n  houndoominite\n  hyperaspearberry\n  hyperbabiriberry\n  hyperchartiberry\n  hypercheriberry\n  hyperchestoberry\n  hyperchilanberry\n  hyperchopleberry\n  hypercobaberry\n  hypercolburberry\n  hypergrepaberry\n  hyperhabanberry\n  hyperhondewberry\n  hyperkasibberry\n  hyperkebiaberry\n  hyperkelpsyberry\n  hyperlumberry\n  hyperoccaberry\n  hyperoranberry\n  hyperpasshoberry\n  hyperpayapaberry\n  hyperpechaberry\n  hyperpersimberry\n  hyperpomegberry\n  hyperpotion\n  hyperqualotberry\n  hyperrawstberry\n  hyperrindoberry\n  hyperroseliberry\n  hypershucaberry\n  hypersitrusberry\n  hyperspacebutter\n  hypertamatoberry\n  hypertangaberry\n  hyperwacanberry\n  hyperyacheberry\n  iapapaberry\n  iceberry\n  icegem\n  icememory\n  icestone\n  iceterashard\n  icicleplate\n  iciumz\n  icyrock\n  ilimasnormaliumz\n  importantletter\n  inciniumz\n  insectplate\n  intriguingstone\n  ironball\n  ironplate\n  itemfinder\n  jabocaberry\n  jadeorb\n  jawfossil\n  journal\n  kangaskhanite\n  kasibberry\n  kebiaberry\n  keeberry\n  kelpsyberry\n  keystone\n  keytoroom1\n  keytoroom2\n  keytoroom202\n  keytoroom4\n  keytoroom6\n  kingsrock\n  kofuswallet\n  kommoniumz\n  koraidonspokeball\n  labkeycarda\n  labkeycardb\n  labkeycardc\n  laggingtail\n  lansatberry\n  latiasite\n  latiosite\n  laxincense\n  leafstone\n  leek\n  leftovers\n  leftpokeball\n  legendplate\n  lenscase\n  leppaberry\n  letter\n  levelball\n  libertypass\n  lidasthings\n  liechiberry\n  lifeorb\n  liftkey\n  lightball\n  lightclay\n  lightstone\n  loadeddice\n  lockcapsule\n  lookerticket\n  lootsack\n  lopunnite\n  lostitem\n  loveball\n  lovesweet\n  lucarionite\n  lucarionitez\n  luckypunch\n  lumberry\n  luminousmoss\n  lumiosianbutter\n  lunaliumz\n  lunarwing\n  lureball\n  lustrousglobe\n  lustrousorb\n  luxuryball\n  lycaniumz\n  machbike\n  machinepart\n  machobrace\n  magearnite\n  magmaemblem\n  magmarizer\n  magmastone\n  magmasuit\n  magnet\n  magoberry\n  magostberry\n  mail\n  makeupbag\n  malamarite\n  maliciousarmor\n  manectite\n  marangaberry\n  marshadiumz\n  masterball\n  masterpieceteacup\n  mawilite\n  maxpotion\n  meadowplate\n  medalbox\n  medichamite\n  megabracelet\n  meganiumite\n  megaring\n  megashard\n  membercard\n  mentalherb\n  meowsticite\n  metagrossite\n  metalalloy\n  metalcoat\n  metalpowder\n  meteorite\n  meteoriteshard\n  metronome\n  mewniumz\n  mewtwonitex\n  mewtwonitey\n  micleberry\n  mimikiumz\n  mindplate\n  mintberry\n  miracleberry\n  miracleseed\n  miraidonspokeball\n  mirrorherb\n  mistyseed\n  moonball\n  moonflute\n  moonstone\n  muscleband\n  mysteryberry\n  mysteryegg\n  mysticticket\n  mysticwater\n  nanabberry\n  nestball\n  netball\n  nevermeltice\n  nicebutter\n  nlunarizer\n  nomelberry\n  normalgem\n  normaliumz\n  normalterashard\n  nsolarizer\n  oaksletter\n  oaksparcel\n  occaberry\n  oddincense\n  oldamber\n  oldcharm\n  oldletter\n  oldrod\n  oldseamap\n  oranberry\n  orangepetal\n  ovalcharm\n  ovalstone\n  pairoftickets\n  palpad\n  pamtreberry\n  parcel\n  parkball\n  pass\n  passhoberry\n  payapaberry\n  pebble\n  pechaberry\n  permit\n  persimberry\n  petayaberry\n  photoalbum\n  pidgeotite\n  pikaniumz\n  pikashuniumz\n  pinapberry\n  pinkbow\n  pinkcanariplushlv1\n  pinkcanariplushlv2\n  pinkcanariplushlv3\n  pinkpetal\n  pinsirite\n  pixieplate\n  plasmacard\n  plumefossil\n  poffincase\n  pointcard\n  poisonbarb\n  poisongem\n  poisoniumz\n  poisonmemory\n  poisonterashard\n  pokeball\n  pokeblockcase\n  pokeblockkit\n  pokeflute\n  pokemonboxlink\n  pokeradar\n  polkadotbow\n  pomegberry\n  poppingcandy\n  potion\n  powderjar\n  poweranklet\n  powerband\n  powerbelt\n  powerbracer\n  powerherb\n  powerlens\n  powerplantpass\n  powerweight\n  premierball\n  prettyfeather\n  primariumz\n  prismscale\n  prisonbottle\n  professorsmask\n  profsletter\n  propcase\n  protectivepads\n  protector\n  przcureberry\n  psncureberry\n  psychicgem\n  psychicmemory\n  psychicseed\n  psychicterashard\n  psychiumz\n  punchingglove\n  purplepetal\n  pyroarite\n  qualotberry\n  quickball\n  quickclaw\n  quickpowder\n  rabutaberry\n  ragecandybar\n  raichunitex\n  raichunitey\n  rainbowflower\n  rainbowpass\n  rainbowwing\n  rarebone\n  rawstberry\n  razorclaw\n  razorfang\n  razzberry\n  reapercloth\n  redcanariplushlv1\n  redcanariplushlv2\n  redcanariplushlv3\n  redcard\n  redchain\n  redorb\n  redpetal\n  redscale\n  repeatball\n  revealglass\n  revitalizingtwig\n  ribbonsweet\n  ridepager\n  rindoberry\n  ringtarget\n  rm1key\n  rm2key\n  rm4key\n  rm6key\n  rockgem\n  rockincense\n  rockiumz\n  rockmemory\n  rockterashard\n  rockyhelmet\n  rollerskates\n  roomservice\n  rootfossil\n  roseincense\n  roseliberry\n  rotombike\n  rotomcatalog\n  rotomphone\n  rowapberry\n  ruby\n  rulebook\n  rustedshield\n  rustedsword\n  sablenite\n  sachet\n  safariball\n  safetygoggles\n  sailfossil\n  salacberry\n  salamencite\n  sandwhich\n  sapphire\n  scanner\n  scarletbook\n  sceptilite\n  scizorite\n  scolipite\n  scopelens\n  scovillainite\n  scraftinite\n  seaincense\n  sealbag\n  sealcase\n  secretkey\n  secretpotion\n  seedofmastery\n  sharpbeak\n  sharpedonite\n  shedshell\n  shellbell\n  shinycharm\n  shinystone\n  shockdrive\n  shucaberry\n  silkscarf\n  silphscope\n  silverpowder\n  silverwing\n  sitrusberry\n  skarmorite\n  skullfossil\n  skyplate\n  slowbronite\n  slowpoketail\n  smoothrock\n  snorliumz\n  snowball\n  softsand\n  solganiumz\n  soniasbook\n  sootsack\n  souldew\n  sparklingstone\n  spelltag\n  spelonberry\n  splashplate\n  spookyplate\n  sportball\n  sprayduck\n  sprinklotad\n  squirtbottle\n  ssticket\n  staraptite\n  starfberry\n  starminite\n  starsweet\n  steelgem\n  steeliumz\n  steelixite\n  steelmemory\n  steelterashard\n  stick\n  stickybarb\n  stoneplate\n  storagekey\n  strangeball\n  strawberrysweet\n  suitekey\n  sunflute\n  sunstone\n  superlumiosegalette\n  superpotion\n  superrod\n  supremebutter\n  surgebadge\n  swampertite\n  sweetapple\n  syrupyapple\n  tamatoberry\n  tangaberry\n  tapuniumz\n  tartapple\n  tastytrash\n  tatsugirinite\n  tea\n  teachytv\n  teraorb\n  terrainextender\n  thickclub\n  throatspray\n  thunderstone\n  tidalbell\n  timerball\n  tmcase\n  tmvpass\n  townmap\n  toxicorb\n  toxicplate\n  tr00\n  tr01\n  tr02\n  tr03\n  tr04\n  tr05\n  tr06\n  tr07\n  tr08\n  tr09\n  tr10\n  tr11\n  tr12\n  tr13\n  tr14\n  tr15\n  tr16\n  tr17\n  tr18\n  tr19\n  tr20\n  tr21\n  tr22\n  tr23\n  tr24\n  tr25\n  tr26\n  tr27\n  tr28\n  tr29\n  tr30\n  tr31\n  tr32\n  tr33\n  tr34\n  tr35\n  tr36\n  tr37\n  tr38\n  tr39\n  tr40\n  tr41\n  tr42\n  tr43\n  tr44\n  tr45\n  tr46\n  tr47\n  tr48\n  tr49\n  tr50\n  tr51\n  tr52\n  tr53\n  tr54\n  tr55\n  tr56\n  tr57\n  tr58\n  tr59\n  tr60\n  tr61\n  tr62\n  tr63\n  tr64\n  tr65\n  tr66\n  tr67\n  tr68\n  tr69\n  tr70\n  tr71\n  tr72\n  tr73\n  tr74\n  tr75\n  tr76\n  tr77\n  tr78\n  tr79\n  tr80\n  tr81\n  tr82\n  tr83\n  tr84\n  tr85\n  tr86\n  tr87\n  tr88\n  tr89\n  tr90\n  tr91\n  tr92\n  tr93\n  tr94\n  tr95\n  tr96\n  tr97\n  tr98\n  tr99\n  traveltrunk\n  tripass\n  twistedspoon\n  tyranitarite\n  ultraball\n  ultranecroziumz\n  unownreport\n  unremarkableteacup\n  upgrade\n  utilityumbrella\n  venusaurite\n  victreebelite\n  vilevial\n  violetbook\n  vsrecorder\n  vsseeker\n  wacanberry\n  wailmerpail\n  watergem\n  wateriumz\n  watermemory\n  waterstone\n  waterterashard\n  watmelberry\n  waveincense\n  weaknesspolicy\n  wellspringmask\n  wepearberry\n  whippeddream\n  whiteherb\n  widelens\n  wikiberry\n  wiseglasses\n  wishingstar\n  workskey\n  xtransceiver\n  yacheberry\n  yellowpetal\n  zapplate\n  zeraorite\n  zoomlens\n  zpowering\n  zring\n  zygardecube\n  zygardite\n}\n\n\"The supported moves\"\nenum MovesEnum {\n  absorb\n  accelerock\n  acid\n  acidarmor\n  aciddownpour\n  acidspray\n  acrobatics\n  acupressure\n  aerialace\n  aeroblast\n  afteryou\n  agility\n  aircutter\n  airslash\n  alloutpummeling\n  alluringvoice\n  allyswitch\n  amnesia\n  anchorshot\n  ancientpower\n  appleacid\n  aquacutter\n  aquajet\n  aquaring\n  aquastep\n  aquatail\n  armorcannon\n  armthrust\n  aromatherapy\n  aromaticmist\n  assist\n  assurance\n  astonish\n  astralbarrage\n  attackorder\n  attract\n  aurasphere\n  aurawheel\n  aurorabeam\n  auroraveil\n  autotomize\n  avalanche\n  axekick\n  babydolleyes\n  baddybad\n  banefulbunker\n  barbbarrage\n  barrage\n  barrier\n  batonpass\n  beakblast\n  beatup\n  behemothbash\n  behemothblade\n  belch\n  bellydrum\n  bestow\n  bide\n  bind\n  bite\n  bitterblade\n  bittermalice\n  blackholeeclipse\n  blastburn\n  blazekick\n  blazingtorque\n  bleakwindstorm\n  blizzard\n  block\n  bloodmoon\n  bloomdoom\n  blueflare\n  bodypress\n  bodyslam\n  boltbeak\n  boltstrike\n  boneclub\n  bonemerang\n  bonerush\n  boomburst\n  bounce\n  bouncybubble\n  branchpoke\n  bravebird\n  breakingswipe\n  breakneckblitz\n  brickbreak\n  brine\n  brutalswing\n  bubble\n  bubblebeam\n  bugbite\n  bugbuzz\n  bulkup\n  bulldoze\n  bulletpunch\n  bulletseed\n  burningbulwark\n  burningjealousy\n  burnup\n  buzzybuzz\n  calmmind\n  camouflage\n  captivate\n  catastropika\n  ceaselessedge\n  celebrate\n  charge\n  chargebeam\n  charm\n  chatter\n  chillingwater\n  chillyreception\n  chipaway\n  chloroblast\n  circlethrow\n  clamp\n  clangingscales\n  clangoroussoul\n  clangoroussoulblaze\n  clearsmog\n  closecombat\n  coaching\n  coil\n  collisioncourse\n  combattorque\n  cometpunch\n  comeuppance\n  confide\n  confuseray\n  confusion\n  constrict\n  continentalcrush\n  conversion\n  conversion2\n  copycat\n  coreenforcer\n  corkscrewcrash\n  corrosivegas\n  cosmicpower\n  cottonguard\n  cottonspore\n  counter\n  courtchange\n  covet\n  crabhammer\n  craftyshield\n  crosschop\n  crosspoison\n  crunch\n  crushclaw\n  crushgrip\n  curse\n  cut\n  darkestlariat\n  darkpulse\n  darkvoid\n  dazzlinggleam\n  decorate\n  defendorder\n  defensecurl\n  defog\n  destinybond\n  detect\n  devastatingdrake\n  diamondstorm\n  dig\n  direclaw\n  disable\n  disarmingvoice\n  discharge\n  dive\n  dizzypunch\n  doodle\n  doomdesire\n  doubleedge\n  doublehit\n  doubleironbash\n  doublekick\n  doubleshock\n  doubleslap\n  doubleteam\n  dracometeor\n  dragonascent\n  dragonbreath\n  dragoncheer\n  dragonclaw\n  dragondance\n  dragondarts\n  dragonenergy\n  dragonhammer\n  dragonpulse\n  dragonrage\n  dragonrush\n  dragontail\n  drainingkiss\n  drainpunch\n  dreameater\n  drillpeck\n  drillrun\n  drumbeating\n  dualchop\n  dualwingbeat\n  dynamaxcannon\n  dynamicpunch\n  earthpower\n  earthquake\n  echoedvoice\n  eerieimpulse\n  eeriespell\n  eggbomb\n  electricterrain\n  electrify\n  electroball\n  electrodrift\n  electroshot\n  electroweb\n  embargo\n  ember\n  encore\n  endeavor\n  endure\n  energyball\n  entrainment\n  eruption\n  esperwing\n  eternabeam\n  expandingforce\n  explosion\n  extrasensory\n  extremeevoboost\n  extremespeed\n  facade\n  fairylock\n  fairywind\n  fakeout\n  faketears\n  falsesurrender\n  falseswipe\n  featherdance\n  feint\n  feintattack\n  fellstinger\n  ficklebeam\n  fierydance\n  fierywrath\n  filletaway\n  finalgambit\n  fireblast\n  firefang\n  firelash\n  firepledge\n  firepunch\n  firespin\n  firstimpression\n  fishiousrend\n  fissure\n  flail\n  flameburst\n  flamecharge\n  flamethrower\n  flamewheel\n  flareblitz\n  flash\n  flashcannon\n  flatter\n  fleurcannon\n  fling\n  flipturn\n  floatyfall\n  floralhealing\n  flowershield\n  flowertrick\n  fly\n  flyingpress\n  focusblast\n  focusenergy\n  focuspunch\n  followme\n  forcepalm\n  foresight\n  forestscurse\n  foulplay\n  freezedry\n  freezeshock\n  freezingglare\n  freezyfrost\n  frenzyplant\n  frostbreath\n  frustration\n  furyattack\n  furycutter\n  furyswipes\n  fusionbolt\n  fusionflare\n  futuresight\n  gastroacid\n  geargrind\n  gearup\n  genesissupernova\n  geomancy\n  gigadrain\n  gigaimpact\n  gigatonhammer\n  gigavolthavoc\n  glaciallance\n  glaciate\n  glaiverush\n  glare\n  glitzyglow\n  gmaxbefuddle\n  gmaxcannonade\n  gmaxcentiferno\n  gmaxchistrike\n  gmaxcuddle\n  gmaxdepletion\n  gmaxdrumsolo\n  gmaxfinale\n  gmaxfireball\n  gmaxfoamburst\n  gmaxgoldrush\n  gmaxgravitas\n  gmaxhydrosnipe\n  gmaxmalodor\n  gmaxmeltdown\n  gmaxoneblow\n  gmaxrapidflow\n  gmaxreplenish\n  gmaxresonance\n  gmaxsandblast\n  gmaxsmite\n  gmaxsnooze\n  gmaxsteelsurge\n  gmaxstonesurge\n  gmaxstunshock\n  gmaxsweetness\n  gmaxtartness\n  gmaxterror\n  gmaxvinelash\n  gmaxvolcalith\n  gmaxvoltcrash\n  gmaxwildfire\n  gmaxwindrage\n  grassknot\n  grasspledge\n  grasswhistle\n  grassyglide\n  grassyterrain\n  gravapple\n  gravity\n  growl\n  growth\n  grudge\n  guardianofalola\n  guardsplit\n  guardswap\n  guillotine\n  gunkshot\n  gust\n  gyroball\n  hail\n  hammerarm\n  happyhour\n  harden\n  hardpress\n  haze\n  headbutt\n  headcharge\n  headlongrush\n  headsmash\n  healbell\n  healblock\n  healingwish\n  healorder\n  healpulse\n  heartstamp\n  heartswap\n  heatcrash\n  heatwave\n  heavyslam\n  helpinghand\n  hex\n  hiddenpower\n  hiddenpowerbug\n  hiddenpowerdark\n  hiddenpowerdragon\n  hiddenpowerelectric\n  hiddenpowerfighting\n  hiddenpowerfire\n  hiddenpowerflying\n  hiddenpowerghost\n  hiddenpowergrass\n  hiddenpowerground\n  hiddenpowerice\n  hiddenpowerpoison\n  hiddenpowerpsychic\n  hiddenpowerrock\n  hiddenpowersteel\n  hiddenpowerwater\n  highhorsepower\n  highjumpkick\n  holdback\n  holdhands\n  honeclaws\n  hornattack\n  horndrill\n  hornleech\n  howl\n  hurricane\n  hydrocannon\n  hydropump\n  hydrosteam\n  hydrovortex\n  hyperbeam\n  hyperdrill\n  hyperfang\n  hyperspacefury\n  hyperspacehole\n  hypervoice\n  hypnosis\n  iceball\n  icebeam\n  iceburn\n  icefang\n  icehammer\n  icepunch\n  iceshard\n  icespinner\n  iciclecrash\n  iciclespear\n  icywind\n  imprison\n  incinerate\n  infernalparade\n  inferno\n  infernooverdrive\n  infestation\n  ingrain\n  instruct\n  iondeluge\n  irondefense\n  ironhead\n  irontail\n  ivycudgel\n  jawlock\n  jetpunch\n  judgment\n  jumpkick\n  junglehealing\n  karatechop\n  kinesis\n  kingsshield\n  knockoff\n  kowtowcleave\n  landswrath\n  laserfocus\n  lashout\n  lastresort\n  lastrespects\n  lavaplume\n  leafage\n  leafblade\n  leafstorm\n  leaftornado\n  leechlife\n  leechseed\n  leer\n  letssnuggleforever\n  lick\n  lifedew\n  lightofruin\n  lightscreen\n  lightthatburnsthesky\n  liquidation\n  lockon\n  lovelykiss\n  lowkick\n  lowsweep\n  luckychant\n  luminacrash\n  lunarblessing\n  lunardance\n  lunge\n  lusterpurge\n  machpunch\n  magicalleaf\n  magicaltorque\n  magiccoat\n  magicpowder\n  magicroom\n  magmastorm\n  magnetbomb\n  magneticflux\n  magnetrise\n  magnitude\n  makeitrain\n  maliciousmoonsault\n  malignantchain\n  matblock\n  matchagotcha\n  maxairstream\n  maxdarkness\n  maxflare\n  maxflutterby\n  maxgeyser\n  maxguard\n  maxhailstorm\n  maxknuckle\n  maxlightning\n  maxmindstorm\n  maxooze\n  maxovergrowth\n  maxphantasm\n  maxquake\n  maxrockfall\n  maxstarfall\n  maxsteelspike\n  maxstrike\n  maxwyrmwind\n  meanlook\n  meditate\n  mefirst\n  megadrain\n  megahorn\n  megakick\n  megapunch\n  memento\n  menacingmoonrazemaelstrom\n  metalburst\n  metalclaw\n  metalsound\n  meteorassault\n  meteorbeam\n  meteormash\n  metronome\n  mightycleave\n  milkdrink\n  mimic\n  mindblown\n  mindreader\n  minimize\n  miracleeye\n  mirrorcoat\n  mirrormove\n  mirrorshot\n  mist\n  mistball\n  mistyexplosion\n  mistyterrain\n  moonblast\n  moongeistbeam\n  moonlight\n  morningsun\n  mortalspin\n  mountaingale\n  mudbomb\n  muddywater\n  mudshot\n  mudslap\n  mudsport\n  multiattack\n  mysticalfire\n  mysticalpower\n  nastyplot\n  naturalgift\n  naturepower\n  naturesmadness\n  needlearm\n  neverendingnightmare\n  nightdaze\n  nightmare\n  nightshade\n  nightslash\n  nihillight\n  nobleroar\n  noretreat\n  noxioustorque\n  nuzzle\n  oblivionwing\n  obstruct\n  oceanicoperetta\n  octazooka\n  octolock\n  odorsleuth\n  ominouswind\n  orderup\n  originpulse\n  outrage\n  overdrive\n  overheat\n  painsplit\n  paleowave\n  paraboliccharge\n  partingshot\n  payback\n  payday\n  peck\n  perishsong\n  petalblizzard\n  petaldance\n  phantomforce\n  photongeyser\n  pikapapow\n  pinmissile\n  plasmafists\n  playnice\n  playrough\n  pluck\n  poisonfang\n  poisongas\n  poisonjab\n  poisonpowder\n  poisonsting\n  poisontail\n  polarflare\n  pollenpuff\n  poltergeist\n  populationbomb\n  pounce\n  pound\n  powder\n  powdersnow\n  powergem\n  powershift\n  powersplit\n  powerswap\n  powertrick\n  powertrip\n  poweruppunch\n  powerwhip\n  precipiceblades\n  present\n  prismaticlaser\n  protect\n  psybeam\n  psyblade\n  psychic\n  psychicfangs\n  psychicnoise\n  psychicterrain\n  psychoboost\n  psychocut\n  psychoshift\n  psychup\n  psyshieldbash\n  psyshock\n  psystrike\n  psywave\n  pulverizingpancake\n  punishment\n  purify\n  pursuit\n  pyroball\n  quash\n  quickattack\n  quickguard\n  quiverdance\n  rage\n  ragefist\n  ragepowder\n  ragingbull\n  ragingfury\n  raindance\n  rapidspin\n  razorleaf\n  razorshell\n  razorwind\n  recover\n  recycle\n  reflect\n  reflecttype\n  refresh\n  relicsong\n  rest\n  retaliate\n  return\n  revelationdance\n  revenge\n  reversal\n  revivalblessing\n  risingvoltage\n  roar\n  roaroftime\n  rockblast\n  rockclimb\n  rockpolish\n  rockslide\n  rocksmash\n  rockthrow\n  rocktomb\n  rockwrecker\n  roleplay\n  rollingkick\n  rollout\n  roost\n  rototiller\n  round\n  ruination\n  sacredfire\n  sacredsword\n  safeguard\n  saltcure\n  sandattack\n  sandsearstorm\n  sandstorm\n  sandtomb\n  sappyseed\n  savagespinout\n  scald\n  scaleshot\n  scaryface\n  scorchingsands\n  scratch\n  screech\n  searingshot\n  searingsunrazesmash\n  secretpower\n  secretsword\n  seedbomb\n  seedflare\n  seismictoss\n  selfdestruct\n  shadowball\n  shadowbone\n  shadowclaw\n  shadowforce\n  shadowpunch\n  shadowsneak\n  shadowstrike\n  sharpen\n  shatteredpsyche\n  shedtail\n  sheercold\n  shellsidearm\n  shellsmash\n  shelltrap\n  shelter\n  shiftgear\n  shockwave\n  shoreup\n  signalbeam\n  silktrap\n  silverwind\n  simplebeam\n  sing\n  sinisterarrowraid\n  sizzlyslide\n  sketch\n  skillswap\n  skittersmack\n  skullbash\n  skyattack\n  skydrop\n  skyuppercut\n  slackoff\n  slam\n  slash\n  sleeppowder\n  sleeptalk\n  sludge\n  sludgebomb\n  sludgewave\n  smackdown\n  smartstrike\n  smellingsalts\n  smog\n  smokescreen\n  snaptrap\n  snarl\n  snatch\n  snipeshot\n  snore\n  snowscape\n  soak\n  softboiled\n  solarbeam\n  solarblade\n  sonicboom\n  soulstealing7starstrike\n  spacialrend\n  spark\n  sparklingaria\n  sparklyswirl\n  spectralthief\n  speedswap\n  spicyextract\n  spiderweb\n  spikecannon\n  spikes\n  spikyshield\n  spinout\n  spiritbreak\n  spiritshackle\n  spite\n  spitup\n  splash\n  splinteredstormshards\n  splishysplash\n  spore\n  spotlight\n  springtidestorm\n  stealthrock\n  steameruption\n  steamroller\n  steelbeam\n  steelroller\n  steelwing\n  stickyweb\n  stockpile\n  stokedsparksurfer\n  stomp\n  stompingtantrum\n  stoneaxe\n  stoneedge\n  storedpower\n  stormthrow\n  strangesteam\n  strength\n  strengthsap\n  stringshot\n  struggle\n  strugglebug\n  stuffcheeks\n  stunspore\n  submission\n  substitute\n  subzeroslammer\n  suckerpunch\n  sunnyday\n  sunsteelstrike\n  supercellslam\n  superfang\n  superpower\n  supersonic\n  supersonicskystrike\n  surf\n  surgingstrikes\n  swagger\n  swallow\n  sweetkiss\n  sweetscent\n  swift\n  switcheroo\n  swordsdance\n  synchronoise\n  synthesis\n  syrupbomb\n  tachyoncutter\n  tackle\n  tailglow\n  tailslap\n  tailwhip\n  tailwind\n  takedown\n  takeheart\n  tarshot\n  taunt\n  tearfullook\n  teatime\n  technoblast\n  tectonicrage\n  teeterdance\n  telekinesis\n  teleport\n  temperflare\n  tenmillionvoltthunderbolt\n  terablast\n  terastarstorm\n  terrainpulse\n  thief\n  thousandarrows\n  thousandwaves\n  thrash\n  throatchop\n  thunder\n  thunderbolt\n  thundercage\n  thunderclap\n  thunderfang\n  thunderouskick\n  thunderpunch\n  thundershock\n  thunderwave\n  tickle\n  tidyup\n  topsyturvy\n  torchsong\n  torment\n  toxic\n  toxicspikes\n  toxicthread\n  trailblaze\n  transform\n  triattack\n  trick\n  trickortreat\n  trickroom\n  triplearrows\n  tripleaxel\n  tripledive\n  triplekick\n  tropkick\n  trumpcard\n  twinbeam\n  twineedle\n  twinkletackle\n  twister\n  upperhand\n  uproar\n  uturn\n  vacuumwave\n  vcreate\n  veeveevolley\n  venomdrench\n  venoshock\n  victorydance\n  vinewhip\n  visegrip\n  vitalthrow\n  voltswitch\n  volttackle\n  wakeupslap\n  waterfall\n  watergun\n  waterpledge\n  waterpulse\n  watershuriken\n  watersport\n  waterspout\n  wavecrash\n  weatherball\n  whirlpool\n  whirlwind\n  wickedblow\n  wickedtorque\n  wideguard\n  wildboltstorm\n  wildcharge\n  willowisp\n  wingattack\n  wish\n  withdraw\n  wonderroom\n  woodhammer\n  workup\n  worryseed\n  wrap\n  wringout\n  xscissor\n  yawn\n  zapcannon\n  zenheadbutt\n  zingzap\n  zippyzap\n}\n\n\"The types in Pokémon\"\nenum TypesEnum {\n  bug\n  dark\n  dragon\n  electric\n  fairy\n  fighting\n  fire\n  flying\n  ghost\n  grass\n  ground\n  ice\n  normal\n  poison\n  psychic\n  rock\n  steel\n  water\n}\n\n\"The variants of why an item or move can be non-standard in the current meta or generation.\"\nenum IsNonStandard {\n  \"When set the item or move is from a past generation. This means it is not available at all in the data of Generation 9.\"\n  Past\n  \"When set the item or move is available within the generation 9 data, however is cannot currently be obtained. It is safe to presume that Gamefreak/Nintendo will add it in later DLC.\"\n  Unobtainable\n  \"When set the item or move is from Smogon's CAP project and is not in the official Nintendo games.\"\n  CAP\n  \"When set the item or move is exclusive to the Let's Go Pikachu / Let's Go Eevee games.\"\n  LetsGoPikachuEevee\n  \"When set the move can exclusively be used Pokémon Sword and Pokémon Shield as it requires Gigantamaxing your Pokémon.\"\n  Gigantamax\n}\n\n\"The Natures in Pokémon\"\nenum NaturesEnum {\n  adamant\n  bashful\n  bold\n  brave\n  calm\n  careful\n  docile\n  gentle\n  hardy\n  hasty\n  impish\n  jolly\n  lax\n  lonely\n  mild\n  modest\n  naive\n  naughty\n  quiet\n  quirky\n  rash\n  relaxed\n  sassy\n  serious\n  timid\n}\n"
  },
  {
    "path": "graphql/resolvers.graphql",
    "content": "type Query {\n  \"Gets the details on a Pokémon ability, using the ability name\"\n  getAbility(\"The ability to look up\" ability: AbilitiesEnum!): Ability!\n\n  \"\"\"\n  Gets details on a Pokémon ability, using a fuzzy search on name\n\n  This can be used to find multiple results based on the query\n\n  You can provide `take` to limit the amount of abilities to return (default: 1), set the offset of where to start with `offset`, and reverse the entire array with `reverse`.\n  \"\"\"\n  getFuzzyAbility(\n    \"Sets the offset where to start\"\n    offset: Int = 0\n\n    \"Return only this many results, starting from the offset\"\n    take: Int = 1\n\n    \"Reverses the dataset before paginating\"\n    reverse: Boolean = false\n\n    \"The ability to fuzzily search\"\n    ability: String!\n  ): [Ability!]!\n\n  \"\"\"\n  Gets details on a single Pokémon based on National Pokédex number\n\n  You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n\n  **Reversal is applied before pagination!**\n  \"\"\"\n  getPokemonByDexNumber(\n    \"Sets the offset for flavor texts from where to start.\"\n    offsetFlavorTexts: Int = 0\n\n    \"Return this many flavour texts, up to the maximum of entries that the requested Pokémon has.\"\n    takeFlavorTexts: Int = 1\n\n    \"Whether to reverse the list of games from which to get the data. By default Generation 1 is considered for `take` first, when setting this to true that is instead Generation 8.\"\n    reverseFlavorTexts: Boolean = true\n\n    \"\"\"\n    The International PokéDex number of the Pokémon to look up.\n    The valid value ranges are (boundaries inclusive) `-5000` to `-5014` and `-72` to `1025`\n    \"\"\"\n    number: Int!\n  ): Pokemon!\n\n  \"\"\"\n  Gets details on a single Pokémon based on species name\n\n  You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n\n  **Reversal is applied before pagination!**\n  \"\"\"\n  getPokemon(\n    \"Sets the offset for flavor texts from where to start.\"\n    offsetFlavorTexts: Int = 0\n\n    \"Return this many flavour texts, up to the maximum of entries that the requested Pokémon has.\"\n    takeFlavorTexts: Int = 1\n\n    \"Whether to reverse the list of games from which to get the data. By default Generation 1 is considered for `take` first, when setting this to true that is instead Generation 8.\"\n    reverseFlavorTexts: Boolean = true\n\n    \"The Pokémon to look up\"\n    pokemon: PokemonEnum!\n  ): Pokemon!\n\n  \"\"\"\n  Gets details on one or more Pokémon based on species name\n\n  You can provide `take` to limit the amount of Pokémon to return (default: 1), set the offset of where to start with `offset`, and reverse the entire array with `reverse`.\n\n  You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n\n  **Reversal is applied before pagination!**\n  \"\"\"\n  getFuzzyPokemon(\n    \"Sets the offset where to start\"\n    offset: Int = 0\n\n    \"Return only this many results, starting from the offset\"\n    take: Int = 1\n\n    \"Reverses the dataset before paginating\"\n    reverse: Boolean = false\n\n    \"The Pokémon to fuzzily search\"\n    pokemon: String!\n\n    \"Sets the offset for flavor texts from where to start.\"\n    offsetFlavorTexts: Int = 0\n\n    \"Return this many flavour texts, up to the maximum of entries that the requested Pokémon has.\"\n    takeFlavorTexts: Int = 1\n\n    \"Whether to reverse the list of games from which to get the data. By default Generation 1 is considered for `take` first, when setting this to true that is instead Generation 8.\"\n    reverseFlavorTexts: Boolean = true\n  ): [Pokemon!]!\n\n  \"\"\"\n  Returns a list of all the known Pokémon.\n\n  For every Pokémon all the data on each requested field is returned.\n\n  **_NOTE:_ To skip all CAP Pokémon, PokéStar Pokémon, Missingno, and 'M (00) provide an `offset` of 89**\n\n  You can provide `take` to limit the amount of Pokémon to return (default: 1), set the offset of where to start with `offset`, and reverse the entire array with `reverse`.\n\n  You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n\n  While the API will currently not rate limit the usage of this query, it may do so in the future.\n\n  It is advisable to cache responses of this query.\n  \"\"\"\n  getAllPokemon(\n    \"Sets the offset where to start\"\n    offset: Int = 0\n\n    \"Return only this many results, starting from the offset\"\n    take: Int = 1469\n\n    \"Reverses the dataset before paginating\"\n    reverse: Boolean = false\n\n    \"Sets the offset for flavor texts from where to start.\"\n    offsetFlavorTexts: Int = 0\n\n    \"Return this many flavour texts, up to the maximum of entries that the requested Pokémon has.\"\n    takeFlavorTexts: Int = 1\n\n    \"Whether to reverse the list of games from which to get the data. By default Generation 1 is considered for `take` first, when setting this to true that is instead Generation 8.\"\n    reverseFlavorTexts: Boolean = true\n  ): [Pokemon!]!\n\n  \"Gets the details on a Pokémon item, using the item name\"\n  getItem(\"The item to look up\" item: ItemsEnum!): Item!\n\n  \"\"\"\n  Gets details on a Pokémon item, using a fuzzy search on name\n\n  This can be used to find multiple results based on the query\n\n  By default only 1 result is returned. You can provide the arguments `take`, `offset`, and `reverse` to modify this behaviour.\n  \"\"\"\n  getFuzzyItem(\n    \"Sets the offset where to start\"\n    offset: Int = 0\n\n    \"Return only this many results, starting from the offset\"\n    take: Int = 1\n\n    \"Reverses the dataset before paginating\"\n    reverse: Boolean = false\n\n    \"The item to fuzzily search\"\n    item: String!\n  ): [Item!]!\n\n  \"\"\"\n  Gets the learnsets for a given Pokémon and move.\n\n  Multiple moves are possible by putting them in an array: `[move1, move2]`.\n\n  You can also apply a generation filter (only results for the given generation will be returned) with the generation argument\n  \"\"\"\n  getLearnset(\n    \"The generation filter to apply\"\n    generation: Int\n\n    \"The moves to match against the Pokémon\"\n    moves: [MovesEnum!]!\n\n    \"The Pokémon for which to get the learnset\"\n    pokemon: PokemonEnum!\n  ): Learnset!\n\n  \"\"\"\n  Gets the learnset for a given Pokémon and move.\n\n  A fuzzy search is performed to find a matching Pokémon and move\n\n  Multiple moves are possible by putting them in an array: `[move1, move2]`.\n\n  You can also apply a generation filter (only results for the given generation will be returned) with the generation argument\n  \"\"\"\n  getFuzzyLearnset(\n    \"The generation filter to apply\"\n    generation: Int\n\n    \"The moves to match against the Pokémon\"\n    moves: [String!]!\n\n    \"The Pokémon for which to get the learnset\"\n    pokemon: String!\n  ): Learnset!\n\n  \"Gets the details on a Pokémon move, using the move name\"\n  getMove(\"The move to look up\" move: MovesEnum!): Move!\n\n  \"\"\"\n  Gets details on a Pokémon move, using a fuzzy search on name\n\n  This can be used to find multiple results based on the query\n\n  By default only 1 result is returned. You can provide the arguments `take`, \"offset\", and \"reverse\" to modify this behaviour.\n  \"\"\"\n  getFuzzyMove(\n    \"Sets the offset where to start\"\n    offset: Int = 0\n\n    \"Return only this many results, starting from the offset\"\n    take: Int = 1\n\n    \"Reverses the dataset before paginating\"\n    reverse: Boolean = false\n\n    \"The move to fuzzily search\"\n    move: String!\n  ): [Move!]!\n\n  \"Gets the type matchup data for the given type or types\"\n  getTypeMatchup(\"The primary type to check\" primaryType: TypesEnum!, \"The secondary type to check\" secondaryType: TypesEnum): TypeMatchup!\n\n  \"Gets the details of a specific Nature\"\n  getNature(\"The nature to look up\" nature: NaturesEnum!): Nature!\n\n  \"\"\"\n  Returns a list of all the Natures in Pokémon.\n\n  For every Nature all the data on each requested field is returned.\n  \"\"\"\n  getAllNatures: [Nature!]!\n}\n"
  },
  {
    "path": "graphql/schema.graphql",
    "content": "\"A single Pokémon ability entry\"\ntype Ability {\n  \"The key of the ability as stored in the API\"\n  key: AbilitiesEnum!\n\n  \"Bulbapedia page for an ability\"\n  bulbapediaPage: String!\n\n  \"The long description for an ability\"\n  desc: String\n\n  \"Whether this ability has effects outside of battle, and if so what the effect is\"\n  isFieldAbility: String\n\n  \"Whether an ability is non-standard, and if it is why\"\n  isNonstandard: String\n\n  \"The name for an ability\"\n  name: String!\n\n  \"\"\"\n  The Pokémon that have this ability.\n  Note that when querying this field and nesting deep into Pokemon.abilities, that the nested list\n  will not have any values to prevent infinite looping data.\n  \"\"\"\n  pokemonThatHaveThisAbility: [Pokemon]!\n\n  \"Serebii page for an ability\"\n  serebiiPage: String!\n\n  \"The short description for an ability\"\n  shortDesc: String!\n\n  \"Smogon page for an ability\"\n  smogonPage: String!\n}\n\n\"A Pokémon's entry\"\ntype Pokemon {\n  \"The key of the Pokémon as stored in the API\"\n  key: PokemonEnum!\n\n  \"The abilities for a Pokémon\"\n  abilities: Abilities!\n\n  \"The back sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive\"\n  backSprite: String!\n\n  \"Base form if this entry describes an alternate form\"\n  baseForme: String\n\n  \"Base species if this entry describes a special form\"\n  baseSpecies: String\n\n  \"Base stats for a Pokémon\"\n  baseStats: Stats!\n\n  \"The total of all base stats for a Pokémon\"\n  baseStatsTotal: Int!\n\n  \"Bulbapedia page for a Pokémon\"\n  bulbapediaPage: String!\n\n  \"The catch rate data for a Pokémon\"\n  catchRate: CatchRate\n\n  \"The classification of a Pokémon as listed in the Pokedex\"\n  classification: String\n\n  \"The respelling of the name of the Pokémon\"\n  respelling: String\n\n  \"The International Phonetic Alphabet (IPA) representation of the name of the Pokémon\"\n  ipa: String\n\n  \"The colour of a Pokémon as listed in the Pokedex\"\n  color: String!\n\n  \"Any other *cosmetic* forms for a Pokémon, distinguished from other formes as cosmetic formes only change the look of the Pokémon, while other formes might also change an ability, move set or other data.\"\n  cosmeticFormes: [String!]\n\n  \"An URL to an mp3 file of the Pokémon's cry.\"\n  cry: String\n\n  \"The egg groups a Pokémon is in\"\n  eggGroups: [String!]\n\n  \"The evolution level, or special method, for a Pokémon\"\n  evolutionLevel: String\n\n  \"The evolutions for a Pokémon, if any\"\n  evolutions: [Pokemon!]\n\n  \"EV yields for a Pokémon\"\n  evYields: EvYields!\n\n  \"The flavor texts for a Pokémon\"\n  flavorTexts: [Flavor!]!\n\n  \"The form identifier of a Pokémon\"\n  forme: String\n\n  \"The single letter identifier of the form\"\n  formeLetter: String\n\n  \"The gender data for a Pokémon\"\n  gender: Gender!\n\n  \"The height of a Pokémon in meters\"\n  height: Float!\n\n  \"Whether the egg of a Pokémon is obtainable\"\n  isEggObtainable: Boolean!\n\n  \"The levelling rate of a Pokémon\"\n  levellingRate: String\n\n  \"The maximum number of steps required for the egg of a Pokémon to hatch\"\n  maximumHatchTime: Int\n\n  \"The minimum number of steps required for the egg of a Pokémon to hatch\"\n  minimumHatchTime: Int\n\n  \"The dex number for a Pokémon\"\n  num: Int!\n\n  \"The learnset for this pokemon\"\n  learnsets: GenerationalPokemonLearnset\n\n  \"Any other forms for a Pokémon\"\n  otherFormes: [String!]\n\n  \"The preevolutions for a Pokémon, if any\"\n  preevolutions: [Pokemon!]\n\n  \"Serebii page for a Pokémon\"\n  serebiiPage: String!\n\n  \"The shiny back sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive\"\n  shinyBackSprite: String!\n\n  \"The shiny sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive\"\n  shinySprite: String!\n\n  \"Smogon page for a Pokémon\"\n  smogonPage: String!\n\n  \"The smogon tier a Pokémon falls under\"\n  smogonTier: String!\n\n  \"The species name for a Pokémon\"\n  species: String!\n\n  \"The sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive\"\n  sprite: String!\n\n  \"The types for a Pokémon\"\n  types: [PokemonType!]!\n\n  \"The weight of a Pokémon in kilograms\"\n  weight: Float!\n\n  \"Whether this Pokémon is a mythical Pokémon. The list is based on what is provided by Bulbapedia.\"\n  mythical: Boolean!\n\n  \"Whether this Pokémon is a legendary Pokémon. The list is based on what is provided by Bulbapedia.\"\n  legendary: Boolean!\n}\n\n\"The type of a Pokémon and that types matchup\"\ntype PokemonType {\n  \"The name of the typ\"\n  name: String!\n\n  \"The type matchup for this type\"\n  matchup: TypeMatchup!\n}\n\n\"A Pokémon's abilities entry\"\ntype Abilities {\n  \"The first ability of a Pokémon\"\n  first: Ability!\n\n  \"The hidden ability of a Pokémon\"\n  hidden: Ability\n\n  \"The second ability of a Pokémon\"\n  second: Ability\n\n  \"The special ability of a Pokémon\"\n  special: Ability\n}\n\n\"A Pokémon's stats\"\ntype Stats {\n  \"The base attack stat of a Pokémon\"\n  attack: Int!\n\n  \"The base defense stat of a Pokémon\"\n  defense: Int!\n\n  \"The base HP stat of a pokémon\"\n  hp: Int!\n\n  \"The base special attack stat of a Pokémon\"\n  specialattack: Int!\n\n  \"The base special defense stat of a Pokémon\"\n  specialdefense: Int!\n\n  \"The base speed stat of a Pokémon\"\n  speed: Int!\n}\n\n\"A Pokémon catch rate entry\"\ntype CatchRate {\n  \"The base catch rate for a Pokémon that will be used to calculate the final catch rate\"\n  base: Int!\n\n  \"The chance to capture a Pokémon when an ordinary Poké Ball is thrown at full health without any status condition\"\n  percentageWithOrdinaryPokeballAtFullHealth: String!\n}\n\n\"A Pokémon's EV yields\"\ntype EvYields {\n  \"The attack EV yield of a Pokémon\"\n  attack: Int!\n\n  \"The defense EV yield of a Pokémon\"\n  defense: Int!\n\n  \"The HP EV yield of a pokémon\"\n  hp: Int!\n\n  \"The special attack EV yield of a Pokémon\"\n  specialattack: Int!\n\n  \"The special defense EV yield of a Pokémon\"\n  specialdefense: Int!\n\n  \"The speed EV yield of a Pokémon\"\n  speed: Int!\n}\n\n\"A flavor text entry for a Pokémon\"\ntype Flavor {\n  \"The flavor text for this entry\"\n  flavor: String!\n\n  \"The name of the game this flavor text is from\"\n  game: String!\n}\n\n\"A Pokémon gender ratio entry\"\ntype Gender {\n  \"The percentage for female occurrences\"\n  female: String!\n\n  \"The percentage of male occurrences\"\n  male: String!\n}\n\n\"A single item entry\"\ntype Item {\n  \"The key of the item as stored in the API\"\n  key: ItemsEnum!\n\n  \"Bulbapedia page for an item\"\n  bulbapediaPage: String!\n\n  \"The long description for an item\"\n  desc: String!\n\n  \"The generation in which this item was introduced\"\n  generationIntroduced: Int!\n\n  \"Whether an item is non-standard, and if it is why\"\n  isNonstandard: String\n\n  \"The name for an item\"\n  name: String!\n\n  \"Serebii page for an item\"\n  serebiiPage: String!\n\n  \"The long description for an item\"\n  shortDesc: String\n\n  \"Smogon page for an item\"\n  smogonPage: String\n\n  \"The sprite for an item\"\n  sprite: String!\n}\n\n\"The learnset for each Pokémon split by generation\"\ntype GenerationalPokemonLearnset {\n  \"The learnset of this Pokémon in Generation 8\"\n  generation8: PokemonLearnset!\n  \"The learnset of this Pokémon in Generation 7\"\n  generation7: PokemonLearnset!\n  \"The learnset of this Pokémon in Generation 6\"\n  generation6: PokemonLearnset!\n  \"The learnset of this Pokémon in Generation 5\"\n  generation5: PokemonLearnset!\n  \"The learnset of this Pokémon in Generation 4\"\n  generation4: PokemonLearnset!\n  \"The learnset of this Pokémon in Generation 3\"\n  generation3: PokemonLearnset!\n}\n\ntype PokemonLearnset {\n  \"The moves that are exclusively learned in the Unova Dream World\"\n  dreamworldMoves: [LearnsetMove!]\n\n  \"The moves that can be passed as egg moves\"\n  eggMoves: [LearnsetMove!]\n\n  \"The moves that are exclusive to event variants of the Pokémon\"\n  eventMoves: [LearnsetMove!]\n\n  \"The moves that can be learned through levelling up\"\n  levelUpMoves: [LearnsetLevelUpMove!]\n\n  \"The moves that can be learned from a Technical Machine or Technical Record\"\n  tmMoves: [LearnsetMove!]\n\n  \"The moves that can be learned from a move tutor\"\n  tutorMoves: [LearnsetMove!]\n\n  \"The moves that can be learned through virtual console transfer\"\n  virtualTransferMoves: [LearnsetMove!]\n}\n\n\"A learnset entry\"\ntype Learnset {\n  \"The back sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive\"\n  backSprite: String!\n\n  \"The PokéDex colour for the Pokémon\"\n  color: String!\n\n  \"The key of the Pokémon as stored in the API\"\n  pokemonKey: PokemonEnum!\n\n  \"The dex number for a Pokémon\"\n  num: Int!\n\n  \"The shiny back sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive\"\n  shinyBackSprite: String!\n\n  \"The shiny sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive\"\n  shinySprite: String!\n\n  \"The species name for a Pokémon\"\n  species: String!\n\n  \"The sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive\"\n  sprite: String!\n\n  \"The moves that are exclusively learned in the Unova Dream World\"\n  dreamworldMoves: [LearnsetMove!]\n\n  \"The moves that can be passed as egg moves\"\n  eggMoves: [LearnsetMove!]\n\n  \"The moves that are exclusive to event variants of the Pokémon\"\n  eventMoves: [LearnsetMove!]\n\n  \"The moves that can be learned through levelling up\"\n  levelUpMoves: [LearnsetLevelUpMove!]\n\n  \"The moves that can be learned from a Technical Machine or Technical Record\"\n  tmMoves: [LearnsetMove!]\n\n  \"The moves that can be learned from a move tutor\"\n  tutorMoves: [LearnsetMove!]\n\n  \"The moves that can be learned through virtual console transfer\"\n  virtualTransferMoves: [LearnsetMove!]\n}\n\n\"A learnset move entry\"\ntype LearnsetMove {\n  \"The generation in which this pokémon learned the move this way\"\n  generation: Int!\n\n  \"The move\"\n  move: Move!\n}\n\n\"A learnset level up move entry\"\ntype LearnsetLevelUpMove {\n  \"The generation in which this pokémon learned the move this way\"\n  generation: Int!\n\n  \"The move\"\n  move: Move!\n\n  \"The level at which the move is learned\"\n  level: Int!\n}\n\n\"A single Pokémon move entry\"\ntype Move {\n  \"The key of the move as stored in the API\"\n  key: MovesEnum!\n\n  \"The accuracy for a move\"\n  accuracy: Int!\n\n  \"The base power for a move\"\n  basePower: String!\n\n  \"Bulbapedia page for a move\"\n  bulbapediaPage: String!\n\n  \"The category for a move\"\n  category: String!\n\n  \"The contest type for a move\"\n  contestType: String\n\n  \"The long description for a move\"\n  desc: String\n\n  \"Whether this move can be used outside of battle, and if it can what the effect of the field move is\"\n  isFieldMove: String\n\n  \"Whether this move is a G-MAX move, and if it is which Gigantamaxed Pokémon can use it\"\n  isGMax: String\n\n  \"Whether a move is non-standard, and if it is why\"\n  isNonstandard: String\n\n  \"Whether this move is a Z-Move, and if it is the Z-Crystal required to trigger it\"\n  isZ: String\n\n  \"The power this move will have when used with its Max Move equivalent\"\n  maxMovePower: Int\n\n  \"The name for a move\"\n  name: String!\n\n  \"The power points for a move\"\n  pp: Int!\n\n  \"The priority for a move\"\n  priority: Int!\n\n  \"Serebii page for a move\"\n  serebiiPage: String!\n\n  \"The short description for a move\"\n  shortDesc: String!\n\n  \"Smogon page for a move\"\n  smogonPage: String!\n\n  \"The target for a move\"\n  target: String!\n\n  \"The type for a move\"\n  type: String!\n\n  \"The power this move will have when used with its Z-move equivalent\"\n  zMovePower: Int!\n}\n\n\"The type matchups for any one or two given types\"\ntype TypeMatchup {\n  \"The type matchups when attacking\"\n  attacking: TypeEffectiveness!\n\n  \"The type matchups when defending\"\n  defending: TypeEffectiveness!\n}\n\n\"A type matchup entry\"\ntype TypeEffectiveness {\n  \"The types with 4x effectiveness\"\n  doubleEffectiveTypes: [String!]!\n\n  \"The types with 0.25x effectiveness\"\n  doubleResistedTypes: [String!]!\n\n  \"The types with 2x effectiveness\"\n  effectiveTypes: [String!]!\n\n  \"The types with 0x effectiveness\"\n  effectlessTypes: [String!]!\n\n  \"The types with 1x effectiveness\"\n  normalTypes: [String!]!\n\n  \"The types with 0.5x effectiveness\"\n  resistedTypes: [String!]!\n}\n\n\"A single Nature entry\"\ntype Nature {\n  \"The key of the nature as stored in the API\"\n  key: NaturesEnum!\n\n  \"The name of a nature\"\n  name: String!\n\n  \"The stat the nature increases by 10%\"\n  increasedStat: String\n\n  \"The stat the nature decreases by 10%\"\n  decreasedStat: String\n\n  \"The flavor of food the nature prefers\"\n  preferredFlavor: String\n\n  \"The flavor of food the nature dislikes\"\n  dislikedFlavor: String\n}\n"
  },
  {
    "path": "package.json",
    "content": "{\n  \"name\": \"@favware/graphql-pokemon\",\n  \"version\": \"8.8.1\",\n  \"description\": \"Extensive Pokemon GraphQL API\",\n  \"author\": \"@favware\",\n  \"license\": \"MIT\",\n  \"type\": \"module\",\n  \"main\": \"dist/codegen/cjs/graphql-pokemon.cjs\",\n  \"module\": \"dist/codegen/esm/graphql-pokemon.mjs\",\n  \"types\": \"dist/codegen/cjs/graphql-pokemon.d.cts\",\n  \"exports\": {\n    \".\": {\n      \"import\": {\n        \"types\": \"./dist/codegen/esm/graphql-pokemon.d.ts\",\n        \"default\": \"./dist/codegen/esm/graphql-pokemon.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/codegen/cjs/graphql-pokemon.d.cts\",\n        \"default\": \"./dist/codegen/cjs/graphql-pokemon.cjs\"\n      }\n    },\n    \"./utilities\": {\n      \"import\": {\n        \"types\": \"./dist/utilities/esm/index.d.ts\",\n        \"default\": \"./dist/utilities/esm/index.mjs\"\n      },\n      \"require\": {\n        \"types\": \"./dist/utilities/cjs/index.d.cts\",\n        \"default\": \"./dist/utilities/cjs/index.cjs\"\n      }\n    }\n  },\n  \"sideEffects\": false,\n  \"imports\": {\n    \"#assets/*\": \"./api/lib/assets/*.js\",\n    \"#jsonAssets/*\": \"./api/lib/assets/*.json\",\n    \"#dexdata/*\": \"./api/lib/assets/pokedex-data/*.js\",\n    \"#resolvers/*\": \"./api/lib/resolvers/*.js\",\n    \"#types/*\": \"./api/lib/types/*.js\",\n    \"#utils/*\": \"./api/lib/utils/*.js\",\n    \"#validations/*\": \"./api/lib/validations/*.js\",\n    \"#mappers/*\": \"./api/lib/mappers/*.js\",\n    \"#root/*\": \"./api/*.js\"\n  },\n  \"homepage\": \"https://graphql-pokemon.js.org/\",\n  \"scripts\": {\n    \"lint\": \"eslint src tests scripts --ext ts --fix\",\n    \"format\": \"prettier --write --log-level=warn \\\"{src,tests,scripts}/**/*.{ts,json}\\\"\",\n    \"test\": \"vitest run\",\n    \"typecheck\": \"tsc -b src && tsc -b tests\",\n    \"start\": \"node --enable-source-maps api/index.js\",\n    \"build\": \"tsup --onSuccess \\\"yarn tsx scripts/on-build-success.ts\\\"\",\n    \"watch\": \"tsup --watch --onSuccess \\\"yarn tsx scripts/on-build-success.ts\\\"\",\n    \"docs\": \"yarn magidoc generate -f ./docs/magidoc.mjs\",\n    \"dev\": \"yarn build && yarn start\",\n    \"clean\": \"rimraf codegen/ dist/ api/\",\n    \"bump\": \"cliff-jumper\",\n    \"check-update\": \"cliff-jumper --dry-run\",\n    \"package\": \"graphql-codegen && npm-run-all -s \\\"package:*\\\"\",\n    \"package:replace-invalid-code\": \"replace-in-file /\\\\}\\\\;/g \\\"}\\\" codegen/graphql-pokemon.ts --isRegex\",\n    \"package:compile\": \"tsup --config tsup.config-package.ts\",\n    \"tsx\": \"tsx --tsconfig ./scripts/tsconfig.json\",\n    \"au:tiers\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/asset-updaters/tiers-updater.ts\",\n    \"au:learnsets\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/asset-updaters/learnsets-updater.ts\",\n    \"au:testdata\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/update-test-files.ts\",\n    \"au:flavors\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/flavor-text-updater.ts\",\n    \"au:classifications\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/classification-updater/classification-updater.ts\",\n    \"au:ipa\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/ipa-name-updater/ipa-updater.ts\",\n    \"au:abilities\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/asset-updaters/abilities-updater.ts\",\n    \"au:items\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/asset-updaters/items-updater.ts\",\n    \"au:moves\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/asset-updaters/moves-updater.ts\",\n    \"au:cries\": \"yarn tsx ./scripts/data-gen-scripts/scripted-updaters/cries-updater/cry-updater.ts\"\n  },\n  \"dependencies\": {\n    \"graphql\": \"16.13.1\"\n  },\n  \"devDependencies\": {\n    \"@apollo/server\": \"^5.4.0\",\n    \"@as-integrations/koa\": \"^1.1.1\",\n    \"@commitlint/cli\": \"^20.5.0\",\n    \"@commitlint/config-conventional\": \"^20.5.0\",\n    \"@discordjs/collection\": \"^2.1.1\",\n    \"@favware/cliff-jumper\": \"^6.0.0\",\n    \"@graphql-codegen/cli\": \"^6.2.1\",\n    \"@graphql-codegen/schema-ast\": \"^5.0.1\",\n    \"@graphql-codegen/typescript\": \"^5.0.9\",\n    \"@graphql-codegen/typescript-resolvers\": \"^5.1.7\",\n    \"@koa/cors\": \"^5.0.0\",\n    \"@magidoc/cli\": \"^6.3.0\",\n    \"@sapphire/eslint-config\": \"^5.0.6\",\n    \"@sapphire/fetch\": \"^3.0.5\",\n    \"@sapphire/prettier-config\": \"^2.0.0\",\n    \"@sapphire/shapeshift\": \"^4.0.0\",\n    \"@sapphire/timestamp\": \"^1.0.5\",\n    \"@sapphire/ts-config\": \"^5.0.3\",\n    \"@skyra/jaro-winkler\": \"^1.1.1\",\n    \"@swc/core\": \"1.15.18\",\n    \"@types/async\": \"^3.2.25\",\n    \"@types/cheerio\": \"^1.0.0\",\n    \"@types/koa\": \"^3.0.1\",\n    \"@types/koa-bodyparser\": \"^4.3.13\",\n    \"@types/koa__cors\": \"^5.0.1\",\n    \"@types/node\": \"^24.12.0\",\n    \"@typescript-eslint/eslint-plugin\": \"^7.18.0\",\n    \"@typescript-eslint/parser\": \"^7.18.0\",\n    \"@vitest/coverage-v8\": \"^4.1.0\",\n    \"async\": \"^3.2.6\",\n    \"cheerio\": \"^1.2.0\",\n    \"colorette\": \"^2.0.20\",\n    \"cz-conventional-changelog\": \"^3.3.0\",\n    \"eslint\": \"^8.57.1\",\n    \"eslint-config-prettier\": \"^10.1.8\",\n    \"eslint-plugin-prettier\": \"^5.5.5\",\n    \"graphql-tag\": \"^2.12.6\",\n    \"json-stream-stringify\": \"^3.1.6\",\n    \"koa\": \"^3.1.2\",\n    \"koa-bodyparser\": \"^4.4.1\",\n    \"lint-staged\": \"^16.4.0\",\n    \"npm-run-all2\": \"^8.0.4\",\n    \"prettier\": \"^3.8.1\",\n    \"replace-in-file\": \"^8.4.0\",\n    \"rimraf\": \"^6.1.3\",\n    \"tsup\": \"^8.5.1\",\n    \"tsx\": \"^4.21.0\",\n    \"typescript\": \"~5.9.3\",\n    \"vitest\": \"^4.1.0\"\n  },\n  \"resolutions\": {\n    \"graphql@npm:16.9.0\": \"patch:graphql@npm%3A16.11.0#~/.yarn/patches/graphql-npm-16.11.0-836e6ade28.patch\",\n    \"graphql@npm:16.11.0\": \"patch:graphql@npm%3A16.11.0#~/.yarn/patches/graphql-npm-16.11.0-836e6ade28.patch\",\n    \"graphql@npm:16.12.0\": \"patch:graphql@npm%3A16.11.0#~/.yarn/patches/graphql-npm-16.11.0-836e6ade28.patch\",\n    \"graphql@npm:16.13.1\": \"patch:graphql@npm%3A16.11.0#~/.yarn/patches/graphql-npm-16.11.0-836e6ade28.patch\"\n  },\n  \"files\": [\n    \"dist/\",\n    \"graphql/\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/favware/graphql-pokemon.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/favware/graphql-pokemon/issues\"\n  },\n  \"keywords\": [\n    \"favware\",\n    \"typescript\",\n    \"ts\",\n    \"yarn\",\n    \"graphql\"\n  ],\n  \"commitlint\": {\n    \"extends\": [\n      \"@commitlint/config-conventional\"\n    ]\n  },\n  \"lint-staged\": {\n    \"*\": \"prettier --ignore-unknown --write\",\n    \"*.{mjs,js,ts}\": \"eslint --fix --ext mjs,js,ts\"\n  },\n  \"config\": {\n    \"commitizen\": {\n      \"path\": \"./node_modules/cz-conventional-changelog\"\n    }\n  },\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"packageManager\": \"yarn@4.12.0\",\n  \"volta\": {\n    \"node\": \"24.14.0\"\n  }\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/data-injector.ts",
    "content": "import { readFile } from 'node:fs/promises';\nimport { entries } from '../../src/lib/assets/pokedex-data/gen9.js';\nimport { dataToClipboard } from './data-to-clipboard.js';\nimport { sortObjectByKey } from './map-data-key-sorter.js';\n\nconst pathToFile = new URL('./sample.json', import.meta.url);\nconst file = await readFile(pathToFile, { encoding: 'utf-8' });\nconst partialBulbaData: Array<Record<string, string>> = JSON.parse(file);\n\nfunction findPokemon(pokemon: string) {\n  return partialBulbaData.find((entry) => entry.species === pokemon);\n}\n\nconst newMap = new Map();\n\nfor (let [species, data] of entries.values()) {\n  Reflect.deleteProperty(data, 'key');\n\n  const pokemon = findPokemon(species);\n\n  if (pokemon) {\n    data.genderRatio = pokemon.genderRatio;\n    data.evYields = {} as any;\n    data.isEggObtainable = pokemon.isEggObtainable;\n    data.catchRate = pokemon.catchRate;\n    data.levellingRate = pokemon.levellingRate as any;\n    data.minimumHatchTime = pokemon.minimumHatchTime;\n  }\n\n  data = sortObjectByKey(data);\n\n  newMap.set(species, data);\n}\n\ndataToClipboard([...newMap.entries()]);\n"
  },
  {
    "path": "scripts/data-gen-scripts/data-key-checker.ts",
    "content": "import _ from 'lodash';\nimport { entries } from '../../src/lib/assets/pokedex-data/gen9.js';\nimport { dataToClipboard } from './data-to-clipboard.js';\n\nconst dexEntryKeys = [\n  'abilities',\n  'aliases',\n  'baseForme',\n  'baseSpecies',\n  'baseStats',\n  'catchRate',\n  'color',\n  'cosmeticFormes',\n  'eggGroups',\n  'evoLevel',\n  'evos',\n  'evYields',\n  'forme',\n  'formeLetter',\n  'genderRatio',\n  'heightm',\n  'isEggObtainable',\n  'key',\n  'levellingRate',\n  'minimumHatchTime',\n  'num',\n  'otherFormes',\n  'prevo',\n  'specialBackSprite',\n  'specialBulbapediaUrl',\n  'specialShinyBackSprite',\n  'specialShinySprite',\n  'specialSprite',\n  'species',\n  'types',\n  'weightkg'\n];\n\nconst newMap = new Map();\n\nfor (const [species, data] of entries.values()) {\n  const missingKeys = _.xorWith([...Object.keys(data)], dexEntryKeys);\n\n  newMap.set(species, missingKeys);\n}\n\ndataToClipboard([...newMap.entries()]);\n"
  },
  {
    "path": "scripts/data-gen-scripts/data-to-clipboard.ts",
    "content": "import { execFile } from 'node:child_process';\nimport { inspect } from 'node:util';\n\nexport function dataToClipboard<T>(data: T): void {\n  if (process.platform === 'darwin') {\n    execFile('pbcopy').stdin?.end(\n      inspect(data, {\n        depth: Infinity,\n        maxArrayLength: Infinity,\n        showHidden: false\n      })\n    );\n  } else if (process.platform === 'win32') {\n    execFile('clippy', ['--copy']).stdin?.end(\n      inspect(data, {\n        depth: Infinity,\n        maxArrayLength: Infinity,\n        showHidden: false\n      })\n    );\n  } else {\n    throw new Error('Unsupported platform');\n  }\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/enum-key-collector.ts",
    "content": "import { items as data } from '../../src/lib/assets/items.js';\nimport { dataToClipboard } from './data-to-clipboard.js';\n\nconst keys: string[] = [];\n\nfor (const [, entry] of data.entries()) {\n  keys.push(entry.key);\n}\n\ndataToClipboard(keys);\n"
  },
  {
    "path": "scripts/data-gen-scripts/map-data-key-sorter.ts",
    "content": "import { Collection } from '@discordjs/collection';\nimport { moves as data } from '../../src/lib/assets/moves.js';\nimport { sortObjectByKey } from '../utils.js';\nimport { dataToClipboard } from './data-to-clipboard.js';\n\nconst dataSortedKeys = data.sort((_, __, c, d) => {\n  if (c < d) {\n    return -1;\n  }\n\n  if (c > d) {\n    return 1;\n  }\n\n  return 0;\n});\n\nconst finalCollection = new Collection<string, any>();\n\nfor (let [entryKey, entryData] of dataSortedKeys.entries()) {\n  Reflect.deleteProperty(entryData, 'key');\n\n  entryData = sortObjectByKey(entryData);\n\n  finalCollection.set(entryKey, entryData);\n}\n\ndataToClipboard([...finalCollection.entries()]);\n"
  },
  {
    "path": "scripts/data-gen-scripts/sample.json",
    "content": "[]\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/asset-updaters/abilities-updater.ts",
    "content": "import { abilities as currentAbilities } from '#assets/abilities.js';\nimport type { PokemonTypes } from '#assets/pokemon-source.js';\nimport { IsNonStandard } from '#utils/isNonStandardEnum.js';\nimport { objectEntries } from '@sapphire/utilities';\nimport {\n  importFileFromWeb,\n  inspectData,\n  replaceEnumLikeValues,\n  replacePokeWithAccentedPoke,\n  sortObjectByKey,\n  writeDataToFileAndPrettify\n} from '../../../utils.js';\n\nconst { Abilities } = await importFileFromWeb<{ Abilities: { [abilityName: string]: AbilityData } }>({\n  url: 'https://raw.githubusercontent.com/smogon/pokemon-showdown/master/data/abilities.ts',\n  temporaryFileName: 'abilities.js'\n});\n\nconst { AbilitiesText } = await importFileFromWeb<{ AbilitiesText: { [abilityName: string]: AbilityText } }>({\n  url: 'https://raw.githubusercontent.com/smogon/pokemon-showdown/master/data/text/abilities.ts',\n  temporaryFileName: 'abilities-texts.js'\n});\n\nconst abilitiesDataEntries = objectEntries(Abilities);\nconst abilitiesTextEntries = objectEntries(AbilitiesText);\n\nconst newMap = new Map();\n\nfor (const [key, data] of currentAbilities.entries()) {\n  Reflect.deleteProperty(data, 'key');\n\n  const abilityFromData = abilitiesDataEntries.find(([abilityKey]) => abilityKey === key)?.at(1) as AbilityData | undefined;\n  const abilityFromText = abilitiesTextEntries.find(([abilityTextKey]) => abilityTextKey === key)?.at(1) as AbilityText | undefined;\n\n  if (abilityFromData) {\n    if (abilityFromData.isNonstandard === 'Past') {\n      data.isNonstandard = IsNonStandard.Past;\n    } else if (abilityFromData.isNonstandard === 'CAP') {\n      data.isNonstandard = IsNonStandard.Cap;\n    } else if (abilityFromData.isNonstandard === 'Unobtainable') {\n      data.isNonstandard = IsNonStandard.Unobtainable;\n    } else if (abilityFromData.isNonstandard === 'LGPE') {\n      data.isNonstandard = IsNonStandard.LetsGoPikachuEevee;\n    } else if (abilityFromData.isNonstandard === 'Gigantamax') {\n      data.isNonstandard = IsNonStandard.Gigantamax;\n    } else {\n      Reflect.deleteProperty(data, 'isNonstandard');\n    }\n\n    data.name = abilityFromData.name;\n  }\n\n  if (abilityFromText) {\n    data.shortDesc = replacePokeWithAccentedPoke(abilityFromText.shortDesc);\n\n    if (abilityFromText.desc) {\n      data.desc = replacePokeWithAccentedPoke(abilityFromText.desc);\n    }\n  }\n\n  newMap.set(key, sortObjectByKey(data));\n}\n\nfor (const [key, abilityFromData] of abilitiesDataEntries) {\n  // Skip if the ability is already in the map\n  if (newMap.has(key)) continue;\n\n  const abilityFromText = abilitiesTextEntries.find(([abilityTextKey]) => abilityTextKey === key)?.at(1) as AbilityText | undefined;\n\n  if (!abilityFromText) {\n    console.error(`Missing ability text for ${key}`);\n    continue;\n  }\n\n  const data: PokemonTypes.Ability = {\n    shortDesc: replacePokeWithAccentedPoke(abilityFromText.shortDesc),\n    name: abilityFromData.name\n  };\n\n  if (abilityFromData.isNonstandard === 'Past') {\n    data.isNonstandard = IsNonStandard.Past;\n  } else if (abilityFromData.isNonstandard === 'CAP') {\n    data.isNonstandard = IsNonStandard.Cap;\n  } else if (abilityFromData.isNonstandard === 'Unobtainable') {\n    data.isNonstandard = IsNonStandard.Unobtainable;\n  } else if (abilityFromData.isNonstandard === 'LGPE') {\n    data.isNonstandard = IsNonStandard.LetsGoPikachuEevee;\n  } else if (abilityFromData.isNonstandard === 'Gigantamax') {\n    data.isNonstandard = IsNonStandard.Gigantamax;\n  }\n\n  if (abilityFromText.desc) {\n    data.desc = replacePokeWithAccentedPoke(abilityFromText.desc);\n  }\n\n  newMap.set(key, sortObjectByKey(data));\n}\n\nconst prependContent = [\n  \"import type { PokemonTypes } from '#assets/pokemon-source';\",\n  \"import { IsNonStandard } from '#utils/isNonStandardEnum';\",\n  \"import { Collection } from '@discordjs/collection';\",\n  '',\n  '/** The abilities in Pokémon */',\n  'export const abilities = new Collection<string, PokemonTypes.Ability>('\n].join('\\n');\nconst appendContent = [\n  ');', //\n  '',\n  'for (const [key, value] of abilities.entries()) {',\n  '\\tvalue.key = key;',\n  '}',\n  ''\n].join('\\n');\n\nconst content = replaceEnumLikeValues(inspectData([...newMap.entries()]));\n\nawait writeDataToFileAndPrettify(prependContent + content + appendContent, '#assets/abilities.js');\n\ninterface AbilityData {\n  isNonstandard?: string;\n  name: string;\n}\n\ninterface AbilityText {\n  name: string;\n  desc?: string;\n  shortDesc: string;\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/asset-updaters/items-updater.ts",
    "content": "import { items as currentItems } from '#assets/items.js';\nimport type { PokemonTypes } from '#assets/pokemon-source.js';\nimport { IsNonStandard } from '#utils/isNonStandardEnum.js';\nimport {\n  importFileFromWeb,\n  inspectData,\n  replaceEnumLikeValues,\n  replacePokeWithAccentedPoke,\n  sortObjectByKey,\n  writeDataToFileAndPrettify\n} from '../../../utils.js';\n\nconst { Items } = await importFileFromWeb<{ Items: { [itemName: string]: ItemData } }>({\n  url: 'https://raw.githubusercontent.com/smogon/pokemon-showdown/master/data/items.ts',\n  temporaryFileName: 'items.js'\n});\n\nconst { ItemsText } = await importFileFromWeb<{ ItemsText: { [itemName: string]: ItemText } }>({\n  url: 'https://raw.githubusercontent.com/smogon/pokemon-showdown/master/data/text/items.ts',\n  temporaryFileName: 'item-texts.js'\n});\n\nconst itemsDataEntries = Object.entries<ItemData>(Items);\nconst itemsTextEntries = Object.entries<ItemText>(ItemsText);\n\nconst newMap = new Map();\n\nfor (const [key, data] of currentItems.entries()) {\n  Reflect.deleteProperty(data, 'key');\n\n  const itemFromData = itemsDataEntries.find(([itemKey]) => itemKey === key)?.at(1) as ItemData;\n  const itemFromText = itemsTextEntries.find(([itemTextKey]) => itemTextKey === key)?.at(1) as ItemText;\n\n  if (itemFromData) {\n    if (itemFromData.isNonstandard === 'Past') {\n      data.isNonstandard = IsNonStandard.Past;\n    } else if (itemFromData.isNonstandard === 'CAP') {\n      data.isNonstandard = IsNonStandard.Cap;\n    } else if (itemFromData.isNonstandard === 'Unobtainable') {\n      data.isNonstandard = IsNonStandard.Unobtainable;\n    } else if (itemFromData.isNonstandard === 'LGPE') {\n      data.isNonstandard = IsNonStandard.LetsGoPikachuEevee;\n    } else if (itemFromData.isNonstandard === 'Gigantamax') {\n      data.isNonstandard = IsNonStandard.Gigantamax;\n    } else {\n      Reflect.deleteProperty(data, 'isNonstandard');\n    }\n\n    data.gen = itemFromData.gen;\n    data.name = itemFromData.name;\n  }\n\n  if (itemFromText) {\n    if (itemFromText.shortDesc) {\n      data.shortDesc = replacePokeWithAccentedPoke(itemFromText.shortDesc);\n    }\n    if (itemFromText.desc) {\n      data.desc = replacePokeWithAccentedPoke(itemFromText.desc);\n    }\n  }\n\n  newMap.set(key, sortObjectByKey(data));\n}\n\nfor (const [key, itemFromData] of itemsDataEntries) {\n  // Skip if the item is already in the map\n  if (newMap.has(key)) continue;\n\n  let itemFromText = itemsTextEntries.find(([itemTextKey]) => itemTextKey === key)?.at(1) as ItemText | undefined;\n\n  if (!itemFromText) {\n    if (key === 'strangeball') {\n      itemFromText = {\n        desc: 'In Pokémon Brilliant Diamond and Shining Pearl, Pokémon Legends: Arceus, and Pokémon Scarlet and Violet, Pokémon caught in Poké Balls that do not exist in that game instead display a Strange Ball as their Poké Ball.',\n        shortDesc: 'A placeholder Poké Ball for Pokémon in Poké Balls that do not exist in the current game.',\n        name: 'Strange Ball'\n      };\n    } else {\n      console.error(`Missing item text for ${key}`);\n      continue;\n    }\n  }\n\n  const data: PokemonTypes.Item = {\n    desc: replacePokeWithAccentedPoke(itemFromText.desc ?? itemFromText.shortDesc),\n    gen: itemFromData.gen,\n    name: itemFromData.name\n  };\n\n  if (itemFromData.isNonstandard === 'Past') {\n    data.isNonstandard = IsNonStandard.Past;\n  } else if (itemFromData.isNonstandard === 'CAP') {\n    data.isNonstandard = IsNonStandard.Cap;\n  } else if (itemFromData.isNonstandard === 'Unobtainable') {\n    data.isNonstandard = IsNonStandard.Unobtainable;\n  } else if (itemFromData.isNonstandard === 'LGPE') {\n    data.isNonstandard = IsNonStandard.LetsGoPikachuEevee;\n  } else if (itemFromData.isNonstandard === 'Gigantamax') {\n    data.isNonstandard = IsNonStandard.Gigantamax;\n  }\n\n  if (itemFromText.shortDesc) {\n    data.shortDesc = replacePokeWithAccentedPoke(itemFromText.shortDesc);\n  }\n\n  newMap.set(key, sortObjectByKey(data));\n}\n\nconst prependContent = [\n  \"import type { PokemonTypes } from '#assets/pokemon-source';\",\n  \"import { IsNonStandard } from '#utils/isNonStandardEnum';\",\n  \"import { Collection } from '@discordjs/collection';\",\n  '',\n  '/** The item in Pokémon */',\n  'export const items = new Collection<string, PokemonTypes.Item>('\n].join('\\n');\nconst appendContent = [\n  ');', //\n  '',\n  'for (const [key, value] of items.entries()) {',\n  '\\tvalue.key = key;',\n  '}',\n  ''\n].join('\\n');\n\nconst content = replaceEnumLikeValues(inspectData([...newMap.entries()]));\n\nawait writeDataToFileAndPrettify(prependContent + content + appendContent, '#assets/items.js');\n\ninterface ItemData {\n  name: string;\n  spritenum: number;\n  megaStone: string;\n  megaEvolves: string;\n  itemUser: string[];\n  num: number;\n  gen: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n  isNonstandard: string;\n}\n\ninterface ItemText {\n  name: string;\n  desc: string;\n  shortDesc?: string;\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/asset-updaters/learnsets-updater.ts",
    "content": "import { objectEntries } from '@sapphire/utilities';\nimport { green } from 'colorette';\nimport { URL } from 'node:url';\nimport { importFileFromWeb, mapToJson, rootDir, writeDataToFileAndPrettify } from '../../../utils.js';\n\nconst prependContent = [\n  '// @ts-nocheck TS checking this file causes major delays in developing',\n  '',\n  \"import { Collection } from '@discordjs/collection';\",\n  '',\n  '/** The learnsets in Pokémon */',\n  'export const learnsets = new Collection<string, Record<string, string[]>>('\n].join('\\n');\nconst appendContent = [');', ''].join('\\n');\n\nconst learnsetsFileUrl = new URL('src/lib/assets/learnsets.ts', rootDir);\n\nconst { Learnsets } = await importFileFromWeb<{ Learnsets: { [k: string]: Record<string, string[]> } }>({\n  url: 'https://raw.githubusercontent.com/smogon/pokemon-showdown/master/data/learnsets.ts',\n  temporaryFileName: 'learnsets.js'\n});\n\nconst output = new Map();\nfor (const [pokemon, learnset] of objectEntries(Learnsets)) {\n  if (learnset.eventOnly === undefined && learnset.learnset === undefined) continue;\n  if (learnset.eventOnly !== undefined && learnset.learnset === undefined) output.set(pokemon, { eventOnly: ['See base forme of this Pokémon'] });\n  else output.set(pokemon, learnset.learnset);\n}\n\nif (output.size) {\n  const content = mapToJson(output);\n\n  await writeDataToFileAndPrettify(prependContent + content + appendContent, learnsetsFileUrl);\n\n  console.log(green(`Successfully wrote updated learnsets data to file`));\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/asset-updaters/moves-updater.ts",
    "content": "import { moves as currentMoves } from '#assets/moves.js';\nimport type { PokemonTypes } from '#assets/pokemon-source.js';\nimport { IsNonStandard } from '#utils/isNonStandardEnum.js';\nimport {\n  importFileFromWeb,\n  inspectData,\n  replaceEnumLikeValues,\n  replacePokeWithAccentedPoke,\n  sortObjectByKey,\n  writeDataToFileAndPrettify\n} from '../../../utils.js';\n\n// Note that manual checking is still required for \"basePower\" and \"target\" properties!\n\nconst { Moves } = await importFileFromWeb<{ Moves: { [moveName: string]: MoveData } }>({\n  url: 'https://raw.githubusercontent.com/smogon/pokemon-showdown/master/data/moves.ts',\n  temporaryFileName: 'moves.js'\n});\n\nconst { MovesText } = await importFileFromWeb<{ MovesText: { [moveName: string]: MoveText } }>({\n  url: 'https://raw.githubusercontent.com/smogon/pokemon-showdown/master/data/text/moves.ts',\n  temporaryFileName: 'moves-texts.js'\n});\n\nconst movesDataEntries = Object.entries<MoveData>(Moves);\nconst movesTextEntries = Object.entries<MoveText>(MovesText);\n\nconst newMap = new Map();\n\nfor (const [key, data] of currentMoves.entries()) {\n  Reflect.deleteProperty(data, 'key');\n\n  const moveFromData = movesDataEntries.find(([moveKey]) => moveKey === key)?.at(1) as MoveData | undefined;\n  const moveFromText = movesTextEntries.find(([moveTextKey]) => moveTextKey === key)?.at(1) as MoveText | undefined;\n\n  if (moveFromData) {\n    if (moveFromData.isNonstandard === 'Past') {\n      data.isNonstandard = IsNonStandard.Past;\n    } else if (moveFromData.isNonstandard === 'CAP') {\n      data.isNonstandard = IsNonStandard.Cap;\n    } else if (moveFromData.isNonstandard === 'Unobtainable') {\n      data.isNonstandard = IsNonStandard.Unobtainable;\n    } else if (moveFromData.isNonstandard === 'LGPE') {\n      data.isNonstandard = IsNonStandard.LetsGoPikachuEevee;\n    } else if (moveFromData.isNonstandard === 'Gigantamax') {\n      data.isNonstandard = IsNonStandard.Gigantamax;\n    } else {\n      Reflect.deleteProperty(data, 'isNonstandard');\n    }\n\n    if (moveFromData.accuracy === true) {\n      data.accuracy = 100;\n    } else {\n      data.accuracy = moveFromData.accuracy as number;\n    }\n\n    if (moveFromData.contestType) {\n      data.contestType = moveFromData.contestType;\n    }\n\n    data.category = moveFromData.category;\n    data.pp = moveFromData.pp;\n    data.priority = moveFromData.priority;\n    data.name = moveFromData.name;\n    data.type = moveFromData.type;\n  }\n\n  if (moveFromText) {\n    if (key.startsWith('hiddenpower')) {\n      data.shortDesc = \"Varies in type based on the user's IVs.\";\n    } else {\n      data.shortDesc = replacePokeWithAccentedPoke(moveFromText.shortDesc);\n    }\n\n    if (moveFromText.desc) {\n      data.desc = replacePokeWithAccentedPoke(moveFromText.desc);\n    }\n  }\n\n  newMap.set(key, sortObjectByKey(data));\n}\n\nfor (const [key, moveFromData] of movesDataEntries) {\n  // Skip if\n  // 1. The move is already in the map\n  // 2. The key is 10000000voltthunderbolt (which is named tenmillionvoltthunderbolt)\n  // 3. The move is nihillight (which is missing text data in Showdown)\n  if (newMap.has(key) || key === '10000000voltthunderbolt' || key === 'nihillight') continue;\n\n  const moveFromText = movesTextEntries.find(([moveTextKey]) => moveTextKey === key)?.at(1) as MoveText | undefined;\n\n  if (!moveFromText) {\n    console.error(`Missing move text for ${key}`);\n    continue;\n  }\n\n  const data: PokemonTypes.Move = {\n    shortDesc: replacePokeWithAccentedPoke(moveFromText.shortDesc ?? ''),\n    name: moveFromData.name,\n    category: moveFromData.category,\n    pp: moveFromData.pp,\n    priority: moveFromData.priority,\n    type: moveFromData.type\n  } as PokemonTypes.Move;\n\n  if (moveFromData.accuracy === true) {\n    data.accuracy = 100;\n  } else {\n    data.accuracy = moveFromData.accuracy as number;\n  }\n\n  if (moveFromData.contestType) {\n    data.contestType = moveFromData.contestType;\n  }\n\n  if (moveFromData.isNonstandard === 'Past') {\n    data.isNonstandard = IsNonStandard.Past;\n  } else if (moveFromData.isNonstandard === 'CAP') {\n    data.isNonstandard = IsNonStandard.Cap;\n  } else if (moveFromData.isNonstandard === 'Unobtainable') {\n    data.isNonstandard = IsNonStandard.Unobtainable;\n  } else if (moveFromData.isNonstandard === 'LGPE') {\n    data.isNonstandard = IsNonStandard.LetsGoPikachuEevee;\n  } else if (moveFromData.isNonstandard === 'Gigantamax') {\n    data.isNonstandard = IsNonStandard.Gigantamax;\n  }\n\n  if (moveFromText.desc) {\n    data.desc = replacePokeWithAccentedPoke(moveFromText.desc);\n  }\n\n  newMap.set(key, sortObjectByKey(data));\n}\n\nconst prependContent = [\n  \"import type { PokemonTypes } from '#assets/pokemon-source';\",\n  \"import { IsNonStandard } from '#utils/isNonStandardEnum';\",\n  \"import { Collection } from '@discordjs/collection';\",\n  '',\n  '/** The moves in Pokémon */',\n  'export const moves = new Collection<string, PokemonTypes.Move>('\n].join('\\n');\nconst appendContent = [\n  ');', //\n  '',\n  'for (const [key, value] of moves.entries()) {',\n  '\\tvalue.key = key;',\n  '}',\n  ''\n].join('\\n');\n\nconst content = replaceEnumLikeValues(inspectData([...newMap.entries()]));\n\nawait writeDataToFileAndPrettify(prependContent + content + appendContent, '#assets/moves.js');\n\ninterface MoveData {\n  num: number;\n  accuracy: boolean | number;\n  basePower: number;\n  category: PokemonTypes.MoveCategoryUnion;\n  isNonstandard: string;\n  name: string;\n  pp: number;\n  priority: number;\n  flags: never;\n  isZ: string;\n  critRatio: number;\n  secondary: null;\n  target: string;\n  type: `${Capitalize<keyof PokemonTypes.Types>}`;\n  contestType: string;\n}\n\ninterface MoveText {\n  name: string;\n  desc: string;\n  shortDesc?: string;\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/asset-updaters/tiers-updater.ts",
    "content": "import { objectEntries } from '@sapphire/utilities';\nimport { green } from 'colorette';\nimport { writeFile } from 'node:fs/promises';\nimport { URL } from 'node:url';\nimport prettier from 'prettier';\nimport prettierConfig from '../../../../.prettierrc.mjs';\nimport { importFileFromWeb, rootDir } from '../../../utils.js';\n\nconst formatsFileUrl = new URL('src/lib/assets/formats.json', rootDir);\n\nconst { FormatsData } = await importFileFromWeb<{ FormatsData: { [k: string]: FormatsData } }>({\n  url: 'https://raw.githubusercontent.com/smogon/pokemon-showdown/master/data/formats-data.ts',\n  temporaryFileName: 'tiers.js'\n});\n\nconst output = {};\n\nfor (const [pokemon, smogonFormatsData] of objectEntries(FormatsData)) {\n  const tier = smogonFormatsData?.isNonstandard || smogonFormatsData?.tier;\n  output[pokemon] = tier || 'Refer to base form / unknown';\n}\n\nif (output && Object.entries(output).length) {\n  const formattedOutput = await prettier.format(JSON.stringify(output), { ...prettierConfig, parser: 'json' });\n  await writeFile(formatsFileUrl, formattedOutput);\n  console.log(green(`Successfully wrote updated formats data to file`));\n}\n\nexport interface FormatsData {\n  [k: string]: {\n    isNonstandard: string;\n    tier: string;\n    natDexTier: string;\n  };\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/classification-updater/.gitignore",
    "content": "*.json\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/classification-updater/classification-updater.ts",
    "content": "import { pokedex } from '#assets/pokedex.js';\nimport { each } from 'async';\nimport * as cheerio from 'cheerio';\nimport { green, yellow } from 'colorette';\nimport { writeFile } from 'node:fs/promises';\nimport { inspectData, replaceEnumLikeValues, userAgentHeader, writeDataToFileAndPrettify } from '../../../utils.js';\nimport { ensureLogfileExists, getBulbapediaReadyPokemon, type ParsedPokemon } from '../utils/bulbapedia-utils.js';\nimport { classificationsUrl, generations } from '../utils/constants.js';\nimport { fetchFlareSolverr } from '../utils/flaresolverr-session-management.js';\nimport { getModulePathForGeneration, getPokemonGenerationForDexNumber } from '../utils/utils.js';\nimport { log, logFile } from './log-wrapper.js';\nimport { fetch, FetchMethods, FetchMediaContentTypes, FetchResultTypes } from '@sapphire/fetch';\nimport type { FlareSolverrResponse } from '../utils/types.js';\n\ninterface SucceededPokemon {\n  num: number;\n  forme?: string;\n  species: string;\n  generation: number;\n  classification: string;\n}\n\nconst withFlaresolverr = Boolean(process.env.CI);\nconst failedPokemon: ParsedPokemon[] = [];\nconst succeededPokemon: SucceededPokemon[] = [];\n\nconst failedPokemonTextFile = new URL('./failed-pokemon.json', import.meta.url);\n\nawait ensureLogfileExists(logFile);\n\nconst response = withFlaresolverr\n  ? await fetchFlareSolverr(classificationsUrl)\n  : await fetch(\n      classificationsUrl,\n      {\n        method: FetchMethods.Get,\n        headers: {\n          ...userAgentHeader,\n          'Content-Type': FetchMediaContentTypes.JSON\n        }\n      },\n      FetchResultTypes.Text\n    );\n\nawait log({ msg: `Fetched data`, color: yellow, isBold: false, isIndent: true });\n\nconst $ = withFlaresolverr ? cheerio.load((response as FlareSolverrResponse).solution.response) : cheerio.load(response as string);\nawait log({ msg: `Loaded text into cheerio`, color: yellow, isBold: false, isIndent: true });\n\nconst text = $('#wpTextbox1').text();\nawait log({ msg: `Loaded text element`, color: yellow, isBold: false, isIndent: true });\n\nawait each(getBulbapediaReadyPokemon(), async (pokemon) => {\n  const paddedNumber = pokemon.number.toString().padStart(4, '0');\n\n  await log({ msg: `${pokemon.species} (${paddedNumber}) - Started processing`, color: yellow, isBold: false, isIndent: true, bypassCiCheck: true });\n\n  const regex = pokemon.forme\n    ? new RegExp(`{{ArtP\\\\|${paddedNumber}\\\\|[^}}]+\\\\|form=-${pokemon.forme}}} \\\\|\\\\|(?<content>[^]*?)\\\\n`, 'i')\n    : new RegExp(`{{ArtP\\\\|${paddedNumber}\\\\|.+}} \\\\|\\\\|(?<content>[^]*?)\\\\n`);\n  const match = regex.exec(text);\n  const regexForTranslateBlock = /\\{\\{tt\\|([^|]+)\\|[^}]+\\}\\}/;\n\n  const useHigherIndexFromTable = pokemon.forme || pokemon.number === 720 || pokemon.number === 964 || pokemon.number === 999;\n\n  const classification = match?.groups?.content\n    .trim()\n    .split('||')\n    .at(useHigherIndexFromTable ? 1 : 0)\n    ?.trim()\n    .replace(regexForTranslateBlock, '$1');\n\n  if (classification) {\n    succeededPokemon.push({\n      num: pokemon.number,\n      forme: pokemon.forme,\n      species: pokemon.species,\n      generation: getPokemonGenerationForDexNumber(pokemon.number),\n      classification\n    });\n  } else {\n    failedPokemon.push(pokemon);\n  }\n});\n\nawait log({ msg: 'Done storing data in memory, formatting and writing to disk', color: green, isBold: true, isIndent: false });\n\nfor (const pokemon of succeededPokemon) {\n  const pokemonFromData = pokemon.forme\n    ? pokedex.find((pokemonData) => pokemonData.num === pokemon.num && pokemonData.forme?.toLowerCase() === pokemon.forme.toLowerCase())\n    : pokedex.find((pokemonData) => pokemonData.num === pokemon.num);\n\n  pokemonFromData.classification = pokemon.classification;\n}\n\nconst prependContent = [\n  \"import type { PokemonTypes } from '#assets/pokemon-source';\",\n  \"import { Pokedex } from '#dexdata/pokedex';\",\n  \"import { TypesEnum } from '#utils/pokemonTypes';\",\n  '',\n  'const entries: [string, PokemonTypes.DexEntry][] = '\n].join('\\n');\n\nconst appendContent = [\n  ';', //\n  '',\n  'for (const [key, value] of entries) {',\n  '\\tvalue.key = key;',\n  '',\n  '\\tPokedex.set(key, value);',\n  '}',\n  ''\n].join('\\n');\n\nfor (const generation of generations) {\n  const mapForGeneration = pokedex.filter((poke) => getPokemonGenerationForDexNumber(poke.num) === generation);\n\n  for (const poke of mapForGeneration.values()) {\n    delete poke.key;\n  }\n\n  const content = replaceEnumLikeValues(inspectData([...mapForGeneration.entries()]));\n\n  await writeDataToFileAndPrettify(prependContent + content + appendContent, getModulePathForGeneration(generation));\n}\n\nawait log({ msg: 'Done writing to disk', color: green, isBold: true, isIndent: false });\n\nawait writeFile(failedPokemonTextFile, JSON.stringify(failedPokemon, null, 4), { encoding: 'utf-8' });\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/classification-updater/log-wrapper.ts",
    "content": "import { log as baseLog, type LogParamaters } from '../utils/append-to-log.js';\n\nexport const logFile = new URL('./output.log', import.meta.url);\n\nexport async function log(params: Omit<LogParamaters, 'logFile'>) {\n  return baseLog({ ...params, logFile });\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/cries-updater/constants.ts",
    "content": "export const logFile = new URL('./output.log', import.meta.url);\n\nexport const MegaSpriteRegex = /^(.+)-(x|y)$/g;\n\nexport const baseUrl = 'https://play.pokemonshowdown.com/audio/cries' as const;\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/cries-updater/cry-updater.ts",
    "content": "import { pokedex } from '#assets/pokedex.js';\nimport { eachLimit } from 'async';\nimport { green } from 'colorette';\nimport { inspectData, replaceEnumLikeValues, writeDataToFileAndPrettify } from '../../../utils';\nimport { generations } from '../utils/constants';\nimport { pokedexAppendContent, pokedexPrependContent } from '../utils/pokedex-constants';\nimport { getModulePathForGeneration, getPokemonGenerationForDexNumber } from '../utils/utils';\nimport { getCryUrl } from './get-cry-url';\nimport { log } from './log-wrapper';\n\nawait eachLimit(pokedex.values(), 100, async (pokemon) => getCryUrl(pokemon));\n\nfor (const generation of generations) {\n  const mapForGeneration = pokedex.filter((poke) => getPokemonGenerationForDexNumber(poke.num) === generation);\n\n  for (const poke of mapForGeneration.values()) {\n    delete poke.key;\n  }\n\n  const content = replaceEnumLikeValues(inspectData([...mapForGeneration.entries()]));\n\n  await writeDataToFileAndPrettify(pokedexPrependContent + content + pokedexAppendContent, getModulePathForGeneration(generation));\n}\n\nawait log({ msg: 'Done writing to disk', color: green, isBold: true, isIndent: false });\nprocess.exit(0);\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/cries-updater/get-cry-url.ts",
    "content": "import { pokedex } from '#assets/pokedex.js';\nimport type { PokemonTypes } from '#assets/pokemon-source';\nimport { FetchResultTypes, fetch } from '@sapphire/fetch';\nimport { yellow } from 'colorette';\nimport { toLowerSingleWordCase } from '../../../../src/lib/utils/utils';\nimport { MegaSpriteRegex, baseUrl } from './constants';\nimport { log } from './log-wrapper';\n\nexport async function getCryUrl(pokemon: PokemonTypes.DexEntry, recursivePokemon?: PokemonTypes.DexEntry) {\n  const logPrefix = `${pokemon.species} (${pokemon.num}${pokemon.forme ?? ''}) - `;\n\n  await log({ msg: `${logPrefix}Started processing`, color: yellow, isBold: false, isIndent: true, bypassCiCheck: true });\n\n  let nameToUse = pokemon.baseSpecies ? pokemon.species : toLowerSingleWordCase(pokemon.species);\n\n  if (nameToUse.match(MegaSpriteRegex)) {\n    nameToUse = nameToUse.replace(MegaSpriteRegex, '$1$2');\n  }\n\n  const urlToFetch = `${baseUrl}/${nameToUse}.mp3` as const;\n  await log({ msg: `${logPrefix}Fetching URL ${urlToFetch}`, color: yellow, isBold: false, isIndent: true });\n\n  try {\n    const result = await fetch(urlToFetch, FetchResultTypes.Result);\n    if (result.status === 200) {\n      if (recursivePokemon) {\n        recursivePokemon.cry = urlToFetch;\n        await log({ msg: `${logPrefix}Set cry on the recursive object`, color: yellow, isBold: false, isIndent: true });\n      } else {\n        pokemon.cry = urlToFetch;\n        await log({ msg: `${logPrefix}Set cry on the map object`, color: yellow, isBold: false, isIndent: true });\n      }\n    }\n  } catch {\n    if (pokemon.baseSpecies) {\n      const baseSpecies = pokedex.get(pokemon.baseSpecies);\n      if (baseSpecies) {\n        await getCryUrl(baseSpecies, pokemon);\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/cries-updater/log-wrapper.ts",
    "content": "import { log as baseLog, type LogParamaters } from '../utils/append-to-log.js';\n\nexport const logFile = new URL('./output.log', import.meta.url);\n\nexport async function log(params: Omit<LogParamaters, 'logFile'>) {\n  return baseLog({ ...params, logFile });\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/.gitignore",
    "content": "*.json\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/constants.ts",
    "content": "export const sortOrder = [\n  'Red',\n  'Blue',\n  'Yellow',\n  'Stadium',\n  'Gold',\n  'Silver',\n  'Crystal',\n  'Stadium 2',\n  'Ruby',\n  'Sapphire',\n  'Emerald',\n  'FireRed',\n  'LeafGreen',\n  'Diamond',\n  'Pearl',\n  'Platinum',\n  'HeartGold',\n  'SoulSilver',\n  'Black',\n  'White',\n  'Black 2',\n  'White 2',\n  'X',\n  'Y',\n  'Omega Ruby',\n  'Alpha Sapphire',\n  'Sun',\n  'Moon',\n  'Ultra Sun',\n  'Ultra Moon',\n  \"Let's Go Pikachu\",\n  \"Let's Go Eevee\",\n  'Sword',\n  'Shield',\n  'Brilliant Diamond',\n  'Shining Pearl',\n  'Legends: Arceus',\n  'Scarlet',\n  'Violet',\n  'Legends: Z-A'\n];\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/flavor-text-updater.ts",
    "content": "import { flavorsModule } from '#utils/flavorsModule';\nimport { green } from 'colorette';\nimport { writeFile } from 'node:fs/promises';\nimport { format } from 'prettier';\nimport prettierConfig from '../../../../.prettierrc.mjs';\nimport { rootDir } from '../../../utils.js';\nimport { ensureLogfileExists, getBulbapediaReadyPokemon } from '../utils/bulbapedia-utils.js';\nimport { gameSorter } from './game-sorter.js';\nimport { log, logFile } from './log-wrapper.js';\nimport { getFailedPokemon, parsePokemonWithoutFlareSolverr } from './parsers/parse-pokemon.js';\n\nconst pathToFlavorTextFile = new URL('src/lib/assets/flavorText.json', rootDir);\nconst failedPokemonTextFile = new URL('./failed-pokemon.json', import.meta.url);\n\nawait ensureLogfileExists(logFile);\n\nconst pokemonToParse = getBulbapediaReadyPokemon();\n\n// Determine the current day of the month (1-based). Clamp to 30 to avoid out-of-range on 31-day months.\nconst dayOfMonth = Math.min(new Date().getDate(), 30);\n\n// We split the workload across 30 sets (approximate average month length).\nconst numberOfSets = 30;\nconst setSize = Math.ceil(pokemonToParse.length / numberOfSets);\n\n// Split the array into 30 roughly equal sets.\nconst monthlySets = Array.from({ length: numberOfSets }, (_, i) => pokemonToParse.slice(i * setSize, (i + 1) * setSize));\n\n// Select the set to process based on the current day of the month.\nconst pokemonToProcess = monthlySets.at(dayOfMonth - 1) ?? [];\n\nconsole.group('=========== Starting Flavor Text Updater ===========');\nconsole.log(`Processing set ${dayOfMonth} of ${numberOfSets}, containing ${pokemonToProcess.length} Pokémon.`);\nconsole.log('process.env.CI is: ', process.env.CI);\nconsole.groupEnd();\n\nfor (const pokemon of pokemonToProcess) {\n  // process.env.CI ? await parsePokemonWithFlaresolverr(pokemon) :\n  await parsePokemonWithoutFlareSolverr(pokemon);\n}\n\nawait log({ msg: \"Done fetching and storing data in memory, sorting version_id's\", color: green, isBold: true, isIndent: false });\n\ngameSorter(flavorsModule);\n\nawait log({ msg: 'Done sorting, formatting and writing to disk', color: green, isBold: true, isIndent: false });\n\nconst formatted = await format(JSON.stringify(flavorsModule, null, 4), { parser: 'json', ...prettierConfig });\nawait writeFile(pathToFlavorTextFile, formatted, { encoding: 'utf-8' });\nawait log({ msg: 'Done writing to disk', color: green, isBold: true, isIndent: false });\n\nawait writeFile(failedPokemonTextFile, JSON.stringify(getFailedPokemon(), null, 4), { encoding: 'utf-8' });\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/gen1-game-sets.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { doubleGameUpdater } from '../parsers/double-game-updater.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\n\nexport async function getGen1GameSetsData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'Red', logPrefix);\n  const single2 = await singleGameUpdater(text, flavorsModule, pokemon, 'Blue', logPrefix);\n  const single3 = await singleGameUpdater(text, flavorsModule, pokemon, 'Yellow', logPrefix);\n  const single4 = await singleGameUpdater(text, flavorsModule, pokemon, 'Stadium', logPrefix);\n\n  const double1 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Red', 'Blue', logPrefix);\n  const double2 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Red', 'Yellow', logPrefix);\n  const double3 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Red', 'Stadium', logPrefix);\n  const double4 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Blue', 'Yellow', logPrefix);\n  const double5 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Blue', 'Stadium', logPrefix);\n  const double6 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Yellow', 'Stadium', logPrefix);\n\n  return [single1, single2, single3, single4, double1, double2, double3, double4, double5, double6];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/gen2-game-sets.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { doubleGameUpdater } from '../parsers/double-game-updater.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\n\nexport async function getGen2GameSetsData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'Gold', logPrefix);\n  const single2 = await singleGameUpdater(text, flavorsModule, pokemon, 'Silver', logPrefix);\n  const single3 = await singleGameUpdater(text, flavorsModule, pokemon, 'Crystal', logPrefix);\n  const single4 = await singleGameUpdater(text, flavorsModule, pokemon, 'Stadium 2', logPrefix);\n\n  const double1 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Gold', 'Silver', logPrefix);\n  const double2 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Gold', 'Crystal', logPrefix);\n  const double3 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Gold', 'Stadium 2', logPrefix);\n  const double4 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Silver', 'Crystal', logPrefix);\n  const double5 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Silver', 'Stadium 2', logPrefix);\n  const double6 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Crystal', 'Stadium 2', logPrefix);\n\n  return [single1, single2, single3, single4, double1, double2, double3, double4, double5, double6];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/gen3-game-sets.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { doubleGameUpdater } from '../parsers/double-game-updater.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\nimport { tripleGameUpdater } from '../parsers/triple-game-updater.js';\n\nexport async function getGen3GameSetsData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'Ruby', logPrefix);\n  const single2 = await singleGameUpdater(text, flavorsModule, pokemon, 'Sapphire', logPrefix);\n  const single3 = await singleGameUpdater(text, flavorsModule, pokemon, 'Emerald', logPrefix);\n  const single4 = await singleGameUpdater(text, flavorsModule, pokemon, 'LeafGreen', logPrefix);\n  const single5 = await singleGameUpdater(text, flavorsModule, pokemon, 'FireRed', logPrefix);\n\n  const double1 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Ruby', 'Sapphire', logPrefix);\n  const double2 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Ruby', 'Emerald', logPrefix);\n  const double3 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Sapphire', 'Emerald', logPrefix);\n  const double4 = await doubleGameUpdater(text, flavorsModule, pokemon, 'LeafGreen', 'FireRed', logPrefix);\n\n  const triple1 = await tripleGameUpdater(text, flavorsModule, pokemon, 'Ruby', 'Sapphire', 'Emerald', logPrefix);\n\n  return [single1, single2, single3, single4, single5, double1, double2, double3, double4, triple1];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/gen4-game-sets.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { doubleGameUpdater } from '../parsers/double-game-updater.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\nimport { tripleGameUpdater } from '../parsers/triple-game-updater.js';\n\nexport async function getGen4GameSetsData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'Diamond', logPrefix);\n  const single2 = await singleGameUpdater(text, flavorsModule, pokemon, 'Pearl', logPrefix);\n  const single3 = await singleGameUpdater(text, flavorsModule, pokemon, 'Platinum', logPrefix);\n  const single4 = await singleGameUpdater(text, flavorsModule, pokemon, 'HeartGold', logPrefix);\n  const single5 = await singleGameUpdater(text, flavorsModule, pokemon, 'SoulSilver', logPrefix);\n\n  const double1 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Diamond', 'Pearl', logPrefix);\n  const double2 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Diamond', 'Platinum', logPrefix);\n  const double3 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Pearl', 'Platinum', logPrefix);\n  const double4 = await doubleGameUpdater(text, flavorsModule, pokemon, 'HeartGold', 'SoulSilver', logPrefix);\n\n  const triple1 = await tripleGameUpdater(text, flavorsModule, pokemon, 'Diamond', 'Pearl', 'Platinum', logPrefix);\n\n  return [single1, single2, single3, single4, single5, double1, double2, double3, double4, triple1];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/gen5-game-sets.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { doubleGameUpdater } from '../parsers/double-game-updater.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\n\nexport async function getGen5GameSetsData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'Black', logPrefix);\n  const single2 = await singleGameUpdater(text, flavorsModule, pokemon, 'White', logPrefix);\n  const single3 = await singleGameUpdater(text, flavorsModule, pokemon, 'Black 2', logPrefix);\n  const single4 = await singleGameUpdater(text, flavorsModule, pokemon, 'White 2', logPrefix);\n\n  const double1 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Black', 'White', logPrefix);\n  const double2 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Black 2', 'White 2', logPrefix);\n\n  return [single1, single2, single3, single4, double1, double2];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/gen6-game-sets.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { doubleGameUpdater } from '../parsers/double-game-updater.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\n\nexport async function getGen6GameSetsData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'X', logPrefix);\n  const single2 = await singleGameUpdater(text, flavorsModule, pokemon, 'Y', logPrefix);\n  const single3 = await singleGameUpdater(text, flavorsModule, pokemon, 'Omega Ruby', logPrefix);\n  const single4 = await singleGameUpdater(text, flavorsModule, pokemon, 'Alpha Sapphire', logPrefix);\n\n  const double1 = await doubleGameUpdater(text, flavorsModule, pokemon, 'X', 'Y', logPrefix);\n  const double2 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Omega Ruby', 'Alpha Sapphire', logPrefix);\n\n  return [single1, single2, single3, single4, double1, double2];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/gen7-game-sets.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { doubleGameUpdater } from '../parsers/double-game-updater.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\n\nexport async function getGen7GameSetsData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'Sun', logPrefix);\n  const single2 = await singleGameUpdater(text, flavorsModule, pokemon, 'Moon', logPrefix);\n  const single3 = await singleGameUpdater(text, flavorsModule, pokemon, 'Ultra Sun', logPrefix);\n  const single4 = await singleGameUpdater(text, flavorsModule, pokemon, 'Ultra Moon', logPrefix);\n  const single5 = await singleGameUpdater(text, flavorsModule, pokemon, \"Let's Go Pikachu\", logPrefix);\n  const single6 = await singleGameUpdater(text, flavorsModule, pokemon, \"Let's Go Eevee\", logPrefix);\n\n  const double1 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Sun', 'Moon', logPrefix);\n  const double2 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Ultra Sun', 'Ultra Moon', logPrefix);\n  const double3 = await doubleGameUpdater(text, flavorsModule, pokemon, \"Let's Go Pikachu\", \"Let's Go Eevee\", logPrefix);\n\n  return [single1, single2, single3, single4, single5, single6, double1, double2, double3];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/gen8-game-sets.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { doubleGameUpdater } from '../parsers/double-game-updater.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\n\nexport async function getGen8GameSetsData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'Sword', logPrefix);\n  const single2 = await singleGameUpdater(text, flavorsModule, pokemon, 'Shield', logPrefix);\n  const single3 = await singleGameUpdater(text, flavorsModule, pokemon, 'Brilliant Diamond', logPrefix);\n  const single4 = await singleGameUpdater(text, flavorsModule, pokemon, 'Shining Pearl', logPrefix);\n  const single5 = await singleGameUpdater(text, flavorsModule, pokemon, 'Legends: Arceus', logPrefix);\n\n  const double1 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Sword', 'Shield', logPrefix);\n  const double2 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Brilliant Diamond', 'Shining Pearl', logPrefix);\n\n  return [single1, single2, single3, single4, single5, double1, double2];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/gen9-game-sets.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { doubleGameUpdater } from '../parsers/double-game-updater.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\n\nexport async function getGen9GameSetsData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'Scarlet', logPrefix);\n  const single2 = await singleGameUpdater(text, flavorsModule, pokemon, 'Violet', logPrefix);\n  const single3 = await singleGameUpdater(text, flavorsModule, pokemon, 'Legends: Z-A', logPrefix);\n\n  const double1 = await doubleGameUpdater(text, flavorsModule, pokemon, 'Scarlet', 'Violet', logPrefix);\n\n  return [single1, single2, single3, double1];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sets/pokopia.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { singleGameUpdater } from '../parsers/single-game-updater.js';\n\nexport async function getPokopiaGameData(text: string, pokemon: ParsedPokemon, flavorsModule: FlavorsModule, logPrefix: string) {\n  const single1 = await singleGameUpdater(text, flavorsModule, pokemon, 'Pokopia', logPrefix);\n\n  return [single1];\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/game-sorter.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport { objectKeys } from '@sapphire/utilities';\nimport { sortOrder } from './constants.js';\n\nexport function gameSorter(flavorsModule: FlavorsModule) {\n  for (const key of objectKeys(flavorsModule)) {\n    flavorsModule[key].sort((a, b) => sortOrder.indexOf(a.version_id) - sortOrder.indexOf(b.version_id));\n  }\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/get-text-content.ts",
    "content": "export function getTextContent(bit1: string) {\n  return bit1\n    ?.split(/\\|[a-z]+=/g)\n    ?.at(-1)\n    .replace(/}}$/, '')\n    .replace(/\\s?<small>.+<\\/small>/, '')\n    .replaceAll(/<sc>([a-zA-Z0-9 {}|'.-]+)<\\/sc>/g, '$1')\n    .replaceAll(/{{[pP]\\|([a-zA-Z']+)}}/g, '$1')\n    .replaceAll(/{{[pP]\\|[a-zA-Z']+\\|([a-zA-Z'é ]+)}}/g, '$1')\n    .replaceAll(/{{p\\|[a-zA-Z]+\\|(evolve)}}/g, '$1')\n    .replaceAll(/{{m\\|([a-zA-Z ]+)}}/g, '$1')\n    .replaceAll(/{{m\\|[a-zA-Z ]+\\|([a-zA-Z -]+)}}/g, '$1')\n    .replaceAll(/{{t\\|([a-zA-Z]+)}}/g, '$1')\n    .replaceAll(/{{tt\\|([-a-zA-Z0-9,.\\/()&;–−'\"° ]+)\\|[-a-zA-Z0-9,.\\/()&;–−'\"° ]+}}/g, '$1')\n    .replaceAll(/{{a\\|([-a-zA-Z0-9,\\/ ]+)}}/g, '$1')\n    .replaceAll(/{{a\\|[-a-zA-Z0-9, ]+\\|([-a-zA-Z0-9,\\/ ]+)}}/g, '$1')\n    .replaceAll(/{{status\\|[-a-zA-Z0-9,.\\/ ]+\\|([-a-zA-Z0-9,.\\/ ]+)}}/g, '$1')\n    .replaceAll(/{{status\\|([-a-zA-Z0-9,.\\/ ]+)}}/g, '$1')\n    .replaceAll(/{{pkmn\\|([a-zA-Z]+)}}/g, '$1')\n    .replaceAll(/{{pkmn2\\|([a-zA-Z]+)}}/g, '$1')\n    .replaceAll(/{{wp\\|([a-zA-Z ]+)}}/g, '$1')\n    .replaceAll(/{{wp\\|[a-zA-Z ()]+\\|([a-zA-Z. ]+)}}/g, '$1')\n    .replace(/'''Version 1\\.0:''' .+1.2:''' (.+)/, '$1')\n    .replace(/'''Version 1\\.0:''' .+1\\.1:''' (.+)/, '$1')\n    .replace(/'''Version 1\\.0:''' .+1\\.2:''' (.+)/, '$1')\n    .replaceAll(/\\{\\{tt\\|\\*\\|(?:[\\p{Letter}\\d\\p{Punctuation}\\s]+?)\\}\\}/gu, '')\n    .replaceAll('}}\\t', '')\n    .replaceAll('’', \"'\")\n    .replaceAll('−', '-')\n    .replaceAll('“', '\"')\n    .replaceAll('”', '\"')\n    .replaceAll(' <!--error in game--> ', ' ')\n    .replaceAll('<!-- period is missing -->', '.')\n    .replaceAll(/\\{\\{tt\\|–(\\d+)<!--U\\+2013 EN DASH in-game--> degrees Fahrenheit\\|(?:-|−)\\d+ degrees Celsius\\}\\}/g, '-$1 degrees Fahrenheit')\n    .replaceAll(`{{tt|this|''the'' in Ruby v1.0}}`, 'this')\n    .replaceAll(`{{tt|Bug/Grass Pokémon|''BUG POKéMON'' in R/S v1.0}}`, 'Bug/Grass Pokémon')\n    .replaceAll(\n      /(?:\\[\\[(?<pokegearContent>Pokégear)(?:\\|[\\p{Letter}\\p{Other_Punctuation}\\s()<>]+)?\\]\\])|(?:\\[\\[(?:[\\p{Letter}\\p{Other_Punctuation}\\s()<>]+\\|)?(?<generalContent>[\\p{Letter}\\p{Other_Punctuation}\\s()<>]+)\\]\\])/gu,\n      '$<pokegearContent>$<generalContent>'\n    )\n    .replaceAll('{{OBP|Pokémon|species}}', 'Pokémon')\n    .replaceAll('{{p|Type: Null}}', 'Type: Null')\n    .replaceAll('{{ScBall}}', 'Poké Ball')\n    .replaceAll('{{ScPkmn}}', 'Pokémon')\n    .replaceAll('{{sup/4|HG}}/Froslass{{sup/4|SS}}', '')\n    .replaceAll('lower-back{{sup/4|HG}}/lower back{{sup/4|SS}}', 'lower-back')\n    .replaceAll('the{{sup/3|R}}/this{{sup/3|S}}', 'this')\n    .replaceAll('a <!--typo exists in-game--> ', '')\n    .replaceAll('<sc>Berries</sc>', 'Berries');\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/log-wrapper.ts",
    "content": "import { log as baseLog, type LogParamaters } from '../utils/append-to-log.js';\n\nexport const logFile = new URL('./output.log', import.meta.url);\n\nexport async function log(params: Omit<LogParamaters, 'logFile'>) {\n  return baseLog({ ...params, logFile });\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/parsers/double-game-updater.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport { green, yellow } from 'colorette';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { getTextContent } from '../get-text-content.js';\nimport { log } from '../log-wrapper.js';\n\nexport async function doubleGameUpdater(\n  text: string | undefined,\n  flavorTexts: FlavorsModule,\n  pokemon: ParsedPokemon,\n  game1: string,\n  game2: string,\n  logPrefix: string\n): Promise<boolean> {\n  const regexGame12 = new RegExp(`^(?:{{Dex/Entry2\\\\|v=${game1}\\\\|v2=${game2}\\\\|)`);\n  const regexGame21 = new RegExp(`^(?:{{Dex/Entry2\\\\|v=${game2}\\\\|v2=${game1}\\\\|)`);\n\n  const textSplitByNewLine = text?.split('\\n');\n  const game1Based = getTextContent(textSplitByNewLine?.find((e) => regexGame12.test(e)));\n  const game2Based = getTextContent(textSplitByNewLine?.find((e) => regexGame21.test(e)));\n\n  const gameData = game1Based || game2Based;\n  await log({\n    msg: `${logPrefix}Retrieved ${game1}-${game2} Combined data, it is ${gameData ? 'defined' : 'not defined'}`,\n    color: yellow,\n    isBold: false,\n    isIndent: true\n  });\n\n  if (gameData) {\n    if (flavorTexts[pokemon.number]) {\n      const game1FlavorText = flavorTexts[pokemon.number].find((a) => a.version_id === game1);\n      if (game1FlavorText) {\n        game1FlavorText.flavor_text = gameData;\n      } else {\n        flavorTexts[pokemon.number].push({\n          version_id: game1,\n          flavor_text: gameData\n        });\n      }\n\n      const game2FlavorText = flavorTexts[pokemon.number].find((a) => a.version_id === game2);\n      if (game2FlavorText) {\n        game2FlavorText.flavor_text = gameData;\n      } else {\n        flavorTexts[pokemon.number].push({\n          version_id: game2,\n          flavor_text: gameData\n        });\n      }\n    } else {\n      flavorTexts[pokemon.number] = [\n        {\n          version_id: game1,\n          flavor_text: gameData\n        },\n        {\n          version_id: game2,\n          flavor_text: gameData\n        }\n      ];\n    }\n    await log({ msg: `${logPrefix}Stored new ${game1}-${game2} Combined entries in flavor texts`, color: green, isBold: false, isIndent: true });\n  }\n\n  return Boolean(gameData);\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/parsers/parse-pokemon.ts",
    "content": "import { flavorsModule } from '#utils/flavorsModule';\nimport { fetch, FetchMediaContentTypes, FetchMethods, FetchResultTypes } from '@sapphire/fetch';\nimport * as cheerio from 'cheerio';\nimport { red, yellow } from 'colorette';\nimport { userAgentHeader } from '../../../../utils.js';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { fetchFlareSolverr } from '../../utils/flaresolverr-session-management.js';\nimport type { FlareSolverrResponse } from '../../utils/types.js';\nimport { getGen1GameSetsData } from '../game-sets/gen1-game-sets.js';\nimport { getGen2GameSetsData } from '../game-sets/gen2-game-sets.js';\nimport { getGen3GameSetsData } from '../game-sets/gen3-game-sets.js';\nimport { getGen4GameSetsData } from '../game-sets/gen4-game-sets.js';\nimport { getGen5GameSetsData } from '../game-sets/gen5-game-sets.js';\nimport { getGen6GameSetsData } from '../game-sets/gen6-game-sets.js';\nimport { getGen7GameSetsData } from '../game-sets/gen7-game-sets.js';\nimport { getGen8GameSetsData } from '../game-sets/gen8-game-sets.js';\nimport { getGen9GameSetsData } from '../game-sets/gen9-game-sets.js';\nimport { log } from '../log-wrapper.js';\nimport { getPokopiaGameData } from '../game-sets/pokopia.js';\n\nconst failedPokemon = [];\n\nexport async function parsePokemonWithoutFlareSolverr(pokemon: ParsedPokemon) {\n  return parsePokemon(pokemon, false);\n}\n\nexport async function parsePokemonWithFlaresolverr(pokemon: ParsedPokemon) {\n  return parsePokemon(pokemon, true);\n}\n\nasync function parsePokemon(pokemon: ParsedPokemon, withFlareSolverr: boolean) {\n  const logPrefix = `${pokemon.species} (${pokemon.number}${pokemon.forme ?? ''}) - `;\n\n  await log({ msg: `${logPrefix}Started processing`, color: yellow, isBold: false, isIndent: true, bypassCiCheck: true });\n\n  const response = withFlareSolverr\n    ? await fetchFlareSolverr(pokemon.flavorTextUrl)\n    : await fetch(\n        pokemon.flavorTextUrl,\n        {\n          method: FetchMethods.Get,\n          headers: {\n            ...userAgentHeader,\n            'Content-Type': FetchMediaContentTypes.JSON\n          }\n        },\n        FetchResultTypes.Text\n      );\n  await log({ msg: `${logPrefix}Fetched data`, color: yellow, isBold: false, isIndent: true });\n\n  const $ = withFlareSolverr ? cheerio.load((response as FlareSolverrResponse).solution.response) : cheerio.load(response as string);\n  await log({ msg: `${logPrefix}Loaded text into cheerio`, color: yellow, isBold: false, isIndent: true });\n\n  const text = $('#wpTextbox1').text();\n  await log({ msg: `${logPrefix}Loaded text element`, color: yellow, isBold: false, isIndent: true });\n\n  const results = (\n    await Promise.all([\n      getGen1GameSetsData(text, pokemon, flavorsModule, logPrefix),\n      getGen2GameSetsData(text, pokemon, flavorsModule, logPrefix),\n      getGen3GameSetsData(text, pokemon, flavorsModule, logPrefix),\n      getGen4GameSetsData(text, pokemon, flavorsModule, logPrefix),\n      getGen5GameSetsData(text, pokemon, flavorsModule, logPrefix),\n      getGen6GameSetsData(text, pokemon, flavorsModule, logPrefix),\n      getGen7GameSetsData(text, pokemon, flavorsModule, logPrefix),\n      getGen8GameSetsData(text, pokemon, flavorsModule, logPrefix),\n      getGen9GameSetsData(text, pokemon, flavorsModule, logPrefix),\n      getPokopiaGameData(text, pokemon, flavorsModule, logPrefix)\n    ])\n  ).flat();\n\n  if (results.every((value) => !value)) {\n    failedPokemon.push({\n      pokemon,\n      text\n    });\n    await log({ msg: `${logPrefix}Did not store data for Pokemon`, color: red, isBold: false, isIndent: true });\n  }\n}\n\nexport function getFailedPokemon() {\n  return failedPokemon;\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/parsers/single-game-updater.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport { green, yellow } from 'colorette';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { getTextContent } from '../get-text-content.js';\nimport { log } from '../log-wrapper.js';\n\nexport async function singleGameUpdater(\n  text: string | undefined,\n  flavorTexts: FlavorsModule,\n  pokemon: ParsedPokemon,\n  game: string,\n  logPrefix: string\n): Promise<boolean> {\n  const regexGame = new RegExp(`^(?:{{Dex/Entry1\\\\|v=${game}\\\\|)`);\n\n  const textSplitByNewLine = text?.split('\\n');\n  const gameData = getTextContent(textSplitByNewLine?.find((e) => regexGame.test(e)));\n\n  await log({\n    msg: `${logPrefix}Retrieved ${game} data, it is ${gameData ? 'defined' : 'not defined'}`,\n    color: yellow,\n    isBold: false,\n    isIndent: true\n  });\n\n  if (gameData) {\n    if (flavorTexts[pokemon.number]) {\n      const gameFlavorText = flavorTexts[pokemon.number].find((a) => a.version_id === game);\n      if (gameFlavorText) {\n        gameFlavorText.flavor_text = gameData;\n      } else {\n        flavorTexts[pokemon.number].push({\n          version_id: game,\n          flavor_text: gameData\n        });\n      }\n    } else {\n      flavorTexts[pokemon.number] = [\n        {\n          version_id: game,\n          flavor_text: gameData\n        }\n      ];\n    }\n\n    await log({ msg: `${logPrefix}Stored new ${game} Singular entry in flavor texts`, color: green, isBold: false, isIndent: true });\n  }\n\n  return Boolean(gameData);\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/flavor-text-updater/parsers/triple-game-updater.ts",
    "content": "import type { FlavorsModule } from '#utils/flavorsModule.js';\nimport { green, yellow } from 'colorette';\nimport type { ParsedPokemon } from '../../utils/bulbapedia-utils.js';\nimport { getTextContent } from '../get-text-content.js';\nimport { log } from '../log-wrapper.js';\n\nexport async function tripleGameUpdater(\n  text: string | undefined,\n  flavorTexts: FlavorsModule,\n  pokemon: ParsedPokemon,\n  game1: string,\n  game2: string,\n  game3: string,\n  logPrefix: string\n): Promise<boolean> {\n  const regexGame123 = new RegExp(`^(?:{{Dex/Entry2\\\\|v=${game1}\\\\|v2=${game2}\\\\|v3=${game3}\\\\|)`);\n  const regexGame132 = new RegExp(`^(?:{{Dex/Entry2\\\\|v=${game1}\\\\|v2=${game3}\\\\|v3=${game2}\\\\|)`);\n\n  const regexGame213 = new RegExp(`^(?:{{Dex/Entry3\\\\|v=${game2}\\\\|v2=${game1}\\\\|v3=${game3}\\\\|)`);\n  const regexGame231 = new RegExp(`^(?:{{Dex/Entry3\\\\|v=${game2}\\\\|v2=${game3}\\\\|v3=${game1}\\\\|)`);\n\n  const regexGame321 = new RegExp(`^(?:{{Dex/Entry3\\\\|v=${game3}\\\\|v2=${game2}\\\\|v3=${game1}\\\\|)`);\n  const regexGame312 = new RegExp(`^(?:{{Dex/Entry3\\\\|v=${game3}\\\\|v2=${game1}\\\\|v3=${game2}\\\\|)`);\n\n  const textSplitByNewLine = text?.split('\\n');\n  const game123Based = getTextContent(textSplitByNewLine?.find((e) => regexGame123.test(e)));\n  const game132Based = getTextContent(textSplitByNewLine?.find((e) => regexGame132.test(e)));\n  const game213Based = getTextContent(textSplitByNewLine?.find((e) => regexGame213.test(e)));\n  const game231Based = getTextContent(textSplitByNewLine?.find((e) => regexGame231.test(e)));\n  const game321Based = getTextContent(textSplitByNewLine?.find((e) => regexGame321.test(e)));\n  const game312Based = getTextContent(textSplitByNewLine?.find((e) => regexGame312.test(e)));\n\n  const gameData = game123Based || game132Based || game213Based || game231Based || game321Based || game312Based;\n\n  await log({\n    msg: `${logPrefix}Retrieved ${game1}-${game2}-${game3} Combined data, it is ${gameData ? 'defined' : 'not defined'}`,\n    color: yellow,\n    isBold: false,\n    isIndent: true\n  });\n\n  if (gameData) {\n    if (flavorTexts[pokemon.number]) {\n      const game1FlavorText = flavorTexts[pokemon.number].find((a) => a.version_id === game1);\n      if (game1FlavorText) {\n        game1FlavorText.flavor_text = gameData;\n      } else {\n        flavorTexts[pokemon.number].push({\n          version_id: game1,\n          flavor_text: gameData\n        });\n      }\n\n      const game2FlavorText = flavorTexts[pokemon.number].find((a) => a.version_id === game2);\n      if (game2FlavorText) {\n        game2FlavorText.flavor_text = gameData;\n      } else {\n        flavorTexts[pokemon.number].push({\n          version_id: game2,\n          flavor_text: gameData\n        });\n      }\n\n      const game3FlavorText = flavorTexts[pokemon.number].find((a) => a.version_id === game3);\n      if (game3FlavorText) {\n        game3FlavorText.flavor_text = gameData;\n      } else {\n        flavorTexts[pokemon.number].push({\n          version_id: game3,\n          flavor_text: gameData\n        });\n      }\n    } else {\n      flavorTexts[pokemon.number] = [\n        {\n          version_id: game1,\n          flavor_text: gameData\n        },\n        {\n          version_id: game2,\n          flavor_text: gameData\n        },\n        {\n          version_id: game3,\n          flavor_text: gameData\n        }\n      ];\n    }\n\n    await log({\n      msg: `${logPrefix}Stored new ${game1}-${game2}-${game3} Combined entries in flavor texts`,\n      color: green,\n      isBold: false,\n      isIndent: true\n    });\n  }\n\n  return Boolean(gameData);\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/ipa-name-updater/.gitignore",
    "content": "*.json\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/ipa-name-updater/ipa-updater.ts",
    "content": "import { pokedex } from '#assets/pokedex.js';\nimport { fetch, FetchMediaContentTypes, FetchMethods, FetchResultTypes } from '@sapphire/fetch';\nimport { each } from 'async';\nimport * as cheerio from 'cheerio';\nimport { green, yellow } from 'colorette';\nimport { writeFile } from 'node:fs/promises';\nimport { inspectData, replaceEnumLikeValues, userAgentHeader, writeDataToFileAndPrettify } from '../../../utils.js';\nimport { ensureLogfileExists, getBulbapediaReadyPokemon, type ParsedPokemon } from '../utils/bulbapedia-utils.js';\nimport { generations, ipaNamesUrl } from '../utils/constants.js';\nimport { fetchFlareSolverr } from '../utils/flaresolverr-session-management.js';\nimport type { FlareSolverrResponse } from '../utils/types.js';\nimport { getModulePathForGeneration, getPokemonGenerationForDexNumber } from '../utils/utils.js';\nimport { log, logFile } from './log-wrapper.js';\n\ninterface SucceededPokemon {\n  num: number;\n  forme?: string;\n  species: string;\n  generation: number;\n  respelling: string;\n  ipa: string;\n}\n\nfunction getPokemonFormLetter(forme: string | undefined): string {\n  if (forme?.toLowerCase() === 'alola') return 'A';\n  return '';\n}\n\nconst withFlaresolverr = Boolean(process.env.CI);\nconst failedPokemon: ParsedPokemon[] = [];\nconst succeededPokemon: SucceededPokemon[] = [];\n\nconst failedPokemonTextFile = new URL('./failed-pokemon.json', import.meta.url);\n\nawait ensureLogfileExists(logFile);\n\nconst response = withFlaresolverr\n  ? await fetchFlareSolverr(ipaNamesUrl)\n  : await fetch(\n      ipaNamesUrl,\n      {\n        method: FetchMethods.Get,\n        headers: {\n          ...userAgentHeader,\n          'Content-Type': FetchMediaContentTypes.JSON\n        }\n      },\n      FetchResultTypes.Text\n    );\n\nawait log({ msg: `Fetched data`, color: yellow, isBold: false, isIndent: true });\n\nconst $ = withFlaresolverr ? cheerio.load((response as FlareSolverrResponse).solution.response) : cheerio.load(response as string);\nawait log({ msg: `Loaded text into cheerio`, color: yellow, isBold: false, isIndent: true });\n\nconst text = $('#wpTextbox1').text();\nawait log({ msg: `Loaded text element`, color: yellow, isBold: false, isIndent: true });\n\nawait each(getBulbapediaReadyPokemon(), async (pokemon) => {\n  const paddedNumber = pokemon.number.toString().padStart(3, '0');\n\n  await log({ msg: `${pokemon.species} (${paddedNumber}) - Started processing`, color: yellow, isBold: false, isIndent: true, bypassCiCheck: true });\n\n  const regex = new RegExp(\n    `${paddedNumber}${getPokemonFormLetter(pokemon.forme)}\\\\|\\\\w+}}\\\\n.+\\\\n\\\\|(?<respelling>[\\\\w- ]+).+\\\\n\\\\|(?<ipa>\\\\/[^/]+\\\\/)`,\n    'i'\n  );\n  const match = regex.exec(text);\n\n  const respelling = match?.groups?.respelling;\n  const ipa = match?.groups?.ipa;\n\n  if (respelling && ipa) {\n    succeededPokemon.push({\n      num: pokemon.number,\n      forme: pokemon.forme,\n      species: pokemon.species,\n      generation: getPokemonGenerationForDexNumber(pokemon.number),\n      respelling,\n      ipa\n    });\n  } else {\n    failedPokemon.push(pokemon);\n  }\n});\n\nawait log({ msg: 'Done storing data in memory, formatting and writing to disk', color: green, isBold: true, isIndent: false });\n\nfor (const pokemon of succeededPokemon) {\n  const pokemonFromData = pokemon.forme\n    ? pokedex.find((pokemonData) => pokemonData.num === pokemon.num && pokemonData.forme?.toLowerCase() === pokemon.forme.toLowerCase())\n    : pokedex.find((pokemonData) => pokemonData.num === pokemon.num);\n\n  pokemonFromData.respelling = pokemon.respelling;\n  pokemonFromData.ipa = pokemon.ipa;\n}\n\nconst prependContent = [\n  \"import type { PokemonTypes } from '#assets/pokemon-source';\",\n  \"import { Pokedex } from '#dexdata/pokedex';\",\n  \"import { TypesEnum } from '#utils/pokemonTypes';\",\n  '',\n  'const entries: [string, PokemonTypes.DexEntry][] = '\n].join('\\n');\n\nconst appendContent = [\n  ';', //\n  '',\n  'for (const [key, value] of entries) {',\n  '\\tvalue.key = key;',\n  '',\n  '\\tPokedex.set(key, value);',\n  '}',\n  ''\n].join('\\n');\n\nfor (const generation of generations) {\n  const mapForGeneration = pokedex.filter((poke) => getPokemonGenerationForDexNumber(poke.num) === generation);\n\n  for (const poke of mapForGeneration.values()) {\n    delete poke.key;\n  }\n\n  const content = replaceEnumLikeValues(inspectData([...mapForGeneration.entries()]));\n\n  await writeDataToFileAndPrettify(prependContent + content + appendContent, getModulePathForGeneration(generation));\n}\n\nawait log({ msg: 'Done writing to disk', color: green, isBold: true, isIndent: false });\n\nawait writeFile(failedPokemonTextFile, JSON.stringify(failedPokemon, null, 4), { encoding: 'utf-8' });\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/ipa-name-updater/log-wrapper.ts",
    "content": "import { log as baseLog, type LogParamaters } from '../utils/append-to-log.js';\n\nexport const logFile = new URL('./output.log', import.meta.url);\n\nexport async function log(params: Omit<LogParamaters, 'logFile'>) {\n  return baseLog({ ...params, logFile });\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/update-test-files.ts",
    "content": "import { fetch, FetchMediaContentTypes, FetchMethods, FetchResultTypes } from '@sapphire/fetch';\nimport { writeFile } from 'node:fs/promises';\nimport prettier from 'prettier';\nimport prettierConfig from '../../../.prettierrc.mjs';\nimport { getPokemonWithFullDataAndEvolutions } from '../../../tests/testUtils/queries/pokemon-all-data.js';\nimport { rootDir, userAgentHeader } from '../../utils.js';\n\nconst fullDataResponsesFolder = new URL('tests/testUtils/full-data-responses/', rootDir);\n\nconst data = await Promise.all(['beldum', 'dragonair', 'eevee', 'rattataalola', 'salamence', 'syclar'].map((pokemon) => executeGraphQL(pokemon)));\nconst [beldumData, dragonairData, eeveeData, rattataalolaData, salamenceData, syclarData] = await Promise.all(\n  data.map((response) => stringifyAndFormat(response))\n);\n\nawait Promise.all([\n  writeFile(new URL('beldum.json', fullDataResponsesFolder), beldumData),\n  writeFile(new URL('dragonair.json', fullDataResponsesFolder), dragonairData),\n  writeFile(new URL('eevee.json', fullDataResponsesFolder), eeveeData),\n  writeFile(new URL('rattata-alola.json', fullDataResponsesFolder), rattataalolaData),\n  writeFile(new URL('salamence.json', fullDataResponsesFolder), salamenceData),\n  writeFile(new URL('syclar.json', fullDataResponsesFolder), syclarData)\n]);\n\nasync function stringifyAndFormat(response: PokemonResponse): Promise<string> {\n  const formatted = prettier.format(JSON.stringify(response), { ...prettierConfig, parser: 'json' });\n  return formatted;\n}\n\nasync function executeGraphQL(pokemon: string): Promise<PokemonResponse> {\n  return fetch<PokemonResponse>(\n    'http://localhost:4000',\n    {\n      method: FetchMethods.Post,\n      headers: {\n        ...userAgentHeader,\n        'Content-Type': FetchMediaContentTypes.JSON\n      },\n      body: JSON.stringify({\n        query: getPokemonWithFullDataAndEvolutions.loc?.source.body,\n        variables: { pokemon }\n      })\n    },\n    FetchResultTypes.JSON\n  );\n}\n\ninterface PokemonResponse {\n  data: Record<string, any>;\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/utils/append-to-log.ts",
    "content": "import { bold } from 'colorette';\nimport { appendFile } from 'node:fs/promises';\n\nexport interface LogParamaters {\n  bypassCiCheck?: boolean;\n  msg: string;\n  color: (msg: string) => string;\n  isBold: boolean;\n  isIndent: boolean;\n  logFile: URL;\n}\n\n/**\n * Logs a message with the specified log level, color, and formatting options.\n * @param msg - The message to be logged.\n * @param color - The function to be used for coloring the message.\n * @param isBold - Indicates whether the message should be displayed in bold.\n * @param isIndent - Indicates whether the message should be indented.\n */\nexport async function log({ msg, color, isBold, isIndent, logFile, bypassCiCheck = false }: LogParamaters) {\n  if (process.env.CI) {\n    if (bypassCiCheck) {\n      logToConsole({ msg, color, isBold });\n    }\n  } else {\n    logToConsole({ msg, color, isBold });\n  }\n\n  await appendToLog({ msg, isIndent, logFile });\n}\n\nfunction logToConsole({ msg, color, isBold }: Omit<LogParamaters, 'isIndent' | 'bypassCiCheck' | 'logFile'>) {\n  console.log(isBold ? bold(color(msg)) : color(msg));\n}\n\nasync function appendToLog({ msg, logFile, isIndent = true }: Pick<LogParamaters, 'msg' | 'isIndent' | 'logFile'>) {\n  await appendFile(logFile, `\\n${isIndent ? '\\t' : ''}${msg}`, { encoding: 'utf-8' });\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/utils/bulbapedia-utils.ts",
    "content": "import { pokedex } from '#assets/pokedex.js';\nimport type { PokemonTypes } from '#assets/pokemon-source.js';\nimport { access, appendFile, writeFile } from 'node:fs/promises';\n\nconst bulbapediaBaseUrlPrefix = 'https://bulbapedia.bulbagarden.net/w/index.php?title=';\nconst bulbapediaBaseUrlPostfix = '_(Pok%C3%A9mon)&action=edit';\n\nfunction parseSpeciesForBulbapedia(pokemonData: PokemonTypes.DexEntry) {\n  if (pokemonData.specialBulbapediaUrl) {\n    return bulbapediaBaseUrlPrefix + pokemonData.specialBulbapediaUrl + bulbapediaBaseUrlPostfix;\n  }\n\n  if (pokemonData.baseSpecies) {\n    return bulbapediaBaseUrlPrefix + pokemonData.baseSpecies + bulbapediaBaseUrlPostfix;\n  }\n\n  return bulbapediaBaseUrlPrefix + pokemonData.species + bulbapediaBaseUrlPostfix;\n}\n\nexport async function ensureLogfileExists(logFile: URL | string) {\n  await access(logFile) //\n    .then(() => writeFile(logFile, ''))\n    .catch(() => appendFile(logFile, ''));\n}\n\nexport function getBulbapediaReadyPokemon() {\n  const parsedPokemon: ParsedPokemon[] = [];\n\n  for (const dexEntry of pokedex.values()) {\n    if (dexEntry.num >= 1) {\n      parsedPokemon.push({\n        number: dexEntry.num,\n        species: dexEntry.species,\n        flavorTextUrl: new URL(parseSpeciesForBulbapedia(dexEntry)),\n        forme: dexEntry.forme?.toLowerCase()\n      });\n    }\n  }\n\n  return parsedPokemon;\n}\n\nexport interface ParsedPokemon {\n  number: number;\n  species: string;\n  flavorTextUrl: URL;\n  forme?: string;\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/utils/constants.ts",
    "content": "export const classificationsUrl = 'https://bulbapedia.bulbagarden.net/w/index.php?title=Pok%C3%A9mon_category&action=edit';\nexport const ipaNamesUrl = 'https://bulbapedia.bulbagarden.net/w/index.php?title=User:SnorlaxMonster/Pronunciation&action=edit';\n\nexport const generations = [1, 2, 3, 4, 5, 6, 7, 8, 9] as const;\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/utils/flaresolverr-session-management.ts",
    "content": "import { FetchMediaContentTypes, FetchMethods, FetchResultTypes, fetch } from '@sapphire/fetch';\nimport { userAgentHeader } from '../../../utils.js';\nimport type { FlareSolverrResponse, FlareSolverrSessionCreateResponse } from './types.js';\n\nlet currentSession: string;\nlet cookies: null | object;\nlet sessionTicker: number = 0;\n\nexport async function fetchFlareSolverr(url: URL | string): Promise<FlareSolverrResponse> {\n  await createFlaresolverrSession();\n\n  const response = await fetch<FlareSolverrResponse>(\n    'http://localhost:8191/v1',\n    {\n      method: FetchMethods.Post,\n      headers: {\n        ...userAgentHeader,\n        'Content-Type': FetchMediaContentTypes.JSON\n      },\n      body: JSON.stringify({\n        cmd: 'request.get',\n        url,\n        maxTimeout: 120_000,\n        // session: getCurrentSession(),\n        cookies\n      })\n    },\n    FetchResultTypes.JSON\n  );\n\n  sessionTicker++;\n  cookies = response.solution.cookies;\n\n  if (sessionTicker >= 50) {\n    cookies = null;\n    await destroyFlaresolverrSession();\n  }\n\n  return response;\n}\n\n/**\n * Creates a Flaresolverr session.\n * @returns A promise that resolves to void.\n */\nexport async function createFlaresolverrSession(): Promise<void> {\n  const response = await fetch<FlareSolverrSessionCreateResponse>(\n    'http://localhost:8191/v1',\n    {\n      method: FetchMethods.Post,\n      headers: {\n        ...userAgentHeader,\n        'Content-Type': FetchMediaContentTypes.JSON\n      },\n      body: JSON.stringify({\n        cmd: 'sessions.create'\n      })\n    },\n    FetchResultTypes.JSON\n  );\n\n  currentSession = response.session;\n}\n\n/**\n * Destroys the current FlareSolverr session.\n * @returns A promise that resolves when the session is destroyed.\n */\nexport async function destroyFlaresolverrSession(): Promise<void> {\n  await fetch<FlareSolverrSessionCreateResponse>(\n    'http://localhost:8191/v1',\n    {\n      method: FetchMethods.Post,\n      headers: {\n        ...userAgentHeader,\n        'Content-Type': FetchMediaContentTypes.JSON\n      },\n      body: JSON.stringify({\n        cmd: 'sessions.destroy',\n        session: getCurrentSession()\n      })\n    },\n    FetchResultTypes.JSON\n  );\n}\n\n/**\n * Retrieves the current session.\n *\n * @returns The current session as a string.\n */\nexport function getCurrentSession(): string {\n  return currentSession;\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/utils/pokedex-constants.ts",
    "content": "export const pokedexPrependContent = [\n  \"import type { PokemonTypes } from '#assets/pokemon-source';\",\n  \"import { Pokedex } from '#dexdata/pokedex';\",\n  \"import { TypesEnum } from '#utils/pokemonTypes';\",\n  '',\n  'const entries: [string, PokemonTypes.DexEntry][] = '\n].join('\\n');\n\nexport const pokedexAppendContent = [\n  ';', //\n  '',\n  'for (const [key, value] of entries) {',\n  '\\tvalue.key = key;',\n  '',\n  '\\tPokedex.set(key, value);',\n  '}',\n  ''\n].join('\\n');\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/utils/types.ts",
    "content": "export interface FlareSolverrResponse extends ResponseBaseProperties {\n  solution: FlareSolverrSolution;\n}\n\nexport interface FlareSolverrSessionCreateResponse extends ResponseBaseProperties {\n  session: string;\n}\n\ninterface FlareSolverrSolution {\n  url: string;\n  status: number;\n  cookies: never;\n  userAgent: string;\n  headers: never;\n  response: string;\n}\n\ninterface ResponseBaseProperties {\n  status: string;\n  message: string;\n  startTimestamp: number;\n  endTimestamp: number;\n  version: string;\n}\n"
  },
  {
    "path": "scripts/data-gen-scripts/scripted-updaters/utils/utils.ts",
    "content": "export function getPokemonGenerationForDexNumber(dexNumber: number) {\n  if (dexNumber >= 0 && dexNumber <= 151) return 1;\n  if (dexNumber >= 152 && dexNumber <= 251) return 2;\n  if (dexNumber >= 252 && dexNumber <= 386) return 3;\n  if (dexNumber >= 387 && dexNumber <= 493) return 4;\n  if (dexNumber >= 494 && dexNumber <= 649) return 5;\n  if (dexNumber >= 650 && dexNumber <= 721) return 6;\n  if (dexNumber >= 722 && dexNumber <= 809) return 7;\n  if (dexNumber >= 810 && dexNumber <= 905) return 8;\n  if (dexNumber >= 906 && dexNumber <= 1025) return 9;\n\n  return -1;\n}\n\nexport function getModulePathForGeneration(generation: number) {\n  switch (generation) {\n    case 1:\n      return '#dexdata/gen1';\n    case 2:\n      return '#dexdata/gen2';\n    case 3:\n      return '#dexdata/gen3';\n    case 4:\n      return '#dexdata/gen4';\n    case 5:\n      return '#dexdata/gen5';\n    case 6:\n      return '#dexdata/gen6';\n    case 7:\n      return '#dexdata/gen7';\n    case 8:\n      return '#dexdata/gen8';\n    case 9:\n      return '#dexdata/gen9';\n    default:\n      throw new Error(`Invalid generation: ${generation}`);\n  }\n}\n"
  },
  {
    "path": "scripts/manual-tests/.gitignore",
    "content": "*.json\n"
  },
  {
    "path": "scripts/manual-tests/get-all-data.py",
    "content": "import requests\nimport json\nimport os\n\n# The file that will be written to\nfilePath = './res.json'\n\n# If the file already exists, delete it\nif os.path.exists(filePath):\n    os.remove(filePath)\n\n# The query that will return all data from the API\nquery = '''\n    fragment GenerationalPokemonLearnsetFragment on GenerationalPokemonLearnset {\n        generation3 {\n            ...PokemonLearnsetFragment\n        }\n        generation4 {\n            ...PokemonLearnsetFragment\n        }\n        generation5 {\n            ...PokemonLearnsetFragment\n        }\n        generation6 {\n            ...PokemonLearnsetFragment\n        }\n        generation7 {\n            ...PokemonLearnsetFragment\n        }\n        generation8 {\n            ...PokemonLearnsetFragment\n        }\n    }\n\n    fragment PokemonLearnsetFragment on PokemonLearnset {\n        dreamworldMoves {\n            ...LearnsetMoveFragment\n        }\n        eggMoves {\n            ...LearnsetMoveFragment\n        }\n        eventMoves {\n            ...LearnsetMoveFragment\n        }\n        tmMoves {\n            ...LearnsetMoveFragment\n        }\n        tutorMoves {\n            ...LearnsetMoveFragment\n        }\n        virtualTransferMoves {\n            ...LearnsetMoveFragment\n        }\n        levelUpMoves {\n            ...LearnsetLevelUpMoveFragment\n        }\n    }\n\n    fragment LearnsetLevelUpMoveFragment on LearnsetLevelUpMove {\n        generation\n        level\n        move {\n            ...MoveFragment\n        }\n    }\n\n    fragment MoveFragment on Move {\n        key\n        accuracy\n        basePower\n        bulbapediaPage\n        category\n        contestType\n        desc\n        isFieldMove\n        isGMax\n        isNonstandard\n        isZ\n        maxMovePower\n        name\n        pp\n        priority\n        serebiiPage\n        shortDesc\n        smogonPage\n        target\n        type\n        zMovePower\n    }\n\n    fragment LearnsetMoveFragment on LearnsetMove {\n        generation\n        move {\n            ...MoveFragment\n        }\n    }\n\n    fragment AbilitiesFragment on Abilities {\n        first {\n            ...AbilityFragment\n        }\n        second {\n            ...AbilityFragment\n        }\n        hidden {\n            ...AbilityFragment\n        }\n        special {\n            ...AbilityFragment\n        }\n    }\n\n    fragment AbilityFragment on Ability {\n        name\n        key\n        bulbapediaPage\n        desc\n        isFieldAbility\n        isNonstandard\n        serebiiPage\n        shortDesc\n        smogonPage\n        pokemonThatHaveThisAbility {\n            ...FullDataFragmentWithoutNested\n            learnsets {\n                ...GenerationalPokemonLearnsetFragment\n            }\n        }\n    }\n\n    fragment EvYieldsFragment on EvYields {\n        hp\n        attack\n        defense\n        specialattack\n        specialdefense\n        speed\n    }\n\n    fragment FlavorFragment on Flavor {\n        flavor\n        game\n    }\n\n    fragment GenderFragment on Gender {\n        female\n        male\n    }\n\n    fragment PokemonTypeFragment on PokemonType {\n        name\n        matchup {\n            attacking {\n                doubleEffectiveTypes\n                doubleResistedTypes\n                effectiveTypes\n                effectlessTypes\n                normalTypes\n                resistedTypes\n            }\n            defending {\n                doubleEffectiveTypes\n                doubleResistedTypes\n                effectiveTypes\n                effectlessTypes\n                normalTypes\n                resistedTypes\n            }\n        }\n    }\n\n    fragment StatsFragment on Stats {\n        hp\n        attack\n        defense\n        specialattack\n        specialdefense\n        speed\n    }\n\n    fragment CatchRateFragment on CatchRate {\n        base\n        percentageWithOrdinaryPokeballAtFullHealth\n    }\n\n    fragment FullDataFragmentWithoutNested on Pokemon {\n        key\n        eggGroups\n        evYields {\n            ...EvYieldsFragment\n        }\n        evolutionLevel\n        flavorTexts {\n            ...FlavorFragment\n        }\n        forme\n        formeLetter\n        gender {\n            ...GenderFragment\n        }\n        height\n        isEggObtainable\n        backSprite\n        levellingRate\n        maximumHatchTime\n        minimumHatchTime\n        num\n        otherFormes\n        serebiiPage\n        shinyBackSprite\n        shinySprite\n        smogonPage\n        baseForme\n        smogonTier\n        species\n        sprite\n        types {\n            ...PokemonTypeFragment\n        }\n        baseSpecies\n        baseStats {\n            ...StatsFragment\n        }\n        baseStatsTotal\n        bulbapediaPage\n        catchRate {\n            ...CatchRateFragment\n        }\n        classification\n        respelling\n        ipa\n        color\n        cosmeticFormes\n        cry\n        weight\n    }\n\n    fragment FullDataFragment on Pokemon {\n        abilities {\n            ...AbilitiesFragment\n        }\n        learnsets {\n            ...GenerationalPokemonLearnsetFragment\n        }\n        ...FullDataFragmentWithoutNested\n    }\n\n    fragment FullData on Pokemon {\n        ...FullDataFragment\n        evolutions {\n            ...FullDataFragment\n            evolutions {\n                ...FullDataFragment\n            }\n            preevolutions {\n                ...FullDataFragment\n            }\n        }\n        preevolutions {\n            ...FullDataFragment\n            evolutions {\n                ...FullDataFragment\n            }\n            preevolutions {\n                ...FullDataFragment\n            }\n        }\n    }\n\n    query GetPokemon($offset: Int, $take: Int) {\n        getAllPokemon(offset: $offset, take: $take) {\n            ...FullData\n        }\n    }\n'''\n\n# Send the request\nresponse = requests.post(\n    'http://localhost:4000',\n    json={'query': query, 'variables': {'offset': 0, 'take': 1469}},\n    headers={'Content-Type': 'application/json'}\n)\n\n# The response body is a byte string, we need to decode it\nbody = response.content.decode('utf-8')\n\n# Parse the JSON string into a Python dictionary\ndata = json.loads(body)\n\n# Write the JSON string to a file\nwith open(filePath, 'w') as file:\n    json.dump(data, file)\n"
  },
  {
    "path": "scripts/manual-tests/requirements.txt",
    "content": "requests==2.32.5\nautopep8==2.3.2\npylint==4.0.5"
  },
  {
    "path": "scripts/on-build-success.ts",
    "content": "import { copyFile } from 'node:fs/promises';\nimport { rootDir } from './utils.js';\n\nconst srcAssetsDir = new URL('src/lib/assets/', rootDir);\nconst apiAssetsDir = new URL('api/lib/assets/', rootDir);\n\nawait copyFile(new URL('flavorText.json', srcAssetsDir), new URL('flavorText.json', apiAssetsDir));\nawait copyFile(new URL('formats.json', srcAssetsDir), new URL('formats.json', apiAssetsDir));\n"
  },
  {
    "path": "scripts/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.base.json\",\n  \"include\": [\".\"],\n  \"compilerOptions\": {\n    \"strict\": false,\n    \"resolveJsonModule\": true,\n    \"baseUrl\": \"../src\",\n    \"paths\": {\n      \"#assets/*\": [\"./lib/assets/*\"],\n      \"#jsonAssets/*.json\": [\"./lib/assets/*.json\"],\n      \"#dexdata/*\": [\"./lib/assets/pokedex-data/*\"],\n      \"#resolvers/*\": [\"./lib/resolvers/*\"],\n      \"#types\": [\"./lib/mapped-types/graphql-mapped-types.d.ts\"],\n      \"#utils/*\": [\"./lib/utils/*\"],\n      \"#validations/*\": [\"./lib/validations/*\"],\n      \"#mappers/*\": [\"./lib/mappers/*\"],\n      \"#root/*\": [\"*\"]\n    }\n  }\n}\n"
  },
  {
    "path": "scripts/utils.ts",
    "content": "import { FetchResultTypes, fetch } from '@sapphire/fetch';\nimport { readFile, rm, writeFile } from 'node:fs/promises';\nimport { platform, release } from 'node:os';\nimport { inspect } from 'node:util';\nimport prettier from 'prettier';\nimport ts from 'typescript';\nimport prettierConfig from '../.prettierrc.mjs';\n\nexport const rootDir = new URL('../', import.meta.url);\n\nexport function mapToJson<K extends PropertyKey, V extends object>(map: Map<K, V>): string {\n  return JSON.stringify([...map]);\n}\n\nexport async function importFileFromWeb<T extends object>({ url, temporaryFileName }): Promise<T> {\n  const body = await fetch(url, { headers: userAgentHeader }, FetchResultTypes.Text);\n\n  const result = ts.transpileModule(body, {\n    compilerOptions: {\n      module: ts.ModuleKind.ESNext,\n      newLine: ts.NewLineKind.LineFeed,\n      moduleResolution: ts.ModuleResolutionKind.NodeJs,\n      target: ts.ScriptTarget.ESNext,\n      removeComments: true,\n      declaration: false,\n      sourceMap: false,\n      declarationMap: false,\n      incremental: false,\n      importHelpers: false\n    }\n  });\n\n  const temporaryOutputFile = new URL(temporaryFileName, import.meta.url);\n\n  await writeFile(temporaryOutputFile, result.outputText);\n  // @ts-expect-error Node supports URLs just fine\n  const tiersData = await import(temporaryOutputFile);\n\n  await rm(temporaryOutputFile);\n\n  return tiersData;\n}\n\nexport function sortObjectByKey<T extends object>(obj: T): T {\n  const keys: string[] = [];\n  const sortedObj: T = {} as T;\n\n  for (const key in obj) {\n    if (Reflect.has(obj, key)) {\n      keys.push(key);\n    }\n  }\n\n  keys.sort((a, b) => {\n    const lowercaseA = a.toLowerCase();\n    const lowercaseB = b.toLowerCase();\n\n    if (lowercaseA < lowercaseB) {\n      return -1;\n    }\n\n    if (lowercaseA > lowercaseB) {\n      return 1;\n    }\n\n    return 0;\n  });\n\n  for (const key of keys) {\n    sortedObj[key] = obj[key];\n  }\n\n  return sortedObj;\n}\n\n/**\n * Replaces occurrences of \"Poke Ball\" with \"Poké Ball\" and \"Pokemon\" with \"Pokémon\" in the input string.\n * @param input - The input string to be processed.\n * @returns The input string with the replacements made.\n */\nexport function replacePokeWithAccentedPoke(input: string) {\n  return input //\n    .replaceAll('Poke Ball', 'Poké Ball')\n    .replaceAll('Pokemon', 'Pokémon');\n}\n\nexport function inspectData<T>(data: T): string {\n  return inspect(data, {\n    depth: Infinity,\n    maxArrayLength: Infinity,\n    showHidden: false\n  });\n}\n\nexport function replaceEnumLikeValues(data: string): string {\n  const isNonStandardReplacedData = data\n    .replaceAll(/\"?isNonstandard\"?: ['\"]Past['\"]/g, 'isNonstandard: IsNonStandard.Past')\n    .replaceAll(/\"?isNonstandard\"?: ['\"]Unobtainable['\"]/g, 'isNonstandard: IsNonStandard.Unobtainable')\n    .replaceAll(/\"?isNonstandard\"?: ['\"]CAP['\"]/g, 'isNonstandard: IsNonStandard.Cap')\n    .replaceAll(/\"?isNonstandard\"?: ['\"]Gigantamax['\"]/g, 'isNonstandard: IsNonStandard.Gigantamax')\n    .replaceAll(/\"?isNonstandard\"?: ['\"]LetsGoPikachuEevee['\"]/g, 'isNonstandard: IsNonStandard.LetsGoPikachuEevee');\n\n  const typesEnumRegex = /\"?types\"?: \\[\\s['\"]([a-zA-Z]+)['\"](?:, ['\"]([a-zA-Z]+)['\"])?\\s\\]/g;\n\n  const replacedTypesData = isNonStandardReplacedData.replace(typesEnumRegex, (_, type1, type2) => {\n    const capitalizedType1 = type1.charAt(0).toUpperCase() + type1.slice(1);\n\n    if (type2) {\n      const capitalizedType2 = type2.charAt(0).toUpperCase() + type2.slice(1);\n      return `types: [TypesEnum.${capitalizedType1}, TypesEnum.${capitalizedType2}]`;\n    }\n\n    return `types: [TypesEnum.${capitalizedType1}]`;\n  });\n\n  return replacedTypesData;\n}\n\nexport async function writeDataToFileAndPrettify(data: string, fileResolver: string | URL): Promise<void> {\n  const fileToWriteTo = typeof fileResolver === 'string' ? new URL(import.meta.resolve(fileResolver)) : fileResolver;\n\n  const formattedData = await prettier.format(data, { ...prettierConfig, parser: 'typescript' });\n  await writeFile(fileToWriteTo, formattedData);\n}\n\nexport interface GitCommit {\n  sha: string;\n}\n\nconst packageJsonRaw = await readFile(new URL('../package.json', import.meta.url), 'utf8');\nconst { version, repository } = JSON.parse(packageJsonRaw);\nconst userAgent = `@favware/graphql-pokemon/${version} (NodeJS) ${platform()}/${release()} (${repository.url.slice(4)})`;\nexport const userAgentHeader = { 'User-Agent': userAgent };\n"
  },
  {
    "path": "scripts/wait-for-port.sh",
    "content": "#!/bin/bash\n\nPORT=${PORT:-4000}\n\necho \"Waiting for service to launch on port ${PORT}...\"\n\nwhile ! nc -z localhost ${PORT}; do\n  sleep 0.1 # wait for 1/10th of a second before check again\ndone\n\necho \"Service launched\"\n"
  },
  {
    "path": "src/defaultDocument.ts",
    "content": "export const defaultDocument = `\nquery GetPokemon(\n  $pokemon: PokemonEnum!\n  $offsetFlavorTexts: Int\n  $takeFlavorTexts: Int\n  $reverseFlavorTexts: Boolean\n) {\n  getPokemon(\n    pokemon: $pokemon\n    offsetFlavorTexts: $offsetFlavorTexts\n    takeFlavorTexts: $takeFlavorTexts\n    reverseFlavorTexts: $reverseFlavorTexts\n  ) {\n    ...FullData\n  }\n}\n\nfragment GenerationalPokemonLearnsetFragment on GenerationalPokemonLearnset {\n  generation3 {\n    ...PokemonLearnsetFragment\n  }\n  generation4 {\n    ...PokemonLearnsetFragment\n  }\n  generation5 {\n    ...PokemonLearnsetFragment\n  }\n  generation6 {\n    ...PokemonLearnsetFragment\n  }\n  generation7 {\n    ...PokemonLearnsetFragment\n  }\n  generation8 {\n    ...PokemonLearnsetFragment\n  }\n}\n\nfragment PokemonLearnsetFragment on PokemonLearnset {\n  dreamworldMoves {\n    ...LearnsetMoveFragment\n  }\n  eggMoves {\n    ...LearnsetMoveFragment\n  }\n  eventMoves {\n    ...LearnsetMoveFragment\n  }\n  tmMoves {\n    ...LearnsetMoveFragment\n  }\n  tutorMoves {\n    ...LearnsetMoveFragment\n  }\n  virtualTransferMoves {\n    ...LearnsetMoveFragment\n  }\n  levelUpMoves {\n    ...LearnsetLevelUpMoveFragment\n  }\n}\n\nfragment LearnsetLevelUpMoveFragment on LearnsetLevelUpMove {\n  generation\n  level\n  move {\n    ...MoveFragment\n  }\n}\n\nfragment MoveFragment on Move {\n  key\n  accuracy\n  basePower\n  bulbapediaPage\n  category\n  contestType\n  desc\n  isFieldMove\n  isGMax\n  isNonstandard\n  isZ\n  maxMovePower\n  name\n  pp\n  priority\n  serebiiPage\n  shortDesc\n  smogonPage\n  target\n  type\n  zMovePower\n}\n\nfragment LearnsetMoveFragment on LearnsetMove {\n  generation\n  move {\n    ...MoveFragment\n  }\n}\n\nfragment AbilitiesFragment on Abilities {\n  first {\n    ...AbilityFragment\n  }\n  second {\n    ...AbilityFragment\n  }\n  hidden {\n    ...AbilityFragment\n  }\n  special {\n    ...AbilityFragment\n  }\n}\n\nfragment AbilityFragment on Ability {\n  name\n  key\n  bulbapediaPage\n  desc\n  isFieldAbility\n  serebiiPage\n  shortDesc\n  smogonPage\n  pokemonThatHaveThisAbility {\n    ...FullDataFragmentWithoutNested\n    learnsets {\n      ...GenerationalPokemonLearnsetFragment\n    }\n  }\n}\n\nfragment EvYieldsFragment on EvYields {\n  hp\n  attack\n  defense\n  specialattack\n  specialdefense\n  speed\n}\n\nfragment FlavorFragment on Flavor {\n  flavor\n  game\n}\n\nfragment GenderFragment on Gender {\n  female\n  male\n}\n\nfragment PokemonTypeFragment on PokemonType {\n  name\n  matchup {\n    attacking {\n      doubleEffectiveTypes\n      doubleResistedTypes\n      effectiveTypes\n      effectlessTypes\n      normalTypes\n      resistedTypes\n    }\n    defending {\n      doubleEffectiveTypes\n      doubleResistedTypes\n      effectiveTypes\n      effectlessTypes\n      normalTypes\n      resistedTypes\n    }\n  }\n}\n\nfragment StatsFragment on Stats {\n  hp\n  attack\n  defense\n  specialattack\n  specialdefense\n  speed\n}\n\nfragment CatchRateFragment on CatchRate {\n  base\n  percentageWithOrdinaryPokeballAtFullHealth\n}\n\nfragment FullDataFragmentWithoutNested on Pokemon {\n  key\n  eggGroups\n  evYields {\n    ...EvYieldsFragment\n  }\n  evolutionLevel\n  flavorTexts {\n    ...FlavorFragment\n  }\n  forme\n  formeLetter\n  gender {\n    ...GenderFragment\n  }\n  height\n  isEggObtainable\n  backSprite\n  levellingRate\n  maximumHatchTime\n  minimumHatchTime\n  num\n  otherFormes\n  serebiiPage\n  shinyBackSprite\n  shinySprite\n  smogonPage\n  baseForme\n  smogonTier\n  species\n  sprite\n  types {\n    ...PokemonTypeFragment\n  }\n  baseSpecies\n  baseStats {\n    ...StatsFragment\n  }\n  baseStatsTotal\n  bulbapediaPage\n  catchRate {\n    ...CatchRateFragment\n  }\n  classification\n  respelling\n  ipa\n  color\n  cosmeticFormes\n  cry\n  weight\n}\n\nfragment FullDataFragment on Pokemon {\n  abilities {\n    ...AbilitiesFragment\n  }\n  learnsets {\n    ...GenerationalPokemonLearnsetFragment\n  }\n  ...FullDataFragmentWithoutNested\n}\n\nfragment FullData on Pokemon {\n  ...FullDataFragment\n  evolutions {\n    ...FullDataFragment\n    evolutions {\n      ...FullDataFragment\n    }\n    preevolutions {\n      ...FullDataFragment\n    }\n  }\n  preevolutions {\n    ...FullDataFragment\n    evolutions {\n      ...FullDataFragment\n    }\n    preevolutions {\n      ...FullDataFragment\n    }\n  }\n}\n`;\n\nexport const defaultVariables = JSON.parse(\n  JSON.stringify({\n    pokemon: 'dragonair',\n    offsetFlavorTexts: 0,\n    takeFlavorTexts: 1,\n    reverseFlavorTexts: true\n  })\n);\n"
  },
  {
    "path": "src/index.ts",
    "content": "import '#utils/flavorsModule';\nimport '#utils/formatsModule';\n\nimport gqlServer from '#root/server';\n\nconst port = process.env.PORT || 4000;\nconst server = await gqlServer();\n\nserver.listen({ port: Number(port) }, () => {\n  console.log(`server started on http://localhost:${port}`);\n});\n"
  },
  {
    "path": "src/lib/assets/abilities.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { IsNonStandard } from '#utils/isNonStandardEnum';\nimport { Collection } from '@discordjs/collection';\n\n/** The abilities in Pokémon */\nexport const abilities = new Collection<string, PokemonTypes.Ability>([\n  [\n    'adaptability',\n    {\n      desc: \"This Pokémon's moves that match one of its types have a same-type attack bonus (STAB) of 2 instead of 1.5.\",\n      name: 'Adaptability',\n      shortDesc: \"This Pokémon's same-type attack bonus (STAB) is 2 instead of 1.5.\"\n    }\n  ],\n  [\n    'aerilate',\n    {\n      desc: \"This Pokémon's Normal-type moves become Flying-type moves and have their power multiplied by 1.2. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.\",\n      name: 'Aerilate',\n      shortDesc: \"This Pokémon's Normal-type moves become Flying type and have 1.2x power.\"\n    }\n  ],\n  [\n    'aftermath',\n    {\n      desc: \"If this Pokémon is knocked out with a contact move, that move's user loses 1/4 of its maximum HP, rounded down. This effect is prevented if the move's user has the Magic Guard Ability or if any active Pokémon has the Damp Ability.\",\n      name: 'Aftermath',\n      shortDesc: \"If this Pokémon is KOed with a contact move, that move's user loses 1/4 its max HP.\"\n    }\n  ],\n  [\n    'airlock',\n    {\n      name: 'Air Lock',\n      shortDesc: 'While this Pokémon is active, the effects of weather conditions are disabled.'\n    }\n  ],\n  [\n    'analytic',\n    {\n      desc: \"The power of this Pokémon's move is multiplied by 1.3 if it is the last to move in a turn. Does not affect Doom Desire and Future Sight.\",\n      name: 'Analytic',\n      shortDesc: \"This Pokémon's attacks have 1.3x power if it is the last to move in a turn.\"\n    }\n  ],\n  [\n    'angerpoint',\n    {\n      desc: 'If this Pokémon, but not its substitute, is struck by a critical hit, its Attack is raised by 12 stages.',\n      name: 'Anger Point',\n      shortDesc: 'If this Pokémon (not its substitute) takes a critical hit, its Attack is raised 12 stages.'\n    }\n  ],\n  [\n    'angershell',\n    {\n      desc: 'When this Pokémon has more than 1/2 its maximum HP and takes damage from an attack bringing it to 1/2 or less of its maximum HP, its Attack, Special Attack, and Speed are raised by 1 stage, and its Defense and Special Defense are lowered by 1 stage. This effect applies after all hits from a multi-hit move. This effect is prevented if the move had a secondary effect removed by the Sheer Force Ability.',\n      name: 'Anger Shell',\n      shortDesc: \"At 1/2 or less of this Pokémon's max HP: +1 Atk, Sp. Atk, Spe, and -1 Def, Sp. Def.\"\n    }\n  ],\n  [\n    'anticipation',\n    {\n      desc: 'On switch-in, this Pokémon is alerted if any opposing Pokémon has an attacking move with a type that is super effective against this Pokémon, or any OHKO move. This effect considers Hidden Power to be its determined type, and every other move to be its original type.',\n      name: 'Anticipation',\n      shortDesc: 'On switch-in, this Pokémon shudders if any foe has a supereffective or OHKO move.'\n    }\n  ],\n  [\n    'arenatrap',\n    {\n      desc: 'Prevents opposing Pokémon from choosing to switch out unless they are airborne, are holding a Shed Shell, or are a Ghost type.',\n      isFieldAbility:\n        'Having a Pokémon with Arena Trap at the front of your party will double the encounter rate of all wild Pokémon, even if the Pokémon with Arena Trap has fainted.',\n      name: 'Arena Trap',\n      shortDesc: 'Prevents opposing Pokémon from choosing to switch out unless they are airborne.'\n    }\n  ],\n  [\n    'armortail',\n    {\n      desc: 'Priority moves used by opposing Pokémon targeting this Pokémon or its allies are prevented from having an effect.',\n      name: 'Armor Tail',\n      shortDesc: 'This Pokémon and its allies are protected from opposing priority moves.'\n    }\n  ],\n  [\n    'aromaveil',\n    {\n      desc: 'This Pokémon and its allies cannot become affected by Attract, Disable, Encore, Heal Block, Taunt, or Torment.',\n      name: 'Aroma Veil',\n      shortDesc: 'Protects user/allies from Attract, Disable, Encore, Heal Block, Taunt, and Torment.'\n    }\n  ],\n  [\n    'asoneglastrier',\n    {\n      name: 'As One (Glastrier)',\n      shortDesc: 'Combination of the Unnerve and Chilling Neigh Abilities.'\n    }\n  ],\n  [\n    'asonespectrier',\n    {\n      name: 'As One (Spectrier)',\n      shortDesc: 'Combination of the Unnerve and Grim Neigh Abilities.'\n    }\n  ],\n  [\n    'aurabreak',\n    {\n      desc: 'While this Pokémon is active, the effects of the Dark Aura and Fairy Aura Abilities are reversed, multiplying the power of Dark- and Fairy-type moves, respectively, by 3/4 instead of 1.33.',\n      name: 'Aura Break',\n      shortDesc: 'While this Pokémon is active, the Dark Aura and Fairy Aura power modifier is 0.75x.'\n    }\n  ],\n  [\n    'baddreams',\n    {\n      desc: 'Causes opposing Pokémon to lose 1/8 of their maximum HP, rounded down, at the end of each turn if they are asleep.',\n      name: 'Bad Dreams',\n      shortDesc: 'Causes sleeping foes to lose 1/8 of their max HP at the end of each turn.'\n    }\n  ],\n  [\n    'ballfetch',\n    {\n      desc: 'At any time after the first Poké Ball is thrown and fails to catch a Pokémon, at the end of a turn, if a Pokémon with Ball Fetch is on the field and not holding another item, it will pick up the same type of ball as the first one thrown. This can only occur once in a battle.',\n      name: 'Ball Fetch',\n      shortDesc: 'No competitive use.'\n    }\n  ],\n  [\n    'battery',\n    {\n      name: 'Battery',\n      shortDesc: \"This Pokémon's allies have the power of their special attacks multiplied by 1.3.\"\n    }\n  ],\n  [\n    'battlearmor',\n    {\n      name: 'Battle Armor',\n      shortDesc: 'This Pokémon cannot be struck by a critical hit.'\n    }\n  ],\n  [\n    'battlebond',\n    {\n      desc: 'If this Pokémon is a Greninja, its Attack, Special Attack, and Speed are raised by 1 stage if it attacks and knocks out another Pokémon. This effect can only happen once per battle.',\n      name: 'Battle Bond',\n      shortDesc: 'After KOing a Pokémon: raises Attack, Sp. Atk, Speed by 1 stage. Once per battle.'\n    }\n  ],\n  [\n    'beadsofruin',\n    {\n      name: 'Beads of Ruin',\n      shortDesc: 'Active Pokémon without this Ability have their Special Defense multiplied by 0.75.'\n    }\n  ],\n  [\n    'beastboost',\n    {\n      desc: \"This Pokémon's highest stat is raised by 1 stage if it attacks and knocks out another Pokémon. Stat stage changes are not considered. If multiple stats are tied, Attack, Defense, Special Attack, Special Defense, and Speed are prioritized in that order.\",\n      name: 'Beast Boost',\n      shortDesc: \"This Pokémon's highest stat is raised by 1 if it attacks and KOes another Pokémon.\"\n    }\n  ],\n  [\n    'berserk',\n    {\n      desc: 'When this Pokémon has more than 1/2 its maximum HP and takes damage from an attack bringing it to 1/2 or less of its maximum HP, its Special Attack is raised by 1 stage. This effect applies after all hits from a multi-hit move. This effect is prevented if the move had a secondary effect removed by the Sheer Force Ability.',\n      name: 'Berserk',\n      shortDesc: \"This Pokémon's Sp. Atk is raised by 1 when it reaches 1/2 or less of its max HP.\"\n    }\n  ],\n  [\n    'bigpecks',\n    {\n      name: 'Big Pecks',\n      shortDesc: \"Prevents other Pokémon from lowering this Pokémon's Defense stat stage.\"\n    }\n  ],\n  [\n    'blaze',\n    {\n      desc: 'When this Pokémon has 1/3 or less of its maximum HP, rounded down, its offensive stat is multiplied by 1.5 while using a Fire-type attack.',\n      name: 'Blaze',\n      shortDesc: \"At 1/3 or less of its max HP, this Pokémon's offensive stat is 1.5x with Fire attacks.\"\n    }\n  ],\n  [\n    'bulletproof',\n    {\n      desc: 'This Pokémon is immune to ballistic moves. Ballistic moves include Bullet Seed, Octazooka, Barrage, Rock Wrecker, Zap Cannon, Acid Spray, Aura Sphere, Focus Blast, and all moves with Ball or Bomb in their name.',\n      name: 'Bulletproof',\n      shortDesc: 'This Pokémon is immune to bullet moves.'\n    }\n  ],\n  [\n    'cheekpouch',\n    {\n      desc: \"If this Pokémon eats a held Berry, it restores 1/3 of its maximum HP, rounded down, in addition to the Berry's effect. This effect can also activate after the effects of Bug Bite, Fling, Pluck, Stuff Cheeks, and Teatime if the eaten Berry had an effect on this Pokémon.\",\n      name: 'Cheek Pouch',\n      shortDesc: \"If this Pokémon eats a Berry, it restores 1/3 of its max HP after the Berry's effect.\"\n    }\n  ],\n  [\n    'chillingneigh',\n    {\n      desc: \"This Pokémon's Attack is raised by 1 stage if it attacks and knocks out another Pokémon.\",\n      name: 'Chilling Neigh',\n      shortDesc: \"This Pokémon's Attack is raised by 1 stage if it attacks and KOes another Pokémon.\"\n    }\n  ],\n  [\n    'chlorophyll',\n    {\n      desc: \"If Sunny Day is active, this Pokémon's Speed is doubled. This effect is prevented if this Pokémon is holding a Utility Umbrella.\",\n      name: 'Chlorophyll',\n      shortDesc: \"If Sunny Day is active, this Pokémon's Speed is doubled.\"\n    }\n  ],\n  [\n    'clearbody',\n    {\n      name: 'Clear Body',\n      shortDesc: \"Prevents other Pokémon from lowering this Pokémon's stat stages.\"\n    }\n  ],\n  [\n    'cloudnine',\n    {\n      name: 'Cloud Nine',\n      shortDesc: 'While this Pokémon is active, the effects of weather conditions are disabled.'\n    }\n  ],\n  [\n    'colorchange',\n    {\n      desc: \"This Pokémon's type changes to match the type of the last move that hit it, unless that type is already one of its types. This effect applies after all hits from a multi-hit move. This effect is prevented if the move had a secondary effect removed by the Sheer Force Ability.\",\n      name: 'Color Change',\n      shortDesc: \"This Pokémon's type changes to the type of a move it's hit by, unless it has the type.\"\n    }\n  ],\n  [\n    'comatose',\n    {\n      desc: 'This Pokémon is considered to be asleep and cannot become affected by a non-volatile status condition or Yawn.',\n      name: 'Comatose',\n      shortDesc: 'This Pokémon cannot be statused, and is considered to be asleep.'\n    }\n  ],\n  [\n    'commander',\n    {\n      desc: \"If this Pokémon is a Tatsugiri and a Dondozo is an active ally, this Pokémon goes into the Dondozo's mouth. The Dondozo has its Attack, Special Attack, Speed, Defense, and Special Defense raised by 2 stages. During the effect, the Dondozo cannot be switched out, this Pokémon cannot select an action, and attacks targeted at this Pokémon will be avoided but it will still take indirect damage. If this Pokémon faints during the effect, a Pokémon can be switched in as a replacement but the Dondozo remains unable to be switched out. If the Dondozo faints during the effect, this Pokémon regains the ability to select an action.\",\n      name: 'Commander',\n      shortDesc: \"If ally is Dondozo: this Pokémon cannot act or be hit, +2 to all Dondozo's stats.\"\n    }\n  ],\n  [\n    'competitive',\n    {\n      desc: \"This Pokémon's Special Attack is raised by 2 stages for each of its stat stages that is lowered by an opposing Pokémon.\",\n      name: 'Competitive',\n      shortDesc: \"This Pokémon's Sp. Atk is raised by 2 for each of its stats that is lowered by a foe.\"\n    }\n  ],\n  [\n    'compoundeyes',\n    {\n      isFieldAbility:\n        'Having a Pokémon with Compound Eyes at the front of your party increases the chances of finding a wild Pokémon holding an item increase from 50%/5% to 60%/20%. In dark grass in Generation 5, the chances increase from 50%/5%/1% to 60%/20%/5%.',\n      name: 'Compound Eyes',\n      shortDesc: \"This Pokémon's moves have their accuracy multiplied by 1.3.\"\n    }\n  ],\n  [\n    'contrary',\n    {\n      desc: 'If this Pokémon has a stat stage raised it is lowered instead, and vice versa. This Ability does not affect stat stage increases received from Z-Power effects that happen before a Z-Move is used.',\n      name: 'Contrary',\n      shortDesc: 'If this Pokémon has a stat stage raised it is lowered instead, and vice versa.'\n    }\n  ],\n  [\n    'corrosion',\n    {\n      name: 'Corrosion',\n      shortDesc: 'This Pokémon can poison or badly poison a Pokémon regardless of its typing.'\n    }\n  ],\n  [\n    'costar',\n    {\n      name: 'Costar',\n      shortDesc: \"On switch-in, this Pokémon copies all of its ally's stat stage changes.\"\n    }\n  ],\n  [\n    'cottondown',\n    {\n      desc: 'When this Pokémon is hit by an attack, the Speed of all other Pokémon on the field is lowered by 1 stage.',\n      name: 'Cotton Down',\n      shortDesc: 'If this Pokémon is hit, it lowers the Speed of all other Pokémon on the field 1 stage.'\n    }\n  ],\n  [\n    'cudchew',\n    {\n      desc: 'When this Pokémon consumes a berry, it will consume the berry again at the end of the following turn.',\n      name: 'Cud Chew',\n      shortDesc: 'If this Pokémon eats a Berry, it will eat that Berry again at the end of the next turn.'\n    }\n  ],\n  [\n    'curiousmedicine',\n    {\n      name: 'Curious Medicine',\n      shortDesc: \"On switch-in, this Pokémon's allies have their stat stages reset to 0.\"\n    }\n  ],\n  [\n    'cursedbody',\n    {\n      desc: \"If this Pokémon is hit by an attack, there is a 30% chance that move gets disabled unless one of the attacker's moves is already disabled.\",\n      name: 'Cursed Body',\n      shortDesc: 'If this Pokémon is hit by an attack, there is a 30% chance that move gets disabled.'\n    }\n  ],\n  [\n    'cutecharm',\n    {\n      desc: 'There is a 30% chance a Pokémon making contact with this Pokémon will become infatuated if it is of the opposite gender.',\n      isFieldAbility:\n        'If a Pokémon with Cute Charm is at the front of the party (even if fainted), there is a 66.7% chance that a Pokémon of the opposite gender to the Pokémon with Cute Charm will be encountered. This does not affect swarming Pokémon species (except in Generation 4) or Pokémon found in Hidden Grottos.',\n      name: 'Cute Charm',\n      shortDesc: '30% chance of infatuating Pokémon of the opposite gender if they make contact.'\n    }\n  ],\n  [\n    'damp',\n    {\n      desc: 'While this Pokémon is active, Explosion, Mind Blown, Misty Explosion, Self-Destruct, and the Aftermath Ability are prevented from having an effect.',\n      name: 'Damp',\n      shortDesc: 'Prevents Explosion/Mind Blown/Misty Explosion/Self-Destruct/Aftermath while active.'\n    }\n  ],\n  [\n    'dancer',\n    {\n      desc: 'After another Pokémon uses a dance move, this Pokémon uses the same move. The copied move is subject to all effects that can prevent a move from being executed. A move used through this Ability cannot be copied again by other Pokémon with this Ability.',\n      name: 'Dancer',\n      shortDesc: 'After another Pokémon uses a dance move, this Pokémon uses the same move.'\n    }\n  ],\n  [\n    'darkaura',\n    {\n      desc: 'While this Pokémon is active, the power of Dark-type moves used by active Pokémon is multiplied by 1.33.',\n      name: 'Dark Aura',\n      shortDesc: 'While this Pokémon is active, a Dark move used by any Pokémon has 1.33x power.'\n    }\n  ],\n  [\n    'dauntlessshield',\n    {\n      name: 'Dauntless Shield',\n      shortDesc: \"On switch-in, this Pokémon's Defense is raised by 1 stage. Once per battle.\"\n    }\n  ],\n  [\n    'dazzling',\n    {\n      desc: 'Priority moves used by opposing Pokémon targeting this Pokémon or its allies are prevented from having an effect.',\n      name: 'Dazzling',\n      shortDesc: 'This Pokémon and its allies are protected from opposing priority moves.'\n    }\n  ],\n  [\n    'defeatist',\n    {\n      desc: 'While this Pokémon has 1/2 or less of its maximum HP, its Attack and Special Attack are halved.',\n      name: 'Defeatist',\n      shortDesc: 'While this Pokémon has 1/2 or less of its max HP, its Attack and Sp. Atk are halved.'\n    }\n  ],\n  [\n    'defiant',\n    {\n      desc: \"This Pokémon's Attack is raised by 2 stages for each of its stat stages that is lowered by an opposing Pokémon.\",\n      name: 'Defiant',\n      shortDesc: \"This Pokémon's Attack is raised by 2 for each of its stats that is lowered by a foe.\"\n    }\n  ],\n  [\n    'deltastream',\n    {\n      desc: 'On switch-in, the weather becomes Delta Stream, which removes the weaknesses of the Flying type from Flying-type Pokémon. This weather remains in effect until this Ability is no longer active for any Pokémon, or the weather is changed by the Desolate Land or Primordial Sea Abilities.',\n      name: 'Delta Stream',\n      shortDesc: 'On switch-in, strong winds begin until this Ability is not active in battle.'\n    }\n  ],\n  [\n    'desolateland',\n    {\n      desc: 'On switch-in, the weather becomes Desolate Land, which includes all the effects of Sunny Day and prevents damaging Water-type moves from executing. This weather remains in effect until this Ability is no longer active for any Pokémon, or the weather is changed by the Delta Stream or Primordial Sea Abilities.',\n      name: 'Desolate Land',\n      shortDesc: 'On switch-in, extremely harsh sunlight begins until this Ability is not active in battle.'\n    }\n  ],\n  [\n    'disguise',\n    {\n      desc: 'If this Pokémon is a Mimikyu, the first hit it takes in battle deals 0 neutral damage. Its disguise is then broken, it changes to Busted Form, and it loses 1/8 of its max HP. Confusion damage also breaks the disguise.',\n      name: 'Disguise',\n      shortDesc: '(Mimikyu only) The first hit it takes is blocked, and it takes 1/8 HP damage instead.'\n    }\n  ],\n  [\n    'download',\n    {\n      desc: \"On switch-in, this Pokémon's Attack or Special Attack is raised by 1 stage based on the weaker combined defensive stat of all opposing Pokémon. Attack is raised if their Defense is lower, and Special Attack is raised if their Special Defense is the same or lower.\",\n      name: 'Download',\n      shortDesc: \"On switch-in, Attack or Sp. Atk is raised 1 stage based on the foes' weaker Defense.\"\n    }\n  ],\n  [\n    'dragonize',\n    {\n      desc: \"This Pokémon's Normal-type moves become Dragon-type moves and have their power multiplied by 1.2. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.\",\n      name: 'Dragonize',\n      shortDesc: \"This Pokémon's Normal-type moves become Dragon type and have 1.2x power.\"\n    }\n  ],\n  [\n    'dragonsmaw',\n    {\n      name: \"Dragon's Maw\",\n      shortDesc: \"This Pokémon's offensive stat is multiplied by 1.5 while using a Dragon-type attack.\"\n    }\n  ],\n  [\n    'drizzle',\n    {\n      name: 'Drizzle',\n      shortDesc: 'On switch-in, this Pokémon summons Rain Dance.'\n    }\n  ],\n  [\n    'drought',\n    {\n      name: 'Drought',\n      shortDesc: 'On switch-in, this Pokémon summons Sunny Day.'\n    }\n  ],\n  [\n    'dryskin',\n    {\n      desc: 'This Pokémon is immune to Water-type moves and restores 1/4 of its maximum HP, rounded down, when hit by a Water-type move. The power of Fire-type moves is multiplied by 1.25 when used on this Pokémon. At the end of each turn, this Pokémon restores 1/8 of its maximum HP, rounded down, if the weather is Rain Dance, and loses 1/8 of its maximum HP, rounded down, if the weather is Sunny Day. The weather effects are prevented if this Pokémon is holding a Utility Umbrella.',\n      name: 'Dry Skin',\n      shortDesc: 'This Pokémon is healed 1/4 by Water, 1/8 by Rain; is hurt 1.25x by Fire, 1/8 by Sun.'\n    }\n  ],\n  [\n    'earlybird',\n    {\n      name: 'Early Bird',\n      shortDesc: \"This Pokémon's sleep counter drops by 2 instead of 1.\"\n    }\n  ],\n  [\n    'eartheater',\n    {\n      desc: 'This Pokémon is immune to Ground-type moves and restores 1/4 of its maximum HP, rounded down, when hit by a Ground-type move.',\n      name: 'Earth Eater',\n      shortDesc: 'This Pokémon heals 1/4 of its max HP when hit by Ground moves; Ground immunity.'\n    }\n  ],\n  [\n    'effectspore',\n    {\n      desc: '30% chance a Pokémon making contact with this Pokémon will be poisoned, paralyzed, or fall asleep.',\n      name: 'Effect Spore',\n      shortDesc: '30% chance of poison/paralysis/sleep on others making contact with this Pokémon.'\n    }\n  ],\n  [\n    'electricsurge',\n    {\n      name: 'Electric Surge',\n      shortDesc: 'On switch-in, this Pokémon summons Electric Terrain.'\n    }\n  ],\n  [\n    'electromorphosis',\n    {\n      desc: \"This Pokémon's next Electric-type attack will have its power doubled if it takes direct damage.\",\n      name: 'Electromorphosis',\n      shortDesc: 'This Pokémon gains the Charge effect when it takes a hit from an attack.'\n    }\n  ],\n  [\n    'embodyaspectcornerstone',\n    {\n      name: 'Embody Aspect (Cornerstone)',\n      shortDesc: \"On switch-in, this Pokémon's Defense is raised by 1 stage.\"\n    }\n  ],\n  [\n    'embodyaspecthearthflame',\n    {\n      name: 'Embody Aspect (Hearthflame)',\n      shortDesc: \"On switch-in, this Pokémon's Attack is raised by 1 stage.\"\n    }\n  ],\n  [\n    'embodyaspectteal',\n    {\n      name: 'Embody Aspect (Teal)',\n      shortDesc: \"On switch-in, this Pokémon's Speed is raised by 1 stage.\"\n    }\n  ],\n  [\n    'embodyaspectwellspring',\n    {\n      name: 'Embody Aspect (Wellspring)',\n      shortDesc: \"On switch-in, this Pokémon's Special Defense is raised by 1 stage.\"\n    }\n  ],\n  [\n    'emergencyexit',\n    {\n      desc: 'When this Pokémon has more than 1/2 its maximum HP and takes damage bringing it to 1/2 or less of its maximum HP, it immediately switches out to a chosen ally. This effect applies after all hits from a multi-hit move. This effect is prevented if the move had a secondary effect removed by the Sheer Force Ability. This effect applies to both direct and indirect damage, except Curse and Substitute on use, Belly Drum, Pain Split, and confusion damage.',\n      name: 'Emergency Exit',\n      shortDesc: 'This Pokémon switches out when it reaches 1/2 or less of its maximum HP.'\n    }\n  ],\n  [\n    'fairyaura',\n    {\n      desc: 'While this Pokémon is active, the power of Fairy-type moves used by active Pokémon is multiplied by 1.33.',\n      name: 'Fairy Aura',\n      shortDesc: 'While this Pokémon is active, a Fairy move used by any Pokémon has 1.33x power.'\n    }\n  ],\n  [\n    'filter',\n    {\n      name: 'Filter',\n      shortDesc: 'This Pokémon receives 3/4 damage from supereffective attacks.'\n    }\n  ],\n  [\n    'flamebody',\n    {\n      isFieldAbility: 'Having a Pokémon with Flame Body in your party will halve the number of cycles it takes for all eggs in the party to hatch.',\n      name: 'Flame Body',\n      shortDesc: '30% chance a Pokémon making contact with this Pokémon will be burned.'\n    }\n  ],\n  [\n    'flareboost',\n    {\n      desc: 'While this Pokémon is burned, the power of its special attacks is multiplied by 1.5.',\n      name: 'Flare Boost',\n      shortDesc: 'While this Pokémon is burned, its special attacks have 1.5x power.'\n    }\n  ],\n  [\n    'flashfire',\n    {\n      desc: 'This Pokémon is immune to Fire-type moves. The first time it is hit by a Fire-type move, its offensive stat is multiplied by 1.5 while using a Fire-type attack as long as it remains active and has this Ability. If this Pokémon is frozen, it cannot be defrosted by Fire-type attacks.',\n      isFieldAbility:\n        'In Pokémon Sword and Shield, If you have a Pokémon with Flash Fire at the front of your party (even if fainted), there is a 50% chance an encounter with a Fire-type Pokémon will be forced, if possible.',\n      name: 'Flash Fire',\n      shortDesc: \"This Pokémon's Fire attacks do 1.5x damage if hit by one Fire move; Fire immunity.\"\n    }\n  ],\n  [\n    'flowergift',\n    {\n      desc: 'If this Pokémon is a Cherrim and Sunny Day is active, it changes to Sunshine Form and the Attack and Special Defense of it and its allies are multiplied by 1.5. These effects are prevented if the Pokémon is holding a Utility Umbrella.',\n      name: 'Flower Gift',\n      shortDesc: \"If user is Cherrim and Sunny Day is active, it and allies' Attack and Sp. Def are 1.5x.\"\n    }\n  ],\n  [\n    'flowerveil',\n    {\n      desc: \"Grass-type Pokémon on this Pokémon's side cannot have their stat stages lowered by other Pokémon or have a non-volatile status condition inflicted on them by other Pokémon.\",\n      name: 'Flower Veil',\n      shortDesc: \"This side's Grass types can't have stats lowered or status inflicted by other Pokémon.\"\n    }\n  ],\n  [\n    'fluffy',\n    {\n      desc: 'This Pokémon receives 1/2 damage from contact moves, but double damage from Fire moves.',\n      name: 'Fluffy',\n      shortDesc: 'This Pokémon takes 1/2 damage from contact moves, 2x damage from Fire moves.'\n    }\n  ],\n  [\n    'forecast',\n    {\n      desc: \"If this Pokémon is a Castform, its type changes to the current weather condition's type, except Sandstorm. This effect is prevented if this Pokémon is holding a Utility Umbrella and the weather is Rain Dance or Sunny Day.\",\n      name: 'Forecast',\n      shortDesc: \"Castform's type changes to the current weather condition's type, except Sandstorm.\"\n    }\n  ],\n  [\n    'forewarn',\n    {\n      desc: 'On switch-in, this Pokémon is alerted to the move with the highest power, at random, known by an opposing Pokémon. This effect considers OHKO moves to have 150 power, Counter, Mirror Coat, and Metal Burst to have 120 power, every other attacking move with an unspecified power to have 80 power, and non-damaging moves to have 1 power.',\n      name: 'Forewarn',\n      shortDesc: \"On switch-in, this Pokémon is alerted to the foes' move with the highest power.\"\n    }\n  ],\n  [\n    'friendguard',\n    {\n      name: 'Friend Guard',\n      shortDesc: \"This Pokémon's allies receive 3/4 damage from other Pokémon's attacks.\"\n    }\n  ],\n  [\n    'frisk',\n    {\n      name: 'Frisk',\n      shortDesc: 'On switch-in, this Pokémon identifies the held items of all opposing Pokémon.'\n    }\n  ],\n  [\n    'fullmetalbody',\n    {\n      desc: \"Prevents other Pokémon from lowering this Pokémon's stat stages. Moongeist Beam, Sunsteel Strike, and the Abilities Mold Breaker, Teravolt, and Turboblaze cannot ignore this Ability.\",\n      name: 'Full Metal Body',\n      shortDesc: \"Prevents other Pokémon from lowering this Pokémon's stat stages.\"\n    }\n  ],\n  [\n    'furcoat',\n    {\n      name: 'Fur Coat',\n      shortDesc: \"This Pokémon's Defense is doubled.\"\n    }\n  ],\n  [\n    'galewings',\n    {\n      name: 'Gale Wings',\n      shortDesc: 'If this Pokémon is at full HP, its Flying-type moves have their priority increased by 1.'\n    }\n  ],\n  [\n    'galvanize',\n    {\n      desc: \"This Pokémon's Normal-type moves become Electric-type moves and have their power multiplied by 1.2. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.\",\n      name: 'Galvanize',\n      shortDesc: \"This Pokémon's Normal-type moves become Electric type and have 1.2x power.\"\n    }\n  ],\n  [\n    'gluttony',\n    {\n      desc: 'When this Pokémon is holding a Berry that usually activates with 1/4 or less of its maximum HP, it is eaten at 1/2 or less of its maximum HP instead.',\n      name: 'Gluttony',\n      shortDesc: 'This Pokémon eats Berries at 1/2 max HP or less instead of their usual 1/4 max HP.'\n    }\n  ],\n  [\n    'goodasgold',\n    {\n      name: 'Good as Gold',\n      shortDesc: 'This Pokémon is immune to Status moves.'\n    }\n  ],\n  [\n    'gooey',\n    {\n      name: 'Gooey',\n      shortDesc: 'Pokémon making contact with this Pokémon have their Speed lowered by 1 stage.'\n    }\n  ],\n  [\n    'gorillatactics',\n    {\n      desc: \"This Pokémon's Attack is multiplied by 1.5, but it can only select the first move it executes. These effects are prevented while this Pokémon is Dynamaxed.\",\n      name: 'Gorilla Tactics',\n      shortDesc: \"This Pokémon's Attack is 1.5x, but it can only select the first move it executes.\"\n    }\n  ],\n  [\n    'grasspelt',\n    {\n      name: 'Grass Pelt',\n      shortDesc: \"If Grassy Terrain is active, this Pokémon's Defense is multiplied by 1.5.\"\n    }\n  ],\n  [\n    'grassysurge',\n    {\n      name: 'Grassy Surge',\n      shortDesc: 'On switch-in, this Pokémon summons Grassy Terrain.'\n    }\n  ],\n  [\n    'grimneigh',\n    {\n      desc: \"This Pokémon's Special Attack is raised by 1 stage if it attacks and knocks out another Pokémon.\",\n      name: 'Grim Neigh',\n      shortDesc: \"This Pokémon's Sp. Atk is raised by 1 stage if it attacks and KOes another Pokémon.\"\n    }\n  ],\n  [\n    'guarddog',\n    {\n      desc: \"This Pokémon is immune to the effect of the Intimidate Ability and raises its Attack by 1 stage instead. This Pokémon cannot be forced to switch out by another Pokémon's attack or item.\",\n      name: 'Guard Dog',\n      shortDesc: 'Immune to Intimidate. Intimidated: +1 Attack. Cannot be forced to switch out.'\n    }\n  ],\n  [\n    'gulpmissile',\n    {\n      desc: \"If this Pokémon is a Cramorant, it changes forme when it hits a target with Surf or uses the first turn of Dive successfully. It becomes Gulping Form with an Arrokuda in its mouth if it has more than 1/2 of its maximum HP remaining, or Gorging Form with a Pikachu in its mouth if it has 1/2 or less of its maximum HP remaining. If Cramorant gets hit in Gulping or Gorging Form, it spits the Arrokuda or Pikachu at its attacker, even if it has no HP remaining. The projectile deals damage equal to 1/4 of the target's maximum HP, rounded down; this damage is blocked by the Magic Guard Ability but not by a substitute. An Arrokuda also lowers the target's Defense by 1 stage, and a Pikachu paralyzes the target. Cramorant will return to normal if it spits out a projectile, switches out, or Dynamaxes.\",\n      name: 'Gulp Missile',\n      shortDesc: 'When hit after Surf/Dive, attacker takes 1/4 max HP and -1 Defense or paralysis.'\n    }\n  ],\n  [\n    'guts',\n    {\n      desc: \"If this Pokémon has a non-volatile status condition, its Attack is multiplied by 1.5. This Pokémon's physical attacks ignore the burn effect of halving damage.\",\n      name: 'Guts',\n      shortDesc: 'If this Pokémon is statused, its Attack is 1.5x; ignores burn halving physical damage.'\n    }\n  ],\n  [\n    'hadronengine',\n    {\n      name: 'Hadron Engine',\n      shortDesc: 'On switch-in, summons Electric Terrain. During Electric Terrain, Sp. Atk is 1.3333x.'\n    }\n  ],\n  [\n    'harvest',\n    {\n      desc: 'If the last item this Pokémon used is a Berry, there is a 50% chance it gets restored at the end of each turn. If Sunny Day is active, this chance is 100%.',\n      isFieldAbility:\n        'In Pokémon Sword and Shield, If you have a Pokémon with Harvest at the front of your party (even if fainted), there is a 50% chance an encounter with a Grass-type Pokémon will be forced, if possible.',\n      name: 'Harvest',\n      shortDesc: 'If last item used is a Berry, 50% chance to restore it each end of turn. 100% in Sun.'\n    }\n  ],\n  [\n    'healer',\n    {\n      desc: \"30% chance this Pokémon's ally has its non-volatile status condition cured at the end of each turn.\",\n      name: 'Healer',\n      shortDesc: \"30% chance this Pokémon's ally has its status cured at the end of each turn.\"\n    }\n  ],\n  [\n    'heatproof',\n    {\n      desc: \"If a Pokémon uses a Fire-type attack against this Pokémon, that Pokémon's offensive stat is halved when calculating the damage to this Pokémon. This Pokémon takes half of the usual burn damage, rounded down.\",\n      name: 'Heatproof',\n      shortDesc: 'Fire damage against this Pokémon is dealt with 1/2 offensive stat; 1/2 burn damage.'\n    }\n  ],\n  [\n    'heavymetal',\n    {\n      desc: \"This Pokémon's weight is doubled. This effect is calculated after the effect of Autotomize, and before the effect of Float Stone.\",\n      name: 'Heavy Metal',\n      shortDesc: \"This Pokémon's weight is doubled.\"\n    }\n  ],\n  [\n    'honeygather',\n    {\n      isFieldAbility:\n        'A Pokémon with Honey Gather may collect Honey after a battle if it is not already holding an item. The chance for a Pokémon with Honey Gather to pick up Honey depends on its level, starting at 5% if the Pokémon is between levels 1 and 10, and going up by 5% every ten levels, ending at a 50% chance from levels 91-100.',\n      name: 'Honey Gather',\n      shortDesc: 'No competitive use.'\n    }\n  ],\n  [\n    'hospitality',\n    {\n      name: 'Hospitality',\n      shortDesc: \"On switch-in, this Pokémon restores 1/4 of its ally's maximum HP, rounded down.\"\n    }\n  ],\n  [\n    'hugepower',\n    {\n      name: 'Huge Power',\n      shortDesc: \"This Pokémon's Attack is doubled.\"\n    }\n  ],\n  [\n    'hungerswitch',\n    {\n      desc: 'If this Pokémon is a Morpeko, it changes formes between its Full Belly Mode and Hangry Mode at the end of each turn.',\n      name: 'Hunger Switch',\n      shortDesc: 'If Morpeko, it changes between Full Belly and Hangry Mode at the end of each turn.'\n    }\n  ],\n  [\n    'hustle',\n    {\n      desc: \"This Pokémon's Attack is multiplied by 1.5 and the accuracy of its physical attacks is multiplied by 0.8.\",\n      isFieldAbility:\n        'If you have a Pokémon with Hustle at the front of your party (even if fainted), there is a 50% chance that a Pokémon will be forced to the upper bound of their encounter level range.',\n      name: 'Hustle',\n      shortDesc: \"This Pokémon's Attack is 1.5x and accuracy of its physical attacks is 0.8x.\"\n    }\n  ],\n  [\n    'hydration',\n    {\n      desc: 'This Pokémon has its non-volatile status condition cured at the end of each turn if Rain Dance is active. This effect is prevented if this Pokémon is holding a Utility Umbrella.',\n      name: 'Hydration',\n      shortDesc: 'This Pokémon has its status cured at the end of each turn if Rain Dance is active.'\n    }\n  ],\n  [\n    'hypercutter',\n    {\n      isFieldAbility:\n        \"In Pokémon Emerald only, if a Pokémon with Hyper Cutter uses cut in the overworld, it will remove all tall grass within a two-square radius of the player's position, as opposed to a one-square radius without this Ability.\",\n      name: 'Hyper Cutter',\n      shortDesc: \"Prevents other Pokémon from lowering this Pokémon's Attack stat stage.\"\n    }\n  ],\n  [\n    'icebody',\n    {\n      desc: 'If Snow is active, this Pokémon restores 1/16 of its maximum HP, rounded down, at the end of each turn.',\n      name: 'Ice Body',\n      shortDesc: 'If Snow is active, this Pokémon heals 1/16 of its max HP each turn.'\n    }\n  ],\n  [\n    'iceface',\n    {\n      desc: 'If this Pokémon is an Eiscue, the first physical hit it takes in battle deals 0 neutral damage. Its ice face is then broken and it changes forme to Noice Face. Eiscue regains its Ice Face forme when Snow begins or when Eiscue switches in while Snow is active. Confusion damage also breaks the ice face.',\n      name: 'Ice Face',\n      shortDesc: 'If Eiscue, the first physical hit it takes deals 0 damage. Effect is restored in Snow.'\n    }\n  ],\n  [\n    'icescales',\n    {\n      desc: 'The Pokémon is protected by ice scales, which halve the damage taken from special moves.',\n      name: 'Ice Scales',\n      shortDesc: 'This Pokémon receives 1/2 damage from special attacks.'\n    }\n  ],\n  [\n    'illuminate',\n    {\n      desc: \"Prevents other Pokémon from lowering this Pokémon's accuracy stat stage. This Pokémon ignores a target's evasiveness stat stage.\",\n      isFieldAbility:\n        'If a Pokémon with Illuminate is at the front of the the party (even if fainted), the wild Pokémon encounter rate of all Pokémon is doubled.',\n      name: 'Illuminate',\n      shortDesc: \"This Pokémon's accuracy can't be lowered by others; ignores their evasiveness stat.\"\n    }\n  ],\n  [\n    'illusion',\n    {\n      desc: \"When this Pokémon switches in, it appears as the last unfainted Pokémon in its party until it takes direct damage from another Pokémon's attack. This Pokémon's actual level and HP are displayed instead of those of the mimicked Pokémon.\",\n      name: 'Illusion',\n      shortDesc: 'This Pokémon appears as the last Pokémon in the party until it takes direct damage.'\n    }\n  ],\n  [\n    'immunity',\n    {\n      name: 'Immunity',\n      shortDesc: 'This Pokémon cannot be poisoned. Gaining this Ability while poisoned cures it.'\n    }\n  ],\n  [\n    'imposter',\n    {\n      desc: 'On switch-in, this Pokémon Transforms into the opposing Pokémon that is facing it. If there is no Pokémon at that position, this Pokémon does not Transform.',\n      name: 'Imposter',\n      shortDesc: 'On switch-in, this Pokémon Transforms into the opposing Pokémon that is facing it.'\n    }\n  ],\n  [\n    'infiltrator',\n    {\n      desc: \"This Pokémon's moves ignore substitutes and the opposing side's Reflect, Light Screen, Safeguard, Mist, and Aurora Veil.\",\n      isFieldAbility:\n        'In Pokémon Sword and Shield, if a Pokémon with Infiltrator is placed at the front of the party, wild Pokémon are less likely to appear.',\n      name: 'Infiltrator',\n      shortDesc: \"Moves ignore substitutes and foe's Reflect/Light Screen/Safeguard/Mist/Aurora Veil.\"\n    }\n  ],\n  [\n    'innardsout',\n    {\n      desc: \"If this Pokémon is knocked out with a move, that move's user loses HP equal to the amount of damage inflicted on this Pokémon.\",\n      name: 'Innards Out',\n      shortDesc: \"If this Pokémon is KOed with a move, that move's user loses an equal amount of HP.\"\n    }\n  ],\n  [\n    'innerfocus',\n    {\n      desc: 'This Pokémon cannot be made to flinch. This Pokémon is immune to the effect of the Intimidate Ability.',\n      name: 'Inner Focus',\n      shortDesc: 'This Pokémon cannot be made to flinch. Immune to Intimidate.'\n    }\n  ],\n  [\n    'insomnia',\n    {\n      name: 'Insomnia',\n      shortDesc: 'This Pokémon cannot fall asleep. Gaining this Ability while asleep cures it.'\n    }\n  ],\n  [\n    'intimidate',\n    {\n      desc: 'On switch-in, this Pokémon lowers the Attack of opposing Pokémon by 1 stage. Pokémon with the Inner Focus, Oblivious, Own Tempo, or Scrappy Abilities and Pokémon behind a substitute are immune.',\n      isFieldAbility:\n        'If a Pokémon with Intimidate is at the front of your party (even if fainted), there is a 50% chance it will prevent a random wild encounter that would have occurred if the wild Pokémon would be at least 5 levels lower than the Pokémon with Intimidate.',\n      name: 'Intimidate',\n      shortDesc: 'On switch-in, this Pokémon lowers the Attack of opponents by 1 stage.'\n    }\n  ],\n  [\n    'intrepidsword',\n    {\n      name: 'Intrepid Sword',\n      shortDesc: \"On switch-in, this Pokémon's Attack is raised by 1 stage. Once per battle.\"\n    }\n  ],\n  [\n    'ironbarbs',\n    {\n      desc: 'Pokémon making contact with this Pokémon lose 1/8 of their maximum HP, rounded down.',\n      name: 'Iron Barbs',\n      shortDesc: 'Pokémon making contact with this Pokémon lose 1/8 of their max HP.'\n    }\n  ],\n  [\n    'ironfist',\n    {\n      desc: \"This Pokémon's punch-based attacks have their power multiplied by 1.2.\",\n      name: 'Iron Fist',\n      shortDesc: \"This Pokémon's punch-based attacks have 1.2x power. Sucker Punch is not boosted.\"\n    }\n  ],\n  [\n    'justified',\n    {\n      name: 'Justified',\n      shortDesc: \"This Pokémon's Attack is raised by 1 stage after it is damaged by a Dark-type move.\"\n    }\n  ],\n  [\n    'keeneye',\n    {\n      desc: \"Prevents other Pokémon from lowering this Pokémon's accuracy stat stage. This Pokémon ignores a target's evasiveness stat stage.\",\n      isFieldAbility:\n        'If a Pokémon with Keen Eye is at the front of your party (even if fainted), there is a 50% chance it will prevent a random wild encounter that would have occurred if the wild Pokémon would be at least 5 levels lower than the Pokémon with Keen Eye.',\n      name: 'Keen Eye',\n      shortDesc: \"This Pokémon's accuracy can't be lowered by others; ignores their evasiveness stat.\"\n    }\n  ],\n  [\n    'klutz',\n    {\n      desc: \"This Pokémon's held item has no effect. This Pokémon cannot use Fling successfully. Macho Brace, Power Anklet, Power Band, Power Belt, Power Bracer, Power Lens, and Power Weight still have their effects.\",\n      name: 'Klutz',\n      shortDesc: \"This Pokémon's held item has no effect, except Macho Brace. Fling cannot be used.\"\n    }\n  ],\n  [\n    'leafguard',\n    {\n      desc: 'If Sunny Day is active, this Pokémon cannot become affected by a non-volatile status condition or Yawn, and Rest will fail for it. This effect is prevented if this Pokémon is holding a Utility Umbrella.',\n      name: 'Leaf Guard',\n      shortDesc: 'If Sunny Day is active, this Pokémon cannot be statused and Rest will fail for it.'\n    }\n  ],\n  [\n    'levitate',\n    {\n      desc: 'This Pokémon is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability. The effects of Gravity, Ingrain, Smack Down, Thousand Arrows, and Iron Ball nullify the immunity. Thousand Arrows can hit this Pokémon as if it did not have this Ability.',\n      name: 'Levitate',\n      shortDesc: 'This Pokémon is immune to Ground; Gravity/Ingrain/Smack Down/Iron Ball nullify it.'\n    }\n  ],\n  [\n    'libero',\n    {\n      desc: \"This Pokémon's type changes to match the type of the move it is about to use. This effect comes after all effects that change a move's type. This effect can only happen once per switch-in, and only if this Pokémon is not Terastallized.\",\n      name: 'Libero',\n      shortDesc: \"This Pokémon's type changes to the type of the move it is using. Once per switch-in.\"\n    }\n  ],\n  [\n    'lightmetal',\n    {\n      desc: \"This Pokémon's weight is halved, rounded down to a tenth of a kilogram. This effect is calculated after the effect of Autotomize, and before the effect of Float Stone. A Pokémon's weight will not drop below 0.1 kg.\",\n      name: 'Light Metal',\n      shortDesc: \"This Pokémon's weight is halved.\"\n    }\n  ],\n  [\n    'lightningrod',\n    {\n      desc: 'This Pokémon is immune to Electric-type moves and raises its Special Attack by 1 stage when hit by an Electric-type move. If this Pokémon is not the target of a single-target Electric-type move used by another Pokémon, this Pokémon redirects that move to itself if it is within the range of that move. If multiple Pokémon could redirect with this Ability, it goes to the one with the highest Speed, or in the case of a tie to the one that has had this Ability active longer.',\n      isFieldAbility:\n        \"In Pokémon Emerald, Trainers registered with the PokéNav's Match Call function will call twice as often if a Pokémon with Lightning Rod is in the first place in the party (even if fainted).\\n\" +\n        'In Pokémon Sword and Shield, if a Pokémon with Lightning Rod is in the first place in the party, there is a 50% chance the game will force an encounter with an Electric-type Pokémon, if one is possible.',\n      name: 'Lightning Rod',\n      shortDesc: 'This Pokémon draws Electric moves to itself to raise Sp. Atk by 1; Electric immunity.'\n    }\n  ],\n  [\n    'limber',\n    {\n      name: 'Limber',\n      shortDesc: 'This Pokémon cannot be paralyzed. Gaining this Ability while paralyzed cures it.'\n    }\n  ],\n  [\n    'lingeringaroma',\n    {\n      desc: 'Pokémon making contact with this Pokémon have their Ability changed to Lingering Aroma. Does not affect Pokémon with the As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Lingering Aroma, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Tera Shift, Zen Mode, or Zero to Hero Abilities.',\n      name: 'Lingering Aroma',\n      shortDesc: \"Making contact with this Pokémon has the attacker's Ability become Lingering Aroma.\"\n    }\n  ],\n  [\n    'liquidooze',\n    {\n      name: 'Liquid Ooze',\n      shortDesc: 'This Pokémon damages those draining HP from it for as much as they would heal.'\n    }\n  ],\n  [\n    'liquidvoice',\n    {\n      desc: \"This Pokémon's sound-based moves become Water-type moves. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.\",\n      name: 'Liquid Voice',\n      shortDesc: \"This Pokémon's sound-based moves become Water type.\"\n    }\n  ],\n  [\n    'longreach',\n    {\n      name: 'Long Reach',\n      shortDesc: \"This Pokémon's attacks do not make contact with the target.\"\n    }\n  ],\n  [\n    'magicbounce',\n    {\n      desc: \"This Pokémon is unaffected by certain non-damaging moves directed at it and will instead use such moves against the original user. Moves reflected in this way are unable to be reflected again by this or Magic Coat's effect. Spikes, Stealth Rock, Sticky Web, and Toxic Spikes can only be reflected once per side, by the leftmost Pokémon under this or Magic Coat's effect. The Lightning Rod and Storm Drain Abilities redirect their respective moves before this Ability takes effect.\",\n      name: 'Magic Bounce',\n      shortDesc: 'This Pokémon blocks certain Status moves and bounces them back to the user.'\n    }\n  ],\n  [\n    'magicguard',\n    {\n      desc: 'This Pokémon can only be damaged by direct attacks. Curse and Substitute on use, Belly Drum, Pain Split, Struggle recoil, and confusion damage are considered direct damage.',\n      name: 'Magic Guard',\n      shortDesc: 'This Pokémon can only be damaged by direct attacks.'\n    }\n  ],\n  [\n    'magician',\n    {\n      desc: 'If this Pokémon has no item, it steals the item off a Pokémon it hits with an attack. Does not affect Doom Desire and Future Sight. If multiple targets are hit by an attack the item is stolen from the fastest Pokémon, while considering the effect of Trick Room and prioritizing opposing Pokémon before allies.',\n      name: 'Magician',\n      shortDesc: 'If this Pokémon has no item, it steals the item off a Pokémon it hits with an attack.'\n    }\n  ],\n  [\n    'magmaarmor',\n    {\n      isFieldAbility: 'Having a Pokémon with Magma Armor in your party will halve the number of cycles it takes for all eggs in the party to hatch.',\n      name: 'Magma Armor',\n      shortDesc: 'This Pokémon cannot be frozen. Gaining this Ability while frozen cures it.'\n    }\n  ],\n  [\n    'magnetpull',\n    {\n      desc: 'Prevents opposing Steel-type Pokémon from choosing to switch out, unless they are holding a Shed Shell or are a Ghost type.',\n      name: 'Magnet Pull',\n      shortDesc: 'Prevents opposing Steel-type Pokémon from choosing to switch out.'\n    }\n  ],\n  [\n    'marvelscale',\n    {\n      desc: 'If this Pokémon has a non-volatile status condition, its Defense is multiplied by 1.5.',\n      name: 'Marvel Scale',\n      shortDesc: 'If this Pokémon has a non-volatile status condition, its Defense is multiplied by 1.5.'\n    }\n  ],\n  [\n    'megalauncher',\n    {\n      desc: \"This Pokémon's pulse moves have their power multiplied by 1.5. Heal Pulse restores 3/4 of a target's maximum HP, rounded half down.\",\n      name: 'Mega Launcher',\n      shortDesc: \"This Pokémon's pulse moves have 1.5x power. Heal Pulse heals 3/4 target's max HP.\"\n    }\n  ],\n  [\n    'megasol',\n    {\n      name: 'Mega Sol',\n      shortDesc: \"This Pokémon's moves are used as if the effects of Sunny Day were active.\"\n    }\n  ],\n  [\n    'merciless',\n    {\n      name: 'Merciless',\n      shortDesc: \"This Pokémon's attacks are critical hits if the target is poisoned.\"\n    }\n  ],\n  [\n    'mimicry',\n    {\n      desc: \"This Pokémon's types change to match the active Terrain when this Pokémon acquires this Ability, or whenever a Terrain begins. Electric type during Electric Terrain, Grass type during Grassy Terrain, Fairy type during Misty Terrain, and Psychic type during Psychic Terrain. If this Ability is acquired without an active Terrain, or a Terrain ends, this Pokémon's types become the original types for its species.\",\n      name: 'Mimicry',\n      shortDesc: \"This Pokémon's types change to match the Terrain. Type reverts when Terrain ends.\"\n    }\n  ],\n  [\n    'mindseye',\n    {\n      desc: \"This Pokémon can hit Ghost types with Normal- and Fighting-type moves. Prevents other Pokémon from lowering this Pokémon's accuracy stat stage. This Pokémon ignores a target's evasiveness stat stage.\",\n      name: \"Mind's Eye\",\n      shortDesc: \"Fighting, Normal moves hit Ghost. Accuracy can't be lowered, ignores evasiveness.\"\n    }\n  ],\n  [\n    'minus',\n    {\n      desc: \"If an active ally has this Ability or the Plus Ability, this Pokémon's Special Attack is multiplied by 1.5.\",\n      name: 'Minus',\n      shortDesc: \"If an active ally has this Ability or the Plus Ability, this Pokémon's Sp. Atk is 1.5x.\"\n    }\n  ],\n  [\n    'mirrorarmor',\n    {\n      desc: \"When one of this Pokémon's stat stages would be lowered by another Pokémon, that Pokémon's stat stage is lowered instead. This effect does not happen if this Pokémon's stat stage was already -6. If the other Pokémon has a substitute, neither Pokémon has its stat stage lowered.\",\n      name: 'Mirror Armor',\n      shortDesc: \"If this Pokémon's stat stages would be lowered, the attacker's are lowered instead.\"\n    }\n  ],\n  [\n    'mistysurge',\n    {\n      name: 'Misty Surge',\n      shortDesc: 'On switch-in, this Pokémon summons Misty Terrain.'\n    }\n  ],\n  [\n    'moldbreaker',\n    {\n      desc: \"This Pokémon's moves and their effects ignore certain Abilities of other Pokémon. The Abilities that can be negated are Armor Tail, Aroma Veil, Aura Break, Battle Armor, Big Pecks, Bulletproof, Clear Body, Contrary, Damp, Dazzling, Disguise, Dry Skin, Earth Eater, Filter, Flash Fire, Flower Gift, Flower Veil, Fluffy, Friend Guard, Fur Coat, Good as Gold, Grass Pelt, Guard Dog, Heatproof, Heavy Metal, Hyper Cutter, Ice Face, Ice Scales, Illuminate, Immunity, Inner Focus, Insomnia, Keen Eye, Leaf Guard, Levitate, Light Metal, Lightning Rod, Limber, Magic Bounce, Magma Armor, Marvel Scale, Mind's Eye, Mirror Armor, Motor Drive, Multiscale, Oblivious, Overcoat, Own Tempo, Pastel Veil, Punk Rock, Purifying Salt, Queenly Majesty, Sand Veil, Sap Sipper, Shell Armor, Shield Dust, Simple, Snow Cloak, Solid Rock, Soundproof, Sticky Hold, Storm Drain, Sturdy, Suction Cups, Sweet Veil, Tangled Feet, Telepathy, Tera Shell, Thermal Exchange, Thick Fat, Unaware, Vital Spirit, Volt Absorb, Water Absorb, Water Bubble, Water Veil, Well-Baked Body, White Smoke, Wind Rider, Wonder Guard, and Wonder Skin. This affects every other Pokémon on the field, whether or not it is a target of this Pokémon's move, and whether or not their Ability is beneficial to this Pokémon.\",\n      name: 'Mold Breaker',\n      shortDesc: \"This Pokémon's moves and their effects ignore the Abilities of other Pokémon.\"\n    }\n  ],\n  [\n    'moody',\n    {\n      desc: 'This Pokémon has a random stat, other than accuracy or evasiveness, raised by 2 stages and another stat lowered by 1 stage at the end of each turn.',\n      name: 'Moody',\n      shortDesc: 'Boosts a random stat (except accuracy/evasion) +2 and another stat -1 every turn.'\n    }\n  ],\n  [\n    'motordrive',\n    {\n      desc: 'This Pokémon is immune to Electric-type moves and raises its Speed by 1 stage when hit by an Electric-type move.',\n      name: 'Motor Drive',\n      shortDesc: \"This Pokémon's Speed is raised 1 stage if hit by an Electric move; Electric immunity.\"\n    }\n  ],\n  [\n    'mountaineer',\n    {\n      isNonstandard: IsNonStandard.Cap,\n      name: 'Mountaineer',\n      shortDesc: 'On switch-in, this Pokémon avoids all Rock-type attacks and Stealth Rock.'\n    }\n  ],\n  [\n    'moxie',\n    {\n      desc: \"This Pokémon's Attack is raised by 1 stage if it attacks and knocks out another Pokémon.\",\n      name: 'Moxie',\n      shortDesc: \"This Pokémon's Attack is raised by 1 stage if it attacks and KOes another Pokémon.\"\n    }\n  ],\n  [\n    'multiscale',\n    {\n      name: 'Multiscale',\n      shortDesc: 'If this Pokémon is at full HP, damage taken from attacks is halved.'\n    }\n  ],\n  [\n    'multitype',\n    {\n      name: 'Multitype',\n      shortDesc: 'If this Pokémon is an Arceus, its type changes to match its held Plate.'\n    }\n  ],\n  [\n    'mummy',\n    {\n      desc: 'Pokémon making contact with this Pokémon have their Ability changed to Mummy. Does not affect Pokémon with the As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Mummy, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Tera Shift, Zen Mode, or Zero to Hero Abilities.',\n      name: 'Mummy',\n      shortDesc: 'Pokémon making contact with this Pokémon have their Ability changed to Mummy.'\n    }\n  ],\n  [\n    'myceliummight',\n    {\n      desc: \"This Pokémon's Status moves ignore certain Abilities of other Pokémon, and go last among Pokémon using the same or greater priority moves.\",\n      name: 'Mycelium Might',\n      shortDesc: \"This Pokémon's Status moves go last in their priority bracket and ignore Abilities.\"\n    }\n  ],\n  [\n    'naturalcure',\n    {\n      name: 'Natural Cure',\n      shortDesc: 'This Pokémon has its non-volatile status condition cured when it switches out.'\n    }\n  ],\n  [\n    'neuroforce',\n    {\n      desc: \"This Pokémon's attacks that are super effective against the target have their damage multiplied by 1.25.\",\n      name: 'Neuroforce',\n      shortDesc: \"This Pokémon's attacks that are super effective against the target do 1.25x damage.\"\n    }\n  ],\n  [\n    'neutralizinggas',\n    {\n      desc: 'While this Pokémon is active, Abilities have no effect. This Ability activates before hazards and other Abilities take effect. Does not affect the As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Neutralizing Gas, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Tera Shift, Zen Mode, or Zero to Hero Abilities.',\n      name: 'Neutralizing Gas',\n      shortDesc: 'While this Pokémon is active, Abilities have no effect.'\n    }\n  ],\n  [\n    'noability',\n    {\n      isNonstandard: IsNonStandard.Past,\n      name: 'No Ability',\n      shortDesc: 'Does nothing.'\n    }\n  ],\n  [\n    'noguard',\n    {\n      isFieldAbility:\n        'If a Pokémon with No Guard is at the front of the the party (even if fainted), the wild Pokémon encounter rate of all Pokémon is doubled.',\n      name: 'No Guard',\n      shortDesc: 'Every move used by or against this Pokémon will always hit.'\n    }\n  ],\n  [\n    'normalize',\n    {\n      desc: \"This Pokémon's moves are changed to be Normal type and have their power multiplied by 1.2. This effect comes before other effects that change a move's type.\",\n      name: 'Normalize',\n      shortDesc: \"This Pokémon's moves are changed to be Normal type and have 1.2x power.\"\n    }\n  ],\n  [\n    'oblivious',\n    {\n      desc: 'This Pokémon cannot be infatuated or taunted. Gaining this Ability while infatuated or taunted cures it. This Pokémon is immune to the effect of the Intimidate Ability.',\n      name: 'Oblivious',\n      shortDesc: 'This Pokémon cannot be infatuated or taunted. Immune to Intimidate.'\n    }\n  ],\n  [\n    'opportunist',\n    {\n      name: 'Opportunist',\n      shortDesc: 'When an opposing Pokémon has a stat stage raised, this Pokémon copies the effect.'\n    }\n  ],\n  [\n    'orichalcumpulse',\n    {\n      name: 'Orichalcum Pulse',\n      shortDesc: 'On switch-in, summons Sunny Day. During Sunny Day, Attack is 1.3333x.'\n    }\n  ],\n  [\n    'overcoat',\n    {\n      desc: 'This Pokémon is immune to powder moves, damage from Sandstorm, and the effects of Rage Powder and the Effect Spore Ability.',\n      name: 'Overcoat',\n      shortDesc: 'This Pokémon is immune to powder moves, Sandstorm damage, and Effect Spore.'\n    }\n  ],\n  [\n    'overgrow',\n    {\n      desc: 'When this Pokémon has 1/3 or less of its maximum HP, rounded down, its offensive stat is multiplied by 1.5 while using a Grass-type attack.',\n      name: 'Overgrow',\n      shortDesc: \"At 1/3 or less of its max HP, this Pokémon's offensive stat is 1.5x with Grass attacks.\"\n    }\n  ],\n  [\n    'owntempo',\n    {\n      desc: 'This Pokémon cannot be confused. Gaining this Ability while confused cures it. This Pokémon is immune to the effect of the Intimidate Ability.',\n      name: 'Own Tempo',\n      shortDesc: 'This Pokémon cannot be confused. Immune to Intimidate.'\n    }\n  ],\n  [\n    'parentalbond',\n    {\n      desc: \"This Pokémon's damaging moves become multi-hit moves that hit twice. The second hit has its damage quartered. Does not affect Doom Desire, Dragon Darts, Dynamax Cannon, Endeavor, Explosion, Final Gambit, Fling, Future Sight, Ice Ball, Rollout, Self-Destruct, any multi-hit move, any move that has multiple targets, or any two-turn move.\",\n      name: 'Parental Bond',\n      shortDesc: \"This Pokémon's damaging moves hit twice. The second hit has its damage quartered.\"\n    }\n  ],\n  [\n    'pastelveil',\n    {\n      desc: 'This Pokémon and its allies cannot be poisoned. Gaining this Ability while this Pokémon or its ally is poisoned cures them. If this Ability is being ignored during an effect that causes poison, this Pokémon is cured immediately but its ally is not.',\n      name: 'Pastel Veil',\n      shortDesc: 'This Pokémon and its allies cannot be poisoned. On switch-in, cures poisoned allies.'\n    }\n  ],\n  [\n    'perishbody',\n    {\n      desc: 'Making contact with this Pokémon starts the Perish Song effect for it and the attacker. This effect does not happen for this Pokémon if the attacker already has a perish count.',\n      name: 'Perish Body',\n      shortDesc: 'Making contact with this Pokémon starts the Perish Song effect for it and the attacker.'\n    }\n  ],\n  [\n    'persistent',\n    {\n      desc: 'The duration of Gravity, Heal Block, Magic Room, Safeguard, Tailwind, Trick Room, and Wonder Room is increased by 2 turns if the effect is started by this Pokémon.',\n      isNonstandard: IsNonStandard.Cap,\n      name: 'Persistent',\n      shortDesc: 'When used, Gravity/Heal Block/Safeguard/Tailwind/Room effects last 2 more turns.'\n    }\n  ],\n  [\n    'pickpocket',\n    {\n      desc: \"If this Pokémon has no item and is hit by a contact move, it steals the attacker's item. This effect applies after all hits from a multi-hit move. This effect is prevented if the move had a secondary effect removed by the Sheer Force Ability.\",\n      name: 'Pickpocket',\n      shortDesc: \"If this Pokémon has no item and is hit by a contact move, it steals the attacker's item.\"\n    }\n  ],\n  [\n    'pickup',\n    {\n      desc: \"At the end of each turn, if this Pokémon is not holding an item and at least one adjacent Pokémon used an item during this turn, one of those Pokémon is selected at random and this Pokémon obtains that Pokémon's last used item. An item is not considered the last used if it was a popped Air Balloon, if the item was picked up by another Pokémon with this Ability, or if the item was lost to Bug Bite, Corrosive Gas, Covet, Incinerate, Knock Off, Pluck, or Thief. Items thrown with Fling can be picked up.\",\n      isFieldAbility: 'After winning a battle, there is a 10% chance that a Pokémon with Pickup will create a held item for itself, even if fainted.',\n      name: 'Pickup',\n      shortDesc: 'If this Pokémon has no item, it finds one used by an adjacent Pokémon this turn.'\n    }\n  ],\n  [\n    'piercingdrill',\n    {\n      name: 'Piercing Drill',\n      shortDesc: \"This Pokémon's contact moves ignore a target's protection and deal 1/4 the usual damage.\"\n    }\n  ],\n  [\n    'pixilate',\n    {\n      desc: \"This Pokémon's Normal-type moves become Fairy-type moves and have their power multiplied by 1.2. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.\",\n      name: 'Pixilate',\n      shortDesc: \"This Pokémon's Normal-type moves become Fairy type and have 1.2x power.\"\n    }\n  ],\n  [\n    'plus',\n    {\n      desc: \"If an active ally has this Ability or the Minus Ability, this Pokémon's Special Attack is multiplied by 1.5.\",\n      name: 'Plus',\n      shortDesc: \"If an active ally has this Ability or the Minus Ability, this Pokémon's Sp. Atk is 1.5x.\"\n    }\n  ],\n  [\n    'poisonheal',\n    {\n      aliases: ['ph'],\n      desc: 'If this Pokémon is poisoned, it restores 1/8 of its maximum HP, rounded down, at the end of each turn instead of losing HP.',\n      name: 'Poison Heal',\n      shortDesc: 'This Pokémon is healed by 1/8 of its max HP each turn when poisoned; no HP loss.'\n    }\n  ],\n  [\n    'poisonpoint',\n    {\n      name: 'Poison Point',\n      shortDesc: '30% chance a Pokémon making contact with this Pokémon will be poisoned.'\n    }\n  ],\n  [\n    'poisonpuppeteer',\n    {\n      desc: 'If this Pokémon is a Pecharunt and poisons or badly poisons a target, the target also becomes confused.',\n      name: 'Poison Puppeteer',\n      shortDesc: 'Pecharunt: If this Pokémon poisons a target, the target also becomes confused.'\n    }\n  ],\n  [\n    'poisontouch',\n    {\n      desc: \"This Pokémon's contact moves have a 30% chance of poisoning. This effect comes after a move's inherent secondary effect chance.\",\n      name: 'Poison Touch',\n      shortDesc: \"This Pokémon's contact moves have a 30% chance of poisoning.\"\n    }\n  ],\n  [\n    'powerconstruct',\n    {\n      desc: 'If this Pokémon is a Zygarde in its 10% or 50% Forme, it changes to Complete Forme when it has 1/2 or less of its maximum HP at the end of the turn.',\n      name: 'Power Construct',\n      shortDesc: 'If Zygarde 10%/50%, changes to Complete if at 1/2 max HP or less at end of turn.'\n    }\n  ],\n  [\n    'powerofalchemy',\n    {\n      desc: 'This Pokémon copies the Ability of an ally that faints. Abilities that cannot be copied are As One, Battle Bond, Comatose, Commander, Disguise, Embody Aspect, Flower Gift, Forecast, Hunger Switch, Ice Face, Illusion, Imposter, Multitype, Neutralizing Gas, Poison Puppeteer, Power Construct, Power of Alchemy, Protosynthesis, Quark Drive, Receiver, RKS System, Schooling, Shields Down, Stance Change, Tera Shell, Tera Shift, Teraform Zero, Trace, Wonder Guard, Zen Mode, and Zero to Hero.',\n      name: 'Power of Alchemy',\n      shortDesc: 'This Pokémon copies the Ability of an ally that faints.'\n    }\n  ],\n  [\n    'powerspot',\n    {\n      desc: \"This Pokémon's allies have the power of their moves multiplied by 1.3. This affects Doom Desire and Future Sight, even if the user is not on the field.\",\n      name: 'Power Spot',\n      shortDesc: \"This Pokémon's allies have the power of their moves multiplied by 1.3.\"\n    }\n  ],\n  [\n    'prankster',\n    {\n      desc: \"This Pokémon's non-damaging moves have their priority increased by 1. Opposing Dark-type Pokémon are immune to these moves, and any move called by these moves, if the resulting user of the move has this Ability.\",\n      name: 'Prankster',\n      shortDesc: \"This Pokémon's Status moves have priority raised by 1, but Dark types are immune.\"\n    }\n  ],\n  [\n    'pressure',\n    {\n      desc: \"If this Pokémon is the target of an opposing Pokémon's move, that move loses one additional PP. Imprison, Snatch, and Tera Blast also lose one additional PP when used by an opposing Pokémon, but Sticky Web does not.\",\n      isFieldAbility:\n        'If you have a Pokémon with Pressure at the front of your party (even if fainted), there is a 50% chance that a Pokémon will be forced to the upper bound of their encounter level range.',\n      name: 'Pressure',\n      shortDesc: \"If this Pokémon is the target of a foe's move, that move loses one additional PP.\"\n    }\n  ],\n  [\n    'primordialsea',\n    {\n      desc: 'On switch-in, the weather becomes Primordial Sea, which includes all the effects of Rain Dance and prevents damaging Fire-type moves from executing. This weather remains in effect until this Ability is no longer active for any Pokémon, or the weather is changed by the Delta Stream or Desolate Land Abilities.',\n      name: 'Primordial Sea',\n      shortDesc: 'On switch-in, heavy rain begins until this Ability is not active in battle.'\n    }\n  ],\n  [\n    'prismarmor',\n    {\n      desc: 'This Pokémon receives 3/4 damage from supereffective attacks. Moongeist Beam, Sunsteel Strike, and the Abilities Mold Breaker, Teravolt, and Turboblaze cannot ignore this Ability.',\n      name: 'Prism Armor',\n      shortDesc: 'This Pokémon receives 3/4 damage from supereffective attacks.'\n    }\n  ],\n  [\n    'propellertail',\n    {\n      name: 'Propeller Tail',\n      shortDesc: \"This Pokémon's moves cannot be redirected to a different target by any effect.\"\n    }\n  ],\n  [\n    'protean',\n    {\n      desc: \"This Pokémon's type changes to match the type of the move it is about to use. This effect comes after all effects that change a move's type. This effect can only happen once per switch-in, and only if this Pokémon is not Terastallized.\",\n      name: 'Protean',\n      shortDesc: \"This Pokémon's type changes to the type of the move it is using. Once per switch-in.\"\n    }\n  ],\n  [\n    'protosynthesis',\n    {\n      desc: \"If Sunny Day is active or this Pokémon uses a held Booster Energy, this Pokémon's highest stat is multiplied by 1.3, or by 1.5 if the highest stat is Speed. Stat stage changes are considered at the time this Ability activates. If multiple stats are tied, Attack, Defense, Special Attack, Special Defense, and Speed are prioritized in that order. If this effect was started by Sunny Day, a held Booster Energy will not activate and the effect ends when Sunny Day is no longer active. If this effect was started by a held Booster Energy, it ends when this Pokémon is no longer active.\",\n      name: 'Protosynthesis',\n      shortDesc: 'Sunny Day active or Booster Energy used: highest stat is 1.3x, or 1.5x if Speed.'\n    }\n  ],\n  [\n    'psychicsurge',\n    {\n      name: 'Psychic Surge',\n      shortDesc: 'On switch-in, this Pokémon summons Psychic Terrain.'\n    }\n  ],\n  [\n    'punkrock',\n    {\n      desc: \"This Pokémon's sound-based moves have their power multiplied by 1.3. This Pokémon takes halved damage from sound-based moves.\",\n      name: 'Punk Rock',\n      shortDesc: 'This Pokémon receives 1/2 damage from sound moves. Its own have 1.3x power.'\n    }\n  ],\n  [\n    'purepower',\n    {\n      name: 'Pure Power',\n      shortDesc: \"This Pokémon's Attack is doubled.\"\n    }\n  ],\n  [\n    'purifyingsalt',\n    {\n      desc: \"This Pokémon cannot become affected by a non-volatile status condition or Yawn. If a Pokémon uses a Ghost-type attack against this Pokémon, that Pokémon's offensive stat is halved when calculating the damage to this Pokémon.\",\n      name: 'Purifying Salt',\n      shortDesc: \"Ghost damage to this Pokémon dealt with a halved offensive stat; can't be statused.\"\n    }\n  ],\n  [\n    'quarkdrive',\n    {\n      desc: \"If Electric Terrain is active or this Pokémon uses a held Booster Energy, this Pokémon's highest stat is multiplied by 1.3, or by 1.5 if the highest stat is Speed. Stat stage changes are considered at the time this Ability activates. If multiple stats are tied, Attack, Defense, Special Attack, Special Defense, and Speed are prioritized in that order. If this effect was started by Electric Terrain, a held Booster Energy will not activate and the effect ends when Electric Terrain is no longer active. If this effect was started by a held Booster Energy, it ends when this Pokémon is no longer active.\",\n      name: 'Quark Drive',\n      shortDesc: 'Electric Terrain active or Booster Energy used: highest stat is 1.3x, or 1.5x if Speed.'\n    }\n  ],\n  [\n    'queenlymajesty',\n    {\n      desc: 'Priority moves used by opposing Pokémon targeting this Pokémon or its allies are prevented from having an effect.',\n      name: 'Queenly Majesty',\n      shortDesc: 'This Pokémon and its allies are protected from opposing priority moves.'\n    }\n  ],\n  [\n    'quickdraw',\n    {\n      name: 'Quick Draw',\n      shortDesc: 'This Pokémon has a 30% chance to move first in its priority bracket with attacking moves.'\n    }\n  ],\n  [\n    'quickfeet',\n    {\n      desc: 'If this Pokémon has a non-volatile status condition, its Speed is multiplied by 1.5. This Pokémon ignores the paralysis effect of halving Speed.',\n      isFieldAbility:\n        'If a Pokémon with Quick Feet is in the first place in the party (even if fainted), the chance of encountering a wild Pokémon is decreased by 50%.',\n      name: 'Quick Feet',\n      shortDesc: 'If this Pokémon is statused, its Speed is 1.5x; ignores Speed drop from paralysis.'\n    }\n  ],\n  [\n    'raindish',\n    {\n      desc: 'If Rain Dance is active, this Pokémon restores 1/16 of its maximum HP, rounded down, at the end of each turn. This effect is prevented if this Pokémon is holding a Utility Umbrella.',\n      name: 'Rain Dish',\n      shortDesc: 'If Rain Dance is active, this Pokémon heals 1/16 of its max HP each turn.'\n    }\n  ],\n  [\n    'rattled',\n    {\n      desc: \"This Pokémon's Speed is raised by 1 stage if hit by a Bug-, Dark-, or Ghost-type attack, or if an opposing Pokémon affected this Pokémon with the Intimidate Ability.\",\n      name: 'Rattled',\n      shortDesc: 'Speed is raised 1 stage if hit by a Bug-, Dark-, or Ghost-type attack, or Intimidated.'\n    }\n  ],\n  [\n    'rebound',\n    {\n      desc: 'On switch-in, this Pokémon blocks certain status moves and instead uses the move against the original user.',\n      isNonstandard: IsNonStandard.Cap,\n      name: 'Rebound',\n      shortDesc: 'On switch-in, blocks certain status moves and bounces them back to the user.'\n    }\n  ],\n  [\n    'receiver',\n    {\n      desc: 'This Pokémon copies the Ability of an ally that faints. Abilities that cannot be copied are As One, Battle Bond, Comatose, Commander, Disguise, Embody Aspect, Flower Gift, Forecast, Hunger Switch, Ice Face, Illusion, Imposter, Multitype, Neutralizing Gas, Poison Puppeteer, Power Construct, Power of Alchemy, Protosynthesis, Quark Drive, Receiver, RKS System, Schooling, Shields Down, Stance Change, Tera Shell, Tera Shift, Teraform Zero, Trace, Wonder Guard, Zen Mode, and Zero to Hero.',\n      name: 'Receiver',\n      shortDesc: 'This Pokémon copies the Ability of an ally that faints.'\n    }\n  ],\n  [\n    'reckless',\n    {\n      desc: \"This Pokémon's attacks with recoil or crash damage have their power multiplied by 1.2. Does not affect Struggle.\",\n      name: 'Reckless',\n      shortDesc: \"This Pokémon's attacks with recoil or crash damage have 1.2x power; not Struggle.\"\n    }\n  ],\n  [\n    'refrigerate',\n    {\n      desc: \"This Pokémon's Normal-type moves become Ice-type moves and have their power multiplied by 1.2. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.\",\n      name: 'Refrigerate',\n      shortDesc: \"This Pokémon's Normal-type moves become Ice type and have 1.2x power.\"\n    }\n  ],\n  [\n    'regenerator',\n    {\n      name: 'Regenerator',\n      shortDesc: 'This Pokémon restores 1/3 of its maximum HP, rounded down, when it switches out.'\n    }\n  ],\n  [\n    'ripen',\n    {\n      desc: 'When this Pokémon eats certain Berries, the effects are doubled. Berries that restore HP or PP have the amount doubled, Berries that raise stat stages have the amount doubled, Berries that halve damage taken quarter it instead, and a Jaboca Berry or Rowap Berry has the attacker lose 1/4 of its maximum HP, rounded down.',\n      name: 'Ripen',\n      shortDesc: 'When this Pokémon eats certain Berries, the effects are doubled.'\n    }\n  ],\n  [\n    'rivalry',\n    {\n      desc: \"This Pokémon's attacks have their power multiplied by 1.25 against targets of the same gender or multiplied by 0.75 against targets of the opposite gender. There is no modifier if either this Pokémon or the target is genderless.\",\n      name: 'Rivalry',\n      shortDesc: \"This Pokémon's attacks do 1.25x on same gender targets; 0.75x on opposite gender.\"\n    }\n  ],\n  [\n    'rkssystem',\n    {\n      name: 'RKS System',\n      shortDesc: 'If this Pokémon is a Silvally, its type changes to match its held Memory.'\n    }\n  ],\n  [\n    'rockhead',\n    {\n      desc: 'This Pokémon does not take recoil damage, except Struggle. Does not affect Life Orb damage or crash damage.',\n      name: 'Rock Head',\n      shortDesc: 'This Pokémon does not take recoil damage besides Struggle/Life Orb/crash damage.'\n    }\n  ],\n  [\n    'rockypayload',\n    {\n      name: 'Rocky Payload',\n      shortDesc: \"This Pokémon's offensive stat is multiplied by 1.5 while using a Rock-type attack.\"\n    }\n  ],\n  [\n    'roughskin',\n    {\n      desc: 'Pokémon making contact with this Pokémon lose 1/8 of their maximum HP, rounded down.',\n      name: 'Rough Skin',\n      shortDesc: 'Pokémon making contact with this Pokémon lose 1/8 of their max HP.'\n    }\n  ],\n  ['runaway', { name: 'Run Away', shortDesc: 'No competitive use.' }],\n  [\n    'sandforce',\n    {\n      desc: \"If Sandstorm is active, this Pokémon's Ground-, Rock-, and Steel-type attacks have their power multiplied by 1.3. This Pokémon takes no damage from Sandstorm.\",\n      name: 'Sand Force',\n      shortDesc: \"This Pokémon's Ground/Rock/Steel attacks do 1.3x in Sandstorm; immunity to it.\"\n    }\n  ],\n  [\n    'sandrush',\n    {\n      desc: \"If Sandstorm is active, this Pokémon's Speed is doubled. This Pokémon takes no damage from Sandstorm.\",\n      name: 'Sand Rush',\n      shortDesc: \"If Sandstorm is active, this Pokémon's Speed is doubled; immunity to Sandstorm.\"\n    }\n  ],\n  [\n    'sandspit',\n    {\n      desc: 'When this Pokémon is hit by an attack, the effect of Sandstorm begins. This effect comes after the effects of Max and G-Max Moves.',\n      name: 'Sand Spit',\n      shortDesc: 'When this Pokémon is hit by an attack, the effect of Sandstorm begins.'\n    }\n  ],\n  [\n    'sandstream',\n    {\n      name: 'Sand Stream',\n      shortDesc: 'On switch-in, this Pokémon summons Sandstorm.'\n    }\n  ],\n  [\n    'sandveil',\n    {\n      desc: 'If Sandstorm is active, the accuracy of moves used against this Pokémon is multiplied by 0.8. This Pokémon takes no damage from Sandstorm.',\n      isFieldAbility:\n        'If a Pokémon with Sand Veil is in the first place in the party (even if fainted) in an area with a sandstorm, the chance of encountering a wild Pokémon is decreased by 50%.',\n      name: 'Sand Veil',\n      shortDesc: \"If Sandstorm is active, this Pokémon's evasiveness is 1.25x; immunity to Sandstorm.\"\n    }\n  ],\n  [\n    'sapsipper',\n    {\n      desc: 'This Pokémon is immune to Grass-type moves and raises its Attack by 1 stage when hit by a Grass-type move.',\n      name: 'Sap Sipper',\n      shortDesc: \"This Pokémon's Attack is raised 1 stage if hit by a Grass move; Grass immunity.\"\n    }\n  ],\n  [\n    'schooling',\n    {\n      desc: 'On switch-in, if this Pokémon is a Wishiwashi that is level 20 or above and has more than 1/4 of its maximum HP left, it changes to School Form. If it is in School Form and its HP drops to 1/4 of its maximum HP or less, it changes to Solo Form at the end of the turn. If it is in Solo Form and its HP is greater than 1/4 its maximum HP at the end of the turn, it changes to School Form.',\n      name: 'Schooling',\n      shortDesc: 'If user is Wishiwashi, changes to School Form if it has > 1/4 max HP, else Solo Form.'\n    }\n  ],\n  [\n    'scrappy',\n    {\n      desc: 'This Pokémon can hit Ghost types with Normal- and Fighting-type moves. This Pokémon is immune to the effect of the Intimidate Ability.',\n      name: 'Scrappy',\n      shortDesc: 'Fighting, Normal moves hit Ghost. Immune to Intimidate.'\n    }\n  ],\n  [\n    'screencleaner',\n    {\n      name: 'Screen Cleaner',\n      shortDesc: 'On switch-in, the effects of Aurora Veil, Light Screen, and Reflect end for both sides.'\n    }\n  ],\n  [\n    'seedsower',\n    {\n      desc: 'When this Pokémon is hit by an attack, the effect of Grassy Terrain begins.',\n      name: 'Seed Sower',\n      shortDesc: 'When this Pokémon is hit by an attack, the effect of Grassy Terrain begins.'\n    }\n  ],\n  [\n    'serenegrace',\n    {\n      desc: \"This Pokémon's moves have their secondary effect chance doubled. This effect stacks with the Rainbow effect, except for secondary effects that cause the target to flinch.\",\n      name: 'Serene Grace',\n      shortDesc: \"This Pokémon's moves have their secondary effect chance doubled.\"\n    }\n  ],\n  [\n    'shadowshield',\n    {\n      desc: 'If this Pokémon is at full HP, damage taken from attacks is halved. Moongeist Beam, Sunsteel Strike, and the Abilities Mold Breaker, Teravolt, and Turboblaze cannot ignore this Ability.',\n      name: 'Shadow Shield',\n      shortDesc: 'If this Pokémon is at full HP, damage taken from attacks is halved.'\n    }\n  ],\n  [\n    'shadowtag',\n    {\n      aliases: ['stag'],\n      desc: 'Prevents opposing Pokémon from choosing to switch out, unless they are holding a Shed Shell, are a Ghost type, or also have this Ability.',\n      name: 'Shadow Tag',\n      shortDesc: 'Prevents foes from choosing to switch unless they also have this Ability.'\n    }\n  ],\n  [\n    'sharpness',\n    {\n      desc: \"This Pokémon's slicing attacks have their power multiplied by 1.5.\",\n      name: 'Sharpness',\n      shortDesc: \"This Pokémon's slicing moves have their power multiplied by 1.5.\"\n    }\n  ],\n  [\n    'shedskin',\n    {\n      desc: 'This Pokémon has a 33% chance to have its non-volatile status condition cured at the end of each turn.',\n      name: 'Shed Skin',\n      shortDesc: 'This Pokémon has a 33% chance to have its status cured at the end of each turn.'\n    }\n  ],\n  [\n    'sheerforce',\n    {\n      desc: \"This Pokémon's attacks with secondary effects have their power multiplied by 1.3, but the secondary effects are removed. If a secondary effect was removed, it also removes the user's Life Orb recoil and Shell Bell recovery, and prevents the target's Anger Shell, Berserk, Color Change, Emergency Exit, Pickpocket, Wimp Out, Red Card, Eject Button, Kee Berry, and Maranga Berry from activating.\",\n      name: 'Sheer Force',\n      shortDesc: \"This Pokémon's attacks with secondary effects have 1.3x power; nullifies the effects.\"\n    }\n  ],\n  [\n    'shellarmor',\n    {\n      name: 'Shell Armor',\n      shortDesc: 'This Pokémon cannot be struck by a critical hit.'\n    }\n  ],\n  [\n    'shielddust',\n    {\n      desc: \"This Pokémon is not affected by the secondary effect of another Pokémon's attack. Attacks with secondary effects that are prevented include those with a chance (even 100%) to paralyze, sleep, freeze, burn, poison, confuse, cause this Pokémon to flinch, cause this Pokémon's stat stages to be lowered, as well as Anchor Shot, Eerie Spell, Fling, Psychic Noise, Salt Cure, Spirit Shackle, Syrup Bomb, and Throat Chop. The effect of Sparkling Aria is prevented if this Pokémon is the only target. Secondary effects added by King's Rock, Razor Fang, and the Poison Touch, Stench, and Toxic Chain Abilities are also prevented against this Pokémon.\",\n      name: 'Shield Dust',\n      shortDesc: \"This Pokémon is not affected by the secondary effect of another Pokémon's attack.\"\n    }\n  ],\n  [\n    'shieldsdown',\n    {\n      desc: 'If this Pokémon is a Minior, it changes to its Core forme if it has 1/2 or less of its maximum HP, and changes to Meteor Form if it has more than 1/2 its maximum HP. This check is done on switch-in and at the end of each turn. While in its Meteor Form, it cannot become affected by a non-volatile status condition or Yawn.',\n      name: 'Shields Down',\n      shortDesc: 'If Minior, switch-in/end of turn it changes to Core at 1/2 max HP or less, else Meteor.'\n    }\n  ],\n  [\n    'simple',\n    {\n      desc: \"When this Pokémon's stat stages are raised or lowered, the effect is doubled instead. This Ability does not affect stat stage increases received from Z-Power effects that happen before a Z-Move is used.\",\n      name: 'Simple',\n      shortDesc: \"When one of this Pokémon's stat stages is raised or lowered, the amount is doubled.\"\n    }\n  ],\n  [\n    'skilllink',\n    {\n      desc: \"This Pokémon's multi-hit attacks always hit the maximum number of times. Triple Kick and Triple Axel do not check accuracy for the second and third hits.\",\n      name: 'Skill Link',\n      shortDesc: \"This Pokémon's multi-hit attacks always hit the maximum number of times.\"\n    }\n  ],\n  [\n    'slowstart',\n    {\n      name: 'Slow Start',\n      shortDesc: \"On switch-in, this Pokémon's Attack and Speed are halved for 5 turns.\"\n    }\n  ],\n  [\n    'slushrush',\n    {\n      name: 'Slush Rush',\n      shortDesc: \"If Snow is active, this Pokémon's Speed is doubled.\"\n    }\n  ],\n  [\n    'sniper',\n    {\n      name: 'Sniper',\n      shortDesc: 'If this Pokémon strikes with a critical hit, the damage is multiplied by 1.5.'\n    }\n  ],\n  [\n    'snowcloak',\n    {\n      desc: 'If Snow is active, the accuracy of moves used against this Pokémon is multiplied by 0.8.',\n      isFieldAbility:\n        'If a Pokémon with Snow Cloak is in the first place in the party (even if fainted) in an area with hail, the chance of encountering a wild Pokémon is decreased by 50%.',\n      name: 'Snow Cloak',\n      shortDesc: \"If Snow is active, this Pokémon's evasiveness is 1.25x.\"\n    }\n  ],\n  [\n    'snowwarning',\n    {\n      name: 'Snow Warning',\n      shortDesc: 'On switch-in, this Pokémon summons Snow.'\n    }\n  ],\n  [\n    'solarpower',\n    {\n      desc: \"If Sunny Day is active, this Pokémon's Special Attack is multiplied by 1.5 and it loses 1/8 of its maximum HP, rounded down, at the end of each turn. These effects are prevented if the Pokémon is holding a Utility Umbrella.\",\n      name: 'Solar Power',\n      shortDesc: \"If Sunny Day is active, this Pokémon's Sp. Atk is 1.5x; loses 1/8 max HP per turn.\"\n    }\n  ],\n  [\n    'solidrock',\n    {\n      name: 'Solid Rock',\n      shortDesc: 'This Pokémon receives 3/4 damage from supereffective attacks.'\n    }\n  ],\n  [\n    'soulheart',\n    {\n      desc: \"This Pokémon's Special Attack is raised by 1 stage when another Pokémon faints.\",\n      name: 'Soul-Heart',\n      shortDesc: \"This Pokémon's Special Attack is raised by 1 stage when another Pokémon faints.\"\n    }\n  ],\n  [\n    'soundproof',\n    {\n      name: 'Soundproof',\n      shortDesc: 'This Pokémon is immune to sound-based moves, unless it used the move.'\n    }\n  ],\n  [\n    'speedboost',\n    {\n      desc: \"This Pokémon's Speed is raised by 1 stage at the end of each full turn it has been on the field.\",\n      name: 'Speed Boost',\n      shortDesc: \"This Pokémon's Speed is raised 1 stage at the end of each full turn on the field.\"\n    }\n  ],\n  [\n    'spicyspray',\n    {\n      name: 'Spicy Spray',\n      shortDesc: 'If this Pokémon is hit by an attack, the attacker becomes burned.'\n    }\n  ],\n  [\n    'stakeout',\n    {\n      name: 'Stakeout',\n      shortDesc: \"This Pokémon's offensive stat is doubled against a target that switched in this turn.\"\n    }\n  ],\n  [\n    'stall',\n    {\n      name: 'Stall',\n      shortDesc: 'This Pokémon moves last among Pokémon using the same or greater priority moves.'\n    }\n  ],\n  [\n    'stalwart',\n    {\n      name: 'Stalwart',\n      shortDesc: \"This Pokémon's moves cannot be redirected to a different target by any effect.\"\n    }\n  ],\n  [\n    'stamina',\n    {\n      name: 'Stamina',\n      shortDesc: \"This Pokémon's Defense is raised by 1 stage after it is damaged by a move.\"\n    }\n  ],\n  [\n    'stancechange',\n    {\n      desc: \"If this Pokémon is an Aegislash, it changes to Blade Forme before using an attacking move, and changes to Shield Forme before using King's Shield.\",\n      name: 'Stance Change',\n      shortDesc: \"If Aegislash, changes Forme to Blade before attacks and Shield before King's Shield.\"\n    }\n  ],\n  [\n    'static',\n    {\n      isFieldAbility:\n        'In Pokémon Sword and Shield, if a Pokémon with Static is in the first place in the party, there is a 50% chance the game will force an encounter with an Electric-type Pokémon, if one is possible.',\n      name: 'Static',\n      shortDesc: '30% chance a Pokémon making contact with this Pokémon will be paralyzed.'\n    }\n  ],\n  [\n    'steadfast',\n    {\n      name: 'Steadfast',\n      shortDesc: 'If this Pokémon flinches, its Speed is raised by 1 stage.'\n    }\n  ],\n  [\n    'steamengine',\n    {\n      desc: \"This Pokémon's Speed is raised by 6 stages after it is damaged by a Fire- or Water-type move.\",\n      isFieldAbility: 'Having a Pokémon with Steam Engine in your party will halve the number of cycles it takes for all eggs in the party to hatch.',\n      name: 'Steam Engine',\n      shortDesc: \"This Pokémon's Speed is raised by 6 stages after it is damaged by Fire/Water moves.\"\n    }\n  ],\n  [\n    'steelworker',\n    {\n      name: 'Steelworker',\n      shortDesc: \"This Pokémon's offensive stat is multiplied by 1.5 while using a Steel-type attack.\"\n    }\n  ],\n  [\n    'steelyspirit',\n    {\n      desc: \"This Pokémon and its allies' Steel-type moves have their power multiplied by 1.5. This affects Doom Desire even if the user is not on the field.\",\n      name: 'Steely Spirit',\n      shortDesc: \"This Pokémon and its allies' Steel-type moves have their power multiplied by 1.5.\"\n    }\n  ],\n  [\n    'stench',\n    {\n      desc: \"This Pokémon's attacks without a chance to make the target flinch gain a 10% chance to make the target flinch.\",\n      isFieldAbility:\n        'If a Pokémon with Stench is in the first place in the party (even if fainted), the chance of encountering a wild Pokémon is decreased by 50%.',\n      name: 'Stench',\n      shortDesc: \"This Pokémon's attacks without a chance to flinch gain a 10% chance to flinch.\"\n    }\n  ],\n  [\n    'stickyhold',\n    {\n      desc: \"This Pokémon cannot lose its held item due to another Pokémon's Ability or attack, unless the attack knocks out this Pokémon. A Sticky Barb will be transferred to other Pokémon regardless of this Ability.\",\n      isFieldAbility:\n        'If a Pokémon with Sticky Hold is in the first place in the party (even if fainted), bites will occur more often while fishing.',\n      name: 'Sticky Hold',\n      shortDesc: \"This Pokémon cannot lose its held item due to another Pokémon's Ability or attack.\"\n    }\n  ],\n  [\n    'stormdrain',\n    {\n      desc: 'This Pokémon is immune to Water-type moves and raises its Special Attack by 1 stage when hit by a Water-type move. If this Pokémon is not the target of a single-target Water-type move used by another Pokémon, this Pokémon redirects that move to itself if it is within the range of that move. If multiple Pokémon could redirect with this Ability, it goes to the one with the highest Speed, or in the case of a tie to the one that has had this Ability active longer.',\n      isFieldAbility:\n        'In Pokémon Sword and Shield, if a Pokémon with Storm Drain is in the first place in the party (even if fainted), then there is a 50% chance the game will force an encounter with a Water-type Pokémon, if one is possible.',\n      name: 'Storm Drain',\n      shortDesc: 'This Pokémon draws Water moves to itself to raise Sp. Atk by 1; Water immunity.'\n    }\n  ],\n  [\n    'strongjaw',\n    {\n      desc: \"This Pokémon's bite-based attacks have their power multiplied by 1.5.\",\n      name: 'Strong Jaw',\n      shortDesc: \"This Pokémon's bite-based attacks have 1.5x power. Bug Bite is not boosted.\"\n    }\n  ],\n  [\n    'sturdy',\n    {\n      desc: 'If this Pokémon is at full HP, it survives one hit with at least 1 HP. OHKO moves fail when used against this Pokémon.',\n      name: 'Sturdy',\n      shortDesc: 'If this Pokémon is at full HP, it survives one hit with at least 1 HP. Immune to OHKO.'\n    }\n  ],\n  [\n    'suctioncups',\n    {\n      isFieldAbility:\n        'If a Pokémon with Suction Cups is in the first place in the party (even if fainted), bites will occur more often while fishing.',\n      name: 'Suction Cups',\n      shortDesc: \"This Pokémon cannot be forced to switch out by another Pokémon's attack or item.\"\n    }\n  ],\n  [\n    'superluck',\n    {\n      isFieldAbility:\n        'In Pokémon Sword and Shield, if a Pokémon with this Ability leads the party, the chances of finding a wild Pokémon holding an item increase.',\n      name: 'Super Luck',\n      shortDesc: \"This Pokémon's critical hit ratio is raised by 1 stage.\"\n    }\n  ],\n  [\n    'supersweetsyrup',\n    {\n      name: 'Supersweet Syrup',\n      shortDesc: 'On switch-in, this Pokémon lowers the evasiveness of opponents 1 stage. Once per battle.'\n    }\n  ],\n  [\n    'supremeoverlord',\n    {\n      desc: \"This Pokémon's moves have their power multiplied by 1+(X*0.1), where X is the total number of times any Pokémon has fainted on the user's side when this Ability became active, and X cannot be greater than 5.\",\n      name: 'Supreme Overlord',\n      shortDesc: \"This Pokémon's moves have 10% more power for each fainted ally, up to 5 allies.\"\n    }\n  ],\n  [\n    'surgesurfer',\n    {\n      name: 'Surge Surfer',\n      shortDesc: \"If Electric Terrain is active, this Pokémon's Speed is doubled.\"\n    }\n  ],\n  [\n    'swarm',\n    {\n      desc: 'When this Pokémon has 1/3 or less of its maximum HP, rounded down, its offensive stat is multiplied by 1.5 while using a Bug-type attack.',\n      isFieldAbility: 'In Pokémon Emerald, this Ability also increases the frequency cries of wild Pokémon that are heard in the overworld.',\n      name: 'Swarm',\n      shortDesc: \"At 1/3 or less of its max HP, this Pokémon's offensive stat is 1.5x with Bug attacks.\"\n    }\n  ],\n  [\n    'sweetveil',\n    {\n      desc: 'This Pokémon and its allies cannot fall asleep, but those already asleep do not wake up immediately. This Pokémon and its allies cannot use Rest successfully or become affected by Yawn, and those previously affected will not fall asleep.',\n      name: 'Sweet Veil',\n      shortDesc: 'This Pokémon and its allies cannot fall asleep; those already asleep do not wake up.'\n    }\n  ],\n  [\n    'swiftswim',\n    {\n      desc: \"If Rain Dance is active, this Pokémon's Speed is doubled. This effect is prevented if this Pokémon is holding a Utility Umbrella.\",\n      name: 'Swift Swim',\n      shortDesc: \"If Rain Dance is active, this Pokémon's Speed is doubled.\"\n    }\n  ],\n  [\n    'swordofruin',\n    {\n      name: 'Sword of Ruin',\n      shortDesc: 'Active Pokémon without this Ability have their Defense multiplied by 0.75.'\n    }\n  ],\n  [\n    'symbiosis',\n    {\n      desc: \"If an ally uses its item, this Pokémon gives its item to that ally immediately. Does not activate if the ally's item was stolen or knocked off, or if the ally used an Eject Button or Eject Pack.\",\n      name: 'Symbiosis',\n      shortDesc: 'If an ally uses its item, this Pokémon gives its item to that ally immediately.'\n    }\n  ],\n  [\n    'synchronize',\n    {\n      desc: 'If another Pokémon burns, paralyzes, poisons, or badly poisons this Pokémon, that Pokémon receives the same non-volatile status condition.',\n      isFieldAbility:\n        'If a Pokémon with Synchronize in the first slot in the party (even if fainted), chance of encountering a wild Pokémon with the same nature will be 50%. In Pokémon Sword and Shield however, all wild Pokémon are guaranteed to have the same nature as the Pokémon with Synchronize, exluding gift Pokémon and Pokémon obtained from max raid battles. Roaming Pokémon, Gift Pokémon (excluding Pokémon obtained via mystery gift or eggs in Omega Ruby and Alpha Sapphire to Ultra Sun/Moon), Stationary Pokémon in Pokémon Emerald, Pokémon in the Pokewalker and Pokémon found in Entree Forest are also not affected by this ability.',\n      name: 'Synchronize',\n      shortDesc: 'If another Pokémon burns/poisons/paralyzes this Pokémon, it also gets that status.'\n    }\n  ],\n  [\n    'tabletsofruin',\n    {\n      name: 'Tablets of Ruin',\n      shortDesc: 'Active Pokémon without this Ability have their Attack multiplied by 0.75.'\n    }\n  ],\n  [\n    'tangledfeet',\n    {\n      name: 'Tangled Feet',\n      shortDesc: \"This Pokémon's evasiveness is doubled as long as it is confused.\"\n    }\n  ],\n  [\n    'tanglinghair',\n    {\n      name: 'Tangling Hair',\n      shortDesc: 'Pokémon making contact with this Pokémon have their Speed lowered by 1 stage.'\n    }\n  ],\n  [\n    'technician',\n    {\n      desc: \"This Pokémon's moves of 60 power or less have their power multiplied by 1.5, including Struggle. This effect comes after a move's effect changes its own power.\",\n      name: 'Technician',\n      shortDesc: \"This Pokémon's moves of 60 power or less have 1.5x power, including Struggle.\"\n    }\n  ],\n  [\n    'telepathy',\n    {\n      name: 'Telepathy',\n      shortDesc: 'This Pokémon does not take damage from attacks made by its allies.'\n    }\n  ],\n  [\n    'teraformzero',\n    {\n      name: 'Teraform Zero',\n      shortDesc: 'Terapagos: Terastallizing ends the effects of weather and terrain. Once per battle.'\n    }\n  ],\n  [\n    'terashell',\n    {\n      desc: 'If this Pokémon is a Terapagos at full HP, the effectiveness of attacks against it is changed to 0.5 unless this Pokémon is immune to the move. Multi-hit moves retain the same effectiveness throughout the attack.',\n      name: 'Tera Shell',\n      shortDesc: 'Terapagos: If full HP, attacks taken have 0.5x effectiveness unless naturally immune.'\n    }\n  ],\n  [\n    'terashift',\n    {\n      name: 'Tera Shift',\n      shortDesc: 'If this Pokémon is a Terapagos, it transforms into its Terastal Form on entry.'\n    }\n  ],\n  [\n    'teravolt',\n    {\n      desc: \"This Pokémon's moves and their effects ignore certain Abilities of other Pokémon. The Abilities that can be negated are Armor Tail, Aroma Veil, Aura Break, Battle Armor, Big Pecks, Bulletproof, Clear Body, Contrary, Damp, Dazzling, Disguise, Dry Skin, Earth Eater, Filter, Flash Fire, Flower Gift, Flower Veil, Fluffy, Friend Guard, Fur Coat, Good as Gold, Grass Pelt, Guard Dog, Heatproof, Heavy Metal, Hyper Cutter, Ice Face, Ice Scales, Illuminate, Immunity, Inner Focus, Insomnia, Keen Eye, Leaf Guard, Levitate, Light Metal, Lightning Rod, Limber, Magic Bounce, Magma Armor, Marvel Scale, Mind's Eye, Mirror Armor, Motor Drive, Multiscale, Oblivious, Overcoat, Own Tempo, Pastel Veil, Punk Rock, Purifying Salt, Queenly Majesty, Sand Veil, Sap Sipper, Shell Armor, Shield Dust, Simple, Snow Cloak, Solid Rock, Soundproof, Sticky Hold, Storm Drain, Sturdy, Suction Cups, Sweet Veil, Tangled Feet, Telepathy, Tera Shell, Thermal Exchange, Thick Fat, Unaware, Vital Spirit, Volt Absorb, Water Absorb, Water Bubble, Water Veil, Well-Baked Body, White Smoke, Wind Rider, Wonder Guard, and Wonder Skin. This affects every other Pokémon on the field, whether or not it is a target of this Pokémon's move, and whether or not their Ability is beneficial to this Pokémon.\",\n      name: 'Teravolt',\n      shortDesc: \"This Pokémon's moves and their effects ignore the Abilities of other Pokémon.\"\n    }\n  ],\n  [\n    'thermalexchange',\n    {\n      desc: \"This Pokémon's Attack is raised 1 stage after it is damaged by a Fire-type move. This Pokémon cannot be burned. Gaining this Ability while burned cures it.\",\n      name: 'Thermal Exchange',\n      shortDesc: \"This Pokémon's Attack is raised by 1 when damaged by Fire moves; can't be burned.\"\n    }\n  ],\n  [\n    'thickfat',\n    {\n      desc: \"If a Pokémon uses a Fire- or Ice-type attack against this Pokémon, that Pokémon's offensive stat is halved when calculating the damage to this Pokémon.\",\n      name: 'Thick Fat',\n      shortDesc: 'Fire-/Ice-type moves against this Pokémon deal damage with a halved offensive stat.'\n    }\n  ],\n  [\n    'tintedlens',\n    {\n      name: 'Tinted Lens',\n      shortDesc: \"This Pokémon's attacks that are not very effective on a target deal double damage.\"\n    }\n  ],\n  [\n    'torrent',\n    {\n      desc: 'When this Pokémon has 1/3 or less of its maximum HP, rounded down, its offensive stat is multiplied by 1.5 while using a Water-type attack.',\n      name: 'Torrent',\n      shortDesc: \"At 1/3 or less of its max HP, this Pokémon's offensive stat is 1.5x with Water attacks.\"\n    }\n  ],\n  [\n    'toughclaws',\n    {\n      name: 'Tough Claws',\n      shortDesc: \"This Pokémon's contact moves have their power multiplied by 1.3.\"\n    }\n  ],\n  [\n    'toxicboost',\n    {\n      desc: 'While this Pokémon is poisoned, the power of its physical attacks is multiplied by 1.5.',\n      name: 'Toxic Boost',\n      shortDesc: 'While this Pokémon is poisoned, its physical attacks have 1.5x power.'\n    }\n  ],\n  [\n    'toxicchain',\n    {\n      desc: \"This Pokémon's attacks have a 30% chance of badly poisoning. This effect comes before a move's inherent secondary effect chance.\",\n      name: 'Toxic Chain',\n      shortDesc: \"This Pokémon's attacks have a 30% chance of badly poisoning.\"\n    }\n  ],\n  [\n    'toxicdebris',\n    {\n      desc: 'When this Pokémon is hit by a physical attack, Toxic Spikes are set on the opposing side of the field.',\n      name: 'Toxic Debris',\n      shortDesc: 'If this Pokémon is hit by a physical attack, Toxic Spikes are set on the opposing side.'\n    }\n  ],\n  [\n    'trace',\n    {\n      desc: \"On switch-in, this Pokémon copies a random opposing Pokémon's Ability. Abilities that cannot be copied are As One, Battle Bond, Comatose, Commander, Disguise, Embody Aspect, Flower Gift, Forecast, Hunger Switch, Ice Face, Illusion, Imposter, Multitype, Neutralizing Gas, Poison Puppeteer, Power Construct, Power of Alchemy, Protosynthesis, Quark Drive, Receiver, RKS System, Schooling, Shields Down, Stance Change, Teraform Zero, Tera Shell, Tera Shift, Trace, Zen Mode, and Zero to Hero. If no opposing Pokémon has an Ability that can be copied, this Ability will activate as soon as one does.\",\n      name: 'Trace',\n      shortDesc: \"On switch-in, or when it can, this Pokémon copies a random adjacent foe's Ability.\"\n    }\n  ],\n  [\n    'transistor',\n    {\n      name: 'Transistor',\n      shortDesc: \"This Pokémon's offensive stat is multiplied by 1.3 while using an Electric-type attack.\"\n    }\n  ],\n  [\n    'triage',\n    {\n      name: 'Triage',\n      shortDesc: \"This Pokémon's healing moves have their priority increased by 3.\"\n    }\n  ],\n  [\n    'truant',\n    {\n      name: 'Truant',\n      shortDesc: 'This Pokémon skips every other turn instead of using a move.'\n    }\n  ],\n  [\n    'turboblaze',\n    {\n      desc: \"This Pokémon's moves and their effects ignore certain Abilities of other Pokémon. The Abilities that can be negated are Armor Tail, Aroma Veil, Aura Break, Battle Armor, Big Pecks, Bulletproof, Clear Body, Contrary, Damp, Dazzling, Disguise, Dry Skin, Earth Eater, Filter, Flash Fire, Flower Gift, Flower Veil, Fluffy, Friend Guard, Fur Coat, Good as Gold, Grass Pelt, Guard Dog, Heatproof, Heavy Metal, Hyper Cutter, Ice Face, Ice Scales, Illuminate, Immunity, Inner Focus, Insomnia, Keen Eye, Leaf Guard, Levitate, Light Metal, Lightning Rod, Limber, Magic Bounce, Magma Armor, Marvel Scale, Mind's Eye, Mirror Armor, Motor Drive, Multiscale, Oblivious, Overcoat, Own Tempo, Pastel Veil, Punk Rock, Purifying Salt, Queenly Majesty, Sand Veil, Sap Sipper, Shell Armor, Shield Dust, Simple, Snow Cloak, Solid Rock, Soundproof, Sticky Hold, Storm Drain, Sturdy, Suction Cups, Sweet Veil, Tangled Feet, Telepathy, Tera Shell, Thermal Exchange, Thick Fat, Unaware, Vital Spirit, Volt Absorb, Water Absorb, Water Bubble, Water Veil, Well-Baked Body, White Smoke, Wind Rider, Wonder Guard, and Wonder Skin. This affects every other Pokémon on the field, whether or not it is a target of this Pokémon's move, and whether or not their Ability is beneficial to this Pokémon.\",\n      name: 'Turboblaze',\n      shortDesc: \"This Pokémon's moves and their effects ignore the Abilities of other Pokémon.\"\n    }\n  ],\n  [\n    'unaware',\n    {\n      desc: \"This Pokémon ignores other Pokémon's Attack, Special Attack, and accuracy stat stages when taking damage, and ignores other Pokémon's Defense, Special Defense, and evasiveness stat stages when dealing damage.\",\n      name: 'Unaware',\n      shortDesc: \"This Pokémon ignores other Pokémon's stat stages when taking or doing damage.\"\n    }\n  ],\n  [\n    'unburden',\n    {\n      desc: 'If this Pokémon loses its held item for any reason, its Speed is doubled as long as it remains active, has this Ability, and is not holding an item.',\n      name: 'Unburden',\n      shortDesc: 'Speed is doubled on held item loss; boost is lost if it switches, gets new item/Ability.'\n    }\n  ],\n  [\n    'unnerve',\n    {\n      desc: 'While this Pokémon is active, it prevents opposing Pokémon from using their Berries. This Ability activates before hazards and other Abilities take effect.',\n      name: 'Unnerve',\n      shortDesc: 'While this Pokémon is active, it prevents opposing Pokémon from using their Berries.'\n    }\n  ],\n  [\n    'unseenfist',\n    {\n      desc: \"All of this Pokémon's moves that make contact bypass protection.\",\n      name: 'Unseen Fist',\n      shortDesc: \"This Pokémon's contact moves ignore the target's protection, except Max Guard.\"\n    }\n  ],\n  [\n    'vesselofruin',\n    {\n      name: 'Vessel of Ruin',\n      shortDesc: 'Active Pokémon without this Ability have their Special Attack multiplied by 0.75.'\n    }\n  ],\n  [\n    'victorystar',\n    {\n      name: 'Victory Star',\n      shortDesc: \"This Pokémon and its allies' moves have their accuracy multiplied by 1.1.\"\n    }\n  ],\n  [\n    'vitalspirit',\n    {\n      isFieldAbility:\n        'If you have a Pokémon with Vital Spirit at the front of your party (even if fainted), there is a 50% chance that a Pokémon will be forced to the upper bound of their encounter level range. In Generation 5, Vital Spirit also prevented a Pokémon from visiting the Dream World before it was shut down.',\n      name: 'Vital Spirit',\n      shortDesc: 'This Pokémon cannot fall asleep. Gaining this Ability while asleep cures it.'\n    }\n  ],\n  [\n    'voltabsorb',\n    {\n      desc: 'This Pokémon is immune to Electric-type moves and restores 1/4 of its maximum HP, rounded down, when hit by an Electric-type move.',\n      name: 'Volt Absorb',\n      shortDesc: 'This Pokémon heals 1/4 of its max HP when hit by Electric moves; Electric immunity.'\n    }\n  ],\n  [\n    'wanderingspirit',\n    {\n      desc: 'Pokémon making contact with this Pokémon have their Ability swapped with this one. Does not affect Pokémon with the Abilities As One, Battle Bond, Comatose, Commander, Disguise, Embody Aspect, Hunger Switch, Ice Face, Illusion, Multitype, Neutralizing Gas, Poison Puppeteer, Power Construct, Protosynthesis, Quark Drive, RKS System, Schooling, Shields Down, Stance Change, Tera Shell, Tera Shift, Teraform Zero, Wonder Guard, Zen Mode, or Zero to Hero.',\n      name: 'Wandering Spirit',\n      shortDesc: 'Pokémon making contact with this Pokémon have their Ability swapped with this one.'\n    }\n  ],\n  [\n    'waterabsorb',\n    {\n      desc: 'This Pokémon is immune to Water-type moves and restores 1/4 of its maximum HP, rounded down, when hit by a Water-type move.',\n      name: 'Water Absorb',\n      shortDesc: 'This Pokémon heals 1/4 of its max HP when hit by Water moves; Water immunity.'\n    }\n  ],\n  [\n    'waterbubble',\n    {\n      desc: \"This Pokémon's offensive stat is doubled while using a Water-type attack. If a Pokémon uses a Fire-type attack against this Pokémon, that Pokémon's offensive stat is halved when calculating the damage to this Pokémon. This Pokémon cannot be burned. Gaining this Ability while burned cures it.\",\n      name: 'Water Bubble',\n      shortDesc: \"This Pokémon's Water power is 2x; it can't be burned; Fire power against it is halved.\"\n    }\n  ],\n  [\n    'watercompaction',\n    {\n      name: 'Water Compaction',\n      shortDesc: \"This Pokémon's Defense is raised 2 stages after it is damaged by a Water-type move.\"\n    }\n  ],\n  [\n    'waterveil',\n    {\n      name: 'Water Veil',\n      shortDesc: 'This Pokémon cannot be burned. Gaining this Ability while burned cures it.'\n    }\n  ],\n  [\n    'weakarmor',\n    {\n      desc: 'If a physical attack hits this Pokémon, its Defense is lowered by 1 stage and its Speed is raised by 2 stages.',\n      name: 'Weak Armor',\n      shortDesc: 'If a physical attack hits this Pokémon, Defense is lowered by 1, Speed is raised by 2.'\n    }\n  ],\n  [\n    'wellbakedbody',\n    {\n      desc: 'This Pokémon is immune to Fire-type moves and raises its Defense by 2 stages when hit by a Fire-type move.',\n      name: 'Well-Baked Body',\n      shortDesc: \"This Pokémon's Defense is raised 2 stages if hit by a Fire move; Fire immunity.\"\n    }\n  ],\n  [\n    'whitesmoke',\n    {\n      isFieldAbility:\n        'If a Pokémon with White Smoke is in the first place in the party (even if fainted), the chance of encountering a wild Pokémon is decreased by 50%.',\n      name: 'White Smoke',\n      shortDesc: \"Prevents other Pokémon from lowering this Pokémon's stat stages.\"\n    }\n  ],\n  [\n    'wimpout',\n    {\n      desc: 'When this Pokémon has more than 1/2 its maximum HP and takes damage bringing it to 1/2 or less of its maximum HP, it immediately switches out to a chosen ally. This effect applies after all hits from a multi-hit move. This effect is prevented if the move had a secondary effect removed by the Sheer Force Ability. This effect applies to both direct and indirect damage, except Curse and Substitute on use, Belly Drum, Pain Split, and confusion damage.',\n      name: 'Wimp Out',\n      shortDesc: 'This Pokémon switches out when it reaches 1/2 or less of its maximum HP.'\n    }\n  ],\n  [\n    'windpower',\n    {\n      desc: \"This Pokémon gains the Charge effect when it takes a hit from a wind move or when Tailwind begins on this Pokémon's side.\",\n      name: 'Wind Power',\n      shortDesc: 'This Pokémon gains the Charge effect when hit by a wind move or Tailwind begins.'\n    }\n  ],\n  [\n    'windrider',\n    {\n      desc: \"This Pokémon is immune to wind moves and raises its Attack by 1 stage when hit by a wind move or when Tailwind begins on this Pokémon's side.\",\n      name: 'Wind Rider',\n      shortDesc: 'Attack raised by 1 if hit by a wind move or Tailwind begins. Wind move immunity.'\n    }\n  ],\n  [\n    'wonderguard',\n    {\n      name: 'Wonder Guard',\n      shortDesc: 'This Pokémon can only be damaged by supereffective moves and indirect damage.'\n    }\n  ],\n  [\n    'wonderskin',\n    {\n      desc: 'Non-damaging moves that check accuracy have their accuracy changed to 50% when used against this Pokémon. This effect comes before other effects that modify accuracy.',\n      name: 'Wonder Skin',\n      shortDesc: 'Status moves with accuracy checks are 50% accurate when used on this Pokémon.'\n    }\n  ],\n  [\n    'zenmode',\n    {\n      desc: \"If this Pokémon is a Darmanitan or Galarian Darmanitan, it changes to Zen Mode if it has 1/2 or less of its maximum HP at the end of a turn. If Darmanitan's HP is above 1/2 of its maximum HP at the end of a turn, it changes back to Standard Mode.\",\n      name: 'Zen Mode',\n      shortDesc: 'If Darmanitan, at end of turn changes Mode to Standard if > 1/2 max HP, else Zen.'\n    }\n  ],\n  [\n    'zerotohero',\n    {\n      name: 'Zero to Hero',\n      shortDesc: 'If this Pokémon is a Palafin in Zero Form, switching out has it change to Hero Form.'\n    }\n  ]\n]);\n\nfor (const [key, value] of abilities.entries()) {\n  value.key = key;\n}\n"
  },
  {
    "path": "src/lib/assets/flavorText.json",
    "content": "{\n  \"0\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A dual-type Bird/Normal Glitch Pokémon exclusive to the first generation\"\n    }\n  ],\n  \"1\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It carries a seed on its back right from birth. As its body grows larger, the seed does too.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A strange seed was planted on its back at birth. The plant sprouts and grows with this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A strange seed was planted on its back at birth. The plant sprouts and grows with this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It can go for days without eating a single morsel. In the bulb on its back, it stores energy.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The bulb-like pouch on its back grows larger as it ages. The pouch is filled with numerous seeds.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The seed on its back is filled with nutrients. The seed grows steadily larger as its body grows.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It carries a seed on its back right from birth. As it grows older, the seed also grows larger.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"While it is young, it uses the nutrients that are stored in the seeds on its back in order to grow.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The seed on its back is filled with nutrients. The seed grows steadily larger as its body grows.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"BULBASAUR can be seen napping in bright sunlight. There is a seed on its back. By soaking up the sun's rays, the seed grows progressively larger.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"BULBASAUR can be seen napping in bright sunlight. There is a seed on its back. By soaking up the sun's rays, the seed grows progressively larger.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"BULBASAUR can be seen napping in bright sunlight. There is a seed on its back. By soaking up the sun's rays, the seed grows progressively larger.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"There is a plant seed on its back right from the day this Pokémon is born. The seed slowly grows larger.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A strange seed was planted on its back at birth. The plant sprouts and grows with this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"For some time after its birth, it grows by gaining nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"For some time after its birth, it grows by gaining nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"For some time after its birth, it grows by gaining nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The seed on its back is filled with nutrients. The seed grows steadily larger as its body grows.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It carries a seed on its back right from birth. As it grows older, the seed also grows larger.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"For some time after its birth, it grows by gaining nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"For some time after its birth, it grows by gaining nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"For some time after its birth, it grows by gaining nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"For some time after its birth, it grows by gaining nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A strange seed was planted on its back at birth. The plant sprouts and grows with this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"For some time after its birth, it grows by gaining nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Bulbasaur can be seen napping in bright sunlight. There is a seed on its back. By soaking up the sun's rays, the seed grows progressively larger.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Bulbasaur can be seen napping in bright sunlight. There is a seed on its back. By soaking up the sun's rays, the seed grows progressively larger.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It can go for days without eating a single morsel. In the bulb on its back, it stores energy.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It can go for days without eating a single morsel. In the bulb on its back, it stores energy.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"There is a plant seed on its back right from the day this Pokémon is born. The seed slowly grows larger.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While it is young, it uses the nutrients that are stored in the seed on its back in order to grow.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"For some time after its birth, it grows by taking nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"For some time after its birth, it grows by taking nourishment from the seed on its back.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"For some time after its birth, it uses the nutrients that are packed into the seed on its back in order to grow.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It carries a seed on its back right from birth. As its body grows larger, the seed does too.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A strange seed was planted on its back at birth. The plant sprouts and grows with this Pokémon.\"\n    }\n  ],\n  \"2\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The bulb on its back grows as it absorbs nutrients. The bulb gives off a pleasant aroma when it blooms.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When the bulb on its back grows large, it appears to lose the ability to stand on its hind legs.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When the bulb on its back grows large, it appears to lose the ability to stand on its hind legs.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The bulb on its back grows by drawing energy. It gives off an aroma when it is ready to bloom.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The bud on its back apparently draws energy from its body. The bud is said to open into a large flower when fully grown.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Exposure to sunlight adds to its strength. Sunlight also makes the bud on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If the bud on its back starts to smell sweet, it is evidence that the large flower will soon bloom.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The bulb on its back grows as it absorbs nutrients. The bulb gives off a pleasant aroma when it blooms.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Exposure to sunlight adds to its strength. Sunlight also makes the bud on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"There is a bud on this Pokémon's back. To support its weight, Ivysaur's legs and trunk grow thick and strong. If it starts spending more time lying in the sunlight, it's a sign that the bud will bloom into a large flower soon.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"There is a bud on this Pokémon's back. To support its weight, Ivysaur's legs and trunk grow thick and strong. If it starts spending more time lying in the sunlight, it's a sign that the bud will bloom into a large flower soon.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"To support its bulb, Ivysaur's legs grow sturdy. If it spends more time lying in the sunlight, the bud will soon bloom into a large flower.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"There is a plant bulb on its back. When it absorbs nutrients, the bulb is said to blossom into a large flower.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When the bulb on its back grows large, it appears to lose the ability to stand on its hind legs.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Exposure to sunlight adds to its strength. Sunlight also makes the bud on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If the bud on its back starts to smell sweet, it is evidence that the large flower will soon bloom.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"There is a plant bulb on its back. When it absorbs nutrients, the bulb is said to blossom into a large flower.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"There is a bud on this Pokémon's back. To support its weight, Ivysaur's legs and trunk grow thick and strong. If it starts spending more time lying in the sunlight, it's a sign that the bud will bloom into a large flower soon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"There is a bud on this Pokémon's back. To support its weight, Ivysaur's legs and trunk grow thick and strong. If it starts spending more time lying in the sunlight, it's a sign that the bud will bloom into a large flower soon.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The bud on its back grows by drawing energy. It gives off an aroma when it is ready to bloom.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The bud on its back grows by drawing energy. It gives off an aroma when it is ready to bloom.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When the bulb on its back grows large, it appears to lose the ability to stand on its hind legs.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Exposure to sunlight adds to its strength. Sunlight also makes the bud on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When the bud on its back starts swelling, a sweet aroma wafts to indicate the flower's coming bloom.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The more sunlight Ivysaur bathes in, the more strength wells up within it, allowing the bud on its back to grow larger.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The bulb on its back grows as it absorbs nutrients. The bulb gives off a pleasant aroma when it blooms.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"There is a plant bulb on its back. When it absorbs nutrients, the bulb is said to blossom into a large flower.\"\n    }\n  ],\n  \"3\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"By spreading the broad petals of its flower and catching the sun's rays, it fills its body with power.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The plant blooms when it is absorbing solar energy. It stays on the move to seek sunlight.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The plant blooms when it is absorbing solar energy. It stays on the move to seek sunlight.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The flower on its back catches the sun's rays. The sunlight is then absorbed and used for energy.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Absorbs solar energy as nutrition. When it is catching the sun's rays, it often remains quiet and still.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"By spreading the broad petals of its flower and catching the sun's rays, it fills its body with power.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It is able to convert sunlight into energy. As a result, it is more powerful in the summertime.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"As it warms itself and absorbs the sunlight, its flower petals release a pleasant fragrance.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"By spreading the broad petals of its flower and catching the sun's rays, it fills its body with power.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"There is a large flower on Venusaur's back. The flower is said to take on vivid colors if it gets plenty of nutrition and sunlight. The flower's aroma soothes the emotions of people.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"There is a large flower on Venusaur's back. The flower is said to take on vivid colors if it gets plenty of nutrition and sunlight. The flower's aroma soothes the emotions of people.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Venusaur's flower is said to take on vivid colors if it gets plenty of nutrition and sunlight. The flower's aroma soothes the emotions of people.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A bewitching aroma wafts from its flower. The fragrance becalms those engaged in a battle.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its plant blooms when it is absorbing solar energy. It stays on the move to seek sunlight.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"By spreading the broad petals of its flower and catching the sun's rays, it fills its body with power.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is able to convert sunlight into energy. As a result, it is more powerful in the summertime.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"By spreading the broad petals of its flower and catching the sun's rays, it fills its body with power.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"There is a large flower on Venusaur's back. The flower is said to take on vivid colors if it gets plenty of nutrition and sunlight. The flower's aroma soothes the emotions of people.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"There is a large flower on Venusaur's back. The flower is said to take on vivid colors if it gets plenty of nutrition and sunlight. The flower's aroma soothes the emotions of people.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The flower on its back catches the sun's rays. The sunlight is then absorbed and used for energy.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The flower on its back catches the sun's rays. The sunlight is then absorbed and used for energy.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its plant blooms when it is absorbing solar energy. It stays on the move to seek sunlight.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A bewitching aroma wafts from its flower. The fragrance becalms those engaged in a battle.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"While it basks in the sun, it can convert the light into energy. As a result, it is more powerful in the summertime.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"By spreading the broad petals of its flower and catching the sun's rays, it fills its body with power.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"After a rainy day, the flower on its back smells stronger. The scent attracts other Pokémon.\"\n    }\n  ],\n  \"4\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"If Charmander is healthy, the flame on the tip of its tail will burn vigorously and won't go out even if it gets a bit wet.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Obviously prefers hot places. When it rains, steam is said to spout from the tip of its tail.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Obviously prefers hot places. When it rains, steam is said to spout from the tip of its tail.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The flame at the tip of its tail makes a sound as it burns. You can only hear it in quiet places.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Even the newborns have flaming tails. Unfamiliar with fire, babies are said to accidentally burn themselves.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The flame on its tail shows the strength of its life force. If it is weak, the flame also burns weakly.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The flame on its tail indicates Charmander's life force. If it is healthy, the flame burns brightly.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If it's healthy, the flame on the tip of its tail will burn vigorously, even if it gets a bit wet.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The flame on its tail shows the strength of its life force. If it is weak, the flame also burns weakly.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The flame that burns at the tip of its tail is an indication of its emotions. The flame wavers when Charmander is enjoying itself. If the Pokémon becomes enraged, the flame burns fiercely.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The flame that burns at the tip of its tail is an indication of its emotions. The flame wavers when Charmander is enjoying itself. If the Pokémon becomes enraged, the flame burns fiercely.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The flame that burns at the tip of its tail is an indication of its emotions. The flame wavers when Charmander is happy, and blazes when it is enraged.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"From the time it is born, a flame burns at the tip of its tail. Its life would end if the flame were to go out.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has a preference for hot things. When it rains, steam is said to spout from the tip of its tail.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The fire on the tip of its tail is a measure of its life. If healthy, its tail burns intensely.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The fire on the tip of its tail is a measure of its life. If healthy, its tail burns intensely.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The fire on the tip of its tail is a measure of its life. If healthy, its tail burns intensely.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The flame on its tail shows the strength of its life force. If it is weak, the flame also burns weakly.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The flame on its tail indicates Charmander's life force. If it is healthy, the flame burns brightly.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The fire on the tip of its tail is a measure of its life. If healthy, its tail burns intensely.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The fire on the tip of its tail is a measure of its life. If healthy, its tail burns intensely.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The fire on the tip of its tail is a measure of its life. If healthy, its tail burns intensely.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The fire on the tip of its tail is a measure of its life. If healthy, its tail burns intensely.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The flame on its tail indicates Charmander's life force. If it is healthy, the flame burns brightly.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"From the time it is born, a flame burns at the tip of its tail. Its life would end if the flame were to go out.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The flame that burns at the tip of its tail is an indication of its emotions. The flame wavers when Charmander is enjoying itself. If the Pokémon becomes enraged, the flame burns fiercely.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The flame that burns at the tip of its tail is an indication of its emotions. The flame wavers when Charmander is enjoying itself. If the Pokémon becomes enraged, the flame burns fiercely.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The flame at the tip of its tail makes a sound as it burns. You can only hear it in quiet places.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The flame at the tip of its tail makes a sound as it burns. You can only hear it in quiet places.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has a preference for hot things. When it rains, steam is said to spout from the tip of its tail.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"From the time it is born, a flame burns at the tip of its tail. Its life would end if the flame were to go out.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The fire on the tip of its tail is a measure of its life. If the Pokémon is healthy, its tail burns intensely.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The fire on the tip of its tail is a measure of its life. If the Pokémon is healthy, its tail burns intensely.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The flame on its tail shows the strength of its life-force. If Charmander is weak, the flame also burns weakly.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If Charmander is healthy, the flame on the tip of its tail will burn vigorously and won't go out even if it gets a bit wet.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The flame on its tail indicates Charmander's life force. If it is healthy, the flame burns brightly.\"\n    }\n  ],\n  \"5\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is very hotheaded by nature, so it constantly seeks opponents to battle against. Its aggression will not be quelled if it doesn't win.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When it swings its burning tail, it elevates the temperature to unbearably high levels.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When it swings its burning tail, it elevates the temperature to unbearably high levels.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Tough fights could excite this Pokémon. When excited, it may blow out bluish-white flames.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It appears to be very vicious. It attacks with razor-sharp claws and won't stop until the enemy is defeated.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is very hot-headed by nature, so it constantly seeks opponents. It calms down only when it wins.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It has a barbaric nature. In battle, it whips its fiery tail around and slashes away with sharp claws.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If it becomes agitated during battle, it spouts intense flames, incinerating its surroundings.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is very hot-headed by nature, so it constantly seeks opponents. It calms down only when it wins.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Charmeleon mercilessly destroys its foes using its sharp claws. If it encounters a strong foe, it turns aggressive. In this excited state, the flame at the tip of its tail flares with a bluish white color.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Charmeleon mercilessly destroys its foes using its sharp claws. If it encounters a strong foe, it turns aggressive. In this excited state, the flame at the tip of its tail flares with a bluish white color.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Without pity, its sharp claws destroy foes. If it encounters a strong enemy, it becomes agitated, and the flame on its tail flares with a bluish white color.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lashes about with its tail to knock down its foe. It then tears up the fallen opponent with sharp claws.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When it swings its burning tail, it elevates the air temperature to unbearably high levels.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"In the rocky mountains where CHARMELEON live, their fiery tails shine at night like stars.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"In the rocky mountains where CHARMELEON live, their fiery tails shine at night like stars.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"In the rocky mountains where CHARMELEON live, their fiery tails shine at night like stars.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is very hotheaded by nature, so it constantly seeks opponents. It calms down only when it wins.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has a barbaric nature. In battle, it whips its fiery tail around and slashes away with sharp claws.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"In the rocky mountains where Charmeleon live, their fiery tails shine at night like stars.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"In the rocky mountains where Charmeleon live, their fiery tails shine at night like stars.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"In the rocky mountains where Charmeleon live, their fiery tails shine at night like stars.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"In the rocky mountains where Charmeleon live, their fiery tails shine at night like stars.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lashes about with its tail to knock down its foe. It then tears up the fallen opponent with sharp claws.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it swings its burning tail, it elevates the air temperature to unbearably high levels.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Charmeleon mercilessly destroys its foes using its sharp claws. If it encounters a strong foe, it turns aggressive. In this excited state, the flame at the tip of its tail flares with a bluish white color.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Charmeleon mercilessly destroys its foes using its sharp claws. If it encounters a strong foe, it turns aggressive. In this excited state, the flame at the tip of its tail flares with a bluish white color.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Tough fights could excite this Pokémon. When excited, it may breathe out bluish-white flames.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Tough fights could excite this Pokémon. When excited, it may breathe out bluish-white flames.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has a barbaric nature. In battle, it whips its fiery tail around and slashes away with sharp claws.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If it becomes agitated during battle, it spouts intense flames, incinerating its surroundings.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"In the rocky mountains where Charmeleon live, their fiery tails shine at night like stars.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"In the rocky mountains where Charmeleon live, their fiery tails shine at night like stars.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it swings its burning tail, the temperature around it rises higher and higher, tormenting its opponents.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is very hotheaded by nature, so it constantly seeks opponents to battle against. Its aggression will not be quelled if it doesn't win.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It lashes about with its tail to knock down its foe. It then tears up the fallen opponent with sharp claws.\"\n    }\n  ],\n  \"6\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"When this Pokémon expels a blast of superhot fire, the red flame at the tip of its tail burns more intensely.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Spits fire that is hot enough to melt boulders. Known to cause forest fires unintentionally.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Spits fire that is hot enough to melt boulders. Known to cause forest fires unintentionally.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"When expelling a blast of super hot fire, the red flame at the tip of its tail burns more intensely.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its fiery breath reaches incredible temperatures. It can quickly melt glaciers weighing 10,000 tons.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If Charizard becomes furious, the flame at the tip of its tail flares up in a whitish-blue color.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Breathing intense, hot flames, it can melt almost anything. Its breath inflicts terrible pain on enemies.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It uses its wings to fly high. The temperature of its fire increases as it gains experience in battle.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If Charizard becomes furious, the flame at the tip of its tail flares up in a whitish-blue color.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Charizard flies around the sky in search of powerful opponents. It breathes fire of such great heat that it melts anything. However, it never turns its fiery breath on any opponent weaker than itself.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Charizard flies around the sky in search of powerful opponents. It breathes fire of such great heat that it melts anything. However, it never turns its fiery breath on any opponent weaker than itself.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Charizard flies about in search of strong opponents. It breathes intense flames that can melt any material. However, it will never torch a weaker foe.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its wings can carry this Pokémon close to an altitude of 4,600 feet. It blows out fire at very high temperatures.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It spits fire that is hot enough to melt boulders. It may cause forest fires by blowing flames.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said that CHARIZARD's fire burns hotter if it has experienced harsh battles.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said that CHARIZARD's fire burns hotter if it has experienced harsh battles.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said that CHARIZARD's fire burns hotter if it has experienced harsh battles.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If Charizard becomes furious, the flame at the tip of its tail flares up in a light blue shade.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Breathing intense, hot flames, it can melt almost anything. Its breath inflicts terrible pain on enemies.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said that Charizard's fire burns hotter if it has experienced harsh battles.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said that Charizard's fire burns hotter if it has experienced harsh battles.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said that Charizard's fire burns hotter if it has experienced harsh battles.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said that Charizard's fire burns hotter if it has experienced harsh battles.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When expelling a blast of superhot fire, the red flame at the tip of its tail burns more intensely.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its wings can carry this Pokémon close to an altitude of 4,600 feet. It blows out fire at very high temperatures.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Charizard flies around the sky in search of powerful opponents. It breathes fire of such great heat that it melts anything. However, it never turns its fiery breath on any opponent weaker than itself.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Charizard flies around the sky in search of powerful opponents. It breathes fire of such great heat that it melts anything. However, it never turns its fiery breath on any opponent weaker than itself.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When this Pokémon expels a blast of superhot fire, the red flame at the tip of its tail burns more intensely.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When this Pokémon expels a blast of superhot fire, the red flame at the tip of its tail burns more intensely.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It spits fire that is hot enough to melt boulders. It may cause forest fires by blowing flames.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its wings can carry this Pokémon close to an altitude of 4,600 feet. It blows out fire at very high temperatures.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said that Charizard's fire burns hotter if it has experienced harsh battles.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said that Charizard's fire burns hotter if it has experienced harsh battles.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If Charizard becomes truly angered, the flame at the tip of its tail burns in a light blue shade.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It uses its wings to fly sky-high. The more experience it gains in battle, the greater the temperature at which its flames burn.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its wings can carry this Pokémon close to an altitude of 4,600 feet. It blows out fire at very high temperatures.\"\n    }\n  ],\n  \"7\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Shoots water at prey while in the water. Withdraws into its shell when in danger.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"After birth, its back swells and hardens into a shell. Powerfully sprays foam from its mouth.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"After birth, its back swells and hardens into a shell. Powerfully sprays foam from its mouth.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Shoots water at prey while in the water. Withdraws into its shell when in danger.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It takes time for the shell to form and harden after hatching. It sprays foam powerfully from its mouth.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The shell is soft when it is born. It soon becomes so resilient, prodding fingers will bounce off it.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The shell, which hardens soon after it is born, is resilient. If you poke it, it will bounce back out.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it feels threatened, it draws its legs inside its shell and sprays water from its mouth.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The shell is soft when it is born. It soon becomes so resilient, prodding fingers will bounce off it.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Squirtle's shell is not merely used for protection. The shell's rounded shape and the grooves on its surface help minimize resistance in water, enabling this Pokémon to swim at high speeds.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Squirtle's shell is not merely used for protection. The shell's rounded shape and the grooves on its surface help minimize resistance in water, enabling this Pokémon to swim at high speeds.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its shell is not just for protection. Its rounded shape and the grooves on its surface minimize resistance in water, enabling Squirtle to swim at high speeds.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When it retracts its long neck into its shell, it squirts out water with vigorous force.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"After birth, its back swells and hardens into a shell. It powerfully sprays foam from its mouth.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It shelters itself in its shell, then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It shelters itself in its shell, then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It shelters itself in its shell, then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The shell is soft when it is born. It soon becomes so resilient, prodding fingers will bounce off it.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The shell, which hardens soon after it is born, is resilient. If you poke it, it will bounce back out.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It shelters itself in its shell, then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It shelters itself in its shell, then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It shelters itself in its shell then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It shelters itself in its shell then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It shelters itself in its shell, then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Shoots water at prey while in the water. Withdraws into its shell when in danger.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Squirtle's shell is not merely used for protection. The shell's rounded shape and the grooves on its surface help minimize resistance in water, enabling this Pokémon to swim at high speeds.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Squirtle's shell is not merely used for protection. The shell's rounded shape and the grooves on its surface help minimize resistance in water, enabling this Pokémon to swim at high speeds.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Shoots water at prey while in the water. Withdraws into its shell when in danger.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Shoots water at prey while in the water. Withdraws into its shell when in danger.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it retracts its long neck into its shell, it squirts out water with vigorous force.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it feels threatened, it draws its limbs inside its shell and sprays water from its mouth.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It hides in its shell to protect itself, then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It hides in its shell to protect itself, then strikes back with spouts of water at every opportunity.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"After birth, its back swells and hardens into a shell. It sprays a potent foam from its mouth.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its shell is soft immediately after it is born. In no time at all, the shell becomes so resilient that a prodding finger will bounce right off it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It hides in its shell to protect itself, then strikes back with spouts of water at every opportunity.\"\n    }\n  ],\n  \"8\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It often hides in water to stalk unwary prey. While swimming quickly, it moves its ears to maintain balance.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Often hides in water to stalk unwary prey. For swimming fast, it moves its ears to maintain balance.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Often hides in water to stalk unwary prey. For swimming fast, it moves its ears to maintain balance.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"When tapped, this Pokémon will pull in its head, but its tail will still stick out a little bit.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The tail is covered with a rich fur. It stores air in the fur before taking extended dives underwater.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is recognized as a symbol of longevity. If its shell has algae on it, that Wartortle is very old.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It cleverly controls its furry ears and tail to maintain its balance while swimming.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its long, furry tail is a symbol of longevity, making it quite popular among older people.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is recognized as a symbol of longevity. If its shell has algae on it, that Wartortle is very old.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Its tail is large and covered with a rich, thick fur. The tail becomes increasingly deeper in color as Wartortle ages. The scratches on its shell are evidence of this Pokémon's toughness as a battler.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Its tail is large and covered with a rich, thick fur. The tail becomes increasingly deeper in color as Wartortle ages. The scratches on its shell are evidence of this Pokémon's toughness as a battler.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its large tail is covered with rich, thick fur that deepens in color with age. The scratches on its shell are evidence of this Pokémon's toughness in battle.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Pokémon is very popular as a pet. Its fur-covered tail is a symbol of its longevity.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It often hides in water to stalk unwary prey. For fast swimming, it moves its ears to maintain balance.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is a well-established symbol of longevity. If its shell has algae on it, that Wartortle is very old.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It cleverly controls its furry ears and tail to maintain its balance while swimming.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When tapped, this Pokémon will pull in its head, but its tail will still stick out a little bit.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its tail is large and covered with a rich, thick fur. The tail becomes increasingly deeper in color as Wartortle ages. The scratches on its shell are evidence of this Pokémon's toughness as a battler.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its tail is large and covered with a rich, thick fur. The tail becomes increasingly deeper in color as Wartortle ages. The scratches on its shell are evidence of this Pokémon's toughness as a battler.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When tapped on its head, this Pokémon will pull it in, but its tail will still stick out a little bit.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When tapped on its head, this Pokémon will pull it in, but its tail will still stick out a little bit.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is recognized as a symbol of longevity. If its shell has algae on it, that Wartortle is very old.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It cleverly controls its furry ears and tail to maintain its balance while swimming.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said to live 10,000 years. Its furry tail is popular as a symbol of longevity.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Wartortle's long, furry tail is a symbol of longevity, so this Pokémon is quite popular among older people.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It often hides in water to stalk unwary prey. While swimming quickly, it moves its ears to maintain balance.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When tapped on its head, this Pokémon will pull it in, but its tail will still stick out a little bit.\"\n    }\n  ],\n  \"9\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has jet nozzles on its shell. This impressive Pokémon uses these jets to charge toward foes with all the force of a rocket.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A brutal Pokémon with pressurized water jets on its shell. They are used for high speed tackles.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A brutal Pokémon with pressurized water jets on its shell. They are used for high speed tackles.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Once it takes aim at its enemy, it blasts out water with even more force than a fire hose.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It has spouts extending from its shell at the top. They spray water like cannons, hard enough to pierce concrete walls.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It deliberately makes itself heavy so it can withstand the recoil of the water jets it fires.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The rocket cannons on its shell fire jets of water capable of punching holes through thick steel.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It firmly plants its feet on the ground before shooting water from the jets on its back.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It deliberately makes itself heavy so it can withstand the recoil of the water jets it fires.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Blastoise has water spouts that protrude from its shell. The water spouts are very accurate. They can shoot bullets of water with enough accuracy to strike empty cans from a distance of over 160 feet.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Blastoise has water spouts that protrude from its shell. The water spouts are very accurate. They can shoot bullets of water with enough accuracy to strike empty cans from a distance of over 160 feet.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The waterspouts that protrude from its shell are highly accurate. Their bullets of water can precisely nail tin cans from a distance of over 160 feet.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It crushes its foe under its heavy body to cause fainting. In a pinch, it will withdraw inside its shell.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The pressurized water jets on this brutal Pokémon's shell are used for high- speed tackles.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The jets of water it spouts from the rocket cannons on its shell can punch through thick steel.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The jets of water it spouts from the rocket cannons on its shell can punch through thick steel.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The jets of water it spouts from the rocket cannons on its shell can punch through thick steel.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It deliberately makes itself heavy so it can withstand the recoil of the water jets it fires.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The rocket cannons on its shell fire jets of water capable of punching holes through thick steel.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The jets of water it spouts from the rocket cannons on its shell can punch through thick steel.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The jets of water it spouts from the rocket cannons on its shell can punch through thick steel.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The jets of water it spouts from the rocket cannons on its shell can punch through thick steel.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The jets of water it spouts from the rocket cannons on its shell can punch through thick steel.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It crushes its foe under its heavy body to cause fainting. In a pinch, it will withdraw inside its shell.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The pressurized water jets on this brutal Pokémon's shell are used for high-speed tackles.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Blastoise has water spouts that protrude from its shell. The water spouts are very accurate. They can shoot bullets of water with enough accuracy to strike empty cans from a distance of over 160 feet.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Blastoise has water spouts that protrude from its shell. The water spouts are very accurate. They can shoot bullets of water with enough accuracy to strike empty cans from a distance of over 160 feet.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Once it takes aim at its enemy, it blasts out water with even more force than a fire hose.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Once it takes aim at its enemy, it blasts out water with even more force than a fire hose.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It crushes its foe under its heavy body to cause fainting. In a pinch, it will withdraw inside its shell.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The rocket cannons on its shell fire jets of water capable of punching holes through thick steel.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The jets of water it spouts from the rocket cannons on its shell can punch through thick steel.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The jets of water it spouts from the rocket cannons on its shell can punch through thick steel.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It deliberately increases its body weight so it can withstand the recoil of the water jets it fires.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has jet nozzles on its shell. This impressive Pokémon uses these jets to charge toward foes with all the force of a rocket.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It crushes its foe under its heavy body to cause fainting. In a pinch, it will withdraw inside its shell.\"\n    }\n  ],\n  \"10\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its short feet are tipped with suction pads that enable it to tirelessly climb slopes and walls.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its short feet are tipped with suction pads that enable it to tirelessly climb slopes and walls.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"If you touch the feeler on top of its head, it will release a horrible stink to protect itself.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It has large, eye-like patterns on its head as protection. They are used to frighten off enemies.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"For protection, it releases a horrible stench from the antenna on its head to drive away enemies.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its feet have suction cups designed to stick to any surface. It tenaciously climbs trees to forage.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It crawls into foliage where it camouflages itself among leaves that are the same color as its body.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"For protection, it releases a horrible stench from the antenna on its head to drive away enemies.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Caterpie has a voracious appetite. It can devour leaves bigger than its body right before your eyes. From its antenna, this Pokémon releases a terrifically strong odor.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Caterpie has a voracious appetite. It can devour leaves bigger than its body right before your eyes. From its antenna, this Pokémon releases a terrifically strong odor.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its voracious appetite compels it to devour leaves bigger than itself without hesitation. It releases a terribly strong odor from its antennae.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is covered with a green skin. When it grows, it sheds the skin, covers itself with silk, and becomes a cocoon.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its short feet are tipped with suction pads that enable it to tirelessly climb slopes and walls.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It releases a stench from its red antenna to repel enemies. It grows by molting repeatedly.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It releases a stench from its red antenna to repel enemies. It grows by molting repeatedly.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It releases a stench from its red antenna to repel enemies. It grows by molting repeatedly.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"For protection, it releases a horrible stench from the antennae on its head to drive away enemies.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its feet have suction cups designed to stick to any surface. It tenaciously climbs trees to forage.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It releases a stench from its red antenna to repel enemies. It grows by molting repeatedly.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It releases a stench from its red antenna to repel enemies. It grows by molting repeatedly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It releases a stench from its red antenna to repel enemies. It grows by molting repeatedly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It releases a stench from its red antenna to repel enemies. It grows by molting repeatedly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"For protection, it releases a horrible stench from the antennae on its head to drive away enemies.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its feet have suction cups designed to stick to any surface. It tenaciously climbs trees to forage.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Caterpie has a voracious appetite. It can devour leaves bigger than its body right before your eyes. From its antenna, this Pokémon releases a terrifically strong odor.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Caterpie has a voracious appetite. It can devour leaves bigger than its body right before your eyes. From its antenna, this Pokémon releases a terrifically strong odor.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When attacked by bird Pokémon, it resists by releasing a terrifically strong odor from its antennae, but it often becomes their prey.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It's easy to catch, and it grows quickly, making it one of the top recommendations for novice Pokémon Trainers.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Perhaps because it would like to grow up quickly, it has a voracious appetite, eating a hundred leaves a day.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its body is soft and weak. In nature, its perpetual fate is to be seen by others as food.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"If you touch the feeler on top of its head, it will release a horrible stink to protect itself.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"If you touch the feeler on top of its head, it will release a horrible stink to protect itself.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"For protection, it releases a horrible stench from the antenna on its head to drive away enemies.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its short feet are tipped with suction pads that enable it to tirelessly climb slopes and walls.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It releases a stench from its red antennae to repel enemies. It grows by molting repeatedly.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It releases a stench from its red antennae to repel enemies. It grows by molting repeatedly.\"\n    }\n  ],\n  \"11\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"This Pokémon is vulnerable to attack while its shell is soft, exposing its weak and tender body.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"This Pokémon is vulnerable to attack while its shell is soft, exposing its weak and tender body.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Hardens its shell to protect itself. However, a large impact may cause it to pop out of its shell.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"When it hardens, only the external shell is transformed. The inside remains tender.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Inside the shell, it is soft and weak as it prepares to evolve. It stays motionless in the shell.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It prepares for evolution by hardening its shell as much as possible to protect its soft body.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This is its pre-evolved form. At this stage, it can only harden, so it remains motionless to avoid attack.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Inside the shell, it is soft and weak as it prepares to evolve. It stays motionless in the shell.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The shell covering this Pokémon's body is as hard as an iron slab. Metapod does not move very much. It stays still because it is preparing its soft innards for evolution inside the hard shell.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The shell covering this Pokémon's body is as hard as an iron slab. Metapod does not move very much. It stays still because it is preparing its soft innards for evolution inside the hard shell.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its shell is as hard as an iron slab. A Metapod does not move very much because it is preparing its soft innards for evolution inside the shell.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Even though it is encased in a sturdy shell, the body inside is tender. It can't withstand a harsh attack.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"This Pokémon is vulnerable to attack while its shell is soft, exposing its weak and tender body.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. It quietly endures hardships while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. It quietly endures hardships while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. It quietly endures hardships while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Inside the shell, it is soft and weak as it prepares to evolve. It stays motionless in the shell.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It prepares for evolution by hardening its shell as much as possible to protect its soft body.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. It quietly endures hardships while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. It quietly endures hardships while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. It quietly endures hardships while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. It quietly endures hardships while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. It quietly endures hardships while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This Pokémon is vulnerable to attack while its shell is soft, exposing its weak and tender body.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The shell covering this Pokémon's body is as hard as an iron slab. Metapod does not move very much. It stays still because it is preparing its soft innards for evolution inside the hard shell.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The shell covering this Pokémon's body is as hard as an iron slab. Metapod does not move very much. It stays still because it is preparing its soft innards for evolution inside the hard shell.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its shell is filled with its soft innards. It doesn't move much because of the risk it might carelessly spill its innards out.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its shell is hard, but it's still just a bug shell. It's been known to break, so intense battles with it should be avoided.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its shell is filled with a thick liquid. All of the cells throughout its body are being rebuilt in preparation for evolution.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its hard shell doesn't crack a bit even if Pikipek pecks at it, but it will tip over, spilling out its insides.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Hardens its shell to protect itself. However, a large impact may cause it to pop out of its shell.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Hardens its shell to protect itself. However, a large impact may cause it to pop out of its shell.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is waiting for the moment to evolve. At this stage, it can only harden, so it remains motionless to avoid attack.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Even though it is encased in a sturdy shell, the body inside is tender. It can't withstand a harsh attack.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. The Pokémon quietly endures hardships while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A steel-hard shell protects its tender body. The Pokémon quietly endures hardships while awaiting evolution.\"\n    }\n  ],\n  \"12\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"In battle, it flaps its wings at high speed to release highly toxic dust into the air.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"In battle, it flaps its wings at high speed to release highly toxic dust into the air.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its wings, covered with poisonous powders, repel water. This allows it to fly in the rain.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its wings are covered with poisonous dust. If you see one flapping its wings, be careful not to inhale any of the dust.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It collects honey every day. It rubs honey onto the hairs on its legs to carry it back to its nest.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Water-repellent powder on its wings enables it to collect honey, even in the heaviest of rains.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It flits from flower to flower, collecting honey. It can even identify distant flowers in bloom.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It collects honey every day. It rubs honey onto the hairs on its legs to carry it back to its nest.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Butterfree has a superior ability to search for delicious honey from flowers. It can even search out, extract, and carry honey from flowers that are blooming over six miles from its nest.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Butterfree has a superior ability to search for delicious honey from flowers. It can even search out, extract, and carry honey from flowers that are blooming over six miles from its nest.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It has a superior ability to search for delicious honey from flowers. It can seek, extract, and carry honey from flowers blooming over six miles away.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The wings are protected by rain-repellent dust. As a result, this Pokémon can fly about even in rain.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"In battle, it flaps its wings at great speed to release highly toxic dust into the air.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves the honey of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It loves the honey of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It loves the honey of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It collects honey every day. It rubs honey onto the hairs on its legs to carry it back to its nest.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Water-repellent powder on its wings enables it to collect honey, even in the heaviest of rains.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It loves the honey of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It loves the honey of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It loves the honey of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It loves the honey of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It loves the honey of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The wings are protected by rain-repellent dust. As a result, this Pokémon can fly about even in rain.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Butterfree has a superior ability to search for delicious honey from flowers. It can even search out, extract, and carry honey from flowers that are blooming over six miles from its nest.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Butterfree has a superior ability to search for delicious honey from flowers. It can even search out, extract, and carry honey from flowers that are blooming over six miles from its nest.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Close examination of its large eyes reveals that each eye is composed of a myriad of tiny eyes.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When attacked by other Pokémon, it defends itself by scattering its poisonous scales and fluttering its wings.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its wings are covered in toxic scales. If it finds bird Pokémon going after Caterpie, Butterfree sprinkles its scales on them to drive them off.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Nectar from pretty flowers is its favorite food. In fields of flowers, it has heated battles with Cutiefly for territory.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its wings, covered with poisonous powder, repel water. This allows it to fly in the rain.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its wings, covered with poisonous powder, repel water. This allows it to fly in the rain.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In battle, it flaps its wings at great speed to release highly toxic dust into the air.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It collects honey every day. It rubs honey onto the hairs on its legs to carry it back to its nest.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It loves the nectar of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It loves the nectar of flowers and can locate flower patches that have even tiny amounts of pollen.\"\n    }\n  ],\n  \"13\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Often found in forests, eating leaves. It has a sharp venomous stinger on its head.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Often found in forests, eating leaves. It has a sharp venomous stinger on its head.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Beware of the sharp stinger on its head. It hides in grass and bushes where it eats leaves.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A common sight in forests and grassy areas. Has a poison stinger on its head that may be used if you step on it.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its poison stinger is very powerful. Its bright-colored body is intended to warn off its enemies.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It attacks using a two-inch poison barb on its head. It can usually be found under the leaves it eats.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The barb on top of its head secretes a strong poison. It uses this toxic barb to protect itself.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its poison stinger is very powerful. Its bright-colored body is intended to warn off its enemies.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Weedle has an extremely acute sense of smell. It is capable of distinguishing its favorite kinds of leaves from those it dislikes just by sniffing with its big red proboscis (nose).\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Weedle has an extremely acute sense of smell. It is capable of distinguishing its favorite kinds of leaves from those it dislikes just by sniffing with its big red proboscis (nose).\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Weedle has an extremely acute sense of smell. It distinguishes its favorite kinds of leaves from those it dislikes by sniffing with its big red proboscis (nose).\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Often found in forests and grasslands. It has a sharp, toxic barb of around two inches on top of its head.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Often found in forests, eating leaves. It has a sharp stinger on its head that injects poison.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It eats its weight in leaves every day. It fends off attackers with the needle on its head.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It eats its weight in leaves every day. It fends off attackers with the needle on its head.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It eats its weight in leaves every day. It fends off attackers with the needle on its head.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its poison stinger is very powerful. Its bright-colored body is intended to warn off its enemies.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It attacks using a two-inch poison barb on its head. It can usually be found under the leaves it eats.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It eats its weight in leaves every day. It fends off attackers with the needle on its head.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It eats its weight in leaves every day. It fends off attackers with the needle on its head.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It eats its weight in leaves every day. It fends off attackers with the needle on its head.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It eats its weight in leaves every day. It fends off attackers with the needle on its head.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Often found in forests and grasslands. It has a sharp, toxic barb of around two inches on top of its head.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its poison stinger is very powerful. Its bright-colored body is intended to warn off its enemies.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Weedle has an extremely acute sense of smell. It is capable of distinguishing its favorite kinds of leaves from those it dislikes just by sniffing with its big red proboscis (nose).\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Weedle has an extremely acute sense of smell. It is capable of distinguishing its favorite kinds of leaves from those it dislikes just by sniffing with its big red proboscis (nose).\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Beware of the sharp stinger on its head. It hides in grass and bushes where it eats leaves.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Beware of the sharp stinger on its head. It hides in grass and bushes where it eats leaves.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It eats its weight in leaves every day. It fends off attackers with the needle on its head.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It eats its weight in leaves every day. It fends off attackers with the needle on its head.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Often found in forests and grasslands. It has a sharp, toxic barb of around two inches on top of its head.\"\n    }\n  ],\n  \"14\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Almost incapable of moving, this Pokémon can only harden its shell to protect itself from predators.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Almost incapable of moving, this Pokémon can only harden its shell to protect itself from predators.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Able to move only slightly. When endangered, it may stick out its stinger and poison its enemy.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Because it is virtually motionless, it may appear dead. Inside, however, a new body is being made.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Although it is a cocoon, it can move a little. It can extend its poison barb if it is attacked.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"From this form, it will grow into an adult. As its body becomes softer, the external shell hardens.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Nearly incapable of movement, it leans against stout trees while waiting for its evolution.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Although it is a cocoon, it can move a little. It can extend its poison barb if it is attacked.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Kakuna remains virtually immobile as it clings to a tree. However, on the inside, it is extremely busy as it prepares for its coming evolution. This is evident from how hot the shell becomes to the touch.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Kakuna remains virtually immobile as it clings to a tree. However, on the inside, it is extremely busy as it prepares for its coming evolution. This is evident from how hot the shell becomes to the touch.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It remains virtually immobile while it clings to a tree. However, on the inside, it busily prepares for evolution. This is evident from how hot its shell becomes.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Pokémon is in a temporary stage while making its body. It is almost completely unable to move on its own.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Almost incapable of moving, this Pokémon can only harden its shell to protect itself when it is in danger.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Although it is a cocoon, it can move a little. It can extend its poison barb if it is attacked.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"From this form, it will grow into an adult. As its body becomes softer, the external shell hardens.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Almost incapable of moving, this Pokémon can only harden its shell to protect itself when it is in danger.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Kakuna remains virtually immobile as it clings to a tree. However, on the inside, it is extremely busy as it prepares for its coming evolution. This is evident from how hot the shell becomes to the touch.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Kakuna remains virtually immobile as it clings to a tree. However, on the inside, it is extremely busy as it prepares for its coming evolution. This is evident from how hot the shell becomes to the touch.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Able to move only slightly. When endangered, it may stick out its stinger and poison its enemy.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Able to move only slightly. When endangered, it may stick out its stinger and poison its enemy.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"While awaiting evolution, it hides from predators under leaves and in nooks of branches.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Almost incapable of moving, this Pokémon can only harden its shell to protect itself when it is in danger.\"\n    }\n  ],\n  \"15\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Flies at high speed and attacks using its large venomous stingers on its forelegs and tail.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Flies at high speed and attacks using its large venomous stingers on its forelegs and tail.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It has 3 poisonous stingers on its forelegs and its tail. They are used to jab its enemy repeatedly.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Flies at high speeds and attacks with three stingers: one on its rear and one on each of its two forelegs. May appear in swarms.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It can take down any opponent with its powerful poison stingers. It sometimes attacks in swarms.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It has three poison barbs. The barb on its tail secretes the most powerful poison.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It uses sharp, poisonous stings to defeat prey, then takes the victim back to its nest for food.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It can take down any opponent with its powerful poison stingers. It sometimes attacks in swarms.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Beedrill is extremely territorial. No one should ever approach its nest - this is for their own safety. If angered, they will attack in a furious swarm.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Beedrill is extremely territorial. No one should ever approach its nest - this is for their own safety. If angered, they will attack in a furious swarm.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Beedrill is extremely territorial. For safety reasons, no one should ever approach its nest. If angered, they will attack in a swarm.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"May appear in a swarm. Flies at violent speeds, all the while stabbing with the toxic stinger on its rear.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It flies at high speed and attacks using the large venomous stingers on its forelegs and tail.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its best attack involves flying around at high speed, striking with poison needles, then flying off.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its best attack involves flying around at high speed, striking with poison needles, then flying off.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its best attack involves flying around at high speed, striking with poison needles, then flying off.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can take down any opponent with its powerful poison stingers. It sometimes attacks in swarms.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has three poison barbs. The barb on its tail secretes the most powerful poison.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its best attack involves flying around at high speed, striking with poison needles, then flying off.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its best attack involves flying around at high speed, striking with poison needles, then flying off.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its best attack involves flying around at high speed, striking with poison needles, then flying off.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its best attack involves flying around at high speed, striking with poison needles, then flying off.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has three poisonous stingers on its forelegs and its tail. They are used to jab its enemy repeatedly.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"May appear in a swarm. Flies at violent speeds, all the while stabbing with the toxic stinger on its rear.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Beedrill is extremely territorial. No one should ever approach its nest—this is for their own safety. If angered, they will attack in a furious swarm.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Beedrill is extremely territorial. No one should ever approach its nest—this is for their own safety. If angered, they will attack in a furious swarm.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It has three poisonous stingers on its forelegs and its tail. They are used to jab its enemy repeatedly.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It has three poisonous stingers on its forelegs and its tail. They are used to jab its enemy repeatedly.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its best attack involves flying around at high speed, striking with poison needles, then flying off.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its best attack involves flying around at high speed, striking with poison needles, then flying off.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They may appear in a swarm. Beedrill flies at violent speeds, all the while stabbing with the toxic stinger on its rear.\"\n    }\n  ],\n  \"16\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Very docile. If attacked, it will often kick up sand to protect itself rather than fight back.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A common sight in forests and woods. It flaps its wings at ground level to kick up blinding sand.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A common sight in forests and woods. It flaps its wings at ground level to kick up blinding sand.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Very docile. If attacked, it will often kick up sand to protect itself rather than fight back.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"If at all possible, it will try to avoid battles. Small or weak enemies are blown away by Whirlwind.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It usually hides in tall grass. Because it dislikes fighting, it protects itself by kicking up sand.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Common in grassy areas and forests, it is very docile and will chase off enemies by flapping up sand.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It rapidly flaps its wings in the grass, stirring up a dust cloud that drives insect prey out into the open.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It usually hides in tall grass. Because it dislikes fighting, it protects itself by kicking up sand.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Pidgey has an extremely sharp sense of direction. It is capable of unerringly returning home to its nest, however far it may be removed from its familiar surroundings.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Pidgey has an extremely sharp sense of direction. It is capable of unerringly returning home to its nest, however far it may be removed from its familiar surroundings.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It has an extremely sharp sense of direction. It can unerringly return home to its nest, however far it may be removed from its familiar surroundings.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Does not like to fight. It hides in tall grass and so on, foraging for food such as small bugs.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A common sight in forests and woods. It flaps its wings at ground level to kick up blinding sand.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It usually hides in tall grass. Because it dislikes fighting, it protects itself by kicking up sand.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Common in grassy areas and forests, it is very docile and will chase off enemies by flapping up sand.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A common sight in forests and woods. It flaps its wings at ground level to kick up blinding sand.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Pidgey has an extremely sharp sense of direction. It is capable of unerringly returning home to its nest, however far it may be removed from its familiar surroundings.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Pidgey has an extremely sharp sense of direction. It is capable of unerringly returning home to its nest, however far it may be removed from its familiar surroundings.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Very docile. If attacked, it will often kick up sand to protect itself rather than fight back.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Very docile. If attacked, it will often kick up sand to protect itself rather than fight back.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It is docile and prefers to avoid conflict. If disturbed, however, it can ferociously strike back.\"\n    }\n  ],\n  \"17\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This Pokémon is full of vitality. It constantly flies around its large territory in search of prey.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Very protective of its sprawling territorial area, this Pokémon will fiercely peck at any intruder.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Very protective of its sprawling territorial area, this Pokémon will fiercely peck at any intruder.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"This Pokémon is full of vitality. It constantly flies around its large territory in search of prey.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It builds its nest in the center of its large territory. It uses its powerfully-developed talons to swiftly snatch prey.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has outstanding vision. However high it flies, it is able to distinguish the movements of its prey.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It immobilizes its prey using well-developed claws, then carries the prey more than 60 miles to its nest.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It slowly flies in a circular pattern, all the while keeping a sharp lookout for prey.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has outstanding vision. However high it flies, it is able to distinguish the movements of its prey.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Pidgeotto claims a large area as its own territory. This Pokémon flies around, patrolling its living space. If its territory is violated, it shows no mercy in thoroughly punishing the foe with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Pidgeotto claims a large area as its own territory. This Pokémon flies around, patrolling its living space. If its territory is violated, it shows no mercy in thoroughly punishing the foe with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon flies around, patrolling its large territory. If its living space is violated, it shows no mercy in thoroughly punishing the foe with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The claws on its feet are well developed. It can carry prey such as an Exeggcute to its nest over 60 miles away.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Very protective of its sprawling territorial area, this Pokémon will fiercely peck at any intruder.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It flies over its wide territory in search of prey, downing it with its highly developed claws.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It flies over its wide territory in search of prey, downing it with its highly developed claws.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It flies over its wide territory in search of prey, downing it with its highly developed claws.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has outstanding vision. However high it flies, it is able to distinguish the movements of its prey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It renders its prey immobile using well-developed claws, then carries the prey more than 60 miles to its nest.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It flies over its wide territory in search of prey, downing it with its highly developed claws.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It flies over its wide territory in search of prey, downing it with its highly developed claws.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It flies over its wide territory in search of prey, downing it with its highly developed claws.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It flies over its wide territory in search of prey, downing it with its highly developed claws.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The claws on its feet are well developed. It can carry prey such as an Exeggcute to its nest over 60 miles away.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Very protective of its sprawling territorial area, this Pokémon will fiercely peck at any intruder.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Pidgeotto claims a large area as its own territory. This Pokémon flies around, patrolling its living space. If its territory is violated, it shows no mercy in thoroughly punishing the foe with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Pidgeotto claims a large area as its own territory. This Pokémon flies around, patrolling its living space. If its territory is violated, it shows no mercy in thoroughly punishing the foe with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"This Pokémon is full of vitality. It constantly flies around its large territory in search of prey.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"This Pokémon is full of vitality. It constantly flies around its large territory in search of prey.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It flies over its wide territory in search of prey, downing it with its highly developed claws.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It flies over its wide territory in search of prey, downing it with its highly developed claws.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon has a sprawling territory and will fiercely peck at any intruder.\"\n    }\n  ],\n  \"18\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It spreads its gorgeous wings widely to intimidate enemies. It races through the skies at Mach-2 speed.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When hunting, it skims the surface of water at high speed to pick off unwary prey such as Magikarp.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When hunting, it skims the surface of water at high speed to pick off unwary prey such as Magikarp.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"This Pokémon flies at Mach 2 speed, seeking prey. Its large talons are feared as wicked weapons.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Capable of flying incredibly quickly. In full flight, by the time its flapping is heard, it is long gone.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its well-developed chest muscles make it strong enough to whip up a gusty windstorm with just a few flaps.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It spreads its beautiful wings wide to frighten its enemies. It can fly at Mach 2 speed.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its outstanding vision allows it to spot splashing Magikarp, even while flying at 3300 feet.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its well-developed chest muscles make it strong enough to whip up a gusty windstorm with just a few flaps.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"This Pokémon has a dazzling plumage of beautifully glossy feathers. Many Trainers are captivated by the striking beauty of the feathers on its head, compelling them to choose Pidgeot as their Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon has a dazzling plumage of beautifully glossy feathers. Many Trainers are captivated by the striking beauty of the feathers on its head, compelling them to choose Pidgeot as their Pokémon.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon has gorgeous, glossy feathers. Many Trainers are so captivated by the beautiful feathers on its head that they choose Pidgeot as their Pokémon.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It spreads its gorgeous wings widely to intimidate enemies. It races through the skies at Mach-2 speed.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When hunting, it skims the surface of water at high speed to pick off unwary prey such as Magikarp.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"By flapping its wings with all its might, PIDGEOT can make a gust of wind capable of bending tall trees.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"By flapping its wings with all its might, PIDGEOT can make a gust of wind capable of bending tall trees.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"By flapping its wings with all its might, PIDGEOT can make a gust of wind capable of bending tall trees.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its well-developed chest muscles make it strong enough to whip up a gusty windstorm with just a few flaps.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It spreads its beautiful wings wide to frighten its enemies. It can fly at Mach 2 speed.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"By flapping its wings with all its might, Pidgeot can make a gust of wind capable of bending tall trees.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"By flapping its wings with all its might, Pidgeot can make a gust of wind capable of bending tall trees.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By flapping its wings with all its might, Pidgeot can make a gust of wind capable of bending tall trees.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By flapping its wings with all its might, Pidgeot can make a gust of wind capable of bending tall trees.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When hunting, it skims the surface of water at high speed to pick off unwary prey such as Magikarp.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It spreads its gorgeous wings widely to intimidate enemies. It races through the skies at Mach-2 speed.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon has a dazzling plumage of beautifully glossy feathers. Many Trainers are captivated by the striking beauty of the feathers on its head, compelling them to choose Pidgeot as their Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon has a dazzling plumage of beautifully glossy feathers. Many Trainers are captivated by the striking beauty of the feathers on its head, compelling them to choose Pidgeot as their Pokémon.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"This Pokémon flies at Mach 2 speed, seeking prey. Its large talons are feared as wicked weapons.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"This Pokémon flies at Mach 2 speed, seeking prey. Its large talons are feared as wicked weapons.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"By flapping its wings with all its might, Pidgeot can make a gust of wind capable of bending tall trees.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"By flapping its wings with all its might, Pidgeot can make a gust of wind capable of bending tall trees.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It flies over water as it hunts, skimming along the surface to catch Magikarp and other such prey.\"\n    }\n  ],\n  \"19\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Bites anything when it attacks. Small and very quick, it is a common sight in many places.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Bites anything when it attacks. Small and very quick, it is a common sight in many places.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Will chew on anything with its fangs. If you see one, it is certain that 40 more live in the area.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Scurries around quickly, searching for hard objects to gnaw. It appears to be jittery and unable to remain still.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It eats anything. Wherever food is available, it will settle down and produce offspring continuously.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Living wherever there is food available, it ceaselessly scavenges for edibles the entire day.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This {{OBP|Pokémon|species|Pokémon}}'s impressive vitality allows it to live anywhere. It also multiplies very quickly.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It eats anything. Wherever food is available, it will settle down and produce offspring continuously.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Rattata is cautious in the extreme. Even while it is asleep, it constantly listens by moving its ears around. It is not picky about where it lives - it will make its nest anywhere.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Rattata is cautious in the extreme. Even while it is asleep, it constantly listens by moving its ears around. It is not picky about where it lives - it will make its nest anywhere.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Rattata is cautious in the extreme. Even while it is asleep, it constantly moves its ears and listens for danger. It will make its nest anywhere.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its fangs are long and very sharp. They grow continuously, so it gnaws on hard things to whittle them down.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Bites anything when it attacks. Small and very quick, it is a common sight in many places.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Cautious in the extreme, its hardy vitality lets it live in any kind of environment.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Cautious in the extreme, its hardy vitality lets it live in any kind of environment.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Cautious in the extreme, its hardy vitality lets it live in any kind of environment.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It eats anything. Wherever food is available, it will settle down and produce offspring continuously.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Living wherever there is food available, it ceaselessly scavenges for edibles the entire day.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Cautious in the extreme, its hardy vitality lets it live in any kind of environment.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Cautious in the extreme, its hardy vitality lets it live in any kind of environment.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It searches for food all day. It gnaws on hard objects to wear down its fangs, which grow constantly during its lifetime.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It searches for food all day. It gnaws on hard objects to wear down its fangs, which grow constantly during its lifetime.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Living wherever there is food available, it ceaselessly scavenges for edibles the entire day.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its fangs are long and very sharp. They grow continuously, so it gnaws on hard things to whittle them down.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Rattata is cautious in the extreme. Even while it is asleep, it constantly listens by moving its ears around. It is not picky about where it lives—it will make its nest anywhere.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Rattata is cautious in the extreme. Even while it is asleep, it constantly listens by moving its ears around. It is not picky about where it lives—it will make its nest anywhere.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its incisors continue growing until its death. If its Trainer doesn't offer it a file to gnaw on, it will gnaw on door frames, table legs, and so on.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"With their strong capacity for survival, they can live in dirty places without concern. Left unchecked, their numbers multiply rapidly.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its incisors grow continuously throughout its life. If its incisors get too long, this Pokémon becomes unable to eat, and it starves to death.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pokémon is common but hazardous. Its sharp incisors can easily cut right through hard wood.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Will chew on anything with its fangs. If you see one, you can be certain that 40 more live in the area.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Will chew on anything with its fangs. If you see one, you can be certain that 40 more live in the area.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It's cautious in the extreme, and its hardy vitality lets it live in any kind of environment.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It's cautious in the extreme, and its hardy vitality lets it live in any kind of environment.\"\n    }\n  ],\n  \"20\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"It uses its whiskers to maintain its balance. It apparently slows down if they are cut off.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"It uses its whiskers to maintain its balance. It apparently slows down if they are cut off.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its hind feet are webbed. They act as flippers, so it can swim in rivers and hunt for prey.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"If attacked, it stands up on its hind legs, bares its fangs and shrieks in an intimidating manner at its enemy.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Gnaws on anything with its tough fangs. It can even topple concrete buildings by gnawing on them.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its whiskers help it to maintain balance. Its fangs never stop growing, so it gnaws to pare them down.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The webs on its hind legs enable it to cross rivers. It searches wide areas for food.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Gnaws on anything with its tough fangs. It can even topple concrete buildings by gnawing on them.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Raticate's sturdy fangs grow steadily. To keep them ground down, it gnaws on rocks and logs. It may even chew on the walls of houses.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Raticate's sturdy fangs grow steadily. To keep them ground down, it gnaws on rocks and logs. It may even chew on the walls of houses.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Raticate's sturdy fangs grow steadily. To keep them ground down, it gnaws on rocks and logs. It may even chew on the walls of houses.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its rear feet have three toes each. They are webbed, enabling it to swim across rivers.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It uses its whiskers to maintain its balance. It apparently slows down if they are cut off.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It whittles its constantly growing fangs by gnawing on hard things. It can chew apart cinder walls.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It whittles its constantly growing fangs by gnawing on hard things. It can chew apart cinder walls.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It whittles its constantly growing fangs by gnawing on hard things. It can chew apart cinder walls.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Gnaws on anything with its tough fangs. It can even topple concrete buildings by gnawing on them.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its whiskers help it to maintain balance. Its fangs never stop growing, so it gnaws to pare them down.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It whittles its constantly growing fangs by gnawing on hard things. It can chew apart cinder walls.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It whittles its constantly growing fangs by gnawing on hard things. It can chew apart cinder walls.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"With its long fangs, this surprisingly violent Pokémon can gnaw away even thick concrete with ease.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"With its long fangs, this surprisingly violent Pokémon can gnaw away even thick concrete with ease.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It whittles its constantly growing fangs by gnawing on hard things. It can chew apart cinder walls.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The webs on its hind legs enable it to cross rivers. It searches wide areas for food.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Raticate's sturdy fangs grow steadily. To keep them ground down, it gnaws on rocks and logs. It may even chew on the walls of houses.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Raticate's sturdy fangs grow steadily. To keep them ground down, it gnaws on rocks and logs. It may even chew on the walls of houses.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its hind feet are webbed, so it's a strong swimmer. It can cross rivers and sometimes even oceans.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its disposition is far more violent than its looks would suggest. Don't let your hand get too close to its face, as it could bite your hand clean off.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"People say that it fled from its enemies by using its small webbed hind feet to swim from island to island in Alola.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its whiskers are essential for maintaining its balance. No matter how friendly you are, it will get angry and bite you if you touch its whiskers.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its hind feet are webbed. They act as flippers, so it can swim in rivers and hunt for prey.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its hind feet are webbed. They act as flippers, so it can swim in rivers and hunt for prey.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It whittles down its constantly growing fangs by gnawing on hard things. It can chew apart cinder block walls.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It whittles down its constantly growing fangs by gnawing on hard things. It can chew apart cinder block walls.\"\n    }\n  ],\n  \"21\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Eats bugs in grassy areas. It has to flap its short wings at high speed to stay airborne.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Eats bugs in grassy areas. It has to flap its short wings at high speed to stay airborne.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Inept at flying high. However, it can fly around very fast to protect its territory.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its wings are short, so it can't fly a long distance. If it's not eating, it darts around in a hurry.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It flaps its short wings to flush out insects from tall grass. It then plucks them with its stubby beak.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Very protective of its territory, it flaps its short wings busily to dart around at high speed.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"To protect its territory, it flies around ceaselessly, making high-pitched cries.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It flaps its short wings to flush out insects from tall grass. It then plucks them with its stubby beak.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Spearow has a very loud cry that can be heard over half a mile away. If its high, keening cry is heard echoing all around, it is a sign that they are warning each other of danger.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Spearow has a very loud cry that can be heard over half a mile away. If its high, keening cry is heard echoing all around, it is a sign that they are warning each other of danger.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its loud cry can be heard over half a mile away. If its high, keening cry is heard echoing all around, it is a sign that they are warning each other of danger.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It busily flits around here and there. Even if it is frail, it can be a tough foe that uses Mirror Move.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Eats bugs in grassy areas. It has to flap its short wings at high speed to stay airborne.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It flaps its small wings busily to fly. Using its beak, it searches in grass for prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It flaps its small wings busily to fly. Using its beak, it searches in grass for prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It flaps its small wings busily to fly. Using its beak, it searches in grass for prey.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It flaps its short wings to flush out insects from tall grass. It then plucks them with its stubby beak.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Very protective of its territory, it flaps its short wings busily to dart around at high speed.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It flaps its small wings busily to fly. Using its beak, it searches in grass for prey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It flaps its small wings busily to fly. Using its beak, it searches in grass for prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It flaps its small wings busily to fly. Using its beak, it searches in grass for prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It flaps its small wings busily to fly. Using its beak, it searches in grass for prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Very protective of its territory, it flaps its short wings busily to dart around at high speed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Eats bugs in grassy areas. It has to flap its short wings at high speed to stay airborne.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Spearow has a very loud cry that can be heard over half a mile away. If its high, keening cry is heard echoing all around, it is a sign that they are warning each other of danger.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Spearow has a very loud cry that can be heard over half a mile away. If its high, keening cry is heard echoing all around, it is a sign that they are warning each other of danger.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its short wings make it inept at flying. It moves about hurriedly and pecks at Bug-type Pokémon in the tall grass.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Farmers whose fields are troubled by bug Pokémon appreciate Spearow for its vigorous appetite and look after it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its reckless nature leads it to stand up to others—even large Pokémon—if it has to protect its territory.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Due to its short wings, it can't fly long distances. It wanders about restlessly and pecks at bug Pokémon.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Inept at flying high. However, it can fly around very fast to protect its territory.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Inept at flying high. However, it can fly around very fast to protect its territory.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It flaps its small wings busily to fly. Using its beak, it searches in grass for prey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It flaps its small wings busily to fly. Using its beak, it searches in grass for prey.\"\n    }\n  ],\n  \"22\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"With its huge and magnificent wings, it can keep aloft without ever having to land for rest.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"With its huge and magnificent wings, it can keep aloft without ever having to land for rest.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A Pokémon that dates back many years. If it senses danger, it flies high and away, instantly.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A Pokémon that enjoys flying. It uses its broad wings to adroitly catch the wind to soar elegantly into the sky.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It shoots itself suddenly high into the sky, then plummets down in one fell swoop to strike its prey.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It cleverly uses its thin, long beak to pluck and eat small insects that hide under the ground.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It uses its long beak to attack. It has a surprisingly long reach, so it must be treated with caution.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It shoots itself suddenly high into the sky, then plummets down in one fell swoop to strike its prey.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Fearow is recognized by its long neck and elongated beak. They are conveniently shaped for catching prey in soil or water. It deftly moves its long and skinny beak to pluck prey.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Fearow is recognized by its long neck and elongated beak. They are conveniently shaped for catching prey in soil or water. It deftly moves its long and skinny beak to pluck prey.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its long neck and elongated beak are ideal for catching prey in soil or water. It deftly moves this extended and skinny beak to pluck prey.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its huge and magnificent wings can keep it aloft in the sky. It can remain flying a whole day without landing.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"With its huge and magnificent wings, it can keep aloft without ever having to land for rest.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has the stamina to fly all day on its broad wings. It fights by using its sharp beak.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has the stamina to keep flying all day on its broad wings. It fights by using its sharp beak.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has the stamina to fly all day on its broad wings. It fights using its sharp beak.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It shoots itself suddenly high into the sky, then plummets down in one fell swoop to strike its prey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It cleverly uses its thin, long beak to pluck and eat small insects that hide under the ground.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has the stamina to fly all day on its broad wings. It fights by using its sharp beak.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has the stamina to fly all day on its broad wings. It fights by using its sharp beak.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has the stamina to fly all day on its broad wings. It fights by using its sharp beak.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has the stamina to fly all day on its broad wings. It fights by using its sharp beak.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"With its huge and magnificent wings, it can keep aloft without ever having to land for rest.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has the stamina to fly all day on its broad wings. It fights by using its sharp beak.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Fearow is recognized by its long neck and elongated beak. They are conveniently shaped for catching prey in soil or water. It deftly moves its long and skinny beak to pluck prey.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Fearow is recognized by its long neck and elongated beak. They are conveniently shaped for catching prey in soil or water. It deftly moves its long and skinny beak to pluck prey.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It's tough and has excellent stamina. It has no problem flying continuously for a whole day carrying a heavy load.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Drawings of a Pokémon resembling Fearow can be seen in murals from deep in ancient history.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Carrying food through Fearow's territory is dangerous. It will snatch the food away from you in a flash!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"In Alola, fish Pokémon are its prey. It can be seen circling above the ocean searching for food.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A Pokémon that dates back many years. If it senses danger, it flies high and away, instantly.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A Pokémon that dates back many years. If it senses danger, it flies high and away, instantly.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has the stamina to fly all day on its broad wings. It fights by using its sharp beak.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has the stamina to fly all day on its broad wings. It fights by using its sharp beak.\"\n    }\n  ],\n  \"23\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A very common sight in grasslands and such. It flicks its tongue in and out to sense danger in its surroundings.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Moves silently and stealthily. Eats the eggs of birds, such as Pidgey and Spearow, whole.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Moves silently and stealthily. Eats the eggs of birds, such as Pidgey and Spearow, whole.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The older it gets, the longer it grows. At night, it wraps its long body around tree branches to rest.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Slithers silently through grass, searching for its favorite food--Pidgey and Spearow eggs.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It can freely detach its jaw to swallow large prey whole. It can become too heavy to move, however.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It always hides in grass. When first born, it has no poison, so its bite is painful, but harmless.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It flutters the tip of its tongue to seek out the scent of prey, then swallows the prey whole.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It can freely detach its jaw to swallow large prey whole. It can become too heavy to move, however.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ekans curls itself up in a spiral while it rests. Assuming this position allows it to quickly respond to a threat from any direction with a glare from its upraised head.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Ekans curls itself up in a spiral while it rests. Assuming this position allows it to quickly respond to a threat from any direction with a glare from its upraised head.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"An Ekans curls itself up in a spiral while it rests. This position allows it to quickly respond to an enemy from any direction with a threat from its upraised head.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A very common sight in grassland, etc. It flicks its tongue in and out to sense danger in its surroundings.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Moving silently and stealthily, it eats the eggs of birds, such as Pidgey and Spearow, whole.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It sneaks through grass without making a sound and strikes unsuspecting prey from behind.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It sneaks through grass without making a sound and strikes unsuspecting prey from behind.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It sneaks through grass without making a sound and strikes unsuspecting prey from behind.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can freely detach its jaw to swallow large prey whole. It can become too heavy to move, however.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It always hides in grass. When first born, it has no poison, so its bite is painful, but harmless.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It sneaks through grass without making a sound and strikes unsuspecting prey from behind.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It sneaks through grass without making a sound and strikes unsuspecting prey from behind.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It sneaks through grass without making a sound and strikes unsuspecting prey from behind.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It sneaks through grass without making a sound and strikes unsuspecting prey from behind.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The older it gets, the longer it grows. At night, it wraps its long body around tree branches to rest.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Moving silently and stealthily, it eats the eggs of birds, such as Pidgey and Spearow, whole.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ekans curls itself up in a spiral while it rests. Assuming this position allows it to quickly respond to a threat from any direction with a glare from its upraised head.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ekans curls itself up in a spiral while it rests. Assuming this position allows it to quickly respond to a threat from any direction with a glare from its upraised head.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"By dislocating its jaw, it can swallow prey larger than itself. After a meal, it curls up and rests.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The eggs of bird Pokémon are its favorite food. It swallows eggs whole, so sometimes an egg gets stuck, and Ekans faints.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The older it gets, the longer it grows. At night, it wraps its long body around tree branches to rest.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The older it gets, the longer it grows. At night, it wraps its long body around tree branches to rest.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It sneaks through grass without making a sound and strikes unsuspecting prey from behind.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It sneaks through grass without making a sound and strikes unsuspecting prey from behind.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It can freely detach its jaw to swallow large prey whole. It can become too heavy to move, however.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A very common sight in grasslands and such. It flicks its tongue in and out to sense danger in its surroundings.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"As it matures, it grows longer. At night, it wraps its long body around tree branches to rest.\"\n    }\n  ],\n  \"24\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The pattern on its belly appears to be a frightening face. Weak foes will flee just at the sight of the pattern.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"It is rumored that the ferocious warning markings on its belly differ from area to area.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"It is rumored that the ferocious warning markings on its belly differ from area to area.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The frightening patterns on its belly have been studied. Six variations have been confirmed.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"If it encounters an enemy, it raises its head, intimidating the opponent with the frightening pattern on its body.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Transfixing prey with the face-like pattern on its belly, it binds and poisons the frightened victim.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"With a very vengeful nature, it won't give up the chase, no matter how far, once it targets its prey.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"To intimidate foes, it spreads its chest wide and makes eerie sounds by expelling air from its mouth.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Transfixing prey with the face-like pattern on its belly, it binds and poisons the frightened victim.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"This Pokémon is terrifically strong in order to constrict things with its body. It can even flatten steel oil drums. Once Arbok wraps its body around its foe, escaping its crunching embrace is impossible.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon is terrifically strong in order to constrict things with its body. It can even flatten steel oil drums. Once Arbok wraps its body around its foe, escaping its crunching embrace is impossible.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon has a terrifically strong constricting power. It can even flatten steel oil drums. Once it wraps its body around its foe, escaping is impossible.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The pattern on its belly appears to be a frightening face. Weak foes will flee just at the sight of the pattern.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is rumored that the ferocious warning markings on its belly differ from area to area.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The pattern on its belly is for intimidation. It constricts foes while they are frozen in fear.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The pattern on its belly is for intimidation. It constricts foes while they are frozen in fear.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The pattern on its belly is for intimidation. It constricts foes while they are frozen in fear.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Transfixing prey with the face-like pattern on its belly, it binds and poisons the frightened victim.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"With a very vengeful nature, it won't give up the chase, no matter how far, once it targets its prey.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The pattern on its belly is for intimidation. It constricts foes while they are frozen in fear.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The pattern on its belly is for intimidation. It constricts foes while they are frozen in fear.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The pattern on its belly is for intimidation. It constricts foes while they are frozen in fear.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The pattern on its belly is for intimidation. It constricts foes while they are frozen in fear.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The pattern on its belly appears to be a frightening face. Weak foes will flee just at the sight of the pattern.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"To intimidate foes, it spreads its chest wide and makes eerie sounds by expelling air from its mouth.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon is terrifically strong in order to constrict things with its body. It can even flatten steel oil drums. Once Arbok wraps its body around its foe, escaping its crunching embrace is impossible.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon is terrifically strong in order to constrict things with its body. It can even flatten steel oil drums. Once Arbok wraps its body around its foe, escaping its crunching embrace is impossible.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The latest research has determined that there are over 20 possible arrangements of the patterns on its stomach.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"After stunning its opponents with the pattern on its stomach, it quickly wraps them up in its body and waits for them to stop moving.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The frightening patterns on its belly have been studied. Six variations have been confirmed.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The frightening patterns on its belly have been studied. Six variations have been confirmed.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The pattern on its belly is for intimidation. It constricts foes while they are frozen in fear.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The pattern on its belly is for intimidation. It constricts foes while they are frozen in fear.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The pattern on its belly appears to be a frightening face. Weak foes will flee just at the sight of the pattern.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon is very tenacious. Once it targets its prey, it won't give up the chase, no matter how far the prey goes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"To intimidate foes, it spreads its chest wide and makes eerie sounds by expelling air from its mouth.\"\n    }\n  ],\n  \"25\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Pikachu that can generate powerful electricity have cheek sacs that are extra soft and super stretchy.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When several of these {{OBP|Pokémon|species|Pokémon}} gather, their electricity could build and cause lightning storms.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When several of these {{OBP|Pokémon|species|Pokémon}} gather, their electricity could build and cause lightning storms.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It keeps its tail raised to monitor its surroundings. If you yank its tail, it will try to bite you.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Lives in forests away from people. It stores electricity in its cheeks for zapping an enemy if it is attacked.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This intelligent Pokémon roasts hard {{Berries}} with electricity to make them tender enough to eat.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It raises its tail to check its surroundings. The tail is sometimes struck by lightning in this pose.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it is angered, it immediately discharges the energy stored in the pouches in its cheeks.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This intelligent Pokémon roasts hard Berries with electricity to make them tender enough to eat.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Whenever Pikachu comes across something new, it blasts it with a jolt of electricity. If you come across a blackened berry, it's evidence that this Pokémon mistook the intensity of its charge.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon has electricity-storing pouches on its cheeks. These appear to become electrically charged during the night while Pikachu sleeps. It occasionally discharges electricity when it is dozy after waking up.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It stores electricity in the electric sacs on its cheeks. When it releases pent-up energy in a burst, the electric power is equal to a lightning bolt.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has small electric sacs on both its cheeks. If threatened, it looses electric charges from the sacs.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When several of these Pokémon gather, their electricity can build and cause lightning storms.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in forests with others. It stores electricity in the pouches on its cheeks.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"If it looses crackling power from the electric pouches on its cheeks, it is being wary.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It occasionally uses an electric shock to recharge a fellow Pikachu that is in a weakened state.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This intelligent Pokémon roasts hard berries with electricity to make them tender enough to eat.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It raises its tail to check its surroundings. The tail is sometimes struck by lightning in this pose.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It occasionally uses an electric shock to recharge a fellow Pikachu that is in a weakened state.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It occasionally uses an electric shock to recharge a fellow Pikachu that is in a weakened state.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It occasionally uses an electric shock to recharge a fellow Pikachu that is in a weakened state.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It occasionally uses an electric shock to recharge a fellow Pikachu that is in a weakened state.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It raises its tail to check its surroundings. The tail is sometimes struck by lightning in this pose.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has small electric sacs on both its cheeks. If threatened, it looses electric charges from the sacs.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Whenever Pikachu comes across something new, it blasts it with a jolt of electricity. If you come across a blackened berry, it's evidence that this Pokémon mistook the intensity of its charge.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon has electricity-storing pouches on its cheeks. These appear to become electrically charged during the night while Pikachu sleeps. It occasionally discharges electricity when it is dozy after waking up.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A plan was recently announced to gather many Pikachu and make an electric power plant.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It's in its nature to store electricity. It feels stressed now and then if it's unable to fully discharge the electricity.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its nature is to store up electricity. Forests where nests of Pikachu live are dangerous, since the trees are so often struck by lightning.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"While sleeping, it generates electricity in the sacs in its cheeks. If it's not getting enough sleep, it will be able to use only weak electricity.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"This forest-dwelling Pokémon stores electricity in its cheeks, so you'll feel a tingly shock if you touch it.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"This forest-dwelling Pokémon stores electricity in its cheeks, so you'll feel a tingly shock if you touch it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Pikachu that can generate powerful electricity have cheek sacs that are extra soft and super stretchy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When Pikachu meet, they'll touch their tails together and exchange electricity through them as a form of greeting.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in forests with others. It stores electricity in the electric sacs on its cheeks.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"If it looses crackling power from the electric sacs on its cheeks, it is being wary.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Possesses cheek sacs in which it stores electricity. This clever forest-dweller roasts tough berries with an electric shock before consuming them.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it is angered, it immediately discharges the energy stored in the pouches in its cheeks.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When several of these Pokémon gather, their electricity can build and cause lightning storms.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has small electric sacs on both its cheeks. When in a tough spot, this Pokémon discharges electricity.\"\n    }\n  ],\n  \"26\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its tail discharges electricity into the ground, protecting it from getting shocked.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its long tail serves as a ground to protect itself from its own high voltage power.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its long tail serves as a ground to protect itself from its own high voltage power.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"When electricity builds up inside its body, it becomes feisty. It also glows in the dark.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its electrical attacks may reach 10,000 volts. It discharges electricity from its tail, so it is not harmed by its own power.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When its electricity builds, its muscles are stimulated, and it becomes more aggressive than usual.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If the electric pouches in its cheeks become fully charged, both ears will stand straight up.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If its electric pouches run empty, it raises its tail to gather electricity from the atmosphere.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When its electricity builds, its muscles are stimulated, and it becomes more aggressive than usual.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"If the electrical sacks become excessively charged, Raichu plants its tail in the ground and discharges. Scorched patches of ground will be found near this Pokémon's nest.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon exudes a weak electrical charge from all over its body that makes it take on a slight glow in darkness. Raichu searches for electricity by planting its tail in the ground.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"If it stores too much electricity, its behavior turns aggressive. To avoid this, it occasionally discharges excess energy and calms itself down.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its electric charges can reach even 100,000 volts. Careless contact can cause even an Indian elephant to faint.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its long tail serves as a ground to protect itself from its own high-voltage power.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It turns aggressive if it has too much electricity in its body. It discharges power through its tail.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can loose 100,000-volt bursts of electricity, instantly downing foes several times its size.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its tail discharges electricity into the ground, protecting it from getting shocked.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When its electricity builds, its muscles are stimulated, and it becomes more aggressive than usual.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If the electric pouches in its cheeks become fully charged, both ears will stand straight up.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its tail discharges electricity into the ground, protecting it from getting shocked.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its tail discharges electricity into the ground, protecting it from getting shocked.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its tail discharges electricity into the ground, protecting it from getting shocked.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its tail discharges electricity into the ground, protecting it from getting shocked.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When its electricity builds, its muscles are stimulated, and it becomes more aggressive than usual.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can loose 100,000-volt bursts of electricity, instantly downing foes several times its size.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"If the electrical sacs become excessively charged, Raichu plants its tail in the ground and discharges. Scorched patches of ground will be found near this Pokémon's nest.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon exudes a weak electrical charge from all over its body that makes it take on a slight glow in darkness. Raichu plants its tail in the ground to discharge electricity.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It unleashes electric shocks that can reach 100,000 volts. When agitated, it can knock out even an Indian elephant.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It becomes aggressive when it has electricity stored up. At such times, even its Trainer has to take care to avoid being attacked.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"As electricity builds up inside its body, it becomes more aggressive. One theory is that the electricity buildup is actually causing stress.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Because so many Trainers like the way Pikachu looks, you don't see this Pokémon very often.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When electricity builds up inside its body, it becomes feisty. It also glows in the dark.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When electricity builds up inside its body, it becomes feisty. It also glows in the dark.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its long tail serves as a ground to protect itself from its own high-voltage power.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If its electric pouches run empty, it raises its tail to gather electricity from the atmosphere.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It turns aggressive if it has too much electricity in its body. It discharges power through its tail.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can loose 100,000-volt bursts of electricity, instantly downing foes several times its size.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It can discharge bursts of electricity exceeding 100,000 volts—a single strike with that amount of power would incapacitate one of the Copperajah of my homeland.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its tail discharges electricity into the ground, protecting it from getting shocked.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If the electric pouches in its cheeks become fully charged, both ears will stand straight up.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When its electricity builds, its muscles are stimulated, and it becomes more aggressive than usual.\"\n    }\n  ],\n  \"27\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Burrows deep underground in arid locations far from water. It only emerges to hunt for food.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Burrows deep underground in arid locations far from water. It only emerges to hunt for food.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its body is dry. When it gets cold at night, its hide is said to become coated with a fine dew.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"When hunting, it hides at the lip of its burrow. If prey comes close, it lunges out and drags in the prey instantly.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If it fell from a great height, this Pokémon could save itself by rolling into a ball and bouncing.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Disliking water, it lives in deep burrows in arid areas. It can roll itself instantly into a ball.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It prefers dry, sandy places because it uses the sand to protect itself when threatened.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If it fell from a great height, this Pokémon could save itself by rolling into a ball and bouncing.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Sandshrew's body is configured to absorb water without waste, enabling it to survive in an arid desert. This Pokémon curls up to protect itself from its enemies.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sandshrew has a very dry hide that is extremely tough. The Pokémon can roll into a ball that repels any attack. At night, it burrows into the desert sand to sleep.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When it curls up in a ball, it can make any attack bounce off harmlessly. Its hide has turned tough and solid as a result of living in the desert.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It burrows and lives underground. If threatened, it curls itself up into a ball for protection.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Burrows deep underground in arid locations far from water. It only emerges to hunt for prey.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"To protect itself from attackers, it curls up into a ball. It lives in arid regions with minimal rainfall.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"To protect itself from attackers, it curls up into a ball. It lives in arid regions with minimal rainfall.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"To protect itself from attackers, it curls up into a ball. It lives in arid regions with minimal rainfall.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it fell from a great height, this Pokémon could save itself by rolling into a ball and bouncing.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Disliking water, it lives in deep burrows in arid areas. It can roll itself instantly into a ball.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"To protect itself from attackers, it curls up into a ball. It lives in arid regions with minimal rainfall.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"To protect itself from attackers, it curls up into a ball. It lives in arid regions with minimal rainfall.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It digs deep burrows to live in. When in danger, it rolls up its body to withstand attacks.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It digs deep burrows to live in. When in danger, it rolls up its body to withstand attacks.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It burrows and lives underground. If threatened, it curls itself up into a ball for protection.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Disliking water, it lives in deep burrows in arid areas. It can roll itself instantly into a ball.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sandshrew's body is configured to absorb water without waste, enabling it to survive in an arid desert. This Pokémon curls up to protect itself from its enemies.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sandshrew has a very dry hide that is extremely tough. The Pokémon can roll into a ball that repels any attack. At night, it burrows into the desert sand to sleep.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It can roll its body into a ball. It moves through the desert by rolling at high speeds.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It usually makes its home in deserts and arid zones, where rain does not fall. It digs holes to catch Bug-type Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It lives in areas of limited rainfall. When danger approaches, it curls up into a ball to protect its soft stomach.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When its skin gets wrinkled from moisture, it heads for a volcano. It lies flat on a spot with a lot of geothermal heat and dries itself out.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its body is dry. When it gets cold at night, its hide is said to become coated with a fine dew.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its body is dry. When it gets cold at night, its hide is said to become coated with a fine dew.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It loves to bathe in the grit of dry, sandy areas. By sand bathing, this Pokémon rids itself of dirt and moisture clinging to its body.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It burrows into the ground to create its nest. If hard stones impede its tunneling, it uses its sharp claws to scatter them and then carries on digging.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"To protect itself from attackers, it curls up into a ball. It lives in arid regions with minimal rainfall.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"To protect itself from attackers, it curls up into a ball. It lives in arid regions with minimal rainfall.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It digs deep burrows to live in. When in danger, it rolls up its body to withstand attacks.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"No matter how high a place it falls from, this Pokémon can save itself by rolling in a ball and bouncing.\"\n    }\n  ],\n  \"28\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Curls up into a spiny ball when threatened. It can roll while curled up to attack or escape.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Curls up into a spiny ball when threatened. It can roll while curled up to attack or escape.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It is skilled at slashing enemies with its claws. If broken, they start to grow back in a day.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Curls into a ball of sharp spikes and rolls into enemies. It is also adept at slashing with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"In an attempt to hide itself, it will run around at top speed to kick up a blinding dust storm.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If it digs at an incredible pace, it may snap off its spikes and claws. They grow back in a day.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Adept at climbing trees, it rolls into a spiny ball, then attacks its enemies from above.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"In an attempt to hide itself, it will run around at top speed to kick up a blinding dust storm.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Sandslash's body is covered by tough spikes, which are hardened sections of its hide. Once a year, the old spikes fall out, to be replaced with new spikes that grow out from beneath the old ones.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sandslash can roll up its body as if it were a ball covered with large spikes. In battle, this Pokémon will try to make the foe flinch by jabbing it with its spines. It then leaps at the stunned foe to tear wildly with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It curls up in a ball to protect itself from enemy attacks. It also curls up to prevent heatstroke during the daytime when temperatures rise sharply.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is adept at attacking with the spines on its back and its sharp claws while quickly scurrying about.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Curls up into a spiny ball when threatened. It can roll while curled up to attack or escape.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It curls up, then rolls into foes with its back. Its sharp spines inflict severe damage.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It curls up, then rolls into foes with its back. Its sharp spines inflict severe damage.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It curls up, then rolls into foes with its back. Its sharp spines inflict severe damage.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"In an attempt to hide itself, it will run around at top speed to kick up a blinding dust storm.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it digs at an incredible pace, it may snap off its spikes and claws. They grow back in a day.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It curls up, then rolls into foes with its back. Its sharp spines inflict severe damage.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It curls up, then rolls into foes with its back. Its sharp spines inflict severe damage.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The spikes on its body are made up of its hardened hide. It rolls up and attacks foes with its spikes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The spikes on its body are made up of its hardened hide. It rolls up and attacks foes with its spikes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If it digs at an incredible pace, it may snap off its spikes and claws. They grow back in a day.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Curls up into a spiny ball when threatened. It can roll while curled up to attack or escape.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sandslash's body is covered by tough spikes, which are hardened sections of its hide. Once a year, the old spikes fall out, to be replaced with new spikes that grow out from beneath the old ones.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sandslash can roll up its body as if it were a ball covered with large spikes. In battle, this Pokémon will try to make the foe flinch by jabbing it with its spines. It then leaps at the stunned foe to tear wildly with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Although they are sharp, its claws and spikes often break off. They grow back the next day, so it is not bothered by the temporary loss.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It uses its claws to climb trees and then curls its body into a spiny ball, ready to drop onto any prey that appears.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its claws and horns often break off. The broken claws and horns can be used to carve plows for tilling farm fields.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Thanks to its thick claws, it's good at climbing trees. There are plenty of Sandslash that park themselves in trees and go right to sleep.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It is skilled at slashing enemies with its claws. If broken, they start to grow back in a day.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It is skilled at slashing enemies with its claws. If broken, they start to grow back in a day.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The drier the area Sandslash lives in, the harder and smoother the Pokémon's spikes feel when touched.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It climbs trees by hooking on with its sharp claws. Sandslash shares the berries it gathers, dropping them down to Sandshrew waiting below the tree.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It curls up, then rolls into foes with its back. Its sharp spines inflict severe damage.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It curls up, then rolls into foes with its back. Its sharp spines inflict severe damage.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is adept at attacking with the spines on its back and its sharp claws while quickly scurrying about.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The spikes on its body are made up of its hardened hide. It rolls up and attacks foes with its spikes.\"\n    }\n  ],\n  \"29\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Although small, its venomous barbs render this Pokémon dangerous. The female has smaller horns.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Although small, its venomous barbs render this Pokémon dangerous. The female has smaller horns.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A mild-mannered Pokémon that does not like to fight. Beware, its small horns secrete venom.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Although small, it should be treated with caution because of its highly toxic thorns. The female has a small horn.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The poison hidden in its small horn is extremely potent. Even a tiny scratch can have fatal results.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Although not very combative, it will torment its foes with poison spikes if it is threatened in any way.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Small and very docile, it protects itself with its small, poisonous horn when attacked.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The poison hidden in its small horn is extremely potent. Even a tiny scratch can have fatal results.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Nidoran has barbs that secrete a powerful poison. They are thought to have developed as protection for this small-bodied Pokémon. When enraged, it releases a horrible toxin from its horn.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Nidoran has barbs that secrete a powerful poison. They are thought to have developed as protection for this small-bodied Pokémon. When enraged, it releases a horrible toxin from its horn.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its highly toxic barbs are thought to have developed as protection for this small- bodied Pokémon. When enraged, it releases a horrible toxin from its horn.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Though small, it must be treated with caution because of its powerfully toxic barbs. The female has smaller horns.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Although small, its venomous barbs render this Pokémon dangerous. The female has smaller horns.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"While it does not prefer to fight, even one drop of the poison it secretes from barbs can be fatal.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"While it does not prefer to fight, even one drop of the poison it secretes from barbs can be fatal.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"While it does not prefer to fight, even one drop of the poison it secretes from barbs can be fatal.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The poison hidden in its small horn is extremely potent. Even a tiny scratch can have fatal results.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Although not very combative, it will torment its foes with poison spikes if it is threatened in any way.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"While it does not prefer to fight, even one drop of the poison it secretes from barbs can be fatal.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"While it does not prefer to fight, even one drop of the poison it secretes from barbs can be fatal.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"While it does not prefer to fight, even one drop of the poison it secretes from barbs can be fatal.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"While it does not prefer to fight, even one drop of the poison it secretes from barbs can be fatal.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Although small, its venomous barbs render this Pokémon dangerous. The female has smaller horns.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Small and very docile, it protects itself with its small, poisonous horn when attacked.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Nidoran♀ has barbs that secrete a powerful poison. They are thought to have developed as protection for this small-bodied Pokémon. When enraged, it releases a horrible toxin from its horn.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Nidoran♀ has barbs that secrete a powerful poison. They are thought to have developed as protection for this small-bodied Pokémon. When enraged, it releases a horrible toxin from its horn.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A mild-mannered Pokémon that does not like to fight. Beware—its small horn secretes venom.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A mild-mannered Pokémon that does not like to fight. Beware—its small horn secretes venom.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Females are more sensitive to smells than males. While foraging, they'll use their whiskers to check wind direction and stay downwind of predators.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It uses its hard incisor teeth to crush and eat berries. The tip of a female Nidoran's horn is a bit more rounded than the tip of a male's horn.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"While this Pokémon does not prefer to fight, even one drop of the venom it secretes from its barbs can be fatal.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"While this Pokémon does not prefer to fight, even one drop of the venom it secretes from its barbs can be fatal.\"\n    }\n  ],\n  \"30\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The female's horn develops slowly. Prefers physical attacks such as clawing and biting.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The female's horn develops slowly. Prefers physical attacks such as clawing and biting.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"When resting deep in its burrow, its thorns always retract. This is proof that it is relaxed.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The female is usually docile. However, if it becomes enraged, it will attack wildly with bites and scratches.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When feeding its young, it first chews and tenderizes the food, then spits it out for the offspring.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It has a calm and caring nature. Because its horn grows slowly, it prefers not to fight.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It has a docile nature. If it is threatened with attack, it raises the barbs that are all over its body.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When feeding its young, it first chews and tenderizes the food, then spits it out for the offspring.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"When Nidorina are with their friends or family, they keep their barbs tucked away to prevent hurting each other. This Pokémon appears to become nervous if separated from the others.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When Nidorina are with their friends or family, they keep their barbs tucked away to prevent hurting each other. This Pokémon appears to become nervous if separated from the others.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When it is with its friends or family, its barbs are tucked away to prevent injury. It appears to become nervous if separated from the others.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The female has a gentle temperament. It emits ultrasonic cries that have the power to befuddle foes.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The female's horns develop slowly. Prefers physical attacks such as clawing and biting.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When it senses danger, it raises all the barbs on its body. These barbs grow slower than NIDORINO's.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When it senses danger, it raises all the barbs on its body. These barbs grow slower than NIDORINO's.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When it senses danger, it raises all the barbs on its body. These barbs grow slower than NIDORINO's.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When feeding its young, it first chews the food into a paste, then spits it out for the offspring.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has a calm and caring nature. Because its horn grows slowly, it prefers not to fight.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it senses danger, it raises all the barbs on its body. These barbs grow slower than Nidorino's.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When it senses danger, it raises all the barbs on its body. These barbs grow slower than Nidorino's.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it senses danger, it raises all the barbs on its body. These barbs grow slower than Nidorino's.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it senses danger, it raises all the barbs on its body. These barbs grow slower than Nidorino's.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The female has a gentle temperament. It emits ultrasonic cries that have the power to befuddle foes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When feeding its young, it first chews the food into a paste, then spits it out for the offspring.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When Nidorina are with their friends or family, they keep their barbs tucked away to prevent hurting each other. This Pokémon appears to become nervous if separated from the others.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Nidorina are with their friends or family, they keep their barbs tucked away to prevent hurting each other. This Pokémon appears to become nervous if separated from the others.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When resting deep in its burrow, its barbs always retract. This is proof that it is relaxed.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When resting deep in its burrow, its barbs always retract. This is proof that it is relaxed.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The horn on its head has atrophied. It's thought that this happens so Nidorina's children won't get poked while their mother is feeding them.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If the group is threatened, these Pokémon will band together to assault enemies with a chorus of ultrasonic waves.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When it senses danger, it raises all the barbs on its body. These barbs grow more slowly than Nidorino's.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When it senses danger, it raises all the barbs on its body. These barbs grow more slowly than Nidorino's.\"\n    }\n  ],\n  \"31\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its hard scales provide strong protection. It uses its hefty bulk to execute powerful moves.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its hard scales provide strong protection. It uses its hefty bulk to execute powerful moves.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Tough scales cover the sturdy body of this Pokémon. It appears that the scales grow in cycles.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its super-hard, needle-like scales stand up when excited. It uses its hefty bulk for performing powerful moves.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its body is covered with needle-like scales. It never shows signs of shrinking from any attack.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It uses its scaly, rugged body to seal the entrance of its nest and protect its young from predators.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The hard scales that cover its strong body serve as excellent protection from any attack.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its body is covered with needle-like scales. It never shows signs of shrinking from any attack.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Nidoqueen's body is encased in extremely hard scales. It is adept at sending foes flying with harsh tackles. This Pokémon is at its strongest when it is defending its young.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Nidoqueen's body is encased in extremely hard scales. It is adept at sending foes flying with harsh tackles. This Pokémon is at its strongest when it is defending its young.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is adept at sending foes flying with harsh tackles using its tough, scaly body. This Pokémon is at its strongest when it is defending its young.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The body is covered by stiff, needle-like scales. If it becomes excited, the needles bristle outwards.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its hard scales provide strong protection. It uses its hefty bulk to execute powerful moves.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its entire body is armored with hard scales. It will protect the young in its burrow with its life.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its entire body is armored with hard scales. It will protect the young in its burrow with its life.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its entire body is armored with hard scales. It will protect the young in its burrow with its life.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its body is covered with needle-like scales. It never shows signs of shrinking from any attack.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It uses its scaly, rugged body to seal the entrance of its nest and protect its young from predators.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its entire body is armored with hard scales. It will protect the young in its burrow with its life.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its entire body is armored with hard scales. It will protect the young in its burrow with its life.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its entire body is armored with hard scales. It will protect the young in its burrow with its life.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its entire body is armored with hard scales. It will protect the young in its burrow with its life.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It uses its scaly, rugged body to seal the entrance of its nest and protect its young from predators.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The body is covered by stiff, needlelike scales. If it becomes excited, the needles bristle outwards.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Nidoqueen's body is encased in extremely hard scales. It is adept at sending foes flying with harsh tackles. This Pokémon is at its strongest when it is defending its young.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Nidoqueen's body is encased in extremely hard scales. It is adept at sending foes flying with harsh tackles. This Pokémon is at its strongest when it is defending its young.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Tough scales cover the sturdy body of this Pokémon. It appears that the scales grow in cycles.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Tough scales cover the sturdy body of this Pokémon. It appears that the scales grow in cycles.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Nidoqueen is better at defense than offense. With scales like armor, this Pokémon will shield its children from any kind of attack.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It pacifies offspring by placing them in the gaps between the spines on its back. The spines will never secrete poison while young are present.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its entire body is armored with hard scales. It will protect the young in its burrow with its life.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its entire body is armored with hard scales. It will protect the young in its burrow with its life.\"\n    }\n  ],\n  \"32\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Stiffens its ears to sense danger. The larger its horns, the more powerful its secreted venom.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Stiffens its ears to sense danger. The larger its horns, the more powerful its secreted venom.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its large ears are always kept upright. If it senses danger, it will attack with a poisonous sting.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its large ears sense danger. It extends its toxic spikes when angry. The size of its body thorns indicates its toxicity.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is small, but its horn is filled with poison. It charges then stabs with the horn to inject poison.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It raises its big ears to check its surroundings. It will strike first if it senses any danger.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It constantly moves its large ears in many directions in order to detect danger right away.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is small, but its horn is filled with poison. It charges then stabs with the horn to inject poison.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The male Nidoran has developed muscles for moving its ears. Thanks to them, the ears can be freely moved in any direction. Even the slightest sound does not escape this Pokémon's notice.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The male Nidoran has developed muscles for moving its ears. Thanks to them, the ears can be freely moved in any direction. Even the slightest sound does not escape this Pokémon's notice.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The male Nidoran has developed muscles that freely move its ears in any direction. Even the slightest sound does not escape this Pokémon's notice.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its large ears are flapped like wings when it is listening to distant sounds. It extends toxic barbs when angered.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It stiffens its ears to sense danger. The larger its horns, the more powerful its secreted venom.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is small, but its horn is filled with poison. It charges then stabs with the horn to inject poison.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It raises its big ears to check its surroundings. It will strike first if it senses any danger.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its large ears are flapped like wings when it is listening to distant sounds. It extends toxic barbs when angered.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Nidoran♂ has developed muscles for moving its ears. Thanks to them, the ears can be freely moved in any direction. Even the slightest sound does not escape this Pokémon's notice.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Nidoran♂ has developed muscles for moving its ears. Thanks to them, the ears can be freely moved in any direction. Even the slightest sound does not escape this Pokémon's notice.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its large ears are always kept upright. If it senses danger, it will attack with a poisonous sting.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its large ears are always kept upright. If it senses danger, it will attack with a poisonous sting.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The horn on a male Nidoran's forehead contains a powerful poison. This is a very cautious Pokémon, always straining its large ears.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Small but brave, this Pokémon will hold its ground and even risk its life in battle to protect the female it's friendly with.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It scans its surroundings by raising its ears out of the grass. Its toxic horn is for protection.\"\n    }\n  ],\n  \"33\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"An aggressive Pokémon that is quick to attack. The horn on its head secretes a powerful venom.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"An aggressive Pokémon that is quick to attack. The horn on its head secretes a powerful venom.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its horns contain venom. If they are stabbed into an enemy, the impact makes the poison leak out.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its horn is harder than diamond. If it punctures an enemy, it pumps powerful venom into the wound.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It raises its big ears to check its surroundings. If it senses anything, it attacks immediately.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Quick to anger, it stabs enemies with its horn to inject a powerful poison when it becomes agitated.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is easily agitated and uses its horn for offense as soon as it notices an attacker.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It raises its big ears to check its surroundings. If it senses anything, it attacks immediately.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Nidorino has a horn that is harder than a diamond. If it senses a hostile presence, all the barbs on its back bristle up at once, and it challenges the foe with all its might.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Nidorino has a horn that is harder than a diamond. If it senses a hostile presence, all the barbs on its back bristle up at once, and it challenges the foe with all its might.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its horn is harder than a diamond. If it senses a hostile presence, all the barbs on its back bristle up at once, and it challenges the foe with all its might.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is easily angered. By swinging its well-developed horn wildly, it can even punch through diamond.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"An aggressive Pokémon that is quick to attack. The horn on its head secretes a powerful venom.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a violent disposition and stabs foes with its horn, which oozes poison upon impact.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has a violent disposition and stabs foes with its horn, which oozes poison upon impact.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has a violent disposition and stabs foes with its horn, which oozes poison upon impact.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It raises its big ears to check its surroundings. If it senses anything, it attacks immediately.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Quick to anger, it stabs enemies with its horn to inject a powerful poison when it becomes agitated.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has a violent disposition and stabs foes with its horn, which oozes poison upon impact.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has a violent disposition and stabs foes with its horn, which oozes poison upon impact.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has a violent disposition and stabs foes with its horn, which oozes poison upon impact.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has a violent disposition and stabs foes with its horn, which oozes poison upon impact.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It raises its big ears to check its surroundings. If it senses anything, it attacks immediately.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"An aggressive Pokémon that is quick to attack. The horn on its head secretes a powerful venom.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Nidorino has a horn that is harder than a diamond. If it senses a hostile presence, all the barbs on its back bristle up at once, and it challenges the foe with all its might.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Nidorino has a horn that is harder than a diamond. If it senses a hostile presence, all the barbs on its back bristle up at once, and it challenges the foe with all its might.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its horn contains venom. If it stabs an enemy with the horn, the impact makes the poison leak out.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its horn contains venom. If it stabs an enemy with the horn, the impact makes the poison leak out.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With a horn that's harder than diamond, this Pokémon goes around shattering boulders as it searches for a moon stone.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's nervous and quick to act aggressively. The potency of its poison increases along with the level of adrenaline present in its body.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a violent disposition and stabs foes with its horn, which oozes venom upon impact.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has a violent disposition and stabs foes with its horn, which oozes venom upon impact.\"\n    }\n  ],\n  \"34\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"It uses its powerful tail in battle to smash, constrict, then break the prey's bones.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"It uses its powerful tail in battle to smash, constrict, then break the prey's bones.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its steel-like hide adds to its powerful tackle. Its horns are so hard, they can pierce a diamond.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Has a rock-hard hide that is worn like armor. The long horn on its head is sharp and highly venomous.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It swings its big tail around during battle. If its foe flinches, it will charge with its sturdy body.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its tail is thick and powerful. If it binds an enemy, it can snap the victim's spine quite easily.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It uses its thick arms, legs and tail to attack forcefully. Melee combat is its specialty.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It swings its big tail around during battle. If its foe flinches, it will charge with its sturdy body.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Nidoking's thick tail packs enormously destructive power. With one swing, it can topple a metal transmission tower. Once this Pokémon goes on a rampage, there is no stopping it.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Nidoking's thick tail packs enormously destructive power. With one swing, it can topple a metal transmission tower. Once this Pokémon goes on a rampage, there is no stopping it.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Nidoking's thick tail packs enormously destructive power capable of toppling a metal transmission tower. Once it goes on a rampage, there is no stopping it.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is recognized by its rock-hard hide and its extended horn. Be careful with the horn as it contains venom.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It uses its powerful tail in battle to smash, constrict, then break the prey's bones.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It swings its big tail around during battle. If its foe flinches, it will charge with its sturdy body.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its tail is thick and powerful. If it binds an enemy, it can render the victim helpless quite easily.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is recognized by its rock-hard hide and its extended horn. Be careful with the horn, as it contains venom.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Nidoking's thick tail packs enormously destructive power. With one swing, it can topple a metal transmission tower. Once this Pokémon goes on a rampage, there is no stopping it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Nidoking's thick tail packs enormously destructive power. With one swing, it can topple a metal transmission tower. Once this Pokémon goes on a rampage, there is no stopping it.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its steel-like hide adds to its powerful tackle. Its horns are so hard, they can pierce a diamond.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its steel-like hide adds to its powerful tackle. Its horns are so hard, they can pierce a diamond.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it goes on a rampage, it's impossible to control. But in the presence of a Nidoqueen it's lived with for a long time, Nidoking calms down.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Nidoking prides itself on its strength. It's forceful and spirited in battle, making use of its thick tail and diamond-crushing horn.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"One swing of its mighty tail can snap a telephone pole as if it were a matchstick.\"\n    }\n  ],\n  \"35\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is said that happiness will come to those who see a gathering of Clefairy dancing under a full moon.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its magical and cute appeal has many admirers. It is rare and found only in certain areas.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its magical and cute appeal has many admirers. It is rare and found only in certain areas.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Adored for their cute looks and playfulness. They are thought to be rare, as they do not appear often.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Because of its adorable nature, it is in high demand as a pet. However, it is rare and found only in limited areas.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The moonlight that it stores in the wings on its back apparently gives it the ability to float in midair.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its adorable behavior and cry make it highly popular. However, this cute Pokémon is rarely found.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Though rarely seen, it becomes easier to spot, for some reason, on the night of a full moon.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The moonlight that it stores in the wings on its back apparently gives it the ability to float in midair.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"On every night of a full moon, groups of this Pokémon come out to play. When dawn arrives, the tired Clefairy return to their quiet mountain retreats and go to sleep nestled up against each other.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"On every night of a full moon, groups of this Pokémon come out to play. When dawn arrives, the tired Clefairy return to their quiet mountain retreats and go to sleep nestled up against each other.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"On every night of a full moon, they come out to play. When dawn arrives, the tired Clefairy go to sleep nestled up against each other in deep and quiet mountains.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its adorable appearance makes it popular as a pet. However, it is rare and difficult to find.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"With its magical and cute appeal, it has many admirers. It is rare and found only in certain areas.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Thought to live with others on quiet mountains, it is popular for its adorable nature.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It flies using the wings on its back to collect moonlight. This Pokémon is difficult to find.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said that happiness will come to those who see a gathering of Clefairy dancing under a full moon.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The moonlight that it stores in the wings on its back apparently gives it the ability to float in midair.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its adorable behavior and cry make it highly popular. However, this cute Pokémon is rarely found.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said that happiness will come to those who see a gathering of Clefairy dancing under a full moon.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said that happiness will come to those who see a gathering of Clefairy dancing under a full moon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"On nights with a full moon, Clefairy gather from all over and dance. Bathing in moonlight makes them float.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"On nights with a full moon, Clefairy gather from all over and dance. Bathing in moonlight makes them float.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said that happiness will come to those who see a gathering of Clefairy dancing under a full moon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The moonlight that it stores in the wings on its back apparently gives it the ability to float in midair.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"On every night of a full moon, groups of this Pokémon come out to play. When dawn arrives, the tired Clefairy return to their quiet mountain retreats and go to sleep nestled up against each other.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"On every night of a full moon, groups of this Pokémon come out to play. When dawn arrives, the tired Clefairy return to their quiet mountain retreats and go to sleep nestled up against each other.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its adorable behavior and appearance make it popular with men and women, young and old. Its numbers are few, however.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"On nights with a full moon, they gather together and dance. The surrounding area is enveloped in an abnormal magnetic field.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They're popular, but they're rare. Trainers who show them off recklessly may be targeted by thieves.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Bathed in moonlight, its wings glow faintly. Without even flapping, Clefairy rises into the air, where it dances around.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Adored for their cute looks and playfulness. They are thought to be rare, as they do not appear often.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Adored for their cute looks and playfulness. They are thought to be rare, as they do not appear often.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is said that happiness will come to those who see a gathering of Clefairy dancing under a full moon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its adorable behavior and cry make it highly popular. However, this cute Pokémon is rarely found.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Thought to live with others on quiet mountains, it is popular for its adorable nature.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Moonlight gathers on the wings on Clefairy's back, allowing Clefairy to fly. This Pokémon is difficult to find.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It can be found in quiet mountain areas on a full moon's night. Its dancing and its tiny, faintly glowing wings confer upon it a lovely fairylike quality.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"On nights with a full moon, Clefairy gather from all over and dance. Bathing in moonlight makes them float.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"On nights with a full moon, they gather together and dance. The surrounding area is enveloped in an abnormal magnetic field.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The moonlight that it stores in the wings on its back apparently gives it the ability to float in midair.\"\n    }\n  ],\n  \"36\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Said to live in quiet, remote mountains, this type of fairy has a strong aversion to being seen.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A timid fairy Pokémon that is rarely seen. It will run and hide the moment it senses people.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A timid fairy Pokémon that is rarely seen. It will run and hide the moment it senses people.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"They appear to be very protective of their own world. It is a kind of fairy, rarely seen by people.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its ears are very sensitive, so it does not like loud noises or busy places. Will not come out in front of people.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"With its acute hearing, it can pick up sounds from far away. It usually hides in quiet places.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its very sensitive ears lets it distinguish distant sounds. As a result, it prefers quiet places.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Said to live in quiet, remote mountains, this type of fairy has a strong aversion to being seen.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"With its acute hearing, it can pick up sounds from far away. It usually hides in quiet places.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Clefable moves by skipping lightly as if it were flying using its wings. Its bouncy step lets it even walk on water. It is known to take strolls on lakes on quiet, moonlit nights.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Clefable moves by skipping lightly as if it were flying using its wings. Its bouncy step lets it even walk on water. It is known to take strolls on lakes on quiet, moonlit nights.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Clefable uses its wings to skip lightly as if it were flying. Its bouncy step lets it even walk on water. On quiet, moonlit nights, it strolls on lakes.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has an acute sense of hearing. It can easily hear a pin being dropped nearly 1,100 yards away.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A timid fairy Pokémon that is rarely seen, it will run and hide the moment it senses people.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Rarely seen by people, it is said to be drawn by the full moon to play at deserted lakes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its hearing is so acute it can hear a pin drop over half a mile away. It lives on quiet mountains.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is very wary and rarely shows itself to people. Its ears can hear a pin drop over half a mile away.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"With its acute hearing, it can pick up sounds from far away. It usually hides in quiet places.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its very sensitive ears let it distinguish distant sounds. As a result, it prefers quiet places.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is very wary and rarely shows itself to people. Its ears can hear a pin drop over half a mile away.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is very wary and rarely shows itself to people. Its ears can hear a pin drop over half a mile away.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Their ears are sensitive enough to hear a pin drop from over a mile away, so they're usually found in quiet places.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Their ears are sensitive enough to hear a pin drop from over a mile away, so they're usually found in quiet places.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its hearing is so acute it can hear a pin drop over half a mile away. It lives on quiet mountains.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A timid fairy Pokémon that is rarely seen, it will run and hide the moment it senses people.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Clefable moves by skipping lightly as if it were flying using its wings. Its bouncy step lets it even walk on water. It is known to take strolls on lakes on quiet, moonlit nights.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Clefable moves by skipping lightly as if it were flying using its wings. Its bouncy step lets it even walk on water. It is known to take strolls on lakes on quiet, moonlit nights.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They don't like to reveal themselves in front of people. They live quietly in packs deep in the mountains.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"According to tradition, people who see a pair of Clefable skipping by can look forward to a happy marriage.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It can't help but hear a pin drop from over half a mile away, so it lives deep in the mountains where there aren't many people or Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Some scientists believe that it gazes intently at the sky on nights with a full moon because it's homesick.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"They appear to be very protective of their own world. It is a kind of fairy, rarely seen by people.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"They appear to be very protective of their own world. It is a kind of fairy, rarely seen by people.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A timid fairy Pokémon that is rarely seen, it will run and hide the moment it senses people.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Their ears are sensitive enough to hear a pin drop from over a mile away, so they're usually found in quiet places.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Rarely seen by people, it is said to be drawn by the full moon to play at deserted lakes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its hearing is so acute it can hear a pin drop over half a mile away. It lives on quiet mountains.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Legend says that on clear, quiet nights, it listens for the voices of its kin living on the moon. I, too, often think of my homeland, so far away.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Said to live in quiet, remote mountains, this type of fairy has a strong aversion to being seen.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has an acute sense of hearing. It can easily hear a pin being dropped nearly 1,100 yards away.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A timid fairy Pokémon that is rarely seen, it will run and hide the moment it senses people.\"\n    }\n  ],\n  \"37\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"From its mouth spew flames that seem to resemble the spirits of the deceased. Some people mistakenly think this fire is a ghost.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"At the time of birth, it has just one tail. The tail splits from its tip as it grows older.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"At the time of birth, it has just one tail. The tail splits from its tip as it grows older.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Both its fur and its tails are beautiful. As it grows, the tails split and form more tails.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A single, white-colored tail splits into six beautiful tails. As it grows older, it grows even more tails.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"As it develops, its single white tail gains color and splits into six. It is quite warm and cuddly.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If it is attacked by an enemy that is stronger than itself, it feigns injury to fool the enemy and escapes.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"As its body grows larger, its six warm tails become more beautiful, with a more luxurious coat of fur.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"As it develops, its single white tail gains color and splits into six. It is quite warm and cuddly.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"At the time of its birth, Vulpix has one white tail. The tail separates into six if this Pokémon receives plenty of love from its Trainer. The six tails become magnificently curled.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Inside Vulpix's body burns a flame that never goes out. During the daytime, when the temperatures rise, this Pokémon releases flames from its mouth to prevent its body from growing too hot.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It can freely control fire, making fiery orbs fly like will-o'-the-wisps. Just before evolution, its six tails grow hot as if on fire.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"While young, it has six gorgeous tails. When it grows, several new tails are sprouted.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When it is born, it has just one snow-white tail. The tail splits from its tip as it grows older.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It controls balls of fire. As it grows, its six tails split from their tips to make more tails.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It controls balls of fire. As it grows, its six tails split from their tips to make more tails.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It controls balls of fire. As it grows, its six tails split from their tips to make more tails.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"As it develops, its single white tail gains color and splits into six. It is quite warm and cuddly.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it is attacked by an enemy that is stronger than itself, it feigns injury to fool the enemy and escapes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It controls balls of fire. As it grows, its six tails split from their tips to make more tails.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It controls balls of fire. As it grows, its six tails split from their tips to make more tails.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"As each tail grows, its fur becomes more lustrous. When held, it feels slightly warm.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"As each tail grows, its fur becomes more lustrous. When held, it feels slightly warm.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When it is born, it has just one snow-white tail. The tail splits from its tip as it grows older.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"While young, it has six gorgeous tails. When it grows, several new tails are sprouted.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"At the time of its birth, Vulpix has one white tail. The tail separates into six if this Pokémon receives plenty of love from its Trainer. The six tails become magnificently curled.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Inside Vulpix's body burns a flame that never goes out. During the daytime, when the temperatures rise, this Pokémon releases flames from its mouth to prevent its body from growing too hot.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its beautiful fur and tails have made it very popular. As it grows, its tails split to form more tails.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"From its mouth spew flames that seem to resemble the spirits of the deceased. Some people mistakenly think this fire is a ghost.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its beautiful tails have made it very popular. However, if it's not brushed diligently, it will be a mass of tangles before you know it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It manipulates balls of fire to catch its prey. If you raise one from when it's young, it will grow close to you like a puppy Pokémon.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Both its fur and its tails are beautiful. As it grows, the tails split and form more tails.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Both its fur and its tails are beautiful. As it grows, the tails split and form more tails.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"While young, it has six gorgeous tails. When it grows, several new tails are sprouted.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"As each tail grows, its fur becomes more lustrous. When held, it feels slightly warm.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It controls balls of fire. As it grows, its six tails split from their tips to make more tails.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It controls balls of fire. As it grows, its six tails split from their tips to make more tails.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"In its belly burns a fire, which Vulpix spits out in the form of fireballs. When young, this Pokémon has but one white tail. As the Pokémon matures, this single tail splits into six.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If it is attacked by an enemy that is stronger than itself, it feigns injury to fool the enemy and escapes.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"As its body grows larger, its six warm tails become more beautiful, with a more luxurious coat of fur.\"\n    }\n  ],\n  \"38\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has nine long tails and fur that gleams gold. It is said to live for 1,000 years.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Very smart and very vengeful. Grabbing one of its many tails could result in a 1000-year curse.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Very smart and very vengeful. Grabbing one of its many tails could result in a 1000-year curse.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"According to an enduring legend, 9 noble saints were united and reincarnated as this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It is extremely vindictive. It is said to lay a 1,000-year long curse if its tail is pulled as a joke.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Some legends claim that each of its nine tails has its own unique type of special mystical power.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its nine beautiful tails are filled with a wondrous energy that could keep it alive for 1,000 years.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is said to live a thousand years, and each of its tails is loaded with supernatural powers.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Some legends claim that each of its nine tails has its own unique type of special mystical power.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ninetales casts a sinister light from its bright red eyes to gain total control over its foe's mind. This Pokémon is said to live for a thousand years.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Legend has it that Ninetales came into being when nine wizards possessing sacred powers merged into one. This Pokémon is highly intelligent -it can understand human speech.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It has long been said that each of the nine tails embody an enchanted power. A long-lived Ninetales will have fur that shines like gold.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has nine long tails and fur that gleams gold. It is said to live for 1,000 years.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Very smart and very vengeful. Grabbing one of its many tails could result in a 1,000-year curse.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its nine tails are said to be imbued with a mystic power. It can live for a thousand years.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its nine tails are said to be imbued with a mystic power. It can live for a thousand years.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its nine tails are said to be imbued with a mystic power. It can live for a thousand years.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Some legends claim that each of its nine tails has its own unique type of special mystical power.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its nine beautiful tails are filled with a wondrous energy that could keep it alive for 1,000 years.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its nine tails are said to be imbued with a mystic power. It can live for a thousand years.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its nine tails are said to be imbued with a mystic power. It can live for a thousand years.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Each of its nine tails is imbued with supernatural power, and it can live for a thousand years.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Each of its nine tails is imbued with supernatural power, and it can live for a thousand years.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has nine long tails and fur that gleams gold. It is said to live for 1,000 years.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Very smart and very vengeful. Grabbing one of its many tails could result in a 1,000-year curse.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ninetales casts a sinister light from its bright red eyes to gain total control over its foe's mind. This Pokémon is said to live for a thousand years.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Legend has it that Ninetales came into being when nine wizards possessing sacred powers merged into one. This Pokémon is highly intelligent—it can understand human speech.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Legend has it that this mystical Pokémon was formed when nine saints coalesced into one.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Said to live for a thousand years, this Pokémon uses its supernatural abilities to manipulate fire. It can burn its prey to a crisp as it pleases.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It is vindictive and relentless by nature. Those who cross it even once will be cursed for a thousand years, along with their descendants.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The flickering flames it spews from its mouth leave its opponents hypnotized. Then, this extremely intelligent Pokémon attacks.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"According to an enduring legend, nine noble saints were united and reincarnated as this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"According to an enduring legend, nine noble saints were united and reincarnated as this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is said to live 1,000 years, and each of its tails is loaded with supernatural powers.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Very smart and very vengeful. Grabbing one of its many tails could result in a 1,000-year curse.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its nine tails are said to be imbued with a mystic power. The Pokémon is said to live for 1,000 years.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its nine tails are said to be imbued with a mystic power. The Pokémon is said to live for 1,000 years.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The coat of gleaming golden fur is quite magnificent. This species is said to store sacred power in its nine long tails and to live for a millennium.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Some legends claim that each of its nine tails has its own unique type of special mystical power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has nine long tails and fur that gleams gold. It is said to live for 1,000 years.\"\n    }\n  ],\n  \"39\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"When its huge eyes waver, it sings a mysteriously soothing melody that lulls its enemies to sleep.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When its huge eyes light up, it sings a mysteriously soothing melody that lulls its enemies to sleep.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When its huge eyes light up, it sings a mysteriously soothing melody that lulls its enemies to sleep.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Uses its alluring eyes to enrapture its foe. It then sings a pleasing melody that lulls the foe to sleep.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It mesmerizes with its large, round eyes and sings a soothing melody. Pokémon hearing this song fall asleep.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If it inflates to Sing a lullaby, it can perform longer and cause sure drowsiness in its audience.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Looking into its cute, round eyes causes it to sing a relaxing melody, inducing its enemies to sleep.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It rolls its cute eyes as it sings a soothing lullaby. Its gentle song puts anyone who hears it to sleep.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If it inflates to Sing a lullaby, it can perform longer and cause sure drowsiness in its audience.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Jigglypuff's vocal chords can freely adjust the wavelength of its voice. This Pokémon uses this ability to sing at precisely the right wavelength to make its foes most drowsy.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When this Pokémon sings, it never pauses to breathe. If it is in a battle against an opponent that does not easily fall asleep, Jigglypuff cannot breathe, endangering its life.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Nothing can avoid falling asleep hearing a Jigglypuff's song. The sound waves of its singing voice match the brain waves of someone in a deep sleep.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It captivates foes with its huge, round eyes, then lulls them to sleep by singing a soothing melody.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When its huge eyes waver, it sings a mysteriously soothing melody that lulls its enemies to sleep.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When it wavers its big, round eyes, it begins singing a lullaby that makes everyone drowsy.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When it wavers its big, round eyes, it begins singing a lullaby that makes everyone drowsy.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When it wavers its big, round eyes, it begins singing a lullaby that makes everyone drowsy.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it inflates to sing a lullaby, it can perform longer and cause sure drowsiness in its audience.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Looking into its cute, round eyes causes it to sing a relaxing melody, inducing its enemies to sleep.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it wavers its big, round eyes, it begins singing a lullaby that makes everyone drowsy.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When it wavers its big, round eyes, it begins singing a lullaby that makes everyone drowsy.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Looking into its cute, round eyes makes it start singing a song so pleasant listeners can't help but fall asleep.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Looking into its cute, round eyes makes it start singing a song so pleasant listeners can't help but fall asleep.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It captivates foes with its huge, round eyes, then lulls them to sleep by singing a soothing melody.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it inflates to sing a lullaby, it can perform longer and cause sure drowsiness in its audience.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Jigglypuff's vocal cords can freely adjust the wavelength of its voice. This Pokémon uses this ability to sing at precisely the right wavelength to make its foes most drowsy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When this Pokémon sings, it never pauses to breathe. If it is in a battle against an opponent that does not easily fall asleep, Jigglypuff cannot breathe, endangering its life.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It hugely inflates its stomach and sings a mysterious melody. If you hear this melody, you'll become sleepy right away.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Jigglypuff possess a vocal range that exceeds 12 octaves, but each individual's singing skill depends on its own effort.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Recordings of Jigglypuff's strange lullabies can be purchased from department stores. These CDs can be found near the bedding area.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The songs they sing are totally different depending on the region they live in. Some even sound like they're shouting!\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Uses its cute round eyes to enrapture its foe. It then sings a pleasing melody that lulls the foe to sleep.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Uses its cute round eyes to enrapture its foe. It then sings a pleasing melody that lulls the foe to sleep.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Jigglypuff has top-notch lung capacity, even by comparison to other Pokémon. It won't stop singing its lullabies until its foes fall asleep.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"By freely changing the wavelength of its voice, Jigglypuff sings a mysterious melody sure to make any listener sleepy.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When it wavers its big, round eyes, it begins singing a lullaby that makes everyone drowsy.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When it wavers its big, round eyes, it begins singing a lullaby that makes everyone drowsy.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When its huge eyes waver, it sings a mysteriously soothing melody that lulls its enemies to sleep.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If it inflates to sing a lullaby, it can perform longer and cause sure drowsiness in its audience.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Looking into its cute, round eyes prompts it to start singing a song so pleasant that listeners can't help but fall asleep.\"\n    }\n  ],\n  \"40\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"When it gets angry, it inhales with all its might, and its body gradually inflates. Sometimes they can grow 20 times larger!\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The body is soft and rubbery. When angered, it will suck in air and inflate itself to an enormous size.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The body is soft and rubbery. When angered, it will suck in air and inflate itself to an enormous size.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its body is full of elasticity. By inhaling deeply, it can continue to inflate itself without limit.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its soft and supple skin allows it to expand like a balloon. If it gets angry, it inhales and inflates itself steadily.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Their fur feels so good that if two of them snuggle together, they won't want to be separated.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It has a very fine fur. Take care not to make it angry, or it may inflate steadily and hit with a Body Slam.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The rich, fluffy fur that covers its body feels so good that anyone who feels it can't stop touching it.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Their fur feels so good that if two of them snuggle together, they won't want to be separated.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Wigglytuff has large, saucerlike eyes. The surfaces of its eyes are always covered with a thin layer of tears. If any dust gets in this Pokémon's eyes, it is quickly washed away.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Wigglytuff's body is very flexible. By inhaling deeply, this Pokémon can inflate itself seemingly without end. Once inflated, Wigglytuff bounces along lightly like a balloon.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its fur is the ultimate in luxuriousness. Sleeping alongside a Wigglytuff is simply divine. Its body expands seemingly without end when it inhales.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its fur is extremely fine, dense, and supple. The exquisitely pleasant fur conveys an image of luxury.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The body is soft and rubbery. When angered, it will suck in air and inflate itself to an enormous size.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its fine fur feels sublime to the touch. It can expand its body by inhaling air.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its fine fur feels sublime to the touch. It can expand its body by inhaling air.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its fine fur feels sublime to the touch. It can expand its body by inhaling air.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Their fur feels so good that if two of them snuggle together, they won't want to be separated.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has a very fine fur. Take care not to make it angry, or it may inflate steadily and hit with a body slam.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its fine fur feels sublime to the touch. It can expand its body by inhaling air.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its fine fur feels sublime to the touch. It can expand its body by inhaling air.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its fine fur feels so pleasant, those who accidentally touch it cannot take their hands away.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its fine fur feels so pleasant, those who accidentally touch it cannot take their hands away.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Their fur feels so good that if two of them snuggle together, they won't want to be separated.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The body is soft and rubbery. When angered, it will suck in air and inflate itself to an enormous size.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Wigglytuff has large, saucerlike eyes. The surfaces of its eyes are always covered with a thin layer of tears. If any dust gets in this Pokémon's eyes, it is quickly washed away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Wigglytuff's body is very flexible. By inhaling deeply, this Pokémon can inflate itself seemingly without end. Once inflated, Wigglytuff bounces along lightly like a balloon.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It sheds its fine fur when the seasons change. The fur is gathered and spun into a luxurious yarn.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As it inhales, it expands...and expands...and expands. Wigglytuff compete to see which one can inflate itself the most.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Thanks to its bouncy body and fine fur, this Pokémon is sought after. Holding one in your arms while you sleep feels great.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it gets angry, it inhales with all its might, and its body gradually inflates. Sometimes they can grow 20 times larger!\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its body is very elastic. By inhaling deeply, it can continue to inflate itself without limit.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its body is very elastic. By inhaling deeply, it can continue to inflate itself without limit.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The more air it takes in, the more it inflates. If opponents catch it in a bad mood, it will inflate itself to an enormous size to intimidate them.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's proud of its fur, which is fine and delicate. In particular, the curl on its forehead has a texture that's perfectly heavenly.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its fine fur feels sublime to the touch. It can expand its body by inhaling air.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its fine fur feels sublime to the touch. It can expand its body by inhaling air.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has a very fine fur. Take care not to make it angry, or it may inflate steadily and hit with a body slam.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The rich, fluffy fur that covers its body feels so good that anyone who feels it can't stop touching it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon's fur feels so nice that if two Wigglytuff snuggle up against each other, they can't bring themselves to separate.\"\n    }\n  ],\n  \"41\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has no eyes. Instead, it relies on its ultrasonic cries for echolocation to flit about in darkness.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Forms colonies in perpetually dark places. Uses ultrasonic waves to identify and approach targets.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Forms colonies in perpetually dark places. Uses ultrasonic waves to identify and approach targets.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Emits ultrasonic cries while it flies. They act as a sonar used to check for objects in its way.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It has neither eyes nor a nose. It emits ultrasonic cries that bounce back to its large ears, enabling it to fly safely.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"While flying, it constantly emits ultrasonic waves from its mouth to check its surroundings.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Capable of flying safely in dark places, it emits ultrasonic cries to check for any obstacles.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"During the day, it gathers with others and hangs from the ceilings of old buildings and caves.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"While flying, it constantly emits ultrasonic waves from its mouth to check its surroundings.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Zubat remains quietly unmoving in a dark spot during the bright daylight hours. It does so because prolonged exposure to the sun causes its body to become slightly burned.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Zubat avoids sunlight because exposure causes it to become unhealthy. During the daytime, it stays in caves or under the eaves of old houses, sleeping while hanging upside down.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"While living in pitch-black caverns, their eyes gradually grew shut and deprived them of vision. They use ultrasonic waves to detect obstacles.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has no eyes. Instead, it relies on its ultrasonic cries for echo location to flit about in darkness.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It forms colonies in perpetually dark places and uses ultrasonic waves to identify and approach targets.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Even though it has no eyes, it can sense obstacles using ultrasonic waves it emits from its mouth.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Disliking sunlight, it sleeps deep in forests and caves until sundown.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It checks its surroundings and location using reflections of the ultrasonic waves from its mouth.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"While flying, it constantly emits ultrasonic waves from its mouth to check its surroundings.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Capable of flying safely in dark places, it emits ultrasonic cries to check for any obstacles.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It checks its surroundings and location using reflections of the ultrasonic waves from its mouth.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It checks its surroundings and location using reflections of the ultrasonic waves from its mouth.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It does not need eyes, because it emits ultrasonic waves to check its surroundings while it flies.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It does not need eyes, because it emits ultrasonic waves to check its surroundings while it flies.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Even though it has no eyes, it can sense obstacles using ultrasonic waves it emits from its mouth.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has no eyes. Instead, it relies on its ultrasonic cries for echolocation to flit about in darkness.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Zubat remains quietly unmoving in a dark spot during the bright daylight hours. It does so because prolonged exposure to the sun causes its body to become slightly burned.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Zubat avoids sunlight because exposure causes it to become unhealthy. During the daytime, it stays in caves or under the eaves of old houses, sleeping while hanging upside down.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It sleeps in caves during the day. It has no eyes, so to check its surroundings while flying, it emits ultrasonic waves.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When exposed to sunlight, they suffer burns. The frequency of their ultrasonic waves can differ slightly from colony to colony.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It has no eyeballs, so it can't see. It checks its surroundings via the ultrasonic waves it emits from its mouth.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Their skin is so thin that they'll be burned if sunlight hits them. When it gets cold out, they gather together to warm one another's bodies.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Emits ultrasonic cries while it flies. They act as a sonar used to check for objects in its way.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Emits ultrasonic cries while it flies. They act as a sonar used to check for objects in its way.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It emits ultrasonic waves from its mouth to check its surroundings. Even in tight caves, Zubat flies around with skill.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Zubat live in caves, down where the sun's light won't reach. In the morning, they gather together to keep each other warm as they sleep.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Even though it has no eyes, it can sense obstacles using ultrasonic waves it emits from its mouth.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Disliking sunlight, it sleeps deep in forests and caves until sundown.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Makes its home in gloomy caves. Atrophied eyes have left this Pokémon blind, so it scans its surroundings via sound waves that it emits from its mouth as it flies.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It sleeps in caves during the day. It has no eyes, so it emits ultrasonic waves to check its surroundings while flying.\"\n    }\n  ],\n  \"42\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its feet are tiny, but this Pokémon walks skillfully. It sneaks up on sleeping prey before sinking in its fangs and slurping up blood.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Once it strikes, it will not stop draining energy from the victim even if it gets too heavy to fly.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Once it strikes, it will not stop draining energy from the victim even if it gets too heavy to fly.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It attacks in a stealthy manner, without warning. Its sharp fangs are used to bite and suck blood.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Bites its prey and feeds on the victim's energy. Its own blood type changes to that of its victim.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"However hard its victim's hide may be, it punctures with sharp fangs and gorges itself with blood.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It can drink more than 10 ounces of blood at once. If it has too much, it gets heavy and flies clumsily.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it plunges its fangs into its prey, it instantly draws and gulps down more than ten ounces of blood.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"However hard its victim's hide may be, it punctures with sharp fangs and gorges itself with blood.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Golbat loves to drink the blood of living things. It is particularly active in the pitch black of night. This Pokémon flits around in the night skies, seeking fresh blood.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Golbat bites down on prey with its four fangs and drinks the victim's blood. It becomes active on inky dark moonless nights, flying around to attack people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its fangs easily puncture even thick animal hide. It loves to feast on the blood of people and Pokémon. It flits about in darkness and strikes from behind.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It clamps down on its prey with needle-sharp fangs and drains over 10 ounces of blood in one gulp.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Once it bites, it will not stop draining energy from the victim even if it gets too heavy to fly.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves the blood of humans and Pokémon. It flies around at night in search of neck veins.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Once it starts sucking blood, it does not stop until it is full. It flies at night in search of prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its sharp fangs puncture the toughest of hides and have small holes for greedily sucking blood.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"However hard its victim's hide may be, it punctures with sharp fangs and gorges itself with blood.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It can drink more than 10 ounces of blood at once. If it has too much, it gets heavy and flies clumsily.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its sharp fangs puncture the toughest of hides and have small holes for greedily sucking blood.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its sharp fangs puncture the toughest of hides and have small holes for greedily sucking blood.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Flitting around in the dead of night, it sinks its fangs into its prey and drains a nearly fatal amount of blood.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Flitting around in the dead of night, it sinks its fangs into its prey and drains a nearly fatal amount of blood.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Once it bites, it will not stop draining energy from the victim even if it gets too heavy to fly.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Once it starts sucking blood, it does not stop until it is full. It flies at night in search of prey.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Golbat loves to drink the blood of living things. It is particularly active in the pitch black of night. This Pokémon flits around in the night skies, seeking fresh blood.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Golbat bites down on prey with its four fangs and drinks the victim's blood. It becomes active on inky dark moonless nights, flying around to attack people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its thick fangs are hollow like straws, making them unexpectedly fragile. These fangs are specialized for sucking blood.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Sometimes they drink so much blood, they can't fly anymore. Then they fall to the ground and become food for other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Every once in a while, you'll see a Golbat that's missing some fangs. This happens when hunger drives it to try biting a Steel-type Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They can suck down over 10 ounces of blood in one go. They have been known to drink so much blood that they can no longer fly.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It attacks in a stealthy manner, without warning. Its sharp fangs are used to bite and to suck blood.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It attacks in a stealthy manner, without warning. Its sharp fangs are used to bite and to suck blood.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It loves to drink other creatures' blood. It's said that if it finds others of its kind going hungry, it sometimes shares the blood it's gathered.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its feet are tiny, but this Pokémon walks skillfully. It sneaks up on sleeping prey before sinking in its fangs and slurping up blood.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It loves the blood of humans and Pokémon. It flies around at night in search of neck veins.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Once it starts sucking blood, it does not stop until it is full. It flies at night in search of prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It sinks its sharp fangs into other creatures and slurps up their blood. A closer look at the fangs reveals that they are hollow and akin to straws.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Golbat punctures even the hardest of hides with its sharp fangs, then gorges itself on its victims' blood.\"\n    }\n  ],\n  \"43\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its scientific name is Oddium wanderus. It is said to cover distances as far as 1,000 feet when night falls, walking on its two roots.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"During the day, it keeps its face buried in the ground. At night, it wanders around sowing its seeds.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"During the day, it keeps its face buried in the ground. At night, it wanders around sowing its seeds.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It may be mistaken for a clump of weeds. If you try to yank it out of the ground, it shrieks horribly.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Burrows underground in the day, exposing only its leaves. It is said to scream loudly if anyone tries to yank it out.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Awakened by moonlight, it roams actively at night. In the day, it stays quietly underground.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If exposed to moonlight, it starts to move. It roams far and wide at night to scatter its seeds.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"During the day, it stays in the cold underground to avoid the sun. It grows by bathing in moonlight.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Awakened by moonlight, it roams actively at night. In the day, it stays quietly underground.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"During the daytime, Oddish buries itself in soil to absorb nutrients from the ground using its entire body. The more fertile the soil, the glossier its leaves become.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Oddish searches for fertile, nutrient-rich soil, then plants itself. During the daytime, while it is planted, this Pokémon's feet are thought to change shape and become similar to the roots of trees.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon grows by absorbing moonlight. During the daytime, it buries itself in the ground, leaving only its leaves exposed to avoid detection by its enemies.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its scientific name is \\\"Oddium Wanderus.\\\" At night, it is said to walk nearly 1,000 feet on its two roots.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"During the day, it keeps its face buried in the ground. At night, it wanders around sowing its seeds.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It often plants its root feet in the ground during the day and sows seeds as it walks about at night.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It often plants its root feet in the ground during the day and sows seeds as it walks about at night.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It often plants its root feet in the ground during the day and sows seeds as it walks about at night.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Awakened by moonlight, it roams actively at night. In the day, it stays quietly underground.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If exposed to moonlight, it starts to move. It roams far and wide at night to scatter its seeds.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It often plants its root feet in the ground during the day and sows seeds as it walks about at night.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It often plants its root feet in the ground during the day and sows seeds as it walks about at night.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It often plants its root feet in the ground during the day and sows seeds as it walks about at night.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It often plants its root feet in the ground during the day and sows seeds as it walks about at night.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"During the day, it stays in the cold underground to avoid the sun. It grows by bathing in moonlight.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its scientific name is \\\"Oddium Wanderus.\\\" At night, it is said to walk nearly 1,000 feet on its two roots. \"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"During the daytime, Oddish buries itself in soil to absorb nutrients from the ground using its entire body. The more fertile the soil, the glossier its leaves become.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Oddish searches for fertile, nutrient-rich soil, then plants itself. During the daytime, while it is planted, this Pokémon's feet are thought to change shape and become similar to the roots of trees.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It may be mistaken for a clump of weeds. If you try to yank it out of the ground, it shrieks horribly.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It may be mistaken for a clump of weeds. If you try to yank it out of the ground, it shrieks horribly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If exposed to moonlight, it starts to move. It roams far and wide at night to scatter its seeds.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"During the day, it stays in the cold underground to avoid the sun. It grows by bathing in moonlight.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It often plants its root feet in the ground during the day and sows seeds as it walks about at night.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It often plants its root feet in the ground during the day and sows seeds as it walks about at night.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its scientific name is Oddium wanderus. It is said to cover distances as far as 1,000 feet when night falls, walking on its two roots.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it is woken by moonlight, it wanders about. But during the day, it stays still underground.\"\n    }\n  ],\n  \"44\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The nectar it drools from its mouth smells so atrocious that it can make noses curl from more than a mile away.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The fluid that oozes from its mouth isn't drool. It is a nectar that is used to attract prey.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The fluid that oozes from its mouth isn't drool. It is a nectar that is used to attract prey.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Smells incredibly foul! However, around 1 out of 1,000 people enjoy sniffing its nose-bending stink.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The horrible-smelling pistil of this flower stinks over a mile away. Unwittingly inhaled, it can cause fainting.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"What appears to be drool is actually sweet honey. It is very sticky and clings stubbornly if touched.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It secretes a sticky, drool-like honey. Although sweet, it smells too repulsive to get very close.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The smell from its drool-like syrup and the pollen on its petals is so bad, it may make opponents faint.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"What appears to be drool is actually sweet honey. It is very sticky and clings stubbornly if touched.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Gloom releases a foul fragrance from the pistil of its flower. When faced with danger, the stench worsens. If this Pokémon is feeling calm and secure, it does not release its usual stinky aroma.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"From its mouth Gloom drips honey that smells absolutely horrible. Apparently, it loves the horrid stench. It sniffs the noxious fumes and then drools even more of its honey.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A horribly noxious honey drools from its mouth. One whiff of the honey can result in memory loss. Some fans are said to enjoy this overwhelming stink, however.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its pistils exude an incredibly foul odor. The horrid stench can cause fainting at a distance of 1.25 miles.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The fluid that oozes from its mouth isn't drool. It is a nectar that is used to attract prey.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The honey it drools from its mouth smells so atrocious, it can curl noses more than a mile away.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The honey it drools from its mouth smells so atrocious, it can curl noses more than a mile away.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The honey it drools from its mouth smells so atrocious, it can curl noses more than a mile away.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"What appears to be drool is actually sweet honey. It is very sticky and clings stubbornly if touched.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It secretes a sticky, drool-like honey. Although sweet, it smells too repulsive to get very close.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The honey it drools from its mouth smells so atrocious, it can curl noses more than a mile away.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The honey it drools from its mouth smells so atrocious, it can curl noses more than a mile away.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The honey it drools from its mouth smells so atrocious, it can curl noses more than a mile away.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The honey it drools from its mouth smells so atrocious, it can curl noses more than a mile away.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Smells incredibly foul! However, around one out of a thousand people enjoy sniffing its nose-bending stink.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The honey it drools from its mouth smells so atrocious, it can curl noses more than a mile away.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Gloom releases a foul fragrance from the pistil of its flower. When faced with danger, the stench worsens. If this Pokémon is feeling calm and secure, it does not release its usual stinky aroma.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"From its mouth Gloom drips honey that smells absolutely horrible. Apparently, it loves the horrid stench. It sniffs the noxious fumes and then drools even more of its honey.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Smells incredibly foul! However, around one out of a thousand people enjoy sniffing its nose-bending stink.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Smells incredibly foul! However, around one out of a thousand people enjoy sniffing its nose-bending stink.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its pistils exude an incredibly foul odor. The horrid stench can cause fainting at a distance of 1.25 miles.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"What appears to be drool is actually sweet honey. It is very sticky and clings stubbornly if touched.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The nectar it drools from its mouth smells so atrocious that it can make noses curl from more than a mile away.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The nectar it drools from its mouth smells so atrocious that it can make noses curl from more than a mile away.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The fluid that oozes from its mouth isn't drool. It is a nectar that is used to attract prey.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It secretes a sticky, drool-like nectar. Though sweet, it smells too repulsive to get very close.\"\n    }\n  ],\n  \"45\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has the world's largest petals. With every step, the petals shake out heavy clouds of toxic pollen.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The larger its petals, the more toxic pollen it contains. Its big head is heavy and hard to hold up.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The larger its petals, the more toxic pollen it contains. Its big head is heavy and hard to hold up.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Flaps its broad flower petals to scatter its poisonous pollen. The flapping sound is very loud.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Scatters allergy-causing pollen from its broad petals. The larger the petals, the more pollen is scattered.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has the world's largest petals. With every step, the petals shake out heavy clouds of toxic pollen.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The bud bursts into bloom with a bang. It then starts scattering allergenic, poisonous pollen.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"By shaking its big petals, it scatters toxic pollen into the air, turning the air yellow.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has the world's largest petals. With every step, the petals shake out heavy clouds of toxic pollen.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Vileplume's toxic pollen triggers atrocious allergy attacks. That's why it is advisable never to approach any attractive flowers in a jungle, however pretty they may be.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Vileplume has the world's largest petals. They are used to attract prey that are then doused with toxic spores. Once the prey are immobilized, this Pokémon catches and devours them.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"In seasons when it produces more pollen, the air around a Vileplume turns yellow with the powder as it walks. The pollen is highly toxic and causes paralysis.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its petals are the largest in the world. It fiendishly scatters allergy-causing pollen from its petals.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The larger its petals, the more toxic pollen it contains. Its big head is heavy and hard to hold up.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its petals are the largest in the world. As it walks, it scatters extremely allergenic pollen.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its petals are the largest in the world. As it walks, it scatters extremely allergenic pollen.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its petals are the largest in the world. As it walks, it scatters extremely allergenic pollen.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has the world's largest petals. With every step, the petals shake out heavy clouds of toxic pollen.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The bud bursts into bloom with a bang. It then starts scattering allergenic, poisonous pollen.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its petals are the largest in the world. As it walks, it scatters extremely allergenic pollen.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its petals are the largest in the world. As it walks, it scatters extremely allergenic pollen.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its petals are the largest in the world. As it walks, it scatters extremely allergenic pollen.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its petals are the largest in the world. As it walks, it scatters extremely allergenic pollen.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The larger its petals, the more toxic pollen it contains. Its big head is heavy and hard to hold up.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has the world's largest petals. With every step, the petals shake out heavy clouds of toxic pollen.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Vileplume's toxic pollen triggers atrocious allergy attacks. That's why it is advisable never to approach any attractive flowers in a jungle, however pretty they may be.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Vileplume has the world's largest petals. They are used to attract prey that are then doused with toxic spores. Once the prey are immobilized, this Pokémon catches and devours them.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Flaps its broad flower petals to scatter its poisonous pollen. The flapping sound is very loud.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Flaps its broad flower petals to scatter its poisonous pollen. The flapping sound is very loud.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has the world's largest petals. With every step, the petals shake out heavy clouds of toxic pollen.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The larger its petals, the more toxic pollen it contains. Its big head is heavy and hard to hold up.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its petals are the largest in the world. As it walks, it scatters extremely allergenic pollen.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its petals are the largest in the world. As it walks, it scatters extremely allergenic pollen.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The bud bursts into bloom with a bang. It then starts scattering allergenic, poisonous pollen.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It fiendishly scatters allergenic pollen from its petals, which are the largest in the world.\"\n    }\n  ],\n  \"46\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Burrows under the ground to gnaw on tree roots. The mushrooms on its back absorb most of the nutrition.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Burrows to suck tree roots. The mushrooms on its back grow by drawing nutrients from the bug host.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Burrows to suck tree roots. The mushrooms on its back grow by drawing nutrients from the bug host.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Burrows under the ground to gnaw on tree roots. The mushrooms on its back absorb most of the nutrition.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Grows by sucking nutrients from the roots of trees. The mushrooms on its back grow by drawing extracts from the bug host.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is doused with mushroom spores when it is born. As its body grows, mushrooms sprout from its back.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"As its body grows large, oriental mushrooms named tochukaso start sprouting out of its back.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The tochukaso growing on this Pokémon's back orders it to extract juice from tree trunks.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is doused with mushroom spores when it is born. As its body grows, mushrooms sprout from its back.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Paras has parasitic mushrooms growing on its back called tochukaso. They grow large by drawing nutrients from this Bug Pokémon host. They are highly valued as a medicine for extending life.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Paras has parasitic mushrooms growing on its back called tochukaso. They grow large by drawing nutrients from this Bug Pokémon host. They are highly valued as a medicine for extending life.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Paras has parasitic tochukaso mushrooms growing on its back. They grow by drawing nutrients from the host. They are valued as a medicine for long life.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Growing out of the bug's back are mushrooms called tochukaso. The mushrooms grow with the bug host.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Burrows to suck tree roots. The mushrooms on its back grow by drawing nutrients from the bug host.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Mushrooms named tochukaso grow on its back. They grow along with the host PARAS.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Mushrooms named tochukaso grow on its back. They grow along with the host PARAS.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Mushrooms named tochukaso grow on its back. They grow along with the host PARAS.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is doused with mushroom spores when it is born. As its body grows, mushrooms sprout from its back.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"As its body grows, large mushrooms named tochukaso start sprouting out of its back.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Mushrooms named tochukaso grow on its back. They grow along with the host Paras.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Mushrooms named tochukaso grow on its back. They grow along with the host Paras.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Mushrooms named tochukaso grow on its back. They grow along with the host Paras.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Mushrooms named tochukaso grow on its back. They grow along with the host Paras.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Growing out of the bug's back are mushrooms called tochukaso. The mushrooms grow with the bug host.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Burrows under the ground to gnaw on tree roots. The mushrooms on its back absorb most of the nutrition.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Paras has parasitic mushrooms growing on its back called tochukaso. They grow large by drawing nutrients from this Bug Pokémon host. They are highly valued as a medicine for extending life.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Paras has parasitic mushrooms growing on its back called tochukaso. They grow large by drawing nutrients from this Bug Pokémon host. They are highly valued as a medicine for extending life.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"No matter how much it eats, the mushrooms growing on its back steal away most of the nutrients it consumes.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Mushrooms called tochukaso sprout from its back. They can be dried and powdered to make a medicine used to extend life.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Whether it's due to a lack of moisture or a lack of nutrients, in Alola the mushrooms on Paras don't grow up quite right.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The mushrooms, known as tochukaso, are controlling the bug. Even if the bug bugs the mushrooms, they tell it to bug off.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Burrows under the ground to gnaw on tree roots. The mushrooms on its back absorb most of the nutrition.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Burrows under the ground to gnaw on tree roots. The mushrooms on its back absorb most of the nutrition.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Mushrooms named tochukaso grow on its back. They grow along with the host Paras.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Mushrooms named tochukaso grow on its back. They grow along with the host Paras.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Sometimes seen at the foot of trees in humid forests. The mushrooms on its back—called tochukaso—are not present on infant specimens and instead emerge as Paras matures.\"\n    }\n  ],\n  \"47\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The bug host is drained of energy by the mushroom on its back. The mushroom appears to do all the thinking.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A host-parasite pair in which the parasite mushroom has taken over the host bug. Prefers damp places.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A host-parasite pair in which the parasite mushroom has taken over the host bug. Prefers damp places.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The bug host is drained of energy by the mushrooms on its back. They appear to do all the thinking.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The bug host is controlled by the mushrooms that scatter poisonous spores. The spores are sometimes used as medicine in China.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It stays mostly in dark, damp places, the preference not of the bug, but of the big mushrooms on its back.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The larger the mushroom on its back grows, the stronger the mushroom spores it scatters.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When nothing's left to extract from the bug, the mushrooms on its back leave spores on the bug's egg.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It stays mostly in dark, damp places, the preference not of the bug, but of the big mushrooms on its back.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Parasect is known to infest large trees en masse and drain nutrients from the lower trunk and roots. When an infested tree dies, they move onto another tree all at once.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Parasect is known to infest large trees en masse and drain nutrients from the lower trunk and roots. When an infested tree dies, they move onto another tree all at once.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Parasect are known to infest the roots of large trees en masse and drain nutrients. When an infested tree dies, they move onto another tree all at once.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It scatters toxic spores from the mushroom cap. In China, the spores are used as herbal medicine.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A host-parasite pair in which the parasite mushroom has taken over the host bug. Prefers damp places. \"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A mushroom grown larger than the host's body controls Parasect. It scatters poisonous spores.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is controlled by a mushroom grown larger than the bug body. It is said to prefer damp places.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A mushroom grown larger than the host's body controls Parasect. It scatters poisonous spores.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It stays mostly in dark, damp places, the preference not of the bug, but of the big mushroom on its back.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The larger the mushroom on its back grows, the stronger the mushroom spores it scatters.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A mushroom grown larger than the host's body controls Parasect. It scatters poisonous spores.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A mushroom grown larger than the host's body controls Parasect. It scatters poisonous spores.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A mushroom grown larger than the host's body controls Parasect. It scatters poisonous spores.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A mushroom grown larger than the host's body controls Parasect. It scatters poisonous spores.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A mushroom grown larger than the host's body controls Parasect. It scatters poisonous spores.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The larger the mushroom on its back grows, the stronger the mushroom spores it scatters.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Parasect is known to infest large trees en masse and drain nutrients from the lower trunk and roots. When an infested tree dies, they move onto another tree all at once.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Parasect is known to infest large trees en masse and drain nutrients from the lower trunk and roots. When an infested tree dies, they move onto another tree all at once.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The large mushroom on its back controls it. It often fights over territory with Shiinotic.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It scatters toxic spores from its mushroom cap. Once harvested, these spores can be steeped and boiled down to prepare herbal medicines.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The bug is mostly dead, with the mushroom on its back having become the main body. If the mushroom comes off, the bug stops moving.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its poisonous spores are also used in traditional medicine. Apparently, spores produced in Alola are not of very good quality.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The bug host is drained of energy by the mushroom on its back. The mushroom appears to do all the thinking.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The bug host is drained of energy by the mushroom on its back. The mushroom appears to do all the thinking.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Parasect is controlled by a mushroom that has grown larger than its host's body. The Pokémon scatters poisonous spores.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is controlled by the mushroom, which has grown larger than the bug body. It is said to prefer damp places.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Mushroom-lacking specimens of this Pokémon lie unmoving in the forest, lending credence to the hypothesis that the large mushroom is in control of Parasect's actions.\"\n    }\n  ],\n  \"48\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its large eyes act as radar. In a bright place, you can see that they are clusters of many tiny eyes.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Lives in the shadows of tall trees where it eats insects. It is attracted by light at night.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Lives in the shadows of tall trees where it eats insects. It is attracted by light at night.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its large eyes act as radars. In a bright place, you can see that they are clusters of many tiny eyes.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Uses its large, radar-like eyes to move around in darkness. It is instinctively attracted to light.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its eyes also function as radar units. It catches and eats small bugs that hide in darkness.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Poison oozes from all over its body. It catches and eats small bugs at night that are attracted by light.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The small bugs it eats appear only at night, so it sleeps in a hole in a tree until night falls.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its eyes also function as radar units. It catches and eats small bugs that hide in darkness.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Venonat is said to have evolved with a coat of thin, stiff hair that covers its entire body for protection. It possesses large eyes that never fail to spot even miniscule prey.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Venonat is said to have evolved with a coat of thin, stiff hair that covers its entire body for protection. It possesses large eyes that never fail to spot even miniscule prey.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its coat of thin, stiff hair that covers its entire body is said to have evolved for protection. Its large eyes never fail to spot even miniscule prey.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its eyes act as radar, enabling it to be active in darkness. The eyes can also shoot powerful beams.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Lives in the shadows of tall trees where it eats bugs. It is attracted by light at night.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its eyes also function as radar units. It catches and eats small bugs that hide in darkness.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Poison oozes from all over its body. It catches and eats small bugs at night that are attracted by light.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Lives in the shadows of tall trees where it eats bugs. It is attracted by light at night.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Venonat is said to have evolved with a coat of thin, stiff hair that covers its entire body for protection. It possesses large eyes that never fail to spot even minuscule prey.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Venonat is said to have evolved with a coat of thin, stiff hair that covers its entire body for protection. It possesses large eyes that never fail to spot even minuscule prey.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its large eyes act as radar. In a bright place, you can see that they are clusters of many tiny eyes.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its large eyes act as radar. In a bright place, you can see that they are clusters of many tiny eyes.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its big eyes are actually clusters of tiny eyes. At night, its kind is drawn by light.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Poison oozes from all over its body. It catches small bug Pokémon at night that are attracted by light.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its eyes act as radar, enabling it to be active in darkness. The eyes can also shoot powerful beams.\"\n    }\n  ],\n  \"49\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The wings are covered with dustlike scales. Every time it flaps its wings, it looses highly toxic dust.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The dust-like scales covering its wings are color coded to indicate the kinds of poison it has.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The dust-like scales covering its wings are color coded to indicate the kinds of poison it has.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The powdery scales on its wings are hard to remove. They also contain poison that leaks out on contact.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The powder on its wings is poisonous. It scatters the powder with every flap, so you may be poisoned if you are downwind.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When it attacks, it flaps its large wings violently to scatter its poisonous powder all around.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The powder on its wings is poisonous if it is dark in color. If it is light, it causes paralysis.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The scales it scatters will paralyze anyone who touches them, making that person unable to stand.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When it attacks, it flaps its large wings violently to scatter its poisonous powder all around.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Venomoth is nocturnal - it is a Pokémon that only becomes active at night. Its favorite prey are small insects that gather around streetlights, attracted by the light in the darkness.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Venomoth is nocturnal - it is a Pokémon that only becomes active at night. Its favorite prey are small insects that gather around streetlights, attracted by the light in the darkness.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Venomoth are nocturnal--they only are active at night. Their favorite prey are insects that gather around streetlights, attracted by the light in the darkness.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The wings are covered with dustlike scales. Every time it flaps its wings, it looses highly toxic dust.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The dustlike scales covering its wings are color-coded to indicate the kinds of poison it has.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It flutters its wings to scatter dustlike scales. The scales leach toxins if they contact skin.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It flutters its wings to scatter dustlike scales. The scales leach toxins if they contact skin.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It flutters its wings to scatter dustlike scales. The scales leach toxins if they contact skin.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it attacks, it flaps its large wings violently to scatter its poisonous powder all around.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The powder on its wings is poisonous if it is dark in hue. If it is light in hue, it causes paralysis.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It flutters its wings to scatter dustlike scales. The scales leach toxins if they contact skin.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It flutters its wings to scatter dustlike scales. The scales leach toxins if they contact skin.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It flutters its wings to scatter dustlike scales. The scales leach toxins if they contact skin.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It flutters its wings to scatter dustlike scales. The scales leach toxins if they contact skin.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The scales it scatters will paralyze anyone who touches them, making that person unable to stand.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The wings are covered with dustlike scales. Every time it flaps its wings, it looses highly toxic dust.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Venomoth is nocturnal—it is a Pokémon that only becomes active at night. Its favorite prey are small insects that gather around streetlights, attracted by the light in the darkness.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Venomoth is nocturnal—it is a Pokémon that only becomes active at night. Its favorite prey are small insects that gather around streetlights, attracted by the light in the darkness.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The powdery scales on its wings are hard to remove from skin. They also contain poison that leaks out on contact.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The powdery scales on its wings are hard to remove from skin. They also contain poison that leaks out on contact.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It flutters its wings to scatter dustlike scales. The scales leach toxins if they contact skin.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It flutters its wings to scatter dustlike scales. The scales leach toxins if they contact skin.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The wings are covered with dustlike scales. Every time it flaps its wings, it looses highly toxic dust.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it attacks, it flaps its large wings violently to scatter its poisonous powder all around.\"\n    }\n  ],\n  \"50\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It prefers dark places. It spends most of its time underground, though it may pop up in caves.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Lives about one yard underground where it feeds on plant roots. It sometimes appears above ground.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Lives about one yard underground where it feeds on plant roots. It sometimes appears above ground.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It prefers dark places. It spends most of its time underground, though it may pop up in caves.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its head pokes up approximately eight inches out of the ground. However, its real size remains a mystery to this day.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its skin is very thin. If it is exposed to light, its blood heats up, causing it to grow weak.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If a Diglett Digs through a field, it leaves the soil perfectly tilled and ideal for planting crops.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It digs underground and chews on tree roots, sticking its head out only when the sun isn't bright.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its skin is very thin. If it is exposed to light, its blood heats up, causing it to grow weak.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Diglett are raised in most farms. The reason is simple - wherever this Pokémon burrows, the soil is left perfectly tilled for planting crops. This soil is made ideal for growing delicious vegetables.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Diglett are raised in most farms. The reason is simple - wherever this Pokémon burrows, the soil is left perfectly tilled for planting crops. This soil is made ideal for growing delicious vegetables.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Diglett are raised in most farms. The reason is simple--wherever they burrow, the soil is left perfectly tilled for growing delicious crops.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It burrows through the ground at a shallow depth. It leaves raised earth in its wake, making it easy to spot.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Lives about one yard underground where it feeds on plant roots. It sometimes appears aboveground.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that lives underground. Because of its dark habitat, it is repelled by bright sunlight.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon that lives underground. Because of its dark habitat, it is repelled by bright sunlight.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon that lives underground. Because of its dark habitat, it is repelled by bright sunlight.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its skin is very thin. If it is exposed to light, its blood heats up, causing it to grow weak.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If a Diglett digs through a field, it leaves the soil perfectly tilled and ideal for planting crops.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon that lives underground. Because of its dark habitat, it is repelled by bright sunlight.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon that lives underground. Because of its dark habitat, it is repelled by bright sunlight.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A Pokémon that lives underground. Because of its dark habitat, it is repelled by bright sunlight.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A Pokémon that lives underground. Because of its dark habitat, it is repelled by bright sunlight.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Lives about one yard underground where it feeds on plant roots. It sometimes appears aboveground.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its skin is very thin. If it is exposed to light, its blood heats up, causing it to grow weak.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Diglett are raised in most farms. The reason is simple— wherever this Pokémon burrows, the soil is left perfectly tilled for planting crops. This soil is made ideal for growing delicious vegetables.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Diglett are raised in most farms. The reason is simple— wherever this Pokémon burrows, the soil is left perfectly tilled for planting crops. This soil is made ideal for growing delicious vegetables.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It chews on plant roots underground. Farmers whose vegetables are vulnerable find it can be quite a pest.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Many farmers cherish and nurture Diglett because its droppings enrich the soil it lives in.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It travels through tunnels that it digs underground. It hates sunlight, so it comes out only after the sun goes down.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Around their crops, farmers plant the kind of tree that Diglett like to eat as a way of getting Diglett to plow the fields for them.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It prefers dark places. It spends most of its time underground, though it may pop up in caves.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It prefers dark places. It spends most of its time underground, though it may pop up in caves.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If a Diglett digs through a field, it leaves the soil perfectly tilled and ideal for planting crops.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It burrows through the ground at a shallow depth. It leaves raised earth in its wake, making it easy to spot.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This Pokémon lives underground. Because of its dark habitat, it is repelled by bright sunlight.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This Pokémon lives underground. Because of its dark habitat, it is repelled by bright sunlight.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives about one yard underground, where it feeds on plant roots. It sometimes appears aboveground.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its skin is very thin. If it is exposed to light, its blood heats up, causing it to grow weak.\"\n    }\n  ],\n  \"51\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its three heads bob separately up and down to loosen the soil nearby, making it easier for it to burrow.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A team of Diglett triplets. It triggers huge earthquakes by burrowing 60 miles underground.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A team of Diglett triplets. It triggers huge earthquakes by burrowing 60 miles underground.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A team of triplets that can burrow over 60 MPH. Due to this, some people think it's an earthquake.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Diglett triplets that always travel together. Known to burrow more than 60 miles underground and trigger quakes.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its three heads bob separately up and down to loosen the soil nearby, making it easier for it to burrow.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Extremely powerful, they can Dig through even the hardest ground to a depth of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"These Diglett triplets dig over 60 miles below sea level. No one knows what it's like underground.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its three heads bob separately up and down to loosen the soil nearby, making it easier for it to burrow.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Dugtrio are actually triplets that emerged from one body. As a result, each triplet thinks exactly like the other two triplets. They work cooperatively to burrow endlessly.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Dugtrio are actually triplets that emerged from one body. As a result, each triplet thinks exactly like the other two triplets. They work cooperatively to burrow endlessly.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Because the triplets originally split from one body, they think exactly alike. They work cooperatively to burrow endlessly through the ground.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"In battle, it digs through the ground and strikes the unsuspecting foe from an unexpected direction.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A team of Diglett triplets. It triggers huge earthquakes by burrowing 60 miles underground.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its three heads move alternately, driving it through tough soil to depths of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its three heads move alternately, driving it through tough soil to depths of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its three heads move alternately, driving it through tough soil to depths of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its three heads bob separately up and down to loosen the soil nearby, making it easier for it to burrow.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Extremely powerful, they can dig through even the hardest ground to a depth of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its three heads move alternately, driving it through tough soil to depths of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its three heads move alternately, driving it through tough soil to depths of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its three heads move alternately, driving it through tough soil to depths of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its three heads move alternately, driving it through tough soil to depths of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In battle, it digs through the ground and strikes the unsuspecting foe from an unexpected direction.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Extremely powerful, they can dig through even the hardest ground to a depth of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Dugtrio are actually triplets that emerged from one body. As a result, each triplet thinks exactly like the other two triplets. They work cooperatively to burrow endlessly.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Dugtrio are actually triplets that emerged from one body. As a result, each triplet thinks exactly like the other two triplets. They work cooperatively to burrow endlessly.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This set of triplets moves cooperatively. It's the power of teamwork that enables this Pokémon to dig to a depth of 60 miles.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Despite the closeness between this Pokémon and farmers and other people, no one has ever seen the parts of it concealed underground.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"While the three of them normally get along splendidly, on rare occasions a huge fight will break out over which head gets to eat first.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Dugtrio's heads are sleek and smooth and incredibly hard. It can dig through any soil with its headbutts.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A team of triplets that can burrow to a depth of 60 miles. It's reported that this triggers an earthquake.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A team of triplets that can burrow to a depth of 60 miles. It's reported that this triggers an earthquake.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A team of Diglett triplets. It triggers huge earthquakes by burrowing 60 miles underground.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Diglett triplets dig over 60 miles below sea level. No one knows what it's like underground.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its three heads move alternately, driving it through tough soil to depths of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its three heads move alternately, driving it through tough soil to depths of over 60 miles.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its three heads bob separately up and down to loosen the soil nearby, making it easier for it to burrow.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In battle, it digs through the ground and strikes the unsuspecting foe from an unexpected direction.\"\n    }\n  ],\n  \"52\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Appears to be more active at night. It loves round and shiny things. It can't stop itself from picking them up.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Adores circular objects. Wanders the streets on a nightly basis to look for dropped loose change.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Adores circular objects. Wanders the streets on a nightly basis to look for dropped loose change.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Appears to be more active at night. It loves round and shiny things. It can't stop from picking them up.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Sleeps in the daytime. At night, its eyes glow as it happily collects coins, its favorite things.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is fascinated by round objects. It can't stop playing with them until it tires and falls asleep.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It loves anything that shines. It especially adores coins that it picks up and secretly hoards.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It loves things that sparkle. When it sees a shiny object, the gold coin on its head shines too.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is fascinated by round objects. It can't stop playing with them until it tires and falls asleep.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Meowth withdraws its sharp claws into its paws to slinkily sneak about without making any incriminating footsteps. For some reason, this Pokémon loves shiny coins that glitter with light.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Meowth withdraws its sharp claws into its paws to slinkily sneak about without making any incriminating footsteps. For some reason, this Pokémon loves shiny coins that glitter with light.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Meowth withdraw their sharp claws into their paws to silently sneak about. For some reason, this Pokémon loves shiny coins that glitter with light.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"All it does is sleep during the daytime. At night, it patrols its territory with its eyes aglow.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Adores round objects. It wanders the streets on a nightly basis to look for dropped loose change.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is nocturnal in nature. If it spots something shiny, its eyes glitter brightly.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is nocturnal in nature. If it spots something shiny, its eyes glitter brightly.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is nocturnal in nature. If it spots something shiny, its eyes glitter brightly.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is fascinated by round objects. It can't stop playing with them until it tires and falls asleep.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It loves anything that shines. It especially adores coins that it picks up and secretly hoards.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is nocturnal in nature. If it spots something shiny, its eyes glitter brightly.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is nocturnal in nature. If it spots something shiny, its eyes glitter brightly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is nocturnal in nature. If it spots something shiny, its eyes glitter brightly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is nocturnal in nature. If it spots something shiny, its eyes glitter brightly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is nocturnal in nature. If it spots something shiny, its eyes glitter brightly.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Adores round objects. It wanders the streets on a nightly basis to look for dropped loose change.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Meowth withdraws its sharp claws into its paws to slinkily sneak about without making any incriminating footsteps. For some reason, this Pokémon loves shiny coins that glitter with light.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Meowth withdraws its sharp claws into its paws to slinkily sneak about without making any incriminating footsteps. For some reason, this Pokémon loves shiny coins that glitter with light.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It lies around all day, becoming active near dusk. At night, it wanders the city in search of loose change.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It loves shiny things. It often fights with Murkrow over prey they're both trying to catch.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When visiting a junkyard, you may catch sight of it having an intense fight with Murkrow over shiny objects.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It loves coins, so if you give it one, you can make friends with Meowth easily. But it's fickle, so you can't count on that friendship lasting.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Appears to be more active at night. It loves round and shiny things. It can't stop itself from picking them up.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Appears to be more active at night. It loves round and shiny things. It can't stop itself from picking them up.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It loves to collect shiny things. If it's in a good mood, it might even let its Trainer have a look at its hoard of treasures.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It washes its face regularly to keep the coin on its forehead spotless. It doesn't get along with Galarian Meowth.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is nocturnal by nature. If it spots something shiny, its eyes glitter as brightly as the shiny object.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is nocturnal by nature. If it spots something shiny, its eyes glitter as brightly as the shiny object.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"All it does is sleep during the daytime. At night, it patrols its territory with its eyes aglow.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It loves things that sparkle. When it sees a shiny object, the gold coin on its head shines, too.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It loves anything that shines. It especially adores coins, which it will pick up and stash somewhere.\"\n    }\n  ],\n  \"53\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The gem in its forehead glows on its own! It walks with all the grace and elegance of a proud queen.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Although its fur has many admirers, it is tough to raise as a pet because of its fickle meanness.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Although its fur has many admirers, it is tough to raise as a pet because of its fickle meanness.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The gem in its forehead glows on its own! It walks with all the grace and elegance of a proud queen.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It is highly regarded as a pet for its beautiful fur. However, it is extremely temperamental and difficult to keep.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Many adore it for its sophisticated air. However, it will lash out and scratch for little reason.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its lithe muscles allow it to walk without making a sound. It attacks in an instant.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Behind its lithe, elegant appearance lies a barbaric side. It will tear apart its prey on a mere whim.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Many adore it for its sophisticated air. However, it will lash out and scratch for little reason.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Persian has six bold whiskers that give it a look of toughness. The whiskers sense air movements to determine what is in the Pokémon's surrounding vicinity. It becomes docile if grabbed by the whiskers.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Persian has six bold whiskers that give it a look of toughness. The whiskers sense air movements to determine what is in the Pokémon's surrounding vicinity. It becomes docile if grabbed by the whiskers.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Persian's six bold whiskers sense air movements to determine what is in its vicinity. It becomes docile if grabbed by the whiskers.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Has a vicious temperament. Beware if it raises its tail straight up. It is a signal that it is about to pounce and bite.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Although its fur has many admirers, it is tough to raise as a pet because of its fickle meanness.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A very haughty Pokémon. Among fans, the size of the jewel in its forehead is a topic of much talk.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A very haughty Pokémon. Among fans, the size of the jewel in its forehead is a topic of much talk.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A very haughty Pokémon. Among fans, the size of the jewel in its forehead is a topic of much talk.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Many adore it for its sophisticated air. However, it will lash out and scratch for little reason.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its lithe muscles allow it to walk without making a sound. It attacks in an instant.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A very haughty Pokémon. Among fans, the size of the jewel in its forehead is a topic of much talk.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A very haughty Pokémon. Among fans, the size of the jewel in its forehead is a topic of much talk.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A very haughty Pokémon. Among fans, the size of the jewel in its forehead is a topic of much talk.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A very haughty Pokémon. Among fans, the size of the jewel in its forehead is a topic of much talk.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Although its fur has many admirers, it is tough to raise as a pet because of its fickle meanness.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its lithe muscles allow it to walk without making a sound. It attacks in an instant.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Persian has six bold whiskers that give it a look of toughness. The whiskers sense air movements to determine what is in the Pokémon's surrounding vicinity. It becomes docile if grabbed by the whiskers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Persian has six bold whiskers that give it a look of toughness. The whiskers sense air movements to determine what is in the Pokémon's surrounding vicinity. It becomes docile if grabbed by the whiskers.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It has a violent temperament. It will attack anything that looks it in the eye. Its sharp claws inflict deep wounds.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It has a high opinion of itself, although not to the same extent as the Alolan Persian. It's quite difficult to make friends with this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although the jewel on its forehead appears to be a different color than those of Alolan Persian, it's mostly made of the same material.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pokémon is popular with rich people. It's also targeted by hunters who are after the jewel in its forehead.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The gem in its forehead glows on its own! It walks with all the grace and elegance of a proud queen.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The gem in its forehead glows on its own! It walks with all the grace and elegance of a proud queen.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Getting this prideful Pokémon to warm up to you takes a lot of effort, and it will claw at you the moment it gets annoyed.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its elegant and refined behavior clashes with that of the barbaric Perrserker. The relationship between the two is one of mutual disdain.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a very haughty Pokémon. Among fans of Persian, the size of the jewel in its forehead is a topic of much talk.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is a very haughty Pokémon. Among fans of Persian, the size of the jewel in its forehead is a topic of much talk.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Although its fur has many admirers, it is tough to raise as a pet because of its fickle meanness.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has a vicious temperament. Beware if it raises its tail straight up. This is a signal that it is about to pounce and bite.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Many admire Persian for the dignity it exudes from every inch of its body. However, it will lash out with its claws given the slightest provocation.\"\n    }\n  ],\n  \"54\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is constantly wracked by a headache. When the headache turns intense, it begins using mysterious powers.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"While lulling its enemies with its vacant look, this wily Pokémon will use psychokinetic powers.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"While lulling its enemies with its vacant look, this wily Pokémon will use psychokinetic powers.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Always tormented by headaches. It uses psychic powers, but it is not known if it intends to do so.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Appears unaware and totally vacant. However, if its chronic headache worsens, it starts exhibiting peculiar powers.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has mystical powers but doesn't recall that it has used them. That is why it always looks puzzled.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If its chronic headache peaks, it may exhibit odd powers. It seems unable to recall such an episode.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The only time it can use its psychic power is when its sleeping brain cells happen to wake.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has mystical powers but doesn't recall that it has used them. That is why it always looks puzzled.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Psyduck uses a mysterious power. When it does so, this Pokémon generates brain waves that are supposedly only seen in sleepers. This discovery spurred controversy among scholars.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If it uses its mysterious power, Psyduck can't remember having done so. It apparently can't form a memory of such an event because it goes into an altered state that is much like deep sleep.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When its headache intensifies, it starts using strange powers. However, it has no recollection of its powers, so it always looks befuddled and bewildered.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is constantly wracked by a headache. When the headache turns intense, it begins using mysterious powers.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"While lulling its enemies with its vacant look, this wily Pokémon will use psychokinetic powers.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"If its usual headache worsens, it starts exhibiting odd powers. It can't remember doing so, however.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It never remembers using its odd powers, so it always tilts its head in puzzlement.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Overwhelmed by enigmatic abilities, it suffers a constant headache. It sometimes uses mysterious powers.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has mystical powers but doesn't recall that it has used them. That is why it always looks puzzled.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If its chronic headache peaks, it may exhibit odd powers. It seems unable to recall such an episode.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Overwhelmed by enigmatic abilities, it suffers a constant headache. It sometimes uses mysterious powers.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Overwhelmed by enigmatic abilities, it suffers a constant headache. It sometimes uses mysterious powers.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When headaches stimulate its brain cells, which are usually inactive, it can use a mysterious power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When headaches stimulate its brain cells, which are usually inactive, it can use a mysterious power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is constantly wracked by a headache. When the headache turns intense, it begins using mysterious powers.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has mystical powers but doesn't recall that it has used them. That is why it always looks puzzled.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Psyduck uses a mysterious power. When it does so, this Pokémon generates brain waves that are supposedly only seen in sleepers. This discovery spurred controversy among scholars.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If it uses its mysterious power, Psyduck can't remember having done so. It apparently can't form a memory of such an event because it goes into an altered state that is much like deep sleep.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"As a result of headaches so fierce they cause it to cry, it sometimes uses psychokinesis without meaning to.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon is troubled by constant headaches. The more pain it's in, the more powerful its psychokinesis becomes.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Using psychokinesis gives it a headache, so it normally passes the time spacing out and doing as little as possible.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It has been found that its brain cells are 10 times more active when Psyduck is experiencing a headache.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Always tormented by headaches. It uses psychic powers, but whether it intends to do so is not known.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Always tormented by headaches. It uses psychic powers, but whether it intends to do so is not known.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Psyduck is constantly beset by headaches. If the Pokémon lets its strange power erupt, apparently the pain subsides for a while.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"As Psyduck gets stressed out, its headache gets progressively worse. It uses intense psychic energy to overwhelm those around it.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"If its usual headache worsens, it starts exhibiting odd powers. It can't remember doing so, however.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It never remembers using its odd powers, so it always tilts its head in puzzlement.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Suffers perpetual headaches. If the agony grows too great, Psyduck's latent power erupts, contrary to Psyduck's intent. Ergo, I am exploring ways to ease the pain.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is constantly wracked by a headache. When the headache turns intense, it begins using mysterious powers.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If its chronic headache peaks, it may exhibit odd powers. It seems unable to recall such an episode.\"\n    }\n  ],\n  \"55\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It swims gracefully along on the quiet, slow- moving rivers and lakes of which it is so fond.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Often seen swimming elegantly by lake shores. It is often mistaken for the Japanese monster, Kappa.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Often seen swimming elegantly by lake shores. It is often mistaken for the Japanese monster, Kappa.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its slim and long limbs end in broad flippers. They are used for swimming gracefully in lakes.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its webbed hands and feet make it a proficient swimmer. May be seen swimming elegantly at dusk in places like lakes.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When it swims at full speed using its long, webbed limbs, its forehead somehow begins to glow.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It appears by waterways at dusk. It may use telekinetic powers if its forehead glows mysteriously.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It swims gracefully along on the quiet, slow-moving rivers and lakes of which it is so fond.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When it swims at full speed using its long, webbed limbs, its forehead somehow begins to glow.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The webbed flippers on its forelegs and hind legs and the streamlined body of Golduck give it frightening speed. This Pokémon is definitely much faster than even the most athletic swimmer.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Golduck is the fastest swimmer among all Pokémon. It swims effortlessly, even in a rough, stormy sea. It sometimes rescues people from wrecked ships floundering in high seas.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Golduck is an adept swimmer. It sometimes joins competitive swimmers in training. It uses psychic powers when its forehead shimmers with light.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The forelegs are webbed, helping to make it an adept swimmer. It can be seen swimming elegantly in lakes, etc.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Often seen swimming elegantly by lakeshores. It is often mistaken for the Japanese monster Kappa.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that lives in lakes. It swims faster than any human swimming champion.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The flippers of its well-developed limbs give it shocking speed. It is the best swimmer among Pokémon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is seen swimming dynamically and elegantly using its well-developed limbs and flippers.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it swims at full speed using its long, webbed limbs, its forehead somehow begins to glow.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It appears by waterways at dusk. It may use telekinetic powers if its forehead glows mysteriously.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is seen swimming dynamically and elegantly using its well-developed limbs and flippers.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is seen swimming dynamically and elegantly using its well-developed limbs and flippers.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When its forehead shines mysteriously, Golduck can use the full extent of its power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When its forehead shines mysteriously, Golduck can use the full extent of its power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It appears by waterways at dusk. It may use telekinetic powers if its forehead glows mysteriously.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The forelegs are webbed, helping to make it an adept swimmer. It can be seen swimming elegantly in lakes, etc.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The webbed flippers on its forelegs and hind legs and the streamlined body of Golduck give it frightening speed. This Pokémon is definitely much faster than even the most athletic swimmer.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Golduck is the fastest swimmer among all Pokémon. It swims effortlessly, even in a rough, stormy sea. It sometimes rescues people from wrecked ships floundering in high seas.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It is said that the red part of its forehead grants supernatural powers to those who possess one, so it was over-hunted in the past.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It swims along the banks of lakes and catches fish Pokémon. It takes them to the shore and quietly eats them up.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Even fast-swimming fish Pokémon can be disabled by Golduck. It brings them to a standstill and seizes them.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"A professional swimmer, it can continue swimming for two days straight by waving its long tail skillfully.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its long, slim limbs end in broad flippers. They are used for swimming gracefully in lakes.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its long, slim limbs end in broad flippers. They are used for swimming gracefully in lakes.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon lives in gently flowing rivers. It paddles through the water with its long limbs, putting its graceful swimming skills on display.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Old tales tell of Golduck punishing those that defiled its river. The guilty were dragged into the water and taken away.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This Pokémon lives in lakes. It swims faster than any world-class swimmer.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The flippers of its well-developed limbs give it shocking speed. It is the best swimmer among Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its body is strong, and it has webbing on its hands and feet. Golduck can swim easily through rough seas, clawing its way through the high waves.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it swims at full speed using its long, webbed limbs, its forehead somehow begins to glow.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It swims gracefully along on the quiet, slow- moving rivers and lakes of which it is so fond.\"\n    }\n  ],\n  \"56\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Extremely quick to anger. It could be docile one moment then thrashing away the next instant.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Extremely quick to anger. It could be docile one moment then thrashing away the next instant.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"An agile Pokémon that lives in trees. It angers easily and will not hesitate to attack anything.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Quick to anger, it will begin brawling on the slightest provocation. It is unsafe to approach as it is very nimble.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is extremely ill-tempered. Groups of them will attack any handy target for no reason.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It's unsafe to approach if it gets violently enraged for no reason and can't distinguish friends from foes.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It lives in groups in the treetops. If it loses sight of its group, it becomes infuriated by its loneliness.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is extremely ill-tempered. Groups of them will attack any handy target for no reason.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"When Mankey starts shaking and its nasal breathing turns rough, it's a sure sign that it is becoming angry. However, because it goes into a towering rage almost instantly, it is impossible for anyone to flee its wrath.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When Mankey starts shaking and its nasal breathing turns rough, it's a sure sign that it is becoming angry. However, because it goes into a towering rage almost instantly, it is impossible for anyone to flee its wrath.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When it starts shaking and its nasal breathing turns rough, it's a sure sign of anger. However, since this happens instantly, there is no time to flee.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Light and agile on its feet, and ferocious in temperament. When angered, it flies into an uncontrollable frenzy.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Extremely quick to anger. It could be docile one moment, then thrashing away the next instant.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in treetop colonies. If one becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives in treetop colonies. If one becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives in treetop colonies. If one becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is extremely ill-tempered. Groups of them will attack any handy target for no reason.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It's unsafe to approach if it gets violently enraged for no reason and can't distinguish friends from foes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives in treetop colonies. If one becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives in treetop colonies. If one becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives in treetop colonies. If one becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives in treetop colonies. If one becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It's unsafe to approach if it gets violently enraged for no reason and can't distinguish friends from foes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives in treetop colonies. If one becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When Mankey starts shaking and its nasal breathing turns rough, it's a sure sign that it is becoming angry. However, because it goes into a towering rage almost instantly, it is impossible for anyone to flee its wrath.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Mankey starts shaking and its nasal breathing turns rough, it's a sure sign that it is becoming angry. However, because it goes into a towering rage almost instantly, it is impossible for anyone to flee its wrath.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It can spontaneously become enraged. Everyone near it clears out as it rampages, and the resulting loneliness makes it angrier still.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its raging tires it out and causes it to fall asleep, but the anger resonating in its dreams causes it to wake up—which infuriates it all over again.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The smallest of things could cause it to lose its temper. Because it doesn't hold in its stress, this Pokémon can live a long time.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"If one gets angry, all the others around it will get angry, so silence is a rare visitor in a troop of Mankey.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"An agile Pokémon that lives in trees. It angers easily and will not hesitate to attack anything.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"An agile Pokémon that lives in trees. It angers easily and will not hesitate to attack anything.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in treetop colonies. If one member of the group becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives in treetop colonies. If one member of the group becomes enraged, the whole colony rampages for no reason.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives in groups in the treetops. If it loses sight of its group, it becomes infuriated by its loneliness.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is extremely quick to anger. It could be docile one moment, then thrashing away the next instant.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Mankey are perpetually angry. If they spot suitable prey, they will attack as a group.\"\n    }\n  ],\n  \"57\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Always furious and tenacious to boot. It will not abandon chasing its quarry until it is caught.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Always furious and tenacious to boot. It will not abandon chasing its quarry until it is caught.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It stops being angry only when nobody else is around. To view this moment is very difficult.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"When enraged, it gives chase endlessly. Because it is impossible to tell what made it angry, there is no soothing it.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If approached while asleep, it may awaken and angrily give chase in a groggy state of semi-sleep.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It becomes wildly furious if it even senses someone looking at it. It chases anyone that meets its glare.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It will beat up anyone who makes it mad, even if it has to chase them until the end of the world.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If approached while asleep, it may awaken and angrily give chase in a groggy state of semi-sleep.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"When Primeape becomes furious, its blood circulation is boosted. In turn, its muscles are made even stronger. However, it also becomes much less intelligent at the same time.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When Primeape becomes furious, its blood circulation is boosted. In turn, its muscles are made even stronger. However, it also becomes much less intelligent at the same time.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When it becomes furious, its blood circulation becomes more robust, and its muscles are made stronger. But it also becomes much less intelligent.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is always outrageously furious. If it gives chase, it will tenaciously track the target no matter how far.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Always furious and tenacious to boot. It will not abandon chasing its quarry until it catches up.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It grows angry if you see its eyes and gets angrier if you run. If you beat it, it gets even madder.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It grows angry if you see its eyes and gets angrier if you run. If you beat it, it gets even madder.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It grows angry if you see its eyes and gets angrier if you run. If you beat it, it gets even madder.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If approached while asleep, it may awaken and angrily give chase in a groggy state of semi-sleep.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It becomes wildly furious if it even senses someone looking at it. It chases anyone that meets its glare.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It grows angry if you see its eyes and gets angrier if you run. If you beat it, it gets even madder.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It grows angry if you see its eyes and gets angrier if you run. If you beat it, it gets even madder.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It grows angry if you see its eyes and gets angrier if you run. If you beat it, it gets even madder.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It grows angry if you see its eyes and gets angrier if you run. If you beat it, it gets even madder.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It stops being angry only when nobody else is around. To view this moment is very difficult.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is always outrageously furious. If it gives chase, it will tenaciously track the target no matter how far.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When Primeape becomes furious, its blood circulation is boosted. In turn, its muscles are made even stronger. However, it also becomes much less intelligent at the same time.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Primeape becomes furious, its blood circulation is boosted. In turn, its muscles are made even stronger. However, it also becomes much less intelligent at the same time.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It has been known to become so angry that it dies as a result. Its face looks peaceful in death, however.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Some researchers theorize that Primeape remains angry even when inside a Poké Ball.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It will never forgive opponents who have angered it. Even after it has beaten them down until they can't move, it never ever forgives.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The blood vessels in its brain are sturdier than those of other Pokémon, so it can stay healthy despite its constant raging.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It stops being angry only when nobody else is around. To view this moment is very difficult.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It stops being angry only when nobody else is around. To view this moment is very difficult.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It becomes angry if it sees an opponent's eyes and gets angrier if the opponent runs. Even after it beats the opponent, it is still angry.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It becomes angry if it sees an opponent's eyes and gets angrier if the opponent runs. Even after it beats the opponent, it is still angry.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It becomes wildly furious if it even senses someone looking at it. It chases anyone that meets its glare.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Some researchers theorize that Primeape remains angry even when inside a Poké Ball.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If approached while asleep, it may rouse just enough to fly into a groggy rage and give chase without even knowing what it's doing.\"\n    }\n  ],\n  \"58\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has a brave and trustworthy nature. It fearlessly stands up to bigger and stronger foes.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Very protective of its territory. It will bark and bite to repel intruders from its space.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Very protective of its territory. It will bark and bite to repel intruders from its space.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A Pokémon with a friendly nature. However, it will bark fiercely at anything invading its territory.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Friendly and loyal, but also jealously protective of its territory. Carelessly approaching it may result in a bite.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has a brave and trustworthy nature. It fearlessly stands up to bigger and stronger foes.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Extremely loyal, it will fearlessly bark at any opponent to protect its own trainer from harm.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It controls a big territory. If it detects an unknown smell, it roars loudly to force out the intruder.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has a brave and trustworthy nature. It fearlessly stands up to bigger and stronger foes.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Growlithe has a superb sense of smell. Once it smells anything, this Pokémon won't forget the scent, no matter what. It uses its advanced olfactory sense to determine the emotions of other living things.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Growlithe has a superb sense of smell. Once it smells anything, this Pokémon won't forget the scent, no matter what. It uses its advanced olfactory sense to determine the emotions of other living things.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its superb sense of smell ensures that this Pokémon won't forget any scent, no matter what. It uses its sense of smell to detect the emotions of others.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Very friendly and faithful to people. It will try to repel enemies by barking and biting.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is very protective of its territory. It will bark and bite to repel intruders from its space.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon with a loyal nature. It will remain motionless until it is given an order by its Trainer.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon with a loyal nature. It will remain motionless until it is given an order by its Trainer.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon with a loyal nature. It will remain motionless until it is given an order by its Trainer.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has a brave and trustworthy nature. It fearlessly stands up to bigger and stronger foes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Extremely loyal, it will fearlessly bark at any opponent to protect its own Trainer from harm.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon with a loyal nature. It will remain motionless until it is given an order by its Trainer.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon with a loyal nature. It will remain motionless until it is given an order by its Trainer.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Extremely loyal to its Trainer, it will bark at those who approach the Trainer unexpectedly and run them out of town.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Extremely loyal to its Trainer, it will bark at those who approach the Trainer unexpectedly and run them out of town.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Very friendly and faithful to people. It will try to repel enemies by barking and biting.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a brave and trustworthy nature. It fearlessly stands up to bigger and stronger foes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Growlithe has a superb sense of smell. Once it smells anything, this Pokémon won't forget the scent, no matter what. It uses its advanced olfactory sense to determine the emotions of other living things.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Growlithe has a superb sense of smell. Once it smells anything, this Pokémon won't forget the scent, no matter what. It uses its advanced olfactory sense to determine the emotions of other living things.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It's both clever and loyal, but if a stranger tries to invade its territory, it barks threateningly.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It looks cute, but when you approach another Trainer's Growlithe, it will bark at you and bite.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"While it's quite friendly toward humans once it's grown used to them, in the wild it must be quite fierce to defend its territory from Rockruff.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It has lived alongside humans since ages ago. Its bones have been found in excavations of ruins from the Stone Age.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A Pokémon with a friendly nature. However, it will bark fiercely at anything invading its territory.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A Pokémon with a friendly nature. However, it will bark fiercely at anything invading its territory.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has a brave and trustworthy nature. It fearlessly stands up to bigger and stronger foes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Extremely loyal, it will fearlessly bark at any opponent to protect its own Trainer from harm.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a Pokémon with a loyal nature. It will remain motionless until it is given an order by its Trainer.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is a Pokémon with a loyal nature. It will remain motionless until it is given an order by its Trainer.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"They patrol their territory in pairs. I believe the igneous rock components in the fur of this species are the result of volcanic activity in its habitat.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has a brave and trustworthy nature. It fearlessly stands up to bigger and stronger foes.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's very friendly and faithful to people. It will try to repel enemies by barking and biting.\"\n    }\n  ],\n  \"59\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"An ancient picture scroll shows that people were captivated by its movement as it ran through prairies.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A Pokémon that has been admired since the past for its beauty. It runs agilely as if on wings.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A Pokémon that has been admired since the past for its beauty. It runs agilely as if on wings.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A legendary Pokémon in China. Many people are charmed by its grace and beauty while running.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A Pokémon whose beauty is legendary in China. It is said to run gracefully and lightly, as if it were flying.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This legendary Chinese Pokémon is considered magnificent. Many people are enchanted by its grand mane.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its magnificent bark conveys a sense of majesty. Anyone hearing it can't help but grovel before it.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"An ancient picture scroll shows that people were attracted to its movement as it ran through prairies.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This legendary Chinese Pokémon is considered magnificent. Many people are enchanted by its grand mane.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Arcanine is known for its high speed. It is said to be capable of running over 6,200 miles in a single day and night. The fire that blazes wildly within this Pokémon's body is its source of power.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Arcanine is known for its high speed. It is said to be capable of running over 6,200 miles in a single day and night. The fire that blazes wildly within this Pokémon's body is its source of power.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This fleet-footed Pokémon is said to run over 6,200 miles in a single day and night. The fire that blazes wildly within its body is its source of power.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A Pokémon that is described in Chinese legends. It is said to race at an unbelievable speed.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A Pokémon that has long been admired for its beauty. It runs agilely as if on wings.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its proud and regal appearance has captured the hearts of people since long ago.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its proud and regal appearance has captured the hearts of people since long ago.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its proud and regal appearance has captured the hearts of people since long ago.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This legendary Chinese Pokémon is considered magnificent. Many people are enchanted by its grand mane.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its magnificent bark conveys a sense of majesty. Anyone hearing it can't help but grovel before it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its proud and regal appearance has captured the hearts of people since long ago.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its proud and regal appearance has captured the hearts of people since long ago.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The sight of it running over 6,200 miles in a single day and night has captivated many people.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The sight of it running over 6,200 miles in a single day and night has captivated many people.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A Pokémon that has long been admired for its beauty. It runs agilely as if on wings.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its magnificent bark conveys a sense of majesty. Anyone hearing it can't help but grovel before it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Arcanine is known for its high speed. It is said to be capable of running over 6,200 miles in a single day and night. The fire that blazes wildly within this Pokémon's body is its source of power.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Arcanine is known for its high speed. It is said to be capable of running over 6,200 miles in a single day and night. The fire that blazes wildly within this Pokémon's body is its source of power.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Overflowing with beauty and majesty, this strong Pokémon appears in ancient Eastern folklore.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The fire burning inside its body serves as the energy to fuel it as it runs great distances. It appears in many legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Legends tell of its fighting alongside a general and conquering a whole country.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"There are so many old tales about them that they're called legendary Pokémon, but there are way more of them around than you'd expect.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A legendary Pokémon in the East. Many people are charmed by the grace and beauty of its running.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A legendary Pokémon in the East. Many people are charmed by the grace and beauty of its running.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The sight of it running over 6,200 miles in a single day and night has captivated many people.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A Pokémon that has long been admired for its beauty. It runs agilely as if on wings.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its proud and regal appearance has captured the hearts of people since long ago.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its proud and regal appearance has captured the hearts of people since long ago.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Snaps at its foes with fangs cloaked in blazing flame. Despite its bulk, it deftly feints every which way, leading opponents on a deceptively merry chase as it all but dances around them.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"An ancient picture scroll shows that people were captivated by its movement as it ran through prairies.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its magnificent bark conveys a sense of majesty. Anyone hearing it can't help but grovel before it.\"\n    }\n  ],\n  \"60\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"For Poliwag, swimming is easier than walking. The swirl pattern on its belly is actually part of the Pokémon's innards showing through the skin.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its newly grown legs prevent it from running. It appears to prefer swimming than trying to stand.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its newly grown legs prevent it from running. It appears to prefer swimming than trying to stand.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The direction of the spiral on the belly differs by area. It is more adept at swimming than walking.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The spiral on its belly is its internal organs seen through its thin skin. It is better at swimming than walking.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Because it is inept at walking on its newly grown legs, it always swims around in water.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The direction of its belly spiral differs by area. The equator is thought to have an effect on this.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The swirl on its belly is its insides showing through the skin. It looks clearer after it eats.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Because it is inept at walking on its newly grown legs, it always swims around in water.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Poliwag has a very thin skin. It is possible to see the Pokémon's spiral innards right through the skin. Despite its thinness, however, the skin is also very flexible. Even sharp fangs bounce right off it.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Poliwag has a very thin skin. It is possible to see the Pokémon's spiral innards right through the skin. Despite its thinness, however, the skin is also very flexible. Even sharp fangs bounce right off it.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is possible to see this Pokémon's spiral innards right through its thin skin. However, the skin is also very flexible. Even sharp fangs bounce right off it.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its slick black skin is thin and damp. A part of its internal organs can be seen through the skin as a spiral pattern.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its newly grown legs prevent it from walking well. It appears to prefer swimming over walking.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its skin is so thin, its internal organs are visible. It has trouble walking on its newly grown feet.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its skin is so thin, its internal organs are visible. It has trouble walking on its newly grown feet.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its skin is so thin, its internal organs are visible. It has trouble walking on its newly grown feet.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Because it is inept at walking on its newly grown legs, it always swims around in water.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The direction of its belly spiral differs by area. The equator is thought to have an effect on this.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its skin is so thin, its internal organs are visible. It has trouble walking on its newly grown feet.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its skin is so thin, its internal organs are visible. It has trouble walking on its newly grown feet.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its skin is so thin, its internal organs are visible. It has trouble walking on its newly grown feet.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its skin is so thin, its internal organs are visible. It has trouble walking on its newly grown feet.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its slick black skin is thin and damp. A part of its internal organs can be seen through the skin as a spiral pattern.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The direction of the spiral on the belly differs by area. It is more adept at swimming than walking.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Poliwag has a very thin skin. It is possible to see the Pokémon's spiral innards right through the skin. Despite its thinness, however, the skin is also very flexible. Even sharp fangs bounce right off it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Poliwag has a very thin skin. It is possible to see the Pokémon's spiral innards right through the skin. Despite its thinness, however, the skin is also very flexible. Even sharp fangs bounce right off it.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The swirl on its belly is its internal organs showing through. If the swirl is tinged white, that means it's affected by some disease.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It's still not very good at walking. Its Trainers should train this Pokémon to walk every day.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Despite the danger, it wants to come up on land. So it does its best to waddle along, but when an enemy finds it, it rushes back to the water.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The direction of the swirl on their stomachs differs depending on where they live. Poliwag aficionados can tell them apart at a glance.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The direction of the spiral on the belly differs by area. It is more adept at swimming than walking.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The direction of the spiral on the belly differs by area. It is more adept at swimming than walking.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"For Poliwag, swimming is easier than walking. The swirl pattern on its belly is actually part of the Pokémon's innards showing through the skin.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In rivers with fast-flowing water, this Pokémon will cling to a rock by using its thick lips, which act like a suction cup.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its skin is so thin, its internal organs are visible. It has trouble walking on its newly grown feet.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its skin is so thin, its internal organs are visible. It has trouble walking on its newly grown feet.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The swirl on its belly is its insides showing through the skin. It appears more clearly after Poliwag eats.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its legs are newly grown, and it can't walk very well. It seems to prefer swimming through the water instead.\"\n    }\n  ],\n  \"61\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its two legs are well developed. Even though it can live on the ground, it prefers living in water.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Capable of living in or out of water. When out of water, it sweats to keep its body slimy.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Capable of living in or out of water. When out of water, it sweats to keep its body slimy.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Under attack, it uses its belly spiral to put the foe to sleep. It then makes its escape.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Capable of living on land, but prefers to stay in water. If it is out of water, it sweats to keep its skin moist.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The swirl on its belly subtly undulates. Staring at it may gradually cause drowsiness.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The skin on most of its body is moist. However, the skin on its belly spiral feels smooth.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Though it is skilled at walking, it prefers to live underwater where there is less danger.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The swirl on its belly subtly undulates. Staring at it may gradually cause drowsiness.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The surface of Poliwhirl's body is always wet and slick with an oily fluid. Because of this greasy covering, it can easily slip and slide out of the clutches of any enemy in battle.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The surface of Poliwhirl's body is always wet and slick with an oily fluid. Because of this greasy covering, it can easily slip and slide out of the clutches of any enemy in battle.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its body surface is always wet and slick with an oily fluid. Because of this greasy covering, it can easily slip and slide out of the clutches of any enemy in battle.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its two legs are well developed. Even though it can live on the ground, it prefers living in water.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It can live in or out of water. When out of water, it constantly sweats to keep its body slimy.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The spiral pattern on its belly subtly undulates. Staring at it gradually causes drowsiness.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The spiral pattern on its belly subtly undulates. Staring at it gradually causes drowsiness.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The spiral pattern on its belly subtly undulates. Staring at it gradually causes drowsiness.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The swirl on its belly subtly undulates. Staring at it may gradually cause drowsiness.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The skin on most of its body is moist. However, the skin on its belly spiral feels smooth.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The spiral pattern on its belly subtly undulates. Staring at it gradually causes drowsiness.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The spiral pattern on its belly subtly undulates. Staring at it gradually causes drowsiness.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The spiral pattern on its belly subtly undulates. Staring at it gradually causes drowsiness.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The spiral pattern on its belly subtly undulates. Staring at it gradually causes drowsiness.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can live in or out of water. When out of water, it constantly sweats to keep its body slimy.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its two legs are well developed. Even though it can live on the ground, it prefers living in water.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The surface of Poliwhirl's body is always wet and slick with a slimy fluid. Because of this slippery covering, it can easily slip and slide out of the clutches of any enemy in battle.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The surface of Poliwhirl's body is always wet and slick with a slimy fluid. Because of this slippery covering, it can easily slip and slide out of the clutches of any enemy in battle.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Although it can live on land, it prefers to stay in the water, where it has fewer natural enemies.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It marches over the land in search of bug Pokémon to eat. Then it takes them underwater so it can dine on them where it's safe.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it has become capable of living on land, it spends its time in the water, where its prey, fish Pokémon, are plentiful.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its health suffers when its skin dries out, so be sure to moisturize it diligently.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Under attack, it uses its belly spiral to put the foe to sleep. It then makes its escape.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Under attack, it uses its belly spiral to put the foe to sleep. It then makes its escape.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Staring at the swirl on its belly causes drowsiness. This trait of Poliwhirl's has been used in place of lullabies to get children to go to sleep.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon's sweat is a slimy mucus. When captured, Poliwhirl can slither from its enemies' grasp and escape.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The spiral pattern on its belly subtly undulates. Staring at it gradually causes drowsiness.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The spiral pattern on its belly subtly undulates. Staring at it gradually causes drowsiness.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its two legs are well developed. Even though it can live on the ground, it prefers living in water.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its skin is moist all over its body. The skin on its belly spiral also feels smooth.\"\n    }\n  ],\n  \"62\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The muscles it has developed through swimming are thick and powerful. When it lands a square punch, it can turn huge boulders to dust.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"An adept swimmer at both the front crawl and breast stroke. Easily overtakes the best human swimmers.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"An adept swimmer at both the front crawl and breast stroke. Easily overtakes the best human swimmers.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Swims powerfully using all the muscles in its body. It can even overtake champion swimmers.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A strong swimmer, it is faster than a human champ in an individual medley. It can go far and fast with minimal breathing.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This strong and skilled swimmer is even capable of crossing the Pacific Ocean just by kicking.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Although an energetic, skilled swimmer that uses all of its muscles, it lives on dry land.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It can use its well-developed arms and legs to run on the surface of the water for a split second.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This strong and skilled swimmer is even capable of crossing the Pacific Ocean just by kicking.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Poliwrath's highly developed, brawny muscles never grow fatigued, however much it exercises. It is so tirelessly strong, this Pokémon can swim back and forth across the Pacific Ocean without effort.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Poliwrath's highly developed, brawny muscles never grow fatigued, however much it exercises. It is so tirelessly strong, this Pokémon can swim back and forth across the Pacific Ocean without effort.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its highly developed muscles never grow fatigued, however much it exercises. This Pokémon can swim back and forth across the Pacific Ocean without effort.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"An adept swimmer, it knows the front crawl, butterfly, and more. It is faster than the best human swimmers.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A swimmer adept at both the front crawl and breaststroke. Easily overtakes the best human swimmers.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"With its extremely tough muscles, it can keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"With its extremely tough muscles, it can keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"With its extremely tough muscles, it can keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This strong and skilled swimmer is even capable of crossing the Pacific Ocean just by kicking.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Although an energetic, skilled swimmer that uses all of its muscles, it lives on dry land.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"With its extremely tough muscles, it can keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"With its extremely tough muscles, it can keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"With its extremely tough muscles, it can keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"With its extremely tough muscles, it can keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"With its extremely tough muscles, it can keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A swimmer adept at both the front crawl and breaststroke. Easily overtakes the best human swimmers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Poliwrath's highly developed, brawny muscles never grow fatigued, however much it exercises. It is so tirelessly strong, this Pokémon can swim back and forth across the ocean without effort.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Poliwrath's highly developed, brawny muscles never grow fatigued, however much it exercises. It is so tirelessly strong, this Pokémon can swim back and forth across the ocean without effort.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Poliwrath in the Alola region are strong swimmers that use the breaststroke. Many children learn to swim by imitating Poliwrath.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its percentage of body fat is nearly zero. Its body is entirely muscle, which makes it heavy and forces its swimming prowess to develop.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's quite a gifted swimmer, even among Water-type Pokémon, but it normally spends its time on land.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The muscles it has developed through swimming are thick and powerful. When it lands a square punch, it can turn huge boulders to dust.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Swims powerfully using all the muscles in its body. It can even overtake world-class swimmers.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Swims powerfully using all the muscles in its body. It can even overtake world-class swimmers.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its body is solid muscle. When swimming through cold seas, Poliwrath uses its impressive arms to smash through drift ice and plow forward.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Poliwrath is skilled at both swimming and martial arts. It uses its well-trained arms to dish out powerful punches.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"With its extremely tough muscles, it could keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"With its extremely tough muscles, it could keep swimming in the Pacific Ocean without resting.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Although it's skilled in a style of dynamic swimming that uses all its muscles, for some reason it lives on dry land.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can use its well-developed arms and legs to run on the surface of the water for a split second.\"\n    }\n  ],\n  \"63\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It uses various psychic powers even while it's sleeping, so you can't tell whether or not it's awake.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Using its ability to read minds, it will identify impending danger and Teleport to safety.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Using its ability to read minds, it will identify impending danger and Teleport to safety.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Sleeps 18 hours a day. If it senses danger, it will teleport itself to safety even as it sleeps.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Even while asleep, it can sense enemies approaching. It Teleports itself to a distant spot if there is any danger.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It senses impending attacks and Teleports away to safety before the actual attacks can strike.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If it decides to Teleport randomly, it creates the illusion that it has created copies of itself.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It hypnotizes itself so that it can teleport away when it senses danger, even if it is asleep.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It senses impending attacks and Teleports away to safety before the actual attacks can strike.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Abra sleeps for eighteen hours a day. However, it can sense the presence of foes even while it is sleeping. In such a situation, this Pokémon immediately teleports to safety.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Abra needs to sleep for eighteen hours a day. If it doesn't, this Pokémon loses its ability to use telekinetic powers. If it is attacked, Abra escapes using Teleport while it is still sleeping.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that sleeps 18 hours a day. Observation revealed that it uses Teleport to change its location once every hour.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It sleeps for 18 hours a day. It uses a variety of extrasensory powers even while asleep.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Using its ability to read minds, it will sense impending danger and Teleport to safety.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It sleeps for 18 hours a day. Even when awake, it teleports itself while remaining seated.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Even while asleep, it maintains a telepathic radar. It teleports when it is threatened.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Using its psychic power is such a strain on its brain that it needs to sleep for 18 hours a day.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It senses impending attacks and teleports away to safety before the actual attacks can strike.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it decides to teleport randomly, it evokes the illusion that it has created copies of itself.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Using its psychic power is such a strain on its brain that it needs to sleep for 18 hours a day.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Using its psychic power is such a strain on its brain that it needs to sleep for 18 hours a day.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Using its psychic power is such a strain on its brain that it needs to sleep for 18 hours a day.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Using its psychic power is such a strain on its brain that it needs to sleep for 18 hours a day.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It sleeps for 18 hours a day. It uses a variety of extrasensory powers even while asleep.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It senses impending attacks and teleports away to safety before the actual attacks can strike.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Abra sleeps for eighteen hours a day. However, it can sense the presence of foes even while it is sleeping. In such a situation, this Pokémon immediately teleports to safety.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Abra needs to sleep for eighteen hours a day. If it doesn't, this Pokémon loses its ability to use telekinetic powers. If it is attacked, Abra escapes using Teleport while it is still sleeping.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It sleeps 18 hours a day. Even while sleeping, it will teleport itself to treetops and pick and eat berries there.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It can teleport itself to safety while it's asleep, but when it wakes, it doesn't know where it is, so it panics.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It uses various psychic powers even while it's sleeping, so you can't tell whether or not it's awake.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It can read others' minds and will teleport away when danger approaches. You must clear your mind if you want to catch it.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Sleeps 18 hours a day. If it senses danger, it will teleport itself to safety even as it sleeps.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Sleeps 18 hours a day. If it senses danger, it will teleport itself to safety even as it sleeps.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon uses its psychic powers while it sleeps. The contents of Abra's dreams affect the powers that the Pokémon wields.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Abra can teleport in its sleep. Apparently the more deeply Abra sleeps, the farther its teleportations go.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It sleeps for 18 hours a day. Even when awake, it teleports itself while remaining seated.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Even while asleep, it maintains a telepathic radar. It teleports when it is threatened.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Spends 18 hours of the day sleeping. Even while asleep, Abra can control its psychic powers—should danger approach, the Pokémon will simply teleport away.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It sleeps for 18 hours a day. It uses a variety of extrasensory powers even while asleep.\"\n    }\n  ],\n  \"64\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It possesses strong mental capabilities, but its psychic powers are halved when it's not holding a silver spoon.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"It emits special alpha waves from its body that induce headaches just by being close by.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"It emits special alpha waves from its body that induce headaches just by being close by.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Many odd things happen if this Pokémon is close by. For example, it makes clocks run backwards.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"When it uses psychic power, all its brain cells work in unison to generate powerful alpha waves.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It possesses strong spiritual power. The more danger it faces, the stronger its psychic power.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If it uses its abilities, it emits special alpha waves that cause machines to malfunction.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it closes its eyes, twice as many alpha particles come out of the surface of its body.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It possesses strong spiritual power. The more danger it faces, the stronger its psychic power.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Kadabra emits a peculiar alpha wave if it develops a headache. Only those people with a particularly strong psyche can hope to become a Trainer of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Kadabra holds a silver spoon in its hand. The spoon is used to amplify the alpha waves in its brain. Without the spoon, the Pokémon is said to be limited to half the usual amount of its telekinetic powers.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is rumored that a boy with psychic abilities suddenly transformed into Kadabra while he was assisting research into extrasensory powers.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It happened one morning -a boy with extrasensory powers awoke in bed transformed into Kadabra.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It emits special alpha waves from its body that induce headaches just by being close.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"If one is nearby, an eerie shadow appears on TV screens. Seeing the shadow is said to bring bad luck.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When it uses its psychic power, it emits strong alpha waves that can ruin precision devices.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It stares at its silver spoon to focus its mind. It emits more alpha waves while doing so.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It possesses strong spiritual power. The more danger it faces, the stronger its psychic power.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it uses its abilities, it emits special alpha waves that cause machines to malfunction.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It stares at its silver spoon to focus its mind. It emits more alpha waves while doing so.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It stares at its silver spoon to focus its mind. It emits more alpha waves while doing so.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It stares at its silver spoon to focus its mind. It emits more alpha waves while doing so.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It stares at its silver spoon to focus its mind. It emits more alpha waves while doing so.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When it uses its psychic power, it emits strong alpha waves that can ruin precision devices.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it uses its abilities, it emits special alpha waves that cause machines to malfunction.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Kadabra emits a peculiar alpha wave if it develops a headache. Only those people with a particularly strong psyche can hope to become a Trainer of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Kadabra holds a silver spoon in its hand. The spoon is used to amplify the alpha waves in its brain. Without the spoon, the Pokémon is said to be limited to half the usual amount of its telekinetic powers.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A theory exists that this Pokémon was a young boy who couldn't control his psychic powers and ended up transformed into this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Kadabra's presence infests televisions and monitors with creepy shadows that bring bad luck.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It stares at a silver spoon to amplify its psychic powers before it lets loose. Apparently, gold spoons are no good.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It possesses strong mental capabilities, but its psychic powers are halved when it's not holding a silver spoon.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Many odd things happen if this Pokémon is close by. For example, it makes clocks run backward.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Many odd things happen if this Pokémon is close by. For example, it makes clocks run backward.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Using its psychic power, Kadabra levitates as it sleeps. It uses its springy tail as a pillow.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon's telekinesis is immensely powerful. To prepare for evolution, Kadabra stores up psychic energy in the star on its forehead.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"If one is nearby, an eerie shadow appears on TV screens. Seeing the shadow is said to bring bad luck.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When it uses its psychic power, it emits strong alpha waves that can ruin precision instruments.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"There are rumors that a child with mystical powers became a Kadabra; however, this remains unverified. I suspect that the spoon Kadabra holds enhances its brain waves.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If it uses its abilities, it emits special alpha waves that cause machines to malfunction.\"\n    }\n  ],\n  \"65\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A Pokémon that can memorize anything. It never forgets what it learns—that's why this Pokémon is smart.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its brain can outperform a supercomputer. Its intelligence quotient is said to be 5,000.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its brain can outperform a supercomputer. Its intelligence quotient is said to be 5,000.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A Pokémon that can memorize anything. It never forgets what it learns--that's why this Pokémon is smart.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A Pokémon that uses psychic power. It is highly intelligent and capable of instantly identifying its foe's weakness.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Closing both its eyes heightens all its other senses. This enables it to use its abilities to their extremes.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its brain cells multiply continually until it dies. As a result, it remembers everything.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It has an IQ of 5000. It calculates many things in order to gain the edge in every battle.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Closing both its eyes heightens all its other senses. This enables it to use its abilities to their extremes.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Alakazam's brain continually grows, making its head far too heavy to support with its neck. This Pokémon holds its head up using its psychokinetic power instead.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Alakazam's brain continually grows, infinitely multiplying brain cells. This amazing brain gives this Pokémon an astoundingly high IQ of 5,000. It has a thorough memory of everything that has occurred in the world.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"While it has strong psychic abilities and high intelligence, an Alakazam's muscles are very weak. It uses psychic power to move its body.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It does not like physical attacks very much. Instead, it freely uses extra-sensory powers to defeat foes.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its brain can outperform a supercomputer. Its IQ (intelligence quotient) is said to be around 5,000.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its superb memory lets it recall everything it has experienced from birth. Its IQ exceeds 5,000.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its highly developed brain is on par with a supercomputer. It can use all forms of psychic abilities.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The spoons clutched in its hands are said to have been created by its psychic powers.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Closing both its eyes heightens all its other senses. This enables it to use its abilities to their extremes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its brain cells multiply continually until it dies. As a result, it remembers everything.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The spoons clutched in its hands are said to have been created by its psychic powers.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The spoons clutched in its hands are said to have been created by its psychic powers.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The spoons clutched in its hands are said to have been created by its psychic powers.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The spoons clutched in its hands are said to have been created by its psychic powers.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its brain cells multiply continually until it dies. As a result, it remembers everything.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its brain can outperform a supercomputer. Its IQ (intelligence quotient) is said to be around 5,000.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Alakazam's brain continually grows, making its head far too heavy to support with its neck. This Pokémon holds its head up using its psychokinetic power instead.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Alakazam's brain continually grows, infinitely multiplying brain cells. This amazing brain gives this Pokémon an astoundingly high IQ of 5,000. It has a thorough memory of everything that has occurred in the world.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It is said to have an IQ of approximately 5,000. Its overflowing psychokinetic powers cause headaches to anyone nearby.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its brain cells continue to increase in number until its death. The older the Alakazam, the larger its head.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Alakazam uses its psychic powers to make the spoons it carries. Each spoon is an original that there's only one of in the whole world.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"If it trusts someone deeply, it will let them have one of its spoons. Anything you eat with that spoon is apparently delicious.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A Pokémon that can memorize anything. It never forgets what it learns—that's why this Pokémon is smart.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A Pokémon that can memorize anything. It never forgets what it learns—that's why this Pokémon is smart.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has an incredibly high level of intelligence. Some say that Alakazam remembers everything that ever happens to it, from birth till death.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Alakazam wields potent psychic powers. It's said that this Pokémon used these powers to create the spoons it holds.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its superb memory lets it recall everything it has experienced from birth. Its IQ exceeds 5,000.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its highly developed brain is on par with a supercomputer. It can use all forms of psychic abilities.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The longer Alakazam lives, the larger and heavier its head becomes. Our tests have shown that the strength of its psychic powers correlates positively to the weight of its head.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its brain cells multiply continually until it dies. As a result, it remembers everything.\"\n    }\n  ],\n  \"66\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It hefts a Graveler repeatedly to strengthen its entire body. It uses every type of martial arts.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Loves to build its muscles. It trains in all styles of martial arts to become even stronger.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Loves to build its muscles. It trains in all styles of martial arts to become even stronger.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Very powerful in spite of its small size. Its mastery of many types of martial arts makes it very tough.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its whole body is covered with muscles, so it can raise bulges anywhere. It can throw a hundred adults.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Always brimming with power, it passes time by lifting boulders. Doing so makes it even stronger.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It loves to work out and build its muscles. It is never satisfied, even if it trains hard all day long.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It trains by lifting rocks in the mountains. It can even pick up a Graveler with ease.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Always brimming with power, it passes time by lifting boulders. Doing so makes it even stronger.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Machop's muscles are special - they never get sore no matter how much they are used in exercise. This Pokémon has sufficient power to hurl a hundred adult humans.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Machop exercises by hefting around a Graveler as if it were a barbell. There are some Machop that travel the world in a quest to master all kinds of martial arts.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It continually undertakes strenuous training to master all forms of martial arts. Its strength lets it easily hoist a sumo wrestler onto its shoulders.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its whole body is composed of muscles. Even though it's the size of a human child, it can hurl 100 grown-ups.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Loves to build its muscles. It trains in all styles of martial arts to become even stronger.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It hefts a Graveler repeatedly to strengthen its entire body. It uses every type of martial arts.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its muscles never cramp however much it trains. It lives in the mountains away from humans.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Though small in stature, it is powerful enough to easily heft and throw a number of Geodude at once.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Always brimming with power, it passes time by lifting boulders. Doing so makes it even stronger.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It loves to work out and build its muscles. It is never satisfied, even if it trains hard all day long.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Though small in stature, it is powerful enough to easily heft and throw a number of Geodude at once.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Though small in stature, it is powerful enough to easily heft and throw a number of Geodude at once.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Though small in stature, it is powerful enough to easily heft and throw a number of Geodude at once.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Though small in stature, it is powerful enough to easily heft and throw a number of Geodude at once.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It hefts a Graveler repeatedly to strengthen its entire body. It uses every type of martial arts.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its whole body is composed of muscles. Even though it's the size of a human child, it can hurl 100 grown-ups.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Machop's muscles are special—they never get sore no matter how much they are used in exercise. This Pokémon has sufficient power to hurl a hundred adult humans.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Machop exercises by hefting around a Graveler as if it were a barbell. There are some Machop that travel the world in a quest to master all kinds of martial arts.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It loves working out. As it gazes at its muscles, which continue to swell day by day, it becomes more and more dedicated to its training.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"With its superhuman strength, it's able to throw a hundred people all at the same time. Its strength comes from lifting Graveler every day.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Once this Pokémon has gained enough confidence and muscle from training with its friends, it challenges Makuhita to a battle.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It likes food that's highly nutritious because its instincts drive it to build muscle efficiently.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Very powerful in spite of its small size. Its mastery of many types of martial arts makes it very tough.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Very powerful in spite of its small size. Its mastery of many types of martial arts makes it very tough.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its whole body is composed of muscles. Even though it's the size of a human child, it can hurl 100 grown-ups.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Always brimming with power, it passes time by lifting boulders. Doing so makes it even stronger.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It hefts a Graveler repeatedly to strengthen its entire body. It uses every type of martial arts.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its muscles never cramp however much it trains. It lives in the mountains away from humans.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though as small as a child, it has strength enough to easily throw a well-built adult. Striving to become ever stronger, Machop trains by carrying a Graveler on its shoulders.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its whole body is composed of muscles. Even though it's the size of a human child, it can hurl 100 grown-ups.\"\n    }\n  ],\n  \"67\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It willingly assists with hard labor because it knows the work is good training for its muscles.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its muscular body is so powerful, it must wear a power save belt to be able to regulate its motions.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its muscular body is so powerful, it must wear a power save belt to be able to regulate its motions.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The belt around its waist holds back its energy. Without it, this Pokémon would be unstoppable.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Although it is incredibly strong, it is always modest. It restrains its strength with a power-save belt.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It always goes at its full power, but this very tough and durable Pokémon never gets tired.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The muscles covering its body teem with power. Even when still, it exudes an amazing sense of strength.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This tough Pokémon always stays in the zone. Its muscles become thicker after every battle.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It always goes at its full power, but this very tough and durable Pokémon never gets tired.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Machoke's thoroughly toned muscles possess the hardness of steel. This Pokémon has so much strength, it can easily hold aloft a sumo wrestler on just one finger.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Machoke undertakes bodybuilding every day even as it helps people with tough, physically demanding labor. On its days off, this Pokémon heads to the fields and mountains to exercise and train.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A belt is worn by a Machoke to keep its overwhelming power under control. Because it is so dangerous, no one has ever removed the belt.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its formidable body never gets tired. It helps people by doing work such as the moving of heavy goods.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its muscular body is so powerful, it must wear a power-save belt to be able to regulate its motions.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Machoke's boundless power is very dangerous, so it wears a belt that suppresses its energy.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can lift a dump truck with one hand. Using that power, it helps people with heavy jobs.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It happily carries heavy cargo to toughen up. It willingly does hard work for people.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It always goes at its full power, but this very tough and durable Pokémon never gets tired.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The muscles covering its body teem with power. Even when still, it exudes an amazing sense of strength.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It happily carries heavy cargo to toughen up. It willingly does hard work for people.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It happily carries heavy cargo to toughen up. It willingly does hard work for people.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It happily carries heavy cargo to toughen up. It willingly does hard work for people.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It happily carries heavy cargo to toughen up. It willingly does hard work for people.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its muscular body is so powerful, it must wear a power-save belt to be able to regulate its motions.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can lift a dump truck with one hand. Using that power, it helps people with heavy jobs.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Machoke's thoroughly toned muscles possess the hardness of steel. This Pokémon has so much strength, it can easily hold aloft a sumo wrestler on just one finger.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Machoke undertakes bodybuilding every day even as it helps people with tough, physically demanding labor. On its days off, this Pokémon heads to the fields and mountains to exercise and train.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"As a result of its continual workouts, it has developed tremendous power. It uses that power to help people with their work.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It willingly assists with hard labor because it knows the work is good training for its muscles.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it encounters an enemy that's truly mighty, this Pokémon removes the power-save belt from its waist and unleashes its full power.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"A popular motif for sculptures, its incredibly well-developed muscles have captured the imagination of many an artist.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The belt around its waist holds back its energy. Without it, this Pokémon would be unstoppable.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The belt around its waist holds back its energy. Without it, this Pokémon would be unstoppable.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its muscular body is so powerful, it must wear a power-save belt to be able to regulate its motions.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its formidable body never gets tired. It helps people by doing work such as the moving of heavy goods.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Machoke's boundless power is very dangerous, so it wears a belt that suppresses its energy.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can lift a dump truck with one hand. Using that kind of strength, it helps people do heavy jobs.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A sturdy creature boasting a robust physique and boundless stamina. Loves training above all else and voluntarily assists with tasks such as construction and clearing land.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can lift a dump truck with one hand. Using that kind of strength, it helps people do heavy jobs.\"\n    }\n  ],\n  \"68\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It can lift heavy loads with the greatest of ease. It can even heft dump trucks. But its clumsy fingers prevent it from doing any precision work.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Using its heavy muscles, it throws powerful punches that can send the victim clear over the horizon.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Using its heavy muscles, it throws powerful punches that can send the victim clear over the horizon.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"One arm alone can move mountains. Using all four arms, this Pokémon fires off awesome punches.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Among its fighting moves is a simultaneous volley of an uppercut, hook, straight and Karate Chop from its four arms.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It quickly swings its four arms to rock its opponents with ceaseless punches and chops from all angles.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It uses its four powerful arms to pin the limbs of its foe, then throws the victim over the horizon.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"With four arms that react more quickly than it can think, it can execute many punches at once.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It quickly swings its four arms to rock its opponents with ceaseless punches and chops from all angles.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Machamp has the power to hurl anything aside. However, trying to do any work requiring care and dexterity causes its arms to get tangled. This Pokémon tends to leap into action before it thinks.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Machamp is known as the Pokémon that has mastered every kind of martial arts. If it grabs hold of the foe with its four arms, the battle is all but over. The hapless foe is thrown far over the horizon.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is impossible to defend against punches and chops doled out by its four arms. Its fighting spirit flares up when it faces a tough opponent.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its four ruggedly developed arms can launch a flurry of 1,000 punches in just two seconds.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its superpowerful punches are said to knock the victim flying clear over the horizon.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It punches with its four arms at blinding speed. It can launch 1,000 punches in two seconds.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can knock a train flying with a punch. However, it is terrible at delicate work using its fingers.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its four muscled arms slam foes with powerful punches and chops at blinding speed.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It quickly swings its four arms to rock its opponents with ceaseless punches and chops from all angles.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It uses its four powerful arms to pin the limbs of its foe, then throws the victim over the horizon.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its four muscled arms slam foes with powerful punches and chops at blinding speed.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its four muscled arms slam foes with powerful punches and chops at blinding speed.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its four muscled arms slam foes with powerful punches and chops at blinding speed.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its four muscled arms slam foes with powerful punches and chops at blinding speed.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its four ruggedly developed arms can launch a flurry of 1,000 punches in just two seconds.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It uses its four powerful arms to pin the limbs of its foe, then throws the victim over the horizon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Machamp has the power to hurl anything aside. However, trying to do any work requiring care and dexterity causes its arms to get tangled. This Pokémon tends to leap into action before it thinks.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Machamp is known as the Pokémon that has mastered every kind of martial arts. If it grabs hold of the foe with its four arms, the battle is all but over. The hapless foe is thrown far over the horizon.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It unleashes megaton-level punches that send opponents flying clear over the horizon.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It can lift heavy loads with the greatest of ease. It can even heft dump trucks. But its clumsy fingers prevent it from doing any precision work.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It grasps its opponents with its four arms and twists them up in an intricate hold. People call it \\\"the Machamp special.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"With four arms, it can attack and defend simultaneously. It's said to have mastered every martial art in the world.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"One arm alone can move mountains. Using all four arms, this Pokémon fires off awesome punches.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"One arm alone can move mountains. Using all four arms, this Pokémon fires off awesome punches.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It quickly swings its four arms to rock its opponents with ceaseless punches and chops from all angles.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With four arms that react more quickly than it can think, it can execute many punches at once.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It punches with its four arms at blinding speed. It can launch 1,000 punches in two seconds.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can knock a train flying with a punch. However, it is terrible at delicate work using its fingers.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"In close combat, its four arms afford it offensive and defensive supremacy. In but a blink, this valiant Pokémon can overwhelm its foes with more than 1,000 blows from its fists.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses its four powerful arms to pin the limbs of its foe, then throws the victim over the horizon.\"\n    }\n  ],\n  \"69\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It plants its feet deep underground to rehydrate itself. While doing so, it's unable to run away if it's attacked.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A carnivorous Pokémon that traps and eats bugs. It uses its root feet to soak up needed moisture.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A carnivorous Pokémon that traps and eats bugs. It uses its root feet to soak up needed moisture.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Prefers hot and humid places. It ensnares tiny insects with its vines and devours them.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A kind of bug-eating plant that hunts small insects. It uses its roots as feet for walking.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Even though its body is extremely skinny, it is blindingly fast when catching its prey.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It plants its feet deep underground to replenish water. It can't escape its enemy while it's rooted.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If it notices anything that moves, it immediately flings its vine at the object.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Even though its body is extremely skinny, it is blindingly fast when catching its prey.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Bellsprout's thin and flexible body lets it bend and sway to avoid any attack, however strong it may be. From its mouth, this Pokémon spits a corrosive fluid that melts even iron.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Bellsprout's thin and flexible body lets it bend and sway to avoid any attack, however strong it may be. From its mouth, this Pokémon spits a corrosive fluid that melts even iron.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Bellsprout's thin and flexible body lets it bend and sway to avoid any attack, however strong it may be. From its mouth, it leaks a fluid that melts even iron.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its bud looks like a human face. Because of the bud, it is rumored to be a type of legendary mandrake plant.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A carnivorous Pokémon that traps and eats bugs. It appears to use its root feet to replenish moisture.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It prefers hot and humid environments. It is quick at capturing prey with its vines.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It prefers hot and humid environments. It is quick at capturing prey with its vines.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It prefers hot and humid environments. It is quick at capturing prey with its vines.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Even though its body is extremely skinny, it is blindingly fast when catching its prey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It plants its feet deep underground to replenish water. It can't escape its enemy while it's rooted.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It prefers hot and humid environments. It is quick at capturing prey with its vines.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It prefers hot and humid environments. It is quick at capturing prey with its vines.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It prefers hot and humid environments. It is quick at capturing prey with its vines.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It prefers hot and humid environments. It is quick at capturing prey with its vines.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Even though its body is extremely skinny, it is blindingly fast when catching its prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its bud looks like a human face. Because of the bud, it is rumored to be a type of legendary mandrake plant.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Bellsprout's thin and flexible body lets it bend and sway to avoid any attack, however strong it may be. From its mouth, this Pokémon spits a corrosive fluid that melts even iron.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Bellsprout's thin and flexible body lets it bend and sway to avoid any attack, however strong it may be. From its mouth, this Pokémon spits a corrosive fluid that melts even iron.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Prefers hot and humid places. It ensnares tiny bugs with its vines and devours them.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Prefers hot and humid places. It ensnares tiny bugs with its vines and devours them.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It prefers hot and humid environments. It is quick at capturing prey with its vines.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It prefers hot and humid environments. It is quick at capturing prey with its vines.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"No matter what Bellsprout is doing, if it detects movement nearby, it will immediately react by reaching out with its thin vines.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It plants its feet deep underground to rehydrate itself. While doing so, it's unable to run away if it's attacked.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Even though its body is extremely skinny, it is blindingly fast when catching its prey.\"\n    }\n  ],\n  \"70\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Even though it is filled with acid, it does not melt because it also oozes a protective fluid.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"It spits out PoisonPowder to immobilize the enemy and then finishes it with a spray of Acid.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"It spits out PoisonPowder to immobilize the enemy and then finishes it with a spray of Acid.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"When hungry, it swallows anything that moves. Its hapless prey is melted inside by strong acids.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Armed with razor-sharp leaves, it uses toxic pollen to immobilize its enemy and melts the helpless foe with Acid.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Even though it is filled with Acid, it does not melt because it also oozes a neutralizing fluid.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If its prey is bigger than its mouth, it slices up the victim with sharp leaves, then eats every morsel.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it's hungry, it swings its razor-sharp leaves, slicing up any unlucky object nearby for food.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Even though it is filled with Acid, it does not melt because it also oozes a neutralizing fluid.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Weepinbell has a large hook on its rear end. At night, the Pokémon hooks on to a tree branch and goes to sleep. If it moves around in its sleep, it may wake up to find itself on the ground.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Weepinbell has a large hook on its rear end. At night, the Pokémon hooks on to a tree branch and goes to sleep. If it moves around in its sleep, it may wake up to find itself on the ground.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"At night, a Weepinbell hangs on to a tree branch with its hooked rear and sleeps. If it moves around in its sleep, it may wake up to find itself on the ground.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The leafy parts act as cutters for slashing foes. It spits a fluid that dissolves everything.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It spits out PoisonPowder to immobilize the enemy and then finishes it with a spray of Acid.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that appears to be a plant. It captures unwary prey by dousing them with a toxic powder.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon that appears to be a plant. It captures unwary prey by dousing them with a toxic powder.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon that appears to be a plant. It captures unwary prey by dousing them with a toxic powder.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Even though it is filled with acid, it does not melt because it also oozes a protective fluid.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If its prey is bigger than its mouth, it slices up the victim with sharp leaves, then eats every morsel.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon that appears to be a plant. It captures unwary prey by dousing them with a toxic powder.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon that appears to be a plant. It captures unwary prey by dousing them with a toxic powder.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A Pokémon that appears to be a plant. It captures unwary prey by dousing them with a toxic powder.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A Pokémon that appears to be a plant. It captures unwary prey by dousing them with a toxic powder.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The leafy parts act as cutters for slashing foes. It spits a fluid that dissolves everything.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It spits out Poison Powder to immobilize the enemy and then finishes it with a spray of Acid.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Weepinbell has a large hook on its rear end. At night, the Pokémon hooks on to a tree branch and goes to sleep. If it moves around in its sleep, it may wake up to find itself on the ground.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Weepinbell has a large hook on its rear end. At night, the Pokémon hooks on to a tree branch and goes to sleep. If it moves around in its sleep, it may wake up to find itself on the ground.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When hungry, it swallows anything that moves. Its hapless prey is dissolved by strong acids.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When hungry, it swallows anything that moves. Its hapless prey is dissolved by strong acids.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This Pokémon has the appearance of a plant. It captures unwary prey by dousing them with a toxic powder.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This Pokémon has the appearance of a plant. It captures unwary prey by dousing them with a toxic powder.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Even though it is filled with acid, it does not melt because it also oozes a protective fluid.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The leafy parts act as cutters for slashing foes. It spits a fluid that dissolves everything.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It spits out Poison Powder to immobilize the enemy and then finishes it with a spray of acid.\"\n    }\n  ],\n  \"71\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"After dissolving many prey, this Pokémon's acid becomes sweeter. This makes it even easier to attract more prey.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Said to live in huge colonies deep in jungles, although no one has ever returned from there.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Said to live in huge colonies deep in jungles, although no one has ever returned from there.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Lures prey with the sweet aroma of honey. Swallowed whole, the prey is melted in a day, bones and all.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Attracts prey with sweet-smelling honey. Its prey include bugs, naturally, and even large animals on occasion.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Acid that has dissolved many prey becomes sweeter, making it even more effective at attracting prey.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This horrifying plant Pokémon attracts prey with aromatic honey, then melts them in its mouth.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Once ingested into this Pokémon's body, even the hardest object will melt into nothing.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Acid that has dissolved many prey becomes sweeter, making it even more effective at attracting prey.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Victreebel has a long vine that extends from its head. This vine is waved and flicked about as if it were an animal to attract prey. When an unsuspecting prey draws near, this Pokémon swallows it whole.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Victreebel has a long vine that extends from its head. This vine is waved and flicked about as if it were an animal to attract prey. When an unsuspecting prey draws near, this Pokémon swallows it whole.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The long vine extending from its head is waved about as if it were a living thing to attract prey. When an unsuspecting victim approaches, it is swallowed whole.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Lures prey into its mouth with a honeylike aroma. The helpless prey is melted with a dissolving fluid.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Said to live in huge colonies deep in jungles, although no one has ever returned from there.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It pools in its mouth a fluid with a honeylike scent, which is really an acid that dissolves anything.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It pools in its mouth a fluid with a honeylike scent, which is really an acid that dissolves anything.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It pools in its mouth a fluid with a honeylike scent, which is really an acid that dissolves anything.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Acid that has dissolved many prey becomes sweeter, making it even more effective at attracting prey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This horrifying plant Pokémon attracts prey with aromatic honey, then melts them in its mouth.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It pools in its mouth a fluid with a honeylike scent, which is really an acid that dissolves anything.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It pools in its mouth a fluid with a honeylike scent, which is really an acid that dissolves anything.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It pools in its mouth a fluid with a honey-like scent, which is really an acid that dissolves anything.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It pools in its mouth a fluid with a honey-like scent, which is really an acid that dissolves anything.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Said to live in huge colonies deep in jungles, although no one has ever returned from there.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Once ingested into this Pokémon's body, even the hardest object will melt into nothing.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Victreebel has a long vine that extends from its head. This vine is waved and flicked about as if it were an animal to attract prey. When an unsuspecting prey draws near, this Pokémon swallows it whole.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Victreebel has a long vine that extends from its head. This vine is waved and flicked about as if it were an animal to attract prey. When an unsuspecting prey draws near, this Pokémon swallows it whole.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Lures prey with the sweet aroma of honey. Swallowed whole, the prey is dissolved in a day, bones and all.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Lures prey with the sweet aroma of honey. Swallowed whole, the prey is dissolved in a day, bones and all.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"In its mouth, it pools a fragrant nectar-like fluid. The fluid is really an acid that dissolves anything.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"In its mouth, it pools a fragrant nectar-like fluid. The fluid is really an acid that dissolves anything.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lures prey into its mouth with a nectar-like aroma. The helpless prey is melted with a dissolving fluid.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"After dissolving many prey, this Pokémon's acid becomes sweeter. This makes it even easier to attract more prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Once taken into Victreebel's body, even the hardest object will be melted into nothing by the Pokémon's acid.\"\n    }\n  ],\n  \"72\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Drifts in shallow seas. Anglers who hook them by accident are often punished by its stinging acid.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Drifts in shallow seas. Anglers who hook them by accident are often punished by its stinging acid.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It can sometimes be found all dry and shriveled up on a beach. Toss it back into the sea to revive it.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Fires beams of light from its clear eyes. Floats around in shallow waters and may sting unwary anglers.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When the tide goes out, dehydrated Tentacool remains can be found washed up on the shore.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It drifts aimlessly in waves. Very difficult to see in water, it may not be noticed until it stings.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"As it floats along on the waves, it uses its toxic feelers to stab anything it touches.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When the tide goes out, dehydrated Tentacool remains can be found washed up on the shore.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Tentacool's body is largely composed of water. If it is removed from the sea, it dries up like parchment. If this Pokémon happens to become dehydrated, put it back into the sea.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Tentacool absorbs sunlight and refracts it using water inside its body to convert it into beam energy. This Pokémon shoots beams from its crystal-like eyes.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its body is almost entirely composed of water. It ensnares its foe with its two long tentacles, then stabs with the poison stingers at their tips.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its eyes are as transparent as crystals. From them, it shoots mysterious beams of light.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Drifts in shallow seas. Anglers who hook them by accident are often punished by their stingers.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body is virtually composed of water. It shoots strange beams from its crystal-like eyes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It drifts in sea currents. Countless fishermen are hurt by its poison stingers.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Because its body is almost entirely composed of water, it shrivels up if it is washed ashore.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When the tide goes out, dehydrated Tentacool remains can be found washed up on the shore.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It drifts aimlessly in waves. Very difficult to see in water, it may not be noticed until it stings.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Because its body is almost entirely composed of water, it shrivels up if it is washed ashore.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because its body is almost entirely composed of water, it shrivels up if it is washed ashore.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Because its body is almost entirely composed of water, it shrivels up if it is washed ashore.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Because its body is almost entirely composed of water, it shrivels up if it is washed ashore.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its body is virtually composed of water. It shoots strange beams from its crystal-like eyes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Drifts in shallow seas. Anglers who hook them by accident are often punished by their stingers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Tentacool's body is largely composed of water. If it is removed from the sea, it dries up like parchment. If this Pokémon happens to become dehydrated, put it back into the sea.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Tentacool absorbs sunlight and refracts it using water inside its body to convert it into beam energy. This Pokémon shoots beams from the small round organ above its eyes.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They can be found lying dehydrated on beaches, but they are often still alive. When soaked in water, they will revive.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It drifts in shallow seas, such as the areas near beaches. If you get bitten or stabbed by its toxic tentacles, rush to the hospital.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It drifts through the sea searching for prey. Its poisonous tentacles break off sometimes, but after a while, they grow back.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its body is 99% water. The remaining 1% contains the organ that makes its poison.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It can sometimes be found all dry and shriveled up on a beach. Toss it back into the sea to revive it.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It can sometimes be found all dry and shriveled up on a beach. Toss it back into the sea to revive it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Tentacool is not a particularly strong swimmer. It drifts across the surface of shallow seas as it searches for prey.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is mostly made of water. A Tentacool out in the ocean is very hard to spot, because its body blends in with the sea.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body is mostly composed of water. It shoots strange beams from its crystal-like eyes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It drifts in sea currents. Countless fishers are hurt by its poison stingers.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"They fire beams from the glassy, magenta orbs that resemble eyes atop their heads, and they drift in shallow seas. During low tide, they can sometimes be found on beaches, desiccated.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When the tide goes out, dehydrated Tentacool can be found left behind on the shore.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its eyes are as transparent as crystals. From them, it shoots mysterious beams of light.\"\n    }\n  ],\n  \"73\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The tentacles are normally kept short. On hunts, they are extended to ensnare and immobilize prey.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The tentacles are normally kept short. On hunts, they are extended to ensnare and immobilize prey.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its 80 tentacles can stretch and contract freely. They wrap around prey and weaken it with poison.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It has 80 tentacles. Once they wrap around an enemy, the tentacles will not release, no matter what.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its 80 tentacles absorb water and stretch almost endlessly to Constrict its prey and enemies.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"In battle, it extends all 80 of its tentacles to entrap its opponent inside a poisonous net.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When its 80 feelers absorb water, it stretches to become like a net to entangle its prey.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its 80 tentacles absorb water and stretch almost endlessly to Constrict its prey and enemies.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Tentacruel has large red orbs on its head. The orbs glow before lashing the vicinity with a harsh ultrasonic blast. This Pokémon's outburst creates rough waves around it.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Tentacruel has tentacles that can be freely elongated and shortened at will. It ensnares prey with its tentacles and weakens the prey by dosing it with a harsh toxin. It can catch up to 80 prey at the same time.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It lives in complex rock formations on the ocean floor and traps prey using its 80 tentacles. Its red orbs glow when it grows excited or agitated.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has 80 tentacles that move about freely. They can sting, causing poisoning and sharp, stabbing pain.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The tentacles are normally kept short. On hunts, they are extended to ensnare and immobilize prey.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"With 80 tentacles for ensnaring victims, it prevents escape until the prey is weakened by poison.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It alerts others to danger by stridently flashing the red orbs on its head.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It extends its 80 tentacles to form an encircling poisonous net that is difficult to escape.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its 80 tentacles absorb water and stretch almost endlessly to constrict its prey and enemies.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"In battle, it extends all 80 of its tentacles to entrap its opponent inside a poisonous net.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It extends its 80 tentacles to form an encircling poisonous net that is difficult to escape.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It extends its 80 tentacles to form an encircling poisonous net that is difficult to escape.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It extends its 80 tentacles to form an encircling poisonous net that is difficult to escape.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It extends its 80 tentacles to form an encircling poisonous net that is difficult to escape.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The tentacles are normally kept short. On hunts, they are extended to ensnare and immobilize prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has 80 tentacles that move about freely. They can sting, causing poisoning and sharp, stabbing pain.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Tentacruel has large red orbs on its head. The orbs glow before lashing the vicinity with a harsh ultrasonic blast. This Pokémon's outburst creates rough waves around it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Tentacruel has tentacles that can be freely elongated and shortened at will. It ensnares prey with its tentacles and weakens the prey by dosing it with a harsh toxin. It can catch up to 80 prey at the same time.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Normally, it has 80 poisonous tentacles. The longer one has been alive, the fewer tentacles it will have.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Although these Pokémon are rare, when a large outbreak of them occurs, all fish Pokémon disappear from the surrounding sea.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It fires off ultrasonic waves from its red orbs to weaken its prey, and then it wraps them up in its 80 tentacles.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It communicates with others of its kind by lighting up the red orbs on its head. When the orbs are blinking, it's a warning sign.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its 80 tentacles can stretch and contract freely. They wrap around prey and weaken it with poison.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its 80 tentacles can stretch and contract freely. They wrap around prey and weaken it with poison.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When the red orbs on Tentacruel's head glow brightly, watch out. The Pokémon is about to fire off a burst of ultrasonic waves.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its 80 tentacles can stretch and shrink freely. Tentacruel ensnares prey in a net of spread-out tentacles, delivering venomous stings to its catch.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"With 80 tentacles for ensnaring victims, it prevents escape until the prey is weakened by poison.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It alerts others to danger by stridently flashing the red orbs on its head.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It has 80 tentacles, each with a venomous tip. These tentacles are also extendible, lengthening when Tentacruel attempts to catch prey. Use caution.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"On the rare occasions that large outbreaks of Tentacruel occur, all fish Pokémon disappear from the surrounding sea.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In battle, it extends all 80 of its tentacles to entrap its opponent inside a poisonous net.\"\n    }\n  ],\n  \"74\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"At rest, it looks just like a rock. Carelessly stepping on it will make it swing its fists angrily.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Found in fields and mountains. Mistaking them for boulders, people often step or trip on them.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Found in fields and mountains. Mistaking them for boulders, people often step or trip on them.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Commonly found near mountain trails, etc. If you step on one by accident, it gets angry.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"When traveling uphill, if it encounters a raised step, it cleverly hoists itself up and over using its two arms.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Most people may not notice, but a closer look should reveal that there are many Geodude around.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It uses its arms to steadily climb steep mountain paths. It swings its fists around if angered.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Proud of their sturdy bodies, they bash against each other in a contest to prove whose is harder.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Most people may not notice, but a closer look should reveal that there are many Geodude around.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The longer a Geodude lives, the more its edges are chipped and worn away, making it more rounded in appearance. However, this Pokémon's heart will remain hard, craggy, and rough always.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When Geodude sleeps deeply, it buries itself halfway into the ground. It will not awaken even if hikers step on it unwittingly. In the morning, this Pokémon rolls downhill in search of food.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It climbs mountain paths using only the power of its arms. Because they look just like boulders lining paths, hikers may step on them without noticing.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its round form makes it easy to pick up. Some people have used them to hurl at each other in a snowball fight.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Found in fields and mountains. Mistaking them for boulders, people often step or trip on them.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Many live on mountain trails and remain half buried while keeping an eye on climbers.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is impossible to distinguish from rocks. It slams against others in contests of hardness.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"At rest, it looks just like a rock. Carelessly stepping on it will make it swing its fists angrily.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Most people may not notice, but a closer look should reveal that there are many Geodude around.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It uses its arms to steadily climb steep mountain paths. It swings its fists around if angered.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"At rest, it looks just like a rock. Carelessly stepping on it will make it swing its fists angrily.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"At rest, it looks just like a rock. Carelessly stepping on it will make it swing its fists angrily.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"At rest, it looks just like a rock. Carelessly stepping on it will make it swing its fists angrily.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"At rest, it looks just like a rock. Carelessly stepping on it will make it swing its fists angrily.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Found in fields and mountains. Mistaking them for boulders, people often step or trip on them.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is impossible to distinguish from rocks. It slams against others in contests of hardness.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The longer a Geodude lives, the more its edges are chipped and worn away, making it more rounded in appearance. However, this Pokémon's heart will remain hard, craggy, and rough always.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Geodude sleeps deeply, it buries itself halfway into the ground. It will not awaken even if hikers step on it unwittingly. In the morning, this Pokémon rolls downhill in search of food.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its round body makes it easy to pick up, but it is hard and heavy. It's dangerous to play with them as if they were snowballs.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"There are plenty of them to be found along any road. A scholar with too much free time once counted a hundred of them along a single route.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Geodude that have lived a long life have had all their edges smoothed out until they're totally round. They also have a calm, quiet disposition.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It uses both hands to climb precipitous cliffs. People who see it in action have been known to take up bouldering.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Commonly found near mountain trails and the like. If you step on one by accident, it gets angry.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Commonly found near mountain trails and the like. If you step on one by accident, it gets angry.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Many live on mountain trails and remain half-buried while keeping an eye on climbers.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is impossible to distinguish from rocks. It slams against others in contests of toughness.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Makes its home in mountainous regions, using its arms to climb along harsh mountain roads. Can be troublesome—carelessly kicking one will cause it to fly into a rage and chase after you.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"At rest, it looks just like a rock. Carelessly stepping on it will make it swing its fists angrily.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Most people may not notice, but a closer look should reveal that there are many Geodude around.\"\n    }\n  ],\n  \"75\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Often seen rolling down mountain trails. Obstacles are just things to roll straight over, not avoid.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Rolls down slopes to move. It rolls over any obstacle without slowing or changing its direction.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Rolls down slopes to move. It rolls over any obstacle without slowing or changing its direction.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Often seen rolling down mountain trails. Obstacles are just things to roll straight over, not avoid.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Rolls on steep mountainous trails. It plows through grass, trees and anything else that gets in its way.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"With a free and uncaring nature, it doesn't mind if pieces break off while it rolls down mountains.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \" A slow walker, it rolls to move. It pays no attention to any object that happens to be in its path.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It travels by rolling on mountain paths. If it gains too much speed, it stops by running into huge rocks.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"With a free and uncaring nature, it doesn't mind if pieces break off while it rolls down mountains.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Graveler grows by feeding on rocks. Apparently, it prefers to eat rocks that are covered in moss. This Pokémon eats its way through a ton of rocks on a daily basis.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Rocks are Graveler's favorite food. This Pokémon will climb a mountain from the base to the summit, crunchingly feasting on rocks all the while. Upon reaching the peak, it rolls back down to the bottom.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"They descend from mountains by tumbling down steep slopes. They are so brutal, they smash aside obstructing trees and massive boulders with thunderous tackles.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Be careful while hiking on mountain trails. Graveler may come rolling down the path without slowing.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Rolls down slopes to move. It rolls over any obstacle without slowing or changing its direction.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Graveler make their homes on sheer cliff faces by gouging out numerous horizontal holes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It tumbles down slopes, heedless of any body parts chipping off. It eats a ton of rocks daily.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It rolls on mountain paths to move. Once it builds momentum, no Pokémon can stop it without difficulty.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"With a free and uncaring nature, it doesn't mind if pieces break off while it rolls down mountains.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A slow walker, it rolls to move. It pays no attention to any object that happens to be in its path.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It rolls on mountain paths to move. Once it builds momentum, no Pokémon can stop it without difficulty.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It rolls on mountain paths to move. Once it builds momentum, no Pokémon can stop it without difficulty.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It rolls on mountain paths to move. Once it builds momentum, no Pokémon can stop it without difficulty.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It rolls on mountain paths to move. Once it builds momentum, no Pokémon can stop it without difficulty.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"With a free and uncaring nature, it doesn't mind if pieces break off while it rolls down mountains.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Rolls down slopes to move. It rolls over any obstacle without slowing or changing its direction.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Graveler grows by feeding on rocks. Apparently, it prefers to eat rocks that are covered in moss. This Pokémon eats its way through a ton of rocks on a daily basis.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Rocks are Graveler's favorite food. This Pokémon will climb a mountain from the base to the summit, crunchingly feasting on rocks all the while. Upon reaching the peak, it rolls back down to the bottom.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Mossy rocks are its favorite food. It can devour a ton a day while crunching loudly.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This slow-footed Pokémon moves by curling up and rolling instead of walking. With enough momentum, its speed can exceed 60 mph.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It climbs up cliffs as it heads toward the peak of a mountain. As soon as it reaches the summit, it rolls back down the way it came.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It travels by rolling down cliffs. If it falls into a river, it will explode with its last gasp.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Often seen rolling down mountain trails. Obstacles are just things to roll straight over, not avoid.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Often seen rolling down mountain trails. Obstacles are just things to roll straight over, not avoid.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Graveler make their homes on sheer cliff faces that have numerous holes in them.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It tumbles down slopes, heedless of any body parts chipping off. It eats a ton of rocks daily.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Dwells in holes dug into sheer walls of stone. It enjoys rolling down slopes as though it were a boulder during a rockfall, so keep an eye upward while traversing mountain roads.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A slow walker, it rolls to move. It pays no attention to any object that happens to be in its path.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Moss-covered rocks are Graveler's favorite food. It consumes over a ton of them a day, crunching loudly while it eats.\"\n    }\n  ],\n  \"76\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Once it sheds its skin, its body turns tender and whitish. Its hide hardens when it's exposed to air.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its boulder-like body is extremely hard. It can easily withstand dynamite blasts without damage.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its boulder-like body is extremely hard. It can easily withstand dynamite blasts without damage.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Once it sheds its skin, its body turns tender and whitish. Its hide hardens when it's exposed to air.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its body, which weighs over 660 pounds, is as hard as stone. It grows bigger by shedding its skin once a year.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It sheds its skin once a year. The discarded shell immediately hardens and crumbles away.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It is capable of blowing itself up. It uses this explosive force to jump from mountain to mountain.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its rock-like body is so durable, even high-powered dynamite blasts fail to scratch its rugged hide.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It sheds its skin once a year. The discarded shell immediately hardens and crumbles away.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Golem live up on mountains. If there is a large earthquake, these Pokémon will come rolling down off the mountains en masse to the foothills below.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Golem is known for rolling down from mountains. To prevent them from rolling into the homes of people downhill, grooves have been dug into the sides of mountains to serve as guideways for diverting this Pokémon's course.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is said to live in volcanic craters on mountain peaks. Once a year, it sheds its hide and grows larger. The shed hide crumbles and returns to the soil.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is enclosed in a hard shell that is as rugged as slabs of rock. It sheds skin once a year to grow larger.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its boulder-like body is extremely hard. It can easily withstand dynamite blasts without taking damage.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It sheds its hide once a year. Its boulderlike body is so tough, even dynamite can't harm it.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It tumbles down mountains, leaving grooves from peak to base. Stay clear of these grooves.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Even dynamite can't harm its hard, boulderlike body. It sheds its hide just once a year.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It sheds its skin once a year. The discarded shell immediately hardens and crumbles away.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is capable of blowing itself up. It uses this explosive force to jump from mountain to mountain.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Even dynamite can't harm its hard, boulderlike body. It sheds its hide just once a year.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Even dynamite can't harm its hard, boulderlike body. It sheds its hide just once a year.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Even dynamite can't harm its hard, boulder-like body. It sheds its hide just once a year.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Even dynamite can't harm its hard, boulder-like body. It sheds its hide just once a year.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It tumbles down mountains, leaving grooves from peak to base. Stay clear of these grooves.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Even dynamite can't harm its hard, boulder-like body. It sheds its hide just once a year.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Golem live up on mountains. If there is a large earthquake, these Pokémon will come rolling down off the mountains en masse to the foothills below.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Golem is known for rolling down from mountains. To prevent them from rolling into the homes of people downhill, grooves have been dug into the sides of mountains to serve as guideways for diverting this Pokémon's course.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its body can survive dynamite blasts without a single scratch, but it hates rain and humidity.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Once a year, this Pokémon molts, and its shed shell returns to the soil. This process creates enriched soil, so farmers collect the shells.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When Golem grow old, they stop shedding their shells. Those that have lived a long, long time have shells green with moss.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It detonates its own body. The power from that explosion can propel it up steep mountain paths with amazing speed.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Once it sheds its skin, its body turns tender and whitish. Its hide hardens when it's exposed to air.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Once it sheds its skin, its body turns tender and whitish. Its hide hardens when it's exposed to air.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It sheds its hide once a year. Its boulder-like body is so tough, even dynamite can't harm it.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It tumbles down mountains, leaving grooves from peak to base. Stay clear of these grooves.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The rocklike shell is shed each year. The cast-off shell then crumbles, reverting to a mass of soil, which can be spread across fields to promote crop growth.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is enclosed in a hard shell that is as rugged as slabs of rock. It sheds skin once a year to grow larger.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It deliberately blows itself up, then uses this explosive force to jump from mountain to mountain.\"\n    }\n  ],\n  \"77\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its hooves are 10 times harder than diamonds. It can trample anything completely flat in little time.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its hooves are 10 times harder than diamonds. It can trample anything completely flat in little time.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Capable of jumping incredibly high. Its hooves and sturdy legs absorb the impact of a hard landing.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Capable of jumping over the Eiffel Tower in a single giant leap. Its hooves are ten times harder than diamonds.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is a weak runner immediately after birth. It gradually becomes faster by chasing after its parents.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its hind legs, which have harder-than-diamond hooves, kick back at any presence it senses behind it.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Training by jumping over grass that grows longer every day has made it a world-class jumper.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is a weak runner immediately after birth. It gradually becomes faster by chasing after its parents.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ponyta is very weak at birth. It can barely stand up. This Pokémon becomes stronger by stumbling and falling to keep up with its parent.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Ponyta is very weak at birth. It can barely stand up. This Pokémon becomes stronger by stumbling and falling to keep up with its parent.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Ponyta is very weak at birth. It can barely stand up. Its legs become stronger as it stumbles and falls while trying to keep up with its parent.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its body is light, and its legs are incredibly powerful. It can clear Ayers Rock in one leap.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its hooves are ten times harder than diamond. It can trample anything completely flat in little time.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"About an hour after birth, its fiery mane and tail grow out, giving it an impressive appearance.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its legs grow strong while it chases after its parent. It runs in fields and mountains all day.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"As a newborn, it can barely stand. However, through galloping, its legs are made tougher and faster.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is a weak runner immediately after birth. It gradually becomes faster by chasing after its parents.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its hind legs, which have hooves that are harder than diamond, kick back at any presence it senses behind it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"As a newborn, it can barely stand. However, through galloping, its legs are made tougher and faster.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"As a newborn, it can barely stand. However, through galloping, its legs are made tougher and faster.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"As a newborn, it can barely stand. However, through galloping, its legs are made tougher and faster.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"As a newborn, it can barely stand. However, through galloping, its legs are made tougher and faster.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"As a newborn, it can barely stand. However, through galloping, its legs are made tougher and faster.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its legs grow strong while it chases after its parent. It runs in fields and mountains all day.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ponyta is very weak at birth. It can barely stand up. This Pokémon becomes stronger by stumbling and falling to keep up with its parent.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ponyta is very weak at birth. It can barely stand up. This Pokémon becomes stronger by stumbling and falling to keep up with its parent.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Capable of jumping incredibly high. Its hooves and sturdy legs absorb the impact of a hard landing.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Capable of jumping incredibly high. Its hooves and sturdy legs absorb the impact of a hard landing.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It can't run properly when it's newly born. As it races around with others of its kind, its legs grow stronger.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If you've been accepted by Ponyta, its burning mane is mysteriously no longer hot to the touch.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"About an hour after birth, Ponyta's fiery mane and tail grow out, giving the Pokémon an impressive appearance.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its legs grow strong while it chases after its parents. It runs all day in fields and on mountains.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"These Pokémon live in herds out in the grassland. Newborn foals lack their fiery manes, which will develop about an hour after birth.\"\n    }\n  ],\n  \"78\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Very competitive, this Pokémon will chase anything that moves fast in the hopes of racing it.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Very competitive, this Pokémon will chase anything that moves fast in the hopes of racing it.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Just loves to run. If it sees something faster than itself, it will give chase at top speed.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Unable to restrain itself from running after fast trains or cars. Capable of reaching 150 mph at full speed.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"At full gallop, its four hooves barely touch the ground because it moves so incredibly fast.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"With incredible acceleration, it reaches its top speed of 150 mph after running just ten steps.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It just loves to gallop. The faster it goes, the longer the swaying flames of its mane will become.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"At full gallop, its four hooves barely touch the ground because it moves so incredibly fast.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Rapidash usually can be seen casually cantering in the fields and plains. However, when this Pokémon turns serious, its fiery manes flare and blaze as it gallops its way up to 150 mph.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Rapidash usually can be seen casually cantering in the fields and plains. However, when this Pokémon turns serious, its fiery manes flare and blaze as it gallops its way up to 150 mph.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It usually canters casually in the fields and plains. But once a Rapidash turns serious, its fiery manes flare and blaze as it gallops its way up to 150 mph.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It can gallop at a top speed of 150 miles per hour. It can race as fast as a bullet train while ablaze.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Very competitive, this Pokémon will chase anything that moves fast in the hopes of racing it.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It gallops at nearly 150 mph. With its mane blazing ferociously, it races as if it were an arrow.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has astounding acceleration. From a standstill, it can reach top speed within 10 steps.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When at an all-out gallop, its blazing mane sparkles, enhancing its beautiful appearance.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"At full gallop, its four hooves barely touch the ground because it moves so incredibly fast.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"With incredible acceleration, it reaches its top speed of 150 mph after running just 10 steps.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When at an all-out gallop, its blazing mane sparkles, enhancing its beautiful appearance.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When at an all-out gallop, its blazing mane sparkles, enhancing its beautiful appearance.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When at an all-out gallop, its blazing mane sparkles, enhancing its beautiful appearance.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When at an all-out gallop, its blazing mane sparkles, enhancing its beautiful appearance.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Very competitive, this Pokémon will chase anything that moves fast in the hopes of racing it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It gallops at nearly 150 mph. With its mane blazing ferociously, it races as if it were an arrow.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Rapidash usually can be seen casually cantering in the fields and plains. However, when this Pokémon turns serious, its fiery manes flare and blaze as it gallops its way up to 150 mph.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Rapidash usually can be seen casually cantering in the fields and plains. However, when this Pokémon turns serious, its fiery manes flare and blaze as it gallops its way up to 150 mph.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Just loves to run. If it sees something faster than itself, it will give chase at top speed.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Just loves to run. If it sees something faster than itself, it will give chase at top speed.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon can be seen galloping through fields at speeds of up to 150 mph, its fiery mane fluttering in the wind.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The fastest runner becomes the leader, and it decides the herd's pace and direction of travel.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It gallops at nearly 150 mph. With its mane blazing ferociously, it races as if it were an arrow.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has astounding acceleration. From a standstill, it can reach top speed within 10 steps.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Fiery mane aglow, Rapidash darts like an arrow across the land. This prodigiously swift creature can traverse the vast region of Hisui in a day and a half.\"\n    }\n  ],\n  \"79\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is incredibly slow and dopey. It takes five seconds for it to feel pain when under attack.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Incredibly slow and dopey. It takes 5 seconds for it to feel pain when under attack.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Incredibly slow and dopey. It takes 5 seconds for it to feel pain when under attack.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Incredibly slow and sluggish. It is quite content to loll about without worrying about the time.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A dopey Pokémon that remains in a daze except when fishing with its tail. Awake or asleep, there is little difference.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It lazes vacantly near water. If something bites its tail, it won't even notice for a whole day.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A sweet sap leaks from its tail's tip. Although not nutritious, the tail is pleasant to chew on.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is always so absent-minded that it won't react, even if its flavorful tail is bitten.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It lazes vacantly near water. If something bites its tail, it won't even notice for a whole day.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Slowpoke uses its tail to catch prey by dipping it in water at the side of a river. However, this Pokémon often forgets what it's doing and often spends entire days just loafing at water's edge.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Slowpoke uses its tail to catch prey by dipping it in water at the side of a river. However, this Pokémon often forgets what it's doing and often spends entire days just loafing at water's edge.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It catches prey by dipping its tail in water at the side of a river. But it often forgets what it is doing and spends entire days just loafing at water's edge.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is always vacantly lost in thought, but no one knows what it is thinking about. It is good at fishing with its tail.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Incredibly slow and dopey. It takes five seconds for it to feel pain when under attack.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Although slow, it is skilled at fishing with its tail. It does not feel pain if its tail is bitten.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Although slow, it is skilled at fishing with its tail. It does not feel pain if its tail is bitten.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Although slow, it is skilled at fishing with its tail. It does not feel pain if its tail is bitten.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lazes vacantly near water. If something bites its tail, it won't even notice for a whole day.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A sweet sap leaks from its tail's tip. Although not nutritious, the tail is pleasant to chew on.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Although slow, it is skilled at fishing with its tail. It does not feel pain if its tail is bitten.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Although slow, it is skilled at fishing with its tail. It does not feel pain if its tail is bitten.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Although slow, it is skilled at fishing with its tail. It does not feel pain if its tail is bitten.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Although slow, it is skilled at fishing with its tail. It does not feel pain if its tail is bitten.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is always vacantly lost in thought, but no one knows what it is thinking about. It is good at fishing with its tail.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lazes vacantly near water. If something bites its tail, it won't even notice for a whole day.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Slowpoke uses its tail to catch prey by dipping it in water at the side of a river. However, this Pokémon often forgets what it's doing and often spends entire days just loafing at water's edge.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Slowpoke uses its tail to catch prey by dipping it in water at the side of a river. However, this Pokémon often forgets what it's doing and often spends entire days just loafing at water's edge.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its long tail often breaks off. It doesn't really feel any pain, though, and the tail grows back, so Slowpoke isn't particularly bothered.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Alolan home cooking involves drying Slowpoke tails and then simmering them into a salty stew.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"There are some places where Slowpoke is worshiped because of a long-standing belief that whenever Slowpoke yawns, it rains.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although their tails, which fall off naturally, can easily be found lying around, they're a precious ingredient for cooking.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Incredibly slow and sluggish. It is quite content to loll about without worrying about the time.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Incredibly slow and sluggish. It is quite content to loll about without worrying about the time.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Slow-witted and oblivious, this Pokémon won't feel any pain if its tail gets eaten. It won't notice when its tail grows back, either.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When this Pokémon's tail is soaked in water, sweetness seeps from it. Slowpoke uses this trait to lure in and fish up other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Although slow, it is skilled at fishing with its tail. It does not feel pain if its tail is bitten.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Although slow, it is skilled at fishing with its tail. It does not feel pain if its tail is bitten.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is incredibly slow and dopey. It takes five seconds for it to feel pain when under attack.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is always vacantly lost in thought, but no one knows what it is thinking about. It is good at fishing with its tail.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It lazes vacantly near water. If something bites its tail, it won't even notice for a whole day.\"\n    }\n  ],\n  \"80\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"When a Slowpoke went hunting in the sea, its tail was bitten by a Shellder. That made it evolve into Slowbro.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The Shellder that is latched onto Slowpoke's tail is said to feed on the host's left over scraps.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The Shellder that is latched onto Slowpoke's tail is said to feed on the host's left over scraps.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Lives lazily by the sea. If the Shellder on its tail comes off, it becomes a Slowpoke again.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"If its tail is bitten by a Shellder, Slowpoke evolves into Slowbro. The Shellder seems to like its crunchy tail.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If the tail-biting Shellder is thrown off in a harsh battle, it reverts to being an ordinary Slowpoke.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Naturally dull to begin with, it lost its ability to feel pain due to Shellder's seeping poison.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"An attached Shellder won't let go because of the tasty flavor that oozes out of its tail.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If the tail-biting Shellder is thrown off in a harsh battle, it reverts to being an ordinary Slowpoke.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Slowbro's tail has a Shellder firmly attached with a bite. As a result, the tail can't be used for fishing anymore. This causes Slowbro to grudgingly swim and catch prey instead.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Slowbro's tail has a Shellder firmly attached with a bite. As a result, the tail can't be used for fishing anymore. This causes Slowbro to grudgingly swim and catch prey instead.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its tail has a Shellder firmly attached with a bite. As a result, the tail can't be used for fishing anymore. This forces it to reluctantly swim and catch prey.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When a Slowpoke went hunting in the sea, its tail was bitten by a Shellder. That made it evolve into Slowbro.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The Shellder that latches onto Slowpoke's tail is said to feed on the host's leftover scraps.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Though usually dim witted, it seems to become inspired if the SHELLDER on its tail bites down.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Though usually dim witted, it seems to become inspired if the SHELLDER on its tail bites down.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Though usually dim witted, it seems to become inspired if the SHELLDER on its tail bites down.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If the tail-biting Shellder is thrown off in a harsh battle, it reverts to being an ordinary Slowpoke.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Naturally dull to begin with, it lost its ability to feel pain due to Shellder's seeping poison.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Though usually dim witted, it seems to become inspired if the Shellder on its tail bites down.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Though usually dim witted, it seems to become inspired if the Shellder on its tail bites down.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Though usually dim witted, it seems to become inspired if the Shellder on its tail bites down.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Though usually dim witted, it seems to become inspired if the Shellder on its tail bites down.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"An attached Shellder won't let go because of the tasty flavor that oozes out of its tail.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When a Slowpoke went hunting in the sea, its tail was bitten by a Shellder. That made it evolve into Slowbro.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Slowbro's tail has a Shellder firmly attached with a bite. As a result, the tail can't be used for fishing anymore. This causes Slowbro to grudgingly swim and catch prey instead.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Slowbro's tail has a Shellder firmly attached with a bite. As a result, the tail can't be used for fishing anymore. This causes Slowbro to grudgingly swim and catch prey instead.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It spaces out while gazing at the sea. With Shellder's poison flowing through its body, it becomes even spacier.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Whenever Shellder bites down hard on its tail, it gives Slowbro a flash of inspiration...which it forgets a moment later.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Spacing out is basically all it does. It turns back into Slowpoke if its tail, along with Shellder, breaks off.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Shellder, in its greed to suck out more and more sweetness from Slowbro's tail, has metamorphosed into a spiral-shaped shell.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Lives lazily by the sea. If the Shellder on its tail comes off, it becomes a Slowpoke again.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Lives lazily by the sea. If the Shellder on its tail comes off, it becomes a Slowpoke again.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Slowpoke became Slowbro when a Shellder bit on to its tail. Sweet flavors seeping from the tail make the Shellder feel as if its life is a dream.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Being bitten by a Shellder shocked this Pokémon into standing on two legs. If the Shellder lets go, it seems Slowbro will turn back into a Slowpoke.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Though usually dim-witted, it seems to become inspired if the Shellder on its tail bites down.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Though usually dim-witted, it seems to become inspired if the Shellder on its tail bites down.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When a Slowpoke went hunting in the sea, its tail was bitten by a Shellder. That made it evolve into Slowbro.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If the tail-biting Shellder is thrown off in a harsh battle, this Pokémon reverts to being an ordinary Slowpoke.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"An attached Shellder won't let go because of the tasty flavor that oozes out of Slowbro's tail.\"\n    }\n  ],\n  \"81\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The electromagnetic waves emitted by the units at the sides of its head expel antigravity, which allows it to float.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Uses anti-gravity to stay suspended. Appears without warning and uses Thunder Wave and similar moves.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Uses anti-gravity to stay suspended. Appears without warning and uses Thunder Wave and similar moves.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It is born with the ability to defy gravity. It floats in air on powerful electromagnetic waves.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Appears as if out of nowhere. It floats using anti-gravity and discharges electricity from two side-mounted units.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is attracted by electromagnetic waves. It may approach trainers if they are using their Pokégear.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The units at the sides of its body generate anti-gravity energy to keep it aloft in the air.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The electricity emitted by the units on each side of its body cause it to become a strong magnet.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is attracted by electromagnetic waves. It may approach trainers if they are using their POKéGEAR.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Magnemite attaches itself to power lines to feed on electricity. If your house has a power outage, check your circuit breakers. You may find a large number of this Pokémon clinging to the breaker box.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Magnemite floats in the air by emitting electromagnetic waves from the units at its sides. These waves block gravity. This Pokémon becomes incapable of flight if its internal electrical supply is depleted.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The units at its sides are extremely powerful magnets. They generate enough magnetism to draw in iron objects from over 300 feet away.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It moves while constantly hovering. It discharges Thunder Wave and so on from the units at its sides.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Uses antigravity to stay suspended. Appears without warning and uses Thunder Wave and similar moves.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The units at its sides generate electromagnetic waves that keep it airborne. It feeds on electricity.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The units at its sides generate electromagnetic waves that keep it airborne. It feeds on electricity.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The faster the units at its sides rotate, the greater the magnetic force they generate.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is attracted by electromagnetic waves. It may approach Trainers if they are using their Pokégear.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The units at the sides of its body generate antigravity energy to keep it aloft in the air.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The faster the units at its sides rotate, the greater the magnetic force they generate.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The faster the units at its sides rotate, the greater the magnetic force they generate.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The electromagnetic waves emitted by the units at the sides of its head expel antigravity, which allows it to float.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The electromagnetic waves emitted by the units at the sides of its head expel antigravity, which allows it to float.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The units at the sides of its body generate antigravity energy to keep it aloft in the air.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It moves while constantly hovering. It discharges Thunder Wave and so on from the units at its sides.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Magnemite attaches itself to power lines to feed on electricity. If your house has a power outage, check your circuit breakers. You may find a large number of this Pokémon clinging to the breaker box.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Magnemite floats in the air by emitting electromagnetic waves from the units at its sides. These waves block gravity. This Pokémon becomes incapable of flight if its internal electrical supply is depleted.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They gather in places where electricity is available. They can be found clinging to the steel towers used to support power lines.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It sends out electromagnetic waves, which let it float through the air. Touching it while it's eating electricity will give you a full-body shock.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's frequently the cause of power outages, which is why some power plants send out electrical signals that it can't stand.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Perhaps because electrical lines are often buried these days, the number of Magnemite attacks on power plants has increased.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It is hatched with the ability to defy gravity. It floats while emitting powerful electromagnetic waves.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It is hatched with the ability to defy gravity. It floats while emitting powerful electromagnetic waves.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"At times, Magnemite runs out of electricity and ends up on the ground. If you give batteries to a grounded Magnemite, it'll start moving again.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It subsists on electricity. As Magnemite flies, it emits electromagnetic waves from the units on each side of its body.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The units at its sides generate electromagnetic waves that keep it airborne. It feeds on electricity.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The units at its sides generate electromagnetic waves that keep it airborne. It feeds on electricity.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A bizarre Pokémon with but a single eye embedded in an iron sphere. I suspect this creature levitates due to the magnetism it emits from its arms, which resemble horseshoe-shaped magnets.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The electromagnetic waves emitted by the units at the sides of its head expel antigravity, which allows it to float.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It moves while constantly hovering. It discharges electromagnetic waves and so on from the units at its sides.\"\n    }\n  ],\n  \"82\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This Pokémon is three Magnemite that have linked together. Magneton sends out powerful radio waves to study its surroundings.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Formed by several Magnemites linked together. They frequently appear when sunspots flare up.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Formed by several Magnemites linked together. They frequently appear when sunspots flare up.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Generates strange radio signals. It raises the temperature by 3.6F degrees within 3,300 feet.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Formed by Magnemite that link together when the number of black spots on the sun increases. Fires high-voltage power, etc.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Three Magnemite are linked by a strong magnetic force. Earaches will occur if you get too close.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The Magnemite are united by a magnetism so powerful, it dries all moisture in its vicinities.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When many Magneton gather together, the resulting magnetic storm disrupts radio waves.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Three Magnemite are linked by a strong magnetic force. Earaches will occur if you get too close.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Magneton emits a powerful magnetic force that is fatal to mechanical devices. As a result, large cities sound sirens to warn citizens of large-scale outbreaks of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Magneton emits a powerful magnetic force that is fatal to electronics and precision instruments. Because of this, it is said that some towns warn people to keep this Pokémon inside a Poké Ball.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is actually three Magnemite linked by magnetism. It generates powerful radio waves that raise temperatures by 3.6 degrees F within a 3,300-foot radius.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A linked cluster formed of several Magnemite. It discharges powerful magnetic waves at high voltage.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Formed by several Magnemite linked together. They frequently appear when sunspots flare up.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is actually three Magnemite linked by magnetism. A group can set off a magnetic storm.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is actually three Magnemite linked by magnetism. A group can set off a magnetic storm.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Many mysteriously appear when more sunspots dot the sun. They stop TV sets from displaying properly.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Three Magnemite are linked by a strong magnetic force. Earaches will occur if you get too close.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The Magnemite are united by a magnetism so powerful, it dries all moisture in its vicinity.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Many mysteriously appear when more sunspots dot the sun. They stop TV sets from displaying properly.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Many mysteriously appear when more sunspots dot the sun. They stop TV sets from displaying properly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The stronger electromagnetic waves from the three linked Magnemite are enough to dry out surrounding moisture.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The stronger electromagnetic waves from the three linked Magnemite are enough to dry out surrounding moisture.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A linked cluster formed of several Magnemite. It discharges powerful magnetic waves at high voltage.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Generates strange radio signals. It raises the temperature by 3.6 degrees Fahrenheit within 3,300 feet.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Magneton emits a powerful magnetic force that is fatal to mechanical devices. As a result, large cities sound sirens to warn citizens of large-scale outbreaks of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Magneton emits a powerful magnetic force that is fatal to electronics and precision instruments. Because of this, it is said that some towns warn people to keep this Pokémon inside a Poké Ball.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When three Magnemite link together, their brains also become one. They do not become three times more intelligent.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It has about three times the electrical power of Magnemite. For some reason, outbreaks of this Pokémon happen when lots of sunspots appear.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Delicate equipment can malfunction in areas inhabited by Magneton, which send out mysterious electrical signals.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When rain clouds form, many Magneton gather in high places to wait for lightning to strike.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Generates strange radio signals. It raises the temperature by 3.6 degrees Fahrenheit within 3,300 feet.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Generates strange radio signals. It raises the temperature by 3.6 degrees Fahrenheit within 3,300 feet.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is three Magnemite that have linked together. Magneton sends out powerful radio waves to study its surroundings.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is constantly putting out a powerful magnetic force. Most computers go haywire when a Magneton approaches.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A Magneton is actually three Magnemite linked by magnetism. A group of these Pokémon can set off a magnetic storm.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A Magneton is actually three Magnemite linked by magnetism. A group of these Pokémon can set off a magnetic storm.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Three Magnemite gathered to evolve into this Pokémon. The source of much vexation on my part, as its powerful magnetism destroys my research equipment.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Three Magnemite are linked by a strong magnetic force. Earaches will occur if you get too close.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They're formed by several Magnemite linked together. They frequently appear when sunspots flare up.\"\n    }\n  ],\n  \"83\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It always walks about with a plant stalk clamped in its beak. The stalk is used for building its nest.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The sprig of green onions it holds is its weapon. It is used much like a metal sword.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The sprig of green onions it holds is its weapon. It is used much like a metal sword.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Lives where reedy plants grow. They are rarely seen, so it's thought their numbers are decreasing.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Always carries the stalk of an unidentified plant. The stalk is said to be used for making a nest or as a weapon.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If anyone tries to disturb where the essential plant sticks grow, it uses its own stick to thwart them.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If it eats the plant stick it carries as emergency rations, it runs off in search of a new stick.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"In order to prevent their extinction, more people have made an effort to breed these Pokémon.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If anyone tries to disturb where the essential plant sticks grow, it uses its own stick to thwart them.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Farfetch'd is always seen with a stick from a plant of some sort. Apparently, there are good sticks and bad sticks. This Pokémon has been known to fight with others over sticks.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Farfetch'd is always seen with a stick from a plant of some sort. Apparently, there are good sticks and bad sticks. This Pokémon has been known to fight with others over sticks.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is always seen with a stick from a plant. Apparently, there are good sticks and bad sticks. This Pokémon occasionally fights with others over choice sticks.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It always walks about with a plant stalk clamped in its beak. The stalk is used for building its nest.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The plant stalk it holds is its weapon. The stalk is used like a sword to cut all sorts of things.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It can't live without the stalk it holds. That's why it defends the stalk from attackers with its life.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can't live without the stalk it holds. That's why it defends the stalk from attackers with its life.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can't live without the stalk it holds. That's why it defends the stalk from attackers with its life.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If anyone tries to disturb where the essential plant stalks grow, it uses its own stalk to thwart them.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it eats the plant stalk it carries as emergency rations, it runs off in search of a new stalk.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can't live without the stalk it holds. That's why it defends the stalk from attackers with its life.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can't live without the stalk it holds. That's why it defends the stalk from attackers with its life.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It can't live without the stalk it holds. That's why it defends the stalk from attackers with its life.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It can't live without the stalk it holds. That's why it defends the stalk from attackers with its life.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The plant stalk it holds is its weapon. The stalk is used like a sword to cut all sorts of things.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It always walks about with a plant stalk clamped in its beak. The stalk is used for building its nest.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Farfetch'd is always seen with a stalk from a plant of some sort. Apparently, there are good stalks and bad stalks. This Pokémon has been known to fight with others over stalks.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Farfetch'd is always seen with a stalk from a plant of some sort. Apparently, there are good stalks and bad stalks. This Pokémon has been known to fight with others over stalks.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"They live where reedy plants grow. Farfetch'd are rarely seen, so it's thought their numbers are decreasing.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"They live where reedy plants grow. Farfetch'd are rarely seen, so it's thought their numbers are decreasing.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The stalk this Pokémon carries in its wings serves as a sword to cut down opponents. In a dire situation, the stalk can also serve as food.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They use a plant stalk as a weapon, but not all of them use it in the same way. Several distinct styles of stalk fighting have been observed.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It can't live without the stalk it holds. That's why it defends the stalk from attackers with its life.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can't live without the stalk it holds. That's why it defends the stalk from attackers with its life.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The plant stalk it holds is also its beloved weapon. Farfetch'd can swing the stalk like a katana to cut all sorts of things.\"\n    }\n  ],\n  \"84\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A bird that makes up for its poor flying with its fast foot speed. Leaves giant footprints.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A bird that makes up for its poor flying with its fast foot speed. Leaves giant footprints.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its short wings make flying difficult. Instead, this Pokémon runs at high speed on developed legs.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A Pokémon with two heads. More skilled at running than flying, it is capable of racing at speeds over 60 mph.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"By alternately raising and lowering its two heads, it balances itself to be more stable while running.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It races through grassy plains with powerful strides, leaving footprints up to four inches deep.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It lives on a grassy plain where it can see a long way. If it sees an enemy, it runs away at 60 mph.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"By alternately raising and lowering its two heads, it balances itself to be more stable while running.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Doduo's two heads never sleep at the same time. Its two heads take turns sleeping, so one head can always keep watch for enemies while the other one sleeps.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Doduo's two heads contain completely identical brains. A scientific study reported that on rare occasions, there will be examples of this Pokémon possessing different sets of brains.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Even while eating or sleeping, one of the heads remains always vigilant for any sign of danger. When threatened, it flees at over 60 miles per hour.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A two-headed Pokémon that was discovered as a sudden mutation. It runs at a pace of over 60 miles per hour.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A bird that makes up for its poor flying with its fast foot speed. Leaves giant footprints.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"By alternately raising and lowering its two heads, it balances itself to be more stable while running.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It races through grassy plains with powerful strides, leaving footprints up to four inches deep.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A two-headed Pokémon that was discovered as a sudden mutation. It runs at a pace of over 60 miles per hour.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Doduo's two heads never sleep at the same time. Its two heads take turns sleeping, so one head can always keep watch for enemies while the other one sleeps.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Doduo's two heads contain completely identical brains. A scientific study reported that on rare occasions, there will be examples of this Pokémon possessing different sets of brains.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its short wings make flying difficult. Instead, this Pokémon runs at high speed on developed legs.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its short wings make flying difficult. Instead, this Pokémon runs at high speed on developed legs.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The brains in its two heads appear to communicate emotions to each other with a telepathic power.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its twin heads have exactly the same genes and battle in perfect sync with each other.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its heads never sleep at the same time—each one takes a turn keeping watch while the other sleeps, switching every hour or so.\"\n    }\n  ],\n  \"85\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Uses its three brains to execute complex plans. While two heads sleep, one head stays awake.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Uses its three brains to execute complex plans. While two heads sleep, one head stays awake.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"One of Doduo's 2 heads splits to form a unique species. It runs close to 40 MPH in prairies.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The three heads express joy, sorrow and anger as they plan strategy together. When it sleeps, one head remains awake.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It collects data and plans three times as wisely, but it may think too much and become immobilized.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If one of the heads gets to eat, the others will be satisfied, too, and they will stop squabbling.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"An enemy that takes its eyes off any of the three heads--even for a second--will get pecked severely.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It collects data and plans three times as wisely, but it may think too much and become immobilized.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Watch out if Dodrio's three heads are looking in three separate directions. It's a sure sign that it is on its guard. Don't go near this Pokémon if it's being wary -it may decide to peck you.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Apparently, the heads aren't the only parts of the body that Dodrio has three of. It has three sets of hearts and lungs as well, so it is capable of running long distances without rest.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A peculiar Pokémon species with three heads. It vigorously races across grassy plains even in arid seasons with little rainfall.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"An odd species that is rarely found. The three heads respectively represent joy, sadness, and anger.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Uses its three brains to execute complex plans. While two heads sleep, one head is said to stay awake.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When DODUO evolves into this odd breed, one of its heads splits into two. It runs at nearly 40 mph.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When DODUO evolves into this odd breed, one of its heads splits into two. It runs at nearly 40 mph.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When DODUO evolves into this odd breed, one of its heads splits into two. It runs at nearly 40 mph.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It collects data and plans three times as wisely, but it may think too much and fall into a state of immobility.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If one of the heads gets to eat, the others will be satisfied, too, and they will stop squabbling.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When Doduo evolves into this odd breed, one of its heads splits into two. It runs at nearly 40 mph.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When Doduo evolves into this odd breed, one of its heads splits into two. It runs at nearly 40 mph.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When Doduo evolves into this odd breed, one of its heads splits into two. It runs at nearly 40 mph.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When Doduo evolves into this odd breed, one of its heads splits into two. It runs at nearly 40 mph.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"An enemy that takes its eyes off any of the three heads--even for a second--will get pecked severely.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"An odd species that is rarely found. The three heads respectively represent joy, sadness, and anger.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Watch out if Dodrio's three heads are looking in three separate directions. It's a sure sign that it is on its guard. Don't go near this Pokémon if it's being wary—it may decide to peck you.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Apparently, the heads aren't the only parts of the body that Dodrio has three of. It has three sets of hearts and lungs as well, so it is capable of running long distances without rest.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"One of Doduo's two heads splits to form a unique species. It runs close to 40 mph in prairies.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"One of Doduo's two heads splits to form a unique species. It runs close to 40 mph in prairies.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When Doduo evolves into this odd breed, one of its heads splits into two. This Pokémon runs at nearly 40 mph.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When Doduo evolves into this odd breed, one of its heads splits into two. This Pokémon runs at nearly 40 mph.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It now has three hearts and three sets of lungs. Though it can't run as fast as Doduo, Dodrio can keep running for longer stretches of time.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The strongest head with the thickest neck becomes the leader and gains primary control of the body.\"\n    }\n  ],\n  \"86\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The protruding horn on its head is very hard. It is used for bashing through thick ice.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The protruding horn on its head is very hard. It is used for bashing through thick ice.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Loves freezing cold conditions. Relishes swimming in a frigid climate of around 14F degrees.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It boasts a thick hide covered with light blue fur. It plows through ice floes even in water 40 degrees below 0.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Although it can't walk well on land, it is a graceful swimmer. It especially loves being in frigid seas.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"In daytime, it is often found asleep on the seabed in shallow waters. Its nostrils close while it swims.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The light blue fur that covers it keeps it protected against the cold. It loves iceberg-filled oceans.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Although it can't walk well on land, it is a graceful swimmer. It especially loves being in frigid seas.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Seel hunts for prey in the frigid sea underneath sheets of ice. When it needs to breathe, it punches a hole through the ice with the sharply protruding section of its head.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Seel hunts for prey in the frigid sea underneath sheets of ice. When it needs to breathe, it punches a hole through the ice with the sharply protruding section of its head.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Seel hunt for prey in frigid, ice-covered seas. When it needs to breathe, it punches a hole through the ice with the sharply protruding section of its head.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Covered with light blue fur, its hide is thick and tough. It is active in bitter cold of minus 40 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The protruding horn on its head is very hard. It is used for bashing through thick icebergs.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that lives on icebergs. It swims in the sea using the point on its head to break up ice.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon that lives on icebergs. It swims in the sea using the point on its head to break up ice.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon that lives on icebergs. It swims in the sea using the point on its head to break up ice.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Although it can't walk well on land, it is a graceful swimmer. It especially loves being in frigid seas.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"In daytime, it is often found asleep on the seabed in shallow waters. Its nostrils close while it swims.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon that lives on icebergs. It swims in the sea using the point on its head to break up ice.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon that lives on icebergs. It swims in the sea using the point on its head to break up ice.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The colder it gets, the better it feels. It joyfully swims around oceans so cold that they are filled with floating ice.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The colder it gets, the better it feels. It joyfully swims around oceans so cold that they are filled with floating ice.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A Pokémon that lives on icebergs. It swims in the sea using the point on its head to break up ice.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Covered with light blue fur, its hide is thick and tough. It is active in bitter cold of -40 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Seel hunts for prey in the frigid sea underneath sheets of ice. When it needs to breathe, it punches a hole through the ice with the sharply protruding section of its head.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Seel hunts for prey in the frigid sea underneath sheets of ice. When it needs to breathe, it punches a hole through the ice with the sharply protruding section of its head.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It has always been supposed that Seel live only in cold seas. Their having shown up in Alola is a mystery.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Thanks to its thick fat, cold seas don't bother it at all, but it gets tired pretty easily in warm waters.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Loves freezing-cold conditions. Relishes swimming in a frigid climate of around 14 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Loves freezing-cold conditions. Relishes swimming in a frigid climate of around 14 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This Pokémon lives on icebergs. It uses the sharp point on its head to break up ice as it swims in the sea.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This Pokémon lives on icebergs. It uses the sharp point on its head to break up ice as it swims in the sea.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The protrusion on its head is very hard. It is used for bashing through thick ice.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The colder it gets, the better it feels. It joyfully swims around oceans so cold that they are filled with floating ice.\"\n    }\n  ],\n  \"87\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Stores thermal energy in its body. Swims at a steady 8 knots even in intensely cold waters.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Stores thermal energy in its body. Swims at a steady 8 knots even in intensely cold waters.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its entire body is a snowy-white. Unharmed by even intense cold, it swims powerfully in icy waters.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It stores thermal energy inside its pure white, fur-covered body. It swims in frigid water at eight knots.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its streamlined body has little drag in water. The colder the temperature, the friskier it gets.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It loves frigid seas with ice floes. It uses its long tail to change swimming direction quickly.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It sleeps under shallow ocean waters during the day, then looks for food at night when it's cold.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its streamlined body has little drag in water. The colder the temperature, the friskier it gets.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Dewgong loves to snooze on bitterly cold ice. The sight of this Pokémon sleeping on a glacier was mistakenly thought to be a mermaid by a mariner long ago.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Dewgong loves to snooze on bitterly cold ice. The sight of this Pokémon sleeping on a glacier was mistakenly thought to be a mermaid by a mariner long ago.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It loves to snooze on bitterly cold ice. The sight of this Pokémon sleeping on a glacier was mistakenly thought to be a mermaid by a mariner long ago.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its body is covered with a pure white fur. The colder the weather, the more active it becomes.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It stores thermal energy in the body. It swims at a steady eight knots even in intensely cold waters.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"In snow, the pure white coat covering its body obscures it from predators.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"In snow, the pure white coat covering its body obscures it from predators.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"In snow, the pure white coat covering its body obscures it from predators.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its streamlined body has little drag in water. The colder the temperature, the friskier it gets.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It loves frigid seas with ice floes. It uses its long tail to change swimming direction quickly.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"In snow, the pure white coat covering its body obscures it from predators.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"In snow, the pure white coat covering its body obscures it from predators.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its streamlined body has low resistance, and it swims around cold oceans at a speed of eight knots.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its streamlined body has low resistance, and it swims around cold oceans at a speed of eight knots.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its body is covered with a pure white fur. The colder the weather, the more active it becomes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its streamlined body has little drag in water. The colder the temperature, the friskier it gets.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Dewgong loves to snooze on bitterly cold ice. The sight of this Pokémon sleeping on a glacier was mistakenly thought to be a mermaid by a mariner long ago.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Dewgong loves to snooze on bitterly cold ice. The sight of this Pokémon sleeping on a glacier was mistakenly thought to be a mermaid by a mariner long ago.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It swims through the ocean at a speed of eight knots, searching for Pokémon that will become its prey. It's especially fond of Wishiwashi.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It sunbathes on the beach after meals. The rise in its body temperature helps its digestion.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its entire body is a snowy white. Unharmed by even intense cold, it swims powerfully in icy waters.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its entire body is a snowy white. Unharmed by even intense cold, it swims powerfully in icy waters.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"In snow, the pure white coat covering its body obscures it from predators.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"In snow, the pure white coat covering its body obscures it from predators.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It sleeps under shallow ocean waters during the day, then looks for food at night when it's colder.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It stores thermal energy in its body to fend off the cold. It swims at eight knots even in frigid waters.\"\n    }\n  ],\n  \"88\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Born from sludge, these Pokémon now gather in polluted places and increase the bacteria in their bodies.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Appears in filthy areas. Thrives by sucking up polluted sludge that is pumped out of factories.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Appears in filthy areas. Thrives by sucking up polluted sludge that is pumped out of factories.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Made of hardened sludge. It smells too putrid to touch. Even weeds won't grow in its path.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Sludge that was transformed when exposed to X-rays from the moon. Loves sludge, industrial waste and other refuse.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"As it moves, it loses bits of its body from which new Grimer emerge. This worsens the stench around it.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Wherever Grimer has passed, so many germs are left behind that no plants will ever grow again.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When two of these Pokémon's bodies are combined together, new poisons are created.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"As it moves, it loses bits of its body from which new Grimer emerge. This worsens the stench around it.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Grimer's sludgy and rubbery body can be forced through any opening, however small it may be. This Pokémon enters sewer pipes to drink filthy wastewater.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Grimer emerged from the sludge that settled on a polluted seabed. This Pokémon loves anything filthy. It constantly leaks a horribly germ-infested fluid from all over its body.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Born from polluted sludge in the sea, Grimer's favorite food is anything filthy. They feed on wastewater pumped out from factories.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Sludge exposed to X rays from the moon transformed into Grimer. It loves feeding on filthy things.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Appears in filthy areas. It thrives by sucking up polluted sludge that is pumped out of factories.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It was born when sludge in a dirty stream was exposed to the moon's X-rays. It appears among filth.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It was born when sludge in a dirty stream was exposed to the moon's X-rays. It appears among filth.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It was born when sludge in a dirty stream was exposed to the moon's X-rays. It appears among filth.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"As it moves, it loses bits of its body, from which new Grimer emerge. This worsens the stench around it.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Wherever Grimer has passed, so many germs are left behind that no plants will ever grow again.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It was born when sludge in a dirty stream was exposed to the moon's X-rays. It appears among filth.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It was born when sludge in a dirty stream was exposed to the moon's X-rays. It appears among filth.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Born from sludge, these Pokémon now gather in polluted places and increase the bacteria in their bodies.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Born from sludge, these Pokémon now gather in polluted places and increase the bacteria in their bodies.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Sludge exposed to X-rays from the moon transformed into Grimer. It loves feeding on filthy things.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Appears in filthy areas. It thrives by sucking up polluted sludge that is pumped out of factories.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Grimer's sludgy and rubbery body can be forced through any opening, however small it may be. This Pokémon enters sewer pipes to drink filthy wastewater.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Grimer emerged from the sludge that settled on a polluted seabed. This Pokémon loves anything filthy. It constantly leaks a horribly germ-infested fluid from all over its body.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its main source of food is the slimy industrial waste of factories. This Pokémon's numbers have been decreasing in recent years.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It was born from sludge transformed by exposure to X-rays from the moon. When its internal load of germs decreases, it dies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It was born from sludge on the ocean floor. In a sterile environment, the germs within its body can't multiply, and it dies.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The wastewater coming from factories is clean these days, so Grimer have nothing to eat. They're said to be on the verge of extinction.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Made of congealed sludge. It smells too putrid to touch. Even weeds won't grow in its path.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Made of congealed sludge. It smells too putrid to touch. Even weeds won't grow in its path.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It was born when sludge in a dirty stream was exposed to the moon's X-rays. It appears among filth.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It was born when sludge in a dirty stream was exposed to the moon's X-rays. It appears among filth.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Born from sludge, these Pokémon now gather in polluted places and increase the bacteria in their bodies.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When two of these Pokémon's bodies are combined together, new poisons are created.\"\n    }\n  ],\n  \"89\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Smells so awful, it can cause fainting. Through degeneration of its nose, it lost its sense of smell.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Thickly covered with a filthy, vile sludge. It is so toxic, even its footprints contain poison.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Thickly covered with a filthy, vile sludge. It is so toxic, even its footprints contain poison.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Smells so awful, it can cause fainting. Through degeneration, it lost its sense of smell.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Becomes indistinguishable if it hides in dirt. Touching its sludge-covered body causes horrible poisonings.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"They love to gather in smelly areas where sludge accumulates, making the stench around them worse.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its body is made of a powerful poison. Touching it accidentally will cause a fever that requires bed rest.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"As it moves, a very strong poison leaks from it, making the ground there barren for three years.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"They love to gather in smelly areas where sludge accumulates, making the stench around them worse.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"From Muk's body seeps a foul fluid that gives off a nose-bendingly horrible stench. Just one drop of this Pokémon's body fluid can turn a pool stagnant and rancid.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon's favorite food is anything that is repugnantly filthy. In dirty towns where people think nothing of throwing away litter on the streets, Muk are certain to gather.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It prefers warm and humid habitats. In the summertime, the toxic substances in its body intensify, making Muk reek like putrid kitchen garbage.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is usually undetectable because it blends in with the ground. Touching it can cause terrible poisoning.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Thickly covered with a filthy, vile sludge. It is so toxic, even its footprints contain poison.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A toxic fluid seeps from its body. The fluid instantly kills plants and trees on contact.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A toxic fluid seeps from its body. The fluid instantly kills plants and trees on contact.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A toxic fluid seeps from its body. The fluid instantly kills plants and trees on contact.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They love to gather in smelly areas where sludge accumulates, making the stench around them worse.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its body is made of a powerful poison. Touching it accidentally will cause a fever that requires bed rest.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A toxic fluid seeps from its body. The fluid instantly kills plants and trees on contact.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A toxic fluid seeps from its body. The fluid instantly kills plants and trees on contact.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It's so stinky! Muk's body contains toxic elements, and any plant will wilt when it passes by.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It's so stinky! Muk's body contains toxic elements, and any plant will wilt when it passes by.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They love to gather in smelly areas where sludge accumulates, making the stench around them worse.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A toxic fluid seeps from its body. The fluid instantly kills plants and trees on contact.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"From Muk's body seeps a foul fluid that gives off a nose-bendingly horrible stench. Just one drop of this Pokémon's body fluid can turn a pool stagnant and rancid.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon's favorite food is anything that is repugnantly filthy. In dirty towns where people think nothing of throwing away litter on the streets, Muk are certain to gather.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The stench it gives off will make your nose scrunch up. Still, there are Muk fans who think that's a good thing.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"After recent environmental improvements, this Pokémon is now hardly seen at all. People speculate that it may go extinct at some point.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Their food sources have decreased, and their numbers have declined sharply. Sludge ponds are being built to prevent their extinction.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Because they scatter germs everywhere, they've long been targeted for extermination, leading to a steep decline in their population.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Smells so awful, it can cause fainting. Through degeneration of its nose, it lost its sense of smell.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Smells so awful, it can cause fainting. Through degeneration of its nose, it lost its sense of smell.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A toxic fluid seeps from its body. The fluid kills plants and trees immediately upon contact.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A toxic fluid seeps from its body. The fluid kills plants and trees immediately upon contact.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's thickly covered with a filthy, vile sludge. It is so toxic, even its footprints contain poison.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's so stinky! Muk's body contains toxic elements, and any plant will wilt when it passes by.\"\n    }\n  ],\n  \"90\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its hard shell repels any kind of attack. It is vulnerable only when its shell is open.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its hard shell repels any kind of attack. It is vulnerable only when its shell is open.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The shell can withstand any attack. However, when it is open, the tender body is exposed.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its shell is harder than diamond. It hides in sand on the sea floor and catches prey with its soft tongue.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It swims facing backward by opening and closing its two-piece shell. It is surprisingly fast.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Grains of sand trapped in its shells mix with its body fluids to form beautiful pearls.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Clamping on to an opponent reveals its vulnerable parts, so it uses this move only as a last resort.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It swims facing backward by opening and closing its two-piece shell. It is surprisingly fast.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"At night, this Pokémon uses its broad tongue to burrow a hole in the seafloor sand and then sleep in it. While it is sleeping, Shellder closes its shell, but leaves its tongue hanging out.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"At night, this Pokémon uses its broad tongue to burrow a hole in the seafloor sand and then sleep in it. While it is sleeping, Shellder closes its shell, but leaves its tongue hanging out.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"At night, it burrows a hole in the seafloor with its broad tongue to make a place to sleep. While asleep, it closes its shell, but leaves its tongue hanging out.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is encased in a shell that is harder than diamond. Inside, however, it is surprisingly tender.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its hard shell repels any kind of attack. It is vulnerable only when its shell is open.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It swims backward by opening and closing its two shells. Its large tongue is always kept hanging out.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It swims backward by opening and closing its two shells. Its large tongue is always kept hanging out.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It swims backward by opening and closing its two shells. Its large tongue is always kept hanging out.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It swims facing backward by opening and closing its two-piece shell. It is surprisingly fast.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Grains of sand trapped in its shells mix with its body fluids to form beautiful pearls.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It swims backward by opening and closing its two shells. Its large tongue is always kept hanging out.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It swims backward by opening and closing its two shells. Its large tongue is always kept hanging out.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It swims backward by opening and closing its two shells. Its large tongue is always kept hanging out.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It swims backward by opening and closing its two shells. Its large tongue is always kept hanging out.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its hard shell repels any kind of attack. It is vulnerable only when its shell is open.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Clamping on to an opponent reveals its vulnerable parts, so it uses this move only as a last resort.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"At night, this Pokémon uses its broad tongue to burrow a hole in the seafloor sand and then sleep in it. While it is sleeping, Shellder closes its shell, but leaves its tongue hanging out.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"At night, this Pokémon uses its broad tongue to burrow a hole in the seafloor sand and then sleep in it. While it is sleeping, Shellder closes its shell, but leaves its tongue hanging out.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The hardness of its shell surpasses the hardness of a diamond. In days gone by, people used the shells to make shields.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon's tongue is always hanging out. It uses its tongue with great dexterity to dig up sand from the seabed in its search for food.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The sand that accumulates inside its shell eventually becomes a pearl. But the pearl gets in the way, so it spits it out and discards it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Even when its shell is closed, its tongue still hangs out. If you give its tongue a good yank, the shock will cause Shellder to open its shell.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The shell can withstand any attack. However, when it is open, the tender body is exposed.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The shell can withstand any attack. However, when it is open, the tender body is exposed.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It swims facing backward by opening and closing its two-piece shell. It is surprisingly fast.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its hard shell repels any kind of attack. It is vulnerable only when its shell is open.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It swims backward by opening and closing its two shells. Its large tongue is always kept hanging out.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It swims backward by opening and closing its two shells. Its large tongue is always kept hanging out.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is encased in a shell that is harder than diamond. Inside, however, it is surprisingly tender.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Clamping on to an opponent reveals its vulnerable parts, so it uses this move only as a last resort.\"\n    }\n  ],\n  \"91\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When attacked, it launches its horns in quick volleys. Its innards have never been seen.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When attacked, it launches its horns in quick volleys. Its innards have never been seen.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"For protection, it uses its harder-than-diamonds shell. It also shoots spikes from the shell.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its shell is so hard, it can even withstand a bomb. No one has ever seen what is inside its shell.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Once it slams its shell shut, it is impossible to open, even by those with superior strength.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Cloyster that live in seas with harsh tidal currents grow large, sharp spikes on their shells.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Even a missile can't break the spikes it uses to stab opponents. They're even harder than its shell.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Once it slams its shell shut, it is impossible to open, even by those with superior strength.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Cloyster is capable of swimming in the sea. It does so by swallowing water, then jetting it out toward the rear. This Pokémon shoots spikes from its shell using the same system.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Cloyster is capable of swimming in the sea. It does so by swallowing water, then jetting it out toward the rear. This Pokémon shoots spikes from its shell using the same system.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It swims in the sea by swallowing water, then jetting it out toward the rear. The Cloyster shoots spikes from its shell using the same system.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its shell is extremely hard. It cannot be shattered, even with a bomb. The shell opens only when it is attacking.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When attacked, it launches its horns in quick volleys. Its innards have never been seen.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It fights by keeping its shell tightly shut for protection and by shooting spikes to repel foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It fights by keeping its shell tightly shut for protection and by shooting spikes to repel foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It fights by keeping its shell tightly shut for protection and by shooting spikes to repel foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Once it slams its shell shut, it is impossible to open, even by those with superior strength.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Cloyster that live in seas with harsh tidal currents grow large, sharp spikes on their shells.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It fights by keeping its shell tightly shut for protection and by shooting spikes to repel foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It fights by keeping its shell tightly shut for protection and by shooting spikes to repel foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It fights by keeping its shell tightly shut for protection and by shooting spikes to repel foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It fights by keeping its shell tightly shut for protection and by shooting spikes to repel foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Cloyster that live in seas with harsh tidal currents grow large, sharp spikes on their shells.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its shell is extremely hard. It cannot be shattered, even with a bomb. The shell opens only when it is attacking.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Cloyster is capable of swimming in the sea. It does so by swallowing water, then jetting it out toward the rear. This Pokémon shoots spikes from its shell using the same system.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Cloyster is capable of swimming in the sea. It does so by swallowing water, then jetting it out toward the rear. This Pokémon shoots spikes from its shell using the same system.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its hard shell cannot be shattered—not even by a bomb. The contents of the shell remain unknown.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Excavation of the tombs of ancient hunting tribes has turned up many spears tipped with spikes that had fallen off this Pokémon's shell.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"If areas of Cloyster's very hard shell get damaged, those areas swell, gradually growing into large sharp spikes.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Slowpoke tails are its favorite food. It has even been known to come up on land to look for Slowpoke from time to time.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"For protection, it uses its harder-than-diamond shell. It also shoots spikes from the shell.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"For protection, it uses its harder-than-diamond shell. It also shoots spikes from the shell.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its shell is extremely hard. It cannot be shattered, even with a bomb. The shell opens only when it is attacking.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Once it slams its shell shut, it is impossible to open, even by those with superior strength.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It fights by keeping its shell tightly shut for protection and by shooting spikes to repel foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It fights by keeping its shell tightly shut for protection and by shooting spikes to repel foes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Cloyster that live in seas with harsh tidal currents grow large, sharp spikes on their shells.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When attacked, it launches its spikes in quick volleys. Its innards have never been seen.\"\n    }\n  ],\n  \"92\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Said to appear in decrepit, deserted buildings. It has no real shape, as it appears to be made of a gas.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Almost invisible, this gaseous Pokémon cloaks the target and puts it to sleep without notice.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Almost invisible, this gaseous Pokémon cloaks the target and puts it to sleep without notice.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Said to appear in decrepit, deserted buildings. It has no real shape as it appears to be made of a gas.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Made of a thin, gas-like substance that induces fainting if you get enshrouded in it. Will not appear if it is very windy.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"With its gas-like body, it can sneak into any place it desires. However, it can be blown away by wind.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its thin body is made of gas. It can envelop an opponent of any size and cause suffocation.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It wraps its opponent in its gas-like body, slowly weakening its prey by poisoning it through the skin.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"With its gas-like body, it can sneak into any place it desires. However, it can be blown away by wind.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Gastly is largely composed of gaseous matter. When exposed to a strong wind, the gaseous body quickly dwindles away. Groups of this Pokémon cluster under the eaves of houses to escape the ravages of wind.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Gastly is largely composed of gaseous matter. When exposed to a strong wind, the gaseous body quickly dwindles away. Groups of this Pokémon cluster under the eaves of houses to escape the ravages of wind.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When exposed to a strong wind, a Gastly's gaseous body quickly dwindles away. They cluster under the eaves of houses to escape the ravages of wind.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A being that exists as a thin gas. It can topple an Indian elephant by enveloping the prey in two seconds.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Almost invisible, this gaseous Pokémon cloaks the target and puts it to sleep without notice.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"This Pokémon's body is 95% made up of gases, which are blown away by strong gusts of wind.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon born from poison gases. It defeats even the largest foes by enveloping them in gas.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Born from gases, anyone would faint if engulfed by its gaseous body, which contains poison.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"With its gas-like body, it can sneak into any place it desires. However, it can be blown away by wind.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its body is made of gas. Despite lacking substance, it can envelop an opponent of any size and cause suffocation.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Born from gases, anyone would faint if engulfed by its gaseous body, which contains poison.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Born from gases, anyone would faint if engulfed by its gaseous body, which contains poison.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Born from gases, anyone would faint if engulfed by its gaseous body, which contains poison.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Born from gases, anyone would faint if engulfed by its gaseous body, which contains poison.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its body is made of gas. Despite lacking substance, it can envelop an opponent of any size and cause suffocation.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Born from gases, anyone would faint if engulfed by its gaseous body, which contains poison.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Gastly is largely composed of gaseous matter. When exposed to a strong wind, the gaseous body quickly dwindles away. Groups of this Pokémon cluster under the eaves of houses to escape the ravages of wind.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Gastly is largely composed of gaseous matter. When exposed to a strong wind, the gaseous body quickly dwindles away. Groups of this Pokémon cluster under the eaves of houses to escape the ravages of wind.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Should a strange light be seen flickering in an abandoned building, Gastly is lurking there.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Although Gastly is barely visible, when it's near, a faint sweet smell lingers.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's said that gas emanating from a graveyard was possessed by the grievances of the deceased and thus became a Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Poisonous gas comprises 95% of its body. It's said that the remaining 5% is made up of the souls of those who died from the gas.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Said to appear in decrepit, deserted buildings. It has no real shape, as it appears to be made of a gas.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Said to appear in decrepit, deserted buildings. It has no real shape, as it appears to be made of a gas.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Born from gases, anyone would faint if engulfed by its gaseous body, which contains poison.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With its gas-like body, it can sneak into any place it desires. However, it can be blown away by wind.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This Pokémon's body is 95 percent made up of gases. The Pokémon can be blown away by strong gusts of wind.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It's a Pokémon born from poison gases. It defeats even the largest foes by enveloping them in gas.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Gaseous and completely impalpable. Also highly dangerous—inhaling part of its poisonous body will cause one to faint instantly.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It wraps its opponent in its gas-like body, slowly weakening its prey by poisoning it through the skin.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its body is made of gas. Despite lacking substance, it can envelop an opponent of any size and cause suffocation.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It's born from gases. Anyone would faint if engulfed by its gaseous body, which contains poison.\"\n    }\n  ],\n  \"93\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"If you get the feeling of being watched in darkness when nobody is around, Haunter is there.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Because of its ability to slip through block walls, it is said to be from another dimension.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Because of its ability to slip through block walls, it is said to be from another dimension.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"By licking, it saps the victim's life. It causes shaking that won't stop until the victim's demise.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"If you trip and fall for no apparent reason or hear a sound when no one is around, it may be a Haunter.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"In total darkness, where nothing is visible, Haunter lurks, silently stalking its next victim.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its tongue is made of gas. If licked, its victim starts shaking constantly until death eventually comes.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It hides in the dark, planning to take the life of the next living thing that wanders close by.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"In total darkness, where nothing is visible, Haunter lurks, silently stalking its next victim.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Haunter is a dangerous Pokémon. If one beckons you while floating in darkness, you must never approach it. This Pokémon will try to lick you with its tongue and steal your life away.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Haunter is a dangerous Pokémon. If one beckons you while floating in darkness, you must never approach it. This Pokémon will try to lick you with its tongue and steal your life away.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"If a Haunter beckons you while it is floating in darkness, don't approach it. This Pokémon will try to lick you with its tongue and steal your life away.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If you get the feeling of being watched in darkness when nobody is around, Haunter is there.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Because of its ability to slip through block walls, it is said to be from another dimension.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It can slip through any obstacle. It lurks inside walls to keep an eye on its foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It licks with its gaseous tongue to steal the victim's life force. It lurks in darkness for prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It likes to lurk in the dark and tap shoulders with a gaseous hand. Its touch causes endless shuddering.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"In total darkness, where nothing is visible, Haunter lurks, silently stalking its next victim.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its tongue is made of gas. If licked, its victim starts shaking constantly until death eventually comes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It likes to lurk in the dark and tap shoulders with a gaseous hand. Its touch causes endless shuddering.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It likes to lurk in the dark and tap shoulders with a gaseous hand. Its touch causes endless shuddering.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It likes to lurk in the dark and tap shoulders with a gaseous hand. Its touch causes endless shuddering.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It likes to lurk in the dark and tap shoulders with a gaseous hand. Its touch causes endless shuddering.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If you get the feeling of being watched in darkness when nobody is around, Haunter is there.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It licks with its gaseous tongue to steal the victim's life force. It lurks in darkness for prey.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Haunter is a dangerous Pokémon. If one beckons you while floating in darkness, you must never approach it. This Pokémon will try to lick you with its tongue and steal your life away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Haunter is a dangerous Pokémon. If one beckons you while floating in darkness, you must never approach it. This Pokémon will try to lick you with its tongue and steal your life away.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It strikes at humans from total darkness. Those licked by its cold tongue grow weaker with each passing day until they die.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It fears the light and revels in the dark. It may be on the verge of extinction in cities that stay brightly lit at night.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"On moonless nights, Haunter searches for someone to curse, so it's best not to go out walking around.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's dangerous to go outside alone on nights when you're feeling sad. Haunter will catch you, and you won't be able to go back home.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"By licking, it saps the victim's life. It causes shaking that won't stop until the victim's demise.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"By licking, it saps the victim's life. It causes shaking that won't stop until the victim's demise.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its tongue is made of gas. If licked, its victim starts shaking constantly until death eventually comes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If you get the feeling of being watched in darkness when nobody is around, Haunter is there.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It can slip through any obstacle. It lurks inside walls to keep an eye on its foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It licks with its gaseous tongue to steal its victim's life-force. It lurks in darkness, waiting for prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This frightful, malevolent spirit can glide through walls, appearing wherever it likes. According to rumor, victims of a Haunter's lick will wither to death day by day.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It likes to lurk in the dark and tap shoulders with a gaseous hand. Its touch causes endless shuddering.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In total darkness, where nothing is visible, Haunter lurks, silently stalking its next victim.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It licks with its gaseous tongue to steal its victim's life force. It lurks in darkness, waiting for prey.\"\n    }\n  ],\n  \"94\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A Gengar is close by if you feel a sudden chill. It may be trying to lay a curse on you.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Under a full moon, this {{OBP|Pokémon|species|Pokémon}} likes to mimic the shadows of people and laugh at their fright.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Under a full moon, this {{OBP|Pokémon|species|Pokémon}} likes to mimic the shadows of people and laugh at their fright.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A Gengar is close by if you feel a sudden chill. It may be trying to lay a curse on you.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Appears to attack people who get lost in the mountains. Said to be the culprit behind shadows that laugh in the moonlight.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It steals heat from its surroundings. If you feel a sudden chill, it is certain that a Gengar appeared.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"To steal the life of its target, it slips into the prey's shadow and silently waits for an opportunity.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Hiding in people's shadows at night, it absorbs their heat. The chill it causes makes the victims shake.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It steals heat from its surroundings. If you feel a sudden chill, it is certain that a Gengar appeared.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Sometimes, on a dark night, your shadow thrown by a streetlight will suddenly and startlingly overtake you. It is actually a Gengar running past you, pretending to be your shadow.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sometimes, on a dark night, your shadow thrown by a streetlight will suddenly and startlingly overtake you. It is actually a Gengar running past you, pretending to be your shadow.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Deep in the night, your shadow cast by a streetlight may suddenly overtake you. It is actually a Gengar running past you, pretending to be your shadow.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is said to emerge from darkness to steal the lives of those who become lost in mountains.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"On the night of a full moon, if shadows move on their own and laugh, it must be Gengar's doing.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It hides in shadows. It is said that if Gengar is hiding, it cools the area by nearly 10 degrees F.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Lurking in the shadowy corners of rooms, it awaits chances to steal its prey's life force.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The leer that floats in darkness belongs to a Gengar delighting in casting curses on people.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It steals heat from its surroundings. If you feel a sudden chill, it is certain that a Gengar appeared.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"To steal the life of its target, it slips into the prey's shadow and silently waits for an opportunity.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The leer that floats in darkness belongs to a Gengar delighting in casting curses on people.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The leer that floats in darkness belongs to a Gengar delighting in casting curses on people.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The leer that floats in darkness belongs to a Gengar delighting in casting curses on people.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The leer that floats in darkness belongs to a Gengar delighting in casting curses on people.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It hides in shadows. It is said that if Gengar is hiding, it cools the area by nearly 10 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Hiding in people's shadows at night, it absorbs their heat. The chill it causes makes the victims shake.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sometimes, on a dark night, your shadow thrown by a streetlight will suddenly and startlingly overtake you. It is actually a Gengar running past you, pretending to be your shadow.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sometimes, on a dark night, your shadow thrown by a streetlight will suddenly and startlingly overtake you. It is actually a Gengar running past you, pretending to be your shadow.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Should you feel yourself attacked by a sudden chill, it is evidence of an approaching Gengar. There is no escaping it. Give up.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It apparently wishes for a traveling companion. Since it was once human itself, it tries to create one by taking the lives of other humans.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"You can hear tales told all over the world about how Gengar will pay a visit to children who are naughty.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Even your home isn't safe. Gengar will lurk in whatever dark corner of a room it can find and wait for its chance to catch its prey.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A Gengar is close by if you feel a sudden chill. It may be trying to lay a curse on you.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A Gengar is close by if you feel a sudden chill. It may be trying to lay a curse on you.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"On the night of a full moon, if shadows move on their own and laugh, it must be Gengar's doing.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It is said to emerge from darkness to steal the lives of those who become lost in mountains.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It hides in shadows. It is said that in rooms where Gengar is hiding, the temperature drops by nearly 10 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Lurking in the shadowy corners of rooms, it awaits chances to steal its prey's life-force.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Possesses potential victims' shadows in an effort to steal away the victims' lives. If your shadow begins to laugh, you must take hold of a protective charm posthaste!\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"To steal the life of its target, it slips into the prey's shadow and silently waits for an opportunity.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Hiding in people's shadows at night, it absorbs their heat. The chill it causes makes the victims shake.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It hides in shadows. It is said that in rooms where Gengar is hiding, the temperature drops by nearly 10 degrees Fahrenheit.\"\n    }\n  ],\n  \"95\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It rapidly bores through the ground at 50 mph by squirming and twisting its massive, rugged body.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"As it grows, the stone portions of its body harden to become similar to a diamond, but colored black.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"As it grows, the stone portions of its body harden to become similar to a diamond, but colored black.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Burrows at high speed in search of food. The tunnels it leaves are used as homes by DIGLETTs.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its large body is over 26 feet long. Despite its size, it can squirm its way through the ground at 50 mph.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It twists and squirms through the ground. The thunderous roar of its tunneling echoes a long way.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It rapidly bores through the ground at 50 mph by squirming and twisting its massive, rugged body.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"As it digs through the ground, it absorbs many hard objects. This is what makes its body so solid.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It twists and squirms through the ground. The thunderous roar of its tunneling echoes a long way.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Onix has a magnet in its brain. It acts as a compass so that this Pokémon does not lose direction while it is tunneling. As it grows older, its body becomes increasingly rounder and smoother.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Onix has a magnet in its brain. It acts as a compass so that this Pokémon does not lose direction while it is tunneling. As it grows older, its body becomes increasingly rounder and smoother.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"There is a magnet in its brain that prevents an Onix from losing direction while tunneling. As it grows older, its body becomes steadily rounder and smoother.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It usually lives underground. It searches for food while boring its way through the ground at 50 miles per hour.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"As it grows, the stone portions of its body harden to become similar to black-colored diamonds.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When it travels underground, it causes rumbling and tremors. It can move at 50 mph.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It squirms through the ground using its long and rugged body. It always eats while burrowing.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It burrows through the ground at a speed of 50 mph while feeding on large boulders.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It twists and squirms through the ground. The thunderous roar of its tunneling echoes a long way.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It rapidly bores through the ground at 50 mph by squirming and twisting its massive, rugged body.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It burrows through the ground at a speed of 50 mph while feeding on large boulders.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It burrows through the ground at a speed of 50 mph while feeding on large boulders.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Opening its large mouth, it ingests massive amounts of soil and creates long tunnels.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Opening its large mouth, it ingests massive amounts of soil and creates long tunnels.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Burrows at high speed in search of food. The tunnels it leaves are used as homes by Diglett.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It usually lives underground. It searches for food while boring its way through the ground at 50 miles per hour.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Onix has a magnet in its brain. It acts as a compass so that this Pokémon does not lose direction while it is tunneling. As it grows older, its body becomes increasingly rounder and smoother.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Onix has a magnet in its brain. It acts as a compass so that this Pokémon does not lose direction while it is tunneling. As it grows older, its body becomes increasingly rounder and smoother.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Burrows at high speed in search of food. The tunnels it leaves are used as homes by Diglett.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Burrows at high speed in search of food. The tunnels it leaves are used as homes by Diglett.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As it digs through the ground, it absorbs many hard objects. This is what makes its body so solid.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It rapidly bores through the ground at 50 mph by squirming and twisting its massive, rugged body.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When it travels underground, it causes rumbling and tremors. It can move at 50 mph.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It squirms through the ground using its long and rugged body. It always eats while burrowing.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This chain of immense stones resembles a giant serpent. Tremors shake the earth above as it burrows deep beneath the ground, feeding on boulders as it goes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It usually lives underground. It searches for food while boring its way through the ground at 50 mph.\"\n    }\n  ],\n  \"96\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Puts enemies to sleep then eats their dreams. Occasionally gets sick from eating bad dreams.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Puts enemies to sleep then eats their dreams. Occasionally gets sick from eating bad dreams.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"If you sleep by it all the time, it will sometimes show you dreams it has eaten in the past.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It puts its enemy to sleep and eats the victim's dreams. Said to have descended from the legendary beast, Baku.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If you think that you had a good dream, but you can't remember it, a Drowzee has probably eaten it.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It remembers every dream it eats. It rarely eats the dreams of adults because children's are much tastier.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it twitches its nose, it can tell where someone is sleeping and what that person is dreaming about.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If you think that you had a good dream, but you can't remember it, a Drowzee has probably eaten it.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"If your nose becomes itchy while you are sleeping, it's a sure sign that one of these Pokémon is standing above your pillow and trying to eat your dream through your nostrils.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If your nose becomes itchy while you are sleeping, it's a sure sign that one of these Pokémon is standing above your pillow and trying to eat your dream through your nostrils.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"If your nose becomes itchy while you are sleeping, it's a sure sign that a Drowzee is standing above your pillow and trying to eat your dream through your nostrils.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A descendent of the legendary animal baku, which is said to eat dreams. It is skilled at hypnotism.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Puts enemies to sleep, then eats their dreams. Occasionally gets sick from eating only bad dreams.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It can tell what people are dreaming by sniffing with its big nose. It loves fun dreams.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can tell what people are dreaming by sniffing with its big nose. It loves fun dreams.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can tell what people are dreaming by sniffing with its big nose. It loves fun dreams.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If you think that you had a good dream but you can't remember it, a Drowzee has probably eaten it.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It remembers every dream it eats. It rarely eats the dreams of adults because children's are much tastier.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can tell what people are dreaming by sniffing with its big nose. It loves fun dreams.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can tell what people are dreaming by sniffing with its big nose. It loves fun dreams.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It can tell what people are dreaming by sniffing with its big nose. It loves fun dreams.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It can tell what people are dreaming by sniffing with its big nose. It loves fun dreams.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Puts enemies to sleep, then eats their dreams. Occasionally gets sick from eating only bad dreams.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If you think that you had a good dream but you can't remember it, a Drowzee has probably eaten it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"If your nose becomes itchy while you are sleeping, it's a sure sign that one of these Pokémon is standing above your pillow and trying to eat your dream through your nostrils.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If your nose becomes itchy while you are sleeping, it's a sure sign that one of these Pokémon is standing above your pillow and trying to eat your dream through your nostrils.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A Pokémon that nourishes itself by eating dreams, it is thought to share common ancestry with Munna and Musharna.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It finds really fun dreams tasty. When it makes friends with people, it may show them the most delicious dreams it's ever eaten.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It can be spotted near recreational facilities, intending to eat the pleasant dreams of children who enjoyed themselves there that day.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It puts its prey to sleep and devours their dreams. It seems that bad dreams taste sour, so Drowzee doesn't particularly like eating them.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"If you sleep by it all the time, it will sometimes show you dreams it had eaten in the past.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"If you sleep by it all the time, it will sometimes show you dreams it had eaten in the past.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It can tell what people are dreaming by sniffing with its big nose. It loves fun dreams.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can tell what people are dreaming by sniffing with its big nose. It loves fun dreams.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It remembers every dream it eats. It rarely eats the dreams of adults because children's are much tastier.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it twitches its nose, it can tell where someone is sleeping and what that person is dreaming about.\"\n    }\n  ],\n  \"97\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When it locks eyes with an enemy, it will use a mix of PSI moves such as Hypnosis and Confusion.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When it locks eyes with an enemy, it will use a mix of PSI moves such as Hypnosis and Confusion.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Avoid eye contact if you come across one. It will try to put you to sleep by using its pendulum.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"If you lock eyes with it, it will try to hypnotize you. It is best to close your eyes quickly before you get hypnotized.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When it is very hungry, it puts humans it meets to sleep, then it feasts on their dreams.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Always holding a pendulum that it rocks at a steady rhythm, it causes drowsiness in anyone nearby.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The longer it swings its pendulum, the longer the effects of its hypnosis last.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When it is very hungry, it puts humans it meets to sleep, then it feasts on their dreams.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Hypno holds a pendulum in its hand. The arcing movement and glitter of the pendulum lull the foe into a deep state of hypnosis. While this Pokémon searches for prey, it polishes the pendulum.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Hypno holds a pendulum in its hand. The arcing movement and glitter of the pendulum lull the foe into a deep state of hypnosis. While this Pokémon searches for prey, it polishes the pendulum.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The arcing movement and glitter of the pendulum in a Hypno's hand lull the foe into deep hypnosis. While searching for prey, it polishes the pendulum.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It carries a pendulum-like device. There once was an incident in which it took away a child it hypnotized.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When it locks eyes with an enemy, it will use a mix of PSI moves such as Hypnosis and Confusion.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it is very hungry, it puts humans it meets to sleep, then it feasts on their dreams.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Always holding a pendulum that it swings at a steady rhythm, it causes drowsiness in anyone nearby.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It carries a pendulum-like device. There once was an incident in which it took away a child it hypnotized.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Hypno holds a pendulum in its hand. The arcing movement and glitter of the pendulum lull the foe into a deep state of hypnosis. While this Pokémon searches for prey, it polishes the pendulum.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Hypno holds a pendulum in its hand. The arcing movement and glitter of the pendulum lull the foe into a deep state of hypnosis. While this Pokémon searches for prey, it polishes the pendulum.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"While it is an extremely dangerous Pokémon, people who are in need of a good, sound sleep call it their savior.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As a matter of course, it makes anyone it meets fall asleep and has a taste of their dreams. Anyone having a good dream, it carries off.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"In Alola, Komala is Hypno's main target. It rarely harms people.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"There are some Hypno that assist doctors with patients who can't sleep at night in hospitals.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Avoid eye contact if you come across one. It will try to put you to sleep by using its pendulum.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Avoid eye contact if you come across one. It will try to put you to sleep by using its pendulum.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Seeing its swinging pendulum can induce sleep in three seconds, even in someone who just woke up.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it locks eyes with an enemy, it will use a mix of psi moves, such as Hypnosis and Confusion.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Always holding a pendulum that it swings at a steady rhythm, it causes drowsiness in anyone nearby.\"\n    }\n  ],\n  \"98\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its pincers are not only powerful weapons, they are used for balance when walking sideways.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its pincers are not only powerful weapons, they are used for balance when walking sideways.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its pincers are superb weapons. They sometimes break off during battle, but they grow back fast.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Lives on beaches and seashores. If a pincer falls off, a new, stronger pincer grows back in its place.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If it senses danger approaching, it cloaks itself with bubbles from its mouth so it will look bigger.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The pincers break off easily. If it loses a pincer, it somehow becomes incapable of walking sideways.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If it is unable to find food, it will absorb nutrients by swallowing a mouthful of sand.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If it senses danger approaching, it cloaks itself with bubbles from its mouth so it will look bigger.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Krabby live on beaches, burrowed inside holes dug into the sand. On sandy beaches with little in the way of food, these Pokémon can be seen squabbling with each other over territory.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Krabby live on beaches, burrowed inside holes dug into the sand. On sandy beaches with little in the way of food, these Pokémon can be seen squabbling with each other over territory.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Krabby live in holes dug into beaches. On sandy shores with little in the way of food, they can be seen squabbling with each other over territory.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It can be found near the sea. The large pincers grow back if they are torn out of their sockets.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its pincers are not only powerful weapons, they are used for balance when walking sideways.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in burrows dug on sandy beaches. Its pincers fully grow back if they are broken in battle.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives in burrows dug on sandy beaches. Its pincers fully grow back if they are broken in battle.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives in burrows dug on sandy beaches. Its pincers fully grow back if they are broken in battle.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it senses danger approaching, it cloaks itself with bubbles from its mouth so it will look bigger.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The pincers break off easily. If it loses a pincer, it somehow becomes incapable of walking sideways.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives in burrows dug on sandy beaches. Its pincers fully grow back if they are broken in battle.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives in burrows dug on sandy beaches. Its pincers fully grow back if they are broken in battle.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives in burrows dug on sandy beaches. Its pincers fully grow back if they are broken in battle.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives in burrows dug on sandy beaches. Its pincers fully grow back if they are broken in battle.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If it senses danger approaching, it cloaks itself with bubbles from its mouth so it will look bigger.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can be found near the sea. The large pincers grow back if they are torn out of their sockets.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Krabby live on beaches, burrowed inside holes dug into the sand. On sandy beaches with little in the way of food, these Pokémon can be seen squabbling with each other over territory.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Krabby live on beaches, burrowed inside holes dug into the sand. On sandy beaches with little in the way of food, these Pokémon can be seen squabbling with each other over territory.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its pincers are superb weapons. They sometimes break off during battle, but they grow back fast.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its pincers are superb weapons. They sometimes break off during battle, but they grow back fast.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It can be found near the sea. The large pincers grow back if they are torn out of their sockets.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If it senses danger approaching, it cloaks itself with bubbles from its mouth so it will look bigger.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in burrows dug on sandy beaches. Its pincers fully grow back if they are lost in battle.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives in burrows dug on sandy beaches. Its pincers fully grow back if they are lost in battle.\"\n    }\n  ],\n  \"99\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The large pincer has 10000 hp of crushing power. However, its huge size makes it unwieldy to use.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The large pincer has 10000 hp of crushing power. However, its huge size makes it unwieldy to use.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"One claw grew massively and as hard as steel. It has 10,000-HP strength. However, it is too heavy.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Said to be capable of prying open Shellder and Cloyster shells using its 10,000-horsepower pincer.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It can hardly lift its massive, overgrown pincer. The pincer's size makes it difficult to aim properly.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its pincers grow peculiarly large. If it lifts the pincers too fast, it loses its balance and staggers.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its oversized claw is very powerful, but when it's not in battle, the claw just gets in the way.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It can hardly lift its massive, overgrown pincer. The pincer's size makes it difficult to aim properly.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Kingler has an enormous, oversized claw. It waves this huge claw in the air to communicate with others. However, because the claw is so heavy, the Pokémon quickly tires.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Kingler has an enormous, oversized claw. It waves this huge claw in the air to communicate with others. However, because the claw is so heavy, the Pokémon quickly tires.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It waves its huge, oversized claw in the air to communicate with others. But since the claw is so heavy, this Pokémon quickly tires.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its large and hard pincer has 10,000-horsepower strength. However, being so big, it is unwieldy to move.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The large pincer has 10,000-horsepower crushing force. However, its huge size makes it unwieldy to use.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The larger pincer has 10,000- horsepower strength. However, it is so heavy, it is difficult to aim.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The larger pincer has 10,000- horsepower strength. However, it is so heavy, it is difficult to aim.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The larger pincer has 10,000- horsepower strength. However, it is so heavy, it is difficult to aim.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can hardly lift its massive, overgrown pincer. The pincer's size makes it difficult to aim properly.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its pincers grow peculiarly large. If it lifts the pincers too fast, it loses its balance and staggers.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The larger pincer has 10,000-horsepower strength. However, it is so heavy, it is difficult to aim.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The larger pincer has 10,000-horsepower strength. However, it is so heavy, it is difficult to aim.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The larger pincer has 10,000-horsepower strength. However, it is so heavy, it is difficult to aim.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The larger pincer has 10,000-horsepower strength. However, it is so heavy, it is difficult to aim.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its large and hard pincer has 10,000-horsepower strength. However, being so big, it is unwieldy to move.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its pincers grow peculiarly large. If it lifts the pincers too fast, it loses its balance and staggers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Kingler has an enormous, oversized claw. It waves this huge claw in the air to communicate with others. However, because the claw is so heavy, the Pokémon quickly tires.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Kingler has an enormous, oversized claw. It waves this huge claw in the air to communicate with others. However, because the claw is so heavy, the Pokémon quickly tires.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"One claw grew massively and is as hard as steel. It has 10,000-horsepower strength. However, it is too heavy.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"One claw grew massively and is as hard as steel. It has 10,000-horsepower strength. However, it is too heavy.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its large and hard pincer has 10,000-horsepower strength. However, being so big, it is unwieldy to move.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its oversized claw is very powerful, but when it's not in battle, the claw just gets in the way.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The larger pincer has 10,000-horsepower strength. However, it is so heavy, it is difficult to aim.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The larger pincer has 10,000-horsepower strength. However, it is so heavy, it is difficult to aim.\"\n    }\n  ],\n  \"100\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is said to camouflage itself as a Poké Ball. It will self-destruct with very little stimulus.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Usually found in power plants. Easily mistaken for a Poké Ball, they have zapped many people.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Usually found in power plants. Easily mistaken for a Poké Ball, they have zapped many people.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It is said to camouflage itself as a Poké Ball. It will self-destruct with very little stimulus.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Usually found in power plants. In some instances, they have been seen drawing power from the trolleys of electric trains.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It rolls to move. If the ground is uneven, a sudden jolt from hitting a bump can cause it to explode.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It was discovered when Poké Balls were introduced. It is said that there is some connection.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"During the study of this Pokémon, it was discovered that its components are not found in nature.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It rolls to move. If the ground is uneven, a sudden jolt from hitting a bump can cause it to explode.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Voltorb was first sighted at a company that manufactures Poké Balls. The link between that sighting and the fact that this Pokémon looks very similar to a Poké Ball remains a mystery.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Voltorb is extremely sensitive - it explodes at the slightest of shocks. It is rumored that it was first created when a Poké Ball was exposed to a powerful pulse of energy.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It bears an uncanny and unexplained resemblance to a Poké Ball. Because it explodes at the slightest shock, even veteran Trainers treat it with caution.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A life-form whose identity is unknown. It is said to Screech or suddenly SelfDestruct.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Usually found in power plants. Easily mistaken for a Poké Ball, it has zapped many people.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It looks just like a Poké Ball. It is dangerous because it may electrocute or explode on touch.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It looks just like a Poké Ball. It is dangerous because it may electrocute or explode on touch.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It looks just like a Poké Ball. It is dangerous because it may electrocute or explode on touch.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It rolls to move. If the ground is uneven, a sudden jolt from hitting a bump can cause it to explode.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It was discovered when Poké Balls were introduced. It is said that there is some connection.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It looks just like a Poké Ball. It is dangerous because it may electrocute or explode on touch.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It looks just like a Poké Ball. It is dangerous because it may electrocute or explode on touch.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It looks just like a Poké Ball. It is dangerous because it may electrocute or explode on contact.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It looks just like a Poké Ball. It is dangerous because it may electrocute or explode on contact.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It was discovered when Poké Balls were introduced. It is said that there is some connection.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Usually found in power plants. Easily mistaken for a Poké Ball, it has zapped many people.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Voltorb was first sighted at a company that manufactures Poké Balls. The link between that sighting and the fact that this Pokémon looks very similar to a Poké Ball remains a mystery.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Voltorb is extremely sensitive—it explodes at the slightest of shocks. It is rumored that it was first created when a Poké Ball was exposed to a powerful pulse of energy.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It is said to camouflage itself as a Poké Ball. It will self-destruct with very little stimulus.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It is said to camouflage itself as a Poké Ball. It will self-destruct with very little stimulus.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It looks just like a Poké Ball. It is dangerous because it may electrocute or explode on touch.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It looks just like a Poké Ball. It is dangerous because it may electrocute or explode on touch.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"An enigmatic Pokémon that happens to bear a resemblance to a Poké Ball. When excited, it discharges the electric current it has stored in its belly, then lets out a great, uproarious laugh.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It rolls to move. If the ground is uneven, a sudden jolt from hitting a bump can cause it to explode.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's usually found in power plants. Easily mistaken for a Poké Ball, it has zapped many people.\"\n    }\n  ],\n  \"101\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It stores an overflowing amount of electric energy inside its body. Even a small shock makes it explode.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"It stores electric energy under very high pressure. It often explodes with little or no provocation.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"It stores electric energy under very high pressure. It often explodes with little or no provocation.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Stores electrical energy inside its body. Even the slightest shock could trigger a huge explosion.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Stores enormous amounts of electricity within its body and explodes with the slightest provocation. Extremely dangerous.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is dangerous. If it has too much electricity and has nothing to do, it amuses itself by exploding.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It stores an overflowing amount of electric energy inside its body. Even a small shock makes it explode.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The more energy it charges up, the faster it gets. But this also makes it more likely to explode.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is dangerous. If it has too much electricity and has nothing to do, it amuses itself by exploding.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Electrode eats electricity in the atmosphere. On days when lightning strikes, you can see this Pokémon exploding all over the place from eating too much electricity.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"One of Electrode's characteristics is its attraction to electricity. It is a problematical Pokémon that congregates mostly at electrical power plants to feed on electricity that has just been generated.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"They appear in great numbers at electric power plants. Because they feed on electricity, they cause massive and chaotic blackouts in nearby cities.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It explodes in response to even minor stimuli. It is feared, with the nickname of \\\"The Bomb Ball.\\\"\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It stores electric energy under very high pressure. It often explodes with little or no provocation.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is known to drift on winds if it is bloated to bursting with stored electricity.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is known to drift on winds if it is bloated to bursting with stored electricity.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is known to drift on winds if it is bloated to bursting with stored electricity.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is dangerous. If it has too much electricity and has nothing to do, it amuses itself by exploding.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It stores an overflowing amount of electric energy inside its body. Even a small shock makes it explode.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is known to drift on winds if it is bloated to bursting with stored electricity.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is known to drift on winds if it is bloated to bursting with stored electricity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is known to drift on winds if it is bloated to bursting with stored electricity.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is known to drift on winds if it is bloated to bursting with stored electricity.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It explodes in response to even minor stimuli. It is feared, with the nickname of \\\"The Bomb Ball.\\\"\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It stores an overflowing amount of electric energy inside its body. Even a small shock makes it explode.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Electrode eats electricity in the atmosphere. On days when lightning strikes, you can see this Pokémon exploding all over the place from eating too much electricity.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"One of Electrode's characteristics is its attraction to electricity. It is a problematical Pokémon that congregates mostly at electrical power plants to feed on electricity that has just been generated.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Stores electrical energy inside its body. Even the slightest shock could trigger a huge explosion.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Stores electrical energy inside its body. Even the slightest shock could trigger a huge explosion.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is known to drift on winds if it is bloated to bursting with stored electricity.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is known to drift on winds if it is bloated to bursting with stored electricity.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The tissue on the surface of its body is curiously similar in composition to an Apricorn. When irritated, this Pokémon lets loose an electric current equal to 20 lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The more energy it charges up, the faster it gets. But this also makes it more likely to explode.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It explodes in response to even minor stimuli. It is feared, with the nickname of the Bomb Ball.\"\n    }\n  ],\n  \"102\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Using telepathy only fellow Exeggcute can pick up on, they always form a cluster of six.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Often mistaken for eggs. When disturbed, they quickly gather and attack in swarms.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Often mistaken for eggs. When disturbed, they quickly gather and attack in swarms.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The heads attract each other and spin around. There must be 6 heads for it to maintain balance.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A Pokémon that is like the seeds of a plant. If you find one and chase it, others will join it without you noticing.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The shell is very durable. Even if it cracks, it can survive without spilling the contents.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Using telepathy only they can receive, they always form a cluster of six Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If even one is separated from the group, the energy bond between the six will make them rejoin instantly.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The shell is very durable. Even if it cracks, it can survive without spilling the contents.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"This Pokémon consists of six eggs that form a closely knit cluster. The six eggs attract each other and spin around. When cracks increasingly appear on the eggs, Exeggcute is close to evolution.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon consists of six eggs that form a closely knit cluster. The six eggs attract each other and spin around. When cracks increasingly appear on the eggs, Exeggcute is close to evolution.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It consists of six eggs that care for each other. The eggs attract each other and spin around. When cracks increasingly appear, it is close to evolution.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Even though it appears to be eggs of some sort, it was discovered to be a life-form more like plant seeds.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is often mistaken for eggs. When disturbed, they quickly gather and attack in swarms.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Their shells are very durable. Even if they crack, they can survive without spilling their contents.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Using telepathy only they can employ, they always form a cluster of six Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Even though it appears to be eggs of some sort, it was discovered to be a life-form more like plant seeds.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon consists of six eggs that form a closely knit cluster. The six eggs attract each other and spin around. When cracks increasingly appear on the eggs, Exeggcute is close to evolution.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon consists of six eggs that form a closely knit cluster. The six eggs attract each other and spin around. When cracks increasingly appear on the eggs, Exeggcute is close to evolution.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its six eggs use telepathy to communicate among themselves. It is believed to carry plant genes and the genes of other species.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Six of them together form a full-fledged Pokémon. It's often hunted by Crabrawler, but uses psychokinesis to drive it off.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Six of them form a single Pokémon. Should one of the six be lost, the next morning there will once more be six.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although they are the same size as other Exeggcute, the ones produced in Alola are quite heavy. Their shells are packed full.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The heads attract each other and spin around. There must be six heads for it to maintain balance.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The heads attract each other and spin around. There must be six heads for it to maintain balance.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Though it may look like it's just a bunch of eggs, it's a proper Pokémon. Exeggcute communicates with others of its kind via telepathy, apparently.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Pokémon get nervous when they're not in a group of six. The minute even one member of the group goes missing, Exeggcute become cowardly.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its six eggs converse using telepathy. They can quickly gather if they become separated.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If you touch one of Exeggcute's heads, mistaking it for an egg, the other heads will quickly gather and attack you in a swarm.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Using telepathy only fellow Exeggcute can pick up on, they always form a cluster of six.\"\n    }\n  ],\n  \"103\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Each of Exeggutor's three heads is thinking different thoughts. The three don't seem to be very interested in one another.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Legend has it that on rare occasions, one of its heads will drop off and continue on as an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Legend has it that on rare occasions, one of its heads will drop off and continue on as an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its cries are very noisy. This is because each of the 3 heads thinks about whatever it likes.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Each of the fruits is an independently-thinking head. It is said that if one drops off, it becomes an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its three heads think independently. However, they are friendly and never appear to squabble.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If a head drops off, it emits a telepathic call in search of others to form an Exeggcute cluster.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Living in a good environment makes it grow lots of heads. A head that drops off becomes an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its three heads think independently. However, they are friendly and never appear to squabble.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Exeggutor originally came from the tropics. Its heads steadily grow larger from exposure to strong sunlight. It is said that when the heads fall off, they group together to form Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Exeggutor originally came from the tropics. Its heads steadily grow larger from exposure to strong sunlight. It is said that when the heads fall off, they group together to form Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Originally from the tropics, Exeggutor's heads grow larger from exposure to strong sunlight. It is said that when the heads fall, they group to form an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is called \\\"The Walking Tropical Rainforest.\\\" Each of the nuts has a face and a will of its own.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is said that on rare occasions, one of its heads will drop off and continue on as an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is called \\\"The Walking Jungle.\\\" If a head grows too big, it falls off and becomes an EXEGGCUTE.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is called \\\"The Walking Jungle.\\\" If a head grows too big, it falls off and becomes an EXEGGCUTE.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is called \\\"The Walking Jungle.\\\" If a head grows too big, it falls off and becomes an EXEGGCUTE.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its three heads think independently. However, they are friendly and never appear to squabble.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If a head drops off, it emits a telepathic call in search of others to form an Exeggcute cluster.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is called \\\"The Walking Jungle.\\\" If a head grows too big, it falls off and becomes an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is called \\\"The Walking Jungle.\\\" If a head grows too big, it falls off and becomes an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is called \\\"The Walking Jungle.\\\" If a head grows too big, it falls off and becomes an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is called \\\"The Walking Jungle.\\\" If a head grows too big, it falls off and becomes an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its three heads think independently. However, they are friendly and never appear to squabble.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is called \\\"The Walking Jungle.\\\" If a head grows too big, it falls off and becomes an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Exeggutor originally came from the tropics. Its heads steadily grow larger from exposure to strong sunlight. It is said that when the heads fall off, they group together to form Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Exeggutor originally came from the tropics. Its heads steadily grow larger from exposure to strong sunlight. It is said that when the heads fall off, they group together to form Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Each of its heads has its own will. They use telepathy to discuss their plans before coming to a joint decision.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When the time comes, one of its three heads falls off. Before long, the fallen head grows into an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It engages its enemies using psychic powers. Each of its three heads fires off psychokinetic energy, tripling its power.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Each of its three heads has its own thoughts. When they want to go in different directions, Exeggutor becomes unable to move.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its cries are very noisy. This is because each of the three heads thinks about whatever it likes.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its cries are very noisy. This is because each of the three heads thinks about whatever it likes.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Each of Exeggutor's three heads is thinking different thoughts. The three don't seem to be very interested in one another.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When they work together, Exeggutor's three heads can put out powerful psychic energy. Cloudy days make this Pokémon sluggish.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is called the Walking Jungle. If a head grows too big, it falls off and becomes an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is called the Walking Jungle. If a head grows too big, it falls off and becomes an Exeggcute.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is called the Walking Jungle. Each of the nuts has a face and a will of its own.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is said that on rare occasions, one of its heads will drop off and continue on as an Exeggcute.\"\n    }\n  ],\n  \"104\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Wears the skull of its deceased mother. Its cries echo inside the skull and come out as a sad melody.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Because it never removes its skull helmet, no one has ever seen this Pokémon's real face.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Because it never removes its skull helmet, no one has ever seen this Pokémon's real face.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Wears the skull of its deceased mother. Its cries echo inside the skull and come out as a sad melody.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Always wears the skull of its deceased mother on its head and never shows its face. It cries mournfully in the moonlight.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If it is sad or lonely, the skull it wears shakes, and emits a plaintive and mournful sound.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It always wears the skull of its dead mother, so no one has any idea what its hidden face looks like.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It lost its mother after its birth. It wears its mother's skull, never revealing its true face.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If it is sad or lonely, the skull it wears shakes, and emits a plaintive and mournful sound.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Cubone pines for the mother it will never see again. Seeing a likeness of its mother in the full moon, it cries. The stains on the skull the Pokémon wears are made by the tears it sheds.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Cubone pines for the mother it will never see again. Seeing a likeness of its mother in the full moon, it cries. The stains on the skull the Pokémon wears are made by the tears it sheds.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It pines for the mother it will never see again. Seeing a likeness of its mother in the full moon, it cries. The stains on the skull it wears are from its tears.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It wears the skull of its dead mother on its head. When it becomes lonesome, it is said to cry loudly.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Because it never removes its skull helmet, no one has ever seen this Pokémon's real face.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When it thinks of its dead mother, it cries. Its crying makes the skull it wears rattle hollowly.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When it thinks of its dead mother, it cries. Its crying makes the skull it wears rattle hollowly.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When it thinks of its dead mother, it cries. Its crying makes the skull it wears rattle hollowly.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it is sad or lonely, the skull it wears shakes and emits a plaintive and mournful sound.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It always wears the skull of its dead mother, so no one has any idea what its hidden face looks like.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it thinks of its dead mother, it cries. Its crying makes the skull it wears rattle hollowly.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When it thinks of its dead mother, it cries. Its crying makes the skull it wears rattle hollowly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it thinks of its dead mother, it cries. Its crying makes the skull it wears rattle hollowly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it thinks of its dead mother, it cries. Its crying makes the skull it wears rattle hollowly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It wears the skull of its dead mother on its head. When it becomes lonesome, it is said to cry loudly.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It always wears the skull of its dead mother, so no one has any idea what its hidden face looks like.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Cubone pines for the mother it will never see again. Seeing a likeness of its mother in the full moon, it cries. The stains on the skull the Pokémon wears are made by the tears it sheds.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Cubone pines for the mother it will never see again. Seeing a likeness of its mother in the full moon, it cries. The stains on the skull the Pokémon wears are made by the tears it sheds.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it thinks of its deceased mother, it weeps loudly. Mandibuzz that hear its cries will attack it from the air.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The skull it wears on its head is that of its dead mother. According to some, it will evolve when it comes to terms with the pain of her death.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"At night, it weeps loudly for its dead mother, but those cries only attract its natural enemy—Mandibuzz.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It wears its mother's skull on its head, so no one knows what its bare face looks like. However, it's clear that it's always crying.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Wears the skull of its deceased mother. Its cries echo inside the skull and come out as a sad melody.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Wears the skull of its deceased mother. Its cries echo inside the skull and come out as a sad melody.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When the memory of its departed mother brings it to tears, its cries echo mournfully within the skull it wears on its head.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon wears the skull of its deceased mother. Sometimes Cubone's dreams make it cry, but each tear Cubone sheds makes it stronger.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When it thinks of its dead mother, it cries. Its crying makes the skull it wears rattle hollowly.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When it thinks of its dead mother, it cries. Its crying makes the skull it wears rattle hollowly.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon lost its mother just after its birth. It wears her skull, never revealing its true face.\"\n    }\n  ],\n  \"105\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Small and weak, this Pokémon is adept with its bone club. It has grown more vicious over the ages.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The bone it holds is its key weapon. It throws the bone skillfully like a boomerang to KO targets.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The bone it holds is its key weapon. It throws the bone skillfully like a boomerang to KO targets.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Small and weak, this Pokémon is adept with its bone club. It has grown more vicious over the ages.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Originally a small and weak Pokémon, it became rough and aggressive when it begin using bones as weapons.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has been seen pounding boulders with the bone it carries in order to tap out messages to others.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It collects bones from an unknown place. A Marowak graveyard exists somewhere in the world, rumors say.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Somewhere in the world is a cemetery just for Marowak. It gets its bones from those graves.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has been seen pounding boulders with the bone it carries in order to tap out messages to others.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Marowak is the evolved form of a Cubone that has overcome its sadness at the loss of its mother and grown tough. This Pokémon's tempered and hardened spirit is not easily broken.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Marowak is the evolved form of a Cubone that has overcome its sadness at the loss of its mother and grown tough. This Pokémon's tempered and hardened spirit is not easily broken.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Marowak is the evolved form of a Cubone that has grown tough by overcoming the grief of losing its mother. Its tempered and hardened spirit is not easily broken.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is small and was originally very weak. Its temperament turned ferocious when it began using bones.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The bone it holds is its key weapon. It throws the bone skillfully like a boomerang to KO targets.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"From its birth, this savage Pokémon constantly holds bones. It is skilled in using them as weapons.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"From its birth, this savage Pokémon constantly holds bones. It is skilled in using them as weapons.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"From its birth, this savage Pokémon constantly holds bones. It is skilled in using them as weapons.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has been seen pounding boulders with the bone it carries in order to tap out messages to others.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It collects bones from an unknown place. Some whisper that a Marowak graveyard exists somewhere in the world.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"From its birth, this savage Pokémon constantly holds bones. It is skilled in using them as weapons.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"From its birth, this savage Pokémon constantly holds bones. It is skilled in using them as weapons.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"From its birth, this savage Pokémon constantly holds bones. It is skilled in using them as weapons.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"From its birth, this savage Pokémon constantly holds bones. It is skilled in using them as weapons.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is small and was originally very weak. Its temperament turned ferocious when it began using bones.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The bone it holds is its key weapon. It throws the bone skillfully like a boomerang to KO targets.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Marowak is the evolved form of a Cubone that has overcome its sadness at the loss of its mother and grown tough. This Pokémon's tempered and hardened spirit is not easily broken.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Marowak is the evolved form of a Cubone that has overcome its sadness at the loss of its mother and grown tough. This Pokémon's tempered and hardened spirit is not easily broken.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Originally, it was weak and timid. After evolution, its temperament becomes violent, and it begins to wield bones as weapons.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon is out for vengeance on its natural enemy, Mandibuzz. It throws bones like boomerangs to try to take it down.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It throws bones at Mandibuzz to knock it down. It's thought that Marowak is trying to avenge its parent.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They thump their bones rhythmically to communicate among themselves. There are nearly 50 different rhythmic patterns.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Small and weak, this Pokémon is adept with its bone club. It has grown more vicious over the ages.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Small and weak, this Pokémon is adept with its bone club. It has grown more vicious over the ages.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon overcame its sorrow to evolve a sturdy new body. Marowak faces its opponents bravely, using a bone as a weapon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When this Pokémon evolved, the skull of its mother fused to it. Marowak's temperament also turned vicious at the same time.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The bones it uses have been in its possession since it was born. It has a ferocious nature.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The bones it uses have been in its possession since it was born. It has a ferocious nature.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It carries a bone that it collected from someplace unknown. Rumor has it that somewhere in the world, there is a graveyard only for Marowak.\"\n    }\n  ],\n  \"106\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has complete control over the ligaments in its legs, expanding and contracting them to double the reach of its kicks.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When in a hurry, its legs lengthen progressively. It runs smoothly with extra long, loping strides.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When in a hurry, its legs lengthen progressively. It runs smoothly with extra long, loping strides.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"When kicking, the sole of its foot turns as hard as a diamond on impact and destroys its enemy.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Repeatedly kicks its enemy with legs that freely stretch and contract. Some people refer to it as the \\\"kicking master.\\\"\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This amazing Pokémon has an awesome sense of balance. It can kick in succession from any position.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If it starts kicking repeatedly, both legs will stretch even longer to strike a fleeing foe.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is also called the Kick Master. It uses its elastic legs to execute every known kick.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This amazing Pokémon has an awesome sense of balance. It can kick in succession from any position.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Hitmonlee's legs freely contract and stretch. Using these springlike legs, it bowls over foes with devastating kicks. After battle, it rubs down its legs and loosens the muscles to overcome fatigue.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Hitmonlee's legs freely contract and stretch. Using these springlike legs, it bowls over foes with devastating kicks. After battle, it rubs down its legs and loosens the muscles to overcome fatigue.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its legs freely stretch and contract. Using these springlike limbs, it bowls over foes with devastating kicks. After battle, it rubs down its tired legs.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The legs freely contract and stretch. The stretchy legs allow it to hit a distant foe with a rising kick.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When in a hurry, its legs lengthen progressively. It runs smoothly with extra-long, loping strides.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its legs can stretch double. First-time foes are startled by its extensible reach.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its legs can stretch double. First-time foes are startled by its extensible reach.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its legs can stretch double. First-time foes are startled by its extensible reach.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This amazing Pokémon has an awesome sense of balance. It can kick in succession from any position.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it starts kicking repeatedly, both legs will stretch even longer to strike a fleeing foe.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its legs can stretch double. First-time foes are startled by its extensible reach.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its legs can stretch double. First-time foes are startled by its extensible reach.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its legs can stretch double. First-time foes are startled by its extensible reach.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its legs can stretch double. First-time foes are startled by its extensible reach.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The legs freely contract and stretch. The stretchy legs allow it to hit a distant foe with a rising kick.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it starts kicking repeatedly, both legs will stretch even longer to strike a fleeing foe.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Hitmonlee's legs freely contract and stretch. Using these springlike legs, it bowls over foes with devastating kicks. After battle, it rubs down its legs and loosens the muscles to overcome fatigue.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Hitmonlee's legs freely contract and stretch. Using these springlike legs, it bowls over foes with devastating kicks. After battle, it rubs down its legs and loosens the muscles to overcome fatigue.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When kicking, the sole of its foot turns as hard as a diamond on impact and destroys its enemy.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When kicking, the sole of its foot turns as hard as a diamond on impact and destroys its enemy.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This amazing Pokémon has an awesome sense of balance. It can kick in succession from any position.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The legs freely contract and stretch. The stretchy legs allow it to hit a distant foe with a rising kick.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its legs can stretch to double their length. First-time foes are startled by Hitmonlee's extensible reach.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its legs can stretch to double their length. First-time foes are startled by Hitmonlee's extensible reach.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"At the exact moment it lands a kick on its target, Hitmonlee hardens the muscles on the sole of its foot, maximizing the power of the kick.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has complete control over the ligaments in its legs, expanding and contracting them to double the reach of its kicks.\"\n    }\n  ],\n  \"107\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It corners its foes with combo punches from both sides, then finishes them off with a single straight punch launched at over 300 mph.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"While apparently doing nothing, it fires punches in lightning fast volleys that are impossible to see.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"While apparently doing nothing, it fires punches in lightning fast volleys that are impossible to see.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Punches in corkscrew fashion. It can punch its way through a concrete wall in the same way as a drill.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Adept at punching invisibly quick at bullet-train speed. It takes a break every three minutes as it moves around.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its punches slice the air. However, it seems to need a short break after fighting for three minutes.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its punches slice the air. They are launched at such high speed, even a slight graze could cause a burn.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"To increase the strength of all its punch moves, it spins its arms just before making contact.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its punches slice the air. However, it seems to need a short break after fighting for three minutes.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Hitmonchan is said to possess the spirit of a boxer who had been working towards a world championship. This Pokémon has an indomitable spirit and will never give up in the face of adversity.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Hitmonchan is said to possess the spirit of a boxer who had been working towards a world championship. This Pokémon has an indomitable spirit and will never give up in the face of adversity.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Hitmonchan is said to possess the spirit of a boxer who aimed to become the world champion. Having an indomitable spirit means that it will never give up.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The spirit of a pro boxer has infused this Pokémon. It throws punches that are faster than a bullet train.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"While apparently doing nothing, it fires punches in lightning-fast volleys that are impossible to see.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The arm-twisting punches it throws pulverize even concrete. It rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The arm-twisting punches it throws pulverize even concrete. It rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The arm-twisting punches it throws pulverize even concrete. It rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its punches slice the air. However, it seems to need a short break after fighting for three minutes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its punches slice the air. They are launched at such high speed, even a slight graze could cause a burn.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The arm-twisting punches it throws pulverize even concrete. It rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The arm-twisting punches it throws pulverize even concrete. It rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The arm-twisting punches it throws pulverize even concrete. It rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The arm-twisting punches it throws pulverize even concrete. It rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The arm-twisting punches it throws pulverize even concrete. It rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The spirit of a pro boxer has infused this Pokémon. It throws punches that are faster than a bullet train.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Hitmonchan is said to possess the spirit of a boxer who had been working toward a world championship. This Pokémon has an indomitable spirit and will never give up in the face of adversity.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Hitmonchan is said to possess the spirit of a boxer who had been working toward a world championship. This Pokémon has an indomitable spirit and will never give up in the face of adversity.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Punches in corkscrew fashion. It can punch its way through a concrete wall like a drill.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Punches in corkscrew fashion. It can punch its way through a concrete wall like a drill.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its punches slice the air. They are launched at such high speed, even a slight graze could cause a burn.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its punches slice the air. However, it seems to need a short break after fighting for three minutes.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When Hitmonchan twists its arm while throwing a punch, the blow will pulverize even concrete. The Pokémon rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When Hitmonchan twists its arm while throwing a punch, the blow will pulverize even concrete. The Pokémon rests after three minutes of fighting.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It corners its foes with combo punches from both sides, then finishes them off with a single straight punch launched at over 300 mph.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its fists are masses of muscle. It takes a break every three minutes to steady its breath and mood.\"\n    }\n  ],\n  \"108\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its tongue can be extended like a chameleon's. It leaves a tingling sensation when it licks enemies.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its tongue can be extended like a chameleon's. It leaves a tingling sensation when it licks enemies.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its tongue spans almost 7 feet and moves more freely than its forelegs. Its licks can cause paralysis.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its tongue, twice its body's length, moves around freely to catch prey. Its licks cause a tingling sensation.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its tongue has well-developed nerves that run to the very tip, so it can be deftly manipulated.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its long tongue, slathered with a gooey saliva, sticks to anything, so it is very useful.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It has a tongue that is over 6'6\\\" long. It uses this long tongue to lick its body clean.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its tongue has well-developed nerves that run to the very tip, so it can be deftly manipulated.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Whenever Lickitung comes across something new, it will unfailingly give it a lick. It does so because it memorizes things by texture and by taste. It is somewhat put off by sour things.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Whenever Lickitung comes across something new, it will unfailingly give it a lick. It does so because it memorizes things by texture and by taste. It is somewhat put off by sour things.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Whenever it sees something unfamiliar, it always licks the object because it memorizes things by texture and taste. It is somewhat put off by sour things.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its tongue is twice the length of its body. It can be moved like an arm for grabbing food and attacking.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its tongue can be extended like a chameleon's. It leaves a tingling sensation when it licks enemies.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Instead of hands, it uses its tongue, which is twice its height. Its sticky saliva grips anything.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Instead of hands, it uses its tongue, which is twice its height. Its sticky saliva grips anything.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When it extends its over-six-foot-long tongue, its tail quivers. There is a possibility they are connected.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its tongue has well-developed nerves that run to the very tip, so it can be deftly manipulated.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its long tongue, slathered with a gooey saliva, sticks to anything, so it is very useful.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it extends its over-six-foot-long tongue, its tail quivers. There is a possibility they are connected.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When it extends its over-six-foot-long tongue, its tail quivers. There is a possibility they are connected.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Being licked by its long, saliva-covered tongue leaves a tingling sensation. Extending its tongue retracts its tail.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Being licked by its long, saliva-covered tongue leaves a tingling sensation. Extending its tongue retracts its tail.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its long tongue, slathered with a gooey saliva, sticks to anything, so it is very useful.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its tongue is twice the length of its body. It can be moved like an arm for grabbing food and attacking.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Whenever Lickitung comes across something new, it will unfailingly give it a lick. It does so because it memorizes things by texture and by taste. It is somewhat put off by sour things.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Whenever Lickitung comes across something new, it will unfailingly give it a lick. It does so because it memorizes things by texture and by taste. It is somewhat put off by sour things.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It checks out whatever's around it by licking everything. If you don't clean off a spot where it's licked you, you'll break out in a rash!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It licks filth clean with its tongue. Whatever it licks always stinks afterward, so whether it's really clean is...questionable.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its tongue spans almost seven feet and moves more freely than its forelegs. Its licks can cause paralysis.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its tongue spans almost seven feet and moves more freely than its forelegs. Its licks can cause paralysis.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If this Pokémon's sticky saliva gets on you and you don't clean it off, an intense itch will set in. The itch won't go away, either.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Bug Pokémon are Lickitung's main food source. This Pokémon paralyzes its prey with a lick from its long tongue, then swallows the prey whole.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Instead of its hands, it uses its tongue, which can stretch to twice this Pokémon's height. Lickitung's sticky saliva grips anything.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Instead of its hands, it uses its tongue, which can stretch to twice this Pokémon's height. Lickitung's sticky saliva grips anything.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Wields its long tongue deftly, as though it were an arm. The Pokémon's viscous saliva, once it has been collected and boiled down, yields a strong and highly useful adhesive.\"\n    }\n  ],\n  \"109\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Lighter-than-air gases in its body keep it aloft. The gases not only smell; they are also explosive.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Because it stores several kinds of toxic gases in its body, it is prone to exploding without warning.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Because it stores several kinds of toxic gases in its body, it is prone to exploding without warning.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"In hot places, its internal gases could expand and explode without any warning. Be very careful!\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A Pokémon that is like a thin-skinned balloon filled with a highly toxic gas. Known to occasionally explode.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its thin, filmy body is filled with gases that cause constant sniffles, coughs and teary eyes.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The poisonous gases it contains are a little bit lighter than air, keeping it slightly airborne.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If one gets close enough to it when it expels poisonous gas, the gas swirling inside it can be seen.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its thin, filmy body is filled with gases that cause constant sniffles, coughs and teary eyes.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"If Koffing becomes agitated, it raises the toxicity of its internal gases and jets them out from all over its body. This Pokémon may also overinflate its round body, then explode.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Koffing embodies toxic substances. It mixes the toxins with raw garbage to set off a chemical reaction that results in a terribly powerful poison gas. The higher the temperature, the more gas is concocted by this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Getting up close to a Koffing will give you a chance to observe, through its thin skin, the toxic gases swirling inside. It blows up at the slightest stimulation.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its thin, balloon-like body is inflated by horribly toxic gases. It reeks when it is nearby.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Because it stores several kinds of toxic gases in its body, it is prone to exploding without warning.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Lighter-than-air gases in its body keep it aloft. The gases not only smell, they are also explosive.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Lighter-than-air gases in its body keep it aloft. The gases not only smell, they are also explosive.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Lighter-than-air gases in its body keep it aloft. The gases not only smell, they are also explosive.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its thin, filmy body is filled with gases that cause constant sniffles, coughs and teary eyes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The poisonous gases it contains are a little bit lighter than air, keeping it slightly airborne.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Lighter-than-air gases in its body keep it aloft. The gases not only smell, they are also explosive.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Lighter-than-air gases in its body keep it aloft. The gases not only smell, they are also explosive.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Toxic gas is held within its thin, balloon-shaped body, so it can cause massive explosions.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Toxic gas is held within its thin, balloon-shaped body, so it can cause massive explosions.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its thin, balloon-like body is inflated by horribly toxic gases. It reeks when it is nearby.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Lighter-than-air gases in its body keep it aloft. The gases not only smell, they are also explosive.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"If Koffing becomes agitated, it raises the toxicity of its internal gases and jets them out from all over its body. This Pokémon may also overinflate its round body, then explode.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Koffing embodies toxic substances. It mixes the toxins with raw garbage to set off a chemical reaction that results in a terribly powerful poison gas. The higher the temperature, the more gas is concocted by this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"In hot places, its internal gases could expand and explode without any warning. Be very careful!\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"In hot places, its internal gases could expand and explode without any warning. Be very careful!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its body is full of poisonous gas. It floats into garbage dumps, seeking out the fumes of raw, rotting trash.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It adores polluted air. Some claim that Koffing used to be more plentiful in the Galar region than they are now.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Lighter-than-air gases in its body keep it aloft. The gases not only smell; they are also explosive.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Lighter-than-air gases in its body keep it aloft. The gases not only smell; they are also explosive.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Toxic gas is held within its thin, balloon-shaped body, so it can cause massive explosions.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The poisonous gases it contains are a little bit lighter than air. That's why it's always slightly airborne.\"\n    }\n  ],\n  \"110\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Top-grade perfume is made using its internal poison gases by diluting them to the highest level.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Where two kinds of poison gases meet, 2 Koffings can fuse into a Weezing over many years.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Where two kinds of poison gases meet, 2 Koffings can fuse into a Weezing over many years.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It lives and grows by absorbing dust, germs and poison gases that are contained in toxic waste and garbage.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A twinned Koffing that forms on rare occasions where poisonous gases pool. Its two toxic gases appear to be different.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If one of the twin Koffing inflates, the other one deflates. It constantly mixes its poisonous gases.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Top-grade perfume is made using its internal poison gases by diluting them to the highest level.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it inhales poisonous gases from garbage, its body expands, and its insides smell much worse.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If one of the twin Koffing inflates, the other one deflates. It constantly mixes its poisonous gases.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Weezing loves the gases given off by rotted kitchen garbage. This Pokémon will find a dirty, unkempt house and make it its home. At night, when the people in the house are asleep, it will go through the trash.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Weezing alternately shrinks and inflates its twin bodies to mix together toxic gases inside. The more the gases are mixed, the more powerful the toxins become. The Pokémon also becomes more putrid.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"By diluting its toxic gases with a special process, the highest grade of perfume can be extracted. To Weezing, gases emanating from garbage are the ultimate feast.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Very rarely, a sudden mutation can result in two small Koffing twins becoming conjoined as a Weezing.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Where two kinds of poison gases meet, two Koffing can fuse into a Weezing over many years.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It grows by feeding on gases released by garbage. Though very rare, triplets have been found.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It grows by feeding on gases released by garbage. Though very rare, triplets have been found.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It grows by feeding on gases released by garbage. Though very rare, triplets have been found.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If one of the twin Koffing inflates, the other one deflates. It constantly mixes its poisonous gases.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Top-grade perfume is made using its internal poison gases by diluting them to the highest level.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It grows by feeding on gases released by garbage. Though very rare, triplets have been found.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It grows by feeding on gases released by garbage. Though very rare, triplets have been found.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Inhaling toxic fumes from trash and mixing them inside its body lets it spread an even fouler stench.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Inhaling toxic fumes from trash and mixing them inside its body lets it spread an even fouler stench.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If one of the twin Koffing inflates, the other one deflates. It constantly mixes its poisonous gases.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Very rarely, a sudden mutation can result in two small Koffing twins becoming conjoined as a Weezing.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Weezing loves the gases given off by rotted kitchen garbage. This Pokémon will find a dirty, unkempt house and make it its home. At night, when the people in the house are asleep, it will go through the trash.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Weezing alternately shrinks and inflates its twin bodies to mix together toxic gases inside. The more the gases are mixed, the more powerful the toxins become. The Pokémon also becomes more putrid.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"This Pokémon lives and grows by absorbing poison gas, dust, and germs that exist inside garbage.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"This Pokémon lives and grows by absorbing poison gas, dust, and germs that exist inside garbage.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It mixes gases between its two bodies. It's said that these Pokémon were seen all over the Galar region back in the day.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can't suck in air quite as well as a Galarian Weezing, but the toxins it creates are more potent than those of its counterpart.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It grows by feeding on gases released by garbage. Though very rare, triplets have been found.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It grows by feeding on gases released by garbage. Though very rare, triplets have been found.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Top-grade perfume is made using its internal poison gases by diluting them to the highest level.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it inhales poisonous gases from garbage, its body expands, and its insides smell much worse.\"\n    }\n  ],\n  \"111\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its massive bones are 1000 times harder than human bones. It can easily knock a trailer flying.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its massive bones are 1000 times harder than human bones. It can easily knock a trailer flying.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A Pokémon with a one-track mind. Once it charges, it won't stop running until it falls asleep.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its bones are 1,000 times harder than human bones. Using its durability and strength, it can destroy tall buildings.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is inept at turning because of its four short legs. It can only charge and run in one direction.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It doesn't care if there is anything in its way. It just charges and destroys all obstacles.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It can remember only one thing at a time. Once it starts rushing, it forgets why it started.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is inept at turning because of its four short legs. It can only charge and run in one direction.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Rhyhorn runs in a straight line, smashing everything in its path. It is not bothered even if it rushes headlong into a block of steel. This Pokémon may feel some pain from the collision the next day, however.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Rhyhorn's brain is very small. It is so dense, while on a run it forgets why it started running in the first place. It apparently remembers sometimes if it demolishes something.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Once it starts running, it doesn't stop. Its tiny brain makes it so stupid that it can't remember why it started running in the first place.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Strong, but not too bright, this Pokémon can shatter even a skyscraper with its charging Tackles.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its massive bones are 1,000 times harder than human bones. Its Tackle can knock a semitrailer flying.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body is clad in a thick hide, and its tackles topple buildings. Unfortunately, it is not smart.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body is clad in a thick hide, and its tackles topple buildings. Unfortunately, it is not smart.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its powerful tackles can destroy anything. However, it is too slow witted to help people work.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is inept at turning because of its four short legs. It can only charge and run in one direction.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It doesn't care if there is anything in its way. It just charges and destroys all obstacles.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its powerful tackles can destroy anything. However, it is too slow witted to help people work.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its powerful tackles can destroy anything. However, it is too slow witted to help people work.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its powerful tackles can destroy anything. However, it is too slow witted to help people work.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its powerful tackles can destroy anything. However, it is too slow witted to help people work.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Strong, but not too bright, this Pokémon can shatter even a skyscraper with its charging Tackles.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is inept at turning because of its four short legs. It can only charge and run in one direction.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Rhyhorn runs in a straight line, smashing everything in its path. It is not bothered even if it rushes headlong into a block of steel. This Pokémon may feel some pain from the collision the next day, however.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Rhyhorn's brain is very small. It is so dense, while on a run it forgets why it started running in the first place. It apparently remembers sometimes if it demolishes something.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A Pokémon with a one-track mind. Once it charges, it won't stop running until it falls asleep.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A Pokémon with a one-track mind. Once it charges, it won't stop running until it falls asleep.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Strong, but not too bright, this Pokémon can shatter even a skyscraper with its charging tackles.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Strong, but not too bright, this Pokémon can shatter even a skyscraper with its charging tackles.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can remember only one thing at a time. Once it starts rushing, it forgets why it started.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can remember only one thing at a time. Once it starts rushing, it forgets why it started.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body is clad in a thick hide, and its tackles topple buildings. Unfortunately, it is not smart.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body is clad in a thick hide, and its tackles topple buildings. Unfortunately, it is not smart.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Ludicrously strong—when it butts heads with a mountain, it is the mountain that shatters. But its short legs struggle with turns, and it is incapable of stopping unless it collides with something.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Rhyhorn claims an area with over a six mile radius as its territory. It apparently forgets where this territory is when running, however.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Once it starts running, it won't stop—even if it crashes through boulders. This disposition is what's caused its habitat to expand.\"\n    }\n  ],\n  \"112\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Protected by an armor-like hide, it is capable of living in molten lava of 3,600 degrees.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Protected by an armor-like hide, it is capable of living in molten lava of 3,600 degrees.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Walks on its hind legs. Shows signs of intelligence. Its armor-like hide even repels molten lava.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Protected by an armor-like hide, it can survive in lava over 3,600 degrees. Its horn can bore holes through boulders.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its rugged hide protects it from even the heat of lava. However, the hide also makes it insensitive.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its brain developed when it began walking on hind legs. Its thick hide protects it even in magma.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"By lightly spinning its drill-like horn, it can easily shatter even a diamond in the rough.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its rugged hide protects it from even the heat of lava. However, the hide also makes it insensitive.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Rhydon's horn can crush even uncut diamonds. One sweeping blow of its tail can topple a building. This Pokémon's hide is extremely tough. Even direct cannon hits don't leave a scratch.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Rhydon has a horn that serves as a drill. It is used for destroying rocks and boulders. This Pokémon occasionally rams into streams of magma, but the armor-like hide prevents it from feeling the heat.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its horn, which rotates like a drill, destroys tall buildings with one strike. It stands on its hind legs, and its brain is well developed.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It begins walking on its hind legs after evolution. It can punch holes through boulders with its horn.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Protected by an armor-like hide, it is capable of living in molten lava of 3,600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its brain developed after it stood up on its hind legs. Its drill horn bores tunnels through solid rock.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its brain developed after it stood up on its hind legs. Its drill horn bores tunnels through solid rock.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Standing on its hind legs freed its forelegs and made it smarter. It is very forgetful, however.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its rugged hide protects it from even the heat of lava. However, the hide also makes it insensitive.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its brain developed when it began walking on hind legs. Its thick hide protects it even in magma.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Standing on its hind legs freed its forelegs and made it smarter. It is very forgetful, however.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Standing on its hind legs freed its forelegs and made it smarter. It is very forgetful, however.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Standing on its hind legs freed its forelegs and made it smarter. It is very forgetful, however.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Standing on its hind legs freed its forelegs and made it smarter. It is very forgetful, however.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Protected by an armor-like hide, it is capable of living in molten lava of 3,600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It begins walking on its hind legs after evolution. It can punch holes through boulders with its horn.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Rhydon's horn can crush even uncut diamonds. One sweeping blow of its tail can topple a building. This Pokémon's hide is extremely tough. Even direct cannon hits don't leave a scratch.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Rhydon has a horn that serves as a drill. It is used for destroying rocks and boulders. This Pokémon occasionally rams into streams of magma, but the armor-like hide prevents it from feeling the heat.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its brain developed when it began walking on its hind legs. Its armor-like hide even repels molten lava.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its brain developed when it began walking on its hind legs. Its armor-like hide even repels molten lava.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It begins walking on its hind legs after evolution. It can punch holes through boulders with its horn.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It begins walking on its hind legs after evolution. It can punch holes through boulders with its horn.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Protected by an armor-like hide, it is capable of living in molten lava of 3,600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Protected by an armor-like hide, it is capable of living in molten lava of 3,600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its brain developed after it stood up on its hind legs. Its drill horn bores tunnels through solid rock.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its brain developed after it stood up on its hind legs. Its drill horn bores tunnels through solid rock.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Rapidly rotates its horn to bore through bedrock. It swaggers around volcanic regions, protected from the lava's heat by its tough, armorlike hide.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The horn of a Rhydon is powerful enough to crush raw diamonds. These Pokémon polish their horns by bashing them together.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It evolved to walk using only its hind legs, which has allowed it to expand its habitat even onto steep mountains.\"\n    }\n  ],\n  \"113\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A gentle and kindhearted Pokémon that shares its nutritious eggs if it sees an injured Pokémon.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A rare and elusive Pokémon that is said to bring happiness to those who manage to get it.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A rare and elusive Pokémon that is said to bring happiness to those who manage to get it.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A gentle and kind-hearted Pokémon that shares its nutritious eggs if it sees an injured Pokémon.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Lays very succulent eggs every day. If it is treated with love and care, its eggs appear to become even more delicious.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It walks carefully to prevent its egg from breaking. However, it is extremely fast at running away.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Few in number and difficult to capture, it is said to bring happiness to the trainer who catches it.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"People try to catch it for its extremely nutritious eggs, but it rarely can be found.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It walks carefully to prevent its egg from breaking. However, it is extremely fast at running away.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Chansey lays nutritionally excellent eggs on an everyday basis. The eggs are so delicious, they are easily and eagerly devoured by even those people who have lost their appetite.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Chansey lays nutritionally excellent eggs on an everyday basis. The eggs are so delicious, they are easily and eagerly devoured by even those people who have lost their appetite.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Chansey lay nutritionally excellent eggs every day. The eggs are so delicious, they are eagerly devoured by even those people who have lost their appetite.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lays several eggs a day. The eggs are apparently rich in nutrients and extremely delicious.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A rare and elusive Pokémon that is said to bring happiness to those who manage to catch one.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said to deliver happiness. Being compassionate, it shares its eggs with injured people.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lays several eggs a day and won't share them with those who have evil in their hearts.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A kindly Pokémon that lays highly nutritious eggs and shares them with injured Pokémon or people.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It walks carefully to prevent its egg from breaking. However, it is extremely fast at running away.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Being few in number and difficult to capture, it is said to bring happiness to the Trainer who catches it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A kindly Pokémon that lays highly nutritious eggs and shares them with injured Pokémon or people.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A kindly Pokémon that lays highly nutritious eggs and shares them with injured Pokémon or people.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A kindly Pokémon that lays highly nutritious eggs and shares them with injured Pokémon or people.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A kindly Pokémon that lays highly nutritious eggs and shares them with injured Pokémon or people.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said to deliver happiness. Being compassionate, it shares its eggs with injured people.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lays several eggs a day. The eggs are apparently rich in nutrients and extremely delicious.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Chansey lays nutritionally excellent eggs on an everyday basis. The eggs are so delicious, they are easily and eagerly devoured by even those people who have lost their appetite.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Chansey lays nutritionally excellent eggs on an everyday basis. The eggs are so delicious, they are easily and eagerly devoured by even those people who have lost their appetite.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The eggs laid by Chansey are rich in nutrients and a favorite food of many Pokémon.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Not only are these Pokémon fast runners, they're also few in number, so anyone who finds one must be lucky indeed.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It seems that other Pokémon's efforts to take its delicious, nutritious egg away from it caused Chansey to get faster at fleeing.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Because the eggs on their bellies have been overharvested by people in the past, the Chansey population remains very small.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A gentle and kindhearted Pokémon that shares its nutritious eggs if it sees an injured Pokémon.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A gentle and kindhearted Pokémon that shares its nutritious eggs if it sees an injured Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The egg Chansey carries is not only delicious but also packed with nutrition. It's used as a high-class cooking ingredient.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This species was once very slow. To protect their eggs from other creatures, these Pokémon became able to flee quickly.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said to deliver happiness. Being compassionate, it shares its eggs with injured people.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lays several eggs a day and won't share them with those who have evil in their hearts.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This purehearted Pokémon shares its eggs with the injured. These eggs are so nutritious that they've been nicknamed \\\"doctors' doubles.\\\"\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This kindly Pokémon lays highly nutritious eggs and shares them with injured Pokémon or people.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It walks carefully to prevent its egg from breaking. However, it is extremely fast at running away.\"\n    }\n  ],\n  \"114\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Hidden beneath a tangle of vines that grows nonstop even if the vines are torn off, this Pokémon's true appearance remains a mystery.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The whole body is swathed with wide vines that are similar to seaweed. Its vines shake as it walks.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The whole body is swathed with wide vines that are similar to seaweed. Its vines shake as it walks.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its identity is obscured by masses of thick, blue vines. The vines are said to never stop growing.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its identity is obscured by countless blue vines that are similar to seaweed. Will become entangled with anything.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The vines that cloak its entire body are always jiggling. They effectively unnerve its foes.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It tangles any moving thing with its vines. Their subtle shaking is ticklish if you get ensnared.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"During battle, it constantly moves the vines that cover its body in order to annoy its opponent.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The vines that cloak its entire body are always jiggling. They effectively unnerve its foes.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Tangela's vines snap off easily if they are grabbed. This happens without pain, allowing it to make a quick getaway. The lost vines are replaced by newly grown vines the very next day.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Tangela's vines snap off easily if they are grabbed. This happens without pain, allowing it to make a quick getaway. The lost vines are replaced by newly grown vines the very next day.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its vines snap off easily and painlessly if they are grabbed, allowing it to make a quick getaway. The lost vines are replaced by new growth the very next day.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Blue plant vines cloak the Pokémon's identity in a tangled mass. It entangles anything that gets close.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The whole body is swathed with wide vines that are similar to seaweed. The vines sway as it walks.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is shrouded by blue vines. No one has seen the face hidden behind this growth of vines.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is shrouded by blue vines. No one has seen the face hidden behind this growth of vines.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The blue vines shrouding its body are covered in a growth of fine hair. It is known to be ticklish.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The vines that cloak its entire body are always jiggling. They effectively unnerve its foes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It tangles any moving thing with its vines. Their subtle shaking is ticklish if you get ensnared.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The blue vines shrouding its body are covered in a growth of fine hair. It is known to be ticklish.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The blue vines shrouding its body are covered in a growth of fine hair. It is known to be ticklish.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Many writhing vines cover it, so its true identity remains unknown. The blue vines grow its whole life long.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Many writhing vines cover it, so its true identity remains unknown. The blue vines grow its whole life long.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Many writhing vines cover it, so its true identity remains unknown. The blue vines grow its whole life long.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It tangles any moving thing with its vines. Their subtle shaking is ticklish if you get ensnared.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Tangela's vines snap off easily if they are grabbed. This happens without pain, allowing it to make a quick getaway. The lost vines are replaced by newly grown vines the very next day.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Tangela's vines snap off easily if they are grabbed. This happens without pain, allowing it to make a quick getaway. The lost vines are replaced by newly grown vines the very next day.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its identity is obscured by masses of thick blue vines. The vines are said to never stop growing.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its identity is obscured by masses of thick blue vines. The vines are said to never stop growing.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Hidden beneath a tangle of vines that grows nonstop even if the vines are torn off, this Pokémon's true appearance remains a mystery.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The vines of a Tangela have a distinct scent. In some parts of Galar, Tangela vines are used as herbs.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is shrouded by blue vines. No one has seen the face hidden behind this growth of vines.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is shrouded by blue vines. No one has seen the face hidden behind this growth of vines.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It is cloaked entirely in blue vines, preventing any glimpse of its true identity. The vines impart a refreshing sensation when chewed—they're useful as a spice.\"\n    }\n  ],\n  \"115\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"The infant rarely ventures out of its mother's protective pouch until it is 3 years old.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"The infant rarely ventures out of its mother's protective pouch until it is 3 years old.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Raises its young in its belly pouch. Won't run from any fight to keep its young protected.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"The female raises its young in its belly pouch for around three years. The young is taken out once it learns to find food.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If it is safe, the young gets out of the belly pouch to play. The adult keeps a close eye on the youngster.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"To protect its young, it will never give up during battle, no matter how badly wounded it is.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"To avoid crushing the baby it carries in its pouch, it always sleeps standing up.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If it is safe, the young gets out of the belly pouch to play. The adult keeps a close eye on the youngster.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"If you come across a young Kangaskhan playing by itself, you must never disturb it or attempt to catch it. The baby Pokémon's parent is sure to be in the area, and it will become violently enraged at you.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If you come across a young Kangaskhan playing by itself, you must never disturb it or attempt to catch it. The baby Pokémon's parent is sure to be in the area, and it will become violently enraged at you.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"If you come across a young Kangaskhan playing by itself, never try to catch it. The baby's parent is sure to be in the area, and it will become violently enraged.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The female raises its offspring in a pouch on its belly. It is skilled at attacking using Comet Punch.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The infant rarely ventures out of its mother's protective pouch until it is three years old.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets the baby out to play only when it feels safe.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets the baby out to play only when it feels safe.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets the baby out to play only when it feels safe.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it is safe, the young gets out of the belly pouch to play. The adult keeps a close eye on the youngster.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"To protect its young, it will never give up during battle, no matter how badly wounded it is.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets the baby out to play only when it feels safe.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets the baby out to play only when it feels safe.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets the baby out to play only when it feels safe.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets the baby out to play only when it feels safe.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets the baby out to play only when it feels safe.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it is safe, the young gets out of the belly pouch to play. The adult keeps a close eye on the youngster.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"If you come across a young Kangaskhan playing by itself, you must never disturb it or attempt to catch it. The baby Pokémon's parent is sure to be in the area, and it will become violently enraged at you.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If you come across a young Kangaskhan playing by itself, you must never disturb it or attempt to catch it. The baby Pokémon's parent is sure to be in the area, and it will become violently enraged at you.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Kangaskhan's maternal love is so deep that it will brave death to protect its offspring.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The child in its pouch leaves home after roughly three years. That is the only time the mother is heard to cry wildly.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Kangaskhan protects its child by keeping it in its pouch. It has zero forgiveness for those who harm its child and will beat them down.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"You shouldn't get close to the child when it's playing outside its mother's pouch. Its mother is always nearby watching over it.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Raises its young in its belly pouch. Won't run from any fight to keep its young protected.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Raises its young in its belly pouch. Won't run from any fight to keep its young protected.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Although it's carrying its baby in a pouch on its belly, Kangaskhan is swift on its feet. It intimidates its opponents with quick jabs.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"There are records of a lost human child being raised by a childless Kangaskhan.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets its baby out to play only when it feels safe to do so.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets its baby out to play only when it feels safe to do so.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It raises its offspring in its belly pouch. It lets its baby out to play only when it feels safe to do so.\"\n    }\n  ],\n  \"116\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Known to shoot down flying bugs with precision blasts of ink from the surface of the water.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Known to shoot down flying bugs with precision blasts of ink from the surface of the water.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"If it senses any danger, it will vigorously spray water or a special type of ink from its mouth.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Uses its tail to keep its balance while spraying ink from its mouth. The ink appears to be for shooting down bugs.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If attacked by a larger enemy, it quickly swims to safety by adeptly controlling its dorsal fin.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its big, developed fins move rapidly, allowing it to swim backward while still facing forward.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When they're in a safe location, they can be seen playfully tangling their tails together.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If attacked by a larger enemy, it quickly swims to safety by adeptly controlling its dorsal fin.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Horsea eats small insects and moss off of rocks. If the ocean current turns fast, this Pokémon anchors itself by wrapping its tail around rocks or coral to prevent being washed away.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If Horsea senses danger, it will reflexively spray a dense black ink from its mouth and try to escape. This Pokémon swims by cleverly flapping the fins on its back.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"By cleverly flicking the fins on its back side to side, it moves in any direction while facing forward. It spits ink to escape if it senses danger.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It maintains balance using its tail, which is wound up like a coil. It may spray ink from its mouth.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Known to shoot down flying bugs with precision blasts of ink from the surface of the water.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits murky ink and flees.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits murky ink and flees.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits murky ink and flees.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If attacked by a larger enemy, it quickly swims to safety by adeptly controlling its well-developed dorsal fin.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its big, developed fins move rapidly, allowing it to swim backward while still facing forward.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits murky ink and flees.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits murky ink and flees.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits murky ink and flees.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits murky ink and flees.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Known to shoot down flying bugs with precision blasts of ink from the surface of the water.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits murky ink and flees.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Horsea eats small insects and moss off of rocks. If the ocean current turns fast, this Pokémon anchors itself by wrapping its tail around rocks or coral to prevent being washed away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If Horsea senses danger, it will reflexively spray a dense black ink from its mouth and try to escape. This Pokémon swims by cleverly flapping the fin on its back.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"If it senses any danger, it will vigorously spray water or a special type of ink from its mouth.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"If it senses any danger, it will vigorously spray water or a special type of ink from its mouth.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Horsea makes its home in oceans with gentle currents. If this Pokémon is under attack, it spits out pitch-black ink and escapes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They swim with dance-like motions and cause whirlpools to form. Horsea compete to see which of them can generate the biggest whirlpool.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits black ink and flees.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It makes its nest in the shade of corals. If it senses danger, it spits black ink and flees.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If attacked—even by a large enemy—Horsea effortlessly swims to safety by utilizing its well-developed dorsal fin.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It maintains balance using its tail, which is wound up like a coil. It may spray ink from its mouth.\"\n    }\n  ],\n  \"117\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Capable of swimming backwards by rapidly flapping its wing-like pectoral fins and stout tail.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Capable of swimming backwards by rapidly flapping its wing-like pectoral fins and stout tail.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Touching the back fin causes numbness. It hooks its tail to coral to stay in place while sleeping.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A clever Pokémon that can swim backwards while facing forward. Fainting may result from a jab of its sharp spikes.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"An examination of its cells revealed the presence of a gene not found in Horsea. It became a hot topic.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its fin-tips leak poison. Its fins and bones are highly valued as ingredients in herbal medicine.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The male raises the young. If it is approached, it uses its toxic spikes to fend off the intruder.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"An examination of its cells revealed the presence of a gene not found in Horsea. It became a hot topic.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Seadra sleeps after wriggling itself between the branches of coral. Those trying to harvest coral are occasionally stung by this Pokémon's poison barbs if they fail to notice it.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Seadra generates whirlpools by spinning its body. The whirlpools are strong enough to swallow even fishing boats. This Pokémon weakens prey with these currents, then swallows it whole.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The poisonous barbs all over its body are highly valued as ingredients for making traditional herbal medicine. It shows no mercy to anything approaching its nest.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its body bristles with sharp spikes. Carelessly trying to touch it could cause fainting from the spikes.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is capable of swimming backwards by rapidly flapping its winglike pectoral fins and stout tail.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its spines provide protection. Its fins and bones are prized as traditional medicine ingredients.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its spines provide protection. Its fins and bones are prized as traditional medicine ingredients.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its spines provide protection. Its fins and bones are prized as traditional medicine ingredients.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"An examination of its cells revealed the presence of a gene not found in Horsea. It became a hot topic.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its fin-tips leak poison. Its fins and bones are highly valued as ingredients in herbal medicine.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its spines provide protection. Its fins and bones are prized as traditional medicine ingredients.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its spines provide protection. Its fins and bones are prized as traditional medicine ingredients.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its spines provide protection. Its fins and bones are prized as traditional-medicine ingredients.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its spines provide protection. Its fins and bones are prized as traditional-medicine ingredients.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its body bristles with sharp spikes. Carelessly trying to touch it could cause fainting from the spikes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is capable of swimming backwards by rapidly flapping its winglike pectoral fins and stout tail.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Seadra sleeps after wriggling itself between the branches of coral. Those trying to harvest coral are occasionally stung by this Pokémon's poison barbs if they fail to notice it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Seadra generates whirlpools by spinning its body. The whirlpools are strong enough to swallow even fishing boats. This Pokémon weakens prey with these currents, then swallows it whole.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Touching the back fin causes numbness. It hooks its tail to coral to stay in place while sleeping.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Touching the back fin causes numbness. It hooks its tail to coral to stay in place while sleeping.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's the males that raise the offspring. While Seadra are raising young, the spines on their backs secrete thicker and stronger poison.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Seadra's mouth is slender, but its suction power is strong. In an instant, Seadra can suck in food that's larger than the opening of its mouth.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its spines provide protection. Its fins and bones are prized as traditional medicine ingredients.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its spines provide protection. Its fins and bones are prized as traditional medicine ingredients.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The male raises the young. If it is approached while caring for young, it will use its toxic spines to fend off the intruder.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its fin tips leak poison. Its fins and bones are highly valued as ingredients in herbal medicine.\"\n    }\n  ],\n  \"118\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its tail fin billows like an elegant ballroom dress, giving it the nickname of the Water Queen.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its tail fin billows like an elegant ballroom dress, giving it the nickname of the Water Queen.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"When it is time for them to lay eggs, they can be seen swimming up rivers and falls in large groups.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its beautiful tail fin billows and flutters like an elegant dress. Swims at a speed of five knots.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its dorsal, pectoral and tail fins wave elegantly in water. That is why it is known as the water dancer.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A strong swimmer, it is capable of swimming nonstop up fast streams at a steady speed of five knots.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"During spawning season, they swim gracefully in the water, searching for their perfect mate.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its dorsal, pectoral and tail fins wave elegantly in water. That is why it is known as the water dancer.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Goldeen is a very beautiful Pokémon with fins that billow elegantly in water. However, don't let your guard down around this Pokémon - it could ram you powerfully with its horn.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Goldeen loves swimming wild and free in rivers and ponds. If one of these Pokémon is placed in an aquarium, it will shatter even the thickest glass with one ram of its horn and make its escape.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"In the springtime, schools of Goldeen can be seen swimming up falls and rivers. It metes out staggering damage with its single horn.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its dorsal and pectoral fins are strongly developed like muscles. It can swim at a speed of five knots.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its tail fin billows like an elegant ballroom dress, giving it the nickname of \\\"The Water Queen.\\\"\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It swims elegantly by flittering its tail fin as if it were a dress. It has the look of a queen.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It swims at a steady 5 knots. If it senses danger, it will strike back with its sharp horn.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Though it appears very elegant when swimming with fins unfurled, it can jab powerfully with its horn.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its dorsal, pectoral and tail fins wave elegantly in water. That is why it is known as the water dancer.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A strong swimmer, it is capable of swimming nonstop up fast streams at a steady speed of five knots per hour.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Though it appears very elegant when swimming with fins unfurled, it can jab powerfully with its horn.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Though it appears very elegant when swimming with fins unfurled, it can jab powerfully with its horn.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Though it appears very elegant when swimming with fins unfurled, it can jab powerfully with its horn.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Though it appears very elegant when swimming with fins unfurled, it can jab powerfully with its horn.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It swims at a steady 5 knots. If it senses danger, it will strike back with its sharp horn.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its dorsal, pectoral, and tail fins wave elegantly in water. That is why it is known as the water dancer.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Goldeen is a very beautiful Pokémon with fins that billow elegantly in water. However, don't let your guard down around this Pokémon—it could ram you powerfully with its horn.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Goldeen loves swimming wild and free in rivers and ponds. If one of these Pokémon is placed in an aquarium, it will shatter even the thickest glass with one ram of its horn and make its escape.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When the weather grows warm, they form groups and swim upriver. This sight serves as a poetic reminder that spring has arrived.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Spellbound by the length of its horn and the beauty of its fins, many strange Trainers raise Goldeen and nothing but Goldeen.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although known for their splendid tail fins, Goldeen apparently compete among themselves to see whose horn is thickest and sharpest.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The way it swims along fluttering its dress-like fins has earned it the name \\\"princess of the water.\\\"\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When it is time for them to lay eggs, they can be seen swimming up rivers and falls in large groups.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When it is time for them to lay eggs, they can be seen swimming up rivers and falls in large groups.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its dorsal, pectoral, and tail fins wave elegantly in water. That is why it is known as the Water Dancer.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its dorsal and pectoral fins are strongly developed like muscles. It can swim at a speed of five knots.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It swims elegantly by flittering its tail fin as if it were a dress. It has the look of a queen.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It swims at a steady five knots. If it senses danger, it will strike back with its sharp horn.\"\n    }\n  ],\n  \"119\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"In the autumn spawning season, they can be seen swimming powerfully up rivers and creeks.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"In the autumn spawning season, they can be seen swimming powerfully up rivers and creeks.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It is the male's job to make a nest by carving out boulders in a stream using the horn on its head.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"In the autumn, they travel up rivers to spawn. In other seasons, they make and live in their own nests.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"During spawning season, Seaking gather from all over, coloring the rivers a brilliant red.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Using its horn, it bores holes in riverbed boulders, making nests to prevent its eggs from washing away.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When autumn comes, the males patrol the area around their nests in order to protect their offspring.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"During spawning season, Seaking gather from all over, coloring the rivers a brilliant red.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"In the autumn, Seaking males can be seen performing courtship dances in riverbeds to woo females. During this season, this Pokémon's body coloration is at its most beautiful.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Seaking is very protective of its eggs. The male and female will take turns patrolling around their nest and eggs. The guarding of eggs by these Pokémon goes on for over a month.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It punches holes in boulders on stream-beds. This is a clever innovation that prevents its eggs from being attacked or washed away by the current.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The horn on its head is sharp like a drill. It bores a hole in a boulder to make its nest.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"In the autumn spawning season, they can be seen swimming powerfully up rivers and creeks.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It makes its nest by hollowing out boulders in streams with its horn. It defends its eggs with its life.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"To protect its family, it will fight with its drill-sharp horn. It lives in hollowed rocks in streams.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"In autumn, its body becomes more fatty in preparing to propose to a mate. It takes on beautiful colors.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"During spawning season, Seaking gather from all over, causing rivers to appear a brilliant red.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Using its horn, it bores holes in riverbed boulders, making nests to prevent its eggs from washing away.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"In autumn, its body becomes more fatty in preparing to propose to a mate. It takes on beautiful colors.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"In autumn, its body becomes more fatty in preparing to propose to a mate. It takes on beautiful colors.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"In autumn, its body becomes more fatty in preparing to propose to a mate. It takes on beautiful colors.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"In autumn, its body becomes more fatty in preparing to propose to a mate. It takes on beautiful colors.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In the autumn spawning season, they can be seen swimming powerfully up rivers and creeks.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It makes its nest by hollowing out boulders in streams with its horn. It defends its eggs with its life.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In the autumn, Seaking males can be seen performing courtship dances in riverbeds to woo females. During this season, this Pokémon's body coloration is at its most beautiful.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Seaking is very protective of its eggs. The male and female will take turns patrolling around their nest and eggs. The guarding of eggs by these Pokémon goes on for over a month.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When the weather grows cold, its whole body flushes a deep red. This sight serves as a poetic reminder that autumn has arrived.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Trainers who are crazy for Seaking are divided into horn enthusiasts and fin enthusiasts. The two groups do not get along well.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its horn spins like a drill to steadily hollow out rocks—even harder ones. The coloration of the male is more vivid.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"To attract females, males dance on the river's floor. The females gather around the male that dances most gracefully.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It is the male's job to make a nest by carving out boulders in a stream using the horn on its head.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It is the male's job to make a nest by carving out boulders in a stream using the horn on its head.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In autumn, its body becomes more fatty in preparing to propose to a mate. It takes on beautiful colors.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Using its horn, it bores holes in riverbed boulders, making nests to prevent its eggs from washing away.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It makes its nest by hollowing out boulders in streams with its horn. The Pokémon defends its eggs with its life.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"To protect its family, it will fight with its drill-sharp horn. It lives in hollowed rocks in streams.\"\n    }\n  ],\n  \"120\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"An enigmatic Pokémon that can effortlessly regenerate any appendage it loses in battle.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"An enigmatic Pokémon that can effortlessly regenerate any appendage it loses in battle.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"As long as the center section is unharmed, it can grow back fully even if it is chopped to bits.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It is capable of growing back any portion of its body that is cut off. At night, the center core glows with a red light.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"At night, the center of its body slowly flickers with the same rhythm as a human heartbeat.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Even if its body is torn, it can regenerate as long as the glowing central core remains intact.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When the stars twinkle at night, it floats up from the sea floor, and its body's center core flickers.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"At night, the center of its body slowly flickers with the same rhythm as a human heartbeat.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Staryu's center section has an organ called the core that shines bright red. If you go to a beach toward the end of summer, the glowing cores of these Pokémon look like the stars in the sky.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Staryu apparently communicates with the stars in the night sky by flashing the red core at the center of its body. If parts of its body are torn, this Pokémon simply regenerates the missing pieces and limbs.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It gathers with others in the night and makes its red core glow on and off with the twinkling stars. It can regenerate limbs if they are severed from its body.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It appears in large numbers by seashores. At night, its central core flashes with a red light.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"An enigmatic Pokémon that can effortlessly regenerate any appendage it loses in battle.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"If its body is torn, it can grow back if the red core remains. The core flashes at midnight.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"If its body is torn, it can grow back if the red core remains. The core flashes at midnight.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If its body is torn, it can grow back if the red core remains. The core flashes at midnight.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"At night, the middle of its body slowly flickers with the same rhythm as a human heartbeat.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Even if its body is torn, it can regenerate as long as the glowing central core remains intact.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If its body is torn, it can grow back if the red core remains. The core flashes at midnight.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If its body is torn, it can grow back if the red core remains. The core flashes at midnight.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"As long as its red core remains, it can regenerate its body instantly, even if it's torn apart.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"As long as its red core remains, it can regenerate its body instantly, even if it's torn apart.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Even if its body is torn, it can regenerate as long as the glowing central core remains intact.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It appears in large numbers by seashores. At night, its central core flashes with a red light.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Staryu's center section has an organ called the core that shines bright red. If you go to a beach toward the end of summer, the glowing cores of these Pokémon look like the stars in the sky.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Staryu apparently communicates with the stars in the night sky by flashing the red core at the center of its body. If parts of its body are torn, this Pokémon simply regenerates the missing pieces and limbs.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Large numbers of these Pokémon make their home at the seaside. At night, a strange red glow radiates from the center of their bodies.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon gets nibbled on by Lumineon and others. Thanks to its red core, it regenerates fast, so it's unconcerned by their snack attacks.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"In many places, there are folktales of stardust falling into the ocean and becoming Staryu.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"No number of injuries can bother Staryu. Its amazing regenerative powers return it to its previous state in half a day!\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"As long as the center section is unharmed, this Pokémon can grow back fully even if it is chopped to bits.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"As long as the center section is unharmed, this Pokémon can grow back fully even if it is chopped to bits.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If you visit a beach at the end of summer, you'll be able to see groups of Staryu lighting up in a steady rhythm.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Fish Pokémon nibble at it, but Staryu isn't bothered. Its body regenerates quickly, even if part of it is completely torn off.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"If Staryu's body is damaged, it will regenerate as long as the red core remains. The core flashes at midnight.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"If Staryu's body is damaged, it will regenerate as long as the red core remains. The core flashes at midnight.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Even if its body is torn, it can regenerate as long as the glowing central core remains intact.\"\n    }\n  ],\n  \"121\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its central core glows with the seven colors of the rainbow. Some people value the core as a gem.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its central core glows with the seven colors of the rainbow. Some people value the core as a gem.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The center section is named the core. People think it is communicating when it glows in 7 colors.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"When away from human eyes, its core is said to glow mysteriously in seven colors. This Pokémon may have come from outer space.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The center section of its body is called the core. It glows in a different color each time it is seen.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Regardless of the environment it lives in, its body grows to form a symmetrical geometric shape.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is said that it uses the seven-colored core of its body to send electric waves into outer space.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The center section of its body is called the core. It glows in a different color each time it is seen.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Starmie's center section - the core - glows brightly in seven colors. Because of its luminous nature, this Pokémon has been given the nickname \\\"the gem of the sea.\\\"\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Starmie swims through water by spinning its star-shaped body as if it were a propeller on a ship. The core at the center of this Pokémon's body glows in seven colors.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"People in ancient times imagined that Starmie were transformed from the reflections of stars that twinkled on gentle waves at night.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Pokémon has a geometric body. Because of its body, the locals suspect that it is an alien creature.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its central core glows with the seven colors of the rainbow. Some people value the core as a gem.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"At the center of its body is a red core, which sends mysterious radio signals into the night sky.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"At the center of its body is a red core, which sends mysterious radio signals into the night sky.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"At the center of its body is a red core, which sends mysterious radio signals into the night sky.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The middle section of its body is called the core. It glows in a different color each time it is seen.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Regardless of the environment it lives in, its body grows to form a symmetrical geometric shape.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"At the center of its body is a red core, which sends mysterious radio signals into the night sky.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"At the center of its body is a red core, which sends mysterious radio signals into the night sky.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its core shines in many colors and sends radio signals into space to communicate with something.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its core shines in many colors and sends radio signals into space to communicate with something.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its central core glows with the seven colors of the rainbow. Some people value the core as a gem.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"At the center of its body is a red core, which sends mysterious radio signals into the night sky.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Starmie's center section—the core—glows brightly in seven colors. Because of its luminous nature, this Pokémon has been given the nickname \\\"the gem of the sea.\\\"\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Starmie swims through water by spinning its star-shaped body as if it were a propeller on a ship. The core at the center of this Pokémon's body glows in seven colors.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its shining core is thought to receive and transmit enigmatic signals. It has been known to cause headaches in those who approach it.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its unusual body shape, reminiscent of abstract art, led local people to spread rumors that this Pokémon may be an invader from outer space.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its sparkling core is called \\\"the gem of the sea.\\\" This core can be made into high-priced accessories that are traded in secret.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It rotates its geometrically shaped body to swim through the water. It always seems to be sending out mysterious radio waves.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The center section is named the core. People think it is communicating when it glows in seven colors.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The center section is named the core. People think it is communicating when it glows in seven colors.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon has an organ known as its core. The organ glows in seven colors when Starmie is unleashing its potent psychic powers.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Starmie swims by spinning its body at high speed. As this Pokémon cruises through the ocean, it absorbs tiny plankton.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"At the center of its body is a red core that sends mysterious radio signals into the night sky.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"At the center of its body is a red core that sends mysterious radio signals into the night sky.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"At the center of its body is a red core that sends mysterious radio signals into the night sky.\"\n    }\n  ],\n  \"122\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Always practicing its pantomime act. It makes enemies believe something exists that really doesn't.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"If interrupted while it is miming, it will slap around the offender with its broad hands.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"If interrupted while it is miming, it will slap around the offender with its broad hands.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Always practices its pantomime act. It makes enemies believe something exists that really doesn't.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"It is an expert at miming and loves to perform. It is said to slap around anyone who disturbs it with its broad hands.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"A skilled mime from birth, it gains the ability to create invisible objects as it matures.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its fingertips emit a peculiar force field that hardens air to create an actual wall.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It uses the mysterious power it has in its fingers to solidify air into an invisible wall.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"A skilled mime from birth, it gains the ability to create invisible objects as it matures.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Mr. Mime is a master of pantomime. Its gestures and motions convince watchers that something unseeable actually exists. Once it is believed, it will exist as if it were a real thing.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Mr. Mime is a master of pantomime. Its gestures and motions convince watchers that something unseeable actually exists. Once it is believed, it will exist as if it were a real thing.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Mr. Mime is a master of pantomime. It can convince others that something unseeable actually exists. Once believed, the imaginary object does become real.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is adept at conning people. It is said to be able to create walls out of thin air by miming.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If interrupted while it is miming, it will suddenly DoubleSlap the offender with its broad hands.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is a pantomime expert that can create invisible but solid walls using miming gestures.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Emanations from its fingertips solidify the air into invisible walls that repel even harsh attacks.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It shapes an invisible wall in midair by minutely vibrating its fingertips to stop molecules in the air.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A skilled mime from birth, it gains the ability to create invisible objects as it matures.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its fingertips emit a peculiar force field that hardens air to create an actual wall.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It shapes an invisible wall in midair by minutely vibrating its fingertips to stop molecules in the air.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It shapes an invisible wall in midair by minutely vibrating its fingertips to stop molecules in the air.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It shapes an invisible wall in midair by minutely vibrating its fingertips to stop molecules in the air.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It shapes an invisible wall in midair by minutely vibrating its fingertips to stop molecules in the air.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Emanations from its fingertips solidify the air into invisible walls that repel even harsh attacks.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is adept at conning people. It is said to be able to create walls out of thin air by miming.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Mr. Mime is a master of pantomime. Its gestures and motions convince watchers that something unseeable actually exists. Once the watchers are convinced, the unseeable thing exists as if it were real.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Mr. Mime is a master of pantomime. Its gestures and motions convince watchers that something unseeable actually exists. Once the watchers are convinced, the unseeable thing exists as if it were real.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its pantomime skills are wonderful. You may become enraptured while watching it, but next thing you know, Mr. Mime has made a real wall.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It creates invisible walls with its pantomiming. If you don't act impressed, it will attack you with a double slap!\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Always practicing its pantomime act. It makes enemies believe something exists that really doesn't.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Always practicing its pantomime act. It makes enemies believe something exists that really doesn't.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The broadness of its hands may be no coincidence—many scientists believe its palms became enlarged specifically for pantomiming.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's known for its top-notch pantomime skills. It protects itself from all sorts of attacks by emitting auras from its fingers to create walls.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a pantomime expert that can create invisible but solid walls using miming gestures.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Emanations from its fingertips solidify the air into invisible walls that repel even harsh attacks.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The behavior of this clown-like Pokémon reminds one of pantomime. It creates invisible walls using a force emitted from its fingertips.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses the mysterious power that emanates from its fingers to solidify the air around it into invisible walls.\"\n    }\n  ],\n  \"123\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The sharp scythes on its forearms become increasingly sharp by cutting through hard objects.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"With ninja-like agility and speed, it can create the illusion that there is more than one.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"With ninja-like agility and speed, it can create the illusion that there is more than one.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Leaps out of tall grass and slices prey with its scythes. The movement looks like that of a ninja.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Moves incredibly quickly and shreds its enemy with its razor-sharp scythes. On rare occasions, it flies with its wings.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It slashes through grass with its sharp scythes, moving too fast for the human eye to track.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"When it moves, it leaves only a blur. If it hides in grass, its protective colors make it invisible.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It's very proud of its speed. It moves so fast that its opponent does not even know what knocked it down.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It slashes through grass with its sharp scythes, moving too fast for the human eye to track.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Scyther is blindingly fast. Its blazing speed enhances the effectiveness of the twin scythes on its forearms. This Pokémon's scythes are so effective, they can slice through thick logs in one wicked stroke.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Scyther is blindingly fast. Its blazing speed enhances the effectiveness of the twin scythes on its forearms. This Pokémon's scythes are so effective, they can slice through thick logs in one wicked stroke.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its blindingly fast speed adds to the sharpness of its twin forearm scythes. The scythes can slice through thick logs in one wicked stroke.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It tears and shreds prey with its wickedly sharp scythes. It very rarely spreads its wings to fly.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"With ninja-like agility and speed, it can create the illusion that there is more than one of itself.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is nearly impossible to parry its attacking scythes. Its movements are like a ninja's.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is nearly impossible to parry its attacking scythes. Its movements are like a ninja's.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The sharp scythes on its forearms become increasingly sharp by cutting through hard objects.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It slashes through grass with its sharp scythes, moving too fast for the human eye to track.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it moves, it leaves only a blur. If it hides in grass, its protective coloration makes it invisible.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The sharp scythes on its forearms become increasingly sharp by cutting through hard objects.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The sharp scythes on its forearms become increasingly sharp by cutting through hard objects.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The sharp scythes on its forearms become increasingly sharp by cutting through hard objects.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The sharp scythes on its forearms become increasingly sharp by cutting through hard objects.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It tears and shreds prey with its wickedly sharp scythes. It very rarely spreads its wings to fly.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It slashes through grass with its sharp scythes, moving too fast for the human eye to track.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Scyther is blindingly fast. Its blazing speed enhances the effectiveness of the twin scythes on its forearms. This Pokémon's scythes are so effective, they can slice through thick logs in one wicked stroke.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Scyther is blindingly fast. Its blazing speed enhances the effectiveness of the twin scythes on its forearms. This Pokémon's scythes are so effective, they can slice through thick logs in one wicked stroke.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It confuses its prey with its quick, ninja-like movements. Then, in an instant, it cleaves them with its scythes.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"While young, they live together deep in the mountains, training themselves in how to fight with their scythes and move at high speeds.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its two sharp scythes are more than just weapons. It uses them with dexterity to dress its prey before eating.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Some call it a ninja. Its movements— imperceptibly quick—are sufficient to cleave the air in two. It's very popular in Alola.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Leaps out of tall grass and slices prey with its scythes. The movement looks like that of a ninja.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Leaps out of tall grass and slices prey with its scythes. The movement looks like that of a ninja.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As Scyther fights more and more battles, its scythes become sharper and sharper. With a single slice, Scyther can fell a massive tree.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If you come across an area in a forest where a lot of the trees have been cut down, what you've found is a Scyther's territory.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is nearly impossible to parry its attacking scythes. Its movements are like a ninja's.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is nearly impossible to parry its attacking scythes. Its movements are like a ninja's.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The large, wickedly sharp scythes on its forearms are truly fearsome weapons. Prey's attempts to flee are unfailingly thwarted by this Pokémon's nimble motions.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It slashes through grass with its sharp scythes, moving too fast for the human eye to track.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The sharp scythes on its forearms become increasingly sharp by cutting through hard objects.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It tears and shreds prey with its wickedly sharp scythes. It very rarely spreads its wings to fly.\"\n    }\n  ],\n  \"124\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"It seductively wiggles its hips as it walks. It can cause people to dance in unison with it.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"It seductively wiggles its hips as it walks. It can cause people to dance in unison with it.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Appears to move to a rhythm of its own, as if it were dancing. It wiggles its hips as it walks.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Talks in a strange, incomprehensible language. It is known for its weird wiggling that causes people to dance.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It rocks its body rhythmically. It appears to alter the rhythm depending on how it is feeling.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It speaks a language similar to that of humans. However, it seems to use dancing to communicate.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It has several different cry patterns, each of which seems to have its own meaning.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It rocks its body rhythmically. It appears to alter the rhythm depending on how it is feeling.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Jynx walks rhythmically, swaying and shaking its hips as if it were dancing. Its motions are so bouncingly alluring, people seeing it are compelled to shake their hips without giving any thought to what they are doing.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Jynx walks rhythmically, swaying and shaking its hips as if it were dancing. Its motions are so bouncingly alluring, people seeing it are compelled to shake their hips without giving any thought to what they are doing.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Jynx sashays rhythmically as if it were dancing. Its motions are so bouncingly alluring, people seeing it are compelled to shake their hips without noticing.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It speaks using a language that sounds human. Research is under way to determine what is being said.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It seductively wiggles its hips as it walks. It can cause people to dance in unison with it.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its cries sound like human speech. However, it is impossible to tell what it is trying to say.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its cries sound like human speech. However, it is impossible to tell what it is trying to say.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its cries sound like human speech. However, it is impossible to tell what it is trying to say.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It rocks its body rhythmically. It appears to alter the rhythm depending on how it is feeling.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It speaks a language similar to that of humans. However, it seems to use dancing to communicate.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its cries sound like human speech. However, it is impossible to tell what it is trying to say.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its cries sound like human speech. However, it is impossible to tell what it is trying to say.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its cries sound like human speech. However, it is impossible to tell what it is trying to say.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its cries sound like human speech. However, it is impossible to tell what it is trying to say.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It wiggles its hips as it walks. It can cause people to dance in unison with it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It speaks using a language that sounds human. Research is under way to determine what is being said.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Jynx walks rhythmically, swaying and shaking its hips as if it were dancing. Its motions are so bouncingly alluring, people seeing it are compelled to shake their hips without giving any thought to what they are doing.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Jynx walks rhythmically, swaying and shaking its hips as if it were dancing. Its motions are so bouncingly alluring, people seeing it are compelled to shake their hips without giving any thought to what they are doing.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It sways its hips to a rhythm all its own. The precise movements of Jynx living in Alola are truly wonderful.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its strange cries sound like human language. There are some musicians who compose songs for Jynx to sing.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Appears to move to a rhythm of its own, as if it were dancing. It wiggles its hips as it walks.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Appears to move to a rhythm of its own, as if it were dancing. It wiggles its hips as it walks.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In certain parts of Galar, Jynx was once feared and worshiped as the Queen of Ice.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The Jynx of Galar often have beautiful and delicate voices. Some of these Pokémon have even gathered a fan base.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its cries sound like human speech. However, it is impossible to tell what it is trying to say.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its cries sound like human speech. However, it is impossible to tell what it is trying to say.\"\n    }\n  ],\n  \"125\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its body constantly discharges electricity. Getting close to it will make your hair stand on end.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Normally found near power plants, they can wander away and cause major blackouts in cities.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Normally found near power plants, they can wander away and cause major blackouts in cities.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"If a major power outage occurs, it is certain that this Pokémon has eaten electricity at a power plant.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Appear in power plants in search of electricity. They are said to cause major blackouts if they disappear.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Electricity runs across the surface of its body. In darkness, its entire body glows a whitish-blue.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its body constantly discharges electricity. Getting close to it will make your hair stand on end.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When two Electabuzz touch, they control the electric currents to communicate their feelings.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Electricity runs across the surface of its body. In darkness, its entire body glows a whitish-blue.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"When a storm arrives, gangs of this Pokémon compete with each other to scale heights that are likely to be stricken by lightning bolts. Some towns use Electabuzz in place of lightning rods.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When a storm arrives, gangs of this Pokémon compete with each other to scale heights that are likely to be stricken by lightning bolts. Some towns use Electabuzz in place of lightning rods.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When a storm approaches, it competes with others to scale heights that are likely to be stricken by lightning. Some towns use Electabuzz in place of lightning rods.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It loves to feed on strong electricity. It occasionally appears around large power plants and so on.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Normally found near power plants, they can wander away and cause major blackouts in cities.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Half of all blackouts occur when this Pokémon appears at power plants and eats electricity.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Half of all blackouts occur when this Pokémon appears at power plants and eats electricity.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It windmills its arms to slightly boost its punches. Foes have been known to escape in the meantime.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Electricity runs across the surface of its body. In darkness, its entire body glows a whitish-blue.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its body constantly discharges electricity. Getting close to it will make your hair stand on end.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It windmills its arms to slightly boost its punches. Foes have been known to escape in the meantime.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It windmills its arms to slightly boost its punches. Foes have been known to escape in the meantime.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Research is progressing on storing lightning in Electabuzz so this energy can be used at any time.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Research is progressing on storing lightning in Electabuzz so this energy can be used at any time.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Electricity runs across the surface of its body. In darkness, its entire body glows a whitish blue.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It loves to feed on strong electricity. It occasionally appears around large power plants and so on.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When a storm arrives, gangs of this Pokémon compete with each other to scale heights that are likely to be stricken by lightning bolts. Some towns use Electabuzz in place of lightning rods.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When a storm arrives, gangs of this Pokémon compete with each other to scale heights that are likely to be stricken by lightning bolts. Some towns use Electabuzz in place of lightning rods.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Half of all sudden blackouts are caused by Electabuzz gathering at electric power plants and gobbling up electricity.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Electricity leaks from it in amounts far greater than the amount of electricity it eats.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Electricity permeates its body. It swings its arms round and round to charge up electricity before unleashing a punch.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"While it's often blamed for power outages, the truth is the cause of outages is more often an error on the part of the electric company.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"If a major power outage occurs, it is certain that this Pokémon has eaten electricity at a power plant.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"If a major power outage occurs, it is certain that this Pokémon has eaten electricity at a power plant.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Many power plants keep Ground-type Pokémon around as a defense against Electabuzz that come seeking electricity.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With the coming of a storm, many of these Pokémon will gather under tall trees and sit there waiting for lightning to strike.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Half of all blackouts occur when this Pokémon appears at power plants and eats electricity.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Half of all blackouts occur when this Pokémon appears at power plants and eats electricity.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Feeds on electrical energy. During sudden showers beneath looming thunderclouds, one can observe Electabuzz scaling tall trees, where the Pokémon will then wait for lightning to strike.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its body constantly discharges electricity. Getting close to it will make your hair stand on end.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Research is progressing on storing lightning in Electabuzz so this energy can be used at any time.\"\n    }\n  ],\n  \"126\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Found near the mouth of a volcano. This fire-breather's body temperature is nearly 2,200 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its body always burns with an orange glow that enables it to hide perfectly among flames.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its body always burns with an orange glow that enables it to hide perfectly among flames.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Born in an active volcano. Its body is always cloaked in flames, so it looks like a big ball of fire.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"With a body temperature of close to 2,200 degrees, its body is always burning with orange flames. Lives near volcanoes.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It dislikes cold places, so it blows scorching flames to make the environment suitable for itself.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The fiery surface of its body gives off a wavering, rippling glare that is similar to the sun.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It moves more frequently in hot areas. It can heal itself by dipping its wound into lava.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It dislikes cold places, so it blows scorching flames to make the environment suitable for itself.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"In battle, Magmar blows out intensely hot flames from all over its body to intimidate its opponent. This Pokémon's fiery bursts create heat waves that ignite grass and trees in its surroundings.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"In battle, Magmar blows out intensely hot flames from all over its body to intimidate its opponent. This Pokémon's fiery bursts create heat waves that ignite grass and trees in its surroundings.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"In battle, it blows out intense flames from all over its body to intimidate its foe. These fiery bursts create heat waves that ignite grass and trees in the area.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Found near the mouth of a volcano. This fire-breather's body temperature is nearly 2,200 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its body always burns with an orange glow that enables it to hide perfectly amidst flames.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Born in the spout of a volcano, its body is covered by flames that shimmer like the sun.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Born in the spout of a volcano, its body is covered by flames that shimmer like the sun.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When it breathes deeply, heat waves form around its body, making it hard to see clearly.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It dislikes cold places, so it blows scorching flames to make the environment suitable for itself.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The fiery surface of its body gives off a wavering, rippling glare that is similar to the sun.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it breathes deeply, heat waves form around its body, making it hard to see clearly.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When it breathes deeply, heat waves form around its body, making it hard to see clearly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The scorching fire exhaled by Magmar forms heat waves around its body, making it hard to see the Pokémon clearly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The scorching fire exhaled by Magmar forms heat waves around its body, making it hard to see the Pokémon clearly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Found near the mouth of a volcano. This fire-breather's body temperature is nearly 2,200 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Born in the spout of a volcano, its body is covered by flames that shimmer like the sun.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In battle, Magmar blows out intensely hot flames from all over its body to intimidate its opponent. This Pokémon's fiery bursts create heat waves that ignite grass and trees in its surroundings.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In battle, Magmar blows out intensely hot flames from all over its body to intimidate its opponent. This Pokémon's fiery bursts create heat waves that ignite grass and trees in its surroundings.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it's tired, it leaps into the mouth of a volcano and soaks its body in magma to ease its weariness. Its body burns at 2,192 degrees F.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When angered, it spouts brilliant fire from all over its body. It doesn't calm down until its opponent has burned to ash.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its entire body is burning. When it breathes, the temperature rises. When it sneezes, flames shoot out!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The hotter the place, the better they feel. Magmar in Alola are said to be hardier than those in other areas.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Born in an active volcano. Its body is always cloaked in flames, so it looks like a big ball of fire.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Born in an active volcano. Its body is always cloaked in flames, so it looks like a big ball of fire.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Magmar dispatches its prey with fire. But it regrets this habit once it realizes that it has burned its intended prey to a charred crisp.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Pokémon's bodies are constantly burning. Magmar are feared as one of the causes behind fires.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It was born in the crater of a volcano. Its body is covered with flames that shimmer like the sun.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It was born in the crater of a volcano. Its body is covered with flames that shimmer like the sun.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Legend has it that this Pokémon was born from the crater of a volcano. When wounded, it bathes in lava to heal its body, much as one would soak in a hot spring.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Found near the mouth of a volcano. This fire-breather's body temperature is nearly 2,200 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Wavering flames similar to those of the sun appear on the surface of this Pokémon's body.\"\n    }\n  ],\n  \"127\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It swings its long pincers wildly to attack. During cold periods, it hides deep in forests.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"If it fails to crush the victim in its pincers, it will swing it around and toss it hard.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"If it fails to crush the victim in its pincers, it will swing it around and toss it hard.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Grips its prey in its pincers and squeezes hard! It can't move if it's cold, so it lives in warm places.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Grips and tears at its enemy with the two pincers on its head. Enemies with hard bodies are gripped and tossed.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"With its horns, it digs burrows to sleep in at night. In the morning, damp soil clings to its body.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Swings its long antlers wildly to attack. During cold periods, it hides deep in forests.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When the temperature drops at night, it sleeps on treetops or among roots where it is well hidden.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"With its horns, it digs burrows to sleep in at night. In the morning, damp soil clings to its body.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Pinsir is astoundingly strong. It can grip a foe weighing twice its weight in its horns and easily lift it. This Pokémon's movements turn sluggish in cold places.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Pinsir has a pair of massive horns Protruding from the surface of these horns are thorns. These thorns are driven deeply into the foe's body when the pincer closes, making it tough for the foe to escape.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Their pincers are strong enough to shatter thick logs. Because they dislike cold, Pinsir burrow and sleep under the ground on chilly nights.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its two long pincer horns are powerful. Once they grip an enemy, they won't release until the foe is torn.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If it fails to crush the foe in its pincers, it will swing around and toss the opponent.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It grips prey with its pincers until the prey is torn in half. What it can't tear, it tosses far.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It grips prey with its pincers until the prey is torn in half. What it can't tear, it tosses far.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It grips prey with its pincers until the prey is torn in half. What it can't tear, it tosses far.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"With its pincer horns, it digs burrows to sleep in at night. In the morning, damp soil clings to its body.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It swings its long pincer horns wildly to attack. During cold periods, it hides deep in forests.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It grips prey with its pincers until the prey is torn in half. What it can't tear, it tosses far.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It grips prey with its pincers until the prey is torn in half. What it can't tear, it tosses far.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It grips prey with its powerful pincers and will not let go until the prey is torn in half.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It grips prey with its powerful pincers and will not let go until the prey is torn in half.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It grips prey with its pincers until the prey is torn in half. What it can't tear, it tosses far.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It swings its long pincer horns wildly to attack. During cold periods, it hides deep in forests.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Pinsir is astoundingly strong. It can grip a foe weighing twice its weight in its horns and easily lift it. This Pokémon's movements turn sluggish in cold places.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Pinsir has a pair of massive horns. Protruding from the surface of these horns are thorns. These thorns are driven deeply into the foe's body when the pincer closes, making it tough for the foe to escape.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It grips its prey in its pincers and splits them apart. Although it is a powerful Pokémon, it can't deal with the cold.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"One solid blow from its horns is enough to split apart a large tree. Its greatest rival in Alola is Vikavolt.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It gets into territorial disputes with Vikavolt. For some reason, it apparently gets along well with Heracross in Alola.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although it's tough, it can't handle cold well. When night falls, it buries itself in leafage and sleeps.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Grips its prey in its pincers and squeezes hard! It can't move if it's cold out, so it lives in warm places.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Grips its prey in its pincers and squeezes hard! It can't move if it's cold out, so it lives in warm places.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"These Pokémon judge one another based on pincers. Thicker, more impressive pincers make for more popularity with the opposite gender.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon clamps its pincers down on its prey and then either splits the prey in half or flings it away.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It grips prey with its pincers until the prey is torn apart. What it can't tear, it tosses far away.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It grips prey with its pincers until the prey is torn apart. What it can't tear, it tosses far away.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It swings its long pincers wildly to attack. During cold periods, it hides deep in forests.\"\n    }\n  ],\n  \"128\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When it targets an enemy, it charges furiously while whipping its body with its long tails.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When it targets an enemy, it charges furiously while whipping its body with its long tails.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A rowdy Pokémon with a lot of stamina. Once running, it won't stop until it hits something.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Charges while whipping its hefty body with its tails. Although powerful, it can charge only in a straight line.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"They fight each other by locking horns. The herd's protector takes pride in its battle-scarred horns.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"After heightening its will to fight by whipping itself with its three tails, it charges at full speed.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"These violent Pokémon fight with other members of their herd in order to prove their strength.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"They fight each other by locking horns. The herd's protector takes pride in its battle-scarred horns.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"This Pokémon is not satisfied unless it is rampaging at all times. If there is no opponent for Tauros to battle, it will charge at thick trees and knock them down to calm itself.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon is not satisfied unless it is rampaging at all times. If there is no opponent for Tauros to battle, it will charge at thick trees and knock them down to calm itself.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is not satisfied unless it is rampaging at all times. If there is no opponent for Tauros to battle, it will charge at thick trees and knock them down to calm itself.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When it is about to Tackle, it whips its body repeatedly with its three long tails.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When it targets an enemy, it charges furiously while whipping its body with its long tails.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Once it takes aim at its foe, it makes a headlong charge. It is famous for its violent nature.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Once it takes aim at its foe, it makes a headlong charge. It is famous for its violent nature.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Once it takes aim at its foe, it makes a headlong charge. It is famous for its violent nature.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They fight each other by locking horns. The herd's protector takes pride in its battle-scarred horns.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"After heightening its will to fight by whipping itself with its three tails, it charges at full speed.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Once it takes aim at its foe, it makes a headlong charge. It is famous for its violent nature.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Once it takes aim at its foe, it makes a headlong charge. It is famous for its violent nature.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Once it takes aim at its foe, it makes a headlong charge. It is famous for its violent nature.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Once it takes aim at its foe, it makes a headlong charge. It is famous for its violent nature.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"After heightening its will to fight by whipping itself with its three tails, it charges at full speed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it is about to tackle, it whips its body repeatedly with its three long tails.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon is not satisfied unless it is rampaging at all times. If there is no opponent for Tauros to battle, it will charge at thick trees and knock them down to calm itself.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon is not satisfied unless it is rampaging at all times. If there is no opponent for Tauros to battle, it will charge at thick trees and knock them down to calm itself.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Historically, people in areas all over the world have ridden Tauros, but the practice is said to have started in Alola.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Although it's known to be a fierce Pokémon, Tauros in the Alola region are said to possess a measure of calmness.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They live in groups. The one with the longest, thickest, and most-scarred horns is the boss of the herd.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The climate seems to be related to the reason Tauros in Alola are a little calmer than those in other regions.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A rowdy Pokémon with a lot of stamina. Once running, it won't stop until it hits something.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A rowdy Pokémon with a lot of stamina. Once running, it won't stop until it hits something.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When Tauros begins whipping itself with its tails, it's a warning that the Pokémon is about to charge with astounding speed.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The Tauros of Galar are volatile in nature, and they won't allow people to ride on their backs.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Once it takes aim at its prey, it makes a headlong charge. It is famous for its violent nature.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Once it takes aim at its prey, it makes a headlong charge. It is famous for its violent nature.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it targets an enemy, it charges furiously while whipping its body with its long tails.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They fight each other by locking horns. The herd's protectors take pride in their battle-scarred horns.\"\n    }\n  ],\n  \"129\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"An underpowered, pathetic Pokémon. It may jump high on rare occasions but never more than seven feet.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"In the distant past, it was somewhat stronger than the horribly weak descendants that exist today.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"In the distant past, it was somewhat stronger than the horribly weak descendants that exist today.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Famous for being very unreliable. It can be found swimming in seas, lakes, rivers and shallow puddles.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Whoever its opponent, and however horrible the attack it receives, all it does is Splash around.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"An underpowered, pathetic Pokémon. It may jump high on rare occasions, but never more than seven feet.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"For no reason, it jumps and splashes about, making it easy for predators like Pidgeotto to catch it mid-jump.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This weak and pathetic Pokémon gets easily pushed along rivers when there are strong currents.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"An underpowered, pathetic Pokémon. It may jump high on rare occasions, but never more than seven feet.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Magikarp is a pathetic excuse for a Pokémon that is only capable of flopping and splashing. This behavior prompted scientists to undertake research into it.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Magikarp is virtually useless in battle as it can only splash around. As a result, it is considered to be weak. However, it is actually a very hardy Pokémon that can survive in any body of water no matter how polluted it is.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its swimming muscles are weak, so it is easily washed away by currents. In places where water pools, you can see many Magikarp deposited there by the flow.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is virtually worthless in terms of both power and speed. It is the most weak and pathetic Pokémon in the world.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"In the distant past, it was somewhat stronger than the horribly weak descendants that exist today.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said to be the world's weakest Pokémon. No one knows why it has managed to survive.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is unable to swim against even slow-moving currents. It always splashes about for some reason.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Magikarp living for many years can leap a mountain using Splash. The move remains useless, though.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"An underpowered, pathetic Pokémon. It may jump high on rare occasions, but usually not more than seven feet.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"For no reason, it jumps and splashes about, making it easy for predators like Pidgeotto to catch it mid-jump.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Magikarp living for many years can leap a mountain using Splash. The move remains useless, though.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Magikarp living for many years can leap a mountain using Splash. The move remains useless, though.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A Magikarp living for many years can leap a mountain using Splash. The move remains useless, though.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A Magikarp living for many years can leap a mountain using Splash. The move remains useless, though.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is virtually worthless in terms of both power and speed. It is the most weak and pathetic Pokémon in the world.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"In the distant past, it was somewhat stronger than the horribly weak descendants that exist today.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Magikarp is a pathetic excuse for a Pokémon that is only capable of flopping and splashing. This behavior prompted scientists to undertake research into it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Magikarp is virtually useless in battle as it can only splash around. As a result, it is considered to be weak. However, it is actually a very hardy Pokémon that can survive in any body of water no matter how polluted it is.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Although weak and helpless, this Pokémon is incredibly fertile. They exist in such multitudes, you'll soon grow tired of seeing them.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its reckless leaps make it easy pickings for predators. On the bright side, many Pokémon enjoy longer life spans, thanks to Magikarp.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"In the distant past, they were fairly strong, but they have become gradually weaker over time.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Thanks to their strong hold on life, dirty water doesn't bother them at all. They live in waters all over the world!\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Famous for being very unreliable. It can be found swimming in seas, lakes, rivers, and shallow puddles.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Famous for being very unreliable. It can be found swimming in seas, lakes, rivers, and shallow puddles.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is virtually worthless in terms of both power and speed. It is the most weak and pathetic Pokémon in the world.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This weak and pathetic Pokémon gets easily pushed along rivers when there are strong currents.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said to be the world's weakest Pokémon. No one knows why it has managed to survive.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is unable to swim against even slow-moving currents. It always splashes about for some reason.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A feeble, pitiful imbecile of a Pokémon that is nonetheless very hardy. Unperturbed by turbid water, it can be found living in all sorts of places.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"An underpowered, pathetic Pokémon. It may jump high on rare occasions but never more than seven feet.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In the distant past, it was somewhat stronger than the horribly weak descendants that exist today.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It is virtually worthless in terms of both power and speed. It is the weakest and most pathetic Pokémon in the world.\"\n    }\n  ],\n  \"130\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Once it appears, it goes on a rampage. It remains enraged until it demolishes everything around it.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Rarely seen in the wild. Huge and vicious, it is capable of destroying entire cities in a rage.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Rarely seen in the wild. Huge and vicious, it is capable of destroying entire cities in a rage.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Brutally vicious and enormously destructive. Known for totally destroying cities in ancient times.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Extremely vicious and horribly brutal. Has enough destructive power to totally annihilate even a major city.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"They say that during past wars, Gyarados would appear and leave blazing ruins in its wake.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Once it appears, it goes on a rampage. It remains enraged until it demolishes everything around it.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It appears whenever there is world conflict, burning down any place it travels through.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"They say that during past wars, Gyarados would appear and leave blazing ruins in its wake.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"When Magikarp evolves into Gyarados, its brain cells undergo a structural transformation. It is said that this transformation is to blame for this Pokémon's wildly violent nature.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Once Gyarados goes on a rampage, its ferociously violent blood doesn't calm until it has burned everything down. There are records of this Pokémon's rampages lasting a whole month.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is an extremely vicious and violent Pokémon. When humans begin to fight, it will appear and burn everything to the ground with intensely hot flames.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has an extremely aggressive nature. The Hyper Beam it shoots from its mouth totally incinerates all targets.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Rarely seen in the wild. Huge and vicious, it is capable of destroying entire cities in a rage.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Once it appears, its rage never settles until it has razed the fields and mountains around it.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"In ancient literature, there is a record of a Gyarados that razed a village when violence flared.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Once it begins to rampage, a Gyarados will burn everything down, even in a harsh storm.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They say that during past strife, Gyarados would appear and leave blazing ruins in its wake.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Once it appears, it goes on a rampage. It remains enraged until it demolishes everything around it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Once it begins to rampage, a Gyarados will burn everything down, even in a harsh storm.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Once it begins to rampage, a Gyarados will burn everything down, even in a harsh storm.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Once it begins to rampage, a Gyarados will burn everything down, even in a harsh storm.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Once it begins to rampage, a Gyarados will burn everything down, even in a harsh storm.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In ancient literature, there is a record of a Gyarados that razed a village when violence flared.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Rarely seen in the wild. Huge and vicious, it is capable of destroying entire cities in a rage.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When Magikarp evolves into Gyarados, its brain cells undergo a structural transformation. It is said that this transformation is to blame for this Pokémon's wildly violent nature.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Once Gyarados goes on a rampage, its ferociously violent blood doesn't calm until it has burned everything down. There are records of this Pokémon's rampages lasting a whole month.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A tale is told of a town that angered Gyarados. Before the sun rose the next day, flames utterly consumed the town, leaving not a trace behind.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"There are people who swear that any place Gyarados appears is fated for destruction.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It fires hyper beams in all directions, burning the surrounding area to ash. There are some regions where it's called \\\"the deity of destruction.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The energy from evolution stimulated its brain cells strongly, causing it to become very ferocious.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Brutally vicious and enormously destructive. Known for totally destroying cities in ancient times.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Brutally vicious and enormously destructive. Known for totally destroying cities in ancient times.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has an extremely aggressive nature. The Hyper Beam it shoots from its mouth totally incinerates all targets.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Once it begins to rampage, a Gyarados will burn everything down, even in a harsh storm.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Once Gyarados appears, its rage never settles until the Pokémon has razed the fields and mountains around it.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"In ancient literature, there is a record of a Gyarados that razed a village when violence flared.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"I suspect this Pokémon to be the true identity of a dragon written of in ancient texts, which claimed that it razed an entire village with white-hot beams from its maw.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Once it appears, it goes on a rampage. It remains enraged until it demolishes everything around it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It appears whenever there is world conflict, burning down any place it travels through.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"In ancient literature, there is a record of a Gyarados that razed a village when violence flared.\"\n    }\n  ],\n  \"131\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A smart and kindhearted Pokémon, it glides across the surface of the sea while its beautiful song echoes around it.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A Pokémon that has been overhunted almost to extinction. It can ferry people across the water.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A Pokémon that has been overhunted almost to extinction. It can ferry people across the water.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A gentle soul that can read the minds of people. It can ferry people across the sea on its back.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Capable of understanding the language of humans, it enjoys ferrying people on its back. It is on the verge of extinction.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"They have gentle hearts. Because they rarely fight, many have been caught. Their number has dwindled.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It ferries people across the sea on its back. It may sing an enchanting cry if it is in a good mood.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This gentle Pokémon loves to give people rides and provides a very comfortable way to get around.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"They have gentle hearts. Because they rarely fight, many have been caught. Their number has dwindled.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"People have driven Lapras almost to the point of extinction. In the evenings, this Pokémon is said to sing plaintively as it seeks what few others of its kind still remain.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"People have driven Lapras almost to the point of extinction. In the evenings, this Pokémon is said to sing plaintively as it seeks what few others of its kind still remain.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"People have driven Lapras almost to the point of extinction. In the evenings, it is said to sing plaintively as it seeks what few others of its kind still remain.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its high intelligence enables it to understand human speech. It likes to ferry people on its back.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A Pokémon that has been overhunted almost to extinction. It can ferry people on its back.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves crossing the sea with people and Pokémon on its back. It understands human speech.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It loves crossing the sea with people and Pokémon on its back. It understands human speech.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It loves crossing the sea with people and Pokémon on its back. It understands human speech.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They have gentle hearts. Because they rarely fight, many have been caught. Their number has dwindled.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It ferries people across the sea on its back. It may sing an enchanting cry if it is in a good mood.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It loves crossing the sea with people and Pokémon on its back. It understands human speech.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It loves crossing the sea with people and Pokémon on its back. It understands human speech.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Able to understand human speech and very intelligent, it loves to swim in the sea with people on its back.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Able to understand human speech and very intelligent, it loves to swim in the sea with people on its back.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They have gentle hearts. Because they rarely fight, many have been caught. Their number has dwindled.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its high intelligence enables it to understand human speech. It likes to ferry people on its back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"People have driven Lapras almost to the point of extinction. In the evenings, this Pokémon is said to sing plaintively as it seeks what few others of its kind still remain.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"People have driven Lapras almost to the point of extinction. In the evenings, this Pokémon is said to sing plaintively as it seeks what few others of its kind still remain.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its high intelligence enables it to comprehend human speech. When it's in a good mood, it sings in its beautiful voice.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"These Pokémon were once near extinction due to poaching. Following protective regulations, there is now an overabundance of them.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It likes swimming around with people on its back. In the Alola region, it's an important means of transportation over water.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They've been so cherished that there's now an overabundance. The fish Pokémon population has declined in waters with too many Lapras.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A gentle soul that can understand human speech. It can ferry people across the sea on its back.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A gentle soul that can understand human speech. It can ferry people across the sea on its back.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A smart and kindhearted Pokémon, it glides across the surface of the sea while its beautiful song echoes around it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Crossing icy seas is no issue for this cold-resistant Pokémon. Its smooth skin is a little cool to the touch.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It loves crossing the sea with people and Pokémon on its back. It understands human speech.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It loves crossing the sea with people and Pokémon on its back. It understands human speech.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It ferries people across the sea on its back. It may sing an enchanting cry if it is in a good mood.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Able to understand human speech and very intelligent, it loves to swim in the sea with people on its back.\"\n    }\n  ],\n  \"132\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It can reorganize its cells to make itself into a duplicate of anything it sees. The quality of the duplicate depends on the individual.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Capable of copying an enemy's genetic code to instantly transform itself into a duplicate of the enemy.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Capable of copying an enemy's genetic code to instantly transform itself into a duplicate of the enemy.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"When it spots an enemy, its body transfigures into an almost perfect copy of its opponent.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Capable of reorganizing its cells to transform into an exact duplicate of its enemy. It is usually a shapeless blob.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It can transform into anything. When it sleeps, it changes into a stone to avoid being attacked.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its transformation ability is perfect. However, if made to laugh, it can't maintain its disguise.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it encounters another Ditto, it will move faster than normal to duplicate that opponent exactly.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It can transform into anything. When it sleeps, it changes into a stone to avoid being attacked.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ditto rearranges its cell structure to transform itself into other shapes. However, if it tries to transform itself into something by relying on its memory, this Pokémon manages to get details wrong.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Ditto rearranges its cell structure to transform itself into other shapes. However, if it tries to transform itself into something by relying on its memory, this Pokémon manages to get details wrong.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Ditto rearranges its cell structure to transform itself. However, if it tries to change based on its memory, it will get details wrong.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It can freely recombine its own cellular structure to transform into other life-forms.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Capable of copying an opponent's genetic code to instantly transform itself into a duplicate of the enemy.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has the ability to reconstitute its entire cellular structure to transform into whatever it sees.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has the ability to reconstitute its entire cellular structure to transform into whatever it sees.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has the ability to reconstitute its entire cellular structure to transform into whatever it sees.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can transform into anything. When it sleeps, it changes into a stone to avoid being attacked.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its transformation ability is perfect. However, if made to laugh, it can't maintain its disguise.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has the ability to reconstitute its entire cellular structure to transform into whatever it sees.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has the ability to reconstitute its entire cellular structure to transform into whatever it sees.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It can reconstitute its entire cellular structure to change into what it sees, but it returns to normal when it relaxes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It can reconstitute its entire cellular structure to change into what it sees, but it returns to normal when it relaxes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has the ability to reconstitute its entire cellular structure to transform into whatever it sees.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can freely recombine its own cellular structure to transform into other life-forms.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ditto rearranges its cell structure to transform itself into other shapes. However, if it tries to transform itself into something by relying on its memory, this Pokémon manages to get details wrong.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ditto rearranges its cell structure to transform itself into other shapes. However, if it tries to transform itself into something by relying on its memory, this Pokémon manages to get details wrong.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It can reorganize its cells to make itself into a duplicate of anything it sees. The quality of the duplicate depends on the individual.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"With its astonishing capacity for metamorphosis, it can get along with anything. It does not get along well with its fellow Ditto.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"While it can transform into anything, each Ditto apparently has its own strengths and weaknesses when it comes to transformations.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It transforms into whatever it sees. If the thing it's transforming into isn't right in front of it, Ditto relies on its memory—so sometimes it fails.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When it spots an enemy, its body transfigures into an almost-perfect copy of its opponent.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When it spots an enemy, its body transfigures into an almost-perfect copy of its opponent.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It can reconstitute its entire cellular structure to change into what it sees, but it returns to normal when it relaxes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it encounters another Ditto, it will move faster than normal to duplicate that opponent exactly.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has the ability to reconstitute its entire cellular structure to transform into whatever it sees.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has the ability to reconstitute its entire cellular structure to transform into whatever it sees.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its transformation ability is perfect. However, if made to laugh, it can't maintain its disguise.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can freely recombine its own cellular structure to transform into other life-forms.\"\n    }\n  ],\n  \"133\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its ability to evolve into many forms allows it to adapt smoothly and perfectly to any environment.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its genetic code is irregular. It may mutate if it is exposed to radiation from element Stones.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its genetic code is irregular. It may mutate if it is exposed to radiation from element Stones.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its genetic code is unstable, so it could evolve in a variety of ways. There are only a few alive.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its genetic code is irregular. It evolves into three kinds of Pokémon when exposed to the radiation of elemental stones.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has the ability to alter the composition of its body to suit its surrounding environment.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its irregularly configured DNA is affected by its surroundings. It evolves if its environment changes.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its ability to evolve into many forms allows it to adapt smoothly and perfectly to any environment.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has the ability to alter the composition of its body to suit its surrounding environment.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Eevee has an unstable genetic makeup that suddenly mutates due to the environment in which it lives. Radiation from various Stones causes this Pokémon to evolve.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Eevee has an unstable genetic makeup that suddenly mutates due to the environment in which it lives. Radiation from various Stones causes this Pokémon to evolve.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"An Eevee has an unstable genetic makeup that suddenly mutates due to its environment. Radiation from various Stones causes this Pokémon to evolve.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"An extremely rare Pokémon that may evolve in a number of different ways depending on stimuli.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its genetic code is irregular. It may mutate if it is exposed to radiation from element Stones.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A rare Pokémon that adapts to harsh environments by taking on different evolutionary forms.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A rare Pokémon that adapts to harsh environments by taking on different evolutionary forms.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Because its genetic makeup is irregular, it quickly changes its form due to a variety of causes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has the ability to alter the composition of its body to suit its surrounding environment.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its irregularly configured DNA is affected by its surroundings. It evolves if its environment changes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Because its genetic makeup is irregular, it quickly changes its form due to a variety of causes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because its genetic makeup is irregular, it quickly changes its form due to a variety of causes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Thanks to its unstable genetic makeup, this special Pokémon conceals many different possible evolutions.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Thanks to its unstable genetic makeup, this special Pokémon conceals many different possible evolutions.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A rare Pokémon that adapts to harsh environments by taking on different evolutionary forms.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Thanks to its unstable genetic makeup, this special Pokémon conceals many different possible evolutions.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Eevee has an unstable genetic makeup that suddenly mutates due to the environment in which it lives. Radiation from various stones causes this Pokémon to evolve.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Eevee has an unstable genetic makeup that suddenly mutates due to the environment in which it lives. Radiation from various stones causes this Pokémon to evolve.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Possessing an unbalanced and unstable genetic makeup, it conceals many possible evolutions.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Current studies show it can evolve into an incredible eight different species of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The question of why only Eevee has such unstable genes has still not been solved.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its genes are easily influenced by its surroundings. Even its face starts to look like that of its Trainer.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It can evolve into a variety of forms. Eevee's genes are the key to solving the mysteries of Pokémon evolution.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It can evolve into a variety of forms. Eevee's genes are the key to solving the mysteries of Pokémon evolution.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has the ability to alter the composition of its body to suit its surrounding environment.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Thanks to its unstable genetic makeup, this special Pokémon conceals many different possible evolutions.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a rare Pokémon that adapts to harsh environments by changing its appearance and capabilities when it evolves.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is a rare Pokémon that adapts to harsh environments by changing its appearance and capabilities when it evolves.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Harbors the potential to evolve into manifold forms. Within Eevee lies the key to the mysteries of Pokémon evolution—I'm certain of it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its ability to evolve into many forms allows it to adapt smoothly and perfectly to any environment.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its genetic code is irregular. It may mutate if it is exposed to radiation from element stones.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Thanks to its unstable genetic makeup, this special Pokémon conceals many different possible evolutions.\"\n    }\n  ],\n  \"134\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It prefers beautiful shores. With cells similar to water molecules, it could melt in water.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Lives close to water. Its long tail is ridged with a fin which is often mistaken for a mermaid's.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Lives close to water. Its long tail is ridged with a fin which is often mistaken for a mermaid's.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its cell structure is similar to water molecules. It will melt away and become invisible in water.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Found quietly resting by lake shores. Its cell structure is similar to water, so it can invisibly melt into water.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When Vaporeon's fins begin to vibrate, it is a sign that rain will come within a few hours.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It prefers beautiful shores. With cells similar to water molecules, it could melt in water.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"As it uses the fins on the tip of its tail to swim, it blends with the water perfectly.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When Vaporeon's fins begin to vibrate, it is a sign that rain will come within a few hours.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Vaporeon underwent a spontaneous mutation and grew fins and gills that allow it to live underwater. This Pokémon has the ability to freely control water.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Vaporeon underwent a spontaneous mutation and grew fins and gills that allow it to live underwater. This Pokémon has the ability to freely control water.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Vaporeon underwent a spontaneous mutation and grew fins and gills that allow them to live underwater. They have the ability to freely control water.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its body's cellular structure is similar to the molecular composition of water. It can melt invisibly in water.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Lives close to water. Its long tail is ridged with a fin which is often mistaken for a mermaid's.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has evolved to be suitable for an aquatic life. It can invisibly melt away into water.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has evolved to be suitable for an aquatic life. It can invisibly melt away into water.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its cell composition is similar to water molecules. As a result, it can melt away into water.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When Vaporeon's fins begin to vibrate, it is a sign that rain will come within a few hours.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It prefers beautiful shores. With cells similar to water molecules, it could melt in water.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its cell composition is similar to water molecules. As a result, it can melt away into water.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its cell composition is similar to water molecules. As a result, it can melt away into water.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its cell composition is similar to water molecules. As a result, it can't be seen when it melts away into water.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its cell composition is similar to water molecules. As a result, it can't be seen when it melts away into water.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It prefers beautiful shores. With cells similar to water molecules, it could melt in water.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has evolved to be suitable for an aquatic life. It can invisibly melt away into water.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Vaporeon underwent a spontaneous mutation and grew fins and gills that allow it to live underwater. This Pokémon has the ability to freely control water.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Vaporeon underwent a spontaneous mutation and grew fins and gills that allow it to live underwater. This Pokémon has the ability to freely control water.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its cells are composed of units much like water molecules. It lives close to water and is often mistaken for a mermaid.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Blending in with the water and erasing all signs of its presence, it patiently waits for its prey, fish Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Clean, clear waters are its usual habitat. When it's about to be attacked by an invading enemy, it dives into the water to hide.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It detects nearby moisture with its fin. When its fin begins trembling rapidly, that means rain will fall in a few hours.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its cell structure is similar to water molecules. It melts into the water and becomes invisible.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its cell structure is similar to water molecules. It melts into the water and becomes invisible.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When Vaporeon's fins begin to vibrate, it is a sign that rain will come within a few hours.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its body's cellular structure is similar to the molecular composition of water. It can melt invisibly in water.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has evolved to be suited for an aquatic life. It can become invisible when it melts away into water.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has evolved to be suited for an aquatic life. It can become invisible when it melts away into water.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Tests show that its cells closely resemble water molecules, which perhaps explains its ability to conceal its form while submerged. I believe the origins of mermaid folklore lie with this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives close to water. Its long tail is ridged with a fin, which is often mistaken for a mermaid's.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its cell composition is similar to water molecules. As a result, it can't be seen when it melts away into water.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has evolved to be suited for an aquatic life. It can become invisible when it melts away into water.\"\n    }\n  ],\n  \"135\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A sensitive Pokémon that easily becomes sad or angry. Every time its mood changes, it charges power.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"It accumulates negative ions in the atmosphere to blast out 10000-volt lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"It accumulates negative ions in the atmosphere to blast out 10000-volt lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A sensitive {{OBP|Pokémon|species|Pokémon}} that easily becomes sad or angry. Every time its mood changes, it charges power.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its weapons are its 10,000-volt electric attacks and its spiky fur. Its sharp hair can pierce enemies when it bristles.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It concentrates the weak electric charges emitted by its cells and launches wicked lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Every hair on its body starts to stand sharply on end if it becomes charged with electricity.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The negatively charged ions generated in its fur create a constant sparking noise.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It concentrates the weak electric charges emitted by its cells and launches wicked lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Jolteon's cells generate a low level of electricity. This power is amplified by the static electricity of its fur, enabling the Pokémon to drop thunderbolts. The bristling fur is made of electrically charged needles.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Jolteon's cells generate a low level of electricity. This power is amplified by the static electricity of its fur, enabling the Pokémon to drop thunderbolts. The bristling fur is made of electrically charged needles.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its cells generate weak power that is amplified by its fur's static electricity to drop thunderbolts. The bristling fur is made of electrically charged needles.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If it is angered or startled, the fur all over its body bristles like sharp needles that pierce foes.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It accumulates negative ions in the atmosphere to blast out 10,000-volt lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It controls 10,000-volt power and can raise all the fur on its body as if it were sharp needles.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It controls 10,000-volt power and can raise all the fur on its body as if it were sharp needles.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If agitated, it uses electricity to straighten out its fur and launch it in small bunches.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It concentrates the weak electric charges emitted by its cells and launches wicked lightning bolts.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Every hair on its body starts to stand sharply on end if it becomes charged with electricity.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If agitated, it uses electricity to straighten out its fur and launch it in small bunches.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If agitated, it uses electricity to straighten out its fur and launch it in small bunches.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By storing electricity in its body, it can shoot its bristlelike fur like a barrage of missiles.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By storing electricity in its body, it can shoot its bristlelike fur like a barrage of missiles.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Every hair on its body starts to stand sharply on end if it becomes charged with electricity.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It accumulates negative ions in the atmosphere to blast out 10,000-volt lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Jolteon's cells generate a low level of electricity. This power is amplified by the static electricity of its fur, enabling the Pokémon to drop thunderbolts. The bristling fur is made of electrically charged needles.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Jolteon's cells generate a low level of electricity. This power is amplified by the static electricity of its fur, enabling the Pokémon to drop thunderbolts. The bristling fur is made of electrically charged needles.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They send out electrical charges of about 10,000 volts. Because they are high-strung, it can be difficult to grow close to them.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When its fur stands on end, that's a sign it's about to give off a jolt of electricity. Take care, as sometimes lightning strikes next to it, too.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its lungs contain an organ that creates electricity. The crackling sound of electricity can be heard when it exhales.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its fur stands on end, becoming like needles it fires at enemies. Once they're weakened, it finishes them off with a 10,000 volt shock.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A sensitive Pokémon that easily becomes sad or angry. Every time its mood changes, it charges power.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A sensitive Pokémon that easily becomes sad or angry. Every time its mood changes, it charges power.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If it is angered or startled, the fur all over its body bristles like sharp needles that pierce foes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It accumulates negative ions in the atmosphere to blast out 10,000-volt lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It controls 10,000-volt power. When the fur covering its body stands on end, the fur is hard and sharp, like needles.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It controls 10,000-volt power. When the fur covering its body stands on end, the fur is hard and sharp, like needles.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Bristles its fur into sharp, needlelike points when enraged. One can hear electricity crackle in its breath when it exhales.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It concentrates the weak electric charges emitted by its cells and launches wicked lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If agitated, it uses electricity to straighten out its fur and launch it in small bunches.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It absorbs negative ions from the atmosphere to spit out 10,000 volts of electricity.\"\n    }\n  ],\n  \"136\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Inhaled air is carried to its flame sac, heated, and exhaled as fire that reaches over 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"When storing thermal energy in its body, its temperature could soar to over 1600 degrees.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"When storing thermal energy in its body, its temperature could soar to over 1600 degrees.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It has a flame chamber inside its body. It inhales, then blows out fire that is over 3,000F degrees.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Its fiery breath reaches close to 3,000 degrees. Its body temperature exceeds 1,650 degrees when storing fire inside.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It stores some of the air it inhales in its internal flame pouch, which heats it to over 3,000 degrees.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It fluffs out its fur collar to cool down its body temperature, which can reach 1,650 degrees.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Once it has stored up enough heat, this Pokémon's body temperature can reach up to 1700 degrees.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It stores some of the air it inhales in its internal flame pouch, which heats it to over 3,000 degrees.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Flareon's fluffy fur has a functional purpose - it releases heat into the air so that its body does not get excessively hot. This Pokémon's body temperature can rise to a maximum of 1,650 degrees F.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Flareon's fluffy fur has a functional purpose - it releases heat into the air so that its body does not get excessively hot. This Pokémon's body temperature can rise to a maximum of 1,650 degrees F.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Flareon's fluffy fur releases heat into the air so that its body does not get excessively hot. Its body temperature can rise to a maximum of 1,650 degrees F.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has a flame bag inside its body. After inhaling deeply, it blows out flames of nearly 3,100 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When storing thermal energy in its body, its temperature can soar to over 1,600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a flame sac in its body. Its body temperature tops 1,650 degrees Fahrenheit before battle.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has a flame sac in its body. Its body temperature tops 1,650 degrees Fahrenheit before battle.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Inhaled air is heated in the flame sac in its body to an intense fire over 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It stores some of the air it inhales in its internal flame pouch, which heats it to over 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It fluffs out its fur collar to cool down its body temperature, which can reach 1,650 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Inhaled air is heated in the flame sac in its body to an intense fire over 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Inhaled air is heated in the flame sac in its body to an intense fire over 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Inhaled air is carried to its flame sac, heated, and exhaled as fire that reaches over 3,000 degrees F.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Inhaled air is carried to its flame sac, heated, and exhaled as fire that reaches over 3,000 degrees F.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a flame sac in its body. Its body temperature tops 1,650 degrees Fahrenheit before battle.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a flame bag inside its body. After inhaling deeply, it blows out flames of nearly 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Flareon's fluffy fur has a functional purpose—it releases heat into the air so that its body does not get excessively hot. This Pokémon's body temperature can rise to a maximum of 1,650 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Flareon's fluffy fur has a functional purpose—it releases heat into the air so that its body does not get excessively hot. This Pokémon's body temperature can rise to a maximum of 1,650 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it catches prey or finds berries, it breathes fire on them until they're well done, and then it gobbles them up.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its average body temperature is between 1,300 and 1,500 degrees Fahrenheit. In its internal flame sac, temperatures reach 3,000 degrees.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"If it inhales deeply, that's a sign it's about to attack. Prepare to be hit by flames of over 3,000 degrees Fahrenheit!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The flame chamber inside its body ignites when Flareon gets agitated, reaching temperatures of up to 1,650 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It has a flame chamber inside its body. It inhales, then breathes out fire that is over 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It has a flame chamber inside its body. It inhales, then breathes out fire that is over 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Once it has stored up enough heat, this Pokémon's body temperature can reach up to 1,700 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It stores some of the air it inhales in its internal flame pouch, which heats it to over 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a flame sac in its body. Its body temperature tops 1,650 degrees Fahrenheit before battle.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has a flame sac in its body. Its body temperature tops 1,650 degrees Fahrenheit before battle.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Flames burn within a saclike organ inside this Pokémon. When Flareon inhales, these flames grow in intensity, reaching a mighty 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Inhaled air is carried to its flame sac, heated, and exhaled as fire that reaches over 3,000 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It fluffs out its fur collar to cool down its body temperature, which can reach 1,650 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has a flame sac inside its body. After inhaling deeply, it blows out flames of nearly 3,000 degrees Fahrenheit.\"\n    }\n  ],\n  \"137\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is an artificial Pokémon. Since it doesn't breathe, people are excited by its potential to be useful in any environment.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A Pokémon that consists entirely of programming code. Capable of moving freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A Pokémon that consists entirely of programming code. Capable of moving freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The only Pokémon people anticipate can fly into space. None has managed the feat yet, however.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A man-made Pokémon that consists entirely of programming code. It is capable of moving freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is a manmade Pokémon. Since it doesn't breathe, people are eager to try it in any environment.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A manmade Pokémon that came about as a result of research. It is programmed with only basic motions.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"An artificial Pokémon created due to extensive research, it can perform only what is in its program.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is a manmade Pokémon. Since it doesn't breathe, people are eager to try it in any environment.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Porygon is capable of reverting itself entirely back to program data and entering cyberspace. This Pokémon is copy-protected so it cannot be duplicated by copying.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Porygon is capable of reverting itself entirely back to program data and entering cyberspace. This Pokémon is copy-protected so it cannot be duplicated by copying.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is capable of reverting itself entirely back to program data in order to enter cyberspace. A Porygon is copy-protected so it cannot be duplicated.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Using the most advanced technologies, scientists finally succeeded in making the first artificial Pokémon.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A Pokémon that consists entirely of programming code. It is capable of moving freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The world's first artificially created Pokémon. It can travel through electronic space.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The world's first artificially created Pokémon. It can travel through electronic space.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A man-made Pokémon created using advanced scientific means. It can move freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is a manmade Pokémon. Since it doesn't breathe, people are eager to try it in any environment.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A manmade Pokémon that came about as a result of research. It is programmed with only basic motions.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A man-made Pokémon created using advanced scientific means. It can move freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A man-made Pokémon created using advanced scientific means. It can move freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A man-made Pokémon created using advanced scientific means. It can move freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A man-made Pokémon created using advanced scientific means. It can move freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A man-made Pokémon that came about as a result of research. It is programmed with only basic motions.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A Pokémon that consists entirely of programming code. It is capable of moving freely in cyberspace.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Porygon is capable of reverting itself entirely back to program data and entering cyberspace. This Pokémon is copy protected so it cannot be duplicated by copying.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Porygon is capable of reverting itself entirely back to program data and entering cyberspace. This Pokémon is copy protected so it cannot be duplicated by copying.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Roughly 20 years ago, it was artificially created, utilizing the latest technology of the time.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It can convert its body into digital data, which enables it to enter cyberspace.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Pokémon was created using the cutting-edge science of 20 years ago, so many parts of it have since become obsolete.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It was built 20 years ago by scientists who dreamed of exploring space. Their dreams have yet to come true.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The only Pokémon that people anticipate can fly into space. None has managed the feat yet, however.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The only Pokémon that people anticipate can fly into space. None has managed the feat yet, however.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"State-of-the-art technology was used to create Porygon. It was the first artificial Pokémon to be created via computer programming.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In recent years, this species has been very helpful in cyberspace. These Pokémon will go around checking to make sure no suspicious data exists.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The world's first artificially created Pokémon. It can travel through electronic space.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The world's first artificially created Pokémon. It can travel through electronic space.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It has no discernible heartbeat and does not seem to draw breath, and yet it appears to function without issue. I cannot even begin to explain this utterly bizarre anomaly.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is an artificial Pokémon. Since it doesn't breathe, people are excited by its potential to be useful in any environment.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Porygon is an artificial Pokémon created using advanced scientific means. It can move freely through cyberspace.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This is an artificial Pokémon created as a result of research. Its programming contains only the most basic of actions.\"\n    }\n  ],\n  \"138\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Although long extinct, in rare cases, it can be genetically resurrected from fossils.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Although long extinct, in rare cases, it can be genetically resurrected from fossils.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"An ancient Pokémon that was recovered from a fossil. It swims by cleverly twisting its 10 tentacles about.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A prehistoric and long-extinct Pokémon that was resurrected from a fossil. Swims by twisting its 10 tentacles about.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Revived from an ancient fossil, this Pokémon uses air stored in its shell to sink and rise in water.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This Pokémon from ancient times is said to have navigated the sea by adeptly twisting its 10 tentacles.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"In prehistoric times, it swam on the sea floor, eating plankton. Its fossils are sometimes found.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Revived from an ancient fossil, this Pokémon uses air stored in its shell to sink and rise in water.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Omanyte is one of the ancient and long-since-extinct Pokémon that have been regenerated from fossils by people. If attacked by an enemy, it withdraws itself inside its hard shell.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Omanyte is one of the ancient and long-since-extinct Pokémon that have been regenerated from fossils by people. If attacked by an enemy, it withdraws itself inside its hard shell.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"One of the ancient and long-since-extinct Pokémon that have been regenerated from fossils by humans. If attacked, it withdraws into its hard shell.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A prehistoric Pokémon that lived in the primordial sea, it swims by twisting its 10 tentacles about.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Although long extinct, in rare cases, it can be genetically regenerated from fossils.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil using modern science. It swam in ancient seas.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil using modern science. It swam in ancient seas.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil using modern science. It swam in ancient seas.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Revived from an ancient fossil, this Pokémon uses air stored in its shell to sink and rise in water.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon from ancient times is said to have navigated the sea by adeptly twisting its 10 tentacles.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil using modern science. It swam in ancient seas.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil using modern science. It swam in ancient seas.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil using modern science. It swam in ancient seas.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil using modern science. It swam in ancient seas.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A prehistoric Pokémon that lived in the primordial sea, it swims by twisting its 10 tentacles about.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Revived from an ancient fossil, this Pokémon uses air stored in its shell to sink and rise in water.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Omanyte is one of the ancient and long-since-extinct Pokémon that have been regenerated from fossils by people. If attacked by an enemy, it withdraws itself inside its hard shell.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Omanyte is one of the ancient and long-since-extinct Pokémon that have been regenerated from fossils by people. If attacked by an enemy, it withdraws itself inside its hard shell.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Omanyte lived in the seas of antiquity. Its fossils have been found bearing bite marks from Archeops, so apparently Archeops preyed on it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It was restored from an ancient fossil. Those Helix Fossils are excavated from areas that were once oceans long, long ago.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"An ancient Pokémon that was recovered from a fossil. It swam by cleverly twisting its 10 tentacles about.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"An ancient Pokémon that was recovered from a fossil. It swam by cleverly twisting its 10 tentacles about.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Because some Omanyte manage to escape after being restored or are released into the wild by people, this species is becoming a problem.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is a member of an ancient, extinct species. Omanyte paddles through water with its 10 tentacles, looking like it's just drifting along.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It's a Pokémon that was resurrected from a fossil using modern science. It swam in ancient seas.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It's a Pokémon that was resurrected from a fossil using modern science. It swam in ancient seas.\"\n    }\n  ],\n  \"139\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A prehistoric Pokémon that died out when its heavy shell made it impossible to catch prey.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A prehistoric Pokémon that died out when its heavy shell made it impossible to catch prey.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Sharp beaks ring its mouth. Its shell was too big for it to move freely, so it became extinct.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Attacks by ensnaring its enemy with its tentacles and biting with sharp fangs. Its overly-large shell makes it sluggish.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Apparently, it cracked Shellder's shell with its sharp fangs and sucked out the insides.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Once wrapped around its prey, it never lets go. It eats the prey by tearing at it with sharp fangs.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its heavy shell allowed it to reach only nearby food. This could be the reason it is extinct.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Apparently, it cracked Shellder's shell with its sharp fangs and sucked out the insides.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Omastar uses its tentacles to capture its prey. It is believed to have become extinct because its shell grew too large and heavy, causing its movements to become too slow and ponderous.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Omastar uses its tentacles to capture its prey. It is believed to have become extinct because its shell grew too large and heavy, causing its movements to become too slow and ponderous.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"An Omastar uses its tentacles to capture its prey. It is believed to have become extinct because its shell grew too large, making its movements slow and ponderous.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its tentacles are highly developed as if they are hands and feet. As soon as it ensnares prey, it bites.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Despite having strong fangs and tentacles, it went extinct when its heavy shell made it unable to catch prey.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is thought that this Pokémon became extinct because its spiral shell grew too large.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is thought that this Pokémon became extinct because its spiral shell grew too large.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is thought that this Pokémon became extinct because its spiral shell grew too large.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Apparently, it cracked Shellder's shell with its sharp fangs and sucked out the insides.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Once wrapped around its prey, it never lets go. It eats the prey by tearing at it with sharp fangs.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is thought that this Pokémon became extinct because its spiral shell grew too large.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is thought that this Pokémon became extinct because its spiral shell grew too large.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is thought that this Pokémon became extinct because its spiral shell grew too large.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is thought that this Pokémon became extinct because its spiral shell grew too large.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its tentacles are highly developed as if they are hands and feet. As soon as it ensnares prey, it bites.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Once wrapped around its prey, it never lets go. It eats the prey by tearing at it with sharp fangs.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Omastar uses its tentacles to capture its prey. It is believed to have become extinct because its shell grew too large and heavy, causing its movements to become too slow and ponderous.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Omastar uses its tentacles to capture its prey. It is believed to have become extinct because its shell grew too large and heavy, causing its movements to become too slow and ponderous.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its heavy shell is thought to be the reason this ancient Pokémon died out. It's apparently a distant ancestor of Octillery.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It wraps its prey in its tentacles to immobilize them and then finishes them off with its sharp fangs.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its sharp beak rings its mouth. Its shell was too big for it to move freely, so it became extinct.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its sharp beak rings its mouth. Its shell was too big for it to move freely, so it became extinct.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Weighed down by a large and heavy shell, Omastar couldn't move very fast. Some say it went extinct because it was unable to catch food.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Omastar's sharp fangs could crush rock, but the Pokémon can attack only the prey that come within reach of its tentacles.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is thought that this Pokémon became extinct because its spiral shell grew too large.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is thought that this Pokémon became extinct because its spiral shell grew too large.\"\n    }\n  ],\n  \"140\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil found in what was once the ocean floor eons ago.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil found in what was once the ocean floor eons ago.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A Pokémon that was recovered from a fossil. It uses the eyes on its back while hiding on the sea floor.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A Pokémon that was resurrected from a fossil found in an ancient seabed. Unable to right itself if it is flipped over.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"On rare occasions, some have been found as fossils which they became while hiding on the ocean floor.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This Pokémon lived in ancient times. On rare occasions, it has been discovered as a living fossil.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Three hundred million years ago, it hid on the sea floor. It also has eyes on its back that glow.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"On rare occasions, some have been found as fossils which they became while hiding on the ocean floor.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Kabuto is a Pokémon that has been regenerated from a fossil. However, in extremely rare cases, living examples have been discovered. The Pokémon has not changed at all for 300 million years.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Kabuto is a Pokémon that has been regenerated from a fossil. However, in extremely rare cases, living examples have been discovered. The Pokémon has not changed at all for 300 million years.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is a Pokémon that has been regenerated from a fossil. However, in rare cases, living examples have been discovered. Kabuto have not changed for 300 million years.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Pokémon was regenerated from the fossil of an ancient creature. It protects itself with a hard shell.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A Pokémon that was regenerated from a fossil found in what was once the ocean floor long ago.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a stiff shell.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a stiff shell.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a stiff shell.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"On rare occasions, some have been found as fossils which they became while hiding on the ocean floor.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon lived in ancient times. On rare occasions, it has been discovered as a living fossil.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a stiff shell.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a stiff shell.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a stiff shell.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a stiff shell.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a stiff shell.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This Pokémon was regenerated from the fossil of an ancient creature. It protects itself with a hard shell.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Kabuto is a Pokémon that has been regenerated from a fossil. However, in extremely rare cases, living examples have been discovered. The Pokémon has not changed at all for 300 million years.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Kabuto is a Pokémon that has been regenerated from a fossil. However, in extremely rare cases, living examples have been discovered. The Pokémon has not changed at all for 300 million years.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Pokémon thrived 300 million years ago. It's said that living specimens can still be seen in a certain region—a rare sight.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pokémon became extinct everywhere, except in a few areas. It protects itself with its hard shell.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A Pokémon that was recovered from a fossil. It used the eyes on its back while hiding on the seafloor.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A Pokémon that was recovered from a fossil. It used the eyes on its back while hiding on the seafloor.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This species is almost entirely extinct. Kabuto molt every three days, making their shells harder and harder.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While some say this species has gone extinct, Kabuto sightings are apparently fairly common in some places.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a sturdy shell.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is thought to have inhabited beaches 300 million years ago. It is protected by a sturdy shell.\"\n    }\n  ],\n  \"141\": [\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Its sleek shape is perfect for swimming. It slashes prey with its claws and drains the body fluids.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Its sleek shape is perfect for swimming. It slashes prey with its claws and drains the body fluids.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A slim and fast swimmer. It slices its prey with its sharp sickles and drinks the body fluids.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Swims very quickly. It tears at its foe with sickle-like forelegs and drains the foe's body fluids entirely.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"In the water, it tucks in its limbs to become more compact, then it wiggles its shell to swim fast.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"With sharp claws, this ferocious, ancient Pokémon rips apart prey and sucks their body fluids.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It was able to swim quickly through the water by compactly folding up its razor-sharp sickles.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"In the water, it tucks in its limbs to become more compact, then it wiggles its shell to swim fast.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Kabutops swam underwater to hunt for its prey in ancient times. The Pokémon was apparently evolving from being a water-dweller to living on land as evident from the beginnings of change in its gills and legs.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Kabutops swam underwater to hunt for its prey in ancient times. The Pokémon was apparently evolving from being a water-dweller to living on land as evident from the beginnings of change in its gills and legs.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Kabutops once swam underwater to hunt for prey. It was apparently evolving from being a water dweller to living on land as evident from changes in its gills and legs.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It swims freely through water. It catches prey with its scythe-like arms and drains the victim's fluids.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its sleek shape is perfect for swimming. It slashes prey with its claws and drains their fluids.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is thought that this Pokémon came onto land because its prey adapted to life on land.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is thought that this Pokémon came onto land because its prey adapted to life on land.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is thought that this Pokémon came onto land because its prey adapted to life on land.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"In the water, it tucks in its limbs to become more compact, then it wiggles its shell to swim fast.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"With sharp claws, this ferocious, ancient Pokémon rips apart prey and sucks their body fluids.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is thought that this Pokémon came onto land because its prey adapted to life on land.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is thought that this Pokémon came onto land because its prey adapted to life on land.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is thought that this Pokémon came onto land because its prey adapted to life on land.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is thought that this Pokémon came onto land because its prey adapted to life on land.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In the water, it tucks in its limbs to become more compact, then it wiggles its shell to swim fast.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A slim and fast swimmer. It slices its prey with its sharp sickles and drinks the body fluids.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Kabutops swam underwater to hunt for its prey in ancient times. The Pokémon was apparently evolving from being a water dweller to living on land as evident from the beginnings of change in its gills and legs.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Kabutops swam underwater to hunt for its prey in ancient times. The Pokémon was apparently evolving from being a water dweller to living on land as evident from the beginnings of change in its gills and legs.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its body had begun to change so it could function on land. But it didn't adapt in time and went extinct.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It swims at speeds of roughly 29 knots, quickly closing in on its prey and slashing into them with its scythes to finish them off.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A slim and fast swimmer. It sliced its prey with its sharp sickles and drank the body fluids.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A slim and fast swimmer. It sliced its prey with its sharp sickles and drank the body fluids.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Kabutops slices its prey apart and sucks out the fluids. The discarded body parts become food for other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The cause behind the extinction of this species is unknown. Kabutops were aggressive Pokémon that inhabited warm seas.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is thought that this Pokémon came onto land because its prey adapted to life on land.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is thought that this Pokémon came onto land because its prey adapted to life on land.\"\n    }\n  ],\n  \"142\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It flew through the open skies over the ancient continent as if they were its own. When it touched ground, its walk was weak and slow.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A ferocious, prehistoric Pokémon that goes for the enemy's throat with its serrated saw-like fangs.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A ferocious, prehistoric Pokémon that goes for the enemy's throat with its serrated saw-like fangs.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A savage Pokémon that died out in ancient times. It was resurrected using DNA taken from amber.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A Pokémon that was resurrected from the genes of an ancient dinosaur. With sharp fangs, it is very vicious.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"A vicious Pokémon from the distant past, it appears to have flown by spreading its wings and gliding.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This vicious Pokémon is said to have flown in ancient skies while shrieking high-pitched cries.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"In prehistoric times, this Pokémon flew freely and fearlessly through the skies.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"A vicious Pokémon from the distant past, it appears to have flown by spreading its wings and gliding.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Aerodactyl is a Pokémon from the age of dinosaurs. It was regenerated from genetic material extracted from amber. It is imagined to have been the king of the skies in ancient times.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Aerodactyl is a Pokémon from the age of dinosaurs. It was regenerated from genetic material extracted from amber. It is imagined to have been the king of the skies in ancient times.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Aerodactyl is a Pokémon from the age of dinosaurs. It was regenerated from DNA extracted from amber. It is imagined to have been the king of the skies.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It was regenerated from a dinosaur's genetic matter that was found in amber. It flies with high-pitched cries.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A ferocious, prehistoric Pokémon that goes for the enemy's throat with its serrated, sawlike fangs.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that roamed the skies in the dinosaur era. Its teeth are like saw blades.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon that roamed the skies in the dinosaur era. Its teeth are like saw blades.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon that roamed the skies in the dinosaur era. Its teeth are like saw blades.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A vicious Pokémon from the distant past, it appears to have flown by spreading its wings and gliding.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This vicious Pokémon is said to have flown in ancient skies while shrieking high-pitched cries.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon that roamed the skies in the dinosaur era. Its teeth are like saw blades.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon that roamed the skies in the dinosaur era. Its teeth are like saw blades.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A Pokémon that roamed the skies in the dinosaur era. Its teeth are like saw blades.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A Pokémon that roamed the skies in the dinosaur era. Its teeth are like saw blades.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It was regenerated from a dinosaur's genetic matter that was found in amber. It flies with high-pitched cries.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This vicious Pokémon is said to have flown in ancient skies while shrieking high-pitched cries.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Aerodactyl is a Pokémon from the age of dinosaurs. It was regenerated from genetic material extracted from amber. It is imagined to have been the king of the skies in ancient times.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Aerodactyl is a Pokémon from the age of dinosaurs. It was regenerated from genetic material extracted from amber. It is imagined to have been the king of the skies in ancient times.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A Pokémon from the age of the dinosaurs. It used its sawlike fangs to shred its prey before eating them.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"In ancient times, it ruled the skies. A widely accepted theory is that it went extinct due to a large meteor impact.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Restored from DNA found in amber, this Pokémon exhibited ferocity that was greater than expected. Some casualties resulted.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It flew through the open skies over the ancient continent as if they were its own. When it touched ground, its walk was weak and slow.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A savage Pokémon that died out in ancient times. It was resurrected using DNA taken from amber.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A savage Pokémon that died out in ancient times. It was resurrected using DNA taken from amber.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This is a ferocious Pokémon from ancient times. Apparently even modern technology is incapable of producing a perfectly restored specimen.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Aerodactyl's sawlike fangs can shred skin to tatters—even the skin of Steel-type Pokémon.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It's a Pokémon that roamed the skies in the dinosaur era. Its teeth are like saw blades.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It's a Pokémon that roamed the skies in the dinosaur era. Its teeth are like saw blades.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It was regenerated from a pterosaur's genetic matter that was found in amber. It flies with high- pitched cries.\"\n    }\n  ],\n  \"143\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It doesn't do anything other than eat and sleep. When prompted to make a serious effort, though, it apparently displays awesome power.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Very lazy. Just eats and sleeps. As its rotund bulk builds, it becomes steadily more slothful.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Very lazy. Just eats and sleeps. As its rotund bulk builds, it becomes steadily more slothful.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Will eat anything, even if the food happens to be a little moldy. It never gets an upset stomach.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A lazy Pokémon that gets continually fatter by sticking to a cycle of eating and sleeping. Awake only when it eats.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"What sounds like its cry may actually be its snores or the rumblings of its hungry belly.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its stomach's digestive juices can dissolve any kind of poison. It can even eat things off the ground.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This Pokémon's stomach is so strong, even eating moldy or rotten food will not affect it.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"What sounds like its cry may actually be its snores or the rumblings of its hungry belly.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Snorlax's typical day consists of nothing more than eating and sleeping. It is such a docile Pokémon that there are children who use its expansive belly as a place to play.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Snorlax's typical day consists of nothing more than eating and sleeping. It is such a docile Pokémon that there are children who use its expansive belly as a place to play.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Snorlax's typical day consists of nothing more than eating and sleeping. It is such a docile Pokémon that there are children who use its big belly as a place to play.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is not satisfied unless it eats over 880 pounds of food every day. When it is done eating, it goes promptly to sleep.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Very lazy. Just eats and sleeps. As its rotund bulk builds, it becomes steadily more slothful.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its stomach can digest any kind of food, even if it happens to be moldy or rotten.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It stops eating only to sleep. It doesn't feel full unless it eats nearly 900 pounds a day.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When its belly is full, it becomes too lethargic to even lift a finger, so it is safe to bounce on its belly.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"What sounds like its cry may actually be its snores or the rumblings of its hungry belly.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its stomach's digestive juices can dissolve any kind of poison. It can even eat things off the ground.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When its belly is full, it becomes too lethargic to even lift a finger, so it is safe to bounce on its belly.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When its belly is full, it becomes too lethargic to even lift a finger, so it is safe to bounce on its belly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When its belly is full, it becomes too lethargic to even lift a finger, so it is safe to bounce on its belly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When its belly is full, it becomes too lethargic to even lift a finger, so it is safe to bounce on its belly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is not satisfied unless it eats over 880 pounds of food every day. When it is done eating, it goes promptly to sleep.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its stomach can digest any kind of food, even if it happens to be moldy or rotten.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Snorlax's typical day consists of nothing more than eating and sleeping. It is such a docile Pokémon that there are children who use its expansive belly as a place to play.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Snorlax's typical day consists of nothing more than eating and sleeping. It is such a docile Pokémon that there are children who use its expansive belly as a place to play.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its stomach is said to be incomparably strong. Even Muk's poison is nothing more than a hint of spice on Snorlax's tongue.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It eats nearly 900 pounds of food every day. It starts nodding off while eating—and continues to eat even while it's asleep.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It doesn't do anything other than eat and sleep. When prompted to make a serious effort, though, it apparently displays awesome power.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It has no interest in anything other than eating. Even if you climb up on its stomach while it's napping, it doesn't seem to mind at all!\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Will eat anything, even if the food happens to be a little moldy. It never gets an upset stomach.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Will eat anything, even if the food happens to be a little moldy. It never gets an upset stomach.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is not satisfied unless it eats over 880 pounds of food every day. When it is done eating, it goes promptly to sleep.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon's stomach is so strong, even eating moldy or rotten food will not affect it.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its stomach can digest any kind of food, even if it happens to be moldy or rotten.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It stops eating only to sleep. It doesn't feel full unless it eats nearly 900 pounds a day.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This glutton appears in villages without warning and devours the entirety of their rice granaries—such occurrences have long been counted among the gravest of disasters.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This gluttonous Pokémon eats constantly, apart from when it's asleep. It devours nearly 900 pounds of food per day.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its stomach's digestive juices can dissolve any kind of poison. Eating things off the ground doesn't bother it at all.\"\n    }\n  ],\n  \"144\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A legendary bird Pokémon. It freezes water that is contained in winter air and makes it snow.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A legendary bird Pokémon that is said to appear to doomed people who are lost in icy mountains.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A legendary bird Pokémon that is said to appear to doomed people who are lost in icy mountains.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A legendary bird Pokémon. It freezes water that is contained in winter air and makes it snow.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A legendary bird Pokémon with long and distinctive tail feathers. Said to appear if you are freezing on a snowy mountain.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The magnificent, seemingly translucent wings of this legendary bird Pokémon are said to be made of ice.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"One of the legendary bird Pokémon, it chills moisture in the atmosphere to create snow while flying.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Legendary bird Pokémon. As it flies through the sky, it cools the air, causing snow to fall.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The magnificent, seemingly translucent wings of this legendary bird Pokémon are said to be made of ice.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Articuno is a legendary bird Pokémon that can control ice. The flapping of its wings chills the air. As a result, it is said that when this Pokémon flies, snow will fall.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Articuno is a legendary bird Pokémon that can control ice. The flapping of its wings chills the air. As a result, it is said that when this Pokémon flies, snow will fall.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Articuno is a legendary bird Pokémon that can control ice. The flapping of its wings chills the air. As a result, it is said that when this Pokémon flies, snow will fall.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. With its long tail trailing behind, its flying form is magnificent.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A legendary bird Pokémon that is said to appear to doomed people who are lost in icy mountains.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A legendary bird Pokémon. It can create blizzards by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A legendary bird Pokémon. It can create blizzards by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A legendary bird Pokémon. It can create blizzards by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The magnificent, seemingly translucent wings of this legendary bird Pokémon are said to be made of ice.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"One of the legendary bird Pokémon, it chills moisture in the atmosphere to create snow while flying.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A legendary bird Pokémon. It can create blizzards by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A legendary bird Pokémon. It can create blizzards by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A legendary bird Pokémon. It can create blizzards by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A legendary bird Pokémon. It can create blizzards by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A legendary bird Pokémon. It can create blizzards by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A legendary bird Pokémon that is said to appear to doomed people who are lost in icy mountains.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Articuno is a legendary bird Pokémon that can control ice. The flapping of its wings chills the air. As a result, it is said that when this Pokémon flies, snow will fall.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Articuno is a legendary bird Pokémon that can control ice. The flapping of its wings chills the air. As a result, it is said that when this Pokémon flies, snow will fall.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A legendary bird Pokémon. It freezes water that is contained in winter air and makes it snow.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A legendary bird Pokémon. It freezes water that is contained in winter air and makes it snow.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's said that this Pokémon's beautiful blue wings are made of ice. Articuno flies over snowy mountains, its long tail fluttering along behind it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon can control ice at will. Articuno is said to live in snowy mountains riddled with permafrost.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This legendary bird Pokémon can create blizzards by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This legendary bird Pokémon can create blizzards by freezing moisture in the air.\"\n    }\n  ],\n  \"145\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This Pokémon has complete control over electricity. There are tales of Zapdos nesting in the dark depths of pitch-black thunderclouds.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A legendary bird Pokémon that is said to appear from clouds while dropping enormous lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A legendary bird Pokémon that is said to appear from clouds while dropping enormous lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"This legendary bird Pokémon is said to appear when the sky turns dark and lightning showers down.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A legendary bird Pokémon that appears with a gigantic thunder storm. It flies with the buzz and crack of electricity.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This legendary bird Pokémon causes savage thunderstorms by flapping its glittering wings.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This legendary bird Pokémon is said to appear only when a thundercloud parts into two halves.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Legendary bird Pokémon. They say lightning caused by the flapping of its wings causes summer storms.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This legendary bird Pokémon causes savage thunderstorms by flapping its glittering wings.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Zapdos is a legendary bird Pokémon that has the ability to control electricity. It usually lives in thunderclouds. The Pokémon gains power if it is stricken by lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Zapdos is a legendary bird Pokémon that has the ability to control electricity. It usually lives in thunderclouds. The Pokémon gains power if it is stricken by lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Zapdos is a legendary bird Pokémon that has the ability to control electricity. It usually lives in thunderclouds. It gains power if it is stricken by lightning bolts.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. While it is flying, it makes crackling and snapping sounds.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A legendary bird Pokémon that is said to appear from clouds while dropping enormous lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A legendary Pokémon that is said to live inside thunder clouds. It can freely control thunder.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A legendary Pokémon that is said to live inside thunder clouds. It can freely control thunder.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A legendary Pokémon that is said to live in thunderclouds. It freely controls lightning bolts.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This legendary bird Pokémon causes savage thunderstorms by flapping its glittering wings.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This legendary bird Pokémon is said to appear only when a thundercloud parts into two halves.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A legendary Pokémon that is said to live in thunderclouds. It freely controls lightning bolts.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A legendary Pokémon that is said to live in thunderclouds. It freely controls lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A legendary Pokémon that is said to live in thunderclouds. It freely controls lightning bolts.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A legendary Pokémon that is said to live in thunderclouds. It freely controls lightning bolts.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A legendary bird Pokémon that is said to appear from clouds while dropping enormous lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A legendary Pokémon that is said to live in thunderclouds. It freely controls lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Zapdos is a legendary bird Pokémon that has the ability to control electricity. It usually lives in thunderclouds. The Pokémon gains power if it is stricken by lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Zapdos is a legendary bird Pokémon that has the ability to control electricity. It usually lives in thunderclouds. The Pokémon gains power if it is stricken by lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A poisonous bite reacted with its system, blessing it with the enhanced intellect of a genius. It has full control of its psychic powers.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon is so famed for its intellect that a proverb still persists in some regions: \\\"When in doubt, ask Slowking.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's constantly coming up with new ideas that would change the world, but as soon as it hits upon a new idea, it forgets it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's called \\\"the sage of the sea.\\\" It engages in battles of wits with Oranguru, but the result is usually a draw.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"This legendary bird Pokémon is said to appear when the sky turns dark and lightning showers down.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"This legendary bird Pokémon is said to appear when the sky turns dark and lightning showers down.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon has complete control over electricity. There are tales of Zapdos nesting in the dark depths of pitch-black thunderclouds.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Zapdos is a legendary bird Pokémon. It's said that when Zapdos rubs its feathers together, lightning will fall immediately after.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This legendary Pokémon is said to live in thunderclouds. It freely controls lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This legendary Pokémon is said to live in thunderclouds. It freely controls lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When its head was bitten, toxins entered Slowpoke's head and unlocked an extraordinary power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has incredible intellect and intuition. Whatever the situation, it remains calm and collected.\"\n    }\n  ],\n  \"146\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A legendary bird Pokémon. As it flaps its flaming wings, even the night sky will turn red.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Known as the legendary bird of fire. Every flap of its wings creates a dazzling flash of flames.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Known as the legendary bird of fire. Every flap of its wings creates a dazzling flash of flames.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"A legendary bird Pokémon. As it flaps its flaming wings, even the night sky will turn red.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A legendary bird Pokémon known as the \\\"fire bird.\\\" Every time it flaps, its wings flare and burn brightly.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This legendary Pokémon scatters embers with every flap of its wings. It is a thrilling sight to behold.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This legendary bird Pokémon is said to bring early spring to the wintry lands it visits.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Legendary bird Pokémon. It is said to migrate from the south along with the spring.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This legendary Pokémon scatters embers with every flap of its wings. It is a thrilling sight to behold.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Moltres is a legendary bird Pokémon that has the ability to control fire. If this Pokémon is injured, it is said to dip its body in the molten magma of a volcano to burn and heal itself.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Moltres is a legendary bird Pokémon that has the ability to control fire. If this Pokémon is injured, it is said to dip its body in the molten magma of a volcano to burn and heal itself.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Moltres is a legendary bird Pokémon that can control fire. If injured, it is said to dip its body in the molten magma of a volcano to burn and heal itself.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. Those seeing it are overwhelmed by its orange wings that seem to be on fire.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is said to be the legendary bird Pokémon of fire. Every flap of its wings creates a dazzling flare of flames.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. It is said that spring will soon arrive if Moltres shows itself.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. It is said that spring will soon arrive if Moltres shows itself.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. It is said that its appearance indicates the coming of spring.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This legendary Pokémon scatters embers with every flap of its wings. It is a thrilling sight to behold.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This legendary bird Pokémon is said to bring early spring to the wintry lands it visits.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. It is said that its appearance indicates the coming of spring.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. It is said that its appearance indicates the coming of spring.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. It is said that its appearance indicates the coming of spring.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. It is said that its appearance indicates the coming of spring.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said to be the legendary bird Pokémon of fire. Every flap of its wings creates a dazzling flare of flames.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"One of the legendary bird Pokémon. It is said that its appearance indicates the coming of spring.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Moltres is a legendary bird Pokémon that has the ability to control fire. If this Pokémon is injured, it is said to dip its body in the molten magma of a volcano to burn and heal itself.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Moltres is a legendary bird Pokémon that has the ability to control fire. If this Pokémon is injured, it is said to dip its body in the molten magma of a volcano to burn and heal itself.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"A legendary bird Pokémon. As it flaps its flaming wings, even the night sky will turn red.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"A legendary bird Pokémon. As it flaps its flaming wings, even the night sky will turn red.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's one of the legendary bird Pokémon. When Moltres flaps its flaming wings, they glimmer with a dazzling red glow.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"There are stories of this Pokémon using its radiant, flame-cloaked wings to light up paths for those lost in the mountains.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is one of the legendary bird Pokémon. Its appearance is said to indicate the coming of spring.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is one of the legendary bird Pokémon. Its appearance is said to indicate the coming of spring.\"\n    }\n  ],\n  \"147\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is called the Mirage Pokémon because so few have seen it, but its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"Long considered a mythical Pokémon until recently when a small colony was found living underwater.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"Long considered a mythical Pokémon until recently when a small colony was found living underwater.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"The existence of this mythical Pokémon was only recently confirmed by a fisherman who caught one.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Even the young are known to exceed 6' 6\\\". It is rare and was long considered to exist only in myth.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is born large to start with. It repeatedly sheds its skin as it steadily grows longer.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This Pokémon is full of life energy. It continually sheds its skin and grows steadily larger.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It sheds many layers of skin as it grows larger. During this process, it is protected by a rapid waterfall.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is born large to start with. It repeatedly sheds its skin as it steadily grows longer.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Dratini continually molts and sloughs off its old skin. It does so because the life energy within its body steadily builds to reach uncontrollable levels.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Dratini continually molts and sloughs off its old skin. It does so because the life energy within its body steadily builds to reach uncontrollable levels.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Dratini continually molts and sloughs off its old skin. It does so because the life energy within its body steadily builds to reach uncontrollable levels.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Even the young can exceed 6.5 feet in length. It grows larger by repeatedly shedding skin.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Long considered a mythical Pokémon until recently, when a small colony was found living underwater.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is called the \\\"Mirage Pokémon\\\" because so few have seen it. Its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is called the \\\"Mirage Pokémon\\\" because so few have seen it. Its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is called the \\\"Mirage Pokémon\\\" because so few have seen it. Its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is born large to start with. It repeatedly sheds its skin as it steadily grows longer.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon is full of life energy. It continually sheds its skin and grows steadily larger.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is called the \\\"Mirage Pokémon\\\" because so few have seen it. Its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is called the \\\"Mirage Pokémon\\\" because so few have seen it. Its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is called the \\\"Mirage Pokémon\\\" because so few have seen it. Its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is called the \\\"Mirage Pokémon\\\" because so few have seen it. Its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is called the \\\"Mirage Pokémon\\\" because so few have seen it. Its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This Pokémon is full of life energy. It continually sheds its skin and grows steadily larger.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Dratini continually molts and sloughs off its old skin. It does so because the life energy within its body steadily builds to reach uncontrollable levels.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Dratini continually molts and sloughs off its old skin. It does so because the life energy within its body steadily builds to reach uncontrollable levels.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It grows by molting repeatedly. Boots made from the tanned cast-off skin are a super luxury item.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"After a 10-hour struggle, a fisherman was able to pull one up and confirm its existence.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's still weak, so it lurks on the floor of bodies of water, eating whatever food sinks down and living a quiet life.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It sheds its skin—almost on a daily basis—and grows larger. Its skin is soft just after it's been shed.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Long thought to be a myth, this Pokémon's existence was only recently confirmed by a fisherman who caught one.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Long thought to be a myth, this Pokémon's existence was only recently confirmed by a fisherman who caught one.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Dratini dwells near bodies of rapidly flowing water, such as the plunge pools of waterfalls. As it grows, Dratini will shed its skin many times.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon was long considered to be no more than a myth. The small lump on a Dratini's forehead is actually a horn that's still coming in.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is called the Mirage Pokémon because so few have seen it, but its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is called the Mirage Pokémon because so few have seen it, but its shed skin has been found.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It sheds many layers of skin as it grows larger. During this process, it is protected by a rapid waterfall.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is born large to start with. It repeatedly sheds its skin as it steadily grows longer.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon is full of life energy. It continually sheds its skin and grows steadily larger.\"\n    }\n  ],\n  \"148\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"They say that if it emits an aura from its whole body, the weather will begin to change instantly.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"A mystical Pokémon that exudes a gentle aura. Has the ability to change climate conditions.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"A mystical Pokémon that exudes a gentle aura. Has the ability to change climate conditions.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"According to a witness, its body was surrounded by a strange aura that gave it a mystical look.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Lives in large bodies of water like the sea and lakes. It is said to have the power to change the weather and fly.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"They say that if it emits an aura from its whole body, the weather will begin to change instantly.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its crystalline orbs appear to give this Pokémon the power to freely control the weather.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is called the divine Pokémon. When its entire body brightens slightly, the weather changes.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"They say that if it emits an aura from its whole body, the weather will begin to change instantly.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Dragonair stores an enormous amount of energy inside its body. It is said to alter weather conditions in its vicinity by discharging energy from the crystals on its neck and tail.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Dragonair stores an enormous amount of energy inside its body. It is said to alter weather conditions in its vicinity by discharging energy from the crystals on its neck and tail.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Dragonair stores an enormous amount of energy inside its body. It is said to alter the weather around it by loosing energy from the crystals on its neck and tail.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is said to live in seas and lakes. Even though it has no wings, it has been seen flying occasionally.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A mystical Pokémon that exudes a gentle aura. It is said to have the ability to change the weather.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"If its body takes on an aura, the weather changes instantly. It is said to live in seas and lakes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"If its body takes on an aura, the weather changes instantly. It is said to live in seas and lakes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If its body takes on an aura, the weather changes instantly. It is said to live in seas and lakes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They say that if it emits an aura from its whole body, the weather will begin to change instantly.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its crystalline orbs appear to give this Pokémon the power to freely control the weather.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If its body takes on an aura, the weather changes instantly. It is said to live in seas and lakes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If its body takes on an aura, the weather changes instantly. It is said to live in seas and lakes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If its body takes on an aura, the weather changes instantly. It is said to live in seas and lakes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If its body takes on an aura, the weather changes instantly. It is said to live in seas and lakes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its crystalline orbs appear to give this Pokémon the power to freely control the weather.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A mystical Pokémon that exudes a gentle aura. It is said to have the ability to change the weather.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Dragonair stores an enormous amount of energy inside its body. It is said to alter weather conditions in its vicinity by discharging energy from the crystals on its neck and tail.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Dragonair stores an enormous amount of energy inside its body. It is said to alter weather conditions in its vicinity by discharging energy from the crystals on its neck and tail.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It has long been thought that its crystalline orbs are imbued with the power to control the weather.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"From time immemorial, it has been venerated by agricultural peoples as an entity able to control the weather.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Lakes where Dragonair live are filled with offerings from people, because they believe this Pokémon is able to control the weather.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Some say that if you see it at the start of the year, flying through the sky and twisting its body, you'll be healthy all year long.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"According to a witness, its body was surrounded by a strange aura that gave it a mystical look.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"According to a witness, its body was surrounded by a strange aura that gave it a mystical look.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon lives in pristine oceans and lakes. It can control the weather, and it uses this power to fly into the sky, riding on the wind.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon gathers power in the orbs on its tail and controls the weather. When enshrouded by an aura, Dragonair has a mystical appearance.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"If its body takes on an aura, the weather changes instantly. It is said to live in seas and lakes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"If its body takes on an aura, the weather changes instantly. It is said to live in seas and lakes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They say that if it emits an aura from its whole body, the weather will begin to change instantly.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is called the divine Pokémon. When its entire body brightens slightly, the weather changes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its crystalline orbs appear to give this Pokémon the power to freely control the weather.\"\n    }\n  ],\n  \"149\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It can fly in spite of its big and bulky physique. It circles the globe in just 16 hours.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"An extremely rarely seen marine Pokémon. Its intelligence is said to match that of humans.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"An extremely rarely seen marine Pokémon. Its intelligence is said to match that of humans.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"It is said that this Pokémon lives somewhere in the sea and that it flies. However, it is only a rumor.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"Has intelligence on par with people. This \\\"sea guardian\\\" is said to be capable of flying around the globe in about 16 hours.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is said that this Pokémon constantly flies over the immense seas and rescues drowning people.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This marine Pokémon has an impressive build that lets it freely fly over raging seas without trouble.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is said that somewhere in the ocean lies an island where these gather. Only they live there.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is said that this Pokémon constantly flies over the immense seas and rescues drowning people.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Dragonite is capable of circling the globe in just sixteen hours. It is a kindhearted Pokémon that leads lost and foundering ships in a storm to the safety of land.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Dragonite is capable of circling the globe in just sixteen hours. It is a kindhearted Pokémon that leads lost and foundering ships in a storm to the safety of land.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It can circle the globe in just 16 hours. It is a kindhearted Pokémon that leads lost and foundering ships in a storm to the safety of land.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It can fly in spite of its big and bulky physique. It circles the globe in just 16 hours.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Only a very few people ever see this Pokémon. Its intelligence is said to match that of humans.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides crews of shipwrecks to shore.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides crews of shipwrecks to shore.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides crews of shipwrecks to shore.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is said that this Pokémon constantly flies over the immense seas and rescues drowning people.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This marine Pokémon has an impressive build that lets it freely fly over raging seas without trouble.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides crews of shipwrecks to shore.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides crews of shipwrecks to shore.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides crews of shipwrecks to shore.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides crews of shipwrecks to shore.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can fly in spite of its big and bulky physique. It circles the globe in just 16 hours.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides crews of shipwrecks to shore.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Dragonite is capable of circling the globe in just 16 hours. It is a kindhearted Pokémon that leads lost and foundering ships in a storm to the safety of land.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Dragonite is capable of circling the globe in just 16 hours. It is a kindhearted Pokémon that leads lost and foundering ships in a storm to the safety of land.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Pokémon saved a shipwrecked man, taking him to a remote island—a paradise occupied solely by Dragonite.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Incur the wrath of this normally calm Pokémon at your peril, because it will smash everything to smithereens before it's satisfied.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It flies over raging seas as if they were nothing. Observing this, a ship's captain dubbed this Pokémon \\\"the sea incarnate.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"You'll often hear tales of this kindhearted Pokémon rescuing people or Pokémon that are drowning.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It is said that this Pokémon lives somewhere in the sea and that it flies. However, these are only rumors.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It is said that this Pokémon lives somewhere in the sea and that it flies. However, these are only rumors.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's a kindhearted Pokémon. If it spots a drowning person or Pokémon, Dragonite simply must help them.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is known as the Sea Incarnate. Figureheads that resemble Dragonite decorate the bows of many ships.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides wrecked ships to shore.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides wrecked ships to shore.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is said that somewhere in the ocean lies an island where these gather. Only they live there.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can fly in spite of its big and bulky physique. It circles the globe in just 16 hours.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It is said to make its home somewhere in the sea. It guides wrecked ships to shore.\"\n    }\n  ],\n  \"150\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its DNA is almost the same as Mew's. However, its size and disposition are vastly different.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"It was created by a scientist after years of horrific gene splicing and DNA engineering experiments.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"It was created by a scientist after years of horrific gene splicing and DNA engineering experiments.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"Its DNA is almost the same as Mew's. However, its size and disposition are vastly different.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A vicious psychic Pokémon created by genetic engineering. Its cold, glowing eyes strike fear into its enemy.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Because its battle abilities were raised to the ultimate level, it thinks only of defeating its foes.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It usually remains motionless to conserve energy, so that it may unleash its full power in battle.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Said to rest quietly in an undiscovered cave, this {{OBP|Pokémon|species|Pokémon}} was created solely for {{pkmn|battle|battling}}.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Because its battle abilities were raised to the ultimate level, it thinks only of defeating its foes.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Mewtwo is a Pokémon that was created by genetic manipulation. However, even though the scientific power of humans created this Pokémon's body, they failed to endow Mewtwo with a compassionate heart.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Mewtwo is a Pokémon that was created by genetic manipulation. However, even though the scientific power of humans created this Pokémon's body, they failed to endow Mewtwo with a compassionate heart.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that was created by genetic manipulation. However, even though the scientific power of humans made its body, they failed to give it a warm heart.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A Pokémon whose genetic code was repeatedly recombined for research. It turned vicious as a result.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It was created by a scientist after years of horrific gene-splicing and DNA-engineering experiments.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon created by recombining MEW's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon created by recombining MEW's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon created by recombining MEW's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Because its battle abilities were raised to the ultimate level, it thinks only of defeating its foes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It usually remains motionless to conserve energy, so that it may unleash its full power in battle.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon created by recombining Mew's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon created by recombining Mew's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A Pokémon created by recombining Mew's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A Pokémon created by recombining Mew's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It was created by a scientist after years of horrific gene-splicing and DNA-engineering experiments.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A Pokémon created by recombining Mew's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Mewtwo is a Pokémon that was created by genetic manipulation. However, even though the scientific power of humans created this Pokémon's body, they failed to endow Mewtwo with a compassionate heart.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Mewtwo is a Pokémon that was created by genetic manipulation. However, even though the scientific power of humans created this Pokémon's body, they failed to endow Mewtwo with a compassionate heart.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its DNA is almost the same as Mew's. However, its size and disposition are vastly different.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its DNA is almost the same as Mew's. However, its size and disposition are vastly different.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Created from the DNA of Mew, this Pokémon is a dangerous combination of overwhelming power and a savage heart.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The research efforts of a certain scientist ultimately resulted in this Pokémon. Its powers are dedicated to battling.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Mewtwo was created by recombining Mew's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Mewtwo was created by recombining Mew's genes. It's said to have the most savage heart among Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It was created by a scientist after years of horrific gene-splicing and DNA-engineering experiments.\"\n    }\n  ],\n  \"151\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It's very intelligent and can use an incredible variety of moves. Many believe that all other Pokémon are descendants of this one.\"\n    },\n    {\n      \"version_id\": \"Red\",\n      \"flavor_text\": \"So rare that it is still said to be a mirage by many experts. Only a few people have seen it worldwide.\"\n    },\n    {\n      \"version_id\": \"Blue\",\n      \"flavor_text\": \"So rare that it is still said to be a mirage by many experts. Only a few people have seen it worldwide.\"\n    },\n    {\n      \"version_id\": \"Yellow\",\n      \"flavor_text\": \"When viewed through a microscope, this Pokémon's short, fine, delicate hair can be seen.\"\n    },\n    {\n      \"version_id\": \"Stadium\",\n      \"flavor_text\": \"A mythical Pokémon of South America which had been thought extinct. A growing number of people have seen it recently.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Apparently, it appears only to those people who are pure of heart and have a strong desire to see it.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its DNA is said to contain the genetic codes of all Pokémon, so it can use all kinds of techniques.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Because it can learn any move, some people began research to see if it is the ancestor of all Pokémon.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Apparently, it appears only to those people who are pure of heart and have a strong desire to see it.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Mew is said to possess the genetic composition of all Pokémon. It is capable of making itself invisible at will, so it entirely avoids notice even if it approaches people.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Mew is said to possess the genetic composition of all Pokémon. It is capable of making itself invisible at will, so it entirely avoids notice even if it approaches people.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Mew is said to possess the genes of all Pokémon. It is capable of making itself invisible at will, so it entirely avoids notice even if it approaches people.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A Pokémon of South America that was thought to have been extinct. It is very intelligent and learns any move.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"So rare that it is still said to be a mirage by many experts. Only a few people have seen it worldwide.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe MEW to be the ancestor of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe MEW to be the ancestor of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe MEW to be the ancestor of Pokémon.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Apparently, it appears only to those people who are pure of heart and have a strong desire to see it.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its DNA is said to contain the genetic codes of all Pokémon, so it can use all kinds of techniques.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe Mew to be the ancestor of Pokémon.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe Mew to be the ancestor of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe Mew to be the ancestor of Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe Mew to be the ancestor of Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe Mew to be the ancestor of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its DNA is said to contain the genetic codes of all Pokémon, so it can use all kinds of techniques.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Mew is said to possess the genetic composition of all Pokémon. It is capable of making itself invisible at will, so it entirely avoids notice even if it approaches people.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Mew is said to possess the genetic composition of all Pokémon. It is capable of making itself invisible at will, so it entirely avoids notice even if it approaches people.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When viewed through a microscope, this Pokémon's short, fine, delicate hair can be seen.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When viewed through a microscope, this Pokémon's short, fine, delicate hair can be seen.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's very intelligent and can use an incredible variety of moves. Many believe that all other Pokémon are descendants of this one.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This mythical Pokémon is said to be extinct, but sightings of it are still being reported to this day.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe Mew to be the ancestor of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Because it can use all kinds of moves, many scientists believe Mew to be the ancestor of Pokémon.\"\n    }\n  ],\n  \"152\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"A sweet aroma gently wafts from the leaf on its head. It is docile and loves to soak up the sun's rays.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its pleasantly aromatic leaves have the ability to check the humidity and temperature.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It loves to bask in the sunlight. It uses the leaf on its head to seek out warm places.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"A sweet aroma gently wafts from the leaf on its head. It is docile and loves to soak up the sun's rays.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"In battle, Chikorita waves its leaf around to keep the foe at bay. However, a sweet fragrance also wafts from the leaf, becalming the battling Pokémon and creating a cozy, friendly atmosphere all around.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"In battle, Chikorita waves its leaf around to keep the foe at bay. However, a sweet fragrance also wafts from the leaf, becalming the battling Pokémon and creating a cozy, friendly atmosphere all around.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It waves its leaf around to keep foes at bay. However, a sweet fragrance also wafts from the leaf, creating a friendly atmosphere that becalms the battlers.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its pleasantly aromatic leaves have the ability to check the humidity and temperature.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A sweet aroma gently wafts from the leaf on its head. It is docile and loves to soak up the sun's rays.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A sweet aroma gently wafts from the leaf on its head. It is docile and loves to soak up sunrays.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its pleasantly aromatic leaf has the ability to check humidity and temperature.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A sweet aroma gently wafts from the leaf on its head. It is docile and loves to soak up sun rays.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In battle, Chikorita waves its leaf around to keep the foe at bay. However, a sweet fragrance also wafts from the leaf, becalming the battling Pokémon and creating a cozy, friendly atmosphere all around.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In battle, Chikorita waves its leaf around to keep the foe at bay. However, a sweet fragrance also wafts from the leaf, becalming the battling Pokémon and creating a cozy, friendly atmosphere all around.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the air's temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It uses the leaf on its head to determine the air's temperature and humidity. It loves to sunbathe.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It loves to bask in the sunlight. It uses the leaf on its head to seek out warm places.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its pleasantly aromatic leaf has the ability to check the humidity and temperature of the area around it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A sweet aroma gently wafts from the leaf on its head. It is docile and loves to soak up sun rays.\"\n    }\n  ],\n  \"153\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The scent of spices comes from around its neck. Somehow, sniffing it makes you want to fight.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A spicy aroma emanates from around its neck. The aroma acts as a stimulant to restore health.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The scent that wafts from the leaves on its neck causes anyone who smells it to become energetic.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The scent of spices comes from around its neck. Somehow, sniffing it makes you want to fight.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Bayleef's neck is ringed by curled-up leaves. Inside each tubular leaf is a small shoot of a tree. The fragrance of this shoot makes people peppy.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Bayleef's neck is ringed by curled-up leaves. Inside each tubular leaf is a small shoot of a tree. The fragrance of this shoot makes people peppy.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Bayleef's neck is ringed by curled-up leaves. Inside each leaf is a small tree shoot. The fragrance of this shoot makes people peppy.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A spicy aroma emanates from around its neck. The aroma acts as a stimulant to restore health.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The scent of spices comes from around its neck. Somehow, sniffing it makes you want to fight.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The scent of spices comes from around its neck. Somehow, sniffing it makes you want to fight.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A spicy aroma emanates from around its neck. The aroma acts as a stimulant to restore health.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A spicy aroma emanates from around its neck. The aroma acts as a stimulant to restore health.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Bayleef's neck is ringed by curled-up leaves. Inside each tubular leaf is a small shoot of a tree. The fragrance of this shoot makes people peppy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Bayleef's neck is ringed by curled-up leaves. Inside each tubular leaf is a small shoot of a tree. The fragrance of this shoot makes people peppy.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The buds that ring its neck give off a spicy aroma that perks people up.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The spicy scent that wafts from around Bayleef's neck somehow makes those who smell it want to fight.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The scent that wafts from the leaves on its neck causes anyone who smells it to become energetic.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The spicy aroma emanating from around its neck has an energizing effect.\"\n    }\n  ],\n  \"154\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The aroma that rises from its petals contains a substance that calms aggressive feelings.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Meganium's breath has the power to revive dead grass and plants. It can make them healthy again.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Anyone who stands beside it becomes refreshed, just as if they were relaxing in a sunny forest.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The aroma that rises from its petals contains a substance that calms aggressive feelings.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The fragrance of Meganium's flower soothes and calms emotions. In battle, this Pokémon gives off more of its becalming scent to blunt the foe's fighting spirit.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The fragrance of Meganium's flower soothes and calms emotions. In battle, this Pokémon gives off more of its becalming scent to blunt the foe's fighting spirit.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The fragrance of a Meganium's flower soothes and calms emotions. In battle, it gives off more of its becalming scent to blunt the foe's fighting spirit.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Meganium's breath has the power to revive dead grass and plants. It can make them healthy again.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The aroma that rises from its petals contains a substance that calms aggressive feelings.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its breath has the fantastic ability to revive dead plants and flowers.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its breath has the fantastic ability to revive dead plants and flowers.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its breath has the fantastic ability to revive dead plants and flowers.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The aroma that rises from its petals contains a substance that calms aggressive feelings.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Meganium's breath has the power to revive dead grass and plants. It can make them healthy again.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its breath has the fantastic ability to revive dead plants and flowers.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its breath has the fantastic ability to revive dead plants and flowers.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its breath has the fantastic ability to revive dead plants and flowers.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its breath has the fantastic ability to revive dead plants and flowers.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The aroma that rises from its petals contains a substance that calms aggressive feelings.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Meganium's breath has the power to revive dead grass and plants. It can make them healthy again.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The fragrance of Meganium's flower soothes and calms emotions. In battle, this Pokémon gives off more of its becalming scent to blunt the foe's fighting spirit.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The fragrance of Meganium's flower soothes and calms emotions. In battle, this Pokémon gives off more of its becalming scent to blunt the foe's fighting spirit.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its breath has the fantastic ability to revive dead plants and flowers.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its breath has the fantastic ability to revive dead plants and flowers.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Anyone who stands beside it becomes refreshed, just as if they were soaking in the soothing atmosphere of a forest.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Meganium's breath holds within it the power to revive grasses and plants that have withered.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The aroma that rises from its petals contains a substance that calms aggressive feelings.\"\n    }\n  ],\n  \"155\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It usually stays hunched over. If it is angry or surprised, it shoots flames out of its back.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is timid, and always curls itself up in a ball. If attacked, it flares up its back for protection.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It usually stays hunched over. If it is angry or surprised, it shoots flames out of its back.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The fire that spouts from its back burns hottest when it is angry. The flaring flames intimidate foes.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is timid, and always curls itself up in a ball. If attacked, it flares up its back for protection.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Cyndaquil protects itself by flaring up the flames on its back. The flames are vigorous if the Pokémon is angry. However, if it is tired, the flames splutter fitfully with incomplete combustion.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Cyndaquil protects itself by flaring up the flames on its back. The flames are vigorous if the Pokémon is angry. However, if it is tired, the flames splutter fitfully with incomplete combustion.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It flares flames from its back to protect itself. The fire burns vigorously if the Pokémon is angry. When it is tired, it sputters with incomplete combustion.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It usually stays hunched over. If it is angry or surprised, it shoots flames out of its back.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is timid and always curls itself up in a ball. If attacked, it flares up its back for protection.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is timid, and always curls itself up in a ball. If attacked, it flares up its back for protection.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It usually stays hunched over. If it is angry or surprised, it shoots flames out of its back.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is timid and always curls itself up in a ball. If attacked, it flares up its back for protection.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Cyndaquil protects itself by flaring up the flames on its back. The flames are vigorous if the Pokémon is angry. However, if it is tired, the flames splutter fitfully with incomplete combustion.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Cyndaquil protects itself by flaring up the flames on its back. The flames are vigorous if the Pokémon is angry. However, if it is tired, the flames splutter fitfully with incomplete combustion.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has a timid nature. If it is startled, the flames on its back burn more vigorously.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Hails from the Johto region. Though usually curled into a ball due to its timid disposition, it harbors tremendous firepower.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It usually stays hunched over. If it is angry or surprised, it shoots flames out of its back.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The fire that spouts from its back burns hottest when it is angry. The flaring flames intimidate foes.\"\n    }\n  ],\n  \"156\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Before battle, it turns its back on its opponent to demonstrate how ferociously its fire blazes.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Be careful if it turns its back during battle. It means that it will attack with the fire on its back.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This Pokémon is fully covered by nonflammable fur. It can withstand any kind of fire attack.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Before battle, it turns its back on its opponent to demonstrate how ferociously its fire blazes.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Be careful if it turns its back during battle. It means that it will attack with the fire on its back.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Quilava keeps its foes at bay with the intensity of its flames and gusts of superheated air. This Pokémon applies its outstanding nimbleness to dodge attacks even while scorching the foe with flames.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Quilava keeps its foes at bay with the intensity of its flames and gusts of superheated air. This Pokémon applies its outstanding nimbleness to dodge attacks even while scorching the foe with flames.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It intimidates foes with intense gusts of flames and superheated air. Its quick nimbleness lets it dodge attacks even while scorching an enemy.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Pokémon is fully covered by nonflammable fur. It can withstand any kind of fire attack.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Be careful if it turns its back during battle. It means that it will attack with the fire on its back.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It intimidates foes with the heat of its flames. The fire burns more strongly when it readies to fight.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It intimidates foes with the heat of its flames. The fire burns more strongly when it readies to fight.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It intimidates foes with the heat of its flames. The fire burns more strongly when it readies to fight.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Be careful if it turns its back during battle. It means that it will attack with the fire on its back.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon is fully covered by nonflammable fur. It can withstand any kind of fire attack.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It intimidates foes with the heat of its flames. The fire burns more strongly when it readies to fight.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It intimidates foes with the heat of its flames. The fire burns more strongly when it readies to fight.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It intimidates foes with the heat of its flames. The fire burns more strongly when it readies to fight.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It intimidates foes with the heat of its flames. The fire burns more strongly when it readies to fight.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Before battle, it turns its back on its opponent to demonstrate how ferociously its fire blazes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Be careful if it turns its back during battle. It means that it will attack with the fire on its back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Quilava keeps its foes at bay with the intensity of its flames and gusts of superheated air. This Pokémon applies its outstanding nimbleness to dodge attacks even while scorching the foe with flames.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Quilava keeps its foes at bay with the intensity of its flames and gusts of superheated air. This Pokémon applies its outstanding nimbleness to dodge attacks even while scorching the foe with flames.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It intimidates foes with the heat of its flames. The fire burns stronger as it prepares to fight.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It intimidates foes with the heat of its flames. The fire burns stronger as it prepares to fight.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This creature's fur is most mysterious—it is wholly impervious to the burning touch of flame. Should Quilava turn its back to you, take heed! Such a posture indicates a forthcoming attack.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Before battle, it turns its back on its opponent to demonstrate how ferociously its fire blazes.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The fur covering this Pokémon's body never burns, no matter what. It can shrug off any kind of fire attack.\"\n    }\n  ],\n  \"157\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has a secret, devastating move. It rubs its blazing fur to cause huge explosions.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If its rage peaks, it becomes so hot that anything that touches it will instantly go up in flames.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It has a secret, devastating move. It rubs its blazing fur together to cause huge explosions.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When heat from its body causes the air around it to shimmer, this is a sign that it is ready to battle.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If its rage peaks, it becomes so hot that anything that touches it will instantly go up in flames.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Typhlosion obscures itself behind a shimmering heat haze that it creates using its intensely hot flames. This Pokémon creates blazing explosive blasts that burn everything to cinders.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Typhlosion obscures itself behind a shimmering heat haze that it creates using its intensely hot flames. This Pokémon creates blazing explosive blasts that burn everything to cinders.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It can hide behind a shimmering heat haze that it creates using its intense flames. Typhlosion create blazing explosive blasts that burn everything to cinders.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has a secret, devastating move. It rubs its blazing fur together to cause huge explosions.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If its rage peaks, it becomes so hot that anything that touches it will instantly go up in flames.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It attacks using blasts of fire. It creates heat shimmers with intense fire to hide itself.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It attacks using blasts of fire. It creates heat shimmers with intense fire to hide itself.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It attacks using blasts of fire. It creates heat shimmers with intense fire to hide itself.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If its rage peaks, it becomes so hot that anything that touches it will instantly go up in flames.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has a secret, devastating move. It rubs its blazing fur together to cause huge explosions.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It attacks using blasts of fire. It creates heat shimmers with intense fire to hide itself.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It attacks using blasts of fire. It creates heat shimmers with intense fire to hide itself.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It attacks using blasts of fire. It creates heat shimmers with intense fire to hide itself.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It attacks using blasts of fire. It creates heat shimmers with intense fire to hide itself.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If its rage peaks, it becomes so hot that anything that touches it will instantly go up in flames.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a secret, devastating move. It rubs its blazing fur together to cause huge explosions.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Typhlosion obscures itself behind a shimmering heat haze that it creates using its intensely hot flames. This Pokémon creates blazing explosive blasts that burn everything to cinders.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Typhlosion obscures itself behind a shimmering heat haze that it creates using its intensely hot flames. This Pokémon creates blazing explosive blasts that burn everything to cinders.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It attacks using blasts of fire. It creates heat shimmers with intense fire to hide itself.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It attacks using blasts of fire. It creates heat shimmers with intense fire to hide itself.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Said to purify lost, forsaken souls with its flames and guide them to the afterlife. I believe its form has been influenced by the energy of the sacred mountain towering at Hisui's center.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has a secret, devastating move. It rubs its blazing fur to cause huge explosions.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If its rage peaks, it becomes so hot that anything that touches it will instantly go up in flames.\"\n    }\n  ],\n  \"158\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its well-developed jaws are powerful and capable of crushing anything. Even its trainer must be careful.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It is small but rough and tough. It won't hesitate to take a bite out of anything that moves.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This rough critter chomps at any moving object it sees. Turning your back on it is not recommended.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its well-developed jaws are powerful and capable of crushing anything. Even its trainer must be careful.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Despite the smallness of its body, Totodile's jaws are very powerful. While the Pokémon may think it is just playfully nipping, its bite has enough power to cause serious injury.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Despite the smallness of its body, Totodile's jaws are very powerful. While the Pokémon may think it is just playfully nipping, its bite has enough power to cause serious injury.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Despite its small body, Totodile's jaws are very powerful. While it may think it is just playfully nipping, its bite has enough strength to cause serious injury.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is small but rough and tough. It won't hesitate to take a bite out of anything that moves.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its well-developed jaws are powerful and capable of crushing anything. Even its Trainer must be careful.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has the habit of biting anything with its developed jaws. Even its Trainer needs to be careful.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has the habit of biting anything with its developed jaws. Even its Trainer needs to be careful.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has the habit of biting anything with its developed jaws. Even its Trainer needs to be careful.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its powerful, well-developed jaws are capable of crushing anything. Even its Trainer must be careful.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is small but rough and tough. It won't hesitate to take a bite out of anything that moves.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has the habit of biting anything with its developed jaws. Even its Trainer needs to be careful.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has the habit of biting anything with its developed jaws. Even its Trainer needs to be careful.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has the habit of biting anything with its developed jaws. Even its Trainer needs to be careful.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has the habit of biting anything with its developed jaws. Even its Trainer needs to be careful.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is small but rough and tough. It won't hesitate to take a bite out of anything that moves.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its powerful, well-developed jaws are capable of crushing anything. Even its Trainer must be careful.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Despite the smallness of its body, Totodile's jaws are very powerful. While the Pokémon may think it is just playfully nipping, its bite has enough power to cause serious injury.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Despite the smallness of its body, Totodile's jaws are very powerful. While the Pokémon may think it is just playfully nipping, its bite has enough power to cause serious injury.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a habit of biting everything with its well-developed jaws. Even its Trainer needs to be careful.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has a habit of biting everything with its well-developed jaws. Even its Trainer needs to be careful.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its powerful, well-developed jaws are capable of crushing anything. Even its Trainer must be careful.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This rough critter chomps at any moving object it sees. Turning your back on it is not recommended.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It is small but rough and tough. It won't hesitate to take a bite out of anything that moves.\"\n    }\n  ],\n  \"159\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If it loses a fang, a new one grows back in its place. There are always 48 fangs lining its mouth.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It opens its huge jaws wide when attacking. If it loses any fangs while biting, they grow back in.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The tips of its fangs are slanted backward. Once those fangs clamp down, the prey has no hope of escape.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If it loses a fang, a new one grows back in its place. There are always 48 fangs lining its mouth.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Once Croconaw has clamped its jaws on its foe, it will absolutely not let go. Because the tips of its fangs are forked back like barbed fishhooks, they become impossible to remove when they have sunk in.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Once Croconaw has clamped its jaws on its foe, it will absolutely not let go. Because the tips of its fangs are forked back like barbed fishhooks, they become impossible to remove when they have sunk in.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Once its jaws clamp down on its foe, it will absolutely not let go. Because the tips of its fangs are forked back like fishhooks, they become irremovably embedded.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It opens its huge jaws wide when attacking. If it loses any fangs while biting, they grow back in.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If it loses a fang, a new one grows back in its place. There are always 48 fangs lining its mouth.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it loses a fang, a new one grows back in its place. There are always 48 fangs lining its mouth.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It opens its huge jaws wide when attacking. If it loses any fangs while biting, they grow back in.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If it loses a fang, a new one grows back in its place. There are always 48 fangs lining its mouth.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Once Croconaw has clamped its jaws on its foe, it will absolutely not let go. Because the tips of its fangs are forked back like barbed fishhooks, they become impossible to remove when they have sunk in.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Once Croconaw has clamped its jaws on its foe, it will absolutely not let go. Because the tips of its fangs are forked back like barbed fishhooks, they become impossible to remove when they have sunk in.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Once it bites down, it won't let go until it loses its fangs. New fangs quickly grow into place.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The tips of its fangs are slanted backward. Once those fangs clamp down, the prey has no hope of escape.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It opens its huge jaws wide to attack. If it loses fangs while biting, they'll just keep on growing back, one after another.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If it loses a fang, a new one grows back in its place. There are always 48 fangs lining its mouth.\"\n    }\n  ],\n  \"160\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When it bites with its massive and powerful jaws, it shakes its head and savagely tears its victim up.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It is hard for it to support its own weight out of water, so it gets down on all fours. But it moves fast.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Although it has a massive body, its powerful hind legs enable it to move quickly, even on the ground.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When it bites with its massive and powerful jaws, it shakes its head and savagely tears its victim up.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Feraligatr intimidates its foes by opening its huge mouth. In battle, it will kick the ground hard with its thick and powerful hind legs to charge at the foe at an incredible speed.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Feraligatr intimidates its foes by opening its huge mouth. In battle, it will kick the ground hard with its thick and powerful hind legs to charge at the foe at an incredible speed.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It opens its huge mouth to intimidate enemies. In battle, it runs using its thick and powerful hind legs to charge the foe with incredible speed.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is hard for it to support its own weight out of water, so it gets down on all fours. But it moves fast.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When it bites with its massive and powerful jaws, it shakes its head and savagely tears up its victim.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it bites with its massive and powerful jaws, it shakes its head and savagely tears its victim up.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is hard for it to support its weight out of water, so it sometimes gets down on all fours. But it moves fast.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it bites with its massive and powerful jaws, it shakes its head and savagely tears its victim up.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Feraligatr intimidates its foes by opening its huge mouth. In battle, it will kick the ground hard with its thick and powerful hind legs to charge at the foe at an incredible speed.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Feraligatr intimidates its foes by opening its huge mouth. In battle, it will kick the ground hard with its thick and powerful hind legs to charge at the foe at an incredible speed.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it bites with its massive and powerful jaws, it shakes its head and savagely tears its victim up.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Although it has a massive body, its powerful hind legs enable it to move quickly, even on land.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It usually moves slowly, but it goes at blinding speed when it attacks and bites prey.\"\n    }\n  ],\n  \"161\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"A very cautious Pokémon, it raises itself up using its tail to get a better view of its surroundings.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It stands on its tail so it can see a long way. If it spots an enemy, it cries loudly to warn its kind.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When acting as a lookout, it warns others of danger by screeching and hitting the ground with its tail.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"A very cautious Pokémon, it raises itself up using its tail to get a better view of its surroundings.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"When Sentret sleeps, it does so while another stands guard. The sentry wakes the others at the first sign of danger. When this Pokémon becomes separated from its pack, it becomes incapable of sleep due to fear.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When Sentret sleeps, it does so while another stands guard. The sentry wakes the others at the first sign of danger. When this Pokémon becomes separated from its pack, it becomes incapable of sleep due to fear.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"They take turns standing guard when it is time to sleep. The sentry awakens the others if it senses danger. If one becomes separated, it turns sleepless with fear.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It stands on its tail so it can see a long way. If it spots an enemy, it cries loudly to warn its kind.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A very cautious Pokémon, it raises itself up using its tail to get a better view of its surroundings.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a very nervous nature. It stands up high on its tail so it can scan wide areas.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has a very nervous nature. It stands up high on its tail so it can scan wide areas.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has a very nervous nature. It stands up high on its tail so it can scan wide areas.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A very cautious Pokémon, it raises itself up using its tail to get a better view of its surroundings.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It stands on its tail so it can see a long way. If it spots an enemy, it cries loudly to warn its kind.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has a very nervous nature. It stands up high on its tail so it can scan wide areas.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has a very nervous nature. It stands up high on its tail so it can scan wide areas.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has a very nervous nature. It stands up high on its tail so it can scan wide areas.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has a very nervous nature. It stands up high on its tail so it can scan wide areas.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When acting as a lookout, it warns others of danger by screeching and hitting the ground with its tail.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It stands on its tail so it can see a long way. If it spots an enemy, it cries loudly to warn its kind.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When Sentret sleeps, it does so while another stands guard. The sentry wakes the others at the first sign of danger. When this Pokémon becomes separated from its pack, it becomes incapable of sleep due to fear.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Sentret sleeps, it does so while another stands guard. The sentry wakes the others at the first sign of danger. When this Pokémon becomes separated from its pack, it becomes incapable of sleep due to fear.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a very nervous nature. It stands up high on its tail so it can scan wide areas.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has a very nervous nature. It stands up high on its tail so it can scan wide areas.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is extremely cautious. Its supple tail is well muscled and firm to the touch.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If it encounters a foe, it will stand up on its tail, making itself look bigger than usual to intimidate them.\"\n    }\n  ],\n  \"162\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It makes a nest to suit its long and skinny body. The nest is impossible for other Pokémon to enter.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"There is no telling where the tail begins. Despite its short legs, it is quick at hunting Rattata.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It lives in narrow burrows that fit its slim body. The deeper the nests go, the more maze-like they become.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It makes a nest to suit its long and skinny body. The nest is impossible for other Pokémon to enter.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Furret has a very slim build. When under attack, it can slickly squirm through narrow spaces and get away. In spite of its short limbs, this Pokémon is very nimble and fleet.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Furret has a very slim build. When under attack, it can slickly squirm through narrow spaces and get away. In spite of its short limbs, this Pokémon is very nimble and fleet.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Furret has a very slim build. When under attack, it can squirm through narrow spaces and get away. In spite of its short limbs, it is very nimble and fleet.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"There is no telling where its tail begins. Despite its short legs, it is quick at hunting Rattata.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It makes a nest to suit its long and skinny body. The nest is impossible for other Pokémon to enter.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It makes a nest to suit its long and skinny body. The nest is impossible for other Pokémon to enter.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"There is no telling where the tail begins. Despite its short legs, it is quick and likes to chase Rattata.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It makes a nest to suit its long and skinny body. The nest is impossible for other Pokémon to enter.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Furret has a very slim build. When under attack, it can slickly squirm through narrow spaces and get away. In spite of its short limbs, this Pokémon is very nimble and fleet.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Furret has a very slim build. When under attack, it can slickly squirm through narrow spaces and get away. In spite of its short limbs, this Pokémon is very nimble and fleet.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The mother puts its offspring to sleep by curling up around them. It corners foes with speed.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It raises its offspring inside a long, narrow nest. Once they're old enough, it takes them outside the nest to prepare them for independence.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is nimble and has a very flexible body. Even if you get ahold of it, it'll slip right out of your arms.\"\n    }\n  ],\n  \"163\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Hoothoot's internal clock is precise at all times. It tilts its head in a fixed rhythm.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It always stands on one foot. It changes feet so fast, the movement can rarely be seen.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It has a perfect sense of time. Whatever happens, it keeps rhythm by precisely tilting its head in time.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It begins to hoot at the same time every day. Some trainers use them in place of clocks.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It always stands on one foot. It changes feet so fast, the movement can rarely be seen.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Hoothoot has an internal organ that senses and tracks the earth's rotation. Using this special organ, this Pokémon begins hooting at precisely the same time every day.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Hoothoot has an internal organ that senses and tracks the earth's rotation. Using this special organ, this Pokémon begins hooting at precisely the same time every day.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It has an internal organ that senses the earth's rotation. Using this special organ, a Hoothoot begins hooting at precisely the same time every day.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has a perfect sense of time. Whatever happens, it keeps rhythm by precisely tilting its head in time.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It always stands on one foot. It changes feet so fast, the movement can rarely be seen.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It always stands on one foot. Even when attacked, it does not brace itself using both feet.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It switches its standing foot so quickly, it can't be seen. It cries at the same time every day.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It marks time precisely. Some countries consider it to be a wise friend, versed in the world's ways.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It always stands on one foot. It changes feet so fast, the movement can rarely be seen.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has a perfect sense of time. Whatever happens, it keeps rhythm by precisely tilting its head in time.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It marks time precisely. Some countries consider it to be a wise friend, versed in the world's ways.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It marks time precisely. Some countries consider it to be a wise friend, versed in the world's ways.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It marks time precisely. Some countries consider it to be a wise friend, versed in the world's ways.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It marks time precisely. Some countries consider it to be a wise friend, versed in the world's ways.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a perfect sense of time. Whatever happens, it keeps rhythm by precisely tilting its head in time.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It always stands on one foot. It changes feet so fast, the movement can rarely be seen.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Hoothoot has an internal organ that senses and tracks the earth's rotation. Using this special organ, this Pokémon begins hooting at precisely the same time every day.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Hoothoot has an internal organ that senses and tracks the earth's rotation. Using this special organ, this Pokémon begins hooting at precisely the same time every day.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Every day, it tilts its head in the same rhythm. A long time ago, people raised these Pokémon to serve as clocks.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It cries out at the same time every day. A long time ago, people cherished it and considered it a divine messenger sent to tell the time.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It always stands on one foot. It changes feet so fast, the movement can rarely be seen.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It begins to hoot at the same time every day. Some Trainers use them in place of clocks.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It always stands on one foot. Even when attacked, it does not brace itself using both feet.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It switches its standing foot so quickly that the switch can't be seen. It cries at the same time every day.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Hoothoot's internal clock is precise at all times. It tilts its head in a fixed rhythm.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Since it tells time precisely, some countries consider it to be a deity of wisdom, versed in the ways of the world.\"\n    }\n  ],\n  \"164\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its eyes are specially adapted. They concentrate even faint light and enable it to see in the dark.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its eyes are specially adapted. They concentrate even faint light and enable it to see in the dark.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"When it needs to think, it rotates its head 180 degrees to sharpen its intellectual power.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its extremely soft feathers make no sound in flight. It silently sneaks up on prey without being detected.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its eyes are specially adapted. They concentrate even faint light and enable it to see in the dark.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Noctowl never fails at catching prey in darkness. This Pokémon owes its success to its superior vision that allows it to see in minimal light, and to its soft, supple wings that make no sound in flight.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Noctowl never fails at catching prey in darkness. This Pokémon owes its success to its superior vision that allows it to see in minimal light, and to its soft, supple wings that make no sound in flight.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It unfailingly catches prey in darkness. Noctowl owe their success to superior vision that allows them to see in minimal light, and to their supple and silent wings.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When it needs to think, it rotates its head 180 degrees to sharpen its intellectual power.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its eyes are specially adapted. They concentrate even faint light and enable it to see in the dark.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its eyes are special. They can pick out objects as long as there is the tiniest amount of light.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"If it flips its head upside down, it's a sign that it is engaged in very complex thinking.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its eyes are specially developed to enable it to see clearly even in murky darkness and minimal light.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its eyes are specially adapted. They concentrate even faint light and enable it to see in the dark.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it needs to think, it rotates its head 180 degrees to sharpen its intellectual power.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its eyes are specially developed to enable it to see clearly even in murky darkness and minimal light.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its eyes are specially developed to enable it to see clearly even in murky darkness and minimal light.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its eyes are specially developed to enable it to see clearly even in murky darkness and minimal light.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its eyes are specially developed to enable it to see clearly even in murky darkness and minimal light.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its eyes are specially adapted. They concentrate even faint light and enable it to see in the dark.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it needs to think, it rotates its head 180 degrees to sharpen its intellectual power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Noctowl never fails at catching prey in darkness. This Pokémon owes its success to its superior vision that allows it to see in minimal light, and to its soft, supple wings that make no sound in flight.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Noctowl never fails at catching prey in darkness. This Pokémon owes its success to its superior vision that allows it to see in minimal light, and to its soft, supple wings that make no sound in flight.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"With eyes that can see in pitch-darkness, it never lets its prey escape. Some even call it \\\"the emperor of dark nights.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it turns its head entirely upside down, you know it's troubled by something. If you don't leave it be, it will peck you.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its eyes are specially developed to enable it to see clearly even in murky darkness and minimal light.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it needs to think, it rotates its head 180 degrees to sharpen its intellectual power.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its eyes are special. They can pick out objects as long as there is the tiniest amount of light.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"If it flips its head upside down, it's a sign that it is engaged in very complex thinking.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its eyes are specially adapted. They concentrate even faint light and enable it to see in the dark.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its extremely soft wings make no sound in flight. It silently sneaks up on prey without being detected.\"\n    }\n  ],\n  \"165\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is very timid. It will be afraid to move if it is alone. But it will be active if it is in a group.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"When the weather turns cold, lots of Ledyba gather from everywhere to cluster and keep each other warm.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is timid and clusters together with others. The fluid secreted by its feet indicates its location.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is very timid. It will be afraid to move if it is alone. But it will be active if it is in a group.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ledyba secretes an aromatic fluid from where its legs join its body. This fluid is used for communicating with others. This Pokémon conveys its feelings to others by altering the fluid's scent.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Ledyba secretes an aromatic fluid from where its legs join its body. This fluid is used for communicating with others. This Pokémon conveys its feelings to others by altering the fluid's scent.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Ledyba communicate using a fluid that they secrete from where the legs join the body. They are said to convey feelings to others by altering the fluid's scent.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When the weather turns cold, numerous Ledyba gather from everywhere to cluster and keep each other warm.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is very timid. It will be afraid to move if it is alone. But it will be active if it is in a group.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is so timid, it can't move if it isn't with a swarm of others. It conveys its feelings with scent.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is so timid, it can't move if it isn't with a swarm of others. It conveys its feelings with scent.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is so timid, it can't move if it isn't with a swarm of others. It conveys its feelings with scent.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is very timid. It will be afraid to move if it is alone. But it will be active if it is in a group.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When the weather turns cold, lots of Ledyba gather from everywhere to cluster and keep each other warm.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is so timid, it can't move if it isn't with a swarm of others. It conveys its feelings with scent.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is so timid, it can't move if it isn't with a swarm of others. It conveys its feelings with scent.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is so timid, it can't move if it isn't with a swarm of others. It conveys its feelings with scent.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is so timid, it can't move if it isn't with a swarm of others. It conveys its feelings with scent.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When the weather turns cold, lots of Ledyba gather from everywhere to cluster and keep each other warm.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is timid and clusters together with others. The fluid secreted by its feet indicates its location.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ledyba secretes an aromatic fluid from where its legs join its body. This fluid is used for communicating with others. This Pokémon conveys its feelings to others by altering the fluid's scent.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ledyba secretes an aromatic fluid from where its legs join its body. This fluid is used for communicating with others. This Pokémon conveys its feelings to others by altering the fluid's scent.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They are timid and grow uneasy when not in a swarm with others of their kind. The pattern on their backs differs slightly from one to another.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They communicate with one another using bodily fluids that give off odors. When they're angry, their odor smells sour.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Pokémon is very sensitive to cold. In the warmth of Alola, it appears quite lively.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"These very cowardly Pokémon join together and use Reflect to protect their nest.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It's so timid that it can't move unless it's with a swarm. It conveys its feelings through scent.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It's so timid that it can't move unless it's with a swarm. It conveys its feelings through scent.\"\n    }\n  ],\n  \"166\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When the stars flicker in the night sky, it flutters about, scattering a glowing powder.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The star patterns on its back grow larger or smaller depending on the number of stars in the night sky.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"In the daytime when it gets warm, it curls up inside a big leaf and drifts off into a deep slumber.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When the stars flicker in the night sky, it flutters about, scattering a glowing powder.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"It is said that in lands with clean air, where the stars fill the sky, there live Ledian in countless numbers. There is a good reason for this - the Pokémon uses the light of the stars as its energy.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"It is said that in lands with clean air, where the stars fill the sky, there live Ledian in countless numbers. There is a good reason for this - the Pokémon uses the light of the stars as its energy.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is said that in lands with clean air, where the stars fill the sky, there live many Ledian. For good reason, they use the light of the stars as energy.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The star patterns on its back grow larger or smaller depending on the number of stars in the night sky.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When the stars flicker in the night sky, it flutters about, scattering a glowing powder.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It uses starlight as energy. When more stars appear at night, the patterns on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It uses starlight as energy. When more stars appear at night, the patterns on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It uses starlight as energy. When more stars appear at night, the patterns on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When the stars flicker in the night sky, it flutters about, scattering a glowing powder.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The spot patterns on its back grow larger or smaller depending on the number of stars in the night sky.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It uses starlight as energy. When more stars appear at night, the patterns on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It uses starlight as energy. When more stars appear at night, the patterns on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It uses starlight as energy. When more stars appear at night, the patterns on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It uses starlight as energy. When more stars appear at night, the patterns on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When the stars flicker in the night sky, it flutters about, scattering a glowing powder.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The spot patterns on its back grow larger or smaller depending on the number of stars in the night sky.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It is said that in lands with clean air, where the stars fill the sky, there live Ledian in countless numbers. There is a good reason for this—the Pokémon uses the light of the stars as its energy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It is said that in lands with clean air, where the stars fill the sky, there live Ledian in countless numbers. There is a good reason for this—the Pokémon uses the light of the stars as its energy.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"While it's believed that starlight provides it with energy, this Pokémon also loves to eat berries. In the daytime, it curls up in the grass to sleep.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"In battle, it throws punches with all four arms. The power of each individual blow is piddly, so it aims to win by quantity rather than quality.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's said that the patterns on its back are related to the stars in the night sky, but the details of that relationship remain unclear.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It flies through the night sky, sprinkling sparkly dust. According to some, if that dust sticks to you, good things will happen to you.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It uses starlight as energy. When more stars appear at night, the patterns on its back grow larger.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It uses starlight as energy. When more stars appear at night, the patterns on its back grow larger.\"\n    }\n  ],\n  \"167\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"With threads from its mouth, it fashions sturdy webs that won't break even if you set a rock on them.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It lies still in the same pose for days in its web, waiting for its unsuspecting prey to wander close.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It spins a web using fine--but durable--thread. It then waits patiently for prey to be trapped.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If prey becomes ensnared in its nest of spun string, it waits motionlessly until it becomes dark.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It lies still in the same pose for days in its web, waiting for its unsuspecting prey to wander close.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The web spun by Spinarak can be considered its second nervous system. It is said that this Pokémon can determine what kind of prey is touching its web just by the tiny vibrations it feels through the web's strands.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The web spun by Spinarak can be considered its second nervous system. It is said that this Pokémon can determine what kind of prey is touching its web just by the tiny vibrations it feels through the web's strands.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The web it spins can be considered its second nervous system. It is said that a Spinarak determines its prey by the tiny vibrations it feels through the web.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It spins a web using fine--but durable--thread. It then waits patiently for prey to be trapped.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It lies still in the same pose for days in its web, waiting for its unsuspecting prey to wander close.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It sets a trap by spinning a web with thin but strong silk. It waits motionlessly for prey to arrive.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It sets a trap by spinning a web with thin but strong silk. It waits motionlessly for prey to arrive.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It sets a trap by spinning a web with thin but strong silk. It waits motionlessly for prey to arrive.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lies still in the same pose for days in its web, waiting for its unsuspecting prey to wander close.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It spins a web using fine--but durable--thread. It then waits patiently for prey to be trapped.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It sets a trap by spinning a web with thin but strong silk. It waits motionlessly for prey to arrive.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It sets a trap by spinning a web with thin but strong silk. It waits motionlessly for prey to arrive.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It sets a trap by spinning a web with thin but strong silk. It waits motionlessly for prey to arrive.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It sets a trap by spinning a web with thin but strong silk. It waits motionlessly for prey to arrive.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It spins a web using fine--but durable--thread. It then waits patiently for prey to be trapped.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lies still in the same pose for days in its web, waiting for its unsuspecting prey to wander close.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The web spun by Spinarak can be considered its second nervous system. It is said that this Pokémon can determine what kind of prey is touching its web just by the tiny vibrations it feels through the web's strands.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The web spun by Spinarak can be considered its second nervous system. It is said that this Pokémon can determine what kind of prey is touching its web just by the tiny vibrations it feels through the web's strands.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It waits intently until its preferred prey, Cutiefly, gets caught in its web. In fact, it's quite a patient Pokémon.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Some fishermen weave its sturdy thread into nets to catch fish Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"With threads from its mouth, it fashions sturdy webs that won't break even if you set a rock on them.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although the poison from its fangs isn't that strong, it's potent enough to weaken prey that gets caught in its web.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It sets a trap by spinning a web with thin but strong thread. It waits motionlessly for prey to arrive.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It sets a trap by spinning a web with thin but strong thread. It waits motionlessly for prey to arrive.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Even while there are prey ensnared in its nest of spun thread, Spinarak will wait motionlessly until darkness falls.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Some fishers weave its sturdy thread into nets to catch fish Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It spins a web using fine yet durable thread. It then waits patiently for prey to be trapped.\"\n    }\n  ],\n  \"168\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It spins string not only from its rear but also from its mouth. It's hard to tell which end is which.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It spins string not only from its rear but also from its mouth. It is hard to tell which end is which.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A single strand of a special string is endlessly spun out of its rear. The string leads back to its nest.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Rather than making a nest in one specific spot, it wanders in search of food after darkness falls.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It spins string not only from its rear but also from its mouth. It is hard to tell which end is which.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ariados's feet are tipped with tiny hooked claws that enable it to scuttle on ceilings and vertical walls. This Pokémon constricts the foe with thin and strong silk webbing.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Ariados's feet are tipped with tiny hooked claws that enable it to scuttle on ceilings and vertical walls. This Pokémon constricts the foe with thin and strong silk webbing.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its feet are tipped with tiny hooked claws that enable it to scuttle on ceilings and vertical walls. It constricts its foe with thin and strong silk webbing.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A single strand of a special string is endlessly spun out of its rear. The string leads back to its nest.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It spins string not only from its rear but also from its mouth. It is hard to tell which end is which.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It spins string not only from its rear but also from its mouth. It's hard to tell which end is which.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A single strand of a special string is endlessly spun out of its rear. The string leads back to its nest.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It spins string not only from its rear but also from its mouth. It's hard to tell which end is which.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ariados's feet are tipped with tiny hooked claws that enable it to scuttle on ceilings and vertical walls. This Pokémon constricts the foe with thin and strong silk webbing.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ariados's feet are tipped with tiny hooked claws that enable it to scuttle on ceilings and vertical walls. This Pokémon constricts the foe with thin and strong silk webbing.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"There are some areas where people use the string Ariados spins for their own weaving. The resulting cloth is popular for its strength.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It spins thread from both its rear and its mouth. Then it wraps its prey up in thread and sips their bodily fluids at its leisure.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Every night, it wanders around in search of prey, whose movements it restrains by spewing threads before it bites into them with its fangs.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It spews threads from its mouth to catch its prey. When night falls, it leaves its web to go hunt aggressively.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It attaches silk to its prey and sets it free. Later, it tracks the silk to the prey and its friends.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A single strand of a special thread is endlessly spun out of its rear. The thread leads back to its nest.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It wanders in search of food after darkness falls, never nesting in a specific place.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It spins string not only from its rear but also from its mouth. It's hard to tell which end is which.\"\n    }\n  ],\n  \"169\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It flies so silently through the dark on its four wings that it may not be noticed even when nearby.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It flies so silently through the dark on its four wings that it may not be noticed even when nearby.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The development of wings on its legs enables it to fly fast but also makes it tough to stop and rest.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"As a result of its pursuit of faster, yet more silent flight, a new set of wings grew on its hind legs.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It flies so silently through the dark on its four wings that it may not be noticed even when nearby.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"If this Pokémon is flying by fluttering only a pair of wings on either the forelegs or hind legs, it's proof that Crobat has been flying a long distance. It switches the wings it uses if it is tired.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Crobat sneaks up on its intended prey using wings that barely make a sound. This Pokémon rests by hanging on a tree branch with its rear legs that serve as wings.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Over the course of evolution, its hind legs turned into wings. By alternately resting its front and rear wings, it can fly all day without having to stop.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The development of wings on its legs enables it to fly fast but also makes it tough to stop and rest.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It flies so silently through the dark on its four wings that it may not be noticed even when nearby.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Having four wings enables it to fly faster and more quietly. It turns active when the night comes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon that gained vastly enhanced flying performance by having its legs turn into wings.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The transformation of its legs into wings made it better at flying, but more clumsy at walking.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It flies so silently through the dark on its four wings that it may not be noticed even when nearby.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The development of wings on its legs enables it to fly fast but also makes it tough to stop and rest.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The transformation of its legs into wings made it better at flying, but more clumsy at walking.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The transformation of its legs into wings made it better at flying, but more clumsy at walking.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Having four wings allows it to fly more quickly and quietly so it can sneak up on prey without its noticing.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Having four wings allows it to fly more quickly and quietly so it can sneak up on prey without its noticing.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It flies so silently through the dark on its four wings that it may not be noticed even when nearby.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Having four wings allows it to fly more quickly and quietly so it can sneak up on prey without its noticing.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"If this Pokémon is flying by fluttering only a pair of wings on either the forelegs or hind legs, it's proof that Crobat has been flying a long distance. It switches the wings it uses if it is tired.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Crobat sneaks up on its intended prey using wings that barely make a sound. This Pokémon rests by hanging on a tree branch with its rear legs that serve as wings.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Both its legs became wings, and as a result, it can't move well on the ground. All it can do is crawl around.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Silent and swift in its four-winged flight, it bites down on its prey before they realize what's happening. In a heartbeat, it drains their blood.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its fangs are so sharp, if it bites you in the dark and sucks your blood, you won't notice any pain or realize you've been bitten.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It feeds on the blood of living people and Pokémon. If it can't drink any blood for even a short while, it becomes weak and unable to fly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Both of its legs have turned into wings. Without a sound, Crobat flies swiftly toward its prey and sinks its fangs into the nape of its target's neck.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon flaps its four wings skillfully. Crobat can fly through cramped caves without needing to slow down.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Having four wings enables it to fly faster and more quietly. It turns active when the night comes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This Pokémon gained vastly enhanced flying capabilities after its legs became wings.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its hind limbs have become another set of wings. Crobat expertly maneuvers its four wings to dart in exquisite fashion through even the most confined caves without losing any speed.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If it bites you in the dark and sucks your blood, you won't notice immediately-its fangs are so sharp that you won't feel any pain.\"\n    }\n  ],\n  \"170\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It shoots positive and negative electricity between the tips of its two antennae and zaps its enemies.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"On the dark ocean floor, its only means of communication is its constantly flashing lights.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its antennae, which evolved from a fin, have both positive and negative charges flowing through them.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It shoots positive and negative electricity between the tips of its two antennae and zaps its enemies.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Chinchou lets loose positive and negative electrical charges from its two antennas to make its prey faint. This Pokémon flashes its electric lights to exchange signals with others.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Chinchou's two antennas are filled with cells that generate strong electricity. This Pokémon's cells create so much electrical power, it even makes itself tingle slightly.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When it senses danger, it discharges positive and negative electricity from its two antennae. It lives in depths beyond sunlight's reach.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"On the dark ocean floor, its only means of communication is its constantly flashing lights.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It shoots positive and negative electricity between the tips of its two antennae and zaps its enemies.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It discharges positive and negative electricity from its antenna tips to shock its foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It discharges positive and negative electricity from its antenna tips to shock its foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It discharges positive and negative electricity from its antenna tips to shock its foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It shoots positive and negative electricity between the tips of its two antennae and zaps its enemies.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"On the dark ocean floor, its only means of communication is its constantly flashing lights.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It discharges positive and negative electricity from its antenna tips to shock its foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It discharges positive and negative electricity from its antenna tips to shock its foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It discharges positive and negative electricity from its antenna tips to shock its foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It discharges positive and negative electricity from its antenna tips to shock its foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"On the dark ocean floor, its only means of communication is its constantly flashing lights.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It shoots positive and negative electricity between the tips of its two antennae and zaps its enemies.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Chinchou lets loose positive and negative electrical charges from its two antennas to make its prey faint. This Pokémon flashes its electric lights to exchange signals with others.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Chinchou's two antennas are filled with cells that generate strong electricity. This Pokémon's cells create so much electrical power, it even makes itself tingle slightly.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its two antennae were originally fins. It discharges electricity to stun its prey before attacking.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It lives in the depths beyond the reach of sunlight. It flashes lights on its antennae to communicate with others of its kind.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its two antennae glow softly to lure in prey, making it a useful Pokémon for night fishing.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Chinchou blink their shining antennae at one another to claim their respective turf.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its antennae, which evolved from a fin, have both positive and negative charges flowing through them.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its antennae, which evolved from a fin, have both positive and negative charges flowing through them.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"On the dark ocean floor, its only means of communication is its constantly flashing lights.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"On the dark ocean floor, its only means of communication is its constantly flashing lights.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It discharges positive and negative electricity from the tips of its antennae to shock its foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It discharges positive and negative electricity from the tips of its antennae to shock its foes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives in ocean depths beyond the reach of sunlight. It flashes lights on its antennae to communicate with others of its kind.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It shoots positively and negatively charged electricity from the tips of its two antennae and stuns its opponents.\"\n    }\n  ],\n  \"171\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The light it emits is so bright that it can illuminate the sea's surface from a depth of over three miles.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It blinds prey with an intense burst of light, then swallows the immobilized prey in a single gulp.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \" This Pokémon uses the bright part of its body, which changed from a dorsal fin, to lure prey.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The light it emits is so bright that it can illuminate the sea's surface from a depth of over three miles.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Lanturn is nicknamed \\\"the deep-sea star\\\" for its illuminated antenna. This Pokémon produces light by causing a chemical reaction between bacteria and its bodily fluids inside the antenna.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Lanturn is known to emit light. If you peer down into the dark sea from a ship at night, you can sometimes see this Pokémon's light rising from the depths where it swims. It gives the sea an appearance of a starlit night.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The light-emitting orbs on its back are very bright. They are formed from a part of its dorsal fin. This Pokémon illuminates the inky darkness of deep seas.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It blinds prey with an intense burst of light, then swallows the immobilized prey in a single gulp.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The light it emits is so bright that it can illuminate the sea's surface from a depth of over three miles.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"LANTURN's light can shine up from great depths. It is nicknamed \\\"The Deep-Sea Star.\\\"\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"LANTURN's light can shine up from great depths. It is nicknamed \\\"The Deep-Sea Star.\\\"\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"LANTURN's light can shine up from great depths. It is nicknamed \\\"The Deep-Sea Star.\\\"\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The light it emits is so bright that it can illuminate the sea's surface from a depth of over three miles.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It blinds prey with an intense burst of light. With the prey incapacitated, the Pokémon swallows it in a single gulp.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Lanturn's light can shine up from great depths. It is nicknamed \\\"The Deep-Sea Star.\\\"\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Lanturn's light can shine up from great depths. It is nicknamed \\\"The Deep-Sea Star.\\\"\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Lanturn's light can shine up from great depths. It is nicknamed \\\"The Deep-Sea Star.\\\"\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Lanturn's light can shine up from great depths. It is nicknamed \\\"The Deep-Sea Star.\\\"\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Lanturn's light can shine up from great depths. It is nicknamed \\\"The Deep-Sea Star.\\\"\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It blinds prey with an intense burst of light. With the prey incapacitated, the Pokémon swallows it in a single gulp.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Lanturn is nicknamed \\\"the deep-sea star\\\" for its illuminated antenna. This Pokémon produces light by causing a chemical reaction between bacteria and its bodily fluids inside the antenna.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Lanturn is known to emit light. If you peer down into the dark sea from a ship at night, you can sometimes see this Pokémon's light rising from the depths where it swims. It gives the sea an appearance of a starlit night.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Should you peer into the ocean at night and see a light shining like the stars, that is Lanturn.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon flashes a bright light that blinds its prey. This creates an opening for it to deliver an electrical attack.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When the bacteria living inside its antennae absorb Lanturn's bodily fluids, a strong luminescent effect is produced.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It lives far down in the depths of the ocean. It blinds its prey with light, using the moment they're dazzled to swallow them whole.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The light it emits is so bright that it can illuminate the sea's surface from a depth of over three miles.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The light it emits is so bright that it can illuminate the sea's surface from a depth of over three miles\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon flashes a bright light that blinds its prey. This creates an opening for it to deliver an electrical attack.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon flashes a bright light that blinds its prey. This creates an opening for it to deliver an electrical attack.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Lanturn's light can shine up from great depths. It is nicknamed the Deep-Sea Star.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Lanturn's light can shine up from great depths. It is nicknamed the Deep-Sea Star.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Portions of its dorsal fin mutated, becoming the parts that glow brightly to lure prey.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It blinds prey with an intense burst of light. With the prey incapacitated, the Pokémon swallows it in a single gulp.\"\n    }\n  ],\n  \"172\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has electric sacs in its cheeks. When they're fully charged, Pichu plays very energetically.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is not yet skilled at storing electricity. It may send out a jolt if amused or startled.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Despite its small size, it can zap even adult humans. However, if it does so, it also surprises itself.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is unskilled at storing electric power. Any kind of shock causes it to discharge energy spontaneously.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is not yet skilled at storing electricity. It may send out a jolt if amused or startled.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Pichu charges itself with electricity more easily on days with thunderclouds or when the air is very dry. You can hear the crackling of static electricity coming off this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When Pichu plays with others, it may short out electricity with another Pichu, creating a shower of sparks. In that event, this Pokémon will begin crying, startled by the flash of sparks.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is still inept at retaining electricity. When it is startled, it discharges power accidentally. It gets better at holding power as it grows older.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Despite its small size, it can zap even adult humans. However, if it does so, it also surprises itself.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is not yet skilled at storing electricity. It may send out a jolt if amused or startled.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The electric pouches on its cheeks are still small. They cannot store much electricity yet.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It plays with others by touching tails and setting off sparks. This appears to be a test of courage.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The electric sacs in its cheeks are small. If even a little electricity leaks, it becomes shocked.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is not yet skilled at storing electricity. It may send out a jolt if amused or startled.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Despite its small size, it can zap even adult humans. However, if it does so, it also surprises itself.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The electric sacs in its cheeks are small. If even a little electricity leaks, it becomes shocked.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The electric sacs in its cheeks are small. If even a little electricity leaks, it becomes shocked.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The electric sacs in its cheeks are small. If even a little electricity leaks, it becomes shocked.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The electric sacs in its cheeks are small. If even a little electricity leaks, it becomes shocked.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It plays with others by touching tails and setting off sparks. This appears to be a test of courage.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is not yet skilled at storing electricity. It may send out a jolt if amused or startled.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Pichu charges itself with electricity more easily on days with thunderclouds or when the air is very dry. You can hear the crackling of static electricity coming off this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Pichu plays with others, it may short out electricity with another Pichu, creating a shower of sparks. In that event, this Pokémon will begin crying, startled by the flash of sparks.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It is not yet skilled at controlling electricity. If you take your eyes off it, it may shock itself.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Despite this Pokémon's cute appearance, those who want to live with one should prepare to be on the receiving end of its electric jolts.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It still can't use electricity well. When it's surprised or excited, it discharges electricity unintentionally.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It has electric sacs in its cheeks. When they're fully charged, Pichu plays very energetically.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Despite its small size, it can zap even adult humans. However, if it does so, it also surprises itself.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The electric sacs in its cheeks are small. If even a little electricity leaks, it becomes shocked.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The electric sacs on its cheeks are still small. They cannot store much electricity yet.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It plays with others by touching tails and setting off sparks. This appears to be a test of courage.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Pichu stores electricity in the sacs on its cheeks but discharges it inadvertently when agitated or excited. Being yet immature, the Pokémon's handling of electricity is rather inept.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is unskilled at storing electric power. Any kind of shock causes it to discharge energy spontaneously.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Despite this Pokémon's cute appearance, those who want to live with one should prepare to be on the receiving end of its electric jolts.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It is not yet skilled at storing electricity. It may send out a jolt if amused or startled.\"\n    }\n  ],\n  \"173\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Since it is often seen when shooting stars fill the night skies, it's said to come here by riding on a star.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Because of its unusual, star-like silhouette, people believe that it came here on a meteor.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"When numerous meteors illuminate the night sky, sightings of Cleffa strangely increase.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If the impact site of a meteorite is found, this Pokémon is certain to be within the immediate area.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Because of its unusual, star-like silhouette, people believe that it came here on a meteor.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"On nights with many shooting stars, Cleffa can be seen dancing in a ring. They dance through the night and stop only at the break of day, when these Pokémon quench their thirst with the morning dew.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"On nights with many shooting stars, Cleffa can be seen dancing in a ring. They dance through the night and stop only at the break of day, when these Pokémon quench their thirst with the morning dew.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"On nights with many shooting stars, Cleffa can be seen dancing in a ring. They dance until daybreak, when they quench their thirst with the morning dew.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When numerous meteors illuminate the night sky, sightings of Cleffa strangely increase.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Because of its unusual, starlike silhouette, people believe that it came here on a meteor.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its silhouette is like a star. It is believed to arrive riding on shooting stars.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Many appear when the night skies are filled with shooting stars. They disappear with sunrise.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is often seen when shooting stars fill the night skies. It's said to arrive riding on a shooting star.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Because of its unusual, starlike silhouette, people believe that it came here on a meteor.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When numerous meteors illuminate the night sky, sightings of Cleffa strangely increase.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is often seen when shooting stars fill the night skies. It's said to arrive riding on a shooting star.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is often seen when shooting stars fill the night skies. It's said to arrive riding on a shooting star.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"According to local rumors, Cleffa are often seen in places where shooting stars have fallen.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"According to local rumors, Cleffa are often seen in places where shooting stars have fallen.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Because of its unusual, starlike silhouette, people believe that it came here on a meteor.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Many appear when the night skies are filled with shooting stars. They disappear with sunrise.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"On nights with many shooting stars, Cleffa can be seen dancing in a ring. They dance through the night and stop only at the break of day, when these Pokémon quench their thirst with the morning dew.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"On nights with many shooting stars, Cleffa can be seen dancing in a ring. They dance through the night and stop only at the break of day, when these Pokémon quench their thirst with the morning dew.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"On late nights illuminated by shooting stars, it gazes intently skyward, as if thinking of its home.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Because of its silhouette, it's believed to be a star reborn. For some reason, it loves Minior.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"On nights with many shooting stars, they gather in packs and dance in circles. If you should see them, something good will happen!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Said to have ridden here on a shooting star, Cleffa seem to appear in places where meteorites have struck in the past.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"According to local rumors, Cleffa are often seen in places where shooting stars have fallen.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Because of its unusual, starlike silhouette, people believe that it came here on a meteor.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its silhouette is like a star. It is believed to arrive riding on shooting stars.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Many appear when the night skies are filled with shooting stars. They disappear with sunrise.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"In silhouette, they resemble twinkling starlight. When shooting stars rain from the night sky, Cleffa gather in numbers and dance as though they are indeed incarnations of the stars.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"On late nights illuminated by shooting stars, it gazes intently skyward, as if thinking of its home.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Since it is often seen when shooting stars fill the night skies, it's said to come here by riding on a star.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"According to local rumors, Cleffa are often seen in places where shooting stars have fallen.\"\n    }\n  ],\n  \"174\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Igglybuff loves to sing. Its marshmallow-like body gives off a faint sweet smell.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has a very soft body. If it starts to roll, it will bounce all over and be impossible to stop.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its extremely flexible and elastic body makes it bounce continuously--anytime, anywhere.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Instead of walking with its short legs, it moves around by bouncing on its soft, tender body.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has a very soft body. If it starts to roll, it will bounce all over and be impossible to stop.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Igglybuff's vocal chords are not sufficiently developed. It would hurt its throat if it were to sing too much. This Pokémon gargles with freshwater from a clean stream.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Igglybuff has a soft and plushy body that feels very much like a marshmallow. From this body wafts a gently sweet fragrance that soothes and calms the emotions of its foes.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its soft and pliable body is very bouncy. When it sings continuously with all its might, its body steadily turns a deepening pink color.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its extremely flexible and elastic body makes it bounce continuously--anytime, anywhere.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has a very soft body. If it starts to roll, it will bounce all over and be impossible to stop.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a soft and bouncy body. Once it starts bouncing, it becomes impossible to stop.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has a soft and bouncy body. Once it starts bouncing, it becomes impossible to stop.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has a soft and bouncy body. Once it starts bouncing, it becomes impossible to stop.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has a very soft body. If it starts to roll, it will bounce all over and be impossible to stop.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its extremely flexible and elastic body makes it bounce continuously--anytime, anywhere.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has a soft and bouncy body. Once it starts bouncing, it becomes impossible to stop.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has a soft and bouncy body. Once it starts bouncing, it becomes impossible to stop.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its body has a faintly sweet scent and is bouncy and soft. If it bounces even once, it cannot stop.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its body has a faintly sweet scent and is bouncy and soft. If it bounces even once, it cannot stop.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Instead of walking with its short legs, it moves around by bouncing on its soft, tender body.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a very soft body. If it starts to roll, it will bounce all over and be impossible to stop.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Igglybuff's vocal cords are not sufficiently developed. It would hurt its throat if it were to sing too much. This Pokémon gargles with freshwater from a clean stream.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Igglybuff has a soft and plushy body that feels very much like a marshmallow. From this body wafts a gently sweet fragrance that soothes and calms the emotions of its foes.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It likes to sing but is not yet good at it. With praise and encouragement, it will get better little by little.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It moves by bouncing along. As it moves a lot, it sweats, and its body gives off a sweet aroma.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's always practicing its singing because it wants to improve. Even when it's asleep, it keeps singing in its dreams!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Left to its own devices, it will constantly practice singing. You should make it take a break so it doesn't hurt its throat.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Igglybuff loves to sing. Its marshmallow-like body gives off a faint sweet smell.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Taking advantage of the softness of its body, Igglybuff moves as if bouncing. Its body turns a deep pink when its temperature rises.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a soft and bouncy body. Once it starts bouncing, it becomes impossible to stop.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has a soft and bouncy body. Once it starts bouncing, it becomes impossible to stop.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its body has a faintly sweet scent and is bouncy and soft. If it bounces even once, it cannot stop.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It likes to sing but is not yet good at it. With praise and encouragement, it will get better little by little.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It's always practicing its singing because it wants to improve. Even when it's asleep, it keeps singing in its dreams!\"\n    }\n  ],\n  \"175\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The shell seems to be filled with joy. It is said that it will share good luck when treated kindly.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A proverb claims that happiness will come to anyone who can make a sleeping Togepi stand up.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is considered to be a symbol of good luck. Its shell is said to be filled with happiness.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The shell seems to be filled with joy. It is said that it will share good luck when treated kindly.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"As its energy, Togepi uses the positive emotions of compassion and pleasure exuded by people and Pokémon. This Pokémon stores up feelings of happiness inside its shell, then shares them with others.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"As its energy, Togepi uses the positive emotions of compassion and pleasure exuded by people and Pokémon. This Pokémon stores up feelings of happiness inside its shell, then shares them with others.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"As its energy, it uses the feelings of compassion and pleasure exuded by people and Pokémon. It stores up happy feelings in its shell, then shares them out.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A proverb claims that happiness will come to anyone who can make a sleeping Togepi stand up.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The shell seems to be filled with joy. It is said that it will share good luck when treated kindly.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its shell is said to be stuffed with happiness that it shares with kindhearted people.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its shell is said to be stuffed with happiness that it shares with kindhearted people.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It transforms the kindness and joy of others into happiness, which it stores in its shell.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The shell seems to be filled with joy. It is said that it will share good luck when treated kindly.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A proverb claims that happiness will come to anyone who can make a sleeping Togepi stand up.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It transforms the kindness and joy of others into happiness, which it stores in its shell.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It transforms the kindness and joy of others into happiness, which it stores in its shell.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It transforms the kindness and joy of others into happiness, which it stores in its shell.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It transforms the kindness and joy of others into happiness, which it stores in its shell.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The shell seems to be filled with joy. It is said that it will share good luck when treated kindly.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A proverb claims that happiness will come to anyone who can make a sleeping Togepi stand up.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"As its energy, Togepi uses the positive emotions of compassion and pleasure exuded by people and Pokémon. This Pokémon stores up feelings of happiness inside its shell, then shares them with others.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"As its energy, Togepi uses the positive emotions of compassion and pleasure exuded by people and Pokémon. This Pokémon stores up feelings of happiness inside its shell, then shares them with others.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The shell seems to be filled with joy. It is said that it will share good luck when treated kindly.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It is considered to be a symbol of good luck. Its shell is said to be filled with happiness.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its shell is said to be stuffed with happiness that it shares with kindhearted people.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its shell is said to be stuffed with happiness that it shares with kindhearted people.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This ovate creature is frequently mistaken for a moving egg when encountered out in the fields or in the mountains. Its guileless smile soothes the soul.\"\n    }\n  ],\n  \"176\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"They say that it will appear before kindhearted, caring people and shower them with happiness.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It grows dispirited if it is not with kind people. It can float in midair without moving its wings.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Although it does not flap its wings very much, it can stay up in the air as it tags along after its trainer.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"They say that it will appear before kindhearted, caring people and shower them with happiness.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Togetic is said to be a Pokémon that brings good fortune. When the Pokémon spots someone who is pure of heart, it is said to appear and share its happiness with that person.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Togetic is said to be a Pokémon that brings good fortune. When the Pokémon spots someone who is pure of heart, it is said to appear and share its happiness with that person.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is said to be a Pokémon that brings good fortune. When it spots someone who is pure of heart, a Togetic appears and shares its happiness with that person.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It grows dispirited if it is not with kind people. It can float in midair without moving its wings.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"They say that it will appear before kindhearted, caring people and shower them with happiness.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said to appear in front of kindly people to scatter a glowing down called \\\"joy dust.\\\"\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said to appear in front of kindly people to scatter a glowing down called \\\"joy dust.\\\"\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"To share its happiness, it flies around the world seeking kind-hearted people.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They say that it will appear before kindhearted, caring people and shower them with happiness.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It grows dispirited if it is not with kind people. It can float in midair without moving its wings.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"To share its happiness, it flies around the world seeking kind-hearted people.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"To share its happiness, it flies around the world seeking kind-hearted people.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"To share its happiness, it flies around the world seeking kind-hearted people.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"To share its happiness, it flies around the world seeking kind-hearted people.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It grows dispirited if it is not with kind people. It can float in midair without moving its wings.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They say that it will appear before kindhearted, caring people and shower them with happiness.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Togetic is said to be a Pokémon that brings good fortune. When the Pokémon spots someone who is pure of heart, it is said to appear and share its happiness with that person.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Togetic is said to be a Pokémon that brings good fortune. When the Pokémon spots someone who is pure of heart, it is said to appear and share its happiness with that person.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"They say that it will appear before kindhearted, caring people and shower them with happiness.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It grows dispirited if it is not with kind people. It can float in midair without moving its wings.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said to appear in front of kindly people to scatter a glowing down called joy dust.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said to appear in front of kindly people to scatter a glowing down called joy dust.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"No records exist of Togetic being seen in the wilds. Rumors abound that it evolves under the loving care of a trusted human companion, upon whom the Pokémon then bestows great joy.\"\n    }\n  ],\n  \"177\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Because its wings aren't yet fully grown, it has to hop to get around. It is always staring at something.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It usually forages for food on the ground but may, on rare occasions, hop onto branches to peck at shoots.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is extremely good at climbing tree trunks and likes to eat the new sprouts on the trees.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Because its wings aren't yet fully grown, it has to hop to get around. It is always staring at something.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Natu cannot fly because its wings are not yet fully grown. If your eyes meet with this Pokémon's eyes, it will stare back intently at you. But if you move even slightly, it will hop away to safety.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Natu has a highly developed jumping ability. The Pokémon flaps and leaps onto tree branches that are taller than grown-up people to pick at the tree's new shoots.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It runs up short trees that grow on the savanna to peck at new shoots. A Natu's eyes look as if they are always observing something.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It usually forages for food on the ground but may, on rare occasions, hop onto branches to peck at shoots.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Because its wings aren't yet fully grown, it has to hop to get around. It is always staring at something.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It picks food from cactus plants, deftly avoiding buds and spines. It seems to skip about to move.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It picks food from cactus plants, deftly avoiding buds and spines. It seems to skip about to move.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It picks food from cactus plants, deftly avoiding buds and spines. It seems to skip about to move.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Because its wings aren't yet fully grown, it has to hop to get around. It is always staring at something.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It usually forages for food on the ground but may, on rare occasions, hop onto branches to peck at shoots.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It picks food from cactus plants, deftly avoiding buds and spines. It seems to skip about to move.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It picks food from cactus plants, deftly avoiding buds and spines. It seems to skip about to move.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It picks food from cactus plants, deftly avoiding buds and spines. It seems to skip about to move.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It picks food from cactus plants, deftly avoiding buds and spines. It seems to skip about to move.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Because its wings aren't yet fully grown, it has to hop to get around. It is always staring at something.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It usually forages for food on the ground but may, on rare occasions, hop onto branches to peck at shoots.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Natu cannot fly because its wings are not yet fully grown. If your eyes meet with this Pokémon's eyes, it will stare back intently at you. But if you move even slightly, it will hop away to safety.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Natu has a highly developed jumping ability. The Pokémon flaps and leaps onto tree branches that are taller than grown-up people to pick at the tree's new shoots.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it still can't fly, its jumping power is outstanding. It jumps way up into trees and plucks the buds from the branches.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The look in its eyes gives the impression that it's carefully observing you. If you approach it, Natu will hop away.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is extremely good at climbing tree trunks and likes to eat the new sprouts on the trees.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Because its wings aren't yet fully grown, it has to hop to get around. It is always staring at something.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It picks food from cactus plants, deftly avoiding buds and spines. It seems to skip about to move.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It picks food from cactus plants, deftly avoiding buds and spines. It seems to skip about to move.\"\n    }\n  ],\n  \"178\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"They say that it stays still and quiet because it is seeing both the past and future at the same time.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"In South America, it is said that its right eye sees the future and its left eye views the past.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Once it begins to meditate at sunrise, the entire day will pass before it will move again.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"They say that it stays still and quiet because it is seeing both the past and future at the same time.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Xatu stands rooted and still in one spot all day long. People believe that this Pokémon does so out of fear of the terrible things it has foreseen in the future.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Xatu is known to stand motionless while staring at the sun all day long. Some people revere it as a mystical Pokémon out of their belief that Xatu is in possession of the power to see into the future.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It has the enigmatic power of foreseeing the future. Some people in different lands have long believed that Xatu are emissaries from another world.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"In South America, it is said that its right eye sees the future and its left eye views the past.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"They say that it stays still and quiet because it is seeing both the past and future at the same time.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They say that it stays still and quiet because it is seeing both the past and future at the same time.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"In South America, it is said that its right eye sees the future and its left eye views the past.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Once it begins to meditate at sunrise, the entire day will pass before it will move again.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They say that it stays still and quiet because it is seeing both the past and future at the same time.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Xatu stands rooted and still in one spot all day long. People believe that this Pokémon does so out of fear of the terrible things it has foreseen in the future.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Xatu is known to stand motionless while staring at the sun all day long. Some people revere it as a mystical Pokémon out of their belief that Xatu is in possession of the power to see into the future.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's said that while this Pokémon has the power to predict the future, it's not powerful enough to change the future it sees.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"While it can see the future, it has no desire to change it, which is probably why it remains motionless at all times.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"They say that it stays still and quiet because it is seeing both the past and future at the same time.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This odd Pokémon can see both the past and the future. It eyes the sun's movement all day.\"\n    }\n  ],\n  \"179\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"If static electricity builds in its body, its fleece doubles in volume. Touching it will shock you.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If static electricity builds in its body, its fleece doubles in volume. Touching it will shock you.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its fleece grows continually. In the summer, the fleece is fully shed, but it grows back in a week.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It stores lots of air in its soft fur, allowing it to stay cool in summer and warm in winter.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If static electricity builds in its body, its fleece doubles in volume. Touching it will shock you.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Mareep's fluffy coat of wool rubs together and builds a static charge. The more static electricity is charged, the more brightly the lightbulb at the tip of its tail grows.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Mareep's fluffy coat of wool rubs together and builds a static charge. The more static electricity is charged, the more brightly the lightbulb at the tip of its tail grows.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its fluffy wool rubs together and builds a static charge. The more energy is charged, the more brightly the lightbulb at the tip of its tail glows.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its fleece grows continually. In the summer, the fleece is fully shed, but it grows back in a week.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If static electricity builds in its body, its fleece doubles in volume. Touching it will shock you.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its fluffy coat swells to double when static electricity builds up. Touching it can be shocking.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its fluffy coat swells to double when static electricity builds up. Touching it can be shocking.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its fluffy coat swells to double when static electricity builds up. Touching it can be shocking.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If static electricity builds in its body, its fleece doubles in volume. Touching it will shock you.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its fleece grows continually. In the summer, the fleece is fully shed, but it grows back in a week.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its fluffy coat swells to double when static electricity builds up. Touching it can be shocking.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its fluffy coat swells to double when static electricity builds up. Touching it can be shocking.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When cold weather increases static electricity, its wool doubles in size and the tip of its tail glows slightly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When cold weather increases static electricity, its wool doubles in size and the tip of its tail glows slightly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its fluffy coat swells to double when static electricity builds up. Touching it can be shocking.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It stores lots of air in its soft fur, allowing it to stay cool in summer and warm in winter.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Mareep's fluffy coat of wool rubs together and builds a static charge. The more static electricity is charged, the more brightly the lightbulb at the tip of its tail glows.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Mareep's fluffy coat of wool rubs together and builds a static charge. The more static electricity is charged, the more brightly the lightbulb at the tip of its tail glows.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Clothing made from Mareep's fleece is easily charged with static electricity, so a special process is used on it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Rubbing its fleece generates electricity. You'll want to pet it because it's cute, but if you use your bare hand, you'll get a painful shock.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its fluffy coat doubles in size when static electricity builds up. Touching it can be shocking.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its fluffy coat doubles in size when static electricity builds up. Touching it can be shocking.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If static electricity builds in its body, its fleece doubles in volume. Touching it will shock you.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its fleece grows continually. In the summer, the fleece is fully shed, but it grows back in a week.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its fluffy coat doubles in size when static electricity builds up. Touching it can be shocking.\"\n    }\n  ],\n  \"180\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"As a result of storing too much electricity, it developed patches where even downy wool won't grow.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"As a result of storing too much electricity, it developed patches where even downy wool won't grow.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its fluffy fleece easily stores electricity. Its rubbery hide keeps it from being electrocuted.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Because of its rubbery, electricity-resistant skin, it can store lots of electricity in its fur.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"As a result of storing too much electricity, it developed patches where even downy wool won't grow.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Flaaffy's wool quality changes so that it can generate a high amount of static electricity with a small amount of wool. The bare and slick parts of its hide are shielded against electricity.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Flaaffy's wool quality changes so that it can generate a high amount of static electricity with a small amount of wool. The bare and slick parts of its hide are shielded against electricity.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its fleece quality changes to generate strong static electricity with a small amount of wool. The bare, slick parts of its hide are shielded against electricity.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its fluffy fleece easily stores electricity. Its rubbery hide keeps it from being electrocuted.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"As a result of storing too much electricity, it developed patches where even downy wool won't grow.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"If its coat becomes fully charged with electricity, its tail lights up. It fires hair that zaps on impact.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"If its coat becomes fully charged with electricity, its tail lights up. It fires hair that zaps on impact.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If its coat becomes fully charged with electricity, its tail lights up. It fires hair that zaps on impact.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"As a result of storing too much electricity, it developed patches where even downy wool won't grow.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its fluffy fleece easily stores electricity. Its rubbery hide keeps it from being electrocuted.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If its coat becomes fully charged with electricity, its tail lights up. It fires hair that zaps on impact.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If its coat becomes fully charged with electricity, its tail lights up. It fires hair that zaps on impact.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Not even downy wool will grow on its rubbery, nonconductive patches of skin that prevent electrical shock.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Not even downy wool will grow on its rubbery, nonconductive patches of skin that prevent electrical shock.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its fluffy fleece easily stores electricity. Its rubbery hide keeps it from being electrocuted.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If its coat becomes fully charged with electricity, its tail lights up. It fires hair that zaps on impact.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Flaaffy's wool quality changes so that it can generate a high amount of static electricity with a small amount of wool. The bare and slick parts of its hide are shielded against electricity.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Flaaffy's wool quality changes so that it can generate a high amount of static electricity with a small amount of wool. The bare and slick parts of its hide are shielded against electricity.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"In the places on its body where fleece doesn't grow, its skin is rubbery and doesn't conduct electricity. Those spots are safe to touch.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It stores electricity in its fluffy fleece. If it stores up too much, it will start to go bald in those patches.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"If its coat becomes fully charged with electricity, its tail lights up. Flaaffy can fire hair that zaps on impact.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"If its coat becomes fully charged with electricity, its tail lights up. Flaaffy can fire hair that zaps on impact.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"As a result of storing too much electricity, it developed patches where even downy wool won't grow.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Because of its rubbery, electricity-resistant skin, it can store lots of electricity in its fur.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If its coat becomes fully charged with electricity, its tail lights up. Flaaffy can fire wool that zaps on impact.\"\n    }\n  ],\n  \"181\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"When it gets dark, the light from its bright, shiny tail can be seen from far away on the ocean's surface.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The tail's tip shines brightly and can be seen from far away. It acts as a beacon for lost people.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The bright light on its tail can be seen far away. It has been treasured since ancient times as a beacon.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it gets dark, the light from its bright, shiny tail can be seen from far away on the ocean's surface.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The tail's tip shines brightly and can be seen from far away. It acts as a beacon for lost people.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ampharos gives off so much light that it can be seen even from space. People in the old days used the light of this Pokémon to send signals back and forth with others far away.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Ampharos gives off so much light that it can be seen even from space. People in the old days used the light of this Pokémon to send signals back and forth with others far away.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It gives off so much light that it can be seen even from space. People in the old days used its light to send signals back and forth with others far away.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The bright light on its tail can be seen far away. It has been treasured since ancient times as a beacon.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The tail's tip shines brightly and can be seen from far away. It acts as a beacon for lost people.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The tip of its tail shines brightly. In the olden days, people sent signals using the tail's light.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The tip of its tail shines brightly. In the olden days, people sent signals using the tail's light.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The tip of its tail shines brightly. In the olden days, people sent signals using the tail's light.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The tail's tip shines brightly and can be seen from far away. It acts as a beacon for lost people.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The bright light on its tail can be seen far away. It has been treasured since ancient times as a beacon.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The tip of its tail shines brightly. In the olden days, people sent signals using the tail's light.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The tip of its tail shines brightly. In the olden days, people sent signals using the tail's light.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The tip of its tail shines so brightly it can be used to send sea-navigation beacons to distant foreign shores.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The tip of its tail shines so brightly it can be used to send sea-navigation beacons to distant foreign shores.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The tail's tip shines brightly and can be seen from far away. It acts as a beacon for lost people.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The tail's tip shines brightly and can be seen from far away. It acts as a beacon for lost people.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ampharos gives off so much light that it can be seen even from space. People in the old days used the light of this Pokémon to send signals back and forth with others far away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ampharos gives off so much light that it can be seen even from space. People in the old days used the light of this Pokémon to send signals back and forth with others far away.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The light from its tail can be seen from space. This is why you can always tell exactly where it is, which is why it usually keeps the light off.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its tail shines bright and strong. It has been prized since long ago as a beacon for sailors.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The tip of its tail shines brightly. In the olden days, people sent signals using the light from this Pokémon's tail.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The tip of its tail shines brightly. In the olden days, people sent signals using the light from this Pokémon's tail.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The bright light on its tail can be seen far away. It has been treasured since ancient times as a beacon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it gets dark, the light from its bright, shiny tail can be seen from far away on the ocean's surface.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The tail's tip shines brightly and can be seen from far away. It acts as a beacon for lost people.\"\n    }\n  ],\n  \"182\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Plentiful in the tropics. When it dances, its petals rub together and make a pleasant ringing sound.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Bellossom gather at times and appear to dance. They say that the dance is a ritual to summon the sun.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Plentiful in the tropics. When it dances, its petals rub together and make a pleasant ringing sound.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When these dance together, their petals rub against each other, making pretty, relaxing sounds.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Bellossom gather at times and appear to dance. They say that the dance is a ritual to summon the sun.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"When Bellossom gets exposed to plenty of sunlight, the leaves ringing its body begin to spin around. This Pokémon's dancing is renowned in the southern lands.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"A Bellossom grows flowers more beautifully if it has evolved from a smelly Gloom - the stinkier the better. At night, this Pokémon closes its petals and goes to sleep.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its flower petals deepen in color through exposure to sunlight. When cloudy weather persists, it does a dance that is thought to be a ritual for summoning the sun.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Plentiful in the tropics. When it dances, its petals rub together and make a pleasant ringing sound.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Bellossom gather at times and appear to dance. They say that the dance is a ritual to summon the sun.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Bellossom gather at times and seem to dance. They say that the dance is a ritual to summon the sun.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Plentiful in the tropics. When it dances, its petals rub together and make a pleasant ringing sound.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Bellossom gather at times and seem to dance. They say that the dance is a ritual to summon the sun.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When Bellossom gets exposed to plenty of sunlight, the leaves ringing its body begin to spin around. This Pokémon's dancing is renowned in the southern lands.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"A Bellossom grows flowers more beautifully if it has evolved from a smelly Gloom—the more stinky the better. At night, this Pokémon closes its petals and goes to sleep.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Plentiful in the tropics. When it dances, its petals rub together and make a pleasant ringing sound.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Bellossom gather at times and appear to dance. They say that the dance is a ritual to summon the sun.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When the heavy rainfall season ends, it is drawn out by warm sunlight to dance in the open.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Due to the effects of the Sun Stone, it is now active during the daytime. It likes to dance in pools of sunlight.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"After it grows up, it leaves the forest it was born in to form groups with other Bellossom. It breaks into dance when it gets excited.\"\n    }\n  ],\n  \"183\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The oil-filled tail functions as a buoy, so it's fine even in rivers with strong currents.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The tip of its tail, which contains oil that is lighter than water, lets it swim without drowning.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The end of its tail serves as a buoy that keeps it from drowning, even in a vicious current.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The fur on its body naturally repels water. It can stay dry, even when it plays in the water.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The tip of its tail, which contains oil that is lighter than water, lets it swim without drowning.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Marill's oil-filled tail acts much like a life preserver. If you see just its tail bobbing on the water's surface, it's a sure indication that this Pokémon is diving beneath the water to feed on aquatic plants.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When fishing for food at the edge of a fast-running stream, Marill wraps its tail around the trunk of a tree. This Pokémon's tail is flexible and configured to stretch.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its body is covered with water-repellent fur. Because of the fur, it can swim through water at high speed without being slowed by the water's resistance.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The end of its tail serves as a buoy that keeps it from drowning, even in a vicious current.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The tip of its tail, which contains oil that is lighter than water, lets it swim without drowning.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Using its tail as a float, it dives underwater. It likes eating plants that grow on river bottoms.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The tip of its tail is filled with oil that is lighter than water, so it acts as a float.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The oil-filled end of its tail floats on water. It keeps Marill from drowning even in a strong current.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The tip of its tail, which contains oil that is lighter than water, lets it swim without drowning.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The end of its tail serves as a buoy that keeps it from drowning, even in a vicious current.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The oil-filled end of its tail floats on water. It keeps Marill from drowning even in a strong current.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The oil-filled end of its tail floats on water. It keeps Marill from drowning even in a strong current.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The oil-filled tail functions as a buoy, so it's fine even in rivers with strong currents.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The oil-filled tail functions as a buoy, so it's fine even in rivers with strong currents.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The fur on its body naturally repels water. It can stay dry, even when it plays in the water.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The tip of its tail is filled with oil that is lighter than water, so it acts as a float.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Marill's oil-filled tail acts much like a life preserver. If you see just its tail bobbing on the water's surface, it's a sure indication that this Pokémon is diving beneath the water to feed on aquatic plants.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When fishing for food at the edge of a fast-running stream, Marill wraps its tail around the trunk of a tree. This Pokémon's tail is flexible and configured to stretch.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon uses its round tail as a float. The ball of Marill's tail is filled with nutrients that have been turned into an oil.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Even after Marill swims in a cold sea, its water-repellent fur dries almost as soon as Marill leaves the water. That's why this Pokémon is never cold.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Using its tail as a float, it dives underwater. It likes eating plants that grow in riverbeds.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The tip of its tail is filled with oil that is lighter than water, so it acts as a float.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The fur on its body naturally repels water. It can stay dry even when it plays in the water.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The oil-filled tail functions as a buoy, so it's fine even in rivers with strong currents.\"\n    }\n  ],\n  \"184\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its long ears are superb sensors. It can distinguish the movements of things in water and tell what they are.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"By keeping still and listening intently, it can tell what is in even wild, fast-moving rivers.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"When it plays in water, it rolls up its elongated ears to prevent their insides from getting wet.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The bubble-like pattern on its stomach helps it camouflage itself when it's in the water.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"By keeping still and listening intently, it can tell what is in even wild, fast-moving rivers.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Azumarill's long ears are indispensable sensors. By focusing its hearing, this Pokémon can identify what kinds of prey are around, even in rough and fast-running rivers.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Azumarill can make balloons out of air. It makes these air balloons if it spots a drowning Pokémon. The air balloons enable the Pokémon in trouble to breathe.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It lives in water virtually all day long. Its body color and pattern act as camouflage that makes it tough for enemies to spot in water.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When it plays in water, it rolls up its elongated ears to prevent their insides from getting wet.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"By keeping still and listening intently, it can even tell what is in wild, fast-moving rivers.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in rivers and lakes. In water, its coloring and patterns trick the vision of foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its long ears are superb sensors. It can distinguish the movements of living things on riverbeds.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can spend all day in water, since it can inhale and store a large volume of air.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"By keeping still and listening intently, it can tell what is in even wild, fast-moving rivers.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it plays in water, it rolls up its elongated ears to prevent their insides from getting wet.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can spend all day in water, since it can inhale and store a large volume of air.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can spend all day in water, since it can inhale and store a large volume of air.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its long ears are superb sensors. It can distinguish the movements of things in water and tell what they are.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its long ears are superb sensors. It can distinguish the movements of things in water and tell what they are.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its long ears are superb sensors. It can distinguish the movements of living things on riverbeds.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The bubble-like pattern on its stomach helps it camouflage itself when it's in the water.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Azumarill's long ears are indispensable sensors. By focusing its hearing, this Pokémon can identify what kinds of prey are around, even in rough and fast-running rivers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Azumarill can make balloons out of air. It makes these air balloons if it spots a drowning Pokémon. The air balloons enable the Pokémon in trouble to breathe.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It spends most of its time in the water. On sunny days, Azumarill floats on the surface of the water and sunbathes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Pokémon create air-filled bubbles. When Azurill play in rivers, Azumarill will cover them with these bubbles.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in rivers and lakes. In water, its coloring and patterns trick the vision of foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its long ears are superb sensors. It can distinguish the movements of living things on riverbeds.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its long ears are superb sensors. It can distinguish the movements of things in water and tell what they are.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"By keeping still and listening intently, it can tell what is in even wild, fast-moving rivers.\"\n    }\n  ],\n  \"185\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Although it always pretends to be a tree, its composition appears more similar to rock than to vegetation.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Although it always pretends to be a tree, its composition appears to be closer to a rock than a plant.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It disguises itself as a tree to avoid attack. It hates water, so it will disappear if it starts raining.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"If a tree branch shakes when there is no wind, it's a Sudowoodo, not a tree. It hides from the rain.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Although it always pretends to be a tree, its composition appears to be closer to a rock than a plant.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Sudowoodo camouflages itself as a tree to avoid being attacked by enemies. However, because the forelegs remain green throughout the year, the Pokémon is easily identified as a fake during the winter.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sudowoodo camouflages itself as a tree to avoid being attacked by enemies. However, because the forelegs remain green throughout the year, the Pokémon is easily identified as a fake during the winter.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It mimics a tree to avoid being attacked by enemies. But since its forelegs remain green throughout the year, it is easily identified as a fake in the winter.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It disguises itself as a tree to avoid attack. It hates water, so it will disappear if it starts raining.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Although it always pretends to be a tree, its composition appears to be closer to a rock than a plant.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Despite appearing to be a tree, its body is closer to rocks and stones. It is very weak to water.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It stands along paths pretending to be a tree. If it starts raining, it seems to disappear.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"To avoid being attacked, it does nothing but mimic a tree. It hates water and flees from rain.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Although it always pretends to be a tree, its composition appears more similar to rock than to vegetation.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It disguises itself as a tree to avoid attack. It hates water, so it will disappear if it starts raining.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"To avoid being attacked, it does nothing but mimic a tree. It hates water and flees from rain.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"To avoid being attacked, it does nothing but mimic a tree. It hates water and flees from rain.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"To avoid being attacked, it does nothing but mimic a tree. It hates water and flees from rain.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"To avoid being attacked, it does nothing but mimic a tree. It hates water and flees from rain.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Although it always pretends to be a tree, its composition appears more similar to rock than to vegetation.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It disguises itself as a tree to avoid attack. It hates water, so it will disappear if it starts raining.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sudowoodo camouflages itself as a tree to avoid being attacked by enemies. However, because its hands remain green throughout the year, the Pokémon is easily identified as a fake during the winter.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sudowoodo camouflages itself as a tree to avoid being attacked by enemies. However, because its hands remain green throughout the year, the Pokémon is easily identified as a fake during the winter.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"To avoid attack, it mimics a tree. It will run off if splashed with water, which it hates.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Apparently, the larger the green parts of this Pokémon, the more collectors value it. It's a particular favorite among elderly people.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's so popular with the elderly that there's a magazine devoted to this Pokémon. Fans obsess over the particular length and angle of its arms.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The result of its holding the same pose all the time is arms that have become supple yet strong.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If a tree branch shakes when there is no wind, it's a Sudowoodo, not a tree. It hides from the rain.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It disguises itself as a tree to avoid attack. It hates water, so it will disappear if it starts raining.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Though it looks like a tree, its body is actually more like rock or stone. The Pokémon is very weak to water.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It stands along paths pretending to be a tree. If it starts raining, it seems to disappear.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though it pretends to be a tree, it fails to fool even children. To the touch, its body feels more like rock than tree bark. Sudowoodo's extreme aversion to water merits special note.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Although it always pretends to be a tree, its composition appears more similar to rock than to vegetation.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"To avoid being attacked, it does nothing but mimic a tree. It hates water and flees from rain.\"\n    }\n  ],\n  \"186\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"They gather on moonlit nights to form a large chorus. Their cries sound angry and not at all pleasant, but they are certainly distinctive.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If Poliwag and Poliwhirl hear its echoing cry, they respond by gathering from far and wide.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Whenever three or more of these get together, they sing in a loud voice that sounds like bellowing.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it expands its throat to croak out a tune, nearby Poliwag and Poliwhirl gather immediately.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If Poliwag and Poliwhirl hear its echoing cry, they respond by gathering from far and wide.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The curled hair on Politoed's head is proof of its status as a king. It is said that the longer and more curled the hair, the more respect this Pokémon earns from its peers.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The curled hair on Politoed's head is proof of its status as a king. It is said that the longer and more curled the hair, the more respect this Pokémon earns from its peers.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The curled hair on its head proves its status as a king. It is said that the longer and curlier the hair, the more respect it earns from its peers.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Whenever three or more of these get together, they sing in a loud voice that sounds like bellowing.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If Poliwag and Poliwhirl hear its echoing cry, they respond by gathering from far and wide.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It gathers groups of others as their leader. Its cries make POLIWAG obey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It gathers groups of others as their leader. Its cries make POLIWAG obey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It gathers groups of others as their leader. Its cries make POLIWAG obey.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If Poliwag and Poliwhirl hear its echoing cry, they respond by gathering from far and wide.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Whenever three or more of these get together, they sing in a loud voice that sounds like bellowing.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It gathers groups of others as their leader. Its cries make Poliwag obey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It gathers groups of others as their leader. Its cries make Poliwag obey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It gathers groups of others as their leader. Its cries make Poliwag obey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It gathers groups of others as their leader. Its cries make Poliwag obey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Whenever three or more of these get together, they sing in a loud voice that sounds like bellowing.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If Poliwag and Poliwhirl hear its echoing cry, they respond by gathering from far and wide.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The curled hair on Politoed's head is proof of its status as a king. It is said that the longer and more curled the hair, the more respect this Pokémon earns from its peers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The curled hair on Politoed's head is proof of its status as a king. It is said that the longer and more curled the hair, the more respect this Pokémon earns from its peers.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They gather on moonlit nights to form a large chorus. Their cries sound angry and not at all pleasant, but they are certainly distinctive.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It's the leader of Poliwag and Poliwhirl. When Politoed roars, they all cower in fear.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although its cries sound like screams, a composer created a beautiful ballad that was influenced by the sounds.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The longer and more luxurious the curled hair on its head, the greater the number of Poliwag and Poliwhirl that will obey it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"At nightfall, these Pokémon appear on the shores of lakes. They announce their territorial claims by letting out cries that sound like shouting.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The cry of a male is louder than that of a female. Male Politoed with deep, menacing voices find more popularity with the opposite gender.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A group of Poliwag and Poliwhirl will form with a Politoed as the leader. Politoed's cries make the Pokémon of the group obey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A group of Poliwag and Poliwhirl will form with a Politoed as the leader. Politoed's cries make the Pokémon of the group obey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If Poliwag and Poliwhirl hear its echoing cry, they respond by gathering from far and wide.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's the leader of Poliwag and Poliwhirl. When Politoed roars, they all cower in fear.\"\n    }\n  ],\n  \"187\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Outside of cold regions, Hoppip can be found practically everywhere. This is because the wind carries this species all over the world.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"To keep from being blown away by the wind, they gather in clusters. They do enjoy gentle breezes, though.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its body is so light, it must grip the ground firmly with its feet to keep from being blown away.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It can be carried away on even the gentlest breeze. It may even float all the way to the next town.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"To keep from being blown away by the wind, they gather in clusters. They do enjoy gentle breezes, though.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"This Pokémon drifts and floats with the wind. If it senses the approach of strong winds, Hoppip links its leaves with other Hoppip to prepare against being blown away.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon drifts and floats with the wind. If it senses the approach of strong winds, Hoppip links its leaves with other Hoppip to prepare against being blown away.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon drifts and floats with the wind. If it senses the approach of strong winds, a Hoppip links leaves with others to prepare against being blown away.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its body is so light, it must grip the ground firmly with its feet to keep from being blown away.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"To keep from being blown away by the wind, they gather in clusters. They do enjoy gentle breezes, though.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It drifts on winds. It is said that when HOPPIP gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It drifts on winds. It is said that when HOPPIP gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It drifts on winds. It is said that when HOPPIP gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"To keep from being blown away by the wind, they gather in clusters. But they do enjoy gentle breezes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its body is so light, it must grip the ground firmly with its feet to keep from being blown away.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It drifts on winds. It is said that when Hoppip gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It drifts on winds. It is said that when Hoppip gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It drifts on winds. It is said that when Hoppip gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It drifts on winds. It is said that when Hoppip gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its body is so light, it must grip the ground firmly with its feet to keep from being blown away.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It drifts on winds. It is said that when Hoppip gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon drifts and floats with the wind. If it senses the approach of strong winds, Hoppip links its leaves with other Hoppip to prepare against being blown away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon drifts and floats with the wind. If it senses the approach of strong winds, Hoppip links its leaves with other Hoppip to prepare against being blown away.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They are blown adrift by winds. It is said that when Hoppip gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They are blown adrift by winds. It is said that when Hoppip gather in fields and mountains, spring is on the way.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is blown across vast distances by the wind. It is unclear where the Hoppip of Paldea originally came from.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Outside of cold regions, Hoppip can be found practically everywhere. This is because the wind carries this species all over the world.\"\n    }\n  ],\n  \"188\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"When the weather grows cold, Skiploom's flower closes and the Pokémon cannot photosynthesize, so it flies away to warmer regions.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The bloom on top of its head opens and closes as the temperature fluctuates up and down.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It spreads its petals to absorb sunlight. It also floats in the air to get closer to the sun.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"As soon as it rains, it closes its flower and hides in the shade of a tree to avoid getting wet.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The bloom on top of its head opens and closes as the temperature fluctuates up and down.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Skiploom's flower blossoms when the temperature rises above 64 degrees F. How much the flower opens depends on the temperature. For that reason, this Pokémon is sometimes used as a thermometer.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Skiploom's flower blossoms when the temperature rises above 64 degrees F. How much the flower opens depends on the temperature. For that reason, this Pokémon is sometimes used as a thermometer.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It blossoms when the temperature rises above 64 degrees F. Because its flower's blooming changes with the temperature, it is sometimes used as a thermometer.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It spreads its petals to absorb sunlight. It also floats in the air to get closer to the sun.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The bloom on top of its head opens and closes as the temperature fluctuates up and down.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It blooms when the weather warms. It floats in the sky to soak up as much sunlight as possible.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It blooms when the weather warms. It floats in the sky to soak up as much sunlight as possible.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It blooms when the weather warms. It floats in the sky to soak up as much sunlight as possible.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The bloom on top of its head opens and closes as the temperature fluctuates up and down.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It spreads its petals to absorb sunlight. It also floats in the air to get closer to the sun.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It blooms when the weather warms. It floats in the sky to soak up as much sunlight as possible.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It blooms when the weather warms. It floats in the sky to soak up as much sunlight as possible.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It blooms when the weather warms. It floats in the sky to soak up as much sunlight as possible.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It blooms when the weather warms. It floats in the sky to soak up as much sunlight as possible.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The bloom on top of its head opens and closes as the temperature fluctuates up and down.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It spreads its petals to absorb sunlight. It also floats in the air to get closer to the sun.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Skiploom's flower blossoms when the temperature rises above 64 degrees Fahrenheit. How much the flower opens depends on the temperature. For that reason, this Pokémon is sometimes used as a thermometer.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Skiploom's flower blossoms when the temperature rises above 64 degrees Fahrenheit. How much the flower opens depends on the temperature. For that reason, this Pokémon is sometimes used as a thermometer.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It blooms when the weather warms. It floats in the sky to soak up as much sunlight as possible.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It blooms when the weather warms. It floats in the sky to soak up as much sunlight as possible.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Skiploom enthusiasts can apparently tell where a Skiploom was born by the scent drifting from the flower on the Pokémon's head.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When the weather grows cold, Skiploom's flower closes and the Pokémon cannot photosynthesize, so it flies away to warmer regions.\"\n    }\n  ],\n  \"189\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Jumpluff travels on seasonal winds. Once its cotton spores run out, its journey ends, as does its life.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Once it catches the wind, it deftly controls its cotton-puff spores to float, even around the world.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Drifts on seasonal winds and spreads its cotton-like spores all over the world to make more offspring.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Even in the fiercest wind, it can control its fluff to make its way to any place in the world it wants.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Once it catches the wind, it deftly controls its cotton-puff spores to float, even around the world.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Jumpluff rides warm southern winds to cross the sea and fly to foreign lands. The Pokémon descends to the ground when it encounters cold air while it is floating.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Jumpluff rides warm southern winds to cross the sea and fly to foreign lands. The Pokémon descends to the ground when it encounters cold air while it is floating.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Jumpluff ride warm southern winds to cross the sea and fly to foreign lands. This Pokémon lands when it encounters cold air while it is floating.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It drifts on seasonal winds and spreads its cotton-like spores all over the world to make more offspring.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Once it catches the wind, it deftly controls its cotton-puff spores to float, even around the world.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Once it catches the wind, it deftly controls its cotton-puff spores--it can even float around the world.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Drifts on seasonal winds and spreads its cotton-like spores all over the world to make more offspring.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Even in the fiercest wind, it can control its fluff to make its way to any place in the world it wants.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Jumpluff rides warm southern winds to cross the sea and fly to foreign lands. The Pokémon descends to the ground when it encounters cold air while it is floating.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Jumpluff rides warm southern winds to cross the sea and fly to foreign lands. The Pokémon descends to the ground when it encounters cold air while it is floating.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Blown by seasonal winds, it circles the globe, scattering cotton spores as it goes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Jumpluff travels on seasonal winds. Once its cotton spores run out, its journey ends, as does its life.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Beware its cotton spores. If you accidentally breathe them in, you'll be racked with coughs and itchiness.\"\n    }\n  ],\n  \"190\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its tail is so powerful that it can use it to grab a tree branch and hold itself up in the air.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It lives atop tall trees. When leaping from branch to branch, it deftly uses its tail for balance.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It uses its tail to hang on to tree branches. It uses its momentum to swing from one branch to another.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its tail is so powerful that it can use it to grab a tree branch and hold itself up in the air.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Aipom's tail ends in a hand-like appendage that can be cleverly manipulated. However, because the Pokémon uses its tail so much, its real hands have become rather clumsy.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Aipom's tail ends in a hand-like appendage that can be cleverly manipulated. However, because the Pokémon uses its tail so much, its real hands have become rather clumsy.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its tail ends with a dexterous, handlike appendage. However, because it uses the tail so much, Aipom's real hands have become rather clumsy.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives atop tall trees. When leaping from branch to branch, it deftly uses its tail for balance.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its tail is so powerful that it can use it to grab a tree branch and hold itself up in the air.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It uses its tail to pluck fruits that are out of reach. Its tail is more adept than its real hands.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives atop giant trees. It wraps its tail around a branch so it won't fall off while asleep.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives high among the treetops. It can use its tail as freely and cleverly as its hands.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its tail is so powerful that it can use it to grab a tree branch and hold itself up in the air.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives atop tall trees. When leaping from branch to branch, it deftly uses its tail for balance.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives high among the treetops. It can use its tail as freely and cleverly as its hands.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives high among the treetops. It can use its tail as freely and cleverly as its hands.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives high among the treetops. It can use its tail as freely and cleverly as its hands.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives high among the treetops. It can use its tail as freely and cleverly as its hands.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives atop tall trees. When leaping from branch to branch, it deftly uses its tail for balance.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its tail is so powerful that it can use it to grab a tree branch and hold itself up in the air.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Aipom's tail ends in a hand-like appendage that can be cleverly manipulated. However, because the Pokémon uses its tail so much, its real hands have become rather clumsy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Aipom's tail ends in a hand-like appendage that can be cleverly manipulated. However, because the Pokémon uses its tail so much, its real hands have become rather clumsy.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"As it did more and more with its tail, its hands became clumsy. It makes its nest high in the treetops.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It searches for prey from the tops of trees. When it spots its favorite food, Bounsweet, Aipom gets excited and pounces.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It uses its tail to pluck fruits that are out of reach. Its tail is more adept than its real hands.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives atop giant trees. It wraps its tail around a branch so it won't fall off while asleep.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This treetop dweller possesses a tail as dexterous as a hand. Ancient writings describe this Pokémon as a one-armed oddity.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives atop of trees. When leaping from branch to branch, it deftly uses its tail for balance.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its tail moves with greater dexterity than its hands. Making deft use of this tail, Aipom lives high among the treetops.\"\n    }\n  ],\n  \"191\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It may drop out of the sky suddenly. If attacked by a Spearow, it will violently shake its leaves.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It lives by drinking only dewdrops from under the leaves of plants. It is said that it eats nothing else.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It is very weak. Its only means of defense is to shake its leaves desperately at its attacker.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It may drop out of the sky suddenly. If attacked by a Spearow, it will violently shake its leaves.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Sunkern tries to move as little as it possibly can. It does so because it tries to conserve all the nutrients it has stored in its body for its evolution. It will not eat a thing, subsisting only on morning dew.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sunkern tries to move as little as it possibly can. It does so because it tries to conserve all the nutrients it has stored in its body for its evolution. It will not eat a thing, subsisting only on morning dew.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Sunkern try to minimize movement to conserve the nutrients they have stored in their bodies for evolution. They will not eat, subsisting only on morning dew.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives by drinking only dewdrops from under the leaves of plants. It is said that it eats nothing else.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It may drop out of the sky suddenly. If attacked by a Spearow, it will violently shake its leaves.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It suddenly falls out of the sky in the morning. A year after a cold summer, their population explodes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It suddenly falls out of the sky in the morning. A year after a cold summer, their population explodes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It suddenly falls out of the sky in the morning. A year after a cold summer, their population explodes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It may plummet from the sky. If attacked by a Spearow, it will violently shake its leaves.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives by drinking only dewdrops from under the leaves of plants. It is said that it eats nothing else.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It suddenly falls out of the sky in the morning. A year after a cold summer, their population explodes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It suddenly falls out of the sky in the morning. A year after a cold summer, their population explodes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It suddenly falls out of the sky in the morning. Knowing it's weak, it simply feeds until it evolves.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It suddenly falls out of the sky in the morning. Knowing it's weak, it simply feeds until it evolves.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It may plummet from the sky. If attacked by a Spearow, it will violently shake its leaves.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives by drinking only dewdrops from under the leaves of plants. It is said that it eats nothing else.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sunkern tries to move as little as it possibly can. It does so because it tries to conserve all the nutrients it has stored in its body for its evolution. It will not eat a thing, subsisting only on morning dew.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sunkern tries to move as little as it possibly can. It does so because it tries to conserve all the nutrients it has stored in its body for its evolution. It will not eat a thing, subsisting only on morning dew.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They may suddenly fall out of the sky in the morning. In the year following a cold summer, their population explodes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They may suddenly fall out of the sky in the morning. In the year following a cold summer, their population explodes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It suddenly falls out of the sky in the morning. Knowing it's weak, it simply feeds until it evolves.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is very weak. Its only means of defense is to shake its leaves desperately at its attacker.\"\n    }\n  ],\n  \"192\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It converts sunlight into energy. In the darkness after sunset, it closes its petals and becomes still.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"In the daytime, it rushes about in a hectic manner, but it comes to a complete stop when the sun sets.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"As the hot season approaches, the petals on this Pokémon's face become more vivid and lively.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It converts sunlight into energy. In the darkness after sunset, it closes its petals and becomes still.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Sunflora converts solar energy into nutrition. It moves around actively in the daytime when it is warm. It stops moving as soon as the sun goes down for the night.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sunflora converts solar energy into nutrition. It moves around actively in the daytime when it is warm. It stops moving as soon as the sun goes down for the night.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Sunflora convert solar energy into nutrition. They are highly active in the warm daytime but suddenly stop moving as soon as the sun sets.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"In the daytime, it rushes about in a hectic manner, but it comes to a complete stop when the sun sets.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It converts sunlight into energy. In the darkness after sunset, it closes its petals and becomes still.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It gets energy from warm sunlight and is known for its habit of moving in pursuit of it.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It gets energy from warm sunlight and is known for its habit of moving in pursuit of it.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It gets energy from warm sunlight and is known for its habit of moving in pursuit of it.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It converts sunlight into energy. In the darkness after sunset, it closes its petals and becomes still.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"In the daytime, it rushes about in a hectic manner, but it comes to a complete stop when the sun sets.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It gets energy from warm sunlight and is known for its habit of moving in pursuit of it.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It gets energy from warm sunlight and is known for its habit of moving in pursuit of it.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Since it converts sunlight into energy, it is always looking in the direction of the sun.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Since it converts sunlight into energy, it is always looking in the direction of the sun.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"As the hot season approaches, the petals on this Pokémon's face become more vivid and lively.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It gets energy from warm sunlight and is known for its habit of moving in pursuit of it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sunflora converts solar energy into nutrition. It moves around actively in the daytime when it is warm. It stops moving as soon as the sun goes down for the night.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sunflora converts solar energy into nutrition. It moves around actively in the daytime when it is warm. It stops moving as soon as the sun goes down for the night.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It gets energy from warm sunlight and is known for its habit of moving in pursuit of it.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It gets energy from warm sunlight and is known for its habit of moving in pursuit of it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"In the daytime, it rushes about in a hectic manner, but it comes to a complete stop when the sun sets.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Since it converts sunlight into energy, it is always looking in the direction of the sun.\"\n    }\n  ],\n  \"193\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If it flaps its wings really fast, it can generate shock waves that will shatter windows in the area.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its large eyes can scan 360 degrees. It looks in all directions to seek out insects as its prey.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It can see in all directions without moving its big eyes, helping it spot attackers and food right away.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If it flaps its wings really fast, it can generate shock waves that will shatter windows in the area.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Yanma is capable of seeing 360 degrees without having to move its eyes. It is a great flier that is adept at making sudden stops and turning midair. This Pokémon uses its flying ability to quickly chase down targeted prey.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Yanma is capable of seeing 360 degrees without having to move its eyes. It is a great flier that is adept at making sudden stops and turning midair. This Pokémon uses its flying ability to quickly chase down targeted prey.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It can see 360 degrees without moving its eyes. It is a great flier capable of making sudden stops and turning midair to quickly chase down targeted prey.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its large eyes can scan 360 degrees. It looks in all directions to seek out insects as its prey.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If it flaps its wings really fast, it can generate shock waves that will shatter windows in the area.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its eyes can see 360 degrees without moving its head. It won't miss prey--even those behind it.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its eyes can see 360 degrees without moving its head. It won't miss prey--even those behind it.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can hover in one spot by flapping its wings at high speed. It flits about to guard its territory.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it flaps its wings really fast, it can generate shock waves that will shatter windows in the area.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its large eyes can scan 360 degrees. It looks in all directions to seek out insects as its prey.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can hover in one spot by flapping its wings at high speed. It flits about to guard its territory.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can hover in one spot by flapping its wings at high speed. It flits about to guard its territory.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By flapping its wings at high speed, it can fly freely through the air. Even sudden stops are no problem.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By flapping its wings at high speed, it can fly freely through the air. Even sudden stops are no problem.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its eyes can see 360 degrees without moving its head. It won't miss prey--even those behind it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it flaps its wings really fast, it can generate shock waves that will shatter windows in the area.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Yanma is capable of seeing 360 degrees without having to move its eyes. It is a great flier that is adept at making sudden stops and turning midair. This Pokémon uses its flying ability to quickly chase down targeted prey.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Yanma is capable of seeing 360 degrees without having to move its eyes. It is a great flier that is adept at making sudden stops and turning midair. This Pokémon uses its flying ability to quickly chase down targeted prey.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its eyes can see 360 degrees without the Pokémon moving its head. It won't miss prey—even those behind it.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its eyes can see 360 degrees without the Pokémon moving its head. It won't miss prey—even those behind it.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its frail wings are so thin that one can see clear through them. However, during flight these wings exhibit the power to churn air with force enough to launch a house skyward.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"As Yanma surveys its territory, it periodically stops to hover in place by flapping its wings at high speeds.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can see in all directions without moving its big eyes, helping it spot both attackers and prey right away.\"\n    }\n  ],\n  \"194\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"After losing a territorial struggle, Wooper began living on land. The Pokémon changed over time, developing a poisonous film to protect its body.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This Pokémon lives in cold water. It will leave the water to search for food when it gets cold outside.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"When it walks around on the ground, it coats its body with a slimy, poisonous film.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"A mucous membrane covers its body. Touching it barehanded will cause a shooting pain.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This Pokémon lives in cold water. It will leave the water to search for food when it gets cold outside.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Wooper usually lives in water. However, it occasionally comes out onto land in search of food. On land, it coats its body with a gooey, toxic film.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Wooper usually lives in water. However, it occasionally comes out onto land in search of food. On land, it coats its body with a gooey, toxic film.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Wooper usually live in water but come out onto land seeking food occasionally. On land, they coat their bodies with a gooey, toxic film.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When it walks around on the ground, it coats its body with a slimy, poisonous film.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"This Pokémon lives in cold water. It will leave the water to search for food when it gets cold outside.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in cold water, half burying itself in mud at the bottom to sleep.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When the temperature cools in the evening, they emerge from water to seek food along the shore.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When walking on land, it covers its body with a poisonous film that keeps its skin from dehydrating.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This Pokémon lives in cold water. It will leave the water to search for food when it gets cold outside.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it walks around on the ground, it coats its body with a slimy, poisonous film.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When walking on land, it covers its body with a poisonous film that keeps its skin from dehydrating.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When walking on land, it covers its body with a poisonous film that keeps its skin from dehydrating.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When walking on land, it covers its body with a poisonous film that keeps its skin from dehydrating.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When walking on land, it covers its body with a poisonous film that keeps its skin from dehydrating.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This Pokémon lives in cold water. It will leave the water to search for food when it gets cold outside.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When the temperature cools in the evening, they emerge from water to seek food along the shore.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Wooper usually lives in water. However, it occasionally comes out onto land in search of food. On land, it coats its body with a gooey, toxic film.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Wooper usually lives in water. However, it occasionally comes out onto land in search of food. On land, it coats its body with a gooey, toxic film.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon lives in cold water. It will leave the water to search for food when it gets cold outside.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When walking on land, it covers its body with a poisonous film that keeps its skin from dehydrating.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in cold water, half burying itself in mud at the bottom to sleep.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When the temperature cools in the evening, they emerge from water to seek food along the shore.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A transparent mucous membrane covers its body. Touching it bare-handed will cause a tingling numbness.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it walks around on land, it coats its body with a slimy, poisonous film.\"\n    }\n  ],\n  \"195\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This carefree Pokémon has an easy-going nature. While swimming, it always bumps into boat hulls.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Due to its relaxed and carefree attitude, it often bumps its head on boulders and boat hulls as it swims.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its body is always slimy. It often bangs its head on the river bottom as it swims but seems not to care.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This carefree Pokémon has an easy-going nature. While swimming, it always bumps into boat hulls.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Quagsire hunts for food by leaving its mouth wide open in water and waiting for its prey to blunder in unaware. Because the Pokémon does not move, it does not get very hungry.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Quagsire hunts for food by leaving its mouth wide open in water and waiting for its prey to blunder in unaware. Because the Pokémon does not move, it does not get very hungry.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Quagsire hunts by leaving its mouth wide open in water and waiting for its prey to blunder in. Because it doesn't move, it does not get very hungry.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Due to its relaxed and carefree attitude, it often bumps its head on boulders and boat hulls as it swims.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"This carefree Pokémon has an easygoing nature. While swimming, it always bumps into boat hulls.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a sluggish nature. It lies at the river's bottom, waiting for prey to stray into its mouth.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A dim-witted Pokémon. It doesn't care if it bumps its head into boats or rocks while swimming.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has an easygoing nature. It doesn't care if it bumps its head on boats and boulders while swimming.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This carefree Pokémon has an easy-going nature. While swimming, it always bumps into boat hulls.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Due to its relaxed and carefree attitude, it often bumps its head on boulders and boat hulls as it swims.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has an easygoing nature. It doesn't care if it bumps its head on boats and boulders while swimming.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has an easygoing nature. It doesn't care if it bumps its head on boats and boulders while swimming.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has an easygoing nature. It doesn't care if it bumps its head on boats and boulders while swimming.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has an easygoing nature. It doesn't care if it bumps its head on boats and boulders while swimming.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a sluggish nature. It lies at the river's bottom, waiting for prey to stray into its mouth.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This carefree Pokémon has an easygoing nature. While swimming, it always bumps into boat hulls.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Quagsire hunts for food by leaving its mouth wide open in water and waiting for its prey to blunder in unaware. Because the Pokémon does not move, it does not get very hungry.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Quagsire hunts for food by leaving its mouth wide open in water and waiting for its prey to blunder in unaware. Because the Pokémon does not move, it does not get very hungry.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has an easygoing nature. It doesn't care if it bumps its head on boats and boulders while swimming.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its body is always slimy. It often bangs its head on the river bottom as it swims but seems not to care.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a sluggish nature. It lies at the river's bottom, waiting for prey to stray into its mouth.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A dim-witted Pokémon. It doesn't care if it bumps its head into boats or rocks while swimming.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This carefree Pokémon has an easygoing nature. While swimming, it always bumps into boat hulls.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Due to its relaxed and carefree attitude, it often bumps its head on riverbed boulders and boat hulls as it swims.\"\n    }\n  ],\n  \"196\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"By reading air currents, it can predict things such as the weather or its foe's next move.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It uses the fine hair that covers its body to sense air currents and predict its enemy's actions.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"By reading air currents, it can predict things such as the weather or its foe's next move.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The tip of its forked tail quivers when it is predicting its opponent's next move.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It uses the fine hair that covers its body to sense air currents and predict its enemy's actions.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Espeon is extremely loyal to any Trainer it considers to be worthy. It is said that this Pokémon developed its precognitive powers to protect its Trainer from harm.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Espeon is extremely loyal to any Trainer it considers to be worthy. It is said that this Pokémon developed its precognitive powers to protect its Trainer from harm.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"An Espeon is extremely loyal to any Trainer it considers to be worthy. It is said to have developed precognitive powers to protect its Trainer from harm.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"By reading air currents, it can predict things such as the weather or its foe's next move.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It uses the fine hair that covers its body to sense air currents and predict its enemy's actions.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its fur has the look and feel of velvet. The orb on its forehead glows when it uses psycho-power.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its fur has the look and feel of velvet. The orb on its forehead glows when it uses psycho-power.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its fur is so sensitive, it can sense minute shifts in the air and predict the weather.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It uses the fine hair that covers its body to sense air currents and predict its enemy's actions.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"By reading air currents, it can predict things such as the weather or its foe's next move.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its fur is so sensitive, it can sense minute shifts in the air and predict the weather.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its fur is so sensitive, it can sense minute shifts in the air and predict the weather.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its fur is so sensitive, it can feel minute shifts in the air and predict the weather...and its foes' thoughts.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its fur is so sensitive, it can feel minute shifts in the air and predict the weather...and its foes' thoughts.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The tip of its forked tail quivers when it is predicting its opponent's next move.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its fur is so sensitive, it can feel minute shifts in the air and predict the weather...and its foes' thoughts.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Espeon is extremely loyal to any Trainer it considers to be worthy. It is said that this Pokémon developed its precognitive powers to protect its Trainer from harm.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Espeon is extremely loyal to any Trainer it considers to be worthy. It is said that this Pokémon developed its precognitive powers to protect its Trainer from harm.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It can instantaneously sense its opponent's movements by feeling air currents with its fine fur.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It unleashes psychic power from the orb on its forehead. When its power is exhausted, the orb grows dull and dark.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it originally had no powers at all, people say its precognitive faculties were awakened by its need to protect itself.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Psychic power builds up in the orb on its forehead as it bathes in the sunshine. Espeon is not good at battling at night.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"By reading air currents, it can predict things such as the weather or its foe's next move.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It unleashes psychic power from the orb on its forehead. When its power is exhausted, the orb grows dull and dark.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its fur has the look and feel of velvet. The orb on its forehead glows when it uses psychic power.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its fur has the look and feel of velvet. The orb on its forehead glows when it uses psychic power.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Wields an arcane power with which it can predict the weather and even people's thoughts. When bathed in sunshine, the scarlet orb on its brow glows and builds energy.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The tip of its forked tail quivers when it is predicting its opponent's next move.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It uses the fine hair that covers its body to sense air currents and predict its enemy's actions.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses the fine fur on its body to sense movement in the air and predict the weather...as well as its foes' thoughts.\"\n    }\n  ],\n  \"197\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"On the night of a full moon, or when it gets excited, the ring patterns on its body glow yellow.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When agitated, this Pokémon protects itself by spraying poisonous sweat from its pores.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"When darkness falls, the rings on the body begin to glow, striking fear in the hearts of anyone nearby.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"On the night of a full moon, or when it gets excited, the ring patterns on its body glow yellow.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When agitated, this Pokémon protects itself by spraying poisonous sweat from its pores.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Umbreon evolved as a result of exposure to the moon's waves. It hides silently in darkness and waits for its foes to make a move. The rings on its body glow when it leaps to attack.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Umbreon evolved as a result of exposure to the moon's waves. It hides silently in darkness and waits for its foes to make a move. The rings on its body glow when it leaps to attack.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Umbreon evolved from exposure to the moon's energy pulses. It lurks in darkness and waits for its foes to move. The rings on its body glow when it leaps to attack.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When darkness falls, the rings on its body begin to glow, striking fear in the hearts of anyone nearby.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When agitated, this Pokémon protects itself by spraying poisonous sweat from its pores.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The light of the moon changed Eevee's genetic structure. It lurks in darkness for prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The light of the moon changed Eevee's genetic structure. It lurks in darkness for prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When exposed to the moon's aura, the rings on its body glow faintly and it gains a mysterious power.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When agitated, this Pokémon protects itself by spraying poisonous sweat from its pores.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When darkness falls, the rings on the body begin to glow, striking fear in the hearts of anyone nearby.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When exposed to the moon's aura, the rings on its body glow faintly and it gains a mysterious power.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When exposed to the moon's aura, the rings on its body glow faintly and it gains a mysterious power.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When exposed to the moon's aura, the rings on its body glow faintly and it's filled with a mysterious power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When exposed to the moon's aura, the rings on its body glow faintly and it's filled with a mysterious power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The light of the moon changed Eevee's genetic structure. It lurks in darkness for prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When exposed to the moon's aura, the rings on its body glow faintly and it's filled with a mysterious power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Umbreon evolved as a result of exposure to the moon's waves. It hides silently in darkness and waits for its foes to make a move. The rings on its body glow when it leaps to attack.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Umbreon evolved as a result of exposure to the moon's waves. It hides silently in darkness and waits for its foes to make a move. The rings on its body glow when it leaps to attack.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When this Pokémon becomes angry, its pores secrete a poisonous sweat, which it sprays at its opponent's eyes.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"With its black fur, it blends into the darkness. It bides its time, and when prey appears, this Pokémon goes for its throat, and then eats it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Pokémon is nocturnal. Even in total darkness, its large eyes can spot its prey clearly!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It lurks in the dark of night looking for prey. At the moment it pounces, the rings on its body glow dimly but ominously.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When this Pokémon becomes angry, its pores secrete a poisonous sweat, which it sprays at its opponent's eyes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"On the night of a full moon, or when it gets excited, the ring patterns on its body glow yellow.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The light of the moon changed Eevee's genetic structure. It lurks in the darkness, waiting for prey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The light of the moon changed Eevee's genetic structure. It lurks in the darkness, waiting for prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It is most active in the wee hours of the night, when moonlight bathes the land. Its large eyes can pierce the darkness and perceive prey with absolute clarity.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When exposed to the moon's aura, the rings on its body glow faintly and it gains a mysterious power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When darkness falls, the rings on the body begin to glow, striking fear in the hearts of anyone nearby.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The light of the moon changed Eevee's genetic structure. It lurks in the darkness, waiting for prey.\"\n    }\n  ],\n  \"198\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"They awaken at dusk and take wing in the twilight, leading to the expression, \\\"Get home before the Murkrow fly.\\\"\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Feared and loathed by many, it is believed to bring misfortune to all those who see it at night.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It is said that when chased, it lures its attacker onto dark mountain trails where the foe will get lost.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It hides any shiny object it finds in a secret location. Murkrow and Meowth loot one another's stashes.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Feared and loathed by many, it is believed to bring misfortune to all those who see it at night.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Murkrow was feared and loathed as the alleged bearer of ill fortune. This Pokémon shows strong interest in anything that sparkles or glitters. It will even try to steal rings from women.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Murkrow was feared and loathed as the alleged bearer of ill fortune. This Pokémon shows strong interest in anything that sparkles or glitters. It will even try to steal rings from women.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Murkrow were feared as the alleged bearers of ill fortune. It shows strong interest in anything that sparkles. It will even try to steal rings from women.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is said that when chased, it lures its attacker onto dark mountain trails where the foe will get lost.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Feared and loathed by many, it is believed to bring misfortune to all those who see it at night.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is believed that seeing this Pokémon at night will bring about ominous occurrences.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It appears near travelers to lure them into deep forests. It is said to carry misfortune.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If spotted, it will lure an unwary person into chasing it, then lose the pursuer on mountain trails.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Feared and loathed by many, it is believed to bring misfortune to all those who see it at night.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is said that when chased, it lures its attacker onto dark mountain trails where the foe will get lost.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If spotted, it will lure an unwary person into chasing it, then lose the pursuer on mountain trails.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If spotted, it will lure an unwary person into chasing it, then lose the pursuer on mountain trails.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If spotted, it will lure an unwary person into chasing it then lose the pursuer on mountain trails.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If spotted, it will lure an unwary person into chasing it then lose the pursuer on mountain trails.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It hides any shiny object it finds in a secret location. Murkrow and Meowth loot one another's stashes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Feared and loathed by many, it is believed to bring misfortune to all those who see it at night.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Murkrow was feared and loathed as the alleged bearer of ill fortune. This Pokémon shows strong interest in anything that sparkles or glitters. It will even try to steal rings from women.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Murkrow was feared and loathed as the alleged bearer of ill fortune. This Pokémon shows strong interest in anything that sparkles or glitters. It will even try to steal rings from women.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They awaken at dusk and take wing in the twilight, leading to the expression, \\\"Get home before the Murkrow fly.\\\"\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Seen as a symbol of bad luck, it's generally disliked. Yet it gives presents—objects that sparkle or shine—to Trainers it's close to.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It has a weakness for shiny things. It's been known to sneak into the nests of Gabite—noted collectors of jewels—in search of treasure.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It searches for shiny things for its boss. Murkrow's presence is said to be unlucky, so many people detest it.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is believed that seeing this Pokémon at night will bring about ominous occurrences.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It appears near travelers to lure them into deep forests. It is said to bring misfortune.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Widely shunned as a bearer of ill fortune. Upon crossing paths with this creature, I've been told one must chant \\\"Workrum, Workrum—bad luck, don't come\\\" as a protective incantation.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Feared and loathed by many, it is believed to bring misfortune to all those who see it at night.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If spotted, it will lure an unwary person into chasing it, then lose the pursuer on mountain trails.\"\n    }\n  ],\n  \"199\": [\n    {\n      \"version_id\": \"Sun \",\n      \"flavor_text\": \"A poisonous bite reacted with its system, blessing it with the enhanced intellect of a genius. It has full control of its psychic powers.\"\n    },\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has incredible intellect and intuition. Whatever the situation, it remains calm and collected.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has incredible intellect and intuition. Whatever the situation, it remains calm and collected.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"When its head was bitten, toxins entered Slowpoke's head and unlocked an extraordinary power.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Every time it yawns, Shellder injects more poison into it. The poison makes it more intelligent.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has incredible intellect and intuition. Whatever the situation, it remains calm and collected.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Slowking undertakes research every day in an effort to solve the mysteries of the world. However, this Pokémon apparently forgets everything it has learned if the Shellder on its head comes off.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Slowking undertakes research every day in an effort to solve the mysteries of the world. However, this Pokémon apparently forgets everything it has learned if the Shellder on its head comes off.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It undertakes research every day to solve the mysteries of the world. However, it apparently forgets everything if the Shellder on its head comes off.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When its head was bitten, toxins entered Slowpoke's head and unlocked an extraordinary power.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has incredible intellect and intuition. Whatever the situation, it remains calm and collected.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Being bitten by SHELLDER gave it intelligence comparable to that of award-winning scientists.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Being bitten by SHELLDER gave it intelligence comparable to that of award-winning scientists.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Being bitten by SHELLDER gave it intelligence comparable to that of award-winning scientists.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has incredible intellect and intuition. Whatever the situation, it remains calm and collected.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When its head was bitten, toxins entered Slowpoke's head and unlocked an extraordinary power.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Being bitten by Shellder gave it intelligence comparable to that of award-winning scientists.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Being bitten by Shellder gave it intelligence comparable to that of award-winning scientists.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Being bitten by Shellder gave it intelligence comparable to that of award-winning scientists.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Being bitten by Shellder gave it intelligence comparable to that of award-winning scientists.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has incredible intellect and intuition. Whatever the situation, it remains calm and collected.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When its head was bitten, toxins entered Slowpoke's head and unlocked an extraordinary power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Slowking undertakes research every day in an effort to solve the mysteries of the world. However, this Pokémon apparently forgets everything it has learned if the Shellder on its head comes off.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Slowking undertakes research every day in an effort to solve the mysteries of the world. However, this Pokémon apparently forgets everything it has learned if the Shellder on its head comes off.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A poisonous bite reacted with its system, blessing it with the enhanced intellect of a genius. It has full control of its psychic powers.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon is so famed for its intellect that a proverb still persists in some regions: \\\"When in doubt, ask Slowking.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's constantly coming up with new ideas that would change the world, but as soon as it hits upon a new idea, it forgets it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's called \\\"the sage of the sea.\\\" It engages in battles of wits with Oranguru, but the result is usually a draw.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Miraculously, this former Slowpoke's latent intelligence was drawn out when Shellder poison raced through its brain.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Slowking can solve any problem presented to it, but no one can understand a thing Slowking says.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Being bitten by Shellder gave it intelligence comparable to that of internationally recognized scientists.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Being bitten by Shellder gave it intelligence comparable to that of internationally recognized scientists.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When its head was bitten, toxins entered Slowpoke's head and unlocked an extraordinary power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has incredible intellect and intuition. Whatever the situation, it remains calm and collected.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has incredible intellect and intuition. Whatever the situation, it remains calm and collected.\"\n    }\n  ],\n  \"200\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It likes playing mischievous tricks, such as screaming and wailing to startle people at night.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It likes playing mischievous tricks such as screaming and wailing to startle people at night.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It loves to bite and yank people's hair from behind without warning, just to see their shocked reactions.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It loves to watch people it's scared. It frightens them by screaming loudly or appearing suddenly.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It likes playing mischievous tricks such as screaming and wailing to startle people at night. \"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Misdreavus frightens people with a creepy, sobbing cry. The Pokémon apparently uses its red spheres to absorb the fearful feelings of foes and turn them into nutrition.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Misdreavus frightens people with a creepy, sobbing cry. The Pokémon apparently uses its red spheres to absorb the fearful feelings of foes and turn them into nutrition.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Misdreavus frightens people with a creepy, sobbing cry. It apparently uses its red spheres to absorb the fear of foes as its nutrition.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It loves to bite and yank people's hair from behind without warning, just to see their shocked reactions.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It likes playing mischievous tricks such as screaming and wailing to startle people at night. \"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves to sneak up on people late at night, then startle them with its shrieklike cry.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It gets nourishment from fear that it absorbs into its red orbs. In daytime, it sleeps in darkness.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon that startles people in the middle of the night. It gathers fear as its energy.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It likes playing mischievous tricks, such as screaming and wailing to startle people at night.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It loves to bite and yank people's hair from behind without warning, just to see their shocked reactions.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon that startles people in the middle of the night. It gathers fear as its energy.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon that startles people in the middle of the night. It gathers fear as its energy.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A Pokémon that startles people in the middle of the night. It gathers fear as its energy.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A Pokémon that startles people in the middle of the night. It gathers fear as its energy.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It gets nourishment from fear that it absorbs into its red orbs. In daytime, it sleeps in darkness.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It likes playing mischievous tricks, such as screaming and wailing to startle people at night.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Misdreavus frightens people with a creepy, sobbing cry. The Pokémon apparently uses its red spheres to absorb the fearful feelings of foes and turn them into nutrition.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Misdreavus frightens people with a creepy, sobbing cry. The Pokémon apparently uses its red spheres to absorb the fearful feelings of foes and turn them into nutrition.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It will use any means necessary to frighten people and absorb their life energy. It practices constantly to hone its skill in causing fear.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"If you hear a sobbing sound emanating from a vacant room, it's undoubtedly a bit of mischief from Misdreavus.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"What gives meaning to its life is surprising others. If you set your ear against the red orbs around its neck, you can hear shrieking.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"What makes it happy is imitating the voices of weeping people and scaring everyone. It doesn't deal well with folks who aren't easily frightened.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It loves to sneak up on people late at night and startle them with its shrieking cry.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It gets nourishment from fear that it absorbs into its red orbs. During the daytime, it sleeps in the shadows.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It conceals itself in darkness, sending chills up travelers' spines with its childlike weeping. As it observes the frightened travelers with glee, the red orbs upon its chest let off an eerie light.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon startles people in the middle of the night. It gathers fear as its energy.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It loves to bite and yank people's hair from behind without warning, just to see their shocked reactions.\"\n    }\n  ],\n  \"201\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Their shapes look like hieroglyphs on ancient tablets. It is said that the two are somehow related.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its flat, thin body is always stuck on walls. Its shape appears to have some meaning.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Because different types of Unown exist, it is said that they must have a variety of abilities.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Their shapes look like hieroglyphs on ancient tablets. It is said that the two are somehow related.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"This Pokémon is shaped like ancient writing. It is a mystery as to which came first, the ancient writings or the various Unown. Research into this topic is ongoing but nothing is known.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon is shaped like ancient writing. It is a mystery as to which came first, the ancient writings or the various Unown. Research into this topic is ongoing but nothing is known.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon is shaped like ancient text characters. Although research is ongoing, it is a mystery as to which came first, the ancient writings or the various Unown.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its flat, thin body is always stuck on walls. Its shape appears to have some meaning.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Their shapes look like hieroglyphs on ancient tablets. It is said that the two are somehow related.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Shaped like ancient writing, it is a huge mystery whether language or Unown came first.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"They seem to communicate among each other telepathically. They are always found stuck on walls.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When alone, nothing happens. However, if there are two or more, an odd power is said to emerge.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Their shapes look like hieroglyphs on ancient tablets. It is said that the two are somehow related.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its flat, thin body is always stuck on walls. Its shape appears to have some meaning.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When alone, nothing happens. However, if there are two or more, an odd power is said to emerge.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When alone, nothing happens. However, if there are two or more, an odd power is said to emerge.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When alone, nothing happens. However, if there are two or more, an odd power is said to emerge.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When alone, nothing happens. However, if there are two or more, an odd power is said to emerge.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its flat, thin body is always stuck on walls. Its shape appears to have some meaning.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Shaped like ancient writing, it is a huge mystery whether language or Unown came first.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon is shaped like ancient writing. It is a mystery as to which came first, the ancient writings or the various Unown. Research into this topic is ongoing but nothing is known.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon is shaped like ancient writing. It is a mystery as to which came first, the ancient writings or the various Unown. Research into this topic is ongoing but nothing is known.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Because the Pokémon is shaped like ancient writing, it is a huge mystery whether written language or Unown came first.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They seem to communicate among each other telepathically. They are always found stuck on walls.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It is hard to believe these strangely shaped Pokémon are truly living creatures. I've pointed out that the species' many forms resemble writing from other lands; no one will take me seriously.\"\n    }\n  ],\n  \"202\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It hates light and shock. If attacked, it inflates its body to pump up its counterstrike.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"To keep its pitch-black tail hidden, it lives quietly in the darkness. It is never first to attack.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"In order to conceal its black tail, it lives in a dark cave and only moves about at night.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It hates light and shock. If attacked, it inflates its body to pump up its counter strike.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"If two or more Wobbuffet meet, they will turn competitive and try to outdo each other's endurance. However, they may try to see which one can endure the longest without food. Trainers need to beware of this habit.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Wobbuffet does nothing but endure attacks - it won't attack on its own. However, it won't endure an attack on its tail. When that happens, the Pokémon will try to take the foe with it using Destiny Bond.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Usually docile, a Wobbuffet strikes back ferociously if its black tail is attacked. It makes its lair in caves where it waits for nightfall.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"To keep its pitch-black tail hidden, it lives quietly in the darkness. It is never first to attack.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It hates light and shock. If attacked, it inflates its body to pump up its counterstrike.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It desperately tries to keep its black tail hidden. It is said to be proof the tail hides a secret.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It desperately tries to keep its black tail hidden. It is said to be proof the tail hides a secret.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It desperately tries to keep its black tail hidden. It is said to be proof the tail hides a secret.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It hates light and shock. If attacked, it inflates its body to build up its counterstrike.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"To keep its pitch-black tail hidden, it lives quietly in the darkness. It is never first to attack.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It desperately tries to keep its black tail hidden. It is said to be proof the tail hides a secret.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It desperately tries to keep its black tail hidden. It is said to be proof the tail hides a secret.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It desperately tries to keep its black tail hidden. It is said to be proof the tail hides a secret.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It desperately tries to keep its black tail hidden. It is said to be proof the tail hides a secret.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It hates light and shock. If attacked, it inflates its body to build up its counterstrike.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"To keep its pitch-black tail hidden, it lives quietly in the darkness. It is never first to attack.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"If two or more Wobbuffet meet, they will turn competitive and try to outdo each other's endurance. However, they may try to see which one can endure the longest without food. Trainers need to beware of this habit.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Wobbuffet does nothing but endure attacks—it won't attack on its own. However, it won't endure an attack on its tail. When that happens, the Pokémon will try to take the foe with it using Destiny Bond.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It hates light and shock. If attacked, it inflates its body to pump up its counterstrike.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"To keep its pitch-black tail hidden, it lives quietly in the darkness. It is never first to attack.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It desperately tries to keep its black tail hidden. This behavior is said to be proof that its tail hides a secret.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It desperately tries to keep its black tail hidden. This behavior is said to be proof that its tail hides a secret.\"\n    }\n  ],\n  \"203\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Girafarig's tail has a small head. It instinctively bites at any foe that approaches the Pokémon from behind.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its tail has a small brain of its own. Beware! If you get close, it may react to your scent and bite.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its tail, which also contains a small brain, may bite on its own if it notices an alluring smell.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When it is in danger, its tail uses some sort of mysterious powers to drive away the enemy.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its tail has a small brain of its own. Beware! If you get close, it may react to your scent and bite.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Girafarig's rear head also has a brain, but it is small. The rear head attacks in response to smells and sounds. Approaching this Pokémon from behind can cause the rear head to suddenly lash out and bite.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Girafarig's rear head contains a tiny brain that is too small for thinking. However, the rear head doesn't need to sleep, so it can keep watch over its surroundings 24 hours a day.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Girafarig is an herbivore--it eats grass and tree shoots. While it is eating, its tail makes chewing and swallowing motions as if it were also eating.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its tail, which also contains a small brain, may bite on its own if it notices an alluring smell.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its tail has a small brain of its own. Beware! If you get close, it may react to your scent and bite.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its tail also has a small brain. It bites to repel any foe trying to sneak up on it from behind.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"While it sleeps, the head on its tail keeps watch. The tail doesn't need to sleep.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The head on its tail contains a small brain. It can instinctively fight even while facing backward.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its tail has a small brain of its own. Beware! If you get close, it may react to your scent by biting.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its tail, which also contains a small brain, may bite on its own if it notices an alluring smell.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The head on its tail contains a small brain. It can instinctively fight even while facing backward.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The head on its tail contains a small brain. It can instinctively fight even while facing backward.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The head on its tail contains a small brain. It can instinctively fight even while facing backward.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The head on its tail contains a small brain. It can instinctively fight even while facing backward.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"While it sleeps, the head on its tail keeps watch. The tail doesn't need to sleep.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its tail has a small brain of its own. Beware! If you get close, it may react to your scent by biting.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Girafarig's rear head also has a brain, but it is small. The rear head attacks in response to smells and sounds. Approaching this Pokémon from behind can cause the rear head to suddenly lash out and bite.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Girafarig's rear head contains a tiny brain that is too small for thinking. However, the rear head doesn't need to sleep, so it can keep watch over its surroundings 24 hours a day.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its tail has a separate small brain. The tail bites to repel any foe trying to sneak up on the Pokémon from behind.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"While it sleeps, the head on its tail keeps watch. The tail doesn't need to sleep.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Though very small, the brain in its tail is still considered an important organ because it emits powerful psychic energy.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Girafarig's tail has a small head. It instinctively bites at any foe that approaches the Pokémon from behind.\"\n    }\n  ],\n  \"204\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It likes to make its shell thicker by adding layers of tree bark. The additional weight doesn't bother it.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It hangs and waits for flying insect prey to come near. It does not move about much on its own.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It spits out a fluid that it uses to glue tree bark to its body. The fluid hardens when it touches air.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It likes to make its shell thicker by adding layers of tree bark. The additional weight doesn't bother it.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Pineco hangs from a tree branch and patiently waits for prey to come along. If the Pokémon is disturbed while eating by someone shaking its tree, it drops down to the ground and explodes with no warning.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Pineco hangs from a tree branch and patiently waits for prey to come along. If the Pokémon is disturbed while eating by someone shaking its tree, it drops down to the ground and explodes with no warning.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pineco hangs from a tree branch and waits for prey. While eating, if it is disturbed by someone shaking its tree, it falls on the ground and suddenly explodes.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It hangs and waits for flying-insect prey to come near. It does not move about much on its own.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It likes to make its shell thicker by adding layers of tree bark. The extra weight doesn't bother it.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It likes to make its shell thicker by adding layers of tree bark. The additional weight doesn't bother it.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It hangs and waits for flying insect prey to come near. It does not move about much on its own.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It likes to make its shell thicker by adding layers of tree bark. The additional weight doesn't bother it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Pineco hangs from a tree branch and patiently waits for prey to come along. If the Pokémon is disturbed while eating by someone shaking its tree, it drops down to the ground and explodes with no warning.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Pineco hangs from a tree branch and patiently waits for prey to come along. If the Pokémon is disturbed while eating by someone shaking its tree, it drops down to the ground and explodes with no warning.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Motionless, it hangs from trees, waiting for its bug Pokémon prey to come to it. Its favorite in Alola is Cutiefly.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It sticks tree bark to itself with its saliva, making itself thicker and larger. Elderly Pineco are ridiculously huge.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It looks just like a pinecone. Its shell protects it from bird Pokémon that peck it by mistake.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It likes to make its shell thicker by adding layers of tree bark. The additional weight doesn't bother it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It spits out a fluid that it uses to glue tree bark to its body. The fluid hardens when it touches air.\"\n    }\n  ],\n  \"205\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its entire body is shielded by a steel-hard shell. What lurks inside the armor is a total mystery.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It remains immovably rooted to its tree. It scatters pieces of its hard shell to drive its enemies away.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Usually found hanging on to a fat tree trunk. It shoots out bits of its shell when it sees action.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its entire body is shielded by a steel-hard shell. What lurks inside the armor is a total mystery.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Forretress conceals itself inside its hardened steel shell. The shell is opened when the Pokémon is catching prey, but it does so at such a quick pace that the shell's inside cannot be seen.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Forretress conceals itself inside its hardened steel shell. The shell is opened when the Pokémon is catching prey, but it does so at such a quick pace that the shell's inside cannot be seen.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It keeps itself inside its steel shell. The shell is opened when it is catching prey, but it is so quick that the shell's inside cannot be seen.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It remains immovably rooted to its tree. It scatters pieces of its hard shell to drive its enemies away.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its entire body is shielded by a steel-hard shell. What lurks inside the armor is a total mystery.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is encased in a steel shell. Its peering eyes are all that can be seen of its mysterious innards.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is encased in a steel shell. Its peering eyes are all that can be seen of its mysterious innards.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is encased in a steel shell. Its peering eyes are all that can be seen of its mysterious innards.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its entire body is shielded by a steel-hard shell. What lurks inside this shell is a total mystery.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It remains immovably rooted to its tree. It scatters pieces of its hard shell to drive its enemies away.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is encased in a steel shell. Its peering eyes are all that can be seen of its mysterious innards.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is encased in a steel shell. Its peering eyes are all that can be seen of its mysterious innards.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is encased in a steel shell. Its peering eyes are all that can be seen of its mysterious innards.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is encased in a steel shell. Its peering eyes are all that can be seen of its mysterious innards.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is encased in a steel shell. Its peering eyes are all that can be seen of its mysterious innards.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It remains immovably rooted to its tree. It scatters pieces of its hard shell to drive its enemies away.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Forretress conceals itself inside its hardened steel shell. The shell is opened when the Pokémon is catching prey, but it does so at such a quick pace that the shell's inside cannot be seen.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Forretress conceals itself inside its hardened steel shell. The shell is opened when the Pokémon is catching prey, but it does so at such a quick pace that the shell's inside cannot be seen.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When something approaches it, it fires off fragments of its steel shell in attack. This is not a conscious action but a conditioned reflex.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"In the moment that it gulps down its prey, the inside of its shell is exposed, but to this day, no one has ever seen that sight.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is encased in a steel shell. Forretress's eyes peer out, but what lies within this Pokémon's shell is unknown.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is encased in a steel shell. Forretress's eyes peer out, but what lies within this Pokémon's shell is unknown.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's usually found hanging on to a fat tree trunk. It shoots out bits of its shell when it sees action.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its entire body is shielded by a steel-hard shell. What lurks inside this shell is a total mystery.\"\n    }\n  ],\n  \"206\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"When spotted, this Pokémon escapes backward by furiously boring into the ground with its tail.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If spotted, it escapes by burrowing with its tail. It can float just slightly using its wings.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It hides deep inside caves where no light ever reaches it and remains virtually motionless there.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"When spotted, this Pokémon escapes backward by furiously boring into the ground with its tail.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Dunsparce has a drill for its tail. It uses this tail to burrow into the ground backwards. This Pokémon is known to make its nest in complex shapes deep under the ground.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Dunsparce has a drill for its tail. It uses this tail to burrow into the ground backwards. This Pokémon is known to make its nest in complex shapes deep under the ground.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its drill-tipped tail is used to burrow into the ground backwards. This Pokémon is known to make its nest in complex shapes deep under the ground.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If spotted, it escapes by burrowing with its tail. It can hover just slightly using its wings.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When spotted, this Pokémon escapes backward by furiously boring into the ground with its tail.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It digs into the ground with its tail and makes a mazelike nest. It can fly just a little.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It digs into the ground with its tail and makes a mazelike nest. It can fly just a little.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It digs into the ground with its tail and makes a mazelike nest. It can fly just a little.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When spotted, this Pokémon escapes backward by furiously boring into the ground with its tail.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If spotted, it escapes by burrowing with its tail. It can float just slightly using its wings.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It digs into the ground with its tail and makes a mazelike nest. It can fly just a little.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It digs into the ground with its tail and makes a mazelike nest. It can fly just a little.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It creates mazes in dark locations. When spotted, it flees into the ground by digging with its tail.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It creates mazes in dark locations. When spotted, it flees into the ground by digging with its tail.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When spotted, this Pokémon escapes backward by furiously boring into the ground with its tail.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It digs into the ground with its tail and makes a mazelike nest. It can fly just a little.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Dunsparce has a drill for its tail. It uses this tail to burrow into the ground backward. This Pokémon is known to make its nest in complex shapes deep under the ground.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Dunsparce has a drill for its tail. It uses this tail to burrow into the ground backward. This Pokémon is known to make its nest in complex shapes deep under the ground.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It travels by digging through the ground. Diglett and Dunsparce share one another's tunnels happily.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it sees a person, it digs a hole with its tail to make its escape. If you happen to find one, consider yourself lucky.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon's tiny wings have some scientists saying that Dunsparce used to fly through the sky in ancient times.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The nests Dunsparce live in are mazes of tunnels. They never get lost in their own nests—they can tell where they are by the scent of the dirt.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It digs into the ground with its tail and makes a mazelike nest. It can fly just a little.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It digs into the ground with its tail and makes a mazelike nest. It can fly just a little.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It creates mazes in dark locations. When spotted, it flees into the ground by digging with its tail.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If spotted, it escapes by burrowing with its tail. It can float just slightly using its wings.\"\n    }\n  ],\n  \"207\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It flies straight at its target's face then clamps down on the startled victim to inject poison.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It usually clings to cliffs. When it spots its prey, it spreads its wings and glides down to attack.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It builds its nest on a steep cliff. When it is done gliding, it hops along the ground back to its nest.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It flies straight at its target's face then clamps down on the startled victim to inject poison.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Gligar glides through the air without a sound as if it were sliding. This Pokémon hangs on to the face of its foe using its clawed hind legs and the large pincers on its forelegs, then injects the prey with its poison barb.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Gligar glides through the air without a sound as if it were sliding. This Pokémon hangs on to the face of its foe using its clawed hind legs and the large pincers on its forelegs, then injects the prey with its poison barb.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It glides without making a single sound. It grasps the face of its foe using its hind and large front claws, then stabs with its poison barb.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It usually clings to cliffs. When it spots its prey, it spreads its wings and glides down to attack.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It flies straight at its target's face, then clamps down on the startled victim to inject poison.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It sails on the winds with its limbs extended to strike from the sky. It aims for the prey's face.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It sails on the winds with its limbs extended to strike from the sky. It aims for the prey's face.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It glides as if sliding. It startles foes by clamping on to their faces, then jabs with its poison stinger.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It flies straight at its target's face, then clamps down on the startled victim to inject poison.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It usually clings to cliffs. When it spots its prey, it spreads its wings and glides down to attack.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It glides as if sliding. It startles foes by clamping on to their faces, then jabs with its poison stinger.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It glides as if sliding. It startles foes by clamping on to their faces, then jabs with its poison stinger.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It clamps on to its chosen prey then jabs the stinger on its tail into the prey while it's stunned with surprise.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It clamps on to its chosen prey then jabs the stinger on its tail into the prey while it's stunned with surprise.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It usually clings to cliffs. When it spots its prey, it spreads its wings and glides down to attack.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It flies straight at its target's face, then clamps down on the startled victim to inject poison.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Gligar glides through the air without a sound as if it were sliding. This Pokémon hangs on to the face of its foe using its clawed hind legs and the large pincers on its forelegs, then injects the prey with its poison barb.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Gligar glides through the air without a sound as if it were sliding. This Pokémon hangs on to the face of its foe using its clawed hind legs and the large pincers on its forelegs, then injects the prey with its poison barb.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It sails on the winds with its limbs extended to strike from the sky. It aims for the prey's face.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It sails on the winds with its limbs extended to strike from the sky. It aims for the prey's face.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its tail is tipped by a thick, horrible stinger. To bring down prey, it will first obscure their vision by covering their faces with its body, and then it will use the stinger to inject them with venom.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It builds its nest on a steep cliff. When it is done gliding, it hops along the ground back to its nest.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It glides as if sliding. It startles foes by clamping on to their faces, then jabs with its poison stinger.\"\n    }\n  ],\n  \"208\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is thought its body transformed as a result of iron accumulating internally from swallowing soil.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its body has been compressed deep under the ground. As a result, it is even harder than a diamond.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It is said that if an Onix lives for over 100 years, its composition changes to become diamond-like.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The many small metal particles that cover this Pokémon's body reflect bright light well.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its body has been compressed deep under the ground. As a result, it is even harder than a diamond.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Steelix lives even further underground than Onix. This Pokémon is known to dig towards the earth's core. There are records of this Pokémon reaching a depth of over six-tenths of a mile underground.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Steelix lives even further underground than Onix. This Pokémon is known to dig towards the earth's core. There are records of this Pokémon reaching a depth of over six-tenths of a mile underground.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Steelix live even further underground than Onix. This Pokémon is known to dig toward the earth's core, reaching a depth of over six-tenths of a mile underground.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is said that if an Onix lives for over 100 years, its composition changes to become diamond-like.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its body has been compressed deep under the ground. As a result, it is even harder than diamond.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Tempered underground under high pressure and heat, its body is harder than any metal.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It chews its way through boulders with its sturdy jaws. Its eyes can see in the darkness underground.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is thought its body transformed as a result of iron accumulating internally from swallowing soil.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its body has been compressed deep under the ground. As a result, it is even harder than a diamond.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It's said that if an Onix lives for 100 years, its composition becomes diamondlike as it evolves into a Steelix.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is thought its body transformed as a result of iron accumulating internally from swallowing soil.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is thought its body transformed as a result of iron accumulating internally from swallowing soil.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The iron it ingested with the soil it swallowed transformed its body and made it harder than diamonds.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The iron it ingested with the soil it swallowed transformed its body and made it harder than diamonds.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Tempered underground under high pressure and heat, its body is harder than any metal.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It chews its way through boulders with its sturdy jaws. Its eyes can see in the darkness underground.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Steelix lives even further underground than Onix. This Pokémon is known to dig toward the earth's core. There are records of this Pokémon reaching a depth of over six-tenths of a mile underground.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Steelix lives even further underground than Onix. This Pokémon is known to dig toward the earth's core. There are records of this Pokémon reaching a depth of over six-tenths of a mile underground.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is said that if an Onix lives for over 100 years, its composition changes to become diamond-like.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It is thought its body transformed as a result of iron accumulating internally from swallowing soil.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Tempered underground under high pressure and heat, its body is harder than any metal.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It chews its way through boulders with its sturdy jaws. Its eyes can see in the darkness underground.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon evolved through use of a strange item. Its body is coated with steel powder and notably hard—not even diamond can leave so much as a scratch.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It chews its way through boulders with its sturdy jaws. Its eyes can see in the darkness underground.\"\n    }\n  ],\n  \"209\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Although it looks frightening, it is actually kind and affectionate. It is very popular among women.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It has an active, playful nature. Many women like to frolic with it because of its affectionate ways.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"In truth, it is a cowardly Pokémon. It growls eagerly in order to hide its fear from its opponent.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Although it looks frightening, it is actually kind and affectionate. It is very popular among women.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"By baring its fangs and making a scary face, Snubbull sends smaller Pokémon scurrying away in terror. However, this Pokémon seems a little sad at making its foes flee.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"By baring its fangs and making a scary face, Snubbull sends smaller Pokémon scurrying away in terror. However, this Pokémon seems a little sad at making its foes flee.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"By baring its fangs and making a scary face, it sends smaller Pokémon scurrying in terror. The Snubbull does seem a little sad at making its foes flee.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has an active, playful nature. Many women like to frolic with it because of its affectionate ways.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Although it looks frightening, it is actually kind and affectionate. It is very popular among women.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by women to be cute.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by women to be cute.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by women to be cute.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Although it looks frightening, it is actually kind and affectionate. It is very popular among women.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has an active, playful nature. Many women like to frolic with it because of its affectionate ways.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by women to be cute.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by women to be cute.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by women to be cute.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by women to be cute.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has an active, playful nature. Many women like to frolic with it because of its affectionate ways.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by women to be cute.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"By baring its fangs and making a scary face, Snubbull sends smaller Pokémon scurrying away in terror. However, this Pokémon seems a little sad at making its foes flee.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"By baring its fangs and making a scary face, Snubbull sends smaller Pokémon scurrying away in terror. However, this Pokémon seems a little sad at making its foes flee.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Despite its intimidating face, it's quite cowardly. Its desperate attempts to appear threatening make it popular with people.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its growls make its opponents uneasy. This laid-back Pokémon tends to sleep half the day.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It grows close to others easily and is also easily spoiled. The disparity between its face and its actions makes many young people wild about it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"In contrast to its appearance, it's quite timid. When playing with other puppy Pokémon, it sometimes gets bullied.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by many people to be cute.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Small Pokémon flee from its scary face. It is, however, considered by many people to be cute.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"In truth, it is a cowardly Pokémon. It growls eagerly in order to hide its fear from its opponent.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its growls make its opponents uneasy. This laid-back Pokémon tends to sleep half the day.\"\n    }\n  ],\n  \"210\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is actually timid and easily spooked. If attacked, it flails about to fend off its attacker.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Because its fangs are too heavy, it always keeps its head tilted down. However, its Bite is powerful.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It can make most any Pokémon run away simply by opening its mouth wide to reveal its big fangs.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is actually timid and easily spooked. If attacked, it flails about to fend off its attacker.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Granbull has a particularly well-developed lower jaw. The enormous fangs are heavy, causing the Pokémon to tip its head back for balance. Unless it is startled, it will not try to bite indiscriminately.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Granbull has a particularly well-developed lower jaw. The enormous fangs are heavy, causing the Pokémon to tip its head back for balance. Unless it is startled, it will not try to bite indiscriminately.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It has a particularly well-developed lower jaw. The huge fangs are heavy, causing it to tilt its head. Unless it is startled, it will not try to bite.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Because its fangs are too heavy, it always keeps its head tilted down. However, its Bite is powerful.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is actually timid and easily spooked. If attacked, it flails about to fend off its attacker.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is actually timid and easily spooked. If attacked, it flails about to fend off its attacker.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Because its fangs are too heavy, it always keeps its head tilted down. However, its bite is powerful.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can make most any Pokémon run away simply by opening its mouth wide to reveal its big fangs.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Granbull has a particularly well-developed lower jaw. The enormous fangs are heavy, causing the Pokémon to tip its head back for balance. Unless it is startled, it will not try to bite indiscriminately.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Granbull has a particularly well-developed lower jaw. The enormous fangs are heavy, causing the Pokémon to tip its head back for balance. Unless it is startled, it will not try to bite indiscriminately.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its well-developed lower jaw and heavy fangs are its weapons. As long as it's not provoked, it rarely bites.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"More timid than Snubbull, this Pokémon is doted on by young people amused at the contrast between its looks and its attitude.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"While it has powerful jaws, it doesn't care for disputes, so it rarely has a chance to display their might.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although it's popular with young people, Granbull is timid and sensitive, so it's totally incompetent as a watchdog.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is timid in spite of its looks. If it becomes enraged, however, it will strike with its huge fangs.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is actually timid and easily spooked. If attacked, it desperately flails its limbs about in an attempt to repel its opponent.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can make most any Pokémon run away by opening its big mouth to reveal its thick fangs.\"\n    }\n  ],\n  \"211\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"To fire its poison spikes, it must inflate its body by drinking over 2.6 gallons of water all at once.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The small spikes covering its body developed from scales. They inject a toxin that causes fainting.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"When faced with a larger opponent, it swallows as much water as it can to match the opponent's size.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"To fire its poison spikes, it must inflate its body by drinking over 2.6 gallons of water all at once.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Qwilfish sucks in water, inflating itself. This Pokémon uses the pressure of the water it swallowed to shoot toxic quills all at once from all over its body. It finds swimming somewhat challenging.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Qwilfish sucks in water, inflating itself. This Pokémon uses the pressure of the water it swallowed to shoot toxic quills all at once from all over its body. It finds swimming somewhat challenging.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Qwilfish uses the pressure of water it swallows to shoot toxic quills all at once from all over its body. It finds swimming to be somewhat challenging.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The small spikes covering its body developed from scales. They inject a toxin that causes fainting.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"To fire its poison spikes, it must inflate its body by drinking over 2.6 gallons of water all at once.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It shoots the poison spines on its body in all directions. Its round form makes it a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It shoots the poison spines on its body in all directions. Its round form makes it a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It shoots the poison spines on its body in all directions. Its round form makes it a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"To fire its poison spikes, it must inflate its body by drinking over 2.6 gallons of water all at once.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The small spikes covering its body developed from scales. They inject a toxin that causes fainting.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It shoots the poison spines on its body in all directions. Its round form makes it a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It shoots the poison spines on its body in all directions. Its round form makes it a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It shoots the poison spines on its body in all directions. Its round form makes it a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It shoots the poison spines on its body in all directions. Its round form makes it a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"To fire its poison spikes, it must inflate its body by drinking over 2.6 gallons of water all at once.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The small spikes covering its body developed from scales. They inject a toxin that causes fainting.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Qwilfish sucks in water, inflating itself. This Pokémon uses the pressure of the water it swallowed to shoot toxic quills all at once from all over its body. It finds swimming somewhat challenging.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Qwilfish sucks in water, inflating itself. This Pokémon uses the pressure of the water it swallowed to shoot toxic quills all at once from all over its body. It finds swimming somewhat challenging.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When faced with a larger opponent, it swallows as much water as it can to match the opponent's size.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The small spikes covering its body developed from scales. They inject a toxin that causes fainting.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It shoots the poison spikes on its body in all directions. Its round form makes it a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It shoots the poison spikes on its body in all directions. Its round form makes it a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Fishers detest this troublesome Pokémon because it sprays poison from its spines, getting it everywhere. A different form of Qwilfish lives in other regions.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Be cautious if this Pokémon starts sucking in water—it will soon attack by scattering the toxic spikes that grow all over its body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Experienced fishers say they try to catch Qwilfish in the brief moment that these Pokémon become defenseless just after launching poisonous spikes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"To fire off the poison spikes covering its body, it inflates itself by sucking in over 2.6 gallons of water all at once.\"\n    }\n  ],\n  \"212\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It swings its eye-patterned pincers up to scare its foes. This makes it look like it has three heads.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It swings its eye-patterned pincers up to scare its foes. This makes it look like it has three heads.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its wings are not used for flying. They are flapped at high speed to adjust its body temperature.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This Pokémon's pincers, which contain steel, can crush any hard object it gets a hold of into bits.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It swings its eye patterned pincers up to scare its foes. This makes it look like it has three heads.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Scizor has a body with the hardness of steel. It is not easily fazed by ordinary sorts of attacks. This Pokémon flaps its wings to regulate its body temperature.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Scizor has a body with the hardness of steel. It is not easily fazed by ordinary sorts of attacks. This Pokémon flaps its wings to regulate its body temperature.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Scizor has a body with the hardness of steel. It is not easily fazed by ordinary sorts of attacks. It flaps its wings to regulate its body temperature.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its wings are not used for flying. They are flapped at high speed to adjust its body temperature.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It swings its eye-patterned pincers up to scare its foes. This makes it look like it has three heads.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a steel-hard body. It intimidates foes by upraising its eye-patterned pincers.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has a steel-hard body. It intimidates foes by upraising its eye-patterned pincers.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It raises its pincers with eyelike markings for intimidation. It also swings them down dangerously.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It swings its eye-patterned pincers up to scare its foes. This makes it look like it has three heads.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its wings are not used for flying. They are flapped at high speed to adjust its body temperature.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It raises its pincers with eyelike markings for intimidation. It also swings them down dangerously.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It raises its pincers with eyelike markings for intimidation. It also swings them down dangerously.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It raises its pincers with eyelike markings for intimidation. It also swings them down dangerously.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It raises its pincers with eyelike markings for intimidation. It also swings them down dangerously.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This Pokémon's pincers, which contain steel, can crush any hard object it gets ahold of into bits.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a steel-hard body. It intimidates foes by upraising its eye-patterned pincers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Scizor has a body with the hardness of steel. It is not easily fazed by ordinary sorts of attacks. This Pokémon flaps its wings to regulate its body temperature.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Scizor has a body with the hardness of steel. It is not easily fazed by ordinary sorts of attacks. This Pokémon flaps its wings to regulate its body temperature.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It uses its wings to adjust its body temperature. Otherwise, its metal body would become too hot and melt in the heat of battle.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Once it has identified an enemy, this Pokémon smashes it mercilessly with pincers hard as steel.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its body is like steel. Its tough, heavy pincers are more suited to smashing enemies than grabbing them.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Once it has identified something as an enemy, it will continue beating them with its steel-hard pincers until there's nothing left but scraps.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Bulky pincers account for one third of Scizor's body weight. A single swing of one of these pincers will crush a boulder completely.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Though its body is slim, Scizor has tremendous attacking power. Even Scizor's muscles are made of metal.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a steel-hard body. It intimidates foes by upraising its eye-patterned pincers.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has a steel-hard body. It intimidates foes by upraising its eye-patterned pincers.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Evolved by way of a curious item. The shell covering its body has been shown to be stronger than forged steel.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon's pincers, which contain steel, can crush any hard object they get ahold of into bits.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It swings its eye-patterned pincers up to scare its foes. This makes it look like it has three heads.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has a steel-hard body. It intimidates foes by upraising its eye-patterned pincers.\"\n    }\n  ],\n  \"213\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The Berries it stores in its vase-like shell decompose and become a gooey liquid.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It stores Berries inside its shell. To avoid attacks, it hides beneath rocks and remains completely still.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The fluid secreted by its toes carves holes in rocks for nesting and can be mixed with Berries to make a drink.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The Berries it stores in its vase like shell decompose and become a gooey liquid.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Shuckle quietly hides itself under rocks, keeping its body concealed inside its hard shell while eating berries it has stored away. The berries mix with its body fluids to become a juice.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Shuckle quietly hides itself under rocks, keeping its body concealed inside its hard shell while eating berries it has stored away. The berries mix with its body fluids to become a juice.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Shuckle hides under rocks, keeping its body concealed inside its shell while eating stored berries. The berries mix with its body fluids to become a juice.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It stores Berries inside its shell. To avoid attacks, it hides beneath rocks and remains completely still.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The Berries it stores in its vaselike shell decompose and become a gooey liquid.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It stores berries in its shell. The berries eventually ferment to become delicious juices.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It stores berries in its shell. The berries eventually ferment to become delicious juices.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It stores berries in its shell. The berries eventually ferment to become delicious juices.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The berries it stores in its vase-like shell decompose and become a gooey liquid.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It stores berries inside its shell. To avoid attacks, it hides beneath rocks and remains completely still.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It stores berries in its shell. The berries eventually ferment to become delicious juices.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It stores berries in its shell. The berries eventually ferment to become delicious juices.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The berries stored in its vaselike shell eventually become a thick, pulpy juice.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The berries stored in its vaselike shell eventually become a thick, pulpy juice.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The berries stored in its jar-like shell eventually become a thick, pulpy juice.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It stores berries inside its shell. To avoid attacks, it hides beneath rocks and remains completely still.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Shuckle quietly hides itself under rocks, keeping its body concealed inside its hard shell while eating berries it has stored away. The berries mix with its body fluids to become a juice.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Shuckle quietly hides itself under rocks, keeping its body concealed inside its hard shell while eating berries it has stored away. The berries mix with its body fluids to become a juice.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It stores berries inside its shell. To avoid attacks, it hides beneath rocks and remains completely still.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The berries stored in its vaselike shell eventually become a thick, pulpy juice.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It stores berries in its shell. The berries mix with its body fluids to become delicious juices.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It stores berries in its shell. The berries mix with its body fluids to become delicious juices.\"\n    }\n  ],\n  \"214\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Heracross loves sweet sap and will go looking through forests for it. The Pokémon uses its two antennae to pick up scents as it searches.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This powerful Pokémon thrusts its prized horn under its enemies' bellies then lifts and throws them.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Usually docile, but if disturbed while sipping honey, it chases off the intruder with its horn.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"With its Herculean powers, it can easily throw around an object that is 100 times its own weight.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This powerful Pokémon thrusts its prized horn under its enemies' bellies then lifts and throws them.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Heracross charges in a straight line at its foe, slips beneath the foe's grasp, and then scoops up and hurls the opponent with its mighty horn. This Pokémon even has enough power to topple a massive tree.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Heracross has sharp claws on its feet. These are planted firmly into the ground or the bark of a tree, giving the Pokémon a secure and solid footing to forcefully fling away foes with its proud horn.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"They gather in forests seeking the sweet sap of trees. It is completely clad in a steel-hard shell. It is proud of its horn, which it uses to fling foes.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Usually docile, but if disturbed while sipping honey, it chases off the intruder with its horn.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"This powerful Pokémon thrusts its prized horn under its enemies' bellies, then lifts and throws them.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It gathers in forests to search for tree sap, its favorite food. It's strong enough to hurl foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"With powerful legs and claws, it generates enough power to hurl foes over great distances.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It loves sweet honey. To keep all the honey to itself, it hurls rivals away with its prized horn.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This powerful Pokémon thrusts its prized horn under its enemies' bellies, then lifts and throws them.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is usually docile, but if it is disturbed while sipping honey, it chases off the intruder with its horn.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It loves sweet honey. To keep all the honey to itself, it hurls rivals away with its prized horn.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It loves sweet honey. To keep all the honey to itself, it hurls rivals away with its prized horn.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"No matter how heavy its opponents, it flings them far away with its prized horn.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"No matter how heavy its opponents, it flings them far away with its prized horn.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This powerful Pokémon thrusts its prized horn under its enemies' bellies, then lifts and throws them.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"With its Herculean powers, it can easily throw around an object that is 100 times its own weight.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Heracross charges in a straight line at its foe, slips beneath the foe's grasp, and then scoops up and hurls the opponent with its mighty horn. This Pokémon even has enough power to topple a massive tree.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Heracross has sharp claws on its feet. These are planted firmly into the ground or the bark of a tree, giving the Pokémon a secure and solid footing to forcefully fling away foes with its proud horn.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's proud of its thick horn. In Alola, its biggest rival is Vikavolt, which it's always fighting with.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It roams through forests searching for sweet nectar. Although it boasts fantastic physical strength, it's not that good at flying.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Heracross loves sweet sap and will go looking through forests for it. The Pokémon uses its two antennae to pick up scents as it searches.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon takes pride in its strength, which allows it to lift things 100 times heavier than itself with no trouble at all.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It gathers in forests to search for tree sap, its favorite food. It's strong enough to hurl foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its powerful legs and claws give it enough power to hurl foes over great distances.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon has an unparalleled horn. Heracross itself demonstrates tremendous power—it's capable of throwing several people trained in the traditional arts of war at once.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It loves sweet nectar. To keep all the nectar to itself, it hurls rivals away with its prized horn.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"With its herculean powers, it can easily throw around an object that is 100 times its own weight.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This powerful Pokémon thrusts its prized horn under its enemies' bellies, then lifts and throws them.\"\n    }\n  ],\n  \"215\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its paws conceal sharp claws. If attacked, it suddenly extends the claws and startles its enemy.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Vicious in nature, it drives Pidgey from their nests and feasts on the eggs that are left behind.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This cunning Pokémon hides under the cover of darkness, waiting to attack its prey.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its paws conceal sharp claws. If attacked, it suddenly extends the claws and startles its enemy.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Sneasel scales trees by punching its hooked claws into the bark. This Pokémon seeks out unguarded nests and steals eggs for food while the parents are away.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sneasel scales trees by punching its hooked claws into the bark. This Pokémon seeks out unguarded nests and steals eggs for food while the parents are away.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Sneasel scales trees by punching its hooked claws into the bark. It seeks out unguarded nests and steals eggs for food while the parents are away.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Vicious in nature, it drives Pidgey from their nests and feasts on the eggs that are left behind.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its paws conceal sharp claws. If attacked, it suddenly extends the claws and startles its enemy.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It feeds on eggs stolen from nests. Its sharply hooked claws rip vulnerable spots on prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is extremely vicious and will not stop attacking until its foe is incapable of moving.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A smart and sneaky Pokémon. A pair may work together to steal eggs by having one lure the parents away.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its paws conceal sharp claws. If attacked, it suddenly extends the claws and startles its enemy.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Vicious in nature, it drives Pidgey from their nests and scavenges any leftovers it can find.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A smart and sneaky Pokémon. A pair may work together to steal eggs by having one lure the parents away.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A smart and sneaky Pokémon. A pair may work together to steal eggs by having one lure the parents away.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A smart and sneaky Pokémon, it makes its opponents flinch by suddenly showing the claws hidden in its paws.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A smart and sneaky Pokémon, it makes its opponents flinch by suddenly showing the claws hidden in its paws.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It feeds on eggs stolen from nests. Its sharply hooked claws rip vulnerable spots on prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its paws conceal sharp claws. If attacked, it suddenly extends the claws and startles its enemy.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sneasel scales trees by punching its hooked claws into the bark. This Pokémon seeks out unguarded nests and steals eggs for food while the parents are away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sneasel scales trees by punching its hooked claws into the bark. This Pokémon seeks out unguarded nests and steals eggs for food while the parents are away.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It has a cunning yet savage disposition. It waits for parents to leave their nests, and then it sneaks in to steal their eggs.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It uses its claws to poke holes in eggs so it can slurp out the insides. Breeders consider it a scourge and will drive it away or eradicate it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They will cooperate to steal eggs from the nests of bird Pokémon, but fights break out to determine which one gets to eat the eggs.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It blends into the dark of night to ambush its prey. Sneasel will attack Sandshrew, but its hard skin can cause Sneasel's claws to snap off.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its paws conceal sharp claws. If attacked, it suddenly extends the claws and startles its enemy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has a cunning yet savage disposition. It waits for parents to leave their nests, and then it sneaks in to steal their eggs.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It feeds on eggs stolen from nests. Its sharply hooked claws rip vulnerable spots on prey.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It feeds on eggs stolen from nests. Its sharply hooked claws rip vulnerable spots on prey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is extremely vicious and will not stop attacking until its foe is incapable of moving.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is extremely vicious and will not stop attacking until its foe is incapable of moving.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon shares roots with the Sneasel of Hisui, but unlike that species, this one is spiteful in personality. I hypothesize that water and earth can affect Sneasel's mind and body.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon shares roots with the Sneasel of Hisui, but unlike that species, this one is spiteful in personality. I hypothesize that water and earth can affect Sneasel's mind and body.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This cunning Pokémon hides under the cover of darkness, waiting to attack its prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This cunning Pokémon hides under the cover of darkness, waiting to attack its prey.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This is a smart and sneaky Pokémon. A pair may work together to steal eggs by having one lure the parents away.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This is a smart and sneaky Pokémon. A pair may work together to steal eggs by having one lure the parents away.\"\n    }\n  ],\n  \"216\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If it finds honey, its crescent mark glows. It always licks its paws because they are soaked with honey.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Before food becomes scarce in wintertime, its habit is to hoard food in many hidden locations.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It always licks honey. Its palm tastes sweet because of all the honey it has absorbed.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If it finds honey, its crescent mark glows. It always licks its paws because they are soaked with honey.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"This Pokémon likes to lick its palms that are sweetened by being soaked in honey. Teddiursa concocts its own honey by blending fruits and pollen collected by Beedrill.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon likes to lick its palms that are sweetened by being soaked in honey. Teddiursa concocts its own honey by blending fruits and pollen collected by Beedrill.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It licks its palms that are sweetened by being soaked in honey. A Teddiursa makes its own honey by blending fruits and pollen collected by Beedrill.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Before food becomes scarce in wintertime, its habit is to hoard food in many hidden locations.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If it finds honey, its crescent mark glows. It always licks its paws because they are soaked with honey.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lets honey soak into its paws so it can lick them all the time. Every set of paws tastes unique.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lets honey soak into its paws so it can lick them all the time. Every set of paws tastes unique.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lets honey soak into its paws so it can lick them all the time. Every set of paws tastes unique.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it finds honey, its crescent mark glows. It always licks its paws because they're soaked with honey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Before food becomes scarce in wintertime, its habit is to hoard food in many hidden locations.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lets honey soak into its paws so it can lick them all the time. Every set of paws tastes unique.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lets honey soak into its paws so it can lick them all the time. Every set of paws tastes unique.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lets honey soak into its paws so it can lick them all the time. Every set of paws tastes unique.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lets honey soak into its paws so it can lick them all the time. Every set of paws tastes unique.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If it finds honey, its crescent mark glows. It always licks its paws because they're soaked with honey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Before food becomes scarce in wintertime, its habit is to hoard food in many hidden locations.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon likes to lick its palms that are sweetened by being soaked in honey. Teddiursa concocts its own honey by blending fruits and pollen collected by Beedrill.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon likes to lick its palms that are sweetened by being soaked in honey. Teddiursa concocts its own honey by blending fruits and pollen collected by Beedrill.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lets honey soak into its paws so it can lick them all the time. Every set of paws tastes unique.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lets honey soak into its paws so it can lick them all the time. Every set of paws tastes unique.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It licks its paws because of the sweet honey that has soaked into them. It is cunning, stealing into the nests of Combee and taking for itself the honey that the Combee have amassed.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon discreetly follows Combee to find their hive. It scoops up big dollops of honey in its palms to eat.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its paws are soaked in oodles of honey. When nervous, Teddiursa will lick its paws and soon have a smile back on its face.\"\n    }\n  ],\n  \"217\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Although it is a good climber, it prefers to snap trees with its forelegs and eat fallen Berries.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"With its ability to distinguish any aroma, it unfailingly finds all food buried deep underground.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Although it has a large body, it is quite skilled at climbing trees. It eats and sleeps in the treetops.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Although it is a good climber, it prefers to snap trees with its forelegs and eat fallen Berries.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"In the forests inhabited by Ursaring, it is said that there are many streams and towering trees where they gather food. This Pokémon walks through its forest gathering food every day.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"In the forests inhabited by Ursaring, it is said that there are many streams and towering trees where they gather food. This Pokémon walks through its forest gathering food every day.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"In forests, it is said that there are many streams and towering trees where an Ursaring gathers food. It walks through its forest collecting food every day.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"With its ability to distinguish any smell, it unfailingly finds all food buried deep underground.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Although it is a good climber, it prefers to snap stout trees with its forelegs and eat fallen Berries.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"In its territory, it leaves scratches on trees that bear delicious berries or fruits.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"In its territory, it leaves scratches on trees that bear delicious berries or fruits.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"In its territory, it leaves scratches on trees that bear delicious berries or fruits.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Although it is a good climber, it prefers to snap trees with its forelegs and eat fallen berries.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"With its ability to distinguish any aroma, it unfailingly finds all food buried deep underground.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"In its territory, it leaves scratches on trees that bear delicious berries or fruits.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"In its territory, it leaves scratches on trees that bear delicious berries or fruits.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"In its territory, it leaves scratches on trees that bear delicious berries or fruits.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"In its territory, it leaves scratches on trees that bear delicious berries or fruits.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"With its ability to distinguish any aroma, it unfailingly finds all food buried deep underground.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Although it has a large body, it is quite skilled at climbing trees. It eats and sleeps in the treetops.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In the forests inhabited by Ursaring, it is said that there are many streams and towering trees where they gather food. This Pokémon walks through its forest gathering food every day.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In the forests inhabited by Ursaring, it is said that there are many streams and towering trees where they gather food. This Pokémon walks through its forest gathering food every day.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"In its territory, it leaves scratches on trees that bear delicious berries or fruits.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"In its territory, it leaves scratches on trees that bear delicious berries or fruits.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"When the cold season arrives in Hisui, this Pokémon will wander fields and mountains alike in search of its favorite berries. Ursaring's hunger during this time makes it a ferocious danger.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It usually wears a hardened expression, but when it's licking up honey—which it loves—the joy it feels will cause it to break into a wide grin.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is quite skilled at climbing trees. If it comes across a Primeape while searching for berries in the treetops, trouble will surely ensue.\"\n    }\n  ],\n  \"218\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It never sleeps. It has to keep moving because if it stopped, its magma body would cool and harden.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A common sight in volcanic areas, it slowly slithers around in a constant search for warm places.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"These group together in areas that are hotter than normal. If it cools off, its skin hardens.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It never sleeps. It has to keep moving because if it stopped, its magma body would cool and harden.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Molten magma courses throughout Slugma's circulatory system. If this Pokémon is chilled, the magma cools and hardens. Its body turns brittle and chunks fall off, reducing its size.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Slugma does not have any blood in its body. Instead, intensely hot magma circulates throughout this Pokémon's body, carrying essential nutrients and oxygen to its organs.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is a species of Pokémon that lives in volcanic areas. If its body cools, its skin hardens and immobilizes it. To avoid that, it sleeps near magma.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A common sight in volcanic areas, it slowly slithers around in a constant search for warm places.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It never sleeps. It has to keep moving because if it stopped, its magma body would cool and harden.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It never sleeps. It has to keep moving because if it stopped, its magma body would cool and harden.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A common sight in volcanic areas, it slowly slithers around in a constant search for warm places.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A common sight in volcanic areas, it slowly slithers around in a constant search for warm places.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Molten magma courses throughout Slugma's circulatory system. If this Pokémon is chilled, the magma cools and hardens. Its body turns brittle and chunks fall off, reducing its size.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Slugma does not have any blood in its body. Instead, intensely hot magma circulates throughout this Pokémon's body, carrying essential nutrients and oxygen to its organs.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body is made of magma. If it doesn't keep moving, its body will cool and harden.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its lava body can cool and chip away at times, but a magma bath will heal it right up.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's said that in ancient times, when volcanoes were more active, there were many more Slugma than there are now.\"\n    }\n  ],\n  \"219\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The shell on its back is just skin that has cooled and hardened. It breaks easily with a slight touch.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Its brittle shell occasionally spouts intense flames that circulate throughout its body.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its body is as hot as lava and is always billowing. Flames will occasionally burst from its shell.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The shell on its back is just skin that has cooled and hardened. It breaks easily with a slight touch.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Magcargo's shell is actually its skin that hardened as a result of cooling. Its shell is very brittle and fragile - just touching it causes it to crumble apart. This Pokémon returns to its original size by dipping itself in magma.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Magcargo's body temperature is approximately 18,000 degrees F. Water is vaporized on contact. If this Pokémon is caught in the rain, the raindrops instantly turn into steam, cloaking the area in a thick fog.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The shell on its back is made of hardened magma. Tens of thousands of years spent living in volcanic craters have turned Magcargo's bodies into magma.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its brittle shell occasionally spouts intense flames that circulate throughout its body.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The shell on its back is just skin that has cooled and hardened. It breaks easily with a slight touch.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body temperature is roughly 18,000 degrees F. Flames spout from gaps in its hardened shell.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body temperature is roughly 18,000 degrees F. Flames spout from gaps in its hardened shell.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its body temperature is roughly 18,000 degrees F. Flames spout from gaps in its hardened shell.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The shell on its back is just skin that has cooled and hardened. It breaks easily with a slight touch.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its brittle shell occasionally spouts intense flames that circulate throughout its body.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its body temperature is roughly 18,000 degrees F. Flames spout from gaps in its hardened shell.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its body temperature is roughly 18,000 degrees F. Flames spout from gaps in its hardened shell.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its body temperature is roughly 18,000 degrees F. Flames spout from gaps in its hardened shell.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its body temperature is roughly 18,000 degrees F. Flames spout from gaps in its hardened shell.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its brittle shell occasionally spouts intense flames that circulate throughout its body.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its body is as hot as lava and is always billowing. Flames will occasionally burst from its shell.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Magcargo's shell is actually its skin that hardened as a result of cooling. Its shell is very brittle and fragile—just touching it causes it to crumble apart. This Pokémon returns to its original size by dipping itself in magma.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Magcargo's body temperature is approximately 18,000 degrees Fahrenheit. Water is vaporized on contact. If this Pokémon is caught in the rain, the raindrops instantly turn into steam, cloaking the area in a thick fog.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body temperature is roughly 18,000 degrees Fahrenheit. Flames burst from gaps in its shell made of hardened magma.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body temperature is roughly 18,000 degrees Fahrenheit. Flames burst from gaps in its shell made of hardened magma.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon lives near the craters of volcanoes. It stores fire energy in its shell of cooled and hardened magma.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"According to folklore, a sudden increase in the wild Magcargo population heralds a volcanic eruption.\"\n    }\n  ],\n  \"220\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It rubs its snout on the ground to find and dig up food. It sometimes discovers hot springs.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If it smells something enticing, it dashes headlong off to find the source of the aroma.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It uses the tip of its nose to dig for food. Its nose is so tough that even frozen ground poses no problem.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It rubs its snout on the ground to find and dig up food. It sometimes discovers hot springs.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Swinub roots for food by rubbing its snout against the ground. Its favorite food is a mushroom that grows under the cover of dead grass. This Pokémon occasionally roots out hot springs.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Swinub roots for food by rubbing its snout against the ground. Its favorite food is a mushroom that grows under the cover of dead grass. This Pokémon occasionally roots out hot springs.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It roots for food by rubbing its snout against the ground. Its favorite food is a mushroom that grows under dried grass. It occasionally roots out hot springs.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If it smells something enticing, it dashes off headlong to find the source of the aroma.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It rubs its snout on the ground to find and dig up food. It sometimes discovers hot springs.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves eating mushrooms that grow under dead grass. It also finds hot springs while foraging.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It loves eating mushrooms that grow under dead grass. It also finds hot springs while foraging.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has a very sensitive nose. It can locate mushrooms, berries, and even hot springs buried under ice.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It rubs its snout on the ground to find and dig up food. It sometimes discovers hot springs.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it smells something enticing, it dashes off headlong to find the source of the aroma.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has a very sensitive nose. It can locate mushrooms, berries, and even hot springs buried under ice.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has a very sensitive nose. It can locate mushrooms, berries, and even hot springs buried under ice.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Rooting the tip of its snout into the ground, it searches for food. Sometimes it even digs up a hot spring.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Rooting the tip of its snout into the ground, it searches for food. Sometimes it even digs up a hot spring.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It rubs its snout on the ground to find and dig up food. It sometimes discovers hot springs.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it smells something enticing, it dashes off headlong to find the source of the aroma.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Swinub roots for food by rubbing its snout against the ground. Its favorite food is a mushroom that grows under the cover of dead grass. This Pokémon occasionally roots out hot springs.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Swinub roots for food by rubbing its snout against the ground. Its favorite food is a mushroom that grows under the cover of dead grass. This Pokémon occasionally roots out hot springs.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It rubs its snout on the ground to find and dig up food. It sometimes discovers hot springs.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If it smells something enticing, it dashes off headlong to find the source of the aroma.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It loves eating mushrooms that grow under dead grass. It also finds hot springs while foraging.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It loves eating mushrooms that grow under dead grass. It also finds hot springs while foraging.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Swinub excels at sniffing out mushrooms buried beneath grass or snow. Since ancient times, the people of Hisui have often relied upon this skill.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It searches for food by digging into the ground with its snout. Even frozen ground doesn't give it any trouble.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It rubs its snout against the ground, digging through the soil as it searches for food. Sometimes it digs up hot springs.\"\n    }\n  ],\n  \"221\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Because the long hair all over its body obscures its sight, it just keeps charging repeatedly.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If it charges at an enemy, the hairs on its back stand up straight. It is very sensitive to sound.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Although its legs are short, its rugged hooves prevent it from slipping, even on icy ground.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Because the long hair all over its body obscures its sight, it just keeps charging repeatedly.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Piloswine is covered by a thick coat of long hair that enables it to endure the freezing cold. This Pokémon uses its tusks to dig up food that has been buried under ice.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Piloswine is covered by a thick coat of long hair that enables it to endure the freezing cold. This Pokémon uses its tusks to dig up food that has been buried under ice.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Piloswine is covered by a thick coat of long hair for enduring freezing cold. It uses its tusks to dig up food that has been buried under ice.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If it charges at an enemy, the hairs on its back stand up straight. It is very sensitive to sound.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Because the long hair all over its body obscures its sight, it just keeps charging repeatedly.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its shaggy coat makes it unable to see. It checks surroundings with its sensitive nose instead.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its shaggy coat makes it unable to see. It checks surroundings with its sensitive nose instead.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Covered by a shaggy coat, it is strong against the cold. Its tusks of ice thicken when it snows.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Because the long hair all over its body obscures its sight, it just keeps charging repeatedly.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it charges at an enemy, the hairs on its back stand up straight. It is very sensitive to sound.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Covered by a shaggy coat, it is strong against the cold. Its tusks of ice thicken when it snows.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Covered by a shaggy coat, it is strong against the cold. Its tusks of ice thicken when it snows.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"With its excellent sense of smell, it's even able to find mushrooms that are buried under frozen ground.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"With its excellent sense of smell, it's even able to find mushrooms that are buried under frozen ground.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Although its legs are short, its rugged hooves prevent it from slipping, even on icy ground.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Because the long hair all over its body obscures its sight, it just keeps charging repeatedly.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Piloswine is covered by a thick coat of long hair that enables it to endure the freezing cold. This Pokémon uses its tusks to dig up food that has been buried under ice.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Piloswine is covered by a thick coat of long hair that enables it to endure the freezing cold. This Pokémon uses its tusks to dig up food that has been buried under ice.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If it charges at an enemy, the hairs on its back stand up straight. It is very sensitive to sound.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Although its legs are short, its rugged hooves prevent it from slipping, even on icy ground.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its shaggy coat makes it unable to see. It checks surroundings with its sensitive nose instead.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its shaggy coat makes it unable to see. It checks surroundings with its sensitive nose instead.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The long fur of this Pokémon covers its eyes, ears, and even limbs, allowing Piloswine to resist harshly frigid conditions. The Pokémon's white tusks can be used to defeat its enemies.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Covered by a shaggy coat, it is resistant to the cold. Its tusks of ice thicken when it snows.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Because the long hair all over its body obscures its sight, it just keeps charging repeatedly.\"\n    }\n  ],\n  \"222\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It continuously sheds and grows. The tip of its head is prized as a treasure for its beauty.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"In a south sea nation, the people live in communities that are built on groups of these Pokémon.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The points on its head absorb nutrients from clean water. They cannot survive in polluted water.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It continuously sheds and grows. The tip of its head is prized as a treasure for its beauty.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Corsola's branches glitter very beautifully in seven colors when they catch sunlight. If any branch breaks off, this Pokémon grows it back in just one night.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Clusters of Corsola congregate in warm seas where they serve as ideal hiding places for smaller Pokémon. When the water temperature falls, this Pokémon migrates to the southern seas.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Corsola live in warm southern seas. If the sea becomes polluted, the beautiful coral stalks become discolored and crumble away in tatters.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"In a south sea nation, the people live in communities that are built on groups of these Pokémon.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It continuously sheds and grows. The tip of its head is prized as a treasure for its beauty.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Many live in the clean seas of the south. They apparently can't live in polluted waters.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Many live in the clean seas of the south. They apparently can't live in polluted waters.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Many live in the clean seas of the south. They apparently can't live in polluted waters.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It continuously sheds and grows. The tip of its head is prized as a treasure because of its beauty.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"In a south-sea nation, the people live in communities that are built on groups of these Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Many live in the clean seas of the south. They apparently can't live in polluted waters.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Many live in the clean seas of the south. They apparently can't live in polluted waters.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They prefer unpolluted southern seas. Their coral branches lose their color and deteriorate in dirty water.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They prefer unpolluted southern seas. Their coral branches lose their color and deteriorate in dirty water.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It continuously sheds and grows. The tip of its head is prized as a treasure because of its beauty.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They prefer unpolluted southern seas. Their coral branches lose their color and deteriorate in dirty water.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Corsola's branches glitter very beautifully in seven colors when they catch sunlight. If any branch breaks off, this Pokémon grows it back in just one night.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Clusters of Corsola congregate in warm seas where they serve as ideal hiding places for smaller Pokémon. When the water temperature falls, this Pokémon migrates to the southern seas.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Coral branches grow from its head. They break off quite easily, but they grow back in about three days.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Pursued by Mareanie for the branches on its head, this Pokémon will sometimes snap its own branches off as a diversion while it escapes.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The pink of Corsola that live in Alola is deep and vibrant, thanks to seas filled with nutrition.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"In Alola, where their natural enemies Mareanie are plentiful, many Corsola have stubby branches on their heads.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It will regrow any branches that break off its head. People keep particularly beautiful Corsola branches as charms to promote safe childbirth.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Pokémon live in warm seas. In prehistoric times, many lived in the oceans around the Galar region as well.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Many live in the clean seas of the south. They apparently can't live in polluted waters.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Many live in the clean seas of the south. They apparently can't live in polluted waters.\"\n    }\n  ],\n  \"223\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has superb accuracy. The water it shoots out can strike even moving prey from more than 300 feet.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Using its dorsal fin as a suction pad, it clings to a Mantine's underside to scavenge for leftovers.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"To escape from an attacker, it may shoot water out of its mouth, then use that force to swim backward.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has superb accuracy. The water it shoots out can strike even moving prey from more than 300 feet.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Remoraid sucks in water, then expels it at high velocity using its abdominal muscles to shoot down flying prey. When evolution draws near, this Pokémon travels downstream from rivers.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Remoraid sucks in water, then expels it at high velocity using its abdominal muscles to shoot down flying prey. When evolution draws near, this Pokémon travels downstream from rivers.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Remoraid uses its abdominal muscles to forcefully expel swallowed water, then shoot down flying prey. When evolution approaches, it travels down rivers.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Using its dorsal fin as a suction pad, it clings to a Mantine's underside to scavenge for leftovers.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has superb accuracy. The water it shoots out can strike even moving prey from more than 100 yards.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It squirts water forcefully from its mouth to shoot down flying prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It clings to Mantine to feed on the big Pokémon's scraps. This is an adaptation to avoid foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It forcefully squirts water. The water jet never misses prey even if the Remoraid is deep in the sea.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has superb accuracy. The water it shoots out can strike moving prey from more than 300 feet away.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Using its dorsal fin as a suction pad, it clings to a Mantine's underside to scavenge for leftovers.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It forcefully squirts water. The water jet never misses prey even if the Remoraid is deep in the sea.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It forcefully squirts water. The water jet never misses prey even if the Remoraid is deep in the sea.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The water they shoot from their mouths can hit moving prey from more than 300 feet away.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The water they shoot from their mouths can hit moving prey from more than 300 feet away.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has superb accuracy. The water it shoots out can strike moving prey from more than 300 feet away.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Using its dorsal fin as a suction pad, it clings to a Mantine's underside to scavenge for leftovers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Remoraid sucks in water, then expels it at high velocity using its abdominal muscles to shoot down flying prey. When evolution draws near, this Pokémon travels downstream from rivers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Remoraid sucks in water, then expels it at high velocity using its abdominal muscles to shoot down flying prey. When evolution draws near, this Pokémon travels downstream from rivers.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Pokémon clings to Mantine and shares in its prosperity. When its Mantine is attacked, Remoraid will fight alongside it!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Also known as the \\\"sniper of the seas,\\\" its water gun can hit prey without fail from over 300 feet away.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The water they shoot from their mouths can hit moving prey from more than 300 feet away.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Using its dorsal fin as a suction pad, it clings to a Mantine's underside to scavenge for leftovers.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It squirts water forcefully from its mouth to shoot down flying prey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It clings to Mantine to feed on the big Pokémon's scraps. This is an adaptation to avoid foes.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Spits water from its mouth with incredible accuracy. It captures Burmy by shooting them down off the branches from which they dangle.\"\n    }\n  ],\n  \"224\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It traps enemies with its suction-cupped tentacles then smashes them with its rock-hard head.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It instinctively sneaks into rocky holes. If it gets sleepy, it steals the nest of a fellow Octillery.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Its instinct is to bury itself in holes. It often steals the nesting holes of others to sleep in them.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It traps enemies with its suction cupped tentacles then smashes them with its rock-hard head.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Octillery grabs onto its foe using its tentacles. This Pokémon tries to immobilize it before delivering the finishing blow. If the foe turns out to be too strong, Octillery spews ink to escape.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Octillery grabs onto its foe using its tentacles. This Pokémon tries to immobilize it before delivering the finishing blow. If the foe turns out to be too strong, Octillery spews ink to escape.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It ensnares its foe with its suction-cupped tentacles before delivering the finishing blow. If the foe turns out to be too strong, it spews ink to escape.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It instinctively sneaks into rocky holes. If it gets sleepy, it steals the nest of a fellow Octillery.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It traps enemies with its suction-cupped tentacles, then smashes them with its rock-hard head.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in the gaps of boulders and in holes on the seafloor. Its suction cups grip prey tightly.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It obscures its foe's vision by spitting a cloud of murky ink. It makes its nest among boulders.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It loves to lurk inside holes in rocks. It sometimes sprays ink on prey by sticking out only its mouth.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It traps foes with the suction cups on its tentacles, then smashes them with its rock-hard head.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It instinctively sneaks into rocky holes. If it gets sleepy, it steals the nest of a fellow Octillery.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It loves to lurk inside holes in rocks. It sometimes sprays ink on prey by sticking out only its mouth.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It loves to lurk inside holes in rocks. It sometimes sprays ink on prey by sticking out only its mouth.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has a tendency to want to be in holes. It prefers rock crags or pots and sprays ink from them before attacking.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has a tendency to want to be in holes. It prefers rock crags or pots and sprays ink from them before attacking.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a tendency to want to be in holes. It prefers rock crags or pots and sprays ink from them before attacking.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It traps foes with the suction cups on its tentacles, then smashes them with its rock-hard head.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Octillery grabs onto its foe using its tentacles. This Pokémon tries to immobilize it before delivering the finishing blow. If the foe turns out to be too strong, Octillery spews ink to escape.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Octillery grabs onto its foe using its tentacles. This Pokémon tries to immobilize it before delivering the finishing blow. If the foe turns out to be too strong, Octillery spews ink to escape.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The ink it spits when escaping is special. It contains a substance that dulls the sense of smell, so Pokémon with keen noses get lost.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It usually sleeps in caves. The pitch-black ink that Octillery spits is also used for cooking.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has a tendency to want to be in holes. It prefers rock crags or pots and sprays ink from them before attacking.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It traps enemies with its suction-cupped tentacles, then smashes them with its rock-hard head.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in the gaps of boulders and in holes on the seafloor. Its suction cups grip prey tightly.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It obscures its foe's vision by spitting a cloud of black ink. It makes its nest among boulders.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"While Octillery still shoots water from its mouth, the drastic anatomical difference between it and Remoraid meant that for a long time, no one believed the former evolved from the latter.\"\n    }\n  ],\n  \"225\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It carries food all day long. There are tales about lost people who were saved by the food it had.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It nests at the edge of sharp cliffs. It spends all day carrying food to its awaiting chicks.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It always carries its food with it, wherever it goes. If attacked, it throws its food at the opponent.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It carries food all day long. There are tales about lost people who were saved by the food it had.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Delibird carries its food bundled up in its tail. There once was a famous explorer who managed to reach the peak of Mt. Everest thanks to one of these Pokémon sharing its food.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Delibird carries its food bundled up in its tail. There once was a famous explorer who managed to reach the peak of Mt. Everest thanks to one of these Pokémon sharing its food.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It carries food bundled up in its tail. There was a famous explorer who managed to scale Mt. Everest thanks to a Delibird sharing its food.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It nests at the edge of sharp cliffs. It spends all day carrying food to its awaiting chicks.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It carries food all day long. There are tales about lost people who were saved by the food it had.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It carries food rolled up in its tail. It has the habit of sharing food with people lost in mountains.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It carries food rolled up in its tail. It has the habit of sharing food with people lost in mountains.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It carries food rolled up in its tail. It has the habit of sharing food with people lost in mountains.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It carries food all day long. There are tales about lost people who were saved by its stored food.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It nests at the edge of sharp cliffs. It spends all day carrying food to its awaiting chicks.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It carries food rolled up in its tail. It has the habit of sharing food with people lost in mountains.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It carries food rolled up in its tail. It has the habit of sharing food with people lost in mountains.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It carries food all day long. When someone is lost in the mountains, it shares that food.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It carries food all day long. When someone is lost in the mountains, it shares that food.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It carries food rolled up in its tail. It has the habit of sharing food with people lost in mountains.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It carries food all day long. When someone is lost in the mountains, it shares that food.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Delibird carries its food bundled up in its tail. There once was a famous explorer who managed to reach the peak of the world's highest mountain, thanks to one of these Pokémon sharing its food.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Delibird carries its food bundled up in its tail. There once was a famous explorer who managed to reach the peak of the world's highest mountain, thanks to one of these Pokémon sharing its food.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Although it naturally prefers colder locales, Delibird in Alola seem able to withstand the heat to a certain extent.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It has a generous habit of sharing its food with people and Pokémon, so it's always scrounging around for more food.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It shares its food with people who are stranded. Because Delibird is omnivorous, sometimes it gives those people bug Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It wraps food in its tail to carry it around. The Delibird with the biggest tail is the boss of the flock!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It carries food all day long. There are tales about lost people who were saved by the food it had.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has a generous habit of sharing its food with people and Pokémon, so it's always scrounging around for more food.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It carries food rolled up in its tail. It has a habit of sharing food with people lost in the mountains.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It carries food rolled up in its tail. It has a habit of sharing food with people lost in the mountains.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It carries food all day long. There are tales about lost people who were saved by the food it had.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It always carries its food with it, wherever it goes. If attacked, it throws its food at the opponent.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It carries food rolled up in its tail. It has a habit of sharing food with people lost in the mountains.\"\n    }\n  ],\n  \"226\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"As it majestically swims, it doesn't care if Remoraid attach to it for scavenging its leftovers.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Swimming freely in open seas, it may fly out of the water and over the waves if it builds up enough speed.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It swims along freely, eating things that swim into its mouth. Its whole body is very coarse.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"As it majestically swims, it doesn't care if Remoraid attach to it for scavenging its leftovers.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"On sunny days, schools of Mantine can be seen elegantly leaping over the sea's waves. This Pokémon is not bothered by the Remoraid that hitches rides.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"On sunny days, schools of Mantine can be seen elegantly leaping over the sea's waves. This Pokémon is not bothered by the Remoraid that hitches rides.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"On sunny days, schools of Mantine can be seen elegantly leaping over the waves. It is not bothered by the Remoraid that hitches rides.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Swimming freely in open seas, it may fly out of the water and over the waves if it builds up enough speed.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"As it majestically swims, it doesn't care if Remoraid attach to it to scavenge for its leftovers.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When the waves are calm, one may encounter a swarm of Mantine swimming as if they are in flight.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It swims elegantly, mindless of Remoraid hitching on to its broad fins. It has a docile nature.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"While elegantly swimming in the sea, it ignores Remoraid that cling to its fins seeking food scraps.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"As it majestically swims, it doesn't care if Remoraid attach to it for scavenging its leftovers.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Swimming freely in open seas, it may fly out of the water and over the waves if it builds up enough speed.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"While elegantly swimming in the sea, it ignores Remoraid that cling to its fins seeking food scraps.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"While elegantly swimming in the sea, it ignores Remoraid that cling to its fins seeking food scraps.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If it builds up enough speed swimming, it can fly over 300 feet out of the water from the surface of the ocean.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If it builds up enough speed swimming, it can fly over 300 feet out of the water from the surface of the ocean.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If it builds up enough speed swimming, it can fly over 300 feet out of the water from the surface of the ocean.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"While elegantly swimming in the sea, it ignores Remoraid that cling to its fins seeking food scraps.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"On sunny days, schools of Mantine can be seen elegantly leaping over the sea's waves. This Pokémon is not bothered by the Remoraid that hitches rides.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"On sunny days, schools of Mantine can be seen elegantly leaping over the sea's waves. This Pokémon is not bothered by the Remoraid that hitches rides.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Postcards and posters featuring Mantine leaping elegantly above the waves are popular souvenirs of Alola.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Many people have taken up surfing because they admire how magnificently Mantine swims.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If it builds up enough speed swimming, it can jump out above the waves and glide for over 300 feet.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"As it majestically swims, it doesn't care if Remoraid attach to it to scavenge for its leftovers.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When the waves are calm, one may encounter a swarm of Mantine swimming as if they are in flight.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It swims elegantly, mindless of Remoraid hitching onto its broad fins. It is naturally docile.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This calm and gentle Pokémon swims gracefully through the sea. After building speed, it can leap out of the water. It is often misidentified as a bird Pokémon due to this behavior.\"\n    }\n  ],\n  \"227\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its sturdy wings look heavy, but they are actually hollow and light, allowing it to fly freely in the sky.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"After nesting in bramble bushes, the wings of its chicks grow hard from scratches by thorns.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The feathers that it sheds are very sharp. It is said that people once used the feathers as swords.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its sturdy wings look heavy, but they are actually hollow and light, allowing it to fly freely in the sky.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Skarmory is entirely encased in hard, protective armor. This Pokémon flies at close to 190 mph. It slashes foes with its wings that possess swordlike cutting edges.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Skarmory's steel wings become tattered and bashed in from repeated battles. Once a year, the battered wings grow back completely, restoring the cutting edges to their pristine state.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that has a body and wings of steel. People in the past used feathers fallen from Skarmory to make swords and knives.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"After nesting in bramble bushes, the wings of its chicks grow hard from scratches by thorns.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its sturdy wings look heavy, but its bones are hollow and light, allowing it to fly freely in the sky.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Despite being clad entirely in iron-hard armor, it flies at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Despite being clad entirely in iron-hard armor, it flies at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Despite being clad entirely in iron-hard armor, it flies at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its sturdy wings look heavy, but they are actually hollow and light, allowing it to fly freely in the sky.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"After nesting in bramble bushes, the wings of its chicks grow hard from scratches by thorns.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Despite being clad entirely in iron-hard armor, it flies at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Despite being clad entirely in iron-hard armor, it flies at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its heavy-looking iron body is actually thin and light, so it can fly at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its heavy-looking iron body is actually thin and light, so it can fly at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"After nesting in bramble bushes, the wings of its chicks grow hard from scratches by thorns.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Despite being clad entirely in iron-hard armor, it flies at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Skarmory is entirely encased in hard, protective armor. This Pokémon flies at close to 190 mph. It slashes foes with its wings that possess swordlike cutting edges.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Skarmory's steel wings become tattered and bashed in from repeated battles. Once a year, the battered wings grow back completely, restoring the cutting edges to their pristine state.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its feathers, which fall off as it grows, are thin and sharp. In times long past, warriors used them as swords.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its metal body is sturdy, but it does rust rather easily. So on rainy days, this Pokémon prefers to stay put in its nest.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The wing feathers it sheds can be processed and made into knives whose sharpness is recognized by the finest chefs.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its body is draped in steel armor. It looks heavy, but it can fly at speeds of up to 185 miles an hour!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The pointed feathers of these Pokémon are sharper than swords. Skarmory and Corviknight fight viciously over territory.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"People fashion swords from Skarmory's shed feathers, so this Pokémon is a popular element in heraldic designs.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Skarmory is clad entirely in ironhard armor. It flies at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Skarmory is clad entirely in ironhard armor. It flies at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its sturdy, heavy-looking iron body is actually thin and light, so it can fly at speeds over 180 mph.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Since the feathers that it sheds are thin and sharp, people apparently once used them as swords.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Because it nests in bramble bushes, the feathers of its chicks grow hard from being scratched by thorns.\"\n    }\n  ],\n  \"228\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It uses different kinds of cries for communicating with others of its kind and for pursuing its prey.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"To corner prey, they check each other's location using barks that only they can understand.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Around dawn, its ominous howl echoes through the area to announce that this is its territory.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It uses different kinds of cries for communicating with others of its kind and for pursuing its prey.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Houndour hunt as a coordinated pack. They communicate with each other using a variety of cries to corner their prey. This Pokémon's remarkable teamwork is unparalleled.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Houndour hunt as a coordinated pack. They communicate with each other using a variety of cries to corner their prey. This Pokémon's remarkable teamwork is unparalleled.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Houndour communicate with each other using a variety of cries to corner their prey. This Pokémon's remarkable teamwork is simply unparalleled.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"To corner prey, they check each other's location using barks that only they can understand.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It uses different kinds of cries for communicating with others of its kind and for pursuing prey.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It conveys its feelings using different cries. It works in a pack to cleverly take down prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It conveys its feelings using different cries. It works in a pack to cleverly take down prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is smart enough to hunt in packs. It uses a variety of cries for communicating with others.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It uses different kinds of cries for communicating with others of its kind and for pursuing its prey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"To corner prey, they check each other's location using barks that only they can understand.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is smart enough to hunt in packs. It uses a variety of cries for communicating with others.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is smart enough to hunt in packs. It uses a variety of cries for communicating with others.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is smart enough to hunt in packs. It uses a variety of cries for communicating with others.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is smart enough to hunt in packs. It uses a variety of cries for communicating with others.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Around dawn, its ominous howl echoes through the area to announce that this is its territory.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"To corner prey, they check each other's location using barks that only they can understand.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Houndour hunt as a coordinated pack. They communicate with each other using a variety of cries to corner their prey. This Pokémon's remarkable teamwork is unparalleled.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Houndour hunt as a coordinated pack. They communicate with each other using a variety of cries to corner their prey. This Pokémon's remarkable teamwork is unparalleled.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It cooperates with others skillfully. When it becomes your partner, it's very loyal to you as its Trainer and will obey your orders.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They make repeated eerie howls before dawn to call attention to their pack.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It conveys its feelings using different cries. It works in a pack to cleverly take down prey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It conveys its feelings using different cries. It works in a pack to cleverly take down prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is smart enough to hunt in packs. It uses a variety of cries for communicating with others.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It uses different kinds of cries for communicating with others of its kind and for pursuing its prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Around dawn, their ominous howls echo through the area to announce their territory.\"\n    }\n  ],\n  \"229\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If you are burned by the flames it shoots from its mouth, the pain will never go away.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Upon hearing its eerie howls, other Pokémon get the shivers and head straight back to their nests.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The pungent-smelling flame that shoots from its mouth results from toxins burning in its body.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If you are burned by the flames it shoots from its mouth, the pain will never go away.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"In a Houndoom pack, the one with its horns raked sharply towards the back serves a leadership role. These Pokémon choose their leader by fighting amongst themselves.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"In a Houndoom pack, the one with its horns raked sharply towards the back serves a leadership role. These Pokémon choose their leader by fighting amongst themselves.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"In a Houndoom pack, the one with its horns raked sharply back serves a leadership role. They choose their leader by fighting among themselves.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Upon hearing its eerie howls, other Pokémon get the shivers and head straight back to their nests.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If you are burned by the flames it shoots from its mouth, the pain will never go away.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Long ago, people imagined its eerie howls to be the call of the grim reaper.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Long ago, people imagined its eerie howls to be the call of the grim reaper.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The flames it breathes when angry contain toxins. If they cause a burn, it will hurt forever.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If you are burned by the flames it shoots from its mouth, the pain will never go away.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Upon hearing its eerie howls, other Pokémon get the shivers and head straight back to their nests.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The flames it breathes when angry contain toxins. If they cause a burn, it will hurt forever.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The flames it breathes when angry contain toxins. If they cause a burn, it will hurt forever.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The flames it breathes when angry contain toxins. If they cause a burn, it will hurt forever.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The flames it breathes when angry contain toxins. If they cause a burn, it will hurt forever.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Long ago, people imagined its eerie howls to be the call of the grim reaper.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The flames it breathes when angry contain toxins. If they cause a burn, it will hurt forever.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In a Houndoom pack, the one with its horns raked sharply toward the back serves a leadership role. These Pokémon choose their leader by fighting among themselves.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In a Houndoom pack, the one with its horns raked sharply toward the back serves a leadership role. These Pokémon choose their leader by fighting among themselves.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They spew flames mixed with poison to finish off their opponents. They divvy up their prey evenly among the members of their pack.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Identifiable by its eerie howls, people a long time ago thought it was the grim reaper and feared it.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Long ago, people imagined its eerie howls to be the call of the grim reaper.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Long ago, people imagined its eerie howls to be the call of the grim reaper.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If you are burned by the flames it shoots from its mouth, the pain will never go away.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Upon hearing its eerie howls, other Pokémon get the shivers and head straight back to their nests.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The flames it breathes when angry contain toxins. If they cause a burn, it will hurt forever.\"\n    }\n  ],\n  \"230\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is said that it usually hides in underwater caves. It can create whirlpools by yawning.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It sleeps deep on the ocean floor to build its energy. It is said to cause tornadoes as it wakes.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It stores energy by sleeping at underwater depths at which no other life forms can survive.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is said that it usually hides in underwater caves. It can create whirlpools by yawning.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Kingdra lives at extreme ocean depths that are otherwise uninhabited. It has long been believed that the yawning of this Pokémon creates spiraling ocean currents.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Kingdra sleeps on the seafloor where it is otherwise devoid of life. When a storm arrives, the Pokémon is said to awaken and wander about in search of prey.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It sleeps quietly, deep on the seafloor. When it comes up to the surface, it creates a huge whirlpool that can swallow even ships.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It sleeps deep on the ocean floor to build its energy. It is said to cause tornadoes as it wakes.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is said that it usually hides in underwater caves. It can create whirlpools by yawning.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in caves on the seafloor and creates giant whirlpools every time it moves.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives in caves on the seafloor and creates giant whirlpools every time it moves.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives in caves on the seafloor and creates giant whirlpools every time it moves.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is said that it usually hides in underwater caves. It can create whirlpools by yawning.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It sleeps deep on the ocean floor to build its energy. It is said to cause tornadoes as it wakes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives in caves on the seafloor and creates giant whirlpools every time it moves.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives in caves on the seafloor and creates giant whirlpools every time it moves.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives in caves on the seafloor and creates giant whirlpools every time it moves.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives in caves on the seafloor and creates giant whirlpools every time it moves.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said that it usually hides in underwater caves. It can create whirlpools by yawning.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It stores energy by sleeping at underwater depths at which no other life-forms can survive.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Kingdra lives at extreme ocean depths that are otherwise uninhabited. It has long been believed that the yawning of this Pokémon creates spiraling ocean currents.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Kingdra sleeps on the seafloor where it is otherwise devoid of life. When a storm arrives, the Pokémon is said to awaken and wander about in search of prey.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With the arrival of a storm at sea, this Pokémon will show itself on the surface. When a Kingdra and a Dragonite meet, a fierce battle ensues.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Scales shed by this Pokémon have such a splendorous gleam to them that they've been given to royalty as gifts.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in caves on the seafloor and creates giant whirlpools every time it moves.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives in caves on the seafloor and creates giant whirlpools every time it moves.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It sleeps deep on the ocean floor to build its energy. It is said to cause tornadoes as it wakes.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon is said to sleep at the bottom of the sea—deeper than any other life-form can descend—building its energy.\"\n    }\n  ],\n  \"231\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It swings its long snout around playfully, but because it is so strong, that can be dangerous.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"As a sign of affection, it bumps with its snout. However, it is so strong, it may send you flying.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"During the deserted morning hours, it comes ashore where it deftly uses its trunk to take a shower.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It swings its long snout around playfully, but because it is so strong, that can be dangerous.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"For its nest, Phanpy digs a vertical pit in the ground at the edge of a river. It marks the area around its nest with its trunk to let the others know that the area has been claimed.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Phanpy uses its long nose to shower itself. When others gather around, they thoroughly douse each other with water. These Pokémon can be seen drying their soaking-wet bodies at the edge of water.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Phanpy's big ears serve as broad fans. When it becomes hot, it flaps the ears busily to cool down. Even the young are very strong.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"As a sign of affection, it bumps with its snout. However, it is so strong, it may send you flying.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It swings its long snout around playfully, but because it is so strong, this can be dangerous.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It swings its long snout around playfully, but because it is so strong, that can be dangerous.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"As a sign of affection, it bumps with its snout. However, it is so strong, it may send you flying.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"As a sign of affection, it bumps with its snout. However, it is so strong, it may send you flying.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"For its nest, Phanpy digs a vertical pit in the ground at the edge of a river. It marks the area around its nest with its trunk to let the others know that the area has been claimed.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Phanpy uses its long nose to shower itself. When others gather around, they thoroughly douse each other with water. These Pokémon can be seen drying their soaking-wet bodies at the edge of water.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is strong despite its compact size. It can easily pick up and carry an adult human on its back.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon lives and nests on a riverbank. After playing in the mud, it won't be able to settle down unless it washes its body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is far stronger than it appears. If a Phanpy is swinging its trunk around and your arm gets hit by it, your arm bone will shatter.\"\n    }\n  ],\n  \"232\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It has sharp, hard tusks and a rugged hide. Its Tackle is strong enough to knock down a house.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"The longer and bigger its tusks, the higher its rank in its herd. The tusks take long to grow.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Because this Pokémon's skin is so tough, a normal attack won't even leave a scratch on it.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It has sharp, hard tusks and a rugged hide. Its Tackle is strong enough to knock down a house.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Donphan's favorite attack is curling its body into a ball, then charging at its foe while rolling at high speed. Once it starts rolling, this Pokémon can't stop very easily.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If Donphan were to tackle with its hard body, even a house could be destroyed. Using its massive strength, the Pokémon helps clear rock and mud slides that block mountain trails.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Donphan is so strong it can easily haul a dump truck. Its hide has toughened to a rock-hard state. An ordinary sort of attack won't even leave a scratch.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The longer and bigger its tusks, the higher its rank in its herd. The tusks take a long time to grow.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has sharp, hard tusks and a rugged hide. Its Tackle is strong enough to knock down a house.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It attacks by curling up, then rolling into its foe. It can blow apart a house in one hit.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It attacks by curling up, then rolling into its foe. It can blow apart a house in one hit.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It attacks by curling up, then rolling into its foe. It can blow apart a house in one hit.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has sharp, hard tusks and a rugged hide. Its tackle is strong enough to knock down a house.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The longer and bigger its tusks, the higher its rank in its herd. The tusks take long to grow.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It attacks by curling up, then rolling into its foe. It can blow apart a house in one hit.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It attacks by curling up, then rolling into its foe. It can blow apart a house in one hit.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It attacks by curling up then rolling into its foe. It can blow apart a house in one hit.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It attacks by curling up then rolling into its foe. It can blow apart a house in one hit.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has sharp, hard tusks and a rugged hide. Its Tackle is strong enough to knock down a house.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The longer and bigger its tusks, the higher its rank in its herd. The tusks take long to grow.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Donphan's favorite attack is curling its body into a ball, then charging at its foe while rolling at high speed. Once it starts rolling, this Pokémon can't stop very easily.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If Donphan were to tackle with its hard body, even a house could be destroyed. Using its massive strength, the Pokémon helps clear rock and mud slides that block mountain trails.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It attacks by curling up and rolling into its foe. It can blow apart a house in one hit.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It attacks by curling up and rolling into its foe. It can blow apart a house in one hit.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Donphan is covered in tough hide, so even being hit by a car won't faze this Pokémon. However, it is extremely susceptible to rain.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Donphan is normally a calm Pokémon, but once it is enraged, it will curl its body into a ball and charge at you while rolling.\"\n    }\n  ],\n  \"233\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This artificial Pokémon evolved thanks to cutting-edge science. It sometimes displays behavior that is not in its programming.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This upgraded version of Porygon is designed for space exploration. It can't fly, though.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Further research enhanced its abilities. Sometimes, it may exhibit motions that were not programmed.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This manmade Pokémon evolved from the latest technology. It may have unprogrammed reactions.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This upgraded version of Porygon is designed for space exploration. It can't fly, though.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Porygon2 was created by humans using the power of science. The man-made Pokémon has been endowed with artificial intelligence that enables it to learn new gestures and emotions on its own.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Porygon2 was created by humans using the power of science. The man-made Pokémon has been endowed with artificial intelligence that enables it to learn new gestures and emotions on its own.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It was created by humans using the power of science. It has been given artificial intelligence that enables it to learn new gestures and emotions on its own.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Further research enhanced its abilities. Sometimes, it may exhibit motions that were not programmed.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"This upgraded version of Porygon is designed for space exploration. However, it can't even fly.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"With planetary development software installed, it became capable of working in space.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"With planetary development software installed, it became capable of working in space.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It was upgraded to enable the exploration of other planets. However, it failed to measure up.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This upgraded version of Porygon is designed for space exploration. It can't fly, however.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Further research enhanced its abilities. Sometimes, it may exhibit motions that were not programmed.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It was upgraded to enable the exploration of other planets. However, it failed to measure up.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It was upgraded to enable the exploration of other planets. However, it failed to measure up.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It was upgraded to enable the exploration of other planets. However, it failed to measure up.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It was upgraded to enable the exploration of other planets. However, it failed to measure up.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Further research enhanced its abilities. Sometimes, it may exhibit motions that were not programmed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"With planetary development software installed, it became capable of working in space.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Porygon2 was created by humans using the power of science. The man-made Pokémon has been endowed with artificial intelligence that enables it to learn new gestures and emotions on its own.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Porygon2 was created by humans using the power of science. The man-made Pokémon has been endowed with artificial intelligence that enables it to learn new gestures and emotions on its own.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"For the purposes of planetary development, Porygon was updated with the most cutting-edge technology available.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Porygon was updated to a new version in readiness for planetary development. But that dream remains unrealized as yet.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"AI has been installed in it. It learns various things all on its own, but it even remembers things it doesn't need to know.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Even though it doesn't die in the vacuum of space, it can't move around very well in zero gravity.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This is a Porygon that was updated with special data. Porygon2 develops itself by learning about many different subjects all on its own.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"After artificial intelligence was implemented in Porygon2, the Pokémon began using a strange language that only other Porygon2 understand.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"With planetary development software installed, it became capable of working in space.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"With planetary development software installed, it became capable of working in space.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A bizarre item caused this Pokémon to evolve. While it now exhibits many new gestures and expressions, its biology remains inscrutable.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This artificial Pokémon evolved thanks to cutting-edge science. It sometimes displays behavior that is not in its programming.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Porygon was upgraded to become capable of planetary development. However, this upgraded version cannot even fly yet.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Porygon was updated so it could carry out development projects on other planets. The update used cutting-edge technology for its time.\"\n    }\n  ],\n  \"234\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The curved antlers subtly change the flow of air to create a strange space where reality is distorted.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Those who stare at its antlers will gradually lose control of their senses and be unable to stand.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The round balls found on the fallen antlers can be ground into a powder that aids in sleeping.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The curved antlers subtly change the flow of air to create a strange space where reality is distorted.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Stantler's magnificent antlers were traded at high prices as works of art. As a result, this Pokémon was hunted close to extinction by those who were after the priceless antlers.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Stantler's magnificent antlers were traded at high prices as works of art. As a result, this Pokémon was hunted close to extinction by those who were after the priceless antlers.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Stantler's magnificent antlers were once traded at high prices as works of art. As a result, this Pokémon was hunted close to extinction.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Those who stare at its antlers will gradually lose control of their senses and be unable to stand.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its curved antlers subtly change the flow of air to create a strange space where reality is distorted.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The curved antlers subtly change the flow of air to create a strange space where reality is distorted.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Those who stare at its antlers will gradually lose control of their senses and be unable to stand.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The curved antlers subtly change the flow of air to create a strange space where reality is distorted.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Stantler's magnificent antlers were traded at high prices as works of art. As a result, this Pokémon was hunted close to extinction by those who were after the priceless antlers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Stantler's magnificent antlers were traded at high prices as works of art. As a result, this Pokémon was hunted close to extinction by those who were after the priceless antlers.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Staring at its antlers creates an odd sensation as if one were being drawn into their centers.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its strangely shaped antlers have the power to bewitch those who see them. Medicine made by grinding up the black orbs from fallen antlers is an effective treatment for insomnia.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon apparently used to live in much harsher environments, and thus it once had stronger psychic powers than it does now.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's said that this Pokémon used to be stronger long ago when it had many enemies, and that it was even able to evolve under its own power.\"\n    }\n  ],\n  \"235\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This Pokémon secretes multicolored bodily fluids from the tip of its tail that it uses as paint. It hopes to paint the landscape of its birthplace someday.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"A special fluid oozes from the tip of its tail. It paints the fluid everywhere to mark its territory.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Once it becomes an adult, it has a tendency to let its comrades plant footprints on its back.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The color of the mysterious fluid secreted from its tail is predetermined for each Smeargle.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"A special fluid oozes from the tip of its tail. It paints the fluid everywhere to mark its territory.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Smeargle marks the boundaries of its territory using a body fluid that leaks out from the tip of its tail. Over 5,000 different marks left by this Pokémon have been found.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Smeargle marks the boundaries of its territory using a body fluid that leaks out from the tip of its tail. Over 5,000 different marks left by this Pokémon have been found.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Smeargle marks its territory using a fluid that leaks out from the tip of its tail. About 5,000 different marks left by this Pokémon have been found.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Once it becomes an adult, it has a tendency to let its comrades plant footprints on its back.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A special fluid oozes from the tip of its tail. It paints the fluid everywhere to mark its territory.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A special fluid oozes from the tip of its tail. It paints the fluid everywhere to mark its territory.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Once it becomes an adult, it has a tendency to let its comrades plant footprints on its back.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Once it becomes an adult, it has a tendency to let its comrades plant footprints on its back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Smeargle marks the boundaries of its territory using a body fluid that leaks out from the tip of its tail. Over 5,000 different marks left by this Pokémon have been found.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Smeargle marks the boundaries of its territory using a body fluid that leaks out from the tip of its tail. Over 5,000 different marks left by this Pokémon have been found.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The unique creations produced by each Smeargle are painted using the fluid that oozes from its tail. This is how it marks its territory.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It draws symbols all over the place to mark its territory. In towns with many Smeargle, the walls are covered in graffiti.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The fluid of Smeargle's tail secretions changes in the intensity of its hue as the Pokémon's emotions change.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It draws symbols with the fluid that oozes from the tip of its tail. Depending on the symbol, Smeargle fanatics will pay big money for them.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It marks its territory by using its tail like a paintbrush. There are more than 5,000 different marks.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Once a Smeargle reaches adulthood, it will have other members of its species leave paw prints on its back.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The color of the mysterious fluid secreted from the tip of the tail is predetermined for each Smeargle.\"\n    }\n  ],\n  \"236\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its intense desire to become stronger and stronger drives it to recklessly train its body and challenge any opponent it can find to battle.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is always bursting with energy. To make itself stronger, it keeps on fighting even if it loses.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Even though it is small, it can't be ignored because it will slug any handy target without warning.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"To brush up on its fighting skills, it will challenge anyone. It has a very strong competitive spirit.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is always bursting with energy. To make itself stronger, it keeps on fighting even if it loses.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Tyrogue becomes stressed out if it does not get to train every day. When raising this Pokémon, the Trainer must establish and uphold various training methods.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Tyrogue becomes stressed out if it does not get to train every day. When raising this Pokémon, the Trainer must establish and uphold various training methods.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Tyrogue become stressed out if they do not get to train every day. When raising this Pokémon, the Trainer must establish a regular training schedule.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Even though it is small, it can't be ignored because it will slug any handy target without warning.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is always bursting with energy. To make itself stronger, it keeps on fighting even if it loses.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is famous for its eagerness to fight and always nurses injuries from challenging larger foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is famous for its eagerness to fight and always nurses injuries from challenging larger foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is famous for its eagerness to fight and always nurses injuries from challenging larger foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is always bursting with energy. To make itself stronger, it keeps on fighting even if it loses.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Even though it is small, it can't be ignored because it will slug any handy target without warning.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is famous for its eagerness to fight and always nurses injuries from challenging larger foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is famous for its eagerness to fight and always nurses injuries from challenging larger foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is famous for its eagerness to fight and always nurses injuries from challenging larger foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is famous for its eagerness to fight and always nurses injuries from challenging larger foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is always bursting with energy. To make itself stronger, it keeps on fighting even if it loses.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"To brush up on its fighting skills, it will challenge anyone. It has a very strong competitive spirit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Tyrogue becomes stressed out if it does not get to train every day. When raising this Pokémon, the Trainer must establish and uphold various training methods.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Tyrogue becomes stressed out if it does not get to train every day. When raising this Pokémon, the Trainer must establish and uphold various training methods.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is always bursting with energy. To make itself stronger, it keeps on fighting even if it loses.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Even though it is small, it can't be ignored because it will slug any handy target without warning.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is famous for its eagerness to fight and always nurses injuries from challenging larger foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is famous for its eagerness to fight and always nurses injuries from challenging larger foes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This earnest Pokémon battles all sorts of opponents, searching for the fighting style that suits it best.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its intense desire to become stronger and stronger drives it to recklessly train its body and challenge any opponent it can find to battle.\"\n    }\n  ],\n  \"237\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This Pokémon is adept at dance-like kicks. The horn atop its head is made from the same substance that generally forms fur and claws.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"If you become enchanted by its smooth, elegant, dance-like kicks, you may get drilled hard.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It launches kicks while spinning. If it spins at high speed, it may bore its way into the ground.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"After doing a handstand to throw off the opponent's timing, it presents its fancy kick moves.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"If you become enchanted by its smooth, elegant, dance-like kicks, you may get drilled hard.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Hitmontop spins on its head at high speed, all the while delivering kicks. This technique is a remarkable mix of both offense and defense at the same time. The Pokémon travels faster spinning than it does walking.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Hitmontop spins on its head at high speed, all the while delivering kicks. This technique is a remarkable mix of both offense and defense at the same time. The Pokémon travels faster spinning than it does walking.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its technique of kicking while spinning is a remarkable mix of both offense and defense. Hitmontop travel faster spinning than they do walking.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It launches kicks while spinning. If it spins at high speed, it may bore its way into the ground.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If you become enchanted by its smooth, elegant, dance-like kicks, you may get drilled hard.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by ten.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by ten.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by ten.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If you are enchanted by its smooth, dance-like kicks, you may get a closer experience with one than you'd like.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It launches kicks while spinning. If it spins at high speed, it may bore its way into the ground.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by ten.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by ten.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by 10.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by 10.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by 10.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If you are enchanted by its smooth, dance-like kicks, you may get a closer experience with one than you'd like.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Hitmontop spins on its head at high speed, all the while delivering kicks. This technique is a remarkable mix of both offense and defense at the same time. The Pokémon travels faster spinning than it does walking.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Hitmontop spins on its head at high speed, all the while delivering kicks. This technique is a remarkable mix of both offense and defense at the same time. The Pokémon travels faster spinning than it does walking.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It launches kicks while spinning. If it spins at high speed, it may bore its way into the ground.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"After doing a handstand to throw off the opponent's timing, it presents its fancy kick moves.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by a factor of 10.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It fights while spinning like a top. The centrifugal force boosts its destructive power by a factor of 10.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is adept at dance-like kicks. The horn atop its head is made from the same substance that generally forms fur and claws.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It spins on its horn while dealing out elegant kicks. Its horn grows continuously through its lifetime.\"\n    }\n  ],\n  \"238\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its lips are the most sensitive parts on its body. It always uses its lips first to examine things.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It always rocks its head slowly backwards and forwards as if it is trying to kiss someone.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"The sensitivity of its lips develops most quickly. It uses them to try to identify unknown objects.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its lips are the most sensitive parts on its body. It always uses its lips first to examine things.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Smoochum actively runs about, but also falls quite often. Whenever the chance arrives, it will look for its reflection to make sure its face hasn't become dirty.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Smoochum actively runs about, but also falls quite often. Whenever the chance arrives, it will look for its reflection to make sure its face hasn't become dirty.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It actively runs about, but also falls often. Whenever it falls, it will check its reflection on a lake's surface to make sure its face hasn't become dirty.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It always rocks its head slowly backwards and forwards as if it is trying to kiss someone.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its lips are the most sensitive parts on its body. It always uses its lips first to examine things.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its lips are the most sensitive part of its body. It always uses its lips first to examine things.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It always rocks its head slowly backwards and forwards as if it is trying to kiss someone.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its lips are the most sensitive part of its body. It always uses its lips first to examine things.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Smoochum actively runs about, but also falls quite often. Whenever the chance arrives, it will look for its reflection to make sure its face hasn't become dirty.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Smoochum actively runs about, but also falls quite often. Whenever the chance arrives, it will look for its reflection to make sure its face hasn't become dirty.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it examines things, before touching them with its hands, it makes lip contact and then diligently licks all the dirt off its lips.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Highly perceptive sensors, Smoochum's lips are kept moist by its daily application of tree sap.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If its face gets even slightly dirty, Smoochum will bathe immediately. But if its body gets dirty, Smoochum doesn't really seem to care.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This is a very curious Pokémon. Smoochum decides what it likes and dislikes by touching things with its lips.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It tests everything by touching with its lips, which remember what it likes and dislikes.\"\n    }\n  ],\n  \"239\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It rotates its arms to generate electricity, but it tires easily, so it only charges up a little bit.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It rotates its arms to generate electricity, but it tires easily, so it charges up only a little bit.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Even in the most vicious storm, this Pokémon plays happily if thunder rumbles in the sky.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It loves violent thunder. The space between its horns flickers bluish-white when it is charging energy.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It rotates its arms to generate electricity, but it tires easily, so it charges up only a little bit.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Elekid stores electricity in its body. If it touches metal and accidentally discharges all its built-up electricity, this Pokémon begins swinging its arms in circles to recharge itself.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Elekid stores electricity in its body. If it touches metal and accidentally discharges all its built-up electricity, this Pokémon begins swinging its arms in circles to recharge itself.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"If it touches metal and discharges the electricity it has stored in its body, an Elekid begins swinging its arms in circles to recharge itself.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Even in the most vicious storm, this Pokémon plays happily if thunder rumbles in the sky.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It rotates its arms to generate electricity, but it tires easily, so it charges up only a little bit.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It generates electricity by whirling its arms. However, it can't store the energy it makes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It generates electricity by whirling its arms. However, it can't store the energy it makes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A weak electric current flows between its horns. Sticking a hand there shocks the unwary.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It rotates its arms to generate electricity, but it tires easily, so it only charges up a little bit.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Even in the most vicious storm, this Pokémon plays happily if thunder rumbles in the sky.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A weak electric current flows between its horns. Sticking a hand there shocks the unwary.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A weak electric current flows between its horns. Sticking a hand there shocks the unwary.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Spinning its arms around to generate electricity makes the area between its horns shine light blue.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Spinning its arms around to generate electricity makes the area between its horns shine light blue.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It generates electricity by whirling its arms. However, it can't store the energy it makes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Spinning its arms around to generate electricity makes the area between its horns shine light blue.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Elekid stores electricity in its body. If it touches metal and accidentally discharges all its built-up electricity, this Pokémon begins swinging its arms in circles to recharge itself.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Elekid stores electricity in its body. If it touches metal and accidentally discharges all its built-up electricity, this Pokémon begins swinging its arms in circles to recharge itself.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it's in a house, electrical outlets serve as its baby bottles. It sucks down electricity.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon is constantly fighting with Togedemaru that try to steal its electricity. It's a pretty even match.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it hears the crash of thunder, Elekid's mood improves. It can be useful to record that sound and play it when Elekid's feeling down.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When its horns shine a bluish white, that's the sign it's fully charged. You'll get a shocking jolt if you touch it!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When a storm approaches, this Pokémon gets restless. Once Elekid hears the sound of thunder, it gets full-on rowdy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's not good at storing electricity yet. This Pokémon sneaks into people's homes, looking for electrical outlets to eat electricity from.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It generates electricity by whirling its arms. However, it can't store the energy it makes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It generates electricity by whirling its arms. However, it can't store the energy it makes.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"They generate electricity by spinning their arms. During a thunderstorm, if one hears the lively voices of children out in the wilderness, what one is actually hearing are the voices of Elekid.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It loves violent thunder. The space between its horns flickers bluish white when it is charging energy.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It rotates its arms to generate electricity, but it tires easily, so it only charges up a little bit.\"\n    }\n  ],\n  \"240\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Each and every time it inhales and exhales, sparks leak from its mouth and nostrils.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Each and every time it inhales and exhales, hot embers dribble out of its mouth and nostrils.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It is found in volcanic craters. Its body temp. is over 1100 degrees, so don't underestimate it.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It naturally spits an 1100-degree flame. It is said when many appear, it heralds a volcanic eruption.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Each and every time it inhales and exhales, hot embers dribble out of its mouth and nostrils.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Magby's state of health is determined by observing the fire it breathes. If the Pokémon is spouting yellow flames from its mouth, it is in good health. When it is fatigued, black smoke will be mixed in with the flames.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Magby's state of health is determined by observing the fire it breathes. If the Pokémon is spouting yellow flames from its mouth, it is in good health. When it is fatigued, black smoke will be mixed in with the flames.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"If a Magby is spouting yellow flames from its mouth, it is in good health. When it is fatigued, black smoke will be mixed in with the flames.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is found in volcanic craters. Its body heat exceeds 1,100 degrees Fahrenheit, so don't underestimate it.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Each and every time it inhales and exhales, hot embers dribble out of its mouth and nostrils.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body temperature is around 1,100 degrees F. It is healthy if it is breathing yellow flames.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body temperature is around 1,100 degrees F. It is healthy if it is breathing yellow flames.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its magma-like blood circulates throughout its body. Its body's heat can top 1,100 degrees F.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Each and every time it inhales and exhales, hot embers dribble from its mouth and nostrils.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is found in volcanic craters. Its body temperature is over 1,100 degrees Fahrenheit, so don't underestimate it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its magma-like blood circulates throughout its body. Its body's heat can top 1,100 degrees F.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its magma-like blood circulates throughout its body. Its body's heat can top 1,100 degrees F.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It's small, but its body temperature is over 1,100 degrees F. Embers escape its mouth and nose when it breathes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It's small, but its body temperature is over 1,100 degrees F. Embers escape its mouth and nose when it breathes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It's small, but its body temperature is over 1,100 degrees Fahrenheit. Embers escape its mouth and nose when it breathes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its magma-like blood circulates throughout its body. Its body's heat can top 1,100 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Magby's state of health is determined by observing the fire it breathes. If the Pokémon is spouting yellow flames from its mouth, it is in good health. When it is fatigued, black smoke will be mixed in with the flames.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Magby's state of health is determined by observing the fire it breathes. If the Pokémon is spouting yellow flames from its mouth, it is in good health. When it is fatigued, black smoke will be mixed in with the flames.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Many of these Pokémon can be seen in areas with volcanic activity. Feeding can get them so excited, they exhale flames of 1,100 degrees F.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"A famous potter lives with a Magby. Apparently its soft flames produce fine works.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When flames drip from its nose, that means it has a cold. Have it lie down for a nice rest in some magma.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its body temperature is always around 1,100 degrees Fahrenheit. If Magby falls into a small- enough pond, the whole thing will dry up.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is still small and timid. Whenever Magby gets excited or surprised, flames leak from its mouth and its nose.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon makes its home near volcanoes. At the end of the day, Magby soaks in magma, resting and recovering from the day's fatigue.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body temperature is around 1,100 degrees Fahrenheit. It is healthy if it is exhaling yellow flames.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body temperature is around 1,100 degrees Fahrenheit. It is healthy if it is exhaling yellow flames.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon lives in volcanic areas. With each breath, sparks spurt from its mouth and nose. When Magby is in good health, its flames gain a yellow tint.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Each and every time it inhales and exhales, sparks leak from its mouth and nostrils.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Magma-like blood circulates throughout this Pokémon's body, raising its body temperature as high as 1,100 degrees Fahrenheit.\"\n    }\n  ],\n  \"241\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its milk is packed with nutrition, making it the ultimate beverage for the sick or weary.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"If it has just had a baby, the milk it produces contains much more nutrition than usual.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"In order to milk a Miltank, one must have a knack for rhythmically pulling up and down on its udders.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its milk is packed with nutrition, making it the ultimate beverage for the sick or weary.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Miltank gives over five gallons of milk on a daily basis. Its sweet milk is enjoyed by children and grown-ups alike. People who can't drink milk turn it into yogurt and eat it instead.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Miltank gives over five gallons of milk on a daily basis. Its sweet milk is enjoyed by children and grown-ups alike. People who can't drink milk turn it into yogurt and eat it instead.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It gives over five gallons of milk daily. Its sweet milk is enjoyed by children and grown-ups alike. People who can't drink milk turn it into yogurt and eat it instead.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If it has just had a baby, the milk it produces contains much more nutrition than usual.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its milk is packed with nutrition, making it the ultimate beverage for the sick or weary.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said that kids who drink MILTANK's milk grow up to become hearty, healthy adults.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said that kids who drink MILTANK's milk grow up to become hearty, healthy adults.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said that kids who drink MILTANK's milk grow up to become hearty, healthy adults.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its milk is packed with nutrition, making it the ultimate beverage for the sick or weary.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it is around babies, the milk it produces contains much more nutrition than usual.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said that kids who drink Miltank's milk grow up to become hearty, healthy adults.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said that kids who drink Miltank's milk grow up to become hearty, healthy adults.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said that kids who drink Miltank's milk grow up to become hearty, healthy adults.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said that kids who drink Miltank's milk grow up to become hearty, healthy adults.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If it is around babies, the milk it produces contains much more nutrition than usual.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its milk is packed with nutrition, making it the ultimate beverage for the sick or weary.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Miltank gives over five gallons of milk on a daily basis. Its sweet milk is enjoyed by children and grown-ups alike. People who can't drink milk turn it into yogurt and eat it instead.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Miltank gives over five gallons of milk on a daily basis. Its sweet milk is enjoyed by children and grown-ups alike. People who can't drink milk turn it into yogurt and eat it instead.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its milk is high in calories and packed with nutrients. Therefore, if you drink too much of it, you may wind up with a body like Miltank's.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Most people raise it for its milk, but it's quite tough and strong, so it's also well suited for battle.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It produces over five gallons of milk a day. The higher the quality of the pastures it lives in, the richer and tastier its milk becomes.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its milk is delicious and chock-full of nutrients. However, if you drink too much, it could make your stomach hurt, so be careful.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Miltank produces highly nutritious milk, so it's been supporting the lives of people and other Pokémon since ancient times.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon needs to be milked every day, or else it will fall ill. The flavor of Miltank milk changes with the seasons.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said that kids who drink Miltank's milk grow up to become hearty, healthy adults.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said that kids who drink Miltank's milk grow up to become hearty, healthy adults.\"\n    }\n  ],\n  \"242\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The eggs it lays are filled with happiness. Eating even one bite will bring a smile to anyone.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Anyone who takes even one bite of Blissey's egg becomes unfailingly caring and pleasant to everyone.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It has a very compassionate nature. If it sees a sick Pokémon, it will nurse the sufferer back to health.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Biting into one of the delicious eggs that Blissey provides will make everyone around smile with joy.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Anyone who takes even one bite of Blissey's egg becomes unfailingly caring and pleasant to everyone.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Blissey senses sadness with its fluffy coat of fur. If it does so, this Pokémon will rush over to the sad person, however far they may be, to share an egg of happiness that brings a smile to any face.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Blissey senses sadness with its fluffy coat of fur. If it does so, this Pokémon will rush over to the sad person, however far they may be, to share an egg of happiness that brings a smile to any face.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"If it senses sadness with its fluffy fur, a Blissey will rush over to the sad person, however far away, to share an egg of happiness that brings a smile to any face.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has a very compassionate nature. If it sees a sick Pokémon, it will nurse the sufferer back to health.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Anyone who takes even one bite of Blissey's egg becomes unfailingly caring and pleasant to everyone.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"This kindhearted Pokémon nurses sick Pokémon to health. It senses feelings of sadness.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is a Pokémon that delivers happiness. Eating its egg is said to make one kind to everyone.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The eggs it lays are filled with happiness. Eating even one bite will bring a smile to anyone.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Anyone who takes even one taste of Blissey's egg becomes unfailingly caring and pleasant to everyone.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has a very compassionate nature. If it sees a sick Pokémon, it will nurse the sufferer back to health.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The eggs it lays are filled with happiness. Eating even one bite will bring a smile to anyone.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The eggs it lays are filled with happiness. Eating even one bite will bring a smile to anyone.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The eggs it lays are filled with happiness. Eating even one bite will bring a smile to anyone.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The eggs it lays are filled with happiness. Eating even one bite will bring a smile to anyone.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The eggs it lays are filled with happiness. Eating even one bite will bring a smile to anyone.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This kindhearted Pokémon nurses sick Pokémon to health. It senses feelings of sadness.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Blissey senses sadness with its fluffy coat of fur. If it does so, this Pokémon will rush over to a sad person, no matter how far away, to share a Lucky Egg that brings a smile to any face.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Blissey senses sadness with its fluffy coat of fur. If it does so, this Pokémon will rush over to a sad person, no matter how far away, to share a Lucky Egg that brings a smile to any face.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Even the most ferocious Pokémon become calm when they eat Blissey's egg, which is said to be filled with happiness.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its fluffy fur coat acts as a sensor, enabling it to read the feelings of people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Their eggs are such a delicacy that some say eating one will bring you happiness. These eggs fetch the highest prices on the market.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pokémon is overflowing with love. Only Chansey that share a strong bond with their Trainer can evolve, so people say.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Whenever a Blissey finds a weakened Pokémon, it will share its egg and offer its care until the other Pokémon is all better.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Blissey lays mysterious eggs that are filled with happiness. It's said that anyone who eats a Blissey egg will start acting kindly to all others.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This kindhearted Pokémon nurses sick Pokémon to health. It senses feelings of sadness.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is a Pokémon that delivers happiness. Eating its egg is said to make one kind to everyone.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A kindhearted Pokémon that will care for any sick person or Pokémon until their health improves. The eggs it lays are delicious and bring good fortune to those who eat them.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Anyone who takes even one taste of Blissey's egg becomes unfailingly caring and pleasant to everyone.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The eggs it lays are filled with happiness. Eating even one bite will bring a smile to anyone.\"\n    }\n  ],\n  \"243\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The rain clouds it carries let it fire thunderbolts at will. They say that it descended with lightning.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"The rain clouds it carries let it fire thunderbolts at will. They say that it descended with lightning.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A Pokémon that races across the land while barking a cry that sounds like crashing thunder.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This rough Pokémon stores energy inside its body, then sweeps across the land, shooting off electricity.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"The rain clouds it carries let it fire thunderbolts at will. They say that it descended with lightning.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Raikou embodies the speed of lightning. The roars of this Pokémon send shock waves shuddering through the air and shake the ground as if lightning bolts had come crashing down.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Raikou embodies the speed of lightning. The roars of this Pokémon send shock waves shuddering through the air and shake the ground as if lightning bolts had come crashing down.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Raikou embodies the speed of lightning. Its roars send shock waves shuddering through the air and ground as if lightning bolts were crashing down.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Pokémon races across the land while barking a cry that sounds like crashing thunder.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The rain clouds it carries let it fire thunderbolts at will. They say that it descended with lightning.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said to have fallen with lightning. It can fire thunderbolts from the rain clouds on its back.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said to have fallen with lightning. It can fire thunderbolts from the rain clouds on its back.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said to have fallen with lightning. It can fire thunderbolts from the rain clouds on its back.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The rain clouds it carries let it fire thunderbolts at will. They say that it descended with lightning.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A Pokémon that races across the land while barking a cry that sounds like crashing thunder.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said to have fallen with lightning. It can fire thunderbolts from the rain clouds on its back.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said to have fallen with lightning. It can fire thunderbolts from the rain clouds on its back.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said to have fallen with lightning. It can fire thunderbolts from the rain clouds on its back.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said to have fallen with lightning. It can fire thunderbolts from the rain clouds on its back.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The rain clouds it carries let it fire thunderbolts at will. They say that it descended with lightning.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This rough Pokémon stores energy inside its body, then sweeps across the land, shooting off electricity.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Raikou embodies the speed of lightning. The roars of this Pokémon send shock waves shuddering through the air and shake the ground as if lightning bolts had come crashing down.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Raikou embodies the speed of lightning. The roars of this Pokémon send shock waves shuddering through the air and shake the ground as if lightning bolts had come crashing down.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said to have fallen with lightning. It can fire thunderbolts from the rain clouds on its back.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said to have fallen with lightning. It can fire thunderbolts from the rain clouds on its back.\"\n    }\n  ],\n  \"244\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Volcanoes erupt when it barks. Unable to restrain its extreme power, it races headlong around the land.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A Pokémon that races across the land. It is said that one is born every time a new volcano appears.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This brawny Pokémon courses around the earth, spouting flames hotter than a volcano's magma.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Volcanoes erupt when it barks. Unable to restrain its extreme power, it races headlong around the land.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Entei embodies the passion of magma. This Pokémon is thought to have been born in the eruption of a volcano. It sends up massive bursts of fire that utterly consume all that they touch.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Entei embodies the passion of magma. This Pokémon is thought to have been born in the eruption of a volcano. It sends up massive bursts of fire that utterly consume all that they touch.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Entei embodies the passion of magma. It is thought to have been born in the eruption of a volcano. It blasts fire that consumes all that it touches.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A Pokémon that races across the land. It is said that one is born every time a new volcano appears.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Volcanoes erupt when it barks. Unable to restrain its extreme power, it races headlong around the land.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Volcanoes erupt when it barks. Unable to contain its sheer power, it races headlong around the land.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A Pokémon that races across the land. It is said that one is born every time a new volcano appears.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A Pokémon that races across the land. It is said that one is born every time a new volcano appears.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Entei embodies the passion of magma. This Pokémon is thought to have been born in the eruption of a volcano. It sends up massive bursts of fire that utterly consume all that they touch.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Entei embodies the passion of magma. This Pokémon is thought to have been born in the eruption of a volcano. It sends up massive bursts of fire that utterly consume all that they touch.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said that when it roars, a volcano erupts somewhere around the globe.\"\n    }\n  ],\n  \"245\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It races around the world to purify fouled water. It dashes away with the north wind.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Said to be the reincarnation of north winds, it can instantly purify filthy, murky water.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"This Pokémon races across the land. It is said that north winds will somehow blow whenever it appears.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"This divine Pokémon blows around the world, always in search of a pure reservoir.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Said to be the incarnation of northern winds, it can instantly purify filthy, murky water.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Suicune embodies the compassion of a pure spring of water. It runs across the land with gracefulness. This Pokémon has the power to purify dirty water.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Suicune embodies the compassion of a pure spring of water. It runs across the land with gracefulness. This Pokémon has the power to purify dirty water.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Suicune embodies the compassion of a pure spring of water. It runs across the land with gliding elegance. It has the power to purify dirty water.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Pokémon races across the land. It is said that north winds will somehow blow whenever it appears.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Said to be the reincarnation of north winds, it can instantly purify filthy, murky water.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It travels across the world to purify polluted water. It moves together with the north wind.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It races around the world to purify fouled water. It dashes away with the north wind.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It travels across the world to purify polluted water. It moves together with the north wind.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Said to be the embodiment of north winds, it can instantly purify filthy, murky water.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon races across the land. It is said that north winds will somehow blow whenever it appears.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It races around the world to purify fouled water. It dashes away with the north wind.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It races around the world to purify fouled water. It dashes away with the north wind.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It races around the world to purify fouled water. It dashes away with the north wind.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It races around the world to purify fouled water. It dashes away with the north wind.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It races around the world to purify fouled water. It dashes away with the north wind.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Said to be the embodiment of north winds, it can instantly purify filthy, murky water.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Suicune embodies the compassion of a pure spring of water. It runs across the land with gracefulness. This Pokémon has the power to purify dirty water.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Suicune embodies the compassion of a pure spring of water. It runs across the land with gracefulness. This Pokémon has the power to purify dirty water.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It races around the world to purify fouled water. It dashes away with the north wind.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It races around the world to purify fouled water. It dashes away with the north wind.\"\n    }\n  ],\n  \"246\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It feeds on soil. After it has eaten a large mountain, it will fall asleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It feeds on soil. After it has eaten a large mountain, it will fall asleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It is born deep underground. It can't emerge until it has entirely consumed the soil around it.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Born deep underground, this Pokémon becomes a pupa after eating enough dirt to make a mountain.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It feeds on soil. After it has eaten a large mountain, it will fall asleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Larvitar is born deep under the ground. To come up to the surface, this Pokémon must eat its way through the soil above. Until it does so, Larvitar cannot see its parent's face.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Larvitar is born deep under the ground. To come up to the surface, this Pokémon must eat its way through the soil above. Until it does so, Larvitar cannot see its parent's face.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Larvitar is born deep under the ground. It must eat its way through the soil above and reach the surface for it to see its parents' faces.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is born deep underground. It can't emerge until it has entirely consumed the soil around it.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It feeds on soil. After it has eaten a large mountain, it will fall asleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that eats soil. Once it has eaten a large mountain, it goes to sleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon that eats soil. Once it has eaten a large mountain, it goes to sleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon that eats soil. Once it has eaten a large mountain, it goes to sleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It feeds on soil. After it has eaten a large mountain, it falls asleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is born deep underground. It can't emerge until it has entirely consumed the soil around it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon that eats soil. Once it has eaten a large mountain, it goes to sleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon that eats soil. Once it has eaten a large mountain, it goes to sleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Born deep underground, it comes aboveground and becomes a pupa once it has finished eating the surrounding soil.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Born deep underground, it comes aboveground and becomes a pupa once it has finished eating the surrounding soil.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It feeds on soil. After it has eaten a large mountain, it falls asleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Born deep underground, it comes aboveground and becomes a pupa once it has finished eating the surrounding soil.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Larvitar is born deep under the ground. To come up to the surface, this Pokémon must eat its way through the soil above. Until it does so, Larvitar cannot see its parents.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Larvitar is born deep under the ground. To come up to the surface, this Pokémon must eat its way through the soil above. Until it does so, Larvitar cannot see its parents.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Born underground, it eats its way through dirt to the surface, where its parents are. It doesn't deal well with the bright light it finds there.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Raised on nutrients it finds in the dirt, it eats roughly a mountain's worth of dirt before it becomes a pupa.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Born deep underground, it comes aboveground and becomes a pupa once it has finished eating the surrounding soil.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It feeds on soil. After it has eaten a large mountain, it will fall asleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This Pokémon eats soil. Once it has eaten a large mountain, it goes to sleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This Pokémon eats soil. Once it has eaten a large mountain, it goes to sleep so it can grow.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Born deep underground, this Pokémon becomes a pupa after eating enough dirt to make a mountain.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is born deep underground. It can't emerge until it has entirely consumed the soil around it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It feeds on soil. After it has eaten a large mountain, it will fall asleep so it can grow.\"\n    }\n  ],\n  \"247\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its shell is as hard as bedrock, and it is also very strong. Its thrashing can topple a mountain.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its shell is as hard as sheet rock, and it is also very strong. Its Thrashing can topple a mountain.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Even sealed in its shell, it can move freely. Hard and fast, it has outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It will not stay still, even while it's a pupa. It already has arms and legs under its solid shell.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its shell is as hard as sheet rock, and it is also very strong. Its Thrashing can topple a mountain.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Pupitar creates a gas inside its body that it compresses and forcefully ejects to propel itself like a jet. The body is very durable - it avoids damage even if it hits solid steel.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Pupitar creates a gas inside its body that it compresses and forcefully ejects to propel itself like a jet. The body is very durable - it avoids damage even if it hits solid steel.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pupitar creates a gas inside its body that it ejects under compression to propel itself like a jet. Its body can withstand a collision with solid steel.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Even sealed in its shell, it can move freely. Hard and fast, it has outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its shell is as hard as sheet rock, and it is also very strong. Its Thrashing can topple a mountain.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body is as hard as bedrock. By venting pressurized gas, it can launch itself like a rocket.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body is as hard as bedrock. By venting pressurized gas, it can launch itself like a rocket.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its body is as hard as bedrock. By venting pressurized gas, it can launch itself like a rocket.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its shell is as hard as sheet rock, and it is also very strong. Its thrashing can topple a mountain.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Even sealed in its shell, it can move freely. Hard and fast, it has outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its body is as hard as bedrock. By venting pressurized gas, it can launch itself like a rocket.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its body is as hard as bedrock. By venting pressurized gas, it can launch itself like a rocket.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This pupa flies around wildly by venting with great force the gas pressurized inside its body.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This pupa flies around wildly by venting with great force the gas pressurized inside its body.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its body is as hard as bedrock. By venting pressurized gas, it can launch itself like a rocket.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its shell is as hard as sheet rock, and it is also very strong. Its thrashing can topple a mountain.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Pupitar creates a gas inside its body that it compresses and forcefully ejects to propel itself like a jet. The body is very durable—it avoids damage even if it hits solid steel.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Pupitar creates a gas inside its body that it compresses and forcefully ejects to propel itself like a jet. The body is very durable—it avoids damage even if it hits solid steel.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This troublesome Pokémon can't wait to evolve, so it relieves its stress by wildly propelling itself around using compressed gas.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This dangerous pupa thrashes about. Its shell is as hard as bedrock, containing its gradually forming new body within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Even sealed in its shell, it can move freely. Hard and fast, it has outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It will not stay still, even while it's a pupa. It already has arms and legs under its solid shell.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body is as hard as bedrock. By venting pressurized gas, it can launch itself like a rocket.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body is as hard as bedrock. By venting pressurized gas, it can launch itself like a rocket.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This pupa flies around wildly by venting with great force the gas pressurized inside its body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its shell is as hard as bedrock, and it is also very strong. Its thrashing can topple a mountain.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its body is as hard as bedrock. By venting pressurized gas, it can launch itself like a rocket.\"\n    }\n  ],\n  \"248\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Extremely strong, it can change the landscape. It is so insolent that it doesn't care about others.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Its body can't be harmed by any sort of attack, so it is very eager to make challenges against enemies.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"Extremely strong, it can change the landscape. It has an insolent nature that makes it not care about others.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"In just one of its mighty hands, it has the power to make the ground shake and mountains crumble.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Its body can't be harmed by any sort of attack, so it is very eager to make challenges against enemies.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Tyranitar is so overwhelmingly powerful, it can bring down a whole mountain to make its nest. This Pokémon wanders about in mountains seeking new opponents to fight.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Tyranitar is so overwhelmingly powerful, it can bring down a whole mountain to make its nest. This Pokémon wanders about in mountains seeking new opponents to fight.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Tyranitar is so overwhelmingly powerful, it can bring down a whole mountain to make its nest. It roams in mountains seeking new opponents to fight.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its body can't be harmed by any sort of attack, so it is very eager to make challenges against enemies.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its body can't be harmed by any sort of attack, so it is very eager to make challenges against enemies.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"If it rampages, it knocks down mountains and buries rivers. Maps must be redrawn afterward.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"If it rampages, it knocks down mountains and buries rivers. Maps must be redrawn afterward.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If it rampages, it knocks down mountains and buries rivers. Maps must be redrawn afterward.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its body can't be harmed by any sort of attack, so it is very eager to make challenges against enemies.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Extremely strong, it can change the landscape. It has an insolent nature that makes it not care about others.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If it rampages, it knocks down mountains and buries rivers. Maps must be redrawn afterward.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If it rampages, it knocks down mountains and buries rivers. Maps must be redrawn afterward.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The quakes caused when it walks make even great mountains crumble and change the surrounding terrain.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The quakes caused when it walks make even great mountains crumble and change the surrounding terrain.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In just one of its mighty hands, it has the power to make the ground shake and mountains crumble.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it rampages, it knocks down mountains and buries rivers. Maps must be redrawn afterward.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Tyranitar is so overwhelmingly powerful, it can bring down a whole mountain to make its nest. This Pokémon wanders about in mountains seeking new opponents to fight.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Tyranitar is so overwhelmingly powerful, it can bring down a whole mountain to make its nest. This Pokémon wanders about in mountains seeking new opponents to fight.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It wanders through the mountains seeking opponents to fight. If it finds an opponent that's not worthy, Tyranitar ignores it and wanders on.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pokémon is a mobile disaster, leaving mountains crumbled and houses destroyed in its wake.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its body can't be harmed by any sort of attack, so it is very eager to make challenges against enemies.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The quakes caused when it walks make even great mountains crumble and change the surrounding terrain.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"If it rampages, it knocks down mountains and buries rivers. Maps must be redrawn afterward.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"If it rampages, it knocks down mountains and buries rivers. Maps must be redrawn afterward.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Extremely strong, it can change the landscape. It is so insolent that it doesn't care about others.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In just one of its mighty hands, it has the power to make the ground shake and mountains crumble.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If it rampages, it knocks down mountains and buries rivers. Maps must be redrawn afterward.\"\n    }\n  ],\n  \"249\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"It is said that it quietly spends its time deep at the bottom of the sea because its powers are too strong.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"It is said to be the guardian of the seas. It is rumored to have been seen on the night of a storm.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It has an incredible ability to calm raging storms. It is said that Lugia appears when storms start.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"It is said that it quietly spends its time deep at the bottom of the sea because its powers are too strong.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Lugia's wings pack devastating power - a light fluttering of its wings can blow apart regular houses. As a result, this Pokémon chooses to live out of sight deep under the sea.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Lugia's wings pack devastating power - a light fluttering of its wings can blow apart regular houses. As a result, this Pokémon chooses to live out of sight deep under the sea.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Lugia is so powerful even a light fluttering of its wings can blow apart houses. As a result, it chooses to live out of sight deep under the sea.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is said to be the guardian of the seas. It is rumored to have been seen on the night of a storm.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is said that it quietly spends its time deep at the bottom of the sea because its powers are too strong.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is said that it quietly spends its time deep at the bottom of the sea because its powers are too strong.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is said to be the guardian of the seas. It is rumored to have been seen on the night of a storm.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is said to be the guardian of the seas. It is rumored to have been seen on the night of a storm.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Lugia's wings pack devastating power—a light fluttering of its wings can blow apart regular houses. As a result, this Pokémon chooses to live out of sight deep under the sea.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Lugia's wings pack devastating power—a light fluttering of its wings can blow apart regular houses. As a result, this Pokémon chooses to live out of sight deep under the sea.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It sleeps in a deep-sea trench. If it flaps its wings, it is said to cause a 40-day storm.\"\n    }\n  ],\n  \"250\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A legend says that its body glows in seven colors. A rainbow is said to form behind it when it flies.\"\n    },\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"Legends claim this Pokémon flies the world's skies continuously on its magnificent seven-colored wings.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"A legend says that its body glows in seven colors. A rainbow is said to form behind it when it flies.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"It will reveal itself before a pure-hearted trainer by shining its bright rainbow-colored wings.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"Legends claim this Pokémon flies the world's skies continuously on its magnificent seven colored wings.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ho-Oh's feathers glow in seven colors depending on the angle at which they are struck by light. These feathers are said to bring happiness to the bearers. This Pokémon is said to live at the foot of a rainbow.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Ho-Oh's feathers glow in seven colors depending on the angle at which they are struck by light. These feathers are said to bring happiness to the bearers. This Pokémon is said to live at the foot of a rainbow.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its feathers--which glow in seven colors depending on the angle at which they are struck by light--are thought to bring joy. It is said to live at the foot of a rainbow.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A legend says that its body glows in seven colors. A rainbow is said to form behind it when it flies.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Legends claim this Pokémon flies the world's skies continuously on its magnificent seven-colored wings.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its feathers are in seven colors. It is said that anyone seeing it is promised eternal happiness.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its feathers are in seven colors. It is said that anyone seeing it is promised eternal happiness.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its feathers are in seven colors. It is said that anyone seeing it is promised eternal happiness.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Legends claim this Pokémon flies the world's skies continuously on its magnificent, seven-colored wings.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A legend says that its body glows in seven colors. A rainbow is said to form behind it when it flies.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its feathers are in seven colors. It is said that anyone seeing it is promised eternal happiness.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its feathers are in seven colors. It is said that anyone seeing it is promised eternal happiness.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its feathers are in seven colors. It is said that anyone seeing it is promised eternal happiness.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its feathers are in seven colors. It is said that anyone seeing it is promised eternal happiness.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A legend says that its body glows in seven colors. A rainbow is said to form behind it when it flies.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It will reveal itself before a pure-hearted Trainer by shining its bright, rainbow-colored wings.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ho-Oh's feathers glow in seven colors depending on the angle at which they are struck by light. These feathers are said to bring happiness to the bearers. This Pokémon is said to live at the foot of a rainbow.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ho-Oh's feathers glow in seven colors depending on the angle at which they are struck by light. These feathers are said to bring happiness to the bearers. This Pokémon is said to live at the foot of a rainbow.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its feathers are in seven colors. It is said that anyone seeing it is promised eternal happiness.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its feathers are in seven colors. It is said that anyone seeing it is promised eternal happiness.\"\n    }\n  ],\n  \"251\": [\n    {\n      \"version_id\": \"Gold\",\n      \"flavor_text\": \"This Pokémon wanders across time. Grass and trees flourish in the forests in which it has appeared.\"\n    },\n    {\n      \"version_id\": \"Silver\",\n      \"flavor_text\": \"When Celebi disappears deep in a forest, it is said to leave behind an egg it brought from the future.\"\n    },\n    {\n      \"version_id\": \"Crystal\",\n      \"flavor_text\": \"Revered as a guardian of the forest, Celebi appears wherever beautiful forests exist.\"\n    },\n    {\n      \"version_id\": \"Stadium 2\",\n      \"flavor_text\": \"This Pokémon wanders across time. Grass and trees flourish in the forests in which it has appeared. \"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"This Pokémon came from the future by crossing over time. It is thought that so long as CELEBI appears, a bright and shining future awaits us.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon came from the future by crossing over time. It is thought that so long as CELEBI appears, a bright and shining future awaits us.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon came from the future by crossing over time. It is thought that so long as CELEBI appears, a bright and shining future awaits us.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When Celebi disappears deep in a forest, it is said to leave behind an egg it brought from the future.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"This Pokémon wanders across time. Grass and trees flourish in the forests in which it has appeared.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This Pokémon wanders across time. Grass and trees flourish in the forests in which it has appeared.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When Celebi disappears deep in a forest, it is said to leave behind an egg it brought from the future.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This Pokémon wanders across time. Grass and trees flourish in the forests in which it has appeared.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon came from the future by crossing over time. It is thought that so long as Celebi appears, a bright and shining future awaits us.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon came from the future by crossing over time. It is thought that so long as Celebi appears, a bright and shining future awaits us.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon has the ability to move through time. Records describing it as a forest deity can be found from many different eras.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon traveled through time to come from the future. It bolsters grass and trees with its own strength, and it can heal wounds, too.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has the power to travel across time, but it is said to appear only in peaceful times.\"\n    }\n  ],\n  \"252\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Treecko has small hooks on the bottom of its feet that enable it to scale vertical walls. This Pokémon attacks by slamming foes with its thick tail.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Treecko is cool, calm, and collected - it never panics under any situation. If a bigger foe were to glare at this Pokémon, it would glare right back without conceding an inch of ground.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It makes its nest in a giant tree in the forest. It ferociously guards against anything nearing its territory. It is said to be the protector of the forest's trees.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It quickly scales even vertical walls. It senses humidity with its tail to predict the next day's weather.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It quickly scales even vertical walls. It senses humidity with its tail to predict the next day's weather.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The soles of its feet are covered by countless tiny spikes, enabling it to walk on walls and ceilings.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The soles of its feet are covered by countless tiny spikes, enabling it to walk on walls and ceilings.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The soles of its feet are covered by countless tiny spikes, enabling it to walk on walls and ceilings.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Small hooks on the bottom of its feet catch on walls and ceilings. That is how it can hang from above.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Small hooks on the bottom of its feet catch on walls and ceilings. That is how it can hang from above.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The soles of its feet are covered by countless tiny spikes, enabling it to walk on walls and ceilings.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The soles of its feet are covered by countless tiny spikes, enabling it to walk on walls and ceilings.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The soles of its feet are covered by countless tiny spikes, enabling it to walk on walls and ceilings.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The soles of its feet are covered by countless tiny spikes, enabling it to walk on walls and ceilings.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It quickly scales even vertical walls. It senses humidity with its tail to predict the next day's weather.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Small hooks on the bottom of its feet catch on walls and ceilings. That is how it can hang from above.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Treecko has small hooks on the bottom of its feet that enable it to scale vertical walls. This Pokémon attacks by slamming foes with its thick tail.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Treecko is cool, calm, and collected—it never panics under any situation. If a bigger foe were to glare at this Pokémon, it would glare right back without conceding an inch of ground.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The soles of its feet are covered by countless tiny hooks, enabling it to walk on walls and ceilings.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The soles of its feet are covered by countless tiny hooks, enabling it to walk on walls and ceilings.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The small hooks on the soles of its feet latch on to walls and ceilings, so it will never fall even while hanging upside down.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Treecko can quickly scale even vertical surfaces. It senses humidity with its tail to predict the next day's weather.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Treecko can quickly scale even vertical surfaces. It senses humidity with its tails to predict the next day's weather.\"\n    }\n  ],\n  \"253\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The leaves growing out of Grovyle's body are convenient for camouflaging it from enemies in the forest. This Pokémon is a master at climbing trees in jungles.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon adeptly flies from branch to branch in trees. In a forest, no Pokémon can ever hope to catch a fleeing Grovyle however fast they may be.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Leaves grow out of this Pokémon's body. They help obscure a Grovyle from the eyes of its enemies while it is in a thickly overgrown forest.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its strongly developed thigh muscles give it astounding agility and jumping performance.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its strongly developed thigh muscles give it astounding agility and jumping performance.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in dense jungles. While  closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives in dense jungles. While  closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives in dense jungles. While  closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It leaps from tree branch to tree branch quite swiftly. It shows astounding agility.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It leaps from tree branch to tree branch quite swiftly. It shows astounding agility.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives in dense jungles. While closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives in dense jungles. While closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives in dense jungles. While closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives in dense jungles. While closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its strongly developed thigh muscles give it astounding agility and jumping performance.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives in dense jungles. While closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The leaves growing out of Grovyle's body are convenient for camouflaging it from enemies in the forest. This Pokémon is a master at climbing trees in jungles.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon adeptly flies from branch to branch in trees. In a forest, no Pokémon can ever hope to catch a fleeing Grovyle however fast they may be.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in dense jungles. While closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives in dense jungles. While closing in on its prey, it leaps from branch to branch.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its strongly developed thigh muscles give it astounding agility and jumping performance.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Grovyle leaps from branch to branch in large trees, moving with ease. It propels itself with astounding speed and force.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its highly developed thigh muscles provide explosive bursts of power and incredible leaping capabilities.\"\n    }\n  ],\n  \"254\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The leaves growing on Sceptile's body are very sharp edged. This Pokémon is very agile - it leaps all over the branches of trees and jumps on its foe from above or behind.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sceptile has seeds growing on its back. They are said to be bursting with nutrients that revitalize trees. This Pokémon raises the trees in a forest with loving care.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"In the jungle, its power is without equal. This Pokémon carefully grows trees and plants. It regulates its body temperature by basking in sunlight.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The leaves on its forelegs are as sharp as swords. It agilely leaps about the branches of trees to strike.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The leaves on its forelegs are as sharp as swords. It agilely leaps about the branches of trees to strike.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It agilely leaps about the jungle and uses the sharp leaves on its arms to strike its prey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It agilely leaps about the jungle and uses the sharp leaves on its arms to strike its prey.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It agilely leaps about the jungle and uses the sharp leaves on its arms to strike its prey.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The leaves growing on Sceptile's body are very sharp edged. This Pokémon is very agile—it leaps all over the branches of trees and jumps on its foe from above or behind.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sceptile has seeds growing on its back. They are said to be bursting with nutrients that revitalize trees. This Pokémon raises the trees in a forest with loving care.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The leaves that grow on its arms can slice down thick trees. It is without peer in jungle combat.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It agilely flits through the jungle and uses the sharp-edged leaves on its arms to cut down its prey.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The leaves on its arms are as sharp as swords. It agilely leaps about the branches of trees to strike its enemies.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The leaves that grow on its arms are sharp enough to fell thick trees by slicing clean through them. It is without peer in jungle combat.\"\n    }\n  ],\n  \"255\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"In its belly, it has a sac filled with burning fire, meaning that Torchic feels as warm as a hot-water bottle if you hug it.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Torchic sticks with its Trainer, following behind with unsteady steps. This Pokémon breathes fire of over 1,800 degrees F, including fireballs that leave the foe scorched black.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Torchic has a place inside its body where it keeps its flame. Give it a hug - it will be glowing with warmth. This Pokémon is covered all over by a fluffy coat of down.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"If attacked, it strikes back by spitting balls of fire it forms in its stomach. A Torchic dislikes darkness because it can't see its surroundings.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has a flame sac inside its belly that perpetually burns. It feels warm if it is hugged.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has a flame sac inside its belly that perpetually burns. It feels warm if it is hugged.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A fire burns inside, so it feels very warm to hug. It launches fireballs of 1,800 degrees F.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A fire burns inside, so it feels very warm to hug. It launches fireballs of 1,800 degrees F.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A fire burns inside, so it feels very warm to hug. It launches fireballs of 1,800 degrees F.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Inside its body is a place where it keeps a small flame. Hug it! It will be as warm as a hot-water bottle.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Inside its body is a place where it keeps a small flame. Hug it! It will be as warm as a hot-water bottle.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A fire burns inside, so it feels very warm to hug. It launches fireballs of 1,800 degrees F.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A fire burns inside, so it feels very warm to hug. It launches fireballs of 1,800 degrees F.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A fire burns inside, so it feels very warm to hug. It launches fireballs of 1,800 degrees F.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A fire burns inside, so it feels very warm to hug. It launches fireballs of 1,800 degrees F.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a flame sac inside its belly that perpetually burns. It feels warm if it is hugged.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A fire burns inside, so it feels very warm to hug. It launches fireballs of 1,800 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Torchic sticks with its Trainer, following behind with unsteady steps. This Pokémon breathes fire of over 1,800 degrees Fahrenheit, including fireballs that leave the foe scorched black.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Torchic has a place inside its body where it keeps its flame. Give it a hug—it will be glowing with warmth. This Pokémon is covered all over by a fluffy coat of down.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A fire burns inside it, so it feels very warm to hug. It launches fireballs of 1,800 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A fire burns inside it, so it feels very warm to hug. It launches fireballs of 1,800 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Torchic feels toasty warm if you hug it. It has a flame sac inside its belly, and the flames burn continuously as long as Torchic has life in it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In its belly, it has a sac filled with burning fire, meaning that Torchic feels as warm as a hot-water bottle if you hug it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Torchic feels very warm to hug because a fire burns within it. It launches fireballs of over 1,800 degrees F.\"\n    }\n  ],\n  \"256\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It boosts its concentration by emitting harsh cries. Its kicks have outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Combusken toughens up its legs and thighs by running through fields and mountains. This Pokémon's legs possess both speed and power, enabling it to dole out ten kicks in one second.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Combusken battles with the intensely hot flames it spews from its beak and with outstandingly destructive kicks. This Pokémon's cry is very loud and distracting.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It lashes out with 10 kicks per second. Its strong fighting instinct compels it to keep up its offensive until the opponent gives up.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It boosts its concentration by emitting harsh cries. Its kicks have outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It boosts its concentration by emitting harsh cries. Its kicks have outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"During a battle, the hot flame in its body increases. Its kicks have outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"During a battle, the hot flame in its body increases. Its kicks have outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"During a battle, the hot flame in its body increases. Its kicks have outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Combusken toughens up its legs and thighs by running through fields and mountains. This Pokémon's legs possess both speed and power, enabling it to dole out 10 kicks in one second.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Combusken battles with the intensely hot flames it spews from its beak and with outstandingly destructive kicks. This Pokémon's cry is very loud and distracting.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its kicking mastery lets it loose 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It boosts its concentration by emitting harsh cries. Its kicks have outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it enters battle, the flame inside its body burns stronger. Its kicks have outstanding destructive power.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its kicking mastery lets it unleash 10 kicks per second. It emits sharp cries to intimidate foes.\"\n    }\n  ],\n  \"257\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"When facing a tough foe, it looses flames from its wrists. Its powerful legs let it jump clear over buildings.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"In battle, Blaziken blows out intense flames from its wrists and attacks foes courageously. The stronger the foe, the more intensely this Pokémon's wrists burn.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Blaziken has incredibly strong legs - it can easily clear a 30-story building in one leap. This Pokémon's blazing punches leave its foes scorched and blackened.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It learns martial arts that use punches and kicks. Every several years, its old feathers burn off, and new, supple feathers grow back in their place.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When facing a tough foe, it looses flames from its wrists. Its powerful legs let it jump clear over buildings.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When facing a tough foe, it looses flames from its wrists. Its powerful legs let it jump clear over buildings.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Flames spout from its wrists, enveloping its knuckles. Its punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Flames spout from its wrists, enveloping its knuckles. Its punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Flames spout from its wrists, enveloping its knuckles. Its punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can clear a 30-story building in a leap. Its fiery punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It can clear a 30-story building in a leap. Its fiery punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Flames spout from its wrists, enveloping its knuckles. Its punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Flames spout from its wrists, enveloping its knuckles. Its punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Flames spout from its wrists, enveloping its knuckles. Its punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Flames spout from its wrists, enveloping its knuckles. Its punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can clear a 30-story building in a leap. Its fiery punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When facing a tough foe, it looses flames from its wrists. Its powerful legs let it jump clear over buildings.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In battle, Blaziken blows out intense flames from its wrists and attacks foes courageously. The stronger the foe, the more intensely this Pokémon's wrists burn.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Blaziken has incredibly strong legs—it can easily clear a 30-story building in one leap. This Pokémon's blazing punches leave its foes scorched and blackened.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Flames spout from its wrists, enveloping its knuckles. Its punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Flames spout from its wrists, enveloping its knuckles. Its punches scorch its foes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When facing a tough foe, it looses flames from its wrists. Its powerful legs let it jump clear over buildings.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can jump powerfully, clearing a 30-story building in a single leap. Its flaming punches scorch its opponents.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can jump powerfully enough to clear a 30-story building. It uses flaming punches to incinerate its opponents.\"\n    }\n  ],\n  \"258\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The fin on Mudkip's head acts as highly sensitive radar. Using this fin to sense movements of water and air, this Pokémon can determine what is taking place around it without using its eyes.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"In water, Mudkip breathes using the gills on its cheeks. If it is faced with a tight situation in battle, this Pokémon will unleash its amazing power - it can crush rocks bigger than itself.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"On land, it can powerfully lift large boulders by planting its four feet and heaving. It sleeps by burying itself in soil at the water's edge.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its large tail fin propels it through water with powerful acceleration. It is strong in spite of its size.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its large tail fin propels it through water with powerful acceleration. It is strong in spite of its size.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"To alert it, the fin on its head senses the flow of water. It has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"To alert it, the fin on its head senses the flow of water. It has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"To alert it, the fin on its head senses the flow of water. It has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its power can crush boulders. It rests by covering itself with mud at the bottom of a river.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its power can crush boulders. It rests by covering itself with mud at the bottom of a river.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"To alert it, the fin on its head senses the flow of water. It has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"To alert it, the fin on its head senses the flow of water. It has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"To alert it, the fin on its head senses the flow of water. It has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"To alert it, the fin on its head senses the flow of water. It has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its large tail fin propels it through water with powerful acceleration. It is strong in spite of its size.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"To alert it, the fin on its head senses the flow of water. It has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The fin on Mudkip's head acts as highly sensitive radar. Using this fin to sense movements of water and air, this Pokémon can determine what is taking place around it without using its eyes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In water, Mudkip breathes using the gills on its cheeks. If it is faced with a tight situation in battle, this Pokémon will unleash its amazing power—it can crush rocks bigger than itself.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Using the fin on its head, Mudkip senses the flow of water to keep track of what's going on around it. Mudkip has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Using the fin on its head, Mudkip senses the flow of water to keep track of what's going on around it. Mudkip has the strength to heft boulders.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has the power to crush large boulders into pieces. To rest, it buries itself in mud at the bottom of a river.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it uses its large tail fin, it picks up speed rapidly in the water. It is strong in spite of its small size.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Using the fin on its head, Mudkip senses the flow of water to keep track of what's going on around it. It has the strength to heft boulders.\"\n    }\n  ],\n  \"259\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The surface of Marshtomp's body is enveloped by a thin, sticky film that enables it to live on land. This Pokémon plays in mud on beaches when the ocean tide is low.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Marshtomp is much faster at traveling through mud than it is at swimming. This Pokémon's hindquarters exhibit obvious development, giving it the ability to walk on just its hind legs.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its toughened hind legs enable it to stand upright. Because it weakens if its skin dries out, it replenishes fluids by playing in mud.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is at its best when on muddy ground with poor footing. It quickly overwhelms foes struggling in mud.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is at its best when on muddy ground with poor footing. It quickly overwhelms foes struggling in mud.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Living on muddy ground that provides poor footing has made its legs sturdy.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Living on muddy ground that provides poor footing has made its legs sturdy.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Living on muddy ground that provides poor footing has made its legs sturdy.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The surface of Marshtomp's body is enveloped by a thin, sticky film that enables it to live on land. This Pokémon plays in mud on beaches when the ocean tide is low.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Marshtomp is much faster at traveling through mud than it is at swimming. This Pokémon's hindquarters exhibit obvious development, giving it the ability to walk on just its hind legs.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its sturdy legs give it sure footing, even in mud. It burrows into dirt to sleep.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Living on muddy ground that provides poor footing has served to train its lower body and caused it to develop sturdy legs.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is at its best when on muddy ground that offers poor footing. It quickly overwhelms opponents that are bogged down and unable to move.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its sturdy legs and hips give it sure footing, even on sludgy surfaces. It buries itself in mud to sleep.\"\n    }\n  ],\n  \"260\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Swampert is very strong. It has enough power to easily drag a boulder weighing more than a ton. This Pokémon also has powerful vision that lets it see even in murky water.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Swampert predicts storms by sensing subtle differences in the sounds of waves and tidal winds with its fins. If a storm is approaching, it piles up boulders to protect itself.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"If it senses the approach of a storm and a tidal wave, it protects its seaside nest by piling up boulders. It swims as fast as a jet ski.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its arms are rock-hard. With one swing, they can batter down its foe. It makes its nest on beautiful beaches.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its arms are rock-hard. With one swing, they can batter down its foe. It makes its nest on beautiful beaches.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its arms are hard as rock. With one swing, it can break a boulder into pieces.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its arms are hard as rock. With one swing, it can break a boulder into pieces.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its arms are hard as rock. With one swing, it can break a boulder into pieces.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Swampert is very strong. It has enough power to easily drag a boulder weighing more than a ton. This Pokémon also has powerful vision that lets it see even in murky water.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Swampert predicts storms by sensing subtle differences in the sounds of waves and tidal winds with its fins. If a storm is approaching, it piles up boulders to protect itself.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can swim while towing a large ship. It bashes down foes with a swing of its thick arms.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its arms are hard as rock. With one swing, it can break an enormous boulder into pieces.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Swampert's arms are rock-hard. With one swing, they can batter down Swampert's foes. This Pokémon makes its nest on beautiful beaches.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon is so strong that it can tow a large ship while it swims. It bashes down foes with a single swing of its thick arms.\"\n    }\n  ],\n  \"261\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"At first sight, Poochyena takes a bite at anything that moves. This Pokémon chases after prey until the victim becomes exhausted. However, it may turn tail if the prey strikes back.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Poochyena is an omnivore - it will eat anything. A distinguishing feature is how large its fangs are compared to its body. This Pokémon tries to intimidate its foes by making the hair on its tail bristle out.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It savagely threatens foes with bared fangs. It chases after fleeing targets tenaciously. It turns tail and runs, however, if the foe strikes back.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has a very tenacious nature. Its acute sense of smell lets it chase a chosen prey without ever losing track.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has a very tenacious nature. Its acute sense of smell lets it chase a chosen prey without ever losing track.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It chases its prey until the victim becomes exhausted. However, it turns tail if the prey strikes back.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It chases its prey until the victim becomes exhausted. However, it turns tail if the prey strikes back.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a very tenacious nature. Its acute sense of smell lets it chase a chosen prey without ever losing track.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"At first sight, Poochyena takes a bite at anything that moves. This Pokémon chases after prey until the victim becomes exhausted. However, it may turn tail if the prey strikes back.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Poochyena is an omnivore—it will eat anything. A distinguishing feature is how large its fangs are compared to its body. This Pokémon tries to intimidate its foes by making the hair on its tail bristle out.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A Pokémon with a persistent nature, it chases its chosen prey until the prey becomes exhausted.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It bares its large fangs and barks vigorously to try to intimidate opponents, but this is actually a manifestation of its cowardly nature.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Poochyena pursue their prey in packs. Once the prey is exhausted, the pack finishes it off. But sometimes the prey retaliates, and the pack flees.\"\n    }\n  ],\n  \"262\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Mightyena gives obvious signals when it is preparing to attack. It starts to growl deeply and then flattens its body. This Pokémon will bite savagely with its sharply pointed fangs.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Mightyena travel and act as a pack in the wild. The memory of its life in the wild compels the Pokémon to obey only those Trainers that it recognizes to possess superior skill.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"In the wild, Mightyena live in a pack. They never defy their leader's orders. They defeat foes with perfectly coordinated teamwork.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It will always obey the commands of a skilled Trainer. Its behavior arises from its living in packs in ancient times.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It will always obey the commands of a skilled Trainer. Its behavior arises from its living in packs in ancient times.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It chases down prey in a pack. It will never disobey the commands of a skilled Trainer.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It chases down prey in a pack. It will never disobey the commands of a skilled Trainer.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It chases down prey in a pack. It will never disobey the commands of a skilled Trainer.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It chases down prey in a pack of around ten. They defeat foes with perfectly coordinated teamwork.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It chases down prey in a pack of around ten. They defeat foes with perfectly coordinated teamwork.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It chases down prey in a pack. It will never disobey the commands of a skilled Trainer.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It chases down prey in a pack. It will never disobey the commands of a skilled Trainer.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It chases down prey in a pack. It will never disobey the commands of a skilled Trainer.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It chases down prey in a pack. It will never disobey the commands of a skilled Trainer.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It will always obey the commands of a skilled Trainer. Its behavior arises from its living in packs in ancient times.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It chases down prey in a pack of around ten. They defeat foes with perfectly coordinated teamwork.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Mightyena gives obvious signals when it is preparing to attack. It starts to growl deeply and then flattens its body. This Pokémon will bite savagely with its sharply pointed fangs.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Mightyena travel and act as a pack in the wild. The memory of its life in the wild compels the Pokémon to obey only those Trainers that it recognizes to possess superior skill.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It chases down prey in a pack. It will never disobey the commands of a skilled Trainer.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It chases down prey in a pack. It will never disobey the commands of a skilled Trainer.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They faithfully follow the orders of their leader. Prey targeted by Mightyena is never allowed to escape the outstanding teamwork of its pursuers.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Once it's caught the scent of faraway prey, the leader gives a signal, and the whole pack moves out.\"\n    }\n  ],\n  \"263\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Zigzagoon restlessly wanders everywhere at all times. This Pokémon does so because it is very curious. It becomes interested in anything that it happens to see.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The hair on Zigzagoon's back is bristly. It rubs the hard back hair against trees to leave its territorial markings. This Pokémon may play dead to fool foes in battle.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Rubbing its nose against the ground, it always wanders about back and forth in search of something. It is distinguished by the zigzag footprints it leaves.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A Pokémon with abundant curiosity. It shows an interest in everything, so it always zigs and zags.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A Pokémon with abundant curiosity. It shows an interest in everything, so it always zigs and zags.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It walks in zigzag fashion. It is good at finding items in the grass and even in the ground.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It walks in zigzag fashion. It is good at finding items in the grass and even in the ground.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It walks in zigzag fashion. It is good at finding items in the grass and even in the ground.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It gets interested in everything, which is why it zigs and zags. It is good at finding items.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It gets interested in everything, which is why it zigs and zags. It is good at finding items.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It walks in zigzag fashion. It is good at finding items in the grass and even in the ground.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It walks in zigzag fashion. It is good at finding items in the grass and even in the ground.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It walks in zigzag fashion. It is good at finding items in the grass and even in the ground.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It walks in zigzag fashion. It is good at finding items in the grass and even in the ground.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It walks in zigzag fashion. It's good at finding items in the grass and even in the ground.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A Pokémon with abundant curiosity. It shows an interest in everything, so it always zigzags.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Zigzagoon restlessly wanders everywhere at all times. This Pokémon does so because it is very curious. It becomes interested in anything that it happens to see.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The hair on Zigzagoon's back is bristly. It rubs the hard back hair against trees to leave its territorial markings. This Pokémon may play dead to fool foes in battle.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It marks its territory by rubbing its bristly fur on trees. This variety of Zigzagoon is friendlier and calmer than the kind native to Galar.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Zigzagoon that adapted to regions outside Galar acquired this appearance. If you've lost something, this Pokémon can likely find it.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It walks in zigzag fashion. It's good at finding items in the grass and even in the ground.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It walks in zigzag fashion. It's good at finding items in the grass and even in the ground.\"\n    }\n  ],\n  \"264\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Linoone always runs full speed and only in straight lines. If facing an obstacle, it makes a right-angle turn to evade it. This Pokémon is very challenged by gently curving roads.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When hunting, Linoone will make a beeline straight for the prey at a full run. While this Pokémon is capable of topping 60 mph, it has to come to a screeching halt before it can turn.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is exceedingly fast if it only has to run in a straight line. When it spots pond-dwelling prey underwater, it quickly leaps in and catches it with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When running in a straight line, it can top 60 miles per hour. However, it has a tough time with curved roads.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When running in a straight line, it can top 60 miles per hour. However, it has a tough time with curved roads.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When running in a straight line, it can easily top 60 miles an hour. It has a tough time with curved roads.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When running in a straight line, it can easily top 60 miles an hour. It has a tough time with curved roads.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When running in a straight line, it can easily top 60 miles an hour. It has a tough time with curved roads.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Linoone always runs full speed and only in straight lines. If facing an obstacle, it makes a right-angle turn to evade it. This Pokémon is very challenged by gently curving roads.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When hunting, Linoone will make a beeline straight for the prey at a full run. While this Pokémon is capable of topping 60 mph, it has to come to a screeching halt before it can turn.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its fur is strong and supple. Shaving brushes made with shed Linoone hairs are highly prized.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It uses its explosive speed and razor-sharp claws to bring down prey. Running along winding paths is not its strong suit.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It charges prey at speeds over 60 mph. However, because it can only run straight, it often fails.\"\n    }\n  ],\n  \"265\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Using the spikes on its rear end,  Wurmple peels the bark off trees and feeds on the sap that oozes out. This Pokémon's feet are tipped with suction pads that allow it to cling to glass without slipping.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Wurmple is targeted by Swellow as prey. This Pokémon will try to resist by pointing the spikes on its rear at the attacking predator. It will weaken the foe by leaking poison from the spikes.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It sticks to tree branches and eats leaves. The thread it spits from its mouth, which becomes gooey when it touches air, slows the movement of its foes.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives amidst tall grass and in forests. When attacked, it resists by pointing its venomous spikes at the foe.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It lives amidst tall grass and in forests. When attacked, it resists by pointing its venomous spikes at the foe.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves to eat leaves. If it is attacked by a Starly, it will defend itself with its spiked rear.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It spits a white silk that turns sticky when it contacts air. It is used to immobilize foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Often targeted by bird Pokémon, it desperately resists by releasing poison from its tail spikes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives among the tall grass and in forests. It repels attacks by raising up the spikes on its rear.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives among the tall grass and in forests. It repels attacks by raising up the spikes on its rear.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Often targeted by bird Pokémon, it desperately resists by releasing poison from its tail spikes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Often targeted by bird Pokémon, it desperately resists by releasing poison from its tail spikes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Often targeted by bird Pokémon, it desperately resists by releasing poison from its tail spikes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Often targeted by bird Pokémon, it desperately resists by releasing poison from its tail spikes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It loves to eat leaves. If it is attacked by a Starly, it will defend itself with its spiked rear.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives among the tall grass and in forests. It repels attacks by raising up the spikes on its rear.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Using the spikes on its rear end, Wurmple peels the bark off trees and feeds on the sap that oozes out. This Pokémon's feet are tipped with suction pads that allow it to cling to glass without slipping.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Wurmple is targeted by Swellow as prey. This Pokémon will try to resist by pointing the spikes on its rear at the attacking predator. It will weaken the foe by leaking poison from the spikes.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It loves to eat leaves. If it is attacked by a Starly, it will defend itself with its spiked rear.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It spits a white silk thread that turns sticky when coming into contact with air. The silk is used to immobilize foes.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Likes sap and is abundant in the wild. Why it evolves into various different forms is unknown. One cannot tell from a Wurmple's appearance which form it will take when it evolves.\"\n    }\n  ],\n  \"266\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Silcoon tethers itself to a tree branch using silk to keep from falling. There, this Pokémon hangs quietly while it awaits evolution. It peers out of the silk cocoon through a small hole.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Silcoon was thought to endure hunger and not consume anything before its evolution. However, it is now thought that this Pokémon slakes its thirst by drinking rainwater that collects on its silk.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It prepares for evolution using the energy it stored while it was a Wurmple. It keeps watch over the surroundings with its two eyes.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It conserves its energy by moving as little as possible. It awaits evolution while drinking only a little rainwater.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It conserves its energy by moving as little as possible. It awaits evolution while drinking only a little rainwater.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It anchors itself by wrapping twigs with the silk from its body. It motionlessly awaits evolution.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It drinks dew that collects on its silk and waits for evolution. Its hard cocoon repels attacks.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It wraps silk around the branches of a tree. It drinks rainwater on its silk while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Having wrapped silk around the branches of a tree, it quiescently awaits evolution.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Having wrapped silk around the branches of a tree, it quiescently awaits evolution.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It wraps silk around the branches of a tree. It drinks rainwater on its silk while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It wraps silk around the branches of a tree. It drinks rainwater on its silk while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It wraps silk around the branches of a tree. It drinks rainwater on its silk while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It wraps silk around the branches of a tree. It drinks rainwater on its silk while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It wraps silk around the branches of a tree. It drinks rainwater on its silk while awaiting evolution.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It drinks dew that collects on its silk and waits for evolution. Its hard cocoon repels attacks.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Silcoon tethers itself to a tree branch using silk to keep from falling. There, this Pokémon hangs quietly while it awaits evolution. It peers out of the silk cocoon through a small hole.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Silcoon was thought to endure hunger and not consume anything before its evolution. However, it is now thought that this Pokémon slakes its thirst by drinking rainwater that collects on its silk.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It anchors itself by wrapping twigs with the silk from its body. It motionlessly awaits evolution.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It drinks dew that collects on its silk while it waits for evolution. Its hard cocoon repels attacks.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Wraps itself in thin strings of silk while it stores energy for evolution. It can't extend its limbs and its movement is slow, but its eyes keep a sharp lookout—Silcoon is always on guard.\"\n    }\n  ],\n  \"267\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Beautifly's favorite food is the sweet pollen of flowers. If you want to see this Pokémon, just leave a potted flower by an open window. Beautifly is sure to come looking for pollen.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Beautifly has a long mouth like a coiled needle, which is very convenient for collecting pollen from flowers. This Pokémon rides the spring winds as it flits around gathering pollen.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its colorfully patterned wings are its most prominent feature. It flies through flower-covered fields collecting pollen. It attacks ferociously when angered.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Despite its appearance, it has an aggressive nature. It attacks by jabbing with its long, thin mouth.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Despite its appearance, it has an aggressive nature. It attacks by jabbing with its long, thin mouth.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has an aggressive nature. It stabs prey with its long, narrow mouth to drain the prey's fluids.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When flower fields bloom, it flits around, collecting pollen. Despite its appearance, it is savage.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Despite its looks, it is aggressive. It jabs with its long, thin mouth if disturbed while collecting pollen.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Vibrantly patterned wings are its prominent feature. It sucks sweet flower nectar with its long mouth.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Vibrantly patterned wings are its prominent feature. It sucks sweet flower nectar with its long mouth.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Despite its looks, it is aggressive. It jabs with its long, thin mouth if disturbed while collecting pollen.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Despite its looks, it is aggressive. It jabs with its long, thin mouth if disturbed while collecting pollen.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Despite its looks, it is aggressive. It jabs with its long, thin mouth if disturbed while collecting pollen.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Despite its looks, it is aggressive. It jabs with its long, thin mouth if disturbed while collecting pollen.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Vibrantly patterned wings are its prominent feature. It sucks sweet flower nectar with its long mouth.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has an aggressive nature. It stabs prey with its long, narrow mouth to drain the prey's fluids.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Beautifly's favorite food is the sweet pollen of flowers. If you want to see this Pokémon, just leave a potted flower by an open window. Beautifly is sure to come looking for pollen.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Beautifly has a long mouth like a coiled needle, which is very convenient for collecting pollen from flowers. This Pokémon rides the spring winds as it flits around gathering pollen.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has an aggressive nature. It stabs prey with its long, narrow mouth to drain the prey's fluids.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When flower fields bloom, it flits around, collecting pollen. Despite its appearance, it is savage.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A colorful and incredibly beautiful but also greedy Pokémon. In an effort to keep its favorite food all to itself, it will chase away Combee as they try to gather nectar.\"\n    }\n  ],\n  \"268\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Cascoon makes its protective cocoon by wrapping its body entirely with a fine silk from its mouth. Once the silk goes around its body, it hardens. This Pokémon prepares for its evolution inside the cocoon.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If it is attacked, Cascoon remains motionless however badly it may be hurt. It does so because if it were to move, its body would be weak upon evolution. This Pokémon will also not forget the pain it endured.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"To avoid detection by its enemies, it hides motionlessly beneath large leaves and in the gaps of branches. It also attaches dead leaves to its body for camouflage.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its body, which is made of soft silk, hardens over time. When cracks appear, evolution is near.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its body, which is made of soft silk, hardens over time. When cracks appear, evolution is near.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is hot inside its cocoon. All the cells in its body create the energy for it to evolve.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Encased within its tough cocoon, it endures attacks. It never forgets the appearance of its foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It never forgets any attack it endured while in the cocoon. After evolution, it seeks payback.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It endures attacks with patience, because the more pain before evolution, the sturdier it becomes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It endures attacks with patience, because the more pain before evolution, the sturdier it becomes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It never forgets any attack it endured while in the cocoon. After evolution, it seeks payback.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It never forgets any attack it endured while in the cocoon. After evolution, it seeks payback.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It never forgets any attack it endured while in the cocoon. After evolution, it seeks payback.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It never forgets any attack it endured while in the cocoon. After evolution, it seeks payback.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its body, which is made of soft silk, hardens over time. When cracks appear, evolution is near.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It never forgets any attack it endured while in the cocoon. After evolution, it seeks payback.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Cascoon makes its protective cocoon by wrapping its body entirely with a fine silk from its mouth. Once the silk goes around its body, it hardens. This Pokémon prepares for its evolution inside the cocoon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If it is attacked, Cascoon remains motionless however badly it may be hurt. It does so because if it were to move, its body would be weak upon evolution. This Pokémon will also not forget the pain it endured.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is hot inside its cocoon. All the cells in its body create the energy for it to evolve.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Encased within its tough cocoon, it endures attacks. It never forgets the appearance of its foes.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The silk coating its body is thin but sufficiently strong. Cascoon's silk has a luster and texture superior to that of Silcoon's, and clothes made using Cascoon silk are regarded as top-notch.\"\n    }\n  ],\n  \"269\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Dustox is instinctively drawn to light. Swarms of this Pokémon are attracted by the bright lights of cities, where they wreak havoc by stripping the leaves off roadside trees for food.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When Dustox flaps its wings, a fine dust is scattered all over. This dust is actually a powerful poison that will even make a pro wrestler sick. This Pokémon searches for food using its antennae like radar.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is a nocturnal Pokémon that flies from fields and mountains to the attraction of streetlights at night. It looses highly toxic powder from its wings.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It scatters horribly toxic dust when it senses danger. They tend to gather in the glow of streetlamps at night.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It scatters horribly toxic dust when it senses danger. They tend to gather in the glow of streetlamps at night.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A nocturnal Pokémon. Drawn by streetlights, they messily eat the leaves of trees lining boulevards.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It violently flutters its wings to scatter toxic dust when attacked. It becomes active after sunset.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Toxic powder is scattered with each flap. At night, it is known to strip leaves off trees lining boulevards.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It scatters its fine dust all over when it is attacked. It is a nocturnal Pokémon.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It scatters its fine dust all over when it is attacked. It is a nocturnal Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Toxic powder is scattered with each flap. At night, it is known to strip leaves off trees lining boulevards.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Toxic powder is scattered with each flap. At night, it is known to strip leaves off trees lining boulevards.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Toxic powder is scattered with each flap. At night, it is known to strip leaves off trees lining boulevards.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Toxic powder is scattered with each flap. At night, it is known to strip leaves off trees lining boulevards.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A nocturnal Pokémon. Drawn by streetlights, they messily eat the leaves of trees lining boulevards.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It violently flutters its wings to scatter toxic dust when attacked. It becomes active after sunset.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Dustox is instinctively drawn to light. Swarms of this Pokémon are attracted by the bright lights of cities, where they wreak havoc by stripping the leaves off roadside trees for food.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Dustox flaps its wings, a fine dust is scattered all over. This dust is actually a powerful poison that will even make a pro wrestler sick. This Pokémon searches for food using its antennae like radar.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Dustox are nocturnal Pokémon. Drawn by streetlights, they messily eat the leaves of trees lining boulevards.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It violently flutters its wings to scatter toxic dust when attacked. It becomes active after sunset.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Tends to be drawn to bonfires on dark nights. Difficult to chase away from settlements because of the way it scatters highly toxic scales.\"\n    }\n  ],\n  \"270\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The leaf on its head is naturally dirt repellent and will stay clean even after transporting Pokémon that are covered in mud.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Lotad live in ponds and lakes, where they float on the surface. It grows weak if its broad leaf dies. On rare occasions, this Pokémon travels on land in search of clean water.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Lotad is said to have dwelled on land before. However, this Pokémon is thought to have returned to water because the leaf on its head grew large and heavy. It now lives by floating atop the water.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon lives in ponds with clean water. It is known to ferry small Pokémon across ponds by carrying them on the broad leaf on its head.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It searches about for clean water. If it does not drink water for too long, the leaf on its head wilts.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It searches about for clean water. If it does not drink water for too long, the leaf on its head wilts.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry to Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry to Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry to Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its leaf grew too large for it to live on land. That is how it began to live floating in the water.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its leaf grew too large for it to live on land. That is how it began to live floating in the water.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry to Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry to Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry to Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry to Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry to Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It searches about for clean water. If it does not drink water for too long, the leaf on its head wilts.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Lotad live in ponds and lakes, where they float on the surface. It grows weak if its broad leaf dies. On rare occasions, this Pokémon travels on land in search of clean water.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Lotad is said to have dwelled on land before. However, this Pokémon is thought to have returned to water because the leaf on its head grew large and heavy. It now lives by floating atop the water.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It searches about for clean water. If it does not drink water for too long, the leaf on its head wilts.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its leaf grew too large for it to live on land. That is how it began to live floating in the water.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry for Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It looks like an aquatic plant and serves as a ferry for Pokémon that can't swim.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The leaf on its head is naturally dirt repellent and will stay clean even after transporting Pokémon that are covered in mud.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Lotad will gather in lakes that have good water quality. The surfaces of the lakes sometimes become covered in Lotad leaves.\"\n    }\n  ],\n  \"271\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is nocturnal and becomes active at nightfall. It feeds on aquatic mosses that grow in the riverbed.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Lombre is nocturnal - it will get active after dusk. It is also a mischief-maker. When this Pokémon spots anglers, it tugs on their fishing lines from beneath the surface and enjoys their consternation.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Lombre's entire body is covered by a slippery, slimy film. It feels horribly unpleasant to be touched by this Pokémon's hands. Lombre is often mistaken for a human child.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"In the evening, it takes great delight in popping out of rivers and startling people. It feeds on aquatic moss that grows on rocks in the riverbed.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives at the water's edge where it is sunny. It sleeps on a bed of water grass by day and becomes active at night.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It lives at the water's edge where it is sunny. It sleeps on a bed of water grass by day and becomes active at night.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is nocturnal and becomes active at nightfall. It feeds on aquatic mosses that grow in the riverbed.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is nocturnal and becomes active at nightfall. It feeds on aquatic mosses that grow in the riverbed.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives at the water's edge where it is sunny. It sleeps on a bed of water-grass by day and becomes active at night.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Lombre is nocturnal—it will get active after dusk. It is also a mischief maker. When this Pokémon spots anglers, it tugs on their fishing lines from beneath the surface and enjoys their consternation.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Lombre's entire body is covered by a slippery, slimy film. It feels horribly unpleasant to be touched by this Pokémon's hands. Lombre is often mistaken for a human child.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is nocturnal and becomes active at nightfall. It feeds on aquatic mosses that grow in the riverbed.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It lives at the water's edge where it is sunny. It sleeps on a bed of water grass by day and becomes active at night.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has a mischievous spirit. If it spots an angler, it will tug on the fishing line to interfere.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Old folklore in Kitakami tells of a mischievous child who was reborn as a Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It prefers waterfronts with plentiful food. It becomes nocturnal so it wouldn't have to compete for food with bird Pokémon.\"\n    }\n  ],\n  \"272\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ludicolo begins dancing as soon as it hears cheerful, festive music. This Pokémon is said to appear when it hears the singing of children on hiking outings.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Upon hearing an upbeat and cheerful rhythm, the cells in Ludicolo's body become very energetic and active. Even in battle, this Pokémon will exhibit an amazing amount of power.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When it hears festive music, all the cells in its body become stimulated, and it begins moving in rhythm. It does not quail even when it faces a tough opponent.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The rhythm of bright, festive music activates Ludicolo's cells, making it more powerful.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The rhythm of bright, festive music activates Ludicolo's cells, making it more powerful.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it hears festive music, it begins moving in rhythm in order to amplify its power.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it hears festive music, it begins moving in rhythm in order to amplify its power.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The rhythm of bright, festive music activates Ludicolo's cells, making it more powerful.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ludicolo begins dancing as soon as it hears cheerful, festive music. This Pokémon is said to appear when it hears the singing of children on hiking outings.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Upon hearing an upbeat and cheerful rhythm, the cells in Ludicolo's body become very energetic and active. Even in battle, this Pokémon will exhibit an amazing amount of power.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The rhythm of bright, festive music activates Ludicolo's cells, making it more powerful.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If it hears festive music, it begins moving in rhythm in order to amplify its power.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"If it hears festive music, all its muscles fill with energy. It can't help breaking out into a dance.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"There are structures throughout its whole body that produce energy when hit by sound waves with a cheerful rhythm.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Dancing with an upbeat rhythm energizes and emboldens it, letting it face any foe without fear.\"\n    }\n  ],\n  \"273\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Seedot attaches itself to a tree branch using the top of its head. It sucks moisture from the tree while hanging off the branch. The more water it drinks, the glossier this Pokémon's body becomes.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Seedot looks exactly like an acorn when it is dangling from a tree branch. It startles other Pokémon by suddenly moving. This Pokémon polishes its body once a day using leaves.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It hangs off branches and absorbs nutrients. When it finishes eating, its body becomes so heavy that it drops to the ground with a thump.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If it remains still, it becomes impossible to distinguish from real nuts. It delights in surprising foraging Pidgey.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If it remains still, it becomes impossible to distinguish from real nuts. It delights in surprising foraging Pidgey.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It attaches itself to a tree branch using the top of its head. Strong winds can sometimes make it fall.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It attaches itself to a tree branch using the top of its head. Strong winds can sometimes make it fall.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It attaches itself to a tree branch using the top of its head. Strong winds can sometimes make it fall.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Seedot attaches itself to a tree branch using the top of its head. It sucks moisture from the tree while hanging off the branch. The more water it drinks, the glossier this Pokémon's body becomes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Seedot looks exactly like an acorn when it is dangling from a tree branch. It startles other Pokémon by suddenly moving. This Pokémon polishes its body once a day using leaves.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If it remains still, it looks just like a real nut. It delights in surprising foraging Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It attaches itself to a tree branch using the top of its head. Strong winds can sometimes make it fall.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon that try to peck at it.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When it dangles from a tree branch, it looks just like an acorn. It enjoys scaring other Pokémon that try to peck at it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"To expand its habitat, it pretends to be a nut so that bird Pokémon will pick it up and carry it far away.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Seedot live in trees, hanging from the branches and leeching moisture. Rows of them can be found dangling from large, young trees.\"\n    }\n  ],\n  \"274\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Nuzleaf live in densely overgrown forests. They occasionally venture out of the forest to startle people. This Pokémon dislikes having its long nose pinched.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"This Pokémon pulls out the leaf on its head and makes a flute with it. The sound of Nuzleaf's flute strikes fear and uncertainty in the hearts of people lost in a forest.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A forest-dwelling Pokémon that is skilled at climbing trees. Its long and pointed nose is its weak point. It loses power if the nose is gripped.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"They live in holes bored in large trees. The sound of Nuzleaf's grass flute fills listeners with dread.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"They live in holes bored in large trees. The sound of Nuzleaf's grass flute fills listeners with dread.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in forests.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in forests.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in forests.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives deep in forests. With the leaf on its head, it makes a flute whose song makes listeners uneasy.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives deep in forests. With the leaf on its head, it makes a flute whose song makes listeners uneasy.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in forests.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in forests.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in forests.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in forests.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in forests.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives deep in forests. With the leaf on its head, it makes a flute whose song makes listeners uneasy.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Nuzleaf live in densely overgrown forests. They occasionally venture out of the forest to startle people. This Pokémon dislikes having its long nose pinched.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon pulls out the leaf on its head and makes a flute with it. The sound of Nuzleaf's flute strikes fear and uncertainty in the hearts of people lost in a forest.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It lives deep in forests. With the leaf on its head, it makes a flute whose song makes listeners uneasy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They live in holes bored in large trees. The sound of Nuzleaf's grass flute fills listeners with dread.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in the forest.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The sound of its grass flute makes its listeners uneasy. It lives deep in the forest.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It leads a quiet life deep in the forest. If anything wanders into its territory, Nuzleaf will warn the intruder by sounding its grass flute.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its sensory functions are concentrated in its pointed nose, which it uses to sense its surroundings. The nose is also its weak point.\"\n    }\n  ],\n  \"275\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Shiftry is a mysterious Pokémon that is said to live atop towering trees dating back over a thousand years. It creates terrific windstorms with the fans it holds.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Shiftry's large fans generate awesome gusts of wind at a speed close to 100 feet per second. The whipped-up wind blows anything away. This Pokémon chooses to live quietly deep in forests.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is said to arrive on chilly, wintry winds. Feared from long ago as the guardian of forests, this Pokémon lives in a deep forest where people do not venture.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A Pokémon that was feared as a forest guardian. It can read the foe's mind and take preemptive action.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A Pokémon that was feared as a forest guardian. It can read the foe's mind and take preemptive action.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"By flapping its leafy fan, it can whip up gusts of 100 ft/second that can level houses.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"By flapping its leafy fan, it can whip up gusts of 100 ft/second that can level houses.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"By flapping its leafy fan, it can whip up gusts of 100 ft/second that can level houses.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives quietly in the deep forest. It is said to create chilly winter winds with the fans it holds.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives quietly in the deep forest. It is said to create chilly winter winds with the fans it holds.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"By flapping its leafy fan, it can whip up gusts of 100 ft/second that can level houses.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"By flapping its leafy fan, it can whip up gusts of 100 ft/second that can level houses.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By flapping its leafy fan, it can whip up gusts of 100 ft/second that can level houses.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By flapping its leafy fan, it can whip up gusts of 100 ft/second that can level houses.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A Pokémon that was feared as a forest guardian. It can read the foe's mind and take preemptive action.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"By flapping its leafy fan, it can whip up gusts of 100 feet per second that can level houses.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Shiftry is a mysterious Pokémon that is said to live atop towering trees dating back over a thousand years. It creates terrific windstorms with the fans it holds.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Shiftry's large fans generate awesome gusts of wind at a speed close to 100 feet per second. The whipped-up wind blows anything away. This Pokémon chooses to live quietly deep in forests.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A Pokémon that was feared as a forest guardian. It can read the foe's mind and take preemptive action.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It lives quietly in the deep forest. It is said to create chilly winter winds with the fans it holds.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"By flapping its leafy fans, it can whip up gusts of 100 feet per second that can level houses.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"By flapping its leafy fans, it can whip up gusts of 100 feet per second that can level houses.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is said that when Shiftry flaps its leafy fans atop ancient trees, chilly winds blow and the season rolls into winter.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Legends tell of a bird Pokémon that received divine punishment for its evil deeds and had its beak and wings replaced.\"\n    }\n  ],\n  \"276\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Taillow courageously stands its ground against foes, however strong they may be. This gutsy Pokémon will remain defiant even after a loss. On the other hand, it cries loudly if it becomes hungry.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Taillow is young - it has only just left its nest. As a result, it sometimes becomes lonesome and cries at night. This Pokémon feeds on Wurmple that live in forests.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Although it is small, it is very courageous. It will take on a larger Skarmory on an equal footing. However, its will weakens if it becomes hungry.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It dislikes cold seasons. They migrate to other lands in search of warmth, flying over 180 miles a day.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It dislikes cold seasons. They migrate to other lands in search of warmth, flying over 180 miles a day.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it gets cold, they migrate, flying over 180 miles a day. It hunts for tasty prey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it gets cold, they migrate, flying over 180 miles a day. It hunts for tasty prey.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It dislikes cold seasons. They migrate to other lands in search of warmth, flying over 180 miles a day.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Taillow courageously stands its ground against foes, however strong they may be. This gutsy Pokémon will remain defiant even after a loss. On the other hand, it cries loudly if it becomes hungry.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Taillow is young—it has only just left its nest. As a result, it sometimes becomes lonesome and cries at night. This Pokémon feeds on Wurmple that live in forests.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has a gutsy spirit that makes it bravely take on tough foes. It flies in search of warm climates.\"\n    }\n  ],\n  \"277\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Swellow flies high above our heads, making graceful arcs in the sky. This Pokémon dives at a steep angle as soon as it spots its prey. The hapless prey is tightly grasped by Swellow's clawed feet, preventing escape.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Swellow is very conscientious about the upkeep of its glossy wings. Once two Swellow are gathered, they diligently take care of cleaning each other's wings.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Swellow dives upon prey from far above. It never misses its targets. It takes to the skies in search of lands with a warm climate.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If its two tail feathers are standing at attention, it is proof of good health. It soars elegantly in the sky.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If its two tail feathers are standing at attention, it is proof of good health. It soars elegantly in the sky.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It circles the sky in search of prey. When it spots one, it dives steeply to catch the prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It circles the sky in search of prey. When it spots one, it dives steeply to catch the prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It circles the sky in search of prey. When it spots one, it dives steeply to catch the prey.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It dives at a steep angle as soon as it spots its prey. It catches its prey with sharp claws.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It dives at a steep angle as soon as it spots its prey. It catches its prey with sharp claws.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It circles the sky in search of prey. When it spots one, it dives steeply to catch the prey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It circles the sky in search of prey. When it spots one, it dives steeply to catch the prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It circles the sky in search of prey. When it spots one, it dives steeply to catch the prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It circles the sky in search of prey. When it spots one, it dives steeply to catch the prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If its two tail feathers are standing at attention, it is proof of good health. It soars elegantly in the sky.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It dives at a steep angle as soon as it spots its prey. It catches its prey with sharp claws.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Swellow flies high above our heads, making graceful arcs in the sky. This Pokémon dives at a steep angle as soon as it spots its prey. The hapless prey is tightly grasped by Swellow's clawed feet, preventing escape.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Swellow is very conscientious about the upkeep of its glossy wings. Once two Swellow are gathered, they diligently take care of cleaning each other's wings.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It circles the sky in search of prey and dives sharply to catch its target.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It circles the sky in search of prey and dives sharply to catch its target.\"\n    }\n  ],\n  \"278\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Catching sea winds with its long wings, it soars as if it were a glider. It folds its wings to rest.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Wingull has the habit of carrying prey and valuables in its beak and hiding them in all sorts of locations. This Pokémon rides the winds and flies as if it were skating across the sky.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Wingull rides updrafts rising from the sea by extending its long and narrow wings to glide. This Pokémon's long beak is useful for catching prey.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It makes its nest on a sheer cliff at the edge of the sea. It has trouble keeping its wings flapping in flight. Instead, it soars on updrafts.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It rides upon ocean winds as if it were a glider. In the winter, it hides food around its nest.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It rides upon ocean winds as if it were a glider. In the winter, it hides food around its nest.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It makes its nest on steep sea cliffs. Riding updrafts, it soars to great heights.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Catching sea winds with its long wings, it soars as if it were a glider. It folds its wings to rest.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It soars high in the sky, riding on updrafts like a glider. It carries food tucked in its bill.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It soars on updrafts without flapping its wings. It makes a nest on sheer cliffs at the sea's edge.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It soars on updrafts without flapping its wings. It makes a nest on sheer cliffs at the sea's edge.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It soars high in the sky, riding on updrafts like a glider. It carries food tucked in its bill.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It soars high in the sky, riding on updrafts like a glider. It carries food tucked in its bill.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It makes its nest on sheer cliffs. Riding the sea breeze, it glides up into the expansive skies.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It makes its nest on sheer cliffs. Riding the sea breeze, it glides up into the expansive skies.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Catching sea winds with its long wings, it soars as if it were a glider. It folds its wings to rest.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It makes its nest on steep sea cliffs. Riding updrafts, it soars to great heights.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Wingull has the habit of carrying prey and valuables in its beak and hiding them in all sorts of locations. This Pokémon rides the winds and flies as if it were skating across the sky.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Wingull rides updrafts rising from the sea by extending its long and narrow wings to glide. This Pokémon's long beak is useful for catching prey.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its hollow bones enhance its lightness. It spreads its wings to the wind and soars away into the sky.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Fishermen keep an eye out for Wingull in the sky, because wherever they're circling, the ocean is sure to be teeming with fish Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"With its long, thin wings, it catches updrafts and flies like a glider high up into the sky.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It builds nests in cliffs by the sea. It circles the skies above the ocean looking for its favorite food—Wishiwashi.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It makes its nest on sheer cliffs. Riding the sea breeze, it glides up into the expansive skies.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It soars on updrafts without flapping its wings. It makes a nest on sheer cliffs at the sea's edge.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It makes its nest on steep sea cliffs. Riding updrafts, it soars to great heights.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Catching sea winds with its long wings, it soars as if it were a glider. It folds its wings to rest.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It soars high in the sky, riding on updrafts like a glider. It carries food tucked in its bill.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It rides upon ocean winds as if it were a glider. In the winter, it hides food around its nest.\"\n    }\n  ],\n  \"279\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It protects its young in its beak. It bobs on waves, resting on them on days when the waters are calm.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Pelipper is a flying transporter that carries small Pokémon and eggs inside its massive bill. This Pokémon builds its nest on steep cliffs facing the sea.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Pelipper searches for food while in flight by skimming the wave tops. This Pokémon dips its large bill in the sea to scoop up food, then swallows everything in one big gulp.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It skims the tops of waves as it flies. When it spots prey, it uses its large beak to scoop up the victim with water. It protects its eggs in its beak.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is a flying transporter that carries small Pokémon in its beak. It bobs on the waves to rest its wings.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is a flying transporter that carries small Pokémon in its beak. It bobs on the waves to rest its wings.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It dips its large bill in the sea, then scoops up numerous prey along with water.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It acts as a delivery service by carrying small Pokémon in its bill. It bobs on the waves to rest.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is a messenger of the skies, carrying small Pokémon and eggs to safety in its bill.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It protects its young in its beak. It bobs on waves, resting on them on days when the waters are calm.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It protects its young in its beak. It bobs on waves, resting on them on days when the waters are calm.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is a messenger of the skies, carrying small Pokémon and eggs to safety in its bill.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is a messenger of the skies, carrying small Pokémon and eggs to safety in its bill.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Skimming the water's surface, it dips its large bill in the sea, scoops up food and water, and carries it.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Skimming the water's surface, it dips its large bill in the sea, scoops up food and water, and carries it.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It dips its large bill in the sea, then scoops up numerous prey along with water.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is a messenger of the skies, carrying small Pokémon and eggs to safety in its bill.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Pelipper is a flying transporter that carries small Pokémon and eggs inside its massive bill. This Pokémon builds its nest on steep cliffs facing the sea.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Pelipper searches for food while in flight by skimming the wave tops. This Pokémon dips its large bill in the sea to scoop up food, then swallows everything in one big gulp.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its spacious beak is large enough for a small child to fit right inside.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Gathering food is the work of young males. They store food in their capacious beaks and carry it back to others waiting in the nest.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It places small Pokémon into its spacious beak and carries them around. No one knows where it's taking them.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It scoops up Wishiwashi in its huge beak and swallows them whole. It can devour more than 30 at one go!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is a messenger of the skies, carrying small Pokémon and eggs to safety in its bill.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Skimming the water's surface, it dips its large bill in the sea, scoops up food and water, and carries it.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It dips its large bill in the sea, then scoops up numerous prey along with water.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It acts as a delivery service by carrying small Pokémon in its bill. It bobs on the waves to rest.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is a flying transporter that carries small Pokémon in its beak. It bobs on the waves to rest its wings.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It protects its young in its beak. It bobs on waves, resting on them on days when the waters are calm.\"\n    }\n  ],\n  \"280\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"If its red horns capture the warm feelings of people or Pokémon, its body warms up slightly.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ralts senses the emotions of people using the horns on its head. This Pokémon rarely appears before people. But when it does, it draws closer if it senses that the person has a positive disposition.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Ralts has the ability to sense the emotions of people. If its Trainer is in a cheerful mood, this Pokémon grows cheerful and joyous in the same way.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Ralts has the power to sense the emotions of people and Pokémon with the horns on its head. It takes cover if it senses any hostility.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is highly attuned to the emotions of people and Pokémon. It hides if it senses hostility.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is highly attuned to the emotions of people and Pokémon. It hides if it senses hostility.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It uses the horns on its head to sense human emotions. It is said to appear in front of cheerful people.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It uses the horns on its head to sense human emotions. It is said to appear in front of cheerful people.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If its horns capture the warm feelings of people or Pokémon, its body warms up slightly.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The horns on its head provide a strong power that enables it to sense people's emotions.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The horns on its head provide a strong power that enables it to sense people's emotions.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If its horns capture the warm feelings of people or Pokémon, its body warms up slightly.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If its horns capture the warm feelings of people or Pokémon, its body warms up slightly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If its horns capture the warm feelings of people or Pokémon, its body warms up slightly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If its horns capture the warm feelings of people or Pokémon, its body warms up slightly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If its horns capture the warm feelings of people or Pokémon, its body warms up slightly.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is highly attuned to the emotions of people and Pokémon. It hides if it senses hostility.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ralts senses the emotions of people using the horns on its head. This Pokémon rarely appears before people. But when it does, it draws closer if it senses that the person has a positive disposition.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ralts has the ability to sense the emotions of people. If its Trainer is in a cheerful mood, this Pokémon grows cheerful and joyous in the same way.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It is highly attuned to the emotions of people and Pokémon. It hides if it senses hostility.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If its horns capture the warm feelings of people or Pokémon, its body warms up slightly.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It uses the horns on its head to sense human emotions. It is said to appear in front of cheerful people.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It uses the horns on its head to sense human emotions. It is said to appear in front of cheerful people.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Tends to prefer people with a chipper disposition to those who are gloomy, but it has shown no discrimination with regard to age or gender. Needs more research.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The horns on its head provide a strong power that enables it to sense people's emotions.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is highly attuned to the emotions of people and Pokémon. It hides if it senses hostility.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If its red horns capture the warm feelings of people or Pokémon, its body warms up slightly.\"\n    }\n  ],\n  \"281\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has a psychic power that enables it to distort the space around it and see into the future.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"It is said that a Kirlia that is exposed to the positive emotions of its Trainer grows beautiful. This Pokémon controls psychokinetic powers with its highly developed brain.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Kirlia uses the horns on its head to amplify its psychokinetic power. When the Pokémon uses its power, the air around it becomes distorted, creating mirages of nonexistent scenery.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Kirlia has the psychic power to create a rip in the dimensions and see into the future. It is said to dance with pleasure on sunny mornings.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The cheerful spirit of its Trainer gives it energy for its psychokinetic power. It spins and dances when happy.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The cheerful spirit of its Trainer gives it energy for its psychokinetic power. It spins and dances when happy.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is highly perceptive of its Trainer's feelings. It dances when it is feeling happy.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is highly perceptive of its Trainer's feelings. It dances when it is feeling happy.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If its Trainer becomes happy, it overflows with energy, dancing joyously while spinning about.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has a psychic power that enables it to distort the space around it and see into the future.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has a psychic power that enables it to distort the space around it and see into the future.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If its Trainer becomes happy, it overflows with energy, dancing joyously while spinning about.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If its Trainer becomes happy, it overflows with energy, dancing joyously while spinning about.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If its Trainer becomes happy, it overflows with energy, dancing joyously while spinning about.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If its Trainer becomes happy, it overflows with energy, dancing joyously while spinning about.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The cheerful spirit of its Trainer gives it energy for its psychokinetic power. It spins and dances when happy.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a psychic power that enables it to distort the space around it and see into the future.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It is said that a Kirlia that is exposed to the positive emotions of its Trainer grows beautiful. This Pokémon controls psychokinetic powers with its highly developed brain.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Kirlia uses the horns on its head to amplify its psychokinetic power. When the Pokémon uses its power, the air around it becomes distorted, creating mirages of nonexistent scenery.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If its Trainer becomes happy, it overflows with energy, dancing joyously while spinning about.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has a psychic power that enables it to distort the space around it and see into the future.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is highly perceptive of its Trainer's feelings. It dances when it is feeling happy.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is highly perceptive of its Trainer's feelings. It dances when it is feeling happy.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It resembles a maiden in appearance, but it wields strange powers to project visions of paradise. I suspect the crimson ornaments on its head are the key to its abilities.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has a psychic power that enables it to distort the space around it and see into the future.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The cheerful spirit of its Trainer gives it energy for its psychokinetic power. It spins and dances when happy.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The cheerful spirit of its Trainer gives it energy for its psychokinetic power. It spins and dances when happy.\"\n    }\n  ],\n  \"282\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"To protect its Trainer, it will expend all its psychic power to create a small black hole.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Gardevoir has the ability to read the future. If it senses impending danger to its Trainer, this Pokémon is said to unleash its psychokinetic energy at full power.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Gardevoir has the psychokinetic power to distort the dimensions and create a small black hole. This Pokémon will try to protect its Trainer even at the risk of its own life.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It apparently does not feel the pull of gravity because it supports itself with psychic power. It will give its life to protect its Trainer.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has the power to predict the future. Its power peaks when it is protecting its Trainer.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has the power to predict the future. Its power peaks when it is protecting its Trainer.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It will try to guard its trusted Trainer with its life. It has the ability to see the future.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It will try to guard its trusted Trainer with its life. It has the ability to see the future.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"To protect its Trainer, it will expend all its psychic power to create a small black hole.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It unleashes psychokinetic energy at full power when protecting a Trainer it has bonded closely with.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It unleashes psychokinetic energy at full power when protecting a Trainer it has bonded closely with.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"To protect its Trainer, it will expend all its psychic power to create a small black hole.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"To protect its Trainer, it will expend all its psychic power to create a small black hole.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"To protect its Trainer, it will expend all its psychic power to create a small black hole.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"To protect its Trainer, it will expend all its psychic power to create a small black hole.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"To protect its Trainer, it will expend all its psychic power to create a small black hole.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has the power to predict the future. Its power peaks when it is protecting its Trainer.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Gardevoir has the ability to read the future. If it senses impending danger to its Trainer, this Pokémon is said to unleash its psychokinetic energy at full power.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Gardevoir has the psychokinetic power to distort the dimensions and create a small black hole. This Pokémon will try to protect its Trainer even at the risk of its own life.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has the power to predict the future. Its power peaks when it is protecting its Trainer.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"To protect its Trainer, it will expend all its psychic power to create a small black hole.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It will try to guard its trusted Trainer with its life. It has the ability to see the future.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It will try to guard its trusted Trainer with its life. It has the ability to see the future.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It will dedicate itself to defending a master it has come to adore. Its pure white dress, reminiscent of those worn by ladies of nobility, is the dress of one who is willing to risk their life.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"To protect its Trainer, it will expend all its psychic power to create a small black hole.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It unleashes psychokinetic energy at full power when protecting a Trainer it has bonded closely with.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has the power to predict the future. Its power peaks when it is protecting its Trainer.\"\n    }\n  ],\n  \"283\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"From the tips of its feet, Surskit secretes an oil that enables it to walk on water as if it were skating. This Pokémon feeds on microscopic organisms in ponds and lakes.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If Surskit senses danger, it secretes a thick, sugary syrup from the tip of its head. There are some Pokémon that love eating this syrup.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"They gather on puddles after evening downpours, gliding across the surface of water as if sliding. It secretes honey with a sweet aroma from its head.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"They usually live on ponds, but after an evening shower, they may appear on puddles in towns.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"They usually live on ponds, but after an evening shower, they may appear on puddles in towns.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey with a sweet scent from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey with a sweet scent from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey with a sweet scent from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It secretes a thick, sweet-scented syrup from the tip of its head. It lives on weed-choked ponds.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It secretes a thick, sweet-scented syrup from the tip of its head. It lives on weed-choked ponds.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey with a sweet scent from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey with a sweet scent from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey with a sweet scent from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey with a sweet scent from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They usually live on ponds, but after an evening shower, they may appear on puddles in towns.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey with a sweet scent from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"From the tips of its feet, Surskit secretes an oil that enables it to walk on water as if it were skating. This Pokémon feeds on microscopic organisms in ponds and lakes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If Surskit senses danger, it secretes a thick, sugary syrup from the tip of its head. There are some Pokémon that love eating this syrup.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It moves as if skating on the surface of the water. It often fights with Dewpider over food.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When this Pokémon senses danger, a sweet fluid oozes from the tip of its head. The taste of it disgusts bird Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"If it's in a pinch, it will secrete a sweet liquid from the tip of its head. Syrup made from gathering that liquid is tasty on bread.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It lives in ponds and marshes that feature lots of plant life. It often fights with Dewpider, whose habitat and diet are similar.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey in with a sweet scent released from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It appears as if it is skating on water. It draws prey in with a sweet scent released from the tip of its head.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They usually live on ponds, but after an evening shower, they may appear on puddles in towns.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It secretes a thick, sweet-scented syrup from the tip of its head. It lives on weed-choked ponds.\"\n    }\n  ],\n  \"284\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Masquerain intimidates enemies with the eyelike patterns on its antennas. This Pokémon flaps its four wings to freely fly in any direction - even sideways and backwards - as if it were a helicopter.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Masquerain's antennas have eyelike patterns that usually give it an angry look. If the \\\"eyes\\\" are droopy and appear sad, it is said to be a sign that a heavy rainfall is on its way.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It intimidates foes with the large eyelike patterns on its antennae. Because it can't fly if its wings get wet, it shelters itself from rain under large trees and <!--not a typo-->eaves.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The antennae have distinctive patterns that look like eyes. When it rains, they grow heavy, making flight impossible.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The antennae have distinctive patterns that look like eyes. When it rains, they grow heavy, making flight impossible.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It flaps its four wings to hover and fly freely in any direction--to and fro and sideways.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It flaps its four wings to hover and fly freely in any direction--to and fro and sideways.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It flaps its four wings to hover and fly freely in any direction--to and fro and sideways.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Masquerain intimidates enemies with the eyelike patterns on its antennas. This Pokémon flaps its four wings to freely fly in any direction—even sideways and backwards—as if it were a helicopter.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Masquerain's antennas have eyelike patterns that usually give it an angry look. If the \\\"eyes\\\" are droopy and appear sad, it is said to be a sign that a heavy rainfall is on its way.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It intimidates enemies with the eye-like patterns on its antennae. Its four wings allow it to fly in any direction.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its wings and antennae don't cope well with moisture. After a rain, it faces sunward to dry off.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Masquerain intimidates enemies with the eyelike patterns of its eyespots. If that doesn't work, it deftly makes its escape on its set of four wings.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its thin, winglike antennae are highly absorbent. It waits out rainy days in tree hollows.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its antennae have eye patterns on them. Its four wings enable it to hover and fly in any direction.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It flaps its four wings to hover and fly freely in any direction—to and fro and sideways.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The antennae have distinctive patterns that look like eyes. When it rains, they grow heavy, making flight impossible.\"\n    }\n  ],\n  \"285\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Shroomish live in damp soil in the dark depths of forests. They are often found keeping still under fallen leaves. This Pokémon feeds on compost that is made up of fallen, rotted leaves.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If Shroomish senses danger, it shakes its body and scatters spores from the top of its head. This Pokémon's spores are so toxic, they make trees and weeds wilt.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It loves to eat damp, composted soil in forests. If you enter a forest after a long rain, you can see many Shroomish feasting on composted soil.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It prefers damp places. By day it remains still in the forest shade. It releases toxic powder from its head.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It prefers damp places. By day it remains still in the forest shade. It releases toxic powder from its head.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over if inhaled.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over if inhaled.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over if inhaled.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it senses danger, it scatters spores from the top of its head to protect itself.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it senses danger, it scatters spores from the top of its head to protect itself.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over if inhaled.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over if inhaled.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over if inhaled.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over if inhaled.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It prefers damp places. By day it remains still in the forest shade. It releases toxic powder from its head.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over if inhaled.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Shroomish live in damp soil in the dark depths of forests. They are often found keeping still under fallen leaves. This Pokémon feeds on compost that is made up of fallen, rotted leaves.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If Shroomish senses danger, it shakes its body and scatters spores from the top of its head. This Pokémon's spores are so toxic, they make trees and weeds wilt.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over the body if inhaled.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It spouts poison spores from the top of its head. These spores cause pain all over the body if inhaled.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It prefers damp places. By day it remains still in the forest shade. It releases toxic powder from its head.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If it senses danger, it scatters spores from the top of its head to protect itself.\"\n    }\n  ],\n  \"286\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Breloom closes in on its foe with light and sprightly footwork, then throws punches with its stretchy arms. This Pokémon's fighting technique puts boxers to shame.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The seeds ringing Breloom's tail are made of hardened toxic spores. It is horrible to eat the seeds. Just taking a bite of this Pokémon's seed will cause your stomach to rumble.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It scatters spores from holes in the cap on its head. It loves warm and humid climates. It feeds on trees and plants in fields and forests.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The seeds on its tail are made of toxic spores. It knocks out foes with quick, virtually invisible punches.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The seeds on its tail are made of toxic spores. It knocks out foes with quick, virtually invisible punches.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It scatters poisonous spores and throws powerful punches while its foe is hampered by inhaled spores.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It scatters poisonous spores and throws powerful punches while its foe is hampered by inhaled spores.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It scatters poisonous spores and throws powerful punches while its foe is hampered by inhaled spores.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Breloom closes in on its foe with light and sprightly footwork, then throws punches with its stretchy arms. This Pokémon's fighting technique puts boxers to shame.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The seeds ringing Breloom's tail are made of hardened toxic spores. It is horrible to eat the seeds. Just taking a bite of this Pokémon's seed will cause your stomach to rumble.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its short arms stretch when it throws punches. Its technique is equal to that of pro boxers.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It scatters poisonous spores and throws powerful punches while its foe is hampered by inhaled spores.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The seeds on its tail are made of toxic spores. It knocks out foes with quick, virtually invisible punches.\"\n    }\n  ],\n  \"287\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Slakoth lolls around for over twenty hours every day. Because it moves so little, it does not need much food. This Pokémon's sole daily meal consists of just three leaves.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Slakoth's heart beats just once a minute. Whatever happens, it is content to loaf around motionless. It is rare to see this Pokémon in motion.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It sleeps virtually all day and night long. It doesn't change its nest its entire life, but it sometimes travels great distances by swimming in rivers.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It sleeps for 20 hours every day. Making drowsy those that see it is one of its abilities.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It sleeps for 20 hours every day. Making drowsy those that see it is one of its abilities.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It spends nearly all its time in a day sprawled out. Just seeing it makes one drowsy.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It spends nearly all its time in a day sprawled out. Just seeing it makes one drowsy.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It spends nearly all its time in a day sprawled out. Just seeing it makes one drowsy.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The way Slakoth lolls around makes anyone who watches it feel like doing the same.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The way Slakoth lolls around makes anyone who watches it feel like doing the same.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It spends nearly all its time in a day sprawled out. Just seeing it makes one drowsy.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It spends nearly all its time in a day sprawled out. Just seeing it makes one drowsy.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If it eats just three leaves in a day, it is satisfied. Other than that, it sleeps for 20 hours a day.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If it eats just three leaves in a day, it is satisfied. Other than that, it sleeps for 20 hours a day.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The way Slakoth lolls around makes anyone who watches it feel like doing the same.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it eats just three leaves in a day, it is satisfied. Other than that, it sleeps for 20 hours a day.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Slakoth lolls around for over 20 hours every day. Because it moves so little, it does not need much food. This Pokémon's sole daily meal consists of just three leaves.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Slakoth's heart beats just once a minute. Whatever happens, it is content to loaf around motionless. It is rare to see this Pokémon in motion.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It spends nearly all its time in a day sprawled out. Just seeing it makes one drowsy.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It spends nearly all its time in a day sprawled out. Just seeing it makes one drowsy.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It sleeps for 20 hours every day. Making drowsy those that see it is one of its abilities.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The way Slakoth lolls around makes anyone who watches it feel like doing the same.\"\n    }\n  ],\n  \"288\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Vigoroth is always itching and agitated to go on a wild rampage. It simply can't tolerate sitting still for even a minute. This Pokémon's stress level rises if it can't be moving constantly.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Vigoroth is simply incapable of remaining still. Even when it tries to sleep, the blood in its veins grows agitated, compelling this Pokémon to run wild throughout the jungle before it can settle down.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It can't keep still because its blood boils with energy. It runs through the fields and mountains all day to calm itself. If it doesn't, it can't sleep at night.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is always hungry because it won't stop rampaging. Even while it is eating, it can't keep still.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is always hungry because it won't stop rampaging. Even while it is eating, it can't keep still.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its heart beats at a tenfold tempo, so it cannot sit still for even a moment.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its heart beats at a tenfold tempo, so it cannot sit still for even a moment.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its heart beats at a tenfold tempo, so it cannot sit still for even a moment.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its stress level rises if it cannot keep moving constantly. Too much stress makes it feel sick.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its stress level rises if it cannot keep moving constantly. Too much stress makes it feel sick.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its heart beats at a tenfold tempo, so it cannot sit still for even a moment.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its heart beats at a tenfold tempo, so it cannot sit still for even a moment.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its heartbeat is fast and its blood so agitated that it can't sit still for one second.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its heartbeat is fast and its blood so agitated that it can't sit still for one second.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its heartbeat is fast and its blood so agitated that it can't sit still for one second.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its stress level rises if it cannot keep moving constantly. Too much stress makes it feel sick.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Vigoroth is always itching and agitated to go on a wild rampage. It simply can't tolerate sitting still for even a minute. This Pokémon's stress level rises if it can't be moving constantly.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Vigoroth is simply incapable of remaining still. Even when it tries to sleep, the blood in its veins grows agitated, compelling this Pokémon to run wild throughout the jungle before it can settle down.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its heart beats at 10 times its previous rate, so it cannot sit still for even a moment.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its heart beats at 10 times its previous rate, so it cannot sit still for even a moment.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its stress level rises if it cannot keep moving constantly. Too much stress makes it feel sick.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is always hungry because it won't stop rampaging. Even while it is eating, it can't keep still.\"\n    }\n  ],\n  \"289\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Slaking spends all day lying down and lolling about. It eats grass growing within its reach. If it eats all the grass it can reach, this Pokémon reluctantly moves to another spot.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Wherever Slaking live, rings of over a yard in diameter appear in grassy fields. They are made by the Pokémon as it eats all the grass within reach while lying prone on the ground.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Hordes of Slaking gather around trees when fruits come into season. They wait around patiently for ripened fruits to fall out of the trees.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is the world's most slothful Pokémon. However, it can exert horrifying power by releasing pent-up energy all at once.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is the world's most slothful Pokémon. However, it can exert horrifying power by releasing pent-up energy all at once.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The world's laziest Pokémon. When it is lounging, it is actually saving energy for striking back.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The world's laziest Pokémon. When it is lounging, it is actually saving energy for striking back.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The world's laziest Pokémon. When it is lounging, it is actually saving energy for striking back.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The world's laziest Pokémon. It moves to another spot when there's no food left within its reach.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The world's laziest Pokémon. It moves to another spot when there's no food left within its reach.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The world's laziest Pokémon. When it is lounging, it is actually saving energy for striking back.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The world's laziest Pokémon. When it is lounging, it is actually saving energy for striking back.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This Pokémon lives lying on its side. It only rolls over and moves when there is no more grass to eat.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This Pokémon lives lying on its side. It only rolls over and moves when there is no more grass to eat.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The world's laziest Pokémon. It moves to another spot when there's no food left within its reach.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is the world's most slothful Pokémon. However, it can exert horrifying power by releasing pent-up energy all at once.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Slaking spends all day lying down and lolling about. It eats grass growing within its reach. If it eats all the grass it can reach, this Pokémon reluctantly moves to another spot.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Wherever Slaking live, rings of over a yard in diameter appear in grassy fields. They are made by the Pokémon as it eats all the grass within reach while lying prone on the ground.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is the world's laziest Pokémon. When it is lounging, it is actually saving energy for striking back.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is the world's laziest Pokémon. When it is lounging, it is actually saving energy for striking back.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is the world's most slothful Pokémon. However, it can exert horrifying power by releasing pent-up energy all at once.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon lives lying on its side. It only rolls over and moves when there is no more grass to eat.\"\n    }\n  ],\n  \"290\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Nincada lives underground for many years in complete darkness. This Pokémon absorbs nutrients from the roots of trees. It stays motionless as it waits for evolution.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Nincada lives underground. It uses its sharp claws to carve the roots of trees and absorb moisture and nutrients. This Pokémon can't withstand bright sunlight so avoids it.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It makes its nest at the roots of a mighty tree. Using its whiskerlike antennae, it probes its surroundings in the pitch-black darkness of soil.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Because it lived almost entirely underground, it is nearly blind. It uses its antennae instead.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Because it lived almost entirely underground, it is nearly blind. It uses its antennae instead.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It grows underground, sensing its surroundings using antennae instead of its virtually blind eyes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It grows underground, sensing its surroundings using antennae instead of its virtually blind eyes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It grows underground, sensing its surroundings using antennae instead of its virtually blind eyes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can sometimes live underground for more than 10 years. It absorbs nutrients from the roots of trees.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It can sometimes live underground for more than 10 years. It absorbs nutrients from the roots of trees.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It grows underground, sensing its surroundings using antennae instead of its virtually blind eyes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It grows underground, sensing its surroundings using antennae instead of its virtually blind eyes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It grows underground, sensing its surroundings using antennae instead of its virtually blind eyes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It grows underground, sensing its surroundings using antennae instead of its virtually blind eyes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Because it lived almost entirely underground, it is nearly blind. It uses its antennae instead.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can sometimes live underground for more than 10 years. It absorbs nutrients from the roots of trees.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Nincada lives underground for many years in complete darkness. This Pokémon absorbs nutrients from the roots of trees. It stays motionless as it waits for evolution.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Nincada lives underground. It uses its sharp claws to carve the roots of trees and absorb moisture and nutrients. This Pokémon can't withstand bright sunlight so avoids it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Because it lived almost entirely underground, it is nearly blind. It uses its antennae instead.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can sometimes live underground for more than 10 years. It absorbs nutrients from the roots of trees.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It grows underground, sensing its surroundings using antennae instead of its virtually blind eyes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It grows underground, sensing its surroundings using antennae instead of its virtually blind eyes.\"\n    }\n  ],\n  \"291\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Ninjask moves around at such a high speed that it cannot be seen, even while its crying can be clearly heard. For that reason, this Pokémon was long believed to be invisible.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If Ninjask is not trained properly, it will refuse to obey the Trainer and cry loudly continuously. Because of this quality, this Pokémon is said to be one that puts the Trainer's abilities to the test.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Because it darts about vigorously at high speed, it is very difficult to see. Hearing its distinctive cries for too long induces a headache.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Pokémon is so quick, it is said to be able to avoid any attack. It loves to feed on tree sap.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"This Pokémon is so quick, it is said to be able to avoid any attack. It loves to feed on tree sap.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Because it moves so quickly, it sometimes becomes unseeable. It congregates around tree sap.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Because it moves so quickly, it sometimes becomes unseeable. It congregates around tree sap.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Because it moves so quickly, it sometimes becomes unseeable. It congregates around tree sap.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its cry leaves a lasting headache if heard for too long. It moves so quickly that it is almost invisible.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its cry leaves a lasting headache if heard for too long. It moves so quickly that it is almost invisible.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Because it moves so quickly, it sometimes becomes unseeable. It congregates around tree sap.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because it moves so quickly, it sometimes becomes unseeable. It congregates around tree sap.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Because it moves so quickly, it sometimes becomes unseeable. It congregates around tree sap.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Because it moves so quickly, it sometimes becomes unseeable. It congregates around tree sap.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its cry leaves a lasting headache if heard for too long. It moves so quickly that it is almost invisible.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Because it moves so quickly, it sometimes becomes unseeable. It congregates around tree sap.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ninjask moves around at such a high speed that it cannot be seen, even while its crying can be clearly heard. For that reason, this Pokémon was long believed to be invisible.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If Ninjask is not trained properly, it will refuse to obey the Trainer and cry loudly continuously. Because of this quality, this Pokémon is said to be one that puts the Trainer's abilities to the test.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its cry leaves a lasting headache if heard for too long. It moves so quickly that it is almost invisible.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is so quick, it is said to be able to avoid any attack. It loves to feed on tree sap.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Because they move so quickly, they sometimes become unseeable. They congregate around tree sap.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Because they move so quickly, they sometimes become unseeable. They congregate around tree sap.\"\n    }\n  ],\n  \"292\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Shedinja's hard body doesn't move - not even a twitch. In fact, its body appears to be merely a hollow shell. It is believed that this Pokémon will steal the spirit of anyone peering into its hollow body from its back.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Shedinja is a peculiar Pokémon. It seems to appear unsought in a Poké Ball after a Nincada evolves. This bizarre Pokémon is entirely immobile - it doesn't even breathe.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A peculiar Pokémon that floats in air even though its wings remain completely still. The inside of its body is hollow and utterly dark.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A most peculiar Pokémon that somehow appears in a Poké Ball when a Nincada evolves.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A most peculiar Pokémon that somehow appears in a Poké Ball when a Nincada evolves.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A strange Pokémon--it flies without moving its wings, has a hollow shell for a body, and does not breathe.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A strange Pokémon--it flies without moving its wings, has a hollow shell for a body, and does not breathe.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A most peculiar Pokémon that somehow appears in a Poké Ball when a Nincada evolves.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Shedinja's hard body doesn't move—not even a twitch. In fact, its body appears to be merely a hollow shell. It is believed that this Pokémon will steal the spirit of anyone peering into its hollow body from its back.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Shedinja is a peculiar Pokémon. It seems to appear unsought in a Poké Ball after a Nincada evolves. This bizarre Pokémon is entirely immobile—it doesn't even breathe.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A most peculiar Pokémon that somehow appears in a Poké Ball when a Nincada evolves.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A strange Pokémon—it flies without moving its wings, has a hollow shell for a body, and does not breathe.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is a discarded bug shell that came to life. Peering into the crack on its back is said to steal one's spirit.\"\n    }\n  ],\n  \"293\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Normally, Whismur's voice is very quiet - it is barely audible even if one is paying close attention. However, if this Pokémon senses danger, it starts crying at an earsplitting volume.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Whismur is very timid. If it starts to cry loudly, it becomes startled by its own crying and cries even harder. When it finally stops crying, the Pokémon goes to sleep, all tired out.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its cries equal a jet plane in volume. It inhales through its ear canals. Because of this system, it can cry continually without having to catch its breath.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It usually murmurs, but starts crying loudly if it senses danger. It stops when its ear covers are shut.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It usually murmurs, but starts crying loudly if it senses danger. It stops when its ear covers are shut.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Usually, its cries are like quiet murmurs. If frightened, it shrieks at the same volume as a jet plane.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Usually, its cries are like quiet murmurs. If frightened, it shrieks at the same volume as a jet plane.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Usually, its cries are like quiet murmurs. If frightened, it shrieks at the same volume as a jet plane.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it senses danger, it scares the foe by crying out with the volume of a jet-plane engine.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it senses danger, it scares the foe by crying out with the volume of a jet-plane engine.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Usually, its cries are like quiet murmurs. If frightened, it shrieks at the same volume as a jet plane.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Usually, its cries are like quiet murmurs. If frightened, it shrieks at the same volume as a jet plane.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Usually, its cries are like quiet murmurs. If frightened, it shrieks at the same volume as a jet plane.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Usually, its cries are like quiet murmurs. If frightened, it shrieks at the same volume as a jet plane.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It usually murmurs but starts crying loudly if it senses danger. It stops when its ear covers are shut.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it senses danger, it scares the foe by crying out with the volume of a jet-plane engine.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Normally, Whismur's voice is very quiet—it is barely audible even if one is paying close attention. However, if this Pokémon senses danger, it starts crying at an earsplitting volume.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Whismur is very timid. If it starts to cry loudly, it becomes startled by its own crying and cries even harder. When it finally stops crying, the Pokémon goes to sleep, all tired out.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The cry of a Whismur is over 100 decibels. If you're close to a Whismur when it lets out a cry, you'll be stuck with an all-day headache.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When Whismur cries, the sound of its own voice startles it, making the Pokémon cry even louder. It cries until its exhausted, then it falls asleep.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Usually, its cries are like quiet murmurs. If frightened, it shrieks at the same volume as a jet plane.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Usually, its cries are like quiet murmurs. If frightened, it shrieks at the same volume as a jet plane.\"\n    }\n  ],\n  \"294\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Loudred's bellowing can completely decimate a wood-frame house. It uses its voice to punish its foes. This Pokémon's round ears serve as loudspeakers.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Loudred shouts while stamping its feet. After it finishes shouting, this Pokémon becomes incapable of hearing anything for a while. This is considered to be a weak point.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It positions the round speakers on its head to assail foes with ultrasonic waves at massive volume. It builds power by stomping the ground.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When it stamps its feet and bellows, it generates ultrasonic waves that can blow apart a house.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When it stamps its feet and bellows, it generates ultrasonic waves that can blow apart a house.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It shouts loudly by inhaling air, and then uses its well-developed stomach muscles to exhale.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It shouts loudly by inhaling air, and then uses its well-developed stomach muscles to exhale.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It shouts loudly by inhaling air, and then uses its well-developed stomach muscles to exhale.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Loudred's bellowing can completely decimate a wood-frame house. It uses its voice to punish its foes. This Pokémon's round ears serve as loudspeakers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Loudred shouts while stamping its feet. After it finishes shouting, this Pokémon becomes incapable of hearing anything for a while. This is considered to be a weak point.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Loudred's ears serve as speakers, and they can put out sound waves powerful enough to blow away a house.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The force of this Pokémon's loud voice isn't just the sound—it's also the wave of air pressure that blows opponents away and damages them.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The shock waves from its cries can tip over trucks. It stamps its feet to power up.\"\n    }\n  ],\n  \"295\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Exploud triggers earthquakes with the tremors it creates by bellowing. If this Pokémon violently inhales from the ports on its body, it's a sign that it is preparing to let loose a huge bellow.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Exploud communicates its feelings to the others by emitting whistle-like sounds from the tubes on its body. This Pokémon only raises its voice when it is in battle.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It has sound-generating organs all over its body. It communicates with others by adjusting the tone and volume of the cries it emits.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It emits a variety of sounds from the holes all over its body. Its loud cries can be heard from over six miles away.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It emits a variety of sounds from the holes all over its body. Its loud cries can be heard from over six miles away.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its roar in battle shakes the ground like a tremor--or like an earthquake has struck.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its roar in battle shakes the ground like a tremor--or like an earthquake has struck.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its roar in battle shakes the ground like a tremor--or like an earthquake has struck.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Exploud triggers earthquakes with the tremors it creates by bellowing. If this Pokémon violently inhales from the ports on its body, it's a sign that it is preparing to let loose a huge bellow.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Exploud communicates its feelings to the others by emitting whistle-like sounds from the tubes on its body. This Pokémon only raises its voice when it is in battle.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In the past, people would use the loud voices of these Pokémon as a means of communication between distant cities.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon can do more than just shout. To communicate with others of its kind, it'll emit all sorts of sounds from the holes in its body.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its howls can be heard over six miles away. It emits all sorts of noises from the ports on its body.\"\n    }\n  ],\n  \"296\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It toughens up by slamming into thick trees over and over. It gains a sturdy body and dauntless spirit.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Makuhita is tenacious - it will keep getting up and attacking its foe however many times it is knocked down. Every time it gets back up, this Pokémon stores more energy in its body for evolving.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Makuhita has a tireless spirit - it will never give up hope. It eats a lot of food, gets plenty of sleep, and it trains very rigorously. By living that way, this Pokémon packs its body with energy.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It loves to toughen up its body above all else. If you hear quaking rumbles in a cave, it is the sound of Makuhita undertaking strenuous training.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It grows stronger by enduring harsh training. It is a gutsy Pokémon that can withstand any attack.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It grows stronger by enduring harsh training. It is a gutsy Pokémon that can withstand any attack.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It toughens its body by slamming into thick trees. Many snapped trees can be found near its nest.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It toughens its body by slamming into thick trees. Many snapped trees can be found near its nest.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It toughens its body by slamming into thick trees. Many snapped trees can be found near its nest.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It toughens up by slamming into thick trees over and over. It gains a sturdy body and dauntless spirit.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It toughens up by slamming into thick trees over and over. It gains a sturdy body and dauntless spirit.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It toughens its body by slamming into thick trees. Many snapped trees can be found near its nest.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It toughens its body by slamming into thick trees. Many snapped trees can be found near its nest.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It toughens its body by slamming into thick trees. Many snapped trees can be found near its nest.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It toughens its body by slamming into thick trees. Many snapped trees can be found near its nest.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It toughens up by slamming into thick trees over and over. It gains a sturdy body and dauntless spirit.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It grows stronger by enduring harsh training. It is a gutsy Pokémon that can withstand any attack.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Makuhita is tenacious—it will keep getting up and attacking its foe however many times it is knocked down. Every time it gets back up, this Pokémon stores more energy in its body for evolving.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Makuhita has a tireless spirit—it will never give up hope. It eats a lot of food, gets plenty of sleep, and it trains very rigorously. By living that way, this Pokémon packs its body with energy.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It was originally brought in from another region, but now Makuhita from Alola are more famous.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Their daily routine consists of training together first thing in the morning, eating and napping in the afternoon, and then more training afterward.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It practices its slaps by repeatedly slapping tree trunks. It has been known to slap an Exeggutor and get flung away.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"There's a rumor of a traditional recipe for stew that Trainers can use to raise strong Makuhita.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It toughens its body by slamming into thick trees. Many snapped trees can be found near its nest.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It toughens its body by slamming into thick trees. Many snapped trees can be found near its nest.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It grows stronger by enduring harsh training. It is a gutsy Pokémon that can withstand any attack.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It toughens up by slamming into thick trees over and over. It gains a sturdy body and dauntless spirit.\"\n    }\n  ],\n  \"297\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It loves challenging others to tests of strength. It has the power to stop a train with a slap.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Hariyama practices its straight-arm slaps in any number of locations. One hit of this Pokémon's powerful, openhanded, straight-arm punches could snap a telephone pole in two.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Hariyama's thick body may appear fat, but it is actually a hunk of solid muscle. If this Pokémon bears down and tightens all its muscles, its body becomes as hard as a rock.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It has the habit of challenging others without hesitation to tests of strength. It's been known to stand on train tracks and stop trains using forearm thrusts.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It stomps on the ground to build power. It can send a 10-ton truck flying with a straight-arm punch.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It stomps on the ground to build power. It can send a 10-ton truck flying with a straight-arm punch.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can knock a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can knock a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can knock a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It loves challenging others to tests of strength. It has the power to stop a train with a slap.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It loves challenging others to tests of strength. It has the power to stop a train with a slap.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can knock a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can knock a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can knock a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can knock a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It stomps on the ground to build power. It can send a 10-ton truck flying with a straight-arm punch.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can knock a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Hariyama practices its straight-arm slaps in any number of locations. One hit of this Pokémon's powerful, openhanded, straight-arm punches could snap a telephone pole in two.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Hariyama's thick body may appear fat, but it is actually a hunk of solid muscle. If this Pokémon bears down and tightens all its muscles, its body becomes as hard as a rock.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It is known for its fantastic strength, but as it grows older, it focuses more on training Makuhita.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They love to compare their freakish strength—strength enough to send a truck flying with a single slap.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although they enjoy comparing their strength, they're also kind. They value etiquette, praising opponents they battle.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Hariyama that are big and fat aren't necessarily strong. There are some small ones that move nimbly and use moves skillfully.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can send a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It loves to match power with big-bodied Pokémon. It can send a truck flying with its arm thrusts.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It loves challenging others to tests of strength. It has the power to stop a train with a slap.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It stomps on the ground to build power. It can send a 10-ton truck flying with a straight-arm punch.\"\n    }\n  ],\n  \"298\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its tail is packed full of the nutrients it needs to grow.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Azurill spins its tail as if it were a lasso, then hurls it far. The momentum of the throw sends its body flying, too. Using this unique action, one of these Pokémon managed to hurl itself a record 33 feet.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Azurill's tail is large and bouncy. It is packed full of the nutrients this Pokémon needs to grow. Azurill can be seen bouncing and playing on its big, rubbery tail.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its tail, which is packed with nutrition, is very bouncy like a rubber ball. On sunny days they gather at the edge of water and splash about for fun.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It battles by flinging around its tail, which is bigger than its body. The tail is a flotation device in water.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It battles by flinging around its tail, which is bigger than its body. The tail is a flotation device in water.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that lives by water. It moves quickly on land by bouncing on its big tail.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its tail is filled with nutrients necessary for growth. It plays by bouncing on its tail.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its tail bounces like a rubber ball. It flings that tail around to fight opponents bigger than itself.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its tail is packed full of the nutrients it needs to grow.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its tail is packed full of the nutrients it needs to grow.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its tail bounces like a rubber ball. It flings that tail around to fight opponents bigger than itself.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its tail bounces like a rubber ball. It flings that tail around to fight opponents bigger than itself.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It swings its large, nutrient-filled tail around to fight opponents bigger than itself.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It swings its large, nutrient-filled tail around to fight opponents bigger than itself.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A Pokémon that lives by water. It moves quickly on land by bouncing on its big tail.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It swings its large, nutrient-filled tail around to fight opponents bigger than itself.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Azurill spins its tail as if it were a lasso, then hurls it far. The momentum of the throw sends its body flying, too. Using this unique action, one of these Pokémon managed to hurl itself a record 33 feet.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Azurill's tail is large and bouncy. It is packed full of the nutrients this Pokémon needs to grow. Azurill can be seen bouncing and playing on its big, rubbery tail.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The ball on Azurill's tail bounces like a rubber ball, and it's full of the nutrients the Pokémon needs to grow.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Although Azurill are normally docile, an angry one will swing around the big ball on its tail and try to smash its opponents.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It's a Pokémon that lives by water. It moves quickly on land by bouncing on its big tail.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its tail is filled with nutrients necessary for growth. It plays by bouncing on its tail.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its tail bounces like a rubber ball. It flings that tail around to fight opponents bigger than itself.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its tail is packed full of the nutrients it needs to grow.\"\n    }\n  ],\n  \"299\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Nosepass's magnetic nose is always pointed to the north. If two of these Pokémon meet, they cannot turn their faces to each other when they are close because their magnetic noses repel one another.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Nosepass had been said to be completely unmoving, with its magnetic nose pointed due north. However, close observation has revealed that the Pokémon actually moves by a little over 3/8 of an inch every year.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its body emits a powerful magnetism. It feeds on prey that is pulled in by the force. Its magnetism is stronger in cold seasons.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its magnetic nose consistently faces north. Travelers check Nosepass to get their bearings.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its magnetic nose consistently faces north. Travelers check Nosepass to get their bearings.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its nose is a magnet. As a result, this Pokémon always keeps its face pointing north.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its nose is a magnet. As a result, this Pokémon always keeps its face pointing north.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When endangered, it may protect itself by raising its magnetism and drawing iron objects to its body.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If two of these meet, they cannot get too close because their noses repel each other.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If two of these meet, they cannot get too close because their noses repel each other.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When endangered, it may protect itself by raising its magnetism and drawing iron objects to its body.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When endangered, it may protect itself by raising its magnetism and drawing iron objects to its body.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its magnetic nose always faces north and draws iron objects to its body to protect itself better.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its magnetic nose always faces north and draws iron objects to its body to protect itself better.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its magnetic nose always faces north and draws iron objects to its body to protect itself better.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its magnetic nose consistently faces north. Travelers check Nosepass to get their bearings.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Nosepass's magnetic nose is always pointed to the north. If two of these Pokémon meet, they cannot turn their faces to each other when they are close because their magnetic noses repel one another.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Nosepass had been said to be completely unmoving, with its magnetic nose pointed due north. However, close observation has revealed that the Pokémon actually moves by a little over 3/8 of an inch every year.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The magnet in Nosepass's nose provides an unerring compass, making it an excellent partner for Trainers going on a journey.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It uses powerful magnetism to drag its prey toward it. It's also been known to pull in metal, which it collects and uses to protect itself.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It moves less than an inch a year, but when it's in a jam, it will spin and drill down into the ground in a split second.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It hunts without twitching a muscle by pulling in its prey with powerful magnetism. But sometimes it pulls natural enemies in close.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its nose is a magnet. As a result, this Pokémon always keeps its face pointing north.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its nose is a magnet. As a result, this Pokémon always keeps its face pointing north.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Once the people of Hisui discovered that its red nose always points north, they grew to rely on it greatly when traveling afar. The nose seems to work in a similar way to ancient compasses.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The magnet in Nosepass's nose provides an unerring compass, making this Pokémon an excellent partner for Trainers going on a journey.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When endangered, it may protect itself by increasing its magnetism and drawing nearby iron objects to its body.\"\n    }\n  ],\n  \"300\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Skitty has the habit of becoming fascinated by moving objects and chasing them around. This Pokémon is known to chase after its own tail and become dizzy.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Skitty is known to chase around playfully after its own tail. In the wild, this Pokémon lives in holes in the trees of forests. It is very popular as a pet because of its adorable looks.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Skitty's adorably cute behavior makes it highly popular. In battle, it makes its tail puff out. It threatens foes with a sharp growl.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is said to be difficult to earn its trust. However, it is extremely popular for its cute looks and behavior.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is said to be difficult to earn its trust. However, it is extremely popular for its cute looks and behavior.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It can't stop itself from chasing moving things, and it runs in a circle, chasing its own tail.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can't stop itself from chasing moving things, and it runs in a circle, chasing its own tail.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can't stop itself from chasing moving things, and it runs in a circle, chasing its own tail.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It's adorable when it chases its own tail. It's difficult to earn its trust.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It's adorable when it chases its own tail. It's difficult to earn its trust.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can't stop itself from chasing moving things, and it runs in a circle, chasing its own tail.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can't stop itself from chasing moving things, and it runs in a circle, chasing its own tail.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It shows its cute side by chasing its own tail until it gets dizzy.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It shows its cute side by chasing its own tail until it gets dizzy.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can't stop itself from chasing moving things, and it runs in a circle, chasing its own tail.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It shows its cute side by chasing its own tail until it gets dizzy.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Skitty has the habit of becoming fascinated by moving objects and chasing them around. This Pokémon is known to chase after its own tail and become dizzy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Skitty is known to chase around playfully after its own tail. In the wild, this Pokémon lives in holes in the trees of forests. It is very popular as a pet because of its adorable looks.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It can't stop itself from chasing moving things, and it runs in circles, chasing its own tail.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can't stop itself from chasing moving things, and it runs in circles, chasing its own tail.\"\n    }\n  ],\n  \"301\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Delcatty prefers to live an unfettered existence in which it can do as it pleases at its own pace. Because this Pokémon eats and sleeps whenever it decides, its daily routines are completely random.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Delcatty sleeps anywhere it wants without keeping a permanent nest. If other Pokémon approach it as it sleeps, this Pokémon will never fight - it will just move away somewhere else.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Rather than keeping a permanent lair, it habitually seeks comfortable spots and sleeps there. It is nocturnal and becomes active at dusk.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The favorite of trend-conscious female Trainers, they are used in competition for their style and fur.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The favorite of trend-conscious female Trainers, they are used in competition for their style and fur.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is highly popular among female Trainers for its sublime fur. It does not keep a nest.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is highly popular among female Trainers for its sublime fur. It does not keep a nest.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is highly popular among female Trainers for its sublime fur. It does not keep a nest.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It dislikes dirty places. It often searches for a comfortable place in which to groom itself.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It dislikes dirty places. It often searches for a comfortable place in which to groom itself.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is highly popular among female Trainers for its sublime fur. It does not keep a nest.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is highly popular among female Trainers for its sublime fur. It does not keep a nest.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The reason it does not have a nest is that it simply searches for a clean, comfortable place then sleeps there.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The reason it does not have a nest is that it simply searches for a clean, comfortable place then sleeps there.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It dislikes dirty places. It often searches for a comfortable place in which to groom itself.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is highly popular among female Trainers for its sublime fur. It does not keep a nest.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Delcatty prefers to live an unfettered existence in which it can do as it pleases at its own pace. Because this Pokémon eats and sleeps whenever it decides, its daily routines are completely random.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Delcatty sleeps anywhere it wants without keeping a permanent nest. If other Pokémon approach it as it sleeps, this Pokémon will never fight—it will just move away somewhere else.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is highly popular among Trainers for its sublime fur. It does not keep a nest.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is highly popular among Trainers for its sublime fur. It does not keep a nest.\"\n    }\n  ],\n  \"302\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It dwells in the darkness of caves. It uses its sharp claws to dig up gems to nourish itself.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Sableye lead quiet lives deep inside caverns. They are feared, however, because these Pokémon are thought to steal the spirits of people when their eyes burn with a sinister glow in the darkness.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sableye digs the ground with sharpened claws to find rocks that it eats. Substances in the eaten rocks crystallize and rise up to the Pokémon's body surface.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It digs branching holes in caves using its sharp claws in search of food--raw gems. A Sableye lurks in darkness and is seen only rarely.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It feeds on gemstone crystals. In darkness, its eyes sparkle with the glitter of jewels.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It feeds on gemstone crystals. In darkness, its eyes sparkle with the glitter of jewels.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It dwells in the darkness of caves. It uses its sharp claws to dig up gems to nourish itself.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It dwells in the darkness of caves. It uses its sharp claws to dig up gems to nourish itself.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It dwells in the darkness of caves. It uses its sharp claws to dig up gems to nourish itself.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sableye lead quiet lives deep inside caverns. They are feared, however, because these Pokémon are thought to steal the spirits of people when their eyes burn with a sinister glow in the darkness.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sableye digs the ground with sharpened claws to find rocks that it eats. Substances in the eaten rocks crystallize and rise up to the Pokémon's body surface.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It's a fiend for gemstones, so it stalks Carbink. Unfortunately, Gabite almost always grabs them first.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon is feared. When its gemstone eyes begin to glow with a sinister shine, it's believed that Sableye will steal people's spirits away.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It digs through the ground with its hard claws and crunches down gems with its thick pointy teeth. Carbink is its favorite food.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Materials from gems it has eaten float to the surface of its body and can form an infinite number of patterns among individuals.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is feared. When its gemstone eyes begin to glow with a sinister shine, it's believed that Sableye will steal people's spirits away.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It feeds on gemstone crystals. In darkness, its eyes sparkle with the glitter of jewels.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It dwells in the darkness of caves. It uses its sharp claws to dig up gems to nourish itself.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Materials from gems it has eaten float to the surface of its body and can form an infinite number of patterns among individuals.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It hides in the darkness of caves. Its diet of gems has transformed its eyes into gemstones.\"\n    }\n  ],\n  \"303\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its giant jaws are actually steel horns that transformed. It fools foes into complacency with its adorable gestures, then chomps them with its huge jaws.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \" {{tt|Mawile|Misspelled as \\\"Mawhile\\\" in version 1.0, corrected in newer revisions}}'s huge jaws are actually steel horns that have been transformed. Its docile-looking face serves to lull its foe into letting down its guard. When the foe least expects it, {{tt|Mawile|Misspelled as \\\"Mawhile\\\" in version 1.0, corrected in newer revisions}} chomps it with its gaping jaws.}} \"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Don't be taken by this Pokémon's cute face - it's very dangerous. Mawile fools the foe into letting down its guard then chomps down with its massive jaws. The steel jaws are really horns that have been transformed.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its giant jaws are actually steel horns that transformed. It fools foes into complacency with its adorable gestures, then chomps them with its huge jaws.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It uses its docile-looking face to lull foes into complacency, then bites with its huge, relentless jaws.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It uses its docile-looking face to lull foes into complacency, then bites with its huge, relentless jaws.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It chomps with its gaping mouth. Its huge jaws are actually steel horns that have been transformed.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It chomps with its gaping mouth. Its huge jaws are actually steel horns that have been transformed.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It uses its docile-looking face to lull foes into complacency, then bites with its huge, relentless jaws.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Mawile's huge jaws are actually steel horns that have been transformed. Its docile-looking face serves to lull its foe into letting down its guard. When the foe least expects it, Mawile chomps it with its gaping jaws.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Don't be taken in by this Pokémon's cute face—it's very dangerous. Mawile fools the foe into letting down its guard, then chomps down with its massive jaws. The steel jaws are really horns that have been transformed.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"A cunning and terrifying Pokémon, its cuteness makes opponents let down their guard—and then it swallows them whole with its huge jaws.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It has two mouths. The big jaws on the back of its head can't taste anything, so that's the mouth it uses to eat foods it doesn't like.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It uses its docile-looking face to lull foes into complacency, then bites with its huge, relentless jaws.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It chomps with its gaping mouth. Its huge jaws are actually steel horns that have been transformed.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Attached to its head is a huge set of jaws formed by horns. It can chew through iron beams.\"\n    }\n  ],\n  \"304\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"This Pokémon has a body of steel. To make its body, Aron feeds on iron ore that it digs from mountains. Occasionally, it causes major trouble by eating bridges and rails.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Aron has a body of steel. With one all-out charge, this Pokémon can demolish even a heavy dump truck. The destroyed dump truck then becomes a handy meal for the Pokémon.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that is clad in steel armor. A new suit of armor is made when it evolves. The old, discarded armor is salvaged as metal for making iron products.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It eats iron to build its steel body. It is a pest that descends from mountains to eat bridges and train tracks.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It eats iron to build its steel body. It is a pest that descends from mountains to eat bridges and train tracks.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It usually lives deep in mountains. However, hunger may drive it to eat railroad tracks and cars.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It usually lives deep in mountains. However, hunger may drive it to eat railroad tracks and cars.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It usually lives deep in mountains. However, hunger may drive it to eat railroad tracks and cars.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it evolves, it sheds the steel carapace that covered its whole body and develops a new one.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it evolves, it sheds the steel carapace that covered its whole body and develops a new one.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It usually lives deep in mountains. However, hunger may drive it to eat railroad tracks and cars.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It usually lives deep in mountains. However, hunger may drive it to eat railroad tracks and cars.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"In order to build up its steel body, it eats iron ore. This pesky Pokémon is known to eat railroad tracks.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"In order to build up its steel body, it eats iron ore. This pesky Pokémon is known to eat railroad tracks.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It usually lives deep in mountains. However, hunger may drive it to eat railroad tracks and cars.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it evolves, it sheds the steel carapace that covered its whole body and develops a new one.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon has a body of steel. To make its body, Aron feeds on iron ore that it digs from mountains. Occasionally, it causes major trouble by eating bridges and rails.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Aron has a body of steel. With one all-out charge, this Pokémon can demolish even a heavy dump truck. The destroyed dump truck then becomes a handy meal for the Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It eats iron ore—and sometimes railroad tracks— to build up the steel armor that protects its body.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When Aron evolves, its steel armor peels off. In ancient times, people would collect Aron's shed armor and make good use of it in their daily lives.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It usually lives deep in mountains. But when it's hungry, it shows up at the foot of the mountains and eats railroad tracks and cars.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It usually lives deep in mountains. But when it's hungry, it shows up at the foot of the mountains and eats railroad tracks and cars.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When it evolves, it sheds the steel carapace that covered its whole body and develops a new one.\"\n    }\n  ],\n  \"305\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Lairon tempers its steel body by drinking highly nutritious mineral springwater until it is bloated. This Pokémon makes its nest close to springs of delicious water.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Lairon feeds on iron contained in rocks and water. It makes its nest on mountains where iron ore is buried. As a result, the Pokémon often clashes with humans mining the iron ore.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When two Lairon meet in the wild, they fight for territory by bashing into each other with their steel bodies. The sound of their collision carries for miles.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It habitually shows off its strength with the size of sparks it creates by ramming its steel body into boulders.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It habitually shows off its strength with the size of sparks it creates by ramming its steel body into boulders.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"For food, it digs up iron ore. It smashes its steely body against others to fight over territory.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"For food, it digs up iron ore. It smashes its steely body against others to fight over territory.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"For food, it digs up iron ore. It smashes its steely body against others to fight over territory.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It loves iron ore. Groups of them fight for territory by bashing one another with their steel bodies.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It loves iron ore. Groups of them fight for territory by bashing one another with their steel bodies.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"For food, it digs up iron ore. It smashes its steely body against others to fight over territory.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"For food, it digs up iron ore. It smashes its steely body against others to fight over territory.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Lairon fight over territory, and when their steel bodies collide, sparks fly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Lairon fight over territory, and when their steel bodies collide, sparks fly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It loves iron ore. Groups of them fight for territory by bashing one another with their steel bodies.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It habitually shows off its strength with the size of sparks it creates by ramming its steel body into boulders.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Lairon tempers its steel body by drinking highly nutritious mineral springwater until it is bloated. This Pokémon makes its nest close to springs of delicious water.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Lairon feeds on iron contained in rocks and water. It makes its nest on mountains where iron ore is buried. As a result, the Pokémon often clashes with humans mining the iron ore.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Lairon live in mountains brimming with spring water and iron ore, so these Pokémon often came into conflict with humans in the past.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"During territorial disputes, Lairon fight by slamming into each other. Close inspection of their steel armor reveals scratches and dents.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"For food, it digs up iron ore. It smashes its steely body against others to fight over territory.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"For food, it digs up iron ore. It smashes its steely body against others to fight over territory.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It loves iron ore. Groups of them fight for territory by bashing one another with their steel bodies.\"\n    }\n  ],\n  \"306\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Aggron claims an entire mountain as its own territory. It mercilessly beats up anything that violates its environment. This Pokémon vigilantly patrols its territory at all times.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Aggron is surprisingly protective of its environment. If its mountain is ravaged by a landslide or a fire, this Pokémon will haul topsoil to the area, plant trees, and beautifully restore its own territory.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its iron horns grow longer a little at a time. They are used to determine the Aggron's age. The gouges in its armor are worn with pride as mementos from battles.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It claims a large mountain as its sole territory. It mercilessly thrashes those that violate its space.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It claims a large mountain as its sole territory. It mercilessly thrashes those that violate its space.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"While seeking iron for food, it digs tunnels by breaking through bedrock with its steel horns.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"While seeking iron for food, it digs tunnels by breaking through bedrock with its steel horns.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"While seeking iron for food, it digs tunnels by breaking through bedrock with its steel horns.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"You can tell its age by the length of its iron horns. It claims an entire mountain as its territory.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"You can tell its age by the length of its iron horns. It claims an entire mountain as its territory.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"While seeking iron for food, it digs tunnels by breaking through bedrock with its steel horns.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"While seeking iron for food, it digs tunnels by breaking through bedrock with its steel horns.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It claims an entire mountain as its own. The more wounds it has, the more it has battled, so don't take it lightly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It claims an entire mountain as its own. The more wounds it has, the more it has battled, so don't take it lightly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It claims an entire mountain as its own. The more wounds it has, the more it has battled, so don't take it lightly.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"While seeking iron for food, it digs tunnels by breaking through bedrock with its steel horns.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Aggron claims an entire mountain as its own territory. It mercilessly beats up anything that violates its environment. This Pokémon vigilantly patrols its territory at all times.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Aggron is protective of its environment. If its mountain is ravaged by a landslide or a fire, this Pokémon will haul topsoil to the area, plant trees, and beautifully restore its own territory.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Aggron has a horn sharp enough to perforate thick iron sheets. It brings down its opponents by ramming into them horn first.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Long ago, there was a king who wore a helmet meant to resemble the head of an Aggron. He was trying to channel the Pokémon's strength.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"While seeking iron for food, it digs tunnels by breaking through bedrock with its steel horns.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"While seeking iron for food, it digs tunnels by breaking through bedrock with its steel horns.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It claims an entire mountain as its own. The more wounds it has, the more it has battled, so don't take it lightly.\"\n    }\n  ],\n  \"307\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Meditite undertakes rigorous mental training deep in the mountains. However, whenever it meditates, this Pokémon always loses its concentration and focus. As a result, its training never ends.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Meditite heightens its inner energy through meditation. It survives on just one berry a day. Minimal eating is another aspect of this Pokémon's training.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It continually meditates for hours every day. As a result of rigorous and dedicated yoga training, it has tempered its spiritual power so much it can fly.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It never skips its daily yoga training. It heightens its inner strength through meditation.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It never skips its daily yoga training. It heightens its inner strength through meditation.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It eats just one berry a day. By enduring hunger, its spirit is tempered and made sharper.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It never misses its daily yoga workouts, and it heightens its spiritual power through meditation.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It always trains deep in mountains. It levitates when it heightens its spiritual power through meditation.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It meditates to heighten its inner energy and to float in the air. It eats one berry a day.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It meditates to heighten its inner energy and to float in the air. It eats one berry a day.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It always trains deep in mountains. It levitates when it heightens its spiritual power through meditation.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It always trains deep in mountains. It levitates when it heightens its spiritual power through meditation.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It always trains deep in mountains. It levitates when it heightens its spiritual power through meditation.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It always trains deep in mountains. It levitates when it heightens its spiritual power through meditation.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It always trains deep in mountains. It levitates when it heightens its spiritual power through meditation.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It eats just one berry a day. By enduring hunger, its spirit is tempered and made sharper.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Meditite undertakes rigorous mental training deep in the mountains. However, whenever it meditates, this Pokémon always loses its concentration and focus. As a result, its training never ends.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Meditite heightens its inner energy through meditation. It survives on just one berry a day. Minimal eating is another aspect of this Pokémon's training.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It meditates in order to build up its mental energy. It's said to eat just one Berry a day.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It never misses its daily yoga workouts, and it heightens its spiritual power through meditation.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It never skips its daily yoga training. It heightens its inner strength through meditation.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It meditates to heighten its inner energy and to float in the air. It eats one berry a day.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It meditates in order to build up its mental energy. It eats just one berry a day.\"\n    }\n  ],\n  \"308\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"It is said that through meditation, Medicham heightens energy inside its body and sharpens its sixth sense. This Pokémon hides its presence by merging itself with fields and mountains.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Through the power of meditation, Medicham developed its sixth sense. It gained the ability to use psychokinetic powers. This Pokémon is known to meditate for a whole month without eating.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Through crushingly harsh yoga training, it gained the power to foretell its foe's actions. It battles with elegant, dance-like movement.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It elegantly avoids attacks with dance-like steps, then launches a devastating blow in the same motion.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It elegantly avoids attacks with dance-like steps, then launches a devastating blow in the same motion.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Through yoga training, it has honed its sixth sense. Its movements are elegant.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Through daily meditation, it hones its spiritual power. It can sense what others are thinking.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It gains the ability to see the aura of its opponents by honing its mind through starvation.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Through yoga training, it gained the psychic power to predict its foe's next move.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Through yoga training, it gained the psychic power to predict its foe's next move.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It gains the ability to see the aura of its opponents by honing its mind through starvation.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It gains the ability to see the aura of its opponents by honing its mind through starvation.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It gains the ability to see the aura of its opponents by honing its mind through starvation.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It gains the ability to see the aura of its opponents by honing its mind through starvation.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It elegantly avoids attacks with dance-like steps, then launches a devastating blow in the same motion.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Through yoga training, it gained the psychic power to predict its foe's next move.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It is said that through meditation, Medicham heightens energy inside its body and sharpens its sixth sense. This Pokémon hides its presence by merging itself with fields and mountains.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Through the power of meditation, Medicham developed its sixth sense. It gained the ability to use psychokinetic powers. This Pokémon is known to meditate for a whole month without eating.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Through yoga training, it has honed its sixth sense. Its movements are elegant.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Through daily meditation, it hones its spiritual power. It can sense what others are thinking.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Through yoga training, it gained the psychic power to predict its foe's next move.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It elegantly avoids attacks with dance-like steps, then launches a devastating blow in the same motion.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Through yoga training, it gained the psychic power to predict its foe's movements.\"\n    }\n  ],\n  \"309\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Electrike stores electricity in its long body hair. This Pokémon stimulates its leg muscles with electric charges. These jolts of power give its legs explosive acceleration performance.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Electrike runs faster than the human eye can follow. The friction from running is converted into electricity, which is then stored in this Pokémon's fur.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It generates electricity using friction from the atmosphere. In seasons with especially arid air, its entire body blazes with violent showers of sparks.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It stores static electricity in its fur for discharging. It gives off sparks if a storm approaches.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It stores static electricity in its fur for discharging. It gives off sparks if a storm approaches.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It stores electricity in its fur. It gives off sparks from all over its body in seasons when the air is dry.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It stores electricity in its fur. It gives off sparks from all over its body in seasons when the air is dry.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It stores static electricity in its fur for discharging. It gives off sparks if a storm approaches.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Electrike stores electricity in its long body hair. This Pokémon stimulates its leg muscles with electric charges. These jolts of power give its legs explosive acceleration performance.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Electrike runs faster than the human eye can follow. The friction from running is converted into electricity, which is then stored in this Pokémon's fur.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Friction between the air and its fur produces static electricity. When Electrike runs, it makes a crackling sound.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Static electricity builds up all over its body as strands of its long fur rub together. This Pokémon boasts incredible speed.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It stores static electricity in its fur for discharging. It gives off sparks if a storm approaches.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It stores electricity in its fur. It gives off sparks from all over its body in seasons when the air is dry.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Using electricity stored in its fur, it stimulates its muscles to heighten its reaction speed.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It stores static electricity in its fur for discharging. This Pokémon's whole body gives off sparks if a storm approaches.\"\n    }\n  ],\n  \"310\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Manectric is constantly discharging electricity from its mane. The sparks sometimes ignite forest fires. When it enters a battle, this Pokémon creates thunderclouds.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Manectric discharges strong electricity from its mane. The mane is used for collecting electricity in the atmosphere. This Pokémon creates thunderclouds above its head.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Because lightning falls in their vicinities, Manectric were thought to have been born from lightning. In battle, they create thunderclouds.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It rarely appears before people. It is said to nest where lightning has fallen.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It rarely appears before people. It is said to nest where lightning has fallen.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It discharges electricity from its mane. It creates a thundercloud overhead to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It discharges electricity from its mane. It creates a thundercloud overhead to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It discharges electricity from its mane. It creates a thundercloud overhead to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its nest can be found where a thunderbolt hits. It is discharging electricity from its mane.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its nest can be found where a thunderbolt hits. It is discharging electricity from its mane.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It discharges electricity from its mane. It creates a thundercloud overhead to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It discharges electricity from its mane. It creates a thundercloud overhead to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It discharges electricity from its mane. It creates a thundercloud overhead to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It discharges electricity from its mane. It creates a thundercloud overhead to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It rarely appears before people. It is said to nest where lightning has fallen.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It discharges electricity from its mane. It creates a thundercloud overhead to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Manectric is constantly discharging electricity from its mane. The sparks sometimes ignite forest fires. When it enters a battle, this Pokémon creates thunderclouds.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Manectric discharges strong electricity from its mane. The mane is used for collecting electricity in the atmosphere. This Pokémon creates thunderclouds above its head.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Manectric can be found beneath unnatural thunderclouds. People say it can run at the same speed as lightning striking.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It stimulates its own muscles with electricity, so it can move quickly. It eases its soreness with electricity, too, so it can recover quickly as well.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It stimulates its own muscles with electricity, so it can move quickly. It eases its soreness with electricity, too, so it can recover quickly as well.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It rarely appears before people. It is said to nest where lightning has fallen.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It discharges electricity from its mane. The Pokémon creates a thundercloud overhead from which to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It discharges electricity from its mane. The Pokémon creates a thundercloud overhead from which to drop lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It discharges electricity from its mane. The Pokémon creates a thundercloud overhead from which to drop lightning bolts.\"\n    }\n  ],\n  \"311\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This Pokémon absorbs electricity from telephone poles. It shorts out the electricity stored inside its body to create noises.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Plusle always acts as a cheerleader for its partners. Whenever a teammate puts out a good effort in battle, this Pokémon shorts out its body to create the crackling noises of sparks to show its joy.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When Plusle is cheering on its partner, it flashes with electric sparks from all over its body. If its partner loses, this Pokémon cries loudly.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It has the trait of cheering on its fellow Pokémon. By shorting out the electricity it releases from its paws, it creates pom-poms for cheering.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It cheers on partners while scattering sparks from its body. It climbs telephone poles to absorb electricity.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It cheers on partners while scattering sparks from its body. It climbs telephone poles to absorb electricity.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It absorbs electricity from telephone poles. It shorts out its body to create crackling noises.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It absorbs electricity from telephone poles. It shorts out its body to create crackling noises.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It absorbs electricity from telephone poles. It shorts out its body to create crackling noises.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Plusle always acts as a cheerleader for its partners. Whenever a teammate puts out a good effort in battle, this Pokémon shorts out its body to create the crackling noises of sparks to show its joy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Plusle is cheering on its partner, it flashes with electric sparks from all over its body. If its partner loses, this Pokémon cries loudly.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It cheers on friends with pom-poms made of sparks. It drains power from telephone poles.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It cheers on partners while scattering sparks from its body. It climbs telephone poles to absorb electricity.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon absorbs electricity from telephone poles. It shorts out the electricity stored inside its body to create noises.\"\n    }\n  ],\n  \"312\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Exposure to electricity from Minun and Plusle promotes blood circulation and relaxes muscles.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Minun is more concerned about cheering on its partners than its own safety. It shorts out the electricity in its body to create brilliant showers of sparks to cheer on its teammates.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Minun loves to cheer on its partner in battle. It gives off sparks from its body while it is doing so. If its partner is in trouble, this Pokémon gives off increasing amounts of sparks.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"At a meeting of Pokémon academics, it was announced that simultaneous exposure to electricity from a Plusle and Minun will promote circulation and boost vitality.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its dislike of water makes it take shelter under the eaves of houses in rain. It uses pom-poms made of sparks for cheering.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its dislike of water makes it take shelter under the eaves of houses in rain. It uses pom-poms made of sparks for cheering.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Exposure to electricity from Minun and Plusle promotes blood circulation and relaxes muscles.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Exposure to electricity from Minun and Plusle promotes blood circulation and relaxes muscles.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Exposure to electricity from Minun and Plusle promotes blood circulation and relaxes muscles.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Minun is more concerned about cheering on its partners than its own safety. It shorts out the electricity in its body to create brilliant showers of sparks to cheer on its teammates.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Minun loves to cheer on its partner in battle. It gives off sparks from its body while it is doing so. If its partner is in trouble, this Pokémon gives off increasing amounts of sparks.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It cheers on friends. If its friends are losing, its body lets off more and more sparks.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Exposure to electricity from Minun and Plusle promotes blood circulation and relaxes muscles.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its dislike of water makes it take shelter under the eaves of houses in rain. It uses pom-poms made of sparks for cheering.\"\n    }\n  ],\n  \"313\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It flashes the light on its rear to communicate with other Volbeat. It loves the sweet aroma given off by Illumise.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"With the arrival of night, Volbeat emits light from its tail. It communicates with others by adjusting the intensity and flashing of its light. This Pokémon is attracted by the sweet aroma of Illumise.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Volbeat's tail glows like a lightbulb. With other Volbeat, it uses its tail to draw geometric shapes in the night sky. This Pokémon loves the sweet aroma given off by Illumise.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"With their taillights lit, Volbeat fly in a swarm, drawing geometric designs in the night sky. They move their nests if their pond water becomes dirty.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives around clean ponds. At night, its rear lights up. It converses with others by flashing its light.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It lives around clean ponds. At night, its rear lights up. It converses with others by flashing its light.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves ILLUMISE's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves ILLUMISE's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves ILLUMISE's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It emits light from its tail to communicate. It loves the sweet aroma given off by Illumise.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It emits light from its tail to communicate. It loves the sweet aroma given off by Illumise.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves Illumise's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves Illumise's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves Illumise's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves Illumise's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves Illumise's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives around clean ponds. At night, its rear lights up. It converses with others by flashing its light.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"With the arrival of night, Volbeat emits light from its tail. It communicates with others by adjusting the intensity and flashing of its light. This Pokémon is attracted by the sweet aroma of Illumise.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Volbeat's tail glows like a lightbulb. With other Volbeat, it uses its tail to draw geometric shapes in the night sky. This Pokémon loves the sweet aroma given off by Illumise.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves Illumise's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It communicates with others by lighting up its rear at night. It loves Illumise's sweet aroma.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives around clean ponds. At night, its rear lights up. It converses with others by flashing its light.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It flashes the light on its rear to communicate with other Volbeat. It loves the sweet aroma given off by Illumise.\"\n    }\n  ],\n  \"314\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It guides Volbeat to draw signs in the night sky. There are scholars who research the meaning of these signs.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Illumise attracts a swarm of Volbeat using a sweet fragrance. Once the Volbeat have gathered, this Pokémon leads the lit-up swarm in drawing geometric designs on the canvas of the night sky.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Illumise leads a flight of illuminated Volbeat to draw signs in the night sky. This Pokémon is said to earn greater respect from its peers by composing more complex designs in the sky.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A nocturnal Pokémon that becomes active upon nightfall. It leads a Volbeat swarm to draw patterns in the night sky. Over 200 different patterns have been confirmed.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It guides Volbeat to draw signs in night skies. There are scientists that study the patterns it creates.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It guides Volbeat to draw signs in night skies. There are scientists that study the patterns it creates.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"With its sweet aroma, it guides VOLBEAT to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"With its sweet aroma, it guides VOLBEAT to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"With its sweet aroma, it guides VOLBEAT to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its fragrance attracts a swarm of Volbeat, so they draw over 200 patterns in the night sky.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its fragrance attracts a swarm of Volbeat, so they draw over 200 patterns in the night sky.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"With its sweet aroma, it guides Volbeat to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"With its sweet aroma, it guides Volbeat to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"With its sweet aroma, it guides Volbeat to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"With its sweet aroma, it guides Volbeat to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its fragrance attracts a swarm of Volbeat, so they draw over 200 patterns in the night sky.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"With its sweet aroma, it guides Volbeat to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Illumise attracts a swarm of Volbeat using a sweet fragrance. Once the Volbeat have gathered, this Pokémon leads the lit-up swarm in drawing geometric designs on the canvas of the night sky.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Illumise leads a flight of illuminated Volbeat to draw signs in the night sky. This Pokémon is said to earn greater respect from its peers by composing more complex designs in the sky.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"With its sweet aroma, it guides Volbeat to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"With its sweet aroma, it guides Volbeat to draw signs with light in the night sky.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Illumise uses its sweet scent to guide Volbeat, having them form over 200 patterns in the night sky.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It guides Volbeat to draw signs in the night sky. There are scholars who research the meaning of these signs.\"\n    }\n  ],\n  \"315\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Roselia shoots sharp thorns as projectiles at any opponent that tries to steal the flowers on its arms. The aroma of this Pokémon brings serenity to living things.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"On extremely rare occasions, a Roselia is said to appear with its flowers in unusual colors. The thorns on this Pokémon's head contain a vicious poison.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Roselia that drinks nutritionally rich springwater blooms with lovely flowers. The fragrance of its flowers has the effect of making its foes careless.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its flowers give off a relaxing fragrance. The stronger its aroma, the healthier the Roselia is.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its flowers give off a relaxing fragrance. The stronger its aroma, the healthier the Roselia is.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Roselia raised on clean drinking water are known to grow vividly colored flowers.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The beautiful flowers on its arms have toxic thorns. Don't even think about picking those flowers.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The more healthy the Roselia, the more pleasant its flowers' aroma. Its scent deeply relaxes people.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Roselia that drink nutritionally rich springwater are said to reveal rare coloration when they bloom.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Roselia that drink nutritionally rich springwater are said to reveal rare coloration when they bloom.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The more healthy the Roselia, the more pleasant its flowers' aroma. Its scent deeply relaxes people.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The more healthy the Roselia, the more pleasant its flowers' aroma. Its scent deeply relaxes people.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It uses the different poisons in each hand separately when it attacks. The stronger its aroma, the healthier it is.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It uses the different poisons in each hand separately when it attacks. The stronger its aroma, the healthier it is.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It uses the different poisons in each hand separately when it attacks. The stronger its aroma, the healthier it is.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Roselia that drink nutritionally rich springwater are said to reveal rare coloration when they bloom.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Roselia shoots sharp thorns as projectiles at any opponent that tries to steal the flowers on its arms. The aroma of this Pokémon brings serenity to living things.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"On extremely rare occasions, a Roselia is said to appear with its flowers in unusual colors. The thorns on this Pokémon's head contain a vicious poison.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its flowers give off a relaxing fragrance. The stronger its aroma, the healthier the Roselia is.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It uses the different poisons in each hand separately when it attacks. The stronger its aroma, the healthier it is.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Roselia raised on clean drinking water are known to grow vividly colored flowers.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The beautiful flowers on its arms have toxic thorns. Don't even think about picking those flowers.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though beautiful, it has highly poisonous thorns. There is an old tradition in my homeland wherein one would send these thorns to an opponent to challenge them to a duel.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses the different poisons in each hand separately when it attacks. The stronger its aroma, the healthier it is.\"\n    }\n  ],\n  \"316\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has a small heart and brain. Its stomach comprises most of its body, with enzymes to dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Virtually all of Gulpin's body is its stomach. As a result, it can swallow something its own size. This Pokémon's stomach contains a special fluid that digests anything.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Most of Gulpin's body is made up of its stomach - its heart and brain are very small in comparison. This Pokémon's stomach contains special enzymes that dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon's stomach fluid can even digest scrap iron. In one gulp, it can swallow something that is as large as itself.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"There is nothing its stomach can't digest. While it is digesting, vile, overpowering gases are expelled.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"There is nothing its stomach can't digest. While it is digesting, vile, overpowering gases are expelled.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Almost all its body is its stomach. Its harsh digestive juices quickly dissolve anything it swallows.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Almost all its body is its stomach. Its harsh digestive juices quickly dissolve anything it swallows.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Almost all its body is its stomach. Its harsh digestive juices quickly dissolve anything it swallows.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has a small heart and brain. Its stomach comprises most of its body, with enzymes to dissolve anything.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has a small heart and brain. Its stomach comprises most of its body, with enzymes to dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Almost all its body is its stomach. Its harsh digestive juices quickly dissolve anything it swallows.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Almost all its body is its stomach. Its harsh digestive juices quickly dissolve anything it swallows.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Almost all its body is its stomach. Its harsh digestive juices quickly dissolve anything it swallows.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Almost all its body is its stomach. Its harsh digestive juices quickly dissolve anything it swallows.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a small heart and brain. Its stomach comprises most of its body, with enzymes to dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"There is nothing its stomach can't digest. While it is digesting, vile, overpowering gases are expelled.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Virtually all of Gulpin's body is its stomach. As a result, it can swallow something its own size. This Pokémon's stomach contains a special fluid that digests anything.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Most of Gulpin's body is made up of its stomach—its heart and brain are very small in comparison. This Pokémon's stomach contains special enzymes that dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Almost all its body is its stomach. Its harsh digestive juices quickly dissolve anything it swallows.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Almost all its body is its stomach. Its harsh digestive juices quickly dissolve anything it swallows.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"There is nothing its stomach can't digest. While it is digesting, vile, overpowering gases are expelled.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has a small heart and brain. Its stomach comprises most of its body, with enzymes to dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its stomach makes up most of its body. Its powerful gastric juices quickly digest anything it swallows.\"\n    }\n  ],\n  \"317\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It can swallow a tire whole in one gulp. It secretes a horribly toxic fluid from the pores on its body.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"When Swalot spots prey, it spurts out a hideously toxic fluid from its pores and sprays the target. Once the prey has weakened, this Pokémon gulps it down whole with its cavernous mouth.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Swalot has no teeth, so what it eats, it swallows whole, no matter what. Its cavernous mouth yawns widely. An automobile tire could easily fit inside this Pokémon's mouth.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its powerful stomach acid is capable of digesting almost anything. The one thing in the whole world a Swalot can't digest is its own stomach.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It can swallow a tire whole in one gulp. It secretes a horribly toxic fluid from the pores on its body.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It can swallow a tire whole in one gulp. It secretes a horribly toxic fluid from the pores on its body.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It gulps anything that fits in its mouth. Its special enzymes can dissolve anything.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It gulps anything that fits in its mouth. Its special enzymes can dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It gulps anything that fits in its mouth. Its special enzymes can dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When Swalot spots prey, it spurts out a hideously toxic fluid from its pores and sprays the target. Once the prey has weakened, this Pokémon gulps it down whole with its cavernous mouth.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Swalot has no teeth, so what it eats, it swallows whole, no matter what. Its cavernous mouth yawns widely. An automobile tire could easily fit inside this Pokémon's mouth.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It swallows anything whole. It sweats toxic fluids from its follicles to douse foes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It gulps anything that fits in its mouth. Its special enzymes can dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can swallow a tire whole in one gulp. It secretes a horribly toxic fluid from the pores on its body.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It swallows anything whole. It douses foes with the highly toxic fluid it secretes from its follicles.\"\n    }\n  ],\n  \"318\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Carvanha's strongly developed jaws and its sharply pointed fangs pack the destructive power to rip out boat hulls. Many boats have been attacked and sunk by this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If anything invades Carvanha's territory, it will swarm and tear at the intruder with its pointed fangs. On its own, however, this Pokémon turns suddenly timid.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Carvanha attack ships in swarms, making them sink. Although it is said to be a very vicious Pokémon, it timidly flees as soon as it finds itself alone.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives in massive rivers that course through jungles. It swarms prey that enter its territory.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It lives in massive rivers that course through jungles. It swarms prey that enter its territory.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"They swarm any foe that invades their territory. Their sharp fangs can tear out boat hulls.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"They swarm any foe that invades their territory. Their sharp fangs can tear out boat hulls.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"They swarm any foe that invades their territory. Their sharp fangs can tear out boat hulls.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They form packs to attack boats and rip out their hulls to sink them. They live in rivers in the jungle.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"They form packs to attack boats and rip out their hulls to sink them. They live in rivers in the jungle.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They swarm any foe that invades their territory. Their sharp fangs can tear out boat hulls.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They swarm any foe that invades their territory. Their sharp fangs can tear out boat hulls.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They swarm any foe that invades their territory. Their sharp fangs can tear out boat hulls.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They swarm any foe that invades their territory. Their sharp fangs can tear out boat hulls.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They form packs to attack boats and rip out their hulls to sink them. They live in rivers in the jungle.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives in massive rivers that course through jungles. It swarms prey that enter its territory.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Carvanha's strongly developed jaws and its sharply pointed fangs pack the destructive power to rip out boat hulls. Many boats have been attacked and sunk by this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If anything invades Carvanha's territory, it will swarm and tear at the intruder with its pointed fangs. On its own, however, this Pokémon turns suddenly timid.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Each school has its own territory. Any intruders are mercilessly attacked with fangs bared.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"If they scent the faintest trace of blood, they rush to attack en masse. When alone, they're rather cowardly.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They're such cowards that they won't hunt alone. When five or so of them get together, they suddenly turn ferocious!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"With its sturdy jaws and fangs, it can easily chomp wooden boats to splinters. It fights with Basculin over food.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It won't attack while it's alone—not even if it spots prey. Instead, it waits for other Carvanha to join it, and then the Pokémon attack as a group.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Pokémon have sharp fangs and powerful jaws. Sailors avoid Carvanha dens at all costs.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They swarm any foe that invades their territory. Their sharp fangs can tear out boat hulls.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They swarm any foe that invades their territory. Their sharp fangs can tear out boat hulls.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They live in massive rivers that course through jungles. Swarms of these Pokémon attack any prey that wanders into their territory.\"\n    }\n  ],\n  \"319\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Nicknamed \\\"the bully of the sea,\\\" Sharpedo is widely feared. Its cruel fangs grow back immediately if they snap off. Just one of these Pokémon can thoroughly tear apart a supertanker.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sharpedo can swim at speeds of up to 75 mph by jetting seawater out of its backside. This Pokémon's drawback is its inability to swim long distances.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The vicious and sly gangster of the sea. Its skin is specially textured to minimize drag in water. Its speed tops out at over 75 miles per hour.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"The ruffian of the seas, it has fangs that crunch through iron. It swims by jetting water from its rear.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"The ruffian of the seas, it has fangs that crunch through iron. It swims by jetting water from its rear.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as \\\"The Bully of the Sea.\\\"\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as \\\"The Bully of the Sea.\\\"\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as \\\"The Bully of the Sea.\\\"\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can swim at speeds of 75 mph by jetting seawater through its body. It is the bandit of the sea.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It can swim at speeds of 75 mph by jetting seawater through its body. It is the bandit of the sea.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as \\\"The Bully of the Sea.\\\"\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as \\\"The Bully of the Sea.\\\"\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as \\\"The Bully of the Sea.\\\"\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as \\\"The Bully of the Sea.\\\"\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as \\\"The Bully of the Sea.\\\"\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can swim at speeds of 75 mph by jetting seawater through its body. It is the bandit of the sea.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Nicknamed \\\"the bully of the sea,\\\" Sharpedo is widely feared. Its cruel fangs grow back immediately if they snap off. Just one of these Pokémon can thoroughly tear apart a supertanker.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sharpedo can swim at speeds of up to 75 mph by jetting seawater out of its backside. This Pokémon's drawback is its inability to swim long distances.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It pursues its prey at speeds of 75 mph and finishes them off with fangs that can crush iron. It is known as the bully of the sea.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It has a sad history. In the past, its dorsal fin was a treasured foodstuff, so this Pokémon became a victim of overfishing.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"People believe that carrying one of its discarded fangs will prevent mishaps at sea, so the fangs are made into accessories.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It drinks in seawater and jets it from its rear to propel itself. It's very sensitive to the scent of blood.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As soon as it catches the scent of its prey, Sharpedo will jet seawater from its backside, hurtling toward the target to attack at 75 mph.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is known as the Bully of the Sea. Any ship entering the waters Sharpedo calls home will be attacked—no exceptions.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as the Bully of the Sea.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its fangs rip through sheet iron. It swims at 75 mph and is known as the Bully of the Sea.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can swim at speeds of 75 mph by jetting seawater through its body. It is the bandit of the sea.\"\n    }\n  ],\n  \"320\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Wailmer's nostrils are located above its eyes. This playful Pokémon loves to startle people by forcefully snorting out seawater it stores inside its body out of its nostrils.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Wailmer can store water inside its body to transform itself into a ball for bouncing around on the ground. By filling itself up with more water, this Pokémon can elevate the height of its bounces.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"While this Pokémon usually lives in the sea, it can survive on land, although not too long. It loses vitality if its body becomes dried out.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"When it sucks in a large volume of seawater, it becomes like a big, bouncy ball. It eats a ton of food daily.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When it sucks in a large volume of seawater, it becomes like a big, bouncy ball. It eats a ton of food daily.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"On sunny days, it lands on beaches to bounce like a ball and play. It spouts water from its nose.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"On sunny days, it lands on beaches to bounce like a ball and play. It spouts water from its nose.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"On sunny days, it lands on beaches to bounce like a ball and play. It spouts water from its nose.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It bounces playfully like a ball. The more seawater it swallows, the higher it bounces.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It bounces playfully like a ball. The more seawater it swallows, the higher it bounces.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"On sunny days, it lands on beaches to bounce like a ball and play. It spouts water from its nose.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"On sunny days, it lands on beaches to bounce like a ball and play. It spouts water from its nose.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It eats one ton of food every day. It plays by shooting stored seawater out its blowholes with great force.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It eats one ton of food every day. It plays by shooting stored seawater out its blowholes with great force.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It bounces playfully like a ball. The more seawater it swallows, the higher it bounces.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It eats one ton of food every day. It plays by shooting stored seawater out its blowholes with great force.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Wailmer's nostrils are located above its eyes. This playful Pokémon loves to startle people by forcefully snorting out seawater it stores inside its body out of its nostrils.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Wailmer can store water inside its body to transform itself into a ball for bouncing around on the ground. By filling itself up with more water, this Pokémon can elevate the height of its bounces.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It loves to startle people. It fills itself up with seawater and plays by bouncing around like a ball.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It shows off by spraying jets of seawater from the nostrils above its eyes. It eats a solid ton of Wishiwashi every day.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It swims along with its mouth open and swallows down seawater along with its food. It sprays excess water out of its nostrils.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Due to their memories of when they once lived on land, pods of them will, very rarely, wash up on shore.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It shows off by spraying jets of seawater from the nostrils above its eyes. It eats a solid ton of Wishiwashi every day.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it sucks in a large volume of seawater, it becomes like a big, bouncy ball. It eats a ton of food daily.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"On sunny days, it lands on beaches to bounce like a ball and play. It spouts water from its nostrils.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"On sunny days, it lands on beaches to bounce like a ball and play. It spouts water from its nostrils.\"\n    }\n  ],\n  \"321\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Wailord is the largest of all identified Pokémon up to now. This giant Pokémon swims languorously in the vast open sea, eating massive amounts of food at once with its enormous mouth.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When chasing prey, Wailord herds them by leaping out of the water and making a humongous splash. It is breathtaking to see this Pokémon leaping out of the sea with others in its pod.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It breathes through nostrils that it raises above the sea. By inhaling to its maximum capacity, a Wailord can dive close to 10,000 feet beneath the waves.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is among the largest of all Pokémon. It herds prey in a pack then swallows the massed prey in one gulp.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is among the largest of all Pokémon. It herds prey in a pack then swallows the massed prey in one gulp.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The biggest of all Pokémon. It can dive to a depth of almost 10,000 feet on only one breath.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The biggest of all Pokémon. It can dive to a depth of almost 10,000 feet on only one breath.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The biggest of all Pokémon. It can dive to a depth of almost 10,000 feet on only one breath.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is the largest of all identified Pokémon. They jump as a pack to herd their prey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is the largest of all identified Pokémon. They jump as a pack to herd their prey.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The biggest of all Pokémon. It can dive to a depth of almost 10,000 feet on only one breath.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The biggest of all Pokémon. It can dive to a depth of almost 10,000 feet on only one breath.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It can sometimes knock out opponents with the shock created by breaching and crashing its big body onto the water.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It can sometimes knock out opponents with the shock created by breaching and crashing its big body onto the water.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can sometimes knock out opponents with the shock created by breaching and crashing its big body onto the water.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The biggest of all Pokémon. It can dive to a depth of almost 10,000 feet on only one breath.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Wailord is the largest of all identified Pokémon up to now. This giant Pokémon swims languorously in the vast open sea, eating massive amounts of food at once with its enormous mouth.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When chasing prey, Wailord herds them by leaping out of the water and making a humongous splash. It is breathtaking to see this Pokémon leaping out of the sea with others in its pod.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Wailord pursue their prey in pods. With their large mouths, they can swallow entire schools of Wishiwashi whole.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its immense size is the reason for its popularity. Wailord watching is a favorite sightseeing activity in various parts of the world.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They eat so many fish Pokémon that when Wailord become too numerous, fishermen have to chase them off.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When a small Wailmer is attacked by Sharpedo or Dhelmise, its whole pod works together to protect it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It can sometimes knock out opponents with the shock created by breaching and crashing its big body onto the water.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its immense size is the reason for its popularity. Wailord watching is a favorite sightseeing activity in various parts of the world.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It's the biggest of all Pokémon. It can dive to a depth of almost 10,000 feet on only one breath.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It's the biggest of all Pokémon. It can dive to a depth of almost 10,000 feet on only one breath.\"\n    }\n  ],\n  \"322\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Numel is extremely dull witted - it doesn't notice being hit. However, it can't stand hunger for even a second. This Pokémon's body is a seething cauldron of boiling magma.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Numel stores magma of almost 2,200 degrees F within its body. If it gets wet, the magma cools and hardens. In that event, the Pokémon's body grows heavy and its movements become sluggish.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Numel stores boiling magma in the hump on its back. It is a hardy Pokémon that can transport a 220-pound load. It has served humans at work since long ago.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Magma of almost 2,200 degrees Fahrenheit courses through its body. When it grows cold, the magma hardens and slows it.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Magma of almost 2,200 degrees Fahrenheit courses through its body. When it grows cold, the magma hardens and slows it.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its humped back stores intensely hot magma. In rain, the magma cools, slowing its movement.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its humped back stores intensely hot magma. In rain, the magma cools, slowing its movement.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its humped back stores intensely hot magma. In rain, the magma cools, slowing its movement.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The flaming magma it stores in the hump on its back is the source of its tremendous power.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The flaming magma it stores in the hump on its back is the source of its tremendous power.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its humped back stores intensely hot magma. In rain, the magma cools, slowing its movement.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its humped back stores intensely hot magma. In rain, the magma cools, slowing its movement.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The magma in its body reaches 2,200 degrees F. Its hump gets smaller when it uses Fire-type moves.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The magma in its body reaches 2,200 degrees F. Its hump gets smaller when it uses Fire-type moves.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its humped back stores intensely hot magma. In rain, the magma cools, slowing its movement.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The magma in its body reaches 2,200 degrees Fahrenheit. Its hump gets smaller when it uses Fire-type moves.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Numel is extremely dull witted—it doesn't notice being hit. However, it can't stand hunger for even a second. This Pokémon's body is a seething cauldron of boiling magma.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Numel stores magma of almost 2,200 degrees Fahrenheit within its body. If it gets wet, the magma cools and hardens. In that event, the Pokémon's body grows heavy and its movements become sluggish.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its humped back stores intensely hot magma. In rain, the magma cools, slowing Numel down.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its humped back stores intensely hot magma. In rain, the magma cools, slowing Numel down.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Magma of almost 2,200 degrees Fahrenheit courses through its body. When it grows cold, the magma hardens and slows it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The flaming magma it stores in the hump on its back is the source of its tremendous power.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The magma in its body reaches 2,200 degrees Fahrenheit. Its hump gets smaller when it uses Fire-type moves.\"\n    }\n  ],\n  \"323\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Camerupt has a volcano inside its body. Magma of 18,000 degrees F courses through its body. Occasionally, the humps on this Pokémon's back erupt, spewing the superheated magma.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The humps on Camerupt's back are formed by a transformation of its bones. They sometimes blast out molten magma. This Pokémon apparently erupts often when it is enraged.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that lives in the crater of a volcano. Every 10 years, the volcanoes on its back erupt violently. Research is under way on the cause of eruption.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If angered, the humps on its back erupt in a shower of molten lava. It lives in the craters of volcanoes.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If angered, the humps on its back erupt in a shower of molten lava. It lives in the craters of volcanoes.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has volcanoes on its back. If magma builds up in its body, it shudders, then erupts violently.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has volcanoes on its back. If magma builds up in its body, it shudders, then erupts violently.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has volcanoes on its back. If magma builds up in its body, it shudders, then erupts violently.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives in the crater of a volcano. It is well known that the humps on its back erupt every 10 years.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives in the crater of a volcano. It is well known that the humps on its back erupt every 10 years.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has volcanoes on its back. If magma builds up in its body, it shudders, then erupts violently.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has volcanoes on its back. If magma builds up in its body, it shudders, then erupts violently.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The volcanoes on its back have a major eruption every 10 years--or whenever it becomes really angry.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The volcanoes on its back have a major eruption every 10 years--or whenever it becomes really angry.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The volcanoes on its back have a major eruption every 10 years--or whenever it becomes really angry.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If angered, the humps on its back erupt in a shower of molten lava. It lives in the craters of volcanoes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Camerupt has a volcano inside its body. Magma of 18,000 degrees Fahrenheit courses through its body. Occasionally, the humps on this Pokémon's back erupt, spewing the superheated magma.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The humps on Camerupt's back are formed by a transformation of its bones. They sometimes blast out molten magma. This Pokémon apparently erupts often when it is enraged.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has volcanoes on its back. If magma builds up in its body, it shudders, then erupts violently.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has volcanoes on its back. If magma builds up in its body, it shudders, then erupts violently.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives in the crater of a volcano. It is well known that the humps on its back erupt every 10 years.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If angered, the humps on its back erupt in a shower of molten lava. It lives in the craters of volcanoes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The volcanoes on its back have a major eruption every 10 years—or whenever it becomes really angry.\"\n    }\n  ],\n  \"324\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Coal is the source of Torkoal's energy. Large amounts of coal can be found in the mountains where they live.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Torkoal digs through mountains in search of coal. If it finds some, it fills hollow spaces on its shell with the coal and burns it. If it is attacked, this Pokémon spouts thick black smoke to beat a retreat.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Torkoal generates energy by burning coal. It grows weaker as the fire dies down. When it is preparing for battle, this Pokémon burns more coal.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It battles using energy it gets from burning coal. When loosing smoke from its nostrils, it lets off a sound that is similar to a locomotive's horn.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It burns coal inside its shell. If it is attacked, it belches thick, black smoke and flees.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It burns coal inside its shell. If it is attacked, it belches thick, black smoke and flees.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"You find abandoned coal mines full of them. They dig tirelessly in search of coal.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"You find abandoned coal mines full of them. They dig tirelessly in search of coal.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"You find abandoned coal mines full of them. They dig tirelessly in search of coal.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Torkoal digs through mountains in search of coal. If it finds some, it fills hollow spaces on its shell with the coal and burns it. If it is attacked, this Pokémon spouts thick black smoke to beat a retreat.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Torkoal generates energy by burning coal. It grows weaker as the fire dies down. When it is preparing for battle, this Pokémon burns more coal.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Coal is the source of Torkoal's energy. Large amounts of coal can be found in the mountains where they live.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"If the fire burning within its shell goes out, it will die. Those who wish to raise one in their home must always keep something flammable at hand.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"You can tell how it's feeling by the smoke spouting from its shell. Tremendous velocity is a sign of good health.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It burns coal to produce energy. When it has burned through all of its coal, it becomes unable to move.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"You find abandoned coal mines full of them. They dig tirelessly in search of coal.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is in a tough situation.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is in a tough situation.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It burns coal inside its shell for energy. It blows out black soot if it is endangered.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Coal is the source of Torkoal's energy. Large amounts of coal can be found in the mountains where they live.\"\n    }\n  ],\n  \"325\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Spoink bounces around on its tail. The shock of its bouncing makes its heart pump. As a result, this Pokémon cannot afford to stop bouncing - if it stops, its heart will stop.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Spoink keeps a pearl on top of its head. The pearl functions to amplify this Pokémon's psychokinetic powers. It is therefore on a constant search for a bigger pearl.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that manipulates psychic power at will. It doesn't stop bouncing even when it is asleep. It loves eating mushrooms that grow underground.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It apparently dies if it stops bouncing about. It carries a pearl from Clamperl on its head.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It apparently dies if it stops bouncing about. It carries a pearl from Clamperl on its head.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It bounces constantly, using its tail like a spring. The shock of bouncing keeps its heart beating.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It bounces constantly, using its tail like a spring. The shock of bouncing keeps its heart beating.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It bounces constantly, using its tail like a spring. The shock of bouncing keeps its heart beating.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It bounces around on its tail to keep its heart pumping. It carries a pearl from Clamperl on its head.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It bounces around on its tail to keep its heart pumping. It carries a pearl from Clamperl on its head.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It bounces constantly, using its tail like a spring. The shock of bouncing keeps its heart beating.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It bounces constantly, using its tail like a spring. The shock of bouncing keeps its heart beating.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Using its tail like a spring, it keeps its heart beating by bouncing constantly. If it stops, it dies.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Using its tail like a spring, it keeps its heart beating by bouncing constantly. If it stops, it dies.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It bounces constantly, using its tail like a spring. The shock of bouncing keeps its heart beating.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It bounces around on its tail to keep its heart pumping. It carries a pearl from Clamperl on its head.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Spoink bounces around on its tail. The shock of its bouncing makes its heart pump. As a result, this Pokémon cannot afford to stop bouncing—if it stops, its heart will stop.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Spoink keeps a pearl on top of its head. The pearl functions to amplify this Pokémon's psychokinetic powers. It is therefore on a constant search for a bigger pearl.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It bounces constantly, using its tail like a spring. The shock of bouncing keeps its heart beating.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It bounces constantly, using its tail like a spring. The shock of bouncing keeps its heart beating.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Spoink will die if it stops bouncing. The pearl on its head amplifies its psychic powers.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Using its tail like a spring, it keeps its heart beating by bouncing constantly. If it stops, it dies.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It bounces constantly, using its tail like a spring. The vibrations from this bouncing make its heart beat.\"\n    }\n  ],\n  \"326\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Grumpig uses the black pearls on its body to amplify its psychic power waves for gaining total control over its foe. When this Pokémon uses its special power, its snorting breath grows labored.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Grumpig uses the black pearls on its body to wield its fantastic powers. When it is doing so, it dances bizarrely. This Pokémon's black pearls are valuable as works of art.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It stores power in the black pearls on its forehead. When it uses psychic power, it performs an odd dance step. Its style of dancing became hugely popular overseas.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It can gain control over foes by doing odd dance steps. The black pearls on its forehead are precious gems.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It can gain control over foes by doing odd dance steps. The black pearls on its forehead are precious gems.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It uses black pearls to amplify its psycho-power. It does an odd dance to gain control over foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It uses black pearls to amplify its psycho-power. It does an odd dance to gain control over foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It uses black pearls to amplify its psycho-power. It does an odd dance to gain control over foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can perform odd dance steps to influence foes. Its style of dancing became hugely popular overseas.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It can perform odd dance steps to influence foes. Its style of dancing became hugely popular overseas.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It uses black pearls to amplify its psycho-power. It does an odd dance to gain control over foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It uses black pearls to amplify its psycho-power. It does an odd dance to gain control over foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It uses black pearls to amplify its psychic power. It does a strange dance to control foes' minds.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It uses black pearls to amplify its psychic power. It does a strange dance to control foes' minds.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It uses black pearls to amplify its psychic power. It does a strange dance to control foes' minds.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It uses black pearls to amplify its psychic power. It does an odd dance to gain control over foes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Grumpig uses the black pearls on its body to amplify its psychic power waves for gaining total control over its foe. When this Pokémon uses its special power, its snorting breath grows labored.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Grumpig uses the black pearls on its body to wield its fantastic powers. When it is doing so, it dances bizarrely. This Pokémon's black pearls are valuable as works of art.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It uses black pearls to amplify its psychic power. It does an odd dance to gain control over foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It uses black pearls to amplify its psychic power. It does an odd dance to gain control over foes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It can perform odd dance steps to influence foes. Its style of dancing became hugely popular overseas.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It uses black pearls to amplify its psychic power. It does a strange dance to control foes' minds.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon uses its black pearls to amplify its psychic power. It can control the minds of its foes through its mysterious dancing.\"\n    }\n  ],\n  \"327\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"All the Spinda that exist in the world are said to have utterly unique spot patterns. The shaky, tottering steps of this Pokémon give it the appearance of dancing.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"No two Spinda are said to have identical spot patterns on their hides. This Pokémon moves in a curious manner as if it is stumbling in dizziness. Its lurching movements can cause the opponent to become confused.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is distinguished by a pattern of spots that is always different. Its unsteady, tottering walk has the effect of fouling its foe's aim.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"No two Spinda are said to have identical patterns. It confuses foes with its stumbling motions.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"No two Spinda are said to have identical patterns. It confuses foes with its stumbling motions.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"No two SPINDA have the same pattern of spots. Its tottering step fouls the aim of foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"No two SPINDA have the same pattern of spots. Its tottering step fouls the aim of foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"No two SPINDA have the same pattern of spots. Its tottering step fouls the aim of foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The chances of two Spinda having identical spot patterns is less than one in four billion.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The chances of two Spinda having identical spot patterns is less than one in four billion.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"No two Spinda have the same pattern of spots. Its tottering step fouls the aim of foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"No two Spinda have the same pattern of spots. Its tottering step fouls the aim of foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"No two Spinda have the same pattern of spots. Its tottering step fouls the aim of foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"No two Spinda have the same pattern of spots. Its tottering step fouls the aim of foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"No two Spinda have the same pattern of spots. Its tottering step fouls the aim of foes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The chances of two Spinda having identical spot patterns is less than one in four billion.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"All the Spinda that exist in the world are said to have utterly unique spot patterns. The shaky, tottering steps of this Pokémon give it the appearance of dancing.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"No two Spinda are said to have identical spot patterns on their hides. This Pokémon moves in a curious manner as if it is stumbling in dizziness. Its lurching movements can cause the opponent to become confused.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its steps are staggering and unsteady, but Spinda thinks it's walking in a straight line.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Each and every Spinda has a slightly different configuration of spots. There are collectors who enjoy the tiny differences in their spot patterns.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its steps are shaky and stumbling. Walking for a long time makes it feel sick.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Each Spinda's spot pattern is different. With its stumbling movements, it evades opponents' attacks brilliantly!\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"No two Spinda have the same pattern of spots. Their tottering steps hinder the aim of foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"No two Spinda have the same pattern of spots. Their tottering steps hinder the aim of foes.\"\n    }\n  ],\n  \"328\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This Pokémon lives in arid deserts. It patiently awaits prey inside its funnel-shaped nest.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Trapinch's nest is a sloped, bowl-like pit dug in sand. This Pokémon patiently waits for prey to tumble down the pit. Its giant jaws have enough strength to crush even boulders.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Trapinch is a patient hunter. It digs an inescapable pit in a desert and waits for its prey to come tumbling down. This Pokémon can go a whole week without access to any water.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its big jaws crunch through boulders. Because its head is so big, it has a hard time getting back upright if it tips over onto its back.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives in arid deserts. It makes a sloping pit trap in sand where it patiently awaits prey.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It lives in arid deserts. It makes a sloping pit trap in sand where it patiently awaits prey.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It makes a conical pit in desert sand and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It makes a conical pit in desert sand and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It makes a conical pit in desert sand and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its nest is a sloped, bowl-like pit in the desert. Once something has fallen in, there is no escape.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its nest is a sloped, bowl-like pit in the desert. Once something has fallen in, there is no escape.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It makes a conical pit in desert sand and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It makes a conical pit in desert sand and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It makes an inescapable conical pit and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It makes an inescapable conical pit and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives in arid deserts. It makes a sloping pit trap in sand where it patiently awaits prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It makes an inescapable conical pit and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Trapinch's nest is a sloped, bowl-like pit dug in sand. This Pokémon patiently waits for prey to tumble down the pit. Its giant jaws have enough strength to crush even boulders.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Trapinch is a patient hunter. It digs an inescapable pit in a desert and waits for its prey to come tumbling down. This Pokémon can go a whole week without access to any water.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It can live for a week without eating a thing. It waits patiently at the bottom of its nest for prey to appear.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As it digs through the sand, its giant jaws crush any rocks that obstruct its path. It builds a funnel-shaped nest.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its jaws are strong enough to crush rocks but so heavy that it can't get up if it flips over. Sandile seize those moments as their chance.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It builds nests that double as traps, lying in wait for its prey to get caught. When night falls, it digs itself a spot beneath the sand to sleep.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its nest is a sloped, bowl-like pit in the desert. Once something has fallen in, there is no escape.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It makes an inescapable conical pit and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It makes a conical pit in desert sand and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It makes a conical pit in desert sand and lies in wait at the bottom for prey to come tumbling down.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon lives in arid deserts. It patiently awaits prey inside its funnel-shaped nest.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"As it digs through the sand, its giant jaws crush any rocks that obstruct its path. It builds a funnel-shaped nest.\"\n    }\n  ],\n  \"329\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Rather than using its underdeveloped wings for flight, it rubs them together, emitting ultrasonic waves to attack its enemies.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"To make prey faint, Vibrava generates ultrasonic waves by vigorously making its two wings vibrate. This Pokémon's ultrasonic waves are so powerful, they can bring on headaches in people.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Vibrava's wings have not yet completed the process of growing. Rather than flying long distances, they are more useful for generating ultrasonic waves by vibrating.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It looses ultrasonic waves by rubbing its wings together. Since a Vibrava's wings are still in the process of growing, it can only fly short distances.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It generates ultrasonic waves by violently flapping its wings. After making its prey faint, it melts the prey with acid.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It generates ultrasonic waves by violently flapping its wings. After making its prey faint, it melts the prey with acid.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It violently shudders its wings, generating ultrasonic waves to induce headaches in people.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It violently shudders its wings, generating ultrasonic waves to induce headaches in people.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It violently shudders its wings, generating ultrasonic waves to induce headaches in people.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It vibrates its wings vigorously, creating ultrasonic waves that cause serious headaches.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It vibrates its wings vigorously, creating ultrasonic waves that cause serious headaches.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It violently shudders its wings, generating ultrasonic waves to induce headaches in people.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It violently shudders its wings, generating ultrasonic waves to induce headaches in people.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The ultrasonic waves it generates by rubbing its two wings together cause severe headaches.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The ultrasonic waves it generates by rubbing its two wings together cause severe headaches.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The ultrasonic waves it generates by rubbing its two wings together cause severe headaches.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It generates ultrasonic waves by violently flapping its wings. After making its prey faint, it melts the prey with acid.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"To make prey faint, Vibrava generates ultrasonic waves by vigorously making its two wings vibrate. This Pokémon's ultrasonic waves are so powerful, they can bring on headaches in people.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Vibrava's wings have not yet completed the process of growing. Rather than flying long distances, they are more useful for generating ultrasonic waves by vibrating.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Rather than using its underdeveloped wings for flight, it rubs them together, producing ultrasonic waves to attack its enemies.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"To help make its wings grow, it dissolves quantities of prey in its digestive juices and guzzles them down every day.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It vibrates its wings to generate ultrasonic waves, causing its prey to faint. Then it buries the prey alive in the sand to preserve it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It vibrates its wings to send out odd sound waves. Trainers who are with it need earplugs.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The ultrasonic waves it generates by rubbing its two wings together cause severe headaches.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"To help make its wings grow, it dissolves quantities of prey in its digestive juices and guzzles them down every day.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It violently shudders its wings, generating ultrasonic waves to induce headaches in people.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It violently shudders its wings, generating ultrasonic waves to induce headaches in people.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Rather than using its underdeveloped wings for flight, it rubs them together, emitting ultrasonic waves to attack its enemies.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It generates ultrasonic waves by vigorously vibrating its wings. After making its prey faint, it dissolves the prey with its digestive juices.\"\n    }\n  ],\n  \"330\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Known as the Desert Spirit, this Pokémon hides in the sandstorms it causes by beating its wings.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Flygon is nicknamed \\\"the elemental spirit of the desert.\\\" Because its flapping wings whip up a cloud of sand, this Pokémon is always enveloped in a sandstorm while flying.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Flygon whips up a sandstorm by flapping its wings. The wings create a series of notes that sound like singing. Because the \\\"singing\\\" is the only thing that can be heard in a sandstorm, this Pokémon is said to be the desert spirit.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The flapping of its wings sounds like singing. To prevent detection by enemies, it hides itself by flapping up a cloud of desert sand.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It hides itself by kicking up desert sand with its wings. Red covers shield its eyes from sand.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It hides itself by kicking up desert sand with its wings. Red covers shield its eyes from sand.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It whips up sandstorms with powerful flaps of its wings. It is known as \\\"The Desert Spirit.\\\"\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It whips up sandstorms with powerful flaps of its wings. It is known as \\\"The Desert Spirit.\\\"\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It whips up sandstorms with powerful flaps of its wings. It is known as \\\"The Desert Spirit.\\\"\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is nicknamed \\\"The Desert Spirit\\\" because the flapping of its wings sounds like a woman singing.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is nicknamed \\\"The Desert Spirit\\\" because the flapping of its wings sounds like a woman singing.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It whips up sandstorms with powerful flaps of its wings. It is known as \\\"The Desert Spirit.\\\"\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It whips up sandstorms with powerful flaps of its wings. It is known as \\\"The Desert Spirit.\\\"\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Known as \\\"The Desert Spirit,\\\" this Pokémon hides in the sandstorms it causes by beating its wings.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Known as \\\"The Desert Spirit,\\\" this Pokémon hides in the sandstorms it causes by beating its wings.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It hides itself by kicking up desert sand with its wings. Red covers shield its eyes from sand.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Known as \\\"The Desert Spirit,\\\" this Pokémon hides in the sandstorms it causes by beating its wings.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Flygon is nicknamed \\\"the elemental spirit of the desert.\\\" Because its flapping wings whip up a cloud of sand, this Pokémon is always enveloped in a sandstorm while flying.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Flygon whips up a sandstorm by flapping its wings. The wings create a series of notes that sound like singing. Because the \\\"singing\\\" is the only thing that can be heard in a sandstorm, this Pokémon is said to be the desert spirit.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The flapping of its wings sounds something like singing. Those lured by the sound are enveloped in a sandstorm, becoming Flygon's prey.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon hides in the heart of sandstorms it creates and seldom appears where people can see it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"By flapping their wings, Flygon cause sandstorms that conceal Krookodile. The team then splits the prey they catch.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"People continue to have their hearts stolen by its enchanting songs and find themselves stranded in the desert.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon hides in the heart of sandstorms it creates and seldom appears where people can see it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It is nicknamed the Desert Spirit because the flapping of its wings sounds like a woman singing.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It whips up sandstorms with powerful flaps of its wings. It is known as the Desert Spirit.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It whips up sandstorms with powerful flaps of its wings. It is known as the Desert Spirit.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Known as the Desert Spirit, this Pokémon hides in the sandstorms it causes by beating its wings.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The sound of its wings flapping resembles singing. Those entranced by this sound get lured into a sandstorm and become Flygon's prey.\"\n    }\n  ],\n  \"331\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It lives in arid locations. Its yellow flowers bloom once a year.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Cacnea lives in arid locations such as deserts. It releases a strong aroma from its flower to attract prey. When prey comes near, this Pokémon shoots sharp thorns from its body to bring the victim down.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"The more arid and harsh the environment, the more pretty and fragrant a flower Cacnea grows. This Pokémon battles by wildly swinging its thorny arms.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Cacnea live in deserts with virtually no rainfall. It battles by swinging its thick, spiked arms. Once a year, a yellow flower blooms.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It prefers harsh environments such as deserts. It can survive for 30 days on water stored in its body.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It prefers harsh environments such as deserts. It can survive for 30 days on water stored in its body.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"By storing water in its body, this desert dweller can survive for 30 days without water.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"By storing water in its body, this desert dweller can survive for 30 days without water.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"By storing water in its body, this desert dweller can survive for 30 days without water.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives in arid locations. Its yellow flowers bloom once a year.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives in arid locations. Its yellow flowers bloom once a year.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"By storing water in its body, this desert dweller can survive for 30 days without water.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"By storing water in its body, this desert dweller can survive for 30 days without water.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By storing water in its body, this desert dweller can survive for 30 days without water.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By storing water in its body, this desert dweller can survive for 30 days without water.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives in arid locations. Its yellow flowers bloom once a year.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It prefers harsh environments such as deserts. It can survive for 30 days on water stored in its body.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Cacnea lives in arid locations such as deserts. It releases a strong aroma from its flower to attract prey. When prey comes near, this Pokémon shoots sharp thorns from its body to bring the victim down.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The more arid and harsh the environment, the more pretty and fragrant a flower Cacnea grows. This Pokémon battles by wildly swinging its thorny arms.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"By storing water in its body, this desert dweller can survive for 30 days without water.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"By storing water in its body, this desert dweller can survive for 30 days without water.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It prefers harsh environments, such as deserts. It can survive for 30 days on water stored in its body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It lives in arid locations. Its yellow flowers bloom once a year.\"\n    }\n  ],\n  \"332\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"During the daytime, Cacturne remains unmoving so that it does not lose any moisture to the harsh desert sun. This Pokémon becomes active at night when the temperature drops.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If a traveler is going through a desert in the thick of night, Cacturne will follow in a ragtag group. The Pokémon are biding their time, waiting for the traveler to tire and become incapable of moving.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"After spending thousands of years in harsh deserts, its blood transformed into the same substances as sand. It is nocturnal, so it hunts at night.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives in deserts. It becomes active at night when it hunts for prey exhausted from the desert's heat.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It lives in deserts. It becomes active at night when it hunts for prey exhausted from the desert's heat.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Packs of them follow travelers through the desert until the travelers can no longer move.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Packs of them follow travelers through the desert until the travelers can no longer move.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Packs of them follow travelers through the desert until the travelers can no longer move.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"During the daytime, Cacturne remains unmoving so that it does not lose any moisture to the harsh desert sun. This Pokémon becomes active at night when the temperature drops.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If a traveler is going through a desert in the thick of night, Cacturne will follow in a ragtag group. The Pokémon are biding their time, waiting for the traveler to tire and become incapable of moving.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It becomes active at night, seeking prey that is exhausted from the day's desert heat.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Packs of them follow travelers through the desert until the travelers can no longer move.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It lives in deserts. It becomes active at night when it hunts for prey exhausted from the desert's heat.\"\n    }\n  ],\n  \"333\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It can't relax if it or its surroundings are not clean. It wipes off dirt with its wings.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Swablu has light and fluffy wings that are like cottony clouds. This Pokémon is not frightened of people. It lands on the heads of people and sits there like a cotton-fluff hat.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Swablu loves to make things clean. If it spots something dirty, it will wipe and polish it with its cottony wings. If its wings become dirty, this Pokémon finds a stream and showers itself.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that has wings like cottony clouds. After enduring winter, in which little food is available, Swablu flocks move closer to towns in the spring.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It constantly grooms its cotton-like wings. It takes a shower to clean itself if it becomes dirty.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It constantly grooms its cotton-like wings. It takes a shower to clean itself if it becomes dirty.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its wings are like cotton tufts. If it perches on someone's head, it looks like a cotton hat.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its wings are like cotton tufts. If it perches on someone's head, it looks like a cotton hat.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can't relax if it or its surroundings are not clean. It wipes off dirt with its wings.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its wings bring cottony clouds to mind. It grooms with springwater and loves to sit on heads.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its wings bring cottony clouds to mind. It grooms with springwater and loves to sit on heads.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can't relax if it or its surroundings are not clean. It wipes off dirt with its wings.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can't relax if it or its surroundings are not clean. It wipes off dirt with its wings.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"For some reason, it likes to land on people's heads softly and act like it's a hat.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"For some reason, it likes to land on people's heads softly and act like it's a hat.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"For some reason, it likes to land on people's heads softly and act like it's a hat.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It constantly grooms its cotton-like wings. It takes a shower to clean itself if it becomes dirty.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Swablu has light and fluffy wings that are like cottony clouds. This Pokémon is not frightened of people. It lands on the heads of people and sits there like a cotton-fluff hat.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Swablu loves to make things clean. If it spots something dirty, it will wipe and polish it with its cottony wings. If its wings become dirty, this Pokémon finds a stream and showers itself.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its cottony wings are full of air, making them light and fluffy to the touch. Swablu takes diligent care of its wings.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Since Swablu looks like a cumulus cloud, foes can have a hard time finding it. Apparently its wings turned white over many generations.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its wings are like cotton tufts. If it perches on someone's head, it looks like a cotton hat.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its wings are like cotton tufts. If it perches on someone's head, it looks like a cotton hat.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It constantly grooms its cotton-like wings. It takes a shower to clean itself if it becomes dirty.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can't relax if it or its surroundings are not clean. It wipes off dirt with its wings.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"For some reason, it likes to land on people's heads softly and act like it's a hat.\"\n    }\n  ],\n  \"334\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"On sunny days, it flies freely through the sky and blends into the clouds. It sings in a beautiful soprano.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Altaria dances and wheels through the sky among billowing, cotton-like clouds. By singing melodies in its crystal-clear voice, this Pokémon makes its listeners experience dreamy wonderment.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Altaria sings in a gorgeous soprano. Its wings are like cotton clouds. This Pokémon catches updrafts with its buoyant wings and soars way up into the wild blue yonder.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It hums in a beautiful soprano voice. It flies among white clouds in the blue sky. It launches intensely hot fireballs from its mouth.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If you hear a beautiful melody trilling deep among mountains far from people, it is Altaria's humming.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If you hear a beautiful melody trilling deep among mountains far from people, it is Altaria's humming.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It looks like a fluffy cloud when it is in flight. It hums with its soprano voice.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It looks like a fluffy cloud when it is in flight. It hums with its soprano voice.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If it bonds with a person, it will gently envelop the friend with its soft wings, then hum.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It flies gracefully through the sky. Its melodic humming makes you feel like you're in a dream.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It flies gracefully through the sky. Its melodic humming makes you feel like you're in a dream.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If it bonds with a person, it will gently envelop the friend with its soft wings, then hum.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If it bonds with a person, it will gently envelop the friend with its soft wings, then hum.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"On sunny days, it flies freely through the sky and blends into the clouds. It sings in a beautiful soprano.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"On sunny days, it flies freely through the sky and blends into the clouds. It sings in a beautiful soprano.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It flies gracefully through the sky. Its melodic humming makes you feel like you're in a dream.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"On sunny days, it flies freely through the sky and blends into the clouds. It sings in a beautiful soprano.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Altaria dances and wheels through the sky among billowing, cotton-like clouds. By singing melodies in its crystal-clear voice, this Pokémon makes its listeners experience dreamy wonderment.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Altaria sings in a gorgeous soprano. Its wings are like cotton clouds. This Pokémon catches updrafts with its buoyant wings and soars way up into the wild blue yonder.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As it flies in a calm and relaxed manner, Altaria performs a humming song that would enrapture any audience.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon has a kind disposition, but if it's provoked, it will threaten opponents with shrill cries before attacking them without mercy.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It looks like a fluffy cloud when it is in flight. It hums with its soprano voice.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It looks like a fluffy cloud when it is in flight. It hums with its soprano voice.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If it bonds with a person, it will gently envelop the friend with its soft wings, then hum.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"On sunny days, it flies freely through the sky and blends into the clouds. It sings in a beautiful soprano.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It flies gracefully through the sky. Its melodic humming makes you feel like you're in a dream.\"\n    }\n  ],\n  \"335\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Memories of battling its arch-rival Seviper are etched into every cell of Zangoose's body. This Pokémon adroitly dodges attacks with incredible agility.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Zangoose usually stays on all fours, but when angered, it gets up on its hind legs and extends its claws. This Pokémon shares a bitter rivalry with Seviper that dates back over generations.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When it battles, it stands on its hind legs and attacks with its sharply clawed forelegs. Its fur bristles if it encounters any Seviper.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"If it comes across a Seviper, its fur bristles and it assumes its battle pose. Its sharp claws are its best weapon.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"If it comes across a Seviper, its fur bristles and it assumes its battle pose. Its sharp claws are its best weapon.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has feuded with SEVIPER for many generations. Its sharp claws are its biggest weapons.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It has feuded with SEVIPER for many generations. Its sharp claws are its biggest weapons.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has feuded with SEVIPER for many generations. Its sharp claws are its biggest weapons.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its fur would all stand on end if it smelled a Seviper nearby. Its sharp claws tear up its foes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its fur would all stand on end if it smelled a Seviper nearby. Its sharp claws tear up its foes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has feuded with Seviper for many generations. Its sharp claws are its biggest weapons.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has feuded with Seviper for many generations. Its sharp claws are its biggest weapons.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It's Seviper's archrival. To threaten those it encounters, it fans out the claws on its front paws.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It's Seviper's archrival. To threaten those it encounters, it fans out the claws on its front paws.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has feuded with Seviper for many generations. Its sharp claws are its biggest weapons.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its fur would all stand on end if it smelled a Seviper nearby. Its sharp claws tear up its foes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Memories of battling its archrival Seviper are etched into every cell of Zangoose's body. This Pokémon adroitly dodges attacks with incredible agility.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Zangoose usually stays on all fours, but when angered, it gets up on its hind legs and extends its claws. This Pokémon shares a bitter rivalry with Seviper that dates back over generations.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has feuded with Seviper for many generations. Its sharp claws are its greatest weapons.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It has feuded with Seviper for many generations. Its sharp claws are its greatest weapons.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's Seviper's archrival. To threaten those it encounters, it fans out the claws on its front paws.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If it comes across a Seviper, its fur bristles and it assumes its battle pose. Its sharp claws are its best weapon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Every hair on its body stands up if it so much as smells a Seviper. Its sharp claws tear foes apart.\"\n    }\n  ],\n  \"336\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Seviper shares a generations-long feud with Zangoose. The scars on its body are evidence of vicious battles. This Pokémon attacks using its sword-edged tail.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Seviper's swordlike tail serves two purposes - it slashes foes and douses them with secreted poison. This Pokémon will not give up its long-running blood feud with Zangoose.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Seviper and Zangoose are eternal rivals. It counters a Zangoose's dazzling agility with its swordlike tail, which also oozes a horrible poison.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It sharpens its swordlike tail on hard rocks. It hides in tall grass and strikes unwary prey with venomous fangs.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It sharpens its swordlike tail on hard rocks. It hides in tall grass and strikes unwary prey with venomous fangs.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"For many generations, it has feuded with ZANGOOSE. It whets its bladed tail on rocks for battle.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"For many generations, it has feuded with ZANGOOSE. It whets its bladed tail on rocks for battle.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"For many generations, it has feuded with ZANGOOSE. It whets its bladed tail on rocks for battle.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"In battle, it uses its bladed tail to counter any Zangoose. It secretes a deadly venom in its tail.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"In battle, it uses its bladed tail to counter any Zangoose. It secretes a deadly venom in its tail.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"For many generations, it has feuded with Zangoose. It whets its bladed tail on rocks for battle.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"For many generations, it has feuded with Zangoose. It whets its bladed tail on rocks for battle.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Constant polishing makes the edge of the blade on its tail extremely sharp. It's Zangoose's archrival.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Constant polishing makes the edge of the blade on its tail extremely sharp. It's Zangoose's archrival.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In battle, it uses its bladed tail to counter any Zangoose. It secretes a deadly venom in its tail.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Constant polishing makes the edge of the blade on its tail extremely sharp. It's Zangoose's archrival.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Seviper shares a generations-long feud with Zangoose. The scars on its body are evidence of vicious battles. This Pokémon attacks using its sword-edged tail.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Seviper's swordlike tail serves two purposes—it slashes foes and douses them with secreted poison. This Pokémon will not give up its long-running blood feud with Zangoose.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"For many generations, it has feuded with Zangoose. It whets its bladed tail on rocks for battle.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"For many generations, it has feuded with Zangoose. It whets its bladed tail on rocks for battle.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It sharpens its swordlike tail on hard rocks. It hides in tall grass and strikes unwary prey with venomous fangs.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Constant polishing makes the edge of the blade on its tail extremely sharp. It's Zangoose's archrival.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It battles speedy Zangoose using its keenly bladed tail, which oozes an extremely powerful poison.\"\n    }\n  ],\n  \"337\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Lunatone was discovered at a location where a meteorite fell. As a result, some people theorize that this Pokémon came from space. However, no one has been able to prove this theory so far.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Lunatone becomes active around the time of the full moon. Instead of walking, it moves by floating in midair. The Pokémon's intimidating red eyes cause all those who see it to become transfixed with fear.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It becomes very active on the night of a full moon. This Pokémon was first discovered 40 years ago at the site of a meteor strike.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its health ebbs and flows with the lunar cycle. It brims with power when exposed to the light of the full moon.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its health ebbs and flows with the lunar cycle. It brims with power when exposed to the light of the full moon.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Because it turns active on nights of the full moon, it is said to have some link to the lunar phases.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Because it turns active on nights of the full moon, it is said to have some link to the lunar phases.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Because it turns active on nights of the full moon, it is said to have some link to the lunar phases.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It was discovered at the site of a meteor strike 40 years ago. Its stare can lull its foes to sleep.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It was discovered at the site of a meteor strike 40 years ago. Its stare can lull its foes to sleep.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Because it turns active on nights of the full moon, it is said to have some link to the lunar phases.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because it turns active on nights of the full moon, it is said to have some link to the lunar phases.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The phase of the moon apparently has some effect on its power. It's active on the night of a full moon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The phase of the moon apparently has some effect on its power. It's active on the night of a full moon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Because it turns active on nights of the full moon, it is said to have some link to the lunar phases.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It was discovered at the site of a meteor strike 40 years ago. Its stare can lull its foes to sleep.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Lunatone was discovered at a location where a meteoroid fell. As a result, some people theorize that this Pokémon came from space. However, no one has been able to prove this theory so far.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Lunatone becomes active around the time of the full moon. Instead of walking, it moves by floating in midair. The Pokémon's intimidating red eyes cause all those who see it to become transfixed with fear.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The phase of the moon apparently has some effect on its power. It's active on the night of a full moon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It was discovered at the site of a meteor strike 40 years ago. Its stare can lull its foes to sleep.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It becomes active on nights with a full moon, so it is said to have some link to the lunar phases.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It becomes active on nights with a full moon, so it is said to have some link to the lunar phases.\"\n    }\n  ],\n  \"338\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Solrock is a new species of Pokémon that is said to have fallen from space. It floats in air and moves silently. In battle, this Pokémon releases intensely bright light.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sunlight is the source of Solrock's power. It is said to possess the ability to read the emotions of others. This Pokémon gives off intense heat while rotating its body.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Solar energy is the source of this Pokémon's power. On sunny days, groups of Solrock line up facing the sun and absorb its light.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It absorbs solar energy during the day. Always expressionless, it can sense what its foe is thinking.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It absorbs solar energy during the day. Always expressionless, it can sense what its foe is thinking.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A new Pokémon species, rumored to be from the sun. It gives off light while spinning.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A new Pokémon species, rumored to be from the sun. It gives off light while spinning.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A new Pokémon species, rumored to be from the sun. It gives off light while spinning.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it rotates itself, it gives off light similar to the sun, thus blinding its foes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it rotates itself, it gives off light similar to the sun, thus blinding its foes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A new Pokémon species, rumored to be from the sun. It gives off light while spinning.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A new Pokémon species, rumored to be from the sun. It gives off light while spinning.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Solar energy is the source of its power, so it is strong during the daytime. When it spins, its body shines.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Solar energy is the source of its power, so it is strong during the daytime. When it spins, its body shines.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Solar energy is the source of its power, so it is strong during the daytime. When it spins, its body shines.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It absorbs solar energy during the day. Always expressionless, it can sense what its foe is thinking.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Solrock is a new species of Pokémon that is said to have fallen from space. It floats in air and moves silently. In battle, this Pokémon releases intensely bright light.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sunlight is the source of Solrock's power. It is said to possess the ability to read the emotions of others. This Pokémon gives off intense heat while rotating its body.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it rotates itself, it gives off light similar to the sun, thus blinding its foes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Solar energy is the source of its power, so it is strong during the daytime. When it spins, its body shines.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This new Pokémon species is rumored to be an avatar of the sun. The Pokémon gives off light while spinning.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This new Pokémon species is rumored to be an avatar of the sun. The Pokémon gives off light while spinning.\"\n    }\n  ],\n  \"339\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Barboach's sensitive whiskers serve as a superb radar system. This Pokémon hides in mud, leaving only its two whiskers exposed while it waits for prey to come along.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Barboach's body is covered with a slimy film. If a foe grabs it, this Pokémon just slips out of the enemy's grip. This Pokémon grows weak if the slimy coating dries up.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its body is covered with a slimy film. The film acts as a barrier to prevent germs in muddy water from entering the Barboach's body.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It probes muddy riverbeds with its two long whiskers. A slimy film protects its body.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It probes muddy riverbeds with its two long whiskers. A slimy film protects its body.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It coats its entire body with a slimy fluid so it can squirm and slip away if grabbed.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its whiskers make a superb radar. They are used to locate prey, even in the murkiest of water.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its slimy body is hard to grasp. In one region, it is said to have been born from hardened mud.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Barboach uses its whiskers to taste things just as a person uses his or her tongue to taste things.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Barboach uses its whiskers to taste things just as a person uses his or her tongue to taste things.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its slimy body is hard to grasp. In one region, it is said to have been born from hardened mud.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its slimy body is hard to grasp. In one region, it is said to have been born from hardened mud.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its slimy body is hard to grasp. In one region, it is said to have been born from hardened mud.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its slimy body is hard to grasp. In one region, it is said to have been born from hardened mud.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It coats its entire body with a slimy fluid so it can squirm and slip away if grabbed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its whiskers make a superb radar. They are used to locate prey, even in the murkiest of water.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Barboach's sensitive whiskers serve as a superb radar system. This Pokémon hides in mud, leaving only its two whiskers exposed while it waits for prey to come along.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Barboach's body is covered with a slimy film. If a foe grabs it, this Pokémon just slips out of the enemy's grip. This Pokémon grows weak if the slimy coating dries up.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its two whiskers provide a sensitive radar. Even in muddy waters, it can detect its prey's location.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its slippery body is hard to grasp, so much so that there are festivals where people compete to see how many they can catch barehanded.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its entire body is gooey. When pecked at by bird Pokémon, it slips and slides its way to freedom.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its whiskers are filled with nerves. They can sense smells and flavors just as a person's nose or tongue would.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its slimy body is hard to grasp. In one region, it is said to have been born from hardened mud.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It probes muddy riverbeds with its two long whiskers. A slimy film protects its body.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It coats its entire body with a slimy fluid so it can squirm and slip away if grabbed.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its whiskers make a superb radar. They are used to locate prey, even in the murkiest of water.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Makes its home in swamps with murky water. The poor visibility hides this Pokémon from predators, and the slime on its body makes grasping it difficult.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its two whiskers provide a sensitive radar. Even in muddy waters, it can detect its prey's location.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It probes muddy riverbeds with its two long whiskers. A slimy film protects its body.\"\n    }\n  ],\n  \"340\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Whiscash is extremely territorial. Just one of these Pokémon will claim a large pond as its exclusive territory. If a foe approaches it, it thrashes about and triggers a massive earthquake.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"If Whiscash goes on a wild rampage, it sets off a quake-like tremor with a radius of over three miles. This Pokémon has the ability to predict real earthquakes.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Mysteriously, it can foretell earthquakes. In the daytime, it sleeps in mud at the bottom of a pond. When it awakens, it continually feeds throughout the night.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It makes its nest at the bottom of swamps. It will eat anything - if it is alive, Whiscash will eat it.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It makes its nest at the bottom of swamps. It will eat anything - if it is alive, Whiscash will eat it.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is very territorial. It repels foes by setting off tremors that extend over a three-mile radius.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"As a result of causing tremors by thrashing about, it developed the ability to foretell real quakes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is extremely protective of its territory. If any foe approaches, it attacks using vicious tremors.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It claims a large swamp to itself. If a foe comes near it, it sets off tremors by thrashing around.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It claims a large swamp to itself. If a foe comes near it, it sets off tremors by thrashing around.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is extremely protective of its territory. If any foe approaches, it attacks using vicious tremors.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is extremely protective of its territory. If any foe approaches, it attacks using vicious tremors.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is extremely protective of its territory. If any foe approaches, it attacks using vicious tremors.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is extremely protective of its territory. If any foe approaches, it attacks using vicious tremors.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It claims a large swamp to itself. If a foe comes near it, it sets off tremors by thrashing around.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It makes its nest at the bottom of swamps. It will eat anything--if it is alive, Whiscash will eat it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Whiscash is extremely territorial. Just one of these Pokémon will claim a large pond as its exclusive territory. If a foe approaches it, it thrashes about and triggers a massive earthquake.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If Whiscash goes on a wild rampage, it sets off a quake-like tremor with a radius of over three miles. This Pokémon has the ability to predict real earthquakes.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A glutton that devours anything that moves, it quietly lurks at the bottom of swamps, lying in wait for prey.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Sighting Whiscash leaping from the water is believed to herald an earthquake.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Whiscash shakes the ground at high intensities to intimidate its opponents. It swallows its prey whole—along with mud from the swamp floor.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its vision is not that good. It senses vibrations in the water with its whiskers to determine the location of its prey.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It makes its nest at the bottom of swamps. It will eat anything—if it is alive, Whiscash will eat it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It claims a large swamp to itself. If a foe comes near it, it sets off tremors by thrashing around.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is very territorial. It repels foes by setting off tremors that extend over a three-mile radius.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"As a result of causing tremors by thrashing about, it developed the ability to foretell real quakes.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Strikes its caudal fin against the swamp bed to shake the ground and startle its prey. It will then swallow the fleeing prey whole. People mistook this behavior as the cause of earthquakes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is extremely protective of its territory. If any foe approaches, it attacks using vicious tremors.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Sighting Whiscash leaping from the water is believed to herald an earthquake.\"\n    }\n  ],\n  \"341\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Corphish were originally foreign Pokémon that were imported as pets. They eventually turned up in the wild. This Pokémon is very hardy and has greatly increased its population.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Corphish catches prey with its sharp claws. It has no likes or dislikes when it comes to food - it will eat anything. This Pokémon has no trouble living in filthy water.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Once it grips prey with its large pincers, it will never let go, no matter what. It is a hardy Pokémon that can thrive in any environment.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It came from overseas. It is a very hardy creature that will quickly proliferate, even in polluted streams.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It came from overseas. It is a very hardy creature that will quickly proliferate, even in polluted streams.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its hardy vitality enables it to adapt to any environment. Its pincers will never release prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its hardy vitality enables it to adapt to any environment. Its pincers will never release prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its hardy vitality enables it to adapt to any environment. Its pincers will never release prey.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It was originally a Pokémon from afar that escaped to the wild. It can adapt to the dirtiest river.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It was originally a Pokémon from afar that escaped to the wild. It can adapt to the dirtiest river.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its hardy vitality enables it to adapt to any environment. Its pincers will never release prey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its hardy vitality enables it to adapt to any environment. Its pincers will never release prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"No matter how dirty the water in the river, it will adapt and thrive. It has a strong will to survive.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"No matter how dirty the water in the river, it will adapt and thrive. It has a strong will to survive.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"No matter how dirty the water in the river, it will adapt and thrive. It has a strong will to survive.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its hardy vitality enables it to adapt to any environment. Its pincers will never release prey.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Corphish were originally foreign Pokémon that were imported as pets. They eventually turned up in the wild. This Pokémon is very hardy and has greatly increased its population.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Corphish catches prey with its sharp claws. It has no likes or dislikes when it comes to food—it will eat anything. This Pokémon has no trouble living in filthy water.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Individuals that have been set free by Trainers who could no longer raise them have become common, and they can now be found in Alola.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It can adapt very well to its environment. Feebas and Corphish are about the only Pokémon to live in stagnant ditches.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"No matter how dirty the water in the river, it will adapt and thrive. It has a strong will to survive.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It was originally a Pokémon from afar that escaped to the wild. It can adapt to the dirtiest river.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its hardy vitality enables it to adapt to any environment. Its pincers will never release prey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its hardy vitality enables it to adapt to any environment. Its pincers will never release prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It came from overseas. It is a very hardy creature that will quickly proliferate, even in polluted streams.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can live in impure water, where it doesn't need to compete with other water Pokémon for food, so its numbers have steadily increased.\"\n    }\n  ],\n  \"342\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Crawdaunt has an extremely violent nature that compels it to challenge other living things to battle. Other life-forms refuse to live in ponds inhabited by this Pokémon, making them desolate places.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Crawdaunt molts (sheds) its shell regularly. Immediately after molting, its shell is soft and tender. Until the shell hardens, this Pokémon hides in its streambed burrow to avoid attack from its foes.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A brutish Pokémon that loves to battle. A veteran Crawdaunt that has prevailed in hundreds of battles has giant pincers marked with countless scars.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"A rough customer that wildly flails its giant claws. It is said to be extremely hard to raise.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"A rough customer that wildly flails its giant claws. It is said to be extremely hard to raise.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is a ruffian that uses its pincers to pick up and toss out other Pokémon from its pond.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is a ruffian that uses its pincers to pick up and toss out other Pokémon from its pond.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is a ruffian that uses its pincers to pick up and toss out other Pokémon from its pond.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A brutish Pokémon that loves to battle. It will crash itself into any foe that approaches its nest.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A brutish Pokémon that loves to battle. It will crash itself into any foe that approaches its nest.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is a ruffian that uses its pincers to pick up and toss out other Pokémon from its pond.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is a ruffian that uses its pincers to pick up and toss out other Pokémon from its pond.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Loving to battle, this Pokémon pinches all Pokémon that enter its territory with its pincers and throws them out.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Loving to battle, this Pokémon pinches all Pokémon that enter its territory with its pincers and throws them out.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is a ruffian that uses its pincers to pick up and toss out other Pokémon from its pond.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Loving to battle, this Pokémon pinches all Pokémon that enter its territory with its pincers and throws them out.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Crawdaunt has an extremely violent nature that compels it to challenge other living things to battle. Other life-forms refuse to live in ponds inhabited by this Pokémon, making them desolate places.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Crawdaunt molts (sheds) its shell regularly. Immediately after molting, its shell is soft and tender. Until the shell hardens, this Pokémon hides in its streambed burrow to avoid attack from its foes.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its temperament is rough and it loves to fight, but as soon as its pincers break off, it turns cowardly. It stays timid until they grow back.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its pincers often fall off. Unlike with Crabrawler or Clauncher, the meat in its claws is utterly nasty and stinking.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A rough customer that wildly flails its giant claws. It is said to be extremely hard to raise.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A brutish Pokémon that loves to battle. It will crash itself into any foe that approaches its nest.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a ruffian that uses its pincers to pick up and toss out other Pokémon from its pond.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is a ruffian that uses its pincers to pick up and toss out other Pokémon from its pond.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Loving to battle, this Pokémon pinches all Pokémon that enter its territory with its pincers and throws them out.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A rough customer that wildly flails its giant claws. It is said to be extremely hard to raise.\"\n    }\n  ],\n  \"343\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Baltoy moves while spinning around on its one foot. Primitive wall paintings depicting this Pokémon living among people were discovered in some ancient ruins.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"As soon as it spots others of its kind, Baltoy congregates with them and then begins crying noisily in unison. This Pokémon sleeps while cleverly balancing itself on its one foot.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Baltoy moves by spinning on its single foot. It has been depicted in murals adorning the walls of a once-bustling city in an ancient age.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It was discovered in ancient ruins. While moving, it constantly spins. It stands on one foot even when asleep.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It was discovered in ancient ruins. While moving, it constantly spins. It stands on one foot even when asleep.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It moves by spinning on its foot. It is a rare Pokémon that was discovered in ancient ruins.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It moves by spinning on its foot. It is a rare Pokémon that was discovered in ancient ruins.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It moves by spinning on its foot. It is a rare Pokémon that was discovered in ancient ruins.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It moves while spinning around on its single foot. Some Baltoy have been seen spinning on their heads.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It moves while spinning around on its single foot. Some Baltoy have been seen spinning on their heads.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It moves by spinning on its foot. It is a rare Pokémon that was discovered in ancient ruins.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It moves by spinning on its foot. It is a rare Pokémon that was discovered in ancient ruins.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Discovered in ancient ruins, it moves by spinning around and forms a group when it finds others.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Discovered in ancient ruins, it moves by spinning around and forms a group when it finds others.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It moves while spinning around on its single foot. Some Baltoy have been seen spinning on their heads.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It moves by spinning on its foot. It is a rare Pokémon that was discovered in ancient ruins.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Baltoy moves while spinning around on its one foot. Primitive wall paintings depicting this Pokémon living among people were discovered in some ancient ruins.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"As soon as it spots others of its kind, Baltoy congregates with them and then begins crying noisily in unison. This Pokémon sleeps while cleverly balancing itself on its one foot.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Depictions of Pokémon similar to Baltoy have been found on the walls of caves where primitive humans lived.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When they find others of their kind, they cry out loudly and gather together. Large numbers of them can be found in old graveyards.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It moves while spinning around on its single foot. Some Baltoy have been seen spinning on their heads.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It was discovered in ancient ruins. While moving, it constantly spins. It stands on one foot even when asleep.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It moves by spinning on its foot. It is a rare Pokémon that was discovered in ancient ruins.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It moves by spinning on its foot. It is a rare Pokémon that was discovered in ancient ruins.\"\n    }\n  ],\n  \"344\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Claydol are said to be dolls of mud made by primitive humans and brought to life by exposure to a mysterious ray. This Pokémon moves about while levitating.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Claydol is an enigma that appeared from a clay statue made by an ancient civilization dating back 20,000 years. This Pokémon shoots beams from both its hands.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Claydol sleeps while hovering in midair. Its arms are separate from its body. They are kept floating by the Pokémon's manipulation of psychic power.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It appears to have been born from clay dolls made by ancient people. It uses telekinesis to float and move.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It appears to have been born from clay dolls made by ancient people. It uses telekinesis to float and move.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"An ancient clay figurine that came to life as a Pokémon from exposure to a mysterious ray of light.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"An ancient clay figurine that came to life as a Pokémon from exposure to a mysterious ray of light.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"An ancient clay figurine that came to life as a Pokémon from exposure to a mysterious ray of light.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is said that it originates from clay dolls made by an ancient civilization.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is said that it originates from clay dolls made by an ancient civilization.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"An ancient clay figurine that came to life as a Pokémon from exposure to a mysterious ray of light.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"An ancient clay figurine that came to life as a Pokémon from exposure to a mysterious ray of light.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This mysterious Pokémon started life as an ancient clay figurine made over 20,000 years ago.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This mysterious Pokémon started life as an ancient clay figurine made over 20,000 years ago.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"An ancient clay figurine that came to life as a Pokémon from exposure to a mysterious ray of light.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is said that it originates from clay dolls made by an ancient civilization.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Claydol are said to be dolls of mud made by primitive humans and brought to life by exposure to a mysterious ray. This Pokémon moves about while levitating.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Claydol is an enigma that appeared from a clay statue made by an ancient civilization dating back 20,000 years. This Pokémon shoots beams from both its hands.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"If it gets wet, its body melts. When rain starts to fall, it wraps its whole body up with its psychic powers to protect itself.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The ancient people who made it apparently modeled it after something that descended from the sky. It fires beams from both arms.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This mysterious Pokémon started life as an ancient clay figurine made over 20,000 years ago.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It appears to have been born from clay dolls made by ancient people. It uses telekinesis to float and move.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"An ancient clay figurine was exposed to a mysterious ray of light, and it came to life as a Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"An ancient clay figurine was exposed to a mysterious ray of light, and it came to life as a Pokémon.\"\n    }\n  ],\n  \"345\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Lileep became extinct approximately a hundred million years ago. This ancient Pokémon attaches itself to a rock on the seafloor and catches approaching prey using tentacles shaped like flower petals.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Lileep is an ancient Pokémon that was regenerated from a fossil. It remains permanently anchored to a rock. From its immobile perch, this Pokémon intently scans for prey with its two eyes.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It disguises itself as seaweed by making its tentacles sway. Unsuspecting prey that come too close are swallowed whole. It became extinct 100 million years ago.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It became extinct roughly 100 million years ago. It was regenerated from a fossil using advanced techniques.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It became extinct roughly 100 million years ago. It was regenerated from a fossil using advanced techniques.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It disguises its tentacles as flowers to attract and catch prey. It became extinct in ancient times.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It disguises its tentacles as flowers to attract and catch prey. It became extinct in ancient times.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It disguises its tentacles as flowers to attract and catch prey. It became extinct in ancient times.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Lileep became extinct approximately a hundred million years ago. This ancient Pokémon attaches itself to a rock on the seafloor and catches approaching prey using tentacles shaped like flower petals.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Lileep is an ancient Pokémon that was regenerated from a fossil. It remains permanently anchored to a rock. From its immobile perch, this Pokémon intently scans for prey with its two eyes.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"In ancient times, it lived in warm seas. It disguised itself as seaweed to ambush its prey and devoured them whole when they got close.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It sticks to rocks with its powerful suckers and can't be washed away no matter how rough the surf gets.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon was restored from a fossil. Lileep once lived in warm seas that existed approximately 100,000,000 years ago.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Lileep clings to rocks on the seabed. When prey comes close, this Pokémon entangles it with petallike tentacles.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lived on the seafloor 100 million years ago and was reanimated scientifically.\"\n    }\n  ],\n  \"346\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Cradily roams around the ocean floor in search of food. This Pokémon freely extends its tree trunk-like neck and captures unwary prey using its eight tentacles.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Cradily's body serves as an anchor, preventing it from being washed away in rough seas. This Pokémon secretes a strong digestive fluid from its tentacles.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It drags its heavy body along the seafloor. It makes its nest in the shallows of warm seas. Cradily can be seen on beaches when the tide goes out.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It ensnares prey with its eight tentacles. It then melts the prey with a strong acid before feeding.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It ensnares prey with its eight tentacles. It then melts the prey with a strong acid before feeding.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives in warm seas. Its heavy body weighs it down so it won't get washed away in rough weather.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives in warm seas. Its heavy body weighs it down so it won't get washed away in rough weather.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It ensnares prey with its eight tentacles. It then melts the prey with a strong acid before feeding.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Cradily roams around the ocean floor in search of food. This Pokémon freely extends its tree trunk-like neck and captures unwary prey using its eight tentacles.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Cradily's body serves as an anchor, preventing it from being washed away in rough seas. This Pokémon secretes a strong digestive fluid from its tentacles.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Normally, it lived on shallow sea shoals. When the tide went out, this Pokémon came up on land to search for prey.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This carnivorous Pokémon lived in primordial seas. It catches prey in its eight tentacles and dissolves them with digestive fluid as it eats.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has short legs and can't walk very fast, but its neck and tentacles can extend to over three times their usual length to nab distant prey.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Once Cradily catches prey in its tentacles, it digests them whole and absorbs their nutrients.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives in the shallows of warm seas. When the tide goes out, it digs up prey from beaches.\"\n    }\n  ],\n  \"347\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Anorith was regenerated from a prehistoric fossil. This primitive Pokémon once lived in warm seas. It grips its prey firmly between its two large claws.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Anorith is said to be a type of Pokémon predecessor, with eight wings at the sides of its body. This Pokémon swam in the primordial sea by undulating these eight wings.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It was resurrected from a fossil using the power of science. It swims by undulating the eight wings at its sides. They were feet that adapted to life in the sea.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is a kind of Pokémon progenitor. It uses its extending claws to catch prey hiding among rocks on the seafloor.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is a kind of Pokémon progenitor. It uses its extending claws to catch prey hiding among rocks on the seafloor.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon ancestor that was reanimated from a fossil. It lived in the sea and hunted with claws.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon ancestor that was reanimated from a fossil. It lived in the sea and hunted with claws.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A Pokémon ancestor that was reanimated from a fossil. It lived in the sea and hunted with claws.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"An ancestral Pokémon that lived in the ocean. Over time, its eight feet transformed into wings.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"An ancestral Pokémon that lived in the ocean. Over time, its eight feet transformed into wings.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A Pokémon ancestor that was reanimated from a fossil. It lived in the sea and hunted with claws.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A Pokémon ancestor that was reanimated from a fossil. It lived in the sea and hunted with claws.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A Pokémon ancestor that was reanimated from a fossil. It lived in the sea and hunted with claws.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A Pokémon ancestor that was reanimated from a fossil. It lived in the sea and hunted with claws.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is a kind of Pokémon progenitor. It uses its extending claws to catch prey hiding among rocks on the seafloor.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A Pokémon ancestor that was reanimated from a fossil. It lived in the sea and hunted with claws.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Anorith was regenerated from a prehistoric fossil. This primitive Pokémon once lived in warm seas. It grips its prey firmly between its two large claws.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Anorith is said to be a type of Pokémon predecessor, with eight wings at the sides of its body. This Pokémon swam in the primordial sea by undulating these eight wings.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When restored Anorith are released into the ocean, they don't thrive, because the water composition has changed since their era.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This is one kind of primeval bug Pokémon. With eight wings, it could apparently swim a lot faster than you'd expect.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon was restored from a fossil. Anorith lived in the ocean about 100,000,000 years ago, hunting with its pair of claws.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Anorith can swim swiftly by pulling its eight wings through the water like oars on a boat. This Pokémon is an ancestor of modern bug Pokémon.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This Pokémon ancestor was reanimated from a fossil. It lived in the sea and hunted with its claws.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This Pokémon ancestor was reanimated from a fossil. It lived in the sea and hunted with its claws.\"\n    }\n  ],\n  \"348\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Armaldo's tough armor makes all attacks bounce off. This Pokémon's two enormous claws can be freely extended or contracted. They have the power to punch right through a steel slab.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Armaldo is a Pokémon species that became extinct in prehistoric times. This Pokémon is said to have walked on its hind legs, which would have been more convenient for life on land.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Armaldo usually lives on land. However, when it hunts for prey, it dives beneath the ocean. It swims around using its two large wings.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Protected by a hard shell, its body is very sturdy. It skewers prey with its claws to feed.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Protected by a hard shell, its body is very sturdy. It skewers prey with its claws to feed.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It went ashore after evolving. Its entire body is clad in a sturdy armor.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It went ashore after evolving. Its entire body is clad in a sturdy armor.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It went ashore after evolving. Its entire body is clad in a sturdy armor.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its enormous, retractable claws can cut through most anything. Its entire body is clad in sturdy plates.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its enormous, retractable claws can cut through most anything. Its entire body is clad in sturdy plates.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It went ashore after evolving. Its entire body is clad in a sturdy armor.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It went ashore after evolving. Its entire body is clad in a sturdy armor.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It went ashore after evolving. Its entire body is clad in a sturdy armor.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It went ashore after evolving. Its entire body is clad in a sturdy armor.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its enormous, retractable claws can cut through most anything. Its entire body is clad in sturdy plates.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Protected by a hard shell, its body is very sturdy. It skewers prey with its claws to feed.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Armaldo's tough armor makes all attacks bounce off. This Pokémon's two enormous claws can be freely extended or contracted. They have the power to punch right through a steel slab.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Armaldo is a Pokémon species that became extinct in prehistoric times. This Pokémon is said to have walked on its hind legs, which would have been more convenient for life on land.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It lived on land and went out into the sea to hunt for prey. Its sharp claws were its greatest weapon.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Armaldo adapted from living in water to living on land. It has been determined that it is the ancestor of some bug Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After evolution, this Pokémon emerged onto land. Its lower body has become stronger, and blows from its tail are devastating.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Though it lives on land, it's also a good swimmer. It dives into the ocean in search of prey, using its sharp claws to take down its quarry.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It went ashore after evolving. Its entire body is clad in a sturdy armor.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It went ashore after evolving. Its entire body is clad in a sturdy armor.\"\n    }\n  ],\n  \"349\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Feebas's fins are ragged and tattered from the start of its life. Because of its shoddy appearance, this Pokémon is largely ignored. It is capable of living in both the sea and in rivers.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"While Feebas's body is in tatters, it has a hardy and tenacious life force that enables it to live anywhere. However, this Pokémon is also slow and dimwitted, making it an easy catch.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Feebas live in ponds that are heavily infested with weeds. Because of its hopelessly shabby appearance, it seems as if few Trainers raise it.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Ridiculed for its shabby appearance, it is ignored by researchers. It lives in ponds choked with weeds.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Ridiculed for its shabby appearance, it is ignored by researchers. It lives in ponds choked with weeds.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is famous for its shabby appearance. While populous, they tend to cluster in set locations.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It eats anything, so it can even live in polluted streams and lakes. No one pays any attention to it.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is a shabby and ugly Pokémon. However, it is very hardy and can survive on little water.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is the shabbiest Pokémon of all. It forms in schools and lives at the bottom of rivers.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is the shabbiest Pokémon of all. It forms in schools and lives at the bottom of rivers.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is a shabby and ugly Pokémon. However, it is very hardy and can survive on little water.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is a shabby and ugly Pokémon. However, it is very hardy and can survive on little water.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is a shabby and ugly Pokémon. However, it is very hardy and can survive on little water.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is a shabby and ugly Pokémon. However, it is very hardy and can survive on little water.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It eats anything, so it can even live in polluted streams and lakes. No one pays any attention to it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is the shabbiest Pokémon of all. It forms in schools and lives at the bottom of rivers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Feebas's fins are ragged and tattered from the start of its life. Because of its shoddy appearance, this Pokémon is largely ignored. It is capable of living in both the sea and in rivers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"While Feebas's body is in tatters, it has a hardy and tenacious life force that enables it to live anywhere. However, this Pokémon is also slow and dimwitted, making it an easy catch.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A tough Pokémon that is perfectly fine even in dirty water. However, due to its ragged, shabby appearance, it isn't popular.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Although unattractive and unpopular, this Pokémon's marvelous vitality has made it a subject of research.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They look ragged, so no one catches them. They look like they'd taste bad, so predators won't eat them. And their numbers continue to grow.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Because of its wretched appearance, most people pay it no attention, but there are some who collect Feebas—and Feebas alone!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Although unattractive and unpopular, this Pokémon's marvelous vitality has made it a subject of research.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It is a shabby and ugly Pokémon. However, it is very hardy and can survive on little water.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They are famous for their shabby appearance. Although populous, they tend to cluster in set locations.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It eats anything, so it can even live in polluted streams and lakes. No one pays any attention to it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This tough Pokémon is perfectly fine even in dirty water. However, due to its ragged, shabby appearance, it isn't popular.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is the shabbiest Pokémon of all. It forms schools and lives at the bottom of rivers that teem with plant life.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They are famous for their shabby appearance. Although Feebas are plentiful in number, they tend to cluster in specific places.\"\n    }\n  ],\n  \"350\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Milotic is said to be the most beautiful of all the Pokémon. It has the power to becalm such emotions as anger and hostility to quell bitter feuding.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Milotic live at the bottom of large lakes. When this Pokémon's body glows a vivid pink, it releases a pulsing wave of energy that brings soothing calm to restless spirits.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is said to live at the bottom of large lakes. Considered to be the most beautiful of all Pokémon, it has been depicted in paintings and statues.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Milotic is breathtakingly beautiful. Those that see it are said to forget their combative spirits.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Milotic is breathtakingly beautiful. Those that see it are said to forget their combative spirits.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When people bicker, it is said to arise from the depths of lakes to becalm violent hearts.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is the world's most beautiful Pokémon. There are many works of art featuring Milotic.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its lovely scales are described as rainbow colored. They change color depending on the viewing angle.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It's said that a glimpse of a Milotic and its beauty will calm any hostile emotions you're feeling.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It's said that a glimpse of a Milotic and its beauty will calm any hostile emotions you're feeling.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its lovely scales are described as rainbow colored. They change color depending on the viewing angle.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its lovely scales are described as rainbow colored. They change color depending on the viewing angle.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its lovely scales are described as rainbow colored. They change color depending on the viewing angle.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its lovely scales are described as rainbow colored. They change color depending on the viewing angle.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Milotic is breathtakingly beautiful. Those that see it are said to forget their combative spirits.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is the world's most beautiful Pokémon. There are many works of art featuring Milotic.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Milotic is said to be the most beautiful of all the Pokémon. It has the power to becalm such emotions as anger and hostility to quell bitter feuding.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Milotic live at the bottom of large lakes. When this Pokémon's body glows a vivid pink, it releases a pulsing wave of energy that brings soothing calm to troubled hearts.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Milotic has provided inspiration to many artists. It has even been referred to as the most beautiful Pokémon of all.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It lives at the bottom of clear lakes. In times of war, it shows itself, which soothes people's minds and hearts.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"While Milotic is said to be the most beautiful Pokémon, Trainers who like Feebas and have raised it are seemingly disappointed by Milotic.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its dwelling place is the bottom of big lakes. Those who behold its loveliness are said to have their hearts purified.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Milotic has provided inspiration to many artists. It has even been referred to as the most beautiful Pokémon of all.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's said that a glimpse of a Milotic and its beauty will calm any hostile emotions you're feeling.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When people bicker, it is said to arise from the depths of lakes to becalm violent hearts.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is the world's most beautiful Pokémon. There are many works of art featuring Milotic.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its lovely scales are described as rainbow-colored. They change color depending on the viewing angle.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It lives at the bottom of clear lakes. In times of war, it shows itself, which soothes people's minds and hearts.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They dwell at the bottoms of big lakes. Anyone who beholds the loveliness of these Pokémon is said to have their heart purified.\"\n    }\n  ],\n  \"351\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Castform's appearance changes with the weather. This Pokémon gained the ability to use the vast power of nature to protect its tiny body.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Castform borrows the power of nature to transform itself into the guises of the sun, rain clouds, and snow clouds. This Pokémon's feelings change with the weather.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It alters its form depending on the weather. Changes in the climate such as the temperature and humidity appear to affect its cellular structure.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has the ability to change its form into the sun, the rain, or a snow cloud, depending on the weather.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has the ability to change its form into the sun, the rain, or a snow cloud, depending on the weather.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its appearance changes with the weather. Recently, its molecules were found to be just like water.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its appearance changes with the weather. Recently, its molecules were found to be just like water.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its appearance changes with the weather. Recently, its molecules were found to be just like water.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This Pokémon can change its cells, taking different forms based on the temperature and humidity.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon can change its cells, taking different forms based on the temperature and humidity.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its appearance changes with the weather. Recently, its molecules were found to be just like water.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its appearance changes with the weather. Recently, its molecules were found to be just like water.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Temperature and weather affect its cellular structure, so this Pokémon changes form according to the weather.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Temperature and weather affect its cellular structure, so this Pokémon changes form according to the weather.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This Pokémon can change its cells, taking different forms based on the temperature and humidity.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has the ability to change its form into the sun, the rain, or a snow cloud, depending on the weather.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Castform's appearance changes with the weather. This Pokémon gained the ability to use the vast power of nature to protect its tiny body.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Castform borrows the power of nature to transform itself into the guises of the sun, rain, and snow-clouds. This Pokémon's feelings change with the weather.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It changes its form depending on the weather. Changes in the temperature or humidity appear to affect its cellular structure.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its form changes on its own, due to its cells' sensitive reactions to temperature and humidity.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although its form changes with the weather, that is apparently the result of a chemical reaction and not the result of its own free will.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its form changes depending on the weather. The rougher conditions get, the rougher Castform's disposition!\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its appearance changes with the weather. Recently, its molecules were found to be just like water.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its appearance changes with the weather. Recently, its molecules were found to be just like water.\"\n    }\n  ],\n  \"352\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Kecleon is capable of changing its body colors at will to blend in with its surroundings. There is one exception - this Pokémon can't change the zigzag pattern on its belly.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Kecleon alters its body coloration to blend in with its surroundings, allowing it to sneak up on its prey unnoticed. Then it lashes out with its long, stretchy tongue to instantly ensnare the unsuspecting target.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that has the ability to alter its body colors to match its surroundings. A Kecleon reverts to its original colors if it is startled.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It changes body color to blend in with its surroundings. It also changes color if it is happy or sad.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It changes body color to blend in with its surroundings. It also changes color if it is happy or sad.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It changes its shading to match its surroundings so it can sneak up on prey. Only its belly patterns stay fixed.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It changes its shading to match its surroundings so it can sneak up on prey. Only its belly patterns stay fixed.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It changes its shading to match its surroundings so it can sneak up on prey. Only its belly patterns stay fixed.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Kecleon is capable of changing its body colors at will to blend in with its surroundings. There is one exception—this Pokémon can't change the zigzag pattern on its belly.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Kecleon alters its body coloration to blend in with its surroundings, allowing it to sneak up on its prey unnoticed. Then it lashes out with its long, stretchy tongue to instantly ensnare the unsuspecting target.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It changes its hue to blend into its surroundings. If no one takes notice of it for too long, it will pout and never reveal itself.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its color changes for concealment and also when its mood or health changes. The darker the color, the healthier it is.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can freely change its body's color. The zigzag pattern on its belly doesn't change, however.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It changes color to blend in with its surroundings in order to sneak up on prey. It can't make its belly pattern disappear, however.\"\n    }\n  ],\n  \"353\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Shuppet is attracted by feelings of jealousy and vindictiveness. If someone develops strong feelings of vengeance, this Pokémon will appear in a swarm and line up beneath the eaves of that person's home.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Shuppet grows by feeding on dark emotions, such as vengefulness and envy, in the hearts of people. It roams through cities in search of grudges that taint people.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"This Pokémon roams about deep in the night seeking such negative emotions as grudges and envy. It retreats to its nest when the sun begins to rise.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It loves to feed on feelings like envy and malice. Its upright horn catches the emotions of people.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It loves to feed on feelings like envy and malice. Its upright horn catches the emotions of people.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves vengeful emotions and hangs in rows under the eaves of houses where vengeful people live.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It loves vengeful emotions and hangs in rows under the eaves of houses where vengeful people live.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It loves vengeful emotions and hangs in rows under the eaves of houses where vengeful people live.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It uses its horn to feed on envy and malice, or so it's said. It's very active at night.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It uses its horn to feed on envy and malice, or so it's said. It's very active at night.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It loves vengeful emotions and hangs in rows under the eaves of houses where vengeful people live.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It loves vengeful emotions and hangs in rows under the eaves of houses where vengeful people live.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It feeds on the dark emotions of sadness and hatred, which make it grow steadily stronger.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It feeds on the dark emotions of sadness and hatred, which make it grow steadily stronger.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It uses its horn to feed on envy and malice--or so it's said. It's very active at night.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It loves vengeful emotions and hangs in rows under the eaves of houses where vengeful people live.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Shuppet is attracted by feelings of jealousy and vindictiveness. If someone develops strong feelings of vengeance, this Pokémon will appear in a swarm and line up beneath the eaves of that person's home.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Shuppet grows by feeding on dark emotions, such as vengefulness and envy, in the hearts of people. It roams through cities in search of grudges that taint people.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It eats up emotions like malice, jealousy, and resentment, so some people are grateful for its presence.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"There's a proverb that says, \\\"Shun the house where Shuppet gather in the growing dusk.\\\"\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They love vengeful emotions and hang in rows under the eaves of houses where vengeful people live.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They love vengeful emotions and hang in rows under the eaves of houses where vengeful people live.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It loves to feed on feelings like envy and malice. Its upright horn catches the emotions of people.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It feeds on the dark emotions of sadness and hatred, which make it grow steadily stronger.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses its horn to feed on envy and malice—or so it's said. It's very active at night.\"\n    }\n  ],\n  \"354\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Banette generates energy for laying strong curses by sticking pins into its own body. This Pokémon was originally a pitiful plush doll that was thrown away.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"A cursed energy permeated the stuffing of a discarded and forgotten plush doll, giving it new life as Banette. The Pokémon's energy would escape if it were to ever open its mouth.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"An abandoned plush doll became this Pokémon. They are said to live in garbage dumps and wander about in search of the children that threw them away.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Strong feelings of hatred turned a puppet into a Pokémon. If it opens its mouth, its cursed energy escapes.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Strong feelings of hatred turned a puppet into a Pokémon. If it opens its mouth, its cursed energy escapes.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A doll that became a Pokémon over its grudge from being junked. It seeks the child that disowned it.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A doll that became a Pokémon over its grudge from being junked. It seeks the child that disowned it.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A doll that became a Pokémon over its grudge from being junked. It seeks the child that disowned it.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This Pokémon developed from an abandoned doll that amassed a grudge. It is seen in dark alleys.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon developed from an abandoned doll that amassed a grudge. It is seen in dark alleys.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A doll that became a Pokémon over its grudge from being junked. It seeks the child that disowned it.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A doll that became a Pokémon over its grudge from being junked. It seeks the child that disowned it.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A doll that became a Pokémon over its grudge of being thrown away. It seeks the child who disowned it.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A doll that became a Pokémon over its grudge of being thrown away. It seeks the child who disowned it.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A doll that became a Pokémon over its grudge from being junked. It seeks the child that disowned it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Strong feelings of hatred turned a puppet into a Pokémon. If it opens its mouth, its cursed energy escapes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Banette generates energy for laying strong curses by sticking pins into its own body. This Pokémon was originally a pitiful plush doll that was thrown away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"A cursed energy permeated the stuffing of a discarded and forgotten plush doll, giving it new life as Banette. The Pokémon's energy would escape if it were to ever open its mouth.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's a stuffed toy that was thrown away and became possessed, ever searching for the one who threw it away so it can exact its revenge.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Resentment at being cast off made it spring into being. Some say that treating it well will satisfy it, and it will once more become a stuffed toy.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A doll bore a grudge over being junked, and it became a Pokémon. It seeks the child that disowned it.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A doll bore a grudge over being junked, and it became a Pokémon. It seeks the child that disowned it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon developed from an abandoned doll that amassed a grudge. It is seen in dark alleys.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Strong feelings of hatred turned a puppet into a Pokémon. If it opens its mouth, its cursed energy escapes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A doll bore a grudge over being junked, and it became a Pokémon. It seeks the child that disowned it.\"\n    }\n  ],\n  \"355\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"In the dead of night, these Pokémon wander through towns in search of children, whose vital energy is a Duskull's favorite food.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Duskull can pass through any wall no matter how thick it may be. Once this Pokémon chooses a target, it will doggedly pursue the intended victim until the break of dawn.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Duskull wanders lost among the deep darkness of midnight. There is an oft-told admonishment given to misbehaving children that this Pokémon will spirit away bad children who earn scoldings from their mothers.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A glare from its single scarlet eye makes even burly grown-ups freeze in utter fear. It is a nocturnal Pokémon that roams about under the cloak of darkness.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Making itself invisible, it silently sneaks up to prey. It has the ability to slip through thick walls.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Making itself invisible, it silently sneaks up to prey. It has the ability to slip through thick walls.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It doggedly pursues its prey wherever it goes. However, the chase is abandoned at sunrise.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It doggedly pursues its prey wherever it goes. However, the chase is abandoned at sunrise.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It loves the crying of children. It startles bad kids by passing through walls and making them cry.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"If it finds bad children who won't listen to their parents, it will spirit them away--or so it's said.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"If it finds bad children who won't listen to their parents, it will spirit them away--or so it's said.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It loves the crying of children. It startles bad kids by passing through walls and making them cry.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It loves the crying of children. It startles bad kids by passing through walls and making them cry.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It loves the crying of children. It startles bad kids by passing through walls and making them cry.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It loves the crying of children. It startles bad kids by passing through walls and making them cry.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It doggedly pursues its prey wherever it goes. However, the chase is abandoned at sunrise.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it finds bad children who won't listen to their parents, it will spirit them away--or so it's said.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Duskull can pass through any wall no matter how thick it may be. Once this Pokémon chooses a target, it will doggedly pursue the intended victim until the break of dawn.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Duskull wanders lost among the deep darkness of midnight. There is an oft-told admonishment given to misbehaving children that this Pokémon will spirit away bad children who earn scoldings from their mothers.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If it finds bad children who won't listen to their parents, it will spirit them away—or so it's said.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Making itself invisible, it silently sneaks up to prey. It has the ability to slip through thick walls.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It doggedly pursues its prey wherever the prey goes. However, the chase is abandoned at sunrise.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It doggedly pursues its prey wherever the prey goes. However, the chase is abandoned at sunrise.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"I've heard that the children of Hisui all begin to behave once they've been told the story of how this Pokémon roams about before the witching hour to spirit away misbehaving children.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"In the dead of night, these Pokémon wander through towns in search of children, whose vital energy is a Duskull's favorite food.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Duskull's victims suffer an intense chill as the Pokémon siphons their life-force away, glaring at them with its bright red eye all the while.\"\n    }\n  ],\n  \"356\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Dusclops is feared because it's said to pull the soul out of anyone who gazes upon the strange movements of its hands.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Dusclops's body is completely hollow - there is nothing at all inside. It is said that its body is like a black hole. This Pokémon will absorb anything into its body, but nothing will ever come back out.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Dusclops absorbs anything, however large the object may be. This Pokémon hypnotizes its foe by waving its hands in a macabre manner and by bringing its single eye to bear. The hypnotized foe is made to do Dusclops's bidding.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is thought that its body is hollow with only a spectral ball of fire burning inside. However, no one has been able to confirm this theory as fact.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its body is entirely hollow. When it opens its mouth, it sucks everything in as if it were a black hole.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its body is entirely hollow. When it opens its mouth, it sucks everything in as if it were a black hole.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body is hollow. It is said that those who look into its body are sucked into the void.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body is hollow. It is said that those who look into its body are sucked into the void.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It seeks drifting will-o'-the-wisps and sucks them into its empty body. What happens inside is a mystery.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Anyone who dares peer into its body to see its spectral ball of fire will have their spirit stolen away.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Anyone who dares peer into its body to see its spectral ball of fire will have their spirit stolen away.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It seeks drifting will-o'-the-wisps and sucks them into its empty body. What happens inside is a mystery.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It seeks drifting will-o'-the-wisps and sucks them into its empty body. What happens inside is a mystery.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It seeks drifting will-o'-the-wisps and sucks them into its empty body. What happens inside is a mystery.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It seeks drifting will-o'-the-wisps and sucks them into its empty body. What happens inside is a mystery.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Anyone who dares peer into its body to see its spectral ball of fire will have their spirit stolen away.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its body is hollow. It is said that those who look into its body are sucked into the void.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Dusclops's body is completely hollow—there is nothing at all inside. It is said that its body is like a black hole. This Pokémon will absorb anything into its body, but nothing will ever come back out.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Dusclops absorbs anything, however large the object may be. This Pokémon hypnotizes its foe by waving its hands in a macabre manner and by bringing its single eye to bear. The hypnotized foe is made to do Dusclops's bidding.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its body is entirely hollow. When it opens its mouth, it sucks everything in as if it were a black hole.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It seeks drifting will-o'-the-wisps and sucks them into its empty body. What happens inside is a mystery.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body is hollow. It is said that those who look into its body are sucked into the void.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body is hollow. It is said that those who look into its body are sucked into the void.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"There are rumors that peeking inside its bandage-wrapped body will cause one to get pulled in through the gaps between the bandages, never to return. I've been too scared to verify.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Dusclops is feared because it's said to pull the soul out of anyone who gazes upon the strange movements of its hands.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Dusclops's true form is said to be a bright red eye burning within its body, but no one has ever seen such a thing.\"\n    }\n  ],\n  \"357\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The bunches of fruit around Tropius's neck are very popular with children. This Pokémon loves fruit, and eats it continuously. Apparently, its love for fruit resulted in its own outgrowth of fruit.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Children of the southern tropics eat as snacks the fruit that grows in bunches around the neck of Tropius. This Pokémon flies by flapping the leaves on its back as if they were wings.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It flies by flapping its broad leaves. The bunch of fruit that grows around its neck is deliciously sweet. In the spring, it scatters pollen from its neck.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives in tropical jungles. The bunch of fruit around its neck is delicious. The fruit grows twice a year.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It lives in tropical jungles. The bunch of fruit around its neck is delicious. The fruit grows twice a year.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Because it continually ate only its favorite fruit, the fruit started growing around its neck.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Because it continually ate only its favorite fruit, the fruit started growing around its neck.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Delicious fruits grew out from around its neck because it always ate the same kind of fruit.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The bunch of fruit around its neck ripens twice a year and is delicious. It's a highly favored tropical snack.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The bunch of fruit around its neck ripens twice a year and is delicious. It's a highly favored tropical snack.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Delicious fruits grew out from around its neck because it always ate the same kind of fruit.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Delicious fruits grew out from around its neck because it always ate the same kind of fruit.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It flies by flapping its broad leaves and gives the sweet, delicious fruit around its neck to children.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It flies by flapping its broad leaves and gives the sweet, delicious fruit around its neck to children.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It flies by flapping its broad leaves and gives the sweet, delicious fruit around its neck to children.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The bunch of fruit around its neck ripens twice a year and is delicious. It's a highly favored tropical snack.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The bunches of fruit around Tropius's neck are very popular with children. This Pokémon loves fruit, and eats it continuously. Apparently, its love for fruit resulted in its own outgrowth of fruit.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Children of the southern tropics eat as snacks the fruit that grows in bunches around the neck of Tropius. This Pokémon flies by flapping the leaves on its back as if they were wings.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The bunches of fruit growing around the necks of Tropius in Alola are especially sweet compared to those in other regions.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Bunches of delicious fruit grow around its neck. In warm areas, many ranches raise Tropius.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Because it continually ate only its favorite fruit, the fruit started growing around its neck.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Because it continually ate only its favorite fruit, the fruit started growing around its neck.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives in tropical jungles. The bunch of fruit around its neck is delicious. The fruit grows twice a year.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Delicious fruits grew out from around its neck because it always ate the same kind of fruit.\"\n    }\n  ],\n  \"358\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Chimecho makes its cries echo inside its hollow body. When this Pokémon becomes enraged, its cries result in ultrasonic waves that have the power to knock foes flying.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"In high winds, Chimecho cries as it hangs from a tree branch or the eaves of a building using a suction cup on its head. This Pokémon plucks berries with its long tail and eats them.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"They fly about very actively when the hot season arrives. They communicate among themselves using seven different and distinguishing cries.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It travels by riding on winds. It cleverly uses its long tail to pluck nuts and berries, which it loves to eat.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It travels by riding on winds. It cleverly uses its long tail to pluck nuts and berries, which it loves to eat.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"To knock foes flying, it makes the air shudder with its cries. It converses using seven cries.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Emitting ultrasonic cries, it floats on winds to travel great distances.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its cries echo inside its hollow body to emerge as beautiful notes for startling and repelling foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It uses the sucker on its head to hang from a tree or from eaves. It can produce seven different tones.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It uses the sucker on its head to hang from a tree or from eaves. It can produce seven different tones.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its cries echo inside its hollow body to emerge as beautiful notes for startling and repelling foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its cries echo inside its hollow body to emerge as beautiful notes for startling and repelling foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its cries echo inside its hollow body to emerge as beautiful notes for startling and repelling foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its cries echo inside its hollow body to emerge as beautiful notes for startling and repelling foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It uses the sucker on its head to hang from a tree or from eaves. It can produce seven different tones.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Emitting ultrasonic cries, it floats on winds to travel great distances.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Chimecho makes its cries echo inside its hollow body. When this Pokémon becomes enraged, its cries result in ultrasonic waves that have the power to knock foes flying.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In high winds, Chimecho cries as it hangs from a tree branch or the eaves of a building using a suction cup on its head. This Pokémon plucks berries with its long tail and eats them.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"To knock foes flying, it makes the air shudder with its cries. It converses using seven cries.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Chimecho emits ultrasonic cries. It floats on the wind to travel great distances.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Can emit waves of air powerful enough to knock out prey taller than itself. I hypothesize that it amplifies the faint sound of wind within its body.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It uses the sucker on its head to hang from a tree or from eaves. It can produce seven different tones.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its cries echo inside its hollow body to emerge as beautiful notes for startling and repelling foes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Chimecho create air vibrations with their cries to send foes flying. They have seven different types of cries they use to converse with one another.\"\n    }\n  ],\n  \"359\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Because of this Pokémon's ability to detect danger, people mistook Absol as a bringer of doom.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Every time Absol appears before people, it is followed by a disaster such as an earthquake or a tidal wave. As a result, it came to be known as the disaster Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Absol has the ability to foretell the coming of natural disasters. It lives in a harsh, rugged mountain environment. This Pokémon very rarely ventures down from the mountains.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It sharply senses even subtle changes in the sky and the land to predict natural disasters. It is a long-lived Pokémon that has a life-span of 100 years.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It appears when it senses an impending natural disaster. As a result, it was mistaken as a doom-bringer.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It appears when it senses an impending natural disaster. As a result, it was mistaken as a doom-bringer.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It senses coming disasters and appears before people only to warn them of impending danger.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It senses coming disasters and appears before people only to warn them of impending danger.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Rumored to sense disasters with its horn, it became a target. It fled deep into the mountains.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has the ability to foretell natural disasters. Its life span is over a hundred years.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has the ability to foretell natural disasters. Its life span is over a hundred years.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Rumored to sense disasters with its horn, it became a target. It fled deep into the mountains.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Rumored to sense disasters with its horn, it became a target. It fled deep into the mountains.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It appears from deep in the mountains to warn people about upcoming disasters it has sensed with its horn.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It appears from deep in the mountains to warn people about upcoming disasters it has sensed with its horn.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It senses coming disasters and appears before people only to warn them of impending danger.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It appears when it senses an impending natural disaster. As a result, it was mistaken as a doom bringer.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Every time Absol appears before people, it is followed by a disaster such as an earthquake or a tidal wave. As a result, it came to be known as the disaster Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Absol has the ability to foretell the coming of natural disasters. It lives in a harsh, rugged mountain environment. This Pokémon very rarely ventures down from the mountains.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Long ago, superstitions were spread about it, saying it brought disaster. This fed a hatred of it, and it was driven deep into the mountains.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Although it's said to bring disaster, in actuality, this Pokémon possesses a calm disposition and warns people of any crises that loom.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The only thing unlucky about Absol is its appearance. It protects fields and warns people of disaster, so one ought to be grateful for it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The elderly call it the disaster Pokémon and detest it, but interest in its power to predict disasters is on the rise.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Swift as the wind, Absol races through fields and mountains. Its curved, bow-like horn is acutely sensitive to the warning signs of natural disasters.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Because of this Pokémon's ability to detect danger, people mistook Absol as a bringer of doom.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It senses coming disasters and appears before people only to warn them of impending danger.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It senses coming disasters and appears before people only to warn them of impending danger.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It senses coming disasters and appears before people only to warn them of impending danger.\"\n    }\n  ],\n  \"360\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Wynaut can always be seen with a big, happy smile on its face. Look at its tail to determine if it is angry. When angered, this Pokémon will be slapping the ground with its tail.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Wynaut gather on moonlit nights to play by squeezing up against each other. By being squeezed, this Pokémon gains endurance and is trained to dole out powerful counterattacks.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Wynaut loves to eat sweet fruits. It cleverly picks fruits using its earlike arms. They gather in fruit gardens, drawn by the fragrance.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It tends to move in a pack with others. They cluster in a tight group to sleep in a cave.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It tends to move in a pack with others. They cluster in a tight group to sleep in a cave.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It grows strong by pushing up against others en masse. It loves eating sweet fruit.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It grows strong by pushing up against others en masse. It loves eating sweet fruit.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It grows strong by pushing up against others en masse. It loves eating sweet fruit.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It tends to move in a pack. Individuals squash against one another to toughen their spirits.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It tends to move in a pack. Individuals squash against one another to toughen their spirits.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It grows strong by pushing up against others en masse. It loves eating sweet fruit.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It grows strong by pushing up against others en masse. It loves eating sweet fruit.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It grows strong by pushing up against others en masse. It loves eating sweet fruit.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It grows strong by pushing up against others en masse. It loves eating sweet fruit.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It tends to move in a pack with others. They cluster in a tight group to sleep in a cave.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It grows strong by pushing up against others en masse. It loves eating sweet fruit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Wynaut can always be seen with a big, happy smile on its face. Look at its tail to determine if it is angry. When angered, this Pokémon will be slapping the ground with its tail.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Wynaut gather on moonlit nights to play by squeezing up against each other. By being squeezed, this Pokémon gains endurance and is trained to dole out powerful counterattacks.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It tends to move in a pack. Individuals squash against one another to toughen their spirits.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It tends to move in a pack with others. They cluster in a tight group to sleep in a cave.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They grow strong by pushing up against one another en masse. They love eating sweet fruit.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They grow strong by pushing up against one another en masse. They love eating sweet fruit.\"\n    }\n  ],\n  \"361\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Snorunt live in regions with heavy snowfall. In seasons without snow, such as spring and summer, this Pokémon steals away to live quietly among stalactites and stalagmites deep in caverns.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Snorunt survives by eating only snow and ice. Old folklore claims that a house visited by this Pokémon is sure to prosper for many generations to come.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"They tend to move about in groups of around five Snorunt. In snowy regions, it is said that when they are seen late at night, snowfall will arrive by morning.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is said that a home visited by a Snorunt will prosper. It can withstand cold of minus 150 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is said that a home visited by a Snorunt will prosper. It can withstand cold of minus 150 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"In the snow country, certain folklore says a house will prosper if a Snorunt lives there.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"In the snow country, certain folklore says a house will prosper if a Snorunt lives there.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said that several Snorunt gather under giant leaves and live together in harmony.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It's said that if they are seen at midnight, they'll cause heavy snow. They eat snow and ice to survive.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It's said that if they are seen at midnight, they'll cause heavy snow. They eat snow and ice to survive.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said that several Snorunt gather under giant leaves and live together in harmony.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said that several Snorunt gather under giant leaves and live together in harmony.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said that several Snorunt gather under giant leaves and live together in harmony.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said that several Snorunt gather under giant leaves and live together in harmony.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said that several Snorunt gather under giant leaves and live together in harmony.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"In the snow country, certain folklore says a house will prosper if a Snorunt lives there.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Snorunt live in regions with heavy snowfall. In seasons without snow, such as spring and summer, this Pokémon steals away to live quietly among stalactites and stalagmites deep in caverns.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Snorunt survives by eating only snow and ice. Old folklore claims that a house visited by this Pokémon is sure to prosper for many generations to come.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Their numbers seem to have rapidly increased in Alola. Custom has it that houses where Snorunt live will be prosperous for generations to come.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It can only survive in cold areas. It bounces happily around, even in environments as cold as -150 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It feeds mainly on ice and snow. It's only able to survive in a limited number of places in the warm Alola region.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Rich people from cold areas all share childhood memories of playing with Snorunt.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's said that if they are seen at midnight, they'll cause heavy snow. They eat snow and ice to survive.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can only survive in cold areas. It bounces happily around, even in environments as cold as -150 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"In some snowy lands, certain folklore says a house will prosper if a Snorunt lives there.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"In some snowy lands, certain folklore says a house will prosper if a Snorunt lives there.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Arrives alongside the first snow. It's thought that homes Snorunt visit will prosper for many generations. By tradition, one might offer a lump of ice made from pure water at one's front door.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is said that several Snorunt gather under giant leaves and live together in harmony.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is said that a home visited by a Snorunt will prosper. It can withstand cold of -150 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"In some snowy lands, certain folklore says a house will prosper if a Snorunt lives there.\"\n    }\n  ],\n  \"362\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Glalie has a body made of rock, which it hardens with an armor of ice. This Pokémon has the ability to freeze moisture in the atmosphere into any shape it desires.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Glalie has the ability to freely control ice. For example, it can instantly freeze its foe solid. After immobilizing its foe in ice, this Pokémon enjoys eating it in leisurely fashion.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Glalie has the power to instantaneously freeze moisture in the atmosphere. A dazzling cloud of diamondlike ice crystals forms around its body.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has a body of ice that won't melt, even with fire. It can instantly freeze moisture in the atmosphere.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has a body of ice that won't melt, even with fire. It can instantly freeze moisture in the atmosphere.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"To protect itself, it clads its body in an armor of ice, made by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"To protect itself, it clads its body in an armor of ice, made by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It prevents prey from escaping by instantaneously freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can instantly freeze moisture in the atmosphere. It uses this power to freeze its foes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It can instantly freeze moisture in the atmosphere. It uses this power to freeze its foes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It prevents prey from escaping by instantaneously freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It prevents prey from escaping by instantaneously freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It prevents prey from escaping by instantaneously freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It prevents prey from escaping by instantaneously freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"To protect itself, it clad its body in an armor of ice, made by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can instantly freeze moisture in the atmosphere. It uses this power to freeze its foes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Glalie has a body made of rock, which it hardens with an armor of ice. This Pokémon has the ability to freeze moisture in the atmosphere into any shape it desires.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Glalie has the ability to freely control ice. For example, it can instantly freeze its prey solid. After immobilizing its prey in ice, this Pokémon enjoys eating it in leisurely fashion.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Legend says a boulder on an icy mountain absorbed the distress and regrets of a stranded mountaineer, giving rise to Glalie.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its prey is instantaneously frozen stiff by the cold air it exhales from its huge mouth. While they're in that frozen state, it gobbles them up.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It freezes its prey and chews them whole. However, it prefers to eat Pokémon like Vanillite that are already frozen.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its actual body is a rock that isn't particularly hard. Glalie absorbs moisture from the air and drapes itself in an armor of ice.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has a body of ice that won't melt, even with fire. It can instantly freeze moisture in the atmosphere.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can instantly freeze moisture in the atmosphere. It uses this power to freeze its foes.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"To protect itself, it clad its body in an armor of ice, made by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"To protect itself, it clad its body in an armor of ice, made by freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It covers its body with an armor of ice harder than steel. Uses its breath to freeze prey, which it then devours as if they were frozen desserts.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its prey is instantaneously frozen stiff by the cold air it exhales from its huge mouth. While they're in that frozen state, it gobbles them up.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It prevents prey from escaping by instantaneously freezing moisture in the air.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"To protect itself, it clad its body in an armor of ice, made by freezing moisture in the air.\"\n    }\n  ],\n  \"363\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Spheal is much faster rolling than walking to get around. When groups of this Pokémon eat, they all clap at once to show their pleasure. Because of this, their mealtimes are noisy.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Spheal always travels by rolling around on its ball-like body. When the season for ice floes arrives, this Pokémon can be seen rolling about on ice and crossing the sea.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It is completely covered with plushy fur. As a result, it never feels the cold even when it is rolling about on ice floes or diving in the sea.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its body is covered in fluffy fur. The fur keeps it from feeling cold while it is rolling on ice.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its body is covered in fluffy fur. The fur keeps it from feeling cold while it is rolling on ice.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It rolls across ice floes to reach shore because its body is poorly shaped for swimming.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It rolls across ice floes to reach shore because its body is poorly shaped for swimming.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It rolls across ice floes to reach shore because its body is poorly shaped for swimming.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It crosses the oceans by rolling itself on drifting ice. Fluffy fur keeps it warm when the temperature is below freezing.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It crosses the oceans by rolling itself on drifting ice. Fluffy fur keeps it warm when the temperature is below freezing.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It rolls across ice floes to reach shore because its body is poorly shaped for swimming.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It rolls across ice floes to reach shore because its body is poorly shaped for swimming.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They can't swim well yet, and they move much faster by rolling. When they're happy, they clap fins.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They can't swim well yet, and they move much faster by rolling. When they're happy, they clap fins.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They can't swim well yet, and they move much faster by rolling. When they're happy, they clap fins.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its body is covered in fluffy fur. The fur keeps it from feeling cold while it is rolling on ice.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Spheal is much faster rolling than walking to get around. When groups of this Pokémon eat, they all clap at once to show their pleasure. Because of this, their mealtimes are noisy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Spheal always travels by rolling around on its ball-like body. When the season for ice floes arrives, this Pokémon can be seen rolling about on ice and crossing the sea.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon's body is covered in blubber and impressively round. It's faster for Spheal to roll around than walk.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"As it drifts among the waves, Spheal probes the sea. As soon as it spots prey, it informs the Walrein in its herd.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It rolls across ice floes to reach shore because its body is poorly shaped for swimming.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It rolls across ice floes to reach shore because its body is poorly shaped for swimming.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"During the season when drift ice approaches the shore, Spheal prefers living on the ice—where fewer predators lurk—rather than the land. Its fur retains heat superbly and resists harsh cold.\"\n    }\n  ],\n  \"364\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Sealeo has the habit of always juggling on the tip of its nose anything it sees for the first time. This Pokémon occasionally entertains itself by balancing and rolling a Spheal on its nose.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Sealeo often balances and rolls things on the tip of its nose. While the Pokémon is rolling something, it checks the object's aroma and texture to determine whether it likes the object or not.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Sealeo live in herds on ice floes. Using its powerful flippers, it shatters ice. It dives into the sea to hunt prey five times a day.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It touches new things with its nose to test for smell and feel. It plays by spinning Spheal on its nose.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It touches new things with its nose to test for smell and feel. It plays by spinning Spheal on its nose.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It habitually spins things on its nose. By doing so, it learns textures and odors.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It habitually spins things on its nose. By doing so, it learns textures and odors.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It habitually spins things on its nose. By doing so, it learns textures and odors.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It has a very sensitive nose. It touches new things with its nose to examine them.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has a very sensitive nose. It touches new things with its nose to examine them.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It habitually spins things on its nose. By doing so, it learns textures and odors.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It habitually spins things on its nose. By doing so, it learns textures and odors.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Be it Spheal or Poké Ball, it will spin any round object on its nose with the greatest of ease.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Be it Spheal or Poké Ball, it will spin any round object on its nose with the greatest of ease.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a very sensitive nose. It touches new things with its nose to examine them.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Be it Spheal or Poké Ball, it will spin any round object on its nose with the greatest of ease.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sealeo has the habit of always juggling on the tip of its nose anything it sees for the first time. This Pokémon occasionally entertains itself by balancing and rolling a Spheal on its nose.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Sealeo often balances and rolls things on the tip of its nose. While the Pokémon is rolling something, it checks the object's aroma and texture to determine whether it likes the object or not.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Sealeo live on top of drift ice. They go swimming when they're on the hunt, seeking out their prey by scent.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon has a habit of spinning round things on its nose, whether those things are Poké Balls or Spheal.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It habitually spins things on its nose. By doing so, it learns textures and odors.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It habitually spins things on its nose. By doing so, it learns textures and odors.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its white whiskers are very sensitive. Sealeo will balance Spheal on the tip of its nose, checking its scent and its feel to be sure the Spheal is healthy.\"\n    }\n  ],\n  \"365\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Walrein's two massively developed tusks can totally shatter blocks of ice weighing ten tons with one blow. This Pokémon's thick coat of blubber insulates it from subzero temperatures.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Walrein swims all over in frigid seawater while crushing icebergs with its grand, imposing tusks. Its thick layer of blubber makes enemy attacks bounce off harmlessly.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"To protect its herd, the leader battles anything that invades its territory, even at the cost of its life. Its tusks may snap off in battle.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It swims through icy seas while shattering ice floes with its large tusks. It is protected by its thick blubber.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It swims through icy seas while shattering ice floes with its large tusks. It is protected by its thick blubber.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It shatters ice with its big tusks. Its thick blubber repels not only the cold, but also enemy attacks.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It shatters ice with its big tusks. Its thick blubber repels not only the cold, but also enemy attacks.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It shatters ice with its big tusks. Its thick blubber repels not only the cold, but also enemy attacks.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It shatters drift ice with its strong tusks. Its thick layer of blubber repels enemy attacks.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It shatters drift ice with its strong tusks. Its thick layer of blubber repels enemy attacks.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It shatters ice with its big tusks. Its thick blubber repels not only the cold, but also enemy attacks.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It shatters ice with its big tusks. Its thick blubber repels not only the cold, but also enemy attacks.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Not only does its thick blubber keep it warm, it also protects it from attacks. It shatters ice with its prized tusks.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Not only does its thick blubber keep it warm, it also protects it from attacks. It shatters ice with its prized tusks.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It shatters ice with its big tusks. Its thick blubber repels not only the cold, but also enemy attacks.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It shatters drift ice with its strong tusks. Its thick layer of blubber repels enemy attacks.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Walrein's two massively developed tusks can totally shatter blocks of ice weighing 10 tons with one blow. This Pokémon's thick coat of blubber insulates it from subzero temperatures.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Walrein swims all over in frigid seawater while crushing icebergs with its grand, imposing tusks. Its thick layer of blubber makes enemy attacks bounce off harmlessly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Walrein form herds of 20 to 30 individuals. When a threat appears, the herd's leader will protect the group with its life.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Walrein's tusks keep growing throughout its life. Tusks broken in battle will grow back to their usual impressive size in a year.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It shatters ice with its big tusks. Its thick blubber repels not only the cold but also enemy attacks.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It shatters ice with its big tusks. Its thick blubber repels not only the cold but also enemy attacks.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its thick tusks are strong enough to shatter drift ice. They have been known to break, but they will grow back by the next year. The Hisui region is well known for these broken tusks.\"\n    }\n  ],\n  \"366\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Clamperl's sturdy shell is not only good for protection - it is also used for clamping and catching prey. A fully grown Clamperl's shell will be scored with nicks and scratches all over.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Clamperl grows while being protected by its rock-hard shell. When its body becomes too large to fit inside the shell, it is sure evidence that this Pokémon is getting close to evolution.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Clamperl slams its shell closed on prey to prevent escape. The pearl it creates upon evolution is said to be infused with a mysterious energy.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is protected by a sturdy shell. Once in a lifetime, it makes a magnificent pearl.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is protected by a sturdy shell. Once in a lifetime, it makes a magnificent pearl.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It makes a single pearl during its lifetime. The pearl is said to amplify psychic power.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It makes a single pearl during its lifetime. The pearl is said to amplify psychic power.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It makes a single pearl during its lifetime. The pearl is said to amplify psychic power.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it evolves, it makes a mysterious pearl that amplifies psychic powers when it's held.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it evolves, it makes a mysterious pearl that amplifies psychic powers when it's held.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It makes a single pearl during its lifetime. The pearl is said to amplify psychic power.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It makes a single pearl during its lifetime. The pearl is said to amplify psychic power.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It makes a single pearl during its lifetime. The pearl is said to amplify psychic power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It makes a single pearl during its lifetime. The pearl is said to amplify psychic power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When it evolves, it makes a mysterious pearl that amplifies psychic powers when it's held.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is protected by a sturdy shell. Once in a lifetime, it makes a magnificent pearl.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Clamperl's sturdy shell is not only good for protection—it is also used for clamping and catching prey. A fully grown Clamperl's shell will be scored with nicks and scratches all over.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Clamperl grows while being protected by its rock-hard shell. When its body becomes too large to fit inside the shell, it is sure evidence that this Pokémon is getting close to evolution.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Despite its appearance, it's carnivorous. It clamps down on its prey with both sides of its shell and doesn't let go until they stop moving.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Clamperl's pearls are exceedingly precious. They can be more than 10 times as costly as Shellder's pearls.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It makes a single pearl during its lifetime. The pearl is said to amplify psychic power.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It makes a single pearl during its lifetime. The pearl is said to amplify psychic power.\"\n    }\n  ],\n  \"367\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Huntail's presence went unnoticed by people for a long time because it lives at extreme depths in the sea. This Pokémon's eyes can see clearly even in the murky dark depths of the ocean.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Huntail's tail is shaped like a fish. It uses the tail to attract prey, then swallows the prey whole with its large, gaping mouth. This Pokémon swims by wiggling its slender body like a snake.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"To withstand the crushing pressure of water deep under the sea, its spine is very thick and sturdy. Its tail, which is shaped like a small fish, has eyes that light up.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It lives deep in the sea where no light ever filters down. It lights up its small fishlike tail to attract prey.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It lives deep in the sea where no light ever filters down. It lights up its small fishlike tail to attract prey.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives deep in the pitch-dark sea. It attracts prey by moving its tail in mimicry of a small animal.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives deep in the pitch-dark sea. It attracts prey by moving its tail in mimicry of a small animal.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives deep in the sea where no light ever filters down. It lights up its small fishlike tail to attract prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Huntail's presence went unnoticed by people for a long time because it lives at extreme depths in the sea. This Pokémon's eyes can see clearly even in the murky dark depths of the ocean.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Huntail's tail is shaped like a fish. It uses the tail to attract prey, then swallows the prey whole with its large, gaping mouth. This Pokémon swims by wiggling its slender body like a snake.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's not the strongest swimmer. It wags its tail to lure in its prey and then gulps them down as soon as they get close.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Deep seas are their habitat. According to tradition, when Huntail wash up onshore, something unfortunate will happen.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives deep in the sea. With a tail shaped like a small fish, it attracts unsuspecting prey.\"\n    }\n  ],\n  \"368\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Gorebyss lives in the southern seas at extreme depths. Its body is built to withstand the enormous pressure of water at incredible depths. Because of this, this Pokémon's body is unharmed by ordinary attacks.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Although Gorebyss is the very picture of elegance and beauty while swimming, it is also cruel. When it spots prey, this Pokémon inserts its thin mouth into the prey's body and drains the prey of its body fluids.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Gorebyss siphons the body fluids of prey through its thin, tubular mouth. Its light pink body color turns vivid when it finishes feeding.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its swimming form is exquisitely elegant. With its thin mouth, it feeds on seaweed that grows between rocks.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its swimming form is exquisitely elegant. With its thin mouth, it feeds on seaweed that grows between rocks.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its pink body becomes more vivid with the rise of water temperatures in the springtime.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its pink body becomes more vivid with the rise of water temperatures in the springtime.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its swimming form is exquisitely elegant. With its thin mouth, it feeds on seaweed that grows between rocks.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Gorebyss lives in the southern seas at extreme depths. Its body is built to withstand the enormous pressure of water at incredible depths. Because of this, this Pokémon's body is unharmed by ordinary attacks.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Although Gorebyss is the very picture of elegance and beauty while swimming, it is also cruel. When it spots prey, this Pokémon inserts its thin mouth into the prey's body and drains the prey of its body fluids.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The color of its body changes with the water temperature. The coloration of Gorebyss in Alola is almost blindingly vivid.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It sucks bodily fluids out of its prey. The leftover meat sinks to the seafloor, where it becomes food for other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives at the bottom of the sea. In the springtime, its pink body turns more vivid for some reason.\"\n    }\n  ],\n  \"369\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Relicanth is a Pokémon species that existed for a hundred million years without ever changing its form. This ancient Pokémon feeds on microscopic organisms with its toothless mouth.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Relicanth is a rare species that was discovered in deep-sea explorations. This Pokémon's body withstands the enormous water pressure of the ocean depths. Its body is covered in tough scales that are like craggy rocks.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that was once believed to have been extinct. The species has not changed its form for 100 million years. It walks on the seafloor using its pectoral fins.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has remained unchanged for 100 million years. It was discovered during a deep-sea exploration.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has remained unchanged for 100 million years. It was discovered during a deep-sea exploration.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A rare Pokémon discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A rare Pokémon discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A rare Pokémon discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Discovered by chance during deep-sea explorations, it has not changed since ancient times.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Discovered by chance during deep-sea explorations, it has not changed since ancient times.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A rare Pokémon discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A rare Pokémon discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A rare Pokémon discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A rare Pokémon discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has remained unchanged for 100 million years. It was discovered during a deep-sea exploration.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A rare Pokémon discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Relicanth is a Pokémon species that existed for a hundred million years without ever changing its form. This ancient Pokémon feeds on microscopic organisms with its toothless mouth.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Relicanth is a rare species that was discovered in deep-sea explorations. This Pokémon's body withstands the enormous water pressure of the ocean depths. Its body is covered in tough scales that are like craggy rocks.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its form has remained the same for one hundred million years. Its body is filled with fat, so it can withstand the water pressure of the deep sea.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It was fortuitously discovered during a deep sea expedition. Its teeth have atrophied, so it now survives on microscopic organisms it sucks up.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Thought to have gone extinct, Relicanth was given a name that is a variation of the name of the person who discovered it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The reason it hasn't changed at all in a hundred million years is that it's apparently already a perfect life-form.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Rock-hard scales and oil-filled swim bladders allow this Pokémon to survive the intense water pressure of the deep sea.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon was discovered during deep-sea exploration. Its appearance hasn't changed in 100,000,000 years, so it's called a living fossil.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"This rare Pokémon was discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This rare Pokémon was discovered during a deep-sea exploration. It has not changed in over 100 million years.\"\n    }\n  ],\n  \"370\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Luvdisc live in shallow seas in the tropics. This heart-shaped Pokémon earned its name by swimming after loving couples it spotted in the ocean's waves.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Luvdisc's heart-shaped body is a symbol of love and romance. It is said that any couple meeting this Pokémon is promised a loving relationship that never ends.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Luvdisc make the branches of Corsola their nests. There is a custom from long ago of giving a Luvdisc as a gift to express one's feelings of love.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"During the spawning season, countless Luvdisc congregate at coral reefs, turning the waters pink.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"During the spawning season, countless Luvdisc congregate at coral reefs, turning the waters pink.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in warm seas. It is said that a couple finding this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives in warm seas. It is said that a couple finding this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives in warm seas. It is said that a couple finding this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its heart-shaped body makes it popular. In some places, you would give a Luvdisc to someone you love.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its heart-shaped body makes it popular. In some places, you would give a Luvdisc to someone you love.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives in warm seas. It is said that a couple finding this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives in warm seas. It is said that a couple finding this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives in warm seas. It is said that a couple finding this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives in warm seas. It is said that a couple finding this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives in warm seas. It is said that a couple finding this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"During the spawning season, countless Luvdisc congregate at coral reefs, turning the waters pink.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Luvdisc live in shallow seas in the tropics. This heart-shaped Pokémon earned its name by swimming after loving couples it spotted in the ocean's waves.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Luvdisc's heart-shaped body is a symbol of love and romance. It is said that any couple meeting this Pokémon is promised a loving relationship that never ends.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"If a Luvdisc is left on its own, it becomes despondent, leaving itself open to attack. That is when Pelipper snatch them up.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Loving couples have a soft spot for this Pokémon, so honeymoon hotels often release this Pokémon into their pools.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"There was an era when it was overfished due to the rumor that having one of its heart-shaped scales would enable you to find a sweetheart.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Luvdisc makes its home in coral reefs in warm seas. It especially likes sleeping in the space between Corsola's branches.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in warm seas. It is said that couples who find this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives in warm seas. It is said that couples who find this Pokémon will be blessed with eternal love.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its heart-shaped body makes it popular. In some places, you would give a Luvdisc to someone you love.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"During the spawning season, countless Luvdisc congregate at coral reefs, turning the waters pink.\"\n    }\n  ],\n  \"371\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Bagon has a dream of one day soaring in the sky. In doomed efforts to fly, this Pokémon hurls itself off cliffs. As a result of its dives, its head has grown tough and as hard as tempered steel.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Bagon harbors a never-ending dream of one day soaring high among the clouds. As if trying to dispel its frustration over its inability to fly, this Pokémon slams its hard head against huge rocks and shatters them into pebbles.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Although it is small, this Pokémon is very powerful because its body is a bundle of muscles. It launches head-butts with its ironlike skull.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its steel-hard head can shatter boulders. It longingly hopes for wings to grow so it can fly.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its steel-hard head can shatter boulders. It longingly hopes for wings to grow so it can fly.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its well-developed neck muscles and ironlike head can smash boulders into pieces.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its well-developed neck muscles and ironlike head can smash boulders into pieces.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its well-developed neck muscles and iron-like head can smash boulders into pieces.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Bagon has a dream of one day soaring in the sky. In doomed efforts to fly, this Pokémon hurls itself off cliffs. As a result of its dives, its head has grown tough and as hard as tempered steel.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Bagon harbors a never-ending dream of one day soaring high among the clouds. As if trying to dispel its frustration over its inability to fly, this Pokémon slams its hard head against huge rocks and shatters them into pebbles.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its belief that it will be able to fly one day is apparently the influence of information carried in its genes.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"With its steel-hard stone head, it headbutts indiscriminately. This is because of the stress it feels at being unable to fly.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Whenever it sees bird Pokémon flying through the sky, it becomes envious and smashes its surroundings to bits with headbutts.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Some theories suggest that its behavior of forcefully bashing its head into things stimulates cells that affect its evolution.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Bagon jumps off cliffs every day, trying to grow stronger so that someday it will be able to fly.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Bagon is a solitary Pokémon that doesn't form groups with others of its kind. It also has a head hard enough to cleave a boulder in one strike.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Dreaming of one day flying, it practices by leaping off cliffs every day.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its steel-hard head can shatter boulders. It longingly hopes for wings to grow so it can fly.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its belief that it will be able to fly one day is apparently the influence of information carried in its genes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its well-developed neck muscles and ironlike head can smash boulders into pieces.\"\n    }\n  ],\n  \"372\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Inside Shelgon's armor-like shell, cells are in the midst of transformation to create an entirely new body. This Pokémon's shell is extremely heavy, making its movements sluggish.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Covering Shelgon's body are outgrowths much like bones. The shell is very hard and bounces off enemy attacks. When awaiting evolution, this Pokémon hides away in a cavern.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"It hardly eats while it awaits evolution. It becomes hardier by enduring hunger. Its shell peels off the instant it begins to evolve.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Its armored body makes all attacks bounce off. The armor is too tough, however, making it heavy and somewhat sluggish.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Its armored body makes all attacks bounce off. The armor is too tough, however, making it heavy and somewhat sluggish.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant it evolves.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant it evolves.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant it evolves.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It surrounds its body in an iron-hard shell to accumulate enough power to evolve.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It surrounds its body in an iron-hard shell to accumulate enough power to evolve.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant it evolves.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant it evolves.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant it evolves.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant it evolves.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant it evolves.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its armored body makes all attacks bounce off. The armor is too tough, however, making it heavy and somewhat sluggish.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Inside Shelgon's armor-like shell, cells are in the midst of transformation to create an entirely new body. This Pokémon's shell is extremely heavy, making its movements sluggish.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Covering Shelgon's body are outgrowths much like bones. The shell is very hard and bounces off enemy attacks. When awaiting evolution, this Pokémon hides away in a cavern.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The cells within its shell transform with explosive speed, preparing it for evolution.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They lurk deep within caves—motionless, neither eating nor drinking. Why they don't die is not known.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The cells within its body are changing at a bewildering pace. Its hard shell is made from the same substance as bone.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Shelgon lives deep within caves. It stays shut up in its hard shell, dreaming of the day it will be able to fly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon has covered its body in a hard shell that has the same composition as bone. Shelgon stores energy for evolution.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Shelgon ignores its hunger entirely, never eating any food. Apparently, Shelgon will evolve once all its energy stores are used up.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant the Pokémon evolves.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant the Pokémon evolves.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The cells within its shell transform with explosive speed, preparing it for evolution.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its armored body makes all attacks bounce off. The armor is too tough, however, making it heavy and somewhat sluggish.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant the Pokémon evolves.\"\n    }\n  ],\n  \"373\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Salamence came about as a result of a strong, long-held dream of growing wings. It is said that this powerful desire triggered a sudden mutation in this Pokémon's cells, causing it to sprout its magnificent wings.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"By evolving into Salamence, this Pokémon finally realizes its long-held dream of growing wings. To express its joy, it flies and wheels all over the sky while spouting flames from its mouth.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"After many long years, its cellular structure underwent a sudden mutation to grow wings. When angered, it loses all thought and rampages out of control.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It becomes uncontrollable if it is enraged. It destroys everything with shredding claws and fire.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It becomes uncontrollable if it is enraged. It destroys everything with shredding claws and fire.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"As a result of its long-held dream of flying, its cellular structure changed, and wings grew out.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"As a result of its long-held dream of flying, its cellular structure changed, and wings grew out.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"As a result of its long-held dream of flying, its cellular structure changed, and wings grew out.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It's uncontrollable if enraged. It flies around spouting flames and scorching fields and mountains.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It's uncontrollable if enraged. It flies around spouting flames and scorching fields and mountains.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"As a result of its long-held dream of flying, its cellular structure changed, and wings grew out.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"As a result of its long-held dream of flying, its cellular structure changed, and wings grew out.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"As a result of its long-held dream of flying, its cellular structure changed, and wings grew out.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"As a result of its long-held dream of flying, its cellular structure changed, and wings grew out.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It becomes uncontrollable if it is enraged. It destroys everything with shredding claws and fire.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It's uncontrollable if enraged. It flies around spouting flames and scorching fields and mountains.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Salamence came about as a result of a strong, long-held dream of growing wings. It is said that this powerful desire triggered a sudden mutation in this Pokémon's cells, causing it to sprout its magnificent wings.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"By evolving into Salamence, this Pokémon finally realizes its long-held dream of growing wings. To express its joy, it flies and wheels all over the sky while spouting flames from its mouth.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When angered, it loses all sense of itself and destroys everything around it. The destruction will continue until Salamence has tired itself out.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It flies around on its wings, which have grown in at last. In its happiness, it gushes hot flames, burning up the fields it passes over.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Overjoyed at finally being able to fly, it flies all over the place and usually doesn't land until it's completely exhausted and needs to sleep.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Thanks to its fervent wishes, the cells in its body finally mutated, and at last it has its heart's desire—wings.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Salamence is an unusual Pokémon in that it was able to evolve a body with wings just by constantly wishing to be able to fly.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While basking in the joy of flight generally keeps this Pokémon in high spirits, Salamence turns into an uncontrollable menace if something angers it.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"As a result of its long-held dream of flying, its cellular structure changed, and wings grew out.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"As a result of its long-held dream of flying, its cellular structure changed, and wings grew out.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It flies around on its wings, which have grown in at last. In its happiness, it gushes hot flames, burning up everything it passes over.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It becomes uncontrollable if it is enraged. It destroys everything with shredding claws and fire.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It's uncontrollable if enraged. It flies around spouting flames, scorching fields and mountains.\"\n    }\n  ],\n  \"374\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The magnetic force generated by its body repels the ground's natural magnetism, letting it float.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Instead of blood, a powerful magnetic force courses throughout Beldum's body. This Pokémon communicates with others by sending controlled pulses of magnetism.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Beldum keeps itself floating by generating a magnetic force that repels earth's natural magnetism. When it sleeps, this Pokémon anchors itself to a cliff using the hooks on its rear.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"When Beldum gather in a swarm, they move in perfect unison as if they were but one Pokémon. They communicate with each other using brain waves.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It uses magnetic waves to converse with its kind. All the cells in its body are magnetic.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It uses magnetic waves to converse with its kind. All the cells in its body are magnetic.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It converses with others by using magnetic pulses. In a swarm, they move in perfect unison.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It converses with others by using magnetic pulses. In a swarm, they move in perfect unison.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It converses with others by using magnetic pulses. In a swarm, they move in perfect unison.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The magnetic force generated by its body repels the ground's natural magnetism, letting it float.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The magnetic force generated by its body repels the ground's natural magnetism, letting it float.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It converses with others by using magnetic pulses. In a swarm, they move in perfect unison.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It converses with others by using magnetic pulses. In a swarm, they move in perfect unison.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its cells are all magnetic, and it communicates with others by using magnetic pulses.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its cells are all magnetic, and it communicates with others by using magnetic pulses.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The magnetic force generated by its body repels the ground's natural magnetism, letting it float.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It converses with others by using magnetic pulses. In a swarm, they move in perfect unison.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Instead of blood, a powerful magnetic force courses throughout Beldum's body. This Pokémon communicates with others by sending controlled pulses of magnetism.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Beldum keeps itself floating by generating a magnetic force that repels earth's natural magnetism. When it sleeps, this Pokémon anchors itself to a cliff using the hooks on its rear.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its cells are all magnets. It uses magnetism to communicate with others of its kind.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"With magnetic traction, it pulls its opponents in close. When they're in range, it slashes them with its rear claws.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Instead of blood, magnetism flows through its body. When it's feeling bad, try giving it a magnet.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"If you anger it, it will do more than rampage. It will also burst out strong magnetism, causing nearby machines to break.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"From its rear, Beldum emits a magnetic force that rapidly pulls opponents in. They get skewered on Beldum's sharp claws.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The cells in this Pokémon's body are composed of magnetic material. Instead of blood, magnetic forces flow through Beldum's body.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They converse with one another by using magnetic pulses. In a swarm, they move in perfect unison.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They converse with one another by using magnetic pulses. In a swarm, they move in perfect unison.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The magnetic force generated by its body repels the ground's natural magnetism, letting it float.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"All its cells are magnets. It communicates with others of its kind by transmitting magnetic forces from its body.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They communicate with one another by using magnetic pulses. In a swarm, they move in perfect unison.\"\n    }\n  ],\n  \"375\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its two brains are linked, amplifying its psychic power.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"When two Beldum fuse together, Metang is formed. The brains of the Beldum are joined by a magnetic nervous system. By linking its brains magnetically, this Pokémon generates strong psychokinetic power.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"When two Beldum fuse together, Metang is formed. The brains of the Beldum are joined by a magnetic nervous system. This Pokémon turns its arms to the rear for traveling at high speed.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"The claws tipping its arms pack the destructive power to tear through thick iron sheets as if they were silk. It flies at over 60 miles per hour.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It floats midair using magnetism. Its body is so tough, even a crash with a jet plane won't leave a scratch.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It floats midair using magnetism. Its body is so tough, even a crash with a jet plane won't leave a scratch.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is formed by two BELDUM joining together. Its steel body won't be scratched if it collides with a jet.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is formed by two BELDUM joining together. Its steel body won't be scratched if it collides with a jet.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is formed by two BELDUM joining together. Its steel body won't be scratched if it collides with a jet.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When two Beldum fuse together, a magnetic nervous system places their brains in union.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When two Beldum fuse together, a magnetic nervous system places their brains in union.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its steel body won't be scratched if it collides with a jet.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its steel body won't be scratched if it collides with a jet.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its two brains are linked, amplifying its psychic power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its two brains are linked, amplifying its psychic power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its steel body won't be scratched if it collides with a jet.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its two brains are linked, amplifying its psychic power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When two Beldum fuse together, Metang is formed. The brains of the Beldum are joined by a magnetic nervous system. By linking its brains magnetically, this Pokémon generates strong psychokinetic power.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When two Beldum fuse together, Metang is formed. The brains of the Beldum are joined by a magnetic nervous system. This Pokémon turns its arms to the rear for traveling at high speed.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When two Beldum link together, their psychic power is doubled. Their intelligence, however, remains unchanged.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It adores magnetic minerals, so it pursues Nosepass at speeds exceeding 60 mph.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"With its two brains, it fires powerful psychic energy to stop its prey in their tracks.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It flies at high speeds around the skies. When it finds its prey, Metang takes a firm grip with its sharp claws and never lets go.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Two Beldum have become stuck together via their own magnetic forces. With two brains, the resulting Metang has doubled psychic powers.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Using magnetic forces to stay aloft, this Pokémon flies at high speeds, weaving through harsh mountain terrain in pursuit of prey.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its steel body won't be scratched if it collides with a jet.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its steel body won't be scratched if it collides with a jet.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its two brains are linked, amplifying its psychic power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It adores magnetic minerals, so it pursues Nosepass at speeds exceeding 60 mph.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It is formed by two Beldum joining together. Its steel body won't be scratched if it collides with a jet.\"\n    }\n  ],\n  \"376\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It firmly pins its prey using its four claws and large body. Then Metagross uses the mouth on its stomach to chew its prey to bits.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Metagross has four brains in total. Combined, the four brains can breeze through difficult calculations faster than a supercomputer. This Pokémon can float in the air by tucking in its four legs.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Metagross is the result of two Metang achieving fusion. When hunting, this Pokémon pins the prey to the ground under its massive body. It then eats the helpless victim using the large mouth on its stomach.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Metagross has four brains that are joined by a complex neural network. As a result of integration, this Pokémon is smarter than a supercomputer.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is formed by two Metang fusing. Its four brains are said to be superior to a supercomputer.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is formed by two Metang fusing. Its four brains are said to be superior to a supercomputer.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"METANG combined to form it. With four brains, it has the intelligence of a supercomputer.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"METANG combined to form it. With four brains, it has the intelligence of a supercomputer.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"METANG combined to form it. With four brains, it has the intelligence of a supercomputer.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It folds its four legs when flying. Its four brains are said to be superior to a supercomputer.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It folds its four legs when flying. Its four brains are said to be superior to a supercomputer.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Metang combined to form it. With four brains, it has the intelligence of a supercomputer.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Metang combined to form it. With four brains, it has the intelligence of a supercomputer.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"With four linked brains, it's more intelligent than a supercomputer, and it uses calculations to analyze foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"With four linked brains, it's more intelligent than a supercomputer, and it uses calculations to analyze foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"With four linked brains, it's more intelligent than a supercomputer, and it uses calculations to analyze foes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Metang combined to form it. With four brains, it has the intelligence of a supercomputer.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Metagross has four brains in total. Combined, the four brains can breeze through difficult calculations faster than a supercomputer. This Pokémon can float in the air by tucking in its four legs.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Metagross is the result of two Metang achieving fusion. When hunting, this Pokémon pins the prey to the ground under its massive body. It then eats the helpless victim using the large mouth on its stomach.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It firmly pins its prey using its four claws and large body. Then the teeth in the mouth on its stomach chew the prey to bits.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"A linkage of two Metang, this Pokémon can perform any calculation in a flash by utilizing parallel processing in its four brains.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It boasts not only psychic powers but also fantastic strength. It grabs its prey with its four legs and holds them in place with its claws.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It analyzes its opponents with more accuracy than a supercomputer, which enables it to calmly back them into a corner.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Because the magnetic powers of these Pokémon get stronger in freezing temperatures, Metagross living on snowy mountains are full of energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Metagross is the result of the fusion of two Metang. This Pokémon defeats its opponents through use of its supercomputer-level brain.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Metang combined to form it. With four brains, it has the intelligence of a supercomputer.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Metang combined to form it. With four brains, it has the intelligence of a supercomputer.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It folds its four legs when flying. Its four brains are said to be superior to a supercomputer.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It firmly pins its prey using its four claws and large body. Then Metagross uses the mouth on its stomach to chew its prey to bits.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Metang combined to form it. With four brains, it has the intelligence of a supercomputer.\"\n    }\n  ],\n  \"377\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Regirock was sealed away by people long ago. If this Pokémon's body is damaged in battle, it is said to seek out suitable rocks on its own to repair itself.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Regirock's body is composed entirely of rocks. Recently, a study made the startling discovery that the rocks were all unearthed from different locations.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that is made entirely of rocks and boulders. If parts of its body chip off in battle, Regirock repairs itself by adding new rocks.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is entirely composed of rocks with no sign of a brain or heart. It is a mystery even to modern scientists.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is entirely composed of rocks with no sign of a brain or heart. It is a mystery even to modern scientists.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, it attaches rocks to repair itself.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, it attaches rocks to repair itself.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, it attaches rocks to repair itself.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The same rocks that form its body have been found in ground layers around the world.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The same rocks that form its body have been found in ground layers around the world.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, it attaches rocks to repair itself.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, it attaches rocks to repair itself.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, it attaches rocks to repair itself.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, it attaches rocks to repair itself.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, it attaches rocks to repair itself.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The same rocks that form its body have been found in ground layers around the world.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Regirock was sealed away by people long ago. If this Pokémon's body is damaged in battle, it is said to seek out suitable rocks on its own to repair itself.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Regirock's body is composed entirely of rocks. Recently, a study made the startling discovery that the rocks were all unearthed from different locations.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Every bit of Regirock's body is made of stone. As parts of its body erode, this Pokémon sticks rocks to itself to repair what's been lost.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Cutting-edge technology was used to study the internals of this Pokémon's rock body, but nothing was found—not even a brain or a heart.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, Regirock attaches rocks to repair itself.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its entire body is made of rock. If any part chips off in battle, Regirock attaches rocks to repair itself.\"\n    }\n  ],\n  \"378\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Regice's body was made during an ice age. The deep-frozen body can't be melted, even by fire. This Pokémon controls frigid air of minus 328 degrees F.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Regice cloaks itself with frigid air of negative 328 degrees F. Things will freeze solid just by going near this Pokémon. Its icy body is so cold, it will not melt even if it is immersed in magma.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its entire body is made of Antarctic ice. After extensive studies, researchers believe the ice was formed during an ice age.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"Research revealed that its body is made of the same kind of ice that is found at the South Pole.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"Research revealed that its body is made of the same kind of ice that is found at the South Pole.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is said to have slept in a glacier for thousands of years. Its body can't be melted, even by magma.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is said to have slept in a glacier for thousands of years. Its body can't be melted, even by magma.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said to have slept in a glacier for thousands of years. Its body can't be melted, even by magma.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Regice's body was made during an ice age. The deep-frozen body can't be melted, even by fire. This Pokémon controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Regice cloaks itself with frigid air of -328 degrees Fahrenheit. Things will freeze solid just by going near this Pokémon. Its icy body is so cold, it will not melt even if it is immersed in magma.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With cold air that can reach temperatures as low as -328 degrees Fahrenheit, Regice instantly freezes any creature that approaches it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon's body is made of solid ice. It's said that Regice was born beneath thick ice in the ice age.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body is made of ice from the ice age. It controls frigid air of -328 degrees Fahrenheit.\"\n    }\n  ],\n  \"379\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Registeel has a body that is harder than any kind of metal. Its body is apparently hollow. No one has any idea what this Pokémon eats.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Registeel was imprisoned by people in ancient times. The metal composing its body is thought to be a curious substance that is not of this earth.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Its body is harder than any other kind of metal. The body metal is composed of a mysterious substance. Not only is it hard, it shrinks and stretches flexibly.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is sturdier than any kind of metal. It hardened due to pressure underground over tens of thousands of years.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is sturdier than any kind of metal. It hardened due to pressure underground over tens of thousands of years.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its body is said to be harder than any kind of metal. A study has revealed that its body is hollow.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its body is said to be harder than any kind of metal. A study has revealed that its body is hollow.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its body is said to be harder than any kind of metal. A study has revealed that its body is hollow.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Registeel has a body that is harder than any kind of metal. Its body is apparently hollow. No one has any idea what this Pokémon eats.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Registeel was imprisoned by people in ancient times. The metal composing its body is thought to be a curious substance that is not of this earth.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Registeel's body is made of a strange material that is flexible enough to stretch and shrink but also more durable than any metal.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's rumored that this Pokémon was born deep underground in the planet's mantle and that it emerged onto the surface 10,000 years ago.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Tempered by pressure underground over tens of thousands of years, its body cannot be scratched.\"\n    }\n  ],\n  \"380\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Latias is highly sensitive to the emotions of people. If it senses any hostility, this Pokémon ruffles the feathers all over its body and cries shrilly to intimidate the foe.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Latias is highly intelligent and capable of understanding human speech. It is covered with a glass-like down. The Pokémon enfolds its body with its down and refracts light to alter its appearance.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"They make a small herd of only several members. They rarely make contact with people or other Pokémon. They disappear if they sense enemies.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It can telepathically communicate with people. It changes its appearance using its down that refracts light.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It can telepathically communicate with people. It changes its appearance using its down that refracts light.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body is covered with a down that can refract light in such a way that it becomes invisible.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body is covered with a down that can refract light in such a way that it becomes invisible.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its body is covered with a down that can refract light in such a way that it becomes invisible.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It communicates using telepathy. Its body is covered in down that refracts light to make it invisible.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It communicates using telepathy. Its body is covered in down that refracts light to make it invisible.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its body is covered with a down that can refract light in such a way that it becomes invisible.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its body is covered with a down that can refract light in such a way that it becomes invisible.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its body is covered with a down that can refract light in such a way that it becomes invisible.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its body is covered with a down that can refract light in such a way that it becomes invisible.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It communicates using telepathy. Its body is covered in down that refracts light to make it invisible.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can telepathically communicate with people. It changes its appearance using its down that refracts light.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Latias is highly sensitive to the emotions of people. If it senses any hostility, this Pokémon ruffles the feathers all over its body and cries shrilly to intimidate the foe.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Latias is highly intelligent and capable of understanding human speech. It is covered with a glass-like down. The Pokémon enfolds its body with its down and refracts light to alter its appearance.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body is covered with a down that can refract light in such a way that it becomes invisible.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body is covered with a down that can refract light in such a way that it becomes invisible.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It communicates its feelings using telepathy. To make itself invisible, it covers its body in down that refracts light.\"\n    }\n  ],\n  \"381\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Latios has the ability to make its foe see an image of what it has seen or imagines in its head. This Pokémon is intelligent and understands human speech.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Latios will only open its heart to a Trainer with a compassionate spirit. This Pokémon can fly faster than a jet plane by folding its forelegs to minimize air resistance.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Even in hiding, it can detect the locations of others and sense their emotions since it has telepathy. Its intelligence allows it to understand human languages.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has a docile temperament and dislikes fighting. Tucking in its forelegs, it can fly faster than a jet plane.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has a docile temperament and dislikes fighting. Tucking in its forelegs, it can fly faster than a jet plane.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A highly intelligent Pokémon. By folding back its wings in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A highly intelligent Pokémon. By folding back its wings in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A highly intelligent Pokémon. By folding back its wings in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It understands human speech and is highly intelligent. It is a tender Pokémon that dislikes fighting.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It understands human speech and is highly intelligent. It is a tender Pokémon that dislikes fighting.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A highly intelligent Pokémon. By folding back its wings in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A highly intelligent Pokémon. By folding back its wings in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A highly intelligent Pokémon. By folding back its wings in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A highly intelligent Pokémon. By folding back its wings in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A highly intelligent Pokémon. By folding back its wings in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It understands human speech and is highly intelligent. It is a tender Pokémon that dislikes fighting.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Latios has the ability to make others see an image of what it has seen or imagines in its head. This Pokémon is intelligent and understands human speech.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Latios will only open its heart to a Trainer with a compassionate spirit. This Pokémon can fly faster than a jet plane by folding its forelegs to minimize air resistance.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a highly intelligent Pokémon. By folding back its forelegs in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is a highly intelligent Pokémon. By folding back its forelegs in flight, it can overtake jet planes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It understands human speech and is highly intelligent. It is a tender Pokémon that dislikes fighting.\"\n    }\n  ],\n  \"382\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Kyogre has the power to create massive rain clouds that cover the entire sky and bring about torrential downpours. This {{OBP|Pokémon|species|Pokémon}} saved people who were suffering from droughts.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Kyogre is named in mythology as the Pokémon that expanded the sea by covering the land with torrential rains and towering tidal waves. It took to sleep after a cataclysmic battle with Groudon.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Kyogre has appeared in mythology as the creator of the sea. After long years of feuding with Groudon, it took to sleep at the bottom of the sea.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Pokémon is said to have expanded the sea by bringing heavy rains. It has the power to control water.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"This Pokémon is said to have expanded the sea by bringing heavy rains. It has the power to control water.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A mythical Pokémon said to have swelled the seas with rain and tidal waves. It battled with Groudon.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A mythical Pokémon said to have swelled the seas with rain and tidal waves. It battled with Groudon.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A mythical Pokémon said to have swelled the seas with rain and tidal waves. It battled with Groudon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Through Primal Reversion and with nature's full power, it will take back its true form. It can summon storms that cause the sea levels to rise.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Kyogre is said to be the personification of the sea itself. Legends tell of its many clashes against Groudon, as each sought to gain the power of nature.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said to have widened the seas by causing downpours. It had been asleep in a marine trench.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"In myths, this Pokémon expanded the seas with torrential rains and great tsunamis. It battled ferociously against Groudon.\"\n    }\n  ],\n  \"383\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Groudon has long been described in mythology as the {{OBP|Pokémon|species|Pokémon}} that raised lands and expanded continents. This Pokémon took to sleep after a cataclysmic battle with Kyogre.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Groudon has the power to scatter rain clouds and make water evaporate with light and heat. It came as a savior to people who had been suffering from terrible floods.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Groudon has appeared in mythology as the creator of the land. It sleeps in magma underground and is said to make volcanoes erupt on awakening.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This legendary Pokémon is said to represent the land. It went to sleep after dueling Kyogre.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"This legendary Pokémon is said to represent the land. It went to sleep after dueling Kyogre.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It had been asleep in underground magma ever since it fiercely fought KYOGRE long ago.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It had been asleep in underground magma ever since it fiercely fought KYOGRE long ago.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It had been asleep in underground magma ever since it fiercely fought KYOGRE long ago.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Said to have expanded the lands by evaporating water with raging heat. It battled titanically with Kyogre.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Said to have expanded the lands by evaporating water with raging heat. It battled titanically with Kyogre.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It had been asleep in underground magma ever since it fiercely fought Kyogre long ago.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It had been asleep in underground magma ever since it fiercely fought Kyogre long ago.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It had been asleep in underground magma ever since it fiercely fought Kyogre long ago.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It had been asleep in underground magma ever since it fiercely fought Kyogre long ago.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Said to have expanded the lands by evaporating water with raging heat. It battled titanically with Kyogre.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This legendary Pokémon is said to represent the land. It went to sleep after dueling Kyogre.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Groudon is said to be the personification of the land itself. Legends tell of its many clashes against Kyogre, as each sought to gain the power of nature.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Through Primal Reversion and with nature's full power, it will take back its true form. It can cause magma to erupt and expand the landmass of the world.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It had been asleep in underground magma ever since it fiercely fought Kyogre long ago.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It had been asleep in underground magma ever since it fiercely fought Kyogre long ago.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Groudon is said to have expanded the reach of dry land by evaporating water with raging heat. It battled ferociously against Kyogre.\"\n    }\n  ],\n  \"384\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"Rayquaza lived for hundreds of millions of years in the earth's ozone layer, never descending to the ground. This {{OBP|Pokémon|species|Pokémon}} appears to feed on water and particles in the atmosphere.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Rayquaza is said to have lived for hundreds of millions of years in the earth's ozone layer, above the clouds. Its existence had been completely unknown because it lived so high in the sky.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that flies endlessly in the ozone layer. It is said it would descend to the ground if Kyogre and Groudon were to fight.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It has lived for hundreds of millions of years in the ozone layer. Its flying form looks like a meteor.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It has lived for hundreds of millions of years in the ozone layer. Its flying form looks like a meteor.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It flies in the ozone layer, way up high in the sky. Until recently, no one had ever seen it.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It flies in the ozone layer, way up high in the sky. Until recently, no one had ever seen it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It flies in the ozone layer, way up high in the sky. Until recently, no one had ever seen it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Rayquaza is said to have lived for hundreds of millions of years. Legends remain of how it put to rest the clash between Kyogre and Groudon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It flies forever through the ozone layer, consuming meteoroids for sustenance. The many meteoroids in its body provide the energy it needs to Mega Evolve.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives in the ozone layer far above the clouds and cannot be seen from the ground.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Rayquaza cannot be seen from the ground because it lives in the ozone layer, far above the clouds.\"\n    }\n  ],\n  \"385\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"A legend states that Jirachi will make true any wish that is written on notes attached to its head when it awakens. If this Pokémon senses danger, it will fight without awakening.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Jirachi will awaken from its sleep of a thousand years if you sing to it in a voice of purity. It is said to make true any wish that people desire.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"Jirachi is said to make wishes come true. While it sleeps, a tough crystalline shell envelops the body to protect it from enemies.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"It is said to make any wish come true. It is awake for only seven days out of a thousand years.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"It is said to make any wish come true. It is awake for only seven days out of a thousand years.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is said to have the ability to grant any wish for just one week every thousand years.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said to have the ability to grant any wish for just one week every thousand years.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said to have the ability to grant any wish for just one week every thousand years.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Generations have believed that any wish written on a note on its head will come true when it awakens.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Generations have believed that any wish written on a note on its head will come true when it awakens.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said to have the ability to grant any wish for just one week every thousand years.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said to have the ability to grant any wish for just one week every thousand years.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said to have the ability to grant any wish for just one week every thousand years.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said to have the ability to grant any wish for just one week every thousand years.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Generations have believed that any wish written on a note on its head will come true when it awakens.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is said to have the ability to grant any wish for just one week every thousand years.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"A legend states that Jirachi will make true any wish that is written on notes attached to its head when it awakens. If this Pokémon senses danger, it will fight without awakening.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Jirachi will awaken from its sleep of a thousand years if you sing to it in a voice of purity. It is said to make true any wish that people desire.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Once every 1,000 years, the singing of a pure voice will rouse this Pokémon from its near-perpetual slumber. It wakes for only seven days.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's believed that when this Pokémon wakes from its 1,000-year slumber, it will grant any wishes written on the notes attached to its head.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is said to wake up for just seven days every 1,000 years and use its power to grant any wish.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said to wake up for just seven days every 1,000 years and use its power to grant any wish.\"\n    }\n  ],\n  \"386\": [\n    {\n      \"version_id\": \"Ruby\",\n      \"flavor_text\": \"The DNA of a space virus underwent a sudden mutation upon exposure to a laser beam and resulted in Deoxys. The crystalline organ on this Pokémon's chest appears to be its brain.\"\n    },\n    {\n      \"version_id\": \"Sapphire\",\n      \"flavor_text\": \"Deoxys emerged from a virus that came from space. It is highly intelligent and wields psychokinetic powers. This Pokémon shoots lasers from the crystalline organ on its chest.\"\n    },\n    {\n      \"version_id\": \"Emerald\",\n      \"flavor_text\": \"A Pokémon that mutated from an extraterrestrial virus exposed to a laser beam. Its body is configured for superior agility and speed.\"\n    },\n    {\n      \"version_id\": \"FireRed\",\n      \"flavor_text\": \"This Deoxys has transformed into its aggressive guise. It can fool enemies by altering its appearance.\"\n    },\n    {\n      \"version_id\": \"LeafGreen\",\n      \"flavor_text\": \"When it changes form, an aurora appears. It absorbs attacks by altering its cellular structure.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteor underwent a DNA mutation to become this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteor underwent a DNA mutation to become this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteor underwent a DNA mutation to become this Pokémon.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"DNA from a space virus mutated and became a Pokémon. It appears where auroras are seen.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"DNA from a space virus mutated and became a Pokémon. It appears where auroras are seen.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteor underwent a DNA mutation to become this Pokémon.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteor underwent a DNA mutation to become this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteor underwent a DNA mutation to become this Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteor underwent a DNA mutation to become this Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteor underwent a DNA mutation to become this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"DNA from a space virus mutated and became a Pokémon. It appears where auroras are seen.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The DNA of a space virus underwent a sudden mutation upon exposure to a laser beam and resulted in Deoxys. The crystalline organ on this Pokémon's chest appears to be its brain.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Deoxys emerged from a virus that came from space. It is highly intelligent and wields psychokinetic powers. This Pokémon shoots lasers from the crystalline organ on its chest.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteorite underwent a DNA mutation to become this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"An alien virus that fell to earth on a meteorite underwent a DNA mutation to become this Pokémon.\"\n    }\n  ],\n  \"387\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Made from soil, the shell on its back hardens when it drinks water. It lives along lakes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It undertakes photosynthesis with its body, making oxygen. The leaf on its head wilts if it is thirsty.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The shell on its back is made of soil. On a very healthy Turtwig, the shell should feel moist.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Photosynthesis occurs across its body under the sun. The shell on its back is actually hardened soil.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Photosynthesis occurs across its body under the sun. The shell on its back is actually hardened soil.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The shell on its back is made of soil. On a very healthy Turtwig, the shell should feel moist.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The shell on its back is made of soil. On a very healthy Turtwig, the shell should feel moist.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The shell on its back is made of soil. On a very healthy Turtwig, the shell should feel moist.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The shell on its back is made of soil. On a very healthy Turtwig, the shell should feel moist.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Photosynthesis occurs across its body under the sun. The shell on its back is actually hardened soil.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It undertakes photosynthesis with its body, making oxygen. The leaf on its head wilts if it is thirsty.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Photosynthesis occurs across its body under the sun. The shell on its back is actually hardened soil.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It undertakes photosynthesis with its body, making oxygen. The leaf on its head wilts if it is thirsty.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Made from soil, the shell on its back hardens when it drinks water. It lives along lakes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It undertakes photosynthesis within its body, making oxygen. The leaf on its head wilts if the Pokémon is thirsty.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon becomes more energetic the more sunlight there is. The part resembling a shell is similar to silt and is slightly damp and warm to the touch.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The shell on its back is made of soil. If the shell is moist to the touch, Turtwig is very healthy.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It uses its whole body to photosynthesize when exposed to sunlight. Its shell is made from hardened soil.\"\n    }\n  ],\n  \"388\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives along water in forests. In the daytime, it leaves the forest to sunbathe its treed shell.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The shell is hardened soil. Some Pokémon come to peck the berries growing on the trees on its back.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It knows where pure water wells up. It carries fellow Pokémon there on its back.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A Grotle that lives in the forest is said to have its own secret springwater.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A Grotle that lives in the forest is said to have its own secret springwater.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It knows where pure water wells up. It carries fellow Pokémon there on its back.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It knows where pure water wells up. It carries fellow Pokémon there on its back.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It knows where pure water wells up. It carries fellow Pokémon there on its back.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It knows where pure water wells up. It carries fellow Pokémon there on its back.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives along water in forests. In the daytime, it leaves the forest to sunbathe its treed shell.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It knows where pure water wells up. It carries fellow Pokémon there on its back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It lives along water in forests. In the daytime, it leaves the forest to sunbathe its treed shell.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It knows where pure water wells up. It carries fellow Pokémon there on its back.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives along water in forests. In the daytime, it leaves the forest to sunbathe the trees on its shell.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its shell is hardened soil. Some Pokémon come to peck the berries growing on the trees on its back.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Appears where there is clean spring water. The fruit that grows on the shrubs on its shell is sweet, nutritious, and truly delicious.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Grotle live in the forest. Each is said to have its own secret place for getting clean springwater.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It knows where pure water wells up. It carries fellow Pokémon there on its back.\"\n    }\n  ],\n  \"389\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Small Pokémon occasionally gather on its unmoving back to begin building their nests.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Groups of this Pokémon migrating in search of water have been mistaken for \\\"moving forests.\\\"\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Some Pokémon are born on a Torterra's back and spend their entire life there.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Ancient people imagined that beneath the ground, a gigantic Torterra dwelled.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Ancient people imagined that beneath the ground, a gigantic Torterra dwelled.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Some Pokémon are born on a Torterra's back and spend their entire life there.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Some Pokémon are born on a Torterra's back and spend their entire life there.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Some Pokémon are born on a Torterra's back and spend their entire life there.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Some Pokémon are born on a Torterra's back and spend their entire life there.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Ancient people imagined that beneath the ground, a gigantic Torterra dwelled.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Small Pokémon occasionally gather on its unmoving back to begin building their nests.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ancient people imagined that beneath the ground, a gigantic Torterra dwelled.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Small Pokémon occasionally gather on its unmoving back to begin building their nests.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Small Pokémon occasionally gather on its unmoving back to begin building their nests.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Groups of this Pokémon migrating in search of water have been mistaken for moving forests.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This remarkable, large-bodied Pokémon would serve beautifully as borrowed scenery for a garden, and its strength is peerless. Torterra roams the wilderness in search of clean water.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Ancient people imagined that beneath the ground dwelt a gigantic Torterra.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Some Pokémon are born on a Torterra's back and spend their entire life there.\"\n    }\n  ],\n  \"390\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It agilely scales sheer cliffs to live atop craggy mountains. Its fire is put out when it sleeps.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its fiery rear end is fueled by gas made in its belly. Even rain can't extinguish the fire.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is very agile. Before going to sleep, it extinguishes the flame on its tail to prevent fires.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The gas made in its belly burns from its rear end. The fire burns weakly when it feels sick.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The gas made in its belly burns from its rear end. The fire burns weakly when it feels sick.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is very agile. Before going to sleep, it extinguishes the flame on its tail to prevent fires.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is very agile. Before going to sleep, it extinguishes the flame on its tail to prevent fires.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is very agile. Before going to sleep, it extinguishes the flame on its tail to prevent fires.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is very agile. Before going to sleep, it extinguishes the flame on its tail to prevent fires.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its fiery rear end is fueled by gas made in its belly. Even rain can't extinguish the fire.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The gas made in its belly burns from its rear end. The fire burns weakly when it feels sick.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its fiery rear end is fueled by gas made in its belly. Even rain can't extinguish the fire.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The gas made in its belly burns from its rear end. The fire burns weakly when it feels sick.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It agilely scales sheer cliffs to live atop craggy mountains. Its fire is put out when it sleeps.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its fiery rear end is fueled by gas made in its belly. Even rain can't extinguish the fire.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Full of vigor and always in high spirits. It was once known by the name \\\"Lantern-Tail\\\" and feared as some kind of apparition.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is very agile. Before going to sleep, it extinguishes the flame on its tail to prevent fires.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The gas made in its belly burns from its rear end. The fire burns weakly when it feels sick.\"\n    }\n  ],\n  \"391\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"To intimidate attackers, it stretches the fire on its tail to make itself appear bigger.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It uses ceilings and walls to launch aerial attacks. Its fiery tail is but one weapon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It skillfully controls the intensity of the fire on its tail to keep its foes at an ideal distance.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A bigger fire on its tail and a brighter blue pattern on its face means its rank in its pack is higher.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"A bigger fire on its tail and a brighter blue pattern on its face means its rank in its pack is higher.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It skillfully controls the intensity of the fire on its tail to keep its foes at an ideal distance.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It skillfully controls the intensity of the fire on its tail to keep its foes at an ideal distance.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It skillfully controls the intensity of the fire on its tail to keep its foes at an ideal distance.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It skillfully controls the intensity of the fire on its tail to keep its foes at an ideal distance.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It skillfully controls the intensity of the fire on its tail to keep its foes at an ideal distance.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It uses ceilings and walls to launch aerial attacks. Its fiery tail is but one weapon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It skillfully controls the intensity of the fire on its tail to keep its foes at an ideal distance.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It uses ceilings and walls to launch aerial attacks. Its fiery tail is but one weapon.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"To intimidate attackers, it expands the fire on its tail to make itself appear bigger.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It uses ceilings and walls to launch aerial attacks. Its fiery tail is but one of its weapons.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The deeper the blue on its face, the more powerful it will grow to become. It leaps about every which way and lands powerful blows against its opponents with the flame on its tail.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It skillfully controls the intensity of the fire on its tail to keep its foes at an ideal distance.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A bigger fire on its tail and a brighter blue pattern on its face means it holds a higher rank in its troop.\"\n    }\n  ],\n  \"392\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It uses a special kind of martial arts involving all its limbs. Its fire never goes out.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its crown of fire is indicative of its fiery nature. It is beaten by none in terms of quickness.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It uses unique fighting moves with fire on its hands and feet. It will take on any opponent.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It tosses its enemies around with agility. It uses all its limbs to fight in its own unique style.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It tosses its enemies around with agility. It uses all its limbs to fight in its own unique style.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It uses unique fighting moves with fire on its hands and feet. It will take on any opponent.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It uses unique fighting moves with fire on its hands and feet. It will take on any opponent.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It uses unique fighting moves with fire on its hands and feet. It will take on any opponent.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It uses unique fighting moves with fire on its hands and feet. It will take on any opponent.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its crown of fire is indicative of its fiery nature. It is beaten by none in terms of quickness.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It tosses its enemies around with agility. It uses all its limbs to fight in its own unique style.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its crown of fire is indicative of its fiery nature. It is beaten by none in terms of quickness.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It tosses its enemies around with agility. It uses all its limbs to fight in its own unique style.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It uses a special kind of martial arts involving all its limbs. Its fire never goes out.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its crown of fire is indicative of its fiery nature. It is beaten by none in terms of quickness.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A tall, hardy Pokémon with a dazzling appearance. It shrouds itself in flame and battles as if engaged in dance—truly a sight to behold.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon confounds opponents with its speed. It uses all its limbs to fight in its own unique style.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It uses unique fighting moves with fire on its hands and feet. It will take on any opponent.\"\n    }\n  ],\n  \"393\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A poor walker, it often falls down. However, its strong pride makes it puff up its chest without a care.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Because it is very proud, it hates accepting food from people. Its thick down guards it from cold.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives along shores in northern countries. A skilled swimmer, it dives for over 10 minutes to hunt.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A poor walker, it often falls down. However, its strong pride makes it puff up its chest without a care.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It doesn't like to be taken care of. It's difficult to bond with since it won't listen to its Trainer.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It doesn't like to be taken care of. It's difficult to bond with since it won't listen to its Trainer.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A poor walker, it often falls down. However, its strong pride makes it puff up its chest without a care.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A poor walker, it often falls down. However, its strong pride makes it puff up its chest without a care.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A poor walker, it often falls down. However, its strong pride makes it puff up its chest without a care.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A poor walker, it often falls down. However, its strong pride makes it puff up its chest without a care.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It doesn't like to be taken care of. It's difficult to bond with since it won't listen to its Trainer.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Because it is very proud, it hates accepting food from people. Its thick down guards it from cold.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It doesn't like to be taken care of. It's difficult to bond with since it won't listen to its Trainer.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Because it is very proud, it hates accepting food from people. Its thick down guards it from cold.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Because it is very proud, it hates accepting food from people. Its thick down guards it from cold.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives along the shore in northern countries. A skilled swimmer, it dives for over 10 minutes while hunting.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Prefers cold climes and appears along coasts. It's an adorable little thing—as cute as any child—but it's also prideful, unwilling to accept handouts from people.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A poor walker, it often falls down. However, its strong pride makes it puff up its chest without a care.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It doesn't like to be taken care of. It's difficult to bond with since it won't listen to its Trainer.\"\n    }\n  ],\n  \"394\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Because every Prinplup considers itself to be the most important, they can never form a group.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives alone, away from others. Apparently, every one of them believes it is the most important.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its wings deliver wicked blows that snap even the thickest of trees. It searches for prey in icy seas.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Because every Prinplup considers itself to be the most important, they can never form a group.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives a solitary life. Its wings deliver wicked blows that can snap even the thickest of trees.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives a solitary life. Its wings deliver wicked blows that can snap even the thickest of trees.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Because every Prinplup considers itself to be the most important, they can never form a group.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because every Prinplup considers itself to be the most important, they can never form a group.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Because every Prinplup considers itself to be the most important, they can never form a group.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Because every Prinplup considers itself to be the most important, they can never form a group.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives alone, away from others. Apparently, every one of them believes it is the most important.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives a solitary life. Its wings deliver wicked blows that can snap even the thickest of trees.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It lives alone, away from others. Apparently, every one of them believes it is the most important.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It lives a solitary life. Its wings deliver wicked blows that can snap even the thickest of trees.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives alone, away from others. Apparently, every one of them believes it is the most important.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its wings deliver wicked blows that snap even the thickest of trees. It searches for prey in icy seas.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It swims gracefully through the frigid sea and sings with a voice like the roaring tide. It has powerful, sturdy wings and dignity to match.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives a solitary life. Its wings deliver wicked blows that can snap even the thickest of trees in half with a single hit.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Because every Prinplup considers itself to be the most important, they can never form a group.\"\n    }\n  ],\n  \"395\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"If anyone were to hurt its pride, it would slash them in two with wings that can cleave through an ice floe.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The three horns that extend from its beak attest to its power. The leader has the biggest horns.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It swims as fast as a jet boat. The edges of its wings are sharp and can slice apart drifting ice.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If anyone were to hurt its pride, it would slash them with wings that can cleave through an ice floe.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It avoids unnecessary disputes, but it will decimate anything that threatens its pride.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It avoids unnecessary disputes, but it will decimate anything that threatens its pride.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If anyone were to hurt its pride, it would slash them with wings that can cleave through an ice floe.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If anyone were to hurt its pride, it would slash them with wings that can cleave through an ice floe.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If anyone were to hurt its pride, it would slash them with wings that can cleave through an ice floe.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If anyone were to hurt its pride, it would slash them with wings that can cleave through an ice floe.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It swims as fast as a jet boat. The edges of its wings are sharp and can slice apart drifting ice.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The three horns that extend from its beak attest to its power. The leader has the biggest horns.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It swims as fast as a jet boat. The edges of its wings are sharp and can slice apart drifting ice.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The three horns that extend from its beak attest to its power. The leader has the biggest horns.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The three horns that extend from its beak attest to its power. The leader has the biggest horns.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It swims as fast as a jet boat. The edges of its wings are sharp and can slice apart drifting ice.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Since ancient times, it has been revered by the people of Hisui, who call it the Master of the Waves. Its wings are a match for even master-crafted blades.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If anyone were to hurt its pride, it would slash them in two with wings that can cleave through an ice floe.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It avoids unnecessary disputes, but it will mercilessly decimate anything that threatens the safety of its colony.\"\n    }\n  ],\n  \"396\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"They flock in great numbers. Though small, they flap their wings with great power.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Usually with a large flock, it is barely noticeable when alone. Its cries are very strident.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Because they are weak individually, they form groups. However, they bicker if the group grows too big.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They flock around mountains and fields, chasing after bug Pokémon. Their singing is noisy and annoying.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"They flock around mountains and fields, chasing after bug Pokémon. Their singing is noisy and annoying.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Because they are weak individually, they form groups. However, they bicker if the group grows too big.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because they are weak individually, they form groups. However, they bicker if the group grows too big.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Because they are weak individually, they form groups. However, they bicker if the group grows too big.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Because they are weak individually, they form groups. However, they bicker if the group grows too big.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They flock in great numbers. Though small, they flap their wings with great power.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They flock around mountains and fields, chasing after bug Pokémon. Their singing is noisy and annoying.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They flock in great numbers. Though small, they flap their wings with great power.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They flock around mountains and fields, chasing after bug Pokémon. Their singing is noisy and annoying.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They flock in great numbers. Though small, they flap their wings with great power.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Usually with a large flock, it is barely noticeable when alone. Its cries are very strident.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"They live in the fields and mountains, gathering in large flocks. Their cries are quite obnoxious. Though small, their wings are strong—a strike from them leaves pain that persists for a week.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They flock around mountains and fields, chasing after bug Pokémon. Their singing is noisy and annoying.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Because they are weak individually, they form groups. However, they bicker if the group grows too big.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They flock in great numbers. Though small, they flap their wings with great power.\"\n    }\n  ],\n  \"397\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It flies around forests and fields in search of bug Pokémon. It stays within a huge flock.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives in forests and fields. Squabbles over territory occur when flocks collide.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Recognizing their own weakness, they always live in a group. When alone, a Staravia cries noisily.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They maintain huge flocks, although fierce scuffles break out between various flocks.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"They maintain huge flocks, although fierce scuffles break out between various flocks.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Recognizing their own weakness, they always live in a group. When alone, a Staravia cries noisily.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Recognizing their own weakness, they always live in a group. When alone, a Staravia cries noisily.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Recognizing their own weakness, they always live in a group. When alone, a Staravia cries noisily.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Recognizing their own weakness, they always live in a group. When alone, a Staravia cries noisily.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They maintain huge flocks, although fierce scuffles break out between various flocks.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives in forests and fields. Squabbles over territory occur when flocks collide.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They maintain huge flocks, although fierce scuffles break out between various flocks.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It lives in forests and fields. Squabbles over territory occur when flocks collide.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They fly around forests and fields in search of bug Pokémon, moving together in huge flocks.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They live in forests and fields. Squabbles over territory occur when flocks collide.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"They form remarkably large flocks and are constantly fighting amongst themselves. I suspect that those with magnificent plumes on their heads are the strong ones.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Recognizing their own weakness, they always live in a group. When alone, a Staravia cries noisily.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They maintain huge flocks, although fierce scuffles break out between various flocks.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Their habitats include forests and fields. Territorial squabbles occur whenever flocks happen to meet.\"\n    }\n  ],\n  \"398\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a savage nature. It will courageously challenge foes that are much larger.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The muscles in its wings and legs are strong. It can easily fly while gripping a small Pokémon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It never stops attacking even if it is injured. It fusses over the shape of its comb.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When Staravia evolve into Staraptor, they leave the flock to live alone. They have sturdy wings.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When Staravia evolve into Staraptor, they leave the flock to live alone. They have sturdy wings.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It never stops attacking even if it is injured. It fusses over the shape of its comb.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It never stops attacking even if it is injured. It fusses over the shape of its comb.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It never stops attacking even if it is injured. It fusses over the shape of its comb.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It never stops attacking even if it is injured. It fusses over the shape of its comb.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The muscles in its wings and legs are strong. It can easily fly while gripping a small Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When Staravia evolve into Staraptor, they leave the flock to live alone. They have sturdy wings.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The muscles in its wings and legs are strong. It can easily fly while gripping a small Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Staravia evolve into Staraptor, they leave the flock to live alone. They have sturdy wings.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a savage nature. It will courageously challenge foes that are much larger than itself.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The muscles in its wings and legs are strong. It can easily fly while gripping a small Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It has left the flock, having gained strength enough to survive on its own. The astounding force with which Staraptor flies through the air allows it to carry away large, burly targets.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When Staravia evolve into Staraptor, they leave the flock to live alone. They have sturdy wings.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It never stops attacking even if it is injured. It fusses over the shape of its comb.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The muscles in its wings and legs are strong. It can easily fly while gripping a small Pokémon.\"\n    }\n  ],\n  \"399\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"With nerves of steel, nothing can perturb it. It is more agile and active than it appears.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It constantly gnaws on logs and rocks to whittle down its front teeth. It nests alongside water.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A comparison revealed that Bidoof's front teeth grow at the same rate as Rattata's.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives in groups by the water. It chews up boulders and trees around its nest with its incisors.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives in groups by the water. It chews up boulders and trees around its nest with its incisors.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A comparison revealed that Bidoof's front teeth grow at the same rate as Rattata's.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A comparison revealed that Bidoof's front teeth grow at the same rate as Rattata's.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A comparison revealed that Bidoof's front teeth grow at the same rate as Rattata's.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A comparison revealed that Bidoof's front teeth grow at the same rate as Rattata's.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"With nerves of steel, nothing can perturb it. It is more agile and active than it appears.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It constantly gnaws on logs and rocks to whittle down its front teeth. It nests alongside water.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"With nerves of steel, nothing can perturb it. It is more agile and active than it appears.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It constantly gnaws on logs and rocks to whittle down its front teeth. It nests alongside water.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"With nerves of steel, nothing can perturb it. It is more agile and active than it appears.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It constantly gnaws on logs and rocks to whittle down its front teeth. It nests alongside water.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Bidoof has an unsophisticated face and is rarely flustered by anything. There have been incidents involving Bidoof sauntering into villages and gnawing on the houses without a single care.\"\n    }\n  ],\n  \"400\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It makes its nest by damming streams with bark and mud. It is known as an industrious worker.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"While its movements out of water are sluggish, it can swim as fast as any Feebas.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A river dammed by Bibarel will never overflow its banks, which is appreciated by people nearby.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It busily makes its nest with stacks of branches and roots it has cut up with its sharp incisors.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It busily makes its nest with stacks of branches and roots it has cut up with its sharp incisors.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A river dammed by Bibarel will never overflow its banks, which is appreciated by people nearby.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A river dammed by Bibarel will never overflow its banks, which is appreciated by people nearby.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A river dammed by Bibarel will never overflow its banks, which is appreciated by people nearby.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A river dammed by Bibarel will never overflow its banks, which is appreciated by people nearby.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It busily makes its nest with stacks of branches and roots it has cut up with its sharp incisors.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It makes its nest by damming streams with bark and mud. It is known as an industrious worker.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It busily makes its nest with stacks of branches and roots it has cut up with its sharp incisors.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It makes its nest by damming streams with bark and mud. It is known as an industrious worker.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It makes its nest by damming streams with bark and mud. It is known as an industrious worker.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"While its movements out of water are sluggish, it can swim as fast as any Feebas.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Bibarel fur repels water and is also a fantastic material for heat retention. These Pokémon create dams on rivers to live in.\"\n    }\n  ],\n  \"401\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its legs are short. Whenever it stumbles, its stiff antennae clack with a xylophone-like sound.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It shakes its head back to front, causing its antennae to hit each other and sound like a xylophone.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It chats with others using the sounds of its colliding antennae. These sounds are fall hallmarks.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its legs are short. Whenever it stumbles, its stiff antennae clack with a xylophone-like sound.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When its antennae hit each other, it sounds like the music of a xylophone.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When its antennae hit each other, it sounds like the music of a xylophone.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its legs are short. Whenever it stumbles, its stiff antennae clack with a xylophone-like sound.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its legs are short. Whenever it stumbles, its stiff antennae clack with a xylophone-like sound.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its legs are short. Whenever it stumbles, its stiff antennae clack with a xylophone-like sound.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its legs are short. Whenever it stumbles, its stiff antennae clack with a xylophone-like sound.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It chats with others using the sounds of its colliding antennae. These sounds are fall hallmarks.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When its antennae hit each other, it sounds like the music of a xylophone.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It chats with others using the sounds of its colliding antennae. These sounds are fall hallmarks.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When its antennae hit each other, it sounds like the music of a xylophone.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It shakes its head back to front, causing its antennae to hit each other and sound like a xylophone.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It chats with others using the sounds of its colliding antennae. These sounds are the hallmarks of fall evenings.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"When the trees take on new hues, more of these Pokémon appear. The tone they create by striking their antennae together resembles that of the marimba, an instrument of foreign lands.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its legs are short. Whenever it stumbles, its stiff antennae clack with a xylophone-like sound.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When its antennae hit each other, it sounds like the music of a xylophone.\"\n    }\n  ],\n  \"402\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"By allowing its cry to resonate in the hollow of its belly, it produces a captivating sound.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It crosses its knifelike arms in front of its chest when it cries. It can compose melodies ad lib.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It signals its emotions with its melodies. Scientists are studying these melodic patterns.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"There is a village that hosts a contest based on the amazingly variable cries of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"By allowing its cry to resonate in the hollow of its belly, it produces a captivating sound.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"By allowing its cry to resonate in the hollow of its belly, it produces a captivating sound.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"There is a village that hosts a contest based on the amazingly variable cries of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"There is a village that hosts a contest based on the amazingly variable cries of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"There is a village that hosts a contest based on the amazingly variable cries of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"There is a village that hosts a contest based on the amazingly variable cries of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It crosses its knifelike arms in front of its chest when it cries. It can compose melodies ad lib.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It signals its emotions with its melodies. Scientists are studying these melodic patterns.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It crosses its knifelike arms in front of its chest when it cries. It can compose melodies ad lib.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It signals its emotions with its melodies. Scientists are studying these melodic patterns.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It crosses its knifelike arms in front of its chest when it cries. It can compose melodies ad lib.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It signals its emotions with its melodies. Scientists are studying these melodic patterns.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It uses its cutlass-like arms to produce sound, the melody of which varies from individual to individual. It is a worthwhile endeavor to seek out one's favorite tunes.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"By allowing its cry to resonate in the hollow of its belly, it produces a captivating sound.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"There is a village that hosts a contest based on the amazingly variable cries of this Pokémon.\"\n    }\n  ],\n  \"403\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"All of its fur dazzles if danger is sensed. It flees while the foe is momentarily blinded.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its forelegs have a muscle-based system of generating electricity. Its body shines if endangered.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. It glows when in trouble.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. Its fur glows when it's in trouble.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. Its fur glows when it's in trouble.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. It glows when in trouble.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. It glows when in trouble.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. It glows when in trouble.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. It glows when in trouble.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. It glows when in trouble.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"All of its fur dazzles if danger is sensed. It flees while the foe is momentarily blinded.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. It glows when in trouble.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"All of its fur dazzles if danger is sensed. It flees while the foe is momentarily blinded.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon generates electricity by contracting its muscles. Excited trembling is a sign that Shinx is generating a tremendous amount of electricity.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Electricity makes this Pokémon's fur glow. Shinx sends signals to others of its kind by shaking the tip of its tail while the tail tip is shining brightly.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"All of its fur dazzles if danger is sensed. It flees while the foe is momentarily blinded.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its forelegs have a muscle-based system of generating electricity. Its body shines when it is in danger.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Shakes its body to generate electricity. Its stature belies its aggression—one must be patient to tame this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. It glows when in trouble.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The extension and contraction of its muscles generates electricity. Its fur glows when it's in trouble.\"\n    }\n  ],\n  \"404\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its claws loose electricity with enough amperage to cause fainting. They live in small groups.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It rests its forelegs on others to communicate with rhythmic electric pulses from its claws.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Strong electricity courses through the tips of its sharp claws. A light scratch causes fainting in foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"By gathering their tails together, they collectively generate powerful electricity from their claws.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"By gathering their tails together, they collectively generate powerful electricity from their claws.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Strong electricity courses through the tips of its sharp claws. A light scratch causes fainting in foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Strong electricity courses through the tips of its sharp claws. A light scratch causes fainting in foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Strong electricity courses through the tips of its sharp claws. A light scratch causes fainting in foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Strong electricity courses through the tips of its sharp claws. A light scratch causes fainting in foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its claws loose electricity with enough amperage to cause fainting. They live in small groups.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Strong electricity courses through the tips of its sharp claws. A light scratch causes fainting in foes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its claws loose electricity with enough amperage to cause fainting. They live in small groups.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Strong electricity courses through the tips of its sharp claws. A light scratch causes fainting in foes.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"By joining its tail with that of another Luxio, this Pokémon can receive some of the other Luxio's electricity and power up its own electric blasts.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Upon encountering an opponent, this Pokémon prepares for battle by extending its claws, which can put out 1,000,000 volts of electricity.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its claws loose electricity with enough amperage to cause opponents to faint. It lives in small groups.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It rests its forelegs on others to communicate with rhythmic electric pulses from its claws.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Proudly uses its electrified claws as weapons. It seems to be a gracious Pokémon, evenly sharing the spoils of the hunt with others of its kind.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Strong electricity courses through the tips of its sharp claws. A light scratch causes fainting in foes.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"By gathering their tails together, they collectively generate powerful electricity from their claws.\"\n    }\n  ],\n  \"405\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has eyes that can see through anything. It spots and captures prey hiding behind objects.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When its eyes gleam gold, it can spot hiding prey--even those taking shelter behind a wall.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can see clearly through walls to track down its prey and seek its lost young.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Luxray's ability to see through objects comes in handy when it's scouting for danger.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Luxray's ability to see through objects comes in handy when it's scouting for danger.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can see clearly through walls to track down its prey and seek its lost young.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can see clearly through walls to track down its prey and seek its lost young.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It can see clearly through walls to track down its prey and seek its lost young.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It can see clearly through walls to track down its prey and seek its lost young.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When its eyes gleam gold, it can spot hiding prey--even those taking shelter behind a wall.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Luxray's ability to see through objects comes in handy when it's scouting for danger.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When its eyes gleam gold, it can spot hiding prey—even those taking shelter behind a wall.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Luxray's ability to see through objects comes in handy when it's scouting for danger.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Luxray can see through solid objects. It will instantly spot prey trying to hide behind walls, even if the walls are thick.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Seeing through solid objects uses up a lot of Luxray's electricity, so the Pokémon sleeps for long periods of time to store up energy.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has eyes that can see through anything. It spots and captures prey hiding behind objects.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When its eyes gleam gold, it can spot hiding prey—even those taking shelter behind a wall.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"They form packs, each having one male as leader. Legends say that when Luxray's two eyes shimmer with gold, the Pokémon can see through anything.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It can see clearly through walls to track down its prey and seek its lost young.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Luxray's ability to see through objects comes in handy when it's scouting for danger.\"\n    }\n  ],\n  \"406\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Over the winter, it closes its bud and endures the cold. In spring, the bud opens and releases pollen.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives alongside clear ponds. It scatters pollen that induces harsh sneezing and runny noses.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Sensitive to changing temperature, the bud is said to bloom when it feels the sun's warm touch.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it feels the sun's warm touch, it opens its bud to release pollen. It lives alongside clear pools.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it feels the sun's warm touch, it opens its bud to release pollen. It lives alongside clear pools.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Sensitive to changing temperature, the bud is said to bloom when it feels the sun's warm touch.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Sensitive to changing temperature, the bud is said to bloom when it feels the sun's warm touch.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Sensitive to changing temperatures, the bud blooms when it's warm, releasing toxic pollen.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Sensitive to changing temperatures, the bud blooms when it's warm, releasing toxic pollen.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When it feels the sun's warm touch, it opens its bud to release pollen. It lives alongside clear pools.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Over the winter, it closes its bud and endures the cold. In spring, the bud opens and releases pollen.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When it feels the sun's warm touch, it opens its bud to release pollen. It lives alongside clear pools.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Over the winter, it closes its bud and endures the cold. In spring, the bud opens and releases pollen.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The pollen it releases contains poison. If this Pokémon is raised on clean water, the poison's toxicity is increased.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is highly sensitive to temperature changes. When its bud starts to open, that means spring is right around the corner.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Over the winter, it closes its bud and endures the cold. In spring, the bud opens and releases pollen.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives alongside clear ponds. It scatters pollen that induces harsh sneezing and runny noses.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"When the sun's light strengthens, the bud atop this Pokémon's head opens. This is a sign to the people that the harsh winter is over, and the season of budding has begun.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When it feels the sun's warm touch, it opens its bud to release pollen. It lives alongside clear pools.\"\n    }\n  ],\n  \"407\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It attracts prey with a sweet aroma, then downs it with thorny whips hidden in its arms.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"With the movements of a dancer, it strikes with whips that are densely lined with poison thorns.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Each of its hands contains different toxins, but both hands can jab with near-fatal power.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its sweet aroma attracts prey. Then it spews poison. The more toxic it is, the sweeter its aroma.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its sweet aroma attracts prey. Then it spews poison. The more toxic it is, the sweeter its aroma.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Each of its hands contains different toxins, but both hands can jab with near-fatal power.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Each of its hands contains different toxins, but both hands can jab with near-fatal power.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Luring prey with a sweet scent, it uses poison whips on its arms to poison, bind, and finish off the prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Luring prey with a sweet scent, it uses poison whips on its arms to poison, bind, and finish off the prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Luring prey with a sweet scent, it uses poison whips on its arms to poison, bind, and finish off the prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"With the movements of a dancer, it strikes with whips that are densely lined with poison thorns.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Luring prey with a sweet scent, it uses poison whips on its arms to poison, bind, and finish off the prey.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"With the movements of a dancer, it strikes with whips that are densely lined with poison thorns.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After captivating opponents with its sweet scent, it lashes them with its thorny whips.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The poison in its right hand is quick acting. The poison in its left hand is slow acting. Both are life threatening.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It attracts prey with a sweet aroma, then downs it with thorny whips hidden in its arms.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"With the movements of a dancer, it strikes with whips that are densely lined with poison thorns.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Hidden within the bouquet on each hand are thorned whips loaded with virulent poison. Roserade moves gracefully as it corners its prey and mercilessly lashes them with its whips.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It lures prey in with a sweet scent, then finishes them off with the poisonous whips on its arms— either by constricting the prey or skewering them.\"\n    }\n  ],\n  \"408\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"In rock layers where Cranidos fossils are found, the fossilized trunks of trees snapped in two are also often found.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lived in jungles around 100 million years ago. Its skull is as hard as iron.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It was resurrected from an iron ball-like fossil. It downs prey with its head butts.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A lifelong jungle dweller from 100 million years ago, it would snap obstructing trees with head butts.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Cranidos toughen up their already rock-hard heads by headbutting one another.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Cranidos toughen up their already rock-hard heads by headbutting one another.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A lifelong jungle dweller from 100 million years ago, it would snap obstructing trees with head butts.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A lifelong jungle dweller from 100 million years ago, it would snap obstructing trees with head butts.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A lifelong jungle dweller from 100 million years ago, it would snap obstructing trees with head butts.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A lifelong jungle dweller from 100 million years ago, it would snap obstructing trees with head butts.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It was resurrected from an iron ball-like fossil. It downs prey with its headbutts.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A lifelong jungle dweller from 100 million years ago, it would snap obstructing trees with headbutts.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It was resurrected from an iron ball-like fossil. It downs prey with its headbutts.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"A lifelong jungle dweller from 100 million years ago, it would snap obstructing trees with headbutts.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It lived in jungles around a hundred million years ago. It used its skillful headbutts to combat Aerodactyl.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"In rock layers where Cranidos fossils are found, the fossilized trunks of trees snapped in two are also often found.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"A primeval Pokémon, it possesses a hard and sturdy skull, lacking any intelligence within.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its hard skull is its distinguishing feature. It snapped trees by headbutting them, and then it fed on their ripe berries.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lived in jungles around 100 million years ago. Its skull is as hard as iron.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It was resurrected from an iron-ball-like fossil. It downs prey with its headbutts.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"An incredibly rare sight. They duel each other by ramming their heads together, and the resulting sound echoes throughout the area like the pealing of a bell.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lived in jungles around a hundred million years ago. It used its skillful headbutts to combat Aerodactyl.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Cranidos toughen up their already sturdy heads by headbutting one another.\"\n    }\n  ],\n  \"409\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"In ancient times, people would dig up fossils of this Pokémon and use its skull, which is harder than steel, to make helmets.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its powerful head butt has enough power to shatter even the most durable things upon impact.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its skull is as hard as iron. It is a brute that tears down jungle trees while catching prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If two were to smash their heads together, their foot-thick skulls would keep them from fainting.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its skull withstands impacts of any magnitude. As a result, its brain never gets the chance to grow.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its skull withstands impacts of any magnitude. As a result, its brain never gets the chance to grow.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If two were to smash their heads together, their foot-thick skulls would keep them from fainting.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If two were to smash their heads together, their foot-thick skulls would keep them from fainting.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If two were to smash their heads together, their foot-thick skulls would keep them from fainting.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If two were to smash their heads together, their foot-thick skulls would keep them from fainting.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its skull withstands impacts of any magnitude. As a result, its brain never gets the chance to grow.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its skull is as hard as iron. It is a brute that tears down jungle trees while catching prey.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its skull withstands impacts of any magnitude. As a result, its brain never gets the chance to grow.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its skull is as hard as iron. It is a brute that tears down jungle trees while catching prey.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The result of repeated headbutts is a skull grown thick and hard. However, its brain has shrunk in size compared with Cranidos's.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Records exist of a revived fossil that evolved into Rampardos. It proceeded to escape and then destroy a skyscraper with a headbutt.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"In ancient times, people would dig up fossils of this Pokémon and use its skull, which is harder than steel, to make helmets.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This ancient Pokémon used headbutts skillfully. Its brain was really small, so some theories suggest that its stupidity led to its extinction.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its powerful headbutt has enough force to shatter even the most durable things upon impact.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its skull is as hard as iron. It is a brute that tears down jungle trees while catching prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Very little is known about its biology. Can knock down massive trees by smashing its beautiful, pearl-like crown against them.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Stifled by a thick skull that can withstand any impact, this Pokémon's brain never got very big.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If two were to smash their heads together, their foot-thick skulls would keep them from fainting.\"\n    }\n  ],\n  \"410\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Although its fossils can be found in layers of primeval rock, nothing but its face has ever been discovered.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that lived in jungles around 100 million years ago. Its facial hide is extremely hard.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It habitually polishes its face by rubbing it against tree trunks. It is weak to attacks from behind.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is outstandingly armored. As a result, it can eat grass and berries without having to fight.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It was generated from a fossil dug out of a layer of clay that was older than anyone knows. It has a sturdy face.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It was generated from a fossil dug out of a layer of clay that was older than anyone knows. It has a sturdy face.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is outstandingly armored. As a result, it can eat grass and berries without having to fight.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is outstandingly armored. As a result, it can eat grass and berries without having to fight.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is outstandingly armored. As a result, it can eat grass and berries without having to fight.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is outstandingly armored. As a result, it can eat grass and berries without having to fight.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It habitually polishes its face by rubbing it against tree trunks. It is weak to attacks from behind.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It was generated from a fossil dug out of a layer of clay that was older than anyone knows. It has a sturdy face.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It habitually polishes its face by rubbing it against tree trunks. It is weak to attacks from behind.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It was generated from a fossil dug out of a layer of clay that was older than anyone knows. It has a sturdy face.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Many fossils of this Pokémon have been found, but almost none have shown signs of damage to the face.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon lived in primeval jungles. Few enemies would have been willing to square off against its heavily armored face, so it's thought.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"A mild-mannered, herbivorous Pokémon, it used its face to dig up tree roots to eat. The skin on its face was plenty tough.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although its fossils can be found in layers of primeval rock, nothing but its face has ever been discovered.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A Pokémon that lived in jungles around 100 million years ago. Its facial hide is extremely hard.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It habitually polishes its face by rubbing it against tree trunks. It is weak to attacks from behind.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Much remains unknown about this Pokémon, as few have ever seen it. However, we know that it is calm and dislikes conflict, and it enjoys polishing its face against trees and rocks.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is outstandingly armored. As a result, it has no particular need to battle with others and can spend its time feeding on grass and berries.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon lived in primeval jungles. It's thought that Shieldon had few enemies thanks to its sturdy face.\"\n    }\n  ],\n  \"411\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It lived in the same environments as Rampardos. Their fossils have been found together—seemingly from after they'd fought to the finish.\"\n    },\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Any frontal attack is repulsed. It is a docile Pokémon that feeds on grass and berries.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When attacked, they form a wall with their shieldlike faces to protect their young.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When they lined up side by side, no foe could break through. They shielded their young in that way.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When attacked, they form a wall. Their rock-hard faces serve to protect them from the attacks.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When attacked, they form a wall. Their rock-hard faces serve to protect them from the attacks.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When they lined up side by side, no foe could break through. They shielded their young in that way.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When they lined up side by side, no foe could break through. They shielded their young in that way.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When they lined up side by side, no foe could break through. They shielded their young in that way.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When they lined up side by side, no foe could break through. They shielded their young in that way.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When they lined up side by side, no foe could break through. They shielded their young in that way.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Any frontal attack is repulsed. It is a docile Pokémon that feeds on grass and berries.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When they lined up side by side, no foe could break through. They shielded their young in that way.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Any frontal attack is repulsed. It is a docile Pokémon that feeds on grass and berries.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"While it can guard against any sort of attack from the front, it is left without recourse when attacked from behind.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It lived in the same environments as Rampardos. Their fossils have been found together—seemingly from after they'd fought to the finish.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The bones of its face are huge and hard, so they were mistaken for its spine until after this Pokémon was successfully restored.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pokémon is from roughly 100 million years ago. Its terrifyingly tough face is harder than steel.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Any frontal attack is repulsed. It is a docile Pokémon that feeds on grass and berries.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When attacked, they form a wall with their shield-like faces to protect their young.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its face is sturdy—as strong as diamond—and this hardness offers a very stable defense. Much about this species is still unknown, such as its natural habitat.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"While it can guard against any sort of attack from the front, it is left without recourse when attacked from behind.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Bastiodon live in herds. When assaulted by enemies, they line up side by side and use their hard faces to block attacks.\"\n    }\n  ],\n  \"412\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"To shelter itself from cold, wintry winds, it covers itself with a cloak made of twigs and leaves.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"If its cloak is broken in battle, it quickly remakes the cloak with materials nearby.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Even if it is born where there are no cocooning materials, it somehow always ends up with a cloak.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It covers itself with a cloak to shelter from the cold. When it's hot, its cloak is thinner.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It covers itself with a cloak to shelter from the cold. When it's hot, its cloak is thinner.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Even if it is born where there are no cocooning materials, it somehow always ends up with a cloak.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Even if it is born where there are no cocooning materials, it somehow always ends up with a cloak.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Even if it is born where there are no cocooning materials, it somehow always ends up with a cloak.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Even if it is born where there are no cocooning materials, it somehow always ends up with a cloak.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"To shelter itself from cold, wintry winds, it covers itself with a cloak made of twigs and leaves.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If its cloak is broken in battle, it quickly remakes the cloak with materials nearby.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"To shelter itself from cold, wintry winds, it covers itself with a cloak made of twigs and leaves.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If its cloak is broken in battle, it quickly remakes the cloak with materials nearby.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"To shelter itself from cold, wintry winds, it covers itself with a cloak made of twigs and leaves.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"If its cloak is broken in battle, it quickly remakes the cloak with materials nearby.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"If its cloak is even slightly damaged, Burmy will immediately repair it with whatever is close at hand. The Pokémon within the cloak is scrawny and vulnerable to the cold.\"\n    }\n  ],\n  \"413\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When Burmy evolved, its cloak became a part of this Pokémon's body. The cloak is never shed.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its appearance changes depending on where it evolved. The materials on hand become a part of its body.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When evolving, its body takes in surrounding materials. As a result, there are many body variations.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is said that a Wormadam that evolves on a cold day will have a thicker cloak.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is said that a Wormadam that evolves on a cold day will have a thicker cloak.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When evolving, its body takes in surrounding materials. As a result, there are many body variations.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When evolving, its body takes in surrounding materials. As a result, there are many body variations.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When evolving, its body takes in surrounding materials. As a result, there are many body variations.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When evolving, its body takes in surrounding materials. As a result, there are many body variations.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its appearance changes depending on where it evolved. The materials on hand become a part of its body.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When Burmy evolved, its cloak became a part of this Pokémon's body. The cloak is never shed.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its appearance changes depending on where it evolved. The materials on hand become a part of its body.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Burmy evolved, its cloak became a part of this Pokémon's body. The cloak is never shed.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When Burmy evolves, its cloak becomes a part of its body. Wormadam's cloak is never shed.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its appearance changes depending on where it evolved. The materials on hand become a part of its body.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The cloak—fashioned from plant matter—has merged with the Pokémon and is now part of the body, like fur or skin. I suspect this fusion is an effect of the energy involved in evolution.\"\n    }\n  ],\n  \"414\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves the honey of flowers and steals honey collected by Combee.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It does not keep a nest. It flies over fields and mountains in constant search of floral honey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"While it loves floral honey, it won't gather any itself. Instead, it plots to steal some from Combee.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It flutters around at night and steals honey from the Combee hive.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It flutters around at night and steals honey from the Combee hive.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"While it loves floral honey, it won't gather any itself. Instead, it plots to steal some from Combee.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"While it loves floral honey, it won't gather any itself. Instead, it plots to steal some from Combee.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"While it loves floral honey, it won't gather any itself. Instead, it plots to steal some from Combee.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"While it loves floral honey, it won't gather any itself. Instead, it plots to steal some from Combee.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It loves the honey of flowers and steals honey collected by Combee.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It flutters around at night and steals honey from the Combee hive.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It loves the honey of flowers and steals honey collected by Combee.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It flutters around at night and steals honey from the Combee hive.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It loves the nectar of flowers and steals nectar collected by Combee.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It does not keep a nest. It flies over fields and mountains in constant search of its much-beloved nectar.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Scatters steel-colored scales as it flaps its wings. Despite being observed feeding primarily on the nectar of flowers, Mothim is not often seen around flower gardens.\"\n    }\n  ],\n  \"415\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon formed by three others. It busily carries sweet floral honey to Vespiquen.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It collects and delivers honey to its colony. At night, they cluster to form a beehive and sleep.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The trio is together from birth. It constantly gathers honey from flowers to please Vespiquen.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"At night, Combee sleep in a group of about a thousand, packed closely together in a lump.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"At night, Combee sleep in a group of about a thousand, packed closely together in a lump.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The trio is together from birth. It constantly gathers honey from flowers to please Vespiquen.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The trio is together from birth. It constantly gathers honey from flowers to please Vespiquen.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This Pokémon is a set of three. When they sleep, they gather up and form a giant hive of 100 Combee.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This Pokémon is a set of three. When they sleep, they gather up and form a giant hive of 100 Combee.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The trio is together from birth. It constantly gathers honey from flowers to please Vespiquen.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It collects and delivers honey to its colony. At night, they cluster to form a beehive and sleep.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The trio is together from birth. It constantly gathers honey from flowers to please Vespiquen.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It collects and delivers honey to its colony. At night, they cluster to form a beehive and sleep.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The members of the trio spend all their time together. Each one has a slightly different taste in nectar.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It ceaselessly gathers nectar from sunrise to sundown, all for the sake of Vespiquen and the swarm.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Three Pokémon joined to become one. It busily carries sweet nectar to Vespiquen.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They collect and deliver honey to their colony. At night, they cluster to form a beehive and sleep.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"They swear fealty to a queen Pokémon and work diligently to gather nectar. Each swarm produces a different flavor of honey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"At night, Combee sleep in a group of about a hundred, packed closely together in a lump.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The trio is together from birth. It constantly gathers nectar from flowers to please Vespiquen.\"\n    }\n  ],\n  \"416\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its abdomen is a honeycomb for grubs. It raises its grubs on honey collected by Combee.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When endangered, grubs from its six-cell honeycomb strike back. There is only one in a colony.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It releases various pheromones to make the grubs in its body do its bidding while fighting foes.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It raises grubs in the holes in its body. It secretes pheromones to control Combee.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It raises grubs in the holes in its body. It secretes pheromones to control Combee.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It releases various pheromones to make the grubs in its body do its bidding while fighting foes.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It releases various pheromones to make the grubs in its body do its bidding while fighting foes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It houses its colony in cells in its body and releases various pheromones to make those grubs do its bidding.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It houses its colony in cells in its body and releases various pheromones to make those grubs do its bidding.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It houses its colony in cells in its body and releases various pheromones to make those grubs do its bidding.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its abdomen is a honeycomb for grubs. It raises its grubs on honey collected by Combee.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It houses its colony in cells in its body and releases various pheromones to make those grubs do its bidding.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its abdomen is a honeycomb for grubs. It raises its grubs on honey collected by Combee.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It skillfully commands its grubs in battles with its enemies. The grubs are willing to risk their lives to defend Vespiquen.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Vespiquen that give off more pheromones have larger swarms of Combee attendants.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its abdomen is a honeycomb for grubs. It raises its grubs on nectar collected by Combee.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When it is in danger, grubs from its six-cell honeycomb strike back. There is only one in a colony.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Commands its subjects to build its hive. It will dispatch any interlopers who dare sneak into its nest and use them as nourishment for itself.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It houses its colony in cells in its body and releases various pheromones to make those grubs do its bidding.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It raises grubs in the holes in its body. It secretes pheromones to control Combee.\"\n    }\n  ],\n  \"417\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It makes fur balls that crackle with static electricity. It stores them with berries in tree holes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It makes electricity with pouches in its cheeks and shoots charges from its tail. It lives atop trees.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A pair may be seen rubbing their cheek pouches together in an effort to share stored electricity.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It's one of the kinds of Pokémon with electric cheek pouches. It shoots charges from its tail.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It's one of the kinds of Pokémon with electric cheek pouches. It shoots charges from its tail.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A pair may be seen rubbing their cheek pouches together in an effort to share stored electricity.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A pair may be seen rubbing their cheek pouches together in an effort to share stored electricity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A pair may be seen rubbing their cheek pouches together in an effort to share stored electricity.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A pair may be seen rubbing their cheek pouches together in an effort to share stored electricity.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It makes fur balls that crackle with static electricity. It stores them with berries in tree holes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A pair may be seen rubbing their cheek pouches together in an effort to share stored electricity.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It makes fur balls that crackle with static electricity. It stores them with berries in tree holes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"A pair may be seen rubbing their cheek pouches together in an effort to share stored electricity.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It stores its own fur balls that crackle with static electricity together with its favorite berries in tree hollows.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It makes electricity with pouches in its cheeks and shoots charges from its tail. It lives atop trees.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A species related to the Pikachu line. Though Pachirisu is a calm Pokémon, it still presents a danger should one touch its electrified tail or cheeks.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's one of the kinds of Pokémon with electric cheek pouches. It shoots charges from its tail.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A pair may be seen rubbing their cheek pouches together in an effort to share stored electricity.\"\n    }\n  ],\n  \"418\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a flotation sac that is like an inflatable collar. It floats on water with its head out.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It swims by rotating its two tails like a screw. When it dives, its flotation sac collapses.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It spins its two tails like a screw to propel itself through water. The tails also slice clinging seaweed.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It inflates its flotation sac, keeping its face above water in order to watch for prey movement.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It inflates its flotation sac, keeping its face above water in order to watch for prey movement.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It spins its two tails like a screw to propel itself through water. The tails also slice clinging seaweed.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It spins its two tails like a screw to propel itself through water. The tails also slice clinging seaweed.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It inflates the flotation sac around its neck and pokes its head out of the water to see what is going on.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It inflates the flotation sac around its neck and pokes its head out of the water to see what is going on.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It swims by rotating its two tails like a screw. When it dives, its flotation sac collapses.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It inflates the flotation sac around its neck and pokes its head out of the water to see what is going on.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It swims by rotating its two tails like a screw. When it dives, its flotation sac collapses.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It inflates the flotation sac around its neck and pokes its head out of the water to see what is going on.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When air fills the flotation sac on its neck, the sac balloons like an inner tube. This Pokémon floats with its head out of the water.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It swims by rotating its two tails like a screw. When it dives, its flotation sac collapses.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It moves freely in the water by spinning its forked tail for propulsion. The resemblance to the screw of a steamboat is coincidental.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It spins its two tails like a screw to propel itself through water. The tails also slice clinging seaweed.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It inflates its flotation sac, keeping its face above water in order to watch for prey movement.\"\n    }\n  ],\n  \"419\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It floats using its well-developed flotation sac. It assists in the rescues of drowning people.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its flotation sac developed as a result of pursuing aquatic prey. It can double as a rubber raft.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is a common sight around fishing ports. It is known to rescue people and carry off prey.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"With its flotation sac inflated, it can carry people on its back. It deflates the sac before it dives.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"With its flotation sac inflated, it can carry people on its back. It deflates the sac before it dives.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is a common sight around fishing ports. It is known to rescue people and carry off prey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is a common sight around fishing ports. It is known to rescue people and carry off prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is a common sight around fishing ports. It is known to rescue people and carry off prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is a common sight around fishing ports. It is known to rescue people and carry off prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It floats using its well-developed flotation sac. It assists in the rescues of drowning people.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its flotation sac developed as a result of pursuing aquatic prey. It can double as a rubber raft.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It floats using its well-developed flotation sac. It assists in the rescues of drowning people.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its flotation sac developed as a result of pursuing aquatic prey. It can double as a rubber raft.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It floats using its well-developed flotation sac. It assists in the rescues of drowning people.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its flotation sac developed as a result of pursuing aquatic prey. Floatzel carries people as if it were a rubber raft.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Has a long, rather splendid flotation sac, which prevents Floatzel from drowning even in stormy seas. One might glimpse this species around fishing hamlets from time to time.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"With its flotation sac inflated, it can carry people on its back. It deflates the sac before it dives.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It is a common sight around fishing ports. It is known to rescue people and help fishers carry what they caught.\"\n    }\n  ],\n  \"420\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The small ball holds the nutrients needed for evolution. Apparently, it is very sweet and tasty.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Sunlight colors it red. When the small ball is drained of nutrients, it shrivels to herald evolution.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The small ball is not only filled with nutrients, it is also tasty. Starly try to peck it off.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It evolves by sucking the energy out of the small ball where it had been storing nutrients.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It evolves by sucking the energy out of the small ball where it had been storing nutrients.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The small ball is not only filled with nutrients, it is also tasty. Starly try to peck it off.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The small ball is not only filled with nutrients, it is also tasty. Starly try to peck it off.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The small ball is not only filled with nutrients, it is also tasty. Starly try to peck it off.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The small ball is not only filled with nutrients, it is also tasty. Starly try to peck it off.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Sunlight colors it red. When the small ball is drained of nutrients, it shrivels to herald evolution.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It evolves by sucking the energy out of the small ball where it had been storing nutrients.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sunlight colors it red. When the small ball is drained of nutrients, it shrivels to herald evolution.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It evolves by sucking the energy out of the small ball where it had been storing nutrients.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It nimbly dashes about to avoid getting pecked by bird Pokémon that would love to make off with its small, nutrient-rich storage ball.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The deeper a Cherubi's red, the more nutrients it has stockpiled in its body. And the sweeter and tastier its small ball!\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The small ball holds the nutrients needed for evolution. Apparently, it is very sweet and tasty.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Sunlight colors it red. When the small ball is drained of nutrients and shriveled, evolution is near.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Once the fruit growing alongside the main body is large and plump, Cherubi will use the nutrients within to evolve. The fruit then detaches, becoming nourishment for other creatures.\"\n    }\n  ],\n  \"421\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It blooms during times of strong sunlight. It tries to make up for everything it endured as a bud.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is docile as a bud, but turns cheerful when it blooms. It folds back into a bud if sunlight wanes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If it senses strong sunlight, it opens its folded petals to absorb the sun's rays with its whole body.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"During times of strong sunlight, its bud blooms, its petals open fully, and it becomes very active.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"During times of strong sunlight, its bud blooms, its petals open fully, and it becomes very active.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If it senses strong sunlight, it opens its folded petals to absorb the sun's rays with its whole body.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If it senses strong sunlight, it opens its folded petals to absorb the sun's rays with its whole body.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If it senses strong sunlight, it opens its folded petals to absorb the sun's rays with its whole body.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If it senses strong sunlight, it opens its folded petals to absorb the sun's rays with its whole body.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"During times of strong sunlight, its bud blooms, its petals open fully, and it becomes very active.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it senses strong sunlight, it opens its folded petals to absorb the sun's rays with its whole body.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"During times of strong sunlight, its bud blooms, its petals open fully, and it becomes very active.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If it senses strong sunlight, it opens its folded petals to absorb the sun's rays with its whole body.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As a bud, it barely moves. It sits still, placidly waiting for sunlight to appear.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its folded petals are pretty tough. Bird Pokémon can peck at them all they want, and Cherrim won't be bothered at all.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It blooms during times of strong sunlight. The Pokémon tries to make up for everything it endured as a bud.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is docile as a bud and turns cheerful when it blooms. It folds back into a bud if sunlight wanes.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Motionless, save for the occasional quiver. A rich array of Pokémon can be found gathered around it, drawn by the scent exuded from Cherrim's folded petals.\"\n    }\n  ],\n  \"422\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its colors and shapes differ from region to region. In the Sinnoh region, two types are confirmed.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives along bodies of water. Its body shape has changed to suit its habitat.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Beware of pushing strongly on its squishy body, as it makes a mysterious purple fluid ooze out.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its shape and coloration vary, depending on its habitat.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its shape and coloration vary, depending on its habitat.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Beware of pushing strongly on its squishy body, as it makes a mysterious purple fluid ooze out.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Beware of pushing strongly on its squishy body, as it makes a mysterious purple fluid ooze out.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Beware of pushing strongly on its squishy body, as it makes a mysterious purple fluid ooze out.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Beware of pushing strongly on its squishy body, as it makes a mysterious purple fluid ooze out.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Beware of pushing strongly on its squishy body, as it makes a mysterious purple fluid ooze out.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its shape and coloration vary, depending on its habitat.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Beware of pushing strongly on its squishy body, as it makes a mysterious purple fluid ooze out.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its shape and coloration vary, depending on its habitat.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"For the most part, it makes its home along the seashore. Its color and form differ according to its habitat and the quality of its food.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Purple mucus sticks to the hands of anyone who touches it. Take care, as the substance is troublesome to wash off. \"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"While they normally live in the sea, they can function on land, too, until their skin dries out.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it senses danger, a purple liquid oozes out of it. The liquid is thought to be something like greasy sweat.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon's habitat shapes its physique. According to some theories, life in warm ocean waters causes this variation to develop.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Subjecting this Pokémon to a strong force causes it to secrete a strange purple fluid. Though harmless, the fluid is awfully sticky.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its colors and shapes differ from region to region. In the Sinnoh region, two types are confirmed.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives along bodies of water. Its body shape changed to suit its habitat.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Found in abundance on seashores bordering warm waters. Shellos are unexpectedly friendly and will crawl toward any person they see. Take care not to get coated in mucus!\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It used to have a shell on its back long ago. This species is closely related to Pokémon like Shellder.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It oozes a purple fluid to deter enemies. Apparently, there are more West Sea Shellos now than there were in the past.\"\n    }\n  ],\n  \"423\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has a pliable body without any bones. If any part of its body is torn off, it grows right back.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It apparently had a huge shell for protection in ancient times. It lives in shallow tidal pools.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Long ago, its entire back was shielded with a sturdy shell. There are traces of it left in its cells.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When its natural enemy attacks, it oozes purple fluid and escapes.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When its natural enemy attacks, it oozes purple fluid and escapes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Long ago, its entire back was shielded with a sturdy shell. There are traces of it left in its cells.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Long ago, its entire back was shielded with a sturdy shell. There are traces of it left in its cells.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Long ago, its entire back was shielded with a sturdy shell. There are traces of it left in its cells.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Long ago, its entire back was shielded with a sturdy shell. There are traces of it left in its cells.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When its natural enemy attacks, it oozes purple fluid and escapes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It apparently had a huge shell for protection in ancient times. It lives in shallow tidal pools.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When its natural enemy attacks, it oozes purple fluid and escapes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It apparently had a huge shell for protection in ancient times. It lives in shallow tidal pools.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It has strong regenerative capabilities. Even if parts of it are bitten off by fish Pokémon, it will return to normal within a few hours.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Plankton, invisible to the naked eye, is its main food source. It comes onto the land periodically, but the reason for this is not known.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Long ago, it had a shell on its back. There's now a vestigial plate on its back that's hard but thin.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Their shape and color change, depending on their environment and diet. There are many of them at beaches where the waves are calm.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its search for food sometimes leads it onto land, where it leaves behind a sticky trail of slime as it passes through.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The softness of its body helps disperse the force of impacts, so although its body is uncommonly squishy, it's also surprisingly resilient.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has a pliable body without any bones. If any part of its body is torn off, it grows right back.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It apparently had a huge shell for protection in ancient times. It lives in shallow tidal pools.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Eats beach sand for nourishment. Should one Gastrodon encounter another of a different color, a fierce battle will inevitably ensue.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its whole body is sticky with mucus. In the past, this form of Gastrodon was by far the more numerous one.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It appears on beaches where the waters are shallow. Once it catches prey, it will slowly melt them with its mucus before slurping them up.\"\n    }\n  ],\n  \"424\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"To eat, it deftly shucks nuts with its two tails. It rarely uses its arms now.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"They work in large colonies and make rings by linking their tails, apparently in friendship.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Split into two, the tails are so adept at handling and doing things, Ambipom rarely uses its hands.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They live on large trees. They are said to communicate by connecting their tails to those of others.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is very difficult to dodge the consecutive strikes of its two tails.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Split into two, the tails are so adept at handling and doing things, Ambipom rarely uses its hands.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Split into two, the tails are so adept at handling and doing things, Ambipom rarely uses its hands.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Split into two, the tails are so adept at handling and doing things, Ambipom rarely uses its hands.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Split into two, the tails are so adept at handling and doing things, Ambipom rarely uses its hands.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They work in large colonies and make rings by linking their tails, apparently in friendship.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"To eat, it deftly shucks nuts with its two tails. It rarely uses its arms now.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They work in large colonies and make rings by linking their tails, apparently in friendship.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"To eat, it deftly shucks nuts with its two tails. It rarely uses its arms now.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"In their search for comfortable trees, they get into territorial disputes with groups of Passimian. They win about half the time.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It uses its tails for everything. If it wraps both of its tails around you and gives you a squeeze, that's proof it really likes you.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"To eat, it deftly shucks nuts with its two tails. It rarely uses its arms now.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"They work in large colonies and make rings by linking their tails, apparently in friendship.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"To affirm their kinship, members of this species will form a ring by linking their newly doubled tails together. On rare occasions, humans have been accepted into such rings.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They live on large trees. They are said to communicate by connecting their tails to those of others.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Split into two, the tails are so adept at handling and doing things that Ambipom rarely uses its hands.\"\n    }\n  ],\n  \"425\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon formed by the spirits of people and Pokémon. It loves damp, humid seasons.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It tugs on the hands of children to steal them away. However, it gets pulled around instead.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Because of the way it floats aimlessly, an old folktale calls it a \\\"Signpost for Wandering Spirits.\\\"\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is whispered that any child who mistakes Drifloon for a balloon and holds on to it could wind up missing.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is whispered that any child who mistakes Drifloon for a balloon and holds on to it could wind up missing.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Because of the way it floats aimlessly, an old folktale calls it a \\\"Signpost for Wandering Spirits.\\\"\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because of the way it floats aimlessly, an old folktale calls it a \\\"Signpost for Wandering Spirits.\\\"\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"These Pokémon are called the \\\"Signpost for Wandering Spirits.\\\" Children holding them sometimes vanish.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"These Pokémon are called the \\\"Signpost for Wandering Spirits.\\\" Children holding them sometimes vanish.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A Pokémon formed by the spirits of people and Pokémon. It loves damp, humid seasons.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"These Pokémon are called the \\\"Signpost for Wandering Spirits.\\\" Children holding them sometimes vanish.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"A Pokémon formed by the spirits of people and Pokémon. It loves damp, humid seasons.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"These Pokémon are called the \\\"Signpost for Wandering Spirits.\\\" Children holding them sometimes vanish.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Stories go that it grabs the hands of small children and drags them away to the afterlife. It dislikes heavy children.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"If for some reason its body bursts, its soul spills out with a screaming sound.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its round body is stuffed with souls and expands each time it leads someone away.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Wandering souls gathered together to form this Pokémon. When trying to make friends with children, Drifloon grabs them by the hand.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Perhaps seeking company, it approaches children. However, it often quickly runs away again when the children play too roughly with it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The gathering of many souls gave rise to this Pokémon. During humid seasons, they seem to appear in abundance.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a Pokémon formed by the spirits of people and Pokémon. It loves damp, humid seasons.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It tugs on the hands of children to spirit them away. However, it gets pulled around instead.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Said to lure away young children and carry them off to the afterlife. Some whisper that Drifloon are formed of reincarnated human souls, but these rumors are as yet unconfirmed.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is whispered that any child who mistakes Drifloon for a balloon and holds on to it could wind up missing.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Because of the way it floats aimlessly, an old folktale calls it a \\\"signpost for wandering spirits.\\\"\"\n    }\n  ],\n  \"426\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It's drowzy in daytime, but flies off in the evening in big groups. No one knows where they go.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It carries people and Pokémon when it flies. But since it only drifts, it can end up anywhere.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"At dusk, swarms of them are carried aloft on winds. When noticed, they suddenly vanish.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It can generate and release gas within its body. That's how it can control the altitude of its drift.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It can generate and release gas within its body. That's how it can control the altitude of its drift.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"At dusk, swarms of them are carried aloft on winds. When noticed, they suddenly vanish.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"At dusk, swarms of them are carried aloft on winds. When noticed, they suddenly vanish.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They carry people and Pokémon, but the wind can catch them, so there can't be a fixed destination.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They carry people and Pokémon, but the wind can catch them, so there can't be a fixed destination.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It carries people and Pokémon when it flies. But since it only drifts, it can end up anywhere.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It's drowsy in daytime, but flies off in the evening in big groups. No one knows where they go.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It carries people and Pokémon when it flies. But since it only drifts, it can end up anywhere.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It's drowsy in daytime, but flies off in the evening in big groups. No one knows where they go.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"There was once an incident in which a man took a trip riding a Drifblim, only to go missing.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Even while under careful observation, large flocks of Drifblim flying at dusk will inexplicably disappear from view.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"There's a rumor that if you catch a Drifblim floating on the wind at dusk, you'll be carried away to the afterlife.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The raw material for the gas inside its body is souls. When its body starts to deflate, it's thought to carry away people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Some say this Pokémon is a collection of souls burdened with regrets, silently drifting through the dusk.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Some say this Pokémon is a collection of souls burdened with regrets, silently drifting through the dusk.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It grabs people and Pokémon and carries them off somewhere. Where do they go? Nobody knows.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It grabs people and Pokémon and carries them off somewhere. Where do they go? Nobody knows.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They're drowsy in daytime but fly off in the evening in big groups. No one knows where they go.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It carries people and Pokémon when it flies. But since it only drifts, it can end up anywhere.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It drifts along at dusk, perfectly silent. Its transient, melancholy aspect touches some people deeply—every so often, one will come upon a song or poem devoted to Drifblim.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It can generate and release gas within its body. That's how it can control the altitude of its drift.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They carry people and Pokémon, but the wind can catch them, so there can't be a fixed destination.\"\n    }\n  ],\n  \"427\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It slams foes by sharply uncoiling its rolled ears. It stings enough to make a grown-up cry in pain.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"When it senses danger, it perks up its ears. On cold nights, it sleeps with its head tucked into its fur.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its ears are always rolled up. They can be forcefully extended to shatter even a large boulder.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"You can tell how it feels by the way it rolls its ears. When it's scared, both ears are rolled up.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"You can tell how it feels by the way it rolls its ears. When it's scared, both ears are rolled up.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its ears are always rolled up. They can be forcefully extended to shatter even a large boulder.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its ears are always rolled up. They can be forcefully extended to shatter even a large boulder.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By extending its rolled-up ears and striking the ground, it can bound so high it surprises itself.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By extending its rolled-up ears and striking the ground, it can bound so high it surprises itself.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its ears are always rolled up. They can be forcefully extended to shatter even a large boulder.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it senses danger, it perks up its ears. On cold nights, it sleeps with its head tucked into its fur.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its ears are always rolled up. They can be forcefully extended to shatter even a large boulder.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it senses danger, it perks up its ears. On cold nights, it sleeps with its head tucked into its fur.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its arms and legs are weak, but when it rolls its ears up tight and then unleashes them with its full force, it can smash boulders to dust.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The reason it keeps one ear rolled up is so it can launch a swift counterattack if it's attacked by an enemy.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If both of Buneary's ears are rolled up, something is wrong with its body or mind. It's a sure sign the Pokémon is in need of care.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Buneary can attack by rolling up their ears and then striking with the force created by unrolling them. This attack becomes stronger with training.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It slams foes by sharply uncoiling its rolled ears. It stings enough to make a grown-up cry in pain.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When it senses danger, it perks up its ears. On cold nights, it sleeps with its head tucked into its fur.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"My hypothesis as to why Buneary rolls up its ears is that its hearing is far too keen. I surmise that the Pokémon protects its hearing by limiting the sound that may enter its ears.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"One of Buneary's ears is always rolled up. It can be forcefully extended to shatter even a large boulder.\"\n    }\n  ],\n  \"428\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"An extremely cautious Pokémon. It cloaks its body with its fluffy ear fur when it senses danger.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is very conscious of its looks and never fails to groom its ears. It runs with sprightly jumps.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The ears appear to be delicate. If they are touched roughly, it kicks with its graceful legs.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It sheds its fur twice a year. Its winter fur is soft and fluffy.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It sheds its fur twice a year. Its winter fur is soft and fluffy.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The ears appear to be delicate. If they are touched roughly, it kicks with its graceful legs.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The ears appear to be delicate. If they are touched roughly, it kicks with its graceful legs.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Extremely cautious, it quickly bounds off when it senses danger.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Extremely cautious, it quickly bounds off when it senses danger.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Extremely cautious, it quickly bounds off when it senses danger.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The ears appear to be delicate. If they are touched roughly, it kicks with its graceful legs.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Extremely cautious, it quickly bounds off when it senses danger.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The ears appear to be delicate. If they are touched roughly, it kicks with its graceful legs.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Lopunny regrows its coat twice a year. Mufflers and hats made from its fur are really warm.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's notably wary and has a dislike of fighting, but at the same time, it can deliver powerful kicks with its lithe legs.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Lopunny is constantly monitoring its surroundings. If dangers approaches, this Pokémon responds with superdestructive kicks.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Once hot seasons are over, Lopunny's coat will be replaced with fur that holds a lot of insulating air in preparation for colder weather.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"An extremely cautious Pokémon that cloaks its body with its fluffy ear fur when it senses danger.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It likes to keep itself clean and never fails to groom its ears. It runs with sprightly jumps.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its fur is warm and yet remarkably light. This Pokémon kicks as though it were a master of karate, driving back its opponents with ease.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon's ears are apparently very delicate. They must be handled gently and with care, or else Lopunny will kick you with its graceful legs.\"\n    }\n  ],\n  \"429\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its cries sound like incantations. Those hearing it are tormented by headaches and hallucinations.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It chants incantations. While they usually torment targets, some chants bring happiness.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its cry sounds like an incantation. It is said the cry may rarely be imbued with happiness-giving power.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its cries sound like incantations to torment the foe. It appears where you least expect it.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its cries sound like incantations to torment the foe. It appears where you least expect it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its cry sounds like an incantation. It is said the cry may rarely be imbued with happiness-giving power.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its cry sounds like an incantation. It is said the cry may rarely be imbued with happiness-giving power.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its cry sounds like an incantation. It is said the cry may rarely be imbued with happiness-giving power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its cry sounds like an incantation. It is said the cry may rarely be imbued with happiness-giving power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It chants incantations. While they usually torment targets, some chants bring happiness.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its cries sound like incantations to torment the foe. It appears where you least expect it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It chants incantations. While they usually torment targets, some chants bring happiness.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its cries sound like incantations to torment the foe. It appears where you least expect it.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It appears as if from nowhere—muttering incantations, placing curses, and giving people terrifying visions.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Mismagius have been known to cast spells to make people fall in love, so some people search for this Pokémon as if their life depended on it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Feared for its wrath and the curses it spreads, this Pokémon will also, on a whim, cast spells that help people.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its muttered curses can cause awful headaches or terrifying visions that torment others.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its cries sound like incantations. Those who hear it are tormented by headaches and hallucinations.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It chants incantations. While these incantations can torment targets, some bring happiness.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The incantations Mismagius chants can ward against misfortune, so a custom exists of inviting it into one's home. Incur the Pokémon's displeasure, however, and disaster will surely ensue.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its cry sounds like an incantation. It is said the cry may rarely be imbued with happiness-giving power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its cries sound like incantations to torment the foe. It appears where you least expect it.\"\n    }\n  ],\n  \"430\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Becoming active at night, it is known to swarm with numerous Murkrow in tow.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It makes its Murkrow cronies bring it food. It idles its time away, grooming itself in its nest.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If one utters a deep cry, many Murkrow gather quickly. For this, it is called \\\"Summoner of Night.\\\"\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is merciless by nature. It is said that it never forgives the mistakes of its Murkrow followers.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is merciless by nature. It is said that it never forgives the mistakes of its Murkrow followers.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If one utters a deep cry, many Murkrow gather quickly. For this, it is called \\\"Summoner of Night.\\\"\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If one utters a deep cry, many Murkrow gather quickly. For this, it is called \\\"Summoner of Night.\\\"\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If one utters a deep cry, many Murkrow gather quickly. For this, it is called \\\"Summoner of Night.\\\"\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If one utters a deep cry, many Murkrow gather quickly. For this, it is called \\\"Summoner of Night.\\\"\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If one utters a deep cry, many Murkrow gather quickly. For this, it is called \\\"Summoner of Night.\\\"\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Becoming active at night, it is known to swarm with numerous Murkrow in tow.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"If one utters a deep cry, many Murkrow gather quickly. For this, it is called \\\"Summoner of Night.\\\"\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Becoming active at night, it is known to swarm with numerous Murkrow in tow.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A single cry from this nocturnal Pokémon, and more than a hundred of its Murkrow cronies will assemble.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"If its Murkrow cronies fail to catch food for it, or if it feels they have betrayed it, it will hunt them down wherever they are and punish them.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It will absolutely not forgive failure from or betrayal by its goons. It has no choice in this if it wants to maintain the order of the flock.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its goons take care of most of the fighting for it. The only time it dirties its own hands is in delivering a final blow to finish off an opponent.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Becoming active at night, it is known to form flocks with numerous Murkrow in tow.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It makes its Murkrow cronies bring it food. It idles its time away, grooming itself in its nest.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"One cry from this Pokémon, and a murder of Murkrow come flying. At such times, one would think the curtain of night had fallen, plunging the world into jet-black darkness.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is merciless by nature. It is said that it never forgives the mistakes of its Murkrow followers.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A single cry from this nocturnal Pokémon, and more than 100 of its Murkrow cronies will assemble.\"\n    }\n  ],\n  \"431\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It claws if displeased and purrs when affectionate. Its fickleness is very popular among some.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"With its sharp glare, it puts foes in a mild hypnotic state. It is a very fickle Pokémon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It hides its spiteful tendency of hooking its claws into the nose of its Trainer if it isn't fed.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it's happy, Glameow demonstrates beautiful movements of its tail, like a dancing ribbon.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it's happy, Glameow demonstrates beautiful movements of its tail, like a dancing ribbon.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It hides its spiteful tendency of hooking its claws into the nose of its Trainer if it isn't fed.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It hides its spiteful tendency of hooking its claws into the nose of its Trainer if it isn't fed.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It hides its spiteful tendency of hooking its claws into the nose of its Trainer if it isn't fed.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It hides its spiteful tendency of hooking its claws into the nose of its Trainer if it isn't fed.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It claws if displeased and purrs when affectionate. Its fickleness is very popular among some.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it's happy, Glameow demonstrates beautiful movements of its tail, like a dancing ribbon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It claws if displeased and purrs when affectionate. Its fickleness is very popular among some.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it's happy, Glameow demonstrates beautiful movements of its tail, like a dancing ribbon.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It claws if displeased and purrs when affectionate. Its fickleness is very popular among some.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"With its sharp glare, it puts foes in a mild hypnotic state. It is a very fickle Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Bewitches humans with its helical tail and piercing gaze. Its hidden claws are quite sharp as well, making this Pokémon an exceedingly tricky opponent if antagonized.\"\n    }\n  ],\n  \"432\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is a brazen brute that barges its way into another Pokémon's nest and claims it as its own.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"To make itself appear intimidatingly beefy, it tightly cinches its waist with its twin tails.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It binds its body with its tails to make itself look bigger. If it locks eyes, it will glare ceaselessly.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It would claim another Pokémon's nest as its own if it finds a nest sufficiently comfortable.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It would claim another Pokémon's nest as its own if it finds a nest sufficiently comfortable.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It binds its body with its tails to make itself look bigger. If it locks eyes, it will glare ceaselessly.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It binds its body with its tails to make itself look bigger. If it locks eyes, it will glare ceaselessly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It binds its body with its tails to make itself look bigger. If it locks eyes, it will glare ceaselessly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It binds its body with its tails to make itself look bigger. If it locks eyes, it will glare ceaselessly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It would claim another Pokémon's nest as its own if it finds a nest sufficiently comfortable.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"To make itself appear intimidatingly beefy, it tightly cinches its waist with its twin tails.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It would claim another Pokémon's nest as its own if it finds a nest sufficiently comfortable.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"To make itself appear intimidatingly beefy, it tightly cinches its waist with its twin tails.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a brazen brute that barges its way into another Pokémon's nest and claims it as its own.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"To make itself appear intimidatingly beefy, it tightly cinches its waist with its split tail.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though impudent and difficult to tame, Purugly enjoys great popularity due to its fur, the beauty of which surpasses even velveteen.\"\n    }\n  ],\n  \"433\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It emits cries by agitating an orb at the back of its throat. It moves with flouncing hops.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Each time it hops, it makes a ringing sound. It deafens foes by emitting high-frequency cries.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"There is an orb inside its mouth. When it hops, the orb bounces all over and makes a ringing sound.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It emits high-frequency cries that people can't hear. Once it starts, it can cry for an awfully long time.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It emits high-frequency cries that people can't hear. Once it starts, it can cry for an awfully long time.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"There is an orb inside its mouth. When it hops, the orb bounces all over and makes a ringing sound.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"There is an orb inside its mouth. When it hops, the orb bounces all over and makes a ringing sound.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"There is an orb inside its mouth. When it hops, the orb bounces all over and makes a ringing sound.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"There is an orb inside its mouth. When it hops, the orb bounces all over and makes a ringing sound.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Each time it hops, it makes a ringing sound. It deafens foes by emitting high-frequency cries.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"There is an orb inside its mouth. When it hops, the orb bounces all over and makes a ringing sound.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Each time it hops, it makes a ringing sound. It deafens foes by emitting high-frequency cries.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"There is an orb inside its mouth. When it hops, the orb bounces all over and makes a ringing sound.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It emits cries by agitating an orb at the back of its throat. It moves with flouncing hops.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Each time it hops, it makes a ringing sound. It deafens foes by emitting high-frequency cries.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon gave me an excruciating headache when it seemingly cried out without making a sound. Perhaps there are some sounds that the human ear is simply incapable of hearing.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"There is an orb inside its mouth. When it hops, the orb bounces all over and makes a ringing sound.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It emits high-frequency cries that people can't hear. Once it starts, it can cry for an awfully long time.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It emits cries by agitating an orb at the back of its throat. It gently bounces along from place to place.\"\n    }\n  ],\n  \"434\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It protects itself by spraying a noxious fluid from its rear. The stench lingers for 24 hours.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It sprays a nose-curling, stinky fluid from its rear to repel attackers.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It sprays a foul fluid from its rear. Its stench spreads over a mile radius, driving Pokémon away.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The foul fluid from its rear is so revolting that it can make people feel queasy up to a mile and a quarter away.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The foul fluid from its rear is so revolting that it can make people feel queasy up to a mile and a quarter away.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It sprays a foul fluid from its rear. Its stench spreads over a mile radius, driving Pokémon away.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It sprays a foul fluid from its rear. Its stench spreads over a mile radius, driving Pokémon away.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It sprays a foul fluid from its rear. Its stench spreads over a mile radius, driving Pokémon away.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It sprays a foul fluid from its rear. Its stench spreads over a mile radius, driving Pokémon away.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It sprays a foul fluid from its rear. Its stench spreads over a mile radius, driving Pokémon away.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It protects itself by spraying a noxious fluid from its rear. The stench lingers for 24 hours.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It sprays a foul fluid from its rear. Its stench spreads over a mile radius, driving Pokémon away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It protects itself by spraying a noxious fluid from its rear. The stench lingers for 24 hours.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"From its rear, it sprays a foul-smelling liquid at opponents. It aims for their faces, and it can hit them from over 16 feet away.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If it lifts its tail and points its rear at you, beware. It's about to spray you with a fluid stinky enough to make you faint.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It protects itself by spraying a noxious fluid from its rear. The stench lingers for 24 hours.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It sprays a nose-curling, stinky fluid from its rear to repel attackers.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The poison that gushes from its aft end is accompanied by an utterly evil-smelling odor with such potency that one whiff can induce memory loss.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It sprays a foul fluid from its rear. Its stench spreads over a mile radius, driving Pokémon away.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The foul fluid from its rear is so revolting that it can make people feel queasy up to a mile and a quarter away.\"\n    }\n  ],\n  \"435\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It sprays a vile-smelling fluid from the tip of its tail to attack. Its range is over 160 feet.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It sprays a stinky fluid from its tail. The fluid smells worse the longer it is allowed to fester.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It attacks by spraying a horribly smelly fluid from the tip of its tail. Attacks from above confound it.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It attacks by spraying a repugnant fluid from its tail, but the stench dulls after a few squirts.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It attacks by spraying a repugnant fluid from its tail, but the stench dulls after a few squirts.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It attacks by spraying a horribly smelly fluid from the tip of its tail. Attacks from above confound it.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It attacks by spraying a horribly smelly fluid from the tip of its tail. Attacks from above confound it.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It attacks by spraying a horribly smelly fluid from the tip of its tail. Attacks from above confound it.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It attacks by spraying a horribly smelly fluid from the tip of its tail. Attacks from above confound it.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It sprays a vile-smelling fluid from the tip of its tail to attack. Its range is over 160 feet.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It sprays a stinky fluid from its tail. The fluid smells worse the longer it is allowed to fester.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It sprays a vile-smelling fluid from the tip of its tail to attack. Its range is over 160 feet.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It sprays a stinky fluid from its tail. The fluid smells worse the longer it is allowed to fester.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In its belly, it reserves stinky fluid that it shoots from its tail during battle. As this Pokémon's diet varies, so does the stench of its fluid.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It digs holes in the ground to make its nest. The stench of the fluid it lets fly from the tip of its tail is extremely potent.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It sprays a vile-smelling fluid from the tip of its tail to attack. It can fire this spray more than 160 feet.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It sprays a stinky fluid from its tail. The fluid smells worse the longer it is allowed to fester in its belly.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Sprays a poisonous fluid to take down prey. Sometimes, unable to stomach the stench of its own fluid, it leaves the bested prey uneaten.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It attacks by spraying a horribly smelly fluid from the tip of its tail. Attacks from above confound it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It attacks by spraying a repugnant fluid from its tail, but the stench dulls after a few squirts.\"\n    }\n  ],\n  \"436\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Implements shaped like it were discovered in ancient tombs. It is unknown if they are related.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"X-ray photos were taken to check its body structure. Nothing appeared, however.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"There are researchers who believe this Pokémon reflected like a mirror in the distant past.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Ancient people believed that the pattern on Bronzor's back contained a mysterious power.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Ancient people believed that the pattern on Bronzor's back contained a mysterious power.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"There are researchers who believe this Pokémon reflected like a mirror in the distant past.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"There are researchers who believe this Pokémon reflected like a mirror in the distant past.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They are found in ancient tombs. The patterns on their backs are said to be imbued with mysterious power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They are found in ancient tombs. The patterns on their backs are said to be imbued with mysterious power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Ancient people believed that the pattern on Bronzor's back contained a mysterious power.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Implements shaped like it were discovered in ancient tombs. It is unknown if they are related.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Ancient people believed that the pattern on Bronzor's back contained a mysterious power.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Implements shaped like it were discovered in ancient tombs. It is unknown if they are related.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It appears in ancient ruins. The pattern on its body doesn't come from any culture in the Galar region, so it remains shrouded in mystery.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Polishing Bronzor to a shine makes its surface reflect the truth, according to common lore. Be that as it may, Bronzor hates being polished.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Implements shaped like Bronzor were discovered in ancient tombs. It is unknown whether they are related.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"X-ray photos were taken to check its body structure, but nothing was seen.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Floats using a mysterious energy. The pattern engraved upon its back is held as sacred and can sometimes be found in imagery from ancient cemeteries and other such timeworn places.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Ancient people believed that the pattern on Bronzor's back contained a mysterious power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They are found in ancient tombs. The patterns on their backs are said to be imbued with mysterious power.\"\n    }\n  ],\n  \"437\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"One caused a news sensation when it was dug up at a construction site after a 2,000-year sleep.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can summon rain clouds. People long ago revered it as the bringer of plentiful harvests.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It brought rains by opening portals to another world. It was revered as a bringer of plentiful harvests.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Ancient people believed that petitioning Bronzong for rain was the way to make crops grow.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Ancient people believed that petitioning Bronzong for rain was the way to make crops grow.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It brought rains by opening portals to another world. It was revered as a bringer of plentiful harvests.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It brought rains by opening portals to another world. It was revered as a bringer of plentiful harvests.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"In ages past, this Pokémon was revered as a bringer of rain. It was found buried in the ground.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"In ages past, this Pokémon was revered as a bringer of rain. It was found buried in the ground.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In ages past, this Pokémon was revered as a bringer of rain. It was found buried in the ground.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Ancient people believed that petitioning Bronzong for rain was the way to make crops grow.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In ages past, this Pokémon was revered as a bringer of rain. It was found buried in the ground.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ancient people believed that petitioning Bronzong for rain was the way to make crops grow.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Some believe it to be a deity that summons rain clouds. When angered, it lets out a warning cry that rings out like the tolling of a bell.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Many scientists suspect that this Pokémon originated outside the Galar region, based on the patterns on its body.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"One caused a media storm when it was dug up at a construction site after a 2,000-year sleep.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can summon rain clouds. People long ago revered it as the bringer of plentiful harvests.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Some believe that its bell-like cry opens holes to another world. It has been revered as a deity since ancient times.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"In ages past, this Pokémon was revered as a bringer of rain. It was found buried in the ground.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It brought rains by opening portals to another world. It was revered as a bringer of plentiful harvests.\"\n    }\n  ],\n  \"438\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It looks as if it is always crying. It is actually adjusting its body's fluid levels by eliminating excess.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It prefers arid environments. It leaks water from its eyes to adjust its body's fluid levels.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It prefers an arid atmosphere. It leaks water that looks like tears when adjusting its moisture level.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"In order to adjust the level of fluids in its body, it exudes water from its eyes. This makes it appear to be crying.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"In order to adjust the level of fluids in its body, it exudes water from its eyes. This makes it appear to be crying.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It prefers an arid atmosphere. It leaks water that looks like tears when adjusting its moisture level.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It prefers an arid atmosphere. It leaks water that looks like tears when adjusting its moisture level.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It prefers an arid atmosphere. It leaks water that looks like tears when adjusting its moisture level.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It prefers an arid atmosphere. It leaks water that looks like tears when adjusting its moisture level.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It prefers arid environments. It leaks water from its eyes to adjust its body's fluid levels.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It prefers an arid atmosphere. It leaks water that looks like tears when adjusting its moisture level.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It prefers arid environments. It leaks water from its eyes to adjust its body's fluid levels.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It prefers an arid atmosphere. It leaks water that looks like tears when adjusting its moisture level.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It does not deal well with water, so it lives in dry locales. Since its surroundings tend to lack greenery, it stands out noticeably.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"From its eyes, it can expel excess moisture from its body. This liquid is similar in composition to human sweat.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It discharges moisture from its eyes, making it look like it's crying—apparently an effective way of getting enemies to let down their guard.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"If its body gets too damp, it will die. So, in a process reminiscent of sweating, its eyes expel moisture.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It expels both sweat and tears from its eyes. The sweat is a little salty, while the tears have a slight bitterness.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon lives in dry, rocky areas. As its green spheres dry out, their dull luster increases.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It looks as if it is always crying. It is actually adjusting its body's fluid levels by eliminating excess.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It prefers arid environments. It leaks water from its eyes to adjust its body's fluid levels.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its tears elicit sympathy from those who see them, but do not be deceived! This expulsion of body water is merely a physiological mechanism for keeping itself in good health.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"In order to adjust the level of fluids in its body, it exudes water from its eyes. This makes it appear to be crying.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"From its eyes, it can expel excess moisture from its body. This liquid is similar in composition to human sweat.\"\n    }\n  ],\n  \"439\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It habitually mimics foes. Once mimicked, the foe cannot take its eyes off this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It likes places where people gather. It mimics foes to confuse them, then makes its getaway.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It mimics the expressions and motions of those it sees to understand the feelings of others.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"In an attempt to confuse its enemy, it mimics the enemy's movements. Then it wastes no time in making itself scarce!\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"In an attempt to confuse its enemy, it mimics the enemy's movements. Then it wastes no time in making itself scarce!\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It mimics the expressions and motions of those it sees to understand the feelings of others.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It mimics the expressions and motions of those it sees to understand the feelings of others.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It mimics the expressions and motions of those it sees to understand the feelings of others.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It mimics the expressions and motions of those it sees to understand the feelings of others.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In an attempt to confuse its enemy, it mimics the enemy's movements. Then it wastes no time in making itself scarce!\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It habitually mimics foes. Once mimicked, the foe cannot take its eyes off this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In an attempt to confuse its enemy, it mimics the enemy's movements. Then it wastes no time in making itself scarce!\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It habitually mimics foes. Once mimicked, the foe cannot take its eyes off this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It does its absolute best to mimic the movements and expressions of its opponents, but it's still not very good at it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When this gifted mimic surprises an opponent, Mime Jr. feels so happy that it ends up forgetting it was imitating something.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It mimics everyone it sees, but it puts extra effort into copying the graceful dance steps of Mr. Rime as practice.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It looks for a Mr. Rime that's a good dancer and carefully copies the Mr. Rime's steps like an apprentice.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It habitually mimics foes. The mimicked foe is said to be unable to look away from Mime Jr.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It likes places where people gather. It mimics foes to confuse them, then makes its getaway.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Known to turn up in bustling marketplaces now and again. It mimics people much as a child would, then watches how they react, eyes sparkling.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Mime Jr. is a gifted mimic. When it startles an opponent with its skills, it feels so delighted that it forgets to keep up its act.\"\n    }\n  ],\n  \"440\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It loves round white things. It carries an egg-shaped rock in imitation of Chansey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It carries a round, egg-shaped rock in its belly pouch and gives the rock to its friends.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It likes to carry around a small rock. It may wander around others' feet and cause them to stumble.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It carefully carries a round, white rock that it thinks is an egg. It's bothered by how curly its hair looks.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It carefully carries a round, white rock that it thinks is an egg. It's bothered by how curly its hair looks.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It likes to carry around a small rock. It may wander around others' feet and cause them to stumble.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It likes to carry around a small rock. It may wander around others' feet and cause them to stumble.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It likes to carry around a small rock. It may wander around others' feet and cause them to stumble.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It likes to carry around a small rock. It may wander around others' feet and cause them to stumble.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It carries a round, egg-shaped rock in its belly pouch and gives the rock to its friends.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It carefully carries a round, white rock that it thinks is an egg. It's bothered by how curly its hair looks.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It carries a round, egg-shaped rock in its belly pouch and gives the rock to its friends.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It carefully carries a round, white rock that it thinks is an egg. It's bothered by how curly its hair looks.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It carries a round white rock in its belly pouch. If it gets along well with someone, it will sometimes give that person the rock.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It's too small to lay eggs yet. As a surrogate, it searches out round white stones.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Usually it's a well-behaved Pokémon, but if you take its round rock away, it will cry and fuss and throw a big old tantrum.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it sees something round and white, Happiny puts it into the pouch on its stomach. It sometimes becomes overloaded and can't move.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Mimicking Chansey, Happiny will place an egg-shaped stone in its belly pouch. Happiny will treasure this stone.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Happiny's willing to lend its precious round stone to those it's friendly with, but if the stone isn't returned, Happiny will cry and throw a tantrum.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It loves round, white things. It carries an egg-shaped rock in imitation of Chansey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It carries a round, egg-shaped rock in its belly pouch and gives the rock to its friends.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"In imitation of Chansey, it keeps a round stone tucked into its belly pouch and cherishes it dearly. It gets along well with children and will sometimes play house with them for fun.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It carries a round, white rock in its belly pouch. If it gets along well with someone, it will sometimes give that person the rock.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It carefully carries a round, white rock that it thinks is an egg. It's bothered by how curly its hair looks.\"\n    }\n  ],\n  \"441\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It can learn and speak human words. If they gather, they all learn the same saying.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It keeps rhythm by flicking its tail feathers like a metronome. It imitates human speech.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its tongue is just like a human's. As a result, it can cleverly mimic human speech.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It mimics the cries of other Pokémon to trick them into thinking it's one of them. This way they won't attack it.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It mimics the cries of other Pokémon to trick them into thinking it's one of them. This way they won't attack it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its tongue is just like a human's. As a result, it can cleverly mimic human speech.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its tongue is just like a human's. As a result, it can cleverly mimic human speech.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its tongue is just like a human's. As a result, it can cleverly mimic human speech.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its tongue is just like a human's. As a result, it can cleverly mimic human speech.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It mimics the cries of other Pokémon to trick them into thinking it's one of them. This way they won't attack it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can learn and speak human words. If they gather, they all learn the same saying.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It mimics the cries of other Pokémon to trick them into thinking it's one of them. This way they won't attack it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It can learn and speak human words. If they gather, they all learn the same saying.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They can learn and speak human words. If they gather, they all learn the same saying.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It keeps rhythm by flicking its tail feathers like a metronome. It also imitates human speech.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A versatile performer skilled in the imitation of human speech. It is said that older, more experienced Chatot can even understand the meaning of the words they mimic.\"\n    }\n  ],\n  \"442\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that was formed by 108 spirits. It is bound to a fissure in an odd keystone.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It was bound to a fissure in an odd keystone as punishment for misdeeds 500 years ago.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its constant mischief and misdeeds resulted in it being bound to an Odd Keystone by a mysterious spell.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It was formed by uniting 108 spirits. It has been bound to the Odd Keystone to keep it from doing any mischief.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It was formed by uniting 108 spirits. It has been bound to the Odd Keystone to keep it from doing any mischief.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its constant mischief and misdeeds resulted in it being bound to an Odd Keystone by a mysterious spell.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its constant mischief and misdeeds resulted in it being bound to an Odd Keystone by a mysterious spell.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its constant mischief and misdeeds resulted in it being bound to an Odd Keystone by a mysterious spell.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its constant mischief and misdeeds resulted in it being bound to an Odd Keystone by a mysterious spell.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A Pokémon that was formed by 108 spirits. It is bound to a fissure in an odd keystone.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It was bound to a fissure in an odd keystone as punishment for misdeeds 500 years ago.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"A Pokémon that was formed by 108 spirits. It is bound to a fissure in an odd keystone.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It was bound to a fissure in an odd keystone as punishment for misdeeds 500 years ago.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Exactly 108 spirits gathered to become this Pokémon. Apparently there are some ill-natured spirits in the mix.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"All Spiritomb's mischief and misdeeds compelled a traveler to use a mysterious spell to bind Spiritomb to an odd keystone.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is a Pokémon that was formed by 108 spirits. It is bound to a fissure in an odd keystone.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It was bound to a fissure in an odd keystone as punishment for misdeeds 500 years ago.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It lays curses by thinking wicked thoughts. Writings tell that this Pokémon was born out of the assembly of five score and eight malevolent spirits.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its constant mischief and misdeeds resulted in it being bound to an Odd Keystone by a mysterious spell.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It was formed by uniting 108 spirits. It has been bound to the Odd Keystone to keep it from doing any mischief.\"\n    }\n  ],\n  \"443\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It nests in small, horizontal holes in cave walls. It pounces to catch prey that stray too close.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It once lived in the tropics. To avoid the cold, it lives in caves warmed by geothermal heat.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It attacks using its huge mouth. While its attacks are powerful, it hurts itself out of clumsiness, too.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It nests in horizontal holes warmed by geothermal heat. Foes who get too close can expect to be pounced on and bitten.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It nests in horizontal holes warmed by geothermal heat. Foes who get too close can expect to be pounced on and bitten.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It attacks using its huge mouth. While its attacks are powerful, it hurts itself out of clumsiness, too.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It attacks using its huge mouth. While its attacks are powerful, it hurts itself out of clumsiness, too.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It attacks using its huge mouth. While its attacks are powerful, it hurts itself out of clumsiness, too.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It attacks using its huge mouth. While its attacks are powerful, it hurts itself out of clumsiness, too.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It nests in horizontal holes warmed by geothermal heat. Foes who get too close can expect to be pounced on and bitten.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It nests in small, horizontal holes in cave walls. It pounces to catch prey that stray too close.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It nests in horizontal holes warmed by geothermal heat. Foes who get too close can expect to be pounced on and bitten.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It nests in small, horizontal holes in cave walls. It pounces to catch prey that stray too close.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It lives in caves warmed by geothermal heat. Even so, when the weather gets cold, it will huddle close with others of its kind.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It skulks in caves, and when prey or an enemy passes by, it leaps out and chomps them. The force of its attack sometimes chips its teeth.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It reacts to anything that moves—flies right at it and bites it. Sometimes it injures itself, but it doesn't care too much.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its original home is an area much hotter than Alola. If you're planning to live with one, your heating bill will soar.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Gible prefers to stay in narrow holes in the sides of caves heated by geothermal energy. This way, Gible can stay warm even during a blizzard.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Gible attacks anything that moves, and it drags whatever it catches into the crevice that is its lair. Despite the big mouth, Gible's stomach is small.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It nests in small, horizontal holes in cave walls. It pounces to catch prey that stray too close.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It once lived in the tropics. To avoid the cold, it lives in caves warmed by geothermal heat.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It nests in caves untouched by sunlight. Its sharp teeth may fall out when worn away or after an impact, but they regrow within a few days.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It skulks in caves, and when prey or an enemy passes by, it leaps out and chomps them. The force of its attack sometimes chips its teeth.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It nests in horizontal holes warmed by geothermal heat. Foes who get too close can expect to be pounced on and bitten.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It nests in small, horizontal holes in cave walls. It pounces to catch prey that stray too close.\"\n    }\n  ],\n  \"444\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"There is a long-held belief that medicine made from its scales will heal even incurable illnesses.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It habitually digs up and hoards gems in its nest. Its loot is constantly targeted by thieves.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It loves sparkly things. It seeks treasures in caves and hoards the loot in its nest.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"As it digs to expand its nest, it habitually digs up gems that it then hoards in its nest.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"As it digs to expand its nest, it habitually digs up gems that it then hoards in its nest.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It loves sparkly things. It seeks treasures in caves and hoards the loot in its nest.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It loves sparkly things. It seeks treasures in caves and hoards the loot in its nest.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It loves sparkly things. It seeks treasures in caves and hoards the loot in its nest.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It loves sparkly things. It seeks treasures in caves and hoards the loot in its nest.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It loves sparkly things. It seeks treasures in caves and hoards the loot in its nest.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"As it digs to expand its nest, it habitually digs up gems that it then hoards in its nest.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It loves sparkly things. It seeks treasures in caves and hoards the loot in its nest.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"As it digs to expand its nest, it habitually digs up gems that it then hoards in its nest.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"In rare cases, it molts and sheds its scales. Medicine containing its scales as an ingredient will make a weary body feel invigorated.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Shiny objects are its passion. It can be found in its cave, scarcely moving, its gaze fixed on the jewels it's amassed or Carbink it has caught.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It loves shiny things. When it finds a Sableye trying to catch a Carbink, Gabite becomes furiously angry and attacks the Sableye.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It sheds its skin and gradually grows larger. Its scales can be ground into a powder and used as raw materials for traditional medicine.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon emits ultrasonic waves from a protrusion on either side of its head to probe pitch-dark caves.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Jewels are buried in the caves these Pokémon nest in, but you'll be torn apart by claws and fangs the moment you enter one of these caves.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"There is a long-held belief that medicine made from its scales will heal incurable illnesses.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It habitually digs up and hoards gems in its nest. Its loot is constantly targeted by thieves.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though Gabite are usually of a violent disposition, when I gave one a glass bead it had been eyeing covetously, it suddenly became quite docile.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"In rare cases, it molts and sheds its scales. Medicine containing its scales as an ingredient will make a weary body feel invigorated.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It loves sparkly things. It seeks treasures in caves and hoards the loot in its nest.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"As it digs to expand its nest, it unearths raw gemstones. It has a habit of hoarding these in its nest.\"\n    }\n  ],\n  \"445\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"When it folds up its body and extends its wings, it looks like a jet plane. It flies at sonic speed.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It flies at speeds equal to a jet fighter plane. It never allows its {{pkmn|predation|prey}} to escape.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said that when one runs at high speed, its wings create blades of wind that can fell nearby trees.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its body is covered in fine scales that reduce drag, enabling it to fly at high speeds.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its body is covered in fine scales that reduce drag, enabling it to fly at high speeds.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said that when one runs at high speed, its wings create blades of wind that can fell nearby trees.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said that when one runs at high speed, its wings create blades of wind that can fell nearby trees.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said that when one runs at high speed, its wings create blades of wind that can fell nearby trees.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said that when one runs at high speed, its wings create blades of wind that can fell nearby trees.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When it folds up its body and extends its wings, it looks like a jet plane. It flies at sonic speed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It flies at speeds equal to a jet fighter plane. It never allows its prey to escape.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When it folds up its body and extends its wings, it looks like a jet plane. It flies at sonic speed.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It flies at speeds equal to a jet fighter plane. It never allows its prey to escape.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It can fly at speeds rivaling jet planes. It dives into flocks of bird Pokémon and gulps the entire flock down whole.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The protuberances on its head serve as sensors. It can even detect distant prey.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It flies at the speed of sound while searching for prey, and it has midair battles with Salamence as the two compete for food.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its fine scales don't just reduce wind resistance—their sharp edges also cause injury to any opponent who attacks it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Garchomp makes its home in volcanic mountains. It flies through the sky as fast as a jet airplane, hunting down as much prey as it can.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Garchomp is fast both underground and above. It can bring down prey and return to its den before its body has chilled from being outside.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When it folds up its body and extends its wings, it looks like a jet plane. It flies at sonic speed.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It flies at speeds equal to a jet fighter plane. It never allows its prey to escape.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Soars across the heavens at blinding speed—a magnificent sight! It has a feral disposition. Utmost caution is required if one meets a Garchomp out in the wilds.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is said that when one runs at high speed, its wings create blades of wind that can fell nearby trees.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The protuberances on its head serve as sensors. It can even detect distant prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It flies at speeds equal to a jet fighter plane. It never allows its prey to escape.\"\n    }\n  ],\n  \"446\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It wolfs down its weight in food once a day, swallowing food whole with almost no chewing.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It hides food under its long body hair. However, it forgets it has hidden the food.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"In its desperation to gulp down food, it forgets about the food it has hidden under its fur.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It conceals food under the long fur on its body. It carts around this food stash and swallows it without chewing.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It conceals food under the long fur on its body. It carts around this food stash and swallows it without chewing.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"In its desperation to gulp down food, it forgets about the food it has hidden under its fur.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"In its desperation to gulp down food, it forgets about the food it has hidden under its fur.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"In its desperation to gulp down food, it forgets about the food it has hidden under its fur.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"In its desperation to gulp down food, it forgets about the food it has hidden under its fur.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It hides food under its long body hair. However, it forgets it has hidden the food.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It conceals food under the long fur on its body. It carts around this food stash and swallows it without chewing.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It hides food under its long body hair. However, it forgets it has hidden the food.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It conceals food under the long fur on its body. It carts around this food stash and swallows it without chewing.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It needs to consume its own weight in food every day. As far as flavor is concerned, it's indifferent.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When it finds something that looks like it might be edible, it goes right ahead and swallows it whole. That's why it gets fatter day by day.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It hides food under its long fur, but it sometimes forgets about it and causes a stinky disturbance.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Anything that looks edible, Munchlax will go on and swallow whole. Its stomach is tough enough to handle it even if the food has gone rotten.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Stuffing itself with vast amounts of food is its only concern. Whether the food is rotten or fresh, yummy or tasteless—it does not care.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It stores food beneath its fur. It might share just one bite, but only if it really trusts you.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It wolfs down its weight in food once a day, swallowing it whole with almost no chewing.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It hides food under its long body hair. However, it forgets it has hidden the food.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its robust stomach allows it to nonchalantly devour even rotted matter. It pays frequent visits to villages, seeking out food scraps intended for compost.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It needs to consume its own weight in food every day. As far as flavor is concerned, it's indifferent.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it is voraciously gulping down food, it forgets about the food it has hidden under its fur.\"\n    }\n  ],\n  \"447\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The aura that emanates from its body intensifies to alert others if it is afraid or sad.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body is lithe yet powerful. It can crest three mountains and cross two canyons in one night.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has the peculiar power of being able to see emotions such as joy and rage in the form of waves.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"They communicate with one another using their auras. They are able to run all through the night.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"They communicate with one another using their auras. They are able to run all through the night.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has the peculiar power of being able to see emotions such as joy and rage in the form of waves.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has the peculiar power of being able to see emotions such as joy and rage in the form of waves.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It uses the shapes of auras, which change according to emotion, to communicate with others.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It uses the shapes of auras, which change according to emotion, to communicate with others.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It uses the shapes of auras, which change according to emotion, to communicate with others.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The aura that emanates from its body intensifies to alert others if it is afraid or sad.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It uses the shapes of auras, which change according to emotion, to communicate with others.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The aura that emanates from its body intensifies to alert others if it is afraid or sad.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It can discern the physical and emotional states of people, Pokémon, and other natural things from the shape of their aura waves.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It's tough enough to run right through the night, and it's also a hard worker, but it's still just a youngster.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It knows how people and Pokémon feel by looking at their auras. It doesn't approach dangerous opponents.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It uses waves called auras to communicate with others of its kind. It doesn't make any noise during this time, so its enemies can't detect it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's exceedingly energetic, with enough stamina to keep running all through the night. Taking it for walks can be a challenging experience.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can use waves called auras to gauge how others are feeling. These same waves can also tell this Pokémon about the state of the environment.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The aura that emanates from its body intensifies to alert others if it is afraid or sad.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body is lithe yet powerful. It can crest three mountains and cross two canyons in one night.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though infantile in appearance, it has the mysterious ability to read the minds of humans. The pure of heart are met with Riolu's approval, while those of ill nature earn only its loathing.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They communicate with one another using their auras. They are able to run all through the night.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has the peculiar power of being able to see emotions, such as joy and rage, in the form of waves.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The aura that emanates from its body intensifies to alert others if it is afraid or sad.\"\n    }\n  ],\n  \"448\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has the ability to sense the auras of all things. It understands human speech.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"By catching the aura emanating from others, it can read their thoughts and movements.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A well-trained one can sense auras to identify and take in the feelings of creatures over half a mile away.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It's said that no foe can remain invisible to Lucario, since it can detect auras. Even foes it could not otherwise see.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It's said that no foe can remain invisible to Lucario, since it can detect auras. Even foes it could not otherwise see.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A well-trained one can sense auras to identify and take in the feelings of creatures over half a mile away.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A well-trained one can sense auras to identify and take in the feelings of creatures over half a mile away.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By reading the auras of all things, it can tell how others are feeling from over half a mile away.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By reading the auras of all things, it can tell how others are feeling from over half a mile away.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"By catching the aura emanating from others, it can read their thoughts and movements.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"By reading the auras of all things, it can tell how others are feeling from over half a mile away.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"By catching the aura emanating from others, it can read their thoughts and movements.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"By reading the auras of all things, it can tell how others are feeling from over half a mile away.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Not only does it perceive auras, but it has also gained the power to control them. It employs them in battle.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They can detect the species of a living being—and its emotions—from over half a mile away. They control auras and hunt their prey in packs.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It concentrates its mental energy and fires off mysterious waves called auras, which can crush boulders of large size to dust.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Lucario reads its opponent's feelings with its aura waves. It finds out things it would rather not know, so it gets stressed out easily.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It controls waves known as auras, which are powerful enough to pulverize huge rocks. It uses these waves to take down its prey.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can tell what people are thinking. Only Trainers who have justice in their hearts can earn this Pokémon's trust.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has the ability to sense the auras of all things. It understands human speech.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"By sensing the aura emanating from others, it can read their thoughts and movements.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A most gallant-looking creature. It emits energy waves and controls them with precision, using them to sense even faraway beings. I have given the name \\\"aura\\\" to this power.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's said that no foe can remain invisible to Lucario, since it can detect auras—even those of foes it could not otherwise see.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A well-trained one can use its aura to identify and take in the feelings of creatures over half a mile away.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"By reading the auras of all things, it can tell how others are feeling from over half a mile away.\"\n    }\n  ],\n  \"449\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in arid places. Instead of perspiration, it expels grainy sand from its body.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It enshrouds itself with sand to protect itself from germs. It does not enjoy getting wet.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It shuts its nostrils tight then travels through sand as if walking. They form colonies of around ten.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It shrouds itself in sand to ward off germs. It travels easily through the sands of the desert.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It shrouds itself in sand to ward off germs. It travels easily through the sands of the desert.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It shuts its nostrils tight then travels through sand as if walking. They form colonies of around ten.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It shuts its nostrils tight then travels through sand as if walking. They form colonies of around ten.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It shuts its nostrils tight then travels through sand as if walking. They form colonies of around 10.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It shuts its nostrils tight then travels through sand as if walking. They form colonies of around 10.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives in arid places. Instead of perspiration, it expels grainy sand from its body.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It enshrouds itself with sand to protect itself from germs. It does not enjoy getting wet.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It lives in arid places. Instead of perspiration, it expels grainy sand from its body.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It enshrouds itself with sand to protect itself from germs. It does not enjoy getting wet.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It moves through the sands with its mouth open, swallowing sand along with its prey. It gets rid of the sand by spouting it from its nose.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is active during the day and passes the cold desert nights burrowed snuggly into the sand.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in arid places. Instead of perspiration, it expels grainy sand from its body.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It enshrouds itself with sand to protect itself from germs. It does not enjoy getting wet.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though large and languid, Hippopotas is difficult to detect due to its tendency to burrow into and lurk beneath the soil. When agitated or excited, it expels sand from its nostrils.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It shuts its nostrils tight, then travels through sand as if walking. They form colonies of around 10.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It shrouds itself in sand to ward off germs. It travels easily through the sands of the desert.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It enshrouds itself with sand to protect itself from germs. It does not enjoy getting wet.\"\n    }\n  ],\n  \"450\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It blasts internally stored sand from ports on its body to create a towering twister for attack.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its huge mouth is almost seven feet across. It has enough power to completely crush a car.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is surprisingly quick to anger. It holds its mouth agape as a display of its strength.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It brandishes its gaping mouth in a display of fearsome strength. It raises vast quantities of sand while attacking.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It brandishes its gaping mouth in a display of fearsome strength. It raises vast quantities of sand while attacking.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is surprisingly quick to anger. It holds its mouth agape as a display of its strength.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is surprisingly quick to anger. It holds its mouth agape as a display of its strength.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is surprisingly quick to anger. It holds its mouth agape as a display of its strength.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is surprisingly quick to anger. It holds its mouth agape as a display of its strength.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It brandishes its gaping mouth in a display of fearsome strength. It raises vast quantities of sand while attacking.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It blasts internally stored sand from ports on its body to create a towering twister for attack.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It brandishes its gaping mouth in a display of fearsome strength. It raises vast quantities of sand while attacking.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It blasts internally stored sand from ports on its body to create a towering twister for attack.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Stones can get stuck in the ports on their bodies. Dwebble help dislodge such stones, so Hippowdon look after these Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When roused to violence by its rage, it spews out the quantities of sand it has swallowed and whips up a sandstorm.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It blasts internally stored sand from ports on its body to create a towering twister for attack.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its huge mouth opens almost seven feet wide. It has enough power to completely crush a car.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Short-tempered and easily moved to violence. It whips up whirlwinds of sand to crush its foes' spirits, then goes in for the attack.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is surprisingly quick to anger. It holds its mouth agape as a display of its strength.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It brandishes its gaping mouth in a display of fearsome strength. It raises vast quantities of sand while attacking.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It blasts internally stored sand from ports on its body to create a towering twister for attack.\"\n    }\n  ],\n  \"451\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It grips prey with its tail claws and injects poison. It tenaciously hangs on until the poison takes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It lives in arid lands. It buries itself in sand and lies in wait for unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"As soon as the tail claws close, its needle tips secrete poison. It can survive a year without food.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It burrows under the sand to lie in wait for prey. Its tail claws can inject its prey with a savage poison.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It burrows under the sand to lie in wait for prey. Its tail claws can inject its prey with a savage poison.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"As soon as the tail claws close, its needle tips secrete poison. It can survive a year without food.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"As soon as the tail claws close, its needle tips secrete poison. It can survive a year without food.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives in arid regions and can go without food for a year while waiting for prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives in arid regions and can go without food for a year while waiting for prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It grips prey with its tail claws and injects poison. It tenaciously hangs on until the poison takes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It burrows under the sand to lie in wait for prey. Its tail claws can inject its prey with a savage poison.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It grips prey with its tail claws and injects poison. It tenaciously hangs on until the poison takes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It burrows under the sand to lie in wait for prey. Its tail claws can inject its prey with a savage poison.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After burrowing into the sand, it waits patiently for prey to come near. This Pokémon and Sizzlipede share common descent.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It attacks using the claws on its tail. Once locked in its grip, its prey is unable to move as this Pokémon's poison seeps in.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It grips prey with its tail claws and injects poison. It tenaciously hangs on until the poison takes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It lives in arid lands. It buries itself in sand and lies in wait for unsuspecting prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its claws are not only razor-sharp but poisonous, making Skorupi a highly dangerous Pokémon. It seems to be weakened by cold temperatures, however.\"\n    }\n  ],\n  \"452\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has the power in its clawed arms to make scrap of a car. The tips of its claws release poison.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body is encased in a sturdy shell. Its head rotates 180 degrees, eliminating blind spots.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Possessing a sturdy build, it takes pride in its strength, taking down foes without using toxins.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It attacks people and Pokémon that cross the desert. This has only furthered its bad reputation.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It attacks people and Pokémon that cross the desert. This has only furthered its bad reputation.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Possessing a sturdy build, it takes pride in its strength, taking down foes without using toxins.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Possessing a sturdy build, it takes pride in its strength, taking down foes without using toxins.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It takes pride in its strength. Even though it can tear foes apart, it finishes them off with powerful poison.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It takes pride in its strength. Even though it can tear foes apart, it finishes them off with powerful poison.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It takes pride in its strength. Even though it can tear foes apart, it finishes them off with powerful poison.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has the power in its clawed arms to make scrap of a car. The tips of its claws release poison.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It takes pride in its strength. Even though it can tear foes apart, it finishes them off with powerful poison.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It has the power in its clawed arms to make scrap of a car. The tips of its claws release poison.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its poison is potent, but it rarely sees use. This Pokémon prefers to use physical force instead, going on rampages with its car-crushing strength.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's so vicious that it's called the Sand Demon. Yet when confronted by Hippowdon, Drapion keeps a low profile and will never pick a fight.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has the power in its clawed arms to make scrap of a car. The tips of its claws release poison.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body is encased in a sturdy shell. Its head rotates 180 degrees, eliminating blind spots.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Has a brutish, ferocious temperament. With immense strength and a sturdy shell off which swords will bounce, it rampages about and wreaks havoc.\"\n    }\n  ],\n  \"453\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its cheeks hold poison sacs. It tries to catch foes off guard to jab them with toxic fingers.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Inflating its poison sacs, it makes an eerie blubbering sound for intimidation.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It rarely fights fairly, but that is strictly to ensure survival. It is popular as a mascot.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Fluid squeezed from its finger, albeit poisonous, is a significant ingredient in remedies for lower-back pain.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Fluid squeezed from its finger, albeit poisonous, is a significant ingredient in remedies for lower-back pain.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It rarely fights fairly, but that is strictly to ensure survival. It is popular as a mascot.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It rarely fights fairly, but that is strictly to ensure survival. It is popular as a mascot.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Inflating its poison sacs, it fills the area with an odd sound and hits flinching opponents with a poison jab.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Inflating its poison sacs, it fills the area with an odd sound and hits flinching opponents with a poison jab.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its cheeks hold poison sacs. It tries to catch foes off guard to jab them with toxic fingers.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Inflating its poison sacs, it fills the area with an odd sound and hits flinching opponents with a poison jab.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its cheeks hold poison sacs. It tries to catch foes off guard to jab them with toxic fingers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Inflating its poison sacs, it fills the area with an odd sound and hits flinching opponents with a poison jab.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It makes frightening noises with its poison-filled cheek sacs. When opponents flinch, Croagunk hits them with a poison jab.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Once diluted, its poison becomes medicinal. This Pokémon came into popularity after a pharmaceutical company chose it as a mascot.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its cheeks hold poison sacs. It tries to catch foes off guard to jab them with toxic fingers.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It inflates its poison sacs and makes a blubbering sound to intimidate foes.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A poison wielder with a dastardly personality. Despite such qualities, this species is afforded a measure of popularity due to its peculiar cry and comical features.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Inflating its poison sacs, it fills the area with an odd sound and hits flinching opponents with a poison jab.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It rarely fights fairly, but that is strictly to ensure survival. It is popular as a mascot.\"\n    }\n  ],\n  \"454\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its knuckle claws secrete a toxin so vile that even a scratch could prove fatal.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The toxin made in its poison sacs is pumped to the knuckle claws through tubes down its arms.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It has a poison sac at its throat. When it croaks, the stored poison is churned for greater potency.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Swaying and dodging the attacks of its foes, it weaves its flexible body in close, then lunges out with its poisonous claws.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Swaying and dodging the attacks of its foes, it weaves its flexible body in close, then lunges out with its poisonous claws.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has a poison sac at its throat. When it croaks, the stored poison is churned for greater potency.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has a poison sac at its throat. When it croaks, the stored poison is churned for greater potency.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The croaking that Toxicroak produces before a battle is for churning the poison it has stored in its poison sac.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The croaking that Toxicroak produces before a battle is for churning the poison it has stored in its poison sac.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a poison sac at its throat. When it croaks, the stored poison is churned for greater potency.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its knuckle claws secrete a toxin so vile that even a scratch could prove fatal.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It has a poison sac at its throat. When it croaks, the stored poison is churned for greater potency.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its knuckle claws secrete a toxin so vile that even a scratch could prove fatal.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It bounces toward opponents and gouges them with poisonous claws. No more than a scratch is needed to knock out its adversaries.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It booms out a victory croak when its prey goes down in defeat. This Pokémon and Seismitoad are related species.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its knuckle claws secrete a toxin so vile that even a scratch could prove fatal.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The toxin made in its poison sac is pumped to the knuckle claws through tubes down its arms.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its crimson claws contain a virulent toxin. This toxin can be made into a tonic by diluting it, mixing it with several types of wild grass, and boiling it down over two days.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Swaying and dodging the attacks of its foes, it weaves its flexible body in close, then lunges out with its poisonous claws.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has a poison sac at its throat. When it croaks, the stored poison is churned for greater potency.\"\n    }\n  ],\n  \"455\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It attracts prey with its sweet-smelling saliva, then chomps down. It takes a whole day to eat prey.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Hanging from branches using its tentacles, it looks like a plant. It awaits prey, mouth wide open.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It binds itself to trees in marshes. It attracts prey with its sweet-smelling drool and gulps them down.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It walks around on its tentacles in search of a tree branch where it can dangle down and ambush prey.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It walks around on its tentacles in search of a tree branch where it can dangle down and ambush prey.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It binds itself to trees in marshes. It attracts prey with its sweet-smelling drool and gulps them down.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It binds itself to trees in marshes. It attracts prey with its sweet-smelling drool and gulps them down.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Using its tentacles to lash itself to trees, it lies in wait for prey, luring it close with sweet-smelling drool.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Using its tentacles to lash itself to trees, it lies in wait for prey, luring it close with sweet-smelling drool.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It attracts prey with its sweet-smelling saliva, then chomps down. It takes a whole day to eat prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It binds itself to trees in marshes. It attracts prey with its sweet-smelling drool and gulps them down.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It attracts prey with its sweet-smelling saliva, then chomps down. It takes a whole day to eat prey.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It binds itself to trees in marshes. It attracts prey with its sweet-smelling drool and gulps them down.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It attracts prey with its sweet-smelling saliva, then chomps down. It takes a whole day to eat its prey.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Using its tentacles to hang from branches, it looks like a plant when it is not moving. It awaits prey with its mouth wide open.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though this is a plant Pokémon, it has a gluttonous and unruly temperament. Carnivine attacks its prey with its cavernous maw wide open.\"\n    }\n  ],\n  \"456\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"After long exposure to sunlight, the patterns on its tail fins shine vividly when darkness arrives.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The way its two tail fins flutter while it swims has earned it the nickname \\\"Beautifly of the Sea.\\\"\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The line running down its side can store sunlight. It shines vividly at night.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Swimming and fluttering its two tail fins, it looks like a Beautifly. At night, the patterns on its tail fins softly shine.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Swimming and fluttering its two tail fins, it looks like a Beautifly. At night, the patterns on its tail fins softly shine.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The line running down its side can store sunlight. It shines vividly at night.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The line running down its side can store sunlight. It shines vividly at night.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The line running down its side can store sunlight. It shines vividly at night.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The line running down its side can store sunlight. It shines vividly at night.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The line running down its side can store sunlight. It shines vividly at night.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"After long exposure to sunlight, the patterns on its tail fins shine vividly when darkness arrives.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The line running down its side can store sunlight. It shines vividly at night.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"After long exposure to sunlight, the patterns on its tail fins shine vividly when darkness arrives.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It absorbs sunlight with the pink areas of its skin, which then shine. This appears to be a form of camouflage.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its double tail fins propel its energetic jumps. When it breaks the surface of the sea, Wingull swoop down to grab it on the fly.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When night falls, their pink patterns begin to shine. They're popular with divers, so there are resorts that feed them to keep them close.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It lures in prey with its shining tail fins. It stays near the surface during the day and moves to the depths when night falls.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"After long exposure to sunlight, the patterns on its tail fins shine vividly when darkness arrives.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The way its two tail fins flutter while it swims has earned it the nickname Beautifly of the Sea.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"What a gorgeous sight this Pokémon is as it swims with its long, pink-painted caudal fins fluttering behind it. Finneon's beautiful appearance has led to its nickname: \\\"finery fish.\\\"\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The line running down its side can store sunlight. It shines vividly at night.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It absorbs sunlight with the pink areas of its skin, which then shine. This appears to be a form of camouflage.\"\n    }\n  ],\n  \"457\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives on the deep-sea floor. It attracts prey by flashing the patterns on its four tail fins.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"To avoid detection by predators, it crawls along the seafloor using the two fins on its chest.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It crawls along the seafloor using its long front fins like legs. It competes for food with Lanturn.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Lumineon swimming in the darkness of the deep sea look like stars shining in the night sky.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Lumineon swimming in the darkness of the deep sea look like stars shining in the night sky.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It crawls along the seafloor using its long front fins like legs. It competes for food with Lanturn.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It crawls along the seafloor using its long front fins like legs. It competes for food with Lanturn.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It crawls along the seafloor using its long front fins like legs. It competes for food with Lanturn.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It crawls along the seafloor using its long front fins like legs. It competes for food with Lanturn.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives on the deep-sea floor. It attracts prey by flashing the patterns on its four tail fins.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"To avoid detection by predators, it crawls along the seafloor using the two fins on its chest.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It lives on the deep-sea floor. It attracts prey by flashing the patterns on its four tail fins.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"To avoid detection by predators, it crawls along the seafloor using the two fins on its chest.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"With its shining light, it lures its prey close. However, the light also happens to attract ferocious fish Pokémon—its natural predators.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This deep-sea Pokémon lives at the bottom of the sea. Its fins haul it over the seabed in search of its favorite food—Starmie.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Deep down at the bottom of the ocean, prey is scarce. Lumineon get into fierce disputes with Lanturn over food.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They traverse the deep waters as if crawling over the seafloor. The fantastic lights of its fins shine like stars in the night sky.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives on the deep-sea floor. It attracts prey by flashing patterns on its four fins.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"To avoid detection by predators, it crawls along the seafloor using the two fins on its chest.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Uses its gleaming fins to hunt its prey. The view of Lumineon schooling near the surface of the sea at night is breathtaking—it's as though there were shining stars right there.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"With its shining light, it lures its prey close. However, the light also happens to attract ferocious fish Pokémon—its natural predators.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Lumineon swimming in the darkness of the deep sea look like stars shining in the night sky.\"\n    }\n  ],\n  \"458\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A friendly Pokémon that captures the subtle flows of seawater using its two antennae.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Scientists discovered that the distinctive patterns on its back differ by region.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"People organize tours to see this Pokémon frolic and skim the tops of waves with Remoraid.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it swims close to the surface of the ocean, people aboard ships are able to observe the pattern on its back.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When it swims close to the surface of the ocean, people aboard ships are able to observe the pattern on its back.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"People organize tours to see this Pokémon frolic and skim the tops of waves with Remoraid.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"People organize tours to see this Pokémon frolic and skim the tops of waves with Remoraid.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The pattern on its back varies by region. It often swims in a school of Remoraid.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The pattern on its back varies by region. It often swims in a school of Remoraid.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The pattern on its back varies by region. It often swims in a school of Remoraid.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it swims close to the surface of the ocean, people aboard ships are able to observe the pattern on its back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The pattern on its back varies by region. It often swims in a school of Remoraid.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it swims close to the surface of the ocean, people aboard ships are able to observe the pattern on its back.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's highly friendly and easily tamed. Tours that take people swimming with Mantyke are a super-popular beach activity.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Mantyke are friendly toward people and will approach boats closely. The patterns on their backs differ depending on their habitat.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Mantyke living in Galar seem to be somewhat sluggish. The colder waters of the seas in this region may be the cause.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It swims along with a school of Remoraid, and they'll all fight together to repel attackers.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A friendly Pokémon that senses the subtle flows of seawater using its two antennae.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Scientists discovered that the distinctive patterns on its back differ by region.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though ball-like in shape, this Pokémon is a proficient swimmer. I have discovered that if a Mantyke spends much time with schools of Remoraid, it will eventually achieve evolution.\"\n    }\n  ],\n  \"459\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives on snowy mountains. Having had little contact with humans, it is boldly inquisitive.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"In the spring, it grows berries with the texture of frozen treats around its belly.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Seemingly curious about people, they gather around footsteps they find on snowy mountains.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"During cold seasons, it migrates to the mountain's lower reaches. It returns to the snow-covered summit in the spring.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"During cold seasons, it migrates to the mountain's lower reaches. It returns to the snow-covered summit in the spring.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Seemingly curious about people, they gather around footsteps they find on snowy mountains.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Seemingly curious about people, they gather around footsteps they find on snowy mountains.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Seemingly curious about people, they gather around footsteps they find on snowy mountains.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Seemingly curious about people, they gather around footsteps they find on snowy mountains.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"During cold seasons, it migrates to the mountain's lower reaches. It returns to the snow-covered summit in the spring.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"In the spring, it grows berries with the texture of frozen treats around its belly.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"During cold seasons, it migrates to the mountain's lower reaches. It returns to the snow-covered summit in the spring.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In the spring, it grows berries with the texture of frozen treats around its belly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It lives on snowy mountains. It sinks its legs into the snow to absorb water and keep its own temperature down.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The berries that grow around its belly are like ice pops. Galarian Darumaka absolutely love these berries.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives on snowy mountains. Having had little contact with humans, it is boldly inquisitive.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"In the spring, it grows berries with the texture of frozen treats around its belly.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"One is likely to encounter this Pokémon while out in the snow. There are stories of Snover appearing in human settlements but doing no harm—rather, they bond with the children.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"During cold seasons, it migrates to the mountain's lower reaches. It returns to the snow-covered summit in the spring.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Seemingly curious about people, they gather around footsteps they find on snowy mountains.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"In the spring, it grows berries with the texture of frozen treats around its belly.\"\n    }\n  ],\n  \"460\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It whips up blizzards in mountains that are always buried in snow. It is the abominable snowman.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It blankets wide areas in snow by whipping up blizzards. It is also known as \\\"The Ice Monster.\\\"\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"They appear when the snow flowers bloom. When the petals fall, they retreat to places unknown again.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives a quiet life on mountains that are perpetually covered in snow. It hides itself by whipping up blizzards.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives a quiet life on mountains that are perpetually covered in snow. It hides itself by whipping up blizzards.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They appear when the snow flowers bloom. When the petals fall, they retreat to places unknown again.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They appear when the snow flowers bloom. When the petals fall, they retreat to places unknown again.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They appear when the snow flowers bloom. When the petals fall, they retreat to places unknown again.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They appear when the snow flowers bloom. When the petals fall, they retreat to places unknown again.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It blankets wide areas in snow by whipping up blizzards. It is also known as \\\"The Ice Monster.\\\"\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives a quiet life on mountains that are perpetually covered in snow. It hides itself by whipping up blizzards.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It blankets wide areas in snow by whipping up blizzards. It is also known as \\\"The Ice Monster.\\\"\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It lives a quiet life on mountains that are perpetually covered in snow. It hides itself by whipping up blizzards.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If it sees any packs of Darumaka going after Snover, it chases them off, swinging its sizable arms like hammers.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is known to bring blizzards. A shake of its massive body is enough to cause whiteout conditions.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It whips up blizzards in mountains that are always buried in snow. It is the abominable snowman.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It blankets wide areas in snow by whipping up blizzards. It is also known as the Ice Monster.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A powerful Pokémon that can split huge boulders with ease. Dislikes associating with others and chooses to live quietly deep within the mountains, playing with the snow.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives a quiet life on mountains that are perpetually covered in snow. It hides itself by whipping up blizzards.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They appear when the snow flowers bloom. When the petals fall, they retreat to places unknown again.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It blankets wide areas in snow by whipping up blizzards. It is also known as the Ice Monster.\"\n    }\n  ],\n  \"461\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"They live in cold regions, forming groups of four or five that hunt prey with impressive coordination.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It sends signals to others by carving odd patterns in frost-covered trees and ice.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Evolution made it even more devious. It communicates by clawing signs in boulders.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It lives in snowy regions. It carves patterns in trees with its claws as a signal to others.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It lives in snowy regions. It carves patterns in trees with its claws as a signal to others.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Evolution made it even more devious. It communicates by clawing signs in boulders.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Evolution made it even more devious. It communicates by clawing signs in boulders.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They communicate by clawing signs in boulders and work together to surround enemies.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They communicate by clawing signs in boulders and work together to surround enemies.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives in snowy regions. It carves patterns in trees with its claws as a signal to others.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They live in cold regions, forming groups of four or five that hunt prey with impressive coordination.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It lives in snowy regions. It carves patterns in trees with its claws as a signal to others.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They live in cold regions, forming groups of four or five that hunt prey with impressive coordination.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They travel in groups of four or five, leaving signs for one another on trees and rocks. They bring down their prey with coordinated attacks.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They dwell in cold places. This Pokémon's main food source in Alola is Vulpix and Sandshrew, which they carefully divide among their group.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"One Weavile will trip a Sandshrew and flip it over, and then another Weavile will deal the finishing blow with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Thanks to its increased intelligence, scrapping over food is a thing of the past. A scratch from its claws will give you a case of frostbite!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"They attack their quarry in packs. Prey as large as Mamoswine easily fall to the teamwork of a group of Weavile.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With its claws, it leaves behind signs for its friends to find. The number of distinct signs is said to be over 500.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"They live in cold regions, forming groups of four or five that hunt prey with impressive coordination.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It sends signals to others of its kind by carving odd patterns on trees and ice.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This species corners prey as a pack, under the guidance of a leader. Weavile displays increased cunning, leading me to speculate that its evolution caused further brain development.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Evolution made it even more devious. It communicates by clawing signs in boulders.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They travel in groups of four or five, leaving signs for one another on trees and rocks. They bring down their prey with coordinated attacks.\"\n    }\n  ],\n  \"462\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It evolved from exposure to a special magnetic field. Three units generate magnetism.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It evolved from exposure to a special magnetic field. Three units generate magnetism.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A group tried to use scientific means to make Magnezone evolve, but their efforts ended in failure.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Exposure to a special magnetic field changed Magneton's molecular structure, turning it into Magnezone.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Exposure to a special magnetic field changed Magneton's molecular structure, turning it into Magnezone.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A group tried to use scientific means to make Magnezone evolve, but their efforts ended in failure.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A group tried to use scientific means to make Magnezone evolve, but their efforts ended in failure.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Sometimes the magnetism emitted by Magnezone is too strong, making them attract each other so they cannot move.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Sometimes the magnetism emitted by Magnezone is too strong, making them attract each other so they cannot move.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Sometimes the magnetism emitted by Magnezone is too strong, making them attract each other so they cannot move.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It evolved from exposure to a special magnetic field. Three units generate magnetism.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Sometimes the magnetism emitted by Magnezone is too strong, making them attract each other so they cannot move.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It evolved from exposure to a special magnetic field. Three units generate magnetism.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Three units generate magnetism. There have been many mistaken reports of UFO sightings when Magnezone flies through the night sky.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As it zooms through the sky, this Pokémon seems to be receiving signals of unknown origin, while transmitting signals of unknown purpose.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It uses radar to monitor its territory. Intruders are quickly disposed of with a hyper beam.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"There are still people who believe that this Pokémon came from outer space. It emanates a powerful magnetic field.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Some say that Magnezone receives signals from space via the antenna on its head and that it's being controlled by some mysterious being.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's thought that a special magnetic field changed the molecular structure of this Pokémon's body, and that's what caused the Pokémon's evolution.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It evolved from exposure to a special magnetic field. Its three units generate magnetism.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It evolved from exposure to a special magnetic field. Its three units generate magnetism.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"I theorize that a special magnetic field influenced this Pokémon, changing its molecular structure and causing it to evolve. It emits strange radio waves toward space from its antenna.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"As it zooms through the sky, this Pokémon seems to be receiving signals of unknown origin while transmitting signals of unknown purpose.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Exposure to a special magnetic field changed Magneton's molecular structure, turning it into Magnezone.\"\n    }\n  ],\n  \"463\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It wraps things with its extensible tongue. Getting too close to it will leave you soaked with drool.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It wraps things with its extensible tongue. Getting too close to it will leave you soaked with drool.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The long tongue is always soggy with slobber. The saliva contains a solvent that causes numbness.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its saliva can decompose anything. It wraps its long tongue around things to coat them with its sticky saliva.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It has space in its throat to store saliva. It can also roll up its tongue and store it in the same spot.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The long tongue is always soggy with slobber. The saliva contains a solvent that causes numbness.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The long tongue is always soggy with slobber. The saliva contains a solvent that causes numbness.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Their saliva contains lots of components that can dissolve anything. The numbness caused by their lick does not dissipate.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Their saliva contains lots of components that can dissolve anything. The numbness caused by their lick does not dissipate.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It wraps things with its extensible tongue. Getting too close to it will leave you soaked with drool.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Their saliva contains lots of components that can dissolve anything. The numbness caused by their lick does not dissipate.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It wraps things with its extensible tongue. Getting too close to it will leave you soaked with drool.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Their saliva contains lots of components that can dissolve anything. The numbness caused by their lick does not dissipate.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"A contest is under way to determine which one can stick its tongue out the farthest. The current record is...more than 82 feet.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It uses its tongue much more skillfully than its hands or its feet. It can deftly pick up a single small bean with its tongue.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Lickilicky's strange tongue can stretch to many times the length of its body. No one has figured out how Lickilicky's tongue can stretch so far.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Lickilicky can do just about anything with its tongue, which is as dexterous as the human hand. In contrast, Lickilicky's use of its fingers is clumsy.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It wraps things with its extensible tongue. Getting too close to it will leave you soaked with drool.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It wraps things with its extensible tongue. Getting too close to it will leave you soaked with drool.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its tongue can extend and contract freely, and it is capable of reaching lengths over 10 times Lickilicky's height. Beware of the saliva, as it contains corrosive elements.\"\n    }\n  ],\n  \"464\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It puts rocks in holes in its palms and uses its muscles to shoot them. Geodude are shot at rare times.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It puts rocks in holes in its palms and uses its muscles to shoot them. Geodude are shot at rare times.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It can launch a rock held in its hand like a missile by tightening then expanding muscles instantly.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"From holes in its palms, it fires out Geodude. Its carapace can withstand volcanic eruptions.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"From holes in its palms, it fires out Geodude. Its carapace can withstand volcanic eruptions.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can launch a rock held in its hand like a missile by tightening then expanding muscles instantly.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can launch a rock held in its hand like a missile by tightening then expanding muscles instantly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It can launch a rock held in its hand like a missile by tightening then expanding muscles instantly.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It can launch a rock held in its hand like a missile by tightening then expanding muscles instantly.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"From holes in its palms, it fires out Geodude. Its carapace can withstand volcanic eruptions.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It puts rocks in holes in its palms and uses its muscles to shoot them. Geodude are shot at rare times.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"From holes in its palms, it fires out Geodude. Its carapace can withstand volcanic eruptions.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It puts rocks in holes in its palms and uses its muscles to shoot them. Geodude are shot at rare times.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It can load up to three projectiles per arm into the holes in its hands. What launches out of those holes could be either rocks or Roggenrola.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It relies on its carapace to deflect incoming attacks and throw its enemy off balance. As soon as that happens, it drives its drill into the foe.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It puts rocks in holes in its palms and uses its muscles to shoot them. On rare occasions, the Pokémon even shoots out Geodude.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It puts rocks in holes in its palms and uses its muscles to shoot them. On rare occasions, the Pokémon even shoots out Geodude.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon evolved through use of a curious item. Its rocklike hide is composed of a mysterious substance and can withstand a blow from a masterwork sword with nary a scratch.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon's sturdy carapace protects it from volcanic eruptions. It shoots round rocks from the holes in its hands.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A Rhyperior's brain is smaller than a Rhydon's, but the Rhyperior is stronger because it spends more energy on battling and less on brainpower.\"\n    }\n  ],\n  \"465\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It ensnares prey by extending arms made of vines. Losing arms to predators does not trouble it.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It ensnares prey by extending arms made of vines. Losing arms to predators does not trouble it.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its arms are made of plants that bind themselves to things. They grow back right away if cut.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When it remains still, it appears to be a large shrub. Unsuspecting prey that wander near get ensnared by its vines.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its vines grow so profusely that, in the warm season, you can't even see its eyes.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its arms are made of plants that bind themselves to things. They grow back right away if cut.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its arms are made of plants that bind themselves to things. They grow back right away if cut.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Even if one of its arms is eaten, it's fine. The Pokémon regenerates quickly and will go right back to normal.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Even if one of its arms is eaten, it's fine. The Pokémon regenerates quickly and will go right back to normal.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It ensnares prey by extending arms made of vines. Losing arms to predators does not trouble it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its vines grow so profusely that, in the warm season, you can't even see its eyes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It ensnares prey by extending arms made of vines. Losing arms to predators does not trouble it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its vines grow so profusely that, in the warm season, you can't even see its eyes.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Tangrowth has two arms that it can extend as it pleases. Recent research has shown that these arms are, in fact, bundles of vines.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Vine growth is accelerated for Tangrowth living in warm climates. If the vines grow long, Tangrowth shortens them by tearing parts of them off.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It ensnares prey by extending arms made of vines. Losing arms to predators does not trouble it.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It ensnares prey by extending arms made of vines. Losing arms to predators does not trouble it.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Draped with long vines, it resembles a shrub in appearance. It swings bundles of vines as though they were arms, wrapping them around prey to ensnare them.\"\n    }\n  ],\n  \"466\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It pushes the tips of its two tails against the foe, then lets loose with over 20,000 volts of power.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It pushes the tips of its two tails against the foe, then lets loose with over 20,000 volts of power.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Heedless of enemy attacks, it closes in, shoves its tails onto the foe, then looses high voltage.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"As its electric charge amplifies, blue sparks begin to crackle between its horns.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"As its electric charge amplifies, blue sparks begin to crackle between its horns.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Heedless of enemy attacks, it closes in, shoves its tails onto the foe, then looses high voltage.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Heedless of enemy attacks, it closes in, shoves its tails onto the foe, then looses high voltage.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The instant it presses the tips of its tails onto an opponent, it sends over 20,000 volts of electricity into the foe.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The instant it presses the tips of its tails onto an opponent, it sends over 20,000 volts of electricity into the foe.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"As its electric charge amplifies, blue sparks begin to crackle between its horns.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It pushes the tips of its two tails against the foe, then lets loose with over 20,000 volts of power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"As its electric charge amplifies, blue sparks begin to crackle between its horns.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It pushes the tips of its two tails against the foe, then lets loose with over 20,000 volts of power.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It pushes the tips of its tails against its foes and then lets loose a high-voltage current. Its foes are burned to a crisp in an instant.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When it gets excited, it thumps its chest. With every thud, thunder roars and electric sparks shower all around.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It grips its tail, which spews electricity, and then beats down opponents with the power of its electrified fist.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"A single Electivire can provide enough electricity for all the buildings in a big city for a year.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The amount of electrical energy this Pokémon produces is proportional to the rate of its pulse. The voltage jumps while Electivire is battling.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In terms of electrical-energy output, Electivire is one of the best among all Electric Pokémon. It discharges high-voltage currents from its tails.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It pushes the tips of its two tails against the foe, then lets loose with over 20,000 volts of electricity.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It pushes the tips of its two tails against the foe, then lets loose with over 20,000 volts of electricity.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its evolution was induced by an unusual item, and its electrical output rises along with its heart rate. From its tails, it can unleash an electric current measuring 20,000 volts.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it gets excited, it thumps its chest. With every thud, thunder roars and electric sparks shower all around.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon presses the tips of its tails onto an opponent and instantly sends over 20,000 volts of high-voltage electricity through them.\"\n    }\n  ],\n  \"467\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees F from the ends of its arms. It lives in volcanic craters.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees F from the ends of its arms. It lives in volcanic craters.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When launching 3,600 degrees F fireballs, its body takes on a whitish hue from the intense heat.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees Fahrenheit out of its arms. Its breath also sears and sizzles.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees Fahrenheit out of its arms. Its breath also sears and sizzles.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When launching 3,600 degrees F fireballs, its body takes on a whitish hue from the intense heat.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When launching 3,600 degrees F fireballs, its body takes on a whitish hue from the intense heat.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When shooting 3,600 degrees F fireballs from its arms, its body takes on a whitish hue from the intense heat.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When shooting 3,600 degrees F fireballs from its arms, its body takes on a whitish hue from the intense heat.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees Fahrenheit from the ends of its arms. It lives in volcanic craters.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees Fahrenheit out of its arms. Its breath also sears and sizzles.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees Fahrenheit from the ends of its arms. It lives in volcanic craters.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees Fahrenheit out of its arms. Its breath also sears and sizzles.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They dwell in volcanic craters. According to what is known, a single pair of male and female Magmortar lives in one volcano.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"From its arm, it launches fireballs hotter than 3,500 degrees Fahrenheit. Its arm starts to melt when it fires a whole barrage.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"There are still quite a few factories that rely on the flames provided by Magmortar to process metals.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Magmortar takes down its enemies by shooting fireballs, which burn them to a blackened crisp. It avoids this method when hunting prey.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When Magmortar inhales deeply, the fire burning in its belly intensifies, rising in temperature to over 3,600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Living in the crater of a volcano has caused this Pokémon's body to resemble its environment—it has an organ similar to a magma chamber.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees Fahrenheit from the ends of its arms. It lives in volcanic craters.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It blasts fireballs of over 3,600 degrees Fahrenheit from the ends of its arms. It lives in volcanic craters.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Use of a strange item caused this Pokémon to evolve. Fireballs launched from the ends of its tubelike arms are hot enough to melt an iron pot in an instant.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When shooting 3,600 degree Fahrenheit fireballs from its arms, its body takes on a whitish hue from the intense heat.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They dwell in volcanic craters. It's said that only a single pair of Magmortar will inhabit any given volcano.\"\n    }\n  ],\n  \"468\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It will never appear where there is strife. Its sightings have become rare recently.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It will never appear where there is strife. Its sightings have become rare recently.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It shares many blessings with people who respect one another's rights and avoid needless strife.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"As everyone knows, it visits peaceful regions, bringing them gifts of kindness and sweet blessings.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"As everyone knows, it visits peaceful regions, bringing them gifts of kindness and sweet blessings.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It shares many blessings with people who respect one another's rights and avoid needless strife.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It shares many blessings with people who respect one another's rights and avoid needless strife.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It shares many blessings with people who respect one another's rights and avoid needless strife.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It shares many blessings with people who respect one another's rights and avoid needless strife.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"As everyone knows, it visits peaceful regions, bringing them gifts of kindness and sweet blessings.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It shares many blessings with people who respect one another's rights and avoid needless strife.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"As everyone knows, it visits peaceful regions, bringing them gifts of kindness and sweet blessings.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It shares many blessings with people who respect one another's rights and avoid needless strife.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"These Pokémon are never seen anywhere near conflict or turmoil. In recent times, they've hardly been seen at all.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Known as a bringer of blessings, it's been depicted on good-luck charms since ancient times.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It will never appear where there is strife. Sightings of this Pokémon have recently become rare.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It will never appear where there is strife. Sightings of this Pokémon have recently become rare.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Scant few have ever sighted this Pokémon. After studying what literature remains, I am certain Togekiss will reveal itself when peace reigns in the land.\"\n    }\n  ],\n  \"469\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"By churning its wings, it creates shock waves that inflict critical internal injuries to foes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"By churning its wings, it creates shock waves that inflict critical internal injuries to foes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its jaw power is incredible. It is adept at biting apart foes while flying by at high speed.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This six-legged Pokémon is easily capable of transporting an adult in flight. The wings on its tail help it stay balanced.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The beat of its wings is so powerful that it accidentally dislodges full-grown trees when it takes off in flight.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its jaw power is incredible. It is adept at biting apart foes while flying by at high speed.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its jaw power is incredible. It is adept at biting apart foes while flying by at high speed.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It prefers to battle by biting apart foes' heads instantly while flying by at high speed.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It prefers to battle by biting apart foes' heads instantly while flying by at high speed.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It prefers to battle by biting apart foes' heads instantly while flying by at high speed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This six-legged Pokémon is easily capable of transporting an adult in flight. The wings on its tail help it stay balanced.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It prefers to battle by biting apart foes' heads instantly while flying by at high speed.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This six-legged Pokémon is easily capable of transporting an adult in flight. The wings on its tail help it stay balanced.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"By churning its wings, it creates shock waves that inflict critical internal injuries to foes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"By churning its wings, it creates shock waves that inflict critical internal injuries to foes.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Extremely violent. When hunting, it wastes none of its energy, aiming only for prey's most vulnerable spots. Any who manage to tame this Pokémon must be of incredible bravery.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Yanmega's wingbeats are so powerful that the Pokémon blows down huge trees nearby when it vigorously launches itself into flight.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its jaw power is incredible. It is adept at biting apart foes while flying by at high speed.\"\n    }\n  ],\n  \"470\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Just like a plant, it uses photosynthesis. As a result, it is always enveloped in clear air.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Just like a plant, it uses photosynthesis. As a result, it is always enveloped in clear air.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It basically does not fight. With cells similar to those of plants, it can perform photosynthesis.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When you see Leafeon asleep in a patch of sunshine, you'll know it is using photosynthesis to produce clean air.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When you see Leafeon asleep in a patch of sunshine, you'll know it is using photosynthesis to produce clean air.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It basically does not fight. With cells similar to those of plants, it can perform photosynthesis.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It basically does not fight. With cells similar to those of plants, it can perform photosynthesis.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"With cells similar to those of plants, it performs photosynthesis inside its body and creates pure air.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"With cells similar to those of plants, it performs photosynthesis inside its body and creates pure air.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When you see Leafeon asleep in a patch of sunshine, you'll know it is using photosynthesis to produce clean air.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Just like a plant, it uses photosynthesis. As a result, it is always enveloped in clear air.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When you see Leafeon asleep in a patch of sunshine, you'll know it is using photosynthesis to produce clean air.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Just like a plant, it uses photosynthesis. As a result, it is always enveloped in clear air.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its cellular composition is closer to that of a plant than an animal. It uses photosynthesis to produce its energy supply without eating food.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The younger they are, the more they smell like fresh grass. With age, their fragrance takes on the odor of fallen leaves.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it doesn't like disputes, it will sharpen the leaf on its tail into a blade and fight if it has to protect its friends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It gets its nutrition from photosynthesis. It lives a quiet life deep in forests where clean rivers flow.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Galarians favor the distinctive aroma that drifts from this Pokémon's leaves. There's a popular perfume made using that scent.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon's tail is blade sharp, with a fantastic cutting edge that can slice right though large trees.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Just like a plant, it uses photosynthesis. As a result, it is always enveloped in clear air.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Just like a plant, it uses photosynthesis. As a result, it is always enveloped in clear air.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Cells similar to those of plants have been found in its fur. Its hard tail can fell a large tree with one stroke, and the tail's sharpness exceeds even that of a sword crafted by a master.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When you see Leafeon asleep in a patch of sunshine, you'll know it is using photosynthesis to produce clean air.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The younger they are, the more they smell like fresh grass. With age, their fragrance takes on the odor of fallen leaves.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Just like a plant, it uses photosynthesis. As a result, it is always enveloped in clear air.\"\n    }\n  ],\n  \"471\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"As a protective technique, it can completely freeze its fur to make its hairs stand like needles.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"As a protective technique, it can completely freeze its fur to make its hairs stand like needles.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"By controlling its body heat, it can freeze the atmosphere around it to make a {{wp|diamond dust|diamond-dust}} flurry.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It causes small ice crystals to form by lowering the temperature of the surrounding atmosphere.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It causes small ice crystals to form by lowering the temperature of the surrounding atmosphere.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"By controlling its body heat, it can freeze the atmosphere around it to make a diamond-dust flurry.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"By controlling its body heat, it can freeze the atmosphere around it to make a diamond-dust flurry.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lowers its body heat to freeze its fur. The hairs then become like needles it can fire.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lowers its body heat to freeze its fur. The hairs then become like needles it can fire.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"By controlling its body heat, it can freeze the atmosphere around it to make a diamond-dust flurry.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lowers its body heat to freeze its fur. The hairs then become like needles it can fire.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"By controlling its body heat, it can freeze the atmosphere around it to make a diamond-dust flurry.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It lowers its body heat to freeze its fur. The hairs then become like needles it can fire.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It can control its body temperature at will. This enables it to freeze the moisture in the atmosphere, creating flurries of diamond dust.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It freezes its fur into icicles, spiky and sharp, and tackles its prey.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It protects itself by freezing its fur into sharp needles. It can drop its body temperature below -75 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It can instantaneously freeze any moisture that's around it, creating ice pellets to shoot at its prey.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Any who become captivated by the beauty of the snowfall that Glaceon creates will be frozen before they know it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The coldness emanating from Glaceon causes powdery snow to form, making it quite a popular Pokémon at ski resorts.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"As a defense mechanism, it can completely freeze its fur to make its hairs stand out like needles.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"As a defense mechanism, it can completely freeze its fur to make its hairs stand out like needles.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Glaceon is able to lower its body temperature very quickly. It freezes the atmosphere, creating diamond dust that glitters like gems while it flutters and dances around.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It can control its body temperature at will. This enables it to freeze the moisture in the atmosphere, creating flurries of diamond dust.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It lowers its body heat to freeze its fur. The hairs then become like needles it can fire.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"By controlling its body heat, it can freeze the atmosphere around it to make a diamond-dust flurry.\"\n    }\n  ],\n  \"472\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It observes prey while hanging inverted from branches. When the chance presents itself, it swoops!\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It observes prey while hanging inverted from branches. When the chance presents itself, it swoops!\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"If it succeeds in catching even a faint breeze properly, it can circle the globe without flapping once.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its flight is soundless. It uses its lengthy tail to carry off its prey... Then its elongated fangs do the rest.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its flight is soundless. It uses its lengthy tail to carry off its prey... Then its elongated fangs do the rest.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"If it succeeds in catching even a faint breeze properly, it can circle the globe without flapping once.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If it succeeds in catching even a faint breeze properly, it can circle the globe without flapping once.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It dances silently through the sky. When it approaches prey, it can land a critical hit in an instant.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It dances silently through the sky. When it approaches prey, it can land a critical hit in an instant.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It observes prey while hanging inverted from branches. When the chance presents itself, it swoops!\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its flight is soundless. It uses its lengthy tail to carry off its prey... Then its elongated fangs do the rest.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It observes prey while hanging inverted from branches. When the chance presents itself, it swoops!\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its flight is soundless. It uses its lengthy tail to carry off its prey... Then its elongated fangs do the rest.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It observes prey while hanging inverted from branches. When the chance presents itself, Gliscor swoops!\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It observes prey while hanging inverted from branches. When the chance presents itself, Gliscor swoops!\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It glides soundlessly on pitch-black wings and sinks sharp fangs into the throat of its prey. It takes on a look of satisfaction once it has entirely drained its prey of blood.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If it succeeds in catching even a faint breeze properly, it can circle the globe without flapping once.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It flies soundlessly through the sky. It catches prey with its long tail, then lunges at the prey's vulnerable spots with its fangs.\"\n    }\n  ],\n  \"473\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its impressive tusks are made of ice. The population thinned when it turned warm after the ice age.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its impressive tusks are made of ice. The population thinned when it turned warm after the ice age.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A frozen one was dug up from soil dating back 10,000 years. It woke up to much amazement.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"A frozen Mamoswine was dug from ice dating back 10,000 years. This Pokémon has been around a long, long, long time.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It flourished worldwide during the ice age but its population declined when the masses of ice began to dwindle.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A frozen one was dug up from soil dating back 10,000 years. It woke up to much amazement.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A frozen one was dug up from soil dating back 10,000 years. It woke up to much amazement.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When the temperature rose at the end of the ice age, most Mamoswine disappeared.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When the temperature rose at the end of the ice age, most Mamoswine disappeared.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A frozen Mamoswine was dug from ice dating back 10,000 years. This Pokémon has been around a long, long, long time.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its impressive tusks are made of ice. The population thinned when it turned warm after the ice age.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"A frozen Mamoswine was dug from ice dating back 10,000 years. This Pokémon has been around a long, long, long time.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its impressive tusks are made of ice. The population thinned when it turned warm after the ice age.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon can be spotted in wall paintings from as far back as 10,000 years ago. For a while, it was thought to have gone extinct.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It looks strong, and that's exactly what it is. As the weather grows colder, its ice tusks grow longer, thicker, and more impressive.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its impressive tusks are made of ice. The ice age is over and the climate has warmed, so this Pokémon's population has thinned.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its impressive tusks are made of ice. The ice age is over and the climate has warmed, so this Pokémon's population has thinned.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This species reached its zenith during the period known as the ice age. I suspect that Hisui's frigid climate is in harmony with Mamoswine's constitution, thus awakening hidden potential.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A frozen Mamoswine was dug from ice dating back 10,000 years. This Pokémon has been around a long, long, long time.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A frozen one was dug up from soil dating back 10,000 years. It woke up, to much amazement.\"\n    }\n  ],\n  \"474\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Additional software was installed to make it a better Pokémon. It began acting oddly, however.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Additional software was installed to make it a better Pokémon. It began acting oddly, however.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its programming was modified to enable work in alien dimensions. It did not work as planned.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its programming was modified to enable it to travel through alien dimensions. Seems there might have been an error...\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its programming was modified to enable it to travel through alien dimensions. Seems there might have been an error...\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its programming was modified to enable work in alien dimensions. It did not work as planned.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its programming was modified to enable work in alien dimensions. It did not work as planned.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its programming was modified to enable work in alien dimensions. It did not work as planned.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its programming was modified to enable work in alien dimensions. It did not work as planned.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Additional software was installed to make it a better Pokémon. It began acting oddly, however.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its programming was modified to enable it to travel through alien dimensions. Seems there might have been an error...\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Additional software was installed to make it a better Pokémon. It began acting oddly, however.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its programming was modified to enable it to travel through alien dimensions. Seems there might have been an error...\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"In order to create a more advanced Pokémon, an additional program was installed, but apparently it contained a defect that makes it move oddly.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its program was modified to facilitate extra-dimensional activities, but that led to noticeably strange behavior.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its behavior is noticeably unstable, which is apparently due to the incompetence of the engineer who updated its programming.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"A faulty update was added to its programming. Its behavior is noticeably strange, so the experiment may have been a failure.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Porygon-Z had a program installed to allow it to move between dimensions, but the program also caused instability in Porygon-Z's behavior.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Some say an additional program made this Pokémon evolve, but even academics can't agree on whether Porygon-Z is really an evolution.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Additional software was installed to make it an even better Pokémon. It began acting oddly, however.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Additional software was installed to make it an even better Pokémon. It began acting oddly, however.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A curious item induced this evolution. The Pokémon's offensive capabilities have greatly increased, but the strangeness of its behavior has magnified in equal measure. This worries me.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"An additional program was installed to create a more advanced Pokémon, but it was apparently flawed. Porygon-Z moves oddly as a result.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its programming was modified to enable it to operate in other dimensions. This did not work as planned.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Porygon-Z's programming was updated so that the Pokémon might operate in other dimensions. Its behavior has been strikingly odd ever since.\"\n    }\n  ],\n  \"475\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A master of courtesy and swordsmanship, it fights using extending swords on its elbows.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A master of courtesy and swordsmanship, it fights using extending swords on its elbows.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When trying to protect someone, it extends its elbows as if they were swords and fights savagely.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Because it can sense what its foe is thinking, its attacks burst out first, fast, and fierce.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Because it can sense what its foe is thinking, its attacks burst out first, fast, and fierce.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When trying to protect someone, it extends its elbows as if they were swords and fights savagely.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When trying to protect someone, it extends its elbows as if they were swords and fights savagely.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When trying to protect someone, it extends its elbows as if they were swords and fights savagely.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When trying to protect someone, it extends its elbows as if they were swords and fights savagely.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Because it can sense what its foe is thinking, its attacks burst out first, fast, and fierce.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A master of courtesy and swordsmanship, it fights using extending swords on its elbows.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Because it can sense what its foe is thinking, its attacks burst out first, fast, and fierce.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"A master of courtesy and swordsmanship, it fights using extending swords on its elbows.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"True to its honorable-warrior image, it uses the blades on its elbows only in defense of something or someone.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Sharply attuned to others' wishes for help, this Pokémon seeks out those in need and aids them in battle.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A master of courtesy and swordsmanship, it fights using the extending swords on its elbows.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A master of courtesy and swordsmanship, it fights using the extending swords on its elbows.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The blades extending from its elbows are sharper than the finest swords. Its swordsmanship, albeit self-taught, is astonishingly impressive.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When trying to protect someone, it extends its elbows as if they were swords and fights savagely.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Because it can sense what its foe is thinking, its attacks burst out first, fast, and fierce.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A master of courtesy and swordsmanship, it fights using the extending swords on its elbows.\"\n    }\n  ],\n  \"476\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It exudes strong magnetism from all over. It controls three small units called Mini-Noses.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It exudes strong magnetism from all over. It controls three small units called Mini-Noses.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It freely controls three small units called Mini-Noses using magnetic force.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It controls three units called Mini-Noses using magnetic force. With them, it can attack the foe from three directions.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It controls three units called Mini-Noses using magnetic force. With them, it can attack the foe from three directions.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It freely controls three small units called Mini-Noses using magnetic force.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It freely controls three small units called Mini-Noses using magnetic force.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It freely controls three units called Mini-Noses using magnetic force.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It freely controls three units called Mini-Noses using magnetic force.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It exudes strong magnetism from all over. It controls three small units called Mini-Noses.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It freely controls three small units called Mini-Noses using magnetic force.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It exudes strong magnetism from all over. It controls three small units called Mini-Noses.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It freely controls three small units called Mini-Noses using magnetic force.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It radiates such a powerful magnetic field that nearby electrical appliances become unusable.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The main body controls three mobile units called Mini-Noses, which it maneuvers to catch prey.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it can control its units known as Mini-Noses, they sometimes get lost and don't come back.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It uses three small units to catch prey and battle enemies. The main body mostly just gives orders.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its entire body exudes strong magnetism. Probopass controls three small units called Mini-Noses.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its entire body exudes strong magnetism. Probopass controls three small units called Mini-Noses.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It is able to emit powerful magnetism, allowing it control over the iron sand that forms its luscious mustache. Using this iron sand, Probopass forms hard stones with which it smites its prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It controls three units called Mini-Noses using magnetic force. With them, it can attack a foe from three directions.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Probopass radiates such a powerful magnetic field that nearby electrical appliances are rendered useless while it's around.\"\n    }\n  ],\n  \"477\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"The antenna on its head captures radio waves from the world of spirits that command it to take people there.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"The antenna on its head captures radio waves from the world of spirits that command it to take people there.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said to take lost spirits into its pliant body and guide them home.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This feared Pokémon is said to travel to worlds unknown. Some even believe that it takes lost spirits along with it.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This feared Pokémon is said to travel to worlds unknown. Some even believe that it takes lost spirits along with it.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said to take lost spirits into its pliant body and guide them home.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said to take lost spirits into its pliant body and guide them home.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said to take lost spirits into its pliant body and guide them home.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said to take lost spirits into its pliant body and guide them home.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said to take lost spirits into its pliant body and guide them home.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The antenna on its head captures radio waves from the world of spirits that command it to take people there.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It is said to take lost spirits into its pliant body and guide them home.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The antenna on its head captures radio waves from the world of spirits that command it to take people there.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"At the bidding of transmissions from the spirit world, it steals people and Pokémon away. No one knows whether it has a will of its own.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With the mouth on its belly, Dusknoir swallows its target whole. The soul is the only thing eaten— Dusknoir disgorges the body before departing.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"The antenna on its head captures radio waves from the world of spirits that command it to take people there.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"The antenna on its head captures radio waves from the world of spirits that command it to take people there.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Comes to those whose lives have come to an end and escorts their souls to the afterlife. Known to mistakenly take the souls of those who yet have life left in them, albeit rarely.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is said to take lost spirits into its pliant body and take them to the afterlife.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It comes and goes between this world and the afterlife. People fear this Pokémon because it is said to suck in lost spirits and take them along.\"\n    }\n  ],\n  \"478\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It freezes foes with an icy breath nearly -60 degrees F. What seems to be its body is actually hollow.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It freezes foes with an icy breath nearly -60 degrees F. What seems to be its body is actually hollow.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It freezes prey by blowing its -58 degree F breath. It is said to then secretly display its prey.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Legends in snowy regions say that a woman who was lost on an icy mountain was reborn as Froslass.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Legends in snowy regions say that a woman who was lost on an icy mountain was reborn as Froslass{{sic}}\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It freezes prey by blowing its -58 degree F breath. It is said to then secretly display its prey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It freezes prey by blowing its -58 degree F breath. It is said to then secretly display its prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It freezes prey by blowing its -58 degree F breath. It is said to then secretly display its prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It freezes prey by blowing its -58 degree F breath. It is said to then secretly display its prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It freezes foes with an icy breath nearly -60 degrees Fahrenheit. What seems to be its body is actually hollow.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Legends in snowy regions say that a woman who was lost on an icy mountain was reborn as Froslass.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It freezes foes with an icy breath nearly -60 degrees Fahrenheit. What seems to be its body is actually hollow.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Legends in snowy regions say that a woman who was lost on an icy mountain was reborn as Froslass.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it finds humans or Pokémon it likes, it freezes them and takes them to its chilly den, where they become decorations.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The soul of a woman lost on a snowy mountain possessed an icicle, becoming this Pokémon. The food it most relishes is the souls of men.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It freezes hikers who have come to climb snowy mountains and carries them back to its home. It only goes after men it thinks are handsome.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's said that on nights of terrible blizzards, it comes down to human settlements. If you hear it knocking at your door, do not open it!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After a woman met her end on a snowy mountain, her regrets lingered on. From them, this Pokémon was born. Its favorite food is frozen souls.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It spits out cold air of nearly -60 degrees Fahrenheit to freeze its quarry. It brings frozen prey back to its lair and neatly lines them up.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It freezes foes with an icy breath that is nearly -60 degrees Fahrenheit. What seems to be its body is actually hollow.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It freezes foes with an icy breath that is nearly -60 degrees Fahrenheit. What seems to be its body is actually hollow.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A Pokémon inhabited by the soul of a woman who died bearing a grudge in the snowy mountains. Legends of Froslass placing deathly curses on misbehaving men send shivers down my spine.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it finds humans or Pokémon it likes, it freezes them and takes them to its chilly den, where they become decorations.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It freezes prey by blowing its -58 degree Fahrenheit breath. It is said to then secretly display its prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It freezes foes with an icy breath that is nearly -60 degrees Fahrenheit. What seems to be its body is actually hollow.\"\n    }\n  ],\n  \"479\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Its body is composed of plasma. It is known to infiltrate electronic devices and wreak havoc.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Its body is composed of plasma. It is known to infiltrate electronic devices and wreak havoc.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its electric-like body can enter some kinds of machines and take control in order to make mischief.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Research continues on this Pokémon, which could be the power source of a unique motor.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Research continues on this Pokémon, which could be the power source of a unique motor.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its electric-like body can enter some kinds of machines and take control in order to make mischief.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its electric-like body can enter some kinds of machines and take control in order to make mischief.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its electric-like body can enter some kinds of machines and take control in order to make mischief.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its electric-like body can enter some kinds of machines and take control in order to make mischief.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Research continues on this Pokémon, which could be the power source of a unique motor.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its body is composed of plasma. It is known to infiltrate electronic devices and wreak havoc.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Research continues on this Pokémon, which could be the power source of a unique motor.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its body is composed of plasma. It is known to infiltrate electronic devices and wreak havoc.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"One boy's invention led to the development of many different machines that take advantage of Rotom's unique capabilities.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With a body made of plasma, it can inhabit all sorts of machines. It loves to surprise others.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Its body is composed of plasma. It is known to infiltrate electronic devices and wreak havoc.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Its body is composed of plasma. It is known to infiltrate electronic devices and wreak havoc.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This bizarre Pokémon appears to be a will-o'-the-wisp powered by electricity. Be wary, as Rotom is both smart and mischievous.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its electricity-like body can enter some kinds of machines and take control in order to make mischief.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Research continues on this Pokémon, which could be the power source of a unique motor.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its body is composed of plasma. It is known to infiltrate electronic devices and wreak havoc.\"\n    }\n  ],\n  \"480\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Known as \\\"The Being of Knowledge.\\\" It is said that it can wipe out the memory of those who see its eyes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said that its emergence gave humans the intelligence to improve their quality of life.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When Uxie flew, people gained the ability to solve problems. It was the birth of knowledge.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"According to some sources, this Pokémon provided people with the intelligence necessary to solve various problems.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"According to some sources, this Pokémon provided people with the intelligence necessary to solve various problems.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When Uxie flew, people gained the ability to solve problems. It was the birth of knowledge.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When Uxie flew, people gained the ability to solve problems. It was the birth of knowledge.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When Uxie flew, people gained the ability to solve problems. It was the birth of knowledge.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When Uxie flew, people gained the ability to solve problems. It was the birth of knowledge.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Known as \\\"The Being of Knowledge.\\\" It is said that it can wipe out the memory of those who see its eyes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is said that its emergence gave humans the intelligence to improve their quality of life.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Known as \\\"The Being of Knowledge.\\\" It is said that it can wipe out the memory of those who see its eyes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It is said that its emergence gave humans the intelligence to improve their quality of life.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Known as the Being of Knowledge, it is said that it can wipe out the memory of those who see its eyes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said that its emergence gave humans the intelligence to improve their quality of life.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A Pokémon feared but also respected for stealing away the memories of evildoers. I have found records that suggest Uxie holds dominion over knowledge.\"\n    }\n  ],\n  \"481\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Known as \\\"The Being of Emotion.\\\" It taught humans the nobility of sorrow, pain, and joy.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It sleeps at the bottom of a lake. Its spirit is said to leave its body to fly on the lake's surface.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When Mesprit flew, people learned the joy and sadness of living. It was the birth of emotions.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This Pokémon is said to have endowed the human heart with emotions, such as sorrow and joy.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon is said to have endowed the human heart with emotions, such as sorrow and joy.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When Mesprit flew, people learned the joy and sadness of living. It was the birth of emotions.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When Mesprit flew, people learned the joy and sadness of living. It was the birth of emotions.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When Mesprit flew, people learned the joy and sadness of living. It was the birth of emotions.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When Mesprit flew, people learned the joy and sadness of living. It was the birth of emotions.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Known as \\\"The Being of Emotion.\\\" It taught humans the nobility of sorrow, pain, and joy.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It sleeps at the bottom of a lake. Its spirit is said to leave its body to fly on the lake's surface.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Known as \\\"The Being of Emotion.\\\" It taught humans the nobility of sorrow, pain, and joy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It sleeps at the bottom of a lake. Its spirit is said to leave its body to fly on the lake's surface.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is known as the Being of Emotion. It taught humans the nobility of sorrow, pain, and joy.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It sleeps at the bottom of a lake. Its spirit is said to leave its body to fly on the lake's surface.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Known as the Being of Emotion. In legend, this Pokémon was feared, as any who showed disrespect would have their emotions thrown into disarray.\"\n    }\n  ],\n  \"482\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Known as \\\"The Being of Willpower.\\\" It sleeps at the bottom of a lake to keep the world in balance.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is thought that Uxie, Mesprit and Azelf all came from the same egg.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"When Azelf flew, people gained the determination to do things. It was the birth of willpower.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This Pokémon is said to have endowed humans with the determination needed to face any of life's difficulties.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon is said to have endowed humans with the determination needed to face any of life's difficulties.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When Azelf flew, people gained the determination to do things. It was the birth of willpower.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When Azelf flew, people gained the determination to do things. It was the birth of willpower.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When Azelf flew, people gained the determination to do things. It was the birth of willpower.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When Azelf flew, people gained the determination to do things. It was the birth of willpower.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Known as \\\"The Being of Willpower.\\\" It sleeps at the bottom of a lake to keep the world in balance.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is thought that Uxie, Mesprit, and Azelf all came from the same egg.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Known as \\\"The Being of Willpower.\\\" It sleeps at the bottom of a lake to keep the world in balance.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It is thought that Uxie, Mesprit, and Azelf all came from the same egg.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is known as the Being of Willpower. It sleeps at the bottom of a lake to keep the world in balance.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is thought that Uxie, Mesprit, and Azelf all came from the same egg.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The dreaded Being of Willpower. Legends tell of this Pokémon manipulating the will of its adversaries and turning them into puppets of its own.\"\n    }\n  ],\n  \"483\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has the power to control time. It appears in Sinnoh-region myths as an ancient deity.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon spoken of in legend. It is said that time began moving when Dialga was born.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that time flows when Dialga's heart beats.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This Pokémon completely controls the flow of time. It uses its power to travel at will through the past and future.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon completely controls the flow of time. It uses its power to travel at will through the past and future.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that time flows when Dialga's heart beats.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that time flows when Dialga's heart beats.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that time flows when Dialga's heart beats.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that time flows when Dialga's heart beats.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A Pokémon spoken of in legend. It is said that time began moving when Dialga was born.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has the power to control time. It appears in Sinnoh-region myths as an ancient deity.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"A Pokémon spoken of in legend. It is said that time began moving when Dialga was born.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It has the power to control time. It appears in Sinnoh-region myths as an ancient deity.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has the power to control time. It appears in Sinnoh-region myths as an ancient deity.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"This Pokémon is spoken of in legend. It is said that time began moving when Dialga was born.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon is revered as a deity in Hisuian legend. The birth of Dialga was what caused the vast river of time to begin flowing in our world.\"\n    }\n  ],\n  \"484\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It has the ability to distort space. It is described as a deity in Sinnoh-region mythology.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is said to live in a gap in the spatial dimension parallel to ours. It appears in mythology.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that space becomes more stable with Palkia's every breath.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Its total control over the boundaries of space enable it to transport itself to faraway places or even other dimensions.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Its total control over the boundaries of space enable it to transport itself to faraway places or even other dimensions.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that space becomes more stable with Palkia's every breath.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that space becomes more stable with Palkia's every breath.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that space becomes more stable with Palkia's every breath.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A legendary Pokémon of Sinnoh. It is said that space becomes more stable with Palkia's every breath.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said to live in a gap in the spatial dimension parallel to ours. It appears in mythology.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has the ability to distort space. It is described as a deity in Sinnoh-region mythology.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It is said to live in a gap in the spatial dimension parallel to ours. It appears in mythology.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It has the ability to distort space. It is described as a deity in Sinnoh-region mythology.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It has the ability to distort space. It is described as a deity in Sinnoh-region mythology.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is said to live in a gap in the spatial dimension parallel to ours. Palkia appears in mythology.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon is feared as a deity in Hisuian legend. The birth of Palkia was what caused the walls of our world to disappear, creating a sky that spans for infinity.\"\n    }\n  ],\n  \"485\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It dwells in volcanic caves. It digs in with its cross-shaped feet to crawl on ceilings and walls.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It dwells in volcanic caves. It digs in with its cross-shaped feet to crawl on ceilings and walls.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"Its body is made of rugged steel. However, it is partially melted in spots because of its own heat.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Boiling blood, like magma, circulates through its body. It makes its dwelling place in volcanic caves.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Boiling blood, like magma, circulates through its body. It makes its dwelling place in volcanic caves.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its body is made of rugged steel. However, it is partially melted in spots because of its own heat.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its body is made of rugged steel. However, it is partially melted in spots because of its own heat.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its body is made of rugged steel. However, it is partially melted in spots because of its own heat.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its body is made of rugged steel. However, it is partially melted in spots because of its own heat.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It dwells in volcanic caves. It digs in with its cross-shaped feet to crawl on ceilings and walls.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Boiling blood, like magma, circulates through its body. It makes its dwelling place in volcanic caves.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It dwells in volcanic caves. It digs in with its cross-shaped feet to crawl on ceilings and walls.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Boiling blood, like magma, circulates through its body. It makes its dwelling place in volcanic caves.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It dwells in volcanic caves. It digs in with its cross-shaped feet to crawl on ceilings and walls.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It dwells in volcanic caves. It digs in with its cross-shaped feet to crawl on ceilings and walls.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Stories tell of this Pokémon being birthed from the boiling magma within Mount Coronet. Its molten-steel body holds many mysteries.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Boiling, magma-like blood circulates through its body. It makes its dwelling place in volcanic caves.\"\n    }\n  ],\n  \"486\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"There is an enduring legend that states this Pokémon towed continents with ropes.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"There is an enduring legend that states this Pokémon towed continents with ropes.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said to have made Pokémon that look like itself from a special ice mountain, rocks, and magma.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It is believed to have shaped Regirock, Regice, and Registeel out of clay, ice, and magma.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It is believed to have shaped Regirock, Regice, and Registeel out of clay, ice, and magma.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said to have made Pokémon that look like itself from a special ice mountain, rocks, and magma.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said to have made Pokémon that look like itself from a special ice mountain, rocks, and magma.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said to have made Pokémon that look like itself from a special ice mountain, rocks, and magma.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said to have made Pokémon that look like itself from a special ice mountain, rocks, and magma.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said to have made Pokémon that look like itself from a special ice mountain, rocks, and magma.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"There is an enduring legend that states this Pokémon towed continents with ropes.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It is said to have made Pokémon that look like itself from a special ice mountain, rocks, and magma.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"There is an enduring legend that states this Pokémon towed continents with ropes.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"All over the world, there are legends that tell of Regigigas creating other Pokémon in its own image.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's said that Regigigas created other Pokémon from many different materials before it moved the continents to where they are today.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"There is an enduring legend that states this Pokémon towed continents with ropes.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"There is an enduring legend that states this Pokémon towed continents with ropes.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"According to legend, Regigigas pulled landmasses together and bound them with rope to create the continent of Hisui. Though I have my doubts, the story could well contain a shred of truth.\"\n    }\n  ],\n  \"487\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that is said to live in a world on the reverse side of ours. It appears in an ancient cemetery.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon that is said to live in a world on the reverse side of ours. It appears in an ancient cemetery.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It was banished for its violence. It silently gazed upon the old world from the Distortion World.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"This Pokémon is said to live in a world on the reverse side of ours, where common knowledge is distorted and strange.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"This Pokémon is said to live in a world on the reverse side of ours, where common knowledge is distorted and strange.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It was banished for its violence. It silently gazed upon the old world from the Distortion World.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It was banished for its violence. It silently gazed upon the old world from the Distortion World.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It was banished for its violence. It silently gazed upon the old world from the Distortion World.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It was banished for its violence. It silently gazed upon the old world from the Distortion World.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This Pokémon is said to live in a world on the reverse side of ours, where common knowledge is distorted and strange.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It was banished for its violence. It silently gazed upon the old world from the Distortion World.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon is said to live in a world on the reverse side of ours, where common knowledge is distorted and strange.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It was banished for its violence. It silently gazed upon the old world from the Distortion World.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A Pokémon that is said to live in a world on the reverse side of ours. It appears in an ancient cemetery.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A Pokémon that is said to live in a world on the reverse side of ours. It appears in an ancient cemetery.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"There is one Hisuian verse that tells of a powerful light creating a deep shadow. I imagine that this deep shadow is Giratina.\"\n    }\n  ],\n  \"488\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Shiny particles are released from its wings like a veil. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Shiny particles are released from its wings like a veil. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"On nights around the quarter moon, the aurora from its tail extends and undulates beautifully.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"Those who sleep holding Cresselia's feather are assured of joyful dreams. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"Those who sleep holding Cresselia's feather are assured of joyful dreams. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"On nights around the quarter moon, the aurora from its tail extends and undulates beautifully.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"On nights around the quarter moon, the aurora from its tail extends and undulates beautifully.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"On nights around the quarter moon, the aurora from its tail extends and undulates beautifully.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"On nights around the quarter moon, the aurora from its tail extends and undulates beautifully.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Shiny particles are released from its wings like a veil. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Those who sleep holding Cresselia's feather are assured of joyful dreams. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Shiny particles are released from its wings like a veil. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Those who sleep holding Cresselia's feather are assured of joyful dreams. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"When it flies, it releases shiny particles from its veil-like wings. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"When it flies, it releases shiny particles from its veil-like wings. It is said to represent the crescent moon.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Cresselia is reminiscent of the crescent moon. It leaves a brilliant line of light in its wake as it flies across the night sky. I daresay it resembles the heavenly maiden who created the Milky Way.\"\n    }\n  ],\n  \"489\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"A Pokémon that lives in warm seas. It inflates the flotation sac on its head to drift and search for food.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"A Pokémon that lives in warm seas. It inflates the flotation sac on its head to drift and search for food.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It drifts in warm seas. It always returns to where it was born, no matter how far it may have drifted.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"When the water warms, they inflate the flotation sac on their heads and drift languidly on the sea in packs.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"When the water warms, they inflate the flotation sac on their heads and drift languidly on the sea in packs.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It drifts in warm seas. It always returns to where it was born, no matter how far it may have drifted.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It drifts in warm seas. It always returns to where it was born, no matter how far it may have drifted.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It drifts in warm seas. It always returns to where it was born, no matter how far it may have drifted.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It drifts in warm seas. It always returns to where it was born, no matter how far it may have drifted.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When the water warms, they inflate the flotation sac on their heads and drift languidly on the sea in packs.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It drifts in warm seas. It always returns to where it was born, no matter how far it may have drifted.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When the water warms, they inflate the flotation sac on their heads and drift languidly on the sea in packs.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It drifts in warm seas. It always returns to where it was born, no matter how far it may have drifted.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"A Pokémon that lives in warm seas. It inflates the flotation sac on its head to drift and search for food.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"A Pokémon that lives in warm seas. It inflates the flotation sac on its head to drift and search for food.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Can be seen floating offshore during seasons when the seas are warm. Its azure body blends in with the ocean waters—logic suggests this is a defense mechanism against natural predators.\"\n    }\n  ],\n  \"490\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"Born on a cold seafloor, it will swim great distances to return to its birthplace.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Water makes up 80% of its body. This Pokémon is easily affected by its environment.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is born with a wondrous power that lets it bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It starts its life with a wondrous power that permits it to bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It starts its life with a wondrous power that permits it to bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is born with a wondrous power that lets it bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is born with a wondrous power that lets it bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is born with a wondrous power that lets it bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is born with a wondrous power that lets it bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is born with a wondrous power that lets it bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It starts its life with a wondrous power that permits it to bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It is born with a wondrous power that lets it bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It starts its life with a wondrous power that permits it to bond with any kind of Pokémon.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"Born on a cold seafloor, it will swim great distances to return to its birthplace.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Water makes up 80 percent of its body. This Pokémon is easily affected by its environment.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Rumored to migrate across the oceans and visit Hisui's coastal waters only rarely. Although Manaphy resembles Phione, it is also quite different. The relation between the two is unclear.\"\n    }\n  ],\n  \"491\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It can lull people to sleep and make them dream. It is active during nights of the new moon.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"Folklore has it that on moonless nights, this Pokémon will make people see horrific nightmares.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"To protect itself, it afflicts those around it with nightmares. However, it means no harm.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"It chases people and Pokémon from its territory by causing them to experience deep, nightmarish slumbers.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"It chases people and Pokémon from its territory by causing them to experience deep, nightmarish slumbers.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"To protect itself, it afflicts those around it with nightmares. However, it means no harm.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"To protect itself, it afflicts those around it with nightmares. However, it means no harm.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"To protect itself, it afflicts those around it with nightmares. However, it means no harm.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"To protect itself, it afflicts those around it with nightmares. However, it means no harm.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It chases people and Pokémon from its territory by causing them to experience deep, nightmarish slumbers.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can lull people to sleep and make them dream. It is active during nights of the new moon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It chases people and Pokémon from its territory by causing them to experience deep, nightmarish slumbers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It can lull people to sleep and make them dream. It is active during nights of the new moon.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It can lull people to sleep and make them dream. It is active during nights of a new moon.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"Folklore has it that on moonless nights, this Pokémon will make people see horrific nightmares.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"On a moonless night, a strange incident occurred in which every one of a village's inhabitants suffered nightmares. The villagers attested that Darkrai appeared before them in these nightmares.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can lull people into a deep sleep and make them dream. It is active on nights with a new moon.\"\n    }\n  ],\n  \"492\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It lives in flower patches and avoids detection by curling up to look like a flowering plant.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It can dissolve toxins in the air to instantly transform ruined land into a lush field of flowers.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"The flowers all over its body burst into bloom if it is lovingly hugged and senses gratitude.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"The blooming of Gracidea flowers confers the power of flight upon it. Feelings of gratitude are the message it delivers.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"The blooming of Gracidea flowers confers the power of flight upon it. Feelings of gratitude are the message it delivers.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The flowers all over its body burst into bloom if it is lovingly hugged and senses gratitude.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The flowers all over its body burst into bloom if it is lovingly hugged and senses gratitude.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The flowers all over its body burst into bloom if it is lovingly hugged and senses gratitude.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The flowers all over its body burst into bloom if it is lovingly hugged and senses gratitude.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can dissolve toxins in the air to instantly transform ruined land into a lush field of flowers.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The blooming of Gracidea flowers confers the power of flight upon it. Feelings of gratitude are the message it delivers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It can dissolve toxins in the air to instantly transform ruined land into a lush field of flowers.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The blooming of Gracidea flowers confers the power of flight upon it. Feelings of gratitude are the message it delivers.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It lives in common flower patches but is rarely noticed. It is often mistaken for a flowering plant when curled up.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It can dissolve toxins in the air to instantly transform ruined land into a lush field of flowers.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"When the turning of seasons brings the cruel winter to its end and the joyous people give thanks to the heavens, Shaymin appears and covers the withered land with flowers.\"\n    }\n  ],\n  \"493\": [\n    {\n      \"version_id\": \"Diamond\",\n      \"flavor_text\": \"It is described in mythology as the Pokémon that shaped the universe with its 1,000 arms.\"\n    },\n    {\n      \"version_id\": \"Pearl\",\n      \"flavor_text\": \"It is told in mythology that this Pokémon was born before the universe even existed.\"\n    },\n    {\n      \"version_id\": \"Platinum\",\n      \"flavor_text\": \"It is said to have emerged from an egg in a place where there was nothing, then shaped the world.\"\n    },\n    {\n      \"version_id\": \"HeartGold\",\n      \"flavor_text\": \"According to the legends of Sinnoh, this Pokémon emerged from an egg and shaped all there is in this world.\"\n    },\n    {\n      \"version_id\": \"SoulSilver\",\n      \"flavor_text\": \"According to the legends of Sinnoh, this Pokémon emerged from an egg and shaped all there is in this world.\"\n    },\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is said to have emerged from an egg in a place where there was nothing, then shaped the world.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said to have emerged from an egg in a place where there was nothing, then shaped the world.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It is said to have emerged from an egg in a place where there was nothing then shaped the world.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It is said to have emerged from an egg in a place where there was nothing then shaped the world.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"According to the legends of Sinnoh, this Pokémon emerged from an egg and shaped all there is in this world.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is told in mythology that this Pokémon was born before the universe even existed.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"According to the legends of Sinnoh, this Pokémon emerged from an egg and shaped all there is in this world.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It is told in mythology that this Pokémon was born before the universe even existed.\"\n    },\n    {\n      \"version_id\": \"Brilliant Diamond\",\n      \"flavor_text\": \"It is described in mythology as the Pokémon that shaped the universe with its 1,000 arms.\"\n    },\n    {\n      \"version_id\": \"Shining Pearl\",\n      \"flavor_text\": \"It is told in mythology that this Pokémon was the first Pokémon born before the universe even existed.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It is the heavenly fount from which pours the light that shines across Hisui. Its luminance guides and protects all Pokémon. Hisuian mythology states that Arceus is the creator of all things.\"\n    }\n  ],\n  \"494\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This Pokémon brings victory. It is said that Trainers with Victini always win, regardless of the type of encounter.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It creates an unlimited supply of energy inside its body, which it shares with those who touch it.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it shares the infinite energy it creates, that being's entire body will be overflowing with power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it shares the infinite energy it creates, that being's entire body will be overflowing with power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This Pokémon brings victory. It is said that Trainers with Victini always win, regardless of the type of encounter.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it shares the infinite energy it creates, that being's entire body will be overflowing with power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon brings victory. It is said that Trainers with Victini always win, regardless of the type of encounter.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it shares the infinite energy it creates, that being's entire body will be overflowing with power.\"\n    }\n  ],\n  \"495\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is very intelligent and calm. Being exposed to lots of sunlight makes its movements swifter.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They photosynthesize by bathing their tails in sunlight. When they are not feeling well, their tails droop.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Being exposed to sunlight makes its movements swifter. It uses vines more adeptly than its hands.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Being exposed to sunlight makes its movements swifter. It uses vines more adeptly than its hands.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Being exposed to sunlight makes its movements swifter. It uses vines more adeptly than its hands.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They photosynthesize by bathing their tails in sunlight. When they are not feeling well, their tails droop.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Being exposed to sunlight makes its movements swifter. It uses vines more adeptly than its hands.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They photosynthesize by bathing their tails in sunlight. When they are not feeling well, their tails droop.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The leaf on Snivy's tail generates energy when exposed to sunlight, making Snivy swifter and adding an edge to its moves.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It prefers to avoid groups. In its day-to-day life, it dexterously controls its vines to compensate for its short arms.\"\n    }\n  ],\n  \"496\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It moves along the ground as if sliding. Its swift movements befuddle its foes, and it then attacks with a vine whip.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They avoid attacks by sinking into the shadows of thick foliage. They retaliate with masterful whipping techniques.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it gets dirty, its leaves can't be used in photosynthesis, so it always keeps itself clean.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it gets dirty, its leaves can't be used in photosynthesis, so it always keeps itself clean.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It moves along the ground as if sliding. Its swift movements befuddle its foes, and it then attacks with a vine whip.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it gets dirty, its leaves can't be used in photosynthesis, so it always keeps itself clean.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It moves along the ground as if sliding. Its swift movements befuddle its foes, and it then attacks with a vine whip.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it gets dirty, its leaves can't be used in photosynthesis, so it always keeps itself clean.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It runs low to the ground, weaving through the grass, then mercilessly pummels its target by whipping them with its vines.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Servine's one weakness is its inflated sense of pride. It takes a while for Servine to be able to cooperate with other Pokémon.\"\n    }\n  ],\n  \"497\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can stop its opponents' movements with just a glare. It takes in solar energy and boosts it internally.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They raise their heads to intimidate opponents but only give it their all when fighting a powerful opponent.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It only gives its all against strong opponents who are not fazed by the glare from Serperior's noble eyes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It only gives its all against strong opponents who are not fazed by the glare from Serperior's noble eyes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It only gives its all against strong opponents who are not fazed by the glare from Serperior's noble eyes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can stop its opponents' movements with just a glare. It takes in solar energy and boosts it internally.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It only gives its all against strong opponents who are not fazed by the glare from Serperior's noble eyes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It can stop its opponents' movements with just a glare. It takes in solar energy and boosts it internally.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It generates energy from sunlight, then amplifies that energy dozens of times within its long body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"An intimidating gaze and majestic appearance have caused this Pokémon to be known as the Lord of the Forest.\"\n    }\n  ],\n  \"498\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can deftly dodge its foe's attacks while shooting fireballs from its nose. It roasts berries before it eats them.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It blows fire through its nose. When it catches a cold, the fire becomes pitch-black smoke instead.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It loves to eat roasted berries, but sometimes it gets too excited and burns them to a crisp.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It loves to eat roasted berries, but sometimes it gets too excited and burns them to a crisp.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can deftly dodge its foe's attacks while shooting fireballs from its nose. It roasts berries before it eats them.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It loves to eat roasted berries, but sometimes it gets too excited and burns them to a crisp.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It can deftly dodge its foe's attacks while shooting fireballs from its nose. It roasts berries before it eats them.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It loves to eat roasted berries, but sometimes it gets too excited and burns them to a crisp.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's more nimble than it looks, and it uses its speed to confound its enemies. It rapidly launches fireballs from both nostrils.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon is a ravenous glutton. It uses its excellent sense of smell to find food, then cooks it to a crisp before eating.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can deftly dodge its foe's attacks while shooting fireballs from its nose. It roasts berries before it eats them.\"\n    }\n  ],\n  \"499\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When its internal fire flares up, its movements grow sharper and faster. When in trouble, it emits smoke.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Whatever it eats becomes fuel for the flame in its stomach. When it is angered, the intensity of the flame increases.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The more it eats, the more fuel it has to make the fire in its stomach stronger. This fills it with even more power.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The more it eats, the more fuel it has to make the fire in its stomach stronger. This fills it with even more power.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The more it eats, the more fuel it has to make the fire in its stomach stronger. This fills it with even more power.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When its internal fire flares up, its movements grow sharper and faster. When in trouble, it emits smoke.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The more it eats, the more fuel it has to make the fire in its stomach stronger. This fills it with even more power.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When its internal fire flares up, its movements grow sharper and faster. When in trouble, it emits smoke.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When Pignite enters battle, its body temperature rapidly soars until Pignite itself is engulfed by a scorching fireball.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When defending its friends, Pignite will stand up to any opponent, no matter how strong. But it's powerless when faced with an empty stomach.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The more it eats, the more fuel it has to make the fire in its stomach stronger. This fills it with even more power.\"\n    }\n  ],\n  \"500\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can throw a fire punch by setting its fists on fire with its fiery chin. It cares deeply about its friends.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has mastered fast and powerful fighting moves. It grows a beard of fire.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A flaring beard of fire is proof that it is fired up. It is adept at using many different moves.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A flaring beard of fire is proof that it is fired up. It is adept at using many different moves.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can throw a fire punch by setting its fists on fire with its fiery chin. It cares deeply about its friends.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has mastered fast and powerful fighting moves. It grows a beard of fire.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It can throw a fire punch by setting its fists on fire with its fiery chin. It cares deeply about its friends.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It has mastered fast and powerful fighting moves. It grows a beard of fire.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The flames blazing deep inside Emboar's chest erupt vigorously from its chin, forming a beard of fire.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The direr the situation, the more it seems to enjoy itself. The flames around its neck intensify, too, increasing Emboar's power and speed.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has mastered fast and powerful fighting moves. It grows a beard of fire.\"\n    }\n  ],\n  \"501\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It fights using the scalchop on its stomach. In response to an attack, it retaliates immediately by slashing.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The scalchop on its stomach is made from the same elements as claws. It detaches the scalchop for use as a blade.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The scalchop on its stomach isn't just used for battle--it can be used to break open hard berries as well.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The scalchop on its stomach isn't just used for battle--it can be used to break open hard berries as well.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The scalchop on its stomach isn't just used for battle--it can be used to break open hard berries as well.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It fights using the scalchop on its stomach. In response to an attack, it retaliates immediately by slashing.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The scalchop on its stomach isn't just used for battle—it can be used to break open hard berries as well.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It fights using the scalchop on its stomach. In response to an attack, it retaliates immediately by slashing.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This Pokémon from the Unova region uses the shell on its belly as a weapon to cut down its foes. Thus, I've conferred upon this shell the name \\\"scalchop.\\\"\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It wields the scalchop on its stomach like a knife, blocking the moves of its enemies before slashing back at them in swift retaliation.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's said that Oshawott learned to maintain its scalchop with riverbed stones by mimicking humans it saw using whetstones.\"\n    }\n  ],\n  \"502\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Strict training is how it learns its flowing double-scalchop technique.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Scalchop techniques differ from one Dewott to another. It never neglects maintaining its scalchops.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"As a result of strict training, each Dewott learns different forms for using the scalchops.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"As a result of strict training, each Dewott learns different forms for using the scalchops.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Strict training is how it learns its flowing double-scalchop technique.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"As a result of strict training, each Dewott learns different forms for using the scalchops.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Strict training is how it learns its flowing double-scalchop technique.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"As a result of strict training, each Dewott learns different forms for using the scalchops.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its exquisite double-scalchop technique is likely the result of daily training, and it can send even masters of the blade fleeing in defeat.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's said that people modeled swordplay after the way Dewott's movements flow like water while it's wielding its two scalchops.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Dewott has a studious and stern personality. It masters the use of its scalchops through dedicated, repeated training.\"\n    }\n  ],\n  \"503\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"One swing of the sword incorporated in its armor can fell an opponent. A simple glare from one of them quiets everybody.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Part of the armor on its anterior legs becomes a giant sword. Its cry alone is enough to intimidate most enemies.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"In the time it takes a foe to blink, it can draw and sheathe the seamitars attached to its front legs.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"In the time it takes a foe to blink, it can draw and sheathe the seamitars attached to its front legs.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In the time it takes a foe to blink, it can draw and sheathe the seamitars attached to its front legs.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"One swing of the sword incorporated in its armor can fell an opponent. A simple glare from one of them quiets everybody.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In the time it takes a foe to blink, it can draw and sheathe the seamitars attached to its front legs.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"One swing of the sword incorporated in its armor can fell an opponent. A simple glare from one of them quiets everybody.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Hard of heart and deft of blade, this rare form of Samurott is a product of the Pokémon's evolution in the region of Hisui. Its turbulent blows crash into foes like ceaseless pounding waves.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A master of a sword-drawing art called iaijutsu, Samurott settles its battles with a single swing of either large sword sheathed in its foreleg armor.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Samurott leads its group strictly. Those who do not follow its rules receive a merciless thrashing.\"\n    }\n  ],\n  \"504\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Using food stored in cheek pouches, they can keep watch for days. They use their tails to communicate with others.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Extremely cautious, they take shifts to maintain a constant watch of their nest. They feel insecure without a lookout.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Extremely cautious, one of them will always be on the lookout, but it won't notice a foe coming from behind.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Extremely cautious, one of them will always be on the lookout, but it won't notice a foe coming from behind.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Using food stored in cheek pouches, they can keep watch for days. They use their tails to communicate with others.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Extremely cautious, one of them will always be on the lookout, but it won't notice a foe coming from behind.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Using food stored in cheek pouches, they can keep watch for days. They use their tails to communicate with others.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Extremely cautious, one of them will always be on the lookout, but it won't notice a foe coming from behind.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Using food stored in cheek pouches, they can keep watch for days. They use their tails to communicate with others.\"\n    }\n  ],\n  \"505\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When they see an enemy, their tails stand high, and they spit the seeds of berries stored in their cheek pouches.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They make the patterns on their bodies shine in order to threaten predators. Keen eyesight lets them see in the dark.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Using luminescent matter, it makes its eyes and body glow and stuns attacking opponents.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Using luminescent matter, it makes its eyes and body glow and stuns attacking opponents.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Using luminescent matter, it makes its eyes and body glow and stuns attacking opponents.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When they see an enemy, their tails stand high, and they spit the seeds of berries stored in their cheek pouches.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Using luminescent matter, it makes its eyes and body glow and stuns attacking opponents.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When they see an enemy, their tails stand high, and they spit the seeds of berries stored in their cheek pouches.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Using luminescent matter within its body, it makes its eyes and body glow and stuns attacking opponents.\"\n    }\n  ],\n  \"506\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It faces strong opponents with great courage. But, when at a disadvantage in a fight, this intelligent Pokémon flees.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The long hair around its face provides an amazing radar that lets it sense subtle changes in its surroundings.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Though it is a very brave Pokémon, it's also smart enough to check its foe's strength and avoid battle.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Though it is a very brave Pokémon, it's also smart enough to check its foe's strength and avoid battle.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The long hair around its face provides an amazing radar that lets it sense subtle changes in its surroundings.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Though it is a very brave Pokémon, it's also smart enough to check its foe's strength and avoid battle.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The long hair around its face provides an amazing radar that lets it sense subtle changes in its surroundings.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Though it is a very brave Pokémon, it's also smart enough to check its foe's strength and avoid battle.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Because it doesn't yelp, it's extremely popular with Trainers who live in apartment buildings.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The long fur surrounding its face functions as radar, enabling it to probe the condition of its battle opponents.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Pokémon has excellent judgment. If it decides it can't defeat an opponent, it immediately turns tail and vamooses.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pokémon is popular with beginners because it's intelligent, obedient to its Trainer's commands, and easy to raise.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is courageous but also cautious. It uses the soft fur covering its face to collect information about its surroundings.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is far brighter than the average child, and Lillipup won't forget the love it receives or any abuse it suffers.\"\n    }\n  ],\n  \"507\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has black, cape-like fur that is very hard and decreases the amount of damage it receives.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It loyally follows its Trainer's orders. For ages, they have helped Trainers raise Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This very loyal Pokémon helps Trainers, and it also takes care of other Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This very loyal Pokémon helps Trainers, and it also takes care of other Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This very loyal Pokémon helps Trainers, and it also takes care of other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has black, cape-like fur that is very hard and decreases the amount of damage it receives.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This very loyal Pokémon helps Trainers, and it also takes care of other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It has black, cape-like fur that is very hard and decreases the amount of damage it receives.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its dense black fur grows continuously. The high cost of keeping its hard fur properly groomed makes this a troublesome Pokémon to train.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon obeys its master's orders faithfully. However, it refuses to listen to anything said by a person it doesn't respect.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The longer its black fur grows, the harder and more impervious it gets. Claws and fangs can't easily penetrate it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It has been living with people for so long that portrayals of it can be found on the walls of caves from long, long ago.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Herdier is a very smart and friendly Pokémon. So much so that there's a theory that Herdier was the first Pokémon to partner with people.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The black fur that covers this Pokémon's body is dense and springy. Even sharp fangs bounce right off.\"\n    }\n  ],\n  \"508\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It rescues people stranded by blizzards in the mountains. Its shaggy fur shields it from the cold.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"This extremely wise Pokémon excels at rescuing people stranded at sea or in the mountains.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Being wrapped in its long fur is so comfortable that a person would be fine even overnight on a wintry mountain.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Being wrapped in its long fur is so comfortable that a person would be fine even overnight on a wintry mountain.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It rescues people stranded by blizzards in the mountains. Its shaggy fur shields it from the cold.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Being wrapped in its long fur is so comfortable that a person would be fine even overnight on a wintry mountain.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It rescues people stranded by blizzards in the mountains. Its shaggy fur shields it from the cold.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Being wrapped in its long fur is so comfortable that a person would be fine even overnight on a wintry mountain.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Intelligent, good-natured, and valiant, it's a trustworthy partner on rescue teams.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"With this wise Pokémon, there could be no concern that it would ever attack people. Some parents even trust it to babysit.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It pays no mind to the cold, thanks to its long warm coat. Stoutland in Alola look a little uncomfortable.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its fur is long and thick. A long time ago in cold regions, every household kept a Stoutland.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"These Pokémon seem to enjoy living with humans. Even a Stoutland caught in the wild will warm up to people in about three days.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Stoutland is immensely proud of its impressive moustache. It's said that moustache length is what determines social standing among this species.\"\n    }\n  ],\n  \"509\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They steal from people for fun, but their victims can't help but forgive them. Their deceptively cute act is perfect.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its cute act is a ruse. When victims let down their guard, they find their items taken. It attacks with sharp claws.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Their cute act is a ruse. They trick people and steal their valuables just to see the looks on their faces.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Their cute act is a ruse. They trick people and steal their valuables just to see the looks on their faces.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its cute act is a ruse. When victims let down their guard, they find their items taken. It attacks with sharp claws.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They steal from people for fun, but their victims can't help but forgive them. Their deceptively cute act is perfect.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its cute act is a ruse. When victims let down their guard, they find their items taken. It attacks with sharp claws.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They steal from people for fun, but their victims can't help but forgive them. Their deceptively cute act is perfect.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It steals things from people just to amuse itself with their frustration. A rivalry exists between this Pokémon and Nickit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Opponents that get drawn in by its adorable behavior come away with stinging scratches from its claws and stinging pride from its laughter.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Purrloin steals from people for fun, but its behavior is so charming that its victims can't help but forgive it.\"\n    }\n  ],\n  \"510\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"These Pokémon vanish and appear unexpectedly. Many Trainers are drawn to their beautiful form and fur.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Stealthily, it sneaks up on its target, striking from behind before its victim has a chance to react.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Their beautiful form comes from the muscles they have developed. They run silently in the night.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Their beautiful form comes from the muscles they have developed. They run silently in the night.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Their beautiful form comes from the muscles they have developed. They run silently in the night.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Stealthily, it sneaks up on its target, striking from behind before its victim has a chance to react.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Their beautiful form comes from the muscles they have developed. They run silently in the night.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Stealthily, it sneaks up on its target, striking from behind before its victim has a chance to react.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Don't be fooled by its gorgeous fur and elegant figure. This is a moody and vicious Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This stealthy Pokémon sneaks up behind prey without making any sound at all. It competes with Thievul for territory.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Liepard appear without warning and disappear just as unexpectedly. Their beautiful physique and fur charm many Trainers.\"\n    }\n  ],\n  \"511\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This Pokémon dwells deep in the forest. Eating a leaf from its head whisks weariness away as if by magic.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It shares the leaf on its head with weary-looking Pokémon. These leaves are known to relieve stress.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It's good at finding berries and gathers them from all over. It's kind enough to share them with friends.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It's good at finding berries and gathers them from all over. It's kind enough to share them with friends.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It shares the leaf on its head with weary-looking Pokémon. These leaves are known to relieve stress.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It's good at finding berries and gathers them from all over. It's kind enough to share them with friends.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It shares the leaf on its head with weary-looking Pokémon. These leaves are known to relieve stress.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It's good at finding berries and gathers them from all over. It's kind enough to share them with friends.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It shares the leaves on its head with weary Pokémon. These leaves reduce fatigue.\"\n    }\n  ],\n  \"512\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Ill tempered, it fights by swinging its barbed tail around wildly. The leaf growing on its head is very bitter.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It attacks enemies with strikes of its thorn-covered tail. This Pokémon is wild tempered.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It strikes its enemies with a thorn-covered tail. The leaf on its head is bitter.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It strikes its enemies with a thorn-covered tail. The leaf on its head is bitter.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It attacks enemies with strikes of its thorn-covered tail. This Pokémon is wild tempered.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Ill tempered, it fights by swinging its barbed tail around wildly. The leaf growing on its head is very bitter.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It attacks enemies with strikes of its thorn-covered tail. This Pokémon is wild tempered.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ill tempered, it fights by swinging its barbed tail around wildly. The leaf growing on its head is very bitter.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Ill-tempered, it fights by swinging its barbed tail around wildly. The leaves growing on its head are very bitter.\"\n    }\n  ],\n  \"513\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it is angered, the temperature of its head tuft reaches 600° F. It uses its tuft to roast berries.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"This Pokémon lives in caves in volcanoes. The fire within the tuft on its head can reach 600° F.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Very intelligent, it roasts berries before eating them. It likes to help people.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Very intelligent, it roasts berries before eating them. It likes to help people.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Very intelligent, it roasts berries before eating them. It likes to help people.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This Pokémon lives in caves in volcanoes. The fire within the tuft on its head can reach 600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Very intelligent, it roasts berries before eating them. It likes to help people.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon lives in caves in volcanoes. The fire within the tuft on its head can reach 600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Very intelligent, it roasts berries before eating them. It likes to help people.\"\n    }\n  ],\n  \"514\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It loves sweets because they become energy for the fire burning inside its body.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A flame burns inside its body. It scatters embers from its head and tail to sear its opponents.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it gets excited, embers rise from its head and tail and it gets hot. For some reason, it loves sweets.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it gets excited, embers rise from its head and tail and it gets hot. For some reason, it loves sweets.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A flame burns inside its body. It scatters embers from its head and tail to sear its opponents.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it gets excited, embers rise from its head and tail and it gets hot. For some reason, it loves sweets.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"A flame burns inside its body. It scatters embers from its head and tail to sear its opponents.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it gets excited, embers rise from its head and tail and it gets hot. For some reason, it loves sweets.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When it gets excited, embers rise from its head and tail and it gets hot. For some reason, it loves sweets.\"\n    }\n  ],\n  \"515\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The water stored inside the tuft on its head is full of nutrients. Plants that receive its water grow large.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It does not thrive in dry environments. It keeps itself damp by shooting water stored in its head tuft from its tail.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The water stored inside the tuft on its head is full of nutrients. It waters plants with it using its tail.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The water stored inside the tuft on its head is full of nutrients. It waters plants with it using its tail.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The water stored inside the tuft on its head is full of nutrients. It waters plants with it using its tail.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The water stored inside the tuft on its head is full of nutrients. Plants that receive its water grow large.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The water stored inside the tuft on its head is full of nutrients. It waters plants with it using its tail.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The water stored inside the tuft on its head is full of nutrients. Plants that receive its water grow large.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The water stored inside the tuft on its head is full of nutrients. It provides this water to plants by using its tail.\"\n    }\n  ],\n  \"516\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The tuft on its head holds water. When the level runs low, it replenishes the tuft by siphoning up water with its tail.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The high-pressure water expelled from its tail is so powerful, it can destroy a concrete wall.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It prefers places with clean water. When its tuft runs low, it replenishes it by siphoning up water with its tail.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It prefers places with clean water. When its tuft runs low, it replenishes it by siphoning up water with its tail.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The high-pressure water expelled from its tail is so powerful, it can destroy a concrete wall.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It prefers places with clean water. When its tuft runs low, it replenishes it by siphoning up water with its tail.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The high-pressure water expelled from its tail is so powerful, it can destroy a concrete wall.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It prefers places with clean water. When its tuft runs low, it replenishes it by siphoning up water with its tail.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It prefers places with clean water. When the stores of water on its head run low, it replenishes its supply by siphoning up more with its tail.\"\n    }\n  ],\n  \"517\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Munna always float in the air. People whose dreams are eaten by them forget what the dreams had been about.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It eats the dreams of people and Pokémon. When it eats a pleasant dream, it expels pink-colored mist.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This Pokémon appears before people and Pokémon who are having nightmares and eats those dreams.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This Pokémon appears before people and Pokémon who are having nightmares and eats those dreams.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This Pokémon appears before people and Pokémon who are having nightmares and eats those dreams.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It eats the dreams of people and Pokémon. When it eats a pleasant dream, it expels pink-colored mist.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon appears before people and Pokémon who are having nightmares and eats those dreams.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It eats the dreams of people and Pokémon. When it eats a pleasant dream, it expels pink-colored mist.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Late at night, it appears beside people's pillows. As it feeds on dreams, the patterns on its body give off a faint glow.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It eats dreams and releases mist. The mist is pink when it's eating a good dream, and black when it's eating a nightmare.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It eats the dreams of people and Pokémon. When it eats a pleasant dream, it expels pink-colored mist.\"\n    }\n  ],\n  \"518\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The mist emanating from their foreheads is packed with the dreams of people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"With the mist from its forehead, it can create shapes of things from dreams it has eaten.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The dream mist coming from its forehead changes into many different colors depending on the dream that was eaten.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The dream mist coming from its forehead changes into many different colors depending on the dream that was eaten.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The mist emanating from their foreheads is packed with the dreams of people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The dream mist coming from its forehead changes into many different colors depending on the dream that was eaten.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The mist emanating from their foreheads is packed with the dreams of people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The dream mist coming from its forehead changes into many different colors depending on the dream that was eaten.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When dark mists emanate from its body, don't get too near. If you do, your nightmares will become reality.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It drowses and dreams all the time. It's best to leave it be if it's just woken up, as it's a terrible grump when freshly roused from sleep.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The mist from its forehead takes the shape of things that appeared in dreams Musharna has eaten, giving those dreams physical form.\"\n    }\n  ],\n  \"519\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Each follows its Trainer's orders as best it can, but they sometimes fail to understand complicated commands.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"These Pokémon live in cities. They are accustomed to people. Flocks often gather in parks and plazas.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This very forgetful Pokémon will wait for a new order from its Trainer even though it already has one.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This very forgetful Pokémon will wait for a new order from its Trainer even though it already has one.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This very forgetful Pokémon will wait for a new order from its Trainer even though it already has one.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"These Pokémon live in cities. They are accustomed to people. Flocks often gather in parks and plazas.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This very forgetful Pokémon will wait for a new order from its Trainer even though it already has one.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"These Pokémon live in cities. They are accustomed to people. Flocks often gather in parks and plazas.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Where people go, these Pokémon follow. If you're scattering food for them, be careful— several hundred of them can gather at once.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's forgetful and not very bright, but many Trainers love it anyway for its friendliness and sincerity.\"\n    }\n  ],\n  \"520\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can return to its Trainer's location regardless of the distance separating them.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Many people believe that, deep in the forest where Tranquill live, there is a peaceful place where there is no war.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"No matter where in the world it goes, it knows where its nest is, so it never gets separated from its Trainer.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"No matter where in the world it goes, it knows where its nest is, so it never gets separated from its Trainer.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Many people believe that, deep in the forest where Tranquill live, there is a peaceful place where there is no war.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"No matter where in the world it goes, it knows where its nest is, so it never gets separated from its Trainer.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Many people believe that, deep in the forest where Tranquill live, there is a peaceful place where there is no war.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"No matter where in the world it goes, it knows where its nest is, so it never gets separated from its Trainer.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It can fly moderately quickly. No matter how far it travels, it can always find its way back to its master and its nest.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These bright Pokémon have acute memories. Apparently delivery workers often choose them as their partners.\"\n    }\n  ],\n  \"521\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Males swing their head plumage to threaten opponents. The females' flying abilities surpass those of the males.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Males have plumage on their heads. They will never let themselves feel close to anyone other than their Trainers.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Males swing the plumage on their heads to threaten others, but females are better at flying.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Males swing the plumage on their heads to threaten others, but females are better at flying.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Males swing their head plumage to threaten opponents. The females' flying abilities surpass those of the males.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Males have plumage on their heads. They will never let themselves feel close to anyone other than their Trainers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Males swing their head plumage to threaten opponents. The females' flying abilities surpass those of the males.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Males have plumage on their heads. They will never let themselves feel close to anyone other than their Trainers.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Unfezant are exceptional fliers. The females are known for their stamina, while the males outclass them in terms of speed.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is intelligent and intensely proud. People will sit up and take notice if you become the Trainer of one.\"\n    }\n  ],\n  \"522\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its mane shines when it discharges electricity. They use their flashing manes to communicate with one another.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When thunderclouds cover the sky, it will appear. It can catch lightning with its mane and store the electricity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its mane shines when it discharges electricity. They use the frequency and rhythm of these flashes to communicate.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its mane shines when it discharges electricity. They use the frequency and rhythm of these flashes to communicate.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When thunderclouds cover the sky, it will appear. It can catch lightning with its mane and store the electricity.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its mane shines when it discharges electricity. They use the frequency and rhythm of these flashes to communicate.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When thunderclouds cover the sky, it will appear. It can catch lightning with its mane and store the electricity.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its mane shines when it discharges electricity. They use the frequency and rhythm of these flashes to communicate.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its heartbeat generates electricity. When Blitzle is surprised and its heart rate goes up, the voltage of its electricity also rises.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon prefers places with lots of lightning strikes. It catches lightning with its mane and stores the electricity within its body.\"\n    }\n  ],\n  \"523\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They have lightning-like movements. When Zebstrika run at full speed, the sound of thunder reverberates.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"This ill-tempered Pokémon is dangerous because when it's angry, it shoots lightning from its mane in all directions.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When this ill-tempered Pokémon runs wild, it shoots lightning from its mane in all directions.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When this ill-tempered Pokémon runs wild, it shoots lightning from its mane in all directions.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When this ill-tempered Pokémon runs wild, it shoots lightning from its mane in all directions.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They have lightning-like movements. When Zebstrika run at full speed, the sound of thunder reverberates.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When this ill-tempered Pokémon runs wild, it shoots lightning from its mane in all directions.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They have lightning-like movements. When Zebstrika run at full speed, the sound of thunder reverberates.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is aggressive and has a volatile disposition. When agitated, it will illuminate its mane in yellow and fire off bolts of electricity.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Once the herd hears thunder, it chases after the storm clouds so that the Blitzle in the group can use the lightning to charge up.\"\n    }\n  ],\n  \"524\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its ear is hexagonal in shape. Compressed underground, its body is as hard as steel.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They were discovered a hundred years ago in an earthquake fissure. Inside each one is an energy core.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The hexagonal-shaped hole is its ear. It has a tendency to walk in the direction the sound is coming from.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The hexagonal-shaped hole is its ear. It has a tendency to walk in the direction the sound is coming from.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its ear is hexagonal in shape. Compressed underground, its body is as hard as steel.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They were discovered a hundred years ago in an earthquake fissure. Inside each one is an energy core.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its ear is hexagonal in shape. Compressed underground, its body is as hard as steel.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They were discovered a hundred years ago in an earthquake fissure. Inside each one is an energy core.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Born deep within the ground, it compares itself with similar species, such as Geodude and Carbink, to settle which has the hardest body.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The hexagonal cavity is its ear. It walks in the direction of sounds it hears, but if the sounds cease, it panics and topples over.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The hexagonal hole is its ear. Deep in that ear is an energy core, so if you stick your hand in there, Roggenrola will be very angry!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It was found in a fissure in a layer of exposed rock. The material that makes up its body is dirt from several hundred years ago.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's as hard as steel, but apparently a long soak in water will cause it to soften a bit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it detects a noise, it starts to move. The energy core inside it makes this Pokémon slightly warm to the touch.\"\n    }\n  ],\n  \"525\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it overflows with power, the orange crystal on its body glows. It looks for underground water in caves.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because its energy was too great to be contained, the energy leaked and formed orange crystals.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it is healthy, its core sticks out. Always facing the same way, it swiftly moves front to back and left to right.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it is healthy, its core sticks out. Always facing the same way, it swiftly moves front to back and left to right.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Because its energy was too great to be contained, the energy leaked and formed orange crystals.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it is healthy, its core sticks out. Always facing the same way, it swiftly moves front to back and left to right.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Because its energy was too great to be contained, the energy leaked and formed orange crystals.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it is healthy, its core sticks out. Always facing the same way, it swiftly moves front to back and left to right.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its orange crystal is a mass of energy. Just one crystal fragment would provide enough fuel for a hundred dump trucks.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It explores caves in search of underground water. It's not comfortable around water, so this Pokémon takes great care in lapping it up.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The energy overflowing from its body has turned into orange crystals that are hard enough to smash diamonds.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its orange crystals are lumps of powerful energy. They're valuable, so Boldore is sometimes targeted for them.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If you see its orange crystals start to glow, be wary. It's about to fire off bursts of energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It relies on sound in order to monitor what's in its vicinity. When angered, it will attack without ever changing the direction it's facing.\"\n    }\n  ],\n  \"526\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Compressing the energy from its internal core lets it fire off an attack capable of blowing away a mountain.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The solar energy absorbed by its body's orange crystals is magnified internally and fired from its mouth.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The solar rays it absorbs are processed in its energy core and fired as a ball of light.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The solar rays it absorbs are processed in its energy core and fired as a ball of light.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The solar rays it absorbs are processed in its energy core and fired as a ball of light.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Compressing the energy from its internal core lets it fire off an attack capable of blowing away a mountain.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The solar rays it absorbs are processed in its energy core and fired as a ball of light.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Compressing the energy from its internal core lets it fire off an attack capable of blowing away a mountain.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The blasts of energy it makes from sunbeams have terrifying power. However, it's not able to fire its blasts at night or on rainy days.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Known for its hefty horsepower, this Pokémon is a popular partner for construction workers.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it fires off energy with all its might, the power creates countless fissures on its body.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It absorbs rays of sunlight and shoots out energy. It's usually lurking deep beneath the surface.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This hardy Pokémon can often be found on construction sites and in mines, working alongside people and Copperajah.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Although its energy blasts can blow away a dump truck, they have a limitation—they can only be fired when the sun is out.\"\n    }\n  ],\n  \"527\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its habitat is dark forests and caves. It emits ultrasonic waves from its nose to learn about its surroundings.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Suction from its nostrils enables it to stick to cave walls during sleep. It leaves a heart-shaped mark behind.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The heart-shaped mark left on a body after a Woobat has been attached to it is said to bring good fortune.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The heart-shaped mark left on a body after a Woobat has been attached to it is said to bring good fortune.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its habitat is dark forests and caves. It emits ultrasonic waves from its nose to learn about its surroundings.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The heart-shaped mark left on a body after a Woobat has been attached to it is said to bring good fortune.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its habitat is dark forests and caves. It emits ultrasonic waves from its nose to learn about its surroundings.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The heart-shaped mark left on a body after a Woobat has been attached to it is said to bring good fortune.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"While inside a cave, if you look up and see lots of heart-shaped marks lining the walls, it's evidence that Woobat live there.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It emits ultrasonic waves as it flutters about, searching for its prey—bug Pokémon.\"\n    }\n  ],\n  \"528\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It emits sound waves of various frequencies from its nose, including some powerful enough to destroy rocks.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Anyone who comes into contact with the ultrasonic waves emitted by a courting male experiences a positive mood shift.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It shakes its tail vigorously when it emits ultrasonic waves strong enough to reduce concrete to rubble.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It shakes its tail vigorously when it emits ultrasonic waves strong enough to reduce concrete to rubble.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It shakes its tail vigorously when it emits ultrasonic waves strong enough to reduce concrete to rubble.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Anyone who comes into contact with the ultrasonic waves emitted by a courting male experiences a positive mood shift.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It shakes its tail vigorously when it emits ultrasonic waves strong enough to reduce concrete to rubble.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Anyone who comes into contact with the ultrasonic waves emitted by a courting male experiences a positive mood shift.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Emitting powerful sound waves tires it out. Afterward, it won't be able to fly for a little while.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The auspicious shape of this Pokémon's nose apparently led some regions to consider Swoobat a symbol of good luck.\"\n    }\n  ],\n  \"529\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can dig through the ground at a speed of 30 mph. It could give a car running aboveground a good race.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It makes its way swiftly through the soil by putting both claws together and rotating at high speed.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By spinning its body, it can dig straight through the ground at a speed of 30 mph.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By spinning its body, it can dig straight through the ground at a speed of 30 mph.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It makes its way swiftly through the soil by putting both claws together and rotating at high speed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"By spinning its body, it can dig straight through the ground at a speed of 30 mph.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It makes its way swiftly through the soil by putting both claws together and rotating at high speed.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"By spinning its body, it can dig straight through the ground at a speed of 30 mph.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It brings its claws together and whirls around at high speed before rushing toward its prey.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's a digger, using its claws to burrow through the ground. It causes damage to vegetable crops, so many farmers have little love for it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It can dig through the ground at a speed of 30 mph. It could give a car running aboveground a good race.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It makes its way swiftly through the soil by putting both claws together and rotating at high speed.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"By spinning its body, it can dig straight through the ground at a speed of 30 mph.\"\n    }\n  ],\n  \"530\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can help in tunnel construction. Its drill has evolved into steel strong enough to bore through iron plates.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"More than 300 feet below the surface, they build mazelike nests. Their activity can be destructive to subway tunnels.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Forming a drill with its steel claws and head, it can bore through a steel plate, no matter how thick it is.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Forming a drill with its steel claws and head, it can bore through a steel plate, no matter how thick it is.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can help in tunnel construction. Its drill has evolved into steel strong enough to bore through iron plates.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"More than 300 feet below the surface, they build mazelike nests. Their activity can be destructive to subway tunnels.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It can help in tunnel construction. Its drill has evolved into steel strong enough to bore through iron plates.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"More than 300 feet below the surface, they build mazelike nests. Their activity can be destructive to subway tunnels.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's not uncommon for tunnels that appear to have formed naturally to actually be a result of Excadrill's rampant digging.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Known as the Drill King, this Pokémon can tunnel through the terrain at speeds of over 90 mph.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Forming a drill with its steel claws and head, it can bore through a steel plate, no matter how thick it is.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its drill, which has evolved into steel, is strong enough to bore through iron plates. This Pokémon is a great help in tunnel construction.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"More than 300 feet below the surface, they build mazelike nests. Their activity can be destructive to subway tunnels.\"\n    }\n  ],\n  \"531\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It touches others with the feelers on its ears, using the sound of their heartbeats to tell how they are feeling.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its auditory sense is astounding. It has a radarlike ability to understand its surroundings through slight sounds.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Using the feelers on its ears, it can tell how someone is feeling or when an egg might hatch.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Using the feelers on its ears, it can tell how someone is feeling or when an egg might hatch.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Using the feelers on its ears, it can tell how someone is feeling or when an egg might hatch.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It touches others with the feelers on its ears, using the sound of their heartbeats to tell how they are feeling.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Using the feelers on its ears, it can tell how someone is feeling or when an egg might hatch.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It touches others with the feelers on its ears, using the sound of their heartbeats to tell how they are feeling.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Audino's sense of hearing is superb. Not even a pebble rolling along over a mile away will escape Audino's ears.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon has a kind heart. By touching with its feelers, Audino can gauge other creatures' feelings and physical conditions.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It touches others with the feelers on its ears, using the sound of their heartbeats to check their emotions and physical health.\"\n    }\n  ],\n  \"532\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It fights by swinging a piece of lumber around. It is close to evolving when it can handle the lumber without difficulty.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"These Pokémon appear at building sites and help out with construction. They always carry squared logs.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Always carrying squared logs, they help out with construction. As they grow, they carry bigger logs.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Always carrying squared logs, they help out with construction. As they grow, they carry bigger logs.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"These Pokémon appear at building sites and help out with construction. They always carry squared logs.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Always carrying squared logs, they help out with construction. As they grow, they carry bigger logs.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"These Pokémon appear at building sites and help out with construction. They always carry squared logs.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Always carrying squared logs, they help out with construction. As they grow, they carry bigger logs.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It loves helping out with construction projects. It loves it so much that if rain causes work to halt, it swings its log around and throws a tantrum.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Timburr that have started carrying logs that are about three times their size are nearly ready to evolve.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Always carrying squared logs, they help out with construction. As they grow, they carry bigger logs.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It fights by swinging a piece of lumber around. It is close to evolving when it can handle heavy lumber without difficulty.\"\n    }\n  ],\n  \"533\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This Pokémon is so muscular and strongly built that even a group of wrestlers could not make it budge an inch.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They strengthen their bodies by carrying steel beams. They show off their big muscles to their friends.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"With strengthened bodies, they skillfully wield steel beams to take down buildings.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"With strengthened bodies, they skillfully wield steel beams to take down buildings.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"With strengthened bodies, they skillfully wield steel beams to take down buildings.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This Pokémon is so muscular and strongly built that even a group of wrestlers could not make it budge an inch.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"With strengthened bodies, they skillfully wield steel beams to take down buildings.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon is so muscular and strongly built that even a group of wrestlers could not make it budge an inch.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It shows off its muscles to Machoke and other Gurdurr. If it fails to measure up to the other Pokémon, it lies low for a little while.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Gurdurr excels at demolition—construction is not its forte. In any case, there's skill in the way this Pokémon wields its metal beam.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They strengthen their bodies by carrying steel beams. They show off their big muscles to their friends.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon is so muscular and strongly built that even a group of wrestlers could not make it budge an inch.\"\n    }\n  ],\n  \"534\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It is thought that Conkeldurr taught humans how to make concrete more than 2,000 years ago.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They use concrete pillars as walking canes. They know moves that enable them to swing the pillars freely in battle.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Rather than rely on force, they master moves that utilize the centrifugal force of spinning concrete.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Rather than rely on force, they master moves that utilize the centrifugal force of spinning concrete.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is thought that Conkeldurr taught humans how to make concrete more than 2,000 years ago.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Rather than rely on force, they master moves that utilize the centrifugal force of spinning concrete.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It is thought that Conkeldurr taught humans how to make concrete more than 2,000 years ago.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Rather than rely on force, they master moves that utilize the centrifugal force of spinning concrete.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Concrete mixed by Conkeldurr is much more durable than normal concrete, even when the compositions of the two materials are the same.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When going all out, this Pokémon throws aside its concrete pillars and leaps at opponents to pummel them with its fists.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is thought that Conkeldurr taught humans how to make concrete more than 2,000 years ago.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Rather than rely on their strength, they master moves that make good use of centrifugal force to swing around concrete.\"\n    }\n  ],\n  \"535\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They warn others of danger by vibrating their cheeks to create a high-pitched sound.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"By vibrating its cheeks, it emits sound waves imperceptible to humans. It uses the rhythm of these sounds to talk.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By vibrating its cheeks, it emits sound waves imperceptible to humans and warns others of danger.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By vibrating its cheeks, it emits sound waves imperceptible to humans and warns others of danger.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"By vibrating its cheeks, it emits sound waves imperceptible to humans and warns others of danger.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"By vibrating its cheeks, it emits sound waves imperceptible to humans. It uses the rhythm of these sounds to talk.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"By vibrating its cheeks, it emits sound waves imperceptible to humans and warns others of danger.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"By vibrating its cheeks, it emits sound waves imperceptible to humans. It uses the rhythm of these sounds to talk.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Graceful ripples running across the water's surface are a sure sign that Tympole are singing in high-pitched voices below.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It uses sound waves to communicate with others of its kind. People and other Pokémon species can't hear its cries of warning.\"\n    }\n  ],\n  \"536\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When they vibrate the bumps on their heads, they can make waves in water or earthquake-like vibrations on land.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It lives in the water and on land. It uses its long, sticky tongue to capture prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lives in the water and on land. It uses its long, sticky tongue to immobilize its opponents.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lives in the water and on land. It uses its long, sticky tongue to immobilize its opponents.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When they vibrate the bumps on their heads, they can make waves in water or earthquake-like vibrations on land.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lives in the water and on land. It uses its long, sticky tongue to immobilize its opponents.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When they vibrate the bumps on their heads, they can make waves in water or earthquake-like vibrations on land.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It lives in the water and on land. It uses its long, sticky tongue to immobilize its opponents.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It weakens its prey with sound waves intense enough to cause headaches, then entangles them with its sticky tongue.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"On occasion, their cries are sublimely pleasing to the ear. Palpitoad with larger lumps on their bodies can sing with a wider range of sounds.\"\n    }\n  ],\n  \"537\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They shoot paralyzing liquid from their head bumps. They use vibration to hurt their opponents.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It increases the power of its punches by vibrating the bumps on its fists. It can turn a boulder to rubble with one punch.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By putting power into its bumps, it creates vibrations and increases the power of its punches.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By putting power into its bumps, it creates vibrations and increases the power of its punches.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It increases the power of its punches by vibrating the bumps on its fists. It can turn a boulder to rubble with one punch.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They shoot paralyzing liquid from their head bumps. They use vibration to hurt their opponents.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It increases the power of its punches by vibrating the bumps on its fists. It can turn a boulder to rubble with one punch.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They shoot paralyzing liquid from their head bumps. They use vibration to hurt their opponents.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The vibrating of the bumps all over its body causes earthquake-like tremors. Seismitoad and Croagunk are similar species.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is popular among the elderly, who say the vibrations of its lumps are great for massages.\"\n    }\n  ],\n  \"538\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it tightens its belt, it becomes stronger. Wild Throh use vines to weave their own belts.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When they encounter foes bigger than themselves, they try to throw them. They always travel in packs of five.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it encounters a foe bigger than itself, it wants to throw it. It changes belts as it gets stronger.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it encounters a foe bigger than itself, it wants to throw it. It changes belts as it gets stronger.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When it tightens its belt, it becomes stronger. Wild Throh use vines to weave their own belts.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it encounters a foe bigger than itself, it wants to throw it. It changes belts as it gets stronger.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When it tightens its belt, it becomes stronger. Wild Throh use vines to weave their own belts.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it encounters a foe bigger than itself, it wants to throw it. It changes belts as it gets stronger.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It performs throwing moves with first-rate skill. Over the course of many battles, Throh's belt grows darker as it absorbs its wearer's sweat.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They train in groups of five. Any member that can't keep up will discard its belt and leave the group.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They train strenuously in groups of five. Any member that can't keep up will discard its belt and leave the group.\"\n    }\n  ],\n  \"539\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The sound of Sawk punching boulders and trees can be heard all the way from the mountains where they train.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Tying their belts gets them pumped and makes their punches more destructive. Disturbing their training angers them.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Desiring the strongest karate chop, they seclude themselves in mountains and train without sleeping.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Desiring the strongest karate chop, they seclude themselves in mountains and train without sleeping.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Desiring the strongest karate chop, they seclude themselves in mountains and train without sleeping.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Tying their belts gets them pumped and makes their punches more destructive. Disturbing their training angers them.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Desiring the strongest karate chop, they seclude themselves in mountains and train without sleeping.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Tying their belts gets them pumped and makes their punches more destructive. Disturbing their training angers them.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If you see a Sawk training in the mountains in its single-minded pursuit of strength, it's best to quietly pass by.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The karate chops of a Sawk that's trained itself to the limit can cleave the ocean itself.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Tightening their belts gets them pumped and makes their punches more destructive. Disturb their training and you'll earn their wrath.\"\n    }\n  ],\n  \"540\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Leavanny dress it in clothes they made for it when it hatched. It hides its head in its hood while it is sleeping.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"This Pokémon makes clothes for itself. It chews up leaves and sews them with sticky thread extruded from its mouth.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Since this Pokémon makes its own clothes out of leaves, it is a popular mascot for fashion designers.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Since this Pokémon makes its own clothes out of leaves, it is a popular mascot for fashion designers.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This Pokémon makes clothes for itself. It chews up leaves and sews them with sticky thread extruded from its mouth.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Since this Pokémon makes its own clothes out of leaves, it is a popular mascot for fashion designers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon makes clothes for itself. It chews up leaves and sews them with sticky thread extruded from its mouth.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Since this Pokémon makes its own clothes out of leaves, it is a popular mascot for fashion designers.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Sewaddle chews on leaves to make its clothing. It's trying to mimic the leafy garment Leavanny first dressed it in.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The bumps on their heads are sensory organs. When Sewaddle meet, they greet each other by rubbing these bumps together.\"\n    }\n  ],\n  \"541\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Forests where Swadloon live have superb foliage because the nutrients they make from fallen leaves nourish the plant life.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It protects itself from the cold by wrapping up in leaves. It stays on the move, eating leaves in forests.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Preferring dark, damp places, it spends the entire day eating fallen leaves that lie around it.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Preferring dark, damp places, it spends the entire day eating fallen leaves that lie around it.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Forests where Swadloon live have superb foliage because the nutrients they make from fallen leaves nourish the plant life.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It protects itself from the cold by wrapping up in leaves. It stays on the move, eating leaves in forests.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Forests where Swadloon live have superb foliage because the nutrients they make from fallen leaves nourish the plant life.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It protects itself from the cold by wrapping up in leaves. It stays on the move, eating leaves in forests.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Swadloon lives quietly at the feet of trees. It prefers eating fallen leaves that have grown soft rather than fresh ones.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Swadloon wraps itself in leaves for protection. It uses the two leaves atop its head to detect air movements and feel out its surroundings.\"\n    }\n  ],\n  \"542\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Upon finding a small Pokémon, it weaves clothing for it from leaves, using the cutters on its arms and sticky silk.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It keeps its eggs warm with heat from fermenting leaves. It also uses leaves to make warm wrappings for Sewaddle.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Upon finding a small Pokémon, it weaves clothing for it from leaves by using the sticky silk secreted from its mouth.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Upon finding a small Pokémon, it weaves clothing for it from leaves by using the sticky silk secreted from its mouth.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Upon finding a small Pokémon, it weaves clothing for it from leaves by using the sticky silk secreted from its mouth.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It keeps its eggs warm with heat from fermenting leaves. It also uses leaves to make warm wrappings for Sewaddle.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Upon finding a small Pokémon, it weaves clothing for it from leaves by using the sticky silk secreted from its mouth.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It keeps its eggs warm with heat from fermenting leaves. It also uses leaves to make warm wrappings for Sewaddle.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This gentle Pokémon has strong protective instincts. The leaves on its arms are sharp enough to slice a thick tree in half with one stroke.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It fashions clothing from woven leaves. Though gentle in disposition, it will show no mercy to foes who target young Pokémon.\"\n    }\n  ],\n  \"543\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its bite injects a potent poison, enough to paralyze large bird Pokémon that try to prey on it.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It discovers what is going on around it by using the feelers on its head and tail. It is brutally aggressive.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Using the feelers on its head and tail, it picks up vibrations in the air to determine its prey's location and state.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Using the feelers on its head and tail, it picks up vibrations in the air to determine its prey's location and state.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It discovers what is going on around it by using the feelers on its head and tail. It is brutally aggressive.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its bite injects a potent poison, enough to paralyze large bird Pokémon that try to prey on it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It discovers what is going on around it by using the feelers on its head and tail. It is brutally aggressive.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its bite injects a potent poison, enough to paralyze large bird Pokémon that try to prey on it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Venipede and Sizzlipede are similar species, but when the two meet, a huge fight ensues.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its fangs are highly venomous. If this Pokémon finds prey it thinks it can eat, it leaps for them without any thought of how things might turn out.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its bite injects a venom potent enough to paralyze even the large bird Pokémon that try to prey on it.\"\n    }\n  ],\n  \"544\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Protected by a hard shell, it spins its body like a wheel and crashes furiously into its enemies.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is usually motionless, but when attacked, it rotates at high speed and then crashes into its opponent.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Storing energy for evolution, it sits. But, when predators approach, it moves to stab them with poison spikes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Storing energy for evolution, it sits. But, when predators approach, it moves to stab them with poison spikes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Protected by a hard shell, it spins its body like a wheel and crashes furiously into its enemies.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is usually motionless, but when attacked, it rotates at high speed and then crashes into its opponent.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Protected by a hard shell, it spins its body like a wheel and crashes furiously into its enemies.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It is usually motionless, but when attacked, it rotates at high speed and then crashes into its opponent.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon spins itself rapidly and charges into its opponents. Its top speed is just over 60 mph.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Whirlipede protects itself with a sturdy shell and poisonous spikes while it stores up the energy it'll need for evolution.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Protected by a hard shell, it spins its body like a wheel and crashes furiously into its enemies.\"\n    }\n  ],\n  \"545\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"With quick movements, it chases down its foes, attacking relentlessly with its horns until it prevails.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Highly aggressive, it uses the claws near its neck to dig into its opponents and poison them.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It clasps its prey with the claws on its neck until it stops moving. Then it finishes it off with deadly poison.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It clasps its prey with the claws on its neck until it stops moving. Then it finishes it off with deadly poison.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It clasps its prey with the claws on its neck until it stops moving. Then it finishes it off with deadly poison.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"With quick movements, it chases down its foes, attacking relentlessly with its horns until it prevails.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It clasps its prey with the claws on its neck until it stops moving. Then it finishes it off with deadly poison.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"With quick movements, it chases down its foes, attacking relentlessly with its horns until it prevails.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Scolipede latches on to its prey with the claws on its neck before slamming them into the ground and jabbing them with its claw's toxic spikes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Scolipede engage in fierce territorial battles with Centiskorch. At the end of one of these battles, the victor makes a meal of the loser.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It clasps its prey with the claws on its neck until they stop moving. Then it finishes them off with deadly venom.\"\n    }\n  ],\n  \"546\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When attacked, it escapes by shooting cotton from its body. The cotton serves as a decoy to distract the attacker.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They go wherever the wind takes them. On rainy days, their bodies are heavier, so they take shelter beneath big trees.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Perhaps because they feel more at ease in a group, they stick to others they find. They end up looking like a cloud.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Perhaps because they feel more at ease in a group, they stick to others they find. They end up looking like a cloud.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When attacked, it escapes by shooting cotton from its body. The cotton serves as a decoy to distract the attacker.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Perhaps because they feel more at ease in a group, they stick to others they find. They end up looking like a cloud.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When attacked, it escapes by shooting cotton from its body. The cotton serves as a decoy to distract the attacker.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Perhaps because they feel more at ease in a group, they stick to others they find. They end up looking like a cloud.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it finds others of its kind, they all stick together. When enough of them have collected, the mass resembles a cumulonimbus cloud.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Pillows and beds stuffed with cotton exhaled by Cottonee are soft and puffy, light and airy—altogether top quality.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"To protect itself, it shoots cotton from its body. When it gets wet in the rain, its cotton grows moist and heavy, and it can't move as well.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When attacked, it expels cotton from its body to create a diversion. The cotton it loses grows back in quickly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It shoots cotton from its body to protect itself. If it gets caught up in hurricane-strength winds, it can get sent to the other side of the Earth.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Weaving together the cotton of both Cottonee and Eldegoss produces exquisite cloth that's highly prized by many luxury brands.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Pillows and beds stuffed with cotton exhaled by Cottonee are soft and puffy, light and airy— altogether top quality.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When attacked, it escapes by shooting cotton from its body. The cotton serves as a decoy to distract the attacker.\"\n    }\n  ],\n  \"547\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Like the wind, it can slip through any gap, no matter how small. It leaves balls of white fluff behind.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Riding whirlwinds, they appear. These Pokémon sneak through gaps into houses and cause all sorts of mischief.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They appear along with whirlwinds. They pull pranks, such as moving furniture and leaving balls of cotton in homes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They appear along with whirlwinds. They pull pranks, such as moving furniture and leaving balls of cotton in homes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They appear along with whirlwinds. They pull pranks, such as moving furniture and leaving balls of cotton in homes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Like the wind, it can slip through any gap, no matter how small. It leaves balls of white fluff behind.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They appear along with whirlwinds. They pull pranks, such as moving furniture and leaving balls of cotton in homes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Like the wind, it can slip through any gap, no matter how small. It leaves balls of white fluff behind.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It rides on the wind and slips into people's homes. After it has turned a room into a cotton-filled mess, it giggles to itself and takes off.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon appears, riding upon the wind. But if the wind gusts up, it'll blow the cotton on this Pokémon's head clean off.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This nuisance sneaks into people's homes, where it hides important things and scatters cotton all over the place.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Whimsicott doesn't live in a fixed location. It floats around on whirling winds, appearing all over the place to perform its mischief.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It scatters cotton all over the place as a prank. If it gets wet, it'll become too heavy to move and have no choice but to answer for its mischief.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"As long as this Pokémon bathes in sunlight, its cotton keeps growing. If too much cotton fluff builds up, Whimsicott tears it off and scatters it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Like the wind, it can slip through any gap, no matter how small. It leaves balls of white fluff behind.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It rides on the wind and slips into people's homes. After it has turned a room into a cotton- filled mess, it giggles to itself and takes off.\"\n    }\n  ],\n  \"548\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The leaves on its head are very bitter. Eating one of these leaves is known to refresh a tired body.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Since they prefer moist, nutrient-rich soil, the areas where Petilil live are known to be good for growing plants.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The leaves on its head grow right back even if they fall out. These bitter leaves refresh those who eat them.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The leaves on its head grow right back even if they fall out. These bitter leaves refresh those who eat them.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The leaves on its head are very bitter. Eating one of these leaves is known to refresh a tired body.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Since they prefer moist, nutrient-rich soil, the areas where Petilil live are known to be good for growing plants.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The leaves on its head are very bitter. Eating one of these leaves is known to refresh a tired body.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Since they prefer moist, nutrient-rich soil, the areas where Petilil live are known to be good for growing plants.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Although the leaves on its head are bitter enough to cause dizziness, they provide relief from weariness—even more so when boiled.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"By pruning the leaves on its head with regularity, this Pokémon can be grown into a fine plump shape.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Some say if you dry the leaves on its head, boil them down, and drink the infusion, your vigor will return, so Petilil is popular with the elderly.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They prefer clean water and soil. When the environment they live in turns bad, the whole bunch will up and move to a new area.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Petilil appears around sources of clean water. Boiling leaves from this Pokémon's head results in a liquid that's sometimes used as a bug repellent.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The deeper the color of a Petilil's leaves, the healthier the Pokémon is. Petilil sometimes make its home in a well-tended field or flowerbed.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The leaves on its head are highly valued for medicinal purposes. Dry the leaves in the sun, boil them, and then drink the bitter decoction for remarkably effective relief from fatigue.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The leaves on its head grow right back even if they fall out. These bitter leaves refresh those who eat them.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If the leaves on its head are pruned with regularity, this Pokémon can be grown into a fine plump shape.\"\n    }\n  ],\n  \"549\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Even veteran Trainers face a challenge in getting its beautiful flower to bloom. This Pokémon is popular with celebrities.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The fragrance of the garland on its head has a relaxing effect. It withers if a Trainer does not take good care of it.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The fragrance of the garland on its head has a relaxing effect, but taking care of it is very difficult.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The fragrance of the garland on its head has a relaxing effect, but taking care of it is very difficult.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The fragrance of the garland on its head has a relaxing effect. It withers if a Trainer does not take good care of it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Even veteran Trainers face a challenge in getting its beautiful flower to bloom. This Pokémon is popular with celebrities.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The fragrance of the garland on its head has a relaxing effect. It withers if a Trainer does not take good care of it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Even veteran Trainers face a challenge in getting its beautiful flower to bloom. This Pokémon is popular with celebrities.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"No matter how much time and money is spent raising it, its flowers are the most beautiful when they bloom in the wild.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As soon as it finds a male to be its partner, the beautiful flower on its head darkens, droops, and withers away.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The fragrance of its flower differs slightly depending on the soil where it grew up. Sniffing the aroma calms your heart and mind.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's well liked by other Pokémon because of its beauty. The flower on its head needs constant care, or it will soon wither and rot.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's believed that even first-rate gardeners have a hard time getting the flower on a Lilligant's head to bloom.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Essential oils made from Lilligant flowers have a sublime scent, but they're also staggeringly expensive.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"I suspect that its well-developed legs are the result of a life spent on mountains covered in deep snow. The scent it exudes from its flower crown heartens those in proximity.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The fragrance of the garland on its head has a relaxing effect, but taking care of it is very difficult.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"No matter how much time and money is spent raising it, its flowers are the most beautiful when they bloom in the wild.\"\n    }\n  ],\n  \"550\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Red and blue Basculin get along so poorly, they'll start fighting instantly. These Pokémon are very hostile.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Red and blue Basculin usually do not get along, but sometimes members of one school mingle with the other's school.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Red- and blue-striped Basculin are very violent and always fighting. They are also remarkably tasty.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Red- and blue-striped Basculin are very violent and always fighting. They are also remarkably tasty.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Red- and blue-striped Basculin are very violent and always fighting. They are also remarkably tasty.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Red and blue Basculin usually do not get along, but sometimes members of one school mingle with the other's school.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Red- and blue-striped Basculin are very violent and always fighting. They are also remarkably tasty.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Red and blue Basculin usually do not get along, but sometimes members of one school mingle with the other's school.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Savage, violent Pokémon, red and blue Basculin are always fighting each other over territory.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When a school of Basculin appears in a lake, everything else disappears, except for Corphish and Crawdaunt. That's how violent Basculin are.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Anglers love the fight this Pokémon puts up on the hook. And there are always more to catch— many people release them into lakes illicitly.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In the past, it often appeared on the dinner table. The meat of red-striped Basculin is on the fatty side, and it's more popular with the youth.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Though it differs from other Basculin in several respects, including demeanor—this one is gentle—I have categorized it as a regional form given the vast array of shared qualities.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its temperament is vicious and aggressive. This Pokémon is also full of vitality and can multiply rapidly before anyone notices.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's so vicious that it's called the Thug of the River. Yet Basculin is still targeted by predators, such as Dondozo and Bombirdier.\"\n    }\n  ],\n  \"551\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They live buried in the sands of the desert. The sun-warmed sands prevent their body temperature from dropping.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It moves along below the sand's surface, except for its nose and eyes. A dark membrane shields its eyes from the sun.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They live hidden under hot desert sands in order to keep their body temperature from dropping.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They live hidden under hot desert sands in order to keep their body temperature from dropping.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It moves along below the sand's surface, except for its nose and eyes. A dark membrane shields its eyes from the sun.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They live buried in the sands of the desert. The sun-warmed sands prevent their body temperature from dropping.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It moves along below the sand's surface, except for its nose and eyes. A dark membrane shields its eyes from the sun.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They live buried in the sands of the desert. The sun-warmed sands prevent their body temperature from dropping.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It submerges itself in sand and moves as if swimming. This wise behavior keeps its enemies from finding it and maintains its temperature.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It conceals itself in the sand and chomps down on the legs of any prey that unwarily walk over it. Its favorite food is Trapinch.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Alola, where it's warm all year round, is a comfortable environment for this Pokémon. Sometimes you'll even see it outside of deserts.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Sandile's still not good at hunting, so it mostly eats things that have collapsed in the desert. It's called \\\"the cleaner of the desert.\\\"\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The desert gets cold at night, so when the sun sets, this Pokémon burrows deep into the sand and sleeps until sunrise.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Sandile is small, but its legs and lower body are powerful. Pushing sand aside as it goes, Sandile moves through the desert as if it's swimming.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It submerges itself in sand and moves as if swimming. This wise behavior keeps its enemies from finding it and maintains its temperature.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They live hidden under hot desert sands in order to keep their body temperature from dropping.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It moves below the sand's surface, exposing only its nose and eyes. A black membrane shields its eyes from the sun.\"\n    }\n  ],\n  \"552\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They live in groups of a few individuals. Protective membranes shield their eyes from sandstorms.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The special membrane covering its eyes can sense the heat of objects, so it can see its surroundings even in darkness.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Protected by thin membranes, their eyes can see even in the dead of night. They live in groups of a few individuals.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Protected by thin membranes, their eyes can see even in the dead of night. They live in groups of a few individuals.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They live in groups of a few individuals. Protective membranes shield their eyes from sandstorms.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The special membrane covering its eyes can sense the heat of objects, so it can see its surroundings even in darkness.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They live in groups of a few individuals. Protective membranes shield their eyes from sandstorms.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The special membrane covering its eyes can sense the heat of objects, so it can see its surroundings even in darkness.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They move in groups of a few individuals. A female is often the leader of the group, and the males will gather food.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Thanks to the special membrane covering its eyes, it can see its surroundings clearly, even in the middle of the night.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Krokorok really hates it when its body gets cold. On nights when the temperature drops, it digs deep into the desert sands.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It buries some of its prey in the sand to use as emergency meals when its hunts are unsuccessful.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Krokorok has specialized eyes that enable it to see in the dark. This ability lets Krokorok hunt in the dead of night without getting lost.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Although this Pokémon has specialized eyes that allow it to see in the dark, Krokorok won't move much at night—the desert gets cold after sunset.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Protected by thin membranes, their eyes can see even in the dead of night. They live in groups of a few individuals.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Thanks to the special membrane covering its eyes, it can see its surroundings clearly, even in the middle of the night.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The special membrane covering its eyes can sense the heat of objects, so it can see its surroundings even in darkness.\"\n    }\n  ],\n  \"553\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They never allow prey to escape. Their jaws are so powerful, they can crush the body of an automobile.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can expand the focus of its eyes, enabling it to see objects in the far distance as if it were using binoculars.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Very violent Pokémon, they try to clamp down on anything that moves in front of their eyes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Very violent Pokémon, they try to clamp down on anything that moves in front of their eyes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Very violent Pokémon, they try to clamp down on anything that moves in front of their eyes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They never allow prey to escape. Their jaws are so powerful, they can crush the body of an automobile.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Very violent Pokémon, they try to clamp down on anything that moves in front of their eyes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They never allow prey to escape. Their jaws are so powerful, they can crush the body of an automobile.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its unique faculty of sight can detect small prey more than 30 miles away, even in the midst of a sandstorm.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"After clamping down with its powerful jaws, it twists its body around to rip its prey in half.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it spots prey, even at a distance of over 30 miles, it swims through the desert as if it were water, then jumps out and chomps them.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It conceals itself in sandstorms that Flygon whip up and waits patiently for prey to appear.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is known as the Bully of the Sands. Krookodile's mighty jaws can bite through heavy plates of iron with almost no effort at all.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While terribly aggressive, Krookodile also has the patience to stay hidden under sand for days, lying in wait for prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"After clamping down with its powerful jaws, it twists its body around to rip its prey in half.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its unique faculty of sight can detect small prey more than 30 miles away, even in the midst of a sandstorm.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They never allow prey to escape. Their jaws are so powerful, they can tear apart the body of an automobile.\"\n    }\n  ],\n  \"554\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When its internal fire is burning, it cannot calm down and it runs around. When the fire diminishes, it falls asleep.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Darumaka's droppings are hot, so people used to put them in their clothes to keep themselves warm.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it sleeps, it pulls its limbs into its body and its internal fire goes down to 1,100° F.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it sleeps, it pulls its limbs into its body and its internal fire goes down to 1,100° F.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Darumaka's droppings are hot, so people used to put them in their clothes to keep themselves warm.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it sleeps, it pulls its limbs into its body and its internal fire goes down to 1,100 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Darumaka's droppings are hot, so people used to put them in their clothes to keep themselves warm.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it sleeps, it pulls its limbs into its body and its internal fire goes down to 1,100 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It derives its power from fire burning inside its body. If the fire dwindles, this Pokémon will immediately fall asleep.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This popular symbol of good fortune will never fall over in its sleep, no matter how it's pushed or pulled.\"\n    }\n  ],\n  \"555\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its internal fire burns at 2,500° F, making enough power that it can destroy a dump truck with one punch.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When weakened in battle, it transforms into a stone statue. Then it sharpens its mind and fights on mentally.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When one is injured in a fierce battle, it hardens into a stone-like form. Then it meditates and sharpens its mind.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When one is injured in a fierce battle, it hardens into a stone-like form. Then it meditates and sharpens its mind.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When one is injured in a fierce battle, it hardens into a stone-like form. Then it meditates and sharpens its mind.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its internal fire burns at 2,500 degrees Fahrenheit, making enough power that it can destroy a dump truck with one punch.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When one is injured in a fierce battle, it hardens into a stone-like form. Then it meditates and sharpens its mind.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its internal fire burns at 2,500 degrees Fahrenheit, making enough power that it can destroy a dump truck with one punch.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The thick arms of this hot-blooded Pokémon can deliver punches capable of obliterating a dump truck.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon's power level rises along with the temperature of its fire, which can reach 2,500 degrees Fahrenheit.\"\n    }\n  ],\n  \"556\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It uses an up-tempo song and dance to drive away the bird Pokémon that prey on its flower seeds.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Arid regions are their habitat. They move rhythmically, making a sound similar to maracas.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it moves rhythmically, it makes a sound similar to maracas, making the surprised Pokémon flee.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it moves rhythmically, it makes a sound similar to maracas, making the surprised Pokémon flee.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It uses an up-tempo song and dance to drive away the bird Pokémon that prey on its flower seeds.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Arid regions are their habitat. They move rhythmically, making a sound similar to maracas.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It uses an up-tempo song and dance to drive away the bird Pokémon that prey on its flower seeds.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Arid regions are their habitat. They move rhythmically, making a sound similar to maracas.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With noises that could be mistaken for the rattles of maracas, it creates an upbeat rhythm, startling bird Pokémon and making them fly off in a hurry.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Once each year, this Pokémon scatters its seeds. They're jam-packed with nutrients, making them a precious food source out in the desert.\"\n    }\n  ],\n  \"557\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This Pokémon can easily melt holes in hard rocks with a liquid secreted from its mouth.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It makes a hole in a suitable rock. If that rock breaks, the Pokémon remains agitated until it locates a replacement.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it finds a stone of a suitable size, it secretes a liquid from its mouth to open up a hole to crawl into.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it finds a stone of a suitable size, it secretes a liquid from its mouth to open up a hole to crawl into.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It makes a hole in a suitable rock. If that rock breaks, the Pokémon remains agitated until it locates a replacement.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it finds a stone of a suitable size, it secretes a liquid from its mouth to open up a hole to crawl into.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It makes a hole in a suitable rock. If that rock breaks, the Pokémon remains agitated until it locates a replacement.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it finds a stone of a suitable size, it secretes a liquid from its mouth to open up a hole to crawl into.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it finds a stone appealing, it creates a hole inside it and uses it as its home. This Pokémon is the natural enemy of Roggenrola and Rolycoly.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It first tries to find a rock to live in, but if there are no suitable rocks to be found, Dwebble may move in to the ports of a Hippowdon.\"\n    }\n  ],\n  \"558\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Competing for territory, Crustle fight viciously. The one whose boulder is broken is the loser of the battle.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It possesses legs of enormous strength, enabling it to carry heavy slabs for many days, even when crossing arid land.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When its boulder is broken in battles for territory, it feels unsure and begins to weaken.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When its boulder is broken in battles for territory, it feels unsure and begins to weaken.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It possesses legs of enormous strength, enabling it to carry heavy slabs for many days, even when crossing arid land.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Competing for territory, Crustle fight viciously. The one whose boulder is broken is the loser of the battle.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It possesses legs of enormous strength, enabling it to carry heavy slabs for many days, even when crossing arid land.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Competing for territory, Crustle fight viciously. The one whose boulder is broken is the loser of the battle.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This highly territorial Pokémon prefers dry climates. It won't come out of its boulder on rainy days.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its thick claws are its greatest weapons. They're mighty enough to crack Rhyperior's carapace.\"\n    }\n  ],\n  \"559\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its skin has a rubbery elasticity, so it can reduce damage by defensively pulling its skin up to its neck.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It immediately headbutts anyone that makes eye contact with it. Its skull is massively thick.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Proud of its sturdy skull, it suddenly headbutts everything, but its weight makes it unstable, too.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Proud of its sturdy skull, it suddenly headbutts everything, but its weight makes it unstable, too.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its skin has a rubbery elasticity, so it can reduce damage by defensively pulling its skin up to its neck.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Proud of its sturdy skull, it suddenly headbutts everything, but its weight makes it unstable, too.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its skin has a rubbery elasticity, so it can reduce damage by defensively pulling its skin up to its neck.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Proud of its sturdy skull, it suddenly headbutts everything, but its weight makes it unstable, too.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They move in small groups, walking around lazily. Anyone who makes eye contact gets smacked with a headbutt.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It stretches its saggy skin up to its neck to protect itself. The saggier their skin, the more respect they garner.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If it locks eyes with you, watch out! Nothing and no one is safe from the reckless headbutts of this troublesome Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It protects itself with its durable skin. It's thought that this Pokémon will evolve once its skin has completely stretched out.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It stretches its saggy skin up to its neck to protect itself. Among Scraggy, individuals with saggier skin apparently garner more respect.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It will abruptly headbutt anyone that makes eye contact with it. Its skull is extremely hard.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its skin has a rubbery elasticity, so it can reduce damage by defensively pulling its skin up to its neck.\"\n    }\n  ],\n  \"560\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Groups of them beat up anything that enters their territory. Each can spit acidic liquid from its mouth.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can smash concrete blocks with its kicking attacks. The one with the biggest crest is the group leader.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It pulls up its shed skin to protect itself while it kicks. The bigger the crest, the more respected it is.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It pulls up its shed skin to protect itself while it kicks. The bigger the crest, the more respected it is.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It pulls up its shed skin to protect itself while it kicks. The bigger the crest, the more respected it is.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can smash concrete blocks with its kicking attacks. The one with the biggest crest is the group leader.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It pulls up its shed skin to protect itself while it kicks. The bigger the crest, the more respected it is.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It can smash concrete blocks with its kicking attacks. The one with the biggest crest is the group leader.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Pokémon may be rude, but it takes very good care of its family, its friends, and its turf.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It taunts its opponents by spitting. It has a certain territory that it never leaves its whole life long.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As halfhearted as this Pokémon's kicks may seem, they pack enough power to shatter Conkeldurr's concrete pillars.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While mostly known for having the temperament of an aggressive ruffian, this Pokémon takes very good care of its family, friends, and territory.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Groups of them beat up anything that enters their territory. Each can spit acidic liquid from its mouth.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon may be rude, but it takes very good care of its family, its friends, and its turf.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It pulls up its shed skin to protect itself while it kicks. The bigger the crest, the more arrogantly it behaves.\"\n    }\n  ],\n  \"561\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They never vary the route they fly, because their memories of guarding an ancient city remain steadfast.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The guardians of an ancient city, they use their psychic power to attack enemies that invade their territory.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The guardians of an ancient city, they always fly the same route while keeping watch for invaders.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The guardians of an ancient city, they always fly the same route while keeping watch for invaders.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The guardians of an ancient city, they use their psychic power to attack enemies that invade their territory.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The guardians of an ancient city, they always fly the same route while keeping watch for invaders.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The guardians of an ancient city, they use their psychic power to attack enemies that invade their territory.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The guardians of an ancient city, they always fly the same route while keeping watch for invaders.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Psychic power allows these Pokémon to fly. Some say they were the guardians of an ancient city. Others say they were the guardians' emissaries.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A discovery was made in the desert where Sigilyph fly. The ruins of what may have been an ancient city were found beneath the sands.\"\n    }\n  ],\n  \"562\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Each of them carries a mask that used to be its face when it was human. Sometimes they look at it and cry.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"These Pokémon arose from the spirits of people interred in graves in past ages. Each retains memories of its former life.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"These Pokémon arose from the spirits of people interred in graves. Each retains memories of its former life.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"These Pokémon arose from the spirits of people interred in graves. Each retains memories of its former life.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"These Pokémon arose from the spirits of people interred in graves. Each retains memories of its former life.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Each of them carries a mask that used to be its face when it was human. Sometimes they look at it and cry.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"These Pokémon arose from the spirits of people interred in graves. Each retains memories of its former life.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Each of them carries a mask that used to be its face when it was human. Sometimes they look at it and cry.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It wanders through ruins by night, carrying a mask that's said to have been the face it had when it was still human.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It wanders through ruins by night, carrying a mask that's said to have been the face it had when it was still human.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The spirit of a person from a bygone age became this Pokémon. It rambles through ruins, searching for someone who knows its face.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The spirit of a person from a bygone age became this Pokémon. It rambles through ruins, searching for someone who knows its face.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Each Yamask carries a mask representing the face it had when it was still human. Sometimes it gazes at the mask and weeps.\"\n    }\n  ],\n  \"563\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It has been said that they swallow those who get too close and turn them into mummies. They like to eat gold nuggets.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They pretend to be elaborate coffins to teach lessons to grave robbers. Their bodies are covered in pure gold.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Grave robbers who mistake them for real coffins and get too close end up trapped inside their bodies.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Grave robbers who mistake them for real coffins and get too close end up trapped inside their bodies.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has been said that they swallow those who get too close and turn them into mummies. They like to eat gold nuggets.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Grave robbers who mistake them for real coffins and get too close end up trapped inside their bodies.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It has been said that they swallow those who get too close and turn them into mummies. They like to eat gold nuggets.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Grave robbers who mistake them for real coffins and get too close end up trapped inside their bodies.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon has a body of sparkling gold. People say it no longer remembers that it was once human.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"There are many depictions of Cofagrigus decorating ancient tombs. They're symbols of the wealth that kings of bygone eras had.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Grave robbers sometimes mistake this Pokémon for a real coffin and get too close to it. They end up trapped within Cofagrigus's body.\"\n    }\n  ],\n  \"564\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Restored from a fossil, this Pokémon can dive to depths beyond half a mile.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"About 100 million years ago, these Pokémon swam in oceans. It is thought they also went on land to attack prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This Pokémon was restored from a fossil. It swam skillfully and dove to depths beyond half a mile.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This Pokémon was restored from a fossil. It swam skillfully and dove to depths beyond half a mile.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"About 100 million years ago, these Pokémon swam in oceans. It is thought they also went on land to attack prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Restored from a fossil, this Pokémon can dive to depths beyond half a mile.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"About 100 million years ago, these Pokémon swam in oceans. It is thought they also went on land to attack prey.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Restored from a fossil, this Pokémon can dive to depths beyond half a mile.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Based on studies of its skeletal structure, it can apparently dive to ocean depths of over half a mile.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Reputed to be the ancestor of most turtle Pokémon, it lived in warm seas approximately a hundred million years ago.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It was restored from an ancient fossil. Tirtouga lived in the sea but came up onto the land to search for prey.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its hunting grounds encompassed a broad area, from the land to more than half a mile deep in the ocean.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon inhabited ancient seas. Although it can only crawl, it still comes up onto land in search of prey.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Tirtouga is considered to be the ancestor of many turtle Pokémon. It was restored to life from a fossil.\"\n    }\n  ],\n  \"565\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They can live both in the ocean and on land. A slap from one of them is enough to open a hole in the bottom of a tanker.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Incredible jaw strength enables them to chew up steel beams and rocks along with their prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It could knock out a foe with a slap from one of its developed front appendages and chew it up, shell or bones and all.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It could knock out a foe with a slap from one of its developed front appendages and chew it up, shell or bones and all.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They can live both in the ocean and on land. A slap from one of them is enough to open a hole in the bottom of a tanker.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It could knock out a foe with a slap from one of its developed front appendages and chew it up, shell or bones and all.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They can live both in the ocean and on land. A slap from one of them is enough to open a hole in the bottom of a tanker.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It could knock out a foe with a slap from one of its developed front appendages and chew it up, shell or bones and all.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It constructed its sturdy shell by crunching and swallowing the hard shells or bones of its prey.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Active both on land and in the sea, this Pokémon drags its land-based prey into the water to finish it off.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its jaws are terrifyingly powerful. It could eat Omastar and Omanyte whole and not be bothered in the slightest by their shells.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Carracosta eats every last bit of the prey it catches, even the shells and bones, to further strengthen its sturdy shell.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Carracosta completely devours its prey—bones, shells, and all. Because of this, Carracosta's own shell grows thick and sturdy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon emerges from the water in search of prey despite the fact that it moves more slowly on land.\"\n    }\n  ],\n  \"566\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Said to be an ancestor of bird Pokémon, they were unable to fly and moved about by hopping from one branch to another.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Revived from a fossil, this Pokémon is thought to be the ancestor of all bird Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It was revived from an ancient fossil. Not able to fly, it lived in treetops and hopped from one branch to another.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It was revived from an ancient fossil. Not able to fly, it lived in treetops and hopped from one branch to another.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Revived from a fossil, this Pokémon is thought to be the ancestor of all bird Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Said to be an ancestor of bird Pokémon, they were unable to fly and moved about by hopping from one branch to another.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Revived from a fossil, this Pokémon is thought to be the ancestor of all bird Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Said to be an ancestor of bird Pokémon, they were unable to fly and moved about by hopping from one branch to another.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It is the ancestor of all bird Pokémon. Archen itself could not actually fly but moved by hopping from treetop to treetop.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"To all appearances flightless, it was able to glide down from tall treetops to snag its prey.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Once thought to be the ancestor of all bird Pokémon, some of the latest research suggests that may not be the case.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Restored from a fossil, this ancient bird Pokémon has wings but can't yet fly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon was successfully restored from a fossil. As research suggested, Archen is unable to fly. But it's very good at jumping.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Archen is said to be the ancestor of bird Pokémon. It lived in treetops, eating berries and bug Pokémon.\"\n    }\n  ],\n  \"567\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They are intelligent and will cooperate to catch prey. From the ground, they use a running start to take flight.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It runs better than it flies. It catches prey by running at speeds comparable to those of an automobile.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It runs better than it flies. It takes off into the sky by running at a speed of 25 mph.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It runs better than it flies. It takes off into the sky by running at a speed of 25 mph.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They are intelligent and will cooperate to catch prey. From the ground, they use a running start to take flight.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It runs better than it flies. It takes off into the sky by running at a speed of 25 mph.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They are intelligent and will cooperate to catch prey. From the ground, they use a running start to take flight.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It runs better than it flies. It takes off into the sky by running at a speed of 25 mph.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Although apparently able to fly, they tended to run along the ground, averaging speeds of roughly 25 mph.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They hunted in flocks. When one Archeops had the prey cornered, another would swoop on it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This ancient Pokémon's plumage is delicate, so if anyone other than an experienced professional tries to restore it, they will fail.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Said to be an ancestor of bird Pokémon, the muscles it uses to flap its wings are still weak, so it needs a long runway in order to take off.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It needs a running start to take off. If Archeops wants to fly, it first needs to run nearly 25 mph, building speed over a course of about 2.5 miles.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Though capable of flight, Archeops was apparently better at hunting on the ground.\"\n    }\n  ],\n  \"568\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Inhaling the gas they belch will make you sleep for a week. They prefer unsanitary places.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The combination of garbage bags and industrial waste caused the chemical reaction that created this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Wanting more garbage, they follow people who litter. They always belch poison gas.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Wanting more garbage, they follow people who litter. They always belch poison gas.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The combination of garbage bags and industrial waste caused the chemical reaction that created this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Inhaling the gas they belch will make you sleep for a week. They prefer unsanitary places.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The combination of garbage bags and industrial waste caused the chemical reaction that created this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Inhaling the gas they belch will make you sleep for a week. They prefer unsanitary places.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Unsanitary places are what they like best. They can be spotted in Alola, often with Grimer in hot pursuit.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It gorges on trash until its stomach is full. Then it belches toxic gas. An unlucky whiff of gas will put a person in the hospital.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Poisonous gas leaks out of it when it breathes. Muk that catch a whiff of that stench will come drooling.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"If a young Pokémon or child breathes in the toxic gas that Trubbish belches out, it could be a life-threatening situation.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its favorite places are unsanitary ones. If you leave trash lying around, you could even find one of these Pokémon living in your room.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon was born from a bag stuffed with trash. Galarian Weezing relish the fumes belched by Trubbish.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The combination of garbage bags and industrial waste caused the chemical reaction that created this Pokémon.\"\n    }\n  ],\n  \"569\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It clenches opponents with its left arm and finishes them off with foul-smelling poison gas belched from its mouth.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They absorb garbage and make it part of their bodies. They shoot a poisonous liquid from their right-hand fingertips.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Consuming garbage makes new kinds of poison gases and liquids inside their bodies.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Consuming garbage makes new kinds of poison gases and liquids inside their bodies.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It clenches opponents with its left arm and finishes them off with foul-smelling poison gas belched from its mouth.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Consuming garbage makes new kinds of poison gases and liquids inside their bodies.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It clenches opponents with its left arm and finishes them off with foul-smelling poison gas belched from its mouth.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Consuming garbage makes new kinds of poison gases and liquids inside their bodies.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Beware the poisonous liquid it shoots from its right arm. If even a little of it gets on you, you'll experience the effects of the unidentified toxin.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"For a time, their numbers increased explosively in Alola. Since the arrival of Grimer, their population has decreased dramatically.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It locks opponents in place with its left hand, immobilizing them by entirely dousing their bodies with poisonous liquid.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Some say the reason Garbodor in Alola are a little stronger than their counterparts elsewhere is the presence of Muk, their natural enemy.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon eats trash, which turns into poison inside its body. The main component of the poison depends on what sort of trash was eaten.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The toxic liquid it launches from its right arm is so virulent that it can kill a weakened creature instantly.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Consuming garbage makes new kinds of poison gases and liquids inside their bodies.\"\n    }\n  ],\n  \"570\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It changes into the forms of others to surprise them. Apparently, it often transforms into a silent child.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"To protect themselves from danger, they hide their true identities by transforming into people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It changes so it looks just like its foe, tricks it, and then uses that opportunity to flee.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It changes so it looks just like its foe, tricks it, and then uses that opportunity to flee.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It changes so it looks just like its foe, tricks it, and then uses that opportunity to flee.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"To protect themselves from danger, they hide their true identities by transforming into people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It changes so it looks just like its foe, tricks it, and then uses that opportunity to flee.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"To protect themselves from danger, they hide their true identities by transforming into people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Pokémon has a cowardly disposition, so when it's not around friends, it basically always stays transformed as something else.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"If a normally talkative child suddenly stops talking, it may have been replaced by Zorua.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Zorua is a timid Pokémon. This disposition seems to be what led to the development of Zorua's ability to take on the forms of other creatures.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Zorua sometimes transforms into a person and goes into cities to search for food. When Zorua does this, it usually takes on the form of a child.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A once-departed soul, returned to life in Hisui. Derives power from resentment, which rises as energy atop its head and takes on the forms of foes. In this way, Zorua vents lingering malice.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It changes into the forms of others to surprise them. Apparently, it often transforms into a silent child.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"To protect themselves from danger, they hide their true identities by transforming into people and Pokémon.\"\n    }\n  ],\n  \"571\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Bonds between these Pokémon are very strong. It protects the safety of its pack by tricking its opponents.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Each has the ability to fool a large group of people simultaneously. They protect their lair with illusory scenery.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Stories say those who tried to catch Zoroark were trapped in an illusion and punished.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Stories say those who tried to catch Zoroark were trapped in an illusion and punished.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Each has the ability to fool a large group of people simultaneously. They protect their lair with illusory scenery.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Bonds between these Pokémon are very strong. It protects the safety of its pack by tricking its opponents.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Each has the ability to fool a large group of people simultaneously. They protect their lair with illusory scenery.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Bonds between these Pokémon are very strong. It protects the safety of its pack by tricking its opponents.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It doesn't just transform itself—it also has the power to make hundreds of people see its illusions.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"If it thinks humans are going to discover its den, Zoroark shows them visions that make them wander around in the woods.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon cares deeply about others of its kind, and it will conjure terrifying illusions to keep its den and pack safe.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Seeking to ease the burden of solitude, lonely Trainers tell Zoroark to show illusions to them.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"With its disheveled white fur, it looks like an embodiment of death. Heedless of its own safety, Zoroark attacks its nemeses with a bitter energy so intense, it lacerates Zoroark's own body.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Stories say those who tried to catch Zoroark were trapped in an illusion and punished.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Each has the ability to fool a large group of people simultaneously. They protect their lair with illusory scenery.\"\n    }\n  ],\n  \"572\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They greet one another by rubbing each other with their tails, which are always kept well groomed and clean.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"These Pokémon prefer a tidy habitat. They are always sweeping and dusting, using their tails as brooms.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Minccino greet each other by grooming one another thoroughly with their tails.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Minccino greet each other by grooming one another thoroughly with their tails.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Minccino greet each other by grooming one another thoroughly with their tails.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"These Pokémon prefer a tidy habitat. They are always sweeping and dusting, using their tails as brooms.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Minccino greet each other by grooming one another thoroughly with their tails.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"These Pokémon prefer a tidy habitat. They are always sweeping and dusting, using their tails as brooms.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"A clean freak that will not allow even the slightest mess, it uses its tail like a mop to thoroughly clean any and all filth.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When its tail has gotten dirty from self-cleaning or from cleaning its nest, Minccino spends a whole day washing its tail in clean spring water.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The way it brushes away grime with its tail can be helpful when cleaning. But its focus on spotlessness can make cleaning more of a hassle.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They pet each other with their tails as a form of greeting. Of the two, the one whose tail is fluffier is a bit more boastful.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When its tail has gotten dirty from self-cleaning or from cleaning its nest, Minccino spends a whole day washing its tail in clean springwater.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"These Pokémon like things neat and tidy. They are always sweeping and dusting their habitat, using their tails as brooms.\"\n    }\n  ],\n  \"573\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Their white fur is coated in a special oil that makes it easy for them to deflect attacks.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Their white fur feels amazing to touch. Their fur repels dust and prevents static electricity from building up.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Cinccino's body is coated in a special oil that helps it deflect attacks, such as punches.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Cinccino's body is coated in a special oil that helps it deflect attacks, such as punches.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Their white fur feels amazing to touch. Their fur repels dust and prevents static electricity from building up.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Cinccino's body is coated in a special oil that helps it deflect attacks, such as punches.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Their white fur feels amazing to touch. Their fur repels dust and prevents static electricity from building up.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Cinccino's body is coated in a special oil that helps it deflect attacks, such as punches.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The white parts of its coat are covered in an oil secreted from its body, so this Pokémon can slide right away from its enemies' attacks.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The oil that seeps from its body is really smooth. For people troubled by bad skin, this oil is an effective treatment.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its body secretes oil that this Pokémon spreads over its nest as a coating to protect it from dust. Cinccino won't tolerate even a speck of the stuff.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A special oil that seeps through their fur helps them avoid attacks. The oil fetches a high price at market.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Their white fur is coated in a special oil that makes it easy for them to deflect attacks.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The oil that seeps from its body is really smooth. For people troubled by bad skin, this oil is an effective treatment.\"\n    }\n  ],\n  \"574\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Their ribbonlike feelers increase their psychic power. They are always staring at something.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They intently observe both Trainers and Pokémon. Apparently, they are looking at something that only Gothita can see.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It stares intently at everything. It can become so obsessed with watching that it doesn't notice attacks.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It stares intently at everything. It can become so obsessed with watching that it doesn't notice attacks.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Their ribbonlike feelers increase their psychic power. They are always staring at something.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They intently observe both Trainers and Pokémon. Apparently, they are looking at something that only Gothita can see.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Their ribbonlike feelers increase their psychic power. They are always staring at something.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They intently observe both Trainers and Pokémon. Apparently, they are looking at something that only Gothita can see.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Though they're still only babies, there's psychic power stored in their ribbonlike feelers, and sometimes they use that power to fight.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Even when nobody seems to be around, Gothita can still be heard making a muted cry. Many believe it's speaking to something only it can see.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is normally very innocent. When it is staring at something invisible, it is unblinking and utterly silent.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Beware of touching the ribbon-shaped feelers that control its psychic power. Gothita will begin bawling if you do.\"\n    }\n  ],\n  \"575\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They use hypnosis to control people and Pokémon. Tales of Gothorita leading people astray are told in every corner.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Starlight is the source of their power. At night, they mark star positions by using psychic power to float stones.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"According to many old tales, it creates friends for itself by controlling sleeping children on starry nights.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"According to many old tales, it creates friends for itself by controlling sleeping children on starry nights.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Starlight is the source of their power. At night, they mark star positions by using psychic power to float stones.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"According to many old tales, it creates friends for itself by controlling sleeping children on starry nights.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Starlight is the source of their power. At night, they mark star positions by using psychic power to float stones.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"According to many old tales, it creates friends for itself by controlling sleeping children on starry nights.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's said that when stars shine in the night sky, this Pokémon will spirit away sleeping children. Some call it the Witch of Punishment.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"On nights when the stars shine, this Pokémon's psychic power is at its strongest. It's unknown just what link Gothorita has to the greater universe.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon will hypnotize children to put them to sleep before carrying them away. Be wary of nights when the starlight is bright.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Using its psychic power, it arranges pebbles to form the shapes of constellations. Some people believe this Pokémon came from outer space.\"\n    }\n  ],\n  \"576\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Starry skies thousands of light-years away are visible in the space distorted by their intense psychic power.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They can predict the future from the placement and movement of the stars. They can see Trainers' life spans.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It can see the future from the movement of the stars. When it learns its Trainer's life span, it cries in sadness.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It can see the future from the movement of the stars. When it learns its Trainer's life span, it cries in sadness.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Starry skies thousands of light-years away are visible in the space distorted by their intense psychic power.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They can predict the future from the placement and movement of the stars. They can see Trainers' life spans.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Starry skies thousands of light-years away are visible in the space distorted by their intense psychic power.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They can predict the future from the placement and movement of the stars. They can see Trainers' life spans.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has tremendous psychic power, but it dislikes conflict. It's also able to predict the future based on the movement of the stars.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A criminal who was shown his fate by a Gothitelle went missing that same day and was never seen again.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Gothitelle unleashes psychic energy and shows opponents dreams of the universe's end. These dreams are apparently ethereal and beautiful.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It gazes at the stars to predict the future. It acts somewhat detached because it has seen the end of all existence.\"\n    }\n  ],\n  \"577\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They drive away attackers by unleashing psychic power. They can use telepathy to talk with others.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Because their bodies are enveloped in a special liquid, they can survive in any environment.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Because their bodies are enveloped in a special liquid, they are fine in any environment, no matter how severe.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Because their bodies are enveloped in a special liquid, they are fine in any environment, no matter how severe.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Because their bodies are enveloped in a special liquid, they are fine in any environment, no matter how severe.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They drive away attackers by unleashing psychic power. They can use telepathy to talk with others.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Because their bodies are enveloped in a special liquid, they are fine in any environment, no matter how severe.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They drive away attackers by unleashing psychic power. They can use telepathy to talk with others.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It communicates with others telepathically. Its body is encapsulated in liquid, but if it takes a heavy blow, the liquid will leak out.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Many say that the special liquid covering this Pokémon's body would allow it to survive in the vacuum of space.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Because their bodies are enveloped in a special liquid, they can survive in any environment.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They drive away attackers by unleashing psychic power. They can use telepathy to talk with others.\"\n    }\n  ],\n  \"578\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Since they have two divided brains, at times they suddenly try to take two different actions at once.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When their brains, now divided in two, are thinking the same thoughts, these Pokémon exhibit their maximum power.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When their two divided brains think the same thoughts, their psychic power is maximized.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When their two divided brains think the same thoughts, their psychic power is maximized.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Since they have two divided brains, at times they suddenly try to take two different actions at once.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When their two divided brains think the same thoughts, their psychic power is maximized.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Since they have two divided brains, at times they suddenly try to take two different actions at once.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When their two divided brains think the same thoughts, their psychic power is maximized.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its psychic power can supposedly cover a range of more than half a mile—but only if its two brains can agree with each other.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its brain has split into two, and the two halves rarely think alike. Its actions are utterly unpredictable.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Since they have two divided brains, at times they suddenly try to take two different actions at once.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When their brains, now divided in two, are thinking the same thoughts, these Pokémon exhibit their maximum power.\"\n    }\n  ],\n  \"579\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When Reuniclus shake hands, a network forms between their brains, increasing their psychic power.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"These remarkably intelligent Pokémon fight by controlling arms that can grip with rock-crushing power.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They use psychic power to control their arms, which are made of a special liquid. They can crush boulders psychically.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They use psychic power to control their arms, which are made of a special liquid. They can crush boulders psychically.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They use psychic power to control their arms, which are made of a special liquid. They can crush boulders psychically.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When Reuniclus shake hands, a network forms between their brains, increasing their psychic power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They use psychic power to control their arms, which are made of a special liquid. They can crush boulders psychically.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Reuniclus shake hands, a network forms between their brains, increasing their psychic power.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"While it could use its psychic abilities in battle, this Pokémon prefers to swing its powerful arms around to beat opponents into submission.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's said that drinking the liquid surrounding Reuniclus grants wisdom. Problem is, the liquid is highly toxic to anything besides Reuniclus itself.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Their arms are made of a special liquid. They use psychic power to control these arms and crush boulders.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When Reuniclus shake hands, a network forms between their brains, increasing their psychic power.\"\n    }\n  ],\n  \"580\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"These bird Pokémon are excellent divers. They swim around in the water eating their favorite food--peat moss.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When attacked, it uses its feathers to splash water, escaping under cover of the spray.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They are better at swimming than flying, and they happily eat their favorite food, peat moss, as they dive underwater.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They are better at swimming than flying, and they happily eat their favorite food, peat moss, as they dive underwater.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When attacked, it uses its feathers to splash water, escaping under cover of the spray.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They are better at swimming than flying, and they happily eat their favorite food, peat moss, as they dive underwater.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When attacked, it uses its feathers to splash water, escaping under cover of the spray.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They are better at swimming than flying, and they happily eat their favorite food, peat moss, as they dive underwater.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's not very good at flying yet. It watches the dances of its Swanna parents to learn how to move its wings.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It strengthens its body by diving in to the depths of ponds, swimming around while looking for bog moss to eat.\"\n    }\n  ],\n  \"581\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Swanna start to dance at dusk. The one dancing in the middle is the leader of the flock.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It administers sharp, powerful pecks with its bill. It whips its long neck to deliver forceful repeated strikes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Despite their elegant appearance, they can flap their wings strongly and fly for thousands of miles.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Despite their elegant appearance, they can flap their wings strongly and fly for thousands of miles.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Despite their elegant appearance, they can flap their wings strongly and fly for thousands of miles.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Swanna start to dance at dusk. The one dancing in the middle is the leader of the flock.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Despite their elegant appearance, they can flap their wings strongly and fly for thousands of miles.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Swanna start to dance at dusk. The one dancing in the middle is the leader of the flock.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Centered around its leader, the flock dances in perfect sync to strengthen its unity.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's said that many artists have taken inspiration from the sight of Swanna performing a beautiful dance in the light of dawn.\"\n    }\n  ],\n  \"582\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The temperature of their breath is -58° F. They create snow crystals and make snow fall in the areas around them.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"This Pokémon formed from icicles bathed in energy from the morning sun. It sleeps buried in snow.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Theoretically, this Pokémon formed from icicles bathed in energy from the morning sun. Their breath is -58° F.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Theoretically, this Pokémon formed from icicles bathed in energy from the morning sun. Their breath is -58° F.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The temperature of their breath is -58 degrees Fahrenheit. They create snow crystals and make snow fall in the areas around them.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This Pokémon formed from icicles bathed in energy from the morning sun. It sleeps buried in snow.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The temperature of their breath is -58 degrees Fahrenheit. They create snow crystals and make snow fall in the areas around them.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon formed from icicles bathed in energy from the morning sun. It sleeps buried in snow.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Born of an icicle, this Pokémon uses its frosty breath to make ice crystals, causing snow to fall.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It feels pleasantly cool when embraced. This Pokémon is treasured by households in warm regions.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It exhales cold air that is at -58 degrees Fahrenheit. When it's in a warm place, it shrinks little by little.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When the morning sun hit an icicle, it wished not to melt, and thus Vanillite was born. At night, it buries itself in snow to sleep.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Unable to survive in hot areas, it makes itself comfortable by breathing out air cold enough to cause snow. It burrows into the snow to sleep.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Supposedly, this Pokémon was born from an icicle. It spews out freezing air at -58 degrees Fahrenheit to make itself more comfortable.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The temperature of their breath is -58 degrees Fahrenheit. They create snow crystals and make snow fall in the areas around them.\"\n    }\n  ],\n  \"583\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Snowy mountains are this Pokémon's habitat. During an ancient ice age, they moved to southern areas.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It conceals itself from enemy eyes by creating many small ice particles and hiding among them.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They cool down the surrounding air and create ice particles, which they use to freeze their foes.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They cool down the surrounding air and create ice particles, which they use to freeze their foes.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They cool down the surrounding air and create ice particles, which they use to freeze their foes.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Snowy mountains are this Pokémon's habitat. During an ancient ice age, they moved to southern areas.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They cool down the surrounding air and create ice particles, which they use to freeze their foes.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Snowy mountains are this Pokémon's habitat. During an ancient ice age, they moved to southern areas.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Hot days cause its body to melt. It can be restored by refreezing it, but the process leaves its body slightly warped.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon has existed since the Ice Age. It controls particles of ice, freezes its opponents, and then shatters them with a headbutt.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It sprays its enemies with grains of ice to freeze them. Most Vanillish in Alola are smaller than average.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This hearty Pokémon survived the Ice Age. It's incredibly popular in very hot regions.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"By drinking pure water, it grows its icy body. This Pokémon can be hard to find on days with warm, sunny weather.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It blasts enemies with cold air reaching -148 degrees Fahrenheit, freezing them solid. But it spares their lives afterward—it's a kind Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They cool down the surrounding air and create ice particles, which they use to freeze their foes.\"\n    }\n  ],\n  \"584\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Swallowing large amounts of water, they make snow clouds inside their bodies and attack their foes with violent blizzards.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"If both heads get angry simultaneously, this Pokémon expels a blizzard, burying everything in snow.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Swallowing large amounts of water, they make snow clouds inside their bodies and, when angry, cause violent blizzards.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Swallowing large amounts of water, they make snow clouds inside their bodies and, when angry, cause violent blizzards.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"If both heads get angry simultaneously, this Pokémon expels a blizzard, burying everything in snow.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Swallowing large amounts of water, they make snow clouds inside their bodies and, when angry, cause violent blizzards.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"If both heads get angry simultaneously, this Pokémon expels a blizzard, burying everything in snow.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Swallowing large amounts of water, they make snow clouds inside their bodies and, when angry, cause violent blizzards.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Each of its two heads has a brain, and when they are in agreement, it attacks its enemies by exhaling a violent blizzard.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Even if it loses one of its heads, it can live relatively problem-free. It makes snow clouds inside its body.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It blasts blizzards from its two mouths. It can create snow anywhere, so it gets a lot of love from skiers and snowboarders.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Vanilluxe is born when two Vanillish, half-melted by the day's light, stick to each other and freeze together in the cold return of night.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When its anger reaches a breaking point, this Pokémon unleashes a fierce blizzard that freezes every creature around it, be they friend or foe.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"People believe this Pokémon formed when two Vanillish stuck together. Its body temperature is roughly 21 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If both heads get angry simultaneously, this Pokémon expels a blizzard from its horn, burying everything in snow.\"\n    }\n  ],\n  \"585\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The color and scent of their fur changes to match the mountain grass. When they sense hostility, they hide in the grass.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The turning of the seasons changes the color and scent of this Pokémon's fur. People use it to mark the seasons.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Their coloring changes according to the seasons and can be slightly affected by the temperature and humidity as well.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Their coloring changes according to the seasons and can be slightly affected by the temperature and humidity as well.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Their coloring changes according to the seasons and can be slightly affected by the temperature and humidity as well.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The turning of the seasons changes the color and scent of this Pokémon's fur. People use it to mark the seasons.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Their coloring changes according to the seasons and can be slightly affected by the temperature and humidity as well.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The turning of the seasons changes the color and scent of this Pokémon's fur. People use it to mark the seasons.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Deerling have different scents depending on the season. In early spring, these Pokémon give off a delicate, sweet, and calming scent.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Despite Deerling's adorable appearance, farmers consider it a nuisance since it loves plant shoots and will eat them all up.\"\n    }\n  ],\n  \"586\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They migrate according to the seasons. People can tell the season by looking at Sawsbuck's horns.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The plants growing on its horns change according to the season. The leaders of the herd possess magnificent horns.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They migrate according to the seasons, so some people call Sawsbuck the harbingers of spring.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They migrate according to the seasons, so some people call Sawsbuck the harbingers of spring.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They migrate according to the seasons. People can tell the season by looking at Sawsbuck's horns.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They migrate according to the seasons, so some people call Sawsbuck the harbingers of spring.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They migrate according to the seasons. People can tell the season by looking at Sawsbuck's horns.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They migrate according to the seasons, so some people call Sawsbuck the harbingers of spring.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It seems that a Sawsbuck with many flowers on its antlers will grow at a slightly slower pace because the flowers absorb the Pokémon's nutrients.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"There are many Sawsbuck enthusiasts. The paler the pink flowers that bloom on its antlers, the more beautiful the Sawsbuck is considered to be.\"\n    }\n  ],\n  \"587\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The energy made in its cheeks' electric pouches is stored inside its membrane and released while it is gliding.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They live on treetops and glide using the inside of a cape-like membrane while discharging electricity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It glides on its outstretched membrane while shocking foes with the electricity stored in the pouches on its cheeks.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It glides on its outstretched membrane while shocking foes with the electricity stored in the pouches on its cheeks.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They live on treetops and glide using the inside of a cape-like membrane while discharging electricity.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The energy made in its cheeks' electric pouches is stored inside its membrane and released while it is gliding.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They live on treetops and glide using the inside of a cape-like membrane while discharging electricity.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The energy made in its cheeks' electric pouches is stored inside its membrane and released while it is gliding.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It glides using its cape-like membrane. Electrical energy scatters from it, shocking its friends and foes alike.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It grills berries and bug Pokémon with electric shocks and makes a meal of them. It usually nests in the holes gouged in trees by Pikipek.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They store up electricity to fly through the air. When thunder cracks at night, sometimes there are almost enough of them to blot out the sky.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"As it flies, it scatters electricity around, so bird Pokémon keep their distance. That's why Emolga can keep all its food to itself.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As Emolga flutters through the air, it crackles with electricity. This Pokémon is cute, but it can cause a lot of trouble.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon absolutely loves sweet berries. Sometimes it stuffs its cheeks full of so much food that it can't fly properly.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The energy made in its cheeks' electric pouches is stored inside its patagial membranes and released while it is gliding.\"\n    }\n  ],\n  \"588\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"These mysterious Pokémon evolve when they receive electrical stimulation while they are in the same place as Shelmet.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When they feel threatened, they spit an acidic liquid to drive attackers away. This Pokémon targets Shelmet.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"For some reason they evolve when they receive electrical energy while they are attacking Shelmet.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"For some reason they evolve when they receive electrical energy while they are attacking Shelmet.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"These mysterious Pokémon evolve when they receive electrical stimulation while they are in the same place as Shelmet.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"For some reason they evolve when they receive electrical energy while they are attacking Shelmet.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"These mysterious Pokémon evolve when they receive electrical stimulation while they are in the same place as Shelmet.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"For some reason they evolve when they receive electrical energy while they are attacking Shelmet.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its strange physiology reacts to electrical energy in interesting ways. The presence of a Shelmet will cause this Pokémon to evolve.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It spits a liquid from its mouth to melt through Shelmet's shell. Karrablast doesn't eat the shell— it eats only the contents.\"\n    }\n  ],\n  \"589\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They fly around at high speed, striking with their pointed spears. Even when in trouble, they face opponents bravely.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"These Pokémon evolve by wearing the shell covering of a Shelmet. The steel armor protects their whole body.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Wearing the shell covering they stole from Shelmet, they defend themselves and attack with two lances.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Wearing the shell covering they stole from Shelmet, they defend themselves and attack with two lances.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Wearing the shell covering they stole from Shelmet, they defend themselves and attack with two lances.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"These Pokémon evolve by wearing the shell covering of a Shelmet. The steel armor protects their whole body.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Wearing the shell covering they stole from Shelmet, they defend themselves and attack with two lances.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"These Pokémon evolve by wearing the shell covering of a Shelmet. The steel armor protects their whole body.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"They use shells they've stolen from Shelmet to arm and protect themselves. They're very popular Pokémon in the Galar region.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It charges its enemies, lances at the ready. An image of one of its duels is captured in a famous painting of Escavalier clashing with Sirfetch'd.\"\n    }\n  ],\n  \"590\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lures people in with its Poké Ball pattern, then releases poison spores. Why it resembles a Poké Ball is unknown.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"For some reason, this Pokémon resembles a Poké Ball. They release poison spores to repel those who try to catch them.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It lures Pokémon with its pattern that looks just like a Poké Ball then releases poison spores.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It lures Pokémon with its pattern that looks just like a Poké Ball then releases poison spores.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lures people in with its Poké Ball pattern, then releases poison spores. Why it resembles a Poké Ball is unknown.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lures Pokémon with its pattern that looks just like a Poké Ball, then releases poison spores.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It lures people in with its Poké Ball pattern, then releases poison spores. Why it resembles a Poké Ball is unknown.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It lures Pokémon with its pattern that looks just like a Poké Ball, then releases poison spores.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"No one knows what the Poké Ball-like pattern on Foongus means or why Foongus has it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The spores released from this Pokémon's hands are highly poisonous, but when thoroughly dried, the spores can be used as stomach medicine.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"There is a theory that the developer of the modern-day Poké Ball really liked Foongus, but this has not been confirmed.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon prefers damp places. It spurts out poison spores to repel approaching enemies.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It lures targets in with its Poké Ball-like pattern and sprays poison spores at them. Why it resembles a Poké Ball is unknown.\"\n    }\n  ],\n  \"591\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It lures prey close by dancing and waving its arm caps, which resemble Poké Balls, in a swaying motion.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They show off their Poké Ball caps to lure prey, but very few Pokémon are fooled by this.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It moves the caps on both arms and does a dance to lure prey. It prefers damp places.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It moves the caps on both arms and does a dance to lure prey. It prefers damp places.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They show off their Poké Ball caps to lure prey, but very few Pokémon are fooled by this.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lures prey close by dancing and waving its arm caps, which resemble Poké Balls, in a swaying motion.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They show off their Poké Ball caps to lure prey, but very few Pokémon are fooled by this.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It lures prey close by dancing and waving its arm caps, which resemble Poké Balls, in a swaying motion.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon puffs poisonous spores at its foes. If the spores aren't washed off quickly, they'll grow into mushrooms wherever they land.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Amoonguss generally doesn't move as much. It tends to stand still near Poké Balls that have been dropped on the ground.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Be wary of the poisonous spores it releases. Mushrooms resembling Amoonguss's caps will grow out of anywhere the spores touch.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Amoonguss mimics Poké Balls. It is not yet clear whether this mimicry is effective against other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They show off their Poké Ball caps in an attempt to lure prey close, but few Pokémon are fooled.\"\n    }\n  ],\n  \"592\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"With its thin, veil-like arms wrapped around the body of its opponent, it sinks to the ocean floor.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They paralyze prey with poison, then drag them down to their lairs, five miles below the surface.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"If its veil-like arms stun and wrap a foe, that foe will be dragged miles below the surface, never to return.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"If its veil-like arms stun and wrap a foe, that foe will be dragged miles below the surface, never to return.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They paralyze prey with poison, then drag them down to their lairs, five miles below the surface.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If its veil-like arms stun and wrap a foe, that foe will be dragged miles below the surface, never to return.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They paralyze prey with poison, then drag them down to their lairs, five miles below the surface.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If its veil-like arms stun and wrap a foe, that foe will be dragged miles below the surface, never to return.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It wraps its veillike arms and legs around prey swimming by and drags them down to the depths of the ocean.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Using the invisible poison spikes on its veillike arms and legs, it paralyzes its enemies and causes them to drown.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It envelops its prey in its veillike arms and draws it down to the deeps, five miles below the ocean's surface.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Legend has it that the residents of a sunken ancient city changed into these Pokémon.\"\n    }\n  ],\n  \"593\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The fate of the ships and crew that wander into Jellicent's habitat: all sunken, all lost, all vanished.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They propel themselves by expelling absorbed seawater from their bodies. Their favorite food is life energy.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its body is mostly seawater. It's said there's a castle of ships Jellicent have sunk on the seafloor.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its body is mostly seawater. It's said there's a castle of ships Jellicent have sunk on the seafloor.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its body is mostly seawater. It's said there's a castle of ships Jellicent have sunk on the seafloor.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The fate of the ships and crew that wander into Jellicent's habitat: all sunken, all lost, all vanished.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its body is mostly seawater. It's said there's a castle of ships Jellicent have sunk on the seafloor.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The fate of the ships and crew that wander into Jellicent's habitat: all sunken, all lost, all vanished.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Jellicent is always hanging around fancy cruise ships and tankers, hoping to drag away its prey.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Fishermen are terrified of Jellicent. It's rumored to drag them into the sea and steal their lives away.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Most of this Pokémon's body composition is identical to sea water. It makes sunken ships its lair.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Whenever a full moon hangs in the night sky, schools of Jellicent gather near the surface of the sea, waiting for their prey to appear.\"\n    }\n  ],\n  \"594\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The special membrane enveloping Alomomola has the ability to heal wounds.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Floating in the open sea is how they live. When they find a wounded Pokémon, they embrace it and bring it to shore.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It gently holds injured and weak Pokémon in its fins. Its special membrane heals their wounds.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It gently holds injured and weak Pokémon in its fins. Its special membrane heals their wounds.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Floating in the open sea is how they live. When they find a wounded Pokémon, they embrace it and bring it to shore.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It gently holds injured and weak Pokémon in its fins. Its special membrane heals their wounds.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Floating in the open sea is how they live. When they find a wounded Pokémon, they embrace it and bring it to shore.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It gently holds injured and weak Pokémon in its fins. Its special membrane heals their wounds.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It uses its special mucus to close the wounds of injured Pokémon. The reason for this behavior remains unknown.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They float upon the open sea. Many water Pokémon gather in the area around Alomomola.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Fishermen take them along on long voyages, because if you have an Alomomola with you, there'll be no need for a doctor or medicine.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The reason it helps Pokémon in a weakened condition is that any Pokémon coming after them may also attack Alomomola.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It gently holds injured and weak Pokémon in its fins. Its special membrane heals their wounds.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They float upon the open sea. Many water Pokémon gather in the area around Alomomola.\"\n    }\n  ],\n  \"595\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Joltik that live in cities have learned a technique for sucking electricity from the outlets in houses.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They attach themselves to large-bodied Pokémon and absorb static electricity, which they store in an electric pouch.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Since it can't generate its own electricity, it sticks onto large-bodied Pokémon and absorbs static electricity.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Since it can't generate its own electricity, it sticks onto large-bodied Pokémon and absorbs static electricity.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Since it can't generate its own electricity, it sticks onto large-bodied Pokémon and absorbs static electricity.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They attach themselves to large-bodied Pokémon and absorb static electricity, which they store in an electric pouch.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Since it can't generate its own electricity, it sticks onto large-bodied Pokémon and absorbs static electricity.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They attach themselves to large-bodied Pokémon and absorb static electricity, which they store in an electric pouch.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Joltik can be found clinging to other Pokémon. It's soaking up static electricity because it can't produce a charge on its own.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Joltik latch on to other Pokémon and suck out static electricity. They're often found sticking to Yamper's hindquarters.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Joltik that live in cities have learned a technique for sucking electricity from the outlets in houses.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Since it can't generate its own electricity, it sticks onto large-bodied Pokémon and absorbs static electricity.\"\n    }\n  ],\n  \"596\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When attacked, they create an electric barrier by spitting out many electrically charged threads.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They employ an electrically charged web to trap their prey. While it is immobilized by shock, they leisurely consume it.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It creates barriers from electrified silk that stun foes. This works as a weapon as well as a defense.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It creates barriers from electrified silk that stun foes. This works as a weapon as well as a defense.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They employ an electrically charged web to trap their prey. While it is immobilized by shock, they leisurely consume it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When attacked, they create an electric barrier by spitting out many electrically charged threads.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They employ an electrically charged web to trap their prey. While it is immobilized by shock, they leisurely consume it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When attacked, they create an electric barrier by spitting out many electrically charged threads.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It launches electrified fur from its abdomen as its means of attack. Opponents hit by the fur could be in for three full days and nights of paralysis.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It lays traps of electrified threads near the nests of bird Pokémon, aiming to snare chicks that are not yet good at flying.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They employ an electrically charged web to trap their prey. While it is immobilized by shock, they leisurely consume it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When attacked, they create an electric barrier by spitting out many electrically charged threads.\"\n    }\n  ],\n  \"597\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When threatened, it attacks by shooting a barrage of spikes, which gives it a chance to escape by rolling away.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They stick their spikes into cave walls and absorb the minerals they find in the rock.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It absorbs the iron it finds in the rock while clinging to the ceiling. It shoots spikes when in danger.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It absorbs the iron it finds in the rock while clinging to the ceiling. It shoots spikes when in danger.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When threatened, it attacks by shooting a barrage of spikes, which gives it a chance to escape by rolling away.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It absorbs the iron it finds in the rock while clinging to the ceiling. It shoots spikes when in danger.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When threatened, it attacks by shooting a barrage of spikes, which gives it a chance to escape by rolling away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It absorbs the iron it finds in the rock while clinging to the ceiling. It shoots spikes when in danger.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It defends itself by launching spikes, but its aim isn't very good at first. Only after a lot of practice will it improve.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Mossy caves are their preferred dwellings. Enzymes contained in mosses help Ferroseed's spikes grow big and strong.\"\n    }\n  ],\n  \"598\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It fights by swinging around its three spiky feelers. A hit from these steel spikes can reduce a boulder to rubble.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They attach themselves to cave ceilings, firing steel spikes at targets passing beneath them.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"By swinging around its three spiky feelers and shooting spikes, it can obliterate an opponent.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"By swinging around its three spiky feelers and shooting spikes, it can obliterate an opponent.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"By swinging around its three spiky feelers and shooting spikes, it can obliterate an opponent.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They attach themselves to cave ceilings, firing steel spikes at targets passing beneath them.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"By swinging around its three spiky feelers and shooting spikes, it can obliterate an opponent.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They attach themselves to cave ceilings, firing steel spikes at targets passing beneath them.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon scrapes its spikes across rocks, and then uses the tips of its feelers to absorb the nutrients it finds within the stone.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its spikes are harder than steel. This Pokémon crawls across rock walls by stabbing the spikes on its feelers into the stone.\"\n    }\n  ],\n  \"599\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The two minigears that mesh together are predetermined. Each will rebound from other minigears without meshing.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Interlocking two bodies and spinning around generates the energy they need to live.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Two bodies comprise a fixed pair. They spin around each other to generate energy.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Two bodies comprise a fixed pair. They spin around each other to generate energy.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Interlocking two bodies and spinning around generates the energy they need to live.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The two minigears that mesh together are predetermined. Each will rebound from other minigears without meshing.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Interlocking two bodies and spinning around generates the energy they need to live.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The two minigears that mesh together are predetermined. Each will rebound from other minigears without meshing.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The two minigears that compose this Pokémon are closer than twins. They mesh well only with each other.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's suspected that Klink were the inspiration behind ancient people's invention of the first gears.\"\n    }\n  ],\n  \"600\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"By changing the direction in which it rotates, it communicates its feelings to others. When angry, it rotates faster.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Spinning minigears are rotated at high speed and repeatedly fired away. It is dangerous if the gears don't return.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A minigear and big gear comprise its body. If the minigear it launches at a foe doesn't return, it will die.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A minigear and big gear comprise its body. If the minigear it launches at a foe doesn't return, it will die.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"By changing the direction in which it rotates, it communicates its feelings to others. When angry, it rotates faster.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A minigear and big gear comprise its body. If the minigear it launches at a foe doesn't return, it will die.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"By changing the direction in which it rotates, it communicates its feelings to others. When angry, it rotates faster.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"A minigear and big gear comprise its body. If the minigear it launches at a foe doesn't return, it will die.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When Klang goes all out, the minigear links up perfectly with the outer part of the big gear, and this Pokémon's rotation speed increases sharply.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Many companies in the Galar region choose Klang as their logo. This Pokémon is considered the symbol of industrial technology.\"\n    }\n  ],\n  \"601\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its red core functions as an energy tank. It fires the charged energy through its spikes into an area.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The gear with the red core is rotated at high speed for a rapid energy charge.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The minigear spins at high speed. Then the energy from the red core charges the minigear to make it ready to fire.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The minigear spins at high speed. Then the energy from the red core charges the minigear to make it ready to fire.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The gear with the red core is rotated at high speed for a rapid energy charge.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its red core functions as an energy tank. It fires the charged energy through its spikes into an area.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The gear with the red core is rotated at high speed for a rapid energy charge.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its red core functions as an energy tank. It fires the charged energy through its spikes into an area.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"From its spikes, it launches powerful blasts of electricity. Its red core contains an enormous amount of energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The three gears that compose this Pokémon spin at high speed. Its new spiked gear isn't a living creature.\"\n    }\n  ],\n  \"602\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"While one alone doesn't have much power, a chain of many Tynamo can be as powerful as lightning.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"These Pokémon move in schools. They have an electricity-generating organ, so they discharge electricity if in danger.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"One alone can emit only a trickle of electricity, so a group of them gathers to unleash a powerful electric shock.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"One alone can emit only a trickle of electricity, so a group of them gathers to unleash a powerful electric shock.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"While one alone doesn't have much power, a chain of many Tynamo can be as powerful as lightning.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"One alone can emit only a trickle of electricity, so a group of them gathers to unleash a powerful electric shock.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"While one alone doesn't have much power, a chain of many Tynamo can be as powerful as lightning.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"One alone can emit only a trickle of electricity, so a group of them gathers to unleash a powerful electric shock.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"While one alone doesn't have much power, a chain of many Tynamo can be as powerful as lightning.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"These Pokémon move in schools. They have an electricity-generating organ, so they discharge electricity if in danger.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"One alone can emit only a trickle of electricity, so a group of them gathers to unleash a powerful electric shock.\"\n    }\n  ],\n  \"603\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They coil around foes and shock them with electricity-generating organs that seem simply to be circular patterns.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"These Pokémon have a big appetite. When they spot their prey, they attack it and paralyze it with electricity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It wraps itself around its prey and paralyzes it with electricity from the round spots on its sides. Then it chomps.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It wraps itself around its prey and paralyzes it with electricity from the round spots on its sides. Then it chomps.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It wraps itself around its prey and paralyzes it with electricity from the round spots on its sides. Then it chomps.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"These Pokémon have a big appetite. When they spot their prey, they attack it and paralyze it with electricity.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It wraps itself around its prey and paralyzes it with electricity from the round spots on its sides. Then it chomps.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"These Pokémon have a big appetite. When they spot their prey, they attack it and paralyze it with electricity.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They coil around foes and shock them with electricity-generating organs that seem simply to be circular patterns.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"These Pokémon have a big appetite. When they spot their prey, they attack it and paralyze it with electricity.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It wraps itself around its prey and paralyzes them with electricity from the round spots on its sides. Then it chomps.\"\n    }\n  ],\n  \"604\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They crawl out of the ocean using their arms. They will attack prey on shore and immediately drag it into the ocean.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"With their sucker mouths, they suck in prey. Then they use their fangs to shock the prey with electricity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It latches on to prey with its sucker mouth, sinking in its fangs and shocking the prey with powerful electricity.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It latches on to prey with its sucker mouth, sinking in its fangs and shocking the prey with powerful electricity.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"With their sucker mouths, they suck in prey. Then they use their fangs to shock the prey with electricity.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They crawl out of the ocean using their arms. They will attack prey on shore and immediately drag it into the ocean.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"With their sucker mouths, they suck in prey. Then they use their fangs to shock the prey with electricity.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They crawl out of the ocean using their arms. They will attack prey on shore and immediately drag it into the ocean.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They crawl out of the ocean using their arms. They will attack prey on shore and immediately drag it into the ocean.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It latches on to prey with its sucker mouth, sinking in its fangs and shocking the prey with powerful electricity.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"With their sucker mouths, they latch on to prey. Then they use their fangs to shock the prey with electricity.\"\n    }\n  ],\n  \"605\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It uses its strong psychic power to squeeze its opponent's brain, causing unendurable headaches.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"This Pokémon had never been seen until it appeared from far in the desert 50 years ago.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Rumors of its origin are linked to a UFO crash site in the desert 50 years ago.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Rumors of its origin are linked to a UFO crash site in the desert 50 years ago.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It uses its strong psychic power to squeeze its opponent's brain, causing unendurable headaches.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Rumors of its origin are linked to a UFO crash site in the desert 50 years ago.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It uses its strong psychic power to squeeze its opponent's brain, causing unendurable headaches.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Rumors of its origin are linked to a UFO crash site in the desert 50 years ago.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It controls tremendous psychic power. Most reports of alien sightings are actually just people mistaking Elgyem for an alien.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pokémon is shrouded in mystery. It's said to have appeared from a UFO that fell from the sky about 50 years ago.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If this Pokémon stands near a TV, strange scenery will appear on the screen. That scenery is said to be from its home.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon was discovered about 50 years ago. Its highly developed brain enables it to exert its psychic powers.\"\n    }\n  ],\n  \"606\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can manipulate an opponent's memory. Apparently, it communicates by flashing its three different-colored fingers.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It uses psychic power to control an opponent's brain and tamper with its memories.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Apparently, it communicates by flashing its three fingers, but those patterns haven't been decoded.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Apparently, it communicates by flashing its three fingers, but those patterns haven't been decoded.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Apparently, it communicates by flashing its three fingers, but those patterns haven't been decoded.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It uses psychic power to control an opponent's brain and tamper with its memories.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Apparently, it communicates by flashing its three fingers, but those patterns haven't been decoded.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It uses psychic power to control an opponent's brain and tamper with its memories.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"With its psychic powers, it rewrites its opponents' memories. You, too, may have already had your memories rewritten.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It has strong psychic powers. Using its fingers that flash three different colors, it controls its opponents and rewrites their memories.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Whenever a Beheeyem visits a farm, a Dubwool mysteriously disappears.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Sometimes found drifting above wheat fields, this Pokémon can control the memories of its opponents.\"\n    }\n  ],\n  \"607\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Litwick shines a light that absorbs the life energy of people and Pokémon, which becomes the fuel that it burns.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"While shining a light and pretending to be a guide, it leeches off the life force of any who follow it.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its flame is usually out, but it starts shining when it absorbs life force from people or Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its flame is usually out, but it starts shining when it absorbs life force from people or Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"While shining a light and pretending to be a guide, it leeches off the life force of any who follow it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Litwick shines a light that absorbs the life energy of people and Pokémon, which becomes the fuel that it burns.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"While shining a light and pretending to be a guide, it leeches off the life force of any who follow it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Litwick shines a light that absorbs the life energy of people and Pokémon, which becomes the fuel that it burns.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The flame on its head keeps its body slightly warm. This Pokémon takes lost children by the hand to guide them to the spirit world.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The younger the life this Pokémon absorbs, the brighter and eerier the flame on its head burns.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its flame is usually out, but it starts shining when Litwick absorbs life-force from people or Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"While shining a light and pretending to be a guide, it leeches off the life-force of any who follow it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Litwick shines a light that absorbs the life energy of people and Pokémon, which becomes the fuel that it burns.\"\n    }\n  ],\n  \"608\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This ominous Pokémon is feared. Through cities it wanders, searching for the spirits of the fallen.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It arrives near the moment of death and steals spirit from the body.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The spirits it absorbs fuel its baleful fire. It hangs around hospitals waiting for people to pass on.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The spirits it absorbs fuel its baleful fire. It hangs around hospitals waiting for people to pass on.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The spirits it absorbs fuel its baleful fire. It hangs around hospitals waiting for people to pass on.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It arrives near the moment of death and steals spirit from the body.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The spirits it absorbs fuel its baleful fire. It hangs around hospitals waiting for people to pass on.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It arrives near the moment of death and steals spirit from the body.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon appears just before someone passes away, so it's feared as an emissary of death.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It lurks in cities, pretending to be a lamp. Once it finds someone whose death is near, it will trail quietly after them.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Lampent appears at the moment of death and promptly absorbs the spirit as it leaves the body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The spirits it absorbs fuel its baleful fire. It hangs around hospitals waiting for people to pass on.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Lampent appears at the moment of death and promptly absorbs the spirit as it leaves the body.\"\n    }\n  ],\n  \"609\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It absorbs a spirit, which it then burns. By waving the flames on its arms, it puts its foes into a hypnotic trance.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Being consumed in Chandelure's flame burns up the spirit, leaving the body behind.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The spirits burned up in its ominous flame lose their way and wander this world forever.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The spirits burned up in its ominous flame lose their way and wander this world forever.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Being consumed in Chandelure's flame burns up the spirit, leaving the body behind.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The spirits burned up in its ominous flame lose their way and wander this world forever.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Being consumed in Chandelure's flame burns up the spirit, leaving the body behind.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The spirits burned up in its ominous flame lose their way and wander this world forever.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon haunts dilapidated mansions. It sways its arms to hypnotize opponents with the ominous dancing of its flames.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In homes illuminated by Chandelure instead of lights, funerals were a constant occurrence— or so it's said.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The spirits burned up in its ominous flame lose their way and wander this world forever.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It absorbs spirits, which it then burns. By waving the flames on its arms, it puts its foes into a hypnotic trance.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Being consumed in Chandelure's flame burns up the spirit, leaving the body behind.\"\n    }\n  ],\n  \"610\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They use their tusks to crush the berries they eat. Repeated regrowth makes their tusks strong and sharp.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They mark their territory by leaving gashes in trees with their tusks. If a tusk breaks, a new one grows in quickly.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its large tusks have a tendency to break, but each time they grow back, they grow in harder and sturdier.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its large tusks have a tendency to break, but each time they grow back, they grow in harder and sturdier.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They use their tusks to crush the berries they eat. Repeated regrowth makes their tusks strong and sharp.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They mark their territory by leaving gashes in trees with their tusks. If a tusk breaks, a new one grows in quickly.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They use their tusks to crush the berries they eat. Repeated regrowth makes their tusks strong and sharp.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They mark their territory by leaving gashes in trees with their tusks. If a tusk breaks, a new one grows in quickly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"These Pokémon nest in the ground and use their tusks to crush hard berries. Crushing berries is also how they test each other's strength.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They play with each other by knocking their large tusks together. Their tusks break sometimes, but they grow back so quickly that it isn't a concern.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon lives in nests that are made in the ground. People in ancient times used its tusks as cooking knives.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If you see peculiar teeth marks on boulders or trees, it means an Axew is likely living nearby.\"\n    }\n  ],\n  \"611\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Since a broken tusk will not grow back, they diligently sharpen their tusks on river rocks after they've been fighting.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Their tusks can shatter rocks. Territory battles between Fraxure can be intensely violent.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"A broken tusk will not grow back, so it diligently sharpens its tusks on river rocks after the end of a battle.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"A broken tusk will not grow back, so it diligently sharpens its tusks on river rocks after the end of a battle.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Their tusks can shatter rocks. Territory battles between Fraxure can be intensely violent.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"A broken tusk will not grow back, so it diligently sharpens its tusks on river rocks after the end of a battle.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Their tusks can shatter rocks. Territory battles between Fraxure can be intensely violent.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"A broken tusk will not grow back, so it diligently sharpens its tusks on river rocks after the end of a battle.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After battle, this Pokémon carefully sharpens its tusks on river rocks. It needs to take care of its tusks—if one breaks, it will never grow back.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its skin is as hard as a suit of armor. Fraxure's favorite strategy is to tackle its opponents, stabbing them with its tusks at the same time.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Because its tusks don't grow back once they break, this Pokémon apparently won't use them unless truly necessary.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Fraxure uses its thick tusks to neatly cut prey into two portions—one to eat now and one to save for later.\"\n    }\n  ],\n  \"612\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They are kind but can be relentless when defending territory. They challenge foes with tusks that can cut steel.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Their sturdy tusks will stay sharp even if used to cut steel beams. These Pokémon are covered in hard armor.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Its tusks are incredibly destructive. They can easily slice through a thick, sturdy steel column every time.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Its tusks are incredibly destructive. They can easily slice through a thick, sturdy steel column every time.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They are kind but can be relentless when defending territory. They challenge foes with tusks that can cut steel.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Their sturdy tusks will stay sharp even if used to cut steel beams. These Pokémon are covered in hard armor.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They are kind but can be relentless when defending territory. They challenge foes with tusks that can cut steel.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Their sturdy tusks will stay sharp even if used to cut steel beams. These Pokémon are covered in hard armor.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its resilient tusks are its pride and joy. It licks up dirt to take in the minerals it needs to keep its tusks in top condition.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While usually kindhearted, it can be terrifying if angered. Tusks that can slice through steel beams are how Haxorus deals with its adversaries.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon nests in caves and abandoned mines. It is docile, but it will become incredibly angry if its tusks are touched, so beware.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It overwhelms enemies with its prized tusks, which are sharp enough to cut through a metal transmission tower in one strike.\"\n    }\n  ],\n  \"613\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When it is not feeling well, its mucus gets watery and the power of its Ice-type moves decreases.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its nose is always running. It sniffs the snot back up because the mucus provides the raw material for its moves.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Their snot is a barometer of health. When healthy, their snot is sticky and the power of their ice moves increases.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Their snot is a barometer of health. When healthy, their snot is sticky and the power of their ice moves increases.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its nose is always running. It sniffs the snot back up because the mucus provides the raw material for its moves.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Their snot is a barometer of health. When healthy, their snot is sticky and the power of their ice moves increases.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its nose is always running. It sniffs the snot back up because the mucus provides the raw material for its moves.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Their snot is a barometer of health. When healthy, their snot is sticky and the power of their ice moves increases.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When this Pokémon is in good health, its snot becomes thicker and stickier. It will smear its snot on anyone it doesn't like.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It sniffles before performing a move, using its frosty snot to provide an icy element to any move that needs it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Many of this species can be found along the shorelines of cold regions. If a Cubchoo lacks dangling snot, there's a chance it is sick.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When Cubchoo starts sneezing, watch out! If it spatters you with its frosty snot, you'll get frostbite.\"\n    }\n  ],\n  \"614\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It can make its breath freeze at will. Very able in the water, it swims around in northern seas and catches prey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It freezes its breath to create fangs and claws of ice to fight with. Cold northern areas are its habitat.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They love the cold seas of the north. They create pathways across the ocean waters by freezing their own breath.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They love the cold seas of the north. They create pathways across the ocean waters by freezing their own breath.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They love the cold seas of the north. They create pathways across the ocean waters by freezing their own breath.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It freezes its breath to create fangs and claws of ice to fight with. Cold northern areas are its habitat.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They love the cold seas of the north. They create pathways across the ocean waters by freezing their own breath.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It freezes its breath to create fangs and claws of ice to fight with. Cold northern areas are its habitat.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It swims through frigid seas, searching for prey. From its frozen breath, it forms icy fangs that are harder than steel.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It swims energetically through frigid seas. When it gets tired, it freezes the seawater with its breath so it can rest on the ice.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is a ferocious, carnivorous Pokémon. Once it captures its prey, it will breathe cold air onto the prey to freeze and preserve it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Feared as the Snow-White Demon in northern lands, Beartic uses its frosty claws and fangs to attack prey.\"\n    }\n  ],\n  \"615\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When its body temperature goes up, it turns into steam and vanishes. When its temperature lowers, it returns to ice.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They are born in snow clouds. They use chains made of ice crystals to capture prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They are composed of ice crystals. They capture prey with chains of ice, freezing the prey at -148° F.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They are composed of ice crystals. They capture prey with chains of ice, freezing the prey at -148° F.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They are born in snow clouds. They use chains made of ice crystals to capture prey.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They are composed of ice crystals. They capture prey with chains of ice, freezing the prey at -148 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They are born in snow clouds. They use chains made of ice crystals to capture prey.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They are composed of ice crystals. They capture prey with chains of ice, freezing the prey at -148 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With its icy chains, Cryogonal freezes those it encounters. It then takes its victims away to somewhere unknown.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When the weather gets hot, these Pokémon turn into water vapor. Cryogonal are almost never seen during summer.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Cryogonal appear during cold seasons. It is said that people and Pokémon who die on snowy mountains are reborn into these Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Cryogonal uses its chains of ice to constrict its opponents and then flash-freezes them where they stand.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Cryogonal use chains made of ice crystals to ensnare prey. They freeze their victims at -148 degrees Fahrenheit.\"\n    }\n  ],\n  \"616\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When attacked, it defends itself by closing the lid of its shell. It can spit a sticky, poisonous liquid.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It evolves when bathed in an electric-like energy along with Karrablast. The reason is still unknown.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it and Karrablast are together, and both receive electrical stimulation, they both evolve.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it and Karrablast are together, and both receive electrical stimulation, they both evolve.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When it and Karrablast are together, and both receive electrical stimulation, they both evolve.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It evolves when bathed in an electric-like energy along with Karrablast. The reason is still unknown.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When it and Karrablast are together, and both receive electrical stimulation, they both evolve.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It evolves when bathed in an electric-like energy along with Karrablast. The reason is still unknown.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When attacked, it tightly shuts the lid of its shell. This reaction fails to protect it from Karrablast, however, because they can still get into the shell.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has a strange physiology that responds to electricity. When together with Karrablast, Shelmet evolves for some reason.\"\n    }\n  ],\n  \"617\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When its body dries out, it weakens. So, to prevent dehydration, it wraps itself in many layers of thin membrane.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Having removed its heavy shell, it becomes very light and can fight with ninja-like movements.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When its body dries out, it weakens. So it wraps a membrane around itself for protection while it spits poison.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When its body dries out, it weakens. So it wraps a membrane around itself for protection while it spits poison.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Having removed its heavy shell, it becomes very light and can fight with ninja-like movements.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When its body dries out, it weakens. So, to prevent dehydration, it wraps itself in many layers of thin membrane.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Having removed its heavy shell, it becomes very light and can fight with ninja-like movements.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When its body dries out, it weakens. So, to prevent dehydration, it wraps itself in many layers of thin membrane.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It moves with blinding speed and lobs poison at foes. Featuring Accelgor as a main character is a surefire way to make a movie or comic popular.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Discarding its shell made it nimble. To keep itself from dehydrating, it wraps its body in bands of membrane.\"\n    }\n  ],\n  \"618\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its skin is very hard, so it is unhurt even if stepped on by sumo wrestlers. It smiles when transmitting electricity.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It conceals itself in the mud of the seashore. Then it waits. When prey touch it, it delivers a jolt of electricity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When its opponent can't be paralyzed, it contorts itself with unexpected speed and flops away.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When its opponent can't be paralyzed, it contorts itself with unexpected speed and flops away.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its skin is very hard, so it is unhurt even if stepped on by sumo wrestlers. It smiles when transmitting electricity.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It conceals itself in the mud of the seashore. Then it waits. When prey touch it, it delivers a jolt of electricity.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its skin is very hard, so it is unhurt even if stepped on by sumo wrestlers. It smiles when transmitting electricity.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It conceals itself in the mud of the seashore. Then it waits. When prey touch it, it delivers a jolt of electricity.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to bacteria that lived in the mud flats with it, this Pokémon developed the organs it uses to generate electricity.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"For some reason, this Pokémon smiles slightly when it emits a strong electric current from the yellow markings on its body.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It conceals itself in the mud of the seashore. Then it waits. When prey touch it, it delivers a jolt of electricity.\"\n    }\n  ],\n  \"619\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"In fights, they dominate with onslaughts of flowing, continuous attacks. With their sharp claws, they cut enemies.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They have mastered elegant combos. As they concentrate, their battle moves become swifter and more precise.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It takes pride in the speed at which it can use moves. What it loses in power, it makes up for in quantity.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It takes pride in the speed at which it can use moves. What it loses in power, it makes up for in quantity.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It takes pride in the speed at which it can use moves. What it loses in power, it makes up for in quantity.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"In fights, they dominate with onslaughts of flowing, continuous attacks. With their sharp claws, they cut enemies.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It takes pride in the speed at which it can use moves. What it loses in power, it makes up for in quantity.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In fights, they dominate with onslaughts of flowing, continuous attacks. With their sharp claws, they cut enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They can often be seen in packs in the morning, slowly moving their bodies through a series of poses.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They seclude themselves in the mountains and devote themselves to training. The form of their kicks and chops differs from pack to pack.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In one minute, a well-trained Mienfoo can chop with its arms more than 100 times.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Though small, Mienfoo's temperament is fierce. Any creature that approaches Mienfoo carelessly will be greeted with a flurry of attacks.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"In fights, they dominate with onslaughts of flowing, continuous attacks. With their sharp claws, they cut enemies.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They seclude themselves in the mountains and devote themselves to training. The form of their kicks and chops differs from pack to pack.\"\n    }\n  ],\n  \"620\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It wields the fur on its arms like a whip. Its arm attacks come with such rapidity that they cannot even be seen.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They use the long fur on their arms as a whip to strike their opponents.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Using the long fur on its arms like whips, it launches into combo attacks that, once started, no one can stop.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Using the long fur on its arms like whips, it launches into combo attacks that, once started, no one can stop.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It wields the fur on its arms like a whip. Its arm attacks come with such rapidity that they cannot even be seen.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Using the long fur on its arms like whips, it launches into combo attacks that, once started, no one can stop.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It wields the fur on its arms like a whip. Its arm attacks come with such rapidity that they cannot even be seen.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Using the long fur on its arms like whips, it launches into combo attacks that, once started, no one can stop.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It overwhelms its opponents with continuous attacks and then slowly stores up power before delivering the finishing blow.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When Mienshao lets out a bizarre wail, you're in danger. A flurry of kicks and chops too fast to see is about to be unleashed!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When Mienshao comes across a truly challenging opponent, it will lighten itself by biting off the fur on its arms.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Delivered at blinding speeds, kicks from this Pokémon can shatter massive boulders into tiny pieces.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When Mienshao lets out a bizarre wail, you're in danger. A flurry of kicks and chops too fast to see is about to be unleashed!\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Using the long fur on its arms like whips, it launches into combo attacks that, once started, no one can stop.\"\n    }\n  ],\n  \"621\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It warms its body by absorbing sunlight with its wings. When its body temperature falls, it can no longer move.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It races through narrow caves, using its sharp claws to catch prey. The skin on its face is harder than a rock.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It runs through the narrow tunnels formed by Excadrill and Onix. It uses its sharp claws to catch prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It runs through the narrow tunnels formed by Excadrill and Onix. It uses its sharp claws to catch prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It races through narrow caves, using its sharp claws to catch prey. The skin on its face is harder than a rock.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It warms its body by absorbing sunlight with its wings. When its body temperature falls, it can no longer move.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It races through narrow caves, using its sharp claws to catch prey. The skin on its face is harder than a rock.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It warms its body by absorbing sunlight with its wings. When its body temperature falls, it can no longer move.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The red skin on its face is harder than rock. In narrow caves, it squares off against its enemies and charges face-first right into them.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It infiltrates tunnels that Pokémon like Diglett and Dugtrio have dug and quietly waits for prey to pass through.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Druddigon lives in caves, but it never skips sunbathing—it won't be able to move if its body gets too cold.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Druddigon are vicious and cunning. They take up residence in nests dug out by other Pokémon, treating the stolen nests as their own lairs.\"\n    }\n  ],\n  \"622\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The energy that burns inside it enables it to move, but no one has yet been able to identify this energy.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"These Pokémon are thought to have been created by the science of an ancient and mysterious civilization.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Ancient science fashioned this Pokémon from clay. It's been active for thousands of years.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Ancient science fashioned this Pokémon from clay. It's been active for thousands of years.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The energy that burns inside it enables it to move, but no one has yet been able to identify this energy.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Ancient science fashioned this Pokémon from clay. It's been active for thousands of years.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The energy that burns inside it enables it to move, but no one has yet been able to identify this energy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ancient science fashioned this Pokémon from clay. It's been active for thousands of years.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its movements are powered by a mysterious energy. It has continued to move since ancient times, so its power may soon run out.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although ancient people apparently built it by working with clay, the source of its energy is unclear.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"They were sculpted from clay in ancient times. No one knows why, but some of them are driven to continually line up boulders.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon was created from clay. It received orders from its master many thousands of years ago, and it still follows those orders to this day.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"These Pokémon are thought to have been created by the science of an ancient and mysterious civilization.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its movements are powered by a mysterious energy. It has continued to move since ancient times, so its power may soon run out.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Ancient people apparently fashioned Golett out of clay to do their labor for them. What powers these Pokémon remains unclear.\"\n    }\n  ],\n  \"623\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It flies across the sky at Mach speeds. Removing the seal on its chest makes its internal energy go out of control.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It is said that Golurk were ordered to protect people and Pokémon by the ancient people who made them.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Golurk were created to protect people and Pokémon. They run on a mysterious energy.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Golurk were created to protect people and Pokémon. They run on a mysterious energy.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It is said that Golurk were ordered to protect people and Pokémon by the ancient people who made them.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It flies across the sky at Mach speeds. Removing the seal on its chest makes its internal energy go out of control.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It is said that Golurk were ordered to protect people and Pokémon by the ancient people who made them.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It flies across the sky at Mach speeds. Removing the seal on its chest makes its internal energy go out of control.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Some say that ancient people invented Golurk to serve as a laborer. It follows its master's orders faithfully.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When the seal on its chest is removed, it rages indiscriminately, turning the whole town around it into a mountain of rubble.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Artillery platforms built into the walls of ancient castles served as perches from which Golurk could fire energy beams.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"There's a theory that inside Golurk is a perpetual motion machine that produces limitless energy, but this belief hasn't been proven.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When the seal on its chest is removed, it rages indiscriminately. During such rampages, it can turn a whole town into a mountain of rubble.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Golurk were created by ancient people to protect both people and Pokémon. They run on a mysterious energy.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It's said that inside Golurk is a perpetual motion machine that produces energy, but the truth is not yet known.\"\n    }\n  ],\n  \"624\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Blades comprise this Pokémon's entire body. If battling dulls the blades, it sharpens them on stones by the river.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They fight at Bisharp's command. They cling to their prey and inflict damage by sinking their blades into it.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Ignoring their injuries, groups attack by sinking the blades that cover their bodies into their prey.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Ignoring their injuries, groups attack by sinking the blades that cover their bodies into their prey.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Blades comprise this Pokémon's entire body. If battling dulls the blades, it sharpens them on stones by the river.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Ignoring their injuries, groups attack by sinking the blades that cover their bodies into their prey.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Blades comprise this Pokémon's entire body. If battling dulls the blades, it sharpens them on stones by the river.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Ignoring their injuries, groups attack by sinking the blades that cover their bodies into their prey.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"After shredding its prey, it sharpens its blades on a stone by the river. Each Pawniard has its own favorite sharpening stone.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It follows Bisharp's orders to a tee when it attacks enemies. After slashing an opponent, Pawniard clangs both of its blades together.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It uses river stones to maintain the cutting edges of the blades covering its body. These sharpened blades allow it to bring down opponents.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A pack of these Pokémon forms to serve a Bisharp boss. Each Pawniard trains diligently, dreaming of one day taking the lead.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Pawniard will fearlessly challenge even powerful foes. In a pinch, it will cling to opponents and pierce them with the blades all over its body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Any chips in its blades would prove fatal for it. After each battle, it diligently maintains its blades using its favorite sharpening stone.\"\n    }\n  ],\n  \"625\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It leads a group of Pawniard. It battles to become the boss, but will be driven from the group if it loses.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Bisharp pursues prey in the company of a large group of Pawniard. Then Bisharp finishes off the prey.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This pitiless Pokémon commands a group of Pawniard to hound prey into immobility. It then moves in to finish the prey off.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This pitiless Pokémon commands a group of Pawniard to hound prey into immobility. It then moves in to finish the prey off.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This pitiless Pokémon commands a group of Pawniard to hound prey into immobility. It then moves in to finish the prey off.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Bisharp pursues prey in the company of a large group of Pawniard. Then Bisharp finishes off the prey.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This pitiless Pokémon commands a group of Pawniard to hound prey into immobility. It then moves in to finish the prey off.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Bisharp pursues prey in the company of a large group of Pawniard. Then Bisharp finishes off the prey.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"No matter how strong the Bisharp, it's said that if the blade on its head is chipped, it will retire from its position as the boss.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It leads a group of Pawniard. Bisharp doesn't even change its expression when it deals the finishing blow to an opponent.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's accompanied by a large retinue of Pawniard. Bisharp keeps a keen eye on its minions, ensuring none of them even think of double-crossing it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Violent conflicts erupt between Bisharp and Fraxure over places where sharpening stones can be found.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon commands a group of several Pawniard. Groups that are defeated in territorial disputes are absorbed by the winning side.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Bisharp mercilessly cuts its opponents to pieces with the sharp blades covering its body. It will do anything to win.\"\n    }\n  ],\n  \"626\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Their fluffy fur absorbs damage, even if they strike foes with a fierce headbutt.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They charge wildly and headbutt everything. Their headbutts have enough destructive force to derail a train.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They are known to charge so wildly that if a train were to enter their territory, they would send it flying.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They are known to charge so wildly that if a train were to enter their territory, they would send it flying.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They charge wildly and headbutt everything. Their headbutts have enough destructive force to derail a train.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Their fluffy fur absorbs damage, even if they strike foes with a fierce headbutt.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They charge wildly and headbutt everything. Their headbutts have enough destructive force to derail a train.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Their fluffy fur absorbs damage, even if they strike foes with a fierce headbutt.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"These Pokémon can crush a car with no more than a headbutt. Bouffalant with more hair on their heads hold higher positions within the herd.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Pokémon live in herds of about 20 individuals. Bouffalant that betray the herd will lose the hair on their heads for some reason.\"\n    }\n  ],\n  \"627\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They crush berries with their talons. They bravely stand up to any opponent, no matter how strong it is.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They will challenge anything, even strong opponents, without fear. Their frequent fights help them become stronger.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It stands up to massive opponents, not out of courage, but out of recklessness. But that is how it gets stronger.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It stands up to massive opponents, not out of courage, but out of recklessness. But that is how it gets stronger.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They crush berries with their talons. They bravely stand up to any opponent, no matter how strong it is.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They will challenge anything, even strong opponents, without fear. Their frequent fights help them become stronger.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They crush berries with their talons. They bravely stand up to any opponent, no matter how strong it is.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They will challenge anything, even strong opponents, without fear. Their frequent fights help them become stronger.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They pick fights indiscriminately. They grow stronger and more powerful each time they faint or are injured.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"With its sharp claws, this Pokémon pierces its prey, and then it pecks at them. Although it also consumes berries, it's a carnivore at heart.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"With its powerful legs and sturdy claws, it can crack even the hard shells of Shellder and pluck out their insides.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Known as a natural-born warrior, soon after its hatching, it will challenge its parent to a fight in order to gain their acceptance.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If it spies a strong Pokémon, Rufflet can't resist challenging it to a battle. But if Rufflet loses, it starts bawling.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A combative Pokémon, it's ready to pick a fight with anyone. It has talons that can crush hard berries.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its chick-like looks belie its hotheadedness. It challenges its parents at every opportunity, desperate to prove its strength.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They pick fights indiscriminately. They grow stronger and more powerful each time they faint or are injured.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"With its sharp claws, this Pokémon pierces its prey, and then it pecks at them. Although it also consumes berries, it's a carnivore at heart.\"\n    }\n  ],\n  \"628\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They fight for their friends without any thought about danger to themselves. One can carry a car while flying.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The more scars they have, the more respect these brave soldiers of the sky get from their peers.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"For the sake of its friends, this brave warrior of the sky will not stop battling, even if injured.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"For the sake of its friends, this brave warrior of the sky will not stop battling, even if injured.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"For the sake of its friends, this brave warrior of the sky will not stop battling, even if injured.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They fight for their friends without any thought about danger to themselves. One can carry a car while flying.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"For the sake of its friends, this brave warrior of the sky will not stop battling, even if injured.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They fight for their friends without any thought about danger to themselves. One can carry a car while flying.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"With its brave disposition, it fears nothing—not even death. Ancient Alolan people respected it, referring to it as \\\"the hero of the sky.\\\"\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It's thought that people disturbed their habitats in the past, so Braviary banded together to fight back.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The more scars it has on its front, the more heroic it's considered to be. Those with many scars on their back are mocked by the flock.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Known as \\\"the hero of the skies,\\\" this Pokémon is so proud and so brave that it will never retreat, even when it's injured.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Known for its bravery and pride, this majestic Pokémon is often seen as a motif for various kinds of emblems.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Because this Pokémon is hotheaded and belligerent, it's Corviknight that's taken the role of transportation in Galar.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Screaming a bloodcurdling battle cry, this huge and ferocious bird Pokémon goes out on the hunt. It blasts lakes with shock waves, then scoops up any prey that float to the water's surface.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The more scars they have, the more respect these brave soldiers of the sky get from their peers.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"For the sake of its friends, this brave warrior of the sky will not stop battling, even if injured.\"\n    }\n  ],\n  \"629\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its wings are too tiny to allow it to fly. As the time approaches for it to evolve, it discards the bones it was wearing.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They tend to guard their posteriors with suitable bones they have found. They pursue weak Pokémon.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Their wings are too tiny to allow them to fly. They guard their posteriors with bones that were gathered by Mandibuzz.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Their wings are too tiny to allow them to fly. They guard their posteriors with bones that were gathered by Mandibuzz.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its wings are too tiny to allow it to fly. As the time approaches for it to evolve, it discards the bones it was wearing.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Their wings are too tiny to allow them to fly. They guard their posteriors with bones that were gathered by Mandibuzz.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its wings are too tiny to allow it to fly. As the time approaches for it to evolve, it discards the bones it was wearing.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Their wings are too tiny to allow them to fly. They guard their posteriors with bones that were gathered by Mandibuzz.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It protects its plump posterior with the bones of prey it has consumed. As it grows, it replaces the bones.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It can't fly yet and must wait until its wings have developed more. Since it's still at a playful age, it hops around friskily.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Mandibuzz gives it the bones it wears. Vullaby's wings are short, so it can't fly yet, but it jumps around, dreaming of wide open skies.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its healthy appetite leads to visible growth spurts. It often has to replace the bones it wears as its size increases.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It wears a bone to protect its rear. It often squabbles with others of its kind over particularly comfy bones.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Vullaby grow quickly. Bones that have gotten too small for older Vullaby to wear often get passed down to younger ones in the nest.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They tend to guard their posteriors with suitable bones they have found. They pursue weak Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its healthy appetite leads to visible growth spurts. It often has to replace the bones it wears as its size increases.\"\n    }\n  ],\n  \"630\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It makes a nest out of bones it finds. It grabs weakened prey in its talons and hauls it to its nest of bones.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Watching from the sky, they swoop to strike weakened Pokémon on the ground. They decorate themselves with bones.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"They fly in circles around the sky. When they spot prey, they attack and carry it back to their nest with ease.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"They fly in circles around the sky. When they spot prey, they attack and carry it back to their nest with ease.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They fly in circles around the sky. When they spot prey, they attack and carry it back to their nest with ease.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Watching from the sky, they swoop to strike weakened Pokémon on the ground. They decorate themselves with bones.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They fly in circles around the sky. When they spot prey, they attack and carry it back to their nest with ease.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Watching from the sky, they swoop to strike weakened Pokémon on the ground. They decorate themselves with bones.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They adorn themselves beautifully with bones. This is supposedly an effort to attract males, but no male Mandibuzz have ever been found.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It circles in the sky, keeping a keen eye out for Pokémon in a weakened state. Its choicest food is Cubone.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It skillfully arranges the bones of its prey to construct its nest. Most of the bones are Cubone.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's always searching for food for Vullaby. When it finds a weak Pokémon, Mandibuzz swoops it right off to its nest.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Although it's a bit of a ruffian, this Pokémon will take lost Vullaby under its wing and care for them till they're ready to leave the nest.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They adorn themselves with bones. There seem to be fashion trends among them, as different bones come into and fall out of popularity.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's always searching for food for Vullaby. When it finds a weak Pokémon, Mandibuzz swoops it right off to its nest.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Watching from the sky, they attack weakened prey on the ground. They have a habit of decorating themselves with bones.\"\n    }\n  ],\n  \"631\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It breathes through a hole in its tail while it burns with an internal fire. Durant is its prey.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Using their very hot, flame-covered tongues, they burn through Durant's steel bodies and consume their insides.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It draws in air through its tail, transforms it into fire, and uses it like a tongue. It melts Durant and eats them.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It draws in air through its tail, transforms it into fire, and uses it like a tongue. It melts Durant and eats them.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Using their very hot, flame-covered tongues, they burn through Durant's steel bodies and consume their insides.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It draws in air through its tail, transforms it into fire, and uses it like a tongue. It melts Durant and eats them.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Using their very hot, flame-covered tongues, they burn through Durant's steel bodies and consume their insides.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It draws in air through its tail, transforms it into fire, and uses it like a tongue. It melts Durant and eats them.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"There's a hole in its tail that allows it to draw in the air it needs to keep its fire burning. If the hole gets blocked, this Pokémon will fall ill.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A flame serves as its tongue, melting through the hard shell of Durant so that Heatmor can devour their insides.\"\n    }\n  ],\n  \"632\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"They attack in groups, covering themselves in steel armor to protect themselves from Heatmor.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Durant dig nests in mountains. They build their complicated, interconnected tunnels into mazes.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Individuals each play different roles in driving Heatmor, their natural predator, away from their colony.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Individuals each play different roles in driving Heatmor, their natural predator, away from their colony.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Individuals each play different roles in driving Heatmor, their natural predator, away from their colony.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They attack in groups, covering themselves in steel armor to protect themselves from Heatmor.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Individuals each play different roles in driving Heatmor, their natural predator, away from their colony.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They attack in groups, covering themselves in steel armor to protect themselves from Heatmor.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"They lay their eggs deep inside their nests. When attacked by Heatmor, they retaliate using their massive mandibles.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With their large mandibles, these Pokémon can crunch their way through rock. They work together to protect their eggs from Sandaconda.\"\n    }\n  ],\n  \"633\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It tends to bite everything, and it is not a picky eater. Approaching it carelessly is dangerous.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"They cannot see, so they tackle and bite to learn about their surroundings. Their bodies are covered in wounds.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Lacking sight, it's unaware of its surroundings, so it bumps into things and eats anything that moves.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Lacking sight, it's unaware of its surroundings, so it bumps into things and eats anything that moves.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They cannot see, so they tackle and bite to learn about their surroundings. Their bodies are covered in wounds.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Lacking sight, it's unaware of its surroundings, so it bumps into things and eats anything that moves.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They cannot see, so they tackle and bite to learn about their surroundings. Their bodies are covered in wounds.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Lacking sight, it's unaware of its surroundings, so it bumps into things and eats anything that moves.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it encounters something, its first urge is usually to bite it. If it likes what it tastes, it will commit the associated scent to memory.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Because it can't see, this Pokémon is constantly biting at everything it touches, trying to keep track of its surroundings.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It can't see, so its first approach to examining things is to bite them. You will be covered in wounds until a Deino warms up to you.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It nests deep inside a cave. Food there is scarce, so Deino will sink its teeth into anything that moves and attempt to eat it.\"\n    }\n  ],\n  \"634\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"After it has eaten up all the food in its territory, it moves to another area. Its two heads do not get along.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Since their two heads do not get along and compete with each other for food, they always eat too much.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The two heads do not get along. Whichever head eats more than the other gets to be the leader.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The two heads do not get along. Whichever head eats more than the other gets to be the leader.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The two heads do not get along. Whichever head eats more than the other gets to be the leader.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"After it has eaten up all the food in its territory, it moves to another area. Its two heads do not get along.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The two heads do not get along. Whichever head eats more than the other gets to be the leader.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"After it has eaten up all the food in its territory, it moves to another area. Its two heads do not get along.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"While hunting for prey, Zweilous wanders its territory, its two heads often bickering over which way to go.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Their two heads will fight each other over a single piece of food. Zweilous are covered in scars even without battling others.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The two heads do not get along at all. If you don't give each head the same amount of attention, they'll begin fighting out of jealousy.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The two heads have different likes and dislikes. Because the heads fight with each other, Zweilous gets stronger without needing to rely on others.\"\n    }\n  ],\n  \"635\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This brutal Pokémon travels the skies on its six wings. Anything that moves seems like a foe to it, triggering its attack.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The heads on their arms do not have brains. They use all three heads to consume and destroy everything.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It responds to movement by attacking. This scary, three-headed Pokémon devours everything in its path!\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It responds to movement by attacking. This scary, three-headed Pokémon devours everything in its path!\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The heads on their arms do not have brains. They use all three heads to consume and destroy everything.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It responds to movement by attacking. This scary, three-headed Pokémon devours everything in its path!\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The heads on their arms do not have brains. They use all three heads to consume and destroy everything.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It responds to movement by attacking. This scary, three-headed Pokémon devours everything in its path!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"There are a slew of stories about villages that were destroyed by Hydreigon. It bites anything that moves.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The three heads take turns sinking their teeth into the opponent. Their attacks won't slow until their target goes down.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Only the central head has a brain. It is very intelligent, but it thinks only of destruction.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's said that Hydreigon grew ferocious because people in times long past loathed it, considering it to be evil incarnate and attacking it relentlessly.\"\n    }\n  ],\n  \"636\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This Pokémon was believed to have been born from the sun. When it evolves, its entire body is engulfed in flames.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The base of volcanoes is where they make their homes. They shoot fire from their five horns to repel attacking enemies.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Said to have been born from the sun, it spews fire from its horns and encases itself in a cocoon of fire when it evolves.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Said to have been born from the sun, it spews fire from its horns and encases itself in a cocoon of fire when it evolves.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Said to have been born from the sun, it spews fire from its horns and encases itself in a cocoon of fire when it evolves.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The base of volcanoes is where they make their homes. They shoot fire from their five horns to repel attacking enemies.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Said to have been born from the sun, it spews fire from its horns and encases itself in a cocoon of fire when it evolves.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The base of volcanoes is where they make their homes. They shoot fire from their five horns to repel attacking enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When battling opponents, it sprays fire from its five horns. The max temperature of the flames can reach nearly 5,500 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It protects itself with flame. Long years ago, people believed Larvesta had a nest on the sun.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The people of ancient times believed that Larvesta fell from the sun.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Larvesta's body is warm all over. It spouts fire from the tips of its horns to intimidate predators and scare prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon was called the Larva That Stole the Sun. The fire Larvesta spouts from its horns can cut right through a sheet of iron.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In ancient times, Larvesta was worshiped as the emissary of the sun. However, it was also viewed as a burden since it often caused forest fires.\"\n    }\n  ],\n  \"637\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"When volcanic ash darkened the atmosphere, it is said that Volcarona's fire provided a replacement for the sun.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"A sea of fire engulfs the surroundings of their battles, since they use their six wings to scatter their ember scales.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Thought to be an embodiment of the sun, it appeared during a bitterly cold winter and saved Pokémon from freezing.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Thought to be an embodiment of the sun, it appeared during a bitterly cold winter and saved Pokémon from freezing.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A sea of fire engulfs the surroundings of their battles, since they use their six wings to scatter their ember scales.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When volcanic ash darkened the atmosphere, it is said that Volcarona's fire provided a replacement for the sun.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"A sea of fire engulfs the surroundings of their battles, since they use their six wings to scatter their ember scales.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When volcanic ash darkened the atmosphere, it is said that Volcarona's fire provided a replacement for the sun.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"As it flies, it scatters its flaming scales. It was feared by ancient people, who referred to it as \\\"the rage of the sun.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"According to legends, it was hatched from a flaming cocoon to save people and Pokémon that were suffering from the cold.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Volcarona scatters burning scales. Some say it does this to start fires. Others say it's trying to rescue those that suffer in the cold.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon emerges from a cocoon formed of raging flames. Ancient murals depict Volcarona as a deity of fire.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its burning body causes it to be unpopular in hot parts of the world, but in cold ones, Volcarona is revered as an embodiment of the sun.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon scatters burning scales. Most of the danger of these scales is not in their heat—it's in the way they rob the surrounding air of oxygen.\"\n    }\n  ],\n  \"638\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This legendary Pokémon battled against humans to protect Pokémon. Its personality is calm and composed.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It has a body and heart of steel. Its glare is sufficient to make even an unruly Pokémon obey it.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"It has a body and heart of steel. It worked with its allies to punish people when they hurt Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"It has a body and heart of steel. It worked with its allies to punish people when they hurt Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a body and heart of steel. Its glare is sufficient to make even an unruly Pokémon obey it.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has a body and heart of steel. It worked with its allies to punish people when they hurt Pokémon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It has a body and heart of steel. Its glare is sufficient to make even an unruly Pokémon obey it.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It has a body and heart of steel. It worked with its allies to punish people when they hurt Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon appears in a legend alongside Terrakion and Virizion, fighting against humans in defense of the Unova region's Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"From the moment it's born, this Pokémon radiates the air of a leader. Its presence will calm even vicious foes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has a body and heart of steel. One glare from Cobalion can bring even the most ferocious of Pokémon to heel.\"\n    }\n  ],\n  \"639\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This Pokémon came to the defense of Pokémon that had lost their homes in a war among humans.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its charge is strong enough to break through a giant castle wall in one blow. This Pokémon is spoken of in legends.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Spoken of in legend, this Pokémon used its phenomenal power to destroy a castle in its effort to protect Pokémon.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Spoken of in legend, this Pokémon used its phenomenal power to destroy a castle in its effort to protect Pokémon.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its charge is strong enough to break through a giant castle wall in one blow. This Pokémon is spoken of in legends.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Spoken of in legend, this Pokémon used its phenomenal power to destroy a castle in its effort to protect Pokémon.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its charge is strong enough to break through a giant castle wall in one blow. This Pokémon is spoken of in legends.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Spoken of in legend, this Pokémon used its phenomenal power to destroy a castle in its effort to protect Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has phenomenal power. It will mercilessly crush anyone or anything that bullies small Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In Unovan legend, Terrakion battled against humans in an effort to protect other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It charges with enough force to break through a giant castle wall in one blow. This Pokémon is spoken of in legends.\"\n    }\n  ],\n  \"640\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This Pokémon fought humans in order to protect its friends. Legends about it continue to be passed down.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Its head sprouts horns as sharp as blades. Using whirlwind-like movements, it confounds and swiftly cuts opponents.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"Legends say this Pokémon confounded opponents with its swift movements.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"Legends say this Pokémon confounded opponents with its swift movements.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its head sprouts horns as sharp as blades. Using whirlwind-like movements, it confounds and swiftly cuts opponents.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Legends say this Pokémon confounded opponents with its swift movements.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its head sprouts horns as sharp as blades. Using whirlwind-like movements, it confounds and swiftly cuts opponents.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Legends say this Pokémon confounded opponents with its swift movements.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A legend tells of this Pokémon working together with Cobalion and Terrakion to protect the Pokémon of the Unova region.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It darts around opponents with a flurry of quick movements, slicing them up with its horns.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It confounds opponents with its quick movement, darting around them like a whirlwind as it carves them up mercilessly with its sharp horns.\"\n    }\n  ],\n  \"641\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"The lower half of its body is wrapped in a cloud of energy. It zooms through the sky at 200 mph.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Tornadus expels massive energy from its tail, causing severe storms. Its power is great enough to blow houses away.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"In every direction it flies, creating winds so powerful, they blow everything away.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"In every direction it flies, creating winds so powerful, they blow everything away.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The lower half of its body is wrapped in a cloud of energy. It zooms through the sky at 200 mph.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Tornadus expels massive energy from its tail, causing severe storms. Its power is great enough to blow houses away.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The lower half of its body is wrapped in a cloud of energy. It zooms through the sky at 200 mph.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Tornadus expels massive energy from its tail, causing severe storms. Its power is great enough to blow houses away.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"This storm-stirring Pokémon is said to cause the seasons to turn by whipping up the air. I suspect its humanlike form to be a false one.\"\n    }\n  ],\n  \"642\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Countless charred remains mar the landscape of places through which Thundurus has passed.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The spikes on its tail discharge immense bolts of lightning. It flies around the Unova region firing off lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"As it flies around, it shoots lightning all over the place and causes forest fires. It is therefore disliked.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"As it flies around, it shoots lightning all over the place and causes forest fires. It is therefore disliked.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The spikes on its tail discharge immense bolts of lightning. It flies around the Unova region firing off lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"As it flies around, it shoots lightning all over the place and causes forest fires. It is therefore disliked.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The spikes on its tail discharge immense bolts of lightning. It flies around the Unova region firing off lightning bolts.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"As it flies around, it shoots lightning all over the place and causes forest fires. It is therefore disliked.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"They say this wielder of electricity has waged war with its nemesis, Tornadus, since time immemorial. The lightning bolts it hurls pierce the very earth and enrich the soil.\"\n    }\n  ],\n  \"643\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"This Pokémon appears in legends. It sends flames into the air from its tail, burning up everything around it.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"When Reshiram's tail flares, the heat energy moves the atmosphere and changes the world's weather.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This legendary Pokémon can scorch the world with fire. It helps those who want to build a world of truth.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This legendary Pokémon can scorch the world with fire. It helps those who want to build a world of truth.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This legendary Pokémon can scorch the world with fire. It helps those who want to build a world of truth.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When Reshiram's tail flares, the heat energy moves the atmosphere and changes the world's weather.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This legendary Pokémon can scorch the world with fire. It helps those who want to build a world of truth.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When Reshiram's tail flares, the heat energy moves the atmosphere and changes the world's weather.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Flames spew from its tail as it flies through the sky like a jet airplane. It's said that this Pokémon will scorch the world.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"According to myth, if people ignore truth and let themselves become consumed by greed, Reshiram will arrive to burn their kingdoms down.\"\n    }\n  ],\n  \"644\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Concealing itself in lightning clouds, it flies throughout the Unova region. It creates electricity in its tail.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"This Pokémon appears in legends. In its tail, it has a giant generator that creates electricity.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This legendary Pokémon can scorch the world with lightning. It assists those who want to build an ideal world.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This legendary Pokémon can scorch the world with lightning. It assists those who want to build an ideal world.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This legendary Pokémon can scorch the world with lightning. It assists those who want to build an ideal world.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Concealing itself in lightning clouds, it flies throughout the Unova region. It creates electricity in its tail.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This legendary Pokémon can scorch the world with lightning. It assists those who want to build an ideal world.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Concealing itself in lightning clouds, it flies throughout the Unova region. It creates electricity in its tail.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When the interior part of its tail spins like a motor, Zekrom can generate many bolts of lightning to blast its surroundings.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Mythology tells us that if people lose the righteousness in their hearts, their kingdoms will be razed by Zekrom's lightning.\"\n    }\n  ],\n  \"645\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Lands visited by Landorus grant such bountiful crops that it has been hailed as \\\"The Guardian of the Fields.\\\"\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"The energy that comes pouring from its tail increases the nutrition in the soil, making crops grow to great size.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"From the forces of lightning and wind, it creates energy to give nutrients to the soil and make the land abundant.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"From the forces of lightning and wind, it creates energy to give nutrients to the soil and make the land abundant.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Lands visited by Landorus grant such bountiful crops that it has been hailed as \\\"The Guardian of the Fields.\\\"\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"From the forces of lightning and wind, it creates energy to give nutrients to the soil and make the land abundant.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Lands visited by Landorus grant such bountiful crops that it has been hailed as \\\"The Guardian of the Fields.\\\"\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"From the forces of lightning and wind, it creates energy to give nutrients to the soil and make the land abundant.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"When the incarnations of wind and of lightning clash, Landorus arrives to quell the conflict. After the tempests and thunderbolts abate, the land is sure to be blessed with bountiful harvests.\"\n    }\n  ],\n  \"646\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"It generates a powerful, freezing energy inside itself, but its body became frozen when the energy leaked out.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It can produce ultracold air. Its body is frozen.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This legendary ice Pokémon waits for a hero to fill in the missing parts of its body with truth or ideals.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This legendary ice Pokémon waits for a hero to fill in the missing parts of its body with truth or ideals.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This legendary ice Pokémon waits for a hero to fill in the missing parts of its body with truth or ideals.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It generates a powerful, freezing energy inside itself, but its body became frozen when the energy leaked out.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This legendary ice Pokémon waits for a hero to fill in the missing parts of its body with truth or ideals.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It generates a powerful, freezing energy inside itself, but its body became frozen when the energy leaked out.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Dwelling within it is a power even greater than that of Reshiram or Zekrom, but the extreme cold keeps that power bound.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It appears that this Pokémon uses its powers over ice to freeze its own body in order to stabilize its cellular structure.\"\n    }\n  ],\n  \"647\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"By blasting water from its hooves, it can glide across water. It excels at using leg moves while battling.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"It crosses the world, running over the surfaces of oceans and rivers. It appears at scenic waterfronts.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"When it is resolute, its body fills with power and it becomes swifter. Its jumps are then too fast to follow.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"When it is resolute, its body fills with power and it becomes swifter. Its jumps are then too fast to follow.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It crosses the world, running over the surfaces of oceans and rivers. It appears at scenic waterfronts.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it is resolute, its body fills with power and it becomes swifter. Its jumps are then too fast to follow.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It crosses the world, running over the surfaces of oceans and rivers. It appears at scenic waterfronts.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it is resolute, its body fills with power and it becomes swifter. Its jumps are then too fast to follow.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Cobalion, Terrakion, and Virizion taught this Pokémon how to fight. It dashes across the world, seeking more opportunities to further its training.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They say that Keldeo must survive harsh battles and fully develop the horn on its forehead before this Pokémon's true power will awaken.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"By shooting water from its hooves, Keldeo can travel across the water's surface as if skating. It's skilled at using kicking moves in battle.\"\n    }\n  ],\n  \"648\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Its melodies are sung with a special vocalization method that can control the feelings of those who hear it.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"Many famous songs have been inspired by the melodies that Meloetta plays.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"The melodies sung by Meloetta have the power to make Pokémon that hear them happy or sad.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"The melodies sung by Meloetta have the power to make Pokémon that hear them happy or sad.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The melodies sung by Meloetta have the power to make Pokémon that hear them happy or sad.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its melodies are sung with a special vocalization method that can control the feelings of those who hear it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The melodies sung by Meloetta have the power to make Pokémon that hear them happy or sad.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its melodies are sung with a special vocalization method that can control the feelings of those who hear it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Sung using a special vocalization technique, Meloetta's songs can manipulate the emotions of those who hear them.\"\n    }\n  ],\n  \"649\": [\n    {\n      \"version_id\": \"Black\",\n      \"flavor_text\": \"Over 300 million years ago, it was feared as the strongest of hunters. It has been modified by Team Plasma.\"\n    },\n    {\n      \"version_id\": \"White\",\n      \"flavor_text\": \"This ancient bug Pokémon was altered by Team Plasma. They upgraded the cannon on its back.\"\n    },\n    {\n      \"version_id\": \"Black 2\",\n      \"flavor_text\": \"This Pokémon existed 300 million years ago. Team Plasma altered it and attached a cannon to its back.\"\n    },\n    {\n      \"version_id\": \"White 2\",\n      \"flavor_text\": \"This Pokémon existed 300 million years ago. Team Plasma altered it and attached a cannon to its back.\"\n    },\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This ancient bug Pokémon was altered by Team Plasma. They upgraded the cannon on its back.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This Pokémon existed 300 million years ago. Team Plasma altered it and attached a cannon to its back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This ancient bug Pokémon was altered by Team Plasma. They upgraded the cannon on its back.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This Pokémon existed 300 million years ago. Team Plasma altered it and attached a cannon to its back.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This bug Pokémon of the Paleozoic era was revived by a certain organization, which also upgraded the cannon on Genesect's back.\"\n    }\n  ],\n  \"650\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The quills on its head are usually soft. When it flexes them, the points become so hard and sharp that they can pierce rock.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Such a thick shell of wood covers its head and back that even a direct hit from a truck wouldn't faze it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The quills on its head are usually soft. When it flexes them, the points become so hard and sharp that they can pierce rock.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Such a thick shell of wood covers its head and back that even a direct hit from a truck wouldn't faze it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When Chespin tenses up just before landing a headbutt, the spikes on its head sharpen to points, piercing the enemy's body on contact.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Eating lots of berries makes the bark shell that covers Chespin's head and body grow sturdier.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The quills on its head are usually soft. When it flexes them, the points become so hard and sharp that they can pierce rock.\"\n    }\n  ],\n  \"651\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It relies on its sturdy shell to deflect predators' attacks. It counterattacks with its sharp quills.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They strengthen their lower bodies by running into one another. They are very kind and won't start fights.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It relies on its sturdy shell to deflect predators' attacks. It counterattacks with its sharp quills.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They strengthen their lower bodies by running into one another. They are very kind and won't start fights.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's protected by a sturdy shell. The shell is also very heavy, which naturally strengthens Quilladin's lower body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can send a trailer flying with a tackle. It's numb to pain, so even violent collisions don't faze it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They strengthen their lower bodies by running into one another. They are very kind and won't start fights.\"\n    }\n  ],\n  \"652\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its Tackle is forceful enough to flip a 50-ton tank. It shields its allies from danger with its own body.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it takes a defensive posture with its fists guarding its face, it could withstand a bomb blast.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its Tackle is forceful enough to flip a 50-ton tank. It shields its allies from danger with its own body.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it takes a defensive posture with its fists guarding its face, it could withstand a bomb blast.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When its allies are in trouble, Chesnaught creates a shield with its arms and uses its own body to block attacks.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its gentle disposition would have it avoid conflict, but it gives opponents a thrashing with its thorned fists when the situation calls for it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its tackle is forceful enough to flip a 50-ton tank. It shields its allies from danger with its own body.\"\n    }\n  ],\n  \"653\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Eating a twig fills it with energy, and its roomy ears give vent to air hotter than 390 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"As it walks, it munches on a twig in place of a snack. It intimidates opponents by puffing hot air out of its ears.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Eating a twig fills it with energy, and its roomy ears give vent to air hotter than 390 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"As it walks, it munches on a twig in place of a snack. It intimidates opponents by puffing hot air out of its ears.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon gets worked up easily. Its body can also overheat, so it uses its ears to dissipate the heat and calm down.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Twigs make for Fennekin's snacks. When it nibbles on twigs, it finds the courage to face strong foes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Eating a twig fills it with energy, and its roomy ears give vent to air hotter than 390 degrees Fahrenheit.\"\n    }\n  ],\n  \"654\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It has a twig stuck in its tail. With friction from its tail fur, it sets the twig on fire and launches into battle.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When the twig is plucked from its tail, friction sets the twig alight. The flame is used to send signals to its allies.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It has a twig stuck in its tail. With friction from its tail fur, it sets the twig on fire and launches into battle.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When the twig is plucked from its tail, friction sets the twig alight. The flame is used to send signals to its allies.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It ignites the twig from its tail and waves the twig around to signal its allies. To indicate danger, it draws circles in the air with the twig's flame.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Braixen's branch ignites as it's pulled from the Pokémon's tail. Braixen then uses the flame to spark powerful attacks.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It keeps a twig in its tail. Using friction from its tail fur, it sets the twig on fire and launches into battle.\"\n    }\n  ],\n  \"655\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It gazes into the flame at the tip of its branch to achieve a focused state, which allows it to see into the future.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Using psychic power, it generates a fiery vortex of 5,400 degrees Fahrenheit, incinerating foes swept into this whirl of flame.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It gazes into the flame at the tip of its branch to achieve a focused state, which allows it to see into the future.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Using psychic power, it generates a fiery vortex of 5,400 degrees Fahrenheit, incinerating foes swept into this whirl of flame.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It leaves burn marks in the ground with the flame at the tip of its wand. Long ago, people used the shapes of these burn marks for divination.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It controls flames telekinetically, trapping its foes in a fiery vortex surpassing 5,400 degrees Fahrenheit and burning them to a crisp.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Using psychic power, it generates a fiery vortex of 5,400 degrees Fahrenheit, incinerating foes swept into this whirl of flame.\"\n    }\n  ],\n  \"656\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It secretes flexible bubbles from its chest and back. The bubbles reduce the damage it would otherwise take when attacked.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It protects its skin by covering its body in delicate bubbles. Beneath its happy-go-lucky air, it keeps a watchful eye on its surroundings.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It secretes flexible bubbles from its chest and back. The bubbles reduce the damage it would otherwise take when attacked.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It protects its skin by covering its body in delicate bubbles. Beneath its happy-go-lucky air, it keeps a watchful eye on its surroundings.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its happy-go-lucky look is an act intended to fool its enemies. It will suddenly drop the facade and overwhelm its foes with its blinding speed.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It utilizes its extraordinary jumping abilities to flummox its foes, throwing springy bubbles at them from above their heads.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It protects its skin by covering its body in delicate bubbles. Beneath its happy-go-lucky air, it keeps a watchful eye on its surroundings.\"\n    }\n  ],\n  \"657\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can throw bubble-covered pebbles with precise control, hitting empty cans up to a hundred feet away.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its swiftness is unparalleled. It can scale a tower of more than 2,000 feet in a minute's time.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It can throw bubble-covered pebbles with precise control, hitting empty cans up to a hundred feet away.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its swiftness is unparalleled. It can scale a tower of more than 2,000 feet in a minute's time.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It excels at devising battle strategies that make use of the terrain, and it never misses its mark when throwing bubble-covered pebbles.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The tips of its fingers and toes stick firmly to vertical surfaces. Frogadier can scale skyscrapers with ease.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its swiftness is unparalleled. It can scale a tower of more than 2,000 feet in a minute's time.\"\n    }\n  ],\n  \"658\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It creates throwing stars out of compressed water. When it spins them and throws them at high speed, these stars can split metal in two.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It appears and vanishes with a ninja's grace. It toys with its enemies using swift movements, while slicing them with throwing stars of sharpest water.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It creates throwing stars out of compressed water. When it spins them and throws them at high speed, these stars can split metal in two.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It appears and vanishes with a ninja's grace. It toys with its enemies using swift movements, while slicing them with throwing stars of sharpest water.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The movement of air against the long tongue Greninja keeps wrapped around its neck allows it to sense enemies it can't see.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It makes shuriken out of mucus excreted from its thighs. These shuriken can cut cleanly through steel cables.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It creates throwing stars out of compressed water. When it spins them and throws them at high speed, these stars can split metal in two.\"\n    }\n  ],\n  \"659\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They use their large ears to dig burrows. They will dig the whole night through.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has ears like shovels. Digging holes strengthens its ears so much that they can sever thick roots effortlessly.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They use their large ears to dig burrows. They will dig the whole night through.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It has ears like shovels. Digging holes strengthens its ears so much that they can sever thick roots effortlessly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It excels at digging holes. Using its ears, it can dig a nest 33 feet deep in one night.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's very sensitive to danger. The sound of Corviknight's flapping will have Bunnelby digging a hole to hide underground in moments.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They use their large ears to dig burrows. They will dig the whole night through without rest.\"\n    }\n  ],\n  \"660\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"With their powerful ears, they can heft boulders of a ton or more with ease. They can be a big help at construction sites.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"As powerful as an excavator, its ears can reduce dense bedrock to rubble. When it's finished digging, it lounges lazily.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"With their powerful ears, they can heft boulders of a ton or more with ease. They can be a big help at construction sites.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"As powerful as an excavator, its ears can reduce dense bedrock to rubble. When it's finished digging, it lounges lazily.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With power equal to an excavator, it can dig through dense bedrock. It's a huge help during tunnel construction.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The fur on its belly retains heat exceptionally well. People used to make heavy winter clothing from fur shed by this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"With their powerful ears, they can heft boulders of a ton or more with ease. They can be a big help at construction sites.\"\n    }\n  ],\n  \"661\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"These friendly Pokémon send signals to one another with beautiful chirps and tail-feather movements.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Despite the beauty of its lilting voice, it's merciless to intruders that enter its territory.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"These friendly Pokémon send signals to one another with beautiful chirps and tail-feather movements.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Despite the beauty of its lilting voice, it's merciless to intruders that enter its territory.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This amiable Pokémon is easy to train. But when battle is joined, it shows its ferocious side.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When it's excited, its temperature can double, spiking hormone production in its body.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"While it's an amiable Pokémon, if you touch it unexpectedly, it will heat up its body in an instant, and you'll be burned.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its body is always warm. Trainers who live in cold areas apparently sleep with it in their bed.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its melodious cries are actually warnings. Fletchling will mercilessly peck at anything that enters its territory.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When this Pokémon gets excited, its body temperature increases sharply. If you touch a Fletchling with bare hands, you might get burned.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is normally calm, but once it enters battle, its hormonal balance changes and it becomes aggressive.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Fletchling can be found in both rural and urban areas. They once had a huge territorial dispute with Squawkabilly. Fights broke out all over town.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Despite the beauty of its lilting voice, it's merciless to intruders that enter its territory.\"\n    }\n  ],\n  \"662\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"From its beak, it expels embers that set the tall grass on fire. Then it pounces on the bewildered prey that pop out of the grass.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The hotter the flame sac on its belly, the faster it can fly, but it takes some time to get the fire going.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"From its beak, it expels embers that set the tall grass on fire. Then it pounces on the bewildered prey that pop out of the grass.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The hotter the flame sac on its belly, the faster it can fly, but it takes some time to get the fire going.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"From its beak, it fires embers at its prey. Once it has caught them, it grills them at high heat before feasting upon them.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It will not tolerate other Fletchinder entering its territory, which has a radius of several miles.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It scatters embers in the tall grass. Then bug Pokémon, frightened by the flames, come flying out, and Fletchinder gobbles them up.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its speed right after takeoff already puts it in the top speed class of all bird Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Fletchinder launches embers into the den of its prey. When the prey comes leaping out, Fletchinder's sharp talons finish it off.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Fletchinder are exceedingly territorial and aggressive. These Pokémon fight among themselves over feeding grounds.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Fletchinder scatters embers in tall grass where bug Pokémon might be hiding and then catches them as they come leaping out.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its territory has a radius of just over a mile. If any bird Pokémon should enter, it will show them no mercy.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The hotter the flame sac in its belly, the faster it can fly, but it takes some time to get the fire going.\"\n    }\n  ],\n  \"663\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"In the fever of an exciting battle, it showers embers from the gaps between its feathers and takes to the air.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When attacking prey, it can reach speeds of up to 310 mph. It finishes its prey off with a colossal kick.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In the fever of an exciting battle, it showers embers from the gaps between its feathers and takes to the air.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When attacking prey, it can reach speeds of up to 310 mph. It finishes its prey off with a colossal kick.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its favorite foods are Wingull and Pikipek. It attacks with a powerful kick and grasps them firmly in its talons.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It zooms directly at its prey at flight speeds of close to 310 mph, while fiery embers scatter from gaps in its feathers.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its tough wings don't allow fire to pass through them. A long time ago, firefighters' outfits were made from Talonflame wings.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Bird Pokémon make up most of its diet. It approaches at high speeds and smacks them down to the ground with its powerful kick.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Talonflame mainly preys upon other bird Pokémon. To intimidate opponents, it sends embers spewing from gaps between its feathers.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Talonflame dives toward prey at speeds of up to 310 mph and assaults them with powerful kicks, giving the prey no chance to escape.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has top-notch flying capabilities. It flies around easily, even while carrying prey that weighs more than 220 lbs.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it gets excited, it vents sparks from the gaps between its feathers. These unburnable feathers are used as a fireproof material.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"In the fever of an exciting battle, it showers embers from the gaps between its feathers as it flies.\"\n    }\n  ],\n  \"664\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When under attack from bird Pokémon, it spews a poisonous black powder that causes paralysis on contact.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The powder that covers its body regulates its temperature, so it can live in any region or climate.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When under attack from bird Pokémon, it spews a poisonous black powder that causes paralysis on contact.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The powder that covers its body regulates its temperature, so it can live in any region or climate.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Any poison this Pokémon takes in is converted into a black powder and secreted. That's why Scatterbug can eat poisonous leaves and roots.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon scatters poisonous powder to repel enemies. It will eat different plants depending on where it lives.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The powder that covers its body regulates its temperature, so it can live in any region or climate.\"\n    }\n  ],\n  \"665\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lives hidden within thicket shadows. When predators attack, it quickly bristles the fur covering its body in an effort to threaten them.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The beaks of bird Pokémon can't begin to scratch its stalwart body. To defend itself, it spews powder.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It lives hidden within thicket shadows. When predators attack, it quickly bristles the fur covering its body in an effort to threaten them.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The beaks of bird Pokémon can't begin to scratch its stalwart body. To defend itself, it spews powder.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If Rufflet attacks this Pokémon by pecking at it, it will retaliate with its sharp fur and poisonous black powder.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Spewpa doesn't live in a fixed location. It roams where it pleases across the fields and mountains, building up the energy it needs to evolve.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It lives hidden within thicket shadows. When predators attack, it bristles the fur covering its body in an effort to threaten them.\"\n    }\n  ],\n  \"666\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Vivillon with many different patterns are found all over the world. These patterns are affected by the climate of their habitat.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The patterns on this Pokémon's wings depend on the climate and topography of its habitat. It scatters colorful scales.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Vivillon with many different patterns are found all over the world. These patterns are affected by the climate of their habitat.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The patterns on this Pokémon's wings depend on the climate and topography of its habitat. It scatters colorful scales.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The patterns on this Pokémon depend on the climate and topography of the land it was born in. This form is from frigid lands.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon was born in frigid lands. It scatters colorful, toxic scales from its wings during battle.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The patterns on this Pokémon depend on the climate and topography of the land it was born in. This form is from frigid lands.\"\n    }\n  ],\n  \"667\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The stronger the opponent it faces, the more heat surges from its mane and the more power flows through its body.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They set off on their own from their pride and live by themselves to become stronger. These hot-blooded Pokémon are quick to fight.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The stronger the opponent it faces, the more heat surges from its mane and the more power flows through its body.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They set off on their own from their pride and live by themselves to become stronger. These hot-blooded Pokémon are quick to fight.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When they're young, they live with a pride. Once they're able to hunt prey on their own, they're kicked out and have to make their own way.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This hot-blooded Pokémon is filled with curiosity. When it gets angry or starts fighting, its short mane gets hot.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When Litleo are young, female Pyroar will teach them how to hunt. Once the Litleo mature, they will leave the pride and set out on their own.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The more a Litleo trains its body and spirit by battling mighty enemies, the hotter its mane will grow.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They set off on their own from their pride and live by themselves to become stronger. These hot-blooded Pokémon are quick to fight.\"\n    }\n  ],\n  \"668\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It flutters around fields of flowers and cares for flowers that are starting to wilt. It draws out the hidden power of flowers to battle.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When the flowers of a well-tended flower bed bloom, it appears and celebrates with an elegant dance.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It flutters around fields of flowers and cares for flowers that are starting to wilt. It draws out the hidden power of flowers to battle.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When the flowers of a well-tended flower bed bloom, it appears and celebrates with an elegant dance.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It raises flowers and uses them as weapons. The more gorgeous the blossom, the more power it contains.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It gives its own power to flowers, pouring its heart into caring for them. Floette never forgives anyone who messes up a flower bed.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon draws forth what power is left in withered flowers to make them healthy again. It holds a red flower.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon uses red wavelengths of light to pour its own energy into flowers and draw forth their latent potential.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon uses red wavelengths of light to pour its own energy into flowers and draw forth their latent potential.\"\n    }\n  ],\n  \"669\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It draws out and controls the hidden power of flowers. The flower Flabébé holds is most likely part of its body.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When it finds a flower it likes, it dwells on that flower its whole life long. It floats in the wind's embrace with an untroubled heart.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It draws out and controls the hidden power of flowers. The flower Flabébé holds is most likely part of its body.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When it finds a flower it likes, it dwells on that flower its whole life long. It floats in the wind's embrace with an untroubled heart.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's not safe without the power of a flower, but it will keep traveling around until it finds one with the color and shape it wants.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Flabébé wears a crown made from pollen it's collected from its flower. The crown has hidden healing properties.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon can draw forth the power hidden within blooming wild flowers. It is particularly fond of red flowers.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Flabébé rides a red flower. Immediately after birth, this Pokémon begins flying around in search of a flower it likes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon can draw forth the power hidden within blooming wild flowers. It is particularly fond of red flowers.\"\n    }\n  ],\n  \"670\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It flutters around fields of flowers and cares for flowers that are starting to wilt. It draws out the hidden power of flowers to battle.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When the flowers of a well-tended flower bed bloom, it appears and celebrates with an elegant dance.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It flutters around fields of flowers and cares for flowers that are starting to wilt. It draws out the hidden power of flowers to battle.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When the flowers of a well-tended flower bed bloom, it appears and celebrates with an elegant dance.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It raises flowers and uses them as weapons. The more gorgeous the blossom, the more power it contains.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It gives its own power to flowers, pouring its heart into caring for them. Floette never forgives anyone who messes up a flower bed.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon draws forth what power is left in withered flowers to make them healthy again. It holds a red flower.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon uses red wavelengths of light to pour its own energy into flowers and draw forth their latent potential.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon uses red wavelengths of light to pour its own energy into flowers and draw forth their latent potential.\"\n    }\n  ],\n  \"671\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It claims exquisite flower gardens as its territory, and it obtains power from basking in the energy emitted by flowering plants.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"In times long past, governors of castles would invite Florges to create flower gardens to embellish the castle domains.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It claims exquisite flower gardens as its territory, and it obtains power from basking in the energy emitted by flowering plants.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In times long past, governors of castles would invite Florges to create flower gardens to embellish the castle domains.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It controls the flowers it grows. The petal blizzards that Florges triggers are overwhelming in their beauty and power.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its life can span several hundred years. It's said to devote its entire life to protecting gardens.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon creates an impressive flower garden in its territory. It draws forth the power of the red flowers around its neck.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They say that flower gardens created by Florges are constantly showered with a power that can heal both body and spirit.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They say that flower gardens created by Florges constantly emit a power that can heal both body and spirit.\"\n    }\n  ],\n  \"672\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Thought to be one of the first Pokémon to live in harmony with humans, it has a placid disposition.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If it has sunshine and water, it doesn't need to eat, because it can generate energy from the leaves on its back.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Thought to be one of the first Pokémon to live in harmony with humans, it has a placid disposition.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If it has sunshine and water, it doesn't need to eat, because it can generate energy from the leaves on its back.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Until recently, people living in the mountains would ride on the back of these Pokémon to traverse the mountain paths.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"As long as it has sunlight and water, Skiddo can make energy with the leaves on its body, allowing it to live on rocky mountains barren of food.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If it has sunshine and water, it doesn't need to eat, because it can generate energy from the leaves on its back.\"\n    }\n  ],\n  \"673\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can tell how its Trainer is feeling by subtle shifts in the grip on its horns. This empathic sense lets them run as if one being.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They inhabit mountainous regions. The leader of the herd is decided by a battle of clashing horns.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It can tell how its Trainer is feeling by subtle shifts in the grip on its horns. This empathic sense lets them run as if one being.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They inhabit mountainous regions. The leader of the herd is decided by a battle of clashing horns.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It can sense the feelings of others by touching them with its horns. This species has assisted people with their work since 5,000 years ago.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"These Pokémon live in herds in mountainous places. The victor in their contests of clashing horns will become the leader of the herd.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can tell how its Trainer is feeling by subtle shifts in their grip on its horns. This empathic sense lets human and Pokémon run as if one being.\"\n    }\n  ],\n  \"674\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It does its best to be taken seriously by its enemies, but its glare is not sufficiently intimidating. Chewing on a leaf is its trademark.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It does its level best to glare and pull a scary face, but it can't help grinning if anyone pats its head.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It does its best to be taken seriously by its enemies, but its glare is not sufficiently intimidating. Chewing on a leaf is its trademark.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It does its level best to glare and pull a scary face, but it can't help grinning if anyone pats its head.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It grows up imitating the behavior of Pangoro, which it looks up to as a leader.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"There's no point to the leaf in its mouth, aside from an effort to look cool. It's mischievous, so it's not well suited to inexperienced Trainers.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It follows Pangoro around like a henchman. When Pancham makes a big mistake, its leaf gets taken away.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's desperate to intimidate its opponents. Be nice and pretend to be scared if you catch it glaring at you intensely.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It chooses a Pangoro as its master and then imitates its master's actions. This is how it learns to battle and hunt for prey.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Wanting to make sure it's taken seriously, Pancham's always giving others a glare. But if it's not focusing, it ends up smiling.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It does its level best to glare and pull a scary face, but it can't help grinning if anyone pats its head.\"\n    }\n  ],\n  \"675\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Although it possesses a violent temperament, it won't put up with bullying. It uses the leaf in its mouth to sense the movements of its enemies.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It charges ahead and bashes its opponents like a berserker, uncaring about any hits it might take. Its arms are mighty enough to snap a telephone pole.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Although it possesses a violent temperament, it won't put up with bullying. It uses the leaf in its mouth to sense the movements of its enemies.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It charges ahead and bashes its opponents like a berserker, uncaring about any hits it might take. Its arms are mighty enough to snap a telephone pole.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It boasts superb physical strength. Those who wish to become Pangoro's Trainer have no choice but to converse with their fists.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"From the slight twitches of its bamboo leaf, it deduces its opponent's movements. It's eager to tussle but kindhearted toward its companions.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This rowdy Pokémon boasts great physical strength. Many Trainers are also smitten by its lively character.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Pangoro is the type to talk with its fists. It doesn't say much as it pummels opponents with enough force to send a dump truck flying.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is quick to anger, and it has no problem using its prodigious strength to get its way. It lives for duels against Obstagoon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Using its leaf, Pangoro can predict the moves of its opponents. It strikes with punches that can turn a dump truck into scrap with just one hit.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Although it has a violent temperament, it won't put up with those who bully the weak. It senses foes' movements with its leaf.\"\n    }\n  ],\n  \"676\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Trimming its fluffy fur not only makes it more elegant but also increases the swiftness of its movements.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Historically, in the Kalos region, these Pokémon were the designated guardians of the king.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Trimming its fluffy fur not only makes it more elegant but also increases the swiftness of its movements.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Historically, in the Kalos region, these Pokémon were the designated guardians of the king.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"There was an era when aristocrats would compete to see who could trim their Furfrou's fur into the most exquisite style.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Left alone, its fur will grow longer and longer, but it will only allow someone it trusts to cut it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Historically, in the Kalos region, these Pokémon were the designated guardians of the king.\"\n    }\n  ],\n  \"677\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The organ that emits its intense psychic power is sheltered by its ears to keep power from leaking out.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has enough psychic energy to blast everything within 300 feet of itself, but it has no control over its power.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The organ that emits its intense psychic power is sheltered by its ears to keep power from leaking out.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It has enough psychic energy to blast everything within 300 feet of itself, but it has no control over its power.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Though Espurr's expression never changes, behind that blank stare is an intense struggle to contain its devastating psychic power.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"There's enough psychic power in Espurr to send a wrestler flying, but because this power can't be controlled, Espurr finds it troublesome.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It keeps its ears covered to prevent the intense psychic power in its body from escaping, but it falls unconscious if this power builds too much.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Behind an Espurr's expressionless face is a frantic struggle to contain psychic power.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It keeps its intense psychic power from leaking out by using its ears to cover the organs emitting that power.\"\n    }\n  ],\n  \"678\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When in danger, it raises its ears and releases enough psychic power to grind a 10-ton truck into dust.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The eyeball patterns on the interior of its ears emit psychic energy. It keeps the patterns tightly covered because that power is too immense.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When in danger, it raises its ears and releases enough psychic power to grind a 10-ton truck into dust.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The eyeball patterns on the interior of its ears emit psychic energy. It keeps the patterns tightly covered because that power is too immense.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Revealing the eyelike patterns on the insides of its ears will unleash its psychic powers. It normally keeps the patterns hidden, however.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The defensive instinct of the males is strong. It's when they're protecting themselves or their partners that they unleash their full power.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Though it has enough psychic power to blast away any opponent, Meowstic prefers to support its allies rather than attack.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If Meowstic continuously emits its powerful psychic energy, it will damage its own body.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When in danger, it raises its ears and releases enough psychic power to grind a 10-ton truck into dust.\"\n    }\n  ],\n  \"679\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Apparently this Pokémon is born when a departed spirit inhabits a sword. It attaches itself to people and drinks their life force.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"If anyone dares to grab its hilt, it wraps a blue cloth around that person's arm and drains that person's life energy completely.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Apparently this Pokémon is born when a departed spirit inhabits a sword. It attaches itself to people and drinks their life force.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"If anyone dares to grab its hilt, it wraps a blue cloth around that person's arm and drains that person's life energy completely.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Honedge's soul once belonged to a person who was killed a long time ago by the sword that makes up Honedge's body.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The blue eye on the sword's handguard is the true body of Honedge. With its old cloth, it drains people's lives away.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Apparently Honedge was born when a departed spirit began inhabiting an ancient sword. It attaches itself to people and drinks their life force.\"\n    }\n  ],\n  \"680\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When Honedge evolves, it divides into two swords, which cooperate via telepathy to coordinate attacks and slash their enemies to ribbons.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The complex attack patterns of its two swords are unstoppable, even for an opponent greatly accomplished at swordplay.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When Honedge evolves, it divides into two swords, which cooperate via telepathy to coordinate attacks and slash their enemies to ribbons.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The complex attack patterns of its two swords are unstoppable, even for an opponent greatly accomplished at swordplay.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Honedge evolves into twins. The two blades rub together to emit a metallic sound that unnerves opponents.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The two swords employ a strategy of rapidly alternating between offense and defense to bring down their prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When Honedge evolves, it divides into two swords that cooperate via telepathy to coordinate attacks and slash their enemies to ribbons.\"\n    }\n  ],\n  \"681\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Generations of kings were attended by these Pokémon, which used their spectral power to manipulate and control people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Apparently, it can detect the innate qualities of leadership. According to legend, whoever it recognizes is destined to become king.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Generations of kings were attended by these Pokémon, which used their spectral power to manipulate and control people and Pokémon.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Apparently, it can detect the innate qualities of leadership. According to legend, whoever it recognizes is destined to become king.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In this defensive stance, Aegislash uses its steel body and a force field of spectral power to reduce the damage of any attack.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its potent spectral powers allow it to manipulate others. It once used its powers to force people and Pokémon to build a kingdom to its liking.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Apparently, it can detect the innate qualities of leadership. According to legend, whoever it recognizes is destined to rule.\"\n    }\n  ],\n  \"682\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It emits a scent that enraptures those who smell it. This fragrance changes depending on what it has eaten.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"In the past, rather than using perfume, royal ladies carried a Spritzee that would waft a fragrance they liked.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It emits a scent that enraptures those who smell it. This fragrance changes depending on what it has eaten.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"In the past, rather than using perfume, royal ladies carried a Spritzee that would waft a fragrance they liked.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A scent pouch within this Pokémon's body allows it to create various scents. A change in its diet will alter the fragrance it produces.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The scent its body gives off enraptures those who smell it. Noble ladies had no shortage of love for Spritzee.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"In the past, rather than using perfume, royal ladies carried a Spritzee that would waft a fragrance they liked.\"\n    }\n  ],\n  \"683\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It devises various scents, pleasant and unpleasant, and emits scents that its enemies dislike in order to gain an edge in battle.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its scent is so overpowering that, unless a Trainer happens to really enjoy the smell, he or she will have a hard time walking alongside it.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It devises various scents, pleasant and unpleasant, and emits scents that its enemies dislike in order to gain an edge in battle.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its scent is so overpowering that, unless a Trainer happens to really enjoy the smell, he or she will have a hard time walking alongside it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The scent that constantly emits from its fur is so powerful that this Pokémon's companions will eventually lose their sense of smell.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The scents Aromatisse can produce range from sweet smells that bolster allies to foul smells that sap an opponent's will to fight.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its scent is so overpowering that, unless they happen to really enjoy the smell, Trainers will have a hard time walking alongside it.\"\n    }\n  ],\n  \"684\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"To entangle its opponents in battle, it extrudes white threads as sweet and sticky as cotton candy.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Because it eats nothing but sweets, its fur is as sticky sweet as cotton candy.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"To entangle its opponents in battle, it extrudes white threads as sweet and sticky as cotton candy.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Because it eats nothing but sweets, its fur is as sticky sweet as cotton candy.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It eats its own weight in sugar every day. If it doesn't get enough sugar, it becomes incredibly grumpy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The sweet smell of cotton candy perfumes Swirlix's fluffy fur. This Pokémon spits out sticky string to tangle up its enemies.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"To entangle and immobilize its opponents in battle, it extrudes white threads as sweet and sticky as cotton candy.\"\n    }\n  ],\n  \"685\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can distinguish the faintest of scents. It puts its sensitive sense of smell to use by helping pastry chefs in their work.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its sense of smell is 100 million times better than a human's, so even the faintest scent tells it about everything in the area. It's like it can see with its nose!\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It can distinguish the faintest of scents. It puts its sensitive sense of smell to use by helping pastry chefs in their work.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its sense of smell is 100 million times better than a human's, so even the faintest scent tells it about everything in the area. It's like it can see with its nose!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"By taking in a person's scent, it can sniff out their mental and physical condition. It's hoped that this skill will have many medical applications.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Slurpuff's fur contains a lot of air, making it soft to the touch and lighter than it looks.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can distinguish the faintest of scents. It puts its sensitive sense of smell to use by helping pastry chefs in their work.\"\n    }\n  ],\n  \"686\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Opponents who stare at the flashing of the light-emitting spots on its body become dazed and lose their will to fight.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It flashes the light-emitting spots on its body, which drains its opponent's will to fight. It takes the opportunity to scuttle away and hide.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Opponents who stare at the flashing of the light-emitting spots on its body become dazed and lose their will to fight.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It flashes the light-emitting spots on its body, which drains its opponent's will to fight. It takes the opportunity to scuttle away and hide.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It draws prey near with its blinking lights and then wraps them up in its long tentacles and holds them in place.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When exchanging information with others of its kind, it flashes the light-emitting spots on its body in a complex rhythm.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It spins while making its luminescent spots flash. These spots allow it to communicate with others by using different patterns of light.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"By exposing foes to the blinking of its luminescent spots, Inkay demoralizes them, and then it seizes the chance to flee.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It protects itself from tough foes by flashing its luminescent spots to discourage them.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Being upside-down improves its blood flow and clears its mind, causing the power of its psychic moves to increase dramatically.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It drains foes' will to fight by flashing light at them. It then takes the opportunity to hide itself away.\"\n    }\n  ],\n  \"687\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It wields the most compelling hypnotic powers of any Pokémon, and it forces others to do whatever it wants.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It lures its prey close with hypnotic motions, then wraps its tentacles around it before finishing it off with digestive fluids.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It wields the most compelling hypnotic powers of any Pokémon, and it forces others to do whatever it wants.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It lures its prey close with hypnotic motions, then wraps its tentacles around it before finishing it off with digestive fluids.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it comes to strong hypnosis, there's an endless number of people who utilize Malamar for their nefarious deeds.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It flashes the pattern on its torso to control its prey and draw them in. The edges of its fins are supremely sharp.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Gazing at its luminescent spots will quickly induce a hypnotic state, putting the observer under Malamar's control.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's said that Malamar's hypnotic powers played a role in certain history-changing events.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its hypnotic powers are dangerously strong. Anyone who falls under Malamar's control loses their memories surrounding the event.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It flashes the luminescent spots on its body to hypnotize its opponents, gaining total control over them.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It wields the most compelling hypnotic powers of any Pokémon, and it forces others to do whatever it wants.\"\n    }\n  ],\n  \"688\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Two Binacle live together on one rock. When they fight, one of them will move to a different rock.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"They stretch and then contract, yanking their rocks along with them in bold hops. They eat seaweed that washes up on the shoreline.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Two Binacle live together on one rock. When they fight, one of them will move to a different rock.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"They stretch and then contract, yanking their rocks along with them in bold hops. They eat seaweed that washes up on the shoreline.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After two Binacle find a suitably sized rock, they adhere themselves to it and live together. They cooperate to gather food during high tide.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If the two don't work well together, both their offense and defense fall apart. Without good teamwork, they won't survive.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Two Binacle live together on one rock. When they fight, one of them will move to a different rock.\"\n    }\n  ],\n  \"689\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When they evolve, two Binacle multiply into seven. They fight with the power of seven Binacle.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Barbaracle's legs and hands have minds of their own, and they will move independently. But they usually follow the head's orders.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When they evolve, two Binacle multiply into seven. They fight with the power of seven Binacle.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Barbaracle's legs and hands have minds of their own, and they will move independently. But they usually follow the head's orders.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Seven Binacle come together to form one Barbaracle. The Binacle that serves as the head gives orders to those serving as the limbs.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Having an eye on each palm allows it to keep watch in all directions. In a pinch, its limbs start to act on their own to ensure the enemy's defeat.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Barbaracle's legs and hands have minds of their own, and they will move independently. But they usually follow the head's orders.\"\n    }\n  ],\n  \"690\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Camouflaged as rotten kelp, they spray liquid poison on prey that approaches unawares and then finish it off.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It looks just like rotten kelp. It hides from foes while storing up power for its evolution.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Camouflaged as rotten kelp, they spray liquid poison on prey that approaches unawares and then finish it off.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It looks just like rotten kelp. It hides from foes while storing up power for its evolution.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It vanishes into seaweed and remains perfectly still to avoid attacks from large Pokémon. Rotten seaweed is its main food source.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's not good at swimming, so it clings to the seaweed. In the Alola region, it's often found near Dhelmise.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It drifts in the ocean, blending in with floating seaweed. When other Pokémon come to feast on the seaweed, Skrelp feasts on them instead.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Skrelp looks like a piece of rotten seaweed, so it can blend in with seaweed drifting on the ocean and avoid being detected by enemies.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Skrelp evades its enemies by hiding amid drifting seaweed. It eats rotten seaweed to create its poison.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon is a poor swimmer. If it's caught in a fierce storm, it will sometimes get washed far away and become unable to return to its home.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Camouflaged as rotten kelp, this Pokémon sprays liquid poison to take down prey that approach unawares.\"\n    }\n  ],\n  \"691\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Their poison is strong enough to eat through the hull of a tanker, and they spit it indiscriminately at anything that enters their territory.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Tales are told of ships that wander into seas where Dragalge live, never to return.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Their poison is strong enough to eat through the hull of a tanker, and they spit it indiscriminately at anything that enters their territory.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Tales are told of ships that wander into seas where Dragalge live, never to return.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This vicious Pokémon sprays a poisonous liquid on opponents that come near. For whatever reason, it gets along really well with Dhelmise.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It blends in with seaweed to ambush its prey and then takes them down with a poisonous liquid strong enough to melt metal.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Dragalge uses a poisonous liquid capable of corroding metal to send tankers that enter its territory to the bottom of the sea.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Dragalge generates dragon energy by sticking the plume on its head out above the ocean's surface and bathing it in sunlight.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Using a liquid poison, Dragalge indiscriminately attacks anything that wanders into its territory. This poison can corrode the undersides of boats.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Since Finizen is the better swimmer, Dragalge will approach it under the cover of seaweed, then immobilize it with a poisonous attack.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Their poison is strong enough to eat through the hull of a tanker, and they spit it indiscriminately at anything that enters their territory.\"\n    }\n  ],\n  \"692\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They knock down flying prey by firing compressed water from their massive claws like shooting a pistol.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Through controlled explosions of internal gas, it can expel water like a pistol shot. At close distances, it can shatter rock.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They knock down flying prey by firing compressed water from their massive claws like shooting a pistol.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Through controlled explosions of internal gas, it can expel water like a pistol shot. At close distances, it can shatter rock.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its claws occasionally fall off, and it keeps a low profile until they grow back. The meat of its claws is so delicious!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It moves around by jetting water from its right pincer. It has a poor sense of balance, so it's terrible at swimming straight.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Clauncher's claws can fall off during battle, but they'll regenerate. The meat inside the claws is popular as a delicacy in Galar.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"By detonating gas that accumulates in its right claw, this Pokémon launches water like a bullet. This is how Clauncher defeats its enemies.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon launches water by detonating gas inside its right claw. It snipes flying Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Clauncher's claws will regrow if they fall off. The meat inside the claws is edible, but it has a distinct flavor that doesn't appeal to all tastes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They knock down flying prey by firing compressed water from their massive claws like shooting a pistol.\"\n    }\n  ],\n  \"693\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Their enormous claws launch cannonballs of water powerful enough to pierce tanker hulls.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"By expelling water from the nozzle in the back of its claw, it can move at a speed of 60 knots.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Their enormous claws launch cannonballs of water powerful enough to pierce tanker hulls.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"By expelling water from the nozzle in the back of its claw, it can move at a speed of 60 knots.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It compresses the water it has sucked up and then projects it with enough power to punch a hole right through a thick sheet of iron.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its right arm is packed with meat. When its pincer falls off, it's exported to be used as a cooking ingredient.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After using the feelers on its oversized claw to detect the location of prey, Clawitzer launches a cannonball of water at its target.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Clawitzer's right arm is a cannon that launches projectiles made of seawater. Shots from a Clawitzer's cannon arm can sink a tanker.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Clawitzer can move through the water at a speed of 60 knots by using gas inside its body to expel water from the back of its claw.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The cannonballs of seawater that Clawitzer launches from its claw are powerful enough to punch through tanker hulls.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"By expelling water from the nozzle in the back of its claw, it can move at a speed of 60 knots.\"\n    }\n  ],\n  \"694\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They make their home in deserts. They can generate their energy from basking in the sun, so eating food is not a requirement.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The frills on either side of its head have cells that generate electricity when exposed to sunlight.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They make their home in deserts. They can generate their energy from basking in the sun, so eating food is not a requirement.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The frills on either side of its head have cells that generate electricity when exposed to sunlight.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When spread, the frills on its head act like solar panels, generating the power behind this Pokémon's electric moves.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The sun powers this Pokémon's electricity generation. Interruption of that process stresses Helioptile to the point of weakness.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The frills on either side of its head have cells that generate electricity when exposed to sunlight.\"\n    }\n  ],\n  \"695\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They flare their frills and generate energy. A single Heliolisk can generate sufficient electricity to power a skyscraper.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It stimulates its muscles with electricity, boosting the strength in its legs and enabling it to run 100 yards in five seconds.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They flare their frills and generate energy. A single Heliolisk can generate sufficient electricity to power a skyscraper.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It stimulates its muscles with electricity, boosting the strength in its legs and enabling it to run 100 yards in five seconds.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A now-vanished desert culture treasured these Pokémon. Appropriately, when Heliolisk came to the Galar region, treasure came with them.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"One Heliolisk basking in the sun with its frill outspread is all it would take to produce enough electricity to power a city.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They flare their frills and generate energy. A single Heliolisk can generate sufficient electricity to power a skyscraper.\"\n    }\n  ],\n  \"696\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This Pokémon was restored from a fossil. If something happens that it doesn't like, it throws a tantrum and runs wild.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its immense jaws have enough destructive force that it can chew up an automobile. It lived 100 million years ago.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This Pokémon was restored from a fossil. If something happens that it doesn't like, it throws a tantrum and runs wild.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its immense jaws have enough destructive force that it can chew up an automobile. It lived 100 million years ago.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its large jaw has incredible destructive power. Some theories suggest that its restored form is different from its form of long ago.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Tyrunt is spoiled and selfish. It may just be trying to frolic, but sometimes the ones it's trying to frolic with are gravely injured.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This is an ancient Pokémon, revived in modern times. It has a violent disposition, and it'll tear apart anything it gets between its hefty jaws.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is selfish and likes to be pampered. It can also inflict grievous wounds on its Trainer just by playing around.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon was restored from a fossil. If something happens that it doesn't like, it throws a tantrum and runs wild.\"\n    }\n  ],\n  \"697\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Thanks to its gargantuan jaws, which could shred thick metal plates as if they were paper, it was invincible in the ancient world it once inhabited.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Nothing could stop this Pokémon 100 million years ago, so it behaved like a king.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Thanks to its gargantuan jaws, which could shred thick metal plates as if they were paper, it was invincible in the ancient world it once inhabited.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Nothing could stop this Pokémon 100 million years ago, so it behaved like a king.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Complete restoration is impossible, allowing room for theories that its entire body was once covered in a feather-like coat.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The king of the ancient world, it can easily crunch a car with the devastating strength of its enormous jaws.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is from about 100,000,000 years ago. It has the presence of a king, vicious but magnificent.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A single bite of Tyrantrum's massive jaws will demolish a car. This Pokémon was the king of the ancient world.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon behaved like a king 100 million years ago. Nothing could stop it.\"\n    }\n  ],\n  \"698\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This ancient Pokémon was restored from part of its body that had been frozen in ice for over 100 million years.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"This calm Pokémon lived in a cold land where there were no violent predators like Tyrantrum.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This ancient Pokémon was restored from part of its body that had been frozen in ice for over 100 million years.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"This calm Pokémon lived in a cold land where there were no violent predators like Tyrantrum.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It lived in cold areas in ancient times. It's said that when Amaura whinnies, auroras appear in the night sky.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Amaura was restored successfully, but it's not expected to live long because of the heat of the current environment.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon was successfully restored from a fossil. In the past, it lived with others of its kind in cold lands where there were fewer predators.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Amaura is an ancient Pokémon that has gone extinct. Specimens of this species can sometimes be found frozen in ice.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This ancient Pokémon was restored from a part of its body that had been frozen in ice for 100 million years.\"\n    }\n  ],\n  \"699\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The diamond-shaped crystals on its body expel air as cold as -240 degrees Fahrenheit, surrounding its enemies and encasing them in ice.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Using its diamond-shaped crystals, it can instantly create a wall of ice to block an opponent's attack.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The diamond-shaped crystals on its body expel air as cold as -240 degrees Fahrenheit, surrounding its enemies and encasing them in ice.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Using its diamond-shaped crystals, it can instantly create a wall of ice to block an opponent's attack.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"An Aurorus was found frozen solid within a glacier, just as it appeared long ago, which became quite a big event in the news.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This usually quiet and kindly Pokémon has a surface temperature of around -240 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Aurorus was restored from a fossil. It's said that when this Pokémon howls, auroras appear in the night sky.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When gripped by rage, Aurorus will emanate freezing air, covering everything around it in ice.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The diamond-shaped crystals on its body expel air as cold as -240 degrees Fahrenheit, surrounding its enemies and encasing them in ice.\"\n    }\n  ],\n  \"700\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It sends a soothing aura from its ribbonlike feelers to calm fights.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It wraps its ribbonlike feelers around the arm of its beloved Trainer and walks with him or her.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It sends a soothing aura from its ribbonlike feelers to calm fights.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It wraps its ribbonlike feelers around the arm of its beloved Trainer and walks with him or her.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its ribbonlike feelers give off an aura that weakens hostility in its prey, causing them to let down their guard. Then it attacks.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When this Pokémon sights its prey, it swirls its ribbonlike feelers as a distraction. A moment later, it pounces.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Once a fight breaks out, it will unflinchingly charge at dragon Pokémon that are many times larger than itself.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Sylveon wraps its ribbonlike feelers around its Trainer's arm because this touch enables it to read its Trainer's feelings.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"By releasing enmity-erasing waves from its ribbonlike feelers, Sylveon stops any conflict.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"There's a Galarian fairy tale that describes a beautiful Sylveon vanquishing a dreadful dragon Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"It emits a soothing aura from its ribbon-shaped organs. It wraps these appendages around quarrelers to instantly restore calm to the situation.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon uses its ribbonlike feelers to send a soothing aura into its opponents, erasing their hostility.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Sylveon cuts an elegant figure as it dances lightly around, feelers fluttering, but its piercing moves aim straight for its opponents' weak spots.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It wraps its ribbonlike feelers around the arm of its beloved Trainer and walks with them.\"\n    }\n  ],\n  \"701\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Although its body is small, its proficient fighting skills enable it to keep up with big bruisers like Machamp and Hariyama.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"With its wings, it controls its position in the air. It likes to attack from above, a maneuver that is difficult to defend against.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Although its body is small, its proficient fighting skills enable it to keep up with big bruisers like Machamp and Hariyama.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"With its wings, it controls its position in the air. It likes to attack from above, a maneuver that is difficult to defend against.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It overwhelms opponents with quick moves, but sometimes it showboats for too long when it's using a special move and gets itself into a pinch.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"In combat, Hawlucha leaps nimbly about, taking advantage of its opponents' blind spots. It's also skilled at using superb submission holds.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It drives its opponents to exhaustion with its agile maneuvers, then ends the fight with a flashy finishing move.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It always strikes a pose before going for its finishing move. Sometimes opponents take advantage of that time to counterattack.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its elegant finishing moves—performed by nimbly leaping around using its wings—are polished in the forest where it was born and raised.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Hawlucha live quietly without flocking together. They fight constantly with their natural enemies: noisy groups of Primeape.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"With its wings, it controls its position in the air. It likes to attack from above, a maneuver that is difficult to defend against.\"\n    }\n  ],\n  \"702\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its whiskers serve as antennas. By sending and receiving electrical waves, it can communicate with others over vast distances.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It uses its tail to absorb electricity from power plants or from outlets in houses, and then it fires the electricity from its whiskers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its whiskers serve as antennas. By sending and receiving electrical waves, it can communicate with others over vast distances.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It uses its tail to absorb electricity from power plants or from outlets in houses, and then it fires the electricity from its whiskers.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It sneaks into people's homes and steals electricity from their outlets. When your electric bill seems off, it's the handiwork of this rascal.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its upper whiskers are sensors that survey its surroundings. Its lower whiskers are organs that shoot electricity.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A Dedenne's whiskers pick up electrical waves other Dedenne send out. These Pokémon share locations of food or electricity with one another.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Since Dedenne can't generate as much electricity on its own, it steals electricity from outlets or other electric Pokémon.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's small and its electricity-generating organ is not fully developed, so it uses its tail to absorb electricity from people's homes and charge itself.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Dedenne emit electrical waves from the whiskers on their cheeks to communicate with each other. When low on electricity, they curl up and sleep.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its whiskers serve as antennas. By sending and receiving electrical waves, it can communicate with others over vast distances.\"\n    }\n  ],\n  \"703\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Born from the temperatures and pressures deep underground, it fires beams from the stone in its head.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It has slept underground for hundreds of millions of years since its birth. It's occasionally found during the excavation of caves.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Born from the temperatures and pressures deep underground, it fires beams from the stone in its head.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It has slept underground for hundreds of millions of years since its birth. It's occasionally found during the excavation of caves.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Born from the high temperatures and pressures deep underground, it defends itself by firing beams from the jewel part of its body.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Although this Pokémon is not especially rare, its glittering, jewel-draped body draws attention from people.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Some say that deep beneath the surface of the world, a pack of Carbink live with their queen in a kingdom of jewels.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"To keep the jewels on their bodies free of tarnish, packs of Carbink use their soft manes to polish one another's jewels.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When beset by attackers, Carbink wipes them all out by firing high-energy beams from the gems embedded in its body.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's said that somewhere in the world, there's a mineral vein housing a large pack of slumbering Carbink. It's also said that this pack has a queen.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has slept underground for hundreds of millions of years since its birth. It's occasionally found during the excavation of caves.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Born from the high temperatures and pressures deep underground, it defends itself by firing beams from the jewel part of its body.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Born from the high temperatures and pressures deep underground, it releases energy from the stone in its head.\"\n    }\n  ],\n  \"704\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The weakest Dragon-type Pokémon, it lives in damp, shady places, so its body doesn't dry out.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It's covered in a slimy membrane that makes any punches or kicks slide off it harmlessly.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The weakest Dragon-type Pokémon, it lives in damp, shady places, so its body doesn't dry out.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It's covered in a slimy membrane that makes any punches or kicks slide off it harmlessly.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The weakest of all Dragon-type Pokémon, it's unable to breathe if its skin dries out, so it sticks to shady places.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its source of protection is its slimy, germ-laden mucous membrane. Anyone who touches it needs some thorough hand-washing.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It uses its horns to check out its surroundings. They're very sensitive, so if you grab them, it will feel a strong shock and be unable to move.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its body is mostly water. If it dries out, it will die, so it's always sitting with perfect stillness in the shade.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Because most of its body is water, it will dry up if the weather becomes too arid. It's considered the weakest dragon Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Their horns are powerful sensors. As soon as Goomy pick up any sign of enemies, they go into hiding. This is how they've survived.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Goomy hides away in the shade of trees, where it's nice and humid. If the slime coating its body dries out, the Pokémon instantly becomes lethargic.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Most of a Goomy's body is water. A membrane covers the whole Pokémon to prevent it from shriveling up in dry weather.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Goomy's horns are excellent sensory organs that cover all five of Goomy's senses. Goomy picks up on danger from the movement of the air.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Thanks to the slimy membrane covering its body, punches or kicks from its enemies slide right off it.\"\n    }\n  ],\n  \"705\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It drives away opponents by excreting a sticky liquid that can dissolve anything. Its eyes devolved, so it can't see anything.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Its four horns are a high-performance radar system. It uses them to sense sounds and smells, rather than using ears or a nose.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It drives away opponents by excreting a sticky liquid that can dissolve anything. Its eyes devolved, so it can't see anything.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Its four horns are a high-performance radar system. It uses them to sense sounds and smells, rather than using ears or a nose.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It has trouble drawing a line between friends and food. It will calmly try to melt and eat even those it gets along well with.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon's mucous can dissolve anything. Toothless, it sprays mucous on its prey. Once they're nicely dissolved, it slurps them up.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It crawls along sluggishly. The swirly protrusion on its back is filled with its brain and other organs.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its entire body is covered with gooey mucus that can dissolve anything. Be sure to put gloves on if you're going to touch it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Although this Pokémon isn't very strong, its body is coated in a caustic slime that can melt through anything, so predators steer clear of it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The lump on its back contains its tiny brain. It thinks only of food and escaping its enemies.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A creature given to melancholy. I suspect its metallic shell developed as a result of the mucus on its skin reacting with the iron in Hisui's water.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The swirly protrusion on its back is filled with all its vital organs, such as its brain and heart.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When Sliggoo senses danger, the mucus coating its entire body becomes more concentrated— it'll dissolve anything.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its four horns are a high-performance radar system. It uses them to sense sounds and smells, rather than using ears or a nose.\"\n    }\n  ],\n  \"706\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This very friendly Dragon-type Pokémon will hug its beloved Trainer, leaving that Trainer covered in sticky slime.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It attacks with retractable horns. It throws a punch that's the equivalent of the force of a hundred pro boxers.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"This very friendly Dragon-type Pokémon will hug its beloved Trainer, leaving that Trainer covered in sticky slime.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It attacks with retractable horns. It throws a punch that's the equivalent of the force of a hundred pro boxers.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"An amazingly friendly Pokémon, but if left to itself, loneliness overcomes it, and it oozes gooey tears.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It gets picked on because it's meek. But then, whoever teased it gets to feel the full force of its horns and a good swatting from its thick tail.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's very friendly toward people. If you grow close to it, Goodra will hug you with its sticky, slime-covered body. Don't get mad.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Underneath its slimy skin is a thick layer of fat, and the combination of the two makes enemies' attacks slide right off.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Sometimes it misunderstands instructions and appears dazed or bewildered. Many Trainers don't mind, finding this behavior to be adorable.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its form of offense is forcefully stretching out its horns. The strikes land 100 times harder than any blow from a heavyweight boxer.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Able to freely control the hardness of its metallic shell. It loathes solitude and is extremely clingy—it will fume and run riot if those dearest to it ever leave its side.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It loves the rain. This mellow Pokémon can be seen walking around on the plains and in the mountains on rainy days.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon is uncontrollable when enraged. It rampages on and on, lashing its tail with enough power to send a dump truck flying.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This very friendly dragon Pokémon will hug its beloved Trainer, leaving that Trainer covered in sticky slime.\"\n    }\n  ],\n  \"707\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"These key collectors threaten any attackers by fiercely jingling their keys at them.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It never lets go of a key that it likes, so people give it the keys to vaults and safes as a way to prevent crime.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"These key collectors threaten any attackers by fiercely jingling their keys at them.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It never lets go of a key that it likes, so people give it the keys to vaults and safes as a way to prevent crime.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This even-tempered Pokémon has a habit of collecting keys. It will sneak into people's homes to steal their keys.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It inserts its horn into chinks in metal, absorbing metal ions. For some reason, it collects keys.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it's unclear why it collects keys, giving it a key makes Klefki very happy. However, it apparently only likes master keys.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Long ago it lived in mines, but once the minerals that make up its diet became scarcer, Klefki began appearing in human settlements.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is constantly collecting keys. Entrust a Klefki with important keys, and the Pokémon will protect them no matter what.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Klefki sucks in metal ions with the horn topping its head. It seems this Pokémon loves keys so much that its head needed to look like one, too.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Once it absorbs a key's metal ions, it discards the key without a second thought. However, it will hang on to keys it favors for decades.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In the past, noble families entrusted their vault keys to a Klefki. They passed the Klefki down through the generations, taking good care of it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It never lets go of a key that it likes, so people give it the keys to vaults and safes as a way to prevent crime.\"\n    }\n  ],\n  \"708\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"These Pokémon are created when spirits possess rotten tree stumps. They prefer to live in abandoned forests.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"According to old tales, these Pokémon are stumps possessed by the spirits of children who died while lost in the forest.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"These Pokémon are created when spirits possess rotten tree stumps. They prefer to live in abandoned forests.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"According to old tales, these Pokémon are stumps possessed by the spirits of children who died while lost in the forest.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"These Pokémon are stumps possessed by the spirits of children who died in the forest. Their cries sound like eerie screams.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"According to legend, medicine to cure any illness can be made by plucking the green leaves on its head, brewing them, and boiling down the liquid.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"By imitating the voice of a child, it causes people to get hopelessly lost deep in the forest. It's trying to make friends with them.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"An unknown spirit came to lodge in a tree stump, creating this Pokémon. A cure-all can be made from an infusion of its green leaves.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After a lost child perished in the forest, their spirit possessed a tree stump, causing the spirit's rebirth as this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With a voice like a human child's, it cries out to lure adults deep into the forest, getting them lost among the trees.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Legend tells that its green leaves can cure any illness. When plucked, however, the leaves will instantly wither away.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon came to be when the spirit of a deceased child possessed a tree stump. It now wanders the forest searching for friends.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"According to old tales, these Pokémon are stumps possessed by the spirits of children who died while lost in the forest.\"\n    }\n  ],\n  \"709\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It can control trees at will. It will trap people who harm the forest, so they can never leave.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Using its roots as a nervous system, it controls the trees in the forest. It's kind to the Pokémon that reside in its body.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It can control trees at will. It will trap people who harm the forest, so they can never leave.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Using its roots as a nervous system, it controls the trees in the forest. It's kind to the Pokémon that reside in its body.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Pokémon is said to devour anyone daring to ravage the forest. To the creatures dwelling in the forest, it offers great kindness.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Through its roots, it exerts control over other trees. A deadly curse falls upon anyone cutting down trees in forests where Trevenant dwell.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's feared as a ghost of the forest. Lumberjacks bring along Fire types, which Trevenant hates, when they enter the forest.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pokémon controls trees via roots stretching from its feet, and it will attack anyone that dares to ravage the forest.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"People fear it due to a belief that it devours any who try to cut down trees in its forest, but to the Pokémon it shares its woods with, it's kind.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Small roots that extend from the tips of this Pokémon's feet can tie into the trees of the forest and give Trevenant control over them.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Using its roots, Trevenant connects itself to trees and monitors every corner of its forest. It uses curses to drive intruders away.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Trevenant is very kind to Pokémon living in the forest. It doesn't even care if these Pokémon take up residence in the greenery on its head.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Using its roots as a nervous system, it controls the trees in the forest. It's kind to the Pokémon that reside in its body.\"\n    }\n  ],\n  \"710\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"The pumpkin body is inhabited by a spirit trapped in this world. As the sun sets, it becomes restless and active.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It is said to carry wandering spirits to the place where they belong so they can move on.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"The pumpkin body is inhabited by a spirit trapped in this world. As the sun sets, it becomes restless and active.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It is said to carry wandering spirits to the place where they belong so they can move on.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Spirits that wander this world are placed into Pumpkaboo's body. They're then moved on to the afterlife.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The light that streams out from the holes in the pumpkin can hypnotize and control the people and Pokémon that see it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It was recently discovered that the different varieties of Pumpkaboo vary not only in size but also in the size of the souls they collect.\"\n    }\n  ],\n  \"711\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Singing in eerie voices, they wander town streets on the night of the new moon. Anyone who hears their song is cursed.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It enwraps its prey in its hairlike arms. It sings joyfully as it observes the suffering of its prey.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Singing in eerie voices, they wander town streets on the night of the new moon. Anyone who hears their song is cursed.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It enwraps its prey in its hairlike arms. It sings joyfully as it observes the suffering of its prey.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Eerie cries emanate from its body in the dead of night. The sounds are said to be the wails of spirits who are suffering in the afterlife.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In the darkness of a new-moon night, Gourgeist will come knocking. Whoever answers the door will be swept off to the afterlife.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Singing in eerie voices, they wander town streets on the night of the new moon. Anyone who hears their song is cursed.\"\n    }\n  ],\n  \"712\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It blocks opponents' attacks with the ice that shields its body. It uses cold air to repair any cracks with new ice.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Using air of -150 degrees Fahrenheit, they freeze opponents solid. They live in herds above the snow line on mountains.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It blocks opponents' attacks with the ice that shields its body. It uses cold air to repair any cracks with new ice.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Using air of -150 degrees Fahrenheit, they freeze opponents solid. They live in herds above the snow line on mountains.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"They chill the air around them to -150 degrees Fahrenheit, freezing the water in the air into ice that they use as armor.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon lives in areas of frigid cold. It secures itself to the back of an Avalugg by freezing its feet in place.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Lives on mountains blanketed in perennial snow. It freezes water vapor in the air to make the ice helmet that it dons for defense.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"They live in mountainous regions of frigid cold. On rare occasions, they ride on the back of an Avalugg to cross seas and move to new habitats.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Bergmite protects itself by coating its body in ice formed by frigid air of -148 degrees Fahrenheit. It fights with Frigibax whenever they meet.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It blocks opponents' attacks with the ice that shields its body. If the ice breaks, this Pokémon uses cold air to quickly create new ice.\"\n    }\n  ],\n  \"713\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Its ice-covered body is as hard as steel. Its cumbersome frame crushes anything that stands in its way.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The way several Bergmite huddle on its back makes it look like an aircraft carrier made of ice.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Its ice-covered body is as hard as steel. Its cumbersome frame crushes anything that stands in its way.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The way several Bergmite huddle on its back makes it look like an aircraft carrier made of ice.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"At high latitudes, this Pokémon can be found with clusters of Bergmite on its back as it swims among the icebergs.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"As Avalugg moves about during the day, the cracks in its body deepen. The Pokémon's body returns to a pristine state overnight.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The armor of ice covering its lower jaw puts steel to shame and can shatter rocks with ease. This Pokémon barrels along steep mountain paths, cleaving through the deep snow.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"As Avalugg walks along with Bergmite on its back, it comes across pods of Cetitan. It lets them pass to avoid conflict.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon uses its massive icy body to flatten anything that gets in its way. When it's floating out on the ocean, it looks exactly like drift ice.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its ice-covered body is as hard as steel. Its enormous frame crushes anything that stands in its way.\"\n    }\n  ],\n  \"714\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They live in pitch-black caves. Their enormous ears can emit ultrasonic waves of 200,000 hertz.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"Even a robust wrestler will become dizzy and unable to stand when exposed to its 200,000-hertz ultrasonic waves.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They live in pitch-black caves. Their enormous ears can emit ultrasonic waves of 200,000 hertz.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"Even a robust wrestler will become dizzy and unable to stand when exposed to its 200,000-hertz ultrasonic waves.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Fruits are its favorite foods. This gourmet carefully picks out just the ripe ones using its sonar.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It flies around in search of fruit to eat. It uses ultrasonic waves to detect which fruits are ripe.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After nightfall, they emerge from the caves they nest in during the day. Using their ultrasonic waves, they go on the hunt for ripened fruit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"No wavelength of sound is beyond Noibat's ability to produce. The ultrasonic waves it generates can overcome much larger Pokémon.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon emits ultrasonic waves from its large ears to search for fruit to eat. It mistakes Applin for its food.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Noibat can change the frequency of its sound waves at will, and it generates ultrasonic waves of up to 200,000 hertz.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Even a robust wrestler will become dizzy and unable to stand when exposed to its 200,000-hertz ultrasonic waves.\"\n    }\n  ],\n  \"715\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"They fly around on moonless nights and attack careless prey. Nothing can beat them in a battle in the dark.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"The ultrasonic waves it emits from its ears can reduce a large boulder to pebbles. It swoops out of the dark to attack.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"They fly around on moonless nights and attack careless prey. Nothing can beat them in a battle in the dark.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"The ultrasonic waves it emits from its ears can reduce a large boulder to pebbles. It swoops out of the dark to attack.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it has a violent disposition, if you give it a nice ripe fruit that it loves, Noivern will suddenly become tame.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This hot-blooded Pokémon attacks anything it sees with ultrasonic waves that can crush boulders.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Aggressive and cruel, this Pokémon will ruthlessly torment enemies that are helpless in the dark.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Flying through the darkness, it weakens enemies with ultrasonic waves that could crush stone. Its fangs finish the fight.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Ultrasonic waves emitted by a Noivern can pulverize a large boulder. This Pokémon has a cruel disposition.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In the dark, even Hydreigon are terrified of this Pokémon. But in the light, Noivern is the one that avoids battle.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"They fly around on moonless nights and attack careless prey. Nothing can beat them in a battle in the dark.\"\n    }\n  ],\n  \"716\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"Legends say it can share eternal life. It slept for a thousand years in the form of a tree before its revival.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When the horns on its head shine in seven colors, it is said to be sharing everlasting life.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"Legends say it can share eternal life. It slept for a thousand years in the form of a tree before its revival.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When the horns on its head shine in seven colors, it is said to be sharing everlasting life.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When the horns on its head shine in seven colors, it is said to be sharing everlasting life.\"\n    }\n  ],\n  \"717\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When this legendary Pokémon's wings and tail feathers spread wide and glow red, it absorbs the life force of living creatures.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"When its life comes to an end, it absorbs the life energy of every living thing and turns into a cocoon once more.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When this legendary Pokémon's wings and tail feathers spread wide and glow red, it absorbs the life force of living creatures.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"When its life comes to an end, it absorbs the life energy of every living thing and turns into a cocoon once more.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It's said that when its life comes to an end, it absorbs the life energy of every living thing and turns into a cocoon once more.\"\n    }\n  ],\n  \"718\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"When the Kalos region's ecosystem falls into disarray, it appears and reveals its secret power.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It's hypothesized that it's monitoring those who destroy the ecosystem from deep in the cave where it lives.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"When the Kalos region's ecosystem falls into disarray, it appears and reveals its secret power.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It's hypothesized that it's monitoring those who destroy the ecosystem from deep in the cave where it lives.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its sharp fangs make short work of finishing off its enemies, but it's unable to maintain this body indefinitely. After a period of time, it falls apart.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This is Zygarde's form when about 10% of its cells have been gathered. It runs across the land at speeds greater than 60 mph.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This is Zygarde when about 10% of its pieces have been assembled. It leaps at its opponent's chest and sinks its sharp fangs into them.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Born when around 10% of Zygarde's cells have been gathered from all over, this form is skilled in close-range combat.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This is Zygarde when about 10% of its pieces have been assembled. It leaps at its opponent's chest and sinks its sharp fangs into them.\"\n    }\n  ],\n  \"719\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"A sudden transformation of Carbink, its pink, glimmering body is said to be the loveliest sight in the whole world.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It can instantly create many diamonds by compressing the carbon in the air between its hands.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"A sudden transformation of Carbink, its pink, glimmering body is said to be the loveliest sight in the whole world.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It can instantly create many diamonds by compressing the carbon in the air between its hands.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Diancie is a spontaneous mutation of Carbink. Its pink, glimmering body is said to be the loveliest sight in the whole world.\"\n    }\n  ],\n  \"720\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"This troublemaker sends anything and everything to faraway places using its loop, which can warp space.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It gathers things it likes and passes them through its loop to teleport them to a secret place.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"In its true form, it possess a huge amount of power. Legends of its avarice tell how it once carried off an entire castle to gain the treasure hidden within.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It is said to be able to seize anything it desires with its six rings and six huge arms. With its power sealed, it is transformed into a much smaller form.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses loops to gather things it likes and take them to its secret home. It also teleports through a loop.\"\n    }\n  ],\n  \"721\": [\n    {\n      \"version_id\": \"X\",\n      \"flavor_text\": \"It lets out billows of steam and disappears into the dense fog. It's said to live in mountains where humans do not tread.\"\n    },\n    {\n      \"version_id\": \"Y\",\n      \"flavor_text\": \"It expels its internal steam from the arms on its back. It has enough power to blow away a mountain.\"\n    },\n    {\n      \"version_id\": \"Omega Ruby\",\n      \"flavor_text\": \"It lets out billows of steam and disappears into the dense fog. It's said to live in mountains where humans do not tread.\"\n    },\n    {\n      \"version_id\": \"Alpha Sapphire\",\n      \"flavor_text\": \"It expels its internal steam from the arms on its back. It has enough power to blow away a mountain.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It expels its internal steam from the arms on its back. It has enough power to blow away a mountain.\"\n    }\n  ],\n  \"722\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This wary Pokémon uses photosynthesis to store up energy during the day, while becoming active at night.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Silently it glides, drawing near its targets. Before they even notice it, it begins to pelt them with vicious kicks.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It sends its feathers, which are as sharp as blades, flying in attack. Its legs are strong, so its kicks are also formidable.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It feels relaxed in tight, dark places and has been known to use its Trainer's pocket or bag as a nest.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"At a distance, it launches its sharp feathers while flying about. If the enemy gets too close, Rowlet switches tactics and delivers vicious kicks.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"During the day, it builds up energy via photosynthesis. At night, it flies silently through the sky, on the prowl for prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Flies noiselessly on delicate wings. It has mastered the art of deftly launching dagger-sharp feathers from those same wings.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Silently it glides, streaking toward its targets to get close to them. Before they even notice it, it begins to pelt them with vicious kicks.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It feels relaxed in tight, dark places and has been known to nestle into its Trainer's bag or the front of their jacket.\"\n    }\n  ],\n  \"723\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A bit of a dandy, it spends its free time preening its wings. Its preoccupation with any dirt on its plumage can leave it unable to battle.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It throws sharp feathers called blade quills at enemies or prey. It seldom misses.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This narcissistic Pokémon is a clean freak. If you don't groom it diligently, it will stop listening to you.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Supremely sensitive to the presence of others, it can detect opponents standing behind it, flinging its sharp feathers to take them out.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It throws one knifelike feather after another at its enemies, and each one precisely strikes a weak point. These feathers are known as blade quills.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It never slacks when it comes to the task of cleaning its feathers. Thorough preening keeps it looking spiffy and its blade quills nice and sharp.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Regularly basks in sunlight to gather power—presumably due to the frigid climate. Nonetheless, the edges of the blade quills set into its wings are keen as ever.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This narcissistic Pokémon is a clean freak. If you don't groom it diligently, it may stop listening to you.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It throws sharp feathers called blade quills at enemies or prey. It seldom misses.\"\n    }\n  ],\n  \"724\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It fires arrow quills from its wings with such precision, they can pierce a pebble at distances over a hundred yards.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Although basically cool and cautious, when it's caught by surprise, it's seized by panic.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It nocks its arrow quills and shoots them at opponents. When it simply can't afford to miss, it tugs the vine on its head to improve its focus.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Decidueye can nock and fire an arrow at an enemy in a tenth of a second, so its battles are decided in the blink of an eye.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As if wielding a bow, it launches the arrow quills hidden among the feathers of its wings. Decidueye's shots never miss.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In a tenth of a second, it can nock and fire an arrow quill, piercing an opponent's weak point before they notice what's happening.\"\n    },\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The air stored inside the rachises of Decidueye's feathers insulates the Pokémon against Hisui's extreme cold. This is firm proof that evolution can be influenced by environment.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It cunningly conceals arrow quills in its wings. It launches these quills with such precision that they can pierce a pebble at over a hundred yards.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It nocks its arrow quills and looses them at opponents. When it needs to hit, it pulls the vines on its hood to narrow its view and focus.\"\n    }\n  ],\n  \"725\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"While grooming itself, it builds up fur inside its stomach. It sets the fur alight and spews fiery attacks, which change based on how it coughs.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It doesn't allow its emotions to be easily seen. Earning its trust takes time. It prefers solitude.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"If you try too hard to get close to it, it won't open up to you. Even if you do grow close, giving it too much affection is still a no-no.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its coat regrows twice a year. When the time comes, Litten sets its own body on fire and burns away the old fur.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It spends even the smallest amount of downtime grooming its fur with its tongue. Loose fur gathers in its stomach and serves as fuel for fiery moves.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Trying to pet Litten before it trusts you will result in a nasty scratch from its sharp claws. Be careful.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If you try too hard to get close to it, it won't open up to you. Even if you do grow close, giving it too much affection is still a no-no.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"While grooming itself, it builds up fur inside its stomach. It sets the fur alight and spews fiery attacks, which change based on how it coughs.\"\n    }\n  ],\n  \"726\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"At its throat, it bears a bell of fire. The bell rings brightly whenever this Pokémon spits fire.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It boasts powerful front legs. With a single punch, it can bend an iron bar right over.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It can act spoiled if it grows close to its Trainer. A powerful Pokémon, its sharp claws can leave its Trainer's whole body covered in scratches.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When its mane is standing on end, you can tell it's feeling good. When it isn't feeling well, its fur will lie down flat.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In the midst of battle, the fire pouch on Torracat's neck rings like a bell and produces stronger flames than usual.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When facing a powerful enemy, Torracat's fighting spirit gets pumped up, and its fire bell blazes hotter.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"At its throat, it bears a bell of fire. The bell rings brightly whenever fire spews out.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Torracat will let its Trainer coddle it once they've grown close, but it's a powerful, sharp-clawed Pokémon, so its Trainer gets covered in scratches.\"\n    }\n  ],\n  \"727\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Pokémon has a violent, selfish disposition. If it's not in the mood to listen, it will ignore its Trainer's orders with complete nonchalance.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"After hurling ferocious punches and flinging furious kicks, it finishes opponents off by spewing fire from around its navel.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it's rough mannered and egotistical, it finds beating down unworthy opponents boring. It gets motivated for stronger opponents.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When its fighting spirit is set alight, the flames around its waist become especially intense.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It excels at violent, no-holds-barred battles. The temperature of the flames that issue from its navel exceeds 3,600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Incineroar's rough and aggressive behavior is its most notable trait, but the way it helps out small Pokémon shows that it has a kind side as well.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When its fighting spirit is set alight, the flames around its waist become especially intense.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"After hurling ferocious punches and flinging furious kicks, it finishes opponents off by spewing fire from around its navel.\"\n    }\n  ],\n  \"728\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Pokémon snorts body fluids from its nose, blowing balloons to smash into its foes. It's famous for being a hard worker.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon can control water bubbles. It practices diligently so it can learn to make big bubbles.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The balloons it inflates with its nose grow larger and larger as it practices day by day.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Popplio gets on top of its bouncy water balloons to jump higher. It's quite the acrobatic fighter!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It creates special bouncy balloons to send at its opponents. When the balloons pop, the sheer force of their bursting is what deals damage.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If Popplio want to create big, powerful balloons, they must be persistent. It takes daily practice for these Pokémon to develop their skills.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon can control balloons made of water. It practices diligently so it can learn to make big balloons.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The balloons it inflates with its nose grow larger and larger as it practices day by day.\"\n    }\n  ],\n  \"729\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A skillful dancer, it creates a sequence of water balloons as it dances, and briskly bombards its enemies.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It cares deeply for its companions. When its Trainer is feeling down, it performs a cheery dance to try and help.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It gets excited when it sees a dance it doesn't know. This hard worker practices diligently until it can learn that dance.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It attacks by smacking its enemies with the exploding water balloons that it creates.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As if dancing, it artfully dodges the attacks of its enemies. All the while, it's busy forming a bunch of balloons to overwhelm its foes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"On nights when the sea is calm, Brionne dance with one another to the singing of the Primarina that's leading them.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A skillful dancer, it creates a sequence of water balloons as it dances, then briskly bombards its enemies.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It cares deeply for its companions. When its Trainer is feeling down, it performs a cheery dance to try to help.\"\n    }\n  ],\n  \"730\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It controls its water balloons with song. The melody is learned from others of its kind and is passed down from one generation to the next.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its singing voice is its chief weapon in battle. This Pokémon's Trainer must prioritize the daily maintenance of its throat at all costs.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"To Primarina, every battle is a stage. It takes down its prey with beautiful singing and dancing.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Also known as a songstress, it has a fantastical look on moonlit nights when it leads its colony in song.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With its mouth, it makes sonic waves that sound like beautiful singing. It uses the sonic waves to control its water balloons.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"For Primarina, every battle's a stage. Its singing and the dancing of its balloons will mesmerize the audience.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"To Primarina, every battle is a stage. It takes down its prey with beautiful singing and dancing.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Also known as a songstress, it is a sight to behold on moonlit nights when it sings in front of the colony it leads.\"\n    }\n  ],\n  \"731\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It can peck at a rate of 16 times a second to drill holes in trees. It uses the holes for food storage and for nesting.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon feeds on berries, whose leftover seeds become the ammunition for the attacks it fires off from its mouth.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It pecks at trees with its hard beak. You can get some idea of its mood or condition from the rhythm of its pecking.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It may look spindly, but its neck muscles are heavy-duty. It can peck at a tree 16 times per second!\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Using its beak to strike 16 times per second, it opens holes in even the hardest of trees.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Pikipek has strong muscles in its neck, so it won't hurt itself even if it violently shakes its head.\"\n    }\n  ],\n  \"732\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It eats berries and stores their seeds in its beak. When it encounters enemies or prey, it fires off all the seeds in a burst.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"By bending its beak, it can produce a variety of calls and brand itself a noisy nuisance for its neighbors.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It can bend the tip of its beak to produce over a hundred different cries at will.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"From its mouth, it fires the seeds of berries it has eaten. The scattered seeds give rise to new plants.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It flies around using a hundred different cries in various ways to declare its territory to others.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When it encounters foes, it launches the many seeds stored in its beak in a radial burst.\"\n    }\n  ],\n  \"733\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it battles, its beak heats up. The temperature can easily exceed 212 degrees Fahrenheit, causing severe burns when it hits.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Within its beak, its internal gas ignites, explosively launching seeds with enough power to pulverize boulders.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They smack beaks with others of their kind to communicate. The strength and number of hits tell each other how they feel.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Known for forming harmonious couples, this Pokémon is brought to wedding ceremonies as a good luck charm.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The compressed gas in Toucannon's beak launches seeds with such force that they can shatter large boulders.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Pairs of Toucannon are considered symbols of companionship, as these Pokémon will raise the temperature of their beaks to warm each other.\"\n    }\n  ],\n  \"734\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"With its sharp fangs, it will bite anything. It did not originally live in Alola but was imported from another region.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It wanders around in a never-ending search for food. At dusk, it collapses from exhaustion and falls asleep on the spot.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its stomach takes up most of its long torso. It's a big eater, so the amount Trainers have to spend on its food is no laughing matter.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although it will eat anything, it prefers fresh living things, so it marches down streets in search of prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its stomach fills most of its torso. It wanders the same path every day, searching for fresh food.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It spends its waking hours searching for food. When Yungoos is hungry, its ferocity gains a certain edge.\"\n    }\n  ],\n  \"735\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it finds a trace of its prey, it patiently stakes out the location...but it's always snoozing by nightfall.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It adores having Rattata and Raticate for dinner, but as it's diurnal, it never encounters them. This Pokémon boasts incredible patience.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it wasn't originally found in Alola, this Pokémon was brought over a long time ago when there was a huge Rattata outbreak.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Patient by nature, this Pokémon loses control of itself and pounces when it spots its favorite meal—Rattata!\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Once it finds signs of prey, it will patiently stake out the location, waiting until the sun goes down.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Gumshoos specializes in relentlessly tracking down prey. The simple-minded Skwovet doesn't seem to provide Gumshoos enough challenge.\"\n    }\n  ],\n  \"736\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its strong jaw enables it to scrape trees and slurp out the sap. It normally lives underground.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They often gather near places frequented by electric Pokémon in order to avoid being attacked by bird Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"If you find its nest, you shouldn't stick your hand inside. You'll get bitten by an irritated Grubbin.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It spits a sticky thread to stop opponents in their tracks, and then it grabs them in its sharp, sturdy mandibles to take them down.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its natural enemies, like Rookidee, may flee rather than risk getting caught in its large mandibles that can snap thick tree branches.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It uses its big jaws to dig nests into the forest floor, and it loves to feed on sweet tree sap.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Grubbin normally live underground, but if they get unearthed by Hoothoot, they may be found gathered around electric Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It spits sticky thread and winds them around branches, then swings nimbly from tree to tree in a pendulum-like motion.\"\n    }\n  ],\n  \"737\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its body is capable of storing electricity. On camping trips, people are grateful to have one around.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"From the food it digests, it generates electricity, and it stores this energy in its electric sac.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It buries itself in fallen leaves and barely moves, munching away on humus. If you accidentally step on one, you'll get a shock!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its stout shell provides excellent defense from attacks. It uses electricity on persistent opponents.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"While its durable shell protects it from attacks, Charjabug strikes at enemies with jolts of electricity discharged from the tips of its jaws.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its digestive processes convert the leaves it eats into electricity. An electric sac in its belly stores the electricity for later use.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Protected by a sturdy shell, Charjabug eats large quantities of fresh and decomposing leaf litter in order to evolve.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"As it digests fallen leaves, it generates and stores electricity, which it can discharge from the tips of its jaws.\"\n    }\n  ],\n  \"738\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It zips around, on sharp lookout for an opening. It concentrates electrical energy within its large jaws and uses it to zap its enemies.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It produces electricity via an electrical organ in its abdomen. It overwhelms bird Pokémon with shocking beams of electrical energy.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It has an organ that generates electricity in its abdomen. It concentrates energy in its strong jaws and fires off powerful jolts of electricity.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Vikavolt flusters opponents with acrobatic flying maneuvers. This creates an opening for it to deliver an electric beam attack.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It builds up electricity in its abdomen, focuses it through its jaws, and then fires the electricity off in concentrated beams.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If it carries a Charjabug to use as a spare battery, a flying Vikavolt can rapidly fire high-powered beams of electricity.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Displaying exceptional mobility, it weaves between trees and shoots down bird Pokémon with its electromagnetic beams.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When carrying a Charjabug, Vikavolt can receive electricity from it and then rapidly fire powerful electromagnetic beams from its large jaws.\"\n    }\n  ],\n  \"739\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"While guarding its weak points with its pincers, it looks for an opening and unleashes punches. When it loses, it foams at the mouth and faints.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It punches so much, its pincers often come off from overuse, but they grow back quickly. What little meat they contain is rich and delicious.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its hard pincers are well suited to both offense and defense. Fights between two Crabrawler are like boxing matches.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Crabrawler has been known to mistake Exeggutor for a coconut tree and climb it. The enraged Exeggutor shakes it off and stomps it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon punches trees and eats the berries that drop down, training itself and getting food at the same time.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If it loses its pincers, they'll quickly regrow. The pincers are popular ingredients in paella since their shells produce a tasty soup stock.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its hard pincers are well-suited to both offense and defense. Fights between two Crabrawler are like boxing matches.\"\n    }\n  ],\n  \"740\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It aimed for the top but got lost and ended up on a snowy mountain. Being forced to endure the cold, this Pokémon evolved and grew fur.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It just throws punches indiscriminately. In times of desperation, it can lop off its own pincers and fire them like rockets.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It stores coldness in its pincers and pummels its foes. It can even smash thick walls of ice to bits!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Before it stops to think, it just starts pummeling. There are records of its turning back avalanches with a flurry of punches.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The detached pincers of these Pokémon are delicious. Some Trainers bring Lechonk into the mountains just to search for them.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Though its punches are powerful, this Pokémon's movements are sluggish. It blows icy bubbles from its mouth to immobilize its opponents.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It punches things without pausing to think. There are even records of Crabominable forcing back an avalanche with a flurry of punches.\"\n    }\n  ],\n  \"741\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It beats its wings together to create fire. As it moves in the steps of its beautiful dance, it bathes opponents in intense flames.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Oricorio has sipped red nectar. Its passionate dance moves cause its enemies to combust in both body and mind.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It wins the hearts of its enemies with its passionate dancing and then uses the opening it creates to burn them up with blazing flames.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Oricorio has drunk red nectar. If its Trainer gives the wrong order, this passionate Pokémon becomes fiercely angry.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is incredibly popular, possibly because its passionate dancing is a great match with the temperament of Paldean people.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This form of Oricorio has sipped red nectar. It whips up blazing flames as it moves to the steps of its passionate dance.\"\n    }\n  ],\n  \"742\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It feeds on the nectar and pollen of flowers. Because it's able to sense auras, it can identify which flowers are about to bloom.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Myriads of Cutiefly flutter above the heads of people who have auras resembling those of flowers.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Nectar and pollen are its favorite fare. In fields of flowers, it gets into skirmishes with Butterfree over food.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Cutiefly can pick up the auras of living things. It skillfully reads those auras to predict its foes' movements and make fools of them.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Nectar and pollen are its favorite fare. You can find Cutiefly hovering around Gossifleur, trying to get some of Gossifleur's pollen.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"An opponent's aura can tell Cutiefly what that opponent's next move will be. Then Cutiefly can glide around the attack and strike back.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it senses the auras of people or Pokémon who are having fun, it will draw close and give them a painful poke with its long proboscis.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Cutiefly sucks up pollen and nectar with its long proboscis. It stores any pollen it doesn't finish eating in its fur.\"\n    }\n  ],\n  \"743\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It rolls up pollen into puffs. It makes many different varieties, some used as food and others used in battle.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Some of Ribombee's pollen puffs are highly nutritious. They are sometimes sold as supplements.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Rain makes pollen damp, so Ribombee hates rain. When it sees ominous clouds, it finds a hollow in a tree, where it waits stock-still.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It can predict the weather from moisture levels and wind direction. Ribombee only reveals itself when there are a few clear days in a row.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It makes pollen puffs from pollen and nectar. The puffs' effects depend on the type of ingredients and how much of each one is used.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Ribombee absolutely hate getting wet or rained on. In the cloudy Galar region, they are very seldom seen.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Ribombee can sense when people or Pokémon are feeling down, and it will cheer them up with handmade pollen puffs.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Pollen puffs created by skilled Ribombee can relieve fatigue, making the puffs a popular commodity.\"\n    }\n  ],\n  \"744\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It's considered to be a good Pokémon for beginners because of its friendliness, but its disposition grows rougher as it grows up.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon has lived with people since times long ago. It can sense when its Trainer is in the dumps and will stick close by its Trainer's side.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"As they develop, their disposition grows more violent and aggressive. Many Trainers find them too much to handle and abandon them.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it rubs the rocks on its neck against you, that's proof of its love for you. However, the rocks are sharp, so the gesture is quite painful!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon can bond very strongly with its Trainer, but it also has a habit of biting. Raising a Rockruff for a long time can be challenging.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon intimidates opponents by striking the ground with the rocks on its neck. The moment an opponent flinches, Rockruff attacks.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is very friendly when it's young. Its disposition becomes vicious once it matures, but it never forgets the kindness of its master.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon travels in a pack with others until it grows up. When its mood turns sour, it starts striking the ground with the rocks on its neck.\"\n    }\n  ],\n  \"745\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its quick movements confuse its enemies. Well equipped with claws and fangs, it also uses the sharp rocks in its mane as weapons.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When properly raised from a young age, it will become a trustworthy partner that will absolutely never betray its Trainer.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The sharp rocks in its mane can cut like knives. Lycanroc wears its prey down by degrees before finishing them off.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The rocks in its mane are sharper than a knife. Fragments that break off are treasured as good luck charms.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Lycanroc is calm and cautious. The rocks jutting from its mane are razor sharp.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With swift movements, this Pokémon gradually backs its prey into a corner. Lycanroc's fangs are always aimed toward opponents' weak spots.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Lycanroc attacks its prey with its sharp claws and fangs. It loyally obeys the instructions of a Trainer it trusts.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has a calm and collected demeanor. It swiftly closes in on its prey, then slices them with the rocks in its mane.\"\n    }\n  ],\n  \"746\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it's in trouble, its eyes moisten and begin to shine. The shining light attracts its comrades, and they stand together against their enemies.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It's awfully weak and notably tasty, so everyone is always out to get it. As it happens, anyone trying to bully it receives a painful lesson.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They're weak, so they move in schools. However, they can also often be seen all alone, having strayed from the school.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it's in a jam, its shining eyes attract others of its kind. The light from its eyes is visible almost 25 miles away.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Individually, they're incredibly weak. It's by gathering up into schools that they're able to confront opponents.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it senses danger, its eyes tear up. The sparkle of its tears signals other Wishiwashi to gather.\"\n    }\n  ],\n  \"747\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It plunges the poison spike on its head into its prey. When the prey has weakened, Mareanie deals the finishing blow with its 10 tentacles.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It's found crawling on beaches and seafloors. The coral that grows on Corsola's head is as good as a five-star banquet to this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They eat Corsola branches, so Mareanie are hated by craftsmen who work with Corsola branches that have naturally fallen off.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Aside from its head, its body parts regenerate quickly if they're cut off. After a good night's sleep, Mareanie is back to normal.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The first symptom of its sting is numbness. The next is an itching sensation so intense that it's impossible to resist the urge to claw at your skin.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Unlike their Alolan counterparts, the Mareanie of the Galar region have not yet figured out that the branches of Corsola are delicious.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon wanders the seaside looking for food. It often gets electric shocks from broken Pincurchin spines that it tries to eat.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has excellent regenerative capabilities. Legs that a Mareanie has lost have a very bitter, astringent flavor—they're not suitable as food.\"\n    }\n  ],\n  \"748\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Toxapex crawls along the ocean floor on its 12 legs. It leaves a trail of Corsola bits scattered in its wake.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Those attacked by Toxapex's poison will suffer intense pain for three days and three nights. Post-recovery, there will be some aftereffects.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"To attack, this Pokémon sends toxic spikes flying at its enemies. Ones that come close get mown down by the claws on its feet.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"With its 12 legs, it creates a dome to shelter within. The flow of the tides doesn't affect Toxapex in there, so it's very comfortable.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"To survive in the cold waters of Galar, this Pokémon forms a dome with its legs, enclosing its body so it can capture its own body heat.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Within the poison sac in its body is a poison so toxic that Pokémon as large as Wailord will still be suffering three days after it first takes effect.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon lives within a dome made by its own legs. Toxapex monitors its surroundings by sensing the flow of the tide through its spikes.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Toxapex gets into fierce battles with Bruxish over areas where warm ocean currents flow, but the odds are always against it.\"\n    }\n  ],\n  \"749\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The mud stuck to Mudbray's hooves enhances its grip and its powerful running gait.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It has a stubborn, individualistic disposition. Eating dirt, making mud, and playing in the mire all form part of its daily routine.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It loves playing in the mud. If it isn't showered with mud on a daily basis, it gets stressed out and stops listening to its Trainer.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Possessing mighty power, Mudbray can be loaded with 50 times its own body weight and will be totally fine.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Loads weighing up to 50 times as much as its own body weight pose no issue for this Pokémon. It's skilled at making use of mud.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It eats dirt to create mud and smears this mud all over its feet, giving them the grip needed to walk on rough terrain without slipping.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon covers itself in mud that it has regurgitated. The mud won't dry out even if it's exposed to the sun for a long time.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Though a slow walker, Mudbray is plenty strong. Its pace doesn't change even when it's loaded with 50 times its own body weight.\"\n    }\n  ],\n  \"750\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It spits a mud that provides resistance to both wind and rain, so the walls of old houses were often coated with it.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its heavy, mud-covered kicks are its best means of attack, and it can reduce large trucks to scrap without breaking a sweat.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It remains calm and unmoving no matter the situation. It mixes dirt with the saliva in its mouth to make a special kind of mud.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It can trudge mountain roads without rest for three days and three nights, all the while dragging a 10-ton load.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Mud that hardens around a Mudsdale's legs sets harder than stone. It's so hard that it allows this Pokémon to scrap a truck with a single kick.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Mudsdale has so much stamina that it could carry over 10 tons across the Galar region without rest or sleep.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon has been treasured not just for its physical labor but also because it produces high-quality mud used for making pottery.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its legs are fortified with mud and harder than stone, and they can reduce a large truck to scrap with one kick.\"\n    }\n  ],\n  \"751\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It crawls onto the land in search of food. Its water bubble allows it to breathe and protects its soft head.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When it comes across enemies or potential prey, this Pokémon smashes its water-bubble-covered head into them.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When two Dewpider meet, they display their water bubbles to each other. Then the one with the smaller bubble gets out of the other's way.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It can only breathe oxygen that has dissolved in water, so it wears a water bubble on its head when it walks around on land.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It forms a water bubble at the rear of its body and then covers its head with it. Meeting another Dewpider means comparing water-bubble sizes.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Dewpider normally lives underwater. When it comes onto land in search of food, it takes water with it in the form of a bubble on its head.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Dewpider uses sticky threads to create the water bubble that covers its head, so the bubble very rarely bursts.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It supports the water bubble that envelops its head with three of its legs. Sometimes it secretly swaps which legs are holding up the bubble.\"\n    }\n  ],\n  \"752\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It delivers headbutts with the water bubble on its head. Small Pokémon get sucked into the bubble, where they drown.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Despite what its appearance suggests, it cares for others. If it finds vulnerable, weak Pokémon, it protectively brings them into its water bubble.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It usually passes its time in the water. When its belly is full, it stores its subdued prey in the water bubble on its head.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It has a habit of storing things it values in its water bubble. If its Trainer doesn't watch out, Araquanid will try to put them in its bubble!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It launches water bubbles with its legs, drowning prey within the bubbles. This Pokémon can then take its time to savor its meal.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It acts as a caretaker for Dewpider, putting them inside its bubble and letting them eat any leftover food.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A caring Pokémon, Araquanid carries Dewpider around inside its water bubble to protect them as it walks. It protects its food in its bubble too.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It launches sticky water bubbles. Foes who lose consciousness while trapped inside these bubbles will get torn apart by Araquanid's gnashing jaws.\"\n    }\n  ],\n  \"753\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"During the day, it sleeps and soaks up light. When night falls, it walks around looking for a safer place to sleep.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They give off a sweet and refreshing scent. Cutiefly often gather near the tall grass where Fomantis are hiding.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When the sun rises, Fomantis spreads its four leaves and bathes in the sunlight. The tip of its head has a pleasant aroma.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It loves the sunshine. When it basks in the sunlight regularly, it grows up with vivid coloration.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When bathed in sunlight, this Pokémon emits a pleasantly sweet scent, which causes bug Pokémon to gather around it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"During the day, Fomantis basks in sunlight and sleeps peacefully. It wakes and moves around at night.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Fomantis hates having its naps interrupted. It fires off beams using energy it gathers by bathing in the sun.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Many Trainers give their Fomantis their own flowerpots so they can sunbathe in peace and quiet.\"\n    }\n  ],\n  \"754\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It requires a lot of effort to maintain Lurantis's vivid coloring, but some collectors enjoy this work and treat it as their hobby.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It fires beams from its sickle-shaped petals. These beams are powerful enough to cleave through thick metal plates.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"For self-protection, it pretends to be a bug Pokémon. Both of its arms bear keen-edged petals.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"As it slashes into its enemies, it looks like it's dancing. Its elegant appearance has led some to call it the most glamorous Grass Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon resembles a beautiful flower. A properly raised Lurantis will have gorgeous, brilliant colors.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The petals on this Pokémon's arms are thin and super sharp, and they can fire laser beams if Lurantis gathers light first.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"By masquerading as a bug Pokémon, it lowers the guard of actual bug Pokémon lured in by a scent of sweet flowers. Its sickles bring them down.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A lot of time and effort is required to maintain the vivid colors of its petals. This Pokémon puts its Trainer's attentiveness to the test.\"\n    }\n  ],\n  \"755\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It scatters spores that flicker and glow. Anyone seeing these lights falls into a deep slumber.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As it drowses the day away, it nourishes itself by sucking from tree roots. It wakens at the fall of night, wandering off in search of a new tree.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It scatters its shining spores around itself. Even though they're dangerous, nighttime tours of forests where Morelull live are popular.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It likes damp dark places. When night falls, the spores filling the caps of its mushrooms glow.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Pokémon living in the forest eat the delicious caps on Morelull's head. The caps regrow overnight.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Morelull live in forests that stay dark even during the day. They scatter flickering spores that put enemies to sleep.\"\n    }\n  ],\n  \"756\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Forests where Shiinotic live are treacherous to enter at night. People confused by its strange lights can never find their way home again.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It emits flickering spores that cause drowsiness. When its prey succumb to sleep, this Pokémon feeds on them by sucking in their energy.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It puts its prey to sleep and siphons off their vitality through the tip of its arms. If one of its kind is weakened, it helps by sending it vitality.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it starts fighting for territory with Parasect, the entire area gets completely coated in spores!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its flickering spores lure in prey and put them to sleep. Once this Pokémon has its prey snoozing, it drains their vitality with its fingertips.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If you see a light deep in a forest at night, don't go near. Shiinotic will make you fall fast asleep.\"\n    }\n  ],\n  \"757\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It burns its bodily fluids to create a poisonous gas. When its enemies become disoriented from inhaling the gas, it attacks them.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Volcanoes or dry, craggy places are its home. It emanates a sweet-smelling poisonous gas that attracts bug Pokémon, then attacks them.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The males will do whatever the females tell them. They give the females most of their food. Due to malnutrition, the males can't evolve.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It weakens opponents and sends them reeling with its poisonous gas. Salandit doesn't deal well with Spinda, since it's always reeling.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its venom sacs produce a fluid that this Pokémon then heats up with the flame in its tail. This process creates Salandit's poisonous gas.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This sneaky Pokémon will slink behind its prey and immobilize it with poisonous gas before the prey even realizes Salandit is there.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It taunts its prey and lures them into narrow, rocky areas where it then sprays them with toxic gas to make them dizzy and take them down.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Only female Salandit can produce gas laden with pheromones. Males entranced by this gas will do whatever the females tell them.\"\n    }\n  ],\n  \"758\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"For some reason, only females have been found. It creates a reverse harem of male Salandit that it lives with.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Filled with pheromones, its poisonous gas can be diluted to use in the production of luscious perfumes.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Salazzle lives deep in caves and forces the Salandit it has attracted with its pheromones to serve it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It punishes Salandit that couldn't bring it food with a fierce slap of its flame-spewing palm.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Only female Salazzle exist. They emit a gas laden with pheromones to captivate male Salandit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The winner of competitions between Salazzle is decided by which one has the most male Salandit with it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Salazzle makes its opponents light-headed with poisonous gas, then captivates them with alluring movements to turn them into loyal servants.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When two Salazzle meet, they will use their pheromone gas to fight over the males in each other's group.\"\n    }\n  ],\n  \"759\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Despite its adorable appearance, when it gets angry and flails about, its arms and legs could knock a pro wrestler sprawling.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"A touch from anyone except a known friend sends it into a surging frenzy. It's an incredibly dangerous Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It boasts power enough to split large trees in half. The organ on its rear releases an odor that it uses to communicate with others of its kind.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Stufful hates to be hugged or touched in any way. It will squirm, thrash, and resist with amazing power.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its fluffy fur is a delight to pet, but carelessly reaching out to touch this Pokémon could result in painful retaliation.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The way it protects itself by flailing its arms may be an adorable sight, but stay well away. This is flailing that can snap thick tree trunks.\"\n    }\n  ],\n  \"760\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This immensely dangerous Pokémon possesses overwhelming physical strength. Its habitat is generally off-limits.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon has the habit of hugging its companions. Many Trainers have left this world after their spines were squashed by its hug.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It waves its hands wildly in intimidation and warning. Life is over for anyone who doesn't run away as fast as possible.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It boasts tremendous physical strength. Many people call it the most dangerous Pokémon in the Alola region.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Once it accepts you as a friend, it tries to show its affection with a hug. Letting it do that is dangerous—it could easily shatter your bones.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The moves it uses to take down its prey would make a martial artist jealous. It tucks subdued prey under its arms to carry them to its nest.\"\n    }\n  ],\n  \"761\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A delectable aroma pours from its body. They are often swallowed whole by Toucannon lured by that wafting deliciousness.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Although it's too sugary for human consumption, Bounsweet's sweat can be watered down into a juice with just the right amount of sweetness.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Because of its sweet, delicious aroma, bird Pokémon are always after it, but it's not intelligent enough to care.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It tries to resist being swallowed by a bird Pokémon by spinning the sepals on its head. It's usually a fruitless attempt.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its body gives off a sweet, fruity scent that is extremely appetizing to bird Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When under attack, it secretes a sweet and delicious sweat. The scent only calls more enemies to it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its sweat is sweet, like syrup made from boiled-down fruit. Because of this, Bounsweet was highly valued in the past, when sweeteners were scarce.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A Greedent drawn in by the sweet scent of these Pokémon will tuck the Bounsweet in among the berries in its tail and carry them all away.\"\n    }\n  ],\n  \"762\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The sepals on its head developed to protect its body. These are quite hard, so even if pecked by bird Pokémon, this Pokémon is totally fine.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon is always bouncing around energetically. Other Pokémon are attracted by its lively appearance and pleasant aroma.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's protected by its hard sepals, so it plays with bird Pokémon without worry. They peck it relentlessly, but it doesn't care.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It bounces around, swinging the sepals on its head with abandon. They're quite painful when they smack you!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As it twirls like a dancer, a sweet smell spreads out around it. Anyone who inhales the scent will feel a surge of happiness.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Any Corvisquire that pecks at this Pokémon will be greeted with a smack from its sepals followed by a sharp kick.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Steenee spreads a sweet scent that makes others feel invigorated. This same scent is popular for antiperspirants.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Steenee bounces energetically through forests. If the rind that peels off its body is pulverized, it can be used to treat stomach pains.\"\n    }\n  ],\n  \"763\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its long, striking legs aren't just for show but to be used to kick with skill. In victory, it shows off by kicking the defeated, laughing boisterously.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"A Pokémon known for the beauty of its well-shaped legs, it sometimes appears as a mascot in advertisements for beauty salons.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"A master of grand and beautiful kicks, it can knock out even kickboxing champions with a single blow.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"A Pokémon with an aggressive personality and a mastery of kicking, it cackles every time it kicks an opponent.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This feared Pokémon has long, slender legs and a cruel heart. It shows no mercy as it stomps on its opponents.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A kick from the hardened tips of this Pokémon's legs leaves a wound in the opponent's body and soul that will never heal.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is proud and aggressive. However, it is said that a Tsareena will instantly become calm if someone touches the crown on its calyx.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon launches fierce yet elegant kicks with its long, slender legs. It views Quaquaval as its rival.\"\n    }\n  ],\n  \"764\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It attaches flowers to its highly nutritious vine. This revitalizes the flowers, and they give off an aromatic scent.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Baths prepared with the flowers from its vine have a relaxing effect, so this Pokémon is a hit with many people.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It stretches sticky vines out from its head and picks flowers to adorn itself with. When it doesn't have any flowers, it feels uneasy.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It picks flowers and sticks them to its body with fluids it produces. The aroma that wafts from its petals has a healing effect.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Comfey picks flowers with its vine and decorates itself with them. For some reason, flowers won't wither once they're attached to a Comfey.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Pokémon smell very nice. All Comfey wear different flowers, so each of these Pokémon has its own individual scent.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It uses its vine to pick flowers. The flowers that Comfey attaches to itself develop healing properties.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It prefers areas with lots of flowers. A Comfey adorned with flowers is a happy Comfey, and the flowers gain healing effects.\"\n    }\n  ],\n  \"765\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Known for its extreme intelligence, this Pokémon will look down on inexperienced Trainers, so it's best suited to veteran Trainers.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Deep in the jungle, high in the lofty canopy, this Pokémon abides. On rare occasions, it shows up at the beach to match wits with Slowking.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It normally spends its time meditating in the treetops. It throws Poké Balls and gives other Pokémon orders as it pleases.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Oranguru don't get along with each other, so they're always engaging in battles of wits to decide which one is superior.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With waves of its fan—made from leaves and its own fur—Oranguru skillfully gives instructions to other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It knows the forest inside and out. If it comes across a wounded Pokémon, Oranguru will gather medicinal herbs to treat it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"People used to mistake Oranguru for a human when they saw it issue command after command to the other Pokémon of the forest.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon lives quietly in the depths of the forest. The purple, cape-like fur gets longer and longer as Oranguru ages.\"\n    }\n  ],\n  \"766\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"They form groups of roughly 20 individuals. Their mutual bond is remarkable—they will never let down a comrade.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They battle with hard berries for weapons. Their techniques are passed from the boss to the group, generation upon generation.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"They use their saliva to stick leaves to their shoulders. You can tell what troop they belong to from the position of the leaves.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Berries are its weapons as well as the staple of its diet. The one that can throw a berry the farthest is the boss of the troop.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Displaying amazing teamwork, they follow the orders of their boss as they all help out in the search for their favorite berries.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Passimian live in groups of about 20, with each member performing an assigned role. Through cooperation, the group survives.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon battles by throwing hard berries. It won't obey a Trainer who throws Poké Balls without skill.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The boss chooses 10 members of the group to go out hunting. The hunting party will evenly split the food they find with the rest of the group.\"\n    }\n  ],\n  \"767\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Pokémon is a coward. As it desperately dashes off, the flailing of its many legs leaves a sparkling clean path in its wake.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its habitat varies from beaches to seabeds. A natural scavenger, it will gleefully chow down on anything edible, no matter how rotten.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It will pick up anything it finds on the ground. Sometimes it finds coins, so Murkrow and Meowth will go after it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"An astonishingly cowardly Pokémon, Wimpod will whir its legs at high speeds to run away if anything comes near it.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's nature's cleaner—it eats anything and everything, including garbage and rotten things. The ground near its nest is always clean.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Wimpod gather in swarms, constantly on the lookout for danger. They scatter the moment they detect an enemy's presence.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its habitat includes everything from beaches to seabeds. It is happy to eat up even rotten scraps, providing a sort of natural cleaning service.\"\n    }\n  ],\n  \"768\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"With a flashing slash of its giant sharp claws, it cleaves seawater—or even air—right in two.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It battles skillfully with its six arms, but spends most of its time peacefully meditating in caves deep beneath the sea.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The shell covering its body is as hard as diamond. This Pokémon will do anything it takes to win.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its claws, which it can extend and retract at will, are its greatest weapons. Golisopod is sometimes accompanied by Wimpod.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It will do anything to win, taking advantage of every opening and finishing opponents off with the small claws on its front legs.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They live in sunken ships or in holes in the seabed. When Golisopod and Grapploct battle, the loser becomes the winner's meal.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has the skill to cleave even air or seawater in two with a flash of its giant, sharp claws.\"\n    }\n  ],\n  \"769\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Born from a sand mound playfully built by a child, this Pokémon embodies the grudges of the departed.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It takes control of anyone who puts a hand in its mouth. And so it adds to the accumulation of its sand-mound body.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It likes the shovel on its head, so Sandygast will get serious and fight any children who come to take it back.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"If you build sand mounds when you're playing, destroy them before you go home, or they may get possessed and become Sandygast.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Grudges of the dead have possessed a mound of sand and become a Pokémon. Sandygast is fond of the shovel on its head.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Sandygast mainly inhabits beaches. It takes control of anyone who puts their hand into its mouth, forcing them to make its body bigger.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If it loses its shovel, it will stick something else— like a branch—in its head to make do until it finds another shovel.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It flings sand into the eyes of its prey and tries to close in on them while they're blinded, but since Sandygast is so slow, the prey tends to escape.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Grudges of the dead have possessed a mound of sand and become a Pokémon. Sandygast is fond of the shovel on its head.\"\n    }\n  ],\n  \"770\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Possessed people controlled by this Pokémon transformed its sand mound into a castle. As it evolved, its power to curse grew ever stronger.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Buried beneath the castle are masses of dried-up bones from those whose vitality it has drained.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Each of its grains of sand has its own will. Palossand eats small Pokémon and siphons away their vital essence while they're still alive.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Once it has whipped up a sandstorm to halt its opponents in their tracks, this terrifying Pokémon snatches away their vitality.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Palossand is known as the Beach Nightmare. It pulls its prey down into the sand by controlling the sand itself, and then it sucks out their souls.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon lives on beaches, but it hates water. Palossand can't maintain its castle-like shape if it gets drenched by a heavy rain.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The terrifying Palossand drags smaller Pokémon into its sandy body. Once its victims are trapped, it drains them of their vitality whenever it pleases.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"From the hollows in its arms, it fires the bones of its victims, which are all dried up after being drained of their vitality.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Heaps of bones lie buried beneath its castle. They came from those whom Palossand drained of vitality and left all dried up.\"\n    }\n  ],\n  \"771\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It lives in shallow seas, such as areas near a beach. It can eject its internal organs, which it uses to engulf its prey or battle enemies.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"These Pokémon line the beaches. The sticky mucous that covers their bodies can be used to soothe sunburned skin. How convenient!\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The tradition known as Pyukumuku chucking started from the custom of throwing Pyukumuku back into the sea after they wash onshore.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its entire body is covered in its own slime. If you accidentally step on one, you'll slip, and it will get mad and smack you!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It lives in warm, shallow waters. If it encounters a foe, it will spit out its internal organs as a means to punch them.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's covered in a slime that keeps its skin moist, allowing it to stay on land for days without drying up.\"\n    }\n  ],\n  \"772\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The heavy control mask it wears suppresses its intrinsic capabilities. This Pokémon has some hidden special power.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Due to the danger that this synthetic Pokémon may go on a rampage, it wears a control mask to restrain its power.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"A Pokémon weapon developed for a specific mission, it went berserk during an experiment, so it was cryogenically frozen.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"There's danger of its going on a rampage, so its true power is sealed away beneath its control mask.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Rumor has it that the theft of top-secret research notes led to a new instance of this Pokémon being created in the Galar region.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It was modeled after a mighty Pokémon of myth. The mask placed upon it limits its power in order to keep it under control.\"\n    }\n  ],\n  \"773\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its trust in its partner is what awakens it. This Pokémon is capable of changing its type, a flexibility that is well displayed in battle.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Although its name was Type: Null at first, the boy who evolved it into this form gave it the name by which it is now known.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This is its form once it has awakened and evolved. Freed from its heavy mask, its speed is greatly increased.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Through the bond it formed with its Trainer, its will was strengthened, and it was able to destroy its control mask.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A solid bond of trust between this Pokémon and its Trainer awakened the strength hidden within Silvally. It can change its type at will.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The final factor needed to release this Pokémon's true power was a strong bond with a Trainer it trusts.\"\n    }\n  ],\n  \"774\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Originally making its home in the ozone layer, it hurtles to the ground when the shell enclosing its body grows too heavy.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Strong impacts can knock it out of its shell. This Pokémon was born from mutated nanoparticles.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It lives in the ozone layer, where it becomes food for stronger Pokémon. When it tries to run away, it falls to the ground.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although its outer shell is uncommonly durable, the shock of falling to the ground smashes the shell to smithereens.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is born in the ozone layer. It falls to the ground once the outer shell enclosing its core grows heavy.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It will react when touched or called to, but it's unknown whether such responses indicate consciousness.\"\n    }\n  ],\n  \"775\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It is born asleep, and it dies asleep. All its movements are apparently no more than the results of it tossing and turning in its dreams.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The log it holds was given to it by its parents at birth. It has also been known to cling to the arm of a friendly Trainer.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It stays asleep from the moment it's born. When it falls into a deep sleep, it stops moving altogether.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It remains asleep from birth to death as a result of the sedative properties of the leaves that form its diet.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Komala spends its entire life sleeping. It feeds on leaves that contain a potent poison only Komala can break down.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A potent anesthetic can be made by diluting Komala's drool. This anesthetic was used for surgeries in the past.\"\n    }\n  ],\n  \"776\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The shell on its back is chemically unstable and explodes violently if struck. The hole in its stomach is its weak point.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It gushes fire and poisonous gases from its nostrils. Its dung is an explosive substance and can be put to various uses.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It lives in volcanoes and eats sulfur and other minerals. Materials from the food it eats form the basis of its explosive shell.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its exploding shell poses a real danger but is sensitive to moisture. On rainy days, Turtonator takes silent refuge in caves.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Explosive substances coat the shell on its back. Enemies that dare attack it will be blown away by an immense detonation.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Eating sulfur in its volcanic habitat is what causes explosive compounds to develop in its shell. Its droppings are also dangerously explosive.\"\n    }\n  ],\n  \"777\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The spiny fur on its back is normally at rest. When this Pokémon becomes agitated, its fur stands on end and stabs into its attackers.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The long hairs on its back act as lightning rods. The bolts of lightning it attracts are stored as energy in its electric sac.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it's surprised or agitated, the 14 fur spikes on its back will stand up involuntarily.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to produce electricity is somewhat limited, so it gets charged up by letting lightning strike it!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With the long hairs on its back, this Pokémon takes in electricity from other electric Pokémon. It stores what it absorbs in an electric sac.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it's in trouble, it curls up into a ball, makes its fur spikes stand on end, and then discharges electricity indiscriminately.\"\n    }\n  ],\n  \"778\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This Pokémon lives in dark places untouched by sunlight. When it appears before humans, it hides itself under a cloth that resembles a Pikachu.\"\n    },\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its actual appearance is unknown. A scholar who saw what was under its rag was overwhelmed by terror and died from the shock.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"A lonely Pokémon, it conceals its terrifying appearance beneath an old rag so it can get closer to people and other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it's a quiet, lonely Pokémon, if you try to look at what's under its rag, it will become agitated and resist violently.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"A gust of wind revealed what hides under this Pokémon's rag to a passing Trainer, who went home and died painfully that very night.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It wears a rag fashioned into a Pikachu costume in an effort to look less scary. Unfortunately, the costume only makes it creepier.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"There was a scientist who peeked under Mimikyu's old rag in the name of research. The scientist died of a mysterious disease.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon lives in dark places untouched by sunlight. When it appears before humans, it hides itself under a cloth that resembles a Pikachu.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Mimikyu was only recently identified as a Pokémon. Previously, people thought it was just a ghost wearing a cloth.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A lonely Pokémon, it conceals its terrifying appearance beneath an old rag so it can get closer to people and other Pokémon.\"\n    }\n  ],\n  \"779\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it unleashes its psychic power from the protuberance on its head, the grating sound of grinding teeth echoes through the area.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It stuns its prey with psychokinesis and then grinds them to mush with its strong teeth. Even Shellder's shell is no match for it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It burrows beneath the sand, radiating psychic power from the protuberance on its head. It waits for prey as it surveys the area.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its skin is thick enough to fend off Mareanie's spikes. With its robust teeth, Bruxish crunches up the spikes and eats them.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It grinds its teeth with great force to stimulate its brain. It fires the psychic energy created by this process from the protuberance on its head.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When sunlight reflects on the ripples created by a Bruxish grinding its teeth, the water all around sparkles brilliantly.\"\n    }\n  ],\n  \"780\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It has a compassionate personality, but if it is angered, it completely destroys its surroundings with its intense breath.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon is friendly to people and loves children most of all. It comes from deep in the mountains to play with children it likes in town.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"If a child it has made friends with is bullied, Drampa will find the bully's house and burn it to the ground.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It appears in towns and plays with the children. Drampa will protect kids when they're in danger, so their moms don't have to worry.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The mountains it calls home are nearly two miles in height. On rare occasions, it descends to play with the children living in the towns below.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Drampa is a kind and friendly Pokémon—up until it's angered. When that happens, it stirs up a gale and flattens everything around.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has a compassionate personality, but if it is angered, it completely destroys its surroundings with its intense breath.\"\n    }\n  ],\n  \"781\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Swinging its massive anchor, it can KO Wailord in a single blow. What appears to be green seaweed is actually its body.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The soul of seaweed adrift in the waves became reborn as this Pokémon. It maintains itself with new infusions of seabed detritus and seaweed.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It wraps its prey in green seaweed and sucks away their vitality. It only likes to go after big prey like Wailord.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its chain-like green seaweed can stretch outward for hundreds of yards. For some reason, it gets along well with Skrelp.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After a piece of seaweed merged with debris from a sunken ship, it was reborn as this ghost Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"After lowering its anchor, it waits for its prey. It catches large Wailord and drains their life-force.\"\n    }\n  ],\n  \"782\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It expresses its feelings by smacking its scales. Metallic sounds echo through the tall mountains where Jangmo-o lives.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They live in mountains where no trace of humans can be detected. Jangmo-o grow little by little as they battle one another.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It smacks the scales on its head against rocks or against the ground to frighten its opponents. It can also contact its friends with these noises.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It will never show an enemy its back in battle. Ancient warriors liked Jangmo-o for its valiant disposition and made it one of their own.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"They learn to fight by smashing their head scales together. The dueling strengthens both their skills and their spirits.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Jangmo-o strikes its scales to communicate with others of its kind. Its scales are actually fur that's become as hard as metal.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The scale atop its head is useful for both offense and defense. It bravely stands and faces its foes rather than turning tail, even if its foes are strong.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They communicate with their allies using the sounds their scales make when struck. A group of these Pokémon causes quite a racket.\"\n    }\n  ],\n  \"783\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It leaps at its prey with a courageous shout. Its scaly punches tear its opponents to shreds.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It sheds and regrows its scales on a continuous basis. The scales become harder and sharper each time they're regrown.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It makes noise by clanging its scales together. When the rhythm has reached its peak, Hakamo-o attacks.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The scales it sheds can be molded and processed to make pots and pans. They conduct heat well, so they're a popular item.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The scaleless, scarred parts of its body are signs of its strength. It shows them off to defeated opponents.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Before attacking its enemies, it clashes its scales together and roars. Its sharp claws shred the opposition.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It gets into fistfights so intense that the scales on its arms peel off. Bare arms are a sign of valiance.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It fires itself up by striking its scales with force as it dances. Its roar is a battle cry.\"\n    }\n  ],\n  \"784\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When it spots enemies, it threatens them by jingling the scales on its tail. Weak opponents will crack and flee in panic.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its rigid scales function as offense and defense. In the past, its scales were processed and used to make weapons and other commodities.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it howls after finishing off its prey, the metallic sounds of its celebrating comrades can be heard from all around.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It battles valiantly with its fists, which are armored in steel scales. Kommo-o specializes in uppercuts.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It clatters its tail scales to unnerve opponents. This Pokémon will battle only those who stand steadfast in the face of this display.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Certain ruins have paintings of ancient warriors wearing armor made of Kommo-o scales.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lets its arm hang, and then \\\"quick as a flash\\\" swings upward to land its specialty punch and send the opponent flying high into the sky.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It bashes its scales to test its opponents' mettle. The sound of struck Kommo-o scales frightens weaker foes and sends them running.\"\n    }\n  ],\n  \"785\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This guardian deity of Melemele is brimming with curiosity. It summons thunderclouds and stores their lightning inside its body.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It confuses its enemies by flying too quickly for the eye to follow. It has a hair-trigger temper but forgets what made it angry an instant later.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it's called a guardian deity, if a person or Pokémon puts it in a bad mood, it will become a malevolent deity and attack.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The lightning-wielding guardian deity of Melemele, Tapu Koko is brimming with curiosity and appears before people from time to time.\"\n    }\n  ],\n  \"786\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This guardian deity of Akala is guilelessly cruel. The fragrant aroma of flowers is the source of its energy.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As it flutters about, it scatters its strangely glowing scales. Touching them is said to restore good health on the spot.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It heals the wounds of people and Pokémon by sprinkling them with its sparkling scales. This guardian deity is worshiped on Akala.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although called a guardian deity, Tapu Lele is devoid of guilt about its cruel disposition and can be described as nature incarnate.\"\n    }\n  ],\n  \"787\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It pulls large trees up by the roots and swings them around. It causes vegetation to grow, and then it absorbs energy from the growth.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The guardian deity of Ula'ula is a lazy Pokémon. It commands plants to immobilize its foes and then deals them a savage blow with its horns.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it's called a guardian deity, it's violent enough to crush anyone it sees as an enemy.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It makes ringing sounds with its tail to let others know where it is, avoiding unneeded conflicts. This guardian deity of Ula'ula controls plants.\"\n    }\n  ],\n  \"788\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The dense fog it creates brings the downfall and destruction of its confused enemies. Ocean currents are the source of its energy.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The guardian deity of Poni, it can control water. People say it can create pure water that will wash away any uncleanness.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This guardian deity of Poni Island manipulates water. Because it lives deep within a thick fog, it came to be both feared and revered.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although it's called a guardian deity, terrible calamities sometimes befall those who recklessly approach Tapu Fini.\"\n    }\n  ],\n  \"789\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its body is gaseous and frail. It slowly grows as it collects dust from the atmosphere.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"In ages past, it was called the child of the stars. It's said to be a Pokémon from another world, but no specific details are known.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Even though its helpless, gaseous body can be blown away by the slightest breeze, it doesn't seem to care.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Whether or not it's a Pokémon from this world is a mystery. When it's in a jam, it warps away to a safe place to hide.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon came from another universe. Its gaseous body is so light that even a gentle breeze can blow it away.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Cosmog is very curious but not very cautious, often placing itself in danger. If things start to look dicey, it teleports away.\"\n    }\n  ],\n  \"790\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Motionless as if dead, its body is faintly warm to the touch. In the distant past, it was called the cocoon of the stars.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"There's something accumulating around the black core within its hard shell. People think this Pokémon may come from another world.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The king who ruled Alola in times of antiquity called it the \\\"cocoon of the stars\\\" and built an altar to worship it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"As it absorbs light, Cosmoem continues to grow. Its golden shell is surprisingly solid.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The absorption of starlight fuels this Pokémon's growth. The shell that encases it is harder than any known material.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It sucks in dust from the air at an astounding rate, frantically building up energy within its core as preparation for evolution.\"\n    }\n  ],\n  \"791\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It is said to live in another world. The intense light it radiates from the surface of its body can make the darkest of nights light up like midday.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon is said to be a male evolution of Cosmog. At the activation of its third eye, it departs for another world.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Sometimes the result of its opening an Ultra Wormhole is that energy and life-forms from other worlds are called here to this world.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"In writings from the distant past, it's called by the name \\\"the beast that devours the sun.\\\"\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When light radiates from its body, this Pokémon could almost appear to be the sun. It will dispel any darkness and light up the world.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Solgaleo was once known as the Beast That Devours the Sun. Energy in the form of light radiates boundlessly from it.\"\n    }\n  ],\n  \"792\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It is said to be a female evolution of Cosmog. When its third eye activates, away it flies to another world.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Said to live in another world, this Pokémon devours light, drawing the moonless dark veil of night over the brightness of day.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Records of it exist in writings from long, long ago, where it was known by the name \\\"the beast that calls the moon.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It sometimes summons unknown powers and [[Ultra Beasts|life-forms]] here to this world from holes that lead to other worlds.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Known as the Beast That Calls the Moon, this Pokémon lives by taking in any and all light and converting it into its own energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It steals the light from its surroundings and then becomes the full moon, showering its own light across the night sky.\"\n    }\n  ],\n  \"793\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"One of several mysterious Ultra Beasts. People on the street report observing those infested by it suddenly becoming violent.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"One of the Ultra Beasts. It's unclear whether or not this Pokémon is sentient, but sometimes it can be observed behaving like a young girl.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"A life-form from another world, it was dubbed a UB and is thought to produce a strong neurotoxin.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It appeared in this world from an Ultra Wormhole. Nihilego appears to be a parasite that lives by feeding on people and Pokémon.\"\n    }\n  ],\n  \"794\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Ultra Beast appeared from another world. It shows off its body, but whether that display is a boast or a threat remains unclear.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"A mysterious life-form called an Ultra Beast. Witnesses saw it pulverize a dump truck with a single punch.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it's alien to this world and a danger here, it's apparently a common organism in the world where it normally lives.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Buzzwole goes around showing off its abnormally swollen muscles. It is one kind of Ultra Beast.\"\n    }\n  ],\n  \"795\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"One of the dangerous Ultra Beasts, it has been spotted running across the land at terrific speeds.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"One of the Ultra Beasts. It refuses to touch anything, perhaps because it senses some uncleanness in this world.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"A life-form that lives in another world, its body is thin and supple, but it also possesses great power.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although it's alien to this world and a danger here, it's apparently a common organism in the world where it normally lives.\"\n    }\n  ],\n  \"796\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"One of the mysterious life-forms known as Ultra Beasts. Astonishing electric shocks emanate from its entire body, according to witnesses.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It appeared from the Ultra Wormhole. It raided a power plant, so people think it energizes itself with electricity.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it's alien to this world and a danger here, it's apparently a common organism in the world where it normally lives.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They've been dubbed Ultra Beasts. Some of them stand unmoving, like trees, with their arms and legs stuck into the ground.\"\n    }\n  ],\n  \"797\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It appeared from the Ultra Wormhole. Witnesses observed it flying across the sky at high speed.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"One kind of Ultra Beast. Witnesses have seen it burn down a forest by expelling gas from its two arms.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"One of the dangerous UBs, high energy readings can be detected coming from both of its huge arms.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although it's alien to this world and a danger here, it's apparently a common organism in the world where it normally lives.\"\n    }\n  ],\n  \"798\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Ultra Beast came from the Ultra Wormhole. It seems not to attack enemies on its own, but its sharp body is a dangerous weapon in itself.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"One of the Ultra Beast life-forms, it was observed cutting down a gigantic steel tower with one stroke of its blade.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Ultra Beast's body, which is as thin as paper, is like a sharpened sword.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Although it's alien to this world and a danger here, it's apparently a common organism in the world where it normally lives.\"\n    }\n  ],\n  \"799\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It has gobbled mountains and swallowed whole buildings, according to reports. It's one of the Ultra Beasts.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"A dangerous Ultra Beast, it appears to be eating constantly, but for some reason its droppings have never been found.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it's alien to this world and a danger here, it's apparently a common organism in the world where it normally lives.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"An unknown life-form called a UB. It may be constantly hungry—it is certainly always devouring something.\"\n    }\n  ],\n  \"800\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Reminiscent of the Ultra Beasts, this life-form, apparently asleep underground, is thought to have come from another world in ancient times.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Light is apparently the source of its energy. It has an extraordinarily vicious disposition and is constantly firing off laser beams.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It looks somehow pained as it rages around in search of light, which serves as its energy. It's apparently from another world.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Light is the source of its energy. If it isn't devouring light, impurities build up in it and on it, and Necrozma darkens and stops moving.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It survives by absorbing light. After a long time spent slumbering underground, impurities accumulated within it, causing its body to darken.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It needs light to survive, and it goes on a rampage seeking it out. Its laser beams will cut anything to pieces.\"\n    }\n  ],\n  \"801\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This artificial Pokémon, constructed more than 500 years ago, can understand human speech but cannot itself speak.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its mechanized body is merely a vessel. Its true self is its Soul-Heart, an artificial soul.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It synchronizes its consciousness with others to understand their feelings. This faculty makes it useful for taking care of people.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Built roughly 500 years ago by a scientist, the part called the Soul-Heart is the actual life-form.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon was built by a scientist roughly 500 years ago. The part called the Soul-Heart is the actual life-form.\"\n    }\n  ],\n  \"802\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Able to conceal itself in shadows, it never appears before humans, so its very existence was the stuff of myth.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It lurks in the shadows of others, copying their movements and powers. This Pokémon is craven and cowering.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It slips into the shadows of others and mimics their powers and movements. As it improves, it becomes stronger than those it's imitating.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It sinks into the shadows of people and Pokémon, where it can understand their feelings and copy their capabilities.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"By slipping into the shadow of a martial arts master and copying their movements, this Pokémon learned the ultimate techniques.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon can conceal itself in any shadow, so it went undiscovered for a long time.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It slips into others' shadows and mimics their movements and powers. With time, its prowess will surpass that of those it originally imitated.\"\n    }\n  ],\n  \"803\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This Ultra Beast is well enough liked to be chosen as a first partner in its own world.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"An Ultra Beast that lives in a different world, it cackles wildly as it sprays its opponents with poison from the needles on its head.\"\n    }\n  ],\n  \"804\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It stores hundreds of liters of poisonous liquid inside its body. It is one of the organisms known as UBs.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"One kind of Ultra Beast, it fires a glowing, venomous liquid from its needles. This liquid is also immensely adhesive.\"\n    }\n  ],\n  \"805\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It appeared from an Ultra Wormhole. Each one appears to be made up of many life-forms stacked one on top of each other.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When stone walls started moving and attacking, the brute's true identity was this mysterious life-form, which brings to mind an Ultra Beast.\"\n    }\n  ],\n  \"806\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It slithers toward people. Then, without warning, it triggers the explosion of its own head. It's apparently one kind of Ultra Beast.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"A UB that appeared from an Ultra Wormhole, it causes explosions, then takes advantage of opponents' surprise to rob them of their vitality.\"\n    }\n  ],\n  \"807\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It electrifies its claws and tears its opponents apart with them. Even if they dodge its attack, they'll be electrocuted by the flying sparks.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It approaches its enemies at the speed of lightning, then tears them limb from limb with its sharp claws.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It runs as fast as lightning strikes, shredding its opponents with its high-voltage claws.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Electricity sparks from the pads on its limbs. Wherever Zeraora runs, lightning flashes and thunder echoes.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Electricity sparks from the pads on its limbs. Wherever Zeraora runs, lightning flashes and thunder echoes.\"\n    }\n  ],\n  \"808\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It melts particles of iron and other metals found in the subsoil, so it can absorb them into its body of molten steel.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It melts particles of iron and other metals found in the subsoil, so it can absorb them into its body of molten steel.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It dissolves and eats metal. Circulating liquid metal within its body is how it generates energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They live as a group, but when the time comes, one strong Meltan will absorb all the others and evolve.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its body is made up of molten steel. It melts particles of iron and other metals it finds in the ground and absorbs them into itself.\"\n    }\n  ],\n  \"809\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Revered long ago for its capacity to create iron from nothing, for some reason it has come back to life after 3,000 years.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Revered long ago for its capacity to create iron from nothing, for some reason it has come back to life after 3,000 years.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"At the end of its life-span, Melmetal will rust and fall apart. The small shards left behind will eventually be reborn as Meltan.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Centrifugal force is behind the punches of Melmetal's heavy hex-nut arms. Melmetal is said to deliver the strongest punches of all Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It was worshipped long ago for its capacity to produce iron. For some reason, it has come back to life after 3,000 years.\"\n    }\n  ],\n  \"810\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it uses its special stick to strike up a beat, the sound waves produced carry revitalizing energy to the plants and flowers in the area.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It attacks with rapid beats of its stick. As it strikes with amazing speed, it gets more and more pumped.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The stick Grookey holds has grown harder and more flexible after soaking in the energy that emanates from inside Grookey's body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"As Grookey strikes everything in sight with its stick, it has more and more fun, and its rhythm becomes livelier.\"\n    }\n  ],\n  \"811\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The faster a Thwackey can beat out a rhythm with its two sticks, the more respect it wins from its peers.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it's drumming out rapid beats in battle, it gets so caught up in the rhythm that it won't even notice that it's already knocked out its opponent.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It skillfully uses its two sticks not only for drumming out rapid beats but also for pummeling opponents during battle.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It becomes intensely focused while it drums out vigorous beats—so much so that sometimes it won't listen to its Trainer's commands.\"\n    }\n  ],\n  \"812\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"By drumming, it taps into the power of its special tree stump. The roots of the stump follow its direction in battle.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The one with the best drumming techniques becomes the boss of the troop. It has a gentle disposition and values harmony among its group.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Though it has a calm disposition, it won't tolerate those who drum up discord. It strictly disciplines offenders until they learn their lesson.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When one Rillaboom challenges another who leads a troop, a drumming battle commences. The victor becomes the troop's new boss.\"\n    }\n  ],\n  \"813\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Once its body has heated up, Scorbunny can use the full extent of its power. That's why it does warm-up exercises.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A warm-up of running around gets fire energy coursing through this Pokémon's body. Once that happens, it's ready to fight at full power.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has special pads on the backs of its feet, and one on its nose. Once it's raring to fight, these pads radiate tremendous heat.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Once its body has heated up, Scorbunny can use the full extent of its power. That's why it does warm-up exercises.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Fire energy gathers in the pads of its feet, raising their temperature. Once hot, Scorbunny's footpads can deal heavy damage to opponents.\"\n    }\n  ],\n  \"814\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Thanks to its soft and fluffy fur, Raboot can easily heat up its fire energy and produce flames with more power.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its thick and fluffy fur protects it from the cold and enables it to use hotter fire moves.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It kicks berries right off the branches of trees and then juggles them with its feet, practicing its footwork.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Thanks to its soft and fluffy fur, Raboot can easily heat up its fire energy and produce flames with more power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"While it prides itself on its varied kicking moves, it can also deliver powerful headbutts once its flames have heated up its forehead.\"\n    }\n  ],\n  \"815\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It juggles a pebble with its feet, turning it into a burning soccer ball. Its shots strike opponents hard and leave them scorched.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It juggles a pebble with its feet, turning it into a burning soccer ball. Its shots strike opponents hard and leave them scorched.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's skilled at both offense and defense, and it gets pumped up when cheered on. But if it starts showboating, it could put itself in a tough spot.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Although Cinderace loses its cool easily, it will battle flawlessly for a Trainer it trusts.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Using a ball that it made out of flames, Cinderace blinds its opponents and keeps them at bay.\"\n    }\n  ],\n  \"816\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When scared, this Pokémon cries. Its tears pack the chemical punch of 100 onions, and attackers won't be able to resist weeping.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it gets wet, its skin changes color, and this Pokémon becomes invisible as if it were camouflaged.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It gets berries to eat by shooting them down with bullets of water it spurts from its mouth. Its aim is perfect.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's a very cautious Pokémon. When it has no choice but to battle, it hides itself before attacking.\"\n    }\n  ],\n  \"817\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A clever combatant, this Pokémon battles using water balloons created with moisture secreted from its palms.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Highly intelligent but also very lazy, it keeps enemies out of its territory by laying traps everywhere.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It extends its long, slimy tongue at blinding speeds and finishes off its prey with great skill.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Highly intelligent but also very lazy, it defends its home by laying traps.\"\n    }\n  ],\n  \"818\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It has many hidden capabilities, such as fingertips that can shoot water and a membrane on its back that it can use to glide through the air.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its nictitating membranes let it pick out foes' weak points so it can precisely blast them with water that shoots from its fingertips at Mach 3.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It uses special lenses in its eyes to sense things about its opponents—like their body heat—then attacks once it identifies a weak spot.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It may present itself as being well-mannered, but deep down, it still has a lazy side. It will slack off when its Trainer isn't looking.\"\n    }\n  ],\n  \"819\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"No matter how much it stuffs its belly with food, it is always anxious about getting hungry again. So, it stashes berries in its cheeks and tail.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Found throughout the Galar region, this Pokémon becomes uneasy if its cheeks are ever completely empty of berries.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It eats berries nonstop—a habit that has made it more resilient than it looks. It'll show up on farms, searching for yet more berries.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It stores berries in its cheeks. When there are no berries to be found, Skwovet will stuff pebbles into its cheeks to stave off its cravings.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"No matter how much it stuffs its belly with food, it is always anxious about getting hungry again. So, it stashes berries in its cheeks and tail.\"\n    }\n  ],\n  \"820\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Growing up with a family of foodies, this Pokémon learned to love cooking. It will happily eat pretty much anything, so it tends to season food rather carelessly.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It stashes berries in its tail—so many berries that they fall out constantly. But this Pokémon is a bit slow-witted, so it doesn't notice the loss.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Common throughout the Galar region, this Pokémon has strong teeth and can chew through the toughest of berry shells.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"If it spots a berry tree, it will immediately go to gather berries without a sideways glance—even if it's in the middle of a battle.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon makes off with heaps of fallen berries by wrapping them in its tail, which is roughly twice the length of its body.\"\n    }\n  ],\n  \"821\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This Pokémon is brave and reckless. The white markings around a Rookidee's eyes intimidate fainthearted Pokémon.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It will bravely challenge any opponent, no matter how powerful. This Pokémon benefits from every battle—even a defeat increases its strength a bit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Jumping nimbly about, this small-bodied Pokémon takes advantage of even the slightest opportunity to disorient larger opponents.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is brave and reckless. The white markings around a Rookidee's eyes intimidate fainthearted Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The females are fussier than the males. If another creature dirties a female Rookidee's wings, it'll peck the offender relentlessly in a burning rage.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This valiant Pokémon will challenge any foe, no matter how mighty. Even if that backfires and Rookidee loses, it grows from the experience.\"\n    }\n  ],\n  \"822\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"This intelligent Pokémon will quickly learn how to use any tool it can hold in its beak or its talons.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Smart enough to use tools in battle, these Pokémon have been seen picking up rocks and flinging them or using ropes to wrap up enemies.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The lessons of many harsh battles have taught it how to accurately judge an opponent's strength.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's said that the reason behind Corvisquire's high level of intelligence is the large size of its brain relative to those of other bird Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This intelligent Pokémon will quickly learn how to use any tool it can hold in its beak or its talons.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Corvisquire are intelligent enough to use tools. They'll use their feet to pick up and fling pebbles or wrap their enemies in ropes.\"\n    }\n  ],\n  \"823\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Although its wings have partly turned to steel and become heavy as a result, this Pokémon flies through the skies with ease.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon reigns supreme in the skies of the Galar region. The black luster of its steel body could drive terror into the heart of any foe.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With their great intellect and flying skills, these Pokémon very successfully act as the Galar region's airborne taxi service.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Corviknight can't serve as a taxi service in Paldea because the Pokémon's natural predators will attack it while it flies, endangering the customer.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Although its wings have partly turned to steel and become heavy as a result, this Pokémon flies through the skies with ease.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its wings, now made of steel, are extremely tough. Even if it's attacked mid-flight, Corviknight flies on mightily through the sky, unbothered.\"\n    }\n  ],\n  \"824\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A constant collector of information, this Pokémon is very smart. Very strong is what it isn't.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Often found in gardens, this Pokémon has hairs on its body that it uses to assess its surroundings.\"\n    }\n  ],\n  \"825\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It barely moves, but it's still alive. Hiding in its shell without food or water seems to have awakened its psychic powers.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"As it grows inside its shell, it uses its psychic abilities to monitor the outside world and prepare for evolution.\"\n    }\n  ],\n  \"826\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's famous for its high level of intelligence, and the large size of its brain is proof that it also possesses immense psychic power.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It emits psychic energy to observe and study what's around it—and what's around it can include things over six miles away.\"\n    }\n  ],\n  \"827\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Aided by the soft pads on its feet, it silently raids the food stores of other Pokémon. It survives off its ill-gotten gains.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Cunning and cautious, this Pokémon survives by stealing food from others. It erases its tracks with swipes of its tail as it makes off with its plunder.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It filches food from people and Pokémon alike. While fleeing the scene, it wipes its tracks away with its tail to throw off pursuers.\"\n    }\n  ],\n  \"828\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It secretly marks potential targets with a scent. By following the scent, it stalks its targets and steals from them when they least expect it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With a lithe body and sharp claws, it goes around stealing food and eggs. Boltund is its natural enemy.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This clever Pokémon marks potential targets with its scent, then follows its nose to locate their nests.\"\n    }\n  ],\n  \"829\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It anchors itself in the ground with its single leg, then basks in the sun. After absorbing enough sunlight, its petals spread as it blooms brilliantly.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It whirls around in the wind while singing a joyous song. This delightful display has charmed many into raising this Pokémon.\"\n    }\n  ],\n  \"830\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The seeds attached to its cotton fluff are full of nutrients. It spreads them on the wind so that plants and other Pokémon can benefit from them.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The cotton on the head of this Pokémon can be spun into a glossy, gorgeous yarn—a Galar regional specialty.\"\n    }\n  ],\n  \"831\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its curly fleece is such an effective cushion that this Pokémon could fall off a cliff and stand right back up at the bottom, unharmed.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If its fleece grows too long, Wooloo won't be able to move. Cloth made with the wool of this Pokémon is surprisingly strong.\"\n    }\n  ],\n  \"832\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Weave a carpet from its springy wool, and you end up with something closer to a trampoline. You'll start to bounce the moment you set foot on it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its majestic horns are meant only to impress the opposite gender. They never see use in battle.\"\n    }\n  ],\n  \"833\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Apparently the itch of its teething impels it to snap its jaws at anything in front of it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It starts off battles by attacking with its rock-hard horn, but as soon as the opponent flinches, this Pokémon bites down and never lets go.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its large front tooth is still growing in. When the tooth itches, this Pokémon will bite another Chewtle's horn, and the two Pokémon will tussle.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A popular game among children is to lift up sticks that Chewtle have bitten onto to see whose Chewtle can hang on the longest.\"\n    }\n  ],\n  \"834\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With jaws that can shear through steel rods, this highly aggressive Pokémon chomps down on its unfortunate prey.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon rapidly extends its retractable neck to sink its sharp fangs into distant enemies and take them down.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its massive, jagged teeth can crush a boulder in a single bite. This Pokémon has an extremely vicious disposition.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Drednaw lurks along the shoreline. When prey come to drink water, Drednaw stretches its neck out and chomps down on them.\"\n    }\n  ],\n  \"835\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is very popular as a herding dog in the Galar region. As it runs, it generates electricity from the base of its tail.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This gluttonous Pokémon only assists people with their work because it wants treats. As it runs, it crackles with electricity.\"\n    }\n  ],\n  \"836\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon generates electricity and channels it into its legs to keep them going strong. Boltund can run nonstop for three full days.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It sends electricity through its legs to boost their strength. Running at top speed, it easily breaks 50 mph.\"\n    }\n  ],\n  \"837\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"On sunny days, Rolycoly will come out onto grassy plains and roll around. Then it will eat the grass that gets tangled in its wheel-like leg.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Most of its body has the same composition as coal. Fittingly, this Pokémon was first discovered in coal mines about 400 years ago.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can race around like a unicycle, even on rough, rocky terrain. Burning coal sustains it.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"On sunny days, Rolycoly will come out onto grassy plains and roll around. Then it will eat the grass that gets tangled in its wheel-like leg.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Chunks of the surface of this Pokémon's body that have grown old and flaked off have long been used for fuel as an alternative to coal.\"\n    }\n  ],\n  \"838\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Due to the coal tar created inside it, the heap of coal on Carkol's back never falls apart, even when the Pokémon rolls around at high speeds.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It forms coal inside its body. Coal dropped by this Pokémon once helped fuel the lives of people in the Galar region.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"By rapidly rolling its legs, it can travel at over 18 mph. The temperature of the flames it breathes exceeds 1,800 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The temperature inside its body increases when it experiences strong emotions. It rolls around frantically while spewing flames.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Due to the coal tar created inside it, the heap of coal on Carkol's back never falls apart, even when the Pokémon rolls around at high speeds.\"\n    }\n  ],\n  \"839\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It's gentle usually but fearsome when angered. With a body that burns at over 2,700 degrees Fahrenheit, it crushes foes and turns them to ash.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's usually peaceful, but the vandalism of mines enrages it. Offenders will be incinerated with flames that reach 2,700 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While it's engaged in battle, its mountain of coal will burn bright red, sending off sparks that scorch the surrounding area.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"To intimidate its opponents, Coalossal will vigorously shake its body, scattering coal from its smoldering back.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's gentle usually but fearsome when angered. With a body that burns at over 2,700 degrees Fahrenheit, it crushes foes and turns them to ash.\"\n    }\n  ],\n  \"840\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It spends its entire life inside an apple. It hides from its natural enemies, bird Pokémon, by pretending it's just an apple and nothing more.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"As soon as it's born, it burrows into an apple. Not only does the apple serve as its food source, but the flavor of the fruit determines its evolution.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It grows by eating the flesh of an apple. Applin uses its own body fluid to strengthen the apple's skin and prevent it from rotting.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Applin lives inside an apple. When an Applin is separated from its apple, its body loses moisture and the Pokémon grows weak.\"\n    }\n  ],\n  \"841\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It ate a sour apple, and that induced its evolution. In its cheeks, it stores an acid capable of causing chemical burns.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It flies on wings of apple skin and spits a powerful acid. It can also change its shape into that of an apple.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It flutters around while seeking an opening in the opponent's guard, then attacks by spitting acidic liquid strong enough to melt metal.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It uses its own body fluid to repair its apple. Strong Flapple that have won many battles have apples that are clay colored all over.\"\n    }\n  ],\n  \"842\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Eating a sweet apple caused its evolution. A nectarous scent wafts from its body, luring in the bug Pokémon it preys on.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its body is covered in sweet nectar, and the skin on its back is especially yummy. Children used to have it as a snack.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It feeds mainly on sweet apples. It will also eat small bug Pokémon that are attracted by its sweet nectar.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When some Lechonk come along to lick the sweet nectar on Appletun's back, Appletun will spew sticky nectar at them to drive them away.\"\n    }\n  ],\n  \"843\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As it digs, it swallows sand and stores it in its neck pouch. The pouch can hold more than 17 pounds of sand.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It spews sand from its nostrils. While the enemy is blinded, it burrows into the ground to hide.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Silicobra's neck pouch, which can inflate and deflate like a balloon, gets more elastic each time Silicobra sheds its skin.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Silicobra's large nostrils are specialized for spraying sand, so this Pokémon is not very good at telling apart different smells.\"\n    }\n  ],\n  \"844\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it contracts its body, over 220 pounds of sand sprays from its nose. If it ever runs out of sand, it becomes disheartened.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its unique style of coiling allows it to blast sand out of its sand sac more efficiently.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It will expand its body as much as it can and then contract itself, blasting out sand with enough force to wash away a dump truck.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The sand it spews contains sharp, pointy gravel, which is actually just sand that Sandaconda's saliva has hardened into irregular shapes.\"\n    }\n  ],\n  \"845\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Cramorant instinctively swallow everything whole. They're at their most formidable when they're struggling to swallow overly large prey.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's so strong that it can knock out some opponents in a single hit, but it also may forget what it's battling midfight.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This hungry Pokémon swallows Arrokuda whole. Occasionally, it makes a mistake and tries to swallow a Pokémon other than its preferred prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Cramorant instinctively swallow everything whole. They're at their most formidable when they're struggling to swallow overly large prey.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's an incredibly poor learner because it uses the bare minimum amount of energy for its brain. It focuses on battling instead.\"\n    }\n  ],\n  \"846\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"If it sees any movement around it, this Pokémon charges for it straightaway, leading with its sharply pointed jaw. It's very proud of that jaw.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"After it's eaten its fill, its movements become extremely sluggish. That's when Cramorant swallows it up.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Arrokuda can swim quickly only in a straight line. The ones that become sluggish from overeating are the first to be targeted by flocks of Wattrel.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It takes down prey by charging into them with its hard, pointed jaw. But Arrokuda's eyesight is poor, so this tactic has a low success rate.\"\n    }\n  ],\n  \"847\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon has a jaw that's as sharp as a spear and as strong as steel. Apparently Barraskewda's flesh is surprisingly tasty, too.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It spins its tail fins to propel itself, surging forward at speeds of over 100 knots before ramming prey and spearing into them.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It spins its tail fins to leap from the water, then viciously bites down on Wingull flying close to the water's surface.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It swims at speeds of over 100 knots and battles fiercely with pods of Finizen over prey.\"\n    }\n  ],\n  \"848\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has no problem drinking dirty water. An organ inside Toxel's body filters such water into a poisonous liquid that is harmless to Toxel.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It stores poison in an internal poison sac and secretes that poison through its skin. If you touch this Pokémon, a tingling sensation follows.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It manipulates the chemical makeup of its poison to produce electricity. The voltage is weak, but it can cause a tingling paralysis.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has no problem drinking dirty water. An organ inside Toxel's body filters such water into a poisonous liquid that is harmless to Toxel.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This selfish, attention-seeking Pokémon stores poison and electricity in two different sacs inside its body.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It manipulates the chemical makeup of its poison to produce electricity. The wattage is weak, but it can cause a tingling numbness.\"\n    }\n  ],\n  \"849\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"As it scatters toxic sweat and emits electricity, a melody that sounds like it came from a guitar reverberates through the surrounding area.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When this Pokémon sounds as if it's strumming a guitar, it's actually clawing at the protrusions on its chest to generate electricity.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This short-tempered and aggressive Pokémon chugs stagnant water to absorb any toxins it might contain.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"As it scatters toxic sweat and emits electricity, a melody that sounds like it came from a guitar reverberates through the surrounding area.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The jolts of electricity it launches by violently strumming the protrusions on its chest easily exceed 15,000 volts.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When Toxtricity claws at the protrusions on its chest to generate electricity, a sound like that of a guitar echoes through the air.\"\n    }\n  ],\n  \"850\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It stores flammable gas in its body and uses it to generate heat. The yellow sections on its belly get particularly hot.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It wraps prey up with its heated body, cooking them in its coils. Once they're well-done, it will voraciously nibble them down to the last morsel.\"\n    }\n  ],\n  \"851\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it heats up, its body temperature reaches about 1,500 degrees Fahrenheit. It lashes its body like a whip and launches itself at enemies.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While its burning body is already dangerous on its own, this excessively hostile Pokémon also has large and very sharp fangs.\"\n    }\n  ],\n  \"852\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's very curious, but its means of investigating things is to try to punch them with its tentacles. The search for food is what brings it onto land.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its tentacles tear off easily, but it isn't alarmed when that happens—it knows they'll grow back. It's about as smart as a three-year-old.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The bulbous ends of its tentacles are perfect for pummeling but next to useless for gripping.\"\n    }\n  ],\n  \"853\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A body made up of nothing but muscle makes the grappling moves this Pokémon performs with its tentacles tremendously powerful.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Searching for an opponent to test its skills against, it emerges onto land. Once the battle is over, it returns to the sea.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Grapploct pins opponents to the ground with its prized tentacles. Not even monstrously strong Pokémon can wrestle free from its hold.\"\n    }\n  ],\n  \"854\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is said to have been born when a lonely spirit possessed a cold, leftover cup of tea.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The teacup in which this Pokémon makes its home is a famous piece of antique tableware. Many forgeries are in circulation.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The soul of someone who died alone possessed some leftover tea. This Pokémon appears in hotels and houses.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Sinistea gets into your body when you drink it, and then it steals your vitality from within. It also tastes awful.\"\n    }\n  ],\n  \"855\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This species lives in antique teapots. Most pots are forgeries, but on rare occasions, an authentic work is found.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Leaving leftover black tea unattended is asking for this Pokémon to come along and pour itself into it, turning the tea into a new Polteageist.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The tea that composes Polteageist's body has a distinct and enjoyable flavor. Drinking too much, however, can be fatal.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"These Pokémon multiply by creeping into teapots and pouring themselves into leftover tea.\"\n    }\n  ],\n  \"856\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Via the protrusion on its head, it senses other creatures' emotions. If you don't have a calm disposition, it will never warm up to you.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If this Pokémon senses a strong emotion, it will run away as fast as it can. It prefers areas without people.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Because the emotions of others constantly flow into its head, this Pokémon prefers environments where no other creatures live.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It senses the feelings of other living creatures. Be careful not to expose it to strong emotions for too long, or it will end up exhausted.\"\n    }\n  ],\n  \"857\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"No matter who you are, if you bring strong emotions near this Pokémon, it will silence you violently.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Using the braids on its head, it pummels foes to get them to quiet down. One blow from those braids would knock out a professional boxer.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"To this Pokémon, strong emotions apparently feel like incredibly loud noises—even if the emotions are happy ones.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The moment this Pokémon finds someone who's emitting strong emotions, it will pummel them senseless with its braids to silence them.\"\n    }\n  ],\n  \"858\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It emits psychic power strong enough to cause headaches as a deterrent to the approach of others.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If you're too loud around it, you risk being torn apart by the claws on its tentacle. This Pokémon is also known as the Forest Witch.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Hatterene knocks out those that intrude in its home forest by blasting them with a beam, then slashing with claws enhanced by psychic power.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Beware of forests that show no signs of living creatures within. You may have wandered into Hatterene's territory.\"\n    }\n  ],\n  \"859\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Through its nose, it sucks in the emanations produced by people and Pokémon when they feel annoyed. It thrives off this negative energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It sneaks into people's homes, stealing things and feasting on the negative energy of the frustrated occupants.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The reason this Pokémon causes trouble for those it feels close to is because Impidimp itself gets irritable if it can't absorb negative emotions.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"They live in groups, pestering and playing pranks on each other to polish their troublemaking skills.\"\n    }\n  ],\n  \"860\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it gets down on all fours as if to beg for forgiveness, it's trying to lure opponents in so that it can stab them with its spear-like hair.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"With sly cunning, it tries to lure people into the woods. Some believe it to have the power to make crops grow.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Morgrem prefers dirty tactics, like ambushing, because it doesn't have confidence in its brawn.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon absorbs negative emotions and turns them into energy. It's popular with people who tend to think gloomy thoughts.\"\n    }\n  ],\n  \"861\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"With the hair wrapped around its body helping to enhance its muscles, this Pokémon can overwhelm even Machamp.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its hairs work like muscle fibers. When its hairs unfurl, they latch on to opponents, ensnaring them as tentacles would.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon has complete control over its hair. Grimmsnarl normally keeps its hair wrapped around its body to support its muscles.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It lives deep within the forest. Even after evolving into this splendid form, it hasn't given up on its petty misdeeds and pranks.\"\n    }\n  ],\n  \"862\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its voice is staggering in volume. Obstagoon has a tendency to take on a threatening posture and shout—this move is known as Obstruct.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It evolved after experiencing numerous fights. While crossing its arms, it lets out a shout that would make any opponent flinch.\"\n    }\n  ],\n  \"863\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"What appears to be an iron helmet is actually hardened hair. This Pokémon lives for the thrill of battle.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"After many battles, it evolved dangerous claws that come together to form daggers when extended.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"In battle, Perrserker boasts unrivaled strength, and many epic sagas tell of its valor. But in its home, it leaves garbage everywhere.\"\n    }\n  ],\n  \"864\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its shell is overflowing with its heightened otherworldly energy. The ectoplasm serves as protection for this Pokémon's core spirit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Be cautious of the ectoplasmic body surrounding its soul. You'll become stiff as stone if you touch it.\"\n    }\n  ],\n  \"865\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Only Farfetch'd that have survived many battles can attain this evolution. When this Pokémon's leek withers, it will retire from combat.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"After deflecting attacks with its hard leaf shield, it strikes back with its sharp leek stalk. The leek stalk is both weapon and food.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Sirfetch'd has put its soul into nurturing its leek, which it treasures like life itself. It wields the leek splendidly, performing great feats of combat.\"\n    }\n  ],\n  \"866\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's highly skilled at tap-dancing. It waves its cane of ice in time with its graceful movements.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its amusing movements make it very popular. It releases its psychic power from the pattern on its belly.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its comical dancing is its calling card. When its enemies laugh, it seizes the chance to blast them with frigid air of -328 degrees Fahrenheit.\"\n    }\n  ],\n  \"867\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A powerful curse was woven into an ancient painting. After absorbing the spirit of a Yamask, the painting began to move.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Never touch its shadowlike body, or you'll be shown the horrific memories behind the picture carved into it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The scattered pieces of its clay slab have been reassembled, allowing the malicious power contained within to be fully unleashed.\"\n    }\n  ],\n  \"868\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon was born from sweet-smelling particles in the air. Its body is made of cream.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They say that any patisserie visited by Milcery is guaranteed success and good fortune.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The more sweet aromas it absorbs, the more its body swells. Milcery will deflate when its energy level drops.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"When attacked, it tackles its foe and covers them in cream. With its foe either blinded or astonished by deliciousness, Milcery flees.\"\n    }\n  ],\n  \"869\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it trusts a Trainer, it will treat them to berries it's decorated with cream.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When Alcremie is content, the cream it secretes from its hands becomes sweeter and richer.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Desserts that Alcremie have decorated with their cream have a rich, sweet flavor and bring happiness to all who eat them.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Alcremie that have been cherished produce exquisite cream, so Trainers always raise them lovingly.\"\n    }\n  ],\n  \"870\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Five of them are troopers, and one is the brass. The brass's orders are absolute.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The six of them work together as one Pokémon. Teamwork is also their battle strategy, and they constantly change their formation as they fight.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The brass, which is the one that stands at the front and issues orders, is the strongest and smartest of the six.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The leader, known as the brass, uses its extendible horn to issue orders to the others when it's time to change formation.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Five of them are troopers, and one is the brass. The brass's orders are absolute.\"\n    }\n  ],\n  \"871\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It feeds on seaweed, using its teeth to scrape it off rocks. Electric current flows from the tips of its spines.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It stores electricity in each spine. Even if one gets broken off, it still continues to emit electricity for at least three hours.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon generates electricity when it digests food. It uses its five hard teeth to scrape seaweed off surfaces and eat it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon is so timid that even brushing against seaweed will make it discharge electricity in surprise. Its lips do not conduct electricity.\"\n    }\n  ],\n  \"872\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It spits out thread imbued with a frigid sort of energy and uses it to tie its body to branches, disguising itself as an icicle while it sleeps.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It eats snow that piles up on the ground. The more snow it eats, the bigger and more impressive the spikes on its back grow.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It eats snow that has accumulated on the ground. It prefers soft, freshly fallen snow, so it will eat its way up a mountain, aiming for the peak.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Within its internal organs, Snom amplifies the frigid air it gets from eating snow and then uses this amplified air to create icicle-like spikes.\"\n    }\n  ],\n  \"873\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Icy scales fall from its wings like snow as it flies over fields and mountains. The temperature of its wings is less than -290 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It shows no mercy to any who desecrate fields and mountains. It will fly around on its icy wings, causing a blizzard to chase offenders away.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Frosmoth senses air currents with its antennae. It sends its scales drifting on frigid air, making them fall like snow.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It causes blizzards as it flies around with its huge, chill-emanating wings. Clean meltwater is its favorite thing to drink.\"\n    }\n  ],\n  \"874\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It stands in grasslands, watching the sun's descent from zenith to horizon. This Pokémon has a talent for delivering dynamic kicks.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Once a year, on a specific date and at a specific time, they gather out of nowhere and form up in a circle.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The elemental composition of the rocks that form its body were found to match the bedrock of a land far away from this Pokémon's habitat.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon spends its life gazing at the setting sun. It strides leisurely across grassy plains on legs of rock that weigh over 400 pounds each.\"\n    }\n  ],\n  \"875\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It drifted in on the flow of ocean waters from a frigid place. It keeps its head iced constantly to make sure it stays nice and cold.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon keeps its heat-sensitive head cool with ice. It fishes for its food, dangling its single hair into the sea to lure in prey.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"On hot days, these Pokémon press their ice cube heads together and pass the time cooling each other down.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"If you lick the ice covering its face, you'll find it has a faintly salty taste. This species rode here on ocean currents from a cold, faraway land.\"\n    }\n  ],\n  \"876\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It uses the horns on its head to sense the emotions of others. Males will act as valets for those they serve, looking after their every need.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Through its horns, it can pick up on the emotions of creatures around it. Positive emotions are the source of its strength.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon picks up on the positive emotions of other creatures via its horns and uses those emotions to fuel itself.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon never leaves its Trainer's side. It predicts their actions with its psychic power and takes care of their day-to-day needs.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Through its horns, it can pick up on the emotions of creatures around it. Positive emotions are the source of its strength.\"\n    }\n  ],\n  \"877\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As it eats the seeds stored up in its pocket-like pouches, this Pokémon is not just satisfying its constant hunger. It's also generating electricity.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It carries electrically roasted seeds with it as if they're precious treasures. No matter how much it eats, it always gets hungry again in short order.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Morpeko eats seeds constantly to keep its hunger at bay. If it's hungry for too long, it grows wild and brutish.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has a small stomach. If it isn't constantly eating the seeds it keeps in its pockets, it will get hungry immediately.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon is always hungry. It generates electricity by eating seeds it has stored up in its pocket-like pouches.\"\n    }\n  ],\n  \"878\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It digs up the ground with its trunk. It's also very strong, being able to carry loads of over five tons without any problem at all.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If a job requires serious strength, this Pokémon will excel at it. Its copper body tarnishes in the rain, turning a vibrant green color.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Using the pointy tip of its trunk, it carves off chunks of hard rocks to eat. It is very docile and helps people with physical labor.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Cufant can lift loads weighing five tons. In the mornings, it heads into caves with its herd, in search of the ore on which these Pokémon feed.\"\n    }\n  ],\n  \"879\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"They came over from another region long ago and worked together with humans. Their green skin is resistant to water.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Pokémon live in herds. Their trunks have incredible grip strength, strong enough to crush giant rocks into powder.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon was brought to Paldea long ago by people from a faraway land. It's so strong that it can easily pull an airplane.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Copperajah are prideful, cantankerous Pokémon. Specimens with vibrant green skin command the respect of others of their kind.\"\n    }\n  ],\n  \"880\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In ancient times, it was unbeatable thanks to its powerful lower body, but it went extinct anyway after it depleted all its plant-based food sources.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The powerful muscles in its tail generate its electricity. Compared to its lower body, its upper half is entirely too small.\"\n    }\n  ],\n  \"881\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The shaking of its freezing upper half is what generates its electricity. It has a hard time walking around.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon lived on prehistoric seashores and was able to preserve food with the ice on its body. It went extinct because it moved so slowly.\"\n    }\n  ],\n  \"882\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Powerful legs and jaws made it the apex predator of its time. Its own overhunting of its prey was what drove it to extinction.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its mighty legs are capable of running at speeds exceeding 40 mph, but this Pokémon can't breathe unless it's underwater.\"\n    }\n  ],\n  \"883\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Though it's able to capture prey by freezing its surroundings, it has trouble eating the prey afterward because its mouth is on top of its head.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The skin on its face is impervious to attack, but breathing difficulties made this Pokémon go extinct anyway.\"\n    }\n  ],\n  \"884\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its body resembles polished metal, and it's both lightweight and strong. The only drawback is that it rusts easily.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The special metal that composes its body is very light, so this Pokémon has considerable agility. It lives in caves because it dislikes the rain.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Duraludon's body is comprised of a special metal that's lightweight and scratch resistant. It's also smooth, as though it was given a mirror finish.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its metal body is durable but prone to retaining heat. It vents this heat from the slits in its tail.\"\n    }\n  ],\n  \"885\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After being reborn as a ghost Pokémon, Dreepy wanders the areas it used to inhabit back when it was alive in prehistoric seas.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If this weak Pokémon is by itself, a mere child could defeat it. But if Dreepy has friends to help it train, it can evolve and become much stronger.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"In the evening, groups of Dreepy will fly at high speeds over the ocean and poke at Pokémon in the water for fun.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has a habit of biting at Clauncher even though it doesn't feed on them. This is said to be vestigial behavior from when Dreepy was alive.\"\n    }\n  ],\n  \"886\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's capable of flying faster than 120 mph. It battles alongside Dreepy and dotes on them until they successfully evolve.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Without a Dreepy to place on its head and care for, it gets so uneasy it'll try to substitute any Pokémon it finds for the missing Dreepy.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon flies around at over 120 miles per hour. If a Drakloak is defeated in a battle, its Dreepy will wander off without a second thought.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon stores up energy in its lungs, then shoots it out. It takes care of Dreepy and battles alongside them until they're all grown up.\"\n    }\n  ],\n  \"887\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it isn't battling, it keeps Dreepy in the holes on its horns. Once a fight starts, it launches the Dreepy like supersonic missiles.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Apparently the Dreepy inside Dragapult's horns eagerly look forward to being launched out at Mach speeds.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Dragapult can make its whole body transparent by clearing its mind and focusing. Even the Dreepy in Dragapult's horns become invisible.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The fastest Dragapult of the group is always surrounded by Dreepy that want to fly at sonic speed.\"\n    }\n  ],\n  \"888\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Known as a legendary hero, this Pokémon absorbs metal particles, transforming them into a weapon it uses to battle.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon has slumbered for many years. Some say it's Zamazenta's elder sister—others say the two Pokémon are rivals.\"\n    }\n  ],\n  \"889\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In times past, it worked together with a king of the people to save the Galar region. It absorbs metal that it then uses in battle.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon slept for aeons while in the form of a statue. It was asleep for so long, people forgot that it ever existed.\"\n    }\n  ],\n  \"890\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The core on its chest absorbs energy emanating from the lands of the Galar region. This energy is what allows Eternatus to stay active.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It was inside a meteorite that fell 20,000 years ago. There seems to be a connection between this Pokémon and the Dynamax phenomenon.\"\n    }\n  ],\n  \"891\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Kubfu trains hard to perfect its moves. The moves it masters will determine which form it takes when it evolves.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If Kubfu pulls the long white hair on its head, its fighting spirit heightens and power wells up from the depths of its belly.\"\n    }\n  ],\n  \"892\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This form of Urshifu is a strong believer in the one-hit KO. Its strategy is to leap in close to foes and land a devastating blow with a hardened fist.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Inhabiting the mountains of a distant region, this Pokémon races across sheer cliffs, training its legs and refining its moves.\"\n    }\n  ],\n  \"893\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Within dense forests, this Pokémon lives in a pack with others of its kind. It's incredibly aggressive, and the other Pokémon of the forest fear it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Once the vines on Zarude's body tear off, they become nutrients in the soil. This helps the plants of the forest grow.\"\n    }\n  ],\n  \"894\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon is a cluster of electrical energy. It's said that removing the rings on Regieleki's body will unleash the Pokémon's latent power.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its entire body is made up of a single organ that generates electrical energy. Regieleki is capable of creating all Galar's electricity.\"\n    }\n  ],\n  \"895\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"An academic theory proposes that Regidrago's arms were once the head of an ancient dragon Pokémon. The theory remains unproven.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its body is composed of crystallized dragon energy. Regidrago is said to have the powers of every dragon Pokémon.\"\n    }\n  ],\n  \"896\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Glastrier emits intense cold from its hooves. It's also a belligerent Pokémon—anything it wants, it takes by force.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Glastrier has tremendous physical strength, and the mask of ice covering its face is 100 times harder than diamond.\"\n    }\n  ],\n  \"897\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It probes its surroundings with all its senses save one—it doesn't use its sense of sight. Spectrier's kicks are said to separate soul from body.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"As it dashes through the night, Spectrier absorbs the life-force of sleeping creatures. It craves silence and solitude.\"\n    }\n  ],\n  \"898\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Calyrex is a merciful Pokémon, capable of providing healing and blessings. It reigned over the Galar region in times of yore.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Calyrex is known in legend as a king that ruled over Galar in ancient times. It has the power to cause hearts to mend and plants to spring forth.\"\n    }\n  ],\n  \"899\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The black orbs shine with an uncanny light when the Pokémon is erecting invisible barriers. The fur shed from its beard retains heat well and is a highly useful material for winter clothing.\"\n    }\n  ],\n  \"900\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A violent creature that fells towering trees with its crude axes and shields itself with hard stone. If one should chance upon this Pokémon in the wilds, one's only recourse is to flee.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Parts of its body turned to stone when it evolved thanks to an extremely rare ore found in volcanic areas.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon is a rough, crude, and violent sort. It swings around its large, heavy stone axes to finish off its prey.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its stone axes get chipped away here and there during ferocious battles, but the process serves to make them sharper and sharper.\"\n    }\n  ],\n  \"901\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"I believe it was Hisui's swampy terrain that gave Ursaluna its burly physique and newfound capacity to manipulate peat at will.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It crossed the sea and drifted ashore in a new land. Surviving in this place led it to take on a unique appearance and gain special powers.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This special Ursaluna can see in the dark with its left eye and protects itself with mud that is as hard as iron.\"\n    }\n  ],\n  \"902\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Clads itself in the souls of comrades that perished before fulfilling their goals of journeying upstream. No other species throughout all Hisui's rivers is Basculegion's equal.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is cloaked in the souls of its comrades who perished during a punishing journey to the river of their birth.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can jump with incredible power. Parts of its body are tinged red by the rage of its fallen friends.\"\n    }\n  ],\n  \"903\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Because of Sneasler's virulent poison and daunting physical prowess, no other species could hope to best it on the frozen highlands. Preferring solitude, this species does not form packs.\"\n    }\n  ],\n  \"904\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Its lancelike spikes and savage temperament have earned it the nickname \\\"sea fiend.\\\" It slurps up poison to nourish itself.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Overqwil's poisonous spikes will reflexively react even while Overqwil sleeps, stabbing any moving thing that approaches.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's ferocious and has a short temper. The ends of its spikes are barbed, and they can't be easily removed once they've punctured something.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Overqwil's poisonous spikes-now thicker, longer, and stronger-will automatically strike toward anything that moves.\"\n    }\n  ],\n  \"905\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"When it flies to this land from across the sea, the bitter winter comes to an end. According to legend, this Pokémon's love gives rise to the budding of fresh life across Hisui.\"\n    }\n  ],\n  \"906\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its fluffy fur is similar in composition to plants. This Pokémon frequently washes its face to keep it from drying out.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The sweet scent its body gives off mesmerizes those around it. The scent grows stronger when this Pokémon is in the sun.\"\n    }\n  ],\n  \"907\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Floragato deftly wields the vine hidden beneath its long fur, slamming the hard flower bud against its opponents.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The hardness of Floragato's fur depends on the Pokémon's mood. When Floragato is prepared to battle, its fur becomes pointed and needle sharp.\"\n    }\n  ],\n  \"908\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon uses the reflective fur lining in its cape to camouflage the stem of its flower, creating the illusion that the flower is floating.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"With skillful misdirection, it rigs foes with pollen-packed flower bombs. Meowscarada sets off the bombs before its foes realize what's going on.\"\n    }\n  ],\n  \"909\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lies on warm rocks and uses the heat absorbed by its square-shaped scales to create fire energy.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its flame sac is small, so energy is always leaking out. This energy is released from the dent atop Fuecoco's head and flickers to and fro.\"\n    }\n  ],\n  \"910\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The combination of Crocalor's fire energy and overflowing vitality has caused an egg-shaped fireball to appear on the Pokémon's head.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The valve in Crocalor's flame sac is closely connected to its vocal cords. This Pokémon utters a guttural cry as it spews flames every which way.\"\n    }\n  ],\n  \"911\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The fiery bird changes shape when Skeledirge sings. Rumor has it that the bird was born when the fireball on Skeledirge's head gained a soul.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Skeledirge's gentle singing soothes the souls of all that hear it. It burns its enemies to a crisp with flames of over 5,400 degrees Fahrenheit.\"\n    }\n  ],\n  \"912\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon migrated to Paldea from distant lands long ago. The gel secreted by its feathers repels water and grime.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its strong legs let it easily swim around in even fast-flowing rivers. It likes to keep things tidy and is prone to overthinking things.\"\n    }\n  ],\n  \"913\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"These Pokémon constantly run through shallow waters to train their legs, then compete with each other to see which of them kicks most gracefully.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The hardworking Quaxwell observes people and Pokémon from various regions and incorporates their movements into its own dance routines.\"\n    }\n  ],\n  \"914\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A single kick from a Quaquaval can send a truck rolling. This Pokémon uses its powerful legs to perform striking dances from far-off lands.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Dancing in ways that evoke far-away places, this Pokémon mesmerizes all that see it. Flourishes of its decorative water feathers slice into its foes.\"\n    }\n  ],\n  \"915\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It searches for food all day. It possesses a keen sense of smell but doesn't use it for anything other than foraging.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon spurns all but the finest of foods. Its body gives off an herblike scent that bug Pokémon detest.\"\n    }\n  ],\n  \"916\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Oinkologne is proud of its fine, glossy skin. It emits a concentrated scent from the tip of its tail.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It entrances female Pokémon with the sweet, alluring scent that wafts from all over its body.\"\n    }\n  ],\n  \"917\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The ball of threads wrapped around its body is elastic enough to deflect the scythes of Scyther, this Pokémon's natural enemy.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The thread it secretes from its rear is as strong as wire. The secret behind the thread's strength is the topic of ongoing research.\"\n    }\n  ],\n  \"918\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It clings to branches and ceilings using its threads and moves without a sound. It takes out its prey before the prey even notices it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Spidops covers its territory in tough, sticky threads to set up traps for intruders.\"\n    }\n  ],\n  \"919\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has its third set of legs folded up. When it's in a tough spot, this Pokémon jumps over 30 feet using the strength of its legs.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's highly skilled at a fighting style in which it uses its jumping capabilities to dodge incoming attacks while also dealing damage to opponents.\"\n    }\n  ],\n  \"920\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When it decides to fight all out, it stands on its previously folded legs to enter Showdown Mode. It neutralizes its enemies in short order.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It uses its normally folded third set of legs when in Showdown Mode. This places a huge burden on its body, so it can't stay in this mode for long.\"\n    }\n  ],\n  \"921\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It has underdeveloped electric sacs on its cheeks. These sacs can produce electricity only if Pawmi rubs them furiously with the pads on its forepaws.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has underdeveloped electric sacs on its cheeks. These sacs can produce electricity only if Pawmi rubs them furiously with the pads on its forepaws.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The pads of its paws are electricity-discharging organs. Pawmi fires electricity from its forepaws while standing unsteadily on its hind legs.\"\n    }\n  ],\n  \"922\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"When its group is attacked, Pawmo is the first to leap into battle, defeating enemies with a fighting technique that utilizes electric shocks.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When its group is attacked, Pawmo is the first to leap into battle, defeating enemies with a fighting technique that utilizes electric shocks.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Pawmo uses a unique fighting technique in which it uses its forepaws to strike foes and zap them with electricity from its paw pads simultaneously.\"\n    }\n  ],\n  \"923\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Pawmot's fluffy fur acts as a battery. It can store the same amount of electricity as an electric car.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon normally is slow to react, but once it enters battle, it will strike down its enemies with lightning-fast movements.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Pawmot's fluffy fur acts as a battery. It can store the same amount of electricity as an electric car.\"\n    }\n  ],\n  \"924\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Exhibiting great teamwork, they use their incisors to cut pieces out of any material that might be useful for a nest, then make off with them.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The pair sticks together no matter what. They split any food they find exactly in half and then eat it together.\"\n    }\n  ],\n  \"925\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The two little ones just appeared one day. The group might be a family of related Pokémon, but nobody knows for sure.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The larger pair protects the little ones during battles. When facing strong opponents, the whole group will join the fight.\"\n    }\n  ],\n  \"926\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The yeast in Fidough's breath is useful for cooking, so this Pokémon has been protected by people since long ago.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is smooth and moist to the touch. Yeast in Fidough's breath induces fermentation in the Pokémon's vicinity.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The yeast in Fidough's breath is useful for cooking, so this Pokémon has been protected by people since long ago.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon cultivates yeast within its body. It has lived with humans—and helped enrich their diets—since ancient times.\"\n    }\n  ],\n  \"927\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The pleasant aroma that emanates from this Pokémon's body helps wheat grow, so Dachsbun has been treasured by farming villages.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The pleasant aroma that emanates from this Pokémon's body helps wheat grow, so Dachsbun has been treasured by farming villages.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The surface of this Pokémon's skin hardens when exposed to intense heat, and its body has an appetizing aroma.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The appetizing scent of Dachsbun's body sends opponents' hunger into overdrive, wearing down their willpower and stamina.\"\n    }\n  ],\n  \"928\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It protects itself from enemies by emitting oil from the fruit on its head. This oil is bitter and astringent enough to make someone flinch.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon converts nutrients into oil, which it stores in the fruit on its head. It can easily go a whole week without eating or drinking.\"\n    }\n  ],\n  \"929\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Dolliv shares its tasty, fresh-scented oil with others. This species has coexisted with humans since times long gone.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It basks in the sun to its heart's content until the fruits on its head ripen. After that, Dolliv departs from human settlements and goes on a journey.\"\n    }\n  ],\n  \"930\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This calm Pokémon is very compassionate. It will share its delicious, nutrient-rich oil with weakened Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon drives back enemies by launching its rich, aromatic oil at them with enough force to smash a boulder.\"\n    }\n  ],\n  \"931\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"These Pokémon prefer to live in cities. They form flocks based on the color of their feathers, and they fight over territory.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Green-feathered flocks hold the most sway. When they're out searching for food in the mornings and evenings, it gets very noisy.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Squawkabilly form flocks based on the color of their plumage. Green ones are abundant because their coloration is more likely to be passed down.\"\n    }\n  ],\n  \"932\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It was born in a layer of rock salt deep under the earth. This species was particularly treasured in the old days, as they would share precious salt.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The ground scrapes its body as it travels, causing it to leave salt behind. Salt is constantly being created and replenished inside Nacli's body.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"As Nacli treads along the ground, grains of rock salt are left behind. These trails have been called \\\"salt roads\\\" since long ago.\"\n    }\n  ],\n  \"933\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon dry cures its prey by spraying salt over them. The curing process steals away the water in the prey's body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It compresses rock salt inside its body and shoots out hardened salt pellets with enough force to perforate an iron sheet.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This absent-minded Pokémon tends to forget about the prey it has salt-cured. It's even prone to forgetting the orders its Trainer has given it.\"\n    }\n  ],\n  \"934\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Garganacl will rub its fingertips together and sprinkle injured Pokémon with salt. Even severe wounds will promptly heal afterward.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Many Pokémon gather around Garganacl, hoping to lick at its mineral-rich salt.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Rock salt obtained from Garganacl has many restorative elements and is helpful for maintaining one's health.\"\n    }\n  ],\n  \"935\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its firepower increases when it fights, reaching over 1,800 degrees Fahrenheit. It likes {{Berries}} that are rich in fat.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Burnt charcoal came to life and became a Pokémon. Possessing a fiery fighting spirit, Charcadet will battle even tough opponents.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its firepower increases when it fights, reaching over 1,800 degrees Fahrenheit. It likes {{Berries}} that are rich in fat.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon is skilled at manipulating flames. Humans have prized it highly since ancient times.\"\n    }\n  ],\n  \"936\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Armarouge evolved through the use of a set of armor that belonged to a distinguished warrior. This Pokémon is incredibly loyal.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Armarouge evolved through the use of a set of armor that belonged to a distinguished warrior. This Pokémon is incredibly loyal.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon clads itself in armor that has been fortified by psychic and fire energy, and it shoots blazing fireballs.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Though Armarouge pledges loyalty to its Trainer, it repeatedly leaves to go train on its own to strengthen its psychic energy.\"\n    }\n  ],\n  \"937\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"The fiery blades on its arms burn fiercely with the lingering resentment of a sword wielder who fell before accomplishing their goal.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The fiery blades on its arms burn fiercely with the lingering resentment of a sword wielder who fell before accomplishing their goal.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"An old set of armor steeped in grudges caused this Pokémon's evolution. Ceruledge cuts its enemies to pieces without mercy.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It swears loyalty to its Trainer. Should anyone dare to show that Trainer hostility, Ceruledge will cut the offender down without a second thought.\"\n    }\n  ],\n  \"938\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Tadbulb shakes its tail to generate electricity. If it senses danger, it will make its head blink on and off to alert its allies.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It floats using the electricity stored in its body. When thunderclouds are around, Tadbulb will float higher off the ground.\"\n    }\n  ],\n  \"939\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When this Pokémon expands and contracts its wobbly body, the belly-button dynamo in its stomach produces a huge amount of electricity.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"What appear to be eyeballs are actually organs for discharging the electricity generated by Bellibolt's belly-button dynamo.\"\n    }\n  ],\n  \"940\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"These Pokémon make their nests on coastal cliffs. The nests have a strange, crackling texture, and they're a popular delicacy.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When its wings catch the wind, the bones within produce electricity. This Pokémon dives into the ocean, catching prey by electrocuting them.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"These Pokémon make their nests on coastal cliffs. The nests have a strange, crackling texture, and they're a popular delicacy.\"\n    }\n  ],\n  \"941\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It uses its throat sac to store electricity generated by its wings. There's hardly any oil in its feathers, so it is a poor swimmer.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Kilowattrel inflates its throat sac to amplify its electricity. By riding the wind, this Pokémon can fly over 430 miles in a day.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It uses its throat sac to store electricity generated by its wings. There's hardly any oil in its feathers, so it is a poor swimmer.\"\n    }\n  ],\n  \"942\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It always scowls in an attempt to make opponents take it seriously, but even crying children will burst into laughter when they see Maschiff's face.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its well-developed jaw and fangs are strong enough to crunch through boulders, and its thick fat makes for an excellent defense.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Packs of these Pokémon are incredibly close-knit. In order to be taken seriously, Maschiff intimidate others by wearing a grumpy expression.\"\n    }\n  ],\n  \"943\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon can store energy in its large dewlap. Mabosstiff unleashes this energy all at once to blow away enemies.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Mabosstiff loves playing with children. Though usually gentle, it takes on an intimidating look when protecting its family.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Contrary to appearances, Mabosstiff has a kind heart-but it will relentlessly chase down and put an end to any foe that dares threaten its family.\"\n    }\n  ],\n  \"944\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Though usually a mellow Pokémon, it will sink its sharp, poison-soaked front teeth into any that anger it, causing paralysis in the object of its ire.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"To keep enemies away from its territory, it paints markings around its nest using a poisonous liquid that has an acrid odor.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Shroodle protects itself from foes using both its poisonous saliva and its front teeth, which are disproportionately big and long for its small body.\"\n    }\n  ],\n  \"945\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The color of the poisonous saliva depends on what the Pokémon eats. Grafaiai covers its fingers in its saliva and draws patterns on trees in forests.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Each Grafaiai paints its own individual pattern, and it will paint that same pattern over and over again throughout its life.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"What Grafaiai eats affects the color of its saliva. With this saliva, it paints patterns on rocks and trees in order to protect its territory.\"\n    }\n  ],\n  \"946\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"A soul unable to move on to the afterlife was blown around by the wind until it got tangled up with dried grass and became a Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Not even Bramblin knows where it is headed as it tumbles across the wilderness, blown by the wind. It loathes getting wet.\"\n    }\n  ],\n  \"947\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It will open the branches of its head to envelop its prey. Once it absorbs all the life energy it needs, it expels the prey and discards it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Brambleghast wanders around arid regions. On rare occasions, mass outbreaks of these Pokémon will bury an entire town.\"\n    }\n  ],\n  \"948\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Toedscool lives in muggy forests. The flaps that fall from its body are chewy and very delicious.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Though it looks like Tentacool, Toedscool is a completely different species. Its legs may be thin, but it can run at a speed of 30 mph.\"\n    }\n  ],\n  \"949\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"These Pokémon gather into groups and form colonies deep within forests. They absolutely hate it when strangers approach.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It coils its 10 tentacles around prey and sucks out their nutrients, causing the prey pain. The folds along the rim of its head are a popular delicacy.\"\n    }\n  ],\n  \"950\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Klawf hangs upside-down from cliffs, waiting for prey. But Klawf can't remain in this position for long because its blood rushes to its head.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon lives on sheer cliffs. It sidesteps opponents' attacks, then lunges for their weak spots with its claws.\"\n    }\n  ],\n  \"951\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The more sunlight this Pokémon bathes in, the more spicy chemicals are produced by its body, and thus the spicier its moves become.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Traditional Paldean dishes can be extremely spicy because they include the shed front teeth of Capsakid among their ingredients.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Capsakid is prone to intense mood swings, perhaps influenced by the spicy chemicals inside it. It will bite anything it takes a disliking to.\"\n    }\n  ],\n  \"952\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The red head converts spicy chemicals into fire energy and blasts the surrounding area with a super spicy stream of flame.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The green head has turned vicious due to the spicy chemicals stimulating its brain. Once it goes on a rampage, there is no stopping it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its two heads have different temperaments and excel at different fighting styles. Nevertheless, they act in perfect harmony on the battlefield.\"\n    }\n  ],\n  \"953\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon creates a mud ball by mixing sand and dirt with psychic energy. It treasures its mud ball more than its own life.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It rolls its mud ball around while the energy it needs for evolution matures. Eventually the time comes for it to evolve.\"\n    }\n  ],\n  \"954\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The body that supports the ball barely moves. Therefore, it is thought that the true body of this Pokémon is actually inside the ball.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"An infant sleeps inside the ball. Rabsca rolls the ball soothingly with its legs to ensure the infant sleeps comfortably.\"\n    }\n  ],\n  \"955\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Flittle's toes levitate about half an inch above the ground because of the psychic power emitted from the frills on the Pokémon's belly.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It spends its time running around wastelands. If anyone steals its beloved berries, it will chase them down and exact its revenge.\"\n    }\n  ],\n  \"956\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It immobilizes opponents by bathing them in psychic power from its large eyes. Despite its appearance, it has a vicious temperament.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It emits psychic power from the gaps between its multicolored frills and sprints at speeds greater than 120 mph.\"\n    }\n  ],\n  \"957\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It swings its handmade hammer around to protect itself, but the hammer is often stolen by Pokémon that eat metal.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It swings its handmade hammer around to protect itself, but the hammer is often stolen by Pokémon that eat metal.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon pounds iron scraps together to make a hammer. It will remake the hammer again and again until it's satisfied with the result.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Tinkatink cobbles together a suitable hammer for itself using tools and metal fragments it finds in mines.\"\n    }\n  ],\n  \"958\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"These Pokémon make their homes in piles of scrap metal. They test the strength of each other's hammers by smashing them together.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon will attack groups of Pawniard and Bisharp, gathering metal from them in order to create a large and sturdy hammer.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"These Pokémon make their homes in piles of scrap metal. They test the strength of each other's hammers by smashing them together.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Tinkatuff sometimes come to human settlements, where they rummage through factories and warehouses to gather metal.\"\n    }\n  ],\n  \"959\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"A Tinkaton that is particularly skilled with its hands, allowing it to make good use of other tools in addition to its hammer. It is very curious about buildings and machines made by humans.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This intelligent Pokémon has a very daring disposition. It knocks rocks into the sky with its hammer, aiming for flying Corviknight.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The hammer tops 220 pounds, yet it gets swung around easily by Tinkaton as it steals whatever it pleases and carries its plunder back home.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A Tinkaton leader teaches the Tinkatink in its group the skills needed for pounding and shaping metal.\"\n    }\n  ],\n  \"960\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon can pick up the scent of a Veluza just over 65 feet away and will hide itself in the sand.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Though it looks like Diglett, Wiglett is an entirely different species. The resemblance seems to be a coincidental result of environmental adaptation.\"\n    }\n  ],\n  \"961\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has a vicious temperament, contrary to what its appearance may suggest. It wraps its long bodies around prey, then drags the prey into its den.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A variety of fish Pokémon, Wugtrio was once considered to be a regional form of Dugtrio.\"\n    }\n  ],\n  \"962\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It gathers things up in an apron made from shed feathers added to the Pokémon's chest feathers, then drops those things from high places for fun.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Bombirdier uses the apron on its chest to bundle up food, which it carries back to its nest. It enjoys dropping things that make loud noises.\"\n    }\n  ],\n  \"963\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It likes playing with others of its kind using the water ring on its tail. It uses ultrasonic waves to sense the emotions of other living creatures.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its water ring is made from seawater mixed with a sticky fluid that Finizen secretes from its blowhole.\"\n    }\n  ],\n  \"964\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon changes its appearance if it hears its allies calling for help. Palafin will never show anybody its moment of transformation.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its physical capabilities are no different than a Finizen's, but when its allies are in danger, it transforms and powers itself up.\"\n    }\n  ],\n  \"965\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is said that this Pokémon was born when an unknown poison Pokémon entered and inspirited an engine left at a scrap-processing factory.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The steel section is Varoom's actual body. This Pokémon clings to rocks and converts the minerals within into energy to fuel its activities.\"\n    }\n  ],\n  \"966\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It creates a gas out of poison and minerals from rocks. It then detonates the gas in its cylinders—now numbering eight—to generate energy.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Revavroom viciously threatens others with the sound of its exhaust. It sticks its tongue out from its cylindrical mouth and sprays toxic fluids.\"\n    }\n  ],\n  \"967\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Apparently Cyclizar has been allowing people to ride on its back since ancient times. Depictions of this have been found in 10,000-year-old murals.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It can sprint at over 70 mph while carrying a human. The rider's body heat warms Cyclizar's back and lifts the Pokémon's spirit.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Cyclizar keeps energy stored in the folds of its throat, allowing it to run nonstop over very long distances while carrying someone.\"\n    }\n  ],\n  \"968\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When attacked, this Pokémon will wield the tendrils on its body like fists and pelt the opponent with a storm of punches.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon lives in arid deserts. It maintains its metal body by consuming iron from the soil.\"\n    }\n  ],\n  \"969\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It absorbs nutrients from cave walls. The petals it wears are made of crystallized poison.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It absorbs nutrients from cave walls. The petals it wears are made of crystallized poison.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Glimmet's toxic mineral crystals look just like flower petals. This Pokémon scatters poisonous powder like pollen to protect itself.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Glimmet clings to the ceilings of caves. It defends itself by striking enemies with its bud, which is packed with poisonous components.\"\n    }\n  ],\n  \"970\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"When this Pokémon detects danger, it will open up its crystalline petals and fire beams from its conical body.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When this Pokémon detects danger, it will open up its crystalline petals and fire beams from its conical body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Glimmora's petals are made of crystallized poison energy. It has recently become evident that these petals resemble Tera Jewels.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Glimmora blooms into a large flower made of poisonous components. It works together with groups of Glimmet to repel enemies.\"\n    }\n  ],\n  \"971\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is said that a dog Pokémon that died in the wild without ever interacting with a human was reborn as this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This friendly Pokémon doesn't like being alone. Pay it even the slightest bit of attention, and it will follow you forever.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon loves to gambol and roughhouse. It rubs its fur up against others and absorbs their life force until they're utterly drained.\"\n    }\n  ],\n  \"972\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Houndstone spends most of its time sleeping in graveyards. Among all the dog Pokémon, this one is most loyal to its master.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"A lovingly mourned Pokémon was reborn as Houndstone. It doesn't like anyone touching the protuberance atop its head.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"At some point during the many years it spent guarding the gravestone of its dearly departed master, it was reborn as a ghost Pokémon.\"\n    }\n  ],\n  \"973\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon apparently ties the base of its neck into a knot so that energy stored in its belly does not escape from its beak.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Thanks to a behavior of theirs known as \\\"synchronizing,\\\" an entire flock of these Pokémon can attack simultaneously in perfect harmony.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A flock of Flamigo can reach numbers of over 10,000. The sight of one of these massive flocks moving together in sync is incredible to behold.\"\n    }\n  ],\n  \"974\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This species left the ocean and began living on land a very long time ago. It seems to be closely related to Wailmer.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It lives in frigid regions in pods of five or so individuals. It loves the minerals found in snow and ice.\"\n    }\n  ],\n  \"975\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon wanders around snowy, icy areas. It protects its body with powerful muscles and a thick layer of fat under its skin.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Ice energy builds up in the horn on its upper jaw, causing the horn to reach cryogenic temperatures that freeze its surroundings.\"\n    }\n  ],\n  \"976\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When Veluza discards unnecessary flesh, its mind becomes honed and its psychic power increases. The spare flesh has a mild but delicious flavor.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Veluza has excellent regenerative capabilities. It sheds spare flesh from its body to boost its agility, then charges at its prey.\"\n    }\n  ],\n  \"977\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon is a glutton, but it's bad at getting food. It teams up with a Tatsugiri to catch prey.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It treats Tatsugiri like its boss and follows it loyally. Though powerful, Dondozo is apparently not very smart.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Although it boasts fantastic strength and a huge body that stirs up great waves when it thrashes, Dondozo struggles at catching prey.\"\n    }\n  ],\n  \"978\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Tatsugiri is an extremely cunning Pokémon. It feigns weakness to lure in prey, then orders its partner to attack.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This is a small dragon Pokémon. It lives inside the mouth of Dondozo to protect itself from enemies on the outside.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Tatsugiri is an extremely cunning Pokémon. It feigns weakness to lure in prey, then orders its partner to attack.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Tatsugiri will battle furiously among themselves to determine which of them will get to partner with a particular Dondozo.\"\n    }\n  ],\n  \"979\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When its anger rose beyond a critical point, this Pokémon gained power that is unfettered by the limits of its physical body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It imbues its fists with the power of the rage that it kept hidden in its heart. Opponents struck by these imbued fists will be shattered to their core.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Primeape evolved into Annihilape after repeatedly using a move with enough force to burst the blood vessels in its head.\"\n    }\n  ],\n  \"980\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It lives at the bottom of ponds and swamps. It will carry Wooper on its back and ferry them across water from one shore to the other.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"When attacked, this Pokémon will retaliate by sticking thick spines out from its body. It's a risky move that puts everything on the line.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It lives at the bottom of ponds and swamps. It will carry Wooper on its back and ferry them across water from one shore to the other.\"\n    }\n  ],\n  \"981\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Now that the brain waves from the head and tail are synced up, the psychic power of this Pokémon is 10 times stronger than Girafarig's.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Now that the brain waves from the head and tail are synced up, the psychic power of this Pokémon is 10 times stronger than Girafarig's.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The hardened head from the tail protects the head of the main body as Farigiraf whips its long neck around to headbutt enemies.\"\n    }\n  ],\n  \"982\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon uses its hard tail to make its nest by boring holes into bedrock deep underground. The nest can reach lengths of over six miles.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It drives enemies out of its nest by sucking in enough air to fill its long, narrow lungs, then releasing the air in an intense blast.\"\n    }\n  ],\n  \"983\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Only a Bisharp that stands above all others in its vast army can evolve into Kingambit.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Though it commands a massive army in battle, it's not skilled at devising complex strategies. It just uses brute strength to keep pushing.\"\n    }\n  ],\n  \"984\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Sightings of this Pokémon have occurred in recent years. The name Great Tusk was taken from a creature listed in a certain book.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This creature resembles a mysterious Pokémon that, according to a paranormal magazine, has lived since ancient times.\"\n    }\n  ],\n  \"985\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"There has been only one reported sighting of this Pokémon. It resembles a mysterious creature depicted in an old expedition journal.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It resembles a mysterious Pokémon described in a paranormal magazine as a Jigglypuff from one billion years ago.\"\n    }\n  ],\n  \"986\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is possible that the creature listed as Brute Bonnet in a certain book could actually be this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It bears a slight resemblance to a Pokémon described in a dubious magazine as a cross between a dinosaur and a mushroom.\"\n    }\n  ],\n  \"987\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon has characteristics similar to those of Flutter Mane, a creature mentioned in a certain book.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has similar features to a ghostly pterosaur that was covered in a paranormal magazine, but the two have little else in common.\"\n    }\n  ],\n  \"988\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This mysterious Pokémon has some similarities to a creature that an old book introduced as Slither Wing.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon somewhat resembles an ancient form of Volcarona that was introduced in a dubious magazine.\"\n    }\n  ],\n  \"989\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"No records exist of this Pokémon being caught. Data is lacking, but the Pokémon's traits match up with a creature shown in an expedition journal.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It slightly resembles a Magneton that lived for 10,000 years and was featured in an article in a paranormal magazine.\"\n    }\n  ],\n  \"990\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon closely resembles a scientific weapon that a paranormal magazine claimed was sent to this planet by aliens.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Sightings of this Pokémon have occurred in recent years. It resembles a mysterious object described in an old expedition journal.\"\n    }\n  ],\n  \"991\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its shape is similar to a robot featured in a paranormal magazine article. The robot was said to have been created by an ancient civilization.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It resembles a mysterious object mentioned in an old book. There are only two reported sightings of this Pokémon.\"\n    }\n  ],\n  \"992\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is very similar to a cyborg covered exclusively by a paranormal magazine. The cyborg was said to be the modified form of a certain athlete.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon shares many similarities with Iron Hands, an object mentioned in a certain expedition journal.\"\n    }\n  ],\n  \"993\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It resembles a certain Pokémon introduced in a paranormal magazine, described as the offspring of a Hydreigon that fell in love with a robot.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's possible that Iron Jugulis, an object described in an old book, may actually be this Pokémon.\"\n    }\n  ],\n  \"994\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon resembles an unknown object described in a paranormal magazine as a UFO sent to observe humanity.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"No records exist of this species being caught. Data is lacking, but the Pokémon's traits match up with an object described in an old book.\"\n    }\n  ],\n  \"995\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has some similarities to a Pokémon introduced in a dubious magazine as a Tyranitar from one billion years into the future.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Some of its notable features match those of an object named within a certain expedition journal as Iron Thorns.\"\n    }\n  ],\n  \"996\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Frigibax absorbs heat through its dorsal fin and converts the heat into ice energy. The higher the temperature, the more energy Frigibax stores.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon lives in forests and craggy areas. Using the power of its dorsal fin, it cools the inside of its nest like a refrigerator.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Frigibax's dorsal fin can convert heat from fiery moves into Ice-type energy to freeze the air.\"\n    }\n  ],\n  \"997\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Arctibax freezes the air around it, protecting its face with an ice mask and turning its dorsal fin into a blade of ice.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It attacks with the blade of its frozen dorsal fin by doing a front flip in the air. Arctibax's strong back and legs allow it to pull off this technique.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Arctibax is armed with a bladed dorsal fin and a mask made of ice. It is agile in its movements, springing upon foes to deliver slashing attacks.\"\n    }\n  ],\n  \"998\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon blasts cryogenic air out from its mouth. This air can instantly freeze even liquid-hot lava.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It launches itself into battle by flipping upside down and spewing frigid air from its mouth. It finishes opponents off with its dorsal blade.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Baxcalibur exhales air cold enough to freeze lava. It uses its breath to freeze foes, then pulverizes them with a blow from its tail.\"\n    }\n  ],\n  \"999\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"It lives inside an old treasure chest. Sometimes it gets left in shop corners since no one realizes it's actually a Pokémon.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon was born inside a treasure chest about 1,500 years ago. It sucks the life-force out of scoundrels who try to steal the treasure.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It lives inside an old treasure chest. Sometimes it gets left in shop corners since no one realizes it's actually a Pokémon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It lurks inside a sturdy treasure chest and possesses solid defenses, but it's so heavy that it has difficulty moving around.\"\n    }\n  ],\n  \"1000\": [\n    {\n      \"version_id\": \"Pokopia\",\n      \"flavor_text\": \"Its body seems to be made up of 1,000 coins. This Pokémon gets along well with others and is quick to make friends with anybody.\"\n    },\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Its body seems to be made up of 1,000 coins. This Pokémon gets along well with others and is quick to make friends with anybody.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has a sturdy body made up of stacked coins. Gholdengo overwhelms its enemies by firing coin after coin at them in quick succession.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon likes lively places. Some wild Gholdengo even live in cities.\"\n    }\n  ],\n  \"1001\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The grudge of a person punished for writing the king's evil deeds upon wooden tablets has clad itself in dead leaves to become a Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It drains the life-force from vegetation, causing nearby forests to instantly wither and fields to turn barren.\"\n    }\n  ],\n  \"1002\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon can control 100 tons of fallen snow. It plays around innocently by leaping in and out of avalanches it has caused.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The hatred of those who perished by the sword long ago has clad itself in snow and become a Pokémon.\"\n    }\n  ],\n  \"1003\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The fear poured into an ancient ritual vessel has clad itself in rocks and dirt to become a Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It slowly brings its exceedingly heavy head down upon the ground, splitting the earth open with huge fissures that run over 160 feet deep.\"\n    }\n  ],\n  \"1004\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It controls flames burning at over 5,400 degrees Fahrenheit. It casually swims through the sea of lava it creates by melting rock and sand.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The envy accumulated within curved beads that sparked multiple conflicts has clad itself in fire and become a Pokémon.\"\n    }\n  ],\n  \"1005\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It is possible that this is the creature listed as Roaring Moon in an expedition journal that still holds many mysteries.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"According to an article in a dubious magazine, this Pokémon has some connection to a phenomenon that occurs in a certain region.\"\n    }\n  ],\n  \"1006\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It has some similarities to a mad scientist's invention covered in a paranormal magazine.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's possible that this is the object listed as Iron Valiant in a certain expedition journal.\"\n    }\n  ],\n  \"1007\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This seems to be the Winged King mentioned in an old expedition journal. It was said to have split the land with its bare fists.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This Pokémon resembles Cyclizar, but it is far burlier and more ferocious. Nothing is known about its ecology or other features.\"\n    }\n  ],\n  \"1008\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Much remains unknown about this creature. It resembles Cyclizar, but it is far more ruthless and powerful.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This seems to be the Iron Serpent mentioned in an old book. The Iron Serpent is said to have turned the land to ash with its lightning.\"\n    }\n  ],\n  \"1009\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This ferocious creature is shrouded in mystery. It's named after an aquatic monster mentioned in an old expedition journal.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It resembles an illustration published in a paranormal magazine, said to be a depiction of a super-ancient Suicune.\"\n    }\n  ],\n  \"1010\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Many of its physical characteristics match those of a Virizion from the future that was covered in a paranormal magazine.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"According to the few eyewitness accounts that exist, it used its shining blades to julienne large trees and boulders.\"\n    }\n  ],\n  \"1011\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Dipplin is two creatures in one Pokémon. Its evolution was triggered by a special apple grown only in one place.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The head sticking out belongs to the fore-wyrm, while the tail belongs to the core-wyrm. The two share one apple and help each other out.\"\n    }\n  ],\n  \"1012\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Supposedly, the regrets of a tea ceremony master who died before perfecting his craft lingered in some matcha and became a Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Poltchageist looks like a regional form of Sinistea, but it was recently discovered that the two Pokémon are entirely unrelated.\"\n    }\n  ],\n  \"1013\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It pretends to be tea, trying to fool people into drinking it so it can drain their life-force. Its ruse is generally unsuccessful.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It prefers cool, dark places, such as the back of a shelf or the space beneath a home's floorboards. It wanders in search of prey after sunset.\"\n    }\n  ],\n  \"1014\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"After all its muscles were stimulated by the toxic chain around its neck, Okidogi transformed and gained a powerful physique.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Okidogi is a ruffian with a short temper. It can pulverize anything by swinging around the chain on its neck.\"\n    }\n  ],\n  \"1015\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"The chain is made from toxins that enhance capabilities. It stimulated Munkidori's brain and caused the Pokémon's psychic powers to bloom.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Munkidori keeps itself somewhere safe while it toys with its foes, using psychokinesis to induce intense dizziness.\"\n    }\n  ],\n  \"1016\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Fezandipiti owes its beautiful looks and lovely voice to the toxic stimulants emanating from the chain wrapped around its body.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Fezandipiti beats its glossy wings to scatter pheromones that captivate people and Pokémon.\"\n    }\n  ],\n  \"1017\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This Pokémon's type changes based on which mask it's wearing. It confounds its enemies with nimble movements and kicks.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"This mischief-loving Pokémon is full of curiosity. It battles by drawing out the type-based energy contained within its masks.\"\n    }\n  ],\n  \"1018\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It gathers static electricity from its surroundings. The beams it launches when down on all fours are tremendously powerful.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It digs holes on mountains, searching for food. It's so durable that being caught in a cave-in won't faze it.\"\n    }\n  ],\n  \"1019\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Seven syrpents live inside an apple made of syrup. The syrpent in the center is the commander.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"These capricious syrpents have banded together. On the rare occasion that their moods align, their true power is unleashed.\"\n    }\n  ],\n  \"1020\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"There are scant few reports of this creature being sighted. One short video shows it rampaging and spouting pillars of flame.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It resembles an eerie Pokémon once shown in a paranormal magazine. That Pokémon was said to be an Entei regenerated from a fossil.\"\n    }\n  ],\n  \"1021\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It's said to incinerate everything around it with lightning launched from its fur. Very little is known about this creature.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It bears resemblance to a Pokémon that became a hot topic for a short while after a paranormal magazine touted it as Raikou's ancestor.\"\n    }\n  ],\n  \"1022\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It resembles a Pokémon described in a dubious magazine as a Terrakion that had been modified by an evil organization.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It was named after a mysterious object recorded in an old book. Its body seems to be metallic.\"\n    }\n  ],\n  \"1023\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It resembles a mysterious object introduced in a paranormal magazine as a cutting-edge weapon shaped like a Cobalion.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"There was supposedly an incident in which it launched shining blades to cut everything around it to pieces. Little else is known about it.\"\n    }\n  ],\n  \"1024\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"Terapagos protects itself using its power to transform energy into hard crystals. This Pokémon is the source of the Terastal phenomenon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It's thought that this Pokémon lived in ancient Paldea until it got caught in seismic shifts and went extinct.\"\n    }\n  ],\n  \"1025\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It feeds others toxic mochi that draw out desires and capabilities. Those who eat the mochi fall under Pecharunt's control, chained to its will.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"Its peach-shaped shell serves as storage for a potent poison. It makes poisonous mochi and serves them to people and Pokémon.\"\n    }\n  ],\n  \"784totem\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it howls after finishing off its prey, the metallic sounds of its celebrating comrades can be heard from all around.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It battles valiantly with its fists, which are armored in steel scales. Kommo-o specializes in uppercuts.\"\n    }\n  ],\n  \"905therian\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A different guise from its feminine humanoid form. From the clouds, it descends upon those who treat any form of life with disrespect and metes out wrathful, ruthless punishment.\"\n    }\n  ],\n  \"1012artisan\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It sprinkles some of its powdery body onto food and drains the life-force from those who so much as lick it.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"It has taken up residence in a very expensive tea caddy. It takes an expert to distinguish the expensive tea caddies from the cheap ones.\"\n    }\n  ],\n  \"1013masterpiece\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"It lives inside a superb teacup that was crafted by a potter of great renown. Collectors positively adore this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"The more stirring it does with the tea whisk on its head, the more energy it builds up. It does this to prepare for battle.\"\n    }\n  ],\n  \"1017cornerstone\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This form has excellent defenses, absorbing impacts solidly like the cornerstones that support houses.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In this form, it draws on the power of stone. Its body is rock-solid, protecting it from all manner of attacks.\"\n    }\n  ],\n  \"1017cornerstone-tera\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This form has excellent defenses, absorbing impacts solidly like the cornerstones that support houses.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In this form, it draws on the power of stone. Its body is rock-solid, protecting it from all manner of attacks.\"\n    }\n  ],\n  \"1017hearthflame\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This form is the most aggressive, bombarding enemies with the intensity of flames blazing within a hearth.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In this form, it draws on the power of fire. It spears its enemies with thorn-covered ivy.\"\n    }\n  ],\n  \"1017hearthflame-tera\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This form is the most aggressive, bombarding enemies with the intensity of flames blazing within a hearth.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In this form, it draws on the power of fire. It spears its enemies with thorn-covered ivy.\"\n    }\n  ],\n  \"1017wellspring\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This form excels in both attack and defense. It ceaselessly unleashes moves like a spring gushes water.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In this form, it draws on the power of water. It attacks unrelentingly with kicks and ivy strikes.\"\n    }\n  ],\n  \"1017wellspring-tera\": [\n    {\n      \"version_id\": \"Scarlet\",\n      \"flavor_text\": \"This form excels in both attack and defense. It ceaselessly unleashes moves like a spring gushes water.\"\n    },\n    {\n      \"version_id\": \"Violet\",\n      \"flavor_text\": \"In this form, it draws on the power of water. It attacks unrelentingly with kicks and ivy strikes.\"\n    }\n  ],\n  \"3mega\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"In order to support its flower, which has grown larger due to Mega Evolution, its back and legs have become stronger.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"In order to support its flower, which has grown larger due to Mega Evolution, its back and legs have become stronger.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"In order to support its flower, which has grown larger due to Mega Evolution, its back and legs have become stronger.\"\n    }\n  ],\n  \"3gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In battle, this Pokémon swings around two thick vines. If these vines slammed into a 10-story building, they could easily topple it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Huge amounts of pollen burst from it with the force of a volcanic eruption. Breathing in too much of the pollen can cause fainting.\"\n    }\n  ],\n  \"6mega-x\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The overwhelming power that fills its entire body causes it to turn black and create intense blue flames.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The overwhelming power that fills its entire body causes it to turn black and create intense blue flames.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The overwhelming power that fills its entire body causes it to turn black and creates intense blue flames.\"\n    }\n  ],\n  \"6mega-y\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its bond with its Trainer is the source of its power. It boasts speed and maneuverability greater than that of a jet fighter.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its bond with its Trainer is the source of its power. It boasts speed and maneuverability greater than that of a jet fighter.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its bond with its Trainer is the source of its power. It boasts speed and maneuverability greater than that of a jet.\"\n    }\n  ],\n  \"6gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This colossal, flame-winged figure of a Charizard was brought about by Gigantamax energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The flame inside its body burns hotter than 3,600 degrees Fahrenheit. When Charizard roars, that temperature climbs even higher.\"\n    }\n  ],\n  \"9mega\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The cannon on its back is as powerful as a tank gun. Its tough legs and back enable it to withstand the recoil from firing the cannon.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The cannon on its back is as powerful as a tank gun. Its tough legs and back enable it to withstand the recoil from firing the cannon.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The cannon on its back is as powerful as a tank gun. Its tough legs and back enable it to withstand the recoil from firing the cannon.\"\n    }\n  ],\n  \"9gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's not very good at precision shooting. When attacking, it just fires its 31 cannons over and over and over.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Water fired from this Pokémon's central main cannon has enough power to blast a hole into a mountain.\"\n    }\n  ],\n  \"12gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Crystallized Gigantamax energy makes up this Pokémon's blindingly bright and highly toxic scales.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Crystallized Gigantamax energy makes up this Pokémon's blindingly bright and highly toxic scales.\"\n    }\n  ],\n  \"15mega\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its legs have become poison stingers. It stabs its prey repeatedly with the stingers on its limbs, dealing the final blow with the stinger on its rear.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its legs have become poison stingers. It stabs its prey repeatedly with the stingers on its limbs, dealing the final blow with the stinger on its rear.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its legs have become poison stingers. It stabs its prey repeatedly with the stingers on its limbs, dealing the final blow with the stinger on its rear.\"\n    }\n  ],\n  \"18mega\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"With its muscular strength now greatly increased, it can fly continuously for two weeks without resting.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"With its muscular strength now greatly increased, it can fly continuously for two weeks without resting.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"With its muscular strength now greatly increased, it can fly continuously for two weeks without resting.\"\n    }\n  ],\n  \"19alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When the sun goes down, it becomes active. It runs around town on a chase for good food for the boss of its nest—Raticate.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"With its incisors, it gnaws through doors and infiltrates people's homes. Then, with a twitch of its whiskers, it steals whatever food it finds.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It shows no interest in anything that isn't fresh. If you take it shopping with you, it will help you pick out ingredients.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Night after night, they sneak into people's homes seeking food. A massive outbreak of them has become an issue of public concern.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its whiskers provide it with a keen sense of smell, enabling it to pick up the scent of hidden food and locate it instantly.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its whiskers provide it with a keen sense of smell, enabling it to pick up the scent of hidden food and locate it instantly.\"\n    }\n  ],\n  \"20alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It forms a group of Rattata, which it assumes command of. Each group has its own territory, and disputes over food happen often.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This gourmet Pokémon is particular about the taste and freshness of its food. Restaurants where Raticate live have a good reputation.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It has an incredibly greedy personality. Its nest is filled with so much food gathered by Rattata at its direction, it can't possibly eat it all.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It commands a nest of Rattata. Different nests don't get along, whipping up severe fights over feeding grounds.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It makes its Rattata underlings gather food for it, dining solely on the most nutritious and delicious fare.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It makes its Rattata underlings gather food for it, dining solely on the most nutritious and delicious fare.\"\n    }\n  ],\n  \"20alola-totem\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It forms a group of Rattata, which it assumes command of. Each group has its own territory, and disputes over food happen often.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This gourmet Pokémon is particular about the taste and freshness of its food. Restaurants where Raticate live have a good reputation.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It has an incredibly greedy personality. Its nest is filled with so much food gathered by Rattata at its direction, it can't possibly eat it all.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It commands a nest of Rattata. Different nests don't get along, whipping up severe fights over feeding grounds.\"\n    }\n  ],\n  \"25starter\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"This forest-dwelling Pokémon stores electricity in its cheeks, so you'll feel a tingly shock if you touch it.\"\n    }\n  ],\n  \"25original\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pikachu wears its partner's cap, which is brimming with memories of traveling through the Kanto and Johto regions.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. The cap is proof that the two traveled throughout the Kanto and Johto regions together.\"\n    }\n  ],\n  \"25hoenn\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pikachu wears its partner's cap, which is brimming with memories of traveling through the Hoenn region.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. The cap is proof that the two traveled throughout the Hoenn region together.\"\n    }\n  ],\n  \"25sinnoh\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pikachu wears its partner's cap, which is brimming with memories of traveling through the Sinnoh region.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. The cap is proof that the two traveled throughout the Sinnoh region together.\"\n    }\n  ],\n  \"25unova\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pikachu wears its partner's cap, which is brimming with memories of traveling through the Unova region.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. The cap is proof that the two traveled throughout the Unova region together.\"\n    }\n  ],\n  \"25kalos\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pikachu wears its partner's cap, which is brimming with memories of traveling through the Kalos region.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. The cap is proof that the two traveled throughout the Kalos region together.\"\n    }\n  ],\n  \"25alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pikachu wears its partner's cap, which is brimming with memories of traveling through the Alola region.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. The cap is proof that the two traveled throughout the Alola region together.\"\n    }\n  ],\n  \"25partner\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This form of Pikachu is somewhat rare. It wears the hat of its Trainer, who is also its partner.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. Since the cap's not the right size, the fit is a bit loose.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pikachu wears its partner's cap, which is brimming with memories of when they first met.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pikachu is wearing its Trainer's cap. The cap is a precious symbol of a fateful encounter.\"\n    }\n  ],\n  \"25gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its Gigantamax power expanded, forming its supersized body and towering tail.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it smashes its opponents with its bolt-shaped tail, it delivers a surge of electricity equivalent to a lightning strike.\"\n    }\n  ],\n  \"26alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It only evolves to this form in the Alola region. According to researchers, its diet is one of the causes of this change.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It uses psychokinesis to control electricity. It hops aboard its own tail, using psychic power to lift the tail and move about while riding it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When you rub its cheeks, a sweet fragrance comes wafting out. However, you'll also get a light shock!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It focuses psychic energy into its tail and rides it like it's surfing. Another name for this Pokémon is \\\"hodad.\\\"\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It loves pancakes prepared with a secret Alolan recipe. Some wonder whether that recipe holds the key to this Pokémon's evolution.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It loves pancakes prepared with a secret Alolan recipe. Some wonder whether that recipe holds the key to this Pokémon's evolution.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's believed that the weather, climate, and food of the Alola region all play a part in causing Pikachu to evolve into this form of Raichu.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon rides on its tail while it uses its psychic powers to levitate. It attacks with star-shaped thunderbolts.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses psychokinesis to control electricity. It hops aboard its own tail, using psychic power to lift the tail and move about while riding it.\"\n    }\n  ],\n  \"26mega-x\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It resembles an X as it flies through the air with 50 million volts of electricity sparking from its ears and forked tail.\"\n    }\n  ],\n  \"26mega-y\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It fires bolts of electricity from the tip of its tail and from the spiky tufts of fur growing out of its temples. This electricity forms the letter Y.\"\n    }\n  ],\n  \"27alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It lives on snowy mountains. Its steel shell is very hard—so much so, it can't roll its body up into a ball.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"An ancient tradition of Alolan festivals, still carried on to this day, is a competition to slide Sandshrew across ice as far as one can.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"After fleeing a volcanic eruption, it ended up moving to an area of snowy mountains. Its ice shell is as hard as steel.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The skin on its back is as hard as steel. Predators go after its soft belly, so it clings to the ground desperately.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its ice-covered body lets it slide across the ground with bullet-like speed, sending its enemies flying when it hits them.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its ice-covered body lets it slide across the ground with bullet-like speed, sending its enemies flying when it hits them.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Life on mountains covered with deep snow has granted this Pokémon a body of ice that's as hard as steel.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It lives in snowy mountains on southern islands. When a blizzard rolls in, this Pokémon hunkers down in the snow to avoid getting blown away.\"\n    }\n  ],\n  \"28alola\": [\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Pokémon's steel spikes are sheathed in ice. Stabs from these spikes cause deep wounds and severe frostbite as well.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Fleeing a volcanic eruption, it settled on a snowy mountain. As it races through the snowfields, it sends up a spray of snow.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It runs across snow-covered plains at high speeds. It developed thick, sharp claws to plow through the snow.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"iceberg without slipping.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It is skilled at slashing enemies with its claws. If broken, they start to grow back in a day.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It is skilled at slashing enemies with its claws. If broken, they start to grow back in a day.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It uses large, hooked claws to cut a path through deep snow as it runs. On snowy mountains, this Sandslash is faster than any other Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Many people climb snowy mountains, hoping to see the icy spikes of these Pokémon glistening in the light of dawn.\"\n    }\n  ],\n  \"36mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It flies by using the power of moonlight to control gravity within a radius of over 32 feet around it.\"\n    }\n  ],\n  \"37alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It exhales air colder than -58 degrees Fahrenheit. Elderly people in Alola call this Pokémon by an older name—Keokeo.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"In hot weather, this Pokémon makes ice shards with its six tails and sprays them around to cool itself off.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"If you carelessly approach it because it's cute, the boss of the pack, Ninetales, will appear and freeze you.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They live together in a skulk, helping one another. Before eating their prey, they freeze it solid with their -58 degree Fahrenheit breath.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It looks like snow come to life, and the breath it exhales is -58 degrees Fahrenheit. Another name for it is Keokeo.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It looks like snow come to life, and the breath it exhales is -58 degrees Fahrenheit. Another name for it is Keokeo.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"After long years in the ever-snowcapped mountains of Alola, this Vulpix has gained power over ice.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If you observe its curly hairs through a microscope, you'll see small ice particles springing up.\"\n    }\n  ],\n  \"38alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It creates drops of ice in its coat and showers them over its enemies. Anyone who angers it will be frozen stiff in an instant.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Possessing a calm demeanor, this Pokémon was revered as a deity incarnate before it was identified as a regional variant of Ninetales.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The reason it guides people all the way down to the mountain's base is that it wants them to hurry up and leave.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Some said that deities visited mountains where Ninetales live, so in times long past, no one was allowed to go into those mountains.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It lives on mountains perpetually covered in snow and is revered as a deity incarnate. It appears draped in a blizzard.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It lives on mountains perpetually covered in snow and is revered as a deity incarnate. It appears draped in a blizzard.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A deity resides in the snowy mountains where this Pokémon lives. In ancient times, it was worshiped as that deity's incarnation.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While it will guide travelers who get lost on a snowy mountain down to the mountain's base, it won't forgive anyone who harms nature.\"\n    }\n  ],\n  \"50alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its head sports an altered form of whiskers made of metal. When in communication with its comrades, its whiskers wobble to and fro.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its golden hairs function as sensors. It pokes them out of its burrow to monitor its surroundings.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Although it's powerful enough to dig right through volcanic rock, it doesn't allow itself to be seen very often.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The need to dig through volcanic rock in the ground has made them more powerful than the Diglett of other regions.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"After living in soil with high iron content for some time, three steel whiskers sprouted from the top of its head.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"After living in soil with high iron content for some time, three steel whiskers sprouted from the top of its head.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The metal-rich geology of this Pokémon's habitat caused it to develop steel whiskers on its head.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its three hairs change shape depending on Diglett's mood. They're a useful communication tool among these Pokémon.\"\n    }\n  ],\n  \"51alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its shining gold hair provides it with protection. It's reputed that keeping any of its fallen hairs will bring bad luck.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"These Pokémon are cherished in the Alola region, where they are thought to be feminine deities of the land incarnate.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its metallic whiskers are heavy, so it's not very fast, but it has the power to dig through bedrock.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its shining gold whiskers are advanced sensors that can detect vibrations from sounds several miles away.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"They're referred to as triplets, but they're not identical-the metallic elements in their bodies differ slightly. The proof shows in their whiskers!\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"They're referred to as triplets, but they're not identical-the metallic elements in their bodies differ slightly. The proof shows in their whiskers!\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Their beautiful, metallic whiskers create a sort of protective helmet on their heads, and they also function as highly precise sensors.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The three of them get along very well. Through their formidable teamwork, they defeat powerful opponents.\"\n    }\n  ],\n  \"52alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Pokémon was not originally found in Alola. Human actions caused a surge in their numbers, and they went feral. They're prideful and crafty.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When its delicate pride is wounded, or when the gold coin on its forehead is dirtied, it flies into a hysterical rage.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's impulsive, selfish, and fickle. It's very popular with some Trainers who like giving it the attention it needs.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"A royal house that flourished in the distant past brought it here from another region. Meowth is both selfish\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Highly intelligent and prideful, it's famously difficult to handle-but that's also a reason for its popularity.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Highly intelligent and prideful, it's famously difficult to handle-but that's also a reason for its popularity.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's accustomed to luxury because it used to live with Alolan royalty. As a result, it's very picky about food.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Deeply proud and keenly smart, this Pokémon moves with cunning during battle and relentlessly attacks enemies' weak points.\"\n    }\n  ],\n  \"52galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Living with a savage, seafaring people has toughened this Pokémon's body so much that parts of it have turned to iron.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These daring Pokémon have coins on their foreheads. Darker coins are harder, and harder coins garner more respect among Meowth.\"\n    }\n  ],\n  \"52gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The pattern that has appeared on its giant coin is thought to be the key to unlocking the secrets of the Dynamax phenomenon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its body has grown incredibly long and the coin on its forehead has grown incredibly large—all thanks to Gigantamax power.\"\n    }\n  ],\n  \"53alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its round face and smooth coat—softer than the most high-class velvet—have made this a very popular Pokémon in Alola.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It looks down on everyone other than itself. Its preferred tactics are sucker punches and blindside attacks.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"In contrast to its lovely face, it's so brutal that it tortures its weakened prey rather than finishing them off.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its round face is a symbol of wealth. Persian that have bigger, plumper faces are considered more beautiful.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It has the classiest coat. The rippling of its fur in the heat of battle has a beauty all its own.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It has the classiest coat. The rippling of its fur in the heat of battle has a beauty all its own.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The round face of Alolan Persian is considered to be a symbol of prosperity in the Alola region, so these Pokémon are very well cared for.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon is one tough opponent. Not only does it have formidable physical abilities, but it's also not above fighting dirty.\"\n    }\n  ],\n  \"65mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"As a result of Mega Evolution, its power has been entirely converted into psychic energy, and it has lost all strength in its muscles.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its hidden psychic power has been unleashed. A glance at someone gives it knowledge of the course of that person's life, from birth to death.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It sends out psychic power from the red organ on its forehead to foresee its opponents' every move.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Having traded away its muscles, Alakazam's true power has been unleashed. With its psychic powers, it can foresee all things.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It's adept at precognition. When attacks completely miss Alakazam, that's because it's seeing the future.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It's adept at precognition. When attacks completely miss Alakazam, that's because it's seeing the future.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Alakazam has traded away its muscles, unleashing its true power. With its psychic powers, it can foresee all things.\"\n    }\n  ],\n  \"68gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The Gigantamax energy coursing through its arms makes its punches hit as hard as bomb blasts.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"One of these Pokémon once used its immeasurable strength to lift a large ship that was in trouble. It then carried the ship to port.\"\n    }\n  ],\n  \"71mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The volume of this Pokémon's acid has increased due to Mega Evolution, filling its mouth. If it's not careful, the acid will overflow and spill out.\"\n    }\n  ],\n  \"74alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its body is a magnetic stone. Iron sand attaches firmly to the portions of its body that are particularly magnetic.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"If you accidentally step on a Geodude sleeping on the ground, you'll hear a crunching sound and feel a shock ripple through your entire body.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"If you mistake it for a rock and step on it, it will headbutt you in anger. In addition to the pain, it will also zap you with a shock.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Geodude compete against each other with headbutts. The iron sand on their heads will stick to whichever one has stronger magnetism.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its stone head is imbued with electricity and magnetism. If you carelessly step on one, you'll be in for a painful shock.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its stone head is imbued with electricity and magnetism. If you carelessly step on one, you'll be in for a painful shock.\"\n    }\n  ],\n  \"75alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its preferred food is dravite. After it has eaten this mineral, crystals form inside the Pokémon, rising to the surface of part of its body.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"They eat rocks and often get into a scrap over them. The shock of Graveler smashing together causes a flash of light and a booming noise.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When two Graveler fight each other, it fills the surroundings with flashes of light and sound. People call it the \\\"fireworks of the earth.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Graveler's entire body is tinged with electricity due to the stones it likes to eat. It's very quick-tempered.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"When it comes rolling down a mountain path, anything in its way gets zapped by electricity and sent flying.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"When it comes rolling down a mountain path, anything in its way gets zapped by electricity and sent flying.\"\n    }\n  ],\n  \"76alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It fires rocks charged with electricity. Even if the rock isn't fired that accurately, just grazing an opponent will cause numbness and fainting.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Because it can't fire boulders at a rapid pace, it's been known to seize nearby Geodude and fire them from its back.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It's grumpy and stubborn. If you upset it, it discharges electricity from the surface of its body and growls with a voice like thunder.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It shoots large rocks that are charged with electricity. Tremendous electric shocks are flung out across the whole area of impact.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It uses magnetism to accelerate and fire off rocks tinged with electricity. Even if it doesn't score a direct hit, the jolt of electricity will do the job.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It uses magnetism to accelerate and fire off rocks tinged with electricity. Even if it doesn't score a direct hit, the jolt of electricity will do the job.\"\n    }\n  ],\n  \"77galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its small horn hides a healing power. With a few rubs from this Pokémon's horn, any slight wound you have will be healed.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon will look into your eyes and read the contents of your heart. If it finds evil there, it promptly hides away.\"\n    }\n  ],\n  \"78galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Little can stand up to its psycho cut. Unleashed from this Pokémon's horn, the move will punch a hole right through a thick metal sheet.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Brave and prideful, this Pokémon dashes airily through the forest, its steps aided by the psychic power stored in the fur on its fetlocks.\"\n    }\n  ],\n  \"79galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Although this Pokémon is normally zoned out, its expression abruptly sharpens on occasion. The cause for this seems to lie in Slowpoke's diet.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Because Galarian Slowpoke eat the seeds of a plant that grows only in Galar, their tails have developed a spicy flavor.\"\n    }\n  ],\n  \"80mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"All the energy from Mega Evolution poured into the Shellder on its tail, leaving Slowpoke to be swallowed whole.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When bathed in the energy of Mega Evolution, Shellder converts into impregnable armor. There is virtually no change in Slowpoke.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Tremendous energy strengthened the power of the Shellder on its tail, but it doesn't really affect Slowpoke.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Tremendous energy strengthened the power of the Shellder on its tail, but it doesn't really affect Slowpoke.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Under the influence of Shellder's digestive fluids, Slowpoke has awakened, gaining a great deal of power-and a little motivation to boot.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Under the influence of Shellder's digestive fluids, Slowpoke has awakened, gaining a great deal of power-and a little motivation to boot.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When bathed in the energy of Mega Evolution, Shellder converts into impregnable armor. There is virtually no change in Slowpoke.\"\n    }\n  ],\n  \"80galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A Shellder bite set off a chemical reaction with the spices inside Slowbro's body, causing Slowbro to become a Poison-type Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If this Pokémon squeezes the tongue of the Shellder biting it, the Shellder will launch a toxic liquid from the tip of its shell.\"\n    }\n  ],\n  \"83galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The Farfetch'd of the Galar region are brave warriors, and they wield thick, tough leeks in battle.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The stalks of leeks are thicker and longer in the Galar region. Farfetch'd that adapted to these stalks took on a unique form.\"\n    }\n  ],\n  \"88alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"A Grimer, which had been brought in to solve a problem with garbage, developed over time into this form.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The crystals on Grimer's body are lumps of toxins. If one falls off, lethal poisons leak out.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"There are a hundred or so of them living in Alola's waste-disposal site. They're all hard workers who eat a lot of trash.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Brought to Alola to solve the garbage problem, Grimer seems to relish any and all kinds of trash.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It has a passion for trash above all else, speedily digesting it and creating brilliant crystals of sparkling poison.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It has a passion for trash above all else, speedily digesting it and creating brilliant crystals of sparkling poison.\"\n    }\n  ],\n  \"89alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The garbage it eats causes continuous chemical changes in its body, which produce its exceedingly vivid coloration.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"While it's unexpectedly quiet and friendly, if it's not fed any trash for a while, it will smash its Trainer's furnishings and eat up the fragments.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"There are over a hundred kinds of poison inside its body. Chemical reactions between different poisons are the source of its vitality.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"What look like fangs and claws are actually crystallized poison that will afflict you at a mere touch, so don't get too close.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Muk's coloration becomes increasingly vivid the more it feasts on its favorite dish-trash.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Muk's coloration becomes increasingly vivid the more it feasts on its favorite dish-trash.\"\n    }\n  ],\n  \"94mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Gengar's relationships are warped. It has no interest in opponents unless it perceives them as prey.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"The energy of Mega Evolution awakened it. It sinks into another dimension, where it keeps a patient watch for its chance to attack.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It tries to take the lives of anyone and everyone. It will even try to curse the Trainer who is its master!\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Mega Evolution has made it possible for Gengar to access other dimensions. Its entire body is brimming with strange power.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It can pass through other dimensions and can appear anywhere. It caused a stir one time when it stuck just one leg out of a wall.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It can pass through other dimensions and can appear anywhere. It caused a stir one time when it stuck just one leg out of a wall.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can pass through other dimensions and appear anywhere. It caused a stir one time when it stuck just one leg out of a wall.\"\n    }\n  ],\n  \"94gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Rumor has it that its gigantic mouth leads not into its body, filled with cursed energy, but instead directly to the afterlife.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It lays traps, hoping to steal the lives of those it catches. If you stand in front of its mouth, you'll hear your loved ones' voices calling out to you.\"\n    }\n  ],\n  \"99gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The flow of Gigantamax energy has spurred this Pokémon's left pincer to grow to an enormous size. That claw can pulverize anything.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The bubbles it spews out are strongly alkaline. Any opponents hit by them will have their bodies quickly melted away.\"\n    }\n  ],\n  \"103alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Alola is the best environment for this Pokémon. Local people take pride in its appearance, saying this is how Exeggutor ought to look.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As it grew taller and taller, it outgrew its reliance on psychic powers, while within it awakened the power of the sleeping dragon.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Exeggutor is the pride of the Alolan people. Its image is carved into historical buildings and murals.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It swings its long neck like a whip and smacks its opponents. This makes Exeggutor itself dizzy, too.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The strong sunlight of the Alola region has awakened the power hidden within Exeggcute. This is the result.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The strong sunlight of the Alola region has awakened the power hidden within Exeggcute. This is the result.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Blazing sunlight has brought out the true form and powers of this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Pokémon's psychic powers aren't as strong as they once were. The head on this Exeggutor's tail scans surrounding areas with weak telepathy.\"\n    }\n  ],\n  \"105alola\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The bones it possesses were once its mother's. Its mother's regrets have become like a vengeful spirit protecting this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its custom is to mourn its lost companions. Mounds of dirt by the side of the road mark the graves of the Marowak.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The rich greenery of the Alola region is hard on Marowak. It controls fire to stay alive.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it beats opponents with its bone, the cursed flames spread to them. No amount of water will stop those flames from burning.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It has transformed the spirit of its dear departed mother into flames, and tonight it will once again dance in mourning of others of its kind.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It has transformed the spirit of its dear departed mother into flames, and tonight it will once again dance in mourning of others of its kind.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon sets the bone it holds on fire and dances through the night as a way to mourn its fallen allies.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The cursed flames that light up the bone carried by this Pokémon are said to cause both mental and physical pain that will never fade.\"\n    }\n  ],\n  \"105alola-totem\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The bones it possesses were once its mother's. Its mother's regrets have become like a vengeful spirit protecting this Pokémon.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Its custom is to mourn its lost companions. Mounds of dirt by the side of the road mark the graves of the Marowak.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The rich greenery of the Alola region is hard on Marowak. It controls fire to stay alive.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it beats opponents with its bone, the cursed flames spread to them. No amount of water will stop those flames from burning.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"It has transformed the spirit of its dear departed mother into flames, and tonight it will once again dance in mourning of others of its kind.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"It has transformed the spirit of its dear departed mother into flames, and tonight it will once again dance in mourning of others of its kind.\"\n    }\n  ],\n  \"110galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon consumes particles that contaminate the air. Instead of leaving droppings, it expels clean air.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Long ago, during a time when droves of factories fouled the air with pollution, Weezing changed into this form for some reason.\"\n    }\n  ],\n  \"115mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Mega Kangaskhan's strength derives from the mother's happiness about her child's growth. Watching it grow up keeps her spirits high.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Thanks to Mega Evolution, its child grows. But as the child is good only at fighting and nothing else, its mother feels uneasy about its future.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The explosive energy the child is bathed in causes temporary growth. The mother is beside herself with worry about it.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When the mother sees the back of her Mega- Evolved child, it makes her think of the day when her child will inevitably leave her.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Its child has grown rapidly, thanks to the energy of Mega Evolution. Mother and child show their harmonious teamwork in battle.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Its child has grown rapidly, thanks to the energy of Mega Evolution. Mother and child show their harmonious teamwork in battle.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its child has grown rapidly, thanks to the energy of Mega Evolution. Mother and child show off their harmonious teamwork in battle.\"\n    }\n  ],\n  \"121mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its movements have become more humanlike. Whether it's simply trying to communicate or wants to supplant humanity is unclear.\"\n    }\n  ],\n  \"122galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its talent is tap-dancing. It can also manipulate temperatures to create a floor of ice, which this Pokémon can kick up to use as a barrier.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can radiate chilliness from the bottoms of its feet. It'll spend the whole day tap-dancing on a frozen floor.\"\n    }\n  ],\n  \"127mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The influence of Mega Evolution leaves it in a state of constant excitement. It pierces enemies with its two large horns before shredding them.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Bathed in the energy of Mega Evolution, its wings become unusually developed. It flies at speeds of approximately 30 mph.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"After Mega Evolution, it becomes able to fly. Perhaps because it's so happy, it rarely touches the ground.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It zips around at blistering speeds, looking for an opening to skewer its opponent on its giant pincers.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"With its vaunted horns, it can lift an opponent 10 times heavier than itself and fly about with ease.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"With its vaunted horns, it can lift an opponent 10 times heavier than itself and fly about with ease.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"After Mega Evolution, it becomes able to fly. Perhaps because it's so happy, it rarely touches the ground.\"\n    }\n  ],\n  \"130mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Mega Evolution also affects its brain, leaving no other function except its destructive instinct to burn everything to cinders.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Mega Evolution also affects its brain, leaving no other function except its destructive instinct to burn everything to cinders.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Mega Evolution places a burden on its body. The stress causes it to become all the more ferocious.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It zooms out of the water at Mach speeds. Even large ships caught in its path are split cleanly in two!\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Although it obeys its instinctive drive to destroy everything within its reach, it will respond to orders from a Trainer it truly trusts.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Although it obeys its instinctive drive to destroy everything within its reach, it will respond to orders from a Trainer it truly trusts.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It jets water from the orifices on its sides, streaking above the water surface at supersonic speed.\"\n    }\n  ],\n  \"131gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Over 5,000 people can ride on its shell at once. And it's a very comfortable ride, without the slightest shaking or swaying.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It surrounds itself with a huge ring of gathered ice particles. It uses the ring to smash any icebergs that might impede its graceful swimming.\"\n    }\n  ],\n  \"133starter\": [\n    {\n      \"version_id\": \"Let's Go\",\n      \"flavor_text\": \"It can evolve into a variety of forms. Eevee's genes are the key to solving the mysteries of Pokémon evolution.\"\n    }\n  ],\n  \"133gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Gigantamax energy upped the fluffiness of the fur around Eevee's neck. The fur will envelop a foe, capturing its body and captivating its mind.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Having gotten even friendlier and more innocent, Eevee tries to play with anyone around, only to end up crushing them with its immense body.\"\n    }\n  ],\n  \"142mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Part of its body has become stone. Some scholars claim that this is Aerodactyl's true appearance.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"When it Mega Evolves, it becomes more vicious than ever before. Some say that's because its excess of power is causing it pain.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it Mega Evolves, it becomes more vicious than ever before. Some say that's because its excess of power is causing it pain.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Mega Evolution awakened some dormant genes, bringing back the sharp rocks that once covered Aerodactyl's entire body.\"\n    },\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"The power of Mega Evolution has completely restored its genes. The rocks on its body are harder than diamond.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"The power of Mega Evolution has completely restored its genes. The rocks on its body are harder than diamond.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Parts of its body have become stone. Some scholars claim that this is Aerodactyl's true appearance.\"\n    }\n  ],\n  \"143gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Gigantamax energy has affected stray seeds and even pebbles that got stuck to Snorlax, making them grow to a huge size.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Terrifyingly strong, this Pokémon is the size of a mountain—and moves about as much as one as well.\"\n    }\n  ],\n  \"144galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its feather-like blades are composed of psychic energy and can shear through thick iron sheets as if they were paper.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Known as Articuno, this Pokémon fires beams that can immobilize opponents as if they had been frozen solid.\"\n    }\n  ],\n  \"145galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When its feathers rub together, they produce a crackling sound like the zapping of electricity. That's why this Pokémon is called Zapdos.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"One kick from its powerful legs will pulverize a dump truck. Supposedly, this Pokémon runs through the mountains at over 180 mph.\"\n    }\n  ],\n  \"146galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon's sinister, flame-like aura will consume the spirit of any creature it hits. Victims become burned-out shadows of themselves.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The sinister aura that blazes like molten fire around this Pokémon is what inspired the name Moltres.\"\n    }\n  ],\n  \"149mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Mega Evolution has excessively powered up this Pokémon's feelings of kindness. It finishes off its opponents with mercy in its heart.\"\n    }\n  ],\n  \"150mega-x\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Psychic power has augmented its muscles. It has a grip strength of one ton and can sprint a hundred meters in two seconds flat!\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Psychic power has augmented its muscles. It has a grip strength of one ton and can sprint a hundred meters in two seconds flat!\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Psychic power has augmented its muscles. It has a grip strength of one ton and can sprint 100 meters in two seconds flat!\"\n    }\n  ],\n  \"150mega-y\": [\n    {\n      \"version_id\": \"Let's Go Pikachu\",\n      \"flavor_text\": \"Despite its diminished size, its mental power has grown phenomenally. With a mere thought, it can smash a skyscraper to smithereens.\"\n    },\n    {\n      \"version_id\": \"Let's Go Eevee\",\n      \"flavor_text\": \"Despite its diminished size, its mental power has grown phenomenally. With a mere thought, it can smash a skyscraper to smithereens.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Despite its diminished size, its mental power has grown phenomenally. With a mere thought, it can smash a skyscraper to smithereens.\"\n    }\n  ],\n  \"154mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon can fire a tremendously powerful Solar Beam from its four flowers. Another name for this is Mega Sol Cannon.\"\n    }\n  ],\n  \"160mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"With its arms and hoodlike fin, this Pokémon forms a gigantic set of jaws with a bite 10 times as powerful as Mega Feraligatr's actual jaws.\"\n    }\n  ],\n  \"181mega\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Excess energy from Mega Evolution stimulates its genes, and the wool it had lost grows in again.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Massive amounts of energy intensely stimulated Ampharos's cells, apparently awakening its long-sleeping dragon's blood.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Massive amounts of energy intensely stimulated Ampharos's cells, apparently awakening its long-sleeping dragon's blood.\"\n    }\n  ],\n  \"199galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A combination of toxins and the shock of evolving has increased Shellder's intelligence to the point that Shellder now controls Slowking.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"While chanting strange spells, this Pokémon combines its internal toxins with what it's eaten, creating strange potions.\"\n    }\n  ],\n  \"208mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"To protect itself from opponents' attacks, it uses magnetism to control pieces of its hard outer shell that have flaked off.\"\n    }\n  ],\n  \"212mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The excess energy that bathes this Pokémon keeps it in constant danger of overflow. It can't sustain a battle over long periods of time.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Due to the effects of Mega Evolution, its pincers have taken on a more diabolical form, ripping anything they pinch to shreds.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It stores the excess energy from Mega Evolution, so after a long time passes, its body starts to melt.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It's better at beating things than grasping them. When it battles for a long time, the weight of its pincers becomes too much to bear.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Due to the effects of Mega Evolution, its pincers have taken on a more diabolical form, ripping anything they pinch to shreds.\"\n    }\n  ],\n  \"214mega\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It can grip things with its two horns and lift 500 times its own body weight.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"A tremendous influx of energy builds it up, but when Mega Evolution ends, Heracross is bothered by terrible soreness in its muscles.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can grip things with its two horns and lift 500 times its own body weight.\"\n    }\n  ],\n  \"222galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Watch your step when wandering areas oceans once covered. What looks like a stone could be this Pokémon, and it will curse you if you kick it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Sudden climate change wiped out this ancient kind of Corsola. This Pokémon absorbs others' life-force through its branches.\"\n    }\n  ],\n  \"227mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It flies faster than the speed of sound. After whipping up shock waves to send enemies flying, it finishes them off with its talons.\"\n    }\n  ],\n  \"229mega\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its red claws and the tips of its tail are melting from high internal temperatures that are painful to Houndoom itself.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Houndoom's entire body generates heat when it Mega Evolves. Its fearsome fiery breath turns its opponents to ash.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Houndoom's entire body generates heat when it Mega Evolves. Its intense, fiery breath turns its opponents to charcoal.\"\n    }\n  ],\n  \"248mega\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Due to the colossal power poured into it, this Pokémon's back split right open. Its destructive instincts are the only thing keeping it moving.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The effects of Mega Evolution make it more ferocious than ever. It's unclear whether it can even hear its Trainer's orders.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The effects of Mega Evolution make it more ferocious than ever. It's unclear whether it can even hear its Trainer's orders.\"\n    }\n  ],\n  \"254mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The seeds on its back are filled with energy from Mega Evolution. The Pokémon detonates these seeds to launch the tip of its tail.\"\n    }\n  ],\n  \"257mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Boiling-hot blood courses through its entire body, doubling the sharpness of its moves. It subdues opponents in the blink of an eye.\"\n    }\n  ],\n  \"260mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The water within its body further strengthens its already enlarged muscles, using the same principles as a hydraulic pump.\"\n    }\n  ],\n  \"263galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its restlessness has it constantly running around. If it sees another Pokémon, it will purposely run into them in order to start a fight.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Thought to be the oldest form of Zigzagoon, it moves in zigzags and wreaks havoc upon its surroundings.\"\n    }\n  ],\n  \"264galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It uses its long tongue to taunt opponents. Once the opposition is enraged, this Pokémon hurls itself at the opponent, tackling them forcefully.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This very aggressive Pokémon will recklessly challenge opponents stronger than itself.\"\n    }\n  ],\n  \"282mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When it opens the red plate on its chest and unleashes its heart, its strongest psychic power is released.\"\n    }\n  ],\n  \"302mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The jewel from its chest, which has grown gigantic due to the effects of Mega Evolution, can turn back any attack.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Supporting a giant heavy jewel, it can't change direction very nimbly and is vulnerable to attack from behind.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Bathed in the energy of Mega Evolution, the gemstone on its chest expands, rips through its skin, and falls out.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It blocks any and all attacks with its giant-sized gemstone. However, the stone's a heavy burden, and it limits Mega Sableye's movements.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The jewel from its chest, which has grown gigantic due to the effects of Mega Evolution, can turn back any attack.\"\n    }\n  ],\n  \"303mega\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It has an extremely vicious disposition. It grips prey in its two sets of jaws and tears them apart with raw power.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its two sets of jaws thrash about violently as if they each had a will of their own. One gnash from them can turn a boulder to dust.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its two sets of jaws thrash about violently as if they each had a will of their own. One gnash from them can turn a boulder to dust.\"\n    }\n  ],\n  \"306mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Energy from Mega Evolution has turned the iron inside this Pokémon into steel armor that covers Mega Aggron's whole body.\"\n    }\n  ],\n  \"308mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Thanks to Mega Evolution, its mental power is limitless. It conjures up arms imbued with malice to defeat its enemies.\"\n    }\n  ],\n  \"310mega\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Mega Evolution fills its body with a tremendous amount of electricity, but it's too much for Manectric to fully control.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Too much electricity has built up in its body, irritating Manectric. Its explosive speed is equal to that of a lightning bolt.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Mega Evolution fills its body with a tremendous amount of electricity, but it's too much for Manectric to fully control.\"\n    }\n  ],\n  \"319mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The spines sprouting from its head are transformed fangs. If they're injured or broken off, the spines will regenerate countless times.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As a consequence of Mega Evolution, its combative instincts exploded. The yellow marks it bears are scars from a long history of battles.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The yellow patterns it bears are old scars. The energy from Mega Evolution runs through them, causing it sharp pain and suffering.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The moment it charges into its opponent, sharp spikes pop out of Sharpedo's head,\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The spines sprouting from its head are transformed fangs. If they're injured or broken off, the spines will regenerate countless times.\"\n    }\n  ],\n  \"323mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When this Pokémon's rage reaches a boiling point, the huge volcano in the hump on its back erupts violently, spewing molten lava.\"\n    }\n  ],\n  \"334mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its down is so soft, it seems as if a touch could melt it. But it's strong enough that just a few strands could be used to hoist a dump truck.\"\n    }\n  ],\n  \"351sunny\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This is the form Castform takes on the brightest of days. Its skin is unexpectedly hot to the touch, so approach with care.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This is Castform's form when basking in fair weather. Its body is warm and toasty.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This is the form Castform takes on bright days. In an experiment where Castform was placed in front of a heater, it didn't change to this form.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Castform changes to this form when it basks in bright sunlight. When you touch its glowing skin, it feels all dried out!\"\n    }\n  ],\n  \"351rainy\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This is the form Castform takes when soaked with rain. When its body is compressed, water will seep out as if from a sponge.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This is Castform's form during a downpour of rain. Its body retains moisture and gets slippery.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Castform changes to this form when rain hits it. Its body is soft and slightly swollen with water.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This is Castform's form when pelted by rain. In an experiment where it was placed in a shower, this Pokémon didn't change to this form.\"\n    }\n  ],\n  \"351snowy\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This is the form Castform takes when covered in snow. Its body becomes an ice-like material, with a temperature near 23 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This is Castform's form when caught in a hailstorm. Its cold skin is as smooth as ice.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This is the form Castform takes when hit by hail. In an experiment where it was placed in a freezer, it didn't change to this form.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This is Castform's form when caught in a hailstorm. Its whole body is chilled, and its skin is partially frozen!\"\n    }\n  ],\n  \"354mega\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Extraordinary energy amplifies its cursing power to such an extent that it can't help but curse its own Trainer.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Extraordinary energy amplifies its cursing power to such an extent that it can't help but curse its own Trainer.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its down is so soft, it seems as if a touch could melt it. But it's strong enough that just a few strands could be used to hoist a dump truck.\"\n    }\n  ],\n  \"358mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It vibrates its entire body to attack in all directions using sound waves. Any who hear the vibrations get so confused, they forget who they are.\"\n    }\n  ],\n  \"359mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"When this Pokémon whips the winglike fur on its back as though beating its wings, it sends an intimidating aura flying at its opponents.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"As the energy of Mega Evolution fills it, its fur bristles. What you see on its back are not true wings, and this Pokémon isn't able to fly.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Normally, it dislikes fighting, so it really hates changing to this form for battles.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It converts the energy from Mega Evolution into an intimidating aura. Fainthearted people expire from shock at the sight of it.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When this Pokémon whips the winglike fur on its back as though beating its wings, it sends an intimidating aura flying at its opponents.\"\n    }\n  ],\n  \"359mega-z\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Using fur that it has made into sharp, clawlike shapes, it cuts down foes with a single blow. This is an act of kindness to keep them from suffering.\"\n    }\n  ],\n  \"362mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The excess energy from Mega Evolution spilled over from its mouth, breaking its jaw. It spews endless blizzards.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It envelops prey in its mouth, freezing them instantly. But its jaw is dislocated, so it's unable to eat them.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"When it spews stupendously cold air from its broken mouth, the entire area around it gets whited out.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The power of Mega Evolution was so strong that it smashed Glalie's jaw. Its inability to eat very well leaves Glalie irritated.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"When it spews stupendously cold air from its broken mouth, the entire area around it gets whited out.\"\n    }\n  ],\n  \"373mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Anyone standing in its path gets sliced right in two, while this Pokémon continues its flight without interruption.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"\\\"Mega Evolution fuels its brutality, and it may even turn on the Trainer who raised it. It's been dubbed \\\"the blood-soaked crescent.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The stress of its two proud wings becoming misshapen and stuck together because of strong energy makes it go on a rampage.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It puts its forelegs inside its shell to streamline itself for flight. Salamence flies at high speeds over all kinds of topographical features.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"To streamline itself for flight, it pulls its forelegs into its shell. Salamence flies at high speeds even when faced with complex topographical features.\"\n    }\n  ],\n  \"376mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This form results from one Metagross, one Metang, and two Beldum linking up.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Mega Evolution stimulated its brain. It emerged as a ruthless Pokémon that will clutch at any means of ensuring its victories.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its intellect surpasses its previous level, resulting in battles so cruel, they'll make you want to cover your eyes.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"When it knows it can't win, it digs the claws on its legs into its opponent and starts the countdown to a big explosion.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This form results from one Metagross, one Metang, and two Beldum linking up.\"\n    }\n  ],\n  \"380mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It flies at speeds exceeding Mach 4. It is among the top tier of all Pokémon in terms of aerial combat capability.\"\n    }\n  ],\n  \"381mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Both its flying capabilities and its attack power have increased. It scatters transparent down to confuse its enemies.\"\n    }\n  ],\n  \"382primal\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Kyogre reverted to this state via the Blue Orb, which contains the energy of the primordial world. Kyogre's body resembles seawater.\"\n    }\n  ],\n  \"383primal\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This is Groudon's true form, restored using the Red Orb. Energy spills from its body in the form of magma.\"\n    }\n  ],\n  \"384mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A shooting star streaking across the night sky may, in fact, be Mega Rayquaza flying gracefully after a meteoroid.\"\n    }\n  ],\n  \"422east\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"There's speculation that its appearance is determined by what it eats, but the truth remains elusive.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its appearance changes depending on the environment. One theory suggests that living in cold seas causes Shellos to take on this form.\"\n    }\n  ],\n  \"423east\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It secretes a purple fluid to deter enemies. This fluid isn't poisonous—instead, it's super sticky, and once it sticks, it's very hard to unstick.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its body is covered in a sticky slime. It's very susceptible to dehydration, so it can't spend too much time on land.\"\n    }\n  ],\n  \"428mega\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It swings its ears like whips and strikes its enemies with them. It has an intensely combative disposition.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Mega Evolution awakens its combative instincts. It has shed any fur that got in the way of its attacks.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It swings its ears like whips and strikes its enemies with them. It has an intensely combative disposition.\"\n    }\n  ],\n  \"445mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Excess energy melted its arms and wings, transforming them into giant scythes.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Excess energy melted its arms and wings, transforming them into giant scythes.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its arms and wings melted into something like scythes. Mad with rage, it rampages on and on.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its disposition is more vicious than before its Mega Evolution. Garchomp carves its opponents up with the scythes on both arms.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its disposition is more vicious than before its Mega Evolution. Garchomp carves its opponents up with the scythes on both arms.\"\n    }\n  ],\n  \"445mega-z\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Garchomp has gained a new Mega-Evolved form. It flies around foes at Mach speed and cuts them to shreds with its sinister wing claws.\"\n    }\n  ],\n  \"448mega\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Black streaks all over its body show where its auras and the energy of Mega Evolution intermingled and raced through it.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It readies itself to face its enemies by focusing its mental energies. Its fighting style can be summed up in a single word: heartless.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Its aura has expanded due to Mega Evolution. Governed only by its combative instincts, it strikes enemies without mercy.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Bathed in explosive energy, its combative instincts have awakened. For its enemies, it has no mercy whatsoever.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Black streaks all over its body show where its auras and the energy of Mega Evolution intermingled and raced through it.\"\n    }\n  ],\n  \"448mega-z\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"By completely cloaking itself in its aura, Mega Lucario Z can parry all manner of attacks, battling as if it were gracefully dancing.\"\n    }\n  ],\n  \"460mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The buds on its back have sprouted into impressive icicles that can whip up massive blizzards of −22 degrees Fahrenheit.\"\n    }\n  ],\n  \"475mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It gets power from the bond it has with its Trainer. Mega Evolution has given it plates to slice its enemies and a cape to protect its body.\"\n    }\n  ],\n  \"478mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon can use eerie cold air imbued with ghost energy to freeze even insubstantial things, such as flames or the wind.\"\n    }\n  ],\n  \"479heat\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Rotom has possessed a convection microwave oven that uses a special motor. It also has a flair for manipulating flames.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This form of Rotom enjoys making mischief by turning up the heat. It will gleefully burn your favorite outfit.\"\n    }\n  ],\n  \"479wash\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This form of Rotom enjoys coming up with water-based pranks. Be careful with it if you don't want your room flooded.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Rotom has possessed a washing machine that uses a special motor. It blasts out water to get enemies to back down.\"\n    }\n  ],\n  \"479frost\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Rotom assumes this form when it takes over a refrigerator powered by a special motor. It battles by spewing cold air.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When it's like this, Rotom likes to play pranks that are freezing cold. You may find it's turned the bath you just filled to solid ice!\"\n    }\n  ],\n  \"479fan\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In this form, Rotom applies its new power over wind to its love of pranks. It will happily blow away any important documents it can find.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Rotom has taken over a fan that has a special motor. Its gusts of wind blow its opponents away!\"\n    }\n  ],\n  \"479mow\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This is Rotom after it's seized control of a lawn mower that has a special motor. As it mows down grass, it scatters the clippings everywhere.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In this form, Rotom focuses its antics on plants. Any flowers you were growing are going to get mowed down.\"\n    }\n  ],\n  \"485mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It's said that if it goes all out, it can heat its body up to temperatures over 1.8 million degrees Fahrenheit. This heat keeps enemies at bay.\"\n    }\n  ],\n  \"491mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its dark power blocks out the sun, plunging the surrounding area into darkness. There is no escaping its evil eye.\"\n    }\n  ],\n  \"500mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Brandishing a blazing flame shaped like a serpentine spear, it rushes in to rescue its imperiled allies.\"\n    }\n  ],\n  \"530mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"If this Pokémon brings its arms and head together to form a streamlined shape and spins at high speeds, it can destroy anything.\"\n    }\n  ],\n  \"531mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Anyone who touches the secondary feelers that have sprouted from the base of its throat will fall into a deep sleep.\"\n    }\n  ],\n  \"545mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Its deadly venom gives off a faint glow. The venom affects Scolipede's mind, honing its viciousness.\"\n    }\n  ],\n  \"550blue-striped\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Even Basculin, which devours everything it can with its huge jaws, is nothing more than food to organisms stronger than itself.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Some people call it \\\"the thug of the lake.\\\" Whether the differences in color are meaningful is not yet known.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Blue-striped Basculin used to be a common food source. They apparently have an inoffensive, light flavor.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Known for their violence, these Pokémon have the most fights with schools of red- striped Basculin.\"\n    }\n  ],\n  \"554galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It lived in snowy areas for so long that its fire sac cooled off and atrophied. It now has an organ that generates cold instead.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The colder they get, the more energetic they are. They freeze their breath to make snowballs, using them as ammo for playful snowball fights.\"\n    }\n  ],\n  \"555zen\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Through meditation, it calms its raging spirit and hones its psychic powers.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When wounded, it stops moving. It goes as still as stone to meditate, sharpening its mind and spirit.\"\n    }\n  ],\n  \"555galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"On days when blizzards blow through, it comes down to where people live. It stashes food in the snowball on its head, taking it home for later.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Though it has a gentle disposition, it's also very strong. It will quickly freeze the snowball on its head before going for a headbutt.\"\n    }\n  ],\n  \"555galar-zen\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Anger has reignited its atrophied flame sac. This Pokémon spews fire everywhere as it rampages indiscriminately.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Darmanitan takes this form when enraged. It won't stop spewing flames until its rage has settled, even if its body starts to melt.\"\n    }\n  ],\n  \"560mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Mega Evolution has caused Scrafty's shed skin to turn white, growing tough and supple. Of course, this Pokémon is still as feisty as ever.\"\n    }\n  ],\n  \"562galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"A clay slab with cursed engravings took possession of a Yamask. The slab is said to be absorbing the Yamask's dark power.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's said that this Pokémon was formed when an ancient clay tablet was drawn to a vengeful spirit.\"\n    }\n  ],\n  \"569gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Due to Gigantamax energy, this Pokémon's toxic gas has become much thicker, congealing into masses shaped like discarded toys.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It sprays toxic gas from its mouth and fingers. If the gas engulfs you, the toxins will seep in all the way down to your bones.\"\n    }\n  ],\n  \"592female\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It envelops its prey in its veillike arms and draws it down to the deeps, five miles below the ocean's surface.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its thin, veillike arms have tens of thousands of poisonous stingers. Females have slightly longer stingers.\"\n    }\n  ],\n  \"593female\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"These Pokémon have body compositions that are mostly identical to seawater. They make their lairs from sunken ships.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The crown on its head gets bigger and bigger as it absorbs more and more of the life-force of other creatures.\"\n    }\n  ],\n  \"604mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It now generates 10 times the electricity it did before Mega Evolving. It discharges this electricity from its false Eelektrik, which are made of mucus.\"\n    }\n  ],\n  \"609mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"One of its eyes is a window linking our world with the afterlife. This Pokémon draws in hatred and converts it into power.\"\n    }\n  ],\n  \"618galar\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Living in mud with a high iron content has given it a strong steel body.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its conspicuous lips lure prey in as it lies in wait in the mud. When prey gets close, Stunfisk clamps its jagged steel fins down on them.\"\n    }\n  ],\n  \"623mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The energy within Golurk has been stimulated by Mega Evolution. The Pokémon could explode at any moment.\"\n    }\n  ],\n  \"652mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It has fortified armor and a will to defend at all costs. Both are absurdly strong.\"\n    }\n  ],\n  \"655mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It wields flaming branches to dazzle its opponents before incinerating them with a huge fireball.\"\n    }\n  ],\n  \"658mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon spins a giant shuriken at high speed to make it float, then clings to it upside down to catch opponents unawares.\"\n    }\n  ],\n  \"670eternal\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"The flower it's holding can no longer be found blooming anywhere. It's also thought to contain terrifying power.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Terrifying energy is concealed within its ominous flower, but Floette still swings it about innocently.\"\n    }\n  ],\n  \"670mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"The Eternal Flower has absorbed all the energy from Mega Evolution. The flower now attacks enemies on its own.\"\n    }\n  ],\n  \"678f\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Females are a bit more selfish and aggressive than males. If they don't get what they want, they will torment you with their psychic abilities.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If it doesn't hold back when it unleashes its psychic power, it can tear apart a tanker. Its unfriendliness is part of its charm.\"\n    }\n  ],\n  \"678mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Mega Meowstic can use its psychic power to compress or expand anything. It overwhelms foes by contorting space itself.\"\n    }\n  ],\n  \"681blade\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This stance is dedicated to offense. It can cleave any opponent with the strength and weight of its steel blade.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Once upon a time, a king with an Aegislash reigned over the land. His Pokémon eventually drained him of life, and his kingdom fell with him.\"\n    }\n  ],\n  \"687mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses its colorful lights to overwrite the personalities and memories of others—and to control them.\"\n    }\n  ],\n  \"689mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses its many arms to toy with its opponents. This keeps the head extremely busy.\"\n    }\n  ],\n  \"691mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It spits a liquid that causes the regenerative power of cells to run wild. The liquid is deadly poison to everything other than itself.\"\n    }\n  ],\n  \"701mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Mega Evolution has pumped up all its muscles. Hawlucha flexes to show off its strength.\"\n    }\n  ],\n  \"710small\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When taking spirits to the afterlife, small Pumpkaboo prefer the spirits of children to those of adults.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Small Pumpkaboo are said to be the product of areas where few lost souls lingered.\"\n    }\n  ],\n  \"710large\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When taking spirits to the afterlife, large Pumpkaboo prefer the spirits of adults to those of children.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Large Pumpkaboo are said to be the product of areas where many lost souls lingered.\"\n    }\n  ],\n  \"710super\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Supersized Pumpkaboo are very partial to the spirits of people who were of similarly superior proportions.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Massive Pumpkaboo are said to be the product of areas where a great number of lost souls lingered.\"\n    }\n  ],\n  \"711small\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Small Gourgeist pretend to be children to fool adults. Anyone who falls for the act gets carried away to the hereafter.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A small-sized Pumpkaboo evolves into a small-sized Gourgeist. Its bodily proportions also get passed on to its descendants.\"\n    }\n  ],\n  \"711large\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Large Gourgeist put on the guise of adults, taking the hands of children to lead them to the afterlife.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A large-sized Pumpkaboo evolves into a large-sized Gourgeist. Its bodily proportions also get passed on to its descendants.\"\n    }\n  ],\n  \"711super\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Supersized Gourgeist aren't picky. They will forcefully drag anyone off to the afterlife.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"A supersized Pumpkaboo evolves into a supersized Gourgeist. Its bodily proportions also get passed on to its descendants.\"\n    }\n  ],\n  \"71810%\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Its sharp fangs make short work of finishing off its enemies, but it's unable to maintain this body indefinitely. After a period of time, it falls apart.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This is Zygarde's form when about 10% of its cells have been gathered. It runs across the land at speeds greater than 60 mph.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This is Zygarde's form when about 10% of its cells have been gathered. It runs across the land at speeds greater than 60 mph.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Born when around 10% of Zygarde's cells have been gathered from all over, this form is skilled in close-range combat.\"\n    }\n  ],\n  \"718complete\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This is Zygarde's form at times when it uses its overwhelming power to suppress those who endanger the ecosystem.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This is Zygarde's 100% form. It has enough power to overwhelm even Xerneas or Yveltal.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This is Zygarde's perfected form. From the orifice on its chest, it radiates high-powered energy that eliminates everything.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Born when all of Zygarde's cells have been gathered together, it uses force to neutralize those who harm the ecosystem.\"\n    }\n  ],\n  \"718mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"In response to people's emotions during an unprecedented crisis, Zygarde Mega Evolves and calms the situation with its unmatched power.\"\n    }\n  ],\n  \"719mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Pokémon is also known as the Royal Pink Princess. The dazzling, sparkling diamond on its forehead is a whopping 2,000 carats.\"\n    }\n  ],\n  \"740mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It can pulverize reinforced concrete with a light swing of one of its fists, each of which is covered in a thick layer of ice.\"\n    }\n  ],\n  \"741pom-pom\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Oricorio has sipped bright yellow nectar. Its bright, cheerful dance melts the hearts of its enemies.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It creates an electric charge by rubbing its feathers together. It dances over to its enemies and delivers shocking electrical punches.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It lifts its opponents' spirits with its cheerful dance moves. When they let their guard down, it electrocutes them with a jolt.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Oricorio has drunk bright yellow nectar. When it sees someone looking glum, it will try to cheer them up with a dance.\"\n    }\n  ],\n  \"741pa'u\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Oricorio relaxes by swaying gently. This increases its psychic energy, which it then fires at its enemies.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This Oricorio has sipped pink nectar. Its enemies' hearts melt at the sight of its gently swaying hips.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It relaxes its opponents with its elegant dancing. When they let their guard down, it showers them with psychic energy.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Oricorio has sipped pink nectar. It gets so caught up in its dancing that it sometimes doesn't hear its Trainer's orders.\"\n    }\n  ],\n  \"741sensu\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This Oricorio has sipped purple nectar. Its elegant, attractive dance will send the minds and hearts of its enemies to another world.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It summons the dead with its dreamy dancing. From their malice, it draws power with which to curse its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It charms its opponents with its refined dancing. When they let their guard down, it places a curse on them that will bring on their demise.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This Oricorio has sipped purple nectar. Some dancers use its graceful, elegant dancing as inspiration.\"\n    }\n  ],\n  \"745midnight\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"The more intimidating the opponent it faces, the more this Pokémon's blood boils. It will attack with no regard for its own safety.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"It goads its enemies into attacking, withstands the hits, and in return, delivers a headbutt, crushing their bones with its rocky mane.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It has no problem ignoring orders it doesn't like. It doesn't seem to mind getting hurt at all—as long as it can finish off its opponent.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"They live alone without forming packs. They will only listen to orders from Trainers who can draw out their true power.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This form of Lycanroc is reckless. It charges headlong at its opponents, attacking without any care about what injuries it might receive.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's invigorated by powerful opponents-the stronger the better. A full-force headbutt from one of these Lycanroc can shatter giant boulders.\"\n    }\n  ],\n  \"745dusk\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Bathed in the setting sun of evening, Lycanroc has undergone a special kind of evolution. An intense fighting spirit underlies its calmness.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This strange form is the result of its evolving at dusk. It's very rare in Alola.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This form of Lycanroc is normally calm and quiet. Once a battle begins, however, this Pokémon displays a ferocious fighting spirit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"These Pokémon have both calm and ferocious qualities. Their temperamental nature makes them a difficult species to raise.\"\n    }\n  ],\n  \"746school\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"Weak Wishiwashi school together to concentrate their power. Their united force makes them the demon of the sea, feared near and far.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"At their appearance, even Gyarados will flee. When they team up to use Water Gun, its power exceeds that of Hydro Pump.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Wishiwashi assemble in this formation to face off against strong foes. It boasts a strength that earned it the name \\\"demon of the sea.\\\"\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Called \\\"demon of the sea\\\" by some, when Wishiwashi are injured in battle and their numbers dwindle, they become a regular school.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"On their own, they're very weak. But when Wishiwashi pool their power together in a school, they become a demon of the sea.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When facing tough opponents, they get into formation. But if they get wounded in battle, they'll scatter and become solitary again.\"\n    }\n  ],\n  \"768mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It uses four of its arms to fiercely assail its foes. Once they've been pushed to the brink of defeat, it finishes them off with the arms it kept hidden.\"\n    }\n  ],\n  \"773bug\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Bug type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Bug-type form.\"\n    }\n  ],\n  \"773dark\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Dark type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Dark-type form.\"\n    }\n  ],\n  \"773dragon\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Dragon type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Dragon-type form.\"\n    }\n  ],\n  \"773electric\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Electric type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Electric-type form\"\n    }\n  ],\n  \"773fairy\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Fairy type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Fairy-type form.\"\n    }\n  ],\n  \"773fighting\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Fighting type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Fighting-type form.\"\n    }\n  ],\n  \"773fire\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Fire type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Fire-type form.\"\n    }\n  ],\n  \"773flying\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Flying type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Flying-type form.\"\n    }\n  ],\n  \"773ghost\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Ghost type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Ghost-type form.\"\n    }\n  ],\n  \"773grass\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Grass type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Grass-type form.\"\n    }\n  ],\n  \"773ground\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Ground type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Ground-type form.\"\n    }\n  ],\n  \"773ice\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Ice type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Ice-type form.\"\n    }\n  ],\n  \"773poison\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Poison type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Poison-type form.\"\n    }\n  ],\n  \"773psychic\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Psychic type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Psychic-type form.\"\n    }\n  ],\n  \"773rock\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Rock type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Rock-type form.\"\n    }\n  ],\n  \"773steel\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Steel type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Steel-type form.\"\n    }\n  ],\n  \"773water\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"It destroyed its own control mask. It has become capable of changing its type by equipping special memories.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"Upon awakening, its RKS System is activated. By employing specific memories, this Pokémon can adapt its type to confound its enemies.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Having been awakened successfully, it can change its type and battle—just like a certain Pokémon depicted in legends.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Its capacity to change types unleashed, it shines silver due to the energy springing forth from within.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Thanks to its awakened powers, it can change to the Water type to match the memory it has equipped.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has the ability to change its type based on the memory it's holding. This is its Water-type form.\"\n    }\n  ],\n  \"778busted\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"After going to all the effort of disguising itself, its neck was broken. Whatever is inside is probably unharmed, but it's still feeling sad.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"If its neck is broken or its rag torn during an attack, it works through the night to patch it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It stands in front of a mirror, trying to fix its broken neck as if its life depended on it. It has a hard time getting it right, so it's crying inside.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Sad that its true identity may be exposed, Mimikyu will mercilessly seek revenge on any opponent that breaks its neck.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"There will be no forgiveness for any who reveal that it was pretending to be Pikachu. It will bring the culprit down, even at the cost of its own life.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Its disguise made from an old rag allowed it to avoid an attack, but the impact broke the neck of the disguise. Now everyone knows it's a Mimikyu.\"\n    }\n  ],\n  \"778busted-totem\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"After going to all the effort of disguising itself, its neck was broken. Whatever is inside is probably unharmed, but it's still feeling sad.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"If its neck is broken or its rag torn during an attack, it works through the night to patch it.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"It stands in front of a mirror, trying to fix its broken neck as if its life depended on it. It has a hard time getting it right, so it's crying inside.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"Sad that its true identity may be exposed, Mimikyu will mercilessly seek revenge on any opponent that breaks its neck.\"\n    }\n  ],\n  \"780mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Drampa's cells have been invigorated, allowing it to regain its youth. It manipulates the atmosphere to summon storms.\"\n    }\n  ],\n  \"800dusk-mane\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This is its form while it is devouring the light of Solgaleo. It pounces on foes and then slashes them with the claws on its four limbs and back.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This is Necrozma's form while it's absorbing the power of Solgaleo, making it extremely ferocious and impossible to control.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"When it dominates Solgaleo, it takes on this form. It's a vicious Pokémon, mangling prey with its many claws, including those on its back.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Necrozma has attached itself to Solgaleo. It siphons away its host's limitless energy, exploiting that energy to fuel a rampage.\"\n    }\n  ],\n  \"800dawn-wings\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"Lunala no longer has a will of its own. Now under the control of Necrozma, it continuously expels all of its energy.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"This is its form while it's devouring the light of Lunala. It grasps foes in its giant claws and rips them apart with brute force.\"\n    },\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Necrozma has subjugated Lunala entirely, forcing the unfortunate Pokémon to emit its light energy for Necrozma to consume.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When Necrozma latches on to Lunala, it becomes vicious, seeing enemies everywhere it looks. It will burn the world with lasers.\"\n    }\n  ],\n  \"800ultra\": [\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This is its form when it has absorbed overwhelming light energy. It fires laser beams from all over its body.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"The light pouring out from all over its body affects living things and nature, impacting them in various ways.\"\n    }\n  ],\n  \"801mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This is Magearna once a previously hidden mode activates. The emotions Magearna had begun to feel now hide away as it fells foe after foe.\"\n    }\n  ],\n  \"801original\": [\n    {\n      \"version_id\": \"Sun\",\n      \"flavor_text\": \"This beautiful form reflects Magearna's appearance when first presented to a king's daughter 500 years ago.\"\n    },\n    {\n      \"version_id\": \"Moon\",\n      \"flavor_text\": \"This gorgeous Magearna looks as it did at the time of its invention. Its luxurious decoration pleased the king's daughter.\"\n    },\n    {\n      \"version_id\": \"Ultra Sun\",\n      \"flavor_text\": \"This is its form from almost 500 years ago. Its body is nothing more than a container—its artificial heart is the actual life-form.\"\n    },\n    {\n      \"version_id\": \"Ultra Moon\",\n      \"flavor_text\": \"It functions thanks to its artificial soul. The vivid decoration is proof that it was presented as a gift to royalty.\"\n    },\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"This Magearna looks as it did at the time of its invention. Its magnificent ornamentation delighted the king's daughter.\"\n    }\n  ],\n  \"801original-mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"A mechanism to remove Magearna's limitations has lain secretly within Magearna for 500 years. This mechanism is triggered by a Mega Stone.\"\n    }\n  ],\n  \"807mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"It stores up 10 lightning strikes' worth of electricity. When it stops limiting itself, it's in the strongest class of electric Pokémon.\"\n    }\n  ],\n  \"809gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"In a distant land, there are legends about a cyclopean giant. In fact, the giant was a Melmetal that was flooded with Gigantamax energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It can send electric beams streaking out from the hole in its belly. The beams' tremendous energy can vaporize an opponent in one shot.\"\n    }\n  ],\n  \"823gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Imbued with Gigantamax energy, its wings can whip up winds more forceful than any a hurricane could muster. The gusts blow everything away.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The eight feathers on its back are called blade birds, and they can launch off its body to attack foes independently.\"\n    }\n  ],\n  \"826gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its brain has grown to a gargantuan size, as has the rest of its body. This Pokémon's intellect and psychic abilities are overpowering.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If it were to utilize every last bit of its power, it could control the minds of every living being in its vicinity.\"\n    }\n  ],\n  \"834gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It responded to Gigantamax energy by becoming bipedal. First it comes crashing down on foes, and then it finishes them off with its massive jaws.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"In the Galar region, there's a tale about this Pokémon chewing up a mountain and using the rubble to stop a flood.\"\n    }\n  ],\n  \"839gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its body is a colossal stove. With Gigantamax energy stoking the fire, this Pokémon's flame burns hotter than 3,600 degrees Fahrenheit.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When Galar was hit by a harsh cold wave, this Pokémon served as a giant heating stove and saved many lives.\"\n    }\n  ],\n  \"841gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Under the influence of Gigantamax energy, it produces much more sweet nectar, and its shape has changed to resemble a giant apple.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"If it stretches its neck, the strong aroma of its nectar pours out. The scent is so sickeningly sweet that one whiff makes other Pokémon faint.\"\n    }\n  ],\n  \"842gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It blasts its opponents with massive amounts of sweet, sticky nectar, drowning them under the deluge.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Due to Gigantamax energy, this Pokémon's nectar has thickened. The increased viscosity lets the nectar absorb more damage than before.\"\n    }\n  ],\n  \"844gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its sand pouch has grown to tremendous proportions. More than 1,000,000 tons of sand now swirl around its body.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Sand swirls around its body with such speed and power that it could pulverize a skyscraper.\"\n    }\n  ],\n  \"845gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Cramorant's gluttony led it to try to swallow an Arrokuda whole, which in turn led to Cramorant getting an Arrokuda stuck in its throat.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The slightest shock is sometimes enough to get this Pokémon to spit out the Arrokuda lodged in its throat.\"\n    }\n  ],\n  \"849low-key\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Capable of generating 15,000 volts of electricity, this Pokémon looks down on all that would challenge it.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It has an electrical organ on its chest. While generating electricity, it fills its surroundings with what sounds like the strumming of a bass guitar.\"\n    }\n  ],\n  \"849gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its excessive electric energy is its weapon. This Pokémon can build up more electricity than any thundercloud.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Out of control after its own poison penetrated its brain, it tears across the land in a rampage, contaminating the earth with toxic sweat.\"\n    }\n  ],\n  \"849low-key-gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its excessive electric energy is its weapon. This Pokémon can build up more electricity than any thundercloud.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Out of control after its own poison penetrated its brain, it tears across the land in a rampage, contaminating the earth with toxic sweat.\"\n    }\n  ],\n  \"851gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Gigantamax energy has evoked a rise in its body temperature, now reaching over 1,800 degrees Fahrenheit. Its heat waves incinerate its enemies.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The heat that comes off a Gigantamax Centiskorch may destabilize air currents. Sometimes it can even cause storms.\"\n    }\n  ],\n  \"854chipped\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The swirl pattern in this Pokémon's body is its weakness. If it gets stirred, the swirl loses its shape, and Sinistea gets dizzy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It absorbs the life-force of those who drink it. It waits patiently, but opportunities are fleeting—it tastes so bad that it gets spat out immediately.\"\n    }\n  ],\n  \"855chipped\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Trainers Polteageist trusts will be allowed to experience its distinctive flavor and aroma firsthand by sampling just a tiny bit of its tea.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"When angered, it launches tea from its body at the offender's mouth. The tea causes strong chills if swallowed.\"\n    }\n  ],\n  \"858gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Pokémon can read the emotions of creatures over 30 miles away. The minute it senses hostility, it goes on the attack.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Beams like lightning shoot down from its tentacles. It's known to some as the Raging Goddess.\"\n    }\n  ],\n  \"861gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"By transforming its leg hair, this Pokémon delivers power-packed drill kicks that can bore huge holes in Galar's terrain.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Gigantamax energy has caused more hair to sprout all over its body. With the added strength, it can jump over the world's tallest building.\"\n    }\n  ],\n  \"869gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Cream pours endlessly from this Pokémon's body. The cream stiffens when compressed by an impact. A harder impact results in harder cream.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It launches swarms of missiles, each made of cream and loaded with 100,000 kilocalories. Get hit by one of these, and your head will swim.\"\n    }\n  ],\n  \"870mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Mega Falinks has taken on the ultimate battle formation, which can be achieved only if the troopers and brass have the strongest of bonds.\"\n    }\n  ],\n  \"875noice\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"The ice covering this Pokémon's face has shattered, revealing a slightly worried expression that many people are enamored with.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The hair on its head connects to the surface of its brain. When this Pokémon has something on its mind, its hair chills the air around it.\"\n    }\n  ],\n  \"876male\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It uses the horns on its head to sense the emotions of others. Males will act as valets for those they serve, looking after their every need.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Through its horns, it can pick up on the emotions of creatures around it. Positive emotions are the source of its strength.\"\n    }\n  ],\n  \"876female\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"These intelligent Pokémon touch horns with each other to share information between them.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"They diligently serve people and Pokémon so they can gather feelings of gratitude. The females are particularly good at babysitting.\"\n    }\n  ],\n  \"877hangry\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Intense hunger drives it to extremes of violence, and the electricity in its cheek sacs has converted into a Dark-type energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Hunger hormones affect its temperament. Until its hunger is appeased, it gets up to all manner of evil deeds.\"\n    }\n  ],\n  \"879gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"So much power is packed within its trunk that if it were to unleash that power, the resulting blast could level mountains and change the landscape.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"After this Pokémon has Gigantamaxed, its massive nose can utterly demolish large structures with a single smashing blow.\"\n    }\n  ],\n  \"884gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's grown to resemble a skyscraper. Parts of its towering body glow due to a profusion of energy.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The hardness of its cells is exceptional, even among Steel types. It also has a body structure that's resistant to earthquakes.\"\n    }\n  ],\n  \"888crowned\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Now armed with a weapon it used in ancient times, this Pokémon needs only a single strike to fell even Gigantamax Pokémon.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Able to cut down anything with a single strike, it became known as the Fairy King's Sword, and it inspired awe in friend and foe alike.\"\n    }\n  ],\n  \"889crowned\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"Its ability to deflect any attack led to it being known as the Fighting Master's Shield. It was feared and respected by all.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Now that it's equipped with its shield, it can shrug off impressive blows, including the attacks of Dynamax Pokémon.\"\n    }\n  ],\n  \"890eternamax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As a result of Rose's meddling, Eternatus absorbed all the energy in the Galar region. It's now in a state of power overload.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Infinite amounts of energy pour from this Pokémon's enlarged core, warping the surrounding space-time.\"\n    }\n  ],\n  \"892rapid-strike\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's believed that this Pokémon modeled its fighting style on the flow of a river — sometimes rapid, sometimes calm.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This form of Urshifu is a strong believer in defeating foes by raining many blows down on them. Its strikes are nonstop, flowing like a river.\"\n    }\n  ],\n  \"892gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"People call it the embodiment of rage. It's said that this Pokémon's terrifying expression and shout will rid the world of malevolence.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"The energy released by this Pokémon's fists forms shock waves that can blow away Dynamax Pokémon in just one hit.\"\n    }\n  ],\n  \"892rapid-strike-gmax\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"As it waits for the right moment to unleash its Gigantamax power, this Pokémon maintains a perfect one-legged stance. It won't even twitch.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"All it takes is a glare from this Pokémon to take the lives of those with evil in their hearts — or so they say.\"\n    }\n  ],\n  \"893dada\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"This Zarude left its pack to raise a human child. The cloth Zarude would wrap the child with has a comforting scent that calmed the child's crying.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"This Zarude's special strength stems from its love and care for an orphaned human child that the Pokémon has raised since the child's infancy.\"\n    }\n  ],\n  \"898ice\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"According to lore, this Pokémon showed no mercy to those who got in its way, yet it would heal its opponents' wounds after battle.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"It's said that this Pokémon once moved a large forest—and all the Pokémon living there—to a new location overnight.\"\n    }\n  ],\n  \"898shadow\": [\n    {\n      \"version_id\": \"Sword\",\n      \"flavor_text\": \"It's said that Calyrex and a Pokémon that had bonded with it ran all across the Galar region to bring green to the wastelands.\"\n    },\n    {\n      \"version_id\": \"Shield\",\n      \"flavor_text\": \"Legend says that by using its power to see all events from past to future, this Pokémon saved the creatures of a forest from a meteorite strike.\"\n    }\n  ],\n  \"952mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Mega Evolution has dialed up this Pokémon's spiciness. It swings its 'necktie' around to wallop its foes.\"\n    }\n  ],\n  \"970mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Glimmora's petals—now larger and separated from its main body—rotate around it to provide defense while scattering poisonous fragments.\"\n    }\n  ],\n  \"978mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Tatsugiri's brain has been invigorated by Mega Evolution, making it even wilier. It can create and command copies of itself.\"\n    }\n  ],\n  \"998mega\": [\n    {\n      \"version_id\": \"Legends: Z-A\",\n      \"flavor_text\": \"Baxcalibur's dorsal blade has grown even more massive thanks to Mega Evolution. This Pokémon fires beams from the hilt at its solar plexus.\"\n    }\n  ],\n  \"58hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"They patrol their territory in pairs. I believe the igneous rock components in the fur of this species are the result of volcanic activity in its habitat.\"\n    }\n  ],\n  \"59hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Snaps at its foes with fangs cloaked in blazing flame. Despite its bulk, it deftly feints every which way, leading opponents on a deceptively merry chase as it all but dances around them.\"\n    }\n  ],\n  \"100hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"An enigmatic Pokémon that happens to bear a resemblance to a Poké Ball. When excited, it discharges the electric current it has stored in its belly, then lets out a great, uproarious laugh.\"\n    }\n  ],\n  \"101hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The tissue on the surface of its body is curiously similar in composition to an Apricorn. When irritated, this Pokémon lets loose an electric current equal to 20 lightning bolts.\"\n    }\n  ],\n  \"157hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Said to purify lost, forsaken souls with its flames and guide them to the afterlife. I believe its form has been influenced by the energy of the sacred mountain towering at Hisui's center.\"\n    }\n  ],\n  \"211hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Fishers detest this troublesome Pokémon because it sprays poison from its spines, getting it everywhere. A different form of Qwilfish lives in other regions.\"\n    }\n  ],\n  \"503hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Hard of heart and deft of blade, this rare form of Samurott is a product of the Pokémon's evolution in the region of Hisui. Its turbulent blows crash into foes like ceaseless pounding waves.\"\n    }\n  ],\n  \"549hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"I suspect that its well-developed legs are the result of a life spent on mountains covered in deep snow. The scent it exudes from its flower crown heartens those in proximity.\"\n    }\n  ],\n  \"570hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A once-departed soul, returned to life in Hisui. Derives power from resentment, which rises as energy atop its head and takes on the forms of foes. In this way, Zorua vents lingering malice.\"\n    }\n  ],\n  \"571hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"With its disheveled white fur, it looks like an embodiment of death. Heedless of its own safety, Zoroark attacks its nemeses with a bitter energy so intense, it lacerates Zoroark's own body.\"\n    }\n  ],\n  \"628hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Screaming a bloodcurdling battle cry, this huge and ferocious bird Pokémon goes out on the hunt. It blasts lakes with shock waves, then scoops up any prey that float to the water's surface.\"\n    }\n  ],\n  \"705hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"A creature given to melancholy. I suspect its metallic shell developed as a result of the mucus on its skin reacting with the iron in Hisui's water.\"\n    }\n  ],\n  \"706hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"Able to freely control the hardness of its metallic shell. It loathes solitude and is extremely clingy—it will fume and run riot if those dearest to it ever leave its side.\"\n    }\n  ],\n  \"713hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The armor of ice covering its lower jaw puts steel to shame and can shatter rocks with ease. This Pokémon barrels along steep mountain paths, cleaving through the deep snow.\"\n    }\n  ],\n  \"724hisui\": [\n    {\n      \"version_id\": \"Legends: Arceus\",\n      \"flavor_text\": \"The air stored inside the rachises of Decidueye's feathers insulates the Pokémon against Hisui's extreme cold. This is firm proof that evolution can be influenced by environment.\"\n    }\n  ]\n}\n"
  },
  {
    "path": "src/lib/assets/formats.json",
    "content": "{\n  \"bulbasaur\": \"LC\",\n  \"ivysaur\": \"NFE\",\n  \"venusaur\": \"ZU\",\n  \"venusaurmega\": \"Past\",\n  \"venusaurgmax\": \"Past\",\n  \"charmander\": \"LC\",\n  \"charmeleon\": \"NFE\",\n  \"charizard\": \"ZU\",\n  \"charizardmegax\": \"Past\",\n  \"charizardmegay\": \"Past\",\n  \"charizardgmax\": \"Past\",\n  \"squirtle\": \"LC\",\n  \"wartortle\": \"NFE\",\n  \"blastoise\": \"RUBL\",\n  \"blastoisemega\": \"Past\",\n  \"blastoisegmax\": \"Past\",\n  \"caterpie\": \"Past\",\n  \"metapod\": \"Past\",\n  \"butterfree\": \"Past\",\n  \"butterfreegmax\": \"Past\",\n  \"weedle\": \"Past\",\n  \"kakuna\": \"Past\",\n  \"beedrill\": \"Past\",\n  \"beedrillmega\": \"Past\",\n  \"pidgey\": \"Past\",\n  \"pidgeotto\": \"Past\",\n  \"pidgeot\": \"Past\",\n  \"pidgeotmega\": \"Past\",\n  \"rattata\": \"Past\",\n  \"rattataalola\": \"Past\",\n  \"raticate\": \"Past\",\n  \"raticatealola\": \"Past\",\n  \"raticatealolatotem\": \"Past\",\n  \"spearow\": \"Past\",\n  \"fearow\": \"Past\",\n  \"ekans\": \"LC\",\n  \"arbok\": \"ZU\",\n  \"pichu\": \"LC\",\n  \"pichuspikyeared\": \"Past\",\n  \"pikachu\": \"ZU\",\n  \"pikachucosplay\": \"Past\",\n  \"pikachurockstar\": \"Past\",\n  \"pikachubelle\": \"Past\",\n  \"pikachupopstar\": \"Past\",\n  \"pikachuphd\": \"Past\",\n  \"pikachulibre\": \"Past\",\n  \"pikachuoriginal\": \"ZU\",\n  \"pikachuhoenn\": \"ZU\",\n  \"pikachusinnoh\": \"ZU\",\n  \"pikachuunova\": \"ZU\",\n  \"pikachukalos\": \"ZU\",\n  \"pikachualola\": \"ZU\",\n  \"pikachupartner\": \"ZU\",\n  \"pikachustarter\": \"LGPE\",\n  \"pikachugmax\": \"Past\",\n  \"pikachuworld\": \"ZU\",\n  \"raichu\": \"ZU\",\n  \"raichualola\": \"ZU\",\n  \"raichumegax\": \"Future\",\n  \"raichumegay\": \"Future\",\n  \"sandshrew\": \"LC\",\n  \"sandshrewalola\": \"LC\",\n  \"sandslash\": \"ZU\",\n  \"sandslashalola\": \"PU\",\n  \"nidoranf\": \"Past\",\n  \"nidorina\": \"Past\",\n  \"nidoqueen\": \"Past\",\n  \"nidoranm\": \"Past\",\n  \"nidorino\": \"Past\",\n  \"nidoking\": \"Past\",\n  \"cleffa\": \"LC\",\n  \"clefairy\": \"NFE\",\n  \"clefable\": \"OU\",\n  \"clefablemega\": \"Future\",\n  \"vulpix\": \"NFE\",\n  \"vulpixalola\": \"NFE\",\n  \"ninetales\": \"ZU\",\n  \"ninetalesalola\": \"PU\",\n  \"igglybuff\": \"LC\",\n  \"jigglypuff\": \"NFE\",\n  \"wigglytuff\": \"ZU\",\n  \"zubat\": \"Past\",\n  \"golbat\": \"Past\",\n  \"crobat\": \"Past\",\n  \"oddish\": \"LC\",\n  \"gloom\": \"NFE\",\n  \"vileplume\": \"PU\",\n  \"bellossom\": \"ZUBL\",\n  \"paras\": \"Past\",\n  \"parasect\": \"Past\",\n  \"venonat\": \"LC\",\n  \"venomoth\": \"ZUBL\",\n  \"diglett\": \"NFE\",\n  \"diglettalola\": \"LC\",\n  \"dugtrio\": \"ZU\",\n  \"dugtrioalola\": \"ZU\",\n  \"meowth\": \"LC\",\n  \"meowthalola\": \"LC\",\n  \"meowthgalar\": \"LC\",\n  \"meowthgmax\": \"Past\",\n  \"persian\": \"ZU\",\n  \"persianalola\": \"ZU\",\n  \"perrserker\": \"ZU\",\n  \"psyduck\": \"LC\",\n  \"golduck\": \"ZU\",\n  \"mankey\": \"LC\",\n  \"primeape\": \"NFE\",\n  \"growlithe\": \"LC\",\n  \"growlithehisui\": \"LC\",\n  \"arcanine\": \"NU\",\n  \"arcaninehisui\": \"UU\",\n  \"poliwag\": \"LC\",\n  \"poliwhirl\": \"NFE\",\n  \"poliwrath\": \"ZU\",\n  \"politoed\": \"RU\",\n  \"abra\": \"Past\",\n  \"kadabra\": \"Past\",\n  \"alakazam\": \"Past\",\n  \"alakazammega\": \"Past\",\n  \"machop\": \"Past\",\n  \"machoke\": \"Past\",\n  \"machamp\": \"Past\",\n  \"machampgmax\": \"Past\",\n  \"bellsprout\": \"LC\",\n  \"weepinbell\": \"NFE\",\n  \"victreebel\": \"ZU\",\n  \"victreebelmega\": \"Future\",\n  \"tentacool\": \"LC\",\n  \"tentacruel\": \"NU\",\n  \"geodude\": \"LC\",\n  \"geodudealola\": \"LC\",\n  \"graveler\": \"NFE\",\n  \"graveleralola\": \"NFE\",\n  \"golem\": \"ZU\",\n  \"golemalola\": \"ZU\",\n  \"ponyta\": \"Past\",\n  \"ponytagalar\": \"Past\",\n  \"rapidash\": \"Past\",\n  \"rapidashgalar\": \"Past\",\n  \"slowpoke\": \"LC\",\n  \"slowpokegalar\": \"LC\",\n  \"slowbro\": \"RU\",\n  \"slowbromega\": \"Past\",\n  \"slowbrogalar\": \"PU\",\n  \"slowking\": \"UU\",\n  \"slowkinggalar\": \"OU\",\n  \"magnemite\": \"LC\",\n  \"magneton\": \"ZU\",\n  \"magnezone\": \"RU\",\n  \"farfetchd\": \"Past\",\n  \"farfetchdgalar\": \"Past\",\n  \"sirfetchd\": \"Past\",\n  \"doduo\": \"LC\",\n  \"dodrio\": \"ZU\",\n  \"seel\": \"LC\",\n  \"dewgong\": \"ZU\",\n  \"grimer\": \"LC\",\n  \"grimeralola\": \"LC\",\n  \"muk\": \"ZU\",\n  \"mukalola\": \"RU\",\n  \"shellder\": \"NFE\",\n  \"cloyster\": \"NUBL\",\n  \"gastly\": \"NFE\",\n  \"haunter\": \"NFE\",\n  \"gengar\": \"RU\",\n  \"gengarmega\": \"Past\",\n  \"gengargmax\": \"Past\",\n  \"onix\": \"Past\",\n  \"steelix\": \"Past\",\n  \"steelixmega\": \"Past\",\n  \"drowzee\": \"LC\",\n  \"hypno\": \"ZU\",\n  \"krabby\": \"Past\",\n  \"kingler\": \"Past\",\n  \"kinglergmax\": \"Past\",\n  \"voltorb\": \"LC\",\n  \"voltorbhisui\": \"NFE\",\n  \"electrode\": \"ZU\",\n  \"electrodehisui\": \"ZUBL\",\n  \"exeggcute\": \"LC\",\n  \"exeggutor\": \"ZU\",\n  \"exeggutoralola\": \"ZU\",\n  \"cubone\": \"Past\",\n  \"marowak\": \"Past\",\n  \"marowakalola\": \"Past\",\n  \"marowakalolatotem\": \"Past\",\n  \"tyrogue\": \"LC\",\n  \"hitmonlee\": \"PU\",\n  \"hitmonchan\": \"ZU\",\n  \"hitmontop\": \"ZU\",\n  \"lickitung\": \"Past\",\n  \"lickilicky\": \"Past\",\n  \"koffing\": \"LC\",\n  \"weezing\": \"ZU\",\n  \"weezinggalar\": \"OU\",\n  \"rhyhorn\": \"LC\",\n  \"rhydon\": \"PU\",\n  \"rhyperior\": \"NU\",\n  \"happiny\": \"LC\",\n  \"chansey\": \"NU\",\n  \"blissey\": \"RU\",\n  \"tangela\": \"Past\",\n  \"tangrowth\": \"Past\",\n  \"kangaskhan\": \"Past\",\n  \"kangaskhanmega\": \"Past\",\n  \"horsea\": \"LC\",\n  \"seadra\": \"NFE\",\n  \"kingdra\": \"ZUBL\",\n  \"goldeen\": \"Past\",\n  \"seaking\": \"Past\",\n  \"staryu\": \"Past\",\n  \"starmie\": \"Past\",\n  \"starmiemega\": \"Future\",\n  \"mimejr\": \"Past\",\n  \"mrmime\": \"Past\",\n  \"mrmimegalar\": \"Past\",\n  \"mrrime\": \"Past\",\n  \"scyther\": \"NU\",\n  \"scizor\": \"UU\",\n  \"scizormega\": \"Past\",\n  \"kleavor\": \"RU\",\n  \"smoochum\": \"Past\",\n  \"jynx\": \"Past\",\n  \"elekid\": \"LC\",\n  \"electabuzz\": \"NFE\",\n  \"electivire\": \"ZU\",\n  \"magby\": \"NFE\",\n  \"magmar\": \"NFE\",\n  \"magmortar\": \"ZU\",\n  \"pinsir\": \"Past\",\n  \"pinsirmega\": \"Past\",\n  \"tauros\": \"ZU\",\n  \"taurospaldeacombat\": \"ZU\",\n  \"taurospaldeablaze\": \"PU\",\n  \"taurospaldeaaqua\": \"NU\",\n  \"magikarp\": \"LC\",\n  \"gyarados\": \"RUBL\",\n  \"gyaradosmega\": \"Past\",\n  \"lapras\": \"ZU\",\n  \"laprasgmax\": \"Past\",\n  \"ditto\": \"ZU\",\n  \"eevee\": \"LC\",\n  \"eeveestarter\": \"LGPE\",\n  \"eeveegmax\": \"Past\",\n  \"vaporeon\": \"NU\",\n  \"jolteon\": \"ZU\",\n  \"flareon\": \"ZU\",\n  \"espeon\": \"NU\",\n  \"umbreon\": \"RU\",\n  \"leafeon\": \"ZU\",\n  \"glaceon\": \"ZU\",\n  \"sylveon\": \"NU\",\n  \"porygon\": \"NFE\",\n  \"porygon2\": \"PU\",\n  \"porygonz\": \"RU\",\n  \"omanyte\": \"Past\",\n  \"omastar\": \"Past\",\n  \"kabuto\": \"Past\",\n  \"kabutops\": \"Past\",\n  \"aerodactyl\": \"Past\",\n  \"aerodactylmega\": \"Past\",\n  \"munchlax\": \"LC\",\n  \"snorlax\": \"PU\",\n  \"snorlaxgmax\": \"Past\",\n  \"articuno\": \"ZU\",\n  \"articunogalar\": \"NU\",\n  \"zapdos\": \"OU\",\n  \"zapdosgalar\": \"UU\",\n  \"moltres\": \"OU\",\n  \"moltresgalar\": \"UUBL\",\n  \"dratini\": \"LC\",\n  \"dragonair\": \"NFE\",\n  \"dragonite\": \"OU\",\n  \"dragonitemega\": \"Future\",\n  \"mewtwo\": \"Uber\",\n  \"mewtwomegax\": \"Past\",\n  \"mewtwomegay\": \"Past\",\n  \"mew\": \"UU\",\n  \"chikorita\": \"LC\",\n  \"bayleef\": \"NFE\",\n  \"meganium\": \"ZU\",\n  \"meganiummega\": \"Future\",\n  \"cyndaquil\": \"LC\",\n  \"quilava\": \"NFE\",\n  \"typhlosion\": \"ZU\",\n  \"typhlosionhisui\": \"PU\",\n  \"totodile\": \"LC\",\n  \"croconaw\": \"NFE\",\n  \"feraligatr\": \"NUBL\",\n  \"feraligatrmega\": \"Future\",\n  \"sentret\": \"LC\",\n  \"furret\": \"ZU\",\n  \"hoothoot\": \"LC\",\n  \"noctowl\": \"ZU\",\n  \"ledyba\": \"Past\",\n  \"ledian\": \"Past\",\n  \"spinarak\": \"LC\",\n  \"ariados\": \"ZU\",\n  \"chinchou\": \"LC\",\n  \"lanturn\": \"PU\",\n  \"togepi\": \"Past\",\n  \"togetic\": \"Past\",\n  \"togekiss\": \"Past\",\n  \"natu\": \"Past\",\n  \"xatu\": \"Past\",\n  \"mareep\": \"LC\",\n  \"flaaffy\": \"NFE\",\n  \"ampharos\": \"ZU\",\n  \"ampharosmega\": \"Past\",\n  \"azurill\": \"LC\",\n  \"marill\": \"NFE\",\n  \"azumarill\": \"UU\",\n  \"bonsly\": \"LC\",\n  \"sudowoodo\": \"ZU\",\n  \"hoppip\": \"LC\",\n  \"skiploom\": \"NFE\",\n  \"jumpluff\": \"ZU\",\n  \"aipom\": \"NFE\",\n  \"ambipom\": \"PU\",\n  \"sunkern\": \"LC\",\n  \"sunflora\": \"ZU\",\n  \"yanma\": \"NFE\",\n  \"yanmega\": \"RU\",\n  \"wooper\": \"LC\",\n  \"wooperpaldea\": \"LC\",\n  \"quagsire\": \"RU\",\n  \"murkrow\": \"NFE\",\n  \"honchkrow\": \"ZU\",\n  \"misdreavus\": \"NFE\",\n  \"mismagius\": \"PU\",\n  \"unown\": \"Past\",\n  \"wynaut\": \"Past\",\n  \"wobbuffet\": \"Past\",\n  \"girafarig\": \"NFE\",\n  \"farigiraf\": \"ZU\",\n  \"pineco\": \"LC\",\n  \"forretress\": \"RU\",\n  \"dunsparce\": \"NFE\",\n  \"dudunsparce\": \"NU\",\n  \"gligar\": \"NU\",\n  \"gliscor\": \"OU\",\n  \"snubbull\": \"LC\",\n  \"granbull\": \"ZU\",\n  \"qwilfish\": \"PU\",\n  \"qwilfishhisui\": \"PU\",\n  \"overqwil\": \"NU\",\n  \"shuckle\": \"Past\",\n  \"heracross\": \"PU\",\n  \"heracrossmega\": \"Past\",\n  \"sneasel\": \"ZU\",\n  \"sneaselhisui\": \"ZU\",\n  \"weavile\": \"UU\",\n  \"sneasler\": \"Uber\",\n  \"teddiursa\": \"LC\",\n  \"ursaring\": \"NFE\",\n  \"ursaluna\": \"UUBL\",\n  \"ursalunabloodmoon\": \"Uber\",\n  \"slugma\": \"LC\",\n  \"magcargo\": \"ZU\",\n  \"swinub\": \"LC\",\n  \"piloswine\": \"NFE\",\n  \"mamoswine\": \"UU\",\n  \"corsola\": \"Past\",\n  \"corsolagalar\": \"Past\",\n  \"cursola\": \"Past\",\n  \"remoraid\": \"Past\",\n  \"octillery\": \"Past\",\n  \"delibird\": \"ZU\",\n  \"mantyke\": \"Past\",\n  \"mantine\": \"Past\",\n  \"skarmory\": \"UU\",\n  \"skarmorymega\": \"Future\",\n  \"houndour\": \"LC\",\n  \"houndoom\": \"ZU\",\n  \"houndoommega\": \"Past\",\n  \"phanpy\": \"LC\",\n  \"donphan\": \"UU\",\n  \"stantler\": \"NFE\",\n  \"wyrdeer\": \"ZU\",\n  \"smeargle\": \"ZU\",\n  \"miltank\": \"Past\",\n  \"raikou\": \"NU\",\n  \"entei\": \"RU\",\n  \"suicune\": \"RU\",\n  \"larvitar\": \"LC\",\n  \"pupitar\": \"NFE\",\n  \"tyranitar\": \"OU\",\n  \"tyranitarmega\": \"Past\",\n  \"lugia\": \"Uber\",\n  \"hooh\": \"Uber\",\n  \"celebi\": \"Past\",\n  \"treecko\": \"LC\",\n  \"grovyle\": \"NFE\",\n  \"sceptile\": \"ZU\",\n  \"sceptilemega\": \"Past\",\n  \"torchic\": \"NFE\",\n  \"combusken\": \"NFE\",\n  \"blaziken\": \"UUBL\",\n  \"blazikenmega\": \"Past\",\n  \"mudkip\": \"LC\",\n  \"marshtomp\": \"NFE\",\n  \"swampert\": \"NU\",\n  \"swampertmega\": \"Past\",\n  \"poochyena\": \"LC\",\n  \"mightyena\": \"ZU\",\n  \"zigzagoon\": \"Past\",\n  \"zigzagoongalar\": \"Past\",\n  \"linoone\": \"Past\",\n  \"linoonegalar\": \"Past\",\n  \"obstagoon\": \"Past\",\n  \"wurmple\": \"Past\",\n  \"silcoon\": \"Past\",\n  \"beautifly\": \"Past\",\n  \"cascoon\": \"Past\",\n  \"dustox\": \"Past\",\n  \"lotad\": \"LC\",\n  \"lombre\": \"NFE\",\n  \"ludicolo\": \"ZU\",\n  \"seedot\": \"LC\",\n  \"nuzleaf\": \"NFE\",\n  \"shiftry\": \"ZU\",\n  \"taillow\": \"Past\",\n  \"swellow\": \"Past\",\n  \"wingull\": \"LC\",\n  \"pelipper\": \"UUBL\",\n  \"ralts\": \"LC\",\n  \"kirlia\": \"NFE\",\n  \"gardevoir\": \"RU\",\n  \"gardevoirmega\": \"Past\",\n  \"gallade\": \"RU\",\n  \"gallademega\": \"Past\",\n  \"surskit\": \"LC\",\n  \"masquerain\": \"ZU\",\n  \"shroomish\": \"LC\",\n  \"breloom\": \"RU\",\n  \"slakoth\": \"LC\",\n  \"vigoroth\": \"NFE\",\n  \"slaking\": \"ZU\",\n  \"nincada\": \"Past\",\n  \"ninjask\": \"Past\",\n  \"shedinja\": \"Past\",\n  \"whismur\": \"Past\",\n  \"loudred\": \"Past\",\n  \"exploud\": \"Past\",\n  \"makuhita\": \"LC\",\n  \"hariyama\": \"PU\",\n  \"nosepass\": \"LC\",\n  \"probopass\": \"ZU\",\n  \"skitty\": \"Past\",\n  \"delcatty\": \"Past\",\n  \"sableye\": \"ZU\",\n  \"sableyemega\": \"Past\",\n  \"mawile\": \"Past\",\n  \"mawilemega\": \"Past\",\n  \"aron\": \"Past\",\n  \"lairon\": \"Past\",\n  \"aggron\": \"Past\",\n  \"aggronmega\": \"Past\",\n  \"meditite\": \"NFE\",\n  \"medicham\": \"ZU\",\n  \"medichammega\": \"Past\",\n  \"electrike\": \"Past\",\n  \"manectric\": \"Past\",\n  \"manectricmega\": \"Past\",\n  \"plusle\": \"ZU\",\n  \"minun\": \"ZU\",\n  \"volbeat\": \"ZU\",\n  \"illumise\": \"ZU\",\n  \"budew\": \"Past\",\n  \"roselia\": \"Past\",\n  \"roserade\": \"Past\",\n  \"gulpin\": \"LC\",\n  \"swalot\": \"ZU\",\n  \"carvanha\": \"Past\",\n  \"sharpedo\": \"Past\",\n  \"sharpedomega\": \"Past\",\n  \"wailmer\": \"Past\",\n  \"wailord\": \"Past\",\n  \"numel\": \"LC\",\n  \"camerupt\": \"ZU\",\n  \"cameruptmega\": \"Past\",\n  \"torkoal\": \"ZU\",\n  \"spoink\": \"LC\",\n  \"grumpig\": \"ZU\",\n  \"spinda\": \"Past\",\n  \"trapinch\": \"LC\",\n  \"vibrava\": \"NFE\",\n  \"flygon\": \"NU\",\n  \"cacnea\": \"LC\",\n  \"cacturne\": \"ZU\",\n  \"swablu\": \"LC\",\n  \"altaria\": \"NU\",\n  \"altariamega\": \"Past\",\n  \"zangoose\": \"ZU\",\n  \"seviper\": \"ZU\",\n  \"lunatone\": \"Past\",\n  \"solrock\": \"Past\",\n  \"barboach\": \"LC\",\n  \"whiscash\": \"ZU\",\n  \"corphish\": \"LC\",\n  \"crawdaunt\": \"RU\",\n  \"baltoy\": \"Past\",\n  \"claydol\": \"Past\",\n  \"lileep\": \"Past\",\n  \"cradily\": \"Past\",\n  \"anorith\": \"Past\",\n  \"armaldo\": \"Past\",\n  \"feebas\": \"LC\",\n  \"milotic\": \"PU\",\n  \"castform\": \"Past\",\n  \"castformsunny\": \"Past\",\n  \"castformrainy\": \"Past\",\n  \"castformsnowy\": \"Past\",\n  \"kecleon\": \"Past\",\n  \"shuppet\": \"LC\",\n  \"banette\": \"ZU\",\n  \"banettemega\": \"Past\",\n  \"duskull\": \"LC\",\n  \"dusclops\": \"NFE\",\n  \"dusknoir\": \"ZU\",\n  \"tropius\": \"ZU\",\n  \"chingling\": \"LC\",\n  \"chimecho\": \"ZU\",\n  \"chimechomega\": \"Future\",\n  \"absol\": \"Past\",\n  \"absolmega\": \"Past\",\n  \"absolmegaz\": \"Future\",\n  \"snorunt\": \"LC\",\n  \"glalie\": \"ZU\",\n  \"glaliemega\": \"Past\",\n  \"froslass\": \"ZU\",\n  \"froslassmega\": \"Future\",\n  \"spheal\": \"Past\",\n  \"sealeo\": \"Past\",\n  \"walrein\": \"Past\",\n  \"clamperl\": \"Past\",\n  \"huntail\": \"Past\",\n  \"gorebyss\": \"Past\",\n  \"relicanth\": \"Past\",\n  \"luvdisc\": \"ZU\",\n  \"bagon\": \"LC\",\n  \"shelgon\": \"NFE\",\n  \"salamence\": \"RUBL\",\n  \"salamencemega\": \"Past\",\n  \"beldum\": \"LC\",\n  \"metang\": \"NFE\",\n  \"metagross\": \"UU\",\n  \"metagrossmega\": \"Past\",\n  \"regirock\": \"ZU\",\n  \"regice\": \"ZU\",\n  \"registeel\": \"RU\",\n  \"latias\": \"UUBL\",\n  \"latiasmega\": \"Past\",\n  \"latios\": \"UU\",\n  \"latiosmega\": \"Past\",\n  \"kyogre\": \"Uber\",\n  \"kyogreprimal\": \"Past\",\n  \"groudon\": \"Uber\",\n  \"groudonprimal\": \"Past\",\n  \"rayquaza\": \"Uber\",\n  \"rayquazamega\": \"Past\",\n  \"jirachi\": \"RU\",\n  \"deoxys\": \"Uber\",\n  \"deoxysattack\": \"Uber\",\n  \"deoxysdefense\": \"NUBL\",\n  \"deoxysspeed\": \"OU\",\n  \"turtwig\": \"LC\",\n  \"grotle\": \"NFE\",\n  \"torterra\": \"RU\",\n  \"chimchar\": \"LC\",\n  \"monferno\": \"NFE\",\n  \"infernape\": \"NU\",\n  \"piplup\": \"LC\",\n  \"prinplup\": \"NFE\",\n  \"empoleon\": \"RU\",\n  \"starly\": \"LC\",\n  \"staravia\": \"NFE\",\n  \"staraptor\": \"NU\",\n  \"staraptormega\": \"Future\",\n  \"bidoof\": \"Past\",\n  \"bibarel\": \"Past\",\n  \"kricketot\": \"LC\",\n  \"kricketune\": \"ZU\",\n  \"shinx\": \"LC\",\n  \"luxio\": \"NFE\",\n  \"luxray\": \"ZU\",\n  \"cranidos\": \"LC\",\n  \"rampardos\": \"ZU\",\n  \"shieldon\": \"LC\",\n  \"bastiodon\": \"ZU\",\n  \"burmy\": \"Past\",\n  \"wormadam\": \"Past\",\n  \"wormadamsandy\": \"Past\",\n  \"wormadamtrash\": \"Past\",\n  \"mothim\": \"Past\",\n  \"combee\": \"LC\",\n  \"vespiquen\": \"ZU\",\n  \"pachirisu\": \"ZU\",\n  \"buizel\": \"LC\",\n  \"floatzel\": \"PU\",\n  \"cherubi\": \"Past\",\n  \"cherrim\": \"Past\",\n  \"cherrimsunshine\": \"Past\",\n  \"shellos\": \"LC\",\n  \"gastrodon\": \"RU\",\n  \"drifloon\": \"LC\",\n  \"drifblim\": \"ZU\",\n  \"buneary\": \"Past\",\n  \"lopunny\": \"Past\",\n  \"lopunnymega\": \"Past\",\n  \"glameow\": \"Past\",\n  \"purugly\": \"Past\",\n  \"stunky\": \"LC\",\n  \"skuntank\": \"ZU\",\n  \"bronzor\": \"LC\",\n  \"bronzong\": \"NU\",\n  \"chatot\": \"Past\",\n  \"spiritomb\": \"ZU\",\n  \"gible\": \"LC\",\n  \"gabite\": \"NFE\",\n  \"garchomp\": \"UUBL\",\n  \"garchompmega\": \"Past\",\n  \"garchompmegaz\": \"Future\",\n  \"riolu\": \"LC\",\n  \"lucario\": \"NUBL\",\n  \"lucariomega\": \"Past\",\n  \"lucariomegaz\": \"Future\",\n  \"hippopotas\": \"LC\",\n  \"hippowdon\": \"UU\",\n  \"skorupi\": \"Past\",\n  \"drapion\": \"Past\",\n  \"croagunk\": \"LC\",\n  \"toxicroak\": \"ZU\",\n  \"carnivine\": \"Past\",\n  \"finneon\": \"LC\",\n  \"lumineon\": \"ZU\",\n  \"snover\": \"LC\",\n  \"abomasnow\": \"ZU\",\n  \"abomasnowmega\": \"Past\",\n  \"rotom\": \"ZU\",\n  \"rotomheat\": \"PU\",\n  \"rotomwash\": \"UU\",\n  \"rotomfrost\": \"ZU\",\n  \"rotomfan\": \"ZU\",\n  \"rotommow\": \"PU\",\n  \"uxie\": \"NU\",\n  \"mesprit\": \"ZU\",\n  \"azelf\": \"NUBL\",\n  \"dialga\": \"Uber\",\n  \"dialgaorigin\": \"Uber\",\n  \"palkia\": \"Uber\",\n  \"palkiaorigin\": \"Uber\",\n  \"heatran\": \"OU\",\n  \"heatranmega\": \"Future\",\n  \"regigigas\": \"ZU\",\n  \"giratina\": \"Uber\",\n  \"giratinaorigin\": \"Uber\",\n  \"cresselia\": \"NUBL\",\n  \"phione\": \"ZU\",\n  \"manaphy\": \"UU\",\n  \"darkrai\": \"OU\",\n  \"darkraimega\": \"Future\",\n  \"shaymin\": \"PU\",\n  \"shayminsky\": \"Uber\",\n  \"arceus\": \"Uber\",\n  \"victini\": \"Past\",\n  \"snivy\": \"NFE\",\n  \"servine\": \"NFE\",\n  \"serperior\": \"RUBL\",\n  \"tepig\": \"LC\",\n  \"pignite\": \"NFE\",\n  \"emboar\": \"ZUBL\",\n  \"emboarmega\": \"Future\",\n  \"oshawott\": \"LC\",\n  \"dewott\": \"NFE\",\n  \"samurott\": \"ZU\",\n  \"samurotthisui\": \"OU\",\n  \"patrat\": \"Past\",\n  \"watchog\": \"Past\",\n  \"lillipup\": \"Past\",\n  \"herdier\": \"Past\",\n  \"stoutland\": \"Past\",\n  \"purrloin\": \"Past\",\n  \"liepard\": \"Past\",\n  \"pansage\": \"Past\",\n  \"simisage\": \"Past\",\n  \"pansear\": \"Past\",\n  \"simisear\": \"Past\",\n  \"panpour\": \"Past\",\n  \"simipour\": \"Past\",\n  \"munna\": \"Past\",\n  \"musharna\": \"Past\",\n  \"pidove\": \"Past\",\n  \"tranquill\": \"Past\",\n  \"unfezant\": \"Past\",\n  \"blitzle\": \"LC\",\n  \"zebstrika\": \"ZU\",\n  \"roggenrola\": \"Past\",\n  \"boldore\": \"Past\",\n  \"gigalith\": \"Past\",\n  \"woobat\": \"Past\",\n  \"swoobat\": \"Past\",\n  \"drilbur\": \"LC\",\n  \"excadrill\": \"UU\",\n  \"excadrillmega\": \"Future\",\n  \"audino\": \"Past\",\n  \"audinomega\": \"Past\",\n  \"timburr\": \"LC\",\n  \"gurdurr\": \"ZU\",\n  \"conkeldurr\": \"UU\",\n  \"tympole\": \"Past\",\n  \"palpitoad\": \"Past\",\n  \"seismitoad\": \"Past\",\n  \"throh\": \"Past\",\n  \"sawk\": \"Past\",\n  \"sewaddle\": \"LC\",\n  \"swadloon\": \"NFE\",\n  \"leavanny\": \"ZU\",\n  \"venipede\": \"Past\",\n  \"whirlipede\": \"Past\",\n  \"scolipede\": \"Past\",\n  \"scolipedemega\": \"Future\",\n  \"cottonee\": \"LC\",\n  \"whimsicott\": \"ZU\",\n  \"petilil\": \"LC\",\n  \"lilligant\": \"ZU\",\n  \"lilliganthisui\": \"RUBL\",\n  \"basculin\": \"ZU\",\n  \"basculegion\": \"NU\",\n  \"basculegionf\": \"RU\",\n  \"sandile\": \"LC\",\n  \"krokorok\": \"NFE\",\n  \"krookodile\": \"RU\",\n  \"darumaka\": \"Past\",\n  \"darumakagalar\": \"Past\",\n  \"darmanitan\": \"Past\",\n  \"darmanitanzen\": \"Past\",\n  \"darmanitangalar\": \"Past\",\n  \"darmanitangalarzen\": \"Past\",\n  \"maractus\": \"Past\",\n  \"dwebble\": \"Past\",\n  \"crustle\": \"Past\",\n  \"scraggy\": \"NFE\",\n  \"scrafty\": \"PUBL\",\n  \"scraftymega\": \"Future\",\n  \"sigilyph\": \"Past\",\n  \"yamask\": \"Past\",\n  \"yamaskgalar\": \"Past\",\n  \"cofagrigus\": \"Past\",\n  \"runerigus\": \"Past\",\n  \"tirtouga\": \"Past\",\n  \"carracosta\": \"Past\",\n  \"archen\": \"Past\",\n  \"archeops\": \"Past\",\n  \"trubbish\": \"Past\",\n  \"garbodor\": \"Past\",\n  \"garbodorgmax\": \"Past\",\n  \"zorua\": \"LC\",\n  \"zoruahisui\": \"LC\",\n  \"zoroark\": \"PU\",\n  \"zoroarkhisui\": \"RUBL\",\n  \"minccino\": \"LC\",\n  \"cinccino\": \"NU\",\n  \"gothita\": \"LC\",\n  \"gothorita\": \"NFE\",\n  \"gothitelle\": \"ZU\",\n  \"solosis\": \"LC\",\n  \"duosion\": \"NFE\",\n  \"reuniclus\": \"NU\",\n  \"ducklett\": \"LC\",\n  \"swanna\": \"ZU\",\n  \"vanillite\": \"Past\",\n  \"vanillish\": \"Past\",\n  \"vanilluxe\": \"Past\",\n  \"deerling\": \"LC\",\n  \"sawsbuck\": \"ZU\",\n  \"emolga\": \"Past\",\n  \"karrablast\": \"Past\",\n  \"escavalier\": \"Past\",\n  \"foongus\": \"LC\",\n  \"amoonguss\": \"PU\",\n  \"frillish\": \"Past\",\n  \"jellicent\": \"Past\",\n  \"alomomola\": \"OU\",\n  \"joltik\": \"LC\",\n  \"galvantula\": \"PU\",\n  \"ferroseed\": \"Past\",\n  \"ferrothorn\": \"Past\",\n  \"klink\": \"Past\",\n  \"klang\": \"Past\",\n  \"klinklang\": \"Past\",\n  \"tynamo\": \"LC\",\n  \"eelektrik\": \"NFE\",\n  \"eelektross\": \"ZU\",\n  \"eelektrossmega\": \"Future\",\n  \"elgyem\": \"Past\",\n  \"beheeyem\": \"Past\",\n  \"litwick\": \"LC\",\n  \"lampent\": \"NFE\",\n  \"chandelure\": \"NU\",\n  \"chandeluremega\": \"Future\",\n  \"axew\": \"LC\",\n  \"fraxure\": \"NFE\",\n  \"haxorus\": \"RUBL\",\n  \"cubchoo\": \"LC\",\n  \"beartic\": \"ZU\",\n  \"cryogonal\": \"ZU\",\n  \"shelmet\": \"Past\",\n  \"accelgor\": \"Past\",\n  \"stunfisk\": \"Past\",\n  \"stunfiskgalar\": \"Past\",\n  \"mienfoo\": \"LC\",\n  \"mienshao\": \"RUBL\",\n  \"druddigon\": \"Past\",\n  \"golett\": \"LC\",\n  \"golurk\": \"PU\",\n  \"golurkmega\": \"Future\",\n  \"pawniard\": \"LC\",\n  \"bisharp\": \"RU\",\n  \"bouffalant\": \"Past\",\n  \"rufflet\": \"NFE\",\n  \"braviary\": \"NU\",\n  \"braviaryhisui\": \"PU\",\n  \"vullaby\": \"LC\",\n  \"mandibuzz\": \"UU\",\n  \"heatmor\": \"Past\",\n  \"durant\": \"Past\",\n  \"deino\": \"LC\",\n  \"zweilous\": \"NFE\",\n  \"hydreigon\": \"UU\",\n  \"larvesta\": \"LC\",\n  \"volcarona\": \"OU\",\n  \"cobalion\": \"UU\",\n  \"terrakion\": \"RU\",\n  \"virizion\": \"ZU\",\n  \"tornadus\": \"NU\",\n  \"tornadustherian\": \"OU\",\n  \"thundurus\": \"RUBL\",\n  \"thundurustherian\": \"UU\",\n  \"reshiram\": \"Uber\",\n  \"zekrom\": \"Uber\",\n  \"landorus\": \"Uber\",\n  \"landorustherian\": \"OU\",\n  \"kyurem\": \"OU\",\n  \"kyuremblack\": \"Uber\",\n  \"kyuremwhite\": \"Uber\",\n  \"keldeo\": \"UU\",\n  \"meloetta\": \"NU\",\n  \"genesect\": \"Past\",\n  \"genesectburn\": \"Past\",\n  \"genesectchill\": \"Past\",\n  \"genesectdouse\": \"Past\",\n  \"genesectshock\": \"Past\",\n  \"chespin\": \"LC\",\n  \"quilladin\": \"NFE\",\n  \"chesnaught\": \"RU\",\n  \"chesnaughtmega\": \"Future\",\n  \"fennekin\": \"LC\",\n  \"braixen\": \"NFE\",\n  \"delphox\": \"PU\",\n  \"delphoxmega\": \"Future\",\n  \"froakie\": \"LC\",\n  \"frogadier\": \"NFE\",\n  \"greninja\": \"UU\",\n  \"greninjaash\": \"Past\",\n  \"greninjamega\": \"Future\",\n  \"bunnelby\": \"Past\",\n  \"diggersby\": \"Past\",\n  \"fletchling\": \"LC\",\n  \"fletchinder\": \"NFE\",\n  \"talonflame\": \"UU\",\n  \"scatterbug\": \"LC\",\n  \"spewpa\": \"NFE\",\n  \"vivillon\": \"ZU\",\n  \"litleo\": \"LC\",\n  \"pyroar\": \"ZU\",\n  \"pyroarmega\": \"Future\",\n  \"flabebe\": \"LC\",\n  \"floette\": \"NFE\",\n  \"floetteeternal\": \"Past\",\n  \"floettemega\": \"Future\",\n  \"florges\": \"PU\",\n  \"skiddo\": \"LC\",\n  \"gogoat\": \"ZU\",\n  \"pancham\": \"Past\",\n  \"pangoro\": \"Past\",\n  \"furfrou\": \"Past\",\n  \"espurr\": \"LC\",\n  \"meowstic\": \"ZU\",\n  \"meowsticmmega\": \"Future\",\n  \"meowsticfmega\": \"Future\",\n  \"honedge\": \"Past\",\n  \"doublade\": \"Past\",\n  \"aegislash\": \"Past\",\n  \"aegislashblade\": \"Past\",\n  \"spritzee\": \"Past\",\n  \"aromatisse\": \"Past\",\n  \"swirlix\": \"Past\",\n  \"slurpuff\": \"Past\",\n  \"inkay\": \"LC\",\n  \"malamar\": \"ZU\",\n  \"malamarmega\": \"Future\",\n  \"binacle\": \"Past\",\n  \"barbaracle\": \"Past\",\n  \"barbaraclemega\": \"Future\",\n  \"skrelp\": \"LC\",\n  \"dragalge\": \"PUBL\",\n  \"dragalgemega\": \"Future\",\n  \"clauncher\": \"LC\",\n  \"clawitzer\": \"ZU\",\n  \"helioptile\": \"Past\",\n  \"heliolisk\": \"Past\",\n  \"tyrunt\": \"Past\",\n  \"tyrantrum\": \"Past\",\n  \"amaura\": \"Past\",\n  \"aurorus\": \"Past\",\n  \"hawlucha\": \"RUBL\",\n  \"hawluchamega\": \"Future\",\n  \"dedenne\": \"ZU\",\n  \"carbink\": \"ZU\",\n  \"goomy\": \"LC\",\n  \"sliggoo\": \"NFE\",\n  \"sliggoohisui\": \"NFE\",\n  \"goodra\": \"NU\",\n  \"goodrahisui\": \"RU\",\n  \"klefki\": \"NU\",\n  \"phantump\": \"LC\",\n  \"trevenant\": \"ZU\",\n  \"pumpkaboo\": \"Past\",\n  \"pumpkaboosmall\": \"Past\",\n  \"pumpkaboolarge\": \"Past\",\n  \"pumpkaboosuper\": \"Past\",\n  \"gourgeist\": \"Past\",\n  \"gourgeistsmall\": \"Past\",\n  \"gourgeistlarge\": \"Past\",\n  \"gourgeistsuper\": \"Past\",\n  \"bergmite\": \"LC\",\n  \"avalugg\": \"NU\",\n  \"avalugghisui\": \"PU\",\n  \"noibat\": \"LC\",\n  \"noivern\": \"RU\",\n  \"xerneas\": \"Past\",\n  \"xerneasneutral\": \"Custom\",\n  \"yveltal\": \"Past\",\n  \"zygarde\": \"Past\",\n  \"zygarde10\": \"Past\",\n  \"zygardecomplete\": \"Past\",\n  \"zygardemega\": \"Future\",\n  \"diancie\": \"RU\",\n  \"dianciemega\": \"Past\",\n  \"hoopa\": \"PU\",\n  \"hoopaunbound\": \"UUBL\",\n  \"volcanion\": \"RUBL\",\n  \"rowlet\": \"LC\",\n  \"dartrix\": \"NFE\",\n  \"decidueye\": \"NU\",\n  \"decidueyehisui\": \"PU\",\n  \"litten\": \"LC\",\n  \"torracat\": \"NFE\",\n  \"incineroar\": \"NU\",\n  \"popplio\": \"LC\",\n  \"brionne\": \"NFE\",\n  \"primarina\": \"OU\",\n  \"pikipek\": \"LC\",\n  \"trumbeak\": \"NFE\",\n  \"toucannon\": \"ZU\",\n  \"yungoos\": \"LC\",\n  \"gumshoos\": \"ZU\",\n  \"gumshoostotem\": \"Past\",\n  \"grubbin\": \"LC\",\n  \"charjabug\": \"NFE\",\n  \"vikavolt\": \"ZU\",\n  \"vikavolttotem\": \"Past\",\n  \"crabrawler\": \"LC\",\n  \"crabominable\": \"ZU\",\n  \"crabominablemega\": \"Future\",\n  \"oricorio\": \"ZUBL\",\n  \"oricoriopompom\": \"RUBL\",\n  \"oricoriopau\": \"ZUBL\",\n  \"oricoriosensu\": \"NUBL\",\n  \"cutiefly\": \"NFE\",\n  \"ribombee\": \"RU\",\n  \"ribombeetotem\": \"Past\",\n  \"rockruff\": \"LC\",\n  \"rockruffdusk\": \"LC\",\n  \"lycanroc\": \"ZU\",\n  \"lycanrocmidnight\": \"ZU\",\n  \"lycanrocdusk\": \"NUBL\",\n  \"wishiwashi\": \"Past\",\n  \"wishiwashischool\": \"Past\",\n  \"mareanie\": \"LC\",\n  \"toxapex\": \"UU\",\n  \"mudbray\": \"LC\",\n  \"mudsdale\": \"PU\",\n  \"dewpider\": \"LC\",\n  \"araquanid\": \"NU\",\n  \"araquanidtotem\": \"Past\",\n  \"fomantis\": \"LC\",\n  \"lurantis\": \"ZU\",\n  \"lurantistotem\": \"Past\",\n  \"morelull\": \"Past\",\n  \"shiinotic\": \"Past\",\n  \"salandit\": \"LC\",\n  \"salazzle\": \"PU\",\n  \"salazzletotem\": \"Past\",\n  \"stufful\": \"Past\",\n  \"bewear\": \"Past\",\n  \"bounsweet\": \"LC\",\n  \"steenee\": \"NFE\",\n  \"tsareena\": \"NU\",\n  \"comfey\": \"RU\",\n  \"oranguru\": \"ZU\",\n  \"passimian\": \"PU\",\n  \"wimpod\": \"Past\",\n  \"golisopod\": \"Past\",\n  \"golisopodmega\": \"Future\",\n  \"sandygast\": \"LC\",\n  \"palossand\": \"PU\",\n  \"pyukumuku\": \"Past\",\n  \"typenull\": \"Past\",\n  \"silvally\": \"Past\",\n  \"silvallybug\": \"Past\",\n  \"silvallydark\": \"Past\",\n  \"silvallydragon\": \"Past\",\n  \"silvallyelectric\": \"Past\",\n  \"silvallyfairy\": \"Past\",\n  \"silvallyfighting\": \"Past\",\n  \"silvallyfire\": \"Past\",\n  \"silvallyflying\": \"Past\",\n  \"silvallyghost\": \"Past\",\n  \"silvallygrass\": \"Past\",\n  \"silvallyground\": \"Past\",\n  \"silvallyice\": \"Past\",\n  \"silvallypoison\": \"Past\",\n  \"silvallypsychic\": \"Past\",\n  \"silvallyrock\": \"Past\",\n  \"silvallysteel\": \"Past\",\n  \"silvallywater\": \"Past\",\n  \"minior\": \"ZU\",\n  \"komala\": \"ZU\",\n  \"turtonator\": \"Past\",\n  \"togedemaru\": \"Past\",\n  \"togedemarutotem\": \"Past\",\n  \"mimikyu\": \"RU\",\n  \"mimikyutotem\": \"Past\",\n  \"mimikyubustedtotem\": \"Past\",\n  \"bruxish\": \"PU\",\n  \"drampa\": \"Past\",\n  \"drampamega\": \"Future\",\n  \"dhelmise\": \"Past\",\n  \"jangmoo\": \"LC\",\n  \"hakamoo\": \"NFE\",\n  \"kommoo\": \"UUBL\",\n  \"kommoototem\": \"Past\",\n  \"tapukoko\": \"Past\",\n  \"tapulele\": \"Past\",\n  \"tapubulu\": \"Past\",\n  \"tapufini\": \"Past\",\n  \"cosmog\": \"LC\",\n  \"cosmoem\": \"NFE\",\n  \"solgaleo\": \"Uber\",\n  \"lunala\": \"Uber\",\n  \"nihilego\": \"Past\",\n  \"buzzwole\": \"Past\",\n  \"pheromosa\": \"Past\",\n  \"xurkitree\": \"Past\",\n  \"celesteela\": \"Past\",\n  \"kartana\": \"Past\",\n  \"guzzlord\": \"Past\",\n  \"necrozma\": \"RU\",\n  \"necrozmaduskmane\": \"Uber\",\n  \"necrozmadawnwings\": \"Uber\",\n  \"necrozmaultra\": \"Past\",\n  \"magearna\": \"Uber\",\n  \"magearnamega\": \"Future\",\n  \"magearnaoriginalmega\": \"Future\",\n  \"marshadow\": \"Past\",\n  \"poipole\": \"Past\",\n  \"naganadel\": \"Past\",\n  \"stakataka\": \"Past\",\n  \"blacephalon\": \"Past\",\n  \"zeraora\": \"Past\",\n  \"zeraoramega\": \"Future\",\n  \"meltan\": \"Past\",\n  \"melmetal\": \"Past\",\n  \"melmetalgmax\": \"Past\",\n  \"grookey\": \"LC\",\n  \"thwackey\": \"NUBL\",\n  \"rillaboom\": \"OU\",\n  \"rillaboomgmax\": \"Past\",\n  \"scorbunny\": \"LC\",\n  \"raboot\": \"NFE\",\n  \"cinderace\": \"OU\",\n  \"cinderacegmax\": \"Past\",\n  \"sobble\": \"LC\",\n  \"drizzile\": \"NFE\",\n  \"inteleon\": \"PUBL\",\n  \"inteleongmax\": \"Past\",\n  \"skwovet\": \"LC\",\n  \"greedent\": \"ZU\",\n  \"rookidee\": \"LC\",\n  \"corvisquire\": \"NFE\",\n  \"corviknight\": \"OU\",\n  \"corviknightgmax\": \"Past\",\n  \"blipbug\": \"Past\",\n  \"dottler\": \"Past\",\n  \"orbeetle\": \"Past\",\n  \"orbeetlegmax\": \"Past\",\n  \"nickit\": \"Past\",\n  \"thievul\": \"Past\",\n  \"gossifleur\": \"Past\",\n  \"eldegoss\": \"Past\",\n  \"wooloo\": \"Past\",\n  \"dubwool\": \"Past\",\n  \"chewtle\": \"LC\",\n  \"drednaw\": \"PUBL\",\n  \"drednawgmax\": \"Past\",\n  \"yamper\": \"Past\",\n  \"boltund\": \"Past\",\n  \"rolycoly\": \"LC\",\n  \"carkol\": \"NFE\",\n  \"coalossal\": \"PU\",\n  \"coalossalgmax\": \"Past\",\n  \"applin\": \"LC\",\n  \"flapple\": \"ZU\",\n  \"flapplegmax\": \"Past\",\n  \"appletun\": \"ZU\",\n  \"appletungmax\": \"Past\",\n  \"dipplin\": \"NFE\",\n  \"silicobra\": \"LC\",\n  \"sandaconda\": \"ZU\",\n  \"sandacondagmax\": \"Past\",\n  \"cramorant\": \"PU\",\n  \"arrokuda\": \"LC\",\n  \"barraskewda\": \"RU\",\n  \"toxel\": \"LC\",\n  \"toxtricity\": \"RU\",\n  \"toxtricitygmax\": \"Past\",\n  \"toxtricitylowkeygmax\": \"Past\",\n  \"sizzlipede\": \"Past\",\n  \"centiskorch\": \"Past\",\n  \"centiskorchgmax\": \"Past\",\n  \"clobbopus\": \"Past\",\n  \"grapploct\": \"Past\",\n  \"sinistea\": \"LC\",\n  \"polteageist\": \"UUBL\",\n  \"hatenna\": \"LC\",\n  \"hattrem\": \"NFE\",\n  \"hatterene\": \"OU\",\n  \"hatterenegmax\": \"Past\",\n  \"impidimp\": \"LC\",\n  \"morgrem\": \"NFE\",\n  \"grimmsnarl\": \"PU\",\n  \"grimmsnarlgmax\": \"Past\",\n  \"milcery\": \"LC\",\n  \"alcremie\": \"ZUBL\",\n  \"alcremiegmax\": \"Past\",\n  \"falinks\": \"ZU\",\n  \"falinksmega\": \"Future\",\n  \"pincurchin\": \"ZU\",\n  \"snom\": \"LC\",\n  \"frosmoth\": \"PU\",\n  \"stonjourner\": \"ZU\",\n  \"eiscue\": \"ZU\",\n  \"indeedee\": \"PUBL\",\n  \"indeedeef\": \"ZU\",\n  \"morpeko\": \"ZU\",\n  \"cufant\": \"LC\",\n  \"copperajah\": \"NU\",\n  \"copperajahgmax\": \"Past\",\n  \"dracozolt\": \"Past\",\n  \"arctozolt\": \"Past\",\n  \"dracovish\": \"Past\",\n  \"arctovish\": \"Past\",\n  \"duraludon\": \"NU\",\n  \"duraludongmax\": \"Past\",\n  \"dreepy\": \"LC\",\n  \"drakloak\": \"NFE\",\n  \"dragapult\": \"OU\",\n  \"zacian\": \"Uber\",\n  \"zaciancrowned\": \"Uber\",\n  \"zamazenta\": \"OU\",\n  \"zamazentacrowned\": \"Uber\",\n  \"eternatus\": \"Uber\",\n  \"eternatuseternamax\": \"Past\",\n  \"kubfu\": \"NFE\",\n  \"urshifu\": \"Uber\",\n  \"urshifurapidstrike\": \"Uber\",\n  \"urshifugmax\": \"Past\",\n  \"urshifurapidstrikegmax\": \"Past\",\n  \"zarude\": \"UUBL\",\n  \"regieleki\": \"OU\",\n  \"regidrago\": \"NUBL\",\n  \"glastrier\": \"ZU\",\n  \"spectrier\": \"Uber\",\n  \"calyrex\": \"ZU\",\n  \"calyrexice\": \"Uber\",\n  \"calyrexshadow\": \"AG\",\n  \"enamorus\": \"OU\",\n  \"enamorustherian\": \"RUBL\",\n  \"sprigatito\": \"LC\",\n  \"floragato\": \"NFE\",\n  \"meowscarada\": \"UUBL\",\n  \"fuecoco\": \"LC\",\n  \"crocalor\": \"NFE\",\n  \"skeledirge\": \"UU\",\n  \"quaxly\": \"LC\",\n  \"quaxwell\": \"NFE\",\n  \"quaquaval\": \"UUBL\",\n  \"lechonk\": \"LC\",\n  \"oinkologne\": \"ZU\",\n  \"oinkolognef\": \"ZU\",\n  \"tarountula\": \"LC\",\n  \"spidops\": \"ZU\",\n  \"nymble\": \"LC\",\n  \"lokix\": \"UU\",\n  \"rellor\": \"LC\",\n  \"rabsca\": \"ZU\",\n  \"greavard\": \"LC\",\n  \"houndstone\": \"NU\",\n  \"flittle\": \"NFE\",\n  \"espathra\": \"Uber\",\n  \"wiglett\": \"LC\",\n  \"wugtrio\": \"ZU\",\n  \"dondozo\": \"OU\",\n  \"veluza\": \"ZU\",\n  \"finizen\": \"LC\",\n  \"palafin\": \"Uber\",\n  \"smoliv\": \"LC\",\n  \"dolliv\": \"NFE\",\n  \"arboliva\": \"ZU\",\n  \"capsakid\": \"LC\",\n  \"scovillain\": \"ZU\",\n  \"scovillainmega\": \"Future\",\n  \"tadbulb\": \"LC\",\n  \"bellibolt\": \"NU\",\n  \"varoom\": \"LC\",\n  \"revavroom\": \"UU\",\n  \"orthworm\": \"ZU\",\n  \"tandemaus\": \"LC\",\n  \"maushold\": \"RU\",\n  \"cetoddle\": \"LC\",\n  \"cetitan\": \"NUBL\",\n  \"frigibax\": \"LC\",\n  \"arctibax\": \"NFE\",\n  \"baxcalibur\": \"Uber\",\n  \"baxcaliburmega\": \"Future\",\n  \"tatsugiri\": \"PU\",\n  \"tatsugiricurlymega\": \"Future\",\n  \"tatsugiridroopymega\": \"Future\",\n  \"tatsugiristretchymega\": \"Future\",\n  \"cyclizar\": \"RU\",\n  \"pawmi\": \"LC\",\n  \"pawmo\": \"NFE\",\n  \"pawmot\": \"PU\",\n  \"wattrel\": \"LC\",\n  \"kilowattrel\": \"NU\",\n  \"bombirdier\": \"PU\",\n  \"squawkabilly\": \"ZU\",\n  \"flamigo\": \"NU\",\n  \"klawf\": \"ZU\",\n  \"nacli\": \"LC\",\n  \"naclstack\": \"NFE\",\n  \"garganacl\": \"OU\",\n  \"glimmet\": \"LC\",\n  \"glimmora\": \"OU\",\n  \"glimmoramega\": \"Future\",\n  \"shroodle\": \"LC\",\n  \"grafaiai\": \"NU\",\n  \"fidough\": \"LC\",\n  \"dachsbun\": \"ZU\",\n  \"maschiff\": \"LC\",\n  \"mabosstiff\": \"ZU\",\n  \"bramblin\": \"LC\",\n  \"brambleghast\": \"NU\",\n  \"gimmighoul\": \"LC\",\n  \"gimmighoulroaming\": \"LC\",\n  \"gholdengo\": \"OU\",\n  \"greattusk\": \"OU\",\n  \"brutebonnet\": \"ZU\",\n  \"sandyshocks\": \"UU\",\n  \"screamtail\": \"NU\",\n  \"fluttermane\": \"Uber\",\n  \"slitherwing\": \"UU\",\n  \"roaringmoon\": \"Uber\",\n  \"irontreads\": \"OU\",\n  \"ironmoth\": \"OU\",\n  \"ironhands\": \"UUBL\",\n  \"ironjugulis\": \"UU\",\n  \"ironthorns\": \"NUBL\",\n  \"ironbundle\": \"Uber\",\n  \"ironvaliant\": \"OU\",\n  \"tinglu\": \"OU\",\n  \"chienpao\": \"Uber\",\n  \"wochien\": \"PU\",\n  \"chiyu\": \"Uber\",\n  \"koraidon\": \"Uber\",\n  \"miraidon\": \"AG\",\n  \"tinkatink\": \"LC\",\n  \"tinkatuff\": \"NFE\",\n  \"tinkaton\": \"UU\",\n  \"charcadet\": \"LC\",\n  \"armarouge\": \"RUBL\",\n  \"ceruledge\": \"OU\",\n  \"toedscool\": \"LC\",\n  \"toedscruel\": \"ZU\",\n  \"kingambit\": \"OU\",\n  \"clodsire\": \"UU\",\n  \"annihilape\": \"Uber\",\n  \"walkingwake\": \"OU\",\n  \"ironleaves\": \"RUBL\",\n  \"poltchageist\": \"LC\",\n  \"sinistcha\": \"UU\",\n  \"okidogi\": \"UUBL\",\n  \"munkidori\": \"NU\",\n  \"fezandipiti\": \"UU\",\n  \"ogerpon\": \"OU\",\n  \"ogerponwellspring\": \"OU\",\n  \"ogerponhearthflame\": \"Uber\",\n  \"ogerponcornerstone\": \"UUBL\",\n  \"archaludon\": \"Uber\",\n  \"hydrapple\": \"UU\",\n  \"gougingfire\": \"Uber\",\n  \"ragingbolt\": \"OU\",\n  \"ironboulder\": \"UUBL\",\n  \"ironcrown\": \"OU\",\n  \"terapagos\": \"Uber\",\n  \"terapagosstellar\": \"Uber\",\n  \"pecharunt\": \"OU\",\n  \"missingno\": \"Custom\",\n  \"syclar\": \"CAP\",\n  \"syclant\": \"CAP\",\n  \"revenankh\": \"CAP\",\n  \"embirch\": \"CAP\",\n  \"flarelm\": \"CAP\",\n  \"pyroak\": \"CAP\",\n  \"breezi\": \"CAP\",\n  \"fidgit\": \"CAP\",\n  \"rebble\": \"CAP\",\n  \"tactite\": \"CAP\",\n  \"stratagem\": \"CAP\",\n  \"privatyke\": \"CAP\",\n  \"arghonaut\": \"CAP\",\n  \"nohface\": \"CAP\",\n  \"kitsunoh\": \"CAP\",\n  \"monohm\": \"CAP\",\n  \"duohm\": \"CAP\",\n  \"cyclohm\": \"CAP\",\n  \"dorsoil\": \"CAP\",\n  \"colossoil\": \"CAP\",\n  \"protowatt\": \"CAP\",\n  \"krilowatt\": \"CAP\",\n  \"voodoll\": \"CAP\",\n  \"voodoom\": \"CAP\",\n  \"scratchet\": \"CAP\",\n  \"tomohawk\": \"CAP\",\n  \"necturine\": \"CAP\",\n  \"necturna\": \"CAP\",\n  \"mollux\": \"CAP\",\n  \"cupra\": \"CAP\",\n  \"argalis\": \"CAP\",\n  \"aurumoth\": \"CAP\",\n  \"brattler\": \"CAP\",\n  \"malaconda\": \"CAP\",\n  \"cawdet\": \"CAP\",\n  \"cawmodore\": \"CAP\",\n  \"volkritter\": \"CAP\",\n  \"volkraken\": \"CAP\",\n  \"snugglow\": \"CAP\",\n  \"plasmanta\": \"CAP\",\n  \"floatoy\": \"CAP\",\n  \"caimanoe\": \"CAP\",\n  \"naviathan\": \"CAP\",\n  \"crucibelle\": \"CAP\",\n  \"crucibellemega\": \"CAP\",\n  \"pluffle\": \"CAP\",\n  \"kerfluffle\": \"CAP\",\n  \"pajantom\": \"CAP\",\n  \"mumbao\": \"CAP\",\n  \"jumbao\": \"CAP\",\n  \"fawnifer\": \"CAP\",\n  \"electrelk\": \"CAP\",\n  \"caribolt\": \"CAP\",\n  \"smogecko\": \"CAP\",\n  \"smoguana\": \"CAP\",\n  \"smokomodo\": \"CAP\",\n  \"swirlpool\": \"CAP\",\n  \"coribalis\": \"CAP\",\n  \"snaelstrom\": \"CAP\",\n  \"justyke\": \"CAP\",\n  \"equilibra\": \"CAP\",\n  \"solotl\": \"CAP\",\n  \"astrolotl\": \"CAP\",\n  \"miasmite\": \"CAP\",\n  \"miasmaw\": \"CAP\",\n  \"chromera\": \"CAP\",\n  \"venomicon\": \"CAP\",\n  \"venomiconepilogue\": \"CAP\",\n  \"saharascal\": \"CAP\",\n  \"saharaja\": \"CAP\",\n  \"ababo\": \"CAP\",\n  \"scattervein\": \"CAP\",\n  \"hemogoblin\": \"CAP\",\n  \"cresceidon\": \"CAP\",\n  \"chuggon\": \"CAP\",\n  \"draggalong\": \"CAP\",\n  \"chuggalong\": \"CAP\",\n  \"flox\": \"CAP\",\n  \"shox\": \"CAP\",\n  \"ramnarok\": \"CAP\",\n  \"ramnarokradiant\": \"CAP\",\n  \"pokestarsmeargle\": \"Custom\",\n  \"pokestarufo\": \"Custom\",\n  \"pokestarufo2\": \"Custom\",\n  \"pokestarbrycenman\": \"Custom\",\n  \"pokestarmt\": \"Custom\",\n  \"pokestarmt2\": \"Custom\",\n  \"pokestartransport\": \"Custom\",\n  \"pokestargiant\": \"Custom\",\n  \"pokestarhumanoid\": \"Custom\",\n  \"pokestarmonster\": \"Custom\",\n  \"pokestarf00\": \"Custom\",\n  \"pokestarf002\": \"Custom\",\n  \"pokestarspirit\": \"Custom\",\n  \"pokestarblackdoor\": \"Custom\",\n  \"pokestarwhitedoor\": \"Custom\",\n  \"pokestarblackbelt\": \"Custom\",\n  \"pokestarufopropu2\": \"Custom\"\n}\n"
  },
  {
    "path": "src/lib/assets/items.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { IsNonStandard } from '#utils/isNonStandardEnum';\nimport { Collection } from '@discordjs/collection';\n\n/** The item in Pokémon */\nexport const items = new Collection<string, PokemonTypes.Item>([\n  [\n    'abilityshield',\n    {\n      desc: \"Holder's Ability cannot be changed by any effect.\",\n      gen: 9,\n      name: 'Ability Shield',\n      shortDesc: \"Holder's Ability cannot be changed, suppressed, or ignored by any effect.\"\n    }\n  ],\n  [\n    'abomasite',\n    {\n      desc: 'If held by an Abomasnow, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Abomasite',\n      shortDesc: 'If held by an Abomasnow, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'absolite',\n    {\n      desc: 'If held by an Absol, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Absolite',\n      shortDesc: 'If held by an Absol, this item allows it to Mega Evolve into Mega Absol in battle.'\n    }\n  ],\n  [\n    'absorbbulb',\n    {\n      desc: \"Raises holder's Sp. Atk by 1 stage if hit by a Water-type attack. Single use.\",\n      gen: 5,\n      name: 'Absorb Bulb',\n      shortDesc: \"Raises holder's Sp. Atk by 1 stage if hit by a Water-type attack. Single use.\"\n    }\n  ],\n  [\n    'acrobike',\n    {\n      desc: 'This folding bike allows you to perform actions such as wheelies and bunny hops.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Acro Bike',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/acrobike.png'\n    }\n  ],\n  [\n    'adamantcrystal',\n    {\n      desc: 'If held by a Dialga, its Steel- and Dragon-type attacks have 1.2x power.',\n      gen: 8,\n      name: 'Adamant Crystal',\n      shortDesc: 'If held by a Dialga, its Steel- and Dragon-type attacks have 1.2x power.'\n    }\n  ],\n  [\n    'adamantorb',\n    {\n      desc: 'If held by a Dialga, its Steel- and Dragon-type attacks have 1.2x power.',\n      gen: 4,\n      name: 'Adamant Orb',\n      shortDesc: 'If held by a Dialga, its Steel- and Dragon-type attacks have 1.2x power.'\n    }\n  ],\n  [\n    'adrenalineorb',\n    {\n      desc: \"Raises holder's Speed by 1 stage if it gets affected by Intimidate. Single use.\",\n      gen: 7,\n      name: 'Adrenaline Orb',\n      shortDesc: \"Raises holder's Speed by 1 stage if it gets affected by Intimidate. Single use.\"\n    }\n  ],\n  [\n    'adventureguide',\n    {\n      desc: 'A compact device that automatically collects and records advice when a Trainer is out on an adventure.',\n      gen: 6,\n      keyItem: true,\n      name: 'Adventure Guide',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/adventureguide.png'\n    }\n  ],\n  [\n    'aerodactylite',\n    {\n      desc: 'If held by an Aerodactyl, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Aerodactylite',\n      shortDesc: 'If held by an Aerodactyl, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'aggronite',\n    {\n      desc: 'If held by an Aggron, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Aggronite',\n      shortDesc: 'If held by an Aggron, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'aguavberry',\n    {\n      desc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -SpD Nature. Single use.',\n      gen: 3,\n      name: 'Aguav Berry',\n      shortDesc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -SpD Nature. Single use.'\n    }\n  ],\n  [\n    'airballoon',\n    {\n      desc: 'Holder is immune to Ground-type attacks. Pops when holder is hit.',\n      gen: 5,\n      name: 'Air Balloon',\n      shortDesc: 'Holder is immune to Ground-type attacks. Pops when holder is hit.'\n    }\n  ],\n  [\n    'alakazite',\n    {\n      desc: 'If held by an Alakazam, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Alakazite',\n      shortDesc: 'If held by an Alakazam, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'aloraichiumz',\n    {\n      desc: 'If held by an Alolan Raichu with Thunderbolt, it can use Stoked Sparksurfer.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Aloraichium Z',\n      shortDesc: 'If held by an Alolan Raichu with Thunderbolt, it can use Stoked Sparksurfer.'\n    }\n  ],\n  [\n    'altarianite',\n    {\n      desc: 'If held by an Altaria, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Altarianite',\n      shortDesc: 'If held by an Altaria, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'ampharosite',\n    {\n      desc: 'If held by an Ampharos, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ampharosite',\n      shortDesc: 'If held by an Ampharos, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'apicotberry',\n    {\n      desc: \"Raises holder's Sp. Def by 1 stage when at 1/4 max HP or less. Single use.\",\n      gen: 3,\n      name: 'Apicot Berry',\n      shortDesc: \"Raises holder's Sp. Def by 1 stage when at 1/4 max HP or less. Single use.\"\n    }\n  ],\n  [\n    'apricornbox',\n    {\n      desc: 'A handy box where you can store up to 99 of each kind of Apricorn.',\n      gen: 4,\n      keyItem: true,\n      name: 'Apricorn Box',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/apricornbox.png'\n    }\n  ],\n  [\n    'aquasuit',\n    {\n      desc: 'A suit made with the collective technological know-how of Team Aqua. It can withstand any impact.',\n      gen: 6,\n      keyItem: true,\n      name: 'Aqua Suit',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/aquasuit.png'\n    }\n  ],\n  [\n    'armorfossil',\n    {\n      desc: 'Can be revived into Shieldon.',\n      gen: 4,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Armor Fossil',\n      shortDesc: 'Can be revived into Shieldon.'\n    }\n  ],\n  [\n    'aspearberry',\n    {\n      desc: 'Holder is cured if it is frozen. Single use.',\n      gen: 3,\n      name: 'Aspear Berry',\n      shortDesc: 'Holder is cured if it is frozen. Single use.'\n    }\n  ],\n  [\n    'assaultvest',\n    {\n      aliases: ['assvest', 'av'],\n      desc: \"Holder's Sp. Def is 1.5x, but it can only select damaging moves.\",\n      gen: 6,\n      name: 'Assault Vest',\n      shortDesc: \"Holder's Sp. Def is 1.5x, but it can only select damaging moves.\"\n    }\n  ],\n  [\n    'audinite',\n    {\n      desc: 'If held by an Audino, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Audinite',\n      shortDesc: 'If held by an Audino, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'auroraticket',\n    {\n      desc: 'A ticket required to board the ship to Birth Island. It glows beautifully.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Aurora Ticket',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/auroraticket.png'\n    }\n  ],\n  [\n    'auspiciousarmor',\n    {\n      desc: 'Evolves Charcadet into Armarouge when used.',\n      gen: 9,\n      name: 'Auspicious Armor',\n      shortDesc: 'Evolves Charcadet into Armarouge when used.'\n    }\n  ],\n  [\n    'autograph',\n    {\n      desc: 'The autograph you got from the Vermilion City Gym Leader, Lt. Surge. He wrote, \"Good luck!\"',\n      gen: 7,\n      keyItem: true,\n      name: 'Autograph'\n    }\n  ],\n  [\n    'azureflute',\n    {\n      desc: 'A flute that puts out echoing sounds that do not seem to be of this world. No one knows who made it.',\n      gen: 4,\n      keyItem: true,\n      name: 'Azure Flute',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/azureflute.png'\n    }\n  ],\n  [\n    'babiriberry',\n    {\n      desc: 'Halves damage taken from a supereffective Steel-type attack. Single use.',\n      gen: 4,\n      name: 'Babiri Berry',\n      shortDesc: 'Halves damage taken from a supereffective Steel-type attack. Single use.'\n    }\n  ],\n  [\n    'bandautograph',\n    {\n      desc: \"It's signed by all members of the Galar region's most charismatic band, the Maximizers.\",\n      gen: 8,\n      keyItem: true,\n      name: 'Band Autograph',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/bandautograph.png'\n    }\n  ],\n  [\n    'banettite',\n    {\n      desc: 'If held by a Banette, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Banettite',\n      shortDesc: 'If held by a Banette, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'barbaracite',\n    {\n      desc: 'If held by a Barbaracle, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Barbaracite',\n      shortDesc: 'If held by a Barbaracle, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'basementkey',\n    {\n      desc: 'A key that opens a door in the Goldenrod Tunnel.',\n      gen: 2,\n      keyItem: true,\n      name: 'Basement Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/basementkey.png'\n    }\n  ],\n  [\n    'beastball',\n    {\n      desc: 'A special Poké Ball designed to catch Ultra Beasts.',\n      gen: 7,\n      name: 'Beast Ball',\n      shortDesc: 'A special Poké Ball designed to catch Ultra Beasts.'\n    }\n  ],\n  [\n    'beedrillite',\n    {\n      desc: 'If held by a Beedrill, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Beedrillite',\n      shortDesc: 'If held by a Beedrill, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'belueberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Belue Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'berry',\n    {\n      desc: '(Gen 2) Restores 10 HP when at 1/2 max HP or less. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Berry',\n      shortDesc: '(Gen 2) Restores 10 HP when at 1/2 max HP or less. Single use.'\n    }\n  ],\n  [\n    'berryjuice',\n    {\n      desc: 'Restores 20 HP when at 1/2 max HP or less. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Berry Juice',\n      shortDesc: 'Restores 20 HP when at 1/2 max HP or less. Single use.'\n    }\n  ],\n  [\n    'berrypots',\n    {\n      desc: 'Handy containers for cultivating Berries wherever you go.',\n      gen: 4,\n      keyItem: true,\n      name: 'Berry Pots',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/berrypots.png'\n    }\n  ],\n  [\n    'berrypouch',\n    {\n      desc: \"A pouch for carrying Berries. It is attached to the bag's compartment for important items.\",\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Berry Pouch',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/berrypouch.png'\n    }\n  ],\n  [\n    'berrysweet',\n    {\n      desc: 'Evolves Milcery into Alcremie when held and spun around.',\n      gen: 8,\n      name: 'Berry Sweet',\n      shortDesc: 'Evolves Milcery into Alcremie when held and spun around.'\n    }\n  ],\n  [\n    'berserkgene',\n    {\n      desc: \"(Gen 2) On switch-in, raises holder's Attack by 2 and confuses it. Single use.\",\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Berserk Gene',\n      shortDesc: \"(Gen 2) On switch-in, raises holder's Attack by 2 and confuses it. Single use.\"\n    }\n  ],\n  [\n    'bicycle',\n    {\n      desc: 'A folding bike that enables a rider to get around much faster than with Running Shoes.',\n      gen: 1,\n      keyItem: true,\n      name: 'Bicycle',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/bicycle.png'\n    }\n  ],\n  [\n    'bignugget',\n    {\n      desc: 'A big nugget of pure gold that gives off a lustrous gleam.',\n      gen: 5,\n      name: 'Big Nugget',\n      shortDesc: 'A big nugget of pure gold that gives off a lustrous gleam.'\n    }\n  ],\n  [\n    'bigroot',\n    {\n      desc: 'Holder gains 1.3x HP from draining/Aqua Ring/Ingrain/Leech Seed/Strength Sap.',\n      gen: 4,\n      name: 'Big Root',\n      shortDesc: 'Holder gains 1.3x HP from draining/Aqua Ring/Ingrain/Leech Seed/Strength Sap.'\n    }\n  ],\n  [\n    'bikevoucher',\n    {\n      desc: 'Take this voucher to the BIKE SHOP in CERULEAN CITY and exchange it for a bicycle.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Bike Voucher',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/bikevoucher.png'\n    }\n  ],\n  [\n    'bindingband',\n    {\n      desc: \"Holder's partial-trapping moves deal 1/6 max HP per turn instead of 1/8.\",\n      gen: 5,\n      name: 'Binding Band',\n      shortDesc: \"Holder's partial-trapping moves deal 1/6 max HP per turn instead of 1/8.\"\n    }\n  ],\n  [\n    'bitterberry',\n    {\n      desc: '(Gen 2) Holder is cured if it is confused. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Bitter Berry',\n      shortDesc: '(Gen 2) Holder is cured if it is confused. Single use.'\n    }\n  ],\n  [\n    'blackaugurite',\n    {\n      desc: \"A glassy black stone that produces a sharp cutting edge when split. It's loved by a certain Pokémon.\",\n      gen: 8,\n      name: 'Black Augurite',\n      shortDesc: 'Evolves Scyther into Kleavor when used.'\n    }\n  ],\n  [\n    'blackbelt',\n    {\n      desc: \"Holder's Fighting-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Black Belt',\n      shortDesc: \"Holder's Fighting-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'blackglasses',\n    {\n      desc: \"Holder's Dark-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Black Glasses',\n      shortDesc: \"Holder's Dark-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'blacksludge',\n    {\n      desc: 'Each turn, if holder is a Poison type, restores 1/16 max HP; loses 1/8 if not.',\n      gen: 4,\n      name: 'Black Sludge',\n      shortDesc: 'Each turn, if holder is a Poison type, restores 1/16 max HP; loses 1/8 if not.'\n    }\n  ],\n  [\n    'blastoisinite',\n    {\n      desc: 'If held by a Blastoise, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Blastoisinite',\n      shortDesc: 'If held by a Blastoise, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'blazikenite',\n    {\n      desc: 'If held by a Blaziken, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Blazikenite',\n      shortDesc: 'If held by a Blaziken, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'bluecard',\n    {\n      desc: \"A card to save points for the Buena's Password show.\",\n      gen: 2,\n      keyItem: true,\n      name: 'Blue Card',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/bluecard.png'\n    }\n  ],\n  [\n    'blueorb',\n    {\n      desc: 'If held by a Kyogre, this item triggers its Primal Reversion in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Blue Orb',\n      shortDesc: 'If held by a Kyogre, this item triggers its Primal Reversion in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/blueorb.png'\n    }\n  ],\n  [\n    'bluepetal',\n    {\n      desc: \"A pressed flower petal you receive from Lana during Mina's trial. The goal is to collect seven different kinds of petals.\",\n      gen: 7,\n      keyItem: true,\n      name: 'Blue Petal',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/bluepetal.png'\n    }\n  ],\n  [\n    'blukberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Bluk Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'blunderpolicy',\n    {\n      desc: 'If the holder misses due to accuracy, its Speed is raised by 2 stages. Single use.',\n      gen: 8,\n      name: 'Blunder Policy',\n      shortDesc: 'If the holder misses due to accuracy, its Speed is raised by 2 stages. Single use.'\n    }\n  ],\n  [\n    'boosterenergy',\n    {\n      desc: 'Activates the Protosynthesis or Quark Drive Abilities. Single use.',\n      gen: 9,\n      name: 'Booster Energy',\n      shortDesc: 'Activates the Protosynthesis or Quark Drive Abilities. Single use.'\n    }\n  ],\n  [\n    'bottlecap',\n    {\n      desc: \"Used for Hyper Training. One of a Pokémon's stats is calculated with an IV of 31.\",\n      gen: 7,\n      name: 'Bottle Cap',\n      shortDesc: \"Used for Hyper Training. One of a Pokémon's stats is calculated with an IV of 31.\"\n    }\n  ],\n  [\n    'brightpowder',\n    {\n      desc: 'The accuracy of attacks against the holder is 0.9x.',\n      gen: 2,\n      name: 'Bright Powder',\n      shortDesc: 'The accuracy of attacks against the holder is 0.9x.'\n    }\n  ],\n  [\n    'buggem',\n    {\n      desc: \"Holder's first successful Bug-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Bug Gem',\n      shortDesc: \"Holder's first successful Bug-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'buginiumz',\n    {\n      desc: 'If holder has a Bug move, this item allows it to use a Bug Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Buginium Z',\n      shortDesc: 'If holder has a Bug move, this item allows it to use a Bug Z-Move.'\n    }\n  ],\n  [\n    'bugmemory',\n    {\n      desc: \"Holder's Multi-Attack is Bug type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Bug Memory',\n      shortDesc: \"Holder's Multi-Attack is Bug type.\"\n    }\n  ],\n  [\n    'bugterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Bug Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/bugterashard.png'\n    }\n  ],\n  [\n    'burndrive',\n    {\n      desc: \"Holder's Techno Blast is Fire type.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Burn Drive',\n      shortDesc: \"Holder's Techno Blast is Fire type.\"\n    }\n  ],\n  [\n    'burntberry',\n    {\n      desc: '(Gen 2) Holder is cured if it is frozen. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Burnt Berry',\n      shortDesc: '(Gen 2) Holder is cured if it is frozen. Single use.'\n    }\n  ],\n  [\n    'cameruptite',\n    {\n      desc: 'If held by a Camerupt, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Cameruptite',\n      shortDesc: 'If held by a Camerupt, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'campinggear',\n    {\n      desc: 'Everything you need to set up a tent and get cooking in a Wild Area or at a camping spot.',\n      gen: 8,\n      keyItem: true,\n      name: 'Camping Gear',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/campinggear.png'\n    }\n  ],\n  [\n    'cardkey',\n    {\n      desc: 'A card key that opens a shutter in the Radio Tower.',\n      gen: 1,\n      keyItem: true,\n      name: 'Card Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/cardkey.png'\n    }\n  ],\n  [\n    'catchingcharm',\n    {\n      desc: \"Holding it is said to increase the chance of getting a critical catch. Curiously, the charm doesn't shake much.\",\n      gen: 8,\n      keyItem: true,\n      name: 'Catching Charm',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/catchingcharm.png'\n    }\n  ],\n  [\n    'cellbattery',\n    {\n      desc: \"Raises holder's Attack by 1 if hit by an Electric-type attack. Single use.\",\n      gen: 5,\n      name: 'Cell Battery',\n      shortDesc: \"Raises holder's Attack by 1 if hit by an Electric-type attack. Single use.\"\n    }\n  ],\n  [\n    'chandelurite',\n    {\n      desc: 'If held by a Chandelure, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Chandelurite',\n      shortDesc: 'If held by a Chandelure, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'charcoal',\n    {\n      desc: \"Holder's Fire-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Charcoal',\n      shortDesc: \"Holder's Fire-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'charizarditex',\n    {\n      desc: 'If held by a Charizard, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Charizardite X',\n      shortDesc: 'If held by a Charizard, this item allows it to Mega Evolve into Mega Charizard X.'\n    }\n  ],\n  [\n    'charizarditey',\n    {\n      desc: 'If held by a Charizard, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Charizardite Y',\n      shortDesc: 'If held by a Charizard, this item allows it to Mega Evolve into Mega Charizard Y.'\n    }\n  ],\n  [\n    'chartiberry',\n    {\n      desc: 'Halves damage taken from a supereffective Rock-type attack. Single use.',\n      gen: 4,\n      name: 'Charti Berry',\n      shortDesc: 'Halves damage taken from a supereffective Rock-type attack. Single use.'\n    }\n  ],\n  [\n    'cheriberry',\n    {\n      desc: 'Holder cures itself if it is paralyzed. Single use.',\n      gen: 3,\n      name: 'Cheri Berry',\n      shortDesc: 'Holder cures itself if it is paralyzed. Single use.'\n    }\n  ],\n  [\n    'cherishball',\n    {\n      desc: 'A rare Poké Ball that has been crafted to commemorate an occasion.',\n      gen: 4,\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Cherish Ball',\n      shortDesc: 'A rare Poké Ball that has been crafted to commemorate an occasion.'\n    }\n  ],\n  [\n    'chesnautite',\n    {\n      desc: 'If held by a Chesnaught, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Chesnaught',\n      shortDesc: 'If held by a Chesnaught, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'chestoberry',\n    {\n      aliases: ['chesto'],\n      desc: 'Holder wakes up if it is asleep. Single use.',\n      gen: 3,\n      name: 'Chesto Berry',\n      shortDesc: 'Holder wakes up if it is asleep. Single use.'\n    }\n  ],\n  [\n    'chilanberry',\n    {\n      desc: 'Halves damage taken from a Normal-type attack. Single use.',\n      gen: 4,\n      name: 'Chilan Berry',\n      shortDesc: 'Halves damage taken from a Normal-type attack. Single use.'\n    }\n  ],\n  [\n    'chilldrive',\n    {\n      desc: \"Holder's Techno Blast is Ice type.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Chill Drive',\n      shortDesc: \"Holder's Techno Blast is Ice type.\"\n    }\n  ],\n  [\n    'chippedpot',\n    {\n      desc: 'Evolves Sinistea-Antique into Polteageist-Antique when used.',\n      gen: 8,\n      name: 'Chipped Pot',\n      shortDesc: 'Evolves Sinistea-Antique into Polteageist-Antique when used.'\n    }\n  ],\n  [\n    'choiceband',\n    {\n      aliases: ['band', 'cb'],\n      desc: \"Holder's Attack is 1.5x, but it can only select the first move it executes.\",\n      gen: 3,\n      name: 'Choice Band',\n      shortDesc: \"Holder's Attack is 1.5x, but it can only select the first move it executes.\"\n    }\n  ],\n  [\n    'choicescarf',\n    {\n      aliases: ['scarf'],\n      desc: \"Holder's Speed is 1.5x, but it can only select the first move it executes.\",\n      gen: 4,\n      name: 'Choice Scarf',\n      shortDesc: \"Holder's Speed is 1.5x, but it can only select the first move it executes.\"\n    }\n  ],\n  [\n    'choicespecs',\n    {\n      aliases: ['specs'],\n      desc: \"Holder's Sp. Atk is 1.5x, but it can only select the first move it executes.\",\n      gen: 4,\n      name: 'Choice Specs',\n      shortDesc: \"Holder's Sp. Atk is 1.5x, but it can only select the first move it executes.\"\n    }\n  ],\n  [\n    'chopleberry',\n    {\n      aliases: ['chople'],\n      desc: 'Halves damage taken from a supereffective Fighting-type attack. Single use.',\n      gen: 4,\n      name: 'Chople Berry',\n      shortDesc: 'Halves damage taken from a supereffective Fighting-type attack. Single use.'\n    }\n  ],\n  [\n    'clawfossil',\n    {\n      desc: 'Can be revived into Anorith.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Claw Fossil',\n      shortDesc: 'Can be revived into Anorith.'\n    }\n  ],\n  [\n    'clearamulet',\n    {\n      desc: \"Prevents other Pokémon from lowering the holder's stat stages.\",\n      gen: 9,\n      name: 'Clear Amulet',\n      shortDesc: \"Prevents other Pokémon from lowering the holder's stat stages.\"\n    }\n  ],\n  [\n    'clearbell',\n    {\n      desc: 'A very old-fashioned bell that makes a gentle ringing sound.',\n      gen: 2,\n      keyItem: true,\n      name: 'Clear Bell',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/clearbell.png'\n    }\n  ],\n  [\n    'clefablite',\n    {\n      desc: 'If held by a Clefable, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Clefablite',\n      shortDesc: 'If held by a Clefable, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'cloversweet',\n    {\n      desc: 'Evolves Milcery into Alcremie when held and spun around.',\n      gen: 8,\n      name: 'Clover Sweet',\n      shortDesc: 'Evolves Milcery into Alcremie when held and spun around.'\n    }\n  ],\n  [\n    'cobaberry',\n    {\n      desc: 'Halves damage taken from a supereffective Flying-type attack. Single use.',\n      gen: 4,\n      name: 'Coba Berry',\n      shortDesc: 'Halves damage taken from a supereffective Flying-type attack. Single use.'\n    }\n  ],\n  [\n    'coincase',\n    {\n      desc: 'A case for holding coins obtained at the Game Corner. It can hold up to 50,000 coins.',\n      gen: 1,\n      keyItem: true,\n      name: 'Coin Case',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/coincase.png'\n    }\n  ],\n  [\n    'colburberry',\n    {\n      desc: 'Halves damage taken from a supereffective Dark-type attack. Single use.',\n      gen: 4,\n      name: 'Colbur Berry',\n      shortDesc: 'Halves damage taken from a supereffective Dark-type attack. Single use.'\n    }\n  ],\n  [\n    'colressmchn',\n    {\n      desc: \"A special device that wrings out the potential of Pokémon. It's an imperfect prototype.\",\n      gen: 5,\n      keyItem: true,\n      name: 'Colress MCHN',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/colressmchn.png'\n    }\n  ],\n  [\n    'contestcostume',\n    {\n      desc: 'A very cool suit to be worn during the Contest Spectacular.',\n      gen: 6,\n      keyItem: true,\n      name: 'Contest Costume',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/contestcostume.png'\n    }\n  ],\n  [\n    'contestpass',\n    {\n      desc: 'A pass required for entering Pokémon Contests. It has a drawing of an award ribbon on its front.',\n      gen: 3,\n      keyItem: true,\n      name: 'Contest Pass',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/contestpass.png'\n    }\n  ],\n  [\n    'cornerstonemask',\n    {\n      desc: 'Ogerpon-Cornerstone: 1.2x power attacks; Terastallize to gain Embody Aspect.',\n      gen: 9,\n      name: 'Cornerstone Mask',\n      shortDesc: 'Ogerpon-Cornerstone: 1.2x power attacks; Terastallize to gain Embody Aspect.'\n    }\n  ],\n  [\n    'cornnberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Cornn Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'coupon1',\n    {\n      desc: 'A coupon to be exchanged for a Pokémon Watch (Pokétch for short). Three coupons are needed.',\n      gen: 4,\n      keyItem: true,\n      name: 'Coupon 1',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/coupon1.png'\n    }\n  ],\n  [\n    'coupon2',\n    {\n      desc: 'A coupon to be exchanged for a Pokémon Watch (Pokétch for short). Three coupons are needed.',\n      gen: 4,\n      keyItem: true,\n      name: 'Coupon 2',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/coupon2.png'\n    }\n  ],\n  [\n    'coupon3',\n    {\n      desc: 'A coupon to be exchanged for a Pokémon Watch (Pokétch for short). Three coupons are needed.',\n      gen: 4,\n      keyItem: true,\n      name: 'Coupon 3',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/coupon3.png'\n    }\n  ],\n  [\n    'coverfossil',\n    {\n      desc: 'Can be revived into Tirtouga.',\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Cover Fossil',\n      shortDesc: 'Can be revived into Tirtouga.'\n    }\n  ],\n  [\n    'covertcloak',\n    {\n      desc: \"The holder is not affected by the secondary effect of another Pokémon's attack. Attacks with secondary effects that are prevented include those with a chance (even 100%) to paralyze, sleep, freeze, burn, poison, confuse, cause the holder to flinch, cause the holder's stat stages to be lowered, as well as Anchor Shot, Eerie Spell, Fling, Psychic Noise, Salt Cure, Spirit Shackle, Syrup Bomb, and Throat Chop. The effect of Sparkling Aria is prevented if the holder is the only target. Secondary effects added by King's Rock, Razor Fang, and the Poison Touch, Stench, and Toxic Chain Abilities are also prevented against the holder.\",\n      gen: 9,\n      name: 'Covert Cloak',\n      shortDesc: \"Holder is not affected by the secondary effect of another Pokémon's attack.\"\n    }\n  ],\n  [\n    'crackedpot',\n    {\n      desc: 'Evolves Sinistea into Polteageist when used.',\n      gen: 8,\n      name: 'Cracked Pot',\n      shortDesc: 'Evolves Sinistea into Polteageist when used.'\n    }\n  ],\n  [\n    'crucibellite',\n    {\n      desc: 'If held by a Crucibelle, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Cap,\n      name: 'Crucibellite',\n      shortDesc: 'If held by a Crucibelle, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'custapberry',\n    {\n      aliases: ['custap'],\n      desc: 'Holder moves first in its priority bracket when at 1/4 max HP or less. Single use.',\n      gen: 4,\n      name: 'Custap Berry',\n      shortDesc: 'Holder moves first in its priority bracket when at 1/4 max HP or less. Single use.'\n    }\n  ],\n  [\n    'damprock',\n    {\n      desc: \"Holder's use of Rain Dance lasts 8 turns instead of 5.\",\n      gen: 4,\n      name: 'Damp Rock',\n      shortDesc: \"Holder's use of Rain Dance lasts 8 turns instead of 5.\"\n    }\n  ],\n  [\n    'darkgem',\n    {\n      desc: \"Holder's first successful Dark-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Dark Gem',\n      shortDesc: \"Holder's first successful Dark-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'darkiniumz',\n    {\n      desc: 'If holder has a Dark move, this item allows it to use a Dark Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Darkinium Z',\n      shortDesc: 'If holder has a Dark move, this item allows it to use a Dark Z-Move.'\n    }\n  ],\n  [\n    'darkmemory',\n    {\n      desc: \"Holder's Multi-Attack is Dark type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Dark Memory',\n      shortDesc: \"Holder's Multi-Attack is Dark type.\"\n    }\n  ],\n  [\n    'darkstone',\n    {\n      desc: \"Zekrom's body was destroyed and changed into this stone. It is said to be waiting for the emergence of a hero.\",\n      gen: 5,\n      keyItem: true,\n      name: 'Dark Stone',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/darkstone.png'\n    }\n  ],\n  [\n    'darkterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Dark Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/darkterashard.png'\n    }\n  ],\n  [\n    'dawnstone',\n    {\n      desc: 'Evolves male Kirlia into Gallade and female Snorunt into Froslass when used.',\n      gen: 4,\n      name: 'Dawn Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'decidiumz',\n    {\n      desc: 'If held by a Decidueye with Spirit Shackle, it can use Sinister Arrow Raid.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Decidium Z',\n      shortDesc: 'If held by a Decidueye with Spirit Shackle, it can use Sinister Arrow Raid.'\n    }\n  ],\n  [\n    'deepseascale',\n    {\n      desc: 'If held by a Clamperl, its Sp. Def is doubled. Evolves Clamperl into Gorebyss when traded.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Deep Sea Scale',\n      shortDesc: 'If held by a Clamperl, its Sp. Def is doubled.'\n    }\n  ],\n  [\n    'deepseatooth',\n    {\n      desc: 'If held by a Clamperl, its Sp. Atk is doubled. Evolves Clamperl into Huntail when traded.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Deep Sea Tooth',\n      shortDesc: 'If held by a Clamperl, its Sp. Atk is doubled.'\n    }\n  ],\n  [\n    'delphoxite',\n    {\n      desc: 'If held by a Delphox, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Delphoxite',\n      shortDesc: 'If held by a Delphox, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'destinyknot',\n    {\n      desc: 'If holder becomes infatuated, the other Pokémon also becomes infatuated.',\n      gen: 4,\n      name: 'Destiny Knot',\n      shortDesc: 'If holder becomes infatuated, the other Pokémon also becomes infatuated.'\n    }\n  ],\n  [\n    'devongoods',\n    {\n      desc: \"A package that contains DEVON's machine parts.\",\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Devon Goods',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/devongoods.png'\n    }\n  ],\n  [\n    'devonparts',\n    {\n      desc: 'A case that contains mechanical parts of some sort made by the Devon Corporation.',\n      gen: 6,\n      keyItem: true,\n      name: 'Devon Parts',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/devonparts.png'\n    }\n  ],\n  [\n    'devonscope',\n    {\n      desc: 'A special device made by Devon Corporation that signals the presence of any unseen Pokémon.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Devon Scope',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/devonscope.png'\n    }\n  ],\n  [\n    'devonscubagear',\n    {\n      desc: 'A device made by Devon Corporation that provides oxygen to users during the use of Dive.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Devon Scuba Gear',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/devonscubagear.png'\n    }\n  ],\n  [\n    'diancite',\n    {\n      desc: 'If held by a Diancie, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Diancite',\n      shortDesc: 'If held by a Diancie, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'diveball',\n    {\n      desc: 'A Poké Ball that works especially well on Pokémon that live underwater.',\n      gen: 3,\n      name: 'Dive Ball',\n      shortDesc: 'A Poké Ball that works especially well on Pokémon that live underwater.'\n    }\n  ],\n  [\n    'dnasplicers',\n    {\n      desc: 'A splicer that fuses Kyurem and a certain Pokémon. They are said to have been one in the beginning.',\n      gen: 5,\n      keyItem: true,\n      name: 'DNA Splicers',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/dnasplicers.png'\n    }\n  ],\n  [\n    'domefossil',\n    {\n      desc: 'Can be revived into Kabuto.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Dome Fossil',\n      shortDesc: 'Can be revived into Kabuto.'\n    }\n  ],\n  [\n    'dousedrive',\n    {\n      desc: \"Holder's Techno Blast is Water type.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Douse Drive',\n      shortDesc: \"Holder's Techno Blast is Water type.\"\n    }\n  ],\n  [\n    'dowsingmachine',\n    {\n      desc: \"This high-tech machine shows the location of invisible items. It's attached to the head when in use.\",\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Dowsing Machine',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/dowsingmachine.png'\n    }\n  ],\n  [\n    'dowsingmchn',\n    {\n      desc: \"A high-tech machine that shows the location of invisible items. It's attached to the head when in use.\",\n      gen: 4,\n      keyItem: true,\n      name: 'Dowsing MCHN',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/dowsingmchn.png'\n    }\n  ],\n  [\n    'dracoplate',\n    {\n      desc: \"Holder's Dragon-type attacks have 1.2x power. Judgment is Dragon type.\",\n      gen: 4,\n      name: 'Draco Plate',\n      shortDesc: \"Holder's Dragon-type attacks have 1.2x power. Judgment is Dragon type.\"\n    }\n  ],\n  [\n    'dragalgite',\n    {\n      desc: 'If held by a Dragalge, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Dragalgite',\n      shortDesc: 'If held by a Dragalge, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'dragonfang',\n    {\n      desc: \"Holder's Dragon-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Dragon Fang',\n      shortDesc: \"Holder's Dragon-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'dragongem',\n    {\n      desc: \"Holder's first successful Dragon-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Dragon Gem',\n      shortDesc: \"Holder's first successful Dragon-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'dragoninite',\n    {\n      desc: 'If held by a Dragonite, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Dragoninite',\n      shortDesc: 'If held by a Dragonite, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'dragoniumz',\n    {\n      desc: 'If holder has a Dragon move, this item allows it to use a Dragon Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Dragonium Z',\n      shortDesc: 'If holder has a Dragon move, this item allows it to use a Dragon Z-Move.'\n    }\n  ],\n  [\n    'dragonmemory',\n    {\n      desc: \"Holder's Multi-Attack is Dragon type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Dragon Memory',\n      shortDesc: \"Holder's Multi-Attack is Dragon type.\"\n    }\n  ],\n  [\n    'dragonscale',\n    {\n      desc: 'Evolves Seadra into Kingdra when traded.',\n      gen: 2,\n      name: 'Dragon Scale',\n      shortDesc: 'Evolves Seadra into Kingdra when traded.'\n    }\n  ],\n  [\n    'dragonskull',\n    {\n      desc: 'A skull of a Pokémon that was said to have braved the angry waters to fly around the world.',\n      gen: 5,\n      keyItem: true,\n      name: 'Dragon Skull',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/dragonskull.png'\n    }\n  ],\n  [\n    'dragonterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Dragon Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/dragonterashard.png'\n    }\n  ],\n  [\n    'drampanite',\n    {\n      desc: 'If held by a Drampa, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Drampanite',\n      shortDesc: 'If held by a Drampa, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'dreadplate',\n    {\n      desc: \"Holder's Dark-type attacks have 1.2x power. Judgment is Dark type.\",\n      gen: 4,\n      name: 'Dread Plate',\n      shortDesc: \"Holder's Dark-type attacks have 1.2x power. Judgment is Dark type.\"\n    }\n  ],\n  [\n    'dreamball',\n    {\n      desc: \"A Poké Ball that makes it easier to catch wild Pokémon while they're asleep.\",\n      gen: 5,\n      name: 'Dream Ball',\n      shortDesc: \"A Poké Ball that makes it easier to catch wild Pokémon while they're asleep.\"\n    }\n  ],\n  [\n    'droppeditem',\n    {\n      desc: \"This item, when found, causes you to be in contact with the owner who will then request for it to be returned From there, you will be called when you enter random areas by the owner of the item. After the 10th call, the person will call you and tell you to meet in Nimbasa to return their Item. When you do, they will be added to your Xtransceiver. Call them to total 30 times, but you can only call from places which fulfill the conditions. On the 30th call they'll tell you they want to meet at Nimbasa City where they'll ride the Ferris Wheel with you. Call them to total 50 times, in the 40th call they'll be 'SOUND ONLY', in the 50th call they'll be wearing their work clothes, and cut the line in a second or so. Call them a 51st time. wait a day and then call them again and they'll meet you in Nimbasa City and offer to trade, willing to have any Pokémon. This can be repeated each day to go through all of their Pokémon. The Pokémon you receive varies based on your gender\",\n      gen: 5,\n      keyItem: true,\n      name: 'Dropped Item',\n      shortDesc: 'The Xtransceiver found at the Nimbasa City amusement park. It seems it belongs to a boy or girl.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/droppeditem.png'\n    }\n  ],\n  [\n    'dubiousdisc',\n    {\n      desc: 'Evolves Porygon2 into Porygon-Z when traded.',\n      gen: 4,\n      name: 'Dubious Disc',\n      shortDesc: 'Evolves Porygon2 into Porygon-Z when traded.'\n    }\n  ],\n  [\n    'durinberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Durin Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'duskball',\n    {\n      desc: 'A Poké Ball that makes it easier to catch wild Pokémon at night or in caves.',\n      gen: 4,\n      name: 'Dusk Ball',\n      shortDesc: 'A Poké Ball that makes it easier to catch wild Pokémon at night or in caves.'\n    }\n  ],\n  [\n    'duskstone',\n    {\n      desc: 'Evolves Murkrow into Honchkrow, Misdreavus into Mismagius, Lampent into Chandelure, and Doublade into Aegislash when used.',\n      gen: 4,\n      name: 'Dusk Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'dynamaxband',\n    {\n      desc: 'A Wishing Star has been affixed to it. It lets out a light that allows Pokémon to Dynamax when at a Power Spot.',\n      gen: 8,\n      keyItem: true,\n      name: 'Dynamax Band',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/dynamaxband.png'\n    }\n  ],\n  [\n    'earthplate',\n    {\n      desc: \"Holder's Ground-type attacks have 1.2x power. Judgment is Ground type.\",\n      gen: 4,\n      name: 'Earth Plate',\n      shortDesc: \"Holder's Ground-type attacks have 1.2x power. Judgment is Ground type.\"\n    }\n  ],\n  [\n    'eelektrossite',\n    {\n      desc: 'If held by an Eelektross, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Eelektrossite',\n      shortDesc: 'If held by an Eelektross, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'eeviumz',\n    {\n      desc: 'If held by an Eevee with Last Resort, it can use Extreme Evoboost.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Eevium Z',\n      shortDesc: 'If held by an Eevee with Last Resort, it can use Extreme Evoboost.'\n    }\n  ],\n  [\n    'eggcard',\n    {\n      desc: 'This item is to be taken to the Breeding Centre in Route 34 and exchanged for the Odd Egg which may hold Pichu, Cleffa, Igglybuff, Tyrogue, Smoochum, Elekid or Magby.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Egg Card',\n      shortDesc: 'Might be used at the Pokémon Communication Centre.'\n    }\n  ],\n  [\n    'ejectbutton',\n    {\n      desc: 'If holder survives a hit, it immediately switches out to a chosen ally. Single use.',\n      gen: 5,\n      name: 'Eject Button',\n      shortDesc: 'If holder survives a hit, it immediately switches out to a chosen ally. Single use.'\n    }\n  ],\n  [\n    'ejectpack',\n    {\n      desc: \"If the holder's stat stages are lowered, it switches to a chosen ally. Single use.\",\n      gen: 8,\n      name: 'Eject Pack',\n      shortDesc: \"If the holder's stat stages are lowered, it switches to a chosen ally. Single use.\"\n    }\n  ],\n  [\n    'electirizer',\n    {\n      desc: 'Evolves Electabuzz into Electivire when traded.',\n      gen: 4,\n      name: 'Electirizer',\n      shortDesc: 'Evolves Electabuzz into Electivire when traded.'\n    }\n  ],\n  [\n    'electricgem',\n    {\n      desc: \"Holder's first successful Electric-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Electric Gem',\n      shortDesc: \"Holder's first successful Electric-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'electricmemory',\n    {\n      desc: \"Holder's Multi-Attack is Electric type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Electric Memory',\n      shortDesc: \"Holder's Multi-Attack is Electric type.\"\n    }\n  ],\n  [\n    'electricseed',\n    {\n      desc: \"If the terrain is Electric Terrain, raises holder's Defense by 1 stage. Single use.\",\n      gen: 7,\n      name: 'Electric Seed',\n      shortDesc: \"If the terrain is Electric Terrain, raises holder's Defense by 1 stage. Single use.\"\n    }\n  ],\n  [\n    'electricterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Electric Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/electricterashard.png'\n    }\n  ],\n  [\n    'electriumz',\n    {\n      desc: 'If holder has an Electric move, this item allows it to use an Electric Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Electrium Z',\n      shortDesc: 'If holder has an Electric move, this item allows it to use an Electric Z-Move.'\n    }\n  ],\n  [\n    'elevatorkey',\n    {\n      desc: \"A card key that activates the elevator in Lysandre Labs. It is emblazoned with Team Flare's logo.\",\n      gen: 6,\n      keyItem: true,\n      name: 'Elevator Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/elevatorkey.png'\n    }\n  ],\n  [\n    'emboarite',\n    {\n      desc: 'If held by an Emboar, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Emboarite',\n      shortDesc: 'If held by an Emboar, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'endorsement',\n    {\n      desc: \"A letter of recommendation that you'll need in order to participate in the Gym Challenge.\",\n      gen: 8,\n      keyItem: true,\n      name: 'Endorsement',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/endorsement.png'\n    }\n  ],\n  [\n    'energypowder',\n    {\n      desc: 'Restores 60 HP to one Pokémon.',\n      gen: 2,\n      name: 'Energy Powder'\n    }\n  ],\n  [\n    'enigmaberry',\n    {\n      desc: 'Restores 1/4 max HP after holder is hit by a supereffective move. Single use.',\n      gen: 3,\n      name: 'Enigma Berry',\n      shortDesc: 'Restores 1/4 max HP after holder is hit by a supereffective move. Single use.'\n    }\n  ],\n  [\n    'enigmastone',\n    {\n      desc: \"A crystal ball that was excavated from the ground. It's a very beautiful stone that is covered with bits of rock and earth.\",\n      gen: 4,\n      keyItem: true,\n      name: 'Enigma Stone',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/enigmastone.png'\n    }\n  ],\n  [\n    'enigmaticcard',\n    {\n      desc: 'A mysterious card. Written on it is a request for you to go to a guest room in an Akala motel on Route 8.',\n      gen: 7,\n      keyItem: true,\n      name: 'Enigmatic Card',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/enigmaticcard.png'\n    }\n  ],\n  [\n    'eonflute',\n    {\n      desc: 'A flute that can be used to summon Latios or Latias no matter where you are.',\n      gen: 6,\n      keyItem: true,\n      name: 'Eon Flute',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/eonflute.png'\n    }\n  ],\n  [\n    'eonticket',\n    {\n      desc: 'The ticket required for sailing on a ferry to the Southern Island. Does Norman, the Petalburg Gym Leader, know a secret?!',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Eon Ticket',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/eonticket.png'\n    }\n  ],\n  [\n    'escaperope',\n    {\n      desc: 'A long and durable rope. Use it to escape instantly from locations like caves or dungeons. It can be used any number of times.',\n      gen: 8,\n      keyItem: true,\n      name: 'Escape Rope',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/escaperope.png'\n    }\n  ],\n  [\n    'eviolite',\n    {\n      desc: \"If holder's species can evolve, its Defense and Sp. Def are 1.5x.\",\n      gen: 5,\n      name: 'Eviolite',\n      shortDesc: \"If holder's species can evolve, its Defense and Sp. Def are 1.5x.\"\n    }\n  ],\n  [\n    'excadrite',\n    {\n      desc: 'If held by an Excadrill, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Excadrite',\n      shortDesc: 'If held by an Excadrill, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'expertbelt',\n    {\n      aliases: ['ebelt'],\n      desc: \"Holder's attacks that are super effective against the target do 1.2x damage.\",\n      gen: 4,\n      name: 'Expert Belt',\n      shortDesc: \"Holder's attacks that are super effective against the target do 1.2x damage.\"\n    }\n  ],\n  [\n    'explorerkit',\n    {\n      desc: 'A bag filled with convenient tools for exploring. It provides access to the Underground in the Sinnoh region.',\n      gen: 4,\n      keyItem: true,\n      name: 'Explorer Kit',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/explorerkit.png'\n    }\n  ],\n  [\n    'expshare',\n    {\n      desc: 'Turning on this special device will allow all the Pokémon on your team to receive Exp. Points from battles.',\n      gen: 2,\n      keyItem: true,\n      name: 'Exp. Share',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/exp.share.png'\n    }\n  ],\n  [\n    'fairiumz',\n    {\n      desc: 'If holder has a Fairy move, this item allows it to use a Fairy Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fairium Z',\n      shortDesc: 'If holder has a Fairy move, this item allows it to use a Fairy Z-Move.'\n    }\n  ],\n  [\n    'fairyfeather',\n    {\n      desc: \"Holder's Fairy-type attacks have 1.2x power.\",\n      gen: 9,\n      name: 'Fairy Feather',\n      shortDesc: \"Holder's Fairy-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'fairygem',\n    {\n      desc: \"Holder's first successful Fairy-type attack will have 1.3x power. Single use.\",\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fairy Gem',\n      shortDesc: \"Holder's first successful Fairy-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'fairymemory',\n    {\n      desc: \"Holder's Multi-Attack is Fairy type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fairy Memory',\n      shortDesc: \"Holder's Multi-Attack is Fairy type.\"\n    }\n  ],\n  [\n    'fairyterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Fairy Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/fairyterashard.png'\n    }\n  ],\n  [\n    'falinksite',\n    {\n      desc: 'If held by a Falinks, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Falinksite',\n      shortDesc: 'If held by a Falinks, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'famechecker',\n    {\n      desc: \"A device that enables you to recall what you've heard and seen about famous people.\",\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Fame Checker',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/famechecker.png'\n    }\n  ],\n  [\n    'fashioncase',\n    {\n      desc: 'A lovely case to store colorful Props for your Pokémon to wear in a musical.',\n      gen: 4,\n      keyItem: true,\n      name: 'Fashion Case',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/fashioncase.png'\n    }\n  ],\n  [\n    'fastball',\n    {\n      desc: 'A Poké Ball that makes it easier to catch Pokémon which are quick to run away.',\n      gen: 2,\n      name: 'Fast Ball',\n      shortDesc: 'A Poké Ball that makes it easier to catch Pokémon which are quick to run away.'\n    }\n  ],\n  [\n    'feraligite',\n    {\n      desc: 'If held by a Feraligatr, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Feraligite',\n      shortDesc: 'If held by a Feraligatr, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'fightinggem',\n    {\n      aliases: ['fightgem'],\n      desc: \"Holder's first successful Fighting-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fighting Gem',\n      shortDesc: \"Holder's first successful Fighting-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'fightingmemory',\n    {\n      desc: \"Holder's Multi-Attack is Fighting type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fighting Memory',\n      shortDesc: \"Holder's Multi-Attack is Fighting type.\"\n    }\n  ],\n  [\n    'fightingterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Fighting Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/fightingterashard.png'\n    }\n  ],\n  [\n    'fightiniumz',\n    {\n      desc: 'If holder has a Fighting move, this item allows it to use a Fighting Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fightinium Z',\n      shortDesc: 'If holder has a Fighting move, this item allows it to use a Fighting Z-Move.'\n    }\n  ],\n  [\n    'figyberry',\n    {\n      desc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -Atk Nature. Single use.',\n      gen: 3,\n      name: 'Figy Berry',\n      shortDesc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -Atk Nature. Single use.'\n    }\n  ],\n  [\n    'firegem',\n    {\n      desc: \"Holder's first successful Fire-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fire Gem',\n      shortDesc: \"Holder's first successful Fire-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'firememory',\n    {\n      desc: \"Holder's Multi-Attack is Fire type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fire Memory',\n      shortDesc: \"Holder's Multi-Attack is Fire type.\"\n    }\n  ],\n  [\n    'firestone',\n    {\n      desc: 'Evolves Vulpix into Ninetales, Growlithe into Arcanine, Eevee into Flareon, and Pansear into Simisear when used.',\n      gen: 1,\n      name: 'Fire Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'fireterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Fire Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/fireterashard.png'\n    }\n  ],\n  [\n    'firiumz',\n    {\n      desc: 'If holder has a Fire move, this item allows it to use a Fire Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Firium Z',\n      shortDesc: 'If holder has a Fire move, this item allows it to use a Fire Z-Move.'\n    }\n  ],\n  [\n    'fishingrod',\n    {\n      desc: 'Use it by the water to fish up various kinds of Pokémon.',\n      gen: 1,\n      keyItem: true,\n      name: 'Fishing Rod',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/fishingrod.png'\n    }\n  ],\n  [\n    'fistplate',\n    {\n      desc: \"Holder's Fighting-type attacks have 1.2x power. Judgment is Fighting type.\",\n      gen: 4,\n      name: 'Fist Plate',\n      shortDesc: \"Holder's Fighting-type attacks have 1.2x power. Judgment is Fighting type.\"\n    }\n  ],\n  [\n    'flameorb',\n    {\n      desc: 'At the end of every turn, this item attempts to burn the holder.',\n      gen: 4,\n      name: 'Flame Orb',\n      shortDesc: 'At the end of every turn, this item attempts to burn the holder.'\n    }\n  ],\n  [\n    'flameplate',\n    {\n      desc: \"Holder's Fire-type attacks have 1.2x power. Judgment is Fire type.\",\n      gen: 4,\n      name: 'Flame Plate',\n      shortDesc: \"Holder's Fire-type attacks have 1.2x power. Judgment is Fire type.\"\n    }\n  ],\n  [\n    'floatstone',\n    {\n      desc: \"Holder's weight is halved.\",\n      gen: 5,\n      name: 'Float Stone',\n      shortDesc: \"Holder's weight is halved.\"\n    }\n  ],\n  [\n    'floettite',\n    {\n      desc: 'If held by an Eternal Flower Floette, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Floettite',\n      shortDesc: 'If held by an Eternal Flower Floette, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'flowersweet',\n    {\n      desc: 'Evolves Milcery into Alcremie when held and spun around.',\n      gen: 8,\n      name: 'Flower Sweet',\n      shortDesc: 'Evolves Milcery into Alcremie when held and spun around.'\n    }\n  ],\n  [\n    'flyinggem',\n    {\n      aliases: ['flightgem'],\n      desc: \"Holder's first successful Flying-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Flying Gem',\n      shortDesc: \"Holder's first successful Flying-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'flyingmemory',\n    {\n      desc: \"Holder's Multi-Attack is Flying type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Flying Memory',\n      shortDesc: \"Holder's Multi-Attack is Flying type.\"\n    }\n  ],\n  [\n    'flyingterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Flying Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/flyingterashard.png'\n    }\n  ],\n  [\n    'flyiniumz',\n    {\n      desc: 'If holder has a Flying move, this item allows it to use a Flying Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Flyinium Z',\n      shortDesc: 'If holder has a Flying move, this item allows it to use a Flying Z-Move.'\n    }\n  ],\n  [\n    'focusband',\n    {\n      desc: 'Holder has a 10% chance to survive an attack that would KO it with 1 HP.',\n      gen: 2,\n      name: 'Focus Band',\n      shortDesc: 'Holder has a 10% chance to survive an attack that would KO it with 1 HP.'\n    }\n  ],\n  [\n    'focussash',\n    {\n      aliases: ['sash'],\n      desc: \"If holder's HP is full, will survive an attack that would KO it with 1 HP. Single use.\",\n      gen: 4,\n      name: 'Focus Sash',\n      shortDesc: \"If holder's HP is full, will survive an attack that would KO it with 1 HP. Single use.\"\n    }\n  ],\n  [\n    'foragebag',\n    {\n      desc: \"A bag to carry ingredients gathered during Mallow's trial in the jungle.\",\n      gen: 7,\n      keyItem: true,\n      name: 'foragebag',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/foragebag.png'\n    }\n  ],\n  [\n    'fossilizedbird',\n    {\n      desc: 'Can revive into Dracozolt with Fossilized Drake or Arctozolt with Fossilized Dino.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fossilized Bird',\n      shortDesc: 'Can revive into Dracozolt with Fossilized Drake or Arctozolt with Fossilized Dino.'\n    }\n  ],\n  [\n    'fossilizeddino',\n    {\n      desc: 'Can revive into Arctovish with Fossilized Fish or Arctozolt with Fossilized Bird.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fossilized Dino',\n      shortDesc: 'Can revive into Arctovish with Fossilized Fish or Arctozolt with Fossilized Bird.'\n    }\n  ],\n  [\n    'fossilizeddrake',\n    {\n      desc: 'Can revive into Dracozolt with Fossilized Bird or Dracovish with Fossilized Fish.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fossilized Drake',\n      shortDesc: 'Can revive into Dracozolt with Fossilized Bird or Dracovish with Fossilized Fish.'\n    }\n  ],\n  [\n    'fossilizedfish',\n    {\n      desc: 'Can revive into Dracovish with Fossilized Drake or Arctovish with Fossilized Dino.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Fossilized Fish',\n      shortDesc: 'Can revive into Dracovish with Fossilized Drake or Arctovish with Fossilized Dino.'\n    }\n  ],\n  [\n    'friendball',\n    {\n      desc: 'A Poké Ball that makes caught Pokémon more friendly.',\n      gen: 2,\n      name: 'Friend Ball',\n      shortDesc: 'A Poké Ball that makes caught Pokémon more friendly.'\n    }\n  ],\n  [\n    'froslassite',\n    {\n      desc: 'If held by a Froslass, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Froslassite',\n      shortDesc: 'If held by a Froslass, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'fullincense',\n    {\n      desc: 'Holder moves last in its priority bracket.',\n      gen: 4,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Full Incense',\n      shortDesc: 'Holder moves last in its priority bracket.'\n    }\n  ],\n  [\n    'fullrestore',\n    {\n      desc: 'A medicine that can be used to fully restore the HP of a single Pokémon and heal any status conditions it has. ',\n      gen: 1,\n      name: 'Full Restore'\n    }\n  ],\n  [\n    'galactickey',\n    {\n      desc: 'A card key for disengaging the security systems in the Galactic HQ. Losing it can result in punishment, apparently.',\n      gen: 4,\n      keyItem: true,\n      name: 'GS Ball',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/galactickey.png'\n    }\n  ],\n  [\n    'galaricacuff',\n    {\n      desc: 'Evolves Galarian Slowpoke into Galarian Slowbro when used.',\n      gen: 8,\n      name: 'Galarica Cuff',\n      shortDesc: 'Evolves Galarian Slowpoke into Galarian Slowbro when used.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/galaricacuff.png'\n    }\n  ],\n  [\n    'galaricawreath',\n    {\n      desc: 'Evolves Galarian Slowpoke into Galarian Slowking when used.',\n      gen: 8,\n      name: 'Galarica Wreath',\n      shortDesc: 'Evolves Galarian Slowpoke into Galarian Slowking when used.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/galaricawreath.png'\n    }\n  ],\n  [\n    'galladite',\n    {\n      desc: 'If held by a Gallade, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Galladite',\n      shortDesc: 'If held by a Gallade, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'ganlonberry',\n    {\n      desc: \"Raises holder's Defense by 1 stage when at 1/4 max HP or less. Single use.\",\n      gen: 3,\n      name: 'Ganlon Berry',\n      shortDesc: \"Raises holder's Defense by 1 stage when at 1/4 max HP or less. Single use.\"\n    }\n  ],\n  [\n    'garchompite',\n    {\n      desc: 'If held by a Garchomp, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Garchompite',\n      shortDesc: 'If held by a Garchomp, this item allows it to Mega Evolve into Mega Garchomp.'\n    }\n  ],\n  [\n    'gardevoirite',\n    {\n      desc: 'If held by a Gardevoir, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Gardevoirite',\n      shortDesc: 'If held by a Gardevoir, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'gbsounds',\n    {\n      desc: \"A music player that allows you to listen to nostalgic songs. It's operated with the flip of a single switch.\",\n      gen: 4,\n      keyItem: true,\n      name: 'GB Sounds',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/gbsounds.png'\n    }\n  ],\n  [\n    'gengarite',\n    {\n      desc: 'If held by a Gengar, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Gengarite',\n      shortDesc: 'If held by a Gengar, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'ghostgem',\n    {\n      desc: \"Holder's first successful Ghost-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ghost Gem',\n      shortDesc: \"Holder's first successful Ghost-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'ghostiumz',\n    {\n      desc: 'If holder has a Ghost move, this item allows it to use a Ghost Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ghostium Z',\n      shortDesc: 'If holder has a Ghost move, this item allows it to use a Ghost Z-Move.'\n    }\n  ],\n  [\n    'ghostmemory',\n    {\n      desc: \"Holder's Multi-Attack is Ghost type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ghost Memory',\n      shortDesc: \"Holder's Multi-Attack is Ghost type.\"\n    }\n  ],\n  [\n    'ghostterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Ghost Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/ghostterashard.png'\n    }\n  ],\n  [\n    'glalitite',\n    {\n      desc: 'If held by a Glalie, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Glalitite',\n      shortDesc: 'If held by a Glalie, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'godstone',\n    {\n      desc: 'A rare stone',\n      gen: 5,\n      keyItem: true,\n      name: 'God Stone',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/godstone.png'\n    }\n  ],\n  [\n    'gogoggles',\n    {\n      desc: 'Nifty goggles to protect eyes from desert sandstorms.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Go-Goggles',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/go-goggles.png'\n    }\n  ],\n  [\n    'goldberry',\n    {\n      desc: '(Gen 2) Restores 30 HP when at 1/2 max HP or less. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Gold Berry',\n      shortDesc: '(Gen 2) Restores 30 HP when at 1/2 max HP or less. Single use.'\n    }\n  ],\n  [\n    'goldbottlecap',\n    {\n      desc: \"Used for Hyper Training. All of a Pokémon's stats are calculated with an IV of 31.\",\n      gen: 7,\n      name: 'Gold Bottle Cap',\n      shortDesc: \"Used for Hyper Training. All of a Pokémon's stats are calculated with an IV of 31.\"\n    }\n  ],\n  [\n    'goldteeth',\n    {\n      desc: \"A set of golden false teeth lost by the Safari Zone's warden. They make his smile sparkle.\",\n      gen: 1,\n      keyItem: true,\n      name: 'Gold Teeth',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/goldteeth.png'\n    }\n  ],\n  [\n    'goodrod',\n    {\n      desc: 'A new, good-quality fishing rod. Use it at any body of water to fish for wild aquatic Pokémon.',\n      gen: 1,\n      keyItem: true,\n      name: 'Good Rod',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/goodrod.png'\n    }\n  ],\n  [\n    'gracidea',\n    {\n      desc: 'A flower sometimes bundled in bouquets to convey gratitude on special occasions, such as birthdays.',\n      gen: 4,\n      keyItem: true,\n      name: 'Gracidea',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/gracidea.png'\n    }\n  ],\n  [\n    'gram1',\n    {\n      desc: 'An important letter that Wingull delivers.',\n      gen: 5,\n      keyItem: true,\n      name: 'Gram 1',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/gram1.png'\n    }\n  ],\n  [\n    'gram2',\n    {\n      desc: 'An important letter that Wingull delivers.',\n      gen: 5,\n      keyItem: true,\n      name: 'Gram 2',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/gram2.png'\n    }\n  ],\n  [\n    'gram3',\n    {\n      desc: 'An important letter that Wingull delivers.',\n      gen: 5,\n      keyItem: true,\n      name: 'Gram 3',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/gram3.png'\n    }\n  ],\n  [\n    'grassgem',\n    {\n      desc: \"Holder's first successful Grass-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Grass Gem',\n      shortDesc: \"Holder's first successful Grass-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'grassiumz',\n    {\n      desc: 'If holder has a Grass move, this item allows it to use a Grass Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Grassium Z',\n      shortDesc: 'If holder has a Grass move, this item allows it to use a Grass Z-Move.'\n    }\n  ],\n  [\n    'grassmemory',\n    {\n      desc: \"Holder's Multi-Attack is Grass type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Grass Memory',\n      shortDesc: \"Holder's Multi-Attack is Grass type.\"\n    }\n  ],\n  [\n    'grassterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Grass Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/grassterashard.png'\n    }\n  ],\n  [\n    'grassyseed',\n    {\n      desc: \"If the terrain is Grassy Terrain, raises holder's Defense by 1 stage. Single use.\",\n      gen: 7,\n      name: 'Grassy Seed',\n      shortDesc: \"If the terrain is Grassy Terrain, raises holder's Defense by 1 stage. Single use.\"\n    }\n  ],\n  [\n    'greatball',\n    {\n      desc: 'A high-performance Ball that provides a higher catch rate than a Poké Ball.',\n      gen: 1,\n      name: 'Great Ball',\n      shortDesc: 'A high-performance Ball that provides a higher catch rate than a Poké Ball.'\n    }\n  ],\n  [\n    'greenpetal',\n    {\n      desc: \"A pressed flower petal you receive from Mallow during Mina's trial. The goal is to collect seven different kinds of petals.\",\n      gen: 7,\n      keyItem: true,\n      name: 'Green Petal',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/greenpetal.png'\n    }\n  ],\n  [\n    'greninjite',\n    {\n      desc: 'If held by a Greninja, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Greninjite',\n      shortDesc: 'If held by a Greninja, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'grepaberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      name: 'Grepa Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'gripclaw',\n    {\n      desc: \"Holder's partial-trapping moves always last 7 turns.\",\n      gen: 4,\n      name: 'Grip Claw',\n      shortDesc: \"Holder's partial-trapping moves always last 7 turns.\"\n    }\n  ],\n  [\n    'griseouscore',\n    {\n      desc: 'If held by a Giratina, its Ghost- and Dragon-type attacks have 1.2x power.',\n      gen: 8,\n      name: 'Griseous Core',\n      shortDesc: 'If held by a Giratina, its Ghost- and Dragon-type attacks have 1.2x power.'\n    }\n  ],\n  [\n    'griseousorb',\n    {\n      desc: 'If held by a Giratina, its Ghost- and Dragon-type attacks have 1.2x power.',\n      gen: 4,\n      name: 'Griseous Orb',\n      shortDesc: 'If held by a Giratina, its Ghost- and Dragon-type attacks have 1.2x power.'\n    }\n  ],\n  [\n    'groundgem',\n    {\n      desc: \"Holder's first successful Ground-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ground Gem',\n      shortDesc: \"Holder's first successful Ground-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'groundiumz',\n    {\n      desc: 'If holder has a Ground move, this item allows it to use a Ground Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Groundium Z',\n      shortDesc: 'If holder has a Ground move, this item allows it to use a Ground Z-Move.'\n    }\n  ],\n  [\n    'groundmemory',\n    {\n      desc: \"Holder's Multi-Attack is Ground type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ground Memory',\n      shortDesc: \"Holder's Multi-Attack is Ground type.\"\n    }\n  ],\n  [\n    'groundterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Ground Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/groundterashard.png'\n    }\n  ],\n  [\n    'grubbyhanky',\n    {\n      desc: 'A handkerchief dropped by a regular at Café Warehouse. It smells faintly like a Pokémon.',\n      gen: 5,\n      keyItem: true,\n      name: 'Grubby Hanky',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/grubbyhanky.png'\n    }\n  ],\n  [\n    'gsball',\n    {\n      desc: 'The mysterious BALL.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'GS Ball',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/gsball.png'\n    }\n  ],\n  [\n    'gyaradosite',\n    {\n      desc: 'If held by a Gyarados, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Gyaradosite',\n      shortDesc: 'If held by a Gyarados, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'habanberry',\n    {\n      desc: 'Halves damage taken from a supereffective Dragon-type attack. Single use.',\n      gen: 4,\n      name: 'Haban Berry',\n      shortDesc: 'Halves damage taken from a supereffective Dragon-type attack. Single use.'\n    }\n  ],\n  [\n    'hardstone',\n    {\n      desc: \"Holder's Rock-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Hard Stone',\n      shortDesc: \"Holder's Rock-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'hawluchanite',\n    {\n      desc: 'If held by a Hawlucha, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Hawluchanite',\n      shortDesc: 'If held by a Hawlucha, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'healball',\n    {\n      desc: \"A remedial Poké Ball that restores the caught Pokémon's HP and status problem.\",\n      gen: 4,\n      name: 'Heal Ball',\n      shortDesc: \"A remedial Poké Ball that restores the caught Pokémon's HP and status problem.\"\n    }\n  ],\n  [\n    'hearthflamemask',\n    {\n      desc: 'Ogerpon-Hearthflame: 1.2x power attacks; Terastallize to gain Embody Aspect.',\n      gen: 9,\n      name: 'Hearthflame Mask',\n      shortDesc: 'Ogerpon-Hearthflame: 1.2x power attacks; Terastallize to gain Embody Aspect.'\n    }\n  ],\n  [\n    'heatrock',\n    {\n      desc: \"Holder's use of Sunny Day lasts 8 turns instead of 5.\",\n      gen: 4,\n      name: 'Heat Rock',\n      shortDesc: \"Holder's use of Sunny Day lasts 8 turns instead of 5.\"\n    }\n  ],\n  [\n    'heavyball',\n    {\n      desc: 'A Poké Ball for catching very heavy Pokémon.',\n      gen: 2,\n      name: 'Heavy Ball',\n      shortDesc: 'A Poké Ball for catching very heavy Pokémon.'\n    }\n  ],\n  [\n    'heavydutyboots',\n    {\n      aliases: ['boots', 'hdb'],\n      desc: 'When switching in, the holder is unaffected by hazards on its side of the field.',\n      gen: 8,\n      name: 'Heavy-Duty Boots',\n      shortDesc: 'When switching in, the holder is unaffected by hazards on its side of the field.'\n    }\n  ],\n  [\n    'helixfossil',\n    {\n      desc: 'Can be revived into Omanyte.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Helix Fossil',\n      shortDesc: 'Can be revived into Omanyte.'\n    }\n  ],\n  [\n    'heracronite',\n    {\n      desc: 'If held by a Heracross, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Heracronite',\n      shortDesc: 'If held by a Heracross, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'hitechearbuds',\n    {\n      desc: 'Strange earbuds that allow you to freely control the volume of various sounds.',\n      gen: 8,\n      keyItem: true,\n      name: 'Hi-tech Earbuds',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/hi-techearbuds.png'\n    }\n  ],\n  [\n    'holocaster',\n    {\n      desc: \"A device that allows users to receive and view hologram clips at any time. It's also used to chat with others.\",\n      gen: 6,\n      keyItem: true,\n      name: 'Holo Caster',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/holocaster.png'\n    }\n  ],\n  [\n    'hondewberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      name: 'Hondew Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'honorofkalos',\n    {\n      desc: 'A precious symbol that is awarded only to an individual who has done great things for the Kalos region.',\n      gen: 6,\n      keyItem: true,\n      name: 'Honor of Kalos',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/honorofkalos.png'\n    }\n  ],\n  [\n    'houndoominite',\n    {\n      desc: 'If held by a Houndoom, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Houndoominite',\n      shortDesc: 'If held by a Houndoom, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'hyperpotion',\n    {\n      desc: 'A spray-type medicine for treating wounds. It can be used to restore 120 HP to a single Pokémon.',\n      gen: 1,\n      name: 'Hyper Potion'\n    }\n  ],\n  [\n    'iapapaberry',\n    {\n      desc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -Def Nature. Single use.',\n      gen: 3,\n      name: 'Iapapa Berry',\n      shortDesc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -Def Nature. Single use.'\n    }\n  ],\n  [\n    'iceberry',\n    {\n      desc: '(Gen 2) Holder is cured if it is burned. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ice Berry',\n      shortDesc: '(Gen 2) Holder is cured if it is burned. Single use.'\n    }\n  ],\n  [\n    'icegem',\n    {\n      desc: \"Holder's first successful Ice-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ice Gem',\n      shortDesc: \"Holder's first successful Ice-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'icememory',\n    {\n      desc: \"Holder's Multi-Attack is Ice type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ice Memory',\n      shortDesc: \"Holder's Multi-Attack is Ice type.\"\n    }\n  ],\n  [\n    'icestone',\n    {\n      desc: 'Evolves Alolan Sandshrew into Alolan Sandslash, Alolan Vulpix into Alolan Ninetales, Eevee into Glaceon, and Galarian Darumaka into Galarian Darmanitan when used.',\n      gen: 7,\n      name: 'Ice Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'iceterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Ice Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/iceterashard.png'\n    }\n  ],\n  [\n    'icicleplate',\n    {\n      desc: \"Holder's Ice-type attacks have 1.2x power. Judgment is Ice type.\",\n      gen: 4,\n      name: 'Icicle Plate',\n      shortDesc: \"Holder's Ice-type attacks have 1.2x power. Judgment is Ice type.\"\n    }\n  ],\n  [\n    'iciumz',\n    {\n      desc: 'If holder has an Ice move, this item allows it to use an Ice Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Icium Z',\n      shortDesc: 'If holder has an Ice move, this item allows it to use an Ice Z-Move.'\n    }\n  ],\n  [\n    'icyrock',\n    {\n      desc: \"Holder's use of Hail lasts 8 turns instead of 5.\",\n      gen: 4,\n      name: 'Icy Rock',\n      shortDesc: \"Holder's use of Snowscape lasts 8 turns instead of 5.\"\n    }\n  ],\n  [\n    'ilimasnormaliumz',\n    {\n      desc: 'The Normalium Z you were entrusted with by Ilima. You were asked to place it on the pedestal at the back of Verdant Cavern.',\n      gen: 7,\n      keyItem: true,\n      name: \"Ilima's Normalium Z\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/ilima'snormaliumz.png\"\n    }\n  ],\n  [\n    'inciniumz',\n    {\n      desc: 'If held by an Incineroar with Darkest Lariat, it can use Malicious Moonsault.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Incinium Z',\n      shortDesc: 'If held by an Incineroar with Darkest Lariat, it can use Malicious Moonsault.'\n    }\n  ],\n  [\n    'insectplate',\n    {\n      desc: \"Holder's Bug-type attacks have 1.2x power. Judgment is Bug type.\",\n      gen: 4,\n      name: 'Insect Plate',\n      shortDesc: \"Holder's Bug-type attacks have 1.2x power. Judgment is Bug type.\"\n    }\n  ],\n  [\n    'intriguingstone',\n    {\n      desc: \"A rather curious stone that might appear valuable to some. It's all in the eye of the beholder.\",\n      gen: 6,\n      keyItem: true,\n      name: 'Intriguing Stone',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/intriguingstone.png'\n    }\n  ],\n  [\n    'ironball',\n    {\n      desc: 'Holder is grounded, Speed halved. If Flying type, takes neutral Ground damage.',\n      gen: 4,\n      name: 'Iron Ball',\n      shortDesc: 'Holder is grounded, Speed halved. If Flying type, takes neutral Ground damage.'\n    }\n  ],\n  [\n    'ironplate',\n    {\n      desc: \"Holder's Steel-type attacks have 1.2x power. Judgment is Steel type.\",\n      gen: 4,\n      name: 'Iron Plate',\n      shortDesc: \"Holder's Steel-type attacks have 1.2x power. Judgment is Steel type.\"\n    }\n  ],\n  [\n    'itemfinder',\n    {\n      desc: 'A device used for finding items. If there is a hidden item nearby when it is used, it emits a signal.',\n      gen: 1,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'itemfinder',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/itemfinder.png'\n    }\n  ],\n  [\n    'jabocaberry',\n    {\n      desc: 'If holder is hit by a physical move, attacker loses 1/8 of its max HP. Single use.',\n      gen: 4,\n      name: 'Jaboca Berry',\n      shortDesc: 'If holder is hit by a physical move, attacker loses 1/8 of its max HP. Single use.'\n    }\n  ],\n  [\n    'jadeorb',\n    {\n      desc: \"A shiny green orb that is said to have a legend tied to it. It's known to have a deep connection with the Hoenn region.\",\n      gen: 4,\n      keyItem: true,\n      name: 'Jade Orb',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/jadeorb.png'\n    }\n  ],\n  [\n    'jawfossil',\n    {\n      desc: 'Can be revived into Tyrunt.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Jaw Fossil',\n      shortDesc: 'Can be revived into Tyrunt.'\n    }\n  ],\n  [\n    'journal',\n    {\n      desc: 'A notebook that keeps a day-to-day record of your adventure so far.',\n      gen: 4,\n      keyItem: true,\n      name: 'journal',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/journal.png'\n    }\n  ],\n  [\n    'kangaskhanite',\n    {\n      desc: 'If held by a Kangaskhan, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Kangaskhanite',\n      shortDesc: 'If held by a Kangaskhan, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'kasibberry',\n    {\n      desc: 'Halves damage taken from a supereffective Ghost-type attack. Single use.',\n      gen: 4,\n      name: 'Kasib Berry',\n      shortDesc: 'Halves damage taken from a supereffective Ghost-type attack. Single use.'\n    }\n  ],\n  [\n    'kebiaberry',\n    {\n      desc: 'Halves damage taken from a supereffective Poison-type attack. Single use.',\n      gen: 4,\n      name: 'Kebia Berry',\n      shortDesc: 'Halves damage taken from a supereffective Poison-type attack. Single use.'\n    }\n  ],\n  [\n    'keeberry',\n    {\n      desc: \"Raises holder's Defense by 1 stage after it is hit by a physical attack. Single use.\",\n      gen: 6,\n      name: 'Kee Berry',\n      shortDesc: \"Raises holder's Defense by 1 stage after it is hit by a physical attack. Single use.\"\n    }\n  ],\n  [\n    'kelpsyberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      name: 'Kelpsy Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'keystone',\n    {\n      desc: 'A stone filled with an unexplained power. It makes Pokémon that battle with a Mega Stone Mega Evolve.',\n      gen: 6,\n      keyItem: true,\n      name: 'Key Stone',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/keystone.png'\n    }\n  ],\n  [\n    'keytoroom1',\n    {\n      desc: 'A key that opens a door inside Sea Mauville',\n      gen: 6,\n      keyItem: true,\n      name: 'Key to Room 1',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/keytoroom1.png'\n    }\n  ],\n  [\n    'keytoroom2',\n    {\n      desc: 'A key that opens a door inside Sea Mauville',\n      gen: 6,\n      keyItem: true,\n      name: 'Key to Room 2',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/keytoroom2.png'\n    }\n  ],\n  [\n    'keytoroom4',\n    {\n      desc: 'A key that opens a door inside Sea Mauville',\n      gen: 6,\n      keyItem: true,\n      name: 'Key to Room 4',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/keytoroom4.png'\n    }\n  ],\n  [\n    'keytoroom6',\n    {\n      desc: 'A key that opens a door inside Sea Mauville',\n      gen: 6,\n      keyItem: true,\n      name: 'Key to Room 6',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/keytoroom6.png'\n    }\n  ],\n  [\n    'kingsrock',\n    {\n      desc: \"Holder's attacks without a chance to make the target flinch gain a 10% chance to make the target flinch. Evolves Poliwhirl into Politoed and Slowpoke into Slowking when traded.\",\n      gen: 2,\n      name: \"King's Rock\",\n      shortDesc: \"Holder's attacks without a chance to flinch gain a 10% chance to flinch.\"\n    }\n  ],\n  [\n    'kofuswallet',\n    {\n      desc: \"A wallet that was left behind by Kofu, the Gym Leader at the Cascarrafa Gym. You're to deliver it to him at the market in Porto Marinada.\",\n      gen: 9,\n      keyItem: true,\n      name: \"Kofu's Wallet\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/kofu'swallet.png\"\n    }\n  ],\n  [\n    'kommoniumz',\n    {\n      desc: 'If held by a Kommo-o with Clanging Scales, it can use Clangorous Soulblaze.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Kommonium Z',\n      shortDesc: 'If held by a Kommo-o with Clanging Scales, it can use Clangorous Soulblaze.'\n    }\n  ],\n  [\n    'koraidonspokeball',\n    {\n      desc: 'A Poké Ball that can hold the mysterious Pokémon known as Koraidon. A boy named Arven gave it to you.',\n      gen: 9,\n      keyItem: true,\n      name: \"Koraidon's Poké Ball\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/koraidon'spokeball.png\"\n    }\n  ],\n  [\n    'laggingtail',\n    {\n      desc: 'Holder moves last in its priority bracket.',\n      gen: 4,\n      name: 'Lagging Tail',\n      shortDesc: 'Holder moves last in its priority bracket.'\n    }\n  ],\n  [\n    'lansatberry',\n    {\n      desc: 'Holder gains the Focus Energy effect when at 1/4 max HP or less. Single use.',\n      gen: 3,\n      name: 'Lansat Berry',\n      shortDesc: 'Holder gains the Focus Energy effect when at 1/4 max HP or less. Single use.'\n    }\n  ],\n  [\n    'latiasite',\n    {\n      desc: 'If held by a Latias, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Latiasite',\n      shortDesc: 'If held by a Latias, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'latiosite',\n    {\n      desc: 'If held by a Latios, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Latiosite',\n      shortDesc: 'If held by a Latios, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'laxincense',\n    {\n      desc: 'The accuracy of attacks against the holder is 0.9x.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Lax Incense',\n      shortDesc: 'The accuracy of attacks against the holder is 0.9x.'\n    }\n  ],\n  [\n    'leafstone',\n    {\n      desc: 'Evolves Gloom into Vileplume, Weepinbell into Victreebel, Exeggcute into Exeggutor or Alolan Exeggutor, Eevee into Leafeon, Nuzleaf into Shiftry, and Pansage into Simisage when used.',\n      gen: 1,\n      name: 'Leaf Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'leek',\n    {\n      desc: 'If held by a Farfetch’d or Sirfetch’d, its critical hit ratio is raised by 2 stages.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Leek',\n      shortDesc: 'If held by a Farfetch’d or Sirfetch’d, its critical hit ratio is raised by 2 stages.'\n    }\n  ],\n  [\n    'leftovers',\n    {\n      aliases: ['lefties'],\n      desc: 'At the end of every turn, holder restores 1/16 of its max HP.',\n      gen: 2,\n      name: 'Leftovers',\n      shortDesc: 'At the end of every turn, holder restores 1/16 of its max HP.'\n    }\n  ],\n  [\n    'leftpokeball',\n    {\n      desc: \"A Poké Ball with a Pokémon that lost its Trainer inside. It seems to be from Ula'ula Island.\",\n      gen: 7,\n      keyItem: true,\n      name: 'Left Poké Ball',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/leftpokeball.png'\n    }\n  ],\n  [\n    'legendplate',\n    {\n      desc: 'A stone tablet imbued with the essence of all creation. When used on a certain Pokémon, it allows that Pokémon to gain the power of every type there is.',\n      gen: 8,\n      keyItem: true,\n      name: 'Legend Plate',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/legendplate.png'\n    }\n  ],\n  [\n    'lenscase',\n    {\n      desc: 'A rather chic-looking case for carrying contact lenses.',\n      gen: 6,\n      keyItem: true,\n      name: 'Lens Case',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/lenscase.png'\n    }\n  ],\n  [\n    'leppaberry',\n    {\n      aliases: ['leppa'],\n      desc: \"Restores 10 PP to the first of the holder's moves to reach 0 PP. Single use.\",\n      gen: 3,\n      name: 'Leppa Berry',\n      shortDesc: \"Restores 10 PP to the first of the holder's moves to reach 0 PP. Single use.\"\n    }\n  ],\n  [\n    'letter',\n    {\n      desc: 'An extremely important letter to Steven from the President of Devon Corporation.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Letter',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/letter.png'\n    }\n  ],\n  [\n    'levelball',\n    {\n      desc: 'A Poké Ball for catching Pokémon that are a lower level than your own.',\n      gen: 2,\n      name: 'Level Ball',\n      shortDesc: 'A Poké Ball for catching Pokémon that are a lower level than your own.'\n    }\n  ],\n  [\n    'libertypass',\n    {\n      desc: 'A special pass to go to Liberty Garden. Board the ship in Castelia City.',\n      gen: 5,\n      keyItem: true,\n      name: 'Liberty Pass',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/libertypass.png'\n    }\n  ],\n  [\n    'liechiberry',\n    {\n      desc: \"Raises holder's Attack by 1 stage when at 1/4 max HP or less. Single use.\",\n      gen: 3,\n      name: 'Liechi Berry',\n      shortDesc: \"Raises holder's Attack by 1 stage when at 1/4 max HP or less. Single use.\"\n    }\n  ],\n  [\n    'lifeorb',\n    {\n      aliases: ['lo', 'lorb'],\n      desc: \"Holder's attacks do 1.3x damage, and it loses 1/10 its max HP after the attack.\",\n      gen: 4,\n      name: 'Life Orb',\n      shortDesc: \"Holder's attacks do 1.3x damage, and it loses 1/10 its max HP after the attack.\"\n    }\n  ],\n  [\n    'liftkey',\n    {\n      desc: 'A key that operates the elevator in the Team Rocket Hideout. It bears the Team Rocket logo.',\n      gen: 1,\n      keyItem: true,\n      name: 'Lift Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/liftkey.png'\n    }\n  ],\n  [\n    'lightball',\n    {\n      desc: 'If held by a Pikachu, its Attack and Sp. Atk are doubled.',\n      gen: 2,\n      name: 'Light Ball',\n      shortDesc: 'If held by a Pikachu, its Attack and Sp. Atk are doubled.'\n    }\n  ],\n  [\n    'lightclay',\n    {\n      desc: \"Holder's use of Aurora Veil, Light Screen, or Reflect lasts 8 turns instead of 5.\",\n      gen: 4,\n      name: 'Light Clay',\n      shortDesc: \"Holder's use of Aurora Veil, Light Screen, or Reflect lasts 8 turns instead of 5.\"\n    }\n  ],\n  [\n    'lightstone',\n    {\n      desc: \"Reshiram's body was destroyed and changed into this stone. It is said to be waiting for the emergence of a hero.\",\n      gen: 5,\n      keyItem: true,\n      name: 'Light Stone',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/lightstone.png'\n    }\n  ],\n  [\n    'loadeddice',\n    {\n      desc: \"The holder's moves that normally hit 2 to 5 times instead hit 4 or 5 times. If the first hit is successful, the holder's use of Triple Kick or Triple Axel hits 3 times, and Population Bomb hits 4 to 10 times, at random.\",\n      gen: 9,\n      name: 'Loaded Dice',\n      shortDesc: \"Holder's moves that hit 2-5 times hit 4-5 times; Population Bomb hits 4-10 times.\"\n    }\n  ],\n  [\n    'lockcapsule',\n    {\n      desc: 'A sturdy Capsule that can only be opened with a special key.',\n      gen: 4,\n      keyItem: true,\n      name: 'Lock Capsule',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/lockcapsule.png'\n    }\n  ],\n  [\n    'lookerticket',\n    {\n      desc: \"A ticket that was handmade by Looker. It's decorated with a liberal amount of glittery paint.\",\n      gen: 6,\n      keyItem: true,\n      name: 'Looker Ticket',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/lookerticket.png'\n    }\n  ],\n  [\n    'lootsack',\n    {\n      desc: 'A sturdy, spacious bag that is used to carry any treasures or loot obtained in the coal mine.',\n      gen: 4,\n      keyItem: true,\n      name: 'Loot Sack',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/lootsack.png'\n    }\n  ],\n  [\n    'lopunnite',\n    {\n      desc: 'If held by a Lopunny, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Lopunnite',\n      shortDesc: 'If held by a Lopunny, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'lostitem',\n    {\n      desc: 'The Clefairy doll that was lost by the Copycat.',\n      gen: 2,\n      keyItem: true,\n      name: 'Lost Item',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/lostitem.png'\n    }\n  ],\n  [\n    'loveball',\n    {\n      desc: 'Poké Ball for catching Pokémon that are the opposite gender of your Pokémon.',\n      gen: 2,\n      name: 'Love Ball',\n      shortDesc: 'Poké Ball for catching Pokémon that are the opposite gender of your Pokémon.'\n    }\n  ],\n  [\n    'lovesweet',\n    {\n      desc: 'Evolves Milcery into Alcremie when held and spun around.',\n      gen: 8,\n      name: 'Love Sweet',\n      shortDesc: 'Evolves Milcery into Alcremie when held and spun around.'\n    }\n  ],\n  [\n    'lucarionite',\n    {\n      desc: 'If held by a Lucario, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Lucarionite',\n      shortDesc: 'If held by a Lucario, this item allows it to Mega Evolve into Mega Lucario in battle.'\n    }\n  ],\n  [\n    'luckypunch',\n    {\n      desc: 'If held by a Chansey, its critical hit ratio is raised by 2 stages.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Lucky Punch',\n      shortDesc: 'If held by a Chansey, its critical hit ratio is raised by 2 stages.'\n    }\n  ],\n  [\n    'lumberry',\n    {\n      aliases: ['lum'],\n      desc: 'Holder cures itself if it has a non-volatile status or is confused. Single use.',\n      gen: 3,\n      name: 'Lum Berry',\n      shortDesc: 'Holder cures itself if it has a non-volatile status or is confused. Single use.'\n    }\n  ],\n  [\n    'luminousmoss',\n    {\n      desc: \"Raises holder's Sp. Def by 1 stage if hit by a Water-type attack. Single use.\",\n      gen: 6,\n      name: 'Luminous Moss',\n      shortDesc: \"Raises holder's Sp. Def by 1 stage if hit by a Water-type attack. Single use.\"\n    }\n  ],\n  [\n    'lunaliumz',\n    {\n      desc: 'Lunala or Dawn Wings Necrozma with Moongeist Beam can use a special Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Lunalium Z',\n      shortDesc: 'Lunala or Dawn Wings Necrozma with Moongeist Beam can use a special Z-Move.'\n    }\n  ],\n  [\n    'lunarwing',\n    {\n      desc: \"A feather that glows like the moon. It's said to possess the power to dispel nightmares.\",\n      gen: 4,\n      keyItem: true,\n      name: 'Lunar Wing',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/lunarwing.png'\n    }\n  ],\n  [\n    'lureball',\n    {\n      desc: 'A Poké Ball for catching Pokémon hooked by a Rod when fishing.',\n      gen: 2,\n      name: 'Lure Ball',\n      shortDesc: 'A Poké Ball for catching Pokémon hooked by a Rod when fishing.'\n    }\n  ],\n  [\n    'lustrousglobe',\n    {\n      desc: 'If held by a Palkia, its Water- and Dragon-type attacks have 1.2x power.',\n      gen: 8,\n      name: 'Lustrous Globe',\n      shortDesc: 'If held by a Palkia, its Water- and Dragon-type attacks have 1.2x power.'\n    }\n  ],\n  [\n    'lustrousorb',\n    {\n      desc: 'If held by a Palkia, its Water- and Dragon-type attacks have 1.2x power.',\n      gen: 4,\n      name: 'Lustrous Orb',\n      shortDesc: 'If held by a Palkia, its Water- and Dragon-type attacks have 1.2x power.'\n    }\n  ],\n  [\n    'luxuryball',\n    {\n      desc: 'A comfortable Poké Ball that makes a caught wild Pokémon quickly grow friendly.',\n      gen: 3,\n      name: 'Luxury Ball',\n      shortDesc: 'A comfortable Poké Ball that makes a caught wild Pokémon quickly grow friendly.'\n    }\n  ],\n  [\n    'lycaniumz',\n    {\n      desc: 'If held by a Lycanroc forme with Stone Edge, it can use Splintered Stormshards.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Lycanium Z',\n      shortDesc: 'If held by a Lycanroc forme with Stone Edge, it can use Splintered Stormshards.'\n    }\n  ],\n  [\n    'machbike',\n    {\n      desc: 'This folding Bike more than doubles your movement speed.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Mach Bike',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/machbike.png'\n    }\n  ],\n  [\n    'machinepart',\n    {\n      desc: 'An important part of a machine that was stolen from the Power Plant.',\n      gen: 2,\n      keyItem: true,\n      name: 'Machine Part',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/machinepart.png'\n    }\n  ],\n  [\n    'machobrace',\n    {\n      desc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\",\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Macho Brace',\n      shortDesc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\"\n    }\n  ],\n  [\n    'magmaemblem',\n    {\n      desc: \"A medal-like item in the same shape as Team Magma's mark.\",\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Magma Emblem',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/magmaemblem.png'\n    }\n  ],\n  [\n    'magmarizer',\n    {\n      desc: 'Evolves Magmar into Magmortar when traded.',\n      gen: 4,\n      name: 'Magmarizer',\n      shortDesc: 'Evolves Magmar into Magmortar when traded.'\n    }\n  ],\n  [\n    'magmastone',\n    {\n      desc: 'A stone formed by boulders melting in intensely hot magma, then hardening. Magma remains sealed inside it.',\n      gen: 4,\n      keyItem: true,\n      name: 'Magma Stone',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/magmastone.png'\n    }\n  ],\n  [\n    'magmasuit',\n    {\n      desc: 'A suit made with the collective technological know-how of Team Magma. It can withstand any impact.',\n      gen: 6,\n      keyItem: true,\n      name: 'Magma Suit',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/magmasuit.png'\n    }\n  ],\n  [\n    'magnet',\n    {\n      desc: \"Holder's Electric-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Magnet',\n      shortDesc: \"Holder's Electric-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'magoberry',\n    {\n      desc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -Spe Nature. Single use.',\n      gen: 3,\n      name: 'Mago Berry',\n      shortDesc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -Spe Nature. Single use.'\n    }\n  ],\n  [\n    'magostberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Magost Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'mail',\n    {\n      desc: 'Cannot be given to or taken from a Pokémon, except by Covet/Knock Off/Thief.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mail',\n      shortDesc: 'Cannot be given to or taken from a Pokémon, except by Covet/Knock Off/Thief.'\n    }\n  ],\n  [\n    'makeupbag',\n    {\n      desc: 'A rather chic-looking case for carrying lipsticks.',\n      gen: 7,\n      keyItem: true,\n      name: 'Make-Up Bag',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/make-upbag.png'\n    }\n  ],\n  [\n    'malamarite',\n    {\n      desc: 'If held by a Malamar, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Malamarite',\n      shortDesc: 'If held by a Malamar, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'maliciousarmor',\n    {\n      desc: 'Evolves Charcadet into Ceruledge when used.',\n      gen: 9,\n      name: 'Malicious Armor',\n      shortDesc: 'Evolves Charcadet into Ceruledge when used.'\n    }\n  ],\n  [\n    'manectite',\n    {\n      desc: 'If held by a Manectric, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Manectite',\n      shortDesc: 'If held by a Manectric, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'marangaberry',\n    {\n      desc: \"Raises holder's Sp. Def by 1 stage after it is hit by a special attack. Single use.\",\n      gen: 6,\n      name: 'Maranga Berry',\n      shortDesc: \"Raises holder's Sp. Def by 1 stage after it is hit by a special attack. Single use.\"\n    }\n  ],\n  [\n    'marshadiumz',\n    {\n      desc: 'If held by Marshadow with Spectral Thief, it can use Soul-Stealing 7-Star Strike.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Marshadium Z',\n      shortDesc: 'If held by Marshadow with Spectral Thief, it can use Soul-Stealing 7-Star Strike.'\n    }\n  ],\n  [\n    'masterball',\n    {\n      desc: 'The best Ball with the ultimate performance. It will catch any wild Pokémon.',\n      gen: 1,\n      name: 'Master Ball',\n      shortDesc: 'The best Ball with the ultimate performance. It will catch any wild Pokémon.'\n    }\n  ],\n  [\n    'masterpieceteacup',\n    {\n      desc: 'Evolves Poltchageist-Artisan into Sinistcha-Masterpiece when used.',\n      gen: 9,\n      name: 'Masterpiece Teacup',\n      shortDesc: 'Evolves Poltchageist-Artisan into Sinistcha-Masterpiece when used.'\n    }\n  ],\n  [\n    'mawilite',\n    {\n      desc: 'If held by a Mawile, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mawilite',\n      shortDesc: 'If held by a Mawile, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'maxpotion',\n    {\n      desc: 'A spray-type medicine for treating wounds. It can be used to completely restore the max HP of a single Pokémon.',\n      gen: 1,\n      name: 'Max Potion'\n    }\n  ],\n  [\n    'meadowplate',\n    {\n      desc: \"Holder's Grass-type attacks have 1.2x power. Judgment is Grass type.\",\n      gen: 4,\n      name: 'Meadow Plate',\n      shortDesc: \"Holder's Grass-type attacks have 1.2x power. Judgment is Grass type.\"\n    }\n  ],\n  [\n    'medalbox',\n    {\n      desc: 'A box-shaped machine that stores Medals and Medal information.',\n      gen: 5,\n      keyItem: true,\n      name: 'Medal Box',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/medalbox.png'\n    }\n  ],\n  [\n    'medichamite',\n    {\n      desc: 'If held by a Medicham, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Medichamite',\n      shortDesc: 'If held by a Medicham, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'megabracelet',\n    {\n      desc: 'This cuff contains an untold power that somehow enables Pokémon carrying a Mega Stone to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Mega Bracelet',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/megabracelet.png'\n    }\n  ],\n  [\n    'meganiumite',\n    {\n      desc: 'If held by a Meganium, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Meganiumite',\n      shortDesc: 'If held by a Meganium, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'megaring',\n    {\n      desc: 'This ring contains an untold power that somehow enables Pokémon carrying a Mega Stone to Mega Evolve in battle.',\n      gen: 6,\n      keyItem: true,\n      name: 'Mega Ring',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/megaring.png'\n    }\n  ],\n  [\n    'membercard',\n    {\n      desc: 'A card needed for entering the inn in Canalave City. Oddly, the last date marked on it was 50 years ago.',\n      gen: 4,\n      keyItem: true,\n      name: 'Member Card',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/membercard.png'\n    }\n  ],\n  [\n    'mentalherb',\n    {\n      desc: 'Cures holder of Attract, Disable, Encore, Heal Block, Taunt, Torment. Single use.',\n      gen: 3,\n      name: 'Mental Herb',\n      shortDesc: 'Cures holder of Attract, Disable, Encore, Heal Block, Taunt, Torment. Single use.'\n    }\n  ],\n  [\n    'metagrossite',\n    {\n      desc: 'If held by a Metagross, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Metagrossite',\n      shortDesc: 'If held by a Metagross, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'metalalloy',\n    {\n      desc: 'Evolves Duraludon into Archaludon when used.',\n      gen: 9,\n      name: 'Metal Alloy',\n      shortDesc: 'Evolves Duraludon into Archaludon when used.'\n    }\n  ],\n  [\n    'metalcoat',\n    {\n      desc: \"Holder's Steel-type attacks have 1.2x power. Evolves Onix into Steelix and Scyther into Scizor when traded.\",\n      gen: 2,\n      name: 'Metal Coat',\n      shortDesc: \"Holder's Steel-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'metalpowder',\n    {\n      desc: \"If held by a Ditto that hasn't Transformed, its Defense is doubled.\",\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Metal Powder',\n      shortDesc: \"If held by a Ditto that hasn't Transformed, its Defense is doubled.\"\n    }\n  ],\n  [\n    'meteorite',\n    {\n      desc: \"A meteorite that you got at Mt. Chimney. Some sort of pattern has risen to the surface, and it's shining with seven colors of light.\",\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Meteorite',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/meteorite.png'\n    }\n  ],\n  [\n    'meteoriteshard',\n    {\n      desc: \"One of the fragments of a Meteorite from Granite Cave. It's faintly warm to the touch.\",\n      gen: 6,\n      keyItem: true,\n      name: 'Meteorite Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/meteoriteshard.png'\n    }\n  ],\n  [\n    'metronome',\n    {\n      desc: 'Damage of moves used on consecutive turns is increased. Max 2x after 5 turns.',\n      gen: 4,\n      name: 'Metronome',\n      shortDesc: 'Damage of moves used on consecutive turns is increased. Max 2x after 5 turns.'\n    }\n  ],\n  [\n    'mewniumz',\n    {\n      desc: 'If held by a Mew with Psychic, it can use Genesis Supernova.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mewnium Z',\n      shortDesc: 'If held by a Mew with Psychic, it can use Genesis Supernova.'\n    }\n  ],\n  [\n    'mewtwonitex',\n    {\n      desc: 'If held by a Mewtwo, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mewtwonite X',\n      shortDesc: 'If held by a Mewtwo, this item allows it to Mega Evolve into Mega Mewtwo X in battle.'\n    }\n  ],\n  [\n    'mewtwonitey',\n    {\n      desc: 'If held by a Mewtwo, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mewtwonite Y',\n      shortDesc: 'If held by a Mewtwo, this item allows it to Mega Evolve into Mega Mewtwo Y in battle.'\n    }\n  ],\n  [\n    'micleberry',\n    {\n      desc: \"Holder's next move has 1.2x accuracy when at 1/4 max HP or less. Single use.\",\n      gen: 4,\n      name: 'Micle Berry',\n      shortDesc: \"Holder's next move has 1.2x accuracy when at 1/4 max HP or less. Single use.\"\n    }\n  ],\n  [\n    'mimikiumz',\n    {\n      desc: \"If held by a Mimikyu with Play Rough, it can use Let's Snuggle Forever.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mimikium Z',\n      shortDesc: \"If held by a Mimikyu with Play Rough, it can use Let's Snuggle Forever.\"\n    }\n  ],\n  [\n    'mindplate',\n    {\n      desc: \"Holder's Psychic-type attacks have 1.2x power. Judgment is Psychic type.\",\n      gen: 4,\n      name: 'Mind Plate',\n      shortDesc: \"Holder's Psychic-type attacks have 1.2x power. Judgment is Psychic type.\"\n    }\n  ],\n  [\n    'mintberry',\n    {\n      desc: '(Gen 2) Holder wakes up if it is asleep. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mint Berry',\n      shortDesc: '(Gen 2) Holder wakes up if it is asleep. Single use.'\n    }\n  ],\n  [\n    'miracleberry',\n    {\n      desc: '(Gen 2) Holder cures itself if it is confused or has a status condition. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Miracle Berry',\n      shortDesc: '(Gen 2) Holder cures itself if it is confused or has a status condition. Single use.'\n    }\n  ],\n  [\n    'miracleseed',\n    {\n      desc: \"Holder's Grass-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Miracle Seed',\n      shortDesc: \"Holder's Grass-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'miraidonspokeball',\n    {\n      desc: 'A Poké Ball that can hold the mysterious Pokémon known as Miraidon. A boy named Arven gave it to you.',\n      gen: 9,\n      keyItem: true,\n      name: \"Miraidon's Poké Ball\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/miraidon'spokeball.png\"\n    }\n  ],\n  [\n    'mirrorherb',\n    {\n      desc: 'When an opposing Pokémon raises a stat stage, the holder copies it. Single use.',\n      gen: 9,\n      name: 'Mirror Herb',\n      shortDesc: 'When an opposing Pokémon raises a stat stage, the holder copies it. Single use.'\n    }\n  ],\n  [\n    'mistyseed',\n    {\n      desc: \"If the terrain is Misty Terrain, raises holder's Sp. Def by 1 stage. Single use.\",\n      gen: 7,\n      name: 'Misty Seed',\n      shortDesc: \"If the terrain is Misty Terrain, raises holder's Sp. Def by 1 stage. Single use.\"\n    }\n  ],\n  [\n    'moonball',\n    {\n      desc: 'A Poké Ball for catching Pokémon that evolve using the Moon Stone.',\n      gen: 2,\n      name: 'Moon Ball',\n      shortDesc: 'A Poké Ball for catching Pokémon that evolve using the Moon Stone.'\n    }\n  ],\n  [\n    'moonflute',\n    {\n      desc: 'It is said that the tones it produces were offered up as an expression of gratitude to the Legendary Pokémon of the moon.',\n      gen: 7,\n      keyItem: true,\n      name: 'Moon Flute',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/moonflute.png'\n    }\n  ],\n  [\n    'moonstone',\n    {\n      desc: 'Evolves Nidorina into Nidoqueen, Nidorino into Nidoking, Clefairy into Clefable, Jigglypuff into Wigglytuff, Skitty into Delcatty, and Munna into Musharna when used.',\n      gen: 1,\n      name: 'Moon Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'muscleband',\n    {\n      desc: \"Holder's physical attacks have 1.1x power.\",\n      gen: 4,\n      name: 'Muscle Band',\n      shortDesc: \"Holder's physical attacks have 1.1x power.\"\n    }\n  ],\n  [\n    'mysteryberry',\n    {\n      desc: \"(Gen 2) Restores 5 PP to the first of the holder's moves to reach 0 PP. Single use.\",\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mystery Berry',\n      shortDesc: \"(Gen 2) Restores 5 PP to the first of the holder's moves to reach 0 PP. Single use.\"\n    }\n  ],\n  [\n    'mysteryegg',\n    {\n      desc: \"A mysterious Egg obtained from Mr. Pokémon. What's in the Egg is unknown.\",\n      gen: 2,\n      keyItem: true,\n      name: 'Mystery Egg',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/mysteryegg.png'\n    }\n  ],\n  [\n    'mysticticket',\n    {\n      desc: 'A ticket required to board the ship to Navel Rock. It glows with a mystic light.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'MysticTicket',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/mysticticket.png'\n    }\n  ],\n  [\n    'mysticwater',\n    {\n      desc: \"Holder's Water-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Mystic Water',\n      shortDesc: \"Holder's Water-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'nanabberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Nanab Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'nestball',\n    {\n      desc: 'A Poké Ball that works especially well on weaker Pokémon in the wild.',\n      gen: 3,\n      name: 'Nest Ball',\n      shortDesc: 'A Poké Ball that works especially well on weaker Pokémon in the wild.'\n    }\n  ],\n  [\n    'netball',\n    {\n      desc: 'A Poké Ball that works especially well on Water- and Bug-type Pokémon.',\n      gen: 3,\n      name: 'Net Ball',\n      shortDesc: 'A Poké Ball that works especially well on Water- and Bug-type Pokémon.'\n    }\n  ],\n  [\n    'nevermeltice',\n    {\n      desc: \"Holder's Ice-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Never-Melt Ice',\n      shortDesc: \"Holder's Ice-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'nlunarizer',\n    {\n      desc: 'A machine to fuse and separate Necrozma, which needs light, and Lunala.',\n      gen: 7,\n      keyItem: true,\n      name: 'N-Lunarizer',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/n-lunarizer.png'\n    }\n  ],\n  [\n    'nomelberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Nomel Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'normalgem',\n    {\n      desc: \"Holder's first successful Normal-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      name: 'Normal Gem',\n      shortDesc: \"Holder's first successful Normal-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'normaliumz',\n    {\n      desc: 'If holder has a Normal move, this item allows it to use a Normal Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Normalium Z',\n      shortDesc: 'If holder has a Normal move, this item allows it to use a Normal Z-Move.'\n    }\n  ],\n  [\n    'normalterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Normal Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/normalterashard.png'\n    }\n  ],\n  [\n    'nsolarizer',\n    {\n      desc: 'A machine to fuse and separate Necrozma, which needs light, and Solgaleo.',\n      gen: 7,\n      name: 'N-Solarizer',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/n-solarizer.png'\n    }\n  ],\n  [\n    'oaksletter',\n    {\n      desc: 'A letter from Professor Oak. Written in it is a request for you to go to Route 224.',\n      gen: 4,\n      keyItem: true,\n      name: \"Oak's Letter\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/oak'sletter.png\"\n    }\n  ],\n  [\n    'oaksparcel',\n    {\n      desc: \"A parcel to be delivered to Prof. Oak from Viridian City's Pokémon Mart.\",\n      gen: 1,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: \"Oak's Parcel\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/oak'sparcel.png\"\n    }\n  ],\n  [\n    'occaberry',\n    {\n      aliases: ['occa'],\n      desc: 'Halves damage taken from a supereffective Fire-type attack. Single use.',\n      gen: 4,\n      name: 'Occa Berry',\n      shortDesc: 'Halves damage taken from a supereffective Fire-type attack. Single use.'\n    }\n  ],\n  [\n    'oddincense',\n    {\n      desc: \"Holder's Psychic-type attacks have 1.2x power.\",\n      gen: 4,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Odd Incense',\n      shortDesc: \"Holder's Psychic-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'oldamber',\n    {\n      desc: 'Can be revived into Aerodactyl.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Old Amber',\n      shortDesc: 'Can be revived into Aerodactyl.'\n    }\n  ],\n  [\n    'oldcharm',\n    {\n      desc: 'An ancient good-luck charm made of Pokémon bones to be taken to the elder of Celestic Town.',\n      gen: 4,\n      keyItem: true,\n      name: 'Old Charm',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/oldcharm.png'\n    }\n  ],\n  [\n    'oldletter',\n    {\n      desc: 'A letter entrusted to you by a girl, to be delivered to a boy. Strangely, it looks old to you.',\n      gen: 8,\n      keyItem: true,\n      name: 'Old Letter',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/oldletter.png'\n    }\n  ],\n  [\n    'oldrod',\n    {\n      desc: 'An old and beat-up fishing rod. Use it at any body of water to fish for wild aquatic Pokémon.',\n      gen: 1,\n      keyItem: true,\n      name: 'Old Rod',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/oldrod.png'\n    }\n  ],\n  [\n    'oldseamap',\n    {\n      desc: 'A chart that can take you to Faraway Island.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Old Sea Map',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/oldseamap.png'\n    }\n  ],\n  [\n    'oranberry',\n    {\n      desc: 'Restores 10 HP when at 1/2 max HP or less. Single use.',\n      gen: 3,\n      name: 'Oran Berry',\n      shortDesc: 'Restores 10 HP when at 1/2 max HP or less. Single use.'\n    }\n  ],\n  [\n    'orangepetal',\n    {\n      desc: \"A pressed flower petal you receive from Ilima during Mina's trial. The goal is to collect seven different kinds of petals.\",\n      gen: 7,\n      keyItem: true,\n      name: 'Orange Petal',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/orangepetal.png'\n    }\n  ],\n  [\n    'ovalcharm',\n    {\n      desc: 'An oval charm said to increase the chance of Pokémon Eggs being found at the Nursery.',\n      gen: 5,\n      keyItem: true,\n      name: 'Oval Charm',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/ovalcharm.png'\n    }\n  ],\n  [\n    'ovalstone',\n    {\n      desc: 'Evolves Happiny into Chansey when held and leveled up during the day.',\n      gen: 4,\n      name: 'Oval Stone',\n      shortDesc: 'Evolves Happiny into Chansey when held and leveled up during the day.'\n    }\n  ],\n  [\n    'pairoftickets',\n    {\n      desc: 'Tickets for two to the astronomical show being held at the Mossdeep Space Center.',\n      gen: 6,\n      keyItem: true,\n      name: 'Pair of Tickets',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pairoftickets.png'\n    }\n  ],\n  [\n    'palpad',\n    {\n      desc: 'A convenient notepad that is used to register your friends and friend codes and keep a record of your gameplay.',\n      gen: 4,\n      keyItem: true,\n      name: 'palpad',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/palpad.png'\n    }\n  ],\n  [\n    'pamtreberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Pamtre Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'parcel',\n    {\n      desc: \"A parcel entrusted into your care. You're supposed to deliver it to your childhood friend who left Twinleaf Town.\",\n      gen: 4,\n      keyItem: true,\n      name: 'Parcel',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/parcel.png'\n    }\n  ],\n  [\n    'parkball',\n    {\n      desc: 'A special Poké Ball for the Pal Park.',\n      gen: 4,\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Park Ball',\n      shortDesc: 'A special Poké Ball for the Pal Park.'\n    }\n  ],\n  [\n    'pass',\n    {\n      desc: \"A pass required for riding the Magnet Train. It allows you to ride whenever and however much you'd like.\",\n      gen: 2,\n      keyItem: true,\n      name: 'Pass',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pass.png'\n    }\n  ],\n  [\n    'passhoberry',\n    {\n      desc: 'Halves damage taken from a supereffective Water-type attack. Single use.',\n      gen: 4,\n      name: 'Passho Berry',\n      shortDesc: 'Halves damage taken from a supereffective Water-type attack. Single use.'\n    }\n  ],\n  [\n    'payapaberry',\n    {\n      desc: 'Halves damage taken from a supereffective Psychic-type attack. Single use.',\n      gen: 4,\n      name: 'Payapa Berry',\n      shortDesc: 'Halves damage taken from a supereffective Psychic-type attack. Single use.'\n    }\n  ],\n  [\n    'pechaberry',\n    {\n      desc: 'Holder is cured if it is poisoned. Single use.',\n      gen: 3,\n      name: 'Pecha Berry',\n      shortDesc: 'Holder is cured if it is poisoned. Single use.'\n    }\n  ],\n  [\n    'permit',\n    {\n      desc: 'A permit that is needed to enter the Nature Preserve. Not many know about it.',\n      gen: 5,\n      keyItem: true,\n      name: 'Permit',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/permit.png'\n    }\n  ],\n  [\n    'persimberry',\n    {\n      desc: 'Holder is cured if it is confused. Single use.',\n      gen: 3,\n      name: 'Persim Berry',\n      shortDesc: 'Holder is cured if it is confused. Single use.'\n    }\n  ],\n  [\n    'petayaberry',\n    {\n      aliases: ['petaya'],\n      desc: \"Raises holder's Sp. Atk by 1 stage when at 1/4 max HP or less. Single use.\",\n      gen: 3,\n      name: 'Petaya Berry',\n      shortDesc: \"Raises holder's Sp. Atk by 1 stage when at 1/4 max HP or less. Single use.\"\n    }\n  ],\n  [\n    'photoalbum',\n    {\n      desc: 'A nice photo album for storing all the photos taken along your adventure.',\n      gen: 4,\n      keyItem: true,\n      name: 'Photo Album',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/photoalbum.png'\n    }\n  ],\n  [\n    'pidgeotite',\n    {\n      desc: 'If held by a Pidgeot, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Pidgeotite',\n      shortDesc: 'If held by a Pidgeot, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'pikaniumz',\n    {\n      desc: 'If held by a Pikachu with Volt Tackle, it can use Catastropika.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Pikanium Z',\n      shortDesc: 'If held by a Pikachu with Volt Tackle, it can use Catastropika.'\n    }\n  ],\n  [\n    'pikashuniumz',\n    {\n      desc: 'If held by cap Pikachu with Thunderbolt, it can use 10,000,000 Volt Thunderbolt.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Pikashunium Z',\n      shortDesc: 'If held by cap Pikachu with Thunderbolt, it can use 10,000,000 Volt Thunderbolt.'\n    }\n  ],\n  [\n    'pinapberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Pinap Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'pinkbow',\n    {\n      desc: \"(Gen 2) Holder's Normal-type attacks have 1.1x power.\",\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Pink Bow',\n      shortDesc: \"(Gen 2) Holder's Normal-type attacks have 1.1x power.\"\n    }\n  ],\n  [\n    'pinkpetal',\n    {\n      desc: \"A pressed flower petal you receive from Mina during Mina's trial. The goal is to collect seven different kinds of petals.\",\n      gen: 7,\n      keyItem: true,\n      name: 'Pink Petal',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pinkpetal.png'\n    }\n  ],\n  [\n    'pinsirite',\n    {\n      desc: 'If held by a Pinsir, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Pinsirite',\n      shortDesc: 'If held by a Pinsir, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'pixieplate',\n    {\n      desc: \"Holder's Fairy-type attacks have 1.2x power. Judgment is Fairy type.\",\n      gen: 6,\n      name: 'Pixie Plate',\n      shortDesc: \"Holder's Fairy-type attacks have 1.2x power. Judgment is Fairy type.\"\n    }\n  ],\n  [\n    'plasmacard',\n    {\n      desc: 'A card key needed to enter the password inside the Plasma Frigate.',\n      gen: 5,\n      keyItem: true,\n      name: 'Plasma Card',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/plasmacard.png'\n    }\n  ],\n  [\n    'plumefossil',\n    {\n      desc: 'Can be revived into Archen.',\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Plume Fossil',\n      shortDesc: 'Can be revived into Archen.'\n    }\n  ],\n  [\n    'poffincase',\n    {\n      desc: 'A case for storing Poffins cooked from Berries.',\n      gen: 4,\n      keyItem: true,\n      name: 'Poffin Case',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/poffincase.png'\n    }\n  ],\n  [\n    'pointcard',\n    {\n      desc: 'A card that lists how many Battle Points you have earned.',\n      gen: 4,\n      keyItem: true,\n      name: 'Point Card',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pointcard.png'\n    }\n  ],\n  [\n    'poisonbarb',\n    {\n      desc: \"Holder's Poison-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Poison Barb',\n      shortDesc: \"Holder's Poison-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'poisongem',\n    {\n      desc: \"Holder's first successful Poison-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Poison Gem',\n      shortDesc: \"Holder's first successful Poison-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'poisoniumz',\n    {\n      desc: 'If holder has a Poison move, this item allows it to use a Poison Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Poisonium Z',\n      shortDesc: 'If holder has a Poison move, this item allows it to use a Poison Z-Move.'\n    }\n  ],\n  [\n    'poisonmemory',\n    {\n      desc: \"Holder's Multi-Attack is Poison type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Poison Memory',\n      shortDesc: \"Holder's Multi-Attack is Poison type.\"\n    }\n  ],\n  [\n    'poisonterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Poison Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/poisonterashard.png'\n    }\n  ],\n  [\n    'pokeball',\n    {\n      desc: 'A device for catching wild Pokémon. It is designed as a capsule system.',\n      gen: 1,\n      name: 'Poke Ball',\n      shortDesc: 'A device for catching wild Pokémon. It is designed as a capsule system.'\n    }\n  ],\n  [\n    'pokeblockcase',\n    {\n      desc: 'A case for holding Pokéblock made with a Berry Blender.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Pokéblock Case',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pokeblockcase.png'\n    }\n  ],\n  [\n    'pokeblockkit',\n    {\n      desc: 'A set containing a Berry Blender for making Pokéblocks and a Pokéblock Case for storing Pokéblocks.',\n      gen: 6,\n      keyItem: true,\n      name: 'Pokéblock Kit',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pokeblockkit.png'\n    }\n  ],\n  [\n    'pokeflute',\n    {\n      desc: 'A flute that can play with such a beautiful tone that even sleeping Pokémon find themselves woken up.',\n      gen: 1,\n      keyItem: true,\n      name: 'Poké Flute',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pokeflute.png'\n    }\n  ],\n  [\n    'pokemonboxlink',\n    {\n      desc: \"A device that allows you to access the Pokémon storage system. There are some places where it won't work.\",\n      gen: 8,\n      keyItem: true,\n      name: 'Pokémon Box Link',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pokémonboxlink.png'\n    }\n  ],\n  [\n    'pokeradar',\n    {\n      desc: 'A tool that can search out Pokémon that are hiding in the tall grass. Its battery is recharged as you walk.',\n      gen: 4,\n      keyItem: true,\n      name: 'Poké Radar',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pokeradar.png'\n    }\n  ],\n  [\n    'polkadotbow',\n    {\n      desc: \"(Gen 2) Holder's Normal-type attacks have 1.1x power.\",\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Polkadot Bow',\n      shortDesc: \"(Gen 2) Holder's Normal-type attacks have 1.1x power.\"\n    }\n  ],\n  [\n    'pomegberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      name: 'Pomeg Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'potion',\n    {\n      desc: 'A spray-type medicine for treating wounds. It can be used to restore 20 HP to a single Pokémon.',\n      gen: 1,\n      name: 'Potion'\n    }\n  ],\n  [\n    'powderjar',\n    {\n      desc: 'A jar for storing Berry Powder made using a Berry Crusher.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Powder Jar',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/powderjar.png'\n    }\n  ],\n  [\n    'poweranklet',\n    {\n      desc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\",\n      gen: 4,\n      name: 'Power Anklet',\n      shortDesc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\"\n    }\n  ],\n  [\n    'powerband',\n    {\n      desc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\",\n      gen: 4,\n      name: 'Power Band',\n      shortDesc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\"\n    }\n  ],\n  [\n    'powerbelt',\n    {\n      desc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\",\n      gen: 4,\n      name: 'Power Belt',\n      shortDesc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\"\n    }\n  ],\n  [\n    'powerbracer',\n    {\n      desc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\",\n      gen: 4,\n      name: 'Power Bracer',\n      shortDesc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\"\n    }\n  ],\n  [\n    'powerherb',\n    {\n      desc: \"Holder's two-turn moves complete in one turn (except Sky Drop). Single use.\",\n      gen: 4,\n      name: 'Power Herb',\n      shortDesc: \"Holder's two-turn moves complete in one turn (except Sky Drop). Single use.\"\n    }\n  ],\n  [\n    'powerlens',\n    {\n      desc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\",\n      gen: 4,\n      name: 'Power Lens',\n      shortDesc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\"\n    }\n  ],\n  [\n    'powerplantpass',\n    {\n      desc: 'This pass serves as an ID card for gaining access to the Power Plant that lies along Route 13.',\n      gen: 6,\n      keyItem: true,\n      name: 'Power Plant Pass',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/powerplantpass.png'\n    }\n  ],\n  [\n    'powerweight',\n    {\n      desc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\",\n      gen: 4,\n      name: 'Power Weight',\n      shortDesc: \"Holder's Speed is halved. The Klutz Ability does not ignore this effect.\"\n    }\n  ],\n  [\n    'premierball',\n    {\n      desc: 'A rare Poké Ball that has been crafted to commemorate an event.',\n      gen: 3,\n      name: 'Premier Ball',\n      shortDesc: 'A rare Poké Ball that has been crafted to commemorate an event.'\n    }\n  ],\n  [\n    'prettyfeather',\n    {\n      desc: \"Though this feather is beautiful, it's just a regular feather and has no effect.\",\n      gen: 5,\n      name: 'Pretty Feather',\n      shortDesc: \"Though this feather is beautiful, it's just a regular feather and has no effect.\"\n    }\n  ],\n  [\n    'primariumz',\n    {\n      desc: 'If held by a Primarina with Sparkling Aria, it can use Oceanic Operetta.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Primarium Z',\n      shortDesc: 'If held by a Primarina with Sparkling Aria, it can use Oceanic Operetta.'\n    }\n  ],\n  [\n    'prismscale',\n    {\n      desc: 'Evolves Feebas into Milotic when traded.',\n      gen: 5,\n      name: 'Prism Scale',\n      shortDesc: 'Evolves Feebas into Milotic when traded.'\n    }\n  ],\n  [\n    'prisonbottle',\n    {\n      desc: 'A bottle believed to have been used to seal away the power of a certain Pokémon long, long ago.',\n      gen: 6,\n      keyItem: true,\n      name: 'Prison Bottle',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/prisonbottle.png'\n    }\n  ],\n  [\n    'professorsmask',\n    {\n      desc: 'The mask that belongs to The Masked Royal. This pro wrestler apparently sews his mask on a machine himself.',\n      gen: 7,\n      keyItem: true,\n      name: \"Professor's Mask\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/professor'smask.png\"\n    }\n  ],\n  [\n    'profsletter',\n    {\n      desc: 'A letter that Professor Sycamore wrote to your mother. A faint but pleasant perfume seems to cling to the paper.',\n      gen: 6,\n      keyItem: true,\n      name: \"Prof's Letter\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/prof'sletter.png\"\n    }\n  ],\n  [\n    'propcase',\n    {\n      desc: 'A lovely case to store colorful Props for your Pokémon to wear in a musical.',\n      gen: 5,\n      keyItem: true,\n      name: 'Prop Case',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/propcase.png'\n    }\n  ],\n  [\n    'protectivepads',\n    {\n      desc: \"Holder's moves are protected from adverse contact effects, except Pickpocket.\",\n      gen: 7,\n      name: 'Protective Pads',\n      shortDesc: \"Holder's moves are protected from adverse contact effects, except Pickpocket.\"\n    }\n  ],\n  [\n    'protector',\n    {\n      desc: 'Evolves Rhydon into Rhyperior when traded.',\n      gen: 4,\n      name: 'Protector',\n      shortDesc: 'Evolves Rhydon into Rhyperior when traded.'\n    }\n  ],\n  [\n    'przcureberry',\n    {\n      desc: '(Gen 2) Holder cures itself if it is paralyzed. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'PRZ Cure Berry',\n      shortDesc: '(Gen 2) Holder cures itself if it is paralyzed. Single use.'\n    }\n  ],\n  [\n    'psncureberry',\n    {\n      desc: '(Gen 2) Holder is cured if it is poisoned. Single use.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'PSN Cure Berry',\n      shortDesc: '(Gen 2) Holder is cured if it is poisoned. Single use.'\n    }\n  ],\n  [\n    'psychicgem',\n    {\n      desc: \"Holder's first successful Psychic-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Psychic Gem',\n      shortDesc: \"Holder's first successful Psychic-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'psychicmemory',\n    {\n      desc: \"Holder's Multi-Attack is Psychic type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Psychic Memory',\n      shortDesc: \"Holder's Multi-Attack is Psychic type.\"\n    }\n  ],\n  [\n    'psychicseed',\n    {\n      desc: \"If the terrain is Psychic Terrain, raises holder's Sp. Def by 1 stage. Single use.\",\n      gen: 7,\n      name: 'Psychic Seed',\n      shortDesc: \"If the terrain is Psychic Terrain, raises holder's Sp. Def by 1 stage. Single use.\"\n    }\n  ],\n  [\n    'psychicterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Psychic Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/psychicterashard.png'\n    }\n  ],\n  [\n    'psychiumz',\n    {\n      desc: 'If holder has a Psychic move, this item allows it to use a Psychic Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Psychium Z',\n      shortDesc: 'If holder has a Psychic move, this item allows it to use a Psychic Z-Move.'\n    }\n  ],\n  [\n    'punchingglove',\n    {\n      desc: \"Holder's punch-based attacks have 1.1x power and do not make contact.\",\n      gen: 9,\n      name: 'Punching Glove',\n      shortDesc: \"Holder's punch-based attacks have 1.1x power and do not make contact.\"\n    }\n  ],\n  [\n    'purplepetal',\n    {\n      desc: \"A pressed flower petal you receive from Nanu during Mina's trial. The goal is to collect seven different kinds of petals.\",\n      gen: 7,\n      keyItem: true,\n      name: 'Purple Petal',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/purplepetal.png'\n    }\n  ],\n  [\n    'qualotberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      name: 'Qualot Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'quickball',\n    {\n      desc: 'A Poké Ball that provides a better catch rate at the start of a wild encounter.',\n      gen: 4,\n      name: 'Quick Ball',\n      shortDesc: 'A Poké Ball that provides a better catch rate at the start of a wild encounter.'\n    }\n  ],\n  [\n    'quickclaw',\n    {\n      desc: 'Each turn, holder has a 20% chance to move first in its priority bracket.',\n      gen: 2,\n      name: 'Quick Claw',\n      shortDesc: 'Each turn, holder has a 20% chance to move first in its priority bracket.'\n    }\n  ],\n  [\n    'quickpowder',\n    {\n      desc: \"If held by a Ditto that hasn't Transformed, its Speed is doubled.\",\n      gen: 4,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Quick Powder',\n      shortDesc: \"If held by a Ditto that hasn't Transformed, its Speed is doubled.\"\n    }\n  ],\n  [\n    'rabutaberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rabuta Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'ragecandybar',\n    {\n      desc: \"Mahogany Town's famous candy. It can be used once to heal all the status conditions of a Pokémon.\",\n      gen: 2,\n      keyItem: true,\n      name: 'Rage Candy Bar',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/ragecandybar.png'\n    }\n  ],\n  [\n    'rainbowflower',\n    {\n      desc: \"A flower made of the petals you received from captains. It's proof that your growth has been recognized by them.\",\n      gen: 7,\n      keyItem: true,\n      name: 'Rainbow Flower',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rainbowflower.png'\n    }\n  ],\n  [\n    'rainbowpass',\n    {\n      desc: 'A pass for ferries between Vermilion and the Sevii Islands. It features a drawing of a rainbow.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Rainbow Pass',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rainbowpass.png'\n    }\n  ],\n  [\n    'rainbowwing',\n    {\n      desc: 'A mystical rainbow feather that sparkles.',\n      gen: 2,\n      keyItem: true,\n      name: 'Rainbow Wing',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rainbowwing.png'\n    }\n  ],\n  [\n    'rarebone',\n    {\n      desc: 'No competitive use other than when used with Fling.',\n      gen: 4,\n      name: 'Rare Bone',\n      shortDesc: 'No competitive use other than when used with Fling.'\n    }\n  ],\n  [\n    'rawstberry',\n    {\n      desc: 'Holder is cured if it is burned. Single use.',\n      gen: 3,\n      name: 'Rawst Berry',\n      shortDesc: 'Holder is cured if it is burned. Single use.'\n    }\n  ],\n  [\n    'razorclaw',\n    {\n      desc: \"Holder's critical hit ratio is raised by 1 stage. Evolves Sneasel into Weavile when held and leveled up during the night.\",\n      gen: 4,\n      name: 'Razor Claw',\n      shortDesc: \"Holder's critical hit ratio is raised by 1 stage.\"\n    }\n  ],\n  [\n    'razorfang',\n    {\n      desc: \"Holder's attacks without a chance to make the target flinch gain a 10% chance to make the target flinch. Evolves Gligar into Gliscor when held and leveled up during the night.\",\n      gen: 4,\n      name: 'Razor Fang',\n      shortDesc: \"Holder's attacks without a chance to flinch gain a 10% chance to flinch.\"\n    }\n  ],\n  [\n    'razzberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Razz Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'reapercloth',\n    {\n      desc: 'Evolves Dusclops into Dusknoir when traded.',\n      gen: 4,\n      name: 'Reaper Cloth',\n      shortDesc: 'Evolves Dusclops into Dusknoir when traded.'\n    }\n  ],\n  [\n    'redcard',\n    {\n      desc: 'If holder survives a hit, attacker is forced to switch to a random ally. Single use.',\n      gen: 5,\n      name: 'Red Card',\n      shortDesc: 'If holder survives a hit, attacker is forced to switch to a random ally. Single use.'\n    }\n  ],\n  [\n    'redchain',\n    {\n      desc: 'A mythical chain that is said to link the Legendary Pokémon that created the Sinnoh region.',\n      gen: 4,\n      keyItem: true,\n      name: 'Red Chain',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/redchain.png'\n    }\n  ],\n  [\n    'redorb',\n    {\n      desc: 'If held by a Groudon, this item triggers its Primal Reversion in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Red Orb',\n      shortDesc: 'If held by a Groudon, this item triggers its Primal Reversion in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/redorb.png'\n    }\n  ],\n  [\n    'redpetal',\n    {\n      desc: \"A pressed flower petal you receive from Kiawe during Mina's trial. The goal is to collect seven different kinds of petals.\",\n      gen: 7,\n      keyItem: true,\n      name: 'Red Petal',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/redpetal.png'\n    }\n  ],\n  [\n    'redscale',\n    {\n      desc: 'A scale from a red Gyarados. It glows red like a flame.',\n      gen: 2,\n      keyItem: true,\n      name: 'Red Scale',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/redscale.png'\n    }\n  ],\n  [\n    'repeatball',\n    {\n      desc: 'A Poké Ball that works well on Pokémon species that were previously caught.',\n      gen: 3,\n      name: 'Repeat Ball',\n      shortDesc: 'A Poké Ball that works well on Pokémon species that were previously caught.'\n    }\n  ],\n  [\n    'revealglass',\n    {\n      desc: \"A looking glass that reveals the truth. It's a mysterious glass that returns a Pokémon to its original shape.\",\n      gen: 5,\n      keyItem: true,\n      name: 'Reveal Glass',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/revealglass.png'\n    }\n  ],\n  [\n    'ribbonsweet',\n    {\n      desc: 'Evolves Milcery into Alcremie when held and spun around.',\n      gen: 8,\n      name: 'Ribbon Sweet',\n      shortDesc: 'Evolves Milcery into Alcremie when held and spun around.'\n    }\n  ],\n  [\n    'ridepager',\n    {\n      desc: 'By entering certain numbers on this pager, you can summon Ride Pokémon in an instant.',\n      gen: 7,\n      keyItem: true,\n      name: 'Ride Pager',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/ridepager.png'\n    }\n  ],\n  [\n    'rindoberry',\n    {\n      desc: 'Halves damage taken from a supereffective Grass-type attack. Single use.',\n      gen: 4,\n      name: 'Rindo Berry',\n      shortDesc: 'Halves damage taken from a supereffective Grass-type attack. Single use.'\n    }\n  ],\n  [\n    'ringtarget',\n    {\n      desc: \"The holder's type immunities granted solely by its typing are negated.\",\n      gen: 5,\n      name: 'Ring Target',\n      shortDesc: \"The holder's type immunities granted solely by its typing are negated.\"\n    }\n  ],\n  [\n    'rm1key',\n    {\n      desc: 'A key that opens a door inside the Abandoned Ship.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Rm. 1 Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rm.1key.png'\n    }\n  ],\n  [\n    'rm2key',\n    {\n      desc: 'A key that opens a door inside the Abandoned Ship.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Rm. 2 Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rm.2key.png'\n    }\n  ],\n  [\n    'rm4key',\n    {\n      desc: 'A key that opens a door inside the Abandoned Ship.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Rm. 4 Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rm.4key.png'\n    }\n  ],\n  [\n    'rm6key',\n    {\n      desc: 'A key that opens a door inside the Abandoned Ship.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Rm. 6 Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rm.6key.png'\n    }\n  ],\n  [\n    'rockgem',\n    {\n      desc: \"Holder's first successful Rock-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rock Gem',\n      shortDesc: \"Holder's first successful Rock-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'rockincense',\n    {\n      desc: \"Holder's Rock-type attacks have 1.2x power.\",\n      gen: 4,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rock Incense',\n      shortDesc: \"Holder's Rock-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'rockiumz',\n    {\n      desc: 'If holder has a Rock move, this item allows it to use a Rock Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rockium Z',\n      shortDesc: 'If holder has a Rock move, this item allows it to use a Rock Z-Move.'\n    }\n  ],\n  [\n    'rockmemory',\n    {\n      desc: \"Holder's Multi-Attack is Rock type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rock Memory',\n      shortDesc: \"Holder's Multi-Attack is Rock type.\"\n    }\n  ],\n  [\n    'rockterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Rock Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rockterashard.png'\n    }\n  ],\n  [\n    'rockyhelmet',\n    {\n      desc: 'If holder is hit by a contact move, the attacker loses 1/6 of its max HP.',\n      gen: 5,\n      name: 'Rocky Helmet',\n      shortDesc: 'If holder is hit by a contact move, the attacker loses 1/6 of its max HP.'\n    }\n  ],\n  [\n    'rollerskates',\n    {\n      desc: 'Attaches roller skates to the bottom of your shoes, allowing you to glide quickly around and perform tricks.',\n      gen: 6,\n      keyItem: true,\n      name: 'Roller Skates',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rollerskates.png'\n    }\n  ],\n  [\n    'roomservice',\n    {\n      desc: \"If Trick Room is active, the holder's Speed is lowered by 1 stage. Single use.\",\n      gen: 8,\n      name: 'Room Service',\n      shortDesc: \"If Trick Room is active, the holder's Speed is lowered by 1 stage. Single use.\"\n    }\n  ],\n  [\n    'rootfossil',\n    {\n      desc: 'Can be revived into Lileep.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Root Fossil',\n      shortDesc: 'Can be revived into Lileep.'\n    }\n  ],\n  [\n    'roseincense',\n    {\n      desc: \"Holder's Grass-type attacks have 1.2x power.\",\n      gen: 4,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rose Incense',\n      shortDesc: \"Holder's Grass-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'roseliberry',\n    {\n      desc: 'Halves damage taken from a supereffective Fairy-type attack. Single use.',\n      gen: 6,\n      name: 'Roseli Berry',\n      shortDesc: 'Halves damage taken from a supereffective Fairy-type attack. Single use.'\n    }\n  ],\n  [\n    'rotombike',\n    {\n      desc: 'This bike can be combined with the Pokémon Rotom to not only do a turbo boost but also run on the water.',\n      gen: 8,\n      keyItem: true,\n      name: 'Rotom Bike',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rotombike.png'\n    }\n  ],\n  [\n    'rotomcatalog',\n    {\n      desc: 'A catalog of devices that Rotom like. Use the catalog to have Rotom hop in and out of the various devices listed within.',\n      gen: 8,\n      keyItem: true,\n      name: 'Rotom Catalog',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rotomcatalog.png'\n    }\n  ],\n  [\n    'rotomphone',\n    {\n      desc: 'The latest model of smartphone. A Pokémon called Rotom lives within it, and it can be used to run all sorts of handy apps.',\n      gen: 9,\n      keyItem: true,\n      name: 'Rotom Phone',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rotomphone.png'\n    }\n  ],\n  [\n    'rowapberry',\n    {\n      desc: 'If holder is hit by a special move, attacker loses 1/8 of its max HP. Single use.',\n      gen: 4,\n      name: 'Rowap Berry',\n      shortDesc: 'If holder is hit by a special move, attacker loses 1/8 of its max HP. Single use.'\n    }\n  ],\n  [\n    'ruby',\n    {\n      desc: 'An exquisitely beautiful gem that has a red glow. It symbolizes passion.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Ruby',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/ruby.png'\n    }\n  ],\n  [\n    'rulebook',\n    {\n      desc: 'It lists the rules for holding battles. For Link Battles, you may choose which set of rules you wish to use.',\n      gen: 4,\n      keyItem: true,\n      name: 'Rule Book',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/rulebook.png'\n    }\n  ],\n  [\n    'rustedshield',\n    {\n      desc: 'If held by a Zamazenta, this item changes its forme to Crowned Shield.',\n      gen: 8,\n      name: 'Rusted Shield',\n      shortDesc: 'If held by a Zamazenta, this item changes its forme to Crowned Shield.'\n    }\n  ],\n  [\n    'rustedsword',\n    {\n      desc: 'If held by a Zacian, this item changes its forme to Crowned Sword.',\n      gen: 8,\n      name: 'Rusted Sword',\n      shortDesc: 'If held by a Zacian, this item changes its forme to Crowned Sword.'\n    }\n  ],\n  [\n    'sablenite',\n    {\n      desc: 'If held by a Sableye, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sablenite',\n      shortDesc: 'If held by a Sableye, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'sachet',\n    {\n      desc: 'Evolves Spritzee into Aromatisse when traded.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sachet',\n      shortDesc: 'Evolves Spritzee into Aromatisse when traded.'\n    }\n  ],\n  [\n    'safariball',\n    {\n      desc: 'A special Poké Ball that is used only in the Safari Zone and Great Marsh.',\n      gen: 1,\n      name: 'Safari Ball',\n      shortDesc: 'A special Poké Ball that is used only in the Safari Zone and Great Marsh.'\n    }\n  ],\n  [\n    'safetygoggles',\n    {\n      aliases: ['goggles'],\n      desc: 'Holder is immune to powder moves and damage from Sandstorm or Hail.',\n      gen: 6,\n      name: 'Safety Goggles',\n      shortDesc: 'Holder is immune to powder moves and damage from Sandstorm or Hail.'\n    }\n  ],\n  [\n    'sailfossil',\n    {\n      desc: 'Can be revived into Amaura.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sail Fossil',\n      shortDesc: 'Can be revived into Amaura.'\n    }\n  ],\n  [\n    'salacberry',\n    {\n      aliases: ['salac'],\n      desc: \"Raises holder's Speed by 1 stage when at 1/4 max HP or less. Single use.\",\n      gen: 3,\n      name: 'Salac Berry',\n      shortDesc: \"Raises holder's Speed by 1 stage when at 1/4 max HP or less. Single use.\"\n    }\n  ],\n  [\n    'salamencite',\n    {\n      desc: 'If held by a Salamence, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Salamencite',\n      shortDesc: 'If held by a Salamence, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'sandwhich',\n    {\n      desc: 'A dish made by sandwiching vegetables, meat, or other ingredients between two pieces of bread. It makes a fantastic meal when out on a picnic.',\n      gen: 9,\n      keyItem: true,\n      name: 'Sandwich',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/sandwich.png'\n    }\n  ],\n  [\n    'sapphire',\n    {\n      desc: 'An exquisitely beautiful gem that has a blue glow. It symbolizes honesty.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Sapphire',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/sapphire.png'\n    }\n  ],\n  [\n    'scanner',\n    {\n      desc: 'A device found inside Sea Mauville.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Scanner',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/scanner.png'\n    }\n  ],\n  [\n    'scarletbook',\n    {\n      desc: 'A record of the expedition that the author, Heath, went on within the Great Crater of Paldea. The book has the name \"Sada\" written on it in clumsy handwriting.',\n      gen: 9,\n      keyItem: true,\n      name: 'Scarlet Book',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/scarletbook.png'\n    }\n  ],\n  [\n    'sceptilite',\n    {\n      desc: 'If held by a Sceptile, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sceptilite',\n      shortDesc: 'If held by a Sceptile, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'scizorite',\n    {\n      desc: 'If held by a Scizor, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Scizorite',\n      shortDesc: 'If held by a Scizor, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'scopelens',\n    {\n      desc: \"Holder's critical hit ratio is raised by 1 stage.\",\n      gen: 2,\n      name: 'Scope Lens',\n      shortDesc: \"Holder's critical hit ratio is raised by 1 stage.\"\n    }\n  ],\n  [\n    'seaincense',\n    {\n      desc: \"Holder's Water-type attacks have 1.2x power.\",\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sea Incense',\n      shortDesc: \"Holder's Water-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'sealbag',\n    {\n      desc: 'A tiny bag that can hold 10 Seals for decorating Poké Balls.',\n      gen: 4,\n      keyItem: true,\n      name: 'Seal Bag',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/sealbag.png'\n    }\n  ],\n  [\n    'sealcase',\n    {\n      desc: 'A case for storing Seals that can be applied to the exteriors of Poké Balls.',\n      gen: 4,\n      keyItem: true,\n      name: 'Seal Case',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/sealcase.png'\n    }\n  ],\n  [\n    'secretkey',\n    {\n      desc: 'A high-tech key that has to be used at a specific location. It emits a special electronic signal to open a door.',\n      gen: 1,\n      keyItem: true,\n      name: 'Secret Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/secretkey.png'\n    }\n  ],\n  [\n    'secretpotion',\n    {\n      desc: 'A fantastic medicine dispensed by the pharmacy in Cianwood City. It fully heals a Pokémon of any ailment.',\n      gen: 2,\n      keyItem: true,\n      name: 'SecretPotion',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/secretpotion.png'\n    }\n  ],\n  [\n    'sharpbeak',\n    {\n      desc: \"Holder's Flying-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Sharp Beak',\n      shortDesc: \"Holder's Flying-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'sharpedonite',\n    {\n      desc: 'If held by a Sharpedo, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sharpedonite',\n      shortDesc: 'If held by a Sharpedo, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'shedshell',\n    {\n      desc: 'Holder may switch out even when trapped by another Pokémon, or by Ingrain.',\n      gen: 4,\n      name: 'Shed Shell',\n      shortDesc: 'Holder cannot be prevented from choosing to switch out by any effect.'\n    }\n  ],\n  [\n    'shellbell',\n    {\n      desc: 'After an attack, holder gains 1/8 of the damage in HP dealt to other Pokémon.',\n      gen: 3,\n      name: 'Shell Bell',\n      shortDesc: 'After an attack, holder gains 1/8 of the damage in HP dealt to other Pokémon.'\n    }\n  ],\n  [\n    'shinycharm',\n    {\n      desc: 'A shiny charm said to increase the chance of finding a Shiny Pokémon in the wild.',\n      gen: 5,\n      keyItem: true,\n      name: 'Shiny Charm',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/shinycharm.png'\n    }\n  ],\n  [\n    'shinystone',\n    {\n      desc: 'Evolves Togetic into Togekiss, Roselia into Roserade, Minccino into Cinccino, and Floette into Florges when used.',\n      gen: 4,\n      name: 'Shiny Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'shockdrive',\n    {\n      desc: \"Holder's Techno Blast is Electric type.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Shock Drive',\n      shortDesc: \"Holder's Techno Blast is Electric type.\"\n    }\n  ],\n  [\n    'shucaberry',\n    {\n      desc: 'Halves damage taken from a supereffective Ground-type attack. Single use.',\n      gen: 4,\n      name: 'Shuca Berry',\n      shortDesc: 'Halves damage taken from a supereffective Ground-type attack. Single use.'\n    }\n  ],\n  [\n    'silkscarf',\n    {\n      desc: \"Holder's Normal-type attacks have 1.2x power.\",\n      gen: 3,\n      name: 'Silk Scarf',\n      shortDesc: \"Holder's Normal-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'silphscope',\n    {\n      desc: 'A scope that lets you see what cannot usually be seen. It is made by Silph Co.',\n      gen: 1,\n      keyItem: true,\n      name: 'Silph Scope',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/silphscope.png'\n    }\n  ],\n  [\n    'silverpowder',\n    {\n      desc: \"Holder's Bug-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Silver Powder',\n      shortDesc: \"Holder's Bug-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'silverwing',\n    {\n      desc: 'A strange, silvery feather that sparkles.',\n      gen: 2,\n      keyItem: true,\n      name: 'Silver Wing',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/silverwing.png'\n    }\n  ],\n  [\n    'sitrusberry',\n    {\n      aliases: ['sitrus'],\n      desc: 'Restores 1/4 max HP when at 1/2 max HP or less. Single use.',\n      gen: 3,\n      name: 'Sitrus Berry',\n      shortDesc: 'Restores 1/4 max HP when at 1/2 max HP or less. Single use.'\n    }\n  ],\n  [\n    'skullfossil',\n    {\n      desc: 'Can be revived into Cranidos.',\n      gen: 4,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Skull Fossil',\n      shortDesc: 'Can be revived into Cranidos.'\n    }\n  ],\n  [\n    'skyplate',\n    {\n      desc: \"Holder's Flying-type attacks have 1.2x power. Judgment is Flying type.\",\n      gen: 4,\n      name: 'Sky Plate',\n      shortDesc: \"Holder's Flying-type attacks have 1.2x power. Judgment is Flying type.\"\n    }\n  ],\n  [\n    'slowbronite',\n    {\n      desc: 'If held by a Slowbro, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Slowbronite',\n      shortDesc: 'If held by a Slowbro, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'slowpoketail',\n    {\n      desc: 'A very tasty tail of something. It can be sold at a high price to shops.',\n      gen: 2,\n      keyItem: true,\n      name: 'Slowpoketail',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/slowpoketail.png'\n    }\n  ],\n  [\n    'smoothrock',\n    {\n      desc: \"Holder's use of Sandstorm lasts 8 turns instead of 5.\",\n      gen: 4,\n      name: 'Smooth Rock',\n      shortDesc: \"Holder's use of Sandstorm lasts 8 turns instead of 5.\"\n    }\n  ],\n  [\n    'snorliumz',\n    {\n      desc: 'If held by a Snorlax with Giga Impact, it can use Pulverizing Pancake.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Snorlium Z',\n      shortDesc: 'If held by a Snorlax with Giga Impact, it can use Pulverizing Pancake.'\n    }\n  ],\n  [\n    'snowball',\n    {\n      desc: \"Raises holder's Attack by 1 if hit by an Ice-type attack. Single use.\",\n      gen: 6,\n      name: 'Snowball',\n      shortDesc: \"Raises holder's Attack by 1 if hit by an Ice-type attack. Single use.\"\n    }\n  ],\n  [\n    'softsand',\n    {\n      desc: \"Holder's Ground-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Soft Sand',\n      shortDesc: \"Holder's Ground-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'solganiumz',\n    {\n      desc: 'Solgaleo or Dusk Mane Necrozma with Sunsteel Strike can use a special Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Solganium Z',\n      shortDesc: 'Solgaleo or Dusk Mane Necrozma with Sunsteel Strike can use a special Z-Move.'\n    }\n  ],\n  [\n    'soniasbook',\n    {\n      desc: \"Professor Sonia's published writings. Her new discoveries about the Galar region's legends are recorded in this enjoyable read.\",\n      gen: 8,\n      keyItem: true,\n      name: \"Sonia's Book\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/sonia'sbook.png\"\n    }\n  ],\n  [\n    'sootsack',\n    {\n      desc: 'A sack used to gather and hold volcanic ash.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'sootsack',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/sootsack.png'\n    }\n  ],\n  [\n    'souldew',\n    {\n      desc: 'If held by a Latias/Latios, its Dragon- and Psychic-type moves have 1.2x power.',\n      gen: 3,\n      name: 'Soul Dew',\n      shortDesc: 'If held by a Latias/Latios, its Dragon- and Psychic-type moves have 1.2x power.'\n    }\n  ],\n  [\n    'sparklingstone',\n    {\n      desc: 'A stone entrusted by a Pokémon that has been venerated as a guardian deity in the Alola region. There is said to be some secret in how it sparkles.',\n      gen: 7,\n      keyItem: true,\n      name: 'Sparkling Stone',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/sparklingstone.png'\n    }\n  ],\n  [\n    'spelltag',\n    {\n      desc: \"Holder's Ghost-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Spell Tag',\n      shortDesc: \"Holder's Ghost-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'spelonberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Spelon Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'splashplate',\n    {\n      desc: \"Holder's Water-type attacks have 1.2x power. Judgment is Water type.\",\n      gen: 4,\n      name: 'Splash Plate',\n      shortDesc: \"Holder's Water-type attacks have 1.2x power. Judgment is Water type.\"\n    }\n  ],\n  [\n    'spookyplate',\n    {\n      desc: \"Holder's Ghost-type attacks have 1.2x power. Judgment is Ghost type.\",\n      gen: 4,\n      name: 'Spooky Plate',\n      shortDesc: \"Holder's Ghost-type attacks have 1.2x power. Judgment is Ghost type.\"\n    }\n  ],\n  [\n    'sportball',\n    {\n      desc: 'A special Poké Ball for the Bug-Catching Contest.',\n      gen: 2,\n      name: 'Sport Ball',\n      shortDesc: 'A special Poké Ball for the Bug-Catching Contest.'\n    }\n  ],\n  [\n    'sprayduck',\n    {\n      desc: 'A watering can shaped like a Psyduck. It helps promote the healthy growth of any Berries planted in good, soft soil.',\n      gen: 4,\n      keyItem: true,\n      name: 'Sprayduck',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/sprayduck.png'\n    }\n  ],\n  [\n    'sprinklotad',\n    {\n      desc: 'A watering can shaped like a Lotad. It helps promote the healthy growth of any Berries planted in good, soft soil.',\n      gen: 6,\n      keyItem: true,\n      name: 'Sprinklotad',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/sprinklotad.png'\n    }\n  ],\n  [\n    'squirtbottle',\n    {\n      desc: 'A bottle used for watering plants in the Berry Pots.',\n      gen: 2,\n      keyItem: true,\n      name: 'Squirtbottle',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/squirtbottle.png'\n    }\n  ],\n  [\n    'ssticket',\n    {\n      desc: 'A ticket required for sailing on the ferry S.S. Aqua. It has a drawing of a ship on its front.',\n      gen: 1,\n      keyItem: true,\n      name: 'S.S. Ticket',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/s.s.ticket.png'\n    }\n  ],\n  [\n    'starfberry',\n    {\n      desc: 'Raises a random stat by 2 when at 1/4 max HP or less (not acc/eva). Single use.',\n      gen: 3,\n      name: 'Starf Berry',\n      shortDesc: 'Raises a random stat by 2 when at 1/4 max HP or less (not acc/eva). Single use.'\n    }\n  ],\n  [\n    'starsweet',\n    {\n      desc: 'Evolves Milcery into Alcremie when held and spun around.',\n      gen: 8,\n      name: 'Star Sweet',\n      shortDesc: 'Evolves Milcery into Alcremie when held and spun around.'\n    }\n  ],\n  [\n    'steelgem',\n    {\n      desc: \"Holder's first successful Steel-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Steel Gem',\n      shortDesc: \"Holder's first successful Steel-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'steeliumz',\n    {\n      desc: 'If holder has a Steel move, this item allows it to use a Steel Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Steelium Z',\n      shortDesc: 'If holder has a Steel move, this item allows it to use a Steel Z-Move.'\n    }\n  ],\n  [\n    'steelixite',\n    {\n      desc: 'If held by a Steelix, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Steelixite',\n      shortDesc: 'If held by a Steelix, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'steelmemory',\n    {\n      desc: \"Holder's Multi-Attack is Steel type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Steel Memory',\n      shortDesc: \"Holder's Multi-Attack is Steel type.\"\n    }\n  ],\n  [\n    'steelterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Steel Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/steelterashard.png'\n    }\n  ],\n  [\n    'stick',\n    {\n      desc: 'If held by a Farfetch’d, its critical hit ratio is raised by 2 stages.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Stick',\n      shortDesc: 'If held by a Farfetch’d, its critical hit ratio is raised by 2 stages.'\n    }\n  ],\n  [\n    'stickybarb',\n    {\n      desc: 'Each turn, holder loses 1/8 max HP. An attacker making contact can receive it.',\n      gen: 4,\n      name: 'Sticky Barb',\n      shortDesc: 'Each turn, holder loses 1/8 max HP. An attacker making contact can receive it.'\n    }\n  ],\n  [\n    'stoneplate',\n    {\n      desc: \"Holder's Rock-type attacks have 1.2x power. Judgment is Rock type.\",\n      gen: 4,\n      name: 'Stone Plate',\n      shortDesc: \"Holder's Rock-type attacks have 1.2x power. Judgment is Rock type.\"\n    }\n  ],\n  [\n    'storagekey',\n    {\n      desc: \"The key to Team Galactic's sinister warehouse located at the edge of Veilstone City.\",\n      gen: 4,\n      keyItem: true,\n      name: 'Storage Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/storagekey.png'\n    }\n  ],\n  [\n    'strangeball',\n    {\n      desc: 'In Pokémon Brilliant Diamond and Shining Pearl, Pokémon Legends: Arceus, and Pokémon Scarlet and Violet, Pokémon caught in Poké Balls that do not exist in that game instead display a Strange Ball as their Poké Ball.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Strange Ball',\n      shortDesc: 'Placeholder if caught in Poké Ball not in current game.'\n    }\n  ],\n  [\n    'strawberrysweet',\n    {\n      desc: 'Evolves Milcery into Alcremie when held and spun around.',\n      gen: 8,\n      name: 'Strawberry Sweet',\n      shortDesc: 'Evolves Milcery into Alcremie when held and spun around.'\n    }\n  ],\n  [\n    'suitekey',\n    {\n      desc: 'A key to one of the suites at a certain luxury hotel by a lake. For some odd reason, it often disappears.',\n      gen: 4,\n      keyItem: true,\n      name: 'Suite Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/suitekey.png'\n    }\n  ],\n  [\n    'sunflute',\n    {\n      desc: 'It is said that the tones it produces were offered up as an expression of gratitude to the Legendary Pokémon of the sun.',\n      gen: 7,\n      keyItem: true,\n      name: 'Sun Flute',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/sunflute.png'\n    }\n  ],\n  [\n    'sunstone',\n    {\n      desc: 'Evolves Gloom into Bellossom, Sunkern into Sunflora, Cottonee into Whimsicott, Petilil into Lilligant, and Helioptile into Heliolisk when used.',\n      gen: 2,\n      name: 'Sun Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'superpotion',\n    {\n      desc: 'A spray-type medicine for treating wounds. It can be used to restore 60 HP to a single Pokémon. ',\n      gen: 1,\n      name: 'Super Potion'\n    }\n  ],\n  [\n    'superrod',\n    {\n      desc: 'An awesome, high-tech fishing rod. Use it at any body of water to fish for wild aquatic Pokémon.',\n      gen: 1,\n      keyItem: true,\n      name: 'Super Rod',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/superrod.png'\n    }\n  ],\n  [\n    'surgebadge',\n    {\n      desc: 'A novelty badge that you can receive at the Kantonian Gym. Rumor has it that it imitates the Badge of a Gym somewhere.',\n      gen: 7,\n      keyItem: true,\n      name: 'Surge Badge',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/surgebadge.png'\n    }\n  ],\n  [\n    'swampertite',\n    {\n      desc: 'If held by a Swampert, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Swampertite',\n      shortDesc: 'If held by a Swampert, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'sweetapple',\n    {\n      desc: 'Evolves Applin into Appletun when used.',\n      gen: 8,\n      name: 'Sweet Apple',\n      shortDesc: 'Evolves Applin into Appletun when used.'\n    }\n  ],\n  [\n    'syrupyapple',\n    {\n      desc: 'Evolves Applin into Dipplin when used.',\n      gen: 9,\n      name: 'Syrupy Apple',\n      shortDesc: 'Evolves Applin into Dipplin when used.'\n    }\n  ],\n  [\n    'tamatoberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      name: 'Tamato Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'tangaberry',\n    {\n      desc: 'Halves damage taken from a supereffective Bug-type attack. Single use.',\n      gen: 4,\n      name: 'Tanga Berry',\n      shortDesc: 'Halves damage taken from a supereffective Bug-type attack. Single use.'\n    }\n  ],\n  [\n    'tapuniumz',\n    {\n      desc: \"If held by a Tapu with Nature's Madness, it can use Guardian of Alola.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Tapunium Z',\n      shortDesc: \"If held by a Tapu with Nature's Madness, it can use Guardian of Alola.\"\n    }\n  ],\n  [\n    'tartapple',\n    {\n      desc: 'Evolves Applin into Flapple when used.',\n      gen: 8,\n      name: 'Tart Apple',\n      shortDesc: 'Evolves Applin into Flapple when used.'\n    }\n  ],\n  [\n    'tea',\n    {\n      desc: 'Aromatic tea that has a slightly bitter taste. It soothes a dry throat.',\n      gen: 3,\n      keyItem: true,\n      name: 'tea',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/tea.png'\n    }\n  ],\n  [\n    'teachytv',\n    {\n      desc: 'A television set that is tuned to a program with useful tips for novice Trainers.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Teachy TV',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/teachytv.png'\n    }\n  ],\n  [\n    'teraorb',\n    {\n      desc: 'An orb that holds within it the power to crystallize. When it is charged with energy, it can be used to cause Pokémon to Terastallize.',\n      gen: 9,\n      keyItem: true,\n      name: 'Tera Orb',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/teraorb.png'\n    }\n  ],\n  [\n    'terrainextender',\n    {\n      desc: \"Holder's use of Electric/Grassy/Misty/Psychic Terrain lasts 8 turns instead of 5.\",\n      gen: 7,\n      name: 'Terrain Extender',\n      shortDesc: \"Holder's use of Electric/Grassy/Misty/Psychic Terrain lasts 8 turns instead of 5.\"\n    }\n  ],\n  [\n    'thickclub',\n    {\n      desc: 'If held by a Cubone or a Marowak, its Attack is doubled.',\n      gen: 2,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Thick Club',\n      shortDesc: 'If held by a Cubone or a Marowak, its Attack is doubled.'\n    }\n  ],\n  [\n    'throatspray',\n    {\n      desc: \"Raises holder's Special Attack by 1 stage after it uses a sound move. Single use.\",\n      gen: 8,\n      name: 'Throat Spray',\n      shortDesc: \"Raises holder's Special Attack by 1 stage after it uses a sound move. Single use.\"\n    }\n  ],\n  [\n    'thunderstone',\n    {\n      desc: 'Evolves Pikachu into Raichu or Alolan Raichu, Eevee into Jolteon, Eelektrik into Eelektross, and Charjabug into Vikavolt when used.',\n      gen: 1,\n      name: 'Thunder Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'tidalbell',\n    {\n      desc: 'A very old-fashioned bell that makes a gentle ringing sound.',\n      gen: 1,\n      keyItem: true,\n      name: 'Tidal Bell',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/tidalbell.png'\n    }\n  ],\n  [\n    'timerball',\n    {\n      desc: 'A Poké Ball that becomes better the more turns there are in a battle.',\n      gen: 3,\n      name: 'Timer Ball',\n      shortDesc: 'A Poké Ball that becomes better the more turns there are in a battle.'\n    }\n  ],\n  [\n    'tmcase',\n    {\n      desc: \"A case that holds TMs and HMs. It is attached to the Bag's compartment for important items.\",\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'TM Case',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/tmcase.png'\n    }\n  ],\n  [\n    'tmvpass',\n    {\n      desc: 'A commuter pass that allows the holder to ride the TMV between Lumiose City and Kiloude City at any time.',\n      gen: 6,\n      keyItem: true,\n      name: 'TMV Pass',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/tmvpass.png'\n    }\n  ],\n  [\n    'townmap',\n    {\n      desc: 'A very convenient map that can be viewed anytime. It even shows you your present location in the region.',\n      gen: 1,\n      keyItem: true,\n      name: 'Town Map',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/townmap.png'\n    }\n  ],\n  [\n    'toxicorb',\n    {\n      desc: 'At the end of every turn, this item attempts to badly poison the holder.',\n      gen: 4,\n      name: 'Toxic Orb',\n      shortDesc: 'At the end of every turn, this item attempts to badly poison the holder.'\n    }\n  ],\n  [\n    'toxicplate',\n    {\n      desc: \"Holder's Poison-type attacks have 1.2x power. Judgment is Poison type.\",\n      gen: 4,\n      name: 'Toxic Plate',\n      shortDesc: \"Holder's Poison-type attacks have 1.2x power. Judgment is Poison type.\"\n    }\n  ],\n  [\n    'tr00',\n    {\n      desc: 'Teaches certain Pokémon the move Swords Dance. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR00',\n      shortDesc: 'Teaches certain Pokémon the move Swords Dance. One use.'\n    }\n  ],\n  [\n    'tr01',\n    {\n      desc: 'Teaches certain Pokémon the move Body Slam. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR01',\n      shortDesc: 'Teaches certain Pokémon the move Body Slam. One use.'\n    }\n  ],\n  [\n    'tr02',\n    {\n      desc: 'Teaches certain Pokémon the move Flamethrower. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR02',\n      shortDesc: 'Teaches certain Pokémon the move Flamethrower. One use.'\n    }\n  ],\n  [\n    'tr03',\n    {\n      desc: 'Teaches certain Pokémon the move Hydro Pump. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR03',\n      shortDesc: 'Teaches certain Pokémon the move Hydro Pump. One use.'\n    }\n  ],\n  [\n    'tr04',\n    {\n      desc: 'Teaches certain Pokémon the move Surf. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR04',\n      shortDesc: 'Teaches certain Pokémon the move Surf. One use.'\n    }\n  ],\n  [\n    'tr05',\n    {\n      desc: 'Teaches certain Pokémon the move Ice Beam. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR05',\n      shortDesc: 'Teaches certain Pokémon the move Ice Beam. One use.'\n    }\n  ],\n  [\n    'tr06',\n    {\n      desc: 'Teaches certain Pokémon the move Blizzard. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR06',\n      shortDesc: 'Teaches certain Pokémon the move Blizzard. One use.'\n    }\n  ],\n  [\n    'tr07',\n    {\n      desc: 'Teaches certain Pokémon the move Low Kick. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR07',\n      shortDesc: 'Teaches certain Pokémon the move Low Kick. One use.'\n    }\n  ],\n  [\n    'tr08',\n    {\n      desc: 'Teaches certain Pokémon the move Thunderbolt. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR08',\n      shortDesc: 'Teaches certain Pokémon the move Thunderbolt. One use.'\n    }\n  ],\n  [\n    'tr09',\n    {\n      desc: 'Teaches certain Pokémon the move Thunder. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR09',\n      shortDesc: 'Teaches certain Pokémon the move Thunder. One use.'\n    }\n  ],\n  [\n    'tr10',\n    {\n      desc: 'Teaches certain Pokémon the move Earthquake. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR10',\n      shortDesc: 'Teaches certain Pokémon the move Earthquake. One use.'\n    }\n  ],\n  [\n    'tr11',\n    {\n      desc: 'Teaches certain Pokémon the move Psychic. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR11',\n      shortDesc: 'Teaches certain Pokémon the move Psychic. One use.'\n    }\n  ],\n  [\n    'tr12',\n    {\n      desc: 'Teaches certain Pokémon the move Agility. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR12',\n      shortDesc: 'Teaches certain Pokémon the move Agility. One use.'\n    }\n  ],\n  [\n    'tr13',\n    {\n      desc: 'Teaches certain Pokémon the move Focus Energy. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR13',\n      shortDesc: 'Teaches certain Pokémon the move Focus Energy. One use.'\n    }\n  ],\n  [\n    'tr14',\n    {\n      desc: 'Teaches certain Pokémon the move Metronome. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR14',\n      shortDesc: 'Teaches certain Pokémon the move Metronome. One use.'\n    }\n  ],\n  [\n    'tr15',\n    {\n      desc: 'Teaches certain Pokémon the move Fire Blast. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR15',\n      shortDesc: 'Teaches certain Pokémon the move Fire Blast. One use.'\n    }\n  ],\n  [\n    'tr16',\n    {\n      desc: 'Teaches certain Pokémon the move Waterfall. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR16',\n      shortDesc: 'Teaches certain Pokémon the move Waterfall. One use.'\n    }\n  ],\n  [\n    'tr17',\n    {\n      desc: 'Teaches certain Pokémon the move Amnesia. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR17',\n      shortDesc: 'Teaches certain Pokémon the move Amnesia. One use.'\n    }\n  ],\n  [\n    'tr18',\n    {\n      desc: 'Teaches certain Pokémon the move Leech Life. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR18',\n      shortDesc: 'Teaches certain Pokémon the move Leech Life. One use.'\n    }\n  ],\n  [\n    'tr19',\n    {\n      desc: 'Teaches certain Pokémon the move Tri Attack. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR19',\n      shortDesc: 'Teaches certain Pokémon the move Tri Attack. One use.'\n    }\n  ],\n  [\n    'tr20',\n    {\n      desc: 'Teaches certain Pokémon the move Substitute. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR20',\n      shortDesc: 'Teaches certain Pokémon the move Substitute. One use.'\n    }\n  ],\n  [\n    'tr21',\n    {\n      desc: 'Teaches certain Pokémon the move Reversal. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR21',\n      shortDesc: 'Teaches certain Pokémon the move Reversal. One use.'\n    }\n  ],\n  [\n    'tr22',\n    {\n      desc: 'Teaches certain Pokémon the move Sludge Bomb. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR22',\n      shortDesc: 'Teaches certain Pokémon the move Sludge Bomb. One use.'\n    }\n  ],\n  [\n    'tr23',\n    {\n      desc: 'Teaches certain Pokémon the move Spikes. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR23',\n      shortDesc: 'Teaches certain Pokémon the move Spikes. One use.'\n    }\n  ],\n  [\n    'tr24',\n    {\n      desc: 'Teaches certain Pokémon the move Outrage. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR24',\n      shortDesc: 'Teaches certain Pokémon the move Outrage. One use.'\n    }\n  ],\n  [\n    'tr25',\n    {\n      desc: 'Teaches certain Pokémon the move Psyshock. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR25',\n      shortDesc: 'Teaches certain Pokémon the move Psyshock. One use.'\n    }\n  ],\n  [\n    'tr26',\n    {\n      desc: 'Teaches certain Pokémon the move Endure. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR26',\n      shortDesc: 'Teaches certain Pokémon the move Endure. One use.'\n    }\n  ],\n  [\n    'tr27',\n    {\n      desc: 'Teaches certain Pokémon the move Sleep Talk. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR27',\n      shortDesc: 'Teaches certain Pokémon the move Sleep Talk. One use.'\n    }\n  ],\n  [\n    'tr28',\n    {\n      desc: 'Teaches certain Pokémon the move Megahorn. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR28',\n      shortDesc: 'Teaches certain Pokémon the move Megahorn. One use.'\n    }\n  ],\n  [\n    'tr29',\n    {\n      desc: 'Teaches certain Pokémon the move Baton Pass. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR29',\n      shortDesc: 'Teaches certain Pokémon the move Baton Pass. One use.'\n    }\n  ],\n  [\n    'tr30',\n    {\n      desc: 'Teaches certain Pokémon the move Encore. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR30',\n      shortDesc: 'Teaches certain Pokémon the move Encore. One use.'\n    }\n  ],\n  [\n    'tr31',\n    {\n      desc: 'Teaches certain Pokémon the move Iron Tail. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR31',\n      shortDesc: 'Teaches certain Pokémon the move Iron Tail. One use.'\n    }\n  ],\n  [\n    'tr32',\n    {\n      desc: 'Teaches certain Pokémon the move Crunch. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR32',\n      shortDesc: 'Teaches certain Pokémon the move Crunch. One use.'\n    }\n  ],\n  [\n    'tr33',\n    {\n      desc: 'Teaches certain Pokémon the move Shadow Ball. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR33',\n      shortDesc: 'Teaches certain Pokémon the move Shadow Ball. One use.'\n    }\n  ],\n  [\n    'tr34',\n    {\n      desc: 'Teaches certain Pokémon the move Future Sight. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR34',\n      shortDesc: 'Teaches certain Pokémon the move Future Sight. One use.'\n    }\n  ],\n  [\n    'tr35',\n    {\n      desc: 'Teaches certain Pokémon the move Uproar. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR35',\n      shortDesc: 'Teaches certain Pokémon the move Uproar. One use.'\n    }\n  ],\n  [\n    'tr36',\n    {\n      desc: 'Teaches certain Pokémon the move Heat Wave. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR36',\n      shortDesc: 'Teaches certain Pokémon the move Heat Wave. One use.'\n    }\n  ],\n  [\n    'tr37',\n    {\n      desc: 'Teaches certain Pokémon the move Taunt. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR37',\n      shortDesc: 'Teaches certain Pokémon the move Taunt. One use.'\n    }\n  ],\n  [\n    'tr38',\n    {\n      desc: 'Teaches certain Pokémon the move Trick. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR38',\n      shortDesc: 'Teaches certain Pokémon the move Trick. One use.'\n    }\n  ],\n  [\n    'tr39',\n    {\n      desc: 'Teaches certain Pokémon the move Superpower. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR39',\n      shortDesc: 'Teaches certain Pokémon the move Superpower. One use.'\n    }\n  ],\n  [\n    'tr40',\n    {\n      desc: 'Teaches certain Pokémon the move Skill Swap. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR40',\n      shortDesc: 'Teaches certain Pokémon the move Skill Swap. One use.'\n    }\n  ],\n  [\n    'tr41',\n    {\n      desc: 'Teaches certain Pokémon the move Blaze Kick. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR41',\n      shortDesc: 'Teaches certain Pokémon the move Blaze Kick. One use.'\n    }\n  ],\n  [\n    'tr42',\n    {\n      desc: 'Teaches certain Pokémon the move Hyper Voice. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR42',\n      shortDesc: 'Teaches certain Pokémon the move Hyper Voice. One use.'\n    }\n  ],\n  [\n    'tr43',\n    {\n      desc: 'Teaches certain Pokémon the move Overheat. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR43',\n      shortDesc: 'Teaches certain Pokémon the move Overheat. One use.'\n    }\n  ],\n  [\n    'tr44',\n    {\n      desc: 'Teaches certain Pokémon the move Cosmic Power. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR44',\n      shortDesc: 'Teaches certain Pokémon the move Cosmic Power. One use.'\n    }\n  ],\n  [\n    'tr45',\n    {\n      desc: 'Teaches certain Pokémon the move Muddy Water. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR45',\n      shortDesc: 'Teaches certain Pokémon the move Muddy Water. One use.'\n    }\n  ],\n  [\n    'tr46',\n    {\n      desc: 'Teaches certain Pokémon the move Iron Defense. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR46',\n      shortDesc: 'Teaches certain Pokémon the move Iron Defense. One use.'\n    }\n  ],\n  [\n    'tr47',\n    {\n      desc: 'Teaches certain Pokémon the move Dragon Claw. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR47',\n      shortDesc: 'Teaches certain Pokémon the move Dragon Claw. One use.'\n    }\n  ],\n  [\n    'tr48',\n    {\n      desc: 'Teaches certain Pokémon the move Bulk Up. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR48',\n      shortDesc: 'Teaches certain Pokémon the move Bulk Up. One use.'\n    }\n  ],\n  [\n    'tr49',\n    {\n      desc: 'Teaches certain Pokémon the move Calm Mind. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR49',\n      shortDesc: 'Teaches certain Pokémon the move Calm Mind. One use.'\n    }\n  ],\n  [\n    'tr50',\n    {\n      desc: 'Teaches certain Pokémon the move Leaf Blade. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR50',\n      shortDesc: 'Teaches certain Pokémon the move Leaf Blade. One use.'\n    }\n  ],\n  [\n    'tr51',\n    {\n      desc: 'Teaches certain Pokémon the move Dragon Dance. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR51',\n      shortDesc: 'Teaches certain Pokémon the move Dragon Dance. One use.'\n    }\n  ],\n  [\n    'tr52',\n    {\n      desc: 'Teaches certain Pokémon the move Gyro Ball. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR52',\n      shortDesc: 'Teaches certain Pokémon the move Gyro Ball. One use.'\n    }\n  ],\n  [\n    'tr53',\n    {\n      desc: 'Teaches certain Pokémon the move Close Combat. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR53',\n      shortDesc: 'Teaches certain Pokémon the move Close Combat. One use.'\n    }\n  ],\n  [\n    'tr54',\n    {\n      desc: 'Teaches certain Pokémon the move Toxic Spikes. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR54',\n      shortDesc: 'Teaches certain Pokémon the move Toxic Spikes. One use.'\n    }\n  ],\n  [\n    'tr55',\n    {\n      desc: 'Teaches certain Pokémon the move Flare Blitz. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR55',\n      shortDesc: 'Teaches certain Pokémon the move Flare Blitz. One use.'\n    }\n  ],\n  [\n    'tr56',\n    {\n      desc: 'Teaches certain Pokémon the move Aura Sphere. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR56',\n      shortDesc: 'Teaches certain Pokémon the move Aura Sphere. One use.'\n    }\n  ],\n  [\n    'tr57',\n    {\n      desc: 'Teaches certain Pokémon the move Poison Jab. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR57',\n      shortDesc: 'Teaches certain Pokémon the move Poison Jab. One use.'\n    }\n  ],\n  [\n    'tr58',\n    {\n      desc: 'Teaches certain Pokémon the move Dark Pulse. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR58',\n      shortDesc: 'Teaches certain Pokémon the move Dark Pulse. One use.'\n    }\n  ],\n  [\n    'tr59',\n    {\n      desc: 'Teaches certain Pokémon the move Seed Bomb. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR59',\n      shortDesc: 'Teaches certain Pokémon the move Seed Bomb. One use.'\n    }\n  ],\n  [\n    'tr60',\n    {\n      desc: 'Teaches certain Pokémon the move X-Scissor. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR60',\n      shortDesc: 'Teaches certain Pokémon the move X-Scissor. One use.'\n    }\n  ],\n  [\n    'tr61',\n    {\n      desc: 'Teaches certain Pokémon the move Bug Buzz. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR61',\n      shortDesc: 'Teaches certain Pokémon the move Bug Buzz. One use.'\n    }\n  ],\n  [\n    'tr62',\n    {\n      desc: 'Teaches certain Pokémon the move Dragon Pulse. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR62',\n      shortDesc: 'Teaches certain Pokémon the move Dragon Pulse. One use.'\n    }\n  ],\n  [\n    'tr63',\n    {\n      desc: 'Teaches certain Pokémon the move Power Gem. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR63',\n      shortDesc: 'Teaches certain Pokémon the move Power Gem. One use.'\n    }\n  ],\n  [\n    'tr64',\n    {\n      desc: 'Teaches certain Pokémon the move Focus Blast. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR64',\n      shortDesc: 'Teaches certain Pokémon the move Focus Blast. One use.'\n    }\n  ],\n  [\n    'tr65',\n    {\n      desc: 'Teaches certain Pokémon the move Energy Ball. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR65',\n      shortDesc: 'Teaches certain Pokémon the move Energy Ball. One use.'\n    }\n  ],\n  [\n    'tr66',\n    {\n      desc: 'Teaches certain Pokémon the move Brave Bird. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR66',\n      shortDesc: 'Teaches certain Pokémon the move Brave Bird. One use.'\n    }\n  ],\n  [\n    'tr67',\n    {\n      desc: 'Teaches certain Pokémon the move Earth Power. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR67',\n      shortDesc: 'Teaches certain Pokémon the move Earth Power. One use.'\n    }\n  ],\n  [\n    'tr68',\n    {\n      desc: 'Teaches certain Pokémon the move Nasty Plot. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR68',\n      shortDesc: 'Teaches certain Pokémon the move Nasty Plot. One use.'\n    }\n  ],\n  [\n    'tr69',\n    {\n      desc: 'Teaches certain Pokémon the move Zen Headbutt. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR69',\n      shortDesc: 'Teaches certain Pokémon the move Zen Headbutt. One use.'\n    }\n  ],\n  [\n    'tr70',\n    {\n      desc: 'Teaches certain Pokémon the move Flash Cannon. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR70',\n      shortDesc: 'Teaches certain Pokémon the move Flash Cannon. One use.'\n    }\n  ],\n  [\n    'tr71',\n    {\n      desc: 'Teaches certain Pokémon the move Leaf Storm. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR71',\n      shortDesc: 'Teaches certain Pokémon the move Leaf Storm. One use.'\n    }\n  ],\n  [\n    'tr72',\n    {\n      desc: 'Teaches certain Pokémon the move Power Whip. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR72',\n      shortDesc: 'Teaches certain Pokémon the move Power Whip. One use.'\n    }\n  ],\n  [\n    'tr73',\n    {\n      desc: 'Teaches certain Pokémon the move Gunk Shot. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR73',\n      shortDesc: 'Teaches certain Pokémon the move Gunk Shot. One use.'\n    }\n  ],\n  [\n    'tr74',\n    {\n      desc: 'Teaches certain Pokémon the move Iron Head. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR74',\n      shortDesc: 'Teaches certain Pokémon the move Iron Head. One use.'\n    }\n  ],\n  [\n    'tr75',\n    {\n      desc: 'Teaches certain Pokémon the move Stone Edge. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR75',\n      shortDesc: 'Teaches certain Pokémon the move Stone Edge. One use.'\n    }\n  ],\n  [\n    'tr76',\n    {\n      desc: 'Teaches certain Pokémon the move Stealth Rock. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR76',\n      shortDesc: 'Teaches certain Pokémon the move Stealth Rock. One use.'\n    }\n  ],\n  [\n    'tr77',\n    {\n      desc: 'Teaches certain Pokémon the move Grass Knot. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR77',\n      shortDesc: 'Teaches certain Pokémon the move Grass Knot. One use.'\n    }\n  ],\n  [\n    'tr78',\n    {\n      desc: 'Teaches certain Pokémon the move Sludge Wave. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR78',\n      shortDesc: 'Teaches certain Pokémon the move Sludge Wave. One use.'\n    }\n  ],\n  [\n    'tr79',\n    {\n      desc: 'Teaches certain Pokémon the move Heavy Slam. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR79',\n      shortDesc: 'Teaches certain Pokémon the move Heavy Slam. One use.'\n    }\n  ],\n  [\n    'tr80',\n    {\n      desc: 'Teaches certain Pokémon the move Electro Ball. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR80',\n      shortDesc: 'Teaches certain Pokémon the move Electro Ball. One use.'\n    }\n  ],\n  [\n    'tr81',\n    {\n      desc: 'Teaches certain Pokémon the move Foul Play. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR81',\n      shortDesc: 'Teaches certain Pokémon the move Foul Play. One use.'\n    }\n  ],\n  [\n    'tr82',\n    {\n      desc: 'Teaches certain Pokémon the move Stored Power. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR82',\n      shortDesc: 'Teaches certain Pokémon the move Stored Power. One use.'\n    }\n  ],\n  [\n    'tr83',\n    {\n      desc: 'Teaches certain Pokémon the move Ally Switch. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR83',\n      shortDesc: 'Teaches certain Pokémon the move Ally Switch. One use.'\n    }\n  ],\n  [\n    'tr84',\n    {\n      desc: 'Teaches certain Pokémon the move Scald. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR84',\n      shortDesc: 'Teaches certain Pokémon the move Scald. One use.'\n    }\n  ],\n  [\n    'tr85',\n    {\n      desc: 'Teaches certain Pokémon the move Work Up. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR85',\n      shortDesc: 'Teaches certain Pokémon the move Work Up. One use.'\n    }\n  ],\n  [\n    'tr86',\n    {\n      desc: 'Teaches certain Pokémon the move Wild Charge. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR86',\n      shortDesc: 'Teaches certain Pokémon the move Wild Charge. One use.'\n    }\n  ],\n  [\n    'tr87',\n    {\n      desc: 'Teaches certain Pokémon the move Drill Run. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR87',\n      shortDesc: 'Teaches certain Pokémon the move Drill Run. One use.'\n    }\n  ],\n  [\n    'tr88',\n    {\n      desc: 'Teaches certain Pokémon the move Heat Crash. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR88',\n      shortDesc: 'Teaches certain Pokémon the move Heat Crash. One use.'\n    }\n  ],\n  [\n    'tr89',\n    {\n      desc: 'Teaches certain Pokémon the move Hurricane. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR89',\n      shortDesc: 'Teaches certain Pokémon the move Hurricane. One use.'\n    }\n  ],\n  [\n    'tr90',\n    {\n      desc: 'Teaches certain Pokémon the move Play Rough. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR90',\n      shortDesc: 'Teaches certain Pokémon the move Play Rough. One use.'\n    }\n  ],\n  [\n    'tr91',\n    {\n      desc: 'Teaches certain Pokémon the move Venom Drench. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR91',\n      shortDesc: 'Teaches certain Pokémon the move Venom Drench. One use.'\n    }\n  ],\n  [\n    'tr92',\n    {\n      desc: 'Teaches certain Pokémon the move Dazzling Gleam. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR92',\n      shortDesc: 'Teaches certain Pokémon the move Dazzling Gleam. One use.'\n    }\n  ],\n  [\n    'tr93',\n    {\n      desc: 'Teaches certain Pokémon the move Darkest Lariat. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR93',\n      shortDesc: 'Teaches certain Pokémon the move Darkest Lariat. One use.'\n    }\n  ],\n  [\n    'tr94',\n    {\n      desc: 'Teaches certain Pokémon the move High Horsepower. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR94',\n      shortDesc: 'Teaches certain Pokémon the move High Horsepower. One use.'\n    }\n  ],\n  [\n    'tr95',\n    {\n      desc: 'Teaches certain Pokémon the move Throat Chop. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR95',\n      shortDesc: 'Teaches certain Pokémon the move Throat Chop. One use.'\n    }\n  ],\n  [\n    'tr96',\n    {\n      desc: 'Teaches certain Pokémon the move Pollen Puff. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR96',\n      shortDesc: 'Teaches certain Pokémon the move Pollen Puff. One use.'\n    }\n  ],\n  [\n    'tr97',\n    {\n      desc: 'Teaches certain Pokémon the move Psychic Fangs. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR97',\n      shortDesc: 'Teaches certain Pokémon the move Psychic Fangs. One use.'\n    }\n  ],\n  [\n    'tr98',\n    {\n      desc: 'Teaches certain Pokémon the move Liquidation. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR98',\n      shortDesc: 'Teaches certain Pokémon the move Liquidation. One use.'\n    }\n  ],\n  [\n    'tr99',\n    {\n      desc: 'Teaches certain Pokémon the move Body Press. One use.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Past,\n      name: 'TR99',\n      shortDesc: 'Teaches certain Pokémon the move Body Press. One use.'\n    }\n  ],\n  [\n    'traveltrunk',\n    {\n      desc: 'A light and yet incredibly effective trunk, which can contain every last piece of clothing that can be bought.',\n      gen: 6,\n      keyItem: true,\n      name: 'Travel Trunk',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/traveltrunk.png'\n    }\n  ],\n  [\n    'tripass',\n    {\n      desc: 'A pass for ferries between One, Two, and Three Island. It has a drawing of three islands.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'tripass',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/tripass.png'\n    }\n  ],\n  [\n    'twistedspoon',\n    {\n      desc: \"Holder's Psychic-type attacks have 1.2x power.\",\n      gen: 2,\n      name: 'Twisted Spoon',\n      shortDesc: \"Holder's Psychic-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'tyranitarite',\n    {\n      desc: 'If held by a Tyranitar, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Tyranitarite',\n      shortDesc: 'If held by a Tyranitar, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'ultraball',\n    {\n      desc: 'An ultra-performance Ball that provides a higher catch rate than a Great Ball.',\n      gen: 1,\n      name: 'Ultra Ball',\n      shortDesc: 'An ultra-performance Ball that provides a higher catch rate than a Great Ball.'\n    }\n  ],\n  [\n    'ultranecroziumz',\n    {\n      desc: 'Dusk Mane/Dawn Wings Necrozma: Ultra Burst, then Z-Move w/ Photon Geyser.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ultranecrozium Z',\n      shortDesc: 'Dusk Mane/Dawn Wings Necrozma: Ultra Burst, then Z-Move w/ Photon Geyser.'\n    }\n  ],\n  [\n    'unownreport',\n    {\n      desc: 'A report of all the discovered kinds of Unown.',\n      gen: 4,\n      keyItem: true,\n      name: 'Unown Report',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/unownreport.png'\n    }\n  ],\n  [\n    'unremarkableteacup',\n    {\n      desc: 'Evolves Poltchageist into Sinistcha when used.',\n      gen: 9,\n      name: 'Unremarkable Teacup',\n      shortDesc: 'Evolves Poltchageist into Sinistcha when used.'\n    }\n  ],\n  [\n    'upgrade',\n    {\n      desc: 'Evolves Porygon into Porygon2 when traded.',\n      gen: 2,\n      name: 'Up-Grade',\n      shortDesc: 'Evolves Porygon into Porygon2 when traded.'\n    }\n  ],\n  [\n    'utilityumbrella',\n    {\n      desc: 'The holder ignores rain- and sun-based effects, including those of its Ability unless it is Orichalcum Pulse or Protosynthesis. Damage and accuracy calculations from attacks used by the holder are affected by rain and sun, but not attacks used against the holder.',\n      gen: 8,\n      name: 'Utility Umbrella',\n      shortDesc: 'The holder ignores rain- and sun-based effects.'\n    }\n  ],\n  [\n    'venusaurite',\n    {\n      desc: 'If held by a Venusaur, this item allows it to Mega Evolve in battle.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Venusaurite',\n      shortDesc: 'If held by a Venusaur, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'vilevial',\n    {\n      desc: 'If held by a Venomicon, its Poison- and Flying-type attacks have 1.2x power.',\n      gen: 8,\n      isNonstandard: IsNonStandard.Cap,\n      name: 'Vile Vial',\n      shortDesc: 'If held by a Venomicon, its Poison- and Flying-type attacks have 1.2x power.'\n    }\n  ],\n  [\n    'violetbook',\n    {\n      desc: 'A record of the expedition that the author, Heath, went on within the Great Crater of Paldea. The book has the name \"Turo\" written on it in clumsy handwriting.',\n      gen: 9,\n      keyItem: true,\n      name: 'Violet Book',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/violetbook.png'\n    }\n  ],\n  [\n    'vsrecorder',\n    {\n      desc: 'An amazing device that can record a battle between friends or the battles at certain special battle facilities.',\n      gen: 5,\n      keyItem: true,\n      name: 'Vs. Recorder',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/vs.recorder.png'\n    }\n  ],\n  [\n    'vsseeker',\n    {\n      desc: 'A device that indicates Trainers who want to battle. Its battery charges while you walk.',\n      gen: 3,\n      keyItem: true,\n      name: 'Vs. Seeker',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/vs.seeker.png'\n    }\n  ],\n  [\n    'wacanberry',\n    {\n      desc: 'Halves damage taken from a supereffective Electric-type attack. Single use.',\n      gen: 4,\n      name: 'Wacan Berry',\n      shortDesc: 'Halves damage taken from a supereffective Electric-type attack. Single use.'\n    }\n  ],\n  [\n    'wailmerpail',\n    {\n      desc: 'This is a tool for watering Berries you planted to make them grow more quickly.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      keyItem: true,\n      name: 'Wailmer Pail',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/wailmerpail.png'\n    }\n  ],\n  [\n    'watergem',\n    {\n      desc: \"Holder's first successful Water-type attack will have 1.3x power. Single use.\",\n      gen: 5,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Water Gem',\n      shortDesc: \"Holder's first successful Water-type attack will have 1.3x power. Single use.\"\n    }\n  ],\n  [\n    'wateriumz',\n    {\n      desc: 'If holder has a Water move, this item allows it to use a Water Z-Move.',\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Waterium Z',\n      shortDesc: 'If holder has a Water move, this item allows it to use a Water Z-Move.'\n    }\n  ],\n  [\n    'watermemory',\n    {\n      desc: \"Holder's Multi-Attack is Water type.\",\n      gen: 7,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Water Memory',\n      shortDesc: \"Holder's Multi-Attack is Water type.\"\n    }\n  ],\n  [\n    'waterstone',\n    {\n      desc: 'Evolves Poliwhirl into Poliwrath, Shellder into Cloyster, Staryu into Starmie, Eevee into Vaporeon, Lombre into Ludicolo, and Panpour into Simipour when used.',\n      gen: 1,\n      name: 'Water Stone',\n      shortDesc: 'Evolves certain species of Pokémon when used.'\n    }\n  ],\n  [\n    'waterterashard',\n    {\n      desc: 'On rare occasions, these shards form when a Tera Pokémon falls in battle and its Tera Jewel shatters.',\n      gen: 9,\n      name: 'Water Tera Shard',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/waterterashard.png'\n    }\n  ],\n  [\n    'watmelberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Watmel Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'waveincense',\n    {\n      desc: \"Holder's Water-type attacks have 1.2x power.\",\n      gen: 4,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Wave Incense',\n      shortDesc: \"Holder's Water-type attacks have 1.2x power.\"\n    }\n  ],\n  [\n    'weaknesspolicy',\n    {\n      aliases: ['wp'],\n      desc: 'If holder is hit super effectively, raises Attack, Sp. Atk by 2 stages. Single use.',\n      gen: 6,\n      name: 'Weakness Policy',\n      shortDesc: 'If holder is hit super effectively, raises Attack, Sp. Atk by 2 stages. Single use.'\n    }\n  ],\n  [\n    'wellspringmask',\n    {\n      desc: 'Ogerpon-Wellspring: 1.2x power attacks; Terastallize to gain Embody Aspect.',\n      gen: 9,\n      name: 'Wellspring Mask',\n      shortDesc: 'Ogerpon-Wellspring: 1.2x power attacks; Terastallize to gain Embody Aspect.'\n    }\n  ],\n  [\n    'wepearberry',\n    {\n      desc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.',\n      gen: 3,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Wepear Berry',\n      shortDesc: 'Cannot be eaten by the holder. No effect when eaten with Bug Bite or Pluck.'\n    }\n  ],\n  [\n    'whippeddream',\n    {\n      desc: 'Evolves Swirlix into Slurpuff when traded.',\n      gen: 6,\n      isNonstandard: IsNonStandard.Past,\n      name: 'Whipped Dream',\n      shortDesc: 'Evolves Swirlix into Slurpuff when traded.'\n    }\n  ],\n  [\n    'whiteherb',\n    {\n      desc: 'Restores all lowered stat stages to 0 when one is less than 0. Single use.',\n      gen: 3,\n      name: 'White Herb',\n      shortDesc: 'Restores all lowered stat stages to 0 when one is less than 0. Single use.'\n    }\n  ],\n  [\n    'widelens',\n    {\n      desc: 'The accuracy of attacks by the holder is 1.1x.',\n      gen: 4,\n      name: 'Wide Lens',\n      shortDesc: 'The accuracy of attacks by the holder is 1.1x.'\n    }\n  ],\n  [\n    'wikiberry',\n    {\n      desc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -SpA Nature. Single use.',\n      gen: 3,\n      name: 'Wiki Berry',\n      shortDesc: 'Restores 1/3 max HP at 1/4 max HP or less; confuses if -SpA Nature. Single use.'\n    }\n  ],\n  [\n    'wiseglasses',\n    {\n      desc: \"Holder's special attacks have 1.1x power.\",\n      gen: 4,\n      name: 'Wise Glasses',\n      shortDesc: \"Holder's special attacks have 1.1x power.\"\n    }\n  ],\n  [\n    'wishingstar',\n    {\n      desc: \"A stone found in the Galar region with a mysterious power. It's said that your dreams come true if you find one.\",\n      gen: 8,\n      keyItem: true,\n      name: 'Wishing Star',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/wishingstar.png'\n    }\n  ],\n  [\n    'workskey',\n    {\n      desc: 'A large key for operating the doors of the Valley Windworks in the canyon. It was held by a Team Galactic Grunt.',\n      gen: 4,\n      keyItem: true,\n      name: 'Works Key',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/workskey.png'\n    }\n  ],\n  [\n    'xtransceiver',\n    {\n      desc: 'A high-tech transceiver with a camera function. It allows up to four-way calls.',\n      gen: 5,\n      keyItem: true,\n      name: 'Xtransceiver',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/xtransceiver.png'\n    }\n  ],\n  [\n    'yacheberry',\n    {\n      aliases: ['yache'],\n      desc: 'Halves damage taken from a supereffective Ice-type attack. Single use.',\n      gen: 4,\n      name: 'Yache Berry',\n      shortDesc: 'Halves damage taken from a supereffective Ice-type attack. Single use.'\n    }\n  ],\n  [\n    'yellowpetal',\n    {\n      desc: \"A pressed flower petal you receive from Ilima during Mina's trial. The goal is to collect seven different kinds of petals.\",\n      gen: 7,\n      keyItem: true,\n      name: 'Yellow Petal',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/yellowpetal.png'\n    }\n  ],\n  [\n    'zapplate',\n    {\n      desc: \"Holder's Electric-type attacks have 1.2x power. Judgment is Electric type.\",\n      gen: 4,\n      name: 'Zap Plate',\n      shortDesc: \"Holder's Electric-type attacks have 1.2x power. Judgment is Electric type.\"\n    }\n  ],\n  [\n    'zoomlens',\n    {\n      desc: 'The accuracy of attacks by the holder is 1.2x if it moves after its target.',\n      gen: 4,\n      name: 'Zoom Lens',\n      shortDesc: 'The accuracy of attacks by the holder is 1.2x if it moves after its target.'\n    }\n  ],\n  [\n    'zpowering',\n    {\n      desc: 'A mysterious ring that enables Pokémon to use Z-Power. It requires both the willpower and the physical power of the Trainer wearing it.',\n      gen: 7,\n      keyItem: true,\n      name: 'Z-Power Ring',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/z-powerring.png'\n    }\n  ],\n  [\n    'zring',\n    {\n      desc: 'A mysterious ring that enables Pokémon to use Z-Power. It requires both the willpower and the physical power of the Trainer wearing it.',\n      gen: 7,\n      keyItem: true,\n      name: 'Z-Ring',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/z-ring.png'\n    }\n  ],\n  [\n    'zygardecube',\n    {\n      desc: 'An item to store Zygarde Cores and Cells. You can also use it to teach Zygarde moves.',\n      gen: 7,\n      keyItem: true,\n      name: 'Zygarde Cube',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/zygardecube.png'\n    }\n  ],\n  [\n    'chesnaughtite',\n    {\n      desc: 'If held by a Chesnaught, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Chesnaughtite',\n      shortDesc: 'If held by a Chesnaught, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'pyroarite',\n    {\n      desc: 'If held by a Pyroar, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Pyroarite',\n      shortDesc: 'If held by a Pyroar, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'scolipite',\n    {\n      desc: 'If held by a Scolipede, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Scolipite',\n      shortDesc: 'If held by a Scolipede, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'scraftinite',\n    {\n      desc: 'If held by a Scrafty, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Scraftinite',\n      shortDesc: 'If held by a Scrafty, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'skarmorite',\n    {\n      desc: 'If held by a Skarmory, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Skarmorite',\n      shortDesc: 'If held by a Skarmory, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'starminite',\n    {\n      desc: 'If held by a Starmie, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Starminite',\n      shortDesc: 'If held by a Starmie, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'victreebelite',\n    {\n      desc: 'If held by a Victreebel, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Victreebelite',\n      shortDesc: 'If held by a Victreebel, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'zygardite',\n    {\n      desc: 'If held by a Zygarde in Complete Forme, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Zygardite',\n      shortDesc: 'If held by a Zygarde in Complete Forme, this item allows it to Mega Evolve in battle.'\n    }\n  ],\n  [\n    'seedofmastery',\n    {\n      desc: \"A rare variety of seed. A certain person can help you upgrade your Pokémon's moves into Plus Moves if given one of these.\",\n      gen: 9,\n      name: 'Seed of Mastery',\n      shortDesc: \"Used to upgrade a Pokemon's moves into Plus Moves\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/seedofmastery.png'\n    }\n  ],\n  [\n    'keytoroom202',\n    {\n      desc: 'A key for room 202 at Hotel Z',\n      gen: 9,\n      name: 'Key to Room 202',\n      shortDesc: 'A key for room 202 at Hotel Z',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/keytoroom202.png'\n    }\n  ],\n  [\n    'superlumiosegalette',\n    {\n      desc: 'A popular treat among certain residents of Lumiose City. This variety is baked to be incredibly firm so that one can savor the crunch.',\n      gen: 9,\n      name: 'Super Lumiose Galette',\n      shortDesc: 'A popular treat among certain residents of Lumiose City.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/superlumiosegalette.png'\n    }\n  ],\n  [\n    'labkeycarda',\n    {\n      desc: \"A key card that can be used in Lysandre Labs. The locks were each programmed to take different keys for security purposes, but mostly it's just an inconvenience.\",\n      gen: 9,\n      name: 'Lab Key Card A',\n      shortDesc: 'A key card that can be used in Lysandre Labs.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/labkeycarda.png'\n    }\n  ],\n  [\n    'labkeycardb',\n    {\n      desc: \"A key card that can be used in Lysandre Labs. The locks were each programmed to take different keys for security purposes, but mostly it's just an inconvenience.\",\n      gen: 9,\n      name: 'Lab Key Card B',\n      shortDesc: 'A key card that can be used in Lysandre Labs.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/labkeycardb.png'\n    }\n  ],\n  [\n    'labkeycardc',\n    {\n      desc: \"A key card that can be used in Lysandre Labs. The locks were each programmed to take different keys for security purposes, but mostly it's just an inconvenience.\",\n      gen: 9,\n      name: 'Lab Key Card C',\n      shortDesc: 'A key card that can be used in Lysandre Labs.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/labkeycardc.png'\n    }\n  ],\n  [\n    'pebble',\n    {\n      desc: 'An ordinary pebble entrusted to you by the Pokémon known as Zygarde. It is completely unremarkable.',\n      gen: 9,\n      name: 'Pebble',\n      shortDesc: 'An unremarkable pebble.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/pebble.png'\n    }\n  ],\n  [\n    'cherishedring',\n    {\n      desc: 'A ring that an old woman asked you to retrieve. It seems to hold some value to her.',\n      gen: 9,\n      name: 'Cherished Ring',\n      shortDesc: 'A valuable ring that belongs to an old woman.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/cherishedring.png'\n    }\n  ],\n  [\n    'colorfulscrew',\n    {\n      desc: 'A colorful screw. These screws have been left here and there around Lumiose City, and the staff at Racine Construction will trade you goods in exchange for them.',\n      gen: 9,\n      name: 'Colorful Screw',\n      shortDesc: 'A valuable ring that belongs to an old woman.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/cherishedring.png'\n    }\n  ],\n  [\n    'autographedplush',\n    {\n      desc: 'A plush doll that has been autographed by Canari. Just having one puts you in a good mood.',\n      gen: 9,\n      name: 'Autographed Plush',\n      shortDesc: 'A plush doll that has been autographed by Canari.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/autographedplush.png'\n    }\n  ],\n  [\n    'tastytrash',\n    {\n      desc: 'Food waste made up of cooking ingredients. Although they were thrown away after the best parts were used, some edible bits still remain.',\n      gen: 9,\n      name: 'Tasty Trash',\n      shortDesc: 'Food waste made up of cooking ingredients.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/tastytrash.png'\n    }\n  ],\n  [\n    'revitalizingtwig',\n    {\n      desc: \"A small twig that is beloved by Fennekin. It's said that chewing on one of these twigs can be both soothing and cheering.\",\n      gen: 9,\n      name: 'Revitalizing Twig',\n      shortDesc: 'A small twig that is beloved by Fennekin.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/revitalizingtwig.png'\n    }\n  ],\n  [\n    'lidasthings',\n    {\n      desc: \"Lida's accessories and other items that she uses when practicing dance. They're kept in a small pouch that was handmade by Naveen.\",\n      gen: 9,\n      name: \"Lida's Things\",\n      shortDesc: \"Lida's accessories and other items that she uses when practicing dance.\",\n      specialSprite: \"https://www.serebii.net/itemdex/sprites/za/th/lida'sthings.png\"\n    }\n  ],\n  [\n    'megashard',\n    {\n      desc: 'A mysterious shard that can be found after smashing Mega Crystals using Pokémon moves. It seems that some people collect these shards.',\n      gen: 9,\n      name: 'Mega Shard',\n      shortDesc: 'A mysterious shard that can be found after smashing Mega Crystals',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/megashard.png'\n    }\n  ],\n  [\n    'redcanariplush',\n    {\n      desc: 'A plush doll of Canari that holds a red charm. Having one of these increases the Exp. Points your Pokémon get.',\n      gen: 9,\n      name: 'Red Canari Plush',\n      shortDesc: 'A red Canari plush doll that increases Exp. Points.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/redcanariplushlv.2.png'\n    }\n  ],\n  [\n    'goldcanariplush',\n    {\n      desc: 'A plush doll of Canari that holds a gold charm. Having one of these increases the prize money you receive from battles.',\n      gen: 9,\n      name: 'Gold Canari Plush',\n      shortDesc: 'A gold Canari plush doll that increases money received from battles.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/goldcanariplushlv.2.png'\n    }\n  ],\n  [\n    'pinkcanariplush',\n    {\n      desc: \"A plush doll of Canari that holds a pink charm. Having one of these increases the number of Mega Shards you'll find after smashing Mega Crystals.\",\n      gen: 9,\n      name: 'Pink Canari Plush',\n      shortDesc: 'A pink Canari plush doll that increases Mega Shards after smashing Mega Crystals.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/pinkcanariplushlv.2.png'\n    }\n  ],\n  [\n    'greencanariplush',\n    {\n      desc: 'A plush doll of Canari that holds a green charm. Having one of these makes you less likely to black out from taking damage.',\n      gen: 9,\n      name: 'Green Canari Plush',\n      shortDesc: 'A green Canari plush doll that makes you a less likely to black out.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/greencanariplushlv.2.png'\n    }\n  ],\n  [\n    'bluecanariplush',\n    {\n      desc: \"A plush doll of Canari that holds a blue charm. Having one of these makes it more likely that you'll succeed at catching Pokémon.\",\n      gen: 9,\n      name: 'Blue Canari Plush',\n      shortDesc: 'A blue Canari plush doll that makes you more likely to catch Pokémon.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/bluecanariplushlv.2.png'\n    }\n  ],\n  [\n    'heatranite',\n    {\n      desc: 'If held by a Heatran, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Heatranite',\n      shortDesc: 'If held by a Heatran, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/heatranite.png'\n    }\n  ],\n  [\n    'darkranite',\n    {\n      desc: 'If held by a Darkrai, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Darkranite',\n      shortDesc: 'If held by a Darkrai, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/darkranite.png'\n    }\n  ],\n  [\n    'zeraorite',\n    {\n      desc: 'If held by a Zeraora, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Zeraorite',\n      shortDesc: 'If held by a Zeraora, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/zeraorite.png'\n    }\n  ],\n  [\n    'raichunitex',\n    {\n      desc: 'If held by a Raichu, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Raichunite X',\n      shortDesc: 'If held by a Raichu, this item allows it to Mega Evolve into Mega Raichu X in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/raichunitex.png'\n    }\n  ],\n  [\n    'raichinitey',\n    {\n      desc: 'If held by a Raichu, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Raichunite Y',\n      shortDesc: 'If held by a Raichu, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/raichunitey.png'\n    }\n  ],\n  [\n    'chimechite',\n    {\n      desc: 'If held by a Chimecho, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Chimechite',\n      shortDesc: 'If held by a Chimecho, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/chimechite.png'\n    }\n  ],\n  [\n    'absolitez',\n    {\n      desc: 'If held by an Absol, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Absolite Z',\n      shortDesc: 'If held by an Absol, this item allows it to Mega Evolve into Mega Absol Z in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/absolitez.png'\n    }\n  ],\n  [\n    'staraptite',\n    {\n      desc: 'If held by a Staraptor, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Staraptite',\n      shortDesc: 'If held by a Staraptor, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/staraptite.png'\n    }\n  ],\n  [\n    'garchompitez',\n    {\n      desc: 'If held by a Garchomp, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Garchompite Z',\n      shortDesc: 'If held by a Garchomp, this item allows it to Mega Evolve into Mega Garchomp Z.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/garchompitez.png'\n    }\n  ],\n  [\n    'lucarionitez',\n    {\n      desc: 'If held by a Lucario, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Lucarionite Z',\n      shortDesc: 'If held by a Lucario, this item allows it to Mega Evolve into Mega Lucario Z in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/lucarionitez.png'\n    }\n  ],\n  [\n    'golurkite',\n    {\n      desc: 'If held by a Golurk, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Golurkite',\n      shortDesc: 'If held by a Golurk, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/golurkite.png'\n    }\n  ],\n  [\n    'meowsticite',\n    {\n      desc: 'If held by a Meowstic, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Meowsticite',\n      shortDesc: 'If held by a Meowstic, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/meowsticite.png'\n    }\n  ],\n  [\n    'crabominite',\n    {\n      desc: 'If held by a Crabominable, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Crabominite',\n      shortDesc: 'If held by a Crabominable, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/crabombinite.png'\n    }\n  ],\n  [\n    'golisopite',\n    {\n      desc: 'If held by a Golisopod, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Golisopite',\n      shortDesc: 'If held by a Golisopod, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/golisopite.png'\n    }\n  ],\n  [\n    'magearnite',\n    {\n      desc: 'If held by a Magearna, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Magearnite',\n      shortDesc: 'If held by a Magearna, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/magearnite.png'\n    }\n  ],\n  [\n    'scovillainite',\n    {\n      desc: 'If held by a Scovillain, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Scovillainite',\n      shortDesc: 'If held by a Scovillain, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/scovillainite.png'\n    }\n  ],\n  [\n    'baxcalibrite',\n    {\n      desc: 'If held by a Baxcalibur, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Baxcalibrite',\n      shortDesc: 'If held by a Baxcalibur, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/baxcalibrite.png'\n    }\n  ],\n  [\n    'tatsugirinite',\n    {\n      desc: 'If held by a Tatsugiri, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Tatsugirinite',\n      shortDesc: 'If held by a Tatsugiri, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/tatsugirinite.png'\n    }\n  ],\n  [\n    'glimmoranite',\n    {\n      desc: 'If held by a Glimmora, this item allows it to Mega Evolve in battle.',\n      gen: 9,\n      name: 'Glimmoranite',\n      shortDesc: 'If held by a Glimmora, this item allows it to Mega Evolve in battle.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/glimmoranite.png'\n    }\n  ],\n  [\n    'hypercheriberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. Its spicy kick is great when added to curries.\",\n      gen: 9,\n      name: 'Hyper Cheri Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hypercheriberry.png'\n    }\n  ],\n  [\n    'hyperchestoberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. Its dry flavor offers a good balance when used in sweet cream.\",\n      gen: 9,\n      name: 'Hyper Chesto Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperchestoberry.png'\n    }\n  ],\n  [\n    'hyperpechaberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. Its sweet flavor makes it a great ingredient for meringue.\",\n      gen: 9,\n      name: 'Hyper Pecha Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperpechaberry.png'\n    }\n  ],\n  [\n    'hyperrawstberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. Its bitter bite works beautifully in chocolate.\",\n      gen: 9,\n      name: 'Hyper Rawst Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperrawstberry.png'\n    }\n  ],\n  [\n    'hyperaspearberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. Its sour bite makes it perfect for stewing into a confiture.\",\n      gen: 9,\n      name: 'Hyper Aspear Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperaspearberry.png'\n    }\n  ],\n  [\n    'hyperoranberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries, meringue, chocolate, and confitures.\",\n      gen: 9,\n      name: 'Hyper Oran Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperoranberry.png'\n    }\n  ],\n  [\n    'hyperpersimberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries, cream, chocolate, and confitures.\",\n      gen: 9,\n      name: 'Hyper Persim Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperpersimberry.png'\n    }\n  ],\n  [\n    'hyperlumberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries, cream, meringue, and confitures.\",\n      gen: 9,\n      name: 'Hyper Lum Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperlumberry.png'\n    }\n  ],\n  [\n    'hypersitrusberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries, cream, meringue, and chocolate.\",\n      gen: 9,\n      name: 'Hyper Sitrus Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hypersitrusberry.png'\n    }\n  ],\n  [\n    'hyperpomegberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries and meringue.\",\n      gen: 9,\n      name: 'Hyper Pomeg Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperpomegberry.png'\n    }\n  ],\n  [\n    'hyperkelpsyberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in cream and chocolate.\",\n      gen: 9,\n      name: 'Hyper Kelspy Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperkelpsyberry.png'\n    }\n  ],\n  [\n    'hyperqualotberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in meringue and confitures.\",\n      gen: 9,\n      name: 'Hyper Qualot Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperqualotberry.png'\n    }\n  ],\n  [\n    'hyperhondewberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in cream and confitures.\",\n      gen: 9,\n      name: 'Hyper Hondew Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperhondewberry.png'\n    }\n  ],\n  [\n    'hypergrepaberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries.\",\n      gen: 9,\n      name: 'Hyper Grepa Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hypergrepaberry.png'\n    }\n  ],\n  [\n    'hypertamatoberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in cream.\",\n      gen: 9,\n      name: 'Hyper Tamato Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hypertamatoberry.png'\n    }\n  ],\n  [\n    'hyperoccaberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in meringue.\",\n      gen: 9,\n      name: 'Hyper Occa Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperoccaberry.png'\n    }\n  ],\n  [\n    'hyperpasshoberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in chocolate.\",\n      gen: 9,\n      name: 'Hyper Passho Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperpasshoberry.png'\n    }\n  ],\n  [\n    'hyperwacanberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in confitures.\",\n      gen: 9,\n      name: 'Hyper Wacan Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperwacanberry.png'\n    }\n  ],\n  [\n    'hyperrindoberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries.\",\n      gen: 9,\n      name: 'Hyper Rindo Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperrindoberry.png'\n    }\n  ],\n  [\n    'hyperyacheberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in cream.\",\n      gen: 9,\n      name: 'Hyper Yache Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperyacheberry.png'\n    }\n  ],\n  [\n    'hyperchopleberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in meringue.\",\n      gen: 9,\n      name: 'Hyper Chople Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperchopleberry.png'\n    }\n  ],\n  [\n    'hyperkebiaberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in chocolate.\",\n      gen: 9,\n      name: 'Hyper Kebia Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperkebiaberry.png'\n    }\n  ],\n  [\n    'hypershucaberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in confitures.\",\n      gen: 9,\n      name: 'Hyper Shuca Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hypershucaberry.png'\n    }\n  ],\n  [\n    'hypercobaberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries.\",\n      gen: 9,\n      name: 'Hyper Coba Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hypercobaberry.png'\n    }\n  ],\n  [\n    'hyperpayapaberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in cream.\",\n      gen: 9,\n      name: 'Hyper Payapa Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperpayapaberry.png'\n    }\n  ],\n  [\n    'hypertangaberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in meringue.\",\n      gen: 9,\n      name: 'Hyper Tanga Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hypertangaberry.png'\n    }\n  ],\n  [\n    'hyperchartiberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in chocolate.\",\n      gen: 9,\n      name: 'Hyper Charti Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperchartiberry.png'\n    }\n  ],\n  [\n    'hyperkasibberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in confitures.\",\n      gen: 9,\n      name: 'Hyper Kasib Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperkasibberry.png'\n    }\n  ],\n  [\n    'hyperhabanberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in cream and meringue.\",\n      gen: 9,\n      name: 'Hyper Haban Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperhabanberry.png'\n    }\n  ],\n  [\n    'hypercolburberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in cream and confitures.\",\n      gen: 9,\n      name: 'Hyper Colbur Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hypercolburberry.png'\n    }\n  ],\n  [\n    'hyperbabiriberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in chocolate and confitures.\",\n      gen: 9,\n      name: 'Hyper Babiri Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperbabiriberry.png'\n    }\n  ],\n  [\n    'hyperchilanberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries and chocolate.\",\n      gen: 9,\n      name: 'Hyper Chilan Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperchilanberry.png'\n    }\n  ],\n  [\n    'hyperoseliberry',\n    {\n      desc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts. It goes well in curries and confitures.\",\n      gen: 9,\n      name: 'Hyper Roseli Berry',\n      shortDesc: \"A mysterious Berry found in Hyperspace Lumiose that's ideal for making donuts.\",\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hyperroseliberry.png'\n    }\n  ],\n  [\n    'canaribread',\n    {\n      desc: \"A bun made to look like Canari's face. It can be used to restore 100 HP to a Pokémon.\",\n      gen: 9,\n      name: 'Canari Bread',\n      shortDesc: 'It can be used to restore 100 HP to a Pokémon.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/canaribread.png'\n    }\n  ],\n  [\n    'lumiosianbutter',\n    {\n      desc: 'Some of the absolute best butter produced in the Kalos region. Highly sought after by the cooks of Lumiose—if you know, you know. Makes for great donuts.',\n      gen: 9,\n      name: 'Lumiosian Butter',\n      shortDesc: 'Sought after butter that makes great donuts.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/lumiosianbutter.png'\n    }\n  ],\n  [\n    'nicebutter',\n    {\n      desc: 'A nice pack of butter found in Hyperspace Lumiose. With it, you should be able to make even higher quality donuts than before.',\n      gen: 9,\n      name: 'Nice Butter',\n      shortDesc: 'A nice pack of butter found in Hyperspace Lumiose.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/nicebutter.png'\n    }\n  ],\n  [\n    'greatbutter',\n    {\n      desc: 'A great pack of butter found in Hyperspace Lumiose. With it, you should be able to make even higher quality donuts than before.',\n      gen: 9,\n      name: 'Great Butter',\n      shortDesc: 'A great pack of butter found in Hyperspace Lumiose.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/greatbutter.png'\n    }\n  ],\n  [\n    'amazingbutter',\n    {\n      desc: 'An amazing pack of butter found in Hyperspace Lumiose. With it, you should be able to make even higher quality donuts than before.',\n      gen: 9,\n      name: 'Amazing Butter',\n      shortDesc: 'An amazing pack of butter found in Hyperspace Lumiose.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/amazingbutter.png'\n    }\n  ],\n  [\n    'supremebutter',\n    {\n      desc: 'A supreme pack of butter found in Hyperspace Lumiose. With it, you should be able to make even higher quality donuts than before.',\n      gen: 9,\n      name: 'Supreme Butter',\n      shortDesc: 'A supreme pack of butter found in Hyperspace Lumiose.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/supremebutter.png'\n    }\n  ],\n  [\n    'hyperspacebutter',\n    {\n      desc: 'The absolute ultimate in butter, found in Hyperspace Lumiose. With it, you should be able to make even higher quality donuts than before.',\n      gen: 9,\n      name: 'Hyperspace Butter',\n      shortDesc: 'The absolute ultimate in butter, found in Hyperspace Lumiose.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/supremebutter.png'\n    }\n  ],\n  [\n    'hoenniansalt',\n    {\n      desc: 'A coarse salt that can only be harvested in small amounts in the Hoenn region. A tiny pinch will impart a wondrous depth of flavor.',\n      gen: 9,\n      name: 'Hoennian Salt',\n      shortDesc: 'The absolute ultimate in butter, found in Hyperspace Lumiose.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/hoenniansalt.png'\n    }\n  ],\n  [\n    'epicenoire',\n    {\n      desc: \"A mysterious spice that is highly valued among members of the Rust Syndicate. A sprinkle of it elevates the flavor of any dish so sublimely you'll feel as if you're dreaming.\",\n      gen: 9,\n      name: 'Épice Noire',\n      shortDesc: 'A mysterious spice that is highly valued among members of the Rust Syndicate.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/epicenoire.png'\n    }\n  ],\n  [\n    'arbolivaoil',\n    {\n      desc: \"The oil produced by Paldea's Arboliva is said to be so delicious you'll feel as if you've gone to heaven after tasting it. How Corbeau got some is best left a mystery.\",\n      gen: 9,\n      name: 'Arboliva Oil',\n      shortDesc: 'An oil produced by Arboliva in Paldea.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/arbolivaoil.png'\n    }\n  ],\n  [\n    'poppingcandy',\n    {\n      desc: \"A popular candy among the children of Lumiose. It pops in your mouth as if it's exploding, so you can enjoy a shocking experience while eating it.\",\n      gen: 9,\n      name: 'Popping Candy',\n      shortDesc: 'A popular candy among the children of Lumiose.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/poppingcandy.png'\n    }\n  ],\n  [\n    'importantletter',\n    {\n      desc: 'A letter that you were asked to deliver to the director of Académie Étoile by a somewhat peculiar character.',\n      gen: 9,\n      name: 'Important Letter',\n      shortDesc: 'A letter that you were asked to deliver to the director of Académie Étoile by a somewhat peculiar character.',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/importantletter.png'\n    }\n  ],\n  [\n    'dirtyscarf',\n    {\n      desc: \"A scarf that has grown quite shabby. It's easy to imagine that it must have once felt quite luxurious.\",\n      gen: 9,\n      name: 'Dirty Scarf',\n      shortDesc: 'A scarf that has grown quite shabby',\n      specialSprite: 'https://www.serebii.net/itemdex/sprites/za/th/dirtyscarf.png'\n    }\n  ],\n  [\n    'raichunitey',\n    {\n      desc: 'If held by a Raichu, this item allows it to Mega Evolve into Mega Raichu Y in battle.',\n      gen: 9,\n      name: 'Raichunite Y',\n      shortDesc: 'If held by a Raichu, this item allows it to Mega Evolve into Mega Raichu Y in battle.'\n    }\n  ]\n]);\n\nfor (const [key, value] of items.entries()) {\n  value.key = key;\n}\n"
  },
  {
    "path": "src/lib/assets/learnsets.ts",
    "content": "// @ts-nocheck TS checking this file causes major delays in developing\n\nimport { Collection } from '@discordjs/collection';\n\n/** The learnsets in Pokémon */\nexport const learnsets = new Collection<string, Record<string, string[]>>([\n  [\n    'missingno',\n    {\n      blizzard: ['3L1'],\n      bubblebeam: ['3L1'],\n      cut: ['3L1'],\n      doubleedge: ['3L1'],\n      earthquake: ['3L1'],\n      fissure: ['3L1'],\n      fly: ['3L1'],\n      icebeam: ['3L1'],\n      megakick: ['3L1'],\n      megapunch: ['3L1'],\n      psychic: ['3L1'],\n      rage: ['3L1'],\n      razorwind: ['3L1'],\n      rest: ['3L1'],\n      seismictoss: ['3L1'],\n      skyattack: ['3L1'],\n      submission: ['3L1'],\n      substitute: ['3L1'],\n      swordsdance: ['3L1'],\n      takedown: ['3L1'],\n      teleport: ['3L1'],\n      thunder: ['3L1'],\n      thunderwave: ['3L1'],\n      toxic: ['3L1'],\n      triattack: ['3L1'],\n      watergun: ['3L1']\n    }\n  ],\n  [\n    'bulbasaur',\n    {\n      acidspray: ['9M'],\n      amnesia: ['8M', '7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      block: ['5S3'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      celebrate: ['6S5'],\n      charm: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      doubleedge: ['9M', '8L33', '8V', '7L27', '7V', '6L27', '5L27', '4L27', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '8M', '5S3'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frenzyplant: ['5S3'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigadrain: ['9M', '8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '8T', '7T', '6T', '5T'],\n      grasswhistle: ['7E', '6E', '5E', '4E', '3E'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M', '7E', '6E'],\n      growl: ['9L1', '8L1', '8V', '7L3', '7V', '6L3', '6S4', '6S5', '5L3', '5S2', '4L3', '3L4', '3S1'],\n      growth: ['9L6', '8L6', '8V', '7L25', '7V', '6L25', '5L25', '4L25', '3L32', '3S0'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      ingrain: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      leafstorm: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      leechseed: ['9L9', '8L9', '8V', '7L7', '7V', '6L7', '6S4', '5L7', '5S2', '4L7', '3L7', '3S1'],\n      lightscreen: ['8M', '8V', '7M', '7V', '6M', '5M', '4E', '3E'],\n      magicalleaf: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['8E', '7M', '7E', '6M', '6E', '5E', '4E'],\n      outrage: ['8V'],\n      petaldance: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      poisonpowder: ['9L15', '8L15', '8V', '7L13', '7V', '6L13', '6S4', '5L13', '4L13', '3L15'],\n      powerwhip: ['9L33', '8M', '7E', '6E', '5E', '4E'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      razorleaf: ['9L12', '8L12', '8V', '7L19', '7V', '6L19', '5L19', '4L19', '3L20'],\n      razorwind: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '9L18', '8M', '8L18', '7T', '7L37', '6T', '6L37', '5T', '5L37', '4T', '4L37'],\n      skullbash: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      sleeppowder: ['9L15', '8L15', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L15'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludge: ['7E', '6E', '5E', '4E'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L36', '8M', '8L36', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3L46', '3S0'],\n      strength: ['6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L24', '8L24', '7L21', '7V', '6L21', '5L21', '4L21', '3L25', '3S0'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L27', '8L27', '7T', '7L33', '7V', '6T', '6L33', '5T', '5L33', '4T', '4L33', '3L39', '3S0'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '6S5', '5L1', '5S2', '4L1', '3L1', '3S1'],\n      takedown: ['9M', '9L21', '8L21', '8V', '7L15', '7V', '6L15', '5L15', '4L15'],\n      terablast: ['9M'],\n      toxic: ['9M', '9E', '8E', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      vinewhip: ['9L3', '8L3', '8V', '7L7', '7V', '6L9', '6S4', '5L9', '5S2', '4L9', '3L10', '3S1'],\n      weatherball: ['9M', '8M', '5S3'],\n      workup: ['8M', '7M'],\n      worryseed: ['9L30', '8L30', '7T', '7L31', '6T', '6L31', '5T', '5L31', '4T', '4L31']\n    }\n  ],\n  [\n    'ivysaur',\n    {\n      acidspray: ['9M'],\n      amnesia: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      doubleedge: ['9M', '8L45', '8V', '7L31', '7V', '6L31', '5L31', '4L31', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '8M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '8T', '7T', '6T', '5T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      growth: ['9L1', '8L1', '8V', '7L28', '7V', '6L28', '5L28', '4L28', '3L38'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L9', '8L9', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['8M', '8V', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '8M'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      outrage: ['8V'],\n      poisonpowder: ['9L15', '8L15', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L15'],\n      powerwhip: ['9L45', '8M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      razorleaf: ['9L12', '8L12', '8V', '7L20', '7V', '6L20', '5L20', '4L20', '3L22'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '9L20', '8M', '8L20', '7T', '6T', '5T', '4T'],\n      sleeppowder: ['9L15', '8L15', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L15'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L50', '8M', '8L50', '8V', '7M', '7L44', '7V', '6M', '6L44', '5M', '5L44', '4M', '4L44', '3M', '3L56'],\n      strength: ['6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L30', '8L30', '7L23', '7V', '6L23', '5L23', '4L23', '3L29'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L35', '8L35', '7T', '7L39', '7V', '6T', '6L39', '5T', '5L39', '4T', '4L39', '3L47'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L25', '8L25', '8V', '7L15', '7V', '6L15', '5L15', '4L15'],\n      terablast: ['9M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      vinewhip: ['9L1', '8L1', '8V', '7L9', '7V', '6L9', '5L9', '4L9', '3L10'],\n      weatherball: ['9M', '8M'],\n      workup: ['8M', '7M'],\n      worryseed: ['9L40', '8L40', '7T', '7L36', '6T', '6L36', '5T', '5L36', '4T', '4L36']\n    }\n  ],\n  [\n    'venusaur',\n    {\n      acidspray: ['9M'],\n      amnesia: ['9M', '8M', '8V'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      doubleedge: ['9M', '8L51', '8V', '7L31', '7V', '6L31', '5L31', '4L31', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '8M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frenzyplant: ['9M', '8T', '7T', '6T', '6S0', '5T', '4T', '3T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '8T', '7T', '6T', '6S0', '5T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      growth: ['9L1', '8L1', '8V', '7L28', '7V', '6L28', '5L28', '4L28', '3L41'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L9', '8L9', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['8M', '8V', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '8M'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      outrage: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      petalblizzard: ['9M', '9L0', '8L0', '7L50', '6L50'],\n      petaldance: ['9L1', '8L1', '8V', '7L1', '6L32', '5L32', '4L32'],\n      poisonjab: ['9M'],\n      poisonpowder: ['9L15', '8L15', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L15'],\n      powerwhip: ['9L51', '8M', '8V'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      razorleaf: ['9L12', '8L12', '8V', '7L20', '7V', '6L20', '5L20', '4L20', '3L22'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '9L20', '8M', '8L20', '7T', '6T', '5T', '4T'],\n      sleeppowder: ['9L15', '8L15', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L15'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L58', '8M', '8L58', '8V', '7M', '7L53', '7V', '6M', '6L53', '6S0', '5M', '5L53', '4M', '4L53', '3M', '3L65'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L30', '8L30', '7L23', '7V', '6L23', '5L23', '4L23', '3L29'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L37', '8L37', '7T', '7L45', '7V', '6T', '6L45', '6S0', '5T', '5L45', '4T', '4L45', '3L53'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L25', '8L25', '8V', '7L15', '7V', '6L15', '5L15', '4L15'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      vinewhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      weatherball: ['9M', '8M'],\n      workup: ['8M', '7M'],\n      worryseed: ['9L44', '8L44', '7T', '7L39', '6T', '6L39', '5T', '5L39', '4T', '4L39']\n    }\n  ],\n  [\n    'charmander',\n    {\n      acrobatics: ['8M', '5S6'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['7E', '6E'],\n      ancientpower: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bellydrum: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      bite: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      blastburn: ['5S6'],\n      block: ['5S6'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      celebrate: ['6S8'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3T'],\n      crunch: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['9L12', '8L12', '7V'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '7E', '6T', '6E', '5E'],\n      dragonrage: ['8V', '7L16', '7V', '6L16', '6S7', '5L16', '4L16', '3L43'],\n      dragonrush: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      dragontail: ['9M', '9E', '8E'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L4', '8L4', '8V', '7L7', '7V', '6L7', '6S7', '5L7', '5S4', '4L7', '3L7', '3S0'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '8M', '5S6'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L17', '8M', '8L17', '7L25', '6L25', '5L25', '4L25'],\n      firepledge: ['9M', '8T', '7T', '6T', '5T'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      firespin: ['9M', '9L32', '8M', '8L32', '8V', '7L43', '7V', '6L43', '5L43', '4L37', '3L49'],\n      flameburst: ['7L28', '6L28', '5L28'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L24', '8M', '8L24', '8V', '7M', '7L37', '7V', '6M', '6L37', '5M', '5L37', '4M', '4L34', '3M', '3L31'],\n      flareblitz: ['9M', '9L40', '8M', '8L40', '7E', '6E', '5E', '4E'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['8V'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '6S7', '6S8', '5L1', '5S4', '4L1', '3L1', '3S0'],\n      headbutt: ['8V', '7V', '4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '4S1', '4S2', '4S3', '4S5', '3M'],\n      honeclaws: ['6M', '5M'],\n      howl: ['4S1', '4S2', '4S3', '4S5'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L36', '8L36', '7L46', '6L46', '5L46'],\n      irontail: ['9E', '8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['7V'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metalclaw: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3L13'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '8V', '7E', '7V', '6E', '5T', '5E', '4E', '3E'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['4S1', '4S2', '4S3', '4S5'],\n      rage: ['7V', '3L19'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '4S1', '4S2', '4S3', '4S5', '3M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L28', '8M', '8L28', '7L19', '7V', '6L19', '5L19', '4L19', '3L25'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '6S8', '5L1', '5S4', '4L1', '3L1', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      skullbash: ['7V'],\n      slash: ['9L20', '8L20', '8V', '7L34', '7V', '6L34', '5L34', '4L28', '3L37'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L8', '8L8', '8V', '7L10', '7V', '6L10', '6S7', '5L10', '5S4', '4L10', '3L13'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      takedown: ['9M', '7V'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      wingattack: ['8E'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'charmeleon',\n    {\n      acrobatics: ['8M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['8M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      crunch: ['9M', '8M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['9L12', '8L12', '7V'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '6T'],\n      dragonrage: ['8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L48'],\n      dragontail: ['9M'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '8M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L19', '8M', '8L19', '7L28', '6L28', '5L28', '4L28'],\n      firepledge: ['9M', '8T', '7T', '6T', '5T'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      firespin: ['9M', '8M', '8L42', '8V', '7L50', '7V', '6L50', '5L50', '4L43', '3L55'],\n      flameburst: ['7L32', '6L32', '5L32'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L30', '8M', '8L30', '8V', '7M', '7L43', '7V', '6M', '6L43', '5M', '5L43', '4M', '4L39', '3M', '3L34'],\n      flareblitz: ['9M', '9L54', '8M', '8L54'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['8V'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V', '7V', '4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L48', '8L48', '7L54', '6L54', '5L54'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['7V'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metalclaw: ['3L13'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '8V', '5T'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V', '3L20'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L37', '8M', '8L37', '7L21', '7V', '6L21', '5L21', '4L21', '3L27'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      skullbash: ['7V'],\n      slash: ['9L24', '8L24', '8V', '7L39', '7V', '6L39', '5L39', '4L32', '3L41'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L1', '8L1', '8V', '7L10', '7V', '6L10', '5L10', '4L10', '3L13'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M', '7V'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'charizard',\n    {\n      acrobatics: ['9M', '9S11', '8M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9L0', '8M', '8L0', '8V', '7L1', '6L1', '6S1', '6S2', '5L1', '4L1'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['8M'],\n      bellydrum: ['9S11'],\n      bide: ['7V'],\n      blastburn: ['9M', '8T', '7T', '6T', '6S4', '5T', '4T', '3T'],\n      blazekick: ['8M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['8V', '7V', '3T'],\n      crunch: ['9M', '9S11', '8M', '8V'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      defog: ['7T', '4M'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['9L12', '8L12', '7V'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '7S6', '7S7', '6M', '6L1', '6S2', '5M', '5L1', '4M', '4L1', '3M'],\n      dragondance: ['9M', '8M', '7S9'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      dragonrage: ['8V', '7L17', '7V', '7S6', '7S7', '7S8', '6L17', '6S2', '5L17', '4L17', '3L54', '3S0'],\n      dragontail: ['9M', '8V', '8S10', '7M', '6M', '5M'],\n      dualwingbeat: ['8T'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '8V', '7M', '7V', '7S9', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '6S5', '5L1', '4L1', '3L1'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L19', '8M', '8L19', '7L28', '6L28', '6S1', '6S2', '5L28', '4L28'],\n      firepledge: ['9M', '8T', '7T', '6T', '6S4', '5T'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      firespin: ['9M', '9L46', '8M', '8L46', '8V', '7L56', '7V', '6L56', '6S5', '5L56', '4L49', '3L64', '3S0'],\n      fissure: ['7V'],\n      flameburst: ['7L32', '6L32', '6S1', '6S5', '5L32'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: [\n        '9M',\n        '9L30',\n        '8M',\n        '8L30',\n        '8V',\n        '8S10',\n        '7M',\n        '7L47',\n        '7V',\n        '7S8',\n        '6M',\n        '6L47',\n        '6S5',\n        '5M',\n        '5L47',\n        '4M',\n        '4L42',\n        '3M',\n        '3L34'\n      ],\n      flareblitz: ['9M', '9L62', '9S11', '8M', '8L62', '8V', '7L1', '7S6', '7S7', '7S9', '6L1', '6S4', '5L77', '4L66'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fly: ['9M', '8M', '8V', '7M', '7V', '7S6', '7S7', '7S9', '6M', '5M', '4M', '3M'],\n      focusblast: ['9M', '8M', '7M', '6M', '6S3', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['8V'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V', '7V', '4T'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M', '9L1', '8M', '8L1', '8V', '7T', '7L1', '6T', '6L1', '5T', '5L71', '4T', '4L59', '3L1'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      holdhands: ['6S3'],\n      honeclaws: ['6M', '5M'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L54', '8L54', '7L62', '6L62', '6S1', '5L62'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['7V'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metalclaw: ['3L1'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      outrage: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      overheat: ['9M', '8M', '7M', '6M', '6S3', '5M', '4M', '3M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V', '3L20'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      roost: ['8V', '7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '7V'],\n      scaleshot: ['8T'],\n      scaryface: ['9M', '9L39', '8M', '8L39', '7L21', '7V', '6L21', '6S4', '5L21', '4L21', '3L27'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '8S10', '7V', '7S8', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      skullbash: ['7V'],\n      skydrop: ['7M', '6M', '5M'],\n      slash: ['9L24', '8L24', '8V', '8S10', '7L41', '7V', '7S8', '6L41', '5L41', '4L32', '3L44', '3S0'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L1', '8L1', '8V', '7L10', '7V', '6L1', '5L1', '4L1', '3L1'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '6M', '6S3', '5M', '4M'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M', '7V'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      wingattack: ['8V', '7L1', '7V', '6L36', '5L36', '4L36', '3L36', '3S0'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'squirtle',\n    {\n      aquajet: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      aquaring: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      aquatail: ['9L24', '8L24', '7T', '7L28', '6T', '6L28', '5T', '5L28', '4T', '4L28'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurasphere: ['8M', '7E', '6E'],\n      bide: ['7V'],\n      bite: ['9L12', '8L12', '8V', '7L16', '7V', '6L16', '5L16', '4L16', '3L18'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['5S2'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '7E', '6E', '5E', '4M'],\n      bubble: ['8V', '7L13', '7V', '6L13', '6S3', '5L7', '5S1', '4L7', '3L7', '3S0'],\n      bubblebeam: ['8V', '7V'],\n      captivate: ['4M'],\n      celebrate: ['6S4'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['7V'],\n      counter: ['7V', '3T'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonpulse: ['8M', '8V', '7T', '7E', '6T', '6E'],\n      dynamicpunch: ['7V', '3T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      falseswipe: ['8M', '5S2'],\n      flail: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M', '8T'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      followme: ['5S2'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydrocannon: ['5S2'],\n      hydropump: ['9M', '9L33', '8M', '8L33', '8V', '7L40', '7V', '6L40', '5L40', '4L37', '3L47'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '9L30', '8M', '8L30', '7T', '7L34', '6T', '6L34', '5T', '5L34', '4T', '4L34'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lifedew: ['9E', '8E'],\n      liquidation: ['9M'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mirrorcoat: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      mist: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      muddywater: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      mudshot: ['9M'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['7E', '6E', '5E', '4E', '3E'],\n      naturalgift: ['4M'],\n      outrage: ['8V'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L18', '8M', '8L18', '8V', '7M', '7L22', '7V', '6M', '6L22', '5M', '5L22', '4M', '4L22', '3M', '3L28'],\n      rage: ['7V'],\n      raindance: ['9M', '9L21', '8M', '8L21', '7M', '7L37', '7V', '6M', '6L37', '5M', '5L37', '4M', '4L34', '3M', '3L33'],\n      rapidspin: ['9L9', '8L9', '7L19', '7V', '6L19', '5L19', '4L19', '3L23'],\n      reflect: ['8V', '7V'],\n      refresh: ['7E', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['8V'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shellsmash: ['9L27', '8L27'],\n      skullbash: ['8L36', '8V', '7L31', '7V', '6L31', '5L31', '4L31', '3L40'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '6S4', '5L1', '5S1', '4L1', '3L1', '3S0'],\n      tailwhip: ['9L1', '8L1', '8V', '7L4', '7V', '6L4', '6S3', '6S4', '5L4', '5S1', '4L4', '3L4', '3S0'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L3', '8L3', '8V', '7L7', '7V', '6L7', '6S3', '5L13', '4L13', '3L13'],\n      waterpledge: ['9M', '8T', '7T', '6T', '5T'],\n      waterpulse: ['9M', '9L15', '8L15', '7T', '7L25', '6T', '6L25', '5L25', '4M', '4L25', '3M'],\n      waterspout: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      wavecrash: ['9L36'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      withdraw: ['9L6', '8L6', '8V', '7L10', '7V', '6L10', '6S3', '5L10', '5S1', '4L10', '3L10', '3S0'],\n      workup: ['8M', '7M'],\n      yawn: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'wartortle',\n    {\n      aquatail: ['9L30', '8L30', '7T', '7L33', '6T', '6L32', '5T', '5L32', '4T', '4L32'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurasphere: ['8M'],\n      bide: ['7V'],\n      bite: ['9L12', '8L12', '8V', '7L17', '7V', '6L16', '5L16', '4L16', '3L19'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '4M'],\n      bubble: ['8V', '7L13', '7V', '6L13', '5L1', '4L1', '3L1'],\n      bubblebeam: ['8V', '7V'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonpulse: ['8M', '8V', '7T', '6T'],\n      dynamicpunch: ['7V', '3T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M', '8T'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L45', '8M', '8L45', '8V', '7L49', '7V', '6L48', '5L48', '4L44', '3L53'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '9L40', '8M', '8L40', '7T', '7L41', '6T', '6L40', '5T', '5L40', '4T', '4L40'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      liquidation: ['9M'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['8V'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L20', '8M', '8L20', '8V', '7M', '7L25', '7V', '6M', '6L24', '5M', '5L24', '4M', '4L24', '3M', '3L31'],\n      rage: ['7V'],\n      raindance: ['9M', '9L25', '8M', '8L25', '7M', '7L45', '7V', '6M', '6L44', '5M', '5L44', '4M', '4L40', '3M', '3L37'],\n      rapidspin: ['9L9', '8L9', '7L21', '7V', '6L20', '5L20', '4L20', '3L25'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['8V'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shellsmash: ['9L35', '8L35'],\n      skullbash: ['8L50', '8V', '7L37', '7V', '6L36', '5L36', '4L36', '3L45'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L13', '4L13', '3L13'],\n      waterpledge: ['9M', '8T', '7T', '6T', '5T'],\n      waterpulse: ['9M', '9L15', '8L15', '7T', '7L29', '6T', '6L28', '5L28', '4M', '4L28', '3M'],\n      wavecrash: ['9L50'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      withdraw: ['9L1', '8L1', '8V', '7L10', '7V', '6L10', '5L10', '4L10', '3L10'],\n      workup: ['8M', '7M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'blastoise',\n    {\n      aquajet: ['8V'],\n      aquatail: ['9L30', '8L30', '7T', '7L33', '6T', '6L32', '5T', '5L32', '4T', '4L32'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M', '8M'],\n      avalanche: ['9M', '8M', '4M'],\n      bide: ['7V'],\n      bite: ['9L12', '8L12', '8V', '7L17', '7V', '6L16', '5L16', '4L16', '3L19'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '4M'],\n      bubble: ['8V', '7L13', '7V', '6L13', '5L1', '4L1', '3L1'],\n      bubblebeam: ['8V', '7V'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      crunch: ['9M', '8M'],\n      curse: ['7V'],\n      darkpulse: ['9M', '8M', '8V', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '6T'],\n      dragontail: ['8V', '7M', '6M', '5M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['8V'],\n      falseswipe: ['8M'],\n      fissure: ['7V'],\n      flashcannon: ['9M', '9L0', '8M', '8L0', '8V', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M', '8T'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydrocannon: ['9M', '8T', '7T', '6T', '6S1', '5T', '4T', '3T'],\n      hydropump: ['9M', '9L49', '8M', '8L49', '8V', '7L60', '7V', '6L60', '6S1', '5L60', '4L53', '3L68', '3S0'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '9L42', '8M', '8L42', '7T', '7L47', '6T', '6L46', '6S1', '5T', '5L46', '4T', '4L46'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      liquidation: ['9M', '8M', '7T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L20', '8M', '8L20', '8V', '7M', '7L25', '7V', '6M', '6L24', '5M', '5L24', '4M', '4L24', '3M', '3L31', '3S0'],\n      rage: ['7V'],\n      raindance: ['9M', '9L25', '8M', '8L25', '7M', '7L54', '7V', '6M', '6L53', '5M', '5L53', '4M', '4L46', '3M', '3L42', '3S0'],\n      rapidspin: ['9L9', '8L9', '7L21', '7V', '6L20', '5L20', '4L20', '3L25'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shellsmash: ['9L35', '8L35'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skullbash: ['8L56', '8V', '7L40', '7V', '6L39', '5L39', '4L39', '3L55', '3S0'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L13', '4L13', '3L13'],\n      waterpledge: ['9M', '8T', '7T', '6T', '6S1', '5T'],\n      waterpulse: ['9M', '9L15', '8L15', '7T', '7L29', '6T', '6L28', '5L28', '4M', '4L28', '3M'],\n      wavecrash: ['9L56'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      withdraw: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      workup: ['8M', '7M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'caterpie',\n    {\n      bugbite: ['8L9', '7T', '7L9', '6T', '6L15', '5T', '5L15', '4T', '4L15'],\n      electroweb: ['8M', '7T', '6T', '5T'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stringshot: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3L1'],\n      tackle: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'metapod',\n    {\n      bugbite: ['7T', '6T', '5T', '4T'],\n      electroweb: ['8M', '7T', '6T', '5T'],\n      harden: ['8L0', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      stringshot: ['4T']\n    }\n  ],\n  [\n    'butterfree',\n    {\n      acrobatics: ['8M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M', '3S0'],\n      aircutter: ['5D', '4T'],\n      airslash: ['8M', '8L24', '8V', '7L43'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M'],\n      bide: ['7V'],\n      bugbite: ['8L1', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['8M', '8L32', '8V', '7L31', '6L42', '5L42', '4L40'],\n      captivate: ['7L37', '6L40', '5L40', '4M', '4L36'],\n      confide: ['7M', '6M'],\n      confusion: ['8L8', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['8M'],\n      dreameater: ['8V', '7M', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['8T'],\n      electroweb: ['8M', '7T', '6T', '5T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      gust: ['8L0', '8V', '7L1', '7V', '6L16', '5L16', '4L16', '3L28'],\n      harden: ['8L1'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['8M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      morningsun: ['3S0'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      ominouswind: ['4T'],\n      poisonpowder: ['8L12', '8V', '7L13', '7V', '6L12', '5L12', '4L12', '3L13'],\n      pollenpuff: ['8M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L16', '8V', '7L17', '7V', '6L24', '5L24', '4L24', '3L34'],\n      psychic: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      psywave: ['7V'],\n      quiverdance: ['8L44', '8V', '7L47', '6L46', '5L46'],\n      rage: ['7V'],\n      ragepowder: ['8L40', '7L35', '6L34', '5L34'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '6M', '5T', '5D', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '8L28', '7M', '7L25', '7V', '6M', '6L36', '5M', '5L36', '4M', '4L34', '3M', '3L40'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['7L19', '6L28', '5L28', '4M', '4L28', '3L47'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeppowder: ['8L12', '8V', '7L13', '7V', '6L12', '5L12', '4L12', '3L15', '3S0'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      stringshot: ['8L1', '4T'],\n      strugglebug: ['6M', '5M'],\n      stunspore: ['8L12', '8V', '7L13', '7V', '6L12', '5L12', '4L12', '3L14'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['8L4', '8V', '7L23', '7V', '6L18', '5L18', '4L18', '3L18'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['8M', '7V', '4T', '3T'],\n      tackle: ['8L1'],\n      tailwind: ['8L36', '7T', '7L41', '6T', '6L30', '5T', '5L30', '4T', '4L30'],\n      takedown: ['7V'],\n      teleport: ['8V', '7V'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uturn: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      whirlwind: ['8L20', '8V', '7L29', '7V', '6L22', '5L22', '4L22', '3L23']\n    }\n  ],\n  [\n    'weedle',\n    {\n      bugbite: ['7T', '7L9', '6T', '6L15', '5T', '5L15', '4T', '4L15'],\n      electroweb: ['7T', '6T', '5T'],\n      poisonsting: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      stringshot: ['8V', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3L1']\n    }\n  ],\n  [\n    'kakuna',\n    {\n      bugbite: ['7T', '6T', '5T', '4T'],\n      electroweb: ['7T', '6T', '5T'],\n      harden: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      irondefense: ['7T', '6T', '5T', '4T'],\n      stringshot: ['4T']\n    }\n  ],\n  [\n    'beedrill',\n    {\n      acrobatics: ['7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8V', '7L38', '7V', '6L31', '5L31', '4L31', '3L40'],\n      aircutter: ['5D', '4T'],\n      assurance: ['7L26', '6L34', '5L34', '4L34'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['3S0'],\n      bide: ['7V'],\n      brickbreak: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['7M'],\n      bugbite: ['7T', '6T', '5T', '4T'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defog: ['7T', '4M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['8V', '7T', '6T', '5T'],\n      electroweb: ['7T', '6T', '5T'],\n      endeavor: ['7T', '7L41', '6T', '6L40', '5T', '5L40', '4T', '4L40', '3L45'],\n      endure: ['7V', '4M', '3T'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['7M', '6M', '5M', '4M'],\n      fellstinger: ['7L44', '6L45'],\n      flash: ['6M', '5M', '4M'],\n      focusenergy: ['8V', '7L20', '7V', '6L13', '5L13', '4L13', '3L15'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      furycutter: ['7V', '5D', '4T', '3T'],\n      gigadrain: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      outrage: ['8V'],\n      payback: ['7M', '6M', '5M', '4M'],\n      peck: ['8V'],\n      pinmissile: ['8V', '7L32', '7V', '6L28', '5L28', '4L28', '3L35'],\n      poisonjab: ['8V', '7M', '7L35', '6M', '6L37', '5M', '5L37', '4M', '4L37'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L17', '7V', '6L22', '5L22', '4L22', '3L30'],\n      rage: ['8V', '7L14', '7V', '6L19', '5L19', '4L19', '3L25'],\n      reflect: ['8V', '7V'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      silverwind: ['4M'],\n      skullbash: ['7V'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['7V', '4T', '3T'],\n      swordsdance: ['7M', '7V', '6M', '5M', '4M', '3T', '3S0'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      thief: ['7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['7T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['7L29', '6L25', '5L25', '4L25'],\n      twineedle: ['8V', '7L1', '7V', '6L16', '5L16', '4L16', '3L20', '3S0'],\n      uturn: ['8V', '7M', '6M', '5M', '4M'],\n      venoshock: ['7M', '7L23', '6M', '5M'],\n      xscissor: ['8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'pidgey',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8V', '7L29', '7V', '6L29', '5L29', '4L29', '3L39'],\n      aircutter: ['7E', '6E', '5E', '4T', '4E', '3E'],\n      airslash: ['8V', '7L49', '7E', '6L49', '6E', '5L49', '5E', '4L49', '4E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bravebird: ['7E', '6E', '5E', '4E'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '7E', '6E', '5E', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['7V', '4M', '3T'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['7L25', '6L25', '5L25', '4L25', '3L31'],\n      feintattack: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      fly: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gust: ['8V', '7L9', '7V', '6L9', '5L9', '5D', '4L9', '3L9'],\n      headbutt: ['8V'],\n      heatwave: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['7L53', '6L53', '5L53'],\n      mimic: ['7V', '3T'],\n      mirrormove: ['8V', '7L45', '7V', '6L45', '5L45', '4L45', '3L47'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      pluck: ['5M', '4M'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      quickattack: ['8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L13'],\n      rage: ['7V'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['8V', '7V'],\n      reflect: ['8V', '7V'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '7L37', '6M', '6L37', '5T', '5L37', '4M', '4L37'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['8V', '7L5', '7V', '6L5', '5L5', '4L5', '3L5'],\n      secretpower: ['6M', '5D', '4M', '3M'],\n      skyattack: ['7T', '7V', '6T', '3T'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['7M', '7E', '7V', '6M', '6E', '5E', '5D', '4M', '4E', '3M', '3E'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      tackle: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L41'],\n      takedown: ['7V'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['7L21', '6L21', '5L21', '4T', '4L21'],\n      uproar: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      uturn: ['8V', '7M', '6M', '5M', '4M'],\n      whirlwind: ['8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L19'],\n      wingattack: ['8V', '7L33', '7V', '6L33', '5L33', '4L33', '3L25'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'pidgeotto',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8V', '7L32', '7V', '6L32', '5L32', '4L32', '3L43'],\n      aircutter: ['4T'],\n      airslash: ['8V', '7L57', '6L57', '5L57', '4L57'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['7V', '4M', '3T'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['7L27', '6L27', '5L27', '4L27', '3L34', '3S0'],\n      fly: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gust: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V'],\n      heatwave: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['7L62', '6L62', '5L62'],\n      mimic: ['7V', '3T'],\n      mirrormove: ['8V', '7L52', '7V', '6L52', '5L52', '4L52', '3L52'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      pluck: ['5M', '4M'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L13'],\n      rage: ['7V'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['8V', '7V'],\n      reflect: ['8V', '7V'],\n      refresh: ['3S0'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '7L42', '6M', '6L42', '5T', '5L42', '4M', '4L42'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      skyattack: ['7T', '7V', '6T', '3T'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['7M', '7V', '6M', '4M', '3M', '3S0'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      tackle: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['7T', '7L47', '6T', '6L47', '5T', '5L47', '4T', '4L47'],\n      takedown: ['7V'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['7L22', '6L22', '5L22', '4T', '4L22'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      uturn: ['8V', '7M', '6M', '5M', '4M'],\n      whirlwind: ['8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L20'],\n      wingattack: ['8V', '7L37', '7V', '6L37', '5L37', '4L37', '3L27', '3S0'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'pidgeot',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8V', '7L32', '7V', '6L32', '5L32', '4L32', '3L48'],\n      aircutter: ['4T'],\n      airslash: ['8V', '7L62', '6L62', '5L62', '4L62'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['7V', '4M', '3T'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['7L27', '6L27', '5L27', '4L27', '3L34'],\n      fly: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      gust: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V'],\n      heatwave: ['8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['7L1', '6L1', '5L68'],\n      hyperbeam: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      laserfocus: ['7T'],\n      mimic: ['7V', '3T'],\n      mirrormove: ['8V', '7L56', '7V', '6L56', '5L56', '5S0', '4L56', '3L62'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      pluck: ['5M', '4M'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      rage: ['7V'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['8V', '7V'],\n      reflect: ['8V', '7V'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '7L44', '6M', '6L44', '5T', '5L44', '4M', '4L44'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      skyattack: ['8V', '7T', '7V', '6T', '5T', '5S0', '4T', '3T'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['7M', '7V', '6M', '4M', '3M'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      tackle: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['7T', '7L50', '6T', '6L50', '5T', '5L50', '4T', '4L50'],\n      takedown: ['7V'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['7L22', '6L22', '5L22', '4T', '4L22'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      uturn: ['8V', '7M', '6M', '5M', '4M'],\n      whirlwind: ['8V', '7L17', '7V', '6L17', '5L17', '5S0', '4L17', '3L20'],\n      wingattack: ['8V', '7L38', '7V', '6L38', '5L38', '5S0', '4L38', '3L27'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'rattata',\n    {\n      assurance: ['7L19', '6L25', '5L25', '4L25'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bite: ['8V', '7L10', '7E', '7V', '6L10', '6E', '5L10', '5E', '4L10', '4E', '3E'],\n      blizzard: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['7V', '3T'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      counter: ['7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['8V', '7L22', '6L22', '5L22', '4L22'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      dig: ['8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8V', '7L31', '7V', '6L31', '5L31', '4L31', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endeavor: ['7T', '7L34', '6T', '6L34', '5T', '5L34', '4T', '4L34', '3L41'],\n      endure: ['7V', '4M', '3T'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      finalgambit: ['7E', '6E', '5E'],\n      flamewheel: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      focusenergy: ['8V', '7L7', '7V', '6L7', '5L7', '4L7', '3L20'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperfang: ['8V', '7L16', '7V', '6L16', '5L16', '4L16', '3L13'],\n      icebeam: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8V', '7T', '7V', '6T', '5T', '5D', '4M', '3M'],\n      lastresort: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      mefirst: ['7E', '6E', '5E', '5D', '4E'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      pluck: ['5M', '4M'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L13', '7V', '6L13', '5L13', '4L13', '3L27'],\n      quickattack: ['8V', '7L4', '7V', '6L4', '5L4', '5D', '4L4', '3L7'],\n      rage: ['7V'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['7E', '6E', '5E'],\n      reversal: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      screech: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['8V', '7L25', '6L19', '5L19', '4T', '4L19'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['8V', '7T', '7L28', '7V', '6T', '6L28', '5T', '5L28', '4T', '4L28', '3L34'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      swift: ['7V', '4T', '3T'],\n      tackle: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['7V'],\n      taunt: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8V', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['7T', '7E', '6T', '6E', '5T', '5E', '4E', '3E'],\n      uturn: ['8V', '7M', '6M', '5M', '4M'],\n      watergun: ['7V'],\n      wildcharge: ['7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'rattataalola',\n    {\n      assurance: ['7L19'],\n      attract: ['7M'],\n      bite: ['8V', '7L10'],\n      blizzard: ['8V', '7M'],\n      confide: ['7M'],\n      counter: ['7E'],\n      covet: ['7T'],\n      crunch: ['8V', '7L22'],\n      darkpulse: ['8V', '7M'],\n      dig: ['8V'],\n      doubleedge: ['8V', '7L31'],\n      doubleteam: ['7M'],\n      embargo: ['7M'],\n      endeavor: ['7T', '7L34'],\n      facade: ['8V', '7M'],\n      finalgambit: ['7E'],\n      focusenergy: ['8V', '7L7'],\n      frustration: ['7M'],\n      furyswipes: ['7E'],\n      grassknot: ['7M'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M'],\n      hyperfang: ['8V', '7L16'],\n      icebeam: ['8V', '7M'],\n      icywind: ['7T'],\n      irontail: ['8V', '7T'],\n      lastresort: ['7T'],\n      mefirst: ['7E'],\n      protect: ['8V', '7M'],\n      pursuit: ['7L13'],\n      quash: ['7M'],\n      quickattack: ['8V', '7L4'],\n      raindance: ['7M'],\n      rest: ['8V', '7M'],\n      return: ['7M'],\n      revenge: ['7E'],\n      reversal: ['7E'],\n      round: ['7M'],\n      shadowball: ['8V', '7M'],\n      shadowclaw: ['7M'],\n      shockwave: ['7T'],\n      sleeptalk: ['7M'],\n      sludgebomb: ['8V', '7M'],\n      snarl: ['7M'],\n      snatch: ['7T', '7E'],\n      snore: ['7T'],\n      stockpile: ['7E'],\n      substitute: ['8V', '7M'],\n      suckerpunch: ['8V', '7L25'],\n      sunnyday: ['7M'],\n      superfang: ['8V', '7T', '7L28'],\n      swagger: ['7M'],\n      swallow: ['7E'],\n      switcheroo: ['7E'],\n      tackle: ['8V', '7L1'],\n      tailwhip: ['8V', '7L1'],\n      taunt: ['8V', '7M'],\n      thief: ['7M'],\n      torment: ['7M'],\n      toxic: ['8V', '7M'],\n      uproar: ['7T', '7E'],\n      uturn: ['8V', '7M'],\n      zenheadbutt: ['7T']\n    }\n  ],\n  [\n    'raticate',\n    {\n      assurance: ['7L19', '6L29', '5L29', '4L29'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bite: ['8V', '7L10', '6L10', '5L10', '4L10'],\n      blizzard: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['7V', '3T'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      counter: ['8V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['8V', '7L24', '6L24', '5L24', '4L24'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      dig: ['8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8V', '7L39', '7V', '6L39', '5L39', '4L39', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endeavor: ['7T', '7L44', '6T', '6L44', '5T', '5L44', '4T', '4L44', '3L50'],\n      endure: ['7V', '4M', '3T'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8V', '7L1', '7V', '6L1', '5L1', '4L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['8V'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperfang: ['8V', '7L16', '7V', '6L16', '5L16', '4L16', '3L13', '3S0'],\n      icebeam: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      pluck: ['5M', '4M'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L13', '7V', '6L13', '5L13', '4L13', '3L30'],\n      quickattack: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      rage: ['7V'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['7L1', '7V', '6L20', '5L20', '4L20', '3L20', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['8V', '7L29', '6L19', '5L19', '4T', '4L19'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['8V', '7T', '7L34', '7V', '6T', '6L34', '5T', '5L34', '4T', '4L34', '3L40', '3S0'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      swordsdance: ['8V', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      tackle: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['7V'],\n      taunt: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['7T'],\n      thunder: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8V', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['7T', '6T', '5T'],\n      uturn: ['8V', '7M', '6M', '5M', '4M'],\n      watergun: ['7V'],\n      wildcharge: ['7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'raticatealola',\n    {\n      assurance: ['7L19'],\n      attract: ['7M'],\n      bite: ['8V', '7L10'],\n      blizzard: ['8V', '7M'],\n      bulkup: ['8V', '7M'],\n      confide: ['7M'],\n      counter: ['8V'],\n      covet: ['7T'],\n      crunch: ['8V', '7L24'],\n      darkpulse: ['8V', '7M'],\n      dig: ['8V'],\n      doubleedge: ['8V', '7L39'],\n      doubleteam: ['7M'],\n      embargo: ['7M'],\n      endeavor: ['7T', '7L44'],\n      facade: ['8V', '7M'],\n      focusenergy: ['8V', '7L1'],\n      frustration: ['7M'],\n      furyswipes: ['8V'],\n      gigaimpact: ['7M'],\n      grassknot: ['7M'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8V', '7M'],\n      hyperfang: ['8V', '7L16'],\n      icebeam: ['8V', '7M'],\n      icywind: ['7T'],\n      irontail: ['8V', '7T'],\n      knockoff: ['7T'],\n      lastresort: ['7T'],\n      protect: ['8V', '7M'],\n      pursuit: ['7L13'],\n      quash: ['7M'],\n      quickattack: ['8V', '7L1'],\n      raindance: ['7M'],\n      rest: ['8V', '7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      round: ['7M'],\n      scaryface: ['7L1'],\n      shadowball: ['8V', '7M'],\n      shadowclaw: ['7M'],\n      shockwave: ['7T'],\n      sleeptalk: ['7M'],\n      sludgebomb: ['8V', '7M'],\n      sludgewave: ['7M'],\n      snarl: ['7M'],\n      snatch: ['7T'],\n      snore: ['7T'],\n      stompingtantrum: ['7T'],\n      substitute: ['8V', '7M'],\n      suckerpunch: ['8V', '7L29'],\n      sunnyday: ['7M'],\n      superfang: ['8V', '7T', '7L34'],\n      swagger: ['7M'],\n      swordsdance: ['8V', '7M', '7L1'],\n      tackle: ['8V', '7L1'],\n      tailwhip: ['8V', '7L1'],\n      taunt: ['8V', '7M'],\n      thief: ['7M'],\n      throatchop: ['7T'],\n      torment: ['7M'],\n      toxic: ['8V', '7M'],\n      uproar: ['7T'],\n      uturn: ['8V', '7M'],\n      venoshock: ['7M'],\n      zenheadbutt: ['7T']\n    }\n  ],\n  [\n    'raticatealolatotem',\n    {\n      assurance: ['7L19', '7S0'],\n      attract: ['7M'],\n      bite: ['7L10', '7S0'],\n      blizzard: ['7M'],\n      bulkup: ['7M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      crunch: ['7L24'],\n      darkpulse: ['7M'],\n      doubleedge: ['7L39'],\n      doubleteam: ['7M'],\n      embargo: ['7M'],\n      endeavor: ['7T', '7L44'],\n      facade: ['7M'],\n      focusenergy: ['7L1'],\n      frustration: ['7M'],\n      gigaimpact: ['7M'],\n      grassknot: ['7M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['7M'],\n      hyperfang: ['7L16', '7S0'],\n      icebeam: ['7M'],\n      icywind: ['7T'],\n      irontail: ['7T'],\n      knockoff: ['7T'],\n      lastresort: ['7T'],\n      protect: ['7M'],\n      pursuit: ['7L13', '7S0'],\n      quash: ['7M'],\n      quickattack: ['7L1'],\n      raindance: ['7M'],\n      rest: ['7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      round: ['7M'],\n      scaryface: ['7L1'],\n      shadowball: ['7M'],\n      shadowclaw: ['7M'],\n      shockwave: ['7T'],\n      sleeptalk: ['7M'],\n      sludgebomb: ['7M'],\n      sludgewave: ['7M'],\n      snarl: ['7M'],\n      snatch: ['7T'],\n      snore: ['7T'],\n      stompingtantrum: ['7T'],\n      substitute: ['7M'],\n      suckerpunch: ['7L29'],\n      sunnyday: ['7M'],\n      superfang: ['7T', '7L34'],\n      swagger: ['7M'],\n      swordsdance: ['7M', '7L1'],\n      tackle: ['7L1'],\n      tailwhip: ['7L1'],\n      taunt: ['7M'],\n      thief: ['7M'],\n      throatchop: ['7T'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      uproar: ['7T'],\n      uturn: ['7M'],\n      venoshock: ['7M'],\n      zenheadbutt: ['7T']\n    }\n  ],\n  [\n    'spearow',\n    {\n      aerialace: ['7M', '7L15', '6M', '6L17', '5M', '5L17', '4M', '4L17', '3M', '3L25', '3S0'],\n      agility: ['8V', '7L25', '7V', '6L25', '5L25', '4L25', '3L43'],\n      aircutter: ['4T'],\n      assurance: ['7L22', '6L29', '5L29', '4L29'],\n      astonish: ['7E', '6E', '5E', '4E', '3E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['3S0'],\n      bide: ['7V'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillpeck: ['8V', '7L36', '7V', '6L37', '5L37', '4L37', '3L37'],\n      drillrun: ['8V', '7T', '6T', '5T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['7V', '4M', '3T'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['7M', '7V', '6M', '5M', '4E', '3E', '3S0'],\n      featherdance: ['7E', '6E', '5E', '4E'],\n      feintattack: ['7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      fly: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8V', '7L29'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8V', '7L11', '7V', '6L9', '5L9', '4L9', '3L13'],\n      growl: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V'],\n      heatwave: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      leer: ['8V', '7L4', '7V', '6L5', '5L5', '4L5', '3L7', '3S0'],\n      mimic: ['7V', '3T'],\n      mirrormove: ['8V', '7L18', '7V', '6L21', '5L21', '4L21', '3L31'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      peck: ['8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      pluck: ['5M', '4M'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L8', '7V', '6L13', '5L13', '4L13', '3L19'],\n      quickattack: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rage: ['7V'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7E', '7V', '6E', '5E'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '7L32', '6M', '6L33', '5T', '5L33', '4M', '4L33'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      skyattack: ['7T', '7E', '7V', '6T', '6E', '5T', '5E', '4E', '3T', '3E'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['7M', '7E', '7V', '6M', '6E', '5E', '5D', '4M', '3M'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8V', '7E', '7V', '6E', '5E', '4E', '3E'],\n      twister: ['4T'],\n      uproar: ['7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      uturn: ['8V', '7M', '6M', '5M', '4M'],\n      whirlwind: ['7E', '7V', '6E', '5E', '4E'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'fearow',\n    {\n      aerialace: ['7M', '7L15', '6M', '6L17', '5M', '5L17', '4M', '4L17', '3M'],\n      agility: ['8V', '7L27', '7V', '6L29', '5L29', '4L29', '3L47'],\n      aircutter: ['4T'],\n      assurance: ['7L23', '6L35', '5L35', '4L35'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillpeck: ['8V', '7L41', '7V', '6L47', '5L47', '4L47', '3L40'],\n      drillrun: ['8V', '7T', '7L1', '6T', '6L1', '5T', '5L53'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['7V', '4M', '3T'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['7M', '6M', '5M'],\n      fly: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8V', '7L32'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8V', '7L11', '7V', '6L1', '5L1', '4L1', '3L1'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      growl: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V'],\n      heatwave: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      laserfocus: ['7T'],\n      leer: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['7V', '3T'],\n      mirrormove: ['8V', '7L18', '7V', '6L23', '5L23', '4L23', '3L32'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      peck: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pluck: ['7L1', '6L1', '5M', '5L1', '4M', '4L1'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L1', '7V', '6L13', '5L13', '4L13', '3L26'],\n      quickattack: ['8V'],\n      rage: ['7V'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7V'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '7L36', '6M', '6L41', '5T', '5L41', '4M', '4L41'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      skyattack: ['8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['7M', '7V', '6M', '4M', '3M'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['7T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8V'],\n      twister: ['4T'],\n      uproar: ['7T', '6T', '5T'],\n      uturn: ['8V', '7M', '6M', '5M', '4M'],\n      whirlwind: ['7V'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'ekans',\n    {\n      acid: ['9L20', '8V', '7L20', '7V', '6L20', '5L20', '4L20', '3L32'],\n      acidspray: ['9M', '9L28', '7L28', '6L28', '5L28'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      belch: ['9L38', '7L38', '6L38'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      bite: ['9L9', '8V', '7L9', '7V', '6L9', '5L9', '4L9', '3L13', '3S0'],\n      bodyslam: ['7V', '3T'],\n      brutalswing: ['7M'],\n      bulldoze: ['7M', '6M', '5M'],\n      captivate: ['4M'],\n      coil: ['9L44', '7L44', '6L44', '5L44'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '7V'],\n      curse: ['7V'],\n      darkpulse: ['9M', '8V', '7M', '6M', '5T', '5D', '4M'],\n      dig: ['9M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      disable: ['7E', '6E', '5E', '4E'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthquake: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['9M'],\n      fissure: ['7V'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['9L36', '7T', '7L36', '6T', '6L36', '5T', '5L36', '4T', '4L33'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      glare: ['9L12', '8V', '7L12', '7V', '6L12', '5L12', '4L12', '3L20'],\n      gunkshot: ['9M', '9L49', '7T', '7L49', '6T', '6L49', '5T', '5L49', '4T', '4L41'],\n      haze: ['9M', '9L41', '8V', '7L41', '7V', '6L41', '5L41', '4L36', '3L44'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      irontail: ['8V', '7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      leechlife: ['9M'],\n      leer: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      mudbomb: ['7L33', '6L33', '5L33', '4L28'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poisonfang: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      poisonjab: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      poisonsting: ['9L4', '8V', '7L4', '7V', '6L4', '5L4', '5D', '4L4', '3L8', '3S0', '3S1'],\n      poisontail: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      screech: ['9L17', '8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L25'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      skittersmack: ['9M'],\n      skullbash: ['7V'],\n      slam: ['8V', '7E', '7V', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '9L33', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '7M', '6M', '5M'],\n      snarl: ['9M'],\n      snatch: ['7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '9E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      spitup: ['9L25', '7L25', '6L25', '5L25', '4L25', '3L37'],\n      stockpile: ['9L25', '7L25', '6L25', '5L25', '4L25', '3L37'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9E', '7E', '6E', '5E'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9L25', '7L25', '6L25', '5L25', '4L25', '3L37'],\n      switcheroo: ['9E', '7E', '6E', '5E', '4E'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      wrap: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1']\n    }\n  ],\n  [\n    'arbok',\n    {\n      acid: ['9L20', '8V', '7L20', '7V', '6L20', '5L20', '4L20', '3L38'],\n      acidspray: ['9M', '9L32', '7L32', '6L32', '5L32'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      belch: ['9L48', '7L48', '6L48'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      bite: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      bodyslam: ['9M', '7V', '3T'],\n      breakingswipe: ['9M'],\n      brutalswing: ['7M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      coil: ['9L56', '7L56', '6L56', '5L56'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L0', '8V', '7L1', '6L22', '5L22', '4L22'],\n      curse: ['7V'],\n      darkpulse: ['9M', '8V', '7M', '6M', '5T', '4M'],\n      dig: ['9M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragontail: ['9M', '8V', '7M', '6M', '5M'],\n      earthquake: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      fissure: ['7V'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['9L44', '7T', '7L44', '6T', '6L44', '5T', '5L44', '4T', '4L42'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      glare: ['9L12', '8V', '7L12', '7V', '6L12', '5L12', '4L12', '3L20', '3S0'],\n      gunkshot: ['9M', '9L63', '7T', '7L63', '6T', '6L63', '5T', '5L63', '4T', '4L56'],\n      haze: ['9M', '9L51', '8V', '7L51', '7V', '6L51', '5L51', '4L48', '3L56'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      infestation: ['7M', '6M'],\n      irontail: ['8V', '7T', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      leechlife: ['9M'],\n      leer: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      mudbomb: ['7L39', '6L39', '5L39', '4L34'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      naturalgift: ['4M'],\n      painsplit: ['9M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      poisonsting: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      poisontail: ['9M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L17', '8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L28'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      skittersmack: ['9M'],\n      skullbash: ['7V'],\n      slam: ['8V'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '9L39', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      sludgewave: ['9M', '7M', '6M', '5M'],\n      snarl: ['9M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      spitup: ['9L27', '7L27', '6L27', '5L27', '4L28', '3L46'],\n      stockpile: ['9L27', '7L27', '6L27', '5L27', '4L28', '3L46'],\n      stompingtantrum: ['9M', '7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['8V'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9L27', '7L27', '6L27', '5L27', '4L28', '3L46'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '7T'],\n      thunderfang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      wrap: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'pichu',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bestow: ['7E', '6E', '5E'],\n      bide: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      bodyslam: ['9M', '8M', '3T'],\n      captivate: ['4M'],\n      charge: ['9M', '9E', '9S6', '8E', '7E', '6E', '5E', '4E', '4S5', '3E'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L20', '8M', '8L20', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1', '3S2', '3S3'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      disarmingvoice: ['9M', '9E', '8E', '7E', '6E'],\n      doubleedge: ['3T'],\n      doubleslap: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      electricterrain: ['9M', '8M', '7E'],\n      electroball: ['9M'],\n      electroweb: ['9M', '8M', '7T', '6T'],\n      encore: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      endeavor: ['4S5'],\n      endure: ['9M', '9S6', '8M', '7E', '7V', '6E', '5E', '4M', '4S5', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      flail: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      followme: ['3S3'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M', '4S4'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '9S6', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7E', '6E', '5E'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '9L16', '8M', '8L16', '7L13', '6L13', '5L18', '4L18'],\n      naturalgift: ['4M'],\n      nuzzle: ['9L12', '8L12'],\n      playnice: ['9L4', '8L4'],\n      playrough: ['9M', '8M'],\n      present: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '4S4', '3M'],\n      reversal: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '3S0'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L8', '8L8', '7L10', '7V', '6L10', '5L13', '4L13', '3L11'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwhip: ['9L1', '8L1', '7L5', '7V', '6L5', '5L5', '4L5', '3L6'],\n      takedown: ['9M'],\n      teeterdance: ['3S2'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '4S4', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '7E', '6T', '6E', '5E', '4E'],\n      thundershock: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1', '3S2', '3S3'],\n      thunderwave: ['9M', '8M', '7M', '7L18', '7V', '6M', '6L13', '5M', '5L10', '4M', '4L10', '3T', '3L8'],\n      tickle: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      volttackle: ['9R', '9S6', '8R', '7R', '6E', '5E', '4E', '4S4', '4S5', '3E'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      wish: ['9E', '8E', '7E', '6E', '5E', '4E', '3E', '3S1'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'pichuspikyeared',\n    {\n      attract: ['4M'],\n      captivate: ['4M'],\n      chargebeam: ['4M'],\n      charm: ['4L1'],\n      doubleteam: ['4M'],\n      endure: ['4M'],\n      facade: ['4M'],\n      flash: ['4M'],\n      fling: ['4M'],\n      frustration: ['4M'],\n      grassknot: ['4M'],\n      headbutt: ['4T'],\n      helpinghand: ['4T', '4S0'],\n      hiddenpower: ['4M'],\n      irontail: ['4M'],\n      lightscreen: ['4M'],\n      magnetrise: ['4T'],\n      mudslap: ['4T'],\n      nastyplot: ['4L18'],\n      naturalgift: ['4M'],\n      painsplit: ['4S0'],\n      protect: ['4M'],\n      raindance: ['4M'],\n      rest: ['4M'],\n      return: ['4M'],\n      rollout: ['4T'],\n      secretpower: ['4M'],\n      shockwave: ['4M'],\n      signalbeam: ['4T'],\n      sleeptalk: ['4M'],\n      snore: ['4T'],\n      substitute: ['4M'],\n      swagger: ['4M', '4S0'],\n      sweetkiss: ['4L13'],\n      swift: ['4T'],\n      tailwhip: ['4L5'],\n      thunder: ['4M'],\n      thunderbolt: ['4M'],\n      thundershock: ['4L1'],\n      thunderwave: ['4M', '4L10'],\n      toxic: ['4M'],\n      uproar: ['4T'],\n      volttackle: ['4S0']\n    }\n  ],\n  [\n    'pikachu',\n    {\n      agility: ['9M', '9L24', '8M', '8L24', '8V', '7L45', '7V', '6L37', '6S41', '5L37', '4L34', '3L33', '3S0', '3S8'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bestow: ['7S44', '6S42'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '5S26', '4M', '3M'],\n      calmmind: ['8V'],\n      captivate: ['4M'],\n      celebrate: ['9S55', '8S50', '8S51', '8S52', '7S43', '7S48', '6S31', '6S41'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1', '6S36'],\n      confide: ['7M', '6M'],\n      counter: ['7S48', '3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      disarmingvoice: ['9M'],\n      discharge: ['9L32', '8L32', '7L34', '7S47', '6L34', '5L42', '4L37'],\n      doubleedge: ['7V', '3T'],\n      doublekick: ['8V'],\n      doubleteam: ['9L8', '8L8', '8V', '7M', '7L23', '7V', '6M', '6L21', '6S32', '5M', '5L21', '4M', '4L18', '4S13', '3M', '3L15'],\n      drainingkiss: ['9M', '8M'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L12', '8M', '8L12', '8S52', '7L13', '6L13', '6S32', '6S37', '5L18', '5S23', '5S24', '5S30'],\n      electroweb: ['9M', '8M', '7T', '6T'],\n      encore: ['9M', '8M', '8S52', '6S39', '5S23'],\n      endeavor: ['9M', '6S39'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extremespeed: ['5S26'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['6S39'],\n      faketears: ['9M'],\n      feint: ['9L16', '8L16', '7L21', '6L21', '5L34', '5S29', '4L29'],\n      flash: ['7V', '6M', '6S40', '5M', '4M', '4S13', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fly: ['9S53', '7S49', '6S41', '5S24', '5S27', '3S2', '3S4', '3S6'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '5S25', '5S26', '5S27', '4M', '4S13'],\n      growl: ['9L1', '8L1', '8V', '7L5', '7V', '7S43', '7S46', '6L5', '6S31', '5L1', '4L1', '3L1', '3S1', '3S2', '3S3', '3S4', '3S5', '3S10'],\n      happyhour: ['7S45', '7S46', '6S40'],\n      headbutt: ['8V', '7V', '5S28', '4T'],\n      heartstamp: ['6S34'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      holdhands: ['7S44', '7S45', '6S33', '6S34', '6S35', '6S40', '6S42'],\n      irontail: ['9L28', '9S54', '8M', '8V', '7T', '7V', '6T', '6S37', '5T', '5S24', '5S30', '4M', '4S21', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lastresort: ['4S18'],\n      lightscreen: [\n        '9M',\n        '9L40',\n        '8M',\n        '8L40',\n        '8V',\n        '7M',\n        '7L53',\n        '7V',\n        '6M',\n        '6L45',\n        '5M',\n        '5L45',\n        '4M',\n        '4L42',\n        '4S11',\n        '3M',\n        '3L50',\n        '3S0',\n        '3S6',\n        '3S7',\n        '3S8'\n      ],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '7V', '6S32', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      naturalgift: ['4M'],\n      nuzzle: ['9L1', '8L1', '7L29', '7S47', '6L23', '6S36', '6S38'],\n      payday: ['8M', '8V', '7V'],\n      playnice: ['9L1', '9S55', '8L1', '8S50', '7L7', '7S43', '7S44', '7S45', '6L7', '6S31', '6S35', '6S36', '6S38', '6S40', '6S42'],\n      playrough: ['9M', '9S54', '8M'],\n      present: ['9S55', '4S12', '4S15', '4S17', '4S18', '4S20', '4S22'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '5S27', '4M', '4S14', '4S16', '3M'],\n      quickattack: [\n        '9L1',\n        '9S53',\n        '8L1',\n        '8V',\n        '8S50',\n        '7L10',\n        '7V',\n        '7S43',\n        '7S46',\n        '7S49',\n        '6L10',\n        '6S31',\n        '6S32',\n        '6S33',\n        '6S34',\n        '6S37',\n        '5L13',\n        '5S24',\n        '5S25',\n        '5S29',\n        '5S30',\n        '4L13',\n        '4S11',\n        '4S12',\n        '4S15',\n        '4S17',\n        '4S18',\n        '4S20',\n        '4S21',\n        '4S22',\n        '3L11'\n      ],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['9M', '8M', '8V', '7V'],\n      refresh: ['7S48'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4S19', '3M'],\n      return: ['7M', '7V', '7S44', '6M', '6S42', '5M', '4M', '3M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sing: ['8S52', '5S23'],\n      skullbash: ['7V'],\n      slam: ['8L28', '8V', '7L37', '7V', '7S47', '6L26', '5L26', '4L21', '3L20'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '4S19', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '4S19', '3T'],\n      spark: ['9L20', '8L20', '7L26', '6L26'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '6S35', '5M', '4M', '3T'],\n      surf: ['9M', '9S54', '8M', '7S47', '7S49', '6S33', '6S41', '4S9', '4S11', '4S14', '4S16', '3S3', '3S5', '3S7'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L1', '8L1', '6S36'],\n      sweetscent: ['7S48'],\n      swift: ['9M', '8M', '8S51', '7V', '4T', '3T'],\n      tailwhip: [\n        '9L1',\n        '9S53',\n        '8L1',\n        '8V',\n        '7L1',\n        '7V',\n        '6L1',\n        '6S38',\n        '5L5',\n        '5S28',\n        '4L5',\n        '4S9',\n        '4S12',\n        '4S15',\n        '4S17',\n        '4S20',\n        '4S22',\n        '3L6',\n        '3S1',\n        '3S2',\n        '3S3',\n        '3S4',\n        '3S10'\n      ],\n      takedown: ['9M', '7V'],\n      teeterdance: ['7S45', '6S38', '5S23'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: [\n        '9M',\n        '9L44',\n        '9S54',\n        '8M',\n        '8L44',\n        '8V',\n        '7M',\n        '7L58',\n        '7V',\n        '6M',\n        '6L50',\n        '6S35',\n        '5M',\n        '5L50',\n        '5S25',\n        '4M',\n        '4L45',\n        '4S14',\n        '4S16',\n        '3M',\n        '3L41',\n        '3S0',\n        '3S6',\n        '3S7',\n        '3S8'\n      ],\n      thunderbolt: [\n        '9M',\n        '9L36',\n        '9S55',\n        '8M',\n        '8L36',\n        '8V',\n        '8S51',\n        '7M',\n        '7L42',\n        '7V',\n        '7S49',\n        '6M',\n        '6L29',\n        '6S33',\n        '6S34',\n        '6S37',\n        '5M',\n        '5L29',\n        '5S26',\n        '5S27',\n        '5S30',\n        '4M',\n        '4L26',\n        '4S11',\n        '4S13',\n        '4S18',\n        '4S21',\n        '3M',\n        '3L26',\n        '3S0',\n        '3S6',\n        '3S7',\n        '3S8'\n      ],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thundershock: [\n        '9L1',\n        '9S53',\n        '8L1',\n        '8V',\n        '8S50',\n        '7L1',\n        '7V',\n        '7S46',\n        '6L1',\n        '5L1',\n        '5S28',\n        '4L1',\n        '4S12',\n        '4S15',\n        '4S20',\n        '4S22',\n        '3L1',\n        '3S1',\n        '3S5',\n        '3S10'\n      ],\n      thunderwave: [\n        '9M',\n        '9L4',\n        '8M',\n        '8L4',\n        '8V',\n        '7M',\n        '7L18',\n        '7V',\n        '6M',\n        '6L13',\n        '5M',\n        '5L10',\n        '5S28',\n        '4M',\n        '4L10',\n        '4S9',\n        '4S17',\n        '3T',\n        '3L8',\n        '3S1',\n        '3S2',\n        '3S3',\n        '3S4',\n        '3S5',\n        '3S10'\n      ],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M', '5S29'],\n      volttackle: ['7T', '6S39', '5S25', '5S29', '4S9', '4S21'],\n      wildcharge: ['9M', '8M', '7M', '7L50', '6M', '6L50', '5M'],\n      wish: ['8S51'],\n      yawn: ['4S19'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'pikachucosplay',\n    {\n      agility: ['6L45'],\n      attract: ['6M'],\n      brickbreak: ['6M'],\n      chargebeam: ['6M'],\n      confide: ['6M'],\n      covet: ['6T'],\n      dig: ['6M'],\n      discharge: ['6L34'],\n      doubleteam: ['6M', '6L23'],\n      echoedvoice: ['6M'],\n      electroball: ['6L13', '6S0'],\n      electroweb: ['6T'],\n      facade: ['6M'],\n      feint: ['6L21'],\n      flash: ['6M'],\n      fling: ['6M'],\n      focuspunch: ['6T'],\n      frustration: ['6M'],\n      grassknot: ['6M'],\n      growl: ['6L5'],\n      helpinghand: ['6T'],\n      hiddenpower: ['6M'],\n      irontail: ['6T'],\n      knockoff: ['6T'],\n      lightscreen: ['6M', '6L53'],\n      magnetrise: ['6T'],\n      nuzzle: ['6L29'],\n      playnice: ['6L7'],\n      protect: ['6M'],\n      quickattack: ['6L10', '6S0'],\n      raindance: ['6M'],\n      rest: ['6M'],\n      return: ['6M'],\n      rocksmash: ['6M'],\n      round: ['6M'],\n      secretpower: ['6M'],\n      shockwave: ['6T'],\n      signalbeam: ['6T'],\n      slam: ['6L37'],\n      sleeptalk: ['6M'],\n      snore: ['6T'],\n      spark: ['6L26'],\n      strength: ['6M'],\n      substitute: ['6M'],\n      swagger: ['6M'],\n      tailwhip: ['6L1'],\n      thunder: ['6M', '6L58'],\n      thunderbolt: ['6M', '6L42'],\n      thunderpunch: ['6T'],\n      thundershock: ['6L1', '6S0'],\n      thunderwave: ['6M', '6L18', '6S0'],\n      toxic: ['6M'],\n      voltswitch: ['6M'],\n      wildcharge: ['6M', '6L50']\n    }\n  ],\n  ['pikachurockstar', { meteormash: ['6R'] }],\n  ['pikachubelle', { iciclecrash: ['6R'] }],\n  ['pikachupopstar', { drainingkiss: ['6R'] }],\n  ['pikachuphd', { electricterrain: ['6R'] }],\n  ['pikachulibre', { flyingpress: ['6R'] }],\n  [\n    'pikachuoriginal',\n    {\n      agility: ['9M', '9L24', '8M', '8L24', '7L45', '7S0'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      charge: ['9M', '8E'],\n      chargebeam: ['9M', '7M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dig: ['9M', '8M'],\n      disarmingvoice: ['9M', '8E'],\n      discharge: ['9L32', '8L32', '7L34'],\n      doubleteam: ['9L8', '8L8', '7M', '7L23'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L13'],\n      electroweb: ['9M', '8M', '8S1', '7T'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['8E'],\n      faketears: ['9M'],\n      feint: ['9L16', '8L16', '7L21'],\n      flail: ['8E'],\n      fling: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      grassknot: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L5'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      irontail: ['9L28', '8M', '8S1', '7T'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L40', '8M', '8L40', '7M', '7L53'],\n      magnetrise: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nuzzle: ['9L1', '8L1', '7L29'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1', '7L7'],\n      playrough: ['9M', '8M'],\n      present: ['8E'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L1', '8L1', '8S1', '7L10', '7S0'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      slam: ['8L28', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L20', '8L20', '7L26'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M'],\n      swagger: ['7M'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '9L44', '8M', '8L44', '7M', '7L58', '7S0'],\n      thunderbolt: ['9M', '9L36', '8M', '8L36', '8S1', '7M', '7L42', '7S0'],\n      thunderpunch: ['9M', '8M', '7T'],\n      thundershock: ['9L1', '8L1', '7L1'],\n      thunderwave: ['9M', '9L4', '8M', '8L4', '7M', '7L18'],\n      tickle: ['8E'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M'],\n      volttackle: ['8S1', '7T'],\n      wildcharge: ['9M', '8M', '7M', '7L50'],\n      wish: ['8E']\n    }\n  ],\n  [\n    'pikachuhoenn',\n    {\n      agility: ['9M', '9L24', '8M', '8L24', '7L45'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      charge: ['9M', '8E'],\n      chargebeam: ['9M', '7M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dig: ['9M', '8M'],\n      disarmingvoice: ['9M', '8E'],\n      discharge: ['9L32', '8L32', '7L34'],\n      doubleteam: ['9L8', '8L8', '7M', '7L23'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L13'],\n      electroweb: ['9M', '8M', '8S1', '7T'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['8E'],\n      faketears: ['9M'],\n      feint: ['9L16', '8L16', '7L21'],\n      flail: ['8E'],\n      fling: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      grassknot: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L5'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      irontail: ['9L28', '8M', '8S1', '7T', '7S0'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L40', '8M', '8L40', '7M', '7L53'],\n      magnetrise: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nuzzle: ['9L1', '8L1', '7L29'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1', '7L7'],\n      playrough: ['9M', '8M'],\n      present: ['8E'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L1', '8L1', '8S1', '7L10', '7S0'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      slam: ['8L28', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L20', '8L20', '7L26'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M'],\n      swagger: ['7M'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '9L44', '8M', '8L44', '7M', '7L58', '7S0'],\n      thunderbolt: ['9M', '9L36', '8M', '8L36', '8S1', '7M', '7L42', '7S0'],\n      thunderpunch: ['9M', '8M', '7T'],\n      thundershock: ['9L1', '8L1', '7L1'],\n      thunderwave: ['9M', '9L4', '8M', '8L4', '7M', '7L18'],\n      tickle: ['8E'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M'],\n      volttackle: ['8S1', '7T'],\n      wildcharge: ['9M', '8M', '7M', '7L50'],\n      wish: ['8E']\n    }\n  ],\n  [\n    'pikachusinnoh',\n    {\n      agility: ['9M', '9L24', '8M', '8L24', '7L45'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      charge: ['9M', '8E'],\n      chargebeam: ['9M', '7M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dig: ['9M', '8M'],\n      disarmingvoice: ['9M', '8E'],\n      discharge: ['9L32', '8L32', '7L34'],\n      doubleteam: ['9L8', '8L8', '7M', '7L23'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L13'],\n      electroweb: ['9M', '8M', '8S1', '7T'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['8E'],\n      faketears: ['9M'],\n      feint: ['9L16', '8L16', '7L21'],\n      flail: ['8E'],\n      fling: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      grassknot: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L5'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      irontail: ['9L28', '8M', '8S1', '7T', '7S0'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L40', '8M', '8L40', '7M', '7L53'],\n      magnetrise: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nuzzle: ['9L1', '8L1', '7L29'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1', '7L7'],\n      playrough: ['9M', '8M'],\n      present: ['8E'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L1', '8L1', '8S1', '7L10', '7S0'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      slam: ['8L28', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L20', '8L20', '7L26'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M'],\n      swagger: ['7M'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '9L44', '8M', '8L44', '7M', '7L58'],\n      thunderbolt: ['9M', '9L36', '8M', '8L36', '8S1', '7M', '7L42', '7S0'],\n      thunderpunch: ['9M', '8M', '7T'],\n      thundershock: ['9L1', '8L1', '7L1'],\n      thunderwave: ['9M', '9L4', '8M', '8L4', '7M', '7L18'],\n      tickle: ['8E'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M'],\n      volttackle: ['8S1', '7T', '7S0'],\n      wildcharge: ['9M', '8M', '7M', '7L50'],\n      wish: ['8E']\n    }\n  ],\n  [\n    'pikachuunova',\n    {\n      agility: ['9M', '9L24', '8M', '8L24', '7L45'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      charge: ['9M', '8E'],\n      chargebeam: ['9M', '7M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dig: ['9M', '8M'],\n      disarmingvoice: ['9M', '8E'],\n      discharge: ['9L32', '8L32', '7L34'],\n      doubleteam: ['9L8', '8L8', '7M', '7L23'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L13'],\n      electroweb: ['9M', '8M', '8S1', '7T'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['8E'],\n      faketears: ['9M'],\n      feint: ['9L16', '8L16', '7L21'],\n      flail: ['8E'],\n      fling: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      grassknot: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L5'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      irontail: ['9L28', '8M', '8S1', '7T', '7S0'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L40', '8M', '8L40', '7M', '7L53'],\n      magnetrise: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nuzzle: ['9L1', '8L1', '7L29'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1', '7L7'],\n      playrough: ['9M', '8M'],\n      present: ['8E'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L1', '8L1', '8S1', '7L10', '7S0'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      slam: ['8L28', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L20', '8L20', '7L26'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M'],\n      swagger: ['7M'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '9L44', '8M', '8L44', '7M', '7L58'],\n      thunderbolt: ['9M', '9L36', '8M', '8L36', '8S1', '7M', '7L42', '7S0'],\n      thunderpunch: ['9M', '8M', '7T'],\n      thundershock: ['9L1', '8L1', '7L1'],\n      thunderwave: ['9M', '9L4', '8M', '8L4', '7M', '7L18'],\n      tickle: ['8E'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M'],\n      volttackle: ['8S1', '7T', '7S0'],\n      wildcharge: ['9M', '8M', '7M', '7L50'],\n      wish: ['8E']\n    }\n  ],\n  [\n    'pikachukalos',\n    {\n      agility: ['9M', '9L24', '8M', '8L24', '7L45'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      charge: ['9M', '8E'],\n      chargebeam: ['9M', '7M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dig: ['9M', '8M'],\n      disarmingvoice: ['9M', '8E'],\n      discharge: ['9L32', '8L32', '7L34'],\n      doubleteam: ['9L8', '8L8', '7M', '7L23'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L13', '7S0'],\n      electroweb: ['9M', '8M', '8S1', '7T'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['8E'],\n      faketears: ['9M'],\n      feint: ['9L16', '8L16', '7L21'],\n      flail: ['8E'],\n      fling: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      grassknot: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L5'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      irontail: ['9L28', '8M', '8S1', '7T', '7S0'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L40', '8M', '8L40', '7M', '7L53'],\n      magnetrise: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nuzzle: ['9L1', '8L1', '7L29'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1', '7L7'],\n      playrough: ['9M', '8M'],\n      present: ['8E'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L1', '8L1', '8S1', '7L10', '7S0'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      slam: ['8L28', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L20', '8L20', '7L26'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M'],\n      swagger: ['7M'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '9L44', '8M', '8L44', '7M', '7L58'],\n      thunderbolt: ['9M', '9L36', '8M', '8L36', '8S1', '7M', '7L42', '7S0'],\n      thunderpunch: ['9M', '8M', '7T'],\n      thundershock: ['9L1', '8L1', '7L1'],\n      thunderwave: ['9M', '9L4', '8M', '8L4', '7M', '7L18'],\n      tickle: ['8E'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M'],\n      volttackle: ['8S1', '7T'],\n      wildcharge: ['9M', '8M', '7M', '7L50'],\n      wish: ['8E']\n    }\n  ],\n  [\n    'pikachualola',\n    {\n      agility: ['9M', '9L24', '8M', '8L24', '7L45'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      charge: ['9M', '8E'],\n      chargebeam: ['9M', '7M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dig: ['9M', '8M'],\n      disarmingvoice: ['9M', '8E'],\n      discharge: ['9L32', '8L32', '7L34'],\n      doubleteam: ['9L8', '8L8', '7M', '7L23'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L13', '7S0'],\n      electroweb: ['9M', '8M', '8S1', '7T'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['8E'],\n      faketears: ['9M'],\n      feint: ['9L16', '8L16', '7L21'],\n      flail: ['8E'],\n      fling: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      grassknot: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L5'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      irontail: ['9L28', '8M', '8S1', '7T', '7S0'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L40', '8M', '8L40', '7M', '7L53'],\n      magnetrise: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nuzzle: ['9L1', '8L1', '7L29'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1', '7L7'],\n      playrough: ['9M', '8M'],\n      present: ['8E'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L1', '8L1', '8S1', '7L10', '7S0'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      slam: ['8L28', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L20', '8L20', '7L26'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M'],\n      swagger: ['7M'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '9L44', '8M', '8L44', '7M', '7L58'],\n      thunderbolt: ['9M', '9L36', '8M', '8L36', '8S1', '7M', '7L42', '7S0'],\n      thunderpunch: ['9M', '8M', '7T'],\n      thundershock: ['9L1', '8L1', '7L1'],\n      thunderwave: ['9M', '9L4', '8M', '8L4', '7M', '7L18'],\n      tickle: ['8E'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M'],\n      volttackle: ['8S1', '7T'],\n      wildcharge: ['9M', '8M', '7M', '7L50'],\n      wish: ['8E']\n    }\n  ],\n  [\n    'pikachupartner',\n    {\n      agility: ['9M', '9L24', '8M', '8L24', '7L45'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      charge: ['9M', '8E'],\n      chargebeam: ['9M', '7M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dig: ['9M', '8M'],\n      disarmingvoice: ['9M', '8E'],\n      discharge: ['9L32', '8L32', '7L34'],\n      doubleteam: ['9L8', '8L8', '7M', '7L23'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L13'],\n      electroweb: ['9M', '8M', '8S1', '7T'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['8E'],\n      faketears: ['9M'],\n      feint: ['9L16', '8L16', '7L21'],\n      flail: ['8E'],\n      fling: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      grassknot: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L5'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      irontail: ['9L28', '8M', '8S1', '7T', '7S0'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L40', '8M', '8L40', '7M', '7L53'],\n      magnetrise: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nuzzle: ['9L1', '8L1', '7L29'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1', '7L7'],\n      playrough: ['9M', '8M'],\n      present: ['8E'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L1', '8L1', '8S1', '7L10', '7S0'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      slam: ['8L28', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L20', '8L20', '7L26'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M'],\n      swagger: ['7M'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '9L44', '8M', '8L44', '7M', '7L58', '7S0'],\n      thunderbolt: ['9M', '9L36', '8M', '8L36', '8S1', '7M', '7L42', '7S0'],\n      thunderpunch: ['9M', '8M', '7T'],\n      thundershock: ['9L1', '8L1', '7L1'],\n      thunderwave: ['9M', '9L4', '8M', '8L4', '7M', '7L18'],\n      tickle: ['8E'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M'],\n      volttackle: ['8S1', '7T'],\n      wildcharge: ['9M', '8M', '7M', '7L50'],\n      wish: ['8E']\n    }\n  ],\n  [\n    'pikachustarter',\n    {\n      agility: ['9M', '9L24', '8V', '7L27'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8V', '7M'],\n      calmmind: ['8V', '7M'],\n      chargebeam: ['9M'],\n      charm: ['9M', '9L1'],\n      dig: ['9M', '8V', '7M'],\n      discharge: ['9L32'],\n      doublekick: ['8V', '7L9'],\n      doubleteam: ['9L8', '8V', '7L12'],\n      drainingkiss: ['9M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L12'],\n      encore: ['9M'],\n      endure: ['9M'],\n      facade: ['9M', '8V', '7M'],\n      faketears: ['9M'],\n      feint: ['9L16'],\n      fling: ['9M'],\n      floatyfall: ['8V', '7T'],\n      grassknot: ['9M'],\n      growl: ['9L1', '8V', '7L1', '7S0'],\n      headbutt: ['8V', '7M'],\n      helpinghand: ['9M', '8V', '7M'],\n      irontail: ['9L28', '8V', '7M'],\n      lightscreen: ['9M', '9L40', '8V', '7M', '7L18'],\n      nastyplot: ['9M', '9L1'],\n      nuzzle: ['9L1'],\n      payday: ['8V', '7M'],\n      pikapapow: ['8V', '7T'],\n      playnice: ['9L1'],\n      playrough: ['9M'],\n      protect: ['9M', '8V', '7M'],\n      quickattack: ['9L1', '8V', '7L6'],\n      raindance: ['9M'],\n      reflect: ['9M', '8V', '7M'],\n      rest: ['9M', '8V', '7M'],\n      reversal: ['9M'],\n      seismictoss: ['8V', '7M'],\n      slam: ['8V', '7L24'],\n      sleeptalk: ['9M'],\n      splishysplash: ['8V', '7T'],\n      spark: ['9L20'],\n      substitute: ['9M', '8V', '7M'],\n      surf: ['9M'],\n      sweetkiss: ['9L1'],\n      swift: ['9M'],\n      tailwhip: ['9L1', '8V', '7L3', '7S0'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M', '9L44', '8V', '7M', '7L30'],\n      thunderbolt: ['9M', '9L36', '8V', '7M', '7L21'],\n      thunderpunch: ['9M', '8V', '7M'],\n      thundershock: ['9L1', '8V', '7L1', '7S0'],\n      thunderwave: ['9M', '9L4', '8V', '7M', '7L15'],\n      toxic: ['8V', '7M'],\n      trailblaze: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M'],\n      zippyzap: ['8V', '7T']\n    }\n  ],\n  [\n    'pikachuworld',\n    {\n      agility: ['9M', '9L24', '8M', '8L24'],\n      attract: ['8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M'],\n      charge: ['8E'],\n      chargebeam: ['9M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      dig: ['9M', '8M'],\n      disarmingvoice: ['9M', '8E'],\n      discharge: ['9L32', '8L32'],\n      doubleteam: ['9L8', '8L8'],\n      drainingkiss: ['9M', '8M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L12', '8M', '8L12'],\n      electroweb: ['8M', '8S1', '8S0'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fakeout: ['8E'],\n      faketears: ['9M'],\n      feint: ['9L16', '8L16'],\n      flail: ['8E'],\n      fling: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      helpinghand: ['9M', '8M'],\n      irontail: ['9L28', '8M', '8S1', '8S0'],\n      lightscreen: ['9M', '9L40', '8M', '8L40'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nuzzle: ['9L1', '8L1'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1'],\n      playrough: ['9M', '8M'],\n      present: ['8E'],\n      protect: ['9M', '8M'],\n      quickattack: ['9L1', '8L1', '8S1', '8S0'],\n      raindance: ['9M', '8M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M'],\n      slam: ['8L28'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spark: ['9L20', '8L20'],\n      substitute: ['9M', '8M'],\n      surf: ['9M', '8M'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '9L44', '8M', '8L44'],\n      thunderbolt: ['9M', '9L36', '8M', '8L36', '8S1', '8S0'],\n      thunderpunch: ['9M', '8M'],\n      thundershock: ['9L1', '8L1'],\n      thunderwave: ['9M', '9L4', '8M', '8L4'],\n      tickle: ['8E'],\n      trailblaze: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M'],\n      volttackle: ['8S0'],\n      wildcharge: ['9M', '8M'],\n      wish: ['8E']\n    }\n  ],\n  [\n    'raichu',\n    {\n      agility: ['9M', '9L1', '8M', '8L1'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M'],\n      calmmind: ['8V'],\n      captivate: ['4M'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      disarmingvoice: ['9M'],\n      discharge: ['9L1', '8L1'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['9L1', '8L1', '7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L1', '8M', '8L1'],\n      electroweb: ['9M', '8M', '7T', '6T'],\n      encore: ['9M', '8M', '8V'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['8V'],\n      faketears: ['9M'],\n      feint: ['9L1', '8L1'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '8V', '7V'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      irontail: ['9L1', '8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L1', '8M', '8L1', '8V', '7M', '6M', '5M', '4M', '3M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      naturalgift: ['4M'],\n      nuzzle: ['9L1', '8L1'],\n      payday: ['8M', '8V', '7V'],\n      playnice: ['9L1', '8L1'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['9M', '8M', '8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skullbash: ['7V'],\n      slam: ['8L1'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spark: ['9L1', '8L1'],\n      speedswap: ['8M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '9L5', '8M', '8L1', '8V', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      thunderpunch: ['9M', '9L0', '8M', '8L0', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thundershock: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      thunderwave: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'raichualola',\n    {\n      agility: ['9M', '9L1', '8M', '8L1'],\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '8V', '7M'],\n      calmmind: ['9M', '8M', '8V', '7M'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dig: ['9M', '8M', '8V'],\n      discharge: ['9L1', '8L1'],\n      doubleteam: ['9L1', '8L1', '8V', '7M'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L1', '8M', '8L1'],\n      electroweb: ['9M', '8M', '7T'],\n      encore: ['9M', '8M', '8V'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '8V', '7M'],\n      fakeout: ['8V'],\n      faketears: ['9M'],\n      feint: ['9L1', '8L1'],\n      fling: ['9M', '8M', '7M'],\n      focusblast: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      futuresight: ['8M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      grassknot: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '8V'],\n      headbutt: ['8V'],\n      helpinghand: ['9M', '8M', '8V', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '8V', '7M'],\n      irontail: ['9L1', '8M', '8V', '7T'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L1', '8M', '8L1', '8V', '7M'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      magnetrise: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nuzzle: ['9L1', '8L1'],\n      payday: ['8M', '8V'],\n      playnice: ['9L1', '8L1'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '8V', '7M'],\n      psychic: ['9M', '9L0', '8M', '8L0', '8V', '7M', '7L1'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psyshock: ['9M', '8M', '7M'],\n      quickattack: ['9L1', '8L1', '7L1'],\n      raindance: ['9M', '8M', '7M'],\n      recycle: ['7T'],\n      reflect: ['9M', '8M', '8V', '7M'],\n      rest: ['9M', '8M', '8V', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seismictoss: ['8V'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      skillswap: ['9M'],\n      slam: ['8L1'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L1', '8L1'],\n      speedswap: ['8M', '7L1'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      surf: ['9M', '8M'],\n      swagger: ['7M'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      teleport: ['8V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      thunder: ['9M', '9L1', '8M', '8L1', '8V', '7M'],\n      thunderbolt: ['9M', '9L5', '8M', '8L1', '8V', '7M', '7L1'],\n      thunderpunch: ['9M', '8M', '8V', '7T'],\n      thundershock: ['9L1', '8L1', '8V', '7L1'],\n      thunderwave: ['9M', '9L1', '8M', '8L1', '8V', '7M'],\n      toxic: ['8V', '7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M'],\n      voltswitch: ['9M', '8M', '7M'],\n      wildcharge: ['9M', '8M', '7M']\n    }\n  ],\n  [\n    'sandshrew',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L27', '8M', '8L27'],\n      amnesia: ['9M', '8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '9L18', '8M', '8L18', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4E', '3T', '3E'],\n      covet: ['7T', '6T', '5T'],\n      crushclaw: ['7E', '6E', '5E', '4E', '3E'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L3', '3T', '3L6', '3S0'],\n      detect: ['7V'],\n      dig: ['9M', '9L33', '8M', '8L33', '8V', '7L30', '7V', '6M', '6L30', '5M', '5L30', '4M', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L45', '8M', '8L45', '8V', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L46', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M'],\n      fissure: ['7V'],\n      flail: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['9L12', '8L12', '7L11', '7V', '6L11', '5L14', '4T', '4L25', '3T'],\n      furyswipes: ['9L24', '8L24', '8V', '7L20', '7V', '6L20', '5L19', '4L19', '3L37'],\n      gyroball: ['9M', '9L36', '8M', '8L36', '7M', '7L34', '6M', '6L34', '5M', '5L33', '4M', '4L33'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      honeclaws: ['9E', '8E', '7E', '6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      leechlife: ['9M', '8M'],\n      lowkick: ['9M'],\n      magnitude: ['7L14', '6L14', '5L17'],\n      metalclaw: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      mudslap: ['9M', '9E', '8E', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      poisonsting: ['9L3', '8L3', '8V', '7L5', '7V', '6L5', '5L5', '4L9', '3L17', '3S0'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      rapidspin: ['9L15', '8L15', '7L9', '7E', '7V', '6L9', '6E', '5L9', '5E', '4L13', '4E', '3E'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['7E', '6E', '5E', '4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9L9', '8L9', '7L7', '7V', '6L7', '5L7', '4T', '4L21', '3T'],\n      rototiller: ['7E', '6E'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      sandattack: ['9L6', '8L6', '8V', '7L3', '7V', '6L3', '5L3', '5D', '4L7', '3L11', '3S0'],\n      sandstorm: ['9M', '9L42', '8M', '8L42', '7M', '7L42', '7V', '6M', '6L42', '5M', '5L37', '4M', '4L37', '3M', '3L53'],\n      sandtomb: ['9M', '8M', '7L23', '6L23', '5L23', '4L27', '3L45'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      skullbash: ['7V'],\n      slash: ['9L30', '8L30', '8V', '7L26', '7V', '6L26', '5L26', '4L31', '3L23'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      steelroller: ['8T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L21', '8M', '8L21', '8V', '7L17', '7V', '6L11', '5L11', '4T', '4L15', '3T', '3L30'],\n      swordsdance: ['9M', '9L39', '8M', '8L39', '8V', '7M', '7L38', '7V', '6M', '6L38', '5M', '5L38', '4M', '4E', '3T', '3E'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      workup: ['8M'],\n      xscissor: ['9M', '8M', '8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'sandshrewalola',\n    {\n      aerialace: ['9M', '7M'],\n      amnesia: ['9M', '8M', '7E'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M'],\n      auroraveil: ['7M'],\n      avalanche: ['9M', '8M'],\n      bide: ['8V', '7L3', '7S0'],\n      blizzard: ['9M', '9L45', '8M', '8L45', '8V', '7M', '7L46'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '8V', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      chipaway: ['7E'],\n      confide: ['7M'],\n      counter: ['9E', '8E', '7E'],\n      covet: ['7T'],\n      crushclaw: ['9E', '8E', '7E'],\n      curse: ['9M', '9E', '8E', '7E'],\n      defensecurl: ['9L1', '8L1', '8V', '7L1'],\n      dig: ['9M', '8M', '8V'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      earthquake: ['9M', '8M', '8V', '7M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7E'],\n      facade: ['9M', '8M', '8V', '7M'],\n      flail: ['9E', '8E', '7E'],\n      flashcannon: ['9M'],\n      fling: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      furycutter: ['9L12', '8L12', '7L11'],\n      furyswipes: ['9L24', '8L24', '8V', '7L20'],\n      gyroball: ['9M', '9L36', '8M', '8L36', '7M', '7L34'],\n      hail: ['8M', '8L42', '7M', '7L42'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M'],\n      honeclaws: ['9E', '8E', '7E'],\n      iceball: ['7L7', '7S0'],\n      icebeam: ['9M', '8V'],\n      icepunch: ['9M', '8M', '8V', '7T'],\n      iceshard: ['9E', '8V'],\n      icespinner: ['9M'],\n      iciclecrash: ['7E'],\n      iciclespear: ['9M', '8M', '7E'],\n      icywind: ['9M', '8M', '7T'],\n      irondefense: ['9M', '9L27', '8M', '8L27', '7T', '7L23'],\n      ironhead: ['9M', '9L33', '8M', '8L33', '7T', '7L30'],\n      irontail: ['8M', '8V', '7T'],\n      knockoff: ['9M', '7T'],\n      leechlife: ['9M', '8M', '7M'],\n      lowkick: ['9M'],\n      metalclaw: ['9M', '9L18', '8L18', '7L14', '7E'],\n      mirrorcoat: ['9E', '8V'],\n      mist: ['9L3', '8L3'],\n      nightslash: ['9E', '8E', '7E'],\n      poisonjab: ['9M', '8M', '8V', '7M'],\n      powdersnow: ['9L6', '8L6', '7L5', '7S0'],\n      protect: ['9M', '8M', '8V', '7M'],\n      rapidspin: ['9L15', '8L15', '7L9', '7S0'],\n      rest: ['9M', '8M', '8V', '7M'],\n      return: ['7M'],\n      rockslide: ['9M', '8M', '8V', '7M'],\n      rocktomb: ['9M', '8M'],\n      rollout: ['9L9', '8L9'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scratch: ['9L1', '8L1', '8V', '7L1'],\n      seismictoss: ['8V'],\n      shadowclaw: ['9M', '8M', '7M'],\n      slash: ['9L30', '8L30', '8V', '7L26'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M', '9L42'],\n      stealthrock: ['9M', '8M', '8V', '7T'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      sunnyday: ['8M', '7M'],\n      superfang: ['9M', '7T'],\n      swagger: ['7M'],\n      swift: ['9M', '9L21', '8M', '8L21', '8V', '7L17'],\n      swordsdance: ['9M', '9L39', '8M', '8L39', '8V', '7M', '7L38'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      throatchop: ['9M', '8M', '7T'],\n      toxic: ['8V', '7M'],\n      tripleaxel: ['9M', '8T'],\n      workup: ['8M', '7M'],\n      xscissor: ['9M', '8M', '8V', '7M']\n    }\n  ],\n  [\n    'sandslash',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M'],\n      amnesia: ['9M', '8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '9L18', '8M', '8L18', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['8V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      crushclaw: ['9L1', '8L1', '7L1', '6L22', '5L22', '4L22'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L1'],\n      detect: ['7V'],\n      dig: ['9M', '9L41', '8M', '8L41', '8V', '7L33', '7V', '6M', '6L30', '5M', '5L30', '4M', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['9M', '8M', '8V'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L61', '8M', '8L61', '8V', '7M', '7L53', '7V', '6M', '6L46', '5M', '5L46', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M'],\n      fissure: ['7V'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['9L12', '8L12', '7L11', '7V', '6L11', '5L14', '4T', '4L28', '3T'],\n      furyswipes: ['9L26', '8L26', '8V', '7L20', '7V', '6L20', '5L19', '4L19', '3L42'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M'],\n      gyroball: ['9M', '9L46', '8M', '8L46', '7M', '7L38', '6M', '6L34', '5M', '5L34', '4M', '4L45'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      leechlife: ['9M', '8M'],\n      lowkick: ['9M'],\n      magnitude: ['7L14', '6L14', '5L17'],\n      metalclaw: ['9M'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      pinmissile: ['8M'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      poisonsting: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L5', '4L9', '3L17'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      rapidspin: ['9L15', '8L15', '7L9', '6L9', '5L9', '4L13'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9L9', '8L9', '7L7', '7V', '6L7', '5L7', '4T', '4L21', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      sandstorm: ['9M', '9L56', '8M', '8L56', '7M', '7L48', '7V', '6M', '6L42', '5M', '5L42', '4M', '4L52', '3M', '3L62'],\n      sandtomb: ['9M', '9L31', '8M', '8L31', '7L24', '6L23', '5L23', '4L33', '3L52'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      skullbash: ['7V'],\n      slash: ['9L36', '8L36', '8V', '7L28', '7V', '6L26', '5L26', '4L40', '3L24'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spikes: ['9M', '8M'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      steelroller: ['8T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L21', '8M', '8L21', '8V', '7L17', '7V', '6L11', '5L11', '4T', '4L15', '3T', '3L33'],\n      swordsdance: ['9M', '9L51', '8M', '8L51', '8V', '7M', '7L43', '7V', '6M', '6L38', '5M', '5L38', '4M', '3T'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      workup: ['8M'],\n      xscissor: ['9M', '8M', '8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'sandslashalola',\n    {\n      aerialace: ['9M', '7M'],\n      agility: ['9M', '8M'],\n      amnesia: ['9M', '8M'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M'],\n      auroraveil: ['7M'],\n      avalanche: ['9M', '8M'],\n      bide: ['8V'],\n      blizzard: ['9M', '9L1', '8M', '8L1', '8V', '7M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '8V', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      confide: ['7M'],\n      counter: ['8V'],\n      covet: ['7T'],\n      curse: ['9M'],\n      defensecurl: ['9L1', '8L1', '8V', '7L1'],\n      dig: ['9M', '8M', '8V'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      drillrun: ['9M', '8M', '8V', '7T'],\n      earthquake: ['9M', '8M', '8V', '7M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '8V', '7M'],\n      falseswipe: ['9M'],\n      flashcannon: ['9M'],\n      fling: ['9M', '8M', '7M'],\n      focusblast: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      furycutter: ['9L1', '8L1'],\n      furyswipes: ['9L1', '8L1'],\n      gigaimpact: ['9M', '8M', '7M'],\n      gyroball: ['9M', '9L1', '8M', '8L1', '7M'],\n      hail: ['8M', '8L1', '7M'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '8V', '7M'],\n      iceball: ['7L1'],\n      icebeam: ['9M', '8V'],\n      icepunch: ['9M', '8M', '8V', '7T'],\n      iceshard: ['8V'],\n      icespinner: ['9M'],\n      iciclecrash: ['9L1', '8L1', '7L1'],\n      iciclespear: ['9M', '9L0', '8M', '8L0', '7L1'],\n      icywind: ['9M', '8M', '7T'],\n      irondefense: ['9M', '9L1', '8M', '8L1', '7T'],\n      ironhead: ['9M', '9L1', '8M', '8L1', '7T'],\n      irontail: ['8M', '8V', '7T'],\n      knockoff: ['9M', '7T'],\n      leechlife: ['9M', '8M', '7M'],\n      lowkick: ['9M'],\n      metalburst: ['9L1', '8L1', '7L1'],\n      metalclaw: ['9M', '9L1', '8L1', '7L1'],\n      mist: ['9L1', '8L1'],\n      pinmissile: ['8M'],\n      poisonjab: ['9M', '8M', '8V', '7M'],\n      powdersnow: ['9L1', '8L1'],\n      protect: ['9M', '8M', '8V', '7M'],\n      rapidspin: ['9L1', '8L1'],\n      rest: ['9M', '8M', '8V', '7M'],\n      return: ['7M'],\n      rockslide: ['9M', '8M', '8V', '7M'],\n      rocktomb: ['9M', '8M'],\n      rollout: ['9L1', '8L1'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scratch: ['9L1', '8L1', '8V'],\n      seismictoss: ['8V'],\n      shadowclaw: ['9M', '8M', '7M'],\n      slash: ['9L1', '8L1', '7L1'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M', '9L1'],\n      spikes: ['9M', '8M'],\n      stealthrock: ['9M', '8M', '8V', '7T'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      sunnyday: ['8M', '7M'],\n      superfang: ['9M', '7T'],\n      swagger: ['7M'],\n      swift: ['9M', '9L1', '8M', '8L1'],\n      swordsdance: ['9M', '9L1', '8M', '8L1', '7M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      throatchop: ['9M', '8M', '7T'],\n      toxic: ['8V', '7M'],\n      tripleaxel: ['9M', '8T'],\n      workup: ['8M', '7M'],\n      xscissor: ['9M', '8M', '8V', '7M']\n    }\n  ],\n  [\n    'nidoranf',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      bite: ['8L30', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L20'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      captivate: ['7L43', '6L43', '5L43', '4M', '4L43'],\n      charm: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      chipaway: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      counter: ['8E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      crunch: ['8M', '8L50', '8V', '7L37', '6L37', '5L37', '4L37', '3L47'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      disable: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      doubleedge: ['7V', '3T'],\n      doublekick: ['8L25', '8V', '7L9', '7V', '6L9', '5L9', '4L9', '3L12'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '8L55'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flatter: ['8L45', '7L33', '6L33', '5L33', '4L33', '3L38'],\n      focusenergy: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['8L15', '8V', '7L19', '7V', '6L19', '5L19', '4L19', '3L30'],\n      growl: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['8M', '8L35', '8V', '7T', '7L25', '6T', '6L25', '5T', '5L25', '4T', '4L25', '3L23'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      icebeam: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      poisonfang: ['8E', '7L45', '6L45', '5L45', '4L45'],\n      poisonjab: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      poisonsting: ['8L1', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L17'],\n      poisontail: ['8E', '7E', '6E', '5E'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '6E', '5E', '4E'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scratch: ['8L5', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['8E', '7E', '7V', '6E', '5E', '4E'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['5D'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['8V', '7T', '6T', '5T', '5D', '4T'],\n      supersonic: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['7V'],\n      tailwhip: ['8L10', '8V', '7L7', '7V', '6L7', '5L7', '4L7', '3L8'],\n      takedown: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8L40', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['8M', '8L20', '7L31', '6L31', '5L31', '4L31'],\n      venomdrench: ['8M', '7E', '6E'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      waterpulse: ['7T', '6T', '4M', '3M']\n    }\n  ],\n  [\n    'nidorina',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['8M'],\n      bide: ['7V'],\n      bite: ['8L36', '8V', '7L23', '7V', '6L23', '5L23', '4L23', '3L22'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      bubblebeam: ['7V'],\n      captivate: ['7L50', '6L50', '5L50', '4M', '4L50'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['8M', '8L64', '8V', '7L43', '6L43', '5L43', '4L43', '3L53'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doublekick: ['8L29', '8V', '7L9', '7V', '6L9', '5L9', '4L9', '3L12'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '8L71'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flatter: ['8L57', '7L38', '6L38', '5L38', '4L38', '3L43'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['8L15', '8V', '7L20', '7V', '6L20', '5L20', '4L20', '3L34'],\n      growl: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['8M', '8L43', '8V', '7T', '7L28', '6T', '6L28', '5T', '5L28', '4T', '4L28', '3L26'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      horndrill: ['7V'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      poisonfang: ['7L58', '6L58', '5L58', '4L58'],\n      poisonjab: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      poisonsting: ['8L1', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L18'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scratch: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['7V'],\n      tailwhip: ['8L1', '8V', '7L7', '7V', '6L7', '5L7', '4L7', '3L8'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8L50', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['8M', '8L22', '7L35', '6L35', '5L35', '4L35'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M']\n    }\n  ],\n  [\n    'nidoqueen',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['8M', '4M'],\n      beatup: ['8M'],\n      bide: ['7V'],\n      bite: ['8L1'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '8V', '7L35', '7V', '6L35', '6S0', '5L35', '4L23', '3T', '3L22'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['8M'],\n      chipaway: ['7L23', '6L23', '5L23'],\n      confide: ['7M', '6M'],\n      counter: ['8V', '7V', '3T'],\n      crunch: ['8M', '8L1'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doublekick: ['8L1', '7L1', '7V', '6L1', '6S0', '5L1', '4L1', '3L1'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonpulse: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      dragontail: ['8V', '7M', '6M', '5M'],\n      drillrun: ['8M', '8V', '7T', '6T'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['8M', '8L1', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L43'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flatter: ['8L1'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['8L1'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '8V'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['8M', '8L1', '8V', '7T', '6T', '5T', '4T'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      honeclaws: ['6M', '5M'],\n      horndrill: ['7V'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['8M'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      payday: ['8M', '8V', '7V'],\n      poisonjab: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      poisonsting: ['8L1', '8V', '7L1', '7V', '6L1', '6S0', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quash: ['7M', '6M', '5M'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['8M'],\n      scorchingsands: ['8T'],\n      scratch: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      superpower: ['8M', '8L0', '8V', '7T', '7L1', '6T', '6L1', '5T', '5L58', '4T', '4L58', '3L43'],\n      supersonic: ['8V'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['7V'],\n      tailwhip: ['8L1', '8V', '7L1', '7V', '6L1', '6S0', '5L1', '4L1', '3L1'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['8M', '7T'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['8M', '8L1'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'nidoranm',\n    {\n      amnesia: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      captivate: ['7L43', '6L43', '5L43', '4M', '4L43'],\n      chipaway: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      confusion: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      counter: ['8E', '7E', '7V', '6E', '5E', '5D', '4E', '3T', '3E'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      disable: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      doubleedge: ['7V', '3T'],\n      doublekick: ['8L25', '8V', '7L9', '7V', '6L9', '5L9', '4L9', '3L12'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['8M', '8V', '7T', '6T', '5T'],\n      earthpower: ['8M', '8L55'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flatter: ['8L45', '7L33', '6L33', '5L33', '4L33', '3L38'],\n      focusenergy: ['8M', '8L10', '8V', '7L7', '7V', '6L7', '5L7', '4L7', '3L8'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8L15', '8V', '7L19', '7V', '6L19', '5L19', '4L19', '3L30'],\n      headbutt: ['8V', '7V', '4T'],\n      headsmash: ['8E', '7E', '6E', '5E', '4E'],\n      helpinghand: ['8M', '8L35', '8V', '7T', '7L25', '6T', '6L25', '5T', '5L25', '4T', '4L25', '3L23'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hornattack: ['8L30', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L20'],\n      horndrill: ['8E', '8V', '7L45', '7V', '6L45', '5L45', '4L45', '3L47'],\n      icebeam: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      leer: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      peck: ['8L5', '8V', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      poisonjab: ['8M', '8L50', '8V', '7M', '7L37', '6M', '6L37', '5M', '5L37', '4M', '4L37'],\n      poisonsting: ['8L1', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L17'],\n      poisontail: ['8E', '7E', '6E', '5E'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['8E', '7E', '6E', '5E', '4T', '4E'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '5D', '4T'],\n      supersonic: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['7V'],\n      takedown: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['8E'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8L40', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['8M', '8L20', '7L31', '6L31', '5L31', '4L31'],\n      venomdrench: ['8M', '7E', '6E'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      waterpulse: ['7T', '6T', '4M', '3M']\n    }\n  ],\n  [\n    'nidorino',\n    {\n      amnesia: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['8M'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      bubblebeam: ['7V'],\n      captivate: ['7L50', '6L50', '5L50', '4M', '4L50'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doublekick: ['8L29', '8V', '7L9', '7V', '6L9', '5L9', '4L9', '3L12'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['8M', '8V', '7T', '6T', '5T'],\n      earthpower: ['8M', '8L71'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flatter: ['8L57', '7L38', '6L38', '5L38', '4L38', '3L43'],\n      focusenergy: ['8M', '8L1', '8V', '7L7', '7V', '6L7', '5L7', '4L7', '3L8'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8L15', '8V', '7L20', '7V', '6L20', '5L20', '4L20', '3L34'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['8M', '8L43', '8V', '7T', '7L28', '6T', '6L28', '5T', '5L28', '4T', '4L28', '3L26'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hornattack: ['8L36', '8V', '7L23', '7V', '6L23', '5L23', '4L23', '3L22'],\n      horndrill: ['8V', '7L58', '7V', '6L58', '5L58', '4L58', '3L53'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      peck: ['8L1', '8V', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      poisonjab: ['8M', '8L64', '8V', '7M', '7L43', '6M', '6L43', '5M', '5L43', '4M', '4L43'],\n      poisonsting: ['8L1', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L18'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['7V'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8L50', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['8M', '8L22', '7L35', '6L35', '5L35', '4L35'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M']\n    }\n  ],\n  [\n    'nidoking',\n    {\n      amnesia: ['8M'],\n      aquatail: ['7T', '7S0', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['8M', '4M'],\n      beatup: ['8M'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L23', '6L23', '5L23'],\n      confide: ['7M', '6M'],\n      counter: ['8V', '7V', '3T'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doublekick: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonpulse: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      dragontail: ['8V', '7M', '6M', '5M'],\n      drillrun: ['8M', '8V', '7T', '6T', '5T'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['8M', '8L1', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L43'],\n      earthquake: ['8M', '8V', '7M', '7V', '7S0', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flatter: ['8L1'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M', '8L1', '8V', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8L1'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['8M', '8L1', '8V', '7T', '6T', '5T', '4T'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      honeclaws: ['6M', '5M'],\n      hornattack: ['8L1', '7V'],\n      horndrill: ['7V'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['8L1', '8V'],\n      megahorn: ['8M', '8L0', '8V', '7L1', '6L1', '5L58', '4L58', '3L43'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['8M'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      payday: ['8M', '8V', '7V'],\n      peck: ['8L1', '8V', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      poisonjab: ['8M', '8L1', '8V', '7M', '7S0', '6M', '5M', '4M'],\n      poisonsting: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quash: ['7M', '6M', '5M'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['8M'],\n      scorchingsands: ['8T'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      smackdown: ['7M', '6M', '5M'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      supersonic: ['8V'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['7V'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['8V', '7L35', '7V', '6L35', '5L35', '4L23', '3L22'],\n      throatchop: ['8M', '7T', '7S0'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['8M', '8L1'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'cleffa',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      alluringvoice: ['9M'],\n      amnesia: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      aromatherapy: ['8E', '7E', '6E', '5E', '5D', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bellydrum: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      bodyslam: ['9M', '8M', '3T'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      charm: ['9M', '9L20', '8M', '8L20', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1', '7L13', '6L13', '5L13', '4L13'],\n      counter: ['3T'],\n      covet: ['7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      disarmingvoice: ['9M', '9L12', '8L12'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '9L16', '8M', '8L16', '7L4', '7V', '6L4', '5L4', '5D', '4L4', '3L4'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      fireblast: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['7V', '4T'],\n      healpulse: ['9E', '8E', '7E', '6E'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['9M', '8M', '7L16', '6L16', '5L16', '4L16', '3L17'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      mimic: ['7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      mistyterrain: ['9M', '8M', '7E', '6E'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      playrough: ['9M', '8M'],\n      pound: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      present: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sing: ['9L4', '8L4', '7L7', '7V', '6L7', '5L7', '4L7', '3L8'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '5D', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      softboiled: ['3T'],\n      solarbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      splash: ['9L1', '8L1', '7E', '7V', '6E', '5E', '4E', '3E'],\n      storedpower: ['9M', '8M', '7E', '6E', '5E'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L8', '8L8', '7L10', '7V', '6L10', '5L10', '4L10', '3L13'],\n      swift: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      tickle: ['9E', '8E', '7E', '6E', '5E'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wish: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'clefairy',\n    {\n      afteryou: ['9L12', '8L12', '7T', '7L58', '6T', '6L1', '5T', '5L52'],\n      alluringvoice: ['9M'],\n      allyswitch: ['8M'],\n      amnesia: ['9M', '8M', '8V'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M'],\n      bestow: ['7L19', '6L19', '5L19'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '8V', '7L40', '7V', '6L40', '5L40', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      calmmind: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      cosmicpower: ['9L40', '8M', '8L40', '7L34', '6L34', '5L28', '4L25', '3L33'],\n      counter: ['7V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      defensecurl: ['9L1', '8L1', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3T', '3L25'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L1', '6L1'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleslap: ['8V', '7L10', '7V', '6L10', '5L10', '4L10', '3L13'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['9M', '8T'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '9L8', '8M', '8L1', '8V', '7L1', '7V', '6L1', '5L4', '4L4', '3L5'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      followme: ['9L36', '8L36', '8S0', '7L16', '6L16', '5L16', '4L16', '3L17'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9L28', '8L28', '7T', '7L49', '6T', '6L49', '5T', '5L37', '4T', '4L34'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      healingwish: ['9L48', '8L48', '7L55', '6L1', '5L49', '4L46'],\n      helpinghand: ['9M', '8M', '8V', '8S0', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '8S0', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '8M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lifedew: ['9L16', '8L16'],\n      lightscreen: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '5L46', '4M', '4L40', '3M', '3L41'],\n      luckychant: ['7L37', '6L37', '5L31', '4L28'],\n      magicalleaf: ['9M', '8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      meteorbeam: ['9M', '8T'],\n      meteormash: ['9L32', '8L32', '7L50', '6L50', '5L52', '4L43', '3L45'],\n      metronome: ['9M', '9L20', '8M', '8L20', '8V', '8S1', '7L31', '7V', '6L31', '5L31', '4L31', '3T', '3L29'],\n      mimic: ['7V', '3T'],\n      minimize: ['8L8', '8V', '7L25', '7V', '6L25', '5L19', '4L19', '3L21'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      moonblast: ['9L44', '8L44', '8V', '8S1', '7L46', '6L46'],\n      moonlight: ['9L24', '8L24', '8S1', '7L43', '7V', '6L43', '5L40', '4L37', '3L37'],\n      mudslap: ['7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['9M'],\n      playrough: ['9M', '8M', '8V'],\n      pound: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '8S0', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sing: ['9L1', '8L1', '8V', '7L7', '7V', '6L7', '5L7', '4L7', '3L9'],\n      skillswap: ['9M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      softboiled: ['3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      splash: ['9L1', '8L1'],\n      spotlight: ['7L1'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      storedpower: ['9M', '9L4', '8M', '8L4', '7L28', '6L28', '5L28'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M'],\n      takedown: ['9M', '7V'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      uproar: ['9M', '8M'],\n      wakeupslap: ['7L22', '6L22', '5L22', '4L22'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '8S1', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'clefable',\n    {\n      afteryou: ['9L1', '8L1', '7T', '6T', '5T'],\n      alluringvoice: ['9M'],\n      allyswitch: ['8M'],\n      amnesia: ['9M', '8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      calmmind: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      cosmicpower: ['9L1', '8M', '8L1'],\n      counter: ['7V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      defensecurl: ['9L1', '8L1', '8V', '7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L1', '6L1'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleslap: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['9M', '8T'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '9L1', '8M', '8L1'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      followme: ['9L1', '8L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9L1', '8L1', '7T', '6T', '5T', '4T'],\n      growl: ['9L1', '8L1', '8V'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      healingwish: ['9L1', '8L1'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '8M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lifedew: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['9M', '8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      meteorbeam: ['9M', '8T'],\n      meteormash: ['9L1', '8L1'],\n      metronome: ['9M', '9L1', '8M', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L1'],\n      mimic: ['7V', '3T'],\n      minimize: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      moonblast: ['9L1', '8L1'],\n      moonlight: ['9L1', '8L1', '7V'],\n      mudslap: ['7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['9M'],\n      playrough: ['9M', '8M', '8V'],\n      pound: ['9L1', '8L1', '8V'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sing: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      skillswap: ['9M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      softboiled: ['3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      splash: ['9L1', '8L1'],\n      spotlight: ['7L1'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      storedpower: ['9M', '9L1', '8M', '8L1'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M'],\n      takedown: ['9M', '7V'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      uproar: ['9M', '8M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'vulpix',\n    {\n      agility: ['9M', '8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      babydolleyes: ['9E', '8E', '7L9', '6L9'],\n      batonpass: ['9M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      burningjealousy: ['9M', '8T'],\n      captivate: ['7L47', '7E', '6L47', '6E', '5L41', '4M', '4L37'],\n      charm: ['9M', '3S1'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L20', '8L20', '8V', '7L12', '7V', '6L12', '5L15', '4L17', '3L21'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      darkpulse: ['9M', '8M', '8V', '7M', '6M', '5T', '5D', '4M'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M', '3S1'],\n      disable: ['9L4', '8L4', '7E', '7V', '6E', '5E', '4E', '3E'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      ember: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4E'],\n      extrasensory: ['9L28', '8L28', '7L31', '7E', '6L31', '6E', '5L39', '5E', '4L44', '4E'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L23', '7E', '7V', '6L20', '6E', '5L20', '5E', '4E', '3E'],\n      fireblast: ['9M', '9L52', '8M', '8L56', '8V', '7M', '7L42', '7V', '6M', '6L42', '5M', '5L42', '4M', '4L47', '3M'],\n      firespin: ['9M', '9L40', '8M', '8L40', '8V', '7L15', '7V', '6L12', '5L12', '4L34', '3L41'],\n      flail: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      flameburst: ['7L28', '6L23', '5L23'],\n      flamecharge: ['9M', '9E', '8E', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L32', '8M', '8L32', '8V', '7M', '7L36', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L24', '3M', '3L29'],\n      flareblitz: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grudge: ['8L52', '7L44', '6L44', '5L44', '4L41', '3L37'],\n      headbutt: ['8V', '7V', '4T'],\n      healingwish: ['9E'],\n      heatwave: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E', '3S1'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M', '7L26', '7E', '6L26', '6E', '5L28', '5E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      howl: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      hypnosis: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      imprison: ['9M', '9L36', '8M', '8L36', '7L39', '6L18', '5L18', '4L21', '3L25'],\n      incinerate: ['9L16', '8L16', '6M', '5M'],\n      inferno: ['9L48', '8L48', '7L50', '6L50', '5L44'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      memento: ['9E', '8E'],\n      mimic: ['7V', '3T'],\n      mysticalfire: ['8M'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '7L18', '6M', '6L18', '5M', '5L31', '4M', '4L31'],\n      powerswap: ['8M', '7E', '6E', '5E', '4E'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '4E', '3E'],\n      quickattack: ['9L8', '8L8', '8V', '7L10', '7V', '6L10', '5L10', '4L11', '3L13', '3S0'],\n      rage: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '9E', '8E', '8V', '7M', '7L7', '7V', '6M', '6L7', '5M', '5L7', '5D', '4M', '4L7', '3M', '3L9', '3S0'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L44', '8M', '8L44', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L27', '4M', '4L27', '3M', '3L33'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '9L12', '8L12', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['8V'],\n      tailslap: ['8M', '7E', '6E', '5E'],\n      tailwhip: ['9L1', '8L1', '8V', '7L4', '7V', '6L4', '5L4', '4L4', '3L5', '3S0'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '9L24', '8M', '8L24', '8V', '7M', '7L20', '6M', '6L20', '5M', '5L26', '4M', '4L14', '3L17', '3S0'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'vulpixalola',\n    {\n      agility: ['9M', '8M', '7E'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M'],\n      aurorabeam: ['9L24', '8L24', '8V', '7L28'],\n      auroraveil: ['9L44', '8L44', '7M'],\n      babydolleyes: ['9E', '8E', '7L9', '7S0'],\n      batonpass: ['9M'],\n      blizzard: ['9M', '9L52', '8M', '8L56', '8V', '7M', '7L42'],\n      bodyslam: ['9M', '8M'],\n      captivate: ['7L47'],\n      celebrate: ['7S0'],\n      charm: ['9M', '8M', '7E'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L20', '8L20', '8V', '7L12'],\n      covet: ['7T'],\n      darkpulse: ['9M', '8M', '8V', '7M'],\n      dazzlinggleam: ['9M', '8V'],\n      dig: ['9M', '8M', '8V'],\n      disable: ['9L4', '8L4', '7E'],\n      disarmingvoice: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      encore: ['9M', '8M', '7E'],\n      endure: ['9M', '8M'],\n      extrasensory: ['9L28', '8L28', '7L31', '7E'],\n      facade: ['9M', '8M', '8V', '7M'],\n      faketears: ['9M'],\n      feintattack: ['7L23'],\n      flail: ['9E', '8E', '7E'],\n      foulplay: ['9M', '8M', '8V', '7T'],\n      freezedry: ['9L48', '8E', '7E'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      grudge: ['8L52', '7L44'],\n      hail: ['8M', '7M'],\n      headbutt: ['8V'],\n      healbell: ['7T'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M', '7L26'],\n      hiddenpower: ['7M'],\n      howl: ['9E', '8E', '7E'],\n      hypnosis: ['9E', '8E', '7E'],\n      icebeam: ['9M', '9L32', '8M', '8L32', '8V', '7M', '7L36'],\n      iceshard: ['9L8', '8L8', '8V', '7L10', '7S0'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '9L16', '8M', '8L16', '7T', '7L15'],\n      imprison: ['9M', '9L36', '8M', '8L36', '7L39'],\n      irontail: ['8M', '8V', '7T'],\n      mist: ['9L40', '8L40', '8V', '7L20'],\n      mistyterrain: ['9M'],\n      moonblast: ['9E', '8E', '7E'],\n      nastyplot: ['9M'],\n      painsplit: ['9M', '7T'],\n      payback: ['8M', '7M', '7L18'],\n      playrough: ['9M'],\n      powdersnow: ['9L1', '8L1', '7L1', '7S1'],\n      powerswap: ['8M', '7E'],\n      protect: ['9M', '8M', '8V', '7M'],\n      psychup: ['9M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['8V'],\n      rest: ['9M', '8M', '8V', '7M'],\n      return: ['7M'],\n      roar: ['9M', '9E', '8E', '8V', '7M', '7L7'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M', '7L34'],\n      secretpower: ['7E'],\n      sheercold: ['8L48', '7L50'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      spite: ['9M', '9L12', '8L12', '7T', '7E'],\n      storedpower: ['9M'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      tackle: ['8V'],\n      tailslap: ['8M', '7E'],\n      tailwhip: ['9L1', '8L1', '8V', '7L4', '7S0'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M'],\n      weatherball: ['9M', '8M'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'ninetales',\n    {\n      agility: ['9M', '8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      burningjealousy: ['9M', '8T'],\n      calmmind: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      darkpulse: ['9M', '8M', '8V', '7M', '6M', '5T', '4M'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      disable: ['9L1', '8L1'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['8V', '7M', '6M', '5M', '4M'],\n      ember: ['9L1', '8L1', '8V', '7V', '5L1', '4L1', '3L1'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      extrasensory: ['9L1', '8L1'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      fireblast: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firespin: ['9M', '9L1', '8M', '8L1', '7V', '3L45'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7L1', '6M', '6L1', '5M', '4M', '3M'],\n      flareblitz: ['9M', '8M'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grudge: ['8L1'],\n      headbutt: ['8V', '7V', '4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '5S0', '4T'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['8V'],\n      imprison: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      incinerate: ['9L1', '8L1', '6M', '5M'],\n      inferno: ['9L1', '8L1'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      mimic: ['7V', '3T'],\n      mysticalfire: ['8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1', '8V', '7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      ominouswind: ['4T'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      quickattack: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      rage: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L1', '8M', '8L1', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '6M', '5M', '5S0', '4M'],\n      spite: ['9M', '9L1', '8L1', '7T', '6T', '5T', '4T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['8V'],\n      tailslap: ['8M'],\n      tailwhip: ['9L1', '8L1', '8V', '7V'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '9L1', '8M', '8L1', '8V', '7M', '6M', '5M', '5S0', '4M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'ninetalesalola',\n    {\n      agility: ['9M', '8M'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M'],\n      aurorabeam: ['9L1', '8L1'],\n      auroraveil: ['9L1', '8L1', '7M'],\n      avalanche: ['9M', '8M'],\n      batonpass: ['9M'],\n      blizzard: ['9M', '9L1', '8M', '8L1', '8V', '7M'],\n      bodyslam: ['9M', '8M'],\n      calmmind: ['9M', '8M', '8V', '7M'],\n      charm: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L1', '8L1', '7L1'],\n      covet: ['7T'],\n      darkpulse: ['9M', '8M', '8V', '7M'],\n      dazzlinggleam: ['9M', '9L0', '8M', '8L0', '8V', '7M', '7L1'],\n      dig: ['9M', '8M', '8V'],\n      disable: ['9L1', '8L1'],\n      disarmingvoice: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      dreameater: ['8V', '7M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      extrasensory: ['9L1', '8L1'],\n      facade: ['9M', '8M', '8V', '7M'],\n      faketears: ['9M', '8M'],\n      foulplay: ['9M', '8M', '8V', '7T'],\n      freezedry: ['9L1'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      grudge: ['8L1'],\n      hail: ['8M', '7M'],\n      headbutt: ['8V'],\n      healbell: ['7T'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '8V', '7M'],\n      hypnosis: ['8V'],\n      icebeam: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7L1'],\n      iceshard: ['9L1', '8L1', '8V', '7L1'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '9L1', '8M', '8L1', '7T'],\n      imprison: ['9M', '9L1', '8M', '8L1', '7L1'],\n      irontail: ['8M', '8V', '7T'],\n      laserfocus: ['7T'],\n      mist: ['9L1', '8L1', '8V'],\n      mistyterrain: ['9M', '8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1', '8V', '7L1'],\n      painsplit: ['9M', '7T'],\n      payback: ['8M', '7M'],\n      playrough: ['9M'],\n      powdersnow: ['9L1', '8L1'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '8V', '7M'],\n      psychup: ['9M', '7M'],\n      psyshock: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['8V'],\n      rest: ['9M', '8M', '8V', '7M'],\n      return: ['7M'],\n      roar: ['9M', '7M'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M', '7L1'],\n      sheercold: ['8L1'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      solarbeam: ['8M'],\n      spite: ['9M', '9L1', '8L1', '7T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      tackle: ['8V'],\n      tailslap: ['8M'],\n      tailwhip: ['9L1', '8L1', '8V'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M'],\n      tripleaxel: ['9M', '8T'],\n      weatherball: ['9M', '8M'],\n      wonderroom: ['8M', '7T'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'igglybuff',\n    {\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      captivate: ['7E', '6E', '5E', '4M'],\n      charm: ['9M', '9L20', '8M', '8L20', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1', '7L11', '6L11', '5L17', '4L17'],\n      counter: ['3T'],\n      covet: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M'],\n      defensecurl: ['9L4', '8L4', '7L3', '7V', '6L3', '5L5', '4L5', '3T', '3L4', '3S0'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      disable: ['9L16', '8L16'],\n      disarmingvoice: ['9M', '9L12', '8L12'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M', '7E', '6E', '5E', '5D', '4E', '3E'],\n      feintattack: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      fireblast: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      healpulse: ['9E', '8E', '7E', '6E'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '5D', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      lastresort: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mistyterrain: ['9M', '8M', '7E', '6E'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      perishsong: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      playrough: ['9M', '8M'],\n      pound: ['9L1', '8L1', '7L5', '7V', '6L5', '5L9', '4L9', '3L9'],\n      present: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      punishment: ['7E', '6E', '5E'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['9E', '8E', '7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sing: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L8', '8L8', '7L9', '7V', '6L9', '5L13', '4L13', '3L14'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      tickle: ['3S0'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      wish: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'jigglypuff',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M'],\n      bide: ['8V', '7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L24', '8M', '8L24', '8V', '7L32', '7V', '6L33', '5L33', '4L29', '3T', '3L34'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      counter: ['7V', '3T'],\n      covet: ['9L8', '8L8', '7T', '6T', '5T'],\n      curse: ['7V'],\n      darkpulse: ['9M'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      defensecurl: ['9L1', '8L1', '8V', '7L3', '7V', '6L3', '5L5', '4L5', '3T', '3L4'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      disable: ['9L1', '8L1', '8V', '7L14', '7V', '6L13', '5L13', '4L13', '3L14'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L11', '6L11'],\n      doubleedge: ['9M', '9L44', '8L44', '8V', '7L45', '7V', '6L49', '5L53', '4L49', '3T', '3L49'],\n      doubleslap: ['8V', '7L17', '7V', '6L18', '5L25', '4L21', '3L24'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['9L4', '8L4', '7M', '6M', '5M'],\n      encore: ['9M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '9L32', '8M', '8L32', '7M', '7L35', '6M', '6L37', '5M', '5L37', '4M', '4L33'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '9L36', '8M', '8L36', '7T', '7L41', '6T', '6L44', '5T', '5L49', '4L45', '3L44'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      incinerate: ['6M', '5M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M'],\n      mimic: ['9L28', '8L28', '8V', '7L38', '7V', '6L37', '5L45', '4L41', '3T', '3L39'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      playnice: ['7L9', '6L8'],\n      playrough: ['9M', '8M', '8L40', '8V'],\n      pound: ['9L1', '8L1', '8V', '7L5', '7V', '6L5', '5L9', '4L9', '3L9'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L20', '8M', '8L20', '8V', '7M', '7L30', '7V', '6M', '6L29', '5M', '5L29', '4M', '4L25', '3M', '3L29'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['7L20', '7V', '6L21', '5L21', '4T', '4L17', '3T', '3L19'],\n      round: ['9L16', '8M', '8L16', '7M', '7L22', '6M', '6L17', '5M', '5L17'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['9M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sing: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      skillswap: ['9M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spitup: ['9L12', '8L12', '7L25'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      steelroller: ['8T'],\n      stockpile: ['9L12', '8L12', '7L25'],\n      storedpower: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9L12', '8L12', '7L25'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M'],\n      telekinesis: ['7T'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      triattack: ['8M', '8V', '7V'],\n      uproar: ['9M', '8M'],\n      wakeupslap: ['7L27', '6L28', '5L41', '4L37'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'wigglytuff',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M'],\n      bide: ['8V', '7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L1', '8M', '8L1', '7V', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      counter: ['7V', '3T'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      curse: ['7V'],\n      darkpulse: ['9M'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      defensecurl: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L1'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      disable: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      disarmingvoice: ['9M', '9L1', '8L1'],\n      doubleedge: ['9M', '9L1', '8L1', '7L1', '7V', '6L1', '3T'],\n      doubleslap: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['9L1', '8L1', '7M', '6M', '5M'],\n      encore: ['9M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      incinerate: ['6M', '5M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M'],\n      mimic: ['9L1', '8L1', '7V', '3T'],\n      minimize: ['8V'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      playrough: ['9M', '9L5', '8M', '8L1', '8V', '7L1', '6L1'],\n      pound: ['9L1', '8L1', '8V'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['9L1', '8M', '8L1', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['9M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sing: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      skillswap: ['9M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spitup: ['9L1', '8L1'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      steelroller: ['8T'],\n      stockpile: ['9L1', '8L1'],\n      storedpower: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9L1', '8L1'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M'],\n      telekinesis: ['7T'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      triattack: ['8M', '8V', '7V'],\n      uproar: ['9M', '8M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'zubat',\n    {\n      absorb: ['8L1', '8V', '7L1'],\n      acrobatics: ['8M', '7M', '6M', '6L30', '5M', '5L30'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8M'],\n      aircutter: ['8L25', '7L19', '6L19', '5L25', '4T', '4L25', '3L31'],\n      airslash: ['8M', '8L50', '8V', '7L41', '6L41', '5L45', '4L41'],\n      assurance: ['8M'],\n      astonish: ['8L5', '7L7', '6L7', '5L8', '4L9', '3L6'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bite: ['8L30', '8V', '7L11', '7V', '6L11', '5L12', '4L13', '3L16'],\n      bravebird: ['8M', '7E', '6E', '5E', '4E'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L45', '8V', '7L17', '7V', '6L17', '5L19', '4L21', '3L26'],\n      crunch: ['8M'],\n      curse: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      defog: ['8E', '7T', '7E', '6E', '5E', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['8T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      fly: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      gust: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      haze: ['8L35', '8V', '7L35', '7V', '6L35', '5L41', '4L37', '3L46'],\n      headbutt: ['8V'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['8E', '7E', '6E', '5E', '5D', '4E'],\n      leechlife: ['8M', '8L55', '8V', '7M', '7L31', '7V', '6L1', '5L1', '4L1', '3L1'],\n      meanlook: ['8L10', '7L29', '7V', '6L29', '5L29', '4L29', '3L36'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      nastyplot: ['8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      pluck: ['5M', '4M'],\n      poisonfang: ['8L15', '7L25', '6L25', '5L37', '4L33', '3L41'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      quickattack: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      quickguard: ['8L20', '7L43', '6L43'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['8M', '7M', '7E', '7V', '6M', '6E', '5E', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '5D', '4T'],\n      supersonic: ['8L1', '8V', '7L5', '7V', '6L4', '5L4', '5D', '4L5', '3L6'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '8V', '7L23', '7V', '6L23', '5L23', '4T', '3T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      venomdrench: ['8M', '7E', '6E'],\n      venoshock: ['8M', '8L40', '7M', '7L37', '6M', '6L37', '5M'],\n      whirlwind: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      wingattack: ['8E', '8V', '7L13', '7V', '6L13', '5L15', '4L17', '3L21'],\n      zenheadbutt: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E']\n    }\n  ],\n  [\n    'golbat',\n    {\n      absorb: ['8L1', '8V', '7L1'],\n      acrobatics: ['8M', '7M', '6M', '6L33', '5M', '5L33'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8M'],\n      aircutter: ['8L27', '7L19', '6L19', '5L27', '4T', '4L27', '3L35'],\n      airslash: ['8M', '8L62', '8V', '7L48', '6L48', '5L52', '4L51'],\n      assurance: ['8M'],\n      astonish: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bite: ['8L34', '8V', '7L1', '7V', '6L1', '5L12', '4L13', '3L16'],\n      bravebird: ['8M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L55', '8V', '7L17', '7V', '6L17', '5L19', '4L21', '3L28'],\n      crunch: ['8M', '8V'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['8T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fly: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      haze: ['8L41', '8V', '7L40', '7V', '6L40', '5L47', '4L45', '3L56'],\n      headbutt: ['8V'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      leechlife: ['8M', '8L69', '8V', '7M', '7L35', '7V', '6L1', '5L1', '4L1', '3L1'],\n      meanlook: ['8L1', '7L32', '7V', '6L32', '5L33', '4L33', '3L42'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      nastyplot: ['8M'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      pluck: ['5M', '4M'],\n      poisonfang: ['8L15', '7L27', '6L27', '5L42', '4L39', '3L49'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['8V'],\n      quickguard: ['8L20', '7L51', '6L51'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      supersonic: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '8V', '7L24', '7V', '6L24', '5L24', '4T', '3T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '8L48', '7M', '7L43', '6M', '6L43', '5M'],\n      whirlwind: ['8V', '7V'],\n      wingattack: ['8V', '7L13', '7V', '6L13', '5L15', '4L17', '3L21'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'crobat',\n    {\n      absorb: ['8L1', '7L1'],\n      acrobatics: ['8M', '7M', '6M', '6L33', '5M', '5L33'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8M'],\n      aircutter: ['8L27', '7L19', '6L19', '5L27', '4T', '4L27', '3L35'],\n      airslash: ['8M', '8L62', '7L48', '7S1', '6L48', '5L52', '4L51', '4S0'],\n      assurance: ['8M'],\n      astonish: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bite: ['8L34', '7L1', '7V', '6L1', '5L12', '4L13', '3L16'],\n      bravebird: ['8M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L55', '7L17', '7V', '6L17', '5L19', '4L21', '3L28'],\n      crosspoison: ['8M', '8L0', '7L1', '6L1', '5L1', '4L1'],\n      crunch: ['8M'],\n      curse: ['7V'],\n      darkpulse: ['8M', '7M', '7S1', '6M', '5T', '4M'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['8T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fly: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      haze: ['8L41', '7L40', '7V', '6L40', '5L47', '4L45', '3L56'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T', '4S0'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['8M'],\n      hyperbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      leechlife: ['8M', '8L69', '7M', '7L35', '7V', '6L1', '5L1', '4L1', '3L1'],\n      meanlook: ['8L1', '7L32', '7V', '6L32', '5L33', '4L33', '3L42'],\n      mimic: ['3T'],\n      nastyplot: ['8M'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      pluck: ['5M', '4M'],\n      poisonfang: ['8L15', '7L27', '6L27', '5L42', '4L39', '3L49'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickguard: ['8L20', '7L51', '6L51'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      skyattack: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '7M', '7S1', '6M', '5M', '4M', '4S0', '3M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '4T', '4S0'],\n      supersonic: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7L24', '7V', '6L24', '5L24', '4T', '3T'],\n      tailwind: ['8L1', '7T', '6T', '5T', '4T'],\n      taunt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8L1', '7M', '7V', '7S1', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['8M', '7M', '6M', '5M', '4M'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '8L48', '7M', '7L43', '6M', '6L43', '5M'],\n      wingattack: ['7L13', '7V', '6L13', '5L15', '4L17', '3L21'],\n      xscissor: ['8M', '7M', '6M', '5M', '4M'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'oddish',\n    {\n      absorb: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      acid: ['9L4', '8L4', '8V', '7L9', '7V', '6L9', '5L9', '4L9', '3L23', '3S0'],\n      acidspray: ['9M'],\n      afteryou: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['8M', '8V', '7M', '6M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['7T', '6T', '5T', '4T'],\n      gigadrain: ['9M', '9L20', '8M', '8L20', '7T', '7L31', '7V', '6T', '6L31', '5T', '5L37', '5D', '4M', '4L37', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '9L32', '8M', '8L32', '7L47', '6L45'],\n      growth: ['9L1', '8L1', '8V', '7L1'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      ingrain: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      leafstorm: ['9M'],\n      leechseed: ['9E', '8E', '3S1'],\n      luckychant: ['7L23', '6L23', '5L25', '4L25'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '8L12', '8V', '7L19', '7V', '6L19', '5L21', '4L21'],\n      mimic: ['7V', '3T'],\n      moonblast: ['9L28', '8L28', '8V', '7L43', '6L43'],\n      moonlight: ['9L36', '8L36', '7L27', '7V', '6L27', '5L33', '4L33', '3L32'],\n      naturalgift: ['7L39', '6L29', '5L29', '4M', '4L29'],\n      naturepower: ['8E', '7M', '7E', '6M', '6E', '5E'],\n      petaldance: ['9L40', '8L40', '7L51', '7V', '6L41', '5L41', '4L41', '3L39'],\n      poisonpowder: ['9L14', '8L14', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L14', '3S0'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      razorleaf: ['9E', '8E', '8V', '7E', '7V', '6E', '5E', '4E', '3E'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      sleeppowder: ['9L18', '8L18', '8V', '7L15', '7V', '6L15', '5L17', '4L17', '3L18', '3S0'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      strengthsap: ['9E', '8E', '7E'],\n      stunspore: ['9L16', '8L16', '8V', '7L14', '7V', '6L14', '5L15', '4L15', '3L16', '3S0'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L8', '8L8', '7L5', '7V', '6L5', '5L5', '5D', '4L5', '3L7'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      synthesis: ['9E', '8E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      takedown: ['7V'],\n      teeterdance: ['9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      terablast: ['9M'],\n      tickle: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      toxic: ['9M', '9L24', '8L24', '8V', '7M', '7L35', '7V', '6M', '6L35', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      worryseed: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'gloom',\n    {\n      absorb: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      acid: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L24', '3S0'],\n      acidspray: ['9M'],\n      afteryou: ['7T', '6T', '5T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['8M', '8V', '7M', '6M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['7T', '6T', '5T', '4T'],\n      gigadrain: ['9M', '9L20', '8M', '8L20', '7T', '7L34', '7V', '6T', '6L34', '5T', '5L47', '4M', '4L47', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '9L38', '8M', '8L38', '7L54', '6L54'],\n      growth: ['9L1', '8L1', '8V', '7L1'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      leafstorm: ['9M'],\n      luckychant: ['7L24', '6L24', '5L29', '4L29'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '8L12', '8V', '7L19', '7V', '6L19', '5L23', '4L23'],\n      mimic: ['7V', '3T'],\n      moonblast: ['9L32', '8L32', '8V'],\n      moonlight: ['9L44', '8L44', '7L29', '7V', '6L29', '5L41', '4L41', '3L35', '3S0'],\n      naturalgift: ['7L44', '6L35', '5L35', '4M', '4L35'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M', '7L49', '6L49'],\n      petaldance: ['9L50', '8L50', '7L59', '7V', '6L53', '5L53', '4L53', '3L44', '3S0'],\n      poisonpowder: ['9L14', '8L14', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L1'],\n      pollenpuff: ['9M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      razorleaf: ['8V'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      sleeppowder: ['9L18', '8L18', '8V', '7L15', '7V', '6L15', '5L17', '4L17', '3L18', '3S0'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      stunspore: ['9L16', '8L16', '8V', '7L14', '7V', '6L14', '5L15', '4L15', '3L16'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L26', '8L26', '8V', '7M', '7L39', '7V', '6M', '6L39', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      worryseed: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'vileplume',\n    {\n      absorb: ['9L1', '8L1', '8V', '7V', '3L1'],\n      acid: ['9L1', '8L1', '8V', '7V'],\n      acidspray: ['9M'],\n      afteryou: ['7T', '6T', '5T'],\n      aromatherapy: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      corrosivegas: ['8T'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['7T', '6T', '5T', '4T'],\n      gigadrain: ['9M', '9L1', '8M', '8L1', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '9L1', '8M', '8L1'],\n      growth: ['9L1', '8L1', '8V'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      leafstorm: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['7V', '3T'],\n      moonblast: ['9L1', '8L1'],\n      moonlight: ['9L1', '8L1'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M', '9L0', '8L0', '7L49', '6L49'],\n      petaldance: ['9L1', '8L1', '8V', '7L59', '7V', '6L53', '5L53', '4L53', '3L44'],\n      poisonpowder: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1'],\n      pollenpuff: ['9M', '8M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      sleeppowder: ['9L1', '8L1', '7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7L69', '7V', '6M', '6L64', '5M', '5L65', '4M', '4L65', '3M'],\n      solarblade: ['9M'],\n      stunspore: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L1', '8L1', '7V'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L1', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      weatherball: ['9M'],\n      worryseed: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'bellossom',\n    {\n      absorb: ['9L1', '8L1', '7V', '3L1'],\n      acid: ['9L1', '8L1'],\n      acidspray: ['9M'],\n      afteryou: ['7T', '6T', '5T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['7T', '6T', '5T', '4T'],\n      gigadrain: ['9M', '9L1', '8M', '8L1', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '9L1', '8M', '8L1'],\n      growth: ['9L1', '8L1'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      laserfocus: ['7T'],\n      leafblade: ['8M', '7L1', '6L1', '5L1', '4L1'],\n      leafstorm: ['9M', '8M', '7L1', '6L1', '5L53', '4L53'],\n      magicalleaf: ['9M', '8M', '7L1', '6L23', '5L23', '4L23', '3L1'],\n      megadrain: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      mimic: ['3T'],\n      moonblast: ['9L1', '8L1'],\n      moonlight: ['9L1', '8L1'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M', '9L0', '8L0', '7L49', '6L49'],\n      petaldance: ['9L1', '8L1', '7L59', '7V', '3L44'],\n      playrough: ['9M', '8M'],\n      poisonpowder: ['9L1', '8L1'],\n      pollenpuff: ['9M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quiverdance: ['9L1', '8L1', '7L39'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      sleeppowder: ['9L1', '8L1'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M', '3L55'],\n      solarblade: ['9M'],\n      stunspore: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L1', '8L1', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      weatherball: ['9M'],\n      worryseed: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'paras',\n    {\n      absorb: ['8V', '7L11'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      afteryou: ['7T', '6T', '5T'],\n      agility: ['7E', '6E', '5E', '4E'],\n      aromatherapy: ['7L43', '6L43', '5L43', '4L38', '3L49'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['7V', '3T'],\n      brickbreak: ['8V', '7M', '6M', '5M', '4M'],\n      bugbite: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      bulletseed: ['4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      crosspoison: ['7E', '6E', '5E', '5D', '4E'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dig: ['8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['7E', '7V', '6E', '5E', '4M', '3T'],\n      energyball: ['7M', '6M', '5M', '4M'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['7M', '7V', '6M', '5M', '4M', '4E', '3E', '3S0'],\n      fellstinger: ['7E', '6E'],\n      flail: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7L17', '7V', '6L17', '5L17', '4T', '3T'],\n      furyswipes: ['8V'],\n      gigadrain: ['7T', '7L38', '7V', '6T', '6L38', '5T', '5L38', '4M', '4L33', '3M', '3L43'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      grassyterrain: ['7E'],\n      growth: ['8V', '7L33', '7V', '6L33', '5L33', '4L27', '3L37'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      leechlife: ['8V', '7M', '7V', '6L11', '5L11', '4L11', '3L19'],\n      leechseed: ['7E', '6E', '5E'],\n      lightscreen: ['8V', '7M', '7V', '6M', '5M', '4E', '3E'],\n      megadrain: ['8V', '7V'],\n      metalclaw: ['7E', '6E', '5E', '4E'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      naturepower: ['7M', '6M'],\n      poisonpowder: ['8V', '7L6', '7V', '6L6', '5L6', '4L6', '3L13'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rage: ['7V'],\n      ragepowder: ['7L49', '6L49', '5L49'],\n      reflect: ['8V', '7V'],\n      refresh: ['3S0'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rototiller: ['7E', '6E'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['7T', '6T', '5T', '4T'],\n      skullbash: ['7V'],\n      slash: ['8V', '7L27', '7V', '6L27', '5L27', '4L22', '3L31', '3S0'],\n      sleeppowder: ['8V'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spore: ['8V', '7L22', '7V', '6L22', '5L22', '4L17', '3L25', '3S0'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      stunspore: ['8V', '7L6', '7V', '6L6', '5L6', '5D', '4L6', '3L7'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      swordsdance: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '5D', '4T'],\n      takedown: ['7V'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      venoshock: ['7M', '6M', '5M'],\n      wideguard: ['7E', '6E'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      xscissor: ['8V', '7M', '7L54', '6M', '6L54', '5M', '5L54', '4M', '4L43']\n    }\n  ],\n  [\n    'parasect',\n    {\n      absorb: ['8V', '7L1'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      afteryou: ['7T', '6T', '5T'],\n      aromatherapy: ['7L51', '6L51', '5L51', '4L47', '3L59'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['7V', '3T'],\n      brickbreak: ['8V', '7M', '6M', '5M', '4M'],\n      bugbite: ['7T', '6T', '5T', '4T'],\n      bulletseed: ['4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crosspoison: ['7L1', '6L1', '5L1', '4L1'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dig: ['8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['7V', '4M', '3T'],\n      energyball: ['7M', '6M', '5M', '4M'],\n      facade: ['8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['7M', '6M', '5M', '4M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7L17', '7V', '6L17', '5L17', '4T', '3T'],\n      furyswipes: ['8V'],\n      gigadrain: ['7T', '7L44', '7V', '6T', '6L44', '5T', '5L44', '4M', '4L39', '3M', '3L51'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      growth: ['8V', '7L37', '7V', '6L37', '5L37', '4L30', '3L43'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      leechlife: ['8V', '7M', '7V', '6L1', '5L1', '4L1', '3L19'],\n      leechseed: ['8V'],\n      lightscreen: ['8V', '7M', '6M', '5M'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      poisonpowder: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      protect: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      ragepowder: ['7L59', '6L59', '5L59'],\n      reflect: ['8V', '7V'],\n      rest: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['8V'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['7T', '6T', '5T', '4T'],\n      skullbash: ['7V'],\n      slash: ['8V', '7L29', '7V', '6L29', '5L29', '4L22', '3L35'],\n      sleeppowder: ['8V'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spore: ['8V', '7L22', '7V', '6L22', '5L22', '4L17', '3L27'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      stunspore: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      substitute: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swordsdance: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['7T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      venoshock: ['7M', '6M', '5M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      xscissor: ['8V', '7M', '7L66', '6M', '6L66', '5M', '5L66', '4M', '4L55']\n    }\n  ],\n  [\n    'venonat',\n    {\n      acidspray: ['9M'],\n      agility: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '9E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      bide: ['7V'],\n      bugbite: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      bugbuzz: ['9M', '9L25'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L11', '8V', '7L11', '7V', '6L11', '5L11', '4L11', '3L17'],\n      curse: ['7V'],\n      disable: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foresight: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '4E', '3M', '3E'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      leechlife: ['9M', '9L35', '8V', '7M', '7L35', '7V', '6L17', '5L17', '4L17', '3L25'],\n      lunge: ['9M'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      morningsun: ['9E', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      poisonfang: ['9L41', '7L41', '6L41', '5L41', '4L41'],\n      poisonpowder: ['9L13', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L20'],\n      pounce: ['9M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L17', '8V', '7L17', '7V', '6L25', '5L25', '4L25', '3L33'],\n      psychic: ['9M', '9L47', '8V', '7M', '7L47', '7V', '6M', '6L47', '5M', '5L47', '4M', '4L47', '3M', '3L41'],\n      psychicnoise: ['9M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      ragepowder: ['9E', '7E', '6E', '5E'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      screech: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      signalbeam: ['7T', '7L25', '7E', '6T', '6L35', '6E', '5T', '5L35', '5E', '4T', '4L35', '4E', '3E'],\n      skillswap: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4M', '3M'],\n      skittersmack: ['9M'],\n      sleeppowder: ['9L29', '8V', '7L29', '7V', '6L29', '5L29', '4L29', '3L36'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '6M', '5M'],\n      stunspore: ['9L23', '8V', '7L23', '7V', '6L23', '5L23', '4L23', '3L28'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['9L5', '8V', '7L5', '7V', '6L5', '5L5', '4L5', '3L9'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['9M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      venoshock: ['9M', '9E', '7M', '6M', '5M'],\n      zenheadbutt: ['9M', '9L37', '7T', '7L37', '6T', '6L37', '5T', '5L37', '4T', '4L37']\n    }\n  ],\n  [\n    'venomoth',\n    {\n      acidspray: ['9M'],\n      acrobatics: ['9M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8V'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9L0'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bide: ['7V'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '9L25', '8V', '7L1', '6L1', '5L59', '4L59'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L11', '8V', '7L11', '7V', '6L11', '5L11', '4L11', '3L17'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      disable: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['8V'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foresight: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gust: ['8V', '7L1', '7V', '6L31', '5L31', '4L31', '3L31'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      leechlife: ['9M', '9L37', '8V', '7M', '7L37', '7V', '6L17', '5L17', '4L17', '3L25'],\n      lunge: ['9M'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      ominouswind: ['4T'],\n      poisonfang: ['9L47', '7L47', '6L47', '5L47', '4L47'],\n      poisonpowder: ['9L13', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L20'],\n      pounce: ['9M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L17', '8V', '7L17', '7V', '6L25', '5L25', '4L25', '3L36'],\n      psychic: ['9M', '9L55', '8V', '7M', '7L55', '7V', '6M', '6L55', '5M', '5L55', '4M', '4L55', '3M', '3L52', '3S0'],\n      psychicnoise: ['9M'],\n      psywave: ['7V'],\n      quiverdance: ['9L1', '8V', '7L1', '6L1', '5L63'],\n      rage: ['7V'],\n      razorwind: ['7V'],\n      reflect: ['8V', '7V'],\n      refresh: ['3S0'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      screech: ['8V'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '7L25', '6T', '6L37', '5T', '5L37', '4T', '4L37'],\n      silverwind: ['7L1', '6L1', '5L1', '4M', '4L1', '3L1', '3S0'],\n      skillswap: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      skittersmack: ['9M'],\n      sleeppowder: ['9L29', '8V', '7L29', '7V', '6L29', '5L29', '4L29', '3L42'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '6M', '5M'],\n      stunspore: ['9L23', '8V', '7L23', '7V', '6L23', '5L23', '4L23', '3L28'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T', '3S0'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['9M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M', '7V'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      twister: ['4T'],\n      uturn: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      whirlwind: ['7V'],\n      zenheadbutt: ['9M', '9L41', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L41']\n    }\n  ],\n  [\n    'diglett',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M', '8V'],\n      allyswitch: ['8M'],\n      ancientpower: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      assurance: ['8M'],\n      astonish: ['9L8', '8L8', '7L7', '7E', '6L7', '6E', '5L7', '5E', '4L7', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['8M', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bulldoze: ['9M', '9L16', '8M', '8L16', '7M', '7L18', '6M', '6L18', '5M', '5L18'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dig: ['9M', '9L32', '8M', '8L32', '8V', '7L31', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L18', '3M', '3L17'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '9L36', '8M', '8L36', '7T', '7L28', '6T', '6L29', '5T', '5L29', '4T', '4L26'],\n      earthquake: ['9M', '9L40', '8M', '8L40', '8V', '7M', '7L39', '7V', '6M', '6L40', '5M', '5L40', '4M', '4L37', '3M', '3L41'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      finalgambit: ['9E', '8E', '7E', '6E', '5E'],\n      fissure: ['9L44', '8L44', '8V', '7L43', '7V', '6L45', '5L45', '4L40', '3L49'],\n      foulplay: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['8V', '3L21'],\n      growl: ['9L4', '8L4', '8V', '7L4', '7V', '6L4', '5L4', '4L4', '3L5'],\n      headbutt: ['9E', '8E', '8V', '7E', '6E', '5E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['9E', '8E', '6M', '5M'],\n      magnitude: ['7L14', '7V', '6L15', '5L15', '4L12', '3L9'],\n      memento: ['9E', '8E', '7E', '6E', '5E'],\n      mimic: ['7V', '3T'],\n      mudbomb: ['7L25', '7E', '6L26', '6E', '5L26', '5E', '4L29', '4E'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L12', '8L12', '7L10', '7V', '6L12', '5L12', '4T', '4L15', '3T', '3L25'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rage: ['7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      sandstorm: ['9M', '9L28', '8M', '8L28', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['9L24', '8L24', '8V', '7L35', '7V', '6L37', '5L37', '4L34', '3L33'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '5D', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L20', '8L20', '8V', '7L22', '6L23', '5L23', '4T', '4L23'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '8M', '7E', '6E', '5T', '5E', '4E', '3E'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'diglettalola',\n    {\n      aerialace: ['7M'],\n      agility: ['9M', '8M', '8V'],\n      allyswitch: ['8M'],\n      ancientpower: ['9E', '8E', '7E'],\n      assurance: ['8M'],\n      astonish: ['9L8', '8L8', '7L7', '7S0'],\n      attract: ['8M', '7M'],\n      beatup: ['8M', '7E'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '9L16', '8M', '8L16', '7M', '7L18'],\n      charm: ['9M'],\n      confide: ['7M'],\n      dig: ['9M', '9L32', '8M', '8L32', '8V', '7L31'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '9L36', '8M', '8L36', '7T', '7L28'],\n      earthquake: ['9M', '9L40', '8M', '8L40', '8V', '7M', '7L39'],\n      echoedvoice: ['7M'],\n      endure: ['9M', '8M', '7E'],\n      facade: ['9M', '8M', '8V', '7M'],\n      feintattack: ['7E'],\n      finalgambit: ['9E', '8E', '7E'],\n      fissure: ['9L44', '8L44', '8V', '7L43'],\n      flashcannon: ['9M', '8M', '8V', '7M'],\n      foulplay: ['9M'],\n      frustration: ['7M'],\n      furyswipes: ['8V'],\n      growl: ['9L4', '8L4', '8V', '7L4', '7S0'],\n      headbutt: ['9E', '8E', '8V', '7E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      honeclaws: ['9E', '8E'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '9L24', '8M', '8L24', '7T', '7L35'],\n      magnitude: ['7L14'],\n      memento: ['9E', '8E', '7E'],\n      metalclaw: ['9M', '9L1', '8L1', '7L1', '7S0'],\n      metalsound: ['9M', '9E', '8E', '7E'],\n      mudbomb: ['7L25'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L12', '8L12', '7L10', '7S0'],\n      protect: ['9M', '8M', '8V', '7M'],\n      pursuit: ['7E'],\n      rest: ['9M', '8M', '8V', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M', '7E'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '8M', '8V', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      sandattack: ['9L1', '8L1', '8V', '7L1'],\n      sandstorm: ['9M', '9L28', '8M', '8L28', '7M'],\n      sandtomb: ['9M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['8V'],\n      screech: ['8M'],\n      shadowclaw: ['9M', '8M', '7M'],\n      slash: ['8V'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '8V', '7M'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '8V', '7T'],\n      steelbeam: ['9M', '8T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      suckerpunch: ['9L20', '8L20', '8V', '7L22'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      thrash: ['9E', '8E', '7E'],\n      toxic: ['8V', '7M'],\n      uproar: ['8M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'dugtrio',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M', '8V'],\n      allyswitch: ['8M'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1', '7L7', '6L7', '5L7', '4L7'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['8M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bulldoze: ['9M', '9L16', '8M', '8L16', '7M', '7L18', '6M', '6L18', '5M', '5L18'],\n      captivate: ['4M'],\n      charm: ['9M', '3S0'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dig: ['9M', '9L36', '8M', '8L36', '8V', '7L35', '7V', '6M', '6L40', '5M', '5L40', '4M', '4L18', '3M', '3L17'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '9L42', '8M', '8L42', '7T', '7L30', '6T', '6L33', '5T', '5L33', '4T', '4L28'],\n      earthquake: ['9M', '9L48', '8M', '8L48', '8V', '7M', '7L47', '7V', '6M', '6L50', '5M', '5L50', '4M', '4L45', '3M', '3L51', '3S0'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['9L54', '8L54', '8V', '7L53', '7V', '6L57', '5L57', '4L50', '3L64'],\n      foulplay: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['8V', '3L21'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      magnitude: ['7L14', '7V', '6L15', '5L15', '4L12', '3L9'],\n      mimic: ['7V', '3T'],\n      mudbomb: ['7L25', '6L28', '5L28', '4L33'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L12', '8L12', '7L10', '7V', '6L12', '5L12', '4T', '4L15', '3T', '3L25'],\n      naturalgift: ['4M'],\n      nightslash: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '8M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rototiller: ['7L1', '6L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      sandstorm: ['9M', '9L30', '8M', '8L30', '7M', '6M', '5M', '4M', '3S0'],\n      sandtomb: ['9M', '9L0', '8M', '8L0', '7L1', '6L26', '5L26', '4L26', '3L26'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['8M', '8V'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['9L24', '8L24', '8V', '7L41', '7V', '6L45', '5L45', '4L40', '3L38'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L20', '8L20', '8V', '7L22', '6L23', '5L23', '4T', '4L23'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['9L1', '8M', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      uproar: ['9M', '8M', '5T'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'dugtrioalola',\n    {\n      aerialace: ['7M'],\n      agility: ['9M', '8M', '8V'],\n      allyswitch: ['8M'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1', '7L7'],\n      attract: ['8M', '7M'],\n      beatup: ['8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '9L16', '8M', '8L16', '7M', '7L18'],\n      charm: ['9M'],\n      confide: ['7M'],\n      curse: ['9M'],\n      dig: ['9M', '9L36', '8M', '8L36', '8V', '7L35'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '9L42', '8M', '8L42', '7T', '7L30'],\n      earthquake: ['9M', '9L48', '8M', '8L48', '8V', '7M', '7L47'],\n      echoedvoice: ['7M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '8V', '7M'],\n      fissure: ['9L54', '8L54', '8V', '7L53'],\n      flashcannon: ['9M', '8M', '8V', '7M'],\n      foulplay: ['9M'],\n      frustration: ['7M'],\n      furyswipes: ['8V'],\n      gigaimpact: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '8V', '7L1'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['9M', '8M', '8V', '7M'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '9L24', '8M', '8L24', '7T', '7L41'],\n      magnitude: ['7L14'],\n      metalclaw: ['9M', '9L1', '8L1', '7L1'],\n      metalsound: ['9M'],\n      mudbomb: ['7L25'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L12', '8L12', '7L10'],\n      nightslash: ['9L1', '8L1', '7L1'],\n      protect: ['9M', '8M', '8V', '7M'],\n      rest: ['9M', '8M', '8V', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '8M', '8V', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      rototiller: ['7L1'],\n      round: ['8M', '7M'],\n      sandattack: ['9L1', '8L1', '8V', '7L1'],\n      sandstorm: ['9M', '9L30', '8M', '8L30', '7M'],\n      sandtomb: ['9M', '9L0', '8M', '8L0', '7L1'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['8V'],\n      screech: ['8M', '8V'],\n      shadowclaw: ['9M', '8M', '7M'],\n      slash: ['8V'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '8V', '7M'],\n      sludgewave: ['9M', '8M', '7M'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '8V', '7T'],\n      steelbeam: ['9M', '8T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      suckerpunch: ['9L20', '8L20', '8V', '7L22'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      throatchop: ['9M'],\n      toxic: ['8V', '7M'],\n      triattack: ['9L1', '8M', '8L1', '8V', '7L1'],\n      uproar: ['9M', '8M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'meowth',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M'],\n      amnesia: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      assist: ['7E', '6E', '5E', '4E', '4S5', '3E'],\n      assurance: ['9L24', '8M', '8L24', '7L41', '6L41', '5L41', '4L41'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bite: ['9L16', '8L16', '8V', '7L6', '7V', '6L6', '6S7', '5L6', '4L6', '4S4', '3L10', '3S2', '3S3'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bubblebeam: ['7V'],\n      captivate: ['7L46', '6L46', '5L46', '4M', '4L46'],\n      charm: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['9E', '8E', '7T', '6T', '5T'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '8M', '8V', '7M', '6M', '5T', '4M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1', '8V', '7L9', '6L9', '6S7', '5L9', '4L9', '4S4', '4S5', '3L43'],\n      faketears: ['9M'],\n      falseswipe: ['9M'],\n      feint: ['9L4', '8L4', '8V', '7L50', '6L50', '5L54', '4L54'],\n      feintattack: ['7L22', '7V', '6L22', '5L22', '4L22', '3L25'],\n      flail: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      flash: ['6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '8M', '8V', '7T', '7E', '6T', '6E', '5T', '5E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['9L29', '8L29', '8V', '7L14', '7V', '6L14', '5L14', '5S6', '4L14', '4S4', '3L36'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1', '3S2'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      happyhour: ['6S7'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      hypnosis: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lashout: ['9M', '8T'],\n      lastresort: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      metalclaw: ['9M'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '9L40', '8M', '8L40', '8V', '7L38', '6L38', '5L38', '5S6', '4L38'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightslash: ['7L49', '6L49', '5L49', '4L49'],\n      odorsleuth: ['7E', '6E', '5E', '4E'],\n      painsplit: ['9M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      payday: ['9L12', '8M', '8L12', '8V', '7L30', '7V', '6L30', '5L30', '4L30', '4S5', '3L18', '3S3'],\n      petaldance: ['3S0'],\n      playrough: ['9M', '9L44', '8M', '8L44', '8V'],\n      powergem: ['9M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      punishment: ['7E', '6E', '5E', '4E'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scratch: ['9L8', '8L8', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '4S5', '3L1', '3S0', '3S1', '3S2'],\n      screech: ['9L32', '8M', '8L32', '8V', '7L17', '7V', '6L17', '6S7', '5L17', '4L17', '4S4', '3L31'],\n      secretpower: ['6M', '5D', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sing: ['5S6', '3S3'],\n      skullbash: ['7V'],\n      slash: ['9L36', '8L36', '8V', '7L33', '7V', '6L33', '5L33', '4L33', '3L40', '3S3'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M'],\n      snatch: ['7T', '7E', '6T', '6E', '5T', '5E', '5S6', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '9E', '8E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T', '3L45'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwhip: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '9L20', '8M', '8L20', '8V', '7M', '7L25', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'meowthalola',\n    {\n      aerialace: ['9M', '7M'],\n      agility: ['9M'],\n      amnesia: ['9M', '8M', '7E'],\n      assist: ['7E'],\n      assurance: ['9L24', '8M', '8L24', '7L41'],\n      attract: ['8M', '7M'],\n      bite: ['9L16', '8L16', '8V', '7L6'],\n      bodyslam: ['9M', '8M'],\n      captivate: ['7L46'],\n      charm: ['9M', '8M', '7E'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      covet: ['9E', '8E', '7T', '7E'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M', '8V', '7M', '7L55'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      dreameater: ['8V', '7M'],\n      echoedvoice: ['7M'],\n      embargo: ['7M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '8V', '7M'],\n      fakeout: ['9L1', '8L1', '8V', '7L9'],\n      faketears: ['9M'],\n      feint: ['9L4', '8L4', '8V', '7L50'],\n      feintattack: ['7L22'],\n      flail: ['9E', '8E', '7E'],\n      flatter: ['9E', '8E', '7E'],\n      foulplay: ['9M', '8M', '8V', '7T', '7E'],\n      frustration: ['7M'],\n      furyswipes: ['9L29', '8L29', '8V', '7L14'],\n      growl: ['9L1', '8L1', '8V', '7L1'],\n      gunkshot: ['9M', '8M', '7T'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hypervoice: ['9M', '8M', '7T'],\n      hypnosis: ['9E', '8E', '7E'],\n      icywind: ['9M', '8M', '7T'],\n      irontail: ['8M', '8V', '7T'],\n      knockoff: ['9M', '7T'],\n      lashout: ['9M', '8T'],\n      lastresort: ['7T'],\n      metalclaw: ['9M'],\n      nastyplot: ['9M', '9L40', '8M', '8L40', '8V', '7L38'],\n      nightslash: ['9L36', '8L36', '7L49'],\n      partingshot: ['9E', '8E', '7E'],\n      payback: ['8M', '7M'],\n      payday: ['9L12', '8M', '8L12', '8V', '7L30'],\n      playrough: ['9M', '9L44', '8M', '8L44', '8V'],\n      powergem: ['9M'],\n      protect: ['9M', '8M', '8V', '7M'],\n      psychup: ['9M', '7M'],\n      punishment: ['7E'],\n      quash: ['7M'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '8V', '7M'],\n      retaliate: ['8M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      scratch: ['9L8', '8L8', '8V', '7L1'],\n      screech: ['9L32', '8M', '8L32', '8V', '7L17'],\n      seedbomb: ['9M', '8M', '7T'],\n      shadowball: ['9M', '8M', '8V', '7M'],\n      shadowclaw: ['9M', '8M', '7M'],\n      shockwave: ['7T'],\n      slash: ['8V', '7L33'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snarl: ['9M'],\n      snatch: ['7T', '7E'],\n      snore: ['8M', '7T'],\n      spite: ['9M', '9E', '8E', '7T', '7E'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20', '8M', '8L20', '8V', '7M', '7L25'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunder: ['9M', '8M', '8V', '7M'],\n      thunderbolt: ['9M', '8M', '8V', '7M'],\n      thunderwave: ['9M'],\n      torment: ['7M'],\n      toxic: ['8V', '7M'],\n      trailblaze: ['9M'],\n      uproar: ['8M', '7T'],\n      uturn: ['9M', '8M', '8V', '7M'],\n      waterpulse: ['7T'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'meowthgalar',\n    {\n      aerialace: ['9M'],\n      amnesia: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M'],\n      charm: ['9M'],\n      covet: ['9E', '8E'],\n      crunch: ['9M', '8M'],\n      curse: ['9M', '9E', '8E'],\n      darkpulse: ['9M', '8M'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M', '9E', '8E'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fakeout: ['9L1', '8L1', '8S0'],\n      faketears: ['9M'],\n      falseswipe: ['9M'],\n      flail: ['9E', '8E'],\n      flashcannon: ['9M'],\n      fling: ['9M'],\n      foulplay: ['9M', '8M'],\n      furyswipes: ['9L29', '8L29'],\n      growl: ['9L1', '8L1', '8S0'],\n      gunkshot: ['9M', '8M'],\n      gyroball: ['9M', '8M'],\n      helpinghand: ['9M'],\n      honeclaws: ['9L4', '8L4', '8S0'],\n      hypervoice: ['9M', '8M'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M'],\n      irontail: ['8M'],\n      knockoff: ['9M'],\n      lashout: ['9M', '8T'],\n      metalclaw: ['9M', '9L16', '8L16'],\n      metalsound: ['9M', '9L40', '8L40'],\n      metronome: ['9M'],\n      nastyplot: ['9M', '8M'],\n      nightslash: ['9E', '8E'],\n      payback: ['8M'],\n      payday: ['9L12', '8M', '8L12', '8S0'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      round: ['8M'],\n      scratch: ['9L8', '8L8'],\n      screech: ['9L32', '8M', '8L32'],\n      seedbomb: ['9M', '8M'],\n      shadowball: ['9M', '8M'],\n      shadowclaw: ['9M', '8M'],\n      slash: ['9L36', '8L36'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M', '9E', '8E'],\n      stealthrock: ['9M'],\n      steelbeam: ['9M', '8T'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      swagger: ['9L24', '8L24'],\n      swordsdance: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20', '8M', '8L20'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thrash: ['9L44', '8L44'],\n      throatchop: ['9M', '8M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      trailblaze: ['9M'],\n      uproar: ['8M'],\n      uturn: ['9M', '8M'],\n      workup: ['8M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'persian',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M'],\n      amnesia: ['9M', '8M', '8V'],\n      assurance: ['9L24', '8M', '8L24', '7L49', '6L49', '5L49', '4L49'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bite: ['9L16', '8L16', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bubblebeam: ['7V'],\n      captivate: ['7L56', '6L56', '5L56', '4M', '4L56'],\n      charm: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '8M', '8V', '7M', '6M', '5T', '4M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1', '8V', '7L1', '6L1', '5L1', '4L1', '3L55'],\n      faketears: ['9M'],\n      falseswipe: ['9M'],\n      feint: ['9L1', '8L1', '8V', '7L65', '6L65', '5L68', '4L68'],\n      feintattack: ['7L22', '7V', '6L22', '5L22', '4L22', '3L25'],\n      flash: ['6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['9L31', '8L31', '8V', '7L14', '7V', '6L14', '5L14', '4L14', '3L42'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      hypnosis: ['8V'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lashout: ['9M', '8T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      metalclaw: ['9M'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '9L48', '8M', '8L48', '8V', '7L44', '6L44', '5L44', '4L44'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightslash: ['7L61', '6L61', '5L61', '4L61'],\n      painsplit: ['9M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      payday: ['9L12', '8M', '8L12', '8V', '7V', '3L18'],\n      playrough: ['9M', '9L54', '8M', '8L54', '8V', '7L1', '6L1'],\n      powergem: ['9M', '9L0', '8M', '8L0', '7L32', '6L32', '5L32', '4L32'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['9L36', '8M', '8L36', '8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L34'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skittersmack: ['9M', '8T'],\n      skullbash: ['7V'],\n      slash: ['9L42', '8L42', '8V', '7L37', '7V', '6L37', '5L37', '4L37', '3L49'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T', '3L61'],\n      swift: ['9M', '8M', '8V', '7L1', '7V', '6L28', '5L28', '4T', '3T'],\n      switcheroo: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '9L20', '8M', '8L20', '8V', '7M', '7L25', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'persianalola',\n    {\n      aerialace: ['9M', '7M'],\n      agility: ['9M'],\n      amnesia: ['9M', '8M', '8V'],\n      assurance: ['9L24', '8M', '8L24', '7L49'],\n      attract: ['8M', '7M'],\n      beatup: ['8M'],\n      bite: ['9L16', '8L16', '8V', '7L1'],\n      bodyslam: ['9M', '8M'],\n      burningjealousy: ['9M', '8T'],\n      captivate: ['7L56'],\n      charm: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      covet: ['7T'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M', '8V', '7M', '7L69'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      dreameater: ['8V', '7M'],\n      echoedvoice: ['7M'],\n      embargo: ['7M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '8V', '7M'],\n      fakeout: ['9L1', '8L1', '8V', '7L1'],\n      faketears: ['9M', '8M'],\n      feint: ['9L1', '8L1', '8V', '7L65'],\n      feintattack: ['7L22'],\n      foulplay: ['9M', '8M', '8V', '7T'],\n      frustration: ['7M'],\n      furyswipes: ['9L31', '8L31', '8V', '7L14'],\n      gigaimpact: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '8V', '7L1'],\n      gunkshot: ['9M', '8M', '7T'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '8V', '7M'],\n      hypervoice: ['9M', '8M', '7T'],\n      hypnosis: ['8V'],\n      icywind: ['9M', '8M', '7T'],\n      irontail: ['8M', '8V', '7T'],\n      knockoff: ['9M', '7T'],\n      lashout: ['9M', '8T'],\n      lastresort: ['7T'],\n      metalclaw: ['9M'],\n      nastyplot: ['9M', '9L48', '8M', '8L48', '8V', '7L44'],\n      nightslash: ['9L42', '8L42', '7L61'],\n      payback: ['8M', '7M'],\n      payday: ['9L12', '8M', '8L12', '8V'],\n      playrough: ['9M', '9L54', '8M', '8L54', '8V', '7L1'],\n      powergem: ['9M', '9L0', '8M', '8L0', '7L32'],\n      protect: ['9M', '8M', '8V', '7M'],\n      psychup: ['9M', '7M'],\n      quash: ['9L1', '8L1', '7M', '7L1'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '8V', '7M'],\n      retaliate: ['8M'],\n      return: ['7M'],\n      roar: ['9M', '7M'],\n      round: ['8M', '7M'],\n      scratch: ['9L1', '8L1', '8V', '7L1'],\n      screech: ['9L36', '8M', '8L36', '8V', '7L17'],\n      seedbomb: ['9M', '8M', '7T'],\n      shadowball: ['9M', '8M', '8V', '7M'],\n      shadowclaw: ['9M', '8M', '7M'],\n      shockwave: ['7T'],\n      skittersmack: ['9M', '8T'],\n      slash: ['8V', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smackdown: ['9M'],\n      snarl: ['9M', '8M', '7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      spite: ['9M', '7T'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M', '8V', '7L1'],\n      switcheroo: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20', '8M', '8L20', '8V', '7M', '7L25'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunder: ['9M', '8M', '8V', '7M'],\n      thunderbolt: ['9M', '8M', '8V', '7M'],\n      thunderwave: ['9M'],\n      torment: ['7M'],\n      toxic: ['8V', '7M'],\n      trailblaze: ['9M'],\n      uproar: ['8M', '7T'],\n      uturn: ['9M', '8M', '8V', '7M'],\n      waterpulse: ['7T'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'perrserker',\n    {\n      aerialace: ['9M'],\n      amnesia: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '8M'],\n      crunch: ['9M', '8M'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fakeout: ['9L1', '8L1'],\n      faketears: ['9M'],\n      falseswipe: ['9M'],\n      flashcannon: ['9M'],\n      fling: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      furyswipes: ['9L31', '8L31'],\n      gigaimpact: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      gunkshot: ['9M', '8M'],\n      gyroball: ['9M', '8M'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M'],\n      honeclaws: ['9L1', '8L1'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      irondefense: ['9M', '9L1', '8M', '8L1'],\n      ironhead: ['9M', '9L0', '8M', '8L0'],\n      irontail: ['8M'],\n      knockoff: ['9M'],\n      lashout: ['9M', '8T'],\n      metalburst: ['9L1', '8L1'],\n      metalclaw: ['9M', '9L16', '8L16'],\n      metalsound: ['9M', '9L48', '8L48'],\n      metronome: ['9M'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M'],\n      payday: ['9L12', '8M', '8L12'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      round: ['8M'],\n      scratch: ['9L1', '8L1'],\n      screech: ['9L36', '8M', '8L36'],\n      seedbomb: ['9M', '8M'],\n      shadowball: ['9M', '8M'],\n      shadowclaw: ['9M', '8M'],\n      slash: ['9L42', '8L42'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M'],\n      stealthrock: ['9M'],\n      steelbeam: ['9M', '8T'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      swagger: ['9L24', '8L24'],\n      swordsdance: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20', '8M', '8L20'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thrash: ['9L54', '8L54'],\n      throatchop: ['9M', '8M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      trailblaze: ['9M'],\n      uproar: ['8M'],\n      uturn: ['9M', '8M'],\n      workup: ['8M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'psyduck',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      amnesia: ['9M', '9L34', '8M', '8L34', '8V', '7L37', '6L43', '5L43', '4L44'],\n      aquatail: ['9L24', '8L24', '7T', '7L28', '6T', '6L29', '5T', '5L32', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '5D', '4M'],\n      bubblebeam: ['7V'],\n      calmmind: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      clearsmog: ['9E', '8E', '7E', '6E'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      confusion: ['9L6', '8L6', '8V', '7L10', '7V', '6L11', '5L15', '4L18', '3L16', '3S0'],\n      counter: ['7V', '3T'],\n      crosschop: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      curse: ['7V'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      disable: ['9L15', '8L15', '8V', '7L19', '7V', '6L11', '5L11', '4L14', '3L10', '3S0'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      encore: ['9M', '8M', '7E', '6E', '5E', '5D', '4E'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['9L9', '8L9', '8V', '7L13', '7V', '6L15', '5L22', '4L27', '3L40'],\n      futuresight: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '8M', '8L36', '8V', '7L40', '7V', '6L46', '5L46', '4L48', '3L50'],\n      hypnosis: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      lightscreen: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4E', '3E'],\n      liquidation: ['9M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M'],\n      mimic: ['7V', '3T'],\n      mudbomb: ['7E', '6E', '5E', '4E'],\n      muddywater: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['3S1'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      payday: ['8M', '8V', '7V'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9E', '8E', '8V', '7E', '7V', '6E', '5E', '4E', '3E'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3E'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '9L30', '8L30', '7M', '7L34', '7V', '6M', '6L39', '5M', '5L39', '4M', '4L35', '3T', '3L31'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      refresh: ['7E', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      screech: ['9L21', '8M', '8L21', '8V', '7L22', '7V', '6L25', '5L25', '4L31', '3L23', '3S0'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      simplebeam: ['9E', '8E', '7E', '6E'],\n      skillswap: ['9M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      soak: ['9L27', '8L27', '7L31', '6L36', '5L35'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      synchronoise: ['7E', '6E', '5E'],\n      tailwhip: ['9L1', '8L1', '8V', '7L4', '7V', '6L4', '5L4', '4L5', '3L5', '3S0', '3S1'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      vacuumwave: ['9M'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L3', '8L3', '8V', '7L7', '7V', '6L8', '5L8', '4L9'],\n      waterpulse: ['9M', '9L12', '8L12', '7T', '7L16', '6T', '6L18', '5L18', '4M', '4L22', '3M'],\n      watersport: ['7L1', '6L1', '5L1', '5D', '4L1', '3L1', '3S1'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      wonderroom: ['9L39', '8M', '8L39', '7T', '7L43', '6T', '6L50', '5T', '5L50'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      yawn: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      zenheadbutt: ['9M', '9L18', '8M', '8L18', '7T', '7L25', '6T', '6L29', '5T', '5L29', '4T', '4L40']\n    }\n  ],\n  [\n    'golduck',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      amnesia: ['9M', '9L36', '8M', '8L36', '8V', '7L41', '6L49', '5L49', '4L50'],\n      aquajet: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      aquatail: ['9L24', '8L24', '7T', '7L28', '6T', '6L32', '5T', '5L32', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M', '3S0'],\n      brine: ['8M', '4M'],\n      bubblebeam: ['7V'],\n      calmmind: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['3S0'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1', '8V', '7L10', '7V', '6L11', '5L15', '4L18', '3L16'],\n      counter: ['7V', '3T'],\n      curse: ['7V'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      disable: ['9L15', '8L15', '8V', '7L19', '7V', '6L11', '5L11', '4L14', '3L1'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      encore: ['9M', '8M', '8V', '7S1'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M', '8T'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['9L9', '8L9', '8V', '7L13', '7V', '6L15', '5L22', '4L27', '3L44'],\n      futuresight: ['9M', '8M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '9L40', '8M', '8L40', '8V', '7L46', '7V', '7S1', '6L54', '5L54', '4L56', '3L58'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M'],\n      liquidation: ['9M', '8M', '7T'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      mefirst: ['7L1'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M'],\n      mimic: ['7V', '3T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      payday: ['8M', '8V', '7V'],\n      powergem: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '7S1', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '8V'],\n      psychic: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '9L30', '8L30', '7M', '7L36', '7V', '6M', '6L43', '5M', '5L43', '4M', '4L37', '3T', '3L31', '3S0'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '7S1', '6M', '5M'],\n      scratch: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['9L21', '8M', '8L21', '8V', '7L22', '7V', '6L25', '5L25', '4L31', '3L23'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      soak: ['9L27', '8L27', '7L31', '6L38', '5L37'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      vacuumwave: ['9M'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      watergun: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1'],\n      waterpulse: ['9M', '9L12', '8L12', '7T', '7L16', '6T', '6L18', '5L18', '4M', '4L22', '3M'],\n      watersport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      wonderroom: ['9L45', '8M', '8L45', '7T', '7L51', '6T', '6L60', '5T', '5L60'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      yawn: ['8V'],\n      zenheadbutt: ['9M', '9L18', '8M', '8L18', '7T', '7L25', '6T', '6L25', '5T', '5L29', '4T', '4L44']\n    }\n  ],\n  [\n    'mankey',\n    {\n      acrobatics: ['9M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      assurance: ['9L26', '7L26', '6L25', '5L25', '4L25'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      bodyslam: ['9M', '7V', '3T'],\n      brickbreak: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L33', '7L36', '7E', '6L49', '6E', '5L49', '5E', '4L49', '4E'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      covet: ['9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4L1'],\n      crosschop: ['9L22', '7L22', '7V', '6L37', '5L37', '4L37', '3L31'],\n      curse: ['9M', '9E', '7V'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dualchop: ['7T', '6T', '5T'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      encore: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      finalgambit: ['9L48', '7L50', '6L53', '5L53'],\n      firepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L21'],\n      focuspunch: ['9M', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['9L5', '8V', '7L5', '7V', '6L9', '5L9', '4L9', '3L16'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      icepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      karatechop: ['8V', '7L8', '7V', '6L13', '5L13', '4L13', '3L11'],\n      lashout: ['9M'],\n      leer: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M', '9L8', '8V', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '5D', '4T', '4L1', '3L6'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      meditate: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      megakick: ['7V', '3T'],\n      megapunch: ['7V', '3T'],\n      metronome: ['9M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '7E', '6E'],\n      outrage: ['9M', '9L44', '8V', '7T', '7L47', '6T', '5T', '4T'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      payday: ['8V', '7V'],\n      poisonjab: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      powertrip: ['7E'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7V', '3T'],\n      punishment: ['7L29', '6L45', '5L45', '4L45'],\n      pursuit: ['7L12'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['7E', '6E', '5E', '4E', '3E'],\n      reversal: ['9M', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      scratch: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['9L36', '8V', '7L40', '7V', '6L21', '5L21', '4L21', '3L41'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['9L12', '8V', '7L15', '7V', '6L17', '5L17', '4L17', '3T', '3L26'],\n      shadowclaw: ['9M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      smellingsalts: ['7E', '6E', '5E', '4E', '3E'],\n      snore: ['7T', '7V', '6T', '3T'],\n      spite: ['9M', '9E', '7T', '6T', '5T', '4T'],\n      stompingtantrum: ['9M', '9L40', '7T', '7L43'],\n      stoneedge: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['9L17', '7M', '7L19', '7V', '6M', '6L33', '5M', '5L33', '4M', '4L33', '3T', '3L36'],\n      swift: ['9M', '7V', '4T', '3T'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['9L29', '8V', '7L33', '7V', '6L41', '5L41', '4L41', '3L46'],\n      throatchop: ['9M'],\n      thunder: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8V', '7T', '7V', '6T', '5T', '5D', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      vacuumwave: ['4T'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'primeape',\n    {\n      acrobatics: ['9M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      assurance: ['9L26', '7L26', '6L25', '5L25', '4L25'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '7V', '3T'],\n      brickbreak: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L39', '7L39', '6L59', '5L59', '4L59'],\n      confide: ['7M', '6M'],\n      counter: ['8V', '7V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      crosschop: ['9L22', '7L22', '7V', '6L41', '5L41', '4L41', '3L35', '3S0'],\n      curse: ['9M', '7V'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dualchop: ['7T', '6T', '5T'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      encore: ['9M', '8V'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      finalgambit: ['9L57', '7L1', '6L1', '5L63'],\n      firepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fling: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L21', '3S0'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['9L5', '8V', '7L5', '7V', '6L9', '5L9', '4L9', '3L16'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8V', '7T', '6T', '5T', '4T', '3S0'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      karatechop: ['8V', '7L8', '7V', '6L13', '5L13', '4L13', '3L11'],\n      lashout: ['9M'],\n      leer: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M', '9L8', '8V', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      megakick: ['7V', '3T'],\n      megapunch: ['7V', '3T'],\n      metronome: ['9M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '9L53', '8V', '7T', '7L53', '6T', '5T', '4T'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      payday: ['8V', '7V'],\n      poisonjab: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7V', '3T'],\n      punishment: ['7L30', '6L53', '5L53', '4L53'],\n      pursuit: ['7L12'],\n      rage: ['8V', '7L1', '7V', '6L28', '5L28', '4L28', '3L1'],\n      ragefist: ['9L35'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '3S0'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      scratch: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['9L44', '8V', '7L44', '7V', '6L21', '5L21', '4L21', '3L53'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['9L15', '8V', '7L15', '7V', '6L17', '5L17', '4L17', '3T', '3L26'],\n      shadowclaw: ['9M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '7V', '6T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M', '9L48', '7T', '7L48'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['9L17', '7M', '7L19', '7V', '6M', '6L35', '5M', '5L35', '4M', '4L35', '3T', '3L44'],\n      swift: ['9M', '7V', '4T', '3T'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['9L30', '8V', '7L35', '7V', '6L47', '5L47', '4L47', '3L62'],\n      throatchop: ['9M', '7T'],\n      thunder: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      vacuumwave: ['9M', '4T'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'annihilape',\n    {\n      acrobatics: ['9M'],\n      assurance: ['9L26'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulkup: ['9M'],\n      bulldoze: ['9M'],\n      closecombat: ['9M', '9L39'],\n      coaching: ['9M'],\n      counter: ['9L1'],\n      crosschop: ['9L22'],\n      curse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M'],\n      earthquake: ['9M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      finalgambit: ['9L57'],\n      firepunch: ['9M'],\n      fling: ['9M', '9L1'],\n      focusblast: ['9M'],\n      focusenergy: ['9L1'],\n      focuspunch: ['9M'],\n      furyswipes: ['9L5'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      icepunch: ['9M'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      lowkick: ['9M', '9L8'],\n      lowsweep: ['9M'],\n      metronome: ['9M'],\n      nightshade: ['9M'],\n      outrage: ['9M', '9L53'],\n      overheat: ['9M'],\n      phantomforce: ['9M'],\n      poisonjab: ['9M'],\n      protect: ['9M'],\n      ragefist: ['9L35'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      scaryface: ['9M'],\n      scratch: ['9L1'],\n      screech: ['9L44'],\n      seedbomb: ['9M'],\n      seismictoss: ['9L12'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M'],\n      shadowpunch: ['9L0'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      spite: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M', '9L48'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swagger: ['9L17'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L30'],\n      throatchop: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderpunch: ['9M'],\n      uproar: ['9M'],\n      uturn: ['9M'],\n      vacuumwave: ['9M']\n    }\n  ],\n  [\n    'growlithe',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L20', '8M', '8L20', '8V', '7L30', '7V', '6L30', '5L30', '4L39', '3L43'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bite: ['9L8', '8L8', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S1', '3S2'],\n      bodyslam: ['9M', '8M', '7E', '7V', '6E', '5E', '5D', '4E', '3T', '3E'],\n      burnup: ['7E'],\n      captivate: ['4M'],\n      charm: ['9M', '3S2'],\n      closecombat: ['9M', '8M', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      covet: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      crunch: ['9M', '9L32', '8M', '8L32', '8V', '7L39', '7E', '7V', '6L39', '6E', '5L39', '5E', '4L42', '4E', '3E'],\n      curse: ['9M', '7V'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3T'],\n      doublekick: ['9E', '8E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['7V'],\n      dragonrage: ['7V'],\n      ember: ['9L1', '8L1', '8V', '7L6', '7V', '6L6', '5L6', '4L6', '3L7', '3S1'],\n      endure: ['9M', '8M', '7V', '5D', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L24', '8M', '8L24', '7L21', '6L21', '5L21', '4L28'],\n      firespin: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      flameburst: ['7L28', '6L28', '5L28'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L40', '8M', '8L40', '8V', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L34', '3M', '3L49', '3S2'],\n      flamewheel: ['9L12', '8L12', '7L17', '7V', '6L17', '5L17', '4L20', '3L31', '3S0'],\n      flareblitz: ['9M', '9L56', '8M', '8L56', '8V', '7L45', '7E', '6L45', '6E', '5L45', '5E', '4L48', '4E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      heatwave: ['9M', '8M', '8V', '7T', '7L41', '7E', '6T', '6L41', '6E', '5T', '5L41', '5E', '4T', '4L45', '4E', '3E'],\n      helpinghand: ['9M', '9L16', '8M', '8L16', '8V', '7T', '7L12', '6T', '6L12', '5T', '5L12', '4T', '4L17', '3L37'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      howl: ['9L4', '8L4', '7E', '6E', '5E', '4E', '3E'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      leer: ['9L1', '8L1', '8V', '7L8', '7V', '6L8', '5L8', '4L9', '3L13', '3S0'],\n      mimic: ['7V', '3T'],\n      morningsun: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L10', '6L10', '5L10', '4L14', '3L19', '3S0'],\n      outrage: ['9M', '8M', '8V', '7T', '7L43', '6T', '6L43', '5T', '5L43'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      playrough: ['9M', '9L48', '8M', '8L48', '8V'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M', '8M'],\n      rage: ['7V'],\n      ragingfury: ['9E'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['9L28', '8M', '8L28', '7L32', '6M', '6L32', '5M', '5L32'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '9L52', '8M', '8L52', '7L19', '6L19', '5L19', '4L25'],\n      roar: ['9M', '9L44', '8L44', '8V', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '5D', '4M', '4L1', '3M', '3L1', '3S1'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      takedown: ['9M', '9L36', '8L36', '8V', '7L23', '7V', '6L23', '5L23', '4L31', '3L25', '3S0', '3S2'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thrash: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      thunderfang: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'growlithehisui',\n    {\n      agility: ['9M'],\n      bite: ['9L8', '9S0'],\n      bodyslam: ['9M'],\n      closecombat: ['9M'],\n      covet: ['9E'],\n      crunch: ['9M', '9L32'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9E'],\n      doublekick: ['9E'],\n      ember: ['9L1', '9S0'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firefang: ['9M', '9L24'],\n      firespin: ['9M'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '9L40'],\n      flamewheel: ['9L12', '9S0'],\n      flareblitz: ['9M', '9L56'],\n      headsmash: ['9E'],\n      heatwave: ['9M'],\n      helpinghand: ['9M', '9L16'],\n      howl: ['9L4', '9S0'],\n      leer: ['9L1'],\n      morningsun: ['9E'],\n      outrage: ['9M'],\n      overheat: ['9M'],\n      powergem: ['9M'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      rest: ['9M'],\n      retaliate: ['9L28'],\n      reversal: ['9M', '9L52'],\n      roar: ['9M', '9L44'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '9L48'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      smartstrike: ['9M'],\n      stealthrock: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      takedown: ['9M', '9L36'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9E'],\n      thunderfang: ['9M'],\n      wildcharge: ['9M'],\n      willowisp: ['9M']\n    }\n  ],\n  [\n    'arcanine',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L1', '8M', '8L1'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bite: ['9L1', '8L1', '8V', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      burnup: ['8L1'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['9M', '9L1', '8M', '8L1', '4S0'],\n      curse: ['9M', '7V'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '8V', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['7V'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      dragonrage: ['7V'],\n      ember: ['9L1', '8L1', '8V', '7V', '3L1'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extremespeed: ['9L0', '9S2', '8L0', '7L34', '7V', '7S1', '6L34', '5L34', '4L39', '4S0', '3L49'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L5', '8M', '8L1', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flamewheel: ['9L1', '8L1', '7V'],\n      flareblitz: ['9M', '9L1', '9S2', '8M', '8L1', '7S1', '4S0'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['8V', '7V', '4T'],\n      heatcrash: ['9M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      howl: ['9L1', '8L1'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '8V', '7V'],\n      mimic: ['7V', '3T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      outrage: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      playrough: ['9M', '9L1', '8M', '8L1', '8V'],\n      protect: ['9M', '9S2', '8M', '8V', '7M', '7V', '7S1', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M', '8M'],\n      rage: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['9L1', '8M', '8L1', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '9L1', '8M', '8L1'],\n      roar: ['9M', '9L1', '8L1', '8V', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      rockclimb: ['4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8V'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      takedown: ['9M', '9L1', '8L1', '7V'],\n      teleport: ['8V', '7V'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '8M', '7L1', '6L1', '5L1', '4L1', '4S0'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '9S2', '8M', '8V', '7M', '7S1', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'arcaninehisui',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '9L1'],\n      bite: ['9L1'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      closecombat: ['9M'],\n      crunch: ['9M', '9L1'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      dragonpulse: ['9M'],\n      ember: ['9L1'],\n      endure: ['9M'],\n      extremespeed: ['9L0'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firefang: ['9M', '9L1'],\n      firespin: ['9M'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '9L5'],\n      flamewheel: ['9L1'],\n      flareblitz: ['9M', '9L1'],\n      gigaimpact: ['9M'],\n      heatcrash: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M', '9L1'],\n      howl: ['9L1'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      ironhead: ['9M'],\n      leer: ['9L1'],\n      outrage: ['9M'],\n      overheat: ['9M'],\n      powergem: ['9M'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      ragingfury: ['9L64'],\n      rest: ['9M'],\n      retaliate: ['9L1'],\n      reversal: ['9M', '9L1'],\n      roar: ['9M', '9L1'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '9L1'],\n      rockthrow: ['9L1'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      smartstrike: ['9M'],\n      snarl: ['9M'],\n      solarbeam: ['9M'],\n      stealthrock: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      takedown: ['9M', '9L1'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderfang: ['9M'],\n      wildcharge: ['9M'],\n      willowisp: ['9M']\n    }\n  ],\n  [\n    'poliwag',\n    {\n      amnesia: ['9M', '7V'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bellydrum: ['9L48', '8L48', '7L31', '7V', '6L31', '5L31', '4L31', '3L37'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9L30', '8M', '8L30', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3T', '3L31'],\n      bubble: ['8V', '7L11', '7V', '6L11', '5L5', '4L5', '3L1', '3S0'],\n      bubblebeam: ['9L18', '8L18', '8V', '7L25', '7E', '7V', '6L25', '6E', '5L25', '5E', '4L25', '4E', '3E'],\n      bulldoze: ['9M', '8M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '9L54', '8L54', '7V', '3T'],\n      doubleslap: ['8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L19'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '9L36', '8M', '8L36'],\n      encore: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      endeavor: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      focuspunch: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L42', '8M', '8L42', '8V', '7L38', '7V', '6L38', '5L38', '4L38', '3L43'],\n      hypnosis: ['9L1', '8L1', '8V', '7L8', '7V', '6L8', '5L8', '5D', '4L8', '3L7'],\n      iceball: ['7E', '6E', '5E', '4E', '3E'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '8V'],\n      mimic: ['7V', '3T'],\n      mindreader: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      mist: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      mudbomb: ['7L41', '6L41', '5L41', '4L41'],\n      muddywater: ['9M', '9E', '8M'],\n      mudshot: ['9M', '9L12', '8M', '8L12', '7L28', '7E', '6L28', '6E', '5L28', '5E', '4L28', '4E'],\n      mudslap: ['9M'],\n      naturalgift: ['4M'],\n      pound: ['9L6', '8L6', '8V'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '9L24', '8M', '8L24', '7M', '7L18', '7V', '6M', '6L18', '5M', '5L18', '4M', '4L18', '3M', '3L25'],\n      refresh: ['7E', '6E', '5E', '4E'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '5D', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      splash: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['3S0'],\n      swift: ['9M'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      wakeupslap: ['7L35', '6L35', '5L35', '4L35'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '8V', '7L5', '7V', '6L5', '5L11', '4L11', '3L13'],\n      waterpulse: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      watersport: ['7L1', '7E', '6L1', '6E', '5L1', '5E', '4L1', '4E', '3E'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '7V', '4M']\n    }\n  ],\n  [\n    'poliwhirl',\n    {\n      amnesia: ['9M', '7V'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bellydrum: ['9L56', '8L56', '7L37', '7V', '6L37', '5L37', '4L37', '3L43'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9L32', '8M', '8L32', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3T', '3L35'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubble: ['8V', '7L11', '7V', '6L11', '5L1', '4L1', '3L1'],\n      bubblebeam: ['9L18', '8L18', '8V', '7L27', '7V', '6L27', '5L27', '4L27'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '9L66', '8L66', '7V', '3T'],\n      doubleslap: ['8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L19'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '9L40', '8M', '8L40'],\n      earthquake: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['7V'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L48', '8M', '8L48', '8V', '7L48', '7V', '6L48', '5L48', '4L48', '3L51'],\n      hypnosis: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '8V'],\n      lowsweep: ['9M'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M', '8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudbomb: ['7L53', '6L53', '5L53', '4L53'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '9L1', '8M', '8L1', '7L32', '6L32', '5L32', '4L32'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      pound: ['9L1', '8L1', '8V'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '9L24', '8M', '8L24', '7M', '7L18', '7V', '6M', '6L18', '5M', '5L18', '4M', '4L18', '3M', '3L27'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      wakeupslap: ['7L43', '6L43', '5L43', '4L43'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L11', '4L11', '3L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      watersport: ['7L1', '6L1', '5L1', '4L1'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '7V', '4M']\n    }\n  ],\n  [\n    'poliwrath',\n    {\n      amnesia: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bellydrum: ['9L1', '8L1'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9L1', '8M', '8L1', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M', '3S0'],\n      bubble: ['8V'],\n      bubblebeam: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1'],\n      bulkup: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      circlethrow: ['9L1', '8L1', '7L1', '6L1', '5L53'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      curse: ['7V'],\n      darkestlariat: ['8M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '9L1', '8L1', '7V', '3T'],\n      doubleslap: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M'],\n      dualchop: ['7T'],\n      dynamicpunch: ['9L0', '8L1', '7L32', '7V', '6L32', '5L32', '4L43', '3T'],\n      earthpower: ['9M', '9L1', '8M', '8L1'],\n      earthquake: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['7V'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '8V'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T', '3S0'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      hydropump: ['9M', '9L1', '8M', '8L1', '3S0'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      knockoff: ['9M'],\n      liquidation: ['9M', '8M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M', '8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mindreader: ['8L1', '7L43', '7V', '6L43', '5L43', '4L53', '3L51'],\n      mist: ['8V'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '9L1', '8M', '8L1'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      pound: ['9L1', '8L1', '8V'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '9L1', '8M', '8L1', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '8M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['8L0', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '8V'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M', '7T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '4T'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '8V', '7V', '3L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'politoed',\n    {\n      amnesia: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bellydrum: ['9L1', '8L1'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9L1', '8M', '8L1', '3T'],\n      bounce: ['9L0', '8M', '8L0', '7T', '7L37', '6T', '6L37', '5T', '5L37', '4T', '4L37'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '9L1', '8L1', '3T'],\n      doubleslap: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '9L1', '8M', '8L1'],\n      earthquake: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L1', '8M', '8L1'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '9L1', '8M', '8L1', '7T', '7L48', '6T', '6L48', '5T', '5L48', '4L48'],\n      hypnosis: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '5S0', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '7V', '6T', '5T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      liquidation: ['9M', '8M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['9M', '8M', '3T'],\n      mimic: ['3T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '9L1', '8M', '8L1'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      perishsong: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      pound: ['9L1', '8L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '5S0', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M'],\n      raindance: ['9M', '9L1', '8M', '8L1', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M', '5S0'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['9L1', '8L1', '7M', '7L27', '7V', '6M', '6L27', '5M', '5L27', '4M', '4L27', '3T', '3L51'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['8M'],\n      waterfall: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7V', '3L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '7V', '4M']\n    }\n  ],\n  [\n    'abra',\n    {\n      allyswitch: ['8M', '7T', '7E', '6E', '5M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      calmmind: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['8E'],\n      counter: ['7V', '3T'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '8V', '7M', '6M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      endure: ['8M', '7V', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      foulplay: ['8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      gravity: ['7T', '6T', '5T', '5D', '4T'],\n      guardsplit: ['8E', '7E', '6E', '5E'],\n      guardswap: ['8M', '7E', '6E', '5E', '4E'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      irontail: ['8M', '8V', '7T', '6T', '5T', '4M', '3M'],\n      knockoff: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      lightscreen: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      magiccoat: ['8E', '7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      powerswap: ['8M'],\n      powertrick: ['7E', '6E', '5E', '4E'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicterrain: ['8M', '7E'],\n      psychoshift: ['7E', '6E'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      speedswap: ['8M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      thunderwave: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'kadabra',\n    {\n      allyswitch: ['8M', '8L15', '7T', '7L36', '6L24', '5M', '5L24'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      calmmind: ['8M', '8L50', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L0', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      counter: ['7V', '3T'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '8V', '7M', '6M'],\n      dig: ['8V', '7V'],\n      disable: ['8L1', '8V', '7L18', '7V', '6L18', '5L18', '4L18', '3L18'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['8M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flash: ['8V', '7V', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      foulplay: ['8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '8L45', '7L43', '7V', '6L43', '5L48', '4L42', '3L30'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      gravity: ['7T', '6T', '5T', '4T'],\n      guardswap: ['8M'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '8V', '7T', '6T', '5T', '4M', '3M'],\n      kinesis: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      miracleeye: ['7L23', '6L22', '5L22', '4L22'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['8V'],\n      powerswap: ['8M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L5', '8V', '7L21', '7V', '6L21', '5L28', '4L24', '3L21'],\n      psychic: ['8M', '8L35', '8V', '7M', '7L38', '7V', '6M', '6L38', '5M', '5L46', '4M', '4L40', '3M', '3L36'],\n      psychicterrain: ['8M'],\n      psychocut: ['8M', '8L20', '7L28', '6L28', '5L40', '4L34'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '8L30', '7M', '6M', '5M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['8L25', '8V', '7L31', '7V', '6L31', '5L36', '4L30', '3L25'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '8L10', '8V', '7M', '7L26', '7V', '6M', '6L26', '5M', '5L30', '4M', '4L28', '3M', '3L23'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['8L40', '7T', '7L41', '6T', '6L41', '5T', '5L42', '4T', '4L36', '3L33'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      speedswap: ['8M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '7L33', '6L33', '5M', '5L34'],\n      teleport: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['8M', '7T', '7L46', '6T', '6L46', '5T', '5L52', '4T', '4L46', '3L43'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'alakazam',\n    {\n      allyswitch: ['8M', '8L15', '7T', '7L36', '6L24', '5M', '5L24'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['8V'],\n      bide: ['7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      calmmind: ['8M', '8L50', '8V', '7M', '7L41', '6M', '6L41', '5M', '5L42', '4M', '4L36', '3M', '3L33', '3S0'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      counter: ['7V', '3T'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '8V', '7M', '6M'],\n      dig: ['8V', '7V'],\n      disable: ['8L1', '8V', '7L18', '7V', '6L18', '5L18', '4L18', '3L18'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['8M', '8V'],\n      endure: ['8M', '7V', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flash: ['8V', '7V', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      foulplay: ['8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '8L45', '7L43', '7V', '6L43', '5L48', '4L42', '3L30', '3S0'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      gravity: ['7T', '6T', '5T', '4T'],\n      guardswap: ['8M'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['8M'],\n      irontail: ['8M', '8V', '7T', '6T', '5T', '4M', '3M'],\n      kinesis: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lightscreen: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      miracleeye: ['7L23', '6L22', '5L22', '4L22'],\n      nastyplot: ['8M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['8V'],\n      powerswap: ['8M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L5', '8V', '7L21', '7V', '6L21', '5L28', '4L24', '3L21'],\n      psychic: ['8M', '8L35', '8V', '7M', '7L38', '7V', '6M', '6L38', '5M', '5L46', '4M', '4L40', '3M', '3L36', '3S0'],\n      psychicterrain: ['8M'],\n      psychocut: ['8M', '8L20', '7L28', '6L28', '5L40', '4L34'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '8L30', '7M', '6M', '5M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['8L25', '8V', '7L31', '7V', '6L31', '5L36', '4L30', '3L25'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '8L10', '8V', '7M', '7L26', '7V', '6M', '6L26', '5M', '5L30', '4M', '4L28', '3M', '3L23'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['8L40', '7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      speedswap: ['8M'],\n      storedpower: ['8M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '7L33', '6L33', '5M', '5L34'],\n      teleport: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['8M', '7T', '7L46', '6T', '6L46', '5T', '5L52', '4T', '4L46', '3L43', '3S0'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'machop',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['8V', '7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['8M', '8L36', '8V', '7M', '7L37', '6M', '6L37', '5M', '4M', '3M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      bulletpunch: ['8E', '7E', '6E', '5E', '5D', '4E'],\n      captivate: ['4M'],\n      closecombat: ['8M', '7E', '6E', '5E', '4E'],\n      coaching: ['8T'],\n      confide: ['7M', '6M'],\n      counter: ['8E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      crosschop: ['8L48', '7L39', '7V', '6L39', '5L43', '4L37', '3L40'],\n      curse: ['7V'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8L52', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualchop: ['8L32', '7T', '7L31', '6T', '6L31', '5T'],\n      dynamicpunch: ['8L44', '7L45', '7V', '6L45', '5L49', '4L46', '3T', '3L49'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M', '8L4', '8V', '7L3', '7V', '6L3', '5L7', '4L7', '3L7'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      foresight: ['7L9', '7V', '6L9', '5L19', '4L13', '3L22'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      heavyslam: ['8M', '7E', '6E', '5E'],\n      helpinghand: ['8M', '8V', '7T', '6T', '5T', '5D', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T'],\n      incinerate: ['6M', '5M'],\n      karatechop: ['8V', '7L7', '7V', '6L7', '5L10', '4L10', '3L13'],\n      knockoff: ['8L16', '7T', '7L21', '7E', '6T', '6L21', '6E', '5T', '5E'],\n      leer: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['8M', '8V', '7M', '7V', '6M', '5M', '4E', '3E'],\n      lowkick: ['8M', '8L1', '8V', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '5D', '4T', '4L1', '3L1'],\n      lowsweep: ['8M', '8L12', '7M', '7L13', '6M', '6L13', '5M', '5L13'],\n      meditate: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      powertrick: ['7E', '6E', '5E', '4E'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickguard: ['8E', '7E', '6E'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M', '8L8', '7L19', '6L19', '5L25', '4L22', '3L25'],\n      reversal: ['8M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollingkick: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M', '8L20', '7L43', '7V', '6L43', '5L46', '4L43', '3L43'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8L40', '8V', '7L15', '7V', '6L15', '5L22', '4L19', '3T', '3L19'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      smellingsalts: ['7E', '6E', '5E', '4E', '3E'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['8L29', '7V', '6M', '5M', '4M', '3M'],\n      submission: ['8E', '8V', '7L33', '7V', '6L33', '5L34', '4L31', '3L37'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T'],\n      tickle: ['8E', '7E', '6E', '5E'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      vacuumwave: ['4T'],\n      vitalthrow: ['8L24', '7L25', '7V', '6L25', '5L31', '4L25', '3L31'],\n      wakeupslap: ['7L27', '6L27', '5L37', '4L34'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'machoke',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['8V', '7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['8M', '8L42', '8V', '7M', '7L43', '6M', '6L43', '5M', '4M', '3M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['8M'],\n      coaching: ['8T'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      crosschop: ['8L60', '7L47', '7V', '6L44', '5L44', '4L40', '3L46'],\n      curse: ['7V'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8L66', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualchop: ['8L36', '7T', '7L33', '6T', '6L33', '5T'],\n      dynamicpunch: ['8L54', '7L57', '7V', '6L55', '5L55', '4L51', '3T', '3L59'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['8M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      foresight: ['7L9', '7V', '6L9', '5L19', '5S0', '4L13', '3L22'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      heavyslam: ['8M'],\n      helpinghand: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      karatechop: ['8V', '7L1', '7V', '6L1', '5L1', '4L10', '3L13'],\n      knockoff: ['8L16', '7T', '7L21', '6T', '6L21', '5T'],\n      leer: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['8M', '8V', '7M', '6M', '5M'],\n      lowkick: ['8M', '8L1', '8V', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      lowsweep: ['8M', '8L12', '7M', '7L13', '6M', '6L13', '5M', '5L13', '5S0'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M', '8L1', '7L19', '6L19', '5L25', '5S0', '4L22', '3L25'],\n      reversal: ['8M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M', '8L20', '7L53', '7V', '6L51', '5L51', '4L44', '3L51'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8L48', '8V', '7L15', '7V', '6L15', '5L22', '5S0', '4L19', '3T', '3L19'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['8L31', '7V', '6M', '5M', '4M', '3M'],\n      submission: ['8V', '7L37', '7V', '6L36', '5L36', '4L32', '3L41'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      vacuumwave: ['4T'],\n      vitalthrow: ['8L24', '7L25', '7V', '6L25', '5L32', '4L25', '3L33'],\n      wakeupslap: ['7L27', '6L27', '5L40', '4L36'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'machamp',\n    {\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['8V', '7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['8M', '8L42', '8V', '7M', '7L43', '7S3', '6M', '6L43', '5M', '4M', '3M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['8M'],\n      coaching: ['8T'],\n      confide: ['7M', '6M'],\n      counter: ['8V', '7V', '3T'],\n      crosschop: ['8L60', '7L47', '7V', '6L44', '5L44', '4L40', '3L46'],\n      crosspoison: ['8M'],\n      curse: ['7V'],\n      darkestlariat: ['8M'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '7V', '6M', '6S2', '5M', '4M', '3M'],\n      doubleedge: ['8L66', '7V', '7S3', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualchop: ['8L36', '7T', '7L33', '6T', '6L33', '5T'],\n      dynamicpunch: ['8L54', '7L57', '7V', '6L55', '6S1', '6S2', '5L55', '4L51', '3T', '3L59'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['8M', '8V'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M', '8L1', '8V', '7L1', '7V', '6L1', '6S2', '5L1', '4L1', '3L1'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      foresight: ['7L9', '7V', '6L9', '5L19', '4L13', '3L22', '3S0'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['8V', '7V', '4T'],\n      heavyslam: ['8M'],\n      helpinghand: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      karatechop: ['8V', '7L1', '7V', '6L1', '5L1', '4L10', '3L13'],\n      knockoff: ['8L16', '7T', '7L21', '6T', '6L21', '6S1', '5T'],\n      leer: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['8M', '8V', '7M', '6M', '5M'],\n      lowkick: ['8M', '8L1', '8V', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      lowsweep: ['8M', '8L12', '7M', '7L13', '6M', '6L13', '5M', '5L13'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickguard: ['7S3'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M', '8L1', '7L19', '6L19', '5L25', '4L22', '3L25', '3S0'],\n      reversal: ['8M'],\n      rockblast: ['8M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M', '8L20', '7L53', '7V', '6L51', '5L51', '4L44', '3L51'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8L48', '8V', '7L15', '7V', '6L15', '6S2', '5L22', '4L19', '3T', '3L19', '3S0'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '6S1', '5M', '4M'],\n      strength: ['8L31', '8V', '7L1', '7V', '7S3', '6M', '5M', '4M', '3M'],\n      submission: ['8V', '7L37', '7V', '6L36', '5L36', '4L32', '3L41'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['8M', '7T'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      vacuumwave: ['4T'],\n      vitalthrow: ['8L24', '7L25', '7V', '6L25', '5L32', '4L25', '3L33', '3S0'],\n      wakeupslap: ['7L27', '6L27', '5L40', '4L36'],\n      wideguard: ['8L1', '7L1', '6L1', '6S1', '5L1'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'bellsprout',\n    {\n      acid: ['9L23', '8V', '7L23', '7V', '6L23', '5L23', '4L23', '3L23'],\n      acidspray: ['9M', '7E', '6E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      belch: ['7E', '6E'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      bulletseed: ['9M', '7E', '6E', '5E', '4M', '3M'],\n      captivate: ['4M'],\n      clearsmog: ['9E', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['9M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['9L35', '7T', '7L35', '6T', '6L35', '5T', '5L35', '4T', '4L35'],\n      gigadrain: ['9M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L7', '8V', '7L7', '7V', '6L7', '5L7', '4L7', '3L6', '3S1'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      ingrain: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      knockoff: ['9M', '9L27', '7T', '7L27', '6T', '6L27', '5T', '5L27', '4T', '4L27'],\n      leafstorm: ['9M'],\n      leechlife: ['9M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      lunge: ['9M'],\n      magicalleaf: ['9M', '7E', '6E', '5E', '4E', '3E'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      naturepower: ['7M', '6M'],\n      poisonjab: ['9M', '9L41', '8V', '7M', '7L41'],\n      poisonpowder: ['9L15', '8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L17'],\n      pounce: ['9M'],\n      powerwhip: ['9L52', '7E', '6E', '5E'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      razorleaf: ['9L39', '8V', '7L39', '7V', '6L39', '5L39', '4L39', '3L37'],\n      reflect: ['9M', '8V', '7M', '7V', '6M', '5M', '4E', '3E'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      slam: ['9L47', '8V', '7L47', '7V', '6L41', '5L41', '4L41', '3L45'],\n      sleeppowder: ['9L13', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L15'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      strengthsap: ['9E', '7E'],\n      stunspore: ['9L17', '8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L19'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9E', '4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L29', '7L29', '7V', '6L29', '5L29', '4L29', '3L30'],\n      swordsdance: ['9M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      synthesis: ['9E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E'],\n      takedown: ['7V'],\n      teeterdance: ['3S0'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      tickle: ['9E', '7E', '6E', '5E', '4E'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      vinewhip: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S0', '3S1'],\n      weatherball: ['9M', '7E', '6E', '5E', '4E'],\n      worryseed: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      wrap: ['9L11', '8V', '7L11', '7V', '6L11', '5L11', '4L11', '3L11'],\n      wringout: ['7L50', '6L47', '5L47', '4L47']\n    }\n  ],\n  [\n    'weepinbell',\n    {\n      acid: ['9L24', '8V', '7L24', '7V', '6L23', '5L23', '4L23', '3L24'],\n      acidspray: ['9M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      bodyslam: ['9M'],\n      bugbite: ['9M', '5T'],\n      bulletseed: ['9M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['9L39', '7T', '7L39', '6T', '6L35', '5T', '5L35', '4T', '4L35'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      knockoff: ['9M', '9L29', '7T', '7L29', '6T', '6L27', '5T', '5L27', '4T', '4L27'],\n      leafstorm: ['9M'],\n      leechlife: ['9M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M', '3S0'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      morningsun: ['3S0'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      poisonjab: ['9M', '9L47', '8V', '7M', '7L47'],\n      poisonpowder: ['9L15', '8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L17'],\n      pounce: ['9M'],\n      powerwhip: ['9L58'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      razorleaf: ['9L44', '8V', '7L44', '7V', '6L39', '5L39', '4L39', '3L42'],\n      reflect: ['9M', '8V', '7M', '7V', '6M', '5M'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      slam: ['9L54', '8V', '7L54', '7V', '6L41', '5L41', '4L41', '3L54'],\n      sleeppowder: ['9L13', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L15'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      sludgewave: ['9M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      stunspore: ['9L17', '8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L19'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L32', '7L32', '7V', '6L29', '5L29', '4L29', '3L33', '3S0'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      vinewhip: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      weatherball: ['9M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      wrap: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      wringout: ['7L58', '6L47', '5L47', '4L47']\n    }\n  ],\n  [\n    'victreebel',\n    {\n      acid: ['8V', '7V'],\n      acidspray: ['9M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      bodyslam: ['9M', '7V', '3T'],\n      bugbite: ['9M', '5T'],\n      bulletseed: ['9M', '4M', '3M'],\n      captivate: ['4M'],\n      clearsmog: ['8V'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['9L1', '7T', '6T', '5T', '4T'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['8V'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      leafblade: ['9L44', '7L44', '6L47', '5L47', '4L47'],\n      leafstorm: ['9M', '9L0', '7L32', '6L47', '5L47', '4L47'],\n      leaftornado: ['7L1', '6L27', '5L27'],\n      leechlife: ['9M', '8V'],\n      lunge: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      poisonjab: ['9M', '8V', '7M'],\n      poisonpowder: ['7V'],\n      pounce: ['9M'],\n      powerwhip: ['9L1', '8V'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      razorleaf: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      reflect: ['9M', '8V', '7M', '7V', '6M', '5M'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      sleeppowder: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spitup: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      stockpile: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      stunspore: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['8V', '4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      sweetscent: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      swift: ['9M'],\n      swordsdance: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      vinewhip: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      weatherball: ['9M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      wrap: ['8V', '7V']\n    }\n  ],\n  [\n    'tentacool',\n    {\n      acid: ['9L4', '8L4', '8V', '7L10', '7V', '6L10', '5L12', '4L12', '3L19'],\n      acidarmor: ['9L32', '8L32'],\n      acidspray: ['9M', '7L22', '6L22', '5L26'],\n      acupressure: ['9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      aquaring: ['9E', '8E', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      barrier: ['8V', '7L28', '7V', '6L28', '5L29', '4L26', '3L36'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '7L34', '6L34', '4M'],\n      brutalswing: ['8M'],\n      bubble: ['7E', '6E', '5E'],\n      bubblebeam: ['9L24', '8L24', '8V', '7L25', '7V', '6L19', '5L19', '4L19', '3L25'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      constrict: ['8V', '7L7', '7V', '6L7', '5L8', '4L8', '3L12'],\n      crosspoison: ['8M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '5D', '4M', '3M'],\n      gunkshot: ['9M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V'],\n      hex: ['9M', '9L28', '8M', '8L28', '7L40', '6L40', '5L43'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L48', '8M', '8L48', '8V', '7L46', '7V', '6L46', '5L47', '4L40', '3L49'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      knockoff: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      liquidation: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      mirrorcoat: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      muddywater: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      mudshot: ['9M'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '9L36', '8M', '8L36', '8V', '7M', '7L31', '6M', '6L31', '5M', '5L36', '4M', '4L33'],\n      poisonsting: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rapidspin: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      screech: ['9L20', '8M', '8L20', '8V', '7L37', '7V', '6L37', '5L40', '4L36', '3L43'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '9L44', '8M', '8L44', '7M', '7L43', '6M', '6L43', '5M', '5L50'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      supersonic: ['9L12', '8L12', '8V', '7L4', '7V', '6L4', '5L5', '5D', '4L5', '3L6'],\n      surf: ['9M', '9L40', '8M', '8L40', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M'],\n      tickle: ['9E', '8E', '7E', '6E', '5E'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '8M', '7L13', '6L13', '5L15', '4L15'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      waterfall: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7V'],\n      waterpulse: ['9M', '9L16', '8L16', '7T', '7L16', '6T', '6L16', '5L33', '4M', '4L29', '3M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      wrap: ['9L8', '8L8', '8V', '7L19', '7V', '6L19', '5L22', '4L22', '3L30'],\n      wringout: ['7L49', '6L49', '5L54', '4L43']\n    }\n  ],\n  [\n    'tentacruel',\n    {\n      acid: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L12', '4L12', '3L19'],\n      acidarmor: ['9L34', '8L34'],\n      acidspray: ['9M', '7L22', '6L22', '5L26'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['8V', '7L28', '7V', '6L28', '5L29', '4L26', '3L38'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '7L36', '6L36', '4M'],\n      brutalswing: ['8M'],\n      bubblebeam: ['9L24', '8L24', '8V', '7L25', '7V', '6L19', '5L19', '4L19', '3L25'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      constrict: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      corrosivegas: ['8T'],\n      crosspoison: ['8M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '8V'],\n      headbutt: ['8V'],\n      hex: ['9M', '9L28', '8M', '8L28', '7L44', '6L44', '5L47'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L58', '8M', '8L58', '8V', '7L52', '7V', '6L52', '5L52', '4L49', '3L55'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      liquidation: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      mirrorcoat: ['8V'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '9L40', '8M', '8L40', '8V', '7M', '7L32', '6M', '6L32', '5M', '5L38', '4M', '4L36'],\n      poisonsting: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      reflecttype: ['9L1', '8L1', '7L1', '6L1'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['9L20', '8M', '8L20', '8V', '7L40', '7V', '6L40', '5L43', '4L42', '3L47'],\n      secretpower: ['6M', '4M', '3M'],\n      skittersmack: ['9M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '9L52', '8M', '8L52', '7M', '7L48', '6M', '6L48', '5M', '5L56'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      supersonic: ['9L12', '8L12', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      surf: ['9M', '9L46', '8M', '8L46', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '8M', '7L13', '6L13', '5L15', '4L15'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      waterfall: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7V'],\n      waterpulse: ['9M', '9L16', '8L16', '7T', '7L16', '6T', '6L16', '5L34', '4M', '4L29', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      wrap: ['9L1', '8L1', '8V', '7L19', '7V', '6L19', '5L22', '4L22', '3L30'],\n      wringout: ['7L1', '6L1', '5L61', '4L55']\n    }\n  ],\n  [\n    'geodude',\n    {\n      ancientpower: ['4T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      autotomize: ['7E', '6E', '5E'],\n      bide: ['8V', '7V'],\n      block: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      bodyslam: ['9M', '7V', '3T'],\n      brickbreak: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '9L12', '7M', '7L22', '6M', '6L22', '5M', '5L32'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      curse: ['9M', '9E', '7E', '7V', '6E', '5E', '4E'],\n      defensecurl: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3T', '3L1'],\n      dig: ['9M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L40', '8V', '7L40', '7V', '6L40', '5L46', '4L36', '3T', '3L46'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['9E', '7V', '3T'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L34', '8V', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L39', '4M', '4L29', '3M', '3L36'],\n      endure: ['9M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      explosion: ['9L36', '8V', '7M', '7L36', '7V', '6M', '6L36', '5M', '5L43', '4M', '4L32', '3T', '3L41'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flail: ['9E', '7E', '6E', '5E', '4E'],\n      flamethrower: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gyroball: ['9M', '7M', '6M', '5M', '4M'],\n      hammerarm: ['9E', '7E', '6E', '5E', '4E'],\n      harden: ['7V'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '7T', '6T', '5T'],\n      magnitude: ['7L12', '7V', '6L12', '5L15', '4L15', '3L16'],\n      megapunch: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      metronome: ['9M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      mudsport: ['7L4', '6L4', '5L4', '4L4', '3L6'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '9L30', '7L30', '6L22', '5L22', '4L25', '3L31'],\n      rockclimb: ['7E', '6E', '5E', '5D', '4M'],\n      rockpolish: ['9L6', '7M', '7L6', '6M', '6L6', '5M', '5L8', '4M', '4L8'],\n      rockslide: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L16', '8V', '7L16', '7V', '6L16', '5L11', '4L11', '3L11'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9L10', '7L10', '7V', '6L10', '5L18', '4T', '4L22', '3T', '3L26'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['8V'],\n      sandstorm: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      selfdestruct: ['9L24', '8V', '7L24', '7V', '6L24', '5L29', '4L18', '3T', '3L21'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '9L18', '7M', '7L18', '6M', '6L18', '5M', '5L25'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '9L28', '8V', '7T', '7L28', '6T', '6L28', '5T', '5L36', '5D', '4M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '9L42', '7M', '7L42', '6M', '6L42', '5M', '5L50', '4M', '4L39'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '8V', '7V'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8V', '7T', '6T', '5T', '4T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      wideguard: ['9E', '7E', '6E']\n    }\n  ],\n  [\n    'geodudealola',\n    {\n      attract: ['7M'],\n      autotomize: ['7E'],\n      bide: ['8V'],\n      block: ['9E', '7T', '7E'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8V', '7M'],\n      brutalswing: ['7M'],\n      bulldoze: ['9M', '7M'],\n      charge: ['9M', '9L4', '7L4'],\n      chargebeam: ['9M', '7M'],\n      confide: ['7M'],\n      counter: ['9E', '7E'],\n      curse: ['9M', '9E', '7E'],\n      defensecurl: ['9L1', '8V', '7L1'],\n      dig: ['9M', '8V'],\n      discharge: ['9L34', '7L34'],\n      doubleedge: ['9M', '9L40', '8V', '7L40'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '7T'],\n      earthquake: ['9M', '8V', '7M'],\n      electroweb: ['9M', '7T'],\n      endure: ['9M', '9E', '7E'],\n      explosion: ['9L36', '8V', '7M', '7L36'],\n      facade: ['9M', '8V', '7M'],\n      fireblast: ['9M', '8V', '7M'],\n      firepunch: ['9M', '8V', '7T'],\n      flail: ['9E', '7E'],\n      flamethrower: ['9M', '8V', '7M'],\n      fling: ['9M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      gyroball: ['9M', '7M'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['9M'],\n      irondefense: ['9M', '7T'],\n      magnetrise: ['7T', '7E'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      naturepower: ['7M'],\n      protect: ['9M', '8V', '7M'],\n      rest: ['9M', '8V', '7M'],\n      return: ['7M'],\n      rockblast: ['9M', '9L30', '7L30'],\n      rockclimb: ['7E'],\n      rockpolish: ['9L6', '7M', '7L6'],\n      rockslide: ['9M', '8V', '7M'],\n      rockthrow: ['9L16', '8V', '7L16'],\n      rocktomb: ['9M', '7M'],\n      rollout: ['9L10', '7L10'],\n      round: ['7M'],\n      sandstorm: ['9M', '7M'],\n      screech: ['9E', '7E'],\n      seismictoss: ['8V'],\n      selfdestruct: ['9L24', '8V', '7L24'],\n      sleeptalk: ['9M', '7M'],\n      smackdown: ['9M', '9L18', '7M', '7L18'],\n      snore: ['7T'],\n      spark: ['9L12', '7L12'],\n      stealthrock: ['9M', '9L28', '8V', '7T', '7L28'],\n      stoneedge: ['9M', '9L42', '7M', '7L42'],\n      substitute: ['9M', '8V', '7M'],\n      sunnyday: ['9M', '7M'],\n      supercellslam: ['9M'],\n      superpower: ['8V', '7T'],\n      swagger: ['7M'],\n      tackle: ['9L1', '8V', '7L1'],\n      takedown: ['9M', '8V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8V', '7M'],\n      thunderbolt: ['9M', '8V', '7M'],\n      thunderpunch: ['9M', '9L22', '8V', '7T', '7L22'],\n      thundershock: ['8V'],\n      thunderwave: ['9M', '8V'],\n      toxic: ['8V', '7M'],\n      voltswitch: ['9M', '7M'],\n      wideguard: ['9E', '7E'],\n      wildcharge: ['9M'],\n      zapcannon: ['9E']\n    }\n  ],\n  [\n    'graveler',\n    {\n      ancientpower: ['4T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['8V', '7V'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '7V', '3T'],\n      brickbreak: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '9L12', '7M', '7L22', '6M', '6L22', '5M', '5L36'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      curse: ['9M', '7V'],\n      defensecurl: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L1'],\n      dig: ['9M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L50', '8V', '7L50', '7V', '6L50', '5L58', '4L44', '3T', '3L62'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L40', '8V', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L47', '4M', '4L33', '3M', '3L45'],\n      endure: ['9M', '7V', '4M', '3T'],\n      explosion: ['9L44', '8V', '7M', '7L44', '7V', '6M', '6L44', '5M', '5L53', '4M', '4L38', '3T', '3L53'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gyroball: ['9M', '7M', '6M', '5M', '4M'],\n      harden: ['7V'],\n      hardpress: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      heavyslam: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '7T', '6T', '5T'],\n      ironhead: ['9M'],\n      magnitude: ['7L12', '7V', '6L12', '5L15', '4L15', '3L16'],\n      megapunch: ['7V', '3T'],\n      metronome: ['9M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '9L34', '7L34', '6L22', '5L22', '4L27', '3L37'],\n      rockclimb: ['4M'],\n      rockpolish: ['9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      rockslide: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L16', '8V', '7L16', '7V', '6L16', '5L11', '4L11', '3L1'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9L10', '7L10', '7V', '6L10', '5L18', '4T', '4L22', '3T', '3L29'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['8V'],\n      sandstorm: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      selfdestruct: ['9L24', '8V', '7L24', '7V', '6L24', '5L31', '4L18', '3T', '3L21'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '9L18', '7M', '7L18', '6M', '6L18', '5M', '5L27'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '9L30', '8V', '7T', '7L30', '6T', '6L30', '5T', '5L42', '4M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '9L54', '7M', '7L54', '6M', '6L54', '5M', '5L64', '4M', '4L49'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '8V', '7V'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8V', '7T', '6T', '5T', '4T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M']\n    }\n  ],\n  [\n    'graveleralola',\n    {\n      allyswitch: ['7T'],\n      attract: ['7M'],\n      bide: ['8V'],\n      block: ['7T'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8V', '7M'],\n      brutalswing: ['7M'],\n      bulldoze: ['9M', '7M'],\n      charge: ['9M', '9L1', '7L1'],\n      chargebeam: ['9M', '7M'],\n      confide: ['7M'],\n      curse: ['9M'],\n      defensecurl: ['9L1', '8V', '7L1'],\n      dig: ['9M', '8V'],\n      discharge: ['9L40', '7L40'],\n      doubleedge: ['9M', '9L50', '8V', '7L50'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '7T'],\n      earthquake: ['9M', '8V', '7M'],\n      electricterrain: ['9M'],\n      electroweb: ['9M', '7T'],\n      endure: ['9M'],\n      explosion: ['9L44', '8V', '7M', '7L44'],\n      facade: ['9M', '8V', '7M'],\n      fireblast: ['9M', '8V', '7M'],\n      firepunch: ['9M', '8V', '7T'],\n      flamethrower: ['9M', '8V', '7M'],\n      fling: ['9M', '7M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      gyroball: ['9M', '7M'],\n      hardpress: ['9M'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['9M'],\n      irondefense: ['9M', '7T'],\n      magnetrise: ['7T'],\n      metronome: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      naturepower: ['7M'],\n      protect: ['9M', '8V', '7M'],\n      rest: ['9M', '8V', '7M'],\n      return: ['7M'],\n      rockblast: ['9M', '9L34', '7L34'],\n      rockpolish: ['9L1', '7M', '7L1'],\n      rockslide: ['9M', '8V', '7M'],\n      rockthrow: ['9L16', '8V', '7L16'],\n      rocktomb: ['9M', '7M'],\n      rollout: ['9L10', '7L10'],\n      round: ['7M'],\n      sandstorm: ['9M', '7M'],\n      scaryface: ['9M'],\n      seismictoss: ['8V'],\n      selfdestruct: ['9L24', '8V', '7L24'],\n      shockwave: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      smackdown: ['9M', '9L18', '7M', '7L18'],\n      snore: ['7T'],\n      spark: ['9L12', '7L12'],\n      stealthrock: ['9M', '9L30', '8V', '7T', '7L30'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '9L54', '7M', '7L54'],\n      substitute: ['9M', '8V', '7M'],\n      sunnyday: ['9M', '7M'],\n      supercellslam: ['9M'],\n      superpower: ['8V', '7T'],\n      swagger: ['7M'],\n      tackle: ['9L1', '8V', '7L1'],\n      takedown: ['9M', '8V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8V', '7M'],\n      thunderbolt: ['9M', '8V', '7M'],\n      thunderpunch: ['9M', '9L22', '8V', '7T', '7L22'],\n      thundershock: ['8V'],\n      thunderwave: ['9M', '8V'],\n      toxic: ['8V', '7M'],\n      voltswitch: ['9M', '7M'],\n      wildcharge: ['9M']\n    }\n  ],\n  [\n    'golem',\n    {\n      ancientpower: ['4T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['8V', '7V'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '7V', '3T'],\n      brickbreak: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '9L22', '7M', '7L22', '6M', '6L22', '5M', '5L36'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      curse: ['9M', '7V'],\n      defensecurl: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L1'],\n      dig: ['9M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L50', '8V', '7L50', '7V', '6L50', '5L58', '4L44', '3T', '3L62'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L40', '8V', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L47', '4M', '4L33', '3M', '3L45'],\n      endure: ['9M', '7V', '4M', '3T'],\n      explosion: ['9L44', '8V', '7M', '7L44', '7V', '6M', '6L44', '5M', '5L53', '4M', '4L38', '3T', '3L53'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gyroball: ['9M', '7M', '6M', '5M', '4M'],\n      harden: ['7V'],\n      hardpress: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      heavyslam: ['9M', '9L1', '7L1', '6L1', '5L69'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '7T', '6T', '5T'],\n      ironhead: ['9M', '7T', '6T', '5T', '4T'],\n      magnitude: ['7L12', '7V', '6L12', '5L15', '4L15', '3L16'],\n      megakick: ['7V', '3T'],\n      megapunch: ['8V', '7V', '3T'],\n      metronome: ['9M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '9L34', '7L34', '6L22', '5L22', '4L27', '3L37'],\n      rockclimb: ['4M'],\n      rockpolish: ['9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      rockslide: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L16', '8V', '7L16', '7V', '6L16', '5L11', '4L11', '3L1'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '4L22', '3T', '3L29'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['8V'],\n      sandstorm: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      selfdestruct: ['9L24', '8V', '7L24', '7V', '6L24', '5L31', '4L18', '3T', '3L21'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '9L18', '7M', '7L18', '6M', '6L18', '5M', '5L27'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '9L30', '8V', '7T', '7L30', '6T', '6L30', '5T', '5L42', '4M'],\n      steamroller: ['7L10', '6L10', '5L18'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '9L54', '7M', '7L54', '6M', '6L54', '5M', '5L64', '4M', '4L49'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '8V', '7V'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8V', '7T', '6T', '5T', '4T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M']\n    }\n  ],\n  [\n    'golemalola',\n    {\n      allyswitch: ['7T'],\n      attract: ['7M'],\n      bide: ['8V'],\n      block: ['7T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8V', '7M'],\n      brutalswing: ['7M'],\n      bulldoze: ['9M', '7M'],\n      charge: ['9M', '9L1', '7L1'],\n      chargebeam: ['9M', '7M'],\n      confide: ['7M'],\n      curse: ['9M'],\n      defensecurl: ['9L1', '8V', '7L1'],\n      dig: ['9M', '8V'],\n      discharge: ['9L40', '7L40'],\n      doubleedge: ['9M', '9L50', '8V', '7L50'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '7T'],\n      earthquake: ['9M', '8V', '7M'],\n      echoedvoice: ['7M'],\n      electricterrain: ['9M'],\n      electroweb: ['9M', '7T'],\n      endure: ['9M'],\n      explosion: ['9L44', '8V', '7M', '7L44'],\n      facade: ['9M', '8V', '7M'],\n      fireblast: ['9M', '8V', '7M'],\n      firepunch: ['9M', '8V', '7T'],\n      flamethrower: ['9M', '8V', '7M'],\n      fling: ['9M', '7M'],\n      focusblast: ['9M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '7M'],\n      gyroball: ['9M', '7M'],\n      hardpress: ['9M'],\n      headbutt: ['8V'],\n      heavyslam: ['9M', '9L1', '7L1'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8V', '7M'],\n      irondefense: ['9M', '7T'],\n      ironhead: ['9M', '7T'],\n      magnetrise: ['7T'],\n      megapunch: ['8V'],\n      meteorbeam: ['9M'],\n      metronome: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      naturepower: ['7M'],\n      protect: ['9M', '8V', '7M'],\n      rest: ['9M', '8V', '7M'],\n      return: ['7M'],\n      roar: ['9M', '7M'],\n      rockblast: ['9M', '9L34', '7L34'],\n      rockpolish: ['9L1', '7M', '7L1'],\n      rockslide: ['9M', '8V', '7M'],\n      rockthrow: ['9L16', '8V', '7L16'],\n      rocktomb: ['9M', '7M'],\n      round: ['7M'],\n      sandstorm: ['9M', '7M'],\n      scaryface: ['9M'],\n      seismictoss: ['8V'],\n      selfdestruct: ['9L24', '8V', '7L24'],\n      shockwave: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      smackdown: ['9M', '9L18', '7M', '7L18'],\n      snore: ['7T'],\n      spark: ['9L12', '7L12'],\n      stealthrock: ['9M', '9L30', '8V', '7T', '7L30'],\n      steamroller: ['7L10'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '9L54', '7M', '7L54'],\n      substitute: ['9M', '8V', '7M'],\n      sunnyday: ['9M', '7M'],\n      supercellslam: ['9M'],\n      superpower: ['8V', '7T'],\n      swagger: ['7M'],\n      tackle: ['9L1', '8V', '7L1'],\n      takedown: ['9M', '8V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8V', '7M'],\n      thunderbolt: ['9M', '8V', '7M'],\n      thunderpunch: ['9M', '9L22', '8V', '7T', '7L22'],\n      thundershock: ['8V'],\n      thunderwave: ['9M', '8V'],\n      toxic: ['8V', '7M'],\n      voltswitch: ['9M', '7M'],\n      wildcharge: ['9M', '7M']\n    }\n  ],\n  [\n    'ponyta',\n    {\n      agility: ['8M', '8L20', '8V', '7L37', '7V', '6L37', '5L37', '4L33', '3L38'],\n      allyswitch: ['8M', '7T', '7E', '6E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      bounce: ['8M', '7T', '7L45', '6T', '6L45', '5T', '5L45', '4T', '4L42', '3L45'],\n      captivate: ['7E', '6E', '5E', '4M'],\n      charm: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      doubleedge: ['8E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      doublekick: ['8E', '8V', '7E', '7V', '6E', '5E', '4E', '3E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['8L10', '8V', '7L9', '7V', '6L9', '5L9', '4L10', '3L14'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '8L50', '8V', '7M', '7L41', '7V', '6M', '6L41', '5M', '5L41', '4M', '4L37', '3M', '3L53'],\n      firespin: ['8M', '8L35', '8V', '7L25', '7V', '6L25', '5L25', '4L24', '3L25'],\n      flamecharge: ['8L15', '7M', '7L21', '6M', '6L21', '5M', '5L21'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flamewheel: ['8L25', '7L13', '7E', '7V', '6L13', '6E', '5L13', '5E', '4L15', '4E', '3E'],\n      flareblitz: ['8M', '8L55', '8V', '7L49', '6L49', '5L49', '4L46'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      growl: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L5'],\n      headbutt: ['8V', '7V', '4T'],\n      heatwave: ['8M', '7T', '6T', '5T', '5D', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M', '7E'],\n      horndrill: ['8E', '7E', '7V', '6E', '5E', '4E'],\n      hypnosis: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      incinerate: ['6M', '5M'],\n      inferno: ['8L45', '7L33', '6L33', '5L33'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lowkick: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      mimic: ['7V', '3T'],\n      morningsun: ['8E', '7E', '6E', '5E', '4E'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      overheat: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      playrough: ['8M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['8V', '7V', '3L1'],\n      rage: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      solarblade: ['8M'],\n      stomp: ['8L30', '8V', '7L17', '7V', '6L17', '5L17', '4L19', '3L19'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      tackle: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      tailwhip: ['8L5', '8V', '7L4', '7V', '6L4', '5L4', '4L6', '3L9'],\n      takedown: ['8L41', '8V', '7L29', '7V', '6L29', '5L29', '4L28', '3L31'],\n      thrash: ['8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      willowisp: ['8M', '8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'ponytagalar',\n    {\n      agility: ['8M', '8L20'],\n      allyswitch: ['8M'],\n      attract: ['8M'],\n      bodyslam: ['8M'],\n      bounce: ['8M'],\n      calmmind: ['8M'],\n      charm: ['8M'],\n      confusion: ['8L10', '8S0'],\n      dazzlinggleam: ['8M', '8L45'],\n      doubleedge: ['8E'],\n      doublekick: ['8E'],\n      endure: ['8M'],\n      expandingforce: ['8T'],\n      facade: ['8M'],\n      fairywind: ['8L15', '8S0'],\n      futuresight: ['8M'],\n      growl: ['8L1', '8S0'],\n      healingwish: ['8L55'],\n      healpulse: ['8L35'],\n      highhorsepower: ['8M'],\n      horndrill: ['8E'],\n      hypnosis: ['8E'],\n      imprison: ['8M'],\n      irontail: ['8M'],\n      lowkick: ['8M'],\n      morningsun: ['8E'],\n      mysticalfire: ['8M'],\n      playrough: ['8M'],\n      protect: ['8M'],\n      psybeam: ['8L25'],\n      psychic: ['8M', '8L50'],\n      rest: ['8M'],\n      round: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      stomp: ['8L30'],\n      storedpower: ['8M'],\n      substitute: ['8M'],\n      swift: ['8M'],\n      tackle: ['8L1', '8S0'],\n      tailwhip: ['8L5'],\n      takedown: ['8L41'],\n      thrash: ['8E'],\n      wildcharge: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'rapidash',\n    {\n      agility: ['8M', '8L20', '8V', '7L37', '7V', '6L37', '5L37', '4L33', '3L38'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M', '3S0'],\n      bide: ['7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      bounce: ['8M', '7T', '7L45', '6T', '6L45', '5T', '5L45', '4T', '4L47', '3L50'],\n      captivate: ['4M'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doublekick: ['8V'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['8M', '8V', '7T', '6T', '5T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '8L56', '8V', '7M', '7L41', '7V', '6M', '6L41', '5M', '5L41', '4M', '4L37', '3M', '3L63'],\n      firespin: ['8M', '8L35', '8V', '7L25', '7V', '6L25', '5L25', '4L24', '3L25'],\n      flamecharge: ['8L15', '7M', '7L21', '6M', '6L21', '5M', '5L21'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M', '3S0'],\n      flamewheel: ['8L25', '7L13', '6L13', '5L13', '4L15'],\n      flareblitz: ['8M', '8L63', '8V', '7L49', '6L49', '5L49', '4L56'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8V', '7L1', '7V', '6L40', '5L40', '4L40', '3L40'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V', '7V', '4T'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      horndrill: ['8V', '7V'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['8V'],\n      incinerate: ['6M', '5M'],\n      inferno: ['8L49', '7L33', '6L33', '5L33'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lowkick: ['8M', '7T', '6T', '5T'],\n      megahorn: ['8M', '8L1', '8V', '7L1', '6L1', '5L1', '4L1'],\n      mimic: ['7V', '3T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      overheat: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      payday: ['8M'],\n      playrough: ['8M'],\n      poisonjab: ['8M', '8L1', '8V', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['8L1', '8V', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      rage: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scorchingsands: ['8T'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smartstrike: ['8M', '8L0', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '8V', '7M', '6M', '5M', '4M', '3M', '3S0'],\n      solarblade: ['8M'],\n      stomp: ['8L30', '8V', '7L17', '7V', '6L17', '5L17', '4L19', '3L19'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      swordsdance: ['8M'],\n      tackle: ['8L1', '8V', '7V', '3L1'],\n      tailwhip: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['8L43', '8V', '7L29', '7V', '6L29', '5L29', '4L28', '3L31'],\n      throatchop: ['8M', '7T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      willowisp: ['8M', '8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'rapidashgalar',\n    {\n      agility: ['8M', '8L20'],\n      allyswitch: ['8M'],\n      attract: ['8M'],\n      batonpass: ['8M'],\n      bodyslam: ['8M'],\n      bounce: ['8M'],\n      calmmind: ['8M'],\n      charm: ['8M'],\n      confusion: ['8L1'],\n      dazzlinggleam: ['8M', '8L49'],\n      drillrun: ['8M'],\n      endure: ['8M'],\n      expandingforce: ['8T'],\n      facade: ['8M'],\n      fairywind: ['8L15'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M'],\n      growl: ['8L1'],\n      healingwish: ['8L63'],\n      healpulse: ['8L35'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M'],\n      imprison: ['8M'],\n      irontail: ['8M'],\n      lowkick: ['8M'],\n      magicroom: ['8M'],\n      megahorn: ['8M', '8L1'],\n      mistyterrain: ['8M'],\n      mysticalfire: ['8M'],\n      payday: ['8M'],\n      playrough: ['8M'],\n      protect: ['8M'],\n      psybeam: ['8L25'],\n      psychic: ['8M', '8L56'],\n      psychicterrain: ['8M'],\n      psychocut: ['8M', '8L0'],\n      quickattack: ['8L1'],\n      rest: ['8M'],\n      round: ['8M'],\n      sleeptalk: ['8M'],\n      smartstrike: ['8M'],\n      snore: ['8M'],\n      stomp: ['8L30'],\n      storedpower: ['8M'],\n      substitute: ['8M'],\n      swift: ['8M'],\n      swordsdance: ['8M'],\n      tackle: ['8L1'],\n      tailwhip: ['8L1'],\n      takedown: ['8L43'],\n      throatchop: ['8M'],\n      trickroom: ['8M'],\n      wildcharge: ['8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'slowpoke',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M', '9L27', '8M', '8L27', '8V', '7L41', '7V', '6L41', '5L41', '4L43', '3L36'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M'],\n      belch: ['9E', '8E', '7E', '6E'],\n      bellydrum: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brine: ['8M', '5D', '4M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L12', '8L12', '8V', '7L14', '7V', '6L14', '5L14', '5S2', '4L15', '3L17', '3S0'],\n      curse: ['9M', '9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      disable: ['9L15', '8L15', '8V', '7L19', '7V', '6L19', '5L19', '5S2', '4L20', '3L24', '3S0'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      earthquake: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      fissure: ['7V'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foulplay: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L3', '8L3', '8V', '7L5', '7V', '6L5', '5L5', '4L6', '3L6', '3S1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['9L21', '8L21', '8V', '7L23', '7V', '6L23', '5L23', '5S2', '4T', '4L25', '3L29', '3S0'],\n      healpulse: ['9L45', '8L45', '7L58', '6L58', '5L58'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '8M'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      liquidation: ['9M', '8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mefirst: ['7E', '6E', '5E', '4E'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['7E', '6E', '5E', '4E', '3E'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payday: ['8M', '8V', '7V'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L36', '8M', '8L36', '8V', '7M', '7L45', '7V', '6M', '6L45', '5M', '5L45', '4M', '4L48', '3M', '3L40'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '9L39', '8L39', '7M', '7L54', '7V', '6M', '6L54', '5M', '5L54', '4M', '4L57', '3T', '3L47'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '9L42', '8M', '8L42', '7M', '7L49', '7V', '6M', '6L49', '5M', '5L49', '4M', '4L53', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7V', '6M', '5M', '4M', '4E', '3M', '3E'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      skullbash: ['7V'],\n      slackoff: ['9L33', '8L33', '7L36', '6L36', '5L36', '4L39'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '4E', '3T', '3E'],\n      snore: ['8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      snowscape: ['9M'],\n      stomp: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      storedpower: ['9M', '8M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '9L30', '8M', '8L30', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      takedown: ['9M', '7V'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      waterfall: ['9M'],\n      watergun: ['9L6', '8L6', '8V', '7L9', '7V', '6L9', '5L9', '4L11', '3L13', '3S0'],\n      waterpulse: ['9M', '9L18', '8L18', '7T', '7L28', '6T', '6L28', '5L28', '5S2', '4M', '4L29', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '4M'],\n      wonderroom: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      yawn: ['9L9', '8L9', '8V', '7L1', '6L1', '5L1', '5D', '4L1', '3L1', '3S1'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '9L24', '8M', '8L24', '7T', '7L32', '7E', '6T', '6L32', '6E', '5T', '5L32', '5E', '4T', '4L34', '4E']\n    }\n  ],\n  [\n    'slowpokegalar',\n    {\n      acid: ['9L6', '8L6'],\n      amnesia: ['9M', '9L27', '8M', '8L27'],\n      attract: ['8M'],\n      avalanche: ['9M'],\n      belch: ['9E', '8E'],\n      bellydrum: ['9E', '8E'],\n      blizzard: ['9M', '8M'],\n      block: ['9E', '8E'],\n      bodyslam: ['9M', '8M'],\n      brine: ['8M'],\n      bulldoze: ['9M', '8M'],\n      calmmind: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confusion: ['9L12', '8L12'],\n      curse: ['9M', '9L1', '8L1'],\n      dig: ['9M', '8M'],\n      disable: ['9L15', '8L15'],\n      dive: ['8M'],\n      earthquake: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      flamethrower: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      futuresight: ['8M'],\n      grassknot: ['9M', '8M'],\n      growl: ['9L3', '8L3'],\n      hail: ['8M'],\n      headbutt: ['9L21', '8L21'],\n      healpulse: ['9L45', '8L45'],\n      helpinghand: ['9M'],\n      hydropump: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      icywind: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      irontail: ['8M'],\n      lightscreen: ['9M', '8M'],\n      liquidation: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      payday: ['8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L36', '8M', '8L36'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '9L39', '8L39'],\n      psyshock: ['9M', '8M'],\n      raindance: ['9M', '9L42', '8M', '8L42'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      scald: ['8M'],\n      shadowball: ['9M', '8M'],\n      skillswap: ['9M', '8M'],\n      slackoff: ['9L33', '8L33'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      snowscape: ['9M'],\n      stomp: ['9E', '8E'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      surf: ['9M', '9L30', '8M', '8L30'],\n      swift: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M'],\n      triattack: ['8M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M', '8M'],\n      waterfall: ['9M'],\n      waterpulse: ['9M', '9L18', '8L18'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M'],\n      wonderroom: ['8M'],\n      yawn: ['9L9', '8L9'],\n      zenheadbutt: ['9M', '9L24', '8M', '8L24']\n    }\n  ],\n  [\n    'slowbro',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M', '9L27', '8M', '8L27', '8V', '7L43', '7V', '6L43', '5L43', '4L47', '3L36'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '4M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L12', '8L12', '8V', '7L14', '7V', '6L14', '5L14', '4L15', '3L17'],\n      counter: ['7V', '3T'],\n      curse: ['9M', '9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      disable: ['9L15', '8L15', '8V', '7L19', '7V', '6L19', '5L19', '4L20', '3L24'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      fissure: ['7V'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      futuresight: ['9M', '9L1', '8M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['9L21', '8L21', '8V', '7L23', '7V', '6L23', '5L23', '4T', '4L25', '3L29'],\n      healpulse: ['9L51', '8L51', '7L1', '6L1', '5L68'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '6S0', '5T', '4M', '3M'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      liquidation: ['9M', '8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M'],\n      mimic: ['7V', '3T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payday: ['8M', '8V', '7V'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L36', '8M', '8L36', '8V', '7M', '7L49', '7V', '6M', '6L49', '5M', '5L49', '4M', '4L54', '3M', '3L44'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '9L41', '8L41', '7M', '7L62', '7V', '6M', '6L62', '5M', '5L62', '4M', '4L67', '3T', '3L55'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '9L46', '8M', '8L46', '7M', '7L55', '7V', '6M', '6L55', '5M', '5L55', '4M', '4L61', '3M'],\n      razorshell: ['8M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scald: ['9M', '8M', '8V', '7M', '6M', '6S0', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      skullbash: ['7V'],\n      slackoff: ['9L33', '8L33', '7L36', '6L36', '6S0', '5L36', '4L41'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      stomp: ['8V'],\n      storedpower: ['9M', '8M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '9L30', '8M', '8L30', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '6S0', '5M', '4M'],\n      waterfall: ['9M'],\n      watergun: ['9L1', '8L1', '8V', '7L9', '7V', '6L9', '5L9', '4L11', '3L13'],\n      waterpulse: ['9M', '9L18', '8L18', '7T', '7L28', '6T', '6L28', '5L28', '4M', '4L29', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '4M'],\n      withdraw: ['9L1', '8L1', '8V', '7L1', '7V', '6L37', '5L37', '4L37', '3L37'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      yawn: ['9L9', '8L9', '8V', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '9L24', '8M', '8L24', '7T', '7L32', '6T', '6L32', '5T', '5L32', '4T', '4L34']\n    }\n  ],\n  [\n    'slowbrogalar',\n    {\n      acid: ['9L1', '8L1'],\n      acidspray: ['9M'],\n      amnesia: ['9M', '9L27', '8M', '8L27'],\n      attract: ['8M'],\n      avalanche: ['9M', '8M'],\n      blizzard: ['9M', '8M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M'],\n      brine: ['8M'],\n      brutalswing: ['8M'],\n      bulldoze: ['9M', '8M'],\n      calmmind: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confusion: ['9L12', '8L12'],\n      curse: ['9M', '9L1', '8L1'],\n      dig: ['9M', '8M'],\n      disable: ['9L15', '8L15'],\n      dive: ['8M'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      flamethrower: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      focusblast: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      futuresight: ['8M'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      gunkshot: ['9M'],\n      hail: ['8M'],\n      haze: ['9M'],\n      headbutt: ['9L21', '8L21'],\n      healpulse: ['9L45', '8L45'],\n      helpinghand: ['9M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      icefang: ['9M'],\n      icepunch: ['9M', '8M'],\n      icywind: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '8M'],\n      irontail: ['8M'],\n      lightscreen: ['9M', '8M'],\n      liquidation: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      nastyplot: ['9M', '8M'],\n      payday: ['8M'],\n      poisonjab: ['9M', '8M'],\n      powergem: ['9M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L36', '8M', '8L36'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '9L39', '8L39'],\n      psyshock: ['9M', '8M'],\n      raindance: ['9M', '9L42', '8M', '8L42'],\n      razorshell: ['8M'],\n      rest: ['9M', '8M'],\n      rockblast: ['9M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sandstorm: ['9M'],\n      scald: ['8M'],\n      scaryface: ['9M'],\n      shadowball: ['9M', '8M'],\n      shellsidearm: ['9L0', '8L0'],\n      skillswap: ['9M', '8M'],\n      slackoff: ['9L33', '8L33'],\n      sleeptalk: ['9M', '8M'],\n      sludgebomb: ['9M', '8M'],\n      sludgewave: ['9M', '8M'],\n      smackdown: ['9M'],\n      snore: ['8M'],\n      snowscape: ['9M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      surf: ['9M', '9L30', '8M', '8L30'],\n      swift: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M'],\n      toxic: ['9M'],\n      triattack: ['8M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M', '8M'],\n      venoshock: ['9M', '8M'],\n      waterfall: ['9M'],\n      watergun: ['8L1'],\n      waterpulse: ['9M', '9L18', '8L18'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M'],\n      withdraw: ['9L1', '8L1'],\n      wonderroom: ['8M'],\n      yawn: ['9L9', '8L9'],\n      zenheadbutt: ['9M', '9L24', '8M', '8L24']\n    }\n  ],\n  [\n    'slowking',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      allyswitch: ['7T'],\n      amnesia: ['9M', '9L27', '8M', '8L27'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chillyreception: ['9L1'],\n      confide: ['7M', '6M'],\n      confusion: ['9L12', '8L12', '7L14', '7V', '6L14', '5L14', '4L15', '3L17'],\n      counter: ['3T'],\n      curse: ['9M', '9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      dig: ['9M', '8M', '7V', '6M', '5M', '4M', '3M'],\n      disable: ['9L15', '8L15', '7L19', '7V', '6L19', '5L19', '4L20', '3L24'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragontail: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      futuresight: ['9M', '9L1', '8M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '7L5', '7V', '6L5', '5L5', '4L6', '3L6'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['9L21', '8L21', '7L23', '7V', '6L23', '5L23', '4T', '4L25', '3L29'],\n      healpulse: ['9L45', '8L45', '7L1', '6L1', '5L58'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      liquidation: ['9M', '8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '9L1', '8M', '8L1', '7L36', '6L36', '5L36', '4L39'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payday: ['8M'],\n      powergem: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L36', '8M', '8L36', '7M', '7L45', '7V', '6M', '6L45', '5M', '5L45', '4M', '4L48', '3M', '3L40'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '9L39', '8L39', '7M', '7L54', '7V', '6M', '6L54', '5M', '5L54', '4M', '4L57', '3T', '3L47'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '9L42', '8M', '8L42', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorshell: ['8M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scald: ['9M', '8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      slackoff: ['9L33', '8L33'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      storedpower: ['9M', '8M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '9L30', '8M', '8L30', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['9L1', '8L1', '7M', '7L41', '7V', '6M', '6L41', '5M', '5L41', '4M', '4L43', '3T', '3L36'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      trumpcard: ['7L49', '6L49', '5L49', '4L53'],\n      waterfall: ['9M'],\n      watergun: ['9L1', '8L1', '7L9', '7V', '6L9', '5L9', '4L11', '3L13'],\n      waterpulse: ['9M', '9L18', '8L18', '7T', '7L28', '6T', '6L28', '5L28', '4M', '4L29', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      yawn: ['9L9', '8L9', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '8L24', '7T', '7L32', '6T', '6L32', '5T', '5L32', '4T', '4L34']\n    }\n  ],\n  [\n    'slowkinggalar',\n    {\n      acid: ['9L1', '8L1'],\n      acidspray: ['9M'],\n      amnesia: ['9M', '9L27', '8M', '8L27'],\n      attract: ['8M'],\n      avalanche: ['9M', '8M'],\n      blizzard: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M'],\n      brine: ['8M'],\n      bulldoze: ['9M', '8M'],\n      calmmind: ['9M', '8M'],\n      chillingwater: ['9M'],\n      chillyreception: ['9L1'],\n      confusion: ['9L12', '8L12'],\n      curse: ['9M', '9L1', '8L1'],\n      dig: ['9M', '8M'],\n      disable: ['9L15', '8L15'],\n      dive: ['8M'],\n      drainpunch: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      eeriespell: ['9L0', '8L0'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      firepunch: ['9M'],\n      flamethrower: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      focusblast: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      futuresight: ['9M', '9L1', '8M'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      gunkshot: ['9M'],\n      hail: ['8M'],\n      headbutt: ['9L21', '8L21'],\n      healpulse: ['9L45', '8L45'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      icepunch: ['8M'],\n      icywind: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '8M'],\n      irontail: ['8M'],\n      lightscreen: ['9M', '8M'],\n      liquidation: ['9M', '8M'],\n      lowsweep: ['9M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      payday: ['8M'],\n      poisonjab: ['9M'],\n      powergem: ['9M', '9L1', '8M', '8L1'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L36', '8M', '8L36'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '9L39', '8L39'],\n      psyshock: ['9M', '8M'],\n      raindance: ['9M', '9L42', '8M', '8L42'],\n      razorshell: ['8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      scald: ['8M'],\n      scaryface: ['9M'],\n      shadowball: ['9M', '8M'],\n      skillswap: ['9M', '8M'],\n      slackoff: ['9L33', '8L33'],\n      sleeptalk: ['9M', '8M'],\n      sludgebomb: ['9M', '8M'],\n      sludgewave: ['9M', '8M'],\n      snarl: ['9M'],\n      snore: ['8M'],\n      snowscape: ['9M'],\n      stompingtantrum: ['9M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      surf: ['9M', '9L30', '8M', '8L30'],\n      swagger: ['9L1', '8L1'],\n      swift: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M'],\n      thunderwave: ['9M', '8M'],\n      toxic: ['9M', '9L1'],\n      toxicspikes: ['9M'],\n      triattack: ['8M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M', '8M'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M'],\n      waterfall: ['9M', '9L1'],\n      waterpulse: ['9M', '9L18', '8L18'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M'],\n      wonderroom: ['8M'],\n      yawn: ['9L9', '8L9'],\n      zenheadbutt: ['9M', '9L24', '8M', '8L24']\n    }\n  ],\n  [\n    'magnemite',\n    {\n      bide: ['7V'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['7V'],\n      discharge: ['9L36', '8L36', '7L37', '6L37', '5L43', '4L38'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L29', '6L29', '5L27'],\n      electroweb: ['9M', '9E', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      explosion: ['9E', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '9L32', '8M', '8L32', '8V', '7M', '7L31', '6M', '6L31', '5M', '5L35', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gravity: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      gyroball: ['9M', '9L16', '8M', '8L16', '7M', '7L47', '6M', '6L47', '5M', '5L53', '4M', '4L49'],\n      headbutt: ['8V'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M'],\n      lightscreen: ['9M', '9L44', '8M', '8L44', '8V', '7M', '7L13', '6M', '5M', '4M'],\n      lockon: ['9L48', '8L48', '7L41', '7V', '6L41', '5L30', '4L27', '3L32'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magnetbomb: ['7L11', '6L17', '5L18', '4L30'],\n      magnetrise: ['9L28', '8L28', '7T', '7L43', '6T', '6L43', '5T', '5L49', '4T', '4L46'],\n      metalsound: ['9M', '9L40', '8L40', '7L25', '6L25', '5L1', '5D', '4L1', '3L1'],\n      mimic: ['7V', '3T'],\n      mirrorshot: ['7L23', '6L23', '5L25', '4L43'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '5D', '4M'],\n      reflect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      screech: ['9L24', '8M', '8L24', '8V', '7L35', '7V', '6L35', '5L38', '4L33', '3L44'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      sonicboom: ['8V', '7L17', '7V', '6L11', '5L11', '4L14', '3L16'],\n      spark: ['9L20', '8L20', '7L19', '6L19', '5L21', '4L22', '3L26'],\n      steelbeam: ['9M', '8T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      supersonic: ['9L4', '8L4', '8V', '7L1', '7V', '6L4', '5L4', '4L11', '3L11'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T', '3L38'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thundershock: ['9L1', '8L1', '8V', '7L5', '7V', '6L7', '5L6', '5D', '4L6', '3L6'],\n      thunderwave: ['9M', '9L8', '8M', '8L8', '8V', '7M', '7L11', '7V', '6M', '6L13', '5M', '5L15', '4M', '4L17', '3T', '3L21'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['9L52', '8L52', '7L49', '7V', '6L49', '5L57', '4L54', '3L50']\n    }\n  ],\n  [\n    'magneton',\n    {\n      bide: ['7V'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['7V'],\n      discharge: ['9L40', '8L40', '7L43', '6L43', '5L46', '4L40'],\n      doubleedge: ['7V', '3T', '3S0'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L29', '6L29', '5L27'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '9L34', '8M', '8L34', '8V', '7M', '7L33', '6M', '6L33', '5M', '5L39', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '9L16', '8M', '8L16', '7M', '7L59', '6M', '6L59', '5M', '5L60', '4M', '4L54'],\n      headbutt: ['8V'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M'],\n      lightscreen: ['9M', '9L52', '8M', '8L52', '8V', '7M', '7L13', '6M', '5M', '4M'],\n      lockon: ['9L58', '8L58', '7L49', '7V', '6L49', '5L30', '4L27', '3L35'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magnetbomb: ['7L1', '6L17', '5L18', '4L30'],\n      magnetrise: ['9L28', '8L28', '7T', '7L53', '6T', '6L53', '5T', '5L54', '4T', '4L50'],\n      metalsound: ['9M', '9L46', '8L46', '7L25', '6L25', '5L1', '4L1', '3L1'],\n      mimic: ['7V', '3T'],\n      mirrorshot: ['7L23', '6L23', '5L25', '4L46'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      screech: ['9L24', '8M', '8L24', '8V', '7L39', '7V', '6L39', '5L40', '4L34', '3L53'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      sonicboom: ['8V', '7L17', '7V', '6L1', '5L11', '4L14', '3L16'],\n      spark: ['9L20', '8L20', '7L19', '6L19', '5L21', '4L22', '3L26'],\n      steelbeam: ['9M', '8T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      supersonic: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thundershock: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      thunderwave: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7L1', '7V', '6M', '6L13', '5M', '5L15', '4M', '4L17', '3T', '3L21'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['9L0', '8M', '8L0', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L44'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['9L64', '8L64', '7L1', '7V', '6L1', '5L66', '4L60', '3L62']\n    }\n  ],\n  [\n    'magnezone',\n    {\n      allyswitch: ['8M', '7T'],\n      barrier: ['7L1', '6L1', '5L1', '4L1'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      discharge: ['9L40', '8L40', '7L43', '6L43', '5L46', '4L40'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      electroball: ['9M', '9L12', '8M', '8L12', '7L29', '6L29', '5L27'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '4M'],\n      explosion: ['7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      flashcannon: ['9M', '9L34', '8M', '8L34', '7M', '7L33', '6M', '6L33', '5M', '5L39', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '9L16', '8M', '8L16', '7M', '7L59', '6M', '6L59', '5M', '5L60', '4M', '4L54'],\n      hardpress: ['9M'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '9L52', '8M', '8L52', '7M', '7L13', '6M', '5M', '4M'],\n      lockon: ['9L58', '8L58', '7L49', '6L49', '5L30', '4L27'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magnetbomb: ['7L1', '6L17', '5L18', '4L30'],\n      magneticflux: ['9L1', '8L1', '7L1', '6L1'],\n      magnetrise: ['9L28', '8L28', '7T', '7L53', '6T', '6L53', '5T', '5L54', '4T', '4L50'],\n      metalsound: ['9M', '9L46', '8L46', '7L25', '6L25', '5L1', '4L1'],\n      mirrorcoat: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      mirrorshot: ['7L23', '6L23', '5L25', '4L46'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      risingvoltage: ['8T'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      screech: ['9L24', '8M', '8L24', '7L39', '6L39', '5L40', '4L34'],\n      secretpower: ['6M', '4M'],\n      selfdestruct: ['8M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      sonicboom: ['7L17', '6L1', '5L11', '4L14'],\n      spark: ['9L20', '8L20', '7L19', '6L19', '5L21', '4L22'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      supercellslam: ['9M'],\n      supersonic: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thundershock: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      thunderwave: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L13', '5M', '5L15', '4M', '4L17'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      triattack: ['9L1', '8M', '8L1', '7L1'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['9L64', '8L64', '7L1', '6L1', '5L66', '4L60']\n    }\n  ],\n  [\n    'farfetchd',\n    {\n      acrobatics: ['8M', '7M', '7L37', '6M', '6L37', '5M', '5L37'],\n      aerialace: ['8L20', '7M', '7L9', '6M', '6L9', '5M', '5L13', '4M', '4L13', '3M', '3S1'],\n      agility: ['8M', '8L60', '8V', '7L31', '7V', '6L31', '5L31', '4L31', '3L36'],\n      aircutter: ['8L25', '7L21', '6L21', '5L21', '4T', '4L21'],\n      airslash: ['8M', '8L50', '8V', '7L49', '6L49', '5L49', '4L37'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M', '3S1'],\n      bide: ['7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      bravebird: ['8M', '8L65', '7L1', '6L1', '5L55'],\n      brutalswing: ['8M', '7M'],\n      captivate: ['4M'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      covet: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      curse: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      cut: ['8L15', '8V', '7V', '6M', '5M', '4M', '3M'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['8T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '8L35', '7M', '7L45', '7V', '6M', '6L45', '5M', '5L45', '4M', '4L43', '3L46'],\n      featherdance: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      feint: ['8E', '8V', '7L43', '6L43', '5L43', '4L43'],\n      finalgambit: ['8E', '7E'],\n      firstimpression: ['8E', '7E'],\n      flail: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      fly: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8M', '8V'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8V', '7L7', '7V', '6L7', '5L7', '4L7', '3L16'],\n      furycutter: ['8L10', '7L1', '6L1', '5L1', '5D', '4T', '4L1', '3L26'],\n      gust: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V', '7V', '4T'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['8M', '8V', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['8L30', '7T', '7L13', '6T', '6L13', '5T', '5L9', '4T', '4L9', '3L21'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      leafblade: ['8M', '8L55', '7E', '6E', '5E', '5D', '4E'],\n      leer: ['8L5', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L11'],\n      mimic: ['7V', '3T'],\n      mirrormove: ['8V', '7E', '7V', '6E', '5E', '4E', '3E'],\n      mudslap: ['7E', '7V', '6E', '5E', '4T', '4E', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['8E', '7L33', '7E', '6L33', '6E', '5L33', '5E', '4L33', '4E'],\n      ominouswind: ['4T'],\n      peck: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pluck: ['5M', '4M'],\n      poisonjab: ['8M', '8V', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      quickattack: ['8E', '8V', '7E', '7V', '6E', '5E', '4E', '3E'],\n      rage: ['7V'],\n      razorleaf: ['8V'],\n      razorwind: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M', '7E', '6E', '5E'],\n      roost: ['8E', '8V', '7M', '7E', '6M', '6E', '5T', '5E', '5D', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L6'],\n      secretpower: ['6M', '4M', '3M'],\n      simplebeam: ['8E', '7E', '6E'],\n      skullbash: ['7V'],\n      skyattack: ['8E', '8V', '7T', '6T', '5T'],\n      slash: ['8L40', '8V', '7L19', '7V', '6L19', '5L19', '4L19', '3L41', '3S1'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarblade: ['8M'],\n      steelwing: ['8M', '7M', '7E', '7V', '6M', '6E', '5E', '4M', '4E', '3M', '3E'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      swordsdance: ['8M', '8L45', '8V', '7M', '7L25', '7V', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3T', '3L31', '3S1'],\n      tailwind: ['7T', '6T', '5T'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['8M', '7T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trumpcard: ['7E', '6E', '5E'],\n      twister: ['4T'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      whirlwind: ['7V'],\n      wish: ['3S0'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['3S0']\n    }\n  ],\n  [\n    'farfetchdgalar',\n    {\n      assurance: ['8M'],\n      attract: ['8M'],\n      bodyslam: ['8M'],\n      bravebird: ['8M', '8L65'],\n      brickbreak: ['8M', '8L40'],\n      brutalswing: ['8M', '8L20'],\n      closecombat: ['8M'],\n      counter: ['8E'],\n      covet: ['8E'],\n      curse: ['8E'],\n      defog: ['8L35'],\n      detect: ['8L25'],\n      doubleedge: ['8E'],\n      dualwingbeat: ['8T'],\n      endure: ['8M'],\n      facade: ['8M'],\n      feint: ['8E'],\n      finalgambit: ['8L60'],\n      flail: ['8E'],\n      focusenergy: ['8M'],\n      furycutter: ['8L10'],\n      helpinghand: ['8M'],\n      knockoff: ['8L30'],\n      leafblade: ['8M', '8L55'],\n      leer: ['8L5'],\n      nightslash: ['8E'],\n      peck: ['8L1'],\n      poisonjab: ['8M'],\n      protect: ['8M'],\n      quickattack: ['8E'],\n      quickguard: ['8E'],\n      rest: ['8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      rocksmash: ['8L15'],\n      round: ['8M'],\n      sandattack: ['8L1'],\n      simplebeam: ['8E'],\n      skyattack: ['8E'],\n      slam: ['8L50'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarblade: ['8M'],\n      steelwing: ['8M'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      superpower: ['8M'],\n      swordsdance: ['8M', '8L45'],\n      throatchop: ['8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'sirfetchd',\n    {\n      assurance: ['8M'],\n      attract: ['8M'],\n      bodyslam: ['8M'],\n      bravebird: ['8M', '8L65'],\n      brickbreak: ['8M', '8L40'],\n      brutalswing: ['8M', '8L20', '8S0'],\n      closecombat: ['8M'],\n      coaching: ['8T'],\n      defog: ['8L35'],\n      detect: ['8L25', '8S0'],\n      dualwingbeat: ['8T'],\n      endure: ['8M'],\n      facade: ['8M'],\n      finalgambit: ['8L60'],\n      firstimpression: ['8L1'],\n      focusenergy: ['8M'],\n      furycutter: ['8L1', '8S0'],\n      grassyglide: ['8T'],\n      helpinghand: ['8M'],\n      irondefense: ['8M', '8L0'],\n      knockoff: ['8L30'],\n      leafblade: ['8M', '8L55'],\n      leer: ['8L1'],\n      meteorassault: ['8L70', '8S0'],\n      peck: ['8L1'],\n      poisonjab: ['8M'],\n      protect: ['8M'],\n      rest: ['8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      rocksmash: ['8L15'],\n      round: ['8M'],\n      sandattack: ['8L1'],\n      slam: ['8L50'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarblade: ['8M'],\n      steelwing: ['8M'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      superpower: ['8M'],\n      swordsdance: ['8M', '8L45'],\n      throatchop: ['8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'doduo',\n    {\n      acrobatics: ['9M'],\n      acupressure: ['9L30', '7L33', '6L28', '5L28', '4L28'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L23', '8V', '7L26', '7V', '6L33', '5L37', '4L37', '3L45'],\n      aircutter: ['4T'],\n      assurance: ['9E', '7E', '6E', '5E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '7V', '3T'],\n      bravebird: ['9M', '7E', '6E', '5E', '4E'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      doubleedge: ['9M', '7V', '3T'],\n      doublehit: ['9L19', '7L22', '6L25', '5L32', '4L32'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillpeck: ['9L36', '8V', '7L43', '7V', '6L37', '5L41', '4L41', '3L37'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L39', '7T', '7L47', '7E', '6T', '6L45', '6E', '5T', '5L46', '5E', '4T', '4L46', '4E', '3E'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M'],\n      feintattack: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      flail: ['9E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      fly: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['9L9', '8V', '7L12', '7V', '6L13', '5L14', '4L14', '3L13'],\n      growl: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      haze: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      jumpkick: ['8V', '7L40'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lowkick: ['9M'],\n      lunge: ['9M'],\n      mimic: ['7V', '3T'],\n      mirrormove: ['7E', '6E', '5E', '4E'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      peck: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pluck: ['9L14', '7L19', '6L21', '5M', '4M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L15', '7V', '6L17', '5L19', '4L19', '3L9'],\n      quickattack: ['9L5', '8V', '7L5', '7E', '7V', '6L5', '6E', '5L5', '5E', '4L5', '4E', '3E'],\n      rage: ['8V', '7L8', '7V', '6L9', '5L10', '4L10', '3L25'],\n      raindance: ['9M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '6M', '5T', '5D', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7V'],\n      skyattack: ['9E', '7V', '3T'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['7M', '7V', '6M', '4M', '3M'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '9L33', '8V', '7M', '7L36'],\n      tailwind: ['9M'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['9L43', '8V', '7L50', '6L49', '5L50'],\n      throatchop: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['7V', '3L21'],\n      uproar: ['9M', '9L27', '7T', '7L29', '6T', '6L23', '5T', '5L23', '4T', '4L23', '3L33'],\n      whirlwind: ['9E', '7V'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'dodrio',\n    {\n      acrobatics: ['9M'],\n      acupressure: ['9L30', '7L34', '6L28', '5L28', '4L28'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L23', '8V', '7L26', '7V', '6L35', '5L41', '4L41', '3L60', '3S0'],\n      aircutter: ['4T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '3S0'],\n      bide: ['7V'],\n      bodyslam: ['9M', '7V', '3T'],\n      bravebird: ['9M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      doubleedge: ['9M', '7V', '3T'],\n      doublehit: ['9L19', '7L22'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillpeck: ['9L38', '8V', '7L47', '7V', '6L41', '5L47', '4L47', '3L47', '3S0'],\n      drillrun: ['9M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L43', '7T', '7L52', '6T', '6L53', '5T', '5L54', '4T', '4L54'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M'],\n      fly: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['9L12', '8V', '7L12', '7V', '6L13', '5L14', '4L14', '3L1'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      jumpkick: ['8V', '7L43'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lowkick: ['9M'],\n      lunge: ['9M'],\n      mimic: ['7V', '3T'],\n      mirrormove: ['8V'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      peck: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pluck: ['9L15', '7L19', '6L1', '5M', '5L1', '4M', '4L1'],\n      pounce: ['9M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L15', '7V', '6L17', '5L19', '4L19', '3L1'],\n      quickattack: ['9L1', '8V', '7L1', '6L1', '5L1', '4L1'],\n      rage: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L25'],\n      raindance: ['9M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7V'],\n      skyattack: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['7M', '7V', '6M', '4M', '3M'],\n      stompingtantrum: ['9M', '7T'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['8V'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '9L34', '8V', '7M', '7L38'],\n      tailwind: ['9M'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['9L50', '8V', '7L56', '6L59', '5L60'],\n      throatchop: ['9M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      triattack: ['9L0', '8V', '7L1', '7V', '6L25', '5L34', '4L34', '3L21', '3S0'],\n      uproar: ['9M', '9L26', '7T', '7L29', '6T', '6L23', '5T', '5L23', '4T', '4L23', '3L38'],\n      whirlwind: ['7V'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'seel',\n    {\n      aquajet: ['9L31', '8V', '7L31', '6L31', '5L31', '4L31'],\n      aquaring: ['9L23', '7L23', '6L23', '5L23', '4L23'],\n      aquatail: ['9L43', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L43'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['9L27', '8V', '7L27', '7V', '6L27', '5L27', '4L27', '3L21'],\n      avalanche: ['9M'],\n      belch: ['9E', '7E', '6E'],\n      bide: ['7V'],\n      blizzard: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '7V', '3T'],\n      brine: ['9L33', '7L33', '6L33', '5L33', '4M', '4L33'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      charm: ['9M', '9L7'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      disable: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      dive: ['9L41', '7L41', '6M', '6L41', '5M', '5L41', '4T', '4L41', '3M'],\n      doubleedge: ['9M', '8V', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['9M', '8V', '7T', '6T', '5T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '9L13', '8V', '7L13', '7E', '7V', '6L13', '6E', '5L13', '5E', '4L13', '4E', '3E'],\n      endure: ['9M', '7V', '4M', '3T'],\n      entrainment: ['9E', '7E', '6E'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      growl: ['9L3', '8V', '7L3', '7V', '6L3', '5L3', '4L3', '3L9'],\n      hail: ['7M', '7L53', '6M', '6L53', '5M', '5L53', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4T', '4L1', '3L1'],\n      helpinghand: ['9M', '8V', '3S0'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      horndrill: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      hydropump: ['9M'],\n      icebeam: ['9M', '9L47', '8V', '7M', '7L47', '7V', '6M', '6L47', '5M', '5L47', '4M', '4L47', '3M', '3L41', '3S0'],\n      iceshard: ['9L17', '8V', '7L17', '6L17', '5L17', '4L17'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '7E', '6E', '5E', '5D', '4E', '3E'],\n      icywind: ['9M', '9L11', '7T', '7L11', '7V', '6T', '6L11', '5T', '5L11', '4T', '4L11', '3T', '3L17'],\n      irontail: ['8V', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lick: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      megahorn: ['8V'],\n      mimic: ['7V', '3T'],\n      muddywater: ['9M'],\n      naturalgift: ['4M'],\n      payday: ['8V', '7V'],\n      peck: ['7V'],\n      perishsong: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L21', '8V', '7M', '7L21', '7V', '6M', '6L21', '5M', '5L21', '4M', '4L21', '3M', '3L29'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L51', '7M', '7L51', '7V', '6M', '6L51', '5M', '5L51', '4M', '4L51', '3M', '3L49', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      skullbash: ['7V'],\n      slam: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['9M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '5D', '4M', '3T'],\n      smartstrike: ['9M', '7M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M', '9L53'],\n      spitup: ['9E', '7E', '6E', '5E', '4E'],\n      stockpile: ['9E', '7E', '6E', '5E', '4E'],\n      strength: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9E', '7E', '6E', '5E', '4E'],\n      takedown: ['9M', '9L37', '8V', '7L37', '7V', '6L37', '5L37', '4L37', '3L37'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      tripleaxel: ['9M'],\n      uproar: ['9M'],\n      waterfall: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      watersport: ['7L7', '6L7', '5L7', '4L7'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '7V', '4M']\n    }\n  ],\n  [\n    'dewgong',\n    {\n      alluringvoice: ['9M'],\n      aquajet: ['9L31', '8V', '7L31', '6L31', '5L31', '4L31'],\n      aquaring: ['9L23', '7L23', '6L23', '5L23', '4L23'],\n      aquatail: ['9L49', '7T', '7L49', '6T', '6L49', '5T', '5L49', '4T', '4L43'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['9L27', '8V', '7L27', '7V', '6L27', '5L27', '4L27', '3L1'],\n      avalanche: ['9M', '4M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '7V', '3T'],\n      brine: ['9L33', '7L33', '6L33', '5L33', '4M', '4L33'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      dive: ['9L45', '7L45', '6M', '6L45', '5M', '5L45', '4T', '4L41', '3M'],\n      doubleedge: ['9M', '8V', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['9M', '8V', '7T', '6T', '5T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '9L13', '8V', '7L13', '6L13', '5L13', '4L13'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['8V'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['7M', '7L65', '6M', '6L65', '5M', '5L65', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3L1'],\n      helpinghand: ['9M', '8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      horndrill: ['8V', '7V'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '9L55', '8V', '7M', '7L55', '7V', '6M', '6L55', '5M', '5L55', '4M', '4L47', '3M', '3L51'],\n      iceshard: ['9L17', '8V', '7L17', '6L17', '5L17', '4L17'],\n      icespinner: ['9M'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '9L1', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T', '3L1'],\n      irontail: ['8V', '7T', '6T', '5T'],\n      knockoff: ['9M'],\n      liquidation: ['9M', '7T'],\n      megahorn: ['8V'],\n      mimic: ['7V', '3T'],\n      muddywater: ['9M'],\n      naturalgift: ['4M'],\n      payday: ['8V', '7V'],\n      playrough: ['9M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L21', '8V', '7M', '7L21', '7V', '6M', '6L21', '5M', '5L21', '4M', '4L21', '3M', '3L29'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L61', '7M', '7L61', '7V', '6M', '6L61', '5M', '5L61', '4M', '4L51', '3M', '3L64'],\n      secretpower: ['6M', '4M', '3M'],\n      sheercold: ['9L0', '7L1', '6L34', '5L34', '4L34', '3L34'],\n      signalbeam: ['7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smartstrike: ['9M', '7M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M', '9L65'],\n      strength: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M', '9L39', '8V', '7L39', '7V', '6L39', '5L39', '4L37', '3L42'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      tripleaxel: ['9M'],\n      uproar: ['9M'],\n      waterfall: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '7V', '4M']\n    }\n  ],\n  [\n    'grimer',\n    {\n      acidarmor: ['9L43', '8V', '7L43', '7V', '6L40', '5L39', '4L39', '3L34'],\n      acidspray: ['9M', '9E', '7E', '6E', '5E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      belch: ['9L46', '7L46', '6L46'],\n      bide: ['7V'],\n      bodyslam: ['9M', '7V', '3T'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      dig: ['9M', '8V', '6M', '5M', '4M', '3M'],\n      disable: ['9L12', '8V', '7L12', '7V', '6L12', '5L12', '4L12', '3L8'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dynamicpunch: ['7V', '3T'],\n      endure: ['9M', '7V', '4M', '3T'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '7L26', '6M', '6L26', '5M', '5L28', '4M', '4L28'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gunkshot: ['9M', '9L40', '7T', '7L40', '6T', '6L40', '5T', '5L43', '4T', '4L44'],\n      harden: ['9L4', '8V', '7L4', '7V', '6L4', '5L4', '4L4', '3L4'],\n      haze: ['9M', '9E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      headbutt: ['8V'],\n      helpinghand: ['9M', '8V', '3S0'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '7E', '6E', '5E', '4E', '3E'],\n      incinerate: ['6M', '5M'],\n      infestation: ['7M', '6M'],\n      lick: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      meanlook: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      megadrain: ['8V', '7V'],\n      memento: ['9L48', '7L48', '6L48', '5L48', '4L49', '3L53'],\n      metronome: ['9M'],\n      mimic: ['7V', '3T'],\n      minimize: ['9L21', '8V', '7L21', '7V', '6L18', '5L17', '4L17', '3L19', '3S0'],\n      mudbomb: ['7L18', '6L18', '5L21', '4L23'],\n      mudshot: ['9M', '9L18'],\n      mudslap: ['9M', '9L7', '7L7', '7V', '6L7', '5L7', '4T', '4L7', '3T'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poisongas: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      poisonjab: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      pound: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['7E', '6M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '7E', '6E', '5E'],\n      screech: ['9L37', '8V', '7L37', '7V', '6L32', '5L32', '4L33', '3L26'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8V', '7V', '3T'],\n      shadowball: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      shadowpunch: ['9E', '7E', '6E', '5E', '4E', '3E', '3S0'],\n      shadowsneak: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludge: ['9L15', '8V', '7L15', '7V', '6L15', '5L15', '4L20', '3L13'],\n      sludgebomb: ['9M', '9L29', '8V', '7M', '7L29', '7V', '6M', '6L26', '5M', '5L26', '4M', '4L36', '3M', '3L43', '3S0'],\n      sludgewave: ['9M', '9L32', '7M', '7L32', '6M', '6L32', '5M', '5L37'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      spitup: ['9E', '7E', '6E', '5E', '4E'],\n      stockpile: ['9E', '7E', '6E', '5E', '4E'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9E', '7E', '6E', '5E', '4E'],\n      takedown: ['9M'],\n      taunt: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '9L26', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'grimeralola',\n    {\n      acidarmor: ['9L43', '8V', '7L43'],\n      acidspray: ['9M', '9L15', '7L15'],\n      assurance: ['9E', '7E'],\n      attract: ['7M'],\n      belch: ['9L46', '7L46'],\n      bite: ['9L7', '8V', '7L7', '7S0'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      brutalswing: ['7M'],\n      clearsmog: ['9E', '7E'],\n      confide: ['7M'],\n      crunch: ['9M', '9L32', '8V', '7L32'],\n      curse: ['9M', '9E', '7E'],\n      darkpulse: ['9M'],\n      dig: ['9M', '8V'],\n      disable: ['9L12', '8V', '7L12'],\n      doubleteam: ['7M'],\n      drainpunch: ['9M'],\n      embargo: ['7M'],\n      endure: ['9M'],\n      explosion: ['7M'],\n      facade: ['9M', '8V', '7M'],\n      fireblast: ['9M', '8V', '7M'],\n      firepunch: ['9M', '8V', '7T'],\n      flamethrower: ['9M', '8V', '7M'],\n      fling: ['9M', '7M', '7L26'],\n      frustration: ['7M'],\n      gastroacid: ['7T'],\n      gigadrain: ['9M', '7T'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M', '9L40', '7T', '7L40'],\n      harden: ['9L4', '8V', '7L4', '7S0'],\n      headbutt: ['8V'],\n      helpinghand: ['9M', '8V'],\n      hex: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M'],\n      icepunch: ['9M', '8V', '7T'],\n      imprison: ['9M', '7E'],\n      infestation: ['7M'],\n      knockoff: ['9M', '9L29', '7T', '7L29'],\n      meanlook: ['9E', '7E'],\n      megadrain: ['8V'],\n      memento: ['9L48', '7L48'],\n      metronome: ['9M'],\n      minimize: ['9L21', '8V', '7L21'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      painsplit: ['9M', '7T'],\n      payback: ['7M'],\n      poisonfang: ['9L18', '7L18'],\n      poisongas: ['9L1', '8V', '7L1', '7S0'],\n      poisonjab: ['9M', '8V', '7M'],\n      pound: ['9L1', '8V', '7L1', '7S0'],\n      poweruppunch: ['7E'],\n      protect: ['9M', '8V', '7M'],\n      pursuit: ['7E'],\n      quash: ['7M'],\n      raindance: ['9M', '7M'],\n      recycle: ['9E'],\n      rest: ['9M', '8V', '7M'],\n      return: ['7M'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8V', '7M'],\n      rocktomb: ['9M', '7M'],\n      round: ['7M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '7E'],\n      screech: ['9L37', '8V', '7L37'],\n      selfdestruct: ['8V'],\n      shadowball: ['9M', '8V', '7M'],\n      shadowsneak: ['9E', '7E'],\n      shockwave: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      sludgebomb: ['9M', '8V', '7M'],\n      sludgewave: ['9M', '7M'],\n      snarl: ['9M', '7M'],\n      snore: ['7T'],\n      spite: ['9M', '9E', '7T', '7E'],\n      spitup: ['9E', '7E'],\n      stockpile: ['9E', '7E'],\n      stoneedge: ['9M', '7M'],\n      substitute: ['9M', '8V', '7M'],\n      sunnyday: ['9M', '7M'],\n      swagger: ['7M'],\n      swallow: ['9E', '7E'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8V', '7M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderpunch: ['9M', '8V', '7T'],\n      torment: ['7M'],\n      toxic: ['9M', '9L26', '8V', '7M'],\n      venoshock: ['9M', '7M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'muk',\n    {\n      acidarmor: ['9L46', '8V', '7L46', '7V', '6L43', '5L42', '4L44', '3L34'],\n      acidspray: ['9M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      belch: ['9L52', '7L52', '6L52'],\n      bide: ['7V'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '7V', '3T'],\n      brickbreak: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['9M', '7V'],\n      darkpulse: ['9M', '8V', '7M', '6M', '5T', '4M'],\n      dig: ['9M', '8V', '6M', '5M', '4M', '3M'],\n      disable: ['9L12', '8V', '7L12', '7V', '6L12', '5L12', '4L12', '3L8'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dynamicpunch: ['7V', '3T'],\n      endure: ['9M', '7V', '4M', '3T'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '7L26', '6M', '6L26', '5M', '5L28', '4M', '4L28'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M', '9L40', '7T', '7L40', '6T', '6L40', '5T', '5L49', '4T', '4L54'],\n      harden: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      haze: ['9M', '8V'],\n      headbutt: ['8V'],\n      helpinghand: ['9M', '8V'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['9M'],\n      incinerate: ['6M', '5M'],\n      infestation: ['7M', '6M'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      lunge: ['9M'],\n      megadrain: ['8V', '7V'],\n      memento: ['9L57', '7L57', '6L57', '5L57', '4L65', '3L61'],\n      metronome: ['9M'],\n      mimic: ['7V', '3T'],\n      minimize: ['9L21', '8V', '7L21', '7V', '6L18', '5L17', '4L17', '3L19'],\n      moonblast: ['8V'],\n      mudbomb: ['7L18', '6L18', '5L21', '4L23'],\n      mudshot: ['9M', '9L18'],\n      mudslap: ['9M', '9L1', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3T'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poisongas: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      poisonjab: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      pound: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L37', '8V', '7L37', '7V', '6L32', '5L32', '4L33', '3L26'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8V', '7V', '3T'],\n      shadowball: ['9M', '8V', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludge: ['9L15', '8V', '7L15', '7V', '6L15', '5L15', '4L20', '3L13'],\n      sludgebomb: ['9M', '9L29', '8V', '7M', '7L29', '7V', '6M', '6L26', '5M', '5L26', '4M', '4L36', '3M', '3L47'],\n      sludgewave: ['9M', '9L32', '7M', '7L32', '6M', '6L32', '5M', '5L37'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '9L26', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      venomdrench: ['7L1', '6L38'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'mukalola',\n    {\n      acidarmor: ['9L46', '8V', '7L46'],\n      acidspray: ['9M', '9L15', '7L15'],\n      attract: ['7M'],\n      belch: ['9L52', '7L52'],\n      bite: ['9L1', '8V', '7L1'],\n      block: ['7T'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8V', '7M'],\n      brutalswing: ['7M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L32', '8V', '7L32'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8V', '7M'],\n      dig: ['9M', '8V'],\n      disable: ['9L12', '8V', '7L12'],\n      doubleteam: ['7M'],\n      drainpunch: ['9M'],\n      embargo: ['7M'],\n      endure: ['9M'],\n      explosion: ['7M'],\n      facade: ['9M', '8V', '7M'],\n      fireblast: ['9M', '8V', '7M'],\n      firepunch: ['9M', '8V', '7T'],\n      flamethrower: ['9M', '8V', '7M'],\n      fling: ['9M', '7M', '7L26'],\n      focusblast: ['9M', '7M'],\n      focuspunch: ['9M', '7T'],\n      foulplay: ['8V'],\n      frustration: ['7M'],\n      gastroacid: ['7T'],\n      gigadrain: ['9M', '7T'],\n      gigaimpact: ['9M', '7M'],\n      gunkshot: ['9M', '9L40', '7T', '7L40'],\n      harden: ['9L1', '8V', '7L1'],\n      haze: ['9M', '8V'],\n      headbutt: ['8V'],\n      helpinghand: ['9M', '8V'],\n      hex: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8V', '7M'],\n      icepunch: ['9M', '8V', '7T'],\n      imprison: ['9M'],\n      infestation: ['7M'],\n      knockoff: ['9M', '9L29', '7T', '7L29'],\n      lashout: ['9M'],\n      megadrain: ['8V'],\n      memento: ['9L57', '7L57'],\n      metronome: ['9M'],\n      minimize: ['9L21', '8V', '7L21'],\n      moonblast: ['8V'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      painsplit: ['9M', '7T'],\n      payback: ['7M'],\n      poisonfang: ['9L18', '7L18'],\n      poisongas: ['9L1', '8V', '7L1'],\n      poisonjab: ['9M', '8V', '7M'],\n      pound: ['9L1', '8V', '7L1'],\n      protect: ['9M', '8V', '7M'],\n      quash: ['7M'],\n      raindance: ['9M', '7M'],\n      recycle: ['7T'],\n      rest: ['9M', '8V', '7M'],\n      return: ['7M'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8V', '7M'],\n      rocktomb: ['9M', '7M'],\n      round: ['7M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L37', '8V', '7L37'],\n      selfdestruct: ['8V'],\n      shadowball: ['9M', '8V', '7M'],\n      shockwave: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      sludgebomb: ['9M', '8V', '7M'],\n      sludgewave: ['9M', '7M'],\n      snarl: ['9M', '7M'],\n      snore: ['7T'],\n      spite: ['9M', '7T'],\n      stoneedge: ['9M', '7M'],\n      substitute: ['9M', '8V', '7M'],\n      sunnyday: ['9M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8V', '7M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderpunch: ['9M', '8V', '7T'],\n      torment: ['7M'],\n      toxic: ['9M', '9L26', '8V', '7M'],\n      venomdrench: ['7L1'],\n      venoshock: ['9M', '7M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'shellder',\n    {\n      aquaring: ['9E', '8E', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['9L24', '8L24', '8V', '7L37', '7V', '6L37', '5L37', '4L32', '3L17', '3S0', '3S2'],\n      avalanche: ['9M', '8M', '7E', '6E', '5E'],\n      barrier: ['7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '7L44', '6L44', '5L44', '4M', '4L44'],\n      bubblebeam: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      clamp: ['8V', '7L25', '7V', '6L25', '5L25', '4L25', '3L41'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L48', '8M', '8L48', '8V', '7L61', '6L61', '5L61'],\n      icebeam: ['9M', '9L40', '8M', '8L40', '8V', '7M', '7L52', '7V', '6M', '6L52', '5M', '5L52', '4M', '4L49', '3M', '3L49'],\n      iceshard: ['9L8', '8L8', '8V', '7L28', '6L28', '5L28', '4L28'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M', '7L13', '7E', '6L13', '6E', '5L13', '5E', '4L13', '4E', '3L8', '3E', '3S0', '3S1'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '5D', '4T', '3T'],\n      irondefense: ['9M', '9L36', '8M', '8L36', '7T', '7L49', '6T', '6L49', '5T', '5L49', '4T', '4L40'],\n      leer: ['9L12', '8L12', '8V', '7L20', '7V', '6L20', '5L20', '4L20', '3L33'],\n      lifedew: ['9E', '8E'],\n      liquidation: ['9M', '8M', '7T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      protect: ['9M', '9L28', '8M', '8L28', '8V', '7M', '7L16', '7V', '6M', '6L16', '5M', '5L16', '4M', '4L16', '3M', '3L25'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rapidspin: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      razorshell: ['9L32', '8M', '8L32', '7L32', '6L32', '5L32'],\n      reflect: ['8V', '7V'],\n      refresh: ['3S2'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      shellsmash: ['9L44', '8L44', '8V', '7L56', '6L56', '5L56'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      spikes: ['9M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      supersonic: ['9L20', '8L20', '8V', '7L8', '7V', '6L8', '5L8', '4L8', '3L9', '3S0'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S2'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      takedown: ['9M', '7E', '7V', '6E', '5E', '4E', '3E', '3S2'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      triattack: ['8M', '8V', '7V'],\n      twineedle: ['7E', '6E', '5E'],\n      waterfall: ['9M'],\n      watergun: ['9L1', '8L1', '8V', '7L1', '7V'],\n      waterpulse: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      whirlpool: ['9M', '9L16', '8M', '8L16', '7L40', '7V', '6L40', '5L40', '4M', '4L37'],\n      withdraw: ['9L4', '8L4', '8V', '7L4', '7V', '6L4', '5L4', '5D', '4L4', '3L1', '3S0', '3S1']\n    }\n  ],\n  [\n    'cloyster',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      avalanche: ['9M', '8M', '4M'],\n      barrier: ['8V'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M'],\n      brine: ['8M', '4M'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      clamp: ['7V'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '5S0', '4M', '3M'],\n      hydropump: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      iceshard: ['9L1', '8L1'],\n      icespinner: ['9M'],\n      iciclecrash: ['9L1', '8L1', '7L50', '6L50', '5L52'],\n      iciclespear: ['9M', '9L0', '8M', '8L0', '5S0'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T', '4T'],\n      leer: ['9L1', '8L1', '8V'],\n      lightscreen: ['9M', '8M'],\n      liquidation: ['9M', '8M', '7T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      pinmissile: ['8M'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      protect: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorshell: ['9L5', '8M', '8L1', '5S0'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '8M', '5S0'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      shellsmash: ['9L1', '8L1', '7L1', '6L1'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      spikecannon: ['8V', '7L13', '7V', '6L13', '5L13', '4L40', '3L41'],\n      spikes: ['9M', '9L1', '8M', '8L1', '7L28', '7V', '6L28', '5L28', '4L28', '3L33'],\n      steelroller: ['8T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      supersonic: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '8V'],\n      takedown: ['9M', '7V'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      triattack: ['8M', '8V', '7V'],\n      twineedle: ['8V'],\n      waterfall: ['9M'],\n      watergun: ['9L1', '8L1', '8V', '7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '9L1', '8M', '8L1', '7V', '4M'],\n      withdraw: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'gastly',\n    {\n      acidspray: ['9M'],\n      allyswitch: ['8M', '7T'],\n      astonish: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      captivate: ['4M'],\n      clearsmog: ['9E', '8E', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L1', '8L1', '8V', '7L19', '7V', '6L19', '5L19', '4L19', '3L21'],\n      corrosivegas: ['8T'],\n      curse: ['9M', '9L20', '8L20', '7L12', '7V', '6L12', '5L12', '4L12', '3L13'],\n      darkpulse: ['9M', '9L36', '8M', '8L36', '8V', '7M', '7L36', '6M', '6L36', '5T', '5L36', '4M', '4L36'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      destinybond: ['9L44', '8L44', '7L40', '7V', '6L40', '5L40', '4L40', '3L33'],\n      disable: ['9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['9L48', '8L48', '8V', '7M', '7L33', '7V', '6M', '6L33', '5M', '5L33', '4M', '4L33', '3T', '3L28'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      grudge: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      gunkshot: ['9M'],\n      haze: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V'],\n      hex: ['9M', '9L24', '8M', '8L24', '7L43', '6L43', '5L43'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['9L4', '8L4', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      icepunch: ['9M', '8M', '8V', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M'],\n      infestation: ['7M', '6M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      lick: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      meanlook: ['9L8', '8L8', '7L8', '7V', '6L8', '5L8', '4L8', '3L13'],\n      megadrain: ['8V', '7V'],\n      mimic: ['7V', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightmare: ['7L47', '7V', '6L47', '5L47', '4L43', '3T', '3L41'],\n      nightshade: ['9M', '9L28', '8L28', '8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L16'],\n      ominouswind: ['4T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['9L12', '8M', '8L12', '7M', '7L26', '6M', '6L26', '5M', '5L26', '4M', '4L26'],\n      perishsong: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      poisongas: ['8V'],\n      poisonjab: ['9M', '8M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psywave: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflecttype: ['9E', '8E', '7E', '6E'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M', '7E', '6E', '5E'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      shadowball: ['9M', '9L40', '8M', '8L40', '8V', '7M', '7L29', '7V', '6M', '6L29', '5M', '5L29', '4M', '4L29', '3M', '3L36'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M', '5D'],\n      smog: ['9E', '8E', '8V', '7E', '6E', '5E'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '9L16', '8L16', '7T', '7L5', '7V', '6T', '6L5', '5T', '5L5', '4T', '4L5', '3L8'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L32', '8L32', '8V', '7L22', '6L22', '5L22', '4T', '4L22'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      taunt: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8V', '7V'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '9E', '8E', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '4E', '3E'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'haunter',\n    {\n      acidspray: ['9M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L1', '8L1', '8V', '7L19', '7V', '6L19', '5L19', '5S0', '4L19', '3L21'],\n      corrosivegas: ['8T'],\n      curse: ['9M', '9L20', '8L20', '7L12', '7V', '6L12', '5L12', '4L12', '3L13'],\n      darkpulse: ['9M', '9L42', '8M', '8L42', '8V', '7M', '7L44', '6M', '6L44', '5T', '5L44', '4M', '4L44'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      destinybond: ['9L54', '8L54', '7L50', '7V', '6L50', '5L50', '4L50', '3L39'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['9L60', '8L60', '8V', '7M', '7L39', '7V', '6M', '6L39', '5M', '5L39', '4M', '4L39', '3T', '3L31'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gunkshot: ['9M'],\n      haze: ['9M'],\n      headbutt: ['8V'],\n      hex: ['9M', '9L24', '8M', '8L24', '7L55', '6L55', '5L55'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      icepunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M'],\n      infestation: ['7M', '6M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      lick: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      meanlook: ['9L1', '8L1', '7L8', '7V', '6L8', '5L8', '4L8', '3L13'],\n      megadrain: ['8V', '7V'],\n      metronome: ['9M'],\n      mimic: ['7V', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightmare: ['7L61', '7V', '6L61', '5L61', '4L55', '3T', '3L53'],\n      nightshade: ['9M', '9L30', '8L30', '8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L16'],\n      ominouswind: ['4T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['9L12', '8M', '8L12', '7M', '7L28', '6M', '6L28', '5M', '5L28', '5S0', '4M', '4L28'],\n      phantomforce: ['9M'],\n      poisongas: ['8V'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      shadowball: ['9M', '9L48', '8M', '8L48', '8V', '7M', '7L33', '7V', '6M', '6L33', '5M', '5L33', '4M', '4L33', '3M', '3L45'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowpunch: ['9L0', '8L0', '7L1', '6L25', '5L25', '5S0', '4L25', '3L25'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M'],\n      smog: ['8V'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '9L16', '8L16', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L36', '8L36', '8V', '7L22', '6L22', '5L22', '5S0', '4T', '4L22'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      taunt: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8V', '7V'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'gengar',\n    {\n      acidspray: ['9M'],\n      allyswitch: ['8M', '7T'],\n      astonish: ['6S4'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L1', '8L1', '8V', '7L19', '7V', '6L19', '6S1', '6S2', '6S4', '5L19', '4L19', '3L21', '3S0'],\n      corrosivegas: ['8T'],\n      counter: ['7V', '3T'],\n      curse: ['9M', '9L20', '8L20', '7L12', '7V', '6L12', '5L12', '4L12', '3L13', '3S0'],\n      darkpulse: ['9M', '9L42', '8M', '8L42', '8V', '7M', '7L44', '6M', '6L44', '5T', '5L44', '4M', '4L44'],\n      dazzlinggleam: ['9M', '8M', '8V', '8S7', '7M', '6M'],\n      destinybond: ['9L54', '8L54', '7L50', '7V', '6L50', '6S3', '5L50', '4L50', '3L39'],\n      disable: ['8V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['9L60', '8L60', '8V', '7M', '7L39', '7V', '6M', '6L39', '5M', '5L39', '4M', '4L39', '3T', '3L31'],\n      dynamicpunch: ['7V', '3T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M'],\n      haze: ['9M', '8V'],\n      headbutt: ['8V', '7V', '4T'],\n      hex: ['9M', '9L24', '8M', '8L24', '7L55', '6L55', '5L55'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '6S5', '6S6', '5M', '4M', '3M'],\n      hypnosis: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '6S5', '6S6', '5L1', '4L1', '3L1'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '8M'],\n      infestation: ['7M', '6M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lick: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      meanlook: ['9L1', '8L1', '7L8', '7V', '6L8', '6S5', '6S6', '5L8', '4L8', '3L13'],\n      megadrain: ['8V', '7V'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M', '8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightmare: ['7L61', '7V', '6L61', '5L61', '4L55', '3T', '3L53'],\n      nightshade: ['9M', '9L30', '8L30', '8V', '7L15', '7V', '6L15', '6S2', '5L15', '4L15', '3L16', '3S0'],\n      ominouswind: ['4T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['9L12', '8M', '8L12', '7M', '7L28', '6M', '6L28', '5M', '5L28', '4M', '4L28'],\n      perishsong: ['9L1', '8L1'],\n      phantomforce: ['9M', '8M'],\n      poisongas: ['8V'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      poltergeist: ['9M', '8T'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '6S1', '6S5', '6S6', '5M', '4M', '3M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflecttype: ['9L1', '8L1'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      shadowball: ['9M', '9L48', '8M', '8L48', '8V', '8S7', '7M', '7L33', '7V', '6M', '6L33', '6S3', '6S4', '5M', '5L33', '4M', '4L33', '3M', '3L45'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowpunch: ['9L1', '8L1', '7L1', '6L25', '6S1', '6S2', '5L25', '4L25', '3L25'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      skittersmack: ['9M', '8T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '8S7', '7M', '6M', '6S3', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M', '6S4'],\n      smog: ['8V'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '9L16', '8L16', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1', '3S0'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L36', '8L36', '8V', '7L22', '6L22', '6S1', '6S2', '5L22', '4T', '4L22'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      taunt: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '8V', '8S7', '7M', '6M', '6S3', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'onix',\n    {\n      ancientpower: ['4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['8L1', '8V', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '5D', '4L1', '3L8'],\n      block: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '7V', '3T'],\n      breakingswipe: ['8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['8L16', '7L4', '7V', '6L4', '5L4', '4L38'],\n      defensecurl: ['8E', '7E', '6E', '5E', '4E'],\n      dig: ['8M', '8L44', '8V', '7L43', '7V', '6M', '6L43', '5M', '5L43', '4M', '3M'],\n      doubleedge: ['8L56', '8V', '7L49', '7V', '6L49', '5L49', '4L46', '3T', '3L56'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['8L12', '7L25', '6L25', '5L25', '4L33', '3L30'],\n      dragondance: ['8M'],\n      dragonpulse: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      dragontail: ['8E', '8V', '7M', '6M', '5M'],\n      drillrun: ['8M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['7V'],\n      flail: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      flashcannon: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gyroball: ['8M', '7M', '7L20', '6M', '6L20', '5M', '4M'],\n      harden: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L19'],\n      headbutt: ['8V', '7V', '4T'],\n      headsmash: ['8E'],\n      heavyslam: ['8M', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      ironhead: ['8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '8L48', '8V', '7T', '7L40', '7V', '6T', '6L40', '5T', '5L40', '4M', '4L38', '3M', '3L45'],\n      meteorbeam: ['8T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      rage: ['8V', '7L13', '7V', '6L13', '5L10', '4L14', '3L23'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M', '7E', '6E', '5E', '4E'],\n      rockclimb: ['7E', '6E', '5E', '5D', '4M'],\n      rockpolish: ['8L8', '7M', '7L19', '6M', '6L19', '5M', '5L19', '4M', '4L30'],\n      rockslide: ['8M', '8L20', '8V', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8L1', '8V', '7L7', '7V', '6L7', '5L7', '4L9', '3L12'],\n      rocktomb: ['8M', '7M', '7L10', '6M', '6L10', '5M', '5L13', '4M', '4L17', '3M'],\n      rollout: ['8E', '7E', '6E', '5E', '4T', '4E'],\n      rototiller: ['7E', '6E'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '8L40', '7M', '7L52', '7V', '6M', '6L52', '5M', '5L25', '4M', '4L22', '3M', '3L33'],\n      sandtomb: ['8M', '8L28', '7L37', '6L37', '5L37', '4L41', '3L49'],\n      scaryface: ['8M'],\n      scorchingsands: ['8T'],\n      screech: ['8M', '8L24', '8V', '7L31', '7V', '6L31', '5L6', '4L6', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      skullbash: ['7V'],\n      slam: ['8L36', '8V', '7L28', '7V', '6L28', '5L28', '4L25', '3L37'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['8L4', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8L32', '8V', '7T', '7L16', '7E', '6T', '6L16', '6E', '5T', '5L16', '5E', '5D', '4M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '8L52', '7M', '7L46', '6M', '6L46', '5M', '5L46', '4M', '4L49'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      wideguard: ['8E', '7E']\n    }\n  ],\n  [\n    'steelix',\n    {\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      autotomize: ['8L8', '7L19', '6L19', '5L19'],\n      bind: ['8L1', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4L1', '3L8'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '3T'],\n      breakingswipe: ['8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L1', '7L37', '7V', '6L37', '5L37', '4L41', '3L49'],\n      curse: ['8L16', '7L4', '7V', '6L4', '5L4', '4L38'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      darkpulse: ['8M', '7M', '6M', '5T', '4M'],\n      defensecurl: ['7V', '3T'],\n      dig: ['8M', '8L44', '7L43', '7V', '6M', '6L43', '5M', '5L43', '4M', '3M'],\n      doubleedge: ['8L56', '7L49', '6L49', '5L49', '4L46', '3T', '3L56'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['8L12', '7L25', '7V', '6L25', '5L25', '4L33', '3L30'],\n      dragondance: ['8M'],\n      dragonpulse: ['8M', '7T', '6T', '5T', '4M'],\n      dragontail: ['7M', '6M', '5M'],\n      drillrun: ['8M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      flashcannon: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      gyroball: ['8M', '7M', '7L20', '6M', '6L20', '5M', '4M'],\n      harden: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L19'],\n      headbutt: ['7V', '4T'],\n      heavyslam: ['8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icefang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      irondefense: ['8M'],\n      ironhead: ['8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '8L48', '7T', '7L40', '7V', '6T', '6L40', '5T', '5L40', '4M', '4L38', '3M', '3L45'],\n      magnetrise: ['8L60', '7T', '6T', '5T', '4T'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['8M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      rage: ['7L13', '7V', '6L13', '5L10', '4L14', '3L23'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockclimb: ['4M'],\n      rockpolish: ['8L1', '7M', '6M', '5M', '4M', '4L30'],\n      rockslide: ['8M', '8L20', '7M', '7L34', '6M', '6L34', '5M', '5L34', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8L1', '7L7', '7V', '6L7', '5L7', '4L9', '3L12'],\n      rocktomb: ['8M', '7M', '7L10', '6M', '6L10', '5M', '5L13', '4M', '4L17', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '8L40', '7M', '7L52', '7V', '6M', '6L52', '5M', '5L25', '4M', '4L22', '3M', '3L33'],\n      sandtomb: ['8M', '8L28'],\n      scaryface: ['8M'],\n      scorchingsands: ['8T'],\n      screech: ['8M', '8L24', '7L31', '7V', '6L31', '5L6', '4L6', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      slam: ['8L36', '7L28', '7V', '6L28', '5L28', '4L25', '3L37'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['8L4', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8L32', '7T', '7L16', '6T', '6L16', '5T', '5L16', '4M'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '8L52', '7M', '7L46', '6M', '6L46', '5M', '5L46', '4M', '4L49'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      taunt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderfang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T']\n    }\n  ],\n  [\n    'drowzee',\n    {\n      allyswitch: ['7T'],\n      assist: ['7E', '6E', '5E', '4E', '3E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      bellydrum: ['3S0'],\n      bide: ['7V'],\n      bodyslam: ['9M', '7V', '3T'],\n      brickbreak: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      calmmind: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L9', '8V', '7L9', '7V', '6L9', '5L9', '4L9', '3L11'],\n      counter: ['7V', '3T'],\n      curse: ['9M', '7V'],\n      dazzlinggleam: ['9M', '8V', '7M', '6M'],\n      disable: ['9L5', '8V', '7L5', '7V', '6L5', '5L5', '4L7', '3L7'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M'],\n      drainpunch: ['9M', '7T', '6T', '5T', '5D', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      expandingforce: ['9M'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '9E', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flatter: ['9E', '7E', '6E', '5E', '4E'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L49', '7L61', '7V', '6L61', '5L61', '4L53', '3L45'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      guardswap: ['9E', '7E', '6E', '5E', '4E'],\n      haze: ['9M'],\n      headbutt: ['9L13', '8V', '7L13', '7V', '6L13', '5L13', '4T', '4L15', '3L17'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      icepunch: ['9M', '9E', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      imprison: ['9M'],\n      knockoff: ['9M'],\n      lightscreen: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['7T', '6T', '5T'],\n      meditate: ['8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L27'],\n      megakick: ['7V', '3T'],\n      megapunch: ['7V', '3T'],\n      metronome: ['9M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      nastyplot: ['9M', '9L41', '8V', '7L53', '7E', '6L53', '6E', '5L53', '5E', '4L43', '4E'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['9M'],\n      poisongas: ['9L17', '8V', '7L17', '7V', '6L17', '5L17', '4L18', '3L21'],\n      pound: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      powersplit: ['9E', '7E'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L21', '8V', '7L25', '6L25', '5L25', '4L26'],\n      psychic: ['9M', '9L37', '8V', '7M', '7L49', '7V', '6M', '6L49', '5M', '5L49', '4M', '4L40', '3M', '3L31'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '7E'],\n      psychocut: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      psychup: ['9M', '9L25', '7M', '7L33', '7V', '6M', '6L33', '5M', '5L33', '4M', '4L29', '3T', '3L37'],\n      psyshock: ['9M', '9L45', '7M', '7L57', '6M', '6L57', '5M', '5L57'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '3T'],\n      storedpower: ['9M'],\n      submission: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['9L33', '7M', '7L45', '7V', '6M', '6L45', '5M', '5L45', '4M', '4L37', '3T', '3L41'],\n      swift: ['9M'],\n      synchronoise: ['7L37', '6L37', '5L37'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '9E', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      thunderwave: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      triattack: ['8V', '7V'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      wakeupslap: ['7L29'],\n      wish: ['3S0'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '9L29', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L50']\n    }\n  ],\n  [\n    'hypno',\n    {\n      allyswitch: ['7T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['8V'],\n      batonpass: ['9M', '3S0'],\n      bide: ['7V'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '7V', '3T'],\n      brickbreak: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      calmmind: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      counter: ['7V', '3T'],\n      curse: ['9M', '7V'],\n      dazzlinggleam: ['9M', '8V', '7M', '6M'],\n      disable: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M'],\n      drainpunch: ['9M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      expandingforce: ['9M'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L56', '7L1', '7V', '6L1', '5L61', '4L69', '3L57'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      haze: ['9M'],\n      headbutt: ['9L13', '8V', '7L13', '7V', '6L13', '5L13', '4T', '4L15', '3L17'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      icepunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['9M'],\n      knockoff: ['9M'],\n      lightscreen: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['7T', '6T', '5T'],\n      meditate: ['8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L29', '3S0'],\n      megakick: ['7V', '3T'],\n      megapunch: ['7V', '3T'],\n      metronome: ['9M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      nastyplot: ['9M', '9L47', '8V', '7L1', '6L1', '5L53', '4L55'],\n      naturalgift: ['4M'],\n      nightmare: ['7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L1'],\n      nightshade: ['9M'],\n      poisongas: ['9L17', '8V', '7L17', '7V', '6L17', '5L17', '4L18', '3L21'],\n      pound: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L21', '8V', '7L25', '6L25', '5L25', '4L28'],\n      psychic: ['9M', '9L42', '8V', '7M', '7L49', '7V', '6M', '6L49', '5M', '5L49', '4M', '4L50', '3M', '3L35', '3S0'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '9L25', '7M', '7L33', '7V', '6M', '6L33', '5M', '5L33', '4M', '4L33', '3T', '3L43'],\n      psyshock: ['9M', '9L51', '7M', '7L57', '6M', '6L57', '5M', '5L57'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '3T'],\n      storedpower: ['9M'],\n      submission: ['7V'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['9L37', '7M', '7L45', '7V', '6M', '6L45', '5M', '5L45', '4M', '4L45', '3T', '3L49'],\n      swift: ['9M'],\n      switcheroo: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      synchronoise: ['7L37', '6L37', '5L37'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      triattack: ['8V', '7V'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      wakeupslap: ['7L29'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '9L32', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L64']\n    }\n  ],\n  [\n    'krabby',\n    {\n      agility: ['8M', '7E', '6E', '5E', '4E'],\n      allyswitch: ['8M', '7T', '7E', '6E'],\n      amnesia: ['8M', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      ancientpower: ['8E', '7E', '6E', '5E', '4T', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7E', '7V', '6E', '5E'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      brine: ['8M', '7L39', '6L39', '5L39', '4M', '4L39'],\n      bubble: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bubblebeam: ['8L20', '8V', '7L15', '7V', '6L15', '5L15', '4L15'],\n      captivate: ['4M'],\n      chipaway: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      crabhammer: ['8L44', '8V', '7L41', '7V', '6L41', '5L41', '4L41', '3L45'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dig: ['8M', '8V', '7V', '6M', '5M', '4M', '4E', '3M', '3E'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '7M', '6M', '5M', '4M'],\n      flail: ['8L29', '7L45', '7E', '7V', '6L45', '6E', '5L45', '5E', '4L45', '4E', '3L49', '3E'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      guillotine: ['8L48', '8V', '7L31', '7V', '6L31', '5L31', '4L31', '3L34'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hammerarm: ['8E'],\n      harden: ['8L4', '8V', '7L11', '7V', '6L11', '5L11', '4L11', '3L16'],\n      haze: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      leer: ['8L1', '8V', '7L9', '7V', '6L9', '5L9', '4L9', '3L5'],\n      liquidation: ['8M', '7T'],\n      metalclaw: ['8L8', '7L21', '6L21', '5L21', '4L21'],\n      mimic: ['7V', '3T'],\n      mudshot: ['8M', '8L12', '7L19', '6L19', '5L19', '4L19', '3L23'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      nightslash: ['8E'],\n      protect: ['8M', '8L16', '8V', '7M', '7L29', '7V', '6M', '6L29', '5M', '5L29', '4M', '4L29', '3M', '3L38'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorshell: ['8M', '8L32'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '5D', '4M', '3M'],\n      slam: ['8L36', '8V', '7L35', '7E', '7V', '6L35', '6E', '5L35', '5E', '4L35', '4E', '3E'],\n      slash: ['8E'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stomp: ['8L24', '8V', '7L25', '7V', '6L25', '5L25', '4L25', '3L27'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['8M', '8L40', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      tickle: ['7E', '6E', '5E', '4E'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      visegrip: ['8V', '7L5', '7V', '6L5', '5L5', '5D', '4L5', '3L12'],\n      watergun: ['8L1', '7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '7V', '4M'],\n      xscissor: ['8M', '8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'kingler',\n    {\n      agility: ['8M', '8V'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['8M', '8V'],\n      ancientpower: ['4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      brine: ['8M', '7L51', '6L51', '5L51', '4M', '4L51'],\n      brutalswing: ['8M'],\n      bubble: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bubblebeam: ['8L20', '8V', '7L15', '7V', '6L15', '5L15', '4L15'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crabhammer: ['8L54', '8V', '7L56', '7V', '6L56', '5L56', '4L56', '3L57'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '7M', '6M', '5M', '4M'],\n      flail: ['8L31', '7L63', '6L63', '5L63', '4L63', '3L65'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      guillotine: ['8L60', '8V', '7L37', '7V', '6L37', '5L37', '4L37', '3L38'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hammerarm: ['8L1'],\n      harden: ['8L1', '8V', '7L11', '7V', '6L11', '5L11', '4L11', '3L1'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      leer: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L9', '3L1'],\n      liquidation: ['8M', '7T'],\n      metalclaw: ['8L1', '7L21', '6L21', '5L21', '4L21', '3L1'],\n      mimic: ['7V', '3T'],\n      mudshot: ['8M', '8L12', '7L19', '6L19', '5L19', '4L19', '3L23'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      protect: ['8M', '8L16', '8V', '7M', '7L32', '7V', '6M', '6L32', '5M', '5L32', '4M', '4L32', '3M', '3L42'],\n      quash: ['7M', '6M', '5M'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorshell: ['8M', '8L36'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      slam: ['8L42', '8V', '7L44', '6L44', '5L44', '4L44'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stomp: ['8L24', '8V', '7L25', '7V', '6L25', '5L25', '4L25', '3L27'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['8M', '8L48', '7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      visegrip: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      watergun: ['8L1', '7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '7V', '4M'],\n      wideguard: ['8L1', '7L1', '6L1', '5L1'],\n      xscissor: ['8M', '8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'voltorb',\n    {\n      agility: ['9M'],\n      bide: ['7V'],\n      charge: ['9M', '9L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      chargebeam: ['9M', '9L16', '7M', '7L16', '6M', '6L16', '5M', '5L22', '4M', '4L26'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      discharge: ['9L37', '7L37', '6L37'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['9M', '9L6', '7L6', '6L6'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L22', '7L22', '6L22', '5L29'],\n      electroweb: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      explosion: ['9L41', '8V', '7M', '7L41', '7V', '6M', '6L41', '5M', '5L47', '4M', '4L43', '3T', '3L46'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gyroball: ['9M', '9L46', '7M', '7L46', '6M', '6L43', '5M', '5L43', '4M', '4L40'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      lightscreen: ['9M', '9L29', '8V', '7M', '7L29', '7V', '6M', '6L26', '5M', '5L26', '4M', '4L22', '3M', '3L37'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magnetrise: ['9L34', '7T', '7L34', '6T', '6L34', '5T', '5L40', '4T', '4L36'],\n      metalsound: ['9M', '9E'],\n      mimic: ['7V', '3T'],\n      mirrorcoat: ['9L50', '8V', '7L48', '7V', '6L48', '5L50', '4L47', '3L49', '3S0'],\n      naturalgift: ['5D', '4M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['9E'],\n      reflect: ['8V', '7V'],\n      refresh: ['3S0'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rollout: ['9L11', '7L11', '7V', '6L11', '5L15', '4T', '4L15', '3T', '3L32'],\n      round: ['7M', '6M', '5M'],\n      screech: ['9L13', '8V', '7L13', '7V', '6L13', '5L19', '4L19', '3L8'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['9L26', '8V', '7L26', '7V', '6L26', '5L33', '4L29', '3T', '3L27'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '5D', '4T'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      sonicboom: ['8V', '7L4', '7V', '6L4', '5L8', '4L8', '3L15'],\n      spark: ['9L9', '7L9', '6L9', '5L12', '4L12', '3L21', '3S0'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L20', '8V', '7L20', '7V', '6L20', '5L36', '4T', '4L33', '3T', '3L42', '3S0'],\n      tackle: ['9L1', '8V', '7L1', '7V', '6L1', '5L5', '4L5', '3L1'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thundershock: ['9L4', '8V'],\n      thunderwave: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'voltorbhisui',\n    {\n      agility: ['9M'],\n      bulletseed: ['9M', '9L9'],\n      charge: ['9M', '9L1'],\n      chargebeam: ['9M', '9L16'],\n      discharge: ['9L34'],\n      doubleedge: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L22'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L29'],\n      explosion: ['9L41'],\n      facade: ['9M'],\n      foulplay: ['9M'],\n      gigadrain: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '9L50'],\n      gyroball: ['9M', '9L46'],\n      leafstorm: ['9M'],\n      leechseed: ['9E'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      recycle: ['9E'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      rollout: ['9L11'],\n      screech: ['9L13'],\n      seedbomb: ['9M', '9L34'],\n      selfdestruct: ['9L26'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      stunspore: ['9L6'],\n      substitute: ['9M'],\n      swift: ['9M', '9L20'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thundershock: ['9L4'],\n      thunderwave: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M'],\n      worryseed: ['9E']\n    }\n  ],\n  [\n    'electrode',\n    {\n      agility: ['9M'],\n      bide: ['7V'],\n      charge: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      chargebeam: ['9M', '9L16', '7M', '7L16', '6M', '6L16', '5M', '5L22', '4M', '4L26'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      discharge: ['9L41', '7L41', '6L41'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['9M', '9L1', '7L1', '6L6'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L22', '7L22', '6L22', '5L29'],\n      electroweb: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      explosion: ['9L47', '8V', '7M', '7L47', '7V', '6M', '6L47', '5M', '5L57', '4M', '4L51', '3T', '3L54'],\n      facade: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gyroball: ['9M', '9L54', '7M', '7L54', '6M', '6L51', '5M', '5L51', '4M', '4L46'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      lightscreen: ['9M', '9L29', '8V', '7M', '7L29', '7V', '6M', '6L26', '5M', '5L26', '4M', '4L22', '3M', '3L41'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magneticflux: ['9L1', '7L1', '6L1'],\n      magnetrise: ['9L36', '7T', '7L36', '6T', '6L36', '5T', '5L46', '4T', '4L40'],\n      metalsound: ['9M'],\n      mimic: ['7V', '3T'],\n      mirrorcoat: ['9L58', '8V', '7L58', '7V', '6L58', '5L62', '4L57', '3L59'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rollout: ['9L11', '7L11', '7V', '6L11', '5L15', '4T', '4L15', '3T', '3L34'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['9L13', '8V', '7L13', '7V', '6L13', '5L19', '4L19', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['9L26', '8V', '7L26', '7V', '6L26', '5L35', '4L29', '3T', '3L27'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      sonicboom: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      spark: ['9L9', '7L9', '6L1', '5L1', '4L1', '3L21'],\n      substitute: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L20', '8V', '7L20', '7V', '6L20', '5L40', '4T', '4L35', '3T', '3L48'],\n      tackle: ['9L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thundershock: ['9L1', '8V'],\n      thunderwave: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'electrodehisui',\n    {\n      agility: ['9M'],\n      bulletseed: ['9M', '9L9'],\n      charge: ['9M', '9L1'],\n      chargebeam: ['9M', '9L16'],\n      chloroblast: ['9L0'],\n      curse: ['9M'],\n      discharge: ['9L34'],\n      doubleedge: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L22'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L29'],\n      explosion: ['9L41'],\n      facade: ['9M'],\n      foulplay: ['9M'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '9L50'],\n      gyroball: ['9M', '9L46'],\n      hyperbeam: ['9M'],\n      leafstorm: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      rollout: ['9L11'],\n      scaryface: ['9M'],\n      screech: ['9L13'],\n      seedbomb: ['9M', '9L34'],\n      selfdestruct: ['9L26'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      stunspore: ['9L6'],\n      substitute: ['9M'],\n      supercellslam: ['9M'],\n      swift: ['9M', '9L20'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thundershock: ['9L4'],\n      thunderwave: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M']\n    }\n  ],\n  [\n    'exeggcute',\n    {\n      absorb: ['9L1', '8L1'],\n      ancientpower: ['9E', '8E', '7E', '7V', '6E', '5E', '4T', '4E', '3E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrage: ['8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      bestow: ['7L50', '6L50', '5L53'],\n      bide: ['7V'],\n      block: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      bulletseed: ['9M', '9L30', '8M', '8L30', '7L17', '6L17', '5L17', '4M', '4L17', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L20', '8L20', '8V', '7L27', '7V', '6L27', '5L27', '4L27', '3L19'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      eggbomb: ['7V'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      extrasensory: ['9L40', '8L40', '7L47', '6L47', '5L47'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '9L35', '8M', '8L35', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '5D', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M', '7E', '6E'],\n      gravity: ['7T', '6T', '5T', '4T'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      imprison: ['9M'],\n      infestation: ['7M', '6M'],\n      ingrain: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      leafstorm: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      leechseed: ['9L10', '8L10', '8V', '7L11', '7V', '6L11', '5L11', '4L11', '3L13'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7E', '6E', '5E', '4E'],\n      megadrain: ['9L15', '8L15', '8V', '7V'],\n      mimic: ['7V', '3T'],\n      moonlight: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      naturalgift: ['7L37', '7E', '6L37', '6E', '5L37', '5E', '4M', '4L37'],\n      naturepower: ['7M', '7E', '6M', '6E', '5E', '4E'],\n      nightmare: ['7V', '3T'],\n      poisonpowder: ['9E', '8E', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L31'],\n      powerswap: ['8M', '7E', '6E', '5E', '4E'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '8V'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '5L47', '4M', '4L47', '3M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      psyshock: ['9M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      reflect: ['9M', '9L5', '8M', '8L5', '8V', '7M', '7L7', '7V', '6M', '6L7', '5M', '5L7', '4M', '4L7', '4E', '3M', '3L7', '3E'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      skillswap: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      sleeppowder: ['9E', '8E', '8V', '7L23', '7V', '6L23', '5L23', '4L23', '3L37'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L55', '8M', '8L55', '8V', '7M', '7L43', '7V', '6M', '6L43', '5M', '5L43', '4M', '4L43', '3M', '3L43'],\n      storedpower: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      stunspore: ['9E', '8E', '8V', '7L19', '7V', '6L19', '5L19', '4L19', '3L25'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['3S0'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['9L25', '8L25', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E'],\n      takedown: ['7V'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['9M'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      uproar: ['9M', '9L45', '8M', '8L45', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      wish: ['3S0'],\n      worryseed: ['9L50', '8L50', '7T', '7L33', '6T', '6L33', '5T', '5L33', '4T', '4L33'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'exeggutor',\n    {\n      absorb: ['9L1', '8L1'],\n      ancientpower: ['4T', '3S0'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrage: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bide: ['7V'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '8M'],\n      bulletseed: ['9M', '9L1', '8M', '8L1', '4M', '3M'],\n      calmmind: ['9M', '8M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      curse: ['9M', '7V'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      earthquake: ['9M'],\n      eggbomb: ['8V', '7L27', '7V', '6L27', '5L27', '4L27', '3L31'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M', '8T'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      extrasensory: ['9L1', '8L1'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '8M'],\n      gigadrain: ['9M', '9L1', '8M', '8L1', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      growth: ['9L1'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      imprison: ['9M'],\n      infestation: ['7M', '6M'],\n      leafstorm: ['9M', '9L1', '8M', '8L1', '7L47', '6L47', '5L47', '4L47'],\n      leechseed: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      magicalleaf: ['9M', '8M'],\n      megadrain: ['9L1', '8L1', '8V', '7V'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      nightmare: ['7V', '3T'],\n      powerswap: ['8M'],\n      powerwhip: ['8V'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychocut: ['8M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '9L1', '8M', '8L1', '7M', '7L17', '6M', '6L17', '5M', '5L17'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      reflect: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      stomp: ['9L0', '8L0', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L19'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      storedpower: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      stunspore: ['8V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['9L1', '8L1', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '7V'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['9M'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      uproar: ['9M', '9L1', '8M', '8L1'],\n      woodhammer: ['9L1', '8L1', '7L37', '6L37', '5L37', '4L37'],\n      worryseed: ['9L1', '8L1', '7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'exeggutoralola',\n    {\n      absorb: ['9L1', '8L1'],\n      attract: ['8M', '7M'],\n      barrage: ['8V', '7L1'],\n      block: ['7T'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '8V', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      bulletseed: ['9M', '9L1', '8M', '8L1'],\n      calmmind: ['9M'],\n      celebrate: ['7S0'],\n      confide: ['7M'],\n      confusion: ['9L1', '8L1', '8V', '7L1'],\n      curse: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      dracometeor: ['9M', '8T', '7T', '7S0'],\n      dragoncheer: ['9M'],\n      dragonhammer: ['9L0', '8L0', '7L1'],\n      dragonpulse: ['9M', '8M', '8V', '7T'],\n      dragontail: ['9M', '8V', '7M'],\n      dreameater: ['8V', '7M'],\n      earthquake: ['9M', '8M', '8V', '7M'],\n      eggbomb: ['8V', '7L27'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      explosion: ['7M'],\n      extrasensory: ['9L1', '8L1'],\n      facade: ['9M', '8M', '8V', '7M'],\n      flamethrower: ['9M', '8M', '8V', '7M'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '9L1', '8M', '8L1', '7T'],\n      gigaimpact: ['9M', '8M', '7M'],\n      grassknot: ['9M', '8M', '7M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      gravity: ['9M', '7T'],\n      growth: ['9L1'],\n      headbutt: ['8V'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '8V', '7M'],\n      hypnosis: ['9L1', '8L1', '8V', '7L1'],\n      imprison: ['9M'],\n      infestation: ['7M'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '8V', '7T'],\n      knockoff: ['9M', '7T'],\n      leafstorm: ['9M', '9L1', '8M', '8L1', '7L47', '7S0'],\n      leechseed: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M', '8V', '7M'],\n      lowkick: ['9M', '8M', '7T'],\n      magicalleaf: ['9M', '8M'],\n      megadrain: ['9L1', '8L1', '8V'],\n      naturepower: ['7M'],\n      outrage: ['9M', '8M', '8V', '7T'],\n      powerswap: ['8M', '7S0'],\n      powerwhip: ['8M', '8V'],\n      protect: ['9M', '8M', '8V', '7M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '8V', '7M'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '7M'],\n      psyshock: ['9M', '9L1', '8M', '8L1', '7M', '7L17'],\n      reflect: ['9M', '9L1', '8M', '8L1', '8V', '7M'],\n      rest: ['9M', '8M', '8V', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      seedbomb: ['9M', '9L1', '8M', '8L1', '7T', '7L1'],\n      selfdestruct: ['8M', '8V'],\n      skillswap: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '8V', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '9L1', '8M', '8L1', '8V', '7M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      storedpower: ['9M'],\n      stunspore: ['8V'],\n      substitute: ['9M', '8M', '8V', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      superpower: ['8M', '8V', '7T'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '8M', '7M'],\n      synthesis: ['9L1', '8L1', '7T'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      teleport: ['8V'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thief: ['9M', '8M', '7M'],\n      toxic: ['8V', '7M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M', '8M', '7M'],\n      uproar: ['9M', '9L1', '8M', '8L1'],\n      woodhammer: ['9L1', '8L1', '7L37'],\n      worryseed: ['9L1', '8L1', '7T'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'cubone',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bellydrum: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      boneclub: ['8V', '7L7', '7V', '6L7', '5L7', '5D', '4L7', '3L9'],\n      bonemerang: ['8L40', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L25'],\n      bonerush: ['8L29', '7L51', '7V', '6L37', '5L37', '4L37', '3L41'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      curse: ['8E', '7E', '7V'],\n      detect: ['8E', '7E', '7V', '6E', '5E', '4E'],\n      dig: ['8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8L48', '8V', '7L43', '7V', '6L43', '5L43', '4L43', '3T', '3L45'],\n      doublekick: ['8E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['8L36', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L41'],\n      endure: ['8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '8L8', '7M', '7L27', '7V', '6M', '6L27', '5M', '5L27', '4M', '4L27', '3L33'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '8L20', '7M', '7L33', '6M', '6L33', '5M', '5L33', '4M', '4L33'],\n      focusenergy: ['8M', '8L32', '8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L21'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T'],\n      growl: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8L12', '8V', '7L11', '7V', '6L11', '5L11', '4T', '4L11', '3L13'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      leer: ['8E', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L17'],\n      lowkick: ['8M', '7T', '6T', '5T', '5D', '4T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['8L1', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      perishsong: ['8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['8V', '7L23', '7V', '6L23', '5L23', '4L23', '3L29'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '8L16', '7L47', '6M', '6L47', '5M', '5L47'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scorchingsands: ['8T'],\n      screech: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      skullbash: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['8M', '8L24', '7L37'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M'],\n      swordsdance: ['8M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      tailwhip: ['8L4', '8V', '7L3', '7V', '6L3', '5L3', '4L3', '3L5'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['8L44', '8V', '7L31', '7V', '6L31', '5L31', '4L31', '3L37'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      watergun: ['7V']\n    }\n  ],\n  [\n    'marowak',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      boneclub: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bonemerang: ['8L48', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L25'],\n      bonerush: ['8L31', '7L65', '7V', '6L43', '5L43', '4L43', '3L53'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      curse: ['7V'],\n      detect: ['7V'],\n      dig: ['8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8L60', '8V', '7L53', '7V', '6L53', '5L53', '4L53', '3T', '3L61'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['8L42', '7T', '7L49', '6T', '6L49', '5T', '5L49', '4T', '4L49'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '8L1', '7M', '7L27', '7V', '6M', '6L27', '5M', '5L27', '4M', '4L27', '3L39'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '8L20', '7M', '7L37', '6M', '6L37', '5M', '5L37', '4M', '4L37'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M', '8L36', '8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L21'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8L12', '8V', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['8M', '7T', '6T', '5T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      leer: ['8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L17'],\n      lowkick: ['8M', '7T', '6T', '5T', '4T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['8L1', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['8V', '7L23', '7V', '6L23', '5L23', '4L23', '3L32'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '8L16', '7L59', '6M', '6L59', '5M', '5L59'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '8V', '7M', '6M', '5M', '4M', '3T', '3S0'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scorchingsands: ['8T'],\n      screech: ['8M', '8V'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      sing: ['3S0'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['8M', '8L24', '7T', '7L43'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M'],\n      swordsdance: ['8M', '8V', '7M', '6M', '5M', '4M', '3T', '3S0'],\n      tailwhip: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['8L54', '8V', '7L33', '7V', '6L33', '5L33', '4L33', '3L46'],\n      throatchop: ['8M', '7T'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      watergun: ['7V']\n    }\n  ],\n  [\n    'marowakalola',\n    {\n      aerialace: ['7M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M'],\n      blizzard: ['8M', '8V', '7M'],\n      bodyslam: ['8M'],\n      boneclub: ['8V', '7L1'],\n      bonemerang: ['8L48', '8V', '7L21'],\n      bonerush: ['8L31', '7L65'],\n      brickbreak: ['8M', '8V', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M'],\n      burningjealousy: ['8T'],\n      confide: ['7M'],\n      darkpulse: ['8M', '8V', '7M'],\n      dig: ['8M', '8V'],\n      doubleedge: ['8L1'],\n      doubleteam: ['7M'],\n      dreameater: ['8V', '7M'],\n      earthpower: ['8M', '7T'],\n      earthquake: ['8M', '8V', '7M'],\n      echoedvoice: ['7M'],\n      endeavor: ['8L42', '7T', '7L49'],\n      endure: ['8M'],\n      facade: ['8M', '8V', '7M'],\n      falseswipe: ['8M', '8L1', '7M'],\n      fireblast: ['8M', '8V', '7M'],\n      firepunch: ['8M', '8V', '7T'],\n      firespin: ['8M', '8L1', '8V'],\n      flamecharge: ['7M'],\n      flamethrower: ['8M', '8V', '7M'],\n      flamewheel: ['8L12', '7L1'],\n      flareblitz: ['8M', '8L60', '8V', '7L53'],\n      fling: ['8M', '8L20', '7M', '7L37'],\n      focusblast: ['8M', '7M'],\n      focusenergy: ['8M', '8L1'],\n      focuspunch: ['7T'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      growl: ['8L1', '8V', '7L1'],\n      headbutt: ['8L1', '8V'],\n      heatwave: ['8M', '7T'],\n      hex: ['8M', '8L16', '7L17'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M', '8V', '7M'],\n      icebeam: ['8M', '8V', '7M'],\n      icywind: ['8M', '7T'],\n      imprison: ['8M'],\n      irondefense: ['8M', '7T'],\n      ironhead: ['8M', '7T'],\n      irontail: ['8M', '8V', '7T'],\n      knockoff: ['7T'],\n      laserfocus: ['7T'],\n      leer: ['8V', '7L13'],\n      lowkick: ['8M', '7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudslap: ['8L1'],\n      outrage: ['8M', '8V', '7T'],\n      painsplit: ['7T'],\n      poltergeist: ['8T'],\n      protect: ['8M', '8V', '7M'],\n      rage: ['8V'],\n      raindance: ['8M', '7M'],\n      rest: ['8M', '8V', '7M'],\n      retaliate: ['8M', '8L1', '7L59'],\n      return: ['7M'],\n      rockslide: ['8M', '8V', '7M'],\n      rocktomb: ['8M', '7M'],\n      round: ['8M', '7M'],\n      sandstorm: ['8M', '7M'],\n      scorchingsands: ['8T'],\n      screech: ['8M', '8V'],\n      seismictoss: ['8V'],\n      shadowball: ['8M', '8V', '7M'],\n      shadowbone: ['8L0', '7L27'],\n      sleeptalk: ['8M', '7M'],\n      smackdown: ['7M'],\n      snore: ['8M', '7T'],\n      spite: ['7T'],\n      stealthrock: ['8M', '8V', '7T'],\n      stompingtantrum: ['8M', '8L24', '7T', '7L43'],\n      stoneedge: ['8M', '7M'],\n      substitute: ['8M', '8V', '7M'],\n      sunnyday: ['8M', '7M'],\n      swagger: ['7M'],\n      swift: ['8M'],\n      swordsdance: ['8M', '8V', '7M'],\n      tailwhip: ['8L1', '8V', '7L1'],\n      thief: ['8M', '7M'],\n      thrash: ['8L54', '8V', '7L33'],\n      throatchop: ['8M', '7T'],\n      thunder: ['8M', '8V', '7M'],\n      thunderbolt: ['8M', '8V', '7M'],\n      thunderpunch: ['8M', '8V', '7T'],\n      toxic: ['8V', '7M'],\n      uproar: ['8M', '7T'],\n      willowisp: ['8M', '8L36', '8V', '7M', '7L23']\n    }\n  ],\n  [\n    'marowakalolatotem',\n    {\n      aerialace: ['7M'],\n      allyswitch: ['7T'],\n      attract: ['7M'],\n      blizzard: ['7M'],\n      boneclub: ['7L1'],\n      bonemerang: ['7L21', '7S0'],\n      bonerush: ['7L65'],\n      brickbreak: ['7M'],\n      brutalswing: ['7M'],\n      bulldoze: ['7M'],\n      confide: ['7M'],\n      darkpulse: ['7M'],\n      doubleteam: ['7M'],\n      dreameater: ['7M'],\n      earthpower: ['7T'],\n      earthquake: ['7M'],\n      echoedvoice: ['7M'],\n      endeavor: ['7T', '7L49'],\n      facade: ['7M'],\n      falseswipe: ['7M'],\n      fireblast: ['7M'],\n      firepunch: ['7T'],\n      flamecharge: ['7M'],\n      flamethrower: ['7M'],\n      flamewheel: ['7L1'],\n      flareblitz: ['7L53'],\n      fling: ['7M', '7L37'],\n      focusblast: ['7M'],\n      focuspunch: ['7T'],\n      frustration: ['7M'],\n      gigaimpact: ['7M'],\n      growl: ['7L1'],\n      heatwave: ['7T'],\n      hex: ['7L17', '7S0'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['7M'],\n      icebeam: ['7M'],\n      icywind: ['7T'],\n      irondefense: ['7T'],\n      ironhead: ['7T'],\n      irontail: ['7T'],\n      knockoff: ['7T'],\n      laserfocus: ['7T'],\n      leer: ['7L13', '7S0'],\n      lowkick: ['7T'],\n      outrage: ['7T'],\n      painsplit: ['7T'],\n      protect: ['7M'],\n      raindance: ['7M'],\n      rest: ['7M'],\n      retaliate: ['7L59'],\n      return: ['7M'],\n      rockslide: ['7M'],\n      rocktomb: ['7M'],\n      round: ['7M'],\n      sandstorm: ['7M'],\n      shadowball: ['7M'],\n      shadowbone: ['7L27'],\n      sleeptalk: ['7M'],\n      smackdown: ['7M'],\n      snore: ['7T'],\n      spite: ['7T'],\n      stealthrock: ['7T'],\n      stompingtantrum: ['7T', '7L43'],\n      stoneedge: ['7M'],\n      substitute: ['7M'],\n      sunnyday: ['7M'],\n      swagger: ['7M'],\n      swordsdance: ['7M'],\n      tailwhip: ['7L1'],\n      thief: ['7M'],\n      thrash: ['7L33'],\n      throatchop: ['7T'],\n      thunder: ['7M'],\n      thunderbolt: ['7M'],\n      thunderpunch: ['7T'],\n      toxic: ['7M'],\n      uproar: ['7T'],\n      willowisp: ['7M', '7L23', '7S0']\n    }\n  ],\n  [\n    'tyrogue',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletpunch: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '4E', '3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      detect: ['7V'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1', '7L1', '6L1', '5L1', '5D', '4L1'],\n      feint: ['9E', '8E', '7E', '6E', '5E', '5D'],\n      focusenergy: ['9L1', '8M', '8L1'],\n      foresight: ['7L1', '6L1', '5L1', '4L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '7E', '6T', '6L1', '6E', '5T', '5L1', '5E', '4T', '4L1', '4E', '3E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highjumpkick: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      laserfocus: ['7T'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      machpunch: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M'],\n      mimic: ['3T'],\n      mindreader: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '6E', '5E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rapidspin: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      upperhand: ['9M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      vacuumwave: ['9M', '9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'hitmonlee',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M', '8M'],\n      axekick: ['9L50'],\n      batonpass: ['9M'],\n      bide: ['7V'],\n      blazekick: ['9L24', '8M', '8L24', '7L45', '6L45', '5L45', '4L41'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '9L0', '8M', '8L0', '8V', '7M', '7L17', '6M', '6L17', '5M', '5L17', '4M', '4L17', '3M', '3L20'],\n      bulkup: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L36', '8M', '8L36', '7L1', '6L1', '5L57', '4L53'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      detect: ['7V'],\n      doubleedge: ['9M', '7V', '3T'],\n      doublekick: ['9L4', '8L4', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '9L12', '8M', '8L12', '7L49', '7V', '6L49', '5L49', '4M', '4L45', '3T', '3L41'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1'],\n      feint: ['9L28', '8L1', '8V', '7L25', '6L25', '5L25', '4L25'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '8M', '8L1', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L21'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      foresight: ['7L37', '7V', '6L37', '5L37', '4L37', '3L36'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highjumpkick: ['9L44', '8L44', '8V', '7L29', '7V', '6L29', '5L29', '4L29', '3L26', '3S0'],\n      jumpkick: ['8V', '7L1', '7V', '6L13', '5L13', '4L13', '3L16'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lowkick: ['9M', '9L8', '8M', '8L8', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      lunge: ['9M'],\n      meditate: ['8V', '7L1', '7V', '6L5', '5L5', '4L5', '3L6'],\n      megakick: ['9L32', '8M', '8L32', '8V', '7L1', '7V', '6L1', '5L53', '4L49', '3T', '3L46', '3S0'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M', '8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mindreader: ['8L28', '7L33', '7V', '6L33', '5L33', '4L33', '3L31', '3S0'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M', '8L16', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      reversal: ['9M', '9L40', '8M', '8L40', '7L1', '7V', '6L1', '5L61', '4L57', '3L51'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollingkick: ['8V', '7L1', '7V', '6L9', '5L9', '4L9', '3L11'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L16', '4T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      swordsdance: ['9M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      upperhand: ['9M'],\n      uproar: ['9M', '8M'],\n      vacuumwave: ['9M', '4T'],\n      wideguard: ['9L21', '8L21', '7L41', '6L41', '5L41'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'hitmonchan',\n    {\n      agility: ['9M', '9L28', '8M', '8L28', '8V', '7L1', '7V', '6L6', '5L6', '4L6', '3L7'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M', '8M'],\n      batonpass: ['9M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletpunch: ['9L16', '8L1', '7L16', '6L16', '5L16', '4L16'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L36', '8M', '8L36', '7L1', '6L1', '5L66', '4L56'],\n      coaching: ['9M', '8T'],\n      cometpunch: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      confide: ['7M', '6M'],\n      counter: ['9L40', '8L40', '8V', '7L1', '7V', '6L1', '5L61', '4L51', '3T', '3L50'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      detect: ['9L12', '8L12', '7L50', '7V', '6L50', '5L51', '4L46', '3L44'],\n      dizzypunch: ['8V'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '9L0', '8M', '8L0', '7T', '6T', '5T', '4M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1'],\n      feint: ['9L1', '8L1', '8V', '7L21', '6L21', '5L21', '4L21'],\n      firepunch: ['9M', '9L24', '8M', '8L24', '8V', '7T', '7L36', '7V', '6T', '6L36', '5T', '5L36', '4T', '4L31', '3T', '3L26'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '8M', '8L1', '8V'],\n      focuspunch: ['9M', '9L44', '8L44', '7T', '7L1', '6T', '6L1', '5L56', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '8V', '7T', '6T', '5T', '4T', '3S0'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '9L24', '8M', '8L24', '8V', '7T', '7L36', '7V', '6T', '6L36', '5T', '5L36', '4T', '4L31', '3T', '3L26'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      leer: ['8V'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      machpunch: ['9L4', '8L4', '7L1', '7V', '6L16', '5L16', '4L16', '3L20'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['9M', '9L32', '8M', '8L32', '8V', '7L46', '7V', '6L46', '5L46', '4L41', '3T', '3L38', '3S0'],\n      metronome: ['9M', '8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mindreader: ['3S0'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      poisonjab: ['9M'],\n      poweruppunch: ['8L8', '6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L1', '7V', '6L11', '5L11', '4L11', '3L13'],\n      quickguard: ['9L21', '8L21', '7L31', '6L31', '5L31'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M', '8L16', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      reversal: ['9M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      skullbash: ['7V'],\n      skyuppercut: ['7L41', '6L41', '5L41', '4L36', '3L32', '3S0'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '8V', '7V', '4T', '3T'],\n      swordsdance: ['9M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderpunch: ['9M', '9L24', '8M', '8L24', '8V', '7T', '7L36', '7V', '6T', '6L36', '5T', '5L36', '4T', '4L31', '3T', '3L26'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['9M', '8M'],\n      vacuumwave: ['9M', '9L8', '8L1', '7L26', '6L26', '5L26', '4T', '4L26'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'hitmontop',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M', '9L28', '8M', '8L28', '7L37', '7V', '6L37', '5L37', '4L37', '3L37'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L36', '8M', '8L36', '7L1', '6L1', '5L55', '5S0', '4L51'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      counter: ['9L40', '8L40', '7L28', '7V', '6L28', '5L28', '4L28', '3T', '3L31'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      detect: ['9L12', '8L12', '7L1', '7V', '6L50', '5L51', '4L46', '3L43'],\n      dig: ['9M', '9L32', '8M', '8L32', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['9M', '8M', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endeavor: ['9M', '9L44', '8L44', '7T', '7L1', '6T', '6L1', '5T', '5L60', '4T', '4L55', '3L49'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1', '5S0'],\n      feint: ['9L1', '8L1', '7L24', '6L33', '5L33', '4L33'],\n      focusblast: ['9M', '8M'],\n      focusenergy: ['9L1', '8M', '8L1', '7L1', '7V', '6L6', '5L6', '4L6', '3L7'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M'],\n      gyroball: ['9M', '9L8', '8M', '8L8', '7M', '7L42', '6M', '6L42', '5M', '5L42', '4M', '4L42'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T', '5S0', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icespinner: ['9M'],\n      laserfocus: ['7T'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L1', '7V', '6L10', '5L10', '4L10', '3L13'],\n      quickattack: ['9L4', '8L4', '7L1', '7V', '6L15', '5L15', '4L15', '3L19'],\n      quickguard: ['9L21', '8L21', '7L46', '6L46', '5L46'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rapidspin: ['9L16', '8L1', '7L19', '7V', '6L24', '5L24', '4L24', '3L25'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M', '8L16', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      reversal: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollingkick: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L24', '8L24', '5S0', '4T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      tripleaxel: ['9M', '8T'],\n      triplekick: ['9L0', '8L0', '7L33', '7V', '6L19', '5L19', '4L19', '3L20'],\n      twister: ['4T'],\n      upperhand: ['9M'],\n      uproar: ['9M', '8M'],\n      vacuumwave: ['9M', '4T'],\n      wideguard: ['9L21', '8L21', '7L46', '6L46', '5L46'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'lickitung',\n    {\n      acid: ['8V'],\n      amnesia: ['8M', '7E', '6E', '5E', '4E'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      belch: ['8E', '7E', '6E'],\n      bellydrum: ['8L60', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      bind: ['8V', '7T', '6T', '5T'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L37', '6L37', '5L37'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      curse: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['8L1', '7L9', '7V', '6L9', '5L9', '4L9', '3T', '3L12', '3S1'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      disable: ['8L24', '8V', '7L25', '7V', '6L25', '5L25', '4L25', '3L34'],\n      doubleedge: ['7V', '3T', '3S1'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragontail: ['8V', '7M', '6M', '5M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      hammerarm: ['8E', '7E', '6E', '5E', '4E'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['3S0'],\n      helpinghand: ['8M', '8V', '3S1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['8L36', '7T', '7L13', '6T', '6L13', '5T', '5L13', '4T', '4L13', '3L18'],\n      lick: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      magnitude: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      mefirst: ['7L41', '6L41', '5L41', '4L37'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      muddywater: ['8M', '7E', '6E', '5E', '4E'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      poweruppunch: ['6M'],\n      powerwhip: ['8M', '8L54', '8V', '7L53', '6L53', '5L53', '4L49'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      refresh: ['7L45', '6L45', '5L45', '4L41', '3L51'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['5D', '4M'],\n      rockslide: ['8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['8L6', '7L33', '7V', '6L33', '5L33', '4T', '4L33', '3T', '3S1'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      screech: ['8M', '8L42', '8V', '7L49', '7V', '6L49', '5L49', '4L45', '3L45'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      slam: ['8L48', '8V', '7L29', '7V', '6L29', '5L29', '4L29', '3L40'],\n      sleeptalk: ['8M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '5D', '4M', '4E', '3T', '3E'],\n      smellingsalts: ['7E', '6E', '5E', '4E', '3E'],\n      snore: ['8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      solarbeam: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      steelroller: ['8T'],\n      stomp: ['8L30', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L23'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['8L12', '7L5', '7V', '6L5', '5L5', '4L5', '3L7'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      terrainpulse: ['8T'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['8E', '8V', '7E'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      wish: ['3S0'],\n      workup: ['8M', '7M', '5M'],\n      wrap: ['8L18', '8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L29'],\n      wringout: ['7L57', '6L57', '5L57', '4L53'],\n      zenheadbutt: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T']\n    }\n  ],\n  [\n    'lickilicky',\n    {\n      amnesia: ['8M'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bellydrum: ['8L60'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['8M'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L37', '6L37', '5L37'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M', '4M'],\n      defensecurl: ['8L1', '7L9', '6L9', '5L9', '4L9'],\n      dig: ['8M', '6M', '5M', '4M'],\n      disable: ['8L24', '7L25', '6L25', '5L25', '4L25'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dragontail: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M'],\n      endure: ['8M', '4M'],\n      explosion: ['7M', '6M', '5M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M'],\n      firepunch: ['8M', '7T', '6T', '5T', '4T'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      gyroball: ['8M', '7M', '7L61', '6M', '6L61', '5M', '5L61', '4M', '4L57'],\n      headbutt: ['4T'],\n      helpinghand: ['8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['8M', '7T', '6T', '5T', '4T'],\n      icywind: ['8M', '7T', '6T', '5T', '4T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['8L36', '7T', '7L13', '6T', '6L13', '5T', '5L13', '4T', '4L13'],\n      lick: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      mefirst: ['7L41', '6L41', '5L41', '4L37'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      muddywater: ['8M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      powerwhip: ['8M', '8L54', '7L1', '6L1', '5L53', '4L49'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      refresh: ['7L45', '6L45', '5L45', '4L41'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      rollout: ['8L1', '7L33', '6L33', '5L33', '4T', '4L33'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M'],\n      screech: ['8M', '8L42', '7L49', '6L49', '5L49', '4L45'],\n      secretpower: ['6M', '4M'],\n      selfdestruct: ['8M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      slam: ['8L48', '7L29', '6L29', '5L29', '4L29'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M'],\n      steelroller: ['8T'],\n      stomp: ['8L30', '7L21', '6L21', '5L21', '4L21'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M'],\n      supersonic: ['8L1', '7L5', '6L5', '5L5', '4L5'],\n      surf: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      terrainpulse: ['8T'],\n      thief: ['8M', '7M', '6M', '5M', '4M'],\n      thunder: ['8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['8M', '7T', '6T', '5T', '4T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      waterpulse: ['7T', '6T', '4M'],\n      whirlpool: ['8M', '4M'],\n      workup: ['8M', '7M', '5M'],\n      wrap: ['8L18', '7L17', '6L17', '5L17', '4L17'],\n      wringout: ['7L1', '6L1', '5L57', '4L53'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'koffing',\n    {\n      acidspray: ['9M'],\n      assurance: ['9L16', '8M', '8L16', '7L12', '6L12', '5L12', '4L15'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      belch: ['9L40', '8L40', '7L42', '6L42'],\n      bide: ['7V'],\n      bodyslam: ['9M'],\n      captivate: ['4M'],\n      clearsmog: ['9L12', '8L12', '8V', '7L15', '6L15', '5L15'],\n      confide: ['7M', '6M'],\n      corrosivegas: ['8T'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E'],\n      darkpulse: ['9M', '8M', '8V', '7M', '6M', '5T', '5D', '4M'],\n      destinybond: ['9L52', '8L52', '7L40', '7E', '7V', '6L40', '6E', '5L40', '5E', '4L46', '4E', '3L45', '3E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      explosion: ['9L44', '8L44', '8V', '7M', '7L37', '7V', '6M', '6L37', '5M', '5L37', '4M', '4L37', '3T', '3L41'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grudge: ['8E', '7E', '6E', '5E', '4E'],\n      gunkshot: ['9M'],\n      gyroball: ['9M', '8M', '7M', '7L29', '6M', '6L29', '5M', '5L29', '4M', '4L33'],\n      haze: ['9M', '9L24', '8L24', '8V', '7L26', '7V', '6L26', '5L26', '4L28', '3L33'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      infestation: ['7M', '6M'],\n      memento: ['9L48', '8L48', '7L45', '6L45', '5L45', '4L51', '3L49'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '9E', '8E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisongas: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      psywave: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['9L28', '8M', '8L28', '8V', '7L23', '7V', '6L23', '5L23', '4L19', '3T', '3L17'],\n      shadowball: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludge: ['9L20', '8L20', '8V', '7L18', '7V', '6L18', '5L18', '4L24', '3L21'],\n      sludgebomb: ['9M', '9L32', '8M', '8L32', '8V', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L42', '3M'],\n      sludgewave: ['9M', '8M', '5D'],\n      smog: ['9L4', '8L4', '8V', '7L4', '7V', '6L4', '5L4', '5D', '4L6', '3L9'],\n      smokescreen: ['9L8', '8L8', '7L7', '7V', '6L7', '5L7', '4L10', '3L25'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      spitup: ['9E', '8E', '7E', '6E', '5E'],\n      stockpile: ['9E', '8E', '7E', '6E', '5E'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9E', '8E', '7E', '6E', '5E'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '9L36', '8L36', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '8M', '7E', '6E'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      venomdrench: ['8M', '7E'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '4E', '3E'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'weezing',\n    {\n      acidspray: ['9M'],\n      assurance: ['9L16', '8M', '8L16', '7L12', '6L12', '5L12', '4L15'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      belch: ['9L44', '8L44', '7L51', '6L50'],\n      bide: ['7V'],\n      bodyslam: ['9M'],\n      captivate: ['4M'],\n      clearsmog: ['9L12', '8L12', '8V', '7L15', '6L15', '5L15'],\n      confide: ['7M', '6M'],\n      corrosivegas: ['8T'],\n      curse: ['9M', '7V'],\n      darkpulse: ['9M', '8M', '8V', '7M', '6M', '5T', '4M'],\n      destinybond: ['9L62', '8L62', '7L46', '7V', '6L46', '5L46', '4L55', '3L51'],\n      doublehit: ['9L0', '8L0', '7L1', '6L29', '5L29', '4L33'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      explosion: ['9L50', '8L50', '8V', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L40', '4M', '4L40', '3T', '3L44'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M'],\n      gyroball: ['9M', '8M', '7M', '7L29', '6M', '5M', '4M'],\n      haze: ['9M', '9L24', '8L24', '8V', '7L26', '7V', '6L26', '5L26', '4L28', '3L33'],\n      headbutt: ['8V'],\n      heatwave: ['9M', '9L1', '8M', '8L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      infestation: ['7M', '6M'],\n      memento: ['9L56', '8L56', '7L57', '6L54', '5L54', '4L63', '3L58'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisongas: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '8V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['8M', '8V'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['9L28', '8M', '8L28', '8V', '7L23', '7V', '6L23', '5L23', '4L19', '3T', '3L1'],\n      shadowball: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludge: ['9L20', '8L20', '8V', '7L18', '7V', '6L18', '5L18', '4L24', '3L21'],\n      sludgebomb: ['9M', '9L32', '8M', '8L32', '8V', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L48', '3M'],\n      sludgewave: ['9M', '8M'],\n      smog: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      smokescreen: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L25'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '9L38', '8L38', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '8M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'weezinggalar',\n    {\n      acidspray: ['9M'],\n      aromatherapy: ['8L24'],\n      aromaticmist: ['9L1', '8L1'],\n      assurance: ['9L16', '8M', '8L16'],\n      attract: ['8M'],\n      belch: ['9L44', '8L44'],\n      bodyslam: ['9M'],\n      brutalswing: ['8M'],\n      clearsmog: ['9L12', '8L12'],\n      corrosivegas: ['8T'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M'],\n      dazzlinggleam: ['9M', '8M'],\n      defog: ['9L1', '8L1'],\n      destinybond: ['9L62', '8L62'],\n      doubleedge: ['9M'],\n      doublehit: ['9L0', '8L0'],\n      endure: ['9M', '8M'],\n      explosion: ['9L50', '8L50'],\n      facade: ['9M', '8M'],\n      fairywind: ['9L24', '8L1'],\n      fireblast: ['9M', '8M'],\n      flamethrower: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      gunkshot: ['9M'],\n      gyroball: ['9M', '8M'],\n      haze: ['9M', '9L1', '8L1'],\n      heatwave: ['9M', '9L1', '8M', '8L1'],\n      hyperbeam: ['9M', '8M'],\n      memento: ['9L56', '8L56'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '9L68', '8M', '8L68'],\n      overheat: ['9M', '8M'],\n      painsplit: ['9M'],\n      payback: ['8M'],\n      playrough: ['9M', '8M'],\n      poisongas: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M'],\n      screech: ['8M'],\n      selfdestruct: ['9L28', '8M', '8L28'],\n      shadowball: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      sludge: ['9L20', '8L20'],\n      sludgebomb: ['9M', '9L32', '8M', '8L32'],\n      sludgewave: ['9M', '8M'],\n      smog: ['9L1', '8L1'],\n      smokescreen: ['9L1', '8L1'],\n      snore: ['8M'],\n      spite: ['9M'],\n      strangesteam: ['9L1', '8L1'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      toxic: ['9M', '9L38', '8L38'],\n      toxicspikes: ['9M', '8M'],\n      uproar: ['8M'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M'],\n      willowisp: ['9M', '8M'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'rhyhorn',\n    {\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bulldoze: ['9M', '9L10', '8M', '8L10', '7M', '7L21', '6M', '6L21', '5M', '5L30'],\n      captivate: ['4M'],\n      chipaway: ['7L25', '6L25', '5L34'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4E', '3T', '3E'],\n      crunch: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      crushclaw: ['7E', '6E', '5E', '4E', '3E'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '7V', '5D', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      dragonrush: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      drillrun: ['9M', '9L35', '8M', '8L35', '8V', '7T', '7L33', '6T', '6L33', '5T', '5L45'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L45', '8M', '8L45', '8V', '7M', '7L45', '7V', '6M', '6L45', '5M', '5L56', '4M', '4L49', '3M', '3L52'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      fissure: ['7V'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8V', '7L5', '7V', '6L5', '5L12', '4L13', '3L15'],\n      guardsplit: ['9E', '8E', '7E', '6E'],\n      headbutt: ['8V', '7V', '4T'],\n      heavyslam: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      hornattack: ['9L15', '8L15', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      horndrill: ['9L60', '8L60', '8V', '7L53', '7V', '6L53', '5L63', '4L37', '3L38'],\n      icebeam: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      leer: ['7V'],\n      magnitude: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      megahorn: ['9L55', '8M', '8L55', '8V', '7L49', '6L49', '5L67', '4L57', '3L57'],\n      metalburst: ['9E', '8E', '7E', '6E'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '9L30', '8M', '8L30', '7L29', '6L23', '5L23', '4L25', '3L29'],\n      rockclimb: ['7E', '6E', '5E', '4M'],\n      rockpolish: ['9E', '8E', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8V'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      rototiller: ['7E', '6E'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8V'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L9', '7V', '6L9', '5L19', '4L21', '3L24'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['8E', '7E', '7V', '6E', '5E', '4E'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '9L5', '8L5', '7M', '7L13', '6M', '6L13'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      stomp: ['9L25', '8L25', '8V', '7L17', '7V', '6L8', '5L8', '4L9', '3L10'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L50', '8M', '8L50', '7M', '7L41', '6M', '6L41', '5M', '5L52', '4M', '4L45'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supercellslam: ['9M'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      tackle: ['9L1', '8L1'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L40', '8L40', '8V', '7L37', '7V', '6L37', '5L41', '4L33', '3L43'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thrash: ['7V'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'rhydon',\n    {\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['9M', '9L1', '8M', '8L1', '7M', '7L21', '6M', '6L21', '5M', '5L30'],\n      captivate: ['4M'],\n      chipaway: ['7L25', '6L25', '5L34'],\n      confide: ['7M', '6M'],\n      counter: ['8V', '7V', '3T'],\n      crunch: ['9M', '8M', '8V'],\n      curse: ['9M', '7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      dragontail: ['8V', '7M', '6M', '5M'],\n      drillrun: ['9M', '9L35', '8M', '8L35', '8V', '7T', '7L33', '6T', '6L33', '5T', '5L47'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L47', '8M', '8L47', '8V', '7M', '7L48', '7V', '6M', '6L48', '5M', '5L62', '4M', '4L49', '3M', '3L58', '3S0'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '8M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hammerarm: ['9L0', '8L0', '7L1', '6L42', '5L42', '4L42'],\n      headbutt: ['8V', '7V', '4T'],\n      heatcrash: ['9M', '8M'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M', '8M', '8V', '3S0'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      hornattack: ['9L15', '8L15', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      horndrill: ['9L68', '8L68', '8V', '7L1', '7V', '6L1', '5L71', '4L37', '3L38'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '8M'],\n      icepunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['7V'],\n      megahorn: ['9L61', '8M', '8L61', '8V', '7L55', '6L1', '5L77', '4L57', '3L66', '3S0'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      meteorbeam: ['9M', '8T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      payday: ['8M', '8V', '7V'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '9L30', '8M', '8L30', '7L29', '6L23', '5L23', '4L25', '3L29'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8V'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8V'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L1', '7V', '6L1', '5L19', '4L21', '3L24', '3S0'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '9L1', '8L1', '7M', '7L13', '6M', '6L13', '5M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      stomp: ['9L25', '8L25', '8V', '7L17', '7V', '6L1', '5L1', '4L1', '3L1'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L54', '8M', '8L54', '7M', '7L41', '6M', '6L41', '5M', '5L56', '4M', '4L45'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supercellslam: ['9M'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L40', '8L40', '8V', '7L37', '7V', '6L37', '5L41', '4L33', '3L46'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '8M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      watergun: ['7V'],\n      whirlpool: ['8M', '4M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'rhyperior',\n    {\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '9L1', '8M', '8L1', '7M', '7L21', '6M', '6L21', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L25', '6L25', '5L30'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '8M'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      drillrun: ['9M', '9L35', '8M', '8L35', '7T', '7L33', '6T', '6L33', '5T', '5L47'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L47', '8M', '8L47', '7M', '7L48', '6M', '6L48', '5M', '5L62', '4M', '4L49'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firefang: ['9M', '8M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyattack: ['7L1', '6L1', '5L1', '4L1'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hammerarm: ['9L1', '8L1', '7L1', '6L42', '5L42', '4L42'],\n      headbutt: ['4T'],\n      heatcrash: ['9M', '8M'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highhorsepower: ['9M', '8M'],\n      hornattack: ['9L15', '8L15', '7L1', '6L1', '5L1', '4L1'],\n      horndrill: ['9L68', '8L68', '7L1', '6L1', '5L71', '4L37'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icefang: ['9M', '8M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      megahorn: ['9L61', '8M', '8L61', '7L55', '6L1', '5L77', '4L57'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M'],\n      meteorbeam: ['9M', '8T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      payday: ['8M'],\n      poisonjab: ['9M', '8M', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockblast: ['9M', '9L30', '8M', '8L30', '7L29', '6L23', '5L23', '4L25'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rockwrecker: ['9L75', '8L75', '7L1', '6L1', '5L86', '4L61'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L1', '6L1', '5L19', '4L21'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M', '9L1', '8L1', '7M', '7L13', '6M', '6L13', '5M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stomp: ['9L25', '8L25', '7L17', '6L1', '5L1', '4L1'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L54', '8M', '8L54', '7M', '7L41', '6M', '6L41', '5M', '5L56', '4M', '4L45'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      supercellslam: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      tackle: ['9L1', '8L1'],\n      tailwhip: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '9L40', '8L40', '7L37', '6L37', '5L41', '4L33'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderfang: ['9M', '8M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'happiny',\n    {\n      aromatherapy: ['8E', '7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      charm: ['9M', '9L20', '8M', '8L20', '7L1', '6L1', '5L1', '4L1'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1', '7L5', '6L5', '5L5', '4L5'],\n      counter: ['7E', '6E', '5E', '4E'],\n      covet: ['9L16', '8L16', '7T', '6T', '5T'],\n      defensecurl: ['9L4', '8L4'],\n      disarmingvoice: ['9M', '9L12', '8L12'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7E', '6E', '5E', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      hail: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      healbell: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      helpinghand: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      incinerate: ['6M', '5M'],\n      lastresort: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      metronome: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      minimize: ['8L1'],\n      mudbomb: ['7E', '6E', '5E', '4E'],\n      mudslap: ['4T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      present: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      refresh: ['7L9', '6L9', '5L9', '4L9'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      seismictoss: ['9E', '8E'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '4E'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      sweetkiss: ['9L8', '8L8', '7L12', '6L12', '5L12', '4L12'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'chansey',\n    {\n      allyswitch: ['8M', '7T'],\n      aromatherapy: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bestow: ['7L20', '6L20', '5L20'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      celebrate: ['8V'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1', '8S3'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      counter: ['7E', '7V', '6E', '5E', '5D', '4E', '3T'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '8M', '8V', '7M', '6M'],\n      defensecurl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L31', '3T', '3L41'],\n      disarmingvoice: ['9M', '9L1', '8L1'],\n      doubleedge: ['9M', '9L40', '8L40', '8V', '7L1', '7V', '6L1', '5L54', '4L46', '3T', '3L57'],\n      doubleslap: ['8V', '7L12', '7V', '6L12', '5L12', '4L16', '3L17'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['9L8', '8L8', '7M', '6M', '5M'],\n      eggbomb: ['8V', '7L42', '7V', '6L42', '5L42', '4L38', '3L35'],\n      electricterrain: ['9M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '9L20', '8M', '8L20', '7M', '7L34', '6M', '6L34', '5M', '5L34', '4M', '4L27'],\n      focusblast: ['9M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      growl: ['8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      healingwish: ['9L52', '8L52', '7L50', '6L50', '5L50', '4L42'],\n      healpulse: ['9L28', '8L28', '7L38', '6L38', '5L38'],\n      helpinghand: ['9M', '9L32', '8M', '8L32', '8V', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lastresort: ['9L48', '8L48', '7T', '6T', '5T', '4T'],\n      lifedew: ['9L12', '8L12'],\n      lightscreen: ['9M', '9L36', '8M', '8L36', '8V', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L46', '4M', '4L34', '3M', '3L49'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      mimic: ['7V', '3T'],\n      minimize: ['8L1', '8V', '7L23', '7V', '6L23', '5L23', '4L20', '3L23'],\n      mudbomb: ['7E', '6E', '5E', '4E'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      pound: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      poweruppunch: ['6M'],\n      present: ['8E', '8S3', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8V', '7V'],\n      refresh: ['7L9', '6L9', '5L9', '4L9', '3L9', '3S1'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8E', '8V', '7E', '7V', '6E', '3T'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sing: ['9L16', '8L16', '8V', '7L31', '7V', '6L31', '5L31', '4L23', '3L29'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M', '3S2'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      softboiled: ['9L44', '8L44', '8V', '8S3', '7L16', '7V', '6L16', '5L16', '4L12', '3T', '3L13', '3S2'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      storedpower: ['9M', '8M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L1', '8L1', '8S3', '3S2'],\n      sweetscent: ['3S0'],\n      swift: ['9M'],\n      tailwhip: ['9L4', '8L4', '8V', '7L5', '7V', '6L5', '5L5', '4L5', '3L5', '3S1'],\n      takedown: ['9M', '9L24', '8L24', '8V', '7L27', '7V', '6L27', '5L27'],\n      telekinesis: ['7T'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S2'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      triattack: ['8M', '8V', '7V'],\n      uproar: ['8M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      wish: ['3S0'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'blissey',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      bestow: ['7L20', '6L20', '5L20'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      counter: ['3T'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      defensecurl: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L31', '3T', '3L33'],\n      disarmingvoice: ['9M', '9L1', '8L1'],\n      doubleedge: ['9M', '9L40', '8L40', '7L1', '7V', '6L1', '5L54', '4L46', '3T', '3L47'],\n      doubleslap: ['7L12', '7V', '6L12', '5L12', '4L16', '3L13'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['9L8', '8L8', '7M', '6M', '5M'],\n      eggbomb: ['7L42', '7V', '6L42', '5L42', '4L38', '3L28'],\n      electricterrain: ['9M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '9L20', '8M', '8L20', '7M', '7L34', '6M', '6L34', '5M', '5L34', '4M', '4L27'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      growl: ['7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      healingwish: ['9L52', '8L52', '7L50', '6L50', '5L50', '4L42'],\n      healpulse: ['9L28', '8L28', '7L38', '6L38', '5L38'],\n      helpinghand: ['9M', '9L32', '8M', '8L32', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lastresort: ['9L48', '8L48', '7T', '6T', '5T', '4T'],\n      lifedew: ['9L12', '8L12'],\n      lightscreen: ['9M', '9L36', '8M', '8L36', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L46', '4M', '4L34', '3M', '3L40'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['9M', '8M', '3T'],\n      mimic: ['3T'],\n      minimize: ['8L1', '7L23', '7V', '6L23', '5L23', '4L20', '3L18'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      pound: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      refresh: ['7L9', '6L9', '5L9', '5S0', '4L9', '3L7'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sing: ['9L16', '8L16', '7L31', '7V', '6L31', '5L31', '4L23', '3L23'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      softboiled: ['9L44', '8L44', '7L16', '7V', '6L16', '5L16', '4L12', '3T', '3L10'],\n      solarbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      storedpower: ['9M', '8M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L1', '8L1'],\n      swift: ['9M'],\n      tailwhip: ['9L4', '8L4', '7L5', '7V', '6L5', '5L5', '5S0', '4L5', '3L4'],\n      takedown: ['9M', '9L24', '8L24', '7L27', '6L27', '5L27'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      triattack: ['8M'],\n      trick: ['9M'],\n      uproar: ['8M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'tangela',\n    {\n      absorb: ['8L1', '8V', '7L10', '7V', '6L10', '5L8', '4L8', '3L10'],\n      amnesia: ['8M', '8V', '7E', '7V', '6E', '5E', '4E', '3E'],\n      ancientpower: ['8L24', '7L38', '6L38', '5L36', '4T', '4L33'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['8L1', '8V', '7T', '7L17', '7V', '6T', '6L17', '5T', '5L17', '4L22', '3L28'],\n      bodyslam: ['8M', '7V', '3T'],\n      bulletseed: ['8M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confusion: ['8E', '8V', '7E', '7V', '6E', '5E', '4E', '3E'],\n      constrict: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endeavor: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      endure: ['8M', '7V', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['8M', '8L32', '7T', '7L36', '7E', '7V', '6T', '6L36', '6E', '5T', '5L36', '5E', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['8T'],\n      grassyterrain: ['8M', '8L56', '7L48', '6L48'],\n      growth: ['8L8', '8V', '7L20', '7V', '6L20', '5L12', '4L12', '3L13'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      ingrain: ['8L52', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      knockoff: ['8L28', '7T', '7L27', '6T', '6L27', '5T', '5L27', '4T', '4L36'],\n      leafstorm: ['8M', '7E', '6E', '5E', '4E'],\n      leechseed: ['8E', '8V', '7E', '6E', '5E', '5D', '4E', '3E'],\n      megadrain: ['8L12', '8V', '7L23', '7E', '7V', '6L23', '6E', '5L23', '5E', '4L26', '4E', '3L31', '3E'],\n      mimic: ['7V', '3T'],\n      morningsun: ['3S0'],\n      naturalgift: ['7L33', '7E', '6L33', '6E', '5L33', '5E', '4M', '4L40'],\n      naturepower: ['8E', '7M', '7E', '6E', '5E', '4E', '3E'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      poisonpowder: ['8L20', '8V', '7L14', '7V', '6L14', '5L14', '4L15', '3L19'],\n      powerswap: ['8M', '7E', '6E', '5E', '4E'],\n      powerwhip: ['8M', '8L48', '8V', '7L50', '6L50', '5L53', '4L54'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      rage: ['7V'],\n      ragepowder: ['8E', '7E', '6E', '5E'],\n      reflect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3E'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '5D', '4T'],\n      shockwave: ['7T', '6T', '4M'],\n      skullbash: ['7V'],\n      slam: ['8L40', '8V', '7L41', '7V', '6L41', '5L43', '4L43', '3L40'],\n      sleeppowder: ['8L36', '8V', '7L4', '7V', '6L4', '5L4', '5D', '4L5', '3L4'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      stunspore: ['8L4', '8V', '7L30', '7V', '6L30', '5L29', '4L29', '3L37'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swordsdance: ['8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      tickle: ['8L44', '7L44', '6L44', '5L46', '4L47', '3L46'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      vinewhip: ['8L16', '8V', '7L7', '7V', '6L7', '5L7', '4L19', '3L22'],\n      wakeupslap: ['7E'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      wringout: ['7L46', '6L46', '5L49', '4L50']\n    }\n  ],\n  [\n    'tangrowth',\n    {\n      absorb: ['8L1', '7L10', '6L10', '5L8', '4L8'],\n      aerialace: ['7M', '6M', '5M', '4M'],\n      amnesia: ['8M'],\n      ancientpower: ['8L24', '7L40', '6L40', '5L36', '4T', '4L33', '4S0'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bind: ['8L1', '7T', '7L17', '6T', '6L17', '5T', '5L17', '4L22'],\n      block: ['8L1', '7T', '7L1', '6T', '6L1', '5T', '5L56', '4T', '4L57'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M'],\n      brutalswing: ['8M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      bulletseed: ['8M', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '6L1', '5L1', '4L1'],\n      cut: ['6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M', '4M'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['8M', '8L32', '7T', '7L36', '6T', '6L36', '5T', '5L36', '4M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['8T'],\n      grassyterrain: ['8M', '8L56', '7L50', '6L50'],\n      growth: ['8L1', '7L20', '6L20', '5L12', '4L12'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M'],\n      infestation: ['7M', '6M'],\n      ingrain: ['8L52', '7L1', '6L1', '5L1', '4L1'],\n      knockoff: ['8L28', '7T', '7L27', '6T', '6L27', '5T', '5L27', '4T', '4L36'],\n      leafstorm: ['8M'],\n      megadrain: ['8L12', '7L23', '6L23', '5L23', '4L26'],\n      morningsun: ['4S0'],\n      mudslap: ['4T'],\n      naturalgift: ['7L33', '6L33', '5L33', '4M', '4L40', '4S0'],\n      naturepower: ['7M', '6M'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['8M', '7M', '6M', '5M', '4M'],\n      poisonpowder: ['8L20', '7L14', '6L14', '5L14', '4L15'],\n      powerswap: ['8M'],\n      powerwhip: ['8M', '8L48', '7L53', '6L53', '5L53', '4L54'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      shockwave: ['7T', '6T', '4M'],\n      slam: ['8L40', '7L43', '6L43', '5L43', '4L43'],\n      sleeppowder: ['8L36', '7L4', '6L4', '5L4', '4L5'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M'],\n      solarblade: ['8M'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M', '4M'],\n      stunspore: ['8L1', '7L30', '6L30', '5L29', '4L29'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '4S0'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      thief: ['8M', '7M', '6M', '5M', '4M'],\n      tickle: ['8L44', '7L46', '6L46', '5L46', '4L47'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      vinewhip: ['8L16', '7L7', '6L7', '5L7', '4L19'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      wringout: ['7L49', '6L49', '5L49', '4L50']\n    }\n  ],\n  [\n    'kangaskhan',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['8M', '4M'],\n      beatup: ['8M'],\n      bide: ['7V'],\n      bite: ['8L12', '8V', '7L13', '7V', '6L13', '5L13', '4L13', '3L7', '3S1'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L31', '6L31', '5L31'],\n      circlethrow: ['8E', '7E', '6E', '5E'],\n      cometpunch: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      confide: ['7M', '6M'],\n      counter: ['8E', '7E', '7V', '6E', '5E', '5D', '4E', '3T', '3E'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['8M', '8L36', '8V', '7L37', '6L37', '5L37', '4L31'],\n      crushclaw: ['7E', '6E', '5E', '4E', '3E'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      disable: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      dizzypunch: ['8V', '7L34', '7V', '6L34', '5L34', '4L25', '3L43', '3S2'],\n      doubleedge: ['8E', '7E', '7V', '6E', '5E', '4E', '3T'],\n      doublehit: ['8L32', '7L19', '6L19', '5L19', '4L43'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '5D', '4M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '6S3', '5M', '4M', '3M', '3S2'],\n      endeavor: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      endure: ['8M', '8L40', '7L43', '7V', '6L43', '5L43', '4M', '4L34', '3T', '3L37'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['8L8', '8V', '7L7', '6L7', '6S3', '5L7', '5D', '4L7', '3L19'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fissure: ['7V'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M', '8L20', '7E', '7V', '6E', '5E', '4E', '3E'],\n      focuspunch: ['7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L4'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hammerarm: ['8E', '7E', '6E', '5E', '4E'],\n      headbutt: ['8L24', '8V', '7V', '4T'],\n      helpinghand: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lastresort: ['8L52'],\n      leer: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      lowkick: ['8M', '7T', '6T', '5T', '4T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '8V', '7L25', '7V', '6L25', '5L25', '4L19', '3T', '3L25'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['8M', '8L48', '8V', '7T', '7L46', '6T', '6L46', '5T', '5L46', '4T', '4L37'],\n      pound: ['8L1'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['8V', '7L22', '7V', '6L22', '5L22', '4L22', '3L31'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '6S3', '5M', '4M', '3M'],\n      reversal: ['8M', '8L44', '7L50', '7V', '6L50', '5L55', '4L49', '3L49'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sing: ['3S2'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stomp: ['8L16', '7E', '7V', '6E', '5E', '4E', '3E'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      suckerpunch: ['8L28', '8V', '7L49', '6L49', '6S3', '5L49', '4T', '4L46'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tailwhip: ['8L1', '8V', '7L10', '7V', '6L10', '5L10', '4L10', '3L13', '3S2'],\n      takedown: ['7V'],\n      terrainpulse: ['8T'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trumpcard: ['7E', '6E', '5E'],\n      uproar: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      wish: ['3S0'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['3S0'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'horsea',\n    {\n      agility: ['9M', '9L30', '8M', '8L30', '8V', '7L36', '7V', '6L23', '5L23', '4L23', '3L36'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['8M', '7L31', '6L30', '5L30', '5D', '4M', '4L30'],\n      bubble: ['8V', '7L1', '7V', '6L1', '5L1', '5D', '5S0', '4L1', '3L1'],\n      bubblebeam: ['9L25', '8L25', '8V', '7L21', '7V', '6L18', '5L18', '4L18'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      clearsmog: ['9E', '8E', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      disable: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['9L20', '8L20', '7E', '7V', '6E', '5E', '4E', '3E'],\n      dragondance: ['9M', '9L50', '8M', '8L50', '7L46', '6L38', '5L38', '4L38', '3L50'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40', '8V', '7T', '7L41', '6T', '6L41', '5T', '5L42', '4M', '4L42'],\n      dragonrage: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      flashcannon: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M', '8T'],\n      focusenergy: ['9L15', '8M', '8L15', '8V', '7L26', '6L14', '5L14', '4L14'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L45', '8M', '8L45', '8V', '7L52', '7V', '6L35', '5L35', '4L35', '3L43'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      laserfocus: ['8L35'],\n      leer: ['9L1', '8L1', '8V', '7L9', '7V', '6L8', '5L8', '4L8', '3L15'],\n      liquidation: ['9M', '8M'],\n      mimic: ['7V', '3T'],\n      muddywater: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      octazooka: ['8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      outrage: ['9M', '8M', '8V', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '9L55', '8M', '8L55', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorwind: ['7E', '6E', '5E', '4E'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L5', '8L5', '8V', '7L5', '7V', '6L4', '5L4', '4L4', '3L8'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      splash: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      takedown: ['7V'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['9L10', '8L10', '7L17', '7V', '6L17', '5L26', '4T', '4L26', '3L29'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '8V', '7L13', '7V', '6L1', '5L11', '4L11', '3L22'],\n      waterpulse: ['9M', '9L35', '8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '7V', '4M']\n    }\n  ],\n  [\n    'seadra',\n    {\n      agility: ['9M', '9L30', '8M', '8L30', '8V', '7L38', '7V', '6L23', '5L23', '4L23', '3L40', '3S0'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['8M', '7L31', '6L30', '5L30', '4M', '4L30'],\n      bubble: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bubblebeam: ['9L25', '8L25', '8V', '7L21', '7V', '6L18', '5L18', '4L18'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      clearsmog: ['8V'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      disable: ['8V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['9L20', '8L20', '7V'],\n      dragondance: ['9M', '9L58', '8M', '8L58', '7L52', '6L48', '5L48', '4L48', '3L62'],\n      dragonpulse: ['9M', '9L44', '8M', '8L44', '8V', '7T', '7L45', '6T', '6L45', '5T', '5L57', '4M', '4L57'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M', '8T'],\n      focusenergy: ['9L15', '8M', '8L15', '8V', '7L26', '6L14', '5L14', '4L14'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L51', '8M', '8L51', '8V', '7L1', '7V', '6L1', '5L40', '4L40', '3L51'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      laserfocus: ['8L37', '7T'],\n      leer: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      liquidation: ['9M', '8M'],\n      mimic: ['7V', '3T'],\n      muddywater: ['9M', '8M'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '9L65', '8M', '8L65', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      takedown: ['7V'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['9L1', '8L1', '7L17', '7V', '6L17', '5L26', '4T', '4L26', '3L29', '3S0'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      waterpulse: ['9M', '9L37', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '7V', '4M']\n    }\n  ],\n  [\n    'kingdra',\n    {\n      agility: ['9M', '9L30', '8M', '8L30', '7L38', '7V', '6L23', '5L23', '4L23', '3L40', '3S0'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      breakingswipe: ['9M', '8M'],\n      brine: ['8M', '7L31', '6L30', '5L30', '4M', '4L30'],\n      bubble: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bubblebeam: ['9L25', '8L25', '7L21', '6L18', '5L18', '4L18'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '5S1', '4T'],\n      dragonbreath: ['9L20', '8L20', '7V'],\n      dragondance: ['9M', '9L58', '8M', '8L58', '7L52', '6L48', '5L48', '4L48', '3L62'],\n      dragonpulse: ['9M', '9L44', '8M', '8L44', '7T', '7L45', '6T', '6L1', '5T', '5L57', '5S1', '4M', '4L57'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M', '8T'],\n      focusenergy: ['9L15', '8M', '8L15', '7L26', '6L14', '5L14', '4L14'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '8M'],\n      hydropump: ['9M', '9L51', '8M', '8L51', '7L1', '7V', '6L1', '5L40', '4L40', '3L51'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['8L37', '7T'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      liquidation: ['9M', '8M'],\n      mimic: ['3T'],\n      muddywater: ['9M', '8M', '5S1'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '5S1', '4M', '3M'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '9L65', '8M', '8L65', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['9M', '8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['9L1', '8L1', '7L17', '7V', '6L17', '5L26', '4T', '4L26', '3L29', '3S0'],\n      waterfall: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      waterpulse: ['9M', '9L37', '7T', '6T', '4M', '3M'],\n      wavecrash: ['9L72'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '9L1', '8M', '8L1', '7V', '4M'],\n      yawn: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1']\n    }\n  ],\n  [\n    'goldeen',\n    {\n      acupressure: ['8E'],\n      agility: ['8M', '8L20', '8V', '7L29', '7V', '6L29', '5L47', '4L47', '3L52'],\n      aquaring: ['8L25', '7L21', '6L21', '5L27', '4L27'],\n      aquatail: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7E', '6E', '5E', '4E'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['8M', '8V', '7T', '6T', '5T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['8L30', '7L13', '7V', '6L13', '5L21', '4L21', '3L24'],\n      flipturn: ['8T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8V', '7L24', '7V', '6L24', '5L31', '4L31', '3L29'],\n      furycutter: ['4T'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hornattack: ['8L15', '8V', '7L8', '7V', '6L8', '5L11', '4L11', '3L15'],\n      horndrill: ['8L50', '8V', '7L37', '7V', '6L37', '5L41', '4L41', '3L43'],\n      hydropump: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      megahorn: ['8M', '8L45', '8V', '7L45', '6L45', '5L57', '4L51', '3L57'],\n      mimic: ['7V', '3T'],\n      muddywater: ['8M'],\n      mudshot: ['8M', '7E', '6E', '5E'],\n      mudslap: ['8E', '7E', '6E', '5E', '4T', '4E'],\n      mudsport: ['7E', '6E', '5E', '4E', '3E'],\n      naturalgift: ['4M'],\n      peck: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      poisonjab: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      quickattack: ['8V'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scaleshot: ['8T'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      skullbash: ['7E', '7V', '6E', '5E'],\n      sleeptalk: ['8M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '4E', '3T', '3E'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      soak: ['8L40', '7L40', '6L40', '5L51'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      supersonic: ['8L5', '8V', '7L5', '7V', '6L5', '5L7', '4L7', '3L10'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      swordsdance: ['8M'],\n      tailwhip: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['7V'],\n      throatchop: ['8M', '7T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '8L35', '8V', '7M', '7L32', '7V', '6M', '6L32', '5M', '5L37', '4M', '4L37', '3M', '3L38'],\n      watergun: ['7V'],\n      waterpulse: ['8L10', '7T', '7L16', '6T', '6L16', '5L17', '5D', '4M', '4L17', '3M'],\n      watersport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'seaking',\n    {\n      agility: ['8M', '8L20', '8V', '7L29', '7V', '6L29', '5L56', '4L56', '3L61'],\n      aquaring: ['8L25', '7L21', '6L21', '5L27', '4L27'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['8M', '8V', '7T', '6T', '5T'],\n      endure: ['8M', '7V', '5D', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['8L30', '7L13', '7V', '6L13', '5L21', '4L21', '3L24'],\n      flipturn: ['8T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8V', '7L24', '7V', '6L24', '5L31', '4L31', '3L29'],\n      furycutter: ['4T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hornattack: ['8L15', '8V', '7L8', '7V', '6L8', '5L11', '4L11', '3L15'],\n      horndrill: ['8L58', '8V', '7L40', '7V', '6L40', '5L47', '4L47', '3L49'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      megahorn: ['8M', '8L51', '8V', '7L1', '6L1', '5L72', '4L63', '3L69'],\n      mimic: ['7V', '3T'],\n      muddywater: ['8M'],\n      mudshot: ['8M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      peck: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      poisonjab: ['8M', '8V', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8V'],\n      quickattack: ['8V'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scaleshot: ['8T'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T'],\n      skullbash: ['8V', '7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '5D', '4M', '3T'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      soak: ['8L44', '7L46', '6L46', '5L63'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      supersonic: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      swordsdance: ['8M'],\n      tailwhip: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['7V'],\n      throatchop: ['8M', '7T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '8L37', '8V', '7M', '7L32', '7V', '6M', '6L32', '5M', '5L40', '4M', '4L40', '3M', '3L41'],\n      watergun: ['7V'],\n      waterpulse: ['8L1', '7T', '7L16', '6T', '6L16', '5L17', '5D', '4M', '4L17', '3M'],\n      watersport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'staryu',\n    {\n      attract: ['7V'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '8L28', '7L28', '6L28', '5L36', '4M'],\n      bubblebeam: ['8V', '7L18', '7V', '6L18', '5L22', '4L28', '3L28'],\n      camouflage: ['7L22', '6L15', '5L15', '4L19', '3L19'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L8', '8V', '7L40', '6L40'],\n      cosmicpower: ['8M', '8L52', '7L49', '6L48', '5L48', '4L51', '3L42', '3S0'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '8V', '7M', '6M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flashcannon: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      flipturn: ['8T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gravity: ['7T', '6T', '5T', '4T'],\n      gyroball: ['8M', '7M', '7L24', '6M', '6L24', '5M', '5L30', '4M', '4L37'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      harden: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M', '8L56', '8V', '7L53', '7V', '6L52', '5L52', '4L55', '3L46', '3S0'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '5D', '4T', '3T'],\n      lightscreen: ['8M', '8L32', '8V', '7M', '7L46', '7V', '6M', '6L33', '5M', '5L33', '4M', '4L42', '3M', '3L37', '3S0'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mimic: ['7V', '3T'],\n      minimize: ['8L16', '8V', '7L31', '7V', '6L25', '5L25', '4L33', '3L33', '3S0'],\n      naturalgift: ['4M'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      powergem: ['8M', '8L36', '7L37', '6L37', '5L43', '4L46'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L24'],\n      psychic: ['8M', '8L40', '8V', '7M', '7L42', '7V', '6M', '6L42', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psywave: ['8V', '7L13', '7V', '6L13'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rapidspin: ['8L12', '7L7', '7V', '6L7', '5L10', '4L10', '3L10', '3S1'],\n      recover: ['8L48', '8V', '7L10', '7V', '6L10', '5L12', '4L15', '3L15', '3S1'],\n      recycle: ['7T', '6T', '5T', '5D', '4M'],\n      reflect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflecttype: ['7L35', '6L35', '5L40'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['8M', '8L44', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '8L20', '8V', '7L16', '7V', '6L16', '5L18', '4T', '4L24', '3T', '3L24'],\n      tackle: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['7V'],\n      teleport: ['8V', '7V'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '8V', '7V'],\n      twister: ['4T'],\n      waterfall: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['8L4', '8V', '7L4', '7V', '6L4', '5L6', '5D', '4L6', '3L6', '3S1'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '7V', '4M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'starmie',\n    {\n      agility: ['8M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['7V'],\n      avalanche: ['8M', '4M'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '8L1', '4M'],\n      bubblebeam: ['7V'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L1', '7L40', '7V', '6L22', '5L22', '4L28', '3L33'],\n      cosmicpower: ['8M', '8L1'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '8V', '7M', '6M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      expandingforce: ['8T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flashcannon: ['8M', '8V', '7M', '6M', '5M', '4M'],\n      flipturn: ['8T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      gravity: ['7T', '6T', '5T', '4T'],\n      gyroball: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      harden: ['8L1', '8V', '7V'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M', '8L1', '7L1', '6L1'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      lightscreen: ['8M', '8L1', '8V', '7M', '6M', '5M', '4M', '3M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      meteorbeam: ['8T'],\n      mimic: ['7V', '3T'],\n      minimize: ['8L1'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      powergem: ['8M', '8L1'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L1'],\n      psychic: ['8M', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychocut: ['8M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      psywave: ['8V', '7V'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rapidspin: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      recover: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spotlight: ['7L1'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['8M', '8L1', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '8L1', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3T', '3L1'],\n      tackle: ['8L1', '8V', '7V'],\n      takedown: ['7V'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      waterfall: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      watergun: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '7V', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'mimejr',\n    {\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      barrier: ['7L1', '6L1', '5L1', '4L1'],\n      batonpass: ['8M', '8L4', '7L46', '6L46', '5L46', '4L46'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['8M', '7E', '6E', '5E', '4E'],\n      confide: ['7M', '6M'],\n      confuseray: ['8E', '7E', '6E', '5E', '4E'],\n      confusion: ['8L12', '7L1', '6L1', '5L1', '4L1'],\n      copycat: ['8L1', '7L4', '6L4', '5L4', '4L4'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['8M', '8L44'],\n      doubleslap: ['7L11', '6L11', '5L11', '4L15'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      encore: ['8M', '8L8', '7L18', '6L18', '5L11', '4L11'],\n      endure: ['8M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      fakeout: ['8E', '7E', '6E', '5E', '4E'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['8M', '7E', '6E', '5E', '4E'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      healingwish: ['7E', '6E', '5E', '4E'],\n      helpinghand: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hypnosis: ['8E', '7E', '6E', '5E', '4E'],\n      icywind: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      infestation: ['7M', '6M'],\n      lightscreen: ['8M', '8L36', '7M', '7L22', '6M', '6L22', '5M', '5L22', '4M', '4L22'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      meditate: ['7L8', '6L8', '5L8', '4L8'],\n      mimic: ['8L32', '7L15', '7E', '6L15', '6E', '5L15', '5E', '4L18', '4E'],\n      mistyterrain: ['8M'],\n      mudslap: ['4T'],\n      nastyplot: ['8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      pound: ['8L1', '7L1'],\n      powersplit: ['8E', '7E', '6E', '5E'],\n      protect: ['8M', '8L20', '7M', '6M', '5M', '4M'],\n      psybeam: ['8L28', '7L25', '6L25', '5L25', '4L25'],\n      psychic: ['8M', '8L48', '7M', '7L39', '6M', '6L39', '5M', '5L39', '4M', '4L39'],\n      psychicterrain: ['8M', '7E'],\n      psychup: ['7M', '6M', '5M', '4M', '4E'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      recycle: ['8L24', '7T', '7L32', '6T', '6L32', '5T', '5L32', '4M', '4L32'],\n      reflect: ['8M', '8L36', '7M', '7L22', '6M', '6L22', '5M', '5L22', '4M', '4L22'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roleplay: ['8L16', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L43'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '8L36', '7M', '7L50', '6M', '6L50', '5M', '5L50', '4M', '4L50'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M', '7L29', '6M', '6L29', '5M', '5L29', '4M', '4L29'],\n      suckerpunch: ['8L40'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      taunt: ['8M', '7M', '6M', '5M', '4M'],\n      teeterdance: ['8L52', '7E', '6E', '5E', '4E'],\n      telekinesis: ['7T', '5M'],\n      thief: ['8M', '7M', '6M', '5M', '4M'],\n      thunder: ['8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M'],\n      tickle: ['8E', '7L1', '6L1', '5L1', '4L1'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['8M', '7T', '7L36', '7E', '6T', '6L36', '6E', '5T', '5L36', '5E', '4T', '4L36', '4E'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      wakeupslap: ['7E', '6E', '5E', '4E'],\n      wonderroom: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'mrmime',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      batonpass: ['8M', '8L1', '7L46', '7V', '6L46', '5L46', '4L46', '3L47'],\n      bide: ['7V'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      calmmind: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8E', '7E', '6E', '5E', '4E'],\n      confusion: ['8L12', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L5'],\n      copycat: ['8L1', '7L4', '6L4', '5L4', '4L4'],\n      counter: ['7V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '8L44', '8V', '7M', '6M'],\n      doubleedge: ['7V', '3T'],\n      doubleslap: ['8V', '7L11', '7V', '6L11', '5L11', '4L15', '3L15'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V'],\n      encore: ['8M', '8L1', '8V', '7L18', '7V', '6L18', '5L11', '4L11', '3L25', '3S0'],\n      endure: ['8M', '7V', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      firepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      followme: ['3S0'],\n      foulplay: ['8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      guardswap: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      icepunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      lightscreen: ['8M', '8L36', '8V', '7M', '7L22', '7V', '6M', '6L22', '5M', '5L22', '4M', '4L22', '3M', '3L19'],\n      magicalleaf: ['8M', '7L1', '6L1', '5L1', '4L1', '3L22'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      meditate: ['8V', '7L8', '7V', '6L8', '5L8', '4L8', '3L12'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['8M', '7V', '3T'],\n      mimic: ['8L32', '8V', '7L15', '7E', '7V', '6L15', '6E', '5L15', '5E', '4L18', '4E', '3T', '3E'],\n      mistyterrain: ['8M', '7L1', '6L1'],\n      mudslap: ['7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      nastyplot: ['8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      pound: ['8L1', '8V', '7L1'],\n      powersplit: ['8E', '7E', '6E', '5E'],\n      powerswap: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8L20', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L28', '8V', '7L25', '7V', '6L25', '5L25', '4L25', '3L29'],\n      psychic: ['8M', '8L48', '8V', '7M', '7L39', '7V', '6M', '6L39', '5M', '5L39', '4M', '4L39', '3M', '3L43', '3S0'],\n      psychicterrain: ['8M', '7E'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      psywave: ['8V', '7L15', '7V', '6L15', '5L15'],\n      quickguard: ['8L1', '7L1', '6L1', '5L1'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      recycle: ['8L24', '7T', '7L32', '6T', '6L32', '5T', '5L32', '4M', '4L32', '3L33'],\n      reflect: ['8M', '8L36', '8V', '7M', '7L22', '7V', '6M', '6L22', '5M', '5L22', '4M', '4L22', '3M', '3L19'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['8L16', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L43', '3L40'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '8L36', '7M', '7L50', '7V', '6M', '6L50', '5M', '5L50', '4M', '4L50', '3M', '3L50'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '6T', '5T', '5D', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      storedpower: ['8M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7L29', '7V', '6M', '6L29', '5M', '5L29', '4M', '4L29', '3T', '3L8'],\n      suckerpunch: ['8L40'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      teeterdance: ['8L52', '7E', '6E', '5E', '5D', '4E'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T', '3S0'],\n      thunderwave: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      tickle: ['8E'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '7L36', '7E', '6T', '6L36', '6E', '5T', '5L36', '5E', '4T', '4L36', '4E', '3L36', '3E'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      uproar: ['8M'],\n      wakeupslap: ['7E', '6E', '5E', '4E'],\n      wideguard: ['8L1', '7L1', '6L1', '5L1'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'mrmimegalar',\n    {\n      allyswitch: ['8M', '8L16'],\n      attract: ['8M'],\n      avalanche: ['8M'],\n      batonpass: ['8M', '8L1'],\n      blizzard: ['8M'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M'],\n      calmmind: ['8M'],\n      charm: ['8M'],\n      confuseray: ['8E'],\n      confusion: ['8L12', '8S0'],\n      copycat: ['8L1', '8S0'],\n      dazzlinggleam: ['8M', '8L1'],\n      doublekick: ['8L24'],\n      drainpunch: ['8M'],\n      encore: ['8M', '8L1', '8S0'],\n      endure: ['8M'],\n      energyball: ['8M'],\n      expandingforce: ['8T'],\n      facade: ['8M'],\n      fakeout: ['8E'],\n      fling: ['8M'],\n      focusblast: ['8M'],\n      foulplay: ['8M'],\n      freezedry: ['8L44'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M'],\n      grassknot: ['8M'],\n      guardswap: ['8M'],\n      hail: ['8M'],\n      helpinghand: ['8M'],\n      hyperbeam: ['8M'],\n      hypnosis: ['8L32'],\n      icebeam: ['8M'],\n      icepunch: ['8M'],\n      iceshard: ['8L1', '8S0'],\n      iciclespear: ['8M'],\n      icywind: ['8M', '8L20'],\n      irondefense: ['8M'],\n      lightscreen: ['8M', '8L1'],\n      magicroom: ['8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['8M'],\n      mimic: ['8L1'],\n      mirrorcoat: ['8L36'],\n      mistyterrain: ['8M', '8L1'],\n      nastyplot: ['8M'],\n      payback: ['8M'],\n      pound: ['8L1'],\n      powersplit: ['8E'],\n      powerswap: ['8M'],\n      protect: ['8M', '8L1'],\n      psybeam: ['8L28'],\n      psychic: ['8M', '8L48'],\n      psychicterrain: ['8M'],\n      psyshock: ['8M'],\n      raindance: ['8M'],\n      rapidspin: ['8L1'],\n      recycle: ['8L1'],\n      reflect: ['8M', '8L1'],\n      rest: ['8M'],\n      roleplay: ['8L1'],\n      round: ['8M'],\n      safeguard: ['8M', '8L1'],\n      screech: ['8M'],\n      shadowball: ['8M'],\n      skillswap: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarbeam: ['8M'],\n      stompingtantrum: ['8M'],\n      storedpower: ['8M'],\n      substitute: ['8M'],\n      suckerpunch: ['8L40'],\n      sunnyday: ['8M'],\n      taunt: ['8M'],\n      teeterdance: ['8L52'],\n      thief: ['8M'],\n      thunder: ['8M'],\n      thunderbolt: ['8M'],\n      thunderwave: ['8M'],\n      tickle: ['8E'],\n      trick: ['8M'],\n      trickroom: ['8M'],\n      tripleaxel: ['8T'],\n      uproar: ['8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'mrrime',\n    {\n      afteryou: ['8L1'],\n      allyswitch: ['8M', '8L16'],\n      attract: ['8M'],\n      avalanche: ['8M'],\n      batonpass: ['8M', '8L1'],\n      blizzard: ['8M'],\n      block: ['8L1'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M'],\n      calmmind: ['8M'],\n      charm: ['8M'],\n      confusion: ['8L12'],\n      copycat: ['8L1'],\n      dazzlinggleam: ['8M', '8L1'],\n      doublekick: ['8L24'],\n      drainpunch: ['8M'],\n      encore: ['8M', '8L1'],\n      endure: ['8M'],\n      energyball: ['8M'],\n      expandingforce: ['8T'],\n      facade: ['8M'],\n      faketears: ['8M', '8L1'],\n      fling: ['8M'],\n      focusblast: ['8M'],\n      foulplay: ['8M'],\n      freezedry: ['8L44'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M'],\n      grassknot: ['8M'],\n      guardswap: ['8M'],\n      hail: ['8M'],\n      helpinghand: ['8M'],\n      hyperbeam: ['8M'],\n      hypnosis: ['8L32'],\n      icebeam: ['8M'],\n      icepunch: ['8M'],\n      iceshard: ['8L1'],\n      iciclespear: ['8M'],\n      icywind: ['8M', '8L20'],\n      irondefense: ['8M'],\n      lightscreen: ['8M', '8L1'],\n      magicroom: ['8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['8M'],\n      mimic: ['8L1'],\n      mirrorcoat: ['8L36'],\n      mistyterrain: ['8M', '8L1'],\n      nastyplot: ['8M'],\n      payback: ['8M'],\n      pound: ['8L1'],\n      powerswap: ['8M'],\n      protect: ['8M', '8L1'],\n      psybeam: ['8L28'],\n      psychic: ['8M', '8L48'],\n      psychicterrain: ['8M'],\n      psyshock: ['8M'],\n      raindance: ['8M'],\n      rapidspin: ['8L1'],\n      recycle: ['8L1'],\n      reflect: ['8M', '8L1'],\n      rest: ['8M'],\n      roleplay: ['8L1'],\n      round: ['8M'],\n      safeguard: ['8M', '8L1'],\n      screech: ['8M'],\n      shadowball: ['8M'],\n      skillswap: ['8M'],\n      slackoff: ['8L1'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarbeam: ['8M'],\n      stompingtantrum: ['8M'],\n      storedpower: ['8M'],\n      substitute: ['8M'],\n      suckerpunch: ['8L40'],\n      sunnyday: ['8M'],\n      taunt: ['8M'],\n      teeterdance: ['8L52'],\n      thief: ['8M'],\n      thunder: ['8M'],\n      thunderbolt: ['8M'],\n      thunderwave: ['8M'],\n      trick: ['8M'],\n      trickroom: ['8M'],\n      tripleaxel: ['8T'],\n      uproar: ['8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'scyther',\n    {\n      acrobatics: ['9M', '8M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L32', '8M', '8L32', '8V', '7L17', '7V', '6L17', '5L17', '5S2', '4L17', '3L21'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L36', '8M', '8L36', '8V', '7L50', '6L50', '5L53', '4L53'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      bide: ['7V'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      brutalswing: ['8M', '7M'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      captivate: ['4M'],\n      closecombat: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      crosspoison: ['8M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defog: ['9E', '8E', '7T', '7E', '6E', '5E', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doublehit: ['9L20', '8L20', '7L49', '6L49', '5L49', '4L49'],\n      doubleteam: ['9L16', '8L16', '8V', '7M', '7L37', '7V', '6M', '6L37', '5M', '5L37', '4M', '4L37', '3M', '3L41'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '4E', '3T', '3E'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '9L8', '8M', '8L8', '7M', '7L13', '7V', '6M', '6L13', '5M', '5L13', '4M', '4L13', '3L16'],\n      feint: ['9E', '8E', '8V', '7L61', '6L61', '5L61', '4L61'],\n      focusenergy: ['9L28', '8M', '8L28', '8V', '7L5', '7V', '6L5', '5L5', '4L5', '3L6', '3S0'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['9L4', '8L4', '7L25', '7V', '6L25', '5L25', '5S2', '4T', '4L25', '3T', '3L46'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      laserfocus: ['8L44', '7T'],\n      leer: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      lightscreen: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4E', '3E'],\n      lunge: ['9M'],\n      mimic: ['7V', '3T'],\n      morningsun: ['3S1'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '8E', '7L45', '7E', '6L45', '6E', '5L45', '5E', '4L45', '4E'],\n      ominouswind: ['4T'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychocut: ['8M'],\n      pursuit: ['7L9', '7V', '6L9', '5L9', '4L9', '3L11'],\n      quickattack: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      quickguard: ['9E', '8E', '7E', '6E'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['8V', '7L33', '7E', '7V', '6L33', '6E', '5L33', '5E', '4L33', '4E', '3E', '3S1'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roost: ['8V', '7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      silverwind: ['7E', '6E', '5E', '4M', '4E', '3E', '3S1'],\n      skittersmack: ['9M'],\n      skullbash: ['7V'],\n      slash: ['9L24', '8L24', '8V', '7L29', '7V', '6L29', '5L29', '5S2', '4L29', '3L31', '3S1'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['8M', '7M', '7E', '7V', '6M', '6E', '5E', '4M', '3M'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '9L44', '8M', '8L48', '8V', '7M', '7L57', '7V', '6M', '6L57', '5M', '5L57', '4M', '4L57', '3T', '3L36'],\n      tailwind: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      vacuumwave: ['9M', '7L1', '6L1', '5L1', '4L1'],\n      wingattack: ['9L12', '8L12', '8V', '7L21', '7V', '6L21', '5L21', '5S2', '4L21', '3L26'],\n      xscissor: ['9M', '9L40', '8M', '8L40', '8V', '7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L41']\n    }\n  ],\n  [\n    'scizor',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '6S5', '5M', '4M', '3M'],\n      agility: ['9M', '9L1', '8M', '8L1', '7L17', '7V', '6L17', '6S5', '6S6', '5L17', '4L17', '4S1', '3L21'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L1', '8M', '8L1'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      brutalswing: ['8M', '7M'],\n      bugbite: ['9M', '7T', '6T', '5T', '5S2', '4T'],\n      bugbuzz: ['9M', '8M'],\n      bulletpunch: ['9L0', '8L0', '7L1', '6L1', '6S7', '5L1', '5S2', '4L1'],\n      captivate: ['4M'],\n      closecombat: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crosspoison: ['8M'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doublehit: ['9L20', '8L20', '7L49', '6L49', '6S4', '5L49', '4L49'],\n      doubleteam: ['9L16', '8L16', '7M', '7V', '6M', '5M', '4M', '3M', '3L41'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '9L1', '8M', '8L1', '7M', '7L13', '7V', '6M', '6L13', '6S5', '6S6', '5M', '5L13', '4M', '4L13', '3L16'],\n      feint: ['7L1', '6L1', '5L61', '4L61'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L28', '8M', '8L28', '7L5', '7V', '6L5', '5L5', '5S3', '4L5', '3L6'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['9L1', '8L1', '7L25', '7V', '6L25', '6S5', '6S6', '5L25', '4T', '4L25', '3T', '3L46', '3S0'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hardpress: ['9M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      irondefense: ['9M', '9L32', '8M', '8L32', '7T', '7L37', '6T', '6L37', '5T', '5L37', '4T', '4L37', '4S1', '3L41'],\n      ironhead: ['9M', '9L36', '8M', '8L36', '7T', '7L50', '6T', '6L50', '6S4', '5T', '5L53', '4T', '4L53'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['8L44', '7T'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5S3', '4L1', '3L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      lunge: ['9M'],\n      metalclaw: ['9M', '9L12', '8L12', '7L21', '7V', '6L21', '6S6', '5L21', '4L21', '3L26', '3S0'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      nightslash: ['7L45', '6L45', '6S4', '5L45', '4L45'],\n      ominouswind: ['4T'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychocut: ['8M'],\n      pursuit: ['7L9', '7V', '6L9', '5L9', '5S3', '4L9', '3L11'],\n      quickattack: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7L33', '6L33', '5L33', '4L33'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '8M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '6S7', '5T', '5S2', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['8M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      silverwind: ['4M'],\n      skittersmack: ['9M'],\n      slash: ['9L24', '8L24', '7L29', '7V', '6L29', '5L29', '4L29', '3L31', '3S0'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      steelbeam: ['9M', '8T'],\n      steelwing: ['8M', '7M', '7V', '6M', '5S3', '4M', '3M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      swordsdance: [\n        '9M',\n        '9L44',\n        '8M',\n        '8L48',\n        '7M',\n        '7L57',\n        '7V',\n        '6M',\n        '6L57',\n        '6S7',\n        '5M',\n        '5L57',\n        '5S2',\n        '4M',\n        '4L57',\n        '4S1',\n        '3T',\n        '3L36',\n        '3S0'\n      ],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M', '6M', '6S7', '5M', '4M'],\n      vacuumwave: ['9M'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      wingattack: ['9L1', '8L1'],\n      xscissor: ['9M', '9L40', '8M', '8L40', '7M', '7L41', '6M', '6L41', '6S4', '5M', '5L41', '4M', '4L41', '4S1']\n    }\n  ],\n  [\n    'kleavor',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M', '9L32'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      batonpass: ['9M'],\n      brickbreak: ['9M'],\n      bugbite: ['9M'],\n      bugbuzz: ['9M'],\n      closecombat: ['9M'],\n      doubleedge: ['9M'],\n      doublehit: ['9L20'],\n      doubleteam: ['9L16'],\n      dualwingbeat: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M', '9L8'],\n      focusenergy: ['9L28'],\n      furycutter: ['9L4'],\n      gigaimpact: ['9M'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      leer: ['9L1'],\n      lightscreen: ['9M'],\n      lunge: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      quickattack: ['9L1'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '9L36'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      skittersmack: ['9M'],\n      slash: ['9L24'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M', '9L12'],\n      stealthrock: ['9M'],\n      stoneaxe: ['9L0'],\n      stoneedge: ['9M'],\n      strugglebug: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '9L44'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      uturn: ['9M'],\n      vacuumwave: ['9M'],\n      xscissor: ['9M', '9L40']\n    }\n  ],\n  [\n    'smoochum',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      auroraveil: ['7M'],\n      avalanche: ['8M', '7L35', '6L35', '5L35', '4M', '4L31'],\n      blizzard: ['8M', '8L48', '7M', '7L48', '7V', '6M', '6L48', '5M', '5L48', '4M', '4L45', '3M', '3L57'],\n      bodyslam: ['8M', '3T'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['7E', '6E', '5E', '5D', '4M'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L12', '7L15', '7V', '6L15', '5L15', '4L15', '3L21'],\n      copycat: ['8L8', '7L41', '6L41', '5L41', '4L38'],\n      counter: ['3T'],\n      covet: ['8L16', '7T', '6T', '5T'],\n      curse: ['7V'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['8M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['8M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      faketears: ['8M', '8L24', '7L28', '6L28', '5L28', '4L25', '3L37'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      heartstamp: ['7L21', '6L21', '5L21'],\n      helpinghand: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8L28', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      lick: ['8L1', '7L5', '7V', '6L5', '5L5', '4L5', '3L1'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7L31', '6L31', '5L31', '4L28'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      meanlook: ['8L40', '7L25', '7V', '6L25', '5L25', '4L21', '3L33'],\n      meditate: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['8M', '3T'],\n      mimic: ['3T'],\n      miracleeye: ['7E', '6E', '5E', '4E'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      perishsong: ['8L44', '7L45', '7V', '6L45', '5L45', '4L41', '3L49'],\n      pound: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      powdersnow: ['8L4', '7L11', '7V', '6L11', '5L11', '4L11', '3L13'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '8L32', '7M', '7L38', '7V', '6M', '6L38', '5M', '5L38', '4M', '4L35', '3M', '3L45'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['8E', '7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sing: ['8L20', '7L18', '7V', '6L18', '5L18', '4L18', '3L25'],\n      skillswap: ['8M', '7T', '6T', '5T', '5D', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['8L36', '7L8', '7V', '6L8', '5L8', '5D', '4L8', '3L9'],\n      sweetscent: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      wakeupslap: ['7E', '6E', '5E'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wish: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      wonderroom: ['8M', '7T'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'jynx',\n    {\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      auroraveil: ['7M'],\n      avalanche: ['8M', '7L39', '6L39', '5L39', '4M', '4L33'],\n      bide: ['7V'],\n      blizzard: ['8M', '8L58', '8V', '7M', '7L60', '7V', '6M', '6L60', '5M', '5L60', '4M', '4L55', '3M', '3L67'],\n      bodyslam: ['8M', '8V', '7L44', '7V', '6L44', '5L44', '4L39', '3T', '3L51'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      calmmind: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L12', '8V'],\n      copycat: ['8L1'],\n      counter: ['7V', '3T'],\n      covet: ['8L16', '7T', '6T', '5T'],\n      curse: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleslap: ['8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L21'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['8M', '7L1', '6L1'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['8M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['8M', '8L24', '7L28', '6L28', '5L28', '4L25', '3L41'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      heartstamp: ['7L21', '6L21', '5L21'],\n      helpinghand: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '8L28', '8V', '7T', '7L18', '7V', '6T', '6L18', '5T', '5L18', '4T', '4L18', '3T', '3L25'],\n      iciclespear: ['8M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      lick: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      lovelykiss: ['8L40', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      meanlook: ['8L46', '7L25', '7V', '6L25', '5L25', '4L21', '3L35'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['8M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      perishsong: ['8L52', '7L1', '7V', '6L1', '5L55', '4L49', '3L57'],\n      pound: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      powdersnow: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '8L34', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicterrain: ['8M'],\n      psychocut: ['8M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8V'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shadowball: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sing: ['8L20'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      storedpower: ['8M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['8L1'],\n      sweetscent: ['7V'],\n      takedown: ['7V'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['7V'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      tripleaxel: ['8T'],\n      uproar: ['8M'],\n      wakeupslap: ['7L33', '6L33', '5L33', '4L28'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wonderroom: ['8M', '7T'],\n      wringout: ['7L49', '6L49', '5L49', '4L44'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'elekid',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L8', '8L8'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      crosschop: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E', '3S0'],\n      curse: ['7V'],\n      detect: ['7V'],\n      discharge: ['9L32', '8L32', '7L33', '6L33', '5L33', '4L34'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualchop: ['7T', '6T', '5T'],\n      dynamicpunch: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3T'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M', '7L22', '6L22', '5L22'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      firepunch: ['9M', '8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E', '3S0'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      followme: ['9E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hammerarm: ['9E', '8E', '7E', '6E', '5E'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E', '3S0'],\n      karatechop: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      knockoff: ['9M'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['9M', '9L44', '8M', '8L44', '7M', '7L26', '7V', '6M', '6L26', '5M', '5L26', '4M', '4L25', '3M', '3L17'],\n      lowkick: ['9M', '9L36', '8M', '8L36', '7T', '7L8', '6T', '6L8', '5T', '5L8', '4T', '4L10'],\n      magnetrise: ['7T', '6T', '5T', '5D', '4T'],\n      meditate: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metalsound: ['9M'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollingkick: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['9L24', '8M', '8L24', '7L36', '7V', '6L36', '5L36', '4L43', '3L33'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shockwave: ['9L16', '8L16', '7T', '7L15', '6T', '6L15', '5L15', '4M', '4L19', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L12', '8M', '8L12', '7L12', '7V', '6L12', '5L12', '4T', '4L16', '3T', '3L25'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '9L48', '8M', '8L48', '7M', '7L43', '7V', '6M', '6L43', '5M', '5L43', '4M', '4L46', '3M', '3L49'],\n      thunderbolt: ['9M', '9L40', '8M', '8L40', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L40', '4M', '4L37', '3M', '3L41'],\n      thunderpunch: ['9M', '9L28', '8M', '8L28', '7T', '7L29', '7V', '6T', '6L29', '5T', '5L29', '4T', '4L28', '3T', '3L9', '3S0'],\n      thundershock: ['9L4', '8L4', '7L5', '6L5', '5L5', '5D', '4L7'],\n      thunderwave: ['9M', '9L20', '8M', '8L20', '7M', '7L19', '6M', '6L19', '5M', '5L19', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'electabuzz',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L1', '8L1'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      counter: ['7V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      crosschop: ['3S1'],\n      curse: ['7V'],\n      detect: ['7V'],\n      discharge: ['9L34', '8L34', '7L36', '6L36', '5L36', '4L37'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualchop: ['7T', '6T', '5T'],\n      dynamicpunch: ['7V', '3T'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M', '7L22', '6L22', '5L22'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      followme: ['3S1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '9L64', '8M', '8L64', '7M', '6M', '5M', '4M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      leer: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      lightscreen: [\n        '9M',\n        '9L52',\n        '8M',\n        '8L52',\n        '8V',\n        '7M',\n        '7L26',\n        '7V',\n        '6M',\n        '6L26',\n        '6S4',\n        '5M',\n        '5L26',\n        '5S3',\n        '4M',\n        '4L25',\n        '4S2',\n        '3M',\n        '3L17'\n      ],\n      lowkick: ['9M', '9L40', '8M', '8L40', '8V', '7T', '7L8', '6T', '6L8', '6S4', '5T', '5L8', '5S3', '4T', '4L10', '4S2'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metalsound: ['9M'],\n      metronome: ['9M', '7V'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psywave: ['7V'],\n      quickattack: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      rockclimb: ['4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['9L24', '8M', '8L24', '8V', '7L42', '7V', '6L42', '5L42', '4L52', '3L36'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shockwave: ['9L16', '8L16', '7T', '7L15', '6T', '6L15', '6S4', '5L15', '5S3', '4M', '4L19', '4S2', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L12', '8M', '8L12', '8V', '7L12', '7V', '6L12', '5L12', '5S3', '4T', '4L16', '3T', '3L25'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8V'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '9L58', '8M', '8L58', '8V', '7M', '7L55', '7V', '6M', '6L55', '5M', '5L55', '4M', '4L58', '3M', '3L58'],\n      thunderbolt: ['9M', '9L46', '8M', '8L46', '8V', '7M', '7L49', '7V', '6M', '6L49', '5M', '5L49', '4M', '4L43', '3M', '3L47', '3S1'],\n      thunderpunch: [\n        '9M',\n        '9L28',\n        '8M',\n        '8L28',\n        '8V',\n        '7T',\n        '7L29',\n        '7V',\n        '6T',\n        '6L29',\n        '6S4',\n        '5T',\n        '5L29',\n        '4T',\n        '4L28',\n        '4S2',\n        '3T',\n        '3L1',\n        '3S0'\n      ],\n      thundershock: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1'],\n      thunderwave: ['9M', '9L20', '8M', '8L20', '8V', '7M', '7L19', '7V', '6M', '6L19', '5M', '5L19', '4M', '3T', '3S1'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'electivire',\n    {\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L1', '8L1'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      crosschop: ['4S0'],\n      darkestlariat: ['8M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      discharge: ['9L34', '8L34', '7L36', '6L36', '5L36', '4L37', '4S1'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dualchop: ['7T', '6T', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '4S0'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M', '7L1', '6L1'],\n      electroball: ['9M', '8M', '7L22', '6L22', '5L22'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '8M', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '9L64', '8M', '8L64', '7M', '7L62', '6M', '6L62', '5M', '5L62', '4M', '4L67'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '4S0'],\n      iondeluge: ['7L1', '6L1'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['9M'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      lightscreen: ['9M', '9L52', '8M', '8L52', '7M', '7L26', '6M', '6L26', '5M', '5L26', '4M', '4L25', '4S1'],\n      lowkick: ['9M', '9L40', '8M', '8L40', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalsound: ['9M'],\n      metronome: ['9M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      quickattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      reflect: ['9M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      risingvoltage: ['8T'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['9L24', '8M', '8L24', '7L42', '6L42', '5L42', '4L52'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['9L16', '8L16', '7T', '7L15', '6T', '6L15', '5L15', '4M', '4L19'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '9L12', '8M', '8L12', '7L12', '6L12', '5L12', '4T', '4L16'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '9L58', '8M', '8L58', '7M', '7L55', '6M', '6L55', '5M', '5L55', '4M', '4L58'],\n      thunderbolt: ['9M', '9L46', '8M', '8L46', '7M', '7L49', '6M', '6L49', '5M', '5L49', '4M', '4L43', '4S1'],\n      thunderpunch: ['9M', '9L28', '8M', '8L28', '7T', '7L29', '6T', '6L29', '5T', '5L29', '4T', '4L28', '4S0', '4S1'],\n      thundershock: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      thunderwave: ['9M', '9L20', '8M', '8L20', '7M', '7L19', '6M', '6L19', '5M', '5L19', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      weatherball: ['9M', '8M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'magby',\n    {\n      acidspray: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      belch: ['9E', '8E', '7E', '6E'],\n      bellydrum: ['9E', '7E', '6E', '5E', '4E'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      burningjealousy: ['9M'],\n      captivate: ['4M'],\n      clearsmog: ['9L12', '8L12', '7L19', '6L19', '5L19'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L20', '8L20', '7L26', '7V', '6L26', '5L25', '4L25', '3L43'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      crosschop: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      curse: ['9M', '7V'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualchop: ['7T', '6T', '5T'],\n      dynamicpunch: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3T'],\n      ember: ['9L4', '8L4', '7L5', '7V', '6L5', '5L5', '5D', '4L7', '3L1'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L12', '6L12', '5L12', '4L16'],\n      fireblast: ['9M', '9L48', '8M', '8L48', '7M', '7L43', '7V', '6M', '6L43', '5M', '5L43', '4M', '4L46', '3M', '3L49'],\n      firepunch: ['9M', '9L28', '8M', '8L28', '7T', '7L29', '7V', '6T', '6L29', '5T', '5L29', '4T', '4L28', '3T', '3L19'],\n      firespin: ['9M', '8M', '7L15', '6L15', '5L15', '4L19'],\n      flameburst: ['7L22', '6L22', '5L22'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L40', '8M', '8L40', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L40', '4M', '4L37', '3M', '3L37'],\n      flamewheel: ['9L16', '8L16'],\n      flareblitz: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M', '7E', '6E', '5E'],\n      focuspunch: ['9M', '9E', '8E', '7T', '6T', '4M', '3M'],\n      followme: ['9E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '5D', '4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      karatechop: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      lavaplume: ['9L32', '8L32', '7L33', '6L33', '5L33', '4L34'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L7'],\n      lowkick: ['9M', '9L36', '8M', '8L36'],\n      machpunch: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M'],\n      powerswap: ['8M', '7E', '6E'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L24', '8M', '8L24'],\n      screech: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smog: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L13'],\n      smokescreen: ['9L8', '8L8', '7L8', '7V', '6L8', '5L8', '4L10', '3L25'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '9L44', '8M', '8L44', '7M', '7L36', '7V', '6M', '6L36', '5M', '5L36', '4M', '4L43', '3M', '3L31'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3T', '3E'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'magmar',\n    {\n      acidspray: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      burningjealousy: ['9M', '8T'],\n      captivate: ['4M'],\n      clearsmog: ['9L12', '8L12', '8V', '7L19', '6L19', '5L19'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L20', '8L20', '8V', '7L26', '7V', '6L26', '6S4', '5L26', '5S3', '4L25', '4S2', '3L49'],\n      counter: ['7V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      crosschop: ['3S1'],\n      curse: ['9M', '7V'],\n      detect: ['7V'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualchop: ['7T', '6T', '5T'],\n      dynamicpunch: ['7V', '3T'],\n      ember: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L12', '6L12', '5L12', '5S3', '4L16'],\n      fireblast: ['9M', '9L58', '8M', '8L58', '8V', '7M', '7L55', '7V', '6M', '6L55', '5M', '5L55', '4M', '4L54', '3M', '3L57', '3S1'],\n      firepunch: ['9M', '9L28', '8M', '8L28', '8V', '7T', '7L29', '7V', '6T', '6L29', '6S4', '5T', '5L29', '4T', '4L28', '4S2', '3T', '3L1', '3S0'],\n      firespin: ['9M', '8M', '8V', '7L15', '6L15', '6S4', '5L15', '5S3', '4L19', '4S2'],\n      flameburst: ['7L22', '6L22', '5L22'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L46', '8M', '8L46', '8V', '7M', '7L49', '7V', '6M', '6L49', '5M', '5L49', '4M', '4L41', '3M', '3L41'],\n      flamewheel: ['9L16', '8L16'],\n      flareblitz: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      followme: ['3S1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['8V', '7V', '4T'],\n      heatcrash: ['9M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '9L64', '8M', '8L64', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      lavaplume: ['9L34', '8L34', '7L36', '6L36', '5L36', '4L36'],\n      leer: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      lowkick: ['9M', '9L40', '8M', '8L40', '8V', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M', '7V'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M'],\n      powerswap: ['8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      rockclimb: ['4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L24', '8M', '8L24'],\n      scorchingsands: ['9M', '8T'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smog: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      smokescreen: ['9L1', '8L1', '8V', '7L8', '7V', '6L8', '6S4', '5L8', '5S3', '4L10', '4S2', '3L25'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '9L52', '8M', '8L52', '7M', '7L42', '7V', '6M', '6L42', '5M', '5L42', '4M', '4L49', '3M', '3L33'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8V'],\n      teleport: ['8V', '7V'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T', '3S1'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '8M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'magmortar',\n    {\n      acidspray: ['9M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      burningjealousy: ['9M', '8T'],\n      captivate: ['4M'],\n      clearsmog: ['9L12', '8L12', '7L19', '6L19', '5L19'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L20', '8L20', '7L26', '6L26', '5L26', '4L25', '4S1'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dualchop: ['7T', '6T', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      ember: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feintattack: ['7L12', '6L12', '5L12', '4L16'],\n      fireblast: ['9M', '9L58', '8M', '8L58', '7M', '7L55', '6M', '6L55', '5M', '5L55', '4M', '4L58'],\n      firepunch: ['9M', '9L28', '8M', '8L28', '7T', '7L29', '6T', '6L29', '5T', '5L29', '4T', '4L28', '4S1'],\n      firespin: ['9M', '8M', '7L15', '6L15', '5L15', '4L19'],\n      flameburst: ['7L22', '6L22', '5L22'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L46', '8M', '8L46', '7M', '7L49', '6M', '6L49', '5M', '5L49', '4M', '4L43', '4S0', '4S1'],\n      flamewheel: ['9L16', '8L16'],\n      flareblitz: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      heatcrash: ['9M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '9L64', '8M', '8L64', '7M', '7L62', '6M', '6L62', '5M', '5L62', '4M', '4L67', '4S0'],\n      hypervoice: ['9M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['9M'],\n      lavaplume: ['9L34', '8L34', '7L36', '6L36', '5L36', '4L37', '4S1'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      lowkick: ['9M', '9L40', '8M', '8L40', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M'],\n      mudslap: ['4T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M'],\n      powerswap: ['8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M', '4S0'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L24', '8M', '8L24'],\n      scorchingsands: ['9M', '8T'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      smog: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      smokescreen: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '4S0'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '9L52', '8M', '8L52', '7M', '7L42', '6M', '6L42', '5M', '5L42', '4M', '4L52'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['9M', '8M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'pinsir',\n    {\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['8L8', '8V', '7T', '7L4', '7V', '6T', '6L4', '5T', '5L4', '4L4', '3L7'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '7L26', '6M', '6L18', '5M', '5L18', '4M', '4L21', '3M', '3L31'],\n      brutalswing: ['8M', '7M'],\n      bugbite: ['8L16', '7T', '7E', '6T', '6E', '5T', '5E'],\n      bulkup: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['8M', '7E', '6E', '5E', '5D', '4E'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7V', '3T'],\n      doublehit: ['8L24', '7L22', '6L22'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthquake: ['8M', '8V', '7M', '6M', '6S1', '6S2', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '7M', '6M', '5M', '4M', '4E', '3E', '3S0'],\n      feint: ['8E', '7E', '6E', '6S2', '5E', '4E'],\n      feintattack: ['7E', '6E', '5E', '4E', '3E'],\n      flail: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M', '8L4', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      guillotine: ['8L48', '8V', '7L50', '7V', '6L47', '5L47', '4L47', '3L37', '3S0'],\n      harden: ['8L1', '8V', '7L11', '7V', '6L11', '5L11', '4L13', '3L19'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['8M', '8V', '3S0'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      mefirst: ['7E', '6E', '5E', '5D'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['8V'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['8E', '7E', '6E', '6S2', '5E', '4E'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '6S1', '5M', '4M', '3M'],\n      revenge: ['8M', '7L15', '6L15', '5L15', '4L18', '3L25'],\n      reversal: ['8M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8L12', '8V', '7L8', '7V', '6L8', '5L8', '4L8', '3T', '3L13'],\n      slash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      stoneedge: ['8M', '7M', '6M', '6S1', '5M', '4M'],\n      stormthrow: ['8L20', '7L36', '6L33', '5L33'],\n      strength: ['8L36', '7V', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      submission: ['8L44', '8V', '7L33', '7V', '6L26', '5L26', '4L42', '3L43', '3S0'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '8L52', '8V', '7T', '7L47', '7E', '6T', '6L43', '6E', '5T', '5L43', '5E', '4T', '4L52'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['8M', '8L40', '8V', '7M', '7L40', '7V', '6M', '6L40', '6S2', '5M', '5L38', '4M', '4L38', '3T', '3L49'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['8E', '8V', '7L43', '6L36', '5L35', '4L35'],\n      throatchop: ['8M', '7T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      visegrip: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      vitalthrow: ['8L28', '7L18', '6L18', '5L22', '4L25'],\n      xscissor: ['8M', '8L32', '8V', '7M', '7L29', '6M', '6L29', '6S1', '5M', '5L29', '4M', '4L30']\n    }\n  ],\n  [\n    'tauros',\n    {\n      assurance: ['9L15', '8M', '8L15'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T', '3S2'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9E', '7V'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L55', '8L55', '8V', '7L63', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthquake: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S2'],\n      endeavor: ['9M', '9E', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      fissure: ['7V'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8V'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '9L60', '8M', '8L60', '7M', '7L63', '6M', '6L63', '5M', '5L63', '4M', '4L55'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      hornattack: ['9L20', '8L20', '8V', '7L8', '7V', '6L8', '5L8', '4L8', '3L8', '3S0', '3S1'],\n      horndrill: ['7V'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '5D', '4M', '3M'],\n      lashout: ['9M', '8T'],\n      leer: ['8V', '7V'],\n      megahorn: ['8M'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      payback: ['9L10', '8M', '8L10', '7M', '7L24', '6M', '6L24', '5M', '5L24', '4M', '4L24'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L15', '7V', '6L15', '5L15', '4L15', '3L19', '3S0'],\n      rage: ['8V', '7L5', '7V', '6L5', '5L5', '5D', '4L5', '3L4', '3S0', '3S1'],\n      ragingbull: ['9L35'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S2'],\n      rest: ['9M', '9L40', '8M', '8L40', '8V', '7M', '7L19', '7V', '6M', '6L19', '5M', '5L19', '4M', '4L19', '3M', '3L34'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      rockclimb: ['5D', '4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M', '9L25', '8M', '8L25', '7L11', '7V', '6L11', '5L11', '4L11', '3L13', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stomp: ['7V'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['9L45', '8L45', '7M', '7L48', '7V', '6M', '6L48', '5M', '5L48', '4M', '4L41', '3T', '3L26'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      tailwhip: ['9L1', '8L1', '8V', '7L3', '7V', '6L3', '5L3', '4L3', '3L1', '3S1', '3S2'],\n      takedown: ['9M', '8L35', '8V', '7L35', '7V', '6L41', '5L41', '4L35', '3L53'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L50', '8L50', '8V', '7L50', '7V', '6L50', '5L55', '4L48', '3L43'],\n      throatchop: ['9M', '8M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      workup: ['9L5', '8M', '8L5', '7M', '7L29', '6L29', '5M', '5L29'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '9L30', '8M', '8L30', '7T', '7L35', '6T', '6L35', '5T', '5L35', '4T', '4L29']\n    }\n  ],\n  [\n    'taurospaldeacombat',\n    {\n      assurance: ['9L15'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulkup: ['9M'],\n      bulldoze: ['9M'],\n      closecombat: ['9M', '9L60'],\n      curse: ['9M', '9E'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L55'],\n      doublekick: ['9L10'],\n      drillrun: ['9M'],\n      earthquake: ['9M'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L20'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      ironhead: ['9M'],\n      lashout: ['9M'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      ragingbull: ['9L35'],\n      raindance: ['9M'],\n      rest: ['9M', '9L40'],\n      reversal: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '9L25'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      surf: ['9M'],\n      swagger: ['9L45'],\n      tackle: ['9L1'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L50'],\n      throatchop: ['9M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M'],\n      workup: ['9L5'],\n      zenheadbutt: ['9M', '9L30']\n    }\n  ],\n  [\n    'taurospaldeablaze',\n    {\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulkup: ['9M'],\n      bulldoze: ['9M'],\n      closecombat: ['9M', '9L60'],\n      curse: ['9M', '9E'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doublekick: ['9L10'],\n      drillrun: ['9M'],\n      earthquake: ['9M'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L15'],\n      flamethrower: ['9M'],\n      flareblitz: ['9M', '9L55'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L20'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      ironhead: ['9M'],\n      lashout: ['9M'],\n      outrage: ['9M'],\n      overheat: ['9M'],\n      protect: ['9M'],\n      ragingbull: ['9L35'],\n      raindance: ['9M'],\n      rest: ['9M', '9L40'],\n      reversal: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '9L25'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swagger: ['9L45'],\n      tackle: ['9L1'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L50'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M'],\n      willowisp: ['9M'],\n      workup: ['9L5'],\n      zenheadbutt: ['9M', '9L30']\n    }\n  ],\n  [\n    'taurospaldeaaqua',\n    {\n      aquajet: ['9L15'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulkup: ['9M'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '9L60'],\n      curse: ['9M', '9E'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doublekick: ['9L10'],\n      drillrun: ['9M'],\n      earthquake: ['9M'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L20'],\n      highhorsepower: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      ironhead: ['9M'],\n      lashout: ['9M'],\n      liquidation: ['9M'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      ragingbull: ['9L35'],\n      raindance: ['9M'],\n      rest: ['9M', '9L40'],\n      reversal: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '9L25'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      swagger: ['9L45'],\n      tackle: ['9L1'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L50'],\n      trailblaze: ['9M'],\n      waterpulse: ['9M'],\n      wavecrash: ['9L55'],\n      whirlpool: ['9M'],\n      wildcharge: ['9M'],\n      workup: ['9L5'],\n      zenheadbutt: ['9M', '9L30']\n    }\n  ],\n  [\n    'magikarp',\n    {\n      bounce: ['8M', '7T', '7S7', '6T', '5T', '5D', '5S5', '4T'],\n      celebrate: ['6S6'],\n      flail: ['9L25', '8L25', '7L30', '7V', '6L30', '5L30', '5S5', '4L30', '3L30'],\n      happyhour: ['6S6'],\n      hydropump: ['8M', '5S5'],\n      splash: ['9L1', '8L1', '8V', '7L1', '7V', '7S7', '6L1', '6S6', '5L1', '5D', '5S5', '4L1', '4S0', '4S1', '4S2', '4S3', '4S4', '3L1'],\n      tackle: ['9L15', '8L15', '8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L15']\n    }\n  ],\n  [\n    'gyarados',\n    {\n      aquatail: ['9L32', '8L32', '7T', '7L30', '6T', '6L35', '5T', '5L35', '4T', '4L35'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      bide: ['7V'],\n      bind: ['8V'],\n      bite: ['9L0', '8L0', '8V', '7L1', '7V', '6L20', '6S1', '5L20', '4L20', '3L20'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['9L12', '8M', '8L12', '4M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L24', '8M', '8L24', '8V', '7L39', '6L41'],\n      curse: ['7V'],\n      darkpulse: ['9M', '8M', '8V', '7M', '6M', '5T', '4M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['7V'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M', '9L36', '8M', '8L36', '7L45', '6L44', '6S0', '5L44', '4L44', '3L50'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      dragonrage: ['8V', '7L36', '7V', '6L23', '5L23', '4L23', '3L25'],\n      dragontail: ['9M', '8V', '7M', '6M', '5M'],\n      earthquake: ['9M', '8M', '8V', '7M', '6M', '6S0', '5M', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      flail: ['9L1', '8L1'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '9L44', '8M', '8L44', '7L48'],\n      hydropump: ['9M', '9L40', '8M', '8L40', '8V', '7L42', '7V', '6L41', '5L41', '4L41', '3L40'],\n      hyperbeam: ['9M', '9L52', '8M', '8L52', '8V', '7M', '7L54', '7V', '6M', '6L47', '5M', '5L47', '4M', '4L47', '3M', '3L55'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '9L8', '8M', '8L8', '7L27', '6L32', '6S0', '6S1', '5L32', '4L32'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '6S1', '5T', '4T'],\n      irontail: ['8M', '8V', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '8V', '7L21', '7V', '6L26', '5L26', '4L26', '3L30'],\n      mimic: ['7V', '3T'],\n      muddywater: ['9M', '8M'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      powerwhip: ['8M'],\n      protect: ['9M', '9S2', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['8V', '7V'],\n      raindance: ['9M', '9L28', '8M', '8L28', '7M', '7L51', '7V', '6M', '6L38', '5M', '5L38', '4M', '4L38', '3M', '3L45'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['9M', '8M', '8V', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L16', '8M', '8L16', '7L33'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      splash: ['9L1', '8L1'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '7V'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '9S2', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L48', '8L48', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '9S2', '8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['9L1', '8L1', '7L24', '7V', '6L29', '5L29', '4T', '4L29', '3L35'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterfall: ['9M', '9L21', '9S2', '8M', '8L21', '8V', '7M', '7V', '6M', '6S0', '6S1', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '9L4', '8M', '8L4', '7V', '4M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'lapras',\n    {\n      alluringvoice: ['9M'],\n      ancientpower: ['9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['7V'],\n      avalanche: ['9M', '8M', '7E', '6E', '5E', '4M'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L40', '8M', '8L40', '8V', '7L18', '7V', '6L18', '5L18', '4L18', '3T', '3L13'],\n      brine: ['9L35', '8M', '8L35', '7L37', '6L37', '5L37', '4M', '4L37'],\n      bubblebeam: ['7V'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L25', '8L25', '8V', '7L7', '7V', '6L7', '5L7', '5D', '4L7', '3L19'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      disarmingvoice: ['9M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['7V'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      dragonrage: ['7V'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      drillrun: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      earthquake: ['9M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      freezedry: ['9E', '8E', '7E', '6E'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '7E', '6E', '5E'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T', '3S0'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      horndrill: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      hydropump: ['9M', '9L55', '8M', '8L55', '8V', '7L47', '7V', '6L47', '5L49', '4L49', '3L49', '3S0'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '9L45', '8M', '8L45', '8V', '7M', '7L32', '7V', '6M', '6L32', '5M', '5L32', '4M', '4L32', '3M', '3L31'],\n      iceshard: ['9L20', '8L20', '8V', '7L10', '6L10', '5L10', '4L10'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '5D', '4T', '3T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lifedew: ['9L15', '8L15'],\n      liquidation: ['9M', '8M'],\n      megahorn: ['8M', '8V'],\n      mimic: ['7V', '3T'],\n      mist: ['9L10', '8L10', '8V', '7L4', '7V', '6L4', '5L4', '4L4', '3L7'],\n      muddywater: ['9M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      outrage: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      perishsong: ['9L60', '8L60', '7L27', '7V', '6L27', '5L27', '4L27', '3L25'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicnoise: ['9M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '9L50', '8M', '8L50', '7M', '7L22', '7V', '6M', '6L22', '5M', '5L22', '4M', '4L22', '3M', '3L37', '3S0'],\n      reflect: ['9M', '8V', '7V'],\n      refresh: ['7E', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7L43', '7V', '6M', '6L43', '5M', '5L43', '4M', '4L43', '3M', '3L43'],\n      secretpower: ['6M', '4M', '3M'],\n      sheercold: ['9L65', '8L65', '7L50', '6L50', '5L55', '4L55', '3L55'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sing: ['9L5', '8L5', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '4E', '3T', '3E'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      solarbeam: ['8V', '7V'],\n      sparklingaria: ['9E', '8E'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      tickle: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['9M', '9L30', '8L30', '7T', '7L14', '6T', '6L14', '5L14', '4M', '4L14', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '4E'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  ['ditto', { transform: ['9L1', '8L1', '8V', '7L1', '7V', '7S0', '6L1', '5L1', '4L1', '3L1'] }],\n  [\n    'eevee',\n    {\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '5S2', '4M', '4S0', '3M'],\n      babydolleyes: ['9L15', '8L15', '7L9', '7S5', '6L9', '6S3', '6S4'],\n      batonpass: ['9M', '9L35', '8M', '8L35', '7L33', '7V', '6L33', '5L33', '4L36', '3L36'],\n      bide: ['7V'],\n      bite: ['9L25', '8L25', '8V', '7L17', '7V', '6L17', '5L17', '4L29', '4S0', '3L30'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      calmmind: ['9M'],\n      captivate: ['7E', '6E', '4M'],\n      celebrate: ['8S6', '7S5', '6S3'],\n      charm: ['9M', '9L45', '8M', '8L45', '7L29', '7E', '7V', '6L29', '6E', '5L29', '5E', '5D', '4E', '3E'],\n      confide: ['7M', '6M'],\n      copycat: ['9L30', '8L30'],\n      covet: ['9L1', '8L1', '8S6', '7T', '7L1', '7E', '6T', '6L23', '6E', '5T', '5L21', '5E', '4E', '4S0'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      detect: ['9E', '8E', '7E', '7V', '6E', '5E', '4E'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L50', '8L50', '8V', '7L37', '7V', '6L37', '5L37', '3T'],\n      doublekick: ['9E', '8E', '8V'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M', '5S2'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '4E', '3T', '3E'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      flail: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '4S1', '3E'],\n      focusenergy: ['8M', '7V'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L9', '4L15', '3L16'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '8V', '8S6', '7T', '7L1', '6T', '6L1', '6S4', '5T', '5L1', '4T', '4L1', '4S0', '3L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '4S1', '3M'],\n      laserfocus: ['7T'],\n      lastresort: ['9L55', '8L55', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L50'],\n      mimic: ['7V', '3T'],\n      mudslap: ['9M', '9E', '8E', '7V', '4T', '3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      payday: ['8M', '8V'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L10', '8L10', '8V', '7L13', '7V', '6L13', '6S4', '5L13', '4L22', '4S1', '3L23'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      refresh: ['7L20', '6L20'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '5S2', '4M', '3M'],\n      roar: ['9M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L5', '8L5', '8V', '7L5', '7V', '7S5', '6L5', '6S3', '5L5', '5D', '4L8', '3L8'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sing: ['5S2'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M', '8M', '7E', '6E', '5E'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L20', '8M', '8L20', '8V', '7L17', '7V', '6L10', '6S3', '6S4', '5D', '4T', '3T'],\n      synchronoise: ['7E', '6E', '5E'],\n      tackle: ['9L1', '8L1', '8V', '8S6', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L40', '8L40', '8V', '7L25', '7V', '6L25', '5L25', '4L43', '3L42'],\n      terablast: ['9M'],\n      tickle: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trumpcard: ['7L45', '6L45', '5L45', '4L57', '4S1'],\n      weatherball: ['9M', '8M'],\n      wish: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['9E', '8E', '7E', '6E', '5E', '4E']\n    }\n  ],\n  [\n    'eeveestarter',\n    {\n      alluringvoice: ['9M'],\n      babydolleyes: ['9L15'],\n      baddybad: ['8V', '7T'],\n      batonpass: ['9M', '9L35'],\n      bite: ['9L25', '8V', '7L17'],\n      bodyslam: ['9M'],\n      bouncybubble: ['8V', '7T'],\n      buzzybuzz: ['8V', '7T'],\n      charm: ['9M', '9L45'],\n      copycat: ['9L30'],\n      covet: ['9L1'],\n      curse: ['9M', '9E'],\n      detect: ['9E'],\n      dig: ['9M', '8V', '7M'],\n      doubleedge: ['9M', '9L50', '8V', '7L28'],\n      doublekick: ['9E', '8V', '7L10'],\n      endure: ['9M'],\n      facade: ['9M', '8V', '7M'],\n      faketears: ['9M'],\n      flail: ['9E'],\n      freezyfrost: ['8V', '7T'],\n      glitzyglow: ['8V', '7T'],\n      growl: ['9L1', '8V', '7L1', '7S0'],\n      headbutt: ['8V', '7M'],\n      helpinghand: ['9M', '9L1', '8V', '7M', '7L31'],\n      hypervoice: ['9M'],\n      irontail: ['8V', '7M'],\n      lastresort: ['9L55'],\n      mudslap: ['9M', '9E'],\n      payday: ['8V', '7M'],\n      protect: ['9M', '8V', '7M'],\n      quickattack: ['9L10', '8V', '7L6'],\n      raindance: ['9M'],\n      reflect: ['8V', '7M'],\n      rest: ['9M', '8V', '7M'],\n      roar: ['9M'],\n      sandattack: ['9L5', '8V', '7L14'],\n      sappyseed: ['8V', '7T'],\n      shadowball: ['9M', '8V', '7M'],\n      sizzlyslide: ['8V', '7T'],\n      sleeptalk: ['9M'],\n      sparklyswirl: ['8V', '7T'],\n      storedpower: ['9M'],\n      substitute: ['9M', '8V', '7M'],\n      sunnyday: ['9M'],\n      swift: ['9M', '9L20', '8V', '7L21'],\n      tackle: ['9L1', '8V', '7L1', '7S0'],\n      tailwhip: ['9L1', '8V', '7L3', '7S0'],\n      takedown: ['9M', '9L40', '8V', '7L24'],\n      tickle: ['9E'],\n      toxic: ['8V', '7M'],\n      veeveevolley: ['8V', '7T'],\n      weatherball: ['9M'],\n      wish: ['9E'],\n      yawn: ['9E']\n    }\n  ],\n  [\n    'vaporeon',\n    {\n      acidarmor: ['9L45', '8L45', '8V', '7L29', '7V', '6L29', '5L29', '4L64', '3L47'],\n      alluringvoice: ['9M'],\n      aquaring: ['9L35', '8L35', '7L25', '6L25', '5L25', '4L43'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['9L30', '8L30', '8V', '7L20', '7V', '6L20', '5L21', '4L36', '3L36'],\n      babydolleyes: ['9L15', '8L15', '7L9'],\n      batonpass: ['9M', '9L1', '8M', '8L1'],\n      bide: ['7V'],\n      bite: ['9L1', '8L1', '7V', '5L29', '4L29', '3L30'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brine: ['8M', '4M'],\n      bubblebeam: ['7V'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      celebrate: ['6S1'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      curse: ['9M', '7V'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '9L1', '8L1', '7V', '3T'],\n      doublekick: ['8V'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      flipturn: ['9M', '8T'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '8V'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '9L20', '8L20', '8V', '7L33', '7V', '6L33', '5L33', '4L57', '3L42'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '8V', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S0', '4T', '4L1', '3L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L50', '8M', '8L50', '8V', '7L45', '7V', '6L45', '5L45', '4L71', '3L52'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '7S2', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lastresort: ['9L55', '8L55', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L50'],\n      liquidation: ['9M', '8M'],\n      mimic: ['7V', '3T'],\n      mist: ['7V'],\n      muddywater: ['9M', '9L40', '8M', '8L40', '7L37', '6L37', '5L37', '4L78'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payday: ['8M', '8V'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L10', '8L10', '8V', '7L13', '7V', '6L13', '5L13', '4L22', '3L23'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '7S2', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '7S2', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L5', '8L5', '8V', '7L5', '7V', '6L5', '6S1', '5L5', '5S0', '4L8', '3L8'],\n      scald: ['9M', '8M', '8V', '7M', '7S2', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M', '8M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L1', '8M', '8L1', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '6S1', '5L1', '5S0', '4L1', '3L1'],\n      takedown: ['9M', '9L1', '8L1', '7V'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L0', '8L0', '8V', '7L1', '7V', '6L9', '6S1', '5L9', '4L15', '3L16'],\n      waterpulse: ['9M', '9L25', '8L25', '7T', '7L17', '6T', '6L17', '5L17', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['8V']\n    }\n  ],\n  [\n    'jolteon',\n    {\n      agility: ['9M', '9L45', '8M', '8L45', '8V', '7L29', '7V', '6L29', '5L29', '4L64', '3L47'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      babydolleyes: ['9L15', '8L15', '7L9'],\n      batonpass: ['9M', '9L1', '8M', '8L1'],\n      bide: ['7V'],\n      bite: ['9L1', '8L1'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      celebrate: ['6S1'],\n      charge: ['9M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      curse: ['9M', '7V'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      discharge: ['9L40', '8L40', '7L37', '6L37', '5L37', '4L78'],\n      doubleedge: ['9M', '9L1', '8L1', '7V', '3T'],\n      doublekick: ['9L25', '8L25', '8V', '7L17', '7V', '6L17', '5L17', '4L29', '3L30'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      falseswipe: ['9M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '8V'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '8V', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S0', '4T', '4L1', '3L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lastresort: ['9L55', '8L55', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L50'],\n      lightscreen: ['9M', '8M', '8V', '7M', '7S2', '6M', '5M', '4M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      metalsound: ['9M'],\n      mimic: ['7V', '3T'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payday: ['8M', '8V'],\n      pinmissile: ['9L35', '8M', '8L35', '8V', '7L25', '7V', '6L25', '5L25', '4L36', '3L36'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L10', '8L10', '8V', '7L13', '7V', '6L13', '5L13', '4L22', '3L23'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L5', '8L5', '8V', '7L5', '7V', '6L5', '6S1', '5L5', '5S0', '4L8', '3L8'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '7S2', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M', '8M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L1', '8M', '8L1', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '6S1', '5L1', '5S0', '4L1', '3L1'],\n      takedown: ['9M', '9L1', '8L1', '7V'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L50', '8M', '8L50', '8V', '7M', '7L45', '7V', '6M', '6L45', '5M', '5L45', '4M', '4L71', '3M', '3L52'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '7S2', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '9L30', '8M', '8L30', '7L20', '6L20', '5L21', '4L43'],\n      thundershock: ['9L0', '8L0', '8V', '7L1', '7V', '6L9', '6S1', '5L9', '4L15', '3L16'],\n      thunderwave: ['9M', '9L20', '8M', '8L20', '8V', '7M', '7L33', '7V', '6M', '6L33', '5M', '5L33', '4M', '4L57', '3T', '3L42'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      voltswitch: ['9M', '8M', '7M', '7S2', '6M', '5M'],\n      weatherball: ['9M', '8M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['8V'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'flareon',\n    {\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      babydolleyes: ['9L15', '8L15', '7L9'],\n      batonpass: ['9M', '9L1', '8M', '8L1'],\n      bide: ['7V'],\n      bite: ['9L25', '8L25', '7L17', '7V', '6L17', '5L17', '4L29', '3L30'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      burningjealousy: ['9M', '8T'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      celebrate: ['6S1'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      curse: ['9M', '7V'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L1', '8L1', '7V', '3T'],\n      doublekick: ['8V'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L0', '8L0', '8V', '7L1', '7V', '6L9', '6S1', '5L9', '4L15', '3L16'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '7S2', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '5L45', '4M', '4L71', '3M'],\n      firefang: ['9M', '9L30', '8M', '8L30', '7L20', '6L20', '5L21', '4L43'],\n      firespin: ['9M', '9L35', '8M', '8L35', '8V', '7L25', '7V', '6L25', '5L25', '4L36', '3L36'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3L52'],\n      flareblitz: ['9M', '9L50', '8M', '8L50', '8V', '7L45', '7S2', '6L45'],\n      focusenergy: ['8M', '8V'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '8V'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '8V', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S0', '4T', '4L1', '3L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lastresort: ['9L55', '8L55', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L50'],\n      lavaplume: ['9L40', '8L40', '7L37', '6L37', '5L37', '4L78'],\n      leer: ['7V', '3L47'],\n      mimic: ['7V', '3T'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      payday: ['8M', '8V'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L10', '8L10', '8V', '7L13', '7V', '7S2', '6L13', '5L13', '4L22', '3L23'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L5', '8L5', '8V', '7L5', '7V', '6L5', '6S1', '5L5', '5S0', '4L8', '3L8'],\n      scaryface: ['9M', '9L45', '8M', '8L45', '7L29', '6L29', '5L29', '4L64'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smog: ['9L20', '8L20', '8V', '7L33', '7V', '6L33', '5L33', '4L57', '3L42'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M', '8M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L1', '8M', '8L1', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '6S1', '5L1', '5S0', '4L1', '3L1'],\n      takedown: ['9M', '9L1', '8L1', '7V'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '8M', '8V', '7M', '7S2', '6M', '5M', '4M'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['8V'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'espeon',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      babydolleyes: ['9L15', '8L15', '7L9'],\n      batonpass: ['9M', '9L1', '8M', '8L1'],\n      bite: ['9L1', '8L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      celebrate: ['6S2'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L0', '8L0', '7L1', '7V', '6L9', '6S2', '5L9', '4L15', '3L16'],\n      copycat: ['9L1', '8L1'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['9M', '8M', '7M', '7S3', '6M'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L1', '8L1', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L50', '8M', '8L50', '7L25', '6L25', '5L25', '4L43'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M'],\n      growl: ['9L1', '8L1'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S1', '4T', '4L1', '3L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      imprison: ['9M'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lastresort: ['9L55', '8L55', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L50'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      mimic: ['3T'],\n      morningsun: ['9L30', '8L30', '7L33', '7V', '6L33', '5L33', '4L71', '3L52', '3S0'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payday: ['8M'],\n      powergem: ['9M'],\n      powerswap: ['9L35', '8M', '8L35', '7L45', '6L45', '5L45', '4L78'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L25', '8L25', '7L20', '7V', '6L20', '5L21', '4L36', '3L36', '3S0'],\n      psychic: ['9M', '9L40', '8M', '8L40', '7M', '7L37', '7V', '7S3', '6M', '6L37', '5M', '5L37', '4M', '4L64', '3M', '3L47', '3S0'],\n      psychicfangs: ['9M', '8M'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '9L45', '8L45', '7M', '7L29', '7V', '6M', '6L29', '5M', '5L29', '4M', '4L57', '3T', '3L42', '3S0'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      quickattack: ['9L10', '8L10', '7L13', '7V', '6L13', '5L13', '4L22', '3L23'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['9M', '8M', '7M', '7S3', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L5', '8L5', '7L5', '7V', '6L5', '6S2', '5L5', '5S1', '4L8', '3L8'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '7V', '7S3', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L20', '8M', '8L20', '7L17', '7V', '6L17', '5L17', '4T', '4L29', '3T', '3L30'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5S1', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '7L1', '7V', '6L1', '6S2', '5L1', '5S1', '4L1', '3L1'],\n      takedown: ['9M', '9L1', '8L1'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunderwave: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      weatherball: ['9M', '8M'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'umbreon',\n    {\n      alluringvoice: ['9M'],\n      assurance: ['9L25', '8M', '8L25', '7L25', '6L25', '5L25', '4L43'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      babydolleyes: ['9L15', '8L15', '7L9'],\n      batonpass: ['9M', '9L1', '8M', '8L1'],\n      bite: ['9L1', '8L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      celebrate: ['6S2'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L20', '8L20', '7L17', '7V', '6L17', '5L17', '4L29', '3L30'],\n      copycat: ['9L1', '8L1'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      crunch: ['9M', '8M'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '9L40', '8M', '8L40', '7M', '6M', '5T', '4M'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L1', '8L1', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      feintattack: ['7L20', '7V', '6L20', '5L21', '4L36', '3L36', '3S0'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1'],\n      guardswap: ['9L35', '8M', '8L35', '7L45', '6L45', '5L45', '4L78'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S1', '4T', '4L1', '3L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lashout: ['9M', '8T'],\n      lastresort: ['9L55', '8L55', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L50'],\n      lightscreen: ['9M'],\n      meanlook: ['9L50', '8L50', '7L37', '7V', '6L37', '5L37', '4L57', '3L42', '3S0'],\n      mimic: ['3T'],\n      moonlight: ['9L30', '8L30', '7L33', '7V', '7S3', '6L33', '5L33', '4L71', '3L52', '3S0'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      payday: ['8M'],\n      protect: ['9M', '8M', '7M', '7V', '7S3', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      pursuit: ['7L1', '7V', '6L9', '6S2', '5L9', '4L15', '3L16'],\n      quickattack: ['9L10', '8L10', '7L13', '7V', '6L13', '5L13', '4L22', '3L23'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['9M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L5', '8L5', '7L5', '7V', '6L5', '6S2', '5L5', '5S1', '4L8', '3L8'],\n      scaryface: ['9M'],\n      screech: ['9L45', '8M', '8L45', '7L29', '7V', '6L29', '5L29', '4L64', '3L47', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '9L0', '8M', '8L0', '7M', '7S3', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L1', '8M', '8L1', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5S1', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '7L1', '7V', '6L1', '6S2', '5L1', '5S1', '4L1', '3L1'],\n      takedown: ['9M', '9L1', '8L1'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderwave: ['9M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '7M', '7V', '7S3', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      weatherball: ['9M', '8M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'leafeon',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      babydolleyes: ['9L15', '8L15', '7L9'],\n      batonpass: ['9M', '9L1', '8M', '8L1'],\n      bite: ['9L1', '8L1'],\n      bodyslam: ['9M', '8M'],\n      bulletseed: ['9M', '8M', '4M'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      celebrate: ['6S1'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      curse: ['9M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleedge: ['9M', '9L1', '8L1'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M', '8M'],\n      flash: ['6M', '5M', '4M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigadrain: ['9M', '9L40', '8M', '8L40', '7T', '7L25', '6T', '6L25', '5T', '5L25', '4M', '4L43'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['7L17', '6L17', '5L17', '4L57'],\n      grassyglide: ['9M', '8T'],\n      growl: ['9L1', '8L1'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S0', '4T', '4L1'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lastresort: ['9L55', '8L55', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L50'],\n      leafblade: ['9L50', '8M', '8L50', '7L45', '7S2', '6L45', '5L45', '4L71'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L20', '8L20'],\n      magicalleaf: ['9M', '9L25', '8M', '8L25', '7L20', '6L20', '5L21', '4L36'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      payday: ['8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      quickattack: ['9L10', '8L10', '7L13', '6L13', '5L13', '4L22'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      razorleaf: ['9L0', '8L0', '7L1', '6L9', '6S1', '5L9', '4L15'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L5', '8L5', '7L5', '6L5', '6S1', '5L5', '5S0', '4L8'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      solarblade: ['9M', '8M'],\n      storedpower: ['9M', '8M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '9L35', '8M', '8L35', '7M', '7L37', '7S2', '6M', '6L37', '5M', '5L37', '4M', '4L64'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '9L1', '8M', '8L1', '4T'],\n      swordsdance: ['9M', '9L45', '8M', '8L45', '7M', '7L29', '7S2', '6M', '6L29', '5M', '5L29', '4M', '4L78'],\n      synthesis: ['9L30', '8L30', '7T', '7L33', '7S2', '6T', '6L33', '5T', '5L29', '4T', '4L29'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      tailwhip: ['9L1', '8L1', '7L1', '6L1', '6S1', '5L1', '5S0', '4L1'],\n      takedown: ['9M', '9L1', '8L1'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      weatherball: ['9M', '8M'],\n      workup: ['8M', '7M', '5M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'glaceon',\n    {\n      alluringvoice: ['9M'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      auroraveil: ['7M', '7S2'],\n      avalanche: ['9M', '8M', '4M'],\n      babydolleyes: ['9L15', '8L15', '7L9'],\n      barrier: ['7L29', '6L29', '5L29', '4L78'],\n      batonpass: ['9M', '9L1', '8M', '8L1'],\n      bite: ['9L25', '8L25', '7L17', '6L17', '5L17', '4L29'],\n      blizzard: ['9M', '9L50', '8M', '8L50', '7M', '7L45', '7S2', '6M', '6L45', '5M', '5L45', '4M', '4L71'],\n      bodyslam: ['9M', '8M'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      celebrate: ['6S1'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T'],\n      curse: ['9M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleedge: ['9M', '9L1', '8L1'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M', '8M'],\n      focusenergy: ['8M'],\n      freezedry: ['9L40', '8L40'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M'],\n      growl: ['9L1', '8L1'],\n      hail: ['8M', '8L35', '7M', '7L37', '7S2', '6M', '6L37', '5M', '5L37', '4M', '4L64'],\n      haze: ['9M'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S0', '4T', '4L1'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icefang: ['9M', '9L30', '8M', '8L30', '7L20', '6L20', '5L21', '4L43'],\n      iceshard: ['9L20', '8L20', '7L25', '6L25', '5L25', '4L36'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L0', '8M', '8L0', '7T', '7L1', '6T', '6L9', '6S1', '5T', '5L9', '4T', '4L15'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      laserfocus: ['7T'],\n      lastresort: ['9L55', '8L55', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4T', '4L50'],\n      mirrorcoat: ['9L45', '8L45', '7L33', '6L33', '5L33', '4L57'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      payday: ['8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      quickattack: ['9L10', '8L10', '7L13', '6L13', '5L13', '4L22'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L5', '8L5', '7L5', '6L5', '6S1', '5L5', '5S0', '4L8'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '7S2', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M', '9L35'],\n      storedpower: ['9M', '8M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '9L1', '8M', '8L1', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      tailwhip: ['9L1', '8L1', '7L1', '6L1', '6S1', '5L1', '5S0', '4L1'],\n      takedown: ['9M', '9L1', '8L1'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      weatherball: ['9M', '8M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'porygon',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L30', '8M', '8L30', '8V', '7L12', '7V', '6L12', '5L12', '4L12', '3L9'],\n      allyswitch: ['8M', '7T'],\n      barrier: ['8V'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      conversion: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      conversion2: ['9L25', '8L25', '8S1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      curse: ['7V'],\n      defensecurl: ['7V'],\n      discharge: ['9L40', '8L40', '7L40', '6L40', '5L40', '4L40'],\n      doubleedge: ['9M', '9L50', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      eerieimpulse: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      guardswap: ['8M'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lockon: ['9L55', '8L55', '7L45', '7V', '6L45', '5L45', '4L45', '3L32'],\n      magiccoat: ['8L50', '7T', '7L56', '6T', '6L56', '5T', '5L56', '4T', '4L56'],\n      magnetrise: ['9L10', '8L10', '8S1', '7T', '7L23', '6T', '6L23', '5T', '5L23', '4L23'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L20', '8L20', '8V', '8S1', '7L7', '7V', '6L7', '5L7', '5S0', '4L7', '3L12'],\n      psychic: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psywave: ['7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['9L35', '8L35', '8V', '7L18', '7V', '6L18', '5L18', '4L18', '3L20'],\n      recycle: ['9L5', '8L5', '7T', '7L34', '6T', '6L34', '5T', '5L34', '4M', '4L34', '3L44'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      sharpen: ['8V', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L24'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '7L29', '6T', '6L29', '5T', '5L29', '4T', '4L29'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      speedswap: ['8M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      telekinesis: ['7T'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thundershock: ['9L15', '8L15', '8S1'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['9L45', '8M', '8L45', '8V', '7L50', '7V', '6L50', '5L51', '4L51', '3L36'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['9L60', '8L60', '7L62', '7V', '6L62', '5L62', '4L62', '3L48'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'porygon2',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L30', '8M', '8L30', '7L12', '7V', '6L12', '5L12', '4L12', '3L9'],\n      allyswitch: ['8M', '7T'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      conversion: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      conversion2: ['9L25', '8L25', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      curse: ['7V'],\n      defensecurl: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L24'],\n      discharge: ['9L40', '8L40', '7L40', '6L40', '5L40', '4L40'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      eerieimpulse: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      guardswap: ['8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '9L60', '8M', '8L65', '7M', '7L67', '7V', '6M', '6L67', '5M', '5L67', '4M', '4L67', '3M'],\n      icebeam: ['9M', '9S1', '8M', '8S0', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lockon: ['9L50', '8L55', '7L45', '7V', '6L45', '5L45', '4L45', '3L32'],\n      magiccoat: ['8L50', '7T', '7L1', '6T', '6L1', '5T', '5L56', '4T', '4L56'],\n      magnetrise: ['9L1', '8L1', '7T', '7L23', '6T', '6L23', '5T', '5L23', '4L23'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L20', '8L20', '7L7', '7V', '6L7', '5L7', '4L7', '3L12'],\n      psychic: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['9L35', '9S1', '8L35', '8S0', '7L18', '7V', '6L18', '5L18', '4L18', '3L20'],\n      recycle: ['9L1', '8L1', '7T', '7L34', '6T', '6L34', '5T', '5L34', '4M', '4L34', '3L44'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '7L29', '6T', '6L29', '5T', '5L29', '4T', '4L29'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      speedswap: ['8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      terablast: ['9M', '9S1'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8S0', '7M', '6M', '5M', '4M', '3M'],\n      thundershock: ['9L15', '8L15'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['9L45', '8M', '8L45', '7L50', '7V', '6L50', '5L51', '4L51', '3L36'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '9S1', '8M', '8S0', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['9L55', '8L60', '7L1', '7V', '6L1', '5L62', '4L62', '3L48'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'porygonz',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      agility: ['9M', '9L30', '8M', '8L30', '7L12', '6L12', '5L12', '4L12'],\n      allyswitch: ['8M', '7T'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      conversion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      conversion2: ['9L25', '8L25', '7L1', '6L1', '5L1', '4L1'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defensecurl: ['9L1', '8L1'],\n      discharge: ['9L40', '8L40', '7L40', '6L40', '5L40', '4L40'],\n      doubleedge: ['9M', '9L50'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      eerieimpulse: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      embargo: ['7M', '7L34', '6M', '6L34', '5M', '5L34', '4M', '4L34'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      guardswap: ['8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '9L65', '8M', '8L65', '7M', '7L67', '6M', '6L67', '5M', '5L67', '4M', '4L67'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lockon: ['9L55', '8L55', '7L45', '6L45', '5L45', '4L45'],\n      magiccoat: ['8L50', '7T', '7L1', '6T', '6L1', '5T', '5L56', '4T', '4L56'],\n      magnetrise: ['9L1', '8L1', '7T', '7L23', '6T', '6L23', '5T', '5L23', '4L23'],\n      nastyplot: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M', '9L20', '8L20', '7L7', '6L7', '5L7', '4L7'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recover: ['9L35', '8L35', '7L18', '6L18', '5L18', '4L18'],\n      recycle: ['9L1', '8L1', '7T', '6T', '5T', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '7L29', '6T', '6L29', '5T', '5L29', '4T', '4L29'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      speedswap: ['8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thundershock: ['9L15', '8L15'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      triattack: ['9L45', '8M', '8L45', '7L50', '6L50', '5L51', '4L51'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      wonderroom: ['8M', '7T', '5T'],\n      zapcannon: ['9L60', '8L60', '7L1', '6L1', '5L62', '4L62'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'omanyte',\n    {\n      ancientpower: ['8L30', '7L37', '7V', '6L37', '5L37', '4T', '4L37', '3L49'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7E', '7V', '6E', '5E'],\n      bind: ['8L1', '7T', '6T', '5T'],\n      bite: ['8E', '8V', '7L7', '7V', '6L7', '5L7', '5D', '5S0', '4L7', '3L13'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      brine: ['8M', '8L35', '7L28', '6L28', '5L28', '4M', '4L28'],\n      bubblebeam: ['8E', '7E', '7V', '6E', '5E', '5S0', '4E', '3E'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      constrict: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      curse: ['7V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gyroball: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hornattack: ['7V'],\n      hydropump: ['8M', '8L60', '8V', '7L55', '7V', '6L55', '5L55', '4L52', '3L55'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '5D', '4T', '3T'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      leer: ['8L20', '8V', '7L19', '7V', '6L19', '5L19', '4L19', '3L31'],\n      meteorbeam: ['8T'],\n      mimic: ['7V', '3T'],\n      muddywater: ['8M', '7E', '6E', '5E', '5D', '4E'],\n      mudshot: ['8M', '8L25', '7L25', '6L25', '5L25', '4L25', '3L25'],\n      naturalgift: ['4M'],\n      protect: ['8M', '8L41', '8V', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L34', '3M', '3L37'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      reflecttype: ['8E', '7E', '6E'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M', '8L45', '7L46', '6L46', '5L46', '4L46'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '8V', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8V'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['8L5', '7L16', '7V', '6L16', '5L16', '4T', '4L16', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L10'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shellsmash: ['8L55', '8V', '7L50', '6L50', '5L52'],\n      slam: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spikecannon: ['7V'],\n      spikes: ['8M', '7E', '6E', '5E', '4E', '3E'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      supersonic: ['8E', '7E', '7V', '6E', '5E', '5S0', '4E', '3E'],\n      surf: ['8M', '8L50', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      tickle: ['8E', '7L43', '6L43', '5L43', '4L43', '3L43'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['8M', '7E', '6E', '5E', '4E'],\n      waterfall: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L15', '8V', '7L10', '7V', '6L10', '5L10', '4L10', '3L19'],\n      waterpulse: ['8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      whirlpool: ['8M', '7E', '7V', '6E', '5E', '4M'],\n      withdraw: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      wringout: ['7E', '6E', '5E', '4E']\n    }\n  ],\n  [\n    'omastar',\n    {\n      ancientpower: ['8L30', '7L37', '7V', '6L37', '5L37', '4T', '4L37', '3L55'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['8V', '7V'],\n      bind: ['8L1', '7T', '6T', '5T'],\n      bite: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      brine: ['8M', '8L35', '7L28', '6L28', '5L28', '4M', '4L28'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      constrict: ['8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      crunch: ['8M', '8L0'],\n      curse: ['7V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      gyroball: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hornattack: ['7V'],\n      horndrill: ['7V'],\n      hydropump: ['8M', '8L70', '8V', '7L1', '7V', '6L1', '5L75', '4L67', '3L65'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      leer: ['8L20', '8V', '7L19', '7V', '6L19', '5L19', '4L19', '3L31'],\n      liquidation: ['8M'],\n      meteorbeam: ['8T'],\n      mimic: ['7V', '3T'],\n      muddywater: ['8M'],\n      mudshot: ['8M', '8L25', '7L25', '6L25', '5L25', '4L25', '3L25'],\n      naturalgift: ['4M'],\n      pinmissile: ['8M'],\n      protect: ['8M', '8L43', '8V', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L34', '3M', '3L37'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M', '8L49', '7L56', '6L56', '5L56', '4L56'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8V'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['8L1', '7L16', '7V', '6L16', '5L16', '4T', '4L16', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      shellsmash: ['8L63', '8V', '7L67', '6L67', '5L67'],\n      skullbash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spikecannon: ['8V', '7L1', '7V', '6L40', '5L40', '4L40', '3L40'],\n      spikes: ['8M'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      supersonic: ['8V'],\n      surf: ['8M', '8L56', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      tickle: ['7L48', '6L48', '5L48', '4L48', '3L46'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['8M'],\n      waterfall: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L15', '8V', '7L10', '7V', '6L10', '5L10', '4L10', '3L1'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '7V', '4M'],\n      withdraw: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'kabuto',\n    {\n      absorb: ['8L1', '8V', '7L6', '7V', '6L6', '5L6', '5D', '4L6', '3L13'],\n      aerialace: ['7M', '3M'],\n      ancientpower: ['8L30', '7L46', '7V', '6L46', '5L46', '4T', '4L46', '3L55'],\n      aquajet: ['8L15', '8V', '7L31', '6L31', '5L31', '4L31'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      brine: ['8M', '8L35', '4M'],\n      bubblebeam: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8E', '7E', '6E', '5E', '5S0', '4E', '3E'],\n      curse: ['7V'],\n      dig: ['8M', '8V', '7V', '6M', '5M', '5S0', '4M', '4E', '3M', '3E'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      endure: ['8M', '7L26', '7V', '6L26', '5L26', '4M', '4L26', '3T', '3L37'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      foresight: ['7E', '6E', '5E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      harden: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      headbutt: ['8V'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['8M', '7V'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      leechlife: ['8M', '8L45', '8V'],\n      leer: ['8L20', '8V', '7L11', '7V', '6L11', '5L11', '4L11', '3L19'],\n      liquidation: ['8M', '8L50'],\n      megadrain: ['8E', '8V', '7L36', '7V', '6L36', '5L36', '4L36', '3L49'],\n      metalsound: ['8L55', '7L41', '6L41', '5L41', '4L41', '3L43'],\n      meteorbeam: ['8T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['8M', '8L25', '7L16', '7E', '6L16', '6E', '5L16', '5E', '4L16', '4E', '3L25'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      protect: ['8M', '8L41', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rapidspin: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8V'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L10', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L31'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scratch: ['8L5', '8V', '7L1', '7V', '6L1', '5L1', '5S0', '4L1', '3L1'],\n      screech: ['8M', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M', '3M'],\n      slash: ['7V'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '5D', '4M'],\n      stoneedge: ['8M', '8L60'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['8E', '7E', '7V', '6E'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      wringout: ['7L50', '6L50', '5L51', '4L51']\n    }\n  ],\n  [\n    'kabutops',\n    {\n      absorb: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['8L30', '7L54', '7V', '6L54', '5L54', '4T', '4L54', '3L65'],\n      aquajet: ['8L15', '8V', '7L31', '6L31', '5L31', '4L31'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      blizzard: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '7V', '3T'],\n      brickbreak: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '8L35', '4M'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8V'],\n      crosspoison: ['8M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dig: ['8M', '8V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      endure: ['8M', '7L26', '7V', '6L26', '5L26', '4M', '4L26', '3T', '3L37'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['8L1', '8V', '7L1', '6L1', '5L1', '4L1'],\n      flipturn: ['8T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T', '3L1'],\n      gigadrain: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      harden: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8V', '7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['8M', '7V'],\n      hyperbeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      leechlife: ['8M', '8L49', '8V'],\n      leer: ['8L20', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      liquidation: ['8M', '8L56', '7T'],\n      lowkick: ['8M', '7T', '6T', '5T', '4T'],\n      megadrain: ['8V', '7L36', '7V', '6L36', '5L36', '4L36', '3L55'],\n      megakick: ['8M', '7V', '3T'],\n      metalsound: ['8L63', '7L45', '6L45', '5L45', '4L45', '3L46'],\n      meteorbeam: ['8T'],\n      mimic: ['7V', '3T'],\n      mudshot: ['8M', '8L25', '7L16', '6L16', '5L16', '4L16', '3L25'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      nightslash: ['8L1', '7L1', '6L1', '5L72', '4L72'],\n      protect: ['8M', '8L43', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychocut: ['8M'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorshell: ['8M'],\n      razorwind: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '8V', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8V'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L31'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '8V', '7M', '6M', '5M'],\n      scratch: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['8M', '8V'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      skullbash: ['7V'],\n      slash: ['8L0', '8V', '7L1', '7V', '6L40', '5L40', '4L40', '3L40'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      stoneedge: ['8M', '8L70', '7M', '6M', '5M', '4M'],\n      submission: ['7V'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      surf: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['7V'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '7V', '4M'],\n      wringout: ['7L63', '6L63', '5L63', '4L63'],\n      xscissor: ['8M', '8V', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'aerodactyl',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8M', '8L50', '8V', '7L17', '7V', '6L17', '5L17', '4L17', '3L8'],\n      aircutter: ['4T'],\n      ancientpower: ['8L1', '7L25', '7V', '7S1', '6L25', '5L25', '4T', '4L25', '3L29'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      assurance: ['8M', '7E', '6E', '5E', '5D', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bite: ['8L1', '8V', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L15'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      celebrate: ['7S1'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L30', '8V', '7L33', '6L33', '5L33', '4L33'],\n      curse: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      dragonclaw: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['8M'],\n      dragonpulse: ['8M', '8V', '7T', '6T', '5T', '4M'],\n      dragonrage: ['7V'],\n      dualwingbeat: ['8T'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['8M', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      flamethrower: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fly: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '8L60', '7M', '7L81', '6M', '6L81', '5M', '5L81', '4M', '4L73'],\n      headbutt: ['8V', '7V', '4T'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hurricane: ['8M'],\n      hyperbeam: ['8M', '8L55', '8V', '7M', '7L65', '7V', '6M', '6L65', '5M', '5L65', '4M', '4L57', '3M', '3L50'],\n      icefang: ['8M', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['8M', '8L35', '7T', '7L1', '6T', '6L1', '5T', '5L57', '4T', '4L49'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      meteorbeam: ['8T'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      protect: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['8M'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rage: ['7V'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorwind: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['8L25', '8V', '7M', '7L9', '7V', '6M', '6L9', '5M', '5L9', '4M', '4L9', '3M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '7S1', '6M', '5M', '4M'],\n      rockslide: ['8M', '8L20', '8V', '7M', '7L73', '6M', '6L73', '5M', '5L73', '4M', '4L65', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8V'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      roost: ['8E', '8V', '7M', '7E', '6M', '6E', '5T', '5E', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scaryface: ['8M', '8L15', '7L1', '7V', '6L1', '5L1', '4L1', '3L36'],\n      secretpower: ['6M', '4M', '3M'],\n      skyattack: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      skydrop: ['7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '8V', '7T', '6T', '5T', '5D', '4M'],\n      steelwing: ['8M', '7M', '7E', '7V', '6M', '6E', '5E', '5S0', '4M', '4E', '3M', '3E'],\n      stoneedge: ['8M', '8L45', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      supersonic: ['8L5', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L22'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      tailwind: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      takedown: ['8L40', '8V', '7L41', '7V', '6L41', '5L41', '4L41', '3L43'],\n      taunt: ['8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderfang: ['8M', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      whirlwind: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      wideguard: ['8E', '7E', '7S1', '6E'],\n      wingattack: ['8L10', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'munchlax',\n    {\n      afteryou: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      amnesia: ['9M', '9L36', '8M', '8L36', '7L9', '6L9', '5L9', '4L9'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      belch: ['9E', '8E', '7E', '6E'],\n      bellydrum: ['9L48', '8L48', '7L44', '6L44'],\n      bite: ['9L16', '8L16'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M', '9L28', '8M', '8L28', '7L25', '6L25', '5L36', '4L33'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      chillingwater: ['9M'],\n      chipaway: ['7L17', '6L17', '5L25'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      covet: ['9L12', '8L12', '7T', '6T', '5T'],\n      crunch: ['9M'],\n      curse: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '4S1'],\n      defensecurl: ['9L4', '8L4', '7L4', '6L4', '5L4', '4L4', '4S0'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      fissure: ['9E', '8E'],\n      flail: ['9L44', '8L44'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '9L32', '8M', '8L32', '7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L36'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      happyhour: ['7S2'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      holdback: ['7S2'],\n      hydropump: ['8M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      incinerate: ['6M', '5M'],\n      lastresort: ['9L52', '8L52', '7T', '7L1', '6T', '6L1', '5T', '5L57', '4T', '4L49'],\n      lick: ['9L1', '9S3', '8L1', '7L1', '7E', '6L1', '6E', '5L12', '5E', '4L12', '4E'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M', '9L40', '8M', '8L40', '7L1', '7S2', '6L1', '5L1', '4L1', '4S0', '4S1'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['7L49', '7E', '6L49', '6E', '5L49', '5E', '4M', '4L44'],\n      odorsleuth: ['7L1', '6L1', '5L1', '4L1', '4S1'],\n      payday: ['8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychic: ['8M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7E', '6E', '5E', '4E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['9L8', '8L8', '7T', '7L1', '6T', '6L1', '5T', '5L17', '4M', '4L17'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rollout: ['7L36', '6L36', '5L44', '4T', '4L41'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      screech: ['9L24', '8M', '8L24', '7L20', '6L20', '5L20', '4L20'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      selfdestruct: ['8M', '7E', '6E', '5E', '4S0'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snatch: ['7T', '7L50', '6T', '6L1', '5T', '5L52'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      stockpile: ['9L20', '8L20', '7L28', '6L28', '5L28', '4L25'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '4E'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swallow: ['9L20', '8L20', '7L33', '6L33', '5L33', '4L28'],\n      tackle: ['9L1', '9S3', '8L1', '7L1', '7S2', '6L1', '5L1', '4L1', '4S0', '4S1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M'],\n      whirlpool: ['8M', '4M'],\n      whirlwind: ['7E', '6E', '5E', '4E'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E']\n    }\n  ],\n  [\n    'snorlax',\n    {\n      afteryou: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      amnesia: ['9M', '9L36', '8M', '8L36', '8V', '7L9', '7V', '6L9', '5L9', '5D', '4L9', '3L5'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      belch: ['9L52', '8L52', '7E', '6E'],\n      bellydrum: ['9L48', '8L48', '7L44', '7V', '6L44', '5L17', '4L17', '3L13'],\n      bide: ['7V'],\n      bite: ['9L16', '8L16'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['9L1', '9S2', '8L1', '7T', '7L41', '7S1', '6T', '6L41', '5T', '5L41', '4T', '4L36', '3L37'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L28', '9S2', '8M', '8L28', '8V', '7L25', '7V', '7S1', '6L25', '5L36', '4L33', '3T', '3L33', '3S0'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      celebrate: ['7S1'],\n      charm: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      chillingwater: ['9M'],\n      chipaway: ['7L17', '6L17', '5L25'],\n      confide: ['7M', '6M'],\n      counter: ['8E', '7E', '7V', '6E', '5E', '4E', '3T'],\n      covet: ['9L1', '8L1', '7T', '6T', '5T', '3L42'],\n      crunch: ['9M', '9L24', '8M', '8L24', '8V', '7L49', '6L49', '5L49', '4L44'],\n      curse: ['9M', '8E', '7E', '7V', '6E', '5E', '4E', '3E', '3S0'],\n      darkestlariat: ['8M'],\n      defensecurl: ['9L1', '8L1', '8V', '7L4', '7V', '6L4', '5L4', '4L4', '3T', '3L9'],\n      dig: ['9M'],\n      doubleedge: ['9M', '8E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '5D', '4T', '3T'],\n      fissure: ['8E', '7E', '7V', '6E', '5E', '4E', '3E', '3S0'],\n      flail: ['9L1', '8L1'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['8E'],\n      gigaimpact: ['9M', '9L56', '8M', '8L56', '7M', '7L35', '6M', '6L57', '5M', '5L57', '4M', '4L49'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hammerarm: ['9L44', '8L44'],\n      harden: ['7V'],\n      hardpress: ['9M'],\n      headbutt: ['8V', '7V', '4T', '3L17'],\n      heatcrash: ['9M', '8M'],\n      heavyslam: ['9M', '9L32', '8M', '8L32', '7L50', '6L50', '5L52'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '9L40', '8M', '8L40', '7L57'],\n      hydropump: ['8M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3L51'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lastresort: ['9L1', '8L1', '7T', '6T', '5T', '4T'],\n      lick: ['9L1', '8L1', '8V', '7L12', '7E', '7V', '6L12', '6E', '5L12', '5E', '4L12', '4E', '3E'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M', '9L1', '8M', '8L1', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      outrage: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      payday: ['8M', '8V', '7V'],\n      poweruppunch: ['7E', '6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7V', '3T'],\n      psywave: ['7V'],\n      pursuit: ['7E', '6E', '5E', '4E'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recycle: ['9L1', '8L1', '7T', '6T', '5T', '5D', '4M'],\n      reflect: ['8V', '7V'],\n      refresh: ['3S0'],\n      rest: ['9M', '9L20', '9S2', '8M', '8L20', '8V', '7M', '7L28', '7V', '6M', '6L28', '5M', '5L28', '4M', '4L25', '3M', '3L25'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7L36', '7V', '6L36', '5L44', '4T', '4L41', '3T', '3L46'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      screech: ['9L1', '8M', '8L1', '8V'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['8V', '7V', '3T'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '9L20', '8M', '8L20', '7M', '7L33', '7V', '6M', '6L33', '5T', '5L33', '4M', '4L28', '3T', '3L37'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T'],\n      snore: ['9L20', '8M', '8L20', '7T', '7L28', '7V', '6T', '6L28', '5T', '5L28', '4T', '4L28', '3T', '3L28'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      steelroller: ['8T'],\n      stockpile: ['9L1', '8L1'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      sunnyday: ['9M', '8M', '7M', '7V', '7S1', '6M', '5M', '4M', '3M'],\n      supercellslam: ['9M'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9L1', '8L1'],\n      tackle: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      whirlwind: ['7E', '6E', '5E', '4E'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['9L12', '9S2', '8L12', '8V', '7L20', '6L20', '5L20', '4L20', '3L21'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'articuno',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L20', '8M', '8L20', '8V', '7L36', '7V', '6L36', '5L36', '4L36', '4S3', '4S4', '3L25', '3S0', '3S1'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '8M'],\n      ancientpower: ['9L25', '8L25', '7L29', '7S7', '6L29', '5L29', '4T', '4L29'],\n      auroraveil: ['7M'],\n      avalanche: ['9M', '8M', '4M'],\n      bide: ['7V'],\n      blizzard: ['9M', '9L65', '9S10', '8M', '8L65', '8V', '7M', '7L78', '7V', '6M', '6L71', '5M', '5L71', '4M', '4L71', '3M', '3L73'],\n      bravebird: ['9M', '8M'],\n      bubblebeam: ['7V'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extrasensory: ['3S2'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M'],\n      fly: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      freezedry: ['9L35', '8L35', '8S8', '7L43', '7S7', '6L1', '6S6'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gust: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '8L50', '7M', '7L57', '7S7', '6M', '6L57', '6S5', '6S6', '5M', '5L85', '4M', '4L85', '3M'],\n      haze: ['9M', '9L60', '9S10', '3S2'],\n      headbutt: ['8V'],\n      healbell: ['3S2'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '9L55', '9S10', '8M', '8L55', '8S8', '7L92', '6L1', '5L92'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: [\n        '9M',\n        '9L45',\n        '8M',\n        '8L45',\n        '8V',\n        '8S8',\n        '7M',\n        '7L71',\n        '7V',\n        '6M',\n        '6L43',\n        '6S5',\n        '6S6',\n        '5M',\n        '5L43',\n        '4M',\n        '4L43',\n        '4S3',\n        '4S4',\n        '3M',\n        '3L49',\n        '3S0',\n        '3S1',\n        '3S2'\n      ],\n      iceshard: ['9L15', '8L15', '8V', '7L15', '6L15', '5L15', '4L15'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      laserfocus: ['7T'],\n      leer: ['8V'],\n      lightscreen: ['9M'],\n      mimic: ['7V', '3T'],\n      mindreader: ['8L60', '7L22', '7V', '6L22', '5L22', '4L22', '4S4', '3L37', '3S0', '3S1'],\n      mirrorcoat: ['8V'],\n      mist: ['9L1', '8L1', '8V', '8S8', '7L8', '7V', '6L8', '5L8', '4L8', '4S4', '3L13', '3S0'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      peck: ['7V'],\n      pluck: ['5M', '4M'],\n      powdersnow: ['9L5', '8L5', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorwind: ['7V'],\n      reflect: [\n        '9M',\n        '9L10',\n        '8M',\n        '8L10',\n        '8V',\n        '7M',\n        '7L50',\n        '7V',\n        '7S7',\n        '6M',\n        '6L50',\n        '6S5',\n        '6S6',\n        '5M',\n        '5L50',\n        '4M',\n        '4L50',\n        '4S3',\n        '3M',\n        '3L61',\n        '3S1'\n      ],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roost: ['9L40', '8L40', '8V', '7M', '7L85', '6M', '6L1', '5T', '5L57', '4M', '4L57', '4S3'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      sheercold: ['9L70', '9S10', '8L70', '7L99', '6L1', '5L78', '4L78', '3L85'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skyattack: ['8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M', '9L50'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwind: ['9M', '9L30', '8L30', '7T', '7L64', '6T', '6L1', '6S5', '5T', '5L64', '4T', '4L64'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      tripleaxel: ['9M', '8T'],\n      twister: ['4T'],\n      uturn: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlwind: ['7V']\n    }\n  ],\n  [\n    'articunogalar',\n    {\n      agility: ['9M', '9L20', '8M', '8L20'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      allyswitch: ['8M'],\n      ancientpower: ['9L25', '8L25'],\n      bravebird: ['9M', '8M'],\n      calmmind: ['9M', '8M'],\n      confusion: ['9L5', '8L5'],\n      doubleteam: ['9L60'],\n      dreameater: ['9L50', '8L50'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      fly: ['9M', '8M'],\n      freezingglare: ['9L45', '8L45', '8S0', '8S1'],\n      futuresight: ['9M', '9L65', '8M', '8L65'],\n      gigaimpact: ['9M', '8M'],\n      guardswap: ['8M'],\n      gust: ['9L1', '8L1'],\n      helpinghand: ['9M'],\n      hurricane: ['9M', '9L55', '8M', '8L55', '8S0', '8S1'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      hypnosis: ['9L15', '8L15'],\n      imprison: ['9M', '8M'],\n      lightscreen: ['9M', '8M'],\n      mindreader: ['8L60'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M'],\n      psychicnoise: ['9M'],\n      psychocut: ['9L35', '8M', '8L35', '8S0', '8S1'],\n      psychoshift: ['8L1', '8S0', '8S1'],\n      psyshock: ['9M', '8M'],\n      raindance: ['9M'],\n      recover: ['9L40', '8L40'],\n      reflect: ['9M', '9L10', '8M', '8L10'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      shadowball: ['9M', '8M'],\n      skillswap: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      snowscape: ['9M'],\n      steelwing: ['8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M', '9L30', '8L30'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M', '9L70', '8M', '8L70'],\n      uturn: ['9M', '8M']\n    }\n  ],\n  [\n    'zapdos',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L20', '8M', '8L20', '8V', '8S8', '7L43', '7V', '6L43', '6S5', '6S6', '5L43', '4L43', '4S3', '4S4', '3L25', '3S0', '3S1'],\n      aircutter: ['9M', '4T'],\n      ancientpower: ['9L25', '8L25', '7L29', '7S7', '6L29', '5L29', '4T', '4L29'],\n      batonpass: ['9M', '8M', '3S2'],\n      bide: ['7V'],\n      bravebird: ['9M', '8M', '8S8'],\n      charge: ['9M', '9L30', '8L30', '7L36', '6L36', '5L36', '4L36', '4S3', '3L61', '3S1'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['9L60', '9S10', '8L60', '7L15', '7V', '6L15', '5L15', '4L15', '4S4', '3L37', '3S0', '3S1'],\n      discharge: ['9L45', '8L45', '7L50', '7S7', '6L50', '6S5', '6S6', '5L50', '4L50', '4S3'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillpeck: ['9L35', '8L35', '8V', '8S8', '7L71', '7V', '6L1', '5L71', '4L71', '4S4', '3L49', '3S0', '3S1'],\n      dualwingbeat: ['9M', '8T'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extrasensory: ['3S2'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fly: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M'],\n      headbutt: ['8V'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      laserfocus: ['7T'],\n      leer: ['8V'],\n      lightscreen: ['9M', '9L10', '8M', '8L10', '8V', '7M', '7L64', '7V', '6M', '6L64', '6S5', '5M', '5L64', '4M', '4L64', '3M', '3L73'],\n      magneticflux: ['9L65', '9S10', '8L65', '7L92'],\n      metalsound: ['9M', '3S2'],\n      mimic: ['7V', '3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      peck: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pluck: ['9L15', '8L15', '7L22', '7S7', '6L22', '5M', '5L22', '4M', '4L22'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '9L50', '8M', '8L50', '7M', '7L57', '7V', '7S7', '6M', '6L57', '6S5', '6S6', '5M', '5L85', '4M', '4L85', '3M'],\n      razorwind: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roost: ['9L40', '8L40', '8V', '7M', '7L85', '6M', '6L1', '5T', '5L57', '4M', '4L57', '4S3'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skyattack: ['8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L55', '9S10', '8M', '8L55', '8V', '8S8', '7M', '7L78', '7V', '6M', '6L78', '5M', '5L78', '4M', '4L78', '3M', '3L85'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M', '3S2'],\n      thundershock: ['9L5', '8L5', '8V', '7L1', '7V', '6L1', '6S6', '5L1', '4L1', '3L1'],\n      thunderwave: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7L8', '7V', '6M', '6L8', '5M', '5L8', '4M', '4L8', '4S4', '3T', '3L13', '3S0'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uturn: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      weatherball: ['9M', '8M'],\n      whirlwind: ['7V'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['9L70', '9S10', '8L70', '7L99', '7V', '6L1', '5L92']\n    }\n  ],\n  [\n    'zapdosgalar',\n    {\n      acrobatics: ['9M', '8M'],\n      aerialace: ['9M'],\n      agility: ['9M', '9L20', '8M', '8L20'],\n      ancientpower: ['9L25', '8L25'],\n      assurance: ['8M'],\n      blazekick: ['8M'],\n      bounce: ['8M'],\n      bravebird: ['9M', '8M'],\n      brickbreak: ['9M', '9L30', '8M', '8L30'],\n      bulkup: ['9M', '9L50', '8M', '8L50'],\n      closecombat: ['9M', '9L65', '8M', '8L65'],\n      coaching: ['9M', '8T'],\n      counter: ['9L55', '8L55'],\n      detect: ['9L60', '8L60'],\n      doubleedge: ['9M'],\n      drillpeck: ['9L35', '8L35', '8S0', '8S1'],\n      dualwingbeat: ['9M', '8T'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fly: ['9M', '8M'],\n      focusenergy: ['9L1', '8M', '8L1', '8S0', '8S1'],\n      gigaimpact: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      knockoff: ['9M'],\n      lightscreen: ['9M', '9L10', '8M', '8L10'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M', '8M'],\n      megakick: ['8M'],\n      payback: ['8M'],\n      peck: ['9L1', '8L1'],\n      pluck: ['9L15', '8L15'],\n      protect: ['9M', '8M'],\n      quickguard: ['9L40', '8L40'],\n      raindance: ['9M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L70', '8M', '8L70', '8S0', '8S1'],\n      rocksmash: ['9L5', '8L5'],\n      round: ['8M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '8M'],\n      screech: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      steelwing: ['8M'],\n      stompingtantrum: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      superpower: ['8M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M'],\n      thunderouskick: ['9L45', '8L45', '8S0', '8S1'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M']\n    }\n  ],\n  [\n    'moltres',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L20', '8M', '8L20', '8V', '7L15', '7V', '6L15', '5L15', '4L15', '4S4', '3L25', '3S0', '3S1'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9L35', '8M', '8L35', '8V', '7L50', '7S7', '6L50', '6S5', '5L50', '4L50', '4S3'],\n      ancientpower: ['9L25', '8L25', '7L29', '7S7', '6L29', '5L29', '4T', '4L29'],\n      bide: ['7V'],\n      bravebird: ['9M', '8M'],\n      burningjealousy: ['9M', '8T'],\n      burnup: ['8L65', '7L99'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['9M', '8T'],\n      ember: ['9L5', '8L5', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      endure: ['9M', '9L60', '9S10', '8M', '8L60', '7L22', '7V', '6L22', '5L22', '4M', '4L22', '4S4', '3T', '3L37', '3S0', '3S1'],\n      extrasensory: ['3S2'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firespin: ['9M', '8M', '8V', '8S8', '7L8', '7V', '6L8', '5L8', '4L8', '4S4', '3L13', '3S0'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: [\n        '9M',\n        '8M',\n        '8V',\n        '7M',\n        '7L36',\n        '7V',\n        '7S7',\n        '6M',\n        '6L36',\n        '5M',\n        '5L36',\n        '4M',\n        '4L36',\n        '4S3',\n        '4S4',\n        '3M',\n        '3L49',\n        '3S0',\n        '3S1',\n        '3S2'\n      ],\n      flareblitz: ['9M', '8M'],\n      fly: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gust: ['9L1', '8L1'],\n      headbutt: ['8V'],\n      heatwave: ['9M', '9L45', '8M', '8L45', '8V', '8S8', '7T', '7L64', '6T', '6L1', '6S5', '6S6', '5T', '5L64', '4T', '4L64', '3L73'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '9L55', '9S10', '8M', '8L55', '7L92', '6L1', '5L92'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['9L30', '8L30', '6M', '5M'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '8V', '8S8', '7V'],\n      mimic: ['7V', '3T'],\n      morningsun: ['3S2'],\n      mudslap: ['7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      overheat: ['9M', '9L65', '9S10', '8M', '7M', '6M', '5M', '4M', '3M'],\n      peck: ['7V'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorwind: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roost: ['9L40', '8L40', '8V', '7M', '7L85', '6M', '6L1', '5T', '5L57', '4M', '4L57', '4S3'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L10', '8M', '8L10', '7M', '7L43', '7V', '6M', '6L43', '6S5', '6S6', '5M', '5L43', '4M', '4L43', '4S3', '3M', '3L61', '3S1'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      skyattack: ['9L70', '9S10', '8L70', '8V', '7T', '7L78', '7V', '6T', '6L1', '6S6', '5T', '5L78', '4T', '4L78', '3T', '3L85'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7L71', '6M', '6L71', '5M', '5L71', '4M', '4L71'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '9L50', '8M', '8L50', '7M', '7L57', '7V', '7S7', '6M', '6L57', '6S5', '6S6', '5M', '5L85', '4M', '4L85', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '7V'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uturn: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      weatherball: ['9M', '8M'],\n      whirlwind: ['7V'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3S2'],\n      wingattack: ['9L15', '8L15', '8V', '8S8', '7L1', '7V', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'moltresgalar',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      afteryou: ['9L40', '8L40'],\n      agility: ['9M', '9L20', '8M', '8L20'],\n      airslash: ['9M', '9L35', '8M', '8L35'],\n      ancientpower: ['9L25', '8L25'],\n      assurance: ['8M'],\n      bravebird: ['9M', '8M'],\n      darkpulse: ['9M', '8M'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '9L60', '8M', '8L60'],\n      facade: ['9M', '8M'],\n      fierywrath: ['9L45', '8L45', '8S0', '8S1'],\n      fly: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      gust: ['9L1', '8L1'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hurricane: ['9M', '9L55', '8M', '8L55', '8S0', '8S1'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1'],\n      memento: ['9L65', '8L65'],\n      nastyplot: ['9M', '9L50', '8M', '8L50', '8S0', '8S1'],\n      painsplit: ['9M'],\n      payback: ['9L5', '8M', '8L5'],\n      protect: ['9M', '8M'],\n      raindance: ['9M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['9L10', '8M', '8L10'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '8M'],\n      shadowball: ['9M', '8M'],\n      skyattack: ['9L70', '8L70'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M'],\n      steelwing: ['8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L30', '8L30', '8S0', '8S1'],\n      sunnyday: ['9M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      uturn: ['9M', '8M'],\n      wingattack: ['9L15', '8L15']\n    }\n  ],\n  [\n    'dratini',\n    {\n      agility: ['9M', '9L20', '8M', '8L20', '8V', '7L25', '7V', '6L25', '5L25', '4L25', '3L36'],\n      aquajet: ['9E', '8E', '7E', '6E', '5E'],\n      aquatail: ['9L31', '8L31', '7T', '7L35', '6T', '6L35', '5T', '5L35', '4T', '4L31'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      dragonbreath: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M', '9L50', '8M', '8L50', '7L51', '7E', '6L51', '6E', '5L51', '5E', '4L45', '4E', '3E'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      dragonrage: ['8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L22'],\n      dragonrush: ['9L35', '8L35', '7L41', '7E', '6L41', '6E', '5L41', '5E', '4L35', '4E'],\n      dragontail: ['9M', '9L15', '8L15', '8V', '7M', '7L31', '6M', '6L31', '5M', '5L31'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extremespeed: ['9E', '8E', '7E', '7V', '6E', '5E', '4E'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firespin: ['9M', '8M'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '9L60', '8M', '8L60', '8V', '7M', '7L61', '7V', '6M', '6L61', '5M', '5L61', '4M', '4L55', '3M', '3L57'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M'],\n      irontail: ['8M', '8V', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      leer: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4E', '3E'],\n      mimic: ['7V', '3T'],\n      mist: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '9L55', '8M', '8L55', '8V', '7T', '7L55', '7V', '6T', '6L55', '5T', '5L55', '4T', '4L51', '3L50'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '9L45', '8M', '8L45', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L40', '8M', '8L40', '7M', '7L45', '7V', '6M', '6L45', '5M', '5L45', '4M', '4L41', '3M', '3L43'],\n      scaleshot: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      slam: ['9L25', '8L25', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L29'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      supersonic: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '9L10', '8M', '8L10', '8V', '7M', '7L5', '7V', '6M', '6L5', '5M', '5L5', '5D', '4M', '4L5', '3T', '3L8'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['9L5', '8L5', '7L11', '7V', '6L11', '5L11', '4T', '4L11', '3L15'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5E', '5D', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      wrap: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'dragonair',\n    {\n      agility: ['9M', '9L20', '8M', '8L20', '8V', '7L25', '7V', '6L25', '5L25', '4L25', '3L38'],\n      aquatail: ['9L33', '8L33', '7T', '7L39', '6T', '6L39', '5T', '5L39', '4T', '4L33'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      detect: ['7V'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      dragonbreath: ['7V'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M', '9L60', '8M', '8L60', '7L61', '6L61', '5L61', '4L53'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      dragonrage: ['8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L22'],\n      dragonrush: ['9L39', '8L39', '7L47', '6L47', '5L47', '4L39'],\n      dragontail: ['9M', '9L15', '8L15', '8V', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firespin: ['9M', '8M'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      horndrill: ['7V'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '9L74', '8M', '8L74', '8V', '7M', '7L75', '7V', '6M', '6L75', '5M', '5L75', '4M', '4L67', '3M', '3L65'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M'],\n      mimic: ['7V', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '9L67', '8M', '8L67', '8V', '7T', '7L67', '7V', '6T', '6L67', '5T', '5L67', '4T', '4L61', '3L56'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '9L53', '8M', '8L53', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L46', '8M', '8L46', '7M', '7L53', '7V', '6M', '6L53', '5M', '5L53', '4M', '4L47', '3M', '3L47'],\n      scaleshot: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      slam: ['9L25', '8L25', '8V', '7L21', '7V', '6L21', '5L21', '4L21', '3L29'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3T', '3L1'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3L1'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['8M', '4M'],\n      wrap: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'dragonite',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L20', '8M', '8L20', '8V', '7L25', '7V', '6L25', '6S8', '5L25', '4L25', '3L38', '3S0'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '8M'],\n      aquajet: ['8V'],\n      aquatail: ['9L33', '8L33', '7T', '7L39', '6T', '6L39', '5T', '5L39', '4T', '4L33'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['6S8'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '8S9', '7T', '6T', '5T', '4T', '4S2'],\n      dragonbreath: ['7V'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '8S9', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '9L62', '8M', '8L62', '8S9', '7L61', '6L61', '6S7', '5L61', '5S3', '4L53', '4S2', '3S1'],\n      dragonpulse: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      dragonrage: ['8V', '7L15', '7V', '6L15', '5L15', '4L15', '3L22'],\n      dragonrush: ['9L39', '8L39', '7L47', '6L47', '5L47', '5S4', '5S5', '4L39'],\n      dragontail: ['9M', '9L15', '8L15', '8V', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      dualwingbeat: ['8T'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M', '3S1'],\n      encore: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extremespeed: ['9L1', '8L1', '6S7', '5S3', '5S5'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '5S6', '4M', '3M'],\n      firepunch: ['9M', '9L1', '8M', '8L1', '8V', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '5S3', '4T', '4L1', '3T'],\n      firespin: ['9M', '8M'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fly: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['3S1'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      horndrill: ['7V'],\n      hurricane: ['9M', '9L0', '8M', '8L0', '8S9', '7L1', '6L1', '6S7', '5L81'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '9L80', '8M', '8L80', '8V', '7M', '7L75', '7V', '6M', '6L75', '6S8', '5M', '5L75', '5S6', '4M', '4L73', '3M', '3L75', '3S1'],\n      icebeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M'],\n      lowkick: ['9M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M'],\n      mimic: ['7V', '3T'],\n      mist: ['8V'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      outrage: [\n        '9M',\n        '9L41',\n        '8M',\n        '8L41',\n        '8V',\n        '7T',\n        '7L67',\n        '7V',\n        '6T',\n        '6L67',\n        '6S7',\n        '5T',\n        '5L67',\n        '5S3',\n        '5S6',\n        '4T',\n        '4L64',\n        '4S2',\n        '3L61',\n        '3S0'\n      ],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7V'],\n      raindance: ['9M', '9L53', '8M', '8L53', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorwind: ['7V'],\n      reflect: ['8V', '7V'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roost: ['9L1', '8L1', '8V', '7M', '7L1', '6M', '6L1', '5T', '5L1', '4M', '4L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L46', '8M', '8L46', '7M', '7L53', '7V', '6M', '6L53', '5M', '5L53', '5S4', '5S5', '5S6', '4M', '4L47', '3M', '3L47', '3S0'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skullbash: ['7V'],\n      skydrop: ['7M', '6M', '5M'],\n      slam: ['9L25', '8L25', '8V', '7L21', '7V', '6L21', '6S8', '5L21', '4L21', '3L29'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '7V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '4S2', '3M'],\n      thunderpunch: ['9M', '9L1', '8M', '8L1', '8V', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '5S4', '4T', '4L1', '3T'],\n      thunderwave: ['9M', '9L1', '8M', '8L1', '8V', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3T', '3L1'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3L1'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['8M', '7V', '4M'],\n      wingattack: ['9L1', '8L1', '8V', '7L1', '7V', '6L55', '5L55', '5S4', '5S5', '4L55', '3L55', '3S0'],\n      wrap: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'mewtwo',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M', '8V'],\n      allyswitch: ['8M'],\n      amnesia: ['9M', '9L32', '8M', '8L32', '8V', '7L79', '7V', '6L79', '5L50', '4L57', '4S1', '3L77'],\n      ancientpower: ['9L8', '8L8'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      aurasphere: ['9M', '9L40', '9S9', '8M', '8L40', '7L70', '6L70', '6S4', '6S5', '5L93', '5S2', '4L100'],\n      avalanche: ['9M', '8M', '4M'],\n      barrier: ['8V', '7L64', '7V', '6L64', '6S4', '5L1', '4L8', '3L11'],\n      bide: ['7V'],\n      blizzard: ['9M', '8M', '8V', '8S7', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      bulkup: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '9S9', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '8V'],\n      confusion: ['9L1', '8L1', '8V', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      counter: ['7V', '3T'],\n      curse: ['9M', '7V'],\n      darkpulse: ['9M'],\n      detect: ['7V'],\n      disable: ['9L1', '8L1', '8V', '8S7', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      dive: ['8M', '6M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      electroball: ['9M', '8M', '5S2'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L88', '8M', '8L88', '7L15', '7V', '6L15', '5L15', '4L22', '3L44'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      guardswap: ['9L56', '8M', '8L56', '7L43', '6L43', '5L57', '4L64', '4S1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8V', '7V', '4T'],\n      healpulse: ['5S3'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '8M', '5S3'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '9S9', '8M', '8V', '7M', '7V', '6M', '5M', '5S3', '4M', '3M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['9M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      laserfocus: ['8L1', '7T', '7L1'],\n      lashout: ['9M'],\n      lifedew: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      mefirst: ['7L93', '6L93', '5L71', '4L79'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '7V', '3T'],\n      metronome: ['9M', '8M', '7V', '3T'],\n      mimic: ['7V', '3T'],\n      miracleeye: ['7L29', '6L29', '5L29', '4L36'],\n      mist: ['9L64', '8L64', '8V', '7L86', '7V', '6L86', '5L36', '4L43', '3L22'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['9M'],\n      payday: ['8M', '8V', '7V'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      powergem: ['9M'],\n      powerswap: ['9L56', '8M', '8L56', '7L43', '6L43', '5L57', '4L64', '4S1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '8V'],\n      psychic: [\n        '9M',\n        '9L48',\n        '8M',\n        '8L48',\n        '8V',\n        '8S7',\n        '7M',\n        '7L57',\n        '7V',\n        '7S6',\n        '6M',\n        '6L57',\n        '6S4',\n        '6S5',\n        '5M',\n        '5L64',\n        '4M',\n        '4L71',\n        '3M',\n        '3L66',\n        '3S0'\n      ],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychocut: ['9L16', '8M', '8L16', '7L36', '7S6', '6L36', '5L43', '4L50', '4S1'],\n      psychup: ['9M', '7M', '7L22', '7V', '6M', '6L22', '5M', '5L22', '4M', '4L29', '3T', '3L33'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psystrike: ['9L72', '9S9', '8L72', '7L100', '6L100', '6S5', '5L100', '5S2', '5S3'],\n      psywave: ['8V', '7L1', '7V'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['9L80', '8L80', '8V', '8S7', '7L50', '7V', '7S6', '6L50', '6S4', '6S5', '5L79', '4L86', '3L44', '3S0'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L24', '8M', '8L24', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L86', '4M', '4L93', '3M', '3L55', '3S0'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8V', '7V', '3T'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      shadowball: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '5S2', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      skullbash: ['7V'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      speedswap: ['8M'],\n      spite: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      storedpower: ['9M', '8M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L1', '8M', '8L1', '8V', '7L8', '7V', '7S6', '6L8', '5L8', '4T', '4L15', '3T', '3L22', '3S0'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      watergun: ['7V'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      weatherball: ['9M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'mew',\n    {\n      acidspray: ['9M'],\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      afteryou: ['7T', '6T', '5T'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9S27', '8M'],\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T', '5M'],\n      amnesia: ['9M', '9L10', '8M', '8L10', '8V', '7L60', '6L60', '5L60', '4L60', '4S17'],\n      ancientpower: ['9L30', '8L30', '7L50', '7V', '6L50', '5L50', '4T', '4L50', '4S14', '3L50'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M', '9L90', '9S27', '8M', '8L90', '7L100', '6L100', '5L100', '4L100', '4S14', '4S15', '4S16', '4S17', '4S18', '4S19'],\n      auroraveil: ['7M'],\n      avalanche: ['9M', '8M', '4M'],\n      barrier: ['8V', '7L40', '7S24', '6L40', '5L40', '4L40', '4S15'],\n      batonpass: ['9M', '9L20', '8M', '8L20', '7L80', '6L80', '5L80', '4L80'],\n      beatup: ['8M'],\n      bide: ['7V'],\n      bind: ['7T', '6T', '5T'],\n      blastburn: ['9M'],\n      blazekick: ['8M'],\n      blizzard: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '7V', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      bravebird: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '4M'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['7V'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '8M'],\n      bulkup: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      burningjealousy: ['9M', '8T'],\n      calmmind: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '8M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['8V'],\n      corrosivegas: ['8T'],\n      cosmicpower: ['8M'],\n      counter: ['7V', '3T'],\n      covet: ['7T', '6T', '5T'],\n      crosspoison: ['8M'],\n      crunch: ['9M', '8M'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      darkestlariat: ['8M'],\n      darkpulse: ['9M', '9S27', '8M', '8V', '7M', '6M', '5T', '4M'],\n      dazzlinggleam: ['9M', '9S27', '8M', '8V', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '8V', '7V', '6M', '5M', '4M', '3M'],\n      disarmingvoice: ['9M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '7V', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M'],\n      dragonbreath: ['7V'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '9S27', '8M', '8V', '7T', '6T', '5T', '4M'],\n      dragonrage: ['7V'],\n      dragontail: ['9M', '8V', '7M', '6M', '5M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      drillrun: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      dualchop: ['7T', '6T', '5T'],\n      dualwingbeat: ['9M', '8T'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '9S27', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M', '8M'],\n      eggbomb: ['7V'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      energyball: ['9M', '9S27', '8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M', '8T'],\n      explosion: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['3S2', '3S3'],\n      faketears: ['9M', '8M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      featherdance: ['9M'],\n      feintattack: ['3S4', '3S5'],\n      fireblast: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '8M'],\n      firepledge: ['9M'],\n      firepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      firespin: ['9M', '8M'],\n      fissure: ['7V'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9S27', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      flareblitz: ['9M', '8M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '9S27', '8M', '8V', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M', '8T'],\n      fly: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '8M', '8V', '7T', '6T', '5T'],\n      frenzyplant: ['9M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      futuresight: ['9M', '8M'],\n      gastroacid: ['7T', '6T', '5T', '4T'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      guardswap: ['8M'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hardpress: ['9M'],\n      haze: ['9M'],\n      headbutt: ['8V', '7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      honeclaws: ['6M', '5M'],\n      horndrill: ['7V'],\n      hurricane: ['9M', '8M'],\n      hydrocannon: ['9M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '9S27', '8M', '7T', '6T', '5T'],\n      hypnosis: ['4S20', '3S6', '3S7'],\n      icebeam: ['9M', '9S27', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '8M'],\n      icepunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '9L70', '8M', '8L70'],\n      incinerate: ['6M', '5M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '8V', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lashout: ['9M', '8T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      leafblade: ['8M'],\n      leafstorm: ['9M', '8M'],\n      leechlife: ['9M', '8M', '7M'],\n      lifedew: ['9L40', '9S27', '8L40'],\n      lightscreen: ['9M', '9S27', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      liquidation: ['9M', '8M', '7T'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M', '8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      mefirst: ['7L70', '6L70', '5L70', '4L70'],\n      megadrain: ['8V', '7V'],\n      megahorn: ['8M', '8V'],\n      megakick: ['8M', '7V', '3T'],\n      megapunch: ['8M', '8V', '7L10', '7V', '6L10', '5L10', '4L10', '4S16', '3T', '3L20', '3S0'],\n      metalclaw: ['9M'],\n      metalsound: ['9M'],\n      meteorbeam: ['9M', '8T'],\n      metronome: [\n        '9M',\n        '9L60',\n        '8M',\n        '8L60',\n        '8V',\n        '7L20',\n        '7V',\n        '7S24',\n        '6L20',\n        '5L20',\n        '4L20',\n        '4S14',\n        '4S15',\n        '4S16',\n        '4S17',\n        '4S18',\n        '4S19',\n        '3T',\n        '3L30',\n        '3S0'\n      ],\n      mimic: ['8V', '7V', '3T'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      nastyplot: ['9M', '9L50', '8M', '8L50', '8V', '7L90', '6L90', '5L90', '4L90'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['9M', '3S8', '3S9'],\n      ominouswind: ['4T'],\n      outrage: ['9M', '8M', '8V', '7T', '6T', '5T', '4T'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      payday: ['8M', '8V', '7V'],\n      petalblizzard: ['9M'],\n      phantomforce: ['9M', '8M'],\n      pinmissile: ['8M'],\n      playrough: ['9M', '8M', '8V'],\n      pluck: ['5M', '4M'],\n      poisonjab: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      poisontail: ['9M'],\n      pollenpuff: ['9M', '9S27', '8M'],\n      poltergeist: ['9M', '8T'],\n      pounce: ['9M'],\n      pound: ['9L1', '8L1', '8V', '8S25', '7L1', '7V', '7S23', '6L1', '6S22', '5L1', '4L1', '4S21', '3L1', '3S0', '3S1'],\n      powergem: ['9M', '9S27', '8M'],\n      powerswap: ['8M'],\n      poweruppunch: ['6M'],\n      powerwhip: ['8M'],\n      protect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L100', '8M', '8L100', '8V', '7M', '7L30', '7V', '7S24', '6M', '6L30', '5M', '5L30', '4M', '4L30', '4S19', '3M', '3L40'],\n      psychicfangs: ['9M', '8M'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychocut: ['8M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '9S27', '8M', '7M', '6M', '5M'],\n      psywave: ['8V', '7V'],\n      quash: ['7M', '6M', '5M'],\n      rage: ['7V'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorshell: ['8M'],\n      razorwind: ['7V'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflecttype: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      rest: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '4S20', '3M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '8M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T', '3S10', '3S11'],\n      rollout: ['7V', '4T', '3T'],\n      roost: ['8V', '7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '8M'],\n      scald: ['9M', '8M', '8V', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['8V', '7V', '3T'],\n      selfdestruct: ['8M', '8V', '7V', '3T'],\n      shadowball: ['9M', '9S27', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      skittersmack: ['9M', '8T'],\n      skullbash: ['7V'],\n      skyattack: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '9S27', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      softboiled: ['7V', '3T'],\n      solarbeam: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      solarblade: ['9M', '8M'],\n      speedswap: ['8M'],\n      spikes: ['9M', '8M'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '8V', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M'],\n      steelroller: ['8T'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      storedpower: ['9M', '8M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '6M', '5M'],\n      submission: ['7V'],\n      substitute: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supercellslam: ['9M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      superpower: ['8M', '8V', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '9S27', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['9M', '9S27', '8M', '8V', '7V', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T', '4S20'],\n      tailslap: ['8M'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '7V'],\n      taunt: ['9M', '8M', '8V', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8V', '7V', '4S14', '4S15', '4S16', '4S17', '4S18', '4S19', '4S20'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunder: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '9S27', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '8M'],\n      thunderpunch: ['9M', '8M', '8V', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '8M'],\n      trailblaze: ['9M'],\n      transform: ['9L80', '8L80', '8V', '7L1', '7V', '7S24', '6L1', '5L1', '4L1', '4S18', '3L10', '3S0', '3S1'],\n      triattack: ['8M', '8V', '7V'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      tripleaxel: ['9M', '8T'],\n      twister: ['4T'],\n      upperhand: ['9M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      vacuumwave: ['9M', '4T'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      waterfall: ['9M', '8M', '8V', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['7V'],\n      waterpledge: ['9M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      whirlwind: ['7V'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      workup: ['8M', '7M', '5M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      xscissor: ['9M', '8M', '8V', '7M', '6M', '5M', '4M'],\n      zapcannon: ['7V', '3S12', '3S13'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'chikorita',\n    {\n      ancientpower: ['9E', '7E', '7V', '6E', '5E', '4T', '4E', '3E', '3S1'],\n      aromatherapy: ['7L42', '7E', '6L42', '6E', '5L42', '5E', '4L42', '4E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9L34', '7L34', '7E', '7V', '6L34', '6E', '5L34', '5E', '4L34', '4E', '3T', '3L29'],\n      bulletseed: ['9M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      flail: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frenzyplant: ['3S1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T'],\n      gigadrain: ['9M', '9L42', '7T', '7V', '6T', '5T', '4M', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '7T', '6T', '5T'],\n      grasswhistle: ['7E', '6E', '5E', '4E', '3E'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '7E', '6E'],\n      growl: ['9L1', '7L1', '7V', '6L1', '6S2', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      headbutt: ['7V', '4T'],\n      healpulse: ['9E', '7E', '6E', '5E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      ingrain: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      leafstorm: ['9M', '7E', '6E', '5E', '4E'],\n      leechseed: ['9L23', '7E', '7V', '6E', '5E', '4E', '3E'],\n      lightscreen: ['9M', '9L31', '7M', '7L31', '7V', '6M', '6L31', '5M', '5L31', '4M', '4L31', '3M', '3L36'],\n      magicalleaf: ['9M', '9L20', '7L20', '6L20', '5L20', '4L20'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['7L23', '6L23', '5L23', '4M', '4L23'],\n      naturepower: ['7M', '7E', '6M', '6E', '5E', '4E', '3E'],\n      poisonpowder: ['9L9', '7L9', '7V', '6L9', '5L9', '4L9', '3L15'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorleaf: ['9L6', '7L6', '7V', '6L6', '5L6', '4L6', '3L8', '3S0'],\n      reflect: ['9M', '9L17', '7M', '7L17', '7V', '6M', '6L17', '5M', '5L17', '4M', '4L17', '3M', '3L12'],\n      refresh: ['7E', '6E', '5E'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L39', '7M', '7L39', '7V', '6M', '6L39', '5M', '5L39', '4M', '4L39', '3M', '3L43'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L45', '7M', '7L45', '7V', '6M', '6L45', '5M', '5L45', '4M', '4L45', '3M', '3L50'],\n      solarblade: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L28', '7L28', '7V', '6L28', '5L28', '4L28'],\n      swordsdance: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L12', '7T', '7L12', '7V', '6T', '6L12', '5T', '5L12', '4T', '4L12', '3L22'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '6S2', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      vinewhip: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      wringout: ['7E', '6E', '5E', '4E']\n    }\n  ],\n  [\n    'bayleef',\n    {\n      ancientpower: ['4T'],\n      aromatherapy: ['7L50', '6L50', '5L50', '4L50'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9L40', '7L40', '7V', '6L40', '5L40', '4L40', '3T', '3L31'],\n      bulletseed: ['9M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigadrain: ['9M', '9L50', '7T', '7V', '6T', '5T', '4M', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '7T', '6T', '5T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      leafstorm: ['9M'],\n      leechseed: ['9L26'],\n      lightscreen: ['9M', '9L36', '7M', '7L36', '7V', '6M', '6L36', '5M', '5L36', '4M', '4L36', '3M', '3L39'],\n      magicalleaf: ['9M', '9L22', '7L22', '6L22', '5L22', '4L22'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['7L26', '6L26', '5L26', '4M', '4L26'],\n      naturepower: ['7M', '6M'],\n      poisonpowder: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L15'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorleaf: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      reflect: ['9M', '9L18', '7M', '7L18', '7V', '6M', '6L18', '5M', '5L18', '4M', '4L18', '3M', '3L1'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L46', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L46', '4M', '4L46', '3M', '3L47'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L54', '7M', '7L54', '7V', '6M', '6L54', '5M', '5L54', '4M', '4L54', '3M', '3L55'],\n      solarblade: ['9M'],\n      stompingtantrum: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L32', '7L32', '7V', '6L32', '5L32', '4L32'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L12', '7T', '7L12', '7V', '6T', '6L12', '5T', '5L12', '4T', '4L12', '3L23'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'meganium',\n    {\n      ancientpower: ['4T'],\n      aromatherapy: ['7L60', '6L60', '5L60', '4L60'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L46', '7L46', '7V', '6L46', '6S0', '5L46', '4L46', '3T', '3L31'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      earthquake: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frenzyplant: ['9M', '7T', '6T', '5T', '4T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigadrain: ['9M', '9L60', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '7T', '6T', '5T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      leafstorm: ['9M'],\n      leechseed: ['9L26'],\n      lightscreen: ['9M', '9L40', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L40', '4M', '4L40', '3M', '3L41'],\n      magicalleaf: ['9M', '9L22', '7L22', '6L22', '5L22', '4L22'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['7L26', '6L26', '5L26', '4M', '4L26'],\n      naturepower: ['7M', '6M'],\n      outrage: ['9M', '7T', '6T', '5T', '4T'],\n      petalblizzard: ['9M', '9L1', '7L1', '6L1'],\n      petaldance: ['9L0', '7L1', '6L32', '5L32', '4L32'],\n      poisonpowder: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L15'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorleaf: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      reflect: ['9M', '9L18', '7M', '7L18', '7V', '6M', '6L18', '5M', '5L18', '4M', '4L18', '3M', '3L1'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L54', '7M', '7L54', '7V', '6M', '6L54', '5M', '5L54', '4M', '4L54', '3M', '3L51'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L65', '7M', '7L66', '7V', '6M', '6L66', '6S0', '5M', '5L66', '4M', '4L66', '3M', '3L61'],\n      solarblade: ['9M'],\n      stompingtantrum: ['9M', '7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '6S0', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L34', '7L34', '7V', '6L34', '5L34', '4L34'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L12', '7T', '7L12', '7V', '6T', '6L12', '6S0', '5T', '5L12', '4T', '4L12', '3L23'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      weatherball: ['9M'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'cyndaquil',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      blastburn: ['3S1'],\n      bodyslam: ['9M', '3T'],\n      burningjealousy: ['9M'],\n      burnup: ['7L58'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      covet: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4E', '3E'],\n      crushclaw: ['7E', '6E', '5E', '4E', '3E'],\n      curse: ['9M', '9E', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['9L22', '7L22', '7V', '6L22', '5L22', '4L22', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L55', '7L55', '7E', '6L55', '6E', '5L55', '5E', '4L46', '4E', '3T'],\n      doublekick: ['9E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      ember: ['9L10', '7L10', '7V', '6L10', '5L10', '4L10', '3L12'],\n      endure: ['9M', '7V', '4M', '3T'],\n      eruption: ['9L64', '7L64', '6L58', '5L58', '4L49'],\n      extrasensory: ['9E', '7E', '6E', '5E', '4E'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M'],\n      firepledge: ['9M', '7T', '6T', '5T'],\n      firespin: ['9M'],\n      flameburst: ['7E', '6E', '5E'],\n      flamecharge: ['9M', '9L28', '7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      flamethrower: ['9M', '9L40', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L40', '4M', '4L37', '3M', '3L46'],\n      flamewheel: ['9L19', '7L19', '7V', '6L19', '5L19', '4L19', '3L27'],\n      flareblitz: ['9M', '7E', '6E', '5E', '4E'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['7V', '4T'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      howl: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L46', '7L46', '6L46', '5L46'],\n      ironhead: ['9M'],\n      irontail: ['7V'],\n      lavaplume: ['9L37', '7L37', '6L37', '5L37', '4L31'],\n      leer: ['9L1', '7L1', '7V', '6L1', '6S2', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '7E', '6M', '6E', '5E'],\n      overheat: ['9M', '9L58', '7M', '6M', '5M', '4M', '3M'],\n      playrough: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L13', '7L13', '7E', '7V', '6L13', '6E', '5L13', '5E', '4L13', '4E', '3L19', '3E'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E', '3S1'],\n      roar: ['9M'],\n      rollout: ['9L49', '7L49', '7V', '6L49', '5L49', '4T', '4L40', '3T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L6', '7L6', '7V', '6L6', '5L6', '4L4', '3L6', '3S0'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      submission: ['7V'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L31', '7L31', '7V', '6L31', '5L31', '4T', '4L28', '3T', '3L36'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '6S2', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thrash: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      workup: ['7M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'quilava',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      burningjealousy: ['9M'],\n      burnup: ['7L68'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['9L24', '7L24', '7V', '6L24', '5L24', '4L24', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L64', '7L64', '6L64', '5L64', '4L53', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      ember: ['9L10', '7L10', '7V', '6L10', '5L10', '4L10', '3L12'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      eruption: ['9L75', '7L75', '6L68', '5L68', '4L57'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M'],\n      firepledge: ['9M', '7T', '6T', '5T'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L35', '7M', '7L35', '6M', '6L35', '5M', '5L35'],\n      flamethrower: ['9M', '9L46', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L46', '4M', '4L42', '3M', '3L54'],\n      flamewheel: ['9L20', '7L20', '7V', '6L20', '5L20', '4L20', '3L31'],\n      flareblitz: ['9M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      headbutt: ['7V', '4T'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L53', '7L53', '6L53', '5L53'],\n      ironhead: ['9M'],\n      irontail: ['7V'],\n      lavaplume: ['9L42', '7L42', '6L42', '5L42', '4L35'],\n      leer: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      overheat: ['9M', '9L68', '7M', '6M', '5M', '4M', '3M'],\n      playrough: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L13', '7L13', '7V', '6L13', '5L13', '4L13', '3L21'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rollout: ['9L57', '7L57', '7V', '6L57', '5L57', '4T', '4L46', '3T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L31', '7L31', '7V', '6L31', '5L31', '4T', '4L31', '3T', '3L42'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      workup: ['7M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'typhlosion',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      blastburn: ['9M', '7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      burningjealousy: ['9M'],\n      burnup: ['7L74'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['9L24', '7L24', '7V', '6L24', '5L24', '4L24', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L1', '7L1', '6L1', '5L69', '4L53', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      ember: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      eruption: ['9L1', '7L1', '6L1', '5L74', '4L57'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M'],\n      firepledge: ['9M', '7T', '6T', '5T'],\n      firepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L35', '7M', '7L35', '6M', '6L35', '6S1', '5M', '5L35'],\n      flamethrower: ['9M', '9L48', '7M', '7L48', '7V', '6M', '6L48', '5M', '5L48', '4M', '4L42', '3M', '3L60', '3S0'],\n      flamewheel: ['9L20', '7L20', '7V', '6L20', '6S1', '5L20', '4L20', '3L31', '3S0'],\n      flareblitz: ['9M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gyroball: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      headbutt: ['7V', '4T'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L56', '7L56', '6L56', '5L56'],\n      ironhead: ['9M'],\n      irontail: ['7V'],\n      laserfocus: ['7T'],\n      lavaplume: ['9L43', '7L43', '6L43', '5L43', '4L35'],\n      leer: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      overheat: ['9M', '9L74', '7M', '6M', '6S1', '5M', '4M', '3M'],\n      playrough: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L13', '7L13', '7V', '6L13', '5L13', '4L13', '3L21', '3S0'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      rollout: ['9L61', '7L61', '7V', '6L61', '5L61', '4T', '4L46', '3T'],\n      round: ['7M', '6M', '5M'],\n      scorchingsands: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      stompingtantrum: ['9M', '7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L31', '7L31', '7V', '6L31', '6S1', '5L31', '4T', '4L31', '3T', '3L45', '3S0'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '7T'],\n      thunderpunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      workup: ['7M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'typhlosionhisui',\n    {\n      aerialace: ['9M'],\n      blastburn: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      defensecurl: ['9L24'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L1'],\n      earthquake: ['9M'],\n      ember: ['9L1'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      eruption: ['9L1'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firefang: ['9M'],\n      firepledge: ['9M'],\n      firepunch: ['9M'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L35'],\n      flamethrower: ['9M', '9L48'],\n      flamewheel: ['9L20'],\n      flareblitz: ['9M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      gigaimpact: ['9M'],\n      gyroball: ['9M', '9L1'],\n      heatwave: ['9M'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      infernalparade: ['9L0'],\n      inferno: ['9L56'],\n      ironhead: ['9M'],\n      lavaplume: ['9L43'],\n      leer: ['9L1'],\n      lowkick: ['9M'],\n      nightshade: ['9M'],\n      overheat: ['9M', '9L74'],\n      playrough: ['9M'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      quickattack: ['9L13'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      roar: ['9M'],\n      rockslide: ['9M'],\n      rollout: ['9L61'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M'],\n      smokescreen: ['9L1'],\n      solarbeam: ['9M'],\n      spite: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M', '9L31'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M'],\n      wildcharge: ['9M'],\n      willowisp: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'totodile',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['9E', '7E', '7V', '6E', '5E', '4T', '4E', '3E'],\n      aquajet: ['9E', '7E', '6E', '5E', '4E'],\n      aquatail: ['9L41', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L36'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bite: ['9L9', '7L13', '7V', '6L13', '5L13', '4L13', '3L20'],\n      blizzard: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['9E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      bodyslam: ['3T'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7L29', '6L29', '5L29'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '3T'],\n      crunch: ['9M', '9L27', '7L27', '7E', '7V', '6L27', '6E', '5L27', '5E', '4L27', '4E', '3E', '3S1'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      dive: ['6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonclaw: ['9M', '7M', '6M', '5M', '4E', '3E'],\n      dragondance: ['9M', '7E', '6E', '5E', '4E'],\n      dynamicpunch: ['7V', '3T'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '7E', '6E', '5E'],\n      flail: ['9L22', '7L22', '6L22', '5L22', '4L22'],\n      flatter: ['9E', '7E', '6E'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hail: ['7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydrocannon: ['3S1'],\n      hydropump: ['9M', '9L50', '7L50', '7E', '7V', '6L50', '6E', '5L50', '5E', '4L43', '4E', '3L52', '3E'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '9L19', '7L20', '6L20', '5L20', '4L20'],\n      icepunch: ['9M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T'],\n      icywind: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['9L1', '7L1', '7V', '6L1', '6S2', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metalclaw: ['9M', '7E', '6E', '5E', '4E'],\n      mimic: ['3T'],\n      muddywater: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      mudsport: ['7E', '6E', '5E', '4E', '3E'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rage: ['7L8', '7V', '6L8', '5L8', '4L8', '3L7', '3S0'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      razorwind: ['7V'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      scaryface: ['9M', '9L13', '7L15', '7V', '6L15', '5L15', '4L15', '3L27'],\n      scratch: ['9L1', '7L1', '7V', '6L1', '6S2', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      screech: ['9L33', '7L36', '7V', '6L36', '5L36', '4L34', '3L43'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      slash: ['9L30', '7L34', '7V', '6L34', '5L34', '4L29', '3L35'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['9L45', '7T', '7L48', '6T', '6L48', '5T', '5L48', '4T', '4L41'],\n      surf: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L37', '7L41', '7E', '7V', '6L41', '6E', '5L41', '5E', '4L22', '4E', '3E'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L6', '7L6', '7V', '6L6', '5L6', '4L6', '3L13'],\n      waterpledge: ['9M', '7T', '6T', '5T'],\n      waterpulse: ['9M', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      watersport: ['7E', '6E', '5E', '4E', '3E'],\n      whirlpool: ['9M', '7V', '4M'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'croconaw',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['4T'],\n      aquatail: ['9L47', '7T', '7L51', '6T', '6L51', '5T', '5L51', '4L42'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bite: ['9L13', '7L13', '7V', '6L13', '5L13', '4L13', '3L21'],\n      blizzard: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['3T'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7L33', '6L33', '5L33'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['9M', '9L30', '7L30', '6L30', '5L30', '4L30'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      dive: ['6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonclaw: ['9M', '7M', '6M', '5M'],\n      dragondance: ['9M'],\n      dynamicpunch: ['7V', '3T'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      flail: ['9L24', '7L24', '6L24', '5L24', '4L24'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      hail: ['7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '9L55', '7L60', '7V', '6L60', '5L60', '4L51', '3L55'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '9L21', '7L21', '6L21', '5L21', '4L21'],\n      icepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      leer: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metalclaw: ['9M'],\n      mimic: ['3T'],\n      muddywater: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      rage: ['7L8', '7V', '6L8', '5L8', '4L8', '3L1'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      scaryface: ['9M', '9L15', '7L15', '7V', '6L15', '5L15', '4L15', '3L28'],\n      scratch: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['9L37', '7L42', '7V', '6L42', '5L42', '4L39', '3L45'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      slash: ['9L34', '7L39', '7V', '6L39', '5L39', '4L33', '3L37'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['9L50', '7T', '7L57', '6T', '6L57', '5T', '5L57', '4T', '4L48'],\n      surf: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L42', '7L48', '6L48', '5L48', '4L24'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L13'],\n      waterpledge: ['9M', '7T', '6T', '5T'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '7V', '4M'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'feraligatr',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L1', '7L1', '6L30', '5L30', '4L30'],\n      ancientpower: ['4T'],\n      aquatail: ['9L59', '7T', '7L63', '6T', '6L63', '5T', '5L63', '4T', '4L50'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '4M'],\n      bite: ['9L13', '7L13', '7V', '6L13', '5L13', '4L13', '3L21'],\n      blizzard: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['9M', '3T'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7L37', '6L37', '5L37'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['9M', '9L32', '7L32', '6L32', '6S0', '5L32', '4L32'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      dive: ['6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonclaw: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M'],\n      dragonpulse: ['7T', '6T', '5T', '4M'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      flail: ['9L24', '7L24', '6L24', '5L24', '4L24'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      hail: ['7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydrocannon: ['9M', '7T', '6T', '5T', '4T'],\n      hydropump: ['9M', '9L70', '7L76', '7V', '6L76', '5L76', '4L63', '3L58'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '9L21', '7L21', '6L21', '5L21', '4L21'],\n      icepunch: ['9M', '7T', '7V', '6T', '6S0', '5T', '4T', '3T'],\n      icywind: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      lashout: ['9M'],\n      leer: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      liquidation: ['9M', '7T'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metalclaw: ['9M'],\n      mimic: ['3T'],\n      muddywater: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '7T', '6T', '5T', '4T'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      rage: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M', '9L15', '7L15', '7V', '6L15', '5L15', '4L15', '3L28'],\n      scratch: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['9L44', '7L50', '7V', '6L50', '6S0', '5L50', '4L45', '3L47'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      slash: ['9L37', '7L45', '7V', '6L45', '5L45', '4L37', '3L38'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      stompingtantrum: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['9L65', '7T', '7L71', '6T', '6L71', '5T', '5L71', '4T', '4L58'],\n      surf: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L51', '7L58', '6L58', '5L58', '4L24'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      waterfall: ['9M', '7M', '6M', '6S0', '5M', '4M', '3M'],\n      watergun: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      waterpledge: ['9M', '7T', '6T', '5T'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '7V', '4M'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'sentret',\n    {\n      amnesia: ['9M', '9L36', '7L36', '7V', '6L36', '5L36', '4L36', '3L49'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      assist: ['7E', '6E', '5E', '4E', '3E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      babydolleyes: ['9E', '7E'],\n      batonpass: ['9M', '9L39', '7L39', '6L39', '5L39', '4L39'],\n      blizzard: ['9M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['7M'],\n      captivate: ['7E', '6E', '4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '7E', '6E', '5E', '4E'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '7E', '6T', '6E', '5T', '5E', '5D', '4E'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['9L4', '7L4', '7V', '6L4', '5L4', '4L4', '3T', '3L4'],\n      detect: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L42', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '5D', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      followme: ['9L19', '7L19', '6L19', '5L19', '4L19', '3L31'],\n      foresight: ['7L1', '6L1', '5L1', '4L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['9L13', '7L13', '7V', '6L13', '5L13', '4L13', '3L12'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '9L16', '7T', '7L16', '6T', '6L16', '5T', '5L16', '4T', '4L16', '3L17'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hypervoice: ['9M', '9L47', '7T', '7L47', '6T', '6L47', '5T', '5L47', '4L47'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      mefirst: ['7L42', '6L42', '5L42', '4L42'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      playrough: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      quickattack: ['9L7', '7L7', '7V', '6L7', '5L7', '4L7', '3L7'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L28', '7M', '7L28', '7V', '6M', '6L28', '5M', '5L28', '4M', '4L28', '3M', '3L40'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['9L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      shadowball: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slam: ['9L25', '7L25', '7V', '6L25', '5L25', '4L25', '3L24'],\n      slash: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      suckerpunch: ['9L31', '7L31', '6L31', '5L31', '4T', '4L31'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      tackle: ['7V'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      tidyup: ['9E'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4E', '3E'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['4M'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'furret',\n    {\n      agility: ['9M', '9L0', '7L1'],\n      amnesia: ['9M', '9L42', '7L42', '7V', '6L42', '5L42', '4L42', '3L59'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '9L46', '7L46', '6L46', '5L46', '4L46'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['7M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      coil: ['9L1', '7L1'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L1'],\n      detect: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L50', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      followme: ['9L21', '7L21', '6L21', '5L21', '4L21', '3L37'],\n      foresight: ['7L1', '6L1', '5L1', '4L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['9L13', '7L13', '7V', '6L13', '5L13', '4L13', '3L12'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '9L17', '7T', '7L17', '6T', '6L17', '5T', '5L17', '4T', '4L17', '3L19'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '9L56', '7T', '7L56', '6T', '6L56', '5T', '5L56', '4L56'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      mefirst: ['7L50', '6L50', '5L50', '4L50'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      playrough: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L32', '7M', '7L32', '7V', '6M', '6L32', '5M', '5L32', '4M', '4L32', '3M', '3L48'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      shadowball: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slam: ['9L28', '7L28', '7V', '6L28', '5L28', '4L28', '3L28'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L36', '7L36', '6L36', '5L36', '4T', '4L36'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '7T', '6T', '5T'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['4M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'hoothoot',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9L18', '8M', '8L18', '7L31', '6L33', '5L33', '4L29'],\n      amnesia: ['9M', '8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bravebird: ['9M'],\n      calmmind: ['9M', '8M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L9', '8L9', '7L10', '7V', '6L21', '5L21', '4L21', '3L34'],\n      curse: ['7V'],\n      defog: ['9L15', '8E', '7T', '7E', '6E', '5E', '4M'],\n      detect: ['7V'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['9L39', '8L39', '7M', '7L46', '7V', '6M', '6L57', '5M', '5L57', '4M', '4L49', '3T', '3L48'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['9L6', '8L6', '7M', '7L13', '6M', '6L25', '5M', '5L25'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extrasensory: ['9L21', '8L21', '7L22', '6L45', '5L45', '4L37'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      feintattack: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      flash: ['7V', '3M'],\n      fly: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      foresight: ['7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L6', '3S0'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      haze: ['9M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '8M', '7E'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      hypnosis: ['9L36', '8L36', '7L4', '7V', '6L5', '5L5', '4L5', '3L16'],\n      imprison: ['9M', '8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      meanlook: ['7E'],\n      mimic: ['3T'],\n      mirrormove: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      moonblast: ['9L33', '8L33', '7L40'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['9M', '9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      ominouswind: ['4T'],\n      peck: ['9L1', '8L1', '7L7', '7V', '6L9', '5L9', '4L9', '3L11'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychoshift: ['8L15', '7L19', '6L49', '5L49', '4L41'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '5D', '4M'],\n      reflect: ['9M', '9L12', '8M', '8L12', '7M', '7L28', '7V', '6M', '6L17', '5M', '5L17', '4M', '4L17', '3M', '3L22'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['9L30', '8L30', '7M', '7L37', '6M', '6L53', '5T', '5L53', '4M', '4L45'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      silverwind: ['4M'],\n      skillswap: ['9M'],\n      skyattack: ['7T', '7E', '7V', '6T', '6E', '5T', '5E', '4E', '3T', '3E'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '3T'],\n      spite: ['9M'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      synchronoise: ['7L43', '6L41', '5L41'],\n      tackle: ['9L3', '8L3', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '9L24', '8L24', '7L25', '7V', '6L29', '5L29', '4L25', '3L28'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uproar: ['9M', '9L27', '8M', '8L27', '7T', '7L34', '6T', '6L13', '5T', '5L13', '4T', '4L13'],\n      whirlwind: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      wingattack: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '7L16', '6T', '6L37', '5T', '5L37', '4T', '4L33']\n    }\n  ],\n  [\n    'noctowl',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9L18', '8M', '8L18', '7L35', '6L37', '5L37', '4L32'],\n      amnesia: ['9M', '8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M'],\n      bravebird: ['9M'],\n      calmmind: ['9M', '8M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L9', '8L9', '7L10', '7V', '6L22', '5L22', '4L22', '3L41'],\n      curse: ['9M', '7V'],\n      defog: ['9L15', '7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['9L53', '8L53', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L67', '4M', '4L57', '3T', '3L57'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['9L1', '8L1', '7M', '7L13', '6M', '6L27', '5M', '5L27'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extrasensory: ['9L23', '8L23', '7L23', '6L52', '5L52', '4L42'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M'],\n      flash: ['7V', '3M'],\n      fly: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      foresight: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '8M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      haze: ['9M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      hypnosis: ['9L48', '8L48', '7L1', '7V', '6L1', '5L1', '4L1', '3L16'],\n      imprison: ['9M', '8M'],\n      laserfocus: ['7T'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      moonblast: ['9L43', '8L43', '7L47'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['9M'],\n      ominouswind: ['4T'],\n      peck: ['9L1', '8L1', '7L7', '7V', '6L9', '5L9', '4L9', '3L1'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychicnoise: ['9M'],\n      psychoshift: ['8L15', '7L19', '6L57', '5L57', '4L47'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '9L12', '8M', '8L12', '7M', '7L31', '7V', '6M', '6L17', '5M', '5L17', '4M', '4L17', '3M', '3L25'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['9L38', '8L38', '7M', '7L43', '6M', '6L62', '5T', '5L62', '4M', '4L52'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      silverwind: ['4M'],\n      skillswap: ['9M'],\n      skyattack: ['9L1', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '3T'],\n      spite: ['9M'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      synchronoise: ['7L51', '6L47', '5L47'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '9L28', '8L28', '7L27', '7V', '6L32', '5L32', '4L27', '3L33'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uproar: ['9M', '9L33', '8M', '8L33', '7T', '7L39', '6T', '6L13', '5T', '5L13', '4T', '4L13'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '7L16', '6T', '6L42', '5T', '5L42', '4T', '4L37']\n    }\n  ],\n  [\n    'ledyba',\n    {\n      acrobatics: ['7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M', '3S0'],\n      agility: ['7L29', '7V', '6L30', '5L30', '4L30', '3L43'],\n      aircutter: ['4T'],\n      airslash: ['7L36'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['7L26', '7V', '6L22', '5L22', '4L22', '3L29'],\n      bide: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      brickbreak: ['7M', '6M', '5M', '4M', '3M'],\n      bugbite: ['7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E'],\n      bugbuzz: ['7L33', '7E', '6L41', '6E', '5L41', '5E', '4L41', '4E'],\n      captivate: ['4M'],\n      cometpunch: ['7L22', '7V', '6L9', '5L9', '5D', '4L9', '3L15'],\n      confide: ['7M', '6M'],\n      counter: ['7E'],\n      curse: ['7V'],\n      dig: ['7V', '6M', '5M', '4M', '3M'],\n      dizzypunch: ['7E', '6E', '5E'],\n      doubleedge: ['7L40', '7V', '6L38', '5L38', '4L38', '3T', '3L50'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      dynamicpunch: ['7V', '3T'],\n      encore: ['7E', '6E', '5E', '4E'],\n      endure: ['7E', '7V', '4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      knockoff: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      lightscreen: ['7M', '7L12', '7V', '6M', '6L14', '5M', '5L14', '4M', '4L14', '3M', '3L22'],\n      machpunch: ['7L15', '6L17', '5L17', '4L17'],\n      megapunch: ['3T'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      poweruppunch: ['6M'],\n      protect: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['7E', '7V', '6E', '5E', '4E', '3E', '3S0'],\n      reflect: ['7M', '7L12', '7V', '6M', '6L14', '5M', '5L14', '4M', '4L14', '3M', '3L22'],\n      refresh: ['3S0'],\n      rest: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '7L12', '7V', '6M', '6L14', '5M', '5L14', '4M', '4L14', '3M', '3L22'],\n      screech: ['7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M', '3M'],\n      silverwind: ['7L19', '7E', '6L25', '6E', '5L25', '5E', '4M', '4L25', '4E', '3E'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['7L5', '7V', '6L6', '5L6', '4L6', '3L8', '3S0'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['7L8', '7V', '6L33', '5L33', '4T', '4L33', '3T', '3L36'],\n      swordsdance: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['7T', '7E', '6T', '6E', '5T', '4T'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['7T', '7V', '6T', '5T', '5D', '4T', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      uturn: ['7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'ledian',\n    {\n      acrobatics: ['7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['7L33', '7V', '6L36', '5L36', '4L36', '3L51'],\n      aircutter: ['4T'],\n      airslash: ['7L42'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['7L29', '7V', '6L24', '5L24', '4L24', '3L33'],\n      brickbreak: ['7M', '6M', '5M', '4M', '3M'],\n      bugbite: ['7T', '6T', '5T', '4T'],\n      bugbuzz: ['7L38', '6L53', '5L53', '4L53'],\n      captivate: ['4M'],\n      cometpunch: ['7L24', '7V', '6L1', '5L1', '4L1', '3L15'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T'],\n      dig: ['7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['7L47', '7V', '6L48', '5L48', '4L48', '3T', '3L60'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['7T', '6T', '5T', '4M'],\n      dynamicpunch: ['7V', '3T'],\n      endure: ['7V', '4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['7M', '6M', '5M', '4M'],\n      focusblast: ['7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      headbutt: ['7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['7M', '7L12', '7V', '6M', '6L14', '5M', '5L14', '4M', '4L14', '3M', '3L24'],\n      machpunch: ['7L15', '6L17', '5L17', '4L17'],\n      megapunch: ['3T'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      poweruppunch: ['6M'],\n      protect: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['7M', '7L12', '7V', '6M', '6L14', '5M', '5L14', '4M', '4L14', '3M', '3L24'],\n      rest: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rollout: ['7V', '4T', '3T'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '7L12', '7V', '6M', '6L14', '5M', '5L14', '4M', '4L14', '3M', '3L24'],\n      secretpower: ['6M', '4M', '3M'],\n      silverwind: ['7L20', '6L29', '5L29', '4M', '4L29'],\n      sleeptalk: ['7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      strength: ['6M', '5M', '4M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['7L1', '7V', '6L41', '5L41', '4T', '4L41', '3T', '3L42'],\n      swordsdance: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      thief: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      uturn: ['7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'spinarak',\n    {\n      absorb: ['9L5', '7L5'],\n      acidspray: ['9M'],\n      agility: ['9M', '9L29', '7L33', '7V', '6L33', '5L33', '4L33', '3L45'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bodyslam: ['3T'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      bugbite: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      bugbuzz: ['9M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '7V', '6L8', '5L8', '4L8', '3L11'],\n      crosspoison: ['9L44', '7L47', '6L47', '5L47'],\n      curse: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      disable: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      electroweb: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['9L22', '7L22', '7V', '6L22', '5L22', '4L22', '3L30'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      infestation: ['9L8', '7M', '7L8', '6M'],\n      knockoff: ['9M'],\n      leechlife: ['9M', '7M', '7V', '6L12', '5L12', '4L12', '3L23'],\n      lunge: ['9M', '9E', '7E'],\n      megahorn: ['9E', '7E', '6E'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M', '9L15', '7L15', '7V', '6L15', '5L15', '4L15', '3L17', '3S0'],\n      nightslash: ['9E', '7E', '6E', '5E'],\n      pinmissile: ['9L33', '7L36', '6L36', '5L36', '4L36'],\n      poisonjab: ['9M', '9L40', '7M', '7L43', '6M', '6L43', '5M', '5L43', '4M', '4L43', '4E'],\n      poisonsting: ['9L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      psychic: ['9M', '9L36', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L40', '4M', '4L40', '3M', '3L53'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      ragepowder: ['9E', '7E', '6E', '5E'],\n      refresh: ['3S0'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M', '9L12', '7L12', '7V', '6L5', '5L5', '4L5', '3L6'],\n      screech: ['7V'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowsneak: ['9L19', '7L19', '6L19', '5L19', '4L19'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E', '3S0'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M'],\n      snore: ['7T', '7V', '6T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sonicboom: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      spiderweb: ['7L29', '7V', '6L29', '5L29', '4L29', '3L37'],\n      spite: ['9M'],\n      stickyweb: ['9L47', '7L50', '6L50'],\n      stringshot: ['9L1', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3L1'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L26', '7L26', '6L26', '5L26', '4T', '4L26'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '7E', '6E', '5E', '4E'],\n      toxicthread: ['9L51', '7L54'],\n      trailblaze: ['9M'],\n      twineedle: ['7E', '6E', '5E'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      xscissor: ['9M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'ariados',\n    {\n      absorb: ['9L1', '7L1'],\n      acidspray: ['9M'],\n      agility: ['9M', '9L31', '7L37', '7V', '6L37', '5L37', '4L37', '3L53'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bodyslam: ['3T'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      bugbite: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      bugbuzz: ['9M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      crosspoison: ['9L50', '9S0', '7L55', '6L55', '5L55'],\n      curse: ['7V'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      electroweb: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fellstinger: ['9L1', '7L1', '6L1'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      focusenergy: ['9L1', '7L1'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyswipes: ['9L23', '7L23', '7V', '6L23', '5L23', '4L23', '3L34'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['9L8', '7M', '7L8', '6M'],\n      knockoff: ['9M'],\n      leechlife: ['9M', '7M', '7V', '6L12', '5L12', '4L12', '3L25'],\n      lunge: ['9M'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M', '9L15', '7L15', '7V', '6L15', '5L15', '4L15', '3L17'],\n      pinmissile: ['9L35', '7L41', '6L41', '5L41', '4L41'],\n      poisonjab: ['9M', '9L46', '9S0', '7M', '7L50', '6M', '6L50', '5M', '5L50', '4M', '4L50'],\n      poisonsting: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '9L41', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L46', '4M', '4L46', '3M', '3L63'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M', '9L12', '7L12', '7V', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['7V'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowsneak: ['9L19', '7L19', '6L19', '5L19', '4L19'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M'],\n      smartstrike: ['9M', '7M'],\n      snore: ['7T', '7V', '6T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spiderweb: ['7L32', '7V', '6L32', '5L32', '4L32', '3L43'],\n      spite: ['9M'],\n      stickyweb: ['9L54', '9S0', '7L58', '6L58'],\n      stompingtantrum: ['7T'],\n      stringshot: ['9L1', '7L1', '7V', '6L1', '5L1', '4T', '4L1', '3L1'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L28', '7L28', '6L28', '5L28', '4T', '4L28'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M', '9L0', '7M', '7L1'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '7T'],\n      toxic: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      toxicthread: ['9L59', '9S0', '7L63'],\n      trailblaze: ['9M'],\n      venomdrench: ['7L1', '6L1'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      xscissor: ['9M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'chinchou',\n    {\n      agility: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      amnesia: ['9M', '8M', '7E', '6E', '5E', '5D', '4E', '3E'],\n      aquaring: ['9L32', '8L32', '7L42', '6L42', '5L42', '4L39'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['8M', '7E', '6E', '5E', '4M'],\n      bubble: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bubblebeam: ['9L12', '8L12', '7L20', '6L20', '5L31', '4L28'],\n      captivate: ['4M'],\n      charge: ['9M', '9L24', '8L24', '7L50', '6L50', '5L50', '4L45', '3L49'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L16', '8L16', '7L17', '7V', '6L17', '5L12', '4L17', '3L29'],\n      curse: ['9M', '7V'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      discharge: ['9L28', '8L28', '7L34', '6L34', '5L39', '4L34'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L4', '8M', '8L4', '7L9', '6L9', '5L28'],\n      electroweb: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9L36', '8L36', '7L31', '7E', '7V', '6L9', '6E', '5L9', '5E', '4L9', '4E', '3L13', '3E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L44', '8M', '8L44', '7L45', '7V', '6L45', '5L45', '4L42', '3L41'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      iondeluge: ['7L47', '6L47'],\n      liquidation: ['9M'],\n      mimic: ['3T'],\n      mist: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      muddywater: ['9M'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['9M', '8M', '7M', '6M', '5M'],\n      screech: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '7E', '6T', '6E', '5E', '5D', '4M', '3M'],\n      signalbeam: ['7T', '7L28', '6T', '6L28', '5T', '5L34', '4T', '4L31'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      soak: ['9E', '8E', '7E', '6E'],\n      spark: ['9L20', '8L20', '7L23', '7V', '6L20', '5L20', '4L20', '3L25'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9E', '4T'],\n      supersonic: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L5'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M', '9L40', '8L40', '7L39', '7V', '6L23', '5L23', '4L23', '3L37'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '9L8', '8M', '8L8', '7M', '7L6', '7V', '6M', '6L6', '5M', '5L6', '5D', '4M', '4L6', '3T', '3L1'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      waterfall: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L12', '7V', '6L1', '5L17', '4L12', '3L17'],\n      waterpulse: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      whirlpool: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '4E'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'lanturn',\n    {\n      agility: ['9M', '8M'],\n      amnesia: ['9M', '8M'],\n      aquaring: ['9L36', '8L36', '7L47', '6L47', '5L52', '4L47'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['8M', '4M'],\n      bubble: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bubblebeam: ['9L12', '8L12', '7L20', '6L20', '5L35', '4L30'],\n      captivate: ['4M'],\n      charge: ['9M', '9L24', '8L24', '7L58', '6L58', '5L64', '4L57', '3L61'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L16', '8L16', '7L17', '7V', '6L17', '5L17', '4L17', '3L32'],\n      curse: ['9M', '7V'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      discharge: ['9L30', '8L30', '7L37', '6L37', '5L47', '4L40'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L30'],\n      electroweb: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9L42', '8L42', '7L33', '7V', '6L9', '5L9', '4L9', '3L13'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L54', '8M', '8L54', '7L51', '7V', '6L51', '5L57', '4L52', '3L50'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      iondeluge: ['7L54', '6L54'],\n      liquidation: ['9M'],\n      mimic: ['3T'],\n      muddywater: ['9M'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['9M', '8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '7L29', '6T', '6L29', '5T', '5L40', '4T', '4L35'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spark: ['9L20', '8L20', '7L23', '7V', '6L20', '5L20', '4L20', '3L25'],\n      spitup: ['9L0', '8L0', '7L1', '6L27', '5L27', '4L27'],\n      spotlight: ['7L1'],\n      stockpile: ['9L0', '8L0', '7L1', '6L27', '5L27', '4L27'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      supersonic: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9L0', '8L0', '7L1', '6L27', '5L27', '4L27'],\n      takedown: ['9M', '9L48', '8L48', '7L43', '7V', '6L23', '5L23', '4L23', '3L43'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3T', '3L1'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      waterfall: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L12', '7V', '6L1', '5L12', '4L12', '3L17'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'togepi',\n    {\n      aerialace: ['8E'],\n      afteryou: ['8L28', '7T', '7L53', '6T', '6L53', '5T', '5L53'],\n      ancientpower: ['8L16', '7L33', '6L33', '5L33', '4T', '4L33', '3L21', '3S1'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M', '8L44', '7L41', '6L41', '5L41', '4L42', '3L41'],\n      bestow: ['7L25', '6L25', '5L25'],\n      bodyslam: ['8M', '3T'],\n      captivate: ['4M'],\n      charm: ['8M', '8L12', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      doubleedge: ['8L32', '7L45', '7V', '6L45', '5L45', '4L46', '3T', '3L37'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['8M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['8M', '7L17', '7V', '6L17', '5L17', '4L19', '3L17'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      extrasensory: ['8E', '7E', '6E', '5E', '4E'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      followme: ['8L40', '7L21', '6L21', '5L21', '4L24', '3L25', '3S1'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['8M', '3S1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      incinerate: ['6M', '5M'],\n      lastresort: ['8L48', '7T', '7L49', '6T', '6L49', '5T', '5L49', '4T', '4L51'],\n      lifedew: ['8L8'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7E', '6E', '5E', '5D', '4E'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['8M', '8L24', '7L5', '7V', '6L5', '5L5', '5D', '4L6', '3T', '3L4', '3S0'],\n      mimic: ['3T'],\n      mirrormove: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      morningsun: ['8E', '7E', '6E', '5E'],\n      mudslap: ['7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      nastyplot: ['8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      peck: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      playrough: ['8M'],\n      pound: ['8L1'],\n      present: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychoshift: ['8E', '7E', '6E', '5E', '4E'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '8L36', '7M', '7L37', '7V', '6M', '6L37', '5M', '5L37', '4M', '4L37', '3M', '3L33'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      softboiled: ['3T'],\n      solarbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      storedpower: ['8M', '7E', '6E', '5E'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['8L4', '7L9', '7V', '6L9', '5L9', '4L10', '3L9', '3S0'],\n      swift: ['8M', '7V', '4T', '3T'],\n      telekinesis: ['7T', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M', '3S1'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      uproar: ['8M', '7T', '6T', '5T', '5D', '4T'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wish: ['8L52', '7L29', '6L29', '5L29', '4L28', '3L29'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['8L20', '7L13', '6L13', '5L13', '4L15', '3L13', '3S0'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'togetic',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      afteryou: ['8L28', '7T', '7L53', '6T', '6L53', '5T', '5L53'],\n      aircutter: ['4T'],\n      ancientpower: ['8L16', '7L33', '6L33', '5L33', '4T', '4L33', '3L21'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M', '8L44', '7L41', '6L41', '5L41', '4L42', '3L41'],\n      bestow: ['7L25', '6L25', '5L25'],\n      bodyslam: ['8M', '3T'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['8M', '8L12', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['8L32', '7L45', '7V', '6L45', '5L45', '4L46', '3T', '3L37'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['8M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['8T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['8M', '7L17', '7V', '6L17', '5L17', '4L19', '3L17'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fairywind: ['8L0', '7L14', '6L14'],\n      fireblast: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      fly: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      followme: ['8L40', '7L21', '6L21', '5L21', '4L24', '3L25'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      imprison: ['8M'],\n      incinerate: ['6M', '5M'],\n      lastresort: ['8L48', '7T', '7L49', '6T', '6L49', '5T', '5L49', '4T', '4L51'],\n      lifedew: ['8L1'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['8M', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['8M', '8L24', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L1'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      nastyplot: ['8M'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      playrough: ['8M'],\n      pound: ['8L1'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '8L36', '7M', '7L37', '7V', '6M', '6L37', '5M', '5L37', '4M', '4L37', '3M', '3L33'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      skyattack: ['3T'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      softboiled: ['3T'],\n      solarbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      swift: ['8M', '7V', '4T', '3T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      telekinesis: ['7T', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      triattack: ['8M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      twister: ['4T'],\n      uproar: ['8M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wish: ['8L52', '7L29', '6L29', '5L29', '4L28', '3L29'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['8L20', '7L13', '6L13', '5L13', '4L15', '3L13'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'togekiss',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      afteryou: ['8L1', '7T', '7L1', '6T', '6L1'],\n      aircutter: ['4T'],\n      airslash: ['8M', '8L0', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      allyswitch: ['8M'],\n      amnesia: ['8M'],\n      ancientpower: ['8L1', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      aurasphere: ['8M', '8L1', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      batonpass: ['8M', '8L1'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      charm: ['8M', '8L1'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      defog: ['7T', '4M'],\n      doubleedge: ['8L1'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainingkiss: ['8M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      dualwingbeat: ['8T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['8M'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['8M', '4M'],\n      extremespeed: ['8L1', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      fairywind: ['8L1'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      fly: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M'],\n      followme: ['8L1'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      imprison: ['8M'],\n      incinerate: ['6M', '5M'],\n      laserfocus: ['7T'],\n      lastresort: ['8L1', '7T', '6T', '5T', '4T'],\n      lifedew: ['8L1'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M'],\n      magicalleaf: ['8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['8M', '8L1'],\n      mudslap: ['4T'],\n      mysticalfire: ['8M'],\n      nastyplot: ['8M'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      playrough: ['8M'],\n      pluck: ['5M', '4M'],\n      pound: ['8L1'],\n      present: ['5S0'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      psychic: ['8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rollout: ['4T'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '8L1', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      skyattack: ['8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      smartstrike: ['8M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M'],\n      steelwing: ['8M', '7M', '6M', '4M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      sweetkiss: ['8L1'],\n      swift: ['8M', '4T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      telekinesis: ['7T', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      triattack: ['8M', '8L1'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      twister: ['4T'],\n      uproar: ['8M'],\n      waterpulse: ['7T', '6T', '4M'],\n      wish: ['8L1'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['8L1'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'natu',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M', '3S0'],\n      aircutter: ['4T'],\n      airslash: ['8M'],\n      allyswitch: ['8M', '7T', '7E', '6E', '5M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M', '3S0'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L15', '7L23', '7V', '6L23', '5L23', '4L23', '3L40'],\n      cosmicpower: ['8M'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      detect: ['7V'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      drillpeck: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      dualwingbeat: ['8T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['8E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      feintattack: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '8L45', '7L44', '7V', '6L36', '5L36', '4L36', '3L30', '3S0'],\n      gigadrain: ['8M', '7T', '7V', '6T', '5T', '5D', '4M', '3M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      guardswap: ['8M', '8L35', '7L47', '6L47', '5L47', '4L44'],\n      haze: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      imprison: ['8M'],\n      leer: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7L12', '6L12', '5L12', '4L12'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      mefirst: ['7L50', '6L20', '5L20', '4L20'],\n      mimic: ['3T'],\n      miracleeye: ['7L36', '6L17', '5L17', '4L17'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['8L20', '7L6', '7V', '6L6', '5L6', '5D', '4L6', '3L10', '3S0'],\n      ominouswind: ['7L20', '6L20', '5L44', '4T', '4L39'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      peck: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pluck: ['5M', '4M'],\n      powerswap: ['8M', '8L30', '7L47', '6L47', '5L47', '4L44'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '8L35', '7M', '7L33', '7V', '6M', '6L33', '5M', '5L50', '4M', '4L47', '3M', '3L50'],\n      psychoshift: ['8L26', '7L39', '6L33', '5L33', '4L33'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      quickattack: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7E', '6E', '5E', '4E', '3E'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['8E', '7M', '7E', '6M', '6E', '5T', '5E', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      simplebeam: ['8E', '7E', '6E'],\n      skillswap: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      skyattack: ['7T', '6T', '3T'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      steelwing: ['8M', '7M', '7E', '7V', '6M', '6E', '5E', '4M', '4E', '3M', '3E'],\n      storedpower: ['8M', '8L5', '7L17', '6L17', '5L39'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['8E', '7E', '6E', '5E', '4T', '4E'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      synchronoise: ['7E', '6E', '5E'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8L10', '7L9', '7V', '6L9', '5L9', '4L9', '3L20'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uturn: ['8M', '7M', '6M', '5M', '4M'],\n      wish: ['8L40', '7L28', '6L28', '5L28', '4L28', '3L30'],\n      zenheadbutt: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E']\n    }\n  ],\n  [\n    'xatu',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['4T'],\n      airslash: ['8M', '8L0', '7L1', '6L25'],\n      allyswitch: ['8M', '7T', '5M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L15', '7L23', '7V', '6L23', '5L23', '4L23', '3L50'],\n      cosmicpower: ['8M'],\n      curse: ['7V'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['8T'],\n      endure: ['8M', '7V', '4M', '3T'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fly: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      foulplay: ['8M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '8L55', '7L49', '7V', '6L42', '5L42', '4L42', '3L35'],\n      gigadrain: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      guardswap: ['8M', '8L34', '7L53', '6L53', '5L59', '4L54'],\n      heatwave: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      imprison: ['8M'],\n      laserfocus: ['7T'],\n      leer: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7L12', '6L12', '5L12', '4L12'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      mefirst: ['7L57', '6L20', '5L20', '4L20'],\n      mimic: ['3T'],\n      miracleeye: ['7L39', '6L17', '5L17', '4L17'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['8L20', '7L1', '7V', '6L1', '5L6', '4L6', '3L10'],\n      ominouswind: ['7L20', '6L20', '5L54', '4T', '4L47'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      peck: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      pluck: ['5M', '4M'],\n      powerswap: ['8M', '8L34', '7L53', '6L53', '5L54', '4L54'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '8L41', '7M', '7L35', '7V', '6M', '6L35', '5M', '5L66', '4M', '4L59', '3M', '3L65'],\n      psychoshift: ['8L28', '7L43', '6L37', '5L37', '4L37'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      skyattack: ['7T', '6T', '5T', '4T', '3T'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      steelwing: ['8M', '7M', '6M', '4M', '3M'],\n      storedpower: ['8M', '8L1', '7L17', '6L17', '5L47'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      tailwind: ['8L1', '7T', '7L1', '6T', '6L1', '5T', '5L27', '4T', '4L27'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8L1', '7L1', '7V', '6L1', '5L9', '4L9', '3L20'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uturn: ['8M', '7M', '6M', '5M', '4M'],\n      wish: ['8L48', '7L29', '6L29', '5L30', '4L30', '3L35'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'mareep',\n    {\n      afteryou: ['9E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      agility: ['9M', '9E', '7E', '6E', '5E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '7E', '7V', '6E', '5E', '4E', '3T', '3E', '3S2'],\n      captivate: ['4M'],\n      charge: ['9M', '9L15', '7L15', '7E', '6L15', '6E', '5L15', '5E', '4L23', '4E', '3E'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L25', '7L25', '6L25', '5L25'],\n      cottonguard: ['9L36', '7L36', '6L36', '5L32'],\n      cottonspore: ['9L11', '7L11', '7V', '6L11', '5L11', '4L19', '3L23', '3S0'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '9L39'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M'],\n      discharge: ['9L32', '7L32', '6L32', '5L32', '4L28'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M', '9E', '7E', '6E'],\n      electricterrain: ['9M', '9E', '7E', '6E'],\n      electroball: ['9M', '9L22', '7L22', '6L22', '5L22'],\n      electroweb: ['9M', '9E', '7T', '6T'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flatter: ['9E', '7E', '6E', '5E', '4E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L5', '3L1', '3S1'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T', '3S2'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      holdback: ['6S3'],\n      irontail: ['7T', '7E', '7V', '6T', '6E', '5T', '5E', '4M', '3M'],\n      lightscreen: ['9M', '9L43', '7M', '7L43', '7V', '6M', '6L43', '5M', '5L43', '4M', '4L37', '3M', '3L30'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7E', '6E', '5E', '4E', '3E'],\n      powergem: ['9M', '9L29', '7L29', '6L29', '5L29', '4L41'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['9M', '7V', '5D', '4E', '3E'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '7V', '6M', '5M', '4E', '3E'],\n      sandattack: ['7E', '6E', '5E', '4E'],\n      screech: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '5D', '4M', '3M'],\n      signalbeam: ['7T', '7L39', '6T', '6L39', '5T', '5L39', '4T', '4L32'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '6S3', '5L1', '4L1', '3L1', '3S1'],\n      takedown: ['9M', '9L18', '7L18', '7E', '7V', '6L18', '6E', '5L18', '5E', '4E', '3E'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L46', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L46', '4M', '4L46', '3M', '3L37', '3S0'],\n      thunderbolt: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thundershock: ['9L8', '7L8', '7V', '6L8', '6S3', '5L8', '5D', '4L10', '3L9', '3S0', '3S1', '3S2'],\n      thunderwave: ['9M', '9L4', '7M', '7L4', '7V', '6M', '6L4', '6S3', '5M', '5L4', '4M', '4L14', '3T', '3L16', '3S0', '3S2'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'flaaffy',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      agility: ['9M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L16', '7L16', '6L16', '5L16', '4L25'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L29', '7L29', '6L29', '5L29'],\n      cottonguard: ['9L43', '7L43', '6L43', '5L36'],\n      cottonspore: ['9L11', '7L11', '7V', '6L11', '5L11', '4L20', '3L27'],\n      counter: ['3T'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '9L47'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M'],\n      discharge: ['9L38', '7L38', '6L38', '5L38', '4L31'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L25', '7L25', '6L25', '5L25'],\n      electroweb: ['9M', '7T', '6T'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      lightscreen: ['9M', '9L52', '7M', '7L52', '7V', '6M', '6L52', '5M', '5L52', '4M', '4L42', '3M', '3L36'],\n      lowkick: ['9M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      powergem: ['9M', '9L34', '7L34', '6L34', '5L34', '4L47'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['9M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '7L47', '6T', '6L47', '5T', '5L47', '4T', '4L36'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L20', '7L20', '6L20', '5L20'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L56', '7M', '7L56', '7V', '6M', '6L56', '5M', '5L56', '4M', '4L53', '3M', '3L45'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thundershock: ['9L6', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      thunderwave: ['9M', '9L9', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L4', '4M', '4L14', '3T', '3L18'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'ampharos',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      agility: ['9M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '3T'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['7M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L16', '7L16', '6L16', '5L16', '4L25'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L29', '7L29', '6L29', '5L29'],\n      cottonguard: ['9L46', '7L46', '6L46', '5L40'],\n      cottonspore: ['9L11', '7L11', '7V', '6L11', '5L11', '4L20', '3L27'],\n      counter: ['3T'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '9L51'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M'],\n      discharge: ['9L40', '7L40', '6L40', '5L40', '4L34'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragoncheer: ['9M'],\n      dragonpulse: ['9M', '9L1', '7T', '7L1', '6T', '6L1'],\n      dragontail: ['9M'],\n      dynamicpunch: ['7V', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L25', '7L25', '6L25', '5L25'],\n      electroweb: ['9M', '7T', '6T'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '9L1', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M'],\n      iondeluge: ['7L1', '6L1'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L57', '7M', '7L57', '7V', '6M', '6L57', '5M', '5L57', '4M', '4L51', '3M', '3L42'],\n      lowkick: ['9M'],\n      magneticflux: ['9L1', '7L1', '6L1'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      meteorbeam: ['9M'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '7T', '6T', '5T', '4T'],\n      powergem: ['9M', '9L35', '7L35', '6L35', '5L35', '4L59'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['9M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      rockclimb: ['4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '7L51', '6T', '6L51', '5T', '5L51', '4T', '4L42'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L20', '7L20', '6L20', '5L20'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L62', '7M', '7L62', '7V', '6M', '6L62', '5M', '5L62', '4M', '4L68', '3M', '3L57'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '9L0', '7T', '7L1', '7V', '6T', '6L30', '5T', '5L30', '4T', '4L30', '3T', '3L30'],\n      thundershock: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      thunderwave: ['9M', '9L1', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3T', '3L1'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      zapcannon: ['9L1', '7L1', '7V', '6L1']\n    }\n  ],\n  [\n    'azurill',\n    {\n      alluringvoice: ['9M'],\n      aquajet: ['9E', '8E'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bellydrum: ['9E', '8E'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7E', '6E', '5E', '4E', '3T'],\n      bounce: ['9L15', '8M', '8L15', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      brutalswing: ['8M'],\n      bubble: ['7L7', '6L7', '5L1', '4L10', '3L10'],\n      bubblebeam: ['9L6', '8L6', '7L13', '6L13', '5L13'],\n      camouflage: ['7E', '6E'],\n      captivate: ['4M'],\n      charm: ['9M', '9L9', '8M', '8L9', '7L10', '6L10', '5L2', '4L2', '3L3'],\n      confide: ['7M', '6M'],\n      copycat: ['9E', '8E', '7E', '6E'],\n      covet: ['7T', '6T', '5T'],\n      defensecurl: ['3T'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      encore: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '9L3', '8M', '8L3', '7T', '7L16', '6T', '6L16', '5T', '5L16', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      mimic: ['3T'],\n      muddywater: ['8M', '7E', '6E', '5E'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      perishsong: ['9E', '8E'],\n      present: ['9E', '8E'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7E', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      sing: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      slam: ['9L12', '8L12', '7L20', '7E', '6L20', '6E', '5L15', '5E', '4L15', '4E', '3L15', '3E'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      soak: ['9E', '8E', '7E', '6E', '5E'],\n      splash: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      supersonic: ['9E', '8E'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      tailwhip: ['9L1', '8L1', '7L2', '6L2', '5L2', '4L7', '3L6'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      tickle: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1', '5L7', '4L18', '3L21'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      watersport: ['7L5', '7E', '6L5', '6E', '5L5', '5E'],\n      whirlpool: ['8M', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'marill',\n    {\n      alluringvoice: ['9M'],\n      amnesia: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      aquajet: ['8E', '7E', '6E', '5E', '5D', '4E'],\n      aquaring: ['9L24', '8L24', '7L28', '6L28', '5L23', '4L23'],\n      aquatail: ['9L19', '8L19', '7T', '7L20', '6T', '6L20', '5T', '5L20', '4T', '4L37'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bellydrum: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7E', '6E', '5E', '4E', '3T'],\n      bounce: ['9L15', '8M', '8L15', '7T', '6T', '5T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M'],\n      bubble: ['7L7', '6L7', '5L1'],\n      bubblebeam: ['9L6', '8L6', '7L13', '7V', '6L13', '5L13', '4L18', '3L21'],\n      bulldoze: ['9M'],\n      camouflage: ['7E', '6E'],\n      captivate: ['4M'],\n      charm: ['9M', '9L9', '8M', '8L9'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['8E'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      defensecurl: ['9L1', '8L1', '7L10', '7V', '6L10', '5L2', '5D', '4L2', '3T', '3L3'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      disarmingvoice: ['9M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '9L33', '8L33', '7L37', '7V', '6L23', '5L23', '4L27', '3T', '3L28'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      dynamicpunch: ['7V', '3T'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foresight: ['7V'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L16', '6T', '6L16', '5T', '5L16', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L30', '8M', '8L30', '7L47', '6L40', '5L40', '4L42', '3L45'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '7V', '6T', '5T', '5D', '4T', '3T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      liquidation: ['9M'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      muddywater: ['9M', '8M', '7E', '6E', '5E'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      perishsong: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      playrough: ['9M', '9L21', '8M', '8L21', '7L23', '6L23'],\n      poweruppunch: ['6M'],\n      present: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '9L27', '8M', '8L27', '7M', '7L31', '7V', '6M', '6L31', '5M', '5L31', '4M', '4L32', '3M', '3L36'],\n      refresh: ['7E', '6E', '5E', '4E'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['9L1', '8L1', '7L10', '7V', '6L10', '5L10', '4T', '4L15', '3T', '3L15'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      sing: ['8E'],\n      slam: ['9L12', '8L12'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      soak: ['8E'],\n      steelroller: ['8T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      superpower: ['9L36', '8M', '8L36', '7T', '7L40', '7E', '6T', '6L37', '6E', '5T', '5L37', '5E', '4T', '4E'],\n      supersonic: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '7L2', '7V', '6L2', '5L2', '4L7', '3L6'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      tickle: ['8E'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['8M'],\n      waterfall: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '7V', '6L1', '5L7', '4L10', '3L10'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      watersport: ['7L5', '7E', '6L5', '6E', '5L5', '5E'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'azumarill',\n    {\n      alluringvoice: ['9M'],\n      amnesia: ['9M', '8M'],\n      aquaring: ['9L30', '8L30', '7L31', '6L31', '5L27', '4L27'],\n      aquatail: ['9L21', '8L21', '7T', '7L21', '6T', '6L21', '5T', '5L21', '4T', '4L47'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      bounce: ['9L15', '8M', '8L15', '7T', '6T', '5T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M'],\n      bubble: ['7L7', '6L7', '5L1'],\n      bubblebeam: ['9L6', '8L6', '7L13', '7V', '6L13', '5L13', '4L20', '3L24'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M', '9L9', '8M', '8L9'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['7V'],\n      defensecurl: ['9L1', '8L1', '7L10', '7V', '6L10', '5L1', '4L1', '3T', '3L1'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      disarmingvoice: ['9M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '9L45', '8L45', '7L42', '7V', '6L25', '5L25', '4L33', '3T', '3L34'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '8M'],\n      dynamicpunch: ['7V', '3T'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L16', '6T', '6L16', '5T', '5L16', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L40', '8M', '8L40', '7L55', '6L46', '5L46', '4L54', '3L57'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      liquidation: ['9M', '8M', '7T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      playrough: ['9M', '9L25', '8M', '8L25', '7L25', '6L25'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '9L35', '8M', '8L35', '7M', '7L35', '7V', '6M', '6L35', '5M', '5L35', '4M', '4L40', '3M', '3L45'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rollout: ['9L1', '8L1', '7L10', '7V', '6L10', '5L10', '4T', '4L15', '3T', '3L15'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      slam: ['9L12', '8L12'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      steelroller: ['8T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['9L50', '8M', '8L50', '7T', '7L46', '6T', '6L42', '5T', '5L42', '4T'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['8M'],\n      waterfall: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      watersport: ['7L1', '6L1', '5L1'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'bonsly',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      block: ['9L12', '8L12', '7T', '7L29', '6T', '6L26', '5T', '5L22', '4T', '4L22'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      counter: ['9L40', '8L40', '7L36', '6L33'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['9M', '9E', '8E', '7E', '6E', '5E'],\n      defensecurl: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleedge: ['9M', '9L44', '8L44', '7L43', '6L40', '5L40', '4L46'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M'],\n      endure: ['9M', '8M', '7E', '6E', '5E', '4M'],\n      explosion: ['7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      feintattack: ['7L19', '6L19', '5L19', '4L25'],\n      flail: ['9L4', '8L4', '7L5', '6L5', '5L5', '4L6'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      grassknot: ['9M'],\n      harden: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      headbutt: ['9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      lowkick: ['9M', '9L36', '8M', '8L36', '7T', '7L8', '6T', '6L8', '5T', '5L8', '4T', '4L9'],\n      mimic: ['9L16', '8L16', '7L15', '6L15', '5L17', '4L17'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      powergem: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockpolish: ['9E', '8E', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L32', '8M', '8L32', '7M', '7L33', '6M', '6L29', '5M', '5L29', '4M', '4L33'],\n      rockthrow: ['9L8', '8L8', '7L12', '6L12', '5L12', '4L14'],\n      rocktomb: ['9M', '9L20', '8M', '8L20', '7M', '7L26', '6M', '6L22', '5M', '5L22', '4M', '4L30'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M'],\n      selfdestruct: ['8M', '7E', '6E', '5E', '4E'],\n      slam: ['5L15', '4L38'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['9L28', '8L28', '7L40', '6L36', '5L36', '4T', '4L41'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      tearfullook: ['9L24', '8L24', '7L22'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'sudowoodo',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['9L12', '8L12', '7T', '7L29', '6T', '6L26', '5T', '5L22', '4T', '4L22', '3L33'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      counter: ['9L40', '8L40', '7L36', '6L33', '5L33', '3T'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['9M', '8E', '7E', '7V', '6E', '5E'],\n      defensecurl: ['8E', '7E', '7V', '6E', '5E', '4E', '3T'],\n      dig: ['9M', '8M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L44', '8L44', '7L43', '6L40', '5L40', '4L46', '3T', '3L57'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '9L1', '8M', '8L1'],\n      feintattack: ['7L19', '7V', '6L19', '5L19', '4L25', '3L41'],\n      firepunch: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flail: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L9'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      hammerarm: ['9L1', '8L1', '7L50', '6L47', '5L47', '4L49'],\n      harden: ['8E', '7E', '6E', '5E', '4E'],\n      headbutt: ['8E', '7E', '7V', '6E', '5E', '4T', '4E'],\n      headsmash: ['9L48', '8L48', '7L54'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      icepunch: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '8M'],\n      lowkick: ['9M', '9L36', '8M', '8L36', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L17'],\n      lowsweep: ['9M'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      meteorbeam: ['9M', '8T'],\n      mimic: ['9L16', '8L16', '7L15', '7V', '6L15', '5L15', '4L17', '3T', '3L1'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      powergem: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '8M'],\n      rockpolish: ['8E', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L32', '8M', '8L32', '7M', '7L33', '7V', '6M', '6L29', '5M', '5L29', '4M', '4L33', '3T', '3L25'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      rocktomb: ['9M', '9L20', '8M', '8L20', '7M', '7L26', '6M', '6L22', '5M', '5L22', '4M', '4L30', '3M'],\n      roleplay: ['7T', '6T', '5T', '5D', '4T'],\n      rollout: ['8E', '7E', '7V', '6E', '5E', '5D', '4T', '4E', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      selfdestruct: ['8M', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      slam: ['9L0', '8L0', '7L1', '7V', '6L15', '5L15', '4L38', '3L49'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L1', '8M', '8L1', '7M', '7L47', '6M', '6L43', '5M', '5L43', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L28', '8L28', '7L40', '6L36', '5L36', '4T', '4L41'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      tearfullook: ['9L24', '8L24', '7L22'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['8M'],\n      woodhammer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1']\n    }\n  ],\n  [\n    'hoppip',\n    {\n      absorb: ['9L6', '7L1'],\n      acrobatics: ['9M', '9L24', '7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      amnesia: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      aromatherapy: ['7E', '6E', '5E', '4E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bounce: ['9L35', '7T', '7L46', '6T', '6L46', '5T', '5L46', '5D', '4T', '4L40'],\n      bulletseed: ['9M', '9L12', '7L19', '6L19', '5L19', '5D', '4M', '4L19', '3M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      cottonguard: ['9E', '7E', '6E', '5E'],\n      cottonspore: ['9L27', '7L34', '7V', '6L34', '5L34', '4L28', '3L25'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      doubleedge: ['9M', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['9M', '9E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      endure: ['9M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fairywind: ['9L8', '7L10', '6L10'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '9L32', '7T', '7L43', '7V', '6T', '6L43', '5T', '5L43', '4M', '4L37', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyterrain: ['9M', '9E', '7E', '6E'],\n      growl: ['7V'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      leafstorm: ['9M'],\n      leechseed: ['9L19', '7L22', '7V', '6L22', '5L22', '4L22', '3L20'],\n      lightscreen: ['9M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L22', '7L25', '7V', '6L25', '5L25', '4L25', '3L30'],\n      memento: ['9L38', '7L49', '6L49', '5L49', '4L43'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      payday: ['7V'],\n      poisonpowder: ['9L10', '7L12', '7V', '6L12', '5L12', '4L12', '3L13'],\n      pollenpuff: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4E', '3E'],\n      ragepowder: ['9E', '7L31', '6L31', '5L31'],\n      raindance: ['9M'],\n      reflect: ['9M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      silverwind: ['4M'],\n      sleeppowder: ['9L10', '7L16', '7V', '6L16', '5L16', '4L16', '3L17'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      splash: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      strengthsap: ['9E', '7E'],\n      stunspore: ['9L10', '7L14', '7V', '6L14', '5L14', '4L14', '3L15'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      switcheroo: ['9E'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L15', '7T', '7L4', '7V', '6T', '6L4', '5T', '5L4', '5D', '4T', '4L4', '3L5'],\n      tackle: ['9L1', '7L8', '7V', '6L8', '5L10', '4L10', '3L10'],\n      tailwhip: ['9L4', '7L6', '7V', '6L6', '5L7', '4L7', '3L5'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L29', '7M', '7L37', '6M', '6L37', '5M', '5L37', '4M', '4L31'],\n      worryseed: ['9E', '7T', '7L40', '7E', '6T', '6L40', '6E', '5T', '5L40', '5E', '4T', '4L34', '4E']\n    }\n  ],\n  [\n    'skiploom',\n    {\n      absorb: ['9L1', '7L1'],\n      acrobatics: ['9M', '9L28', '7M', '7L32', '6M', '6L32', '5M', '5L32'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bounce: ['9L41', '7T', '7L56', '6T', '6L56', '5T', '5L56', '4T', '4L48'],\n      bulletseed: ['9M', '9L15', '7L20', '6L20', '5L20', '4M', '4L20', '3M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      cottonspore: ['9L31', '7L40', '7V', '6L40', '5L40', '4L32', '3L29'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fairywind: ['9L10', '7L10', '6L10'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '9L37', '7T', '7L52', '7V', '6T', '6L52', '5T', '5L52', '4M', '4L44', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyterrain: ['9M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      leafstorm: ['9M'],\n      leechseed: ['9L20', '7L24', '7V', '6L24', '5L24', '4L24', '3L22'],\n      lightscreen: ['9M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L24', '7L28', '7V', '6L28', '5L28', '4L28', '3L36'],\n      memento: ['9L44', '7L60', '6L60', '5L60', '4L52'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      poisonpowder: ['9L12', '7L12', '7V', '6L12', '5L12', '4L12', '3L13'],\n      pollenpuff: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M'],\n      ragepowder: ['7L36', '6L36', '5L36'],\n      raindance: ['9M'],\n      reflect: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      sleeppowder: ['9L12', '7L16', '7V', '6L16', '5L16', '4L16', '3L17'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      splash: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      stunspore: ['9L12', '7L14', '7V', '6L14', '5L14', '4L14', '3L15'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L1', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      tackle: ['9L8', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L34', '7M', '7L44', '6M', '6L44', '5M', '5L44', '4M', '4L36'],\n      worryseed: ['7T', '7L48', '6T', '6L48', '5T', '5L48', '4T', '4L40']\n    }\n  ],\n  [\n    'jumpluff',\n    {\n      absorb: ['9L1', '7L1'],\n      acrobatics: ['9M', '9L30', '7M', '7L34', '6M', '6L34', '5M', '5L34'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bounce: ['9L49', '7T', '7L64', '6T', '6L64', '5T', '5L64', '4T', '4L48'],\n      bulletseed: ['9M', '9L15', '7L20', '6L20', '5L20', '5S0', '4M', '4L20', '3M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      cottonspore: ['9L35', '7L44', '7V', '6L44', '5L44', '4L32', '3L33'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fairywind: ['9L10', '7L10', '6L10'],\n      falseswipe: ['5S0'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '9L43', '7T', '7L59', '7V', '6T', '6L59', '5T', '5L59', '4M', '4L44', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyterrain: ['9M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      leafstorm: ['9M'],\n      leechseed: ['9L20', '7L24', '7V', '6L24', '5L24', '5S0', '4L24', '3L22'],\n      lightscreen: ['9M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L24', '7L29', '7V', '6L29', '5L29', '4L28', '3L44'],\n      memento: ['9L55', '7L69', '6L69', '5L69', '4L52'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      poisonpowder: ['9L12', '7L12', '7V', '6L12', '5L12', '4L12', '3L13'],\n      pollenpuff: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M'],\n      ragepowder: ['7L39', '6L39', '5L39'],\n      raindance: ['9M'],\n      reflect: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      sleeppowder: ['9L12', '7L16', '7V', '6L16', '5L16', '5S0', '4L16', '3L17'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      splash: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      stunspore: ['9L12', '7L14', '7V', '6L14', '5L14', '4L14', '3L15'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L1', '7T', '7L1', '7V', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      tackle: ['9L8', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L39', '7M', '7L49', '6M', '6L49', '5M', '5L49', '4M', '4L36'],\n      worryseed: ['7T', '7L54', '6T', '6L54', '5T', '5L54', '4T', '4L40']\n    }\n  ],\n  [\n    'aipom',\n    {\n      acrobatics: ['9M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L29', '7L29', '7E', '7V', '6L29', '6E', '5L29', '5E', '4L29', '4E', '3L50', '3E'],\n      astonish: ['9L8', '7L8', '6L8', '5L8', '4L8', '3L13'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '9L11', '7L11', '7V', '6L11', '5L11', '4L11', '3L18'],\n      beatup: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bodyslam: ['3T'],\n      bounce: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      covet: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doublehit: ['9L32', '7L32', '6L32', '5L32', '4L32'],\n      doubleslap: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      firepunch: ['9M', '7T', '7V', '6T', '5T', '5D', '4T', '3T'],\n      fling: ['9M', '9L36', '7M', '7L36', '6M', '6L36', '5M', '5L36', '4M', '4L36'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['9L18', '7L18', '7V', '6L18', '5L18', '4L18', '3L31'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      icepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      irontail: ['9E', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['9L43', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L43'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      nastyplot: ['9M', '9L39', '7L39', '6L39', '5L39', '4L39'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      quickguard: ['9E', '7E', '6E'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['7E', '6E', '5E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L4', '7L4', '7V', '6L4', '5L4', '4L4', '3L6', '3S0'],\n      scratch: ['9L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      screech: ['9L25', '7L25', '7E', '7V', '6L25', '6E', '5L25', '5E', '4L25', '4E', '3L43', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slam: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['9M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L22', '7L22', '7V', '6L22', '5L22', '4T', '4L22', '3T', '3L38'],\n      switcheroo: ['9E', '7E', '6E', '5E'],\n      tailslap: ['7E'],\n      tailwhip: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M'],\n      thunder: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      tickle: ['9L15', '7L15', '6L15', '5L15', '4L15', '3L25'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      workup: ['7M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'ambipom',\n    {\n      acrobatics: ['9M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M', '9L29', '7L29', '6L29', '5L29', '4L29'],\n      astonish: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      attract: ['7M', '6M', '5M', '4M'],\n      batonpass: ['9M', '9L11', '7L11', '6L11', '5L11', '4L11'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['9M', '6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doublehit: ['9L32', '7L32', '6L32', '5L32', '4L32'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      dualchop: ['7L1'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T'],\n      fling: ['9M', '9L36', '7M', '7L36', '6M', '6L36', '5M', '5L36', '4M', '4L36'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      furyswipes: ['9L18', '7L18', '6L18', '5L18', '4L18'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lastresort: ['9L43', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L43'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      metronome: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T'],\n      nastyplot: ['9M', '9L39', '7L39', '6L39', '5L39', '4L39'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      scratch: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      screech: ['9L25', '7L25', '6L25', '5L25', '4L25'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '9L22', '7L22', '6L22', '5L22', '4T', '4L22'],\n      tailwhip: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      throatchop: ['9M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M'],\n      tickle: ['9L15', '7L15', '6L15', '5L15', '4L15'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'sunkern',\n    {\n      absorb: ['9L7', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      afteryou: ['7T', '6T', '5T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7E', '6E', '5E'],\n      bulletseed: ['9M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L34', '7L37', '6L37', '5L37', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      encore: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      endeavor: ['9M', '9L25', '7T', '7L25', '6T', '6L25', '5T', '5L21', '4T', '4L21', '3L25'],\n      endure: ['9M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '9L22', '7T', '7L22', '7V', '6T', '6L22', '5T', '5L22', '4M', '4L41', '3M', '3L42'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['7L7', '7E', '6L7', '6E', '5L7', '5E', '4L13', '4E', '3E'],\n      grassyterrain: ['9M', '9E', '7E', '6E'],\n      growth: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L6', '3S0'],\n      helpinghand: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      ingrain: ['9E', '7L4', '7E', '6L4', '6E', '5L4', '5E', '4L9', '4E', '3L18'],\n      leafstorm: ['9M'],\n      leechseed: ['9E', '7L13', '7E', '6L13', '6E', '5L13', '5E', '4L17', '4E', '3E'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L10', '7L10', '7V', '6L10', '5L5', '5D', '4L5', '3L13'],\n      mimic: ['3T'],\n      morningsun: ['9E', '7E', '6E', '5E'],\n      naturalgift: ['7L31', '7E', '6L31', '6E', '5L31', '5E', '4M'],\n      naturepower: ['7M', '7E', '6M', '6E', '5E', '4E', '3E'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      razorleaf: ['9L16', '7L16', '6L16', '5L16', '4L29'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '9L39', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L45'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L31', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '9L36', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L37', '4M', '4L37', '3M', '3L30'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7E', '7V', '6E', '5E', '5D', '4E'],\n      swordsdance: ['7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L28', '7T', '7L28', '7V', '6T', '6L28', '5T', '5L28', '4T', '4L33', '3L37'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      weatherball: ['9M'],\n      worryseed: ['9L19', '7T', '7L19', '6T', '6L19', '5T', '5L19', '4T', '4L25']\n    }\n  ],\n  [\n    'sunflora',\n    {\n      absorb: ['9L7', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      afteryou: ['7T', '6T', '5T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bulletseed: ['9M', '9L25', '7L25', '6L25', '5L21', '4M', '4L21', '3M', '3L25'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['9M'],\n      doubleedge: ['9M', '9L34', '7L37', '6L37', '5L37', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      encore: ['9M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      flowershield: ['7L1', '6L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '9L22', '7T', '7L22', '7V', '6T', '6L22', '5T', '5L22', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['7L7', '6L7', '5L7', '4L13'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L6'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      ingrain: ['9L4', '7L4', '6L4', '5L4', '4L9', '3L18'],\n      leafstorm: ['9M', '9L43', '7L43', '6L43', '5L43', '4L43'],\n      leechseed: ['9L13', '7L13', '6L13', '5L13', '4L17'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L10', '7L10', '6L10', '5L5', '4L5'],\n      mimic: ['3T'],\n      naturalgift: ['7L31', '6L31', '5L31', '4M'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M', '9L50', '7L50', '6L50'],\n      petaldance: ['9L28', '7L28', '7V', '6L28', '5L28', '4L33', '3L37'],\n      pound: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      razorleaf: ['9L16', '7L16', '7V', '6L16', '5L16', '4L29', '3L13'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L31', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L41', '3M', '3L42'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '9L39', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L37', '4M', '4L37', '3M', '3L30'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      weatherball: ['9M'],\n      worryseed: ['9L19', '7T', '7L19', '6T', '6L19', '5T', '5L19', '4T', '4L25']\n    }\n  ],\n  [\n    'yanma',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['9M', '9L14', '4T'],\n      airslash: ['9M', '9L54', '7L54', '6L54', '5L54', '4L54'],\n      ancientpower: ['9L33', '7L33', '6L33', '5L33', '4T', '4L33'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bugbite: ['9M', '9L30', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '9L57', '7L57', '6L57', '5L57', '4L57'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['9L17', '7L17', '7V', '6L17', '5L17', '4L17', '3L25'],\n      doubleedge: ['9M', '9E', '7E', '6E', '5E', '3T'],\n      doubleteam: ['9L11', '7M', '7L11', '7V', '6M', '6L11', '5M', '5L11', '4M', '4L11', '3M', '3L12'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      feintattack: ['7E', '6E', '5E', '4E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foresight: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '5D', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypnosis: ['9L38', '7L38', '6L38', '5L38', '4L38', '3L23'],\n      leechlife: ['9M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      lunge: ['9M'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M'],\n      pursuit: ['7L30', '7E', '6L30', '6E', '5L30', '5E', '4L30', '4E'],\n      quickattack: ['9L6', '7L6', '7V', '6L6', '5L6', '5D', '4L6', '3L6'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      screech: ['9L46', '7L46', '7V', '6L46', '5L46', '4L46', '3L49'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      silverwind: ['7E', '6E', '5E', '4M', '4E', '3E'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sonicboom: ['7L14', '7V', '6L14', '5L14', '4L14', '3L17'],\n      steelwing: ['7M', '6M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supersonic: ['9L22', '7L22', '7V', '6L22', '5L22', '4L22', '3L31'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      swordsdance: ['9M'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '9L27', '7T', '7L27', '6T', '6L27', '5T', '5L27', '4T', '4L27', '3L34'],\n      uturn: ['9M', '9L49', '7M', '7L49', '6M', '6L49', '5M', '5L49', '4M', '4L49'],\n      whirlwind: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      wingattack: ['9L43', '7L43', '7V', '6L43', '5L43', '4L43', '3L39']\n    }\n  ],\n  [\n    'yanmega',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9L1', '7L1', '6L1', '5L54', '4L49'],\n      ancientpower: ['9L33', '7L33', '6L33', '5L33', '4T', '4L33'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bugbite: ['9M', '9L30', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      bugbuzz: ['9M', '9L1', '7L1', '6L1', '5L57', '4L54'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M'],\n      defog: ['7T', '4M'],\n      detect: ['9L17', '7L17', '6L17', '5L17', '4L17'],\n      doubleedge: ['9M'],\n      doubleteam: ['9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      dualwingbeat: ['9M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      feint: ['9L38', '7L38', '6L38', '5L38', '4L38'],\n      flash: ['6M', '5M', '4M'],\n      foresight: ['7L1', '6L1', '5L1', '4L1'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      hypnosis: ['9L1'],\n      laserfocus: ['7T'],\n      leechlife: ['9M', '7M'],\n      lunge: ['9M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightslash: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      ominouswind: ['4T'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L30', '6L30', '5L30', '4L30'],\n      quickattack: ['9L14', '7L1', '6L1', '5L1', '4L1'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      reversal: ['9M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['9L46', '7L46', '6L46', '5L46', '4L43'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      skittersmack: ['9M'],\n      slash: ['9L43', '7L43', '6L43', '5L43', '4L38'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      sonicboom: ['7L14', '6L14', '5L14', '4L14'],\n      steelwing: ['7M', '6M', '4M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      supersonic: ['9L22', '7L22', '6L22', '5L22', '4L22'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      swordsdance: ['9M'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['9M', '9L27', '7T', '7L27', '6T', '6L27', '5T', '5L27', '4T', '4L27'],\n      uturn: ['9M', '9L49', '7M', '7L49', '6M', '6L49', '5M', '5L49', '4M', '4L46']\n    }\n  ],\n  [\n    'wooper',\n    {\n      acidspray: ['9M', '9E', '8E', '7E', '6E', '5E'],\n      afteryou: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      amnesia: ['9M', '9L32', '8M', '8L32', '7L23', '7V', '6L23', '5L23', '4L23', '3L21'],\n      ancientpower: ['9E', '8E', '7E', '7V', '6E', '5E', '4T', '4E', '3E'],\n      aquatail: ['9L24', '8L24', '7T', '6T', '5T', '5D', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7E', '7V', '6E', '5E', '5D', '4E', '3T', '3E'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '8M', '7V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doublekick: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L40', '8M', '8L40', '7M', '7L33', '7V', '6M', '6L33', '5M', '5L33', '4M', '4L33', '3M', '3L36'],\n      eerieimpulse: ['8M', '7E', '6E'],\n      encore: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      guardswap: ['8M', '7E', '6E'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '9L12', '8L12', '7L43', '7V', '6L43', '5L43', '4L43', '3L51'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '8M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      infestation: ['7M', '6M'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      liquidation: ['9M'],\n      mimic: ['3T'],\n      mist: ['9L12', '8L12', '7L43', '7V', '6L43', '5L43', '4L43', '3L51'],\n      mudbomb: ['7L19', '6L19', '5L19', '4L19'],\n      muddywater: ['9M', '9L28', '8M', '8L28', '7L47', '6L47', '5L47', '4L47'],\n      mudshot: ['9M', '9L8', '8M', '8L8', '7L9', '6L9', '5L9', '4L9', '3L16'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      mudsport: ['7L5', '7E', '6L5', '6E', '5L5', '5E', '4L5', '4E', '3E'],\n      naturalgift: ['4M'],\n      poweruppunch: ['8E', '7E'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '9L4', '8M', '8L4', '7M', '7L37', '7V', '6M', '6L37', '5M', '5L37', '4M', '4L37', '3M', '3L41'],\n      recover: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      slam: ['9L16', '8L16', '7L15', '7V', '6L15', '5L15', '4L15', '3L11'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      spikes: ['9M'],\n      spitup: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      stealthrock: ['9M'],\n      stockpile: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      tailwhip: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L36', '8L36', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      yawn: ['9L21', '8L21', '7L29', '6L29', '5L29', '4L29', '3L31']\n    }\n  ],\n  [\n    'wooperpaldea',\n    {\n      acidspray: ['9M', '9E'],\n      afteryou: ['9E'],\n      amnesia: ['9M', '9L32'],\n      ancientpower: ['9E'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      counter: ['9E'],\n      curse: ['9M', '9E'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doublekick: ['9E'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L40'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gunkshot: ['9M'],\n      haze: ['9M', '9E'],\n      helpinghand: ['9M'],\n      hydropump: ['9M'],\n      liquidation: ['9M'],\n      lowkick: ['9M'],\n      mist: ['9E'],\n      mudshot: ['9M', '9L1'],\n      mudslap: ['9M'],\n      poisonjab: ['9M', '9L24'],\n      poisontail: ['9M', '9L8'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      recover: ['9E'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      slam: ['9L16'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M', '9L28'],\n      spikes: ['9M'],\n      spitup: ['9E'],\n      stealthrock: ['9M'],\n      stockpile: ['9E'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      swallow: ['9E'],\n      tackle: ['9L4'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L36'],\n      toxicspikes: ['9M', '9L12'],\n      trailblaze: ['9M'],\n      venoshock: ['9M'],\n      waterfall: ['9M'],\n      waterpulse: ['9M'],\n      yawn: ['9L21']\n    }\n  ],\n  [\n    'quagsire',\n    {\n      acidspray: ['9M'],\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M', '9L40', '8M', '8L40', '7L24', '7V', '6L24', '5L24', '4L24', '3L23'],\n      ancientpower: ['4T'],\n      aquatail: ['9L28', '8L28', '7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '7V'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '8M', '7V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L52', '8M', '8L52', '7M', '7L36', '7V', '6M', '6L36', '5M', '5L36', '4M', '4L36', '3M', '3L42'],\n      eerieimpulse: ['9M', '8M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      guardswap: ['8M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '9L12', '8L12', '7L48', '7V', '6L48', '5L48', '4L48', '3L61'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      infestation: ['7M', '6M'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      liquidation: ['9M', '8M'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mist: ['9L12', '8L12', '7L48', '7V', '6L48', '5L48', '4L48', '3L61'],\n      mudbomb: ['7L19', '6L19', '5L19', '4L19'],\n      muddywater: ['9M', '9L34', '8M', '8L34', '7L53', '6L53', '5L53', '4L53'],\n      mudshot: ['9M', '9L1', '8M', '8L1', '7L9', '6L9', '5L9', '4L9', '3L16'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '9L1', '8M', '8L1', '7M', '7L41', '7V', '6M', '6L41', '5M', '5L41', '4M', '4L41', '3M', '3L49'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      slam: ['9L16', '8L16', '7L15', '7V', '6L15', '5L15', '4L15', '3L11'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      spikes: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tailwhip: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['9M', '9L46', '8L46', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '8M', '7V', '4M'],\n      yawn: ['9L23', '8L23', '7L31', '6L31', '5L31', '4L31', '3L35']\n    }\n  ],\n  [\n    'clodsire',\n    {\n      acidspray: ['9M'],\n      amnesia: ['9M', '9L0'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      curse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L48'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      haze: ['9M'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      ironhead: ['9M'],\n      liquidation: ['9M'],\n      lowkick: ['9M'],\n      megahorn: ['9L36'],\n      muddywater: ['9M'],\n      mudshot: ['9M', '9L8'],\n      mudslap: ['9M'],\n      poisonjab: ['9M', '9L24'],\n      poisonsting: ['9L1'],\n      poisontail: ['9M', '9L12'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      slam: ['9L16'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M', '9L30'],\n      spikes: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L40'],\n      toxicspikes: ['9M', '9L4'],\n      trailblaze: ['9M'],\n      venoshock: ['9M'],\n      waterfall: ['9M'],\n      waterpulse: ['9M'],\n      yawn: ['9L21'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'murkrow',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M'],\n      assurance: ['9L25', '7L25', '7E', '6L25', '6E', '5L25', '5E', '4L25'],\n      astonish: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L9', '3S0'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bravebird: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      curse: ['7V'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      drillpeck: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      dualwingbeat: ['9M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      feintattack: ['7L35', '7E', '7V', '6L35', '6E', '5L35', '5E', '4L35', '4E', '3L35'],\n      flatter: ['9E', '7E', '6E'],\n      fly: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '9L40', '7T', '7L45', '6T', '6L45', '5T', '5L45'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M'],\n      gust: ['9L5'],\n      haze: ['9M', '9L11', '7L11', '7V', '6L11', '5L11', '4L11', '3L22'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M'],\n      icywind: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      lashout: ['9M'],\n      meanlook: ['9L35', '7L41', '7V', '6L41', '5L41', '4L41', '3L48'],\n      mimic: ['3T'],\n      mirrormove: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['9M', '9L21', '7L21', '7V', '6L21', '5L21', '4L21', '3L27'],\n      ominouswind: ['4T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      peck: ['9L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      perishsong: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      psychoshift: ['7E', '6E', '5E', '4E'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      pursuit: ['7L5', '7V', '6L5', '5L5', '4L5', '3L14'],\n      quash: ['9L60', '7M', '7L65', '6M', '6L65', '5M', '5L65'],\n      quickattack: ['7V'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '7E', '6M', '6E', '5T', '5E', '5D', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['9E', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      skyattack: ['9E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4E', '3T', '3E'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      steelwing: ['7M', '7V', '6M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L50', '7L55', '6L55', '5L55', '4T', '4L45'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      tailwind: ['9M', '7T', '7L50', '6T', '6L50', '5T', '5L51', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L31', '7M', '7L31', '6M', '6L31', '5M', '5L31', '4M', '4L31', '3M', '3L40'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['9L55', '7M', '7L61', '6M', '6L61', '5M', '5L61', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M'],\n      whirlwind: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      wingattack: ['9L15', '7L15', '7E', '7V', '6L15', '6E', '5L15', '5E', '4L15', '4E', '3E']\n    }\n  ],\n  [\n    'honchkrow',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M'],\n      astonish: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bravebird: ['9M'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      comeuppance: ['9L65'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      darkpulse: ['9M', '9L55', '7M', '7L75', '6M', '6L75', '5T', '5L75', '4M', '4L55'],\n      defog: ['7T', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      dualwingbeat: ['9M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      featherdance: ['9M'],\n      fly: ['9M', '7M', '6M', '5M', '4M'],\n      foulplay: ['9M', '9L45', '7T', '7L45', '6T', '6L45', '5T', '5L45'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      haze: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      heatwave: ['9M', '7T', '7S0', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '7T', '7S0', '6T', '5T'],\n      incinerate: ['6M', '5M'],\n      lashout: ['9M'],\n      mudslap: ['9M', '4T'],\n      nastyplot: ['9M', '9L35', '7L35', '6L35', '5L35', '4L35'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      nightslash: ['9L1', '7L1', '7S0', '6L1', '5L55', '4L45'],\n      ominouswind: ['4T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L1', '6L1', '5L1', '4L1'],\n      quash: ['9L1', '7M', '7L65', '6M', '6L65', '5M', '5L65'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M'],\n      skyattack: ['7T', '7S0', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snarl: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['7T', '6T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      steelwing: ['7M', '6M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['9L1', '7L1', '6L1', '4T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['9L25', '7M', '7L25', '6M', '6L25', '5M', '5L25', '4M', '4L25'],\n      swift: ['4T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M'],\n      wingattack: ['9L1', '7L1', '6L1', '5L1', '4L1']\n    }\n  ],\n  [\n    'misdreavus',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      allyswitch: ['7T'],\n      astonish: ['9L10', '7L10', '6L10', '5L10', '4L10', '3L11'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L14', '7L14', '7V', '6L14', '5L14', '4L14', '3L17'],\n      confusion: ['9L1'],\n      curse: ['9M', '9E', '7E', '7V', '6E', '5E', '4E'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      destinybond: ['9E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      growl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      grudge: ['7L50', '6L50', '5L50', '4L46', '3L53'],\n      headbutt: ['7V', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hex: ['9M', '9L23', '7L23', '6L23', '5L23'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      inferno: ['5D'],\n      magicalleaf: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['7T', '6T', '5T'],\n      meanlook: ['9L19', '7L19', '7V', '6L19', '5L19', '4L19', '3L23'],\n      mefirst: ['7E', '6E'],\n      memento: ['9E', '7E', '6E', '5E', '4E'],\n      mimic: ['3T'],\n      nastyplot: ['9M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      nightshade: ['9M'],\n      ominouswind: ['7E', '6E', '5E', '4T', '4E'],\n      painsplit: ['9M', '9L32', '7T', '7L32', '7V', '6T', '6L32', '5T', '5L32', '4T', '4L28', '3L37'],\n      payback: ['9L37', '7M', '7L37', '6M', '6L37', '5M', '5L37', '4M', '4L32'],\n      perishsong: ['9L46', '7L46', '7V', '6L46', '5L46', '4L41', '3L45'],\n      phantomforce: ['9M'],\n      poltergeist: ['9M'],\n      powergem: ['9M', '9L50', '7L55', '6L55', '5L55', '4L50'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L28', '7L28', '7V', '6L28', '5L28', '4L23', '3L30'],\n      psychic: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      psyshock: ['9M'],\n      psywave: ['7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '9L41', '7M', '7L41', '7V', '6M', '6L41', '5M', '5L41', '4M', '4L37', '3M'],\n      shadowsneak: ['9E', '7E', '6E', '5E', '4E'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skillswap: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      spite: ['9M', '9E', '7T', '7L5', '7E', '7V', '6T', '6L5', '6E', '5T', '5L5', '5E', '4T', '4L5', '4E', '3L6', '3S0'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9E', '7E', '6E', '5E', '4T', '4E'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['9E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'mismagius',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      allyswitch: ['7T'],\n      astonish: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      attract: ['7M', '6M', '5M', '4M'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainingkiss: ['9M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '4M'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M'],\n      flash: ['6M', '5M', '4M'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M'],\n      laserfocus: ['7T'],\n      lashout: ['9M'],\n      luckychant: ['7L1', '6L1', '5L1', '4L1'],\n      magicalleaf: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['7T', '6T', '5T'],\n      mysticalfire: ['9L1', '7L1', '6L1'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      ominouswind: ['4T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      phantomforce: ['9M', '9L1', '7L1', '6L1'],\n      poltergeist: ['9M'],\n      powergem: ['9M', '9L1', '7L1', '6L1'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M'],\n      psywave: ['7L1', '6L1', '5L1', '4L1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      skillswap: ['9M', '7T', '6T', '5T', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      spite: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      taunt: ['9M', '7M', '6M', '5M', '4M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['7T', '6T', '5T']\n    }\n  ],\n  ['unown', { hiddenpower: ['7M', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'] }],\n  [\n    'wynaut',\n    {\n      amnesia: ['8M', '8L1'],\n      charm: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      counter: ['8L1', '7L15', '6L15', '5L15', '4L15', '3L15'],\n      destinybond: ['8L1', '7L15', '6L15', '5L15', '4L15', '3L15'],\n      encore: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      mirrorcoat: ['8L1', '7L15', '6L15', '5L15', '4L15', '3L15'],\n      safeguard: ['8M', '8L1', '7M', '7L15', '6M', '6L15', '5L15', '4L15', '3L15'],\n      splash: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      tickle: ['3S0']\n    }\n  ],\n  [\n    'wobbuffet',\n    {\n      amnesia: ['8M', '8L1'],\n      charm: ['8M', '8L1', '5D'],\n      counter: ['8L0', '7L1', '7V', '6L1', '6S2', '6S3', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      destinybond: ['8L0', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      encore: ['8M', '8L1', '5D'],\n      mirrorcoat: ['8L0', '7L1', '7V', '6L1', '6S3', '5L1', '5D', '4L1', '3L1', '3S0', '3S1'],\n      safeguard: ['8M', '8L0', '7M', '7L1', '7V', '6M', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      splash: ['8L1']\n    }\n  ],\n  [\n    'girafarig',\n    {\n      agility: ['9M', '9L23', '7L23', '7V', '6L14', '5L14', '4L14', '3L31'],\n      allyswitch: ['9E', '7T'],\n      amnesia: ['9M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      assurance: ['9L10', '7L10', '6L10', '5L28', '4L28'],\n      astonish: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L7'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '9L41', '7L41', '7V', '6L23', '5L23', '4L23', '3L37'],\n      beatup: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bodyslam: ['9M', '3T'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L5', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L13'],\n      crunch: ['9M', '9L37', '7L37', '7V', '6L37', '5L46', '4L46', '3L49'],\n      curse: ['7V'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      doubleedge: ['9M', '3T'],\n      doublehit: ['9L28', '7L28', '6L28', '5L32', '4L32'],\n      doublekick: ['9E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      earthquake: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      growl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      guardswap: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      imprison: ['9M'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      lowkick: ['9M'],\n      magiccoat: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      meanlook: ['9E', '7E', '6E', '5E'],\n      mimic: ['3T'],\n      mirrorcoat: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M', '9L46', '7L46', '6L46'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      odorsleuth: ['7L5', '6L5', '5L5', '4L5', '3L25'],\n      powerswap: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L19', '7L19', '7V', '6L19', '5L19', '4L19', '3L43'],\n      psychic: ['9M', '9L50', '7M', '7L50', '7V', '6M', '6L37', '5M', '5L37', '4M', '4L37', '3M'],\n      psychicfangs: ['9M', '7E'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '7E'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      psyshock: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7E', '6E', '5E', '4E'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      shadowball: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      stomp: ['9L14', '7L14', '7V', '6L10', '5L10', '4L10', '3L19'],\n      stompingtantrum: ['9M', '7T'],\n      storedpower: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      twinbeam: ['9L32'],\n      uproar: ['9M', '9E', '7T', '6T', '5T', '4T'],\n      wish: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      workup: ['7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '7T', '7L32', '6T', '6L32', '5T', '5L41', '4T', '4L41']\n    }\n  ],\n  [\n    'pineco',\n    {\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7L20', '7V', '6L20', '5L20', '4L17', '3L29'],\n      bodyslam: ['9M', '3T'],\n      bugbite: ['9M', '9L9', '7T', '7L9', '6T', '6L9', '5T', '5L9', '4T', '4L9'],\n      bugbuzz: ['9M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '6E', '5E', '4E', '3T', '3E', '3S1'],\n      curse: ['9M', '9L23', '7V'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L45', '7L45', '7E', '7V', '6L45', '6E', '5L45', '5E', '4L42', '4E', '3T', '3L50'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['9M', '7T', '6T', '5T'],\n      earthquake: ['7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      explosion: ['9L34', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L31', '3T', '3L36'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gravity: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      gyroball: ['9M', '9L42', '7M', '7L42', '6M', '6L42', '5M', '5L42', '4M', '4L39'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      icespinner: ['9M'],\n      irondefense: ['9M', '9L39', '7T', '7L39', '6T', '6L39', '5T', '5L39', '4T', '4L34'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      lunge: ['9M'],\n      mimic: ['3T'],\n      naturalgift: ['7L23', '6L23', '5L23', '4M', '4L20'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['9L31', '7M', '7L31', '6M', '6L31', '5M', '5L31', '4M', '4L28'],\n      pinmissile: ['9E', '7E', '7V', '6E', '5E', '4E', '3E', '3S1'],\n      poisonjab: ['9M'],\n      pounce: ['9M'],\n      powertrick: ['9E', '7E', '6E', '5E', '4E'],\n      protect: ['9M', '9L1', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1', '3S0'],\n      raindance: ['9M'],\n      rapidspin: ['9L17', '7L17', '7V', '6L17', '5L17', '4L12', '3L22'],\n      reflect: ['9M', '7M', '7V', '6M', '5M', '4M', '4E', '3M', '3E'],\n      refresh: ['3S1'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['7E', '6E', '5E', '4E'],\n      reversal: ['9M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      rollout: ['9L20', '7V', '4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      selfdestruct: ['9L6', '7L6', '7V', '6L6', '5L6', '5D', '4L6', '3T', '3L8', '3S0'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spikes: ['9M', '9L28', '7L28', '7V', '6L28', '5L28', '4L23', '3L43', '3S1'],\n      stealthrock: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      takedown: ['9M', '9L12', '7L12', '7V', '6L12', '5L12', '4L9', '3L15'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '9E', '7E', '6E', '5E', '5D', '4E'],\n      venoshock: ['9M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'forretress',\n    {\n      allyswitch: ['7T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      autotomize: ['7L1', '6L32', '5L32'],\n      bide: ['7L20', '7V', '6L20', '5L20', '4L17', '3L29'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '3T'],\n      bugbite: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      bugbuzz: ['9M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '9L23', '7V'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9L50', '7L50', '7V', '6L56', '5L56', '4L50', '3T', '3L59'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillrun: ['9M', '7T', '6T', '5T'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      explosion: ['9L36', '7M', '7L36', '7V', '6M', '6L42', '5M', '5L42', '4M', '4L33', '3T', '3L39'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '9L46', '7M', '7L46', '6M', '6L50', '5M', '5L50', '4M', '4L45'],\n      hardpress: ['9M'],\n      headbutt: ['7V', '4T'],\n      heavyslam: ['9M', '9L0', '7L1', '6L1', '5L70'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icespinner: ['9M'],\n      irondefense: ['9M', '9L42', '7T', '7L42', '6T', '6L46', '5T', '5L46', '4T', '4L38'],\n      ironhead: ['9M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      lunge: ['9M'],\n      magnetrise: ['9L1', '7T', '7L1', '6T', '6L1', '5T', '5L60', '4T', '4L57'],\n      metalsound: ['9M'],\n      mimic: ['3T'],\n      mirrorshot: ['7L1', '6L31', '5L31', '4L31'],\n      naturalgift: ['7L23', '6L23', '5L23', '4M', '4L20'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['9L32', '7M', '7L32', '6M', '6L36', '5M', '5L36', '4M', '4L28'],\n      poisonjab: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M', '9L1', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      raindance: ['9M'],\n      rapidspin: ['9L17', '7L17', '7V', '6L17', '5L17', '4L12', '3L22'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      rockblast: ['9M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      rollout: ['9L20', '7V', '4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      selfdestruct: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L1'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smartstrike: ['9M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spikes: ['9M', '9L28', '7L28', '7V', '6L28', '5L28', '4L23', '3L49'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M'],\n      stoneedge: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['9M'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L12', '7L12', '7V', '6L12', '5L12', '4L1', '3L15'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thunderwave: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      zapcannon: ['9L1', '7L1', '6L1', '5L64', '4L62', '3L31']\n    }\n  ],\n  [\n    'dunsparce',\n    {\n      agility: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      airslash: ['9M', '8M', '7L41'],\n      amnesia: ['9M', '8M'],\n      ancientpower: ['9L20', '8L20', '7L16', '7E', '7V', '6L19', '6E', '5L19', '5E', '4T', '4L41', '4E', '3E'],\n      aquatail: ['9E', '8E', '7T', '6T', '5T', '4T'],\n      astonish: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M'],\n      bide: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      bind: ['7T', '6T', '5T'],\n      bite: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '8L32', '7L18', '3T'],\n      breakingswipe: ['9M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      coil: ['9L44', '8L48', '7L28', '6L37', '5L37'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      defensecurl: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5D', '4L5', '3T', '3L4'],\n      dig: ['9M', '8M', '7L31', '7V', '6M', '6L31', '5M', '5L31', '4M', '4L45', '3M'],\n      doubleedge: ['9M', '9L48', '8L52', '7L36', '6L34', '5L34', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonrush: ['9L40', '8L44', '7L43'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      drillrun: ['9M', '9L24', '8M', '8L24', '7T', '7L21', '6T', '6L43', '5T', '5L43'],\n      dualwingbeat: ['8T'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endeavor: ['9M', '9L52', '8L56', '7T', '7L38', '6T', '6L46', '5T', '5L46', '4T', '4L49', '3L41'],\n      endure: ['9M', '8M', '7L46', '7V', '6L40', '5L40', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9L1', '8L1', '7L48', '6L49', '5L49', '4L53', '3L44'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M'],\n      glare: ['9L12', '8L12', '7L33', '7V', '6L28', '5L12', '4L13', '3L14'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['9E', '8E', '7E', '7V', '6E', '5E', '4T', '4E', '3E'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M', '8M', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M'],\n      hyperdrill: ['9L32'],\n      hypervoice: ['9M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icespinner: ['9M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      lastresort: ['9E', '8E', '7T', '6T', '5T', '4T'],\n      lunge: ['9M'],\n      magiccoat: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L4', '8L4', '7L13', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poisontail: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      pursuit: ['7L8', '7V', '6L10', '5L10', '4L25', '3L24'],\n      rage: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9L8', '8L8', '7L3', '7V', '6L4', '5L4', '4T', '4L17', '3T', '3L21'],\n      roost: ['9L36', '8L40', '7M', '7L23', '6M', '6L25', '5T', '5L25', '4M', '4L33'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      screech: ['9L16', '8M', '8L16', '7L11', '7V', '6L13', '5L13', '4L29', '3L31'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '3T'],\n      smartstrike: ['9M'],\n      snore: ['8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T'],\n      solarbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spite: ['9M', '7T', '7L6', '7V', '6T', '6L7', '5T', '5L7', '4T', '4L21', '3L21'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '5D', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M'],\n      storedpower: ['9M', '8M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M', '8L36', '7L26', '7V', '6L22', '5L22', '4L37', '3L34'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trumpcard: ['7E', '6E', '5E', '4E'],\n      uproar: ['9M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      yawn: ['9L28', '8L28', '7L13', '6L16', '5L8', '4L9', '3L11'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'dudunsparce',\n    {\n      agility: ['9M'],\n      airslash: ['9M'],\n      amnesia: ['9M'],\n      ancientpower: ['9L20'],\n      batonpass: ['9M'],\n      blizzard: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      boomburst: ['9L62'],\n      breakingswipe: ['9M'],\n      bulldoze: ['9M'],\n      calmmind: ['9M'],\n      chillingwater: ['9M'],\n      coil: ['9L44'],\n      curse: ['9M'],\n      defensecurl: ['9L1'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L48'],\n      dragonrush: ['9L40'],\n      dragontail: ['9M'],\n      drillrun: ['9M', '9L24'],\n      dualwingbeat: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M'],\n      endeavor: ['9M', '9L52'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      flail: ['9L1'],\n      flamethrower: ['9M'],\n      gigaimpact: ['9M'],\n      glare: ['9L12'],\n      gyroball: ['9M'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      hurricane: ['9M', '9L56'],\n      hyperbeam: ['9M'],\n      hyperdrill: ['9L32'],\n      hypervoice: ['9M'],\n      icebeam: ['9M'],\n      icespinner: ['9M'],\n      lunge: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L4'],\n      outrage: ['9M'],\n      painsplit: ['9M'],\n      poisonjab: ['9M'],\n      poisontail: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      rollout: ['9L8'],\n      roost: ['9L36'],\n      sandstorm: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L16'],\n      shadowball: ['9M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M'],\n      solarbeam: ['9M'],\n      spite: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      toxic: ['9M'],\n      uproar: ['9M'],\n      wildcharge: ['9M'],\n      yawn: ['9L28'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'gligar',\n    {\n      acrobatics: ['9M', '9L22', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '7E', '6E', '5E', '4E'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '7E', '6E', '5E', '4E'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      bugbite: ['7T', '6T', '5T'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      crabhammer: ['9L45'],\n      crosspoison: ['9E', '7E', '6E', '5E', '4E'],\n      crunch: ['9M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      dig: ['6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9E', '7E', '6E', '5E', '4E', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['3T'],\n      dualwingbeat: ['9M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '7M', '6M', '5M', '4M'],\n      feint: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      feintattack: ['7L19', '7V', '6L19', '5L19', '4L23', '3L28'],\n      firefang: ['9M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['9L16', '7L16', '7V', '6L16', '5L16', '4T', '4L20', '3T'],\n      guillotine: ['7L55', '7V', '6L55', '5L49', '4L45', '3L52'],\n      gunkshot: ['9M'],\n      harden: ['9L7', '7L7', '7V', '6L7', '5L7', '4L9', '3L13'],\n      headbutt: ['7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      honeclaws: ['6M', '5M'],\n      icefang: ['9M'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '9L10', '7T', '7L10', '6T', '6L10', '5T', '5L10', '4T', '4L12'],\n      lunge: ['9M'],\n      metalclaw: ['9M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '7E', '6E', '5E', '4E'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      poisonsting: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      poisontail: ['9M', '9L19', '7E', '6E', '5E'],\n      powertrick: ['7E', '6E', '5E', '4E'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      quickattack: ['9L13', '7L13', '7V', '6L13', '5L13', '4L16', '3L20'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['7E', '6E', '5E'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L4', '7L4', '7V', '6L4', '5L4', '5D', '4L5', '3L6', '3S0'],\n      sandstorm: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '7E', '6E', '5E', '4E', '3E'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L35', '7L35', '7V', '6L35', '5L31', '4L27', '3L44'],\n      secretpower: ['6M', '4M', '3M'],\n      skittersmack: ['9M'],\n      skyuppercut: ['7L45', '6L45', '5L45'],\n      slash: ['9L27', '7L27', '7V', '6L27', '5L27', '4L31', '3L36'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      steelwing: ['7M', '6M', '4M', '3M'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '9L50', '7M', '7L50', '6M', '6L50', '5M', '5L38', '4M', '4L34', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '7T'],\n      thunderfang: ['9M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      uturn: ['9M', '9L30', '7M', '7L30', '6M', '6L30', '5M', '5L30', '4M', '4L38'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      wingattack: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      xscissor: ['9M', '9L40', '7M', '7L40', '6M', '6L40', '5M', '5L40', '4M', '4L42']\n    }\n  ],\n  [\n    'gliscor',\n    {\n      acrobatics: ['9M', '9L22', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['7M', '6M', '5M', '4M'],\n      batonpass: ['9M'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      brutalswing: ['7M'],\n      bugbite: ['7T', '6T', '5T'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crabhammer: ['9L45'],\n      crunch: ['9M'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      defog: ['7T', '4M'],\n      dig: ['6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dualwingbeat: ['9M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      falseswipe: ['9M', '7M', '6M', '5M', '4M'],\n      feintattack: ['7L19', '6L19', '5L19', '4L23'],\n      firefang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['9L16', '7L16', '6L16', '5L16', '4T', '4L20'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      guillotine: ['7L1', '6L1', '5L49', '4L45'],\n      gunkshot: ['9M'],\n      harden: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highhorsepower: ['9M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icefang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      knockoff: ['9M', '9L19', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      lunge: ['9M'],\n      metalclaw: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      nightslash: ['9L27', '7L27', '6L27', '5L27', '4L31'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      poisontail: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychicfangs: ['9M'],\n      quickattack: ['9L13', '7L13', '6L13', '5L13', '4L16'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L35', '7L35', '6L35', '5L31', '4L27'],\n      secretpower: ['6M', '4M'],\n      skittersmack: ['9M'],\n      skyattack: ['7T', '6T', '5T', '4T'],\n      skyuppercut: ['7L45', '6L45', '5L45'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '7M', '6M', '5M', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      steelwing: ['7M', '6M', '4M'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      swordsdance: ['9M', '9L50', '7M', '7L50', '6M', '6L50', '5M', '5L38', '4M', '4L34'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      throatchop: ['9M', '7T'],\n      thunderfang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['9M', '7M', '6M', '5M', '4M'],\n      toxicspikes: ['9M'],\n      uturn: ['9M', '9L30', '7M', '7L30', '6M', '6L30', '5M', '5L30', '4M', '4L38'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      xscissor: ['9M', '9L40', '7M', '7L40', '6M', '6L40', '5M', '5L40', '4M', '4L42']\n    }\n  ],\n  [\n    'snubbull',\n    {\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bite: ['9L7', '7L7', '7V', '6L7', '5L7', '4L7', '3L13'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M', '9L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L8', '3S0'],\n      closecombat: ['9M', '7E', '6E', '5E', '5D', '4E'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '3T'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['9M', '9L49', '7L49', '7E', '7V', '6L49', '6E', '5L49', '5E', '4L49', '4E', '3L53', '3E'],\n      curse: ['9M', '7V'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '7E', '6E', '5E', '5D', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '7E', '6E'],\n      feintattack: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L1', '7L1', '7E', '6L1', '6E', '5L1', '5E', '4L1', '4E'],\n      firepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      growl: ['9L1'],\n      headbutt: ['9L19', '7L19', '7V', '6L19', '5L19', '4T', '4L19'],\n      healbell: ['7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      icefang: ['9M', '9L1', '7L1', '7E', '6L1', '6E', '5L1', '5E', '4L1', '4E'],\n      icepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      lashout: ['9M'],\n      lastresort: ['9L31', '7T', '6T', '5T', '4T'],\n      leer: ['7V'],\n      lick: ['9L13', '7L13', '7V', '6L13', '5L13', '4L13', '3L19'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      mimic: ['9E', '7E', '6E', '5E', '3T'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      payback: ['9L43', '7M', '7L43', '6M', '6L43', '5M', '5L43', '4M', '4L43'],\n      playrough: ['9M', '9L37', '7L37', '6L37'],\n      poweruppunch: ['6M'],\n      present: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      rage: ['7L31', '7V', '6L31', '5L31', '4L31', '3L34'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['7M', '7V', '6M', '5M', '4E', '3E'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['9E', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      roar: ['9M', '9L25', '7M', '7L25', '7V', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3M', '3L26'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M', '9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      smellingsalts: ['7E', '6E', '5E', '4E', '3E'],\n      snarl: ['9M', '7M', '6M', '5M'],\n      snore: ['9E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['9M'],\n      stompingtantrum: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      tailwhip: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L4', '3S0'],\n      takedown: ['9M', '7V', '5L37', '4L37', '3L43'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '9L1', '7L1', '7E', '6L1', '6E', '5L1', '5E', '4L1', '4E'],\n      thunderpunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'granbull',\n    {\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bite: ['9L7', '7L7', '7V', '6L7', '5L7', '4L7', '3L13'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M', '9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L8'],\n      closecombat: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['9M', '9L59', '7L59', '6L59', '5L59', '4L59', '3L61'],\n      curse: ['9M', '7V'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      firepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1'],\n      headbutt: ['9L19', '7L19', '7V', '6L19', '5L19', '4T', '4L19'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      icefang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      icepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      lashout: ['9M'],\n      lastresort: ['9L35', '7T', '6T', '5T', '4T'],\n      lick: ['9L13', '7L13', '7V', '6L13', '5L13', '4L13', '3L19'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L67'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      payback: ['9L51', '7M', '7L51', '6M', '6L51', '5M', '5L51', '4M', '4L51'],\n      playrough: ['9M', '9L43', '7L43', '6L43'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      rage: ['7L35', '7V', '6L35', '5L35', '4L35', '3L38'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['7M', '6M', '5M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      roar: ['9M', '9L27', '7M', '7L27', '7V', '6M', '6L27', '5M', '5L27', '4M', '4L27', '3M', '3L28'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M', '9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      snarl: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['9M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      tailwhip: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L4'],\n      takedown: ['9M', '7V', '5L43', '4L43', '3L49'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      thunderpunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'qwilfish',\n    {\n      acidspray: ['9M', '9E', '8E', '7E', '6E', '5E'],\n      acupressure: ['9L52', '8L60'],\n      agility: ['9M'],\n      aquajet: ['9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      aquatail: ['9L48', '8L56', '7T', '7L45', '6T', '6L45', '5T', '5L45', '4T', '4L45'],\n      assurance: ['8M'],\n      astonish: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barbbarrage: ['9E'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['9L24', '8M', '8L24', '7L33', '7E', '6L33', '6E', '5L33', '5E', '4M', '4L33'],\n      bubble: ['7L13', '6L13'],\n      bubblebeam: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M'],\n      curse: ['9M', '7V'],\n      defensecurl: ['7V', '3T'],\n      destinybond: ['9L56', '8L66', '7L1', '6L1', '5L53', '4L53', '3L45'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fellstinger: ['9L12', '8L12', '7L1', '6L1'],\n      flail: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      flipturn: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      harden: ['9L4', '8L4', '7L9', '7V', '6L9', '5L9', '4L9', '3L9', '3S0'],\n      haze: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['7V', '4T'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '8M', '7L1', '7V', '6L1', '5L57', '4L57', '3L37'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      liquidation: ['9M', '8M', '7T'],\n      mimic: ['3T'],\n      minimize: ['9L16', '8L16', '7L9', '7V', '6L9', '5L9', '4L9', '3L9', '3S0'],\n      mudshot: ['9M'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      pinmissile: ['9L32', '8M', '8L32', '7L37', '7V', '6L37', '5L37', '4L37', '3L21'],\n      poisonjab: ['9M', '9L28', '8M', '8L40', '7M', '7L49', '6M', '6L49', '5M', '5L49', '4M', '4L49', '4E'],\n      poisonsting: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      poisontail: ['9M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M', '8L28', '7L29', '6L29', '5L29', '4L29', '3L25'],\n      reversal: ['9M', '8M'],\n      rollout: ['7L17', '7V', '6L17', '5L17', '4T', '4L17', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M', '5D', '4M', '3M'],\n      selfdestruct: ['9E', '8M', '3T'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spikes: ['9M', '9L20', '8M', '8L20', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      spite: ['9M'],\n      spitup: ['9L40', '8L44', '7L25', '6L25', '5L25', '4L25'],\n      steelroller: ['8T'],\n      stockpile: ['9L40', '8L44', '7L25', '6L25', '5L25', '4L25'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      supersonic: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '8M', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      takedown: ['9M', '8L48', '7L41', '7V', '6L41', '5L41', '4L41', '3L33'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['9M', '9L44', '8L52', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M', '9L36', '8M', '8L36', '7L21', '6L21', '5L21', '4L21'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      waterfall: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L8', '8L8', '7L1', '7V', '6L1', '5L13', '4L13', '3L13'],\n      waterpulse: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      whirlpool: ['9M', '8M', '7V', '4M']\n    }\n  ],\n  [\n    'qwilfishhisui',\n    {\n      acidspray: ['9M', '9E'],\n      acupressure: ['9L52'],\n      agility: ['9M'],\n      aquajet: ['9E'],\n      aquatail: ['9E'],\n      astonish: ['9E'],\n      barbbarrage: ['9L28'],\n      bite: ['9L8'],\n      blizzard: ['9M'],\n      brine: ['9L24'],\n      bubblebeam: ['9E'],\n      chillingwater: ['9M'],\n      crunch: ['9M', '9L48'],\n      curse: ['9M'],\n      darkpulse: ['9M'],\n      destinybond: ['9L56'],\n      doubleedge: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fellstinger: ['9L12'],\n      flail: ['9E'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      gyroball: ['9M'],\n      harden: ['9L4'],\n      haze: ['9M', '9E'],\n      hex: ['9M'],\n      hydropump: ['9M'],\n      icebeam: ['9M'],\n      icywind: ['9M'],\n      lashout: ['9M'],\n      liquidation: ['9M'],\n      minimize: ['9L16'],\n      mudshot: ['9M'],\n      painsplit: ['9M'],\n      pinmissile: ['9L32'],\n      poisonjab: ['9M'],\n      poisonsting: ['9L1'],\n      poisontail: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      selfdestruct: ['9E'],\n      shadowball: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      spikes: ['9M', '9L20'],\n      spite: ['9M'],\n      spitup: ['9L40'],\n      stockpile: ['9L40'],\n      substitute: ['9M'],\n      supersonic: ['9E'],\n      surf: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      toxic: ['9M', '9L44'],\n      toxicspikes: ['9M', '9L36'],\n      venoshock: ['9M'],\n      waterfall: ['9M'],\n      waterpulse: ['9M', '9E']\n    }\n  ],\n  [\n    'overqwil',\n    {\n      acidspray: ['9M'],\n      acupressure: ['9L52'],\n      agility: ['9M'],\n      barbbarrage: ['9L28'],\n      bite: ['9L8'],\n      blizzard: ['9M'],\n      brine: ['9L24'],\n      chillingwater: ['9M'],\n      crunch: ['9M', '9L48'],\n      curse: ['9M'],\n      darkpulse: ['9M'],\n      destinybond: ['9L56'],\n      doubleedge: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fellstinger: ['9L12'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      gyroball: ['9M'],\n      harden: ['9L4'],\n      haze: ['9M'],\n      hex: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icywind: ['9M'],\n      lashout: ['9M'],\n      liquidation: ['9M'],\n      minimize: ['9L16'],\n      mudshot: ['9M'],\n      painsplit: ['9M'],\n      pinmissile: ['9L32'],\n      poisonjab: ['9M'],\n      poisonsting: ['9L1'],\n      poisontail: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      shadowball: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      smartstrike: ['9M'],\n      spikes: ['9M', '9L20'],\n      spite: ['9M'],\n      spitup: ['9L40'],\n      stockpile: ['9L40'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      toxic: ['9M', '9L44'],\n      toxicspikes: ['9M', '9L36'],\n      venoshock: ['9M'],\n      waterfall: ['9M'],\n      waterpulse: ['9M']\n    }\n  ],\n  [\n    'shuckle',\n    {\n      acid: ['8E', '7E', '6E', '5E'],\n      acupressure: ['8E', '7E', '6E', '5E', '4E'],\n      afteryou: ['7T', '6T', '5T'],\n      ancientpower: ['4T'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7L1', '7V', '6L1', '5L1', '4L1', '3L28'],\n      bind: ['7T', '6T', '5T'],\n      bodyslam: ['8M', '3T'],\n      bugbite: ['8L30', '7T', '7L42', '6T', '6L42', '5T', '5L42', '4T', '4L40'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      covet: ['8E'],\n      curse: ['7V'],\n      defensecurl: ['8E', '7V', '3T'],\n      dig: ['8M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      encore: ['8M', '7L5', '7V', '6L5', '5L5', '5D', '4L9', '3L14', '3S1'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      finalgambit: ['8E', '7E', '6E', '5E'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gastroacid: ['8L45', '7T', '7L27', '6T', '6L27', '5T', '5L27', '4T', '4L35'],\n      guardsplit: ['8L35', '7L45', '6L45', '5L45'],\n      gyroball: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      infestation: ['8E', '7M', '6M'],\n      irondefense: ['8M'],\n      knockoff: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      mudshot: ['8M'],\n      mudslap: ['7E', '7V', '6E', '5E', '4T', '4E', '3T'],\n      naturalgift: ['4M'],\n      powersplit: ['8L35', '7L45', '6L45', '5L45'],\n      powertrick: ['8L55', '7L31', '6L31', '5L31', '4L48'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L25', '7M', '7L20', '7V', '6M', '6L20', '5M', '5L20', '4M', '4L27', '3M', '3L37'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['8M'],\n      rockblast: ['8M', '7E', '6E', '5E'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '8L40', '7M', '7L38', '6M', '6L38', '5M', '5L38', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['8L15', '7L23', '6L23', '5L23'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['8L5', '7L1', '7V', '6L1', '5L1', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '8L20', '7M', '7L16', '7V', '6M', '6L16', '5M', '5L16', '4M', '4L14', '3M', '3L23'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['8M', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M', '3M'],\n      shellsmash: ['8L65', '7L34', '6L34', '5L34', '5D'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '7M', '7V', '6M', '5M', '4M', '3M', '3S1'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      steelroller: ['8T'],\n      stickyweb: ['8L50', '7L1', '6L1'],\n      stoneedge: ['8M', '8L60', '7M', '7L49', '6M', '6L49', '5M', '5L49', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['8L10', '7L12', '6M', '6L12', '5M', '5L1'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T', '3S1'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      toxic: ['8E', '7M', '7V', '6M', '5M', '4M', '3M', '3S1'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      withdraw: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      wrap: ['8L1', '7L9', '7V', '6L9', '5L9', '4L22', '3L9', '3S0']\n    }\n  ],\n  [\n    'heracross',\n    {\n      aerialace: ['9M', '9L15', '8L15', '7M', '7L10', '6M', '6L10', '5M', '5L10', '4M', '4L13'],\n      armthrust: ['9L1', '7L1', '6L1'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bide: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '9L30', '8M', '8L30', '7M', '7L28', '6M', '6L25', '5M', '5L19', '4M', '4L19', '3M', '3L23'],\n      brutalswing: ['8M', '7M'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '8M', '7L1', '6L1', '6S0', '6S1'],\n      captivate: ['4M'],\n      chipaway: ['7L16', '6L16', '5L16'],\n      closecombat: ['9M', '9L60', '8M', '8L60', '7L43', '6L34', '6S0', '5L34', '4L37'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      counter: ['9L25', '8L25', '7L19', '7V', '6L19', '5L19', '4L25', '3T', '3L30'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthquake: ['9M', '8M', '7M', '7V', '6M', '6S1', '5M', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '9L10', '8M', '8L10', '7L1', '7V', '6L1', '5L1', '4M', '4L1', '3T', '3L11'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M', '4E', '3E'],\n      feint: ['9E', '8E', '7L7', '6L7', '5L37', '4L49'],\n      flail: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '7E', '6T', '6E', '5E', '5D', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['9L5', '8L5', '7L25', '7V', '6L7', '5L7', '4L7', '3L17'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      harden: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      hornattack: ['9L20', '8L20', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L6'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lunge: ['9M'],\n      megahorn: ['9L55', '8M', '8L55', '7L37', '7E', '7V', '6L37', '6E', '6S0', '5L46', '5E', '4L55', '3L53'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '8E', '7L1', '6L1', '5L1', '4L1'],\n      pinmissile: ['9L35', '8M', '8L35', '7L31', '6L31', '6S0', '6S1'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '6E', '5E', '4E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M', '7E', '6E', '5E', '4E'],\n      reversal: ['9M', '8M', '7L46', '7V', '6L43', '5L43', '4L43', '3L45'],\n      rockblast: ['9M', '8M', '7E', '6E', '6S1'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['9E', '8E', '7E', '6E', '5E', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      smartstrike: ['9M', '8M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spikes: ['9M', '8M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M', '9L50', '8M', '8L50', '7M', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '8E', '7L34', '7V', '6L28', '5L28', '4L31', '3L37'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['9L45', '8L45'],\n      throatchop: ['9M', '9L40', '8M', '8L40', '7T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '4T'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'sneasel',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L48', '8M', '8L48', '7L20', '7V', '6L20', '5L20', '4L24', '3L36'],\n      assist: ['7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '7E', '6E', '5E', '4M'],\n      beatup: ['9L42', '8M', '8L42', '7L28', '7V', '6L28', '5L28', '4L38', '3L57'],\n      bite: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      crushclaw: ['7E', '6E', '5E', '4E', '3E'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doublehit: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['7V', '3T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      faketears: ['9M', '8M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feint: ['9E', '8E', '7E', '6E', '5E'],\n      feintattack: ['7L10', '7V', '6L10', '5L10', '4L14', '3L22'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foresight: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['9L30', '8L30', '7L16', '7V', '6L16', '5L16', '4L21', '3L29'],\n      gigaimpact: ['9M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['9L36', '8L36', '7L25', '6M', '6L25', '5M', '5L25'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3T'],\n      iceshard: ['9E', '8E', '7L47', '7E', '6L47', '6E', '5L47', '5E', '4L49', '4E'],\n      iciclecrash: ['9E', '8E', '7E', '6E'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '9L24', '8M', '8L24', '7T', '7L14', '7V', '6T', '6L14', '5T', '5L14', '4T', '4L28', '3T', '3L43'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '5D', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M', '9L18', '8L18', '7L22', '7V', '6L22', '5L22', '4L42', '3L64'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychocut: ['8M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      punishment: ['7L44', '7E', '6L44', '6E', '5L44', '5E', '4E'],\n      pursuit: ['7E', '6E', '5E', '4E'],\n      quickattack: ['9L12', '8L12', '7L8', '7V', '6L8', '5L8', '4L8', '3L8', '3S0'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8M', '7M', '7V', '6M', '5M', '4E', '3E'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      scratch: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      screech: ['9L54', '8M', '8L54', '7L32', '7V', '6L32', '5L10', '4L10', '3L15'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['9L60', '8L60', '7L35', '7V', '6L35', '5L35', '4L35', '3L50'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '7L40', '6T', '6L40', '5T', '5L40', '4M', '3M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      spite: ['9M', '9E', '8E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L6', '8M', '8L6', '7M', '7L1', '6M', '6L1', '5M', '5L1', '5D', '4M', '4L1', '3M', '3L1', '3S0'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M', '7T', '7E'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      upperhand: ['9M'],\n      waterpulse: ['9M'],\n      whirlpool: ['8M', '4M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'sneaselhisui',\n    {\n      acidspray: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M', '9L48'],\n      brickbreak: ['9M', '9L30'],\n      bulkup: ['9M'],\n      calmmind: ['9M'],\n      closecombat: ['9M', '9L60'],\n      coaching: ['9M'],\n      counter: ['9E'],\n      dig: ['9M'],\n      doublehit: ['9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fakeout: ['9E'],\n      falseswipe: ['9M'],\n      feint: ['9E'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      gunkshot: ['9M'],\n      honeclaws: ['9L36'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      metalclaw: ['9M', '9L18'],\n      nastyplot: ['9M'],\n      nightslash: ['9E'],\n      poisonjab: ['9M', '9L24'],\n      poisontail: ['9M'],\n      protect: ['9M'],\n      quickattack: ['9L12'],\n      quickguard: ['9E'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      rocksmash: ['9L1'],\n      scratch: ['9L1'],\n      screech: ['9L54'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M'],\n      slash: ['9L42'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      spite: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      switcheroo: ['9E'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L6'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      toxic: ['9M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      vacuumwave: ['9M'],\n      venoshock: ['9M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'weavile',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M', '9L1', '8M', '8L1'],\n      assurance: ['9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      avalanche: ['9M', '8M', '4M'],\n      batonpass: ['9M'],\n      beatup: ['9L1', '8M', '8L1'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '6S1', '5M', '4M', '4S0'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['9M', '9L66', '8M', '8L66', '7M', '7L47', '6M', '6L47', '5T', '5L47', '4M', '4L49'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      embargo: ['7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fakeout: ['4S0'],\n      faketears: ['9M', '8M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feintattack: ['7L10', '6L10', '5L10', '4L14'],\n      fling: ['9M', '9L42', '8M', '8L42', '7M', '7L28', '6M', '6L28', '5M', '5L28', '4M', '4L38'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      furyswipes: ['9L30', '8L30', '7L16', '6L16', '5L16', '4L21'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['9L36', '8L36', '7L25', '6M', '6L25', '5M', '5L25'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '6S1', '5T', '4T'],\n      iceshard: ['9L1', '8L1', '4S0'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L24', '8M', '8L24', '7T', '7L14', '6T', '6L14', '5T', '5L14', '4T', '4L28'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M', '9L18', '8L18', '7L22', '6L22', '5L22', '4L42'],\n      metronome: ['9M'],\n      mudslap: ['4T'],\n      nastyplot: ['9M', '9L48', '8M', '8L48', '7L20', '6L20', '5L20', '4L24'],\n      naturalgift: ['4M'],\n      nightslash: ['9L60', '8L60', '7L35', '6L35', '6S1', '5L35', '4L35', '4S0'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychocut: ['8M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      punishment: ['7L44', '6L44', '5L44'],\n      quickattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      reversal: ['9M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      screech: ['9L54', '8M', '8L54', '7L32', '6L32', '5L10', '4L10'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['9L1', '8L1'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '7L40', '6T', '6L40', '5T', '5L40', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      throatchop: ['9M', '8M', '7T'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      upperhand: ['9M'],\n      waterpulse: ['9M'],\n      whirlpool: ['8M', '4M'],\n      xscissor: ['9M', '8M', '7M', '6M', '6S1', '5M', '4M']\n    }\n  ],\n  [\n    'sneasler',\n    {\n      acidspray: ['9M'],\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M', '9L48'],\n      brickbreak: ['9M', '9L30'],\n      bulkup: ['9M'],\n      calmmind: ['9M'],\n      closecombat: ['9M', '9L60'],\n      coaching: ['9M'],\n      dig: ['9M'],\n      direclaw: ['9L0'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      firepunch: ['9M'],\n      fling: ['9M', '9L1'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      gunkshot: ['9M'],\n      honeclaws: ['9L36'],\n      hyperbeam: ['9M'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      metalclaw: ['9M', '9L18'],\n      nastyplot: ['9M'],\n      poisonjab: ['9M', '9L24'],\n      poisontail: ['9M'],\n      protect: ['9M'],\n      quickattack: ['9L12'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      rockslide: ['9M'],\n      rocksmash: ['9L1'],\n      rocktomb: ['9M'],\n      scratch: ['9L1'],\n      screech: ['9L54'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M'],\n      slash: ['9L42'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      spite: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L6'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      toxic: ['9M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uturn: ['9M'],\n      vacuumwave: ['9M'],\n      venoshock: ['9M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'teddiursa',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M'],\n      babydolleyes: ['9L1', '7L1', '6L1'],\n      bellydrum: ['9E', '7E', '6E', '5E', '4E'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M', '9L33', '7L36', '6L36', '5L36', '4L36'],\n      chipaway: ['7E', '6E', '5E'],\n      closecombat: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      covet: ['9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4L1'],\n      crosschop: ['9E', '7E', '6E', '5E', '4E'],\n      crunch: ['9M', '9E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9E', '7E', '6E', '5E', '4E', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '9E', '7L1', '7E', '6L1', '6E', '5L1', '5E', '5D', '4L1', '4E', '3L19', '3E'],\n      feintattack: ['7L15', '7V', '6L15', '5L15', '4L15', '3L25'],\n      firepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fling: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L57', '4M', '4L57'],\n      focusenergy: ['7V'],\n      focuspunch: ['9M', '7T', '6T', '5D', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['9E', '7V', '4T', '3T'],\n      furyswipes: ['9L8', '7L8', '7V', '6L8', '5L8', '4L8', '3L13'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      icepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      leer: ['7V', '5L1', '4L1', '3L1', '3S0'],\n      lick: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L7', '3S0', '3S1'],\n      lowkick: ['9M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metalclaw: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E', '3S1'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '7E', '6E', '5E', '4E'],\n      payback: ['9L13', '7M', '6M', '5M', '4M'],\n      playnice: ['9L25', '7L25', '6L25'],\n      playrough: ['9M', '9L29', '7E', '6E'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S1'],\n      rest: ['9M', '9L37', '7M', '7L43', '7V', '6M', '6L43', '5M', '5L43', '4M', '4L43', '3M', '3L31'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M', '3S1'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['9E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      slash: ['9L22', '7L29', '7V', '6L29', '5L29', '4L29', '3L37'],\n      sleeptalk: ['9M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '4E', '3T', '3E'],\n      smackdown: ['9M'],\n      snore: ['9L37', '7T', '7L43', '7V', '6T', '6L43', '5T', '5L43', '4T', '4L43', '3T', '3L43'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L17', '7L22', '6L22', '5L22', '4L22'],\n      swift: ['9M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['9L41', '7L50', '7V', '6L50', '5L50', '4L50', '3L49'],\n      thunderpunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      workup: ['7M', '5M'],\n      yawn: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'ursaring',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '4M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      closecombat: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4L1'],\n      crunch: ['9M'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      defensecurl: ['7V', '3T'],\n      dig: ['9M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1', '3L19'],\n      feintattack: ['7L15', '7V', '6L15', '5L15', '4L15', '3L25'],\n      firepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      furyswipes: ['9L8', '7L8', '7V', '6L8', '5L8', '4L8', '3L1'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      hammerarm: ['9L64', '7L1', '6L1', '5L67', '4L67'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '9L48'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      icepunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      leer: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lick: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metalclaw: ['9M'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['9L13', '7M', '6M', '5M', '4M'],\n      playnice: ['9L25', '7L25', '6L25'],\n      playrough: ['9M', '9L29'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L41', '7M', '7L47', '7V', '6M', '6L47', '5M', '5L47', '4M', '4L47', '3M', '3L31'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M', '9L35', '7L38', '6L38', '5L38', '4L38'],\n      scratch: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['3T'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      slash: ['9L22', '7L29', '7V', '6L29', '5L29', '4L29', '3L37'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['9L41', '7T', '7L49', '7V', '6T', '6L49', '5T', '5L49', '4T', '4L49', '3T', '3L43'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L17', '7L22', '6L22', '5L22', '4L22'],\n      swift: ['9M', '7V', '4T', '3T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['9L56', '7L58', '7V', '6L58', '5L58', '4L58', '3L49'],\n      throatchop: ['9M', '7T'],\n      thunderpunch: ['9M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      workup: ['7M', '5M'],\n      zapcannon: ['7V']\n    }\n  ],\n  [\n    'ursaluna',\n    {\n      aerialace: ['9M'],\n      avalanche: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulkup: ['9M'],\n      bulldoze: ['9M'],\n      charm: ['9M'],\n      closecombat: ['9M'],\n      covet: ['9L1'],\n      crunch: ['9M'],\n      curse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      faketears: ['9M', '9L1'],\n      firepunch: ['9M'],\n      fling: ['9M'],\n      focuspunch: ['9M'],\n      furyswipes: ['9L8'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      hammerarm: ['9L64'],\n      hardpress: ['9M'],\n      headlongrush: ['9L0'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M', '9L48'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icepunch: ['9M'],\n      leer: ['9L1'],\n      lick: ['9L1'],\n      lowkick: ['9M'],\n      metalclaw: ['9M'],\n      metronome: ['9M'],\n      payback: ['9L13'],\n      playnice: ['9L25'],\n      playrough: ['9M', '9L29'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '9L41'],\n      roar: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      scaryface: ['9M', '9L35'],\n      scratch: ['9L1'],\n      seedbomb: ['9M'],\n      shadowclaw: ['9M'],\n      slash: ['9L22'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      snore: ['9L41'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      sweetscent: ['9L17'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L56'],\n      throatchop: ['9M'],\n      thunderpunch: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M']\n    }\n  ],\n  [\n    'ursalunabloodmoon',\n    {\n      avalanche: ['9M'],\n      bloodmoon: ['9L70', '9S0'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      calmmind: ['9M', '9S0'],\n      crunch: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      earthpower: ['9M', '9L48', '9S0'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firepunch: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      furyswipes: ['9L8'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      hammerarm: ['9L64'],\n      harden: ['9L17'],\n      hardpress: ['9M'],\n      headlongrush: ['9L1'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icepunch: ['9M'],\n      leer: ['9L1'],\n      lick: ['9L1'],\n      lowkick: ['9M'],\n      metalclaw: ['9M'],\n      moonblast: ['9L56'],\n      moonlight: ['9L1'],\n      mudshot: ['9M'],\n      payback: ['9L13'],\n      playnice: ['9L25'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '9L41'],\n      roar: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      scaryface: ['9M', '9L35'],\n      scratch: ['9L1'],\n      seedbomb: ['9M'],\n      shadowclaw: ['9M'],\n      slash: ['9L22', '9S0'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      snarl: ['9M'],\n      snore: ['9L41'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      vacuumwave: ['9M']\n    }\n  ],\n  [\n    'slugma',\n    {\n      acidarmor: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M', '9L36', '7L36', '7V', '6L32', '5L32', '4L31', '3L29'],\n      ancientpower: ['9L22', '7L22', '6L22', '5L28', '4T', '4L26'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9L41', '7L41', '7V', '6L41', '5L46', '4L46', '3T', '3L50'],\n      bulldoze: ['9M'],\n      captivate: ['4M'],\n      clearsmog: ['9L20', '7L20', '6L20'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9E', '7E', '7V', '6E', '5E', '4E'],\n      defensecurl: ['7V', '3T'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '9L50', '7T', '7L50', '7E', '6T', '6L50', '6E', '5T', '5L55', '5E', '4T', '4L56'],\n      earthquake: ['9M'],\n      ember: ['9L6', '7L6', '7V', '6L5', '5L5', '5D', '4L8', '3L8'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firespin: ['9M'],\n      flameburst: ['7L27', '6L23', '5L23'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L48', '7M', '7L48', '7V', '6M', '6L48', '5M', '5L50', '4M', '4L53', '3M', '3L36'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      guardswap: ['9E', '7E', '6E'],\n      harden: ['9L13', '7L13', '7V', '6L13', '5L14', '4L16', '3L22'],\n      heatcrash: ['9M'],\n      heatwave: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      incinerate: ['9L27', '7L15', '6M', '6L15', '5M'],\n      inferno: ['9E', '7E', '6E', '5E', '5D'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M', '7T', '6T', '5T', '4T'],\n      lavaplume: ['9L34', '7L34', '6L34', '5L37', '4L38'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      memento: ['9E', '7E', '6E', '5E', '4E'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      powergem: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['9L43', '7L43', '6L19', '5L19', '4L23'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '9L29', '7M', '7L29', '7V', '6M', '6L29', '5M', '5L41', '4M', '4L41', '3T', '3L43'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L8', '7L8', '7V', '6L8', '5L10', '4L11', '3L15'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      rollout: ['9E', '7E', '7V', '6E', '5E', '4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['3T'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M'],\n      smog: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      smokescreen: ['9E', '7E', '6E', '5E', '4E'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      spitup: ['7E', '6E', '5E', '4E'],\n      stealthrock: ['9M'],\n      stockpile: ['9E', '7E', '6E', '5E', '4E'],\n      stoneedge: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swallow: ['7E', '6E', '5E', '4E'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      yawn: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'magcargo',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M', '9L36', '7L36', '7V', '6L32', '5L32', '4L31', '3L29'],\n      ancientpower: ['9L22', '7L22', '6L22', '5L28', '4T', '4L26'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9L43', '7L43', '7V', '6L43', '5L52', '4L52', '3T', '3L60'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      burningjealousy: ['9M'],\n      captivate: ['4M'],\n      clearsmog: ['9L20', '7L20', '6L20'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      defensecurl: ['7V', '3T'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L67', '4T', '4L66'],\n      earthquake: ['9M', '7M', '7V', '6M', '5M', '4M', '3M', '3S0'],\n      ember: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      endure: ['9M', '7V', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firespin: ['9M'],\n      flameburst: ['7L27', '6L23', '5L23'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L54', '7M', '7L54', '7V', '6M', '6L54', '5M', '5L59', '4M', '4L61', '3M', '3L36', '3S0'],\n      flareblitz: ['9M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gyroball: ['9M', '7M', '6M', '5M', '4M'],\n      harden: ['9L13', '7L13', '7V', '6L13', '5L14', '4L16', '3L22'],\n      heatcrash: ['9M'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T', '3S0'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['9L27', '7L15', '6M', '6L15', '5M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M', '7T', '6T', '5T', '4T'],\n      lavaplume: ['9L34', '7L34', '6L34', '5L37', '4L40'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      powergem: ['9M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['9L47', '7L47', '6L19', '5L19', '4L23'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L29', '7M', '7L29', '7V', '6M', '6L29', '5M', '5L44', '4M', '4L45', '3T', '3L48'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M'],\n      scorchingsands: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['3T'],\n      shellsmash: ['9L0', '7L1', '6L38', '5L38'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      smog: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      yawn: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'swinub',\n    {\n      amnesia: ['9M', '9L35', '8M', '8L35', '7L48', '7V', '6L48', '5L48', '4L49', '3L55'],\n      ancientpower: ['9E', '8E', '7E', '7V', '6E', '5E', '5D', '4T', '4E', '3E', '3S0'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '7E', '6E', '5E'],\n      bite: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      blizzard: ['9M', '9L50', '8M', '8L50', '7M', '7L44', '7V', '6M', '6L44', '5M', '5L44', '4M', '4L44', '3M', '3L46'],\n      bodyslam: ['9M', '8M', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M', '3S0'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L45', '8M', '8L45', '7M', '7L37', '7V', '6M', '6L37', '5M', '5L37', '4M', '4L37', '3M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '9L25', '8M', '8L25', '7L14', '7V', '6L14', '5L14', '4M', '4L16', '3T', '3L19'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      flail: ['9L10', '8L10', '7L40', '6L40', '5L40'],\n      freezedry: ['9E', '8E', '7E', '6E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['9M'],\n      iceshard: ['9L15', '8L15', '7L24', '6L24', '5L24', '4L28'],\n      iciclecrash: ['9E', '8E', '7E', '6E', '5E'],\n      iciclespear: ['9M', '8M', '7E', '6E', '5E', '5D', '4E', '3E'],\n      icywind: ['9M', '9L30', '8M', '8L30', '7T', '7L21', '7V', '6T', '6L21', '5T', '5L21', '4T', '4L25', '3T'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      mimic: ['3T'],\n      mist: ['9L20', '8L20', '7L35', '7V', '6L35', '5L35', '4L40', '3L37', '3S0'],\n      mudbomb: ['7L18', '6L18', '5L18', '4L20'],\n      mudshot: ['9M', '8M', '7E', '6E', '5E', '4E', '3E', '3S0'],\n      mudslap: ['9M', '9L1', '8L1', '7L11', '7V', '6L11', '5L11', '4T', '4L13', '3T'],\n      mudsport: ['7L5', '6L5', '5L4', '4L4'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      powdersnow: ['9L5', '8L5', '7L8', '7V', '6L8', '5L8', '4L8', '3L10'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '8M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      stealthrock: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L40', '8L40', '7L28', '7E', '7V', '6L28', '6E', '5L28', '5E', '4L32', '4E', '3L28', '3E'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M']\n    }\n  ],\n  [\n    'piloswine',\n    {\n      amnesia: ['9M', '9L37', '8M', '8L37', '7L58', '7V', '6L58', '5L58', '4L65', '3L70'],\n      ancientpower: ['9L1', '8L1', '7L1', '6L1', '5L1', '4T', '4L1'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '9L58', '8M', '8L58', '7M', '7L52', '7V', '6M', '6L52', '5M', '5L52', '4M', '4L56', '3M', '3L56'],\n      bodyslam: ['9M', '8M', '3T'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L51', '8M', '8L51', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L40', '4M', '4L40', '3M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '9L25', '8M', '8L25', '7L14', '7V', '6L14', '5L14', '4M', '4L16', '3T', '3L1'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9L1', '8L1'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['7L1', '7V', '6L33', '5L33', '4L33', '3L33'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      headbutt: ['7V', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      hornattack: ['3L1'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '9L0', '8M', '8L0', '7L24', '6L24', '5L24', '4L28'],\n      iceshard: ['9L15', '8L15'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L30', '8M', '8L30', '7T', '7L21', '7V', '6T', '6L21', '5T', '5L21', '4T', '4L25', '3T'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      mimic: ['3T'],\n      mist: ['9L20', '8L20', '7L37', '7V', '6L37', '5L37', '4L48', '3L42'],\n      mudbomb: ['7L18', '6L18', '5L18', '4L20'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L11', '7V', '6L11', '5L11', '4T', '4L13', '3T'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      peck: ['7L1', '6L1', '5L1', '4L1'],\n      powdersnow: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '8M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M', '9L44', '8L44', '7L28', '7V', '6L28', '5L28', '4L32', '3L28'],\n      terablast: ['9M'],\n      thrash: ['9L65', '8L65', '7L41', '6L41', '5L41'],\n      throatchop: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M']\n    }\n  ],\n  [\n    'mamoswine',\n    {\n      amnesia: ['9M', '9L37', '8M', '8L37'],\n      ancientpower: ['9L1', '8L1', '7L1', '6L1', '5L1', '4T', '4L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '9L58', '8M', '8L58', '7M', '7L52', '6M', '6L52', '5M', '5L52', '4M', '4L56'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doublehit: ['9L0', '8L0', '7L33', '6L33', '5L33', '5S0', '4L33'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L51', '8M', '8L51', '7M', '7L46', '6M', '6L46', '6S1', '5M', '5L40', '4M', '4L40'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '9L25', '8M', '8L25', '7L14', '6L14', '5L14', '4M', '4L16'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flail: ['9L1', '8L1'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyattack: ['7L1'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '7L21', '6M', '6L21', '5M', '5L21', '5S0', '4M', '4L25'],\n      hardpress: ['9M'],\n      haze: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icefang: ['9M', '9L1', '8M', '8L1', '7L24', '6L24', '5L24', '5S0', '4L28'],\n      iceshard: ['9L15', '8L15'],\n      iciclecrash: ['6S1'],\n      iciclespear: ['9M', '8M', '6S1'],\n      icywind: ['9M', '9L30', '8M', '8L30', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M'],\n      mist: ['9L20', '8L20', '7L37', '6L37', '5L37', '4L48'],\n      mudbomb: ['7L18', '6L18', '5L18', '4L20'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L11', '6L11', '5L11', '4T', '4L13'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L1', '6L1', '5L1', '4L1'],\n      peck: ['7L1', '6L1', '5L1', '4L1'],\n      powdersnow: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockblast: ['9M', '8M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '6S1', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M', '8M'],\n      scaryface: ['9M', '8M', '7L1', '6L1', '5L58', '4L65'],\n      secretpower: ['6M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M', '9L44', '8L44', '7L28', '6L28', '5L28', '5S0', '4L32'],\n      terablast: ['9M'],\n      thrash: ['9L65', '8L65', '7L41', '6L41', '5L41'],\n      throatchop: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M']\n    }\n  ],\n  [\n    'corsola',\n    {\n      amnesia: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      ancientpower: ['8L20', '7L17', '7V', '6L17', '5L20', '4T', '4L32', '3L45'],\n      aquaring: ['8L10', '7L38', '7E', '6L38', '6E', '5L37', '5E', '4L37', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      barrier: ['7E', '6E', '5E', '4E', '3E'],\n      bide: ['7E', '6E', '5E'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      brine: ['8M', '7L27', '6L27', '4M'],\n      bubble: ['7L4', '7V', '6L4', '5L8', '5D', '4L8', '3L12'],\n      bubblebeam: ['8L25', '7L10', '7V', '6L10', '5L17', '4L25', '3L23'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      camouflage: ['7E', '6E'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      curse: ['8E', '7E', '7V', '6E', '5E', '4E'],\n      defensecurl: ['7V', '3T'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '8L45', '7T', '7L47', '6T', '6L47', '5T', '5L47', '4T', '4L53'],\n      earthquake: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['8M', '8L15', '7L35', '7V', '6L35', '5L35', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['8L30', '7L50', '6L50', '5L52'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      harden: ['8L1', '7L1', '7V', '6L1', '5L4', '4L4', '3L6'],\n      headbutt: ['7V', '4T'],\n      headsmash: ['8E', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      iciclespear: ['8M', '7E', '6E', '5E', '4E', '3E'],\n      icywind: ['8M', '7T', '6T', '5T', '4T'],\n      ingrain: ['7E', '6E', '5E', '4E', '3E'],\n      irondefense: ['8M', '7T', '7L29', '6T', '6L29', '5T', '5L29'],\n      lifedew: ['8L35'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      liquidation: ['8M', '7T', '7E'],\n      luckychant: ['7L23', '6L23', '5L23', '4L28'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      mirrorcoat: ['8L55', '7L45', '7V', '6L45', '5L45', '4L48', '3L39'],\n      mist: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['3S0'],\n      naturalgift: ['4M'],\n      naturepower: ['8E', '7M', '7E', '6M', '6E', '5E', '4E'],\n      powergem: ['8M', '8L40', '7L41', '7S1', '6L41', '5L41', '4L44'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['8L50', '7L8', '7V', '6L8', '5L10', '4L13', '3L17'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7L13', '6L13', '5L13', '4L16', '3L17'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M', '7L31', '6L31', '5L20', '4L20', '3L34'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7V', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spikecannon: ['7L20', '7V', '6L20', '5L27', '4L40', '3L28'],\n      stealthrock: ['8M', '7T', '6T', '5T', '5D', '4M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['8L1', '7L1', '7V', '7S1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      throatchop: ['8M', '7T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['8L5'],\n      waterpulse: ['8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      whirlpool: ['8M', '7V', '4M']\n    }\n  ],\n  [\n    'corsolagalar',\n    {\n      amnesia: ['8M'],\n      ancientpower: ['8L20'],\n      astonish: ['8L5', '8S0'],\n      attract: ['8M'],\n      blizzard: ['8M'],\n      bodyslam: ['8M'],\n      brine: ['8M'],\n      bulldoze: ['8M'],\n      calmmind: ['8M'],\n      confuseray: ['8E'],\n      curse: ['8L30'],\n      destinybond: ['8E'],\n      dig: ['8M'],\n      disable: ['8L10', '8S0'],\n      earthpower: ['8M'],\n      earthquake: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      gigadrain: ['8M'],\n      grudge: ['8L50'],\n      hail: ['8M'],\n      harden: ['8L1'],\n      haze: ['8E'],\n      headsmash: ['8E'],\n      hex: ['8M', '8L25'],\n      hydropump: ['8M'],\n      icebeam: ['8M'],\n      iciclespear: ['8M'],\n      icywind: ['8M'],\n      irondefense: ['8M'],\n      lightscreen: ['8M'],\n      liquidation: ['8M'],\n      meteorbeam: ['8T'],\n      mirrorcoat: ['8L55'],\n      naturepower: ['8E'],\n      nightshade: ['8L45'],\n      powergem: ['8M', '8L40'],\n      protect: ['8M'],\n      psychic: ['8M'],\n      raindance: ['8M'],\n      reflect: ['8M'],\n      rest: ['8M'],\n      rockblast: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sandstorm: ['8M'],\n      scald: ['8M'],\n      screech: ['8M'],\n      selfdestruct: ['8M'],\n      shadowball: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      spite: ['8L15', '8S0'],\n      stealthrock: ['8M'],\n      stompingtantrum: ['8M'],\n      stoneedge: ['8M'],\n      strengthsap: ['8L35'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      surf: ['8M'],\n      tackle: ['8L1', '8S0'],\n      throatchop: ['8M'],\n      waterpulse: ['8E'],\n      whirlpool: ['8M'],\n      willowisp: ['8M']\n    }\n  ],\n  [\n    'cursola',\n    {\n      amnesia: ['8M'],\n      ancientpower: ['8L20'],\n      astonish: ['8L1'],\n      attract: ['8M'],\n      blizzard: ['8M'],\n      bodyslam: ['8M'],\n      brine: ['8M'],\n      bulldoze: ['8M'],\n      burningjealousy: ['8T'],\n      calmmind: ['8M'],\n      curse: ['8L30'],\n      dig: ['8M'],\n      disable: ['8L1'],\n      earthpower: ['8M'],\n      earthquake: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      gigadrain: ['8M'],\n      gigaimpact: ['8M'],\n      grudge: ['8L50'],\n      hail: ['8M'],\n      harden: ['8L1'],\n      hex: ['8M', '8L25'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M'],\n      icebeam: ['8M'],\n      iciclespear: ['8M'],\n      icywind: ['8M'],\n      irondefense: ['8M'],\n      leechlife: ['8M'],\n      lightscreen: ['8M'],\n      liquidation: ['8M'],\n      meteorbeam: ['8T'],\n      mirrorcoat: ['8L55'],\n      nightshade: ['8L45'],\n      perishsong: ['8L1'],\n      pinmissile: ['8M'],\n      poltergeist: ['8T'],\n      powergem: ['8M', '8L40'],\n      protect: ['8M'],\n      psychic: ['8M'],\n      raindance: ['8M'],\n      reflect: ['8M'],\n      rest: ['8M'],\n      revenge: ['8M'],\n      rockblast: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sandstorm: ['8M'],\n      scald: ['8M'],\n      screech: ['8M'],\n      selfdestruct: ['8M'],\n      shadowball: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      spite: ['8L15'],\n      stealthrock: ['8M'],\n      stompingtantrum: ['8M'],\n      stoneedge: ['8M'],\n      strengthsap: ['8L35'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      surf: ['8M'],\n      tackle: ['8L1'],\n      throatchop: ['8M'],\n      whirlpool: ['8M'],\n      willowisp: ['8M']\n    }\n  ],\n  [\n    'remoraid',\n    {\n      acidspray: ['8E', '7E', '6E', '5E'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['8L16', '7L14', '7E', '7V', '6L14', '6E', '5L14', '5E', '4L14', '4E', '3L22', '3E'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['8M', '5D', '4M'],\n      bubblebeam: ['8L20', '7L18', '7V', '6L18', '5L18', '4L19', '3L22'],\n      bulletseed: ['8M', '8L28', '7L38', '6L38', '5L27', '4M', '4L27'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      entrainment: ['7E', '6E'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['8E', '7E', '6E', '5E', '4E'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8M', '8L8', '7L22', '7V', '6L22', '5L22', '4L23', '3L33'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gunkshot: ['8M', '7T', '6T', '5T', '4T'],\n      haze: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      helpinghand: ['8M', '8L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M', '8L36', '7L42', '6L42', '5L42'],\n      hyperbeam: ['8M', '8L44', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L45', '4M', '4L45', '3M', '3L55'],\n      icebeam: ['8M', '8L32', '7M', '7L34', '7V', '6M', '6L34', '5M', '5L34', '4M', '4L40', '3M', '3L44'],\n      icywind: ['8M', '7T', '6T', '5T', '4T'],\n      incinerate: ['6M', '5M'],\n      lockon: ['8L24', '7L6', '7V', '6L6', '5L6', '5D', '4L6', '3L11'],\n      mimic: ['3T'],\n      mudshot: ['8M', '7E', '6E', '5E'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      octazooka: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L12', '7L10', '7V', '6L10', '5L10', '4L10', '3L22'],\n      psychic: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M', '7E', '6E', '5E', '5D', '4E', '3E'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      signalbeam: ['7T', '7L30', '6T', '6L30', '5T', '5L30', '4T', '4L36'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T'],\n      soak: ['8L40', '7L50', '6L50', '5L49'],\n      stringshot: ['4T'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      supersonic: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      surf: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7E', '7V', '6E', '5E', '4T', '3T'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['8L4', '7T', '7L26', '7E', '6T', '6L26', '6E', '5L26', '5E', '4M', '4L32', '3M'],\n      waterspout: ['8E', '7E', '6E', '5E', '4E'],\n      whirlpool: ['8M', '7V', '4M']\n    }\n  ],\n  [\n    'octillery',\n    {\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['8L16', '7L1', '7V', '6L1', '5L1', '4L1', '3L22'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['8M', '4M'],\n      bubblebeam: ['8L20', '7L18', '7V', '6L18', '5L18', '4L19', '3L22'],\n      bulletseed: ['8M', '8L30', '7L46', '6L46', '5L29', '4M', '4L29', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '7V', '6L1', '5L1', '4L1', '3L11'],\n      curse: ['7V'],\n      defensecurl: ['7V', '3T'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flashcannon: ['8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M', '8L1', '7L22', '7V', '6L22', '5L22', '4L23', '3L38'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      helpinghand: ['8M', '8L1'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M', '8L42', '7L52', '6L52', '5L52'],\n      hyperbeam: ['8M', '8L54', '7M', '7L58', '7V', '6M', '6L58', '5M', '5L55', '4M', '4L55', '4S0', '3M', '3L70'],\n      icebeam: ['8M', '8L36', '7M', '7L40', '7V', '6M', '6L40', '5M', '5L40', '4M', '4L48', '4S0', '3M', '3L54'],\n      icywind: ['8M', '7T', '6T', '5T', '4T'],\n      incinerate: ['6M', '5M'],\n      liquidation: ['8M'],\n      lockon: ['8L24'],\n      mimic: ['3T'],\n      mudshot: ['8M'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      octazooka: ['8L0', '7L1', '7V', '6L25', '5L25', '4L25', '4S0', '3L25'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L12', '7L1', '7V', '6L1', '5L1', '4L1', '3L22'],\n      psychic: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['3T'],\n      signalbeam: ['7T', '7L34', '6T', '6L34', '5T', '5L34', '4T', '4L42', '4S0'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      soak: ['8L48', '7L64', '6L64', '5L61'],\n      stringshot: ['4T'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      thief: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['8L1', '7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '7V', '4M'],\n      wrap: ['8L1'],\n      wringout: ['7L28', '6L28', '5L28', '4L36']\n    }\n  ],\n  [\n    'delibird',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      auroraveil: ['9E', '8E', '7M'],\n      avalanche: ['9M', '8M', '4M'],\n      batonpass: ['9M', '8M'],\n      bestow: ['7E', '6E', '5E'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      bravebird: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      brutalswing: ['8M', '7M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '3T'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      destinybond: ['9E', '8E', '7E', '6E'],\n      detect: ['7V'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillpeck: ['9L25', '8L25', '7L25'],\n      drillrun: ['9M', '8M'],\n      dualwingbeat: ['9M', '8T'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      featherdance: ['9M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fly: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      focuspunch: ['9M', '7T', '6T', '5D', '4M', '3M'],\n      foulplay: ['9M'],\n      freezedry: ['9E', '8E', '7E', '6E'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      happyhour: ['6S1'],\n      haze: ['9M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M'],\n      iceball: ['7E', '6E', '5E', '4E', '3E'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      iceshard: ['9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '3T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      memento: ['9E', '8E'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      pluck: ['5M', '4M'],\n      poweruppunch: ['6M'],\n      present: ['9L1', '8L1', '7L1', '7V', '6L1', '6S1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      quickattack: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rapidspin: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['3T'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skyattack: ['7T', '6T', '5T', '4T', '3T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '3T'],\n      snowscape: ['9M'],\n      spikes: ['9M', '8M', '7E', '6E'],\n      splash: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      steelwing: ['8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M', '8M']\n    }\n  ],\n  [\n    'mantyke',\n    {\n      acrobatics: ['8M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M'],\n      agility: ['8M', '8L20', '7L32', '6L32', '5L19', '4L19'],\n      aircutter: ['4T'],\n      airslash: ['8M', '8L32', '7L36', '6L36', '5L36'],\n      amnesia: ['8M', '7E', '6E', '5E'],\n      aquaring: ['8L36', '7L39', '6L39', '5L39', '4L46'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M'],\n      bounce: ['8M', '8L40', '7T', '7L46', '6T', '6L46', '5T', '5L40', '4T', '4L40'],\n      bubble: ['7L1', '6L1', '5L1', '4L1'],\n      bubblebeam: ['8L24', '7L7', '6L7', '5L7', '4L10'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8E', '7L11', '6L11', '5L11', '4L37'],\n      dive: ['8M', '6M', '5M', '4T'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M'],\n      endure: ['8M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M'],\n      haze: ['8E', '7E', '6E', '5E', '4E'],\n      headbutt: ['8L28', '7L16', '6L16', '5L13', '4T', '4L13'],\n      helpinghand: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hydropump: ['8M', '8L48', '7L49', '7E', '6L49', '6E', '5L49', '5E', '4L49', '4E'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T'],\n      mirrorcoat: ['8E', '7E', '6E', '5E', '4E'],\n      mudslap: ['4T'],\n      mudsport: ['7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4E'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      slam: ['8E', '7E', '6E', '5E', '4E'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      splash: ['8E', '7E', '6E', '5E', '4E'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      supersonic: ['8L4', '7L3', '6L3', '5L3', '4L4'],\n      surf: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['8M', '4T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      tailwind: ['8E', '7T', '7E', '6E'],\n      takedown: ['8L44', '7L27', '6L27', '5L27', '4L31'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['8E', '7E', '6E', '5E', '4E'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M'],\n      watergun: ['8L1'],\n      waterpulse: ['8L12', '7T', '7L19', '6T', '6L19', '5L19', '4M', '4L28'],\n      watersport: ['7E', '6E', '5E', '4E'],\n      whirlpool: ['8M', '4M'],\n      wideguard: ['8L16', '7L23', '7E', '6L23', '6E', '5L23', '5E'],\n      wingattack: ['8L8', '7L14', '6L14', '5L14', '4L22']\n    }\n  ],\n  [\n    'mantine',\n    {\n      acrobatics: ['8M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8M', '8L20', '7L32', '7V', '6L32', '5L19', '4L19', '3L29'],\n      aircutter: ['5D', '4T'],\n      airslash: ['8M', '8L32', '7L36', '6L36', '5L36'],\n      amnesia: ['8M', '7E', '6E', '5E'],\n      aquaring: ['8L36', '7L39', '6L39', '5L39', '4L46'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      blizzard: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '3T'],\n      bounce: ['8M', '8L40', '7T', '7L46', '6T', '6L46', '5T', '5L40', '4T', '4L40'],\n      brine: ['8M', '4M'],\n      bubble: ['7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      bubblebeam: ['8L24', '7L1', '7V', '6L1', '5L1', '4L1', '3L15'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      bulletseed: ['8M', '8L1', '7L1', '6L1', '5L1', '4M', '4L1'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8E', '7L11', '7V', '6L11', '5L11', '4L37', '3L50'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['8T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['8M', '7T', '6T', '5T', '4T'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      headbutt: ['8L28', '7L16', '7V', '6L16', '5L13', '4T', '4L13'],\n      helpinghand: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['8M'],\n      hydropump: ['8M', '8L48', '7L49', '7E', '7V', '6L49', '6E', '5L49', '5E', '4L49', '4E', '3E'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      ironhead: ['8M', '7T', '6T', '5T', '4T'],\n      liquidation: ['8M', '7T'],\n      mimic: ['3T'],\n      mirrorcoat: ['8E', '7E', '6E', '5E', '5D', '4E'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['7E', '6E', '5E', '4E', '3E'],\n      naturalgift: ['4M'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '4E', '3E'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      roost: ['8L1', '7M', '7L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      signalbeam: ['7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      slam: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      splash: ['8E', '7E', '6E', '5E', '4E'],\n      stringshot: ['4T'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      supersonic: ['8L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L8', '3S0'],\n      surf: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7V', '4T', '3T'],\n      tackle: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      tailwind: ['8E', '7T', '6T', '5T', '4T'],\n      takedown: ['8L44', '7L27', '7V', '6L27', '5L27', '4L31', '3L22'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      waterfall: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['8L1'],\n      waterpulse: ['8L12', '7T', '7L19', '6T', '6L19', '5L19', '4M', '4L28', '3M', '3L43'],\n      watersport: ['7E', '6E', '5E', '4E'],\n      whirlpool: ['8M', '7V', '4M'],\n      wideguard: ['8L16', '7L23', '7E', '6L23', '6E', '5L23', '5E'],\n      wingattack: ['8L1', '7L14', '7V', '6L14', '5L14', '4L22', '3L36']\n    }\n  ],\n  [\n    'skarmory',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L16', '8M', '8L16', '7L31', '7V', '6L12', '5L12', '4L12', '3L16'],\n      aircutter: ['9M', '9E', '8E', '7L12', '6L12', '5L23', '4T', '4L23', '3L29'],\n      airslash: ['9M', '8M', '7L45', '6L42', '5L42', '4L39'],\n      assurance: ['8M', '7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      autotomize: ['8L32', '7L50', '6L39', '5L39'],\n      bodypress: ['9M', '8M'],\n      bravebird: ['9M', '9L52', '8M', '8L52', '7E', '6E', '5E', '4E'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      drillpeck: ['9L36', '8L36', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      drillrun: ['9M'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M', '7E', '7V', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['9E', '8E', '7L20', '6L20', '5L20', '4L20'],\n      flash: ['6M', '5M', '4M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fly: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['9L8', '8L8', '7L17', '7V', '6L17', '5L17', '4L17', '3L26'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M'],\n      guardswap: ['8M', '7E', '6E', '5E', '4E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irondefense: ['9M', '9L48', '8M', '8L48', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      metalclaw: ['9M', '9L12', '8L12', '7L9', '6L9'],\n      metalsound: ['9M', '9L40', '8L40', '7L42', '6L31', '5L31', '4L31', '3L45'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '8E', '7L53', '6L50', '5L50', '4L45'],\n      ominouswind: ['4T'],\n      payback: ['9L32', '8M', '7M', '6M', '5M', '4M'],\n      peck: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      roost: ['9E', '8E', '7M', '6M', '5T', '5D', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L4', '8L4', '7L6', '7V', '6L6', '5L6', '4L6', '3L10'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '8M'],\n      secretpower: ['6M', '4M', '3M'],\n      skyattack: ['9E', '8E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      skydrop: ['7M', '6M', '5M'],\n      slash: ['9L24', '8L24', '7L39', '6L39', '5L45', '4L42'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spikes: ['9M', '9L44', '8M', '8L44', '7L28', '6L28', '5L28', '4L27', '3L42'],\n      stealthrock: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      steelbeam: ['9M', '8T'],\n      steelwing: ['9L28', '8M', '8L28', '7M', '7L34', '7V', '6M', '6L34', '5L34', '4M', '4L34', '3M', '3L32'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7L23', '7V', '6L9', '5L9', '4T', '4L9', '3T', '3L13'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      whirlwind: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      wingattack: ['9L20', '8L20'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'houndour',\n    {\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['9L25', '7L25', '7E', '7V', '6L25', '6E', '5L25', '5E', '4L27', '4E', '3E'],\n      bite: ['9L16', '7L16', '7V', '6L16', '5L16', '4L17', '3L25'],\n      bodyslam: ['9M', '3T'],\n      burningjealousy: ['9M'],\n      captivate: ['4M'],\n      charm: ['3S1'],\n      comeuppance: ['9L37'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      crunch: ['9M', '9L49', '7L49', '7V', '6L49', '5L49', '4L48', '3L49'],\n      curse: ['7V'],\n      darkpulse: ['9M', '7M', '6M', '5T', '5D', '4M'],\n      destinybond: ['9E', '7E', '6E'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      embargo: ['7M', '7L37', '6M', '6L37', '5M', '5L37', '4M', '4L40'],\n      ember: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      feintattack: ['7L32', '7V', '6L32', '5L32', '4L35', '3L37', '3S1'],\n      fireblast: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L28', '7L28', '7E', '6L28', '6E', '5L28', '5E', '4L30', '4E'],\n      firespin: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L44', '7M', '7L44', '7V', '6M', '6L44', '5M', '5L44', '4M', '4L43', '3M', '3L43'],\n      flareblitz: ['9M'],\n      foulplay: ['9M', '9L40', '7T', '7L40', '6T', '6L40', '5T', '5L40'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      howl: ['9L4', '7L4', '6L4', '5L4', '5D', '4L4', '3L7', '3S0'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      incinerate: ['9L20', '6M', '5M'],\n      inferno: ['9L56', '7L56', '6L56', '5L56'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      lashout: ['9M'],\n      leer: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      nastyplot: ['9M', '9L52', '7L52', '7E', '6L52', '6E', '5L52', '5E', '4L53', '4E'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      odorsleuth: ['7L20', '6L20', '5L20', '4L22', '3L31'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      painsplit: ['9M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      punishment: ['7E', '6E', '5E', '4E'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      rage: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      raindance: ['9M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      roar: ['9M', '9L13', '7M', '7L13', '7V', '6M', '6L13', '5M', '5L13', '4M', '4L14', '3M', '3L19', '3S1'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      smog: ['9L8', '7L8', '7V', '6L8', '5L8', '4L9', '3L13'],\n      snarl: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      spite: ['9M', '9E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9E', '7E', '6E', '5E', '4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      torment: ['9L32', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M', '4E', '3E']\n    }\n  ],\n  [\n    'houndoom',\n    {\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      beatup: ['9L26', '7L26', '6L26', '5L26', '4L28'],\n      bite: ['9L16', '7L16', '7V', '6L16', '5L16', '4L17', '3L27'],\n      bodyslam: ['9M', '3T'],\n      burningjealousy: ['9M'],\n      captivate: ['4M'],\n      comeuppance: ['9L41'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['9M', '9L56', '7L56', '7V', '6L56', '5L56', '4L54', '3L59'],\n      curse: ['7V'],\n      darkpulse: ['9M', '7M', '6M', '6S0', '5T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      embargo: ['7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L44'],\n      ember: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      endeavor: ['9M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L35', '7V', '6L35', '5L35', '4L38', '3L43'],\n      fireblast: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L30', '7L30', '6L30', '5L30', '4L32'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L50', '7M', '7L50', '7V', '6M', '6L50', '6S0', '5M', '5L50', '4M', '4L48', '3M', '3L51'],\n      flareblitz: ['9M'],\n      foulplay: ['9M', '9L45', '7T', '7L45', '6T', '6L45', '5T', '5L45'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      headbutt: ['7V', '4T'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      howl: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      incinerate: ['9L20', '6M', '5M'],\n      inferno: ['9L62', '7L1', '6L1', '5L65'],\n      irontail: ['7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lashout: ['9M'],\n      leer: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      nastyplot: ['9M', '9L1', '7L1', '6L1', '5L60', '4L60'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      odorsleuth: ['7L20', '6L20', '5L20', '4L22', '3L35'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      painsplit: ['9M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      roar: ['9M', '9L13', '7M', '7L13', '7V', '6M', '6L13', '5M', '5L13', '4M', '4L14', '3M', '3L19'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '7V', '6M', '6S0', '5M', '4M', '3M'],\n      smog: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L13'],\n      snarl: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '7V', '6M', '6S0', '5M', '4M', '3M'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['7V', '4T', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '7T'],\n      thunderfang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      torment: ['9L35', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'phanpy',\n    {\n      ancientpower: ['9E', '7E', '7V', '6E', '5E', '4T', '4E', '3E'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      bulldoze: ['9M', '9L15', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M', '9L33', '7L33', '6L33', '5L33', '4L33'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      curse: ['9M', '7V'],\n      defensecurl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L9'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L42', '7L42', '7V', '6L42', '5L42', '4L42', '3T', '3L49'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M'],\n      endeavor: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      endure: ['9M', '9L19', '7L19', '7V', '6L19', '5L28', '4M', '4L28', '3T', '3L41'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      flail: ['9L6', '7L6', '7V', '6L6', '5L6', '5D', '4L6', '3L17'],\n      focusenergy: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['7V', '4T'],\n      headsmash: ['9E', '7E', '6E', '5E', '4E'],\n      heavyslam: ['9M', '9E', '7E', '6E', '5E', '5D'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '9E', '7E'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      iceshard: ['9E', '7E', '6E', '5E', '4E'],\n      ironhead: ['9M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['9L37', '7T', '7L37', '6T', '6L37', '5T', '5L37', '4L37'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7E', '7V', '6E', '5E', '4T', '3T'],\n      naturalgift: ['7L15', '6L15', '5L19', '4M', '4L19'],\n      odorsleuth: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      playrough: ['9M', '9E', '7E', '6E'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9L10', '7L10', '7V', '6L10', '5L15', '4T', '4L15', '3T', '3L33'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      slam: ['9L24', '7L24', '6L24', '5L24', '4L24'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M'],\n      snore: ['9E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L28', '7L28', '7V', '6L10', '5L10', '4L10', '3L25'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      watergun: ['7V']\n    }\n  ],\n  [\n    'donphan',\n    {\n      ancientpower: ['4T'],\n      assurance: ['9L15', '7L15', '6L15', '5L31', '4L31'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '3T'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      brutalswing: ['7M'],\n      bulldoze: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '7V'],\n      defensecurl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3T', '3L9'],\n      dig: ['9M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L43', '7M', '7L43', '7V', '6M', '6L43', '5M', '5L46', '4M', '4L46', '3M', '3L49'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '7V', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      flail: ['7V', '4L1', '3L17'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furyattack: ['9L0', '7L1', '7V', '6L25', '5L25', '4L25', '3L25'],\n      gigaimpact: ['9M', '9L50', '7M', '7L50', '6M', '6L50', '5M', '5L54', '4M', '4L54'],\n      growl: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '7M', '6M', '5M', '4M'],\n      headbutt: ['7V', '4T'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      hornattack: ['9L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      hyperbeam: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      icefang: ['9M'],\n      icespinner: ['9M'],\n      irondefense: ['9M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M', '9L19', '7T', '7L19', '6T', '6L10', '5T', '5L10', '4T', '4L10'],\n      lastresort: ['7T', '6T', '5T'],\n      magnitude: ['7L30', '6L19', '5L19', '4L19'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      odorsleuth: ['3L1'],\n      playrough: ['9M'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      rapidspin: ['9L6', '7L6', '7V', '6L6', '5L6', '4L6', '3L41'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9L10', '7L10', '7V', '6L10', '5L15', '4T', '4L15', '3T', '3L33'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M'],\n      scaryface: ['9M', '9L37', '7L37', '6L37', '5L39', '4L39'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      slam: ['9L24', '7L24', '6L24', '5L24', '4L24'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M'],\n      smartstrike: ['9M'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '9L30', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunderfang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M']\n    }\n  ],\n  [\n    'stantler',\n    {\n      agility: ['9M'],\n      astonish: ['9L7', '7L7', '6L7', '5L7', '4L7', '3L11'],\n      attract: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      bite: ['9E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      bodyslam: ['9M', '3T'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      calmmind: ['9M', '9L27', '7M', '7L27', '6M', '6L27', '5M', '5L27', '4M', '4L27', '3M', '3L47'],\n      captivate: ['7L50', '6L50', '5L53', '4M', '4L49'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L23', '7L23', '7V', '6L23', '5L23', '4L23', '3L41'],\n      curse: ['9M', '7V'],\n      detect: ['7V'],\n      dig: ['9M'],\n      disable: ['9E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      doubleedge: ['9M', '9L55', '3T'],\n      doublekick: ['9E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7V', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      extrasensory: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M'],\n      hypnosis: ['9L10', '7L10', '7V', '6L10', '5L10', '4L10', '3L17'],\n      imprison: ['9M', '9L49', '7L49', '6L49', '5L49', '4L43'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      jumpkick: ['7L43', '6L43', '5L43'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      leer: ['9L3', '7L3', '7V', '6L3', '5L3', '4L3', '3L7', '3S0'],\n      lightscreen: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      lunge: ['9M'],\n      magicroom: ['7T', '6T', '5T'],\n      mefirst: ['7L1', '7E', '6L1', '6E', '5L55', '5E', '4L53'],\n      megahorn: ['9E', '7E', '6E', '5E', '4E'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      mudsport: ['7E', '6E', '5E'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      protect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      psyshieldbash: ['9E'],\n      psyshock: ['9M', '7M', '6M', '5M'],\n      rage: ['7E', '6E', '5E'],\n      raindance: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      roleplay: ['9L32', '7T', '7L33', '6T', '6L33', '5T', '5L33', '4T', '4L33', '3L31'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L16', '7L16', '7V', '6L16', '5L16', '4L16', '3L27'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '7T', '6T', '5T', '5D', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['9M', '9E', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      stomp: ['9L13', '7L13', '7V', '6L13', '5L13', '4L13', '3L21'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      swift: ['9M', '7V', '4T', '3T'],\n      tackle: ['9L1', '7L1', '7V', '6L1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      takedown: ['9M', '9L21', '7L21', '7V', '6L21', '5L21', '4L21', '3L37'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thrash: ['9E', '7E', '6E', '5E', '4E'],\n      throatchop: ['9M', '7T'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['9M', '9L37', '7T', '7L38', '7E', '6T', '6L38', '6E', '5T', '5L38', '5E', '4T', '4L38', '4E']\n    }\n  ],\n  [\n    'wyrdeer',\n    {\n      agility: ['9M'],\n      astonish: ['9L7'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      calmmind: ['9M', '9L27'],\n      chargebeam: ['9M'],\n      confuseray: ['9M', '9L23'],\n      curse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L55'],\n      earthpower: ['9M'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      expandingforce: ['9M'],\n      facade: ['9M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M'],\n      gravity: ['9M'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      hypnosis: ['9L10'],\n      imprison: ['9M', '9L49'],\n      leer: ['9L3'],\n      lightscreen: ['9M'],\n      lunge: ['9M'],\n      megahorn: ['9L62'],\n      protect: ['9M'],\n      psybeam: ['9M'],\n      psychic: ['9M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M'],\n      psyshieldbash: ['9L0'],\n      psyshock: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      roar: ['9M'],\n      roleplay: ['9L32'],\n      sandattack: ['9L16'],\n      scaryface: ['9M'],\n      shadowball: ['9M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spite: ['9M'],\n      stomp: ['9L13'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L21'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderwave: ['9M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M'],\n      uproar: ['9M'],\n      wildcharge: ['9M'],\n      zenheadbutt: ['9M', '9L37']\n    }\n  ],\n  [\n    'smeargle',\n    {\n      captivate: ['5D'],\n      doubleslap: ['3S1'],\n      falseswipe: ['5S2'],\n      flamethrower: ['6S3'],\n      furyswipes: ['6S3'],\n      irontail: ['3S1'],\n      meanlook: ['5S2'],\n      odorsleuth: ['5S2'],\n      seismictoss: ['6S3'],\n      sketch: ['9L1', '7L1', '7V', '6L1', '6S3', '5L1', '5D', '4L1', '3L1', '3S1', '3S0'],\n      sleeptalk: ['5D'],\n      spore: ['5S2'],\n      tailwhip: ['3S1']\n    }\n  ],\n  [\n    'miltank',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      attract: ['8M', '7M', '7V', '6M', '6S0', '5M', '4M', '3M'],\n      belch: ['8E', '7E', '6E'],\n      bide: ['7L15', '7V', '6L15', '5L15', '4L15', '3L26'],\n      blizzard: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '8L40', '7L24', '7V', '6L24', '5L24', '4L24', '3T', '3L43'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['7L35', '6L35', '5L35', '4M', '4L35'],\n      charm: ['8M', '8L50'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['8E', '7E', '7V', '6E', '5E', '5D', '4E', '3E'],\n      defensecurl: ['8L10', '7L5', '7V', '6L5', '5L5', '5D', '4L5', '3T', '3L8'],\n      dizzypunch: ['7E', '6E', '5E', '4E'],\n      doubleedge: ['8E', '7E', '6E', '5E', '4E', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['7V', '3T'],\n      earthquake: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '7E', '7V', '6E', '5E', '4M', '4E', '3T', '3E'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['8E', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '7L3', '7V', '6L3', '5L3', '4L3', '3L4'],\n      gyroball: ['8M', '7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L41'],\n      hammerarm: ['8E', '7E', '6E', '5E', '4E'],\n      headbutt: ['8L25', '7V', '4T'],\n      healbell: ['8L20', '7T', '7L48', '7V', '6T', '6L48', '5T', '5L48', '4T', '4L48', '3L53'],\n      heartstamp: ['7E', '6E', '5E'],\n      heavyslam: ['8M'],\n      helpinghand: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M', '8L55'],\n      hyperbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      ironhead: ['8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '5D', '4M', '3M'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['8M', '3T'],\n      milkdrink: ['8L35', '7L11', '7V', '6L11', '6S0', '5L11', '4L11', '3L19'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      playrough: ['8M', '8L45'],\n      poweruppunch: ['6M'],\n      present: ['8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '4E', '3T', '3E'],\n      punishment: ['7E', '6E', '5E', '4E'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['8L5', '7L19', '7V', '6L19', '6S0', '5L19', '4T', '4L19', '3T', '3L34'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8E', '7E', '7V', '6E', '5E', '4E', '3T', '3E'],\n      shadowball: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '7E', '7V', '6M', '6E', '5T', '5E', '4M', '4E', '3T', '3E'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      steelroller: ['8T'],\n      stomp: ['8L15', '7L8', '7V', '6L8', '6S0', '5L8', '4L8', '3L13'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      tackle: ['8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      thunder: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      wakeupslap: ['7L50', '6L50', '5L55', '4L55'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      workup: ['8M', '7M', '5M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['8M', '8L30', '7T', '7L29', '6T', '6L29', '5T', '5L29', '4T', '4L29']\n    }\n  ],\n  [\n    'raikou',\n    {\n      agility: ['9M', '8M'],\n      aurasphere: ['9M', '8M', '4S3'],\n      bite: ['9L12', '8L12', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '9L18', '8M', '8L18', '7M', '7L78', '7S7', '6M', '6L78', '5M', '5L78', '4M', '4L78', '3M', '3L81'],\n      charge: ['9M', '9L1', '8L1'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L42', '8M', '8L42', '7L43', '7V', '7S5', '7S6', '6L43', '6S4', '5L43', '4L43', '3L61', '3S1'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      dig: ['8M', '7V', '6M', '5M', '4M', '3M'],\n      discharge: ['9L54', '9S10', '8L54', '7L1', '7S5', '7S6', '6L1', '5L57', '4L57'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extrasensory: ['9L48', '9S10', '8L48', '7L1', '7S7', '6L1', '5L64', '4L64'],\n      extremespeed: ['9L1', '8L1', '8S8', '4S3'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      howl: ['9L36', '8L36', '8S8'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      quash: ['7M', '6M', '5M'],\n      quickattack: ['9L1', '8L1', '7L22', '7V', '6L22', '5L22', '4L22', '4S2', '3L31', '3S0', '3S1'],\n      raindance: ['9M', '9L66', '9S10', '8M', '8L66', '7M', '7L71', '7V', '6M', '6L71', '5M', '5L71', '4M', '4L71', '3M'],\n      reflect: [\n        '9M',\n        '9L60',\n        '9S10',\n        '8M',\n        '8L60',\n        '7M',\n        '7L36',\n        '7V',\n        '7S5',\n        '7S6',\n        '6M',\n        '6L36',\n        '6S4',\n        '5M',\n        '5L36',\n        '4M',\n        '4L36',\n        '4S2',\n        '3M',\n        '3L51',\n        '3S1'\n      ],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      roar: ['9M', '9L24', '8L24', '7M', '7L15', '7V', '6M', '6L15', '5M', '5L15', '4M', '4L15', '4S2', '3M', '3L21', '3S0'],\n      rockclimb: ['4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['9M', '8M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spark: ['9L6', '8L6', '7L29', '7V', '6L29', '6S4', '5L29', '4L29', '4S2', '3L41', '3S0', '3S1'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunder: ['9M', '9L72', '8M', '8L72', '7M', '7L85', '7V', '6M', '6L85', '5M', '5L85', '4M', '4L71', '3M', '3L71'],\n      thunderbolt: ['9M', '8M', '8S8', '7M', '7S7', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '9L30', '8M', '8L30', '7L50', '7S5', '7S6', '6L50', '6S4', '5L50', '4L50'],\n      thundershock: ['9L1', '8L1', '7L8', '7V', '6L8', '5L8', '4L8', '3L11', '3S0'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      voltswitch: ['9M', '8M', '7M', '7S7', '6M', '5M'],\n      weatherball: ['9M', '8M', '8S8', '4S3'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zapcannon: ['9L78', '8L78', '7V', '4S3']\n    }\n  ],\n  [\n    'entei',\n    {\n      agility: ['9M', '8M'],\n      bite: ['9L12', '8L12', '7L1', '7V', '7S5', '7S6', '6L1', '5L1', '4L1', '3L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '9L18', '8M', '8L18', '7M', '7L78', '6M', '6L78', '5M', '5L78', '4M', '4L78', '3M', '3L81'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L42', '8M', '8L42', '8S8'],\n      crushclaw: ['4S3'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      ember: ['9L1', '8L1', '7L8', '7V', '6L8', '5L8', '4L8', '3L11', '3S0'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      eruption: ['9L78', '8L78', '7L1', '6L1', '5L85', '4L85'],\n      extrasensory: ['9L48', '9S10', '8L48', '7L1', '6L1', '5L64', '4L64'],\n      extremespeed: ['9L1', '8L1', '8S8', '4S3'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '9L72', '8M', '8L72', '7M', '7L71', '7V', '6M', '6L71', '5M', '5L71', '4M', '4L71', '3M', '3L71'],\n      firefang: ['9M', '9L30', '8M', '8L30', '7L50', '6L50', '6S4', '5L50', '4L50'],\n      firespin: ['9M', '8M', '7L22', '7V', '6L22', '5L22', '4L22', '4S2', '3L31', '3S0', '3S1'],\n      flamecharge: ['9M', '7M', '7S7', '6M', '5M'],\n      flamethrower: ['9M', '8M', '8S8', '7M', '7L36', '7V', '6M', '6L36', '6S4', '5M', '5L36', '4M', '4L36', '4S2', '3M', '3L51', '3S1'],\n      flamewheel: ['9L6', '8L6'],\n      flareblitz: ['9M', '8M', '4S3'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['7V', '4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      howl: ['4S3'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '7S7', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lavaplume: ['9L54', '9S10', '8L54', '7L1', '7S5', '7S6', '6L1', '5L57', '4L57'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '9L24', '8L24', '7M', '7L15', '7V', '6M', '6L15', '5M', '5L15', '4M', '4L15', '4S2', '3M', '3L21', '3S0'],\n      rockclimb: ['4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sacredfire: ['9L1', '8L1', '7L1', '7S7', '6L1'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M', '9L36', '8M', '8L36', '8S8'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smokescreen: ['9L1', '8L1'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      stomp: ['9L1', '8L1', '7L29', '7V', '7S5', '7S6', '6L29', '6S4', '5L29', '4L29', '4S2', '3L41', '3S0', '3S1'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '7S7', '6M', '5M', '4M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '9L66', '9S10', '8M', '8L66', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['9L60', '9S10', '8L60', '7M', '7L43', '7V', '7S5', '7S6', '6M', '6L43', '6S4', '5M', '5L43', '4M', '4L43', '3T', '3L61', '3S1'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'suicune',\n    {\n      agility: ['9M', '8M'],\n      airslash: ['9M', '8M', '4S4'],\n      aquaring: ['4S4'],\n      aurorabeam: ['7L29', '7V', '7S6', '6L29', '6S5', '5L29', '4L29', '4S3', '3L41', '3S0', '3S1'],\n      avalanche: ['9M', '8M', '4M'],\n      bite: ['9L12', '8L12', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      blizzard: ['9M', '9L78', '8M', '8L78', '7M', '7L85', '7V', '6M', '6L85', '5M', '5L85', '4M', '4L85', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brine: ['8M', '4M'],\n      bubblebeam: ['7L1', '7V', '7S6', '6L8', '5L8', '4L8', '3L11', '3S0'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '9L18', '8M', '8L18', '8S7', '7M', '7L78', '6M', '6L78', '5M', '5L78', '4M', '4L78', '3M', '3L81'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L42', '8M', '8L42'],\n      curse: ['7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      detect: ['7V'],\n      dig: ['8M', '7V', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extrasensory: ['9L48', '9S9', '8L48', '8S7', '7L64', '6L1', '5L64', '4L64'],\n      extremespeed: ['9L1', '8L1', '8S7', '4S4'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gust: ['9L1', '8L1', '7L22', '7V', '6L22', '5L22', '4L22', '4S3', '3L31', '3S0', '3S1', '3S2'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L72', '8M', '8L72', '7L71', '7V', '6L1', '5L71', '4L71', '3L71', '3S2'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['9M', '9L30', '8M', '8L30', '7L50', '6L50', '6S5', '5L50', '4L50'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S2'],\n      liquidation: ['9M', '8M', '8S7'],\n      mimic: ['3T'],\n      mirrorcoat: ['9L60', '9S9', '8L60', '7L43', '7V', '6L43', '6S5', '5L43', '4L43', '3L61', '3S1'],\n      mist: ['9L1', '8L1', '7L36', '7V', '7S6', '6L36', '6S5', '5L36', '4L36', '4S3', '3L51', '3S1'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      quash: ['7M', '6M', '5M'],\n      raindance: [\n        '9M',\n        '9L66',\n        '9S9',\n        '8M',\n        '8L66',\n        '7M',\n        '7L1',\n        '7V',\n        '7S6',\n        '6M',\n        '6L15',\n        '5M',\n        '5L15',\n        '4M',\n        '4L15',\n        '4S3',\n        '3M',\n        '3L21',\n        '3S0',\n        '3S2'\n      ],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '9L24', '8L24', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scald: ['9M', '8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sheercold: ['9L1', '8L1', '7L1', '4S4'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '9L54', '9S9', '8M', '8L54', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '3T'],\n      tailwind: ['9M', '9L36', '8L36', '7T', '7L57', '6T', '6L1', '5T', '5L57', '4T', '4L57'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      waterfall: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7V'],\n      waterpulse: ['9M', '9L6', '8L6', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '7V', '4M']\n    }\n  ],\n  [\n    'larvitar',\n    {\n      ancientpower: ['9E', '8E', '7E', '7V', '6E', '5E', '4T', '4E', '3E'],\n      assurance: ['9E', '8M', '7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bite: ['9L9', '8L9', '7L1', '7V', '6L1', '5L1', '5D', '5S1', '4L1', '3L1', '3S0'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L14', '6L14', '5L14'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L27', '8M', '8L27', '7L41', '7V', '6L41', '5L41', '4L37', '3L43'],\n      curse: ['9M', '9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      darkpulse: ['9M', '8M', '8L24', '7M', '7L32', '6M', '6L32', '5T', '5L32', '5D', '4M', '4L28'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '9E', '8M', '7E', '6E', '5E', '4E', '3E', '3S0'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L31', '8M', '8L31', '7M', '7L46', '7V', '6M', '6L46', '5M', '5L46', '4M', '4L41', '3M', '3L50'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      focusenergy: ['9E', '8M', '7E', '7V', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '9L42', '8M', '8L42', '7M', '7L55', '7V', '6M', '6L55', '5M', '5L55', '4M', '4L50', '3M', '3L57'],\n      irondefense: ['9M', '9E', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      ironhead: ['9M', '9E', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      irontail: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5S1', '4L1', '3L1'],\n      mimic: ['3T'],\n      muddywater: ['8M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '9E', '8M', '7T', '7E', '7V', '6T', '6E', '5T', '5E', '4E', '3E', '3S0'],\n      payback: ['9L6', '8M', '8L6', '7M', '7L37', '6M', '6L37', '5M', '5L37', '4M', '4L32'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '7V', '6E', '5E', '4E', '3E'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L15', '8M', '8L15', '7M', '7L19', '7V', '6M', '6L19', '5M', '5L19', '4M', '4L14', '3T', '3L22'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rockthrow: ['9L3', '8L3'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '9L39', '8M', '8L39', '7M', '7L5', '7V', '6M', '6L5', '5M', '5L5', '5S1', '4M', '4L5', '3M', '3L8', '3S0'],\n      sandtomb: ['9M', '8M'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L23', '7V', '6L23', '5L23', '4L19', '3L36'],\n      screech: ['9L21', '8M', '8L21', '7L10', '7V', '6L10', '5L10', '4L10', '3L15'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '9L24', '7M', '6M', '5M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4M'],\n      stomp: ['9E', '8E', '7E', '7V', '6E', '5E', '4E', '3E'],\n      stompingtantrum: ['9M', '9L18', '8M', '8L18'],\n      stoneedge: ['9M', '9L33', '8M', '8L33', '7M', '7L50', '6M', '6L50', '5M', '5L50', '4M', '4L46'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '6T', '5T', '5S1', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thrash: ['9L36', '8L36', '7L28', '7V', '6L28', '5L28', '4L23', '3L29'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'pupitar',\n    {\n      aerialace: ['9M'],\n      ancientpower: ['4T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bite: ['9L9', '8L9', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L14', '6L14', '5L14'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L27', '8M', '8L27', '7L47', '7V', '6L47', '5L47', '4L41', '3L47'],\n      curse: ['9M', '7V'],\n      darkpulse: ['9M', '8M', '8L24', '7M', '7L34', '6M', '6L34', '5T', '5L34', '4M', '4L28'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L33', '8M', '8L33', '7M', '7L54', '7V', '6M', '6L54', '5M', '5L54', '4M', '4L47', '3M', '3L56'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '9L52', '8M', '8L52', '7M', '7L67', '7V', '6M', '6L67', '5M', '5L67', '4M', '4L60', '3M', '3L65'],\n      irondefense: ['9M', '9L0', '8M', '8L0', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      lashout: ['9M'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['3T'],\n      muddywater: ['8M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T'],\n      payback: ['9L1', '8M', '8L1', '7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L34'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L15', '8M', '8L15', '7M', '7L19', '7V', '6M', '6L19', '5M', '5L19', '4M', '4L14', '3T', '3L22'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rockthrow: ['9L1', '8L1'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '9L47', '8M', '8L47', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      sandtomb: ['9M', '8M'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L23', '7V', '6L23', '5L23', '4L19', '3L38'],\n      screech: ['9L21', '8M', '8L21', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '9L24', '7M', '6M', '5M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '9L18', '8M', '8L18'],\n      stoneedge: ['9M', '9L37', '8M', '8L37', '7M', '7L60', '6M', '6L60', '5M', '5L60', '4M', '4L54'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thrash: ['9L42', '8L42', '7L28', '7V', '6L28', '5L28', '4L23', '3L29'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'tyranitar',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      bite: ['9L9', '8L9', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L14', '6L14', '5L14'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['9M', '9L27', '8M', '8L27', '7L47', '7V', '6L47', '6S3', '6S4', '6S5', '6S6', '5L47', '5S1', '5S2', '4L41', '3L47', '3S0'],\n      curse: ['9M', '7V'],\n      cut: ['7V', '6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '9L1', '8M', '8L24', '7M', '7L34', '6M', '6L34', '5T', '5L34', '4M', '4L28'],\n      detect: ['7V'],\n      dig: ['9M', '8M', '7V', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['7V'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dynamicpunch: ['7V', '3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: [\n        '9M',\n        '9L33',\n        '8M',\n        '8L33',\n        '7M',\n        '7L54',\n        '7V',\n        '6M',\n        '6L54',\n        '6S3',\n        '6S4',\n        '5M',\n        '5L54',\n        '5S2',\n        '4M',\n        '4L47',\n        '3M',\n        '3L61',\n        '3S0'\n      ],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '7M', '7V', '6M', '5M', '5S1', '4M', '3M'],\n      firefang: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      firepunch: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      furycutter: ['7V', '4T', '3T'],\n      gigaimpact: ['9M', '9L59', '8M', '8L59', '7M', '7L82', '6M', '6L82', '5M', '5L82', '4M'],\n      hardpress: ['9M'],\n      headbutt: ['7V', '4T'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '9L52', '8M', '8L52', '7M', '7L73', '7V', '6M', '6L73', '5M', '5L73', '4M', '4L70', '3M', '3L75'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '5S1', '4M', '3M'],\n      icefang: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      icepunch: ['9M', '8M', '7T', '6T', '6S3', '6S6', '5T', '4T'],\n      icywind: ['9M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '6S5', '6S6', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7V', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['7V', '3T'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      payback: ['9L1', '8M', '8L1', '7M', '7L41', '6M', '6L41', '5M', '5L41', '5S2', '4M', '4L34'],\n      powergem: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '6S5', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      revenge: ['8M'],\n      roar: ['9M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '8M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L15', '8M', '8L15', '7M', '7L19', '7V', '6M', '6L19', '6S4', '6S5', '6S6', '5M', '5L19', '4M', '4L14', '3T', '3L22'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L1', '8L1'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '9L47', '8M', '8L47', '7M', '7L1', '7V', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      sandtomb: ['9M', '8M'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L23', '7V', '6L23', '5L23', '4L19', '3L38', '3S0'],\n      screech: ['9L21', '8M', '8L21', '7L1', '7V', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['5S2', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '9L24', '7M', '6M', '5M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '9L18', '8M', '8L18', '7T'],\n      stoneedge: ['9M', '9L37', '8M', '8L37', '7M', '7L63', '6M', '6L63', '6S3', '6S4', '5M', '5L63', '5S1', '4M', '4L54'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thrash: ['9L42', '8L42', '7L28', '7V', '6L28', '5L28', '4L23', '3L29', '3S0'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderfang: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'lugia',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      aeroblast: ['9L54', '9S13', '8L54', '7L43', '7V', '7S7', '7S8', '7S9', '7S10', '6L43', '6S5', '6S6', '5L43', '4L43', '4S2', '4S3', '3L77'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '8M'],\n      ancientpower: ['9L1', '8L1', '8S11', '7L57', '7V', '7S7', '7S9', '6L57', '5L57', '4T', '4L57', '4S3', '3L88'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      bravebird: ['9M'],\n      brine: ['8M', '4M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '9L27', '8M', '8L27', '7M', '7L93', '6M', '6L93', '5M', '5L93', '4M', '4L93', '3M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '7V'],\n      defog: ['7T', '7S8', '4M'],\n      detect: ['7V'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['7V'],\n      dragonpulse: ['9M', '8M', '8S11', '7T', '6T', '5T', '4M'],\n      dragonrush: ['9L1', '8L1', '7L15', '6L15', '6S6', '5L15', '4L15'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M', '7T', '7S10', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M', '3S1'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extrasensory: ['9L36', '9S13', '8L36', '8S11', '7L23', '7S7', '7S9', '6L23', '5L23', '4L23', '4S2'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['3S1'],\n      flash: ['6M', '5M', '4M'],\n      fly: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L81', '8M', '8L81', '7L79', '7V', '6L79', '5L79', '4L79', '3L99'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gust: ['9L1', '8L1', '7L9', '7V', '6L9', '5L9', '4L9', '3L22'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['7V', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '8M', '7S8'],\n      hydropump: ['9M', '9L72', '8M', '8L72', '7L37', '7V', '6L37', '6S5', '6S6', '5L37', '4L29', '4S2', '3L44', '3S0', '3S1'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '6S6', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      liquidation: ['9M'],\n      mimic: ['3T'],\n      mist: ['9L9', '8L9'],\n      mudslap: ['7V', '4T', '3T'],\n      naturalgift: ['7L85', '6L85', '5L85', '4M', '4L51'],\n      nightmare: ['7V', '3T'],\n      ominouswind: ['4T'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '7V', '7S10', '6M', '5M', '4M', '3M'],\n      psychicnoise: ['9M'],\n      psychoboost: ['3S1'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      punishment: ['7L50', '6L50', '6S5', '5L50', '4L50', '4S3'],\n      raindance: [\n        '9M',\n        '9L63',\n        '9S13',\n        '8M',\n        '8L63',\n        '7M',\n        '7L29',\n        '7V',\n        '6M',\n        '6L29',\n        '6S5',\n        '5M',\n        '5L29',\n        '4M',\n        '4L29',\n        '4S2',\n        '3M',\n        '3L55',\n        '3S0'\n      ],\n      recover: ['9L45', '9S13', '8L45', '7L71', '7V', '6L71', '5L71', '4L23', '3L33', '3S0'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L18', '8M', '8L18', '7M', '7L65', '7V', '6M', '6L65', '5M', '5L65', '4M', '4L9', '4S3', '3M', '3L11'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '7S7', '7S9', '6T', '5T', '4M', '3M'],\n      skyattack: ['9L90', '8L90', '7T', '7L99', '6T', '6L99', '5T', '5L99', '4T', '4L99'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '4L43', '3T', '3L66', '3S0'],\n      tailwind: ['9M', '7T', '7S8', '7S10', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      twister: ['4T'],\n      waterfall: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '5S4', '4L1'],\n      whirlpool: ['9M', '8M', '8S11', '7V', '4M'],\n      whirlwind: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5S4', '4L1', '3L1'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'hooh',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '8M'],\n      ancientpower: ['9L1', '8L1', '8S10', '7L57', '7V', '7S7', '7S8', '6L57', '5L57', '4T', '4L57', '4S2', '3L88'],\n      bodyslam: ['9M'],\n      bravebird: ['9M', '8M', '7L15', '7S6', '7S9', '6L15', '6S5', '5L15', '4L15'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      burnup: ['8L99', '7S7', '7S8'],\n      calmmind: ['9M', '9L27', '8M', '8L27', '7M', '7L93', '6M', '6L93', '5M', '5L93', '4M', '4L93', '3M'],\n      celebrate: ['6S5'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      curse: ['7V'],\n      defog: ['7T', '4M'],\n      detect: ['7V'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['7V'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '7V', '7S9', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7V', '4M', '3T'],\n      extrasensory: ['9L36', '9S12', '8L36', '8S10', '7L23', '7S7', '7S8', '6L23', '5L23', '4L23', '4S1'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '9L72', '8M', '8L72', '7M', '7L37', '7V', '6M', '6L37', '6S4', '5M', '5L37', '4M', '4L29', '4S1', '3M', '3L44', '3S0'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flareblitz: ['9M', '8M', '8S10'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fly: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L81', '8M', '8L81', '7L79', '7V', '6L79', '5L79', '4L79', '3L99'],\n      gigadrain: ['9M', '8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gust: ['9L1', '8L1', '7L9', '7V', '6L9', '5L9', '4L9', '3L22'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      imprison: ['9M', '8M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lifedew: ['9L9', '8L9'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['7L85', '6L85', '5L85', '4M', '4L51'],\n      nightmare: ['7V', '3T'],\n      ominouswind: ['4T'],\n      overheat: ['9M', '9L99', '8M', '7M', '6M', '5M', '4M', '3M'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '7V', '6M', '5M', '4M', '3T'],\n      punishment: ['7L50', '6L50', '6S4', '5L50', '4L50', '4S2'],\n      raindance: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['9L45', '9S12', '8L45', '7L71', '7V', '7S6', '6L71', '6S5', '5L71', '4L23', '3L33', '3S0'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      rocksmash: ['7V', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sacredfire: ['9L54', '9S12', '8L54', '7L43', '7V', '7S6', '7S7', '7S8', '7S9', '6L43', '6S4', '6S5', '5L43', '4L43', '4S1', '4S2', '3L77'],\n      safeguard: ['9L18', '8M', '8L18', '7M', '7L65', '7V', '7S6', '6M', '6L65', '5M', '5L65', '4M', '4L9', '4S2', '3M', '3L11'],\n      sandstorm: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skyattack: ['9L90', '8L90', '7T', '7L99', '6T', '6L99', '5T', '5L99', '4T', '4L99', '3T'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      steelwing: ['8M', '7M', '7V', '6M', '4M', '3M'],\n      strength: ['7V', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: [\n        '9M',\n        '9L63',\n        '9S12',\n        '8M',\n        '8L63',\n        '8S10',\n        '7M',\n        '7L29',\n        '7V',\n        '6M',\n        '6L29',\n        '6S4',\n        '5M',\n        '5L29',\n        '4M',\n        '4L29',\n        '4S1',\n        '3M',\n        '3L55',\n        '3S0'\n      ],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '7V', '4T', '4L43', '3T', '3L66', '3S0'],\n      tailwind: ['9M', '7T', '7S9', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      weatherball: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '5S3', '4L1'],\n      whirlwind: ['9L1', '8L1', '7L1', '7V', '6L1', '5L1', '5S3', '4L1', '3L1'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      zapcannon: ['7V'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'celebi',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      allyswitch: ['8M', '7T'],\n      ancientpower: ['8L30', '7L28', '7V', '7S7', '6L28', '5L28', '4T', '4L28', '3L20', '3S1', '3S3'],\n      aurasphere: ['8M'],\n      batonpass: ['8M', '8L20', '7L37', '7V', '6L37', '5L37', '4L37', '3L40', '3S1'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1', '7L1', '7V', '6L1', '6S6', '5L1', '4L1', '3L1', '3S0'],\n      curse: ['7V'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      defensecurl: ['7V', '3T'],\n      detect: ['7V'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['8T'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '7V', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7V', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '8L70', '8S8', '7L64', '7V', '7S7', '6L64', '5L64', '4L64', '3L30', '3S1', '3S3'],\n      gigadrain: ['8M', '7T', '7V', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['8T'],\n      grassyterrain: ['8M'],\n      healbell: ['8L1', '8S8', '7T', '7L1', '7V', '7S7', '6T', '6L1', '6S5', '6S6', '5T', '5L1', '4T', '4L1', '3L1', '3S0', '3S2', '3S3'],\n      healblock: ['7L55', '6L55', '5L55', '4L55'],\n      healingwish: ['8L80', '7L73', '6L73', '5L73', '4L73', '4S4'],\n      helpinghand: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      holdback: ['6S5'],\n      hyperbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      imprison: ['8M'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      leafblade: ['8M'],\n      leafstorm: ['8M', '8L90', '7L82', '6L82', '5L82', '4L82', '4S4'],\n      leechseed: ['8L50', '7L1', '7V', '6L1', '5L1', '4L1', '3L1', '3S2'],\n      lifedew: ['8L40', '8S8'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['8M', '8L10', '8S8', '7L19', '6L19', '5L19', '4L19'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      metronome: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['7V', '4T', '3T'],\n      nastyplot: ['8M', '4S4'],\n      naturalgift: ['7L46', '6L46', '5L46', '4M', '4L46'],\n      naturepower: ['7M', '6M'],\n      nightmare: ['7V', '3T'],\n      perishsong: ['8L100', '7L91', '7V', '6L91', '5L91', '4L91', '3L50', '3S1'],\n      pollenpuff: ['8M'],\n      protect: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      psychicterrain: ['8M'],\n      psychocut: ['8M'],\n      psychup: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      raindance: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      recover: ['8L60', '7L1', '7V', '6L1', '6S5', '6S6', '5L1', '4L1', '4S4', '3L1', '3S0', '3S2'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      return: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7L10', '7V', '7S7', '6M', '6L10', '6S5', '6S6', '5M', '5L10', '4M', '4L10', '3M', '3L10', '3S0', '3S2', '3S3'],\n      sandstorm: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      shadowball: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '7V', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '7V', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      solarblade: ['8M'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['8M', '7M', '7V', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '7V', '6M', '5M', '4M', '3T'],\n      sweetscent: ['7V'],\n      swift: ['8M', '7V', '4T', '3T'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      telekinesis: ['7T'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '7V', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['8M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      weatherball: ['8M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'treecko',\n    {\n      absorb: ['9E', '8E', '7L5', '6L5', '5L6', '5S1', '4L6', '3L6', '3S0'],\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M', '7L25', '6L25', '5L31', '4L31', '3L31'],\n      assurance: ['9L18', '8M', '8L18'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulletseed: ['9M', '8M', '7E', '6E', '5E', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      crushclaw: ['7E', '6E', '5E', '4E', '3E'],\n      cut: ['6M', '5M', '4M', '3M'],\n      detect: ['9L12', '8L12', '7L33', '6L33', '5L41', '4L41', '3L41'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doublekick: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['9L27', '8L27', '7M', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      dragontail: ['9M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dynamicpunch: ['3T'],\n      endeavor: ['9M', '9L36', '8L36', '7T', '7L45', '7E', '6T', '6L45', '6E', '5T', '5E', '4T', '4E', '3E'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '9L30', '8M', '8L30', '7M', '7L37', '6M', '6L37', '5M', '5L51', '4M', '4L51'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigadrain: ['9M', '9L21', '8M', '8L21', '7T', '7L21', '6T', '6L21', '5T', '5L46', '4M', '4L46', '3M', '3L46'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '8T', '7T', '6T', '5T'],\n      grasswhistle: ['7E', '6E', '5E', '4E'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M', '7E', '6E'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      leafage: ['9L3', '8L3'],\n      leafstorm: ['9M', '9L39', '8M', '8L39', '7E', '6E', '5E', '4E'],\n      leechseed: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S1', '4L1', '3L1', '3S0'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      magicalleaf: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      megadrain: ['9L9', '8L9', '7L13', '6L13', '5L26', '4L26', '3L26'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      mudsport: ['7E', '6E', '5E', '4E', '3E'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      naturepower: ['7M', '6M'],\n      nightslash: ['9E', '8E'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S1', '4L1', '3L1', '3S0'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L17', '6L16', '5L16', '4L16', '3L16'],\n      quickattack: ['9L6', '8L6', '7L9', '6L9', '5L11', '4L11', '3L11'],\n      quickguard: ['9L15', '8L15', '7L41', '6L41'],\n      razorwind: ['7E', '6E', '5E', '4E'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      screech: ['9L33', '8M', '8L33', '7L49', '6L21', '5L21', '4L21', '3L21'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['3T'],\n      slam: ['9L24', '8L24', '7L29', '6L29', '5L36', '4L36', '3L36'],\n      slash: ['9E', '8E'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      workup: ['8M', '7M'],\n      worryseed: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E']\n    }\n  ],\n  [\n    'grovyle',\n    {\n      absorb: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M', '7L28', '6L28', '5L35', '4L35', '3L35'],\n      assurance: ['9L20', '8M', '8L20'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['9M', '8M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      detect: ['9L12', '8L12', '7L38', '6L38', '5L47', '4L47', '3L47'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['9L35', '8L35', '7M', '6M', '5M', '4M', '3M'],\n      dragontail: ['9M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dynamicpunch: ['3T'],\n      endeavor: ['9M', '9L50', '8L50', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '9L1', '8M', '8L1', '7M', '7L48', '6M', '6L48', '5M', '5L53', '4M', '4L53', '3L53'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['9L1', '8L1', '7L1', '6L16', '5L16', '4T', '4L16', '3T', '3L16'],\n      gigadrain: ['9M', '9L25', '8M', '8L25', '7T', '6T', '5T', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '8T', '7T', '6T', '5T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      leafage: ['9L1', '8L1'],\n      leafblade: ['9L40', '8M', '8L40', '7L23', '6L23', '5L29', '4L29', '3L29'],\n      leafstorm: ['9M', '9L55', '8M', '8L55', '7L58', '6L58', '5L59', '4L59'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '8M'],\n      megadrain: ['9L9', '8L9', '7L13', '6L13'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L18', '6L17', '5L17', '4L17', '3L17'],\n      quickattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      quickguard: ['9L15', '8L15', '7L53', '6L53'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      screech: ['9L45', '8M', '8L45', '7L63', '6L23', '5L23', '4L23', '3L23'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['3T'],\n      slam: ['9L30', '8L30', '7L33', '6L33', '5L41', '4L41', '3L41'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      solarblade: ['8M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M'],\n      workup: ['8M', '7M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      xscissor: ['9M', '9L1', '8M', '8L1', '7M', '7L43', '6M', '6L43', '5M', '4M']\n    }\n  ],\n  [\n    'sceptile',\n    {\n      absorb: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M', '7L28', '6L28', '5L35', '4L35', '3L35'],\n      assurance: ['9L20', '8M', '8L20'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crosspoison: ['8M'],\n      crunch: ['9M', '8M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      detect: ['9L12', '8L12', '7L39', '6L39', '5L51', '4L51', '3L51'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['9L35', '8L35', '7M', '6M', '5M', '4M', '3M'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '5S0', '4M'],\n      dragontail: ['9M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dualchop: ['8L0', '7T', '7L1', '6T', '6L36'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endeavor: ['9M', '9L49', '8L56', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '9L1', '8M', '8L1', '7M', '7L51', '6M', '6L51', '5M', '5L59', '4M', '4L59', '3L59'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '5S0', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frenzyplant: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['9L1', '8L1', '7L1', '6L16', '4T', '3T', '3L16'],\n      gigadrain: ['9M', '9L25', '8M', '8L25', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '8T', '7T', '6T', '5T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      leafage: ['9L1', '8L1'],\n      leafblade: ['9L0', '8M', '8L42', '7L23', '6L23', '5L29', '4L29', '3L29'],\n      leafstorm: ['9M', '9L56', '8M', '8L63', '7L1', '6L1', '5L67', '5S0', '4L67'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '8M'],\n      megadrain: ['9L5', '8L5', '7L13', '6L13'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      nightslash: ['7L1', '6L1', '5L1', '4L1'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L18', '6L17', '5L17', '4L17', '3L17'],\n      quickattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      quickguard: ['9L15', '8L15', '7L57', '6L57'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '5S0', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scaleshot: ['9M', '8T'],\n      screech: ['9L42', '8M', '8L49', '7L69', '6L23', '5L23', '4L23', '3L23'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['3T'],\n      shedtail: ['9L1'],\n      slam: ['9L30', '8L30', '7L33', '6L33', '5L43', '4L43', '3L43'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      solarblade: ['9M', '8M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M'],\n      workup: ['8M', '7M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      xscissor: ['9M', '9L1', '8M', '8L1', '7M', '7L45', '6M', '6L16', '5M', '5L16', '4M', '4L16']\n    }\n  ],\n  [\n    'torchic',\n    {\n      aerialace: ['9M', '9L18', '8L18', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      bodyslam: ['9M', '8M', '3T'],\n      bounce: ['9L24', '8M', '8L24', '7T', '6T', '5T', '4T'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      crushclaw: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      curse: ['9M', '8E', '7E', '6E', '5E'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defog: ['7T'],\n      detect: ['9L12', '8L12'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L3', '8L3', '7L5', '6L5', '6S2', '5L10', '5S1', '5S2', '4L10', '3L10', '3S0'],\n      endure: ['9M', '8M', '7E', '6E', '5E', '4M', '4E', '3T', '3E'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M', '9L33', '8L33', '7E', '6E', '5E', '4E'],\n      feint: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firepledge: ['9M', '8T', '7T', '6T', '5T'],\n      firespin: ['9M', '8M', '7L19', '6L19', '5L25', '4L25', '3L25'],\n      flameburst: ['7L28', '7E', '6L28', '6E', '5E'],\n      flamecharge: ['9M', '9L9', '8L9', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L30', '8M', '8L30', '7M', '7L46', '6M', '6L43', '5M', '5L43', '4M', '4L43', '3M', '3L43'],\n      flareblitz: ['9M', '9L39', '8M', '8L39'],\n      focusenergy: ['9L27', '8M', '8L27', '7L32', '6L7', '6S2', '5L7', '5S1', '5S2', '4L7', '3L7', '3S0'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '6S2', '5L1', '5S1', '5S2', '4L1', '3L1', '3S0'],\n      headbutt: ['4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      lastresort: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      lowkick: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mirrormove: ['7L41', '6L37', '5L37', '4L37', '3L37'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      peck: ['9E', '8E', '7L14', '6L14', '5L16', '4L16', '3L16'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L6', '8L6', '7L23', '6L23', '5L28', '4L28', '3L28'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '9L36', '8M', '8L36', '7E', '6E', '5E', '4E', '3E'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L15', '8L15', '7L10', '6L10', '5L19', '4L19', '3L19'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '6S2', '5L1', '5S1', '5S2', '4L1', '3L1', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['9L21', '8L21', '7L37', '6L34', '5L34', '4L34', '3L34'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      smellingsalts: ['7E', '6E', '5E', '4E', '3E'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      swift: ['9M', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['9M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'combusken',\n    {\n      aerialace: ['9M', '9L20', '8L20', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '8M'],\n      blazekick: ['9L40', '8M', '8L40'],\n      bodyslam: ['9M', '8M', '3T'],\n      bounce: ['9L30', '8M', '8L30', '7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '9L45', '8M', '8L45', '7M', '7L31', '6M', '6L28', '5M', '5L28', '4M', '4L28', '3M', '3L28'],\n      captivate: ['4M'],\n      closecombat: ['9M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defog: ['7T'],\n      detect: ['9L12', '8L12'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doublekick: ['9L0', '8L0', '7L1', '6L16', '5L16', '4L16', '3L16'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dualchop: ['7T', '6T', '5T'],\n      dynamicpunch: ['3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M', '9L1', '8L1'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firepledge: ['9M', '8T', '7T', '6T', '5T'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '9L9', '8L9', '7M', '7L20', '6M', '6L20', '5M'],\n      flamethrower: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M', '3M'],\n      flareblitz: ['9M', '9L55', '8M', '8L55', '7L58', '6L54', '5L54', '4L54'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L35', '8M', '8L35', '7L36', '6L1', '5L1', '4L1', '3L1'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mirrormove: ['7L47', '6L43', '5L43', '4L43', '3L43'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      peck: ['7L14', '6L14', '5L17', '4L17', '3L17'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L1', '8L1', '7L25', '6L25', '5L32', '4L32', '3L32'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L50', '8M', '8L50'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L15', '8L15', '7L1', '6L1', '5L21', '4L21', '3L21'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      skyuppercut: ['7L53', '6L50', '5L50', '4L50', '3L50'],\n      slash: ['9L25', '8L25', '7L42', '6L39', '5L39', '4L39', '3L39'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['9M'],\n      vacuumwave: ['9M', '4T'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'blaziken',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M', '9L20', '8L20', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M', '8M'],\n      batonpass: ['9M', '8M'],\n      blastburn: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      blazekick: ['9L0', '8M', '8L42', '7L1', '6L36', '5L36', '4L36', '3L36', '3S0'],\n      bodyslam: ['9M', '8M', '3T'],\n      bounce: ['9L30', '8M', '8L30', '7T', '6T', '5T', '4T'],\n      bravebird: ['9M', '9L63', '8M', '8L1', '7L50', '6L49', '5L49', '4L49'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '9L42', '8M', '8L49', '7M', '7L31', '6M', '6L28', '5M', '5L28', '4M', '4L28', '3M', '3L28'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defog: ['7T'],\n      detect: ['9L12', '8L12'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doublekick: ['9L1', '8L1', '7L1', '6L16', '5L16', '4L16', '3L16'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dualchop: ['7T', '6T', '5T'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M', '9L1', '8L1'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firepledge: ['9M', '8T', '7T', '6T', '5T'],\n      firepunch: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T', '3L1'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '9L9', '8L9', '7M', '7L20', '6M', '6L20', '5M'],\n      flamethrower: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M', '3M'],\n      flareblitz: ['9M', '9L56', '8M', '8L63', '7L1', '6L1', '5L66', '5S1', '4L66'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L35', '8M', '8L35', '7L37', '6L1', '5L1', '4L1', '3L1'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['4T'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highjumpkick: ['7L1', '6L1', '5L1', '5S1'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mirrormove: ['3L49', '3S0'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      peck: ['7L14', '6L14', '5L17', '4L17', '3L17'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L1', '8L1', '7L25', '6L25', '5L32', '4L32', '3L32'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L49', '8M', '8L56'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L15', '8L15', '7L1', '6L1', '5L21', '4L21', '3L21'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      skyuppercut: ['7L57', '6L57', '5L59', '4L59', '3L59', '3S0'],\n      slash: ['9L25', '8L25', '7L44', '6L42', '5L42', '4L42', '3L42', '3S0'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '5S1', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '5S1', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      upperhand: ['9M'],\n      uproar: ['9M'],\n      uturn: ['9M', '8M'],\n      vacuumwave: ['9M', '4T'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'mudkip',\n    {\n      amnesia: ['9M', '9L27', '8M', '8L27'],\n      ancientpower: ['9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '7E', '6E', '5E'],\n      barrier: ['7E', '6E'],\n      bide: ['7L17', '6L15', '5L15', '4L15', '3L15'],\n      bite: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      curse: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      defensecurl: ['3T'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L36', '8L36', '7T', '7L44', '6T', '6L44', '5T', '5L46', '4T', '4L46', '3L46'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      foresight: ['7L12', '6L12', '5L19', '4L19', '3L19'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S1', '4L1', '3L1', '3S0'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L39', '8M', '8L39', '7L41', '6L41', '5L42', '4L42', '3L42'],\n      iceball: ['7E', '6E', '5E', '4E', '3E'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mirrorcoat: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      mudbomb: ['7E', '6E', '5E', '4E'],\n      muddywater: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9E', '8E', '7L9', '6L6', '5L6', '5S1', '4T', '4L6', '3T', '3L6', '3S0'],\n      mudsport: ['7L20', '6L20', '5L24', '4L24', '3L24'],\n      naturalgift: ['4M'],\n      protect: ['9M', '9L12', '8M', '8L12', '7M', '7L28', '6M', '6L28', '5M', '5L37', '4M', '4L37', '3M', '3L37'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7E', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      rockslide: ['9M', '9L21', '8M', '8L21', '7M', '6M', '5M', '4M'],\n      rocksmash: ['9L6', '8L6', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L9', '8L9', '7L25', '6L25'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      screech: ['9L33', '8M', '8L33'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      sludge: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stomp: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      supersonic: ['9L15', '8L15'],\n      surf: ['9M', '9L30', '8M', '8L30', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S1', '4L1', '3L1', '3S0'],\n      takedown: ['9M', '9L24', '8L24', '7L36', '6L28', '5L28', '4L28', '3L28'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '8M', '7T', '7E', '6T', '6E', '5E', '4E', '3E'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L3', '8L3', '7L4', '6L4', '5L10', '5S1', '4L10', '3L10', '3S0'],\n      waterpledge: ['9M', '8T', '7T', '6T', '5T'],\n      waterpulse: ['9M', '9L18', '8L18', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '8M', '7L33', '7E', '6L33', '6E', '5L33', '5E', '4M', '4L33', '4E', '3L33'],\n      wideguard: ['9E', '8E', '7E', '6E', '5E'],\n      workup: ['8M', '7M'],\n      yawn: ['9E', '8E', '7E', '6E', '5E', '4E']\n    }\n  ],\n  [\n    'marshtomp',\n    {\n      amnesia: ['9M', '9L35', '8M', '8L35'],\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M'],\n      bide: ['7L18', '6L15', '5L15', '4L15', '3L15'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M'],\n      defensecurl: ['3T'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '8L1', '7M', '7L48', '6M', '6L46', '5M', '5L46', '4M', '4L46', '3M', '3L46'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L50', '8L50', '7T', '7L52', '6T', '6L52', '5T', '5L53', '4T', '4L53', '3L53'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M'],\n      foresight: ['7L12', '6L12', '5L20', '4L20', '3L20'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L55', '8M', '8L55'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudbomb: ['7L22', '6L22', '5L25', '4L25'],\n      muddywater: ['9M', '9L40', '8M', '8L40', '7L38', '6L37', '5L37', '4L37', '3L37'],\n      mudshot: ['9M', '9L0', '8M', '8L0', '7L1', '6L16', '5L16', '4L16', '3L16'],\n      mudslap: ['9M', '7L1', '6L1', '5L1', '4T', '4L1', '3T', '3L1'],\n      mudsport: ['3L25'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L12', '8M', '8L12', '7M', '7L32', '6M', '6L32', '5M', '5L42', '4M', '4L42', '3M', '3L42'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      rockslide: ['9M', '9L25', '8M', '8L25', '7M', '7L28', '6M', '6L28', '5M', '4M', '3T'],\n      rocksmash: ['9L1', '8L1', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L9', '8L9'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandtomb: ['9M', '8M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      screech: ['9L45', '8M', '8L45'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      supersonic: ['9L15', '8L15'],\n      surf: ['9M', '8M', '8L1', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L30', '8L30', '7L42', '6L31', '5L31', '4L31', '3L31'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '8M', '7T', '6T'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterpledge: ['9M', '8T', '7T', '6T', '5T'],\n      waterpulse: ['9M', '9L20', '8L20', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '8M', '4M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'swampert',\n    {\n      amnesia: ['9M', '9L35', '8M', '8L35'],\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      bide: ['7L18', '6L15', '5L15', '4L15', '3L15'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '8M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M'],\n      darkestlariat: ['8M'],\n      defensecurl: ['3T'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L1', '8M', '8L1', '7M', '7L51', '6M', '6L51', '5M', '5L52', '5S0', '4M', '4L52', '3M', '3L52'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L56', '8L56', '7T', '7L56', '6T', '6L56', '5T', '5L61', '4T', '4L61', '3L61'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M', '8T'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foresight: ['7L12', '6L12', '5L20', '4L20', '3L20'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hammerarm: ['9L1', '8L1', '7L1', '6L1', '5L69', '5S0', '4L69'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      hydrocannon: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      hydropump: ['9M', '9L63', '8M', '8L63', '5S0'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '5S0', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      knockoff: ['9M'],\n      liquidation: ['9M', '8M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudbomb: ['7L22', '6L22', '5L25', '4L25'],\n      muddywater: ['9M', '9L42', '8M', '8L42', '7L39', '6L39', '5L39', '4L39', '3L39'],\n      mudshot: ['9M', '9L1', '8M', '8L1', '7L1', '6L16', '5L16', '4L16', '3L16'],\n      mudslap: ['9M', '7L1', '6L1', '5L1', '4T', '4L1', '3T', '3L1'],\n      mudsport: ['3L25'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      poisonjab: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L12', '8M', '8L12', '7M', '7L32', '6M', '6L32', '5M', '5L46', '4M', '4L46', '3M', '3L46'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '9L25', '8M', '8L25', '7M', '7L28', '6M', '6L28', '5M', '4M', '3T'],\n      rocksmash: ['9L1', '8L1', '6M', '5M', '4M', '3M'],\n      rockthrow: ['9L9', '8L9'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandtomb: ['9M', '8M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['9L49', '8M', '8L49'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      supersonic: ['9L15', '8L15'],\n      surf: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L30', '8L30', '7L44', '6L31', '5L31', '4L31', '3L31'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['9M', '8M', '7T', '6T'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterpledge: ['9M', '8T', '7T', '6T', '5T'],\n      waterpulse: ['9M', '9L20', '8L20', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '4M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'poochyena',\n    {\n      assurance: ['9L22', '7L22', '6L22', '5L29', '4L29'],\n      astonish: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bite: ['9L10', '7L10', '6L10', '5L13', '4L13', '3L13'],\n      bodyslam: ['3T'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4E', '3E'],\n      crunch: ['9M', '9L31', '7L34', '6L37', '5L53', '4L53', '3L41'],\n      darkpulse: ['9M', '7M', '6M', '5T', '5D', '4M'],\n      dig: ['9M', '6M', '5M', '4M', '3M', '3S0'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      embargo: ['7M', '7L28', '6M', '6L28', '5M', '5L41', '4M', '4L41'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '7E', '6E', '5E', '4E'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      healbell: ['3S0'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      howl: ['9L4', '7L4', '6L4', '5L5', '5D', '4L5', '3L5', '3S0'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      icefang: ['9M', '7E', '6E', '5E', '4E'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      lashout: ['9M'],\n      leer: ['9L13', '7E', '6E', '5E', '4E', '3E'],\n      mefirst: ['7E', '6E', '5E', '4E'],\n      mimic: ['3T'],\n      mudslap: ['9M', '4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L13', '6L13', '5L17', '4L17', '3L17'],\n      payback: ['7M', '6M', '5M', '4M'],\n      playrough: ['9M', '9L44', '7L46', '7E', '6E'],\n      poisonfang: ['9E', '7E', '6E', '5E', '5D', '4E', '3E', '3S0'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      psychup: ['3T'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '9L16', '7M', '7L16', '6M', '6L16', '5M', '5L21', '4M', '4L21', '3M', '3L21'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L7', '7L7', '6L7', '5L9', '4L9', '3L9'],\n      scaryface: ['9M', '9L25', '7L25', '6L25', '5L33', '4L33', '3L29'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '7E', '6M', '6E', '5T', '5E', '4M', '3T'],\n      snarl: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L40', '7L43', '7E', '6L40', '6E', '5L49', '5E', '4T', '4L49', '4E'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      swagger: ['9L19', '7M', '7L19', '6M', '6L19', '5M', '5L25', '4M', '4L25', '3T', '3L25'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L36', '7L40', '6L34', '5L45', '4L45', '3L33'],\n      taunt: ['9M', '9L28', '7M', '7L31', '6M', '6L31', '5M', '5L37', '4M', '4L37', '3M', '3L37'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M', '3L45'],\n      thunderfang: ['9M', '7E', '6E', '5E', '4E'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      yawn: ['9L34', '7L37', '7E', '6E', '5E', '4E', '3E']\n    }\n  ],\n  [\n    'mightyena',\n    {\n      assurance: ['9L24', '7L24', '6L24', '5L32', '4L32'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bite: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      bodyslam: ['9M', '3T'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['9M', '9L1', '7L1', '7S0', '6L1', '3L47'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      embargo: ['7M', '7L32', '6M', '6L32', '5M', '5L47', '4M', '4L47'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '9L1', '7L1', '7S0'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      howl: ['9L13', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      icefang: ['9M', '9L1', '7L1', '7S0'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lashout: ['9M'],\n      leer: ['9L13'],\n      mimic: ['3T'],\n      mudslap: ['9M', '4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L13', '6L13', '5L17', '4L17', '3L17'],\n      payback: ['7M', '6M', '5M', '4M'],\n      playrough: ['9M', '9L56', '7L56'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      psychup: ['3T'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '9L16', '7M', '7L16', '6M', '6L16', '5M', '5L22', '4M', '4L22', '3M', '3L22'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      scaryface: ['9M', '9L28', '7L28', '6L28', '5L37', '4L37', '3L32'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '9L0', '7M', '7L1', '6M', '6L18', '5M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L52', '7L52', '6L48', '5L62', '4T', '4L62'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      swagger: ['9L20', '7M', '7L20', '6M', '6L20', '5M', '5L27', '4M', '4L27', '3T', '3L27'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L48', '7L48', '6L40', '5L52', '4L52', '3L37'],\n      taunt: ['9M', '9L36', '7M', '7L36', '6M', '6L36', '5M', '5L42', '4M', '4L42', '3M', '3L42'],\n      terablast: ['9M'],\n      thief: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L57', '4M', '4L57', '3M', '3L52'],\n      throatchop: ['9M', '7T'],\n      thunderfang: ['9M', '9L1', '7L1', '7S0'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      yawn: ['9L44', '7L44']\n    }\n  ],\n  [\n    'zigzagoon',\n    {\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      babydolleyes: ['8L15', '7L12', '6L11'],\n      bellydrum: ['8L33', '7L37', '6L37', '5L45', '4L41', '3L41'],\n      bestow: ['7L25', '6L25', '5L33'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['8M', '7E', '6E', '5E', '4E', '3E'],\n      confide: ['7M', '6M'],\n      covet: ['8L9', '7T', '7L23', '6T', '6L23', '5T', '5L29', '4L29', '3L29'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8L36', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '4M', '3T'],\n      extremespeed: ['8E', '7E', '3S1'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['8L30', '7L29', '6L29', '5L37', '4L33', '3L33'],\n      fling: ['8M', '8L27', '7M', '7L41', '6M', '6L41', '5M', '5L49', '4M', '4L45'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      gunkshot: ['8M', '7T', '6T', '5T', '4T'],\n      headbutt: ['8L12', '7L11', '6L9', '5L9', '4T', '4L9', '3L9'],\n      helpinghand: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      lastresort: ['7T', '6T', '5T', '5D', '4T'],\n      mimic: ['3T'],\n      mudshot: ['8M'],\n      mudslap: ['7E', '6E', '5E', '4T', '4E', '3T'],\n      mudsport: ['7L17', '6L17', '5L21', '4L21', '3L21'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L13', '6L13', '5L17', '4L17', '3L17'],\n      pinmissile: ['8M', '8L18', '7L19', '6L19', '5L25', '4L25', '3L25'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '6E', '5E', '4E', '3E'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L21', '7M', '7L35', '6M', '6L35', '5M', '5L41', '4M', '4L37', '3M', '3L37'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockclimb: ['7E', '6E', '5E'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L3', '7L7', '6L7', '5L13', '4L13', '3L13'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      simplebeam: ['8E', '7E', '6E', '5E'],\n      sleeptalk: ['8M', '7M', '7E', '6M', '6E', '5T', '5E', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      surf: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '4T', '3T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1', '3S0', '3S1'],\n      tailslap: ['8M'],\n      tailwhip: ['8L6', '7L5', '6L5', '5L5', '4L5', '3L5', '3S0', '3S1'],\n      takedown: ['8L24', '7L31', '6L31'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      tickle: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'zigzagoongalar',\n    {\n      assurance: ['8M'],\n      attract: ['8M'],\n      babydolleyes: ['8L15'],\n      blizzard: ['8M'],\n      bodyslam: ['8M'],\n      counter: ['8L30'],\n      dig: ['8M'],\n      doubleedge: ['8L36'],\n      endure: ['8M'],\n      facade: ['8M'],\n      faketears: ['8M'],\n      fling: ['8M'],\n      grassknot: ['8M'],\n      gunkshot: ['8M'],\n      headbutt: ['8L12'],\n      helpinghand: ['8M'],\n      hypervoice: ['8M'],\n      icebeam: ['8M'],\n      icywind: ['8M'],\n      irontail: ['8M'],\n      knockoff: ['8E'],\n      lashout: ['8T'],\n      leer: ['8L1'],\n      lick: ['8L6'],\n      mudshot: ['8M'],\n      partingshot: ['8E'],\n      payback: ['8M'],\n      pinmissile: ['8M', '8L18'],\n      protect: ['8M'],\n      quickguard: ['8E'],\n      raindance: ['8M'],\n      rest: ['8M', '8L21'],\n      retaliate: ['8M'],\n      round: ['8M'],\n      sandattack: ['8L3'],\n      scaryface: ['8M', '8L27'],\n      screech: ['8M'],\n      seedbomb: ['8M'],\n      shadowball: ['8M'],\n      sleeptalk: ['8M'],\n      snarl: ['8M', '8L9'],\n      snore: ['8M'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      surf: ['8M'],\n      swift: ['8M'],\n      tackle: ['8L1'],\n      takedown: ['8L24'],\n      taunt: ['8M', '8L33'],\n      thief: ['8M'],\n      thunder: ['8M'],\n      thunderbolt: ['8M'],\n      thunderwave: ['8M'],\n      trick: ['8M'],\n      whirlpool: ['8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'linoone',\n    {\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      babydolleyes: ['8L1', '6S0'],\n      bellydrum: ['8L43', '7L43', '6L43', '5L59', '4L53', '3L53'],\n      bestow: ['7L27', '6L27', '5L41'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      covet: ['8L9', '7T', '7L24', '6T', '6L24', '5T', '5L35', '4L35', '3L35'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8L48', '7L35', '6L35', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '4M', '3T'],\n      extremespeed: ['6S0'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['8L38'],\n      fling: ['8M', '8L33', '7M', '7L48', '6M', '6L48', '5M', '5L65', '4M', '4L59'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      furyswipes: ['8L18', '7L19', '6L19', '5L29', '4L29', '3L29'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      gunkshot: ['8M', '7T', '6T', '5T', '4T'],\n      headbutt: ['8L12', '7L11', '6L1', '5L1', '4T', '4L1', '3L1'],\n      helpinghand: ['8M', '7T', '6T', '6S0', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['8L15', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudshot: ['8M'],\n      mudslap: ['4T', '3T'],\n      mudsport: ['7L17', '6L17', '5L23', '4L23', '3L23'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L13', '6L13', '5L17', '4L17', '3L17'],\n      pinmissile: ['8M', '8L1'],\n      playrough: ['8M', '7L1', '6L1'],\n      protect: ['8M', '7M', '6M', '6S0', '5M', '4M', '3M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L23', '7M', '7L40', '6M', '6L40', '5M', '5L53', '4M', '4L47', '3M', '3L47'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      rototiller: ['7L1', '6L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L1', '6L1', '5L13', '4L13', '3L13'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slash: ['8L0', '7L32', '6L32', '5L47', '4L41', '3L41'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      surf: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '4T', '3T'],\n      switcheroo: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      tailslap: ['8M'],\n      tailwhip: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['8L28'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['8M', '7T'],\n      thunder: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'linoonegalar',\n    {\n      assurance: ['8M'],\n      attract: ['8M'],\n      babydolleyes: ['8L1'],\n      blizzard: ['8M'],\n      bodypress: ['8M'],\n      bodyslam: ['8M'],\n      counter: ['8L38'],\n      dig: ['8M'],\n      doubleedge: ['8L48'],\n      endure: ['8M'],\n      facade: ['8M'],\n      faketears: ['8M'],\n      fling: ['8M'],\n      furyswipes: ['8L18'],\n      gigaimpact: ['8M'],\n      grassknot: ['8M'],\n      gunkshot: ['8M'],\n      headbutt: ['8L12'],\n      helpinghand: ['8M'],\n      honeclaws: ['8L15'],\n      hyperbeam: ['8M'],\n      hypervoice: ['8M'],\n      icebeam: ['8M'],\n      icywind: ['8M'],\n      irontail: ['8M'],\n      lashout: ['8T'],\n      leer: ['8L1'],\n      lick: ['8L1'],\n      mudshot: ['8M'],\n      nightslash: ['8L0'],\n      payback: ['8M'],\n      pinmissile: ['8M', '8L1'],\n      protect: ['8M'],\n      raindance: ['8M'],\n      rest: ['8M', '8L23'],\n      retaliate: ['8M'],\n      round: ['8M'],\n      sandattack: ['8L1'],\n      scaryface: ['8M', '8L33'],\n      screech: ['8M'],\n      seedbomb: ['8M'],\n      shadowball: ['8M'],\n      shadowclaw: ['8M'],\n      sleeptalk: ['8M'],\n      snarl: ['8M', '8L9'],\n      snore: ['8M'],\n      stompingtantrum: ['8M'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      surf: ['8M'],\n      swift: ['8M'],\n      switcheroo: ['8L1'],\n      tackle: ['8L1'],\n      takedown: ['8L28'],\n      taunt: ['8M', '8L43'],\n      thief: ['8M'],\n      throatchop: ['8M'],\n      thunder: ['8M'],\n      thunderbolt: ['8M'],\n      thunderwave: ['8M'],\n      trick: ['8M'],\n      whirlpool: ['8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'obstagoon',\n    {\n      assurance: ['8M'],\n      attract: ['8M'],\n      babydolleyes: ['8L1'],\n      blizzard: ['8M'],\n      bodypress: ['8M'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M'],\n      bulkup: ['8M'],\n      closecombat: ['8M'],\n      counter: ['8L42'],\n      crosschop: ['8L1'],\n      crosspoison: ['8M'],\n      dig: ['8M'],\n      doubleedge: ['8L56'],\n      endure: ['8M'],\n      facade: ['8M'],\n      faketears: ['8M'],\n      firepunch: ['8M'],\n      fling: ['8M'],\n      focusenergy: ['8M'],\n      furyswipes: ['8L18'],\n      gigaimpact: ['8M'],\n      grassknot: ['8M'],\n      gunkshot: ['8M'],\n      headbutt: ['8L12'],\n      helpinghand: ['8M'],\n      honeclaws: ['8L15'],\n      hyperbeam: ['8M'],\n      hypervoice: ['8M'],\n      icebeam: ['8M'],\n      icepunch: ['8M'],\n      icywind: ['8M'],\n      irondefense: ['8M'],\n      irontail: ['8M'],\n      lashout: ['8T'],\n      leer: ['8L1'],\n      lick: ['8L1'],\n      lowkick: ['8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudshot: ['8M'],\n      nightslash: ['8L1'],\n      obstruct: ['8L0'],\n      payback: ['8M'],\n      pinmissile: ['8M', '8L1'],\n      protect: ['8M'],\n      raindance: ['8M'],\n      rest: ['8M', '8L23'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['8M'],\n      round: ['8M'],\n      sandattack: ['8L1'],\n      scaryface: ['8M', '8L35'],\n      screech: ['8M'],\n      seedbomb: ['8M'],\n      shadowball: ['8M'],\n      shadowclaw: ['8M'],\n      sleeptalk: ['8M'],\n      snarl: ['8M', '8L9'],\n      snore: ['8M'],\n      stompingtantrum: ['8M'],\n      submission: ['8L1'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      surf: ['8M'],\n      swift: ['8M'],\n      switcheroo: ['8L1'],\n      tackle: ['8L1'],\n      takedown: ['8L28'],\n      taunt: ['8M', '8L49'],\n      thief: ['8M'],\n      throatchop: ['8M'],\n      thunder: ['8M'],\n      thunderbolt: ['8M'],\n      thunderpunch: ['8M'],\n      thunderwave: ['8M'],\n      trick: ['8M'],\n      whirlpool: ['8M'],\n      workup: ['8M'],\n      xscissor: ['8M']\n    }\n  ],\n  [\n    'wurmple',\n    {\n      bugbite: ['7T', '7L15', '6T', '6L15', '5T', '5L15', '5D', '4T', '4L15'],\n      electroweb: ['7T', '6T', '5T'],\n      poisonsting: ['7L5', '6L5', '5L5', '5D', '4L5', '3L5'],\n      snore: ['7T', '6T', '5T', '5D', '4T'],\n      stringshot: ['7L1', '6L1', '5L1', '4T', '4L1', '3L1'],\n      tackle: ['7L1', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'silcoon',\n    {\n      bugbite: ['7T', '6T', '5T', '4T'],\n      electroweb: ['7T', '6T', '5T'],\n      harden: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      irondefense: ['7T', '6T', '5T', '4T'],\n      stringshot: ['4T']\n    }\n  ],\n  [\n    'beautifly',\n    {\n      absorb: ['7L12', '6L1', '5L1', '4L1', '3L1'],\n      acrobatics: ['7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['7L20', '6L20', '4T'],\n      attract: ['7M', '7L27', '6M', '6L27', '5M', '5L31', '4M', '4L31', '3M', '3L31'],\n      bugbite: ['7T', '6T', '5T', '4T'],\n      bugbuzz: ['7L35', '6L35', '5L41', '4L41'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      defog: ['7T', '4M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      electroweb: ['7T', '6T', '5T'],\n      endure: ['4M', '3T'],\n      energyball: ['7M', '6M', '5M', '4M'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigadrain: ['7T', '7L32', '6T', '6L32', '5T', '5L38', '4M', '4L38', '3M', '3L38'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      gust: ['7L1', '6L1', '5L13', '4L13', '3L13'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['7M', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      laserfocus: ['7T'],\n      megadrain: ['7L22', '6L22', '5L24', '4L24', '3L24'],\n      mimic: ['3T'],\n      morningsun: ['7L17', '6L17', '5L20', '4L20', '3L20'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      psychic: ['7M', '6M', '5M', '4M', '3M'],\n      quiverdance: ['7L40', '6L40', '5L45'],\n      rage: ['7L37', '6L37'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['7L25', '6L25', '5L34', '4M', '4L34', '3L34'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['7M', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      stunspore: ['7L15', '6L15', '5L17', '4L17', '3L17'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      thief: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uturn: ['7M', '6M', '5M', '4M'],\n      venoshock: ['7M', '6M', '5M'],\n      whirlwind: ['7L30', '6L27', '5L27', '4L27', '3L27']\n    }\n  ],\n  [\n    'cascoon',\n    {\n      bugbite: ['7T', '6T', '5T', '4T'],\n      electroweb: ['7T', '6T', '5T'],\n      harden: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      irondefense: ['7T', '6T', '5T', '4T'],\n      stringshot: ['4T']\n    }\n  ],\n  [\n    'dustox',\n    {\n      acrobatics: ['7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['4T'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bugbite: ['7T', '6T', '5T', '4T'],\n      bugbuzz: ['7L35', '6L35', '5L41', '4L41'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confusion: ['7L12', '6L1', '5L1', '4L1', '3L1'],\n      defog: ['7T', '4M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      electroweb: ['7T', '6T', '5T'],\n      endure: ['4M', '3T'],\n      energyball: ['7M', '6M', '5M', '4M'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigadrain: ['7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      gust: ['7L1', '6L1', '5L13', '4L13', '3L13'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['7M', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      laserfocus: ['7T'],\n      lightscreen: ['7M', '7L27', '6M', '6L27', '5M', '5L31', '4M', '4L31', '3M', '3L31'],\n      mimic: ['3T'],\n      moonlight: ['7L17', '6L17', '5L20', '4L20', '3L20'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      poisonpowder: ['7L15', '6L15'],\n      protect: ['7M', '7L37', '6M', '6L17', '5M', '5L17', '4M', '4L17', '3M', '3L17'],\n      psybeam: ['7L22', '6L22', '5L24', '4L24', '3L24'],\n      psychic: ['7M', '6M', '5M', '4M', '3M'],\n      quiverdance: ['7L40', '6L40', '5L45'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['7L25', '6L25', '5L34', '4M', '4L34', '3L34'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['7M', '6M', '5M', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['7M', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      thief: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '7L32', '6M', '6L32', '5M', '5L38', '4M', '4L38', '3M', '3L38'],\n      twister: ['4T'],\n      uturn: ['7M', '6M', '5M', '4M'],\n      venoshock: ['7M', '7L20', '6M', '6L20', '5M'],\n      whirlwind: ['7L30', '6L27', '5L27', '4L27', '3L27']\n    }\n  ],\n  [\n    'lotad',\n    {\n      absorb: ['9L3', '8L3', '7L6', '6L5', '5L5', '5D', '4L5', '3L7', '3S0'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      bubble: ['7L9', '6L9'],\n      bubblebeam: ['9L20', '8L20', '7L21', '6L21', '5L25', '4L25'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      disarmingvoice: ['9M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '9L43', '8M', '8L43', '7M', '7L36', '6M', '6L36', '5M', '5L45', '4M', '4L43'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9L16', '8L16', '7E', '6E', '5E', '4E', '3E'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '9L28', '8M', '8L28', '7T', '7L30', '7E', '6T', '6L30', '6E', '5T', '5E', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '8L1', '7L3', '6L3', '5L3', '4L3', '3L3', '3S0'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      leechseed: ['9L24', '8E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '8L12', '7L18', '6L18', '5L19', '4L19', '3L43'],\n      mimic: ['3T'],\n      mist: ['9L9', '8L9', '7L15', '6L11', '5L11', '4L11', '3L21'],\n      muddywater: ['9M'],\n      naturalgift: ['7L12', '6L12', '5L15', '4M', '4L15'],\n      naturepower: ['8L24', '7M', '7L24', '6M', '6L7', '5L7', '4L7', '3L13'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '9L33', '8M', '8L33', '7M', '7L27', '6M', '6L27', '5M', '5L37', '4M', '4L35', '3M', '3L31'],\n      razorleaf: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      takedown: ['9M'],\n      teeterdance: ['9E', '8E', '7E', '6E', '5E'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      tickle: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      watergun: ['9L6', '8L6', '7E', '6E', '5E', '4E', '3E'],\n      waterpulse: ['9M', '7T', '6T', '5D', '4M', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '4M'],\n      zenheadbutt: ['9M', '9L38', '8M', '8L38', '7T', '7L33', '6T', '6L31', '5T', '5L31', '4T', '4L27']\n    }\n  ],\n  [\n    'lombre',\n    {\n      absorb: ['9L1', '8L1', '7L6', '6L5', '5L5', '4L5', '3L7'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bubble: ['7L9', '6L9'],\n      bubblebeam: ['9L24', '8L24', '7L24', '6L24', '5L25', '4L25'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      disarmingvoice: ['9M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dynamicpunch: ['3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '9L57', '8M', '8L57', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1', '7L16', '6L11', '5L11', '4L11', '3L19'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      flail: ['9L1', '8L1'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furyswipes: ['9L18', '8L18', '7L12', '6L12', '5L15', '4L15', '3L25'],\n      gigadrain: ['9M', '9L36', '8M', '8L36', '7T', '6T', '5T', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '8L1', '7L3', '6L3', '5L3', '4L3', '3L3'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '9L64', '8M', '8L64', '7L44', '6L44', '5L45', '4L43', '3L49'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      knockoff: ['9M', '9L1', '8L1', '7T', '7L36', '6T', '6L36'],\n      leechseed: ['9L30'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '8L12'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mist: ['9L9', '8L9'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['8L30', '7M', '7L28', '6M', '6L7', '5L7', '4L7', '3L13'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '8L43', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      teeterdance: ['9L1', '8L1'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M', '3L37'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M', '7T', '7L32', '6T', '6L32', '5T', '5L37', '4T', '4L35', '3L43'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      watersport: ['7L20', '6L19', '5L19', '4L19', '3L31'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '4M'],\n      zenheadbutt: ['9M', '9L50', '8M', '8L50', '7T', '7L40', '6T', '6L31', '5T', '5L31', '4T', '4L27']\n    }\n  ],\n  [\n    'ludicolo',\n    {\n      absorb: ['9L1', '8L1', '3L1'],\n      amnesia: ['9M', '8M'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bubblebeam: ['9L1', '8L1'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      disarmingvoice: ['9M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dynamicpunch: ['3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1', '5S0'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      flail: ['9L1', '8L1'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furyswipes: ['9L1', '8L1'],\n      gigadrain: ['9M', '8M', '8L1', '7T', '6T', '5T', '5S0', '5S1', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '9L1', '8M', '8L1', '5S0'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '5S0', '5S1', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      knockoff: ['9M', '9L1', '8L1', '7T', '6T'],\n      leafstorm: ['9M', '8M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['9M', '8M', '3T'],\n      mimic: ['3T'],\n      mist: ['9L1', '8L1'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['8L1', '7M', '7L1', '6M', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M', '5S1'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['3T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '5S1', '4M', '3M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      teeterdance: ['9L1', '8L1'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '4M'],\n      zenheadbutt: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'seedot',\n    {\n      absorb: ['9L3', '8L3'],\n      amnesia: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      astonish: ['9L6', '8L6'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      beatup: ['8M', '7E', '6E', '5E'],\n      bide: ['7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      bodyslam: ['9M', '8M', '3T'],\n      bulletseed: ['9M', '8M', '7E', '6E', '5E', '5D', '4M', '3M', '3S1'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      defensecurl: ['3T'],\n      defog: ['9E', '8E', '7T', '7E', '6E', '5E'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      explosion: ['9L33', '8L33', '7M', '7L33', '6M', '6L33', '5M', '5L43', '4M', '4L43', '3T', '3L43'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M', '4E', '3E'],\n      flash: ['6M', '5M', '4M', '3M'],\n      foulplay: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T', '4M', '3M', '3S1'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M', '7E', '6E'],\n      growth: ['9L9', '8L9', '7L9', '6L7', '5L7', '5D', '4L7', '3L7', '3S0'],\n      harden: ['9L1', '8L1', '7L3', '6L3', '5L3', '4L3', '3L3', '3S0'],\n      headbutt: ['9L21', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      leafstorm: ['9M'],\n      leechseed: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L15', '8L15'],\n      mimic: ['3T'],\n      nastyplot: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      naturepower: ['8L21', '7M', '7L15', '6M', '6L13', '5L13', '4L13', '3L13'],\n      nightslash: ['9E', '8E'],\n      payback: ['9L18', '8M', '8L18'],\n      powerswap: ['8M', '7E', '6E', '5E', '4E'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      quickattack: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      raindance: ['9M'],\n      razorwind: ['7E', '6E', '5E', '4E', '3E'],\n      refresh: ['3S1'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['9L12', '8L12', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M', '3S1'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      selfdestruct: ['8M', '3T'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L30', '8L30'],\n      sunnyday: ['9M', '9L24', '8M', '8L24', '7M', '7L27', '6M', '6L27', '5M', '5L31', '4M', '4L31', '3M', '3L31'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L27', '8L27', '7T', '7L21', '6T', '6L21', '5T', '5L21', '4T', '4L21', '3L21'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      worryseed: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E']\n    }\n  ],\n  [\n    'nuzleaf',\n    {\n      absorb: ['9L1', '8L1'],\n      aircutter: ['9M', '9L1', '8L1'],\n      amnesia: ['9M', '8M'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      beatup: ['8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defensecurl: ['3T'],\n      defog: ['7T'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      explosion: ['9L1', '8L1', '7M', '6M', '5M', '4M', '3T'],\n      extrasensory: ['9L43', '8L43', '7L36', '6L36', '5L49', '4L49', '3L49'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1', '7L12', '6L12', '5L19', '4L19', '3L19'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M'],\n      feintattack: ['7L24', '6L24', '5L31', '4L31', '3L31'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L9', '8L9', '7L6', '6L6', '5L7', '4L7', '3L7'],\n      harden: ['9L1', '8L1', '7L3', '6L3', '5L3', '4L3', '3L3'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      knockoff: ['9M'],\n      lashout: ['9M', '8T'],\n      leafblade: ['9L57', '8M', '8L57', '7L28', '6L28'],\n      leafstorm: ['9M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L18', '8L18'],\n      megakick: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      naturepower: ['8L30', '7M', '7L16', '6M', '6L9', '5L13', '4L13', '3L13'],\n      payback: ['9L24', '8M', '8L24', '7M', '6M', '5M', '4M'],\n      pound: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      powerswap: ['8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M'],\n      razorleaf: ['9L0', '8L0', '7L1', '6L1', '5L1', '4L1'],\n      razorwind: ['7L20', '6L20', '5L37', '4L37', '3L37'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9L12', '8L12', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      selfdestruct: ['8M', '3T'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      solarblade: ['9M', '8M'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L50', '8L50'],\n      sunnyday: ['9M', '9L36', '8M', '8L36', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['9L1', '8L1', '7M', '7L32', '6M', '6L32', '5M', '5L43', '4M', '4L43', '3T', '3L43'],\n      swift: ['9M', '8M', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L30', '8L1', '7T', '6T', '5T', '4T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      torment: ['9L1', '8L1', '7M', '7L9', '6M', '6L16', '5M', '5L25', '4M', '4L25', '3M', '3L25'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      weatherball: ['9M'],\n      worryseed: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'shiftry',\n    {\n      absorb: ['9L1', '8L1'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['9M', '9L1', '8L1', '4T'],\n      airslash: ['9M', '8M'],\n      amnesia: ['9M', '8M'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      beatup: ['9L1', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bulletseed: ['9M', '8M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defensecurl: ['3T'],\n      defog: ['7T', '4M'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      explosion: ['9L1', '8L1', '7M', '6M', '5M', '4M', '3T'],\n      extrasensory: ['9L1', '8L1'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L1', '8L1'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M'],\n      feintattack: ['7L1', '6L1', '5L1', '4L1'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L1', '8L1', '3L1'],\n      harden: ['9L1', '8L1', '3L1'],\n      headbutt: ['4T'],\n      heatwave: ['9M', '8M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '9L1', '8M', '8L1', '7L32', '6L32'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lashout: ['9M', '8T'],\n      leafblade: ['9L0', '8M', '8L1'],\n      leafstorm: ['9M', '8M', '7L44', '6L44', '5L49', '4L49'],\n      leaftornado: ['8L0', '7L20', '6L19', '5L19'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L1', '8L1'],\n      megakick: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      nastyplot: ['9M', '8M', '7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      naturepower: ['8L1', '7M', '6M', '3L1'],\n      ominouswind: ['4T'],\n      payback: ['9L1', '8M', '8L1', '7M', '6M', '5M', '4M'],\n      petalblizzard: ['9M'],\n      pound: ['3L1'],\n      powerswap: ['8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M'],\n      razorleaf: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      revenge: ['8M'],\n      reversal: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9L1', '8L1', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      selfdestruct: ['8M', '3T'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      silverwind: ['4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      solarblade: ['9M', '8M'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L1', '8L1', '4T'],\n      sunnyday: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['9L1', '8L1', '7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L1', '8L1', '7T', '6T', '5T', '4T'],\n      tackle: ['9L1', '8L1'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '8M', '7T'],\n      torment: ['9L1', '8L1', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      twister: ['4T'],\n      upperhand: ['9M'],\n      uproar: ['9M'],\n      vacuumwave: ['9M'],\n      weatherball: ['9M'],\n      whirlwind: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      willowisp: ['9M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'taillow',\n    {\n      aerialace: ['7M', '7L21', '6M', '6L21', '5M', '5L34', '4M', '4L34', '3M', '3L34'],\n      agility: ['7L29', '6L29', '5L43', '4L43', '3L43'],\n      aircutter: ['4T'],\n      airslash: ['7L33', '6L33', '5L53', '4L53'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      boomburst: ['7E', '6E'],\n      bravebird: ['7L41', '7E', '6L41', '6E', '5E', '5D', '4E'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      defog: ['7T', '7E', '6E', '5E', '4M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7L17', '6M', '6L17', '5M', '5L19', '4M', '4L19', '3M', '3L19'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['7T', '7L37', '6T', '6L26', '5T', '5L26', '4T', '4L26', '3L26'],\n      endure: ['5D', '4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['3S0'],\n      fly: ['7M', '6M', '5M', '4M', '3M'],\n      focusenergy: ['7L5', '6L4', '5L4', '4L4', '3L4', '3S0'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      growl: ['7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      heatwave: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hurricane: ['7E'],\n      mimic: ['3T'],\n      mirrormove: ['7E', '6E', '5E', '5D', '4E', '3E'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      peck: ['7L1', '6L1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      pluck: ['5M', '4M'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '6E', '5E', '4E', '3E'],\n      quickattack: ['7L9', '6L7', '5L8', '4L8', '3L8'],\n      quickguard: ['7L25', '6L25'],\n      rage: ['7E', '6E', '5E', '4E', '3E'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7E', '6E', '5E', '4E', '3E'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['7L45'],\n      roost: ['7M', '7E', '6M', '6E', '5T', '5E', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      skyattack: ['7T', '7E', '6T', '6E', '5E', '4E', '3T', '3E'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      steelwing: ['7M', '7E', '6M', '6E', '5E', '4M', '3M'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '6M', '5M', '4M', '3M'],\n      supersonic: ['7E', '6E', '5E', '4E', '3E'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      tailwind: ['7T', '6T', '5T', '5D', '4T'],\n      thief: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uturn: ['7M', '6M', '5M', '4M'],\n      whirlwind: ['7E', '6E', '5E', '4E'],\n      wingattack: ['7L13', '6L13', '5L13', '4L13', '3L13'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'swellow',\n    {\n      aerialace: ['7M', '7L21', '6M', '6L21', '5M', '5L38', '4M', '4L38', '3M', '3L38'],\n      agility: ['7L33', '6L33', '5L49', '4L49', '3L49', '3S0'],\n      aircutter: ['4T'],\n      airslash: ['7L1', '6L1', '5L61', '4L61'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['3S0'],\n      bravebird: ['7L1', '6L1'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      defog: ['7T', '4M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '7L17', '6M', '6L17', '5M', '5L19', '4M', '4L19', '3M', '3L19'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['7T', '7L45', '6T', '6L28', '5T', '5L28', '4T', '4L28', '3L28'],\n      endure: ['4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M', '3S0'],\n      fly: ['7M', '6M', '5M', '4M', '3M'],\n      focusenergy: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      growl: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      heatwave: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['7M', '6M', '5M', '4M', '3M'],\n      laserfocus: ['7T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      peck: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      pluck: ['7L1', '6L1', '5M', '5L1', '4M', '4L1'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      quickattack: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      quickguard: ['7L27', '6L27'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['7L57'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      skyattack: ['7T', '6T', '5T', '4T', '3T', '3S0'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      steelwing: ['7M', '6M', '4M', '3M'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      thief: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uturn: ['7M', '6M', '5M', '4M'],\n      wingattack: ['7L13', '6L13', '5L13', '4L13', '3L13'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'wingull',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '9E', '8E', '7M', '7L29', '6M', '6L29', '5M', '5L42', '4M', '4L42', '3M'],\n      agility: ['9M', '9L26', '8M', '8L26', '7L36', '7E', '6L36', '6E', '5L37', '5E', '4L37', '4E', '3L55', '3E'],\n      aircutter: ['9M', '9E', '8E', '7L22', '6L22', '5L33', '4T'],\n      airslash: ['9M', '9L30', '8M', '8L30', '7L40', '6L40', '5L46', '4L47'],\n      aquaring: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bravebird: ['9M'],\n      brine: ['8M', '7E', '6E', '5E', '4M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      defog: ['7T', '4M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      gust: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '9L45', '8M', '8L45', '7L43', '6L43', '5L49'],\n      hydropump: ['9M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      knockoff: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      liquidation: ['9M', '8M', '7T'],\n      mimic: ['3T'],\n      mist: ['9L35', '8L35', '7L12', '7E', '6L12', '6E', '5L14', '5E', '4L16', '4E', '3L21', '3E'],\n      muddywater: ['9M'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L26', '6L26', '5L30', '4L34', '3L43'],\n      quickattack: ['9L5', '8L5', '7L19', '6L19', '5L22', '4L24', '3L31'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roost: ['9L40', '8L40', '7M', '7L33', '7E', '6M', '6L26', '6E', '5T', '5L26', '5E', '4M', '4L29'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['7T', '6T', '5D', '4M', '3M'],\n      skyattack: ['7T', '6T', '3T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      soak: ['9E', '8E', '7E', '6E'],\n      steelwing: ['8M', '7M', '6M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      supersonic: ['9L10', '8L10', '7L5', '6L5', '5L6', '4L6', '3L7'],\n      surf: ['9M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['9E', '8E', '7E', '6E', '5E', '5D', '4T', '4E', '3E'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      waterfall: ['9M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      waterpulse: ['9M', '9L20', '8L20', '7T', '7L15', '6T', '6L15', '5L17', '4M', '4L19', '3M'],\n      watersport: ['7E', '6E', '5E', '4E', '3E'],\n      whirlpool: ['9M'],\n      wideguard: ['9E', '8E', '7E', '6E'],\n      wingattack: ['9L15', '8L15', '7L8', '6L8', '5L9', '4L11', '3L13']\n    }\n  ],\n  [\n    'pelipper',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L1', '8M', '8L1'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9L1', '8M', '8L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M'],\n      bravebird: ['9M', '8M'],\n      brine: ['8M', '7L22', '6L28', '5L34', '4M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      defog: ['7T', '4M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      featherdance: ['9M'],\n      fling: ['9M', '9L34', '8M', '8L34', '7M', '7L28', '6M', '6L39', '5M', '5L43', '4M', '4L43'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M', '9L55', '9S0', '8M', '8L55', '7L1', '6L1', '5L63'],\n      hydropump: ['9M', '9L62', '8M', '8L62', '7L1', '6L1', '5L57', '4L57', '3L61'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      liquidation: ['9M', '8M', '7T'],\n      mimic: ['3T'],\n      mist: ['9L41', '8L41', '7L12', '6L12', '5L14', '4L16', '3L21'],\n      muddywater: ['9M'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      payback: ['8M', '7M', '7L19', '6M', '6L19', '5M', '5L22', '4M', '4L24'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '9L1', '9S0', '8M', '8L1', '7M', '7L1', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3M', '3L25'],\n      quickattack: ['9L1', '8L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roost: ['9L48', '8L48', '7M', '7L39', '6M', '6L22', '5T', '5L28', '4M', '4L31'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skyattack: ['7T', '6T', '5T', '4T', '3T'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      soak: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      spitup: ['9L28', '8L28', '7L33', '6L33', '5L38', '4L38', '3L47'],\n      steelwing: ['8M', '7M', '6M', '4M', '3M'],\n      stockpile: ['9L28', '8L28', '7L33', '6L33', '5L38', '4L38', '3L33'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      supersonic: ['9L1', '8L1', '7L5', '6L5', '5L6', '4L6', '3L7'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swallow: ['9L28', '8L28', '7L33', '6L33', '5L38', '4L38', '3L33'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tailwind: ['9M', '9L1', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L50', '4T', '4L50'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      waterfall: ['9M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['9M', '9L20', '8L20', '7T', '7L15', '6T', '6L15', '5L17', '4M', '4L19', '3M'],\n      watersport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      weatherball: ['9M', '9S0', '8M'],\n      whirlpool: ['9M', '8M', '4M'],\n      wideguard: ['9S0'],\n      wingattack: ['9L15', '8L15', '7L1', '6L1', '5L1', '4L1', '3L1']\n    }\n  ],\n  [\n    'ralts',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T', '7E', '6E', '5M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      calmmind: ['9M', '9L27', '8M', '8L27', '7M', '7L24', '6M', '6L24', '5M', '5L28', '4M', '4L23', '3M', '3L21'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L24', '8M', '8L24', '7L34', '6L34', '5L43', '4L39', '3S1'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      confusion: ['9L6', '8L6', '7L4', '6L4', '5L6', '5D', '4L6', '3L6', '3S2'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      defensecurl: ['3T'],\n      destinybond: ['9E', '8E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      disable: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L11', '6L11'],\n      doubleedge: ['3T'],\n      doubleteam: ['9L3', '8L3', '7M', '7L6', '6M', '6L6', '5M', '5L10', '4M', '4L10', '3M', '3L11'],\n      drainingkiss: ['9M', '9L12', '8M', '8L12', '7L22', '6L22'],\n      dreameater: ['9L36', '8L36', '7M', '7L39', '6M', '6L39', '5M', '5L50', '4M', '4L45', '3T', '3L46'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '8M', '7E', '6E', '6S3', '5E', '4E'],\n      endure: ['9M', '8M', '4M', '3T'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L39', '8M', '8L39', '7L32', '6L32', '5L39', '4L34', '3L36'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '6S3', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      grudge: ['8E', '7E', '6E', '5E', '4E'],\n      headbutt: ['4T'],\n      healpulse: ['9L33', '8L33', '7L19', '6L19', '5L23'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '5D', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      hypnosis: ['9L9', '8L9', '7L37', '6L37', '5L45', '4L43', '3L41'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M', '7L29', '6L29', '5L34', '4L32', '3L31'],\n      knockoff: ['9M', '9E', '8E'],\n      lifedew: ['9L21', '8L21'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7L14', '6L14', '5L17', '4L17'],\n      magicalleaf: ['9M', '8M', '7L17', '6L17', '5L21', '4L21'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      meanlook: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      memento: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mistyterrain: ['9M', '8M', '7E', '6E'],\n      mudslap: ['4T', '3T'],\n      mysticalfire: ['9E'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L18', '8L18'],\n      psychic: ['9M', '9L30', '8M', '8L30', '7M', '7L27', '6M', '6L27', '5M', '5L32', '4M', '4L28', '3M', '3L26'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M', '3S2'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shadowsneak: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      shockwave: ['7T', '6T', '4M', '3M', '3S2'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sing: ['3S2'],\n      skillswap: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M', '8M', '7L42', '6L42', '5L54'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T'],\n      synchronoise: ['7E', '6E', '5E'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['9L15', '8L15', '7L9', '6L9', '5L12', '4L12', '3L16'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4E', '3E'],\n      wish: ['3S0'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'kirlia',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T', '5M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      calmmind: ['9M', '9L33', '8M', '8L33', '7M', '7L26', '6M', '6L26', '5M', '5L31', '4M', '4L25', '3M', '3L21'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L28', '8M', '8L28', '7L40', '6L40', '5L50', '4L45'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      defensecurl: ['3T'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L11', '6L11'],\n      doubleedge: ['3T'],\n      doubleteam: ['9L1', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      drainingkiss: ['9M', '9L12', '8M', '8L12', '7L23', '6L23'],\n      dreameater: ['9L48', '8L48', '7M', '7L47', '6M', '6L47', '5M', '5L59', '4M', '4L53', '3T', '3L54'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L53', '8M', '8L53', '7L37', '6L37', '5L45', '4L39', '3L40'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['4T'],\n      healpulse: ['9L43', '8L43', '7L19', '6L19', '5L25'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      hypnosis: ['9L9', '8L9', '7L44', '6L44', '5L53', '4L50', '3L47'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M', '7L33', '6L33', '5L39', '4L36', '3L33'],\n      knockoff: ['9M'],\n      lifedew: ['9L23', '8L23'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7L14', '6L14', '5L17', '4L17'],\n      magicalleaf: ['9M', '8M', '7L17', '6L17', '5L22', '4L22', '3L1'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mistyterrain: ['9M', '8M'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L18', '8L18'],\n      psychic: ['9M', '9L38', '8M', '8L38', '7M', '7L30', '6M', '6L30', '5M', '5L36', '4M', '4L31', '3M', '3L26'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M', '8M', '7L51', '6L51', '5L64'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['9L15', '8L15', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      tripleaxel: ['9M', '8T'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'gardevoir',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T', '5M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M'],\n      bodyslam: ['9M', '8M', '3T'],\n      calmmind: ['9M', '9L35', '8M', '8L35', '7M', '7L26', '6M', '6L26', '6S1', '5M', '5L33', '4M', '4L25', '3M', '3L21'],\n      captivate: ['7L44', '6L44', '5L60', '4M', '4L53'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      dazzlinggleam: ['9M', '9L0', '8M', '8L0', '7M', '6M', '6S1'],\n      defensecurl: ['3T'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L11', '6L11'],\n      doubleedge: ['3T'],\n      doubleteam: ['9L1', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      drainingkiss: ['9M', '9L12', '8M', '8L12', '7L23', '6L23'],\n      dreameater: ['9L56', '8L56', '7M', '7L53', '6M', '6L53', '5M', '5L73', '4M', '4L65', '3T', '3L60'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '5S0', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L63', '8M', '8L63', '7L40', '6L40', '5L53', '4L45', '3L42'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      guardswap: ['8M'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      healingwish: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      healpulse: ['9L1', '8L49', '7L19', '6L19', '5L25'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      hypnosis: ['9L9', '8L9', '7L49', '6L49', '5L65', '5S0', '4L60', '3L51'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M', '7L35', '6L35', '5L45', '4L40', '3L33'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      lifedew: ['9L23', '8L23'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      magicalleaf: ['9M', '8M', '7L17', '6L17', '5L22', '4L22'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      moonblast: ['9L49', '8L1', '7L1', '6L1', '6S1'],\n      mudslap: ['4T', '3T'],\n      mysticalfire: ['9L1', '8M'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L18', '8L18'],\n      psychic: ['9M', '9L42', '8M', '8L42', '7M', '7L31', '6M', '6L31', '5M', '5L40', '5S0', '4M', '4L33', '3M', '3L26'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M', '8M', '7L1', '6L1', '6S1', '5L80'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['9L15', '8L15', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '5S0', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      tripleaxel: ['9M', '8T'],\n      vacuumwave: ['9M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M'],\n      wish: ['9L28', '8L28', '7L14', '6L14', '5L17', '4L17'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'gallade',\n    {\n      aerialace: ['9M', '9L18', '8L18', '7M', '7L17', '6M', '5M', '4M'],\n      agility: ['9M'],\n      airslash: ['9M', '8M'],\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T', '5M'],\n      aquacutter: ['9L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      aurasphere: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      closecombat: ['9M', '9L63', '8M', '8L63', '7L1', '6L1', '5L59', '4L53'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      cut: ['6M', '5M', '4M'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      disarmingvoice: ['9M', '9L1', '8L1'],\n      doubleteam: ['9L1', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      drainingkiss: ['9M', '9L1', '8M', '8L1'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['9L1', '8L1', '7M', '6M', '5M', '4M'],\n      dualchop: ['7T', '6T', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      falseswipe: ['9M', '9L23', '8M', '8L23', '7M', '7L44', '6M', '6L44', '5M', '5L50', '4M', '4L45'],\n      feint: ['9L12', '8L12', '7L40', '6L40', '5L45', '4L39'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['9L1', '8L1', '7L14', '6L14', '5L17', '4T', '4L17'],\n      futuresight: ['9M', '9L1', '8M', '8L1'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1'],\n      headbutt: ['4T'],\n      healpulse: ['9L49', '8L49', '7L19', '6L19', '5L25'],\n      helpinghand: ['9M', '9L9', '8M', '8L9', '7T', '7L35', '6T', '6L35', '5T', '5L39', '4T', '4L36'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      hypnosis: ['9L1', '8L1'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      icywind: ['9M', '8M'],\n      imprison: ['9M', '9L1', '8M', '8L1'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      leafblade: ['9L1', '8M', '7L1', '6L1', '5L1', '4L1'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      lifedew: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M'],\n      mistyterrain: ['9M', '8M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      nightslash: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L28', '8M', '8L28', '7M', '7L49', '6M', '6L49', '5M', '5L53', '4M', '4L50'],\n      psybeam: ['9M', '9L1', '8L1'],\n      psychic: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M'],\n      psychicterrain: ['9M'],\n      psychocut: ['9L42', '8M', '8L42', '7L31', '6L31', '5L36', '4L31'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      quickguard: ['9L56', '8L56', '7L11', '6L11'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sacredsword: ['9L1'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      slash: ['9L0', '8L0', '7L1', '6L17', '5L22', '4L22'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarblade: ['9M', '8M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      storedpower: ['9M', '8M', '7L1', '6L1', '5L64'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      swordsdance: ['9M', '9L35', '8M', '8L35', '7M', '7L26', '6M', '6L26', '5M', '5L31', '4M', '4L25'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['9L15', '8L15', '7L1', '6L1', '5L1', '4L1'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      tripleaxel: ['9M', '8T'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '4T'],\n      wideguard: ['9L56', '8L56', '7L23', '6L23'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      workup: ['8M', '7M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'surskit',\n    {\n      acrobatics: ['9M'],\n      agility: ['9M', '9L22', '7L22', '6L22', '5L31', '4L31', '3L31'],\n      aquajet: ['9E', '7L30', '7E', '6L30', '6E', '5E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '9L35', '7L35', '6L35', '5L43', '4L43'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bubble: ['7L1', '6L1', '5L1', '5D', '4L1', '3L1', '3S0', '3S1'],\n      bubblebeam: ['9L17', '7L17', '6L17', '5L25', '4L25', '3L25'],\n      bugbite: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      bugbuzz: ['9M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7E', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fellstinger: ['9E', '7E', '6E'],\n      flash: ['6M', '5M', '4M', '3M'],\n      foresight: ['7E', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '6T', '5T', '5D', '4M', '3M'],\n      haze: ['9M', '9L25', '7L25', '6L25', '5L37', '4L37', '3L37'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      leechlife: ['9M'],\n      liquidation: ['9M', '7T'],\n      lunge: ['9M', '9E', '7E'],\n      mimic: ['3T'],\n      mindreader: ['7E', '6E', '5E', '4E', '3E'],\n      mist: ['9L25', '7L25', '6L25', '5L37', '4L37', '3L37'],\n      mudshot: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      mudslap: ['9M', '4T'],\n      mudsport: ['3S0'],\n      naturalgift: ['4M'],\n      pounce: ['9M'],\n      powersplit: ['9E', '7E', '6E'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      quickattack: ['9L6', '7L6', '6L6', '5L7', '4L7', '3L7', '3S1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      soak: ['9L14'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      stickyweb: ['9L38', '7L38', '6L38'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L9', '7L9', '6L9', '5L13', '4L13', '3L13'],\n      swift: ['4T', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      watersport: ['7L14', '6L14', '5L19', '4L19', '3L19']\n    }\n  ],\n  [\n    'masquerain',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M'],\n      aircutter: ['9M', '9L22', '7L22', '6L22', '4T'],\n      airslash: ['9M', '9L32', '7L38', '6L38', '5L47', '4L47'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bubble: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '9L44', '7L1', '6L1', '5L61', '4L61'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      defog: ['7T', '4M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dualwingbeat: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      foulplay: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '9L38', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gust: ['9L17', '7L17', '6L17', '5L22', '4L22', '3L26'],\n      haze: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      leechlife: ['9M'],\n      liquidation: ['9M', '7T'],\n      lunge: ['9M'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      ominouswind: ['7L1', '6L1', '5L1', '4T', '4L1'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      quickattack: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      quiverdance: ['9L52', '7L1', '6L1', '5L68'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      scaryface: ['9M', '9L22', '7L22', '6L22', '5L26', '4L26', '3L33'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['7L32', '6L32', '5L40', '4M', '4L40', '3L47'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      soak: ['9L1'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '6M', '5M'],\n      stunspore: ['9L26', '7L26', '6L26', '5L33', '4L33', '3L40'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      swift: ['9M', '4T', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      waterfall: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      watersport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      weatherball: ['9M'],\n      whirlwind: ['9L1', '7L1', '6L1', '5L54', '4L54', '3L53']\n    }\n  ],\n  [\n    'shroomish',\n    {\n      absorb: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '3T'],\n      bulletseed: ['9M', '7E', '6E', '5E', '5D', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      confide: ['7M', '6M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      endure: ['9M', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      falseswipe: ['9M', '7M', '6M', '5M', '4E', '3E', '3S0'],\n      flash: ['6M', '5M', '4M', '3M'],\n      focuspunch: ['7T', '7E', '6T', '6E', '5E', '5D'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '9L26', '7T', '7L26', '6T', '6L26', '5T', '5L37', '4M', '4L37', '3M', '3L45'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyterrain: ['9M'],\n      growth: ['9L29', '7L29', '6L29', '5L33', '4L33', '3L36'],\n      gunkshot: ['9M'],\n      headbutt: ['9L15', '7L15', '6L15', '5L21', '4T', '4L21', '3L22'],\n      helpinghand: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      leechseed: ['9L8', '7L8', '6L8', '5L13', '4L13', '3L10'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '7L12', '6L12', '5L17', '4L17', '3L16', '3S0'],\n      mimic: ['3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      poisonpowder: ['9L19', '7L19', '6L19', '5L25', '4L25', '3L28'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      refresh: ['3S0'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '9L36', '7T', '7L36', '7E', '6T', '6L36', '6E', '5T', '5L41', '5E', '4T', '4L41', '4E'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spore: ['9L40', '7L40', '6L40', '5L45', '4L45', '3L54'],\n      stunspore: ['9L5', '7L5', '6L5', '5L9', '5D', '4L9', '3L7', '3S0'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      swift: ['9M'],\n      swordsdance: ['7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      tackle: ['9L1', '7L1', '6L1', '5L5', '4L5', '3L4'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L33', '7M', '7L33', '6M', '6L33', '5M', '4M', '3M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      wakeupslap: ['7E', '6E', '5E', '4E'],\n      worryseed: ['9E', '7T', '7L22', '7E', '6T', '6L22', '6E', '5T', '5L29', '5E', '4T', '4L29', '4E'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'breloom',\n    {\n      absorb: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      aerialace: ['9M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '9L39', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M', '4M', '3M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      closecombat: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9L22', '7L22', '6L22', '5L25', '4L25', '3T', '3L28'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['9M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '7T', '6T', '5T', '4M'],\n      dynamicpunch: ['9L50', '7L50', '6L45', '5L45', '4L45', '3T', '3L54'],\n      endure: ['9M', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      falseswipe: ['9M', '7M', '6M', '5M'],\n      feint: ['9L19', '7L19', '6L19'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '9L55', '7T', '6T', '4M', '3M'],\n      forcepalm: ['9L28', '7L28', '6L28', '5L29', '4L29'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyterrain: ['9M'],\n      growth: ['9L1'],\n      gunkshot: ['9M'],\n      headbutt: ['9L15', '7L15', '6L15', '5L21', '4T', '4L21', '3L22'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      leafstorm: ['9M'],\n      leechseed: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      machpunch: ['9L0', '7L1', '6L23', '5L23', '4L23', '3L23'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '7L12', '6L12', '5L17', '4L17', '3L16'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      mimic: ['3T'],\n      mindreader: ['7L33', '6L33', '5L37', '4L37', '3L45'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      poisonjab: ['9M'],\n      poisonpowder: ['9L1'],\n      pounce: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '9L44', '7T', '7L44', '6T', '6L41', '5T', '5L41', '4T', '4L41'],\n      seismictoss: ['3T'],\n      skyuppercut: ['7L39', '6L33', '5L33', '4L33', '3L36'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spore: ['9L1'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      stunspore: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['9M', '9L1', '7M', '6M', '5M', '4M', '3M'],\n      vacuumwave: ['4T'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      worryseed: ['9L33', '7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'slakoth',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      afteryou: ['9E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      amnesia: ['9M', '9L17', '7L17', '6L17', '5L25', '4L25', '3L25'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '9E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7L25', '6L25', '5L37'],\n      confide: ['7M', '6M'],\n      counter: ['9L30', '7L30', '6L30', '5L43', '4L37', '3T', '3L37'],\n      covet: ['9L22', '7T', '7L22', '6T', '6L22', '5T', '5L31', '4L31', '3L31'],\n      crushclaw: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      curse: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      cut: ['6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      encore: ['9M', '9L6', '7L6', '6L6', '5L7', '4L7', '3L7'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M'],\n      feintattack: ['7L14', '6L14', '5L19', '4L19', '3L19'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      flail: ['9L33', '7L33', '6L33', '5L49', '4L43', '3L43'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      hammerarm: ['9E', '7E', '6E', '5E', '4E'],\n      headbutt: ['9L14', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metalclaw: ['9M'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      playrough: ['9M', '9L38', '7L38', '6L38'],\n      poisonjab: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      pursuit: ['7E', '6E', '5E', '4E', '3E'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slackoff: ['9L9', '7L9', '6L9', '5L13', '4L13', '3L13'],\n      slash: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['9M', '7M', '7E', '6M', '6E', '5T', '5E', '4M', '4E', '3T', '3E'],\n      snore: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['5D', '4T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '9L25'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      tickle: ['9E', '7E', '6E', '5E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      workup: ['7M', '5M'],\n      xscissor: ['9M'],\n      yawn: ['9L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'vigoroth',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7L27', '6L27', '5L43'],\n      confide: ['7M', '6M'],\n      counter: ['9L33', '7L33', '6L33', '5L37', '4L37', '3T', '3L37'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['9M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      encore: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      endeavor: ['9M'],\n      endure: ['9M', '9L17', '7L17', '6L17', '5L25', '4M', '4L25', '3T', '3L25'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      focuspunch: ['9M', '9L37', '7T', '7L37', '6T', '6L37', '5L49', '4M', '4L43', '3M', '3L43'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      furyswipes: ['9L14', '7L14', '6L14', '5L19', '4L19', '3L19'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hypervoice: ['9M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metalclaw: ['9M'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M'],\n      playrough: ['9M'],\n      poisonjab: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '9L43', '7L1', '6L1', '5L55', '4L49', '3L49'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      scratch: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slash: ['9L23', '7L23', '6L23', '5L31', '4L31', '3L31'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      stompingtantrum: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '9L27'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      workup: ['7M', '5M'],\n      xscissor: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'slaking',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '4S0', '3M'],\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M', '9L17', '7L17', '6L17', '5L25', '4L25', '3L25'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7L27', '6L27', '5L37'],\n      confide: ['7M', '6M'],\n      counter: ['9L33', '7L33', '6L33', '5L43', '4L37', '3T', '3L37'],\n      covet: ['9L23', '7T', '7L23', '6T', '6L23', '5T', '5L31', '4L31', '3L31'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['9M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      encore: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M'],\n      feintattack: ['7L14', '6L14', '5L19', '4L19', '3L19'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      flail: ['9L39', '7L39', '6L39', '5L49', '4L43', '3L43'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '9L45', '7M', '7L1', '6M', '6L1', '5M', '5L55', '4M', '4L49'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M', '4S0'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      hammerarm: ['9L63', '7L1', '6L1', '5L67', '4L61'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      megakick: ['9L52', '3T'],\n      megapunch: ['3T'],\n      metalclaw: ['9M'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M'],\n      playrough: ['9M'],\n      poisonjab: ['9M'],\n      pounce: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      punishment: ['7L1', '6L1', '5L61', '4L55'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '4S0', '3M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      scratch: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M', '4S0'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slackoff: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      stompingtantrum: ['9M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L1', '4T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['9L0', '7M', '7L1', '6M', '6L36', '5M', '5L36', '4M', '4L36', '3T', '3L36'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '9L27'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wildcharge: ['9M'],\n      workup: ['7M', '5M'],\n      xscissor: ['9M'],\n      yawn: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'nincada',\n    {\n      absorb: ['8L21', '7L5'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      bide: ['7L29', '6L29'],\n      bugbite: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      bugbuzz: ['8M', '7E', '6E', '5E', '4E'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['8M', '8L40', '7L37', '6M', '6L37', '5M', '5L45', '4M', '4L45', '3M', '3L45'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '7E', '6E', '5E', '5D', '4M', '4E', '3T', '3E'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '8L10', '7M', '7L33', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3L25'],\n      feintattack: ['7E', '6E', '5E', '4E', '3E'],\n      finalgambit: ['8E', '7E', '6E', '5E'],\n      flail: ['8E'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      furyswipes: ['8L30', '7L13', '6L13', '5L14', '4L14', '3L14'],\n      gigadrain: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      gust: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      harden: ['8L5', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      leechlife: ['8M', '7M', '6L5', '5L5', '5D', '4L5', '3L5'],\n      metalclaw: ['8L25', '7L21', '6L21', '5L38', '4L38', '3L38'],\n      mimic: ['3T'],\n      mindreader: ['8L35', '7L25', '6L19', '5L19', '4L19', '3L19'],\n      mudslap: ['8L15', '7L17', '6L17', '5L31', '4T', '4L31', '3T', '3L31'],\n      naturalgift: ['4M'],\n      nightslash: ['8E', '7E', '6E', '5E', '5D', '4E'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L9', '6L9', '5L9', '4L9', '3L9'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scratch: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      silverwind: ['7E', '6E', '5E', '4E', '3E'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      xscissor: ['8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'ninjask',\n    {\n      absorb: ['8L23', '7L1'],\n      acrobatics: ['8M'],\n      aerialace: ['8L1', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['8M', '8L15', '7L17', '6L17', '5L38', '4L38', '3L38'],\n      aircutter: ['4T'],\n      airslash: ['8M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M', '8L1', '7L35', '6L35', '5L45', '4L45', '3L45'],\n      bugbite: ['8L29', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      bugbuzz: ['8M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defog: ['7T', '4M'],\n      dig: ['8M', '8L1', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['8L0', '7M', '7L1', '6M', '6L20', '5M', '5L20', '4M', '4L20', '3M', '3L20'],\n      dualwingbeat: ['8T'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '8L1', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['8L0', '7L1', '6L20', '5L20', '4T', '4L20', '3T', '3L20'],\n      furyswipes: ['8L36', '7L13', '6L13', '5L14', '4L14', '3L14'],\n      gigadrain: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      laserfocus: ['7T'],\n      leechlife: ['8M', '7M', '6L1', '5L1', '4L1', '3L1'],\n      metalclaw: ['8L1'],\n      mimic: ['3T'],\n      mindreader: ['8L43', '7L29', '6L19', '5L19', '4L19', '3L19'],\n      mudslap: ['8L1', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scratch: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['8M', '8L0', '7L1', '6L20', '5L20', '4L20', '3L20'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      silverwind: ['4M'],\n      skittersmack: ['8T'],\n      slash: ['8L50', '7L23', '6L23', '5L31', '4L31', '3L31'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '4T', '3T'],\n      swordsdance: ['8M', '8L57', '7M', '7L41', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3T', '3L25'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['8M', '7M', '6M', '5M', '4M'],\n      xscissor: ['8M', '8L64', '7M', '7L47', '6M', '6L47', '5M', '5L52', '4M', '4L52']\n    }\n  ],\n  [\n    'shedinja',\n    {\n      absorb: ['8L23', '7L1'],\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      agility: ['8M', '4R', '3R'],\n      allyswitch: ['8M', '7T'],\n      batonpass: ['4R', '3R'],\n      bugbite: ['7T', '6T', '5T', '4T'],\n      bugbuzz: ['8M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L15', '7L29', '6L29', '5L31', '4L31', '3L31', '3S0'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['8M', '8L1', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '8L1', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      furyswipes: ['8L36', '7L13', '6L13', '5L14', '4L14', '3L14'],\n      gigadrain: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grudge: ['8L1', '7L37', '6L37', '5L45', '4L45', '3L45', '3S0'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      healblock: ['7L41', '6L41', '5L52', '4L52'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      leechlife: ['8M', '7M', '6L5', '5L5', '4L5', '3L5'],\n      metalclaw: ['8L1'],\n      mimic: ['3T'],\n      mindreader: ['8L43', '7L25', '6L19', '5L19', '4L19', '3L19'],\n      mudslap: ['8L1', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      phantomforce: ['8M', '8L64', '7L45', '6L45'],\n      poltergeist: ['8T'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L1', '6L9', '5L9', '4L9', '3L9'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scratch: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['4R', '3R'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '8L50', '7M', '7L33', '6M', '6L33', '5M', '5L59', '4M', '4L59', '3M', '3L38', '3S0'],\n      shadowclaw: ['8M', '8L1', '7M', '6M', '5M', '4M'],\n      shadowsneak: ['8L29', '7L21', '6L21', '5L38', '4L38'],\n      skittersmack: ['8T'],\n      slash: ['4R', '3R'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['8L57', '7T', '7L17', '6T', '6L17', '5T', '5L25', '4T', '4L25', '3L25', '3S0'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swordsdance: ['4R', '3R'],\n      telekinesis: ['7T', '5M'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      willowisp: ['8M', '7M', '6M', '5M', '4M'],\n      xscissor: ['8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'whismur',\n    {\n      astonish: ['8L1', '7L8', '6L8', '5L11', '4L11', '3L11'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      captivate: ['4M'],\n      circlethrow: ['8E', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      defensecurl: ['3T'],\n      disarmingvoice: ['8E', '7E', '6E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      echoedvoice: ['8L5', '7M', '7L4', '6M', '6L4', '5M'],\n      endeavor: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4E'],\n      endure: ['8M', '4M', '3T'],\n      extrasensory: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['8M', '7E', '6E', '5E'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      hammerarm: ['8E', '7E', '6E', '5E', '4E'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      howl: ['8L10', '7L11', '6L11', '5L15', '4L15', '3L15'],\n      hypervoice: ['8M', '8L45', '7T', '7L39', '6T', '6L39', '5T', '5L51', '4L45', '3L45'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      pound: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['3T'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L15', '7M', '7L32', '6M', '6L32', '5M', '5L45', '4M', '4L41', '3M', '3L41'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['8L25', '7M', '7L29', '6M', '6L29', '5M', '5L35', '4M', '4L35', '3M', '3L35'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L40', '7L15', '6L15', '5L31', '4L31', '3L31'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['8M', '8L15', '7M', '7L36', '6M', '6L36', '5T', '5L45', '4M', '4L41', '3T', '3L41'],\n      smellingsalts: ['7E', '6E', '5E', '4E', '3E'],\n      smokescreen: ['8E', '7E', '6E', '5E', '4E'],\n      snore: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      stomp: ['8L21', '7L22', '6L22', '5L25', '4L25', '3L25'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      supersonic: ['8L30', '7L18', '6L18', '5L21', '4L21', '3L21'],\n      swagger: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      synchronoise: ['7L43', '6L41', '5L41'],\n      takedown: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      teeterdance: ['3S0'],\n      thunderpunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '8L35', '7T', '7L25', '6T', '6L5', '5T', '5L5', '5D', '4T', '4L5', '3L5', '3S0'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlwind: ['8E', '7E'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '5D', '4T']\n    }\n  ],\n  [\n    'loudred',\n    {\n      astonish: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bite: ['8L0', '7L1', '6L20', '5L20', '4L20'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      defensecurl: ['3T'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['8L1', '7M', '7L1', '6M', '6L1', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['8M'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      howl: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hypervoice: ['8M', '8L57', '7T', '7L45', '6T', '6L45', '5T', '5L65', '4L57', '3L57'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      lowkick: ['8M', '7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      overheat: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      pound: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['3T'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L15', '7M', '7L36', '6M', '6L36', '5M', '5L57', '4M', '4L51', '3M', '3L51'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['8L29', '7M', '7L32', '6M', '6L32', '5M', '5L43', '4M', '4L43', '3M', '3L43'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L50', '7L15', '6L15', '5L37', '4L37', '3L37'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['8M', '8L15', '7M', '7L41', '6M', '6L41', '5T', '5L57', '4M', '4L51', '3T', '3L51'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      stomp: ['8L23', '7L23', '6L23', '5L29', '4L29', '3L29'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      supersonic: ['8L36', '7L18', '6L18', '5L23', '4L23', '3L23'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      synchronoise: ['7L50', '6L50', '5L51'],\n      taunt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '8L43', '7T', '7L27', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'exploud',\n    {\n      astonish: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['8M', '4M'],\n      bite: ['8L1', '7L1', '6L20', '5L20', '4L20'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      boomburst: ['8L72', '7L1', '6L1'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['8M', '8L0', '7L1', '6L40', '5L40', '4L40'],\n      defensecurl: ['3T'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['8L1', '7M', '7L1', '6M', '6L1', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['8M'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      firepunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      howl: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '8L81', '7M', '7L64', '6M', '6L64', '5M', '5L79', '4M', '4L71', '3M', '3L40', '3S1'],\n      hypervoice: ['8M', '8L63', '7T', '7L47', '6T', '6L47', '5T', '5L71', '4L63', '3L63', '3S0'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      icepunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      lowkick: ['8M', '7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['8M', '7T', '6T', '5T', '4T'],\n      overheat: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      pound: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['3T'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L15', '7M', '7L36', '6M', '6L36', '5M', '5L55', '4M', '4L55', '3M', '3L55', '3S0'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['8L29', '7M', '7L32', '6M', '6L32', '5M', '5L45', '4M', '4L45', '3M', '3L45', '3S0', '3S1'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L54', '7L15', '6L15', '5L37', '4L37', '3L37', '3S1'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['8M', '8L15', '7M', '7L42', '6M', '6L42', '5T', '5L63', '4M', '4L55', '3T', '3L55', '3S0'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      stomp: ['8L23', '7L23', '6L23', '5L29', '4L29', '3L29', '3S1'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      supersonic: ['8L36', '7L18', '6L18', '5L23', '4L23', '3L23'],\n      surf: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      synchronoise: ['7L53', '6L53', '5L55'],\n      taunt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      terrainpulse: ['8T'],\n      thunderfang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      thunderpunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '8L45', '7T', '7L27', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'makuhita',\n    {\n      armthrust: ['9L7', '7L7', '6L7', '5L7', '5D', '4L7', '3L10', '3S0'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bellydrum: ['9L25', '7L25', '6L25', '5L25', '4L25', '3L37'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M', '3S0'],\n      bulkup: ['9M', '9L22', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      bulletpunch: ['9E', '7E', '6E', '5E', '4E'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7E', '6E', '5E'],\n      closecombat: ['9M', '9L40', '7L40', '6L40', '5L40', '4L40'],\n      coaching: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      crosschop: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      detect: ['9L28', '7E', '6E', '5E', '4E', '3E'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dynamicpunch: ['9E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '9L37', '7L37', '6L37', '5L37', '4M', '4L37', '3T', '3L40'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L10', '7L10', '6L10', '5L13', '4L13', '3L19'],\n      feint: ['9E', '7E', '6E', '5E', '4E'],\n      feintattack: ['7E', '6E', '5E', '4E', '3E'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      focuspunch: ['9M', '9L34', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      forcepalm: ['9L13', '7L13', '6L13', '5L28', '4L28'],\n      foresight: ['7E', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M', '9L46', '7L46', '6L46', '5L46'],\n      helpinghand: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '5D', '4T', '3T'],\n      knockoff: ['9M', '9L19', '7T', '7L19', '6T', '6L19', '5T', '5L19', '4T', '4L19', '3L28'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      revenge: ['7E', '6E', '5E', '4E', '3E'],\n      reversal: ['9M', '9L43', '7L43', '6L43', '5L43', '4L43', '3L49'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M', '3S0'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L4', '7L4', '6L4', '5L4', '4L4', '3L4'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['9L31', '7L31', '6L31', '5L31', '4L31', '3T', '3L46'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      smellingsalts: ['7L28', '6L22', '5L22', '4L22', '3L31'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      surf: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '4T'],\n      vitalthrow: ['7L22', '6L10', '5L10', '4L10', '3L13'],\n      wakeupslap: ['7L34', '7E', '6L34', '6E', '5L34', '5E', '4L34', '4E'],\n      whirlpool: ['4M'],\n      whirlwind: ['9L16', '7L16', '6L16', '5L16', '4L16', '3L22'],\n      wideguard: ['9E', '7E', '6E', '5E'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'hariyama',\n    {\n      armthrust: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bellydrum: ['9L26', '7L26', '6L26', '5L27', '4L27', '3L40'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['9L1', '7L1', '6L1', '5L1', '4M', '4L1'],\n      bulkup: ['9M', '9L22', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '9L46', '7L46', '6L46', '5L52', '4L52'],\n      coaching: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M'],\n      detect: ['9L30'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '9L42', '7L42', '6L42', '5L47', '4M', '4L47', '3T', '3L44'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L10', '7L10', '6L10', '5L13', '4L13', '3L19'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      focuspunch: ['9M', '9L38', '7T', '6T', '4M', '3M'],\n      forcepalm: ['9L13', '7L13', '6L13', '5L32', '4L32'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      headlongrush: ['9L60'],\n      heavyslam: ['9M', '9L54', '7L54', '6L54', '5L62'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      ironhead: ['9M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '9L19', '7T', '7L19', '6T', '6L19', '5T', '5L19', '4T', '4L19', '3L29'],\n      lashout: ['9M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '9L50', '7L50', '6L50', '5L57', '4L57', '3L55'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['9L34', '7L34', '6L34', '5L37', '4L37', '3T', '3L51'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      smellingsalts: ['7L30', '6L22', '5L22', '4L22', '3L33'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      surf: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '7T'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '4T'],\n      vitalthrow: ['7L22', '6L10', '5L10', '4L10', '3L13'],\n      wakeupslap: ['7L38', '6L38', '5L42', '4L42'],\n      whirlpool: ['4M'],\n      whirlwind: ['9L16', '7L16', '6L16', '5L16', '4L16', '3L22'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'nosepass',\n    {\n      ancientpower: ['5D', '4T'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      block: ['9L7', '7T', '7L7', '7E', '6T', '6L7', '6E', '5T', '5L8', '5E', '4T', '4L19', '4E', '3L16'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '3T'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defensecurl: ['3T'],\n      discharge: ['9L31', '7L31', '6L31', '5L39', '4L49'],\n      doubleedge: ['9M', '9E', '7E', '6E', '5E', '4E', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      earthpower: ['9M', '9L37', '7T', '7L37', '6T', '6L37', '5T', '5L43', '4T', '4L73'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '7E', '6E', '5E', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      flashcannon: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      harden: ['9L4', '7L4', '6L4', '5L4', '4L7', '3L7'],\n      headbutt: ['4T'],\n      headsmash: ['9E'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M', '3S0'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '7T', '6T', '5T', '4T'],\n      lockon: ['9L43', '7L43', '6L43', '5L50', '4L67', '3L46'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      magnitude: ['7E', '6E', '5E', '4E', '3E'],\n      meteorbeam: ['9M'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      powergem: ['9M', '9L25', '7L25', '6L25', '5L32', '4L49'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L16', '7M', '7L16', '6M', '6L16', '5M', '5L22', '4M', '4L43', '3M', '3L37'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '9L28', '7L28', '6L18', '5L18'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L22', '7M', '7L22', '6M', '6L22', '5M', '5L29', '4M', '4L31', '3T', '3L28', '3S0'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rockthrow: ['9L10', '7L10', '6L10', '5L11', '4L13', '3L13'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9E', '7E', '6E', '5E', '4T', '4E', '3T', '3E'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '9L34', '7M', '7L34', '6M', '6L34', '5M', '5L36', '4M', '4L37', '3M', '3L31'],\n      sandtomb: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      spark: ['9L19', '7L19', '6L19', '5L25'],\n      stealthrock: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4M'],\n      steelbeam: ['9M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '9L40', '7M', '7L40', '6M', '6L40', '5M', '5L46', '4M', '4L55'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M', '3S0'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '9L13', '7M', '7L13', '6M', '6L13', '5M', '5L15', '4M', '4L25', '3T', '3L22', '3S0'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wideguard: ['9E', '7E', '6E'],\n      zapcannon: ['9L43', '7L43', '6L43', '5L50', '4L61', '3L43']\n    }\n  ],\n  [\n    'probopass',\n    {\n      allyswitch: ['7T'],\n      ancientpower: ['4T'],\n      attract: ['7M', '6M', '5M', '4M'],\n      block: ['9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      discharge: ['9L31', '7L31', '6L31', '5L39', '4L49'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '9L37', '7T', '7L37', '6T', '6L37', '5T', '5L43', '4T', '4L73'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '4M'],\n      explosion: ['7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T'],\n      flashcannon: ['9M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T'],\n      irondefense: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      ironhead: ['9M', '7T', '6T', '5T', '4T'],\n      lockon: ['9L43', '7L43', '6L43', '5L50', '4L67'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magnetbomb: ['7L1', '6L1', '5L1', '4L1'],\n      magneticflux: ['9L1', '7L1'],\n      magnetrise: ['9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      metalsound: ['9M'],\n      meteorbeam: ['9M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      powergem: ['9M', '9L25', '7L25', '6L25', '5L32', '4L49'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '9L16', '7M', '7L16', '6M', '6L16', '5M', '5L22', '4M', '4L43'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockblast: ['9M', '9L28', '7L28', '6L18', '5L18'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L22', '7M', '7L22', '6M', '6L22', '5M', '5L29', '4M', '4L31'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '9L34', '7M', '7L34', '6M', '6L34', '5M', '5L36', '4M', '4L37'],\n      sandtomb: ['9M'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      spark: ['9L19', '7L19', '6L19', '5L25'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '9L40', '7M', '7L40', '6M', '6L40', '5M', '5L46', '4M', '4L55'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T'],\n      thunderwave: ['9M', '9L13', '7M', '7L13', '6M', '6L13', '5M', '5L15', '4M', '4L25'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      triattack: ['9L0', '7L1'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wideguard: ['9L1', '7L1', '6L1'],\n      zapcannon: ['9L43', '7L43', '6L43', '5L50', '4L61']\n    }\n  ],\n  [\n    'skitty',\n    {\n      assist: ['7L31', '6L22', '5L22', '4L18', '3L19'],\n      attract: ['7M', '7L10', '6M', '6L8', '5M', '5L8', '4M', '4L4', '3M', '3L7', '3S2'],\n      batonpass: ['7E', '6E', '5E', '4E', '3E'],\n      blizzard: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['3T'],\n      calmmind: ['7M', '6M', '5M', '4M', '3M'],\n      captivate: ['7L43', '7E', '6L43', '6E', '5L46', '5E', '5D', '4M', '4L42'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['7L25', '6L25', '5L25', '4L22', '3L25'],\n      confide: ['7M', '6M'],\n      copycat: ['7L19', '6L18', '5L18', '4L11'],\n      cosmicpower: ['7E', '6E'],\n      covet: ['7T', '7L34', '6T', '6L34', '5T', '5L36', '4L32', '3L31'],\n      defensecurl: ['3T'],\n      dig: ['6M', '5M', '4M', '3M'],\n      disarmingvoice: ['7L13', '6L13'],\n      doubleedge: ['7L40', '6L40', '5L42', '4L39', '3T', '3L39'],\n      doubleslap: ['7L16', '6L15', '5L15', '4L15', '3L15'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['7L1', '7E', '6L1', '6E', '5L1', '5E', '4L1', '4E'],\n      faketears: ['7E', '6E', '5E', '4E', '3E'],\n      feintattack: ['7L22', '6L22', '5L29', '4L25', '3L27'],\n      flash: ['6M', '5M', '4M', '3M'],\n      foresight: ['7L4', '6L4', '5L4', '5D', '4L4'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      growl: ['7L1', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1', '3S2'],\n      headbutt: ['4T'],\n      healbell: ['7T', '7L37', '6T', '6L37', '5T', '5L39', '4T', '4L36', '3L37'],\n      helpinghand: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['7T', '6T', '5T'],\n      icebeam: ['7M', '6M', '5M', '4M', '3M'],\n      icywind: ['7T', '6T', '5T', '4T', '3T'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      lastresort: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      mimic: ['3T'],\n      mudbomb: ['7E', '6E', '5E', '4E'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      payday: ['3S0'],\n      playrough: ['7L46', '6L46'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T', '3S1'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      simplebeam: ['7E', '6E', '5E'],\n      sing: ['7L7', '6L7', '5L11', '4L8', '3L13'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['7M', '6M', '5M', '4M', '3M'],\n      substitute: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      suckerpunch: ['7E', '6E', '5E', '4T', '4E'],\n      sunnyday: ['7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      tackle: ['7L1', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1', '3S2'],\n      tailwhip: ['7L1', '6L1', '5L1', '4L1', '3L3', '3S0', '3S1', '3S2'],\n      thunder: ['7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['7M', '6M', '5M', '4M', '3T'],\n      tickle: ['7E', '6E', '5E', '5D', '4E', '3E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['7T', '7E', '6T', '6E', '5T', '5E', '4E', '3E'],\n      wakeupslap: ['7L28', '6L28', '5L32', '4L29'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wildcharge: ['7M', '6M', '5M'],\n      wish: ['7E', '6E', '5E', '4E', '3E'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E']\n    }\n  ],\n  [\n    'delcatty',\n    {\n      attract: ['7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1', '3S0'],\n      blizzard: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['3T'],\n      calmmind: ['7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      defensecurl: ['3T'],\n      dig: ['6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleslap: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['7L1', '6L1', '5L1', '4L1'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      growl: ['3L1'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['7T', '6T', '5T'],\n      icebeam: ['7M', '6M', '5M', '4M', '3M'],\n      icywind: ['7T', '6T', '5T', '4T', '3T'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M', '3S0'],\n      shadowball: ['7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M', '3S0'],\n      sing: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['7M', '6M', '5M', '4M', '3M'],\n      stompingtantrum: ['7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['3S0'],\n      swift: ['4T', '3T'],\n      thunder: ['7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['7T', '6T', '5T'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wildcharge: ['7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'sableye',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L3', '8L3', '7L9', '6L9', '5L11', '4L11', '3L13'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M', '6S3', '5M', '4M', '3M'],\n      captivate: ['7E', '6E', '5E', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '8L6', '7L31', '6L31', '5L46', '4L46', '3L37'],\n      counter: ['3T'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      detect: ['9L18', '8L18', '7L14', '6L14', '5L22', '4L22', '3L25'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      disable: ['9L15', '8L15'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['3T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9L12', '8L12', '7L21', '6L18', '5L18', '4L18', '3L21'],\n      feint: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      feintattack: ['7L19', '6L19', '5L32', '4L32', '3L29', '3S1'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      flash: ['6M', '5M', '4M', '3M'],\n      flatter: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foresight: ['7L4', '6L4', '5L4', '5D', '4L4', '3L5', '3S0'],\n      foulplay: ['9M', '9L48', '8M', '8L48', '7T', '7L41', '6T', '6L41', '5T', '5L50', '5S2'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      furyswipes: ['9L24', '8L24', '7L11', '6L11', '5L15', '4L15', '3L17'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '8M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M', '3S1'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '8M', '7E', '6E'],\n      incinerate: ['6M', '5M'],\n      knockoff: ['9M', '9L27', '8L27', '7T', '7L26', '6T', '6L26', '5T', '5L29', '4T', '4L29', '3L33'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      lightscreen: ['9M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      meanlook: ['9L36', '8L36', '7L46', '7E', '6L1', '6E', '5L60', '5E', '4L57', '3L45'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metalburst: ['9E', '8E', '7E', '6E', '5E'],\n      metalclaw: ['9M'],\n      metronome: ['9M', '8M', '3T'],\n      mimic: ['3T'],\n      moonlight: ['7E', '6E', '5E', '4E', '3E'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      nastyplot: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      nightshade: ['9M', '9L21', '8L21', '7L6', '6L6', '5L8', '4L8', '3L9', '3S0'],\n      octazooka: ['5S2'],\n      ominouswind: ['4T'],\n      painsplit: ['9M', '7T', '6T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      phantomforce: ['9M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poltergeist: ['9M', '8T'],\n      powergem: ['9M', '9L39', '8M', '8L39', '7L36', '6L36', '5L43', '4L43'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      punishment: ['7L24', '6L24', '5L36', '4L36'],\n      quash: ['9L30', '8L30', '7M', '7L44', '6M', '6L44'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      recover: ['9E', '8E', '7E', '6E', '6S3', '6S4', '5E', '4E', '3E', '3S1'],\n      reflect: ['9M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '9L45', '8M', '8L45', '7M', '7L39', '6M', '6L39', '6S3', '5M', '5L57', '4M', '4L53', '3M', '3L41', '3S1'],\n      shadowclaw: ['9M', '9L33', '8M', '8L33', '7M', '7L29', '6M', '6L29', '5M', '5L39', '4M', '4L39'],\n      shadowsneak: ['9L9', '8L9', '7L16', '6L16', '5L25', '4L25'],\n      shockwave: ['7T', '6T', '6S4', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9E', '8E', '7E', '6E', '5E', '5D', '4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '6S4', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M'],\n      tickle: ['5S2'],\n      torment: ['9E', '8E', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '5S2', '4T'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      willowisp: ['9M', '8M', '7M', '6M', '6S3', '6S4', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      xscissor: ['9M'],\n      zenheadbutt: ['9M', '9L42', '8M', '8L42', '7T', '7L34', '6T', '6L1', '5T', '5L53', '4T', '4L50']\n    }\n  ],\n  [\n    'mawile',\n    {\n      ancientpower: ['8E', '7E', '6E', '5E', '4T', '4E', '3E'],\n      assurance: ['8M'],\n      astonish: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M', '8L8', '7L25', '6L25', '5L31', '4L31', '3L31'],\n      bite: ['8L12', '7L9', '6L9', '5L11', '4L11', '3L11'],\n      bodyslam: ['8M', '3T'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M'],\n      captivate: ['7E', '6E', '5E', '4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['8M', '8L28', '7L29', '6L29', '5L36', '4L36', '3L36'],\n      darkpulse: ['8M', '7M', '6M', '5T', '4M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['8M'],\n      dynamicpunch: ['3T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fairywind: ['8L4', '7L1', '6L1'],\n      faketears: ['8M', '8L44', '7L5', '6L5', '5L6', '5D', '4L6', '3L6', '3S0'],\n      falseswipe: ['8M', '7M', '6M', '5M', '4E', '3E', '3S1'],\n      feintattack: ['7L21', '6L21', '5L26', '4L26', '3L26'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['8M', '7E', '6E', '6S2', '5E', '5D', '4E'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flashcannon: ['8M', '7M', '6M', '5M', '4M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      foulplay: ['8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '7L1', '6L1'],\n      guardswap: ['8M', '7E', '6E', '5E', '4E'],\n      headbutt: ['4T'],\n      helpinghand: ['8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['8M', '7E', '6E', '5E', '4E'],\n      icepunch: ['8M', '7T', '6T', '5T', '5D', '4T', '3T'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['8M', '8L24', '7T', '7L33', '6T', '6L33', '5T', '5L41', '4T', '4L41', '3L41', '3S1'],\n      ironhead: ['8M', '8L36', '7T', '7L1', '6T', '6L1', '6S2', '6S3', '5T', '5L56', '4T', '4L56'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metalburst: ['7E', '6E', '5E'],\n      mimic: ['3T'],\n      mistyterrain: ['8M', '7E', '6E'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      playrough: ['8M', '8L48', '7L1', '6L1', '6S2', '6S3'],\n      poisonfang: ['7E', '6E', '5E', '4E', '3E'],\n      poweruppunch: ['8E', '7E', '6M'],\n      protect: ['8M', '7M', '6M', '6S3', '5M', '4M', '3M'],\n      psychicfangs: ['8M'],\n      psychup: ['7M', '6M', '5M', '4E', '3T', '3E'],\n      punishment: ['7E', '6E', '5E', '4E'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['8E', '7E', '6E', '3T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      sing: ['3S1'],\n      slam: ['8E', '7E', '6E', '5E'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      spitup: ['8L16', '7L41', '6L41', '5L51', '4L51', '3L46'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      steelbeam: ['8T'],\n      stockpile: ['8L16', '7L41', '6L41', '5L51', '4L51', '3L46'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['8L20', '7L37', '7E', '6L37', '6E', '6S2', '6S3', '5L46', '5E', '4T', '4L46', '4E'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swallow: ['8L16', '7L41', '6L41', '5L51', '4L51', '3L46'],\n      sweetscent: ['8L32', '7L13', '6L13', '5L16', '4L16', '3L16'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      taunt: ['8M', '8L40', '7M', '7L1', '6M', '6L1', '5M', '4M', '3M'],\n      thunderfang: ['8M', '7E', '6E', '5E', '4E'],\n      thunderpunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      tickle: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      visegrip: ['7L17', '6L17', '5L21', '4L21', '3L21', '3S1']\n    }\n  ],\n  [\n    'aron',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      autotomize: ['8L40', '7L43', '6L39', '5L39'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '7E', '6E', '5E', '4E', '3T', '3E'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['8E', '7E', '6E', '5E', '4E'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8L56', '7L40', '6L40', '5L46', '4L43', '3T', '3L44'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragonrush: ['8E', '7E', '6E', '5E', '4E'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      endeavor: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '5D', '4L4', '3L4'],\n      headbutt: ['8L16', '7L7', '6L7', '5L8', '4T', '4L11', '3L10'],\n      headsmash: ['8E', '7E', '6E', '5E', '5D', '4E'],\n      heavyslam: ['8M', '8L52', '7L46', '6L43', '5L43'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      irondefense: ['8M', '8L48', '7T', '7L37', '6T', '6L15', '5T', '5L15', '4T', '4L18', '3L17'],\n      ironhead: ['8M', '8L28', '7T', '7L22', '7E', '6T', '6L22', '6E', '5T', '5L25', '5E', '4T', '4L29', '4E'],\n      irontail: ['8M', '8L44', '7T', '7L34', '6T', '6L34', '5T', '5L36', '4M', '4L39', '3M', '3L29'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      metalburst: ['8L60', '7L49', '6L49', '5L50', '4L46'],\n      metalclaw: ['8L4', '7L10', '6L10', '5L11', '4L15', '3L13'],\n      metalsound: ['8L33', '7L31', '6L31', '5L32', '4L36', '3L39'],\n      mimic: ['3T'],\n      mudslap: ['8E', '7L4', '6L4', '5L4', '4T', '4L8', '3T', '3L7'],\n      naturalgift: ['4M'],\n      protect: ['8M', '8L20', '7M', '7L16', '6M', '6L16', '5M', '5L29', '4M', '4L32', '3M', '3L34'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['8M', '7E', '6E'],\n      roar: ['8L12', '7M', '7L19', '6M', '6L18', '5M', '5L18', '4M', '4L22', '3M', '3L21'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '8L24', '7M', '7L25', '6M', '6L25', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '8L8', '7M', '7L13', '6M', '6L13', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      screech: ['8M', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      smellingsalts: ['7E', '6E', '5E', '4E', '3E'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      stomp: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['8L36', '7L28', '6L22', '5L22', '4L25', '3L25'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M', '3M']\n    }\n  ],\n  [\n    'lairon',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      autotomize: ['8L46', '7L47', '6L45', '5L45'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '3T'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8L70', '7L43', '6L43', '5L56', '4L51', '3T', '3L53'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8L16', '7L1', '6L1', '5L1', '4T', '4L1', '3L1'],\n      heavyslam: ['8M', '8L64', '7L51', '6L51', '5L51'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      irondefense: ['8M', '8L58', '7T', '7L39', '6T', '6L15', '5T', '5L15', '4T', '4L18', '3L17'],\n      ironhead: ['8M', '8L28', '7T', '7L22', '6T', '6L22', '5T', '5L25', '4T', '4L29'],\n      irontail: ['8M', '8L52', '7T', '7L35', '6T', '6L35', '5T', '5L40', '4M', '4L45', '3M', '3L29'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      metalburst: ['8L76', '7L55', '6L55', '5L62', '4L56'],\n      metalclaw: ['8L1', '7L10', '6L10', '5L11', '4L15', '3L13'],\n      metalsound: ['8L35', '7L31', '6L31', '5L34', '4L40', '3L45'],\n      mimic: ['3T'],\n      mudslap: ['7L1', '6L1', '5L1', '4T', '4L1', '3T', '3L1'],\n      naturalgift: ['4M'],\n      protect: ['8M', '8L20', '7M', '7L16', '6M', '6L16', '5M', '5L29', '4M', '4L34', '3M', '3L37'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['8M'],\n      roar: ['8L12', '7M', '7L19', '6M', '6L18', '5M', '5L18', '4M', '4L22', '3M', '3L21'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '8L24', '7M', '7L25', '6M', '6L25', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '8L1', '7M', '7L13', '6M', '6L13', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['8M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['8L40', '7L28', '6L22', '5L22', '4L25', '3L25'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M', '3M']\n    }\n  ],\n  [\n    'aggron',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      autotomize: ['8L48', '7L51', '6L48', '5L48'],\n      avalanche: ['8M', '4M'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '3T'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['8M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['8M', '7M', '6M', '5T', '4M'],\n      defensecurl: ['3T'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['8L80', '7L45', '6L45', '5L65', '4L57', '3T', '3L63', '3S0'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragonclaw: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      dragonpulse: ['8M', '7T', '6T', '5T', '4M'],\n      dragontail: ['7M', '6M', '5M'],\n      dynamicpunch: ['3T'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '7M', '6M', '6S2', '5M', '4M', '3M'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flashcannon: ['8M', '7M', '6M', '5M', '4M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['8L16', '7L1', '6L1', '5L1', '4T', '4L1', '3L1'],\n      headsmash: ['6S2'],\n      heavyslam: ['8M', '8L72', '7L57', '6L57', '5L57'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['8M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['8M', '8L64', '7T', '7L39', '6T', '6L15', '5T', '5L15', '4T', '4L18', '3L17'],\n      ironhead: ['8M', '8L28', '7T', '7L22', '6T', '6L22', '6S2', '5T', '5L25', '4T', '4L29'],\n      irontail: ['8M', '8L56', '7T', '7L35', '6T', '6L35', '5T', '5L40', '4M', '4L48', '3M', '3L29', '3S0', '3S1'],\n      lowkick: ['8M', '7T', '6T', '5T', '4T'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metalburst: ['8L88', '7L63', '6L63', '5L74', '4L65'],\n      metalclaw: ['8L1', '7L10', '6L10', '5L11', '4L15', '3L13'],\n      metalsound: ['8L35', '7L31', '6L31', '5L34', '4L40', '3L50', '3S0', '3S1'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      mudslap: ['7L1', '6L1', '5L1', '4T', '4L1', '3T', '3L1'],\n      naturalgift: ['4M'],\n      outrage: ['8M', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '8L20', '7M', '7L16', '6M', '6L16', '5M', '5L29', '4M', '4L34', '3M', '3L37', '3S0', '3S1'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['8M'],\n      roar: ['8L12', '7M', '7L19', '6M', '6L18', '5M', '5L18', '4M', '4L22', '3M', '3L21'],\n      rockblast: ['8M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '8L24', '7M', '7L25', '6M', '6L25', '6S2', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '8L1', '7M', '7L13', '6M', '6L13', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['8M'],\n      scaryface: ['8M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      surf: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['8L40', '7L28', '6L22', '5L22', '4L25', '3L25', '3S1'],\n      taunt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'meditite',\n    {\n      acupressure: ['9L33', '7L33', '6L33', '5L39'],\n      aerialace: ['9M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      bide: ['7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulletpunch: ['9E', '7E', '6E', '5E', '4E'],\n      calmmind: ['9M', '9L23', '7M', '7L23', '6M', '6L23', '5M', '5L25', '4M', '4L25', '3M', '3L28'],\n      captivate: ['4M'],\n      closecombat: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '7L7', '6L7', '5L8', '4L8', '3L9', '3S0', '3S1'],\n      counter: ['9L44', '7L44', '6L44', '3T'],\n      detect: ['9L9', '7L9', '6L9', '5L11', '4L11', '3L12', '3S1'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['9E', '7E', '6E', '5E', '4E', '3T', '3E', '3S1'],\n      endure: ['9M', '9L12', '7L12', '6L12', '5D', '4M', '3T'],\n      expandingforce: ['9M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      feint: ['9L15', '7L15', '6L15', '5L22', '4L22'],\n      firepunch: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      forcepalm: ['9L17', '7L17', '6L17', '5L29', '4L29'],\n      foresight: ['7E', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      gravity: ['7T', '6T', '5T', '4T'],\n      guardswap: ['9E', '7E', '6E', '5E', '4E'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7L20', '6M', '6L15', '5M', '5L15', '4M', '4L15', '3M', '3L17'],\n      highjumpkick: ['9L28', '7L28', '6L28', '5L32', '4L32', '3L32'],\n      icepunch: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      imprison: ['9M'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      meditate: ['7L4', '6L4', '5L4', '5D', '4L4', '3L4', '3S0'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      mindreader: ['7L25', '6L18', '5L18', '4L18', '3L22'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      powerswap: ['9E', '7E', '6E', '5E', '4E'],\n      powertrick: ['9L36', '7L36', '6L36', '5L43', '4L39'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L20'],\n      psychic: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychicterrain: ['9M'],\n      psychocut: ['9E', '7E', '6E', '5E', '4E'],\n      psychup: ['9M', '9L31', '7M', '7L31', '6M', '6L31', '5M', '5L36', '4M', '4L36', '3T', '3L36'],\n      psyshock: ['9M', '7M', '6M', '5M'],\n      quickguard: ['9E', '7E', '6E'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      recover: ['9L41', '7L41', '6L41', '5L50', '4L46', '3L44'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '9L39', '7L39', '6L39', '5L46', '4L43', '3L41'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['7E', '6M', '6E', '5E', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M', '3S1'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T', '3L20'],\n      swift: ['9M', '4T', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['4T'],\n      workup: ['9L1', '7M', '5M'],\n      zenheadbutt: ['9M', '9L25', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'medicham',\n    {\n      acupressure: ['9L33', '7L33', '6L33', '5L42'],\n      aerialace: ['9M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M'],\n      axekick: ['9L53'],\n      batonpass: ['9M'],\n      bide: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      calmmind: ['9M', '9L23', '7M', '7L23', '6M', '6L23', '5M', '5L25', '4M', '4L25', '3M', '3L28'],\n      captivate: ['4M'],\n      closecombat: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      counter: ['9L53', '7L53', '6L53', '3T'],\n      detect: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['3T'],\n      endure: ['9M', '9L12', '7L12', '6L12', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['9L15', '7L15', '6L15', '5L22', '4L22'],\n      firepunch: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T', '3L1'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      forcepalm: ['9L17', '7L17', '6L17', '5L29', '4L29'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7L20', '6M', '6L15', '5M', '5L15', '4M', '4L15', '3M', '3L17'],\n      highjumpkick: ['9L28', '7L28', '6L28', '5L32', '4L32', '3L32'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T', '3L1'],\n      imprison: ['9M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      meditate: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      mindreader: ['7L25', '6L18', '5L18', '4L18', '3L22'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      powertrick: ['9L36', '7L36', '6L36', '5L49', '4L42'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L20'],\n      psychic: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '9L31', '7M', '7L31', '6M', '6L31', '5M', '5L36', '4M', '4L36', '3T', '3L36'],\n      psyshock: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      recover: ['9L47', '7L47', '6L47', '5L62', '4L55', '3L54'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['9M', '7L42', '6L42', '5L55', '4L49', '3L46'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T', '3L20'],\n      swift: ['9M', '4T', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T', '3L1'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '4T'],\n      workup: ['9L1', '7M', '5M'],\n      zenheadbutt: ['9M', '9L25', '7T', '7L1', '6T', '6L1', '5T', '4T']\n    }\n  ],\n  [\n    'electrike',\n    {\n      agility: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bite: ['8L20', '7L24', '6L24', '5L28', '4L28', '3L33'],\n      bodyslam: ['8M', '3T'],\n      captivate: ['4M'],\n      charge: ['8L36', '7L44', '6L44', '5L44', '4L44', '3L41'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '7E', '6E', '5E', '4E', '3E'],\n      curse: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      discharge: ['8L32', '7L29', '7E', '6L29', '6E', '5L41', '5E', '4L41', '4E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['8M', '7E', '6E'],\n      electroball: ['8M', '7E', '6E', '5E'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['8M', '7E', '6E', '5E', '4E'],\n      flameburst: ['7E', '6E', '5E'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['8E', '7E', '6E', '5E', '4T', '4E', '3E'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      howl: ['8L8', '7L7', '6L7', '5L12', '4L12', '3L12'],\n      icefang: ['8M', '7E', '6E', '5E', '5D', '4E'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      leer: ['8L4', '7L4', '6L4', '5L9', '4L9', '3L9'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L16', '6L16', '5L25', '4L25', '3L25'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['8M'],\n      quickattack: ['8L12', '7L10', '6L10', '5L17', '4L17', '3L17'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      roar: ['8L28', '7M', '7L34', '6M', '6L34', '5M', '5L36', '4M', '4L36', '3M', '3L28'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['8L16', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '5D', '4T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spark: ['8E', '7L13', '6L13', '5L20', '4L20', '3L20'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '7E', '6E', '5E', '4T', '4E', '3T', '3E'],\n      switcheroo: ['8E', '7E', '6E', '5E', '4E'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['8M', '8L44', '7M', '7L49', '6M', '6L49', '5M', '5L52', '4M', '4L49', '3M', '3L36'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderfang: ['8M', '8L24', '7L19', '7E', '6L19', '6E', '5L33', '5E', '4L33', '4E'],\n      thunderwave: ['8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L4', '5D', '4M', '4L4', '3T', '3L4'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4E', '3E'],\n      voltswitch: ['8M', '7M', '6M', '5M'],\n      wildcharge: ['8M', '8L40', '7M', '7L39', '6M', '6L39', '5M', '5L49']\n    }\n  ],\n  [\n    'manectric',\n    {\n      agility: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bite: ['8L20', '7L24', '6L24', '5L30', '4L30', '3L39', '3S0'],\n      bodyslam: ['8M', '3T'],\n      captivate: ['4M'],\n      charge: ['8L42', '7L48', '6L48', '5L54', '4L54', '3L53'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M'],\n      discharge: ['8L36', '7L30', '6L30', '5L49', '4L49'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['8M'],\n      electricterrain: ['8M', '8L60', '7L1', '6L1'],\n      electroball: ['8M'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      howl: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['8M'],\n      icefang: ['8M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      leer: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7L16', '6L16', '5L25', '4L25', '3L25'],\n      overheat: ['8M', '7M', '6M', '6S1', '5M', '4M'],\n      protect: ['8M', '7M', '6M', '6S1', '5M', '4M', '3M'],\n      psychicfangs: ['8M'],\n      quickattack: ['8L12', '7L10', '6L10', '5L17', '4L17', '3L17'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M', '3S0'],\n      refresh: ['3S0'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      risingvoltage: ['8T'],\n      roar: ['8L30', '7M', '7L36', '6M', '6L36', '5M', '5L42', '4M', '4L42', '3M', '3L31'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      shockwave: ['8L16', '7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spark: ['7L13', '6L13', '5L20', '4L20', '3L20'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '4T', '3T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['8M', '8L54', '7M', '7L54', '6M', '6L54', '5M', '5L66', '4M', '4L61', '3M', '3L45', '3S0'],\n      thunderbolt: ['8M', '7M', '6M', '6S1', '5M', '4M', '3M'],\n      thunderfang: ['8M', '8L24', '7L19', '6L19', '5L37', '4L37'],\n      thunderwave: ['8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3T', '3L1'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      voltswitch: ['8M', '7M', '6M', '6S1', '5M'],\n      wildcharge: ['8M', '8L48', '7M', '7L42', '6M', '6L42', '5M', '5L61']\n    }\n  ],\n  [\n    'plusle',\n    {\n      agility: ['9M', '9L37', '7L37', '6L37', '5L48', '4L44', '3L47'],\n      alluringvoice: ['9M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '9L34', '7L34', '6L34', '5L44', '4L42', '3L40'],\n      bestow: ['7L13', '6L13'],\n      bodyslam: ['3T'],\n      captivate: ['4M'],\n      charge: ['9M', '9L26', '7L28', '6L28', '5L38', '4L35', '3L31'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9E', '7L25', '7E', '6L25'],\n      confide: ['7M', '6M'],\n      copycat: ['9L22', '7L22', '6L22', '5L24', '4L24'],\n      counter: ['3T'],\n      covet: ['7T'],\n      defensecurl: ['3T'],\n      discharge: ['9L31', '7L31', '7E', '6L31', '6E', '5E', '5D', '4E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L19', '7L19', '6L19', '5L29'],\n      electroweb: ['9M', '7T', '6T'],\n      encore: ['9M', '9L10', '7L10', '6L10', '5L17', '4L17', '3L22'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      entrainment: ['9L49', '7L49', '6L1', '5L63'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '7E', '6L35', '5L21', '4L21', '3L28'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '9L4', '7T', '7L4', '6T', '6L4', '5T', '5L10', '4T', '4L10', '3L13'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      lastresort: ['9L40', '7T', '7L40', '6T', '6L40', '5T', '5L51', '4T', '4L48'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7E', '6E', '5E'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['3T'],\n      mimic: ['3T'],\n      mudslap: ['9M', '4T', '3T'],\n      nastyplot: ['9M', '9L46', '7L46', '6L1', '5L56', '4L51'],\n      naturalgift: ['4M'],\n      nuzzle: ['9L1', '7L1', '6L1'],\n      playnice: ['9L1', '7L1', '6L1'],\n      playrough: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L1', '7L1', '6L1', '5L7', '4L7', '3L10', '3S1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '5D', '4T'],\n      sing: ['9E', '7E', '6E', '5E', '4E'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      spark: ['9L7', '7L7', '6L7', '5L15', '4L15', '3L19'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      superfang: ['9M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9E', '7E', '6E', '5E', '4E'],\n      swift: ['9M', '9L16', '7L16', '6L16', '5L31', '4T', '4L29', '3T'],\n      switcheroo: ['9L13'],\n      tearfullook: ['7E'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L43', '7M', '7L43', '6M', '6L42', '5M', '5L42', '4M', '4L38', '3M', '3L37'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L3', '5D', '4M', '4L3', '3T', '3L4', '3S0', '3S1'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      watersport: ['3S0'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      wish: ['9E', '7E', '6E', '5E', '4E', '3E']\n    }\n  ],\n  [\n    'minun',\n    {\n      agility: ['9M', '9L37', '7L37', '6L37', '5L48', '4L44', '3L47'],\n      alluringvoice: ['9M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '9L34', '7L34', '6L34', '5L44', '4L42', '3L40'],\n      bodyslam: ['3T'],\n      captivate: ['4M'],\n      charge: ['9M', '9L26', '7L28', '6L28', '5L38', '4L35', '3L31'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9E', '7E', '6L21', '5L21', '4L21', '3L28'],\n      confide: ['7M', '6M'],\n      copycat: ['9L22', '7L22', '6L22', '5L24', '4L24'],\n      counter: ['3T'],\n      covet: ['7T'],\n      defensecurl: ['3T'],\n      discharge: ['9L31', '7L31', '7E', '6L31', '6E', '5E', '5D', '4E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L19', '7L19', '6L19', '5L29'],\n      electroweb: ['9M', '7T', '6T'],\n      encore: ['9M', '9L10', '7L10', '6L10', '5L17', '4L17', '3L22'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      entrainment: ['9L49', '7L49', '6L1', '5L63'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '9E', '7L25', '7E', '6L25', '5L35', '4L31'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '9L4', '7T', '7L4', '6T', '6L4', '5T', '5L10', '4T', '4L10', '3L13'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      lastresort: ['9L40', '7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7E', '6E', '5E'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['3T'],\n      mimic: ['3T'],\n      mudslap: ['9M', '4T', '3T'],\n      mudsport: ['3S0'],\n      nastyplot: ['9M', '9L46', '7L46', '6L1', '5L56', '4L51'],\n      naturalgift: ['4M'],\n      nuzzle: ['9L1', '7L1', '6L1'],\n      playnice: ['9L1', '7L1', '6L1'],\n      playrough: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      quickattack: ['9L1', '7L1', '6L1', '5L7', '4L7', '3L10', '3S1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '5D', '4T'],\n      sing: ['9E', '7E', '6E', '5E', '4E'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      spark: ['9L7', '7L7', '6L7', '5L15', '4L15', '3L19'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      superfang: ['9M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9E', '7E', '6E', '5E', '4E'],\n      swift: ['9M', '9L16', '7L16', '6L16', '5L31', '4T', '4L29', '3T'],\n      switcheroo: ['9L13', '7L13', '6L13'],\n      tearfullook: ['7E'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L43', '7M', '7L43', '6M', '6L42', '5M', '5L42', '4M', '4L38', '3M', '3L37'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L3', '5D', '4M', '4L3', '3T', '3L4', '3S0', '3S1'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trumpcard: ['7L40', '6L40', '5L51', '4L48'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      wish: ['9E', '7E', '6E', '5E', '4E', '3E']\n    }\n  ],\n  [\n    'volbeat',\n    {\n      acrobatics: ['9M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '7E', '6E', '5E', '4E', '3E'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '9L36', '7L40', '7E', '6L40', '6E', '5L41', '5E', '4L41', '4E'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L8', '7L8', '6L8', '5L9', '4L9', '3L5'],\n      counter: ['9E', '3T'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defog: ['7T'],\n      dizzypunch: ['7E', '6E', '5E'],\n      doubleedge: ['9M', '9L43', '7L47', '6L45', '5L45', '4L45', '3T', '3L37'],\n      doubleteam: ['9L5', '7M', '7L5', '6M', '6L5', '5M', '5L5', '4M', '4L5', '3M', '3L9'],\n      dynamicpunch: ['3T'],\n      encore: ['9M', '7E', '6E', '5E', '4E'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['7L1', '6M', '6L1', '5M', '5L1', '5D', '4M', '4L1', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      helpinghand: ['9M', '9L33', '7T', '7L36', '6T', '6L33', '5T', '5L33', '4T', '4L33', '3L33'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      infestation: ['9L47', '7M', '7L50'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      lunge: ['9M', '7E'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      moonlight: ['9L19', '7L19', '6L13', '5L13', '4L13', '3L13'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      playrough: ['9M', '9L40', '7L43', '6L43'],\n      pounce: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L26', '7M', '7L29', '6M', '6L29', '5M', '5L29', '4M', '4L29', '3M', '3L29'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      quickattack: ['9L12', '7L12', '6L12', '5L17', '4L17', '3L17'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roost: ['9E', '7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['9E', '7E', '6E', '5E', '3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '7L26', '6T', '6L25', '5T', '5L25', '4T', '4L25', '3L25'],\n      silverwind: ['7E', '6E', '5E', '4M', '4E', '3E'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '9L15', '7L15', '6M', '6L15', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['9E', '7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '4T', '3T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      tailglow: ['9L22', '7L22', '6L21', '5L21', '4L21', '3L21'],\n      tailwind: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4E', '3E'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      zenheadbutt: ['9M', '9L29', '7T', '7L33', '6T', '6L33', '5T', '5L37', '4T', '4L37']\n    }\n  ],\n  [\n    'illumise',\n    {\n      acrobatics: ['9M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M'],\n      aromatherapy: ['7E'],\n      attract: ['9E', '7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M', '7E', '6E', '5E', '4E', '3E'],\n      bodyslam: ['3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '9L40', '7L40', '7E', '6L40', '6E', '5L41', '5E', '4L41', '4E'],\n      captivate: ['7E', '6E', '5E', '4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L9', '7L9', '6L9', '5L9', '5D', '4L9', '3L9'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '7E', '6E', '5E'],\n      counter: ['3T'],\n      covet: ['7T', '7L47', '6T', '6L45', '5T', '5L45', '4L45', '3L37'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defog: ['7T'],\n      disarmingvoice: ['9M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M'],\n      dynamicpunch: ['3T'],\n      encore: ['9M', '9L26', '7L26', '7E', '6L25', '6E', '5L25', '5E', '4L25', '4E', '3L25'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '7E', '6E', '5E', '5D'],\n      flash: ['6M', '5M', '4M', '3M'],\n      flatter: ['9L29', '7L29', '6L29', '5L29', '4L29', '3L29'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      growth: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      helpinghand: ['9M', '9L36', '7T', '7L36', '6T', '6L33', '5T', '5L33', '4T', '4L33', '3L33'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      infestation: ['9L47', '7M', '7L50'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      moonlight: ['9L19', '7L19', '6L13', '5L13', '4L13', '3L13'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      playnice: ['9L1', '7L1', '6L1'],\n      playrough: ['9M', '9L43', '7L43', '6L43'],\n      pounce: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      quickattack: ['9L12', '7L12', '6L12', '5L17', '4L17', '3L17'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roost: ['9E', '7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      silverwind: ['7E', '6E', '5E', '4M', '4E', '3E'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '9L15', '7L15', '6M', '6L15', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L5', '7L5', '6L5', '5L5', '4L5', '3L5'],\n      swift: ['9M', '4T', '3T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wish: ['9L22', '7L22', '6L21', '5L21', '4L21', '3L21'],\n      zenheadbutt: ['9M', '9L33', '7T', '7L33', '6T', '6L33', '5T', '5L37', '4T', '4L37']\n    }\n  ],\n  [\n    'budew',\n    {\n      absorb: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bulletseed: ['8M', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cottonspore: ['8E', '7E', '6E', '5E', '4E'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endure: ['8M', '4M'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      extrasensory: ['8E', '7E', '6E', '5E', '4E'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['7E', '6E', '5E'],\n      grassyglide: ['8T'],\n      growth: ['8L1', '7L4', '6L4', '5L4', '4L4'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      leafstorm: ['8M', '7E', '6E', '5E', '4E'],\n      lifedew: ['8E'],\n      megadrain: ['7L13', '6L13', '5L13', '4L13'],\n      mindreader: ['7E', '6E', '5E', '4E'],\n      mudslap: ['4T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      naturepower: ['7M', '6M'],\n      pinmissile: ['8M', '7E', '6E', '5E', '4E'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      razorleaf: ['8E', '7E', '6E', '5E', '4E'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      sleeppowder: ['8E', '7E', '6E', '5E', '4E'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M'],\n      spikes: ['8M', '7E', '6E', '5E', '4E'],\n      stunspore: ['8L1', '7L10', '6L10', '5L10', '4L10'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['8M', '4T'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      watersport: ['7L7', '6L7', '5L7', '4L7'],\n      weatherball: ['8M'],\n      worryseed: ['8L1', '7T', '7L16', '6T', '6L16', '5T', '5L16', '4T', '4L16']\n    }\n  ],\n  [\n    'roselia',\n    {\n      absorb: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      aromatherapy: ['8L50', '7L43', '6L43', '5L43', '4L43', '3L53'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      bulletseed: ['8M', '7E', '6E', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cottonspore: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '4M', '3T'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      extrasensory: ['8E'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigadrain: ['8M', '8L30', '7T', '7L25', '7E', '6T', '6L25', '6E', '5T', '5L25', '5E', '4M', '4L25', '3M', '3L33'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['7L22', '7E', '6L22', '6E', '5L22', '5E', '4L22', '3L29', '3S1'],\n      grassyglide: ['8T'],\n      growth: ['8L1', '7L4', '6L4', '5L4', '5D', '4L4', '3L5', '3S0'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      ingrain: ['8L55', '7L34', '6L34', '5L34', '4L34', '3L41'],\n      leafstorm: ['8M', '7E', '6E', '5E', '4E'],\n      leechseed: ['8L10', '7L16', '6L16', '5L16', '4L16', '3L21', '3S1'],\n      lifedew: ['8E'],\n      magicalleaf: ['8M', '8L15', '7L19', '6L19', '5L19', '4L19', '3L25', '3S1'],\n      megadrain: ['8L5', '7L13', '6L13', '5L13', '4L13', '3L17'],\n      mimic: ['3T'],\n      mindreader: ['7E', '6E', '5E', '4E'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      naturepower: ['7M', '6M'],\n      nightmare: ['3T'],\n      petalblizzard: ['8L45', '7L37', '6L37'],\n      petaldance: ['8L60', '7L50', '6L37', '5L37', '4L40', '3L49'],\n      pinmissile: ['8M', '7E', '6E', '5E', '4E', '3E'],\n      poisonjab: ['8M', '7M', '6M', '5M', '4M'],\n      poisonsting: ['8L0', '7L7', '6L7', '5L7', '4L7', '3L9', '3S0'],\n      powerwhip: ['8M', '7E'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      razorleaf: ['8E', '7E', '6E', '5E', '4E'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sleeppowder: ['8E', '7E', '6E', '5E', '5D', '4E'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      spikes: ['8M', '7E', '6E', '5E', '4E', '3E'],\n      stunspore: ['8L1', '7L10', '6L10', '5L10', '4L10', '3L13'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['3S1'],\n      sweetscent: ['8L25', '7L31', '6L31', '5L31', '4L31', '3L37'],\n      swift: ['8M', '5D', '4T', '3T'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['8L35', '7T', '7L46', '7E', '6T', '6L46', '6E', '5T', '5L46', '5E', '4T', '4L46', '4E', '3L57', '3E'],\n      toxic: ['8L40', '7M', '7L40', '6M', '6L40', '5M', '5L37', '4M', '4L37', '3M', '3L45'],\n      toxicspikes: ['8M', '8L20', '7L28', '6L28', '5L28', '4L28'],\n      uproar: ['8M'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      weatherball: ['8M'],\n      worryseed: ['8L1', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'roserade',\n    {\n      absorb: ['8L1'],\n      aromatherapy: ['8L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['8M'],\n      bulletseed: ['8M', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endure: ['8M', '4M'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigadrain: ['8M', '8L1', '7T', '6T', '5T', '4M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['8T'],\n      grassyterrain: ['8M', '8L1', '7L1', '6L1'],\n      growth: ['8L1'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M'],\n      ingrain: ['8L1'],\n      laserfocus: ['7T'],\n      leafstorm: ['8M'],\n      leechseed: ['8L1'],\n      magicalleaf: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      megadrain: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['8L1'],\n      petaldance: ['8L1'],\n      pinmissile: ['8M'],\n      poisonjab: ['8M', '7M', '6M', '5M', '4M'],\n      poisonsting: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      powerwhip: ['8M'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M'],\n      spikes: ['8M'],\n      stunspore: ['8L1'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      sweetscent: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      swift: ['8M', '4T'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['8L1', '7T', '6T', '5T', '4T'],\n      toxic: ['8L1', '7M', '6M', '5M', '4M'],\n      toxicspikes: ['8M', '8L1'],\n      uproar: ['8M'],\n      venomdrench: ['8M', '8L1', '7L1', '6L1'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      weatherball: ['8M', '7L1', '6L1', '5L1', '4L1'],\n      worryseed: ['8L1', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'gulpin',\n    {\n      acidarmor: ['9E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      acidspray: ['9M', '9L17', '7L17', '6L17', '5L34'],\n      amnesia: ['9M', '9L12', '7L12', '6L12', '5L17', '4L17', '3L17'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      belch: ['9L41', '7L41', '6L40'],\n      bodyslam: ['9M', '3T'],\n      bulletseed: ['9M', '4M', '3M'],\n      captivate: ['4M'],\n      clearsmog: ['9E'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      defensecurl: ['3T'],\n      destinybond: ['9E', '7E', '6E', '5E', '4E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      dynamicpunch: ['3T'],\n      encore: ['9M', '9L20', '7L20', '6L20', '5L23', '4L23', '3L23'],\n      endure: ['9M', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      fling: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gastroacid: ['9L36', '7T', '7L36', '6T', '6L36', '5T', '5L49', '4T', '4L44'],\n      gigadrain: ['9M', '7T', '6T', '5T', '5D', '4M', '3M'],\n      gunkshot: ['9M', '9L49', '7T', '7L49', '7E', '6T', '6L49', '6E', '5T', '5L59', '5E', '4T', '4L54'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9E', '7E', '6E', '5E', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      painsplit: ['9M', '9L44', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      poisongas: ['9L8', '7L8', '6L8', '5L9', '5D', '4L9', '3L9'],\n      poisonjab: ['9M'],\n      pound: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      selfdestruct: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M', '3S0'],\n      sing: ['3S0'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      sludge: ['9L10', '7L10', '6L10', '5L14', '4L14', '3L14', '3S0'],\n      sludgebomb: ['9M', '9L33', '7M', '7L33', '6M', '6L33', '5M', '5L44', '4M', '4L39', '3M', '3L39'],\n      sludgewave: ['9M', '7M', '6M', '5M'],\n      smog: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spitup: ['9L28', '7L28', '6L28', '5L39', '4L34', '3L34'],\n      stockpile: ['9L28', '7L28', '6L28', '5L39', '4L34', '3L34'],\n      strength: ['6M', '5M', '4M', '3M'],\n      stuffcheeks: ['9E'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swallow: ['9L28', '7L28', '6L28', '5L39', '4L34', '3L34'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M'],\n      toxic: ['9M', '9L25', '7M', '7L25', '6M', '6L25', '5M', '5L28', '4M', '4L28', '3M', '3L28', '3S0'],\n      toxicspikes: ['9M'],\n      venomdrench: ['7E', '6E'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wringout: ['7L44', '6L44', '5L54', '4L49'],\n      yawn: ['9L5', '7L5', '6L5', '5L6', '4L6', '3L6']\n    }\n  ],\n  [\n    'swalot',\n    {\n      acidspray: ['9M', '9L17', '7L17', '6L17', '5L38'],\n      amnesia: ['9M', '9L12', '7L12', '6L12', '5L17', '4L17', '3L17'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      belch: ['9L49', '7L49', '6L46'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L0', '7L1', '6L26', '5L26', '4L26', '3T', '3L26'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M'],\n      defensecurl: ['3T'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      encore: ['9M', '9L20', '7L20', '6L20', '5L23', '4L23', '3L23'],\n      endure: ['9M', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      fling: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gastroacid: ['9L42', '7T', '7L42', '6T', '6L42', '5T', '5L59', '4T', '4L52'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L73', '4T', '4L66'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      knockoff: ['9M'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      poisongas: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      poisonjab: ['9M'],\n      pound: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      selfdestruct: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      sludge: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      sludgebomb: ['9M', '9L37', '7M', '7L37', '6M', '6L37', '5M', '5L52', '4M', '4L45', '3M', '3L48'],\n      sludgewave: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spitup: ['9L30', '7L30', '6L30', '5L45', '4L38', '3L40'],\n      stockpile: ['9L30', '7L30', '6L30', '5L45', '4L38', '3L40'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swallow: ['9L30', '7L30', '6L30', '5L45', '4L38', '3L40'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M'],\n      toxic: ['9M', '9L25', '7M', '7L25', '6M', '6L25', '5M', '5L30', '4M', '4L30', '3M', '3L31'],\n      toxicspikes: ['9M'],\n      venomdrench: ['7L1'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wringout: ['7L1', '6L1', '5L66', '4L59'],\n      yawn: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'carvanha',\n    {\n      agility: ['8M', '8L36', '7L39', '6L36', '5L36', '4L36', '3L43'],\n      ancientpower: ['8E', '7E', '6E', '5E', '4T', '4E'],\n      aquajet: ['8L1', '7L11', '6L11', '5L31', '4L31'],\n      assurance: ['8M', '7L15', '6L15', '5L26', '4L26'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bite: ['8L16', '7L1', '6L1', '6S1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['8M', '7E', '6E', '5E', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L32', '7L36', '6L28', '5L28', '4L28', '3L22'],\n      darkpulse: ['8M', '7M', '6M', '5T', '5D', '4M'],\n      destinybond: ['8E', '7E', '6E'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['8E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flipturn: ['8T'],\n      focusenergy: ['8M', '8L8', '7L8', '6L8', '5L8', '4L8', '3L13'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M', '7E', '6E', '6S1', '5E', '4E', '3E'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['8M', '8L20', '7L25', '6L16', '5L16', '4L16'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      leer: ['8L1', '7L1', '6L1', '6S1', '5L1', '4L1', '3L1'],\n      liquidation: ['8M', '8L40'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonfang: ['8L4', '7L32', '6L32'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['8M', '7E'],\n      rage: ['7L4', '6L4', '5L6', '4L6', '3L7'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['8T'],\n      scaryface: ['8M', '8L12', '7L29', '6L11', '5L11', '4L11', '3L16', '3S0'],\n      screech: ['8M', '8L24', '7L18', '6L18', '5L18', '4L18', '3L28'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      surf: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['8L28', '7M', '7L22', '6M', '6L21', '5M', '5L21', '4M', '4L21', '3T', '3L37'],\n      swift: ['8M', '7E', '6E', '5E', '4T', '3T'],\n      takedown: ['8L44', '7L43', '6L38', '5L38', '4L38', '3L31'],\n      taunt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thrash: ['8E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['8E', '7T', '6T', '4M', '3M', '3S0'],\n      whirlpool: ['8M', '4M'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'sharpedo',\n    {\n      agility: ['8M', '8L40', '7L45', '6L45', '5L45', '4L45', '3L53'],\n      ancientpower: ['4T'],\n      aquajet: ['8L1', '7L11', '6L11', '6S0', '5L34', '4L34'],\n      assurance: ['8M', '7L15', '6L15', '5L26', '4L26'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['8M', '4M'],\n      bite: ['8L16', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['8M', '4M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L34', '7L40', '6L28', '6S0', '6S1', '5L28', '4L28', '3L22'],\n      darkpulse: ['8M', '7M', '6M', '5T', '4M'],\n      destinybond: ['6S0'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['7L1', '6L1', '5L1', '4L1'],\n      flipturn: ['8T'],\n      focusenergy: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icefang: ['8M', '8L20', '7L25', '6L16', '6S0', '5L16', '4L16'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      leer: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      liquidation: ['8M', '8L46', '7T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['8L1', '7L1', '6L1', '5L56', '4L56'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonfang: ['8L1', '7L34', '6L34', '6S1'],\n      poisonjab: ['8M', '7M', '6M', '5M', '4M'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['8M'],\n      rage: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['8T'],\n      scaryface: ['8M', '8L12', '7L29', '6L11', '6S1', '5L11', '4L11', '3L16'],\n      screech: ['8M', '8L24', '7L18', '6L18', '5L18', '4L18', '3L28'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['7L51', '6L50', '5L50', '4L50', '3L48'],\n      slash: ['8L0', '7L1', '6L30', '6S1', '5L30', '4L30', '3L33'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      surf: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['8L28', '7M', '7L22', '6M', '6L21', '5M', '5L21', '4M', '4L21', '3T', '3L43'],\n      swift: ['8M', '4T', '3T'],\n      takedown: ['8L52'],\n      taunt: ['8M', '7M', '7L56', '6M', '6L40', '5M', '5L40', '4M', '4L40', '3M', '3L38'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'wailmer',\n    {\n      amnesia: ['8M', '8L42', '7L37', '6L37', '5L37', '4L37', '3L46'],\n      aquaring: ['8E', '7E', '6E', '5E', '4E'],\n      astonish: ['8L6', '7L16', '6L16', '5L17', '4L17', '3L23'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['8M', '4M'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '8L36', '7E', '6E', '5E', '4E', '3T'],\n      bounce: ['8M', '8L33', '7T', '7L45', '6T', '6L44', '5T', '5L44', '5D', '4T', '4L44'],\n      brine: ['8M', '8L24', '7L25', '6L25', '5L31', '4M', '4L31'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      clearsmog: ['7E', '6E'],\n      confide: ['7M', '6M'],\n      curse: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      defensecurl: ['8E', '7E', '6E', '5E', '4E', '3T'],\n      dive: ['8M', '8L30', '7L41', '6M', '6L33', '5M', '5L41', '4T', '4L41', '3M'],\n      doubleedge: ['8E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      growl: ['8L3', '7L4', '6L4', '5L4', '4L4', '3L5'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      heavyslam: ['8M', '8L21', '7L53', '6L50', '5L50'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M', '8L45', '7L49', '6L47', '5L47', '4L47', '3L50'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      mimic: ['3T'],\n      mist: ['8L15', '7L22', '6L22', '5L24', '4L24', '3L32'],\n      naturalgift: ['4M'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L39', '7M', '7L29', '6M', '6L27', '5M', '5L27', '4M', '4L27', '3M', '3L37'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['8E', '7L10', '6L10', '5L11', '4T', '4L11', '3T', '3L14'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      sleeptalk: ['8M', '7M', '7E', '6M', '6E', '5T', '5E', '5D', '4M', '4E', '3T', '3E'],\n      snore: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3T', '3E'],\n      soak: ['8E', '7E', '6E', '5E'],\n      splash: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      steelroller: ['8T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      thrash: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      tickle: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L12', '7L7', '6L7', '5L7', '5D', '4L7', '3L10'],\n      waterpulse: ['8L18', '7T', '7L19', '6T', '6L19', '5L21', '4M', '4L21', '3M', '3L28'],\n      waterspout: ['8L48', '7L33', '6L34', '5L34', '4L34', '3L41'],\n      weatherball: ['8M'],\n      whirlpool: ['8M', '8L27', '7L13', '6L13', '5L14', '4M', '4L14', '3L19'],\n      zenheadbutt: ['8M', '7T', '7E', '6T', '6E', '5T', '5E']\n    }\n  ],\n  [\n    'wailord',\n    {\n      amnesia: ['8M', '8L44', '7L37', '6L37', '5L37', '4L37', '3L52', '3S0'],\n      astonish: ['8L1', '7L16', '6L16', '5L17', '4L17', '3L23'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['8M', '4M'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '8L36', '3T'],\n      bounce: ['8M', '8L33', '7T', '7L51', '6T', '6L51', '5T', '5L54', '4T', '4L54'],\n      brine: ['8M', '8L24', '7L25', '6L29', '5L31', '4M', '4L31'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      defensecurl: ['3T'],\n      dive: ['8M', '8L30', '7L44', '6M', '6L44', '5M', '5L46', '4T', '4L46', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      heavyslam: ['8M', '8L21', '7L1', '6L1', '5L70'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M', '8L49', '7L58', '6L58', '5L62', '4L62', '3L59', '3S0'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      ironhead: ['8M', '7T', '6T', '5T', '4T'],\n      liquidation: ['8M', '7T'],\n      mimic: ['3T'],\n      mist: ['8L15', '7L22', '6L22', '5L24', '4L24', '3L32', '3S1'],\n      naturalgift: ['4M'],\n      nobleroar: ['8L1', '7L1'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L39', '7M', '7L29', '6M', '6L25', '5M', '5L27', '4M', '4L27', '3M', '3L37', '3S0', '3S1'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['7L1', '6L1', '5L1', '4T', '4L1', '3T', '3L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      soak: ['8L1', '7L1'],\n      splash: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      steelroller: ['8T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['8L18', '7T', '7L19', '6T', '6L19', '5L21', '4M', '4L21', '3M', '3L28', '3S1'],\n      waterspout: ['8L54', '7L33', '6L33', '5L34', '4L34', '3L44', '3S0', '3S1'],\n      weatherball: ['8M'],\n      whirlpool: ['8M', '8L27', '7L13', '6L13', '5L14', '4M', '4L14', '3L19'],\n      zenheadbutt: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'numel',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M', '9L19', '7L19', '6L19', '5L19', '4L25', '3L31'],\n      ancientpower: ['9E', '7E', '6E', '5E', '4E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9E', '7E', '6E', '5E', '5D', '4E', '3T', '3E'],\n      bulldoze: ['9M', '9L12', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M', '3S0'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9L29', '7L29', '6L29', '5L29'],\n      defensecurl: ['9E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      dig: ['9M', '6M', '5M', '4M', '3M', '3S0'],\n      doubleedge: ['9M', '9L47', '7L47', '6L47', '5L47', '4L51', '3T', '3L49'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '9L26', '7T', '7L26', '6T', '6L26', '5T', '5L26', '4T', '4L35'],\n      earthquake: ['9M', '9L40', '7M', '7L40', '6M', '6L40', '5M', '5L40', '4M', '4L41', '3M', '3L35'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L5', '7L5', '6L5', '5L5', '5D', '4L5', '3L11', '3S0'],\n      endeavor: ['9M'],\n      endure: ['9M', '7E', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firespin: ['9M'],\n      flameburst: ['7L15', '6L15', '5L15'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L43', '7M', '7L43', '6M', '6L43', '5M', '5L43', '4M', '4L45', '3M', '3L41'],\n      flareblitz: ['9M'],\n      flashcannon: ['9M'],\n      focusenergy: ['9L8', '7L8', '6L8', '5L12', '4L15', '3L25'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      growl: ['9L1', '7L1', '6L1', '6S1', '5L1', '4L1', '3L1'],\n      growth: ['9E', '7E', '6E'],\n      headbutt: ['4T'],\n      heatcrash: ['9M'],\n      heatwave: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E'],\n      heavyslam: ['9M', '9E', '7E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      howl: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      incinerate: ['9L15', '6M', '5M'],\n      ironhead: ['9M', '9E', '7T', '7E', '6T', '6E', '6S1', '5T', '5E'],\n      lashout: ['9M'],\n      lavaplume: ['9L22', '7L22', '6L22', '5L22', '4L31'],\n      magnitude: ['7L12', '6L8', '5L8', '4L11', '3L19'],\n      mimic: ['3T'],\n      mudbomb: ['7E', '6E', '5E', '4E'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9E', '7E', '6E', '5E', '4T', '4E', '3T', '3E'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      scorchingsands: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      spitup: ['9E', '7E', '6E', '5E', '4E'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stockpile: ['9E', '7E', '6E', '5E', '4E'],\n      stomp: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swallow: ['9E', '7E', '6E', '5E', '4E'],\n      tackle: ['9L1', '7L1', '6L1', '6S1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L31', '7L31', '6L31', '5L25', '4L21', '3L29', '3S0'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      yawn: ['9E', '7L36', '7E', '6L36', '6E', '5L36', '5E', '4E'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'camerupt',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M', '9L19', '7L19', '6L19', '5L19', '4L25', '3L31'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '3T'],\n      bulldoze: ['9M', '9L12', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9L29', '7L29', '6L29', '6S0', '5L29'],\n      defensecurl: ['3T'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '9L26', '7T', '7L26', '6T', '6L26', '5T', '5L26', '4T', '4L39'],\n      earthquake: ['9M', '9L46', '7M', '7L46', '6M', '6L46', '5M', '5L46', '4M', '4L49', '3M', '3L37'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      eruption: ['9L1', '7L1', '6L1', '5L52', '4L57', '3L45'],\n      explosion: ['7M', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firespin: ['9M'],\n      fissure: ['9L1', '7L1', '6L1', '5L59', '4L67', '3L55'],\n      flameburst: ['7L15', '6L15', '5L15'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flareblitz: ['9M'],\n      flashcannon: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '7L1', '6L1', '5L12', '4L15', '3L25'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['4T'],\n      heatcrash: ['9M'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      incinerate: ['9L15', '6M', '5M'],\n      ironhead: ['9M', '7T', '6T', '5T', '4T'],\n      lashout: ['9M'],\n      lavaplume: ['9L22', '7L22', '6L22', '5L22', '4L31'],\n      magnitude: ['7L12', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      overheat: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L0', '7M', '7L1', '6M', '6L33', '6S0', '5M', '5L33', '4M', '4L33', '3T', '3L33'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['3T'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L31', '7L31', '6L31', '6S0', '5L25', '4L21', '3L29'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      yawn: ['9L39', '7L39', '6L39', '6S0', '5L39'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'torkoal',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      amnesia: ['9M', '9L52', '8M', '8L52', '7L40', '6L40', '5L49', '4L49', '3L40'],\n      ancientpower: ['9E', '8E'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodypress: ['9M', '8M', '8S0'],\n      bodyslam: ['9M', '9L32', '8M', '8L32', '7L27', '6L27', '5L33', '4L33', '3T', '3L20'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      burningjealousy: ['9M', '8T', '8S0'],\n      captivate: ['4M'],\n      clearsmog: ['9L16', '8L16', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9L44', '8L44', '7L22', '6L12', '5L12', '4L12', '3L7'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '4E'],\n      ember: ['9L1', '8L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      endure: ['9M', '8M', '7E', '6E', '5E', '4M', '4E', '3T', '3E'],\n      eruption: ['9L64', '8L64', '7E', '6E', '5E', '4E', '3E'],\n      explosion: ['7M', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firespin: ['9M', '8M', '7L13', '6L13', '5L17', '4L17', '3L17'],\n      fissure: ['9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      flail: ['9E', '8E', '7L42', '6L1', '5L52', '4L52', '3L43'],\n      flameburst: ['7E', '6E', '5E'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L40', '8M', '8L40', '7M', '7L34', '6M', '6L28', '5M', '5L28', '4M', '4L28', '3M', '3L30'],\n      flamewheel: ['9L20', '8L20', '7L18', '6L18'],\n      flareblitz: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M', '9L48', '8M', '8L48', '7T', '7L45', '6T', '6L1', '5T', '5L55', '4T', '4L55', '3L46'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L56', '8L56', '7L50', '6L1', '5L60'],\n      irondefense: ['9M', '9L36', '8M', '8L36', '7T', '7L38', '6T', '6L38', '5T', '5L44', '4T', '4L44', '3L33'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      lavaplume: ['9L28', '8L28', '7L25', '6L25', '5L39', '4L39'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      protect: ['9M', '9L24', '8M', '8L24', '8S0', '7M', '7L30', '6M', '6L1', '5M', '5L36', '4M', '4L36', '3M', '3L27'],\n      rapidspin: ['9L8', '8L8', '7L10', '6L10', '5L23', '4L23'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      shellsmash: ['9L60', '8L60', '7L47', '6L1', '5L65'],\n      skullbash: ['8E', '7E', '6E', '5E', '4E'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '6M', '6E', '5T', '5E', '4M', '4E', '3T', '3E'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      smog: ['9L1', '8L1', '7L4', '6L4', '5L4', '4L4', '3L4'],\n      smokescreen: ['9L12', '8L12', '7L15', '6L15', '5L20', '4L20', '3L14'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '5D', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '7E', '6T', '6E'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      withdraw: ['9L4', '8L4', '7L7', '6L7', '5L7', '4L7'],\n      yawn: ['9E', '8E', '8S0', '7E', '6E', '5E', '4E', '3E'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'spoink',\n    {\n      allyswitch: ['7T'],\n      amnesia: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '3T'],\n      bounce: ['9L50', '7T', '7L50', '6T', '6L50', '5T', '5L50', '4T', '4L48', '3L43'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L22', '7L18', '6L18', '5L18', '4L18', '3L25'],\n      confusion: ['9L7'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7E', '6E', '5E', '4M', '3T'],\n      expandingforce: ['9M'],\n      extrasensory: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      flashcannon: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L10'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7E', '6E', '5E'],\n      lunge: ['9M'],\n      magiccoat: ['7T', '7L21', '6T', '6L21', '5T', '5L21', '4T', '4L21', '3L28'],\n      mimic: ['3T'],\n      mirrorcoat: ['9E', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      odorsleuth: ['7L10', '6L10', '5L10', '4L10', '3L10'],\n      payback: ['9L40', '7M', '7L40', '6M', '6L40', '5M', '5L40', '4M', '4L34'],\n      powergem: ['9M', '9L29', '7L29', '6L29', '5L33', '4L46'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L14', '7L14', '6L14', '5L14', '4L14', '3L16'],\n      psychic: ['9M', '9L44', '7M', '7L44', '6M', '6L44', '5M', '5L44', '4M', '4L41', '3M', '3L34'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '9L18', '7M', '7L15', '6M', '6L15', '5M', '5L15', '4M', '4L15', '3T', '3L19'],\n      psyshock: ['9M', '9L38', '7M', '7L38', '6M', '6L38', '5M', '5L34'],\n      psywave: ['7L7', '6L7', '5L7', '5D', '4L7', '3L7'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '5D', '4M'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L29', '7M', '7L29', '6M', '6L29', '5M', '5L29', '4M', '4L29', '3M', '3L37'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      simplebeam: ['9E', '7E', '6E'],\n      skillswap: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['9M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['9L33', '7T', '7L33', '6T', '6L29', '5T', '5L29', '4T', '4L29', '3T', '3L37'],\n      snowscape: ['9M'],\n      splash: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '4T', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      uproar: ['9M', '3S0'],\n      whirlwind: ['9E', '7E', '6E', '5E'],\n      zenheadbutt: ['9M', '9E', '7T', '7L26', '7E', '6T', '6L26', '6E', '5T', '5L26', '5E', '4T', '4L26', '4E']\n    }\n  ],\n  [\n    'grumpig',\n    {\n      allyswitch: ['7T'],\n      amnesia: ['9M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      belch: ['9L1', '7L1'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '3T'],\n      bounce: ['9L60', '7T', '7L60', '6T', '6L60', '5T', '5L60', '4T', '4L60', '3L55'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L22', '7L18', '6L18', '5L18', '4L18', '3L25'],\n      confusion: ['9L1'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['3T'],\n      earthpower: ['9M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      flash: ['6M', '5M', '4M', '3M'],\n      flashcannon: ['9M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      lunge: ['9M'],\n      magiccoat: ['7T', '7L21', '6T', '6L21', '5T', '5L21', '4T', '4L21', '3L28'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      odorsleuth: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      payback: ['9L46', '7M', '7L46', '6M', '6L46', '5M', '5L46', '4M', '4L37'],\n      powergem: ['9M', '9L29', '7L29', '6L29', '5L35', '4L55'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      psychic: ['9M', '9L52', '7M', '7L52', '6M', '6L52', '5M', '5L52', '4M', '4L47', '3M', '3L37'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '9L18', '7M', '7L15', '6M', '6L15', '5M', '5L15', '4M', '4L15', '3T', '3L19'],\n      psyshock: ['9M', '9L42', '7M', '7L42', '6M', '6L42', '5M', '5L37'],\n      psywave: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L35', '7M', '7L35', '6M', '6L29', '5M', '5L29', '4M', '4L29', '3M', '3L43'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['9M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['9L35', '7T', '7L35', '6T', '6L29', '5T', '5L29', '4T', '4L29', '3T', '3L43'],\n      snowscape: ['9M'],\n      splash: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      stompingtantrum: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '4T', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      teeterdance: ['9L0', '7L1', '6L32'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      uproar: ['9M'],\n      zenheadbutt: ['9M', '9L26', '7T', '7L26', '6T', '6L26', '5T', '5L26', '4T', '4L26']\n    }\n  ],\n  [\n    'spinda',\n    {\n      assist: ['7E', '6E', '5E', '4E', '3E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['7E', '6E', '5E', '4E', '3E'],\n      bodyslam: ['3T'],\n      brickbreak: ['7M', '6M', '5M', '4M', '3M'],\n      calmmind: ['7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      copycat: ['7L5', '6L5', '5L10', '5D', '4L10'],\n      counter: ['3T'],\n      covet: ['7T', '6T', '5T'],\n      defensecurl: ['3T'],\n      dig: ['6M', '5M', '4M', '3M'],\n      disable: ['7E', '6E', '5E', '4E', '3E'],\n      dizzypunch: ['7L23', '6L23', '5L28', '4L28', '3L27'],\n      doubleedge: ['7L46', '6L46', '5L46', '4L46', '3T', '3L45'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['3T'],\n      encore: ['7E', '6E', '5E', '4E', '3E'],\n      endure: ['4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['7E', '6E', '5E', '5D', '4E'],\n      faketears: ['7E', '6E', '5E'],\n      feintattack: ['7L10', '6L10', '5L14', '4L14', '3L12'],\n      firepunch: ['7T', '6T', '5T', '4T', '3T'],\n      flail: ['7L50', '6L50', '5L50', '4L50', '3L49'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      guardsplit: ['7E', '6E'],\n      headbutt: ['4T'],\n      helpinghand: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['7T', '6T', '5T'],\n      hypnosis: ['7L19', '6L19', '5L23', '4L23', '3L23'],\n      icepunch: ['7T', '6T', '5T', '4T', '3T'],\n      icywind: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '3T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lowkick: ['7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      poweruppunch: ['6M'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['7L14', '6L14', '5L19', '4L19', '3L16'],\n      psychic: ['7M', '6M', '5M', '4M', '3M'],\n      psychocut: ['7E', '6E', '5E', '4E'],\n      psychoshift: ['7E', '6E'],\n      psychup: ['7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L41', '3T', '3L38'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      rapidspin: ['7E', '6E', '5E'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sing: ['3S0'],\n      skillswap: ['7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      smellingsalts: ['7E', '6E', '5E', '4E', '3E'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      spotlight: ['7E'],\n      stompingtantrum: ['7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['7L28', '6L28', '5L32', '4T', '4L32'],\n      sunnyday: ['7M', '6M', '5M', '4M', '3M'],\n      superpower: ['5D'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      tackle: ['7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      teeterdance: ['7L32', '6L32', '5L37', '4L37', '3L34'],\n      thief: ['7M', '6M', '5M', '4M', '3M'],\n      thrash: ['7L55', '6L50', '5L55', '4L55', '3L56'],\n      thunderpunch: ['7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['7T', '7E', '6T', '6E', '5T', '5E', '4E', '3E'],\n      trickroom: ['7M', '6M', '5M', '4M'],\n      uproar: ['7T', '7L37', '6T', '6L5', '5T', '5L5', '4T', '4L5', '3L5', '3S0'],\n      waterpulse: ['7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      wildcharge: ['7M', '6M', '5M'],\n      wish: ['7E', '6E', '5E', '4E', '3E'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'trapinch',\n    {\n      astonish: ['9L1', '8L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bide: ['7L1', '6L1', '5L17'],\n      bite: ['9L8', '8L8', '7L1', '6L1', '5L1', '5D', '5S0', '4L1', '3L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      bugbite: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      bulldoze: ['9M', '9L20', '8M', '8L20', '7M', '7L8', '6M', '6L8', '5M', '5L21'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L28', '8M', '8L28', '7L22', '6L22', '5L33', '4L33', '3L33'],\n      dig: ['9M', '9L24', '8M', '8L24', '7L19', '6M', '6L19', '5M', '5L29', '4M', '4L41', '3M', '3L41'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['9M', '9L36', '8M', '8L36', '7T', '7L26', '7E', '6T', '6L26', '6E', '5T', '5L39', '5E', '4T', '4L65'],\n      earthquake: ['9M', '9L40', '8M', '8L40', '7M', '7L33', '6M', '6L33', '5M', '5L55', '4M', '4L73', '3M'],\n      endure: ['9M', '8M', '7E', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['9E', '8E', '7L29', '6L1', '5L61', '4L81'],\n      feintattack: ['7L1', '6L1', '5L7', '4L17', '3L17'],\n      firstimpression: ['9E', '8E'],\n      fissure: ['9L48', '8L48', '7L47', '6L1', '5L73', '4L89'],\n      flail: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      focusenergy: ['8M', '7E', '6E', '5E', '4E', '3E'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T', '5D', '4M', '3M'],\n      gust: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '7L43', '6M', '6L43', '5M', '5L49', '4M', '4L57', '3M', '3L57'],\n      laserfocus: ['8L4'],\n      mimic: ['3T'],\n      mudshot: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      mudslap: ['9M', '9L12', '8L12', '7L5', '6L5', '5L13', '4T', '3T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      quickattack: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '7L15', '6M', '6L15', '5M', '5L25', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '7L1', '6L1', '5L4', '4L9', '3L9'],\n      sandstorm: ['9M', '9L32', '8M', '8L32', '7M', '7L36', '6M', '6L36', '5M', '5L44', '4M', '4L49', '3M', '3L49'],\n      sandtomb: ['9M', '9L16', '8M', '8L16', '7L12', '6L10', '5L10', '4L25', '3L25'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      stealthrock: ['9M'],\n      stoneedge: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['9L44', '8M', '8L44', '7T', '7L40', '6T', '6L1', '5T', '5L67'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M']\n    }\n  ],\n  [\n    'vibrava',\n    {\n      aerialace: ['9M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '8M'],\n      astonish: ['9L1', '8L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bide: ['7L1', '6L1', '5L17'],\n      bite: ['9L1', '8L1', '3L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      boomburst: ['9L62', '8L62', '7L47', '6L47'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '9L28', '8M', '8L28', '7L29', '6L29'],\n      bulldoze: ['9M', '9L1', '8M', '8L1', '7M', '7L8', '6M', '6L8', '5M', '5L21'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L1', '8M', '8L1', '3L33'],\n      defog: ['7T', '4M'],\n      dig: ['9M', '9L1', '8M', '8L1', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      dragonbreath: ['9L0', '8L0', '7L1', '6L35', '5L35', '4L35', '3L35'],\n      dragonclaw: ['9M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragonrush: ['9L56', '8L56'],\n      dragontail: ['9M', '9L20', '8L20'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '9L38', '8M', '8L38', '7T', '7L26', '6T', '6L26', '5T', '5L39', '4T'],\n      earthquake: ['9M', '9L44', '8M', '8L44', '7M', '7L33', '6M', '6L33', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      fissure: ['9L1', '8L1'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M'],\n      headbutt: ['4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '7L43', '6M', '6L43', '5M', '5L49', '4M', '4L57', '3M', '3L57'],\n      laserfocus: ['8L1'],\n      mimic: ['3T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L12', '8L12', '7L5', '6L5', '5L13', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '7L15', '6M', '6L15', '5M', '5L25', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      sandstorm: ['9M', '9L32', '8M', '8L32', '7M', '7L36', '6M', '6L36', '5M', '5L44', '4M', '4L49', '3M', '3L49'],\n      sandtomb: ['9M', '9L16', '8M', '8L16', '7L12', '6L1', '5L1', '4L1', '3L1'],\n      scorchingsands: ['9M', '8T'],\n      screech: ['9L24', '8M', '8L24', '7L22', '6L22', '5L34', '4L41', '3L41'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T'],\n      silverwind: ['4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sonicboom: ['7L1', '6L1', '5L1', '4L1'],\n      stealthrock: ['9M'],\n      steelwing: ['8M', '7M', '6M', '4M', '3M'],\n      stoneedge: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['9L1', '8M', '8L1', '7T', '6T', '5T'],\n      supersonic: ['9L1', '8L1', '7L19', '6L19', '5L29', '4L33'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M', '7T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uproar: ['9M', '9L50', '8M', '8L50', '7T', '7L40', '6T', '6L40'],\n      uturn: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'flygon',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '8M'],\n      alluringvoice: ['9M'],\n      astonish: ['9L1', '8L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bide: ['7L1', '6L1', '5L17'],\n      bite: ['9L1', '8L1', '3L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      boomburst: ['9L68', '8L68'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '9L28', '8M', '8L28'],\n      bulldoze: ['9M', '9L1', '8M', '8L1', '7M', '7L8', '6M', '6L8', '5M', '5L21'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L1', '8M', '8L1', '3L33', '3S0'],\n      defog: ['7T', '4M'],\n      dig: ['9M', '9L1', '8M', '8L1', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T', '4S1'],\n      dragonbreath: ['9L1', '8L1', '7L1', '6L35', '5L35', '4L35', '3L35', '3S0'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L0', '8M', '8L0', '7M', '7L1', '6M', '6L45', '5M', '5L45', '4M', '4L45', '4S1', '3M'],\n      dragondance: ['9M', '9L1', '8M', '8L1', '7L1'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragonrush: ['9L60', '8L60', '7L47', '6L47'],\n      dragontail: ['9M', '9L20', '8L20', '7M', '7L29', '6M', '6L29', '5M', '5L45'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '9L38', '8M', '8L38', '7T', '7L26', '6T', '6L26', '5T', '5L39', '4T'],\n      earthquake: ['9M', '9L44', '8M', '8L44', '7M', '7L33', '6M', '6L33', '5M', '4M', '4S1', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['9L1', '8L1'],\n      feintattack: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      firespin: ['9M', '8M'],\n      fissure: ['9L1', '8L1'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '7L43', '6M', '6L43', '5M', '5L49', '4M', '4L57', '3M', '3L65'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['8L1', '7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mimic: ['3T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L12', '8L12', '7L5', '6L5', '5L13', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychicnoise: ['9M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '7L15', '6M', '6L15', '5M', '5L25', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      sandstorm: ['9M', '9L32', '8M', '8L32', '7M', '7L36', '6M', '6L36', '5M', '5L44', '4M', '4L49', '3M', '3L53'],\n      sandtomb: ['9M', '9L16', '8M', '8L16', '7L12', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      scaleshot: ['9M', '8T'],\n      scorchingsands: ['9M', '8T'],\n      screech: ['9L24', '8M', '8L24', '7L22', '6L22', '5L34', '4L41', '3L41', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T'],\n      silverwind: ['4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sonicboom: ['7L1', '6L1', '5L1', '4L1'],\n      stealthrock: ['9M'],\n      steelwing: ['8M', '7M', '6M', '4M', '3M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['9L1', '8M', '8L1', '7T', '6T', '5T'],\n      supersonic: ['9L1', '8L1', '7L19', '6L19', '5L29', '4L33'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      uproar: ['9M', '9L52', '8M', '8L52', '7T', '7L40', '6T', '6L40'],\n      uturn: ['9M', '8M', '7M', '6M', '5M', '4M', '4S1'],\n      vacuumwave: ['9M']\n    }\n  ],\n  [\n    'cacnea',\n    {\n      absorb: ['9L4', '7L4', '6L4', '5L5', '5D', '4L5', '3L5', '3S0'],\n      acid: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      belch: ['9E', '7E', '6E'],\n      block: ['9E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M', '9L16', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cottonspore: ['9L46', '7L46', '6L46', '5L49', '4L49', '3L41'],\n      counter: ['9E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      destinybond: ['9L54', '7L54', '6L54', '5L57', '4L57', '3L49'],\n      dig: ['9M'],\n      disable: ['9E', '7E', '6E', '5E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '7T', '6T', '5T', '4M'],\n      dynamicpunch: ['7E', '6E', '5E', '4E', '3T', '3E'],\n      encore: ['9M', '3S0'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      energyball: ['9M', '9L42', '7M', '7L42', '6M', '6L42', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L19', '6L19', '5L29', '4L29', '3L29'],\n      fellstinger: ['9E', '7E', '6E'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['7E', '6E', '5E', '4E', '3E'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L7', '7L7', '6L7', '5L9', '4L9', '3L9'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      ingrain: ['9L22', '7L22', '6L22', '5L25', '4L25', '3L25'],\n      leafstorm: ['9M'],\n      leechseed: ['9L10', '7L10', '6L10', '5L13', '4L13', '3L13'],\n      leer: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      lowkick: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      magicalleaf: ['9M', '7E', '6E', '5E', '4E'],\n      megapunch: ['3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      nastyplot: ['9M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      needlearm: ['7L16', '6L16', '5L45', '4L45', '3L37'],\n      payback: ['9L26', '7M', '7L26', '6M', '6L26', '5M', '5L41', '4M', '4L41'],\n      pinmissile: ['9L38', '7L38', '6L21', '5L21', '4L21', '3L21'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      poisonsting: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      powertrip: ['9L19'],\n      poweruppunch: ['7E', '6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rototiller: ['7E', '6E'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L13', '7L13', '6L13', '5L17', '4L17', '3L17'],\n      sandstorm: ['9M', '9L50', '7M', '7L50', '6M', '6L50', '5M', '5L53', '4M', '4L53', '3M', '3L45'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      seismictoss: ['3T'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      smellingsalts: ['7E', '6E', '5E', '4E'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spikes: ['9M', '9L30', '7L30', '6L30', '5L33', '4L33', '3L33'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L34', '7L34', '6L34', '5L37', '4T', '4L37'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      switcheroo: ['9E', '7E', '6E', '5E'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      teeterdance: ['9E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '5D', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      worryseed: ['7T', '7E', '6T', '6E', '5T', '5E', '4T']\n    }\n  ],\n  [\n    'cacturne',\n    {\n      absorb: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M', '9L16', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cottonspore: ['9L49', '7L49', '6L49', '5L59', '4L59', '3L47'],\n      counter: ['3T'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      destinybond: ['9L1', '7L1', '6L1', '5L71', '4L71', '3L59'],\n      dig: ['9M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '7T', '6T', '5T', '4M'],\n      dynamicpunch: ['3T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      energyball: ['9M', '9L44', '7M', '7L44', '6M', '6L44', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L19', '6L19', '5L29', '4L29', '3L29', '3S0'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      ingrain: ['9L22', '7L22', '6L22', '5L25', '4L25', '3L25', '3S0'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      leafstorm: ['9M'],\n      leechseed: ['9L10', '7L10', '6L10', '5L13', '4L13', '3L13'],\n      leer: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lunge: ['9M'],\n      magicalleaf: ['9M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      needlearm: ['7L16', '6L16', '5L53', '4L53', '3L41', '3S0'],\n      payback: ['9L26', '7M', '7L26', '6M', '6L26', '5M', '5L47', '4M', '4L47'],\n      pinmissile: ['9L38', '7L38', '6L21', '5L21', '4L21', '3L21'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      poisonsting: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      powertrip: ['9L19'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      revenge: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9L13', '7L13', '6L13', '5L17', '4L17', '3L17'],\n      sandstorm: ['9M', '9L54', '7M', '7L54', '6M', '6L54', '5M', '5L65', '4M', '4L65', '3M', '3L53'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      seismictoss: ['3T'],\n      shadowball: ['9M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spikes: ['9M', '9L30', '7L30', '6L30', '5L35', '4L35', '3L35', '3S0'],\n      spikyshield: ['9L0', '7L1', '6L32'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      stompingtantrum: ['9M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L35', '7L35', '6L35', '5L41', '4T', '4L41'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      venoshock: ['9M', '7M', '6M', '5M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'swablu',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      aircutter: ['4T'],\n      astonish: ['9E', '8E', '7L3', '6L3', '5L4', '4L5', '3L8'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      bravebird: ['9M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cottonguard: ['9L32', '8L32', '7L34', '6L34', '5L39'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      defog: ['9E', '8E', '7T'],\n      disarmingvoice: ['9M', '9L4', '8L4', '7L11', '6L11'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['9L20', '8L20'],\n      dragoncheer: ['9M'],\n      dragonpulse: ['9M', '8M', '7T', '7L38', '6T', '6L38', '5T', '5L42', '4M', '4L45'],\n      dragonrush: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '3S0'],\n      featherdance: ['9M', '9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furyattack: ['9L12', '8L12', '7L7', '6L7', '5L10', '4L13', '3L18'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '6S2', '5L1', '5S1', '4L1', '3L1', '3S0'],\n      haze: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M'],\n      hypervoice: ['9M', '8M', '7T', '7E', '6T', '6E', '6S2', '5T', '5E'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      mimic: ['3T'],\n      mirrormove: ['7L30', '6L30', '5L34', '4L36', '3L38'],\n      mist: ['9L8', '8L8', '7L14', '6L14', '5L15', '4L23', '3L28'],\n      moonblast: ['9L40', '8L40', '7L46', '6L46'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['7L20', '6L20', '5L21', '4M', '4L32'],\n      ominouswind: ['4T'],\n      outrage: ['8M', '7T', '6T', '5T', '4T'],\n      peck: ['9L1', '8L1', '7L1', '6L1', '6S2', '5L1', '5D', '5S1', '4L1', '3L1', '3S0'],\n      perishsong: ['9L44', '8L44', '7L42', '6L42', '5L48', '4L50', '3L48'],\n      playrough: ['9M', '8M', '7E'],\n      pluck: ['5M', '4M'],\n      powerswap: ['8M', '7E', '6E', '5E', '4E'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      pursuit: ['7E', '6E', '5E', '4E', '3E'],\n      rage: ['7E', '6E', '5E', '4E', '3E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7L26', '6L26', '5L29', '4L40', '3L41'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roost: ['9E', '8E', '7M', '7E', '6M', '6E', '5T', '5E', '5D', '4M'],\n      round: ['9L16', '8M', '8L16', '7M', '7L17', '6M', '6L17', '5M', '5L18'],\n      safeguard: ['9L24', '8M', '8L24', '7M', '7L9', '6M', '6L9', '5M', '5L13', '4M', '4L18', '3M', '3L21'],\n      secretpower: ['6M', '4M', '3M'],\n      sing: ['9L28', '8L28', '7L5', '6L5', '5L8', '4L9', '3L11'],\n      skyattack: ['7T', '6T', '3T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      steelwing: ['8M', '7M', '7E', '6M', '6E', '5E', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tailwind: ['9M', '9E', '8E', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '9L36', '8L36', '7L23', '6L23', '5L25', '4L28', '3L31'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      twister: ['4T'],\n      uproar: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'altaria',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M', '3S1'],\n      agility: ['9M', '8M', '6S3'],\n      aircutter: ['4T'],\n      alluringvoice: ['9M'],\n      astonish: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      bravebird: ['9M'],\n      breakingswipe: ['9M', '8M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cottonguard: ['9L32', '8L32', '7L34', '6L34', '5L42'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      defog: ['7T'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L11', '6L11'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      dragonbreath: ['9L20', '8L20', '7L1', '6L35', '5L35', '5S2', '4L35', '3L35', '3S0', '3S1'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M', '7L30', '6L30', '5L34', '4L39', '3L40', '3S0'],\n      dragonpulse: ['9M', '9L0', '8M', '8L0', '7T', '7L40', '6T', '6L40', '5T', '5L48', '4M', '4L54'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['9M', '8T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '5S2'],\n      featherdance: ['9M'],\n      fireblast: ['9M', '8M', '7M', '6M', '6S3', '5M', '4M', '3M'],\n      firespin: ['9M', '8M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furyattack: ['9L12', '8L12', '7L7', '6L7', '5L10', '4L13', '3L18'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      haze: ['9M'],\n      healbell: ['7T', '6T', '5T', '4T', '3S1'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '6S3', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      mimic: ['3T'],\n      mist: ['9L1', '8L1', '7L14', '6L14', '5L15', '4L23', '3L28'],\n      moonblast: ['9L44', '8L44', '7L52', '6L52'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['7L20', '6L20', '5L21', '5S2', '4M', '4L32'],\n      ominouswind: ['4T'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      peck: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      perishsong: ['9L50', '8L50', '7L46', '6L46', '5L57', '4L62', '3L54'],\n      playrough: ['9M', '8M'],\n      pluck: ['9L1', '8L1', '7L1', '6L1', '5M', '5L1', '4M', '4L1'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '7M', '6M', '6S3', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7L26', '6L26', '5L29', '4L46', '3L45', '3S0'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['9L16', '8M', '8L16', '7M', '7L17', '6M', '6L17', '5M', '5L18'],\n      safeguard: ['9L24', '8M', '8L24', '7M', '7L9', '6M', '6L9', '5M', '5L13', '4M', '4L18', '3M', '3L21'],\n      secretpower: ['6M', '4M', '3M'],\n      sing: ['9L28', '8L28', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      skyattack: ['9L56', '8L56', '7T', '7L1', '6T', '6L1', '5T', '5L64', '4T', '4L70', '3T', '3L59'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M', '3S1'],\n      steelwing: ['8M', '7M', '6M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '9L38', '8L38', '7L23', '6L23', '5L25', '5S2', '4L28', '3L31', '3S0'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      twister: ['4T'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      weatherball: ['9M'],\n      willowisp: ['9M'],\n      wonderroom: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'zangoose',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M'],\n      batonpass: ['9M'],\n      bellydrum: ['9L1', '7E'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M', '3S2'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L50', '7L50', '6L47', '5L47', '4L53'],\n      confide: ['7M', '6M'],\n      counter: ['9L1', '7E', '6E', '5E', '4E', '3T', '3E', '3S2'],\n      crushclaw: ['9L26', '7L26', '6L22', '5L22', '4L31', '3L31', '3S2'],\n      curse: ['9M', '9L1', '7E', '6E', '5E', '4E', '3E'],\n      defensecurl: ['3T'],\n      detect: ['9L36', '7L36', '6L33', '5L33', '4L40', '3L46'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      disable: ['9L1', '7E', '6E', '5E', '4E'],\n      doubleedge: ['9M', '3T'],\n      doublehit: ['9L1', '7E', '6E', '5E', '5D', '4E'],\n      doublekick: ['9L1', '7E', '6E', '5E', '4E', '3E'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      embargo: ['7M', '7L33', '6M', '6L19', '5M', '5L19', '4M', '4L27'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '9L29', '7M', '7L29', '6M', '6L29', '5M', '5L29', '4M', '4L44', '3L55'],\n      feint: ['9L1', '7E', '6E', '5E'],\n      finalgambit: ['9L1', '7E', '6E', '5E'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      flail: ['9L1', '7E', '6E', '5E', '4E', '3E'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['9L8', '7L8', '6L8', '5L8', '4T', '4L14', '3T', '3L13', '3S0'],\n      furyswipes: ['9L1', '7E', '6E', '5E', '4E'],\n      gigadrain: ['7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      gunkshot: ['9M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['9L15', '7L15', '6M', '6L15', '5M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      leer: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L4', '3S0', '3S1'],\n      lowkick: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      lowsweep: ['9M'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metalclaw: ['9M', '9L12', '7E', '6E', '5E', '4E'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['9L1', '7E', '6E', '5E', '4E'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      powertrip: ['9L22'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      pursuit: ['7L12', '6L12', '5L12', '4L22', '3L25'],\n      quickattack: ['9L5', '7L5', '6L5', '5L5', '5D', '4L5', '3L7', '3S0', '3S1'],\n      quickguard: ['9L1', '7E', '6E'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7E', '6E', '5E', '4E', '3E'],\n      refresh: ['3S2'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      revenge: ['7L22', '6L22', '5L26'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '4E', '3M', '3E'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S1'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slash: ['9L19', '7L19', '6L15', '5L15', '4L18', '3L19'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '4T', '3T'],\n      switcheroo: ['9L33'],\n      swordsdance: ['9M', '9L47', '7M', '7L47', '6M', '6L43', '5M', '5L9', '4M', '4L9', '3T', '3L10', '3S0', '3S1'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L43', '7M', '7L43', '6M', '6L40', '5M', '5L35', '4M', '4L35', '3M', '3L37'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '7T'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      upperhand: ['9M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      workup: ['7M', '5M'],\n      xscissor: ['9M', '9L40', '7M', '7L40', '6M', '6L36', '5M', '5L36', '4M', '4L48'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'seviper',\n    {\n      acidspray: ['9M'],\n      aquatail: ['7T', '6T', '5T', '5D', '4T'],\n      assurance: ['9E', '7E', '6E', '5E', '4E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      belch: ['9L41', '7L41', '6L43'],\n      bind: ['7T', '6T', '5T'],\n      bite: ['9L4', '7L4', '6L4', '5L5', '5D', '4L10', '3L10', '3S0', '3S2'],\n      bodyslam: ['9M', '9E', '7E', '6E', '5E', '5D', '4E', '3T', '3E'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M'],\n      brutalswing: ['7M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      coil: ['9L44', '7L44', '6L46', '5L49'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L39', '7L39', '6L40', '5L28', '4L28', '3L28', '3S1'],\n      curse: ['9M'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      dig: ['9M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragontail: ['7M', '6M', '5M'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      feint: ['9L11', '7L11'],\n      finalgambit: ['9E', '7E', '6E', '5E'],\n      firefang: ['9M'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gastroacid: ['9L29', '7T', '7L29', '6T', '6L31', '5T', '5L34'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M'],\n      glare: ['9L19', '7L19', '6L19', '5L23', '4L25', '3L25', '3S1'],\n      gunkshot: ['9M'],\n      haze: ['9M', '9L34', '7L34', '6L37', '5L38', '4L43', '3L43'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M'],\n      icefang: ['9M'],\n      infestation: ['7M', '6M'],\n      ironhead: ['9M'],\n      irontail: ['7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lashout: ['9M'],\n      lick: ['9L6', '7L6', '6L7', '5L1', '4L7', '3L7', '3S0', '3S2'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '7L26', '7E', '6L28', '6E', '5L31', '5E', '4L46', '4E'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poisonfang: ['9L21', '7L21', '6L22', '5L27', '4L34', '3L34'],\n      poisonjab: ['9M', '9L31', '7M', '7L31', '6M', '6L34', '5M', '5L42', '4M', '4L52'],\n      poisontail: ['9M', '9L9', '7L9', '6L10', '5L12', '4L16', '3L16', '3S0', '3S1'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychicfangs: ['9M'],\n      punishment: ['7E', '6E', '5E'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      reversal: ['9M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      screech: ['9L14', '7L14', '6L13', '5L16', '4L19', '3L19', '3S1'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '9L46', '7M', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '7M', '6M', '5M'],\n      snarl: ['9M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      spitup: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      stockpile: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['9L1', '7M', '7L1', '6M', '6L1', '5M', '5L9', '4M', '4L37', '3T', '3L37'],\n      swallow: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      swift: ['4T', '3T'],\n      switcheroo: ['9E', '7E', '6E', '5E', '4E'],\n      swordsdance: ['9M', '7M', '7L36'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '7T'],\n      thunderfang: ['9M'],\n      toxic: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      venomdrench: ['7L24', '6L25'],\n      venoshock: ['9M', '9L24', '7M', '7L16', '6M', '6L16', '5M', '5L20'],\n      wrap: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0', '3S2'],\n      wringout: ['7L46', '7E', '6L49', '6E', '5L53', '5E', '4L55'],\n      xscissor: ['9M', '7M', '6M', '5M', '4M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'lunatone',\n    {\n      acrobatics: ['8M', '7M', '6M', '5M'],\n      allyswitch: ['8M', '7T'],\n      ancientpower: ['4T'],\n      batonpass: ['8M', '3S1'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['8M', '3T'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L7', '3S0'],\n      cosmicpower: ['8M', '8L25', '7L25', '7S2', '6L25', '5L29', '4L34', '3L31'],\n      defensecurl: ['3T'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      earthpower: ['8M', '7T', '6T', '5T', '5D', '4T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      embargo: ['7M', '7L17', '6M', '6L17', '5M', '5L21', '4M', '4L31'],\n      endure: ['8M', '4M', '3T'],\n      explosion: ['8L50', '7M', '7L45', '6M', '6L45', '5M', '5L49', '4M', '4L56', '3T', '3L49'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M', '8L40', '7L41', '6L41', '5L45', '4L53', '3L43'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      gravity: ['7T', '6T', '5T', '4T'],\n      gyroball: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      healblock: ['7L33', '6L33', '5L37', '4L42'],\n      helpinghand: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7S2', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hypnosis: ['8L5', '7L5', '6L5', '5L9', '4L12', '3L19'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      ironhead: ['8M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '8L45', '7T', '7L49', '6T', '6L1', '5T', '5L53'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      moonblast: ['8L1', '7L1', '7S2', '6L1'],\n      moonlight: ['8L1', '5D'],\n      nastyplot: ['8M'],\n      naturalgift: ['4M'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      powergem: ['8M', '7L1', '7S2'],\n      powerswap: ['8M'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '8L30', '7M', '7L29', '6M', '6L29', '5M', '5L33', '4M', '4L45', '3M', '3L37', '3S1'],\n      psychicterrain: ['8M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '8L20', '7M', '7L1', '6M', '5M'],\n      psywave: ['7L13', '6L13', '5L17', '4L23', '3L25'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M', '3S1'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockpolish: ['8L10', '7M', '7L9', '6M', '6L9', '5M', '5L13', '4M', '4L20'],\n      rockslide: ['8M', '8L15', '7M', '7L21', '6M', '6L21', '5M', '5L25', '4M', '3T'],\n      rockthrow: ['8L1', '7L1', '6L1', '5L5', '4L9', '3L13'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M', '3S1'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '8L35', '7M', '7L37', '6M', '6L37', '5M', '5L41', '4M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '4T', '3T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      telekinesis: ['7T', '5M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      weatherball: ['8M'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'solrock',\n    {\n      acrobatics: ['8M', '7M', '6M', '5M'],\n      allyswitch: ['8M', '7T'],\n      ancientpower: ['4T'],\n      batonpass: ['8M', '3S1'],\n      bodyslam: ['8M', '3T'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L7', '3S0'],\n      cosmicpower: ['8M', '8L25', '7L25', '7S2', '6L25', '5L29', '4L34', '3L31', '3S1'],\n      defensecurl: ['3T'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      embargo: ['7M', '7L17', '6M', '6L17', '5M', '5L21', '4M', '4L31'],\n      endure: ['8M', '4M', '3T'],\n      explosion: ['8L50', '7M', '7L45', '6M', '6L45', '5M', '5L49', '4M', '4L56', '3T', '3L49'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      firespin: ['8M', '7L5', '6L5', '5L9', '4L12', '3L19'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flareblitz: ['8M', '8L1', '7L1'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      gravity: ['7T', '6T', '5T', '4T'],\n      gyroball: ['8M', '7M', '6M', '5M', '4M'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      healblock: ['7L33', '6L33', '5L37', '4L42'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      helpinghand: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '7S2', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      hypnosis: ['8L5'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['8M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      morningsun: ['8L1', '5D'],\n      naturalgift: ['4M'],\n      overheat: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      powerswap: ['8M'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychic: ['8M', '8L30', '7M', '7L29', '6M', '6L29', '5M', '5L33', '4M', '3M', '3S1'],\n      psychicterrain: ['8M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      psywave: ['7L13', '6L13', '5L17', '4L23', '3L25'],\n      raindance: ['8M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockpolish: ['8L10', '7M', '7L9', '6M', '6L9', '5M', '5L13', '4M', '4L20'],\n      rockslide: ['8M', '8L15', '7M', '7L21', '6M', '6L21', '5M', '5L25', '4M', '4L45', '3T', '3L37'],\n      rockthrow: ['8L1', '7L1', '6L1', '5L5', '4L9', '3L13'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '8L40', '7M', '7L41', '7S2', '6M', '6L41', '5M', '5L45', '4M', '4L53', '3M', '3L43'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '8L35', '7M', '7L37', '7S2', '6M', '6L37', '5M', '5L41', '4M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M', '3S1'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '4T', '3T'],\n      swordsdance: ['8M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      telekinesis: ['7T', '5M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      weatherball: ['8M'],\n      willowisp: ['8M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '8L45', '7T', '7L49', '6T', '6L1', '5T', '5L53'],\n      zenheadbutt: ['8M', '8L20', '7T', '6T', '5T', '5D', '4T']\n    }\n  ],\n  [\n    'barboach',\n    {\n      amnesia: ['9M', '9L18', '8M', '8L18', '7L15', '6L15', '5L18', '4L18', '3L21'],\n      aquatail: ['9L24', '8L24', '7T', '7L28', '6T', '6L28', '5T', '5L35', '4T', '4L35'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      earthpower: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      earthquake: ['9M', '9L36', '8M', '8L36', '7M', '7L32', '6M', '6L32', '5M', '5L39', '4M', '4L39', '3M', '3L31'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['9L48', '8L48', '7L44', '6L44', '5L47', '4L47', '3L41'],\n      flail: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L42', '8M', '8L42', '7L39', '6L39', '5L43', '4L43', '3L36'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      hydropump: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      liquidation: ['9M'],\n      magnitude: ['7L20', '6L20', '5L26', '4L26', '3L16'],\n      mimic: ['3T'],\n      mudbomb: ['7L13', '6L13', '5L14', '4L14'],\n      muddywater: ['9M', '9L31', '8M', '8L31', '7L35', '7E', '6L35', '6E', '5E'],\n      mudshot: ['9M', '8M', '7E', '6E', '5E'],\n      mudslap: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '5D', '4T', '4L1', '3T', '3L1'],\n      mudsport: ['7L6', '6L6', '5L6', '4L6', '3L6'],\n      naturalgift: ['4M'],\n      outrage: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L6', '8M', '8L6', '7M', '7L25', '6M', '6L25', '5M', '5L31', '4M', '4L31', '3M', '3L26'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '5D', '4M', '3T'],\n      snore: ['9L6', '8M', '8L6', '7T', '7L25', '6T', '6L25', '5T', '5L31', '4T', '4L31', '3T', '3L26'],\n      spark: ['9E', '8E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      takedown: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      terablast: ['9M'],\n      thrash: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L9', '6L9', '5L10', '4L10', '3L11'],\n      waterpulse: ['9M', '9L12', '8L12', '7T', '7L17', '6T', '6L17', '5L22', '4M', '4L22', '3M'],\n      watersport: ['7L6', '6L6', '5L6', '4L6', '3L6'],\n      whirlpool: ['9M', '8M', '7E', '6E', '5E', '4M', '4E', '3E'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'whiscash',\n    {\n      amnesia: ['9M', '9L18', '8M', '8L18', '7L15', '6L15', '5L18', '4L18', '3L21'],\n      aquatail: ['9L24', '8L24', '7T', '7L28', '6T', '6L28', '5T', '5L39', '4T', '4L39', '4S0'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      belch: ['9L1', '8L1', '7L1'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L40', '8M', '8L40', '7M', '7L34', '6M', '6L34', '5M', '5L45', '4M', '4L45', '4S0', '3M', '3L36'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['9L56', '8L56', '7L52', '6L52', '5L57', '4L57', '3L56'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L48', '8M', '8L48', '7L45', '6L45', '5L51', '4L51', '3L46'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M', '4S0'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      liquidation: ['9M', '8M'],\n      magnitude: ['7L20', '6L20', '5L26', '4L26', '3L16'],\n      mimic: ['3T'],\n      mudbomb: ['7L13', '6L13', '5L14', '4L14'],\n      muddywater: ['9M', '9L33', '8M', '8L33', '7L39', '6L39'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '4T', '4L1', '3T', '3L1'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      naturalgift: ['4M'],\n      outrage: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L1', '8M', '8L1', '7M', '7L25', '6M', '6L25', '5M', '5L33', '4M', '4L33', '3M', '3L26'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '8M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['9L1', '8M', '8L1', '7T', '7L25', '6T', '6L25', '5T', '5L33', '4T', '4L33', '3T', '3L26'],\n      spikes: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L0', '8L0', '7L1'],\n      tickle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1', '5L10', '4L10', '3L11'],\n      waterpulse: ['9M', '9L12', '8L12', '7T', '7L17', '6T', '6L17', '5L22', '4M', '4L22', '3M'],\n      watersport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '4M'],\n      zenheadbutt: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '4S0']\n    }\n  ],\n  [\n    'corphish',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['9E', '8E', '7E', '6E', '5E', '4T', '4E', '3E'],\n      aquajet: ['9E', '8E', '7E', '6E'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '7E', '6E', '5E', '4E', '3T', '3E'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bubble: ['7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      bubblebeam: ['9L12', '8L12', '7L14', '6L14', '5L20', '4L20', '3L19'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crabhammer: ['9L44', '8L44', '7L43', '6L38', '5L38', '4L38', '3L34'],\n      crunch: ['9M', '9L40', '8M', '8L40', '7L39', '6L39', '5L47', '4L47', '3L43'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '9E', '8E', '7E', '6E', '5E', '3T'],\n      doublehit: ['9L20', '8L20', '7L20', '6L20'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      endeavor: ['9M', '9L48', '8L48', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      guillotine: ['9L52', '8L52', '7L48', '6L48', '5L53', '4L53', '3L44'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      harden: ['9L1', '8L1', '7L5', '6L5', '5L7', '5D', '4L7', '3L7'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '8M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '9L16', '8L16', '7T', '7L23', '7E', '6T', '6L23', '6E', '5T', '5L26', '5E', '4T', '4L26', '4E', '3L25'],\n      leer: ['9L4', '8L4', '7L10', '6L10', '5L13', '4L13', '3L13'],\n      liquidation: ['9M'],\n      metalclaw: ['9M', '9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      mimic: ['3T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['4T', '3T'],\n      mudsport: ['7E', '6E', '5E', '4E', '3E'],\n      naturalgift: ['4M'],\n      nightslash: ['9L28', '8L28', '7L26', '6L26', '5L35', '4L35'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      protect: ['9M', '9L24', '8M', '8L24', '7M', '7L17', '6M', '6L17', '5M', '5L23', '4M', '4L23', '3M', '3L22'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      razorshell: ['9L32', '8M', '8L32', '7L31', '6L31'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      slash: ['9E', '8E'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      switcheroo: ['9E', '8E', '7E', '6E'],\n      swordsdance: ['9M', '9L36', '8M', '8L36', '7M', '7L37', '6M', '6L37', '5M', '5L44', '4M', '4L44', '3T', '3L37'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L8', '8M', '8L8', '7M', '7L34', '6M', '6L32', '5M', '5L32', '4M', '4L32', '3M', '3L31'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trumpcard: ['7E', '6E', '5E'],\n      visegrip: ['7L7', '6L7', '5L10', '4L10', '3L10'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      watersport: ['3S0'],\n      whirlpool: ['9M', '8M', '4M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'crawdaunt',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bubble: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      bubblebeam: ['9L12', '8L12', '7L14', '6L14', '5L20', '4L20', '3L19'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crabhammer: ['9L52', '8L52', '7L48', '6L44', '5L44', '4L44', '3L38', '3S0', '3S1'],\n      crunch: ['9M', '9L46', '8M', '8L46', '7L43', '6L43', '5L57', '4L57', '3L51'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doublehit: ['9L20', '8L20', '7L20', '6L20'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M'],\n      endeavor: ['9M', '9L58', '8L58', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      guillotine: ['9L64', '8L64', '7L54', '6L1', '5L65', '4L65', '3L52', '3S0'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      harden: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hardpress: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '9L16', '8L16', '7T', '7L23', '6T', '6L23', '5T', '5L26', '4T', '4L26', '3L25', '3S1'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      liquidation: ['9M', '8M', '7T'],\n      metalclaw: ['9M'],\n      mimic: ['3T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['4T', '3T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      nightslash: ['9L28', '8L28', '7L26', '6L26', '5L39', '4L39'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      protect: ['9M', '9L24', '8M', '8L24', '7M', '7L17', '6M', '6L17', '5M', '5L23', '4M', '4L23', '3M', '3L22'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      razorshell: ['9L34', '8M', '8L34', '7L32', '6L32'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      revenge: ['8M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L0', '8M', '8L0', '7L1', '6L30', '5L30', '4T', '4L30', '3T'],\n      swordsdance: ['9M', '9L40', '8M', '8L40', '7M', '7L40', '6M', '6L40', '5M', '5L52', '4M', '4L52', '3T', '3L43', '3S0', '3S1'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '8M', '8L1', '7M', '7L36', '6M', '6L34', '5M', '5L34', '4M', '4L34', '3M', '3L33', '3S0', '3S1'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      visegrip: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '8M', '4M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'baltoy',\n    {\n      allyswitch: ['8M', '7T', '5M'],\n      ancientpower: ['8L18', '7L19', '6L19', '5L21', '4T', '4L25', '3L25'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L6', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      cosmicpower: ['8M', '8L24', '7L22', '6L22', '5L31', '4L45', '3L37'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      drillrun: ['8M', '7T', '6T', '5T'],\n      earthpower: ['8M', '8L30', '7T', '7L37', '6T', '6L37', '5T', '5L37', '4T', '4L53'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['8M'],\n      endure: ['8M', '4M', '3T'],\n      expandingforce: ['8T'],\n      explosion: ['8L42', '7M', '7L46', '6M', '6L46', '5M', '5L49', '4M', '4L71', '3T', '3L45'],\n      extrasensory: ['8L27', '7L31', '6L28', '5L28'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      gravity: ['7T', '6T', '5T', '5D', '4T'],\n      guardsplit: ['8L36', '7L34', '6L34', '5L34'],\n      guardswap: ['8M'],\n      gyroball: ['8M', '7M', '6M', '5M', '4M'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L3', '3L3'],\n      headbutt: ['4T'],\n      healblock: ['7L10', '6L10', '5L45', '4L61'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      imprison: ['8M', '8L21', '7L43', '6L43'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudslap: ['8L1', '7L7', '6L7', '5L7', '4T', '4L7', '3T', '3L7', '3S0'],\n      naturalgift: ['4M'],\n      powersplit: ['8L36', '7L34', '6L34', '5L34'],\n      powerswap: ['8M'],\n      powertrick: ['8L12', '7L25', '6L17', '5L17', '4L31'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L15', '7L16', '6L13', '5L13', '4L11', '3L11', '3S0'],\n      psychic: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychicterrain: ['8M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rapidspin: ['8L3', '7L4', '6L4', '5L4', '5D', '4L5', '3L5'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocktomb: ['8M', '8L9', '7M', '7L13', '6M', '6L10', '5M', '5L10', '4M', '4L15', '3M', '3L15', '3S0'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      sandstorm: ['8M', '8L39', '7M', '7L40', '6M', '6L40', '5M', '5L34', '4M', '4L37', '3M', '3L31'],\n      sandtomb: ['8M'],\n      scorchingsands: ['8T'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '8L33', '7L28', '6L25', '5L21', '4L19', '3T', '3L19'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      telekinesis: ['7T', '5M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '5D', '4T']\n    }\n  ],\n  [\n    'claydol',\n    {\n      allyswitch: ['8M', '7T', '5M'],\n      ancientpower: ['8L18', '7L19', '6L19', '5L21', '4T', '4L25', '3L25'],\n      bodypress: ['8M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      cosmicpower: ['8M', '8L24', '7L22', '6L22', '5L31', '4L51', '3L42'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      drillrun: ['8M', '7T', '6T', '5T'],\n      earthpower: ['8M', '8L30', '7T', '7L40', '6T', '6L40', '5T', '5L40', '4T', '4L62'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      eerieimpulse: ['8M'],\n      endure: ['8M', '4M', '3T'],\n      expandingforce: ['8T'],\n      explosion: ['8L48', '7M', '7L58', '6M', '6L58', '5M', '5L61', '4M', '4L86', '3T', '3L55'],\n      extrasensory: ['8L27', '7L31', '6L28', '5L28'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      gravity: ['7T', '6T', '5T', '4T'],\n      guardsplit: ['8L38', '7L34', '6L34', '5L34'],\n      guardswap: ['8M'],\n      gyroball: ['8M', '7M', '6M', '5M', '4M'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['4T'],\n      healblock: ['7L10', '6L10', '5L54', '4L73'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '8L0', '7M', '7L1', '6M', '6L36', '5M', '5L36', '4M', '4L36', '3M', '3L36'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      imprison: ['8M', '8L21', '7L52', '6L52'],\n      irondefense: ['8M'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mudslap: ['8L1', '7L7', '6L7', '5L7', '4T', '4L7', '3T', '3L7'],\n      nastyplot: ['8M'],\n      naturalgift: ['4M'],\n      powersplit: ['8L38', '7L34', '6L34', '5L34'],\n      powerswap: ['8M'],\n      powertrick: ['8L12', '7L25', '6L17', '5L17', '4L31'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['8L15', '7L16', '6L13', '5L13', '4L11', '3L11'],\n      psychic: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychicterrain: ['8M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rapidspin: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '8L9', '7M', '7L13', '6M', '6L10', '5M', '5L10', '4M', '4L15', '3M', '3L15'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      sandstorm: ['8M', '8L43', '7M', '7L46', '6M', '6L46', '5M', '5L34', '4M', '4L40', '3M', '3L31'],\n      sandtomb: ['8M'],\n      scorchingsands: ['8T'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '8L33', '7L28', '6L25', '5L21', '4L19', '3T', '3L19'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      storedpower: ['8M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['8M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'lileep',\n    {\n      acid: ['8L4', '7L5', '6L5', '5L8', '5D', '5S0', '4L8', '3L15'],\n      amnesia: ['8M', '8L28', '7L36', '6L29', '5L29', '4L29', '3L36'],\n      ancientpower: ['8L16', '7L17', '6L17', '5L43', '4T', '4L43', '3L43'],\n      astonish: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      barrier: ['7E', '6E', '5E', '4E', '3E'],\n      bind: ['8E', '7T', '6T', '5T'],\n      bodyslam: ['8M', '3T'],\n      brine: ['8M', '8L24', '7L21', '6L21'],\n      bulletseed: ['8M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L8', '7L13', '6L13', '5L22', '4L22', '3L29'],\n      constrict: ['7L1', '6L1', '5L1', '5S0', '4L1', '3L8'],\n      curse: ['8E', '7E', '6E', '5E', '4E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      endure: ['8M', '7E', '6E', '5E', '4M', '3T'],\n      energyball: ['8M', '8L44', '7M', '7L41', '6M', '6L41', '5M', '5L50', '4M', '4L50'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gastroacid: ['8L32', '7T', '7L31', '6T', '6L31', '5T', '5L36', '4T', '4L36'],\n      gigadrain: ['8M', '8L36', '7T', '7L26', '6T', '6L26', '5T', '5D', '4M', '3M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      ingrain: ['8L12', '7L9', '6L9', '5L15', '4L15', '3L22'],\n      megadrain: ['8L20', '7E', '6E', '5E'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      mirrorcoat: ['8E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      mudshot: ['8M'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['3T'],\n      recover: ['8E', '7E', '6E', '5E', '5S0', '4E', '3E'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '5S0', '4M', '4E', '3T', '3E'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      spitup: ['8L41', '7L46', '6L46', '5L57', '4L57', '3L50'],\n      stealthrock: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      stockpile: ['8L41', '7L46', '6L46', '5L57', '4L57', '3L50'],\n      stringshot: ['4T'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swallow: ['8L41', '7L46', '6L46', '5L57', '4L57', '3L50'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      tickle: ['8E', '7E', '6E', '5E', '4E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      wrap: ['8L1'],\n      wringout: ['7L52', '7E', '6L52', '6E', '5L64', '5E', '4L64', '4E']\n    }\n  ],\n  [\n    'cradily',\n    {\n      acid: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      amnesia: ['8M', '8L28', '7L36', '6L29', '5L29', '4L29', '3L36'],\n      ancientpower: ['8L16', '7L17', '6L17', '5L36', '4T', '4L36', '3L48'],\n      astonish: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bind: ['7T', '6T', '5T'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['8M', '3T'],\n      brine: ['8M', '8L24', '7L21', '6L21'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      bulletseed: ['8M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L1', '7L13', '6L13', '5L22', '4L22', '3L29'],\n      constrict: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      dig: ['8M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '4M', '3T'],\n      energyball: ['8M', '8L48', '7M', '7L44', '6M', '6L44', '5M', '5L56', '4M', '4L56'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gastroacid: ['8L32', '7T', '7L31', '6T', '6L31', '5T', '5L46', '4T', '4L46'],\n      gigadrain: ['8M', '8L36', '7T', '7L26', '6T', '6L26', '5T', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      grassyterrain: ['8M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      infestation: ['7M', '6M'],\n      ingrain: ['8L12', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      leechseed: ['8L1'],\n      megadrain: ['8L20'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      mudshot: ['8M'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      powerwhip: ['8M'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['3T'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      spitup: ['8L43', '7L52', '6L1', '5L66', '4L66', '3L60'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      stockpile: ['8L43', '7L52', '6L1', '5L66', '4L66', '3L60'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swallow: ['8L43', '7L52', '6L1', '5L66', '4L66', '3L60'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      wrap: ['8L1'],\n      wringout: ['7L1', '6L1', '5L76', '4L76']\n    }\n  ],\n  [\n    'anorith',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['8L16', '7L21', '6L21', '5L31', '4T', '4L31', '3L37'],\n      aquajet: ['8E', '7E', '6E'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '8L24', '7L29', '6L29'],\n      bugbite: ['8L20', '7T', '7L25', '6T', '6L25', '5T'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crosspoison: ['8M', '7E', '6E', '5E', '5D', '5S0', '4E'],\n      crushclaw: ['8L32', '7L39', '6L39', '5L55', '4L55'],\n      curse: ['8E', '7E', '6E', '5E', '4E'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['8L1', '7L10', '6L10', '5L37', '4T', '4L37', '3T', '3L43'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '5S0', '4L1', '3L7'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      irondefense: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      knockoff: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      metalclaw: ['8L12', '7L17', '6L17', '5L19', '4L19', '3L25'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      mudshot: ['8M'],\n      mudslap: ['4T', '3T'],\n      mudsport: ['7L4', '6L4', '5L7', '5S0', '4L7', '3L13'],\n      naturalgift: ['4M'],\n      protect: ['8M', '8L41', '7M', '7L49', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3M', '3L31'],\n      rapidspin: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M', '8L36', '7L55', '6L49', '5L49', '4L49', '3L55'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8E', '7E', '6E', '5E', '4E'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scratch: ['7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      screech: ['8M', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M', '3M'],\n      slash: ['8L28', '7L34', '6L34', '5L43', '4L43', '3L49'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['8L8', '7M', '7L13', '6M', '6L13', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '7T', '6T', '5T', '5D', '4M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L4', '7L7', '6L7', '5L13', '5S0', '4L13', '3L19'],\n      waterpulse: ['8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      xscissor: ['8M', '8L44', '7M', '7L44', '6M', '6L44', '5M', '5L61', '4M', '4L61']\n    }\n  ],\n  [\n    'armaldo',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['8L16', '7L21', '6L21', '5L31', '4T', '4L31', '3L37'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['8M', '3T'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '8L24', '7L29', '6L29'],\n      brutalswing: ['8M', '7M'],\n      bugbite: ['8L20', '7T', '7L25', '6T', '5T'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crosspoison: ['8M'],\n      crushclaw: ['8L32', '7L39', '6L1', '5L67', '4L67'],\n      cut: ['6M', '5M', '4M', '3M'],\n      dig: ['8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '7M', '6M', '5M', '4M'],\n      flashcannon: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['8L1', '7L10', '6L10', '5L37', '4T', '4L37', '3T', '3L46'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      irondefense: ['8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      liquidation: ['8M', '7T'],\n      lowkick: ['8M', '7T', '6T', '5T', '4T'],\n      metalclaw: ['8L12', '7L17', '6L17', '5L19', '4L19', '3L25'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      mudshot: ['8M'],\n      mudslap: ['4T', '3T'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      naturalgift: ['4M'],\n      protect: ['8M', '8L43', '7M', '7L53', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3M', '3L31'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M', '8L36', '7L61', '6L55', '5L55', '4L55', '3L64'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scratch: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowclaw: ['8M'],\n      slash: ['8L28', '7L25', '6L25', '5L46', '4L46', '3L55'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['8L1', '7M', '7L13', '6M', '6L13', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      xscissor: ['8M', '8L48', '7M', '7L46', '6M', '6L46', '5M', '5L73', '4M', '4L73']\n    }\n  ],\n  [\n    'feebas',\n    {\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '7E', '6E', '5E'],\n      captivate: ['7E', '6E', '5E', '5D', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragonbreath: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      dragonpulse: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9L25', '8L25', '7L30', '6L30', '5L30', '4L30', '3L30'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hypnosis: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4E', '3E'],\n      mimic: ['3T'],\n      mirrorcoat: ['9E', '8E', '7E', '6E', '5E', '5D', '4E', '4S0', '3E'],\n      mist: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudsport: ['7E', '6E', '5E', '4E', '3E'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      splash: ['9L1', '8L1', '7L1', '6L1', '5L1', '5D', '4L1', '4S0', '3L1'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tackle: ['9L15', '8L15', '7L15', '6L15', '5L15', '4L15', '3L15'],\n      terablast: ['9M'],\n      tickle: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '8M', '4M']\n    }\n  ],\n  [\n    'milotic',\n    {\n      alluringvoice: ['9M'],\n      aquaring: ['9L12', '8L12', '7L17', '6L21', '5L49', '4L49'],\n      aquatail: ['9L32', '8L32', '7T', '7L31', '6T', '6L29', '5T', '5L29', '4T', '4L29'],\n      attract: ['9L16', '8M', '8L16', '7M', '7L34', '6M', '6L37', '5M', '5L41', '4M', '4L41', '3M', '3L45'],\n      avalanche: ['9M', '8M', '4M'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brine: ['8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['7L21', '6L24', '5L25', '4M', '4L25'],\n      chillingwater: ['9M'],\n      coil: ['9L48', '8L48', '7L41', '6L44'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      disarmingvoice: ['9M', '9L4', '8L4', '7L11', '6L11'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragontail: ['9M', '9L24', '8L24', '7M', '7L24', '6M', '6L27', '5M'],\n      drainingkiss: ['9M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9L1', '8L1'],\n      flipturn: ['9M', '8T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      haze: ['9M'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L52', '8M', '8L52', '7L44', '6L37', '5L37', '5S3', '4L37', '4S1', '4S2', '3L40'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '5S3', '5S4', '4M', '4S1', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '4S2', '3T'],\n      imprison: ['9M', '8M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      lifedew: ['9L20', '8L20'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      mirrorcoat: ['5S3'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M', '9L44', '8M', '8L44', '7M', '7L47', '6M', '6L33', '5M', '5L33', '4M', '4L33', '4S1', '4S2', '3M', '3L35', '3S0'],\n      recover: ['9L28', '8L28', '7L27', '6L21', '5L21', '5S3', '5S4', '4L21', '4S1', '4S2', '3L30', '3S0'],\n      refresh: ['7L1', '6L7', '5L9', '4L9', '3L15'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L36', '8M', '8L36', '7M', '7L37', '6M', '6L41', '5M', '5L45', '4M', '4L45', '3M', '3L50'],\n      scald: ['9M', '8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      splash: ['9L1', '8L1'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '9L40', '8M', '8L40', '7M', '6M', '5M', '5S4', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '5S4', '4M', '3M'],\n      tripleaxel: ['9M', '8T'],\n      twister: ['9L8', '8L8', '7L14', '6L14', '5L17', '4T', '4L17', '3L25', '3S0'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['9M', '9L0', '8L0', '7T', '7L1', '6T', '6L13', '5L13', '4M', '4L13', '3M', '3L20', '3S0'],\n      watersport: ['7L1', '6L4', '5L5', '4L5', '3L10'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '4M'],\n      wrap: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L5']\n    }\n  ],\n  [\n    'castform',\n    {\n      amnesia: ['7E', '6E', '5E', '4E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['4M'],\n      blizzard: ['7M', '7L35', '6M', '6L35', '5M', '5L40', '4M', '3M'],\n      bodyslam: ['3T'],\n      captivate: ['4M'],\n      clearsmog: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      cosmicpower: ['7E', '6E'],\n      defensecurl: ['3T'],\n      defog: ['7T'],\n      disable: ['7E', '6E', '5E', '4E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      ember: ['7L10', '6L10', '5L10', '5D', '4L10', '3L10'],\n      endure: ['4M', '3T'],\n      energyball: ['7M', '6M', '5M', '4M'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['7M', '7L35', '6M', '6L35', '5M', '5L40', '4M', '3M'],\n      flamethrower: ['7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['7E', '6E', '5E', '4E', '3E'],\n      guardswap: ['7E', '6E'],\n      hail: ['7M', '7L20', '6M', '6L20', '5M', '5L20', '4M', '4L20', '3M', '3L20'],\n      headbutt: ['7L15', '6L15', '5L15'],\n      hex: ['7E', '6E', '5E'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hurricane: ['7L45', '6L45'],\n      hydropump: ['7L35', '6L35', '5L40'],\n      icebeam: ['7M', '6M', '5M', '4M', '3M'],\n      icywind: ['7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      luckychant: ['7E', '6E', '5E', '4E'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['7E', '6E', '5E', '5D', '4T', '4E'],\n      powdersnow: ['7L10', '6L10', '5L10', '4L10', '3L10'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      raindance: ['7M', '7L20', '6M', '6L20', '5M', '5L20', '4M', '4L20', '3M', '3L20'],\n      reflecttype: ['7E', '6E'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['7M', '6M', '5M', '4M', '3M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['7M', '6M', '5M', '4M', '3M'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['7M', '7L20', '6M', '6L20', '5M', '5L20', '4M', '4L20', '3M', '3L20'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      tackle: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      thief: ['7M', '6M', '5M', '4M', '3M'],\n      thunder: ['7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      watergun: ['7L10', '6L10', '5L10', '4L10', '3L10'],\n      waterpulse: ['7T', '6T', '5D', '4M', '3M'],\n      weatherball: ['7L25', '6L25', '5L30', '4L30', '3L30'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'kecleon',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      afteryou: ['7T', '6T', '5T'],\n      ancientpower: ['7L21', '6L1', '5L55', '4T', '4L55', '3L49'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      astonish: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bind: ['7T', '7L4', '6T', '6L4', '5T', '5L4', '4L4', '3L4'],\n      blizzard: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['3T'],\n      brickbreak: ['7M', '6M', '5M', '4M', '3M'],\n      camouflage: ['7L30', '7E', '6L30', '6E'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      dig: ['6M', '5M', '4M', '3M'],\n      disable: ['7E', '6E', '5E', '4E', '3E'],\n      dizzypunch: ['7E', '6E', '5E', '4E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['7T', '6T', '5T', '4M'],\n      dynamicpunch: ['3T'],\n      endure: ['4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      fakeout: ['7E', '6E', '5E', '4E'],\n      feint: ['7L10', '6L10', '5L14', '4L14'],\n      feintattack: ['7L16', '6L7', '5L7', '5D', '4L7', '3L7'],\n      fireblast: ['7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['7T', '6T', '5T', '4T', '3T'],\n      flamethrower: ['7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      foulplay: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      furyswipes: ['7L13', '6L10', '5L10', '4L10', '3L12'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      icebeam: ['7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['7T', '6T', '5T', '4T', '3T'],\n      icywind: ['7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T', '4M', '3M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lick: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      lowkick: ['7T', '6T', '5T', '4T'],\n      magiccoat: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      metronome: ['3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      nastyplot: ['7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      poweruppunch: ['7E', '6M'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['7L18', '6L18', '5L18', '4L15', '3L17'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      recover: ['7E', '6E', '5E', '4E'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflecttype: ['5D'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      screech: ['7L38', '6L32', '5L32', '4L32', '3L24'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['7M', '7L33', '6M', '6L33', '5M', '5L49', '4M', '4L49'],\n      shadowsneak: ['7L7', '6L7', '5L22', '4L20'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skillswap: ['7T', '7E', '6T', '6E', '5T', '5E', '5D', '4M', '3M'],\n      slash: ['7L25', '6L25', '5L27', '4L25', '3L31'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['7M', '6M', '5M', '4M', '3M'],\n      stealthrock: ['7T', '6T', '5T', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['7M', '7L42', '6M', '6L37', '5M', '5L37', '4M', '4L37', '3T', '3L40'],\n      suckerpunch: ['7L46', '6L43', '5L43', '4T', '4L43'],\n      sunnyday: ['7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      synchronoise: ['7L50', '6L1', '5L58'],\n      tailwhip: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      thief: ['7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      thunder: ['7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      trickroom: ['7M', '6M', '5M', '4M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      wonderroom: ['7T', '6T', '5T'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'shuppet',\n    {\n      allyswitch: ['7T'],\n      astonish: ['9L1', '7E', '6E', '5E', '4E', '3E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['3T'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      curse: ['9M', '9L26', '7L26', '6L19', '5L13', '4L13', '3L20'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      destinybond: ['9E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      disable: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      embargo: ['7M', '7L34', '6M', '6L34', '5M', '5L38', '4M', '4L38'],\n      encore: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L19', '6L19', '5L22', '4L28', '3L37', '3S0'],\n      flash: ['6M', '5M', '4M', '3M'],\n      foresight: ['7E', '6E', '5E', '4E', '3E'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      grudge: ['7L46', '6L46', '5L46', '4L46', '3L56'],\n      gunkshot: ['9M', '9E', '7T', '7E', '6E', '5E'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hex: ['9M', '9L22', '7L22', '6L22', '5L26'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '9E', '7E', '6E', '5E', '4E', '3E'],\n      knockoff: ['7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      lashout: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['7T', '6T', '5T'],\n      metronome: ['9M'],\n      mimic: ['3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      nightshade: ['9M', '9L7', '7L7', '6L7', '5L7', '5D', '4L8', '3L13'],\n      ominouswind: ['7E', '6E', '5E', '4T'],\n      painsplit: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      payback: ['7M', '6M', '5M', '4M', '4E'],\n      phantomforce: ['9M', '9L48', '7L54', '7E', '6L54', '6E'],\n      poltergeist: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      pursuit: ['7E', '6E', '5E', '4E'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['9L34', '7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['9L4', '7L4', '6L4', '5L4', '4L5', '3L8'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '9L30', '7M', '7L30', '6M', '6L30', '5M', '5L30', '4M', '4L31', '3M', '3L44', '3S0'],\n      shadowsneak: ['9L19', '7L13', '7E', '6L13', '6E', '5L16', '5E', '4L20', '4E'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skillswap: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '7L42', '6T', '6L42', '5T', '5L42', '4M', '4L43', '3M', '3L49'],\n      snore: ['7T', '6T', '3T'],\n      spite: ['9M', '9L10', '7T', '7L10', '6T', '6L10', '5T', '5L10', '4T', '4L16', '3L25', '3S0'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L38', '7L38', '6L34', '5L34', '4T', '4L35'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '9L42', '7T', '7L50', '6T', '6L50', '5T', '5L50', '4T', '4L50'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      willowisp: ['9M', '9L16', '7M', '7L16', '6M', '6L13', '5M', '5L13', '4M', '4L23', '3L32', '3S0']\n    }\n  ],\n  [\n    'banette',\n    {\n      allyswitch: ['7T'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['3T'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      cottonguard: ['5S1'],\n      curse: ['9M', '9L26', '7L26', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      embargo: ['7M', '7L34', '6M', '6L34', '5M', '5L40', '4M', '4L42'],\n      encore: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L19', '6L19', '5L22', '5S1', '4L28', '3L39', '3S0'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grudge: ['7L52', '6L52', '5L52', '4L58', '3L64'],\n      gunkshot: ['9M', '7T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '3S0'],\n      hex: ['9M', '9L22', '7L22', '6L22', '5L26', '5S1'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M'],\n      infestation: ['7M', '6M'],\n      knockoff: ['9M', '9L0', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      lashout: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['7T', '6T', '5T'],\n      metronome: ['9M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      nightshade: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      ominouswind: ['4T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      phantomforce: ['9M', '9L53', '7L1', '6L1'],\n      poltergeist: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['9L34', '7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '9L30', '7M', '7L30', '6M', '6L30', '5M', '5L30', '5S1', '4M', '4L31', '3M', '3L48', '3S0'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shadowsneak: ['9L19', '7L13', '6L13', '5L16', '4L20'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skillswap: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '7L46', '6T', '6L46', '5T', '5L46', '4M', '4L51', '3M', '3L55'],\n      snore: ['7T', '6T', '3T'],\n      spite: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L10', '4T', '4L16', '3L25'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['9L40', '7L40', '6L34', '5L34', '4T', '4L35'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swordsdance: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['9M', '7T'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '9L46', '7T', '7L58', '6T', '6L58', '5T', '5L58', '4T', '4L66'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      willowisp: ['9M', '9L16', '7M', '7L16', '6M', '6L13', '5M', '5L13', '4M', '4L23', '3L32']\n    }\n  ],\n  [\n    'duskull',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L9', '6L9', '5L14', '4L14', '3L16', '3S1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L12', '8L12', '7L30', '6L17', '5L17', '4L17', '3L23', '3S1'],\n      curse: ['9M', '9L36', '8L36', '7L33', '6L30', '5L30', '4L30', '3L34', '3S0'],\n      darkpulse: ['9M', '8M', '7M', '7E', '6M', '6E', '5T', '5E', '4M'],\n      destinybond: ['7E', '6E', '5E', '4E', '3E'],\n      disable: ['9L4', '8L4', '7L6', '6L6', '5L6', '5D', '4L6', '3L5'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7E', '6E', '5E', '4E', '3E'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      foresight: ['7L14', '6L9', '5L9', '4L9', '3L12'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L44', '8M', '8L44', '7L54', '6L49', '5L49', '4L46', '3L49'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      grudge: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      haze: ['9M', '9E', '8E', '7E', '6E'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M', '3S1'],\n      hex: ['9M', '9L32', '8M', '8L32', '7L38', '6L38', '5L38'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      infestation: ['7M', '6M'],\n      leechlife: ['9M'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      meanlook: ['9L28', '8L28', '7L46', '6L41', '5L41', '4L38', '3L45', '3S0'],\n      memento: ['9E', '8E', '7E', '6E', '5E', '4E', '3E'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      nightshade: ['9M', '9L16', '8L16', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      ominouswind: ['7E', '6E', '5E', '4T', '4E'],\n      painsplit: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E', '3E'],\n      payback: ['9L20', '8M', '8L20', '7M', '7L49', '6M', '6L46', '5M', '5L46', '4M', '4L41'],\n      phantomforce: ['9M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      pursuit: ['7L22', '6L22', '5L25', '4L25', '3L27', '3S0'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      revenge: ['8M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '9L40', '8M', '8L40', '7M', '7L41', '6M', '6L41', '5M', '4M', '3M', '3S1'],\n      shadowsneak: ['9L8', '8L8', '7L17', '6L17', '5L22', '4L22'],\n      skillswap: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '5D', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      willowisp: ['9M', '9L24', '8M', '8L24', '7M', '7L25', '6M', '6L25', '5M', '5L33', '4M', '4L33', '3L38', '3S0'],\n      wonderroom: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'dusclops',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L14', '4L14', '3L16'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bind: ['9L1', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4L1', '3L1'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L12', '8L12', '7L30', '6L17', '5L17', '4L17', '3L23'],\n      counter: ['3T'],\n      curse: ['9M', '9L36', '8L36', '7L33', '6L30', '5L30', '4L30', '3L34'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      disable: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['3T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      foresight: ['7L14', '6L9', '5L9', '4L9', '3L12'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L48', '8M', '8L48', '7L1', '6L1', '5L61', '4L61', '3L58'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9L1', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      haze: ['9M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M', '9L32', '8M', '8L32', '7L40', '6L40', '5L42'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M'],\n      infestation: ['7M', '6M'],\n      leechlife: ['9M'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      meanlook: ['9L28', '8L28', '7L52', '6L49', '5L49', '4L43', '3L51'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metronome: ['9M', '8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      nightshade: ['9M', '9L16', '8L16', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      ominouswind: ['4T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['9L20', '8M', '8L20', '7M', '7L57', '6M', '6L57', '5M', '5L58', '4M', '4L51'],\n      phantomforce: ['9M'],\n      poltergeist: ['9M', '8T'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      pursuit: ['7L22', '6L22', '5L25', '4L25', '3L27'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      revenge: ['8M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '9L42', '8M', '8L42', '7M', '7L45', '6M', '6L45', '5M', '4M', '3M'],\n      shadowpunch: ['9L0', '8L0', '7L1', '6L37', '5L37', '4L37', '3L37'],\n      shadowsneak: ['9L1', '8L1', '7L17', '6L17', '5L22', '4L22'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      willowisp: ['9M', '9L24', '8M', '8L24', '7M', '7L25', '6M', '6L25', '5M', '5L33', '4M', '4L33', '3L41'],\n      wonderroom: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'dusknoir',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L14', '4L14'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bind: ['9L1', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4L1'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L12', '8L12', '7L30', '6L17', '5L17', '4L17'],\n      curse: ['9M', '9L36', '8L36', '7L33', '6L30', '5L30', '4L30'],\n      darkestlariat: ['8M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      destinybond: ['9L54', '8L54'],\n      disable: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      foresight: ['7L14', '6L9', '5L9', '4L9'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['9M', '9L48', '8M', '8L48', '7L1', '6L1', '5L61', '4L61'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9L1', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      hardpress: ['9M'],\n      haze: ['9M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M', '9L32', '8M', '8L32', '7L40', '6L40', '5L42'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '8M'],\n      infestation: ['7M', '6M'],\n      laserfocus: ['7T'],\n      leechlife: ['9M'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      meanlook: ['9L28', '8L28', '7L52', '6L49', '5L49', '4L43'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M', '8M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M', '9L16', '8L16', '7L1', '6L1', '5L1', '4L1'],\n      ominouswind: ['4T'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['9L20', '8M', '8L20', '7M', '7L57', '6M', '6L57', '5M', '5L58', '4M', '4L51'],\n      phantomforce: ['9M'],\n      poltergeist: ['9M', '8T'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L22', '6L22', '5L25', '4L25'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '9L42', '8M', '8L42', '7M', '7L45', '6M', '6L45', '5M', '4M'],\n      shadowpunch: ['9L1', '8L1', '7L1', '6L37', '5L37', '4L37'],\n      shadowsneak: ['9L1', '8L1', '7L17', '6L17', '5L22', '4L22'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      willowisp: ['9M', '9L24', '8M', '8L24', '7M', '7L25', '6M', '6L25', '5M', '5L33', '4M', '4L33'],\n      wonderroom: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'tropius',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9L36', '7L36', '6L36', '5L51', '4L47', '4S0'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      bestow: ['7L46', '6L1', '5L57'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L41', '7L41', '6L37', '5L37', '4L37', '3T', '3L37'],\n      brutalswing: ['7M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '7E', '6E', '5E', '4M', '3M'],\n      calmmind: ['9M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defog: ['7T', '4M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      dragonhammer: ['7E'],\n      dragonpulse: ['9M', '7T', '6T', '5T'],\n      dragontail: ['9M'],\n      dualwingbeat: ['9M'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fly: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M', '3M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyterrain: ['9M'],\n      growth: ['9L1', '7L1', '6L1', '5L7', '4L7', '3L7'],\n      gust: ['9L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      headbutt: ['9E', '7E', '6E', '5E', '4T', '4E', '3E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      leafblade: ['9E', '7E', '6E', '5E', '4E'],\n      leafstorm: ['9M', '9L1', '7L1', '7E', '6L1', '6E', '5L71', '5E', '4L61', '4E'],\n      leaftornado: ['7L26', '6L26', '5L47'],\n      leechseed: ['9E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      leer: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      magicalleaf: ['9M', '9L16', '7L16', '6L16', '5L31', '4L31', '3L31'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['7L30', '7E', '6L1', '6E', '5L67', '5E', '4M', '4L57'],\n      naturepower: ['7M', '7E', '6M', '6E', '5E', '4E', '3E'],\n      ominouswind: ['4T'],\n      outrage: ['9M', '9L46', '7T', '6T', '5T', '4T'],\n      petalblizzard: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['9M'],\n      razorleaf: ['9L1', '7L1', '6L1', '5L11', '4L11', '3L11'],\n      razorwind: ['7E', '6E', '5E', '4E', '3E'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seedbomb: ['9M', '7T', '6T', '5T'],\n      silverwind: ['5D', '4M'],\n      slam: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '9L56', '7M', '7L56', '6M', '6L56', '5M', '5L61', '4M', '4L51', '4S0', '3M', '3L41'],\n      solarblade: ['9M'],\n      spite: ['9M'],\n      steelwing: ['7M', '6M', '4M', '3M'],\n      stomp: ['9L10', '7L10', '6L10', '5L17', '4L17', '3L17'],\n      stompingtantrum: ['9M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '4S0', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetscent: ['9L6', '7L6', '6L6', '5L21', '4L21', '3L21'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      synthesis: ['9L50', '7T', '7L50', '7E', '6T', '6L41', '6E', '5T', '5L41', '5E', '4T', '4L41', '4E', '4S0', '3L47'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      twister: ['4T'],\n      uturn: ['9M'],\n      whirlwind: ['9L21', '7L21', '6L21', '5L27', '4L27', '3L27'],\n      wideguard: ['9L30'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'chingling',\n    {\n      allyswitch: ['9E', '7T'],\n      astonish: ['9L7', '7L7', '6L7', '5L9', '4L9'],\n      attract: ['7M', '6M', '5M', '4M'],\n      batonpass: ['9M'],\n      bind: ['7T', '6T', '5T'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L10', '7L10', '6L10', '5L14', '4L14'],\n      cosmicpower: ['9E', '7E', '6E'],\n      curse: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      disable: ['9E', '7E', '6E', '5E', '4E'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M', '4E'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '4M'],\n      energyball: ['9M'],\n      entrainment: ['9L19', '7L19', '6L19', '5L25'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['9M', '7E', '6E', '5E', '4E'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      growl: ['9L4', '7L4', '6L4', '5L6', '4L6'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      hypnosis: ['9E', '7E', '6E', '5E', '4E'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['9L16', '7T', '7L16', '6T', '6L16', '5T', '5L22', '4T', '4L22'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      recover: ['9E', '7E', '6E', '5E', '4E'],\n      recycle: ['9E', '7T', '6T', '5T', '4M'],\n      reflect: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      storedpower: ['9M', '7E', '6E', '5E'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['4T'],\n      taunt: ['9M', '7M', '6M', '5M', '4M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      uproar: ['9M', '9L32', '7T', '7L32', '6T', '6L17', '5T', '5L17', '4T', '4L17'],\n      wish: ['9E', '7E', '6E', '5E', '4E'],\n      wrap: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      yawn: ['9L13', '7L13', '6L13'],\n      zenheadbutt: ['9M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'chimecho',\n    {\n      allyswitch: ['7T'],\n      astonish: ['9L1', '7L1', '6L1', '5L9', '4L9', '3L9', '3S0'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['9M'],\n      bind: ['7T', '6T', '5T'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '7L1', '6L1', '5L14', '4L14', '3L14'],\n      cosmicpower: ['7E', '6E'],\n      craftyshield: ['7E'],\n      curse: ['9M', '7E', '6E', '5E', '4E', '3E'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defensecurl: ['3T'],\n      defog: ['7T'],\n      disable: ['7E', '6E', '5E', '4E', '3E'],\n      disarmingvoice: ['9M'],\n      doubleedge: ['9M', '9L42', '7L42', '6L33', '5L33', '4L33', '3T', '3L33'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M'],\n      dreameater: ['7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M'],\n      extrasensory: ['9L22', '7L22', '6L22', '5L46', '4L46'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '7E', '6E', '5E', '4E'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      growl: ['9L1', '7L1', '6L1', '5L6', '4L6', '3L6', '3S0'],\n      healbell: ['9L27', '7T', '7L27', '6T', '6L27', '5T', '5L38', '4T', '4L38', '3L38'],\n      healingwish: ['9L1', '7L1', '6L1', '5L57', '4L49'],\n      healpulse: ['9L47', '7L47', '6L47', '5L49'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '7T', '6T', '5T', '5D'],\n      hypnosis: ['7E', '6E', '5E', '5D', '4E', '3E'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      perishsong: ['7E'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M', '3M', '3L46'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '7M', '6M', '5M'],\n      psywave: ['7L16', '6L16', '5L30', '4L30', '3L30'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      recover: ['7E', '6E'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L37', '7M', '7L37', '6M', '6L37', '5M', '5L41', '4M', '4L41', '3M', '3L41'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['9M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      storedpower: ['9M', '9L16', '7E', '6E', '5E'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M'],\n      synchronoise: ['7L1', '6L1', '5L54'],\n      takedown: ['9M', '9L19', '7L19', '6L19', '5L22', '4L22', '3L17'],\n      taunt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      uproar: ['9M', '9L32', '7T', '7L32', '6T', '6L17', '5T', '5L17', '4T', '4L17', '3L22'],\n      wish: ['7E', '6E', '5E', '4E'],\n      wrap: ['9L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1', '3S0'],\n      yawn: ['9L13', '7L13', '6L13', '5L25', '4L25', '3L25'],\n      zenheadbutt: ['9M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'absol',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      airslash: ['8M'],\n      assurance: ['8M', '7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['8M', '7E', '6E', '5E', '4E', '3E'],\n      bite: ['8E', '7L16', '6L16', '5L20', '4L28', '3L21', '3S2'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['8M', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brutalswing: ['8M', '7M'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['8M', '7M', '6M', '5T', '4M'],\n      detect: ['8L15', '7L33', '6L1', '5L44', '4L49'],\n      doubleedge: ['8E', '7E', '6E', '5E', '4E', '3T', '3E'],\n      doubleteam: ['8L5', '7M', '7L19', '6M', '6L19', '5M', '5L25', '4M', '4L33', '3M', '3L31', '3S3'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      falseswipe: ['8M', '7M', '6M', '5M', '4M'],\n      feint: ['8E', '7L1', '6L1', '5L1', '5D', '4L1'],\n      feintattack: ['7E', '6E', '5E', '4E', '3E'],\n      fireblast: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flamethrower: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      focusenergy: ['8M', '8L35'],\n      foulplay: ['8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      futuresight: ['8M', '8L50', '7L1', '6L1', '5L36', '4L41', '3L41', '3S3'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      hex: ['8M', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      knockoff: ['8L10', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      leer: ['8L1', '7L1', '6L1', '5L4', '4L4', '3L5', '3S0', '3S1'],\n      magiccoat: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      meanlook: ['8E', '7E', '6E', '5E', '4E'],\n      mefirst: ['7L41', '7E', '6L1', '6E', '5L57', '5E', '4L57', '4E'],\n      megahorn: ['8M', '7E', '6E', '5E', '5D', '4E'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      nightslash: ['8L30', '7L29', '6L29', '5L41', '4L52'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      perishsong: ['8L55', '7L1', '7E', '6L1', '6E', '5L65', '5E', '4L65', '3L46', '3S3'],\n      playrough: ['8M', '7E', '6E'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychocut: ['8M', '7L37', '6L37', '5L49', '4L60'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      punishment: ['7E', '6E', '5E', '4E'],\n      pursuit: ['7L10', '6L10', '5L12', '4L20'],\n      quickattack: ['8L1', '7L1', '6L1', '5L9', '4L12', '3L13'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      razorwind: ['7L49', '6L1', '5L17', '4L17', '3L17', '3S2'],\n      rest: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scratch: ['7L1', '6L1', '5L1', '4L1', '3L1', '3S0', '3S1'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slash: ['8L25', '7L22', '6L22', '5L28', '4L36', '3L36', '3S3'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      spite: ['7T', '6T', '5T', '4T', '3S1', '3S2'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      suckerpunch: ['8L40', '7L45', '7E', '6L45', '6E', '5L44', '5E', '4T', '4L44', '4E'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['8M', '7T', '6T', '5T', '5D', '4T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['8M', '4T', '3T'],\n      swordsdance: ['8M', '8L45', '7M', '7L25', '6M', '6L25', '5M', '5L25', '4M', '4L25', '3T', '3L26', '3S2'],\n      taunt: ['8M', '8L20', '7M', '7L13', '6M', '6L1', '5M', '5L9', '4M', '4L9', '3M', '3L9'],\n      thief: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      throatchop: ['8M', '7T'],\n      thunder: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      willowisp: ['8M', '7M', '6M', '5M', '4M'],\n      wish: ['3S0'],\n      xscissor: ['8M', '7M', '6M', '5M', '4M'],\n      zenheadbutt: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E']\n    }\n  ],\n  [\n    'snorunt',\n    {\n      astonish: ['9L1', '8L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '7E', '6E', '5E', '4M'],\n      bide: ['7E', '6E', '5E', '4E'],\n      bite: ['9L35', '8L35', '7L19', '6L10', '5L10', '4L10', '3L10', '3S0'],\n      blizzard: ['9M', '9L60', '8M', '8L60', '7M', '7L46', '6M', '6L46', '5M', '5L46', '4M', '4L46', '3M', '3L43'],\n      block: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3E'],\n      bodyslam: ['9M', '8M', '3T'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L55', '8M', '8L55', '7L41', '6L31', '5L31', '4L31', '3L28'],\n      disable: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      doubleedge: ['3T'],\n      doubleteam: ['9L10', '8L10', '7M', '7L5', '6M', '6L4', '5M', '5L4', '4M', '4L4', '3M', '3L7'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M', '7E', '6E', '5E'],\n      flash: ['6M', '5M', '4M', '3M'],\n      frostbreath: ['9L30', '8L30', '7M', '7L37', '6M', '6L37', '5M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      hail: ['8M', '8L45', '7M', '7L50', '6M', '6L40', '5M', '5L40', '4M', '4L40', '3M', '3L37'],\n      headbutt: ['9L1', '8L50', '7L28', '6L19', '5L19', '4T', '4L19', '3L19'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M', '3L34'],\n      icefang: ['9M', '9L40', '8M', '8L40', '7L23', '6L23', '5L28', '4L28'],\n      iceshard: ['9L15', '8L15', '7L10', '6L10', '5L37', '4L37'],\n      icespinner: ['9M'],\n      iciclecrash: ['9E', '8E'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '9L25', '8M', '8L25', '7T', '7L14', '6T', '6L13', '5T', '5L13', '4T', '4L13', '3T', '3L16', '3S0'],\n      leer: ['9L5', '8L5', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      powdersnow: ['9L1', '8L1', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      protect: ['9M', '9L20', '8M', '8L20', '7M', '7L32', '6M', '6L22', '5M', '5L22', '4M', '4L22', '3M', '3L25'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rollout: ['9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sing: ['3S0'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M', '9L45'],\n      spikes: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      switcheroo: ['9E', '8E', '7E', '6E'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      waterpulse: ['9M', '7T', '6T', '5D', '4M', '3M', '3S0'],\n      weatherball: ['9M', '9L50', '8M', '7E', '6E', '5E', '5D', '4E']\n    }\n  ],\n  [\n    'glalie',\n    {\n      astonish: ['9L1', '8L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      avalanche: ['9M', '8M', '4M'],\n      bite: ['9L35', '8L35', '7L19', '6L1', '5L1', '4L1', '3L1'],\n      blizzard: ['9M', '9L68', '8M', '8L68', '7M', '7L48', '6M', '6L48', '5M', '5L51', '4M', '4L51', '3M', '3L53'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '8M', '3T'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L61', '8M', '8L61', '7L41', '6L31', '5L31', '4L31', '3L28'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defensecurl: ['3T'],\n      doubleedge: ['3T'],\n      doubleteam: ['9L1', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3M', '3L1'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      explosion: ['7M', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M', '8M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      foulplay: ['9M'],\n      freezedry: ['9L0', '8L0', '7L1', '6L42'],\n      frostbreath: ['9L30', '8L30', '7M', '7L37', '6M', '6L37', '5M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '8L47', '7M', '7L54', '6M', '6L40', '5M', '5L40', '4M', '4L40', '3M', '3L42'],\n      headbutt: ['9L1', '8L54', '7L28', '6L19', '5L19', '4T', '4L19', '3L19'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '6L37', '5M', '5L37', '4M', '4L37', '3M', '3L34'],\n      icefang: ['9M', '9L40', '8M', '8L40', '7L23', '6L23', '5L28', '4L28'],\n      iceshard: ['9L15', '8L15', '7L1', '6L1'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L25', '8M', '8L25', '7T', '7L14', '6T', '6L13', '5T', '5L13', '4T', '4L13', '3T', '3L16'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      mimic: ['3T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      powdersnow: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      protect: ['9M', '9L20', '8M', '8L20', '7M', '7L32', '6M', '6L22', '5M', '5L22', '4M', '4L22', '3M', '3L25'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sheercold: ['9L1', '8L1', '7L1', '6L1', '5L59', '4L59', '3L61'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M', '9L47'],\n      spikes: ['9M', '8M'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      steelroller: ['8T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      terablast: ['9M'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M', '9L54', '8M']\n    }\n  ],\n  [\n    'froslass',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L19', '6L1', '5L1', '4L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      auroraveil: ['9L54', '8L54', '7M'],\n      avalanche: ['9M', '8M', '4M'],\n      bite: ['9L1', '8L1'],\n      blizzard: ['9M', '9L68', '8M', '8L68', '7M', '7L48', '6M', '6L48', '5M', '5L51', '4M', '4L51'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '8M'],\n      captivate: ['7L41', '6L31', '5L31', '4M', '4L31'],\n      charm: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L35', '8L35', '7L32', '6L19', '5L19', '4L19'],\n      crunch: ['9M', '9L1', '8M', '8L1'],\n      curse: ['9M'],\n      destinybond: ['9L1', '8L1', '7L1', '6L1', '5L59', '4L59'],\n      doubleteam: ['9L1', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      drainingkiss: ['9M', '9L20', '8M', '8L20', '7L23', '6L23'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M', '8M'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frostbreath: ['9L30', '8L30', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '8L40', '7M', '7L54', '6M', '6L40', '5M', '5L40', '4M', '4L40'],\n      haze: ['9M'],\n      headbutt: ['9L1', '8L1', '4T'],\n      helpinghand: ['9M'],\n      hex: ['9M', '9L0', '8M', '8L0'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icefang: ['9M', '9L1', '8M', '8L1'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      iceshard: ['9L15', '8L15', '7L1', '6L1', '5L37', '4L37'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L25', '8M', '8L25', '7T', '7L14', '6T', '6L13', '5T', '5L13', '4T', '4L13'],\n      imprison: ['9M', '8M'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      ominouswind: ['7L1', '6L22', '5L22', '4T', '4L22'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poltergeist: ['9M', '8T'],\n      powdersnow: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      protect: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '9L61', '8M', '8L61', '7M', '7L42', '6M', '6L42', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M', '9L40'],\n      spikes: ['9M', '8M'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['4T'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      tripleaxel: ['9M', '8T'],\n      wakeupslap: ['7L37', '6L28', '5L28', '4L28'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '9L47', '8M', '8L47', '7M', '7L28']\n    }\n  ],\n  [\n    'spheal',\n    {\n      aquaring: ['8E', '7E', '6E', '5E', '4E'],\n      aquatail: ['7T', '6T', '5T', '5D', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['8L28', '7L21', '6L21', '5L25', '4L25', '3L25', '3S0'],\n      bellydrum: ['8E', '7E', '6E'],\n      blizzard: ['8M', '8L44', '7M', '7L41', '6M', '6L41', '5M', '5L43', '4M', '4L43', '3M', '3L43'],\n      bodyslam: ['8M', '8L36', '7L26', '6L19', '5L19', '4L19', '3T', '3L19'],\n      brine: ['8M', '8L24', '7L17', '6L17', '4M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['3S0'],\n      confide: ['7M', '6M'],\n      curse: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      defensecurl: ['8L1', '7L1', '6L1', '5L1', '4L1', '3T', '3L1'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['8M', '8L33', '7L9', '6L7', '5L7', '4L7', '3L7'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      fissure: ['8E', '7E', '6E', '5E', '5D', '4E', '3E'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      growl: ['8L4', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '8L48', '7M', '7L36', '6M', '6L31', '5M', '5L31', '4M', '4L31', '3M', '3L31'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      iceball: ['7L13', '6L13', '5L13', '4L13', '3L13'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T', '3S0'],\n      naturalgift: ['4M'],\n      powdersnow: ['8L12', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L16', '7M', '7L31', '6M', '6L31', '5M', '5L37', '4M', '4L37', '3M', '3L37'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['8L1', '7L5', '7E', '6L5', '6E', '5E', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      sheercold: ['8L52', '7L46', '6L46', '5L49', '4L49', '3L49'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      sleeptalk: ['8M', '7M', '7E', '6M', '6E', '5T', '5E', '4M', '3T'],\n      snore: ['8M', '8L20', '7T', '7L31', '6T', '6L31', '5T', '5L37', '4T', '4L37', '3T', '3L37'],\n      spitup: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      steelroller: ['8T'],\n      stockpile: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      surf: ['8M', '8L40', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swallow: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L8', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      waterpulse: ['8E', '7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      watersport: ['7E', '6E', '5E', '4E', '3E'],\n      whirlpool: ['8M', '4M'],\n      yawn: ['8E', '7E', '6E', '5E', '4E', '3E']\n    }\n  ],\n  [\n    'sealeo',\n    {\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['8L28', '7L21', '6L21', '5L25', '4L25', '3L25'],\n      blizzard: ['8M', '8L52', '7M', '7L45', '6M', '6L45', '5M', '5L47', '4M', '4L47', '3M', '3L47'],\n      bodyslam: ['8M', '8L40', '7L26', '6L19', '5L19', '4L19', '3T', '3L19'],\n      brine: ['8M', '8L24', '7L17', '6L17', '4M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      defensecurl: ['8L1', '7L1', '6L1', '3T', '3L1'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['8M', '8L35', '7L9', '6L1', '5L1', '4L1', '3L1'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      growl: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '8L58', '7M', '7L38', '6M', '6L31', '5M', '5L31', '4M', '4L31', '3M', '3L31'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      iceball: ['7L13', '6L13', '5L13', '4L13', '3L13'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      iciclespear: ['8M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      powdersnow: ['8L12', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L16', '7M', '7L31', '6M', '6L31', '5M', '5L39', '4M', '4L39', '3M', '3L39'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['8L1', '7L5', '6L5', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      sheercold: ['8L64', '7L52', '6L52', '5L55', '4L55', '3L55'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '8L20', '7T', '7L31', '6T', '6L31', '5T', '5L39', '4T', '4L39', '3T', '3L39'],\n      steelroller: ['8T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      surf: ['8M', '8L46', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['8L0', '7M', '7L1', '6M', '6L32', '5M', '5L32', '4M', '4L32', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'walrein',\n    {\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      aurorabeam: ['8L28', '7L19', '6L19', '5L25', '4L25', '3L25'],\n      avalanche: ['8M', '4M'],\n      blizzard: ['8M', '8L56', '7M', '7L49', '6M', '6L49', '5M', '5L52', '4M', '4L52', '3M', '3L50'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '8L40', '7L25', '6L19', '5L19', '4L19', '3T', '3L19'],\n      brine: ['8M', '8L24', '7L19', '6L19', '5S0', '4M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      defensecurl: ['8L1', '7L1', '6L1', '3T', '3L1'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['8M', '8L35', '7L7', '6L1', '5L1', '4L1', '3L1'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      growl: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      hail: ['8M', '8L64', '7M', '7L38', '6M', '6L31', '5M', '5L31', '5S0', '4M', '4L31', '3M', '3L31'],\n      headbutt: ['4T'],\n      heavyslam: ['8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      iceball: ['7L13', '6L13', '5L13', '4L13', '3L13'],\n      icebeam: ['8M', '7M', '6M', '5M', '5S0', '4M', '3M'],\n      icefang: ['8M', '8L1', '7L1', '6L44', '5L44', '4L44'],\n      iciclespear: ['8M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      ironhead: ['8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      liquidation: ['8M'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      powdersnow: ['8L12', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L16', '7M', '7L31', '6M', '6L31', '5M', '5L39', '4M', '4L39', '3M', '3L39'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['8L1', '7L7', '6L7', '4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      sheercold: ['8L72', '7L60', '6L60', '5L65', '5S0', '4L65', '3L61'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '8L20', '7T', '7L31', '6T', '6L31', '5T', '5L39', '4T', '4L39', '3T', '3L39'],\n      steelroller: ['8T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      surf: ['8M', '8L48', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['8L1', '7M', '7L1', '6M', '6L32', '5M', '5L32', '4M', '4L32', '3T'],\n      swordsdance: ['8M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'clamperl',\n    {\n      aquaring: ['7E', '6E', '5E', '5D', '4E'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      barrier: ['7E', '6E', '5E', '4E', '3E'],\n      blizzard: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['7E', '6E', '5E', '4E', '3T', '3E'],\n      brine: ['7E', '6E', '5E', '4M'],\n      captivate: ['5D', '4M'],\n      clamp: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      confide: ['7M', '6M'],\n      confuseray: ['7E', '6E', '5E', '4E', '3E'],\n      dive: ['6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      endure: ['7E', '6E', '5E', '4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      hail: ['7M', '6M', '5M', '4M', '3M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['7M', '6M', '5M', '4M', '3M'],\n      icywind: ['7T', '6T', '5T', '4T', '3T'],\n      irondefense: ['7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1', '3L1'],\n      mimic: ['3T'],\n      muddywater: ['7E', '6E', '5E', '4E'],\n      mudsport: ['7E', '6E', '5E', '4E', '3E'],\n      naturalgift: ['4M'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7E', '6E', '5E', '4E', '3E'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shellsmash: ['7L50', '6L50', '5L51'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      supersonic: ['7E', '6E', '5E', '4E', '3E'],\n      surf: ['7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['7M', '6M', '5M', '4M', '3M'],\n      watergun: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      waterpulse: ['7T', '7E', '6T', '6E', '5E', '4M', '3M'],\n      whirlpool: ['7L1', '6L1', '5L1', '5D', '4M', '4L1', '3L1']\n    }\n  ],\n  [\n    'huntail',\n    {\n      aquatail: ['7T', '7L39', '6T', '6L39', '5T', '5L46', '4T', '4L46'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['7L29', '6L29', '5L33', '4L33', '3L43'],\n      bind: ['7T', '6T', '5T'],\n      bite: ['7L1', '6L1', '5L6', '4L6', '3L8'],\n      blizzard: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['3T'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      brine: ['7L19', '6L19', '5L28', '4M', '4L28'],\n      captivate: ['4M'],\n      coil: ['7L45', '6L45'],\n      confide: ['7M', '6M'],\n      crunch: ['7L34', '6L34', '5L42', '4L42', '3L36'],\n      dive: ['7L26', '6M', '6L26', '5M', '5L37', '4T', '4L37', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      endure: ['4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      feintattack: ['7L11', '6L11'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      hail: ['7M', '6M', '5M', '4M', '3M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['7L50', '6L50', '5L51', '4L51', '3L50'],\n      hyperbeam: ['7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['7M', '6M', '5M', '4M', '3M'],\n      icefang: ['7L16', '6L16', '5L24', '4L24'],\n      icywind: ['7T', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rocktomb: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      scaryface: ['7L9', '6L9', '5L19', '4L19', '3L29'],\n      screech: ['7L5', '6L5', '5L10', '4L10', '3L15'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '6T', '5T', '4M', '3M'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['7L23', '6L23', '4T'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      surf: ['7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['7T', '7L14', '6T', '6L14', '5L15', '4M', '4L15', '3M', '3L22'],\n      whirlpool: ['7L1', '6L1', '5L1', '4M', '4L1', '3L1']\n    }\n  ],\n  [\n    'gorebyss',\n    {\n      agility: ['7L9', '6L9', '5L10', '4L10', '3L15'],\n      amnesia: ['7L16', '6L16', '5L19', '4L19', '3L29'],\n      aquaring: ['7L19', '6L19', '5L24', '4L24'],\n      aquatail: ['7T', '7L39', '6T', '6L39', '5T', '5L46', '4T', '4L46'],\n      attract: ['7M', '6M', '5M', '4M', '3M'],\n      batonpass: ['7L29', '6L29', '5L33', '4L33', '3L43'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['3T'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      brine: ['4M'],\n      captivate: ['7L23', '6L23', '5L28', '4M', '4L28'],\n      coil: ['7L45', '6L45'],\n      confide: ['7M', '6M'],\n      confusion: ['7L1', '6L1', '5L6', '4L6', '3L8'],\n      dive: ['7L26', '6M', '6L26', '5M', '5L37', '4T', '4L37', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['7L11', '6L11'],\n      endure: ['4M', '3T'],\n      facade: ['7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      hail: ['7M', '6M', '5M', '4M', '3M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['7L50', '6L50', '5L51', '4L51', '3L50'],\n      hyperbeam: ['7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['7M', '6M', '5M', '4M', '3M'],\n      icywind: ['7T', '6T', '5T', '4T', '3T'],\n      infestation: ['7M', '6M'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      protect: ['7M', '6M', '5M', '4M', '3M'],\n      psychic: ['7M', '7L34', '6M', '6L34', '5M', '5L42', '4M', '4L42', '3M', '3L36'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['7M', '6M', '5M', '4M', '3M'],\n      rest: ['7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      substitute: ['7M', '6M', '5M', '4M', '3T'],\n      surf: ['7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['7T', '7L14', '6T', '6L14', '5L15', '4M', '4L15', '3M', '3L22'],\n      watersport: ['7L5', '6L5'],\n      whirlpool: ['7L1', '6L1', '5L1', '4M', '4L1', '3L1']\n    }\n  ],\n  [\n    'relicanth',\n    {\n      amnesia: ['8M', '7E', '6E', '5E', '4E', '3E'],\n      ancientpower: ['8L10', '7L21', '6L1', '5L43', '4T', '4L43', '3L43'],\n      aquatail: ['8L30', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '3T'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brine: ['8M', '7E', '6E', '5E', '4M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      calmmind: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      dive: ['8M', '8L20', '7L26', '6M', '6L26', '5M', '5L57', '4T', '4L57', '3M'],\n      doubleedge: ['8L50', '7L50', '6L50', '5L50', '4L50', '3T', '3L57'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthpower: ['8M', '7T', '6T', '5T', '5D', '4T'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['8M', '4M', '3T'],\n      facade: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['8L40', '7L1'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      harden: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      headbutt: ['4T'],\n      headsmash: ['8L55', '7L1', '6L1', '5L78', '4L78'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['8M', '8L45', '7L46', '6L1', '5L71', '4L71', '3L64'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      irondefense: ['8M'],\n      liquidation: ['8M'],\n      magnitude: ['7E', '6E', '5E', '4E', '3E'],\n      meteorbeam: ['8T'],\n      mimic: ['3T'],\n      muddywater: ['8M', '7E', '6E', '5E', '4E'],\n      mudshot: ['8M', '7E', '6E', '5E'],\n      mudslap: ['8E', '7E', '6E', '5E', '4T', '4E', '3T'],\n      mudsport: ['7L1', '6L1', '5L36', '4L36', '3L36'],\n      naturalgift: ['4M'],\n      protect: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      raindance: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['8M', '8L35', '7M', '7L41', '6M', '6L41', '5M', '5L64', '4M', '4L64', '3M', '3L50'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M', '4E', '3T', '3E'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['8M', '7M', '7L15', '6M', '6L15', '5M', '5L15', '4M', '4L15', '3M', '3L15'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['8T'],\n      secretpower: ['6M', '4M', '3M'],\n      skullbash: ['8E', '7E', '6E', '5E', '4E', '3E'],\n      sleeptalk: ['8M', '7M', '7E', '6M', '6E', '5T', '5E', '5D', '4M', '4E', '3T', '3E'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '3T'],\n      stealthrock: ['8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M', '4M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['8L25', '7L31', '6L29', '5L29', '4L29', '3L29'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['8L5', '7L1', '6L1', '5L8', '5D', '4L8', '3L8'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      watersport: ['7E', '6E', '5E', '4E', '3E'],\n      whirlpool: ['8M', '4M'],\n      yawn: ['8L15', '7L35', '6L22', '5L22', '4L22', '3L22'],\n      zenheadbutt: ['8M', '7T', '7E', '6T', '6E', '5T', '5E']\n    }\n  ],\n  [\n    'luvdisc',\n    {\n      agility: ['9M', '9L7', '7L7', '6L7', '5L9', '4L9', '3L16'],\n      aquajet: ['9E', '7E', '6E', '5E', '4E'],\n      aquaring: ['9L40', '7L40', '7E', '6L40', '6E', '5L46', '5E', '4L37', '4E'],\n      attract: ['9L20', '7M', '7L20', '6M', '6L22', '5M', '5L27', '4M', '4L22', '3M', '3L28'],\n      babydolleyes: ['9L37'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      brine: ['7E', '6E', '5E', '4M'],\n      captivate: ['7L37', '7E', '6L46', '6E', '5L51', '5E', '4M', '4L40', '4E'],\n      charm: ['9M', '9L1', '7L1', '6L1', '5L4', '5D', '4L4', '3L4'],\n      confide: ['7M', '6M'],\n      dive: ['6M', '5M', '4T', '3M'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainingkiss: ['9M', '9L22', '7L9', '6L9'],\n      endeavor: ['9M'],\n      endure: ['9M', '4M', '3T'],\n      entrainment: ['9E', '7E', '6E'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      flail: ['9L26', '7L26', '6L27', '5L31', '4L46', '3L40'],\n      flipturn: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      hail: ['7M', '6M', '5M', '4M', '3M'],\n      healpulse: ['7E', '6E', '5E'],\n      heartstamp: ['7L22'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L46', '7L46', '6L40', '5L40'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '7T', '6T', '5T', '5D', '4T', '3T'],\n      liquidation: ['9M', '7T'],\n      luckychant: ['7L13', '6L14', '5L17', '4L17'],\n      mimic: ['3T'],\n      mudsport: ['7E', '6E', '5E', '5D', '4E', '3E'],\n      naturalgift: ['4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L49', '7M', '7L49', '6M', '6L55', '5M', '5L55', '4M', '4L51', '3M', '3L48'],\n      scald: ['7M', '6M', '5M'],\n      scaleshot: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      soak: ['9L42', '7L42'],\n      splash: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      supersonic: ['9E', '7E', '6E', '5E', '4E', '3E'],\n      surf: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['9L31', '7L31', '6L31', '5L37', '4L27', '3L36'],\n      swift: ['4T', '3T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      takedown: ['9M', '9L34', '7L34', '6L14', '5L14', '4L14', '3L24'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      watergun: ['9L4', '7L4', '6L4', '5L7', '4L7', '3L12'],\n      waterpulse: ['9M', '9L17', '7T', '7L17', '6T', '6L17', '5L22', '4M', '4L31', '3M'],\n      watersport: ['7E', '6E', '5E', '4E', '3E'],\n      whirlpool: ['9M', '4M'],\n      wish: ['9L13']\n    }\n  ],\n  [\n    'bagon',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bite: ['9L5', '8L5', '7L10', '6L5', '5L5', '5D', '4L5', '3L5', '3S0', '3S1'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L25', '8M', '8L25', '7L25', '6L25', '5L46', '4L46', '3L41'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['9E', '8E', '7E', '6E', '5E'],\n      doubleedge: ['9M', '9L55', '8L55', '7L49', '6L49', '5L55', '4L55', '3T', '3L53'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      dragonbreath: ['9L10', '8L10', '7L13', '6L13', '5L31', '4L31', '3L33'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L31', '8M', '8L31', '7M', '7L29', '6M', '6L29', '5M', '5L50', '4M', '4L50', '3M', '3L49'],\n      dragondance: ['9M', '8M', '7E', '6E', '5E', '5D', '4E', '3E'],\n      dragonpulse: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      dragonrage: ['7E', '6E', '5E', '4E', '3E'],\n      dragonrush: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      dragontail: ['9M'],\n      ember: ['9L1', '8L1', '7L4', '6L4', '5L25', '4L25', '3L25'],\n      endure: ['9M', '8M', '7E', '6E', '5E', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      firespin: ['9M'],\n      flamethrower: ['9M', '9L45', '8M', '8L45', '7M', '7L44', '6M', '6L44', '5M', '4M', '3M'],\n      focusenergy: ['9L40', '8M', '8L40', '7L21', '6L20', '5L20', '4L20', '3L21'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      headbutt: ['9L15', '8L15', '7L17', '6L16', '5L16', '4T', '4L16', '3L17'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '8M', '7E', '6E', '5E', '4E', '3E'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M', '3S1'],\n      ironhead: ['9M'],\n      leer: ['9L1', '8L1', '7L7', '6L7', '5L10', '4L10', '3L9'],\n      mimic: ['3T'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '9L50', '8M', '8L50', '7T', '6T', '5T', '5D', '4T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rage: ['7L1', '6L1', '6S3', '5L1', '5S2', '4L1', '3L1', '3S0', '3S1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L39', '6L39', '5L40', '4L40', '3L37'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '4E'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9E', '8E', '7E', '6E', '6S3', '5E', '4E', '3E'],\n      thunderfang: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['9E', '8E', '7E', '6E', '5E', '4T', '4E', '3E'],\n      wish: ['3S0'],\n      zenheadbutt: ['9M', '9L35', '8M', '8L35', '7T', '7L34', '6T', '6L34', '5T', '5L35', '4T', '4L35']\n    }\n  ],\n  [\n    'shelgon',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bite: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L25', '8M', '8L25', '7L25', '6L25', '5L50', '4L50', '3L56'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      doubleedge: ['9M', '9L67', '8L67', '7L56', '6L56', '5L61', '4L61', '3T', '3L78'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      dragonbreath: ['9L1', '8L1', '7L13', '6L13', '5L32', '4L32', '3L38'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L33', '8M', '8L33', '7M', '7L29', '6M', '6L29', '5M', '5L55', '4M', '4L55', '3M', '3L69'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragontail: ['9M'],\n      ember: ['9L1', '8L1', '7L1', '6L1', '5L25', '4L25', '3L25'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firefang: ['9M', '8M'],\n      firespin: ['9M'],\n      flamethrower: ['9M', '9L53', '8M', '8L53', '7M', '7L49', '6M', '6L49', '5M', '4M', '3M'],\n      focusenergy: ['9L46', '8M', '8L46', '7L21', '6L20', '5L20', '4L20', '3L21'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      headbutt: ['9L15', '8L15', '7L17', '6L1', '5L1', '4T', '4L1', '3L1'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '8M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['3T'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '9L60', '8M', '8L60', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '9L0', '8M', '8L0', '7M', '7L1', '6M', '6L30', '5M', '5L30', '4M', '4L30', '3M', '3L30'],\n      rage: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L42', '6L42', '5L43', '4L43', '3L47'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      zenheadbutt: ['9M', '9L39', '8M', '8L39', '7T', '7L35', '6T', '6L35', '5T', '5L37', '4T', '4L37']\n    }\n  ],\n  [\n    'salamence',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '5S3', '4M', '3M', '3S1'],\n      aircutter: ['4T'],\n      airslash: ['9M', '8M'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      bite: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      bodyslam: ['9M', '8M', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L25', '8M', '8L25', '7L25', '6L25', '5L53', '4L53', '3L61'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      defog: ['7T', '4M'],\n      doubleedge: ['9M', '9L73', '8L73', '7L63', '6L1', '5L70', '4L70', '3T', '3L93'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      dragonbreath: ['9L1', '8L1', '7L13', '6L13', '5L32', '4L32', '3L38', '3S0'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L33', '8M', '8L33', '7M', '7L29', '6M', '6L29', '5M', '5L61', '5S3', '4M', '4L61', '4S2', '3M', '3L79', '3S1'],\n      dragondance: ['9M', '8M', '5S3', '3S1'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragontail: ['9M', '9L1', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L80'],\n      dualwingbeat: ['9M', '9L1', '8T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      ember: ['9L1', '8L1', '7L1', '6L1', '5L25', '4L25', '3L25'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '4S2', '3M'],\n      firefang: ['9M', '8M', '7L1', '6L1', '5L1', '4L1'],\n      firespin: ['9M'],\n      flamethrower: ['9M', '9L55', '8M', '8L55', '7M', '7L49', '6M', '6L49', '5M', '4M', '3M'],\n      fly: ['9M', '9L0', '8M', '8L0', '7M', '7L1', '6M', '6L50', '5M', '5L50', '4M', '4L50', '3M', '3L50', '3S0'],\n      focusenergy: ['9L46', '8M', '8L46', '7L21', '6L20', '5L20', '4L20', '3L21'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['9L15', '8L15', '7L17', '6L1', '5L1', '4T', '4L1', '3L1'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hurricane: ['9M', '8M'],\n      hydropump: ['9M', '8M', '4S2'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      mimic: ['3T'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      outrage: ['9M', '8M', '8L64', '7T', '6T', '5T', '5S3', '4T'],\n      protect: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L30', '5M', '5L30', '4M', '4L30', '3M', '3L30', '3S0'],\n      psychicfangs: ['9M'],\n      rage: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S1'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      roost: ['9L1', '7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L42', '6L42', '5L43', '4L43', '3L47', '3S0'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      steelwing: ['8M', '7M', '6M', '4M', '3M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M', '4S2'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M', '7L1', '6L1', '5L1', '4L1'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['4T'],\n      zenheadbutt: ['9M', '9L39', '8M', '8L39', '7T', '7L35', '6T', '6L35', '5T', '5L37', '4T', '4L37']\n    }\n  ],\n  [\n    'beldum',\n    {\n      headbutt: ['4T'],\n      holdback: ['6S0'],\n      irondefense: ['9M', '8M', '7T', '6T', '6S0', '5T', '4T'],\n      ironhead: ['9M', '8M', '7T', '6T', '6S0', '5T', '5D', '4T'],\n      steelbeam: ['9M', '8T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M', '7L1', '6L1', '5L1', '5D', '4L1', '3L1'],\n      terablast: ['9M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '6S0', '5T', '5D', '4T']\n    }\n  ],\n  [\n    'metang',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L66', '8M', '8L66', '7L41', '6L38', '5L38', '4L44', '3L56'],\n      allyswitch: ['8M', '7T'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletpunch: ['9L1', '8L1', '7L26', '6L26', '5L32', '4L32'],\n      confide: ['7M', '6M'],\n      confusion: ['9L0', '8L0', '7L1', '6L1', '5L1', '4L1', '3L20', '3S0'],\n      cosmicpower: ['8M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      expandingforce: ['9M', '8T'],\n      explosion: ['7M', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '9L18', '8M', '8L18', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['9L1', '6M', '5M'],\n      hyperbeam: ['9M', '9L74', '8M', '8L74', '7M', '7L50', '6M', '6L50', '5M', '5L50', '4M', '4L56', '3M', '3L62'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '9L58', '8M', '8L58', '7T', '7L47', '6T', '6L47', '5T', '5L40', '4T', '4L40', '3L44'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      magnetrise: ['9L12', '8L12', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      metalclaw: ['9M', '9L0', '8L0', '7L1', '6L1', '5L1', '4L1', '3L20', '3S0'],\n      meteorbeam: ['9M', '8T'],\n      meteormash: ['9L50', '8L50', '7L44', '6L44', '5L44', '4L48', '3L50'],\n      mimic: ['3T'],\n      miracleeye: ['7L29', '6L26', '5L26'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychic: ['9M', '9L34', '8M', '8L34', '7M', '7L38', '6M', '6L38', '5M', '5L36', '4M', '4L36', '3M', '3L38'],\n      psychicnoise: ['9M'],\n      psychocut: ['8M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      pursuit: ['7L23', '6L23', '5L23', '4L28', '3L32'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['3S0'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M', '9L42', '8M', '8L42', '7L35', '6L35', '5L24', '4L24', '3L26'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M', '9L26', '8L26', '7L1', '6L1', '5L1', '4L1', '3L1', '3S0'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M', '9L6', '8M', '8L6', '7T', '7L32', '6T', '6L29', '5T', '5L29', '4T', '4L52']\n    }\n  ],\n  [\n    'metagross',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L72', '8M', '8L72', '7L41', '6L38', '5L38', '5S4', '4L44', '3L66'],\n      allyswitch: ['8M', '7T'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletpunch: ['9L1', '8L1', '7L26', '7S7', '6L26', '5L32', '5S1', '5S2', '4L32', '4S0'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      cosmicpower: ['8M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      doubleedge: ['9M', '5S4', '5S5', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '5S1', '5S3', '5S6', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      expandingforce: ['9M', '8T'],\n      explosion: ['9L1', '7M', '6M', '5M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '9L16', '8M', '8L16', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hammerarm: ['9L0', '8L0', '7L1', '6L45', '5L45', '5S1', '5S2', '5S4', '5S5', '4L45', '4S0'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['9L1', '6M', '5M'],\n      hyperbeam: ['9M', '9L82', '8M', '8L82', '7M', '7L60', '6M', '6L60', '5M', '5L62', '5S6', '4M', '4L71', '3M', '3L77'],\n      icepunch: ['9M', '8M', '7T', '7S7', '6T', '5T', '5S2', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      irondefense: ['9M', '9L62', '8M', '8L62', '7T', '7L52', '6T', '6L52', '5T', '5L40', '5S4', '4T', '4L40', '3L44'],\n      ironhead: ['9M', '8M', '7T', '7S7', '6T', '5T', '4T'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      magnetrise: ['9L12', '8L12', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      metalclaw: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      meteorbeam: ['9M', '8T'],\n      meteormash: ['9L52', '8L52', '7L44', '6L44', '5L44', '5S1', '5S3', '5S5', '5S6', '4L53', '4S0', '3L55'],\n      mimic: ['3T'],\n      miracleeye: ['7L29', '6L26', '5L26'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '5S3', '4M', '3M'],\n      psychic: ['9M', '9L34', '8M', '8L34', '7M', '7L38', '6M', '6L38', '5M', '5L36', '5S5', '5S6', '4M', '4L36', '3M', '3L38'],\n      psychicfangs: ['9M'],\n      psychicnoise: ['9M'],\n      psychocut: ['8M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      pursuit: ['7L23', '6L23', '5L23', '4L28', '3L32'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M', '9L42', '8M', '8L42', '7L35', '6L35', '5L24', '4L24', '3L1'],\n      secretpower: ['6M', '4M', '3M'],\n      selfdestruct: ['8M', '3T'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      stompingtantrum: ['9M', '8M', '7T', '7S7'],\n      stoneedge: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M', '9L26', '8L26', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M', '9L6', '8M', '8L6', '7T', '7L32', '6T', '6L29', '5T', '5L29', '5S2', '5S3', '4T', '4L62', '4S0']\n    }\n  ],\n  [\n    'regirock',\n    {\n      ancientpower: ['9L12', '8L12', '7L31', '6L31', '6S4', '5L33', '4T', '4L33', '3L33', '3S0', '3S1'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '9L6', '8M', '8L6', '7M', '7L1', '6M', '6L1', '6S4', '5M'],\n      chargebeam: ['9M', '9L1', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L49', '5S3', '4M', '4L49'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '9L30', '8L30', '8S7', '7L25', '6L17', '6S4', '5L17', '4L17', '4S2', '3L17', '3S0', '3S1'],\n      defensecurl: ['3T'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dynamicpunch: ['3T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      explosion: ['9L78', '8L78', '7M', '7L1', '6M', '6L1', '6S5', '5M', '5L1', '4M', '4L1', '3T', '3L1'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      flashcannon: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      hammerarm: ['9L42', '8L42', '8S7', '7L49', '7S6', '6L1', '6S5', '5L81', '4L81'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '9L72', '8M', '8L72', '7M', '7L67', '6M', '6L67', '5M', '5L89', '4M', '4L89', '3M', '3L65', '3S1'],\n      icepunch: ['9M', '8M', '7T', '6T', '6S5', '5T', '4T', '3T'],\n      irondefense: ['9M', '9L36', '8M', '8L36', '7T', '7L37', '6T', '6L37', '6S4', '5T', '5L41', '5S3', '4L41', '3L41'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lockon: ['9L60', '8L60', '7L55', '7S6', '6L1', '5L57', '5S3', '4L57', '3L57'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      meteorbeam: ['9M', '8T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      powergem: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M', '8M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '9L24', '8M', '8L24', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rockthrow: ['9L1', '8L1', '7L1', '6L1', '5L9', '4L9', '4S2', '3L9', '3S0'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      selfdestruct: ['8M', '3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stomp: ['9L18', '8L18', '7L1', '6L1', '5L1', '4L1', '4S2'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L48', '8M', '8L48', '8S7', '7M', '7L43', '7S6', '6M', '6L43', '6S5', '5M', '5L73', '4M', '4L73'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['9L54', '8M', '8L54', '8S7', '7T', '7L61', '6T', '6L25', '5T', '5L25', '4T', '4L25', '4S2', '3L25', '3S0', '3S1'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      zapcannon: ['9L66', '8L66', '7L55', '7S6', '6L1', '5L65', '5S3', '4L65', '3L49']\n    }\n  ],\n  [\n    'regice',\n    {\n      amnesia: ['9M', '9L36', '8M', '8L36', '8S7', '7L37', '6L37', '6S4', '6S5', '5L41', '5S3', '4L41', '3L41'],\n      ancientpower: ['9L12', '8L12', '7L31', '6L31', '6S4', '5L33', '4T', '4L33', '3L33', '3S0', '3S1'],\n      auroraveil: ['7M'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '9L48', '8M', '8L48', '7M', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '9L6', '8M', '8L6', '7M', '7L1', '6M', '6L1', '6S4', '5M'],\n      chargebeam: ['9M', '9L1', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L49', '5S3', '4M', '4L49'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '9L30', '8L30', '7L25', '6L17', '6S4', '5L17', '4L17', '4S2', '3L17', '3S0', '3S1'],\n      defensecurl: ['3T'],\n      doubleedge: ['3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      explosion: ['9L78', '8L78', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3T', '3L1'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      hail: ['8M', '7M', '6M', '6S5', '5M', '4M', '3M'],\n      hammerarm: ['9L42', '8L42', '7L49', '7S6', '6L1', '5L81', '4L81'],\n      headbutt: ['4T'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '9L72', '8M', '8L72', '7M', '7L67', '6M', '6L67', '5M', '5L89', '4M', '4L89', '3M', '3L65', '3S1'],\n      icebeam: ['9M', '9L24', '8M', '8L24', '8S7', '7M', '7L43', '7S6', '6M', '6L43', '6S5', '5M', '5L73', '4M', '4L73', '3M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L1', '8M', '8L1', '8S7', '7T', '7L1', '6T', '6L1', '5T', '5L9', '4T', '4L9', '4S2', '3T', '3L9', '3S0'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lockon: ['9L60', '8L60', '7L55', '7S6', '6L1', '5L57', '5S3', '4L57', '3L57'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      selfdestruct: ['8M', '3T'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      snowscape: ['9M'],\n      stomp: ['9L18', '8L18', '7L1', '6L1', '5L1', '4L1', '4S2'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      superpower: ['9L54', '8M', '8L54', '7T', '7L61', '6T', '6L25', '5T', '5L25', '4T', '4L25', '4S2', '3L25', '3S0', '3S1'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '6S5', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      zapcannon: ['9L66', '8L66', '8S7', '7L55', '7S6', '6L1', '5L65', '5S3', '4L65', '3L49']\n    }\n  ],\n  [\n    'registeel',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      amnesia: ['9M', '9L36', '8M', '8L36', '7L37', '6L37', '6S4', '5L41', '5S3', '4L41', '3L41'],\n      ancientpower: ['9L12', '8L12', '7L31', '6L31', '6S4', '5L33', '4T', '4L33', '3L33', '3S0', '3S1'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '9L6', '8M', '8L6', '7M', '7L1', '6M', '6L1', '5M'],\n      chargebeam: ['9M', '9L1', '8L1', '8S7', '7M', '7L1', '6M', '6L1', '5M', '5L49', '5S3', '4M', '4L49'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      curse: ['9M', '9L30', '8L30', '7L25', '6L17', '6S4', '5L17', '4L17', '4S2', '3L17', '3S0', '3S1'],\n      defensecurl: ['3T'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dynamicpunch: ['3T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      explosion: ['9L78', '8L78', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1', '3T', '3L1'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '9L24', '8M', '8L24', '8S7', '7M', '7L43', '7S6', '6M', '6L43', '5M', '5L73', '4M', '4L73'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '6S5', '5T', '4T'],\n      hammerarm: ['9L42', '8L42', '7L49', '7S6', '6L1', '5L81', '4L81'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M', '9L48', '8M', '8L48', '8S7'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '9L72', '8M', '8L72', '7M', '7L67', '6M', '6L67', '5M', '5L89', '4M', '4L89', '3M', '3L65', '3S1'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icespinner: ['9M'],\n      irondefense: ['9M', '9L36', '8M', '8L36', '8S7', '7T', '7L37', '6T', '6L37', '6S4', '6S5', '5T', '5L41', '4T', '4L41', '3L41'],\n      ironhead: ['9M', '9L24', '8M', '8L24', '7T', '7L43', '6T', '6L1', '6S5', '5T', '5L73', '4T', '4L73'],\n      lockon: ['9L60', '8L60', '7L55', '7S6', '6L1', '5L57', '5S3', '4L57', '3L57'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metalclaw: ['9M', '9L1', '8L1', '7L1', '6L1', '5L9', '4L9', '4S2', '3L9', '3S0'],\n      metalsound: ['9M'],\n      meteorbeam: ['9M', '8T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '6S5', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M', '8M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      selfdestruct: ['8M', '3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      stomp: ['9L18', '8L18', '7L1', '6L1', '5L1', '4L1', '4S2'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['9L54', '8M', '8L54', '7T', '7L61', '6T', '6L25', '5T', '5L25', '4T', '4L25', '4S2', '3L25', '3S0', '3S1'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      zapcannon: ['9L66', '8L66', '7L55', '7S6', '6L1', '5L65', '5S3', '4L65', '3L49']\n    }\n  ],\n  [\n    'latias',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M', '8M'],\n      batonpass: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      breakingswipe: ['9M', '8M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L1', '8M', '8L1', '7L7', '6L1', '5L55', '5S5', '4L55', '3L50', '3S1', '3S2'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L15', '8L15'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defog: ['7T', '4M'],\n      disarmingvoice: ['9M'],\n      dive: ['8M', '8S11', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '7S9', '6T', '5T', '4T'],\n      dragonbreath: ['9L25', '8L25', '8S10', '7L20', '6L20', '6S6', '5L20', '4L20', '4S3', '3L20'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '9L45', '8M', '8L45', '8S11', '7T', '7L56', '7S7', '7S8', '6T', '6L1', '5T', '5L80', '4M', '4L70'],\n      drainingkiss: ['9M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['9M', '8T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      futuresight: ['9M', '8M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      guardsplit: ['9L65', '9S13', '8L65', '7L46', '6L1', '5L75'],\n      healingwish: ['9L70', '9S13', '8L70', '7L1', '6L1', '5L85', '4L60'],\n      healpulse: ['9L50', '8L50', '7L16', '6L1', '6S6', '5L65', '5S5'],\n      helpinghand: ['9M', '9L5', '8M', '8L5', '7T', '7L1', '6T', '6L1', '5T', '5L10', '4T', '4L10', '3L10'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      liquidation: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      mimic: ['3T'],\n      mistball: ['9L35', '8L35', '8S11', '7L24', '7S7', '7S8', '7S9', '6L24', '6S6', '5L35', '4L35', '4S3', '4S4', '3L35', '3S0', '3S1', '3S2'],\n      mudslap: ['4T', '3T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychic: [\n        '9M',\n        '9L60',\n        '9S13',\n        '8M',\n        '8L60',\n        '7M',\n        '7L51',\n        '7S9',\n        '6M',\n        '6L51',\n        '5M',\n        '5L60',\n        '5S5',\n        '4M',\n        '4L65',\n        '3M',\n        '3L40',\n        '3S0',\n        '3S1',\n        '3S2'\n      ],\n      psychocut: ['8M'],\n      psychoshift: ['8L75', '7L28', '7S7', '7S8', '6L28', '6S6', '5L50', '5S5', '4L50'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psywave: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      recover: ['9L10', '8L10', '7L32', '6L32', '5L45', '4L45', '3L45', '3S1', '3S2'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      reflecttype: ['9L55', '9S13', '8L55', '8S10', '7L36', '6L1', '5L70'],\n      refresh: ['7L13', '6L13', '5L30', '4L30', '4S3', '4S4', '3L30', '3S0'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7L1', '6M', '6L1', '5M', '5L15', '4M', '4L15', '3M', '3L15'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      scaleshot: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      steelwing: ['8M', '7M', '6M', '4M', '3M'],\n      storedpower: ['9M', '9L1', '8M', '8L1', '7L10', '6L10'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '8S10', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      sweetkiss: ['8S11'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tailwind: ['9M', '9L20', '8L20', '7T', '7S9', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      triattack: ['8M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      twister: ['4T'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      watersport: ['7L4', '6L4', '5L25', '4L25', '4S3', '4S4', '3L25', '3S0'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '8M', '4M'],\n      wish: ['9L30', '8L30', '7L1', '7S7', '7S8', '6L1', '5L5', '4L5', '3L5'],\n      zenheadbutt: ['9M', '9L40', '8M', '8L40', '8S10', '7T', '7L41', '6T', '6L40', '5T', '5L40', '4T', '4L40', '4S4']\n    }\n  ],\n  [\n    'latios',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      allyswitch: ['9L30', '8M', '8L30', '7T'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      aurasphere: ['9M', '8M', '8S11'],\n      batonpass: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      breakingswipe: ['9M', '8M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L15', '8L15'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defog: ['7T', '4M'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '7S10', '6T', '5T', '4T'],\n      dragonbreath: ['9L25', '9S13', '8L25', '7L20', '7S8', '7S9', '6L20', '6S6', '5L20', '4L20', '4S3', '3L20'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      dragondance: ['9M', '9L1', '8M', '8L1', '8S11', '7L7', '6L1', '5L55', '5S5', '4L55', '3L50', '3S1', '3S2'],\n      dragonpulse: ['9M', '9L45', '9S13', '8M', '8L45', '8S11', '7T', '7L56', '7S8', '7S9', '6T', '6L1', '6S7', '5T', '5L80', '4M', '4L70'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dualwingbeat: ['9M', '8T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flash: ['6M', '5M', '4M', '3M'],\n      flipturn: ['9M'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      futuresight: ['9M', '8M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      healblock: ['7L1', '6L1', '5L5', '4L5'],\n      healpulse: ['9L50', '8L50', '7L16', '6L1', '6S6', '6S7', '5L65', '5S5'],\n      helpinghand: ['9M', '9L5', '8M', '8L5', '7T', '7L1', '6T', '6L1', '5T', '5L10', '4T', '4L10', '3L10'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      liquidation: ['9M'],\n      lusterpurge: [\n        '9L35',\n        '9S13',\n        '8L35',\n        '7L24',\n        '7S8',\n        '7S9',\n        '7S10',\n        '6L24',\n        '6S6',\n        '6S7',\n        '5L35',\n        '4L35',\n        '4S3',\n        '4S4',\n        '3L35',\n        '3S0',\n        '3S1',\n        '3S2'\n      ],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      memento: ['9L70', '8L70', '7L1', '6L1', '5L85', '4L60', '3L5'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      mysticalfire: ['8M'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      powersplit: ['9L65', '8L65', '7L46', '6L1', '5L75'],\n      protect: ['9M', '8M', '7M', '7L4', '6M', '6L4', '5M', '5L25', '4M', '4L25', '4S3', '4S4', '3M', '3L25', '3S0'],\n      psychic: [\n        '9M',\n        '9L60',\n        '8M',\n        '8L60',\n        '7M',\n        '7L51',\n        '7S10',\n        '6M',\n        '6L51',\n        '6S7',\n        '5M',\n        '5L60',\n        '5S5',\n        '4M',\n        '4L65',\n        '3M',\n        '3L40',\n        '3S0',\n        '3S1',\n        '3S2'\n      ],\n      psychicnoise: ['9M'],\n      psychocut: ['8M'],\n      psychoshift: ['8L75', '7L28', '7S8', '7S9', '6L28', '6S6', '5L50', '5S5', '4L50'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psywave: ['7L1', '6L1', '5L1', '4L1', '3L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      recover: ['9L10', '8L10', '7L32', '6L32', '5L45', '4L45', '3L45', '3S1', '3S2'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7L13', '6L13', '5L30', '4L30', '4S3', '4S4', '3L30', '3S0'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '7L1', '6M', '6L1', '5M', '5L15', '4M', '4L15', '3M', '3L15'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      scaleshot: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      simplebeam: ['9L55', '8L55'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      steelwing: ['8M', '7M', '6M', '4M', '3M'],\n      storedpower: ['9M', '9L1', '8M', '8L1', '7L10', '6L10'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      tailwind: ['9M', '9L20', '8L20', '7T', '7S10', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      telekinesis: ['7T', '7L36', '6L1', '5M', '5L70'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      triattack: ['8M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      twister: ['4T'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      weatherball: ['9M'],\n      whirlpool: ['8M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M', '9L40', '9S13', '8M', '8L40', '8S11', '7T', '7L41', '6T', '6L40', '5T', '5L40', '4T', '4L40', '4S4']\n    }\n  ],\n  [\n    'kyogre',\n    {\n      ancientpower: ['9L1', '8L1', '7L1', '6L1', '5L45', '5S3', '4T', '4L15', '4S2', '3L15'],\n      aquaring: ['9L54', '9S13', '8L54', '8S11', '7L30', '6L30', '6S5', '5L30', '4L30', '4S2'],\n      aquatail: ['9L9', '8L9', '7T', '7L15', '6T', '6L15', '5T', '5L65', '4T', '4L65'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '9L1', '8M', '8L1', '8S11', '7L20', '6L15', '6S5', '5L15', '4L15', '3T', '3L20', '3S0'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brine: ['8M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: [\n        '9M',\n        '9L18',\n        '8M',\n        '8L18',\n        '7M',\n        '7L50',\n        '7S7',\n        '7S8',\n        '7S9',\n        '7S10',\n        '6M',\n        '6L50',\n        '5M',\n        '5L60',\n        '4M',\n        '4L30',\n        '3M',\n        '3L30',\n        '3S0'\n      ],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      defensecurl: ['3T'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '9L81', '8L81', '7L80', '6L80', '5L80', '4L65', '3T', '3L65', '3S1'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hydropump: ['9M', '9L72', '8M', '8L72', '7L75', '6L75', '5L90', '4L45', '3L45', '3S0', '3S1'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icebeam: [\n        '9M',\n        '9L36',\n        '9S13',\n        '8M',\n        '8L36',\n        '7M',\n        '7L35',\n        '7S7',\n        '7S8',\n        '7S9',\n        '7S10',\n        '6M',\n        '6L35',\n        '6S5',\n        '6S6',\n        '5M',\n        '5L35',\n        '5S3',\n        '5S4',\n        '4M',\n        '4L35',\n        '4S2',\n        '3M',\n        '3L35',\n        '3S0'\n      ],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      liquidation: ['9M', '8M', '7T'],\n      mimic: ['3T'],\n      muddywater: ['9M', '9L27', '9S13', '8M', '8L27', '7L60', '7S7', '7S8', '7S9', '6L20', '5L20', '4L20'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      originpulse: ['9L1', '8L63', '7L45', '7S7', '7S8', '7S9', '7S10', '6L45', '6S5'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M', '4L50', '3M', '3L50', '3S1'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L1', '8M', '8L1', '7L5', '6L5', '5L5', '4L5', '3L5'],\n      secretpower: ['6M', '4M', '3M'],\n      sheercold: ['9L45', '9S13', '8L45', '7L65', '6L65', '6S6', '5L75', '5S4', '4L60', '3L60', '3S1'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      surf: ['9M', '8M', '8S11', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '8S11', '7M', '6M', '6S6', '5M', '5S3', '5S4', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['9M', '9L1', '8L1', '7T', '7L1', '6T', '6L1', '5L1', '4M', '4L1', '3M', '3L1'],\n      waterspout: ['9L90', '8L90', '7L90', '7S10', '6L50', '6S6', '5L50', '5S3', '5S4', '4L50', '4S2', '3L75'],\n      whirlpool: ['9M', '8M', '4M']\n    }\n  ],\n  [\n    'groudon',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      ancientpower: ['9L1', '8L1', '7L1', '6L1', '5L45', '5S3', '4T', '4L15', '4S2', '3L15'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '8M', '3T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '9L18', '8M', '8L18', '7M', '7L50', '7S7', '7S8', '7S9', '6M', '6L50', '5M', '5L60', '4M', '4L30', '3M', '3L30', '3S0'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      counter: ['3T'],\n      crunch: ['9M'],\n      cut: ['6M', '5M', '4M', '3M'],\n      defensecurl: ['3T'],\n      dig: ['9M', '8M', '6M', '5M', '4M', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragontail: ['7M', '6M', '5M'],\n      dynamicpunch: ['3T'],\n      earthpower: ['9M', '9L9', '8M', '8L9', '7T', '7L15', '7S10', '6T', '6L15', '5T', '5L65', '5S4', '4T', '4L65'],\n      earthquake: [\n        '9M',\n        '9L27',\n        '9S13',\n        '8M',\n        '8L27',\n        '8S11',\n        '7M',\n        '7L35',\n        '7S7',\n        '7S8',\n        '7S9',\n        '6M',\n        '6L35',\n        '6S5',\n        '5M',\n        '5L35',\n        '5S3',\n        '4M',\n        '4L35',\n        '4S2',\n        '3M',\n        '3L35',\n        '3S0'\n      ],\n      endure: ['9M', '8M', '4M', '3T'],\n      eruption: ['9L90', '8L90', '7L90', '6L50', '5L50', '5S3', '5S4', '4L50', '4S2', '3L75'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '9L72', '8M', '8L72', '7M', '7L75', '6M', '6L75', '5M', '5L90', '4M', '4L45', '3M', '3L45', '3S0', '3S1'],\n      firefang: ['9M'],\n      firepunch: ['9M', '8M', '7T', '7S10', '6T', '6S6', '5T', '4T', '3T'],\n      fissure: ['9L45', '9S13', '8L45', '7L65', '6L65', '5L75', '4L60', '3L60', '3S1'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hammerarm: ['9L36', '9S13', '8L36', '8S11', '7L80', '6L20', '6S6', '5L20', '5S4', '4L20'],\n      headbutt: ['4T'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      highhorsepower: ['9M', '8M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      lavaplume: ['9L1', '8L1', '8S11', '7L20', '6L15', '6S5', '5L15', '4L15'],\n      megakick: ['8M', '3T'],\n      megapunch: ['8M', '3T'],\n      metalclaw: ['9M'],\n      mimic: ['3T'],\n      mudshot: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1', '3L1'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      poweruppunch: ['6M'],\n      precipiceblades: ['9L1', '8L63', '7L45', '7S7', '7S8', '7S9', '7S10', '6L45', '6S5'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      rest: ['9M', '9L54', '9S13', '8M', '8L54', '7M', '7L30', '6M', '6L30', '6S5', '5M', '5L30', '4M', '4L30', '4S2', '3M', '3L50', '3S1'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockblast: ['9M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '6S6', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rollout: ['4T', '3T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      sandtomb: ['9M'],\n      scaryface: ['9M', '9L1', '8M', '8L1', '8S11', '7L5', '6L5', '5L5', '4L5', '3L5'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      slash: ['4L20', '3L20', '3S0'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: [\n        '9M',\n        '9L81',\n        '8M',\n        '8L81',\n        '7M',\n        '7L60',\n        '7S7',\n        '7S8',\n        '7S9',\n        '6M',\n        '6L60',\n        '6S6',\n        '5M',\n        '5L80',\n        '5S3',\n        '5S4',\n        '4M',\n        '4L65',\n        '3M',\n        '3L65',\n        '3S1'\n      ],\n      spikes: ['9M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '7S10', '6M', '5M', '4M', '3T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      willowisp: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'rayquaza',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      airslash: ['9M', '9L1', '8M', '8L1', '7L30', '6L30', '5L35', '4L35', '4S1'],\n      ancientpower: ['9L1', '8L1', '7L15', '6L15', '5L45', '5S2', '4T', '4L15', '4S1', '3L15'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      avalanche: ['9M', '8M', '4M'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bodyslam: ['9M', '8M', '3T'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['8M', '8S9', '7M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      celebrate: ['6S7'],\n      confide: ['7M', '6M'],\n      cosmicpower: ['8M'],\n      crunch: ['9M', '9L9', '8M', '8L9', '7L20', '6L15', '5L15', '4L15', '3L35'],\n      defog: ['7T'],\n      dive: ['8M', '6M', '5M', '4T', '3M'],\n      doubleedge: ['9M', '3T'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '6S7', '5T', '4T'],\n      dragonascent: ['9L1', '8L1', '8S9', '7T', '6T', '6S4', '6S6', '6S7'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '6S6', '5M', '4M', '4L20', '3M', '3L20'],\n      dragondance: ['9M', '9L18', '8M', '8L18', '7L60', '7S8', '6L60', '6S4', '6S6', '5L60', '5S2', '4L30', '3L30'],\n      dragonpulse: ['9M', '9L36', '9S11', '8M', '8L36', '7T', '7L50', '7S8', '6T', '6L50', '6S4', '6S5', '5T', '5L90', '5S2', '5S3', '4M', '4L75'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      extremespeed: ['9L27', '8L27', '8S9', '7L45', '7S8', '6L45', '6S4', '6S5', '6S6', '5L75', '5S3', '4L60', '3L60', '3S0'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fly: ['9M', '9L63', '9S11', '8M', '8L63', '7M', '7L65', '6M', '6L65', '6S7', '5M', '5L65', '4M', '4L45', '3M', '3L45', '3S0'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      furycutter: ['4T', '3T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      honeclaws: ['6M', '5M'],\n      hurricane: ['9M', '9L72', '8M', '8L72'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '9L90', '8M', '8L90', '7M', '7L90', '6M', '6L80', '5M', '5L80', '5S3', '4M', '4L65', '3M', '3L75'],\n      hypervoice: ['9M', '9L45', '9S11', '8M', '8L45', '7T', '7L75', '6T', '6L20', '5T', '5L20', '4L20'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M', '3M'],\n      meteorbeam: ['9M', '8T'],\n      mimic: ['3T'],\n      mudslap: ['4T', '3T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '9L81', '8M', '8L81', '7T', '7L80', '6T', '6L50', '5T', '5L50', '5S2', '4T', '4L50', '4S1', '3L65', '3S0'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psychup: ['7M', '6M', '5M', '4M', '3T'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '9L54', '9S11', '8M', '8L54', '7M', '7L35', '7S8', '6M', '6L30', '5M', '5L30', '4M', '4L30', '4S1', '3M', '3L50', '3S0'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      roar: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L1', '8M', '8L1', '7L5', '6L5', '5L5', '4L5', '3L5'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      stealthrock: ['9M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '8M', '4T', '3T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '6S5', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      twister: ['9L1', '8L1', '8S9', '7L1', '6L1', '6S5', '5L1', '4T', '4L1', '3L1'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M'],\n      vcreate: ['5S3'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      waterpulse: ['7T', '6T', '4M', '3M'],\n      whirlpool: ['9M', '8M', '4M'],\n      wildcharge: ['9M']\n    }\n  ],\n  [\n    'jirachi',\n    {\n      aerialace: ['7M', '6M', '5M', '4M', '3M'],\n      allyswitch: ['8M'],\n      amnesia: ['9M', '8M'],\n      ancientpower: ['4T'],\n      aurasphere: ['9M', '8M'],\n      batonpass: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '3T'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '6S10', '6S12', '6S13', '5L1', '4L1', '4S3', '4S4', '3L1', '3S0', '3S1'],\n      cosmicpower: ['9L84', '8M', '8L84', '7L60', '6L60', '6S11', '5L60', '5S7', '4L60', '3L45'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      defensecurl: ['3T'],\n      doomdesire: ['9L98', '8L98', '7L70', '6L70', '5L70', '4L70', '3L50'],\n      doubleedge: ['9M', '9L77', '8L77', '7L40', '6L40', '5L40', '4L40', '3T', '3L35'],\n      doubleteam: ['7M', '6M', '5M', '4M', '3M'],\n      dracometeor: ['5S6', '4S4'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['3T'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M', '3T'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      faketears: ['9M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      flash: ['6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      followme: ['5S6'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M', '9L70', '8M', '8L70', '7L55', '6L55', '5L55', '4L55', '3L40'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9L35', '8L35', '7T', '7L45', '6T', '6L45', '5T', '5L45', '4T', '4L45'],\n      happyhour: ['6S12'],\n      headbutt: ['4T'],\n      healingwish: ['9L56', '8L56', '7L50', '7S14', '6L50', '6S9', '5L50', '5S5', '5S7', '5S8', '4L50'],\n      heartstamp: ['6S11'],\n      helpinghand: ['9M', '8M', '8L14', '7T', '7L15', '6T', '6L15', '6S10', '5T', '5L15', '4T', '4L15', '3L15', '3S2'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lastresort: ['9L91', '8L91', '7T', '7L65', '6T', '6L65', '5T', '5L65', '4T', '4L65'],\n      lifedew: ['9L21', '8L21'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      luckychant: ['7L30'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalsound: ['9M'],\n      meteorbeam: ['9M', '8T'],\n      meteormash: ['9L49', '8L49', '8S15', '5S5', '5S6', '5S7'],\n      metronome: ['9M', '8M', '3T'],\n      mimic: ['3T'],\n      moonblast: ['6S9'],\n      mudslap: ['9M', '4T', '3T'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      playrough: ['9M', '8M', '6S11'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L42', '8M', '8L42', '8S15', '7M', '7L20', '6M', '6L20', '5M', '5L20', '5S5', '4M', '4L20', '3M', '3L20', '3S2'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      refresh: ['7L25', '6L25', '5L25', '4L25', '3L25', '3S2'],\n      rest: [\n        '9M',\n        '9L63',\n        '8M',\n        '8L63',\n        '8S15',\n        '7M',\n        '7L30',\n        '7S14',\n        '6M',\n        '6L5',\n        '6S13',\n        '5M',\n        '5L5',\n        '4M',\n        '4L5',\n        '4S3',\n        '4S4',\n        '3M',\n        '3L5',\n        '3S0',\n        '3S1',\n        '3S2'\n      ],\n      return: ['7M', '6M', '6S10', '5M', '5S8', '4M', '3M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M', '3M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      secretpower: ['6M', '4M', '3M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M', '3T'],\n      snore: ['8M', '7T', '6T', '5T', '4T', '3T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M', '8T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L7', '8M', '8L7', '7L10', '7S14', '6L10', '6S9', '6S12', '5L10', '5S5', '5S8', '4T', '4L10', '3T', '3L10'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M', '3T'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wish: [\n        '9L1',\n        '8L1',\n        '8S15',\n        '7L1',\n        '7S14',\n        '6L1',\n        '6S9',\n        '6S10',\n        '6S11',\n        '6S12',\n        '6S13',\n        '5L1',\n        '5S6',\n        '5S7',\n        '5S8',\n        '4L1',\n        '4S3',\n        '4S4',\n        '3L1',\n        '3S0',\n        '3S1'\n      ],\n      zenheadbutt: ['9M', '9L28', '8M', '8L28', '7T', '7L35', '6T', '6L35', '5T', '5L35', '4T', '4L35']\n    }\n  ],\n  [\n    'deoxys',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      agility: ['9M', '9L55', '7L55', '6L55', '5L73', '4L73', '3L35'],\n      allyswitch: ['7T', '5M'],\n      amnesia: ['9M', '9L55', '7L55', '6L55', '5L73', '4L73', '3L35'],\n      avalanche: ['4M'],\n      bind: ['7T', '6T', '5T'],\n      bodyslam: ['3T'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      brutalswing: ['7M'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      cosmicpower: ['9L55', '7L55', '6L55', '6S10', '5L73', '4L73', '3L35', '3S3'],\n      counter: ['9L73', '7L73', '6L73', '5L97', '4L97', '4S6', '3T', '3L50'],\n      cut: ['6M', '5M', '4M', '3M'],\n      darkpulse: ['9M', '7M', '6M', '5S9'],\n      detect: ['4S6'],\n      doubleedge: ['3T'],\n      doubleteam: ['9L13', '7M', '7L13', '6M', '6L13', '5M', '5L17', '4M', '4L17', '4S5', '3M', '3L10'],\n      drainpunch: ['9M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M', '3T'],\n      dynamicpunch: ['3T'],\n      endure: ['9M', '4M', '3T'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M'],\n      extremespeed: ['9L73', '7L73', '6L73', '5L97', '4L97', '4S4', '4S5', '3L50'],\n      facade: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      flash: ['6M', '5M', '4M', '3M'],\n      flashcannon: ['9M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M', '3M'],\n      frustration: ['7M', '6M', '5M', '4M', '3M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9L37', '9S11', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M', '3M'],\n      hyperbeam: ['9M', '9L73', '7M', '7L73', '6M', '6L73', '6S10', '5M', '5L97', '4M', '4L97', '4S7', '3M', '3L50', '3S3'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      icywind: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      imprison: ['9M'],\n      irondefense: ['9M', '9L55', '7L55', '6T', '6L55', '5T', '5L73', '4T', '4L73', '4S4', '3L35'],\n      knockoff: ['9M', '9L19', '7T', '7L19', '6T', '6L19', '5T', '5L25', '4T', '4L25', '3L15', '3S1', '3S2'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '7L1', '6L1', '5L1', '4L1', '4S8', '3L1'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['3T'],\n      megapunch: ['3T'],\n      meteorbeam: ['9M'],\n      meteormash: ['4S7'],\n      mimic: ['3T'],\n      mirrorcoat: ['9L73', '7L73', '6L73', '5L97', '4L97', '4S6', '3L50'],\n      mudslap: ['4T', '3T'],\n      nastyplot: ['9M', '5S9'],\n      naturalgift: ['4M'],\n      nightmare: ['3T'],\n      nightshade: ['9M', '9L7', '7L7', '6L7', '5L9', '4L9', '4S8', '3L5'],\n      painsplit: ['9M'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L37', '7M', '6M', '5M', '4M', '3M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L31', '9S11', '7M', '7L31', '6M', '6L31', '5M', '5L41', '4M', '4L41', '3M', '3L25', '3S0', '3S1', '3S2'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychoboost: ['9L67', '7L67', '6L67', '6S10', '5L89', '5S9', '4L89', '4S4', '4S5', '4S6', '4S7', '4S8', '3L45', '3S3'],\n      psychoshift: ['7L43', '6L43', '5L57', '4L57'],\n      psychup: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      psyshock: ['9M', '9L25', '7M', '6M', '5M'],\n      pursuit: ['7L25', '6L25', '5L33', '4L33', '3L20', '3S0', '3S2'],\n      raindance: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      recover: ['9L61', '7L61', '6L61', '6S10', '5L81', '5S9', '4L81', '3L40', '3S3'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      return: ['7M', '6M', '5M', '4M', '3M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      rocksmash: ['6M', '5M', '4M', '3M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M', '3M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M', '3M'],\n      seismictoss: ['3T'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      shockwave: ['7T', '6T', '4M', '3M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '9L43', '9S11', '7T', '6T', '5T', '4M', '3M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M', '3T'],\n      snatch: ['7T', '7L37', '6T', '6L37', '5T', '5L49', '4M', '4L49', '3M', '3L30', '3S1'],\n      snore: ['7T', '6T', '5T', '4T', '3T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      spikes: ['9M', '9L25', '7L25', '6L25', '5L33', '4L33', '3L20', '3S1'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '7T'],\n      storedpower: ['9M'],\n      strength: ['6M', '5M', '4M', '3M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      superpower: ['9L37', '7L37', '6T', '6L37', '5L49', '4T', '4L49', '4S7', '3S0'],\n      swagger: ['7M', '6M', '5M', '4M', '3T'],\n      swift: ['9M', '9L37', '7L37', '6L37', '5L49', '4T', '4L49', '4S5', '3T', '3L30', '3S2'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L19', '7M', '7L19', '6M', '6L19', '5M', '5L25', '4M', '4L25', '3M', '3L15', '3S0'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['9L13', '7L13', '6L13', '5L17', '4L17', '3L10'],\n      terablast: ['9M'],\n      throatchop: ['9M', '7T'],\n      thunder: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M', '3M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T', '3T'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M', '3T'],\n      torment: ['7M', '6M', '5M', '4M', '3M'],\n      toxic: ['7M', '6M', '5M', '4M', '3M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M', '3M'],\n      wonderroom: ['7T', '6T', '5T'],\n      wrap: ['9L1', '7L1', '6L1', '5L1', '4L1', '4S8', '3L1'],\n      zapcannon: ['9L61', '7L61', '6L61', '5L81', '4L81', '4S4', '3L40'],\n      zenheadbutt: ['9M', '9L49', '9S11', '7T', '7L49', '6T', '6L49', '5T', '5L65', '4T', '4L65']\n    }\n  ],\n  ['deoxysattack', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['deoxysdefense', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['deoxysspeed', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'turtwig',\n    {\n      absorb: ['9L9', '7L9', '6L9', '5L9', '5S0', '5S1', '4L9'],\n      amnesia: ['9M', '7E', '6E', '5E', '4E'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bite: ['9L21', '7L21', '6L21', '5L21', '4L21'],\n      bodyslam: ['9M', '7E', '6E', '5E', '4E'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L37', '7L37', '6L37', '5L37', '4L37'],\n      curse: ['9M', '9L17', '7L17', '6L17', '5L17', '4L17'],\n      cut: ['6M', '5M', '4M'],\n      doubleedge: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      endure: ['9M', '4M'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['9M', '9L41', '7T', '7L41', '6T', '6L41', '5T', '5L41', '4M', '4L41'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '7T', '6T', '5T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '7E', '6E'],\n      growth: ['9E', '7E', '6E', '5E', '4E'],\n      headbutt: ['4T'],\n      heavyslam: ['9M', '7E'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      ironhead: ['9M'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      leafstorm: ['9M', '9L45', '7L45', '6L45', '5L45', '4L45'],\n      leechseed: ['9L29', '7L29', '6L29', '5L29', '4L29'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L25', '7L25', '6L25', '5L25', '4L25'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      razorleaf: ['9L13', '7L13', '6L13', '5L13', '4L13'],\n      reflect: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M'],\n      rockclimb: ['4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      sandtomb: ['9M', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      shellsmash: ['9E'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      spitup: ['9E', '7E', '6E', '5E', '4E'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stockpile: ['9E', '7E', '6E', '5E', '5S1', '4E'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      superpower: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swallow: ['9E', '7E', '6E', '5E', '4E'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      synthesis: ['9L33', '7T', '7L33', '6T', '6L33', '5T', '5L33', '4T', '4L33'],\n      tackle: ['9L1', '9S2', '7L1', '6L1', '5L1', '5S0', '5S1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9E', '7E', '6E', '5E', '4E'],\n      tickle: ['9E', '7E', '6E', '5E', '4E'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      wideguard: ['9E', '7E', '6E', '5E'],\n      withdraw: ['9L5', '7L5', '6L5', '5L5', '5S0', '5S1', '4L5'],\n      workup: ['7M'],\n      worryseed: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'grotle',\n    {\n      absorb: ['9L1', '7L1', '6L9', '5L9', '4L9'],\n      amnesia: ['9M'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bite: ['9L22', '7L22', '6L22', '5L22', '4L22'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L42', '7L42', '6L42', '5L42', '4L42'],\n      curse: ['9M', '9L17', '7L17', '6L17', '5L17', '4L17'],\n      cut: ['6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '4M'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['9M', '9L47', '7T', '7L47', '6T', '6L47', '5T', '5L47', '4M', '4L47'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '7T', '6T', '5T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      ironhead: ['9M'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      leafstorm: ['9M', '9L52', '7L52', '6L52', '5L52', '4L52'],\n      leechseed: ['9L32', '7L32', '6L32', '5L32', '4L32'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L27', '7L27', '6L27', '5L27', '4L27'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      razorleaf: ['9L13', '7L13', '6L13', '5L13', '4L13'],\n      reflect: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M'],\n      rockclimb: ['4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      sandtomb: ['9M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      synthesis: ['9L37', '7T', '7L37', '6T', '6L37', '5T', '5L37', '4T', '4L37'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      withdraw: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'torterra',\n    {\n      absorb: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      amnesia: ['9M'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bite: ['9L22', '7L22', '6L22', '5L22', '4L22'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L45', '7L45', '6L45', '5L45', '4L45'],\n      curse: ['9M', '9L17', '7L17', '6L17', '5L17', '4L17'],\n      cut: ['6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L0', '7M', '7L1', '6M', '6L32', '5M', '5L32', '5S0', '4M', '4L32'],\n      endure: ['9M', '4M'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frenzyplant: ['9M', '7T', '6T', '5T', '4T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['9M', '9L51', '7T', '7L51', '6T', '6L51', '5T', '5L51', '4M', '4L51'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasspledge: ['9M', '7T', '6T', '5T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      headlongrush: ['9L63'],\n      heavyslam: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M'],\n      irondefense: ['9M'],\n      ironhead: ['9M', '7T', '6T', '5T', '4T'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      leafstorm: ['9M', '9L57', '7L57', '6L57', '5L57', '4L57'],\n      leechseed: ['9L33', '7L33', '6L33', '5L33', '4L33'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L27', '7L27', '6L27', '5L27', '4L27'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      outrage: ['9M', '7T', '6T', '5T', '5S0', '4T'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      razorleaf: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      reflect: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M', '5S0', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      synthesis: ['9L39', '7T', '7L39', '6T', '6L39', '5T', '5L39', '4T', '4L39'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      withdraw: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      woodhammer: ['9L1', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'chimchar',\n    {\n      acrobatics: ['9M', '9L39', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      aerialace: ['7M', '6M', '5M', '4M'],\n      agility: ['9M'],\n      assist: ['7E', '6E', '5E', '4E'],\n      attract: ['7M', '6M', '5M', '4M'],\n      blazekick: ['7E', '6E', '5E', '4E'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M'],\n      burningjealousy: ['9M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '6E', '5E', '4E'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['9M', '6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doublekick: ['9E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      ember: ['9L7', '7L7', '6L7', '5L7', '5S1', '5S3', '4L7'],\n      encore: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '9L31', '7M', '7L31', '6M', '6L31', '5M', '5L31', '4M', '4L31'],\n      fakeout: ['9E', '7E', '6E', '5E', '5S3', '4E'],\n      faketears: ['9M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M'],\n      firepledge: ['9M', '7T', '6T', '5T'],\n      firepunch: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      firespin: ['9M', '9L33', '7L33', '6L33', '5L33', '4L33'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L47', '7M', '7L47', '6M', '6L47', '5M', '5L47', '4M', '4L41', '4S0', '4S2'],\n      flamewheel: ['9L17', '7L17', '6L17', '5L17', '4L17'],\n      flareblitz: ['9M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9E', '7E', '6E', '5E', '4E'],\n      focuspunch: ['9M', '7T', '7E', '6T', '6E', '5E', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyswipes: ['9L15', '7L15', '6L15', '5L15', '4L15'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M', '4S0', '4S2'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      heatwave: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      helpinghand: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '4S0', '4S2'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      knockoff: ['9M'],\n      leer: ['9L1', '7L1', '6L1', '5L1', '5S1', '5S3', '4L1'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      metronome: ['9M'],\n      mudslap: ['9M', '4T'],\n      nastyplot: ['9M', '9L23', '7L23', '6L23', '5L23', '4L23'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M'],\n      poweruppunch: ['7E', '6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M'],\n      quickguard: ['7E', '6E', '5E'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['4T'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['9L1', '9S4', '7L1', '6L1', '5L1', '5S1', '4L1'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      slackoff: ['9L41', '7L41', '6L41', '5L41', '4L39'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      strength: ['6M', '5M', '4M'],\n      submission: ['7E', '6E', '5E'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      switcheroo: ['9E'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L9', '7M', '7L9', '6M', '6L9', '5M', '5L9', '5S1', '5S3', '4M', '4L9'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E', '4S0', '4S2'],\n      torment: ['9L25', '7M', '7L25', '6M', '6L25', '5M', '5L25', '4M', '4L25'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      vacuumwave: ['9M', '4T'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      workup: ['7M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'monferno',\n    {\n      acrobatics: ['9M', '9L46', '7M', '7L46', '6M', '6L46', '5M', '5L46'],\n      aerialace: ['7M', '6M', '5M', '4M'],\n      agility: ['9M'],\n      attract: ['7M', '6M', '5M', '4M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M'],\n      burningjealousy: ['9M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L36', '7L36', '6L36', '5L36', '4L36'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['9M', '6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['9M'],\n      dualchop: ['7T', '6T', '5T'],\n      ember: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      encore: ['9M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M'],\n      feint: ['9L26', '7L26', '6L26', '5L26', '4L26'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M'],\n      firepledge: ['9M', '7T', '6T', '5T'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T'],\n      firespin: ['9M', '9L39', '7L39', '6L39', '5L39', '4L39'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M'],\n      flamewheel: ['9L19', '7L19', '6L19', '5L19', '4L19'],\n      flareblitz: ['9M', '9L56', '7L56', '6L56', '5L56', '4L49'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyswipes: ['9L16', '7L16', '6L16', '5L16', '4L16'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      leer: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      machpunch: ['9L0', '7L1', '6L14', '5L14', '4L14'],\n      metronome: ['9M'],\n      mudslap: ['9M', '4T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      reversal: ['9M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['4T'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      slackoff: ['9L49', '7L49', '6L49', '5L49', '4L46'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L9', '7M', '7L9', '6M', '6L9', '5M', '5L9', '4M', '4L9'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T'],\n      torment: ['9L29', '7M', '7L29', '6M', '6L29', '5M', '5L29', '4M', '4L29'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      upperhand: ['9M'],\n      uproar: ['9M'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      vacuumwave: ['9M', '4T'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'infernape',\n    {\n      acrobatics: ['9M', '9L52', '7M', '7L52', '6M', '6L52', '5M', '5L52'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M'],\n      attract: ['7M', '6M', '5M', '4M'],\n      aurasphere: ['9M'],\n      blastburn: ['9M', '7T', '6T', '5T', '4T'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M', '9L58', '7M', '7L58', '6M', '6L58', '5M', '5L58', '4M', '4L53'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L0', '7L1', '6L36', '6S1', '5L36', '5S0', '4L41'],\n      coaching: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['9M', '6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['9M'],\n      dualchop: ['7T', '6T', '5T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      ember: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      encore: ['9M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M'],\n      feint: ['9L26', '7L26', '6L26', '5L26', '4L29'],\n      fireblast: ['9M', '7M', '6M', '6S1', '5M', '5S0', '4M'],\n      firepledge: ['9M', '7T', '6T', '5T'],\n      firepunch: ['9M', '7T', '6T', '6S1', '5T', '4T'],\n      firespin: ['9M', '9L42', '7L42', '6L42', '5L42', '4L45'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M'],\n      flamewheel: ['9L19', '7L19', '6L19', '5L19', '4L21'],\n      flareblitz: ['9M', '9L47', '7L1', '6L1', '5L68', '4L57'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '6S1', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyswipes: ['9L16', '7L16', '6L16', '5L16', '4L17'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '5S0', '4M'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      lashout: ['9M'],\n      leer: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      machpunch: ['9L1', '7L1', '6L14', '5L14', '4L14'],\n      metronome: ['9M'],\n      mudslap: ['9M', '4T'],\n      nastyplot: ['9M'],\n      naturalgift: ['4M'],\n      overheat: ['9M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M'],\n      punishment: ['7L29', '6L29', '5L29', '4L33'],\n      ragingfury: ['9L65'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      rollout: ['4T'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M'],\n      scratch: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      slackoff: ['9L1'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T'],\n      torment: ['9L29', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      upperhand: ['9M'],\n      uproar: ['9M'],\n      uturn: ['9M', '7M', '6M', '5M', '5S0', '4M'],\n      vacuumwave: ['9M', '4T'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'piplup',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M', '7E', '6E', '5E', '4E'],\n      aquaring: ['9E', '7E', '6E', '5E', '4E'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bide: ['7L22', '7E', '6L22', '6E', '5L22', '5E', '4L18'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      brine: ['9L29', '7L29', '6L29', '5L29', '4M', '4L29'],\n      bubble: ['7L8', '6L8', '5L8', '5S0', '5S3', '4L8'],\n      bubblebeam: ['9L18', '7L18', '7S5', '6L18', '5L18', '4L18'],\n      captivate: ['4M'],\n      charm: ['9M', '9L11'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      defog: ['7T', '4M'],\n      dig: ['6M', '5M', '4M'],\n      disarmingvoice: ['9M'],\n      dive: ['6M', '5M', '4T'],\n      doublehit: ['7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drillpeck: ['9L39', '7L39', '7S5', '6L39', '5L39', '4L39'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      featherdance: ['9M', '9E', '7E', '6E', '5E', '5S1', '5S2', '5S3', '4E'],\n      flail: ['7E', '6E', '5E', '4E'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyattack: ['9L25', '7L25', '6L25', '5L25', '4L25'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L4', '7L4', '6L4', '6S4', '5L4', '5S0', '5S3', '4L4'],\n      hail: ['7M', '6M', '5M', '4M'],\n      haze: ['9M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hydropump: ['9M', '9L43', '7L43', '7E', '7S5', '6L43', '6E', '5L43', '5E', '5S1', '4L43', '4E'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      liquidation: ['9M'],\n      mist: ['9L36', '7L36', '6L36', '5L36', '4L36'],\n      mudslap: ['7E', '6E', '5E', '4T', '4E'],\n      mudsport: ['7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      peck: ['9L15', '7L15', '6L15', '5L15', '5S1', '5S2', '4L15'],\n      pluck: ['5M', '4M'],\n      pound: ['9L1', '9S6', '7L1', '6L1', '6S4', '5L1', '5S0', '5S3', '4L1'],\n      powertrip: ['9E', '7E'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '6S4', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      roost: ['9E'],\n      round: ['7M', '6M', '5M', '5S2'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sing: ['5S2'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      snowscape: ['9M'],\n      stealthrock: ['7T', '6T', '5T', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      supersonic: ['9E', '7E', '6E', '5E', '4E'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['9L22', '7M', '6M', '5M', '4M'],\n      swift: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      tripleaxel: ['9M'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L8'],\n      waterpledge: ['9M', '7T', '6T', '5T'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      watersport: ['7L11', '6L11', '5L11', '5S1', '4L11'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '9L32', '7L32', '7S5', '6L32', '5L32', '4M', '4L32'],\n      workup: ['7M'],\n      yawn: ['9E', '7E', '6E', '5E', '4E']\n    }\n  ],\n  [\n    'prinplup',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bide: ['7L24', '6L24', '5L24', '4L19'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      brine: ['9L33', '7L33', '6L33', '5L33', '4M', '4L33'],\n      bubble: ['7L1', '6L8', '5L8', '4L8'],\n      bubblebeam: ['9L19', '7L19', '6L19', '5L19', '4L19'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      defog: ['7T', '4M'],\n      dig: ['6M', '5M', '4M'],\n      disarmingvoice: ['9M'],\n      dive: ['6M', '5M', '4T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drillpeck: ['9L46', '7L46', '6L46', '5L46', '4L46'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      featherdance: ['9M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyattack: ['9L28', '7L28', '6L28', '5L28', '4L28'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      hail: ['7M', '6M', '5M', '4M'],\n      haze: ['9M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '9L50', '7L50', '6L50', '5L51', '4L51'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      liquidation: ['9M'],\n      metalclaw: ['9M', '9L0', '7L1', '6L16', '5L16', '4L16'],\n      mist: ['9L42', '7L42', '6L42', '5L42', '4L42'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      peck: ['9L15', '7L15', '6L15', '5L15', '4L15'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      stealthrock: ['7T', '6T', '5T', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['9L24', '7M', '6M', '5M', '4M'],\n      swift: ['9M'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      tripleaxel: ['9M'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L1'],\n      waterpledge: ['9M', '7T', '6T', '5T'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      watersport: ['7L11', '6L11', '5L11', '4L11'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '9L37', '7L37', '6L37', '5L37', '4M', '4L37'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'empoleon',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      aquajet: ['9L0', '7L1', '6L36', '5L36', '5S0', '4L36'],\n      attract: ['7M', '6M', '5M', '4M'],\n      avalanche: ['9M', '4M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      brine: ['9L33', '7L33', '6L33', '5L33', '4M', '4L33'],\n      bubble: ['7L1', '6L1', '5L1', '4L1'],\n      bubblebeam: ['9L19', '7L19', '6L19', '5L19', '4L19'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      defog: ['7T', '4M'],\n      dig: ['6M', '5M', '4M'],\n      disarmingvoice: ['9M'],\n      dive: ['6M', '5M', '4T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drillpeck: ['9L52', '7L52', '6L52', '5L52', '4L52'],\n      dualwingbeat: ['9M'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      falseswipe: ['9M'],\n      featherdance: ['9M'],\n      flashcannon: ['9M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyattack: ['9L28', '7L28', '6L28', '5L28', '4L28'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '5S0', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      hail: ['7M', '6M', '5M', '4M'],\n      haze: ['9M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hydrocannon: ['9M', '7T', '6T', '5T', '4T'],\n      hydropump: ['9M', '9L59', '7L59', '6L59', '5L59', '5S0', '4L59'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '7M', '6M', '5M', '5S0', '4M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      irondefense: ['9M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lashout: ['9M'],\n      liquidation: ['9M', '7T'],\n      metalclaw: ['9M', '9L1', '7L1', '6L16', '5L16', '4L16'],\n      metalsound: ['9M'],\n      mist: ['9L46', '7L46', '6L46', '5L46', '4L46'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      peck: ['9L15', '7L15', '6L15', '5L15', '4L15'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M'],\n      steelwing: ['7M', '6M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['9L24', '7M', '7L24', '6M', '6L24', '5M', '5L24', '4M', '4L19'],\n      swift: ['9M'],\n      swordsdance: ['9M', '9L11', '7M', '7L11', '6M', '6L11', '5M', '5L11', '4M', '4L11'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '7T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      tripleaxel: ['9M'],\n      uproar: ['9M'],\n      vacuumwave: ['9M'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L1'],\n      waterpledge: ['9M', '7T', '6T', '5T'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      wavecrash: ['9L66'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '9L39', '7L39', '6L39', '5L39', '4M', '4L39'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'starly',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '9L25', '7M', '7L25', '6M', '6L25', '5M', '5L25', '4M', '4L25'],\n      agility: ['9M', '9L33', '7L33', '6L33', '5L33', '4L33'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M'],\n      astonish: ['9E', '7E', '6E', '5E', '4E'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bravebird: ['9M', '9L37', '7L37', '6L37', '5L37', '4L37'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      defog: ['7T', '4M'],\n      detect: ['7E', '6E', '5E'],\n      doubleedge: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['9L13', '7M', '7L13', '6M', '6L13', '5M', '5L13', '4M', '4L13'],\n      dualwingbeat: ['9M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L17', '7T', '7L17', '6T', '6L17', '5T', '5L17', '4T', '4L17'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      featherdance: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      finalgambit: ['9L41', '7L41', '6L41', '5L41'],\n      fly: ['9M', '7M', '6M', '5M', '4M'],\n      foresight: ['7E', '6E', '5E', '4E'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyattack: ['9E', '7E', '6E', '5E', '4E'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1', '4S0'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hurricane: ['9M'],\n      mirrormove: ['7E', '6E'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7E', '6E', '5E', '4E'],\n      quickattack: ['9L5', '7L5', '6L5', '5L5', '4L5'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['7E', '6E', '5E'],\n      roost: ['7M', '7E', '6M', '6E', '5T', '5E', '4M'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9E', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      steelwing: ['7M', '7E', '6M', '6E', '5E', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1', '4S0'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '9L29', '7L29', '6L29', '5L29', '4L29'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uproar: ['9M', '9E', '7T', '7E', '6T', '6E', '5E'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      whirlwind: ['9L21', '7L21', '6L21', '5L21', '4L21'],\n      wingattack: ['9L9', '7L9', '6L9', '5L9', '4L9'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'staravia',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '9L28', '7M', '7L28', '6M', '6L28', '5M', '5L28', '4M', '4L28'],\n      agility: ['9M', '9L38', '7L38', '6L38', '5L38', '4L38'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bravebird: ['9M', '9L43', '7L43', '6L43', '5L43', '4L43'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      defog: ['7T', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['9L13', '7M', '7L13', '6M', '6L13', '5M', '5L13', '4M', '4L13'],\n      dualwingbeat: ['9M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L18', '7T', '7L18', '6T', '6L18', '5T', '5L18', '4T', '4L18'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      featherdance: ['9M', '5D'],\n      finalgambit: ['9L48', '7L48', '6L48', '5L48'],\n      fly: ['9M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hurricane: ['9M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      quickattack: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      steelwing: ['7M', '6M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      tailwind: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      takedown: ['9M', '9L33', '7L33', '6L33', '5L33', '4L33'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uproar: ['9M', '7T', '6T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      whirlwind: ['9L23', '7L23', '6L23', '5L23', '4L23'],\n      wingattack: ['9L9', '7L9', '6L9', '5L9', '5D', '4L9'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'staraptor',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '9L28', '7M', '7L28', '6M', '6L28', '5M', '5L28', '4M', '4L28'],\n      agility: ['9M', '9L41', '7L41', '6L41', '5L41', '4L41'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bravebird: ['9M', '9L49', '7L49', '6L49', '5L49', '4L49'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L0', '7L1', '6L34', '5L34', '4L34'],\n      confide: ['7M', '6M'],\n      defog: ['7T', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['9L13', '7M', '7L13', '6M', '6L13', '5M', '5L13', '4M', '4L13'],\n      dualwingbeat: ['9M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L18', '7T', '7L18', '6T', '6L18', '5T', '5L18', '4T', '4L18'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      featherdance: ['9M'],\n      finalgambit: ['9L57', '7L57', '6L57', '5L57'],\n      fly: ['9M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      laserfocus: ['7T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      pluck: ['5M', '4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      quickattack: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      skyattack: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      steelwing: ['7M', '6M', '4M'],\n      strugglebug: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M', '9L33', '7L33', '6L33', '5L33', '4L33'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uproar: ['9M', '7T', '6T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      whirlwind: ['9L23', '7L23', '6L23', '5L23', '4L23'],\n      wingattack: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'bidoof',\n    {\n      amnesia: ['7L41', '6L29', '5L29', '4L29'],\n      aquatail: ['7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E'],\n      attract: ['7M', '6M', '5M', '4M'],\n      blizzard: ['7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['7L25'],\n      curse: ['7L49', '6L45', '5L45', '4L45'],\n      cut: ['6M', '5M', '4M'],\n      defensecurl: ['7L5', '7E', '6L9', '6E', '5L9', '5E', '4L9', '4E'],\n      dig: ['6M', '5M', '4M'],\n      doubleedge: ['7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['7E', '6E', '5E', '4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      furyswipes: ['7E', '6E', '5E', '4E'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      growl: ['7L1', '6L5', '5L5', '4L5'],\n      headbutt: ['7L13', '6L17', '5L17', '4T', '4L17'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperfang: ['7L17', '6L21', '5L21', '4L21'],\n      icebeam: ['7M', '6M', '5M', '4M'],\n      icywind: ['7T', '6T', '5T', '4T'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      mudslap: ['4T'],\n      mudsport: ['7E'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7E', '6E', '5E', '4E'],\n      pluck: ['5M', '4M'],\n      protect: ['7M', '6M', '5M', '4M'],\n      quickattack: ['7E', '6E', '5E', '4E'],\n      raindance: ['7M', '6M', '5M', '4M'],\n      rest: ['7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['7E', '6E', '5E'],\n      rocksmash: ['6M', '5M', '4M'],\n      rollout: ['7L9', '7E', '6L13', '6E', '5L13', '5E', '4T', '4L13', '4E'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '5D', '4M'],\n      shadowball: ['7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      skullbash: ['7E', '6E', '5E'],\n      sleeptalk: ['7M', '7E', '6M', '6E', '5T', '5E', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['7T', '6T', '5T', '4M'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      superfang: ['7T', '7L33', '6T', '6L37', '5T', '5L37', '4T', '4L37'],\n      superpower: ['7T', '7L45', '6T', '6L41', '5T', '5L41', '4T', '4L41'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['4T'],\n      swordsdance: ['7M', '7L37'],\n      tackle: ['7L1', '6L1', '5L1', '5D', '4L1', '4S0'],\n      takedown: ['7L29', '6L33', '5L33', '4L33'],\n      taunt: ['7M', '6M', '5M', '4M'],\n      thief: ['7M', '6M', '5M', '4M'],\n      thunder: ['7M', '6M', '5M', '4M'],\n      thunderbolt: ['7M', '6M', '5M', '4M'],\n      thunderwave: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      watersport: ['7E', '6E', '5E', '4E'],\n      workup: ['7M', '5M'],\n      yawn: ['7L21', '6L25', '5L25', '4L25']\n    }\n  ],\n  [\n    'bibarel',\n    {\n      amnesia: ['7L48', '6L33', '5L33', '4L33'],\n      aquajet: ['7L1'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['7M', '6M', '5M', '4M'],\n      blizzard: ['7M', '6M', '5M', '4M'],\n      bulldoze: ['7M', '6M', '5M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['7L28'],\n      curse: ['7L58', '6L53', '5L53', '4L53'],\n      cut: ['6M', '5M', '4M'],\n      defensecurl: ['7L5', '6L9', '5L9', '4L9'],\n      dig: ['6M', '5M', '4M'],\n      dive: ['6M', '5M', '4T'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      fling: ['7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      growl: ['7L1', '6L1', '5L1', '4L1'],\n      headbutt: ['7L13', '6L18', '5L18', '4T', '4L18'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['7M', '6M', '5M', '4M'],\n      hyperfang: ['7L18', '6L23', '5L23', '4L23'],\n      icebeam: ['7M', '6M', '5M', '4M'],\n      icywind: ['7T', '6T', '5T', '4T'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      liquidation: ['7T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      pluck: ['5M', '4M'],\n      protect: ['7M', '6M', '5M', '4M'],\n      raindance: ['7M', '6M', '5M', '4M'],\n      rest: ['7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rollout: ['7L9', '6L13', '5L13', '4T', '4L13'],\n      rototiller: ['7L1', '6L1'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['7T', '6T', '5T', '4M'],\n      stompingtantrum: ['7T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      superfang: ['7T', '7L38', '6T', '6L43', '5T', '5L43', '4T', '4L43'],\n      superpower: ['7T', '7L53', '6T', '6L48', '5T', '5L48', '4T', '4L48'],\n      surf: ['7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['4T'],\n      swordsdance: ['7M', '7L43'],\n      tackle: ['7L1', '6L1', '5L1', '4L1'],\n      takedown: ['7L33', '6L38', '5L38', '4L38'],\n      taunt: ['7M', '6M', '5M', '4M'],\n      thief: ['7M', '6M', '5M', '4M'],\n      thunder: ['7M', '6M', '5M', '4M'],\n      thunderbolt: ['7M', '6M', '5M', '4M'],\n      thunderwave: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      waterfall: ['7M', '6M', '5M', '4M'],\n      watergun: ['7L1', '6L15', '5L15', '4L15'],\n      waterpulse: ['7T', '6T', '4M'],\n      whirlpool: ['4M'],\n      workup: ['7M', '5M'],\n      yawn: ['7L23', '6L28', '5L28', '4L28']\n    }\n  ],\n  [\n    'kricketot',\n    {\n      bide: ['7L1', '6L1', '5L1', '4L1'],\n      bugbite: ['9M', '9L16', '7T', '7L16', '6T', '6L16', '5T', '5L16', '4T', '4L16'],\n      endeavor: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      lunge: ['9M'],\n      mudslap: ['4T'],\n      skittersmack: ['9M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '9L6', '7L6', '6M', '6L6', '5L6', '5D'],\n      tackle: ['9L1'],\n      terablast: ['9M'],\n      uproar: ['7T', '6T', '5T', '5D', '4T']\n    }\n  ],\n  [\n    'kricketune',\n    {\n      absorb: ['9L14', '7L14'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      attract: ['7M', '6M', '5M', '4M'],\n      batonpass: ['9M'],\n      bide: ['7L1', '6L1', '5L1', '4L1'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '9L46', '7L46', '6L46', '5L46', '4L34'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      falseswipe: ['9M', '7M', '6M', '5M', '4M'],\n      fellstinger: ['9L36', '7L36', '6L36'],\n      flash: ['6M', '5M', '4M'],\n      focusenergy: ['9L22', '7L22', '6L22', '5L22', '4L22'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['9L0', '7L1', '6L10', '5L10', '4T', '4L10'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      healbell: ['7T', '6T', '5T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '7T', '6T', '5T'],\n      infestation: ['7M', '6M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      leechlife: ['9M', '7M', '6L14', '5L14', '4L14'],\n      lunge: ['9M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightslash: ['9L42', '7L42', '6L42', '5L42', '4L42'],\n      perishsong: ['9L50', '7L50', '6L50', '5L50', '4L38'],\n      pounce: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      screech: ['9L34', '7L34', '6L34', '5L34', '4L30'],\n      secretpower: ['6M', '4M'],\n      silverwind: ['4M'],\n      sing: ['9L18', '7L18', '6L18', '5L18', '4L18'],\n      skittersmack: ['9M'],\n      slash: ['9L26', '7L26', '6L26', '5L26', '4L26'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stickyweb: ['9L44', '7L44', '6L44'],\n      strength: ['6M', '5M', '4M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L38', '7M', '7L38', '6M', '6L38', '5M', '5L38', '4M', '4L38'],\n      terablast: ['9M'],\n      throatchop: ['9M', '7T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      xscissor: ['9M', '9L30', '7M', '7L30', '6M', '6L30', '5M', '5L30', '4M', '4L26']\n    }\n  ],\n  [\n    'shinx',\n    {\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      babydolleyes: ['9E', '8E', '7L11', '6L11'],\n      bite: ['9L12', '8L12', '7L17', '6L17', '5L17', '4L13'],\n      captivate: ['4M'],\n      charge: ['9M', '9L8', '8L8', '7L9', '6L9', '5L9', '5D', '4L9'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      crunch: ['9M', '9L36', '8M', '8L36', '7L33', '6L33', '5L33', '4L29'],\n      discharge: ['9L40', '8L40', '7L41', '6L41', '5L41', '4L41'],\n      doubleedge: ['9M'],\n      doublekick: ['9E', '8E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      eerieimpulse: ['9M', '8M', '7E', '6E'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M', '8M', '7E', '6E'],\n      firefang: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M', '7T', '7E', '6T', '6E', '5E'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      howl: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      icefang: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      leer: ['9L1', '8L1', '7L5', '6L5', '5L5', '4L5'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      magnetrise: ['7T', '6T', '5T', '5D', '4T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightslash: ['9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychicfangs: ['9M', '8M'],\n      quickattack: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      risingvoltage: ['8T'],\n      roar: ['9M', '9L20', '8L20', '7M', '7L21', '6M', '6L21', '5M', '5L21', '4M', '4L21'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L28', '8M', '8L28', '7L37', '6L37', '5L37', '4L37'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['9E', '8E', '7T', '7E', '6T', '6E', '5E', '4M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spark: ['9L16', '8L16', '7L13', '6L13', '5L13', '4L13'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M'],\n      swagger: ['9L44', '8L44', '7M', '7L25', '6M', '6L25', '5M', '5L25', '4M', '4L25'],\n      swift: ['9M', '8M', '7E', '6E', '5E', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderfang: ['9M', '8M', '7L29', '7E', '6L29', '6E', '5L29', '5E', '4L29', '4E'],\n      thundershock: ['9L4', '8L4'],\n      thunderwave: ['9M', '9L32', '8M', '8L32', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      voltswitch: ['9M', '9L24', '8M', '8L24', '7M', '6M', '5M'],\n      wildcharge: ['9M', '9L48', '8M', '8L48', '7M', '7L45', '6M', '6L45', '5M', '5L45']\n    }\n  ],\n  [\n    'luxio',\n    {\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bite: ['9L12', '8L12', '7L18', '6L18', '5L18', '4L13'],\n      captivate: ['4M'],\n      charge: ['9M', '9L1', '8L1', '7L9', '6L9', '5L9', '4L9'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      crunch: ['9M', '9L48', '8M', '8L48', '7L38', '6L38', '5L38', '4L33'],\n      discharge: ['9L54', '8L54', '7L48', '6L48', '5L48', '4L48'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      icefang: ['9M', '8M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychicfangs: ['9M', '8M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      risingvoltage: ['8T'],\n      roar: ['9M', '9L24', '8L24', '7M', '7L23', '6M', '6L23', '5M', '5L23', '4M', '4L23'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L36', '8M', '8L36', '7L43', '6L43', '5L43', '4L43'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spark: ['9L18', '8L18', '7L13', '6L13', '5L13', '4L13'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M'],\n      swagger: ['9L60', '8L60', '7M', '7L28', '6M', '6L28', '5M', '5L28', '4M', '4L28'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderfang: ['9M', '8M', '7L33', '6L33', '5L33', '4L33'],\n      thundershock: ['9L1', '8L1'],\n      thunderwave: ['9M', '9L42', '8M', '8L42', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      voltswitch: ['9M', '9L31', '8M', '8L31', '7M', '6M', '5M'],\n      wildcharge: ['9M', '9L68', '8M', '8L68', '7M', '7L53', '6M', '6L53', '5M', '5L53']\n    }\n  ],\n  [\n    'luxray',\n    {\n      agility: ['9M', '8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bite: ['9L12', '8L12', '7L18', '6L18', '5L18', '4L13'],\n      bodyslam: ['9M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      crunch: ['9M', '9L56', '8M', '8L56', '7L42', '6L42', '5L42', '4L35'],\n      discharge: ['9L64', '8L64', '7L56', '6L56', '5L56', '4L56'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icefang: ['9M', '8M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychicfangs: ['9M', '8M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      risingvoltage: ['8T'],\n      roar: ['9M', '9L24', '8L24', '7M', '7L23', '6M', '6L23', '5M', '5L23', '4M', '4L23'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L40', '8M', '8L40', '7L49', '6L49', '5L49', '4L49'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spark: ['9L18', '8L18', '7L13', '6L13', '5L13', '4L13'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['9L72', '8L72', '7M', '7L28', '6M', '6L28', '5M', '5L28', '4M', '4L28'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderfang: ['9M', '8M', '7L35', '6L35', '5L35', '4L35'],\n      thundershock: ['9L1', '8L1'],\n      thunderwave: ['9M', '9L48', '8M', '8L48', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      voltswitch: ['9M', '9L33', '8M', '8L33', '7M', '6M', '5M'],\n      wildcharge: ['9M', '9L80', '8M', '8L80', '7M', '7L63', '6M', '6L63', '5M', '5L63']\n    }\n  ],\n  [\n    'cranidos',\n    {\n      ancientpower: ['9L33', '7L33', '6L33', '5L33', '4T', '4L28'],\n      assurance: ['9L24', '7L24', '6L24', '5L24', '4L24'],\n      attract: ['7M', '6M', '5M', '4M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L28', '6L28', '5L28'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '7E', '6E', '5E', '5S0', '4E'],\n      curse: ['9M', '7E', '6E', '5E', '4E'],\n      dig: ['9M', '6M', '5M', '4M'],\n      doubleedge: ['9M', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dragoncheer: ['9M'],\n      dragonpulse: ['9M', '7T', '6T', '5T', '4M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '7T', '6T', '5T', '5D', '4T'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L6', '7L6', '6L6', '5L6', '4L6'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      hammerarm: ['9E', '7E', '6E', '5E', '4E'],\n      headbutt: ['9L1', '7L1', '6L1', '5L1', '5D', '5S0', '4T', '4L1'],\n      headsmash: ['9L46', '7L46', '6L46', '5L46', '4L43'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T'],\n      irontail: ['7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      leer: ['9L1', '7L1', '7E', '6L1', '6E', '5L1', '5E', '4L1', '4E'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L10', '6L10', '5L10', '5S0', '4L10'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['9L10', '6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M'],\n      scaryface: ['9M', '9L19', '7L19', '6L19', '5L19', '4L19'],\n      screech: ['9L42', '7L42', '6L42', '5L42', '4L37'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      slam: ['9L28', '7E', '6E', '5E', '4E'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stomp: ['9E', '7E', '6E', '5E', '4E'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      takedown: ['9M', '9L15', '7L15', '6L15', '5L15', '5S0', '4L15'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      thrash: ['9E', '7E', '6E', '5E', '4E'],\n      thunder: ['9M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      whirlwind: ['9E', '7E', '6E', '5E', '4E'],\n      zenheadbutt: ['9M', '9L37', '7T', '7L37', '6T', '6L37', '5T', '5L37', '4T', '4L33']\n    }\n  ],\n  [\n    'rampardos',\n    {\n      ancientpower: ['9L36', '7L36', '6L36', '5L36', '4T', '4L28'],\n      assurance: ['9L24', '7L24', '6L24', '5L24', '4L24'],\n      attract: ['7M', '6M', '5M', '4M'],\n      avalanche: ['9M', '4M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chipaway: ['7L28', '6L28', '5L28'],\n      confide: ['7M', '6M'],\n      crunch: ['9M'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['9M', '6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M'],\n      dragonpulse: ['9M', '7T', '6T', '5T', '4M'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      endeavor: ['9M', '9L0', '7T', '7L1', '6T', '6L30', '5T', '5L30', '4T', '4L30'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '7T', '6T', '5T', '4T'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '7L1', '6L6', '5L6', '4L6'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      headbutt: ['9L1', '7L1', '6L1', '5L1', '4T', '4L1'],\n      headsmash: ['9L58', '7L58', '6L58', '5L58', '4L52'],\n      heavyslam: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '7T', '6T', '5T', '4T'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '7T', '6T', '5T', '4T'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L1', '6L10', '5L10', '4L10'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['9L10', '6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M'],\n      scaryface: ['9M', '9L19', '7L19', '6L19', '5L19', '4L19'],\n      screech: ['9L51', '7L51', '6L51', '5L51', '4L43'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      slam: ['9L28'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      spite: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      supercellslam: ['9M'],\n      superpower: ['7T', '6T', '5T', '4T'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      takedown: ['9M', '9L15', '7L15', '6L15', '5L15', '4L15'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      whirlpool: ['4M'],\n      zenheadbutt: ['9M', '9L43', '7T', '7L43', '6T', '6L43', '5T', '5L43', '4T', '4L36']\n    }\n  ],\n  [\n    'shieldon',\n    {\n      ancientpower: ['9L28', '7L28', '6L28', '5L28', '4T', '4L28'],\n      attract: ['7M', '6M', '5M', '4M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M', '7E', '6E', '5E', '5S0', '4E'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      curse: ['9M', '7E', '6E', '5E', '4E'],\n      dig: ['9M', '6M', '5M', '4M'],\n      doubleedge: ['9M', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '9L33', '7L33', '6L33', '5L33', '4M', '4L33'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M'],\n      fissure: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M'],\n      flashcannon: ['9M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9E', '7E', '6E', '5E', '4E'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      guardsplit: ['9E', '7E', '6E'],\n      hardpress: ['9M'],\n      headbutt: ['9E', '7E', '6E', '5E', '4T', '4E'],\n      heavyslam: ['9M', '9L46', '7L46', '6L46', '5L46'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '9L19', '7T', '7L19', '6T', '6L19', '5T', '5L19', '4T', '4L19'],\n      ironhead: ['9M', '9L42', '7T', '7L42', '6T', '6L42', '5T', '5L42', '4T', '4L43'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      metalburst: ['9L37', '7L37', '6L37', '5L37', '4L37'],\n      metalsound: ['9M', '9L10', '7L10', '6L10', '5L10', '5S0', '4L10'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      powergem: ['9M'],\n      protect: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '5D', '5S0', '4M', '4L1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockblast: ['9M', '7E', '6E', '5E', '4E'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M'],\n      scaryface: ['9M', '7E', '6E', '5E', '4E'],\n      scorchingsands: ['9M'],\n      screech: ['9E', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      steelbeam: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['9L24', '7M', '7L24', '6M', '6L24', '5M', '5L24', '4M', '4L24'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '9L15', '7L15', '6L15', '5L15', '5S0', '4L15'],\n      taunt: ['9M', '9L6', '7M', '7L6', '6M', '6L6', '5M', '5L6', '4M', '4L6'],\n      terablast: ['9M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      wideguard: ['7E', '6E', '5E']\n    }\n  ],\n  [\n    'bastiodon',\n    {\n      ancientpower: ['9L28', '7L28', '6L28', '5L28', '4T', '4L28'],\n      attract: ['7M', '6M', '5M', '4M'],\n      avalanche: ['9M', '4M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      block: ['9L0', '7T', '7L1', '6T', '6L30', '5T', '5L30', '4T', '4L30'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      dig: ['9M', '6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '9L36', '7L36', '6L36', '5L36', '4M', '4L36'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M'],\n      flashcannon: ['9M', '7M', '6M', '5M', '4M'],\n      foulplay: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M', '9L58', '7L58', '6L58', '5L58'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '9L19', '7T', '7L19', '6T', '6L19', '5T', '5L19', '4T', '4L19'],\n      ironhead: ['9M', '9L51', '7T', '7L51', '6T', '6L51', '5T', '5L51', '4T', '4L52'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      metalburst: ['9L43', '7L43', '6L43', '5L43', '4L43'],\n      metalsound: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      meteorbeam: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '7T', '6T', '5T', '4T'],\n      powergem: ['9M'],\n      protect: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      reflect: ['9M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['9L24', '7M', '7L24', '6M', '6L24', '5M', '5L24', '4M', '4L24'],\n      tackle: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '9L15', '7L15', '6L15', '5L15', '4L15'],\n      taunt: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      terablast: ['9M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      wideguard: ['9L1']\n    }\n  ],\n  [\n    'burmy',\n    {\n      bugbite: ['7T', '7L15', '6T', '6L15', '5T', '5L15', '5D', '4T', '4L15'],\n      electroweb: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '7L20', '6M', '6L20', '5L20', '4L20'],\n      protect: ['7M', '7L1', '6M', '6L1', '5L1', '5D', '4L1'],\n      snore: ['7T', '6T', '5T', '5D', '4T'],\n      stringshot: ['4T'],\n      tackle: ['7L10', '6L10', '5L10', '4L10']\n    }\n  ],\n  [\n    'wormadam',\n    {\n      allyswitch: ['7T'],\n      attract: ['7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L41'],\n      bugbite: ['7T', '7L1', '6T', '6L15', '5T', '5L15', '4T', '4L15'],\n      bugbuzz: ['7L50'],\n      bulletseed: ['4M'],\n      captivate: ['7L35', '6L35', '5L35', '4M', '4L35'],\n      confide: ['7M', '6M'],\n      confusion: ['7L23', '6L23', '5L23', '4L23'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      electroweb: ['7T', '6T', '5T'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['4M'],\n      energyball: ['7M', '6M', '5M', '4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      flail: ['7L38', '6L38', '5L38', '4L38'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['7T', '6T', '5T', '4M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      growth: ['7L29', '6L29', '5L29', '4L29'],\n      hiddenpower: ['7M', '7L20', '6M', '6L20', '5M', '5L20', '4M', '4L20'],\n      hyperbeam: ['7M', '6M', '5M', '4M'],\n      infestation: ['7M', '6M'],\n      leafstorm: ['7L47', '6L47', '5L47', '4L47'],\n      naturalgift: ['4M'],\n      protect: ['7M', '7L1', '6M', '6L10', '5M', '5L10', '4M', '4L10'],\n      psybeam: ['7L32', '6L32', '5L32', '4L32'],\n      psychic: ['7M', '7L44', '6M', '6L44', '5M', '5L44', '4M', '4L44'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      quiverdance: ['7L1'],\n      raindance: ['7M', '6M', '5M', '4M'],\n      razorleaf: ['7L26', '6L26', '5L26', '4L26'],\n      rest: ['7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['7T', '6T', '5T', '4T'],\n      shadowball: ['7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['7T', '6T', '5T', '4M'],\n      sleeptalk: ['7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['7M', '6M', '5M', '4M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      suckerpunch: ['7L1', '4T'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      tackle: ['7L1', '6L1', '5L1', '4L1'],\n      telekinesis: ['7T'],\n      thief: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      venoshock: ['7M', '6M', '5M'],\n      worryseed: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'wormadamsandy',\n    {\n      allyswitch: ['7T'],\n      attract: ['7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L41'],\n      bugbite: ['7T', '7L1', '6T', '6L15', '5T', '5L15', '4T', '4L15'],\n      bugbuzz: ['7L50'],\n      bulldoze: ['7M', '6M', '5M'],\n      captivate: ['7L35', '6L35', '5L35', '4M', '4L35'],\n      confide: ['7M', '6M'],\n      confusion: ['7L23', '6L23', '5L23', '4L23'],\n      dig: ['6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      earthpower: ['7T', '6T', '5T', '4T'],\n      earthquake: ['7M', '6M', '5M', '4M'],\n      electroweb: ['7T', '6T', '5T'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      fissure: ['7L47', '6L47', '5L47', '4L47'],\n      flail: ['7L38', '6L38', '5L38', '4L38'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      harden: ['7L29', '6L29', '5L29', '4L29'],\n      hiddenpower: ['7M', '7L20', '6M', '6L20', '5M', '5L20', '4M', '4L20'],\n      hyperbeam: ['7M', '6M', '5M', '4M'],\n      infestation: ['7M', '6M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      protect: ['7M', '7L1', '6M', '6L10', '5M', '5L10', '4M', '4L10'],\n      psybeam: ['7L32', '6L32', '5L32', '4L32'],\n      psychic: ['7M', '7L44', '6M', '6L44', '5M', '5L44', '4M', '4L44'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      quiverdance: ['7L1'],\n      raindance: ['7M', '6M', '5M', '4M'],\n      rest: ['7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockblast: ['7L26', '6L26', '5L26', '4L26'],\n      rocktomb: ['7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      sandstorm: ['7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['7T', '6T', '5T', '4M'],\n      sleeptalk: ['7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['7T', '6T', '5T'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      suckerpunch: ['7L1', '4T'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      tackle: ['7L1', '6L1', '5L1', '4L1'],\n      telekinesis: ['7T'],\n      thief: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      venoshock: ['7M', '6M', '5M']\n    }\n  ],\n  [\n    'wormadamtrash',\n    {\n      allyswitch: ['7T'],\n      attract: ['7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L41'],\n      bugbite: ['7T', '7L1', '6T', '6L15', '5T', '5L15', '4T', '4L15'],\n      bugbuzz: ['7L50'],\n      captivate: ['7L35', '6L35', '5L35', '4M', '4L35'],\n      confide: ['7M', '6M'],\n      confusion: ['7L23', '6L23', '5L23', '4L23'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      electroweb: ['7T', '6T', '5T'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      flail: ['7L38', '6L38', '5L38', '4L38'],\n      flash: ['6M', '5M', '4M'],\n      flashcannon: ['7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      gunkshot: ['7T', '6T', '5T', '4T'],\n      gyroball: ['7M', '6M', '5M', '4M'],\n      hiddenpower: ['7M', '7L20', '6M', '6L20', '5M', '5L20', '4M', '4L20'],\n      hyperbeam: ['7M', '6M', '5M', '4M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['7T', '6T', '5T', '4T'],\n      ironhead: ['7T', '7L47', '6T', '6L47', '5T', '5L47', '4T', '4L47'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      metalburst: ['7L1'],\n      metalsound: ['7L29', '6L29', '5L29', '4L29'],\n      mirrorshot: ['7L26', '6L26', '5L26', '4L26'],\n      naturalgift: ['4M'],\n      protect: ['7M', '7L1', '6M', '6L10', '5M', '5L10', '4M', '4L10'],\n      psybeam: ['7L32', '6L32', '5L32', '4L32'],\n      psychic: ['7M', '7L44', '6M', '6L44', '5M', '5L44', '4M', '4L44'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      quiverdance: ['7L1'],\n      raindance: ['7M', '6M', '5M', '4M'],\n      rest: ['7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['7T', '6T', '5T', '4M'],\n      sleeptalk: ['7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stealthrock: ['7T', '6T', '5T', '4M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      suckerpunch: ['7L1', '4T'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      tackle: ['7L1', '6L1', '5L1', '4L1'],\n      telekinesis: ['7T'],\n      thief: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      venoshock: ['7M', '6M', '5M']\n    }\n  ],\n  [\n    'mothim',\n    {\n      acrobatics: ['7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M', '4M'],\n      aircutter: ['4T'],\n      airslash: ['7L41', '6L41', '5L41', '4L41'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bugbite: ['7T', '7L1', '6T', '6L15', '5T', '5L15', '4T', '4L15'],\n      bugbuzz: ['7L50', '6L47', '5L47', '4L47'],\n      camouflage: ['7L35', '6L35', '5L35', '4L35'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confusion: ['7L23', '6L23', '5L23', '4L23'],\n      defog: ['7T', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      electroweb: ['7T', '6T', '5T'],\n      endure: ['4M'],\n      energyball: ['7M', '6M', '5M', '4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['7T', '6T', '5T', '4M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      gust: ['7L26', '6L26', '5L26', '4L26'],\n      hiddenpower: ['7M', '7L20', '6M', '6L20', '5M', '5L20', '4M', '4L20'],\n      hyperbeam: ['7M', '6M', '5M', '4M'],\n      infestation: ['7M', '6M'],\n      lunge: ['7L47'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      poisonpowder: ['7L29', '6L29', '5L29', '4L29'],\n      protect: ['7M', '7L1', '6M', '6L10', '5M', '5L10', '4M', '4L10'],\n      psybeam: ['7L32', '6L32', '5L32', '4L32'],\n      psychic: ['7M', '7L44', '6M', '6L44', '5M', '5L44', '4M', '4L44'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      quiverdance: ['7L1', '6L50', '5L50'],\n      raindance: ['7M', '6M', '5M', '4M'],\n      rest: ['7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roost: ['7M', '6M', '5T', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['7L38', '6L38', '5L38', '4M', '4L38'],\n      skillswap: ['7T', '6T', '5T', '4M'],\n      sleeptalk: ['7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['7M', '6M', '5M', '4M'],\n      stringshot: ['4T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['4T'],\n      tackle: ['7L1', '6L1', '5L1', '4L1'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      thief: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uturn: ['7M', '6M', '5M', '4M'],\n      venoshock: ['7M', '6M', '5M']\n    }\n  ],\n  [\n    'combee',\n    {\n      aircutter: ['5D', '4T'],\n      bugbite: ['9M', '9L1', '8L1', '7T', '7L13', '6T', '6L13', '5T', '5L13', '4T', '4L13'],\n      bugbuzz: ['9M', '8M', '7L29', '6L29', '5L29'],\n      dualwingbeat: ['8T'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      gust: ['9L1', '8L1', '7L1', '6L1', '5L1', '5D', '4L1'],\n      lunge: ['9M'],\n      mudslap: ['4T'],\n      ominouswind: ['4T'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '9L1', '8L1'],\n      sweetscent: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      swift: ['4T'],\n      tailwind: ['7T', '6T', '5T', '5D', '4T'],\n      terablast: ['9M']\n    }\n  ],\n  [\n    'vespiquen',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      agility: ['9M'],\n      aircutter: ['4T'],\n      airslash: ['9M', '9L28', '8M', '8L28', '7L37', '6L37', '5L37'],\n      aromatherapy: ['8L24'],\n      aromaticmist: ['9L8', '8L8'],\n      assurance: ['8M'],\n      attackorder: ['9L40', '8L40', '7L45', '6L45', '5L37', '4L37'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      beatup: ['8M'],\n      bugbite: ['9M', '9L1', '8L1', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '8M'],\n      captivate: ['7L41', '6L41', '5L33', '4M', '4L33'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '4L7'],\n      crosspoison: ['8M'],\n      cut: ['6M', '5M', '4M'],\n      defendorder: ['9L40', '8L40', '7L17', '6L17', '5L13', '4L13'],\n      defog: ['7T', '4M'],\n      destinybond: ['9L44', '8L44', '7L1', '6L1', '5L43', '4L43'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dualwingbeat: ['9M', '8T'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fellstinger: ['9L12', '8L12', '7L1', '6L1'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['9L4', '8L4', '7L5', '6L5', '5L5', '4T', '4L9'],\n      furyswipes: ['9L16', '8L16', '7L13', '6L13', '5L13', '4L19'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gust: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      healorder: ['7L29', '6L29', '5L25', '4L25'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      infestation: ['7M', '6M'],\n      laserfocus: ['7T'],\n      lunge: ['9M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      pinmissile: ['8M'],\n      poisonsting: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L3'],\n      pollenpuff: ['9M'],\n      pounce: ['9M'],\n      powergem: ['9M', '9L32', '8M', '8L32', '7L25', '6L25', '5L21', '4L21'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      pursuit: ['7L9', '6L9', '5L9', '4L15'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roost: ['9L24', '7M', '6M', '5T', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      skittersmack: ['9M'],\n      slash: ['9L0', '8L0', '7L1', '6L21', '5L21', '4L31'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spikes: ['9M'],\n      spite: ['9M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '9L1', '8L1', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['9L20', '8L20', '7M', '7L49', '6M', '6L49', '5M', '5L39', '4M', '4L39'],\n      sweetscent: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      swift: ['9M', '8M', '4T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['9M', '9L36', '8L36', '7M', '7L33', '6M', '6L33', '5M', '5L27', '4M', '4L27'],\n      toxicspikes: ['9M', '8M'],\n      uproar: ['8M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'pachirisu',\n    {\n      aerialace: ['9M'],\n      agility: ['9M'],\n      alluringvoice: ['9M'],\n      attract: ['7M', '6M', '5M', '4M'],\n      babydolleyes: ['9E', '7E'],\n      bestow: ['7E', '6E', '5E'],\n      bide: ['7L1', '6L1', '5L1', '4L1'],\n      bite: ['9E', '7E', '6E', '5E', '4E'],\n      captivate: ['4M'],\n      charge: ['9M', '9E', '7E', '6E', '5E'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L9', '7L9', '6L9', '5L9', '4L9'],\n      confide: ['7M', '6M'],\n      covet: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4E'],\n      cut: ['6M', '5M', '4M'],\n      defensecurl: ['9E', '7E', '6E', '5E', '4E'],\n      dig: ['9M', '6M', '5M', '4M'],\n      discharge: ['9L41', '7L41', '6L41', '5L41', '4L29'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L25', '7L25', '6L25', '5L25'],\n      electroweb: ['9M', '7T', '6T'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '9L17', '7L17', '6L17', '5L17', '4M', '4L17'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      flail: ['9E', '7E', '6E', '5E', '4E'],\n      flash: ['6M', '5M', '4M'],\n      flatter: ['9E', '7E', '6E', '5E', '4E'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      followme: ['9E', '7E', '6E', '6S0', '5E'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      gunkshot: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M'],\n      hyperfang: ['7L49', '6L49', '5L49'],\n      iondeluge: ['7E', '6E'],\n      irontail: ['7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      laserfocus: ['7T'],\n      lastresort: ['9L45', '7T', '7L45', '6T', '6L45', '5T', '5L45', '4T', '4L37'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      nuzzle: ['9L19', '7L19', '6L19', '6S0'],\n      playrough: ['9M'],\n      protect: ['9M', '7M', '6M', '6S0', '5M', '4M'],\n      quickattack: ['9L5', '7L5', '6L5', '5L5', '5D', '4L5'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rollout: ['9E', '7E', '6E', '5E', '4T', '4E'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      shockwave: ['7T', '6T', '5D', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      spark: ['9L13', '7L13', '6L13', '5L13', '4L13'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M'],\n      superfang: ['9M', '9L37', '7T', '7L37', '6T', '6L37', '6S0', '5T', '5L37', '4T', '4L33'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      sweetkiss: ['9L29', '7L29', '6L29', '5L29', '4L25'],\n      swift: ['9M', '9L21', '7L21', '6L21', '5L21', '4T', '4L21'],\n      tailwhip: ['9E', '7E', '6E', '5E'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M', '9L49', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M'],\n      thunderfang: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T', '4T'],\n      thundershock: ['9L1'],\n      thunderwave: ['9M', '9L33', '7M', '7L33', '6M', '6L33', '5M', '5L33', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '7T', '6T', '5T', '4T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M']\n    }\n  ],\n  [\n    'buizel',\n    {\n      agility: ['9M', '9L41', '7L41', '6L41', '5L28', '4L28'],\n      aquajet: ['9L24', '7L24', '6L24', '5L21', '4L21'],\n      aquaring: ['9E', '7E', '6E', '5E'],\n      aquatail: ['9L38', '7T', '7L38', '7E', '6T', '6L38', '6E', '5T', '5L38', '5E'],\n      attract: ['7M', '6M', '5M', '4M'],\n      batonpass: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      bite: ['9L18'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      brine: ['4M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M'],\n      dig: ['9M', '6M', '5M', '4M'],\n      dive: ['6M', '5M', '4T'],\n      doublehit: ['9L27', '7L27', '6L27', '5L27'],\n      doubleslap: ['7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      fling: ['9M'],\n      flipturn: ['9M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['9E', '7E', '6E', '5E', '4E'],\n      furyswipes: ['9E', '7E', '6E', '5E', '4E'],\n      growl: ['9L4', '7L4', '6L4', '5L1', '4L1'],\n      hail: ['7M', '6M', '5M', '4M'],\n      headbutt: ['9E', '7E', '6E', '5E', '4T', '4E'],\n      helpinghand: ['9M', '9E', '7T', '7E'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hydropump: ['9M', '9L45', '7L45', '6L45', '5L45'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icefang: ['9M'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      liquidation: ['9M', '9L35'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      mefirst: ['7E', '6E', '5E'],\n      mudslap: ['9M', '9E', '7E', '6E', '5E', '4T', '4E'],\n      naturalgift: ['4M'],\n      odorsleuth: ['7E', '6E', '5E', '4E'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L18', '6L18', '5L10', '4L10'],\n      quickattack: ['9L11', '7L11', '6L11', '5L3', '4L3'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      razorwind: ['7L35', '6L35', '5L35', '4L45'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      slash: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      soak: ['9L7', '7E', '6E'],\n      sonicboom: ['7L1', '6L1', '5L1', '4L1'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '9L21', '7L21', '6L21', '5L15', '4T', '4L15'],\n      switcheroo: ['7E', '6E', '5E'],\n      tackle: ['9L1'],\n      tailslap: ['7E', '6E', '5E'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L15', '7L15', '6L15', '5L6', '5D', '4L6'],\n      waterpulse: ['9M', '7T', '6T', '5D', '4M'],\n      watersport: ['7L7', '6L7', '5L1', '5D', '4L1'],\n      wavecrash: ['9L49'],\n      whirlpool: ['9M', '9L31', '7L31', '6L31', '5L31', '4M', '4L36']\n    }\n  ],\n  [\n    'floatzel',\n    {\n      agility: ['9M', '9L51', '7L51', '6L51', '5L29', '4L29'],\n      aquajet: ['9L24', '7L24', '6L24', '5L21', '4L21'],\n      aquatail: ['9L46', '7T', '7L46', '6T', '6L46', '5T', '5L46', '4T'],\n      attract: ['7M', '6M', '5M', '4M'],\n      batonpass: ['9M'],\n      bite: ['9L18'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      brine: ['4M'],\n      bulkup: ['9M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L1', '7L1', '6L1', '5L1', '4L26'],\n      dig: ['9M', '6M', '5M', '4M'],\n      dive: ['6M', '5M', '4T'],\n      doubleedge: ['9M'],\n      doublehit: ['9L29', '7L29', '6L29', '5L29'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      fling: ['9M'],\n      flipturn: ['9M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      growl: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      hail: ['7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '7T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hydropump: ['9M', '9L57', '7L57', '6L57', '5L57'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icefang: ['9M', '9L1', '7L1', '6L1', '5L1', '4L1'],\n      icepunch: ['9M', '7T', '6T', '5T', '4T'],\n      icespinner: ['9M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      liquidation: ['9M', '9L41', '7T'],\n      lowkick: ['9M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M'],\n      metronome: ['9M'],\n      muddywater: ['9M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L18', '6L18', '5L10', '4L10'],\n      quickattack: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      razorwind: ['7L41', '6L41', '5L41', '4L50'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snarl: ['9M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      soak: ['9L1'],\n      sonicboom: ['7L1', '6L1', '5L1', '4L1'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '9L21', '7L21', '6L21', '5L15', '4T', '4L15'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L15', '7L15', '6L15', '5L6', '4L6'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      watersport: ['7L1', '6L1', '5L1', '4L1'],\n      wavecrash: ['9L62'],\n      whirlpool: ['9M', '9L35', '7L35', '6L35', '5L35', '4M', '4L39']\n    }\n  ],\n  [\n    'cherubi',\n    {\n      aromatherapy: ['8E', '7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bulletseed: ['8M', '5D', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      defensecurl: ['8E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainingkiss: ['8M'],\n      endure: ['8M', '4M'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      flowershield: ['8E', '7E', '6E'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['8M', '7T', '6T', '5T', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['7E', '6E', '5E', '4E'],\n      grassyglide: ['8T'],\n      grassyterrain: ['8M', '7E'],\n      growth: ['8L10', '7L7', '6L7', '5L7', '4L7'],\n      healingwish: ['8E', '7E', '6E', '5E'],\n      healpulse: ['8E', '7E', '6E', '5E', '5D'],\n      helpinghand: ['8M', '8L15', '7T', '7L13', '6T', '6L13', '5T', '5L13', '4T', '4L13'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      leafage: ['8L5'],\n      leechseed: ['8L26', '7L10', '6L10', '5L10', '5D', '4L10'],\n      luckychant: ['7L40', '6L40', '5L40', '4L40'],\n      magicalleaf: ['8M', '8L20', '7L19', '6L19', '5L19', '4L19'],\n      morningsun: ['8L1', '7L1', '6L1', '5L1'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      naturepower: ['8E', '7M', '7E', '6M', '6E', '5E', '4E'],\n      petalblizzard: ['8L35', '7L47', '6L47'],\n      pollenpuff: ['8M'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      razorleaf: ['8E', '7E', '6E', '5E', '4E'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rollout: ['8E', '7E', '6E', '5E', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '8L45', '7M', '7L37', '6M', '6L37', '5M', '5L37', '4M', '4L37'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '7L22', '6M', '6L22', '5M', '5L22', '4M', '4L22'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      sweetscent: ['8E', '7E', '6E', '5E', '4E'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['8L30', '7L31', '6L31', '5L31', '4L31'],\n      tickle: ['8E', '7E', '6E', '5E', '4E'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      weatherball: ['8M', '7E', '6E', '5E', '4E'],\n      worryseed: ['8L40', '7T', '7L28', '6T', '6L28', '5T', '5L28', '4T', '4L28']\n    }\n  ],\n  [\n    'cherrim',\n    {\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bulletseed: ['8M', '4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainingkiss: ['8M'],\n      endure: ['8M', '4M'],\n      energyball: ['8M', '7M', '6M', '5M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      flowershield: ['8L1'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['8M', '7T', '6T', '5T', '4M'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      grassyglide: ['8T'],\n      grassyterrain: ['8M'],\n      growth: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      helpinghand: ['8M', '8L15', '7T', '7L13', '6T', '6L13', '5T', '5L13', '4T', '4L13'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M'],\n      laserfocus: ['7T'],\n      leafage: ['8L1'],\n      leechseed: ['8L28', '7L1', '6L10', '5L10', '4L10'],\n      luckychant: ['7L48', '6L48', '5L48', '4L48'],\n      magicalleaf: ['8M', '8L20', '7L19', '6L19', '5L19', '4L19'],\n      morningsun: ['8L1', '7L1', '6L1', '5L1'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['8L41', '7L50', '6L50'],\n      petaldance: ['8L62', '7L1', '6L25', '5L25', '4L25'],\n      playrough: ['8M'],\n      pollenpuff: ['8M'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['8M', '7T', '6T', '5T', '4T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '8L55', '7M', '7L43', '6M', '6L43', '5M', '5L43', '4M', '4L43'],\n      solarblade: ['8M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '8L0', '7M', '7L22', '6M', '6L22', '5M', '5L22', '4M', '4L22'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      tackle: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['8L34', '7L35', '6L35', '5L35', '4L35'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      weatherball: ['8M'],\n      worryseed: ['8L48', '7T', '7L30', '6T', '6L30', '5T', '5L30', '4T', '4L30']\n    }\n  ],\n  [\n    'shellos',\n    {\n      acidarmor: ['9E', '8E', '7E', '6E'],\n      amnesia: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      ancientpower: ['9L20', '8L20', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M', '9L25', '8M', '8L25', '7L29', '6L29', '5L29', '4L29'],\n      brine: ['8M', '7E', '6E', '5E', '4M'],\n      bulldoze: ['9M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      clearsmog: ['9E', '8E', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      curse: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      dive: ['8M', '6M', '5M', '4T'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '9L35', '8M', '8L35', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fissure: ['7E', '6E', '5E', '4E'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M'],\n      harden: ['9L5', '8L5', '7L4', '6L4', '5L4', '4L4'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7L16', '6M', '6L16', '5M', '5L16', '4M', '4L16'],\n      hydropump: ['9M', '8M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      infestation: ['7M', '6M'],\n      liquidation: ['9M'],\n      memento: ['9L45', '8L45', '7E', '6E', '5E', '4E'],\n      mirrorcoat: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      mist: ['9E', '8E', '7E', '6E', '5E'],\n      mudbomb: ['7L11', '6L11', '5L11', '4L11'],\n      muddywater: ['9M', '9L31', '8M', '8L31', '7L37', '6L37', '5L37', '4L37'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '5D', '4T', '4L1'],\n      mudsport: ['7L2', '6L2', '5L2', '4L2'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '9L40', '8M', '8L40', '7M', '7L22', '6M', '6L22', '5M', '5L22', '4M', '4L22'],\n      recover: ['9L10', '8L10', '7L46', '6L46', '5L46', '4L46'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '5D', '4M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      sludge: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      spitup: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      stealthrock: ['9M'],\n      stockpile: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      stoneedge: ['9M'],\n      stringshot: ['4T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swallow: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trumpcard: ['7E', '6E', '5E', '4E'],\n      waterfall: ['9M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '9L15', '8L15', '7T', '7L7', '6T', '6L7', '5L7', '4M', '4L7'],\n      whirlpool: ['9M', '8M', '4M'],\n      yawn: ['9E', '8E', '7E', '6E', '5E', '5D', '4E']\n    }\n  ],\n  [\n    'gastrodon',\n    {\n      amnesia: ['9M', '8M'],\n      ancientpower: ['9L20', '8L20', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '9L25', '8M', '8L25', '7L29', '6L29', '5L29', '4L29'],\n      brine: ['8M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      dive: ['8M', '6M', '5M', '4T'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '9L39', '8M', '8L39', '7T', '7S0', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M'],\n      harden: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7L16', '6M', '6L16', '5M', '5L16', '4M', '4L16'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '7S0', '6M', '5M', '4M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      infestation: ['7M', '6M'],\n      liquidation: ['9M'],\n      memento: ['9L53', '8L53'],\n      mudbomb: ['7L11', '6L11', '5L11', '4L11'],\n      muddywater: ['9M', '9L33', '8M', '8L33', '7L41', '6L41', '5L41', '4L41'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '4T', '4L1'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '8M', '7M', '7S0', '6M', '5M', '4M'],\n      raindance: ['9M', '9L46', '8M', '8L46', '7M', '7L22', '6M', '6L22', '5M', '5L22', '4M', '4L22'],\n      recover: ['9L1', '8L1', '7L54', '7S0', '6L54', '5L54', '4L54'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M', '8M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      spikes: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      stringshot: ['4T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '9L15', '8L15', '7T', '7L1', '6T', '6L1', '5L1', '4M', '4L1'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '4M']\n    }\n  ],\n  [\n    'gastrodoneast',\n    {\n      amnesia: ['9M', '8M'],\n      ancientpower: ['9L20', '8L20', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '9L25', '8M', '8L25', '7L29', '6L29', '5L29', '4L29'],\n      brine: ['8M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      dive: ['8M', '6M', '5M', '4T'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '9L39', '9S2', '9S3', '8M', '8L39', '8S0', '8S1', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hail: ['8M', '7M', '6M', '5M', '4M'],\n      harden: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '7L16', '6M', '6L16', '5M', '5L16', '4M', '4L16'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '9S2', '8M', '8S0', '8S1', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '9S3', '8M', '7T', '6T', '5T', '4T'],\n      infestation: ['7M', '6M'],\n      liquidation: ['9M'],\n      memento: ['9L53', '8L53'],\n      mudbomb: ['7L11', '6L11', '5L11', '4L11'],\n      muddywater: ['9M', '9L33', '8M', '8L33', '7L41', '6L41', '5L41', '4L41'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '4T', '4L1'],\n      mudsport: ['7L1', '6L1', '5L1', '4L1'],\n      naturalgift: ['4M'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      protect: ['9M', '9S2', '9S3', '8M', '8S0', '8S1', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '9L46', '8M', '8L46', '7M', '7L22', '6M', '6L22', '5M', '5L22', '4M', '4L22'],\n      recover: ['9L1', '8L1', '7L54', '6L54', '5L54', '4L54'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M', '8M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      spikes: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      stringshot: ['4T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '8M', '8S0', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '9L15', '8L15', '7T', '7L1', '6T', '6L1', '5L1', '4M', '4L1'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M', '4M'],\n      yawn: ['9S2', '9S3', '8S1']\n    }\n  ],\n  [\n    'drifloon',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M'],\n      aircutter: ['9M', '4T'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['9M', '8M', '7L40', '6L40', '5L40'],\n      astonish: ['9L1', '8L1', '7L4', '6L4', '5L4', '4L6'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      batonpass: ['9M', '9L36', '8M', '8L36', '7L44', '6L44', '5L38', '4L33'],\n      bind: ['7T', '6T', '5T'],\n      bodyslam: ['8M', '7E', '6E', '5E', '4E'],\n      brutalswing: ['8M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      clearsmog: ['9E', '8E', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '6L1', '5L1', '4L1'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M'],\n      defog: ['9E', '8E', '7T', '7E', '6E', '5E', '4M'],\n      destinybond: ['9L32', '8L32', '7E', '6E', '5E', '4E'],\n      disable: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      explosion: ['9L44', '8L44', '7M', '7L50', '6M', '6L50', '5M', '5L46', '4M', '4L43'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      fly: ['9M'],\n      focusenergy: ['9L8', '8M', '8L8', '7L13', '6L13', '5L13', '4L14'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gust: ['9L4', '8L4', '7L8', '6L8', '5L8', '4L11'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      haze: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      helpinghand: ['9M'],\n      hex: ['9M', '9L16', '8M', '8L16', '7L27', '6L27', '5L22'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hypnosis: ['9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      memento: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      minimize: ['9L1', '8L1', '7L1', '6L1', '5L1', '5D', '4L1'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      ominouswind: ['7L20', '6L20', '5L20', '4T', '4L30'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['9L12', '8M', '8L12', '7M', '7L16', '6M', '6L16', '5M', '5L16', '4M', '4L17'],\n      phantomforce: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      selfdestruct: ['9L29', '8M', '8L29'],\n      shadowball: ['9M', '9L20', '8M', '8L20', '7M', '7L36', '6M', '6L36', '5M', '5L36', '4M', '4L38'],\n      shockwave: ['7T', '6T', '4M'],\n      silverwind: ['4M'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '5D', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      spitup: ['9L24', '8L24', '7L32', '6L32', '5L30', '4L27'],\n      stockpile: ['9L24', '8L24', '7L25', '6L25', '5L25', '4L22'],\n      storedpower: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swallow: ['9L24', '8L24', '7L32', '6L32', '5L30', '4L27'],\n      swift: ['9M', '8M', '4T'],\n      tailwind: ['9M', '9L40', '8L40', '7T', '7E', '6T', '6E', '5T', '4T'],\n      telekinesis: ['7T', '5M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M'],\n      weatherball: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'drifblim',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['9M', '8M', '7L46', '6L46', '5L46'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      batonpass: ['9M', '9L42', '8M', '8L42', '7L52', '6L52', '5L44', '4L37'],\n      bind: ['7T', '6T', '5T'],\n      bodyslam: ['9M', '8M'],\n      brutalswing: ['8M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '6L1', '5L1', '4L1'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M'],\n      defog: ['7T', '4M'],\n      destinybond: ['9L36', '8L36'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      explosion: ['9L54', '8L54', '7M', '7L60', '6M', '6L60', '5M', '5L56', '4M', '4L51'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L1', '8M', '8L1', '7L13', '6L13', '5L13', '4L14'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gust: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      haze: ['9M'],\n      helpinghand: ['9M'],\n      hex: ['9M', '9L16', '8M', '8L16', '7L27', '6L27', '5L22'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '8M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      minimize: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      ominouswind: ['7L20', '6L20', '5L20', '4T', '4L32'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      payback: ['9L12', '8M', '8L12', '7M', '7L16', '6M', '6L16', '5M', '5L16', '4M', '4L17'],\n      phantomforce: ['9M', '9L0', '8M', '8L0', '7L1', '6L1'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      selfdestruct: ['9L31', '8M', '8L31'],\n      shadowball: ['9M', '9L20', '8M', '8L20', '7M', '7L40', '6M', '6L40', '5M', '5L40', '4M', '4L44'],\n      shockwave: ['7T', '6T', '4M'],\n      silverwind: ['4M'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      spitup: ['9L24', '8L24', '7L34', '6L34', '5L32', '4L27'],\n      stockpile: ['9L24', '8L24', '7L25', '6L25', '5L25', '4L22'],\n      storedpower: ['9M'],\n      strengthsap: ['9L1', '8L1'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swallow: ['9L24', '8L24', '7L34', '6L34', '5L32', '4L27'],\n      swift: ['9M', '8M', '4T'],\n      tailwind: ['9M', '9L48', '8L48', '7T', '6T', '5T', '4T'],\n      telekinesis: ['7T', '5M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'buneary',\n    {\n      afteryou: ['8L12', '7T', '7L43', '6T', '6L43', '5T', '5L43'],\n      agility: ['8M', '8L36', '7L33', '6L33', '5L33', '4L33'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M', '4E'],\n      babydolleyes: ['8L8', '7L13', '6L10'],\n      batonpass: ['8M', '8L28', '7L26', '6L26', '5L26', '4L26'],\n      bounce: ['8M', '8L48', '7T', '7L56', '6T', '6L56', '5T', '5L56', '4T', '4L46'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['8M', '8L24', '7L46', '6L46', '5L46', '4L43'],\n      circlethrow: ['8E', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      copycat: ['8E', '7E', '6E', '5E'],\n      cosmicpower: ['8M', '7E', '6E'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      defensecurl: ['8L4', '7L1', '6L1', '5L1', '4L1'],\n      dig: ['8M', '6M', '5M', '4M'],\n      dizzypunch: ['7L36', '6L36', '5L36', '4L36'],\n      doublehit: ['8E', '7E', '6E', '5E', '4E'],\n      doublekick: ['8L20'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '5D', '4M'],\n      encore: ['8M', '7E', '6E', '5E', '4E'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['8M', '7L6', '6L6', '5L6', '4M', '4L6'],\n      entrainment: ['8L40', '7L50', '6L50', '5L53'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      fakeout: ['8E', '7E', '6E', '5E', '5D', '4E'],\n      faketears: ['8M', '7E', '6E', '5E', '4E'],\n      firepunch: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      flail: ['8E', '7E', '6E', '5E', '4E'],\n      flatter: ['8L44'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['8E', '7T', '7E', '6T', '6E', '5E', '4M'],\n      foresight: ['7L1', '6L1', '5L1', '5D', '4L1'],\n      frustration: ['7M', '7L1', '6M', '6L13', '5M', '5L13', '4M', '4L13'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['8L32', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      healingwish: ['8L52', '7L63', '6L63', '5L63', '4L53'],\n      helpinghand: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      jumpkick: ['7L23', '6L23', '5L23', '4L23'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lowkick: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      lowsweep: ['8M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudslap: ['4T'],\n      mudsport: ['7E', '6E'],\n      naturalgift: ['4M'],\n      payback: ['8M'],\n      playrough: ['8M'],\n      pound: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      poweruppunch: ['7E', '6M'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      quickattack: ['8L16', '7L16', '6L16', '5L16', '4L16'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      skyuppercut: ['7E', '6E', '5E', '4E'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M'],\n      splash: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      sweetkiss: ['8E', '7E', '6E', '5E', '4E'],\n      swift: ['8M', '4T'],\n      switcheroo: ['8E', '7E', '6E', '5E', '4E'],\n      teeterdance: ['8E', '7E', '6E'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4E'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      tripleaxel: ['8T'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'lopunny',\n    {\n      acrobatics: ['8M'],\n      afteryou: ['8L12', '7T', '7L43', '6T', '6L43', '5T', '5L43'],\n      agility: ['8M', '8L36', '7L33', '6L33', '5L33', '4L33'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      aurasphere: ['8M'],\n      babydolleyes: ['8L1', '7L13'],\n      batonpass: ['8M', '8L28', '7L26', '6L26', '5L26', '4L26'],\n      blizzard: ['8M', '7M', '6M', '5M', '4M'],\n      bounce: ['8M', '8L48', '7T', '7L1', '6T', '6L1', '5T', '5L56', '4T', '4L46'],\n      brutalswing: ['8M', '7M'],\n      captivate: ['4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      charm: ['8M', '8L24', '7L46', '6L46', '5L46', '4L43'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      cosmicpower: ['8M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      defensecurl: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      dig: ['8M', '6M', '5M', '4M'],\n      dizzypunch: ['7L36', '6L36', '5L36', '4L36'],\n      doublekick: ['8L20'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['8M', '7T', '6T', '5T', '4M'],\n      encore: ['8M'],\n      endeavor: ['7T', '6T', '5T', '4T'],\n      endure: ['8M', '7L6', '6L6', '5L6', '4M', '4L6'],\n      entrainment: ['8L40', '7L53', '6L53', '5L53'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      faketears: ['8M'],\n      firepunch: ['8M', '7T', '6T', '5T', '4T'],\n      flatter: ['8L44'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M'],\n      foresight: ['7L1', '6L1', '5L1', '4L1'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['8L32', '4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      healingwish: ['8L52', '7L1', '6L1', '5L63', '4L53'],\n      helpinghand: ['8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highjumpkick: ['8L56', '7L66', '6L66'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icebeam: ['8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      jumpkick: ['7L23', '6L23', '5L23', '4L23'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lowkick: ['8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['8M', '7M', '6M', '5M'],\n      magiccoat: ['8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mirrorcoat: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      payback: ['8M'],\n      playrough: ['8M'],\n      pound: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      quickattack: ['8L16', '7L16', '6L16', '5L16', '4L16'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '7L1', '6M', '6L13', '5M', '5L13', '4M', '4L13'],\n      reversal: ['8M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rototiller: ['7L1', '6L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['8M', '7M', '6M', '5M', '4M'],\n      splash: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['8M', '4T'],\n      thunder: ['8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['8M', '7T', '6T', '5T', '4T'],\n      thunderwave: ['8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      tripleaxel: ['8T'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      uturn: ['8M'],\n      waterpulse: ['7T', '6T', '4M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'glameow',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      assist: ['7L29', '6L29', '5L29', '4L29'],\n      assurance: ['7E', '6E', '5E', '5D', '4E'],\n      attract: ['7M', '7L44', '6M', '6L44', '5M', '5L44', '4M', '4L45'],\n      bite: ['7E', '6E', '5E', '4E'],\n      captivate: ['7L32', '6L32', '5L32', '4M', '4L32'],\n      charm: ['7L25', '6L25', '5L25', '4L25'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      fakeout: ['7L1', '6L1', '5L1', '5D', '4L1'],\n      faketears: ['7E', '6E', '5E', '4E'],\n      feintattack: ['7L17', '6L17', '5L17', '4L17'],\n      flail: ['7E', '6E', '5E', '4E'],\n      flash: ['6M', '5M', '4M'],\n      foulplay: ['7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      furyswipes: ['7L20', '6L20', '5L20', '4L20'],\n      growl: ['7L8', '6L8', '5L8', '4L8'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['7L48', '6M', '6L48', '5M', '5L48'],\n      hypervoice: ['7T', '6T', '5T'],\n      hypnosis: ['7L13', '6L13', '5L13', '4L13'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '7E', '6T', '6E', '5T', '5E', '4T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      playrough: ['7L50', '6L50'],\n      protect: ['7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      quickattack: ['7E', '6E', '5E', '4E'],\n      raindance: ['7M', '6M', '5M', '4M'],\n      rest: ['7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['7E', '6E', '5E', '4E'],\n      scratch: ['7L5', '6L5', '5L5', '4L5'],\n      secretpower: ['6M', '5D', '4M'],\n      shadowball: ['7M', '6M', '5M', '4M'],\n      shadowclaw: ['7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      slash: ['7L37', '6L37', '5L37', '4L37'],\n      sleeptalk: ['7M', '6M', '5T', '4M'],\n      snatch: ['7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      suckerpunch: ['7L41', '6L41', '5L41', '4T', '4L41'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['4T'],\n      tailwhip: ['7E', '6E', '5E', '4E'],\n      taunt: ['7M', '6M', '5M', '4M'],\n      thief: ['7M', '6M', '5M', '4M'],\n      thunder: ['7M', '6M', '5M', '4M'],\n      thunderbolt: ['7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uturn: ['7M', '6M', '5M', '4M'],\n      wakeupslap: ['7E', '6E', '5E'],\n      waterpulse: ['7T', '6T', '4M'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'purugly',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      assist: ['7L29', '6L29', '5L29', '4L29'],\n      attract: ['7M', '7L52', '6M', '6L52', '5M', '5L52', '4M', '4L53'],\n      bodyslam: ['7L45', '6L45', '5L45', '4L45'],\n      bulldoze: ['7M', '6M', '5M'],\n      captivate: ['7L32', '6L32', '5L32', '4M', '4L32'],\n      charm: ['7L25', '6L25', '5L25', '4L25'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      fakeout: ['7L1', '6L1', '5L1', '4L1'],\n      feintattack: ['7L17', '6L17', '5L17', '4L17'],\n      flash: ['6M', '5M', '4M'],\n      foulplay: ['7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      furyswipes: ['7L20', '6L20', '5L20', '4L20'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      growl: ['7L1', '6L1', '5L1', '4L1'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['7L60', '6M', '6L60', '5M', '5L60'],\n      hyperbeam: ['7M', '6M', '5M', '4M'],\n      hypervoice: ['7T', '6T', '5T'],\n      hypnosis: ['7L13', '6L13', '5L13', '4L13'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      protect: ['7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['7M', '6M', '5M', '4M'],\n      rest: ['7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['7L1', '6L1', '5L1', '4L1'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['7M', '6M', '5M', '4M'],\n      shadowclaw: ['7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      slash: ['7L37', '6L37', '5L37', '4L37'],\n      sleeptalk: ['7M', '6M', '5T', '4M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      stompingtantrum: ['7T'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      suckerpunch: ['4T'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      superfang: ['7T', '6T', '5T', '4T'],\n      swagger: ['7M', '7L1', '6M', '6L38', '5M', '5L38', '4M', '4L38'],\n      swift: ['4T'],\n      taunt: ['7M', '6M', '5M', '4M'],\n      thief: ['7M', '6M', '5M', '4M'],\n      throatchop: ['7T'],\n      thunder: ['7M', '6M', '5M', '4M'],\n      thunderbolt: ['7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uturn: ['7M', '6M', '5M', '4M'],\n      waterpulse: ['7T', '6T', '4M'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'stunky',\n    {\n      acidspray: ['9M', '9L9', '8L9', '7L19', '6L32', '5L32'],\n      assurance: ['8M'],\n      astonish: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      belch: ['9L39', '8L39', '7L43', '6L46'],\n      bite: ['9L18', '8L18', '7L21'],\n      bodyslam: ['9M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      corrosivegas: ['8T'],\n      crunch: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defog: ['7T', '4M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleedge: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      explosion: ['9L42', '8L45', '7M', '7L45', '6M', '6L49', '5M', '5L49', '4M', '4L44'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feint: ['9L3', '8L3', '7L15', '6L18', '5L18', '4L18'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flameburst: ['7E', '6E', '5E'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['9L15', '8M', '8L15', '7L1', '6L1', '5L1', '4L1'],\n      foulplay: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      furyswipes: ['9L12', '8L12', '7L9', '6L10', '5L10', '4L10'],\n      gunkshot: ['9M'],\n      haze: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      knockoff: ['9M'],\n      lashout: ['9M', '8T'],\n      leer: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      memento: ['9L33', '8L33', '7L33', '6L43', '5L43', '4L37'],\n      mudslap: ['4T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightslash: ['9L36', '8L36', '7L31', '6L37', '5L37', '4L31'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      playrough: ['9M', '8M', '7E', '6E'],\n      poisongas: ['9L1', '8L1', '7L3', '6L4', '5L4', '4L4'],\n      poisonjab: ['9M'],\n      poisontail: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      punishment: ['7E', '6E', '5E', '4E'],\n      pursuit: ['7E', '6E', '5E', '4E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      screech: ['9L24', '8M', '8L24', '7L7', '6L7', '5L7', '5D', '4L7'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['9E', '8E', '7L25', '6L22', '5L22', '4L22'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sludgewave: ['9M'],\n      smog: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      smokescreen: ['9L6', '8L6', '7L13', '6L14', '5L14', '4L14'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['9L30', '8L30', '7L39', '5D', '4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      tailslap: ['8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      throatchop: ['9M', '8M', '7T'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['9M', '9L27', '8L27', '7M', '7L27', '6M', '6L27', '5M', '5L27', '4M', '4L20'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      venomdrench: ['8M', '8L42', '7L37'],\n      venoshock: ['9M', '9L21', '8M', '8L21', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'skuntank',\n    {\n      acidspray: ['9M', '8L9', '7L19', '6L32', '5L32'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      belch: ['9L43', '8L43', '7L43', '6L56'],\n      bite: ['9L18', '8L18', '7L21'],\n      bodyslam: ['9M'],\n      burningjealousy: ['9M', '8T'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      corrosivegas: ['8T'],\n      crunch: ['9M', '8M'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defog: ['7T', '4M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '4M'],\n      explosion: ['9L48', '8L53', '7M', '7L45', '6M', '6L61', '5M', '5L61', '4M', '4L52'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feint: ['9L1', '8L1', '7L15', '6L18', '5L18', '4L18'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firespin: ['9M', '8M'],\n      flamethrower: ['9M', '9L0', '8M', '8L0', '7M', '7L1', '6M', '6L34', '5M', '5L34', '4M', '4L34'],\n      focusenergy: ['9L15', '8M', '8L15', '7L1', '6L1', '5L1', '4L1'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      furyswipes: ['9L12', '8L12', '7L9', '6L10', '5L10', '4L10'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M'],\n      haze: ['9M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['9M'],\n      lashout: ['9M', '8T'],\n      memento: ['9L33', '8L33', '7L33', '6L51', '5L51', '4L41'],\n      mudslap: ['4T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightslash: ['9L38', '8L38', '7L31', '6L41', '5L41', '4L31'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      playrough: ['9M', '8M'],\n      poisongas: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poisontail: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      screech: ['9L24', '8M', '8L24', '7L1', '6L7', '5L7', '4L7'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['7L25', '6L22', '5L22', '4L22'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sludgewave: ['9M'],\n      smokescreen: ['9L1', '8L1', '7L13', '6L14', '5L14', '4L14'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['9L30', '8L30', '7L39', '4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      superfang: ['9M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      tailslap: ['8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      throatchop: ['9M', '8M', '7T'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['9M', '9L27', '8L27', '7M', '7L27', '6M', '6L27', '5M', '5L27', '4M', '4L20'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      venomdrench: ['8M', '8L48', '7L37'],\n      venoshock: ['9M', '9L21', '8M', '8L21', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'bronzor',\n    {\n      allyswitch: ['8M', '7T'],\n      ancientpower: ['4T'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L4', '8L4', '7L11', '6L11', '5L11', '4L14'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      expandingforce: ['9M', '8T'],\n      extrasensory: ['9L28', '8L28', '7L39', '6L39', '5L19', '4L19'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feintattack: ['7L21', '6L21', '5L21', '4L41'],\n      flash: ['6M', '5M', '4M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['9M', '9L44', '8M', '8L44', '7L29', '6L29', '5L29', '4L37'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '9E', '7T', '6T', '5T', '5D', '4T'],\n      guardswap: ['8M'],\n      gyroball: ['9M', '9L16', '8M', '8L16', '7M', '7L35', '6M', '6L35', '5M', '5L35', '4M', '4L35'],\n      healblock: ['7L45', '6L45', '5L45', '4L52'],\n      heavyslam: ['9M', '9L32', '8M', '8L32', '7L49', '6L49', '5L49'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hypnosis: ['9L20', '8L20', '7L5', '6L5', '5L5', '5D', '4L7'],\n      icespinner: ['9M'],\n      imprison: ['9M', '9L12', '8M', '8L12', '7L9', '6L9', '5L9', '4L12'],\n      irondefense: ['9M', '9L36', '8M', '8L36', '7T', '7L19', '6T', '6L19', '5T', '5L19', '4L26'],\n      ironhead: ['9M'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      metalsound: ['9M', '9L40', '8L40', '7L31', '6L31', '5L31'],\n      naturalgift: ['4M'],\n      payback: ['9L8', '8M', '8L8', '7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L49'],\n      powergem: ['9M'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psywave: ['7L15', '6L15', '5L15'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['9E', '7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L24', '8M', '8L24', '7M', '7L25', '6M', '6L25', '5M', '5L25', '4M', '4L30'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '5D', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      speedswap: ['8M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      stompingtantrum: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'bronzong',\n    {\n      allyswitch: ['8M', '7T'],\n      ancientpower: ['4T'],\n      block: ['9L0', '8L0', '7T', '7L1', '6T', '6L33', '5T', '5L33', '4T', '4L33'],\n      bodypress: ['9M', '9S0', '8M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L1', '8L1', '7L11', '6L11', '5L11', '4L14'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      expandingforce: ['9M', '8T'],\n      explosion: ['7M', '6M', '5M', '4M'],\n      extrasensory: ['9L28', '8L28', '7L42', '6L42', '5L19', '4L19'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feintattack: ['7L21', '6L21', '5L21', '4L50'],\n      flash: ['6M', '5M', '4M'],\n      flashcannon: ['9M', '9S1', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['9M', '9L50', '8M', '8L50', '7L29', '6L29', '5L29', '4L43'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      guardswap: ['8M'],\n      gyroball: ['9M', '9L16', '9S1', '8M', '8L16', '7M', '7L36', '6M', '6L36', '5M', '5L36', '4M', '4L38'],\n      hardpress: ['9M'],\n      healblock: ['7L52', '6L52', '5L52', '4L67'],\n      heavyslam: ['9M', '9L32', '8M', '8L32', '7L58', '6L58', '5L58'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hypnosis: ['9L20', '9S1', '8L20', '7L1', '6L1', '5L1', '4L1'],\n      icespinner: ['9M'],\n      imprison: ['9M', '9L12', '8M', '8L12', '7L1', '6L1', '5L1', '4L1'],\n      irondefense: ['9M', '9L38', '9S0', '8M', '8L38', '7T', '7L19', '6T', '6L19', '5T', '5L19', '4L26'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      metalsound: ['9M', '9L44', '8L44', '7L31', '6L31', '5L31'],\n      meteorbeam: ['9M', '8T'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      payback: ['9L1', '8M', '8L1', '7M', '7L46', '6M', '6L46', '5M', '5L46', '4M', '4L61'],\n      powergem: ['9M'],\n      powerswap: ['8M'],\n      protect: ['9M', '9S0', '8M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9S1', '8M', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      psywave: ['7L15', '6L15', '5L15'],\n      raindance: ['9M', '9L56', '8M', '8L56', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rollout: ['4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L24', '8M', '8L24', '7M', '7L25', '6M', '6L25', '5M', '5L25', '4M', '4L30'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      speedswap: ['8M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      stompingtantrum: ['9M'],\n      storedpower: ['9M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '9S0', '8M', '7M', '6M', '5M', '4M'],\n      weatherball: ['9M', '9L1', '8M', '8L1'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'chatot',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      agility: ['7E', '6E', '5E', '4E'],\n      aircutter: ['7E', '6E', '5E', '4T'],\n      attract: ['7M', '6M', '5M', '4M'],\n      boomburst: ['7E', '6E'],\n      captivate: ['4M'],\n      chatter: ['7L1', '6L1', '5L21', '4L21', '4S0'],\n      confide: ['7M', '7L1', '6M', '6L1'],\n      defog: ['7T', '7E', '6E', '5E', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '7L37', '6M', '6L37', '5M', '5L37'],\n      encore: ['7E', '6E', '5E', '4E'],\n      endure: ['4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      featherdance: ['7L50', '6L50', '5L53', '4L41'],\n      fly: ['7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furyattack: ['7L17', '6L17', '5L17', '4L17', '4S0'],\n      growl: ['7L5', '6L5', '5L5', '4L5'],\n      heatwave: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hypervoice: ['7T', '7L1', '6T', '6L1', '5T', '5L57', '4L45'],\n      mimic: ['7L33', '6L33', '5L33', '4L29'],\n      mirrormove: ['7L9', '6L9', '5L9', '5D', '4L9', '4S0'],\n      mudslap: ['4T'],\n      nastyplot: ['7E', '6E', '5E', '5D', '4E'],\n      naturalgift: ['4M'],\n      nightshade: ['7E', '6E', '5E', '4E'],\n      ominouswind: ['4T'],\n      peck: ['7L1', '6L1', '5L1', '4L1'],\n      pluck: ['5M', '4M'],\n      protect: ['7M', '6M', '5M', '4M'],\n      raindance: ['7M', '6M', '5M', '4M'],\n      rest: ['7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '5D', '4T'],\n      roost: ['7M', '7L41', '6M', '6L41', '5T', '5L41', '4M', '4L33'],\n      round: ['7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      secretpower: ['6M', '4M'],\n      sing: ['7L13', '6L13', '5L13', '4L13'],\n      skyattack: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['7M', '7E', '6M', '6E', '5T', '5E', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      steelwing: ['7M', '7E', '6M', '6E', '5E', '4M'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      supersonic: ['7E', '6E', '5E', '4E'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['4T'],\n      synchronoise: ['7L49', '6L49', '5L49'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      taunt: ['7M', '7L1', '6M', '6L1', '5M', '5L25', '4M', '4L25', '4S0'],\n      thief: ['7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uproar: ['7T', '7L45', '6T', '6L45', '5T', '5L45', '4T', '4L37'],\n      uturn: ['7M', '6M', '5M', '4M'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'spiritomb',\n    {\n      allyswitch: ['9E', '8M', '7T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bodyslam: ['9M'],\n      burningjealousy: ['9M', '8T'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      captivate: ['7E', '6E', '5E', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      curse: ['9M', '9L40', '8L40', '7L1', '6L1', '5L1', '4L1'],\n      darkpulse: ['9M', '9L50', '8M', '8L50', '7M', '7L49', '6M', '6L49', '5T', '5L49', '5S0', '4M', '4L49'],\n      destinybond: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      disable: ['9E', '8E', '7E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dreameater: ['9L60', '8L60', '7M', '7L19', '6M', '6L19', '5M', '5L19', '4M', '4L19'],\n      embargo: ['7M', '6M', '5M', '5S0', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feintattack: ['7L7', '6L7', '5L7', '4L7'],\n      flash: ['6M', '5M', '4M'],\n      foulplay: ['9M', '8M', '7T', '7E', '6T', '6E', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grudge: ['8E', '7E', '6E', '5E', '4E'],\n      helpinghand: ['9M'],\n      hex: ['9M', '9L25', '8M', '8L25'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hypnosis: ['9L55', '8L55', '7L13', '6L13', '5L13', '4L13'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '5D', '4T'],\n      imprison: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      infestation: ['7M', '6M'],\n      lashout: ['9M', '8T'],\n      memento: ['9L30', '8L30', '7L43', '6L43', '5L43', '4L43'],\n      nastyplot: ['9M', '9L20', '8M', '8L20', '7L37', '6L37', '5L37', '4L37'],\n      naturalgift: ['4M'],\n      nightmare: ['7E', '6E', '5E'],\n      nightshade: ['9M', '9L1', '8L1'],\n      ominouswind: ['7L25', '6L25', '5L25', '4T', '4L25'],\n      painsplit: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E'],\n      payback: ['9L15', '8M', '8L15'],\n      phantomforce: ['9M', '8M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '5S0', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      psyshock: ['9M'],\n      pursuit: ['7L1', '6L1', '5L1', '4L1'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '9L45', '8M', '8L45', '7M', '6M', '5M', '4M'],\n      shadowsneak: ['9L5', '8L5', '7L1', '7E', '6L1', '6E', '5L1', '5E', '4L1', '4E'],\n      shockwave: ['7T', '6T', '4M'],\n      silverwind: ['5S0', '4M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      smokescreen: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['9M', '9L10', '8L10', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5D', '4T', '4L1'],\n      storedpower: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['9L35', '8L35', '7L31', '6L31', '5L31', '4T', '4L31'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['9M', '7M', '6M', '5M', '4M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      waterpulse: ['7T', '6T', '4M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'gible',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bite: ['9L25', '8L25'],\n      bodyslam: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      bulldoze: ['9M', '9L18', '8M', '8L18', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['9M', '9L42', '8M', '8L42', '7L31', '6M', '6L31', '5M', '5L31', '4M', '4L31'],\n      doubleedge: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      dragonbreath: ['9L12', '8L12', '7E', '6E', '5E', '4E'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L36', '8M', '8L36', '7M', '7L27', '6M', '6L27', '5M', '5L27', '4M', '4L27'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragonrage: ['7L7', '6L7', '5L7', '5D', '4L7'],\n      dragonrush: ['9L60', '8L60', '7L37', '6L37', '5L37', '4L37'],\n      dragontail: ['9M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '5D', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      falseswipe: ['9M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firefang: ['9M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      irontail: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      metalclaw: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      mudshot: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D', '4T', '4E'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['7E', '6E', '5E', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L6', '8L6', '7L3', '6L3', '5L3', '4L3'],\n      sandstorm: ['9M', '9L48', '8M', '8L48', '7M', '7L13', '6M', '6L13', '5M', '5L13', '4M', '4L13'],\n      sandtomb: ['9M', '9L1', '8M', '8L1', '7L19', '7E', '6L19', '6E', '5L19', '5E', '4L19', '4E'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['9L30', '8L30', '7L25', '6L25', '5L25', '4L25'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      swordsdance: ['9M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '9L54', '8L54', '7L15', '6L15', '5L15', '4L15'],\n      terablast: ['9M'],\n      thrash: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      thunderfang: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['9E', '8E', '7E', '6E', '5E', '4T', '4E']\n    }\n  ],\n  [\n    'gabite',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bite: ['9L27', '8L27'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M'],\n      bulldoze: ['9M', '9L18', '8M', '8L18', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['9M', '9L50', '8M', '8L50', '7L40', '6M', '6L40', '5M', '5L40', '4M', '4L40'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T', '4T'],\n      dragonbreath: ['9L1', '8L1'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L42', '8M', '8L42', '7M', '7L33', '6M', '6L33', '5M', '5L33', '4M', '4L33'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragonrage: ['7L1', '6L7', '5L7', '4L7'],\n      dragonrush: ['9L74', '8L74', '7L49', '6L49', '5L49', '4L49'],\n      dragontail: ['9M'],\n      dualchop: ['8L1', '7T', '7L1', '6T', '6L24', '5T', '5L24'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      falseswipe: ['9M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firefang: ['9M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      laserfocus: ['7T'],\n      metalclaw: ['9M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      powergem: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      sandstorm: ['9M', '9L58', '8M', '8L58', '7M', '7L13', '6M', '6L13', '5M', '5L13', '4M', '4L13'],\n      sandtomb: ['9M', '9L1', '8M', '8L1', '7L19', '6L19', '5L19', '4L19'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['9L34', '8L34', '7L28', '6L28', '5L28', '4L28'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      swordsdance: ['9M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '9L66', '8L66', '7L15', '6L15', '5L15', '4L15'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T']\n    }\n  ],\n  [\n    'garchomp',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bite: ['9L27', '8L27'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '6S4', '5M', '4M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '9L18', '8M', '8L18', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L0', '8M', '8L0', '7L1', '6L48', '6S2', '6S3', '5L48', '5S1', '4L48'],\n      cut: ['6M', '5M', '4M'],\n      dig: ['9M', '9L52', '8M', '8L52', '7L40', '6M', '6L40', '6S2', '6S3', '5M', '5L40', '5S1', '4M', '4L40'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '6S2', '5T', '4T'],\n      dragonbreath: ['9L1', '8L1'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L42', '8M', '8L42', '7M', '7L33', '6M', '6L33', '6S2', '6S3', '5M', '5L33', '5S1', '4M', '4L33'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragonrage: ['7L1', '6L1', '5L1', '4L1'],\n      dragonrush: ['9L82', '8L82', '7L55', '6L55', '6S4', '5L55', '4L55'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualchop: ['8L1', '7T', '7L1', '6T', '6L24', '5T', '5L24'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '6M', '6S4', '5M', '5S0', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firefang: ['9M', '8M', '7L1', '6L1', '5L1', '4L1'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '6S4', '5M', '4M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      laserfocus: ['7T'],\n      liquidation: ['9M'],\n      metalclaw: ['9M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '5S0', '5S1', '4T'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      powergem: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      sandstorm: ['9M', '9L62', '8M', '8L62', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      sandtomb: ['9M', '9L1', '8M', '8L1', '7L19', '6L19', '5L19', '4L19'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      slash: ['9L34', '8L34', '7L28', '6L28', '6S3', '5L28', '4L28'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '5S0', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '5S0', '4M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '9L72', '8L72', '7L15', '6L15', '5L15', '4L15'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      whirlpool: ['8M', '4M']\n    }\n  ],\n  [\n    'riolu',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      aurasphere: ['4S0'],\n      bite: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      blazekick: ['8M', '7E', '6E', '5E', '4E'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletpunch: ['9E', '8E', '7E', '6E', '5E', '5D', '4E', '4S0'],\n      captivate: ['4M'],\n      circlethrow: ['9E', '8E', '7E', '6E', '5E'],\n      closecombat: ['9M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      copycat: ['9L48', '8L48', '7L19', '6L19', '5L19', '4L29'],\n      counter: ['9L12', '8L12', '7L6', '6L6', '5L6', '4L6'],\n      crosschop: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      crunch: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      detect: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M', '4S0'],\n      dualchop: ['7T', '6T', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '5D', '4M', '4L1'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feint: ['9L4', '8L4', '7L11', '6L11', '5L11', '4L15'],\n      finalgambit: ['9L52', '8L52', '7L50', '6L50', '5L55'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '5D', '4M'],\n      followme: ['7E', '6E', '5E', '4E'],\n      forcepalm: ['9L36', '8L36', '7L15', '6L15', '5L11', '4L11'],\n      foresight: ['7L1', '6L1', '5L1', '4L1'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '9L44', '8M', '8L44', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highjumpkick: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      howl: ['9E', '8E'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irondefense: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      laserfocus: ['7T'],\n      lowkick: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M', '9L8', '8L8'],\n      meteormash: ['7E'],\n      mindreader: ['8E', '7E', '6E', '5E', '4E'],\n      mudslap: ['4T'],\n      nastyplot: ['9M', '8M', '8L24', '7L47', '6L47', '5L47'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M'],\n      quickattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      quickguard: ['9L32', '8L32'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L56', '8M', '8L56', '7L29', '6L29', '5L19', '4L19'],\n      roar: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['9L20', '8L20', '6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['9L28', '8M', '8L28', '7L24', '6L24', '5L24', '4L24'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M', '4S0'],\n      skyuppercut: ['7E', '6E', '5E', '4E'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      swordsdance: ['9M', '9L40', '8M', '8L40', '7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '9L24', '8E', '7E', '6E', '5E', '4T', '4E'],\n      workup: ['9L16', '8M', '8L16', '7M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'lucario',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      aurasphere: ['9M', '9L0', '9S7', '8M', '8L0', '8S6', '7L1', '7S5', '6L1', '6S4', '5L51', '4L37', '4S0'],\n      blazekick: ['8M', '4S1'],\n      bodyslam: ['9M'],\n      bonerush: ['9L36', '8L36', '7L29', '6L29', '5L19', '4L19', '4S1'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletpunch: ['9S7', '8S6', '5S2', '5S3'],\n      calmmind: ['9M', '9L24', '8M', '8L24', '7M', '7L47', '6M', '6L47', '5M', '5L47', '4M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '9L60', '8M', '8L60', '7L55', '6L1', '6S4', '5L55', '5S3', '4L42'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      counter: ['9L12', '8L12', '7L6', '6L6', '5L6', '5S2', '4L6'],\n      crunch: ['9M', '8M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '5L1', '4M', '4L1', '4S0'],\n      detect: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S2', '4L1'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dragonpulse: ['9M', '9L52', '8M', '8L52', '7T', '7L60', '7S5', '6T', '6L1', '5T', '5L60', '4M', '4L47', '4S0'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dualchop: ['7T', '6T', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      extremespeed: ['9L56', '8L56', '7L65', '7S5', '6L1', '5L65', '4L51'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feint: ['9L1', '8L1', '7L11', '6L11', '5L11', '4L15'],\n      finalgambit: ['9L1', '8L1'],\n      flashcannon: ['9M', '9S7', '8M', '7M', '6M', '6S4', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      forcepalm: ['9L20', '8L1', '5L11', '4L11', '4S1'],\n      foresight: ['7L1', '6L1', '5L1', '4L1'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      healpulse: ['9L44', '8L44', '7L51', '6L51', '5L42'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highjumpkick: ['7S5'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '9S7', '8M', '7T', '6T', '5T', '4T'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      laserfocus: ['8L16', '7T', '7L1'],\n      lifedew: ['9L1', '8L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      mefirst: ['7L37', '6L37', '5L19', '4L29'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '5S2', '4L1'],\n      metalsound: ['9M', '9L28', '8L28', '7L24', '6L24', '5L24', '4L24'],\n      meteormash: ['9L48', '8L48'],\n      metronome: ['9M'],\n      mudslap: ['4T'],\n      nastyplot: ['9M', '8M', '8L1'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['8L20', '7L15', '6M', '6L15'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M'],\n      quickattack: ['9L1', '8L1', '7L1', '6L1', '6S4', '5L1', '4L1'],\n      quickguard: ['9L32', '8L32', '7L33', '6L33', '5L33'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L1', '8M', '8L1', '8S6'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['9L1', '8L1', '6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M'],\n      screech: ['9L1', '8M', '8L1'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '5S3', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      steelbeam: ['9M', '8T', '8S6'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '5S3', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M', '4S1'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      swordsdance: ['9M', '9L40', '8M', '8L40', '7M', '7L19', '6M', '6L19', '5M', '5L37', '4M', '4L33'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '9L1', '4T'],\n      waterpulse: ['9M', '7T', '6T', '4M', '4S0'],\n      workup: ['9L16', '8M', '8L1', '7M', '7L42', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'hippopotas',\n    {\n      amnesia: ['9M', '8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bite: ['9L4', '8L4', '7L7', '6L7', '5L7', '5D', '4L7'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L20', '8M', '8L20', '7L31', '6L31', '5L31', '4L31'],\n      curse: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      dig: ['9M', '9L16', '8M', '8L16', '7L19', '6M', '6L19', '5M', '5L19', '4M', '4L19'],\n      doubleedge: ['9M', '9L44', '8L44', '7L44', '6L44', '5L44', '4L44'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L40', '8M', '8L40', '7M', '7L37', '6M', '6L37', '5M', '5L37', '4M', '4L37'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firefang: ['9M'],\n      fissure: ['9L48', '8L48', '7L50', '6L50', '5L50', '4L50'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highhorsepower: ['9M', '8M'],\n      icefang: ['9M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '9L36', '8M', '8L36', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M', '7E', '6E', '5E', '4E'],\n      roar: ['9M', '9L32', '8L32', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      sandstorm: ['9M', '9L24', '8M', '8L24', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M', '9L12', '8M', '8L12', '7L25', '7E', '6L25', '6E', '5L25', '5E', '4L25', '4E'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M'],\n      slackoff: ['9L52', '8L52', '7E', '6E', '5E', '4E'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '6M', '6E', '5T', '5E', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spitup: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stockpile: ['9E', '8E', '7E', '6E', '5E', '5D', '4E'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      superpower: ['8M', '7T', '6T', '5T', '5D', '4T'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swallow: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '9L28', '8L28', '7L19', '6L19', '5L19', '4L19'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      waterpulse: ['7T', '6T', '4M'],\n      weatherball: ['8M'],\n      whirlwind: ['9E', '8E', '7E', '6E', '5E'],\n      yawn: ['9L8', '8L8', '7L13', '6L13', '5L13', '4L13']\n    }\n  ],\n  [\n    'hippowdon',\n    {\n      amnesia: ['9M', '8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bite: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L20', '8M', '8L20', '7L31', '6L31', '5L31', '4L31'],\n      curse: ['9M'],\n      dig: ['9M', '9L16', '8M', '8L16', '7L19', '6M', '6L19', '5M', '5L19', '4M', '4L19'],\n      doubleedge: ['9M', '9L50', '8L50', '7L50', '6L50', '5L50', '4L50'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '9L44', '8M', '8L44', '7M', '7L40', '6M', '6L40', '5M', '5L40', '4M', '4L40'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firefang: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      fissure: ['9L56', '8L56', '7L60', '6L60', '5L60', '4L60'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M'],\n      icefang: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '9L38', '8M', '8L38', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M'],\n      roar: ['9M', '9L32', '8L32', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      sandstorm: ['9M', '9L24', '8M', '8L24', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M', '9L12', '8M', '8L12', '7L25', '6L25', '5L25', '4L25'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M'],\n      slackoff: ['9L62', '8L62'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      takedown: ['9M', '9L28', '8L28', '7L19', '6L19', '5L19', '4L19'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      waterpulse: ['7T', '6T', '4M'],\n      weatherball: ['8M'],\n      yawn: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1']\n    }\n  ],\n  [\n    'skorupi',\n    {\n      acupressure: ['8L45', '7L13', '6L13', '5L13', '4L17'],\n      aerialace: ['7M', '6M', '5M', '4M'],\n      agility: ['8M', '7E', '6E', '5E', '5D', '4E'],\n      aquatail: ['7T', '6T', '5T', '5D', '4T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bite: ['8L12', '7L1', '6L1', '5L1', '5D', '4L1'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M'],\n      bugbite: ['8L18', '7T', '7L20', '6T', '6L20', '5T', '5L20', '4T', '4L34'],\n      bugbuzz: ['8M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8E', '7E', '6E', '5E', '4E'],\n      crosspoison: ['8M', '8L39', '7L49', '6L49', '5L49', '4L50'],\n      crunch: ['8M', '8L48', '7L45', '6L45', '5L45', '4L45'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['8M', '7M', '6M', '5T', '4M'],\n      dig: ['8M', '6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endure: ['8M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      falseswipe: ['8M', '7M', '6M', '5M', '4M'],\n      feintattack: ['7E', '6E', '5E', '4E'],\n      fellstinger: ['8L6', '7L47', '6L47'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['8L3', '7L30', '6M', '6L30', '5M', '5L30'],\n      infestation: ['7M', '6M'],\n      irontail: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      knockoff: ['8L24', '7T', '7L5', '6T', '6L5', '5T', '5L5', '4T', '4L6'],\n      leer: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightslash: ['8L36', '7L38', '7E', '6L38', '6E', '5L38', '5E', '4E'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      pinmissile: ['8M', '8L30', '7L9', '6L9', '5L9', '4L12'],\n      poisonfang: ['8L9', '7L23', '6L23', '5L23', '4L39'],\n      poisonjab: ['8M', '7M', '6M', '5M', '4M'],\n      poisonsting: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      poisontail: ['7E', '6E', '5E'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L16', '7E', '6L16', '6E', '5L16', '5E', '4E'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8E', '7E', '6E', '5E', '4E'],\n      scaryface: ['8M', '8L27', '7L41', '6L41', '5L23', '4L23'],\n      screech: ['8M', '7E', '6E', '5E', '4E'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      skittersmack: ['8T'],\n      slash: ['8E', '7E', '6E', '5E', '4E'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      taunt: ['8M', '7M', '6M', '5M', '4M'],\n      thief: ['8M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['8L33', '7M', '6M', '5M', '4M'],\n      toxicspikes: ['8M', '8L15', '7L34', '6L34', '5L28', '4L28'],\n      twineedle: ['7E', '6E', '5E'],\n      venoshock: ['8M', '8L21', '7M', '7L27', '6M', '6L27', '5M', '5L27'],\n      whirlwind: ['8E', '7E', '6E', '5E', '4E'],\n      xscissor: ['8M', '8L42', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'drapion',\n    {\n      acupressure: ['8L49', '7L13', '6L13', '5L13', '4L17'],\n      aerialace: ['7M', '6M', '5M', '4M'],\n      agility: ['8M'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bite: ['8L12', '7L1', '6L1', '5L1', '4L1'],\n      brickbreak: ['8M', '7M', '6M', '5M', '4M'],\n      brutalswing: ['8M', '7M'],\n      bugbite: ['8L18', '7T', '7L20', '6T', '6L20', '5T', '5L20', '4T', '4L34'],\n      bugbuzz: ['8M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crosspoison: ['8M', '8L39', '7L57', '6L57', '5L57', '4L58'],\n      crunch: ['8M', '8L54', '7L49', '6L49', '5L49', '4L49'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['8M', '7M', '6M', '5T', '4M'],\n      dig: ['8M', '6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthquake: ['8M', '7M', '6M', '5M', '4M'],\n      endure: ['8M', '4M'],\n      facade: ['8M', '7M', '6M', '5M', '4M'],\n      falseswipe: ['8M', '7M', '6M', '5M', '4M'],\n      fellstinger: ['8L1', '7L53', '6L53'],\n      firefang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['8L1', '7L30', '6M', '6L30', '5M', '5L30'],\n      hyperbeam: ['8M', '7M', '6M', '5M', '4M'],\n      icefang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['8L24', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      lashout: ['8T'],\n      leechlife: ['8M'],\n      leer: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      nightslash: ['8L36', '7L38', '6L38', '5L38'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      pinmissile: ['8M', '8L30', '7L9', '6L9', '5L9', '4L1'],\n      poisonfang: ['8L9', '7L23', '6L23', '5L23', '4L39'],\n      poisonjab: ['8M', '7M', '6M', '5M', '4M'],\n      poisonsting: ['8L1', '7L1', '6L1', '5L1', '4L1'],\n      protect: ['8M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L16', '6L16', '5L16'],\n      raindance: ['8M', '7M', '6M', '5M', '4M'],\n      rest: ['8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandtomb: ['8M'],\n      scaryface: ['8M', '8L27', '7L43', '6L43', '5L23', '4L23'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['8M', '7M', '6M', '5M', '4M'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M', '4M'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swordsdance: ['8M', '7M', '6M', '5M', '4M'],\n      taunt: ['8M', '7M', '6M', '5M', '4M'],\n      thief: ['8M', '7M', '6M', '5M', '4M'],\n      throatchop: ['8M', '7T'],\n      thunderfang: ['8M', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['8L33', '7M', '6M', '5M', '4M'],\n      toxicspikes: ['8M', '8L15', '7L34', '6L34', '5L28', '4L28'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '8L21', '7M', '7L27', '6M', '6L27', '5M', '5L27'],\n      xscissor: ['8M', '8L44', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'croagunk',\n    {\n      acidspray: ['9M'],\n      acupressure: ['7E', '6E', '5E'],\n      aerialace: ['9M'],\n      assurance: ['8M'],\n      astonish: ['9L4', '8L4', '7L1', '6L1', '5L1', '5S0', '4L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      batonpass: ['9M', '8M'],\n      belch: ['9L48', '8L48', '7L47', '6L47'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletpunch: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      crosschop: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      darkpulse: ['8M', '7M', '6M', '5T', '4M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      dualchop: ['7T', '6T', '5T'],\n      dynamicpunch: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fakeout: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      feint: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      feintattack: ['7L17', '6L17', '5L17', '4L17'],\n      flatter: ['9L12', '8L12', '7L50', '6L50', '5L50', '4L45'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T', '5D', '4T'],\n      headbutt: ['9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lashout: ['9M', '8T'],\n      lowkick: ['9M', '9L16', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      meditate: ['7E', '6E', '5E', '4E'],\n      mefirst: ['7E', '6E', '5E', '4E'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudbomb: ['7L29', '6L29', '5L29', '4L29'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L1', '8L1', '7L3', '6L3', '5L3', '5S0', '5S1', '4T', '4L3'],\n      nastyplot: ['9M', '9L40', '8M', '8L40', '7L38', '6L38', '5L38', '4L36'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '9L32', '8M', '8L32', '7M', '7L43', '6M', '6L43', '5M', '5L43', '5S1', '4M', '4L38'],\n      poisonsting: ['9L1', '8L1', '7L8', '6L8', '5L8', '5D', '5S0', '5S1', '4L8'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L15', '6L15', '5L15', '4L15'],\n      quickguard: ['9E', '8E', '7E', '6E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M', '8L16', '7L22', '6L22', '5L22', '4L22'],\n      reversal: ['9M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '9L44', '8M', '8L44', '7M', '7L45', '6M', '6L45', '5M', '5L45', '4M', '4L43'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      smellingsalts: ['7E', '6E', '5E', '4E'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['9L24', '8L24', '7L31', '6L31', '5L31', '4T', '4L31'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      swagger: ['9L28', '8L28', '7M', '7L24', '6M', '6L24', '5M', '5L24', '4M', '4L24'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L8', '8M', '8L8', '7M', '7L10', '6M', '6L10', '5M', '5L10', '5S0', '5S1', '4M', '4L10'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['9M', '9L36', '8L36', '7M', '6M', '5M', '4M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '9L20', '8M', '8L20', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      wakeupslap: ['7E', '6E', '5E', '4E'],\n      workup: ['8M', '7M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'toxicroak',\n    {\n      acidspray: ['9M'],\n      aerialace: ['9M'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      batonpass: ['9M', '8M'],\n      belch: ['9L54', '8L54', '7L58', '6L58'],\n      bounce: ['8M', '7T', '6T', '5T', '4T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      corrosivegas: ['8T'],\n      crosspoison: ['8M'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T'],\n      dualchop: ['7T', '6T', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      feintattack: ['7L17', '6L17', '5L17', '4L17'],\n      flatter: ['9L12', '8L12', '7L62', '6L62', '5L62', '4L54'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lashout: ['9M', '8T'],\n      lowkick: ['9M', '9L16', '8M', '7T', '6T', '5T', '4T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudbomb: ['7L29', '6L29', '5L29', '4L29'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1', '4T', '4L1'],\n      nastyplot: ['9M', '9L42', '8M', '8L42', '7L41', '6L41', '5L41', '4L36'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      poisonjab: ['9M', '9L32', '8M', '8L32', '7M', '7L49', '6M', '6L49', '5M', '5L49', '4M', '4L41'],\n      poisonsting: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      pursuit: ['7L15', '6L15', '5L15', '4L15'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M', '8L16', '7L22', '6L22', '5L22', '4L22'],\n      reversal: ['9M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      screech: ['8M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '9L48', '8M', '8L48', '7M', '7L54', '6M', '6L54', '5M', '5L54', '4M', '4L49'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['9L24', '8L24', '7L31', '6L31', '5L31', '4T', '4L31'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      swagger: ['9L28', '8L28', '7M', '7L24', '6M', '6L24', '5M', '5L24', '4M', '4L24'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '8M', '8L1', '7M', '7L10', '6M', '6L10', '5M', '5L10', '4M', '4L10'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['9M', '9L36', '8L36', '7M', '6M', '5M', '4M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '4T'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '9L20', '8M', '8L20', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      workup: ['8M', '7M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'carnivine',\n    {\n      acidspray: ['7E'],\n      attract: ['7M', '6M', '5M', '4M'],\n      bind: ['7T', '7L1', '6T', '6L1', '5T', '5L1', '4L1'],\n      bite: ['7L7', '6L7', '5L7', '5D', '4L7'],\n      bugbite: ['7T', '6T', '5T', '4T'],\n      bulletseed: ['4M'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['7L41', '6L41', '5L41', '4L37'],\n      cut: ['6M', '5M', '4M'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endure: ['4M'],\n      energyball: ['7M', '6M', '5M', '4M'],\n      facade: ['7M', '6M', '5M', '4M'],\n      feintattack: ['7L27', '6L27', '5L27', '4L27'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gastroacid: ['7T', '6T', '5T', '5D', '4T'],\n      gigadrain: ['7T', '7E', '6T', '6E', '5T', '5E', '4M'],\n      gigaimpact: ['7M', '6M', '5M', '4M'],\n      grassknot: ['7M', '6M', '5M', '4M'],\n      grasswhistle: ['7E', '6E', '5E'],\n      growth: ['7L1', '6L1', '5L1', '4L1'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['7M', '6M', '5M', '4M'],\n      infestation: ['7M', '6M'],\n      ingrain: ['7L21', '6L21', '5L21', '4L21'],\n      knockoff: ['7T', '6T', '5T', '4T'],\n      leaftornado: ['7L31', '6L31', '5L31'],\n      leechseed: ['7E', '6E', '5E', '4E'],\n      magicalleaf: ['7E', '6E', '5E', '4E'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      powerwhip: ['7L50', '6L50', '5L51', '4L47'],\n      protect: ['7M', '6M', '5M', '4M'],\n      ragepowder: ['7E', '6E', '5E', '5D'],\n      razorleaf: ['7E', '6E', '5E', '4E'],\n      rest: ['7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['7T', '6T', '5T', '4T'],\n      slam: ['7E', '6E', '5E', '4E'],\n      sleeppowder: ['7E', '6E', '5E', '4E'],\n      sleeptalk: ['7M', '6M', '5T', '4M'],\n      sludgebomb: ['7M', '6M', '5M', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['7M', '6M', '5M', '4M'],\n      spitup: ['7L37', '6L37', '5L37', '4L31'],\n      stockpile: ['7L37', '6L37', '5L37', '4L31'],\n      stunspore: ['7E', '6E', '5E', '4E'],\n      substitute: ['7M', '6M', '5M', '4M'],\n      sunnyday: ['7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swallow: ['7L37', '6L37', '5L37', '4L31'],\n      sweetscent: ['7L17', '6L17', '5L17', '4L17'],\n      swordsdance: ['7M', '6M', '5M', '4M'],\n      synthesis: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      thief: ['7M', '6M', '5M', '4M'],\n      throatchop: ['7T'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      vinewhip: ['7L11', '6L11', '5L11', '4L11'],\n      worryseed: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      wringout: ['7L47', '6L47', '5L47', '4L41']\n    }\n  ],\n  [\n    'finneon',\n    {\n      acrobatics: ['9M'],\n      agility: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      aircutter: ['4T'],\n      alluringvoice: ['9M'],\n      aquaring: ['9L33', '7L33', '6L33', '5L33', '4L33'],\n      aquatail: ['9E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      attract: ['9L26', '7M', '7L10', '6M', '6L10', '5M', '5L10', '5D', '4M', '4L10'],\n      aurorabeam: ['9E', '7E', '6E', '5E'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bounce: ['9L45', '7T', '7L45', '6T', '6L45', '5T', '5L45', '4T', '4L45'],\n      brine: ['7E', '6E', '5E', '4M'],\n      captivate: ['7L26', '6L26', '5L26', '4M', '4L26'],\n      charm: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9E', '7E'],\n      dazzlinggleam: ['9M'],\n      defog: ['7T', '4M'],\n      dive: ['6M', '5M', '4T'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      flail: ['9E', '7E', '6E', '5E', '4E'],\n      flash: ['6M', '5M', '4M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gust: ['9L17', '7L17', '6L17', '5L17', '4L17'],\n      hail: ['7M', '6M', '5M', '4M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hydropump: ['9M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      ominouswind: ['4T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      pound: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M', '9E', '7E', '6E', '5E', '4E'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '9L13', '7M', '7L13', '6M', '6L13', '5M', '5L13', '4M', '4L13'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L29', '7M', '7L29', '6M', '6L29', '5M', '5L29', '4M', '4L29'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      signalbeam: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      silverwind: ['7L49', '6L49', '5L49', '4M', '4L49'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      soak: ['9L54', '7L54', '6L54', '5L54'],\n      splash: ['7E', '6E', '5E', '4E'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      sweetkiss: ['9E', '7E', '6E', '5E', '5D', '4E'],\n      swift: ['9M', '4T'],\n      tailwind: ['9M', '9L49', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      tickle: ['9E', '7E', '6E', '5E', '4E'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uturn: ['9M', '9L42', '7M', '7L42', '6M', '6L42', '5M', '5L42', '4M', '4L42'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L6', '7L6', '6L6', '5L6', '4L6'],\n      waterpulse: ['9M', '9L22', '7T', '7L22', '6T', '6L22', '5L22', '5D', '4M', '4L22'],\n      whirlpool: ['9M', '9L38', '7L38', '6L38', '5L38', '4M', '4L38']\n    }\n  ],\n  [\n    'lumineon',\n    {\n      acrobatics: ['9M'],\n      agility: ['9M'],\n      aircutter: ['9M', '4T'],\n      airslash: ['9M'],\n      alluringvoice: ['9M'],\n      aquaring: ['9L35', '7L35', '6L35', '5L35', '4L35'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['9L26', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bounce: ['9L53', '7T', '7L53', '6T', '6L53', '5T', '5L53', '4T', '4L53'],\n      brine: ['4M'],\n      captivate: ['7L26', '6L26', '5L26', '4M', '4L26'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      dazzlinggleam: ['9M'],\n      defog: ['7T', '4M'],\n      dive: ['6M', '5M', '4T'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      encore: ['9M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      gust: ['9L1', '7L1', '6L1', '5L17', '4L17'],\n      hail: ['7M', '6M', '5M', '4M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      payback: ['7M', '6M', '5M', '4M'],\n      pound: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '9L13', '7M', '7L13', '6M', '6L13', '5M', '5L13', '4M', '4L13'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L29', '7M', '7L29', '6M', '6L29', '5M', '5L29', '4M', '4L29'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      signalbeam: ['7T', '6T', '5T'],\n      silverwind: ['7L59', '6L59', '5L59', '4M', '4L59'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      soak: ['9L1', '7L1', '6L1', '5L66'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      tailwind: ['9M', '9L59', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      uturn: ['9M', '9L48', '7M', '7L48', '6M', '6L48', '5M', '5L48', '4M', '4L48'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      waterpulse: ['9M', '9L22', '7T', '7L22', '6T', '6L22', '5L22', '4M', '4L22'],\n      whirlpool: ['9M', '9L42', '7L42', '6L42', '5L42', '4M', '4L42']\n    }\n  ],\n  [\n    'snover',\n    {\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      avalanche: ['9M', '8M', '7E', '6E', '5E', '5D', '4M'],\n      blizzard: ['9M', '9L45', '8M', '8L45', '7M', '7L41', '6M', '6L41', '5M', '5L41', '4M', '4L41'],\n      bodyslam: ['9M'],\n      bulletseed: ['9M', '8M', '7E', '6E', '5E', '4M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      doubleedge: ['9M', '9E', '8E', '7E', '6E', '5E', '4E'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T', '5D', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['7L13', '6L13', '5L13', '4L13'],\n      grassyglide: ['9M', '8T'],\n      growth: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      hail: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      iceshard: ['9L15', '8L15', '7L26', '6L26', '5L26', '4L26'],\n      icespinner: ['9M'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '9L25', '8M', '8L25', '7T', '7L9', '6T', '6L9', '5T', '5L9', '4T', '4L9'],\n      ingrain: ['9L35', '8L35', '7L31', '6L31', '5L31', '4L31'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      leafage: ['9L5', '8L5'],\n      leafstorm: ['9M'],\n      leechseed: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M'],\n      magicalleaf: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      megapunch: ['8M'],\n      mist: ['9L10', '8L10', '7L21', '7E', '6L21', '6E', '5L21', '5E', '4L21', '4E'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['7E', '6E', '5E', '4M'],\n      powdersnow: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      razorleaf: ['9L20', '8L20', '7L5', '6L5', '5L5', '5D', '4L5'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      sheercold: ['9L50', '8L50', '7L46', '6L46', '5L46', '4L46'],\n      skullbash: ['8E', '7E', '6E', '5E', '4E'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      stomp: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['9L30', '8L30', '7M', '7L17', '6M', '6L17', '5M', '5L17', '4M', '4L17'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      weatherball: ['9M', '9E', '8M'],\n      woodhammer: ['9L41', '8L41', '7L36', '6L36', '5L36', '4L36'],\n      worryseed: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'abomasnow',\n    {\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      auroraveil: ['9L1', '8L1'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '9L49', '8M', '8L49', '7M', '7L47', '6M', '6L47', '5M', '5L47', '4M', '4L47'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '8M', '4M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['7L13', '6L13', '5L13', '4L13'],\n      grassyglide: ['9M', '8T'],\n      hail: ['8M', '7M', '6M', '5M', '4M'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '9L0', '8M', '8L0', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      iceshard: ['9L15', '8L15', '7L26', '6L26', '5L26', '4L26'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L25', '8M', '8L25', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      ingrain: ['9L35', '8L35', '7L31', '6L31', '5L31', '4L31'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      leafage: ['9L1', '8L1'],\n      leafstorm: ['9M', '8M'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      lightscreen: ['8M', '7M', '6M', '5M', '4M'],\n      lowkick: ['9M'],\n      magicalleaf: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mist: ['9L1', '8L1', '7L21', '6L21', '5L21', '4L21'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      powdersnow: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      razorleaf: ['9L20', '8L20', '7L1', '6L1', '5L1', '4L1'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      shadowball: ['8M', '7M', '6M', '5M', '4M'],\n      sheercold: ['9L56', '8L56', '7L58', '6L58', '5L58', '4L58'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['9L30', '8L30', '7M', '7L17', '6M', '6L17', '5M', '5L17', '4M', '4L17'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      synthesis: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      weatherball: ['9M', '8M'],\n      woodhammer: ['9L43', '8L43', '7L36', '6L36', '5L36', '4L36'],\n      worryseed: ['7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'rotom',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '6S1', '5L1', '5S0', '4L1'],\n      charge: ['9M', '9L15', '8L15', '7L1', '6L1', '5L57', '4L43'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '7S2', '6M'],\n      confuseray: ['9M', '9L10', '8L10', '7L1', '6L1', '5L1', '4L1'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defog: ['7T'],\n      disarmingvoice: ['7S2'],\n      discharge: ['9L50', '8L50', '7L1', '6L1', '5L64', '4L50'],\n      doubleteam: ['9L1', '8L1', '7M', '7L15', '6M', '6L15', '5M', '5L15', '4M', '4L15'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '9L20', '8M', '8L20', '7L43', '6L43', '5L43'],\n      electroweb: ['9M', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      foulplay: ['9M', '8M', '7T', '6T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M', '9L35', '8M', '8L35', '7L50', '6L50', '5L50'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '8M'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      mudslap: ['4T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      ominouswind: ['7L29', '6L29', '5L29', '4T', '4L29'],\n      painsplit: ['9M', '7T', '6T', '5T', '4T'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['9L30', '8L30', '7T', '7L22', '6T', '6L22', '6S1', '5L22', '5D', '4M', '4L22'],\n      signalbeam: ['7T', '6T', '5T', '5D', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '9L40', '8M', '8L40', '7M', '7L36', '6M', '6L36', '5M', '5L36', '4M', '4L36'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thundershock: ['9L5', '8L5', '7L1', '6L1', '5T', '5L1', '5S0', '4T', '4L1'],\n      thunderwave: ['9M', '9L25', '8M', '8L25', '7M', '7L1', '6M', '6L1', '6S1', '5M', '5L1', '5D', '4M', '4L1'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '9L45', '8M', '8L45', '7T', '7L1', '6T', '6L1', '6S1', '5T', '5L1', '5S0', '4T', '4L1'],\n      uproar: ['9M', '9L55', '8M', '8L55', '7T', '7L8', '7S2', '6T', '6L8', '5T', '5L8', '5S0', '4T', '4L8'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  ['rotomheat', { overheat: ['9R', '8R', '7R', '6R', '5R', '4R'] }],\n  ['rotomwash', { hydropump: ['9R', '8R', '7R', '6R', '5R', '4R'] }],\n  ['rotomfrost', { blizzard: ['9R', '8R', '7R', '6R', '5R', '4R'] }],\n  ['rotomfan', { airslash: ['9R', '8R', '7R', '6R', '5R', '4R'] }],\n  ['rotommow', { leafstorm: ['9R', '8R', '7R', '6R', '5R', '4R'] }],\n  [\n    'uxie',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      allyswitch: ['9L1', '8M', '7T'],\n      amnesia: ['9M', '9L42', '8M', '8L42', '7L46', '7S4', '6L46', '6S3', '5L46', '5S2', '4L46', '4S0', '4S1'],\n      batonpass: ['9M', '8M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '4S0'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '9L14', '8M', '8L14', '7L16', '6L16', '5L16', '4M', '4L16'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M', '9L1', '8T'],\n      extrasensory: ['9L35', '8L35', '7L50', '7S4', '6L50', '6S3', '5L51', '5S2', '4L51'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      flail: ['9L70', '8L70', '7L1', '6L1', '5L61', '5S2', '4L61'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['9M', '9L63', '8M', '8L63', '8S5', '7L36', '6L36', '6S3', '5L36', '5S2', '4L36', '4S0', '4S1'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '9L28', '8M', '8L28', '7L6', '6L6', '5L6', '4L6'],\n      irontail: ['9L1', '8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['9L1', '8M', '8S5', '7T', '6T', '5T'],\n      memento: ['9L77', '8L77', '7L1', '6L1', '5L76', '4L76'],\n      metronome: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      mysticalpower: ['9L84'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['7L1', '6L1', '5L66', '4M', '4L66'],\n      painsplit: ['9M'],\n      playrough: ['9M', '8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M', '9L21', '8L21'],\n      psychic: ['9M', '9L49', '8M', '8L49', '8S5', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      psychocut: ['9L1', '8M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      return: ['7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['9L1', '8M', '7M', '6M', '5M'],\n      safeguard: ['9L1', '8M', '7M', '6M', '5M', '4M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '8S5', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['9L1', '8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '9L7', '8M', '8L7', '7L21', '7S4', '6L21', '5L21', '4T', '4L21', '4S1'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      triattack: ['9L1', '8M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      wonderroom: ['9L1', '8M', '7T', '6T', '5T'],\n      yawn: ['9L56', '8L56', '7L31', '7S4', '6L31', '6S3', '5L31', '4L31', '4S0', '4S1'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'mesprit',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      allyswitch: ['9L1', '8M', '7T'],\n      batonpass: ['9M', '8M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L42', '8M', '8L42', '8S5', '7L46', '7S4', '6L46', '6S3', '5L46', '5S2', '4L46', '4S0', '4S1'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '4S0'],\n      copycat: ['9L70', '8L70', '7L1', '6L1', '5L61', '5S2', '4L61'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainingkiss: ['9M', '8M', '8S5'],\n      drainpunch: ['9M', '8M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M', '9L1', '8T'],\n      extrasensory: ['9L35', '8L35', '7L50', '7S4', '6L50', '6S3', '5L51', '5S2', '4L51'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      flash: ['6M', '5M', '4M'],\n      flatter: ['9L56', '8L56'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['9M', '9L63', '8M', '8L63', '7L36', '7S4', '6L36', '6S3', '5L36', '5S2', '4L36', '4S0', '4S1'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      healingwish: ['9L77', '8L77', '7L1', '6L1', '5L76', '4L76'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '9L28', '8M', '8L28', '7L6', '6L6', '5L6', '4L6'],\n      irontail: ['9L1', '8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      luckychant: ['7L31', '6L31', '6S3', '5L31', '4L31', '4S0', '4S1'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['9L1', '8M', '7T', '6T', '5T'],\n      metronome: ['9M', '8M'],\n      mudslap: ['4T'],\n      mysticalpower: ['9L84'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['7L1', '6L1', '5L66', '4M', '4L66'],\n      painsplit: ['9M'],\n      playrough: ['9M', '8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L14', '8M', '8L14', '7M', '7L16', '6M', '6L16', '5M', '5L16', '4M', '4L16'],\n      psybeam: ['9M', '9L21', '8L21'],\n      psychic: ['9M', '9L49', '8M', '8L49', '8S5', '7M', '6M', '5M', '4M'],\n      psychicnoise: ['9M'],\n      psychocut: ['9L1', '8M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      return: ['7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['9L1', '8M', '7M', '6M', '5M'],\n      safeguard: ['9L1', '8M', '7M', '6M', '5M', '4M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['9L1', '8M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '9L7', '8M', '8L7', '7L21', '7S4', '6L21', '5L21', '4T', '4L21', '4S1'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      triattack: ['9L1', '8M', '8S5'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      wonderroom: ['9L1', '8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'azelf',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      allyswitch: ['9L1', '8M', '7T'],\n      assurance: ['9L1', '8M'],\n      batonpass: ['9M', '8M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1', '4S0'],\n      dazzlinggleam: ['9M', '8M', '8S5', '7M', '6M'],\n      detect: ['9L14', '8L14', '7L16', '6L16', '5L16', '4L16'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      expandingforce: ['9M', '9L1', '8T'],\n      explosion: ['9L77', '8L77', '7M', '7L76', '6M', '6L76', '5M', '5L76', '4M', '4L76'],\n      extrasensory: ['9L35', '8L35', '7L50', '7S4', '6L50', '6S3', '5L51', '5S2', '4L51'],\n      facade: ['9M', '8M', '8S5', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      futuresight: ['9M', '9L63', '8M', '8L63', '7L36', '6L36', '6S3', '5L36', '5S2', '4L36', '4S0', '4S1'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M', '9L28', '8M', '8L28', '7L6', '6L6', '5L6', '4L6'],\n      incinerate: ['6M', '5M'],\n      irontail: ['9L1', '8M', '7T', '6T', '5T', '4M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lastresort: ['9L70', '8L70', '7T', '7L1', '6T', '6L1', '5T', '5L61', '5S2', '4T', '4L61'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['9L1', '8M', '7T', '6T', '5T'],\n      metronome: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      mysticalpower: ['9L84'],\n      nastyplot: ['9M', '9L42', '8M', '8L42', '8S5', '7L46', '7S4', '6L46', '6S3', '5L46', '5S2', '4L46', '4S0', '4S1'],\n      naturalgift: ['7L1', '6L1', '5L66', '4M', '4L66'],\n      payback: ['9L1', '8M', '7M', '6M', '5M', '4M'],\n      playrough: ['9M', '8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M', '9L21', '8L21'],\n      psychic: ['9M', '9L49', '8M', '8L49', '8S5', '7M', '6M', '5M', '4M'],\n      psychocut: ['9L1', '8M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      return: ['7M', '6M', '5M', '4M'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['9L1', '8M', '7M', '6M', '5M'],\n      safeguard: ['9L1', '8M', '7M', '6M', '5M', '4M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      selfdestruct: ['9L1', '8M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['9L1', '8M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '9L7', '8M', '8L7', '7L21', '7S4', '6L21', '5L21', '4T', '4L21', '4S1'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      triattack: ['9L1', '8M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      uproar: ['9M', '9L56', '8M', '8L56', '7T', '7L31', '7S4', '6T', '6L31', '6S3', '5T', '5L31', '4T', '4L31', '4S0', '4S1'],\n      uturn: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      wonderroom: ['9L1', '8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'dialga',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      ancientpower: ['9L16', '8L16', '8S11', '7L10', '6L10', '5L10', '4T', '4L10', '4S0'],\n      aurasphere: ['9M', '9L48', '8M', '8L48', '7L37', '7S7', '7S8', '7S9', '7S10', '6L37', '6S5', '5L37', '5S4', '4L37'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dracometeor: ['9M', '9S15', '8T', '7T', '7S9', '7S10', '6T', '5T', '5S4', '4T'],\n      dragonbreath: ['9L8', '8L8', '7L1', '6L1', '5L1', '5S3', '4L1', '4S2'],\n      dragonclaw: ['9M', '9L40', '8M', '8L40', '8S11', '7M', '7L28', '6M', '6L28', '5M', '5L28', '4M', '4L28', '4S0'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '5S4', '4M'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      earthpower: ['9M', '9L72', '9S15', '8M', '8L72', '7T', '7L33', '6T', '6L33', '5T', '5L33', '4T', '4L33', '4S1'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '9S15', '8M', '7M', '6M', '5M', '4M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      flashcannon: [\n        '9M',\n        '9L32',\n        '8M',\n        '8L32',\n        '8S12',\n        '8S11',\n        '7M',\n        '7L50',\n        '7S7',\n        '7S8',\n        '7S9',\n        '7S10',\n        '6M',\n        '6L50',\n        '6S5',\n        '6S6',\n        '5M',\n        '5L50',\n        '4M',\n        '4L42'\n      ],\n      focusblast: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      healblock: ['4L50', '4S1'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      irontail: ['9L80', '8M', '8L80', '7T', '7L42', '7S7', '7S8', '6T', '6L42', '6S5', '5T', '5L42', '4M'],\n      magnetrise: ['7T', '6T', '5T', '4T'],\n      metalburst: ['9L64', '8L64', '8S12', '7L24', '6L24', '6S6', '5L24', '4L24'],\n      metalclaw: ['9M', '9L1', '8L1', '7L6', '6L6', '5L6', '4L6', '4S0'],\n      metalsound: ['9M'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      overheat: ['9M', '8M', '8S12', '7M', '6M', '6S6', '5M', '4M'],\n      powergem: ['9M', '9L56', '8M', '8L56', '7L19', '6L19', '5L19', '4L19'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      roaroftime: ['9L88', '8L88', '8S12', '7L46', '7S7', '7S8', '7S9', '7S10', '6L46', '6S5', '6S6', '5L46', '5S4', '4L40', '4S0', '4S1'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '5S3', '4L1', '4S2'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      slash: ['9L24', '8L24', '8S11', '7L15', '6L15', '5L15', '4L15', '4S1'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M', '9S15', '8T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      twister: ['4T']\n    }\n  ],\n  ['dialgaorigin', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'palkia',\n    {\n      aerialace: ['9M', '7M', '6M', '5M', '4M'],\n      ancientpower: ['9L16', '8L16', '8S11', '7L10', '6L10', '5L10', '4T', '4L10', '4S0'],\n      aquaring: ['9L32', '8L32', '7L24'],\n      aquatail: ['9L64', '8L64', '7T', '7L24', '7S7', '7S8', '6T', '6L24', '5T', '5L24', '4T', '4L24'],\n      aurasphere: ['9M', '9L48', '8M', '8L48', '8S12', '7L37', '7S7', '7S8', '7S9', '7S10', '6L37', '6S5', '6S6', '5L37', '5S4', '4L37'],\n      avalanche: ['9M', '8M', '4M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      brine: ['8M', '4M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M', '4M'],\n      dive: ['8M', '6M', '5M', '4T'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dracometeor: ['9M', '9S15', '8T', '7T', '7S9', '7S10', '6T', '5T', '5S4', '4T'],\n      dragonbreath: ['9L8', '8L8', '7L1', '6L1', '5L1', '5S3', '4L1', '4S2'],\n      dragonclaw: ['9M', '8M', '8L40', '8S11', '7M', '7L28', '6M', '6L28', '5M', '5L28', '4M', '4L28', '4S0'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '9L72', '8M', '8L72', '8S12', '7T', '7L33', '6T', '6L33', '6S5', '6S6', '5T', '5L33', '4T', '4L33', '4S1'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '9S15', '8M', '7M', '6M', '5M', '4M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['7T', '6T', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      hail: ['8M', '7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      healblock: ['4L50', '4S1'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['9M', '9L88', '9S15', '8M', '8L88', '8S12', '7L50', '7S7', '7S8', '7S9', '7S10', '6L50', '6S5', '6S6', '5L50', '5S4', '4L42'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M'],\n      incinerate: ['6M', '5M'],\n      liquidation: ['9M', '8M', '7T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      powergem: ['9M', '9L56', '8M', '8L56', '7L19', '6L19', '5L19', '4L19'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1', '5S3', '4L1', '4S2'],\n      secretpower: ['6M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      slash: ['9L24', '8L24', '8S11', '7L15', '6L15', '5L15', '4L15', '4S1'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      snowscape: ['9M'],\n      spacialrend: ['9L80', '8L80', '8S12', '7L46', '7S7', '7S8', '7S9', '7S10', '6L46', '6S5', '6S6', '5L46', '5S4', '4L40', '4S0', '4S1'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      surf: ['9M', '8M', '8S11', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '9S15', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      waterfall: ['9M'],\n      waterpulse: ['9M', '9L1', '8L1', '7T', '7L6', '6T', '6L6', '5L6', '4M', '4L6', '4S0'],\n      whirlpool: ['9M', '8M', '4M']\n    }\n  ],\n  ['palkiaorigin', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'heatran',\n    {\n      ancientpower: ['9L12', '8L12', '7L1', '6L1', '5L1', '4T', '4L1', '4S2'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bugbite: ['7T', '6T', '5T', '4T'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      burningjealousy: ['9M', '8T'],\n      captivate: ['4M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L36', '8M', '8L36', '8S8', '7L33', '7S5', '7S6', '6L33', '6S4', '5L33', '4L33', '4S1'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      earthpower: ['9M', '9L54', '8M', '8L54', '7T', '7L1', '7S7', '6T', '6L1', '5T', '5L73', '4T', '4L73', '4S2'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      eruption: ['4S2'],\n      explosion: ['7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      firefang: ['9M', '9L18', '8M', '8L18', '7L17', '6L17', '5L17', '4L17'],\n      firespin: ['9M', '9L1', '8M', '8L1', '7L1', '7S5', '7S6', '6L1', '5L57', '5S3', '4L57', '4S0'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flareblitz: ['9M'],\n      flashcannon: ['9M', '8M', '7M', '7S7', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M', '9L60', '8M', '8L60', '7T', '7L1', '7S7', '6T', '6L1', '5T', '5L81', '4T', '4L81'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '9L30', '8M', '8L30', '8S8', '7T', '7L1', '6T', '6L1', '5T', '5L65', '5S3', '4T', '4L65', '4S0'],\n      lavaplume: ['9L42', '8L42', '8S8', '7L49', '7S5', '7S6', '6L49', '6S4', '5L49', '5S3', '4L49', '4S0', '4S1'],\n      leer: ['9L1', '8L1', '7L9', '6L9', '5L9', '4L9'],\n      lunge: ['9M'],\n      magmastorm: ['9L72', '8L72', '7L1', '7S7', '6L1', '5L96', '4L96', '4S2'],\n      metalclaw: ['9M', '9L6', '8L6'],\n      metalsound: ['9M', '9L48', '8L48', '8S8', '7L25', '6L25', '6S4', '5L25', '4L25', '4S1'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      pounce: ['9M'],\n      powergem: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['7M', '6M', '5M', '4M'],\n      rockblast: ['9M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '9L24', '8M', '8L24', '7L41', '7S5', '7S6', '6L41', '6S4', '5L41', '5S3', '4L41', '4S0', '4S1'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M', '4M'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L66', '8M', '8L66', '7M', '7L88', '6M', '6L88', '5M', '5L88', '4M', '4L88'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['8M', '7T', '6T', '5T', '4T'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'regigigas',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      ancientpower: ['4T'],\n      avalanche: ['9M', '8M', '4M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodypress: ['9M', '9L42', '8M', '8L42'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L1', '8L1', '7L1', '7S5', '7S6', '6L1', '5L1', '4L1', '4S0', '4S1'],\n      crushgrip: ['9L78', '8L78', '8S8', '7L1', '7S7', '6L1', '5L75', '4L75', '4S2'],\n      darkestlariat: ['8M'],\n      dizzypunch: ['7L1', '7S5', '7S6', '6L1', '5L1', '4L1', '4S1'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      drainpunch: ['9M', '8M', '7T', '7S7', '6T', '5T', '4M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '9L12', '8M', '7M', '6M', '5M', '4M'],\n      firepunch: ['9M', '8M', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      foresight: ['7L1', '6L1', '6S4', '5L1', '4L1', '4S1'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '9L72', '8M', '8L72', '8S8', '7M', '7L100', '6M', '6L100', '5M', '5L100', '4M', '4L100'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      hammerarm: ['9L66', '8L66', '8S8'],\n      hardpress: ['9M'],\n      headbutt: ['4T'],\n      heatcrash: ['9M', '8M'],\n      heavyslam: ['9M', '9L60', '8M', '8L60', '7L1', '7S7', '6L1', '5L90'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T', '4S2'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T', '4T', '4S2'],\n      knockoff: ['9M', '9L30', '8L30', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4L1', '4S1'],\n      megakick: ['8M'],\n      megapunch: ['9M', '9L36', '8M', '8L36', '4L1'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M', '6M'],\n      payback: ['9L6', '8M', '8L6', '7M', '7L65', '6M', '6L65', '5M', '5L65', '5S3'],\n      pound: ['9L1', '8L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L24', '8M', '8L24'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M', '8L12', '7L25', '7S5', '7S6', '6L25', '6S4', '5L25', '5S3', '4L25'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M', '4S2'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      stomp: ['9L18', '8L18', '4L1', '4S0'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T', '4L25', '4S0'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '7L1', '6T', '6L1', '5T', '5L1', '4T', '4L1'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      wideguard: ['9L48', '8L48', '7L40', '6L40', '6S4', '5L40', '5S3'],\n      zenheadbutt: [\n        '9M',\n        '9L54',\n        '8M',\n        '8L54',\n        '8S8',\n        '7T',\n        '7L50',\n        '7S5',\n        '7S6',\n        '7S7',\n        '6T',\n        '6L50',\n        '6S4',\n        '5T',\n        '5L50',\n        '5S3',\n        '4T',\n        '4L50',\n        '4S0'\n      ]\n    }\n  ],\n  [\n    'giratina',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      aircutter: ['4T'],\n      ancientpower: ['9L14', '8L14', '8S8', '7L10', '6L10', '5L10', '4T', '4L10', '4S1'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      aurasphere: ['9M', '9L56', '8M', '8L56', '7L37', '7S7', '6L37', '6S5', '6S6', '5L37', '5S4', '4L37'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      defog: ['9L1', '8L1', '7T', '4M'],\n      destinybond: ['9L84', '8L84', '7L24', '6L24', '5L24', '4L24'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '6S6', '5T', '4T'],\n      dragonbreath: ['9L7', '8L7', '7L1', '6L1', '5L1', '5S3', '4L1', '4S2'],\n      dragonclaw: ['9M', '9L63', '8M', '8L63', '8S8', '7M', '7L28', '7S7', '6M', '6L28', '5M', '5L28', '5S4', '4M', '4L28', '4S1'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T', '5S4', '4M'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '9L70', '8M', '8L70', '7T', '7L33', '7S7', '6T', '6L33', '5T', '5L33', '4T', '4L33', '4S0'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fly: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      headbutt: ['4T'],\n      healblock: ['4L50', '4S0'],\n      hex: ['9M', '9L21', '8M', '8L21', '7L50', '6L50', '6S5', '5L50'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '8M', '7T', '6T', '6S6', '5T', '4T'],\n      irontail: ['8M', '7T', '6T', '5T', '4M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['7L6', '6L6', '5L6', '4T', '4L6', '4S1'],\n      outrage: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      painsplit: ['9M', '9L49', '8L49', '7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      phantomforce: ['9M', '8M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockclimb: ['4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      scaryface: ['9M', '9L35', '8M', '8L35', '8S8', '7L1', '6L1', '5L1', '5S3', '4L1', '4S2'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '8S8', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M', '9L42', '8M', '8L42', '7M', '7L42', '6M', '6L42', '6S5', '5M', '5L42', '4M', '4L42'],\n      shadowforce: ['9L77', '8L77', '7L46', '7S7', '6L46', '6S5', '6S6', '5L46', '5S4', '4L40', '4S0', '4S1'],\n      shadowsneak: ['9L1', '8L1', '7L19', '6L19', '5L19', '4L19'],\n      shockwave: ['7T', '6T', '4M'],\n      silverwind: ['4M'],\n      skittersmack: ['9M'],\n      slash: ['9L28', '8L28', '7L15', '6L15', '5L15', '4L15', '4S0'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      steelwing: ['8M', '7M', '6M', '4M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      tailwind: ['7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  ['giratinaorigin', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'cresselia',\n    {\n      allyswitch: ['9L24', '8M', '7T'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      aurorabeam: ['9L12', '8L12', '7L29', '7S4', '6L29', '6S3', '5L29', '4L29', '4S0'],\n      bodyslam: ['9M', '8M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      dazzlinggleam: ['9M'],\n      doubleteam: ['9L1', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1', '4M', '4L1'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '5S2', '4M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      futuresight: ['9M', '9L66', '8M', '8L66', '7L38', '7S4', '6L38', '6S3', '5L38', '5S1', '4L38', '4S0'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      gravity: ['9M', '7T', '6T', '5T', '4T'],\n      guardswap: ['8M'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '5S2', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M', '5S2', '4M'],\n      icywind: ['9M', '8M', '8S5', '7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      lunarblessing: ['9L72'],\n      lunardance: ['9L72', '8L72', '7L1', '6L1', '5L84', '4L84'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      mist: ['9L6', '8L6', '7L20', '6L20', '6S3', '5L20', '4L20', '4S0'],\n      moonblast: ['9L60', '8L60', '8S5', '7L99', '6L99'],\n      moonlight: ['9L42', '8L42', '7L1', '7S4', '6L1', '5L57', '5S1', '4L57'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      powergem: ['9M'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M', '9L18', '8L18'],\n      psychic: ['9M', '9L54', '8M', '8L54', '7M', '7L93', '6M', '6L93', '5M', '5L93', '4M', '4L93'],\n      psychicterrain: ['9M'],\n      psychocut: ['9L36', '8M', '8L36', '8S5', '7L1', '6L1', '5L66', '5S1', '4L66'],\n      psychoshift: ['8L24', '7L1', '6L1', '5L75', '4L75'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '8M', '8S5', '7M', '6M', '5M', '5S2'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['9L48', '8M', '8L48', '7M', '7L11', '6M', '6L11', '5M', '5L11', '4M', '4L11'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      slash: ['9L30', '8L30', '7L47', '7S4', '6L47', '6S3', '5L47', '5S1', '4L47', '4S0'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  [\n    'phione',\n    {\n      acidarmor: ['9L31', '7L31', '6L31', '5L31', '4L31'],\n      alluringvoice: ['9M'],\n      ancientpower: ['4T'],\n      aquaring: ['9L54', '7L54', '6L54', '5L54', '4L54'],\n      batonpass: ['9M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      brine: ['4M'],\n      bubble: ['7L1', '6L1', '5L1', '4L1'],\n      bubblebeam: ['9L24', '7L24', '6L24', '5L24', '4L24'],\n      charm: ['9M', '9L9', '7L9', '6L9', '5L9', '4L9'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      disarmingvoice: ['9M'],\n      dive: ['9L61', '7L61', '6M', '6L61', '5M', '5L61', '4T', '4L61'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M', '4S0'],\n      hail: ['7M', '6M', '5M', '4M'],\n      haze: ['9M'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hydropump: ['9M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      liquidation: ['9M', '7T'],\n      mudslap: ['4T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '9L69', '7M', '7L69', '6M', '6L69', '5M', '5L69', '4M', '4L69', '4S0'],\n      rest: ['9M', '7M', '6M', '5M', '4M', '4S0'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      scald: ['9M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      supersonic: ['9L16', '7L16', '6L16', '5L16', '4L16'],\n      surf: ['9M', '7M', '6M', '5M', '4M', '4S0'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      takeheart: ['9L75'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '9L46', '7T', '7L46', '6T', '6L46', '5L46', '4M', '4L46'],\n      watersport: ['7L1', '6L1', '5L1', '4L1'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '9L39', '7L39', '6L39', '5L39', '4M', '4L39'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'manaphy',\n    {\n      acidarmor: ['9L31', '9S9', '7L31', '6L31', '5L31', '4L31', '4S2'],\n      alluringvoice: ['9M'],\n      ancientpower: ['4T'],\n      aquaring: ['9L54', '7L54', '7S6', '6L54', '5L54', '4L54', '4S3'],\n      batonpass: ['9M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bounce: ['7T', '6T', '5T', '4T'],\n      brine: ['4M'],\n      bubble: ['7L1', '6L1', '6S4', '6S5', '5L1', '4L1', '4S0', '4S1'],\n      bubblebeam: ['9L24', '9S9', '7L24', '6L24', '5L24', '4L24'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M'],\n      charm: ['9M', '9L9', '7L9', '6L9', '5L9', '4L9'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      disarmingvoice: ['9M'],\n      dive: ['9L61', '7L61', '6M', '6L61', '5M', '5L61', '4T', '4L61'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '4M'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      faketears: ['9M'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      hail: ['7M', '6M', '5M', '4M'],\n      haze: ['9M'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      heartswap: ['9L1', '7L76', '7S6', '6L76', '6S4', '5L76', '4L76', '4S2', '4S3'],\n      helpinghand: ['9M', '7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M'],\n      liquidation: ['9M', '7T'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      raindance: ['9M', '9L69', '7M', '7L69', '6M', '6L69', '5M', '5L69', '4M', '4L69'],\n      reflect: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      scald: ['9M', '7M', '6M', '5M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      skillswap: ['9M', '7T', '6T', '5T', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      supersonic: ['9L16', '7L16', '6L16', '5L16', '4L16'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      tailglow: ['9L1', '7L1', '7S6', '6L1', '6S4', '6S5', '5L1', '4L1', '4S0', '4S1'],\n      takeheart: ['9L76'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      uproar: ['7T', '6T', '5T', '4T'],\n      uturn: ['9M', '7M', '6M', '5M', '4M'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '9L46', '9S9', '7T', '7L46', '7S6', '6T', '6L46', '5L46', '4M', '4L46', '4S2', '4S3'],\n      watersport: ['7L1', '6L1', '6S4', '6S5', '5L1', '4L1', '4S0', '4S1', '4S3'],\n      weatherball: ['9M'],\n      whirlpool: ['9M', '9L39', '9S9', '7L39', '6L39', '5L39', '4M', '4L39', '4S2'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'darkrai',\n    {\n      aerialace: ['7M', '6M', '5M', '4M'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['9M', '9L93', '9S10', '7M', '7L93', '6M', '6L93', '6S5', '5T', '5L93', '4M', '4L93', '4S2'],\n      darkvoid: ['9L66', '7L66', '7S7', '6L66', '6S5', '6S6', '5L66', '5S4', '4L66', '4S2'],\n      disable: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      doubleteam: ['9L47', '7M', '7L47', '6M', '6L47', '5M', '5L47', '4M', '4L47', '4S2', '4S3'],\n      drainpunch: ['9M', '7T', '6T', '5T', '4M'],\n      dreameater: ['9L84', '9S10', '7M', '7L84', '6M', '6L84', '6S5', '5M', '5L84', '4M', '4L84'],\n      embargo: ['7M', '6M', '5M', '4M', '4L75'],\n      endure: ['9M', '4M'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      feintattack: ['7L29', '7S7', '6L29', '6S6', '5L29', '5S4', '4L29', '4S3'],\n      flash: ['6M', '5M', '4M'],\n      fling: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      foulplay: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      haze: ['9M', '9L57', '7L57', '6L57', '5L57', '4L57'],\n      headbutt: ['4T'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      hypnosis: ['9L20', '9S10', '7L20', '6L20', '5L20', '4L20', '4S0', '4S1', '4S3'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      incinerate: ['6M', '5M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lashout: ['9M'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      mudslap: ['4T'],\n      nastyplot: ['9M', '9L75', '7L75', '6L75', '5L75', '4L75'],\n      naturalgift: ['4M'],\n      nightmare: ['7L38', '7S7', '6L38', '6S6', '5L38', '5S4', '4L38', '4S0', '4S1', '4S3'],\n      nightshade: ['9M', '9L38', '4L1'],\n      ominouswind: ['7L1', '7S7', '6L1', '6S6', '5L1', '5S4', '4T', '4L1'],\n      payback: ['7M', '6M', '5M', '4M'],\n      phantomforce: ['6S5'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M'],\n      pursuit: ['4L29', '4S0'],\n      quickattack: ['9L11', '7L11', '6L11', '5L11', '4L11', '4S0'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roaroftime: ['4S1'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '9S10', '7M', '6M', '5M', '4M', '4S2'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shockwave: ['7T', '6T', '4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '7M', '6M', '5M', '4M'],\n      snarl: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      spacialrend: ['4S1'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['9L29', '4T'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      taunt: ['9M', '7M', '6M', '5M', '4M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M', '5M', '4M'],\n      throatchop: ['9M', '7T'],\n      thunder: ['9M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      wonderroom: ['7T', '6T', '5T'],\n      xscissor: ['9M', '7M', '6M', '5M', '4M']\n    }\n  ],\n  [\n    'shaymin',\n    {\n      aircutter: ['9M', '4T'],\n      airslash: ['9M', '9L64', '7L64', '6L64', '6S3', '5L64', '4L64'],\n      aromatherapy: ['7L64', '6L64', '6S4', '5L64', '4L64', '4S0'],\n      batonpass: ['9M'],\n      bulletseed: ['9M', '4M'],\n      celebrate: ['7S5'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defensecurl: ['4L1'],\n      disarmingvoice: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '7T', '6T', '5T', '4T'],\n      endeavor: ['9M', '7T', '6T', '5T', '4T'],\n      endure: ['9M', '4M'],\n      energyball: ['9M', '9L73', '7M', '7L73', '6M', '6L73', '6S4', '5M', '5L73', '4M', '4L73', '4S0'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      flash: ['6M', '5M', '4M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grasswhistle: ['4L82'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '9L64'],\n      growth: ['9L1', '7L1', '7S5', '6L1', '6S3', '5L1', '4L1', '4S1'],\n      headbutt: ['4T'],\n      healingwish: ['9L91', '7L91', '6L91', '5L91', '4L91'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '7M', '6M', '5M', '4M'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      leafstorm: ['9M', '9L91', '7L91', '6L91', '5L91', '4L91'],\n      leechseed: ['9L19', '7L19', '6L19', '5L19', '5S2', '4L19', '4S1'],\n      luckychant: ['4L91'],\n      magicalleaf: ['9M', '9L10', '7L10', '6L10', '6S3', '5L10', '4L10', '4S1'],\n      mudslap: ['4T'],\n      naturalgift: ['7L46', '6L46', '5L46', '4M', '4L46'],\n      naturepower: ['7M', '6M'],\n      ominouswind: ['4T'],\n      petalblizzard: ['9M'],\n      playrough: ['9M', '9L46'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      quickattack: ['9L28', '7L28', '6L28', '5L28', '4L28'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      return: ['7M', '7S5', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      secretpower: ['6M', '4M'],\n      seedbomb: ['9M', '7T', '6T', '5T', '4T'],\n      seedflare: ['9L100', '7L100', '7S5', '6L100', '6S3', '6S4', '5L100', '5S2', '4L100', '4S0'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '6S4', '5M', '4M', '4S0'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      sweetkiss: ['9L82', '7L82', '6L82', '5L82', '4L82'],\n      sweetscent: ['9L37', '7L37', '6L37', '5L37', '5S2', '4L37'],\n      swift: ['9M', '4T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      synthesis: ['9L28', '7T', '7L28', '6T', '6L28', '5T', '5L28', '5S2', '4T', '4L28', '4S1'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      worryseed: ['9L55', '7T', '7L55', '6T', '6L55', '5T', '5L55', '4T', '4L55'],\n      zenheadbutt: ['9M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  ['shayminsky', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'arceus',\n    {\n      acidspray: ['9M'],\n      aerialace: ['7M', '6M', '5M', '4M'],\n      agility: ['9M'],\n      airslash: ['9M'],\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      aurasphere: ['9M'],\n      avalanche: ['9M', '4M'],\n      blastburn: ['6S2'],\n      blizzard: ['9M', '7M', '6M', '5M', '4M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M', '4M'],\n      brine: ['4M'],\n      bugbuzz: ['9M'],\n      bulkup: ['9M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      bulletseed: ['9M', '4M'],\n      calmmind: ['9M', '7M', '6M', '5M', '4M'],\n      chargebeam: ['9M', '7M', '6M', '5M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      cosmicpower: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      cut: ['6M', '5M', '4M'],\n      darkpulse: ['9M', '7M', '6M', '5T', '4M'],\n      dazzlinggleam: ['9M'],\n      defog: ['7T', '4M'],\n      dive: ['6M', '4T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M', '4M'],\n      dracometeor: ['9M', '7T', '6T', '5T', '4T'],\n      dragonclaw: ['9M', '7M', '6M', '5M', '4M'],\n      dragondance: ['9M'],\n      dragonpulse: ['9M', '7T', '6T', '5T', '4M'],\n      dragontail: ['9M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      earthpower: ['9M', '9L20', '7T', '7L20', '6T', '6L20', '6S2', '5T', '5L20', '4T', '4L20'],\n      earthquake: ['9M', '7M', '6M', '5M', '4M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      electricterrain: ['9M'],\n      endure: ['9M', '4M'],\n      energyball: ['9M', '7M', '6M', '5M', '4M'],\n      extremespeed: ['9L40', '7L40', '7S4', '6L40', '5L40', '4L40'],\n      facade: ['9M', '7M', '6M', '5M', '4M'],\n      fireblast: ['9M', '7M', '6M', '5M', '4M'],\n      flamethrower: ['9M', '7M', '6M', '5M', '4M'],\n      flareblitz: ['9M'],\n      flash: ['6M', '5M', '4M'],\n      flashcannon: ['9M', '7M', '6M', '5M', '4M'],\n      fly: ['9M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '7M', '6M', '5M', '4M'],\n      foulplay: ['9M'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      furycutter: ['4T'],\n      futuresight: ['9M', '9L60', '7L60', '6L60', '5L60', '4L60'],\n      gigadrain: ['9M', '7T', '6T', '5T', '4M'],\n      gigaimpact: ['9M', '7M', '6M', '5M', '4M'],\n      grassknot: ['9M', '7M', '6M', '5M', '4M'],\n      grassyterrain: ['9M'],\n      gravity: ['9M', '9L10', '7T', '7L10', '6T', '6L10', '5T', '5L10', '4T', '4L10'],\n      gunkshot: ['9M'],\n      hail: ['7M', '6M', '5M', '4M'],\n      headbutt: ['4T'],\n      healingwish: ['9L50'],\n      heatwave: ['9M', '7T', '6T', '5T', '4T'],\n      heavyslam: ['9M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      honeclaws: ['6M', '5M'],\n      hurricane: ['9M'],\n      hydrocannon: ['6S2'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M', '9L80', '7M', '7L80', '7S4', '6M', '6L80', '6S3', '5M', '5L80', '5S1', '4M', '4L80'],\n      hypervoice: ['9M', '9L30', '7T', '7L30', '6T', '6L30', '5T', '5L30', '4L30'],\n      icebeam: ['9M', '7M', '6M', '5M', '4M'],\n      icywind: ['9M', '7T', '6T', '5T', '4T'],\n      imprison: ['9M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '7T', '6T', '5T', '4T'],\n      ironhead: ['9M', '7T', '6T', '5T', '4T'],\n      irontail: ['7T', '6T', '5T', '4M'],\n      judgment: ['9L100', '7L100', '7S4', '6L100', '6S2', '6S3', '5L100', '5S1', '4L100', '4S0'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T', '4T'],\n      lightscreen: ['9M', '7M', '6M', '5M', '4M'],\n      liquidation: ['9M', '7T'],\n      magicalleaf: ['9M'],\n      magiccoat: ['7T', '6T', '5T', '4T'],\n      meteorbeam: ['9M'],\n      mistyterrain: ['9M'],\n      mudslap: ['4T'],\n      naturalgift: ['7L1', '6L1', '5L1', '4M', '4L1'],\n      ominouswind: ['4T'],\n      outrage: ['9M', '7T', '6T', '5T', '4T'],\n      overheat: ['9M', '7M', '6M', '5M', '4M'],\n      payback: ['7M', '6M', '5M', '4M'],\n      perishsong: ['9L90', '7L90', '6L90', '6S3', '5L90', '5S1', '4L90'],\n      phantomforce: ['9M'],\n      poisonjab: ['9M', '7M', '6M', '5M', '4M'],\n      powergem: ['9M'],\n      protect: ['9M', '7M', '6M', '5M', '4M'],\n      psychic: ['9M', '7M', '6M', '5M', '4M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M', '4M'],\n      psyshock: ['9M', '7M', '6M', '5M'],\n      punishment: ['7L1', '6L1', '5L1', '4L1'],\n      quash: ['7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M', '4M'],\n      recover: ['9L70', '7L70', '7S4', '6L70', '6S3', '5L70', '5S1', '4L70'],\n      recycle: ['7T', '6T', '5T', '4M'],\n      reflect: ['9M', '7M', '6M', '5M', '4M'],\n      refresh: ['7L50', '6L50', '5L50', '4L50'],\n      rest: ['9M', '7M', '6M', '5M', '4M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      roaroftime: ['4S0'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M', '4M'],\n      sandstorm: ['9M', '7M', '6M', '5M', '4M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M'],\n      secretpower: ['6M', '4M'],\n      seismictoss: ['9L1', '7L1', '6L1', '5L1', '4L1'],\n      shadowball: ['9M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M', '7M', '6M', '5M', '4M'],\n      shadowforce: ['4S0'],\n      shockwave: ['7T', '6T', '4M'],\n      signalbeam: ['7T', '6T', '5T', '4T'],\n      silverwind: ['4M'],\n      sleeptalk: ['9M', '7M', '6M', '5T', '4M'],\n      sludgebomb: ['9M', '7M', '6M', '5M', '4M'],\n      snarl: ['9M', '7M', '6M', '5M'],\n      snore: ['7T', '6T', '5T', '4T'],\n      solarbeam: ['9M', '7M', '6M', '5M', '4M'],\n      spacialrend: ['4S0'],\n      stealthrock: ['9M', '7T', '6T', '5T', '4M'],\n      steelbeam: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '7M', '6M', '5M', '4M'],\n      storedpower: ['9M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '7M', '6M', '5M', '4M'],\n      sunnyday: ['9M', '7M', '6M', '5M', '4M'],\n      supercellslam: ['9M'],\n      surf: ['9M', '7M', '6M', '5M', '4M'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      swift: ['9M', '4T'],\n      swordsdance: ['9M', '7M', '6M', '5M', '4M'],\n      tailwind: ['9M', '7T', '6T', '5T', '4T'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '7M', '6M', '5M', '4M'],\n      thunderbolt: ['9M', '7M', '6M', '5M', '4M'],\n      thunderwave: ['9M', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '7M', '6M', '5M', '4M'],\n      twister: ['4T'],\n      waterfall: ['9M', '7M', '6M', '5M', '4M'],\n      waterpulse: ['9M', '7T', '6T', '4M'],\n      whirlpool: ['4M'],\n      wildcharge: ['9M'],\n      willowisp: ['9M', '7M', '6M', '5M', '4M'],\n      workup: ['7M', '5M'],\n      xscissor: ['9M', '7M', '6M', '5M', '4M'],\n      zenheadbutt: ['9M', '7T', '6T', '5T', '4T']\n    }\n  ],\n  ['arceusbug', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusdark', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusdragon', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceuselectric', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusfairy', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusfighting', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusfire', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusflying', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusghost', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusgrass', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusground', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusice', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceuspoison', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceuspsychic', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceusrock', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceussteel', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['arceuswater', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'victini',\n    {\n      batonpass: ['8M'],\n      blazekick: ['8M'],\n      blueflare: ['5S2'],\n      boltstrike: ['5S2'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      brickbreak: ['8M', '7M', '6M', '5M'],\n      celebrate: ['7S6'],\n      chargebeam: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1', '7L1', '6L1', '6S3', '6S4', '5L1', '5S0'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      doubleedge: ['8L70', '7L65', '6L65', '5L65'],\n      doubleteam: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      encore: ['8M'],\n      endure: ['8M', '8L35', '7L9', '6L9', '6S4', '5L9', '5S0'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M'],\n      finalgambit: ['8L91', '7L81', '6L81', '5L81'],\n      fireblast: ['8M', '7M', '6M', '5M'],\n      firepunch: ['8M', '7T', '6T', '5T'],\n      firespin: ['8M'],\n      flameburst: ['7L41', '6L41', '5L41'],\n      flamecharge: ['8L1', '8S7', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      flamethrower: ['8M', '7M', '6M', '5M'],\n      flareblitz: ['8M', '8L77', '7L73', '6L73', '5L73'],\n      flash: ['6M', '5M'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      focusenergy: ['8M', '8L1', '7L1', '6L1', '5L1'],\n      frustration: ['7M', '6M', '5M'],\n      fusionbolt: ['5S1'],\n      fusionflare: ['5S1'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      glaciate: ['5S2'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      guardswap: ['8M'],\n      headbutt: ['8L28', '7L17', '6L17', '5L17'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      helpinghand: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      incinerate: ['8L14', '7L1', '6M', '6L1', '6S4', '5M', '5L1', '5S0'],\n      inferno: ['8L49', '7L57', '6L57', '5L57'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mysticalfire: ['8M'],\n      overheat: ['8M', '8L84', '7M', '7L97', '6M', '6L97', '5M', '5L97'],\n      powerswap: ['8M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychic: ['8M', '7M', '6M', '5M'],\n      psychup: ['7M', '6M', '5M'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      quickattack: ['8L1', '7L1', '6L1', '6S3', '6S4', '6S5', '5L1', '5S0'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['8M', '8L56', '7L33', '7S6', '6L33', '5L33'],\n      rocksmash: ['6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scorchingsands: ['8T'],\n      searingshot: ['8L63', '7L1', '6L1', '6S3', '5L1', '5S1'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['8M', '7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      speedswap: ['8M'],\n      storedpower: ['8M', '8L21', '7L89', '7S6', '6L89', '5L89'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '6S5', '5M'],\n      swift: ['8M'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      telekinesis: ['7T', '5M'],\n      thunder: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thunderpunch: ['8M', '7T', '6T', '5T'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      vcreate: ['8L1', '8S7', '7S6', '6S3', '6S5', '5S1', '5S2'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      willowisp: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '8L7', '8S7', '7M', '5M'],\n      zenheadbutt: ['8M', '8L42', '8S7', '7T', '7L49', '6T', '6L49', '5T', '5L49']\n    }\n  ],\n  [\n    'snivy',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      aromatherapy: ['5S0'],\n      attract: ['7M', '6M', '5M'],\n      bind: ['7T', '6T', '5T'],\n      bulletseed: ['9M'],\n      calmmind: ['9M', '7M', '6M', '5M'],\n      captivate: ['7E', '6E', '5E'],\n      coil: ['9L31', '7L31', '6L31', '5L31'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      defog: ['7T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M', '5M', '5S0'],\n      facade: ['9M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['9L37', '7T', '7L40', '6T', '6L40', '5T', '5L40'],\n      gigadrain: ['9M', '9L34', '7T', '7L34', '6T', '6L34', '5T', '5L34'],\n      glare: ['9E', '7E', '6E', '5E'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      grasspledge: ['9M', '7T', '6T', '5T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '7E', '6E'],\n      growth: ['9L13', '7L13', '6L13', '5L13', '5S0'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      irontail: ['9E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      leafblade: ['9L28', '7L28', '6L28', '5L28'],\n      leafstorm: ['9M', '9L40', '7L43', '6L43', '5L43'],\n      leaftornado: ['7L16', '6L16', '5L16'],\n      leechseed: ['9L19', '7L19', '6L19', '5L19'],\n      leer: ['9L4', '7L4', '6L4', '5L4'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '9L16', '7E', '6E', '5E'],\n      meanlook: ['9E', '7E', '6E', '5E'],\n      megadrain: ['9L22', '7L22', '6L22', '5L22'],\n      mirrorcoat: ['9E', '7E', '6E', '5E'],\n      naturalgift: ['7E', '6E', '5E'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      pursuit: ['7E', '6E', '5E'],\n      reflect: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T', '5T'],\n      slam: ['9L25', '7L25', '6L25', '5L25'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '7M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      sweetscent: ['9E', '7E', '6E', '5E'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M', '6M', '5M'],\n      synthesis: ['9E', '7T', '6T', '5T', '5S0'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      twister: ['9E', '7E', '6E', '5E'],\n      vinewhip: ['9L7', '7L7', '6L7', '5L7'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T', '5T'],\n      wrap: ['9L10', '7L10', '6L10', '5L10'],\n      wringout: ['7L37', '6L37', '5L37']\n    }\n  ],\n  [\n    'servine',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      attract: ['7M', '6M', '5M'],\n      bind: ['7T', '6T', '5T'],\n      bulletseed: ['9M'],\n      calmmind: ['9M', '7M', '6M', '5M'],\n      coil: ['9L36', '7L36', '6L36', '5L36'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      defog: ['7T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M', '5M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['9L44', '7T', '7L48', '6T', '6L48', '5T', '5L48'],\n      gigadrain: ['9M', '9L40', '7T', '7L40', '6T', '6L40', '5T', '5L40'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      grasspledge: ['9M', '7T', '6T', '5T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L13', '7L13', '6L13', '5L13'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      leafblade: ['9L32', '7L32', '6L32', '5L32'],\n      leafstorm: ['9M', '9L48', '7L52', '6L52', '5L52'],\n      leaftornado: ['7L16', '6L16', '5L16'],\n      leechseed: ['9L20', '7L20', '6L20', '5L20'],\n      leer: ['9L1', '7L1', '6L1', '5L1'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '9L16'],\n      megadrain: ['9L24', '7L24', '6L24', '5L24'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      reflect: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T', '5T'],\n      slam: ['9L28', '7L28', '6L28', '5L28'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '7M', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M', '6M', '5M'],\n      synthesis: ['7T', '6T', '5T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L1', '7L1', '6L1', '5L1'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T', '5T'],\n      wrap: ['9L1', '7L1', '6L1', '5L1'],\n      wringout: ['7L44', '6L44', '5L44']\n    }\n  ],\n  [\n    'serperior',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      attract: ['7M', '6M', '5M'],\n      bind: ['7T', '6T', '5T'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M'],\n      brutalswing: ['7M'],\n      bulletseed: ['9M'],\n      calmmind: ['9M', '7M', '6M', '5M'],\n      coil: ['9L38', '7L38', '6L38', '5L38'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      defog: ['7T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dragonpulse: ['9M', '7T', '6T', '5T'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M', '5M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frenzyplant: ['9M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['9L50', '7T', '7L56', '6T', '6L56', '5T', '5L56'],\n      gigadrain: ['9M', '9L44', '7T', '7L44', '6T', '6L44', '6S1', '5T', '5L44', '5S0'],\n      gigaimpact: ['9M', '7M', '6M', '5M'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      grasspledge: ['9M', '7T', '6T', '5T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L13', '7L13', '6L13', '5L13'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      holdback: ['6S1'],\n      hyperbeam: ['9M', '7M', '6M', '5M'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      leafblade: ['9L32', '7L32', '6L32', '5L32'],\n      leafstorm: ['9M', '9L56', '7L62', '6L62', '6S1', '5L62', '5S0'],\n      leaftornado: ['7L16', '6L16', '5L16'],\n      leechseed: ['9L20', '7L20', '6L20', '5L20', '5S0'],\n      leer: ['9L1', '7L1', '6L1', '5L1'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '9L16'],\n      megadrain: ['9L24', '7L24', '6L24', '5L24'],\n      naturepower: ['7M', '6M'],\n      outrage: ['9M', '7T', '6T', '5T'],\n      petalblizzard: ['9M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      reflect: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T', '5T'],\n      slam: ['9L28', '7L28', '6L28', '5L28'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M', '5S0'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M', '6M', '5M'],\n      synthesis: ['7T', '6T', '5T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L1', '7L1', '6L1', '5L1'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T', '5T'],\n      wrap: ['9L1', '7L1', '6L1', '5L1'],\n      wringout: ['7L50', '6L50', '6S1', '5L50']\n    }\n  ],\n  [\n    'tepig',\n    {\n      assurance: ['9L31', '7L31', '6L31', '5L31'],\n      attract: ['7M', '6M', '5M'],\n      bodyslam: ['9M', '7E', '6E', '5E'],\n      burnup: ['7E'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      curse: ['9M', '7E', '6E', '5E'],\n      defensecurl: ['9L13', '7L13', '6L13', '5L13'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L7', '7L7', '6L7', '5L7'],\n      endeavor: ['9M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      endure: ['9M', '9L9'],\n      facade: ['9M', '7M', '6M', '5M'],\n      fireblast: ['9M', '7M', '6M', '5M'],\n      firepledge: ['9M', '7T', '6T', '5T'],\n      firepunch: ['9M'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L15', '7M', '7L15', '6M', '6L15', '5M', '5L15'],\n      flamethrower: ['9M', '9L33', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      flareblitz: ['9M', '9L43', '7L43', '6L43', '5L43'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      gyroball: ['9M', '7M', '6M', '5M'],\n      headsmash: ['9L37', '7L37', '6L37', '5L37'],\n      heatcrash: ['9M', '9L27', '7L27', '6L27', '5L27'],\n      heatwave: ['9M', '7T', '6T', '5T'],\n      heavyslam: ['9M', '7E', '6E', '5E'],\n      helpinghand: ['9M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T'],\n      magnitude: ['7E', '6E', '5E'],\n      mudslap: ['9M'],\n      odorsleuth: ['7L9', '6L9', '5L9'],\n      overheat: ['9M', '7M', '6M', '5M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M', '9L39', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '7M', '6M', '5M'],\n      rollout: ['9L21', '7L21', '6L21', '5L21'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      smog: ['9L19', '7L19', '6L19', '5L19'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '7M', '6M', '5M'],\n      stompingtantrum: ['9M', '7T'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      suckerpunch: ['9E', '7E', '6E'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      superpower: ['9E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      tailwhip: ['9L3', '7L3', '6L3', '5L3'],\n      takedown: ['9M', '9L25', '7L25', '6L25', '5L25'],\n      taunt: ['9M', '7M', '6M', '5M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9E', '7E', '6E', '5E'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      willowisp: ['9M', '7M', '6M', '5M'],\n      workup: ['7M'],\n      yawn: ['9E', '7E', '6E', '5E'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'pignite',\n    {\n      armthrust: ['9L0', '7L1', '6L17', '5L17'],\n      assurance: ['9L36', '7L36', '6L36', '5L36'],\n      attract: ['7M', '6M', '5M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M'],\n      bulkup: ['9M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      closecombat: ['9M'],\n      coaching: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['9M'],\n      defensecurl: ['9L13', '7L13', '6L13', '5L13'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L1', '7L1', '6L1', '5L1'],\n      endeavor: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '9L1'],\n      facade: ['9M', '7M', '6M', '5M'],\n      fireblast: ['9M', '7M', '6M', '5M'],\n      firepledge: ['9M', '7T', '6T', '5T'],\n      firepunch: ['9M', '7T', '6T', '5T'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L15', '7M', '7L15', '6M', '6L15', '5M', '5L15'],\n      flamethrower: ['9M', '9L39', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      flareblitz: ['9M', '9L52', '7L52', '6L52', '5L52'],\n      fling: ['9M', '7M', '6M', '5M'],\n      focusblast: ['9M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      gyroball: ['9M', '7M', '6M', '5M'],\n      headsmash: ['9L44', '7L44', '6L44', '5L44'],\n      heatcrash: ['9M', '9L31', '7L31', '6L31', '5L31'],\n      heatwave: ['9M', '7T', '6T', '5T'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['9M'],\n      lowkick: ['9M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      mudslap: ['9M'],\n      odorsleuth: ['7L1', '6L1', '5L1'],\n      overheat: ['9M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['9M'],\n      roar: ['9M', '9L47', '7M', '7L47', '6M', '6L47', '5M', '5L47'],\n      rockslide: ['9M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '7M', '6M', '5M'],\n      rollout: ['9L23', '7L23', '6L23', '5L23'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      smog: ['9L20', '7L20', '6L20', '5L20'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '7M', '6M', '5M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      superpower: ['7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      tailwhip: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M', '9L28', '7L28', '6L28', '5L28'],\n      taunt: ['9M', '7M', '6M', '5M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      willowisp: ['9M', '7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'emboar',\n    {\n      armthrust: ['9L1', '7L1', '6L17', '5L17'],\n      assurance: ['9L38', '7L38', '6L38', '5L38'],\n      attract: ['7M', '6M', '5M'],\n      blastburn: ['9M', '7T', '6T', '5T'],\n      block: ['7T', '6T', '5T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M'],\n      bulkup: ['9M', '7M', '6M', '5M'],\n      bulldoze: ['9M', '7M', '6M', '5M'],\n      closecombat: ['9M'],\n      coaching: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      curse: ['9M'],\n      defensecurl: ['9L13', '7L13', '6L13', '5L13'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M'],\n      earthquake: ['9M', '7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      ember: ['9L1', '7L1', '6L1', '5L1'],\n      endeavor: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '9L1'],\n      facade: ['9M', '7M', '6M', '5M'],\n      fireblast: ['9M', '7M', '6M', '5M'],\n      firepledge: ['9M', '7T', '6T', '5T'],\n      firepunch: ['9M', '7T', '6T', '5T'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L15', '7M', '7L15', '6M', '6L15', '5M', '5L15'],\n      flamethrower: ['9M', '9L43', '7M', '7L43', '6M', '6L43', '5M', '5L43'],\n      flareblitz: ['9M', '9L62', '7L62', '6L62', '6S1', '5L62', '5S0'],\n      fling: ['9M', '7M', '6M', '5M'],\n      focusblast: ['9M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '7M', '6M', '5M'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      gyroball: ['9M', '7M', '6M', '5M'],\n      hammerarm: ['9L1', '7L1', '6L1', '5L1', '5S0'],\n      hardpress: ['9M'],\n      headsmash: ['9L50', '7L50', '6L50', '6S1', '5L50', '5S0'],\n      heatcrash: ['9M', '9L31', '7L31', '6L31', '5L31'],\n      heatwave: ['9M', '7T', '6T', '5T'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M'],\n      holdback: ['6S1'],\n      hyperbeam: ['9M', '7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M', '7T', '6T', '5T'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['9M'],\n      lowkick: ['9M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      mudslap: ['9M'],\n      odorsleuth: ['7L1', '6L1', '5L1'],\n      overheat: ['9M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['9M'],\n      roar: ['9M', '9L55', '7M', '7L55', '6M', '6L55', '5M', '5L55'],\n      rockslide: ['9M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '7M', '6M', '5M'],\n      rollout: ['9L23', '7L23', '6L23', '5L23'],\n      round: ['7M', '6M', '5M'],\n      scald: ['9M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      smog: ['9L20', '7L20', '6L20', '5L20'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '7M', '6M', '5M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      superpower: ['7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      tailwhip: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M', '9L28', '7L28', '6L28', '6S1', '5L28'],\n      taunt: ['9M', '7M', '6M', '5M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '7M', '6M', '5M', '5S0'],\n      willowisp: ['9M', '7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'oshawott',\n    {\n      aerialace: ['9M', '9L25', '7M', '6M', '5M'],\n      airslash: ['9M', '9E', '7E', '6E', '5E'],\n      aquacutter: ['9E'],\n      aquajet: ['9L29', '7L29', '6L29', '5L29'],\n      aquatail: ['9L35', '7T', '7L35', '6T', '6L35', '5T', '5L35'],\n      assurance: ['7E', '6E', '5E'],\n      attract: ['7M', '6M', '5M'],\n      avalanche: ['9M'],\n      blizzard: ['9M', '7M', '6M', '5M'],\n      brine: ['7E', '6E', '5E'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9E', '7E', '6E', '5E'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      detect: ['9E', '7E', '6E', '5E'],\n      dig: ['9M', '6M', '5M'],\n      dive: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      encore: ['9M', '9L31', '7L31', '6L31', '5L31'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '7M', '6M', '5M'],\n      fling: ['9M', '7M', '6M', '5M'],\n      flipturn: ['9M'],\n      focusenergy: ['9L13', '7L13', '6L13', '5L13'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['9L19', '7L19', '6L19', '5L19'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      hail: ['7M', '6M', '5M'],\n      helpinghand: ['9M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['9M', '9L43', '7L43', '6L43', '5L43'],\n      icebeam: ['9M', '7M', '6M', '5M'],\n      icywind: ['9M', '7T', '6T', '5T'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['9M', '9E'],\n      liquidation: ['9M'],\n      nightslash: ['9E', '7E', '6E', '5E'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      razorshell: ['9L17', '7L17', '6L17', '5L17'],\n      rest: ['9M', '7M', '6M', '5M'],\n      retaliate: ['9L37', '7L37', '6M', '6L37', '5M', '5L37'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['7L25', '6L25', '5L25'],\n      rocksmash: ['6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      sacredsword: ['9E', '7E'],\n      scald: ['7M', '6M', '5M'],\n      screech: ['9E', '7E', '6E', '5E'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      snowscape: ['9M'],\n      soak: ['9L11'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      surf: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '9L41', '7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      tailwhip: ['9L5', '7L5', '6L5', '5L5'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trumpcard: ['7E', '6E', '5E'],\n      waterfall: ['9M', '7M', '6M', '5M'],\n      watergun: ['9L7', '7L7', '6L7', '5L7'],\n      waterpledge: ['9M', '7T', '6T', '5T'],\n      waterpulse: ['9M', '9L23', '7T', '7L23', '6T', '6L23', '5L23'],\n      watersport: ['7L11', '6L11', '5L11'],\n      whirlpool: ['9M'],\n      workup: ['7M'],\n      xscissor: ['9M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'dewott',\n    {\n      aerialace: ['9M', '9L29', '7M', '6M', '5M'],\n      airslash: ['9M'],\n      aquajet: ['9L34', '7L34', '6L33', '5L33'],\n      aquatail: ['9L42', '7T', '7L42', '6T', '6L41', '5T', '5L41'],\n      attract: ['7M', '6M', '5M'],\n      avalanche: ['9M'],\n      blizzard: ['9M', '7M', '6M', '5M'],\n      brickbreak: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      dig: ['9M', '6M', '5M'],\n      dive: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      encore: ['9M', '9L37', '7L37', '6L36', '5L36'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '7M', '6M', '5M'],\n      fling: ['9M', '7M', '6M', '5M'],\n      flipturn: ['9M'],\n      focusenergy: ['9L13', '7L13', '6L13', '5L13'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['9L21', '7L21', '6L20', '5L20'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      hail: ['7M', '6M', '5M'],\n      helpinghand: ['9M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['9M', '9L53', '7L53', '6L52', '5L52'],\n      icebeam: ['9M', '7M', '6M', '5M'],\n      icywind: ['9M', '7T', '6T', '5T'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['9M'],\n      liquidation: ['9M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      razorshell: ['9L18', '7L18', '6L17', '5L17'],\n      rest: ['9M', '7M', '6M', '5M'],\n      retaliate: ['9L45', '7L45', '6M', '6L44', '5M', '5L44'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['7L29', '6L28', '5L28'],\n      rocksmash: ['6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      snowscape: ['9M'],\n      soak: ['9L1'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      surf: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '9L50', '7M', '7L50', '6M', '6L49', '5M', '5L49'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      tailwhip: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      vacuumwave: ['9M'],\n      waterfall: ['9M', '7M', '6M', '5M'],\n      watergun: ['9L1', '7L1', '6L1', '5L1'],\n      waterpledge: ['9M', '7T', '6T', '5T'],\n      waterpulse: ['9M', '9L26', '7T', '7L26', '6T', '6L25', '5L25'],\n      watersport: ['7L1', '6L1', '5L1'],\n      whirlpool: ['9M'],\n      workup: ['7M'],\n      xscissor: ['9M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'samurott',\n    {\n      aerialace: ['9M', '9L29', '7M', '6M', '5M'],\n      airslash: ['9M'],\n      aquajet: ['9L34', '7L34', '6L33', '5L33'],\n      aquatail: ['9L46', '7T', '7L46', '6T', '6L45', '5T', '5L45'],\n      attract: ['7M', '6M', '5M'],\n      avalanche: ['9M'],\n      blizzard: ['9M', '7M', '6M', '5M'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M', '6S1'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      dig: ['9M', '6M', '5M'],\n      dive: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dragontail: ['7M', '6M', '5M'],\n      drillrun: ['9M'],\n      encore: ['9M', '9L39', '7L39', '6L38', '5L38'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '7M', '6M', '5M'],\n      fling: ['9M', '7M', '6M', '5M'],\n      flipturn: ['9M'],\n      focusenergy: ['9L13', '7L13', '6L13', '5L13'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['9L21', '7L21', '6L20', '5L20'],\n      gigaimpact: ['9M', '7M', '6M', '5M'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      hail: ['7M', '6M', '5M'],\n      helpinghand: ['9M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      holdback: ['6S1'],\n      hydrocannon: ['9M', '7T', '6T', '5T'],\n      hydropump: ['9M', '9L63', '7L63', '6L62', '6S1', '5L62', '5S0'],\n      hyperbeam: ['9M', '7M', '6M', '5M'],\n      icebeam: ['9M', '7M', '6M', '5M', '5S0'],\n      icywind: ['9M', '7T', '6T', '5T'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      liquidation: ['9M', '7T'],\n      megahorn: ['9L1', '7L1', '6L1', '5L1', '5S0'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      razorshell: ['9L18', '7L18', '6L17', '6S1', '5L17'],\n      rest: ['9M', '7M', '6M', '5M'],\n      retaliate: ['9L51', '7L51', '6M', '6L50', '5M', '5L50'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['7L29', '6L28', '5L28'],\n      rocksmash: ['6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      slash: ['9L0', '7L1', '6L36', '5L36'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      smartstrike: ['9M', '7M'],\n      snore: ['7T', '6T', '5T'],\n      snowscape: ['9M'],\n      soak: ['9L1'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      superpower: ['7T', '6T', '5T', '5S0'],\n      surf: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '9L58', '7M', '7L58', '6M', '6L57', '5M', '5L57'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      tailwhip: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M'],\n      waterfall: ['9M', '7M', '6M', '5M'],\n      watergun: ['9L1', '7L1', '6L1', '5L1'],\n      waterpledge: ['9M', '7T', '6T', '5T'],\n      waterpulse: ['9M', '9L25', '7T', '7L25', '6T', '6L25', '5L25'],\n      watersport: ['7L1', '6L1', '5L1'],\n      whirlpool: ['9M'],\n      workup: ['7M'],\n      xscissor: ['9M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'samurotthisui',\n    {\n      aerialace: ['9M', '9L29'],\n      airslash: ['9M'],\n      aquajet: ['9L34'],\n      aquatail: ['9L46'],\n      avalanche: ['9M'],\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      ceaselessedge: ['9L0'],\n      chillingwater: ['9M'],\n      darkpulse: ['9M'],\n      dig: ['9M'],\n      drillrun: ['9M'],\n      encore: ['9M', '9L39'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      fling: ['9M'],\n      flipturn: ['9M'],\n      focusenergy: ['9L13'],\n      furycutter: ['9L21'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      helpinghand: ['9M'],\n      hydrocannon: ['9M'],\n      hydropump: ['9M', '9L63'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icywind: ['9M'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      liquidation: ['9M'],\n      megahorn: ['9L1'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      razorshell: ['9L18'],\n      rest: ['9M'],\n      retaliate: ['9L51'],\n      scaryface: ['9M'],\n      slash: ['9L1'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M'],\n      snarl: ['9M'],\n      snowscape: ['9M'],\n      substitute: ['9M'],\n      suckerpunch: ['9L1'],\n      surf: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '9L58'],\n      tackle: ['9L1'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M'],\n      waterfall: ['9M'],\n      watergun: ['9L1'],\n      waterpledge: ['9M'],\n      waterpulse: ['9M', '9L25'],\n      whirlpool: ['9M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'patrat',\n    {\n      afteryou: ['7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['7E', '6E', '5E'],\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['7L38', '6L33', '5L33'],\n      bide: ['7L8', '6L8', '5L8'],\n      bite: ['7L6', '6L6', '5L6'],\n      bulletseed: ['7E'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['7L16', '6L16', '5L16'],\n      cut: ['6M', '5M'],\n      detect: ['7L11', '6L11', '5L11'],\n      dig: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      facade: ['7M', '6M', '5M'],\n      flail: ['7E', '6E', '5E'],\n      fling: ['7M', '6M', '5M'],\n      focusenergy: ['7L26'],\n      foresight: ['7E', '6E', '5E'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['7M', '6M', '5M'],\n      gunkshot: ['7T', '6T', '5T'],\n      helpinghand: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperfang: ['7L31', '6L28', '5L28'],\n      hypnosis: ['7L18', '6L18', '5L18'],\n      irontail: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T'],\n      leer: ['7L3', '6L3', '5L3'],\n      lowkick: ['7T', '6T', '5T'],\n      meanlook: ['7L36', '6L31', '5L31'],\n      nastyplot: ['7L33'],\n      protect: ['7M', '6M', '5M'],\n      pursuit: ['7E', '6E', '5E'],\n      raindance: ['7M', '6M', '5M'],\n      rest: ['7M', '6M', '5M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['7E', '6E', '5E'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['7L13', '6L13', '5L13'],\n      screech: ['7E', '6E', '5E'],\n      secretpower: ['6M'],\n      seedbomb: ['7T', '6T', '5T'],\n      shadowball: ['7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      slam: ['7L41', '6L36', '5L36'],\n      sleeptalk: ['7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      substitute: ['7M', '6M', '5M'],\n      sunnyday: ['7M', '6M', '5M'],\n      superfang: ['7T', '7L21', '6T', '6L21', '5T', '5L21'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['7M', '6M', '5M'],\n      tackle: ['7L1', '6L1', '5L1'],\n      tearfullook: ['7E'],\n      thunderbolt: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      workup: ['7M', '7L28', '6L26', '5M', '5L26'],\n      zenheadbutt: ['7T', '6T', '5T']\n    }\n  ],\n  [\n    'watchog',\n    {\n      afteryou: ['7T', '7L25', '6T', '6L25', '5T', '5L25'],\n      aquatail: ['7T', '6T', '5T'],\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['7L46', '6L39', '5L39'],\n      bide: ['7L8', '6L8', '5L8'],\n      bite: ['7L1', '6L1', '5L1'],\n      confide: ['7M', '6M'],\n      confuseray: ['7L1', '6L20', '5L20'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['7L16', '6L16', '5L16'],\n      cut: ['6M', '5M'],\n      detect: ['7L11', '6L11', '5L11'],\n      dig: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      facade: ['7M', '6M', '5M'],\n      firepunch: ['7T', '6T', '5T'],\n      flamethrower: ['7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      fling: ['7M', '6M', '5M'],\n      focusblast: ['7M', '6M', '5M'],\n      focusenergy: ['7L29'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['7M', '6M', '5M'],\n      grassknot: ['7M', '6M', '5M'],\n      gunkshot: ['7T', '6T', '5T'],\n      helpinghand: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['7M', '6M', '5M'],\n      hyperfang: ['7L36', '6L32', '5L32'],\n      hypnosis: ['7L18', '6L18', '5L18'],\n      icepunch: ['7T', '6T', '5T'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T'],\n      leer: ['7L1', '6L1', '5L1'],\n      lightscreen: ['7M', '6M', '5M'],\n      lowkick: ['7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      meanlook: ['7L43', '6L36', '5L36'],\n      nastyplot: ['7L39'],\n      poweruppunch: ['6M'],\n      protect: ['7M', '6M', '5M'],\n      psychup: ['7M', '7L32', '6M', '6L29', '5M', '5L29'],\n      raindance: ['7M', '6M', '5M'],\n      rest: ['7M', '6M', '5M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rototiller: ['7L1', '6L1'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['7L13', '6L13', '5L13'],\n      secretpower: ['6M'],\n      seedbomb: ['7T', '6T', '5T'],\n      shadowball: ['7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      slam: ['7L50', '6L43', '5L43'],\n      sleeptalk: ['7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      stompingtantrum: ['7T'],\n      strength: ['6M', '5M'],\n      substitute: ['7M', '6M', '5M'],\n      sunnyday: ['7M', '6M', '5M'],\n      superfang: ['7T', '7L22', '6T', '6L22', '5T', '5L22'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['7M', '6M', '5M'],\n      tackle: ['7L1', '6L1', '5L1'],\n      thunder: ['7M', '6M', '5M'],\n      thunderbolt: ['7M', '6M', '5M'],\n      thunderpunch: ['7T', '6T', '5T'],\n      thunderwave: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['7T', '6T', '5T']\n    }\n  ],\n  [\n    'lillipup',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      afteryou: ['8E', '7T', '7E', '6T', '6E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      babydolleyes: ['8L17', '7L10', '6L10'],\n      bite: ['8L8', '7L8', '6L8', '5L8'],\n      charm: ['8M', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      covet: ['8E', '7T', '6T', '5T'],\n      crunch: ['8M', '8L24', '7L22', '6L22', '5L22'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['8M', '7E', '6E', '5E'],\n      facade: ['8M', '7M', '6M', '5M'],\n      firefang: ['8M', '7E', '6E', '5E'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '8L48', '7M', '7L40', '6M', '6L40', '5M', '5L40'],\n      helpinghand: ['8M', '8L32', '7T', '7L12', '6T', '6L12', '5T', '5L12'],\n      hiddenpower: ['7M', '6M', '5M'],\n      howl: ['8E', '7E', '6E', '5E'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icefang: ['8M', '7E', '6E', '5E'],\n      lastresort: ['8L44', '7T', '7L36', '6T', '6L36', '5T', '5L36'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      lick: ['8E', '7E', '6E', '5E'],\n      mudslap: ['8E', '7E', '6E', '5E'],\n      odorsleuth: ['7L5', '6L5', '5L5'],\n      payback: ['8M'],\n      playrough: ['8M', '8L20', '7L45', '6L45'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychicfangs: ['8M', '7E'],\n      pursuit: ['7E', '6E', '5E'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '8L12', '7L29', '6M', '6L29', '5M', '5L29'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['8M', '8L36', '7L33', '6L33', '5L33'],\n      roar: ['8L40', '7M', '7L26', '6M', '6L26', '5M', '5L26'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['7E', '6E', '5E'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      takedown: ['8L28', '7L15', '6L15', '5L15'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thunderfang: ['8M', '7E', '6E', '5E'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '8L4', '7M', '7L19', '6L19', '5M', '5L19'],\n      yawn: ['8E', '7E', '6E', '5E']\n    }\n  ],\n  [\n    'herdier',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      afteryou: ['7T', '6T'],\n      attract: ['8M', '7M', '6M', '5M'],\n      babydolleyes: ['8L19'],\n      bite: ['8L1', '7L1', '6L1', '5L1'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['8M', '8L30', '7L24', '6L24', '5L24'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      firefang: ['8M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '8L66', '7M', '7L47', '6M', '6L47', '5M', '5L47'],\n      helpinghand: ['8M', '8L42', '7T', '7L12', '6T', '6L12', '5T', '5L12'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icefang: ['8M'],\n      lastresort: ['8L60', '7T', '7L42', '6T', '6L42', '5T', '5L42'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      odorsleuth: ['7L1', '6L1', '5L1'],\n      payback: ['8M', '7M', '6M', '5M'],\n      playrough: ['8M', '8L24', '7L52', '6L52'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychicfangs: ['8M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '8L12', '7L33', '6M', '6L33', '5M', '5L33'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['8M', '8L48', '7L38', '6L38', '5L38'],\n      roar: ['8L54', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      takedown: ['8L36', '7L15', '6L15', '5L15'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thunderfang: ['8M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '8L1', '7M', '7L20', '6L20', '5M', '5L20']\n    }\n  ],\n  [\n    'stoutland',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      afteryou: ['7T', '6T'],\n      attract: ['8M', '7M', '6M', '5M'],\n      babydolleyes: ['8L19'],\n      bite: ['8L1', '7L1', '6L1', '5L1'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['8M', '8L30', '7L24', '6L24', '5L24'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      firefang: ['8M', '8L1', '7L1', '6L1', '5L1'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '8L78', '7M', '7L59', '6M', '6L59', '5M', '5L59'],\n      helpinghand: ['8M', '8L46', '7T', '7L12', '6T', '6L12', '5T', '5L12'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      icefang: ['8M', '8L1', '7L1', '6L1', '5L1'],\n      ironhead: ['8M', '7T', '6T', '5T'],\n      lastresort: ['8L70', '7T', '7L51', '6T', '6L51', '5T', '5L51'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      odorsleuth: ['7L1', '6L1', '5L1'],\n      payback: ['8M', '7M', '6M', '5M'],\n      playrough: ['8M', '8L24', '7L63', '6L63'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychicfangs: ['8M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '8L12', '7L36', '6M', '6L36', '5M', '5L36'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['8M', '8L54', '7L42', '6L42', '5L42'],\n      roar: ['8L62', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      takedown: ['8L38', '7L15', '6L15', '5L15'],\n      thunder: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thunderfang: ['8M', '8L1', '7L1', '6L1', '5L1'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '8L1', '7M', '7L20', '6L20', '5M', '5L20']\n    }\n  ],\n  [\n    'purrloin',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      assist: ['7L6', '6L6', '5L6'],\n      assurance: ['8M', '8L21', '7L28', '6L28', '5L28'],\n      attract: ['8M', '7M', '6M', '5M'],\n      batonpass: ['8M'],\n      captivate: ['7L33', '6L33', '5L33'],\n      charm: ['8M', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      copycat: ['8E', '7E', '6E'],\n      covet: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      cut: ['6M', '5M'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      doubleteam: ['8E', '7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      encore: ['8M', '7E', '6E', '5E'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      fakeout: ['8L5', '7L21', '6L21', '5L21'],\n      faketears: ['8M', '7E', '6E', '5E'],\n      feintattack: ['7E', '6E', '5E'],\n      foulplay: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['8L12', '7L12', '6L12', '5L12'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      growl: ['8L1', '7L3', '6L3', '5L3'],\n      gunkshot: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['8L24', '7L24', '6M', '6L24', '5M', '5L24'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      lashout: ['8T'],\n      nastyplot: ['8M', '8L32', '7L42', '6L42', '5L42'],\n      nightslash: ['8L36', '7L37', '6L37', '5L37'],\n      payback: ['8M', '7M', '6M', '5M'],\n      payday: ['8M', '7E', '6E', '5E'],\n      playrough: ['8M', '8L40', '7L49', '6L49'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychup: ['7M', '6M', '5M'],\n      pursuit: ['7L15', '6L15', '5L15'],\n      quickattack: ['8E'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L4', '7L10', '6L10', '5L10'],\n      scratch: ['8L1', '7L1', '6L1', '5L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '7T', '6T', '5T'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      slash: ['8E', '7L30', '6L30', '5L30'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snatch: ['7T', '7L39', '6T', '6L39', '5T', '5L39'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      suckerpunch: ['8L28', '7L46', '6L46', '5L46'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      thief: ['8M', '7M', '6M', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      torment: ['8L16', '7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      yawn: ['8E', '7E', '6E', '5E']\n    }\n  ],\n  [\n    'liepard',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      assist: ['7L1', '6L1', '5L1'],\n      assurance: ['8M', '8L23', '7L31', '6L31', '5L31'],\n      attract: ['8M', '7M', '6M', '5M'],\n      batonpass: ['8M'],\n      burningjealousy: ['8T'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      encore: ['8M', '5S0'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      fakeout: ['8L1', '7L22', '6L22', '5L22', '5S0'],\n      faketears: ['8M'],\n      foulplay: ['8M', '7T', '6T', '5T', '5S0'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['8L12', '7L12', '6L12', '5L12'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      growl: ['8L1', '7L1', '6L1', '5L1'],\n      gunkshot: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['8L28', '7L26', '6M', '6L26', '5M', '5L26'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      lashout: ['8T'],\n      nastyplot: ['8M', '8L40', '7L50', '6L50', '5L50'],\n      nightslash: ['8L46', '7L43', '6L43', '5L43'],\n      payback: ['8M', '7M', '6M', '5M'],\n      payday: ['8M'],\n      playrough: ['8M', '8L52', '7L58', '6L58'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychocut: ['8M'],\n      psychup: ['7M', '6M', '5M'],\n      pursuit: ['7L15', '6L15', '5L15'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L1', '6L1', '5L1'],\n      scratch: ['8L1', '7L1', '6L1', '5L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '7T', '6T', '5T'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      skittersmack: ['8T'],\n      slash: ['7L34', '6L34', '5L34'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snatch: ['7T', '7L47', '6T', '6L47', '5T', '5L47'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      suckerpunch: ['8L34', '7L55', '6L55', '5L55'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M', '5S0'],\n      swift: ['8M'],\n      taunt: ['8M', '7M', '7L38', '6M', '6L38', '5M', '5L38'],\n      thief: ['8M', '7M', '6M', '5M'],\n      throatchop: ['8M', '7T'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      torment: ['8L16', '7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      uturn: ['8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'pansage',\n    {\n      acrobatics: ['7M', '7L31', '6M', '6L31', '5M', '5L31'],\n      astonish: ['7E', '6E', '5E'],\n      attract: ['7M', '6M', '5M'],\n      bite: ['7L19', '6L19', '5L19', '5S0'],\n      bulletseed: ['7E', '6E', '5E', '5S0'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      crunch: ['7L43', '6L43', '5L43'],\n      cut: ['6M', '5M'],\n      dig: ['6M', '5M', '5S0', '5S2'],\n      disarmingvoice: ['7E', '6E'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      energyball: ['7M', '6M', '5M'],\n      facade: ['7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      fling: ['7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['7L13', '6L13', '5L13'],\n      gastroacid: ['7T', '6T'],\n      gigadrain: ['7T', '6T', '5T'],\n      grassknot: ['7M', '7L34', '6M', '6L34', '5M', '5L34'],\n      grasspledge: ['7T'],\n      grasswhistle: ['7E', '6E', '5E'],\n      gunkshot: ['7T', '6T', '5T'],\n      helpinghand: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      leafstorm: ['7E', '6E', '5E', '5S1'],\n      leechseed: ['7L16', '6L16', '5L16'],\n      leer: ['7L4', '6L4', '5L4', '5S1'],\n      lick: ['7L7', '6L7', '5L7', '5S1'],\n      lowkick: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      lowsweep: ['7M', '6M', '5M'],\n      magicalleaf: ['7E', '6E', '5E'],\n      nastyplot: ['7E', '6E', '5E'],\n      naturalgift: ['7L40', '6L40', '5L40'],\n      naturepower: ['7M', '6M'],\n      payback: ['7M', '6M', '5M'],\n      playnice: ['7L1', '6L1'],\n      protect: ['7M', '6M', '5M'],\n      recycle: ['7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      rest: ['7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['7M', '6M', '5M', '5S2'],\n      roleplay: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      seedbomb: ['7T', '7L22', '6T', '6L22', '5T', '5L22', '5S2'],\n      shadowclaw: ['7M', '6M', '5M'],\n      sleeptalk: ['7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['7M', '6M', '5M', '5S0', '5S2'],\n      spikyshield: ['7E'],\n      substitute: ['7M', '6M', '5M'],\n      sunnyday: ['7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      synthesis: ['7T', '6T', '5T'],\n      taunt: ['7M', '6M', '5M'],\n      thief: ['7M', '6M', '5M'],\n      tickle: ['7E', '6E', '5E'],\n      torment: ['7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['7T', '6T', '5T'],\n      vinewhip: ['7L10', '6L10', '5L10', '5S1'],\n      workup: ['7M', '5M'],\n      worryseed: ['7T', '6T', '5T']\n    }\n  ],\n  [\n    'simisage',\n    {\n      acrobatics: ['7M', '6M', '5M'],\n      attract: ['7M', '6M', '5M'],\n      brickbreak: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      dig: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      energyball: ['7M', '6M', '5M'],\n      facade: ['7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      fling: ['7M', '6M', '5M'],\n      focusblast: ['7M', '6M', '5M'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['7L1', '6L1', '5L1'],\n      gastroacid: ['7T', '6T'],\n      gigadrain: ['7T', '6T', '5T'],\n      gigaimpact: ['7M', '6M', '5M'],\n      grassknot: ['7M', '6M', '5M'],\n      grasspledge: ['7T'],\n      gunkshot: ['7T', '6T', '5T'],\n      helpinghand: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['7M', '6M', '5M'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      leer: ['7L1', '6L1', '5L1'],\n      lick: ['7L1', '6L1', '5L1'],\n      lowkick: ['7T', '6T', '5T'],\n      lowsweep: ['7M', '6M', '5M'],\n      naturepower: ['7M', '6M'],\n      payback: ['7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      protect: ['7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      rest: ['7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      shadowclaw: ['7M', '6M', '5M'],\n      sleeptalk: ['7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['7M', '6M', '5M'],\n      substitute: ['7M', '6M', '5M'],\n      sunnyday: ['7M', '6M', '5M'],\n      superpower: ['7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      synthesis: ['7T', '6T', '5T'],\n      taunt: ['7M', '6M', '5M'],\n      thief: ['7M', '6M', '5M'],\n      throatchop: ['7T'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['7T', '6T', '5T'],\n      workup: ['7M', '5M'],\n      worryseed: ['7T', '6T', '5T']\n    }\n  ],\n  [\n    'pansear',\n    {\n      acrobatics: ['7M', '7L31', '6M', '6L31', '5M', '5L31'],\n      amnesia: ['7L25', '6L25', '5L25'],\n      astonish: ['7E', '6E', '5E'],\n      attract: ['7M', '6M', '5M'],\n      belch: ['7E'],\n      bite: ['7L19', '6L19', '5L19'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      crunch: ['7L43', '6L43', '5L43'],\n      cut: ['6M', '5M'],\n      dig: ['6M', '5M'],\n      disarmingvoice: ['7E', '6E'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      facade: ['7M', '6M', '5M'],\n      fireblast: ['7M', '7L34', '6M', '6L34', '5M', '5L34'],\n      firepledge: ['7T'],\n      firepunch: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      firespin: ['7E', '6E', '5E'],\n      flameburst: ['7L22', '6L22', '5L22'],\n      flamecharge: ['7M', '6M', '5M'],\n      flamethrower: ['7M', '6M', '5M'],\n      flareblitz: ['7E'],\n      fling: ['7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['7L13', '6L13', '5L13'],\n      gastroacid: ['7T', '6T'],\n      grassknot: ['7M', '6M', '5M'],\n      gunkshot: ['7T', '6T', '5T'],\n      heatwave: ['7T', '7E', '6T', '6E', '5T', '5E', '5S0'],\n      helpinghand: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['7L10', '6M', '6L10', '5M', '5L10', '5S0'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      leer: ['7L4', '6L4', '5L4', '5S0'],\n      lick: ['7L7', '6L7', '5L7', '5S0'],\n      lowkick: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      lowsweep: ['7M', '6M', '5M'],\n      nastyplot: ['7E', '6E', '5E'],\n      naturalgift: ['7L40', '6L40', '5L40'],\n      overheat: ['7M', '6M', '5M'],\n      payback: ['7M', '6M', '5M'],\n      playnice: ['7L1', '6L1'],\n      protect: ['7M', '6M', '5M'],\n      recycle: ['7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      rest: ['7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['7M', '6M', '5M'],\n      roleplay: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      round: ['7M', '6M', '5M'],\n      scratch: ['7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      shadowclaw: ['7M', '6M', '5M'],\n      sleeptalk: ['7M', '7E', '6M', '6E', '5T', '5E'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['7M', '6M', '5M'],\n      substitute: ['7M', '6M', '5M'],\n      sunnyday: ['7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['7M', '6M', '5M'],\n      thief: ['7M', '6M', '5M'],\n      tickle: ['7E', '6E', '5E'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['7T', '6T', '5T'],\n      willowisp: ['7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      yawn: ['7L16', '6L16', '5L16']\n    }\n  ],\n  [\n    'simisear',\n    {\n      acrobatics: ['7M', '6M', '5M'],\n      attract: ['7M', '6M', '5M'],\n      brickbreak: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      dig: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      facade: ['7M', '6M', '5M'],\n      fireblast: ['7M', '6M', '5M'],\n      firepledge: ['7T'],\n      firepunch: ['7T', '6T', '5T'],\n      flameburst: ['7L1', '6L1', '5L1'],\n      flamecharge: ['7M', '6M', '5M'],\n      flamethrower: ['7M', '6M', '5M'],\n      fling: ['7M', '6M', '5M'],\n      focusblast: ['7M', '6M', '5M'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['7L1', '6L1', '5L1'],\n      gastroacid: ['7T', '6T'],\n      gigaimpact: ['7M', '6M', '6S0', '5M'],\n      grassknot: ['7M', '6M', '5M'],\n      gunkshot: ['7T', '6T', '5T'],\n      heatwave: ['7T', '6T', '5T'],\n      helpinghand: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '6S0', '5M'],\n      hyperbeam: ['7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      leer: ['7L1', '6L1', '5L1'],\n      lick: ['7L1', '6L1', '5L1'],\n      lowkick: ['7T', '6T', '5T'],\n      lowsweep: ['7M', '6M', '5M'],\n      overheat: ['7M', '6M', '5M'],\n      payback: ['7M', '6M', '5M'],\n      poweruppunch: ['6M', '6S0'],\n      protect: ['7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      rest: ['7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowclaw: ['7M', '6M', '5M'],\n      sleeptalk: ['7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['7M', '6M', '5M'],\n      substitute: ['7M', '6M', '5M'],\n      sunnyday: ['7M', '6M', '5M'],\n      superpower: ['7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['7M', '6M', '5M'],\n      thief: ['7M', '6M', '5M'],\n      throatchop: ['7T'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['7T', '6T', '5T'],\n      willowisp: ['7M', '6M', '5M'],\n      workup: ['7M', '6S0', '5M']\n    }\n  ],\n  [\n    'panpour',\n    {\n      acrobatics: ['7M', '7L31', '6M', '6L31', '5M', '5L31'],\n      aquaring: ['7E', '6E', '5E'],\n      aquatail: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      astonish: ['7E', '6E', '5E'],\n      attract: ['7M', '6M', '5M'],\n      bite: ['7L19', '6L19', '5L19'],\n      blizzard: ['7M', '6M', '5M'],\n      brine: ['7L34', '6L34', '5L34'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      crunch: ['7L43', '6L43', '5L43'],\n      cut: ['6M', '5M'],\n      dig: ['6M', '5M'],\n      disarmingvoice: ['7E', '6E'],\n      dive: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      facade: ['7M', '6M', '5M'],\n      fling: ['7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['7L13', '6L13', '5L13'],\n      gastroacid: ['7T', '6T'],\n      grassknot: ['7M', '6M', '5M'],\n      gunkshot: ['7T', '6T', '5T'],\n      hail: ['7M', '6M', '5M'],\n      helpinghand: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hydropump: ['7E', '6E', '5E', '5S0'],\n      icebeam: ['7M', '6M', '5M'],\n      icepunch: ['7T', '6T', '5T'],\n      icywind: ['7T', '6T', '5T'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      leer: ['7L4', '6L4', '5L4', '5S0'],\n      lick: ['7L7', '6L7', '5L7', '5S0'],\n      lowkick: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      lowsweep: ['7M', '6M', '5M'],\n      mudsport: ['7E', '6E', '5E'],\n      nastyplot: ['7E', '6E', '5E'],\n      naturalgift: ['7L40', '6L40', '5L40'],\n      payback: ['7M', '6M', '5M'],\n      playnice: ['7L1', '6L1'],\n      protect: ['7M', '6M', '5M'],\n      raindance: ['7M', '6M', '5M'],\n      recycle: ['7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      rest: ['7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['7M', '6M', '5M'],\n      roleplay: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      scratch: ['7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      shadowclaw: ['7M', '6M', '5M'],\n      sleeptalk: ['7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      substitute: ['7M', '6M', '5M'],\n      surf: ['7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      thief: ['7M', '6M', '5M'],\n      tickle: ['7E', '6E', '5E'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['7T', '6T', '5T'],\n      waterfall: ['7M', '6M', '5M'],\n      watergun: ['7L10', '6L10', '5L10', '5S0'],\n      waterpledge: ['7T'],\n      waterpulse: ['7T', '6T'],\n      watersport: ['7L16', '6L16', '5L16'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'simipour',\n    {\n      acrobatics: ['7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      attract: ['7M', '6M', '5M'],\n      blizzard: ['7M', '6M', '5M'],\n      brickbreak: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      dig: ['6M', '5M'],\n      dive: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      facade: ['7M', '6M', '5M'],\n      fling: ['7M', '6M', '5M'],\n      focusblast: ['7M', '6M', '5M'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['7L1', '6L1', '5L1'],\n      gastroacid: ['7T', '6T'],\n      gigaimpact: ['7M', '6M', '5M'],\n      grassknot: ['7M', '6M', '5M'],\n      gunkshot: ['7T', '6T', '5T'],\n      hail: ['7M', '6M', '5M'],\n      helpinghand: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['7M', '6M', '5M'],\n      icebeam: ['7M', '6M', '5M'],\n      icepunch: ['7T', '6T', '5T'],\n      icywind: ['7T', '6T', '5T'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      leer: ['7L1', '6L1', '5L1'],\n      lick: ['7L1', '6L1', '5L1'],\n      lowkick: ['7T', '6T', '5T'],\n      lowsweep: ['7M', '6M', '5M'],\n      payback: ['7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      protect: ['7M', '6M', '5M'],\n      raindance: ['7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      rest: ['7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      secretpower: ['6M'],\n      shadowclaw: ['7M', '6M', '5M'],\n      sleeptalk: ['7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      substitute: ['7M', '6M', '5M'],\n      superpower: ['7T', '6T', '5T'],\n      surf: ['7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['7M', '6M', '5M'],\n      thief: ['7M', '6M', '5M'],\n      throatchop: ['7T'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['7T', '6T', '5T'],\n      waterfall: ['7M', '6M', '5M'],\n      waterpledge: ['7T'],\n      waterpulse: ['7T', '6T'],\n      workup: ['7M', '5M']\n    }\n  ],\n  [\n    'munna',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      barrier: ['7E', '6E', '5E'],\n      batonpass: ['7E', '6E', '5E'],\n      calmmind: ['8M', '8L28', '7M', '7L35', '6M', '6L35', '5M', '5L35'],\n      chargebeam: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      curse: ['8E', '7E', '6E', '5E'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      defensecurl: ['8L1', '7L1', '6L1', '5L1'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['8L44', '7M', '7L41', '7S0', '6M', '6L41', '5M', '5L41'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['8M', '8L48', '7L31', '6L31', '5L31'],\n      gravity: ['7T', '6T', '5T'],\n      guardswap: ['8M'],\n      gyroball: ['8M', '7M', '6M', '5M'],\n      healbell: ['7T', '6T', '5T'],\n      healingwish: ['8E', '7E', '6E'],\n      helpinghand: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypnosis: ['8L4', '7L19', '7S0', '6L19', '5L19'],\n      imprison: ['8M', '8L12', '7L13', '6L13', '5L13'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      luckychant: ['7L5', '6L5', '5L5'],\n      magiccoat: ['8L20', '7T', '7E', '6T', '6E', '5T', '5E'],\n      moonblast: ['8L40'],\n      moonlight: ['8L16', '7L17', '6L17', '5L17'],\n      nightmare: ['7L29', '6L29', '5L29'],\n      painsplit: ['7T', '6T', '5T'],\n      powerswap: ['8M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psybeam: ['8L8', '7L11', '6L11', '5L11'],\n      psychic: ['8M', '8L36', '7M', '7L37', '6M', '6L37', '5M', '5L37'],\n      psychup: ['7M', '6M', '5M'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      psywave: ['7L1', '6L1', '5L1'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '7S0', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['7E', '6M', '6E', '5E'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['8M', '7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '7E', '7S0', '6M', '6E', '5T', '5E'],\n      snore: ['8M', '7T', '6T', '5T'],\n      sonicboom: ['7E', '6E', '5E'],\n      storedpower: ['8M', '8L1', '7L47', '6L47', '5L47'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M', '7E', '6E', '5E'],\n      synchronoise: ['7L25', '6L25', '5L25'],\n      telekinesis: ['7T', '7L43', '6L43', '5M', '5L43'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      wonderroom: ['8M', '8L52', '7T', '6T', '5T'],\n      worryseed: ['7T', '6T', '5T'],\n      yawn: ['8L32', '7L7', '6L7', '5L7'],\n      zenheadbutt: ['8M', '8L24', '7T', '7L23', '6T', '6L23', '5T', '5L23']\n    }\n  ],\n  [\n    'musharna',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      calmmind: ['8M', '8L1', '7M', '6M', '5M'],\n      chargebeam: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      defensecurl: ['8L1', '7L1', '6L1', '5L1', '5S0'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['8L1', '7M', '6M', '5M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['8M', '8L1'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      gravity: ['7T', '6T', '5T'],\n      guardswap: ['8M'],\n      gyroball: ['8M', '7M', '6M', '5M'],\n      healbell: ['7T', '6T', '5T'],\n      helpinghand: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      hypnosis: ['8L1', '7L1', '6L1', '5L1', '5S0'],\n      imprison: ['8M', '8L1'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      luckychant: ['7L1', '6L1', '5L1', '5S0'],\n      magiccoat: ['8L1', '7T', '6T', '5T'],\n      mistyexplosion: ['8T'],\n      moonblast: ['8L1'],\n      moonlight: ['8L1'],\n      painsplit: ['7T', '6T', '5T'],\n      powerswap: ['8M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psybeam: ['8L1', '7L1', '6L1', '5L1', '5S0'],\n      psychic: ['8M', '8L1', '7M', '6M', '5M'],\n      psychicterrain: ['8M', '8L1', '7L1'],\n      psychup: ['7M', '6M', '5M'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['8M', '7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      storedpower: ['8M', '8L1'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M'],\n      telekinesis: ['7T', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      wonderroom: ['8M', '8L1', '7T', '6T', '5T'],\n      worryseed: ['7T', '6T', '5T'],\n      yawn: ['8L1'],\n      zenheadbutt: ['8M', '8L1', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'pidove',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['8M'],\n      aircutter: ['8L16', '7L15', '6L15', '5L15', '5S0'],\n      airslash: ['8M', '8L32', '7L29', '6L29', '5L29'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bestow: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      defog: ['8E', '7T'],\n      detect: ['8L28', '7L22', '6L22', '5L22'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualwingbeat: ['8T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '7L43', '6M', '6L43', '5M', '5L43'],\n      featherdance: ['8L24', '7L36', '6L36', '5L36'],\n      fly: ['8M', '7M', '6M', '5M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M', '5M'],\n      growl: ['8L1', '7L4', '6L4', '5L4'],\n      gust: ['8L1', '7L1', '6L1', '5L1', '5D', '5S0'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypnosis: ['8E', '7E', '6E', '5E', '5D'],\n      leer: ['8L4', '7L8', '6L8', '5L8'],\n      luckychant: ['7E', '6E', '5E'],\n      morningsun: ['8E', '7E', '6E', '5E', '5D'],\n      nightslash: ['8E', '7E', '6E'],\n      pluck: ['5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      quickattack: ['8L8', '7L11', '6L11', '5L11', '5S0'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      razorwind: ['7L32', '6L32', '5L32'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roost: ['8L36', '7M', '7L18', '6M', '6L18', '5T', '5L18'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      skyattack: ['8L44', '7T', '7L50', '6T', '6L50', '5T', '5L50'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelwing: ['8M', '7M', '7E', '6M', '6E', '5E'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['8L20', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      swift: ['8M'],\n      tailwind: ['8L40', '7T', '7L46', '6T', '6L46', '5T', '5L46'],\n      taunt: ['8M', '8L12', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      wish: ['8E', '7E', '6E', '5E'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'tranquill',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['8M'],\n      aircutter: ['8L16', '7L15', '6L15', '5L15'],\n      airslash: ['8M', '8L38', '7L32', '6L32', '5L32'],\n      attract: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      defog: ['7T'],\n      detect: ['8L34', '7L23', '6L23', '5L23'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualwingbeat: ['8T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '7L50', '6M', '6L50', '5M', '5L50'],\n      featherdance: ['8L26', '7L41', '6L41', '5L41'],\n      fly: ['8M', '7M', '6M', '5M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M', '5M'],\n      growl: ['8L1', '7L1', '6L1', '5L1'],\n      gust: ['8L1', '7L1', '6L1', '5L1'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      pluck: ['5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      quickattack: ['8L1', '7L1', '6L1', '5L1'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      razorwind: ['7L36', '6L36', '5L36'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roost: ['8L44', '7M', '7L18', '6M', '6L18', '5T', '5L18'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      skyattack: ['8L56', '7T', '7L59', '6T', '6L59', '5T', '5L59'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelwing: ['8M', '7M', '6M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['8L20', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      swift: ['8M'],\n      tailwind: ['8L50', '7T', '7L54', '6T', '6L54', '5T', '5L54'],\n      taunt: ['8M', '8L12', '7M', '7L27', '6M', '6L27', '5M', '5L27'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'unfezant',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['8M'],\n      aircutter: ['8L16', '7L15', '6L15', '5L15'],\n      airslash: ['8M', '8L42', '7L33', '6L33', '5L33'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bravebird: ['8M'],\n      confide: ['7M', '6M'],\n      defog: ['7T'],\n      detect: ['8L36', '7L23', '6L23', '5L23'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualwingbeat: ['8T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '7L55', '6M', '6L55', '5M', '5L55'],\n      featherdance: ['8L26', '7L44', '6L44', '5L44'],\n      fly: ['8M', '7M', '6M', '5M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      growl: ['8L1', '7L1', '6L1', '5L1'],\n      gust: ['8L1', '7L1', '6L1', '5L1'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hurricane: ['8M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      pluck: ['5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychup: ['7M', '6M', '5M'],\n      quickattack: ['8L1', '7L1', '6L1', '5L1'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      razorwind: ['7L38', '6L38', '5L38'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roost: ['8L50', '7M', '7L18', '6M', '6L18', '5T', '5L18'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      skyattack: ['8L66', '7T', '7L66', '6T', '6L66', '5T', '5L66'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelwing: ['8M', '7M', '6M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['8L20', '7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      swift: ['8M'],\n      tailwind: ['8L58', '7T', '7L60', '6T', '6L60', '5T', '5L60'],\n      taunt: ['8M', '8L12', '7M', '7L27', '6M', '6L27', '5M', '5L27'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'blitzle',\n    {\n      agility: ['9M', '9L33', '7L36', '6L36', '5L36'],\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['9M'],\n      bodyslam: ['9M'],\n      bounce: ['7T', '6T', '5T'],\n      charge: ['9M', '9L8', '7L8', '6L8', '5L8'],\n      chargebeam: ['9M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      discharge: ['9L29', '7L32', '6L32', '5L32'],\n      doubleedge: ['9M', '7E', '6E', '5E'],\n      doublekick: ['9E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '7E', '6E', '5E'],\n      facade: ['9M', '7M', '6M', '5M'],\n      feint: ['9E', '7E'],\n      flamecharge: ['9M', '9L18', '7M', '7L18', '6M', '6L18', '5M', '5L18'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      lowkick: ['9M', '7T'],\n      magnetrise: ['7T', '6T', '5T'],\n      mefirst: ['7E', '6E', '5E'],\n      protect: ['9M', '7M', '6M', '5M'],\n      pursuit: ['7L22', '6L22', '5L22'],\n      quickattack: ['9L1', '7L1', '6L1', '5L1'],\n      rage: ['7E', '6E', '5E'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      sandattack: ['9E', '7E', '6E', '5E'],\n      screech: ['9E', '7E', '6E', '5E'],\n      secretpower: ['6M'],\n      shockwave: ['9L11', '7T', '7L11', '7E', '6T', '6L11', '6E', '5L11', '5E'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      smartstrike: ['9M'],\n      snatch: ['7T', '7E', '6T', '6E'],\n      snore: ['7T', '6T', '5T'],\n      spark: ['9L22', '7L25', '6L25', '5L25'],\n      stomp: ['9L25', '7L29', '6L29', '5L29'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      tailwhip: ['9L4', '7L4', '6L4', '5L4'],\n      takedown: ['9M', '7E', '6E', '5E'],\n      terablast: ['9M'],\n      thrash: ['9L40', '7L43', '6L43', '5L43'],\n      thunder: ['9M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '9L15', '7M', '7L15', '6M', '6L15', '5M', '5L15'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '9L35', '7M', '7L39', '6M', '6L39', '5M', '5L39']\n    }\n  ],\n  [\n    'zebstrika',\n    {\n      agility: ['9M', '9L42', '7L42', '6L42', '5L42'],\n      allyswitch: ['7T'],\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['9M'],\n      bodyslam: ['9M'],\n      bounce: ['7T', '6T', '5T'],\n      bulldoze: ['9M'],\n      charge: ['9M', '9L1', '7L1', '6L1', '5L1'],\n      chargebeam: ['9M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      discharge: ['9L36', '7L36', '6L36', '5L36'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      flamecharge: ['9M', '9L18', '7M', '7L18', '6M', '6L18', '5M', '5L18'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '7M', '6M', '5M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M'],\n      iondeluge: ['7L1', '6L1'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      lowkick: ['9M', '7T'],\n      magnetrise: ['7T', '6T', '5T'],\n      overheat: ['9M', '7M', '6M', '5M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      pursuit: ['7L22', '6L22', '5L22'],\n      quickattack: ['9L1', '7L1', '6L1', '5L1'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M'],\n      rocksmash: ['6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shockwave: ['9L11', '7T', '7L11', '6T', '6L11', '5L11'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      smartstrike: ['9M'],\n      snatch: ['7T', '6T'],\n      snore: ['7T', '6T', '5T'],\n      spark: ['9L25', '7L25', '6L25', '5L25'],\n      stomp: ['9L31', '7L31', '6L31', '5L31'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      tailwhip: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L53', '7L53', '6L53', '5L53'],\n      thunder: ['9M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '9L47', '7M', '7L47', '6M', '6L47', '5M', '5L47']\n    }\n  ],\n  [\n    'roggenrola',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      autotomize: ['8E', '7E', '6E', '5E'],\n      block: ['7T', '6T', '5T'],\n      bodypress: ['8M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      curse: ['8E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['8M', '7T', '6T', '5T'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M'],\n      explosion: ['8L44', '7M', '7L40', '6M', '6L40', '5M', '5L40'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gravity: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      harden: ['8L4', '7L4', '6L4', '5L4'],\n      headbutt: ['8L24', '7L10', '6L10', '5L10'],\n      heavyslam: ['8M', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      irondefense: ['8M', '8L20', '7T', '7L20', '6T', '6L20', '5T', '5L20'],\n      lockon: ['7E', '6E', '5E'],\n      magnitude: ['7E', '6E', '5E'],\n      meteorbeam: ['8T'],\n      mudslap: ['8L12', '7L17', '6L17', '5L17'],\n      naturepower: ['7M', '6M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['8M', '8L32', '7L14', '6L14', '5L14'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['8M', '8L28', '7M', '7L27', '6M', '6L27', '5M', '5L27'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '7E', '6M', '6E', '5M', '5E'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L7', '6L7', '5L7'],\n      sandstorm: ['8M', '8L36', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      sandtomb: ['8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['8L16', '7M', '7L23', '6M', '6L23', '5M', '5L23'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['8M', '8L8', '7T', '7L30', '6T', '6L30', '5T', '5L30'],\n      stoneedge: ['8M', '8L40', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      takedown: ['8E', '7E', '6E', '5E'],\n      toxic: ['7M', '6M', '5M'],\n      wideguard: ['8E', '7E', '6E']\n    }\n  ],\n  [\n    'boldore',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      block: ['7T', '6T', '5T'],\n      bodypress: ['8M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      curse: ['5D'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['8M', '7T', '6T', '5T'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M'],\n      explosion: ['8L54', '7M', '7L55', '6M', '6L55', '5M', '5L55'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gravity: ['7T', '6T', '5T'],\n      harden: ['8L1', '7L1', '6L1', '5L1'],\n      headbutt: ['8L24', '7L1', '6L1', '5L1'],\n      heavyslam: ['8M', '5D'],\n      hiddenpower: ['7M', '6M', '5M'],\n      irondefense: ['8M', '8L20', '7T', '7L20', '6T', '6L20', '5T', '5L20'],\n      meteorbeam: ['8T'],\n      mudslap: ['8L12', '7L17', '6L17', '5L17'],\n      naturepower: ['7M', '6M'],\n      powergem: ['8M', '8L0', '7L1', '6L25', '5L25'],\n      protect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['8M', '8L36', '7L14', '6L14', '5L14'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['8M', '8L30', '7M', '7L30', '6M', '6L30', '5M', '5L30'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L1', '6L1', '5L1'],\n      sandstorm: ['8M', '8L42', '7M', '7L42', '6M', '6L42', '5M', '5L42'],\n      sandtomb: ['8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['8L16', '7M', '7L23', '6M', '6L23', '5M', '5L23', '5D'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['8M', '8L1', '7T', '7L36', '6T', '6L36', '5T', '5L36'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '8L48', '7M', '7L48', '6M', '6L48', '5M', '5L48'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      toxic: ['7M', '6M', '5M']\n    }\n  ],\n  [\n    'gigalith',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      block: ['7T', '6T', '5T'],\n      bodypress: ['8M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['8M', '7T', '6T', '5T'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M'],\n      explosion: ['8L54', '7M', '7L55', '6M', '6L55', '5M', '5L55'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      gravity: ['7T', '6T', '5T'],\n      harden: ['8L1', '7L1', '6L1', '5L1'],\n      headbutt: ['8L24', '7L1', '6L1', '5L1'],\n      heavyslam: ['8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      irondefense: ['8M', '8L20', '7T', '7L20', '6T', '6L20', '5T', '5L20'],\n      ironhead: ['8M', '7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      meteorbeam: ['8T'],\n      mudslap: ['8L12', '7L17', '6L17', '5L17'],\n      naturepower: ['7M', '6M'],\n      powergem: ['8M', '8L1', '7L1', '6L25', '5L25'],\n      protect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['8M', '8L36', '7L14', '6L14', '5L14'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['8M', '8L30', '7M', '7L30', '6M', '6L30', '5M', '5L30'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L1', '6L1', '5L1'],\n      sandstorm: ['8M', '8L42', '7M', '7L42', '6M', '6L42', '5M', '5L42'],\n      sandtomb: ['8M'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['8L16', '7M', '7L23', '6M', '6L23', '5M', '5L23'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      stealthrock: ['8M', '8L1', '7T', '7L36', '6T', '6L36', '5T', '5L36'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '8L48', '7M', '7L48', '6M', '6L48', '5M', '5L48'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      throatchop: ['8M', '7T'],\n      toxic: ['7M', '6M', '5M'],\n      weatherball: ['8M']\n    }\n  ],\n  [\n    'woobat',\n    {\n      acrobatics: ['8M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M'],\n      afteryou: ['7T', '6T', '5T'],\n      aircutter: ['8L15', '7L21', '6L21', '5L21'],\n      airslash: ['8M', '8L35', '7L32', '6L32', '5L32'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['8M', '8L30', '7L29', '6L29', '5L29'],\n      assurance: ['8M', '8L25', '7L12', '6L12', '5L12'],\n      attract: ['8M', '8L1', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      batonpass: ['8M'],\n      calmmind: ['8M', '8L45', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      captivate: ['7E', '6E'],\n      chargebeam: ['7M', '6M', '5M'],\n      charm: ['8M', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      confusion: ['8L5', '7L1', '6L1', '5L1'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      dualwingbeat: ['8T'],\n      embargo: ['7M', '6M', '5M'],\n      endeavor: ['8L10', '7T', '7L47', '6T', '6L47', '5T', '5L47'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M'],\n      faketears: ['8M', '7E', '6E', '5E'],\n      flash: ['6M', '5M'],\n      flatter: ['8E', '7E', '6E', '5E'],\n      fly: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['8M', '8L50', '7L36', '6L36', '5L36'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      gust: ['8L1', '7L8', '6L8', '5L8'],\n      gyroball: ['8M', '7M', '6M', '5M'],\n      heartstamp: ['7L15', '6L15', '5L15'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      helpinghand: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      imprison: ['8M', '8L20', '7L19', '6L19', '5L19'],\n      knockoff: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      nastyplot: ['8M'],\n      odorsleuth: ['7L4', '6L4', '5L4'],\n      pluck: ['5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychic: ['8M', '8L40', '7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      psychocut: ['8M'],\n      psychoshift: ['8E', '7E', '6E'],\n      psychup: ['7M', '6M', '5M'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roost: ['8E', '7M', '7E', '6M', '6E', '5T', '5E'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      simplebeam: ['8L55'],\n      skillswap: ['8M', '7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      speedswap: ['8M'],\n      steelwing: ['8M', '7M', '6M'],\n      storedpower: ['8M', '7E', '6E', '5E'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      superfang: ['7T', '6T', '5T'],\n      supersonic: ['8E', '7E', '6E', '5E'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M'],\n      synchronoise: ['7E', '6E', '5E'],\n      tailwind: ['7T', '6T', '5T'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      telekinesis: ['7T', '5M'],\n      thief: ['8M', '7M', '6M', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      venomdrench: ['8M', '7E', '6E'],\n      zenheadbutt: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'swoobat',\n    {\n      acrobatics: ['8M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M'],\n      afteryou: ['7T', '6T', '5T'],\n      aircutter: ['8L15', '7L21', '6L21', '5L21'],\n      airslash: ['8M', '8L35', '7L32', '6L32', '5L32'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['8M', '8L30', '7L29', '6L29', '5L29'],\n      assurance: ['8M', '8L25', '7L1', '6L1', '5L1'],\n      attract: ['8M', '8L1', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      batonpass: ['8M'],\n      calmmind: ['8M', '8L45', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      chargebeam: ['7M', '6M', '5M'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1', '7L1', '6L1', '5L1'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      dualwingbeat: ['8T'],\n      embargo: ['7M', '6M', '5M'],\n      endeavor: ['8L1', '7T', '7L47', '6T', '6L47', '5T', '5L47'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M'],\n      faketears: ['8M'],\n      flash: ['6M', '5M'],\n      fly: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['8M', '8L50', '7L36', '6L36', '5L36'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      gust: ['8L1', '7L1', '6L1', '5L1'],\n      gyroball: ['8M', '7M', '6M', '5M'],\n      heartstamp: ['7L15', '6L15', '5L15'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      helpinghand: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      imprison: ['8M', '8L20', '7L19', '6L19', '5L19'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      nastyplot: ['8M'],\n      odorsleuth: ['7L1', '6L1', '5L1'],\n      pluck: ['5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychic: ['8M', '8L40', '7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      psychicfangs: ['8M'],\n      psychocut: ['8M'],\n      psychup: ['7M', '6M', '5M'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      simplebeam: ['8L55'],\n      skillswap: ['8M', '7T', '6T', '5T'],\n      skyattack: ['7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      speedswap: ['8M'],\n      steelwing: ['8M', '7M', '6M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      superfang: ['7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M'],\n      tailwind: ['7T', '6T', '5T'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      telekinesis: ['7T', '5M'],\n      thief: ['8M', '7M', '6M', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      venomdrench: ['8M'],\n      zenheadbutt: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'drilbur',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crushclaw: ['9L24', '8L24', '7E', '6E', '5E'],\n      curse: ['9M'],\n      cut: ['6M', '5M'],\n      dig: ['9M', '9L32', '8M', '8L32', '7L19', '6M', '6L19', '5M', '5L19'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drillrun: ['9M', '9L40', '8M', '8L40', '7T', '7L43', '6T', '6L43', '5T', '5L43'],\n      earthpower: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      earthquake: ['9M', '9L44', '8M', '8L44', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fissure: ['9L48', '8L48', '7L47', '6L47', '5L47'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['9L12', '8L12', '7L12', '6L12', '5L12'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M', '8M'],\n      honeclaws: ['9L8', '8L8', '7L22', '6M', '6L22', '5M', '5L22'],\n      irondefense: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      metalclaw: ['9M', '9L16', '8L16', '7L15', '6L15', '5L15'],\n      metalsound: ['9M', '9E', '8E', '7E', '6E', '5E', '5D'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L8', '6L8', '5L8'],\n      mudsport: ['7L1', '6L1', '5L1'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      rapidspin: ['9L1', '8L1', '7L5', '7E', '6L5', '6E', '5L5', '5E', '5D'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockclimb: ['7E', '6E', '5E', '5D'],\n      rockslide: ['9M', '9L28', '8M', '8L28', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '9L20', '8M', '8L20', '7M', '7L40', '6M', '6L40', '5M', '5L40'],\n      sandtomb: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L4', '8L4', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      skullbash: ['7E', '6E', '5E'],\n      slash: ['9E', '8E', '7L26', '6L26', '5L26'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M'],\n      strength: ['6M', '5M'],\n      submission: ['8E', '7E', '6E', '5E'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['9M', '9L36', '8M', '8L36', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'excadrill',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crushclaw: ['9L24', '8L24'],\n      curse: ['9M'],\n      cut: ['6M', '5M'],\n      dig: ['9M', '9L34', '8M', '8L34', '7L19', '6M', '6L19', '5M', '5L19'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drillrun: ['9M', '9L46', '8M', '8L46', '7T', '7L55', '6T', '6L55', '5T', '5L55'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      earthquake: ['9M', '9L52', '8M', '8L52', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fissure: ['9L58', '8L58', '7L62', '6L62', '5L62'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['9L12', '8L12', '7L12', '6L12', '5L12'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M', '8M'],\n      honeclaws: ['9L1', '8L1', '7L22', '6M', '6L22', '5M', '5L22'],\n      horndrill: ['9L0', '8L0', '7L1', '6L31', '5L31'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T'],\n      magnetrise: ['7T', '6T', '5T'],\n      metalclaw: ['9M', '9L16', '8L16', '7L15', '6L15', '5L15'],\n      metalsound: ['9M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1'],\n      mudsport: ['7L1', '6L1', '5L1'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      rapidspin: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['9M', '8M'],\n      rockslide: ['9M', '9L28', '8M', '8L28', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      rototiller: ['7L1', '6L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '9L20', '8M', '8L20', '7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      sandtomb: ['9M', '8M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      slash: ['7L26', '6L26', '5L26'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      steelbeam: ['9M', '8T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['9M', '9L40', '8M', '8L40', '7M', '7L42', '6M', '6L42', '5M', '5L42'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'audino',\n    {\n      afteryou: ['8L28', '7T', '7L41', '6T', '6L40', '5T', '5L40'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['8M', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '7L21', '6M', '6L15', '5M', '5L15'],\n      babydolleyes: ['8L9', '7L5', '6L5'],\n      bestow: ['7E', '6E', '5E'],\n      blizzard: ['8M', '7M', '6M', '5M'],\n      bodyslam: ['8M'],\n      calmmind: ['8M', '7M', '6M', '5M'],\n      chargebeam: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      dig: ['8M', '6M', '5M'],\n      disarmingvoice: ['8L4', '7L13', '6L13'],\n      doubleedge: ['8L48', '7L49', '6L49', '5L50'],\n      doubleslap: ['7L17', '6L10', '5L10', '5S0'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainingkiss: ['8M', '7E', '6E'],\n      drainpunch: ['8M', '7T', '6T', '5T'],\n      dreameater: ['7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['8M', '7E', '6E', '5E', '5D'],\n      endure: ['8M'],\n      entrainment: ['8L52', '7L29', '6L25', '5L25'],\n      facade: ['8M', '7M', '6M', '5M'],\n      fireblast: ['8M', '7M', '6M', '5M'],\n      firepunch: ['8M', '7T', '6T', '5T'],\n      flamethrower: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      gravity: ['7T', '6T', '5T'],\n      growl: ['8L16', '7L1', '6L1', '5L1'],\n      healbell: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      healingwish: ['8E', '7E', '6E', '5E'],\n      healpulse: ['8L44', '7L37', '6L35', '6S3', '5L35', '5S0', '5S1', '5S2'],\n      helpinghand: ['8M', '8L12', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5D', '5S0', '5S1', '5S2'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      hypervoice: ['8M', '8L40', '7T', '7L1', '6T', '5T'],\n      icebeam: ['8M', '7M', '6M', '5M'],\n      icepunch: ['8M', '7T', '6T', '5T'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      lastresort: ['8L60', '7T', '7L1', '6T', '6L1', '5T', '5L55'],\n      lifedew: ['8L24'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      lowkick: ['8M', '7T', '6T', '5T'],\n      luckychant: ['7E', '6E', '5E'],\n      magiccoat: ['7T', '6T', '5T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mistyterrain: ['8M', '8L56', '7L1', '6L1'],\n      painsplit: ['7T', '6T', '5T'],\n      playnice: ['8L1', '7L1', '6L1'],\n      pound: ['8L1', '7L1', '6L1', '5L1'],\n      poweruppunch: ['6M'],\n      present: ['5S1', '5S2'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychic: ['8M', '7M', '6M', '5M'],\n      psychup: ['7M', '6M', '5M'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      refresh: ['7L9', '6L5', '5L5', '5S0', '5S1', '5S2'],\n      rest: ['8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['7L25', '6M', '6L20', '5L20'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      signalbeam: ['7T', '6T', '5T'],\n      simplebeam: ['8L36', '7L45', '6L45', '6S3', '5L45'],\n      skillswap: ['8M', '7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      stompingtantrum: ['8M', '7T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      sweetkiss: ['8E', '7E', '6E', '5E'],\n      takedown: ['8L32', '7L33', '6L30', '5L30'],\n      telekinesis: ['7T', '5M'],\n      throatchop: ['8M', '7T'],\n      thunder: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '6S3', '5M'],\n      thunderpunch: ['8M', '7T', '6T', '5T'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trickroom: ['8M', '7M', '6M', '6S3', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      wish: ['8E', '7E', '6E', '5E'],\n      workup: ['8M', '7M', '5M'],\n      yawn: ['8E', '7E', '6E', '5E', '5D'],\n      zenheadbutt: ['8M', '8L20', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'timburr',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L8', '6L8', '5L8'],\n      block: ['7T', '6T', '5T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '9L16', '8M', '8L16', '7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      chipaway: ['7L24', '6L24', '5L24'],\n      closecombat: ['9M'],\n      coaching: ['9M', '8T'],\n      cometpunch: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E'],\n      curse: ['9M'],\n      defog: ['9E', '8E'],\n      detect: ['9E', '8E', '7E', '6E', '5E'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      dynamicpunch: ['9L32', '8L32', '7L34', '6L34', '5L34'],\n      endure: ['9M', '8M', '7E', '6E', '5E'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['9L12', '8M', '8L12', '7L4', '6L4', '5L4'],\n      focuspunch: ['9M', '9L48', '8L48', '7T', '7L46', '6T', '6L46', '5L46'],\n      forcepalm: ['7E', '6E', '5E'],\n      foresight: ['7E', '6E', '5E'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      hammerarm: ['9L36', '8L36', '7L40', '6L40', '5L40'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '9L4', '8M', '8L4', '7T', '7L12', '6T', '6L12', '5T', '5L12'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      machpunch: ['9E', '8E', '7E', '6E', '5E'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      poweruppunch: ['8E', '7E', '6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M', '7E', '6E', '5E'],\n      rockslide: ['9M', '9L20', '8M', '8L20', '7M', '7L31', '6M', '6L31', '5M', '5L31'],\n      rocksmash: ['6M', '5M'],\n      rockthrow: ['9L8', '8L8', '7L16', '6L16', '5L16'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L28', '8M', '8L28', '7L37', '6L37', '5L37'],\n      secretpower: ['6M'],\n      slam: ['9L24', '8L24'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      smellingsalts: ['7E', '6E', '5E'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stoneedge: ['9M', '9L40', '8M', '8L40', '7M', '7L43', '6M', '6L43', '5M', '5L43'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['9L44', '8M', '8L44', '7T', '7L49', '6T', '6L49', '5T', '5L49'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T'],\n      toxic: ['7M', '6M', '5M'],\n      wakeupslap: ['7L20', '6L20', '5L20'],\n      wideguard: ['9E', '8E', '7E', '6E', '5E'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'gurdurr',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L1', '6L1', '5L1'],\n      block: ['7T', '6T', '5T'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '9L16', '8M', '8L16', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      chipaway: ['7L24', '6L24', '5L24'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '5D'],\n      dynamicpunch: ['9L36', '8L36', '7L37', '6L37', '5L37'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['9L12', '8M', '8L12', '7L1', '6L1', '5L1'],\n      focuspunch: ['9M', '9L60', '8L60', '7T', '7L53', '6T', '6L53', '5L53'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      hammerarm: ['9L42', '8L42', '7L45', '6L45', '5L45'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M', '8M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '9L1', '8M', '8L1', '7T', '7L12', '6T', '6L12', '5T', '5L12', '5D'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      machpunch: ['5D'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      rockslide: ['9M', '9L20', '8M', '8L20', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      rocksmash: ['6M', '5M'],\n      rockthrow: ['9L1', '8L1', '7L16', '6L16', '5L16'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L30', '8M', '8L30', '7L41', '6L41', '5L41'],\n      secretpower: ['6M'],\n      slam: ['9L24', '8L24'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stoneedge: ['9M', '9L48', '8M', '8L48', '7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['9L54', '8M', '8L54', '7T', '7L57', '6T', '6L57', '5T', '5L57'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T'],\n      toxic: ['7M', '6M', '5M'],\n      wakeupslap: ['7L20', '6L20', '5L20'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'conkeldurr',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L1', '6L1', '5L1'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '9L16', '8M', '8L16', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      chipaway: ['7L24', '6L24', '5L24'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T'],\n      dynamicpunch: ['9L36', '8L36', '7L37', '6L37', '5L37'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['9L12', '8M', '8L12', '7L1', '6L1', '5L1'],\n      focuspunch: ['9M', '9L60', '8L60', '7T', '7L53', '6T', '6L53', '5L53'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      hammerarm: ['9L42', '8L42', '7L45', '6L45', '5L45'],\n      hardpress: ['9M'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '9L1', '8M', '8L1', '7T', '7L12', '6T', '6L12', '5T', '5L12'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      rockblast: ['9M', '8M'],\n      rockslide: ['9M', '9L20', '8M', '8L20', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      rocksmash: ['6M', '5M'],\n      rockthrow: ['9L1', '8L1', '7L16', '6L16', '5L16'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L30', '8M', '8L30', '7L41', '6L41', '5L41'],\n      secretpower: ['6M'],\n      slam: ['9L24', '8L24'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L48', '8M', '8L48', '7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['9L54', '8M', '8L54', '7T', '7L57', '6T', '6L57', '5T', '5L57'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T'],\n      toxic: ['7M', '6M', '5M'],\n      upperhand: ['9M'],\n      wakeupslap: ['7L20', '6L20', '5L20'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'tympole',\n    {\n      acid: ['8L4'],\n      afteryou: ['7T', '7E', '6T', '6E'],\n      aquaring: ['8L32', '7L20', '6L20', '5L20'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      bubble: ['7L1', '6L1', '5L1'],\n      bubblebeam: ['8L20', '7L12', '6L12', '5L12'],\n      confide: ['7M', '6M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      echoedvoice: ['8L1', '7M', '7L38', '6M', '6L38', '5M', '5L38'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flail: ['8L24', '7L34', '6L34', '5L34'],\n      frustration: ['7M', '6M', '5M'],\n      growl: ['8L1', '7L1', '6L1', '5L1'],\n      hail: ['8M', '7M', '6M', '5M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['8M', '8L48', '7L42', '6L42', '5L42'],\n      hypervoice: ['8M', '8L36', '7T', '7L45', '6T', '6L45', '5T', '5L45'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      infestation: ['7M', '6M'],\n      mist: ['8E', '7E', '6E', '5E'],\n      mudbomb: ['7E', '6E', '5E'],\n      muddywater: ['8M', '8L40', '7L27', '6L27', '5L27'],\n      mudshot: ['8M', '8L12', '7L16', '6L16', '5L16'],\n      mudslap: ['8E'],\n      mudsport: ['7E', '6E', '5E'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '8L44', '7M', '7L31', '6M', '6L31', '5M', '5L31'],\n      refresh: ['7E', '6E', '5E'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '8L16', '7M', '7L9', '6M', '6L9', '5M', '5L9', '5D'],\n      scald: ['8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      supersonic: ['8L8', '7L5', '6L5', '5L5'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      toxic: ['8E', '7M', '6M', '5M'],\n      uproar: ['8M', '8L28', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      venomdrench: ['8M', '7E'],\n      waterpulse: ['8E', '7T', '7E', '6T', '6E', '5E', '5D'],\n      weatherball: ['8M']\n    }\n  ],\n  [\n    'palpitoad',\n    {\n      acid: ['8L1'],\n      afteryou: ['7T', '6T'],\n      aquaring: ['8L37', '7L20', '6L20', '5L20'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      bubble: ['7L1', '6L1', '5L1'],\n      bubblebeam: ['8L20', '7L12', '6L12', '5L12'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['8M', '7T', '6T', '5T'],\n      echoedvoice: ['8L1', '7M', '7L42', '6M', '6L42', '5M', '5L42'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flail: ['8L24', '7L37', '6L37', '5L37'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['7T', '6T', '5T'],\n      growl: ['8L1', '7L1', '6L1', '5L1'],\n      hail: ['8M', '7M', '6M', '5M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['8M', '8L60', '7L47', '6L47', '5L47'],\n      hypervoice: ['8M', '8L42', '7T', '7L51', '6T', '6L51', '5T', '5L51'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      infestation: ['7M', '6M'],\n      muddywater: ['8M', '8L48', '7L28', '6L28', '5L28'],\n      mudshot: ['8M', '8L12', '7L16', '6L16', '5L16'],\n      powerwhip: ['8M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '8L54', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '8L16', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      scald: ['8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      supersonic: ['8L1', '7L1', '6L1', '5L1'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '8L30', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      venomdrench: ['8M'],\n      waterpulse: ['7T', '6T'],\n      weatherball: ['8M']\n    }\n  ],\n  [\n    'seismitoad',\n    {\n      acid: ['8L1', '7L1', '6L36', '5L36'],\n      afteryou: ['7T', '6T'],\n      aquaring: ['8L39', '7L20', '6L20', '5L20'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      brickbreak: ['8M', '7M', '6M', '5M'],\n      bubble: ['7L1', '6L1', '5L1'],\n      bubblebeam: ['8L20', '7L12', '6L12', '5L12'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      dig: ['8M', '6M', '5M'],\n      dive: ['8M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['8M', '8L0', '7T', '7L44', '6T', '6L44', '5T', '5L44'],\n      earthpower: ['8M', '7T', '6T', '5T'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      echoedvoice: ['8L1', '7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flail: ['8L24', '7L39', '6L39', '5L39'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['8L1', '7T', '6T', '5T'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      growl: ['8L1', '7L1', '6L1', '5L1'],\n      hail: ['8M', '7M', '6M', '5M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['8M', '8L70', '7L53', '6L53', '5L53'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      hypervoice: ['8M', '8L46', '7T', '7L59', '6T', '6L59', '5T', '5L59'],\n      icepunch: ['8M', '7T', '6T', '5T'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      infestation: ['7M', '6M'],\n      knockoff: ['7T', '6T', '5T'],\n      liquidation: ['8M'],\n      lowkick: ['8M', '7T', '6T', '5T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      muddywater: ['8M', '8L54', '7L28', '6L28', '5L28'],\n      mudshot: ['8M', '8L12', '7L16', '6L16', '5L16'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      powerwhip: ['8M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '8L62', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '8L16', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      scald: ['8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      supersonic: ['8L1', '7L1', '6L1', '5L1'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '8L30', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      waterpulse: ['7T', '6T'],\n      weatherball: ['8M']\n    }\n  ],\n  [\n    'throh',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L1', '6L5', '5L5'],\n      bind: ['8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5D'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['8M', '7L21', '6L29', '5L29'],\n      brickbreak: ['8M', '7M', '6M', '5M'],\n      bulkup: ['8M', '8L25', '7M', '7L25', '6M', '6L33', '5M', '5L33'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      circlethrow: ['8L10', '7L29', '6L37', '5L37'],\n      coaching: ['8T'],\n      confide: ['7M', '6M'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M', '8L45', '7L33', '6L41', '5L41'],\n      facade: ['8M', '7M', '6M', '5M'],\n      firepunch: ['8M', '7T', '6T', '5T'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      focusenergy: ['8M', '8L5', '7L1', '6L9', '5L9'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      helpinghand: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      icepunch: ['8M', '7T', '6T', '5T', '5D'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['8M', '7T', '6T', '5T'],\n      lowsweep: ['8M', '7M', '6M', '5M'],\n      matblock: ['7L1'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      painsplit: ['7T', '6T', '5T'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M', '8L20', '7L13', '6L21', '5L21'],\n      reversal: ['8M', '8L50', '7L45', '6L50', '5L53'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M'],\n      secretpower: ['6M'],\n      seismictoss: ['8L40', '7L5', '6L13', '5L13'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      stormthrow: ['8L30', '7L17', '6L25', '5L25'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '8L55', '7T', '7L41', '6T', '6L48', '5T', '5L49', '5D'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      thunderpunch: ['8M', '7T', '6T', '5T'],\n      toxic: ['7M', '6M', '5M'],\n      vitalthrow: ['8L35', '7L9', '6L17', '5L17'],\n      wideguard: ['8L15', '7L37', '6L45', '5L45'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'sawk',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L1', '6L5', '5L5'],\n      block: ['7T', '6T', '5T'],\n      brickbreak: ['8M', '8L35', '7M', '7L21', '6M', '6L29', '5M', '5L29'],\n      bulkup: ['8M', '8L25', '7M', '7L25', '6M', '6L33', '5M', '5L33'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      closecombat: ['8M', '8L55', '7L41', '6L48', '5L49'],\n      coaching: ['8T'],\n      confide: ['7M', '6M'],\n      counter: ['8L40', '7L13', '6L21', '5L21'],\n      dig: ['8M', '6M', '5M'],\n      doublekick: ['8L10', '7L5', '6L13', '5L13'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualchop: ['7T', '6T', '5T', '5D'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M', '8L45', '7L33', '6L41', '5L41'],\n      facade: ['8M', '7M', '6M', '5M'],\n      firepunch: ['8M', '7T', '6T', '5T'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      focusenergy: ['8M', '8L5', '7L1', '6L9', '5L9'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      helpinghand: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      icepunch: ['8M', '7T', '6T', '5T'],\n      karatechop: ['7L17', '6L25', '5L25'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['8M', '7T', '6T', '5T'],\n      lowsweep: ['8M', '8L20', '7M', '7L9', '6M', '6L17', '5M', '5L17'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      painsplit: ['7T', '6T', '5T'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      quickguard: ['8L15', '7L37', '6L45', '5L45'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '8L30', '7L29', '6M', '6L37', '5M', '5L37'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['8M', '8L50', '7L45', '6L50', '5L53'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['8L1', '7L1', '6M', '6L1', '5M', '5L1', '5D'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      throatchop: ['8M', '7T'],\n      thunderpunch: ['8M', '7T', '6T', '5T', '5D'],\n      toxic: ['7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'sewaddle',\n    {\n      agility: ['7E', '6E', '5E'],\n      airslash: ['7E', '6E', '5E'],\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['9M', '7E', '6E', '5E'],\n      bugbite: ['9M', '9L8', '7T', '7L8', '6T', '6L8', '5T', '5L8'],\n      bugbuzz: ['9M', '9L36', '7L36', '6L36', '5L36'],\n      calmmind: ['7M', '6M', '5M'],\n      camouflage: ['7E', '6E', '5E'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      electroweb: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '9L29', '7L29', '6L29', '5L29'],\n      energyball: ['9M', '7M', '6M', '5M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      flail: ['9L43', '7L43', '6L43', '5L43'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '7T', '6T', '5T'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '7E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      irondefense: ['9M', '7T', '6T', '5T'],\n      lightscreen: ['7M', '6M', '5M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M'],\n      magiccoat: ['7T', '6T', '5T'],\n      mefirst: ['7E', '6E', '5E'],\n      mindreader: ['7E', '6E', '5E'],\n      naturepower: ['7M', '6M'],\n      payback: ['7M', '6M', '5M'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M'],\n      razorleaf: ['9L15', '7L15', '6L15', '5L15'],\n      razorwind: ['7E', '6E', '5E'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      screech: ['9E', '7E', '6E', '5E'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T', '5T'],\n      signalbeam: ['7T', '6T', '5T'],\n      silverwind: ['7E', '6E', '5E'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['9E', '7T', '6T', '5T'],\n      solarbeam: ['9M', '7M', '6M', '5M'],\n      stickyweb: ['9L31', '7L31', '6L31'],\n      stringshot: ['9L1', '7L1', '6L1', '5L1'],\n      strugglebug: ['9M', '9L22', '7L22', '6M', '6L22', '5M', '5L22'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      switcheroo: ['9E'],\n      synthesis: ['9E', '7T', '6T', '5T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      worryseed: ['9E', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'swadloon',\n    {\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['9M'],\n      bugbite: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      bugbuzz: ['9M', '9L36'],\n      calmmind: ['7M', '6M', '5M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      electroweb: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '9L29'],\n      energyball: ['9M', '7M', '6M', '5M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      flail: ['9L43'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '7T', '6T', '5T'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      grasswhistle: ['7L1', '6L1', '5L1'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      irondefense: ['9M', '7T', '6T', '5T'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M'],\n      magiccoat: ['7T', '6T', '5T'],\n      naturepower: ['7M', '6M'],\n      payback: ['7M', '6M', '5M'],\n      pounce: ['9M'],\n      protect: ['9M', '9L0', '7M', '7L1', '6M', '6L20', '5M', '5L20'],\n      raindance: ['9M'],\n      razorleaf: ['9L1', '7L1', '6L1', '5L1'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T', '5T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '7M', '6M', '5M'],\n      stickyweb: ['9L31'],\n      stringshot: ['9L1', '7L1', '6L1', '5L1'],\n      strugglebug: ['9M', '9L22', '6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      synthesis: ['7T', '6T', '5T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      worryseed: ['7T', '6T', '5T']\n    }\n  ],\n  [\n    'leavanny',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['9M'],\n      airslash: ['9M'],\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['9M'],\n      bugbite: ['9M', '9L1', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      bugbuzz: ['9M'],\n      bulletseed: ['9M'],\n      calmmind: ['9M', '7M', '6M', '5M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      electroweb: ['9M', '7T', '6T', '5T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M', '5M'],\n      entrainment: ['9L43', '7L43', '6L43', '5L43'],\n      facade: ['9M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      fellstinger: ['9L29', '7L29', '6L34'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '7T', '6T', '5T'],\n      gigaimpact: ['9M', '7M', '6M', '5M'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      healbell: ['7T', '6T', '5T'],\n      helpinghand: ['9M', '9L32', '7T', '7L32', '6T', '6L32', '5T', '5L32'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '6M', '5M'],\n      irondefense: ['9M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      leafblade: ['9L36', '7L36', '6L36', '5L36'],\n      leafstorm: ['9M', '9L50', '7L50', '6L50', '5L50'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      lowkick: ['9M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M'],\n      magiccoat: ['7T', '6T', '5T'],\n      naturepower: ['7M', '6M'],\n      payback: ['7M', '6M', '5M'],\n      poisonjab: ['9M', '7M', '6M', '5M'],\n      pollenpuff: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M'],\n      razorleaf: ['9L1', '7L1', '6L1', '5L1'],\n      reflect: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T', '5T'],\n      shadowclaw: ['9M', '7M', '6M', '5M'],\n      signalbeam: ['7T', '6T', '5T'],\n      skittersmack: ['9M'],\n      slash: ['9L0', '7L1', '6L29', '5L29'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '7M', '6M', '5M'],\n      steelwing: ['7M', '6M'],\n      stringshot: ['9L1', '7L1', '6L1', '5L1'],\n      strugglebug: ['9M', '9L22', '7L22', '6M', '6L22', '5M', '5L22'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['9M', '9L46', '7M', '7L46', '6M', '6L46', '5M', '5L46'],\n      synthesis: ['7T', '6T', '5T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '7T'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M'],\n      worryseed: ['7T', '6T', '5T'],\n      xscissor: ['9M', '9L39', '7M', '7L39', '6M', '6L39', '5M', '5L39']\n    }\n  ],\n  [\n    'venipede',\n    {\n      agility: ['8M', '8L32', '7L29', '6L29', '5L29'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bite: ['8E'],\n      bugbite: ['8L20', '7T', '7L22', '6T', '6L22', '5T', '5L22'],\n      confide: ['7M', '6M'],\n      defensecurl: ['8L1', '7L1', '6L1', '5L1'],\n      doubleedge: ['8L44', '7L43', '6L43', '5L43'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['8E'],\n      gyroball: ['8M', '7M', '6M', '5M'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      payback: ['8M', '7M', '6M', '5M'],\n      pinmissile: ['8M', '7E', '6E', '5E'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      poisonsting: ['8L1', '7L5', '6L5', '5L5'],\n      poisontail: ['8L12', '7L19', '6L19', '5L19'],\n      protect: ['8M', '8L8', '7M', '7L15', '6M', '6L15', '5M', '5L15'],\n      pursuit: ['7L12', '6L12', '5L12'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockclimb: ['7L40', '7E', '6L40', '6E', '5L40', '5E'],\n      rocksmash: ['6M', '5M'],\n      rollout: ['8L4', '7L1', '6L1', '5L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L16', '7L8', '6L8', '5L8'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      spikes: ['8M', '7E', '6E', '5E'],\n      steamroller: ['7L33', '6L33', '5L33'],\n      steelroller: ['8T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['8L28', '7E', '6E', '5E'],\n      toxic: ['8L36', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      toxicspikes: ['8M', '7E', '6E', '5E'],\n      twineedle: ['7E', '6E', '5E'],\n      venomdrench: ['8M', '8L40', '7L38'],\n      venoshock: ['8M', '8L24', '7M', '7L26', '6M', '6L26', '5M', '5L26']\n    }\n  ],\n  [\n    'whirlipede',\n    {\n      agility: ['8M', '8L38', '7L32', '6L32', '5L32'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bugbite: ['8L20', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      confide: ['7M', '6M'],\n      defensecurl: ['8L1', '7L1', '6L1', '5L1'],\n      doubleedge: ['8L56', '7L50', '6L50', '5L50'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gyroball: ['8M', '7M', '6M', '5M'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '8L0', '7T', '7L1', '6T', '6L22', '5T', '5L22'],\n      payback: ['8M', '7M', '6M', '5M'],\n      pinmissile: ['8M'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      poisonsting: ['8L1', '7L1', '6L1', '5L1'],\n      poisontail: ['8L12', '7L19', '6L19', '5L19'],\n      protect: ['8M', '8L1', '7M', '7L15', '6M', '6L15', '5M', '5L15'],\n      pursuit: ['7L12', '6L12', '5L12'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockclimb: ['7L46', '6L46', '5L46'],\n      rocksmash: ['6M', '5M'],\n      rollout: ['8L1', '7L1', '6L1', '5L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L16', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      spikes: ['8M'],\n      steamroller: ['7L37', '6L37', '5L37'],\n      steelroller: ['8T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['8L32'],\n      toxic: ['8L44', '7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      toxicspikes: ['8M'],\n      venomdrench: ['8M', '8L50', '7L43', '6L43'],\n      venoshock: ['8M', '8L26', '7M', '7L28', '6M', '6L28', '5M', '5L28']\n    }\n  ],\n  [\n    'scolipede',\n    {\n      agility: ['8M', '8L42', '7L33', '6L33', '5L33'],\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      batonpass: ['8M', '8L1', '7L1', '6L30', '5L30'],\n      bugbite: ['8L20', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crosspoison: ['8M'],\n      cut: ['6M', '5M'],\n      defensecurl: ['8L1', '7L1', '6L1', '5L1'],\n      dig: ['8M', '6M', '5M'],\n      doubleedge: ['8L66', '7L55', '6L55', '5L55'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      gyroball: ['8M', '7M', '6M', '5M'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '8L1', '7T', '7L1', '6T', '5T'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      megahorn: ['8M', '8L74', '7L1', '6L1', '5L1'],\n      payback: ['8M', '7M', '6M', '5M'],\n      pinmissile: ['8M'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      poisonsting: ['8L1', '7L1', '6L1', '5L1'],\n      poisontail: ['8L12', '7L19', '6L19', '5L19', '5D'],\n      protect: ['8M', '8L1', '7M', '7L15', '6M', '6L15', '5M', '5L15'],\n      pursuit: ['7L12', '6L12', '5L12'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockclimb: ['7L50', '6L50', '5L50'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      rollout: ['8L1', '7L1', '6L1', '5L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L16', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      smartstrike: ['8M', '7M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      spikes: ['8M'],\n      steamroller: ['7L39', '6L39', '5L39'],\n      steelroller: ['8T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T', '5D'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['8M', '7M', '6M', '5M'],\n      takedown: ['8L34'],\n      throatchop: ['8M', '7T'],\n      toxic: ['8L50', '7M', '7L44', '6M', '6L44', '5M', '5L44'],\n      toxicspikes: ['8M', '5D'],\n      venomdrench: ['8M', '8L58', '7L47', '6L47'],\n      venoshock: ['8M', '8L26', '7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      xscissor: ['8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'cottonee',\n    {\n      absorb: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['9E', '8M', '7E', '6E', '5E'],\n      captivate: ['7E', '6E'],\n      charm: ['9M', '9L27', '8M', '8L27', '7L28', '6L28', '5L28'],\n      confide: ['7M', '6M'],\n      cottonguard: ['9L45', '8L45', '7L37', '6L37', '5L37'],\n      cottonspore: ['9L33', '8L33', '7L17', '6L17', '5L17'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      encore: ['9M', '8M', '7E', '6E', '5E', '5D'],\n      endeavor: ['9M', '9L42', '8L42', '7T', '7L44', '6T', '6L44', '5T', '5L44'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L36', '8M', '8L36', '7M', '7L35', '6M', '6L35', '5M', '5L35'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fairywind: ['9L3', '8L3', '7L1', '6L1'],\n      faketears: ['9M', '8M', '7E', '6E', '5E'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '9L24', '8M', '8L24', '7T', '7L26', '6T', '6L26', '5T', '5L26'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      grasswhistle: ['7E', '6E', '5E'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L18', '8L18', '7L4', '6L4', '5L4'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L31', '6T', '6L31', '5T', '5L31'],\n      hiddenpower: ['7M', '6M', '5M'],\n      knockoff: ['7T', '6T', '5T'],\n      leechseed: ['9L30', '8L30', '7L8', '6L8', '5L8', '5D'],\n      megadrain: ['9L12', '8L12', '7L13', '6L13', '5L13'],\n      memento: ['9E', '8E', '7E', '6E', '5E'],\n      mistyterrain: ['9M', '8M', '7E'],\n      naturalgift: ['7E', '6E', '5E'],\n      naturepower: ['8E', '7M', '6M'],\n      poisonpowder: ['9L21', '8L21', '7L22', '6L22', '5L22'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      razorleaf: ['9L15', '8L15', '7L19', '6L19', '5L19'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '9L48', '8M', '8L48', '7M', '7L46', '6M', '6L46', '5M', '5L46'],\n      stunspore: ['9L6', '8L6', '7L10', '6L10', '5L10'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '9L39', '8M', '8L39', '7M', '7L40', '6M', '6L40', '5M', '5L40'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      switcheroo: ['9E', '8E', '7E', '6E', '5E'],\n      tailwind: ['7T', '6T', '5T'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      tickle: ['9E', '8E', '7E', '6E', '5E'],\n      toxic: ['7M', '6M', '5M'],\n      worryseed: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '5D']\n    }\n  ],\n  [\n    'whimsicott',\n    {\n      absorb: ['9L1', '8L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['8M', '5S0'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M', '6M'],\n      cottonguard: ['9L1', '8L1'],\n      cottonspore: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '9L1', '8L1', '7T', '6T', '5T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fairywind: ['9L1', '8L1'],\n      faketears: ['9M', '8M'],\n      flash: ['6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T', '5S0'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      gust: ['9L1', '8L1', '7L10', '6L10', '5L10'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T', '5S0'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hurricane: ['9M', '9L1', '8M', '8L1', '7L46', '6L46', '5L46'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      knockoff: ['7T', '6T', '5T'],\n      leechseed: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      megadrain: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      memento: ['9L1', '8L1'],\n      mistyterrain: ['9M', '8M'],\n      moonblast: ['9L1', '8L1', '7L50', '6L50'],\n      naturepower: ['7M', '6M'],\n      playrough: ['9M', '8M'],\n      poisonpowder: ['9L1', '8L1'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      razorleaf: ['9L1', '8L1'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      stunspore: ['9L1', '8L1'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M', '5S0'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M', '9L1', '8L1', '7T', '7L28', '6T', '6L28', '5T', '5L28'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      worryseed: ['7T', '6T', '5T']\n    }\n  ],\n  [\n    'petilil',\n    {\n      absorb: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      afteryou: ['9L27', '8L27', '7T', '7L44', '6T', '6L44', '5T', '5L44'],\n      aromatherapy: ['8L12', '7L28', '6L28', '5L28'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7E', '6E', '5E'],\n      bulletseed: ['9M'],\n      charm: ['9M', '9L12', '8M', '7E', '6E', '5E', '5D'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      encore: ['9M', '8M', '7E'],\n      endure: ['9M', '8M', '7E', '6E', '5E'],\n      energyball: ['9M', '9L30', '8M', '8L30', '7M', '7L35', '6M', '6L35', '5M', '5L35'],\n      entrainment: ['9L39', '8L39', '7L37', '6L37', '5L37'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '9L21', '8M', '8L21', '7T', '7L26', '6T', '6L26', '5T', '5L26'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      grasswhistle: ['7E', '6E', '5E'],\n      grassyglide: ['9M', '8T'],\n      growth: ['9L1', '8L1', '7L4', '6L4', '5L4'],\n      healbell: ['7T', '6T', '5T'],\n      healingwish: ['9E', '8E', '7E', '6E', '5E'],\n      helpinghand: ['9M', '9L3', '8M', '8L3', '7T', '7L31', '6T', '6L31', '5T', '5L31'],\n      hiddenpower: ['7M', '6M', '5M'],\n      ingrain: ['9E', '8E', '7E', '6E', '5E'],\n      laserfocus: ['7T'],\n      leafstorm: ['9M', '9L42', '8M', '8L42', '7L46', '6L46', '5L46'],\n      leechseed: ['9L24', '8L24', '7L8', '6L8', '5L8'],\n      magicalleaf: ['9M', '9L15', '8M', '8L15', '7L19', '6L19', '5L19'],\n      megadrain: ['9L9', '8L9', '7L13', '6L13', '5L13'],\n      naturalgift: ['7E', '6E', '5E'],\n      naturepower: ['7M', '6M'],\n      pollenpuff: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T'],\n      sleeppowder: ['9L18', '8L18', '7L10', '6L10', '5L10', '5D'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      stunspore: ['9L6', '8L6', '7L22', '6L22', '5L22'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '9L36', '8M', '8L36', '7M', '7L40', '6M', '6L40', '5M', '5L40'],\n      swagger: ['7M', '6M', '5M'],\n      sweetscent: ['9E', '8E', '7E', '6E', '5E', '5D'],\n      synthesis: ['9L33', '8L33', '7T', '7L17', '6T', '6L17', '5T', '5L17'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      worryseed: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E']\n    }\n  ],\n  [\n    'lilligant',\n    {\n      absorb: ['9L1', '8L1'],\n      afteryou: ['9L1', '8L1', '7T', '6T', '5T'],\n      alluringvoice: ['9M'],\n      aromatherapy: ['8L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bulletseed: ['9M'],\n      charm: ['9M', '9L1', '8M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      entrainment: ['9L1', '8L1'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      healbell: ['7T', '6T', '5T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      laserfocus: ['7T'],\n      leafblade: ['8M'],\n      leafstorm: ['9M', '9L1', '8M', '8L1'],\n      leechseed: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '9L5', '8M', '8L1'],\n      megadrain: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M', '9L1', '8L1', '7L50', '6L50'],\n      petaldance: ['9L0', '8L0', '7L46', '6L46', '5L46'],\n      pollenpuff: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M'],\n      quiverdance: ['9L1', '8L1', '7L28', '6L28', '5L28'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T'],\n      sleeppowder: ['9L1', '8L1'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      solarblade: ['9M', '8M'],\n      stunspore: ['9L1', '8L1'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M'],\n      synthesis: ['9L1', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      teeterdance: ['9L1', '8L1', '7L10', '6L10', '5L10'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      weatherball: ['9M'],\n      worryseed: ['7T', '6T', '5T']\n    }\n  ],\n  [\n    'lilliganthisui',\n    {\n      absorb: ['9L1'],\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      afteryou: ['9L1'],\n      airslash: ['9M'],\n      axekick: ['9L5'],\n      brickbreak: ['9M'],\n      bulletseed: ['9M'],\n      charm: ['9M'],\n      closecombat: ['9M'],\n      coaching: ['9M'],\n      defog: ['9L1'],\n      encore: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L1'],\n      entrainment: ['9L1'],\n      facade: ['9M'],\n      gigadrain: ['9M', '9L1'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L1'],\n      helpinghand: ['9M', '9L1'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M'],\n      icespinner: ['9M'],\n      leafblade: ['9L1'],\n      leafstorm: ['9M', '9L1'],\n      leechseed: ['9L1'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      magicalleaf: ['9M', '9L1'],\n      megadrain: ['9L1'],\n      megakick: ['9L1'],\n      metronome: ['9M'],\n      petalblizzard: ['9M', '9L1'],\n      poisonjab: ['9M'],\n      pollenpuff: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      seedbomb: ['9M'],\n      sleeppowder: ['9L1'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      solarblade: ['9M', '9L1'],\n      stunspore: ['9L1'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      swordsdance: ['9M'],\n      synthesis: ['9L1'],\n      takedown: ['9M'],\n      teeterdance: ['9L1'],\n      terablast: ['9M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M'],\n      victorydance: ['9L0'],\n      weatherball: ['9M']\n    }\n  ],\n  [\n    'basculin',\n    {\n      agility: ['9M', '8M', '7E', '6E', '5E', '5D'],\n      aquajet: ['9L12', '8L12', '7L9', '6L13', '5L13'],\n      aquatail: ['8L44', '7T', '7L20', '6T', '6L28', '5T', '5L28'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bite: ['9L16', '8L16', '7L7', '6L10', '5L10'],\n      blizzard: ['9M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      brine: ['8M', '7E', '6E', '5E'],\n      bubblebeam: ['9E', '8E', '7E', '6E', '5E'],\n      chillingwater: ['9M'],\n      chipaway: ['7L11', '6L16', '5L16'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L32', '8M', '8L32', '7L17', '6L24', '5L24'],\n      cut: ['6M', '5M'],\n      dive: ['8M', '6M', '5M'],\n      doubleedge: ['9M', '9L52', '8L52', '7L26', '6L36', '5L36'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9E', '8E', '7T', '6T', '5T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      finalgambit: ['9L40', '8L40', '7L38', '6L50', '5L51'],\n      flail: ['9L8', '8L8', '7L34', '6L1', '5L46'],\n      flipturn: ['9M', '8T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M'],\n      hail: ['8M', '7M', '6M', '5M'],\n      headbutt: ['9L24', '8L24', '7L5', '6L7', '5L7', '5D'],\n      headsmash: ['9L56', '8L56', '7L46', '7E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M'],\n      icefang: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T'],\n      liquidation: ['9M', '8M', '7T'],\n      muddywater: ['9M', '8M', '7E', '6E', '5E'],\n      mudshot: ['9M', '8M', '7E', '6E', '5E'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychicfangs: ['9M', '8M'],\n      rage: ['7E', '6E', '5E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M', '7E', '6E', '5E'],\n      reversal: ['9M', '8M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L30', '6L41', '5L41'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      snowscape: ['9M'],\n      soak: ['9L28', '8L28', '7L23', '6L32', '5L32'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M', '7E', '6E', '5E'],\n      tackle: ['9L4', '8L4', '7L1', '6L1', '5L1'],\n      tailwhip: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M', '9L36', '8L36', '7L14', '6L20', '5L20'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thrash: ['9L48', '8L48', '7L42', '6L1', '5L56'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '7L3', '6T', '6L4', '5T', '5L4'],\n      waterfall: ['9M', '8M', '7M', '6M', '5M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      waterpulse: ['9M'],\n      wavecrash: ['9L44'],\n      whirlpool: ['9M', '8M', '7E', '6E', '5E'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T', '5D']\n    }\n  ],\n  [\n    'basculinwhitestriped',\n    {\n      agility: ['9M'],\n      aquajet: ['9L12'],\n      bite: ['9L16'],\n      blizzard: ['9M'],\n      chillingwater: ['9M'],\n      crunch: ['9M', '9L32'],\n      doubleedge: ['9M', '9L52'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flail: ['9L8'],\n      flipturn: ['9M'],\n      headbutt: ['9L24'],\n      headsmash: ['9L56'],\n      hydropump: ['9M'],\n      icebeam: ['9M'],\n      icefang: ['9M'],\n      icywind: ['9M'],\n      lastrespects: ['9E'],\n      liquidation: ['9M'],\n      muddywater: ['9M'],\n      mudshot: ['9M'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M', '9L20'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      soak: ['9L28'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      swift: ['9M'],\n      tackle: ['9L4'],\n      tailwhip: ['9L1'],\n      takedown: ['9M', '9L36'],\n      terablast: ['9M'],\n      thrash: ['9L48'],\n      uproar: ['9M', '9L40'],\n      waterfall: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M'],\n      wavecrash: ['9L44'],\n      whirlpool: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'basculegion',\n    {\n      agility: ['9M'],\n      aquajet: ['9L12'],\n      bite: ['9L16'],\n      blizzard: ['9M'],\n      chillingwater: ['9M'],\n      confuseray: ['9M'],\n      crunch: ['9M', '9L32'],\n      doubleedge: ['9M', '9L52'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flail: ['9L8'],\n      flipturn: ['9M'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L24'],\n      headsmash: ['9L56'],\n      hex: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icefang: ['9M'],\n      icywind: ['9M'],\n      lastrespects: ['9E'],\n      liquidation: ['9M'],\n      muddywater: ['9M'],\n      mudshot: ['9M'],\n      nightshade: ['9M'],\n      outrage: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M', '9L1'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M', '9L20'],\n      shadowball: ['9M', '9L1'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      soak: ['9L28'],\n      spite: ['9M'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      swift: ['9M'],\n      tackle: ['9L4'],\n      tailwhip: ['9L1'],\n      takedown: ['9M', '9L36'],\n      terablast: ['9M'],\n      thrash: ['9L48'],\n      uproar: ['9M', '9L40'],\n      waterfall: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M'],\n      wavecrash: ['9L44'],\n      whirlpool: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'basculegionf',\n    {\n      agility: ['9M'],\n      aquajet: ['9L12'],\n      bite: ['9L16'],\n      blizzard: ['9M'],\n      chillingwater: ['9M'],\n      confuseray: ['9M'],\n      crunch: ['9M', '9L32'],\n      doubleedge: ['9M', '9L52'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flail: ['9L8'],\n      flipturn: ['9M'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L24'],\n      headsmash: ['9L56'],\n      hex: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icefang: ['9M'],\n      icywind: ['9M'],\n      lastrespects: ['9E'],\n      liquidation: ['9M'],\n      muddywater: ['9M'],\n      mudshot: ['9M'],\n      nightshade: ['9M'],\n      outrage: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M', '9L1'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M', '9L20'],\n      shadowball: ['9M', '9L1'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      soak: ['9L28'],\n      spite: ['9M'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      swift: ['9M'],\n      tackle: ['9L4'],\n      tailwhip: ['9L1'],\n      takedown: ['9M', '9L36'],\n      terablast: ['9M'],\n      thrash: ['9L48'],\n      uproar: ['9M', '9L40'],\n      waterfall: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M'],\n      wavecrash: ['9L44'],\n      whirlpool: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'sandile',\n    {\n      aquatail: ['9E', '8E', '7T', '6T', '5T'],\n      assurance: ['8M', '7L16', '6L16', '5L16'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['8M', '7E', '6E', '5E'],\n      bite: ['9L15', '8L15', '7L4', '6L4', '5L4'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E'],\n      crunch: ['9M', '9L27', '8M', '8L27', '7L28', '6L28', '5L28'],\n      curse: ['9M'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      dig: ['9M', '9L21', '8M', '8L21', '7L31', '6M', '6L31', '5M', '5L31'],\n      doubleedge: ['9M', '9E', '8E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      earthquake: ['9M', '9L36', '8M', '8L36', '7M', '7L43', '6M', '6L43', '5M', '5L43'],\n      embargo: ['7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firefang: ['9M', '8M', '7E', '6E', '5E'],\n      fling: ['9M'],\n      focusenergy: ['8M', '7E', '6E', '5E'],\n      foulplay: ['9M', '9L33', '8M', '8L33', '7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['9L6', '8L6', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      meanlook: ['7E', '6E', '5E'],\n      mefirst: ['7E', '6E'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7L19', '6L19', '5L19'],\n      payback: ['8M', '7M', '6M', '5M'],\n      powertrip: ['9L1', '8L1', '7E'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      pursuit: ['7E', '6E', '5E'],\n      rage: ['7L1', '6L1', '5L1'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rockclimb: ['7E', '6E', '5E'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L3', '8L3', '7L7', '6L7', '5L7'],\n      sandstorm: ['9M', '9L30', '8M', '8L30', '7M', '7L40', '6M', '6L40', '5M', '5L40'],\n      sandtomb: ['9M', '9L9', '8M', '8L9', '7L13', '6L13', '5L13'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L34', '6L34', '5L34'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '9E', '8E', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['9L24', '8L24', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thrash: ['9L39', '8L39', '7L46', '6L46', '5L46'],\n      thunderfang: ['9M', '8M', '7E', '6E', '5E'],\n      torment: ['9L18', '8L18', '7M', '7L10', '6M', '6L10', '5M', '5L10'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '7E', '6T', '6E', '5T', '5E']\n    }\n  ],\n  [\n    'krokorok',\n    {\n      aerialace: ['9M'],\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['8M', '7L16', '6L16', '5L16'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['8M'],\n      bite: ['9L15', '8L15', '7L1', '6L1', '5L1'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L27', '8M', '8L27', '7L28', '6L28', '5L28'],\n      curse: ['9M'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      dig: ['9M', '9L21', '8M', '8L21', '7L32', '6M', '6L32', '5M', '5L32'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dragonclaw: ['9M'],\n      dragontail: ['9M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      earthquake: ['9M', '9L42', '8M', '8L42', '7M', '7L48', '6M', '6L48', '5M', '5L48'],\n      embargo: ['7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firefang: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M', '7T', '6T'],\n      foulplay: ['9M', '9L35', '8M', '8L35', '7T', '7L40', '6T', '6L40', '5T', '5L40'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['9L1', '8L1', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7L19', '6L19', '5L19'],\n      payback: ['8M', '7M', '6M', '5M'],\n      powertrip: ['9L1', '8L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      rage: ['7L1', '6L1', '5L1'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      sandstorm: ['9M', '9L32', '8M', '8L32', '7M', '7L44', '6M', '6L44', '5M', '5L44'],\n      sandtomb: ['9M', '9L9', '8M', '8L9', '7L13', '6L13', '5L13'],\n      scaleshot: ['9M'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L36', '6L36', '5L36'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M', '8M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['9L24', '8L24', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thrash: ['9L47', '8L47', '7L52', '6L52', '5L52'],\n      thunderfang: ['9M', '8M'],\n      torment: ['9L18', '8L18', '7M', '7L10', '6M', '6L10', '5M', '5L10'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'krookodile',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['8M', '7L16', '6L16', '5L16'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['8M'],\n      bite: ['9L15', '8L15', '7L1', '6L1', '5L1'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      counter: ['5D'],\n      crunch: ['9M', '9L27', '8M', '8L27', '7L28', '6L28', '5L28', '5D'],\n      curse: ['9M'],\n      cut: ['6M', '5M'],\n      darkestlariat: ['8M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      dig: ['9M', '9L21', '8M', '8L21', '7L32', '6M', '6L32', '5M', '5L32'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      earthquake: ['9M', '9L44', '8M', '8L44', '7M', '7L54', '6M', '6L54', '5M', '5L54'],\n      embargo: ['7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firefang: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M', '7T', '6T'],\n      foulplay: ['9M', '9L35', '8M', '8L35', '7T', '7L42', '6T', '6L42', '5T', '5L42'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      gunkshot: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M', '8M'],\n      honeclaws: ['9L1', '8L1', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      meanlook: ['5D'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '7L19', '6L19', '5L19'],\n      outrage: ['9M', '9L58', '8M', '8L58', '7T', '7L60', '6T', '6L1', '5T', '5L60'],\n      payback: ['8M', '7M', '6M', '5M'],\n      powertrip: ['9L1', '8L1', '7L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      rage: ['7L1', '6L1', '5L1'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      sandstorm: ['9M', '9L32', '8M', '8L32', '7M', '7L48', '6M', '6L48', '5M', '5L48'],\n      sandtomb: ['9M', '9L9', '8M', '8L9', '7L13', '6L13', '5L13'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L36', '6L36', '5L36'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['9L24', '8L24', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thrash: ['9L51', '8L51'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderfang: ['9M', '8M'],\n      torment: ['9L18', '8L18', '7M', '7L10', '6M', '6L10', '5M', '5L10'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'darumaka',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      bellydrum: ['8L36', '7L30', '6L30', '5L30'],\n      bite: ['8L8'],\n      brickbreak: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      ember: ['8L1'],\n      encore: ['8M', '7E', '6E', '5E'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M', '7E', '6E', '5E'],\n      extrasensory: ['8E', '7E'],\n      facade: ['8M', '7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      fireblast: ['8M', '7M', '6M', '5M'],\n      firefang: ['8M', '8L20', '7L11', '6L11', '5L11'],\n      firepunch: ['8M', '8L28', '7T', '7L22', '6T', '6L22', '5T', '5L22'],\n      firespin: ['8M'],\n      flamecharge: ['7M', '6M', '5M'],\n      flamethrower: ['8M', '7M', '6M', '5M'],\n      flamewheel: ['8E', '7E', '6E', '5E'],\n      flareblitz: ['8M', '8L40', '7L33', '6L33', '5L33'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focusenergy: ['8M', '7E', '6E', '5E'],\n      focuspunch: ['8E', '7T', '7E', '6T', '6E', '5E'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      gyroball: ['8M', '7M', '6M', '5M'],\n      hammerarm: ['8E', '7E', '6E', '5E'],\n      headbutt: ['8L24', '7L14', '6L14', '5L14'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      incinerate: ['8L12', '7L6', '6M', '6L6', '5M', '5L6'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      overheat: ['8M', '7M', '7L42', '6M', '6L42', '5M', '5L42'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      rage: ['7L9', '6L9', '5L9'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['7M', '6M', '5M'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      rollout: ['7L3', '6L3', '5L3'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      snatch: ['7T', '7E', '6T', '6E'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '8L48', '7T', '7L39', '6T', '6L39', '5T', '5L39'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      takedown: ['8E', '7E', '6E', '5E'],\n      taunt: ['8M', '8L4', '7M', '7L35', '6M', '6L35', '5M', '5L35'],\n      thief: ['8M', '7M', '6M', '5M'],\n      thrash: ['8L44', '7L27', '6L27', '5L27'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '8L32', '7T', '7L17', '6T', '6L17', '5T', '5L17'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      willowisp: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '8L16', '7M', '7L25', '6L25', '5M', '5L25'],\n      yawn: ['8E', '7E', '6E', '5E'],\n      zenheadbutt: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'darumakagalar',\n    {\n      attract: ['8M'],\n      avalanche: ['8M', '8L12'],\n      bellydrum: ['8L36'],\n      bite: ['8L8'],\n      blizzard: ['8M', '8L40'],\n      brickbreak: ['8M'],\n      dig: ['8M'],\n      encore: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      fireblast: ['8M'],\n      firefang: ['8M'],\n      firepunch: ['8M'],\n      firespin: ['8M'],\n      flamethrower: ['8M'],\n      flamewheel: ['8E'],\n      flareblitz: ['8M'],\n      fling: ['8M'],\n      focusenergy: ['8M'],\n      focuspunch: ['8E'],\n      freezedry: ['8E'],\n      grassknot: ['8M'],\n      gyroball: ['8M'],\n      hammerarm: ['8E'],\n      headbutt: ['8L24'],\n      heatwave: ['8M'],\n      icebeam: ['8M'],\n      icefang: ['8M', '8L20'],\n      icepunch: ['8M', '8L28'],\n      incinerate: ['8E'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      overheat: ['8M'],\n      powdersnow: ['8L1'],\n      poweruppunch: ['8E'],\n      protect: ['8M'],\n      rest: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarbeam: ['8M'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      superpower: ['8M', '8L48'],\n      tackle: ['8L1'],\n      takedown: ['8E'],\n      taunt: ['8M', '8L4'],\n      thief: ['8M'],\n      thrash: ['8L44'],\n      uproar: ['8M', '8L32'],\n      uturn: ['8M'],\n      willowisp: ['8M'],\n      workup: ['8M', '8L16'],\n      yawn: ['8E'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'darmanitan',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      bellydrum: ['8L38', '7L30', '6L30', '6S1', '5L30', '5S0'],\n      bite: ['8L1'],\n      bodypress: ['8M'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M', '7M', '6M', '5M'],\n      bulkup: ['8M', '7M', '6M', '5M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      burningjealousy: ['8T'],\n      confide: ['7M', '6M'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      ember: ['8L1'],\n      encore: ['8M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      fireblast: ['8M', '7M', '6M', '5M'],\n      firefang: ['8M', '8L20', '7L11', '6L11', '5L11'],\n      firepunch: ['8M', '8L28', '7T', '7L22', '6T', '6L22', '5T', '5L22'],\n      firespin: ['8M'],\n      flamecharge: ['7M', '6M', '5M'],\n      flamethrower: ['8M', '7M', '6M', '5M'],\n      flareblitz: ['8M', '8L44', '7L33', '6L33', '6S1', '5L33', '5S0'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      focusenergy: ['8M'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      guardswap: ['8M'],\n      gyroball: ['8M', '7M', '6M', '5M'],\n      hammerarm: ['8L0', '7L1', '6L35', '6S1', '5L35', '5S0'],\n      headbutt: ['8L24', '7L14', '6L14', '5L14'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      incinerate: ['8L12', '7L1', '6M', '6L1', '5M', '5L1'],\n      irondefense: ['8M'],\n      ironhead: ['8M'],\n      laserfocus: ['7T'],\n      lashout: ['8T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mysticalfire: ['8M'],\n      overheat: ['8M', '7M', '7L54', '6M', '6L54', '5M', '5L54'],\n      payback: ['8M', '7M', '6M', '5M'],\n      powerswap: ['8M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychic: ['8M', '7M', '6M', '5M'],\n      rage: ['7L1', '6L1', '5L1'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['8M'],\n      roar: ['7M', '6M', '5M'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      rollout: ['7L1', '6L1', '5L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['7M', '6M', '5M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '8L56', '7T', '7L47', '6T', '6L47', '5T', '5L47'],\n      swagger: ['7M', '7L17', '6M', '6L17', '5M', '5L17'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      taunt: ['8M', '8L1', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      thief: ['8M', '7M', '6M', '5M'],\n      thrash: ['8L50', '7L27', '6L27', '6S1', '5L27', '5S0'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M'],\n      uproar: ['8M', '8L32', '7T', '6T', '5T'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      willowisp: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '8L16', '7M', '7L25', '6L25', '5M', '5L25'],\n      zenheadbutt: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'darmanitangalar',\n    {\n      attract: ['8M'],\n      avalanche: ['8M', '8L12'],\n      bellydrum: ['8L38'],\n      bite: ['8L1'],\n      blizzard: ['8M', '8L44'],\n      bodypress: ['8M'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M'],\n      bulkup: ['8M'],\n      bulldoze: ['8M'],\n      burningjealousy: ['8T'],\n      dig: ['8M'],\n      earthquake: ['8M'],\n      encore: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      fireblast: ['8M'],\n      firefang: ['8M'],\n      firepunch: ['8M'],\n      firespin: ['8M'],\n      flamethrower: ['8M'],\n      flareblitz: ['8M'],\n      fling: ['8M'],\n      focusblast: ['8M'],\n      focusenergy: ['8M'],\n      gigaimpact: ['8M'],\n      grassknot: ['8M'],\n      gyroball: ['8M'],\n      headbutt: ['8L24'],\n      heatwave: ['8M'],\n      hyperbeam: ['8M'],\n      icebeam: ['8M'],\n      icefang: ['8M', '8L20'],\n      icepunch: ['8M', '8L28'],\n      iciclecrash: ['8L0'],\n      irondefense: ['8M'],\n      ironhead: ['8M'],\n      lashout: ['8T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      overheat: ['8M'],\n      payback: ['8M'],\n      powdersnow: ['8L1'],\n      protect: ['8M'],\n      psychic: ['8M'],\n      rest: ['8M'],\n      reversal: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarbeam: ['8M'],\n      stoneedge: ['8M'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      superpower: ['8M', '8L56'],\n      tackle: ['8L1'],\n      taunt: ['8M', '8L1'],\n      thief: ['8M'],\n      thrash: ['8L50'],\n      uproar: ['8M', '8L32'],\n      uturn: ['8M'],\n      willowisp: ['8M'],\n      workup: ['8M', '8L16'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'maractus',\n    {\n      absorb: ['8L1', '7L1', '6L1', '5L1'],\n      acupressure: ['8L52', '7L29', '6L29', '5L29'],\n      aerialace: ['7M', '6M', '5M'],\n      afteryou: ['8L1', '7T', '7L1', '6T', '6L1', '5T', '5L57'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bounce: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      bulletseed: ['8M', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      cottonguard: ['8L60', '7L1', '6L1', '5L55'],\n      cottonspore: ['8L40', '7L18', '6L18', '5L18'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['8M', '7T', '6T', '5T'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['8M', '8L24', '7T', '7L26', '6T', '6L26', '5T', '5L26'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      grasswhistle: ['7E', '6E', '5E'],\n      grassyglide: ['8T'],\n      grassyterrain: ['8M', '7E', '6E'],\n      growth: ['8L4', '7L6', '6L6', '5L6'],\n      helpinghand: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypervoice: ['8M', '7T', '6T', '5T'],\n      ingrain: ['8L1', '7L33', '6L33', '5L33'],\n      knockoff: ['7T', '6T', '5T'],\n      leafstorm: ['8M'],\n      leechseed: ['8L12', '7E', '6E', '5E', '5D'],\n      megadrain: ['8L8', '7L13', '6L13', '5L13'],\n      naturepower: ['7M', '6M'],\n      needlearm: ['7L22', '6L22', '5L22'],\n      peck: ['8L1', '7L1', '6L1', '5L1'],\n      petalblizzard: ['8L36', '7L48', '6L48'],\n      petaldance: ['8L56', '7L38', '6L38', '5L38'],\n      pinmissile: ['8M', '8L20', '7L10', '6L10', '5L10', '5D'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '8L48', '7M', '7L50', '6M', '6L50', '5M', '5L50'],\n      spikes: ['8M', '7E', '6E', '5E', '5D'],\n      spikyshield: ['8L1', '7L1', '6L1'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      suckerpunch: ['8L16', '7L42', '6L42', '5L42'],\n      sunnyday: ['8M', '8L44', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      swagger: ['7M', '6M', '5M'],\n      sweetscent: ['8L28', '7L3', '6L3', '5L3'],\n      synthesis: ['8L32', '7T', '7L15', '6T', '6L15', '5T', '5L15'],\n      throatchop: ['8M', '7T'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      weatherball: ['8M'],\n      woodhammer: ['8E', '7E', '6E', '5E'],\n      worryseed: ['8E', '7T', '7E', '6T', '6E', '5T', '5E']\n    }\n  ],\n  [\n    'dwebble',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      block: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      bugbite: ['8L12', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      counter: ['8E', '7E', '6E', '5E'],\n      curse: ['8E', '7E', '6E', '5E'],\n      cut: ['6M', '5M'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M', '7E', '6E', '5E'],\n      facade: ['8M', '7M', '6M', '5M'],\n      feintattack: ['7L13', '6L13', '5L13'],\n      flail: ['8L16', '7L41', '6L41', '5L41'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['8L1', '7L1', '6L1', '5L1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      irondefense: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      knockoff: ['8E', '7T', '6T', '5T'],\n      naturepower: ['7M', '6M'],\n      nightslash: ['8E', '7E', '6E', '5E'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['8M', '8L32', '7L5', '6L5', '5L5'],\n      rockpolish: ['8L40', '7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      rockslide: ['8M', '8L24', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      rockwrecker: ['8L48', '7L43', '6L43', '5L43'],\n      rototiller: ['7E', '6E'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L11', '6L11', '5L11'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      sandtomb: ['8M', '7E', '6E', '5E'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      shellsmash: ['8L44', '7L37', '6L37', '5L37'],\n      skittersmack: ['8T'],\n      slash: ['8L20', '7L31', '6L31', '5L31'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['8L8', '7M', '7L17', '6M', '6L17', '5M', '5L17'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      spikes: ['8M', '7E', '6E', '5E'],\n      stealthrock: ['8M', '8L28', '7T', '7L24', '6T', '6L24', '5T', '5L24'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      wideguard: ['8E', '7E', '6E'],\n      withdraw: ['8L4', '7L7', '6L7', '5L7'],\n      xscissor: ['8M', '8L36', '7M', '7L35', '6M', '6L35', '5M', '5L35']\n    }\n  ],\n  [\n    'crustle',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      block: ['7T', '6T', '5T'],\n      bodypress: ['8M'],\n      bugbite: ['8L12', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      counter: ['5D'],\n      cut: ['6M', '5M'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      feintattack: ['7L13', '6L13', '5L13'],\n      flail: ['8L16', '7L50', '6L50', '5L50'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['8L1'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      heavyslam: ['8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      meteorbeam: ['8T'],\n      naturepower: ['7M', '6M'],\n      nightslash: ['5D'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['8M', '8L32', '7L1', '6L1', '5L1'],\n      rockpolish: ['8L44', '7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      rockslide: ['8M', '8L24', '7M', '7L29', '6M', '6L29', '5M', '5L29', '5D'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      rockwrecker: ['8L56', '7L55', '6L55', '5L55'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L1', '6L1', '5L1'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      sandtomb: ['8M'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      shellsmash: ['8L50', '7L1', '6L1', '5L1'],\n      skittersmack: ['8T'],\n      slash: ['8L20', '7L31', '6L31', '5L31'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['8L1', '7M', '7L17', '6M', '6L17', '5M', '5L17'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      solarblade: ['8M'],\n      spikes: ['8M'],\n      stealthrock: ['8M', '8L28', '7T', '7L24', '6T', '6L24', '5T', '5L24'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      withdraw: ['8L1', '7L1', '6L1', '5L1'],\n      xscissor: ['8M', '8L38', '7M', '7L38', '6M', '6L38', '5M', '5L38']\n    }\n  ],\n  [\n    'scraggy',\n    {\n      acidspray: ['9M', '8E', '7E'],\n      amnesia: ['9M', '8M', '7E', '6E', '5E'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['9L24', '8M', '8L24'],\n      brickbreak: ['9M', '9L32', '8M', '8L32', '7M', '7L23', '6M', '6L20', '5M', '5L20'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      chipaway: ['7L27', '6L27', '5L27'],\n      closecombat: ['9M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E'],\n      crunch: ['9M', '9L40', '8M', '8L40', '7L38', '6L38', '5L38'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      detect: ['9E', '8E', '7E', '6E', '5E'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M'],\n      dragondance: ['9M', '8M', '7E', '6E', '5E'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      dualchop: ['7T', '6T', '5T'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '9L16', '8M', '8L16', '7M', '7L42', '6M', '6L42', '5M', '5L42'],\n      fakeout: ['9E', '8E', '7E', '6E', '5E', '5D'],\n      faketears: ['9M', '8M'],\n      feintattack: ['7L9', '7E', '6L9', '6E', '5L9', '5E'],\n      firepunch: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '9L48', '8L48', '7T', '7L48', '6T', '6L48', '5L49'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      headbutt: ['9L8', '8L8', '7L1', '6L12', '5L12', '5S0'],\n      headsmash: ['9L52', '8L52', '7L50', '6L50', '5L53'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highjumpkick: ['9L44', '8L44', '7L31', '6L31', '5L31', '5S0'],\n      icepunch: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S0'],\n      lowkick: ['9M', '9L1', '8M', '8L1', '7T', '7L16', '6T', '6L1', '5T', '5L1', '5D', '5S0'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      payback: ['9L4', '8M', '8L4', '7M', '7L20', '6M', '6L23', '5M', '5L23'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      poweruppunch: ['8E', '7E', '6M'],\n      protect: ['9M', '8M', '8L20', '7M', '6M', '5M'],\n      quickguard: ['9E', '8E', '7E', '6E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rockclimb: ['7L45', '6L45', '5L45'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L12', '8L12', '7L5', '6L5', '5L5'],\n      scaryface: ['9M', '9L28', '8M', '8L28', '7L34', '6L34', '5L34'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['7T', '6T', '5T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superfang: ['9M', '7T', '6T', '5T'],\n      swagger: ['9L36', '8L36', '7M', '7L12', '6M', '6L16', '5M', '5L16'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      throatchop: ['9M'],\n      thunderpunch: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      torment: ['9L20', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['9M'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E']\n    }\n  ],\n  [\n    'scrafty',\n    {\n      acidspray: ['9M'],\n      amnesia: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['9L24', '8M', '8L24'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '9L32', '8M', '8L32', '7M', '7L23', '6M', '6L20', '5M', '5L20'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      chipaway: ['7L27', '6L27', '5L27'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L42', '8M', '8L42', '7L38', '6L38', '5L38'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '5S0'],\n      dualchop: ['7T', '6T', '5T'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '9L16', '8M', '8L16', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      faketears: ['9M', '8M'],\n      feintattack: ['7L1', '6L1', '5L1'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '5S0'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '9L54', '8L54', '7T', '7L58', '6T', '6L58', '5L58'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      headbutt: ['9L1', '8L1', '7L1', '6L12', '5L12'],\n      headsmash: ['9L60', '8L60', '7L65', '6L65', '5L65'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highjumpkick: ['9L48', '8L48', '7L31', '6L31', '5L31'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '9L1', '8M', '8L1', '7T', '7L16', '6T', '6L1', '5T', '5L1'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M'],\n      outrage: ['9M', '8M', '7T', '6T', '5T'],\n      payback: ['9L1', '8M', '8L1', '7M', '7L20', '6M', '6L23', '5M', '5L23', '5S0'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '8L20', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rockclimb: ['7L51', '6L51', '5L51'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['9L12', '8L12', '7L1', '6L1', '5L1'],\n      scaryface: ['9M', '9L28', '8M', '8L28', '7L34', '6L34', '5L34'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superfang: ['9M', '7T', '6T', '5T'],\n      swagger: ['9L36', '8L36', '7M', '7L12', '6M', '6L16', '5M', '5L16'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T'],\n      torment: ['9L20', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['9M'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'sigilyph',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      aircutter: ['8L15', '7L21', '6L21', '5L21'],\n      airslash: ['8M', '8L35', '7L41', '6L41', '5L41'],\n      ancientpower: ['8E', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      calmmind: ['8M', '7M', '6M', '5M'],\n      chargebeam: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1'],\n      cosmicpower: ['8M', '8L30', '7L48', '6L48', '5L48'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      dualwingbeat: ['8T'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      fly: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['8M', '7E', '6E'],\n      gigaimpact: ['8M'],\n      gravity: ['8L5', '7T', '7L38', '6T', '6L38', '5T', '5L38'],\n      gust: ['8L1', '7L1', '6L1', '5L1'],\n      heatwave: ['8M', '7T', '6T', '5T', '5D'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      hypnosis: ['8L10', '7L4', '6L4', '5L4', '5D'],\n      icebeam: ['8M', '7M', '6M', '5M'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      imprison: ['8M'],\n      lightscreen: ['8M', '8L50', '7M', '7L24', '6M', '6L24', '5M', '5L24'],\n      magiccoat: ['7T', '6T', '5T'],\n      magicroom: ['8M', '7T', '6T', '5T'],\n      miracleeye: ['7L1', '6L1', '5L1'],\n      mirrormove: ['7L34', '6L34', '5L34'],\n      pluck: ['5M'],\n      powerswap: ['8M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psybeam: ['8L20', '7L18', '6L18', '5L18'],\n      psychic: ['8M', '8L40', '7M', '7L44', '6M', '6L44', '5M', '5L44'],\n      psychocut: ['8M'],\n      psychoshift: ['8E', '7E', '6E', '5E'],\n      psychup: ['7M', '6M', '5M'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      psywave: ['7L8', '6L8', '5L8'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      reflect: ['8M', '8L50', '7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roost: ['8E', '7M', '7E', '6M', '6E', '5T', '5E'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['8M', '8L60', '7T', '7E', '6T', '6E', '5T', '5E'],\n      skyattack: ['8L55', '7T', '7L50', '6T', '6L50', '5T', '5L51'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      speedswap: ['8M'],\n      steelwing: ['8M', '7M', '7E', '6M', '6E', '5E'],\n      storedpower: ['8M', '7E', '6E', '5E', '5D'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M'],\n      synchronoise: ['7L31', '6L31', '5L31'],\n      tailwind: ['8L45', '7T', '7L11', '6T', '6L11', '5T', '5L11'],\n      telekinesis: ['7T', '5M'],\n      thief: ['8M', '7M', '6M', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      whirlwind: ['8L25', '7L14', '6L14', '5L14'],\n      zenheadbutt: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'yamask',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      allyswitch: ['8M', '7T', '7E', '6E'],\n      astonish: ['8L1', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      block: ['7T', '6T', '5T'],\n      calmmind: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      craftyshield: ['8L20', '7E'],\n      curse: ['8L36', '7L29', '6L29', '5L29'],\n      darkpulse: ['8M', '8L44', '7M', '6M', '5T'],\n      destinybond: ['8L52', '7L49', '6L49', '5L49'],\n      disable: ['8L12', '7L5', '7E', '6L5', '6E', '5L5', '5E'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      endure: ['8M', '7E', '6E', '5E'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      faketears: ['8M', '7E', '6E', '5E'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      grudge: ['8L32', '7L41', '6L41', '5L41'],\n      guardsplit: ['8L48', '7L33', '6L33', '5L33'],\n      haze: ['8L4', '7L9', '6L9', '5L9'],\n      healblock: ['7E', '6E', '5E'],\n      hex: ['8M', '8L24', '7L17', '6L17', '5L17'],\n      hiddenpower: ['7M', '6M', '5M'],\n      imprison: ['8M', '7E', '6E', '5E'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      magiccoat: ['7T', '6T', '5T'],\n      meanlook: ['8L28', '7L45', '6L45', '5L45'],\n      memento: ['8E', '7E', '6E', '5E'],\n      nastyplot: ['8M', '7E', '6E', '5E'],\n      nightmare: ['7E', '6E', '5E'],\n      nightshade: ['8L8', '7L13', '6L13', '5L13'],\n      ominouswind: ['7L25', '6L25', '5L25'],\n      painsplit: ['7T', '6T', '5T'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poltergeist: ['8T'],\n      powersplit: ['8L48', '7L33', '6L33', '5L33'],\n      protect: ['8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      psychic: ['8M', '7M', '6M', '5M'],\n      psychup: ['7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '8L40', '7M', '7L37', '6M', '6L37', '5M', '5L37'],\n      shockwave: ['7T', '6T'],\n      skillswap: ['8M', '7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      telekinesis: ['7T', '5M'],\n      thief: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      toxicspikes: ['8M', '7E', '6E'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      willowisp: ['8M', '8L16', '7M', '7L21', '6M', '6L21', '5M', '5L21'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'yamaskgalar',\n    {\n      allyswitch: ['8M'],\n      astonish: ['8L1'],\n      attract: ['8M'],\n      brutalswing: ['8M', '8L16'],\n      calmmind: ['8M'],\n      craftyshield: ['8L20'],\n      curse: ['8L36'],\n      darkpulse: ['8M'],\n      destinybond: ['8L52'],\n      disable: ['8L12'],\n      earthpower: ['8M'],\n      earthquake: ['8M', '8L44'],\n      endure: ['8M'],\n      energyball: ['8M'],\n      facade: ['8M'],\n      faketears: ['8M'],\n      guardsplit: ['8L48'],\n      haze: ['8L4'],\n      hex: ['8M', '8L24'],\n      imprison: ['8M'],\n      irondefense: ['8M'],\n      meanlook: ['8L28'],\n      memento: ['8E'],\n      nastyplot: ['8M'],\n      nightshade: ['8L8'],\n      payback: ['8M'],\n      poltergeist: ['8T'],\n      powersplit: ['8L48'],\n      protect: ['8M', '8L1'],\n      psychic: ['8M'],\n      raindance: ['8M'],\n      rest: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sandstorm: ['8M'],\n      shadowball: ['8M', '8L40'],\n      skillswap: ['8M'],\n      slam: ['8L32'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      substitute: ['8M'],\n      thief: ['8M'],\n      toxicspikes: ['8M'],\n      trick: ['8M'],\n      trickroom: ['8M'],\n      willowisp: ['8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'cofagrigus',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      allyswitch: ['8M', '7T'],\n      astonish: ['8L1', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      block: ['7T', '6T', '5T'],\n      bodypress: ['8M'],\n      calmmind: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      craftyshield: ['8L20'],\n      curse: ['8L38', '7L29', '6L29', '5L29'],\n      darkpulse: ['8M', '8L50', '7M', '7S0', '6M', '5T'],\n      destinybond: ['8L62', '7L57', '6L57', '5L57'],\n      disable: ['8L12', '7L1', '6L1', '5L1'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      faketears: ['8M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      grudge: ['8L32', '7L45', '6L45', '5L45'],\n      guardsplit: ['8L56', '7L33', '6L33', '5L33'],\n      guardswap: ['8M'],\n      haze: ['8L1', '7L1', '6L1', '5L1'],\n      hex: ['8M', '8L24', '7L17', '6L17', '5L17'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      imprison: ['8M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      magiccoat: ['7T', '6T', '5T'],\n      meanlook: ['8L28', '7L51', '6L51', '5L51'],\n      nastyplot: ['8M'],\n      nightshade: ['8L1', '7L13', '6L13', '5L13'],\n      ominouswind: ['7L25', '6L25', '5L25'],\n      painsplit: ['7T', '6T', '5T'],\n      payback: ['8M', '7M', '6M', '5M'],\n      phantomforce: ['8M'],\n      poltergeist: ['8T'],\n      powersplit: ['8L56', '7L33', '7S0', '6L33', '5L33'],\n      powerswap: ['8M'],\n      protect: ['8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      psychic: ['8M', '7M', '6M', '5M'],\n      psychup: ['7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M', '8L1', '7L1', '6L34', '5L34'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '8L44', '7M', '7L39', '7S0', '6M', '6L39', '5M', '5L39'],\n      shadowclaw: ['8M', '8L0'],\n      shockwave: ['7T', '6T'],\n      skillswap: ['8M', '7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      telekinesis: ['7T', '5M'],\n      thief: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      toxicspikes: ['8M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      willowisp: ['8M', '8L16', '7M', '7L21', '7S0', '6M', '6L21', '5M', '5L21'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'runerigus',\n    {\n      allyswitch: ['8M'],\n      amnesia: ['8M'],\n      astonish: ['8L1'],\n      attract: ['8M'],\n      bodypress: ['8M'],\n      brutalswing: ['8M', '8L16'],\n      bulldoze: ['8M'],\n      calmmind: ['8M'],\n      craftyshield: ['8L20'],\n      curse: ['8L38'],\n      darkpulse: ['8M'],\n      destinybond: ['8L62'],\n      disable: ['8L12'],\n      dragonpulse: ['8M'],\n      earthpower: ['8M'],\n      earthquake: ['8M', '8L50'],\n      endure: ['8M'],\n      energyball: ['8M'],\n      facade: ['8M'],\n      faketears: ['8M'],\n      gigaimpact: ['8M'],\n      grassknot: ['8M'],\n      guardsplit: ['8L56'],\n      guardswap: ['8M'],\n      haze: ['8L1'],\n      hex: ['8M', '8L24'],\n      hyperbeam: ['8M'],\n      imprison: ['8M'],\n      irondefense: ['8M'],\n      meanlook: ['8L28'],\n      nastyplot: ['8M'],\n      nightshade: ['8L1'],\n      payback: ['8M'],\n      phantomforce: ['8M'],\n      poltergeist: ['8T'],\n      powersplit: ['8L56'],\n      powerswap: ['8M'],\n      protect: ['8M', '8L1'],\n      psychic: ['8M'],\n      raindance: ['8M'],\n      rest: ['8M'],\n      revenge: ['8M'],\n      rockblast: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sandstorm: ['8M'],\n      sandtomb: ['8M'],\n      scaryface: ['8M', '8L1'],\n      shadowball: ['8M', '8L44'],\n      shadowclaw: ['8M', '8L0'],\n      skillswap: ['8M'],\n      slam: ['8L32'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      stealthrock: ['8M'],\n      stoneedge: ['8M'],\n      substitute: ['8M'],\n      taunt: ['8M'],\n      thief: ['8M'],\n      toxicspikes: ['8M'],\n      trick: ['8M'],\n      trickroom: ['8M'],\n      willowisp: ['8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'tirtouga',\n    {\n      ancientpower: ['8L12', '7L18', '6L18', '5L18'],\n      aquajet: ['8L6', '7L15', '6L15', '5L15', '5S0'],\n      aquatail: ['8L36', '7T', '7L41', '6T', '6L41', '5T', '5L41'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L1', '7E', '6L1', '6E', '5L1', '5E'],\n      bite: ['8L15', '7L8', '6L8', '5L8', '5S0'],\n      blizzard: ['8M', '7M', '6M', '5M'],\n      block: ['8E', '7T', '6T', '5T'],\n      bodyslam: ['8M', '7E', '6E', '5E', '5S0'],\n      brine: ['8M', '8L21', '7L28', '6L28', '5L28'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L27', '7L21', '6L21', '5L21'],\n      curse: ['8L30', '7L35', '6L35', '5L35'],\n      dig: ['8M', '6M', '5M'],\n      dive: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['8M', '7T', '6T', '5T'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flail: ['7E', '6E', '5E', '5D'],\n      frustration: ['7M', '6M', '5M'],\n      guardswap: ['8M', '7E', '6E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['8M', '8L42', '7L50', '6L50', '5L51'],\n      icebeam: ['8M', '7M', '6M', '5M'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      irondefense: ['8M', '8L33', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['8E', '7T', '7E', '6T', '6E', '5E'],\n      liquidation: ['8M', '7T', '7E'],\n      meteorbeam: ['8T'],\n      muddywater: ['8M'],\n      mudshot: ['8M'],\n      protect: ['8M', '8L3', '7M', '7L11', '6M', '6L11', '5M', '5L11', '5S0'],\n      raindance: ['8M', '8L39', '7M', '7L48', '6M', '6L48', '5M', '5L48'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['8M', '8L24', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      rocksmash: ['6M', '5M'],\n      rockthrow: ['8E', '7E', '6E', '5E'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      rollout: ['8E', '7L5', '6L5', '5L5', '5D'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shellsmash: ['8L45', '7L38', '6L38', '5L38'],\n      slam: ['8E', '7E', '6E', '5E'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['8L9', '7M', '7L31', '6M', '6L31', '5M', '5L31'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      waterfall: ['8M', '7M', '6M', '5M'],\n      watergun: ['8L1', '7L1', '6L1', '5L1'],\n      waterpulse: ['8E', '7T', '7E', '6T', '6E', '5E'],\n      whirlpool: ['8M', '7E', '6E', '5E'],\n      wideguard: ['8L18', '7L25', '6L25', '5L25'],\n      withdraw: ['8L1', '7L1', '6L1', '5L1'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'carracosta',\n    {\n      ancientpower: ['8L12', '7L18', '6L18', '5L18'],\n      aquajet: ['8L1', '7L15', '6L15', '5L15'],\n      aquatail: ['8L36', '7T', '7L45', '6T', '6L45', '5T', '5L45'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L1', '6L1', '5L1'],\n      bite: ['8L15', '7L8', '6L8', '5L8'],\n      blizzard: ['8M', '7M', '6M', '5M'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['8M'],\n      brine: ['8M', '8L21', '7L28', '6L28', '5L28'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L27', '7L21', '6L21', '5L21'],\n      curse: ['8L30', '7L35', '6L35', '5L35'],\n      dig: ['8M', '6M', '5M'],\n      dive: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['8M', '7T', '6T', '5T'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      guardswap: ['8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['8M', '8L46', '7L61', '6L61', '5L61'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      icebeam: ['8M', '7M', '6M', '5M'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      irondefense: ['8M', '8L33', '7T', '6T', '5T'],\n      ironhead: ['8M', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T'],\n      liquidation: ['8M', '7T'],\n      lowkick: ['8M', '7T', '6T', '5T'],\n      meteorbeam: ['8T'],\n      muddywater: ['8M'],\n      mudshot: ['8M'],\n      protect: ['8M', '8L1', '7M', '7L11', '6M', '6L11', '5M', '5L11'],\n      raindance: ['8M', '8L41', '7M', '7L56', '6M', '6L56', '5M', '5L56'],\n      razorshell: ['8M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['8M', '8L24', '7M', '7L51', '6M', '6L51', '5M', '5L51'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      rollout: ['7L1', '6L1', '5L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shellsmash: ['8L51', '7L40', '6L40', '5L40'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['8L9', '7M', '7L31', '6M', '6L31', '5M', '5L31'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      waterfall: ['8M', '7M', '6M', '5M'],\n      watergun: ['8L1', '7L1', '6L1', '5L1'],\n      waterpulse: ['7T', '6T'],\n      whirlpool: ['8M'],\n      wideguard: ['8L18', '7L25', '6L25', '5L25'],\n      withdraw: ['8L1', '7L1', '6L1', '5L1'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'archen',\n    {\n      acrobatics: ['8M', '7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['8M', '8L33', '7L21', '6L21', '5L21'],\n      allyswitch: ['8M', '7T', '7E', '6E'],\n      ancientpower: ['8L12', '7L18', '6L18', '5L18'],\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bite: ['8E', '7E', '6E', '5E'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L30', '7L35', '6L35', '5L35'],\n      cut: ['6M', '5M'],\n      defog: ['8E', '7T', '7E', '6E', '5E'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['8E', '7M', '7L8', '6M', '6L8', '5M', '5L8', '5S0'],\n      dragonbreath: ['8L9', '7L31', '6L31', '5L31'],\n      dragonclaw: ['8M', '8L39', '7M', '7L48', '6M', '6L48', '5M', '5L48'],\n      dragonpulse: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      dualwingbeat: ['8T'],\n      earthpower: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endeavor: ['8L45', '7T', '7L38', '6T', '6L38', '5T', '5L38'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      headsmash: ['8E', '7E', '6E', '5E', '5S0'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['8E', '7T', '7E', '6T', '6E', '5E'],\n      lashout: ['8T'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      meteorbeam: ['8T'],\n      pluck: ['8L15', '7L15', '6L15', '5M', '5L15'],\n      protect: ['8M', '7M', '6M', '5M'],\n      quickattack: ['8L1', '7L1', '6L1', '5L1'],\n      quickguard: ['8L18', '7L25', '6L25', '5L25'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['7M', '6M', '5M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['8M', '8L24', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      rocksmash: ['6M', '5M'],\n      rockthrow: ['8L3', '7L5', '6L5', '5L5'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M', '8L27', '7L11', '6L11', '5L11', '5S0'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      steelwing: ['8M', '7M', '7E', '6M', '6E', '5E'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M'],\n      switcheroo: ['8E', '7E', '6E'],\n      tailwind: ['8L36', '7T', '6T', '5T'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      thrash: ['8L42', '7L50', '6L50', '5L51'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['8M', '8L21', '7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      wingattack: ['8L6', '7L1', '6L1', '5L1', '5S0'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'archeops',\n    {\n      acrobatics: ['8M', '7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['8M', '8L33', '7L21', '6L21', '5L21'],\n      airslash: ['8M'],\n      allyswitch: ['8M', '7T'],\n      ancientpower: ['8L12', '7L18', '6L18', '5L18'],\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L30', '7L35', '6L35', '5L35'],\n      cut: ['6M', '5M'],\n      defog: ['7T'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '7L8', '6M', '6L8', '5M', '5L8'],\n      dragonbreath: ['8L9', '7L31', '6L31', '5L31'],\n      dragonclaw: ['8M', '8L41', '7M', '7L56', '6M', '6L56', '5M', '5L56'],\n      dragonpulse: ['8M', '7T', '6T', '5T'],\n      dragontail: ['7M', '6M', '5M'],\n      dualwingbeat: ['8T'],\n      earthpower: ['8M', '7T', '6T', '5T'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endeavor: ['8L51', '7T', '7L40', '6T', '6L40', '5T', '5L40'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      fly: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T'],\n      lashout: ['8T'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      meteorbeam: ['8T'],\n      outrage: ['8M', '7T', '6T', '5T'],\n      pluck: ['8L15', '7L15', '6L15', '5M', '5L15'],\n      protect: ['8M', '7M', '6M', '5M'],\n      quickattack: ['8L1', '7L1', '6L1', '5L1'],\n      quickguard: ['8L18', '7L25', '6L25', '5L25'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['7M', '6M', '5M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['8M', '8L24', '7M', '7L51', '6M', '6L51', '5M', '5L51'],\n      rocksmash: ['6M', '5M'],\n      rockthrow: ['8L1', '7L1', '6L1', '5L1'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M', '8L27', '7L11', '6L11', '5L11'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      skyattack: ['7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      steelwing: ['8M', '7M', '6M'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M'],\n      tailwind: ['8L36', '7T', '6T', '5T'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      thrash: ['8L46', '7L61', '6L61', '5L61'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['8M', '8L21', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      wingattack: ['8L1', '7L1', '6L1', '5L1'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'trubbish',\n    {\n      acidspray: ['8L6', '7L12', '6L12', '5L12'],\n      amnesia: ['8M', '8L9', '7L40', '6L40', '5L40'],\n      attract: ['8M', '7M', '6M', '5M'],\n      autotomize: ['8E', '7E'],\n      belch: ['8L33', '7L42', '6L42'],\n      clearsmog: ['8L12', '7L34', '6L34', '5L34'],\n      confide: ['7M', '6M'],\n      corrosivegas: ['8T'],\n      curse: ['8E', '7E', '6E', '5E'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      doubleslap: ['7L14', '6L14', '5L14'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['8M', '7T', '6T', '5T'],\n      endure: ['8M'],\n      explosion: ['8L42', '7M', '7L47', '6M', '6L47', '5M', '5L47'],\n      facade: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      gunkshot: ['8M', '8L39', '7T', '7L45', '6T', '6L45', '5T', '5L45'],\n      haze: ['8E', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      mudsport: ['7E', '6E', '5E'],\n      painsplit: ['8L37', '7T', '6T', '5T'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisongas: ['8L1', '7L1', '6L1', '5L1'],\n      pound: ['8L1', '7L1', '6L1', '5L1'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      recycle: ['8L3', '7T', '7L3', '6T', '6L3', '5T', '5L3'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['8M', '7E', '6E', '5E'],\n      rollout: ['8E', '7E', '6E', '5E'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8E', '7E', '6E', '5E'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '7T', '6T', '5T'],\n      selfdestruct: ['8M', '7E', '6E', '5E'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludge: ['8L18', '7L18', '6L18', '5L18'],\n      sludgebomb: ['8M', '8L27', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spikes: ['8M', '7E', '6E', '5E'],\n      spite: ['7T', '6T', '5T'],\n      stockpile: ['8L21', '7L23', '6L23', '5L23'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swallow: ['8L21', '7L23', '6L23', '5L23'],\n      takedown: ['8L24', '7L25', '6L25', '5L25'],\n      thief: ['8M', '7M', '6M', '5M'],\n      toxic: ['8L30', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      toxicspikes: ['8M', '8L15', '7L7', '6L7', '5L7'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'garbodor',\n    {\n      acidspray: ['8L1', '7L12', '6L12', '5L12'],\n      amnesia: ['8M', '8L9', '7L46', '6L46', '5L46'],\n      attract: ['8M', '7M', '6M', '5M'],\n      belch: ['8L33', '7L49', '6L49'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '8L24', '7L25', '6L25', '5L25'],\n      clearsmog: ['8L12', '7L34', '6L34', '5L34'],\n      confide: ['7M', '6M'],\n      corrosivegas: ['8T'],\n      crosspoison: ['8M'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      doubleslap: ['7L14', '6L14', '5L14'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['8M', '7T', '6T', '5T'],\n      endure: ['8M'],\n      explosion: ['8L48', '7M', '7L59', '6M', '6L59', '5M', '5L59'],\n      facade: ['8M', '7M', '6M', '5M'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      gunkshot: ['8M', '8L43', '7T', '7L54', '6T', '6L54', '5T', '5L54'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      metalclaw: ['8L1'],\n      painsplit: ['8L39', '7T', '6T', '5T'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisongas: ['8L1', '7L1', '6L1', '5L1'],\n      pound: ['8L1', '7L1', '6L1', '5L1'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychic: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      recycle: ['8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '7T', '6T', '5T'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludge: ['8L18', '7L18', '6L18', '5L18'],\n      sludgebomb: ['8M', '8L27', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      smackdown: ['7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      spikes: ['8M'],\n      spite: ['7T', '6T', '5T'],\n      stockpile: ['8L21', '7L23', '6L23', '5L23'],\n      stompingtantrum: ['8M', '7T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swallow: ['8L21', '7L23', '6L23', '5L23'],\n      takedown: ['8L1'],\n      thief: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      toxic: ['8L30', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      toxicspikes: ['8M', '8L15', '7L1', '6L1', '5L1'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'zorua',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['9M', '9L32', '8M', '8L32', '7L37', '6L37', '5L37'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      burningjealousy: ['9M', '8T'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      copycat: ['9E', '8E', '7E', '6E'],\n      counter: ['9E', '8E', '7E', '6E', '5E'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '8M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      detect: ['9E', '8E', '7E', '6E', '5E'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      embargo: ['7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      encore: ['9M'],\n      endure: ['9M', '8M'],\n      extrasensory: ['9E', '8E', '7E', '6E', '5E'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      faketears: ['9M', '9L28', '8M', '8L28', '7L9', '6L9', '5L9'],\n      feintattack: ['7L17', '6L17', '5L17'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      foulplay: ['9M', '9L48', '8M', '8L48', '7T', '7L29', '6T', '6L29', '5T', '5L29'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['9L12', '8L12', '7L13', '6L13', '5L13'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['9L8', '8L8', '6M', '5M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      imprison: ['9M', '9L36', '8M', '8L36', '7L53', '6L53', '5L53'],\n      incinerate: ['6M', '5M'],\n      knockoff: ['9M', '9L24', '8L24', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      memento: ['9E', '8E', '7E', '6E', '5E'],\n      nastyplot: ['9M', '9L44', '8M', '8L44', '7L49', '6L49', '5L49'],\n      nightdaze: ['9L40', '8L40', '7L57', '6L57', '5L57'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      punishment: ['7L45', '6L45', '5L45'],\n      pursuit: ['7L5', '6L5', '5L5'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L16', '8M', '8L16', '7L21', '6L21', '5L21'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shadowclaw: ['9M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      suckerpunch: ['9E', '8E', '7E', '6E', '5E'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20', '8M', '8L20', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      torment: ['9L4', '8L4', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '6T', '5T'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'zoruahisui',\n    {\n      agility: ['9M', '9L32'],\n      bittermalice: ['9L40'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M'],\n      comeuppance: ['9E'],\n      confuseray: ['9M'],\n      curse: ['9M', '9L16'],\n      darkpulse: ['9M'],\n      detect: ['9E'],\n      dig: ['9M'],\n      endure: ['9M'],\n      extrasensory: ['9E'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      fling: ['9M'],\n      focuspunch: ['9M'],\n      foulplay: ['9M', '9L48'],\n      gigaimpact: ['9M'],\n      hex: ['9M'],\n      honeclaws: ['9L8'],\n      hyperbeam: ['9M'],\n      icywind: ['9M'],\n      imprison: ['9M'],\n      knockoff: ['9M', '9L24'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      memento: ['9E'],\n      nastyplot: ['9M', '9L44'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      roar: ['9M'],\n      scratch: ['9L1'],\n      shadowball: ['9M', '9L36'],\n      shadowclaw: ['9M'],\n      shadowsneak: ['9L12'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      snarl: ['9M'],\n      snowscape: ['9M'],\n      spite: ['9M', '9L28'],\n      substitute: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      torment: ['9L4'],\n      trick: ['9M'],\n      uturn: ['9M'],\n      willowisp: ['9M']\n    }\n  ],\n  [\n    'zoroark',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      agility: ['9M', '9L34', '8M', '8L34', '7L39', '6L39', '5L39', '5S0'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bodyslam: ['9M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      brickbreak: ['9M'],\n      burningjealousy: ['9M', '8T'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['9M'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '6S1', '5T'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      embargo: ['7M', '7L44', '6M', '6L44', '5M', '5L44', '5S0'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      faketears: ['9M', '9L28', '8M', '8L28'],\n      feintattack: ['7L17', '6L17', '5L17'],\n      flamethrower: ['9M', '8M', '7M', '6M', '6S1', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      foulplay: ['9M', '9L58', '8M', '8L58', '7T', '7L29', '6T', '6L29', '5T', '5L29'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['9L12', '8L12', '7L13', '6L13', '6S2', '5L13'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['9L1', '8L1', '7L1', '6M', '6L1', '5M', '5L1'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      hypervoice: ['9M', '8M', '7T', '6T', '5T'],\n      imprison: ['9M', '9L40', '8M', '8L40', '7L1', '6L1', '5L59'],\n      incinerate: ['6M', '5M'],\n      knockoff: ['9M', '9L24', '8L24', '7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L52', '8M', '8L52', '7L54', '6L54', '6S2', '5L54'],\n      nightdaze: ['9L46', '8L46', '7L1', '6L1', '5L64'],\n      nightshade: ['9M'],\n      nightslash: ['9L0', '8L0', '7L1', '6L30', '5L30'],\n      painsplit: ['9M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      punishment: ['7L49', '6L49', '6S2', '5L49', '5S0'],\n      pursuit: ['7L1', '6L1', '5L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M', '8L16', '7L21', '6L21', '6S2', '5L21'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '6S1'],\n      snarl: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      suckerpunch: ['6S1'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20', '8M', '8L20', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      throatchop: ['9M', '8M', '7T'],\n      torment: ['9L1', '8L1', '7M', '7L34', '6M', '6L34', '5M', '5L34'],\n      toxic: ['9M', '7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '6T', '5T'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1']\n    }\n  ],\n  [\n    'zoroarkhisui',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '9L34'],\n      bittermalice: ['9L46', '9S0'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M'],\n      confuseray: ['9M'],\n      crunch: ['9M'],\n      curse: ['9M', '9L16'],\n      darkpulse: ['9M'],\n      dig: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      flamethrower: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      foulplay: ['9M', '9L58'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      happyhour: ['9S0'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      honeclaws: ['9L1'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icywind: ['9M'],\n      imprison: ['9M'],\n      knockoff: ['9M', '9L24'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      nastyplot: ['9M', '9L52', '9S0'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      roar: ['9M'],\n      scaryface: ['9M'],\n      scratch: ['9L1'],\n      shadowball: ['9M', '9L40'],\n      shadowclaw: ['9M', '9L0'],\n      shadowsneak: ['9L12'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      snarl: ['9M'],\n      snowscape: ['9M'],\n      spite: ['9M', '9L28'],\n      substitute: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20'],\n      terablast: ['9M', '9S0'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      torment: ['9L1'],\n      trick: ['9M'],\n      uturn: ['9M', '9L1'],\n      willowisp: ['9M']\n    }\n  ],\n  [\n    'minccino',\n    {\n      afteryou: ['9L28', '8L28', '7T', '7L49', '6T', '6L49', '5T', '5L49'],\n      alluringvoice: ['9M'],\n      aquatail: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      babydolleyes: ['9L1', '8L1', '7L3', '6L3'],\n      batonpass: ['9M'],\n      bulletseed: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['7L39', '6L39', '5L39'],\n      charm: ['9M', '9L16', '8M', '8L16', '7L27', '6L27', '5L27'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleslap: ['7L13', '6L13', '5L13'],\n      doubleteam: ['7M', '6M', '5M'],\n      echoedvoice: ['9L8', '8L8', '7M', '7L33', '6M', '6L33', '5M', '5L33'],\n      encore: ['9M', '9L24', '8M', '8L24', '7L15', '6L15', '5L15'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M', '7E', '6E', '5E'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      faketears: ['9M', '8M', '7E', '6E', '5E'],\n      flail: ['9E', '8E', '7E', '6E', '5E'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      growl: ['5L3'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T'],\n      helpinghand: ['9M', '9L4', '8M', '8L4', '7T', '7L7', '6T', '6L7', '5T', '5L7'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypervoice: ['9M', '9L44', '8M', '8L44', '7T', '7L43', '6T', '6L43', '5T', '5L43'],\n      irontail: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      knockoff: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lastresort: ['9L48', '8L48', '7T', '7L45', '6T', '6L45', '5T', '5L45'],\n      mudslap: ['9M', '7E', '6E', '5E'],\n      playrough: ['9M', '8M'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T'],\n      shockwave: ['7T', '6T'],\n      sing: ['9L12', '8L12', '7L21', '6L21', '5L21'],\n      slam: ['9L40', '8L40', '7L37', '6L37', '5L37'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      snore: ['8M', '7T', '6T', '5T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superfang: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '9L20', '8M', '8L20', '7L19', '6L19', '5L19'],\n      tailslap: ['9L32', '8M', '8L32', '7L25', '6L25', '5L25'],\n      tailwhip: ['9E', '8E', '7E', '6E', '5E'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      tickle: ['9L36', '8L36', '7L9', '6L9', '5L9'],\n      tidyup: ['9E'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      uproar: ['9M', '8M', '7T', '6T', '5T'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      wakeupslap: ['7L31', '6L31', '5L31'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'cinccino',\n    {\n      afteryou: ['9L1', '8L1', '7T', '6T', '5T'],\n      alluringvoice: ['9M'],\n      aquatail: ['7T', '6T', '5T'],\n      attract: ['8M', '7M', '6M', '5M'],\n      babydolleyes: ['9L1', '8L1'],\n      batonpass: ['9M'],\n      bulletseed: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      echoedvoice: ['9L1', '8L1', '7M', '6M', '5M'],\n      encore: ['9M', '9L1', '8M', '8L1'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      faketears: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      gunkshot: ['9M', '8M', '7T', '6T', '5T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      hypervoice: ['9M', '9L1', '8M', '8L1', '7T', '6T', '5T'],\n      icespinner: ['9M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      lastresort: ['9L1', '8L1', '7T', '6T', '5T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      mudslap: ['9M'],\n      playrough: ['9M', '8M'],\n      pound: ['9L1', '8L1'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockblast: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T'],\n      shockwave: ['7T', '6T'],\n      sing: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      slam: ['9L1', '8L1'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superfang: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '9L1', '8M', '8L1'],\n      tailslap: ['9L0', '8M', '8L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      tickle: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      uproar: ['9M', '8M', '7T', '6T', '5T'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'gothita',\n    {\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['7E', '6E', '5E'],\n      chargebeam: ['7M', '6M', '5M'],\n      charm: ['9M', '9L16', '8M', '8L16', '7L46', '6L46', '5L46'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '8L1', '7L3', '6L3', '5L3'],\n      covet: ['7T', '6T', '5T'],\n      darkpulse: ['9M', '8M', '7M', '7E', '6M', '6E', '5E'],\n      doubleslap: ['7L14', '6L14', '5L14'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fakeout: ['9E', '8E'],\n      faketears: ['9M', '9L28', '8M', '8L28', '7L10', '6L10', '5L10'],\n      feintattack: ['7L24', '6L24', '5L24'],\n      flash: ['6M', '5M'],\n      flatter: ['9L40', '8L40', '7L28', '6L28', '5L28'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['9M', '9L44', '8M', '8L44', '7L31', '6L31', '5L31'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      guardswap: ['8M'],\n      healbell: ['7T', '6T', '5T'],\n      healblock: ['7L33', '6L33', '5L33'],\n      healpulse: ['9E', '8E', '7E', '6E'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypnosis: ['9L24', '8L24'],\n      imprison: ['9M'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      magicroom: ['9L48', '8M', '8L48', '7T', '7L48', '6T', '6L48', '5T', '5L48'],\n      meanlook: ['9E', '8E', '7E', '6E', '5E'],\n      miracleeye: ['7E', '6E', '5E'],\n      mirrorcoat: ['9E', '8E', '7E', '6E', '5E'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      playnice: ['9L4', '8L4', '7L8', '6L8'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psybeam: ['9M', '9L12', '8L12', '7L16', '6L16', '5L16'],\n      psychic: ['9M', '9L36', '8M', '8L36', '7M', '7L37', '6M', '6L37', '5M', '5L37'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '9L33', '8L33', '7M', '6M', '5M'],\n      psyshock: ['9M', '9L20', '8M', '8L20', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      telekinesis: ['7T', '7L40', '6L40', '5M', '5L40'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      tickle: ['9L8', '8L8', '7L7', '6L7', '5L7'],\n      torment: ['9E', '8E', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '6T', '5T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      uproar: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'gothorita',\n    {\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      chargebeam: ['7M', '6M', '5M'],\n      charm: ['9M', '9L16', '8M', '8L16', '7L50', '6L50', '5L50'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      covet: ['7T', '6T', '5T'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      doubleslap: ['7L14', '6L14', '5L14'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      faketears: ['9M', '9L28', '8M', '8L28', '7L10', '6L10', '5L1'],\n      feintattack: ['7L24', '6L24', '5L24'],\n      flash: ['6M', '5M'],\n      flatter: ['9L46', '8L46', '7L28', '6L28', '5L28', '5S0', '5S1'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['9M', '9L52', '8M', '8L52', '7L31', '6L31', '5L31', '5S0', '5S1'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      guardswap: ['8M'],\n      healbell: ['7T', '6T', '5T'],\n      healblock: ['7L34', '6L34', '5L34'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypnosis: ['9L24', '8L24'],\n      imprison: ['9M', '5S1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      magicroom: ['9L58', '8M', '8L58', '7T', '7L53', '6T', '6L53', '5T', '5L53'],\n      metronome: ['9M'],\n      mirrorcoat: ['5S0'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      playnice: ['9L1', '8L1', '7L1', '6L1'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psybeam: ['9M', '9L12', '8L12', '7L16', '6L16', '5L16'],\n      psychic: ['9M', '8M', '8L40', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '9L35', '8L35', '7M', '6M', '5M'],\n      psyshock: ['9M', '9L20', '8M', '8L20', '7M', '7L25', '6M', '6L25', '5M', '5L25', '5S0', '5S1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      telekinesis: ['7T', '7L43', '6L43', '5M', '5L43'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      tickle: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '6T', '5T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'gothitelle',\n    {\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      chargebeam: ['7M', '6M', '5M'],\n      charm: ['9M', '9L16', '8M', '8L16', '7L54', '6L54', '5L54'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      cosmicpower: ['8M'],\n      covet: ['7T', '6T', '5T'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      doubleslap: ['7L14', '6L14', '5L14'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      faketears: ['9M', '9L28', '8M', '8L28', '7L10', '6L10', '5L1'],\n      feintattack: ['7L24', '6L24', '5L24'],\n      flash: ['6M', '5M'],\n      flatter: ['9L48', '8L48', '7L28', '6L28', '5L28'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['9M', '9L56', '8M', '8L56', '7L31', '6L31', '5L31'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      guardswap: ['8M'],\n      healbell: ['7T', '6T', '5T'],\n      healblock: ['7L34', '6L34', '5L34'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      hypnosis: ['9L24', '8L24'],\n      imprison: ['9M', '8M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      magicroom: ['9L64', '8M', '8L64', '7T', '7L59', '6T', '6L59', '5T', '5L59'],\n      metronome: ['9M'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      playnice: ['9L1', '8L1', '7L1', '6L1'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psybeam: ['9M', '9L12', '8L12', '7L16', '6L16', '5L16'],\n      psychic: ['9M', '9L40', '8M', '8L40', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '9L35', '8L35', '7M', '6M', '5M'],\n      psyshock: ['9M', '9L20', '8M', '8L20', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['9M', '8M', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      telekinesis: ['7T', '7L45', '6L45', '5M', '5L45'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      tickle: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '6T', '5T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'solosis',\n    {\n      acidarmor: ['9E', '8E', '7E', '6E', '5E'],\n      afteryou: ['7T', '6T', '5T'],\n      allyswitch: ['9L28', '8M', '8L28', '7T'],\n      astonish: ['9E', '8E', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      charm: ['9M', '9L16', '8M', '8L16', '7L19', '6L19', '5L19'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9E', '8E', '7E', '6E', '5E'],\n      confusion: ['9L1', '8L1'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '9L8', '8L8', '7T', '7L28', '6T', '6L28', '5T', '5L28'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      expandingforce: ['9M', '8T'],\n      explosion: ['7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['9M', '9L44', '8M', '8L44', '7L31', '6L31', '5L31'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      guardswap: ['8M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M'],\n      healblock: ['7L46', '6L46', '5L46'],\n      helpinghand: ['9M', '8M', '7T', '7E', '6T', '6E'],\n      hiddenpower: ['7M', '7L14', '6M', '6L14', '5M', '5L14'],\n      imprison: ['9M', '8M', '7E', '6E', '5E'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M', '8M', '7T', '6T'],\n      lightscreen: ['9M', '9L24', '8M', '8L24', '7M', '7L16', '6M', '6L16', '5M', '5L16'],\n      magiccoat: ['7T', '6T', '5T'],\n      nightshade: ['9M', '7E', '6E', '5E'],\n      painsplit: ['9M', '9L33', '8L33', '7T', '7L33', '6T', '6L33', '5T', '5L33'],\n      powerswap: ['8M'],\n      protect: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      psybeam: ['9M', '9L12', '8L12'],\n      psychic: ['9M', '9L36', '8M', '8L36', '7M', '7L37', '6M', '6L37', '5M', '5L37'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      psyshock: ['9M', '9L20', '8M', '8L20', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      psywave: ['7L1', '6L1', '5L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      recover: ['9L4', '8L4', '7L24', '6L24', '5L24'],\n      reflect: ['9M', '9L24', '8M', '8L24', '7M', '7L3', '6M', '6L3', '5M', '5L3'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      rollout: ['7L7', '6L7', '5L7'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['7E', '6M', '6E', '5E'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['9M', '9L40', '8M', '8L40', '7T', '7L40', '6T', '6L40', '5T', '5L40'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snatch: ['7T', '7L10', '6T', '6L10', '5T', '5L10'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelroller: ['8T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      wonderroom: ['9L48', '8M', '8L48', '7T', '7L48', '6T', '6L48', '5T', '5L48'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'duosion',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      allyswitch: ['9L28', '8M', '8L28', '7T'],\n      attract: ['8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      charm: ['9M', '9L16', '8M', '8L16', '7L19', '6L19', '5L19'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '9L1', '8L1', '7T', '7L28', '6T', '6L28', '5T', '5L28'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      expandingforce: ['9M', '8T'],\n      explosion: ['7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['9M', '9L52', '8M', '8L52', '7L31', '6L31', '5L31'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      guardswap: ['8M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M'],\n      healblock: ['7L50', '6L50', '5L50'],\n      helpinghand: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '7L14', '6M', '6L14', '5M', '5L14'],\n      imprison: ['9M', '8M', '5D'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M', '8M', '7T', '6T'],\n      lightscreen: ['9M', '9L24', '8M', '8L24', '7M', '7L16', '6M', '6L16', '5M', '5L16'],\n      magiccoat: ['7T', '6T', '5T'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '9L35', '8L35', '7T', '7L34', '6T', '6L34', '5T', '5L34'],\n      powerswap: ['8M'],\n      protect: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      psybeam: ['9M', '9L12', '8L12'],\n      psychic: ['9M', '9L40', '8M', '8L40', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      psyshock: ['9M', '9L20', '8M', '8L20', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      psywave: ['7L1', '6L1', '5L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      recover: ['9L1', '8L1', '7L24', '6L24', '5L24', '5D'],\n      reflect: ['9M', '9L24', '8M', '8L24', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      rollout: ['7L1', '6L1', '5L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['9M', '9L46', '8M', '8L46', '7T', '7L43', '6T', '6L43', '5T', '5L43'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snatch: ['7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelroller: ['8T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '5D'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      wonderroom: ['9L58', '8M', '8L58', '7T', '7L53', '6T', '6L53', '5T', '5L53'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'reuniclus',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      allyswitch: ['9L28', '8M', '8L28', '7T'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bodyslam: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      charm: ['9M', '9L16', '8M', '8L16', '7L19', '6L19', '5L19'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      confusion: ['9L1', '8L1'],\n      dizzypunch: ['7L1', '6L41', '5L41'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '9L1', '8L1', '7T', '7L28', '6T', '6L28', '5T', '5L28'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      expandingforce: ['9M', '8T'],\n      explosion: ['7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T'],\n      flash: ['6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['9M', '9L56', '8M', '8L56', '7L31', '6L31', '5L31'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      guardswap: ['8M'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M'],\n      hammerarm: ['9L0', '8L0'],\n      healblock: ['7L54', '6L54', '5L54'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '7L14', '6M', '6L14', '5M', '5L14'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T'],\n      imprison: ['9M', '8M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M', '8M', '7T', '6T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L24', '8M', '8L24', '7M', '7L16', '6M', '6L16', '5M', '5L16'],\n      magiccoat: ['7T', '6T', '5T'],\n      megapunch: ['8M'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '9L35', '8L35', '7T', '7L34', '6T', '6L34', '5T', '5L34'],\n      powerswap: ['8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      psybeam: ['9M', '9L12', '8L12'],\n      psychic: ['9M', '9L40', '8M', '8L40', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      psyshock: ['9M', '9L20', '8M', '8L20', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      psywave: ['7L1', '6L1', '5L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      recover: ['9L1', '8L1', '7L24', '6L24', '5L24'],\n      reflect: ['9M', '9L24', '8M', '8L24', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      rollout: ['7L1', '6L1', '5L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      skillswap: ['9M', '9L48', '8M', '8L48', '7T', '7L45', '6T', '6L45', '5T', '5L45'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snatch: ['7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelroller: ['8T'],\n      storedpower: ['9M', '8M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M', '5M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '6T', '5T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      wonderroom: ['9L64', '8M', '8L64', '7T', '7L59', '6T', '6L59', '5T', '5L59'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'ducklett',\n    {\n      aerialace: ['9M', '9L15', '7M', '7L15', '6M', '6L15', '5M', '5L15'],\n      aircutter: ['9M', '7E', '6E', '5E'],\n      airslash: ['9M', '9L27', '7L27', '6L27', '5L27'],\n      aquajet: ['9E', '7E'],\n      aquaring: ['9L24', '7L24', '6L24', '5L24'],\n      attract: ['7M', '6M', '5M'],\n      bravebird: ['9M', '9L41', '7L41', '6L41', '5L41'],\n      brine: ['9E', '7E', '6E', '5E', '5D'],\n      bubblebeam: ['9L19', '7L19', '6L19', '5L19'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      defog: ['9L6', '7T', '7L6', '6L6', '5L6', '5D'],\n      disarmingvoice: ['9M'],\n      dive: ['9E', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9E', '7T', '6T', '5T'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      featherdance: ['9M', '9L21', '7L21', '6L21', '5L21'],\n      fly: ['9M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gust: ['9E', '7E', '6E', '5E'],\n      hail: ['7M', '6M', '5M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hurricane: ['9M', '9L46', '7L46', '6L46', '5L46'],\n      icebeam: ['9M', '7M', '6M', '5M'],\n      icywind: ['9M', '7T', '6T', '5T'],\n      liquidation: ['9M', '7T'],\n      luckychant: ['7E', '6E', '5E'],\n      mefirst: ['7E', '6E', '5E', '5D'],\n      mirrormove: ['7E', '6E', '5E'],\n      mudsport: ['7E', '6E'],\n      pluck: ['5M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '9L34', '7M', '7L34', '6M', '6L34', '5M', '5L34'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roost: ['9L30', '7M', '7L30', '6M', '6L30', '5T', '5L30'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      steelwing: ['9E', '7M', '7E', '6M', '6E', '5E'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      surf: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      tailwind: ['9M', '9L37', '7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      uproar: ['7T', '6T', '5T'],\n      watergun: ['9L1', '7L1', '6L1', '5L1'],\n      waterpulse: ['9M', '9L13', '7T', '7L13', '6T', '6L13', '5L13'],\n      watersport: ['7L3', '6L3', '5L3'],\n      whirlpool: ['9M'],\n      wingattack: ['9L9', '7L9', '6L9', '5L9']\n    }\n  ],\n  [\n    'swanna',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '9L15', '7M', '7L15', '6M', '6L15', '5M', '5L15'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L27', '7L27', '6L27', '5L27'],\n      alluringvoice: ['9M'],\n      aquaring: ['9L24', '7L24', '6L24', '5L24'],\n      attract: ['7M', '6M', '5M'],\n      bravebird: ['9M', '9L47', '7L47', '6L47', '5L47'],\n      bubblebeam: ['9L19', '7L19', '6L19', '5L19'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      defog: ['9L1', '7T', '7L1', '6L1', '5L1'],\n      disarmingvoice: ['9M'],\n      dive: ['6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['9M', '7T', '6T', '5T'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      featherdance: ['9M', '9L21', '7L21', '6L21', '5L21'],\n      flipturn: ['9M'],\n      fly: ['9M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '7M', '6M', '5M'],\n      hail: ['7M', '6M', '5M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hurricane: ['9M', '9L55', '7L55', '6L55', '5L55'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M', '7M', '6M', '5M'],\n      icebeam: ['9M', '7M', '6M', '5M'],\n      icywind: ['9M', '7T', '6T', '5T'],\n      knockoff: ['9M'],\n      liquidation: ['9M', '7T'],\n      pluck: ['5M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '9L34', '7M', '7L34', '6M', '6L34', '5M', '5L34'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roost: ['9L30', '7M', '7L30', '6M', '6L30', '5T', '5L30'],\n      round: ['7M', '6M', '5M'],\n      scald: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      skyattack: ['7T', '6T', '5T'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      steelwing: ['7M', '6M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      surf: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      tailwind: ['9M', '9L40', '7T', '7L40', '6T', '6L40', '5T', '5L40'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      uproar: ['7T', '6T', '5T'],\n      watergun: ['9L1', '7L1', '6L1', '5L1'],\n      waterpulse: ['9M', '9L13', '7T', '7L13', '6T', '6L13', '5L13'],\n      watersport: ['7L1', '6L1', '5L1'],\n      weatherball: ['9M'],\n      whirlpool: ['9M'],\n      wingattack: ['9L1', '7L1', '6L1', '5L1']\n    }\n  ],\n  [\n    'vanillite',\n    {\n      acidarmor: ['8L32', '7L31', '6L31', '5L31'],\n      allyswitch: ['8M', '7T'],\n      astonish: ['8L1', '7L7', '6L7', '5L7'],\n      attract: ['8M', '7M', '6M', '5M'],\n      auroraveil: ['8E'],\n      autotomize: ['8E', '7E', '6E', '5E'],\n      avalanche: ['8M', '8L16', '7L19', '6L19', '5L19'],\n      blizzard: ['8M', '8L44', '7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      confide: ['7M', '6M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      explosion: ['8E', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      hail: ['8M', '8L20', '7M', '7L40', '6M', '6L40', '5M', '5L40'],\n      harden: ['8L1', '7L4', '6L4', '5L4'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypervoice: ['8M'],\n      icebeam: ['8M', '8L40', '7M', '7L35', '6M', '6L35', '5M', '5L35'],\n      iceshard: ['8E', '7E', '6E', '5E'],\n      iciclecrash: ['8E'],\n      iciclespear: ['8M', '8L24', '7L1', '6L1', '5L1'],\n      icywind: ['8M', '8L12', '7T', '7L13', '6T', '6L13', '5T', '5L13'],\n      imprison: ['8M', '7E', '6E', '5E'],\n      irondefense: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      magnetrise: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      mirrorcoat: ['8L36', '7L44', '6L44', '5L44'],\n      mirrorshot: ['7L26', '6L26', '5L26'],\n      mist: ['8L8', '7L16', '6L16', '5L16'],\n      naturalgift: ['7E', '6E', '5E'],\n      powdersnow: ['7E', '6E', '5E'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M'],\n      sheercold: ['8L48', '7L53', '6L53', '5L53'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['8M', '8L4', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '8L28', '7T', '7L10', '6T', '6L10', '5T', '5L10'],\n      waterpulse: ['7T', '7E', '6T', '6E', '5E']\n    }\n  ],\n  [\n    'vanillish',\n    {\n      acidarmor: ['8L32', '7L31', '6L31', '5L31'],\n      allyswitch: ['8M', '7T'],\n      astonish: ['8L1', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      avalanche: ['8M', '8L16', '7L19', '6L19', '5L19'],\n      blizzard: ['8M', '8L50', '7M', '7L53', '6M', '6L53', '5M', '5L53'],\n      confide: ['7M', '6M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      explosion: ['7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      hail: ['8M', '8L20', '7M', '7L42', '6M', '6L42', '5M', '5L42'],\n      harden: ['8L1', '7L1', '6L1', '5L1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypervoice: ['8M'],\n      icebeam: ['8M', '8L44', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      iceshard: ['5D'],\n      iciclespear: ['8M', '8L24', '7L1', '6L1', '5L1'],\n      icywind: ['8M', '8L12', '7T', '7L13', '6T', '6L13', '5T', '5L13'],\n      imprison: ['8M', '5D'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      magnetrise: ['7T', '6T', '5T'],\n      mirrorcoat: ['8L38', '7L47', '6L47', '5L47'],\n      mirrorshot: ['7L26', '6L26', '5L26', '5D'],\n      mist: ['8L1', '7L16', '6L16', '5L16'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M'],\n      sheercold: ['8L56', '7L58', '6L58', '5L58'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['8M', '8L1', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '8L28', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      waterpulse: ['7T', '6T']\n    }\n  ],\n  [\n    'vanilluxe',\n    {\n      acidarmor: ['8L32', '7L31', '6L31', '5L31'],\n      allyswitch: ['8M', '7T'],\n      astonish: ['8L1', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      avalanche: ['8M', '8L16', '7L19', '6L19', '5L19'],\n      beatup: ['8M'],\n      blizzard: ['8M', '8L52', '7M', '7L59', '6M', '6L59', '5M', '5L59'],\n      confide: ['7M', '6M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      explosion: ['7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      freezedry: ['8L1', '7L1', '6L1'],\n      frostbreath: ['7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      hail: ['8M', '8L20', '7M', '7L42', '6M', '6L42', '5M', '5L42'],\n      harden: ['8L1', '7L1', '6L1', '5L1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      hypervoice: ['8M'],\n      icebeam: ['8M', '8L44', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      iciclecrash: ['8L1'],\n      iciclespear: ['8M', '8L24', '7L1', '6L1', '5L1'],\n      icywind: ['8M', '8L12', '7T', '7L13', '6T', '6L13', '5T', '5L13'],\n      imprison: ['8M'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      magnetrise: ['7T', '6T', '5T'],\n      mirrorcoat: ['8L38', '7L50', '6L50', '5L50'],\n      mirrorshot: ['7L26', '6L26', '5L26'],\n      mist: ['8L1', '7L16', '6L16', '5L16'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M'],\n      sheercold: ['8L60', '7L1', '6L1', '5L67'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['8M', '8L1', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '8L28', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      waterpulse: ['7T', '6T'],\n      weatherball: ['8M', '8L1', '7L1', '6L1', '5L1']\n    }\n  ],\n  [\n    'deerling',\n    {\n      agility: ['9M', '9E', '7E', '6E', '5E'],\n      aromatherapy: ['7L28', '6L28', '5L28', '5S0'],\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['9M', '9E', '7E', '6E', '5E'],\n      bodyslam: ['9M'],\n      bounce: ['7T', '6T', '5T'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M', '9L16'],\n      camouflage: ['7L1', '6L1', '5L1'],\n      charm: ['9M', '9L32', '7L36', '6L36', '5L36'],\n      confide: ['7M', '6M'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L37', '7L46', '6L46', '5L46'],\n      doublekick: ['9L10', '7L10', '6L10', '5L10'],\n      doubleteam: ['7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L28', '7M', '7L32', '6M', '6L32', '5M', '5L32'],\n      facade: ['9M', '7M', '6M', '5M'],\n      faketears: ['9M', '9E', '7E', '6E', '5E'],\n      feintattack: ['7L16', '6L16', '5L16', '5S0'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '7T', '6T', '5T'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      grasswhistle: ['7E', '6E', '5E'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growl: ['9L4', '7L4', '6L4', '5L4'],\n      headbutt: ['9E', '7E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      jumpkick: ['7L24', '6L24', '5L24', '5S0'],\n      lastresort: ['7T', '6T', '5T'],\n      leafstorm: ['9M'],\n      leechseed: ['9L13', '7L13', '6L13', '5L13'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      magicalleaf: ['9M'],\n      naturalgift: ['7E', '6E', '5E'],\n      naturepower: ['7M', '7L41', '6M', '6L41', '5L41'],\n      odorsleuth: ['7E', '6E', '5E'],\n      playrough: ['9M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      sandattack: ['9L7', '7L7', '6L7', '5L7'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T', '5T'],\n      shadowball: ['9M', '7M', '6M', '5M'],\n      sleeptalk: ['9M', '9E', '7M', '7E', '6M', '6E', '5T', '5E'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '9L42', '7M', '7L51', '6M', '6L51', '5M', '5L51'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      synthesis: ['9E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M', '9L20', '7L20', '6L20', '5L20', '5S0'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      worryseed: ['9E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      zenheadbutt: ['9M', '9L24']\n    }\n  ],\n  [\n    'sawsbuck',\n    {\n      agility: ['9M'],\n      aromatherapy: ['7L28', '6L28', '5L28'],\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['9M'],\n      bodyslam: ['9M'],\n      bounce: ['7T', '6T', '5T'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M', '9L16'],\n      camouflage: ['7L1', '6L1', '5L1'],\n      charm: ['9M', '9L36', '7L36', '6L36', '5L36'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      cut: ['6M', '5M'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L44', '7L52', '6L52', '5L52'],\n      doublekick: ['9L10', '7L10', '6L10', '5L10'],\n      doubleteam: ['7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L28', '7M', '7L32', '6M', '6L32', '5M', '5L32'],\n      facade: ['9M', '7M', '6M', '5M'],\n      faketears: ['9M'],\n      feintattack: ['7L16', '6L16', '5L16'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '7T', '6T', '5T'],\n      gigaimpact: ['9M', '7M', '6M', '5M'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '7L1', '6L1', '5L1'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M'],\n      hornleech: ['9L0', '7L1', '6L37', '5L37'],\n      hyperbeam: ['9M', '7M', '6M', '5M'],\n      jumpkick: ['7L24', '6L24', '5L24'],\n      lastresort: ['7T', '6T', '5T'],\n      leafstorm: ['9M'],\n      leechseed: ['9L13', '7L13', '6L13', '5L13'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      magicalleaf: ['9M'],\n      megahorn: ['9L1', '7L1', '6L1', '5L1'],\n      naturepower: ['7M', '7L44', '6M', '6L44', '5L44'],\n      petalblizzard: ['9M'],\n      playrough: ['9M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['7M', '6M', '5M'],\n      sandattack: ['9L1', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T', '5T'],\n      shadowball: ['9M', '7M', '6M', '5M'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      smartstrike: ['9M'],\n      snore: ['7T', '6T', '5T'],\n      solarbeam: ['9M', '9L52', '7M', '7L60', '6M', '6L60', '5M', '5L60'],\n      stompingtantrum: ['9M', '7T'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['9M', '7M', '6M', '5M'],\n      synthesis: ['7T', '6T', '5T'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      takedown: ['9M', '9L20', '7L20', '6L20', '5L20'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      thunderwave: ['9M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '7M', '6M', '5M'],\n      workup: ['7M', '5M'],\n      worryseed: ['7T', '6T', '5T'],\n      zenheadbutt: ['9M', '9L24']\n    }\n  ],\n  [\n    'emolga',\n    {\n      acrobatics: ['8M', '8L25', '7M', '7L30', '6M', '6L30', '5M', '5L30'],\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['8M', '8L55', '7L46', '6L46', '5L46'],\n      airslash: ['8M', '7E', '6E', '5E', '5D'],\n      astonish: ['8E', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      batonpass: ['8M', '7E', '6E', '5E'],\n      charge: ['8L20', '7L10', '6L10', '5L10'],\n      chargebeam: ['7M', '6M', '5M'],\n      charm: ['8M', '7E', '6E', '5E', '5D'],\n      confide: ['7M', '6M'],\n      covet: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      cut: ['6M', '5M'],\n      defog: ['8E', '7T'],\n      discharge: ['8L50', '7L50', '6L50', '5L50'],\n      doubleteam: ['8L5', '7M', '7L19', '6M', '6L19', '5M', '5L19'],\n      dualwingbeat: ['8T'],\n      eerieimpulse: ['8M'],\n      electroball: ['8M', '7L26', '6L26', '5L26'],\n      electroweb: ['8M', '7T', '6T'],\n      encore: ['8M', '8L35', '7L38', '6L38', '5L38'],\n      endure: ['8M'],\n      energyball: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      fling: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      helpinghand: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      iondeluge: ['7E', '6E'],\n      irontail: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      knockoff: ['7T', '6T', '5T'],\n      lastresort: ['7T', '6T', '5T'],\n      lightscreen: ['8M', '8L45', '7M', '7L34', '6M', '6L34', '5M', '5L34'],\n      nuzzle: ['8L1', '7L15', '6L15'],\n      protect: ['8M', '7M', '6M', '5M'],\n      pursuit: ['7L16', '6L16', '5L16'],\n      quickattack: ['8L10', '7L4', '6L4', '5L4', '5D'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      risingvoltage: ['8T'],\n      roost: ['8E', '7M', '7E', '6M', '6E', '5T', '5E'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shockwave: ['8E', '7T', '7L22', '7E', '6T', '6L22', '6E', '5L22', '5E'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M'],\n      spark: ['8L30', '7L13', '6L13', '5L13'],\n      speedswap: ['8M', '7E'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M'],\n      tailwhip: ['8L1', '7L7', '6L7', '5L7'],\n      tailwind: ['7T', '6T', '5T'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      thunder: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thundershock: ['8L15', '7L1', '6L1', '5L1'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      tickle: ['8E', '7E', '6E', '5E'],\n      toxic: ['7M', '6M', '5M'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      voltswitch: ['8M', '8L40', '7M', '7L42', '6M', '6L42', '5M', '5L42'],\n      wildcharge: ['8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'karrablast',\n    {\n      acidspray: ['8L16'],\n      aerialace: ['7M', '6M', '5M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bugbite: ['8E', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      bugbuzz: ['8M', '8L44', '7L28', '6L28', '5L28', '5S0'],\n      confide: ['7M', '6M'],\n      counter: ['8E', '7E', '6E', '5E'],\n      cut: ['6M', '5M'],\n      doubleedge: ['8L48', '7L56', '6L56', '5L56'],\n      doubleteam: ['7M', '6M', '5M'],\n      drillrun: ['8M', '7T', '7E', '6T', '6E'],\n      encore: ['8M'],\n      endure: ['8M', '8L8', '7L8', '6L8', '5L8', '5D'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      falseswipe: ['8M', '8L12', '7M', '7L25', '6M', '6L25', '5M', '5L25', '5S0'],\n      feintattack: ['7E', '6E', '5E'],\n      flail: ['8L24', '7L49', '6L49', '5L49', '5S1'],\n      frustration: ['7M', '6M', '5M'],\n      furyattack: ['7L16', '6L16', '5L16', '5S0'],\n      furycutter: ['8L4', '7L13', '6L13', '5L13'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      headbutt: ['8L20', '7L20', '6L20', '5L20', '5S0'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hornattack: ['7E', '6E', '5E'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      knockoff: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      leer: ['8L1', '7L4', '6L4', '5L4'],\n      megahorn: ['8M', '7E', '6E', '5E', '5D', '5S1'],\n      nightslash: ['8E'],\n      peck: ['8L1', '7L1', '6L1', '5L1'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      pursuit: ['7E', '6E', '5E'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M', '8L28', '7L40', '6L40', '5L40'],\n      screech: ['8M', '7E', '6E', '5E'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T'],\n      slash: ['8E', '7L32', '6L32', '5L32'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['8M', '8L36', '7M', '7L52', '6M', '6L52', '5M', '5L52'],\n      takedown: ['8L40', '7L37', '6L37', '5L37', '5S1'],\n      toxic: ['7M', '6M', '5M'],\n      xscissor: ['8M', '8L32', '7M', '7L44', '6M', '6L44', '5M', '5L44', '5S1']\n    }\n  ],\n  [\n    'escavalier',\n    {\n      acidspray: ['8L16'],\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bugbite: ['7T', '6T', '5T'],\n      bugbuzz: ['8M', '8L44', '7L28', '6L28', '5L28'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleedge: ['8L1', '7L1', '6L1'],\n      doubleteam: ['7M', '6M', '5M'],\n      drillrun: ['8M', '7T', '6T'],\n      encore: ['8M'],\n      endure: ['8M', '8L1'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      falseswipe: ['8M', '8L12', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      fellstinger: ['8L1', '7L1', '6L1'],\n      flail: ['8L1'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furyattack: ['7L16', '6L16', '5L16'],\n      furycutter: ['8L1'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      gigaimpact: ['8M', '8L48', '7M', '7L56', '6M', '6L56', '5M', '5L56'],\n      headbutt: ['8L20', '7L20', '6L20', '5L20'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '8L28', '7T', '7L40', '6T', '6L40', '5T', '5L40'],\n      ironhead: ['8M', '8L40', '7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      megahorn: ['8M'],\n      metalburst: ['8L52'],\n      peck: ['8L1', '7L1', '6L1', '5L1'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      quickguard: ['8L1', '7L1', '6L1', '5L1'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      razorshell: ['8M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['8M', '8L24', '7L49', '6L49', '5L49'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M', '8L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T'],\n      slash: ['7L32', '6L32', '5L32'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelbeam: ['8T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['8M', '8L36', '7M', '7L52', '6M', '6L52', '5M', '5L52'],\n      takedown: ['8L1'],\n      taunt: ['8M'],\n      toxic: ['7M', '6M', '5M'],\n      twineedle: ['7L1', '6L1', '5L1'],\n      xscissor: ['8M', '8L32', '7M', '7L44', '6M', '6L44', '5M', '5L44']\n    }\n  ],\n  [\n    'foongus',\n    {\n      absorb: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      afteryou: ['7T', '6T', '5T'],\n      astonish: ['9L1', '8L1', '7L8', '6L8', '5L8'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L12', '6L12', '5L12'],\n      bodyslam: ['9M', '8M', '7E', '6E', '5E'],\n      bulletseed: ['9M'],\n      clearsmog: ['9L20', '8L20', '7L39', '6L39', '5L39'],\n      confide: ['7M', '6M'],\n      defensecurl: ['9E', '8E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['9M', '8M', '7E', '6E', '5E'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      feintattack: ['7L20', '6L20', '5L20'],\n      flash: ['6M', '5M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      gigadrain: ['9M', '9L28', '8M', '8L28', '7T', '7L28', '6T', '6L28', '5T', '5L28'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      grassyterrain: ['9M'],\n      growth: ['9L4', '8L4', '7L6', '7E', '6L6', '6E', '5L6', '5E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      ingrain: ['9L32', '8L32', '7L18', '6L18', '5L18'],\n      leafstorm: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '8L12', '7L15', '6L15', '5L15'],\n      naturepower: ['7M', '6M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonpowder: ['9E', '8E', '7E', '6E', '5E'],\n      pollenpuff: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      ragepowder: ['9L40', '8L40', '7L45', '6L45', '5L45'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rollout: ['9E', '8E', '7E', '6E', '5E'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '9L44', '8M', '8L44', '7M', '7L43', '6M', '6L43', '5M', '5L43'],\n      spore: ['9L48', '8L48', '7L50', '6L50', '5L50'],\n      stunspore: ['9L8', '8L8', '7E', '6E', '5E'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      sweetscent: ['9L24', '8L24', '7L24', '6L24', '5L24'],\n      synthesis: ['9L16', '8L16', '7T', '7L35', '6T', '6L35', '5T', '5L35'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L36', '8L36', '7M', '7L32', '6M', '6L32', '5M', '5L32'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      worryseed: ['9E', '8E', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'amoonguss',\n    {\n      absorb: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      afteryou: ['7T', '6T', '5T'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L1', '6L1', '5L1'],\n      bodyslam: ['9M', '8M'],\n      bulletseed: ['9M'],\n      clearsmog: ['9L20', '8L20', '8S0', '7L43', '6L43', '5L43'],\n      confide: ['7M', '6M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      feintattack: ['7L20', '6L20', '5L20'],\n      flash: ['6M', '5M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['7T', '6T', '5T'],\n      gigadrain: ['9M', '9L28', '8M', '8L28', '7T', '7L28', '6T', '6L28', '5T', '5L28'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      ingrain: ['9L32', '8L32', '7L18', '6L18', '5L18'],\n      leafstorm: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '8L12', '7L15', '6L15', '5L15'],\n      naturepower: ['7M', '6M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      pollenpuff: ['9M', '8M'],\n      protect: ['9M', '8M', '8S0', '7M', '6M', '5M'],\n      ragepowder: ['9L42', '8L42', '8S0', '7L54', '6L54', '5L54'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '9L48', '8M', '8L48', '7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      spore: ['9L54', '8L54', '8S0', '7L62', '6L62', '5L62'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stunspore: ['9L1', '8L1'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      sweetscent: ['9L24', '8L24', '7L24', '6L24', '5L24'],\n      synthesis: ['9L16', '8L16', '7T', '7L35', '6T', '6L35', '5T', '5L35'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L36', '8L36', '7M', '7L32', '6M', '6L32', '5M', '5L32'],\n      venoshock: ['9M', '8M', '7M', '6M', '5M'],\n      worryseed: ['7T', '6T', '5T']\n    }\n  ],\n  [\n    'frillish',\n    {\n      absorb: ['8L1', '7L5', '6L5', '5L5'],\n      acidarmor: ['8E', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['8M', '7M', '6M', '5M'],\n      brine: ['8M', '8L24', '7L32', '6L32', '5L32'],\n      bubble: ['7L1', '6L1', '5L1'],\n      bubblebeam: ['8E', '7L13', '6L13', '5L13'],\n      confide: ['7M', '6M'],\n      confuseray: ['8E', '7E', '6E', '5E'],\n      constrict: ['7E', '6E', '5E'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      destinybond: ['8L44'],\n      dive: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      hail: ['8M', '7M', '6M', '5M'],\n      hex: ['8M', '8L20', '7L43', '6L43', '5L43'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['8M', '8L41', '7L49', '6L49', '5L49'],\n      icebeam: ['8M', '7M', '6M', '5M'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      imprison: ['8M'],\n      magiccoat: ['7T', '6T', '5T'],\n      mist: ['8E', '7E', '6E', '5E'],\n      nightshade: ['8L8', '7L9', '6L9', '5L9'],\n      ominouswind: ['7L27', '6L27', '5L27'],\n      painsplit: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      poisonsting: ['8L4'],\n      poltergeist: ['8T'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychic: ['8M', '7M', '6M', '5M'],\n      psychup: ['7M', '6M', '5M'],\n      raindance: ['8M', '8L16', '7M', '7L37', '6M', '6L37', '5M', '5L37'],\n      recover: ['8L28', '7L17', '7E', '6L17', '6E', '5L17', '5E'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '8L32', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['7T', '6T', '5T'],\n      strengthsap: ['8E'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      waterfall: ['8M', '7M', '6M', '5M'],\n      watergun: ['8L1'],\n      waterpulse: ['8L12', '7T', '7L22', '6T', '6L22', '5L22'],\n      watersport: ['7L1', '6L1', '5L1'],\n      waterspout: ['8L48', '7L61', '6L61', '5L61'],\n      whirlpool: ['8M', '8L36'],\n      willowisp: ['8M', '7M', '6M', '5M'],\n      wringout: ['7L55', '6L55', '5L55']\n    }\n  ],\n  [\n    'jellicent',\n    {\n      absorb: ['8L1', '7L1', '6L1', '5L1'],\n      acidarmor: ['8L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bind: ['7T', '6T', '5T'],\n      blizzard: ['8M', '7M', '6M', '5M'],\n      brine: ['8M', '8L24', '7L32', '6L32', '5L32', '5S0'],\n      bubble: ['7L1', '6L1', '5L1'],\n      bubblebeam: ['7L13', '6L13', '5L13'],\n      confide: ['7M', '6M'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      destinybond: ['8L48'],\n      dive: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      hail: ['8M', '7M', '6M', '5M'],\n      hex: ['8M', '8L20', '7L45', '6L45', '5L45'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['8M', '8L43', '7L53', '6L53', '5L53'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      icebeam: ['8M', '7M', '6M', '5M'],\n      icywind: ['8M', '7T', '6T', '5T'],\n      imprison: ['8M'],\n      magiccoat: ['7T', '6T', '5T'],\n      muddywater: ['8M'],\n      nightshade: ['8L1', '7L1', '6L1', '5L1'],\n      ominouswind: ['7L27', '6L27', '5L27', '5S0'],\n      painsplit: ['7T', '6T', '5T'],\n      poisonsting: ['8L1'],\n      poltergeist: ['8T'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychic: ['8M', '7M', '6M', '5M'],\n      psychup: ['7M', '6M', '5M'],\n      raindance: ['8M', '8L16', '7M', '7L37', '6M', '6L37', '5M', '5L37', '5S0'],\n      recover: ['8L28', '7L17', '6L17', '5L17'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '8L32', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['7T', '6T', '5T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      waterfall: ['8M', '7M', '6M', '5M'],\n      watergun: ['8L1'],\n      waterpulse: ['8L12', '7T', '7L22', '6T', '6L22', '5L22', '5S0'],\n      watersport: ['7L1', '6L1', '5L1'],\n      waterspout: ['8L54', '7L1', '6L1', '5L69'],\n      whirlpool: ['8M', '8L36'],\n      willowisp: ['8M', '7M', '6M', '5M'],\n      wringout: ['7L1', '6L1', '5L61']\n    }\n  ],\n  [\n    'alomomola',\n    {\n      acrobatics: ['9M'],\n      alluringvoice: ['9M'],\n      aquajet: ['9L9', '7L9', '6L9', '5L9'],\n      aquaring: ['9L5', '7L5', '6L5', '5L5', '5D'],\n      attract: ['7M', '6M', '5M'],\n      batonpass: ['9M'],\n      blizzard: ['9M', '7M', '6M', '5M'],\n      bodyslam: ['9M'],\n      bounce: ['9E', '7T', '6T', '5T'],\n      brine: ['9L41', '7L41', '6L41', '5L41'],\n      calmmind: ['9M', '7M', '6M', '5M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      dive: ['6M', '5M'],\n      doubleslap: ['7L13', '6L13', '5L13'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['9M', '9E', '7E', '6E', '5E'],\n      facade: ['9M', '7M', '6M', '5M'],\n      flipturn: ['9M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M'],\n      hail: ['7M', '6M', '5M'],\n      healingwish: ['9L29', '7L1', '6L1', '5L57'],\n      healpulse: ['7L17', '6L17', '5L17'],\n      helpinghand: ['9M', '9L13', '7T', '7L1', '6T', '6L49', '5T', '5L49'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['9M', '9L55', '7L1', '6L1', '5L61'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '7M', '6M', '5M'],\n      icywind: ['9M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      liquidation: ['9M', '7T'],\n      magiccoat: ['7T', '6T', '5T'],\n      mirrorcoat: ['9E', '7E', '6E', '5E', '5D'],\n      mist: ['9E', '7E', '6E', '5E'],\n      mistyterrain: ['9M'],\n      painsplit: ['9M', '9E', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      playnice: ['9L1', '7L1'],\n      playrough: ['9M'],\n      pound: ['9L1', '7L1', '6L1', '5L1'],\n      protect: ['9M', '9L21', '7M', '7L21', '6M', '6L21', '5M', '5L21'],\n      psychic: ['9M', '7M', '6M', '5M'],\n      psychup: ['7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      refresh: ['7E', '6E', '5E'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      safeguard: ['9L45', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      scald: ['9M', '7M', '6M', '5M'],\n      scaleshot: ['9M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '7M', '6M', '5M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      snowscape: ['9M'],\n      soak: ['9L33', '7L33', '6L33', '5L33'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      surf: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      tickle: ['9E', '7E', '6E', '5E'],\n      toxic: ['7M', '6M', '5M'],\n      wakeupslap: ['7L29', '6L29', '5L29'],\n      waterfall: ['9M', '7M', '6M', '5M'],\n      waterpulse: ['9M', '9L25', '7T', '7L25', '6T', '6L25', '5L25'],\n      watersport: ['7L1', '6L1', '5L1'],\n      whirlpool: ['9M', '9L49', '7L49'],\n      wideguard: ['9L13', '7L1', '6L1', '5L53'],\n      wish: ['9L37', '7L37', '6L37', '5L37'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'joltik',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      agility: ['9M', '9L24', '8M', '8L24', '7L37', '6L37', '5L37'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      bugbite: ['9M', '9L8', '8L8', '7T', '7L18', '6T', '6L18', '5T', '5L18'],\n      bugbuzz: ['9M', '9L48', '8M', '8L48', '7L48', '6L48', '5L48'],\n      camouflage: ['7E', '6E'],\n      chargebeam: ['9M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crosspoison: ['8M', '7E', '6E', '5E'],\n      cut: ['6M', '5M'],\n      disable: ['7E', '6E', '5E'],\n      discharge: ['9L37', '8L37', '7L45', '6L45', '5L45'],\n      doubleteam: ['9E', '8E', '7M', '6M', '5M'],\n      electroball: ['9M', '9L20', '8M', '8L20', '7L29', '6L29', '5L29'],\n      electroweb: ['9M', '9L4', '8M', '8L4', '7T', '7L15', '6T', '6L15', '5T', '5L15'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      feintattack: ['7E', '6E', '5E'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['9L1', '8L1', '7L12', '6L12', '5L12'],\n      gastroacid: ['9L44', '8L44', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      infestation: ['9E', '8E', '7M', '6M'],\n      leechlife: ['9M', '8M', '7M', '6L1', '5L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      lunge: ['9M', '9E', '8E', '7E'],\n      magnetrise: ['7T', '6T', '5T'],\n      pinmissile: ['8M', '7E', '6E', '5E'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      poisonsting: ['9E', '8E', '7E', '6E', '5E'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      pursuit: ['7E', '6E', '5E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      risingvoltage: ['8T'],\n      rockclimb: ['7E', '6E', '5E'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['9L40', '8M', '8L40', '7L7', '6L7', '5L7'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '7L34', '6T', '6L34', '5T', '5L34'],\n      skittersmack: ['9M', '8T'],\n      slash: ['9L32', '8L32', '7L26', '6L26', '5L26'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      speedswap: ['8M'],\n      spiderweb: ['7L1', '6L1', '5L1'],\n      stringshot: ['9L12', '8L12', '7L1', '6L1', '5L1'],\n      strugglebug: ['9M', '9E', '8E', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      suckerpunch: ['9L28', '8L28', '7L40', '6L40', '5L40'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '9L16', '8M', '8L16', '7M', '7L4', '6M', '6L4', '5M', '5L4'],\n      toxic: ['7M', '6M', '5M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'galvantula',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      agility: ['9M', '9L24', '8M', '8L24', '7L40', '6L40', '5L40'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      bugbite: ['9M', '9L1', '8L1', '7T', '7L18', '6T', '6L18', '5T', '5L18'],\n      bugbuzz: ['9M', '9L56', '8M', '8L56', '7L60', '6L60', '5L60'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crosspoison: ['8M'],\n      cut: ['6M', '5M'],\n      disable: ['5D'],\n      discharge: ['9L39', '8L39', '7L54', '6L54', '5L54'],\n      doubleteam: ['7M', '6M', '5M'],\n      electroball: ['9M', '9L20', '8M', '8L20', '7L29', '6L29', '5L29', '5D'],\n      electroweb: ['9M', '9L1', '8M', '8L1', '7T', '7L15', '6T', '6L15', '5T', '5L15'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['9L1', '8L1', '7L12', '6L12', '5L12'],\n      gastroacid: ['9L50', '8L50', '7T', '7L23', '6T', '6L23', '5T', '5L23'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      leechlife: ['9M', '8M', '7M', '6L1', '5L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      lunge: ['9M'],\n      magnetrise: ['7T', '6T', '5T'],\n      pinmissile: ['8M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      pursuit: ['5D'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['9L44', '8M', '8L44', '7L7', '6L7', '5L7'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '7L34', '6T', '6L34', '5T', '5L34'],\n      skittersmack: ['9M', '8T'],\n      slash: ['9L32', '8L32', '7L26', '6L26', '5L26'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      speedswap: ['8M'],\n      spiderweb: ['7L1', '6L1', '5L1'],\n      stickyweb: ['9L0', '8L0', '7L1', '6L1'],\n      stringshot: ['9L12', '8L12', '7L1', '6L1', '5L1'],\n      strugglebug: ['9M', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      suckerpunch: ['9L28', '8L28', '7L46', '6L46', '5L46'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunder: ['9M', '8M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '9L16', '8M', '8L16', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      toxic: ['7M', '6M', '5M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'ferroseed',\n    {\n      acidspray: ['8E', '7E', '6E'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bulletseed: ['8M', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      curse: ['8L41', '7L9', '6L9', '5L9'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      explosion: ['8L50', '7M', '7L55', '6M', '6L55', '5M', '5L55'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['8M', '8L20', '7M', '7L52', '6M', '6L52', '5M', '5L52'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      gravity: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      gyroball: ['8M', '8L45', '7M', '7L21', '6M', '6L21', '5M', '5L21'],\n      harden: ['8L1', '7L1', '6L1', '5L1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      ingrain: ['8L15', '7L35', '6L35', '5L35'],\n      irondefense: ['8M', '8L35', '7T', '7L26', '6T', '6L26', '5T', '5L26'],\n      ironhead: ['8M', '8L25', '7T', '7L43', '6T', '6L43', '5T', '5L43'],\n      knockoff: ['8E', '7T', '6T'],\n      leechseed: ['8E', '7E', '6E', '5E'],\n      magnetrise: ['7T', '6T', '5T'],\n      metalclaw: ['8L5', '7L14', '6L14', '5L14'],\n      mirrorshot: ['7L30', '6L30', '5L30'],\n      naturepower: ['7M', '6M'],\n      payback: ['8M', '7M', '7L47', '6M', '6L47', '5M', '5L47'],\n      pinmissile: ['8M', '8L10', '7L18', '6L18', '5L18'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      rockclimb: ['7E', '6E', '5E'],\n      rockpolish: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rollout: ['7L6', '6L6', '5L6'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      selfdestruct: ['8M', '8L30', '7L38', '6L38', '5L38'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      spikes: ['8M', '7E', '6E', '5E'],\n      stealthrock: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['8E', '7M', '6M', '5M'],\n      worryseed: ['7T', '7E', '6T', '6E', '5T', '5E']\n    }\n  ],\n  [\n    'ferrothorn',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      block: ['7T', '6T'],\n      bodypress: ['8M'],\n      brutalswing: ['8M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      bulletseed: ['8M'],\n      confide: ['7M', '6M'],\n      curse: ['8L43', '7L1', '6L1', '5L1'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      explosion: ['8L56', '7M', '7L67', '6M', '6L67', '5M', '5L67'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['8M', '8L20', '7M', '7L61', '6M', '6L61', '5M', '5L61'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      grassknot: ['8M', '7M', '6M', '5M'],\n      gravity: ['7T', '6T', '5T'],\n      gyroball: ['8M', '8L49', '7M', '7L21', '6M', '6L21', '5M', '5L21'],\n      harden: ['8L1', '7L1', '6L1', '5L1'],\n      heavyslam: ['8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      ingrain: ['8L15', '7L35', '6L35', '5L35'],\n      irondefense: ['8M', '8L35', '7T', '7L26', '6T', '6L26', '5T', '5L26'],\n      ironhead: ['8M', '8L25', '7T', '7L46', '6T', '6L46', '5T', '5L46'],\n      knockoff: ['7T', '6T', '5T'],\n      magnetrise: ['7T', '6T', '5T'],\n      metalclaw: ['8L1', '7L14', '6L14', '5L14'],\n      mirrorshot: ['7L30', '6L30', '5L30'],\n      naturepower: ['7M', '6M'],\n      payback: ['8M', '7M', '7L53', '6M', '6L53', '5M', '5L53'],\n      pinmissile: ['8M', '8L1', '7L18', '6L18', '5L18'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      powerwhip: ['8M', '8L0', '7L1', '6L40', '5L40'],\n      protect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      rockclimb: ['7L1', '6L1', '5L1'],\n      rockpolish: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rollout: ['7L1', '6L1', '5L1'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '7T', '6T', '5T'],\n      selfdestruct: ['8M', '8L30', '7L38', '6L38', '5L38'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      spikes: ['8M'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['8M', '7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1', '5L1'],\n      thunder: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      worryseed: ['7T', '6T', '5T']\n    }\n  ],\n  [\n    'klink',\n    {\n      assurance: ['8M'],\n      autotomize: ['8L20', '7L31', '6L31', '5L31'],\n      bind: ['8L4', '7T', '7L21', '6T', '6L21', '5T', '5L21'],\n      charge: ['8L8', '7L6', '6L6', '5L6'],\n      chargebeam: ['8L12', '7M', '7L26', '6M', '6L26', '5M', '5L26'],\n      confide: ['7M', '6M'],\n      discharge: ['8L24', '7L42', '6L42', '5L42'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      geargrind: ['8L32', '7L16', '6L16', '5L16'],\n      gravity: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '8L48', '7M', '7L57', '6M', '6L57', '5M', '5L57'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      lockon: ['8L36', '7L50', '6L50', '5L51'],\n      magiccoat: ['7T', '6T', '5T'],\n      magnetrise: ['7T', '6T', '5T'],\n      metalsound: ['8L16', '7L45', '6L45', '5L45'],\n      mirrorshot: ['7L36', '6L36', '5L36'],\n      powergem: ['8M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      risingvoltage: ['8T'],\n      rockpolish: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L28', '7L39', '6L39', '5L39'],\n      secretpower: ['6M'],\n      shiftgear: ['8L40', '7L48', '6L48', '5L48'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      telekinesis: ['7T'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thundershock: ['8L1', '7L11', '6L11', '5L11'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      visegrip: ['8L1', '7L1', '6L1', '5L1'],\n      voltswitch: ['8M', '7M', '6M', '5M'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      zapcannon: ['8L44', '7L54', '6L54', '5L54']\n    }\n  ],\n  [\n    'klang',\n    {\n      allyswitch: ['8M', '7T'],\n      assurance: ['8M'],\n      autotomize: ['8L20', '7L31', '6L31', '5L31'],\n      bind: ['8L1', '7T', '7L21', '6T', '6L21', '5T', '5L21'],\n      charge: ['8L1', '7L1', '6L1', '5L1'],\n      chargebeam: ['8L12', '7M', '7L26', '6M', '6L26', '5M', '5L26', '5D'],\n      confide: ['7M', '6M'],\n      discharge: ['8L24', '7L44', '6L44', '5L44'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      geargrind: ['8L32', '7L1', '6L1', '5L1'],\n      gravity: ['7T', '6T', '5T', '5D'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '8L54', '7M', '7L64', '6M', '6L64', '5M', '5L64'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      lockon: ['8L36', '7L56', '6L56', '5L56'],\n      magiccoat: ['7T', '6T', '5T'],\n      magnetrise: ['7T', '6T', '5T', '5D'],\n      metalsound: ['8L16', '7L48', '6L48', '5L48'],\n      mirrorshot: ['7L36', '6L36', '5L36'],\n      powergem: ['8M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      risingvoltage: ['8T'],\n      rockpolish: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L28', '7L40', '6L40', '5L40'],\n      secretpower: ['6M'],\n      shiftgear: ['8L42', '7L52', '6L52', '5L52'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      telekinesis: ['7T'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thundershock: ['8L1', '7L1', '6L1', '5L1'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      visegrip: ['8L1', '7L1', '6L1', '5L1'],\n      voltswitch: ['8M', '7M', '6M', '5M'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      zapcannon: ['8L48', '7L60', '6L60', '5L60']\n    }\n  ],\n  [\n    'klinklang',\n    {\n      allyswitch: ['8M', '7T'],\n      assurance: ['8M'],\n      autotomize: ['8L20', '7L31', '6L31', '5L31'],\n      bind: ['8L1', '7T', '7L21', '6T', '6L21', '5T', '5L21'],\n      charge: ['8L1', '7L1', '6L1', '5L1'],\n      chargebeam: ['8L12', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      confide: ['7M', '6M'],\n      discharge: ['8L24', '7L44', '6L44', '5L44'],\n      doubleteam: ['7M', '6M', '5M'],\n      electricterrain: ['8M', '8L64'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      geargrind: ['8L32', '7L1', '6L1', '5L1'],\n      gearup: ['8L1', '7L1'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      gravity: ['7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '8L56', '7M', '7L72', '6M', '6L72', '5M', '5L72'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      lockon: ['8L36', '7L60', '6L60', '5L60'],\n      magiccoat: ['7T', '6T', '5T'],\n      magneticflux: ['8L1', '7L1', '6L1'],\n      magnetrise: ['7T', '6T', '5T'],\n      metalsound: ['8L16', '7L48', '6L48', '5L48'],\n      mirrorshot: ['7L36', '6L36', '5L36'],\n      powergem: ['8M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      risingvoltage: ['8T'],\n      rockpolish: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L28', '7L40', '6L40', '5L40'],\n      secretpower: ['6M'],\n      shiftgear: ['8L42', '7L54', '6L54', '5L54'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      telekinesis: ['7T'],\n      thunder: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thundershock: ['8L1', '7L1', '6L1', '5L1'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      visegrip: ['8L1', '7L1', '6L1', '5L1'],\n      voltswitch: ['8M', '7M', '6M', '5M'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      zapcannon: ['8L48', '7L66', '6L1', '5L66']\n    }\n  ],\n  [\n    'tynamo',\n    {\n      charge: ['9M'],\n      chargebeam: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5L1'],\n      knockoff: ['9M'],\n      magnetrise: ['7T', '6T', '5T'],\n      spark: ['9L1', '7L1', '6L1', '5L1'],\n      tackle: ['9L1', '7L1', '6L1', '5L1'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5L1']\n    }\n  ],\n  [\n    'eelektrik',\n    {\n      acid: ['9L19', '7L19', '6L19', '5L19'],\n      acidspray: ['9M', '9L49', '7L49', '6L49', '5L49'],\n      acrobatics: ['9M', '7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      attract: ['7M', '6M', '5M'],\n      bind: ['9L9', '7T', '7L9', '6T', '6L9', '5T', '5L9'],\n      bodyslam: ['9M'],\n      bounce: ['7T', '6T', '5T'],\n      charge: ['9M'],\n      chargebeam: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      coil: ['9L54', '7L54', '6L54', '5L54'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L0', '7L1', '6L39', '5L39'],\n      discharge: ['9L29', '7L29', '6L29', '5L29'],\n      doubleteam: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['9M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['9L64', '7T', '7L64', '6T', '6L64', '5T', '5L64'],\n      gigadrain: ['9M', '7T', '6T', '5T'],\n      headbutt: ['9L1', '7L1', '6L1', '5L1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      lunge: ['9M'],\n      magnetrise: ['7T', '6T', '5T'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      spark: ['9L1', '7L1', '6L1', '5L1'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      superfang: ['9M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L74', '7L74', '6L74', '5L74'],\n      throatchop: ['9M', '7T'],\n      thunder: ['9M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '9L44', '7M', '7L44', '6M', '6L44', '5M', '5L44'],\n      thunderfang: ['9M'],\n      thunderwave: ['9M', '9L1', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      toxic: ['7M', '6M', '5M'],\n      uturn: ['9M', '7M', '6M', '5M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '9L59', '7M', '7L59', '6M', '6L59', '5M', '5L59'],\n      zapcannon: ['9L69', '7L69', '6L69', '5L69']\n    }\n  ],\n  [\n    'eelektross',\n    {\n      acid: ['9L1', '7L1', '6L1', '5L1'],\n      acidspray: ['9M'],\n      acrobatics: ['9M', '7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      attract: ['7M', '6M', '5M'],\n      bind: ['7T', '6T', '5T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bounce: ['7T', '6T', '5T'],\n      brickbreak: ['9M', '7M', '6M', '5M'],\n      bulkup: ['9M'],\n      bulldoze: ['9M'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M'],\n      closecombat: ['9M'],\n      coil: ['9L1', '7L1', '6L1'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      crunch: ['9M', '9L1', '7L1', '6L1', '5L1'],\n      crushclaw: ['9L1', '7L1', '6L1', '5L1'],\n      cut: ['6M', '5M'],\n      discharge: ['9L1', '7L1', '6L1', '5L1'],\n      doubleteam: ['7M', '6M', '5M'],\n      dragonclaw: ['9M', '7M', '6M', '5M'],\n      dragonpulse: ['9M', '7T', '6T'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      drainpunch: ['9M', '7T', '6T', '5T'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      firepunch: ['9M', '7T', '6T', '5T'],\n      flamethrower: ['9M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['9M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['9L1', '7T', '7L1', '6T', '6L1', '5T'],\n      gigadrain: ['9M', '7T', '6T', '5T'],\n      gigaimpact: ['9M', '7M', '6M', '5M'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      headbutt: ['9L1', '7L1', '6L1', '5L1'],\n      heavyslam: ['9M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '6M', '5M'],\n      iondeluge: ['7L1', '6L1'],\n      irontail: ['7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      liquidation: ['9M'],\n      lunge: ['9M'],\n      magnetrise: ['7T', '6T', '5T'],\n      outrage: ['9M', '7T', '6T'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['7M', '6M', '5M'],\n      rockslide: ['9M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '7M', '6M', '5M'],\n      round: ['7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snore: ['7T', '6T', '5T'],\n      stompingtantrum: ['9M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      superfang: ['9M', '7T', '6T', '5T'],\n      superpower: ['7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L1', '7L1', '6L1'],\n      throatchop: ['9M', '7T'],\n      thunder: ['9M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '7M', '6M', '5M'],\n      thunderfang: ['9M'],\n      thunderpunch: ['9M', '7T', '6T', '5T'],\n      thunderwave: ['9M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uturn: ['9M', '7M', '6M', '5M'],\n      voltswitch: ['9M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '9L5', '7M', '6M', '5M'],\n      zapcannon: ['9L1', '7L1', '6L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'elgyem',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      agility: ['8M'],\n      allyswitch: ['8M', '7T', '7E', '6E', '5M'],\n      astonish: ['8E', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      barrier: ['7E', '6E', '5E', '5D'],\n      calmmind: ['8M', '8L48', '7M', '7L43', '6M', '6L43', '5M', '5L43'],\n      chargebeam: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1', '7L1', '6L1', '5L1'],\n      cosmicpower: ['8M', '7E', '6E'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      destinybond: ['8E'],\n      disable: ['8E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gravity: ['7T', '6T', '5T'],\n      growl: ['8L1', '7L4', '6L4', '5L4'],\n      guardsplit: ['8L24', '7L50', '6L50', '5L50'],\n      guardswap: ['8M', '7E', '6E', '5E'],\n      headbutt: ['8L30', '7L18', '6L18', '5L18'],\n      healblock: ['7L8', '6L8', '5L8', '5D'],\n      hiddenpower: ['7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      imprison: ['8M', '8L6', '7L25', '6L25', '5L25'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      meteorbeam: ['8T'],\n      miracleeye: ['7L11', '6L11', '5L11'],\n      nastyplot: ['8M', '7E', '6E', '5E', '5D'],\n      painsplit: ['7T', '6T', '5T'],\n      powersplit: ['8L24', '7L50', '6L50', '5L50'],\n      powerswap: ['8M', '7E', '6E', '5E'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psybeam: ['8L18', '7L15', '6L15', '5L15'],\n      psychic: ['8M', '8L60', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      psychup: ['8E', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      recover: ['8L43', '7L46', '6L46', '5L46'],\n      recycle: ['7T', '6T', '5T'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      simplebeam: ['7L29', '6L29', '5L29'],\n      skillswap: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelwing: ['8M', '7M', '6M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      synchronoise: ['7L53', '6L53', '5L53'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8L12', '7E', '6E', '5E'],\n      thief: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      wonderroom: ['8M', '8L54', '7T', '7L56', '6T', '6L56', '5T', '5L56'],\n      zenheadbutt: ['8M', '8L36', '7T', '7L32', '6T', '6L32', '5T', '5L32']\n    }\n  ],\n  [\n    'beheeyem',\n    {\n      afteryou: ['7T', '6T', '5T'],\n      agility: ['8M'],\n      allyswitch: ['8M', '7T', '5M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      calmmind: ['8M', '8L52', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      chargebeam: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      confusion: ['8L1', '7L1', '6L1', '5L1'],\n      cosmicpower: ['8M'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      expandingforce: ['8T'],\n      facade: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['8M'],\n      frustration: ['7M', '6M', '5M'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      gravity: ['7T', '6T', '5T'],\n      growl: ['8L1', '7L1', '6L1', '5L1'],\n      guardsplit: ['8L24', '7L56', '6L56', '5L56'],\n      guardswap: ['8M'],\n      headbutt: ['8L30', '7L18', '6L18', '5L18'],\n      healblock: ['7L1', '6L1', '5L1'],\n      hiddenpower: ['7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      imprison: ['8M', '8L1', '7L25', '6L25', '5L25'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      meteorbeam: ['8T'],\n      miracleeye: ['7L1', '6L1', '5L1'],\n      nastyplot: ['8M'],\n      painsplit: ['7T', '6T', '5T'],\n      powersplit: ['8L24', '7L58', '6L58', '5L58'],\n      powerswap: ['8M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psybeam: ['8L18', '7L15', '6L15', '5L15'],\n      psychic: ['8M', '8L68', '7M', '7L39', '6M', '6L39', '5M', '5L39'],\n      psychicterrain: ['8M', '8L1', '7L1'],\n      psychup: ['7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      psyshock: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      recover: ['8L45', '7L50', '6L50', '5L50'],\n      recycle: ['7T', '6T', '5T'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      simplebeam: ['7L29', '6L29', '5L29'],\n      skillswap: ['8M', '7T', '6T', '5T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelwing: ['8M', '7M', '6M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      synchronoise: ['7L1', '6L1', '5L63'],\n      telekinesis: ['7T', '5M'],\n      teleport: ['8L1'],\n      thief: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      triattack: ['8M'],\n      trick: ['8M', '7T', '6T', '5T'],\n      trickroom: ['8M', '7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      wonderroom: ['8M', '8L60', '7T', '7L1', '6T', '6L1', '5T', '5L68'],\n      zenheadbutt: ['8M', '8L36', '7T', '7L32', '6T', '6L32', '5T', '5L32']\n    }\n  ],\n  [\n    'litwick',\n    {\n      acid: ['7E', '6E', '5E'],\n      acidarmor: ['9E', '8E', '7E', '6E', '5E'],\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      burningjealousy: ['9M', '8T'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      captivate: ['7E', '6E', '5E'],\n      clearsmog: ['9E', '8E', '7E', '6E', '5E'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L12', '8L12', '7L10', '6L10', '5L10'],\n      curse: ['9M', '9L32', '8L32', '7L43', '6L43', '5L43'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      ember: ['9L4', '8L4', '7L1', '6L1', '5L1'],\n      endure: ['9M', '8M', '7E', '6E', '5E'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M'],\n      firespin: ['9M', '9L24', '8M', '8L24', '7L7', '6L7', '5L7'],\n      flameburst: ['7L20', '6L20', '5L20'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M'],\n      flareblitz: ['9M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      haze: ['9M', '9E', '8E', '7E', '6E', '5E'],\n      heatwave: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      hex: ['9M', '9L16', '8M', '8L16', '7L28', '6L28', '5L28'],\n      hiddenpower: ['7M', '6M', '5M'],\n      imprison: ['9M', '9L44', '8M', '8L44', '7L24', '6L24', '5L24'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L40', '8L40', '7L38', '6L38', '5L38'],\n      memento: ['9L56', '8L56', '7L33', '6L33', '5L33'],\n      minimize: ['9L8', '8L8', '7L3', '6L3', '5L3'],\n      mysticalfire: ['8M'],\n      nightshade: ['9M', '9L28', '8L28', '7L13', '6L13', '5L13'],\n      overheat: ['9M', '9L52', '8M', '8L52', '7M', '7L61', '6M', '6L61', '5M', '5L61'],\n      painsplit: ['9M', '9L48', '8L48', '7T', '7L55', '6T', '6L55', '5T', '5L55'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poltergeist: ['9M', '8T'],\n      powersplit: ['9E', '8E', '7E', '6E'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '9L36', '8M', '8L36', '7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      shockwave: ['7T', '6T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smog: ['9L1', '8L1', '7L5', '6L5', '5L5'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      spite: ['9M', '7T', '6T', '5T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      telekinesis: ['7T', '5M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '6T', '5T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '9L20', '8M', '8L20', '7M', '7L16', '6M', '6L16', '5M', '5L16']\n    }\n  ],\n  [\n    'lampent',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      burningjealousy: ['9M', '8T'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L12', '8L12', '7L10', '6L10', '5L10'],\n      curse: ['9M', '9L32', '8L32', '7L45', '6L45', '5L45'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      ember: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M'],\n      firespin: ['9M', '9L24', '8M', '8L24', '7L7', '6L7', '5L7'],\n      flameburst: ['7L20', '6L20', '5L20'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M'],\n      flareblitz: ['9M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      haze: ['9M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T'],\n      hex: ['9M', '9L16', '8M', '8L16', '7L28', '6L28', '5L28'],\n      hiddenpower: ['7M', '6M', '5M'],\n      imprison: ['9M', '9L46', '8M', '8L46', '7L24', '6L24', '5L24'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L40', '8L40', '7L38', '6L38', '5L38'],\n      lashout: ['9M'],\n      memento: ['9L64', '8L64', '7L33', '6L33', '5L33'],\n      minimize: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      mysticalfire: ['8M'],\n      nightshade: ['9M', '9L28', '8L28', '7L13', '6L13', '5L13'],\n      overheat: ['9M', '9L58', '8M', '8L58', '7M', '7L69', '6M', '6L69', '5M', '5L69'],\n      painsplit: ['9M', '9L52', '8L52', '7T', '7L61', '6T', '6L61', '5T', '5L61'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '9L36', '8M', '8L36', '7M', '7L53', '6M', '6L53', '5M', '5L53'],\n      shockwave: ['7T', '6T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smog: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      spite: ['9M', '7T', '6T', '5T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      telekinesis: ['7T', '5M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M', '7T', '6T', '5T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '9L20', '8M', '8L20', '7M', '7L16', '6M', '6L16', '5M', '5L16']\n    }\n  ],\n  [\n    'chandelure',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      burningjealousy: ['9M', '8T'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1'],\n      curse: ['9M', '9L1', '8L1'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      doubleteam: ['7M', '6M', '5M'],\n      dreameater: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      ember: ['9L1', '8L1'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M'],\n      firespin: ['9M', '9L1', '8M', '8L1'],\n      flameburst: ['7L1', '6L1', '5L1'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M'],\n      flareblitz: ['9M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      haze: ['9M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T', '5S0'],\n      hex: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      imprison: ['9M', '9L1', '8M', '8L1'],\n      incinerate: ['6M', '5M'],\n      inferno: ['9L1', '8L1'],\n      laserfocus: ['7T'],\n      lashout: ['9M'],\n      memento: ['9L1', '8L1'],\n      minimize: ['9L1', '8L1'],\n      mysticalfire: ['8M'],\n      nightshade: ['9M', '9L1', '8L1'],\n      overheat: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M'],\n      painsplit: ['9M', '9L1', '8L1', '7T', '7L1', '6T', '6L1', '5T'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M', '5S0'],\n      shockwave: ['7T', '6T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smog: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      spite: ['9M', '7T', '6T', '5T'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      telekinesis: ['7T', '5M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T', '6T', '5T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '9L1', '8M', '8L1', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'axew',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      aquatail: ['9E', '7T', '6T', '5T'],\n      assurance: ['9L9', '8M', '8L9', '7L7', '6L7', '5L7'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bite: ['9L3', '8L3'],\n      breakingswipe: ['9M', '9L30', '8M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '5D'],\n      crunch: ['9M', '9L24', '8M', '8L24'],\n      cut: ['6M', '5M'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L18', '8M', '8L18', '7M', '7L28', '6M', '6L28', '5M', '5L28', '5S1'],\n      dragondance: ['9M', '9L27', '8M', '8L27', '7L32', '6L32', '5L32'],\n      dragonpulse: ['9M', '9L36', '8M', '8L36', '7T', '7L41', '7E', '6T', '6L41', '6E', '5T', '5L41', '5E'],\n      dragonrage: ['7L10', '6L10', '5L10', '5D', '5S0', '5S1', '5S2'],\n      dragontail: ['9M'],\n      dualchop: ['8L30', '7T', '7L13', '6T', '6L13', '5T', '5L13'],\n      endeavor: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      endure: ['9M', '8M', '7E', '6E', '5E', '5S1'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '9L6', '8M', '8L6', '7M', '7L24', '6M', '6L24', '5M', '5L24'],\n      firstimpression: ['9E', '8E'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['9L33', '8M', '7E', '6E', '5E'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '9L48', '8M', '8L48', '7M', '7L61', '6M', '6L61', '5M', '5L61', '5S2'],\n      guillotine: ['9L45', '8L45', '7L50', '6L50', '5L51'],\n      harden: ['8E', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M'],\n      irontail: ['9E', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      laserfocus: ['8L33'],\n      leer: ['9L1', '8L1', '7L4', '6L4', '5L4'],\n      nightslash: ['9E', '8E', '7E', '6E', '5E', '5D'],\n      outrage: ['9M', '9L42', '8M', '8L42', '7T', '7L56', '6T', '6L56', '5T', '5L56', '5S2'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      razorwind: ['7E', '6E', '5E'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '5S1'],\n      reversal: ['9M', '8M', '7E', '6E', '5E'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L21', '8M', '8L21', '7L16', '6L16', '5L16'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S0', '5S2'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M'],\n      shockwave: ['7T', '6T'],\n      slash: ['9L15', '8L15', '7L20', '6L20', '5L20'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L39', '8M', '8L39', '7M', '7L46', '6M', '6L46', '5M', '5L46'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L12', '8M', '8L12', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'fraxure',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['9L9', '8M', '8L9', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bite: ['9L1', '8L1'],\n      breakingswipe: ['9M', '9L30', '8M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L24', '8M', '8L24'],\n      cut: ['6M', '5M'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L18', '8M', '8L18', '7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      dragondance: ['9M', '9L27', '8M', '8L27', '7L32', '6L32', '5L32'],\n      dragonpulse: ['9M', '9L36', '8M', '8L36', '7T', '7L42', '6T', '6L42', '5T', '5L42'],\n      dragonrage: ['7L1', '6L1', '5L1'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualchop: ['8L30', '7T', '7L13', '6T', '6L13', '5T', '5L13'],\n      endeavor: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '9L1', '8M', '8L1', '7M', '7L24', '6M', '6L24', '5M', '5L24'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['9L33', '8M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '9L56', '8M', '8L56', '7M', '7L66', '6M', '6L66', '5M', '5L66'],\n      guillotine: ['9L51', '8L51', '7L54', '6L54', '5L54'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      laserfocus: ['8L33'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      outrage: ['9M', '9L46', '8M', '8L46', '7T', '7L60', '6T', '6L60', '5T', '5L60'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L21', '8M', '8L21', '7L16', '6L16', '5L16'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      slash: ['9L15', '8L15', '7L20', '6L20', '5L20'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L41', '8M', '8L41', '7M', '7L48', '6M', '6L48', '5M', '5L48'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L12', '8M', '8L12', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'haxorus',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['9L9', '8M', '8L9', '7L1', '6L1', '5L1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bite: ['9L1', '8L1'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '9L30', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L24', '8M', '8L24'],\n      cut: ['6M', '5M'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L18', '8M', '8L18', '7M', '7L28', '6M', '6L28', '5M', '5L28'],\n      dragondance: ['9M', '9L27', '8M', '8L27', '7L32', '6L32', '5L32', '5S0'],\n      dragonpulse: ['9M', '9L36', '8M', '8L36', '7T', '7L42', '6T', '6L42', '5T', '5L42'],\n      dragonrage: ['7L1', '6L1', '5L1'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualchop: ['8L30', '7T', '7L13', '6T', '6L13', '5T', '5L13', '5S0'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      endeavor: ['9M', '7T', '6T', '5T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '9L1', '8M', '8L1', '7M', '7L24', '6M', '6L24', '5M', '5L24'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['9L33', '8M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '9L60', '8M', '8L60', '7M', '7L74', '6M', '6L74', '5M', '5L74'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      guillotine: ['9L53', '8L53', '7L58', '6L58', '5L58'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['9M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      laserfocus: ['8L33', '7T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      lowsweep: ['9M'],\n      outrage: ['9M', '9L46', '8M', '8L46', '7T', '7L1', '6T', '6L1', '5T', '5L66'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychocut: ['8M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L21', '8M', '8L21', '7L16', '6L16', '5L16'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      slash: ['9L15', '8L15', '7L20', '6L20', '5L20'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M', '8M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L41', '8M', '8L41', '7M', '7L50', '6M', '6L50', '5M', '5L50'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L12', '8M', '8L12', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M', '5S0']\n    }\n  ],\n  [\n    'cubchoo',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      assurance: ['8M', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      avalanche: ['9M', '8M', '7E', '6E', '5E'],\n      bide: ['7L9', '6L9', '5L9', '5S0'],\n      blizzard: ['9M', '9L39', '8M', '8L39', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brine: ['9L15', '8M', '8L15', '7L21', '6L21', '5L21'],\n      bulldoze: ['9M'],\n      charm: ['9M', '9L27', '8M', '8L27', '7L29', '6L29', '5L29'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['9M'],\n      cut: ['6M', '5M'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '8M', '7E', '6E', '5E'],\n      endeavor: ['9M'],\n      endure: ['9M', '9L3', '8M', '8L3', '7L25', '6L25', '5L25'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flail: ['9L24', '8L24', '7L36', '6L36', '5L36'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5E'],\n      frostbreath: ['9L18', '8L18', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['9L6', '8L6', '7L17', '6L17', '5L17'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L5', '5S0'],\n      hail: ['8M', '8L30', '7M', '7L49', '6M', '6L49', '5M', '5L49'],\n      heavyslam: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M'],\n      icefang: ['9M', '8M'],\n      icepunch: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '9L9', '8M', '8L9', '7T', '7L13', '6T', '6L13', '5T', '5L13', '5S0'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      nightslash: ['9E', '8E', '7E', '6E', '5E'],\n      playnice: ['9L12', '8L12', '7L15', '6L15'],\n      playrough: ['9M', '8M', '7E', '6E'],\n      powdersnow: ['9L1', '8L1', '7L5', '6L5', '5L1', '5S0'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '9L36', '8M', '8L36', '7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['9M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      sheercold: ['9L42', '8L42', '7L57', '6L57', '5L57'],\n      slash: ['9L21', '8L21', '7L33', '6L33', '5L33'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      snarl: ['9M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      snowscape: ['9M', '9L30'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L33', '8L33', '7L53', '6L53', '5L53'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      waterpulse: ['9M', '7T', '6T'],\n      xscissor: ['9M'],\n      yawn: ['9E', '8E', '7E', '6E', '5E']\n    }\n  ],\n  [\n    'beartic',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      aquajet: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      avalanche: ['9M', '8M'],\n      bide: ['7L1', '6L1', '5L1'],\n      blizzard: ['9M', '9L41', '8M', '8L41', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brine: ['9L15', '8M', '8L15', '7L21', '6L21', '5L21'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      chillingwater: ['9M'],\n      closecombat: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      crunch: ['9M'],\n      curse: ['9M'],\n      cut: ['6M', '5M'],\n      dig: ['9M', '8M', '6M', '5M'],\n      dive: ['8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthquake: ['9M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '9L1', '8M', '8L1', '7L25', '6L25', '5L25'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flail: ['9L24', '8L24', '7L36', '6L36', '5L36'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frostbreath: ['9L18', '8L18', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['9L1', '8L1', '7L17', '6L17', '5L17'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      growl: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      hail: ['8M', '8L30', '7M', '7L53', '6M', '6L53', '5M', '5L53'],\n      hardpress: ['9M'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M'],\n      icefang: ['9M', '8M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T'],\n      iciclecrash: ['9L0', '8L0', '7L1', '6L37', '5L37'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L9', '8M', '8L9', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      liquidation: ['9M', '8M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      playnice: ['9L12', '8L12', '7L15', '6L9'],\n      playrough: ['9M', '8M'],\n      powdersnow: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '9L36', '8M', '8L36', '7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      sheercold: ['9L46', '8L46', '7L1', '6L1', '5L66'],\n      slash: ['9L21', '8L21', '7L33', '6L33', '5L33'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      snowscape: ['9M', '9L30'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['9L51', '8M', '8L51', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      surf: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['9L27', '8L27', '7M', '7L29', '6M', '6L29', '5M', '5L29'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L33', '8L33', '7L1', '6L1', '5L59'],\n      throatchop: ['9M', '8M', '7T'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      waterpulse: ['9M', '7T', '6T'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'cryogonal',\n    {\n      acidarmor: ['9L52', '8L52', '7L17', '6L29', '5L29'],\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      ancientpower: ['9L20', '8L24', '7L21'],\n      attract: ['7M', '6M', '5M'],\n      aurorabeam: ['9L24', '8L28', '7L13', '6L25', '5L25'],\n      auroraveil: ['9E', '7M'],\n      avalanche: ['9M', '8M'],\n      bind: ['9L1', '8L1', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M'],\n      bodyslam: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L4', '8L4', '7L41', '6L45', '5L45'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      explosion: ['9E', '7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      freezedry: ['9L36', '8L36', '7L49', '6L50'],\n      frostbreath: ['9E', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M'],\n      hail: ['8M', '7M', '6M', '5M'],\n      haze: ['9M', '9L16', '8L20', '7L9', '6L1', '5L21'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      icebeam: ['9M', '9L48', '8M', '8L48', '7M', '7L25', '6M', '6L33', '5M', '5L33'],\n      iceshard: ['9L1', '8L1', '7L1', '6L1', '5L5'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L12', '8M', '8L16', '7T', '7L5', '6T', '6L17', '5T', '5L17'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['8L12', '7T'],\n      lightscreen: ['9M', '9L40', '8M', '8L40', '7M', '7L29', '6M', '6L37', '5M', '5L37'],\n      magiccoat: ['7T', '6T', '5T'],\n      mist: ['9L16', '8L20', '7L9', '6L1', '5L21'],\n      nightslash: ['9L32', '8L32', '7L1', '6L1', '5L57'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rapidspin: ['9L8', '8L8', '7L1', '6L13', '5L13'],\n      recover: ['9L44', '8L44', '7L45', '6L49', '5L49'],\n      reflect: ['9M', '9L40', '8M', '8L40', '7M', '7L33', '6M', '6L37', '5M', '5L37'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M'],\n      sharpen: ['7L1', '6L9', '5L9'],\n      sheercold: ['9L60', '8L60', '7L1', '6L1', '5L61'],\n      signalbeam: ['7T', '6T', '5T'],\n      slash: ['9L28', '8L32', '7L37', '6L41', '5L41'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      snowscape: ['9M'],\n      solarbeam: ['9M', '9L56', '8M', '8L56', '7M', '7L50', '6M', '6L53', '5M', '5L53'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      tripleaxel: ['9M', '8T'],\n      waterpulse: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'shelmet',\n    {\n      absorb: ['8L1', '7L1'],\n      acid: ['8L4', '7L4', '6L4', '5L4', '5D'],\n      acidarmor: ['8L24', '7L32', '6L32', '5L32'],\n      attract: ['8M', '7M', '6M', '5M'],\n      batonpass: ['8M', '7E', '6E', '5E', '5D'],\n      bide: ['7L8', '6L8', '5L8'],\n      bodyslam: ['8M', '8L36', '7L40', '6L40', '5L40', '5S1'],\n      bugbite: ['7T', '6T', '5T'],\n      bugbuzz: ['8M', '8L44', '7L44', '6L44', '5L44', '5S1'],\n      confide: ['7M', '6M'],\n      curse: ['8L8', '7L13', '6L13', '5L13'],\n      doubleedge: ['8E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '6M', '5M'],\n      encore: ['8M', '7E', '6E', '5E', '5D', '5S1'],\n      endure: ['8M', '7E', '6E', '5E'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      feint: ['8E', '7E', '6E', '5E'],\n      finalgambit: ['8L48', '7L56', '6L56', '5L56'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['7T', '6T', '5T'],\n      gigadrain: ['8M', '8L28', '7T', '7L37', '6T', '6L37', '5T', '5L37', '5S1'],\n      guardsplit: ['8E', '7E', '6E', '5E'],\n      guardswap: ['8M', '8L32', '7L50', '6L50', '5L52'],\n      hiddenpower: ['7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      leechlife: ['8M', '7M', '6L1', '5L1'],\n      megadrain: ['8L12', '7L20', '6L20', '5L20', '5S0'],\n      mindreader: ['8E', '7E', '6E', '5E'],\n      mudshot: ['8M'],\n      mudslap: ['7E', '6E', '5E'],\n      protect: ['8M', '8L1', '7M', '7L28', '6M', '6L28', '5M', '5L28', '5S0'],\n      pursuit: ['7E', '6E', '5E'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      recover: ['8L40', '7L49', '6L49', '5L49'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T', '5T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spikes: ['8M', '7E', '6E', '5E'],\n      strugglebug: ['8L16', '7L16', '6M', '6L16', '5M', '5L16', '5S0'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      toxicspikes: ['8M', '7E'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      yawn: ['8L20', '7L25', '6L25', '5L25', '5S0']\n    }\n  ],\n  [\n    'accelgor',\n    {\n      absorb: ['8L1', '7L1'],\n      acid: ['8L1'],\n      acidarmor: ['8L1'],\n      acidspray: ['8L1', '7L1', '6L1', '5L1'],\n      agility: ['8M', '8L24', '7L32', '6L32', '5L32'],\n      attract: ['8M', '7M', '6M', '5M'],\n      batonpass: ['8M'],\n      bodyslam: ['8M', '8L1'],\n      bugbite: ['7T', '6T', '5T'],\n      bugbuzz: ['8M', '8L44', '7L44', '6L44', '5L44'],\n      confide: ['7M', '6M'],\n      curse: ['8L1'],\n      doubleteam: ['8L1', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      drainpunch: ['8M'],\n      encore: ['8M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      finalgambit: ['8L48', '7L1', '6L1', '5L56'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gastroacid: ['7T', '6T', '5T'],\n      gigadrain: ['8M', '8L28', '7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      guardswap: ['8M', '8L1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      leechlife: ['8M', '7M', '6L1', '5L1'],\n      mefirst: ['7L28', '6L28', '5L28'],\n      megadrain: ['8L12', '7L20', '6L20', '5L20'],\n      mudshot: ['8M'],\n      powerswap: ['8M', '8L32', '7L1', '6L1', '5L52'],\n      protect: ['8M', '7M', '6M', '5M'],\n      quickattack: ['8L1', '7L1', '6L1', '5L1'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      recover: ['8L40', '7L49', '6L49', '5L49'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['8M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T', '5T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spikes: ['8M'],\n      strugglebug: ['8L16', '7L16', '6M', '6L16', '5M', '5L16'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M', '8L20', '7L25', '6L25', '5L25'],\n      toxic: ['8L52', '7M', '6M', '5M'],\n      toxicspikes: ['8M'],\n      uturn: ['8M', '8L36', '7M', '7L40', '6M', '6L40', '5M', '5L40'],\n      venomdrench: ['8M'],\n      venoshock: ['8M', '7M', '6M', '5M'],\n      watershuriken: ['8L1', '7L1', '6L1'],\n      yawn: ['8L1']\n    }\n  ],\n  [\n    'stunfisk',\n    {\n      aquatail: ['7T', '6T', '5T'],\n      astonish: ['8E', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bide: ['7L5', '6L5', '5L5'],\n      bounce: ['8M', '8L35', '7T', '7L35', '6T', '6L35', '5T', '5L35'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      camouflage: ['7L17', '6L17', '5L17'],\n      charge: ['8L20'],\n      confide: ['7M', '6M'],\n      curse: ['8E', '7E', '6E', '5E', '5D'],\n      dig: ['8M', '6M', '5M'],\n      discharge: ['8L45', '7L25', '6L25', '5L25'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      eerieimpulse: ['8M', '7E', '6E'],\n      electricterrain: ['8M', '8L30'],\n      electroweb: ['8M', '7T', '6T', '5T'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M', '8L5', '7L30', '6L30', '5L30'],\n      facade: ['8M', '7M', '6M', '5M'],\n      fissure: ['8L55', '7L1', '6L1', '5L61'],\n      flail: ['8L50', '7L1', '6L1', '5L55'],\n      flash: ['6M', '5M'],\n      foulplay: ['8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      lashout: ['8T'],\n      magnetrise: ['7T', '6T', '5T'],\n      mefirst: ['7E', '6E'],\n      mudbomb: ['7L21', '6L21', '5L21'],\n      muddywater: ['8M', '8L40', '7L40', '6L40', '5L40'],\n      mudshot: ['8M', '8L10', '7L13', '6L13', '5L13'],\n      mudslap: ['8L1', '7L1', '6L1', '5L1', '5D'],\n      mudsport: ['7L1', '6L1', '5L1'],\n      painsplit: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      reflecttype: ['8E', '7E', '6E'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M', '8L15', '7L50', '6L50', '5L50'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '7E', '6T', '6E', '5E'],\n      sleeptalk: ['8M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      sludgewave: ['8M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spark: ['8E', '7E', '6E', '5E'],\n      spite: ['8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      suckerpunch: ['8L25'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['8L1', '7L1', '6L1'],\n      thunder: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      thundershock: ['8L1', '7L9', '6L9', '5L9'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      watergun: ['8L1', '7L1', '6L1'],\n      waterpulse: ['7T', '6T'],\n      yawn: ['8E', '7E', '6E', '5E', '5D']\n    }\n  ],\n  [\n    'stunfiskgalar',\n    {\n      astonish: ['8E'],\n      attract: ['8M'],\n      bind: ['8E'],\n      bounce: ['8M', '8L35'],\n      bulldoze: ['8M'],\n      counter: ['8E'],\n      crunch: ['8M'],\n      curse: ['8E'],\n      dig: ['8M'],\n      earthpower: ['8M'],\n      earthquake: ['8M'],\n      endure: ['8M', '8L5'],\n      facade: ['8M'],\n      fissure: ['8L55'],\n      flail: ['8L50'],\n      flashcannon: ['8M'],\n      foulplay: ['8M'],\n      icefang: ['8M'],\n      irondefense: ['8M', '8L30'],\n      lashout: ['8T'],\n      metalclaw: ['8L1'],\n      metalsound: ['8L20'],\n      muddywater: ['8M', '8L40'],\n      mudshot: ['8M', '8L10'],\n      mudslap: ['8L1'],\n      painsplit: ['8E'],\n      payback: ['8M'],\n      protect: ['8M'],\n      raindance: ['8M'],\n      reflecttype: ['8E'],\n      rest: ['8M'],\n      revenge: ['8M', '8L15'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      sandstorm: ['8M'],\n      scald: ['8M'],\n      screech: ['8M'],\n      sleeptalk: ['8M'],\n      sludgebomb: ['8M'],\n      sludgewave: ['8M'],\n      snaptrap: ['8L45'],\n      snore: ['8M'],\n      spite: ['8E'],\n      stealthrock: ['8M'],\n      steelbeam: ['8T'],\n      stompingtantrum: ['8M'],\n      stoneedge: ['8M'],\n      substitute: ['8M'],\n      suckerpunch: ['8L25'],\n      surf: ['8M'],\n      tackle: ['8L1'],\n      terrainpulse: ['8T'],\n      thunderwave: ['8M'],\n      uproar: ['8M'],\n      watergun: ['8L1'],\n      yawn: ['8E']\n    }\n  ],\n  [\n    'mienfoo',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M'],\n      agility: ['9M', '8M'],\n      allyswitch: ['8M', '7T', '7E', '6E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      aurasphere: ['9M', '9L45', '8M', '8L45', '7L61', '6L61', '5L61'],\n      batonpass: ['9M', '8M', '7E', '6E', '5E'],\n      bounce: ['9L51', '8M', '8L51', '7T', '7L49', '6T', '6L49', '5T', '5L49'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '9L55', '8M', '8L55', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      detect: ['9L1', '8L1', '7L9', '6L9', '5L9'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleslap: ['7L17', '6L17', '5L17'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '9L35', '8M', '8L35', '7T', '7L33', '6T', '6L33', '5T', '5L33'],\n      dualchop: ['7T', '6T', '5T'],\n      endure: ['9M', '8M', '7E', '6E', '5E'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fakeout: ['9L5', '8L5', '7L13', '6L13', '5L13'],\n      feint: ['9E', '8E', '7E', '6E', '5E'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M', '9E', '8E', '7T', '6T'],\n      forcepalm: ['9L25', '8L25', '7L29', '6L29', '5L29'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['9L15', '8L15'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highjumpkick: ['9L60', '8L60', '7L50', '6L50', '5L53'],\n      honeclaws: ['9L40', '8L40'],\n      jumpkick: ['7L37', '6L37', '5L37'],\n      knockoff: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lowkick: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      meditate: ['7L5', '6L5', '5L5'],\n      mefirst: ['7E', '6E', '5E'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      quickguard: ['9L20', '8L20', '7L45', '6L45', '5L45'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L10', '8M', '8L10', '7L57', '6L57', '5L57'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smellingsalts: ['7E', '6E', '5E'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M', '7L21', '6L21', '5L21'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uturn: ['9M', '9L30', '8M', '8L30', '7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      vitalthrow: ['8E', '7E', '6E', '5E'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'mienshao',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['9M', '7M', '6M', '5M'],\n      agility: ['9M', '8M'],\n      allyswitch: ['8M', '7T'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      aurasphere: ['9M', '9L45', '8M', '8L45', '7L1', '6L1', '5L70'],\n      batonpass: ['9M', '8M'],\n      blazekick: ['8M'],\n      bounce: ['9L53', '8M', '8L53', '7T', '7L49', '6T', '6L49', '5T', '5L49'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '9L59', '8M', '8L59', '7M', '7L25', '6M', '6L25', '5M', '5L25'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      detect: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleedge: ['9M'],\n      doubleslap: ['7L17', '6L17', '5L17'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '9L35', '8M', '8L35', '7T', '7L33', '6T', '6L33', '5T', '5L33'],\n      dualchop: ['7T', '7S0', '6T', '5T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fakeout: ['9L1', '8L1', '7L1', '7S0', '6L1', '5L1'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M', '7T', '6T'],\n      forcepalm: ['9L25', '8L25', '7L29', '6L29', '5L29'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['9L15', '8L15'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      helpinghand: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highjumpkick: ['9L66', '8L66', '7L56', '7S0', '6L56', '5L56'],\n      honeclaws: ['9L40', '8L40'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      icespinner: ['9M'],\n      jumpkick: ['7L37', '6L37', '5L37'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      meditate: ['7L1', '6L1', '5L1'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      quickguard: ['9L1', '8L1'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L63'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M', '7L21', '6L21', '5L21'],\n      swordsdance: ['9M', '8M', '7M', '6M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M'],\n      upperhand: ['9M'],\n      uturn: ['9M', '9L30', '8M', '8L30', '7M', '7L41', '7S0', '6M', '6L41', '5M', '5L41'],\n      vacuumwave: ['9M'],\n      wideguard: ['9L20', '8L20', '7L45', '6L45', '5L45'],\n      workup: ['8M', '7M', '5M']\n    }\n  ],\n  [\n    'druddigon',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bite: ['8L5', '7L9', '6L9', '5L9', '5D'],\n      bodyslam: ['8M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      chargebeam: ['7M', '6M', '5M'],\n      chipaway: ['7L31', '6L31', '5L31'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L40', '7L25', '6L25', '5L25'],\n      crushclaw: ['7E', '6E', '5E'],\n      cut: ['6M', '5M'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['8T', '7T', '6T', '5T'],\n      dragonclaw: ['8M', '8L30', '7M', '7L27', '6M', '6L27', '5M', '5L27'],\n      dragonpulse: ['8M', '7T', '6T', '5T'],\n      dragonrage: ['7L18', '6L18', '5L18'],\n      dragontail: ['8L10', '7M', '7L45', '6M', '6L45', '5M', '5L45'],\n      dualwingbeat: ['8T'],\n      earthquake: ['8M', '7M', '6M', '5M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      feintattack: ['7E', '6E', '5E'],\n      firefang: ['8M', '7E', '6E', '5E', '5D'],\n      firepunch: ['8M', '7T', '6T', '5T'],\n      flamethrower: ['8M', '7M', '6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      glare: ['8E', '7E', '6E', '5E'],\n      gunkshot: ['8M', '7T', '6T', '5T'],\n      heatwave: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['8L35', '7L5', '6M', '6L5', '5M', '5L5'],\n      hyperbeam: ['8M', '7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      ironhead: ['8M', '8L45', '7T', '6T', '5T'],\n      irontail: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lashout: ['8T'],\n      leer: ['8L1', '7L1', '6L1', '5L1', '5S0'],\n      megapunch: ['8M'],\n      metalclaw: ['8L15', '7E', '6E', '5E'],\n      nightslash: ['8E', '7L40', '6L40', '5L40'],\n      outrage: ['8M', '8L50', '7T', '7L62', '6T', '6L62', '5T', '5L62'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisontail: ['8E', '7E', '6E', '5E'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      pursuit: ['7E', '6E', '5E'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M', '7L35', '6L35', '5L35'],\n      roar: ['7M', '6M', '5M'],\n      rockclimb: ['7L49', '6L49', '5L49'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['8T'],\n      scaryface: ['8M', '8L20', '7L13', '6L13', '5L13'],\n      scratch: ['8L1', '7L1', '6L1', '5L1', '5S0'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      slash: ['8L25', '7L21', '6L21', '5L21'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      sludgebomb: ['8M', '7M', '6M', '5M'],\n      smackdown: ['7M', '6M', '5M'],\n      snarl: ['8M', '7M', '6M', '5M'],\n      snatch: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['8M', '7T', '6T', '5T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      suckerpunch: ['8E', '7E', '6E', '5E', '5D'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '8L55', '7T', '7L55', '6T', '6L55', '5T', '5L55'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      thunderfang: ['8M', '7E', '6E', '5E'],\n      thunderpunch: ['8M', '7T', '6T', '5T'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M']\n    }\n  ],\n  [\n    'golett',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['9M', '9L16', '8L16', '7L45', '6L40', '5L40'],\n      defensecurl: ['9L4', '8L4', '7L1', '6L1', '5L1'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T'],\n      dynamicpunch: ['9L56', '8L56', '7L35', '6L30', '5L30'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      earthquake: ['9M', '9L52', '8M', '8L52', '7M', '7L50', '6M', '6L45', '5M', '5L45'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T', '5D'],\n      flash: ['6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '7T', '7L61', '6T', '6L55', '5L55'],\n      frustration: ['7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M'],\n      hammerarm: ['9L48', '8L48', '7L55', '6L50', '5L50'],\n      heavyslam: ['9M', '9L40', '8M', '8L40'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '9L28', '8M', '8L28', '7T', '7L17', '6T', '6L17', '5T', '5L17'],\n      knockoff: ['9M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      magnitude: ['7L30', '6L25', '5L25'],\n      megakick: ['8M'],\n      megapunch: ['9M', '9L32', '8M', '8L32', '7L25', '6L21', '5L21'],\n      mudslap: ['9M', '9L1', '8L1', '7L5', '6L5', '5L5'],\n      nightshade: ['9M', '9L20', '8L20', '7L40', '6L35', '5L35'],\n      phantomforce: ['9M', '9L44', '8M', '8L44'],\n      poltergeist: ['9M', '8T'],\n      pound: ['9L8', '8L8', '7L1', '6L1', '5L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['9M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      rollout: ['7L9', '6L9', '5L9', '5D'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '9L36', '8M', '8L36', '7M', '6M', '5M'],\n      shadowpunch: ['9L12', '8L12', '7L13', '6L13', '5L13'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M', '9L24', '8M', '8L24', '7L21'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '5D'],\n      toxic: ['7M', '6M', '5M']\n    }\n  ],\n  [\n    'golurk',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      block: ['7T', '6T', '5T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      chargebeam: ['9M', '7M', '6M', '5M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      curse: ['9M', '9L16', '8L16', '7L47', '6L40', '5L40'],\n      darkestlariat: ['8M'],\n      defensecurl: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T'],\n      dynamicpunch: ['9L64', '8L64', '7L35', '6L30', '5L30'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      earthquake: ['9M', '9L58', '8M', '8L58', '7M', '7L54', '6M', '6L50', '5M', '5L50'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firepunch: ['9M', '8M', '7T', '6T', '5T'],\n      flash: ['6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '9L1', '8L1', '7T', '7L69', '6T', '6L1', '5L70'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      gyroball: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      hammerarm: ['9L52', '8L52', '7L61', '6L60', '5L60', '5S0'],\n      hardpress: ['9M'],\n      heatcrash: ['9M', '8M'],\n      heavyslam: ['9M', '9L40', '8M', '8L40', '7L1', '6L43', '5L43'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M', '9L1', '8M', '8L1', '7L1'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      icebeam: ['9M', '8M', '7M', '6M', '5M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T'],\n      icywind: ['9M', '8M', '7T', '6T', '5T'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '9L28', '8M', '8L28', '7T', '7L17', '6T', '6L17', '5T', '5L17'],\n      knockoff: ['9M'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      magnitude: ['7L30', '6L25', '5L25'],\n      megakick: ['8M'],\n      megapunch: ['9M', '9L32', '8M', '8L32', '7L25', '6L21', '5L21'],\n      mudslap: ['9M', '9L1', '8L1', '7L1', '6L1', '5L1'],\n      nightshade: ['9M', '9L20', '8L20', '7L40', '6L35', '5L35'],\n      phantomforce: ['9M', '9L46', '8M', '8L46', '7L76', '6L1'],\n      poltergeist: ['9M', '8T'],\n      pound: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['9M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      rollout: ['7L9', '6L9', '5L9'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '9L36', '8M', '8L36', '7M', '6M', '5M'],\n      shadowpunch: ['9L12', '8L12', '7L13', '6L13', '5L13', '5S0'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M', '9L24', '8M', '8L24', '7T', '7L21'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '8M', '7M', '6M', '5M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '8M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'pawniard',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      airslash: ['9M'],\n      assurance: ['9L25', '8M', '8L25', '7L33', '6L33', '5L33'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualchop: ['7T', '6T', '5T'],\n      embargo: ['7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M'],\n      feintattack: ['7L17', '6L17', '5L17'],\n      flashcannon: ['9M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['9L5', '8L5', '7L9', '6L9', '5L9', '5D'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      guillotine: ['9L65', '8L65', '7L62', '6L62', '5L62'],\n      headbutt: ['9E', '8E', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      irondefense: ['9M', '9L45', '8M', '8L45', '7T', '7L46', '6T', '6L46', '5T', '5L46'],\n      ironhead: ['9M', '9L55', '8M', '8L55', '7T', '7L54', '6T', '6L54', '5T', '5L54'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['8L50'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L6', '6L6', '5L6'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magnetrise: ['7T', '6T', '5T'],\n      meanlook: ['9E', '8E', '7E', '6E', '5E'],\n      metalclaw: ['9M', '9L10', '8L10', '7L25', '6L25', '5L25'],\n      metalsound: ['9M', '9L30', '8L30', '7L38', '6L38', '5L38'],\n      nightslash: ['9L40', '8L40', '7L49', '6L49', '5L49'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychocut: ['8M', '7E', '6E', '5E', '5D'],\n      pursuit: ['7E', '6E', '5E'],\n      quickguard: ['9E', '8E', '7E', '6E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['9L50', '8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M', '7E', '6E', '5E'],\n      rockpolish: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L22', '6L22', '5L22'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      slash: ['9L35', '8L35', '7L30', '6L30', '5L30'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      steelbeam: ['9M', '8T'],\n      stoneedge: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      suckerpunch: ['9E', '8E', '7E', '6E', '5E', '5D'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['9M', '9L60', '8M', '8L60', '7M', '7L57', '6M', '6L57', '5M', '5L57'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      torment: ['9L15', '8L15', '7M', '7L14', '6M', '6L14', '5M', '5L14'],\n      toxic: ['7M', '6M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'bisharp',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      airslash: ['9M', '8M'],\n      assurance: ['9L25', '8M', '8L25', '7L33', '6L33', '5L33'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualchop: ['7T', '6T', '5T'],\n      embargo: ['7M', '7L41', '6M', '6L41', '5M', '5L41'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M'],\n      feintattack: ['7L17', '6L17', '5L17'],\n      flashcannon: ['9M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      guillotine: ['9L71', '8L71', '7L1', '6L1', '5L71'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      irondefense: ['9M', '9L45', '8M', '8L45', '7T', '7L46', '6T', '6L46', '5T', '5L46'],\n      ironhead: ['9M', '9L57', '8M', '8L57', '7T', '7L1', '6T', '6L1', '5T', '5L57'],\n      knockoff: ['7T', '6T', '5T'],\n      laserfocus: ['8L50', '7T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['9M', '8M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '8M', '7M', '6M', '5M'],\n      magnetrise: ['7T', '6T', '5T'],\n      metalburst: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      metalclaw: ['9M', '9L1', '8L1', '7L25', '6L25', '5L25'],\n      metalsound: ['9M', '9L30', '8L30', '7L38', '6L38', '5L38'],\n      nightslash: ['9L40', '8L40', '7L49', '6L49', '5L49'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychocut: ['8M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['9L50', '8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L22', '6L22', '5L22'],\n      scratch: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      slash: ['9L35', '8L35', '7L30', '6L30', '5L30'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      steelbeam: ['9M', '8T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['9M', '9L64', '8M', '8L64', '7M', '7L63', '6M', '6L63', '5M', '5L63'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      torment: ['9L15', '8L15', '7M', '7L1', '6M', '6L1', '5M', '5L1'],\n      toxic: ['7M', '6M', '5M'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  [\n    'kingambit',\n    {\n      aerialace: ['9M'],\n      airslash: ['9M'],\n      assurance: ['9L25'],\n      brickbreak: ['9M'],\n      darkpulse: ['9M'],\n      dig: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      flashcannon: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      foulplay: ['9M'],\n      furycutter: ['9L1'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      guillotine: ['9L71'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M', '9L45'],\n      ironhead: ['9M', '9L57'],\n      kowtowcleave: ['9L0'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      metalburst: ['9L1'],\n      metalclaw: ['9M', '9L1'],\n      metalsound: ['9M', '9L30'],\n      nightslash: ['9L40'],\n      poisonjab: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      retaliate: ['9L50'],\n      reversal: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '9L20'],\n      scratch: ['9L1'],\n      shadowclaw: ['9M'],\n      slash: ['9L35'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      spite: ['9M'],\n      stealthrock: ['9M'],\n      steelbeam: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      swordsdance: ['9M', '9L64'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunderwave: ['9M'],\n      torment: ['9L15'],\n      xscissor: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'bouffalant',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      amnesia: ['8M', '7E', '6E', '5E'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      belch: ['8E', '7E', '6E'],\n      bodyslam: ['8M'],\n      bulldoze: ['8M', '7M', '6M', '5M'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      cottonguard: ['8E', '7E'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthquake: ['8M', '7M', '6M', '6S0', '5M'],\n      endeavor: ['8E', '7T', '6T', '5T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '6S0', '5M'],\n      focusenergy: ['8M', '8L5', '7L36', '6L36', '5L36'],\n      frustration: ['7M', '6M', '5M'],\n      furyattack: ['8L10', '7L11', '6L11', '5L11'],\n      gigaimpact: ['8M', '8L55', '7M', '7L61', '6M', '6L61', '5M', '5L61'],\n      headbutt: ['8E', '7E', '6E', '5E'],\n      headcharge: ['8L40', '7L31', '6L31', '6S0', '5L31'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['8M'],\n      hornattack: ['8L25', '7L16', '6L16', '5L16'],\n      ironhead: ['8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lashout: ['8T'],\n      leer: ['8L1', '7L1', '6L1', '5L1'],\n      megahorn: ['8M', '8L50', '7L41', '6L41', '5L41'],\n      mudshot: ['8M', '7E', '6E', '5E'],\n      mudslap: ['8E', '7E', '6E', '5E'],\n      outrage: ['8M', '7T', '6T', '5T'],\n      payback: ['8M', '7M', '6M', '5M'],\n      poisonjab: ['8M', '7M', '6M', '5M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      pursuit: ['7L1', '6L1', '5L1'],\n      rage: ['7L6', '6L6', '5L6'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M', '8L15', '7L26', '6L26', '5L26'],\n      reversal: ['8M', '8L30', '7L46', '6L46', '5L46'],\n      rockclimb: ['7E', '6E', '5E'],\n      rockslide: ['8M', '7M', '6M', '6S0', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['8M', '8L20', '7L21', '6L21', '5L21'],\n      secretpower: ['6M'],\n      skullbash: ['8E', '7E', '6E', '5E'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stomp: ['8E', '7E', '6E', '5E'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['8M', '8L45', '7M', '7L56', '6M', '6L56', '5M', '5L56'],\n      tackle: ['8L1'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      thrash: ['7L50', '6L50', '5L51'],\n      throatchop: ['8M', '8L35'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      wildcharge: ['8M', '7M', '6M', '5M'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'rufflet',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '9L30', '8L30', '7M', '7L23', '6M', '6L23', '5M', '5L23'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L55', '8M', '8L55', '7L41', '6L41', '5L41'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bodyslam: ['9M'],\n      bravebird: ['9M', '9L72', '8M', '8L72', '7L59', '6L59', '5L59'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      crushclaw: ['9L48', '8L48', '7L46', '6L46', '5L46'],\n      cut: ['6M', '5M'],\n      defog: ['9L60', '8L60', '7T', '7L32', '6L32', '5L32'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      featherdance: ['9M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furyattack: ['7L5', '6L5', '5L5'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['9L6', '8L6', '7L14', '6M', '6L14', '5M', '5L14'],\n      hurricane: ['9M', '8M'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      peck: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      pluck: ['5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['9E', '6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['9E', '7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L24', '8M', '8L24', '7L19', '6L19', '5L19'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      skydrop: ['7M', '7L50', '6M', '6L50', '5M', '5L50'],\n      slash: ['9L36', '8L36', '7L28', '6L28', '5L28'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelwing: ['8M', '7M', '6M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M', '9L18', '8L18', '7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L66', '8L66', '7L64', '6L64', '5L64'],\n      toxic: ['7M', '6M', '5M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      whirlwind: ['9L42', '8L42', '7L55', '6L55', '5L55'],\n      wingattack: ['9L12', '8L12', '7L10', '6L10', '5L10'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'braviary',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '9L30', '8L30', '7M', '7L23', '6M', '6L23', '5M', '5L23', '5S0'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L57', '8M', '8L57', '7L41', '6L41', '5L41'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bodyslam: ['9M'],\n      bravebird: ['9M', '8M', '8L80', '7L1', '6L1', '5L63'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      crushclaw: ['9L48', '8L48', '7L46', '6L46', '5L46'],\n      cut: ['6M', '5M'],\n      defog: ['9L64', '8L64', '7T', '7L32', '6L32', '5L32'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      featherdance: ['9M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furyattack: ['7L1', '6L1', '5L1'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['9L1', '8L1', '7L14', '6M', '6L14', '5M', '5L14', '5S0'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      ironhead: ['9M', '8M'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      metalclaw: ['9M'],\n      peck: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      pluck: ['5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L24', '8M', '8L24', '7L19', '6L19', '5L19', '5S0'],\n      secretpower: ['6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      skyattack: ['9L1', '8L1', '7T', '6T', '5T'],\n      skydrop: ['7M', '7L50', '6M', '6L50', '5M', '5L50'],\n      slash: ['9L36', '8L36', '7L28', '6L28', '5L28'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelwing: ['8M', '7M', '6M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['9L0', '8M', '8L0', '7T', '7L1', '6T', '6L1', '5T', '5L51'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M', '9L18', '8L18', '7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L72', '8L72', '7L1', '6L1', '5L70'],\n      toxic: ['7M', '6M', '5M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      whirlwind: ['9L42', '8L42', '7L1', '6L1', '5L57'],\n      wingattack: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S0'],\n      workup: ['8M', '7M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T']\n    }\n  ],\n  [\n    'braviaryhisui',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '9L30'],\n      agility: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L57'],\n      bodyslam: ['9M'],\n      bravebird: ['9M'],\n      bulkup: ['9M'],\n      calmmind: ['9M'],\n      closecombat: ['9M'],\n      confuseray: ['9M'],\n      crushclaw: ['9L48'],\n      dazzlinggleam: ['9M'],\n      defog: ['9L64'],\n      doubleedge: ['9M'],\n      dualwingbeat: ['9M'],\n      endure: ['9M'],\n      esperwing: ['9L0'],\n      expandingforce: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M'],\n      fly: ['9M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      honeclaws: ['9L1'],\n      hurricane: ['9M', '9L80'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icywind: ['9M'],\n      leer: ['9L1'],\n      metalclaw: ['9M'],\n      nightshade: ['9M'],\n      peck: ['9L1'],\n      protect: ['9M'],\n      psybeam: ['9M'],\n      psychic: ['9M'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M'],\n      psyshock: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      scaryface: ['9M', '9L24'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M'],\n      skyattack: ['9L1'],\n      slash: ['9L36'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superpower: ['9L1'],\n      swift: ['9M'],\n      tailwind: ['9M', '9L18'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L72'],\n      uturn: ['9M'],\n      vacuumwave: ['9M'],\n      whirlwind: ['9L42'],\n      wingattack: ['9L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'vullaby',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L42', '8M', '8L42', '7L41', '6L41', '5L41'],\n      assurance: ['8M'],\n      attract: ['9L66', '8M', '8L66', '7M', '6M', '5M'],\n      block: ['7T', '6T', '5T'],\n      bravebird: ['9M', '9L72', '8M', '8L72', '7L59', '6L59', '5L59'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '9L48', '8M', '8L48', '7M', '7L46', '6M', '6L46', '5T', '5L46'],\n      defog: ['9L60', '8L60', '7T', '7L32', '6L32', '5L32'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      embargo: ['7M', '7L50', '6M', '6L50', '5M', '5L50'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      faketears: ['9M', '8M', '7E', '6E', '5E'],\n      featherdance: ['9M'],\n      feintattack: ['7L23', '6L23', '5L23'],\n      flatter: ['9L6', '8L6', '7L19', '6L19', '5L19'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      foulplay: ['9M', '8M', '7T', '7E', '6T', '6E', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      furyattack: ['7L5', '6L5', '5L5'],\n      gust: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '9L30', '8M', '8L30', '5T'],\n      knockoff: ['9M', '9L24', '8L24', '7T', '7E', '6T', '6E', '5T', '5E'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      meanlook: ['9E', '8E', '7E', '6E', '5E'],\n      mirrormove: ['7L64', '6L64', '5L64'],\n      nastyplot: ['9M', '9L54', '8M', '8L54', '7L14', '6L14', '5L14'],\n      payback: ['8M', '7M', '6M', '5M'],\n      pluck: ['9L12', '8L12', '7L10', '6L10', '5M', '5L10'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      punishment: ['7L28', '6L28', '5L28'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['9E', '8E', '7M', '7E', '6M', '6E', '5T', '5E'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M', '7E', '6E', '5E'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M'],\n      steelwing: ['8M', '7M', '7E', '6M', '6E', '5E'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M', '9L18', '8L18', '7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      throatchop: ['9M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['9M', '9E', '8E', '7M', '6M', '5M'],\n      uproar: ['9M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      whirlwind: ['9L36', '8L36', '7L55', '6L55', '5L55']\n    }\n  ],\n  [\n    'mandibuzz',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M', '6M', '5M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L42', '8M', '8L42', '7L41', '6L41', '5L41'],\n      assurance: ['8M'],\n      attract: ['9L72', '8M', '8L72', '7M', '6M', '5M'],\n      block: ['7T', '6T', '5T'],\n      bonerush: ['9L0', '8L0', '7L1', '6L1', '5L51'],\n      bravebird: ['9M', '9L80', '8M', '8L80', '7L1', '6L1', '5L63'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '9L48', '8M', '8L48', '7M', '7L46', '6M', '6L46', '5T', '5L46'],\n      defog: ['9L64', '8L64', '7T', '7L32', '6L32', '5L32'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      embargo: ['7M', '7L50', '6M', '6L50', '5M', '5L50'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      faketears: ['9M', '8M'],\n      featherdance: ['9M'],\n      feintattack: ['7L23', '6L23', '5L23', '5S0'],\n      flatter: ['9L1', '8L1', '7L19', '6L19', '5L19', '5S0'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      furyattack: ['7L1', '6L1', '5L1'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      gust: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irondefense: ['9M', '9L30', '8M', '8L30', '7T', '5T'],\n      knockoff: ['9M', '9L24', '8L24', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      mirrormove: ['7L1', '6L1', '5L70'],\n      nastyplot: ['9M', '9L57', '8M', '8L57', '7L14', '6L14', '5L14', '5S0'],\n      payback: ['8M', '7M', '6M', '5M'],\n      pluck: ['9L1', '8L1', '7L1', '6L1', '5M', '5L1', '5S0'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      punishment: ['7L28', '6L28', '5L28'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      skyattack: ['9L1', '8L1', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M', '8M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M'],\n      steelwing: ['8M', '7M', '6M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M', '9L18', '8L18', '7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      throatchop: ['9M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['9M', '9L1', '8L1', '7M', '6M', '5M'],\n      uproar: ['9M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      whirlwind: ['9L36', '8L36', '7L1', '6L1', '5L57']\n    }\n  ],\n  [\n    'heatmor',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      amnesia: ['8M', '8L45', '7L47', '6L44', '5L46'],\n      attract: ['8M', '7M', '6M', '5M'],\n      belch: ['8E', '7E', '6E'],\n      bind: ['8L30', '7T', '7L11', '6T', '6L11', '5T', '5L11'],\n      bodyslam: ['8M', '7E', '6E', '5E'],\n      brutalswing: ['8M'],\n      bugbite: ['8L15', '7T', '7L36', '6T', '6L36', '5T', '5L36'],\n      burningjealousy: ['8T'],\n      confide: ['7M', '6M'],\n      curse: ['8E', '7E', '6E', '5E'],\n      cut: ['6M', '5M'],\n      dig: ['8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['8M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M', '5M'],\n      feintattack: ['7E', '6E', '5E'],\n      fireblast: ['8M', '7M', '6M', '5M'],\n      firelash: ['8L35', '7L44'],\n      firepunch: ['8M', '7T', '6T', '5T'],\n      firespin: ['8M', '8L50', '7L16', '6L16', '5L16'],\n      flameburst: ['7L31', '6L31', '5L31'],\n      flamethrower: ['8M', '7M', '7L50', '6M', '6L47', '5M', '5L51'],\n      flareblitz: ['8M', '8L60', '7L61'],\n      fling: ['8M', '7M', '6M', '5M'],\n      focusblast: ['8M', '7M', '6M', '5M'],\n      focuspunch: ['7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      furyswipes: ['8L5', '7L21', '6L21', '5L21'],\n      gastroacid: ['7T', '6T', '5T'],\n      gigadrain: ['8M', '7T', '6T', '5T', '5D'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      heatwave: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '5D'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['8L40', '7L1', '6M', '6L1', '5M'],\n      incinerate: ['8L10', '7L1', '6M', '6L1', '5M', '5L1', '5D'],\n      inferno: ['8L55', '7L66', '6L1', '5L61'],\n      knockoff: ['7T', '6T', '5T'],\n      lick: ['8L1', '7L1', '6L1', '5L1'],\n      lowkick: ['8M', '7T', '6T', '5T'],\n      nightslash: ['8E', '7E', '6E', '5E'],\n      odorsleuth: ['7L6', '6L6', '5L6'],\n      overheat: ['8M', '7M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M', '5M'],\n      pursuit: ['7E', '6E', '5E'],\n      raindance: ['8M', '7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scorchingsands: ['8T'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      slash: ['8L25', '7L41', '6L41', '5L41'],\n      sleeptalk: ['8M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      snatch: ['7T', '7L26', '6T', '6L26', '5T', '5L26'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '5M'],\n      spitup: ['8L20', '7L56', '6L50', '5L56'],\n      stockpile: ['8L20', '7L56', '6L50', '5L56'],\n      stompingtantrum: ['8M', '7T'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      suckerpunch: ['8E', '7E', '6E', '5E'],\n      sunnyday: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      swallow: ['8L20', '7L56', '6L50', '5L56'],\n      tackle: ['8L1', '7L1', '6L1'],\n      taunt: ['8M', '7M', '6M', '5M'],\n      thief: ['8M', '7M', '6M', '5M'],\n      throatchop: ['8M', '7T'],\n      thunderpunch: ['8M', '7T', '6T', '5T'],\n      tickle: ['8E', '7E', '6E', '5E'],\n      toxic: ['7M', '6M', '5M'],\n      willowisp: ['8M', '7M', '6M', '5M'],\n      wrap: ['7E', '6E', '5E']\n    }\n  ],\n  [\n    'durant',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['8M', '8L24', '7L6', '6L16', '5L16'],\n      attract: ['8M', '7M', '6M', '5M'],\n      batonpass: ['8M', '7E', '6E', '5E'],\n      beatup: ['8M', '8L12'],\n      bite: ['8L20', '7L1', '6L11', '5L11'],\n      bugbite: ['8L16', '7T', '7L16', '6T', '6L26', '5T', '5L26'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L36', '7L21', '6L31', '5L31'],\n      cut: ['6M', '5M'],\n      dig: ['8M', '8L28', '7L31', '6M', '6L41', '5M', '5L41'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['8M', '7E', '6E', '5E', '5D'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      entrainment: ['8L48', '7L36', '6L46', '5L46'],\n      facade: ['8M', '7M', '6M', '5M'],\n      feintattack: ['7E', '6E', '5E'],\n      firstimpression: ['8E'],\n      flail: ['8E'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['8L1', '7L1', '6L6', '5L6', '5D'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      guillotine: ['8L56', '7L1', '6L1', '5L61'],\n      helpinghand: ['8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      infestation: ['8E'],\n      irondefense: ['8M', '8L52', '7T', '7L46', '6T', '6L1', '5T', '5L56'],\n      ironhead: ['8M', '8L44', '7T', '7L26', '6T', '6L36', '5T', '5L36'],\n      metalburst: ['8E'],\n      metalclaw: ['8L8', '7L11', '6L21', '5L21'],\n      metalsound: ['8L40', '7L1', '6L1', '5L66'],\n      protect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockclimb: ['7E', '6E', '5E'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandattack: ['8L1', '7L1', '6L1', '5L1'],\n      sandstorm: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '7E', '6E', '5E'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      steelbeam: ['8T'],\n      stompingtantrum: ['8M'],\n      stoneedge: ['8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      strugglebug: ['8E', '6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      thunderfang: ['8M', '7E', '6E', '5E', '5D'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      visegrip: ['8L4', '7L1', '6L1', '5L1'],\n      xscissor: ['8M', '8L32', '7M', '7L41', '6M', '6L51', '5M', '5L51']\n    }\n  ],\n  [\n    'deino',\n    {\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['9L16', '8M', '8L16', '7E', '6E', '5E'],\n      astonish: ['9E', '8E', '7E', '6E', '5E'],\n      attract: ['8M', '7M', '6M', '5M'],\n      belch: ['9E', '8E', '7E'],\n      bite: ['9L8', '8L8', '7L9', '6L9', '5L9'],\n      bodyslam: ['9M', '9L44', '8M', '8L44', '7L48', '6L48', '5L48'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L32', '8M', '8L32', '7L25', '6L25', '5L25'],\n      darkpulse: ['9M', '8M', '7M', '7E', '6M', '6E', '5T', '5E'],\n      doublehit: ['9E', '8E', '7E', '6E', '5E'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T'],\n      dragonbreath: ['9L4', '8L4', '7L17', '6L17', '5L17'],\n      dragoncheer: ['9M'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40', '7T', '7L32', '6T', '6L32', '5T', '5L32'],\n      dragonrage: ['7L1', '6L1', '5L1', '5S0'],\n      dragonrush: ['9L52', '8L52', '7L42', '6L42', '5L42'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      earthpower: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firefang: ['9M', '8M', '7E', '6E', '5E'],\n      focusenergy: ['9L1', '8M', '8L1', '7L4', '6L4', '5L4'],\n      frustration: ['7M', '6M', '5M'],\n      headbutt: ['9L20', '8L20', '7L12', '6L12', '5L12'],\n      headsmash: ['9E', '8E', '7E', '6E', '5E'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypervoice: ['9M', '9L48', '8M', '8L48', '7T', '7L58', '6T', '6L58', '5T', '5L58'],\n      icefang: ['9M', '8M', '7E', '6E', '5E'],\n      incinerate: ['6M', '5M'],\n      nastyplot: ['9M', '9L56', '8M', '8L56'],\n      outrage: ['9M', '9L60', '8M', '8L60', '7T', '7L62', '6T', '6L62', '5T', '5L62'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M', '9L12', '8L12', '7M', '7L20', '6M', '6L20', '5M', '5L20'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L36', '8M', '8L36', '7L50', '6L50', '5L52'],\n      screech: ['8M', '7E', '6E', '5E'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      slam: ['9L28', '8L28', '7L28', '6L28', '5L28'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S0'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunderfang: ['9M', '8M', '7E', '6E', '5E'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      workup: ['9L24', '8M', '8L24', '7M', '7L38', '6L38', '5M', '5L38'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'zweilous',\n    {\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['9L16', '8M', '8L16'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['8M'],\n      bite: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      bodyslam: ['9M', '9L44', '8M', '8L44', '7L48', '6L48', '5L48'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L32', '8M', '8L32', '7L25', '6L25', '5L25'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      doublehit: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T'],\n      dragonbreath: ['9L1', '8L1', '7L17', '6L17', '5L17'],\n      dragoncheer: ['9M'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40', '7T', '7L32', '6T', '6L32', '5T', '5L32'],\n      dragonrage: ['7L1', '6L1', '5L1'],\n      dragonrush: ['9L54', '8L54', '7L42', '6L42', '5L42'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      firefang: ['9M', '8M'],\n      focusenergy: ['9L1', '8M', '8L1', '7L1', '6L1', '5L1'],\n      frustration: ['7M', '6M', '5M'],\n      headbutt: ['9L20', '8L20', '7L12', '6L12', '5L12'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hypervoice: ['9M', '9L48', '8M', '8L48', '7T', '7L64', '6T', '6L64', '5T', '5L64'],\n      icefang: ['9M', '8M'],\n      incinerate: ['6M', '5M'],\n      lashout: ['9M'],\n      nastyplot: ['9M', '9L60', '8M', '8L60'],\n      outrage: ['9M', '9L66', '8M', '8L66', '7T', '7L71', '6T', '6L71', '5T', '5L71'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M', '9L12', '8L12', '7M', '7L20', '6M', '6L20', '5M', '5L20'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '9L36', '8M', '8L36', '7L55', '6L55', '5L55'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      slam: ['9L28', '8L28', '7L28', '6L28', '5L28'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thunderfang: ['9M', '8M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      workup: ['9L24', '8M', '8L24', '7M', '7L38', '6L38', '5M', '5L38'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'hydreigon',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aquatail: ['7T', '6T', '5T'],\n      assurance: ['9L16', '8M', '8L16'],\n      attract: ['8M', '7M', '6M', '5M'],\n      beatup: ['8M'],\n      bite: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      bodyslam: ['9M', '9L44', '8M', '8L44', '7L48', '6L48', '5L48'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      chargebeam: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L32', '8M', '8L32', '7L25', '6L25', '6S1', '5L25'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T'],\n      defog: ['7T'],\n      doublehit: ['9L1', '8L1'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T'],\n      dragonbreath: ['9L1', '8L1', '7L17', '6L17', '5L17', '5S0'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40', '7T', '7L32', '6T', '6L32', '5T', '5L32'],\n      dragonrage: ['7L1', '6L1', '5L1'],\n      dragonrush: ['9L54', '8L54', '7L42', '6L42', '6S1', '5L42'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M'],\n      firefang: ['9M', '8M'],\n      firespin: ['9M', '8M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '5S0'],\n      focusenergy: ['9L1', '8M', '8L1', '7L1', '6L1', '5L1'],\n      frustration: ['7M', '6M', '6S1', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      headbutt: ['9L20', '8L20', '7L12', '6L12', '5L12'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '9L76', '8M', '8L76', '7M', '6M', '5M'],\n      hypervoice: ['9M', '9L48', '8M', '8L48', '7T', '7L1', '6T', '6L1', '5T', '5L68', '5S0'],\n      icefang: ['9M', '8M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      lashout: ['9M'],\n      nastyplot: ['9M', '9L60', '8M', '8L60'],\n      outrage: ['9M', '9L68', '8M', '8L68', '7T', '7L1', '6T', '6L1', '5T', '5L79'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M', '9L12', '8L12', '7M', '7L20', '6M', '6L20', '5M', '5L20'],\n      rockslide: ['9M', '8M', '7M', '6M', '6S1', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L36', '8M', '8L36', '7L55', '6L55', '5L55'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      slam: ['9L28', '8L28', '7L28', '6L28', '5L28'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snarl: ['9M', '8M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      spite: ['9M', '7T', '6T', '5T'],\n      stealthrock: ['9M'],\n      steelwing: ['8M', '7M', '6M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      tackle: ['9L1', '8L1'],\n      tailwind: ['9M', '7T', '6T', '5T'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderfang: ['9M', '8M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      triattack: ['9L1', '8M', '8L1', '7L1', '6L1', '5L1'],\n      uproar: ['8M', '7T', '6T', '5T'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      workup: ['9L24', '8M', '8L24', '7M', '7L38', '6L38', '5M', '5L38'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'larvesta',\n    {\n      absorb: ['9E', '8E', '7L10'],\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      amnesia: ['9M', '9L54', '8M', '8L54', '7L80', '6L80', '5L80'],\n      attract: ['8M'],\n      bodyslam: ['9M'],\n      bugbite: ['9M', '9L24', '8L24', '7T', '7L40', '6T', '6L40', '5T', '5L40'],\n      bugbuzz: ['9M', '9L42', '8M', '8L42', '7L70', '6L70', '5L70'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      doubleedge: ['9M', '9L60', '8L60', '7L50', '6L50', '5L50'],\n      doubleteam: ['7M', '6M', '5M'],\n      ember: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      endure: ['9M', '8M', '7E', '6E', '5E'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fireblast: ['9M', '8M', '7M', '6M', '5M'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L6', '8L6', '7M', '7L30', '6M', '6L30', '5M', '5L30'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M'],\n      flamewheel: ['9L18', '8L18', '7L60', '6L60', '5L60'],\n      flareblitz: ['9M', '9L66', '8M', '8L66', '7L100', '6L100', '5L100'],\n      foresight: ['7E', '6E', '5E'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T'],\n      harden: ['9E', '8E', '7E', '6E', '5E'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      leechlife: ['9M', '9L36', '8M', '8L36', '7M', '6L10', '5L10'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      lunge: ['9M'],\n      magnetrise: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      morningsun: ['9E', '7E', '6E', '5E'],\n      overheat: ['9M', '8M', '7M', '6M', '5M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      screech: ['9L30', '8M', '8L30'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T', '5T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      stringshot: ['9L1', '8L1', '7L1', '7E', '6L1', '6E', '5L1', '5E'],\n      strugglebug: ['9M', '9L12', '8L12', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      takedown: ['9M', '9L48', '8L48', '7L20', '6L20', '5L20'],\n      terablast: ['9M'],\n      thrash: ['9E', '8E', '7L90', '6L90', '5L90'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '7E', '6T', '6E', '5T', '5E']\n    }\n  ],\n  [\n    'volcarona',\n    {\n      absorb: ['7L1'],\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      amnesia: ['9M', '9L54', '8M', '8L54', '7L1', '6L1'],\n      attract: ['8M'],\n      bodyslam: ['9M'],\n      bugbite: ['9M', '9L24', '8L24', '7T', '6T', '5T'],\n      bugbuzz: ['9M', '9L42', '8M', '8L42', '7L1', '6L1', '5L70', '5S1'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      defog: ['7T'],\n      doubleedge: ['9M', '9L1', '8L1'],\n      doubleteam: ['7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      ember: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fierydance: ['9L1', '8L1', '7L1', '6L1', '5L100'],\n      fireblast: ['9M', '9L70', '8M', '8L70', '7M', '6M', '5M'],\n      firespin: ['9M', '9L1', '8M', '8L1', '7L30', '6L30', '5L30', '5S0'],\n      flamecharge: ['9M', '9L1', '8L1', '7M', '6M', '5M'],\n      flamethrower: ['9M', '8M', '7M', '6M', '5M'],\n      flamewheel: ['9L18', '8L18', '7L1', '6L1'],\n      flareblitz: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '8M', '7T', '6T', '5T'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      gust: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S0'],\n      heatwave: ['9M', '9L48', '8M', '8L48', '7T', '7L1', '6T', '6L1', '5T', '5L60'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hurricane: ['9M', '9L62', '8M', '8L62', '7L1', '6L1', '5L90'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '5S1'],\n      incinerate: ['6M', '5M'],\n      leechlife: ['9M', '9L36', '8M', '8L36', '7M', '6L1', '5L1', '5S0'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      lunge: ['9M'],\n      magnetrise: ['7T', '6T', '5T'],\n      mysticalfire: ['8M'],\n      overheat: ['9M', '8M', '7M', '6M', '5M', '5S1'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      quiverdance: ['9L0', '8L0', '7L1', '6L1', '5L59', '5S1'],\n      ragepowder: ['9L78', '8L78', '7L1', '6L1', '5L80'],\n      raindance: ['9M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      screech: ['9L30', '8M', '8L30'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T', '5T'],\n      silverwind: ['7L50', '6L50', '5L50'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      stringshot: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S0'],\n      strugglebug: ['9M', '9L1', '8L1', '6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      tailwind: ['9M', '7T', '6T', '5T'],\n      takedown: ['9M', '9L1', '8L1'],\n      terablast: ['9M'],\n      thrash: ['7L1', '6L1'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      whirlwind: ['9L1', '8L1', '7L40', '6L40', '5L40'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'cobalion',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      airslash: ['9M', '8M'],\n      aurasphere: ['9M'],\n      block: ['7T', '6T', '5T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      brickbreak: ['9M', '8M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      closecombat: ['9M', '9L70', '9S6', '8M', '8L70', '8S5', '7L1', '6L1', '5L73'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleedge: ['9M'],\n      doublekick: ['9L21', '8L21', '7L1', '6L7', '5L7'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L13', '6T', '6L25', '5T', '5L25', '5S0', '5S1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      irondefense: ['9M', '8M', '7T', '6T', '5T'],\n      ironhead: ['9M', '9L63', '9S6', '8M', '8L63', '8S5', '7T', '7L25', '7S4', '6T', '6L37', '6S3', '5T', '5L37', '5S0', '5S1'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      magnetrise: ['7T', '6T', '5T'],\n      megahorn: ['8M'],\n      metalburst: ['9L35', '8L35', '7L1', '6L1', '5L67'],\n      metalclaw: ['9M', '9L7', '8L7', '7L1', '6L13', '5L13'],\n      metalsound: ['9M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      quickattack: ['9L1', '8L1', '7L1', '7S4', '6L1', '5L1'],\n      quickguard: ['9L14', '8L14', '7L42', '6L1', '5L55', '5S2'],\n      raindance: ['9M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['9L28', '8M', '8L28', '7L19', '6M', '6L31', '6S3', '5M', '5L31', '5S0', '5S1'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sacredsword: ['9L49', '9S6', '8L49', '8S5', '7L31', '7S4', '6L42', '6S3', '5L42', '5S0', '5S1', '5S2'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smartstrike: ['9M', '8M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      steelbeam: ['9M', '8T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L56', '9S6', '8M', '8L56', '8S5', '7M', '7L37', '7S4', '6M', '6L49', '6S3', '5M', '5L49', '5S2'],\n      takedown: ['9M', '9L42', '8L42', '7L7', '6L19', '5L19'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      workup: ['9L1', '8M', '8L1', '7M', '7L49', '6L1', '5M', '5L61', '5S2'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'terrakion',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      airslash: ['9M', '8M'],\n      aurasphere: ['9M'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M'],\n      bulldoze: ['9M', '8M', '7M', '6M', '5M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      closecombat: ['9M', '9L70', '9S6', '8M', '8L70', '8S5', '7L1', '6L1', '5L73'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleedge: ['9M'],\n      doublekick: ['9L21', '8L21', '7L1', '6L7', '5L7'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L13', '6T', '6L25', '5T', '5L25', '5S0', '5S1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      ironhead: ['9M', '8M', '7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      megahorn: ['8M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      quickattack: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      quickguard: ['9L14', '8L14', '7L42', '6L1', '5L55', '5S2'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['9L28', '8M', '8L28', '7L19', '6M', '6L31', '6S3', '5M', '5L31', '5S0', '5S1'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rockblast: ['9M', '8M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['9M', '9L35', '8M', '8L35', '7M', '7L25', '7S4', '6M', '6L37', '6S3', '5M', '5L37', '5S0', '5S1'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sacredsword: ['9L49', '9S6', '8L49', '8S5', '7L31', '7S4', '6L42', '6S3', '5L42', '5S0', '5S1', '5S2'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smackdown: ['9M', '9L7', '8L7', '7M', '7L1', '6M', '6L13', '5M', '5L13'],\n      smartstrike: ['9M', '8M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L63', '9S6', '8M', '8L63', '8S5', '7M', '7L55', '7S4', '6M', '6L67', '5M', '5L67'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L56', '9S6', '8M', '8L56', '8S5', '7M', '7L37', '7S4', '6M', '6L49', '6S3', '5M', '5L49', '5S2'],\n      takedown: ['9M', '9L42', '8L42', '7L7', '6L19', '5L19'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      upperhand: ['9M'],\n      workup: ['9L1', '8M', '8L1', '7M', '7L49', '6L1', '5M', '5L61', '5S2'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'virizion',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      airslash: ['9M', '8M'],\n      aurasphere: ['9M'],\n      block: ['7T', '6T', '5T'],\n      bodyslam: ['9M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      brickbreak: ['9M', '8M'],\n      bulletseed: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      closecombat: ['9M', '9L70', '9S6', '8M', '8L70', '8S5', '7L1', '6L1', '5L73'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleedge: ['9M'],\n      doublekick: ['9L21', '8L21', '7L1', '6L7', '5L7'],\n      doubleteam: ['7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M', '5M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigadrain: ['9M', '9L35', '8M', '8L35', '7T', '7L25', '7S4', '6T', '6L37', '6S3', '5T', '5L37', '5S0', '5S1'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      grassyglide: ['9M', '8T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L13', '6T', '6L25', '5T', '5L25', '5S0', '5S1'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      laserfocus: ['7T'],\n      leafblade: ['9L63', '9S6', '8M', '8L63', '8S5', '7L1', '7S4', '6L1', '5L67'],\n      leafstorm: ['9M', '8M'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      magicalleaf: ['9M', '9L7', '8M', '8L7', '7L1', '6L13', '5L13'],\n      megahorn: ['8M'],\n      naturepower: ['7M', '6M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      quickattack: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      quickguard: ['9L14', '8L14', '7L42', '6L1', '5L55', '5S2'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['9L28', '8M', '8L28', '7L19', '6M', '6L31', '6S3', '5M', '5L31', '5S0', '5S1'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sacredsword: ['9L49', '9S6', '8L49', '8S5', '7L31', '7S4', '6L42', '6S3', '5L42', '5S0', '5S1', '5S2'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smartstrike: ['9M', '8M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      solarblade: ['9M', '8M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L56', '9S6', '8M', '8L56', '8S5', '7M', '7L37', '7S4', '6M', '6L49', '6S3', '5M', '5L49', '5S2'],\n      synthesis: ['9L42', '7T', '6T', '5T'],\n      takedown: ['9M', '9L1', '8L42', '7L7', '6L19', '5L19'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M'],\n      workup: ['9L1', '8M', '8L1', '7M', '7L49', '6L1', '5M', '5L61', '5S2'],\n      worryseed: ['7T', '6T', '5T'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'tornadus',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M', '5M'],\n      aerialace: ['7M', '6M', '5M'],\n      agility: ['9M', '9L25', '8M', '8L25', '8S7', '7L31', '6L37', '6S3', '5L37', '5S0'],\n      aircutter: ['9M', '9L20', '8L20', '7L19', '6L25', '5L25', '5S0'],\n      airslash: ['9M', '9L35', '8M', '8L35', '7L37', '7S4', '7S5', '6L43', '6S3', '5L43', '5S2'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bite: ['9L15', '8L15', '7L7', '6L13', '5L13'],\n      bleakwindstorm: ['9L77'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L40', '8M', '8L40', '7L43', '7S4', '7S5', '6L49', '6S3', '5L49'],\n      darkpulse: ['9M', '8M', '7M', '7L67', '6M', '6L73', '5T', '5L73'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M', '5M'],\n      embargo: ['7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      extrasensory: ['9L45', '8L45', '7L25', '6L31', '6S3', '5L31', '5S0'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '7S6', '6M', '5M'],\n      gust: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S1'],\n      hammerarm: ['9L55', '8L55', '7L1', '6L1', '5L79', '5S2'],\n      heatwave: ['9M', '8M', '8S7', '7T', '7S6', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M', '5S2'],\n      hurricane: ['9M', '9L65', '8M', '8L65', '8S7', '7L1', '7S6', '6L1', '5L67', '5S2'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      icywind: ['9M', '8M', '8S7', '7T', '6T', '5T'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L5', '8L5'],\n      metronome: ['9M'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '9L60', '8M', '8L60', '7M', '7L55', '7S4', '7S5', '6M', '6L61', '5M', '5L61'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M', '7L13', '6L19', '5L19', '5S0'],\n      reversal: ['9M'],\n      rocksmash: ['6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      snowscape: ['9M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['9L10', '8L10', '7M', '7L1', '6M', '6L7', '5M', '5L7'],\n      tailwind: ['9M', '9L30', '8L30', '7T', '7L49', '7S4', '7S5', '7S6', '6T', '6L1', '5T', '5L55'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thrash: ['9L70', '8L70', '7L1', '6L1', '5L85'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['9M', '9L50', '8M', '8L50', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S1'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      weatherball: ['9M', '8M']\n    }\n  ],\n  ['tornadustherian', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'thundurus',\n    {\n      acrobatics: ['9M'],\n      agility: ['9M', '9L25', '8M', '8L25', '7L31', '6L37', '6S3', '5L37', '5S0'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S1'],\n      attract: ['8M', '7M', '6M', '5M'],\n      bite: ['9L15', '8L15', '7L7', '6L13', '5L13'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      charge: ['9M', '9L30', '8L30', '7L49', '7S4', '7S5', '6L1', '5L55'],\n      chargebeam: ['9M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L40', '8M', '8L40', '7L43', '7S4', '7S5', '6L49', '6S3', '5L49'],\n      darkpulse: ['9M', '8M', '7M', '7L67', '6M', '6L73', '5T', '5L73'],\n      defog: ['7T'],\n      discharge: ['9L45', '8L45', '7L37', '7S4', '7S5', '6L43', '6S3', '5L43'],\n      doubleteam: ['7M', '6M', '5M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T', '6T'],\n      embargo: ['7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '7S6', '6M', '5M', '5S2'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '7S6', '6M', '5M'],\n      hammerarm: ['9L55', '8L55', '7L1', '6L1', '5L79', '5S2'],\n      healblock: ['7L25', '6L31', '6S3', '5L31', '5S0'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L5', '8L5'],\n      nastyplot: ['9M', '8M', '7L1', '7S4', '7S5', '7S6', '6L1', '5L61'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '9L60', '8M', '8L60', '8S7', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M', '7L13', '6L19', '5L19', '5S0'],\n      risingvoltage: ['8T'],\n      rocksmash: ['6M', '5M'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M'],\n      shockwave: ['9L20', '8L20', '7T', '7L19', '6T', '6L25', '5L25', '5S0'],\n      skydrop: ['7M', '6M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      sludgewave: ['9M', '8M', '8S7', '7M', '6M', '5M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snarl: ['9M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['9L10', '8L10', '7M', '7L1', '6M', '6L7', '5M', '5L7'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M'],\n      thrash: ['9L70', '8L70', '7L1', '6L1', '5L85'],\n      thunder: ['9M', '9L65', '8M', '8L65', '8S7', '7M', '7L61', '6M', '6L67', '5M', '5L67', '5S2'],\n      thunderbolt: ['9M', '8M', '7M', '7S6', '6M', '5M'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T'],\n      thundershock: ['9L1', '8L1', '7L1', '6L1', '5L1', '5S1'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      torment: ['7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      uproar: ['9M', '9L50', '8M', '8L50', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S1'],\n      uturn: ['9M', '8M', '7M', '6M', '5M'],\n      voltswitch: ['9M', '9L35', '8M', '8L35', '7M', '6M', '5M'],\n      weatherball: ['9M', '8M', '8S7'],\n      wildboltstorm: ['9L75'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M', '5S2'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  ['thundurustherian', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'reshiram',\n    {\n      ancientpower: ['9L1', '8L1', '7L15', '6L15', '5L15'],\n      blueflare: ['9L88', '8L88', '7L100', '7S6', '6L100', '5L100', '5S2'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L16', '8M', '8L16', '7L71', '6L71', '5L71'],\n      cut: ['6M', '5M'],\n      defog: ['7T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '7S6', '6T', '5T', '5S2'],\n      dragonbreath: ['9L1', '8L1', '7L29', '6L29', '6S3', '5L29', '5S0'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '8S7', '7M', '6M', '5M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '9L32', '8M', '8L32', '7T', '7L54', '7S4', '7S5', '6T', '6L54', '5T', '5L54', '5S1'],\n      dragonrage: ['7L1', '6L1', '5L1'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M', '7T', '7S6', '6T', '5T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endure: ['9M', '8M'],\n      extrasensory: ['9L24', '8L24', '8S7', '7L43', '7S4', '7S5', '6L43', '6S3', '5L43', '5S0', '5S1'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fireblast: ['9M', '9L64', '9S8', '8M', '8L64', '7M', '7L78', '6M', '6L78', '5M', '5L78'],\n      firefang: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '7M', '6M', '5M'],\n      flamethrower: ['9M', '9L40', '9S8', '8M', '8L40', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      flareblitz: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      fusionflare: ['9L48', '9S8', '8L48', '8S7', '7L50', '7S4', '7S5', '7S6', '6L50', '6S3', '5L50', '5S0', '5S1', '5S2'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M', '8M', '7T', '6T', '5T'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      hypervoice: ['9M', '9L56', '9S8', '8M', '8L56', '7T', '7L92', '6T', '6L92', '5T', '5L92'],\n      imprison: ['9M', '9L72', '8M', '8L72', '7L64', '6L8', '5L8', '5S1'],\n      incinerate: ['6M', '5M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      mist: ['5S2'],\n      mysticalfire: ['8M'],\n      nobleroar: ['9L1', '8L1', '8S7', '7L64'],\n      outrage: ['9M', '9L80', '8M', '8L80', '7T', '7L85', '6T', '6L85', '5T', '5L85'],\n      overheat: ['9M', '8M', '7M', '6M', '5M'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      slash: ['9L8', '8L8', '7L36', '7S4', '7S5', '6L36', '6S3', '5L36', '5S0'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '6M', '5M'],\n      steelwing: ['8M', '7M', '6M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M', '7T', '6T', '5T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      weatherball: ['9M', '8M'],\n      willowisp: ['9M', '8M', '7M', '6M', '5M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'zekrom',\n    {\n      ancientpower: ['9L1', '8L1', '7L15', '6L15', '5L15'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      boltstrike: ['9L88', '8L88', '7L100', '7S6', '6L100', '5L100', '5S2'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M'],\n      brutalswing: ['8M', '7M'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L16', '8M', '8L16', '7L71', '6L71', '5L71'],\n      cut: ['6M', '5M'],\n      defog: ['7T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '5T'],\n      dragonbreath: ['9L1', '8L1', '7L29', '6L29', '6S3', '5L29', '5S0'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L32', '8M', '8L32', '8S7', '7M', '7L54', '7S4', '7S5', '6M', '6L54', '5M', '5L54', '5S1'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '7T', '6T', '5T'],\n      dragonrage: ['7L1', '6L1', '5L1'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      focuspunch: ['9M'],\n      frustration: ['7M', '6M', '5M'],\n      fusionbolt: ['9L48', '9S8', '8L48', '8S7', '7L50', '7S4', '7S5', '7S6', '6L50', '6S3', '5L50', '5S0', '5S1', '5S2'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      haze: ['9M', '5S2'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      hypervoice: ['9M', '9L56', '9S8', '8M', '8L56', '7T', '7L92', '6T', '6L92', '5T', '5L92'],\n      imprison: ['9M', '9L72', '8M', '8L72', '7L64', '6L8', '5L8', '5S1'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      magnetrise: ['7T', '6T', '5T'],\n      nobleroar: ['9L1', '8L1', '8S7', '7L64'],\n      outrage: ['9M', '9L80', '8M', '8L80', '7T', '7L85', '7S6', '6T', '6L85', '5T', '5L85', '5S2'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      risingvoltage: ['8T'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      slash: ['9L8', '8L8', '8S7', '7L36', '7S4', '7S5', '6L36', '6S3', '5L36', '5S0'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['9M'],\n      steelwing: ['8M', '7M', '6M'],\n      stoneedge: ['9M', '8M', '7M', '7S6', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M', '7T', '6T', '5T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L64', '9S8', '8M', '8L64', '7M', '7L78', '6M', '6L78', '5M', '5L78'],\n      thunderbolt: ['9M', '9L40', '9S8', '8M', '8L40', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      thunderfang: ['9M', '9L1', '8M', '8L1', '7L1', '6L1', '5L1'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T'],\n      thunderwave: ['9M', '8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      voltswitch: ['9M', '8M', '7M', '6M', '5M'],\n      weatherball: ['9M', '8M'],\n      wildcharge: ['9M', '8M', '7M', '6M', '5M'],\n      zenheadbutt: ['9M', '9L24', '8M', '8L24', '7T', '7L43', '7S4', '7S5', '6T', '6L43', '6S3', '5T', '5L43', '5S0', '5S1']\n    }\n  ],\n  [\n    'landorus',\n    {\n      attract: ['8M', '7M', '6M', '5M'],\n      block: ['9L10', '8L10', '7T', '7L1', '6T', '6L1', '5T', '5L1', '5S1'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M'],\n      bulldoze: ['9M', '9L15', '8M', '8L15', '8S5', '7M', '7L13', '6M', '6L19', '5M', '5L19'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M'],\n      defog: ['7T'],\n      dig: ['9M', '8M', '6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      earthpower: ['9M', '9L40', '8M', '8L40', '7T', '7L37', '7S4', '6T', '6L43', '6S2', '5T', '5L43'],\n      earthquake: ['9M', '9L65', '8M', '8L65', '7M', '7L49', '7S4', '6M', '6L55', '6S3', '5M', '5L55', '5S0'],\n      endure: ['9M', '8M'],\n      explosion: ['7M', '6M', '5M'],\n      extrasensory: ['9L45', '8L45', '7L25', '6L31', '6S2', '5L31'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      fissure: ['9L75', '8L75', '7L1', '6L1', '5L67', '5S0'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '8S5', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      grassknot: ['9M', '8M', '7M', '6M', '5M'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      hammerarm: ['9L55', '8L55', '7L1', '6L1', '5L79'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      imprison: ['9M', '9L30', '8M', '8L30', '7L1', '6L7', '5L7'],\n      irontail: ['8M', '7T', '6T', '5T'],\n      knockoff: ['7T', '6T', '6S3', '5T'],\n      leer: ['9L5', '8L5'],\n      mudshot: ['9M', '8M', '7L1', '6L1', '5L1', '5S1'],\n      mudslap: ['9M'],\n      nastyplot: ['9M'],\n      outrage: ['9M', '9L70', '8M', '8L70', '7T', '7L1', '6T', '6L1', '5T', '5L85'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      punishment: ['7L7', '6L13', '5L13'],\n      raindance: ['9M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockpolish: ['7M', '6M', '5M'],\n      rockslide: ['9M', '9L35', '8M', '8L35', '8S5', '7M', '7L43', '7S4', '6M', '6L49', '6S2', '5M', '5L49', '5S0'],\n      rocksmash: ['6M', '5M'],\n      rockthrow: ['8L1', '7L19', '6L25', '5L25'],\n      rocktomb: ['9M', '9L20', '8M', '8L20', '7M', '7L1', '6M', '6L1', '6S3', '5M', '5L1', '5S1'],\n      roleplay: ['7T', '6T', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      sandsearstorm: ['9L80'],\n      sandstorm: ['9M', '9L60', '8M', '8L60', '7M', '7L55', '7S4', '6M', '6L61', '5M', '5L61', '5S0'],\n      sandtomb: ['9M', '9L1', '8M', '8L1', '8S5'],\n      scaryface: ['9M', '8M'],\n      scorchingsands: ['9M'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      sludgebomb: ['9M', '8M', '7M', '6M', '5M'],\n      sludgewave: ['9M', '8M', '7M', '6M', '5M'],\n      smackdown: ['9M', '9L1', '7M', '6M', '5M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stealthrock: ['9M', '8M', '7T', '6T', '5T'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '9L50', '8M', '8L50', '7M', '7L67', '6M', '6L73', '5M', '5L73'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      swagger: ['7M', '6M', '5M'],\n      swordsdance: ['9M', '8M', '8L25', '7M', '7L31', '6M', '6L37', '6S2', '5M', '5L37'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      uturn: ['9M', '8M', '7M', '6M', '6S3', '5M'],\n      weatherball: ['9M', '8M']\n    }\n  ],\n  ['landorustherian', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'kyurem',\n    {\n      aerialace: ['9M'],\n      ancientpower: ['9L1', '8L1', '7L15', '6L15', '5L15'],\n      avalanche: ['9M'],\n      blizzard: ['9M', '9L56', '9S6', '8M', '8L56', '7M', '7L78', '6M', '6L78', '5M', '5L78'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '6S3', '5T'],\n      dragonbreath: ['9L1', '8L1', '7L29', '6L29', '6S2', '5L29'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '9L24', '8M', '8L24', '7T', '7L57', '7S4', '6T', '6L57', '5T', '5L57', '5S0', '5S1'],\n      dragonrage: ['7L1', '6L1', '5L1'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L16', '8L16', '7T', '7L71', '6T', '6L71', '5T', '5L71', '5S0'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      freezedry: ['9L1', '8L1'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      glaciate: ['9L80', '8L80', '7L50', '7S4', '6L50', '6S2', '6S3', '5L50', '5S0', '5S1'],\n      hail: ['8M', '7M', '6M', '5M'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      hypervoice: ['9M', '9L40', '9S6', '8M', '8L40', '8S5', '7T', '7L92', '6T', '6L92', '5T', '5L92'],\n      icebeam: ['9M', '9L32', '8M', '8L32', '8S5', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      icefang: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      imprison: ['9M', '9L64', '9S6', '8M', '8L64', '7L64', '6L8', '5L8', '5S0', '5S1'],\n      ironhead: ['9M', '8M', '7T', '6T', '6S3', '5T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      nobleroar: ['9L1', '8L1', '7L64'],\n      outrage: ['9M', '9L72', '8M', '8L72', '7T', '7L85', '6T', '6L85', '5T', '5L85'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L48', '9S6', '8M', '8L48', '8S5', '7L43', '7S4', '6L43', '6S2', '6S3', '5L43', '5S1'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '8S5', '7M', '6M', '5M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      sheercold: ['9L88', '8L88'],\n      signalbeam: ['7T', '6T', '5T'],\n      slash: ['9L8', '8L8', '7L36', '7S4', '6L36', '6S2', '5L36'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      snowscape: ['9M'],\n      steelwing: ['8M', '7M', '6M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      weatherball: ['9M', '8M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'kyuremblack',\n    {\n      aerialace: ['9M'],\n      ancientpower: ['9L1', '8L1', '7L15', '6L15', '5L15'],\n      avalanche: ['9M'],\n      blizzard: ['9M', '9L56', '9S6', '8M', '8L56', '7M', '7L78', '6M', '6L78', '5M', '5L78'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '6S3', '5T'],\n      dragonbreath: ['9L1', '8L1', '7L29', '6L29', '6S2', '5L29'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '9L24', '8M', '8L24', '7T', '7L57', '7S4', '6T', '6L57', '5T', '5L57', '5S0', '5S1'],\n      dragonrage: ['7L1', '6L1', '5L1'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L16', '8L16', '7T', '7L71', '6T', '6L71', '5T', '5L71', '5S0'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      freezedry: ['9L1', '8L1'],\n      freezeshock: ['9L80', '8L80', '7L50', '7S4', '6L50', '6S2', '6S3', '5L43', '5S0', '5S1'],\n      frustration: ['7M', '6M', '5M'],\n      fusionbolt: ['9L48', '9S6', '8L48', '8S5', '7L43', '7S4', '6L43', '6S2', '6S3', '5L43', '5S1'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      hail: ['8M', '7M', '6M', '5M'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      hypervoice: ['9M', '9L40', '9S6', '8M', '8L40', '8S5', '7T', '7L92', '6T', '6L92', '5T', '5L92'],\n      icebeam: ['9M', '9L32', '8M', '8L32', '8S5', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      icefang: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      imprison: ['9M', '9L64', '9S6', '8M', '8L64', '7L64', '6L8', '5L8', '5S0', '5S1'],\n      ironhead: ['9M', '8M', '7T', '6T', '6S3', '5T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      nobleroar: ['9L1', '8L1', '7L64'],\n      outrage: ['9M', '9L72', '8M', '8L72', '7T', '7L85', '6T', '6L85', '5T', '5L85'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '8S5', '7M', '6M', '5M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      sheercold: ['9L88', '8L88'],\n      signalbeam: ['7T', '6T', '5T'],\n      slash: ['9L8', '8L8', '7L36', '7S4', '6L36', '6S2', '5L36'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      snowscape: ['9M'],\n      steelwing: ['8M', '7M', '6M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      weatherball: ['9M', '8M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'kyuremwhite',\n    {\n      aerialace: ['9M'],\n      ancientpower: ['9L1', '8L1', '7L15', '6L15', '5L15'],\n      avalanche: ['9M'],\n      blizzard: ['9M', '9L56', '9S6', '8M', '8L56', '7M', '7L78', '6M', '6L78', '5M', '5L78'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      confide: ['7M', '6M'],\n      cut: ['6M', '5M'],\n      doubleteam: ['7M', '6M', '5M'],\n      dracometeor: ['9M', '8T', '7T', '6T', '6S3', '5T'],\n      dragonbreath: ['9L1', '8L1', '7L29', '6L29', '6S2', '5L29'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M', '5M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '9L24', '8M', '8L24', '7T', '7L57', '7S4', '6T', '6L57', '5T', '5L57', '5S0', '5S1'],\n      dragonrage: ['7L1', '6L1', '5L1'],\n      dragontail: ['9M', '7M', '6M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M', '7T', '6T', '5T'],\n      echoedvoice: ['7M', '6M', '5M'],\n      endeavor: ['9M', '9L16', '8L16', '7T', '7L71', '6T', '6L71', '5T', '5L71', '5S0'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      flashcannon: ['9M', '8M', '7M', '6M', '5M'],\n      fling: ['9M', '8M', '7M', '6M', '5M'],\n      fly: ['9M', '8M', '7M', '6M', '5M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      freezedry: ['9L1', '8L1'],\n      frustration: ['7M', '6M', '5M'],\n      fusionflare: ['9L48', '9S6', '8L48', '8S5', '7L43', '7S4', '6L43', '6S2', '6S3', '5L43', '5S1'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      hail: ['8M', '7M', '6M', '5M'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      hypervoice: ['9M', '9L40', '9S6', '8M', '8L40', '8S5', '7T', '7L92', '6T', '6L92', '5T', '5L92'],\n      icebeam: ['9M', '9L32', '8M', '8L32', '8S5', '7M', '7L22', '6M', '6L22', '5M', '5L22'],\n      iceburn: ['9L80', '8L80', '7L50', '7S4', '6L50', '6S2', '6S3', '5L43', '5S0', '5S1'],\n      icefang: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      imprison: ['9M', '9L64', '9S6', '8M', '8L64', '7L64', '6L8', '5L8', '5S0', '5S1'],\n      ironhead: ['9M', '8M', '7T', '6T', '6S3', '5T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M', '6M', '5M'],\n      nobleroar: ['9L1', '8L1', '7L64'],\n      outrage: ['9M', '9L72', '8M', '8L72', '7T', '7L85', '6T', '6L85', '5T', '5L85'],\n      payback: ['8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychic: ['9M', '8M', '7M', '6M', '5M'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '6M', '5M'],\n      roost: ['7M', '6M', '5T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '8S5', '7M', '6M', '5M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M'],\n      sheercold: ['9L88', '8L88'],\n      signalbeam: ['7T', '6T', '5T'],\n      slash: ['9L8', '8L8', '7L36', '7S4', '6L36', '6S2', '5L36'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      snowscape: ['9M'],\n      steelwing: ['8M', '7M', '6M'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      weatherball: ['9M', '8M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'keldeo',\n    {\n      aerialace: ['9M', '7M', '6M', '5M'],\n      airslash: ['9M', '8M'],\n      aquajet: ['9L1', '8L1', '7L1', '6L1', '6S2', '6S3', '5L1', '5S0', '5S1'],\n      aquatail: ['9L35', '9S5', '9S6', '8L35', '7T', '7L37', '6T', '6L37', '5T', '5L37'],\n      aurasphere: ['9M', '8M'],\n      batonpass: ['9M'],\n      bounce: ['8M', '7T', '6T', '5T'],\n      brickbreak: ['9M', '8M'],\n      bubblebeam: ['9L7', '8L7', '7L1', '6L13', '6S3', '5L13', '5S0'],\n      calmmind: ['9M', '8M', '7M', '6M', '5M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '9L70', '8M', '8L70', '7L73', '6L73', '5L73'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T', '5T'],\n      cut: ['6M', '5M'],\n      doubleedge: ['9M'],\n      doublekick: ['9L21', '9S6', '8L21', '7L1', '6L7', '6S2', '6S3', '5L7', '5S0'],\n      doubleteam: ['7M', '6M', '5M'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M', '5M'],\n      falseswipe: ['9M', '8M', '7M', '6M', '5M'],\n      flipturn: ['9M', '8T'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M'],\n      hail: ['8M', '7M', '6M', '5M'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L25', '6T', '6L25', '5T', '5L25'],\n      hiddenpower: ['7M', '6M', '5M'],\n      hydropump: ['9M', '9L63', '8M', '8L63', '8S4', '7L67', '6L67', '6S2', '5L67', '5S1'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M'],\n      icywind: ['9M', '8M', '7T', '6T', '5T'],\n      lastresort: ['7T', '6T', '5T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '6S2', '6S3', '5L1', '5S0'],\n      liquidation: ['9M', '8M', '7T'],\n      lowkick: ['9M', '8M', '7T'],\n      megahorn: ['8M'],\n      muddywater: ['9M', '8M'],\n      painsplit: ['9M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M'],\n      protect: ['9M', '8M', '7M', '6M', '5M'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      quickguard: ['9L14', '9S6', '8L14', '7L55', '6L55', '5L55'],\n      raindance: ['9M', '8M', '7M', '6M', '5M'],\n      reflect: ['9M', '8M', '7M', '6M', '5M'],\n      rest: ['9M', '8M', '7M', '6M', '5M'],\n      retaliate: ['9L28', '9S5', '8M', '8L28', '7L31', '6M', '6L31', '5M', '5L31'],\n      return: ['7M', '6M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      sacredsword: ['9L49', '9S5', '9S6', '8L49', '8S4', '7L43', '6L43', '5L43', '5S1'],\n      safeguard: ['8M', '7M', '6M', '5M'],\n      scald: ['8M', '7M', '6M', '5M'],\n      secretpower: ['6M'],\n      secretsword: ['9L1', '8L1', '8S4', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T'],\n      smartstrike: ['9M', '8M'],\n      snore: ['8M', '7T', '6T', '5T'],\n      stoneedge: ['9M', '8M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '8M'],\n      superpower: ['8M', '7T', '6T', '5T'],\n      surf: ['9M', '8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L56', '8M', '8L56', '8S4', '7M', '7L49', '6M', '6L49', '5M', '5L49', '5S1'],\n      takedown: ['9M', '9L42', '9S5', '8L42', '7L19', '6L19', '5L19'],\n      taunt: ['9M', '8M', '7M', '6M', '5M'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M'],\n      waterpulse: ['9M', '7T', '6T'],\n      workup: ['9L1', '8M', '8L1', '7M', '7L61', '6L61', '5M', '5L61'],\n      xscissor: ['9M', '8M', '7M', '6M', '5M']\n    }\n  ],\n  ['keldeoresolute', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'meloetta',\n    {\n      acrobatics: ['9M', '9L26', '7M', '7L26', '6M', '6L26', '5M', '5L26'],\n      alluringvoice: ['9M'],\n      allyswitch: ['7T'],\n      batonpass: ['9M'],\n      brickbreak: ['9M', '7M', '6M', '5M'],\n      calmmind: ['9M', '7M', '6M', '5M'],\n      celebrate: ['7S3'],\n      chargebeam: ['7M', '6M', '5M'],\n      charm: ['9M'],\n      closecombat: ['9M', '9L78', '7L78', '7S2', '6L78', '5L78', '5S1'],\n      coaching: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '7L1', '6L11', '5L11', '5S0'],\n      covet: ['7T', '6T', '5T'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      disarmingvoice: ['9M'],\n      doubleteam: ['7M', '6M', '5M'],\n      drainpunch: ['9M', '7T', '6T', '5T'],\n      dreameater: ['7M', '6M', '5M'],\n      dualchop: ['7T', '6T', '5T'],\n      echoedvoice: ['9L36', '9S5', '7M', '7L36', '6M', '6L36', '5M', '5L36'],\n      embargo: ['7M', '6M', '5M'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M', '5M'],\n      facade: ['9M', '7M', '6M', '5M'],\n      faketears: ['9M'],\n      firepunch: ['9M', '7T', '6T', '5T'],\n      flash: ['6M', '5M'],\n      fling: ['9M', '7M', '6M', '5M'],\n      focusblast: ['9M', '7M', '6M', '5M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M', '5M'],\n      gigaimpact: ['9M', '7M', '6M', '5M'],\n      grassknot: ['9M', '7M', '6M', '5M'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      healbell: ['7T', '6T', '5T'],\n      helpinghand: ['9M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['9M', '7M', '6M', '5M'],\n      hypervoice: ['9M', '9L64', '9S4', '7T', '7L64', '6T', '6L64', '5T', '5L64'],\n      icepunch: ['9M', '7T', '6T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T', '5T'],\n      lightscreen: ['9M', '7M', '6M', '5M'],\n      lowkick: ['9M', '7T', '6T', '5T'],\n      lowsweep: ['9M', '7M', '6M', '5M'],\n      magiccoat: ['7T', '6T', '5T'],\n      magicroom: ['7T', '6T', '5T'],\n      metronome: ['9M'],\n      payback: ['7M', '6M', '5M'],\n      perishsong: ['9L85', '7L85', '6L85', '5L85'],\n      playrough: ['9M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M', '5M'],\n      psybeam: ['9M', '9L31', '9S5', '7L31', '6L31', '5L31'],\n      psychic: ['9M', '9L57', '9S4', '7M', '7L57', '7S2', '6M', '6L57', '5M', '5L57', '5S1'],\n      psychup: ['9M', '7M', '6M', '5M'],\n      psyshock: ['9M', '7M', '6M', '5M'],\n      quickattack: ['9L1', '7L1', '6L6', '5L6', '5S0'],\n      raindance: ['9M', '7M', '6M', '5M'],\n      recycle: ['7T', '6T', '5T'],\n      relicsong: ['9L50', '9S4', '9S5', '7T', '7S3', '6T', '5T'],\n      rest: ['9M', '7M', '6M', '5M'],\n      retaliate: ['6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      reversal: ['9M'],\n      rocksmash: ['6M', '5M'],\n      roleplay: ['9L71', '7T', '7L71', '6T', '6L71', '5T', '5L71'],\n      round: ['9L1', '7M', '7L1', '7S3', '6M', '6L1', '5M', '5L1', '5S0', '5S1'],\n      safeguard: ['7M', '6M', '5M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '7M', '6M', '5M'],\n      shadowclaw: ['9M', '7M', '6M', '5M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T', '5T'],\n      sing: ['9L1', '9S4', '9S5', '7L1', '7S2', '7S3', '6L16', '5L16'],\n      skillswap: ['9M', '7T', '6T', '5T'],\n      sleeptalk: ['9M', '7M', '6M', '5T'],\n      snatch: ['7T', '6T', '5T'],\n      snore: ['7T', '6T', '5T'],\n      stoneedge: ['9M', '7M', '6M', '5M'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '7M', '6M', '5M'],\n      sunnyday: ['9M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      teeterdance: ['9L21', '7L21', '6L21', '5L21', '5S1'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thunder: ['9M', '7M', '6M', '5M'],\n      thunderbolt: ['9M', '7M', '6M', '5M'],\n      thunderpunch: ['9M', '7T', '6T', '5T'],\n      thunderwave: ['9M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      trick: ['9M', '7T', '6T', '5T'],\n      trickroom: ['9M', '7M', '6M', '5M'],\n      tripleaxel: ['9M'],\n      uproar: ['7T', '6T', '5T'],\n      uturn: ['9M', '9L43', '7M', '7L43', '6M', '6L43', '5M', '5L43'],\n      wakeupslap: ['7L50', '6L50', '5L50'],\n      wonderroom: ['7T', '6T', '5T'],\n      workup: ['7M', '5M'],\n      zenheadbutt: ['9M', '7T', '6T', '5T']\n    }\n  ],\n  [\n    'genesect',\n    {\n      aerialace: ['7M', '6M', '5M'],\n      allyswitch: ['8M', '7T'],\n      assurance: ['8M'],\n      blazekick: ['8M', '5S2'],\n      blizzard: ['8M', '7M', '6M', '5M'],\n      bugbite: ['7T', '6T', '5T'],\n      bugbuzz: ['8M', '8L56', '7L55', '6L55', '5L55'],\n      chargebeam: ['7M', '6M', '5M'],\n      confide: ['7M', '6M'],\n      darkpulse: ['8M', '7M', '6M', '5T'],\n      doubleteam: ['7M', '6M', '5M'],\n      electroweb: ['8M', '7T', '6T', '5T'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M', '5M'],\n      explosion: ['7M', '6M', '5M'],\n      extremespeed: ['5S2'],\n      facade: ['8M', '7M', '6M', '5M'],\n      fellstinger: ['8L21', '8S4', '7L1', '6L1'],\n      flamecharge: ['8L28', '7M', '7L18', '6M', '6L18', '5M', '5L18'],\n      flamethrower: ['8M', '7M', '6M', '5M'],\n      flash: ['6M', '5M'],\n      flashcannon: ['8M', '7M', '6M', '5M'],\n      fly: ['8M', '7M', '6M', '5M'],\n      frustration: ['7M', '6M', '5M'],\n      furycutter: ['8L1', '7L7', '6L7', '5L7'],\n      gigadrain: ['8M', '7T', '6T', '5T'],\n      gigaimpact: ['8M', '7M', '6M', '5M'],\n      gravity: ['7T', '6T', '5T'],\n      gunkshot: ['8M', '7T', '6T', '5T'],\n      hiddenpower: ['7M', '6M', '5M'],\n      honeclaws: ['6M', '5M'],\n      hyperbeam: ['8M', '7M', '7L73', '6M', '6L73', '5M', '5L73'],\n      icebeam: ['8M', '7M', '6M', '5M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '7T', '6T', '5T'],\n      ironhead: ['8M', '7T', '6T', '5T'],\n      lastresort: ['7T', '6T', '5T'],\n      leechlife: ['8M'],\n      lightscreen: ['8M', '7M', '6M', '5M'],\n      lockon: ['8L77', '7L11', '6L11', '5L11'],\n      magiccoat: ['7T', '6T', '5T'],\n      magnetbomb: ['7L22', '6L22', '6S3', '5L22', '5S0', '5S1'],\n      magnetrise: ['8L49', '7T', '7L1', '6T', '6L1', '5T', '5L1'],\n      metalclaw: ['8L14', '8S4', '7L1', '6L1', '5L1'],\n      metalsound: ['8L35', '7L33', '6L33', '5L33'],\n      protect: ['8M', '7M', '6M', '5M'],\n      psychic: ['8M', '7M', '6M', '5M'],\n      quickattack: ['8L1', '7L1', '6L1', '5L1'],\n      recycle: ['7T', '6T', '5T'],\n      reflect: ['8M', '7M', '6M', '5M'],\n      rest: ['8M', '7M', '6M', '5M'],\n      return: ['7M', '6M', '5M'],\n      rockpolish: ['7M', '6M', '5M'],\n      round: ['8M', '7M', '6M', '5M'],\n      screech: ['8M', '8L7', '7L1', '6L1', '5L1'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M', '8L91', '7L77', '6L77', '5L77'],\n      shadowclaw: ['8M', '7M', '6M', '5M'],\n      shiftgear: ['5S2'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '7L40', '6T', '6L40', '6S3', '5T', '5L40', '5S0', '5S1'],\n      simplebeam: ['8L63', '7L62', '6L62', '5L62'],\n      slash: ['7L29', '6L29', '5L29'],\n      sleeptalk: ['8M', '7M', '6M', '5T'],\n      snore: ['8M', '7T', '6T', '5T'],\n      solarbeam: ['8M', '7M', '6M', '6S3', '5M', '5S0', '5S1'],\n      steelbeam: ['8T'],\n      strugglebug: ['6M', '5M'],\n      substitute: ['8M', '7M', '6M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      swift: ['8M'],\n      technoblast: ['8L84', '8S4', '7L1', '6L1', '6S3', '5L1', '5S0', '5S1', '5S2'],\n      telekinesis: ['7T'],\n      thunder: ['8M', '7M', '6M', '5M'],\n      thunderbolt: ['8M', '7M', '6M', '5M'],\n      thunderwave: ['8M', '7M', '6M', '5M'],\n      toxic: ['7M', '6M', '5M'],\n      triattack: ['8M', '7L44', '6L44', '5L44'],\n      uturn: ['8M', '7M', '6M', '5M'],\n      xscissor: ['8M', '8L42', '8S4', '7M', '7L51', '6M', '6L51', '5M', '5L51'],\n      zapcannon: ['8L70', '7L66', '6L66', '5L66'],\n      zenheadbutt: ['8M', '7T', '6T', '5T']\n    }\n  ],\n  ['genesectburn', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['genesectchill', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['genesectdouse', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['genesectshock', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'chespin',\n    {\n      aerialace: ['9M', '7M', '6M'],\n      attract: ['7M', '6M'],\n      bellydrum: ['9E', '7E', '6E'],\n      bite: ['9L11', '7L11', '6L11'],\n      bodyslam: ['9M', '9L42', '7L42', '6L42'],\n      brickbreak: ['9M', '7M', '6M'],\n      bulkup: ['7M', '7L39', '6M', '6L39'],\n      bulldoze: ['9M', '7M', '6M'],\n      bulletseed: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9E', '7E', '6E'],\n      cut: ['6M'],\n      defensecurl: ['7E', '6E'],\n      dig: ['9M', '6M'],\n      doubleteam: ['7M', '6M'],\n      drainpunch: ['9M', '7T', '6T'],\n      dualchop: ['7T', '6T'],\n      endeavor: ['9M', '7T', '6T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      flash: ['6M'],\n      fling: ['9M', '7M', '6M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      grassknot: ['9M', '7M', '6M'],\n      grasspledge: ['9M', '7T', '6T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '7L1', '6L1'],\n      gyroball: ['7M', '6M'],\n      helpinghand: ['9M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      irondefense: ['7T', '6T'],\n      ironhead: ['9M', '7T', '6T'],\n      irontail: ['7T', '6T'],\n      leafstorm: ['9M'],\n      leechseed: ['9L15', '7L15', '6L15'],\n      lowkick: ['9M', '7T', '6T'],\n      lowsweep: ['7M', '6M'],\n      magicalleaf: ['9M'],\n      metalclaw: ['9M'],\n      mudshot: ['9M', '9L35', '7L35', '6L35'],\n      naturepower: ['7M', '6M'],\n      painsplit: ['9M', '9L45', '7T', '7L45', '6T', '6L45'],\n      payback: ['7M', '6M'],\n      pinmissile: ['9L18', '7L18', '6L18'],\n      poisonjab: ['9M', '7M', '6M'],\n      poweruppunch: ['7E', '6M'],\n      protect: ['9M', '7M', '6M'],\n      quickguard: ['9E', '7E', '6E'],\n      raindance: ['9M'],\n      reflect: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      retaliate: ['6M'],\n      return: ['7M', '6M'],\n      roar: ['9M', '7M', '6M'],\n      rockslide: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M', '7M', '6M'],\n      rollout: ['9L8', '7L8', '7E', '6L8', '6E'],\n      round: ['7M', '6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '9L32', '7T', '7L32', '6T', '6L32'],\n      shadowclaw: ['9M', '7M', '6M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      sludgebomb: ['7M', '6M'],\n      smackdown: ['7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      spikes: ['9M', '9E', '7E', '6E'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['7M', '6M'],\n      strength: ['6M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      superfang: ['9M', '9E', '7T', '6T'],\n      superpower: ['7T', '6T'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      swordsdance: ['7M', '6M'],\n      synthesis: ['9E', '7T', '7E', '6T', '6E'],\n      tackle: ['6L1'],\n      takedown: ['9M', '9L27', '7L27', '6L27'],\n      taunt: ['7M', '6M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '7T', '6T'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L1', '7L1', '6L5'],\n      wideguard: ['9E'],\n      woodhammer: ['9L48', '7L48', '6L48'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'quilladin',\n    {\n      aerialace: ['9M', '7M', '6M'],\n      attract: ['7M', '6M'],\n      bite: ['9L11', '7L11', '6L11'],\n      bodyslam: ['9M', '9L43', '7L48', '6L48'],\n      brickbreak: ['9M', '7M', '6M'],\n      bulkup: ['9M', '9L38', '7M', '7L44', '6M', '6L44'],\n      bulldoze: ['9M', '7M', '6M'],\n      bulletseed: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M'],\n      cut: ['6M'],\n      dig: ['9M', '6M'],\n      doubleteam: ['7M', '6M'],\n      drainpunch: ['9M', '7T', '6T'],\n      dualchop: ['7T', '6T'],\n      endeavor: ['9M', '7T', '6T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      flash: ['6M'],\n      fling: ['9M', '7M', '6M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      grassknot: ['9M', '7M', '6M'],\n      grasspledge: ['9M', '7T', '6T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '7L1', '6L1'],\n      gyroball: ['9M', '7M', '6M'],\n      helpinghand: ['9M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['6M'],\n      irondefense: ['9M', '7T', '6T'],\n      ironhead: ['9M', '7T', '6T'],\n      irontail: ['7T', '6T'],\n      leafstorm: ['9M'],\n      leechseed: ['9L15', '7L15', '6L15'],\n      lowkick: ['9M', '7T', '6T'],\n      lowsweep: ['9M', '7M', '6M'],\n      magicalleaf: ['9M'],\n      metalclaw: ['9M'],\n      mudshot: ['9M', '9L34', '7L39', '6L39'],\n      naturepower: ['7M', '6M'],\n      needlearm: ['7L1', '6L26'],\n      painsplit: ['9M', '9L47', '7T', '7L52', '6T', '6L52'],\n      payback: ['7M', '6M'],\n      pinmissile: ['9L24', '7L19', '6L20'],\n      poisonjab: ['9M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M'],\n      raindance: ['9M'],\n      reflect: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      retaliate: ['6M'],\n      return: ['7M', '6M'],\n      roar: ['9M', '7M', '6M'],\n      rockslide: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M', '7M', '6M'],\n      rollout: ['9L8', '7L8', '6L8'],\n      round: ['7M', '6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '9L20', '7T', '7L35', '6T', '6L35'],\n      shadowclaw: ['9M', '7M', '6M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      sludgebomb: ['7M', '6M'],\n      smackdown: ['7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      spikes: ['9M'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      superfang: ['9M', '7T', '6T'],\n      superpower: ['7T', '6T'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      swordsdance: ['7M', '6M'],\n      synthesis: ['7T', '6T'],\n      tackle: ['6L1'],\n      takedown: ['9M', '9L29', '7L29', '6L30'],\n      taunt: ['9M', '7M', '6M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '7T', '6T'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L1', '7L1', '6L5'],\n      woodhammer: ['9L53', '7L56', '6L55'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'chesnaught',\n    {\n      aerialace: ['9M', '7M', '6M'],\n      attract: ['7M', '6M'],\n      bellydrum: ['7L1', '6L1'],\n      bite: ['9L11', '7L11', '6L11'],\n      block: ['7T', '6T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L54', '7L54', '6L48'],\n      brickbreak: ['9M', '7M', '6M'],\n      bulkup: ['9M', '9L48', '7M', '7L48', '6M', '6L44'],\n      bulldoze: ['9M', '7M', '6M'],\n      bulletseed: ['9M'],\n      closecombat: ['9M'],\n      coaching: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M'],\n      curse: ['9M'],\n      cut: ['6M'],\n      dig: ['9M', '6M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M'],\n      dragonclaw: ['9M', '7M', '6M'],\n      drainpunch: ['9M', '7T', '6T'],\n      dualchop: ['7T', '6T'],\n      earthquake: ['9M', '7M', '6M'],\n      endeavor: ['9M', '7T', '6T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      feint: ['9L1', '7L1', '6L1'],\n      flash: ['6M'],\n      fling: ['9M', '7M', '6M'],\n      focusblast: ['9M', '7M', '6M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frenzyplant: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      gigaimpact: ['9M', '9L78', '7M', '7L78', '6M', '6L70'],\n      grassknot: ['9M', '7M', '6M'],\n      grasspledge: ['9M', '7T', '6T'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '7L1', '6L1'],\n      gyroball: ['9M', '7M', '6M'],\n      hammerarm: ['9L1', '7L1', '6L1'],\n      helpinghand: ['9M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      highhorsepower: ['9M'],\n      honeclaws: ['6M'],\n      hyperbeam: ['9M', '7M', '6M'],\n      irondefense: ['9M', '7T', '6T'],\n      ironhead: ['9M', '7T', '6T'],\n      irontail: ['7T', '6T'],\n      knockoff: ['9M'],\n      leafstorm: ['9M'],\n      leechseed: ['9L15', '7L15', '6L15'],\n      lowkick: ['9M', '7T', '6T'],\n      lowsweep: ['9M', '7M', '6M'],\n      magicalleaf: ['9M'],\n      metalclaw: ['9M'],\n      mudshot: ['9M', '9L41', '7L41', '6L41'],\n      mudslap: ['9M'],\n      naturepower: ['7M', '6M'],\n      needlearm: ['7L1', '6L26'],\n      painsplit: ['9M', '9L60', '7T', '7L60', '6T', '6L52'],\n      payback: ['7M', '6M'],\n      pinmissile: ['9L19', '7L19', '6L20'],\n      poisonjab: ['9M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M'],\n      raindance: ['9M'],\n      reflect: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      retaliate: ['6M'],\n      return: ['7M', '6M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M', '6M'],\n      rockslide: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M', '7M', '6M'],\n      rollout: ['9L1', '7L1', '6L8'],\n      round: ['7M', '6M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '9L35', '7T', '7L35', '6T', '6L35'],\n      shadowclaw: ['9M', '7M', '6M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      sludgebomb: ['7M', '6M'],\n      smackdown: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      spikes: ['9M'],\n      spikyshield: ['9L0', '7L1', '6L36'],\n      stompingtantrum: ['9M', '7T'],\n      stoneedge: ['9M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      superfang: ['9M', '7T', '6T'],\n      superpower: ['7T', '6T'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M', '6M'],\n      synthesis: ['7T', '6T'],\n      tackle: ['9L1', '7L1', '6L1'],\n      takedown: ['9M', '9L29', '7L29', '6L30'],\n      taunt: ['9M', '7M', '6M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '7T', '6T'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L1', '7L1', '6L5'],\n      woodhammer: ['9L66', '7L66', '6L55'],\n      workup: ['7M'],\n      worryseed: ['7T', '6T'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'fennekin',\n    {\n      agility: ['9M'],\n      attract: ['7M', '6M'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9E'],\n      covet: ['7T', '6T'],\n      cut: ['6M'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      echoedvoice: ['7M', '6M'],\n      embargo: ['7M', '6M'],\n      ember: ['9L5', '7L5', '6L5'],\n      encore: ['9M'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M'],\n      fireblast: ['9M', '9L48', '7M', '7L48', '6M', '6L48'],\n      firepledge: ['9M', '7T', '6T'],\n      firespin: ['9M', '9L20', '7L20', '6L20'],\n      flamecharge: ['9M', '9L14', '7M', '7L14', '6M', '6L14'],\n      flamethrower: ['9M', '9L35', '7M', '7L35', '6M', '6L35', '6S0'],\n      flareblitz: ['9M'],\n      foulplay: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      grassknot: ['9M', '7M', '6M'],\n      heatwave: ['9M', '9E', '7T', '7E', '6T', '6E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M', '6S0'],\n      howl: ['9L11', '7L11', '6L11'],\n      hypnosis: ['9E', '7E', '6E'],\n      imprison: ['9M'],\n      incinerate: ['6M'],\n      irontail: ['7T', '6T'],\n      lightscreen: ['9M', '9L25', '7M', '7L27', '6M', '6L27'],\n      luckychant: ['7L25', '6L25'],\n      magiccoat: ['7T', '7E', '6T', '6E'],\n      magicroom: ['9E', '7T', '7L46', '6T', '6L46'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      overheat: ['9M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M'],\n      psybeam: ['9M', '9L17', '7L17', '6L17'],\n      psychic: ['9M', '9L41', '7M', '7L41', '6M', '6L41'],\n      psychicterrain: ['9M', '7E'],\n      psychup: ['7M', '6M'],\n      psyshock: ['9M', '9L31', '7M', '7L31', '6M', '6L31'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['7M', '6M'],\n      safeguard: ['7M', '6M'],\n      scratch: ['9L1', '7L1', '6L1', '6S0'],\n      secretpower: ['6M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '9L43', '7M', '7L43', '6M', '6L43'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      tailwhip: ['9L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      trick: ['9M'],\n      trickroom: ['9M'],\n      willowisp: ['9M', '9L38', '7M', '7L38', '6M', '6L38'],\n      wish: ['9E', '7E', '6E'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'braixen',\n    {\n      agility: ['9M'],\n      allyswitch: ['7T'],\n      attract: ['7M', '6M'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      cut: ['6M'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      echoedvoice: ['7M', '6M'],\n      embargo: ['7M', '6M'],\n      ember: ['9L1', '7L1', '6L5'],\n      encore: ['9M'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M'],\n      fireblast: ['9M', '9L59', '7M', '7L59', '6M', '6L55'],\n      firepledge: ['9M', '7T', '6T'],\n      firepunch: ['9M', '7T', '6T'],\n      firespin: ['9M', '9L22', '7L22', '6L22'],\n      flamecharge: ['9M', '9L14', '7M', '7L14', '6M', '6L14'],\n      flamethrower: ['9M', '9L41', '7M', '7L41', '6M', '6L41'],\n      flareblitz: ['9M'],\n      foulplay: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      grassknot: ['9M', '7M', '6M'],\n      heatwave: ['9M', '7T', '6T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      howl: ['9L11', '7L11', '6L11'],\n      imprison: ['9M'],\n      incinerate: ['6M'],\n      irontail: ['7T', '6T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L28', '7M', '7L31', '6M', '6L30'],\n      lowkick: ['9M', '7T', '6T'],\n      luckychant: ['7L28', '6L27'],\n      magiccoat: ['7T', '6T'],\n      magicroom: ['9L56', '7T', '7L56', '6T', '6L53'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      overheat: ['9M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M'],\n      psybeam: ['9M', '9L18', '7L18', '6L18'],\n      psychic: ['9M', '9L49', '7M', '7L49', '6M', '6L48'],\n      psychicterrain: ['9M'],\n      psychup: ['7M', '6M'],\n      psyshock: ['9M', '9L36', '7M', '7L36', '6M', '6L34'],\n      raindance: ['9M', '7M', '6M'],\n      recycle: ['7T', '6T'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['7M', '6M'],\n      safeguard: ['7M', '6M'],\n      scratch: ['9L1', '7L1', '6L1'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      skillswap: ['9M', '7T', '6T'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '9L52', '7M', '7L52', '6M', '6L51'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      tailwhip: ['9L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      thunderpunch: ['9M', '7T', '6T'],\n      toxic: ['7M', '6M'],\n      trick: ['9M', '7T', '6T'],\n      trickroom: ['9M'],\n      willowisp: ['9M', '9L45', '7M', '7L45', '6M', '6L45'],\n      wonderroom: ['7T', '6T'],\n      workup: ['7M'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'delphox',\n    {\n      agility: ['9M'],\n      allyswitch: ['7T'],\n      attract: ['7M', '6M'],\n      blastburn: ['9M', '7T', '6T'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M', '7M', '6M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      covet: ['7T', '6T'],\n      cut: ['6M'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      echoedvoice: ['7M', '6M'],\n      embargo: ['7M', '6M'],\n      ember: ['9L1', '7L1', '6L5'],\n      encore: ['9M'],\n      endure: ['9M'],\n      expandingforce: ['9M'],\n      facade: ['9M', '7M', '6M'],\n      fireblast: ['9M', '9L74', '7M', '7L74', '6M', '6L61'],\n      firepledge: ['9M', '7T', '6T'],\n      firepunch: ['9M', '7T', '6T'],\n      firespin: ['9M', '9L22', '7L22', '6L22'],\n      flamecharge: ['9M', '9L14', '7M', '7L14', '6M', '6L14'],\n      flamethrower: ['9M', '9L45', '7M', '7L45', '6M', '6L42'],\n      flareblitz: ['9M'],\n      focusblast: ['9M'],\n      foulplay: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      futuresight: ['9M', '9L1', '7L1', '6L1'],\n      gigaimpact: ['9M', '7M', '6M'],\n      grassknot: ['9M', '7M', '6M'],\n      heatwave: ['9M', '7T', '6T'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      howl: ['9L1', '7L1', '6L11'],\n      hyperbeam: ['9M', '7M', '6M'],\n      hypervoice: ['9M'],\n      imprison: ['9M'],\n      incinerate: ['6M'],\n      irontail: ['7T', '6T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L28', '7M', '7L31', '6M', '6L30'],\n      lowkick: ['9M', '7T', '6T'],\n      luckychant: ['7L28', '6L27'],\n      magiccoat: ['7T', '6T'],\n      magicroom: ['9L68', '7T', '7L68', '6T', '6L58'],\n      metronome: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      mysticalfire: ['9L0', '7L1', '6L36'],\n      nastyplot: ['9M'],\n      nightshade: ['9M'],\n      overheat: ['9M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M'],\n      psybeam: ['9M', '9L18', '7L18', '6L18'],\n      psychic: ['9M', '9L57', '7M', '7L57', '6M', '6L51'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '7M', '6M'],\n      psyshock: ['9M', '9L38', '7M', '7L38', '6M', '6L34'],\n      raindance: ['9M', '7M', '6M'],\n      recycle: ['7T', '6T'],\n      reflect: ['9M'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roleplay: ['9L1', '7T', '7L1', '6T', '6L1'],\n      round: ['7M', '6M'],\n      safeguard: ['7M', '6M'],\n      scorchingsands: ['9M'],\n      scratch: ['9L1', '7L1', '6L1'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '9L1', '7M', '7L1', '6M', '6L1'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T'],\n      skillswap: ['9M', '7T', '6T'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '9L62', '7M', '7L62', '6M', '6L55'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      switcheroo: ['9L1', '7L1', '6L1'],\n      tailwhip: ['9L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      thunderpunch: ['9M', '7T', '6T'],\n      toxic: ['7M', '6M'],\n      trick: ['9M', '7T', '6T'],\n      trickroom: ['9M', '7M', '6M'],\n      willowisp: ['9M', '9L51', '7M', '7L51', '6M', '6L47'],\n      wonderroom: ['7T', '6T'],\n      workup: ['7M'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'froakie',\n    {\n      acrobatics: ['9M', '7M', '6M'],\n      aerialace: ['9M', '7M', '6M'],\n      attract: ['7M', '6M'],\n      bestow: ['7E', '6E'],\n      blizzard: ['9M', '7M', '6M'],\n      bounce: ['9L39', '7T', '7L39', '6T', '6L39'],\n      bubble: ['7L5', '6L5', '6S0'],\n      camouflage: ['7E', '6E'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E'],\n      cut: ['6M'],\n      dig: ['9M', '6M'],\n      dive: ['6M'],\n      doubleteam: ['9L43', '7M', '7L43', '6M', '6L43'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M'],\n      falseswipe: ['9M'],\n      fling: ['9M', '9L25', '7M', '7L25', '6M', '6L25'],\n      frustration: ['7M', '6M'],\n      grassknot: ['9M', '7M', '6M'],\n      growl: ['9L1', '7L1', '6L1', '6S0'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      hydropump: ['9M', '9L48', '7L48', '6L48'],\n      icebeam: ['9M', '7M', '6M'],\n      icywind: ['9M', '7T', '6T'],\n      lick: ['9L10', '7L10', '6L10'],\n      liquidation: ['9M'],\n      mindreader: ['7E', '6E'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      mudsport: ['7E', '6E'],\n      pound: ['9L1', '7L1', '6L1', '6S0'],\n      poweruppunch: ['7E', '6M'],\n      protect: ['9M', '7M', '6M'],\n      quickattack: ['9L8', '7L8', '6L8'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      retaliate: ['9E'],\n      return: ['7M', '6M', '6S0'],\n      rockslide: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M', '7M', '6M'],\n      roleplay: ['7T', '6T'],\n      round: ['9L21', '7M', '7L21', '6M', '6L21'],\n      scald: ['7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      smackdown: ['9M', '9L29', '7M', '7L29', '6M', '6L29'],\n      smokescreen: ['9L18', '7L18', '6L18'],\n      snatch: ['7T', '6T'],\n      snore: ['7T', '6T'],\n      snowscape: ['9M'],\n      spikes: ['9M', '9E'],\n      spite: ['7T', '6T'],\n      strength: ['6M'],\n      substitute: ['9M', '9L35', '7M', '7L35', '6M', '6L35'],\n      surf: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      switcheroo: ['9E'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      toxicspikes: ['9M', '9E', '7E', '6E'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '7M', '6M'],\n      waterfall: ['9M', '7M', '6M'],\n      watergun: ['9L5'],\n      waterpledge: ['9M', '7T', '6T'],\n      waterpulse: ['9M', '9L14', '7T', '7L14', '6T', '6L14'],\n      watersport: ['7E', '6E'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'frogadier',\n    {\n      acrobatics: ['9M', '7M', '6M'],\n      aerialace: ['9M', '7M', '6M'],\n      attract: ['7M', '6M'],\n      blizzard: ['9M', '7M', '6M'],\n      bounce: ['9L45', '7T', '7L45', '6T', '6L44'],\n      bubble: ['7L1', '6L5'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      darkpulse: ['7M', '6M'],\n      dig: ['9M', '6M'],\n      dive: ['6M'],\n      doubleteam: ['9L50', '7M', '7L50', '6M', '6L48'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M'],\n      falseswipe: ['9M'],\n      fling: ['9M', '9L28', '7M', '7L28', '6M', '6L28'],\n      frustration: ['7M', '6M'],\n      grassknot: ['9M', '7M', '6M'],\n      growl: ['9L1', '7L1', '6L1'],\n      gunkshot: ['9M', '7T', '6T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      hydropump: ['9M', '9L56', '7L56', '6L55'],\n      icebeam: ['9M', '7M', '6M'],\n      icepunch: ['9M', '7T', '6T'],\n      icywind: ['9M', '7T', '6T'],\n      lick: ['9L10', '7L10', '6L10'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '7T', '6T'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      pound: ['9L1', '7L1', '6L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M'],\n      quickattack: ['9L8', '7L8', '6L8'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M', '7M', '6M'],\n      roleplay: ['7T', '6T'],\n      round: ['9L23', '7M', '7L23', '6M', '6L23'],\n      scald: ['7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      smackdown: ['9M', '9L33', '7M', '7L33', '6M', '6L33'],\n      smokescreen: ['9L19', '7L19', '6L20'],\n      snatch: ['7T', '6T'],\n      snore: ['7T', '6T'],\n      snowscape: ['9M'],\n      spikes: ['9M'],\n      spite: ['7T', '6T'],\n      strength: ['6M'],\n      substitute: ['9M', '9L40', '7M', '7L40', '6M', '6L38'],\n      surf: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '7M', '6M'],\n      waterfall: ['9M', '7M', '6M'],\n      watergun: ['9L1'],\n      waterpledge: ['9M', '7T', '6T'],\n      waterpulse: ['9M', '9L14', '7T', '7L14', '6T', '6L14'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'greninja',\n    {\n      acrobatics: ['9M', '7M', '6M'],\n      aerialace: ['9M', '9L33', '7M', '6M'],\n      attract: ['7M', '6M'],\n      blizzard: ['9M', '7M', '6M'],\n      bounce: ['7T', '6T'],\n      brickbreak: ['9M'],\n      brutalswing: ['7M'],\n      bubble: ['7L1', '6L5'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      darkpulse: ['9M', '7M', '6M'],\n      dig: ['9M', '6M'],\n      dive: ['6M'],\n      doubleteam: ['9L56', '7M', '7L56', '6M', '6L52'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M'],\n      extrasensory: ['9L49', '7L49', '6L49'],\n      facade: ['9M', '7M', '6M'],\n      falseswipe: ['9M'],\n      feintattack: ['7L33', '6L33'],\n      fling: ['9M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '7M', '6M'],\n      grassknot: ['9M', '7M', '6M'],\n      growl: ['9L1', '7L1', '6L1'],\n      gunkshot: ['9M', '7T', '6T', '6S1'],\n      happyhour: ['6S1'],\n      haze: ['9M', '9L1', '7L1', '6L56'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      hydrocannon: ['9M', '7T', '6T', '6S1'],\n      hydropump: ['9M', '9L68', '7L68', '6L60', '6S0'],\n      hyperbeam: ['9M', '7M', '6M'],\n      icebeam: ['9M', '7M', '6M'],\n      icepunch: ['9M', '7T', '6T'],\n      icywind: ['9M', '7T', '6T'],\n      lick: ['9L10', '7L10', '6L10'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '7T', '6T'],\n      lowsweep: ['9M'],\n      matblock: ['7L1', '6L1', '6S1'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      nightslash: ['9L1', '7L1', '6L1'],\n      pound: ['9L1', '7L1', '6L1'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M'],\n      quickattack: ['9L1', '7L1', '6L8'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M', '7M', '6M'],\n      roleplay: ['9L1', '7T', '7L1', '6T', '6L1'],\n      round: ['7M', '6M'],\n      scald: ['7M', '6M'],\n      secretpower: ['6M'],\n      shadowsneak: ['9L23', '7L23', '6L23', '6S0'],\n      sleeptalk: ['9M', '7M', '6M'],\n      sludgewave: ['9M'],\n      smackdown: ['9M', '7M', '6M'],\n      smokescreen: ['9L19', '7L19', '6L20'],\n      snatch: ['7T', '6T'],\n      snore: ['7T', '6T'],\n      snowscape: ['9M'],\n      spikes: ['9M', '9L28', '7L28', '6L28'],\n      spite: ['7T', '6T'],\n      strength: ['6M'],\n      substitute: ['9M', '9L42', '7M', '7L42', '6M', '6L43', '6S0'],\n      surf: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uturn: ['9M', '7M', '6M'],\n      waterfall: ['9M', '7M', '6M'],\n      watergun: ['9L1'],\n      waterpledge: ['9M', '7T', '6T'],\n      waterpulse: ['9M', '9L14', '7T', '7L14', '6T', '6L14'],\n      watershuriken: ['9L0', '7L1', '6L36', '6S0'],\n      weatherball: ['9M'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'greninjabond',\n    {\n      acrobatics: ['9M', '7M'],\n      aerialace: ['9M', '9L33', '7M', '7S0'],\n      attract: ['7M'],\n      blizzard: ['9M', '7M'],\n      bounce: ['7T'],\n      brickbreak: ['9M'],\n      brutalswing: ['7M'],\n      bubble: ['7L1'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      darkpulse: ['9M', '7M'],\n      dig: ['9M'],\n      doubleteam: ['9L56', '7M', '7L56', '7S0'],\n      echoedvoice: ['7M'],\n      endure: ['9M'],\n      extrasensory: ['9L49', '7L49'],\n      facade: ['9M', '7M'],\n      falseswipe: ['9M'],\n      feintattack: ['7L33'],\n      fling: ['9M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '7M'],\n      grassknot: ['9M', '7M'],\n      growl: ['9L1', '7L1'],\n      gunkshot: ['9M', '7T'],\n      haze: ['9M', '9L1', '7L1'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hydrocannon: ['9M', '7T'],\n      hydropump: ['9M', '9L68', '7L68'],\n      hyperbeam: ['9M', '7M'],\n      icebeam: ['9M', '7M'],\n      icepunch: ['9M', '7T'],\n      icywind: ['9M', '7T'],\n      lick: ['9L10', '7L10'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '7T'],\n      lowsweep: ['9M'],\n      matblock: ['7L1'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      nightslash: ['9L1', '7L1', '7S0'],\n      pound: ['9L1', '7L1'],\n      protect: ['9M', '7M'],\n      quickattack: ['9L1', '7L1'],\n      raindance: ['9M', '7M'],\n      rest: ['9M', '7M'],\n      return: ['7M'],\n      rockslide: ['9M', '7M'],\n      rocktomb: ['9M', '7M'],\n      roleplay: ['9L1', '7T', '7L1'],\n      round: ['7M'],\n      scald: ['7M'],\n      shadowsneak: ['9L23', '7L23'],\n      sleeptalk: ['9M', '7M'],\n      sludgewave: ['9M'],\n      smackdown: ['9M', '7M'],\n      smokescreen: ['9L19', '7L19'],\n      snatch: ['7T'],\n      snore: ['7T'],\n      snowscape: ['9M'],\n      spikes: ['9M', '9L28', '7L28'],\n      spite: ['7T'],\n      substitute: ['9M', '9L42', '7M', '7L42'],\n      surf: ['9M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      switcheroo: ['9E'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      toxic: ['7M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uturn: ['9M', '7M'],\n      waterfall: ['9M', '7M'],\n      watergun: ['9L1'],\n      waterpledge: ['9M', '7T'],\n      waterpulse: ['9M', '9L14', '7T', '7L14'],\n      watershuriken: ['9L0', '7L1', '7S0'],\n      weatherball: ['9M'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'bunnelby',\n    {\n      agility: ['8M', '7L1', '6L1'],\n      attract: ['8M', '7M', '6M'],\n      bounce: ['8M', '8L27', '7T', '7L38', '6T', '6L38'],\n      brickbreak: ['8M', '7M', '6M'],\n      bulkup: ['8M', '7M', '6M'],\n      bulldoze: ['8M', '8L21', '7M', '6M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      defensecurl: ['8E', '7E', '6E'],\n      dig: ['8M', '8L24', '7L33', '6M', '6L33'],\n      doublekick: ['8L18', '7L20', '6L20'],\n      doubleslap: ['7L10', '6L10'],\n      doubleteam: ['7M', '6M'],\n      earthquake: ['8M', '8L36', '7M', '7L49', '6M', '6L49'],\n      endeavor: ['7T', '6T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '7L47', '6M', '6L47'],\n      flail: ['8L15', '7L29', '6L29'],\n      fling: ['8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      grassknot: ['8M', '7M', '6M'],\n      hiddenpower: ['7M', '6M'],\n      ironhead: ['8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      laserfocus: ['8L6'],\n      lastresort: ['7T', '6T'],\n      leer: ['8L1', '7L1', '6L1'],\n      mudshot: ['8M', '8L12', '7L18', '6L18'],\n      mudslap: ['8L1', '7L13', '6L13'],\n      naturepower: ['7M', '6M'],\n      odorsleuth: ['7L25', '6L25'],\n      payback: ['8M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M'],\n      quickattack: ['8L9', '7L7', '6L7'],\n      recycle: ['7T', '6T'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['8M', '7M', '6M'],\n      rollout: ['8E', '7E', '6E'],\n      round: ['8M', '7M', '6M'],\n      sandstorm: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      smackdown: ['7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      spikes: ['8M', '7E', '6E'],\n      stoneedge: ['8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['8M', '7M', '6M'],\n      superfang: ['8L39', '7T', '7L42', '6T', '6L42'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['8M', '8L33'],\n      tackle: ['8L3', '7L1', '6L1'],\n      takedown: ['8L30', '7L15', '6L15'],\n      thief: ['8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uturn: ['8M', '7M', '6M'],\n      wildcharge: ['8M', '7M', '6M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'diggersby',\n    {\n      agility: ['8M', '7L1', '6L1'],\n      attract: ['8M', '7M', '6M'],\n      bodyslam: ['8M'],\n      bounce: ['8M', '8L33', '7T', '7L43', '6T', '6L42'],\n      brickbreak: ['8M', '7M', '6M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['8M', '7M', '6M'],\n      bulldoze: ['8M', '8L23', '7M', '7L1', '6M', '6L1'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      dig: ['8M', '8L28', '7L37', '6M', '6L37'],\n      doublekick: ['8L18', '7L21', '6L20'],\n      doubleslap: ['7L13'],\n      doubleteam: ['7M', '6M'],\n      earthpower: ['8M', '7T', '6T'],\n      earthquake: ['8M', '8L48', '7M', '7L57', '6M', '6L57'],\n      endeavor: ['7T', '6T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '7L54', '6M', '6L53'],\n      firepunch: ['8M', '7T', '6T'],\n      flail: ['8L15', '7L32', '6L31'],\n      fling: ['8M', '7M', '6M'],\n      focuspunch: ['7T', '6T'],\n      foulplay: ['8M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gastroacid: ['7T', '6T'],\n      gigaimpact: ['8M', '7M', '6M'],\n      grassknot: ['8M', '7M', '6M'],\n      gunkshot: ['8M', '7T', '6T'],\n      hammerarm: ['8L58', '7L1', '6L1'],\n      hiddenpower: ['7M', '6M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M', '7M', '6M'],\n      icepunch: ['8M', '7T', '6T'],\n      ironhead: ['8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      knockoff: ['7T', '6T'],\n      laserfocus: ['8L1'],\n      lastresort: ['7T', '6T'],\n      leer: ['8L1', '7L1', '6L1'],\n      lowkick: ['8M', '7T', '6T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudshot: ['8M', '8L12', '7L18', '6L18'],\n      mudslap: ['8L1', '7L13', '6L13'],\n      naturepower: ['7M', '6M'],\n      odorsleuth: ['7L27', '6L26'],\n      payback: ['8M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M'],\n      quickattack: ['8L9', '7L7', '6L7'],\n      recycle: ['7T', '6T'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['8M', '7M', '6M'],\n      rototiller: ['7L1', '6L1'],\n      round: ['8M', '7M', '6M'],\n      sandstorm: ['8M', '7M', '6M'],\n      sandtomb: ['8M'],\n      scorchingsands: ['8T'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      smackdown: ['7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      spikes: ['8M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['8M', '7M', '6M'],\n      superfang: ['8L53', '7T', '7L48', '6T', '6L48'],\n      superpower: ['8M', '7T', '6T'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['8M', '8L43', '7M', '7L1', '6M', '6L1'],\n      tackle: ['8L1', '7L1', '6L1'],\n      takedown: ['8L38', '7L15', '6L15'],\n      thief: ['8M', '7M', '6M'],\n      thunderpunch: ['8M', '7T', '6T'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uproar: ['8M', '7T', '6T'],\n      uturn: ['8M', '7M', '6M'],\n      wildcharge: ['8M', '7M', '6M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'fletchling',\n    {\n      acrobatics: ['9M', '9L20', '8M', '8L20', '7M', '7L39', '6M', '6L39'],\n      aerialace: ['9M', '9L30', '8L30', '7M', '6M'],\n      agility: ['9M', '9L25', '8M', '8L25', '7L13', '6L13'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      attract: ['8M', '7M', '6M'],\n      bravebird: ['9M'],\n      confide: ['7M', '6M'],\n      defog: ['9E', '8E', '7T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M'],\n      dualwingbeat: ['9M', '8T'],\n      ember: ['9L10', '8L10'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      featherdance: ['9M'],\n      flail: ['9L15', '8L15', '7L16', '6L16'],\n      flamecharge: ['9M', '9E', '8E', '7M', '7L34', '6M', '6L34'],\n      flareblitz: ['9M'],\n      fly: ['9M', '9L50', '8M', '8L50', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      growl: ['9L1', '8L1', '7L1', '6L1'],\n      heatwave: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hurricane: ['9M'],\n      mefirst: ['7L41', '6L41'],\n      naturalgift: ['7L29', '6L29'],\n      overheat: ['9M', '8M', '7M', '6M'],\n      peck: ['9L1', '8L1', '7L10', '6L10'],\n      protect: ['9M', '8M', '7M', '6M'],\n      quickattack: ['9L5', '8L5', '7L6', '6L6'],\n      quickguard: ['9E', '8E', '7E', '6E'],\n      raindance: ['9M'],\n      razorwind: ['7L25', '6L25'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roost: ['9L45', '8L45', '7M', '7L21', '6M', '6L21'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T', '7E', '6T', '6E'],\n      snore: ['8M', '7T', '6T'],\n      steelwing: ['9L40', '8M', '8L40', '7M', '7L48', '6M', '6L48'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '6M'],\n      tackle: ['7L1', '6L1'],\n      tailwind: ['9M', '9L35', '8L35', '7T', '7L45', '7E', '6T', '6L45', '6E'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      willowisp: ['8M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'fletchinder',\n    {\n      acrobatics: ['9M', '9L22', '8M', '8L22', '7M', '7L42', '6M', '6L42'],\n      aerialace: ['9M', '9L36', '8L36', '7M', '6M'],\n      agility: ['9M', '9L29', '8M', '8L29', '7L13', '6L13'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      attract: ['8M', '7M', '6M'],\n      bravebird: ['9M'],\n      confide: ['7M', '6M'],\n      defog: ['7T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M'],\n      dualwingbeat: ['9M', '8T'],\n      ember: ['9L1', '8L1', '7L1', '6L17'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      featherdance: ['9M'],\n      feint: ['9L1', '8L1'],\n      fireblast: ['9M', '8M', '7M', '6M'],\n      firespin: ['9M', '8M'],\n      flail: ['9L15', '8L15', '7L16', '6L16'],\n      flamecharge: ['9M', '9L0', '8L0', '7M', '7L38', '6M', '6L38'],\n      flamethrower: ['9M', '8M', '7M', '6M'],\n      flareblitz: ['9M'],\n      fly: ['9M', '9L64', '8M', '8L64', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      growl: ['9L1', '8L1', '7L1', '6L1'],\n      heatwave: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hurricane: ['9M'],\n      incinerate: ['6M'],\n      mefirst: ['7L46', '6L46'],\n      naturalgift: ['7L31', '6L31'],\n      overheat: ['9M', '8M', '7M', '6M'],\n      peck: ['9L1', '8L1', '7L10', '6L10'],\n      protect: ['9M', '8M', '7M', '6M'],\n      quickattack: ['9L1', '8L1', '7L1', '6L6'],\n      raindance: ['9M'],\n      razorwind: ['7L27', '6L27'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roost: ['9L57', '8L57', '7M', '7L25', '6M', '6L25'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      steelwing: ['9L50', '8M', '8L50', '7M', '7L55', '6M', '6L55'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '6M'],\n      tackle: ['7L1', '6L1'],\n      tailwind: ['9M', '9L43', '8L43', '7T', '7L51', '6T', '6L51'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      willowisp: ['9M', '8M', '7M', '6M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'talonflame',\n    {\n      acrobatics: ['9M', '9L22', '9S0', '8M', '8L22', '7M', '7L44', '6M', '6L44'],\n      aerialace: ['9M', '9L38', '8L38', '7M', '6M'],\n      agility: ['9M', '9L29', '8M', '8L29', '7L13', '6L13'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      attract: ['8M', '7M', '6M'],\n      bravebird: ['9M', '9L83', '8M', '8L83', '7L1', '6L1'],\n      bulkup: ['9M', '8M', '7M', '6M'],\n      confide: ['7M', '6M'],\n      defog: ['7T'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M'],\n      dualwingbeat: ['9M', '8T'],\n      ember: ['9L1', '8L1', '7L1', '6L17'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      featherdance: ['9M'],\n      feint: ['9L1', '8L1'],\n      fireblast: ['9M', '8M', '7M', '6M'],\n      firespin: ['9M', '8M'],\n      flail: ['9L15', '8L15', '7L16', '6L16'],\n      flamecharge: ['9M', '9L1', '8L1', '7M', '7L39', '6M', '6L39'],\n      flamethrower: ['9M', '8M', '7M', '6M'],\n      flareblitz: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      fly: ['9M', '9L74', '8M', '8L74', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      growl: ['9L1', '8L1', '7L1', '6L1'],\n      heatwave: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['6M'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      incinerate: ['6M'],\n      mefirst: ['7L49', '6L49'],\n      naturalgift: ['7L31', '6L31'],\n      overheat: ['9M', '8M', '7M', '6M'],\n      peck: ['9L1', '8L1', '7L1', '6L10'],\n      protect: ['9M', '9S0', '8M', '7M', '6M'],\n      quickattack: ['9L1', '8L1', '7L1', '6L6'],\n      quickguard: ['9S0'],\n      raindance: ['9M'],\n      razorwind: ['7L27', '6L27'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roost: ['9L65', '8L65', '7M', '7L25', '6M', '6L25'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      solarbeam: ['9M', '8M', '7M', '6M'],\n      steelwing: ['9L56', '8M', '8L56', '7M', '7L60', '6M', '6L60'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '6M'],\n      tackle: ['7L1', '6L1'],\n      tailwind: ['9M', '9L47', '9S0', '8L47', '7T', '7L55', '6T', '6L55'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      upperhand: ['9M'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      willowisp: ['9M', '8M', '7M', '6M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'scatterbug',\n    {\n      bugbite: ['9M', '9L15', '7T', '7L15', '6T', '6L15'],\n      poisonpowder: ['9E', '7E', '6E'],\n      pounce: ['9M'],\n      ragepowder: ['9E', '7E', '6E'],\n      stringshot: ['9L1', '7L1', '6L1'],\n      strugglebug: ['9M'],\n      stunspore: ['9L6', '7L6', '7E', '6L6', '6E'],\n      tackle: ['9L1', '7L1', '6L1'],\n      terablast: ['9M']\n    }\n  ],\n  [\n    'spewpa',\n    {\n      bugbite: ['9M', '7T', '6T'],\n      electroweb: ['7T', '6T'],\n      harden: ['9L1', '7L1', '6L1'],\n      irondefense: ['9M', '7T', '6T'],\n      pounce: ['9M'],\n      protect: ['9M', '9L0', '7M', '7L1', '6M', '6L9'],\n      strugglebug: ['9M'],\n      terablast: ['9M']\n    }\n  ],\n  [\n    'vivillon',\n    {\n      acrobatics: ['9M', '7M', '6M'],\n      aerialace: ['7M', '6M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      aromatherapy: ['7L31', '6L31'],\n      attract: ['7M', '6M'],\n      bugbite: ['9M', '7T', '6T'],\n      bugbuzz: ['9M', '9L35', '7L35', '6L35'],\n      calmmind: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M', '9L25', '7L25', '6L25'],\n      dreameater: ['7M', '6M'],\n      electroweb: ['7T', '6T'],\n      endeavor: ['7T', '6T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      gigaimpact: ['9M', '7M', '6M'],\n      gust: ['9L0', '7L1', '6L1'],\n      hiddenpower: ['7M', '6M'],\n      hurricane: ['9M', '9L50', '7L50', '6L50'],\n      hyperbeam: ['9M', '7M', '6M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L12', '7M', '7L12', '6M', '6L1'],\n      poisonpowder: ['9L1', '7L1', '6L1'],\n      pollenpuff: ['9M'],\n      pounce: ['9M'],\n      powder: ['7L1', '6L1'],\n      protect: ['9M', '7M', '6M'],\n      psybeam: ['9M', '9L17', '7L17', '6L17'],\n      psychic: ['9M', '7M', '6M'],\n      psychup: ['7M', '6M'],\n      quiverdance: ['9L45', '7L45', '6L45'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roost: ['7M', '6M'],\n      round: ['7M', '6M'],\n      safeguard: ['9L31', '7M', '7L41', '6M', '6L41'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T'],\n      skittersmack: ['9M'],\n      sleeppowder: ['9L1', '7L1', '6L1'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      strugglebug: ['9M', '9L1', '7L1', '6M', '6L12'],\n      stunspore: ['9L1', '7L1', '6L1'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      supersonic: ['9L21', '7L21', '6L21'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      tailwind: ['9M', '7T', '6T'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      uturn: ['9M', '7M', '6M'],\n      weatherball: ['9M']\n    }\n  ],\n  [\n    'vivillonfancy',\n    {\n      acrobatics: ['9M', '7M', '6M'],\n      aerialace: ['7M', '6M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      aromatherapy: ['7L31', '6L31'],\n      attract: ['7M', '6M'],\n      bugbite: ['7T', '6T'],\n      bugbuzz: ['9M', '9L35', '7L35', '6L35'],\n      calmmind: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M', '9L25', '7L25', '6L25'],\n      dreameater: ['7M', '6M'],\n      electroweb: ['7T', '6T'],\n      endeavor: ['7T', '6T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      gigaimpact: ['9M', '7M', '6M'],\n      gust: ['9L0', '7L1', '6L1', '6S0'],\n      hiddenpower: ['7M', '6M'],\n      holdhands: ['6S0'],\n      hurricane: ['9M', '9L50', '7L50', '6L50'],\n      hyperbeam: ['9M', '7M', '6M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L12', '7M', '7L12', '6M', '6L1', '6S0'],\n      poisonpowder: ['9L1', '7L1', '6L1'],\n      pollenpuff: ['9M'],\n      pounce: ['9M'],\n      powder: ['7L1', '6L1'],\n      protect: ['9M', '7M', '6M'],\n      psybeam: ['9M', '9L17', '7L17', '6L17'],\n      psychic: ['9M', '7M', '6M'],\n      psychup: ['7M', '6M'],\n      quiverdance: ['9L45', '7L45', '6L45'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roost: ['7M', '6M'],\n      round: ['7M', '6M'],\n      safeguard: ['9L31', '7M', '7L41', '6M', '6L41'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T'],\n      sleeppowder: ['9L1', '7L1', '6L1'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      strugglebug: ['9M', '9L1', '7L1', '6M', '6L12', '6S0'],\n      stunspore: ['9L1', '7L1', '6L1'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      supersonic: ['9L21', '7L21', '6L21'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      tailwind: ['9M', '7T', '6T'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      uturn: ['9M', '7M', '6M']\n    }\n  ],\n  [\n    'vivillonpokeball',\n    {\n      acrobatics: ['9M', '7M', '6M'],\n      aerialace: ['7M', '6M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      aromatherapy: ['7L31', '6L31'],\n      attract: ['7M', '6M'],\n      bugbite: ['7T', '6T'],\n      bugbuzz: ['9M', '9L35', '7L35', '6L35'],\n      calmmind: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M', '9L25', '7L25', '6L25'],\n      dreameater: ['7M', '6M'],\n      electroweb: ['7T', '6T'],\n      endeavor: ['7T', '6T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      gigaimpact: ['9M', '7M', '6M'],\n      gust: ['9L0', '7L1', '6L1', '6S0'],\n      hiddenpower: ['7M', '6M'],\n      hurricane: ['9M', '9L50', '7L50', '6L50'],\n      hyperbeam: ['9M', '7M', '6M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '9L12', '7M', '7L12', '6M', '6L1', '6S0'],\n      poisonpowder: ['9L1', '7L1', '6L1'],\n      pollenpuff: ['9M'],\n      pounce: ['9M'],\n      powder: ['7L1', '6L1'],\n      protect: ['9M', '7M', '6M'],\n      psybeam: ['9M', '9L17', '7L17', '6L17'],\n      psychic: ['9M', '7M', '6M'],\n      psychup: ['7M', '6M'],\n      quiverdance: ['9L45', '7L45', '6L45'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roost: ['7M', '6M'],\n      round: ['7M', '6M'],\n      safeguard: ['9L31', '7M', '7L41', '6M', '6L41'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T'],\n      sleeppowder: ['9L1', '7L1', '6L1'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      strugglebug: ['9M', '9L1', '7L1', '6M', '6L12', '6S0'],\n      stunspore: ['9L1', '7L1', '6L1', '6S0'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      supersonic: ['9L21', '7L21', '6L21'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      tailwind: ['9M', '7T', '6T'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      uturn: ['9M', '7M', '6M']\n    }\n  ],\n  [\n    'litleo',\n    {\n      acrobatics: ['9M'],\n      attract: ['7M', '6M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '7M', '6M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L39', '7L39', '6L39'],\n      darkpulse: ['7M', '6M'],\n      dig: ['9M', '6M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M'],\n      echoedvoice: ['9L33', '7M', '7L33', '6M', '6L33'],\n      ember: ['9L5', '7L5', '6L5'],\n      endeavor: ['9M', '9L28', '7T', '7L28', '6T', '6L28'],\n      endure: ['9M'],\n      entrainment: ['9E', '7E', '6E'],\n      facade: ['9M', '7M', '6M'],\n      fireblast: ['9M', '7M', '6M'],\n      firefang: ['9M', '9L23', '7L23', '6L23'],\n      firespin: ['9M', '9E', '7E', '6E'],\n      flamecharge: ['9M', '7M', '6M'],\n      flamethrower: ['9M', '9L36', '7M', '7L36', '6M', '6L36'],\n      flareblitz: ['9M', '9E', '7E'],\n      frustration: ['7M', '6M'],\n      headbutt: ['9L11', '7L11', '6L11'],\n      heatwave: ['9M', '7T', '6T'],\n      helpinghand: ['9M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hypervoice: ['9M', '9L43', '7T', '7L43', '6T', '6L43'],\n      incinerate: ['9L46', '7L46', '6M', '6L46'],\n      irontail: ['7T', '6T'],\n      leer: ['9L1', '7L1', '6L1'],\n      mudslap: ['9M'],\n      nobleroar: ['9L15', '7L15', '6L15'],\n      overheat: ['9M', '9L50', '7M', '7L50', '6M', '6L50'],\n      payback: ['7M', '6M'],\n      protect: ['9M', '7M', '6M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      retaliate: ['6M'],\n      return: ['7M', '6M'],\n      roar: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      round: ['7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snarl: ['9M', '7M', '6M'],\n      snatch: ['7T', '7E', '6T', '6E'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      tackle: ['9L1', '7L1', '6L1'],\n      takedown: ['9M', '9L20', '7L20', '6L20'],\n      taunt: ['9M', '7M', '6M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      thunderfang: ['9M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '7M', '6M'],\n      willowisp: ['9M', '7M', '6M'],\n      workup: ['9L8', '7M', '7L8', '6L8'],\n      yawn: ['9E', '7E', '6E']\n    }\n  ],\n  [\n    'pyroar',\n    {\n      acrobatics: ['9M'],\n      attract: ['7M', '6M'],\n      bodyslam: ['9M'],\n      bounce: ['7T', '6T'],\n      bulldoze: ['9M', '7M', '6M'],\n      burningjealousy: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L42', '7L42', '6L42'],\n      darkpulse: ['9M', '7M', '6M', '6S0'],\n      dig: ['9M', '6M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M'],\n      echoedvoice: ['9L33', '7M', '7L33', '6M', '6L33'],\n      ember: ['9L1', '7L1', '6L5'],\n      endeavor: ['9M', '9L28', '7T', '7L28', '6T', '6L28'],\n      endure: ['9M'],\n      facade: ['9M', '7M', '6M'],\n      fireblast: ['9M', '7M', '6M', '6S0'],\n      firefang: ['9M', '9L23', '7L23', '6L23'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '7M', '6M'],\n      flamethrower: ['9M', '9L38', '7M', '7L38', '6M', '6L38'],\n      flareblitz: ['9M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '7M', '6M'],\n      headbutt: ['9L11', '7L11', '6L11'],\n      heatwave: ['9M', '7T', '6T'],\n      helpinghand: ['9M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '9L1', '7M', '7L1', '6M', '6L1'],\n      hypervoice: ['9M', '9L48', '7T', '7L48', '6T', '6L48', '6S0'],\n      incinerate: ['9L51', '7L51', '6M', '6L51'],\n      irontail: ['7T', '6T'],\n      leer: ['9L1', '7L1', '6L1'],\n      mudslap: ['9M'],\n      nobleroar: ['9L15', '7L15', '6L15'],\n      overheat: ['9M', '9L57', '7M', '7L57', '6M', '6L57'],\n      payback: ['7M', '6M'],\n      protect: ['9M', '7M', '6M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      retaliate: ['6M'],\n      return: ['7M', '6M'],\n      roar: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      round: ['7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snarl: ['9M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      tackle: ['9L1', '7L1', '6L1'],\n      takedown: ['9M', '9L20', '7L20', '6L20'],\n      taunt: ['9M', '7M', '6M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      thunderfang: ['9M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '7M', '6M'],\n      willowisp: ['9M', '7M', '6M'],\n      workup: ['9L1', '7M', '7L1', '6L8']\n    }\n  ],\n  [\n    'flabebe',\n    {\n      afteryou: ['7T', '6T'],\n      alluringvoice: ['9M'],\n      allyswitch: ['7T'],\n      aromatherapy: ['7L33', '6L33'],\n      attract: ['7M', '6M'],\n      batonpass: ['9M'],\n      calmmind: ['9M', '7M', '6M'],\n      camouflage: ['7E', '6E'],\n      captivate: ['7E', '6E'],\n      celebrate: ['9S0'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      copycat: ['9E', '7E', '6E'],\n      covet: ['7T', '6T'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      disarmingvoice: ['9M'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M'],\n      echoedvoice: ['7M', '6M'],\n      endeavor: ['9M', '9E', '7T', '6T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      fairywind: ['9L6', '9S0', '7L6', '6L6'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      grassknot: ['9M', '7M', '6M'],\n      grassyterrain: ['9M', '9L24', '7L24', '6L24'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['9M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      lightscreen: ['9M'],\n      luckychant: ['7L10', '6L10'],\n      magicalleaf: ['9M', '9L22', '7L22', '6L22'],\n      magiccoat: ['7T', '6T'],\n      mistyterrain: ['9M', '9L37', '7L37', '6L37'],\n      moonblast: ['9L41', '7L41', '6L41'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M', '9L28', '7L28', '6L28'],\n      petaldance: ['9L45', '7L45', '6L45'],\n      pollenpuff: ['9M'],\n      protect: ['9M', '7M', '6M'],\n      psychic: ['9M', '7M', '6M'],\n      raindance: ['9M', '7M', '6M'],\n      razorleaf: ['9L15', '7L15', '6L15'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['7M', '6M'],\n      safeguard: ['9L10', '7M', '6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '9L48', '7M', '7L48', '6M', '6L48'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      synthesis: ['9L33', '7T', '6T'],\n      tackle: ['9L1', '7L1', '6L1'],\n      tearfullook: ['9E', '7E'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L1', '9S0', '7L1', '6L1'],\n      wish: ['9L20', '9S0', '7L20', '6L20'],\n      worryseed: ['7T', '6T']\n    }\n  ],\n  [\n    'floette',\n    {\n      afteryou: ['7T', '6T'],\n      alluringvoice: ['9M'],\n      allyswitch: ['7T'],\n      aromatherapy: ['7L38', '6L38'],\n      attract: ['7M', '6M'],\n      batonpass: ['9M'],\n      calmmind: ['9M', '7M', '6M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      disarmingvoice: ['9M'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M'],\n      echoedvoice: ['7M', '6M'],\n      endeavor: ['9M', '7T', '6T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      fairywind: ['9L1', '7L1', '6L6'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      grassknot: ['9M', '7M', '6M'],\n      grassyterrain: ['9M', '9L27', '7L27', '6L27'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['9M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      lightscreen: ['9M'],\n      luckychant: ['7L10', '6L10'],\n      magicalleaf: ['9M', '9L25', '7L25', '6L25'],\n      magiccoat: ['7T', '6T'],\n      metronome: ['9M'],\n      mistyterrain: ['9M', '9L43', '7L43', '6L43'],\n      moonblast: ['9L46', '7L46', '6L46'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M', '9L33', '7L33', '6L33'],\n      petaldance: ['9L51', '7L51', '6L51'],\n      pollenpuff: ['9M'],\n      protect: ['9M', '7M', '6M'],\n      psychic: ['9M', '7M', '6M'],\n      raindance: ['9M', '7M', '6M'],\n      razorleaf: ['9L15', '7L15', '6L15'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['7M', '6M'],\n      safeguard: ['9L10', '7M', '6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '9L58', '7M', '7L58', '6M', '6L58'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      synthesis: ['9L38', '7T', '6T'],\n      tackle: ['9L1', '7L1', '6L1'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      vinewhip: ['9L1', '7L1', '6L1'],\n      wish: ['9L20', '7L20', '6L20'],\n      worryseed: ['7T', '6T']\n    }\n  ],\n  [\n    'floetteeternal',\n    {\n      afteryou: ['7T'],\n      allyswitch: ['7T'],\n      aromatherapy: ['9L38', '6L38'],\n      attract: ['6M'],\n      calmmind: ['9M', '6M'],\n      confide: ['6M'],\n      covet: ['7T'],\n      dazzlinggleam: ['9M', '6M'],\n      doubleteam: ['6M'],\n      echoedvoice: ['6M'],\n      endeavor: ['7T'],\n      endure: ['9M'],\n      energyball: ['9M', '6M'],\n      facade: ['9M', '6M'],\n      fairywind: ['9L1', '6L6'],\n      flash: ['6M'],\n      frustration: ['6M'],\n      gigadrain: ['9M', '7T'],\n      grassknot: ['9M', '6M'],\n      grassyterrain: ['9M', '9L27', '6L27'],\n      healbell: ['7T'],\n      helpinghand: ['9M', '7T'],\n      hiddenpower: ['6M'],\n      lightofruin: ['9L50', '6L50'],\n      luckychant: ['9L10', '6L10'],\n      magicalleaf: ['9M', '9L25', '6L25'],\n      magiccoat: ['7T'],\n      mistyterrain: ['9M', '9L43', '6L43'],\n      moonblast: ['9L46', '6L46'],\n      naturepower: ['6M'],\n      petalblizzard: ['9L33', '6L33'],\n      petaldance: ['9L51', '6L51'],\n      protect: ['9M', '6M'],\n      psychic: ['9M', '6M'],\n      raindance: ['9M', '6M'],\n      razorleaf: ['9L15', '6L15'],\n      rest: ['9M', '6M'],\n      return: ['6M'],\n      round: ['6M'],\n      safeguard: ['6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T'],\n      sleeptalk: ['9M', '6M'],\n      snore: ['7T'],\n      solarbeam: ['9M', '9L58', '6M', '6L58'],\n      substitute: ['9M', '6M'],\n      sunnyday: ['9M', '6M'],\n      swagger: ['6M'],\n      synthesis: ['7T'],\n      tackle: ['9L1', '6L1'],\n      toxic: ['6M'],\n      vinewhip: ['9L1', '6L1'],\n      wish: ['9L20', '6L20'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'florges',\n    {\n      afteryou: ['7T', '6T'],\n      alluringvoice: ['9M'],\n      allyswitch: ['7T'],\n      aromatherapy: ['7L1', '6L1'],\n      attract: ['7M', '6M'],\n      batonpass: ['9M'],\n      calmmind: ['9M', '7M', '6M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      dazzlinggleam: ['9M', '7M', '6M'],\n      defog: ['7T'],\n      disarmingvoice: ['9M', '9L1', '7L1', '6L1'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M'],\n      echoedvoice: ['7M', '6M'],\n      endeavor: ['9M', '7T', '6T'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      flash: ['6M'],\n      flowershield: ['7L1', '6L1'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      gigaimpact: ['9M', '7M', '6M'],\n      grassknot: ['9M', '9L1', '7M', '7L1', '6M', '6L1'],\n      grassyterrain: ['9M', '9L1', '7L1', '6L1'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['9M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '7M', '6M'],\n      lightscreen: ['9M', '7M', '6M'],\n      luckychant: ['7L1', '6L1'],\n      magicalleaf: ['9M', '9L1', '7L1', '6L1'],\n      magiccoat: ['7T', '6T'],\n      metronome: ['9M'],\n      mistyexplosion: ['9M'],\n      mistyterrain: ['9M', '9L1', '7L1', '6L1'],\n      moonblast: ['9L5', '7L1', '6L1'],\n      naturepower: ['7M', '6M'],\n      petalblizzard: ['9M', '9L1', '7L1', '6L1'],\n      petaldance: ['9L1', '7L1', '6L1'],\n      pollenpuff: ['9M'],\n      protect: ['9M', '7M', '6M'],\n      psychic: ['9M', '7M', '6M'],\n      psychicnoise: ['9M'],\n      raindance: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['7M', '6M'],\n      safeguard: ['9L1', '7M', '6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '7T', '6T'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '9L1', '7M', '6M'],\n      storedpower: ['9M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      synthesis: ['9L1', '7T', '6T'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      wish: ['9L1', '7L1', '6L1'],\n      worryseed: ['7T', '6T']\n    }\n  ],\n  [\n    'skiddo',\n    {\n      attract: ['7M', '6M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '7M', '6M'],\n      bulkup: ['9M', '9L34', '7M', '7L34', '6M', '6L34'],\n      bulldoze: ['9M', '9L26', '7M', '7L26', '6M', '6L26'],\n      bulletseed: ['9M'],\n      confide: ['7M', '6M'],\n      defensecurl: ['9E', '7E', '6E'],\n      dig: ['9M', '6M'],\n      doubleedge: ['9M', '9L38', '7L38', '6L38'],\n      doubleteam: ['7M', '6M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      grassknot: ['9M', '7M', '6M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '9E', '7E'],\n      growth: ['9L1', '7L1', '6L1'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      hornleech: ['9L42', '7L42', '6L42'],\n      irontail: ['7T', '6T'],\n      leafblade: ['9L45', '7L45', '6L45'],\n      leafstorm: ['9M'],\n      leechseed: ['9L12', '7L12', '6L12'],\n      magicalleaf: ['9M'],\n      milkdrink: ['9E', '7L50', '7E', '6L50', '6E'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      naturepower: ['7M', '6M'],\n      payback: ['7M', '6M'],\n      playrough: ['9M'],\n      protect: ['9M', '7M', '6M'],\n      raindance: ['9M', '7M', '6M'],\n      razorleaf: ['9L13', '7L13', '6L13'],\n      rest: ['9M', '7M', '6M'],\n      retaliate: ['6M'],\n      return: ['7M', '6M'],\n      roar: ['9M', '7M', '6M'],\n      rockslide: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rollout: ['9E', '7E', '6E'],\n      round: ['7M', '6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '9L30', '7T', '7L30', '6T', '6L30'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      stompingtantrum: ['9M'],\n      strength: ['6M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      surf: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      synthesis: ['9L20', '7T', '7L20', '6T', '6L20'],\n      tackle: ['9L1', '7L1', '6L1'],\n      tailwhip: ['9L9', '7L9', '6L9'],\n      takedown: ['9M', '9L22', '7L22', '6L22'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L7', '7L7', '6L7'],\n      wildcharge: ['9M', '7M', '6M'],\n      workup: ['7M'],\n      worryseed: ['9L16', '7T', '7L16', '6T', '6L16'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'gogoat',\n    {\n      aerialace: ['9M', '9L0', '7M', '7L1', '6M', '6L1'],\n      attract: ['7M', '6M'],\n      bodyslam: ['9M'],\n      bounce: ['7T', '6T'],\n      brickbreak: ['9M', '7M', '6M'],\n      bulkup: ['9M', '9L34', '7M', '7L34', '6M', '6L34'],\n      bulldoze: ['9M', '9L26', '7M', '7L26', '6M', '6L26'],\n      bulletseed: ['9M'],\n      confide: ['7M', '6M'],\n      dig: ['9M', '6M'],\n      doubleedge: ['9M', '9L40', '7L40', '6L40'],\n      doubleteam: ['7M', '6M'],\n      earthquake: ['9M', '9L1', '7M', '7L1', '6M', '6L60'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      facade: ['9M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '7T', '6T'],\n      gigaimpact: ['9M', '7M', '6M'],\n      grassknot: ['9M', '7M', '6M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L1', '7L1', '6L1'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      highhorsepower: ['9M'],\n      hornleech: ['9L47', '7L47', '6L47'],\n      hyperbeam: ['9M', '7M', '6M'],\n      irontail: ['7T', '6T'],\n      leafblade: ['9L55', '7L55', '6L55'],\n      leafstorm: ['9M'],\n      leechseed: ['9L12', '7L12', '6L12'],\n      magicalleaf: ['9M'],\n      milkdrink: ['9L58', '7L58', '6L58'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      naturepower: ['7M', '6M'],\n      payback: ['7M', '6M'],\n      playrough: ['9M'],\n      protect: ['9M', '7M', '6M'],\n      raindance: ['9M', '7M', '6M'],\n      razorleaf: ['9L13', '7L13', '6L13'],\n      rest: ['9M', '7M', '6M'],\n      retaliate: ['6M'],\n      return: ['7M', '6M'],\n      roar: ['9M', '7M', '6M'],\n      rockslide: ['9M', '7M', '6M'],\n      rocksmash: ['6M'],\n      round: ['7M', '6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '9L30', '7T', '7L30', '6T', '6L30'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snore: ['7T', '6T'],\n      solarbeam: ['9M', '7M', '6M'],\n      stompingtantrum: ['9M', '7T'],\n      strength: ['6M'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      superpower: ['7T', '6T'],\n      surf: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      synthesis: ['9L20', '7T', '7L20', '6T', '6L20'],\n      tackle: ['9L1', '7L1', '6L1'],\n      tailwhip: ['9L1', '7L1', '6L9'],\n      takedown: ['9M', '9L22', '7L22', '6L22'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L1', '7L1', '6L7'],\n      wildcharge: ['9M', '7M', '6M'],\n      workup: ['7M'],\n      worryseed: ['9L16', '7T', '7L16', '6T', '6L16'],\n      zenheadbutt: ['9M', '7T', '6T']\n    }\n  ],\n  [\n    'pancham',\n    {\n      aerialace: ['7M', '6M'],\n      armthrust: ['8L4', '7L7', '6L7', '6S0'],\n      attract: ['8M', '7M', '6M'],\n      block: ['7T', '6T'],\n      bodyslam: ['8M', '8L36', '7L33', '6L33'],\n      brickbreak: ['8M', '7M', '6M'],\n      bulkup: ['8M', '7M', '6M'],\n      bulldoze: ['8M', '7M', '6M'],\n      circlethrow: ['8L12', '7L25', '6L25'],\n      coaching: ['8T'],\n      cometpunch: ['7L15', '6L15'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      crunch: ['8M', '8L33', '7L39', '6L39'],\n      cut: ['6M'],\n      darkpulse: ['8M', '7M', '6M', '6S0'],\n      dig: ['8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      drainpunch: ['8M', '7T', '6T'],\n      dualchop: ['7T', '6T'],\n      echoedvoice: ['7M', '6M'],\n      endeavor: ['7T', '6T'],\n      endure: ['8M'],\n      entrainment: ['8L44', '7L42', '6L42'],\n      facade: ['8M', '7M', '6M'],\n      falseswipe: ['8M', '7M', '6M'],\n      firepunch: ['8M', '7T', '6T'],\n      fling: ['8M', '7M', '6M'],\n      focuspunch: ['7T', '6T'],\n      foulplay: ['8M', '7T', '7E', '6T', '6E'],\n      frustration: ['7M', '6M'],\n      grassknot: ['8M', '7M', '6M'],\n      gunkshot: ['8M', '7T', '6T'],\n      helpinghand: ['8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hypervoice: ['8M', '7T', '6T'],\n      icepunch: ['8M', '7T', '6T'],\n      ironhead: ['8M', '7T', '6T'],\n      karatechop: ['7L12', '6L12'],\n      knockoff: ['7T', '6T'],\n      lashout: ['8T'],\n      leer: ['8L1', '7L1', '6L1'],\n      lowkick: ['8M', '7T', '6T'],\n      lowsweep: ['8M', '8L16', '7M', '6M'],\n      mefirst: ['7E', '6E'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      partingshot: ['8L40', '7L45', '6L45'],\n      payback: ['8M', '7M', '6M'],\n      powertrip: ['8E', '7E'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M'],\n      quash: ['8E', '7E', '6E'],\n      quickguard: ['8E', '7E', '6E'],\n      raindance: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      retaliate: ['8M', '6M'],\n      return: ['7M', '6M'],\n      roar: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      seismictoss: ['8E'],\n      shadowclaw: ['8M', '7M', '6M'],\n      skyuppercut: ['7L48', '6L48'],\n      slash: ['8L24', '7L20', '6L20'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      spite: ['7T', '6T'],\n      stoneedge: ['8M', '7M', '6M', '6S0'],\n      stormthrow: ['8E', '7E', '6E'],\n      strength: ['6M'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['8M', '7M', '6M'],\n      tackle: ['8L1', '7L1', '6L1'],\n      taunt: ['8M', '8L8'],\n      thunderpunch: ['8M', '7T', '6T'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uproar: ['8M', '7T', '6T'],\n      vitalthrow: ['8L28', '7L27', '6L27'],\n      workup: ['8M', '8L20', '7M', '7L10', '6L10'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'pangoro',\n    {\n      aerialace: ['7M', '6M'],\n      armthrust: ['8L1', '7L1', '6L7'],\n      attract: ['8M', '7M', '6M'],\n      beatup: ['8M'],\n      block: ['7T', '6T'],\n      bodyslam: ['8M', '8L40', '7L35', '6L35'],\n      brickbreak: ['8M', '7M', '6M'],\n      bulkup: ['8M', '7M', '6M'],\n      bulldoze: ['8M', '7M', '6M'],\n      bulletpunch: ['8L1', '7L1'],\n      circlethrow: ['8L12', '7L25', '6L25'],\n      closecombat: ['8M'],\n      coaching: ['8T'],\n      cometpunch: ['7L15', '6L15'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      crunch: ['8M', '8L35', '7L42', '6L42'],\n      cut: ['6M'],\n      darkestlariat: ['8M'],\n      darkpulse: ['8M', '7M', '6M'],\n      dig: ['8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dragonclaw: ['8M', '7M', '6M'],\n      drainpunch: ['8M', '7T', '6T'],\n      dualchop: ['7T', '6T'],\n      earthquake: ['8M', '7M', '6M'],\n      echoedvoice: ['7M', '6M'],\n      embargo: ['7M', '6M'],\n      endeavor: ['7T', '6T'],\n      endure: ['8M'],\n      entrainment: ['8L52', '7L1', '6L1'],\n      facade: ['8M', '7M', '6M'],\n      falseswipe: ['8M', '7M', '6M'],\n      firepunch: ['8M', '7T', '6T'],\n      fling: ['8M', '7M', '6M'],\n      focusblast: ['8M', '7M', '6M'],\n      focusenergy: ['8M'],\n      focuspunch: ['7T', '6T'],\n      foulplay: ['8M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['8M', '7M', '6M'],\n      grassknot: ['8M', '7M', '6M'],\n      gunkshot: ['8M', '7T', '6T'],\n      hammerarm: ['8L58', '7L1', '6L1'],\n      helpinghand: ['8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['6M'],\n      hyperbeam: ['8M', '7M', '6M'],\n      hypervoice: ['8M', '7T', '6T'],\n      icepunch: ['8M', '7T', '6T'],\n      infestation: ['7M', '6M'],\n      ironhead: ['8M', '7T', '6T'],\n      karatechop: ['7L12', '6L12'],\n      knockoff: ['7T', '6T'],\n      laserfocus: ['7T'],\n      lashout: ['8T'],\n      leer: ['8L1', '7L1', '6L1'],\n      lowkick: ['8M', '7T', '6T'],\n      lowsweep: ['8M', '8L16', '7M', '7L1', '6M', '6L70'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nightslash: ['8L0'],\n      outrage: ['8M', '7T', '6T'],\n      partingshot: ['8L46', '7L48', '6L48'],\n      payback: ['8M', '7M', '6M'],\n      poisonjab: ['8M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M'],\n      quash: ['7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      retaliate: ['8M', '6M'],\n      return: ['7M', '6M'],\n      revenge: ['8M'],\n      reversal: ['8M'],\n      roar: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      scaryface: ['8M'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M'],\n      skyuppercut: ['7L52', '6L52'],\n      slash: ['8L24', '7L20', '6L20'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      snarl: ['8M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      spite: ['7T', '6T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['8M', '7M', '6M'],\n      tackle: ['8L1', '7L1', '6L1'],\n      taunt: ['8M', '8L1', '7M', '7L65', '6M', '6L65'],\n      thief: ['8M', '7M', '6M'],\n      throatchop: ['8M', '7T'],\n      thunderpunch: ['8M', '7T', '6T'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uproar: ['8M', '7T', '6T'],\n      vitalthrow: ['8L28', '7L27', '6L27'],\n      workup: ['8M', '8L20', '7M', '7L1', '6L10'],\n      xscissor: ['8M', '7M', '6M'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'furfrou',\n    {\n      attract: ['7M', '6M'],\n      babydolleyes: ['7L9', '6L9'],\n      bite: ['7L22', '6L22'],\n      captivate: ['7E', '6E'],\n      chargebeam: ['7M', '6M'],\n      charm: ['7L38', '6L38'],\n      confide: ['7M', '6M'],\n      cottonguard: ['7L48', '6L48'],\n      darkpulse: ['7M', '6M'],\n      dig: ['6M'],\n      doubleteam: ['7M', '6M'],\n      echoedvoice: ['7M', '6M'],\n      endeavor: ['7T', '6T'],\n      facade: ['7M', '6M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['7M', '6M'],\n      grassknot: ['7M', '6M'],\n      growl: ['7L1', '6L1'],\n      headbutt: ['7L12', '6L12'],\n      helpinghand: ['7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hypervoice: ['7T', '6T'],\n      irontail: ['7T', '6T'],\n      lastresort: ['7T', '6T'],\n      mimic: ['7E', '6E'],\n      odorsleuth: ['7L27', '6L27'],\n      protect: ['7M', '6M'],\n      raindance: ['7M', '6M'],\n      refresh: ['7E', '6E'],\n      rest: ['7M', '6M'],\n      retaliate: ['7L33', '6M', '6L33'],\n      return: ['7M', '6M'],\n      roar: ['7M', '6M'],\n      rocksmash: ['6M'],\n      roleplay: ['7T', '7E', '6T', '6E'],\n      round: ['7M', '6M'],\n      sandattack: ['7L5', '6L5'],\n      secretpower: ['6M'],\n      sleeptalk: ['7M', '6M'],\n      snarl: ['7M', '6M'],\n      snore: ['7T', '6T'],\n      substitute: ['7M', '6M'],\n      suckerpunch: ['7L42', '6L42'],\n      sunnyday: ['7M', '6M'],\n      surf: ['7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['7L1', '6L1'],\n      tailwhip: ['7L15', '6L15'],\n      takedown: ['7L35', '6L35'],\n      thunderwave: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uproar: ['7T', '6T'],\n      uturn: ['7M', '6M'],\n      wildcharge: ['7M', '6M'],\n      workup: ['7M', '7E', '6E'],\n      zenheadbutt: ['7T', '6T']\n    }\n  ],\n  [\n    'espurr',\n    {\n      allyswitch: ['8M', '7T'],\n      assist: ['7E', '6E'],\n      attract: ['8M', '7M', '6M'],\n      barrier: ['7E', '6E'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      chargebeam: ['9M', '7M', '6M'],\n      charm: ['9M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L9', '8L9', '7L9', '6L9'],\n      covet: ['9L18', '8L18', '7T', '7L5', '6T', '6L5'],\n      cut: ['6M'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      disarmingvoice: ['9M', '9L6', '8L6', '7L22', '6L22'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M'],\n      fakeout: ['9L3', '8L3', '7L19', '6L19'],\n      faketears: ['9M', '8M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gravity: ['9M', '7T', '6T'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      irontail: ['8M', '7T', '6T'],\n      leer: ['9L1', '8L1', '7L1', '6L1'],\n      lightscreen: ['9M', '9L30', '8M', '8L30', '7M', '7L13', '6M', '6L13'],\n      magiccoat: ['7T', '6T'],\n      magicroom: ['8M', '7T', '6T'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M', '7M', '6M'],\n      payday: ['8M'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psybeam: ['9M', '9L21', '8L21', '7L17', '6L17'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '6M'],\n      psyshock: ['9M', '9L33', '8M', '8L33', '7M', '7L25', '6M', '6L25'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      recycle: ['7T', '6T'],\n      reflect: ['9M', '9L30', '8M', '8L30', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roleplay: ['7T', '6T'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      scratch: ['9L1', '8L1', '7L1', '6L1'],\n      secretpower: ['6M'],\n      shadowball: ['9M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T'],\n      skillswap: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '8M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      thunderwave: ['9M', '8M', '7M', '6M'],\n      tickle: ['9E', '8E'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      trick: ['9M', '8M', '7T', '7E', '6T', '6E'],\n      trickroom: ['9M', '8M', '7M', '6M'],\n      wonderroom: ['8M', '7T', '6T'],\n      workup: ['8M', '7M'],\n      yawn: ['9E', '8E', '7E', '6E'],\n      zenheadbutt: ['9M', '8M', '7T', '6T']\n    }\n  ],\n  [\n    'meowstic',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M'],\n      batonpass: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      chargebeam: ['9M', '7M', '6M'],\n      charm: ['9M', '9L15', '8M', '8L15', '7L28', '6L28'],\n      confide: ['7M', '6M'],\n      confusion: ['9L9', '8L9', '7L1', '6L9'],\n      covet: ['9L18', '8L18', '7T', '7L1', '6T', '6L5'],\n      cut: ['6M'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      dig: ['9M', '8M', '6M'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L22', '6L22'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M'],\n      fakeout: ['9L1', '8L1', '7L19', '6L19'],\n      faketears: ['9M', '8M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      gravity: ['9M', '7T', '6T'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['9M', '9L12', '8M', '8L12', '7T', '7L1', '6T', '6L1'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      imprison: ['9M', '9L44', '8M', '8L44', '7L45', '6L45'],\n      irontail: ['8M', '7T', '6T'],\n      leer: ['9L1', '8L1', '7L1', '6L1'],\n      lightscreen: ['9M', '9L34', '8M', '8L34', '7M', '7L13', '6M', '6L13'],\n      magiccoat: ['7T', '6T'],\n      magicroom: ['8M', '7T', '6T'],\n      meanlook: ['9L1', '8L1', '7L1', '6L1'],\n      miracleeye: ['7L31', '6L31'],\n      mistyterrain: ['9M', '9L59', '8M', '8L59', '7L50', '6L50'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M', '7M', '6M'],\n      payday: ['8M'],\n      playrough: ['9M', '8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psybeam: ['9M', '9L21', '8L21', '7L17', '6L17'],\n      psychic: ['9M', '9L54', '8M', '8L54', '7M', '7L40', '6M', '6L40'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '7M', '6M'],\n      psyshock: ['9M', '9L39', '8M', '8L39', '7M', '7L25', '6M', '6L25'],\n      quickguard: ['9L49', '8L49', '7L1', '6L1'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      recycle: ['7T', '6T'],\n      reflect: ['9M', '9L34', '8M', '8L34', '7M', '7L35', '6M', '6L35'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roleplay: ['9L29', '8L29', '7T', '7L43', '6T', '6L43'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      scratch: ['9L1', '8L1', '7L1', '6L1'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T'],\n      skillswap: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      storedpower: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      suckerpunch: ['9L24', '8L24', '7L48', '6L48'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '8M'],\n      tailslap: ['8M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      thunderwave: ['9M', '8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T', '6T'],\n      trickroom: ['9M', '8M', '7M', '6M'],\n      wonderroom: ['8M', '7T', '6T'],\n      workup: ['8M', '7M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T']\n    }\n  ],\n  [\n    'meowsticf',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M'],\n      batonpass: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      chargebeam: ['9M', '9L15', '8L15', '7M', '7L28', '6M', '6L28'],\n      charm: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L9', '8L9', '7L1', '6L9'],\n      covet: ['9L18', '8L18', '7T', '7L1', '6L5'],\n      cut: ['6M'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      dig: ['9M', '8M', '6M'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L22', '6L22'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M'],\n      expandingforce: ['9M', '8T'],\n      extrasensory: ['9L44', '8L44', '7L35', '6L35'],\n      facade: ['9M', '8M', '7M', '6M'],\n      fakeout: ['9L1', '8L1', '7L19', '6L19'],\n      faketears: ['9M', '8M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      futuresight: ['9M', '9L59', '8M', '8L59', '7L50', '6L50'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      gravity: ['9M', '7T'],\n      healbell: ['7T'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      irontail: ['8M', '7T'],\n      leer: ['9L1', '8L1', '7L1', '6L1'],\n      lightscreen: ['9M', '9L34', '8M', '8L34', '7M', '7L13', '6M', '6L13'],\n      magicalleaf: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      mefirst: ['7L1', '6L1'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M', '7M', '6M'],\n      payday: ['8M'],\n      playrough: ['9M', '8M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psybeam: ['9M', '9L21', '8L21', '7L17', '6L17'],\n      psychic: ['9M', '9L54', '8M', '8L54', '7M', '7L40', '6M', '6L40'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9M', '7M', '6M'],\n      psyshock: ['9M', '9L39', '8M', '8L39', '7M', '7L25', '6M', '6L25'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      recycle: ['7T'],\n      reflect: ['9M', '9L34', '8M', '8L34', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roleplay: ['9L29', '8L29', '7T', '7L43', '6L43'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      scratch: ['9L1', '8L1', '7L1', '6L1'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '9L49', '8M', '8L49', '7M', '7L31', '6M', '6L31'],\n      shockwave: ['7T'],\n      signalbeam: ['7T', '7L45', '6L45'],\n      skillswap: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      storedpower: ['9M', '9L12', '8M', '8L12', '7L1', '6L1'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      suckerpunch: ['9L24', '8L24', '7L48', '6L48'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '8M'],\n      tailslap: ['8M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      thunderwave: ['9M', '8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T'],\n      trickroom: ['9M', '8M', '7M', '6M'],\n      wonderroom: ['8M', '7T'],\n      workup: ['8M', '7M'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'honedge',\n    {\n      aerialace: ['8L12', '7M', '7L22', '6M', '6L22'],\n      afteryou: ['7T', '6T'],\n      attract: ['8M', '7M', '6M'],\n      autotomize: ['8L8', '7L18', '6L18'],\n      block: ['8E'],\n      brickbreak: ['8M', '7M', '6M'],\n      brutalswing: ['8M', '7M'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      destinybond: ['8E', '7E', '6E'],\n      doubleteam: ['7M', '6M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      falseswipe: ['8M', '7M', '6M'],\n      flashcannon: ['8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      furycutter: ['8L1', '7L5', '6L5'],\n      gyroball: ['8M', '7M', '6M'],\n      hiddenpower: ['7M', '6M'],\n      irondefense: ['8M', '8L32', '7T', '7L32', '6T', '6L32'],\n      ironhead: ['8M', '8L36', '7T', '7L42', '6T', '6L42'],\n      laserfocus: ['7T'],\n      magnetrise: ['7T', '6T'],\n      metalsound: ['8L16', '7L8', '7E', '6L8', '6E'],\n      nightslash: ['8L24', '7L35', '6L35'],\n      powertrick: ['8L40', '7L39', '6L39'],\n      protect: ['8M', '7M', '6M'],\n      psychocut: ['8M'],\n      pursuit: ['7L13', '6L13'],\n      raindance: ['8M', '7M', '6M'],\n      reflect: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      retaliate: ['8M', '8L28', '7L26', '6M', '6L26'],\n      return: ['7M', '6M'],\n      reversal: ['8M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      round: ['8M'],\n      sacredsword: ['8L48', '7L47', '6L47'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M'],\n      shadowsneak: ['8L4', '7L20', '7E', '6L20', '6E'],\n      shockwave: ['7T', '6T'],\n      slash: ['8L20', '7L29', '6L29'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      solarblade: ['8M'],\n      spite: ['7T', '6T'],\n      steelbeam: ['8T'],\n      substitute: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['8M', '8L44', '7M', '7L1', '6M', '6L1'],\n      tackle: ['8L1', '7L1', '6L1'],\n      toxic: ['7M', '6M'],\n      wideguard: ['8E', '7E', '6E']\n    }\n  ],\n  [\n    'doublade',\n    {\n      aerialace: ['8L12', '7M', '7L22', '6M', '6L22'],\n      afteryou: ['7T', '6T'],\n      attract: ['8M', '7M', '6M'],\n      autotomize: ['8L1', '7L18', '6L18'],\n      brickbreak: ['8M', '7M', '6M'],\n      brutalswing: ['8M', '7M'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      doubleteam: ['7M', '6M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      falseswipe: ['8M', '7M', '6M'],\n      flashcannon: ['8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      furycutter: ['8L1', '7L1', '6L5'],\n      gyroball: ['8M', '7M', '6M'],\n      hiddenpower: ['7M', '6M'],\n      irondefense: ['8M', '8L32', '7T', '7L32', '6T', '6L32'],\n      ironhead: ['8M', '8L38', '7T', '7L45', '6T', '6L45'],\n      laserfocus: ['7T'],\n      magnetrise: ['7T', '6T'],\n      metalsound: ['8L16', '7L8', '6L8'],\n      nightslash: ['8L24', '7L36', '6L36'],\n      powertrick: ['8L44', '7L41', '6L41'],\n      protect: ['8M', '7M', '6M'],\n      psychocut: ['8M'],\n      pursuit: ['7L13', '6L13'],\n      raindance: ['8M', '7M', '6M'],\n      reflect: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      retaliate: ['8M', '8L28', '7L26', '6M', '6L26'],\n      return: ['7M', '6M'],\n      reversal: ['8M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      round: ['8M'],\n      sacredsword: ['8L56', '7L51', '6L51'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M'],\n      shadowsneak: ['8L1', '7L20', '6L20'],\n      shockwave: ['7T', '6T'],\n      slash: ['8L20', '7L29', '6L29'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      solarblade: ['8M'],\n      spite: ['7T', '6T'],\n      steelbeam: ['8T'],\n      substitute: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['8M', '8L50', '7M', '7L1', '6M', '6L1'],\n      tackle: ['8L1', '7L1', '6L1'],\n      toxic: ['7M', '6M']\n    }\n  ],\n  [\n    'aegislash',\n    {\n      aerialace: ['8L1', '7M', '7L1', '6M', '6L1'],\n      afteryou: ['7T', '6T'],\n      airslash: ['8M'],\n      attract: ['8M', '7M', '6M'],\n      autotomize: ['8L1', '7L1', '6L1'],\n      block: ['7T', '6T'],\n      brickbreak: ['8M', '7M', '6M'],\n      brutalswing: ['8M', '7M'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      doubleteam: ['7M', '6M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      falseswipe: ['8M', '7M', '6M'],\n      flashcannon: ['8M', '7M', '6M', '6S0'],\n      frustration: ['7M', '6M'],\n      furycutter: ['8L1', '7L1', '6L1'],\n      gigaimpact: ['8M', '7M', '6M'],\n      gyroball: ['8M', '7M', '6M'],\n      headsmash: ['8L1', '7L1', '6L1'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['8M', '7M', '6M'],\n      irondefense: ['8M', '8L1', '7T', '7L1', '6T', '6L1'],\n      ironhead: ['8M', '8L1', '7T', '7L1', '6T', '6L1'],\n      kingsshield: ['8L0', '7L1', '6L1', '6S0'],\n      laserfocus: ['7T'],\n      magnetrise: ['7T', '6T'],\n      metalsound: ['8L1'],\n      nightslash: ['8L1', '7L1', '6L1'],\n      powertrick: ['8L1', '7L1', '6L1'],\n      protect: ['8M', '7M', '6M'],\n      psychocut: ['8M'],\n      pursuit: ['7L1', '6L1'],\n      raindance: ['8M', '7M', '6M'],\n      reflect: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      retaliate: ['8M', '8L1', '6M'],\n      return: ['7M', '6M'],\n      reversal: ['8M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      round: ['8M', '7M', '6M'],\n      sacredsword: ['8L1', '7L1', '6L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M', '6S0'],\n      shadowclaw: ['8M', '7M', '6M'],\n      shadowsneak: ['8L1', '7L1', '6L1'],\n      shockwave: ['7T', '6T'],\n      slash: ['8L1', '7L1', '6L1'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      solarblade: ['8M'],\n      spite: ['7T', '6T'],\n      steelbeam: ['8T'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['8M', '8L1', '7M', '7L1', '6M', '6L1'],\n      tackle: ['8L1'],\n      toxic: ['7M', '6M'],\n      wideguard: ['6S0']\n    }\n  ],\n  [\n    'spritzee',\n    {\n      afteryou: ['8E', '7T', '6T'],\n      allyswitch: ['8M', '7T'],\n      aromatherapy: ['8L12', '7L25', '6L25'],\n      attract: ['8M', '8L18', '7M', '7L29', '6M', '6L29'],\n      calmmind: ['8M', '8L33', '7M', '7L17', '6M', '6L17'],\n      captivate: ['7E', '6E'],\n      chargebeam: ['7M', '6M'],\n      charm: ['8M', '8L30', '7L35', '6L35'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      disable: ['8E', '7E', '6E'],\n      disarmingvoice: ['7L50', '6L50'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['8M', '8L9', '7L21', '6L21'],\n      dreameater: ['7M', '6M'],\n      echoedvoice: ['8L6', '7M', '7L13', '6M', '6L13'],\n      encore: ['8M'],\n      endeavor: ['7T', '6T'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M'],\n      facade: ['8M', '7M', '6M'],\n      fairywind: ['8L1', '7L1', '6L1'],\n      faketears: ['8M'],\n      flail: ['8L21', '7L38', '6L38'],\n      flash: ['6M'],\n      flashcannon: ['8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gyroball: ['8M', '7M', '6M'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      lightscreen: ['8M', '7M', '6M'],\n      magiccoat: ['7T', '6T'],\n      mistyexplosion: ['8T'],\n      mistyterrain: ['8M', '8L24', '7L42', '6L42'],\n      moonblast: ['8L36', '7L31', '6L31'],\n      nastyplot: ['8M', '7E'],\n      odorsleuth: ['7L8', '6L8'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '8L27', '7M', '7L48', '6M', '6L48'],\n      psychup: ['7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      reflect: ['8M', '7M', '6M'],\n      refresh: ['7E', '6E'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      skillswap: ['8M', '8L39', '7T', '7L44', '6T', '6L44'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      sweetkiss: ['8L3', '7L6', '6L6'],\n      sweetscent: ['8L1', '7L1', '6L1'],\n      telekinesis: ['7T'],\n      thunderbolt: ['8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      trickroom: ['8M', '7M', '6M'],\n      wish: ['8E', '7E', '6E']\n    }\n  ],\n  [\n    'aromatisse',\n    {\n      afteryou: ['7T', '6T'],\n      allyswitch: ['8M', '7T'],\n      aromatherapy: ['8L12', '7L25', '6L25'],\n      aromaticmist: ['8L1', '7L1', '6L1'],\n      attract: ['8M', '8L18', '7M', '7L29', '6M', '6L29'],\n      calmmind: ['8M', '8L33', '7M', '7L17', '6M', '6L17'],\n      chargebeam: ['7M', '6M'],\n      charm: ['8M', '8L30', '7L35', '6L35'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      disable: ['6S0'],\n      disarmingvoice: ['8L9', '7L53', '6L53'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['8M', '8L15', '7L21', '6L21'],\n      drainpunch: ['8M', '7T', '6T'],\n      dreameater: ['7M', '6M'],\n      echoedvoice: ['8L1', '7M', '7L13', '6M', '6L13'],\n      encore: ['8M'],\n      endeavor: ['7T', '6T'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M'],\n      facade: ['8M', '7M', '6M'],\n      fairywind: ['8L1', '7L1', '6L1'],\n      faketears: ['8M'],\n      flail: ['8L21', '7L38', '6L38'],\n      flash: ['6M'],\n      flashcannon: ['8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['8M', '7M', '6M'],\n      gyroball: ['8M', '7M', '6M'],\n      healbell: ['7T', '6T'],\n      healpulse: ['8L1', '7L1', '6L1', '6S0'],\n      helpinghand: ['8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['8M', '7M', '6M'],\n      lightscreen: ['8M', '7M', '6M'],\n      magiccoat: ['7T', '6T'],\n      metronome: ['8M'],\n      mistyexplosion: ['8T'],\n      mistyterrain: ['8M', '8L24', '7L42', '6L42'],\n      moonblast: ['8L36', '7L31', '6L31', '6S0'],\n      nastyplot: ['8M'],\n      odorsleuth: ['7L1', '6L8'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '8L27', '7M', '7L48', '6M', '6L48'],\n      psychup: ['8L42', '7M', '7L64', '6M', '6L64'],\n      psyshock: ['8M', '7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      reflect: ['8M', '7M', '7L57', '6M', '6L57'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      skillswap: ['8M', '8L39', '7T', '7L44', '6T', '6L44'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      sweetkiss: ['8L1', '7L1', '6L6'],\n      sweetscent: ['8L1', '7L1', '6L1'],\n      telekinesis: ['7T'],\n      thunder: ['8M', '7M', '6M'],\n      thunderbolt: ['8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      trickroom: ['8M', '7M', '6M', '6S0']\n    }\n  ],\n  [\n    'swirlix',\n    {\n      afteryou: ['8E', '7T', '7E', '6T', '6E'],\n      amnesia: ['8M'],\n      aromatherapy: ['8L9', '7L26', '6L26'],\n      attract: ['8M', '7M', '6M'],\n      bellydrum: ['7E', '6E'],\n      calmmind: ['8M', '7M', '6M'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      copycat: ['8E', '7E', '6E'],\n      cottonguard: ['8L36', '7L41', '6L41'],\n      cottonspore: ['8L24', '7L17', '6L17'],\n      covet: ['7T', '6T'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['8M', '8L12', '7L31', '6L31'],\n      dreameater: ['7M', '6M'],\n      endeavor: ['8L39', '7T', '7L21', '6T', '6L21'],\n      endure: ['8M'],\n      energyball: ['8M', '8L27', '7M', '7L36', '6M', '6L36'],\n      facade: ['8M', '7M', '6M'],\n      fairywind: ['8L6', '7L5', '6L5'],\n      faketears: ['8M', '8L15', '7L10', '6L10'],\n      flamethrower: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gastroacid: ['7T', '6T'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      lightscreen: ['8M', '7M', '7L58', '6M', '6L58'],\n      magiccoat: ['7T', '6T'],\n      mistyexplosion: ['8T'],\n      playnice: ['8L3', '7L8', '6L8'],\n      playrough: ['8M', '8L33', '7L49', '6L49'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '7M', '6M'],\n      psychup: ['7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['8M', '8L18', '7M', '7L13', '6M', '6L13'],\n      safeguard: ['8M', '7M', '7L67', '6M', '6L67'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      stickyweb: ['8E', '7E'],\n      stringshot: ['8L21'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      sweetscent: ['8L1', '7L1', '6L1'],\n      tackle: ['8L1', '7L1', '6L1'],\n      thief: ['8M', '7M', '6M'],\n      thunderbolt: ['8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      wish: ['8L30', '7L45', '6L45'],\n      yawn: ['8E', '7E', '6E']\n    }\n  ],\n  [\n    'slurpuff',\n    {\n      afteryou: ['7T', '6T'],\n      amnesia: ['8M'],\n      aromatherapy: ['8L9', '7L26', '6L26'],\n      attract: ['8M', '7M', '6M'],\n      calmmind: ['8M', '7M', '6M'],\n      charm: ['8M'],\n      confide: ['7M', '6M'],\n      cottonguard: ['8L36', '7L41', '6L41'],\n      cottonspore: ['8L24', '7L17', '6L17'],\n      covet: ['7T', '6T'],\n      dazzlinggleam: ['8M', '7M', '6M'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['8M', '8L12', '7L31', '6L31'],\n      drainpunch: ['8M', '7T', '6T'],\n      dreameater: ['7M', '6M'],\n      endeavor: ['8L39', '7T', '7L21', '6T', '6L21'],\n      endure: ['8M'],\n      energyball: ['8M', '8L27', '7M', '7L36', '6M', '6L36'],\n      facade: ['8M', '7M', '6M'],\n      fairywind: ['8L1', '7L1', '6L5'],\n      faketears: ['8M', '8L15', '7L10', '6L10'],\n      flamethrower: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      gastroacid: ['7T', '6T'],\n      gigaimpact: ['8M', '7M', '6M'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['8M', '7M', '6M'],\n      lightscreen: ['8M', '7M', '7L58', '6M', '6L58'],\n      magiccoat: ['7T', '6T'],\n      metronome: ['8M'],\n      mistyexplosion: ['8T'],\n      playnice: ['8L1', '7L1', '6L8'],\n      playrough: ['8M', '8L33', '7L49', '6L49'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '7M', '6M'],\n      psychup: ['7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['8M', '8L18', '7M', '7L13', '6M', '6L13'],\n      safeguard: ['8M', '7M', '7L67', '6M', '6L67'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      stickyweb: ['8L42'],\n      stringshot: ['8L21'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      sweetscent: ['8L1', '7L1', '6L1'],\n      tackle: ['8L1', '7L1', '6L1'],\n      thief: ['8M', '7M', '6M'],\n      thunder: ['8M'],\n      thunderbolt: ['8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      wish: ['8L30', '7L45', '6L45']\n    }\n  ],\n  [\n    'inkay',\n    {\n      acupressure: ['9E', '8E'],\n      aerialace: ['9M', '7M', '6M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M'],\n      batonpass: ['9M', '8M'],\n      bind: ['7T', '6T'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      camouflage: ['7E', '6E'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '6L1'],\n      cut: ['6M'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      destinybond: ['9E', '8E', '7E', '6E'],\n      disable: ['9E', '8E'],\n      doubleteam: ['7M', '6M'],\n      embargo: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M'],\n      faketears: ['9M', '8M'],\n      flamethrower: ['9M', '8M', '7M', '6M'],\n      flash: ['6M'],\n      flatter: ['7E', '6E'],\n      fling: ['9M', '8M', '7M', '6M'],\n      foulplay: ['9M', '9L33', '8M', '8L33', '7T', '7L8', '6T', '6L8', '6S0'],\n      frustration: ['7M', '6M'],\n      futuresight: ['9M', '8M'],\n      gravity: ['9M'],\n      guardswap: ['8M', '7E'],\n      happyhour: ['6S0'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      hypnosis: ['9L3', '8L3', '7L18', '6L18', '6S0'],\n      knockoff: ['9M', '7T', '6T'],\n      lashout: ['9M', '8T'],\n      lightscreen: ['9M', '8M', '7M', '7L31', '6M', '6L31'],\n      liquidation: ['9M', '8M'],\n      lunge: ['9M'],\n      nastyplot: ['9M', '8M'],\n      nightslash: ['9L24', '8L24', '7L46', '6L46'],\n      payback: ['9L9', '8M', '8L9', '7M', '7L27', '6M', '6L27'],\n      peck: ['9L1', '8L1', '7L1', '6L1'],\n      pluck: ['9L12', '8L12', '7L35', '6L35'],\n      powersplit: ['7E', '6E'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psybeam: ['9M', '9L15', '8L15', '7L21', '6L21'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psychocut: ['9L27', '8M', '8L27', '7L39', '6L39'],\n      psychup: ['9M', '7M', '6M'],\n      psyshock: ['9M'],\n      psywave: ['7L13', '6L13'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      reflect: ['9M', '8M', '7M', '7L4', '6M', '6L4'],\n      rest: ['9M', '8M', '7M', '6M'],\n      retaliate: ['8M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      roleplay: ['7T', '6T'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      simplebeam: ['7E', '6E'],\n      skillswap: ['9M'],\n      slash: ['9L21', '8L21', '7L43', '6L43'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      spite: ['9M', '7T', '6T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      superpower: ['9L39', '8M', '8L39', '7T', '7L48', '6T', '6L48'],\n      swagger: ['9L18', '8L18', '7M', '7L12', '6M', '6L12'],\n      swift: ['9M'],\n      switcheroo: ['9L31', '8L31', '7L23', '6L23'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      topsyturvy: ['9L36', '8L36', '7L15', '6L15', '6S0'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      trick: ['9M'],\n      trickroom: ['9M', '8M', '7M', '6M'],\n      wrap: ['9L6', '8L6']\n    }\n  ],\n  [\n    'malamar',\n    {\n      aerialace: ['9M', '7M', '6M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M'],\n      batonpass: ['9M', '8M'],\n      bind: ['7T', '6T'],\n      block: ['7T', '6T'],\n      brutalswing: ['8M', '7M'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '6L1'],\n      cut: ['6M'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      doubleteam: ['7M', '6M'],\n      embargo: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '6M', '6S0'],\n      faketears: ['9M', '8M'],\n      flamethrower: ['9M', '8M', '7M', '6M'],\n      flash: ['6M'],\n      fling: ['9M', '8M', '7M', '6M'],\n      foulplay: ['9M', '9L37', '8M', '8L37', '7T', '7L8', '6T', '6L8'],\n      frustration: ['7M', '6M'],\n      futuresight: ['9M', '8M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      gravity: ['9M'],\n      guardswap: ['8M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      hypnosis: ['9L1', '8L1', '7L18', '6L18'],\n      knockoff: ['9M', '7T', '6T', '6S0'],\n      lashout: ['9M', '8T'],\n      lightscreen: ['9M', '8M', '7M', '7L31', '6M', '6L31'],\n      liquidation: ['9M', '8M'],\n      lunge: ['9M'],\n      nastyplot: ['9M', '8M'],\n      nightslash: ['9L24', '8L24', '7L46', '6L46'],\n      payback: ['9L9', '8M', '8L9', '7M', '7L27', '6M', '6L27'],\n      peck: ['9L1', '8L1', '7L1', '6L1'],\n      pluck: ['9L12', '8L12', '7L35', '6L35'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psybeam: ['9M', '9L15', '8L15', '7L21', '6L21'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psychicnoise: ['9M'],\n      psychocut: ['9L27', '8M', '8L27', '7L39', '6L39'],\n      psychup: ['9M', '7M', '6M'],\n      psyshock: ['9M', '8M', '7M', '6M'],\n      psywave: ['7L13', '6L13'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      reflect: ['9M', '8M', '7M', '7L1', '6M', '6L4'],\n      rest: ['9M', '8M', '7M', '6M'],\n      retaliate: ['8M', '6M'],\n      return: ['7M', '6M'],\n      reversal: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      rockslide: ['9M', '8M', '7M', '6M', '6S0'],\n      roleplay: ['7T', '6T'],\n      round: ['8M', '7M', '6M'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M'],\n      signalbeam: ['7T', '6T'],\n      skillswap: ['9M'],\n      slash: ['9L21', '8L21', '7L43', '6L43'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      spite: ['9M', '7T', '6T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      superpower: ['9L47', '8M', '8L47', '7T', '7L48', '6T', '6L1', '6S0'],\n      swagger: ['9L18', '8L18', '7M', '7L12', '6M', '6L12'],\n      swift: ['9M'],\n      switcheroo: ['9L33', '8L33', '7L23', '6L23'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      topsyturvy: ['9L42', '8L42', '7L15', '6L15'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M', '8M', '7M', '6M'],\n      wrap: ['9L1', '8L1']\n    }\n  ],\n  [\n    'binacle',\n    {\n      aerialace: ['7M', '6M'],\n      ancientpower: ['8L20', '7L28', '6L28'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M'],\n      beatup: ['8M'],\n      blizzard: ['8M', '7M', '6M'],\n      brickbreak: ['8M', '7M', '6M'],\n      bulldoze: ['8M', '7M', '6M'],\n      clamp: ['7L20', '6L20'],\n      confide: ['7M', '6M'],\n      crosschop: ['8L44', '7L49', '6L49'],\n      cut: ['6M'],\n      dig: ['8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dualchop: ['7T', '6T'],\n      earthquake: ['8M', '7M', '6M'],\n      embargo: ['7M', '6M'],\n      endeavor: ['7T', '6T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      falseswipe: ['8M', '7M', '6M'],\n      fling: ['8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      furycutter: ['8L12', '7L37', '6L37'],\n      furyswipes: ['8L16', '7L10', '6L10'],\n      grassknot: ['8M', '7M', '6M'],\n      helpinghand: ['8M', '7T', '7E', '6T', '6E'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['8L32', '7L32', '6M', '6L32'],\n      icebeam: ['8M', '7M', '6M'],\n      icywind: ['8M', '7T', '6T'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '7T', '6T'],\n      liquidation: ['8M', '7T'],\n      mudshot: ['8M'],\n      mudslap: ['8L1', '7L18', '6L18'],\n      naturepower: ['7M', '6M'],\n      nightslash: ['8E', '7L41', '6L41'],\n      payback: ['8M', '7M', '6M'],\n      poisonjab: ['8M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      razorshell: ['8M', '8L36', '7L45', '6L45'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockblast: ['8M'],\n      rockpolish: ['8L24', '7M', '7L24', '6M', '6L24'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      sandattack: ['8E', '7L1', '6L1'],\n      sandstorm: ['8M', '7M', '6M'],\n      scald: ['8M', '7M', '6M'],\n      scratch: ['8L1', '7L1', '6L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M'],\n      shellsmash: ['8L40', '7L1', '6L1'],\n      slash: ['8L28', '7L13', '6L13'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      sludgewave: ['8M', '7M', '6M'],\n      smackdown: ['7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      stealthrock: ['8M', '7T', '6T'],\n      stoneedge: ['8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['8M', '7M', '6M'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      switcheroo: ['8E', '7E', '6E'],\n      swordsdance: ['8M', '7M', '6M'],\n      taunt: ['8M', '7M', '6M'],\n      thief: ['8M', '7M', '6M'],\n      tickle: ['7E', '6E'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uproar: ['8M'],\n      watergun: ['8L8', '7L4', '6L4'],\n      waterpulse: ['7T', '6T'],\n      watersport: ['7E', '6E'],\n      withdraw: ['8L4', '7L7', '6L7'],\n      xscissor: ['8M', '7M', '6M']\n    }\n  ],\n  [\n    'barbaracle',\n    {\n      aerialace: ['7M', '6M'],\n      ancientpower: ['8L20', '7L28', '6L28'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M'],\n      beatup: ['8M'],\n      blizzard: ['8M', '7M', '6M'],\n      brickbreak: ['8M', '7M', '6M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['8M', '7M', '6M'],\n      bulldoze: ['8M', '7M', '6M'],\n      clamp: ['7L20', '6L20'],\n      confide: ['7M', '6M'],\n      crosschop: ['8L48', '7L55', '6L55'],\n      cut: ['6M'],\n      dig: ['8M', '6M'],\n      dive: ['8M'],\n      doubleteam: ['7M', '6M'],\n      dragonclaw: ['8M', '7M', '6M'],\n      dualchop: ['7T', '6T'],\n      earthpower: ['8M', '7T', '6T'],\n      earthquake: ['8M', '7M', '6M'],\n      embargo: ['7M', '6M'],\n      endeavor: ['7T', '6T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      falseswipe: ['8M', '7M', '6M'],\n      fling: ['8M', '7M', '6M'],\n      focusblast: ['8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      furycutter: ['8L12', '7L37', '6L37'],\n      furyswipes: ['8L16', '7L10', '6L10'],\n      gigaimpact: ['8M', '7M', '6M'],\n      grassknot: ['8M', '7M', '6M'],\n      helpinghand: ['8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['8L32', '7L32', '6M', '6L32'],\n      hyperbeam: ['8M', '7M', '6M'],\n      icebeam: ['8M', '7M', '6M'],\n      icywind: ['8M', '7T', '6T'],\n      infestation: ['7M', '6M'],\n      irondefense: ['8M', '7T', '6T'],\n      laserfocus: ['7T'],\n      liquidation: ['8M', '7T'],\n      lowkick: ['8M', '7T', '6T'],\n      meteorbeam: ['8T'],\n      muddywater: ['8M'],\n      mudshot: ['8M'],\n      mudslap: ['8L1', '7L18', '6L18'],\n      naturepower: ['7M', '6M'],\n      nightslash: ['7L44', '6L44'],\n      payback: ['8M', '7M', '6M'],\n      poisonjab: ['8M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['8M', '7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      razorshell: ['8M', '8L36', '7L48', '6L48'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockblast: ['8M'],\n      rockpolish: ['8L24', '7M', '7L24', '6M', '6L24'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      sandattack: ['7L1', '6L1'],\n      sandstorm: ['8M', '7M', '6M'],\n      scald: ['8M', '7M', '6M'],\n      scratch: ['8L1', '7L1', '6L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      shadowclaw: ['8M', '7M', '6M'],\n      shellsmash: ['8L42', '7L1', '6L1'],\n      skullbash: ['8L1', '7L1', '6L1'],\n      slash: ['8L28', '7L13', '6L13'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      sludgewave: ['8M', '7M', '6M'],\n      smackdown: ['7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      stealthrock: ['8M', '7T', '6T'],\n      stoneedge: ['8M', '8L54', '7M', '7L1', '6M', '6L1'],\n      strength: ['6M'],\n      substitute: ['8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['8M', '7M', '6M'],\n      taunt: ['8M', '7M', '6M'],\n      thief: ['8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uproar: ['8M'],\n      watergun: ['8L1', '7L1', '6L4'],\n      waterpulse: ['7T', '6T'],\n      whirlpool: ['8M'],\n      withdraw: ['8L1', '7L7', '6L7'],\n      xscissor: ['8M', '7M', '6M']\n    }\n  ],\n  [\n    'skrelp',\n    {\n      acid: ['9L5', '8L5', '7L15', '6L15'],\n      acidarmor: ['9E', '8E', '7E', '6E'],\n      acidspray: ['9M'],\n      aquatail: ['9L45', '8L45', '7T', '7L35', '6T', '6L35'],\n      attract: ['8M', '7M', '6M'],\n      bounce: ['8M', '7T', '6T'],\n      bubble: ['7L12', '6L12'],\n      camouflage: ['7L19', '6L19'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      dive: ['8M', '6M'],\n      doubleteam: ['9L20', '8L20', '7M', '7L28', '6M', '6L28'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40', '7T', '7L49', '6T', '6L49'],\n      dragontail: ['9M', '9E', '8E'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      feintattack: ['7L5', '6L5'],\n      flipturn: ['9M', '8T'],\n      frustration: ['7M', '6M'],\n      gunkshot: ['9M', '8M', '7T', '6T'],\n      hail: ['8M', '7M', '6M'],\n      haze: ['9M', '9E', '8E', '7E', '6E'],\n      hiddenpower: ['7M', '6M'],\n      hydropump: ['9M', '9L55', '8M', '8L55', '7L42', '6L42'],\n      icywind: ['9M', '8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      liquidation: ['9M'],\n      muddywater: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      outrage: ['9M', '8M', '7T', '6T'],\n      playrough: ['9M', '8M', '7E', '6E'],\n      poisontail: ['9M', '9L25', '8L25', '7L23', '6L23'],\n      protect: ['9M', '8M', '7M', '6M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      scald: ['8M', '7M', '6M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      shockwave: ['7T', '6T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['9M', '9L50', '8M', '8L50', '7M', '7L38', '6M', '6L38'],\n      sludgewave: ['9M', '8M', '7M', '6M'],\n      smokescreen: ['9L1', '8L1', '7L1', '6L1'],\n      snore: ['8M', '7T', '6T'],\n      snowscape: ['9M'],\n      spite: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      surf: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      tailwhip: ['9L15', '8L15', '7L9', '6L9'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      toxic: ['9M', '9L35', '8L35', '7M', '7L32', '6M', '6L32'],\n      toxicspikes: ['9M', '8M', '7E', '6E'],\n      twister: ['9E', '8E'],\n      venomdrench: ['8M', '7E', '6E'],\n      venoshock: ['9M', '8M', '7M', '6M'],\n      waterfall: ['9M', '8M', '7M', '6M'],\n      watergun: ['9L10', '8L10', '7L1', '6L1'],\n      waterpulse: ['9M', '9L30', '8L30', '7T', '7L25', '6T', '6L25'],\n      whirlpool: ['9M']\n    }\n  ],\n  [\n    'dragalge',\n    {\n      acid: ['9L1', '8L1', '7L15', '6L15'],\n      acidspray: ['9M'],\n      aquatail: ['9L45', '8L45', '7T', '7L35', '6T', '6L35'],\n      attract: ['8M', '7M', '6M'],\n      bounce: ['8M', '7T', '6T'],\n      bubble: ['7L12', '6L12'],\n      camouflage: ['7L19', '6L19'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      dive: ['8M', '6M'],\n      doubleteam: ['9L20', '8L20', '7M', '7L28', '6M', '6L28'],\n      dracometeor: ['9M', '8T', '7T', '6T'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40', '7T', '7L53', '6T', '6L53'],\n      dragontail: ['7M', '7L1', '6M', '6L1'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      feintattack: ['7L1', '6L5'],\n      flipturn: ['9M', '8T'],\n      focusblast: ['9M', '8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      gunkshot: ['9M', '8M', '7T', '6T'],\n      hail: ['8M', '7M', '6M'],\n      haze: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      hydropump: ['9M', '9L59', '8M', '8L59', '7L42', '6L42'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      icywind: ['9M', '8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      liquidation: ['9M'],\n      muddywater: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      outrage: ['9M', '9L66', '8M', '8L66', '7T', '6T'],\n      playrough: ['9M', '8M'],\n      poisontail: ['9M', '9L25', '8L25', '7L23', '6L23'],\n      protect: ['9M', '8M', '7M', '6M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      scald: ['9M', '8M', '7M', '6M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      shockwave: ['7T', '6T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['9M', '9L52', '8M', '8L52', '7M', '7L38', '6M', '6L38'],\n      sludgewave: ['9M', '8M', '7M', '6M'],\n      smokescreen: ['9L1', '8L1', '7L1', '6L1'],\n      snore: ['8M', '7T', '6T'],\n      snowscape: ['9M'],\n      spite: ['9M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      surf: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      tailwhip: ['9L15', '8L15', '7L9', '6L9'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      toxic: ['9M', '9L35', '8L35', '7M', '7L32', '6M', '6L32'],\n      toxicspikes: ['9M', '8M'],\n      twister: ['7L1', '6L1'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M', '6M'],\n      waterfall: ['9M', '8M', '7M', '6M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1'],\n      waterpulse: ['9M', '9L30', '8L30', '7T', '7L25', '6T', '6L25'],\n      whirlpool: ['9M']\n    }\n  ],\n  [\n    'clauncher',\n    {\n      aquajet: ['9L15', '8L15', '7L43', '7E', '6L43', '6E'],\n      aquatail: ['9E', '8E', '7T', '6T'],\n      attract: ['8M', '7M', '6M'],\n      aurasphere: ['9M', '9L40', '8M', '8L40'],\n      blizzard: ['9M'],\n      bounce: ['9L45', '8M', '8L45', '7T', '6T'],\n      bubble: ['7L12', '6L12'],\n      bubblebeam: ['9E', '8E', '7L20', '6L20'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crabhammer: ['9L55', '8L55', '7L30', '7E', '6L30', '6E'],\n      cut: ['6M'],\n      darkpulse: ['9M'],\n      dive: ['8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dragonpulse: ['9M', '8M', '7T', '6T'],\n      endure: ['9M', '8M', '7E', '6E'],\n      entrainment: ['9E', '8E', '7E', '6E'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flail: ['9L10', '8L10', '7L16', '6L16'],\n      flashcannon: ['9M', '8M', '7M', '6M'],\n      flipturn: ['9M', '8T'],\n      frustration: ['7M', '6M'],\n      helpinghand: ['9M', '8M', '7T', '7E', '6T', '6E'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['9L25', '8L25'],\n      hydropump: ['9M'],\n      icebeam: ['9M', '8M', '7M', '6M'],\n      icywind: ['9M', '8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      liquidation: ['9M'],\n      muddywater: ['9M', '9L50', '8M', '8L50', '7L48', '6L48'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '6M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      scald: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      sludgewave: ['9M', '8M', '7M', '6M'],\n      smackdown: ['9M', '9L20', '8L20', '7M', '7L39', '6M', '6L39'],\n      snore: ['8M', '7T', '6T'],\n      splash: ['9L1', '8L1', '7L1', '6L1'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      surf: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['9M', '9L35', '8M', '8L35', '7M', '7L25', '6M', '6L25'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thief: ['9M'],\n      toxic: ['7M', '6M'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      venoshock: ['9M', '8M', '7M', '6M'],\n      visegrip: ['9L5', '8L5', '7L9', '6L9'],\n      waterfall: ['9M', '8M', '7M', '6M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1'],\n      waterpulse: ['9M', '9L30', '8L30', '7T', '7L34', '6T', '6L34'],\n      watersport: ['7L7', '6L7'],\n      weatherball: ['9M']\n    }\n  ],\n  [\n    'clawitzer',\n    {\n      aquajet: ['9L15', '8L15', '7L49', '6L47'],\n      aquatail: ['7T', '6T'],\n      attract: ['8M', '7M', '6M'],\n      aurasphere: ['9M', '9L42', '8M', '8L42', '7L1', '6L1'],\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      bounce: ['9L49', '8M', '8L49', '7T', '6T'],\n      bubble: ['7L12', '6L12'],\n      bubblebeam: ['7L20', '6L20'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crabhammer: ['9L63', '8L63', '7L30', '6L30'],\n      cut: ['6M'],\n      darkpulse: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L1'],\n      dive: ['8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dragonpulse: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flail: ['9L1', '8L1', '7L16', '6L16'],\n      flashcannon: ['9M', '8M', '7M', '6M'],\n      flipturn: ['9M', '8T'],\n      focusblast: ['9M', '8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      healpulse: ['9L1', '8L1', '7L1', '6L1'],\n      helpinghand: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['9L25', '8L25'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      icebeam: ['9M', '8M', '7M', '6M'],\n      icywind: ['9M', '8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      laserfocus: ['7T'],\n      liquidation: ['9M', '8M', '7T'],\n      muddywater: ['9M', '9L56', '8M', '8L56', '7L57', '6L53'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '6M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      scald: ['8M', '7M', '6M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['9M', '8M', '7M', '6M'],\n      sludgewave: ['9M', '8M', '7M', '6M'],\n      smackdown: ['9M', '9L20', '8L20', '7M', '7L42', '6M', '6L42'],\n      snore: ['8M', '7T', '6T'],\n      splash: ['9L1', '8L1', '7L1', '6L1'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      surf: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swordsdance: ['9M', '9L35', '8M', '8L35', '7M', '7L25', '6M', '6L25'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thief: ['9M'],\n      toxic: ['7M', '6M'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      venoshock: ['9M', '8M', '7M', '6M'],\n      visegrip: ['9L1', '8L1', '7L1', '6L9'],\n      waterfall: ['9M', '8M', '7M', '6M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1'],\n      waterpulse: ['9M', '9L30', '8L30', '7T', '7L34', '6T', '6L34'],\n      watersport: ['7L1', '6L7'],\n      weatherball: ['9M']\n    }\n  ],\n  [\n    'helioptile',\n    {\n      agility: ['8M', '7E', '6E'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M'],\n      bulldoze: ['8M', '8L20', '7M', '7L35', '6M', '6L35'],\n      camouflage: ['7E', '6E'],\n      charge: ['8L16', '7L11', '6L11'],\n      chargebeam: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      darkpulse: ['8M', '7M', '6M'],\n      dig: ['8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dragonrush: ['8E'],\n      dragontail: ['8E', '7M', '6M'],\n      electricterrain: ['8M', '7E', '6E'],\n      electrify: ['8L40', '7L45', '6L45'],\n      electroball: ['8M'],\n      electroweb: ['8M', '7T', '6T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      frustration: ['7M', '6M'],\n      glare: ['8E', '7E', '6E'],\n      grassknot: ['8M', '7M', '6M'],\n      hiddenpower: ['7M', '6M'],\n      irontail: ['8M', '7T', '6T'],\n      lightscreen: ['8M', '7M', '6M'],\n      lowsweep: ['8M', '7M', '6M'],\n      magnetrise: ['7T', '6T'],\n      mudslap: ['8L1', '7L13', '6L13'],\n      paraboliccharge: ['8L28', '7L25', '6L25'],\n      pound: ['8L4', '7L1', '6L1'],\n      protect: ['8M', '7M', '6M'],\n      psychup: ['7M', '6M'],\n      quickattack: ['8L12', '7L17', '6L17'],\n      raindance: ['8M', '7M', '6M'],\n      razorwind: ['7L22', '6L22'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      risingvoltage: ['8T'],\n      rockslide: ['8M', '7M', '6M'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      sandstorm: ['8M', '7M', '6M'],\n      scaleshot: ['8T'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      substitute: ['8M', '7M', '6M'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['8M'],\n      tailwhip: ['8L1', '7L1', '6L1'],\n      thunder: ['8M', '8L44', '7M', '6M'],\n      thunderbolt: ['8M', '8L36', '7M', '7L49', '6M', '6L49'],\n      thundershock: ['8L8', '7L6', '6L6'],\n      thunderwave: ['8M', '8L32', '7M', '7L31', '6M', '6L31'],\n      toxic: ['7M', '6M'],\n      uturn: ['8M', '7M', '6M'],\n      voltswitch: ['8M', '8L24', '7M', '7L40', '6M', '6L40'],\n      wildcharge: ['8M', '7M', '6M']\n    }\n  ],\n  [\n    'heliolisk',\n    {\n      agility: ['8M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M'],\n      breakingswipe: ['8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '8L1', '7M', '6M'],\n      charge: ['8L1', '7L1', '6L1'],\n      chargebeam: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      darkpulse: ['8M', '7M', '6M'],\n      dig: ['8M', '6M'],\n      discharge: ['8L1'],\n      doubleteam: ['7M', '6M'],\n      dragonpulse: ['8M', '7T', '6T'],\n      dragontail: ['7M', '6M'],\n      eerieimpulse: ['8M', '8L1', '7L1', '6L1'],\n      electricterrain: ['8M'],\n      electrify: ['8L1', '7L1', '6L1'],\n      electroball: ['8M'],\n      electroweb: ['8M', '7T', '6T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      firepunch: ['8M', '7T', '6T'],\n      flash: ['6M'],\n      focusblast: ['8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['8M', '7M', '6M'],\n      grassknot: ['8M', '7M', '6M'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['8M', '7M', '6M'],\n      hypervoice: ['8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      lightscreen: ['8M', '7M', '6M'],\n      lowkick: ['8M', '7T', '6T'],\n      lowsweep: ['8M', '7M', '6M'],\n      magnetrise: ['7T', '6T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudslap: ['8L1'],\n      paraboliccharge: ['8L1', '7L1', '6L1'],\n      pound: ['8L1'],\n      protect: ['8M', '7M', '6M'],\n      psychup: ['7M', '6M'],\n      quickattack: ['8L1', '7L1', '6L1'],\n      raindance: ['8M', '7M', '6M'],\n      razorwind: ['7L1', '6L1'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      risingvoltage: ['8T'],\n      rockslide: ['8M', '7M', '6M'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      sandstorm: ['8M', '7M', '6M'],\n      scaleshot: ['8T'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      solarbeam: ['8M'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['8M'],\n      tailwhip: ['8L1'],\n      thunder: ['8M', '8L1', '7M', '7L1', '6M', '6L1'],\n      thunderbolt: ['8M', '8L1', '7M', '6M'],\n      thunderpunch: ['8M', '7T', '6T'],\n      thundershock: ['8L1'],\n      thunderwave: ['8M', '8L1', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      uturn: ['8M', '7M', '6M'],\n      voltswitch: ['8M', '8L1', '7M', '6M'],\n      weatherball: ['8M'],\n      wildcharge: ['8M', '7M', '6M']\n    }\n  ],\n  [\n    'tyrunt',\n    {\n      aerialace: ['7M', '6M'],\n      ancientpower: ['8L8', '7L26', '6L26'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M'],\n      bide: ['7L12', '6L12'],\n      bite: ['8L16', '7L17', '6L17'],\n      block: ['7T', '6T'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M', '7M', '6M'],\n      bulldoze: ['8M', '7M', '6M'],\n      charm: ['8M', '8L12', '7L20', '6L20'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L32', '7L34', '6L34'],\n      curse: ['8E', '7E', '6E'],\n      darkpulse: ['8M', '7M', '6M'],\n      dig: ['8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dracometeor: ['8T', '7T', '6T'],\n      dragonclaw: ['8M', '8L36', '7M', '7L37', '6M', '6L37'],\n      dragondance: ['8M', '7E', '6E'],\n      dragonpulse: ['8M', '7T', '6T'],\n      dragontail: ['8L20', '7M', '7L30', '6M', '6L30'],\n      earthpower: ['8M', '7T', '6T'],\n      earthquake: ['8M', '8L44', '7M', '7L44', '6M', '6L44'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      firefang: ['8M', '7E', '6E'],\n      frustration: ['7M', '6M'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['6M'],\n      horndrill: ['8L48', '7L49', '6L49'],\n      hypervoice: ['8M', '7T', '6T'],\n      icefang: ['8M', '7E', '6E'],\n      irondefense: ['8M', '7T', '6T'],\n      ironhead: ['8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      lashout: ['8T'],\n      meteorbeam: ['8T'],\n      outrage: ['8M', '7T', '6T'],\n      playrough: ['8M'],\n      poisonfang: ['8E', '7E', '6E'],\n      protect: ['8M', '7M', '6M'],\n      psychicfangs: ['8M'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roar: ['8L4', '7M', '7L6', '6M', '6L6', '6S0'],\n      rockblast: ['8M'],\n      rockpolish: ['8E', '7M', '7E', '6M', '6E'],\n      rockslide: ['8M', '8L28', '7M', '6M'],\n      rocksmash: ['6M'],\n      rockthrow: ['8E'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      sandstorm: ['8M', '7M', '6M'],\n      scaleshot: ['8T'],\n      scaryface: ['8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      stealthrock: ['8M', '7T', '7L15', '6T', '6L15'],\n      stomp: ['8L24', '7L10', '6L10', '6S0'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      swagger: ['7M', '6M'],\n      tackle: ['8L1', '7L1', '6L1', '6S0'],\n      tailwhip: ['8L1', '7L1', '6L1', '6S0'],\n      thrash: ['8L40', '7L40', '6L40'],\n      thunderfang: ['8M', '7E', '6E'],\n      toxic: ['7M', '6M'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'tyrantrum',\n    {\n      aerialace: ['7M', '6M'],\n      ancientpower: ['8L1', '7L26', '6L26'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M'],\n      bide: ['7L12', '6L12'],\n      bite: ['8L16', '7L17', '6L17'],\n      block: ['7T', '6T'],\n      bodyslam: ['8M'],\n      breakingswipe: ['8M'],\n      brickbreak: ['8M', '7M', '6M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M', '6M'],\n      charm: ['8M', '8L12', '7L20', '6L20'],\n      closecombat: ['8M'],\n      confide: ['7M', '6M'],\n      crunch: ['8M', '8L32', '7L34', '6L34'],\n      darkpulse: ['8M', '7M', '6M'],\n      dig: ['8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dracometeor: ['8T', '7T', '6T'],\n      dragonclaw: ['8M', '8L36', '7M', '7L37', '6M', '6L37'],\n      dragondance: ['8M'],\n      dragonpulse: ['8M', '7T', '6T'],\n      dragontail: ['8L20', '7M', '7L30', '6M', '6L30'],\n      earthpower: ['8M', '7T', '6T'],\n      earthquake: ['8M', '8L48', '7M', '7L47', '6M', '6L47'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      firefang: ['8M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['8M', '8L60', '7M', '7L68', '6M', '6L75'],\n      headsmash: ['8L66', '7L1', '6L1'],\n      hiddenpower: ['7M', '6M'],\n      highhorsepower: ['8M'],\n      honeclaws: ['6M'],\n      horndrill: ['8L54', '7L53', '6L53'],\n      hyperbeam: ['8M', '7M', '6M'],\n      hypervoice: ['8M', '7T', '6T'],\n      icefang: ['8M'],\n      irondefense: ['8M', '7T', '6T'],\n      ironhead: ['8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      lashout: ['8T'],\n      meteorbeam: ['8T'],\n      outrage: ['8M', '7T', '6T'],\n      playrough: ['8M'],\n      protect: ['8M', '7M', '6M'],\n      psychicfangs: ['8M'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roar: ['8L1', '7M', '7L1', '6M', '6L6'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M'],\n      rockslide: ['8M', '8L28', '7M', '7L1', '6M', '6L68'],\n      rocksmash: ['6M'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      sandstorm: ['8M', '7M', '6M'],\n      scaleshot: ['8T'],\n      scaryface: ['8M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      stealthrock: ['8M', '7T', '7L15', '6T', '6L15'],\n      stomp: ['8L24', '7L1', '6L10'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      swagger: ['7M', '6M'],\n      tackle: ['8L1', '7L1', '6L1'],\n      tailwhip: ['8L1', '7L1', '6L1'],\n      thrash: ['8L42', '7L42', '6L42'],\n      thunderfang: ['8M'],\n      toxic: ['7M', '6M'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'amaura',\n    {\n      ancientpower: ['8L8', '7L26', '6L26'],\n      aquatail: ['7T', '6T'],\n      attract: ['8M', '7M', '6M'],\n      aurorabeam: ['8L24', '7L20', '6L20'],\n      auroraveil: ['8E'],\n      avalanche: ['8M', '7L34', '6L34'],\n      barrier: ['7E', '6E'],\n      blizzard: ['8M', '8L52', '7M', '7L65', '6M', '6L65'],\n      bodyslam: ['8M'],\n      bulldoze: ['8M', '7M', '6M'],\n      calmmind: ['8M', '7M', '6M'],\n      chargebeam: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      darkpulse: ['8M', '7M', '6M'],\n      discharge: ['8E', '7E', '6E'],\n      doubleteam: ['7M', '6M'],\n      dragontail: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      earthpower: ['8M', '7T', '6T'],\n      echoedvoice: ['7M', '6M'],\n      encore: ['8M', '8L4', '7L44', '6L44'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      flashcannon: ['8M', '7M', '6M'],\n      freezedry: ['8L36'],\n      frostbreath: ['7M', '6M'],\n      frustration: ['7M', '6M'],\n      growl: ['8L1', '7L1', '6L1', '6S0'],\n      hail: ['8M', '8L48', '7M', '7L38', '6M', '6L38'],\n      haze: ['8E', '7E', '6E'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['8M', '8L56', '7M', '7L57', '6M', '6L57'],\n      hypervoice: ['8M', '7T', '6T'],\n      icebeam: ['8M', '8L40', '7M', '7L50', '6M', '6L50'],\n      icywind: ['8M', '8L12', '7T', '7L13', '6T', '6L13'],\n      irondefense: ['8M', '7T', '6T'],\n      ironhead: ['8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      lightscreen: ['8M', '8L44', '7M', '7L47', '6M', '6L47'],\n      magnetrise: ['7T', '7E', '6T', '6E'],\n      meteorbeam: ['8T'],\n      mirrorcoat: ['8E', '7E', '6E'],\n      mist: ['8L20', '7L18', '6L18'],\n      mudshot: ['8M'],\n      naturepower: ['8L32', '7M', '7L41', '6M', '6L41'],\n      outrage: ['8M', '7T', '6T'],\n      powdersnow: ['8L1', '7L1', '6L1', '6S0'],\n      protect: ['8M', '7M', '6M'],\n      psychup: ['7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      reflect: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roar: ['7M', '6M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rockthrow: ['8E', '7L10', '6L10', '6S0'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '8L16', '7M', '7L30', '6M', '6L30'],\n      safeguard: ['8M', '7M', '6M'],\n      sandstorm: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      stealthrock: ['8M', '7T', '6T'],\n      stoneedge: ['8M', '7M', '6M'],\n      substitute: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      takedown: ['8E', '7L15', '6L15'],\n      thunderbolt: ['8M', '7M', '6M'],\n      thunderwave: ['8M', '8L28', '7M', '7L5', '6M', '6L5', '6S0'],\n      toxic: ['7M', '6M'],\n      waterpulse: ['7T', '6T'],\n      weatherball: ['8M'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'aurorus',\n    {\n      ancientpower: ['8L1', '7L26', '6L26'],\n      aquatail: ['7T', '6T'],\n      attract: ['8M', '7M', '6M'],\n      aurorabeam: ['8L24', '7L20', '6L20'],\n      avalanche: ['8M', '7L34', '6L34'],\n      blizzard: ['8M', '8L60', '7M', '7L74', '6M', '6L74'],\n      bodyslam: ['8M'],\n      bulldoze: ['8M', '7M', '6M'],\n      calmmind: ['8M', '7M', '6M'],\n      chargebeam: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      darkpulse: ['8M', '7M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dragontail: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      earthpower: ['8M', '7T', '6T'],\n      earthquake: ['8M', '7M', '6M'],\n      echoedvoice: ['7M', '6M'],\n      encore: ['8M', '8L1', '7L46', '6L46'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      flashcannon: ['8M', '7M', '6M'],\n      freezedry: ['8L36', '7L1', '6L1'],\n      frostbreath: ['7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['8M', '7M', '6M'],\n      growl: ['8L1', '7L1', '6L1'],\n      hail: ['8M', '8L54', '7M', '7L38', '6M', '6L38'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['8M', '8L66', '7M', '7L63', '6M', '6L63'],\n      hypervoice: ['8M', '7T', '6T'],\n      icebeam: ['8M', '8L42', '7M', '7L56', '6M', '6L56'],\n      iciclespear: ['8M'],\n      icywind: ['8M', '8L12', '7T', '7L13', '6T', '6L13'],\n      irondefense: ['8M', '7T', '6T'],\n      ironhead: ['8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      lightscreen: ['8M', '8L48', '7M', '7L50', '6M', '6L50'],\n      magnetrise: ['7T', '6T'],\n      meteorbeam: ['8T'],\n      mist: ['8L20', '7L18', '6L18'],\n      mudshot: ['8M'],\n      naturepower: ['8L32', '7M', '7L43', '6M', '6L43'],\n      outrage: ['8M', '7T', '6T'],\n      powdersnow: ['8L1', '7L1', '6L1'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '7M', '6M'],\n      psychup: ['7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      reflect: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roar: ['7M', '6M'],\n      rockblast: ['8M'],\n      rockpolish: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rockthrow: ['7L1', '6L10'],\n      rocktomb: ['8M', '7M', '6M'],\n      round: ['8M', '8L16', '7M', '7L30', '6M', '6L30'],\n      safeguard: ['8M', '7M', '6M'],\n      sandstorm: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      stealthrock: ['8M', '7T', '6T'],\n      stoneedge: ['8M', '7M', '6M'],\n      substitute: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      takedown: ['7L15', '6L15'],\n      thunder: ['8M', '7M', '6M'],\n      thunderbolt: ['8M', '7M', '6M'],\n      thunderwave: ['8M', '8L28', '7M', '7L1', '6M', '6L5'],\n      toxic: ['7M', '6M'],\n      waterpulse: ['7T', '6T'],\n      weatherball: ['8M'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'sylveon',\n    {\n      alluringvoice: ['9M'],\n      attract: ['8M', '7M', '6M'],\n      babydolleyes: ['9L15', '8L15', '7L9', '6S1'],\n      batonpass: ['9M', '9L1', '8M', '8L1'],\n      bite: ['9L1', '8L1'],\n      bodyslam: ['9M', '8M'],\n      calmmind: ['9M', '8M', '7M', '7S2', '6M'],\n      celebrate: ['6S0'],\n      charm: ['9M', '9L1', '8M', '8L1'],\n      confide: ['7M', '6M'],\n      copycat: ['9L1', '8L1'],\n      covet: ['9L1', '8L1', '7T', '6T'],\n      curse: ['9M'],\n      cut: ['6M'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      dig: ['9M', '8M', '6M'],\n      disarmingvoice: ['9M', '9L0', '8L0', '7L1', '6L1', '6S1'],\n      doubleedge: ['9M', '9L1', '8L1'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M', '9L30', '8M', '8L30', '7L20', '7S2', '6L20', '6S1'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      fairywind: ['7L1', '6L9', '6S0'],\n      faketears: ['9M', '8M'],\n      flash: ['6M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      growl: ['9L1', '8L1'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '6T', '6L1', '6S0'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '9S3', '8M', '7M', '7S2', '6M'],\n      hypervoice: ['9M', '9S3', '8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      laserfocus: ['7T'],\n      lastresort: ['9L55', '8L55', '7T', '7L41', '6T', '6L41'],\n      lightscreen: ['9M', '9L25', '8M', '8L25', '7M', '7L33', '6M', '6L33'],\n      magicalleaf: ['9M', '8M'],\n      magiccoat: ['7T', '6T'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '9L35', '8M', '8L35', '7L29', '6L29'],\n      moonblast: ['9L50', '8L50', '7L37', '6L37'],\n      mudslap: ['9M'],\n      mysticalfire: ['8M'],\n      payday: ['8M'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psychic: ['9M'],\n      psychup: ['9M', '9L45', '8L45', '7M', '7L45', '6M', '6L45'],\n      psyshock: ['9M', '8M', '7M', '7S2', '6M'],\n      quickattack: ['9L10', '8L10', '7L13', '6L13', '6S1'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      reflect: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      retaliate: ['8M', '6M'],\n      return: ['7M', '6M'],\n      roar: ['9M'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      sandattack: ['9L5', '8L5', '7L5', '6L5', '6S0'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      skillswap: ['9M', '9L40', '8M', '8L40', '7T', '7L25', '6T', '6L25'],\n      sleeptalk: ['9M', '9S3', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '9L20', '8M', '8L20', '7L17', '6L17'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      tailwhip: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M', '9L1', '8L1'],\n      telekinesis: ['7T'],\n      terablast: ['9M', '9S3'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      weatherball: ['9M', '8M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'hawlucha',\n    {\n      acrobatics: ['9M', '8M', '7M', '6M'],\n      aerialace: ['9M', '9L12', '8L12', '7M', '7L16', '6M', '6L16'],\n      agility: ['9M', '8M', '7E', '6E'],\n      allyswitch: ['8M', '7T', '7E', '6E'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M'],\n      batonpass: ['9M', '8M', '7E', '6E'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      bounce: ['9L28', '8M', '8L28', '7T', '7L32', '6T', '6L32'],\n      bravebird: ['9M', '8M'],\n      brickbreak: ['9M', '9L24', '8M', '7M', '6M'],\n      bulkup: ['9M', '8M', '7M', '6M'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M', '6M'],\n      crosschop: ['9E', '8E'],\n      cut: ['6M'],\n      defog: ['9E', '8E', '7T'],\n      detect: ['9L8', '8L8', '7L1', '6L1'],\n      dig: ['9M', '8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      drainpunch: ['9M', '8M', '7T', '6T'],\n      dualchop: ['7T', '6T'],\n      dualwingbeat: ['9M', '8T'],\n      encore: ['9M', '9L16', '8M', '8L16', '7L20', '6L20'],\n      endeavor: ['9M', '9L52', '8L52', '7T', '7L36', '6T', '6L36'],\n      endure: ['9M', '8M'],\n      entrainment: ['9E', '8E', '7E', '6E'],\n      facade: ['9M', '8M', '7M', '6M'],\n      falseswipe: ['9M', '8M', '7M', '6M'],\n      featherdance: ['9M', '9L20', '8L20', '7L40', '6L40'],\n      feint: ['9E', '8E', '7E'],\n      firepunch: ['9M', '8M', '7T', '6T'],\n      fling: ['9M', '8M', '7M', '7L24', '6M', '6L24'],\n      fly: ['9M', '8M', '7M', '6M'],\n      flyingpress: ['9L44', '8L44', '7L28', '6L28'],\n      focusblast: ['9M', '8M', '7M', '6M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      grassknot: ['9M', '8M', '7M', '6M'],\n      helpinghand: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      highjumpkick: ['9L48', '8L48', '7L44', '6L44'],\n      honeclaws: ['9L1', '8L1', '7L1', '6M', '6L1'],\n      hyperbeam: ['9M'],\n      ironhead: ['9M', '8M', '7T', '6T'],\n      karatechop: ['7L4', '6L4'],\n      laserfocus: ['7T'],\n      lastresort: ['7T', '6T'],\n      lowkick: ['9M', '8M', '7T', '6T'],\n      lowsweep: ['9M', '8M', '7M', '6M'],\n      lunge: ['9M'],\n      meanlook: ['9E', '8E'],\n      mefirst: ['7E', '6E'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudsport: ['7E', '6E'],\n      payback: ['8M', '7M', '6M'],\n      poisonjab: ['9M', '8M', '7M', '6M'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M'],\n      quickguard: ['9E', '8E', '7E', '6E'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      retaliate: ['8M', '6M'],\n      return: ['7M', '6M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M', '8M', '7M', '6M'],\n      roost: ['9L36', '8L36', '7M', '7L12', '6M', '6L12'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      skyattack: ['9L56', '8L56', '7T', '7L48', '6T', '6L48'],\n      skydrop: ['7M', '7L55', '6M', '6L55'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      steelwing: ['8M', '7M', '6M'],\n      stoneedge: ['9M', '8M', '7M', '6M'],\n      strength: ['6M'],\n      submission: ['8L24'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L40', '8M', '8L40', '7M', '7L60', '6M', '6L60'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      tailwind: ['7T', '6T'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L32', '8M', '8L32', '7M', '6M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderpunch: ['9M', '8M', '7T', '6T'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['9M'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      wingattack: ['9L4', '8L4', '7L8', '6L8'],\n      workup: ['8M', '7M'],\n      xscissor: ['9M', '8M', '7M', '6M'],\n      zenheadbutt: ['9M', '8M', '7T', '6T']\n    }\n  ],\n  [\n    'dedenne',\n    {\n      aerialace: ['7M', '6M'],\n      agility: ['9M'],\n      allyswitch: ['8M', '7T'],\n      attract: ['8M', '7M', '6M'],\n      charge: ['9M', '9L10', '8L10', '7L11', '6L11'],\n      chargebeam: ['9M', '7M', '7L34', '6M', '6L34'],\n      charm: ['9M', '9L20', '8M', '8L20', '7L14', '6L14'],\n      confide: ['7M', '6M'],\n      covet: ['9E', '8E', '7T', '7E', '6T', '6E'],\n      cut: ['6M'],\n      dazzlinggleam: ['9M', '8M'],\n      dig: ['9M', '8M', '6M'],\n      discharge: ['9L40', '8L40', '7L50', '6L50'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M'],\n      eerieimpulse: ['9M', '8M', '7E', '6E'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T', '6T'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      entrainment: ['9L55', '8L55', '7L39', '6L39'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flash: ['6M'],\n      fling: ['9M', '8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      grassknot: ['9M', '8M', '7M', '6M'],\n      helpinghand: ['9M', '8M', '7T', '7E', '6T', '6E'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M'],\n      irontail: ['8M', '7T', '6T'],\n      lastresort: ['7T', '6T'],\n      lightscreen: ['9M'],\n      magnetrise: ['9E', '8E', '7T', '6T'],\n      mistyterrain: ['9M'],\n      naturalgift: ['7E', '6E'],\n      nuzzle: ['9L1', '8L1', '7L20', '6L20'],\n      paraboliccharge: ['9L25', '8L25', '7L17', '6L17'],\n      playrough: ['9M', '9L45', '8M', '8L45', '7L42', '6L42'],\n      protect: ['9M', '8M', '7M', '6M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      recycle: ['7T', '6T'],\n      rest: ['9M', '9L35', '8M', '8L35', '7M', '7L30', '6M', '6L30'],\n      retaliate: ['8M', '6M'],\n      return: ['7M', '6M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snore: ['9L35', '8M', '8L35', '7T', '7L31', '6T', '6L31'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      superfang: ['9M', '9L50', '8L50', '7T', '6T'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      tackle: ['9L5', '8L5', '7L1', '6L1'],\n      tailwhip: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      tearfullook: ['9E', '8E', '7E'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      thunder: ['9M', '9L60', '8M', '8L60', '7M', '7L45', '6M', '6L45'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      thunderpunch: ['9M', '8M', '7T', '6T'],\n      thundershock: ['9L15', '8L15', '7L7', '6L7'],\n      thunderwave: ['9M', '8M', '7M', '7L23', '6M', '6L23'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      voltswitch: ['9M', '9L30', '8M', '8L30', '7M', '7L26', '6M', '6L26'],\n      wildcharge: ['9M', '8M', '7M', '6M']\n    }\n  ],\n  [\n    'carbink',\n    {\n      afteryou: ['7T', '6T'],\n      allyswitch: ['8M', '7T'],\n      ancientpower: ['9L20', '8L20', '7L31', '6L31'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      charm: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M'],\n      earthpower: ['9M', '8M', '7T', '6T'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      explosion: ['7M', '6M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flail: ['9L15', '8L15', '7L35', '6L35'],\n      flash: ['6M'],\n      flashcannon: ['9M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M'],\n      gravity: ['9M', '7T', '6T'],\n      guardsplit: ['9L5', '8L5', '7L27', '6L27'],\n      guardswap: ['8M'],\n      gyroball: ['9M', '8M', '7M', '6M'],\n      hail: ['8M', '7M', '6M'],\n      harden: ['9L1', '8L1', '7L1', '6L1'],\n      heavyslam: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M', '8M', '7T', '6T'],\n      ironhead: ['9M'],\n      lightscreen: ['9M', '9L30', '8M', '8L30', '7M', '7L60', '6M', '6L60'],\n      magiccoat: ['7T', '6T'],\n      magnetrise: ['7T', '6T'],\n      meteorbeam: ['9M', '8T'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M'],\n      moonblast: ['9L55', '8L55', '7L50', '6L50'],\n      naturepower: ['7M', '6M'],\n      powergem: ['9M', '9L45', '8M', '8L45', '7L46', '6L46'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psychup: ['9M', '7M', '6M'],\n      raindance: ['9M'],\n      reflect: ['9M', '8M', '7M', '7L18', '6M', '6L18'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockblast: ['9M'],\n      rockpolish: ['9L25', '8L25', '7M', '6M'],\n      rockslide: ['9M', '9L35', '8M', '8L35', '7M', '6M'],\n      rockthrow: ['7L5', '6L5'],\n      rocktomb: ['9M', '8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '7L70', '6M', '6L70'],\n      sandstorm: ['9M', '8M', '7M', '6M'],\n      sandtomb: ['9M', '8M'],\n      secretpower: ['6M'],\n      sharpen: ['7L8', '6L8'],\n      skillswap: ['9M', '9L40', '8M', '8L40', '7T', '7L40', '6T', '6L40'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      smackdown: ['9M', '9L10', '8L10', '7M', '7L12', '6M', '6L12'],\n      snore: ['8M', '7T', '6T'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '9L50', '8M', '8L50', '7T', '7L21', '6T', '6L21'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L60', '8M', '8L60', '7M', '7L49', '6M', '6L49'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      toxic: ['7M', '6M'],\n      trickroom: ['9M', '8M', '7M', '6M'],\n      wonderroom: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'goomy',\n    {\n      absorb: ['9L1', '8L1', '7L5', '6L5'],\n      acidarmor: ['7E', '6E'],\n      attract: ['8M', '7M', '6M'],\n      bide: ['7L13', '6L13'],\n      bodyslam: ['9M', '9L45', '8M', '8L45', '7L32', '7S0', '6L32'],\n      bubble: ['7L1', '6L1'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      counter: ['9E', '8E', '7E', '7S0', '6E'],\n      curse: ['9M', '9L41', '8L41', '7E', '6E'],\n      doubleteam: ['7M', '6M'],\n      dracometeor: ['9M', '8T', '7T', '6T'],\n      dragonbreath: ['9L10', '8L10', '7L18', '6L18'],\n      dragonpulse: ['9M', '9L35', '8M', '8L35', '7T', '7L42', '7S0', '6T', '6L42'],\n      endure: ['9M', '8M', '7E', '6E'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flail: ['9L20', '8L20', '7L28', '6L28'],\n      frustration: ['7M', '6M'],\n      hiddenpower: ['7M', '6M'],\n      infestation: ['7M', '6M'],\n      irontail: ['8M', '7T', '7E', '6T', '6E'],\n      lifedew: ['9E', '8E'],\n      muddywater: ['9M', '9L50', '8M', '8L50', '7L38', '6L38'],\n      mudshot: ['9M', '8M'],\n      outrage: ['9M', '8M', '7T', '6T'],\n      poisontail: ['7E', '6E'],\n      protect: ['9M', '9L15', '8M', '8L15', '7M', '7L9', '6M', '6L9'],\n      raindance: ['9M', '9L30', '8M', '8L30', '7M', '7L25', '6M', '6L25'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['9M', '8M', '7M', '6M'],\n      sludgewave: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      watergun: ['9L5', '8L5'],\n      waterpulse: ['9M', '9L25', '8L25', '7T', '6T']\n    }\n  ],\n  [\n    'sliggoo',\n    {\n      absorb: ['9L1', '8L1', '7L1', '6L5'],\n      acidarmor: ['9L1'],\n      acidspray: ['9M', '9L0', '8L0'],\n      attract: ['8M', '7M', '6M'],\n      bide: ['7L13', '6L13'],\n      blizzard: ['9M', '8M', '7M', '6M'],\n      bodyslam: ['9M', '9L49', '8M', '8L49', '7L32', '6L32'],\n      bubble: ['7L1', '6L1'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9L43', '8L43'],\n      doubleteam: ['7M', '6M'],\n      dracometeor: ['9M', '8T', '7T', '6T'],\n      dragonbreath: ['9L1', '8L1', '7L18', '6L18'],\n      dragonpulse: ['9M', '9L35', '8M', '8L35', '7T', '7L47', '6T', '6L47'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flail: ['9L20', '8L20', '7L28', '6L28'],\n      frustration: ['7M', '6M'],\n      hiddenpower: ['7M', '6M'],\n      icebeam: ['9M', '8M', '7M', '6M'],\n      infestation: ['7M', '6M'],\n      irontail: ['8M', '7T', '6T'],\n      muddywater: ['9M', '9L56', '8M', '8L56', '7L38', '6L38'],\n      mudshot: ['9M', '8M'],\n      outrage: ['9M', '8M', '7T', '6T'],\n      protect: ['9M', '9L15', '8M', '8L15', '7M', '7L9', '6M', '6L9'],\n      raindance: ['9M', '9L30', '8M', '8L30', '7M', '7L25', '6M', '6L25'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['9M', '8M', '7M', '6M'],\n      sludgewave: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      toxic: ['9M', '7M', '6M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '9L25', '8L25', '7T', '6T']\n    }\n  ],\n  [\n    'sliggoohisui',\n    {\n      absorb: ['9L1'],\n      acidarmor: ['9L1'],\n      acidspray: ['9M'],\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      curse: ['9M', '9L43'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L1'],\n      dragonpulse: ['9M', '9L35'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flail: ['9L20'],\n      flashcannon: ['9M'],\n      gyroball: ['9M'],\n      heavyslam: ['9M'],\n      icebeam: ['9M'],\n      icespinner: ['9M'],\n      ironhead: ['9M', '9L49'],\n      muddywater: ['9M', '9L56'],\n      mudshot: ['9M'],\n      outrage: ['9M'],\n      protect: ['9M', '9L15'],\n      raindance: ['9M', '9L30'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      shelter: ['9L0'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      steelbeam: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '9L25']\n    }\n  ],\n  [\n    'goodra',\n    {\n      absorb: ['9L1', '8L1', '7L1', '6L5'],\n      acidspray: ['9M', '9L1', '8L1'],\n      aquatail: ['9L0', '8L0', '7T', '7L1', '6T', '6L50'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M'],\n      bide: ['7L13', '6L13'],\n      blizzard: ['9M', '8M', '7M', '6M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L49', '8M', '8L49', '7L32', '6L32'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      bubble: ['7L1', '6L1'],\n      bulldoze: ['9M', '8M', '7M', '6M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      curse: ['9M', '9L43', '8L43'],\n      doubleteam: ['7M', '6M'],\n      dracometeor: ['9M', '8T', '7T', '6T'],\n      dragonbreath: ['9L1', '8L1', '7L18', '6L18'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M'],\n      dragonpulse: ['9M', '8M', '8L35', '7T', '7L47', '6T', '6L47'],\n      dragontail: ['9M', '7M', '6M'],\n      earthquake: ['9M', '8M', '7M', '6M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      feint: ['9L1', '8L1', '7L1', '6L1'],\n      fireblast: ['9M', '8M', '7M', '6M'],\n      firepunch: ['9M', '8M', '7T', '6T'],\n      flail: ['9L20', '8L20', '7L28', '6L28'],\n      flamethrower: ['9M', '8M', '7M', '6M'],\n      focusblast: ['9M', '8M', '7M', '6M'],\n      focuspunch: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      hail: ['8M', '7M', '6M'],\n      hiddenpower: ['7M', '6M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      icebeam: ['9M', '8M', '7M', '6M'],\n      incinerate: ['6M'],\n      infestation: ['7M', '6M'],\n      irontail: ['8M', '7T', '6T'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      muddywater: ['9M', '9L58', '8M', '8L58', '7L38', '6L38'],\n      mudshot: ['9M', '8M'],\n      outrage: ['9M', '8M', '7T', '7L1', '6T', '6L1'],\n      poisontail: ['9M', '9L1', '8L1'],\n      powerwhip: ['9L67', '8M', '8L67', '7L50', '6L55'],\n      protect: ['9M', '9L15', '8M', '8L15', '7M', '7L1', '6M', '6L9'],\n      raindance: ['9M', '9L30', '8M', '8L30', '7M', '7L25', '6M', '6L25'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      round: ['8M', '7M', '6M'],\n      scald: ['9M'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['9M', '8M', '7M', '6M'],\n      sludgewave: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      strength: ['6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      surf: ['9M', '8M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      tearfullook: ['9L1', '8L1'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M', '6M'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      thunderpunch: ['9M', '8M', '7T', '6T'],\n      toxic: ['9M', '7M', '6M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '9L25', '8L25', '7T', '6T'],\n      weatherball: ['9M', '8M']\n    }\n  ],\n  [\n    'goodrahisui',\n    {\n      absorb: ['9L1'],\n      acidspray: ['9M', '9L1'],\n      blizzard: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L49'],\n      breakingswipe: ['9M'],\n      bulldoze: ['9M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      curse: ['9M', '9L43'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L1'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M'],\n      dragonpulse: ['9M', '9L35'],\n      dragontail: ['9M'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      feint: ['9L1'],\n      fireblast: ['9M'],\n      firepunch: ['9M'],\n      flail: ['9L20'],\n      flamethrower: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      gyroball: ['9M'],\n      heavyslam: ['9M', '9L67'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icespinner: ['9M'],\n      ironhead: ['9M', '9L49'],\n      irontail: ['9L0'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      muddywater: ['9M', '9L58'],\n      mudshot: ['9M'],\n      outrage: ['9M'],\n      protect: ['9M', '9L15'],\n      raindance: ['9M', '9L30'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      shelter: ['9L1'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      steelbeam: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      surf: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      tearfullook: ['9L1'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderpunch: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '9L25'],\n      weatherball: ['9M']\n    }\n  ],\n  [\n    'klefki',\n    {\n      astonish: ['9L1', '8L1', '7L8', '6L8'],\n      attract: ['8M', '7M', '6M'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      craftyshield: ['8L16', '7L23', '6L23'],\n      cut: ['6M'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M', '9L24', '8M', '8L24', '7L18', '6L18'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      fairylock: ['9L16', '8L1', '7L1', '6L1'],\n      fairywind: ['9L8', '8L8', '7L5', '6L5'],\n      flashcannon: ['9M', '9L36', '8M', '8L36', '7M', '6M'],\n      foulplay: ['9M', '9L48', '8M', '8L48', '7T', '7L27', '6T', '6L27'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      healblock: ['7L50', '6L50'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      imprison: ['9M', '9L32', '8M', '8L32', '7L36', '6L36'],\n      irondefense: ['9M', '8M', '7T', '7E', '6T', '6E'],\n      lastresort: ['9L52', '8L52', '7T', '6T'],\n      lightscreen: ['9M', '8M', '7M', '6M'],\n      lockon: ['7E', '6E'],\n      magiccoat: ['7T', '6T'],\n      magicroom: ['9L44', '8M', '8L44', '7T', '7L44', '6T', '6L44'],\n      magnetrise: ['9E', '8E', '7T', '6T'],\n      metalsound: ['9M', '9L20', '8L20', '7L12', '6L12'],\n      mirrorshot: ['7L34', '6L34'],\n      mistyterrain: ['9M', '8M'],\n      playrough: ['9M', '9L40', '8M', '8L40', '7L43', '6L43'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psychup: ['9M', '7M', '6M'],\n      psyshock: ['9M', '8M', '7M', '6M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      recycle: ['9L28', '8L28', '7T', '7L40', '6T', '6L40'],\n      reflect: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      sandstorm: ['9M'],\n      secretpower: ['6M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      spikes: ['9M', '8M', '7L15', '6L15'],\n      steelbeam: ['9M', '8T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      switcheroo: ['9E', '8E', '7E', '6E'],\n      tackle: ['9L4', '8L4', '7L1', '6L1'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '7E', '6M', '6E'],\n      thunderwave: ['9M', '8M', '7M', '6M'],\n      torment: ['9L12', '8L12', '7M', '7L32', '6M', '6L32'],\n      toxic: ['7M', '6M'],\n      trickroom: ['9M']\n    }\n  ],\n  [\n    'phantump',\n    {\n      allyswitch: ['9E', '8M', '7T'],\n      astonish: ['9L1', '8L1', '7L5', '6L5'],\n      attract: ['8M', '7M', '6M'],\n      bestow: ['7E', '6E'],\n      branchpoke: ['9L4', '8L4'],\n      bulldoze: ['9M', '8M', '7M', '6M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L12', '8L12', '7L1', '6L1'],\n      curse: ['9M', '9L32', '8L32', '7L28', '6L28'],\n      cut: ['6M'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      destinybond: ['9L48', '8L48', '7L39', '6L39'],\n      dig: ['9M', '8M', '6M'],\n      disable: ['9E', '8E'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      feintattack: ['7L19', '6L19'],\n      forestscurse: ['9L52', '8L52', '7L35', '6L35'],\n      foulplay: ['9M', '8M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '8M', '7T', '6T'],\n      grassknot: ['9M', '8M', '7M', '6M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growth: ['9L24', '8L24', '7L8', '6L8'],\n      grudge: ['8E', '7E', '6E'],\n      hex: ['9M', '9L20', '8M', '8L20'],\n      hiddenpower: ['7M', '6M'],\n      hornleech: ['9L28', '8L28', '7L54', '6L54'],\n      imprison: ['9M', '8M', '7E', '6E'],\n      ingrain: ['9L40', '8L40', '7L13', '6L13'],\n      lashout: ['9M'],\n      leechseed: ['9L8', '8L8', '7L23', '6L23'],\n      magicalleaf: ['9M', '8M'],\n      magiccoat: ['7T', '6T'],\n      naturepower: ['7M', '6M'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '7T', '6T'],\n      phantomforce: ['9M', '9L36', '8M', '8L36', '7L45', '6L45'],\n      poisonjab: ['9M', '8M', '7M', '6M'],\n      poltergeist: ['9M', '8T'],\n      poweruppunch: ['7E'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      roleplay: ['7T', '6T'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M'],\n      skillswap: ['9M', '8M', '7T', '6T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      solarbeam: ['9M', '8M', '7M', '6M'],\n      spite: ['9M', '7T', '6T'],\n      strength: ['6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      suckerpunch: ['9E', '8E'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T', '6T'],\n      trickroom: ['9M', '8M', '7M', '6M'],\n      venomdrench: ['8M', '7E', '6E'],\n      willowisp: ['9M', '9L16', '8M', '8L16', '7M', '7L31', '6M', '6L31'],\n      woodhammer: ['9L44', '8L44', '7L49', '6L49'],\n      worryseed: ['7T', '6T']\n    }\n  ],\n  [\n    'trevenant',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['9L1', '8L1', '7L1', '6L5'],\n      attract: ['8M', '7M', '6M'],\n      block: ['7T', '6T'],\n      branchpoke: ['9L1', '8L1'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M', '6M'],\n      burningjealousy: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M', '9L12', '8L12', '7L1', '6L1'],\n      curse: ['9M', '9L32', '8L32', '7L28', '6L28'],\n      cut: ['6M'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      destinybond: ['9L48', '8L48', '7L39', '6L39'],\n      dig: ['9M', '8M', '6M'],\n      doubleteam: ['7M', '6M'],\n      drainpunch: ['9M', '8M', '7T', '6T'],\n      dreameater: ['7M', '6M'],\n      earthquake: ['9M', '8M', '7M', '6M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '6M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      feintattack: ['7L19', '6L19'],\n      focusblast: ['9M', '8M', '7M', '6M'],\n      forestscurse: ['9L52', '8L52', '7L35', '6L35'],\n      foulplay: ['9M', '8M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '8M', '7T', '6T'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      grassknot: ['9M', '8M', '7M', '6M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growth: ['9L24', '8L24', '7L1', '6L8'],\n      haze: ['9M'],\n      hex: ['9M', '9L20', '8M', '8L20'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['6M'],\n      hornleech: ['9L28', '8L28', '7L1', '6L1'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      imprison: ['9M', '8M'],\n      ingrain: ['9L40', '8L40', '7L13', '6L13'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L1', '8L1', '7L23', '6L23'],\n      magicalleaf: ['9M', '8M'],\n      magiccoat: ['7T', '6T'],\n      naturepower: ['7M', '6M'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '7T', '6T'],\n      phantomforce: ['9M', '9L36', '8M', '8L36', '7L45', '6L45'],\n      poisonjab: ['9M', '8M', '7M', '6M'],\n      poltergeist: ['9M', '8T'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      roleplay: ['7T', '6T'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      seedbomb: ['9M', '8M', '7T', '6T'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      shadowclaw: ['9M', '9L0', '8M', '8L0', '7M', '7L1', '6M', '6L55'],\n      skillswap: ['9M', '8M', '7T', '6T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      solarbeam: ['9M', '8M', '7M', '6M'],\n      spite: ['9M', '7T', '6T'],\n      strength: ['6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      toxic: ['9M', '7M', '6M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T', '6T'],\n      trickroom: ['9M', '8M', '7M', '6M'],\n      venomdrench: ['8M'],\n      willowisp: ['9M', '9L16', '8M', '8L16', '7M', '7L31', '6M', '6L31'],\n      woodhammer: ['9L44', '8L44', '7L49', '6L49'],\n      worryseed: ['7T', '6T'],\n      xscissor: ['9M', '8M', '7M', '6M']\n    }\n  ],\n  [\n    'pumpkaboo',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['8L1', '7L1', '6L1'],\n      attract: ['8M', '7M', '6M'],\n      bestow: ['7E', '6E'],\n      bulletseed: ['8M', '8L20', '7L26', '6L26'],\n      chargebeam: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L8', '7L1', '6L1'],\n      curse: ['8E', '7E'],\n      darkpulse: ['8M', '7M', '6M'],\n      destinybond: ['8E', '7E', '6E'],\n      disable: ['8E', '7E', '6E'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M'],\n      explosion: ['7M', '6M'],\n      facade: ['8M', '7M', '6M'],\n      fireblast: ['8M', '7M', '6M'],\n      flamecharge: ['7M', '6M'],\n      flamethrower: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      foulplay: ['8M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['8M', '7T', '6T'],\n      grassknot: ['8M', '7M', '6M'],\n      grassyglide: ['8T'],\n      gyroball: ['8M', '7M', '6M'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M'],\n      imprison: ['8M'],\n      incinerate: ['6M'],\n      leechseed: ['8L16', '7L20', '6L20'],\n      lightscreen: ['8M', '7M', '6M'],\n      magiccoat: ['7T', '6T'],\n      mysticalfire: ['8M'],\n      naturepower: ['7M', '6M'],\n      painsplit: ['8L44', '7T', '7L42', '6T', '6L42'],\n      poltergeist: ['8T'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '7M', '6M'],\n      razorleaf: ['8L12', '7L16', '6L16'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      roleplay: ['7T', '6T'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      scaryface: ['8M', '8L24', '7L4', '6L4'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '8L32', '7T', '7L48', '6T', '6L48'],\n      shadowball: ['8M', '8L36', '7M', '7L36', '6M', '6L36'],\n      shadowsneak: ['8L4', '7L30', '6L30'],\n      skillswap: ['8M', '7T', '6T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      snore: ['8M'],\n      solarbeam: ['8M', '7M', '6M'],\n      spite: ['7T', '6T'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      synthesis: ['7T', '6T'],\n      telekinesis: ['7T'],\n      thief: ['8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      trick: ['8M', '8L40', '7T', '7L1', '6T', '6L1'],\n      trickortreat: ['8L1', '7L23', '6L6'],\n      trickroom: ['8M', '7M', '6M'],\n      willowisp: ['8M', '7M', '6M'],\n      worryseed: ['8L28', '7T', '7L11', '6T', '6L11']\n    }\n  ],\n  [\n    'pumpkaboosuper',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['8L1', '7L1', '6L1', '6S0'],\n      attract: ['8M', '7M', '6M'],\n      bestow: ['7E', '6E'],\n      bulletseed: ['8M', '8L20', '7L26', '6L26'],\n      chargebeam: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L8', '7L1', '6L1'],\n      curse: ['8E', '7E'],\n      darkpulse: ['8M', '7M', '6M'],\n      destinybond: ['8E', '7E', '6E'],\n      disable: ['8E', '7E', '6E'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M'],\n      explosion: ['7M', '6M'],\n      facade: ['8M', '7M', '6M'],\n      fireblast: ['8M', '7M', '6M'],\n      flamecharge: ['7M', '6M'],\n      flamethrower: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      foulplay: ['8M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['8M', '7T', '6T'],\n      grassknot: ['8M', '7M', '6M'],\n      grassyglide: ['8T'],\n      gyroball: ['8M', '7M', '6M'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M'],\n      imprison: ['8M'],\n      incinerate: ['6M'],\n      leechseed: ['8L16', '7L20', '6L20'],\n      lightscreen: ['8M', '7M', '6M'],\n      magiccoat: ['7T', '6T'],\n      mysticalfire: ['8M'],\n      naturepower: ['7M', '6M'],\n      painsplit: ['8L44', '7T', '7L42', '6T', '6L42'],\n      poltergeist: ['8T'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '7M', '6M'],\n      razorleaf: ['8L12', '7L16', '6L16'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      roleplay: ['7T', '6T'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      scaryface: ['8M', '8L24', '7L4', '6L4', '6S0'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '8L32', '7T', '7L48', '6T', '6L48'],\n      shadowball: ['8M', '8L36', '7M', '7L36', '6M', '6L36'],\n      shadowsneak: ['8L4', '7L30', '6L30', '6S0'],\n      skillswap: ['8M', '7T', '6T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      snore: ['8M'],\n      solarbeam: ['8M', '7M', '6M'],\n      spite: ['7T', '6T'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      synthesis: ['7T', '6T'],\n      telekinesis: ['7T'],\n      thief: ['8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      trick: ['8M', '8L40', '7T', '7L1', '6T', '6L1'],\n      trickortreat: ['8L1', '7L23', '6L6', '6S0'],\n      trickroom: ['8M', '7M', '6M'],\n      willowisp: ['8M', '7M', '6M'],\n      worryseed: ['8L28', '7T', '7L11', '6T', '6L11']\n    }\n  ],\n  [\n    'gourgeist',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['8L1', '7L1', '6L1'],\n      attract: ['8M', '7M', '6M'],\n      brutalswing: ['8M'],\n      bulletseed: ['8M', '8L20', '7L26', '6L26'],\n      chargebeam: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L1', '7L1', '6L1'],\n      darkpulse: ['8M', '7M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M'],\n      explosion: ['8L1', '7M', '7L1', '6M', '6L1'],\n      facade: ['8M', '7M', '6M'],\n      fireblast: ['8M', '7M', '6M'],\n      flamecharge: ['7M', '6M'],\n      flamethrower: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      focusblast: ['8M', '7M', '6M'],\n      foulplay: ['8M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['8M', '7T', '6T'],\n      gigaimpact: ['8M', '7M', '6M'],\n      grassknot: ['8M', '7M', '6M'],\n      grassyglide: ['8T'],\n      gyroball: ['8M', '7M', '6M'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['8M', '7M', '6M'],\n      imprison: ['8M'],\n      incinerate: ['6M'],\n      leechseed: ['8L16', '7L20', '6L20'],\n      lightscreen: ['8M', '7M', '6M'],\n      magiccoat: ['7T', '6T'],\n      moonblast: ['8L1'],\n      mysticalfire: ['8M'],\n      nastyplot: ['8M'],\n      naturepower: ['7M', '6M'],\n      painsplit: ['8L44', '7T', '7L42', '6T', '6L42'],\n      phantomforce: ['8M', '8L48', '7L1', '6L1'],\n      poltergeist: ['8T'],\n      powerwhip: ['8M'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '7M', '6M'],\n      razorleaf: ['8L12', '7L16', '6L16'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      roleplay: ['7T', '6T'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      scaryface: ['8M', '8L24', '7L1', '6L4'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '8L32', '7T', '7L48', '6T', '6L48'],\n      shadowball: ['8M', '8L36', '7M', '7L36', '6M', '6L36'],\n      shadowsneak: ['8L1', '7L30', '6L30'],\n      skillswap: ['8M', '7T', '6T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      snore: ['8M'],\n      solarbeam: ['8M', '7M', '6M'],\n      spite: ['7T', '6T'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      synthesis: ['7T', '6T'],\n      telekinesis: ['7T'],\n      thief: ['8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      trick: ['8M', '8L40', '7T', '7L1', '6T', '6L1'],\n      trickortreat: ['8L1', '7L23', '6L6'],\n      trickroom: ['8M', '7M', '6M'],\n      willowisp: ['8M', '7M', '6M'],\n      worryseed: ['8L28', '7T', '7L11', '6T', '6L11']\n    }\n  ],\n  [\n    'gourgeistsuper',\n    {\n      allyswitch: ['8M', '7T'],\n      astonish: ['8L1', '7L1', '6L1'],\n      attract: ['8M', '7M', '6M'],\n      brutalswing: ['8M'],\n      bulletseed: ['8M', '8L20', '7L26', '6L26'],\n      chargebeam: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      confuseray: ['8L1', '7L1', '6L1'],\n      darkpulse: ['8M', '7M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dreameater: ['7M', '6M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M', '6M'],\n      explosion: ['8L1', '7M', '7L1', '6M', '6L1'],\n      facade: ['8M', '7M', '6M'],\n      fireblast: ['8M', '7M', '6M'],\n      flamecharge: ['7M', '6M'],\n      flamethrower: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      focusblast: ['8M', '7M', '6M'],\n      foulplay: ['8M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['8M', '7T', '6T'],\n      gigaimpact: ['8M', '7M', '6M'],\n      grassknot: ['8M', '7M', '6M'],\n      grassyglide: ['8T'],\n      gyroball: ['8M', '7M', '6M'],\n      hex: ['8M'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['8M', '7M', '6M'],\n      imprison: ['8M'],\n      incinerate: ['6M'],\n      leechseed: ['8L16', '7L20', '6L20'],\n      lightscreen: ['8M', '7M', '6M'],\n      magiccoat: ['7T', '6T'],\n      moonblast: ['8L1'],\n      mysticalfire: ['8M'],\n      nastyplot: ['8M'],\n      naturepower: ['7M', '6M'],\n      painsplit: ['8L44', '7T', '7L42', '6T', '6L42'],\n      phantomforce: ['8M', '8L48', '7L1', '6L1'],\n      poltergeist: ['8T'],\n      powerwhip: ['8M'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '7M', '6M'],\n      razorleaf: ['8L12', '7L16', '6L16'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      roleplay: ['7T', '6T'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      scaryface: ['8M', '8L24', '7L1', '6L4'],\n      secretpower: ['6M'],\n      seedbomb: ['8M', '8L32', '7T', '7L48', '6T', '6L48'],\n      shadowball: ['8M', '8L36', '7M', '7L36', '6M', '6L36'],\n      shadowsneak: ['8L1', '7L30', '6L30'],\n      skillswap: ['8M', '7T', '6T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgebomb: ['8M', '7M', '6M'],\n      snore: ['8M'],\n      solarbeam: ['8M', '7M', '6M'],\n      spite: ['7T', '6T'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      synthesis: ['7T', '6T'],\n      telekinesis: ['7T'],\n      thief: ['8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      trick: ['8M', '8L40', '7T', '7L1', '6T', '6L1'],\n      trickortreat: ['8L1', '7L23', '6L6'],\n      trickroom: ['8M', '7M', '6M'],\n      willowisp: ['8M', '7M', '6M'],\n      worryseed: ['8L28', '7T', '7L11', '6T', '6L11']\n    }\n  ],\n  [\n    'bergmite',\n    {\n      afteryou: ['7T', '6T'],\n      attract: ['8M', '7M', '6M'],\n      auroraveil: ['9E', '8E'],\n      avalanche: ['9M', '9L18', '8M', '8L18', '7L39', '6L39'],\n      barrier: ['7E', '6E'],\n      bite: ['9L21', '8L21', '7L1', '6L1'],\n      blizzard: ['9M', '9L39', '8M', '8L39', '7M', '7L43', '6M', '6L43'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L33', '8M', '8L33'],\n      curse: ['9M', '9L9', '8L9', '7L22', '6L22'],\n      doubleedge: ['9M', '9L42', '8L42', '7L49', '6L49'],\n      doubleteam: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flash: ['6M'],\n      flashcannon: ['8M', '7M', '6M'],\n      frostbreath: ['7M', '6M'],\n      frustration: ['7M', '6M'],\n      gyroball: ['9M', '8M', '7M', '6M'],\n      hail: ['8M', '7M', '6M'],\n      harden: ['9L1', '8L1', '7L1', '6L1'],\n      hiddenpower: ['7M', '6M'],\n      iceball: ['7L30', '6L30'],\n      icebeam: ['9M', '8M', '7M', '6M'],\n      icefang: ['9M', '9L24', '8M', '8L24', '7L26', '6L26'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L12', '8M', '8L12', '7T', '7L10', '6T', '6L10'],\n      irondefense: ['9M', '9L27', '8M', '8L27', '7T', '6T'],\n      mirrorcoat: ['9E', '8E', '7E', '6E'],\n      mist: ['9E', '8E', '7E', '6E'],\n      powdersnow: ['9L6', '8L6', '7L5', '6L5'],\n      protect: ['9M', '9L15', '8M', '8L15', '7M', '6M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      rapidspin: ['9L1', '8L1', '7L35', '6L35'],\n      recover: ['9L30', '8L30', '7L47', '7E', '6L47', '6E'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockpolish: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M', '8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      sharpen: ['7L20', '6L20'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      snowscape: ['9M'],\n      stoneedge: ['9M', '8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      surf: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L3', '8L3', '7L1', '6L1'],\n      takedown: ['9M', '9L36', '8L36', '7L15', '6L15'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M'],\n      waterpulse: ['7T', '6T']\n    }\n  ],\n  [\n    'avalugg',\n    {\n      afteryou: ['7T', '6T'],\n      attract: ['8M', '7M', '6M'],\n      avalanche: ['9M', '9L18', '8M', '8L18', '7L42', '6L42'],\n      bite: ['9L21', '8L21', '7L1', '6L1'],\n      blizzard: ['9M', '9L41', '8M', '8L41', '7M', '7L46', '6M', '6L46'],\n      block: ['7T', '6T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L0', '8M', '8L0', '7L1'],\n      bulldoze: ['9M', '8M', '7M', '6M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '9L33', '8M', '8L33', '7L1', '6L1'],\n      curse: ['9M', '9L9', '8L9', '7L22', '6L22'],\n      doubleedge: ['9M', '9L46', '8L46', '7L56', '6L56'],\n      doubleteam: ['7M', '6M'],\n      earthquake: ['9M', '8M', '7M', '6M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flash: ['6M'],\n      flashcannon: ['9M', '8M', '7M', '6M'],\n      frostbreath: ['7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      gyroball: ['9M', '8M', '7M', '6M'],\n      hail: ['8M', '7M', '6M'],\n      harden: ['9L1', '8L1', '7L1', '6L1'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '6M'],\n      highhorsepower: ['9M', '8M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      iceball: ['7L30', '6L30'],\n      icebeam: ['9M', '8M', '7M', '6M'],\n      icefang: ['9M', '9L24', '8M', '8L24', '7L26', '6L26'],\n      icespinner: ['9M'],\n      iciclecrash: ['9L51'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L12', '8M', '8L12', '7T', '7L10', '6T', '6L10'],\n      irondefense: ['9M', '9L27', '8M', '8L27', '7T', '7L1', '6T', '6L1'],\n      ironhead: ['9M', '8M', '7T', '6T'],\n      powdersnow: ['9L1', '8L1', '7L1', '6L5'],\n      protect: ['9M', '9L15', '8M', '8L15', '7M', '6M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      rapidspin: ['9L1', '8L1', '7L35', '6L35'],\n      recover: ['9L30', '8L30', '7L51', '6L51'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roar: ['7M', '6M'],\n      rockpolish: ['7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M', '8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      sharpen: ['7L20', '6L20'],\n      skullbash: ['8L51', '7L1', '6L1'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      snowscape: ['9M'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      surf: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M', '9L36', '8L36', '7L15', '6L15'],\n      terablast: ['9M'],\n      toxic: ['7M', '6M'],\n      waterpulse: ['7T', '6T'],\n      wideguard: ['9L1', '8L1', '7L1']\n    }\n  ],\n  [\n    'avalugghisui',\n    {\n      avalanche: ['9M', '9L18'],\n      bite: ['9L21'],\n      blizzard: ['9M', '9L41'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      crunch: ['9M', '9L33'],\n      curse: ['9M', '9L9'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L46'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      gyroball: ['9M'],\n      harden: ['9L1'],\n      hardpress: ['9M'],\n      heavyslam: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icefang: ['9M', '9L24'],\n      icespinner: ['9M'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '9L12'],\n      irondefense: ['9M', '9L27'],\n      ironhead: ['9M'],\n      meteorbeam: ['9M'],\n      mountaingale: ['9L61'],\n      powdersnow: ['9L1'],\n      protect: ['9M', '9L15'],\n      raindance: ['9M'],\n      rapidspin: ['9L1'],\n      recover: ['9L30'],\n      rest: ['9M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '9L0'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '9L51'],\n      substitute: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L36'],\n      terablast: ['9M'],\n      wideguard: ['9L1']\n    }\n  ],\n  [\n    'noibat',\n    {\n      absorb: ['9L1', '8L1', '7L5'],\n      acrobatics: ['9M', '8M', '7M', '6M'],\n      aerialace: ['9M', '7M', '6M'],\n      agility: ['9M', '8M', '7L18', '6L18'],\n      aircutter: ['9M', '9L24', '8L24', '7L23', '6L23'],\n      airslash: ['9M', '9L36', '8M', '8L36', '7L48', '6L48'],\n      attract: ['8M', '7M', '6M'],\n      bite: ['9L20', '8L20', '7L13', '6L13'],\n      brickbreak: ['9M', '8M', '7M', '6M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      defog: ['9E', '8E', '7T'],\n      doubleteam: ['9L12', '8L12', '7M', '6M'],\n      dracometeor: ['9M', '8T', '7T', '6T'],\n      dragonclaw: ['9M'],\n      dragonpulse: ['9M', '8M', '7T', '6T'],\n      dragonrush: ['9E', '8E'],\n      dreameater: ['7M', '6M'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      fly: ['9M', '8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gust: ['9L4', '8L4', '7L11', '6L11'],\n      heatwave: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hurricane: ['9M', '9L52', '8M', '8L52', '7L58', '6L58'],\n      hypervoice: ['9M', '8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      leechlife: ['9M', '8M', '7M', '6L5'],\n      outrage: ['9M', '8M', '7T', '7E', '6T', '6E'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      razorwind: ['7L31', '6L31'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roost: ['9L44', '8L44', '7M', '7L27', '6M', '6L27'],\n      round: ['8M', '7M', '6M'],\n      screech: ['9L40', '8M', '8L40', '7L1', '6L1'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M'],\n      skyattack: ['7T', '6T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T', '7E', '6T', '6E'],\n      snore: ['8M', '7T', '6T'],\n      solarbeam: ['9M', '8M', '7M', '6M'],\n      steelwing: ['8M', '7M', '6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      superfang: ['9M', '9L32', '8L32', '7T', '7L43', '6T', '6L43'],\n      supersonic: ['9L8', '8L8', '7L1', '6L1'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '8M'],\n      switcheroo: ['9E', '7E', '6E'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      tailwind: ['9M', '9L49', '8L49', '7T', '7L35', '7E', '6T', '6L35', '6E'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uproar: ['9M', '8M', '7T', '6T'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      waterpulse: ['7T', '6T'],\n      whirlwind: ['9L28', '8L28', '7L40', '6L40'],\n      wildcharge: ['9M', '8M', '7M', '6M'],\n      wingattack: ['9L16', '8L16', '7L16', '6L16'],\n      xscissor: ['9M', '8M', '7M', '6M']\n    }\n  ],\n  [\n    'noivern',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      acrobatics: ['9M', '8M', '7M', '6M'],\n      aerialace: ['9M', '7M', '6M'],\n      agility: ['9M', '8M', '7L18', '6L18'],\n      aircutter: ['9M', '9L24', '8L24', '7L23', '6L23'],\n      airslash: ['9M', '9L36', '8M', '8L36', '7L53', '6L53'],\n      attract: ['8M', '7M', '6M'],\n      bite: ['9L20', '8L20', '7L13', '6L13'],\n      bodyslam: ['9M'],\n      boomburst: ['9L62', '8L62', '7L1', '6L1'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '8M', '7M', '6M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      darkpulse: ['9M', '8M', '7M', '6M'],\n      defog: ['7T'],\n      doubleedge: ['9M'],\n      doubleteam: ['9L12', '8L12', '7M', '6M'],\n      dracometeor: ['9M', '8T', '7T', '6T'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '6M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '9L0', '8M', '8L0', '7T', '7L1', '6T', '6L1'],\n      dragontail: ['9M'],\n      dreameater: ['7M', '6M'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flamethrower: ['9M', '8M', '7M', '6M'],\n      fly: ['9M', '8M', '7M', '6M'],\n      focusblast: ['9M', '8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      gust: ['9L1', '8L1', '7L11', '6L11'],\n      heatwave: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['6M'],\n      hurricane: ['9M', '9L56', '8M', '8L56', '7L1', '6L1'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      hypervoice: ['9M', '8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      laserfocus: ['7T'],\n      leechlife: ['9M', '8M', '7M', '6L5'],\n      moonlight: ['9L1', '8L1', '7L1', '6L1'],\n      outrage: ['9M', '8M', '7T', '6T'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psychicnoise: ['9M'],\n      razorwind: ['7L31', '6L31'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roost: ['9L44', '8L44', '7M', '7L27', '6M', '6L27'],\n      round: ['8M', '7M', '6M'],\n      scaryface: ['9M'],\n      screech: ['9L40', '8M', '8L40', '7L1', '6L1'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      shadowclaw: ['9M', '8M', '7M', '6M'],\n      skyattack: ['7T', '6T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['8M', '7T', '6T'],\n      solarbeam: ['9M', '8M', '7M', '6M'],\n      steelwing: ['8M', '7M', '6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      superfang: ['9M', '9L32', '8L32', '7T', '7L43', '6T', '6L43'],\n      supersonic: ['9L1', '8L1', '7L1', '6L1'],\n      swagger: ['7M', '6M'],\n      swift: ['9M', '8M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      tailwind: ['9M', '9L51', '8L51', '7T', '7L35', '6T', '6L35'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uproar: ['9M', '8M', '7T', '6T'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      waterpulse: ['9M', '7T', '6T'],\n      whirlwind: ['9L28', '8L28', '7L40', '6L40'],\n      wildcharge: ['9M', '8M', '7M', '6M'],\n      wingattack: ['9L16', '8L16', '7L16', '6L16'],\n      xscissor: ['9M', '8M', '7M', '6M']\n    }\n  ],\n  [\n    'xerneas',\n    {\n      aromatherapy: ['8L25', '7L1', '6L1', '6S1'],\n      aurorabeam: ['8L10', '7L10', '6L10'],\n      block: ['7T', '6T'],\n      bodyslam: ['8M'],\n      calmmind: ['8M', '7M', '6M'],\n      closecombat: ['8M', '8L75', '7L80', '6L80'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      dazzlinggleam: ['8M', '8S5', '7M', '6M'],\n      defog: ['7T'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['8M'],\n      echoedvoice: ['7M', '6M'],\n      endeavor: ['7T', '6T'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      flash: ['6M'],\n      flashcannon: ['8M', '7M', '6M'],\n      focusblast: ['8M', '7M', '7S4', '6M', '6S1'],\n      frustration: ['7M', '6M'],\n      geomancy: ['8L55', '7L26', '7S2', '7S3', '7S4', '6L26', '6S0', '6S1'],\n      gigaimpact: ['8M', '8L85', '7M', '7L88', '6M', '6L88'],\n      grassknot: ['8M', '7M', '7S4', '6M'],\n      gravity: ['8L1', '7T', '7L18', '6T', '6L18', '6S0'],\n      hail: ['8M', '7M', '6M'],\n      healpulse: ['8L65', '7L1', '6L1'],\n      hiddenpower: ['7M', '6M'],\n      hornleech: ['8L35', '8S5', '7L55', '7S2', '7S3', '6L55'],\n      hyperbeam: ['8M', '7M', '6M'],\n      hypervoice: ['8M', '7T', '6T'],\n      ingrain: ['8L45', '8S5', '7L1', '6L1'],\n      laserfocus: ['7T'],\n      lightscreen: ['8M', '8L5', '7M', '7L5', '6M', '6L5'],\n      megahorn: ['8M', '8L70', '7L44', '6L44', '6S0'],\n      mistyexplosion: ['8T'],\n      mistyterrain: ['8M', '8L40', '7L63', '6L63'],\n      moonblast: ['8L60', '8S5', '7L35', '7S2', '7S3', '7S4', '6L35', '6S0', '6S1'],\n      naturepower: ['8L15', '7M', '7L72', '6M', '6L72'],\n      nightslash: ['8L20', '7L51', '7S2', '7S3', '6L51'],\n      outrage: ['8M', '8L80', '7T', '7L93', '6T', '6L93'],\n      playrough: ['8M'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '7M', '6M'],\n      psychup: ['8L30', '7M', '7L59', '6M', '6L59'],\n      psyshock: ['8M', '7M', '6M'],\n      raindance: ['8M', '7M', '6M'],\n      reflect: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roar: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      smartstrike: ['8M'],\n      snore: ['8M', '7T', '6T'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['8M'],\n      tackle: ['8L1'],\n      takedown: ['8L50', '7L1', '6L1'],\n      terrainpulse: ['8T'],\n      thunder: ['8M', '7M', '6M'],\n      thunderbolt: ['8M', '7M', '6M'],\n      thunderwave: ['8M', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      wonderroom: ['8M', '7T', '6T'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'yveltal',\n    {\n      acrobatics: ['8M', '7M', '6M'],\n      aerialace: ['7M', '6M'],\n      airslash: ['8M', '8L35', '7L10', '6L10'],\n      block: ['7T', '6T'],\n      bodyslam: ['8M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      darkpulse: ['8M', '8L40', '7M', '7L44', '7S2', '7S3', '7S4', '6M', '6L44', '6S0', '6S1'],\n      defog: ['7T'],\n      disable: ['8L15', '7L35', '6L35', '6S0'],\n      doubleteam: ['8L1', '7M', '7L5', '6M', '6L5'],\n      dragonclaw: ['8M', '7M', '6M'],\n      dragonrush: ['8L65', '8S5', '7L63', '6L63'],\n      dreameater: ['7M', '6M'],\n      dualwingbeat: ['8T'],\n      embargo: ['7M', '6M'],\n      endure: ['8M'],\n      facade: ['8M', '7M', '6M'],\n      fly: ['8M', '7M', '6M'],\n      focusblast: ['8M', '8L75', '7M', '7L72', '6M', '6L72'],\n      foulplay: ['8M', '8L60', '7T', '7L51', '6T', '6L51', '6S1'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['8M', '7M', '6M'],\n      gust: ['8L1'],\n      heatwave: ['8M', '7T', '7S4', '6T'],\n      hiddenpower: ['7M', '6M'],\n      honeclaws: ['6M'],\n      hurricane: ['8M', '8L70', '7L1', '6L1'],\n      hyperbeam: ['8M', '8L85', '7M', '7L88', '6M', '6L88'],\n      hypervoice: ['8M', '7T', '6T'],\n      knockoff: ['7T', '6T'],\n      laserfocus: ['7T'],\n      lashout: ['8T'],\n      oblivionwing: ['8L50', '8S5', '7L26', '7S2', '7S3', '7S4', '6L26', '6S0', '6S1'],\n      payback: ['8M'],\n      phantomforce: ['8M', '8L55', '7L55', '7S2', '7S3', '6L55'],\n      protect: ['8M', '7M', '6M'],\n      psychic: ['8M', '8L45', '7M', '7L59', '7S2', '7S3', '6M', '6L59'],\n      raindance: ['8M', '7M', '6M'],\n      razorwind: ['7L1', '6L1'],\n      rest: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockslide: ['8M', '7M', '6M'],\n      roost: ['8L30', '7M', '7L1', '6M', '6L1'],\n      round: ['8M', '7M', '6M'],\n      secretpower: ['6M'],\n      shadowball: ['8M', '7M', '6M'],\n      shadowclaw: ['8M', '7M', '6M'],\n      skyattack: ['8L80', '7T', '7L93', '6T', '6L93'],\n      skydrop: ['7M', '6M'],\n      sleeptalk: ['8M', '7M', '6M'],\n      snarl: ['8M', '8L10', '7M', '7L18', '6M', '6L18', '6S0'],\n      snore: ['8M', '7T', '6T'],\n      steelwing: ['8M', '7M', '6M'],\n      substitute: ['8M', '7M', '6M'],\n      suckerpunch: ['8L20', '8S5', '7L80', '6L80', '6S1'],\n      sunnyday: ['8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['8M'],\n      tailwind: ['8L25', '7T', '7S4', '6T'],\n      taunt: ['8M', '8L5', '8S5', '7M', '7L1', '6M', '6L1'],\n      thief: ['8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uturn: ['8M', '7M', '6M'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'zygarde',\n    {\n      bind: ['8L1', '8S9', '7T', '7L18', '7S2', '7S3', '7S4', '6T', '6L18'],\n      bite: ['8L1', '7L1', '6L1'],\n      block: ['7T', '6T'],\n      bodyslam: ['8M'],\n      breakingswipe: ['8M'],\n      brickbreak: ['8M', '7M', '6M'],\n      bulldoze: ['8M', '8L1', '7M', '7L1', '6M', '6L1'],\n      camouflage: ['7L59', '6L59', '6S0'],\n      coil: ['8L72', '7L72', '6L80'],\n      confide: ['7M', '6M'],\n      coreenforcer: ['8L1', '7T'],\n      crunch: ['8M', '8L32', '7L51', '6L51', '6S0'],\n      dig: ['8M', '8L16', '7L10', '7S2', '6M', '6L10'],\n      doubleteam: ['7M', '6M'],\n      dracometeor: ['8T', '7T', '6T'],\n      dragonbreath: ['8L1', '7L1', '7S5', '7S6', '6L1'],\n      dragondance: ['8M', '7T', '7S7', '7S8', '6L72'],\n      dragonpulse: ['8M', '8L40', '8S9', '7T', '7L63', '6T', '6L63', '6S0'],\n      dragontail: ['7M', '6M'],\n      earthpower: ['8M', '7T', '6T'],\n      earthquake: ['8M', '8L80', '7M', '7L55', '6M', '6L55', '6S0'],\n      endure: ['8M'],\n      extremespeed: ['7T', '7S7', '7S8', '6L88', '6S1'],\n      facade: ['8M', '7M', '6M'],\n      focusblast: ['8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['8M', '7M', '6M'],\n      glare: ['8L56', '7L1', '7S5', '7S6', '6L1', '6S1'],\n      grassknot: ['8M', '7M', '6M'],\n      haze: ['8L8', '7L44', '7S3', '7S4', '6L44'],\n      hiddenpower: ['7M', '6M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M', '7M', '6M'],\n      hypervoice: ['8M', '7T', '6T'],\n      irontail: ['8M', '7T', '6T'],\n      landswrath: ['8L48', '8S9', '7L26', '7S2', '7S3', '7S4', '7S5', '7S6', '6L26', '6S1'],\n      outrage: ['8M', '8L88', '7T', '7L80', '7S7', '7S8', '6T', '6L93', '6S1'],\n      painsplit: ['7T', '6T'],\n      payback: ['8M'],\n      protect: ['8M', '7M', '6M'],\n      rest: ['8M', '7M', '6M'],\n      retaliate: ['8M'],\n      return: ['7M', '6M'],\n      reversal: ['8M'],\n      rockslide: ['8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '8L24', '7M', '7L5', '7S2', '7S5', '7S6', '6M', '6L5'],\n      sandstorm: ['8M', '8L64', '7M', '7L35', '7S3', '7S4', '6M', '6L35'],\n      scaleshot: ['8T'],\n      scorchingsands: ['8T'],\n      secretpower: ['6M'],\n      shockwave: ['7T', '6T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M', '6M'],\n      sludgewave: ['8M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      spite: ['7T', '6T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['8M', '7M', '6M'],\n      sunnyday: ['8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      swagger: ['7M', '6M'],\n      swift: ['8M'],\n      thousandarrows: ['8L1', '8S9', '7T', '7S7', '7S8'],\n      thousandwaves: ['8L1', '7T'],\n      toxic: ['7M', '6M'],\n      zenheadbutt: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'zygarde10',\n    {\n      bind: ['8S5', '7S0', '7S1', '7S2'],\n      dig: ['7S0', '7S2'],\n      dragonbreath: ['7S3'],\n      dragondance: ['7S4'],\n      dragonpulse: ['8S5'],\n      extremespeed: ['7S4'],\n      glare: ['7S3'],\n      haze: ['7S1'],\n      landswrath: ['8S5', '7S0', '7S1', '7S2', '7S3'],\n      outrage: ['7S4'],\n      safeguard: ['7S0', '7S2', '7S3'],\n      sandstorm: ['7S1'],\n      thousandarrows: ['8S5', '7S4']\n    }\n  ],\n  [\n    'diancie',\n    {\n      afteryou: ['7T', '6T'],\n      allyswitch: ['8M'],\n      amnesia: ['9M', '8M'],\n      ancientpower: ['9L28', '8L28', '7L27', '6L31'],\n      batonpass: ['9M', '8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      charm: ['9M', '8M'],\n      confide: ['7M', '6M'],\n      covet: ['7T', '6T'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      diamondstorm: ['9L1', '8L91', '7L50', '6L50', '6S0', '6S1'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M', '8M'],\n      earthpower: ['9M', '8M', '7T', '6T'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '7T', '6T'],\n      endure: ['9M', '8M'],\n      explosion: ['7M', '6M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      faketears: ['9M', '8M'],\n      flail: ['9L21', '8L21', '7L31', '6L35'],\n      flash: ['6M'],\n      flashcannon: ['9M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      gravity: ['9M', '7T', '6T'],\n      guardsplit: ['9L7', '8L7', '7L21', '6L27'],\n      guardswap: ['8M'],\n      gyroball: ['9M', '8M', '7M', '6M'],\n      hail: ['8M', '7M', '6M'],\n      harden: ['9L1', '8L1', '7L1', '6L1'],\n      healbell: ['7T', '6T'],\n      helpinghand: ['9M', '8M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      irondefense: ['9M', '8M', '7T', '6T'],\n      lastresort: ['7T', '6T'],\n      lightscreen: ['9M', '9L42', '8M', '8L42', '7M', '7L60', '6M', '6L60'],\n      magnetrise: ['7T', '6T'],\n      meteorbeam: ['9M', '8T'],\n      metronome: ['9M', '8M'],\n      mistyexplosion: ['9M', '8T'],\n      moonblast: ['9L77', '8L77', '7L50', '6L50', '6S0', '6S1'],\n      mysticalfire: ['8M'],\n      naturepower: ['7M', '6M'],\n      playrough: ['9M', '8M'],\n      powergem: ['9M', '9L63', '8M', '8L63', '7L40'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psychup: ['9M', '7M', '6M'],\n      psyshock: ['9M', '8M', '7M', '6M'],\n      raindance: ['9M'],\n      reflect: ['9M', '8M', '7M', '7L12', '6M', '6L18', '6S0', '6S1'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M', '6S0', '6S1'],\n      rockpolish: ['9L35', '8L35', '7M', '6M'],\n      rockslide: ['9M', '9L49', '8M', '8L49', '7M', '6M'],\n      rockthrow: ['7L1', '6L5'],\n      rocktomb: ['9M', '8M', '7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '7L70', '6M', '6L70'],\n      sandstorm: ['9M', '8M', '7M', '6M'],\n      sandtomb: ['9M', '8M'],\n      scorchingsands: ['9M'],\n      secretpower: ['6M'],\n      sharpen: ['7L5', '6L8'],\n      skillswap: ['9M', '9L56', '8M', '8L56', '7T', '7L35', '6T', '6L40'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      smackdown: ['9M', '9L14', '8L14', '7M', '7L8', '6M', '6L12'],\n      snore: ['8M', '7T', '6T'],\n      snowscape: ['9M'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '9L70', '8M', '8L70', '7T', '7L18', '6T', '6L21'],\n      stoneedge: ['9M', '9L84', '8M', '8L84', '7M', '7L49', '6M', '6L49'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      tackle: ['9L1', '8L1', '7L1', '6L1'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      toxic: ['7M', '6M'],\n      trickroom: ['9M', '8M', '7M', '7L46', '6M', '6L46'],\n      wonderroom: ['8M', '7T', '6T']\n    }\n  ],\n  [\n    'hoopa',\n    {\n      allyswitch: ['9L1', '7T', '7L1', '6L1'],\n      astonish: ['9L6', '7L6', '6L6', '6S0'],\n      block: ['7T', '6T'],\n      brickbreak: ['9M', '7M', '6M'],\n      calmmind: ['9M', '7M', '6M'],\n      chargebeam: ['7M', '6M'],\n      confide: ['7M', '6M'],\n      confusion: ['9L1', '7L1', '6L1'],\n      covet: ['7T', '6T'],\n      darkpulse: ['9M', '9L55', '7M', '7L55', '6L55'],\n      destinybond: ['9L1', '7L1', '6L1'],\n      doubleteam: ['7M', '6M'],\n      drainpunch: ['9M', '7T', '6T'],\n      dreameater: ['7M', '6M'],\n      dualchop: ['7T', '6T'],\n      embargo: ['7M', '6M'],\n      endure: ['9M'],\n      energyball: ['9M', '7M', '6M'],\n      expandingforce: ['9M'],\n      facade: ['9M', '7M', '6M'],\n      firepunch: ['9M', '7T', '6T'],\n      flash: ['6M'],\n      fling: ['9M', '7M', '6M'],\n      focusblast: ['9M', '7M', '6M'],\n      focuspunch: ['9M', '7T', '6T'],\n      foulplay: ['9M', '7T', '6T'],\n      frustration: ['7M', '6M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M', '7M', '6M'],\n      grassknot: ['9M', '7M', '6M'],\n      gravity: ['9M', '7T', '6T'],\n      guardsplit: ['9L29', '7L29', '6L29'],\n      gunkshot: ['9M', '7T', '6T'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '7M', '6M'],\n      hyperspacefury: ['9L85', '7L1', '6L1'],\n      hyperspacehole: ['9L85', '7L1', '7S1', '6L1', '6S0'],\n      icepunch: ['9M', '7T', '6T'],\n      knockoff: ['9M', '9L46', '7T', '7L46', '6T', '6L46'],\n      laserfocus: ['7T'],\n      lashout: ['9M'],\n      lastresort: ['7T', '6T'],\n      lightscreen: ['9M', '9L15', '7M', '7L15', '6M', '6L15'],\n      magiccoat: ['7T', '7L10', '6T', '6L10'],\n      magicroom: ['7T', '6T'],\n      nastyplot: ['9M', '9L68', '7L68', '7S1', '6L68', '6S0'],\n      phantomforce: ['9M', '9L35', '7L35', '6L35'],\n      powersplit: ['9L29', '7L29', '6L29'],\n      poweruppunch: ['6M'],\n      protect: ['9M', '7M', '6M'],\n      psybeam: ['9M', '9L19', '7L19', '6L15'],\n      psychic: ['9M', '9L75', '7M', '7L75', '7S1', '6M', '6L75', '6S0'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '7M', '6M'],\n      psyshock: ['9M', '7M', '6M'],\n      quash: ['7M', '6M'],\n      raindance: ['9M', '7M', '6M'],\n      recycle: ['7T', '6T'],\n      reflect: ['9M', '7M', '6M'],\n      rest: ['9M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rocktomb: ['9M'],\n      roleplay: ['7T', '6T'],\n      round: ['7M', '6M'],\n      safeguard: ['7M', '6M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      secretpower: ['6M'],\n      shadowball: ['9M', '9L55', '7M', '7L55', '7S1', '6M', '6L55'],\n      shockwave: ['7T', '6T'],\n      signalbeam: ['7T', '6T'],\n      skillswap: ['9M', '9L25', '7T', '7L25', '6T', '6L25'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '7M', '6M'],\n      snatch: ['7T', '6T'],\n      snore: ['7T', '6T'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M', '6M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '7M', '6M'],\n      throatchop: ['9M', '7T'],\n      thunderbolt: ['9M', '7M', '6M'],\n      thunderpunch: ['9M', '7T', '6T'],\n      thunderwave: ['9M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      trick: ['9M', '9L10', '7T', '7L1', '6T', '6L1'],\n      trickroom: ['9M', '9L50', '7M', '7L50', '6M', '6L50'],\n      uproar: ['7T', '6T'],\n      wonderroom: ['9L50', '7T', '7L50', '6T', '6L50'],\n      zenheadbutt: ['9M', '9L46', '7T', '7L46', '6T', '6L46']\n    }\n  ],\n  ['hoopaunbound', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'volcanion',\n    {\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M', '7L46', '6L46'],\n      brickbreak: ['9M', '8M', '7M', '6M'],\n      bulldoze: ['9M', '8M', '7M', '6M'],\n      confide: ['7M', '6M'],\n      cut: ['6M'],\n      defog: ['7T'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M', '6M'],\n      earthpower: ['9M', '8M', '7T', '6T'],\n      earthquake: ['9M', '8M', '7M', '6M'],\n      endure: ['9M', '8M'],\n      explosion: ['9L90', '8L90', '7M', '7L76', '6M', '6L76', '6S1'],\n      facade: ['9M', '8M', '7M', '6M'],\n      fireblast: ['9M', '8M', '7M', '6M'],\n      firefang: ['9M'],\n      firespin: ['9M', '9L1', '8M', '8L1'],\n      flamecharge: ['9M', '9L18', '8L18', '7M', '7L15', '6M', '6L15'],\n      flamethrower: ['9M', '8M', '7M', '6M', '6S1'],\n      flareblitz: ['9M', '9L78', '8M', '8L78', '8S2', '7L1', '6L1'],\n      flashcannon: ['9M', '8M', '7M', '6M'],\n      fling: ['9M', '8M', '7M', '6M'],\n      focusblast: ['9M', '8M', '7M', '6M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      gyroball: ['9M', '8M', '7M', '6M'],\n      haze: ['9M', '9L60', '8L60', '8S2', '7L11', '6L11'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M', '8M', '7T', '6T'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '6M'],\n      hydropump: ['9M', '9L66', '8M', '8L66', '7L50', '6L50', '6S0', '6S1'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      incinerate: ['9L36', '8L36', '8S2', '6M'],\n      leer: ['9L6', '8L6'],\n      liquidation: ['9M', '8M', '7T'],\n      mist: ['9L60', '8L60', '7L8', '6L8', '6S0'],\n      mistyterrain: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      overheat: ['9M', '9L84', '8M', '8L84', '7M', '7L65', '6M', '6L65', '6S0'],\n      protect: ['9M', '8M', '7M', '6M'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      roar: ['9M', '7M', '6M'],\n      rockslide: ['9M', '8M', '7M', '6M'],\n      rocksmash: ['6M'],\n      rocktomb: ['9M'],\n      round: ['8M', '7M', '6M'],\n      sandstorm: ['9M', '8M', '7M', '6M'],\n      scald: ['9M', '9L48', '8M', '8L48', '7M', '7L32', '6M', '6L32'],\n      scaryface: ['9M', '9L30', '8M', '8L30'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['9M', '8M', '7M', '6M'],\n      sludgewave: ['9M', '8M', '7M', '6M'],\n      smackdown: ['9M', '7M', '6M'],\n      snore: ['8M', '7T', '6T'],\n      solarbeam: ['9M', '8M', '7M', '6M'],\n      steameruption: ['9L1', '8L72', '8S2', '7L1', '6L1', '6S0', '6S1'],\n      stomp: ['9L42', '8L42', '7L28', '6L28'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M', '6M'],\n      strength: ['6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      superpower: ['8M', '7T', '6T'],\n      swagger: ['7M', '6M'],\n      takedown: ['9M', '9L54', '8L54', '7L1', '6L1'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M'],\n      toxic: ['7M', '6M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '9L24', '8L24', '7T', '7L21', '6T', '6L21'],\n      weatherball: ['9M', '9L12', '8M', '8L12', '7L40', '6L40'],\n      wildcharge: ['9M'],\n      willowisp: ['9M', '8M', '7M', '6M']\n    }\n  ],\n  [\n    'rowlet',\n    {\n      aerialace: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      astonish: ['9L6', '8L6', '7L11'],\n      attract: ['8M', '7M'],\n      batonpass: ['8M', '7E'],\n      bravebird: ['9M', '9L36', '8M', '8L36', '7L43'],\n      bulletseed: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M', '9E', '8E', '7E'],\n      covet: ['7T'],\n      curse: ['7E'],\n      defog: ['9E', '8E', '7T', '7E'],\n      doubleteam: ['9E', '8E', '7M'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['7M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      falseswipe: ['9M', '8M', '7M'],\n      featherdance: ['9M', '9L33', '8L33', '7L39'],\n      foresight: ['7L18'],\n      frustration: ['7M'],\n      furyattack: ['7L29'],\n      gigadrain: ['9M', '8M', '7T'],\n      grassknot: ['9M', '8M', '7M'],\n      grasspledge: ['9M', '8T', '7T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '8L1', '7L4'],\n      haze: ['9M', '7E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      knockoff: ['9M', '9E', '8E'],\n      leafage: ['9L3', '8L3', '7L1'],\n      leafblade: ['9L30', '8M', '8L30', '7L36'],\n      leafstorm: ['9M'],\n      lightscreen: ['9M', '8M', '7M'],\n      magicalleaf: ['9M'],\n      nastyplot: ['9M', '9L24', '8M', '8L24', '7L46'],\n      naturepower: ['7M'],\n      nightshade: ['9M'],\n      ominouswind: ['7L16', '7E'],\n      peck: ['9L9', '8L9', '7L8'],\n      pluck: ['9L21', '8L21', '7L22'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M'],\n      razorleaf: ['9L15', '8L15', '7L14'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roost: ['9E', '7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      shadowclaw: ['9M', '8M', '7M'],\n      shadowsneak: ['9L12', '8L12'],\n      skyattack: ['7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      steelwing: ['8M', '7M'],\n      substitute: ['9M', '8M', '7M'],\n      suckerpunch: ['9L27', '8L27', '7L32'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M'],\n      synthesis: ['9L18', '8L18', '7T', '7L25'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      workup: ['8M', '7M'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'dartrix',\n    {\n      aerialace: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      astonish: ['9L1', '8L1', '7L11'],\n      attract: ['8M', '7M'],\n      batonpass: ['9M', '8M'],\n      bravebird: ['9M', '9L50', '8M', '8L50', '7L51'],\n      bulletseed: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      covet: ['7T'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['7M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      falseswipe: ['9M', '8M', '7M'],\n      featherdance: ['9M', '9L45', '8L45', '7L46'],\n      foresight: ['7L19'],\n      frustration: ['7M'],\n      furyattack: ['7L33'],\n      gigadrain: ['9M', '8M', '7T'],\n      grassknot: ['9M', '8M', '7M'],\n      grasspledge: ['9M', '8T', '7T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '8L1', '7L1'],\n      haze: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      knockoff: ['9M'],\n      leafage: ['9L1', '8L1', '7L1'],\n      leafblade: ['9L40', '8M', '8L40', '7L42'],\n      leafstorm: ['9M'],\n      lightscreen: ['9M', '8M', '7M'],\n      magicalleaf: ['9M'],\n      nastyplot: ['9M', '9L30', '8M', '8L30', '7L55'],\n      naturepower: ['7M'],\n      nightshade: ['9M'],\n      ominouswind: ['7L16'],\n      peck: ['9L9', '8L9', '7L1'],\n      pluck: ['9L25', '8L25', '7L24'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M'],\n      razorleaf: ['9L15', '8L15', '7L14'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      shadowclaw: ['9M', '8M', '7M'],\n      shadowsneak: ['9L12', '8L12'],\n      skyattack: ['7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      steelwing: ['8M', '7M'],\n      substitute: ['9M', '8M', '7M'],\n      suckerpunch: ['9L35', '8L35', '7L37'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M'],\n      synthesis: ['9L20', '8L20', '7T', '7L28'],\n      tackle: ['9L1', '8L1', '7L1'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      workup: ['8M', '7M'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'decidueye',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      aerialace: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      astonish: ['9L1', '8L1', '7L11'],\n      attract: ['8M', '7M'],\n      batonpass: ['9M', '8M'],\n      bravebird: ['9M', '9L58', '8M', '8L58', '7L55', '7S0'],\n      bulletseed: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      covet: ['7T'],\n      curse: ['9M'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['7M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      falseswipe: ['9M', '8M', '7M'],\n      featherdance: ['9M', '9L51', '8L51', '7L49'],\n      foresight: ['7L19'],\n      frenzyplant: ['9M', '8T', '7T'],\n      frustration: ['7M'],\n      furyattack: ['7L33'],\n      gigadrain: ['9M', '8M', '7T'],\n      gigaimpact: ['9M', '8M', '7M'],\n      grassknot: ['9M', '8M', '7M'],\n      grasspledge: ['9M', '8T', '7T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '8L1', '7L1'],\n      haze: ['9M'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      leafage: ['9L1', '8L1', '7L1'],\n      leafblade: ['9L44', '8M', '8L44', '7L44', '7S0'],\n      leafstorm: ['9M', '9L1', '8M', '8L1', '7L1'],\n      lightscreen: ['9M', '8M', '7M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M', '8M', '7M'],\n      magicalleaf: ['9M'],\n      nastyplot: ['9M', '9L30', '8M', '8L30', '7L60'],\n      naturepower: ['7M'],\n      nightshade: ['9M'],\n      ominouswind: ['7L16'],\n      peck: ['9L9', '8L9', '7L1'],\n      phantomforce: ['9M', '9L1', '8M', '8L1', '7L1', '7S0'],\n      pluck: ['9L25', '8L25', '7L24'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M'],\n      psychocut: ['8M'],\n      raindance: ['9M'],\n      razorleaf: ['9L15', '8L15', '7L14'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      shadowball: ['9M', '8M', '7M'],\n      shadowclaw: ['9M', '8M', '7M'],\n      shadowsneak: ['9L12', '8L12', '7L1', '7S0'],\n      skittersmack: ['9M', '8T'],\n      skyattack: ['7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smackdown: ['9M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      solarblade: ['9M', '8M'],\n      spiritshackle: ['9L0', '8L0', '7L1'],\n      spite: ['9M', '9L1', '8L1', '7T'],\n      steelwing: ['8M', '7M'],\n      substitute: ['9M', '8M', '7M'],\n      suckerpunch: ['9L37', '8L37', '7L38'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M'],\n      synthesis: ['9L20', '8L20', '7T', '7L28'],\n      tackle: ['9L1', '8L1', '7L1'],\n      tailwind: ['9M', '7T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L1', '8M', '8L1', '7M', '7L1'],\n      workup: ['8M', '7M'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'decidueyehisui',\n    {\n      aerialace: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      aurasphere: ['9M'],\n      batonpass: ['9M'],\n      bravebird: ['9M', '9L58'],\n      brickbreak: ['9M'],\n      bulkup: ['9M', '9L30'],\n      bulletseed: ['9M'],\n      closecombat: ['9M'],\n      coaching: ['9M'],\n      confuseray: ['9M'],\n      dualwingbeat: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      featherdance: ['9M', '9L51'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      frenzyplant: ['9M'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grasspledge: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growl: ['9L1'],\n      haze: ['9M'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      knockoff: ['9M'],\n      leafage: ['9L1'],\n      leafblade: ['9L44'],\n      leafstorm: ['9M', '9L1'],\n      lightscreen: ['9M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      magicalleaf: ['9M'],\n      nastyplot: ['9M'],\n      nightshade: ['9M'],\n      peck: ['9L9'],\n      pluck: ['9L25'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      razorleaf: ['9L15'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      rocktomb: ['9M'],\n      scaryface: ['9M'],\n      seedbomb: ['9M'],\n      shadowclaw: ['9M'],\n      shadowsneak: ['9L12'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      solarbeam: ['9M'],\n      substitute: ['9M'],\n      suckerpunch: ['9L37'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      synthesis: ['9L20'],\n      tackle: ['9L1'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      trailblaze: ['9M'],\n      triplearrows: ['9L0'],\n      upperhand: ['9M'],\n      uturn: ['9M', '9L1']\n    }\n  ],\n  [\n    'litten',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      attract: ['8M', '7M'],\n      bite: ['9L15', '8L15', '7L22'],\n      bodyslam: ['9M', '8M', '7E'],\n      bulkup: ['9M', '8M', '7M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      crunch: ['9M', '8M', '7E'],\n      doubleedge: ['9M'],\n      doublekick: ['9L18', '8L18', '7L16'],\n      doubleteam: ['7M'],\n      ember: ['9L3', '8L3', '7L1'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['9E', '8E', '7E'],\n      fireblast: ['9M', '8M', '7M'],\n      firefang: ['9M', '9L21', '8M', '8L21', '7L14'],\n      firepledge: ['9M', '8T', '7T'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '7M'],\n      flamethrower: ['9M', '9L30', '8M', '8L30', '7M', '7L36'],\n      flareblitz: ['9M', '9L36', '8M', '8L36', '7L43'],\n      frustration: ['7M'],\n      furyswipes: ['9L12', '8L12', '7L29'],\n      growl: ['9L1', '8L1', '7L4'],\n      heatwave: ['9M', '8M', '7T', '7E'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      leechlife: ['9M', '8M', '7M'],\n      leer: ['7L11'],\n      lick: ['9L6', '8L6', '7L8'],\n      nastyplot: ['9M', '8M', '7E'],\n      outrage: ['9M', '8M', '7T', '7L46'],\n      overheat: ['9M', '8M', '7M'],\n      partingshot: ['9E', '8E'],\n      payday: ['8M'],\n      powertrip: ['9E', '8E', '7E'],\n      protect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M', '7E'],\n      roar: ['9M', '9L9', '8L9', '7M', '7L18'],\n      round: ['8M', '7M'],\n      scaryface: ['9M', '9L24', '8M', '8L24', '7L39'],\n      scratch: ['9L1', '8L1', '7L1'],\n      shadowclaw: ['9M', '8M', '7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['9L27', '8L27', '7M', '7L25'],\n      swordsdance: ['9M', '8M', '7M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L33', '8L33', '7L32'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M'],\n      willowisp: ['9M', '8M', '7M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'torracat',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      attract: ['8M', '7M'],\n      bite: ['9L15', '8L15', '7L24'],\n      bodyslam: ['9M', '8M'],\n      bulkup: ['9M', '8M', '7M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      crunch: ['9M', '8M'],\n      doubleedge: ['9M'],\n      doublekick: ['9L20', '8L20', '7L16'],\n      doubleteam: ['7M'],\n      dualchop: ['7T'],\n      ember: ['9L1', '8L1', '7L1'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fireblast: ['9M', '8M', '7M'],\n      firefang: ['9M', '9L25', '8M', '8L25', '7L14'],\n      firepledge: ['9M', '8T', '7T'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '7M'],\n      flamethrower: ['9M', '9L40', '8M', '8L40', '7M', '7L42'],\n      flareblitz: ['9M', '9L50', '8M', '8L50', '7L51'],\n      frustration: ['7M'],\n      furyswipes: ['9L12', '8L12', '7L33'],\n      growl: ['9L1', '8L1', '7L1'],\n      heatwave: ['9M', '8M', '7T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      leechlife: ['9M', '8M', '7M'],\n      leer: ['7L11'],\n      lick: ['9L1', '8L1', '7L1'],\n      nastyplot: ['9M', '8M'],\n      outrage: ['9M', '8M', '7T', '7L55'],\n      overheat: ['9M', '8M', '7M'],\n      payday: ['8M'],\n      protect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      roar: ['9M', '9L9', '8L9', '7M', '7L19'],\n      round: ['8M', '7M'],\n      scaryface: ['9M', '9L30', '8M', '8L30', '7L46'],\n      scratch: ['9L1', '8L1', '7L1'],\n      shadowclaw: ['9M', '8M', '7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['9L35', '8L35', '7M', '7L28'],\n      swordsdance: ['9M', '8M', '7M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L45', '8L45', '7L37'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M'],\n      willowisp: ['9M', '8M', '7M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'incineroar',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      aerialace: ['9M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M'],\n      batonpass: ['9M'],\n      bind: ['7T'],\n      bite: ['9L15', '8L15', '7L24'],\n      blastburn: ['9M', '8T', '7T'],\n      blazekick: ['8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '9L1', '8M', '8L1', '7M', '7L1'],\n      bulldoze: ['9M', '8M', '7M'],\n      burningjealousy: ['9M', '8T'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      crosschop: ['9L1', '8L1', '7L66'],\n      crunch: ['9M', '8M'],\n      darkestlariat: ['9L0', '8M', '8L0', '7L1', '7S0'],\n      darkpulse: ['9M', '8M', '7M'],\n      doubleedge: ['9M'],\n      doublekick: ['9L20', '8L20', '7L16'],\n      doubleteam: ['7M'],\n      drainpunch: ['9M', '8M', '7T'],\n      dualchop: ['7T'],\n      earthquake: ['9M', '8M', '7M'],\n      embargo: ['7M'],\n      ember: ['9L1', '8L1', '7L1'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['7S0'],\n      fireblast: ['9M', '8M', '7M'],\n      firefang: ['9M', '9L25', '8M', '8L25', '7L14'],\n      firepledge: ['9M', '8T', '7T'],\n      firepunch: ['9M', '8M', '7T'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '7M'],\n      flamethrower: ['9M', '9L44', '8M', '8L44', '7M', '7L44'],\n      flareblitz: ['9M', '9L58', '8M', '8L58', '7L55', '7S0'],\n      fling: ['9M', '8M', '7M'],\n      focusblast: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      furyswipes: ['9L12', '8L12', '7L33'],\n      gigaimpact: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L1'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M', '8M', '7T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      ironhead: ['9M', '8M', '7T'],\n      knockoff: ['9M', '7T'],\n      lashout: ['9M', '8T'],\n      leechlife: ['9M', '8M', '7M'],\n      leer: ['7L11'],\n      lick: ['9L1', '8L1', '7L1'],\n      lowkick: ['9M', '8M', '7T'],\n      lowsweep: ['9M', '8M', '7M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '8M'],\n      outrage: ['9M', '8M', '7T', '7L60'],\n      overheat: ['9M', '8M', '7M'],\n      payday: ['8M'],\n      protect: ['9M', '8M', '7M'],\n      quash: ['7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '9L9', '8L9', '7M', '7L19'],\n      round: ['8M', '7M'],\n      scaryface: ['9M', '9L30', '8M', '8L30', '7L49'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L1', '8L1', '7L1'],\n      shadowclaw: ['9M', '8M', '7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      superpower: ['8M', '7T'],\n      swagger: ['9L32', '8L32', '7M', '7L28'],\n      swordsdance: ['9M', '8M', '7M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L51', '8L51', '7L38'],\n      throatchop: ['9M', '9L1', '8M', '8L1', '7T', '7L1'],\n      thunderpunch: ['9M', '8M', '7T'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M', '7S0'],\n      willowisp: ['9M', '8M', '7M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'popplio',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      amnesia: ['9M', '8M', '7E'],\n      aquajet: ['9L9', '8L9', '7L14'],\n      aquaring: ['9E', '8E', '7E'],\n      aquatail: ['7T'],\n      aromaticmist: ['7E'],\n      attract: ['8M', '7M'],\n      babydolleyes: ['9L12', '8L12', '7L11'],\n      blizzard: ['9M', '8M', '7M'],\n      brine: ['8M'],\n      bubblebeam: ['9L21', '8L21', '7L22'],\n      captivate: ['7L39'],\n      charm: ['9M', '8M', '7E'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      disarmingvoice: ['9M', '9L6', '8L6', '7L8'],\n      dive: ['8M'],\n      doubleslap: ['7L29'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      encore: ['9M', '9L24', '8M', '8L24', '7L18'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      flipturn: ['9M', '8T'],\n      frustration: ['7M'],\n      growl: ['9L1', '8L1', '7L4'],\n      hail: ['8M', '7M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hydropump: ['9M', '9L36', '8M', '8L36', '7L43'],\n      hypervoice: ['9M', '9L30', '8M', '8L30', '7T', '7L32'],\n      icebeam: ['9M', '8M', '7M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '9L15', '8M', '8L15', '7T', '7L16'],\n      irontail: ['8M', '7T'],\n      lifedew: ['9E', '8E'],\n      mistyterrain: ['9M', '9L27', '8M', '8L27', '7L46'],\n      moonblast: ['9L33', '8L33', '7L36'],\n      perishsong: ['9E', '8E', '7E'],\n      playrough: ['9M', '8M'],\n      pound: ['9L1', '8L1', '7L1'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      sing: ['9L18', '8L18', '7L25'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      tripleaxel: ['9M', '8T'],\n      uproar: ['9M', '8M', '7T'],\n      waterfall: ['9M', '8M', '7M'],\n      watergun: ['9L3', '8L3', '7L1'],\n      waterpledge: ['9M', '8T', '7T'],\n      waterpulse: ['9M', '7T'],\n      whirlpool: ['9M', '8M'],\n      wonderroom: ['8M', '7T', '7E'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'brionne',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      amnesia: ['9M', '8M'],\n      aquajet: ['9L9', '8L9', '7L14'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M'],\n      babydolleyes: ['9L12', '8L12', '7L11'],\n      blizzard: ['9M', '8M', '7M'],\n      bodyslam: ['9M'],\n      brine: ['8M'],\n      bubblebeam: ['9L25', '8L25', '7L24'],\n      captivate: ['7L46'],\n      charm: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L1'],\n      dive: ['8M'],\n      doubleslap: ['7L33'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      encore: ['9M', '9L30', '8M', '8L30', '7L19'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      flipturn: ['9M', '8T'],\n      frustration: ['7M'],\n      growl: ['9L1', '8L1', '7L1'],\n      hail: ['8M', '7M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hydropump: ['9M', '9L50', '8M', '8L50', '7L51'],\n      hypervoice: ['9M', '9L40', '8M', '8L40', '7T', '7L37'],\n      icebeam: ['9M', '8M', '7M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '9L15', '8M', '8L15', '7T', '7L16'],\n      irontail: ['8M', '7T'],\n      mistyterrain: ['9M', '9L35', '8M', '8L35', '7L55'],\n      moonblast: ['9L45', '8L45', '7L42'],\n      playrough: ['9M', '8M'],\n      pound: ['9L1', '8L1', '7L1'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      sing: ['9L20', '8L20', '7L28'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      tripleaxel: ['9M', '8T'],\n      uproar: ['9M', '8M', '7T'],\n      waterfall: ['9M', '8M', '7M'],\n      watergun: ['9L1', '8L1', '7L1'],\n      waterpledge: ['9M', '8T', '7T'],\n      waterpulse: ['9M', '7T'],\n      whirlpool: ['9M', '8M'],\n      wonderroom: ['8M', '7T'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'primarina',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      alluringvoice: ['9M'],\n      amnesia: ['9M', '8M'],\n      aquajet: ['9L9', '8L9', '7L14'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M'],\n      babydolleyes: ['9L12', '8L12', '7L11'],\n      blizzard: ['9M', '8M', '7M'],\n      bodyslam: ['9M'],\n      brine: ['8M'],\n      bubblebeam: ['9L25', '8L25', '7L24'],\n      calmmind: ['9M', '8M'],\n      captivate: ['7L49'],\n      charm: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      disarmingvoice: ['9M', '9L1', '8L1', '7L1'],\n      dive: ['8M'],\n      doubleslap: ['7L33'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      encore: ['9M', '9L30', '8M', '8L30', '7L19'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      flipturn: ['9M', '8T'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L1'],\n      hail: ['8M', '7M'],\n      haze: ['9M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hydrocannon: ['9M', '8T', '7T'],\n      hydropump: ['9M', '9L58', '8M', '8L58', '7L55'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '9L44', '8M', '8L44', '7T', '7L38', '7S0'],\n      icebeam: ['9M', '8M', '7M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '9L15', '8M', '8L15', '7T', '7L16', '7S0'],\n      irontail: ['8M', '7T'],\n      lightscreen: ['9M', '8M', '7M'],\n      liquidation: ['9M', '8M', '7T'],\n      magiccoat: ['7T'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '9L37', '8M', '8L37', '7L60'],\n      moonblast: ['9L51', '8L51', '7L44', '7S0'],\n      perishsong: ['7S0'],\n      playrough: ['9M', '8M'],\n      pound: ['9L1', '8L1', '7L1'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      shadowball: ['9M', '8M', '7M'],\n      sing: ['9L20', '8L20', '7L28'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      sparklingaria: ['9L0', '8L0', '7L1'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      tripleaxel: ['9M', '8T'],\n      uproar: ['9M', '8M', '7T'],\n      waterfall: ['9M', '8M', '7M'],\n      watergun: ['9L1', '8L1', '7L1'],\n      waterpledge: ['9M', '8T', '7T'],\n      waterpulse: ['9M', '7T'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M'],\n      wonderroom: ['8M', '7T'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'pikipek',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      attract: ['7M'],\n      boomburst: ['9E', '7E'],\n      bravebird: ['9M', '7E'],\n      brickbreak: ['9M', '7M'],\n      bulletseed: ['9M', '9L31', '7L31'],\n      confide: ['7M'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      drillpeck: ['9L27', '7L27'],\n      dualwingbeat: ['9M'],\n      echoedvoice: ['9L7', '7M', '7L7'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M', '9L33', '7L33'],\n      flamecharge: ['9M', '7M'],\n      fly: ['9M', '7M'],\n      frustration: ['7M'],\n      furyattack: ['9L21', '7L21'],\n      growl: ['9L3', '7L3'],\n      gunkshot: ['9M', '9E', '7T'],\n      heatwave: ['9M', '7T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hypervoice: ['9M', '9L37', '7T', '7L37'],\n      knockoff: ['9M', '7T'],\n      mirrormove: ['7E'],\n      peck: ['9L1', '7L1'],\n      pluck: ['9L15', '7L15'],\n      protect: ['9M', '7M'],\n      rest: ['9M', '7M'],\n      return: ['7M'],\n      rocksmash: ['9L9', '7L9'],\n      roost: ['9L19', '7M', '7L19'],\n      round: ['7M'],\n      screech: ['9L25', '7L25'],\n      skyattack: ['9E', '7T'],\n      sleeptalk: ['9M', '7M'],\n      smackdown: ['9M', '7M'],\n      snore: ['7T'],\n      steelwing: ['7M'],\n      substitute: ['9M', '7M'],\n      sunnyday: ['9M', '7M'],\n      supersonic: ['9L13', '7L13'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '7M'],\n      tailwind: ['9M', '7T', '7E'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      toxic: ['7M'],\n      uproar: ['9M', '7T', '7E'],\n      uturn: ['9M', '7M'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'trumbeak',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      attract: ['7M'],\n      bravebird: ['9M'],\n      brickbreak: ['9M', '7M'],\n      bulletseed: ['9M', '9L37', '7L37'],\n      confide: ['7M'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      drillpeck: ['9L32', '7L32'],\n      dualwingbeat: ['9M'],\n      echoedvoice: ['9L1', '7M', '7L1'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M', '9L40', '7L40'],\n      flamecharge: ['9M', '7M'],\n      fly: ['9M', '7M'],\n      frustration: ['7M'],\n      furyattack: ['9L24', '7L24'],\n      growl: ['9L1', '7L1'],\n      gunkshot: ['9M', '7T'],\n      heatwave: ['9M', '7T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hypervoice: ['9M', '9L45', '7T', '7L45'],\n      knockoff: ['9M', '7T'],\n      peck: ['9L1', '7L1'],\n      pluck: ['9L16', '7L16'],\n      protect: ['9M', '7M'],\n      rest: ['9M', '7M'],\n      return: ['7M'],\n      rockblast: ['9M', '9L1', '7L1'],\n      rocksmash: ['9L1', '7L1'],\n      roost: ['9L21', '7M', '7L21'],\n      round: ['7M'],\n      screech: ['9L29', '7L29'],\n      skyattack: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      smackdown: ['9M', '7M'],\n      snore: ['7T'],\n      steelwing: ['7M'],\n      substitute: ['9M', '7M'],\n      sunnyday: ['9M', '7M'],\n      supersonic: ['9L13', '7L13'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M'],\n      tailwind: ['9M', '7T'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      toxic: ['7M'],\n      uproar: ['9M', '7T'],\n      uturn: ['9M', '7M'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'toucannon',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '7M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      attract: ['7M'],\n      beakblast: ['9L0', '7L1'],\n      bravebird: ['9M'],\n      brickbreak: ['9M', '7M'],\n      bulletseed: ['9M', '9L40', '7L40'],\n      confide: ['7M'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      drillpeck: ['9L34', '7L34'],\n      dualwingbeat: ['9M'],\n      echoedvoice: ['9L1', '7M', '7L1'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M', '9L44', '7L44'],\n      flamecharge: ['9M', '7M'],\n      flashcannon: ['9M', '7M'],\n      fly: ['9M', '7M'],\n      frustration: ['7M'],\n      furyattack: ['9L24', '7L24'],\n      gigaimpact: ['9M'],\n      growl: ['9L1', '7L1'],\n      gunkshot: ['9M', '7T'],\n      heatwave: ['9M', '7T'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M', '9L50', '7T', '7L50'],\n      knockoff: ['9M', '7T'],\n      overheat: ['9M', '7M'],\n      peck: ['9L1', '7L1'],\n      pluck: ['9L16', '7L16'],\n      protect: ['9M', '7M'],\n      psychup: ['9M'],\n      rest: ['9M', '7M'],\n      return: ['7M'],\n      rockblast: ['9M', '9L1', '7L1'],\n      rocksmash: ['9L1', '7L1'],\n      roost: ['9L21', '7M', '7L21'],\n      round: ['7M'],\n      scaryface: ['9M'],\n      screech: ['9L30', '7L30'],\n      seedbomb: ['9M', '7T'],\n      skyattack: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      smackdown: ['9M', '7M'],\n      snore: ['7T'],\n      steelwing: ['7M'],\n      substitute: ['9M', '7M'],\n      sunnyday: ['9M', '7M'],\n      supersonic: ['9L13', '7L13'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M'],\n      tailwind: ['9M', '7T'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      throatchop: ['9M'],\n      toxic: ['7M'],\n      uproar: ['9M', '7T'],\n      uturn: ['9M', '7M'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'yungoos',\n    {\n      attract: ['7M'],\n      bide: ['7L16'],\n      bite: ['9L19', '7L19'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L34', '7L34'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      earthquake: ['7M'],\n      echoedvoice: ['7M'],\n      endeavor: ['9M', '9E', '7T'],\n      endure: ['9M'],\n      facade: ['9M', '7M'],\n      firefang: ['9M', '9E', '7E'],\n      frustration: ['7M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hyperfang: ['7L37'],\n      icefang: ['9M', '9E', '7E'],\n      irontail: ['7T'],\n      lastresort: ['9E', '7T', '7E'],\n      leer: ['9L3', '7L3'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L22', '7L22'],\n      odorsleuth: ['7L13'],\n      payback: ['9L7', '7M'],\n      protect: ['9M', '7M'],\n      psychicfangs: ['9M'],\n      pursuit: ['7L7'],\n      raindance: ['9M'],\n      rest: ['9M', '9L43', '7M', '7L46'],\n      return: ['7M'],\n      revenge: ['7E'],\n      reversal: ['9M'],\n      rocktomb: ['9M', '7M'],\n      round: ['7M'],\n      sandattack: ['9L10', '7L10'],\n      sandstorm: ['9M', '7M'],\n      scaryface: ['9M', '9L31', '7L31'],\n      seedbomb: ['9M'],\n      shockwave: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      snore: ['7T'],\n      stompingtantrum: ['9M', '7T'],\n      substitute: ['9M', '7M'],\n      sunnyday: ['9M'],\n      superfang: ['9M', '9L25', '7T', '7L25'],\n      swagger: ['7M'],\n      tackle: ['9L1', '7L1'],\n      takedown: ['9M', '9L28', '7L28'],\n      taunt: ['9M', '7M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      thrash: ['9L40', '7L43'],\n      thunderfang: ['9M', '9E', '7E'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uproar: ['7T'],\n      uturn: ['9M', '7M'],\n      wildcharge: ['9M'],\n      workup: ['9L13', '7M'],\n      yawn: ['9L37', '7L40'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'gumshoos',\n    {\n      attract: ['7M'],\n      bide: ['7L16'],\n      bite: ['9L19', '7L19'],\n      block: ['7T'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '7M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L39', '7L39'],\n      curse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      dualchop: ['7T'],\n      earthquake: ['9M', '7M'],\n      echoedvoice: ['7M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M'],\n      facade: ['9M', '7M'],\n      firefang: ['9M'],\n      firepunch: ['9M', '7T'],\n      fling: ['9M', '7M'],\n      focuspunch: ['9M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M'],\n      hyperfang: ['7L43'],\n      icefang: ['9M'],\n      icepunch: ['9M', '7T'],\n      ironhead: ['9M', '7T'],\n      irontail: ['7T'],\n      knockoff: ['9M'],\n      lastresort: ['7T'],\n      leer: ['9L1', '7L1'],\n      lowsweep: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L23', '7L23'],\n      odorsleuth: ['7L13'],\n      payback: ['9L1', '7M'],\n      protect: ['9M', '7M'],\n      psychicfangs: ['9M'],\n      pursuit: ['7L1'],\n      raindance: ['9M'],\n      rest: ['9M', '9L52', '7M', '7L55'],\n      return: ['7M'],\n      reversal: ['9M'],\n      roar: ['9M', '7M'],\n      rocktomb: ['9M', '7M'],\n      round: ['7M'],\n      sandattack: ['9L1', '7L1'],\n      sandstorm: ['9M', '7M'],\n      scaryface: ['9M', '9L35', '7L35'],\n      seedbomb: ['9M'],\n      shockwave: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      snore: ['7T'],\n      stompingtantrum: ['9M', '7T'],\n      substitute: ['9M', '7M'],\n      sunnyday: ['9M'],\n      superfang: ['9M', '9L27', '7T', '7L27'],\n      swagger: ['7M'],\n      tackle: ['9L1', '7L1'],\n      takedown: ['9M', '9L31', '7L31'],\n      taunt: ['9M', '7M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      thrash: ['9L47', '7L51'],\n      thunderfang: ['9M'],\n      thunderpunch: ['9M', '7T'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uproar: ['7T'],\n      uturn: ['9M', '7M'],\n      wildcharge: ['9M'],\n      workup: ['9L13', '7M'],\n      yawn: ['9L43', '7L47'],\n      zenheadbutt: ['9M', '7T']\n    }\n  ],\n  [\n    'gumshoostotem',\n    {\n      attract: ['7M'],\n      bide: ['7L16', '7S0'],\n      bite: ['7L19', '7S0'],\n      block: ['7T'],\n      bulldoze: ['7M'],\n      confide: ['7M'],\n      crunch: ['7L39'],\n      doubleteam: ['7M'],\n      dualchop: ['7T'],\n      earthquake: ['7M'],\n      echoedvoice: ['7M'],\n      endeavor: ['7T'],\n      facade: ['7M'],\n      firepunch: ['7T'],\n      fling: ['7M'],\n      frustration: ['7M'],\n      hiddenpower: ['7M'],\n      hyperfang: ['7L43'],\n      icepunch: ['7T'],\n      ironhead: ['7T'],\n      irontail: ['7T'],\n      lastresort: ['7T'],\n      leer: ['7L1'],\n      mudslap: ['7L23'],\n      odorsleuth: ['7L13', '7S0'],\n      payback: ['7M'],\n      protect: ['7M'],\n      pursuit: ['7L1'],\n      rest: ['7M', '7L55'],\n      return: ['7M'],\n      roar: ['7M'],\n      rocktomb: ['7M'],\n      round: ['7M'],\n      sandattack: ['7L1', '7S0'],\n      sandstorm: ['7M'],\n      scaryface: ['7L35'],\n      shockwave: ['7T'],\n      sleeptalk: ['7M'],\n      snore: ['7T'],\n      stompingtantrum: ['7T'],\n      substitute: ['7M'],\n      superfang: ['7T', '7L27'],\n      swagger: ['7M'],\n      tackle: ['7L1'],\n      takedown: ['7L31'],\n      taunt: ['7M'],\n      thief: ['7M'],\n      thrash: ['7L51'],\n      thunderpunch: ['7T'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      uproar: ['7T'],\n      uturn: ['7M'],\n      workup: ['7M'],\n      yawn: ['7L47'],\n      zenheadbutt: ['7T']\n    }\n  ],\n  [\n    'grubbin',\n    {\n      acrobatics: ['8M', '7M', '7L19'],\n      attract: ['8M', '7M'],\n      batonpass: ['9M'],\n      bite: ['9L15', '8L15', '7L10'],\n      bugbite: ['9M', '9L10', '8L10', '7T', '7L13'],\n      charge: ['9M'],\n      chargebeam: ['9M', '7M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L35', '8M', '8L35', '7L22'],\n      dig: ['9M', '9L40', '8M', '8L40', '7L28'],\n      discharge: ['9E', '8E'],\n      doubleteam: ['7M'],\n      electricterrain: ['9M'],\n      electroweb: ['9M', '8M', '7T', '7E'],\n      endure: ['9M', '8M', '7E'],\n      facade: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      harden: ['9E', '8E', '7E'],\n      hiddenpower: ['7M'],\n      lightscreen: ['9M', '8M', '7M'],\n      lunge: ['9M'],\n      magnetrise: ['7T'],\n      mudshot: ['9M', '8M', '7E'],\n      mudslap: ['9M', '9L1', '8L1', '7L7'],\n      poisonjab: ['9M', '8M', '7M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      screech: ['8M'],\n      shockwave: ['7T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L21', '8L21', '7L16'],\n      stickyweb: ['9L25', '8L25'],\n      stringshot: ['9L5', '8L5', '7L4'],\n      strugglebug: ['9M'],\n      substitute: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderbolt: ['9M', '8M', '7M'],\n      thunderwave: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      visegrip: ['9L1', '8L1', '7L1'],\n      voltswitch: ['9M', '8M', '7M'],\n      wildcharge: ['9M', '8M', '7M'],\n      xscissor: ['9M', '9L30', '8M', '8L30', '7M', '7L25']\n    }\n  ],\n  [\n    'charjabug',\n    {\n      acrobatics: ['8M', '7M', '7L19'],\n      attract: ['8M', '7M'],\n      batonpass: ['9M'],\n      bite: ['9L15', '8L15', '7L1'],\n      bugbite: ['9M', '9L1', '8L1', '7T', '7L13'],\n      charge: ['9M', '9L0', '8L0', '7L1'],\n      chargebeam: ['9M', '7M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L43', '8M', '8L43', '7L25'],\n      dig: ['9M', '9L50', '8M', '8L50', '7L37'],\n      discharge: ['9L64', '8L64', '7L43'],\n      doubleteam: ['7M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      hiddenpower: ['7M'],\n      irondefense: ['9M', '9L57', '8M', '8L57', '7T', '7L49'],\n      lightscreen: ['9M', '8M', '7M'],\n      lunge: ['9M'],\n      magnetrise: ['7T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L1'],\n      poisonjab: ['9M', '8M', '7M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      screech: ['8M'],\n      shockwave: ['7T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['9L23', '8L23', '7L16'],\n      stickyweb: ['9L29', '8L29'],\n      stringshot: ['9L1', '8L1', '7L1'],\n      strugglebug: ['9M'],\n      substitute: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M', '8M', '7M'],\n      thunderwave: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      visegrip: ['9L1', '8L1', '7L1'],\n      voltswitch: ['9M', '8M', '7M'],\n      wildcharge: ['9M', '8M', '7M'],\n      xscissor: ['9M', '9L36', '8M', '8L36', '7M', '7L31']\n    }\n  ],\n  [\n    'vikavolt',\n    {\n      acrobatics: ['9M', '8M', '7M', '7L19'],\n      agility: ['9M', '9L57', '8M', '8L57', '7L49'],\n      airslash: ['9M', '8M', '7L1'],\n      attract: ['8M', '7M'],\n      batonpass: ['9M'],\n      bite: ['9L15', '8L15', '7L1'],\n      bugbite: ['9M', '9L1', '8L1', '7T', '7L13'],\n      bugbuzz: ['9M', '9L36', '8M', '8L36', '7L31'],\n      bulldoze: ['9M'],\n      charge: ['9M', '9L1', '8L1', '7L1'],\n      chargebeam: ['9M', '7M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L1', '8M', '8L1'],\n      dig: ['9M', '9L1', '8M', '8L1', '7L37'],\n      discharge: ['9L1', '8L1'],\n      doubleteam: ['7M'],\n      dualwingbeat: ['8T'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      flashcannon: ['9M', '8M', '7M'],\n      fly: ['9M', '9L50', '8M', '8L50'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      guillotine: ['9L43', '8L43', '7L25'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      irondefense: ['9M', '9L1', '8M', '8L1', '7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['9M', '8M', '7M'],\n      lunge: ['9M'],\n      magnetrise: ['7T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L1'],\n      poisonjab: ['9M', '8M', '7M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      risingvoltage: ['8T'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      screech: ['8M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      skittersmack: ['9M', '8T'],\n      skydrop: ['7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      spark: ['9L23', '8L23', '7L16'],\n      stickyweb: ['9L29', '8L29'],\n      stringshot: ['9L1', '8L1', '7L1'],\n      strugglebug: ['9M'],\n      substitute: ['9M', '8M', '7M'],\n      supercellslam: ['9M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M'],\n      thunderbolt: ['9M', '9L0', '8M', '8L0', '7M', '7L1'],\n      thunderwave: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      visegrip: ['9L1', '8L1', '7L1'],\n      voltswitch: ['9M', '8M', '7M'],\n      wildcharge: ['9M', '8M', '7M'],\n      xscissor: ['9M', '9L1', '8M', '8L1', '7M'],\n      zapcannon: ['9L64', '8L64', '7L41']\n    }\n  ],\n  [\n    'vikavolttotem',\n    {\n      acrobatics: ['7M', '7L19', '7S0'],\n      agility: ['7L49'],\n      airslash: ['7L1'],\n      attract: ['7M'],\n      bite: ['7L1'],\n      bugbite: ['7T', '7L13'],\n      bugbuzz: ['7L31', '7S0'],\n      charge: ['7L1'],\n      chargebeam: ['7M'],\n      confide: ['7M'],\n      dig: ['7L37'],\n      doubleteam: ['7M'],\n      electroweb: ['7T'],\n      energyball: ['7M'],\n      facade: ['7M'],\n      flashcannon: ['7M'],\n      frustration: ['7M'],\n      gigaimpact: ['7M'],\n      guillotine: ['7L25', '7S0'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['7M'],\n      irondefense: ['7T'],\n      laserfocus: ['7T'],\n      lightscreen: ['7M'],\n      magnetrise: ['7T'],\n      mudslap: ['7L1'],\n      poisonjab: ['7M'],\n      protect: ['7M'],\n      raindance: ['7M'],\n      rest: ['7M'],\n      return: ['7M'],\n      roost: ['7M'],\n      round: ['7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      skydrop: ['7M'],\n      sleeptalk: ['7M'],\n      snore: ['7T'],\n      solarbeam: ['7M'],\n      spark: ['7L16', '7S0'],\n      stringshot: ['7L1'],\n      substitute: ['7M'],\n      swagger: ['7M'],\n      thunder: ['7M'],\n      thunderbolt: ['7M', '7L1'],\n      thunderwave: ['7M'],\n      toxic: ['7M'],\n      visegrip: ['7L1'],\n      voltswitch: ['7M'],\n      wildcharge: ['7M'],\n      xscissor: ['7M'],\n      zapcannon: ['7L41']\n    }\n  ],\n  [\n    'crabrawler',\n    {\n      amnesia: ['9M', '7E'],\n      attract: ['7M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '9L22', '7M'],\n      brutalswing: ['7M'],\n      bubble: ['7L1'],\n      bubblebeam: ['9L13', '7L17'],\n      bulkup: ['9M', '7M'],\n      bulldoze: ['9M', '7M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '9L49', '7L49'],\n      coaching: ['9M'],\n      confide: ['7M'],\n      crabhammer: ['9L37', '7L37'],\n      dig: ['9M'],\n      dizzypunch: ['7L25'],\n      doubleteam: ['7M'],\n      drainpunch: ['9M', '7T'],\n      dualchop: ['7T'],\n      dynamicpunch: ['9L45', '7L45'],\n      earthquake: ['9M', '7M'],\n      endeavor: ['9M', '9E', '7T', '7E'],\n      endure: ['9M'],\n      facade: ['9M', '7M'],\n      fling: ['9M', '7M'],\n      focusblast: ['9M', '7M'],\n      focuspunch: ['9M', '9E', '7T'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      gunkshot: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      icepunch: ['9M', '7T'],\n      irondefense: ['9M', '9L42', '7T', '7L42'],\n      ironhead: ['9M', '7T'],\n      knockoff: ['9M'],\n      leer: ['9L9', '7L9'],\n      liquidation: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      payback: ['9L29', '7M', '7L29'],\n      poweruppunch: ['7L22'],\n      protect: ['9M', '9L17', '7M'],\n      pursuit: ['7L13'],\n      raindance: ['9M', '7M'],\n      rest: ['9M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '9L33', '7L33'],\n      rockslide: ['9M', '7M'],\n      rocksmash: ['9L5', '7L5'],\n      rocktomb: ['9M', '7M'],\n      round: ['7M'],\n      scald: ['7M'],\n      slam: ['9L25'],\n      sleeptalk: ['9M', '7M'],\n      snore: ['7T'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['7M'],\n      substitute: ['9M', '7M'],\n      sunnyday: ['9M', '7M'],\n      superpower: ['9E', '7T', '7E'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      thunderpunch: ['9M', '7T'],\n      toxic: ['7M'],\n      upperhand: ['9M'],\n      visegrip: ['9L1'],\n      wideguard: ['9E', '7E'],\n      workup: ['7M'],\n      zenheadbutt: ['9M', '7T']\n    }\n  ],\n  [\n    'crabominable',\n    {\n      amnesia: ['9M'],\n      attract: ['7M'],\n      avalanche: ['9M', '9L29', '7L29'],\n      blizzard: ['9M', '7M'],\n      block: ['7T'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '9L22', '7M'],\n      brutalswing: ['7M'],\n      bubble: ['7L1'],\n      bubblebeam: ['9L17', '7L17'],\n      bulkup: ['9M', '7M'],\n      bulldoze: ['9M', '7M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '9L49', '7L49'],\n      coaching: ['9M'],\n      confide: ['7M'],\n      dig: ['9M'],\n      dizzypunch: ['7L25'],\n      doubleteam: ['7M'],\n      drainpunch: ['9M', '7T'],\n      dualchop: ['7T'],\n      dynamicpunch: ['9L45', '7L45'],\n      earthquake: ['9M', '7M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M'],\n      facade: ['9M', '7M'],\n      fling: ['9M', '7M'],\n      focusblast: ['9M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '7M'],\n      gunkshot: ['9M'],\n      hail: ['7M'],\n      hardpress: ['9M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '7M'],\n      icehammer: ['9L37', '7L37'],\n      icepunch: ['9M', '9L0', '7T', '7L1'],\n      icespinner: ['9M'],\n      icywind: ['9M', '7T'],\n      irondefense: ['9M', '9L42', '7T', '7L42'],\n      ironhead: ['9M', '7T'],\n      knockoff: ['9M'],\n      leer: ['9L1', '7L1'],\n      liquidation: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      payback: ['7M'],\n      poweruppunch: ['7L22'],\n      protect: ['9M', '9L1', '7M'],\n      pursuit: ['7L1'],\n      raindance: ['9M', '7M'],\n      rest: ['9M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '9L33', '7L33'],\n      rockslide: ['9M', '7M'],\n      rocksmash: ['9L1', '7L1'],\n      rocktomb: ['9M', '7M'],\n      round: ['7M'],\n      scald: ['7M'],\n      scaryface: ['9M'],\n      slam: ['9L25'],\n      sleeptalk: ['9M', '7M'],\n      snore: ['7T'],\n      snowscape: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['7M'],\n      substitute: ['9M', '7M'],\n      sunnyday: ['9M', '7M'],\n      superpower: ['7T'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '7M'],\n      thunderpunch: ['9M', '7T'],\n      toxic: ['7M'],\n      upperhand: ['9M'],\n      workup: ['7M'],\n      zenheadbutt: ['9M', '7T']\n    }\n  ],\n  [\n    'oricorio',\n    {\n      acrobatics: ['9M', '9L23', '7M'],\n      aerialace: ['9M', '7M'],\n      agility: ['9M', '9L43', '7L46'],\n      aircutter: ['9M', '9L13', '7L13'],\n      airslash: ['9M', '9L36', '7L36'],\n      alluringvoice: ['9M'],\n      attract: ['9E', '7M'],\n      batonpass: ['9M', '9L16', '7L16'],\n      calmmind: ['9M', '7M'],\n      captivate: ['7L33', '7E'],\n      charm: ['9M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      defog: ['9E', '7T'],\n      doubleslap: ['7L23'],\n      doubleteam: ['7M'],\n      dualwingbeat: ['9M'],\n      embargo: ['7M'],\n      endure: ['9M'],\n      facade: ['9M', '7M'],\n      featherdance: ['9M', '9L20', '7L20'],\n      flatter: ['9L33'],\n      fly: ['9M', '7M'],\n      frustration: ['7M'],\n      growl: ['9L4', '7L4'],\n      helpinghand: ['9M', '9L10', '7T', '7L10'],\n      hiddenpower: ['7M'],\n      hurricane: ['9M', '9L47', '7L50'],\n      icywind: ['9M', '7T'],\n      mirrormove: ['7L43'],\n      peck: ['9L6', '7L6'],\n      pluck: ['9E', '7E'],\n      pound: ['9L1', '7L1'],\n      protect: ['9M', '7M'],\n      psychup: ['9M'],\n      quash: ['7M'],\n      quiverdance: ['9E'],\n      raindance: ['9M'],\n      rest: ['9M', '7M'],\n      return: ['7M'],\n      revelationdance: ['9L40', '7L40'],\n      reversal: ['9M'],\n      roleplay: ['7T'],\n      roost: ['9L30', '7M', '7L30'],\n      round: ['7M'],\n      safeguard: ['9E', '7M', '7E'],\n      sandstorm: ['9M', '7M'],\n      skyattack: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      snore: ['7T'],\n      steelwing: ['7M'],\n      substitute: ['9M', '7M'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '7M'],\n      tailwind: ['9M', '7T', '7E'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M'],\n      teeterdance: ['9L26', '7L26'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '7M'],\n      workup: ['7M']\n    }\n  ],\n  [\n    'cutiefly',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      acrobatics: ['9M', '8M', '7M'],\n      aerialace: ['7M'],\n      afteryou: ['7T'],\n      allyswitch: ['8M', '7T'],\n      aromatherapy: ['8L30', '7L36'],\n      aromaticmist: ['9E', '8E'],\n      attract: ['8M', '7M'],\n      batonpass: ['9M', '8M', '7E'],\n      bestow: ['7E'],\n      bugbite: ['9M', '7T'],\n      bugbuzz: ['9M', '9L48', '8M', '8L48', '7L26'],\n      calmmind: ['9M', '8M', '7M'],\n      charm: ['9M', '8M'],\n      confide: ['7M'],\n      covet: ['9L30', '7T'],\n      dazzlinggleam: ['9M', '9L42', '8M', '8L42', '7M', '7L31'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '9L18', '8M', '8L18', '7L16'],\n      dreameater: ['7M'],\n      dualwingbeat: ['8T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      fairywind: ['9L1', '8L1', '7L4'],\n      faketears: ['9M', '8M'],\n      frustration: ['7M'],\n      grassknot: ['9M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      imprison: ['9M', '8M'],\n      infestation: ['7M'],\n      lastresort: ['7T'],\n      leechlife: ['9M', '8M', '7M'],\n      lightscreen: ['9M', '8M', '7M'],\n      magicalleaf: ['9M'],\n      magicroom: ['8M', '7T'],\n      moonblast: ['9E', '8E', '7E'],\n      playrough: ['9M', '8M'],\n      pollenpuff: ['9M'],\n      pounce: ['9M'],\n      powder: ['7E'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      psychup: ['9M', '7M'],\n      quiverdance: ['9L54', '8L54', '7L41'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      signalbeam: ['7T'],\n      silverwind: ['7L13'],\n      skillswap: ['9M', '8M', '7T', '7E'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      speedswap: ['8M', '7E'],\n      stickyweb: ['9E', '8E', '7E'],\n      strugglebug: ['9M', '9L24', '8L24', '7L10'],\n      stunspore: ['9L6', '8L6', '7L7'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      sweetscent: ['9L12', '8L12', '7L21'],\n      swift: ['9M', '8M'],\n      switcheroo: ['9L36', '8L36'],\n      tailwind: ['9M', '7T'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T'],\n      uturn: ['9M', '8M', '7M'],\n      wonderroom: ['8M', '7T']\n    }\n  ],\n  [\n    'ribombee',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      acrobatics: ['9M', '8M', '7M'],\n      aerialace: ['7M'],\n      afteryou: ['7T'],\n      agility: ['9M'],\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      aromatherapy: ['8L32', '7L42'],\n      attract: ['8M', '7M'],\n      batonpass: ['9M', '8M'],\n      bugbite: ['9M', '7T'],\n      bugbuzz: ['9M', '9L56', '8M', '8L56', '7L28'],\n      calmmind: ['9M', '8M', '7M'],\n      charm: ['9M', '8M'],\n      confide: ['7M'],\n      covet: ['9L32', '8L1', '7T'],\n      dazzlinggleam: ['9M', '9L48', '8M', '8L48', '7M', '7L35'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '9L18', '8M', '8L18', '7L16'],\n      dreameater: ['7M'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      fairywind: ['9L1', '8L1', '7L1'],\n      faketears: ['9M', '8M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      infestation: ['7M'],\n      lastresort: ['7T'],\n      leechlife: ['9M', '8M', '7M'],\n      lightscreen: ['9M', '8M', '7M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M', '8M'],\n      magicroom: ['8M', '7T'],\n      naturepower: ['7M'],\n      playrough: ['9M', '8M'],\n      pollenpuff: ['9M', '9L0', '8M', '8L0', '7L1'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M'],\n      quiverdance: ['9L64', '8L64', '7L49'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      signalbeam: ['7T'],\n      silverwind: ['7L13'],\n      skillswap: ['9M', '8M', '7T'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      speedswap: ['8M'],\n      storedpower: ['9M'],\n      strugglebug: ['9M', '9L24', '8L24', '7L1'],\n      stunspore: ['9L1', '8L1', '7L1'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      sweetscent: ['9L1', '8L1', '7L21'],\n      swift: ['9M', '8M'],\n      switcheroo: ['9L40', '8L40'],\n      tailwind: ['9M', '7T'],\n      takedown: ['9M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T'],\n      uturn: ['9M', '8M', '7M'],\n      wonderroom: ['8M', '7T']\n    }\n  ],\n  [\n    'ribombeetotem',\n    {\n      absorb: ['7L1'],\n      acrobatics: ['7M'],\n      aerialace: ['7M'],\n      afteryou: ['7T'],\n      allyswitch: ['7T'],\n      aromatherapy: ['7L42', '7S0'],\n      attract: ['7M'],\n      bugbite: ['7T'],\n      bugbuzz: ['7L28', '7S0'],\n      calmmind: ['7M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dazzlinggleam: ['7M', '7L35', '7S0'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      drainingkiss: ['7L16'],\n      dreameater: ['7M'],\n      energyball: ['7M'],\n      facade: ['7M'],\n      fairywind: ['7L1'],\n      frustration: ['7M'],\n      helpinghand: ['7T'],\n      hiddenpower: ['7M'],\n      infestation: ['7M'],\n      lastresort: ['7T'],\n      leechlife: ['7M'],\n      lightscreen: ['7M'],\n      magicroom: ['7T'],\n      naturepower: ['7M'],\n      pollenpuff: ['7L1'],\n      protect: ['7M'],\n      psychic: ['7M'],\n      psychup: ['7M'],\n      quiverdance: ['7L49', '7S0'],\n      reflect: ['7M'],\n      rest: ['7M'],\n      return: ['7M'],\n      roost: ['7M'],\n      round: ['7M'],\n      safeguard: ['7M'],\n      signalbeam: ['7T'],\n      silverwind: ['7L13'],\n      skillswap: ['7T'],\n      sleeptalk: ['7M'],\n      snore: ['7T'],\n      solarbeam: ['7M'],\n      strugglebug: ['7L1'],\n      stunspore: ['7L1'],\n      substitute: ['7M'],\n      sunnyday: ['7M'],\n      swagger: ['7M'],\n      sweetscent: ['7L21'],\n      tailwind: ['7T'],\n      telekinesis: ['7T'],\n      thief: ['7M'],\n      toxic: ['7M'],\n      trick: ['7T'],\n      uturn: ['7M'],\n      wonderroom: ['7T']\n    }\n  ],\n  [\n    'rockruff',\n    {\n      attract: ['8M', '7M'],\n      bite: ['9L20', '8L20', '7L7'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      charm: ['9M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      crunch: ['9M', '9L36', '8M', '8L36', '7L40'],\n      crushclaw: ['7E'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['9L8', '8L8', '7M'],\n      earthpower: ['9M', '8M', '7T'],\n      echoedvoice: ['7M'],\n      endeavor: ['9M', '9E', '8E', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      firefang: ['9M', '8M', '7E'],\n      frustration: ['7M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      howl: ['9L16', '8L16', '7L12'],\n      hypervoice: ['9M', '8M', '7T'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      lastresort: ['9E', '8E', '7T'],\n      leer: ['9L1', '8L1', '7L1'],\n      mudslap: ['9M'],\n      odorsleuth: ['7L18'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M'],\n      psychicfangs: ['9M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roar: ['9M', '9L28', '8L28', '7M', '7L26'],\n      rockclimb: ['7L45'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '9L32', '8M', '8L32', '7M', '7L34'],\n      rockthrow: ['9L12', '8L12', '7L15'],\n      rocktomb: ['9M', '9L24', '8M', '8L24', '7M', '7L23'],\n      round: ['8M', '7M'],\n      sandattack: ['9L4', '8L4', '7L4'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '9L40', '8M', '8L40', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '9L44', '8M', '8L44', '7T', '7L29'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L48', '8M', '8L48', '7M', '7L48'],\n      substitute: ['9M', '8M', '7M'],\n      suckerpunch: ['9E', '7E'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '8M'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      thrash: ['9E', '8E', '7E'],\n      thunderfang: ['9M', '8M', '7E'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'rockruffdusk',\n    {\n      attract: ['8M', '7M'],\n      bite: ['9L20', '8L20', '7L7', '7S1', '7S0'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      charm: ['9M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      crunch: ['9M', '9L36', '8M', '8L36', '7L40'],\n      crushclaw: ['7E'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['9L8', '8L8', '7M'],\n      earthpower: ['9M', '8M', '7T'],\n      echoedvoice: ['7M'],\n      endeavor: ['9M', '9E', '8E', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      firefang: ['9M', '8M', '7E', '7S0'],\n      frustration: ['7M'],\n      happyhour: ['7S1', '7S0'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      howl: ['9L16', '8L16', '7L12'],\n      hypervoice: ['9M', '8M', '7T'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      lastresort: ['9E', '8E', '7T'],\n      leer: ['9L1', '8L1', '7L1'],\n      mudslap: ['9M'],\n      odorsleuth: ['7L18'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M'],\n      psychicfangs: ['9M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roar: ['9M', '9L28', '8L28', '7M', '7L26'],\n      rockclimb: ['7L45'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '9L32', '8M', '8L32', '7M', '7L34'],\n      rockthrow: ['9L12', '8L12', '7L15'],\n      rocktomb: ['9M', '9L24', '8M', '8L24', '7M', '7L23'],\n      round: ['8M', '7M'],\n      sandattack: ['9L4', '8L4', '7L4'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '9L40', '8M', '8L40', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '9L44', '8M', '8L44', '7T', '7L29'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L48', '8M', '8L48', '7M', '7L48'],\n      substitute: ['9M', '8M', '7M'],\n      suckerpunch: ['9E', '7E'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '8M'],\n      tackle: ['9L1', '8L1', '7L1', '7S1', '7S0'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      thrash: ['9E', '8E', '7E'],\n      thunderfang: ['9M', '8M', '7E', '7S1'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'lycanroc',\n    {\n      accelerock: ['9L1', '8L1', '7L1'],\n      agility: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M'],\n      bite: ['9L20', '8L20', '7L1'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M'],\n      charm: ['9M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      crunch: ['9M', '9L42', '8M', '8L42', '7L40'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['9L1', '8L1', '7M'],\n      drillrun: ['9M', '8M', '7T'],\n      earthpower: ['9M', '8M', '7T'],\n      echoedvoice: ['7M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      firefang: ['9M', '8M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      howl: ['9L16', '8L16', '7L12'],\n      hypervoice: ['9M', '8M', '7T'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      lastresort: ['7T'],\n      leer: ['9L1', '8L1', '7L1'],\n      mudslap: ['9M'],\n      odorsleuth: ['7L18'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M'],\n      psychicfangs: ['9M', '8M'],\n      quickattack: ['9L1', '8L1', '7L1'],\n      quickguard: ['9L1', '8L1', '7L1'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roar: ['9M', '9L30', '8L30', '7M', '7L26'],\n      rockblast: ['9M', '8M'],\n      rockclimb: ['7L45'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '9L36', '8M', '8L36', '7M', '7L34'],\n      rockthrow: ['9L12', '8L12', '7L15'],\n      rocktomb: ['9M', '9L24', '8M', '8L24', '7M', '7L23'],\n      round: ['8M', '7M'],\n      sandattack: ['9L1', '8L1', '7L1'],\n      sandstorm: ['9M', '8M'],\n      scaryface: ['9M', '9L48', '8M', '8L48', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '9L54', '8M', '8L54', '7T', '7L29'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L60', '8M', '8L60', '7M', '7L48'],\n      substitute: ['9M', '8M', '7M'],\n      suckerpunch: ['9L0', '8L0'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M'],\n      tackle: ['9L1', '8L1', '7L1'],\n      tailslap: ['8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'lycanrocmidnight',\n    {\n      attract: ['8M', '7M'],\n      bite: ['9L20', '8L20', '7L1'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M'],\n      charm: ['9M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      counter: ['9L0', '8L0', '7L1'],\n      covet: ['7T'],\n      crunch: ['9M', '9L42', '8M', '8L42', '7L40'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['9L1', '8L1', '7M'],\n      dualchop: ['7T'],\n      earthpower: ['9M', '8M', '7T'],\n      echoedvoice: ['7M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '9L1', '8M', '8L1'],\n      facade: ['9M', '8M', '7M'],\n      firefang: ['9M', '8M', '7S0'],\n      firepunch: ['9M', '8M', '7T'],\n      fling: ['9M'],\n      focuspunch: ['9M', '7T'],\n      foulplay: ['9M', '8M', '7T'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      howl: ['9L16', '8L16', '7L12'],\n      hypervoice: ['9M', '8M', '7T'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      knockoff: ['9M'],\n      laserfocus: ['7T'],\n      lashout: ['9M', '8T'],\n      lastresort: ['7T'],\n      leer: ['9L1', '8L1', '7L1'],\n      lowsweep: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudslap: ['9M'],\n      odorsleuth: ['7L18'],\n      outrage: ['9M', '8M', '7T'],\n      payback: ['8M'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M'],\n      psychicfangs: ['9M', '8M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L1', '8M', '8L1', '7L1'],\n      roar: ['9M', '9L30', '8L30', '7M', '7L26'],\n      rockblast: ['9M', '8M'],\n      rockclimb: ['7L45'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '9L36', '8M', '8L36', '7M', '7L34'],\n      rockthrow: ['9L12', '8L12', '7L15'],\n      rocktomb: ['9M', '9L24', '8M', '8L24', '7M', '7L23'],\n      round: ['8M', '7M'],\n      sandattack: ['9L1', '8L1', '7L1'],\n      sandstorm: ['9M', '8M'],\n      scaryface: ['9M', '9L48', '8M', '8L48', '7L37'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '9L54', '8M', '8L54', '7T', '7L29'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L60', '8M', '8L60', '7M', '7L48', '7S0'],\n      substitute: ['9M', '8M', '7M'],\n      suckerpunch: ['7S0'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '8M', '7M', '7S0'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '8M', '8L1', '7M', '7L1'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M', '7T'],\n      thunderfang: ['9M', '8M'],\n      thunderpunch: ['9M', '8M', '7T'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['8M', '7T'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'lycanrocdusk',\n    {\n      accelerock: ['9L1', '8L1', '7L1'],\n      attract: ['8M', '7M'],\n      bite: ['9L20', '8L20', '7L1'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M'],\n      charm: ['9M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      counter: ['9L1', '8L1', '7L1'],\n      covet: ['7T'],\n      crunch: ['9M', '9L42', '8M', '8L42', '7L40'],\n      crushclaw: ['9L0', '8L0'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doubleteam: ['9L1', '8L1', '7M'],\n      drillrun: ['9M', '8M', '7T'],\n      earthpower: ['9M', '8M', '7T'],\n      echoedvoice: ['7M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '9L1', '8M', '8L1'],\n      facade: ['9M', '8M', '7M'],\n      firefang: ['9M', '8M'],\n      focusenergy: ['8M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      howl: ['9L16', '8L16', '7L12'],\n      hypervoice: ['9M', '8M', '7T'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      lastresort: ['7T'],\n      leer: ['9L1', '8L1', '7L1'],\n      mudslap: ['9M'],\n      odorsleuth: ['7L18'],\n      outrage: ['9M', '8M', '7T'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M'],\n      psychicfangs: ['9M', '8M'],\n      quickattack: ['9L1', '8L1'],\n      quickguard: ['9L1', '8L1'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '9L1', '8M', '8L1'],\n      roar: ['9M', '9L30', '8L30', '7M', '7L26'],\n      rockblast: ['9M', '8M'],\n      rockclimb: ['7L45'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '9L36', '8M', '8L36', '7M', '7L34'],\n      rockthrow: ['9L12', '8L12', '7L15'],\n      rocktomb: ['9M', '9L24', '8M', '8L24', '7M', '7L23'],\n      round: ['8M', '7M'],\n      sandattack: ['9L1', '8L1', '7L1'],\n      sandstorm: ['9M', '8M'],\n      scaryface: ['9M', '9L48', '8M', '8L48', '7L37'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '9L54', '8M', '8L54', '7T', '7L29'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '9L60', '8M', '8L60', '7M', '7L48'],\n      substitute: ['9M', '8M', '7M'],\n      suckerpunch: ['9L1', '8L1'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '8M', '7M'],\n      tackle: ['9L1', '8L1', '7L1'],\n      tailslap: ['8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '8M', '8L1', '7M'],\n      terablast: ['9M'],\n      thrash: ['7L1'],\n      throatchop: ['9M'],\n      thunderfang: ['9M', '8M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      workup: ['8M'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'wishiwashi',\n    {\n      aquaring: ['8L36', '7L17'],\n      aquatail: ['8L32', '7T', '7L38'],\n      attract: ['8M', '7M'],\n      beatup: ['8M', '8L8', '7L33'],\n      brine: ['8M', '8L12', '7L14'],\n      bulldoze: ['8M', '7M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dive: ['8M', '8L20', '7L30'],\n      doubleedge: ['8L48', '7L41'],\n      doubleteam: ['7M'],\n      earthquake: ['8M', '7M'],\n      endeavor: ['8L40', '7T', '7L49'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      feintattack: ['7L9'],\n      flipturn: ['8T'],\n      frustration: ['7M'],\n      growl: ['8L1', '7L1'],\n      hail: ['8M', '7M'],\n      helpinghand: ['8M', '8L4', '7T', '7L6'],\n      hiddenpower: ['7M'],\n      hydropump: ['8M', '8L44', '7L54'],\n      icebeam: ['8M', '7M'],\n      irontail: ['8M', '7T'],\n      liquidation: ['8M'],\n      mist: ['8E', '7E'],\n      muddywater: ['8M', '7E'],\n      mudshot: ['8M'],\n      protect: ['8M', '7M'],\n      raindance: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      scaleshot: ['8T'],\n      sleeptalk: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      soak: ['8L24', '7L46'],\n      substitute: ['8M', '7M'],\n      surf: ['8M', '7M'],\n      swagger: ['7M'],\n      takedown: ['8E', '7L25'],\n      tearfullook: ['8L16', '7L22'],\n      toxic: ['7M'],\n      uproar: ['8M', '8L28'],\n      uturn: ['8M', '7M'],\n      waterfall: ['8M', '7M'],\n      watergun: ['8L1', '7L1'],\n      waterpulse: ['8E', '7T', '7E'],\n      watersport: ['7E'],\n      whirlpool: ['8M', '7E']\n    }\n  ],\n  [\n    'mareanie',\n    {\n      acidspray: ['9M', '9L40'],\n      afteryou: ['7T'],\n      attract: ['8M', '7M'],\n      bite: ['9L10', '8L10', '7L9'],\n      blizzard: ['9M', '8M', '7M'],\n      brine: ['8M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      doubleteam: ['7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      gastroacid: ['7T'],\n      gunkshot: ['9M', '8M', '7T'],\n      hail: ['8M', '7M'],\n      haze: ['9M', '9E', '8E', '7E'],\n      hiddenpower: ['7M'],\n      hydropump: ['9M', '8M'],\n      icebeam: ['9M', '8M', '7M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T'],\n      infestation: ['9E', '8E', '7M'],\n      irondefense: ['9M', '8M', '7T'],\n      knockoff: ['7T'],\n      liquidation: ['9M', '9L35', '8M', '8L35', '7T', '7L49'],\n      lunge: ['9M'],\n      magiccoat: ['7T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      painsplit: ['9M', '7T'],\n      payback: ['8M', '7M'],\n      peck: ['9L1', '8L1', '7L5'],\n      pinmissile: ['9L25', '8M', '8L25', '7L45'],\n      poisonjab: ['9M', '9L45', '8M', '8L45', '7M', '7L37'],\n      poisonsting: ['9L1', '8L1', '7L1'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      recover: ['9L20', '8L20', '7L33'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '7M'],\n      sludgewave: ['9M', '8M', '7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      spikecannon: ['7L29'],\n      spite: ['7T'],\n      spitup: ['9E', '8E', '7E'],\n      stockpile: ['9E', '8E', '7E', '7S0'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swallow: ['9E', '8E', '7E', '7S0'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L50', '8L50', '7M', '7L21', '7S0'],\n      toxicspikes: ['9M', '9L30', '8M', '8L30', '7L13'],\n      venomdrench: ['8M', '8L40', '7L41'],\n      venoshock: ['9M', '9L15', '8M', '8L15', '7M', '7L25'],\n      waterpulse: ['9M', '7T'],\n      wideguard: ['9L5', '8L5', '7L17']\n    }\n  ],\n  [\n    'toxapex',\n    {\n      acidspray: ['9M', '9L42'],\n      afteryou: ['7T'],\n      attract: ['8M', '7M'],\n      banefulbunker: ['9L0', '8L0', '7L1'],\n      bite: ['9L1', '8L1', '7L1'],\n      blizzard: ['9M', '8M', '7M'],\n      block: ['7T'],\n      bodyslam: ['9M'],\n      brine: ['8M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      crosspoison: ['8M'],\n      doubleteam: ['7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      gastroacid: ['7T'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M', '8M', '7T'],\n      hail: ['8M', '7M'],\n      haze: ['9M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '8M', '7M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T'],\n      infestation: ['7M'],\n      irondefense: ['9M', '8M', '7T'],\n      knockoff: ['7T'],\n      lightscreen: ['8M', '7M'],\n      liquidation: ['9M', '9L35', '8M', '8L35', '7T', '7L58'],\n      lunge: ['9M'],\n      magiccoat: ['7T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      painsplit: ['9M', '7T'],\n      payback: ['8M', '7M'],\n      peck: ['9L1', '8L1', '7L1'],\n      pinmissile: ['9L25', '8M', '8L25', '7L51'],\n      poisonjab: ['9M', '9L49', '8M', '8L49', '7M', '7L37'],\n      poisonsting: ['9L1', '8L1', '7L1'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      recover: ['9L20', '8L20', '7L33'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '7M'],\n      sludgewave: ['9M', '8M', '7M'],\n      smackdown: ['9M', '7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      spikecannon: ['7L29'],\n      spite: ['7T'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L56', '8L56', '7M', '7L21'],\n      toxicspikes: ['9M', '9L30', '8M', '8L30', '7L1'],\n      venomdrench: ['8M', '8L42', '7L44'],\n      venoshock: ['9M', '9L15', '8M', '8L15', '7M', '7L25'],\n      waterpulse: ['9M', '7T'],\n      wideguard: ['9L1', '8L1', '7L17']\n    }\n  ],\n  [\n    'mudbray',\n    {\n      attract: ['8M', '7M'],\n      bide: ['7L22'],\n      bodyslam: ['9M', '8M', '7E'],\n      bulldoze: ['9M', '9L12', '8M', '8L12', '7M', '7L10'],\n      closecombat: ['9M', '8M', '7E'],\n      confide: ['7M'],\n      counter: ['9L24', '8L24', '7L36'],\n      curse: ['9M'],\n      doubleedge: ['9M', '9E', '8E', '7E'],\n      doublekick: ['9L8', '8L8', '7L15'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '8M', '7T'],\n      earthquake: ['9M', '9L36', '8M', '8L36', '7M', '7L38'],\n      endeavor: ['9M', '9E', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fissure: ['9E', '8E'],\n      frustration: ['7M'],\n      heavyslam: ['9M', '9L32', '8M', '8L32', '7L31'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['9M', '9L28', '8M', '8L28', '7L24'],\n      irondefense: ['9M', '9L4', '8M', '8L4', '7T', '7L29'],\n      ironhead: ['9M', '8M', '7T'],\n      lowkick: ['9M', '8M', '7T'],\n      lowsweep: ['9M', '8M', '7M'],\n      magnitude: ['7E'],\n      megakick: ['9L40', '8M', '8L40', '7L43'],\n      mudbomb: ['7E'],\n      mudslap: ['9M', '9L1', '8L1', '7L1'],\n      mudsport: ['7L3'],\n      payback: ['8M', '7M'],\n      protect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roar: ['9M', '9E', '8E', '7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocksmash: ['9L1', '8L1'],\n      rocktomb: ['9M', '8M', '7M'],\n      rototiller: ['7L8'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M'],\n      sandtomb: ['9M', '8M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smackdown: ['9M', '9E', '8E'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '8M', '7T'],\n      stomp: ['9L16', '8L16', '7L17'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M'],\n      strength: ['9L20', '8L20'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M'],\n      superpower: ['9L44', '8M', '8L44', '7T', '7L45'],\n      swagger: ['7M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M']\n    }\n  ],\n  [\n    'mudsdale',\n    {\n      attract: ['8M', '7M'],\n      bide: ['7L22'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '9L12', '8M', '8L12', '7M', '7L1'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      counter: ['9L24', '8L24', '7L42'],\n      curse: ['9M'],\n      doubleedge: ['9M'],\n      doublekick: ['9L1', '8L1', '7L15'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '8M', '7T'],\n      earthquake: ['9M', '9L40', '8M', '8L40', '7M', '7L47'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      focusblast: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      heavyslam: ['9M', '9L34', '8M', '8L34', '7L34'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['9M', '9L28', '8M', '8L28', '7L24'],\n      hyperbeam: ['9M', '8M'],\n      irondefense: ['9M', '9L1', '8M', '8L1', '7T', '7L29'],\n      ironhead: ['9M', '8M', '7T'],\n      lashout: ['9M', '8T'],\n      lowkick: ['9M', '8M', '7T'],\n      lowsweep: ['9M', '8M', '7M'],\n      megakick: ['9L46', '8M', '8L46', '7L55'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9L1', '8L1', '7L1'],\n      mudsport: ['7L1'],\n      payback: ['8M', '7M'],\n      protect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      roar: ['9M', '7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocksmash: ['9L1', '8L1'],\n      rocktomb: ['9M', '8M', '7M'],\n      rototiller: ['7L1'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M'],\n      sandtomb: ['9M', '8M'],\n      scaryface: ['9M', '8M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smackdown: ['9M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '8M', '7T'],\n      stomp: ['9L16', '8L16', '7L17'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stoneedge: ['9M'],\n      strength: ['9L20', '8L20'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M'],\n      superpower: ['9L52', '8M', '8L52', '7T', '7L60'],\n      swagger: ['7M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M']\n    }\n  ],\n  [\n    'dewpider',\n    {\n      aquaring: ['9L16', '8L16', '7L24'],\n      attract: ['8M', '7M'],\n      aurorabeam: ['7E'],\n      bite: ['9L8', '8L8', '7L21'],\n      blizzard: ['9M', '8M', '7M'],\n      bubble: ['7L1'],\n      bubblebeam: ['9L12', '8L12', '7L16'],\n      bugbite: ['9M', '9L4', '8L4', '7T', '7L13'],\n      bugbuzz: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L24', '8M', '8L24', '7L32'],\n      doubleteam: ['7M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      entrainment: ['9L32', '8L32', '7L48'],\n      facade: ['9M', '8M', '7M'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      headbutt: ['9L20', '8L20'],\n      hiddenpower: ['7M'],\n      hydropump: ['9M'],\n      icebeam: ['9M', '8M', '7M'],\n      icywind: ['9M', '8M', '7T'],\n      infestation: ['9L1', '8L1', '7M', '7L5'],\n      irondefense: ['9M', '8M', '7T'],\n      leechlife: ['9M', '9L44', '8M', '8L44', '7M', '7L29'],\n      liquidation: ['9M', '9L40', '8M', '8L40', '7T', '7L45'],\n      lunge: ['9M', '9L36', '8L36', '7L37'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      mirrorcoat: ['9L48', '8L48', '7L40'],\n      poisonjab: ['9M', '8M', '7M'],\n      pounce: ['9M'],\n      powersplit: ['9E', '8E', '7E'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      signalbeam: ['7T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      soak: ['9L28', '8L28'],\n      spiderweb: ['7L8'],\n      spitup: ['9E', '8E', '7E'],\n      stickyweb: ['9E', '8E', '7E'],\n      stockpile: ['9E', '8E', '7E'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      waterfall: ['9M', '8M', '7M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '7T'],\n      watersport: ['7L1'],\n      wonderroom: ['8M', '7T'],\n      xscissor: ['9M', '8M', '7M']\n    }\n  ],\n  [\n    'araquanid',\n    {\n      aquaring: ['9L16', '8L16', '7L26'],\n      attract: ['8M', '7M'],\n      bite: ['9L1', '8L1', '7L21'],\n      blizzard: ['9M', '8M', '7M'],\n      bodyslam: ['9M'],\n      bubble: ['7L1'],\n      bubblebeam: ['9L12', '8L12', '7L16'],\n      bugbite: ['9M', '9L1', '8L1', '7T', '7L1'],\n      bugbuzz: ['9M', '8M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L26', '8M', '8L26', '7L38'],\n      dive: ['8M'],\n      doubleteam: ['7M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      entrainment: ['9L38', '8L38', '7L62'],\n      facade: ['9M', '8M', '7M'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L20', '8L20'],\n      hiddenpower: ['7M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '8M', '7M'],\n      icywind: ['9M', '8M', '7T'],\n      infestation: ['9L1', '8L1', '7M', '7L1'],\n      irondefense: ['9M', '8M', '7T'],\n      laserfocus: ['7T'],\n      leechlife: ['9M', '9L56', '8M', '8L56', '7M', '7L33'],\n      liquidation: ['9M', '9L50', '8M', '8L50', '7T', '7L57'],\n      lunge: ['9M', '9L44', '8L44', '7L45'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      mirrorcoat: ['9L62', '8L62', '7L50'],\n      poisonjab: ['9M', '8M', '7M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      scaryface: ['9M'],\n      signalbeam: ['7T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      soak: ['9L32', '8L32', '7L1'],\n      spiderweb: ['7L1'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      waterfall: ['9M', '8M', '7M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '7T'],\n      wideguard: ['9L1', '8L1', '7L1'],\n      wonderroom: ['8M', '7T'],\n      xscissor: ['9M', '8M', '7M']\n    }\n  ],\n  [\n    'araquanidtotem',\n    {\n      aquaring: ['7L26'],\n      attract: ['7M'],\n      bite: ['7L21', '7S0'],\n      blizzard: ['7M'],\n      bubble: ['7L1'],\n      bubblebeam: ['7L16', '7S0'],\n      bugbite: ['7T', '7L1', '7S0'],\n      confide: ['7M'],\n      crunch: ['7L38'],\n      doubleteam: ['7M'],\n      entrainment: ['7L62'],\n      facade: ['7M'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      gigadrain: ['7T'],\n      hiddenpower: ['7M'],\n      icebeam: ['7M'],\n      icywind: ['7T'],\n      infestation: ['7M', '7L1'],\n      irondefense: ['7T'],\n      laserfocus: ['7T'],\n      leechlife: ['7M', '7L33'],\n      liquidation: ['7T', '7L57'],\n      lunge: ['7L45'],\n      magiccoat: ['7T'],\n      magicroom: ['7T'],\n      mirrorcoat: ['7L50'],\n      poisonjab: ['7M'],\n      protect: ['7M'],\n      raindance: ['7M'],\n      reflect: ['7M'],\n      rest: ['7M'],\n      return: ['7M'],\n      round: ['7M'],\n      safeguard: ['7M'],\n      scald: ['7M'],\n      signalbeam: ['7T'],\n      sleeptalk: ['7M'],\n      snore: ['7T'],\n      soak: ['7L1'],\n      spiderweb: ['7L1', '7S0'],\n      substitute: ['7M'],\n      surf: ['7M'],\n      swagger: ['7M'],\n      toxic: ['7M'],\n      waterfall: ['7M'],\n      waterpulse: ['7T'],\n      wideguard: ['7L1'],\n      wonderroom: ['7T'],\n      xscissor: ['7M']\n    }\n  ],\n  [\n    'fomantis',\n    {\n      aromatherapy: ['8E', '7E'],\n      attract: ['8M', '7M'],\n      bugbite: ['9M', '7T'],\n      bulletseed: ['9M', '8M'],\n      confide: ['7M'],\n      defog: ['9E', '8E', '7T', '7E'],\n      doubleteam: ['7M'],\n      dualchop: ['7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      falseswipe: ['9M', '8M', '7M'],\n      fling: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      furycutter: ['9L1', '8L1', '7L1'],\n      gigadrain: ['9M', '8M', '7T', '7E'],\n      grassknot: ['9M', '8M', '7M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growth: ['9L5', '8L5', '7L14'],\n      hiddenpower: ['7M'],\n      ingrain: ['9L10', '8L10', '7L19'],\n      leafage: ['9L1', '8L1', '7L5'],\n      leafblade: ['9L40', '8M', '8L40', '7L23'],\n      leafstorm: ['9M', '8M', '7E'],\n      leechlife: ['9M', '8M', '7M'],\n      magicalleaf: ['9M', '8M'],\n      naturepower: ['7M'],\n      payback: ['8M', '7M'],\n      petalblizzard: ['9M'],\n      poisonjab: ['8M', '7M'],\n      protect: ['9M', '8M', '7M'],\n      razorleaf: ['9L15', '8L15', '7L10'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      signalbeam: ['7T'],\n      skittersmack: ['9M'],\n      slash: ['9L25', '8L25', '7L32'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '9L50', '8M', '8L50', '7M', '7L41'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '9L45', '8M', '8L45', '7M', '7L46'],\n      superpower: ['9E'],\n      swagger: ['7M'],\n      sweetscent: ['9L20', '8L20', '7L37'],\n      swordsdance: ['9M', '8M', '7M'],\n      synthesis: ['9L35', '8L35', '7T', '7L28'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      weatherball: ['9M', '8M', '7E'],\n      worryseed: ['9E', '8E', '7T'],\n      xscissor: ['9M', '9L30', '8M', '8L30', '7M']\n    }\n  ],\n  [\n    'lurantis',\n    {\n      aerialace: ['7M'],\n      attract: ['8M', '7M'],\n      brickbreak: ['9M', '8M', '7M'],\n      bugbite: ['9M', '7T'],\n      bulletseed: ['9M', '8M'],\n      confide: ['7M'],\n      crosspoison: ['8M'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      dualchop: ['8L1', '7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      falseswipe: ['9M', '8M', '7M'],\n      fling: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      furycutter: ['9L1', '8L1', '7L1'],\n      gigadrain: ['9M', '8M', '7T'],\n      gigaimpact: ['9M', '8M', '7M'],\n      grassknot: ['9M', '8M', '7M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L1', '8L1', '7L1'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      ingrain: ['9L1', '8L1', '7L19'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      leafage: ['9L1', '8L1', '7L1'],\n      leafblade: ['9L44', '8M', '8L44', '7L23'],\n      leafstorm: ['9M', '8M'],\n      leechlife: ['9M', '8M', '7M'],\n      lowsweep: ['9M', '8M', '7M'],\n      magicalleaf: ['9M', '8M'],\n      naturepower: ['7M'],\n      nightslash: ['9L1', '8L1', '7L1'],\n      payback: ['8M', '7M'],\n      petalblizzard: ['9M', '9L0', '8L0', '7L1'],\n      poisonjab: ['9M', '8M', '7M'],\n      pollenpuff: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      psychocut: ['8M'],\n      raindance: ['9M'],\n      razorleaf: ['9L15', '8L15', '7L1'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scaryface: ['9M'],\n      seedbomb: ['9M', '8M', '7T'],\n      signalbeam: ['7T'],\n      skittersmack: ['9M'],\n      slash: ['9L25', '8L25', '7L32'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '9L1', '8M', '8L1', '7M'],\n      solarblade: ['9M', '9L63', '8M', '8L63', '7L47'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '9L51', '8M', '8L51', '7M', '7L55'],\n      superpower: ['8M', '7T'],\n      swagger: ['7M'],\n      sweetscent: ['9L20', '8L20', '7L40'],\n      swordsdance: ['9M', '8M', '7M'],\n      synthesis: ['9L37', '8L37', '7T', '7L28'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      weatherball: ['9M', '8M'],\n      worryseed: ['7T'],\n      xscissor: ['9M', '9L30', '8M', '8L30', '7M', '7L1']\n    }\n  ],\n  [\n    'lurantistotem',\n    {\n      aerialace: ['7M'],\n      attract: ['7M'],\n      brickbreak: ['7M'],\n      bugbite: ['7T'],\n      confide: ['7M'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      dualchop: ['7T'],\n      energyball: ['7M'],\n      facade: ['7M'],\n      falseswipe: ['7M'],\n      fling: ['7M'],\n      frustration: ['7M'],\n      furycutter: ['7L1'],\n      gigadrain: ['7T'],\n      gigaimpact: ['7M'],\n      grassknot: ['7M'],\n      growth: ['7L1', '7S0'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['7M'],\n      ingrain: ['7L19', '7S0'],\n      knockoff: ['7T'],\n      laserfocus: ['7T'],\n      leafage: ['7L1'],\n      leafblade: ['7L23', '7S0'],\n      leechlife: ['7M'],\n      lowsweep: ['7M'],\n      naturepower: ['7M'],\n      nightslash: ['7L1'],\n      payback: ['7M'],\n      petalblizzard: ['7L1'],\n      poisonjab: ['7M'],\n      protect: ['7M'],\n      razorleaf: ['7L1'],\n      rest: ['7M'],\n      return: ['7M'],\n      round: ['7M'],\n      safeguard: ['7M'],\n      seedbomb: ['7T'],\n      signalbeam: ['7T'],\n      slash: ['7L32'],\n      sleeptalk: ['7M'],\n      snore: ['7T'],\n      solarbeam: ['7M'],\n      solarblade: ['7L47'],\n      substitute: ['7M'],\n      sunnyday: ['7M', '7L55'],\n      superpower: ['7T'],\n      swagger: ['7M'],\n      sweetscent: ['7L40'],\n      swordsdance: ['7M'],\n      synthesis: ['7T', '7L28', '7S0'],\n      toxic: ['7M'],\n      worryseed: ['7T'],\n      xscissor: ['7M', '7L1']\n    }\n  ],\n  [\n    'morelull',\n    {\n      absorb: ['8L1', '7L1'],\n      afteryou: ['7T'],\n      amnesia: ['8M', '7E'],\n      astonish: ['8L1', '7L4'],\n      attract: ['8M', '7M'],\n      confide: ['7M'],\n      confuseray: ['8L4', '7L25'],\n      dazzlinggleam: ['8M', '8L32', '7M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['8M'],\n      dreameater: ['8L44', '7M', '7L43'],\n      endure: ['8M'],\n      energyball: ['8M', '7M'],\n      facade: ['8M'],\n      flash: ['7L8'],\n      frustration: ['7M'],\n      gigadrain: ['8M', '8L28', '7T', '7L29'],\n      grassknot: ['8M', '7M'],\n      growth: ['8E', '7E'],\n      hiddenpower: ['7M'],\n      ingrain: ['8L8', '7L22'],\n      leechseed: ['8E', '7E'],\n      lightscreen: ['8M', '7M'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      megadrain: ['8L12', '7L15'],\n      moonblast: ['8L40', '7L39'],\n      moonlight: ['8L20', '7L11'],\n      naturepower: ['7M'],\n      poisonpowder: ['8E', '7E'],\n      pollenpuff: ['8M'],\n      protect: ['8M', '7M'],\n      recycle: ['7T'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['8M', '7T'],\n      signalbeam: ['7T'],\n      sleeppowder: ['8L16', '7L18'],\n      sleeptalk: ['8M', '7M'],\n      sludgebomb: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['8M', '7M'],\n      spore: ['8L36', '7L36'],\n      spotlight: ['7L46'],\n      strengthsap: ['8L25', '7L32'],\n      stunspore: ['8E', '7E'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      swagger: ['7M'],\n      synthesis: ['7T'],\n      thunderwave: ['8M', '7M'],\n      toxic: ['7M'],\n      wonderroom: ['8M', '7T'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'shiinotic',\n    {\n      absorb: ['8L1', '7L1'],\n      afteryou: ['7T'],\n      amnesia: ['8M'],\n      astonish: ['8L1', '7L1'],\n      attract: ['8M', '7M'],\n      chargebeam: ['7M'],\n      confide: ['7M'],\n      confuseray: ['8L1', '7L26'],\n      dazzlinggleam: ['8M', '8L38', '7M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['8M'],\n      drainpunch: ['8M'],\n      dreameater: ['8L56', '7M', '7L49'],\n      endure: ['8M'],\n      energyball: ['8M', '7M'],\n      facade: ['8M'],\n      flash: ['7L1'],\n      frustration: ['7M'],\n      gigadrain: ['8M', '8L32', '7T', '7L31'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M'],\n      ingrain: ['8L1', '7L1'],\n      lightscreen: ['8M', '7M'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      megadrain: ['8L12', '7L15'],\n      moonblast: ['8L50', '7L44'],\n      moonlight: ['8L20', '7L11'],\n      naturepower: ['7M'],\n      pollenpuff: ['8M'],\n      protect: ['8M', '7M'],\n      raindance: ['8M'],\n      recycle: ['7T'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['8M', '7T'],\n      signalbeam: ['7T'],\n      sleeppowder: ['8L16', '7L18'],\n      sleeptalk: ['8M', '7M'],\n      sludgebomb: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['8M', '7M'],\n      spore: ['8L44', '7L40'],\n      spotlight: ['7L53'],\n      strengthsap: ['8L27', '7L35'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      swagger: ['7M'],\n      synthesis: ['7T'],\n      thunderwave: ['8M', '7M'],\n      toxic: ['7M'],\n      weatherball: ['8M'],\n      wonderroom: ['8M', '7T'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'salandit',\n    {\n      acidspray: ['9M'],\n      agility: ['9M'],\n      attract: ['8M', '7M'],\n      beatup: ['8M'],\n      belch: ['9E', '8E', '7E'],\n      burningjealousy: ['9M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      doubleslap: ['7L21'],\n      doubleteam: ['7M'],\n      dragonclaw: ['9M', '8M', '7M'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40', '7T', '7L48'],\n      dragonrage: ['7L13'],\n      ember: ['9L10', '8L10', '7L5'],\n      endeavor: ['9M', '9L55', '8L60'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['9E', '8E', '7E'],\n      fireblast: ['9M', '8M', '7M'],\n      firefang: ['9M'],\n      flameburst: ['7L24'],\n      flamecharge: ['9M', '7M'],\n      flamethrower: ['9M', '9L45', '8M', '8L50', '7M', '7L40'],\n      flareblitz: ['9M'],\n      fling: ['9M', '8M', '7M'],\n      foulplay: ['9M', '8M', '7T'],\n      frustration: ['7M'],\n      gunkshot: ['9M', '8M', '7T'],\n      heatwave: ['9M', '8M', '7T'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      incinerate: ['9L30', '8L30'],\n      irontail: ['8M', '7T'],\n      knockoff: ['9M', '7T', '7E'],\n      leechlife: ['9M', '8M', '7M'],\n      mudslap: ['9M', '9E', '8E'],\n      nastyplot: ['9M', '9L25', '8M', '8L25', '7L32'],\n      overheat: ['9M', '8M', '7M'],\n      payback: ['8M', '7M'],\n      poisonfang: ['9L15', '8L15'],\n      poisongas: ['9L1', '8L1', '7L1'],\n      poisonjab: ['9M', '8M', '7M'],\n      poisontail: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      sandattack: ['9E', '8E', '7E'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      scratch: ['9L1', '8L1', '7L1'],\n      shadowclaw: ['9M', '8M', '7M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '7M'],\n      sludgewave: ['9M', '8M', '7M'],\n      smog: ['9L5', '8L5', '7L16'],\n      snatch: ['7T', '7E'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      sweetscent: ['9L20', '8L20', '7L8'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      thunderwave: ['9M', '8M'],\n      torment: ['7M'],\n      toxic: ['9M', '9L50', '8L55', '7M', '7L29'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      venomdrench: ['8M', '8L45', '7L45'],\n      venoshock: ['9M', '9L35', '8M', '8L35', '7M', '7L37'],\n      willowisp: ['9M', '8M', '7M']\n    }\n  ],\n  [\n    'salazzle',\n    {\n      acidspray: ['9M'],\n      acrobatics: ['9M', '8M', '7M'],\n      agility: ['9M'],\n      attract: ['8M', '7M'],\n      beatup: ['8M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '8M'],\n      burningjealousy: ['9M'],\n      captivate: ['7L1'],\n      confide: ['7M'],\n      corrosivegas: ['8T'],\n      covet: ['7T'],\n      crosspoison: ['8M'],\n      disable: ['9L1', '8L1', '7L1'],\n      doubleslap: ['7L21'],\n      doubleteam: ['7M'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '9L44', '8M', '8L44', '7T', '7L56'],\n      dragonrage: ['7L13'],\n      dragontail: ['9M', '7M'],\n      ember: ['9L1', '8L1', '7L1'],\n      encore: ['9M', '9L1', '8M', '8L1', '7L1'],\n      endeavor: ['9M', '9L1', '8L1'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['7S0'],\n      faketears: ['9M', '8M'],\n      fireblast: ['9M', '8M', '7M'],\n      firefang: ['9M'],\n      firelash: ['9L0', '8L0'],\n      flameburst: ['7L24'],\n      flamecharge: ['9M', '7M'],\n      flamethrower: ['9M', '9L51', '8M', '8L58', '7M', '7L44', '7S0'],\n      flareblitz: ['9M', '8M'],\n      fling: ['9M', '8M', '7M'],\n      foulplay: ['9M', '8M', '7T'],\n      frustration: ['7M'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M', '8M', '7T'],\n      heatwave: ['9M', '8M', '7T'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      incinerate: ['9L30', '8L30'],\n      irontail: ['8M', '7T'],\n      knockoff: ['9M', '9L1', '8L1', '7T'],\n      laserfocus: ['7T'],\n      leechlife: ['9M', '8M', '7M'],\n      mudslap: ['9M'],\n      nastyplot: ['9M', '9L25', '8M', '8L25', '7L32'],\n      overheat: ['9M', '8M', '7M'],\n      payback: ['8M', '7M'],\n      poisonfang: ['9L15', '8L15'],\n      poisongas: ['9L1', '8L1', '7L1'],\n      poisonjab: ['9M', '8M', '7M'],\n      poisontail: ['9M'],\n      pound: ['9L1', '8L1', '7L1'],\n      protect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      scratch: ['9L1', '8L1'],\n      shadowclaw: ['9M', '8M', '7M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '7M', '7S0'],\n      sludgewave: ['9M', '8M', '7M'],\n      smog: ['9L1', '8L1', '7L16'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M'],\n      swagger: ['9L1', '8L1', '7M', '7L1'],\n      sweetscent: ['9L20', '8L20', '7L1'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      thunderwave: ['9M', '8M'],\n      torment: ['9L1', '8L1', '7M', '7L1'],\n      toxic: ['9M', '9L58', '8L65', '7M', '7L29', '7S0'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      venomdrench: ['8M', '8L51', '7L51'],\n      venoshock: ['9M', '9L37', '8M', '8L37', '7M', '7L39'],\n      willowisp: ['9M', '8M', '7M']\n    }\n  ],\n  [\n    'salazzletotem',\n    {\n      acrobatics: ['7M'],\n      attract: ['7M'],\n      captivate: ['7L1'],\n      confide: ['7M'],\n      covet: ['7T'],\n      disable: ['7L1'],\n      doubleslap: ['7L21', '7S0'],\n      doubleteam: ['7M'],\n      dragonclaw: ['7M'],\n      dragonpulse: ['7T', '7L56'],\n      dragonrage: ['7L13'],\n      dragontail: ['7M'],\n      ember: ['7L1'],\n      encore: ['7L1'],\n      facade: ['7M'],\n      fireblast: ['7M'],\n      flameburst: ['7L24', '7S0'],\n      flamecharge: ['7M'],\n      flamethrower: ['7M', '7L44'],\n      fling: ['7M'],\n      foulplay: ['7T'],\n      frustration: ['7M'],\n      gunkshot: ['7T'],\n      heatwave: ['7T'],\n      helpinghand: ['7T'],\n      hiddenpower: ['7M'],\n      irontail: ['7T'],\n      knockoff: ['7T'],\n      laserfocus: ['7T'],\n      leechlife: ['7M'],\n      nastyplot: ['7L32'],\n      overheat: ['7M'],\n      payback: ['7M'],\n      poisongas: ['7L1'],\n      poisonjab: ['7M'],\n      pound: ['7L1'],\n      protect: ['7M'],\n      rest: ['7M'],\n      return: ['7M'],\n      round: ['7M'],\n      shadowclaw: ['7M'],\n      sleeptalk: ['7M'],\n      sludgebomb: ['7M'],\n      sludgewave: ['7M'],\n      smog: ['7L16', '7S0'],\n      snatch: ['7T'],\n      snore: ['7T'],\n      substitute: ['7M'],\n      swagger: ['7M', '7L1'],\n      sweetscent: ['7L1'],\n      taunt: ['7M'],\n      thief: ['7M'],\n      torment: ['7M', '7L1'],\n      toxic: ['7M', '7L29', '7S0'],\n      venomdrench: ['7L51'],\n      venoshock: ['7M', '7L39'],\n      willowisp: ['7M']\n    }\n  ],\n  [\n    'stufful',\n    {\n      aerialace: ['7M'],\n      attract: ['8M', '7M'],\n      babydolleyes: ['8L4', '7L10'],\n      bide: ['7L5'],\n      bind: ['7T'],\n      brickbreak: ['8M', '7M'],\n      brutalswing: ['8M', '8L12', '7M', '7L14'],\n      bulkup: ['8M', '7M'],\n      bulldoze: ['8M', '7M'],\n      charm: ['8M'],\n      coaching: ['8T'],\n      confide: ['7M'],\n      defensecurl: ['8E'],\n      doubleedge: ['8L44', '7L46'],\n      doubleteam: ['7M'],\n      dualchop: ['7T'],\n      earthquake: ['8M', '7M'],\n      endure: ['8M', '8L16', '7E'],\n      facade: ['8M', '7M'],\n      flail: ['8L28', '7L19'],\n      fling: ['8M', '7M'],\n      focusblast: ['8M', '7M'],\n      focuspunch: ['7T'],\n      forcepalm: ['8E', '7E'],\n      frustration: ['7M'],\n      hammerarm: ['8L32', '7L32'],\n      hiddenpower: ['7M'],\n      icepunch: ['8M', '7T', '7E'],\n      ironhead: ['8M', '7T'],\n      leer: ['8L1', '7L1'],\n      lowsweep: ['8M', '7M'],\n      megakick: ['8M', '7E'],\n      megapunch: ['8M'],\n      painsplit: ['8L40', '7T', '7L41'],\n      payback: ['8M', '8L8', '7M', '7L23'],\n      protect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      rockslide: ['8M', '7M'],\n      rocktomb: ['8M', '7M'],\n      roleplay: ['7T'],\n      rollout: ['8E'],\n      round: ['8M', '7M'],\n      sleeptalk: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      stomp: ['8E'],\n      stompingtantrum: ['8M', '7T', '7E'],\n      strength: ['8L20'],\n      substitute: ['8M', '7M'],\n      superpower: ['8M', '8L48', '7T', '7L50'],\n      swagger: ['7M'],\n      swordsdance: ['8M', '7M'],\n      tackle: ['8L1', '7L1'],\n      takedown: ['8L24', '7L28'],\n      taunt: ['8M', '7M'],\n      thrash: ['8L36', '7L37'],\n      thunderpunch: ['8M', '7T', '7E'],\n      toxic: ['7M'],\n      wideguard: ['7E'],\n      workup: ['8M', '7M'],\n      zenheadbutt: ['8M', '7T']\n    }\n  ],\n  [\n    'bewear',\n    {\n      aerialace: ['7M'],\n      attract: ['8M', '7M'],\n      babydolleyes: ['8L1', '7L10', '7S0'],\n      bide: ['7L5'],\n      bind: ['8L0', '7T', '7L1', '7S0'],\n      bodypress: ['8M'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M', '7M'],\n      brutalswing: ['8M', '8L12', '7M', '7L14', '7S0'],\n      bulkup: ['8M', '7M'],\n      bulldoze: ['8M', '7M'],\n      charm: ['8M'],\n      closecombat: ['8M'],\n      coaching: ['8T'],\n      confide: ['7M'],\n      darkestlariat: ['8M'],\n      doubleedge: ['8L54', '7L56'],\n      doubleteam: ['7M'],\n      dragonclaw: ['8M', '7M'],\n      drainpunch: ['8M', '7T'],\n      dualchop: ['7T'],\n      earthquake: ['8M', '7M'],\n      endure: ['8M', '8L16'],\n      facade: ['8M', '7M'],\n      flail: ['8L30', '7L19'],\n      fling: ['8M', '7M'],\n      focusblast: ['8M', '7M'],\n      focuspunch: ['7T'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      hammerarm: ['8L36', '7L36'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M', '7M'],\n      icepunch: ['8M', '7T'],\n      ironhead: ['8M', '7T'],\n      leer: ['8L1', '7L1'],\n      lowkick: ['8M', '7T'],\n      lowsweep: ['8M', '7M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      painsplit: ['8L48', '7T', '7L49'],\n      payback: ['8M', '8L1', '7M', '7L23'],\n      protect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      reversal: ['8M'],\n      roar: ['7M'],\n      rockslide: ['8M', '7M'],\n      rocktomb: ['8M', '7M'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      shadowclaw: ['8M', '7M'],\n      sleeptalk: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      stompingtantrum: ['8M', '7T'],\n      strength: ['8L20'],\n      substitute: ['8M', '7M'],\n      superpower: ['8M', '8L60', '7T', '7L62', '7S0'],\n      swagger: ['7M'],\n      swordsdance: ['8M', '7M'],\n      tackle: ['8L1', '7L1'],\n      takedown: ['8L24', '7L30'],\n      taunt: ['8M', '7M'],\n      thrash: ['8L42', '7L43'],\n      thunderpunch: ['8M', '7T'],\n      toxic: ['7M'],\n      workup: ['8M', '7M'],\n      zenheadbutt: ['8M', '7T']\n    }\n  ],\n  [\n    'bounsweet',\n    {\n      acupressure: ['9E', '8E', '7E'],\n      aromatherapy: ['8L36'],\n      aromaticmist: ['9L32', '8L32', '7L33'],\n      attract: ['8M', '7M'],\n      bounce: ['8M', '7T'],\n      bulletseed: ['9M'],\n      charm: ['9M', '8M', '7E'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      endeavor: ['9M', '9E', '8E', '7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      feint: ['7E'],\n      flail: ['9L24', '8L24', '7L29'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      grassknot: ['9M', '8M', '7M'],\n      grasswhistle: ['7E'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      leafstorm: ['9M'],\n      lightscreen: ['9M', '8M', '7M'],\n      magicalleaf: ['9M', '9L20', '8M', '8L20', '7L21'],\n      naturepower: ['7M'],\n      playnice: ['9L4', '8L4', '7L5'],\n      playrough: ['9M', '8M', '7E'],\n      protect: ['9M', '8M', '7M'],\n      rapidspin: ['9L8', '8L8', '7L9'],\n      razorleaf: ['9L12', '8L12', '7L13'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      splash: ['9L1', '8L1', '7L1'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      sweetscent: ['9L16', '8L16', '7L17'],\n      swift: ['9M'],\n      synthesis: ['9E', '8E', '7T', '7E'],\n      takedown: ['9M'],\n      teeterdance: ['9L28', '8L28', '7L25'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      worryseed: ['7T'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'steenee',\n    {\n      aromatherapy: ['8L46', '7L41'],\n      aromaticmist: ['9L40', '8L40', '7L33'],\n      attract: ['8M', '7M'],\n      bounce: ['8M', '7T'],\n      bulletseed: ['9M'],\n      captivate: ['7L37'],\n      celebrate: ['9S1'],\n      charm: ['9M', '8M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dazzlinggleam: ['9M', '9S1', '8M', '7M'],\n      doubleslap: ['7L1', '7S0'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      flail: ['9L1', '8L1'],\n      fling: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      grassknot: ['9M', '8M', '7M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      knockoff: ['7T'],\n      leafstorm: ['9M', '9L46', '8M', '8L52', '7L45'],\n      lightscreen: ['9M', '8M', '7M'],\n      lowsweep: ['9M', '8M', '7M'],\n      magicalleaf: ['9M', '9L22', '8M', '8L22', '7L21', '7S0'],\n      naturepower: ['7M'],\n      payback: ['8M', '7M'],\n      petalblizzard: ['9M'],\n      playnice: ['9L1', '8L1', '7L1'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M'],\n      rapidspin: ['9L1', '8L1', '7L1'],\n      razorleaf: ['9L1', '8L1', '7L1'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      splash: ['9L1', '9S1', '8L1', '7L1'],\n      stomp: ['9L28', '8L28', '7L29'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '9S1', '8M', '7M'],\n      swagger: ['7M'],\n      sweetscent: ['9L16', '8L16', '7L17', '7S0'],\n      swift: ['9M'],\n      synthesis: ['7T'],\n      takedown: ['9M'],\n      teeterdance: ['9L34', '8L34', '7L25'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      worryseed: ['7T'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'tsareena',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      aromatherapy: ['8L46', '7L41'],\n      aromaticmist: ['9L40', '8L40', '7L33'],\n      attract: ['8M', '7M'],\n      bounce: ['8M', '7T'],\n      bulletseed: ['9M'],\n      captivate: ['7L37'],\n      charm: ['9M', '8M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      doubleslap: ['7L1'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      flail: ['9L1', '8L1'],\n      fling: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      gigaimpact: ['9M', '8M', '7M'],\n      grassknot: ['9M', '8M', '7M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      highjumpkick: ['9L58', '8L58', '7L49'],\n      hyperbeam: ['9M', '8M'],\n      knockoff: ['9M', '7T'],\n      laserfocus: ['7T'],\n      leafstorm: ['9M', '9L46', '8M', '8L52', '7L45'],\n      lightscreen: ['9M', '8M', '7M'],\n      lowkick: ['9M', '8M', '7T'],\n      lowsweep: ['9M', '8M', '7M'],\n      magicalleaf: ['9M', '9L22', '8M', '8L22', '7L21'],\n      megakick: ['8M'],\n      naturepower: ['7M'],\n      payback: ['8M', '7M'],\n      petalblizzard: ['9M'],\n      playnice: ['9L1', '8L1'],\n      playrough: ['9M', '8M'],\n      powerwhip: ['9L1', '8M', '8L1', '7L53'],\n      protect: ['9M', '8M', '7M'],\n      punishment: ['7L1'],\n      rapidspin: ['9L1', '8L1', '7L1'],\n      razorleaf: ['9L1', '8L1', '7L1'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      solarblade: ['9M', '8M'],\n      splash: ['9L1', '8L1', '7L1'],\n      stomp: ['9L28', '8L28', '7L29'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['9L1', '8L1', '7M', '7L1'],\n      sweetscent: ['9L16', '8L16', '7L17'],\n      swift: ['9M'],\n      synthesis: ['7T'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      teeterdance: ['9L34', '8L34', '7L25'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      tropkick: ['9L0', '8L0', '7L1'],\n      uturn: ['9M', '8M', '7M'],\n      worryseed: ['7T'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'comfey',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      afteryou: ['9E', '8E', '7T', '7E'],\n      alluringvoice: ['9M'],\n      allyswitch: ['8M', '7T'],\n      amnesia: ['9M', '8M', '7E'],\n      aromatherapy: ['8L36', '7L43'],\n      attract: ['8M', '7M'],\n      bind: ['9L36', '7T'],\n      bulletseed: ['9M', '8M'],\n      calmmind: ['9M', '8M', '7M'],\n      celebrate: ['7S0'],\n      charm: ['9M', '9L12', '8M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      defog: ['7T'],\n      disarmingvoice: ['9M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '9L9', '8M', '8L9', '7L7', '7S0'],\n      echoedvoice: ['7M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '7E'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      fling: ['9M', '8M', '7M'],\n      floralhealing: ['9L30', '8L30', '7L37'],\n      flowershield: ['8L12', '7L1'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      grassknot: ['9M', '9L24', '8M', '8L24', '7M', '7L34'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '9L48', '8M', '8L48', '7L46'],\n      growth: ['9L1', '8L1', '7L13'],\n      healbell: ['7T'],\n      helpinghand: ['9M', '9L6', '8M', '8L6', '7T', '7L1'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      knockoff: ['9M'],\n      leaftornado: ['8E'],\n      leechseed: ['9L21', '8L21', '7L4', '7S0'],\n      lightscreen: ['9M', '8M', '7M'],\n      luckychant: ['7E'],\n      magicalleaf: ['9M', '9L15', '8M', '8L15', '7L10', '7S0'],\n      magiccoat: ['7T'],\n      naturalgift: ['7L22'],\n      naturepower: ['7M'],\n      painsplit: ['9M', '7T'],\n      petalblizzard: ['9M', '9L33', '8L33', '7L25'],\n      petaldance: ['9L45', '8L45', '7L40'],\n      playrough: ['9M', '9L39', '8M', '8L39', '7L49'],\n      pollenpuff: ['9M', '8M'],\n      protect: ['9M', '8M', '7M'],\n      psychup: ['9M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      sweetkiss: ['9L27', '8L27', '7L19'],\n      sweetscent: ['9L42', '8L42', '7L31'],\n      swift: ['9M'],\n      synthesis: ['9L18', '8L18', '7T', '7L28'],\n      tailwind: ['9M', '7T'],\n      taunt: ['9M', '8M', '7M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T'],\n      trickroom: ['9M', '8M', '7M'],\n      uturn: ['9M', '8M', '7M'],\n      vinewhip: ['9L3', '8L3', '7L1'],\n      worryseed: ['9E', '8E', '7T'],\n      wrap: ['9L1', '8L1', '7L16']\n    }\n  ],\n  [\n    'oranguru',\n    {\n      afteryou: ['9L5', '8L5', '7T', '7L4'],\n      allyswitch: ['8M', '7T', '7S1'],\n      attract: ['8M'],\n      block: ['7T'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      calmmind: ['9M', '9L10', '8M', '8L10', '7M', '7L39'],\n      chargebeam: ['9M', '7M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confusion: ['9L1', '8L1', '7L1'],\n      covet: ['7T'],\n      doubleteam: ['7M'],\n      dreameater: ['9E', '8E', '7M'],\n      earthquake: ['9M', '8M', '7M'],\n      embargo: ['7M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      expandingforce: ['9M', '8T'],\n      extrasensory: ['9E', '8E', '7E'],\n      facade: ['9M', '8M', '7M'],\n      feintattack: ['7L22'],\n      fling: ['9M', '8M', '7M'],\n      focusblast: ['9M', '8M', '7M'],\n      foulplay: ['9M', '9L55', '8M', '8L55', '7T', '7L36', '7S1'],\n      frustration: ['7M'],\n      futuresight: ['9M', '9L60', '8M', '8L60', '7L46'],\n      gigaimpact: ['9M', '8M', '7M'],\n      gravity: ['9M', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M'],\n      imprison: ['9M', '8M'],\n      instruct: ['9L50', '8L50', '7L32', '7S0', '7S1'],\n      knockoff: ['9M', '7T'],\n      lastresort: ['9E', '8E'],\n      lightscreen: ['9M', '8M', '7M'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      nastyplot: ['9M', '9L30', '8M', '8L30', '7L25'],\n      naturepower: ['7M'],\n      painsplit: ['9M', '7T'],\n      payback: ['8M', '7M'],\n      protect: ['9M', '8M', '7M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L45', '8M', '8L45', '7M', '7L43', '7S0'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '8M', '7E', '7S0'],\n      psychup: ['9M', '9L20', '8L20', '7M', '7L18'],\n      psyshock: ['9M', '8M', '7M'],\n      quash: ['9L25', '8L25', '7M', '7L11'],\n      raindance: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      rockslide: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scaryface: ['9M'],\n      shadowball: ['9M', '8M', '7M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      spite: ['7T'],\n      storedpower: ['9M', '9L15', '8M', '8L15', '7L15'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '8M', '8L1', '7M', '7L8'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thunder: ['9M', '8M', '7M'],\n      thunderbolt: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T'],\n      trickroom: ['9M', '9L40', '8M', '8L40', '7M', '7L50', '7S1'],\n      wonderroom: ['8M', '7T', '7E'],\n      workup: ['8M', '7M'],\n      yawn: ['9E', '8E'],\n      zenheadbutt: ['9M', '9L35', '8M', '8L35', '7T', '7L29']\n    }\n  ],\n  [\n    'passimian',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      aerialace: ['7M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M'],\n      batonpass: ['9M'],\n      beatup: ['9L15', '8M', '8L15', '7L15'],\n      bestow: ['7L25', '7S0'],\n      block: ['7T'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '9L35', '8M', '8L35', '7M', '7L32'],\n      bulldoze: ['9M', '8M', '7M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '9L50', '8M', '8L50', '7L43', '7S1'],\n      coaching: ['9M', '8T'],\n      confide: ['7M'],\n      counter: ['9E', '8E'],\n      curse: ['9M'],\n      doubleedge: ['9M', '9L45', '8L45', '7L36'],\n      doubleteam: ['7M'],\n      drainpunch: ['9M', '8M', '7T'],\n      earthquake: ['9M', '8M', '7M'],\n      electroweb: ['9M', '8M', '7T'],\n      endeavor: ['7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      feint: ['9E', '8E', '7E', '7S0'],\n      fling: ['9M', '9L30', '8M', '8L30', '7M', '7L39', '7S0'],\n      focusblast: ['9M', '8M', '7M'],\n      focusenergy: ['9L10', '8M', '8L10', '7L11'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '9L60', '8M', '8L60', '7M', '7L50'],\n      grassknot: ['9M', '8M', '7M'],\n      gunkshot: ['9M', '8M', '7T', '7S1'],\n      gyroball: ['9M', '8M', '7M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      ironhead: ['9M', '8M', '7T', '7E'],\n      irontail: ['8M', '7T'],\n      knockoff: ['9M', '9E', '8E', '7T', '7S1'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L4'],\n      lowkick: ['9M'],\n      lowsweep: ['9M', '8M', '7M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      painsplit: ['9M'],\n      payback: ['8M', '7M'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9E', '8E', '7E'],\n      quickguard: ['9E', '8E', '7E'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      retaliate: ['8M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L55', '8M', '8L55', '7L46'],\n      rockslide: ['9M', '8M', '7M'],\n      rocksmash: ['9L5', '8L5', '7L8'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      scaryface: ['9M', '9L20', '8M', '8L20', '7L18'],\n      seedbomb: ['9M', '8M', '7T'],\n      seismictoss: ['9E', '8E', '7E'],\n      shadowball: ['9M', '8M', '7M'],\n      shockwave: ['7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smackdown: ['9M', '7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      superpower: ['8M', '7T'],\n      swagger: ['7M'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M', '9L25', '8L25', '7L22'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      thrash: ['9L40', '8L40', '7L29'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['9M', '8M', '7T'],\n      uturn: ['9M', '8M', '7M', '7S1'],\n      vacuumwave: ['9M'],\n      vitalthrow: ['8E', '7E'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'wimpod',\n    {\n      aquajet: ['8E', '7E'],\n      assurance: ['8M'],\n      attract: ['8M', '7M'],\n      bugbuzz: ['8M'],\n      confide: ['7M'],\n      defensecurl: ['8L1'],\n      doubleteam: ['7M'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      frustration: ['7M'],\n      hail: ['8M', '7M'],\n      harden: ['8E', '7E'],\n      hiddenpower: ['7M'],\n      leechlife: ['8M', '7M'],\n      metalclaw: ['8E', '7E'],\n      mudshot: ['8M'],\n      protect: ['8M', '7M'],\n      raindance: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      rollout: ['8E'],\n      round: ['8M', '7M'],\n      sandattack: ['8L1', '7L1'],\n      scald: ['8M', '7M'],\n      screech: ['8M'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      spikes: ['8M', '7E'],\n      strugglebug: ['8L1', '7L1'],\n      substitute: ['8M', '7M'],\n      surf: ['8M', '7M'],\n      swagger: ['7M'],\n      swift: ['8M'],\n      taunt: ['8M', '7M'],\n      toxic: ['7M'],\n      waterfall: ['8M', '7M'],\n      wideguard: ['8E', '7E']\n    }\n  ],\n  [\n    'golisopod',\n    {\n      aerialace: ['7M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M'],\n      blizzard: ['8M', '7M'],\n      brickbreak: ['8M', '7M'],\n      bugbite: ['8L16', '7T', '7L10'],\n      bugbuzz: ['8M'],\n      bulkup: ['8M', '7M'],\n      closecombat: ['8M'],\n      confide: ['7M'],\n      darkpulse: ['8M', '7M'],\n      defensecurl: ['8L1'],\n      dive: ['8M'],\n      doubleteam: ['7M'],\n      drillrun: ['8M', '7T'],\n      dualchop: ['7T'],\n      endeavor: ['7T'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      falseswipe: ['8M', '7M'],\n      firstimpression: ['8L0', '7L1'],\n      fling: ['8M', '7M'],\n      focusblast: ['8M', '7M'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      furycutter: ['8L8', '7L1'],\n      gigaimpact: ['8M', '7M'],\n      hail: ['8M', '7M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M'],\n      icebeam: ['8M', '7M'],\n      icywind: ['8M', '7T'],\n      irondefense: ['8M', '8L20', '7T', '7L36'],\n      ironhead: ['8M', '7T'],\n      knockoff: ['7T'],\n      laserfocus: ['7T'],\n      leechlife: ['8M', '7M'],\n      liquidation: ['8M', '8L44', '7T', '7L48'],\n      muddywater: ['8M'],\n      mudshot: ['8M', '8L12'],\n      painsplit: ['7T'],\n      payback: ['8M', '7M'],\n      pinmissile: ['8M', '8L36', '7L41'],\n      poisonjab: ['8M', '7M'],\n      protect: ['8M', '7M'],\n      psychup: ['7M'],\n      raindance: ['8M', '7M'],\n      razorshell: ['8M', '8L32', '7L26'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      rockslide: ['8M', '7M'],\n      rocksmash: ['8L4', '7L1'],\n      rocktomb: ['8M', '7M'],\n      round: ['8M', '7M'],\n      sandattack: ['8L1', '7L1'],\n      scald: ['8M', '7M'],\n      screech: ['8M'],\n      shadowclaw: ['8M', '7M'],\n      skittersmack: ['8T'],\n      slash: ['8L28', '7L21'],\n      sleeptalk: ['8M', '7M'],\n      sludgebomb: ['8M', '7M'],\n      sludgewave: ['8M', '7M'],\n      snarl: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      spikes: ['8M'],\n      spite: ['8L1', '7T', '7L13'],\n      strugglebug: ['8L1', '7L1'],\n      substitute: ['8M', '7M'],\n      suckerpunch: ['8L24', '7L31'],\n      surf: ['8M', '7M'],\n      swagger: ['7M'],\n      swift: ['8M'],\n      swordsdance: ['8M', '8L40', '7M', '7L16'],\n      taunt: ['8M', '7M'],\n      throatchop: ['8M', '7T'],\n      toxic: ['7M'],\n      venoshock: ['8M', '7M'],\n      waterfall: ['8M', '7M'],\n      waterpulse: ['7T'],\n      xscissor: ['8M', '7M']\n    }\n  ],\n  [\n    'sandygast',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      afteryou: ['7T'],\n      amnesia: ['9M', '8M', '7E'],\n      ancientpower: ['9E', '8E', '7E'],\n      astonish: ['9L5', '8L5', '7L5'],\n      attract: ['8M', '7M'],\n      block: ['7T'],\n      brine: ['8M'],\n      bulldoze: ['9M', '9L25', '8M', '8L25', '7M', '7L23'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      curse: ['9M', '9E', '8E', '7E'],\n      destinybond: ['9E', '8E', '7E'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '9L50', '8M', '8L50', '7T', '7L45'],\n      earthquake: ['9M', '8M', '7M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      flashcannon: ['9M'],\n      fling: ['9M'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '9L35', '8M', '8L35', '7T', '7L36'],\n      gravity: ['9M', '7T'],\n      harden: ['9L1', '8L1', '7L1'],\n      hex: ['9M'],\n      hiddenpower: ['7M'],\n      hypnosis: ['9L30', '8L30', '7L27'],\n      imprison: ['9M'],\n      infestation: ['7M'],\n      irondefense: ['9M', '9L40', '8M', '8L40', '7T', '7L32'],\n      megadrain: ['9L15', '8L15', '7L18'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '7T'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      raindance: ['9M'],\n      recycle: ['7T'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      sandattack: ['9L20', '8L20', '7L9'],\n      sandstorm: ['9M', '9L60', '8M', '8L60', '7M', '7L54'],\n      sandtomb: ['9M', '9L10', '8M', '8L10', '7L14'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      shadowball: ['9M', '9L45', '8M', '8L45', '7M', '7L41'],\n      shoreup: ['9L55', '8L55', '7L50'],\n      skillswap: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M'],\n      snore: ['8M', '7T'],\n      spite: ['9M', '7T'],\n      spitup: ['9E', '8E', '7E'],\n      stealthrock: ['9M', '8M', '7T'],\n      stockpile: ['9E', '8E', '7E'],\n      stoneedge: ['9M', '8M', '7M'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      swallow: ['9E', '8E', '7E'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trick: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'palossand',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      afteryou: ['7T'],\n      amnesia: ['9M', '8M'],\n      astonish: ['9L1', '8L1', '7L1'],\n      attract: ['8M', '7M'],\n      block: ['7T'],\n      bodyslam: ['9M'],\n      brine: ['8M'],\n      bulldoze: ['9M', '9L25', '8M', '8L25', '7M', '7L23'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '9L54', '8M', '8L54', '7T', '7L47'],\n      earthquake: ['9M', '8M', '7M'],\n      embargo: ['7M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      facade: ['9M', '8M', '7M'],\n      flashcannon: ['9M'],\n      fling: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '9L35', '8M', '8L35', '7T', '7L36'],\n      gigaimpact: ['9M', '8M', '7M'],\n      gravity: ['9M', '7T'],\n      harden: ['9L1', '8L1', '7L1'],\n      hex: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M'],\n      hypnosis: ['9L30', '8L30', '7L27'],\n      imprison: ['9M'],\n      infestation: ['7M'],\n      irondefense: ['9M', '9L40', '8M', '8L40', '7T', '7L32'],\n      megadrain: ['9L15', '8L15', '7L18'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '7T'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      quash: ['7M'],\n      raindance: ['9M'],\n      recycle: ['7T'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      sandattack: ['9L20', '8L20', '7L1'],\n      sandstorm: ['9M', '9L68', '8M', '8L68', '7M', '7L60'],\n      sandtomb: ['9M', '9L1', '8M', '8L1', '7L14'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      shadowball: ['9M', '9L47', '8M', '8L47', '7M', '7L41'],\n      shoreup: ['9L61', '8L61', '7L54'],\n      skillswap: ['9M', '8M', '7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      spite: ['9M', '7T'],\n      stealthrock: ['9M', '8M', '7T'],\n      stoneedge: ['9M', '8M', '7M'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      toxic: ['7M'],\n      trick: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'pyukumuku',\n    {\n      attract: ['8M', '7M'],\n      batonpass: ['8M', '8L1', '7L1'],\n      bestow: ['7E'],\n      bide: ['7L1'],\n      block: ['7T'],\n      confide: ['7M'],\n      counter: ['8L20', '7L17'],\n      curse: ['8L30', '7L25'],\n      doubleteam: ['7M'],\n      endure: ['8M', '7E'],\n      gastroacid: ['8L35', '7T', '7L29'],\n      hail: ['8M', '7M'],\n      harden: ['8L1', '7L1'],\n      helpinghand: ['8M', '8L5', '7T', '7L5'],\n      lightscreen: ['8M', '7M'],\n      memento: ['8L60', '7L49'],\n      mirrorcoat: ['8E'],\n      mudsport: ['7L1'],\n      painsplit: ['8L40', '7T', '7L33'],\n      protect: ['8M', '7M'],\n      psychup: ['7M'],\n      purify: ['8L25', '7L21'],\n      quash: ['7M'],\n      raindance: ['8M', '7M'],\n      recover: ['8L45', '7L37'],\n      recycle: ['7T'],\n      reflect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      safeguard: ['8M', '8L15', '7M', '7L13'],\n      screech: ['8M'],\n      sleeptalk: ['8M', '7M'],\n      soak: ['8L50', '7L41'],\n      spite: ['8E', '7T', '7E'],\n      substitute: ['8M', '7M'],\n      swagger: ['8E', '7M'],\n      taunt: ['8M', '8L10', '7M', '7L9'],\n      tickle: ['8E', '7E'],\n      toxic: ['8L55', '7M', '7L45'],\n      venomdrench: ['8M', '7E'],\n      watersport: ['7L1']\n    }\n  ],\n  [\n    'typenull',\n    {\n      aerialace: ['8L5', '7M', '7L20'],\n      airslash: ['8M', '8L30', '7L60', '7S1'],\n      confide: ['7M'],\n      crushclaw: ['8L25', '7L25', '7S0'],\n      doubleedge: ['8L55', '7L80'],\n      doublehit: ['8L15', '7L55', '7S1'],\n      doubleteam: ['7M'],\n      dragonclaw: ['8M', '7M'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      flamecharge: ['7M'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      hail: ['8M', '7M'],\n      healblock: ['7L85'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M'],\n      icywind: ['8M', '7T'],\n      imprison: ['8M', '8L1', '7L15'],\n      irondefense: ['8M', '7T'],\n      ironhead: ['8M', '8L45', '8S2', '7T', '7L50', '7S1'],\n      lastresort: ['7T'],\n      magiccoat: ['7T'],\n      metalsound: ['8L20', '7L45', '7S1'],\n      payback: ['8M', '7M'],\n      protect: ['8M', '7M'],\n      punishment: ['7L65'],\n      pursuit: ['7L10'],\n      rage: ['7L5'],\n      raindance: ['8M', '7M'],\n      razorwind: ['7L70'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      rockslide: ['8M', '7M'],\n      round: ['8M', '7M'],\n      sandstorm: ['8M', '7M'],\n      scaryface: ['8M', '8L10', '7L30', '7S0'],\n      shadowclaw: ['8M', '7M'],\n      signalbeam: ['7T'],\n      sleeptalk: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      swagger: ['7M'],\n      swift: ['8M'],\n      swordsdance: ['8M', '7M'],\n      tackle: ['8L1', '7L1'],\n      takedown: ['8L50', '8S2', '7L40', '7S0'],\n      terrainpulse: ['8T'],\n      thunderwave: ['8M', '7M'],\n      toxic: ['7M'],\n      triattack: ['8M', '8L35', '8S2', '7L75'],\n      uturn: ['8M', '7M'],\n      workup: ['8M', '7M'],\n      xscissor: ['8M', '8L40', '8S2', '7M', '7L35', '7S0']\n    }\n  ],\n  [\n    'silvally',\n    {\n      aerialace: ['8L1', '7M', '7L20'],\n      airslash: ['8M', '8L30', '7L60'],\n      bite: ['8L1', '7L15'],\n      confide: ['7M'],\n      crunch: ['8M', '8L45', '7L50'],\n      crushclaw: ['8L25', '7L25'],\n      defog: ['7T'],\n      doubleedge: ['8L55', '7L80'],\n      doublehit: ['8L15', '7L55'],\n      doubleteam: ['7M'],\n      dracometeor: ['8T', '7T'],\n      dragonclaw: ['8M', '7M'],\n      endure: ['8M'],\n      explosion: ['8L1', '7M'],\n      facade: ['8M', '7M'],\n      firefang: ['8M', '8L1', '7L1'],\n      flamecharge: ['7M'],\n      flamethrower: ['8M', '7M'],\n      flashcannon: ['8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      grasspledge: ['8T', '7T'],\n      hail: ['8M', '7M'],\n      healblock: ['7L1'],\n      heatwave: ['8M', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M', '7M'],\n      hypervoice: ['8M', '7T'],\n      icebeam: ['8M', '7M'],\n      icefang: ['8M', '8L1', '7L1'],\n      icywind: ['8M', '7T'],\n      imprison: ['8M', '8L1', '7L1'],\n      irondefense: ['8M', '7T'],\n      ironhead: ['8M', '8L1', '7T', '7L1'],\n      laserfocus: ['7T'],\n      lastresort: ['7T'],\n      magiccoat: ['7T'],\n      metalsound: ['8L20', '7L45'],\n      multiattack: ['8L0', '7L1', '7S0'],\n      outrage: ['8M', '7T'],\n      partingshot: ['8L60', '7L85', '7S0'],\n      payback: ['8M', '7M'],\n      poisonfang: ['8L1', '7L1'],\n      protect: ['8M', '7M'],\n      psychicfangs: ['8M'],\n      punishment: ['7L65', '7S0'],\n      pursuit: ['7L10'],\n      rage: ['7L5'],\n      raindance: ['8M', '7M'],\n      razorwind: ['7L70'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      reversal: ['8M'],\n      roar: ['7M'],\n      rockslide: ['8M', '7M'],\n      round: ['8M', '7M'],\n      sandstorm: ['8M', '7M'],\n      scaryface: ['8M', '8L1', '7L30', '7S0'],\n      selfdestruct: ['8M'],\n      shadowball: ['8M', '7M'],\n      shadowclaw: ['8M', '7M'],\n      signalbeam: ['7T'],\n      sleeptalk: ['8M', '7M'],\n      snarl: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      steelbeam: ['8T'],\n      steelwing: ['8M', '7M'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      surf: ['8M', '7M'],\n      swagger: ['7M'],\n      swift: ['8M'],\n      swordsdance: ['8M', '7M'],\n      tackle: ['8L1', '7L1'],\n      tailwind: ['7T'],\n      takedown: ['8L50', '7L40'],\n      terrainpulse: ['8T'],\n      thunderbolt: ['8M', '7M'],\n      thunderfang: ['8M', '8L1', '7L1'],\n      thunderwave: ['8M', '7M'],\n      toxic: ['7M'],\n      triattack: ['8M', '8L35', '7L75'],\n      uturn: ['8M', '7M'],\n      workup: ['8M', '7M'],\n      xscissor: ['8M', '8L40', '7M', '7L35'],\n      zenheadbutt: ['8M', '7T']\n    }\n  ],\n  [\n    'minior',\n    {\n      acrobatics: ['9M', '7M'],\n      ancientpower: ['9L17', '7L17'],\n      attract: ['7M'],\n      autotomize: ['7L31'],\n      bulldoze: ['9M', '7M'],\n      calmmind: ['9M', '7M'],\n      chargebeam: ['9M', '7M'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L10', '7L10'],\n      cosmicpower: ['9L36', '7L36'],\n      dazzlinggleam: ['9M', '7M'],\n      defensecurl: ['9L3', '7L3'],\n      doubleedge: ['9M', '9L43', '7L43'],\n      doubleteam: ['7M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '7M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M'],\n      explosion: ['9L50', '7M', '7L50'],\n      facade: ['9M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '7M'],\n      gravity: ['9M', '7T'],\n      gyroball: ['9M', '7M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '7M'],\n      ironhead: ['9M', '7T'],\n      lastresort: ['7T'],\n      lightscreen: ['9M', '7M'],\n      magnetrise: ['7T'],\n      meteorbeam: ['9M'],\n      powergem: ['9M', '9L38', '7L38'],\n      protect: ['9M', '7M'],\n      psychic: ['9M', '7M'],\n      psychup: ['7M'],\n      reflect: ['9M', '7M'],\n      rest: ['9M', '7M'],\n      return: ['7M'],\n      rockblast: ['9M'],\n      rockpolish: ['9L31', '7M'],\n      rockslide: ['9M', '7M'],\n      rocktomb: ['9M', '7M'],\n      rollout: ['9L8', '7L8'],\n      round: ['7M'],\n      safeguard: ['7M'],\n      sandstorm: ['9M', '7M'],\n      scorchingsands: ['9M'],\n      selfdestruct: ['9L22', '7L22'],\n      shellsmash: ['9L45', '7L45'],\n      sleeptalk: ['9M', '7M'],\n      snore: ['7T'],\n      solarbeam: ['9M', '7M'],\n      stealthrock: ['9M', '9L24', '7T', '7L24'],\n      stoneedge: ['9M', '7M'],\n      substitute: ['9M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '9L15', '7L15'],\n      tackle: ['9L1', '7L1'],\n      takedown: ['9M', '9L29', '7L29'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      uturn: ['9M', '7M'],\n      zenheadbutt: ['9M', '7T']\n    }\n  ],\n  [\n    'komala',\n    {\n      acrobatics: ['9M', '7M'],\n      attract: ['7M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '7M'],\n      bulkup: ['9M', '7M'],\n      bulldoze: ['9M', '7M'],\n      calmmind: ['9M', '7M'],\n      charm: ['9M', '9E', '7E'],\n      confide: ['7M'],\n      curse: ['9M'],\n      defensecurl: ['9L1', '7L1'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      earthquake: ['9M', '7M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M'],\n      facade: ['9M', '7M'],\n      flail: ['9L26', '7L26'],\n      fling: ['9M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M'],\n      icespinner: ['9M'],\n      ironhead: ['9M', '7T'],\n      knockoff: ['9M', '7T'],\n      lastresort: ['7T'],\n      lowkick: ['9M'],\n      lowsweep: ['9M', '7M'],\n      metalclaw: ['9M'],\n      payback: ['7M'],\n      playrough: ['9M', '9E', '7E'],\n      protect: ['9M', '7M'],\n      psychup: ['9M', '9L36', '7M', '7L36'],\n      quash: ['7M'],\n      raindance: ['9M'],\n      rapidspin: ['9L11', '7L11'],\n      return: ['7M'],\n      reversal: ['9M'],\n      rockslide: ['9M', '7M'],\n      rocktomb: ['9M'],\n      rollout: ['9L1', '7L1'],\n      round: ['7M'],\n      seedbomb: ['9M'],\n      shadowclaw: ['9M', '7M'],\n      sing: ['9E', '7E'],\n      slam: ['9L21', '7L21'],\n      sleeptalk: ['9M', '7M'],\n      snore: ['7T'],\n      spitup: ['9L6', '7L6'],\n      stockpile: ['9L6', '7L6'],\n      stompingtantrum: ['9M', '7T'],\n      substitute: ['9M', '7M'],\n      suckerpunch: ['9L31', '7L31'],\n      sunnyday: ['9M', '7M'],\n      superfang: ['9M'],\n      superpower: ['9E', '7T'],\n      swagger: ['7M'],\n      swallow: ['9L6', '7L6'],\n      swordsdance: ['9M', '7M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L46', '7L46'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '7M'],\n      wish: ['9E', '7E'],\n      woodhammer: ['9L41', '7L41'],\n      workup: ['7M'],\n      yawn: ['9L16', '7L16'],\n      zenheadbutt: ['9M', '7T']\n    }\n  ],\n  [\n    'turtonator',\n    {\n      attract: ['8M', '7M'],\n      block: ['7T'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '8L32', '7L33', '7S0'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['8M', '7M'],\n      bulldoze: ['8M', '7M'],\n      burningjealousy: ['8T'],\n      chargebeam: ['7M'],\n      confide: ['7M'],\n      curse: ['8E'],\n      doubleteam: ['7M'],\n      dracometeor: ['8T', '7T'],\n      dragonclaw: ['8M', '7M'],\n      dragonpulse: ['8M', '8L28', '7T', '7L41'],\n      dragontail: ['7M', '7S1'],\n      earthquake: ['8M', '7M'],\n      ember: ['8L4', '7L1'],\n      endeavor: ['7T'],\n      endure: ['8M', '8L12', '7L21'],\n      explosion: ['8L52', '7M', '7L53'],\n      facade: ['8M', '7M'],\n      fireblast: ['8M', '7M'],\n      firespin: ['8M', '7E'],\n      flail: ['8L16', '7L17'],\n      flamecharge: ['7M'],\n      flamethrower: ['8M', '8L36', '7M', '7L29', '7S0', '7S1'],\n      flashcannon: ['8M', '7M'],\n      fling: ['8M', '7M'],\n      focusblast: ['8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      headsmash: ['8E', '7E'],\n      heatcrash: ['8M'],\n      heatwave: ['8M', '7T'],\n      heavyslam: ['8M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M', '7M'],\n      hypervoice: ['8M', '7T'],\n      incinerate: ['8L20', '7L13'],\n      irondefense: ['8M', '8L24', '7T', '7L25'],\n      ironhead: ['8M', '7T'],\n      irontail: ['8M', '7T'],\n      lashout: ['8T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      outrage: ['8M', '7T'],\n      overheat: ['8M', '8L48', '7M', '7L49'],\n      payback: ['8M', '7M'],\n      protect: ['8M', '8L8', '7M', '7L9'],\n      rapidspin: ['8E'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M', '7E'],\n      roar: ['7M'],\n      rocktomb: ['8M', '7M'],\n      round: ['8M', '7M'],\n      scaleshot: ['8T'],\n      scorchingsands: ['8T'],\n      shellsmash: ['8L44', '7L37'],\n      shelltrap: ['8L40', '7L45', '7S1'],\n      shockwave: ['7T'],\n      sleeptalk: ['8M', '7M'],\n      smackdown: ['7M'],\n      smog: ['8L1', '7L5'],\n      snore: ['8M', '7T'],\n      solarbeam: ['8M', '7M'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      swagger: ['7M'],\n      tackle: ['8L1', '7L1'],\n      taunt: ['8M', '7M'],\n      toxic: ['7M'],\n      uproar: ['8M', '7T'],\n      venoshock: ['8M', '7M'],\n      wideguard: ['8E', '7E', '7S0'],\n      willowisp: ['8M', '7M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'togedemaru',\n    {\n      afteryou: ['7T'],\n      agility: ['8M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M'],\n      bounce: ['8M', '7T'],\n      charge: ['8L10', '7L13'],\n      chargebeam: ['7M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      defensecurl: ['8L5', '7L5'],\n      disarmingvoice: ['8E', '7E'],\n      discharge: ['8L45', '7L29'],\n      doubleteam: ['7M'],\n      eerieimpulse: ['8M'],\n      electricterrain: ['8M', '8L50', '7L37'],\n      electroball: ['8M'],\n      electroweb: ['8M', '7T'],\n      encore: ['8M', '7E'],\n      endeavor: ['7T'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      fakeout: ['8E', '7E'],\n      fellstinger: ['8L20', '7L53'],\n      flail: ['8E', '7E'],\n      fling: ['8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      gravity: ['7T'],\n      gyroball: ['8M', '7M'],\n      helpinghand: ['8M', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M'],\n      ironhead: ['8M', '7T'],\n      irontail: ['8M', '7T'],\n      lastresort: ['7T'],\n      magnetrise: ['8L35', '7T', '7L25'],\n      nuzzle: ['8L1', '7L21'],\n      payback: ['8M', '7M'],\n      pinmissile: ['8M', '8L30', '7L45'],\n      poisonjab: ['8M', '7M'],\n      present: ['8E', '7E'],\n      protect: ['8M', '7M'],\n      reflect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      reversal: ['8M', '7E'],\n      risingvoltage: ['8T'],\n      roleplay: ['7T'],\n      rollout: ['7L9'],\n      round: ['8M', '7M'],\n      shockwave: ['7T'],\n      sleeptalk: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['8L25', '7L17'],\n      spikyshield: ['8L60', '7L49'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      substitute: ['8M', '7M'],\n      superfang: ['7T'],\n      swagger: ['7M'],\n      swift: ['8M'],\n      tackle: ['8L1', '7L1'],\n      thief: ['8M', '7M'],\n      thunder: ['8M', '7M'],\n      thunderbolt: ['8M', '7M'],\n      thundershock: ['8L15', '7L1'],\n      thunderwave: ['8M', '7M'],\n      tickle: ['8E', '7E'],\n      toxic: ['7M'],\n      twineedle: ['7E'],\n      uturn: ['8M', '7M'],\n      voltswitch: ['8M', '7M'],\n      wildcharge: ['8M', '8L55', '7M', '7L41'],\n      wish: ['8E', '7E'],\n      workup: ['8M', '7M'],\n      zenheadbutt: ['8M', '7T'],\n      zingzap: ['8L40', '7L33']\n    }\n  ],\n  [\n    'togedemarutotem',\n    {\n      afteryou: ['7T'],\n      attract: ['7M'],\n      bounce: ['7T'],\n      charge: ['7L13'],\n      chargebeam: ['7M'],\n      confide: ['7M'],\n      covet: ['7T'],\n      defensecurl: ['7L5'],\n      discharge: ['7L29', '7S0'],\n      doubleteam: ['7M'],\n      electricterrain: ['7L37'],\n      electroweb: ['7T'],\n      endeavor: ['7T'],\n      facade: ['7M'],\n      fellstinger: ['7L53'],\n      fling: ['7M'],\n      frustration: ['7M'],\n      gigaimpact: ['7M'],\n      grassknot: ['7M'],\n      gravity: ['7T'],\n      gyroball: ['7M'],\n      helpinghand: ['7T'],\n      hiddenpower: ['7M'],\n      ironhead: ['7T'],\n      irontail: ['7T'],\n      lastresort: ['7T'],\n      magnetrise: ['7T', '7L25', '7S0'],\n      nuzzle: ['7L21', '7S0'],\n      payback: ['7M'],\n      pinmissile: ['7L45'],\n      poisonjab: ['7M'],\n      protect: ['7M'],\n      reflect: ['7M'],\n      rest: ['7M'],\n      return: ['7M'],\n      roleplay: ['7T'],\n      rollout: ['7L9'],\n      round: ['7M'],\n      shockwave: ['7T'],\n      sleeptalk: ['7M'],\n      snore: ['7T'],\n      spark: ['7L17'],\n      spikyshield: ['7L49'],\n      substitute: ['7M'],\n      superfang: ['7T'],\n      swagger: ['7M'],\n      tackle: ['7L1'],\n      thief: ['7M'],\n      thunder: ['7M'],\n      thunderbolt: ['7M'],\n      thundershock: ['7L1'],\n      thunderwave: ['7M'],\n      toxic: ['7M'],\n      uturn: ['7M'],\n      voltswitch: ['7M'],\n      wildcharge: ['7M', '7L41'],\n      workup: ['7M'],\n      zenheadbutt: ['7T'],\n      zingzap: ['7L33', '7S0']\n    }\n  ],\n  [\n    'mimikyu',\n    {\n      afteryou: ['7T'],\n      astonish: ['9L1', '8L1', '7L1', '7S0', '7S1'],\n      attract: ['8M', '7M'],\n      babydolleyes: ['9L18', '8L18', '7L10', '7S0'],\n      beatup: ['8M'],\n      bulkup: ['9M', '8M', '7M'],\n      burningjealousy: ['9M', '8T'],\n      chargebeam: ['7M'],\n      charm: ['9M', '9L48', '8M', '8L48', '7L28'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      copycat: ['9L1', '8L1', '7L1', '7S0', '7S1'],\n      covet: ['7T'],\n      curse: ['9M', '9E', '9S3', '8E', '7E'],\n      darkpulse: ['9M', '8M', '7M'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      destinybond: ['9E', '9S3', '8E', '7E', '7S2'],\n      doubleteam: ['9L12', '8L12', '7M', '7L5'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M', '7T'],\n      dreameater: ['7M'],\n      embargo: ['7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      feintattack: ['7L23'],\n      fling: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      gigaimpact: ['9M', '8M'],\n      grudge: ['8E', '7E'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M'],\n      honeclaws: ['9L30', '8L30', '7L41'],\n      hyperbeam: ['9M', '8M', '7M'],\n      infestation: ['7M'],\n      lastresort: ['7T'],\n      leechlife: ['9M', '8M', '7M'],\n      lightscreen: ['9M', '8M', '7M'],\n      magicroom: ['8M', '7T'],\n      mimic: ['9L24', '8L24', '7L19', '7S2'],\n      mistyterrain: ['9M'],\n      nightmare: ['7E'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '9L60', '8L60', '7T', '7L50'],\n      payback: ['8M', '7M'],\n      phantomforce: ['9M', '9S3', '8M'],\n      playrough: ['9M', '9L54', '8M', '8L54', '7L46', '7S1'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      psychup: ['9M', '7M'],\n      raindance: ['9M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scratch: ['9L1', '8L1', '7L1'],\n      screech: ['8M'],\n      shadowball: ['9M', '8M', '7M'],\n      shadowclaw: ['9M', '9L42', '8M', '8L42', '7M', '7L37'],\n      shadowsneak: ['9L6', '8L6', '7L14'],\n      slash: ['9L36', '8L36', '7L32'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snatch: ['7T', '7S2'],\n      snore: ['8M', '7T'],\n      spite: ['9M', '7T'],\n      splash: ['9L1', '8L1', '7L1', '7S0'],\n      substitute: ['9M', '8M', '7M', '7S1'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '8M', '7M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      thunder: ['9M', '8M', '7M'],\n      thunderbolt: ['9M', '9S3', '8M', '7M'],\n      thunderwave: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M', '7T', '7S2'],\n      trickroom: ['9M', '8M', '7M'],\n      willowisp: ['9M', '8M', '7M'],\n      woodhammer: ['9L1', '8L1', '7L1'],\n      workup: ['8M', '7M'],\n      xscissor: ['9M', '8M', '7M']\n    }\n  ],\n  [\n    'mimikyutotem',\n    {\n      afteryou: ['7T'],\n      astonish: ['7L1'],\n      attract: ['7M'],\n      babydolleyes: ['7L10'],\n      bulkup: ['7M'],\n      chargebeam: ['7M'],\n      charm: ['7L28', '7S0'],\n      confide: ['7M'],\n      copycat: ['7L1'],\n      covet: ['7T'],\n      darkpulse: ['7M'],\n      dazzlinggleam: ['7M'],\n      doubleteam: ['7M', '7L5'],\n      drainpunch: ['7T'],\n      dreameater: ['7M'],\n      embargo: ['7M'],\n      facade: ['7M'],\n      feintattack: ['7L23', '7S0'],\n      fling: ['7M'],\n      frustration: ['7M'],\n      gigadrain: ['7T'],\n      hiddenpower: ['7M'],\n      honeclaws: ['7L41'],\n      hyperbeam: ['7M'],\n      infestation: ['7M'],\n      lastresort: ['7T'],\n      leechlife: ['7M'],\n      lightscreen: ['7M'],\n      magicroom: ['7T'],\n      mimic: ['7L19'],\n      painsplit: ['7T', '7L50'],\n      payback: ['7M'],\n      playrough: ['7L46'],\n      protect: ['7M'],\n      psychic: ['7M'],\n      psychup: ['7M'],\n      rest: ['7M'],\n      return: ['7M'],\n      round: ['7M'],\n      safeguard: ['7M'],\n      scratch: ['7L1'],\n      shadowball: ['7M'],\n      shadowclaw: ['7M', '7L37', '7S0'],\n      shadowsneak: ['7L14'],\n      slash: ['7L32', '7S0'],\n      sleeptalk: ['7M'],\n      snatch: ['7T'],\n      snore: ['7T'],\n      spite: ['7T'],\n      splash: ['7L1'],\n      substitute: ['7M'],\n      swagger: ['7M'],\n      swordsdance: ['7M'],\n      taunt: ['7M'],\n      telekinesis: ['7T'],\n      thief: ['7M'],\n      thunder: ['7M'],\n      thunderbolt: ['7M'],\n      thunderwave: ['7M'],\n      toxic: ['7M'],\n      trick: ['7T'],\n      trickroom: ['7M'],\n      willowisp: ['7M'],\n      woodhammer: ['7L1'],\n      workup: ['7M'],\n      xscissor: ['7M']\n    }\n  ],\n  [\n    'bruxish',\n    {\n      aerialace: ['7M'],\n      afteryou: ['7T'],\n      agility: ['9M'],\n      allyswitch: ['7T'],\n      aquajet: ['9L17', '7L17'],\n      aquatail: ['9L33', '7T', '7L33'],\n      astonish: ['9L4', '7L4'],\n      attract: ['7M'],\n      bite: ['9L12', '7L12'],\n      blizzard: ['9M', '7M'],\n      bulkup: ['9M', '7M'],\n      calmmind: ['9M', '7M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confusion: ['9L9', '7L9'],\n      crunch: ['9M', '9L28', '7L28'],\n      disable: ['9L20', '7L20'],\n      doubleteam: ['7M'],\n      dreameater: ['7M'],\n      embargo: ['7M'],\n      endure: ['9M'],\n      expandingforce: ['9M'],\n      facade: ['9M', '7M'],\n      fling: ['7M'],\n      flipturn: ['9M'],\n      frostbreath: ['7M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '7M'],\n      hiddenpower: ['7M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '7M'],\n      icefang: ['9M', '9E', '7E'],\n      icywind: ['9M'],\n      irontail: ['7T'],\n      lightscreen: ['9M', '7M'],\n      liquidation: ['9M', '7T'],\n      magiccoat: ['7T'],\n      magicroom: ['7T'],\n      painsplit: ['9M', '7T'],\n      payback: ['7M'],\n      poisonfang: ['9E', '7E'],\n      protect: ['9M', '7M'],\n      psychic: ['9M', '7M'],\n      psychicfangs: ['9M', '9L41', '7L41'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psyshock: ['9M', '9L25'],\n      psywave: ['7L25'],\n      rage: ['7E'],\n      raindance: ['9M', '7M'],\n      reflect: ['9M', '7M'],\n      rest: ['9M', '7M'],\n      return: ['7M'],\n      round: ['7M'],\n      safeguard: ['7M'],\n      scald: ['7M'],\n      scaryface: ['9M'],\n      screech: ['9L36', '7L36'],\n      signalbeam: ['7T'],\n      sleeptalk: ['9M', '7M'],\n      snatch: ['7T'],\n      snore: ['7T'],\n      substitute: ['9M', '7M'],\n      superfang: ['9M', '9E'],\n      surf: ['9M', '7M'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '7M'],\n      synchronoise: ['7L44'],\n      takedown: ['9M'],\n      taunt: ['9M', '7M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      trickroom: ['9M', '7M'],\n      uproar: ['7T'],\n      venoshock: ['9M', '7M'],\n      waterfall: ['9M', '7M'],\n      watergun: ['9L1', '7L1'],\n      waterpulse: ['9M', '9E', '7T', '7E'],\n      wavecrash: ['9L44'],\n      whirlpool: ['9M'],\n      wonderroom: ['7T']\n    }\n  ],\n  [\n    'drampa',\n    {\n      amnesia: ['8M'],\n      attract: ['8M', '7M'],\n      blizzard: ['8M', '7M'],\n      block: ['7T'],\n      breakingswipe: ['8M'],\n      bulldoze: ['8M', '7M'],\n      calmmind: ['8M', '7M'],\n      confide: ['7M'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      dracometeor: ['8T', '7T'],\n      dragonbreath: ['8L25', '7L29'],\n      dragonclaw: ['8M', '7M'],\n      dragondance: ['8M'],\n      dragonpulse: ['8M', '8L35', '7T', '7L41'],\n      dragonrage: ['7L21'],\n      dragonrush: ['8E', '7E'],\n      dragontail: ['7M'],\n      earthquake: ['8M', '7M'],\n      echoedvoice: ['8L1', '7M', '7L1', '7S0'],\n      endeavor: ['7T'],\n      endure: ['8M'],\n      energyball: ['8M', '7M'],\n      extrasensory: ['8L30', '7L37'],\n      facade: ['8M', '7M'],\n      fireblast: ['8M', '7M'],\n      flamethrower: ['8M', '7M'],\n      fling: ['8M', '7M'],\n      fly: ['8M', '8L45', '7M', '7L45'],\n      focusblast: ['8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      glare: ['8L15', '7L13'],\n      grassknot: ['8M', '7M'],\n      heatwave: ['8M', '7T'],\n      helpinghand: ['8M', '7T'],\n      hiddenpower: ['7M'],\n      hurricane: ['8M', '7E', '7S0'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '7M'],\n      hypervoice: ['8M', '8L50', '7T', '7L49'],\n      icebeam: ['8M', '7M'],\n      icywind: ['8M', '7T'],\n      lashout: ['8T'],\n      lightscreen: ['8M', '8L40', '7M', '7L17'],\n      mist: ['8E', '7E'],\n      naturalgift: ['7L25'],\n      naturepower: ['7M'],\n      outrage: ['8M', '8L55', '7T', '7L53'],\n      playnice: ['8L1', '7L1', '7S0'],\n      playrough: ['8M', '7E'],\n      protect: ['8M', '8L10', '7M', '7L9'],\n      psychup: ['7M'],\n      raindance: ['8M', '7M'],\n      razorwind: ['7E'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      rockslide: ['8M', '7M'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '8L20', '7M', '7L33'],\n      scaleshot: ['8T'],\n      shadowball: ['8M', '7M'],\n      shadowclaw: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      sleeptalk: ['8M', '7M'],\n      snarl: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['8M', '7M'],\n      steelwing: ['8M', '7M'],\n      stompingtantrum: ['8M', '7T'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      superpower: ['8M', '7T'],\n      surf: ['8M', '7M'],\n      swift: ['8M'],\n      tailwind: ['7T'],\n      thunder: ['8M', '7M'],\n      thunderbolt: ['8M', '7M'],\n      thunderwave: ['8M', '7M'],\n      tickle: ['8E'],\n      toxic: ['7M'],\n      twister: ['8L5', '7L5'],\n      uproar: ['8M', '7T'],\n      waterpulse: ['7T'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'dhelmise',\n    {\n      absorb: ['8L1', '7L1'],\n      aerialace: ['7M'],\n      allyswitch: ['8M', '7T'],\n      anchorshot: ['8L52', '7L32'],\n      assurance: ['8M'],\n      astonish: ['8L4', '7L1'],\n      attract: ['7M'],\n      block: ['7T'],\n      bodypress: ['8M'],\n      brickbreak: ['8M', '7M'],\n      brine: ['8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M'],\n      confide: ['7M'],\n      doubleteam: ['7M'],\n      earthquake: ['8M', '7M'],\n      embargo: ['7M'],\n      endure: ['8M'],\n      energyball: ['8M', '8L56', '7M', '7L41'],\n      facade: ['8M', '7M'],\n      flashcannon: ['8M', '7M'],\n      frustration: ['7M'],\n      gigadrain: ['8M', '8L28', '7T', '7L23'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      grassyglide: ['8T'],\n      growth: ['8L16', '7L1'],\n      gyroball: ['8M', '8L20', '7M', '7L14'],\n      heavyslam: ['8M', '8L36', '7L50'],\n      helpinghand: ['8M', '7T'],\n      hex: ['8M'],\n      hiddenpower: ['7M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M', '7M'],\n      irondefense: ['8M', '7T'],\n      ironhead: ['8M', '7T'],\n      knockoff: ['7T'],\n      liquidation: ['8M'],\n      megadrain: ['8L12', '7L5'],\n      metalsound: ['8L48', '7L18'],\n      muddywater: ['8M'],\n      painsplit: ['7T'],\n      payback: ['8M', '7M'],\n      phantomforce: ['8M', '8L60', '7L54'],\n      poltergeist: ['8T'],\n      powerwhip: ['8M', '8L64', '7L59'],\n      protect: ['8M', '7M'],\n      raindance: ['8M', '7M'],\n      rapidspin: ['8L1', '7L1'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      rockslide: ['8M', '7M'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      shadowball: ['8M', '8L44', '7M', '7L36'],\n      shadowclaw: ['8M', '7M'],\n      slam: ['8L40', '7L45'],\n      sleeptalk: ['8M', '7M'],\n      sludgewave: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['8M', '7M'],\n      solarblade: ['8M'],\n      spite: ['7T'],\n      steelroller: ['8T'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      surf: ['8M', '7M'],\n      swagger: ['7M'],\n      switcheroo: ['8L24', '7L1'],\n      swordsdance: ['8M', '7M'],\n      synthesis: ['7T'],\n      telekinesis: ['7T'],\n      thief: ['8M', '7M'],\n      toxic: ['7M'],\n      whirlpool: ['8M', '8L32', '7L27'],\n      wrap: ['8L8', '7L9']\n    }\n  ],\n  [\n    'jangmoo',\n    {\n      aerialace: ['7M'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M'],\n      bide: ['7L9'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      confide: ['7M'],\n      counter: ['9E', '8E', '7E'],\n      doubleteam: ['7M'],\n      dracometeor: ['9M', '8T', '7T'],\n      dragonbreath: ['9E', '8E', '7E'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L32', '8M', '8L32', '7M', '7L41'],\n      dragondance: ['9M', '9L40', '8M', '8L40', '7L49'],\n      dragonpulse: ['9M', '8M', '7T'],\n      dragontail: ['9M', '9L8', '8L8', '7M', '7L17'],\n      dualchop: ['7T'],\n      earthquake: ['9M', '8M', '7M'],\n      echoedvoice: ['7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      falseswipe: ['9M', '8M', '7M'],\n      fling: ['8M'],\n      focusblast: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '9E', '8E'],\n      frustration: ['7M'],\n      headbutt: ['9L16', '8L16', '7L25'],\n      hiddenpower: ['7M'],\n      irondefense: ['9M', '9L28', '8M', '8L28', '7T', '7L37'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      leer: ['9L1', '8L1', '7L5'],\n      lowkick: ['9M', '8M', '7T'],\n      nobleroar: ['9L36', '8L36', '7L45'],\n      outrage: ['9M', '9L44', '8M', '8L44', '7T', '7L53'],\n      payback: ['8M', '7M'],\n      protect: ['9M', '9L4', '8M', '8L4', '7M', '7L13'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M', '7E'],\n      roar: ['9M', '7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L21'],\n      screech: ['9L24', '8M', '8L24', '7L33'],\n      shadowclaw: ['9M', '8M', '7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '8M', '7M'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      uproar: ['8M', '7T'],\n      workup: ['9L20', '8M', '8L20', '7M', '7L29'],\n      xscissor: ['9M', '8M', '7M']\n    }\n  ],\n  [\n    'hakamoo',\n    {\n      aerialace: ['9M', '7M'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M'],\n      autotomize: ['8L1', '7L1'],\n      bide: ['7L1'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M', '8M', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      closecombat: ['9M', '9L56', '8M', '8L56', '7L63'],\n      coaching: ['9M', '8T'],\n      confide: ['7M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      dracometeor: ['9M', '8T', '7T'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L32', '8M', '8L32', '7M', '7L43'],\n      dragondance: ['9M', '9L44', '8M', '8L44', '7L53'],\n      dragonpulse: ['9M', '8M', '7T'],\n      dragontail: ['9M', '9L1', '8L1', '7M', '7L17'],\n      drainpunch: ['9M', '8M', '7T'],\n      dualchop: ['7T'],\n      earthquake: ['9M', '8M', '7M'],\n      echoedvoice: ['7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      falseswipe: ['9M', '8M', '7M'],\n      fling: ['9M', '8M', '7M'],\n      focusblast: ['9M', '8M', '7M'],\n      focuspunch: ['9M'],\n      frustration: ['7M'],\n      headbutt: ['9L16', '8L16', '7L25'],\n      hiddenpower: ['7M'],\n      irondefense: ['9M', '9L28', '8M', '8L28', '7T', '7L38'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      leer: ['9L1', '8L1', '7L1'],\n      lowkick: ['9M', '8M', '7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M'],\n      nobleroar: ['9L38', '8L38', '7L48'],\n      outrage: ['9M', '9L50', '8M', '8L50', '7T', '7L58'],\n      payback: ['8M', '7M'],\n      protect: ['9M', '9L1', '8M', '8L1', '7M', '7L1'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L21'],\n      screech: ['9L24', '8M', '8L24', '7L33'],\n      shadowclaw: ['9M', '8M', '7M'],\n      skyuppercut: ['7L1'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '8M', '7M'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      toxic: ['7M'],\n      upperhand: ['9M'],\n      uproar: ['8M', '7T'],\n      vacuumwave: ['9M'],\n      workup: ['9L20', '8M', '8L20', '7M', '7L29'],\n      xscissor: ['9M', '8M', '7M']\n    }\n  ],\n  [\n    'kommoo',\n    {\n      aerialace: ['9M', '7M'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M'],\n      aurasphere: ['9M', '8M'],\n      autotomize: ['8L1', '7L1'],\n      bellydrum: ['9L1', '8L1', '7L1'],\n      bide: ['7L1'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      boomburst: ['9L76', '8L76'],\n      breakingswipe: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      clangingscales: ['9L0', '8L0', '7L1'],\n      clangoroussoul: ['9L68', '8L68'],\n      closecombat: ['9M', '9L60', '8M', '8L60', '7L75'],\n      coaching: ['9M', '8T'],\n      confide: ['7M'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      dracometeor: ['9M', '8T', '7T'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L32', '8M', '8L32', '7M', '7L43'],\n      dragondance: ['9M', '9L44', '8M', '8L44', '7L59'],\n      dragonpulse: ['9M', '8M', '7T'],\n      dragontail: ['9M', '9L1', '8L1', '7M', '7L17'],\n      drainpunch: ['9M', '8M', '7T'],\n      dualchop: ['7T'],\n      earthquake: ['9M', '8M', '7M'],\n      echoedvoice: ['7M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      falseswipe: ['9M', '8M', '7M'],\n      firepunch: ['9M', '8M', '7T'],\n      flamethrower: ['9M', '8M', '7M'],\n      flashcannon: ['9M', '8M', '7M'],\n      fling: ['9M', '8M', '7M'],\n      focusblast: ['9M', '8M', '7M'],\n      focuspunch: ['9M', '7T'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      headbutt: ['9L16', '8L16', '7L25'],\n      helpinghand: ['9M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      hypervoice: ['9M', '8M', '7T'],\n      icepunch: ['9M', '8M', '7T'],\n      irondefense: ['9M', '9L28', '8M', '8L28', '7T', '7L38'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      laserfocus: ['7T'],\n      leer: ['9L1', '8L1', '7L1'],\n      lowkick: ['9M', '8M', '7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M'],\n      metalsound: ['9M'],\n      nobleroar: ['9L38', '8L38', '7L51'],\n      outrage: ['9M', '9L52', '8M', '8L52', '7T', '7L67'],\n      payback: ['8M', '7M'],\n      poisonjab: ['9M', '8M', '7M'],\n      protect: ['9M', '9L1', '8M', '8L1', '7M', '7L1'],\n      raindance: ['9M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '7M'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L21'],\n      screech: ['9L24', '8M', '8L24', '7L33'],\n      shadowclaw: ['9M', '8M', '7M'],\n      shockwave: ['7T'],\n      skyuppercut: ['7L1'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '8M', '7T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M'],\n      superpower: ['8M', '7T'],\n      swagger: ['7M'],\n      swordsdance: ['9M', '8M', '7M'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      thunderpunch: ['9M', '8M', '7T'],\n      toxic: ['7M'],\n      upperhand: ['9M'],\n      uproar: ['8M', '7T'],\n      vacuumwave: ['9M'],\n      waterpulse: ['7T'],\n      workup: ['9L20', '8M', '8L20', '7M', '7L29'],\n      xscissor: ['9M', '8M', '7M']\n    }\n  ],\n  [\n    'kommoototem',\n    {\n      aerialace: ['7M'],\n      aquatail: ['7T'],\n      attract: ['7M'],\n      autotomize: ['7L1'],\n      bellydrum: ['7L1'],\n      bide: ['7L1'],\n      brickbreak: ['7M'],\n      brutalswing: ['7M'],\n      bulkup: ['7M'],\n      bulldoze: ['7M'],\n      clangingscales: ['7L1'],\n      closecombat: ['7L75'],\n      confide: ['7M'],\n      doubleteam: ['7M'],\n      dracometeor: ['7T'],\n      dragonclaw: ['7M', '7L43', '7S0'],\n      dragondance: ['7L59'],\n      dragonpulse: ['7T'],\n      dragontail: ['7M', '7L17'],\n      drainpunch: ['7T'],\n      dualchop: ['7T'],\n      earthquake: ['7M'],\n      echoedvoice: ['7M'],\n      endeavor: ['7T'],\n      facade: ['7M'],\n      falseswipe: ['7M'],\n      firepunch: ['7T'],\n      flamethrower: ['7M'],\n      flashcannon: ['7M'],\n      fling: ['7M'],\n      focusblast: ['7M'],\n      focuspunch: ['7T'],\n      frustration: ['7M'],\n      gigaimpact: ['7M'],\n      headbutt: ['7L25'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['7M'],\n      hypervoice: ['7T'],\n      icepunch: ['7T'],\n      irondefense: ['7T', '7L38', '7S0'],\n      ironhead: ['7T'],\n      irontail: ['7T'],\n      laserfocus: ['7T'],\n      leer: ['7L1'],\n      lowkick: ['7T'],\n      nobleroar: ['7L51'],\n      outrage: ['7T', '7L67'],\n      payback: ['7M'],\n      poisonjab: ['7M'],\n      protect: ['7M', '7L1'],\n      rest: ['7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      rockpolish: ['7M'],\n      rockslide: ['7M'],\n      rocktomb: ['7M'],\n      round: ['7M'],\n      safeguard: ['7M'],\n      sandstorm: ['7M'],\n      scaryface: ['7L21'],\n      screech: ['7L33', '7S0'],\n      shadowclaw: ['7M'],\n      shockwave: ['7T'],\n      skyuppercut: ['7L1'],\n      sleeptalk: ['7M'],\n      snore: ['7T'],\n      stealthrock: ['7T'],\n      stompingtantrum: ['7T'],\n      substitute: ['7M'],\n      superpower: ['7T'],\n      swagger: ['7M'],\n      swordsdance: ['7M'],\n      tackle: ['7L1'],\n      taunt: ['7M'],\n      thunderpunch: ['7T'],\n      toxic: ['7M'],\n      uproar: ['7T'],\n      waterpulse: ['7T'],\n      workup: ['7M', '7L29', '7S0'],\n      xscissor: ['7M']\n    }\n  ],\n  [\n    'tapukoko',\n    {\n      acrobatics: ['8M', '7M'],\n      aerialace: ['7M'],\n      agility: ['8M', '8L35', '7L53', '7S0', '7S1'],\n      assurance: ['8M'],\n      bravebird: ['8M', '8L65', '8S3', '7L1'],\n      calmmind: ['8M', '7M'],\n      charge: ['8L30', '7L26'],\n      confide: ['7M'],\n      dazzlinggleam: ['8M', '7M', '7S2'],\n      defog: ['7T'],\n      discharge: ['8L45', '7L48', '7S0', '7S1'],\n      doubleteam: ['7M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['8M'],\n      electricterrain: ['8M', '8L75', '7L1'],\n      electroball: ['8M', '7L58', '7S0', '7S1'],\n      electroweb: ['8M', '7T'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      fairywind: ['8L10'],\n      falseswipe: ['8M', '8L15', '7M', '7L1'],\n      fly: ['8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M', '7M'],\n      hypervoice: ['8M', '7T'],\n      irondefense: ['8M', '7T'],\n      ironhead: ['8M', '7T'],\n      lightscreen: ['8M', '7M'],\n      meanlook: ['8L50', '7L1'],\n      mirrormove: ['7L38'],\n      naturepower: ['7M'],\n      naturesmadness: ['8L55', '7L43', '7S0', '7S1', '7S2'],\n      powerswap: ['8M', '8L70', '7L1'],\n      protect: ['8M', '7M'],\n      psychup: ['7M'],\n      quickattack: ['8L1', '8S3', '7L1'],\n      raindance: ['8M', '7M'],\n      reflect: ['8M', '7M'],\n      rest: ['8M'],\n      return: ['7M'],\n      roar: ['7M'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      screech: ['8M', '8L40', '7L20'],\n      shockwave: ['8L25', '7T', '7L14'],\n      skyattack: ['7T'],\n      skydrop: ['7M'],\n      sleeptalk: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      spark: ['8L20', '7L8'],\n      steelwing: ['8M', '7M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M'],\n      swagger: ['7M'],\n      swift: ['8M'],\n      taunt: ['8M', '8S3', '7M'],\n      telekinesis: ['7T'],\n      thief: ['8M', '7M'],\n      thunder: ['8M', '7M'],\n      thunderbolt: ['8M', '8S3', '7M', '7S2'],\n      thunderpunch: ['8M', '7T'],\n      thundershock: ['8L1', '7L1'],\n      thunderwave: ['8M', '7M'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      uturn: ['8M', '7M'],\n      voltswitch: ['8M', '7M', '7S2'],\n      wildcharge: ['8M', '8L60', '7M', '7L32'],\n      withdraw: ['8L5', '7L1'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'tapulele',\n    {\n      allyswitch: ['8M', '7T'],\n      aromatherapy: ['8L10', '7L1'],\n      aromaticmist: ['8L30', '7L1'],\n      astonish: ['8L1', '7L1'],\n      calmmind: ['8M', '7M'],\n      chargebeam: ['7M'],\n      charm: ['8M', '8S2'],\n      confide: ['7M'],\n      confusion: ['8L1', '7L1'],\n      dazzlinggleam: ['8M', '7M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['8M', '8L15', '7L1'],\n      echoedvoice: ['7M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M'],\n      extrasensory: ['8L40', '7L48', '7S0', '7S1'],\n      facade: ['8M', '7M'],\n      flatter: ['8L25', '7L53', '7S0', '7S1'],\n      fling: ['8M', '7M'],\n      focusblast: ['8M', '7M'],\n      frustration: ['7M'],\n      futuresight: ['8M'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      gravity: ['7T'],\n      guardswap: ['8M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M', '7M'],\n      irondefense: ['8M', '7T'],\n      lightscreen: ['8M', '7M'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '8S2', '7T'],\n      meanlook: ['8L50', '7L1'],\n      moonblast: ['8L60', '7L58', '7S0', '7S1'],\n      naturepower: ['7M'],\n      naturesmadness: ['8L55', '7L43', '7S0', '7S1'],\n      playrough: ['8M', '8S2'],\n      powerswap: ['8M'],\n      protect: ['8M', '7M'],\n      psybeam: ['8L20', '7L14'],\n      psychic: ['8M', '8S2', '7M'],\n      psychicterrain: ['8M', '8L75', '7L1'],\n      psychocut: ['8M'],\n      psychup: ['7M'],\n      psyshock: ['8M', '8L45', '7M', '7L32'],\n      psywave: ['7L8'],\n      reflect: ['8M', '7M'],\n      rest: ['8M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      shadowball: ['8M', '7M'],\n      skillswap: ['8M', '8L70', '7T', '7L26'],\n      sleeptalk: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      speedswap: ['8M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      swagger: ['7M'],\n      sweetscent: ['8L35', '7L20'],\n      taunt: ['8M', '7M'],\n      telekinesis: ['7T'],\n      thief: ['8M', '7M'],\n      thunder: ['8M', '7M'],\n      thunderbolt: ['8M', '7M'],\n      tickle: ['8L65', '7L38'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      withdraw: ['8L5', '7L1'],\n      wonderroom: ['8M', '7T']\n    }\n  ],\n  [\n    'tapubulu',\n    {\n      brickbreak: ['8M', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['8M', '7M'],\n      bulletseed: ['8M'],\n      calmmind: ['8M', '7M'],\n      closecombat: ['8M'],\n      confide: ['7M'],\n      darkestlariat: ['8M'],\n      dazzlinggleam: ['8M', '7M'],\n      disable: ['8L10', '7L1'],\n      dualchop: ['7T'],\n      echoedvoice: ['7M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M'],\n      facade: ['8M', '7M'],\n      falseswipe: ['8M', '7M'],\n      fling: ['8M', '7M'],\n      focusblast: ['8M', '7M'],\n      focuspunch: ['7T'],\n      frustration: ['7M'],\n      gigadrain: ['8M', '7T', '7L14'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      grassyterrain: ['8M', '8L75', '7L1'],\n      guardswap: ['8M'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['8M'],\n      hornattack: ['8L30', '7L8'],\n      hornleech: ['8L40', '7L32'],\n      hyperbeam: ['8M', '7M'],\n      irondefense: ['8M', '7T'],\n      leafage: ['8L1', '7L1'],\n      leechseed: ['8L15', '7L26'],\n      lightscreen: ['8M', '7M'],\n      meanlook: ['8L50', '7L1'],\n      megadrain: ['8L20'],\n      megahorn: ['8M', '8L65', '8S2', '7L53', '7S0', '7S1'],\n      megapunch: ['8M'],\n      naturepower: ['7M'],\n      naturesmadness: ['8L55', '7L43', '7S0', '7S1'],\n      payback: ['8M', '7M'],\n      powerswap: ['8M'],\n      protect: ['8M', '7M'],\n      psychup: ['7M'],\n      reflect: ['8M', '7M'],\n      rest: ['8M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      roar: ['7M'],\n      rockslide: ['8M', '7M'],\n      rocksmash: ['8L1'],\n      rocktomb: ['8M', '7M'],\n      rototiller: ['7L38'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scaryface: ['8M', '8L35', '8S2', '7L20'],\n      seedbomb: ['8M', '7T'],\n      skullbash: ['8L70', '7L58', '7S0', '7S1'],\n      sleeptalk: ['8M', '7M'],\n      smartstrike: ['8M', '7M'],\n      snarl: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['8M', '7M'],\n      stoneedge: ['8M', '7M'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      superpower: ['8M', '8S2', '7T', '7L1'],\n      swagger: ['7M'],\n      swordsdance: ['8M', '7M'],\n      synthesis: ['7T'],\n      taunt: ['8M', '7M'],\n      telekinesis: ['7T'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      whirlwind: ['8L25', '7L1'],\n      withdraw: ['8L5', '7L1'],\n      woodhammer: ['8L60', '8S2', '7L1'],\n      workup: ['8M', '7M'],\n      worryseed: ['7T'],\n      zenheadbutt: ['8M', '8L45', '7T', '7L48', '7S0', '7S1']\n    }\n  ],\n  [\n    'tapufini',\n    {\n      aquaring: ['8L15', '7L53', '7S0', '7S1'],\n      blizzard: ['8M', '7M'],\n      brine: ['8M', '8L25', '8S2', '7L32'],\n      calmmind: ['8M', '7M'],\n      confide: ['7M'],\n      dazzlinggleam: ['8M', '7M'],\n      defog: ['8L30', '7T', '7L38'],\n      disarmingvoice: ['8L1'],\n      dive: ['8M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['8M'],\n      echoedvoice: ['7M'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      fling: ['8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      gravity: ['7T'],\n      guardswap: ['8M'],\n      haze: ['8L10', '7L1'],\n      healpulse: ['8L35', '7L1'],\n      hiddenpower: ['7M'],\n      hydropump: ['8M', '8L65', '7L58', '7S0', '7S1'],\n      hyperbeam: ['8M', '7M'],\n      icebeam: ['8M', '7M'],\n      icepunch: ['8M', '7T'],\n      icywind: ['8M', '7T'],\n      irondefense: ['8M', '7T'],\n      knockoff: ['7T'],\n      lightscreen: ['8M', '7M'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      meanlook: ['8L50', '7L1'],\n      mist: ['8L10', '7L1'],\n      mistyterrain: ['8M', '8L75', '7L1'],\n      moonblast: ['8L60', '8S2', '7L1'],\n      muddywater: ['8M', '8L45', '7L48', '7S0', '7S1'],\n      naturepower: ['7M'],\n      naturesmadness: ['8L55', '7L43', '7S0', '7S1'],\n      playrough: ['8M'],\n      protect: ['8M', '7M'],\n      psychup: ['7M'],\n      raindance: ['8M', '7M'],\n      reflect: ['8M', '7M'],\n      refresh: ['7L26'],\n      rest: ['8M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      shadowball: ['8M', '7M'],\n      sleeptalk: ['8M', '7M'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      soak: ['8L70', '7L20'],\n      storedpower: ['8M'],\n      substitute: ['8M', '7M'],\n      surf: ['8M', '8L40', '7M'],\n      swagger: ['7M'],\n      taunt: ['8M', '7M'],\n      telekinesis: ['7T'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      trick: ['8M', '7T'],\n      waterfall: ['8M', '7M'],\n      watergun: ['8L1', '7L1'],\n      waterpulse: ['8L20', '8S2', '7T', '7L8'],\n      whirlpool: ['8M', '8S2', '7L14'],\n      withdraw: ['8L5', '7L1'],\n      wonderroom: ['8M', '7T']\n    }\n  ],\n  ['cosmog', { splash: ['9L1', '8L1', '8S1', '7L1', '7S0'], teleport: ['9L1', '8L1', '8S1', '7L23'] }],\n  ['cosmoem', { cosmicpower: ['9L0', '8M', '8L0', '7L1'], teleport: ['9L1', '8L1', '7L1'] }],\n  [\n    'solgaleo',\n    {\n      agility: ['9M', '8M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '8M', '7M'],\n      calmmind: ['9M', '8M', '7M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      cosmicpower: ['9L1', '8M', '8L1', '7L1', '7S0', '7S1'],\n      crunch: ['9M', '9L42', '8M', '8L42', '7L37', '7S0', '7S1'],\n      doubleedge: ['9M'],\n      doubleteam: ['7M'],\n      earthquake: ['9M', '8M', '7M'],\n      endeavor: ['9M', '7T'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M'],\n      fireblast: ['9M', '8M', '7M'],\n      firespin: ['9M', '8M', '8S3'],\n      flamecharge: ['9M', '7M'],\n      flamethrower: ['9M', '8M', '7M'],\n      flareblitz: ['9M', '9L70', '9S4', '8M', '8L70', '7L61'],\n      flashcannon: ['9M', '9L28', '8M', '8L28', '7M', '7L23'],\n      focusblast: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      futuresight: ['9M', '8M'],\n      gigaimpact: ['9M', '9L84', '8M', '8L84', '7M', '7L73'],\n      gyroball: ['9M', '8M', '7M'],\n      heatcrash: ['9M', '8M'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      hypervoice: ['9M', '8M', '7T'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '9L7', '8M', '8L7', '7T', '7L7'],\n      irontail: ['8M', '8S3', '7T'],\n      knockoff: ['9M', '7T'],\n      lastresort: ['7T'],\n      lightscreen: ['9M', '8M', '7M'],\n      metalburst: ['9L49', '9S4', '8L49', '7L43'],\n      metalclaw: ['9M', '9L1', '8L1', '7L1'],\n      metalsound: ['9M', '9L14', '8L14', '7L13'],\n      meteorbeam: ['9M', '8T'],\n      morningsun: ['9L35', '8L35', '7L31', '7S2'],\n      mysticalfire: ['8M'],\n      nobleroar: ['9L1', '8L1', '8S3', '7L59', '7S2'],\n      outrage: ['9M', '8M', '7T'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      psychicfangs: ['9M', '8M'],\n      psychup: ['9M', '7M'],\n      psyshock: ['9M', '8M', '7M'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roar: ['9M', '7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scaryface: ['9M', '8M'],\n      shockwave: ['7T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '9L63', '9S4', '8M', '8L63', '7M', '7L47'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      stoneedge: ['9M', '8M', '7M'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      sunsteelstrike: ['9L0', '8L0', '7L1', '7S0', '7S1', '7S2'],\n      superpower: ['8M', '7T'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      teleport: ['9L1', '8L1', '7L1'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M'],\n      thunderbolt: ['9M', '8M', '7M'],\n      thunderwave: ['8M', '7M'],\n      toxic: ['7M'],\n      trickroom: ['9M', '8M', '7M'],\n      wakeupslap: ['7L1'],\n      wideguard: ['9L77', '8L77', '7L67'],\n      wildcharge: ['9M', '9L56', '9S4', '8M', '8L56', '7M'],\n      workup: ['8M', '7M'],\n      zenheadbutt: ['9M', '9L21', '8M', '8L21', '8S3', '7T', '7L19', '7S0', '7S1', '7S2']\n    }\n  ],\n  [\n    'lunala',\n    {\n      acrobatics: ['9M', '8M', '7M'],\n      aerialace: ['9M', '7M'],\n      agility: ['9M', '8M'],\n      airslash: ['9M', '9L21', '8M', '8L21', '7L19'],\n      blizzard: ['9M', '8M', '7M'],\n      calmmind: ['9M', '8M', '7M'],\n      chargebeam: ['9M', '7M'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L14', '8L14', '7L13'],\n      confusion: ['9L1', '8L1', '7L1'],\n      cosmicpower: ['9L1', '8M', '8L1', '7L1', '7S0', '7S1'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      defog: ['7T'],\n      doubleteam: ['7M'],\n      dreameater: ['9L70', '9S4', '8L70', '7M', '7L59'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M'],\n      fly: ['9M', '8M', '7M'],\n      focusblast: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      futuresight: ['9M', '8M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      heatwave: ['9M', '8M', '7T'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '8L84', '7M', '7L73'],\n      hypnosis: ['9L1', '8L1', '7L1'],\n      icebeam: ['9M', '8M', '7M'],\n      icywind: ['9M', '8M', '7T'],\n      lightscreen: ['9M', '8M', '7M'],\n      magiccoat: ['8L49', '8S3', '7T', '7L43'],\n      magicroom: ['8M', '7T'],\n      meteorbeam: ['9M', '8T'],\n      moonblast: ['9L56', '9S4', '8L56', '8S3', '7L47', '7S2'],\n      moongeistbeam: ['9L0', '8L0', '7L1', '7S0', '7S1', '7S2'],\n      moonlight: ['9L35', '8L35', '7L31', '7S2'],\n      nightdaze: ['9L42', '8L42', '7L37', '7S0', '7S1'],\n      nightshade: ['9M', '9L7', '8L7', '7L7'],\n      phantomforce: ['9M', '9L63', '9S4', '8M', '8L63', '7L61'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '9L49', '9S4', '8M', '7M'],\n      psychocut: ['8M'],\n      psychup: ['9M', '7M'],\n      psyshock: ['9M', '8M', '7M', '7S2'],\n      raindance: ['9M'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scaryface: ['9M', '8M'],\n      shadowball: ['9M', '9L28', '8M', '8L28', '8S3', '7M', '7L23', '7S0', '7S1'],\n      shadowclaw: ['9M', '8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      skyattack: ['7T'],\n      skydrop: ['7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      spite: ['9M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M', '8S3'],\n      tailwind: ['9M', '7T'],\n      telekinesis: ['7T'],\n      teleport: ['9L1', '8L1', '7L1'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M', '7M'],\n      thunderbolt: ['9M', '8M', '7M'],\n      thunderwave: ['8M', '7M'],\n      toxic: ['7M'],\n      trick: ['9M', '8M', '7T'],\n      trickroom: ['9M', '8M', '7M'],\n      wideguard: ['9L77', '8L77', '7L67'],\n      willowisp: ['9M', '8M', '7M'],\n      wonderroom: ['8M', '7T'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'nihilego',\n    {\n      acid: ['8L5', '7L1'],\n      acidspray: ['8L15', '8S2', '7L47', '7S0', '7S1'],\n      allyswitch: ['8M', '7T'],\n      bind: ['7T'],\n      bodyslam: ['8M'],\n      brutalswing: ['8M', '8S2', '7M'],\n      chargebeam: ['7M'],\n      clearsmog: ['8L20', '7L7'],\n      confide: ['7M'],\n      constrict: ['7L1'],\n      corrosivegas: ['8T'],\n      crosspoison: ['8M'],\n      dazzlinggleam: ['8M', '7M'],\n      doubleteam: ['7M'],\n      echoedvoice: ['7M'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      foulplay: ['8M', '7T'],\n      frustration: ['7M'],\n      grassknot: ['8M', '7M'],\n      guardsplit: ['8L25', '7L1'],\n      gunkshot: ['8M', '7T'],\n      headbutt: ['8L35', '7L19'],\n      headsmash: ['8L70', '7L73'],\n      hex: ['8M'],\n      hiddenpower: ['7M'],\n      ironhead: ['8M', '7T'],\n      knockoff: ['7T'],\n      lightscreen: ['8M', '7M'],\n      magiccoat: ['7T'],\n      meteorbeam: ['8T'],\n      mirrorcoat: ['8L60', '7L43', '7S0', '7S1'],\n      painsplit: ['7T'],\n      poisonjab: ['8M', '7M'],\n      pound: ['8L1', '7L1'],\n      powergem: ['8M', '8L50', '7L37', '7S0', '7S1'],\n      powersplit: ['8L25', '7L1'],\n      protect: ['8M', '7M'],\n      psychic: ['8M', '7M'],\n      psyshock: ['8M', '7M'],\n      psywave: ['7L13'],\n      reflect: ['7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M', '7L31'],\n      sandstorm: ['8M', '7M'],\n      sleeptalk: ['8M', '7M'],\n      sludgebomb: ['8M', '7M'],\n      sludgewave: ['8M', '8S2', '7M'],\n      snore: ['8M', '7T'],\n      spite: ['7T'],\n      stealthrock: ['8M', '8L55', '7T', '7L59', '7S1'],\n      substitute: ['8M', '7M'],\n      swagger: ['7M'],\n      telekinesis: ['7T'],\n      thunder: ['8M', '7M'],\n      thunderbolt: ['8M', '7M'],\n      thunderwave: ['8M', '7M'],\n      tickle: ['8L10', '7L1'],\n      toxic: ['7M'],\n      toxicspikes: ['8M', '8L40', '7L29'],\n      trickroom: ['8M', '7M'],\n      venomdrench: ['8M', '8L45', '7L53', '7S0'],\n      venoshock: ['8M', '8L30', '7M', '7L23'],\n      wonderroom: ['8M', '8L65', '8S2', '7T', '7L67'],\n      worryseed: ['7T'],\n      wrap: ['8L1'],\n      zenheadbutt: ['8M', '7T']\n    }\n  ],\n  [\n    'buzzwole',\n    {\n      bodyslam: ['8M'],\n      bounce: ['8M', '7T'],\n      brickbreak: ['8M', '7M'],\n      bugbite: ['7T'],\n      bulkup: ['8M', '8L20', '7M', '7L13'],\n      bulldoze: ['8M', '7M'],\n      closecombat: ['8M'],\n      coaching: ['8T'],\n      cometpunch: ['7L7'],\n      confide: ['7M'],\n      counter: ['8L55', '7L43', '7S0', '7S1'],\n      darkestlariat: ['8M'],\n      doubleteam: ['7M'],\n      drainpunch: ['8M', '7T'],\n      dualchop: ['7T'],\n      dualwingbeat: ['8T'],\n      dynamicpunch: ['8L50', '8S2', '7L59', '7S0', '7S1'],\n      earthquake: ['8M', '7M'],\n      endeavor: ['7T'],\n      endure: ['8M', '8L25', '7L23'],\n      facade: ['8M', '7M'],\n      falseswipe: ['8M', '7M'],\n      fellstinger: ['8L10', '7L1'],\n      fling: ['8M', '7M'],\n      focusenergy: ['8M', '8L45', '7L1'],\n      focuspunch: ['8L70', '7T', '7L73'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      gyroball: ['8M', '7M'],\n      hammerarm: ['8L60', '7L47', '7S0', '7S1'],\n      harden: ['8L1', '7L1'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['8M'],\n      icepunch: ['8M', '7T', '7L1'],\n      ironhead: ['8M', '7T'],\n      leechlife: ['8M', '8S2', '7M', '7L29'],\n      lowsweep: ['8M', '7M'],\n      lunge: ['8L40', '7L53', '7S0', '7S1'],\n      megapunch: ['8M', '8L35', '7L37'],\n      outrage: ['8M', '7T'],\n      payback: ['8M', '7M'],\n      poisonjab: ['8M', '7M'],\n      poweruppunch: ['8L1', '8S2', '7L1'],\n      protect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      reversal: ['8M', '8L30', '7L1'],\n      rockslide: ['8M', '7M'],\n      rocktomb: ['8M', '7M'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      sleeptalk: ['8M', '7M'],\n      smackdown: ['7M'],\n      snore: ['8M', '7T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M'],\n      substitute: ['8M', '7M'],\n      superpower: ['8M', '8L65', '7T', '7L67'],\n      swagger: ['7M'],\n      taunt: ['8M', '8L5', '8S2', '7M', '7L31'],\n      thunderpunch: ['8M', '7T', '7L1'],\n      toxic: ['7M'],\n      vitalthrow: ['8L15', '7L19'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'pheromosa',\n    {\n      agility: ['8M', '8L40', '7L37'],\n      assurance: ['8M'],\n      blizzard: ['8M', '7M'],\n      block: ['7T'],\n      bounce: ['8M', '8L50', '7T', '7L29'],\n      brickbreak: ['8M', '7M'],\n      bugbite: ['8L15', '7T'],\n      bugbuzz: ['8M', '8L60', '7L53', '7S0', '7S1'],\n      closecombat: ['8M'],\n      coaching: ['8T'],\n      confide: ['7M'],\n      doublekick: ['8L25', '7L1'],\n      doubleteam: ['7M'],\n      drillrun: ['8M', '7T'],\n      echoedvoice: ['7M'],\n      electroweb: ['8M', '7T'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      falseswipe: ['8M', '7M'],\n      feint: ['8L1', '7L19'],\n      fling: ['8M', '7M'],\n      focusblast: ['8M', '7M'],\n      foulplay: ['8M', '7T'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      hiddenpower: ['7M'],\n      highjumpkick: ['8L70', '8S2', '7L67'],\n      hyperbeam: ['8M', '7M'],\n      icebeam: ['8M', '7M'],\n      icywind: ['8M', '7T'],\n      jumpkick: ['7L31'],\n      laserfocus: ['7T'],\n      leer: ['8L5', '7L1'],\n      lowkick: ['8M', '8L20', '7T', '7L1'],\n      lowsweep: ['8M', '7M'],\n      lunge: ['8L45', '8S2', '7L47', '7S0', '7S1'],\n      mefirst: ['7L59', '7S0', '7S1'],\n      outrage: ['8M', '7T'],\n      poisonjab: ['8M', '7M'],\n      protect: ['8M', '7M'],\n      quickguard: ['8L10', '7L1'],\n      quiverdance: ['8L65', '7L1'],\n      rapidspin: ['8L1', '7L1'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      roost: ['7M'],\n      round: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      silverwind: ['7L23'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      speedswap: ['8M', '8L55', '7L73'],\n      stomp: ['8L35', '7L13'],\n      substitute: ['8M', '7M'],\n      swagger: ['7M'],\n      swift: ['8M', '8S2', '7L7'],\n      taunt: ['8M', '7M'],\n      throatchop: ['8M', '8S2', '7T'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      tripleaxel: ['8T'],\n      triplekick: ['8L30', '7L43', '7S0', '7S1'],\n      uturn: ['8M', '7M']\n    }\n  ],\n  [\n    'xurkitree',\n    {\n      bind: ['7T'],\n      brutalswing: ['8M', '8S2', '7M'],\n      calmmind: ['8M', '7M'],\n      charge: ['8L5', '7L1'],\n      chargebeam: ['7M'],\n      confide: ['7M'],\n      dazzlinggleam: ['8M', '7M'],\n      discharge: ['8L45', '8S2', '7L47', '7S0', '7S1'],\n      doubleteam: ['7M'],\n      eerieimpulse: ['8M', '8L35', '8S2', '7L29'],\n      electricterrain: ['8M', '8L60', '7L53', '7S0', '7S1'],\n      electroball: ['8M'],\n      electroweb: ['8M', '7T'],\n      endure: ['8M'],\n      energyball: ['8M', '7M'],\n      facade: ['8M', '7M'],\n      fling: ['8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      gravity: ['7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M', '7M'],\n      hypnosis: ['8L30', '7L43', '7S0', '7S1'],\n      ingrain: ['8L15', '7L19'],\n      iondeluge: ['7L67'],\n      lightscreen: ['8M', '7M'],\n      magiccoat: ['7T'],\n      magnetrise: ['8L50', '7T'],\n      naturepower: ['7M'],\n      powerwhip: ['8M', '8L65', '8S2', '7L59', '7S0', '7S1'],\n      protect: ['8M', '7M'],\n      raindance: ['8M', '7M'],\n      reflect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      shockwave: ['8L25', '7T', '7L13'],\n      signalbeam: ['7T', '7L31'],\n      sleeptalk: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['8M', '7M'],\n      spark: ['8L20', '7L1'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      swagger: ['7M'],\n      tailglow: ['7L1'],\n      thunder: ['8M', '7M'],\n      thunderbolt: ['8M', '8L55', '7M', '7L37'],\n      thunderpunch: ['8M', '8L40', '7T', '7L23'],\n      thundershock: ['8L1', '7L1'],\n      thunderwave: ['8M', '8L10', '7M', '7L7'],\n      toxic: ['7M'],\n      voltswitch: ['8M', '7M'],\n      wildcharge: ['8M', '7M'],\n      wrap: ['8L1', '7L1'],\n      zapcannon: ['8L70', '7L73']\n    }\n  ],\n  [\n    'celesteela',\n    {\n      absorb: ['8L1', '7L1'],\n      acrobatics: ['8M', '7M'],\n      airslash: ['8M', '7L1'],\n      autotomize: ['8L30', '7L43', '7S0', '7S1'],\n      block: ['7T'],\n      bodyslam: ['8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M'],\n      confide: ['7M'],\n      doubleedge: ['8L65', '7L73'],\n      doubleteam: ['7M'],\n      earthquake: ['8M', '8S2', '7M'],\n      endure: ['8M'],\n      energyball: ['8M', '7M'],\n      explosion: ['7M'],\n      facade: ['8M', '7M'],\n      fireblast: ['8M', '7M'],\n      flamecharge: ['7M'],\n      flamethrower: ['8M', '7M'],\n      flashcannon: ['8M', '8L40', '7M', '7L37'],\n      fly: ['8M', '7M'],\n      frustration: ['7M'],\n      gigadrain: ['8M', '8L35', '7T', '7L31'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      gravity: ['7T'],\n      gyroball: ['8M', '8S2', '7M'],\n      harden: ['8L5', '7L1'],\n      heavyslam: ['8M', '8L60', '7L67'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M', '7M'],\n      ingrain: ['8L25', '7L1'],\n      irondefense: ['8M', '8L50', '7T', '7L59', '7S0', '7S1'],\n      ironhead: ['8M', '7T', '7L29'],\n      leechseed: ['8L55', '8S2', '7L19'],\n      magnetrise: ['7T'],\n      megadrain: ['8L15', '7L13'],\n      megahorn: ['8M'],\n      metalsound: ['8L45', '7L23'],\n      meteorbeam: ['8T'],\n      protect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      rockslide: ['8M', '7M'],\n      round: ['8M', '7M'],\n      seedbomb: ['8M', '7T', '7L47', '7S0', '7S1'],\n      selfdestruct: ['8M'],\n      shockwave: ['7T'],\n      skullbash: ['8L70', '7L53', '7S0', '7S1'],\n      sleeptalk: ['8M', '7M'],\n      smackdown: ['8L20', '8S2', '7M', '7L7'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['8M', '7M'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M'],\n      substitute: ['8M', '7M'],\n      superpower: ['8M', '7T'],\n      swagger: ['7M'],\n      tackle: ['8L1', '7L1'],\n      toxic: ['7M'],\n      wideguard: ['8L10', '7L1'],\n      zenheadbutt: ['8M', '7T']\n    }\n  ],\n  [\n    'kartana',\n    {\n      aerialace: ['8L25', '7M', '7L23'],\n      aircutter: ['8L20', '8S2', '7L1'],\n      airslash: ['8M', '7L59', '7S0', '7S1'],\n      brickbreak: ['8M', '7M'],\n      calmmind: ['8M', '7M'],\n      confide: ['7M'],\n      cut: ['8L15', '7L1'],\n      defog: ['8L50', '7T', '7L1'],\n      detect: ['8L30', '7L53', '7S0', '7S1'],\n      doubleteam: ['7M'],\n      endure: ['8M'],\n      falseswipe: ['8M', '8L10', '7M', '7L7'],\n      frustration: ['7M'],\n      furycutter: ['8L1', '7L1'],\n      gigadrain: ['8M', '7T'],\n      gigaimpact: ['8M', '7M'],\n      guillotine: ['8L70', '7L73'],\n      hiddenpower: ['7M'],\n      irondefense: ['8M', '7T'],\n      knockoff: ['7T'],\n      laserfocus: ['8L45', '7T', '7L29'],\n      lastresort: ['7T'],\n      leafblade: ['8M', '8L55', '8S2', '7L43', '7S0', '7S1'],\n      nightslash: ['8L35', '7L31'],\n      protect: ['8M', '7M'],\n      psychocut: ['8M', '7L67'],\n      razorleaf: ['8L5', '7L13'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      sacredsword: ['8L60', '7L1'],\n      screech: ['8M'],\n      sleeptalk: ['8M', '7M'],\n      smartstrike: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      solarblade: ['8M'],\n      steelbeam: ['8T'],\n      substitute: ['8M', '7M'],\n      swagger: ['7M'],\n      swordsdance: ['8M', '8L65', '8S2', '7M', '7L37'],\n      synthesis: ['8L40', '7T', '7L19'],\n      tailwind: ['7T'],\n      toxic: ['7M'],\n      vacuumwave: ['8L1', '8S2', '7L1'],\n      xscissor: ['8M', '7M', '7L47', '7S0', '7S1']\n    }\n  ],\n  [\n    'guzzlord',\n    {\n      amnesia: ['8M'],\n      belch: ['8L60', '7L1'],\n      bite: ['8L1', '7L1'],\n      bodypress: ['8M'],\n      bodyslam: ['8M', '8L35'],\n      brickbreak: ['8M', '7M'],\n      brutalswing: ['8M', '8S2', '7M', '7L13'],\n      bulldoze: ['8M', '7M'],\n      corrosivegas: ['8T'],\n      crunch: ['8M', '8L30', '7L37'],\n      darkpulse: ['8M', '7M'],\n      doubleteam: ['7M'],\n      dracometeor: ['8T', '7T'],\n      dragonclaw: ['8M', '7M'],\n      dragonpulse: ['8M', '7T'],\n      dragonrage: ['7L1'],\n      dragonrush: ['8L55', '8S2', '7L73'],\n      dragontail: ['8L1', '7M', '7L23'],\n      drainpunch: ['8M', '7T'],\n      dualchop: ['7T'],\n      earthquake: ['8M', '7M'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      fireblast: ['8M', '7M'],\n      flamethrower: ['8M', '7M'],\n      fling: ['8M', '7M'],\n      frustration: ['7M'],\n      gastroacid: ['8L40', '7T', '7L53', '7S0', '7S1'],\n      gigaimpact: ['8M', '8L70', '7M'],\n      gyroball: ['8M', '7M'],\n      hammerarm: ['8L45', '7L43', '7S1'],\n      heatcrash: ['8M'],\n      heatwave: ['8M', '7T'],\n      heavyslam: ['8M', '8L50', '7L59', '7S0', '7S1'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M', '7M'],\n      irondefense: ['8M', '7T'],\n      ironhead: ['8M', '7T'],\n      irontail: ['8M', '7T', '7L29'],\n      knockoff: ['8L10', '7T'],\n      lashout: ['8T'],\n      lastresort: ['7T'],\n      magnetrise: ['7T'],\n      megakick: ['8M'],\n      megapunch: ['8M', '8S2'],\n      outrage: ['8M', '7T'],\n      payback: ['8M', '7M'],\n      poisonjab: ['8M', '7M'],\n      protect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      rockslide: ['8M', '7M'],\n      rocktomb: ['8M', '7M'],\n      round: ['8M', '7M'],\n      shadowclaw: ['8M', '7M'],\n      shockwave: ['7T'],\n      sleeptalk: ['8M', '7M'],\n      sludgebomb: ['8M', '7M'],\n      sludgewave: ['8M', '7M'],\n      smackdown: ['7M'],\n      snarl: ['8M', '7M'],\n      snore: ['8M', '7T'],\n      steamroller: ['7L19'],\n      steelroller: ['8T'],\n      stockpile: ['8L5', '7L1'],\n      stomp: ['8L15', '7L7'],\n      stompingtantrum: ['8M', '8L20', '8S2', '7T', '7L31'],\n      stoneedge: ['8M', '7M'],\n      substitute: ['8M', '7M'],\n      swallow: ['8L5', '7L1'],\n      thief: ['8M', '7M'],\n      thrash: ['8L65', '7L47', '7S0', '7S1'],\n      toxic: ['7M'],\n      wideguard: ['8L25', '7L1'],\n      wringout: ['7L67', '7S0']\n    }\n  ],\n  [\n    'necrozma',\n    {\n      aerialace: ['9M', '7M'],\n      allyswitch: ['8M', '7T'],\n      autotomize: ['8L80', '8S3', '7L47'],\n      bodyslam: ['9M'],\n      breakingswipe: ['8M'],\n      brickbreak: ['9M', '8M', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      calmmind: ['9M', '8M', '7M'],\n      chargebeam: ['9M', '9L1', '8L1', '8S3', '7M', '7L1'],\n      confide: ['7M'],\n      confusion: ['9L1', '8L1', '7L1'],\n      cosmicpower: ['8M'],\n      darkpulse: ['9M', '8M', '7M'],\n      doubleteam: ['7M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '7T'],\n      earthpower: ['9M', '8M', '7T'],\n      earthquake: ['9M', '8M', '7M'],\n      embargo: ['7M'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M'],\n      flashcannon: ['9M', '8M', '7M'],\n      fling: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      futuresight: ['9M', '8M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      gravity: ['9M', '9L80', '8L1', '7T', '7L31'],\n      gyroball: ['9M', '8M', '7M'],\n      heatwave: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      hypervoice: ['9M', '8M', '7T'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '9L56', '9S4', '8M', '8L56', '7T', '7L59', '7S0', '7S1'],\n      ironhead: ['9M', '8M', '7T'],\n      knockoff: ['9M', '7T'],\n      lightscreen: ['9M', '8M', '7M', '7S2'],\n      magnetrise: ['7T'],\n      metalclaw: ['9M', '9L1', '8L1', '7L1'],\n      meteorbeam: ['9M', '8T'],\n      mirrorshot: ['7L1'],\n      moonlight: ['9L1', '8L1', '7L1', '7S2'],\n      morningsun: ['9L1', '8L1', '7L1'],\n      nightslash: ['9L24', '8L24', '7L23', '7S1'],\n      outrage: ['9M', '8M', '7T'],\n      photongeyser: ['9L72', '8L72', '7L50', '7S1'],\n      powergem: ['9M', '9L64', '9S4', '8M', '8L64', '8S3', '7L43', '7S1'],\n      prismaticlaser: ['9L88', '8L88', '7L73', '7S0'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      psychicfangs: ['9M', '8M'],\n      psychocut: ['9L32', '8M', '8L32', '8S3', '7L37'],\n      psyshock: ['9M', '8M', '7M'],\n      recycle: ['7T'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      rockblast: ['9M', '9L48', '9S4', '8M', '8L48', '7L19'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '8M'],\n      shadowclaw: ['9M', '8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      slash: ['9L16', '8L16', '7L7'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      stealthrock: ['9M', '9L8', '8M', '8L8', '7T', '7L53', '7S0'],\n      stoneedge: ['9M', '8M', '7M'],\n      storedpower: ['9M', '9L40', '9S4', '8M', '8L40', '7L13'],\n      substitute: ['9M', '8M', '7M', '7S2'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '8M', '7M'],\n      telekinesis: ['7T'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      thunderwave: ['8M', '7M'],\n      toxic: ['7M'],\n      trickroom: ['9M', '8M', '7M'],\n      wringout: ['7L67', '7S0'],\n      xscissor: ['9M', '8M', '7M']\n    }\n  ],\n  ['necrozmaduskmane', { sunsteelstrike: ['9R', '8R', '7R'] }],\n  ['necrozmadawnwings', { moongeistbeam: ['9R', '8R', '7R'] }],\n  ['necrozmaultra', { moongeistbeam: ['9R', '8R', '7R'], sunsteelstrike: ['9R', '8R', '7R'] }],\n  [\n    'magearna',\n    {\n      afteryou: ['7T'],\n      agility: ['9M', '8M'],\n      aurasphere: ['9M', '9L66', '8M', '8L66', '7L81'],\n      aurorabeam: ['9L36', '8L36', '7L17'],\n      batonpass: ['9M', '8M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M', '7M'],\n      calmmind: ['9M', '8M', '7M'],\n      chargebeam: ['9M', '7M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      craftyshield: ['8L54', '7L1'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      defensecurl: ['9L6', '8L6', '7L1'],\n      disarmingvoice: ['9M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M', '8M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M'],\n      embargo: ['7M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M'],\n      explosion: ['7M'],\n      facade: ['9M'],\n      falseswipe: ['9M', '8M', '7M'],\n      flashcannon: ['9M', '9L72', '8M', '8L72', '7M', '7L41', '7S0'],\n      fleurcannon: ['9L90', '8L90', '7L49', '7S0'],\n      focusblast: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      gearup: ['8L24', '7L1'],\n      gigaimpact: ['9M', '8M', '7M'],\n      grassknot: ['9M', '8M', '7M'],\n      gravity: ['9M'],\n      guardswap: ['8M'],\n      gyroball: ['9M', '9L1', '8M', '8L1', '7M'],\n      healbell: ['7T'],\n      heartswap: ['7L89'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '7S0'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      icebeam: ['9M', '8M', '7M'],\n      icespinner: ['9M'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '9L18', '8M', '8L18', '7T', '7L57'],\n      ironhead: ['9M', '9L60', '8M', '8L60', '7T', '7L1'],\n      lastresort: ['7T'],\n      lightscreen: ['9M', '8M', '7M'],\n      lockon: ['9L42'],\n      luckychant: ['7L9', '7S0'],\n      magneticflux: ['9L24'],\n      magnetrise: ['7T'],\n      metalsound: ['9M'],\n      mindreader: ['8L42', '7L33'],\n      mirrorshot: ['7L25'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M'],\n      painsplit: ['9M', '9L78', '8L78', '7T', '7L65'],\n      playrough: ['9M'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M', '7M'],\n      psybeam: ['9M', '9L30', '8L30', '7L1'],\n      psychic: ['9M'],\n      psyshock: ['9M'],\n      reflect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M'],\n      return: ['7M'],\n      rollout: ['9L12', '8L12'],\n      round: ['8M', '7M'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '8M', '7M'],\n      shiftgear: ['9L48', '8L48', '7L1'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      solarbeam: ['9M', '8M', '7M'],\n      sonicboom: ['7L1'],\n      speedswap: ['8M'],\n      spikes: ['9M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M'],\n      swagger: ['7M'],\n      swift: ['9M'],\n      synchronoise: ['7L73'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderbolt: ['9M', '8M', '7M'],\n      thunderwave: ['9M', '8M', '7M'],\n      triattack: ['8M'],\n      trick: ['9M', '9L54', '8M'],\n      trickroom: ['9M', '8M', '7M'],\n      trumpcard: ['7L97'],\n      voltswitch: ['9M', '8M', '7M'],\n      zapcannon: ['9L84', '8L84'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'magearnaoriginal',\n    {\n      agility: ['9M', '8M'],\n      aurasphere: ['9M', '9L66', '8M', '8L66'],\n      aurorabeam: ['9L36', '8L36'],\n      batonpass: ['9M', '8M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M'],\n      calmmind: ['9M', '8M'],\n      chargebeam: ['9M'],\n      confuseray: ['9M'],\n      craftyshield: ['8L54'],\n      dazzlinggleam: ['9M', '8M'],\n      defensecurl: ['9L6', '8L6', '8S0'],\n      disarmingvoice: ['9M'],\n      drainingkiss: ['9M', '8M'],\n      eerieimpulse: ['9M', '8M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M'],\n      facade: ['9M'],\n      falseswipe: ['9M', '8M'],\n      flashcannon: ['9M', '9L72', '8M', '8L72', '8S0'],\n      fleurcannon: ['9L90', '8L90', '8S0'],\n      focusblast: ['9M', '8M'],\n      gearup: ['8L24'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      gravity: ['9M'],\n      guardswap: ['8M'],\n      gyroball: ['9M', '9L1', '8M', '8L1'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M', '9L1', '8M', '8L1'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      icespinner: ['9M'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '9L18', '8M', '8L18'],\n      ironhead: ['9M', '9L60', '8M', '8L60'],\n      lightscreen: ['9M', '8M'],\n      lockon: ['9L42'],\n      magneticflux: ['9L24'],\n      metalsound: ['9M'],\n      mindreader: ['8L42'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M'],\n      painsplit: ['9M', '9L78', '8L78'],\n      playrough: ['9M'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M', '9L30', '8L30'],\n      psychic: ['9M'],\n      psyshock: ['9M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M', '8S0'],\n      rollout: ['9L12', '8L12'],\n      round: ['8M'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '8M'],\n      shiftgear: ['9L48', '8L48'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M'],\n      snore: ['8M'],\n      snowscape: ['9M'],\n      solarbeam: ['9M', '8M'],\n      speedswap: ['8M'],\n      spikes: ['9M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderbolt: ['9M', '8M'],\n      thunderwave: ['9M', '8M'],\n      triattack: ['8M'],\n      trick: ['9M', '9L54', '8M'],\n      trickroom: ['9M', '8M'],\n      voltswitch: ['9M', '8M'],\n      zapcannon: ['9L84', '8L84'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'marshadow',\n    {\n      acrobatics: ['8M', '7M'],\n      agility: ['8M'],\n      assurance: ['8M', '8L36', '7L1'],\n      aurasphere: ['8M'],\n      blazekick: ['8M'],\n      bounce: ['8M', '7T'],\n      brickbreak: ['8M', '7M'],\n      bulkup: ['8M', '7M'],\n      calmmind: ['8M', '7M'],\n      closecombat: ['8M', '8L99', '7L50', '7S0'],\n      coaching: ['8T'],\n      confide: ['7M'],\n      copycat: ['8L1', '7L20'],\n      counter: ['8L1', '7L1'],\n      doubleteam: ['7M'],\n      drainpunch: ['8M', '8L1', '8S1', '7T', '7L1'],\n      echoedvoice: ['7M'],\n      endeavor: ['8L90', '7T', '7L60'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      falseswipe: ['8M', '7M'],\n      feint: ['8L1', '7L11'],\n      firepunch: ['8M', '8L1', '7T', '7L1'],\n      fling: ['8M', '7M'],\n      focusblast: ['8M', '7M'],\n      focuspunch: ['7T'],\n      forcepalm: ['8L27', '8S1', '7L5', '7S0'],\n      foulplay: ['8M', '7T'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      hex: ['8M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M'],\n      icepunch: ['8M', '8L1', '7T', '7L1'],\n      ironhead: ['8M', '7T'],\n      jumpkick: ['7L35'],\n      knockoff: ['7T'],\n      laserfocus: ['8L81', '7T', '7L1'],\n      lastresort: ['7T'],\n      lowkick: ['8M', '7T'],\n      lowsweep: ['8M', '7M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      outrage: ['8M', '7T'],\n      payback: ['8M', '7M'],\n      phantomforce: ['8M'],\n      poisonjab: ['8M', '7M'],\n      poltergeist: ['8T'],\n      protect: ['8M', '7M'],\n      psychup: ['8L63', '7M', '7L41'],\n      pursuit: ['7L1'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      reversal: ['8M'],\n      rockslide: ['8M', '7M'],\n      rocktomb: ['8M', '7M'],\n      roleplay: ['8L9', '7T', '7L30'],\n      rollingkick: ['7L15'],\n      round: ['8M', '7M'],\n      shadowball: ['8M', '7M', '7S0'],\n      shadowclaw: ['8M', '7M'],\n      shadowpunch: ['8L18', '7L26'],\n      shadowsneak: ['8L1', '8S1', '7L1'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M', '7M'],\n      smackdown: ['7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      spectralthief: ['8L72', '8S1', '7L45', '7S0'],\n      stoneedge: ['8M', '7M'],\n      substitute: ['8M', '7M'],\n      suckerpunch: ['8L45', '7L56'],\n      superpower: ['8M', '7T'],\n      swagger: ['7M'],\n      swift: ['8M'],\n      thief: ['8M', '7M'],\n      throatchop: ['8M', '7T'],\n      thunderpunch: ['8M', '8L1', '7T', '7L1'],\n      toxic: ['7M'],\n      willowisp: ['8M', '7M'],\n      workup: ['8M', '7M'],\n      zenheadbutt: ['8M', '7T']\n    }\n  ],\n  [\n    'poipole',\n    {\n      acid: ['8L1', '8S2', '7L1'],\n      charm: ['8M', '8L21', '7L19', '7S0'],\n      confide: ['7M'],\n      covet: ['7T'],\n      dragonpulse: ['8M', '8L1', '7T', '7L1', '7S1'],\n      echoedvoice: ['7M'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      fellstinger: ['8L14', '8S2', '7L47'],\n      frustration: ['7M'],\n      furyattack: ['8L7', '8S2', '7L7'],\n      gastroacid: ['8L56', '7T'],\n      growl: ['8L1', '7L1'],\n      gunkshot: ['8M', '7T'],\n      helpinghand: ['8M', '8L1', '8S2', '7T', '7L1'],\n      hiddenpower: ['7M'],\n      irontail: ['8M', '7T'],\n      nastyplot: ['8M', '8L42', '7L31', '7S0', '7S1'],\n      peck: ['8L1', '7L1'],\n      pinmissile: ['8M'],\n      poisonjab: ['8M', '8L49', '7M', '7L37', '7S0', '7S1'],\n      protect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      signalbeam: ['7T'],\n      sleeptalk: ['8M', '7M'],\n      sludgebomb: ['8M', '7M'],\n      sludgewave: ['8M', '7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      substitute: ['8M', '7M'],\n      toxic: ['8L63', '7M', '7L41'],\n      toxicspikes: ['8M'],\n      uproar: ['8M', '7T'],\n      venomdrench: ['8M', '8L35', '7L23', '7S0', '7S1'],\n      venoshock: ['8M', '8L28', '7M', '7L13']\n    }\n  ],\n  [\n    'naganadel',\n    {\n      acid: ['8L1', '7L1'],\n      acrobatics: ['8M', '7M'],\n      aerialace: ['7M'],\n      aircutter: ['8L0', '7L1'],\n      airslash: ['8M', '8L1', '7L53'],\n      allyswitch: ['8M', '7T'],\n      assurance: ['8M'],\n      breakingswipe: ['8M'],\n      charm: ['8M', '8L21', '7L19'],\n      confide: ['7M'],\n      crosspoison: ['8M'],\n      darkpulse: ['8M', '7M'],\n      doubleteam: ['7M'],\n      dracometeor: ['8T', '7T'],\n      dragonclaw: ['8M', '7M'],\n      dragondance: ['8M'],\n      dragonpulse: ['8M', '8L1', '7T', '7L1'],\n      dragonrush: ['8L70'],\n      dragontail: ['7M'],\n      dualwingbeat: ['8T'],\n      echoedvoice: ['7M'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      fellstinger: ['8L14', '7L47'],\n      fireblast: ['8M', '7M'],\n      flamethrower: ['8M', '7M'],\n      fly: ['8M', '7M'],\n      frustration: ['7M'],\n      furyattack: ['8L7', '7L7'],\n      gastroacid: ['8L56', '7T'],\n      gigaimpact: ['8M'],\n      growl: ['8L1', '7L1'],\n      gunkshot: ['8M', '7T'],\n      heatwave: ['8M', '7T'],\n      helpinghand: ['8M', '8L1', '7T', '7L1'],\n      hex: ['8M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M', '7M'],\n      irontail: ['8M', '7T'],\n      laserfocus: ['7T'],\n      leechlife: ['8M', '7M'],\n      nastyplot: ['8M', '8L42', '7L31'],\n      outrage: ['8M', '7T'],\n      peck: ['8L1', '7L1'],\n      pinmissile: ['8M'],\n      poisonjab: ['8M', '8L49', '7M', '7L37'],\n      protect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      scaleshot: ['8T'],\n      shadowclaw: ['8M', '7M'],\n      shockwave: ['7T'],\n      signalbeam: ['7T'],\n      skyattack: ['7T'],\n      skydrop: ['7M'],\n      sleeptalk: ['8M', '7M'],\n      sludgebomb: ['8M', '7M'],\n      sludgewave: ['8M', '7M'],\n      smartstrike: ['8M', '7M'],\n      snarl: ['8M', '7M'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      spikes: ['8M'],\n      substitute: ['8M', '7M'],\n      swift: ['8M'],\n      tailwind: ['7T'],\n      thief: ['8M', '7M'],\n      throatchop: ['8M', '7T'],\n      thunderbolt: ['8M', '7M'],\n      toxic: ['8L63', '7M', '7L41'],\n      toxicspikes: ['8M'],\n      uproar: ['8M', '7T'],\n      uturn: ['8M', '7M'],\n      venomdrench: ['8M', '8L35', '7L23'],\n      venoshock: ['8M', '8L28', '7M', '7L13'],\n      xscissor: ['8M', '7M']\n    }\n  ],\n  [\n    'stakataka',\n    {\n      allyswitch: ['8M', '7T'],\n      autotomize: ['8L35', '8S1', '7L31'],\n      bide: ['7L17'],\n      bind: ['7T'],\n      block: ['8L20', '7T'],\n      bodypress: ['8M'],\n      bodyslam: ['8M'],\n      brutalswing: ['8M', '8S1', '7M'],\n      bulldoze: ['8M', '7M'],\n      doubleedge: ['8L70', '8S1', '7L61'],\n      earthquake: ['8M', '7M'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      flashcannon: ['8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['8M', '7M'],\n      gravity: ['7T'],\n      gyroball: ['8M', '7M'],\n      harden: ['8L1'],\n      heatcrash: ['8M'],\n      heavyslam: ['8M'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['8M'],\n      infestation: ['7M'],\n      irondefense: ['8M', '8L50', '7T', '7L37', '7S0'],\n      ironhead: ['8M', '8L55', '7T', '7L43', '7S0'],\n      lightscreen: ['8M', '7M'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      magnetrise: ['8L45', '7T'],\n      megakick: ['8M'],\n      meteorbeam: ['8T'],\n      protect: ['8M', '8L10', '7M', '7L1'],\n      recycle: ['7T'],\n      reflect: ['8M', '7M'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      rockblast: ['8M', '8L40', '7L47', '7S0'],\n      rockpolish: ['7M'],\n      rockslide: ['8M', '8L25', '8S1', '7M', '7L5'],\n      rockthrow: ['8L5', '7L23'],\n      rocktomb: ['8M', '7M'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      sandstorm: ['8M', '7M'],\n      skillswap: ['8M', '7T'],\n      sleeptalk: ['8M', '7M'],\n      smackdown: ['7M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['8M', '8L65', '7T', '7L11'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      stomp: ['8L15'],\n      stompingtantrum: ['8M', '7T'],\n      stoneedge: ['8M', '7M'],\n      substitute: ['8M', '7M'],\n      superpower: ['8M', '7T'],\n      tackle: ['8L1', '7L1'],\n      takedown: ['8L60', '7L19'],\n      telekinesis: ['7T'],\n      toxic: ['7M'],\n      trickroom: ['8M', '7M'],\n      wideguard: ['8L30', '7L53', '7S0'],\n      wonderroom: ['8M', '7T'],\n      zenheadbutt: ['8M', '7T']\n    }\n  ],\n  [\n    'blacephalon',\n    {\n      afteryou: ['7T'],\n      astonish: ['8L1', '7L1'],\n      calmmind: ['8M', '8L50', '7M', '7L31'],\n      confide: ['7M'],\n      confuseray: ['8L20'],\n      darkpulse: ['8M', '7M'],\n      doubleteam: ['7M'],\n      ember: ['8L10', '7L1'],\n      encore: ['8M'],\n      endure: ['8M'],\n      expandingforce: ['8T'],\n      explosion: ['7M'],\n      facade: ['8M', '7M'],\n      fireblast: ['8M', '8L65', '8S1', '7M', '7L37', '7S0'],\n      firepunch: ['8M'],\n      firespin: ['8M', '8L1'],\n      flameburst: ['7L17'],\n      flamecharge: ['7M'],\n      flamethrower: ['8M', '7M'],\n      fling: ['8M', '7M'],\n      foulplay: ['8M', '7T'],\n      frustration: ['7M'],\n      heatwave: ['8M', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['8M', '7M'],\n      hypnosis: ['8L35'],\n      incinerate: ['8L30'],\n      knockoff: ['7T'],\n      lastresort: ['7T'],\n      lightscreen: ['8M', '8L5', '7M', '7L29'],\n      magiccoat: ['8L25', '7L7'],\n      mindblown: ['8L70', '7L59', '7S0'],\n      mysticalfire: ['8M', '8L40'],\n      nightshade: ['8L15', '7L23'],\n      overheat: ['8M', '7M'],\n      painsplit: ['7T'],\n      payback: ['8M', '7M'],\n      protect: ['8M', '7M'],\n      psychic: ['8M', '7M'],\n      psyshock: ['8M', '7M'],\n      quash: ['7M'],\n      recycle: ['7T'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      rockblast: ['8M'],\n      round: ['8M', '7M'],\n      selfdestruct: ['8M'],\n      shadowball: ['8M', '8L45', '7M', '7L41', '7S0'],\n      shadowclaw: ['8M', '8S1', '7M'],\n      sleeptalk: ['8M', '7M'],\n      smackdown: ['7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['8M'],\n      spite: ['7T'],\n      storedpower: ['8M', '7L13'],\n      substitute: ['8M', '7M'],\n      sunnyday: ['8M', '7M'],\n      swagger: ['7M'],\n      taunt: ['8M', '8S1', '7M'],\n      thief: ['8M', '7M'],\n      torment: ['7M'],\n      toxic: ['7M'],\n      trick: ['8M', '8L60', '7T', '7L47', '7S0'],\n      uproar: ['8M', '7T'],\n      willowisp: ['8M', '8L55', '7M'],\n      zenheadbutt: ['8M', '8S1']\n    }\n  ],\n  [\n    'zeraora',\n    {\n      acrobatics: ['8M', '7M'],\n      aerialace: ['7M'],\n      agility: ['8M', '8L80'],\n      assurance: ['8M'],\n      aurasphere: ['8M'],\n      blazekick: ['8M', '8S1'],\n      bounce: ['8M', '7T'],\n      brickbreak: ['8M', '7M'],\n      brutalswing: ['8M', '7M'],\n      bulkup: ['8M', '7M'],\n      calmmind: ['8M', '7M'],\n      charge: ['8L40', '7L26'],\n      closecombat: ['8M', '8L96', '8S1', '7L47', '7S0'],\n      coaching: ['8T'],\n      confide: ['7M'],\n      discharge: ['8L64', '7L50'],\n      doubleteam: ['7M'],\n      drainpunch: ['8M', '7T'],\n      dualchop: ['7T'],\n      echoedvoice: ['7M'],\n      electricterrain: ['8M'],\n      electroball: ['8M'],\n      electroweb: ['8M', '7T'],\n      endeavor: ['7T'],\n      endure: ['8M'],\n      facade: ['8M', '7M'],\n      fakeout: ['8L1', '7L22'],\n      falseswipe: ['8M', '7M'],\n      firepunch: ['8M', '7T'],\n      fling: ['8M', '7M'],\n      focusblast: ['8M', '7M'],\n      focuspunch: ['7T'],\n      frustration: ['7M'],\n      furyswipes: ['8L8', '7L12'],\n      gigaimpact: ['8M', '7M'],\n      grassknot: ['8M', '7M'],\n      helpinghand: ['8M'],\n      hiddenpower: ['7M'],\n      honeclaws: ['8L56', '7L5'],\n      hyperbeam: ['8M'],\n      irontail: ['8M', '7T'],\n      knockoff: ['7T'],\n      laserfocus: ['7T'],\n      lowkick: ['8M', '7T'],\n      lowsweep: ['8M', '7M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      outrage: ['8M', '8S1', '7T'],\n      payday: ['8M'],\n      plasmafists: ['8L88', '8S1', '7L43', '7S0'],\n      playrough: ['8M'],\n      poweruppunch: ['8L1'],\n      protect: ['8M', '7M'],\n      quickattack: ['8L1', '7L8'],\n      quickguard: ['8L16', '7L40'],\n      rest: ['8M', '7M'],\n      return: ['7M'],\n      revenge: ['8M'],\n      reversal: ['8M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      scaryface: ['8M'],\n      scratch: ['8L1', '7L1'],\n      shockwave: ['7T'],\n      slash: ['8L24', '7L33'],\n      sleeptalk: ['8M', '7M'],\n      snarl: ['8M', '8L1', '7M', '7L19'],\n      snatch: ['7T'],\n      snore: ['8M', '7T'],\n      spark: ['8L1', '7L1'],\n      substitute: ['8M', '7M'],\n      superpower: ['8M', '7T'],\n      swift: ['8M'],\n      taunt: ['8M', '7M'],\n      throatchop: ['8M', '7T'],\n      thunder: ['8M', '7M', '7S0'],\n      thunderbolt: ['8M', '7M'],\n      thunderpunch: ['8M', '8L48', '7T', '7L29', '7S0'],\n      thunderwave: ['8M', '7M'],\n      toxic: ['7M'],\n      voltswitch: ['8M', '8L32', '7M', '7L15'],\n      wildcharge: ['8M', '8L72', '7M', '7L36'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'meltan',\n    {\n      acidarmor: ['9S0', '8L32', '8V', '7L36'],\n      endure: ['8M'],\n      facade: ['8M'],\n      flashcannon: ['9S0', '8M', '8L40', '8V', '7M', '7L45'],\n      gyroball: ['8M'],\n      harden: ['8L1', '8V', '7L1'],\n      headbutt: ['9S0', '8L16', '8V', '7M', '7L1'],\n      irondefense: ['8M'],\n      protect: ['8M', '8V', '7M'],\n      rest: ['8M', '8V', '7M'],\n      round: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      steelbeam: ['8T'],\n      substitute: ['8M', '8V', '7M'],\n      tailwhip: ['8L8', '8V', '7L9'],\n      thunderbolt: ['8M', '8V', '7M'],\n      thundershock: ['8L1', '8V', '7L27'],\n      thunderwave: ['9S0', '8M', '8L24', '8V', '7M', '7L18'],\n      toxic: ['8V', '7M']\n    }\n  ],\n  [\n    'melmetal',\n    {\n      acidarmor: ['8L32', '8V', '7L36'],\n      bodypress: ['8M'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M', '8V', '7M'],\n      brutalswing: ['8M'],\n      darkestlariat: ['8M'],\n      discharge: ['8L64'],\n      doubleironbash: ['8L88', '8V', '8S0', '7L72'],\n      dynamicpunch: ['8L72', '8S0'],\n      earthquake: ['8M', '8V', '7M'],\n      electricterrain: ['8M'],\n      endure: ['8M'],\n      facade: ['8M', '8V', '7M'],\n      flashcannon: ['8M', '8L40', '8V', '7M', '7L45'],\n      gigaimpact: ['8M'],\n      gyroball: ['8M'],\n      harden: ['8L1', '8V', '7L1'],\n      headbutt: ['8L1', '8V', '7M', '7L1'],\n      heavyslam: ['8M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M', '8L96', '8V', '8S0', '7M', '7L90'],\n      icebeam: ['8M', '8V', '7M'],\n      icepunch: ['8M', '8V', '7M'],\n      irondefense: ['8M'],\n      ironhead: ['8M'],\n      megakick: ['8M'],\n      megapunch: ['8M', '8L48', '8V', '7L54'],\n      protect: ['8M', '8L56', '8V', '7M', '7L63'],\n      rest: ['8M', '8V', '7M'],\n      rockslide: ['8M', '8V', '7M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      selfdestruct: ['8M', '8V', '7M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarbeam: ['8M', '8V', '7M'],\n      steelbeam: ['8T'],\n      steelroller: ['8T'],\n      substitute: ['8M', '8V', '7M'],\n      superpower: ['8M', '8L80', '8V', '7M', '7L81'],\n      tailwhip: ['8L1', '8V', '7L1'],\n      thunder: ['8M', '8V', '7M'],\n      thunderbolt: ['8M', '8V', '7M'],\n      thunderpunch: ['8M', '8L0', '8V', '8S0', '7M', '7L0'],\n      thundershock: ['8L1', '8V', '7L27'],\n      thunderwave: ['8M', '8L24', '8V', '7M', '7L1'],\n      toxic: ['8V', '7M']\n    }\n  ],\n  [\n    'grookey',\n    {\n      acrobatics: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bodyslam: ['9M'],\n      branchpoke: ['9L6', '8L6'],\n      bulletseed: ['9M'],\n      drainpunch: ['9M', '8M'],\n      endeavor: ['9M', '9L36', '8L36'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fakeout: ['9E', '8E'],\n      falseswipe: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      focusenergy: ['8M'],\n      gigadrain: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      grasspledge: ['9M', '8T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '8L1'],\n      growth: ['9E', '8E'],\n      hammerarm: ['9E', '8E'],\n      knockoff: ['9M', '9L20', '8L20'],\n      leafstorm: ['9M'],\n      leechseed: ['9E', '8E'],\n      lowkick: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      naturepower: ['8E'],\n      protect: ['9M', '8M'],\n      razorleaf: ['9L12', '8L12'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scratch: ['9L1', '8L1'],\n      screech: ['9L17', '8M', '8L17'],\n      seedbomb: ['9M'],\n      slam: ['9L24', '8L24'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      solarblade: ['9M', '8M'],\n      strength: ['9E', '8E'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L8', '8M', '8L8'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '9L28', '8M', '8L28'],\n      uturn: ['9M', '8M'],\n      woodhammer: ['9L32', '8L32'],\n      workup: ['8M'],\n      worryseed: ['9E', '8E']\n    }\n  ],\n  [\n    'thwackey',\n    {\n      acrobatics: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bodyslam: ['9M'],\n      branchpoke: ['9L1', '8L1'],\n      bulletseed: ['9M'],\n      doubleedge: ['9M'],\n      doublehit: ['9L0', '8L0'],\n      drainpunch: ['9M', '8M'],\n      endeavor: ['9M', '9L48', '8L48'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      falseswipe: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      focusenergy: ['8M'],\n      gigadrain: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      grasspledge: ['9M', '8T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growl: ['9L1', '8L1'],\n      knockoff: ['9M', '9L24', '8L24'],\n      leafstorm: ['9M'],\n      lowkick: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      protect: ['9M', '8M'],\n      razorleaf: ['9L12', '8L12'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M'],\n      scratch: ['9L1', '8L1'],\n      screech: ['9L19', '8M', '8L19'],\n      seedbomb: ['9M'],\n      slam: ['9L30', '8L30'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      solarblade: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '8M', '8L1'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '9L36', '8M', '8L36'],\n      uturn: ['9M', '8M'],\n      woodhammer: ['9L42', '8L42'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'rillaboom',\n    {\n      acrobatics: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      boomburst: ['9L62', '8L62'],\n      branchpoke: ['9L1', '8L1'],\n      brickbreak: ['9M', '8M'],\n      brutalswing: ['8M'],\n      bulkup: ['9M', '8M'],\n      bulldoze: ['9M', '8M'],\n      bulletseed: ['9M', '8M'],\n      darkestlariat: ['8M'],\n      doubleedge: ['9M'],\n      doublehit: ['9L1', '8L1'],\n      drainpunch: ['9M', '8M'],\n      drumbeating: ['9L0', '8L0'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      endeavor: ['9M', '9L54', '8L54'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      falseswipe: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      focusblast: ['9M', '8M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M'],\n      frenzyplant: ['9M', '8T'],\n      gigadrain: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      grasspledge: ['9M', '8T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '9L1', '8M', '8L1'],\n      growl: ['9L1', '8L1'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      knockoff: ['9M', '9L24', '8L24'],\n      leafstorm: ['9M', '8M'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M'],\n      magicalleaf: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudshot: ['9M', '8M'],\n      nobleroar: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      razorleaf: ['9L12', '8L12'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      scratch: ['9L1', '8L1'],\n      screech: ['9L19', '8M', '8L19'],\n      seedbomb: ['9M'],\n      slam: ['9L30', '8L30'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      solarblade: ['9M', '8M'],\n      stompingtantrum: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      superpower: ['8M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '8M', '8L1'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '9L38', '8M', '8L38'],\n      uturn: ['9M', '8M'],\n      woodhammer: ['9L46', '8L46'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'scorbunny',\n    {\n      acrobatics: ['9M', '8M'],\n      agility: ['9M', '9L20', '8M', '8L20'],\n      allyswitch: ['8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      blazekick: ['8M'],\n      bounce: ['9L32', '8M', '8L32'],\n      burningjealousy: ['9M'],\n      counter: ['9L28', '8L28'],\n      doubleedge: ['9M', '9L36', '8L36'],\n      doublekick: ['9L12', '8L12'],\n      electroball: ['9M', '8M'],\n      ember: ['9L6', '8L6'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      firepledge: ['9M', '8T'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L17', '8L17'],\n      flamethrower: ['9M', '8M'],\n      flareblitz: ['9M'],\n      focusenergy: ['8M'],\n      growl: ['9L1', '8L1'],\n      gunkshot: ['9M', '8M'],\n      headbutt: ['9L24', '8L24'],\n      heatwave: ['9M', '8M'],\n      helpinghand: ['9M'],\n      highjumpkick: ['9E', '8E'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M', '8M'],\n      megakick: ['8M'],\n      mudshot: ['8M'],\n      overheat: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      quickattack: ['9L8', '8L8'],\n      rest: ['9M', '8M'],\n      reversal: ['9M', '8M'],\n      round: ['8M'],\n      sandattack: ['9E', '8E'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9E', '8E'],\n      sunnyday: ['9M', '8M'],\n      superfang: ['9M', '9E', '8E'],\n      swift: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'raboot',\n    {\n      acrobatics: ['9M', '8M'],\n      agility: ['9M', '9L24', '8M', '8L24'],\n      allyswitch: ['8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      blazekick: ['8M'],\n      bounce: ['9L42', '8M', '8L42'],\n      bulkup: ['9M', '8M'],\n      burningjealousy: ['9M'],\n      counter: ['9L36', '8L36'],\n      doubleedge: ['9M', '9L48', '8L48'],\n      doublekick: ['9L12', '8L12'],\n      electroball: ['9M', '8M'],\n      ember: ['9L1', '8L1'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      firepledge: ['9M', '8T'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L19', '8L19'],\n      flamethrower: ['9M', '8M'],\n      flareblitz: ['9M', '8M'],\n      focusenergy: ['8M'],\n      growl: ['9L1', '8L1'],\n      gunkshot: ['9M', '8M'],\n      headbutt: ['9L30', '8L30'],\n      heatwave: ['9M', '8M'],\n      helpinghand: ['9M'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M', '8M'],\n      megakick: ['8M'],\n      mudshot: ['9M', '8M'],\n      overheat: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      quickattack: ['9L1', '8L1'],\n      rest: ['9M', '8M'],\n      reversal: ['9M', '8M'],\n      round: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      superfang: ['9M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M'],\n      weatherball: ['9M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'cinderace',\n    {\n      acrobatics: ['9M', '8M'],\n      agility: ['9M', '9L24', '8M', '8L24'],\n      allyswitch: ['8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      blastburn: ['9M', '8T'],\n      blazekick: ['8M'],\n      bounce: ['9L46', '8M', '8L46'],\n      bulkup: ['9M', '8M'],\n      burningjealousy: ['9M'],\n      coaching: ['9M', '8T'],\n      counter: ['9L38', '8L38'],\n      courtchange: ['9L62', '8L62'],\n      doubleedge: ['9M', '9L54', '8L54'],\n      doublekick: ['9L12', '8L12'],\n      electroball: ['9M', '8M'],\n      ember: ['9L1', '8L1'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      feint: ['9L1', '8L1'],\n      fireblast: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      firepledge: ['9M', '8T'],\n      firepunch: ['9M', '8M'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '9L19', '8L19'],\n      flamethrower: ['9M', '8M'],\n      flareblitz: ['9M', '8M'],\n      fling: ['9M'],\n      focusblast: ['9M', '8M'],\n      focusenergy: ['8M'],\n      gigaimpact: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      gunkshot: ['9M', '8M'],\n      headbutt: ['9L30', '8L30'],\n      heatwave: ['9M', '8M'],\n      helpinghand: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      ironhead: ['9M', '8M'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M', '8M'],\n      megakick: ['8M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M'],\n      overheat: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      pyroball: ['9L0', '8L0'],\n      quickattack: ['9L1', '8L1'],\n      rest: ['9M', '8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      round: ['8M'],\n      scorchingsands: ['9M', '8T'],\n      shadowball: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      smackdown: ['9M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      superfang: ['9M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M'],\n      weatherball: ['9M'],\n      willowisp: ['9M'],\n      workup: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'sobble',\n    {\n      aquajet: ['9E', '8E'],\n      aquaring: ['9E', '8E'],\n      attract: ['8M'],\n      batonpass: ['8M'],\n      bind: ['9L8', '8L8'],\n      bounce: ['8M'],\n      chillingwater: ['9M'],\n      dive: ['8M'],\n      doubleteam: ['9E', '8E'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fellstinger: ['9E', '8E'],\n      growl: ['9L1', '8L1'],\n      haze: ['9M', '9E', '8E'],\n      hydropump: ['9M'],\n      iceshard: ['9E', '8E'],\n      lightscreen: ['9M', '8M'],\n      liquidation: ['9M', '9L28', '8M', '8L28'],\n      mist: ['9E', '8E'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      pound: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '9L36', '8M', '8L36'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      soak: ['9L32', '8L32'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L20', '8L20'],\n      surf: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      tearfullook: ['9L17', '8L17'],\n      terablast: ['9M'],\n      uturn: ['9M', '9L24', '8M', '8L24'],\n      waterfall: ['9M'],\n      watergun: ['9L6', '8L6'],\n      waterpledge: ['9M', '8T'],\n      waterpulse: ['9M', '9L12', '8L12'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'drizzile',\n    {\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      bind: ['9L1', '8L1'],\n      bounce: ['8M'],\n      chillingwater: ['9M'],\n      dive: ['8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      haze: ['9M'],\n      hydropump: ['9M'],\n      lightscreen: ['9M', '8M'],\n      liquidation: ['9M', '9L36', '8M', '8L36'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      pound: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '9L48', '8M', '8L48'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      soak: ['9L42', '8L42'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L24', '8L24'],\n      surf: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      tearfullook: ['9L19', '8L19'],\n      terablast: ['9M'],\n      uturn: ['9M', '9L30', '8M', '8L30'],\n      waterfall: ['9M'],\n      watergun: ['9L1', '8L1'],\n      waterpledge: ['9M', '8T'],\n      waterpulse: ['9M', '9L12', '8L12'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'inteleon',\n    {\n      acrobatics: ['9M', '9L1', '8M', '8L1'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      bind: ['9L1', '8L1'],\n      blizzard: ['9M', '8M'],\n      bounce: ['8M'],\n      breakingswipe: ['9M', '8M'],\n      chillingwater: ['9M'],\n      darkpulse: ['9M', '8M'],\n      dive: ['8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      flipturn: ['9M'],\n      focusenergy: ['8M'],\n      gigaimpact: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      haze: ['9M'],\n      hydrocannon: ['9M', '8T'],\n      hydropump: ['9M', '9L62', '8M', '8L62'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M'],\n      lightscreen: ['9M', '8M'],\n      liquidation: ['9M', '9L38', '8M', '8L38'],\n      metronome: ['9M', '8M'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      pound: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      psychup: ['9M'],\n      raindance: ['9M', '9L54', '8M', '8L54'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      scald: ['9M', '8M'],\n      scaleshot: ['8T'],\n      shadowball: ['9M', '8M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M', '8M'],\n      smackdown: ['9M'],\n      snipeshot: ['9L0', '8L0'],\n      snore: ['8M'],\n      snowscape: ['9M'],\n      soak: ['9L46', '8L46'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L24', '8L24'],\n      surf: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      tearfullook: ['9L19', '8L19'],\n      terablast: ['9M'],\n      uturn: ['9M', '9L30', '8M', '8L30'],\n      vacuumwave: ['9M'],\n      waterfall: ['9M', '8M'],\n      watergun: ['9L1', '8L1'],\n      waterpledge: ['9M', '8T'],\n      waterpulse: ['9M', '9L12', '8L12'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'skwovet',\n    {\n      amnesia: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      belch: ['9L45', '8L45'],\n      bellydrum: ['9E', '8E'],\n      bite: ['9L5', '8L5'],\n      bodyslam: ['9M', '9L20', '8M', '8L20'],\n      brutalswing: ['8M'],\n      bulletseed: ['9M', '9L35', '8M', '8L35'],\n      counter: ['9L30', '8L30'],\n      crunch: ['9M', '8M'],\n      curse: ['9M'],\n      defensecurl: ['9E', '8E'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      gyroball: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      irontail: ['8M'],\n      lastresort: ['9E', '8E'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M'],\n      payback: ['8M'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '9L25', '8M', '8L25'],\n      rollout: ['9E', '8E'],\n      round: ['8M'],\n      seedbomb: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spitup: ['9L15', '8L15'],\n      stockpile: ['9L15', '8L15'],\n      stuffcheeks: ['9L10', '8L10'],\n      substitute: ['9M', '8M'],\n      superfang: ['9M', '9L40', '8L40'],\n      swallow: ['9L15', '8L15'],\n      tackle: ['9L1', '8L1'],\n      tailslap: ['8M'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      trailblaze: ['9M'],\n      uproar: ['8M']\n    }\n  ],\n  [\n    'greedent',\n    {\n      amnesia: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      belch: ['9L55', '8L55'],\n      bite: ['9L1', '8L1'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L20', '8M', '8L20'],\n      brutalswing: ['8M'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M', '9L41', '8M', '8L41'],\n      counter: ['9L34', '8L34'],\n      covet: ['9L0', '8L0'],\n      crunch: ['9M', '8M'],\n      curse: ['9M'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      earthquake: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      gyroball: ['9M', '8M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      icefang: ['9M', '8M'],\n      irontail: ['8M'],\n      knockoff: ['9M'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M'],\n      payback: ['8M'],\n      protect: ['9M', '8M'],\n      psychicfangs: ['9M', '8M'],\n      raindance: ['9M'],\n      rest: ['9M', '9L27', '8M', '8L27'],\n      round: ['8M'],\n      seedbomb: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spitup: ['9L15', '8L15'],\n      stockpile: ['9L15', '8L15'],\n      stompingtantrum: ['9M', '8M'],\n      stuffcheeks: ['9L1', '8L1'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      superfang: ['9M', '9L48', '8L48'],\n      superpower: ['8M'],\n      swallow: ['9L15', '8L15'],\n      swordsdance: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      tailslap: ['8M'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunderfang: ['9M', '8M'],\n      trailblaze: ['9M'],\n      uproar: ['8M'],\n      wildcharge: ['9M', '8M']\n    }\n  ],\n  [\n    'rookidee',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bravebird: ['9M', '9L36', '8M', '8L36'],\n      defog: ['9E', '8E'],\n      drillpeck: ['9L28', '8L28'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      faketears: ['9M', '8M'],\n      fly: ['9M', '8M'],\n      focusenergy: ['8M'],\n      furyattack: ['9L12', '8L12'],\n      honeclaws: ['9L8', '8L8'],\n      leer: ['9L1', '8L1'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M'],\n      peck: ['9L1', '8L1'],\n      pluck: ['9L16', '8L16'],\n      powertrip: ['9L4', '8L4'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      rocksmash: ['9E', '8E'],\n      roost: ['9E', '8E'],\n      round: ['8M'],\n      sandattack: ['9E', '8E'],\n      scaryface: ['9M', '9L24', '8M', '8L24'],\n      skyattack: ['9E', '8E'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M', '9E', '8E'],\n      substitute: ['9M', '8M'],\n      swagger: ['9L32', '8L32'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M', '9E', '8E'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20', '8M', '8L20'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      uturn: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'corvisquire',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bravebird: ['9M', '9L46', '8M', '8L46'],\n      drillpeck: ['9L34', '8L34'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      faketears: ['9M', '8M'],\n      fly: ['9M', '8M'],\n      focusenergy: ['8M'],\n      furyattack: ['9L12', '8L12'],\n      honeclaws: ['9L1', '8L1'],\n      hurricane: ['9M'],\n      leer: ['9L1', '8L1'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M'],\n      peck: ['9L1', '8L1'],\n      pluck: ['9L16', '8L16'],\n      powertrip: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '9L28', '8M', '8L28'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      swagger: ['9L40', '8L40'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L22', '8M', '8L22'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      uturn: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'corviknight',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bravebird: ['9M', '9L50', '8M', '8L50'],\n      bulkup: ['9M', '8M'],\n      curse: ['9M'],\n      doubleedge: ['9M'],\n      drillpeck: ['9L34', '8L34'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      faketears: ['9M', '8M'],\n      flashcannon: ['9M', '8M'],\n      fly: ['9M', '8M'],\n      focusenergy: ['8M'],\n      furyattack: ['9L12', '8L12'],\n      gigaimpact: ['9M', '8M'],\n      heavyslam: ['9M', '8M'],\n      honeclaws: ['9L1', '8L1'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      irondefense: ['9M', '9L1', '8M', '8L1'],\n      ironhead: ['9M', '8M'],\n      leer: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M'],\n      metalclaw: ['9M'],\n      metalsound: ['9M', '9L1', '8L1'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M'],\n      peck: ['9L1', '8L1'],\n      pluck: ['9L16', '8L16'],\n      powertrip: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      raindance: ['9M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '9L28', '8M', '8L28'],\n      screech: ['9L1', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M'],\n      steelbeam: ['9M', '8T'],\n      steelwing: ['9L0', '8M', '8L0'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      swagger: ['9L42', '8L42'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L22', '8M', '8L22'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      uturn: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  ['blipbug', { infestation: ['8E'], recover: ['8E'], stickyweb: ['8E'], strugglebug: ['8L1'], supersonic: ['8E'] }],\n  [\n    'dottler',\n    {\n      allyswitch: ['8M'],\n      attract: ['8M'],\n      bodypress: ['8M'],\n      bugbuzz: ['8M'],\n      calmmind: ['8M'],\n      confusion: ['8L0'],\n      endure: ['8M'],\n      energyball: ['8M'],\n      expandingforce: ['8T'],\n      facade: ['8M'],\n      futuresight: ['8M'],\n      guardswap: ['8M'],\n      helpinghand: ['8M'],\n      imprison: ['8M'],\n      irondefense: ['8M'],\n      leechlife: ['8M'],\n      lightscreen: ['8M', '8L0'],\n      magicroom: ['8M'],\n      payback: ['8M'],\n      powerswap: ['8M'],\n      protect: ['8M'],\n      psychic: ['8M'],\n      psychicterrain: ['8M'],\n      psyshock: ['8M'],\n      reflect: ['8M', '8L0'],\n      rest: ['8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      shadowball: ['8M'],\n      skillswap: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarbeam: ['8M'],\n      storedpower: ['8M'],\n      strugglebug: ['8L1'],\n      substitute: ['8M'],\n      trick: ['8M'],\n      trickroom: ['8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'orbeetle',\n    {\n      afteryou: ['8L40'],\n      agility: ['8M', '8L12'],\n      allyswitch: ['8M', '8L24'],\n      attract: ['8M'],\n      batonpass: ['8M'],\n      bodypress: ['8M'],\n      bugbuzz: ['8M', '8L28'],\n      calmmind: ['8M', '8L44'],\n      confuseray: ['8L4'],\n      confusion: ['8L1'],\n      endure: ['8M'],\n      energyball: ['8M'],\n      expandingforce: ['8T'],\n      facade: ['8M'],\n      futuresight: ['8M'],\n      gigadrain: ['8M'],\n      gigaimpact: ['8M'],\n      guardswap: ['8M'],\n      helpinghand: ['8M'],\n      hyperbeam: ['8M'],\n      hypnosis: ['8L20'],\n      imprison: ['8M'],\n      irondefense: ['8M'],\n      leechlife: ['8M'],\n      lightscreen: ['8M', '8L1'],\n      magiccoat: ['8L8'],\n      magicroom: ['8M'],\n      mirrorcoat: ['8L32'],\n      payback: ['8M'],\n      powerswap: ['8M'],\n      protect: ['8M'],\n      psybeam: ['8L16'],\n      psychic: ['8M', '8L36'],\n      psychicterrain: ['8M', '8L48'],\n      psychocut: ['8M'],\n      psyshock: ['8M'],\n      reflect: ['8M', '8L1'],\n      rest: ['8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      shadowball: ['8M'],\n      skillswap: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarbeam: ['8M'],\n      storedpower: ['8M'],\n      strugglebug: ['8L1'],\n      substitute: ['8M'],\n      trick: ['8M'],\n      trickroom: ['8M'],\n      uturn: ['8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'nickit',\n    {\n      agility: ['8M'],\n      assurance: ['8M', '8L16'],\n      attract: ['8M'],\n      batonpass: ['8M'],\n      beatup: ['8M', '8L4'],\n      dig: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      faketears: ['8M'],\n      foulplay: ['8M', '8L36'],\n      honeclaws: ['8L8'],\n      howl: ['8E'],\n      knockoff: ['8E'],\n      lashout: ['8T'],\n      mudshot: ['8M'],\n      nastyplot: ['8M', '8L20'],\n      nightslash: ['8L28'],\n      playrough: ['8M'],\n      protect: ['8M'],\n      quickattack: ['8L1'],\n      quickguard: ['8E'],\n      rest: ['8M'],\n      round: ['8M'],\n      screech: ['8M'],\n      sleeptalk: ['8M'],\n      snarl: ['8M', '8L12'],\n      snore: ['8M'],\n      substitute: ['8M'],\n      suckerpunch: ['8L24'],\n      swift: ['8M'],\n      tailslap: ['8M', '8L32'],\n      tailwhip: ['8L1'],\n      taunt: ['8M'],\n      thief: ['8M'],\n      torment: ['8E']\n    }\n  ],\n  [\n    'thievul',\n    {\n      acrobatics: ['8M'],\n      agility: ['8M'],\n      assurance: ['8M', '8L16'],\n      attract: ['8M'],\n      batonpass: ['8M'],\n      beatup: ['8M', '8L1'],\n      burningjealousy: ['8T'],\n      crunch: ['8M'],\n      darkpulse: ['8M'],\n      dig: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      faketears: ['8M'],\n      firefang: ['8M'],\n      foulplay: ['8M', '8L46'],\n      gigaimpact: ['8M'],\n      grassknot: ['8M'],\n      honeclaws: ['8L1'],\n      hyperbeam: ['8M'],\n      icefang: ['8M'],\n      lashout: ['8T'],\n      mudshot: ['8M'],\n      nastyplot: ['8M', '8L22'],\n      nightslash: ['8L34'],\n      partingshot: ['8L52'],\n      playrough: ['8M'],\n      protect: ['8M'],\n      psychic: ['8M'],\n      quickattack: ['8L1'],\n      rest: ['8M'],\n      round: ['8M'],\n      screech: ['8M'],\n      shadowball: ['8M'],\n      shadowclaw: ['8M'],\n      sleeptalk: ['8M'],\n      snarl: ['8M', '8L12'],\n      snore: ['8M'],\n      substitute: ['8M'],\n      suckerpunch: ['8L28'],\n      swift: ['8M'],\n      tailslap: ['8M', '8L40'],\n      tailwhip: ['8L1'],\n      taunt: ['8M'],\n      thief: ['8M', '8L0'],\n      thunderfang: ['8M'],\n      uturn: ['8M']\n    }\n  ],\n  [\n    'gossifleur',\n    {\n      aromatherapy: ['8L32'],\n      attract: ['8M'],\n      bulletseed: ['8M'],\n      charm: ['8M'],\n      endure: ['8M'],\n      energyball: ['8M'],\n      facade: ['8M'],\n      gigadrain: ['8M'],\n      grassknot: ['8M'],\n      grassyglide: ['8T'],\n      grassyterrain: ['8M'],\n      growth: ['8E'],\n      helpinghand: ['8M'],\n      hypervoice: ['8M', '8L28'],\n      leafage: ['8L1'],\n      leafstorm: ['8M', '8L36'],\n      leaftornado: ['8L21'],\n      leechseed: ['8E'],\n      lightscreen: ['8M'],\n      magicalleaf: ['8M'],\n      poisonpowder: ['8E'],\n      pollenpuff: ['8M'],\n      protect: ['8M'],\n      rapidspin: ['8L4'],\n      razorleaf: ['8L12'],\n      rest: ['8M'],\n      round: ['8M', '8L16'],\n      sing: ['8L1'],\n      sleeppowder: ['8E'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarbeam: ['8M'],\n      stunspore: ['8E'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      sweetscent: ['8L8'],\n      synthesis: ['8L24'],\n      worryseed: ['8E']\n    }\n  ],\n  [\n    'eldegoss',\n    {\n      aromatherapy: ['8L40'],\n      attract: ['8M'],\n      bulletseed: ['8M'],\n      charm: ['8M'],\n      cottonguard: ['8L52'],\n      cottonspore: ['8L0'],\n      endure: ['8M'],\n      energyball: ['8M'],\n      facade: ['8M'],\n      gigadrain: ['8M'],\n      gigaimpact: ['8M'],\n      grassknot: ['8M'],\n      grassyglide: ['8T'],\n      grassyterrain: ['8M'],\n      helpinghand: ['8M'],\n      hyperbeam: ['8M'],\n      hypervoice: ['8M', '8L34'],\n      leafage: ['8L1'],\n      leafstorm: ['8M', '8L46'],\n      leaftornado: ['8L23'],\n      lightscreen: ['8M'],\n      magicalleaf: ['8M'],\n      pollenpuff: ['8M'],\n      protect: ['8M'],\n      rapidspin: ['8L1'],\n      razorleaf: ['8L12'],\n      rest: ['8M'],\n      round: ['8M', '8L16'],\n      seedbomb: ['8M'],\n      sing: ['8L1'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      solarbeam: ['8M'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      sweetscent: ['8L1'],\n      synthesis: ['8L28'],\n      weatherball: ['8M']\n    }\n  ],\n  [\n    'wooloo',\n    {\n      agility: ['8M'],\n      attract: ['8M'],\n      copycat: ['8L8'],\n      cottonguard: ['8L36'],\n      counter: ['8E'],\n      defensecurl: ['8L4'],\n      doubleedge: ['8L40'],\n      doublekick: ['8L16'],\n      electroball: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      grassyglide: ['8T'],\n      growl: ['8L1'],\n      guardsplit: ['8L12'],\n      guardswap: ['8M', '8L28'],\n      headbutt: ['8L21'],\n      payback: ['8M'],\n      protect: ['8M'],\n      rest: ['8M'],\n      reversal: ['8M', '8L32'],\n      round: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      stomp: ['8E'],\n      substitute: ['8M'],\n      swagger: ['8E'],\n      tackle: ['8L1'],\n      takedown: ['8L25'],\n      thunderwave: ['8M'],\n      wildcharge: ['8M']\n    }\n  ],\n  [\n    'dubwool',\n    {\n      agility: ['8M'],\n      attract: ['8M'],\n      batonpass: ['8M'],\n      bodypress: ['8M'],\n      bodyslam: ['8M'],\n      bounce: ['8M'],\n      copycat: ['8L1'],\n      cottonguard: ['8L44'],\n      defensecurl: ['8L1'],\n      doubleedge: ['8L50'],\n      doublekick: ['8L16'],\n      electroball: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      gigaimpact: ['8M'],\n      grassyglide: ['8T'],\n      growl: ['8L1'],\n      guardsplit: ['8L12'],\n      guardswap: ['8M', '8L32'],\n      headbutt: ['8L21'],\n      hyperbeam: ['8M'],\n      lastresort: ['8L56'],\n      megakick: ['8M'],\n      payback: ['8M'],\n      protect: ['8M'],\n      rest: ['8M'],\n      retaliate: ['8M'],\n      reversal: ['8M', '8L38'],\n      round: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      substitute: ['8M'],\n      swordsdance: ['8M'],\n      tackle: ['8L1'],\n      takedown: ['8L27'],\n      thunderwave: ['8M'],\n      wildcharge: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'chewtle',\n    {\n      assurance: ['8M'],\n      attract: ['8M'],\n      bite: ['9L7', '8L7'],\n      bodyslam: ['9M', '9L49', '8M', '8L49'],\n      chillingwater: ['9M'],\n      counter: ['9L28', '8L28'],\n      crunch: ['9M'],\n      dive: ['8M'],\n      dragontail: ['9M', '9E', '8E'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      falseswipe: ['9M'],\n      gastroacid: ['9E', '8E'],\n      headbutt: ['9L21', '8L21'],\n      hydropump: ['9M', '8M'],\n      icefang: ['9M', '8M'],\n      jawlock: ['9L35', '8L35'],\n      liquidation: ['9M', '9L42', '8M', '8L42'],\n      mudshot: ['9M', '8M'],\n      payback: ['8M'],\n      poisonjab: ['9M'],\n      protect: ['9M', '9L14', '8M', '8L14'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      revenge: ['8M'],\n      round: ['8M'],\n      scaleshot: ['8T'],\n      scaryface: ['9M'],\n      shellsmash: ['9E'],\n      skittersmack: ['9M', '8T'],\n      skullbash: ['8E'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M', '8M'],\n      surf: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      waterfall: ['9M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M'],\n      whirlpool: ['9M', '8M']\n    }\n  ],\n  [\n    'drednaw',\n    {\n      assurance: ['8M'],\n      attract: ['8M'],\n      bite: ['9L1', '8L1'],\n      blizzard: ['9M', '8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L57', '8M', '8L57'],\n      bulldoze: ['9M', '8M'],\n      chillingwater: ['9M'],\n      counter: ['9L30', '8L30'],\n      crunch: ['9M', '9L1', '8M', '8L1'],\n      dig: ['9M', '8M'],\n      dive: ['8M'],\n      doubleedge: ['9M'],\n      dragontail: ['9M'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      falseswipe: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      headbutt: ['9L21', '8L21'],\n      headsmash: ['9L66', '8L66'],\n      highhorsepower: ['9M', '8M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      icefang: ['9M', '8M'],\n      icespinner: ['9M'],\n      irondefense: ['9M', '8M'],\n      irontail: ['8M'],\n      jawlock: ['9L39', '8L39'],\n      liquidation: ['9M', '9L48', '8M', '8L48'],\n      megahorn: ['8M'],\n      meteorbeam: ['9M', '8T'],\n      muddywater: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      payback: ['8M'],\n      poisonjab: ['9M', '8M'],\n      protect: ['9M', '9L1', '8M', '8L1'],\n      raindance: ['9M', '8M'],\n      razorshell: ['9L1', '8M', '8L1'],\n      rest: ['9M', '8M'],\n      revenge: ['8M'],\n      rockblast: ['9M', '8M'],\n      rockpolish: ['9L1', '8L1'],\n      rockslide: ['9M', '8M'],\n      rocktomb: ['9M', '9L0', '8M', '8L0'],\n      round: ['8M'],\n      sandstorm: ['9M', '8M'],\n      sandtomb: ['9M', '8M'],\n      scald: ['8M'],\n      scaleshot: ['8T'],\n      scaryface: ['9M', '8M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M'],\n      smartstrike: ['9M', '8M'],\n      snore: ['8M'],\n      stealthrock: ['9M', '8M'],\n      stompingtantrum: ['9M', '8M'],\n      stoneedge: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      superfang: ['9M'],\n      superpower: ['8M'],\n      surf: ['9M', '8M'],\n      swordsdance: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M'],\n      waterfall: ['9M', '8M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M'],\n      whirlpool: ['9M', '8M']\n    }\n  ],\n  [\n    'yamper',\n    {\n      attract: ['8M'],\n      bite: ['8L10'],\n      charge: ['8L35'],\n      charm: ['8M', '8L26'],\n      crunch: ['8M', '8L30'],\n      dig: ['8M'],\n      discharge: ['8E'],\n      doubleedge: ['8E'],\n      electroball: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      firefang: ['8M'],\n      flamecharge: ['8E'],\n      helpinghand: ['8M'],\n      howl: ['8E'],\n      nuzzle: ['8L5'],\n      playrough: ['8M', '8L45'],\n      protect: ['8M'],\n      rest: ['8M'],\n      risingvoltage: ['8T'],\n      roar: ['8L15'],\n      round: ['8M'],\n      sandattack: ['8E'],\n      sleeptalk: ['8M'],\n      snarl: ['8M'],\n      snore: ['8M'],\n      spark: ['8L20'],\n      substitute: ['8M'],\n      swift: ['8M'],\n      tackle: ['8L1'],\n      tailwhip: ['8L1'],\n      thunder: ['8M'],\n      thunderbolt: ['8M'],\n      thunderfang: ['8M'],\n      thunderwave: ['8M'],\n      uproar: ['8M'],\n      voltswitch: ['8M'],\n      wildcharge: ['8M', '8L40']\n    }\n  ],\n  [\n    'boltund',\n    {\n      agility: ['8M'],\n      attract: ['8M'],\n      bite: ['8L1'],\n      bulkup: ['8M'],\n      charge: ['8L41'],\n      charm: ['8M', '8L28'],\n      crunch: ['8M', '8L34'],\n      dig: ['8M'],\n      eerieimpulse: ['8M'],\n      electricterrain: ['8M', '8L62'],\n      electrify: ['8L1'],\n      electroball: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      firefang: ['8M'],\n      focusenergy: ['8M'],\n      gigaimpact: ['8M'],\n      helpinghand: ['8M'],\n      hyperbeam: ['8M'],\n      hypervoice: ['8M'],\n      nuzzle: ['8L1'],\n      playrough: ['8M', '8L55'],\n      protect: ['8M'],\n      psychicfangs: ['8M'],\n      rest: ['8M'],\n      risingvoltage: ['8T'],\n      roar: ['8L15'],\n      round: ['8M'],\n      sleeptalk: ['8M'],\n      snarl: ['8M'],\n      snore: ['8M'],\n      spark: ['8L20'],\n      substitute: ['8M'],\n      swift: ['8M'],\n      tackle: ['8L1'],\n      tailwhip: ['8L1'],\n      thunder: ['8M'],\n      thunderbolt: ['8M'],\n      thunderfang: ['8M'],\n      thunderwave: ['8M'],\n      uproar: ['8M'],\n      voltswitch: ['8M'],\n      wildcharge: ['8M', '8L48']\n    }\n  ],\n  [\n    'rolycoly',\n    {\n      ancientpower: ['9L20', '8L20'],\n      attract: ['8M'],\n      block: ['9E', '8E'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      curse: ['9M'],\n      dig: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      explosion: ['9E', '8E'],\n      facade: ['9M', '8M'],\n      gyroball: ['9M', '8M'],\n      heatcrash: ['9M', '9L35', '8M', '8L35'],\n      incinerate: ['9L25', '8L25'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M'],\n      meteorbeam: ['9M', '8T'],\n      mudslap: ['9M', '9E', '8E'],\n      powergem: ['9M'],\n      protect: ['9M', '8M'],\n      rapidspin: ['9L5', '8L5'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      rockblast: ['9M', '9L40', '8M', '8L40'],\n      rockpolish: ['9L15', '8L15'],\n      rockslide: ['9M', '8M'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      sandstorm: ['9M', '8M'],\n      sandtomb: ['9M', '8M'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      smackdown: ['9M', '9L10', '8L10'],\n      smokescreen: ['9L1', '8L1'],\n      snore: ['8M'],\n      spikes: ['9M', '8M'],\n      stealthrock: ['9M', '9L30', '8M', '8L30'],\n      stoneedge: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      willowisp: ['9M', '8M']\n    }\n  ],\n  [\n    'carkol',\n    {\n      ancientpower: ['9L20', '8L20'],\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      burnup: ['8L55'],\n      curse: ['9M'],\n      dig: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '9L0', '8L0'],\n      flamethrower: ['9M', '8M'],\n      flareblitz: ['9M', '8M'],\n      gyroball: ['9M', '8M'],\n      heatcrash: ['9M', '9L41', '8M', '8L41'],\n      heatwave: ['9M', '8M'],\n      heavyslam: ['9M', '8M'],\n      highhorsepower: ['8M'],\n      incinerate: ['9L27', '8L27'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M'],\n      meteorbeam: ['9M', '8T'],\n      mudslap: ['9M'],\n      overheat: ['9M', '8M'],\n      powergem: ['9M'],\n      protect: ['9M', '8M'],\n      rapidspin: ['9L1', '8L1'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      rockblast: ['9M', '9L48', '8M', '8L48'],\n      rockpolish: ['9L15', '8L15'],\n      rockslide: ['9M', '8M'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      sandstorm: ['9M', '8M'],\n      sandtomb: ['9M', '8M'],\n      scald: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      smackdown: ['9M', '9L1', '8L1'],\n      smokescreen: ['9L1', '8L1'],\n      snore: ['8M'],\n      spikes: ['9M', '8M'],\n      stealthrock: ['9M', '9L35', '8M', '8L35'],\n      stoneedge: ['9M', '9L55', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      willowisp: ['9M', '8M']\n    }\n  ],\n  [\n    'coalossal',\n    {\n      ancientpower: ['9L20', '8L20'],\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '8M'],\n      burnup: ['8L63'],\n      curse: ['9M'],\n      dig: ['9M', '8M'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      firepunch: ['9M', '8M'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M', '9L1', '8L1'],\n      flamethrower: ['9M', '8M'],\n      flareblitz: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      gyroball: ['9M', '8M'],\n      heatcrash: ['9M', '9L45', '8M', '8L45'],\n      heatwave: ['9M', '8M'],\n      heavyslam: ['9M', '8M'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      incinerate: ['9L27', '8L27'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      meteorbeam: ['9M', '8T'],\n      mudslap: ['9M'],\n      overheat: ['9M', '8M'],\n      powergem: ['9M'],\n      protect: ['9M', '8M'],\n      rapidspin: ['9L1', '8L1'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      rockblast: ['9M', '9L54', '8M', '8L54'],\n      rockpolish: ['9L15', '8L15'],\n      rockslide: ['9M', '8M'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      sandstorm: ['9M', '8M'],\n      sandtomb: ['9M', '8M'],\n      scald: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      smackdown: ['9M', '9L1', '8L1'],\n      smokescreen: ['9L1', '8L1'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      spikes: ['9M', '8M'],\n      stealthrock: ['9M', '9L37', '8M', '8L37'],\n      stoneedge: ['9M', '9L63', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      tarshot: ['9L0', '8L0'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      willowisp: ['9M', '8M']\n    }\n  ],\n  [\n    'applin',\n    {\n      astonish: ['9L1', '8L1'],\n      attract: ['8M'],\n      defensecurl: ['9E', '8E'],\n      dracometeor: ['8T'],\n      grassyglide: ['8T'],\n      pounce: ['9M'],\n      recycle: ['9E', '8E'],\n      rollout: ['9E', '8E'],\n      suckerpunch: ['9E', '8E'],\n      terablast: ['9M'],\n      withdraw: ['9L1', '8L1']\n    }\n  ],\n  [\n    'flapple',\n    {\n      acidspray: ['9M', '9L4', '8L4'],\n      acrobatics: ['9M', '9L8', '8M', '8L8'],\n      aerialace: ['9M'],\n      airslash: ['9M', '8M'],\n      astonish: ['9L1', '8L1'],\n      attract: ['8M'],\n      bulletseed: ['9M', '8M'],\n      dracometeor: ['9M', '8T'],\n      dragonbreath: ['9L20', '8L20'],\n      dragondance: ['9M', '9L24', '8M', '8L24'],\n      dragonpulse: ['9M', '9L28', '8M', '8L28'],\n      dragonrush: ['9L44', '8L44'],\n      dualwingbeat: ['9M', '8T'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fly: ['9M', '9L40', '8M', '8L40'],\n      focusenergy: ['8M'],\n      gigadrain: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      gravapple: ['9L32', '8L32'],\n      growth: ['9L1', '8L1'],\n      heavyslam: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      irondefense: ['9M', '9L36', '8M', '8L36'],\n      leafstorm: ['9M'],\n      leechseed: ['9L12', '8L12'],\n      magicalleaf: ['9M'],\n      outrage: ['9M', '8M'],\n      pounce: ['9M'],\n      protect: ['9M', '9L16', '8M', '8L16'],\n      recycle: ['9L1', '8L1'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      seedbomb: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      trailblaze: ['9M'],\n      twister: ['9L1', '8L1'],\n      uturn: ['9M', '8M'],\n      wingattack: ['9L0', '8L0'],\n      withdraw: ['9L1', '8L1']\n    }\n  ],\n  [\n    'appletun',\n    {\n      amnesia: ['9M', '8M'],\n      appleacid: ['9L28', '8L28'],\n      astonish: ['9L1', '8L1'],\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L32', '8M', '8L32'],\n      bulldoze: ['9M', '8M'],\n      bulletseed: ['9M', '9L20', '8M', '8L20'],\n      curse: ['9M', '9L4', '8L4'],\n      dracometeor: ['9M', '8T'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40'],\n      dragontail: ['9M'],\n      earthquake: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L44', '8M', '8L44'],\n      facade: ['9M', '8M'],\n      gigadrain: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M'],\n      growth: ['9L1', '8L1'],\n      gyroball: ['9M', '8M'],\n      headbutt: ['9L0', '8L0'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      irondefense: ['9M', '9L36', '8M', '8L36'],\n      ironhead: ['9M'],\n      leafstorm: ['9M'],\n      leechseed: ['9L12', '8L12'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M'],\n      outrage: ['9M', '8M'],\n      payback: ['8M'],\n      pounce: ['9M'],\n      protect: ['9M', '9L16', '8M', '8L16'],\n      raindance: ['9M'],\n      recover: ['9L24', '8L24'],\n      recycle: ['9L1', '8L1'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      seedbomb: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      stomp: ['9L8', '8L8'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      superpower: ['8M'],\n      sweetscent: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      trailblaze: ['9M'],\n      withdraw: ['9L1', '8L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'silicobra',\n    {\n      attract: ['8M'],\n      belch: ['9E', '8E'],\n      bodyslam: ['9M'],\n      brutalswing: ['9L10', '8M', '8L10'],\n      bulldoze: ['9M', '9L15', '8M', '8L15'],\n      coil: ['9L45', '8L45'],\n      dig: ['9M', '9L30', '8M', '8L30'],\n      dragonrush: ['9E', '8E'],\n      drillrun: ['9M', '8M'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      glare: ['9L25', '8L25'],\n      headbutt: ['9L20', '8L20'],\n      lastresort: ['9E', '8E'],\n      minimize: ['9L5', '8L5'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '9E', '8E'],\n      poisontail: ['9M', '9E', '8E'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      rockblast: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      round: ['8M'],\n      sandattack: ['9L1', '8L1'],\n      sandstorm: ['9M', '9L35', '8M', '8L35'],\n      sandtomb: ['9M', '9L50', '8M', '8L50'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      screech: ['8M'],\n      skittersmack: ['9M', '8T'],\n      slam: ['9L40', '8L40'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      stealthrock: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      wrap: ['9L1', '8L1']\n    }\n  ],\n  [\n    'sandaconda',\n    {\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M'],\n      brutalswing: ['9L1', '8M', '8L1'],\n      bulldoze: ['9M', '9L15', '8M', '8L15'],\n      coil: ['9L49', '8L49'],\n      dig: ['9M', '9L30', '8M', '8L30'],\n      drillrun: ['9M', '8M'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      glare: ['9L25', '8L25'],\n      headbutt: ['9L20', '8L20'],\n      highhorsepower: ['9M', '8M'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M'],\n      minimize: ['9L1', '8L1'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M'],\n      outrage: ['9M', '8M'],\n      poisontail: ['9M'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      rockblast: ['9M', '8M'],\n      rockslide: ['9M', '8M'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      sandattack: ['9L1', '8L1'],\n      sandstorm: ['9M', '9L35', '8M', '8L35'],\n      sandtomb: ['9M', '9L51', '8M', '8L51'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M', '8T'],\n      screech: ['8M'],\n      skittersmack: ['9M', '8T'],\n      skullbash: ['8L1'],\n      slam: ['9L42', '8L42'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      stealthrock: ['9M', '8M'],\n      stoneedge: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      wrap: ['9L1', '8L1'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'cramorant',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M', '9E', '8E'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      amnesia: ['9M', '9L42', '8M', '8L42'],\n      aquacutter: ['9E'],\n      aquaring: ['9E', '8E'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      belch: ['9L1', '8L1'],\n      blizzard: ['9M', '8M'],\n      bravebird: ['9M', '8M'],\n      chillingwater: ['9M'],\n      defog: ['9E', '8E'],\n      dive: ['9L28', '8M', '8L28'],\n      drillpeck: ['9L35', '8L35'],\n      dualwingbeat: ['9M', '8T'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      featherdance: ['9M', '9E', '8E'],\n      fly: ['9M', '8M'],\n      furyattack: ['9L14', '8L14'],\n      gigaimpact: ['9M', '8M'],\n      hurricane: ['9M', '8M'],\n      hydropump: ['9M', '9L56', '8M', '8L56'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      icywind: ['9M', '8M'],\n      liquidation: ['9M', '8M'],\n      peck: ['9L1', '8L1'],\n      pluck: ['9L21', '8L21'],\n      pounce: ['9M'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      reversal: ['9M', '8M'],\n      roost: ['9E', '8E'],\n      round: ['8M'],\n      scald: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spitup: ['9L1', '8L1'],\n      steelwing: ['8M'],\n      stockpile: ['9L1', '8L1'],\n      substitute: ['9M', '8M'],\n      superpower: ['8M'],\n      surf: ['9M', '8M'],\n      swallow: ['9L1', '8L1'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thrash: ['9L49', '8L49'],\n      throatchop: ['9M', '8M'],\n      uproar: ['9M', '8M'],\n      watergun: ['9L7', '8L7'],\n      waterpulse: ['9M'],\n      weatherball: ['9M', '8M'],\n      whirlpool: ['9M', '8M']\n    }\n  ],\n  [\n    'arrokuda',\n    {\n      acupressure: ['9E', '8E'],\n      agility: ['9M', '9L18', '8M', '8L18'],\n      aquajet: ['9L1', '8L1'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bite: ['9L12', '8L12'],\n      bounce: ['8M'],\n      brickbreak: ['9M', '8M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '8M'],\n      crunch: ['9M', '9L36', '8M', '8L36'],\n      dive: ['9L24', '8M', '8L24'],\n      doubleedge: ['9M', '9L48', '8L48'],\n      drillrun: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      flipturn: ['9M'],\n      focusenergy: ['9L30', '8M'],\n      furyattack: ['9L6', '8L6'],\n      hydropump: ['9M'],\n      icefang: ['9M', '8M'],\n      laserfocus: ['8L30'],\n      liquidation: ['9M', '9L42', '8M', '8L42'],\n      nightslash: ['9E', '8E'],\n      peck: ['9L1', '8L1'],\n      poisonjab: ['8M'],\n      protect: ['9M', '8M'],\n      psychicfangs: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scald: ['8M'],\n      scaleshot: ['9M', '8T'],\n      slash: ['9E', '8E'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      surf: ['9M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9E', '8E'],\n      throatchop: ['9M', '8M'],\n      waterfall: ['9M', '8M'],\n      waterpulse: ['9M'],\n      whirlpool: ['9M', '8M']\n    }\n  ],\n  [\n    'barraskewda',\n    {\n      agility: ['9M', '9L18', '8M', '8L18'],\n      aquajet: ['9L1', '8L1'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bite: ['9L1', '8L1'],\n      blizzard: ['9M'],\n      bounce: ['8M'],\n      brickbreak: ['9M', '8M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '8M'],\n      crunch: ['9M', '9L40', '8M', '8L40'],\n      dive: ['9L24', '8M', '8L24'],\n      doubleedge: ['9M', '9L56', '8L56'],\n      drillrun: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      flipturn: ['9M', '8T'],\n      focusenergy: ['9L32', '8M'],\n      furyattack: ['9L1', '8L1'],\n      gigaimpact: ['9M', '8M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M'],\n      icefang: ['9M', '8M'],\n      laserfocus: ['8L32'],\n      liquidation: ['9M', '9L48', '8M', '8L48'],\n      peck: ['9L1', '8L1'],\n      poisonjab: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      psychicfangs: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scald: ['8M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      surf: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '9L1', '8M', '8L1'],\n      waterfall: ['9M', '8M'],\n      waterpulse: ['9M'],\n      whirlpool: ['9M', '8M']\n    }\n  ],\n  [\n    'toxel',\n    {\n      acid: ['9L1', '8L1', '8S0'],\n      attract: ['8M'],\n      belch: ['9L1', '8L1'],\n      charm: ['9M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M', '9E', '8E'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      flail: ['9L1', '8L1', '8S0'],\n      growl: ['9L1', '8L1', '8S0'],\n      metalsound: ['9M', '9E', '8E'],\n      nuzzle: ['9L1', '8L1', '8S0'],\n      poweruppunch: ['8E'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      tearfullook: ['9L1', '8L1'],\n      terablast: ['9M']\n    }\n  ],\n  [\n    'toxtricity',\n    {\n      acid: ['9L1', '8L1'],\n      acidspray: ['9M', '9L1', '8L1'],\n      attract: ['8M'],\n      belch: ['9L1', '8L1'],\n      boomburst: ['9L48', '8L48', '8S0'],\n      brickbreak: ['9M'],\n      charge: ['9M', '9L4', '8L4'],\n      chargebeam: ['9M'],\n      charm: ['9M'],\n      discharge: ['9L36', '8L36'],\n      drainpunch: ['9M', '8M'],\n      eerieimpulse: ['9M', '8M', '8L1'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      firepunch: ['9M', '8M'],\n      flail: ['9L1', '8L1'],\n      fling: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      gunkshot: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      leer: ['9L1', '8L1'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalsound: ['9M'],\n      metronome: ['9M'],\n      nobleroar: ['9L1', '8L1'],\n      nuzzle: ['9L1', '8L1'],\n      overdrive: ['9L44', '8L44', '8S0'],\n      payback: ['8M'],\n      poisonjab: ['9M', '9L40', '8M', '8L40'],\n      poisontail: ['9M'],\n      protect: ['9M', '8M'],\n      psychicnoise: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '8M'],\n      risingvoltage: ['8T', '8S0'],\n      round: ['8M'],\n      scaryface: ['9M', '9L12', '8M', '8L12'],\n      screech: ['9L24', '8M', '8L24'],\n      shiftgear: ['9L52', '8L52'],\n      shockwave: ['9L8', '8L8'],\n      sleeptalk: ['9M', '8M'],\n      sludgebomb: ['9M', '8M'],\n      sludgewave: ['9M', '8M', '8S0'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      spark: ['9L0', '8L0'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      swagger: ['9L28', '8L28'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L16', '8M', '8L16'],\n      tearfullook: ['9L1', '8L1'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '8M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      thunderfang: ['9M'],\n      thunderpunch: ['9M', '8M'],\n      thundershock: ['9L1', '8L1'],\n      thunderwave: ['9M', '8M'],\n      toxic: ['9M', '9L32', '8L32'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M'],\n      venoshock: ['9M', '8M', '8L20'],\n      voltswitch: ['9M', '8M'],\n      wildcharge: ['9M', '8M']\n    }\n  ],\n  [\n    'toxtricitylowkey',\n    {\n      acid: ['9L1', '8L1'],\n      acidspray: ['9M', '9L1', '8L1'],\n      attract: ['8M'],\n      belch: ['9L1', '8L1'],\n      boomburst: ['9L48', '8L48'],\n      brickbreak: ['9M'],\n      charge: ['9M', '9L4', '8L4'],\n      chargebeam: ['9M'],\n      charm: ['9M'],\n      discharge: ['9L36', '8L36'],\n      drainpunch: ['9M', '8M'],\n      eerieimpulse: ['9M', '8M', '8L1'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      firepunch: ['9M', '8M'],\n      flail: ['9L1', '8L1'],\n      fling: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      gunkshot: ['9M', '8M'],\n      helpinghand: ['9M'],\n      hex: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      leer: ['9L1', '8L1'],\n      magneticflux: ['9L52', '8L52'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalsound: ['9M'],\n      metronome: ['9M'],\n      nobleroar: ['9L1', '8L1'],\n      nuzzle: ['9L1', '8L1'],\n      overdrive: ['9L44', '8L44'],\n      payback: ['8M'],\n      poisonjab: ['9M', '9L40', '8M', '8L40'],\n      poisontail: ['9M'],\n      protect: ['9M', '8M'],\n      psychicnoise: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M'],\n      scaryface: ['9M', '9L12', '8M', '8L12'],\n      screech: ['9L24', '8M', '8L24'],\n      shockwave: ['9L8', '8L8'],\n      sleeptalk: ['9M', '8M'],\n      sludgebomb: ['9M', '8M'],\n      sludgewave: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      spark: ['9L0', '8L0'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      swagger: ['9L28', '8L28'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L16', '8M', '8L16'],\n      tearfullook: ['9L1', '8L1'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '8M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      thunderfang: ['9M'],\n      thunderpunch: ['9M', '8M'],\n      thundershock: ['9L1', '8L1'],\n      thunderwave: ['9M', '8M'],\n      toxic: ['9M', '9L32', '8L32'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M'],\n      venomdrench: ['8M', '8L20'],\n      venoshock: ['9M'],\n      voltswitch: ['9M', '8M'],\n      wildcharge: ['9M', '8M']\n    }\n  ],\n  [\n    'sizzlipede',\n    {\n      attract: ['8M'],\n      bite: ['8L10'],\n      brutalswing: ['8M'],\n      bugbite: ['8L20'],\n      bugbuzz: ['8M'],\n      burnup: ['8L55'],\n      coil: ['8L25'],\n      crunch: ['8M', '8L40'],\n      defensecurl: ['8E'],\n      ember: ['8L1'],\n      endure: ['8M'],\n      facade: ['8M'],\n      firelash: ['8L45'],\n      firespin: ['8M', '8L35'],\n      flamewheel: ['8L15'],\n      heatcrash: ['8M'],\n      heatwave: ['8M'],\n      knockoff: ['8E'],\n      leechlife: ['8M'],\n      lunge: ['8L50'],\n      powerwhip: ['8M'],\n      protect: ['8M'],\n      rest: ['8M'],\n      rollout: ['8E'],\n      round: ['8M'],\n      scald: ['8M'],\n      scorchingsands: ['8T'],\n      skittersmack: ['8T'],\n      slam: ['8L30'],\n      sleeptalk: ['8M'],\n      smokescreen: ['8L1'],\n      snore: ['8M'],\n      strugglebug: ['8E'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      venoshock: ['8M'],\n      wrap: ['8L5']\n    }\n  ],\n  [\n    'centiskorch',\n    {\n      attract: ['8M'],\n      bite: ['8L1'],\n      brutalswing: ['8M'],\n      bugbite: ['8L20'],\n      bugbuzz: ['8M'],\n      burnup: ['8L67'],\n      coil: ['8L25'],\n      crunch: ['8M', '8L46'],\n      ember: ['8L1'],\n      endure: ['8M'],\n      facade: ['8M'],\n      fireblast: ['8M'],\n      firefang: ['8M'],\n      firelash: ['8L53'],\n      firespin: ['8M', '8L39'],\n      flamethrower: ['8M'],\n      flamewheel: ['8L15'],\n      flareblitz: ['8M'],\n      gigaimpact: ['8M'],\n      heatcrash: ['8M'],\n      heatwave: ['8M'],\n      hyperbeam: ['8M'],\n      inferno: ['8L1'],\n      leechlife: ['8M'],\n      lunge: ['8L60'],\n      mysticalfire: ['8M'],\n      overheat: ['8M'],\n      powerwhip: ['8M'],\n      protect: ['8M'],\n      rest: ['8M'],\n      round: ['8M'],\n      scald: ['8M'],\n      scorchingsands: ['8T'],\n      skittersmack: ['8T'],\n      slam: ['8L32'],\n      sleeptalk: ['8M'],\n      smokescreen: ['8L1'],\n      snore: ['8M'],\n      solarbeam: ['8M'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      thunderfang: ['8M'],\n      venoshock: ['8M'],\n      willowisp: ['8M'],\n      wrap: ['8L1'],\n      xscissor: ['8M']\n    }\n  ],\n  [\n    'clobbopus',\n    {\n      attract: ['8M'],\n      bind: ['8L10'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M', '8L20'],\n      brine: ['8M'],\n      bulkup: ['8M', '8L25'],\n      circlethrow: ['8E'],\n      closecombat: ['8M'],\n      coaching: ['8T'],\n      detect: ['8L15'],\n      dive: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      feint: ['8L5'],\n      focusblast: ['8M'],\n      icepunch: ['8M'],\n      leer: ['8L1'],\n      liquidation: ['8M'],\n      megapunch: ['8M'],\n      muddywater: ['8M'],\n      mudshot: ['8M'],\n      painsplit: ['8E'],\n      payback: ['8M'],\n      poweruppunch: ['8E'],\n      protect: ['8M'],\n      rest: ['8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['8M', '8L40'],\n      rocksmash: ['8L1'],\n      round: ['8M'],\n      seismictoss: ['8E'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      soak: ['8E'],\n      submission: ['8L30'],\n      substitute: ['8M'],\n      suckerpunch: ['8E'],\n      superpower: ['8M', '8L45'],\n      taunt: ['8M', '8L35'],\n      waterfall: ['8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'grapploct',\n    {\n      attract: ['8M'],\n      bind: ['8L1'],\n      bodyslam: ['8M'],\n      brickbreak: ['8M', '8L20'],\n      brine: ['8M'],\n      brutalswing: ['8M'],\n      bulkup: ['8M', '8L25'],\n      closecombat: ['8M'],\n      coaching: ['8T'],\n      detect: ['8L15'],\n      dig: ['8M'],\n      dive: ['8M'],\n      drainpunch: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      feint: ['8L1'],\n      focusblast: ['8M'],\n      gigaimpact: ['8M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M'],\n      icepunch: ['8M'],\n      leer: ['8L1'],\n      liquidation: ['8M'],\n      megapunch: ['8M'],\n      muddywater: ['8M'],\n      mudshot: ['8M'],\n      octazooka: ['8L1'],\n      octolock: ['8L0'],\n      payback: ['8M'],\n      protect: ['8M'],\n      rest: ['8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['8M', '8L40'],\n      rocksmash: ['8L1'],\n      round: ['8M'],\n      scaryface: ['8M'],\n      skittersmack: ['8T'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      stompingtantrum: ['8M'],\n      submission: ['8L30'],\n      substitute: ['8M'],\n      superpower: ['8M', '8L45'],\n      surf: ['8M'],\n      taunt: ['8M', '8L35'],\n      topsyturvy: ['8L50'],\n      waterfall: ['8M'],\n      whirlpool: ['8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'sinistea',\n    {\n      allyswitch: ['9E', '8M'],\n      aromatherapy: ['8L30'],\n      aromaticmist: ['9L6', '8L6'],\n      astonish: ['9L1', '8L1'],\n      batonpass: ['9M', '8M'],\n      calmmind: ['9M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      gigadrain: ['9M', '9L36', '8M', '8L36'],\n      hex: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '8L12'],\n      memento: ['9L54', '8L54'],\n      metronome: ['9M', '8M'],\n      nastyplot: ['9M', '9L42', '8M', '8L42'],\n      nightshade: ['9M'],\n      payback: ['8M'],\n      phantomforce: ['9M', '8M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '8L18'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M'],\n      psyshock: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      shadowball: ['9M', '9L48', '8M', '8L48'],\n      shellsmash: ['9L60', '8L60'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L24', '8L24'],\n      sweetscent: ['9L30'],\n      terablast: ['9M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M'],\n      willowisp: ['9M', '8M'],\n      withdraw: ['9L1', '8L1'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'sinisteaantique',\n    {\n      allyswitch: ['9E', '8M'],\n      aromatherapy: ['8L30', '8S0'],\n      aromaticmist: ['9L6', '8L6'],\n      astonish: ['9L1', '8L1'],\n      batonpass: ['9M', '8M'],\n      calmmind: ['9M'],\n      celebrate: ['8S0'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      gigadrain: ['9M', '9L36', '8M', '8L36'],\n      hex: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L12', '8L12'],\n      memento: ['9L54', '8L54', '8S0'],\n      metronome: ['9M', '8M', '8S0'],\n      nastyplot: ['9M', '9L42', '8M', '8L42'],\n      nightshade: ['9M'],\n      payback: ['8M'],\n      phantomforce: ['9M', '8M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '8L18'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M'],\n      psyshock: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      shadowball: ['9M', '9L48', '8M', '8L48'],\n      shellsmash: ['9L60', '8L60'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L24', '8L24'],\n      sweetscent: ['9L30'],\n      terablast: ['9M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M'],\n      willowisp: ['9M', '8M'],\n      withdraw: ['9L1', '8L1'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'polteageist',\n    {\n      allyswitch: ['8M'],\n      aromatherapy: ['8L30'],\n      aromaticmist: ['9L1', '8L1'],\n      astonish: ['9L1', '8L1'],\n      batonpass: ['9M', '8M'],\n      calmmind: ['9M'],\n      confuseray: ['9M'],\n      curse: ['9M', '9L66', '8L66'],\n      darkpulse: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      gigadrain: ['9M', '9L36', '8M', '8L36'],\n      gigaimpact: ['9M', '8M'],\n      hex: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L1', '8L1'],\n      memento: ['9L54', '8L54'],\n      metronome: ['9M', '8M'],\n      nastyplot: ['9M', '9L42', '8M', '8L42'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      payback: ['8M'],\n      phantomforce: ['9M', '8M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '9L18', '8M', '8L18'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M'],\n      psyshock: ['9M', '8M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '9L48', '8M', '8L48'],\n      shellsmash: ['9L60', '8L60'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M'],\n      storedpower: ['9M', '8M'],\n      strengthsap: ['9L1', '8L1'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L24', '8L24'],\n      sweetscent: ['9L30'],\n      teatime: ['9L0', '8L0'],\n      terablast: ['9M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M'],\n      willowisp: ['9M', '8M'],\n      withdraw: ['9L1', '8L1'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'polteageistantique',\n    {\n      allyswitch: ['8M'],\n      aromatherapy: ['8L30'],\n      aromaticmist: ['9L1', '8L1'],\n      astonish: ['9L1', '8L1'],\n      batonpass: ['9M', '8M'],\n      calmmind: ['9M'],\n      confuseray: ['9M'],\n      curse: ['9M', '9L66', '8L66'],\n      darkpulse: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      gigadrain: ['9M', '9L36', '8M', '8L36'],\n      gigaimpact: ['9M', '8M'],\n      hex: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L1', '8L1'],\n      memento: ['9L54', '8L54'],\n      metronome: ['9M', '8M'],\n      nastyplot: ['9M', '9L42', '8M', '8L42'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      payback: ['8M'],\n      phantomforce: ['9M', '8M'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '9L18', '8M', '8L18'],\n      psybeam: ['9M'],\n      psychic: ['9M', '8M'],\n      psyshock: ['9M', '8M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '9L48', '8M', '8L48'],\n      shellsmash: ['9L60', '8L60'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M'],\n      storedpower: ['9M', '8M'],\n      strengthsap: ['9L1', '8L1'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L24', '8L24'],\n      sweetscent: ['9L30'],\n      teatime: ['9L0', '8L0'],\n      terablast: ['9M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M'],\n      willowisp: ['9M', '8M'],\n      withdraw: ['9L1', '8L1'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'hatenna',\n    {\n      afteryou: ['9E', '8E'],\n      aromatherapy: ['8L15'],\n      aromaticmist: ['9L15', '8E'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      calmmind: ['9M', '9L35', '8M', '8L35'],\n      charm: ['9M', '8M'],\n      confusion: ['9L1', '8L1'],\n      darkpulse: ['9M', '8M'],\n      dazzlinggleam: ['9M', '9L30', '8M', '8L30'],\n      disarmingvoice: ['9M', '9L10', '8L10'],\n      drainingkiss: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      futuresight: ['9M'],\n      gigadrain: ['9M', '8M'],\n      healingwish: ['9L45', '8L45'],\n      healpulse: ['9L25', '8L25'],\n      helpinghand: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lifedew: ['9L5', '8L5'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      metronome: ['9M'],\n      mistyterrain: ['9M'],\n      mysticalfire: ['9E', '8M'],\n      nuzzle: ['9E', '8E'],\n      playnice: ['9L1', '8L1'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M', '9L20', '8L20'],\n      psychic: ['9M', '9L40', '8M', '8L40'],\n      psychicterrain: ['9M'],\n      psychup: ['9M'],\n      psyshock: ['9M', '8M'],\n      quash: ['9E', '8E'],\n      reflect: ['9M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      skillswap: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      swift: ['9M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M'],\n      trick: ['9M'],\n      trickroom: ['9M']\n    }\n  ],\n  [\n    'hattrem',\n    {\n      aromatherapy: ['8L15'],\n      aromaticmist: ['9L15'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      brutalswing: ['9L0', '8M', '8L0'],\n      calmmind: ['9M', '9L37', '8M', '8L37'],\n      charm: ['9M', '8M'],\n      confusion: ['9L1', '8L1'],\n      darkpulse: ['9M', '8M'],\n      dazzlinggleam: ['9M', '9L30', '8M', '8L30'],\n      disarmingvoice: ['9M', '9L1', '8L1'],\n      drainingkiss: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      futuresight: ['9M'],\n      gigadrain: ['9M', '8M'],\n      healingwish: ['9L51', '8L51'],\n      healpulse: ['9L25', '8L25'],\n      helpinghand: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lifedew: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      metronome: ['9M'],\n      mistyterrain: ['9M'],\n      mysticalfire: ['8M'],\n      playnice: ['9L1', '8L1'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M', '9L20', '8L20'],\n      psychic: ['9M', '9L44', '8M', '8L44'],\n      psychicterrain: ['9M'],\n      psychup: ['9M'],\n      psyshock: ['9M', '8M'],\n      reflect: ['9M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      skillswap: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      swift: ['9M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M'],\n      trick: ['9M'],\n      trickroom: ['9M']\n    }\n  ],\n  [\n    'hatterene',\n    {\n      agility: ['9M'],\n      aromatherapy: ['8L15'],\n      aromaticmist: ['9L15'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      brutalswing: ['9L1', '8M', '8L1'],\n      calmmind: ['9M', '9L37', '8M', '8L37'],\n      charm: ['9M', '8M'],\n      confusion: ['9L1', '8L1'],\n      darkpulse: ['9M', '8M'],\n      dazzlinggleam: ['9M', '9L30', '8M', '8L30'],\n      disarmingvoice: ['9M', '9L1', '8L1'],\n      drainingkiss: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      futuresight: ['9M', '8M'],\n      gigadrain: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      gravity: ['9M'],\n      guardswap: ['8M'],\n      healingwish: ['9L55', '8L55'],\n      healpulse: ['9L25', '8L25'],\n      helpinghand: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lifedew: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      magicpowder: ['9L64', '8L64'],\n      magicroom: ['8M'],\n      metronome: ['9M'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M'],\n      mysticalfire: ['8M'],\n      painsplit: ['9M'],\n      playnice: ['9L1', '8L1'],\n      playrough: ['9M', '8M'],\n      powerswap: ['8M'],\n      powerwhip: ['8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M', '9L20', '8L20'],\n      psychic: ['9M', '9L46', '8M', '8L46'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychocut: ['9L0', '8M', '8L0'],\n      psychup: ['9M'],\n      psyshock: ['9M', '8M'],\n      reflect: ['9M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      shadowball: ['9M', '8M'],\n      shadowclaw: ['9M', '8M'],\n      skillswap: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '8M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M'],\n      trick: ['9M'],\n      trickroom: ['9M', '8M'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'impidimp',\n    {\n      assurance: ['9L16', '8M', '8L16'],\n      attract: ['8M'],\n      bite: ['9L4', '8L4'],\n      burningjealousy: ['9M', '8T'],\n      chillingwater: ['9M'],\n      confide: ['9L1', '8L1'],\n      darkpulse: ['9M', '9L33', '8M', '8L33'],\n      dazzlinggleam: ['9M', '8M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fakeout: ['9L1', '8L1'],\n      faketears: ['9M', '9L12', '8M', '8L12'],\n      flatter: ['9L8', '8L8'],\n      fling: ['9M'],\n      foulplay: ['9M', '9L44', '8M', '8L44'],\n      lashout: ['9M', '8T'],\n      leechlife: ['9M', '8M'],\n      lightscreen: ['9M'],\n      lowkick: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M', '8M'],\n      mistyterrain: ['9M'],\n      nastyplot: ['9M', '9L36', '8M', '8L36'],\n      partingshot: ['9E'],\n      playrough: ['9M', '9L40', '8M', '8L40'],\n      protect: ['9M', '8M'],\n      reflect: ['9M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      round: ['8M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L24', '8L24'],\n      swagger: ['9L20', '8L20'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      throatchop: ['9M'],\n      thunderwave: ['9M', '8M'],\n      torment: ['9L28', '8L28'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M'],\n      uproar: ['8M']\n    }\n  ],\n  [\n    'morgrem',\n    {\n      assurance: ['9L16', '8M', '8L16'],\n      attract: ['8M'],\n      bite: ['9L1', '8L1'],\n      burningjealousy: ['9M', '8T'],\n      chillingwater: ['9M'],\n      confide: ['9L1', '8L1'],\n      darkpulse: ['9M', '9L35', '8M', '8L35'],\n      dazzlinggleam: ['9M', '8M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fakeout: ['9L1', '8L1'],\n      faketears: ['9M', '9L12', '8M', '8L12'],\n      falsesurrender: ['9L0', '8L0'],\n      flatter: ['9L1', '8L1'],\n      fling: ['9M'],\n      foulplay: ['9M', '9L52', '8M', '8L52'],\n      imprison: ['9M'],\n      lashout: ['9M', '8T'],\n      leechlife: ['9M', '8M'],\n      lightscreen: ['9M', '8M'],\n      lowkick: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M', '8M'],\n      mistyterrain: ['9M'],\n      nastyplot: ['9M', '9L40', '8M', '8L40'],\n      playrough: ['9M', '9L46', '8M', '8L46'],\n      protect: ['9M', '8M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      round: ['8M'],\n      scaryface: ['9M'],\n      shadowclaw: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L24', '8L24'],\n      swagger: ['9L20', '8L20'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      throatchop: ['9M', '8M'],\n      thunderwave: ['9M', '8M'],\n      torment: ['9L28', '8L28'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M'],\n      uproar: ['8M']\n    }\n  ],\n  [\n    'grimmsnarl',\n    {\n      assurance: ['9L16', '8M', '8L16'],\n      attract: ['8M'],\n      bite: ['9L1', '8L1'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M'],\n      bulkup: ['9M', '9L1', '8M', '8L1'],\n      burningjealousy: ['9M', '8T'],\n      chillingwater: ['9M'],\n      confide: ['9L1', '8L1'],\n      crunch: ['9M', '8M'],\n      darkestlariat: ['8M'],\n      darkpulse: ['9M', '9L35', '8M', '8L35'],\n      dazzlinggleam: ['9M', '8M'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fakeout: ['9L1', '8L1'],\n      faketears: ['9M', '9L12', '8M', '8L12'],\n      falsesurrender: ['9L1', '8L1'],\n      firepunch: ['9M', '8M'],\n      flatter: ['9L1', '8L1'],\n      fling: ['9M'],\n      focusblast: ['9M', '8M'],\n      focusenergy: ['8M'],\n      focuspunch: ['9M'],\n      foulplay: ['9M', '9L56', '8M', '8L56'],\n      gigaimpact: ['9M', '8M'],\n      hammerarm: ['9L64', '8L64'],\n      hyperbeam: ['9M', '8M'],\n      icepunch: ['9M', '8M'],\n      imprison: ['9M'],\n      lashout: ['9M', '8T'],\n      leechlife: ['9M', '8M'],\n      lightscreen: ['9M', '9S0', '8M'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M', '8M'],\n      mistyterrain: ['9M'],\n      nastyplot: ['9M', '9L40', '8M', '8L40'],\n      playrough: ['9M', '9L48', '8M', '8L48'],\n      powerswap: ['8M'],\n      poweruppunch: ['8L1'],\n      powerwhip: ['8M'],\n      protect: ['9M', '8M'],\n      reflect: ['9M', '9S0', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      shadowclaw: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spiritbreak: ['9L0', '9S0', '8L0'],\n      stompingtantrum: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L24', '8L24'],\n      superpower: ['8M'],\n      swagger: ['9L20', '8L20'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      throatchop: ['9M', '8M'],\n      thunderpunch: ['9M', '8M'],\n      thunderwave: ['9M', '9S0', '8M'],\n      torment: ['9L28', '8L28'],\n      trailblaze: ['9M'],\n      trick: ['9M', '8M'],\n      uproar: ['8M'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'milcery',\n    {\n      acidarmor: ['9L30', '8L30'],\n      aromatherapy: ['8L20'],\n      aromaticmist: ['9L1', '8L1'],\n      attract: ['9L25', '8M', '8L25', '8S0'],\n      babydolleyes: ['9E', '8E'],\n      celebrate: ['8S0'],\n      charm: ['9M', '9L20', '8M'],\n      dazzlinggleam: ['9M', '9L35', '8M', '8L35'],\n      drainingkiss: ['9M', '9L15', '8M', '8L15'],\n      endure: ['9M', '8M'],\n      entrainment: ['9L50', '8L50', '8S0'],\n      facade: ['9M', '8M'],\n      fling: ['8M'],\n      helpinghand: ['9M', '8M'],\n      lastresort: ['9E', '8E', '8S0'],\n      mistyterrain: ['9M', '9L45', '8M', '8L45'],\n      protect: ['9M', '8M'],\n      recover: ['9L40', '8L40'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sweetkiss: ['9L5', '8L5'],\n      sweetscent: ['9L10', '8L10'],\n      tackle: ['9L1', '8L1'],\n      terablast: ['9M']\n    }\n  ],\n  [\n    'alcremie',\n    {\n      acidarmor: ['9L30', '8L30'],\n      alluringvoice: ['9M'],\n      aromatherapy: ['8L20'],\n      aromaticmist: ['9L1', '8L1'],\n      attract: ['9L25', '8M', '8L25'],\n      calmmind: ['9M', '8M'],\n      charm: ['9M', '9L20', '8M'],\n      dazzlinggleam: ['9M', '9L35', '8M', '8L35'],\n      decorate: ['9L0', '8L0'],\n      disarmingvoice: ['9M'],\n      drainingkiss: ['9M', '9L15', '8M', '8L15'],\n      drainpunch: ['9M', '8M'],\n      encore: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M'],\n      entrainment: ['9L50', '8L50'],\n      facade: ['9M', '8M'],\n      faketears: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      gigadrain: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      helpinghand: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      magicroom: ['8M'],\n      metronome: ['9M', '8M'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '9L45', '8M', '8L45'],\n      mysticalfire: ['8M'],\n      painsplit: ['9M'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      psychic: ['9M', '8M'],\n      psychup: ['9M'],\n      psyshock: ['9M', '8M'],\n      recover: ['9L40', '8L40'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sweetkiss: ['9L1', '8L1'],\n      sweetscent: ['9L1', '8L1'],\n      tackle: ['9L1', '8L1'],\n      terablast: ['9M'],\n      triattack: ['8M'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'falinks',\n    {\n      agility: ['9M', '8M'],\n      assurance: ['8M'],\n      beatup: ['8M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M'],\n      bulkup: ['9M', '9L20', '8M', '8L20'],\n      closecombat: ['9M', '9L50', '8M', '8L50'],\n      coaching: ['9M', '8T'],\n      counter: ['9L60', '8L60'],\n      endeavor: ['9M'],\n      endure: ['9M', '9L25', '8M', '8L25'],\n      facade: ['9M', '8M'],\n      falseswipe: ['9M', '8M'],\n      firstimpression: ['9L35', '8L35'],\n      focusblast: ['9M', '8M'],\n      focusenergy: ['9L10', '8M', '8L10'],\n      gigaimpact: ['9M', '8M'],\n      headbutt: ['9L15', '8L15'],\n      helpinghand: ['9M', '8M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '8M'],\n      irondefense: ['9M', '9L45', '8M', '8L45'],\n      ironhead: ['9M', '8M'],\n      knockoff: ['9M'],\n      lunge: ['9M'],\n      megahorn: ['9L55', '8M', '8L55'],\n      noretreat: ['9L40', '8L40'],\n      payback: ['8M'],\n      poisonjab: ['9M', '8M'],\n      protect: ['9M', '9L1', '8M', '8L1'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '9L30', '8M', '8L30'],\n      rockslide: ['9M', '8M'],\n      rocksmash: ['9L5', '8L5'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      screech: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      smartstrike: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      superpower: ['8M'],\n      swordsdance: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['9M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'pincurchin',\n    {\n      acupressure: ['9L55', '8L55'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bodyslam: ['9M'],\n      brine: ['8M'],\n      bubblebeam: ['9L25', '8L25'],\n      charge: ['9M', '9L10', '8L10'],\n      chargebeam: ['9M'],\n      chillingwater: ['9M'],\n      curse: ['9M', '9L35', '8L35'],\n      discharge: ['9L60', '8L60'],\n      electricterrain: ['9M', '9L40', '8M', '8L40'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      furyattack: ['9L15', '8L15'],\n      gigaimpact: ['9M'],\n      hex: ['9M', '8M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M'],\n      liquidation: ['9M', '8M'],\n      memento: ['9E', '8E'],\n      muddywater: ['9M', '8M'],\n      painsplit: ['9M'],\n      payback: ['8M'],\n      peck: ['9L1', '8L1'],\n      pinmissile: ['8M'],\n      poisonjab: ['9M', '9L45', '8M', '8L45'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      recover: ['9L30', '8L30'],\n      rest: ['9M', '8M'],\n      reversal: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M'],\n      scald: ['9M', '8M'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spark: ['9L20', '8L20'],\n      spikes: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9E', '8E'],\n      supercellslam: ['9M'],\n      surf: ['9M', '8M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      thundershock: ['9L1', '8L1'],\n      thunderwave: ['9M', '8M'],\n      toxicspikes: ['9M', '8M'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M'],\n      watergun: ['9L5', '8L5'],\n      wildcharge: ['9M'],\n      zingzap: ['9L50', '8L50']\n    }\n  ],\n  [\n    'snom',\n    {\n      attract: ['8M'],\n      bugbite: ['9M', '9E', '8E'],\n      bugbuzz: ['9M', '8M'],\n      endure: ['8M'],\n      facade: ['9M', '8M'],\n      fairywind: ['9E', '8E'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M'],\n      lunge: ['9M'],\n      mirrorcoat: ['9E', '8E'],\n      pounce: ['9M'],\n      powdersnow: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      strugglebug: ['9M', '9L1', '8L1'],\n      substitute: ['9M', '8M'],\n      terablast: ['9M']\n    }\n  ],\n  [\n    'frosmoth',\n    {\n      acrobatics: ['9M', '8M'],\n      airslash: ['9M', '8M'],\n      attract: ['9L1', '8M', '8L1'],\n      aurorabeam: ['9L24', '8L24'],\n      auroraveil: ['9L36', '8L36'],\n      avalanche: ['9M', '8M'],\n      blizzard: ['9M', '9L40', '8M', '8L40'],\n      bugbite: ['9M'],\n      bugbuzz: ['9M', '9L32', '8M', '8L32'],\n      calmmind: ['9M', '8M'],\n      dazzlinggleam: ['9M', '8M'],\n      defog: ['9L16', '8L16'],\n      dualwingbeat: ['8T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      featherdance: ['9M', '9L21', '8L21'],\n      gigadrain: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      hail: ['8M', '8L28'],\n      helpinghand: ['9M', '9L1', '8M', '8L1'],\n      hurricane: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      icespinner: ['9M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L0', '8M', '8L0'],\n      imprison: ['9M', '8M'],\n      infestation: ['9L8', '8L8'],\n      leechlife: ['9M', '8M'],\n      lightscreen: ['9M', '8M'],\n      lunge: ['9M'],\n      mist: ['9L12', '8L12'],\n      playrough: ['9M', '8M'],\n      pounce: ['9M'],\n      powdersnow: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      quiverdance: ['9L52', '8L52'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      snowscape: ['9M', '9L28'],\n      strugglebug: ['9M', '9L1', '8L1'],\n      stunspore: ['9L4', '8L4'],\n      substitute: ['9M', '8M'],\n      swift: ['9M'],\n      tailwind: ['9M', '9L44', '8L44'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      uturn: ['9M', '8M'],\n      weatherball: ['9M', '8M'],\n      wideguard: ['9L48', '8L48']\n    }\n  ],\n  [\n    'stonjourner',\n    {\n      ancientpower: ['9E', '8E'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      block: ['9L1', '8L1'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L42', '8M', '8L42'],\n      brutalswing: ['8M'],\n      bulldoze: ['9M', '8M'],\n      curse: ['9M', '9E', '8E'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      gravity: ['9M', '9L18', '8L18'],\n      hardpress: ['9M'],\n      heatcrash: ['9M', '8M'],\n      heavyslam: ['9M', '9L54', '8M', '8L54'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '8M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      megakick: ['9L66', '8M', '8L66'],\n      meteorbeam: ['9M', '8T'],\n      powergem: ['9M'],\n      protect: ['9M', '8M'],\n      psychup: ['9M'],\n      rest: ['9M', '8M'],\n      rockblast: ['9M', '8M'],\n      rockpolish: ['9L6', '8L6'],\n      rockslide: ['9M', '9L36', '8M', '8L36'],\n      rockthrow: ['9L1', '8L1'],\n      rocktomb: ['9M', '9L12', '8M', '8L12'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sandstorm: ['9M', '8M'],\n      sandtomb: ['9M', '8M'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      smackdown: ['9M'],\n      snore: ['8M'],\n      stealthrock: ['9M', '9L30', '8M', '8L30'],\n      stomp: ['9L24', '8L24'],\n      stompingtantrum: ['9M', '8M'],\n      stoneedge: ['9M', '9L60', '8M', '8L60'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      superpower: ['8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      wideguard: ['9L48', '8L48'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'eiscue',\n    {\n      agility: ['9M', '8M'],\n      amnesia: ['9M', '9L30', '8M', '8L30'],\n      aquaring: ['9E', '8E'],\n      attract: ['8M'],\n      auroraveil: ['9L48', '8L48'],\n      avalanche: ['9M', '8M'],\n      bellydrum: ['9E', '8E'],\n      blizzard: ['9M', '9L60', '8M', '8L60'],\n      bodyslam: ['9M'],\n      brine: ['8M'],\n      chillingwater: ['9M'],\n      dive: ['8M'],\n      doubleedge: ['9M', '9E', '8E'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      featherdance: ['9M'],\n      flipturn: ['9M'],\n      freezedry: ['9L36', '8L36'],\n      gigaimpact: ['9M'],\n      hail: ['8M', '8L42'],\n      headbutt: ['9L24', '8L24'],\n      headsmash: ['9E', '8E'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '8M'],\n      icepunch: ['9M', '8M'],\n      icespinner: ['9M'],\n      iciclecrash: ['9E', '8E'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '9L18', '8M', '8L18'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M'],\n      liquidation: ['9M', '8M'],\n      mist: ['9L6', '8L6'],\n      powdersnow: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      raindance: ['9M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      reversal: ['9M', '8M'],\n      round: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      snowscape: ['9M', '9L42'],\n      soak: ['9E', '8E'],\n      substitute: ['9M', '8M'],\n      surf: ['9M', '9L54', '8M', '8L54'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      waterfall: ['9M', '8M'],\n      waterpulse: ['9M'],\n      weatherball: ['9M', '9L12', '8M', '8L12'],\n      whirlpool: ['9M', '8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'indeedee',\n    {\n      afteryou: ['9L25', '8L25'],\n      allyswitch: ['8M'],\n      aromatherapy: ['8L30'],\n      attract: ['8M'],\n      bodyslam: ['9M'],\n      calmmind: ['9M', '9L40', '8M', '8L40'],\n      dazzlinggleam: ['9M', '8M'],\n      disarmingvoice: ['9M', '9L10', '8L10'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M'],\n      encore: ['9M', '9L5', '8M', '8L5'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M'],\n      expandingforce: ['9M', '8T'],\n      extrasensory: ['9E', '8E'],\n      facade: ['9M', '8M'],\n      fakeout: ['9E', '8E'],\n      futuresight: ['8M'],\n      gravity: ['9M'],\n      healingwish: ['9L30'],\n      helpinghand: ['9M', '9L20', '8M', '8L20'],\n      hypervoice: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lastresort: ['9L55', '8L55'],\n      magicalleaf: ['9M', '8M'],\n      magicroom: ['8M'],\n      metronome: ['9M', '8M'],\n      mysticalfire: ['8M'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1'],\n      playrough: ['9M', '8M'],\n      powersplit: ['9L45', '8L45'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M', '9L15', '8L15'],\n      psychic: ['9M', '9L35', '8M', '8L35'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '9L50', '8M', '8L50'],\n      psychup: ['9M', '9E', '8E'],\n      psyshock: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      shadowball: ['9M', '8M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      storedpower: ['9M', '9L1', '8M', '8L1'],\n      substitute: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      triattack: ['8M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M', '8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'indeedeef',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M'],\n      aromatherapy: ['8L30'],\n      attract: ['8M'],\n      batonpass: ['9M', '9L5', '8M', '8L5'],\n      bodyslam: ['9M'],\n      calmmind: ['9M', '9L40', '8M', '8L40'],\n      charm: ['9M'],\n      dazzlinggleam: ['9M', '8M'],\n      disarmingvoice: ['9M', '9L10', '8L10'],\n      drainingkiss: ['9M', '8M'],\n      drainpunch: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M'],\n      expandingforce: ['8T'],\n      facade: ['9M', '8M'],\n      fakeout: ['9E', '8E'],\n      followme: ['9L25', '8L25'],\n      futuresight: ['8M'],\n      guardsplit: ['9L45', '8L45'],\n      guardswap: ['8M'],\n      healingwish: ['9L30', '8L55'],\n      healpulse: ['9E', '8E'],\n      helpinghand: ['9M', '9L20', '8M', '8L20'],\n      hypervoice: ['9M', '9S0', '8M'],\n      imprison: ['9M', '8M'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      metronome: ['9M', '8M'],\n      mysticalfire: ['8M'],\n      payday: ['8M'],\n      playnice: ['9L1', '8L1'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M', '9L15', '8L15'],\n      psychic: ['9M', '9L35', '9S0', '8M', '8L35'],\n      psychicterrain: ['9M', '9L50', '8M', '8L50'],\n      psychoshift: ['8E'],\n      psychup: ['9M', '9E', '8E'],\n      psyshock: ['9M', '8M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      shadowball: ['9M', '9S0', '8M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      storedpower: ['9M', '9L1', '8M', '8L1'],\n      substitute: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M', '9S0'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'morpeko',\n    {\n      agility: ['9M', '9L40', '8M', '8L40'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      aurawheel: ['9L55', '8L55'],\n      batonpass: ['9M'],\n      bite: ['9L25', '8L25'],\n      brickbreak: ['9M', '8M'],\n      bulletseed: ['9M', '9L45', '8M', '8L45'],\n      charge: ['9M', '9E', '8E'],\n      chargebeam: ['9M'],\n      crunch: ['9M', '9L50', '8M', '8L50'],\n      darkpulse: ['9M', '8M'],\n      doubleedge: ['9M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fakeout: ['9E', '8E'],\n      faketears: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      flatter: ['9L20', '8L20'],\n      fling: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      icefang: ['9M', '8M'],\n      knockoff: ['9M'],\n      lashout: ['9M', '8T'],\n      leer: ['9L5', '8L5'],\n      nastyplot: ['9M', '8M'],\n      outrage: ['9M', '8M'],\n      partingshot: ['9E', '8E'],\n      payback: ['8M'],\n      powertrip: ['9L10', '8L10'],\n      protect: ['9M', '8M'],\n      psychicfangs: ['9M', '8M'],\n      quash: ['9E', '8E'],\n      quickattack: ['9L15', '8L15'],\n      rapidspin: ['9E', '8E'],\n      rest: ['9M', '8M'],\n      revenge: ['8M'],\n      reversal: ['9M'],\n      risingvoltage: ['8T'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      seedbomb: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      spark: ['9L30', '8L30'],\n      spite: ['9M'],\n      stompingtantrum: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      superfang: ['9M', '9E', '8E'],\n      swagger: ['9E', '8E'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thrash: ['9L60', '8L60'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      thunderfang: ['9M', '8M'],\n      thunderpunch: ['9M', '8M'],\n      thundershock: ['9L1', '8L1'],\n      thunderwave: ['9M', '8M'],\n      tickle: ['9E', '8E'],\n      torment: ['9L35', '8L35'],\n      uproar: ['9M', '8M'],\n      voltswitch: ['9M', '8M'],\n      wildcharge: ['9M', '8M']\n    }\n  ],\n  [\n    'cufant',\n    {\n      attract: ['8M'],\n      belch: ['9E', '8E'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M'],\n      brutalswing: ['8M'],\n      bulldoze: ['9M', '9L15', '8M', '8L15'],\n      curse: ['9M', '9E', '8E'],\n      defensecurl: ['9E', '8E'],\n      dig: ['9M', '9L30', '8M', '8L30'],\n      doubleedge: ['9M', '9E', '8E'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fissure: ['9E', '8E'],\n      flashcannon: ['9M'],\n      fling: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      heavyslam: ['9M'],\n      highhorsepower: ['9M', '9L50', '8M', '8L50'],\n      irondefense: ['9M', '9L25', '8M', '8L25'],\n      ironhead: ['9M', '9L40', '8M', '8L40'],\n      megakick: ['8M'],\n      mudshot: ['9M', '8M'],\n      playrough: ['9M', '9L45', '8M', '8L45'],\n      powerwhip: ['8M'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      rockblast: ['9M', '8M'],\n      rockslide: ['9M', '8M'],\n      rocksmash: ['9L10', '8L10'],\n      rocktomb: ['9M', '8M'],\n      rollout: ['9L5', '8L5'],\n      round: ['8M'],\n      sandstorm: ['9M'],\n      screech: ['8M'],\n      slam: ['9E', '8E'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      stealthrock: ['9M', '8M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      stomp: ['9L20', '8L20'],\n      stompingtantrum: ['9M', '8M'],\n      stoneedge: ['9M'],\n      strength: ['9L35', '8L35'],\n      substitute: ['9M', '8M'],\n      superpower: ['9L55', '8M', '8L55'],\n      swagger: ['9E', '8E'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      whirlwind: ['9E', '8E'],\n      workup: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'copperajah',\n    {\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M'],\n      brutalswing: ['8M'],\n      bulldoze: ['9M', '9L15', '8M', '8L15'],\n      curse: ['9M'],\n      dig: ['9M', '9L30', '8M', '8L30'],\n      doubleedge: ['9M'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      endeavor: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      flashcannon: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      growl: ['9L1', '8L1'],\n      hardpress: ['9M'],\n      heatcrash: ['9M', '8M'],\n      heavyslam: ['9M', '9L0', '8M', '8L0'],\n      highhorsepower: ['9M', '9L58', '8M', '8L58'],\n      hyperbeam: ['9M', '8M'],\n      irondefense: ['9M', '9L25', '8M', '8L25'],\n      ironhead: ['9M', '9L44', '8M', '8L44'],\n      knockoff: ['9M'],\n      megakick: ['8M'],\n      mudshot: ['9M', '8M'],\n      outrage: ['9M', '8M'],\n      payback: ['8M'],\n      playrough: ['9M', '9L51', '8M', '8L51'],\n      powerwhip: ['8M'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      revenge: ['8M'],\n      rockblast: ['9M', '8M'],\n      rockslide: ['9M', '8M'],\n      rocksmash: ['9L1', '8L1'],\n      rocktomb: ['9M', '8M'],\n      rollout: ['9L1', '8L1'],\n      round: ['8M'],\n      sandstorm: ['9M'],\n      scaryface: ['8M'],\n      screech: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      smackdown: ['9M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      stealthrock: ['9M', '8M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      stomp: ['9L20', '8L20'],\n      stompingtantrum: ['9M', '8M'],\n      stoneedge: ['9M', '8M'],\n      strength: ['9L37', '8L37'],\n      substitute: ['9M', '8M'],\n      supercellslam: ['9M'],\n      superpower: ['9L65', '8M', '8L65'],\n      tackle: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      workup: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'dracozolt',\n    {\n      aerialace: ['8L14'],\n      ancientpower: ['8L21'],\n      bodyslam: ['8M'],\n      boltbeak: ['8L63'],\n      breakingswipe: ['8M'],\n      brutalswing: ['8M'],\n      bulldoze: ['8M'],\n      charge: ['8L7', '8S0'],\n      discharge: ['8L56'],\n      dracometeor: ['8T'],\n      dragonclaw: ['8M'],\n      dragonpulse: ['8M', '8L70'],\n      dragonrush: ['8L77'],\n      dragontail: ['8L35'],\n      earthpower: ['8M'],\n      earthquake: ['8M'],\n      electroball: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      fireblast: ['8M'],\n      firefang: ['8M'],\n      firespin: ['8M'],\n      flamethrower: ['8M'],\n      gigaimpact: ['8M'],\n      highhorsepower: ['8M'],\n      hyperbeam: ['8M'],\n      irontail: ['8M'],\n      lowkick: ['8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      meteorbeam: ['8T'],\n      outrage: ['8M'],\n      pluck: ['8L28'],\n      protect: ['8M'],\n      raindance: ['8M'],\n      rest: ['8M'],\n      risingvoltage: ['8T'],\n      rockblast: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      slam: ['8L49'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      stomp: ['8L42'],\n      stompingtantrum: ['8M'],\n      stoneedge: ['8M'],\n      substitute: ['8M'],\n      sunnyday: ['8M'],\n      tackle: ['8L1', '8S0'],\n      taunt: ['8M'],\n      thunder: ['8M'],\n      thunderbolt: ['8M'],\n      thunderfang: ['8M'],\n      thunderpunch: ['8M'],\n      thundershock: ['8L1', '8S0'],\n      thunderwave: ['8M'],\n      wildcharge: ['8M']\n    }\n  ],\n  [\n    'arctozolt',\n    {\n      ancientpower: ['8L21'],\n      avalanche: ['8M', '8L35'],\n      blizzard: ['8M', '8L77'],\n      bodyslam: ['8M'],\n      boltbeak: ['8L63'],\n      bulldoze: ['8M'],\n      charge: ['8L7', '8S0'],\n      discharge: ['8L56'],\n      echoedvoice: ['8L14'],\n      electroball: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      freezedry: ['8L42'],\n      gigaimpact: ['8M'],\n      hail: ['8M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M'],\n      hypervoice: ['8M'],\n      icebeam: ['8M'],\n      icefang: ['8M'],\n      iciclecrash: ['8L70'],\n      iciclespear: ['8M'],\n      icywind: ['8M'],\n      irontail: ['8M'],\n      lowkick: ['8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      meteorbeam: ['8T'],\n      payback: ['8M'],\n      pluck: ['8L28'],\n      powdersnow: ['8L1', '8S0'],\n      protect: ['8M'],\n      raindance: ['8M'],\n      rest: ['8M'],\n      risingvoltage: ['8T'],\n      rockblast: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      slam: ['8L49'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      stompingtantrum: ['8M'],\n      stoneedge: ['8M'],\n      substitute: ['8M'],\n      surf: ['8M'],\n      taunt: ['8M'],\n      thunder: ['8M'],\n      thunderbolt: ['8M'],\n      thunderfang: ['8M'],\n      thunderpunch: ['8M'],\n      thundershock: ['8L1', '8S0'],\n      thunderwave: ['8M'],\n      wildcharge: ['8M']\n    }\n  ],\n  [\n    'dracovish',\n    {\n      ancientpower: ['8L21'],\n      bite: ['8L28'],\n      bodyslam: ['8M'],\n      brine: ['8M'],\n      brutalswing: ['8M', '8L14'],\n      bulldoze: ['8M'],\n      crunch: ['8M', '8L56'],\n      dive: ['8M'],\n      dracometeor: ['8T'],\n      dragonbreath: ['8L35'],\n      dragonpulse: ['8M', '8L70'],\n      dragonrush: ['8L77', '8S1'],\n      earthpower: ['8M'],\n      earthquake: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      fishiousrend: ['8L63', '8S1'],\n      gigaimpact: ['8M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M'],\n      icefang: ['8M', '8S1'],\n      ironhead: ['8M'],\n      leechlife: ['8M'],\n      liquidation: ['8M'],\n      lowkick: ['8M'],\n      megakick: ['8M'],\n      meteorbeam: ['8T'],\n      outrage: ['8M'],\n      protect: ['8M', '8L7', '8S0'],\n      psychicfangs: ['8M'],\n      raindance: ['8M'],\n      rest: ['8M'],\n      rockblast: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      scald: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      stomp: ['8L42'],\n      stompingtantrum: ['8M'],\n      stoneedge: ['8M'],\n      substitute: ['8M'],\n      superfang: ['8L49'],\n      surf: ['8M'],\n      tackle: ['8L1', '8S0'],\n      waterfall: ['8M'],\n      watergun: ['8L1', '8S1', '8S0'],\n      whirlpool: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'arctovish',\n    {\n      ancientpower: ['8L21'],\n      auroraveil: ['8L35'],\n      avalanche: ['8M'],\n      bite: ['8L28'],\n      blizzard: ['8M', '8L77'],\n      bodyslam: ['8M'],\n      brine: ['8M'],\n      crunch: ['8M', '8L56'],\n      dive: ['8M'],\n      endure: ['8M'],\n      facade: ['8M'],\n      fishiousrend: ['8L63'],\n      freezedry: ['8L42'],\n      gigaimpact: ['8M'],\n      hail: ['8M'],\n      hydropump: ['8M'],\n      hyperbeam: ['8M'],\n      icebeam: ['8M'],\n      icefang: ['8M'],\n      iciclecrash: ['8L70'],\n      iciclespear: ['8M'],\n      icywind: ['8M', '8L14'],\n      irondefense: ['8M'],\n      ironhead: ['8M'],\n      liquidation: ['8M'],\n      meteorbeam: ['8T'],\n      powdersnow: ['8L1', '8S0'],\n      protect: ['8M', '8L7', '8S0'],\n      psychicfangs: ['8M'],\n      raindance: ['8M'],\n      rest: ['8M'],\n      rockblast: ['8M'],\n      rockslide: ['8M'],\n      rocktomb: ['8M'],\n      round: ['8M'],\n      sleeptalk: ['8M'],\n      snore: ['8M'],\n      stoneedge: ['8M'],\n      substitute: ['8M'],\n      superfang: ['8L49'],\n      surf: ['8M'],\n      waterfall: ['8M'],\n      watergun: ['8L1', '8S0'],\n      whirlpool: ['8M'],\n      zenheadbutt: ['8M']\n    }\n  ],\n  [\n    'duraludon',\n    {\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '9L24', '8M', '8L24'],\n      brickbreak: ['9M', '8M'],\n      darkpulse: ['9M', '8M'],\n      doubleedge: ['9M'],\n      dracometeor: ['9M', '8T'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L48', '8M', '8L48'],\n      dragonpulse: ['9M', '8M'],\n      dragontail: ['9M', '9L30', '8L30'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      flashcannon: ['9M', '9L54', '8M', '8L54'],\n      focusenergy: ['9L42'],\n      foulplay: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      gyroball: ['9M', '8M'],\n      heavyslam: ['9M', '8M'],\n      honeclaws: ['9L12', '8L12'],\n      hyperbeam: ['9M', '9L66', '8M', '8L66'],\n      irondefense: ['9M', '9L36', '8M', '8L36'],\n      ironhead: ['9M', '8M'],\n      laserfocus: ['8L42'],\n      leer: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M'],\n      metalburst: ['9L60', '8L60'],\n      metalclaw: ['9M', '9L1', '8L1'],\n      metalsound: ['9M', '9L18', '8L18'],\n      mirrorcoat: ['9E', '8E'],\n      nightslash: ['9E', '8E'],\n      outrage: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M'],\n      rocksmash: ['9L6', '8L6'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      screech: ['8M'],\n      slash: ['9E', '8E'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      stealthrock: ['9M', '8M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      stompingtantrum: ['8M'],\n      stoneedge: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      swordsdance: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      thunderwave: ['9M', '8M']\n    }\n  ],\n  [\n    'dreepy',\n    {\n      astonish: ['9L1', '8L1'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      bite: ['9L1', '8L1'],\n      confuseray: ['9M', '9E', '8E'],\n      curse: ['9M', '9E', '8E'],\n      disable: ['9E', '8E'],\n      doubleteam: ['9E', '8E'],\n      dracometeor: ['9M', '8T'],\n      dragontail: ['9M', '9E', '8E'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      grudge: ['8E'],\n      helpinghand: ['9M', '8M'],\n      infestation: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      quickattack: ['9L1', '8L1'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9E', '8E'],\n      swift: ['9M', '8M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M']\n    }\n  ],\n  [\n    'drakloak',\n    {\n      acrobatics: ['9M', '8M'],\n      agility: ['9M', '9L24', '8M', '8L24'],\n      allyswitch: ['8M'],\n      assurance: ['9L12', '8M', '8L12'],\n      astonish: ['9L1', '8L1'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      beatup: ['8M'],\n      bite: ['9L1', '8L1'],\n      breakingswipe: ['9M', '8M'],\n      brine: ['8M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      dive: ['8M'],\n      doubleedge: ['9M', '9L66', '8L66'],\n      doublehit: ['9L30', '8L30'],\n      dracometeor: ['9M', '8T'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M', '9L42', '8M', '8L42'],\n      dragonpulse: ['9M', '9L0', '8M', '8L0'],\n      dragonrush: ['9L61', '8L61'],\n      dragontail: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      flamethrower: ['9M', '8M'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M', '9L18', '8M', '8L18'],\n      hydropump: ['9M', '8M'],\n      infestation: ['9L1', '8L1'],\n      lastresort: ['9L72', '8L72'],\n      lightscreen: ['9M'],\n      lockon: ['9L6', '8L6'],\n      nightshade: ['9M'],\n      outrage: ['9M', '8M'],\n      phantomforce: ['9M', '9L48', '8M', '8L48'],\n      pounce: ['9M'],\n      protect: ['9M', '8M'],\n      psychicfangs: ['9M', '8M'],\n      quickattack: ['9L1', '8L1'],\n      reflect: ['9M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scald: ['8M'],\n      shadowball: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      steelwing: ['8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      surf: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M', '9L54', '8L54'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      thunderwave: ['9M', '8M'],\n      uturn: ['9M', '9L36', '8M', '8L36'],\n      willowisp: ['9M', '8M']\n    }\n  ],\n  [\n    'dragapult',\n    {\n      acrobatics: ['9M', '8M'],\n      agility: ['9M', '9L24', '8M', '8L24'],\n      allyswitch: ['8M'],\n      assurance: ['9L12', '8M', '8L12'],\n      astonish: ['9L1', '8L1'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      beatup: ['8M'],\n      bite: ['9L1', '8L1'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      brine: ['8M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      dive: ['8M'],\n      doubleedge: ['9M', '9L70', '8L70'],\n      doublehit: ['9L30', '8L30'],\n      dracometeor: ['9M', '8T'],\n      dragonbreath: ['9L1', '8L1'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M'],\n      dragondance: ['9M', '9L42', '8M', '8L42'],\n      dragondarts: ['9L0', '9S0', '8L0'],\n      dragonpulse: ['9M', '8M'],\n      dragonrush: ['9L63', '8L63'],\n      dragontail: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      flamethrower: ['9M', '8M'],\n      fly: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M', '9L18', '8M', '8L18'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      infestation: ['9L1', '8L1'],\n      lastresort: ['9L78', '8L78'],\n      lightscreen: ['9M', '8M'],\n      lockon: ['9L6', '8L6'],\n      nightshade: ['9M'],\n      outrage: ['9M', '8M'],\n      phantomforce: ['9M', '9L48', '9S0', '8M', '8L48'],\n      pounce: ['9M'],\n      protect: ['9M', '8M'],\n      psychicfangs: ['9M', '8M'],\n      quickattack: ['9L1', '8L1'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scald: ['8M'],\n      shadowball: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      steelwing: ['8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['8L1'],\n      sunnyday: ['9M'],\n      surf: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M', '9L54', '8L54'],\n      terablast: ['9M', '9S0'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      thunderwave: ['9M', '8M'],\n      triattack: ['8M'],\n      uturn: ['9M', '9L36', '9S0', '8M', '8L36'],\n      willowisp: ['9M', '8M']\n    }\n  ],\n  [\n    'zacian',\n    {\n      agility: ['9M', '8M'],\n      airslash: ['9M', '8M'],\n      assurance: ['8M'],\n      bite: ['9L1', '8L1'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '8M'],\n      brutalswing: ['8M'],\n      closecombat: ['9M', '9L77', '8M', '8L77'],\n      crunch: ['9M', '9L55', '8M', '8L55', '8S0'],\n      dazzlinggleam: ['9M'],\n      dig: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      falseswipe: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      flashcannon: ['9M'],\n      focusblast: ['9M', '8M'],\n      focusenergy: ['8M'],\n      gigaimpact: ['9M', '9L88', '8M', '8L88'],\n      helpinghand: ['9M', '8M'],\n      howl: ['9L1', '8L1'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      icefang: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M'],\n      ironhead: ['9M', '9L33', '8M', '8L33', '8S0', '8S1'],\n      irontail: ['8M'],\n      laserfocus: ['8L44'],\n      metalclaw: ['9M', '9L1', '8L1'],\n      mistyterrain: ['9M'],\n      moonblast: ['9L66', '8L66'],\n      nobleroar: ['9L44'],\n      playrough: ['9M', '8M', '8S1'],\n      poisonjab: ['9M'],\n      protect: ['9M', '8M'],\n      psychicfangs: ['9M', '8M'],\n      psychocut: ['8M'],\n      quickattack: ['9L1', '8L1'],\n      quickguard: ['9L1', '8L1'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      round: ['8M'],\n      sacredsword: ['9L1', '8L1', '8S0', '8S1'],\n      scaryface: ['9M', '8M'],\n      slash: ['9L11', '8L11'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      solarblade: ['9M', '8M'],\n      steelbeam: ['9M', '8T'],\n      substitute: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L22', '8M', '8L22', '8S0', '8S1'],\n      tailslap: ['8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  ['zaciancrowned', { behemothblade: ['9R', '8R'] }],\n  [\n    'zamazenta',\n    {\n      agility: ['9M', '8M'],\n      bite: ['9L1', '8L1'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      closecombat: ['9M', '9L77', '8M', '8L77', '8S1'],\n      coaching: ['9M', '8T'],\n      crunch: ['9M', '9L55', '8M', '8L55', '8S0'],\n      dazzlinggleam: ['9M', '8M'],\n      dig: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      flashcannon: ['9M', '8M'],\n      focusblast: ['9M', '8M'],\n      focusenergy: ['8M'],\n      gigaimpact: ['9M', '9L88', '8M', '8L88'],\n      guardswap: ['8M'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M', '8M'],\n      howl: ['9L1', '8L1'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      icefang: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '9L22', '8M', '8L22', '8S0', '8S1'],\n      ironhead: ['9M', '9L33', '8M', '8L33', '8S0', '8S1'],\n      irontail: ['8M'],\n      laserfocus: ['8L44'],\n      lightscreen: ['9M', '8M'],\n      metalburst: ['9L44', '8L1'],\n      metalclaw: ['9M', '9L1', '8L1'],\n      moonblast: ['9L66', '8L66'],\n      payback: ['8M'],\n      playrough: ['9M', '8M'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M'],\n      psychicfangs: ['9M', '8M'],\n      quickattack: ['9L1', '8L1'],\n      raindance: ['9M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M', '8M'],\n      slash: ['9L11', '8L11', '8S0'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      steelbeam: ['9M', '8T'],\n      stoneedge: ['9M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      swift: ['9M', '8M'],\n      tailslap: ['8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M'],\n      trailblaze: ['9M'],\n      wideguard: ['9L1', '8L1', '8S1'],\n      wildcharge: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  ['zamazentacrowned', { behemothbash: ['9R', '8R'] }],\n  [\n    'eternatus',\n    {\n      agility: ['9M', '9L1', '8M', '8L1'],\n      assurance: ['8M'],\n      bodyslam: ['9M'],\n      brutalswing: ['8M'],\n      confuseray: ['9M', '9L1', '8L1'],\n      cosmicpower: ['9L64', '8M', '8L64'],\n      crosspoison: ['9L32', '8M', '8L32', '8S0'],\n      dracometeor: ['9M', '8T'],\n      dragondance: ['9M', '9L24', '8M', '8L24'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40', '8S0'],\n      dragontail: ['9M', '9L1', '8L1'],\n      dynamaxcannon: ['9L56', '8L56', '8S1', '8S0'],\n      endure: ['9M', '8M'],\n      eternabeam: ['8L88', '8S1'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M'],\n      firespin: ['9M'],\n      flamethrower: ['9M', '9L48', '8M', '8L48', '8S1', '8S0'],\n      flashcannon: ['9M', '8M'],\n      fly: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      gravity: ['9M'],\n      gunkshot: ['9M'],\n      hyperbeam: ['9M', '9L80', '8M', '8L80'],\n      lightscreen: ['9M', '8M'],\n      meteorbeam: ['9M', '8T'],\n      mysticalfire: ['8M'],\n      outrage: ['9M', '9L88'],\n      payback: ['8M'],\n      poisonjab: ['9M', '8M'],\n      poisontail: ['9M', '9L1', '8L1'],\n      protect: ['9M', '8M'],\n      raindance: ['9M'],\n      recover: ['9L72', '8L72'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      screech: ['8M'],\n      shadowball: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      sludgebomb: ['9M', '8M', '8S1'],\n      sludgewave: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L8', '8L8'],\n      toxicspikes: ['9M', '8M'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '9L16', '8M', '8L16']\n    }\n  ],\n  [\n    'kubfu',\n    {\n      acrobatics: ['9M', '8M'],\n      aerialace: ['9M', '9L12', '8L12'],\n      attract: ['8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '9L24', '9S1', '8M', '8L24'],\n      bulkup: ['9M', '9L32', '8M', '8L32'],\n      closecombat: ['9M', '9L48', '8M', '8L48'],\n      coaching: ['8T'],\n      counter: ['9L44', '8L44'],\n      detect: ['9L28', '9S1', '8L28'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      dynamicpunch: ['9L40', '8L40'],\n      endure: ['9M', '9L4', '8M', '8L4', '8S0'],\n      facade: ['9M', '8M'],\n      firepunch: ['9M', '8M'],\n      fling: ['9M'],\n      focusenergy: ['9L8', '8M', '8L8', '8S0'],\n      focuspunch: ['9M', '9L52', '8L52'],\n      headbutt: ['9L20', '9S1', '8L20'],\n      helpinghand: ['9M', '8M'],\n      icepunch: ['9M', '8M'],\n      ironhead: ['9M', '9L36', '8M', '8L36'],\n      leer: ['9L1', '8L1', '8S0'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      rocksmash: ['9L1', '8L1', '8S0'],\n      round: ['8M'],\n      scaryface: ['9M', '9L16', '9S1', '8M', '8L16'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      superpower: ['8M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8M'],\n      uturn: ['9M', '8M'],\n      workup: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'urshifu',\n    {\n      acrobatics: ['9M', '8M'],\n      aerialace: ['9M', '9L12', '8L12'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      aurasphere: ['9M', '8M'],\n      beatup: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '9L24', '8M', '8L24'],\n      bulkup: ['9M', '9L32', '8M', '8L32'],\n      closecombat: ['9M', '9L48', '8M', '8L48'],\n      coaching: ['9M', '8T'],\n      counter: ['9L44', '8L44'],\n      crunch: ['9M', '8M'],\n      darkestlariat: ['8M'],\n      darkpulse: ['9M', '8M'],\n      detect: ['9L28', '8L28'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M', '8M'],\n      dynamicpunch: ['9L40', '8L40'],\n      endure: ['9M', '9L1', '8M', '8L1'],\n      facade: ['9M', '8M'],\n      falseswipe: ['9M', '8M'],\n      firepunch: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      focusblast: ['9M', '8M'],\n      focusenergy: ['9L1', '8M', '8L1'],\n      focuspunch: ['9M', '9L52', '8L52'],\n      foulplay: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      headbutt: ['9L20', '8L20'],\n      helpinghand: ['9M', '8M'],\n      icepunch: ['9M', '8M'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '9L36', '8M', '8L36'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metalclaw: ['9M'],\n      payback: ['8M'],\n      poisonjab: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M'],\n      rocksmash: ['9L1', '8L1'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '9L16', '8M', '8L16'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      stoneedge: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      suckerpunch: ['9L1', '8L1'],\n      superpower: ['8M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M'],\n      thunderpunch: ['9M', '8M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M'],\n      wickedblow: ['9L0', '8L0'],\n      workup: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'urshifurapidstrike',\n    {\n      acrobatics: ['9M', '8M'],\n      aerialace: ['9M', '9L12', '8L12'],\n      aquajet: ['9L1', '8L1'],\n      attract: ['8M'],\n      aurasphere: ['9M', '8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '9L24', '8M', '8L24'],\n      brine: ['8M'],\n      bulkup: ['9M', '9L32', '8M', '8L32'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '9L48', '8M', '8L48'],\n      coaching: ['9M', '8T'],\n      counter: ['9L44', '8L44'],\n      detect: ['9L28', '8L28'],\n      dig: ['9M', '8M'],\n      dive: ['8M'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M', '8M'],\n      dynamicpunch: ['9L40', '8L40'],\n      endure: ['9M', '9L1', '8M', '8L1'],\n      facade: ['9M', '8M'],\n      falseswipe: ['9M', '8M'],\n      firepunch: ['9M', '8M'],\n      fling: ['9M'],\n      focusblast: ['9M', '8M'],\n      focusenergy: ['9L1', '8M', '8L1'],\n      focuspunch: ['9M', '9L52', '8L52'],\n      gigaimpact: ['9M', '8M'],\n      headbutt: ['9L20', '8L20'],\n      helpinghand: ['9M', '8M'],\n      icepunch: ['9M', '8M'],\n      icespinner: ['9M'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '9L36', '8M', '8L36'],\n      leer: ['9L1', '8L1'],\n      liquidation: ['9M', '8M'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      poisonjab: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      rockslide: ['9M', '8M'],\n      rocksmash: ['9L1', '8L1'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      scald: ['8M'],\n      scaryface: ['9M', '9L16', '8M', '8L16'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      stoneedge: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      superpower: ['8M'],\n      surgingstrikes: ['9L0', '8L0'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M', '8M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M'],\n      waterfall: ['9M', '8M'],\n      whirlpool: ['9M', '8M'],\n      workup: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'zarude',\n    {\n      acrobatics: ['9M', '8M'],\n      aerialace: ['9M'],\n      assurance: ['8M'],\n      bind: ['9L1', '8L1'],\n      bite: ['9L42', '9S1', '8L42'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M'],\n      brutalswing: ['8M'],\n      bulkup: ['9M', '8M'],\n      bulletseed: ['9M', '8M'],\n      closecombat: ['9M', '8M', '8S0'],\n      crunch: ['9M', '8M'],\n      darkestlariat: ['8M'],\n      darkpulse: ['9M', '8M'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M', '8M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L60', '8M', '8L60'],\n      facade: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      focuspunch: ['9M'],\n      furyswipes: ['9L24', '8L24'],\n      gigadrain: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '9L36', '9S1', '8M', '8L36'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L18', '8L18'],\n      hammerarm: ['9L72', '8L72'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      irontail: ['8M'],\n      junglehealing: ['9L90', '8L90'],\n      knockoff: ['9M'],\n      lashout: ['9M', '8T'],\n      leafstorm: ['9M'],\n      leer: ['9L6', '8L6'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M'],\n      magicalleaf: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudshot: ['9M', '8M'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M'],\n      petalblizzard: ['9M'],\n      powerwhip: ['9L84', '8M', '8L84', '8S0'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      revenge: ['8M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '9L30', '9S1', '8M', '8L30'],\n      scratch: ['9L1', '8L1'],\n      seedbomb: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M', '8S0'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      solarblade: ['9M', '8M'],\n      stompingtantrum: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      superpower: ['8M'],\n      swagger: ['9L54', '8L54', '8S0'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M'],\n      synthesis: ['9L66', '8L66'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thrash: ['9L78', '8L78'],\n      throatchop: ['9M', '8M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L48', '9S1', '8M', '8L48'],\n      vinewhip: ['9L12', '8L12']\n    }\n  ],\n  [\n    'zarudedada',\n    {\n      acrobatics: ['9M', '8M'],\n      aerialace: ['9M'],\n      assurance: ['8M'],\n      bind: ['9L1', '8L1'],\n      bite: ['9L42', '8L42'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M'],\n      brutalswing: ['8M'],\n      bulkup: ['9M', '8M'],\n      bulletseed: ['9M', '8M'],\n      closecombat: ['9M', '8M'],\n      crunch: ['9M', '8M'],\n      darkestlariat: ['8M'],\n      darkpulse: ['9M', '8M'],\n      dig: ['9M', '8M'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M', '8M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L60', '8M', '8L60', '8S0'],\n      facade: ['9M', '8M'],\n      fling: ['9M', '8M'],\n      focuspunch: ['9M'],\n      furyswipes: ['9L24', '8L24'],\n      gigadrain: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '9L36', '8M', '8L36'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L18', '8L18'],\n      hammerarm: ['9L72', '8L72', '8S0'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      irontail: ['8M'],\n      junglehealing: ['9L90', '8L90', '8S0'],\n      knockoff: ['9M'],\n      lashout: ['9M', '8T'],\n      leafstorm: ['9M'],\n      leer: ['9L6', '8L6'],\n      lowkick: ['9M', '8M'],\n      lowsweep: ['9M'],\n      magicalleaf: ['9M', '8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      mudshot: ['9M', '8M'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M'],\n      petalblizzard: ['9M'],\n      powerwhip: ['9L84', '8M', '8L84', '8S0'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      revenge: ['8M'],\n      roar: ['9M'],\n      rockslide: ['9M', '8M'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '9L30', '8M', '8L30'],\n      scratch: ['9L1', '8L1'],\n      seedbomb: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      solarblade: ['9M', '8M'],\n      stompingtantrum: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      superpower: ['8M'],\n      swagger: ['9L54', '8L54'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M'],\n      synthesis: ['9L66', '8L66'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thrash: ['9L78', '8L78'],\n      throatchop: ['9M', '8M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L48', '8M', '8L48'],\n      vinewhip: ['9L12', '8L12']\n    }\n  ],\n  [\n    'regieleki',\n    {\n      acrobatics: ['9M', '8M'],\n      agility: ['9M', '8M'],\n      ancientpower: ['9L12', '8L12'],\n      assurance: ['8M'],\n      bodyslam: ['9M', '8M'],\n      bounce: ['8M'],\n      charge: ['9M'],\n      chargebeam: ['9M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '9L6', '8M', '8L6'],\n      endure: ['9M', '8M'],\n      explosion: ['9L78', '8L78'],\n      extremespeed: ['9L30', '8L30'],\n      facade: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      hyperbeam: ['9M', '9L72', '8M', '8L72'],\n      lightscreen: ['9M', '8M'],\n      lockon: ['9L60', '8L60', '8S0'],\n      magnetrise: ['9L48', '8L48'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      rapidspin: ['9L1', '8L1'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      risingvoltage: ['8T'],\n      round: ['8M'],\n      screech: ['8M'],\n      selfdestruct: ['8M'],\n      shockwave: ['9L18', '8L18'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      supercellslam: ['9M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L54', '8L54', '8S0'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '9L42', '8M', '8L42'],\n      thundercage: ['9L36', '8L36', '8S0'],\n      thundershock: ['9L1', '8L1'],\n      thunderwave: ['9M', '9L24', '8M', '8L24'],\n      voltswitch: ['9M', '8M'],\n      wildcharge: ['9M', '8M'],\n      zapcannon: ['9L66', '8L66', '8S0']\n    }\n  ],\n  [\n    'regidrago',\n    {\n      ancientpower: ['9L12', '8L12'],\n      bite: ['9L6', '8L6'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      crunch: ['9M', '9L30', '8M', '8L30'],\n      dracometeor: ['9M', '8T'],\n      dragonbreath: ['9L18', '8L18'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L36', '8M', '8L36', '8S0'],\n      dragondance: ['9M', '9L48', '8M', '8L48'],\n      dragonenergy: ['9L66', '8L66', '8S0'],\n      dragonpulse: ['9M', '8M'],\n      earthpower: ['9M'],\n      earthquake: ['9M'],\n      endure: ['9M', '8M'],\n      explosion: ['9L78', '8L78'],\n      facade: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      focusenergy: ['9L60', '8M', '8L24'],\n      gigaimpact: ['9M', '8M'],\n      hammerarm: ['9L42', '8L42', '8S0'],\n      hyperbeam: ['9M', '9L72', '8M', '8L72'],\n      icefang: ['9M'],\n      laserfocus: ['8L60', '8S0'],\n      lightscreen: ['9M', '8M'],\n      outrage: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      reversal: ['9M', '8M'],\n      round: ['8M'],\n      scaleshot: ['9M', '8T'],\n      selfdestruct: ['8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L54', '8L54'],\n      thunderfang: ['9M', '8M'],\n      twister: ['9L1', '8L1'],\n      visegrip: ['9L1', '8L1']\n    }\n  ],\n  [\n    'glastrier',\n    {\n      assurance: ['8M'],\n      avalanche: ['9M', '9L12', '8M', '8L12'],\n      blizzard: ['9M', '8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '8M'],\n      closecombat: ['9M', '8M'],\n      crunch: ['9M', '8M'],\n      curse: ['9M'],\n      doubleedge: ['9M', '9L66', '9S1', '8L66', '8S0'],\n      doublekick: ['9L6', '8L6'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      hail: ['8M'],\n      heavyslam: ['9M', '8M'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      iciclecrash: ['9L36', '8L36', '8S0'],\n      iciclespear: ['8M'],\n      icywind: ['9M', '8M'],\n      irondefense: ['9M', '9L48', '9S1', '8M', '8L48'],\n      lashout: ['9M', '8T'],\n      megahorn: ['8M'],\n      mist: ['9L30', '8L30'],\n      mudshot: ['9M', '8M'],\n      outrage: ['9M', '8M'],\n      payback: ['8M'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      roar: ['9M'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      smartstrike: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      snowscape: ['9M'],\n      stomp: ['9L18', '8L18'],\n      stompingtantrum: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      superpower: ['8M'],\n      swordsdance: ['9M', '9L72', '8M', '8L72', '8S0'],\n      tackle: ['9L1', '8L1'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M', '9L42', '8L42'],\n      taunt: ['9M', '9L60', '9S1', '8M', '8L60', '8S0'],\n      terablast: ['9M'],\n      thrash: ['9L54', '9S1', '8L54'],\n      throatchop: ['9M', '8M'],\n      torment: ['9L24', '8L24'],\n      trailblaze: ['9M'],\n      uproar: ['8M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'spectrier',\n    {\n      agility: ['9M', '9L48', '9S1', '8M', '8L48'],\n      assurance: ['8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '8M'],\n      calmmind: ['9M', '8M'],\n      confuseray: ['9M', '9L24', '8L24'],\n      crunch: ['9M', '8M'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M'],\n      disable: ['9L60', '9S1', '8L60', '8S0'],\n      doubleedge: ['9M', '9L66', '9S1', '8L66', '8S0'],\n      doublekick: ['9L6', '8L6'],\n      drainingkiss: ['9M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      haze: ['9M', '9L30', '8L30'],\n      hex: ['9M', '9L12', '8M', '8L12'],\n      hyperbeam: ['9M', '8M'],\n      lashout: ['9M', '8T'],\n      mudshot: ['9M', '8M'],\n      nastyplot: ['9M', '9L72', '8M', '8L72', '8S0'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      payback: ['8M'],\n      phantomforce: ['9M', '8M'],\n      poltergeist: ['9M'],\n      protect: ['9M', '8M'],\n      psychic: ['9M'],\n      psychocut: ['8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      shadowball: ['9M', '9L36', '8M', '8L36'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      stomp: ['9L18', '8L18'],\n      stompingtantrum: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M', '9L42', '8L42'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thrash: ['9L54', '9S1', '8L54', '8S0'],\n      uproar: ['8M'],\n      willowisp: ['9M', '8M']\n    }\n  ],\n  [\n    'calyrex',\n    {\n      agility: ['9M', '8M'],\n      allyswitch: ['8M'],\n      aromatherapy: ['8L40'],\n      batonpass: ['9M', '8M'],\n      bodypress: ['9M'],\n      bulletseed: ['9M', '8M'],\n      calmmind: ['9M', '8M'],\n      confusion: ['9L1', '8L1'],\n      drainingkiss: ['9M', '8M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L48', '8M', '8L48'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      futuresight: ['9M', '9L88', '8M', '8L88'],\n      gigadrain: ['9M', '9L16', '8M', '8L16', '8S0'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      grassyterrain: ['9M', '9L40', '8M'],\n      gravity: ['9M'],\n      growth: ['9L1', '8L1'],\n      guardswap: ['8M'],\n      healpulse: ['9L72', '8L72'],\n      helpinghand: ['9M', '9L32', '8M', '8L32'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L64', '8L64'],\n      lifedew: ['9L8', '8L8'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      magicroom: ['8M'],\n      megadrain: ['9L1', '8L1'],\n      metronome: ['9M', '8M'],\n      mudshot: ['9M'],\n      payday: ['8M'],\n      pollenpuff: ['9M', '8M'],\n      pound: ['9L1', '8L1'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L56', '8M', '8L56', '8S0'],\n      psychicterrain: ['9M', '9L40', '8M'],\n      psychup: ['9M'],\n      psyshock: ['9M', '9L24', '8M', '8L24'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      scaryface: ['9M'],\n      seedbomb: ['9M', '8M'],\n      skillswap: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '9L80', '8M', '8L80'],\n      solarblade: ['9M', '8M'],\n      speedswap: ['8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      triattack: ['8M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M', '8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'calyrexice',\n    {\n      agility: ['9M', '8M'],\n      allyswitch: ['8M'],\n      aromatherapy: ['8L40'],\n      assurance: ['8M'],\n      avalanche: ['9M', '9L1', '8M', '8L1'],\n      batonpass: ['9M', '8M'],\n      blizzard: ['9M', '8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '8M'],\n      bulletseed: ['9M', '8M'],\n      calmmind: ['9M', '8M'],\n      closecombat: ['9M', '8M'],\n      confusion: ['9L1', '8L1'],\n      crunch: ['9M', '8M'],\n      curse: ['9M'],\n      doubleedge: ['9M', '9L1', '8L1'],\n      doublekick: ['9L1', '8L1'],\n      drainingkiss: ['9M', '8M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L48', '8M', '8L48'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      futuresight: ['9M', '9L88', '8M', '8L88'],\n      gigadrain: ['9M', '9L16', '8M', '8L16', '8S0'],\n      gigaimpact: ['9M', '8M'],\n      glaciallance: ['9L1', '8L1', '8S0'],\n      grassknot: ['9M', '8M'],\n      grassyterrain: ['9M', '9L40', '8M'],\n      gravity: ['9M'],\n      growth: ['9L1', '8L1'],\n      guardswap: ['8M'],\n      hail: ['8M'],\n      healpulse: ['9L72', '8L72'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M', '9L32', '8M', '8L32'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      icebeam: ['9M', '8M'],\n      iciclecrash: ['9L1', '8L1'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '9L1', '8M', '8L1', '8S0'],\n      lashout: ['9M', '8T'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L64', '8L64'],\n      lifedew: ['9L8', '8L8'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      magicroom: ['8M'],\n      megadrain: ['9L1', '8L1'],\n      megahorn: ['8M'],\n      metronome: ['9M', '8M'],\n      mist: ['9L1', '8L1'],\n      mudshot: ['9M', '8M'],\n      outrage: ['9M', '8M'],\n      payback: ['8M'],\n      payday: ['8M'],\n      pollenpuff: ['9M', '8M'],\n      pound: ['9L1', '8L1'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L56', '8M', '8L56', '8S0'],\n      psychicterrain: ['9M', '9L40', '8M'],\n      psychup: ['9M'],\n      psyshock: ['9M', '9L24', '8M', '8L24'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      roar: ['9M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      scaryface: ['9M', '8M'],\n      seedbomb: ['9M', '8M'],\n      skillswap: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      smartstrike: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      snowscape: ['9M'],\n      solarbeam: ['9M', '9L80', '8M', '8L80'],\n      solarblade: ['9M', '8M'],\n      speedswap: ['8M'],\n      stomp: ['9L1', '8L1'],\n      stompingtantrum: ['9M', '8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      superpower: ['8M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L1', '8M', '8L1'],\n      tackle: ['9L1', '8L1'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M', '9L1', '8L1'],\n      taunt: ['9M', '9L1', '8M', '8L1'],\n      terablast: ['9M'],\n      thrash: ['9L1', '8L1'],\n      throatchop: ['9M', '8M'],\n      torment: ['9L1', '8L1'],\n      trailblaze: ['9M'],\n      triattack: ['8M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M', '8M'],\n      uproar: ['8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'calyrexshadow',\n    {\n      agility: ['9M', '9L1', '8M', '8L1', '8S0'],\n      allyswitch: ['8M'],\n      aromatherapy: ['8L40'],\n      assurance: ['8M'],\n      astralbarrage: ['9L1', '8L1', '8S0'],\n      batonpass: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '8M'],\n      bulletseed: ['9M', '8M'],\n      calmmind: ['9M', '8M'],\n      confuseray: ['9M', '9L1', '8L1'],\n      confusion: ['9L1', '8L1'],\n      crunch: ['9M', '8M'],\n      curse: ['9M'],\n      darkpulse: ['9M', '8M'],\n      disable: ['9L1', '8L1'],\n      doubleedge: ['9M', '9L1', '8L1'],\n      doublekick: ['9L1', '8L1'],\n      drainingkiss: ['9M', '8M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L48', '8M', '8L48'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M'],\n      foulplay: ['9M', '8M'],\n      futuresight: ['9M', '9L88', '8M', '8L88'],\n      gigadrain: ['9M', '9L16', '8M', '8L16', '8S0'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9M', '8M'],\n      grassyterrain: ['9M', '9L40', '8M'],\n      gravity: ['9M'],\n      growth: ['9L1', '8L1'],\n      guardswap: ['8M'],\n      haze: ['9M', '9L1', '8L1'],\n      healpulse: ['9L72', '8L72'],\n      helpinghand: ['9M', '9L32', '8M', '8L32'],\n      hex: ['9M', '9L1', '8M', '8L1'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lashout: ['9M', '8T'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L64', '8L64'],\n      lifedew: ['9L8', '8L8'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      magicroom: ['8M'],\n      megadrain: ['9L1', '8L1'],\n      metronome: ['9M', '8M'],\n      mudshot: ['9M', '8M'],\n      nastyplot: ['9M', '9L1', '8M', '8L1'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      payback: ['8M'],\n      payday: ['8M'],\n      phantomforce: ['9M', '8M'],\n      pollenpuff: ['9M', '8M'],\n      pound: ['9L1', '8L1'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M'],\n      psybeam: ['9M'],\n      psychic: ['9M', '9L56', '8M', '8L56', '8S0'],\n      psychicterrain: ['9M', '9L40', '8M'],\n      psychocut: ['8M'],\n      psychup: ['9M'],\n      psyshock: ['9M', '9L24', '8M', '8L24'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      scaryface: ['9M', '8M'],\n      seedbomb: ['9M', '8M'],\n      shadowball: ['9M', '9L1', '8M', '8L1'],\n      skillswap: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '9L80', '8M', '8L80'],\n      solarblade: ['9M', '8M'],\n      speedswap: ['8M'],\n      stomp: ['9L1', '8L1'],\n      stompingtantrum: ['9M', '8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M', '9L1', '8L1'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thrash: ['9L1', '8L1'],\n      triattack: ['8M'],\n      trick: ['9M', '8M'],\n      trickroom: ['9M', '8M'],\n      uproar: ['8M'],\n      willowisp: ['9M', '8M'],\n      wonderroom: ['8M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'enamorus',\n    {\n      agility: ['9M'],\n      alluringvoice: ['9M'],\n      astonish: ['9L1'],\n      bodyslam: ['9M'],\n      calmmind: ['9M'],\n      dazzlinggleam: ['9M', '9L40'],\n      disarmingvoice: ['9M'],\n      drainingkiss: ['9M', '9L20', '9S1'],\n      earthpower: ['9M'],\n      endure: ['9M'],\n      extrasensory: ['9L45', '9S1'],\n      facade: ['9M'],\n      fairywind: ['9L1'],\n      flatter: ['9L10'],\n      fly: ['9M'],\n      focusblast: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyterrain: ['9M'],\n      healingwish: ['9L60'],\n      hyperbeam: ['9M'],\n      imprison: ['9M', '9L30'],\n      irondefense: ['9M', '9L25'],\n      ironhead: ['9M'],\n      mistyexplosion: ['9M'],\n      mistyterrain: ['9M'],\n      moonblast: ['9L65', '9S1'],\n      mysticalfire: ['9L35'],\n      outrage: ['9M', '9L70'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      springtidestorm: ['9L75'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superpower: ['9L55'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      torment: ['9L5'],\n      twister: ['9L15'],\n      uproar: ['9M', '9L50'],\n      weatherball: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  ['enamorustherian', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'sprigatito',\n    {\n      acrobatics: ['9M'],\n      agility: ['9M'],\n      allyswitch: ['9E'],\n      bite: ['9L7'],\n      bulletseed: ['9M'],\n      charm: ['9M'],\n      copycat: ['9E'],\n      disarmingvoice: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L32'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      gigadrain: ['9M'],\n      grassknot: ['9M'],\n      grasspledge: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      helpinghand: ['9M'],\n      honeclaws: ['9L10'],\n      leafage: ['9L1', '9S0'],\n      leafstorm: ['9M'],\n      leechseed: ['9E'],\n      magicalleaf: ['9M', '9L13'],\n      mudslap: ['9M'],\n      nastyplot: ['9M'],\n      petalblizzard: ['9M', '9E'],\n      playrough: ['9M', '9L36'],\n      protect: ['9M'],\n      quickattack: ['9L15'],\n      rest: ['9M'],\n      scratch: ['9L1', '9S0'],\n      seedbomb: ['9M', '9L17'],\n      shadowclaw: ['9M'],\n      slash: ['9L28'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      substitute: ['9M'],\n      suckerpunch: ['9E'],\n      swift: ['9M'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L21'],\n      worryseed: ['9L25']\n    }\n  ],\n  [\n    'floragato',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M'],\n      bite: ['9L7'],\n      bulletseed: ['9M'],\n      charm: ['9M'],\n      disarmingvoice: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L38'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      fling: ['9M'],\n      gigadrain: ['9M'],\n      grassknot: ['9M'],\n      grasspledge: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      helpinghand: ['9M'],\n      honeclaws: ['9L10'],\n      leafage: ['9L1'],\n      leafstorm: ['9M', '9L46'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      magicalleaf: ['9M', '9L13'],\n      mudslap: ['9M'],\n      nastyplot: ['9M'],\n      petalblizzard: ['9M'],\n      playrough: ['9M', '9L42'],\n      protect: ['9M'],\n      quickattack: ['9L15'],\n      rest: ['9M'],\n      scratch: ['9L1'],\n      seedbomb: ['9M', '9L20'],\n      shadowclaw: ['9M'],\n      slash: ['9L33'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      substitute: ['9M'],\n      swift: ['9M'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L24'],\n      worryseed: ['9L28']\n    }\n  ],\n  [\n    'meowscarada',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M'],\n      aurasphere: ['9M'],\n      bite: ['9L7'],\n      brickbreak: ['9M'],\n      bulletseed: ['9M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      darkpulse: ['9M'],\n      disarmingvoice: ['9M'],\n      doubleteam: ['9M', '9L1'],\n      endure: ['9M'],\n      energyball: ['9M', '9L42'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      fling: ['9M'],\n      flowertrick: ['9L0'],\n      foulplay: ['9M'],\n      frenzyplant: ['9M'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grasspledge: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '9L58'],\n      helpinghand: ['9M'],\n      honeclaws: ['9L10'],\n      hyperbeam: ['9M'],\n      knockoff: ['9M', '9L52'],\n      lashout: ['9M'],\n      leafage: ['9L1'],\n      leafstorm: ['9M', '9L64'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      magicalleaf: ['9M', '9L13'],\n      mudslap: ['9M'],\n      nastyplot: ['9M'],\n      nightslash: ['9L38'],\n      petalblizzard: ['9M'],\n      playrough: ['9M', '9L47'],\n      pollenpuff: ['9M'],\n      powergem: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      quickattack: ['9L15'],\n      rest: ['9M'],\n      scratch: ['9L1'],\n      seedbomb: ['9M', '9L20'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M'],\n      skillswap: ['9M'],\n      slash: ['9L33'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spikes: ['9M'],\n      substitute: ['9M'],\n      swift: ['9M'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunderpunch: ['9M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      trick: ['9M', '9L1'],\n      trickroom: ['9M'],\n      tripleaxel: ['9M'],\n      uturn: ['9M', '9L24'],\n      worryseed: ['9L29']\n    }\n  ],\n  [\n    'fuecoco',\n    {\n      belch: ['9E'],\n      bite: ['9L12'],\n      bodyslam: ['9M'],\n      crunch: ['9M'],\n      curse: ['9M', '9E'],\n      dig: ['9M'],\n      disarmingvoice: ['9M'],\n      ember: ['9L1', '9S0'],\n      encore: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M', '9L36'],\n      firefang: ['9M'],\n      firepledge: ['9M'],\n      firespin: ['9M'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '9L28'],\n      flareblitz: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      hypervoice: ['9M', '9L32'],\n      incinerate: ['9L15'],\n      leer: ['9L1'],\n      mudslap: ['9M'],\n      outrage: ['9M'],\n      overheat: ['9M'],\n      protect: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L25'],\n      round: ['9L7'],\n      seedbomb: ['9M'],\n      slackoff: ['9E'],\n      sleeptalk: ['9M'],\n      snarl: ['9M', '9L21'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1', '9S0'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      willowisp: ['9M'],\n      yawn: ['9L17'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'crocalor',\n    {\n      bite: ['9L12'],\n      bodyslam: ['9M'],\n      crunch: ['9M'],\n      curse: ['9M'],\n      dig: ['9M'],\n      disarmingvoice: ['9M'],\n      ember: ['9L1'],\n      encore: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M', '9L47'],\n      firefang: ['9M'],\n      firepledge: ['9M'],\n      firespin: ['9M'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '9L32'],\n      flareblitz: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      hypervoice: ['9M', '9L38'],\n      incinerate: ['9L17'],\n      leer: ['9L1'],\n      lick: ['9L7'],\n      mudslap: ['9M'],\n      outrage: ['9M'],\n      overheat: ['9M'],\n      protect: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L28'],\n      round: ['9L10'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M', '9L24'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      willowisp: ['9M', '9L42'],\n      yawn: ['9L15'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'skeledirge',\n    {\n      alluringvoice: ['9M'],\n      bite: ['9L15'],\n      blastburn: ['9M'],\n      bodyslam: ['9M'],\n      crunch: ['9M'],\n      curse: ['9M'],\n      dig: ['9M'],\n      disarmingvoice: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M'],\n      ember: ['9L1'],\n      encore: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M', '9L58'],\n      firefang: ['9M'],\n      firepledge: ['9M'],\n      firespin: ['9M'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '9L32'],\n      flareblitz: ['9M'],\n      gigaimpact: ['9M'],\n      heatcrash: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      hex: ['9M', '9L47'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M', '9L42'],\n      imprison: ['9M'],\n      incinerate: ['9L17'],\n      leer: ['9L1'],\n      lick: ['9L7'],\n      mudslap: ['9M'],\n      nightshade: ['9M'],\n      outrage: ['9M'],\n      overheat: ['9M', '9L64'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L28'],\n      round: ['9L10'],\n      scaryface: ['9M', '9L12'],\n      scorchingsands: ['9M'],\n      seedbomb: ['9M'],\n      shadowball: ['9M', '9L38'],\n      shadowclaw: ['9M'],\n      sing: ['9L1'],\n      sleeptalk: ['9M'],\n      snarl: ['9M', '9L24'],\n      solarbeam: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      torchsong: ['9L0'],\n      willowisp: ['9M', '9L47'],\n      yawn: ['9L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'quaxly',\n    {\n      acrobatics: ['9M', '9L31'],\n      aerialace: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L24'],\n      aquacutter: ['9L21'],\n      aquajet: ['9L13'],\n      batonpass: ['9M'],\n      bravebird: ['9M'],\n      chillingwater: ['9M'],\n      detect: ['9E'],\n      disarmingvoice: ['9M'],\n      doublehit: ['9L17'],\n      encore: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      focusenergy: ['9L28'],\n      growl: ['9L1'],\n      helpinghand: ['9M'],\n      hydropump: ['9M'],\n      lastresort: ['9E'],\n      liquidation: ['9M', '9L35'],\n      lowkick: ['9M'],\n      mistyterrain: ['9M'],\n      pound: ['9L1', '9S0'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rapidspin: ['9E'],\n      rest: ['9M'],\n      roost: ['9E'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      watergun: ['9L1', '9S0'],\n      waterpledge: ['9M'],\n      whirlpool: ['9M'],\n      wingattack: ['9L10'],\n      workup: ['9L7']\n    }\n  ],\n  [\n    'quaxwell',\n    {\n      acrobatics: ['9M', '9L38'],\n      aerialace: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L27'],\n      aquacutter: ['9L23'],\n      aquajet: ['9L13'],\n      batonpass: ['9M'],\n      bravebird: ['9M'],\n      chillingwater: ['9M'],\n      disarmingvoice: ['9M'],\n      doublehit: ['9L1'],\n      encore: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M', '9L48'],\n      flipturn: ['9M'],\n      focusenergy: ['9L32'],\n      growl: ['9L1'],\n      helpinghand: ['9M'],\n      hydropump: ['9M'],\n      liquidation: ['9M', '9L43'],\n      lowkick: ['9M'],\n      lowsweep: ['9M', '9L19'],\n      mistyterrain: ['9M'],\n      pound: ['9L1'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      tripleaxel: ['9M'],\n      watergun: ['9L1'],\n      waterpledge: ['9M'],\n      waterpulse: ['9M', '9L17'],\n      whirlpool: ['9M'],\n      wingattack: ['9L10'],\n      workup: ['9L7']\n    }\n  ],\n  [\n    'quaquaval',\n    {\n      acrobatics: ['9M', '9L43'],\n      aerialace: ['9M'],\n      agility: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L27'],\n      aquacutter: ['9L21'],\n      aquajet: ['9L13'],\n      aquastep: ['9L0'],\n      batonpass: ['9M'],\n      bravebird: ['9M'],\n      brickbreak: ['9M'],\n      bulkup: ['9M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M', '9L58'],\n      coaching: ['9M'],\n      counter: ['9L1'],\n      disarmingvoice: ['9M'],\n      doublehit: ['9L1'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M', '9L52'],\n      fling: ['9M'],\n      flipturn: ['9M'],\n      focusenergy: ['9L32'],\n      gigaimpact: ['9M'],\n      growl: ['9L1'],\n      helpinghand: ['9M'],\n      hurricane: ['9M'],\n      hydrocannon: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icespinner: ['9M'],\n      icywind: ['9M'],\n      knockoff: ['9M'],\n      liquidation: ['9M', '9L47'],\n      lowkick: ['9M'],\n      lowsweep: ['9M', '9L17'],\n      megakick: ['9L38'],\n      mistyterrain: ['9M'],\n      pound: ['9L1'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      tripleaxel: ['9M'],\n      upperhand: ['9M'],\n      uturn: ['9M'],\n      watergun: ['9L1'],\n      waterpledge: ['9M'],\n      waterpulse: ['9M', '9L17'],\n      wavecrash: ['9L64'],\n      whirlpool: ['9M'],\n      wingattack: ['9L10'],\n      workup: ['9L7']\n    }\n  ],\n  [\n    'lechonk',\n    {\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M'],\n      chillingwater: ['9M'],\n      covet: ['9L15', '9S0'],\n      curse: ['9M'],\n      dig: ['9M', '9L17', '9S0'],\n      disarmingvoice: ['9M', '9L5'],\n      doubleedge: ['9M', '9L35'],\n      echoedvoice: ['9L8'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      headbutt: ['9L21'],\n      helpinghand: ['9M'],\n      hypervoice: ['9M'],\n      ironhead: ['9M'],\n      mudshot: ['9M', '9L12', '9S0'],\n      mudslap: ['9M'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      spitup: ['9E'],\n      stockpile: ['9E'],\n      stuffcheeks: ['9E'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superfang: ['9M'],\n      swallow: ['9E'],\n      tackle: ['9L1'],\n      tailwhip: ['9L1'],\n      takedown: ['9M', '9L27'],\n      terablast: ['9M', '9S0'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '9L32'],\n      workup: ['9L30'],\n      yawn: ['9L24'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'oinkologne',\n    {\n      belch: ['9L54'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M'],\n      chillingwater: ['9M'],\n      covet: ['9L15'],\n      curse: ['9M'],\n      dig: ['9M', '9L17'],\n      disarmingvoice: ['9M', '9L5'],\n      doubleedge: ['9M', '9L42'],\n      earthpower: ['9M', '9L48'],\n      echoedvoice: ['9L8'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L23'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      ironhead: ['9M'],\n      lashout: ['9M'],\n      mudshot: ['9M', '9L12'],\n      mudslap: ['9M'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superfang: ['9M'],\n      tackle: ['9L1'],\n      tailwhip: ['9L1'],\n      takedown: ['9M', '9L26'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '9L38'],\n      workup: ['9L34'],\n      yawn: ['9L27'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'oinkolognef',\n    {\n      belch: ['9L51'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      bulletseed: ['9M'],\n      chillingwater: ['9M'],\n      covet: ['9L12'],\n      curse: ['9M'],\n      dig: ['9M', '9L15'],\n      disarmingvoice: ['9M', '9L3'],\n      doubleedge: ['9M', '9L39'],\n      earthpower: ['9M', '9L45'],\n      echoedvoice: ['9L6'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L17'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      ironhead: ['9M'],\n      lashout: ['9M'],\n      mudshot: ['9M', '9L9'],\n      mudslap: ['9M'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superfang: ['9M'],\n      tackle: ['9L1'],\n      tailwhip: ['9L1'],\n      takedown: ['9M', '9L28'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '9L34'],\n      workup: ['9L30'],\n      yawn: ['9L23'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'tarountula',\n    {\n      assurance: ['9L8'],\n      block: ['9L18'],\n      bodyslam: ['9M'],\n      bugbite: ['9M', '9L14'],\n      bugbuzz: ['9M'],\n      bulletseed: ['9M'],\n      circlethrow: ['9L36'],\n      counter: ['9L22'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      feint: ['9L11'],\n      firstimpression: ['9E'],\n      gastroacid: ['9L33'],\n      gigadrain: ['9M'],\n      grassknot: ['9M'],\n      headbutt: ['9L25'],\n      knockoff: ['9M'],\n      leechlife: ['9M'],\n      lunge: ['9M', '9E'],\n      memento: ['9E'],\n      poisonjab: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      shadowclaw: ['9M'],\n      skittersmack: ['9M', '9L44'],\n      sleeptalk: ['9M'],\n      spikes: ['9M'],\n      stickyweb: ['9L29'],\n      stringshot: ['9L1'],\n      strugglebug: ['9M', '9L5'],\n      substitute: ['9M'],\n      suckerpunch: ['9E'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '9L40'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'spidops',\n    {\n      aerialace: ['9M'],\n      assurance: ['9L8'],\n      block: ['9L19'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bugbite: ['9M', '9L14'],\n      bugbuzz: ['9M'],\n      bulletseed: ['9M'],\n      circlethrow: ['9L41'],\n      counter: ['9L24'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      feint: ['9L11'],\n      fling: ['9M'],\n      gastroacid: ['9L37'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      headbutt: ['9L28'],\n      knockoff: ['9M'],\n      leechlife: ['9M'],\n      lowkick: ['9M'],\n      lunge: ['9M'],\n      painsplit: ['9M'],\n      poisonjab: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      rocktomb: ['9M'],\n      scaryface: ['9M'],\n      shadowclaw: ['9M'],\n      silktrap: ['9L0'],\n      skittersmack: ['9M', '9L49'],\n      sleeptalk: ['9M'],\n      spikes: ['9M'],\n      stickyweb: ['9L33'],\n      stringshot: ['9L1'],\n      strugglebug: ['9M', '9L5'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '9L45'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      upperhand: ['9M'],\n      uturn: ['9M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'nymble',\n    {\n      agility: ['9M', '9L30'],\n      assurance: ['9L9'],\n      astonish: ['9L6'],\n      bugbite: ['9M', '9L22'],\n      bugbuzz: ['9M'],\n      counter: ['9E'],\n      doublekick: ['9L11'],\n      endure: ['9M', '9L18'],\n      facade: ['9M'],\n      feint: ['9L26'],\n      firstimpression: ['9L41'],\n      leechlife: ['9M'],\n      leer: ['9L1'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      screech: ['9L14'],\n      skittersmack: ['9M', '9E'],\n      sleeptalk: ['9M'],\n      strugglebug: ['9M', '9L4'],\n      substitute: ['9M'],\n      suckerpunch: ['9L38'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      uturn: ['9M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'lokix',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '9L32'],\n      assurance: ['9L9'],\n      astonish: ['9L6'],\n      axekick: ['9L53'],\n      bounce: ['9L48'],\n      brickbreak: ['9M'],\n      bugbite: ['9M', '9L22'],\n      bugbuzz: ['9M'],\n      darkpulse: ['9M'],\n      detect: ['9L1'],\n      doubleedge: ['9M'],\n      doublekick: ['9L11'],\n      endure: ['9M', '9L18'],\n      facade: ['9M'],\n      feint: ['9L28'],\n      firstimpression: ['9L44'],\n      fling: ['9M'],\n      gigaimpact: ['9M'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      leechlife: ['9M'],\n      leer: ['9L1'],\n      lowkick: ['9M', '9L1'],\n      lowsweep: ['9M'],\n      lunge: ['9M', '9L0'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L14'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      spite: ['9M'],\n      strugglebug: ['9M', '9L4'],\n      substitute: ['9M'],\n      suckerpunch: ['9L40'],\n      sunnyday: ['9M'],\n      swordsdance: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '9L36'],\n      trailblaze: ['9M'],\n      uturn: ['9M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'rellor',\n    {\n      bugbite: ['9M', '9L20'],\n      bugbuzz: ['9M'],\n      cosmicpower: ['9E'],\n      defensecurl: ['9L1'],\n      dig: ['9M', '9L29'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fling: ['9M'],\n      gunkshot: ['9M'],\n      irondefense: ['9M'],\n      leechlife: ['9M'],\n      lunge: ['9M', '9L35'],\n      memento: ['9E'],\n      mudshot: ['9M', '9L15'],\n      mudslap: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      recover: ['9E'],\n      rest: ['9M'],\n      rocktomb: ['9M'],\n      rollout: ['9L11'],\n      sandattack: ['9L4'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      strugglebug: ['9M', '9L7'],\n      substitute: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L24'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      weatherball: ['9M', '9E'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'rabsca',\n    {\n      bugbite: ['9M', '9L20'],\n      bugbuzz: ['9M', '9L45'],\n      calmmind: ['9M'],\n      confuseray: ['9M'],\n      confusion: ['9L1'],\n      dazzlinggleam: ['9M'],\n      defensecurl: ['9L1'],\n      dig: ['9M'],\n      earthpower: ['9M'],\n      electroball: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      expandingforce: ['9M'],\n      extrasensory: ['9L29'],\n      facade: ['9M'],\n      fling: ['9M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M'],\n      gravity: ['9M'],\n      guardswap: ['9L40'],\n      gunkshot: ['9M'],\n      hyperbeam: ['9M'],\n      imprison: ['9M'],\n      irondefense: ['9M'],\n      leechlife: ['9M'],\n      lightscreen: ['9M'],\n      lunge: ['9M', '9L35'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      poltergeist: ['9M'],\n      pounce: ['9M'],\n      powergem: ['9M'],\n      powerswap: ['9L40'],\n      protect: ['9M'],\n      psybeam: ['9M', '9L15'],\n      psychic: ['9M', '9L50'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M', '9L1'],\n      psyshock: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      revivalblessing: ['9L0'],\n      rocktomb: ['9M'],\n      rollout: ['9L11'],\n      safeguard: ['9L1'],\n      sandattack: ['9L4'],\n      sandstorm: ['9M'],\n      shadowball: ['9M'],\n      skillswap: ['9M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      speedswap: ['9L40'],\n      storedpower: ['9M'],\n      strugglebug: ['9M', '9L7'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L24'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M'],\n      weatherball: ['9M'],\n      xscissor: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'greavard',\n    {\n      allyswitch: ['9E'],\n      bite: ['9L6'],\n      bulldoze: ['9M'],\n      charm: ['9M', '9L46'],\n      confuseray: ['9M'],\n      crunch: ['9M', '9L28'],\n      destinybond: ['9E'],\n      dig: ['9M', '9L16'],\n      disable: ['9E'],\n      doubleedge: ['9M', '9L52'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firefang: ['9M'],\n      growl: ['9L1'],\n      headbutt: ['9L12'],\n      helpinghand: ['9M', '9L37'],\n      hex: ['9M'],\n      howl: ['9E'],\n      icefang: ['9M'],\n      lick: ['9L3'],\n      memento: ['9E'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M', '9L41'],\n      playrough: ['9M', '9L32'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '9L24'],\n      roar: ['9M', '9L9'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      shadowball: ['9M'],\n      shadowsneak: ['9E'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      tailwhip: ['9L6'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderfang: ['9M'],\n      trick: ['9M'],\n      uproar: ['9M'],\n      yawn: ['9E']\n    }\n  ],\n  [\n    'houndstone',\n    {\n      bite: ['9L6'],\n      bodypress: ['9M'],\n      bulldoze: ['9M'],\n      charm: ['9M', '9L51'],\n      confuseray: ['9M'],\n      crunch: ['9M', '9L28'],\n      dig: ['9M', '9L16'],\n      doubleedge: ['9M', '9L58'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firefang: ['9M'],\n      gigaimpact: ['9M'],\n      growl: ['9L1'],\n      headbutt: ['9L12'],\n      helpinghand: ['9M', '9L41'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      icefang: ['9M'],\n      lastrespects: ['9L0'],\n      lick: ['9L3'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M', '9L46'],\n      playrough: ['9M', '9L36'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '9L24'],\n      roar: ['9M', '9L9'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      shadowball: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      tailwhip: ['9L6'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderfang: ['9M'],\n      trick: ['9M'],\n      uproar: ['9M'],\n      willowisp: ['9M']\n    }\n  ],\n  [\n    'flittle',\n    {\n      agility: ['9M', '9L29'],\n      allyswitch: ['9E'],\n      babydolleyes: ['9L8'],\n      batonpass: ['9M'],\n      calmmind: ['9M'],\n      confuseray: ['9M'],\n      confusion: ['9L5'],\n      disarmingvoice: ['9M', '9L11'],\n      endure: ['9M'],\n      facade: ['9M'],\n      foulplay: ['9M'],\n      growl: ['9L1'],\n      helpinghand: ['9M'],\n      hypnosis: ['9E'],\n      lightscreen: ['9M'],\n      mudslap: ['9M'],\n      peck: ['9L1'],\n      pluck: ['9L24'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      psybeam: ['9M', '9L19'],\n      psychic: ['9M'],\n      psychicterrain: ['9M'],\n      psyshock: ['9M'],\n      quickattack: ['9L15'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      roost: ['9E'],\n      sandstorm: ['9M'],\n      seedbomb: ['9M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M'],\n      uproar: ['9M', '9L34'],\n      uturn: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'espathra',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '9L29'],\n      babydolleyes: ['9L8'],\n      batonpass: ['9M'],\n      bodyslam: ['9M'],\n      bravebird: ['9M'],\n      calmmind: ['9M'],\n      confuseray: ['9M'],\n      confusion: ['9L5'],\n      dazzlinggleam: ['9M', '9L43'],\n      disarmingvoice: ['9M', '9L11'],\n      doubleedge: ['9M'],\n      drillpeck: ['9L1'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      expandingforce: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M', '9L1'],\n      flashcannon: ['9M'],\n      foulplay: ['9M'],\n      gigaimpact: ['9M'],\n      growl: ['9L1'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      lastresort: ['9L54'],\n      lightscreen: ['9M'],\n      lowkick: ['9M'],\n      luminacrash: ['9L0'],\n      mudslap: ['9M'],\n      nightshade: ['9M'],\n      peck: ['9L1'],\n      pluck: ['9L24'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      psybeam: ['9M', '9L19'],\n      psychic: ['9M', '9L49'],\n      psychicterrain: ['9M'],\n      psychup: ['9M'],\n      psyshock: ['9M'],\n      quickattack: ['9L15'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      sandstorm: ['9M'],\n      seedbomb: ['9M'],\n      shadowball: ['9M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M'],\n      uproar: ['9M', '9L34'],\n      uturn: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'farigiraf',\n    {\n      agility: ['9M', '9L23'],\n      amnesia: ['9M'],\n      assurance: ['9L10'],\n      astonish: ['9L1'],\n      batonpass: ['9M', '9L41'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      calmmind: ['9M'],\n      chargebeam: ['9M'],\n      confuseray: ['9M'],\n      confusion: ['9L5'],\n      crunch: ['9M', '9L37'],\n      curse: ['9M'],\n      dazzlinggleam: ['9M'],\n      doubleedge: ['9M'],\n      doublehit: ['9L28'],\n      earthquake: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      expandingforce: ['9M'],\n      facade: ['9M'],\n      foulplay: ['9M'],\n      futuresight: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      gravity: ['9M'],\n      growl: ['9L1'],\n      guardswap: ['9L1'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      imprison: ['9M'],\n      ironhead: ['9M'],\n      lightscreen: ['9M'],\n      lowkick: ['9M'],\n      nastyplot: ['9M', '9L46'],\n      nightshade: ['9M'],\n      powerswap: ['9L1'],\n      protect: ['9M'],\n      psybeam: ['9M', '9L19'],\n      psychic: ['9M', '9L50'],\n      psychicfangs: ['9M'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M'],\n      psyshock: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      roar: ['9M'],\n      shadowball: ['9M'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M'],\n      stomp: ['9L14'],\n      stompingtantrum: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderwave: ['9M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M'],\n      twinbeam: ['9L32'],\n      uproar: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'wiglett',\n    {\n      agility: ['9M'],\n      aquajet: ['9L12'],\n      blizzard: ['9M'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      dig: ['9M', '9L28'],\n      earthpower: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      finalgambit: ['9E'],\n      foulplay: ['9M'],\n      headbutt: ['9L24'],\n      helpinghand: ['9M'],\n      hydropump: ['9M'],\n      icebeam: ['9M'],\n      liquidation: ['9M', '9L40'],\n      memento: ['9E'],\n      muddywater: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L4'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      sandattack: ['9L1'],\n      sandstorm: ['9M'],\n      slam: ['9L20'],\n      sleeptalk: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      suckerpunch: ['9L32'],\n      surf: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '9L36'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '9L20'],\n      whirlpool: ['9M'],\n      wrap: ['9L8']\n    }\n  ],\n  [\n    'wugtrio',\n    {\n      agility: ['9M'],\n      aquajet: ['9L12'],\n      blizzard: ['9M'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      dig: ['9M', '9L36'],\n      earthpower: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      foulplay: ['9M'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L24'],\n      helpinghand: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      liquidation: ['9M', '9L54'],\n      muddywater: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L1'],\n      painsplit: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      sandattack: ['9L1'],\n      sandstorm: ['9M'],\n      slam: ['9L16'],\n      sleeptalk: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      suckerpunch: ['9L42'],\n      surf: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '9L48'],\n      tripledive: ['9L30'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '9L20'],\n      whirlpool: ['9M'],\n      wrap: ['9L1']\n    }\n  ],\n  [\n    'dondozo',\n    {\n      aquatail: ['9L40'],\n      avalanche: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L35'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      crunch: ['9M'],\n      curse: ['9M', '9E'],\n      dive: ['9L20'],\n      doubleedge: ['9M', '9L60'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fissure: ['9E'],\n      flail: ['9L10'],\n      gigaimpact: ['9M'],\n      heavyslam: ['9M', '9L55'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icefang: ['9M'],\n      liquidation: ['9M'],\n      nobleroar: ['9L25'],\n      orderup: ['9L50'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M', '9L45'],\n      rest: ['9M', '9L15'],\n      rockslide: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M', '9L15'],\n      soak: ['9L30'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      supersonic: ['9L1'],\n      surf: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9E'],\n      tickle: ['9L5'],\n      waterfall: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M'],\n      wavecrash: ['9L65'],\n      yawn: ['9E'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'veluza',\n    {\n      agility: ['9M'],\n      aquacutter: ['9L25'],\n      aquajet: ['9L1'],\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      chillingwater: ['9M'],\n      crunch: ['9M', '9L50'],\n      doubleedge: ['9M'],\n      drillrun: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      expandingforce: ['9M'],\n      filletaway: ['9L30'],\n      finalgambit: ['9L55'],\n      flipturn: ['9M'],\n      focusenergy: ['9L15'],\n      gigaimpact: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icefang: ['9M'],\n      icywind: ['9M'],\n      liquidation: ['9M', '9L45'],\n      nightslash: ['9L35'],\n      painsplit: ['9M'],\n      pluck: ['9L7'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      psychicfangs: ['9M'],\n      psychicterrain: ['9M'],\n      psychocut: ['9L40'],\n      raindance: ['9M'],\n      recover: ['9E'],\n      rest: ['9M'],\n      scaleshot: ['9M'],\n      slash: ['9L20'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9E'],\n      waterfall: ['9M'],\n      waterpulse: ['9M', '9L11'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'finizen',\n    {\n      acrobatics: ['9M', '9L29'],\n      agility: ['9M'],\n      aquajet: ['9L13'],\n      aquatail: ['9L39'],\n      astonish: ['9L7'],\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      boomburst: ['9E'],\n      bounce: ['9E'],\n      charm: ['9M', '9L25'],\n      chillingwater: ['9M'],\n      counter: ['9E'],\n      disarmingvoice: ['9M'],\n      dive: ['9L21'],\n      doublehit: ['9L17'],\n      drainingkiss: ['9M'],\n      encore: ['9M', '9L34'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fling: ['9M'],\n      focusenergy: ['9L10'],\n      haze: ['9M', '9E'],\n      helpinghand: ['9M'],\n      hydropump: ['9M', '9L50'],\n      icebeam: ['9M'],\n      icywind: ['9M'],\n      liquidation: ['9M'],\n      mist: ['9L44'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      supersonic: ['9L1'],\n      surf: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      tickle: ['9E'],\n      waterfall: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'palafin',\n    {\n      acrobatics: ['9M', '9L29'],\n      agility: ['9M'],\n      aquajet: ['9L13'],\n      aquatail: ['9L39'],\n      astonish: ['9L7'],\n      aurasphere: ['9M'],\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      bulkup: ['9M'],\n      charm: ['9M', '9L25'],\n      chillingwater: ['9M'],\n      closecombat: ['9M'],\n      disarmingvoice: ['9M'],\n      dive: ['9L21'],\n      doublehit: ['9L17'],\n      drainingkiss: ['9M'],\n      drainpunch: ['9M'],\n      encore: ['9M', '9L34'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fling: ['9M'],\n      flipturn: ['9M', '9L0'],\n      focusblast: ['9M'],\n      focusenergy: ['9L10'],\n      focuspunch: ['9M', '9L55'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      hardpress: ['9M'],\n      haze: ['9M', '9S0'],\n      helpinghand: ['9M'],\n      hydropump: ['9M', '9L50'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icebeam: ['9M'],\n      icepunch: ['9M'],\n      icywind: ['9M'],\n      ironhead: ['9M'],\n      jetpunch: ['9L1', '9S0'],\n      liquidation: ['9M'],\n      mist: ['9L44'],\n      outrage: ['9M'],\n      protect: ['9M', '9S0'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      supersonic: ['9L1'],\n      surf: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      waterfall: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M'],\n      wavecrash: ['9L61', '9S0'],\n      whirlpool: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'smoliv',\n    {\n      absorb: ['9L5'],\n      bulletseed: ['9M'],\n      charm: ['9M'],\n      earthpower: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L30'],\n      facade: ['9M'],\n      flail: ['9L16'],\n      gigadrain: ['9M'],\n      grassknot: ['9M'],\n      grassyterrain: ['9M', '9L23'],\n      growth: ['9L7'],\n      helpinghand: ['9M', '9L13'],\n      leafstorm: ['9M'],\n      leechseed: ['9L34'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L20'],\n      memento: ['9E'],\n      protect: ['9M'],\n      razorleaf: ['9L10'],\n      rest: ['9M'],\n      seedbomb: ['9M', '9L27'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      solarblade: ['9M'],\n      strengthsap: ['9E'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      sweetscent: ['9L1'],\n      swift: ['9M'],\n      synthesis: ['9E'],\n      tackle: ['9L1'],\n      terablast: ['9M'],\n      terrainpulse: ['9L38'],\n      trailblaze: ['9M'],\n      weatherball: ['9M', '9E']\n    }\n  ],\n  [\n    'dolliv',\n    {\n      absorb: ['9L5'],\n      bulletseed: ['9M'],\n      charm: ['9M'],\n      earthpower: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L34'],\n      facade: ['9M'],\n      flail: ['9L16'],\n      gigadrain: ['9M'],\n      grassknot: ['9M'],\n      grassyterrain: ['9M', '9L23'],\n      growth: ['9L7'],\n      helpinghand: ['9M', '9L13'],\n      leafstorm: ['9M'],\n      leechseed: ['9L37'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L20'],\n      protect: ['9M'],\n      razorleaf: ['9L10'],\n      rest: ['9M'],\n      seedbomb: ['9M', '9L29'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      solarblade: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      sweetscent: ['9L1'],\n      swift: ['9M'],\n      tackle: ['9L1'],\n      terablast: ['9M'],\n      terrainpulse: ['9L42'],\n      trailblaze: ['9M'],\n      weatherball: ['9M']\n    }\n  ],\n  [\n    'arboliva',\n    {\n      absorb: ['9L5'],\n      alluringvoice: ['9M'],\n      bulletseed: ['9M'],\n      charm: ['9M'],\n      dazzlinggleam: ['9M'],\n      earthpower: ['9M'],\n      encore: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L34'],\n      facade: ['9M'],\n      flail: ['9L16'],\n      fling: ['9M'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyterrain: ['9M', '9L23'],\n      growth: ['9L7'],\n      helpinghand: ['9M', '9L13'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      leafstorm: ['9M'],\n      leechseed: ['9L39'],\n      lightscreen: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L20'],\n      metronome: ['9M'],\n      mirrorcoat: ['9L1'],\n      petalblizzard: ['9M', '9L52'],\n      petaldance: ['9L58'],\n      pollenpuff: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      razorleaf: ['9L10'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      safeguard: ['9L1'],\n      seedbomb: ['9M', '9L29'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      solarblade: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      sweetscent: ['9L1'],\n      swift: ['9M'],\n      tackle: ['9L1'],\n      terablast: ['9M'],\n      terrainpulse: ['9L46'],\n      trailblaze: ['9M'],\n      weatherball: ['9M']\n    }\n  ],\n  [\n    'capsakid',\n    {\n      bite: ['9L4'],\n      bulletseed: ['9M', '9L21'],\n      crunch: ['9M', '9L38'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      gigadrain: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L10'],\n      headbutt: ['9L24'],\n      helpinghand: ['9M'],\n      ingrain: ['9E'],\n      leafage: ['9L1'],\n      leafstorm: ['9M'],\n      leechseed: ['9E'],\n      leer: ['9L1'],\n      magicalleaf: ['9M'],\n      protect: ['9M'],\n      ragepowder: ['9E'],\n      razorleaf: ['9L13'],\n      rest: ['9M'],\n      rollout: ['9E'],\n      sandstorm: ['9M'],\n      seedbomb: ['9M', '9L44'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M', '9L48'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L17'],\n      superfang: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      worryseed: ['9E'],\n      zenheadbutt: ['9M', '9L28']\n    }\n  ],\n  [\n    'scovillain',\n    {\n      bite: ['9L4'],\n      bulletseed: ['9M', '9L21'],\n      burningjealousy: ['9M'],\n      crunch: ['9M', '9L38'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firefang: ['9M', '9L1'],\n      flamethrower: ['9M', '9L0'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L10'],\n      headbutt: ['9L24'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      lashout: ['9M'],\n      leafage: ['9L1'],\n      leafstorm: ['9M'],\n      leer: ['9L1'],\n      magicalleaf: ['9M'],\n      overheat: ['9M', '9L48'],\n      protect: ['9M'],\n      razorleaf: ['9L13'],\n      rest: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      seedbomb: ['9M', '9L44'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M', '9L48'],\n      spicyextract: ['9L0'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L17'],\n      superfang: ['9M'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M'],\n      willowisp: ['9M'],\n      worryseed: ['9L33'],\n      zenheadbutt: ['9M', '9L28']\n    }\n  ],\n  [\n    'tadbulb',\n    {\n      acidspray: ['9M'],\n      charge: ['9M', '9L17'],\n      chargebeam: ['9M'],\n      chillingwater: ['9M'],\n      confuseray: ['9M'],\n      discharge: ['9L32'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '9L40'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      flail: ['9L25'],\n      hypervoice: ['9M'],\n      lightscreen: ['9M'],\n      muddywater: ['9M', '9E'],\n      mudshot: ['9M', '9L24'],\n      mudslap: ['9M', '9L1'],\n      paraboliccharge: ['9E'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      sleeptalk: ['9M'],\n      soak: ['9E'],\n      spark: ['9L21'],\n      substitute: ['9M'],\n      suckerpunch: ['9L45'],\n      swift: ['9M'],\n      tackle: ['9L1'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thundershock: ['9L7'],\n      thunderwave: ['9M'],\n      voltswitch: ['9M'],\n      watergun: ['9L11'],\n      waterpulse: ['9M'],\n      weatherball: ['9M', '9L36'],\n      wildcharge: ['9M'],\n      zapcannon: ['9L50']\n    }\n  ],\n  [\n    'bellibolt',\n    {\n      acidspray: ['9M'],\n      charge: ['9M', '9L17'],\n      chargebeam: ['9M'],\n      chillingwater: ['9M'],\n      confuseray: ['9M'],\n      discharge: ['9L32'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '9L40'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      flail: ['9L25'],\n      gigaimpact: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      lightscreen: ['9M'],\n      muddywater: ['9M'],\n      mudshot: ['9M', '9L24'],\n      mudslap: ['9M', '9L1'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      slackoff: ['9L1'],\n      sleeptalk: ['9M'],\n      spark: ['9L21'],\n      substitute: ['9M'],\n      suckerpunch: ['9L45'],\n      supercellslam: ['9M'],\n      swift: ['9M'],\n      tackle: ['9L1'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thundershock: ['9L7'],\n      thunderwave: ['9M'],\n      toxic: ['9M'],\n      voltswitch: ['9M'],\n      watergun: ['9L11'],\n      waterpulse: ['9M'],\n      weatherball: ['9M', '9L36'],\n      wildcharge: ['9M'],\n      zapcannon: ['9L50']\n    }\n  ],\n  [\n    'varoom',\n    {\n      acidspray: ['9M'],\n      assurance: ['9L10'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      curse: ['9M'],\n      doubleedge: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flashcannon: ['9M'],\n      gunkshot: ['9M', '9L50'],\n      gyroball: ['9M', '9L17'],\n      haze: ['9M', '9E'],\n      headbutt: ['9L21'],\n      irondefense: ['9M'],\n      ironhead: ['9M', '9L28'],\n      lick: ['9L1'],\n      metalsound: ['9M'],\n      partingshot: ['9E'],\n      poisongas: ['9L1'],\n      poisonjab: ['9M', '9L36'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L25'],\n      selfdestruct: ['9E'],\n      sleeptalk: ['9M'],\n      sludge: ['9L13'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      smog: ['9L4'],\n      spinout: ['9L46'],\n      steelbeam: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swagger: ['9L32'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L7'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      torment: ['9E'],\n      toxic: ['9M', '9E'],\n      toxicspikes: ['9M'],\n      uproar: ['9M', '9L41'],\n      venoshock: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'revavroom',\n    {\n      acidspray: ['9M'],\n      assurance: ['9L10'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      curse: ['9M'],\n      doubleedge: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M', '9L58'],\n      gyroball: ['9M', '9L17'],\n      hardpress: ['9M'],\n      haze: ['9M'],\n      headbutt: ['9L21'],\n      heavyslam: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M'],\n      ironhead: ['9M', '9L28', '9S0'],\n      lashout: ['9M'],\n      lick: ['9L1'],\n      magnetrise: ['9L1'],\n      metalsound: ['9M'],\n      overheat: ['9M'],\n      poisongas: ['9L1'],\n      poisonjab: ['9M', '9L36', '9S0'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L25'],\n      shiftgear: ['9L0'],\n      sleeptalk: ['9M'],\n      sludge: ['9L13'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      smog: ['9L4'],\n      spinout: ['9L52'],\n      steelbeam: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swagger: ['9L32', '9S0'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L7'],\n      temperflare: ['9M'],\n      terablast: ['9M', '9S0'],\n      thief: ['9M'],\n      toxic: ['9M'],\n      toxicspikes: ['9M'],\n      uproar: ['9M', '9L46'],\n      venoshock: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'orthworm',\n    {\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '9L16'],\n      coil: ['9E'],\n      curse: ['9M', '9E'],\n      dig: ['9M', '9L30'],\n      doubleedge: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L47'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      harden: ['9L1'],\n      headbutt: ['9S0'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M', '9L38'],\n      ironhead: ['9M', '9L21'],\n      irontail: ['9L43', '9S0'],\n      metalburst: ['9E'],\n      metalsound: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L7'],\n      protect: ['9M'],\n      rest: ['9M'],\n      rockblast: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M', '9L34', '9S0'],\n      sandtomb: ['9M'],\n      shedtail: ['9L52'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M', '9L12'],\n      spikes: ['9M'],\n      stealthrock: ['9M'],\n      steelbeam: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L26'],\n      terablast: ['9M'],\n      wrap: ['9L1', '9S0']\n    }\n  ],\n  [\n    'tandemaus',\n    {\n      aerialace: ['9M'],\n      afteryou: ['9E'],\n      agility: ['9M'],\n      babydolleyes: ['9L1', '9S0'],\n      batonpass: ['9M', '9E'],\n      beatup: ['9L37'],\n      bite: ['9E'],\n      bulletseed: ['9M', '9L18'],\n      celebrate: ['9S0'],\n      charm: ['9M', '9L33'],\n      copycat: ['9L41'],\n      crunch: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doublehit: ['9L14'],\n      echoedvoice: ['9L5', '9S0'],\n      encore: ['9M', '9L22'],\n      endure: ['9M'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      feint: ['9E'],\n      grassknot: ['9M'],\n      helpinghand: ['9M', '9L8'],\n      hypervoice: ['9M', '9L30'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      playrough: ['9M', '9L26'],\n      populationbomb: ['9L46'],\n      pound: ['9L1'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      seedbomb: ['9M'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superfang: ['9M', '9L11'],\n      swift: ['9M'],\n      switcheroo: ['9E'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M', '9S0'],\n      thief: ['9M'],\n      thunderwave: ['9M'],\n      tickle: ['9E'],\n      uturn: ['9M'],\n      waterpulse: ['9M']\n    }\n  ],\n  [\n    'maushold',\n    {\n      aerialace: ['9M'],\n      agility: ['9M'],\n      babydolleyes: ['9L1'],\n      batonpass: ['9M'],\n      beatup: ['9L41'],\n      bulletseed: ['9M', '9L18'],\n      charm: ['9M', '9L37'],\n      chillingwater: ['9M'],\n      copycat: ['9L46'],\n      crunch: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      doublehit: ['9L14'],\n      echoedvoice: ['9L5'],\n      encore: ['9M', '9L22'],\n      endure: ['9M'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      followme: ['9L1'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      helpinghand: ['9M', '9L8'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M', '9L33'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      playrough: ['9M', '9L29'],\n      populationbomb: ['9L53'],\n      pound: ['9L1'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      seedbomb: ['9M'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superfang: ['9M', '9L11'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderwave: ['9M'],\n      tidyup: ['9L1'],\n      trailblaze: ['9M'],\n      uturn: ['9M'],\n      waterpulse: ['9M']\n    }\n  ],\n  [\n    'cetoddle',\n    {\n      amnesia: ['9M', '9L40'],\n      avalanche: ['9M', '9L27'],\n      bellydrum: ['9E'],\n      blizzard: ['9M', '9L53'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L36'],\n      bounce: ['9L31'],\n      bulldoze: ['9M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      curse: ['9M'],\n      doubleedge: ['9M', '9L49'],\n      earthquake: ['9M'],\n      echoedvoice: ['9L9'],\n      endure: ['9M'],\n      entrainment: ['9E'],\n      facade: ['9M'],\n      flail: ['9L25'],\n      growl: ['9L6'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icebeam: ['9M'],\n      icefang: ['9M'],\n      iceshard: ['9L12'],\n      icespinner: ['9M', '9L44'],\n      iciclecrash: ['9E'],\n      iciclespear: ['9M'],\n      icywind: ['9M'],\n      knockoff: ['9M'],\n      liquidation: ['9M'],\n      playrough: ['9M'],\n      powdersnow: ['9L1'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '9L15'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      superpower: ['9E'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L19'],\n      terablast: ['9M'],\n      waterpulse: ['9M'],\n      yawn: ['9E']\n    }\n  ],\n  [\n    'cetitan',\n    {\n      amnesia: ['9M', '9L40', '9S0'],\n      avalanche: ['9M', '9L27'],\n      blizzard: ['9M', '9L53'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L36', '9S0'],\n      bounce: ['9L31'],\n      bulldoze: ['9M'],\n      charm: ['9M'],\n      chillingwater: ['9M'],\n      curse: ['9M'],\n      doubleedge: ['9M', '9L49', '9S0'],\n      earthquake: ['9M'],\n      echoedvoice: ['9L9'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flail: ['9L25'],\n      gigaimpact: ['9M'],\n      growl: ['9L6'],\n      hardpress: ['9M'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icebeam: ['9M'],\n      icefang: ['9M'],\n      icepunch: ['9M'],\n      iceshard: ['9L12'],\n      icespinner: ['9M', '9L44', '9S0'],\n      iciclespear: ['9M'],\n      icywind: ['9M'],\n      knockoff: ['9M'],\n      liquidation: ['9M'],\n      playrough: ['9M'],\n      powdersnow: ['9L1'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M', '9L15'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L19'],\n      terablast: ['9M'],\n      waterpulse: ['9M']\n    }\n  ],\n  [\n    'frigibax',\n    {\n      aquatail: ['9E'],\n      avalanche: ['9M'],\n      bite: ['9L24'],\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      crunch: ['9M', '9L44'],\n      dig: ['9M'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L12'],\n      dragonclaw: ['9M', '9L32'],\n      dragonpulse: ['9M'],\n      dragonrush: ['9E'],\n      dragontail: ['9M', '9L1'],\n      endure: ['9M'],\n      facade: ['9M'],\n      focusenergy: ['9L18'],\n      freezedry: ['9E'],\n      helpinghand: ['9M'],\n      icebeam: ['9M', '9L40'],\n      icefang: ['9M', '9L29'],\n      iciclecrash: ['9L48'],\n      iciclespear: ['9M', '9E'],\n      icywind: ['9M', '9L6'],\n      leer: ['9L1'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      substitute: ['9M'],\n      swordsdance: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L36'],\n      terablast: ['9M']\n    }\n  ],\n  [\n    'arctibax',\n    {\n      aerialace: ['9M'],\n      avalanche: ['9M'],\n      bite: ['9L24'],\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      crunch: ['9M', '9L50'],\n      dig: ['9M'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L12'],\n      dragonclaw: ['9M'],\n      dragonpulse: ['9M'],\n      dragontail: ['9M', '9L1'],\n      endure: ['9M'],\n      facade: ['9M'],\n      focusenergy: ['9L18'],\n      helpinghand: ['9M'],\n      icebeam: ['9M', '9L45'],\n      icefang: ['9M', '9L29'],\n      iciclecrash: ['9L55'],\n      iciclespear: ['9M'],\n      icywind: ['9M', '9L6'],\n      ironhead: ['9M'],\n      leer: ['9L1'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      substitute: ['9M'],\n      swordsdance: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L40'],\n      terablast: ['9M']\n    }\n  ],\n  [\n    'baxcalibur',\n    {\n      aerialace: ['9M'],\n      avalanche: ['9M'],\n      bite: ['9L24'],\n      blizzard: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '9L1'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      crunch: ['9M', '9L55'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L12'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L35'],\n      dragondance: ['9M'],\n      dragonpulse: ['9M'],\n      dragontail: ['9M', '9L1'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      focusenergy: ['9L18'],\n      gigaimpact: ['9M'],\n      glaiverush: ['9L0', '9S0'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '9L48'],\n      icefang: ['9M', '9L29'],\n      iceshard: ['9L1', '9S0'],\n      iciclecrash: ['9L62'],\n      iciclespear: ['9M', '9S0'],\n      icywind: ['9M', '9L6'],\n      ironhead: ['9M'],\n      leer: ['9L1'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scaleshot: ['9M', '9S0'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M', '9L1'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      swordsdance: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L42'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'tatsugiri',\n    {\n      batonpass: ['9M', '9E'],\n      chillingwater: ['9M'],\n      counter: ['9E'],\n      dracometeor: ['9M'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M'],\n      dragonpulse: ['9M', '9L52', '9S0'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      harden: ['9L6'],\n      helpinghand: ['9M', '9L12'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icywind: ['9M', '9S0'],\n      lunge: ['9M'],\n      memento: ['9L34'],\n      mirrorcoat: ['9L47'],\n      muddywater: ['9M', '9L39', '9S0'],\n      nastyplot: ['9M', '9L43'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rapidspin: ['9E'],\n      rest: ['9M'],\n      sleeptalk: ['9M'],\n      soak: ['9L23'],\n      splash: ['9L1'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L28', '9S0'],\n      terablast: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '9L17'],\n      whirlpool: ['9M']\n    }\n  ],\n  [\n    'tatsugiristretchy',\n    {\n      batonpass: ['9M', '9E'],\n      celebrate: ['9S0'],\n      chillingwater: ['9M'],\n      counter: ['9E'],\n      dracometeor: ['9M', '9S0'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M'],\n      dragonpulse: ['9M', '9L52'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      harden: ['9L6'],\n      helpinghand: ['9M', '9L12', '9S0'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icywind: ['9M'],\n      lunge: ['9M'],\n      memento: ['9L34'],\n      mirrorcoat: ['9L47'],\n      muddywater: ['9M', '9L39', '9S0'],\n      nastyplot: ['9M', '9L43'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rapidspin: ['9E'],\n      rest: ['9M'],\n      sleeptalk: ['9M'],\n      soak: ['9L23'],\n      splash: ['9L1'],\n      substitute: ['9M'],\n      surf: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L28'],\n      terablast: ['9M'],\n      watergun: ['9L1'],\n      waterpulse: ['9M', '9L17'],\n      whirlpool: ['9M']\n    }\n  ],\n  [\n    'cyclizar',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M'],\n      aquatail: ['9E'],\n      bite: ['9L23'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '9L14'],\n      crunch: ['9M'],\n      doubleedge: ['9M', '9L51'],\n      dracometeor: ['9M'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L36'],\n      dragonpulse: ['9M', '9L45'],\n      dragonrush: ['9L57'],\n      dragontail: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firefang: ['9M'],\n      gigaimpact: ['9M'],\n      growl: ['9L1'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icespinner: ['9M'],\n      ironhead: ['9M'],\n      irontail: ['9E'],\n      knockoff: ['9M', '9E'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      outrage: ['9M'],\n      overheat: ['9M'],\n      powerwhip: ['9E'],\n      protect: ['9M'],\n      quickattack: ['9L18'],\n      raindance: ['9M'],\n      rapidspin: ['9L7'],\n      rest: ['9M'],\n      scaleshot: ['9M'],\n      shedtail: ['9L31'],\n      shiftgear: ['9L40'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L11'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderbolt: ['9M'],\n      thunderfang: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      uturn: ['9M', '9L27'],\n      wildcharge: ['9M']\n    }\n  ],\n  [\n    'pawmi',\n    {\n      agility: ['9M', '9L40'],\n      batonpass: ['9M'],\n      bite: ['9L19'],\n      celebrate: ['9S0'],\n      charge: ['9M', '9L8'],\n      chargebeam: ['9M'],\n      charm: ['9M'],\n      crunch: ['9M'],\n      dig: ['9M', '9L15'],\n      discharge: ['9L38'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      encore: ['9M'],\n      endure: ['9M'],\n      entrainment: ['9L31'],\n      facade: ['9M'],\n      fakeout: ['9E'],\n      fling: ['9M'],\n      growl: ['9L1', '9S0'],\n      helpinghand: ['9M'],\n      machpunch: ['9E'],\n      metalclaw: ['9M'],\n      nuzzle: ['9L12'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      quickattack: ['9L6'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scratch: ['9L1'],\n      slam: ['9L35'],\n      sleeptalk: ['9M'],\n      spark: ['9L23'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superfang: ['9M'],\n      sweetkiss: ['9E'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M', '9S0'],\n      thief: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderfang: ['9M'],\n      thundershock: ['9L3', '9S0'],\n      thunderwave: ['9M', '9L27'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M', '9L44'],\n      wish: ['9E']\n    }\n  ],\n  [\n    'pawmo',\n    {\n      agility: ['9M', '9L46'],\n      armthrust: ['9L0'],\n      batonpass: ['9M'],\n      bite: ['9L19'],\n      charge: ['9M', '9L8'],\n      chargebeam: ['9M'],\n      charm: ['9M'],\n      coaching: ['9M'],\n      crunch: ['9M'],\n      dig: ['9M', '9L15'],\n      discharge: ['9L42'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      encore: ['9M'],\n      endure: ['9M'],\n      entrainment: ['9L38'],\n      facade: ['9M'],\n      fling: ['9M'],\n      focuspunch: ['9M'],\n      growl: ['9L1'],\n      helpinghand: ['9M'],\n      knockoff: ['9M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      metalclaw: ['9M'],\n      nuzzle: ['9L12'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      quickattack: ['9L6'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scratch: ['9L1'],\n      slam: ['9L32'],\n      sleeptalk: ['9M'],\n      spark: ['9L23'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superfang: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderfang: ['9M'],\n      thunderpunch: ['9M'],\n      thundershock: ['9L3'],\n      thunderwave: ['9M', '9L27'],\n      upperhand: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M', '9L52']\n    }\n  ],\n  [\n    'pawmot',\n    {\n      agility: ['9M', '9L54'],\n      armthrust: ['9L25'],\n      batonpass: ['9M'],\n      bite: ['9L19'],\n      bodypress: ['9M'],\n      brickbreak: ['9M'],\n      bulkup: ['9M'],\n      charge: ['9M', '9L8'],\n      chargebeam: ['9M'],\n      charm: ['9M'],\n      closecombat: ['9M', '9L44'],\n      coaching: ['9M'],\n      crunch: ['9M'],\n      dig: ['9M', '9L15'],\n      discharge: ['9L49', '9S0'],\n      doubleedge: ['9M'],\n      doubleshock: ['9L60', '9S0'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      encore: ['9M'],\n      endure: ['9M'],\n      entrainment: ['9L39'],\n      facade: ['9M'],\n      firepunch: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      growl: ['9L1'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      icepunch: ['9M'],\n      knockoff: ['9M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      metalclaw: ['9M'],\n      metronome: ['9M'],\n      nuzzle: ['9L12', '9S0'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      quickattack: ['9L6', '9S0'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      revivalblessing: ['9L0'],\n      rocktomb: ['9M'],\n      scratch: ['9L1'],\n      seedbomb: ['9M'],\n      slam: ['9L33'],\n      sleeptalk: ['9M'],\n      spark: ['9L23'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      superfang: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderfang: ['9M'],\n      thunderpunch: ['9M'],\n      thundershock: ['9L3'],\n      thunderwave: ['9M', '9L29'],\n      upperhand: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M', '9L1']\n    }\n  ],\n  [\n    'wattrel',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M', '9L32'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      bravebird: ['9M'],\n      charge: ['9M'],\n      chargebeam: ['9M'],\n      discharge: ['9L43'],\n      dualwingbeat: ['9M', '9L27'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M', '9E'],\n      fly: ['9M'],\n      growl: ['9L1'],\n      hurricane: ['9M'],\n      peck: ['9L1'],\n      pluck: ['9L11'],\n      protect: ['9M'],\n      quickattack: ['9L7'],\n      rest: ['9M'],\n      roost: ['9L23'],\n      sleeptalk: ['9M'],\n      spark: ['9L15'],\n      spitup: ['9E'],\n      stockpile: ['9E'],\n      substitute: ['9M'],\n      swallow: ['9E'],\n      swift: ['9M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thundershock: ['9L4'],\n      thunderwave: ['9M'],\n      uproar: ['9M', '9L19'],\n      uturn: ['9M'],\n      voltswitch: ['9M', '9L37'],\n      weatherball: ['9M', '9E'],\n      wildcharge: ['9M']\n    }\n  ],\n  [\n    'kilowattrel',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M', '9L36'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      bravebird: ['9M'],\n      charge: ['9M'],\n      chargebeam: ['9M'],\n      discharge: ['9L48'],\n      dualwingbeat: ['9M', '9L30'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M', '9L0'],\n      electroweb: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M'],\n      fly: ['9M'],\n      gigaimpact: ['9M'],\n      growl: ['9L1'],\n      hurricane: ['9M', '9L55'],\n      hyperbeam: ['9M'],\n      peck: ['9L1'],\n      pluck: ['9L11'],\n      protect: ['9M'],\n      quickattack: ['9L7'],\n      rest: ['9M'],\n      roost: ['9L24'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      spark: ['9L15'],\n      substitute: ['9M'],\n      supercellslam: ['9M'],\n      swift: ['9M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thundershock: ['9L4'],\n      thunderwave: ['9M'],\n      uproar: ['9M', '9L19'],\n      uturn: ['9M'],\n      voltswitch: ['9M', '9L43'],\n      weatherball: ['9M'],\n      wildcharge: ['9M']\n    }\n  ],\n  [\n    'bombirdier',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      bravebird: ['9M'],\n      curse: ['9M'],\n      darkpulse: ['9M'],\n      drillrun: ['9M'],\n      dualwingbeat: ['9M', '9L42'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M', '9E'],\n      fly: ['9M'],\n      foulplay: ['9M'],\n      gigaimpact: ['9M'],\n      heatwave: ['9M'],\n      honeclaws: ['9L1'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icywind: ['9M'],\n      knockoff: ['9M', '9L53'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      memento: ['9L1'],\n      nastyplot: ['9M'],\n      partingshot: ['9L60'],\n      payback: ['9L36'],\n      peck: ['9L1'],\n      pluck: ['9L20', '9S0'],\n      powergem: ['9M'],\n      powertrip: ['9E'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '9L47'],\n      rockthrow: ['9L11', '9S0'],\n      rocktomb: ['9M', '9L29'],\n      roost: ['9E'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      skyattack: ['9E'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      stealthrock: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      suckerpunch: ['9E'],\n      sunnyday: ['9M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '9L7'],\n      torment: ['9L24', '9S0'],\n      uturn: ['9M'],\n      whirlwind: ['9L16'],\n      wingattack: ['9L1', '9S0']\n    }\n  ],\n  [\n    'squawkabilly',\n    {\n      aerialace: ['9M', '9L13'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      bravebird: ['9M', '9L42'],\n      copycat: ['9L27'],\n      doubleedge: ['9M', '9E'],\n      dualwingbeat: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M', '9L34'],\n      faketears: ['9M'],\n      featherdance: ['9M'],\n      finalgambit: ['9E'],\n      flatter: ['9E'],\n      fly: ['9M', '9L30'],\n      foulplay: ['9M'],\n      furyattack: ['9L17'],\n      gigaimpact: ['9M'],\n      growl: ['9L1'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      lashout: ['9M'],\n      mimic: ['9L1'],\n      partingshot: ['9E'],\n      peck: ['9L1'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      quickattack: ['9L6'],\n      rest: ['9M'],\n      reversal: ['9M', '9L52'],\n      roost: ['9L47'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swagger: ['9L38'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L20'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      torment: ['9L10'],\n      uproar: ['9M', '9L24'],\n      uturn: ['9M']\n    }\n  ],\n  [\n    'flamigo',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L35'],\n      bravebird: ['9M', '9L54'],\n      bulkup: ['9M'],\n      chillingwater: ['9M'],\n      closecombat: ['9M'],\n      copycat: ['9L1'],\n      detect: ['9L9'],\n      doublekick: ['9L5'],\n      doubleteam: ['9E'],\n      dualwingbeat: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      featherdance: ['9M'],\n      feint: ['9L21'],\n      fling: ['9M'],\n      fly: ['9M'],\n      focusenergy: ['9L15'],\n      gigaimpact: ['9M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M'],\n      liquidation: ['9M'],\n      lowkick: ['9M', '9L18'],\n      lowsweep: ['9M'],\n      lunge: ['9M'],\n      megakick: ['9L39'],\n      payback: ['9L27'],\n      peck: ['9L1'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      quickguard: ['9E'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      roost: ['9L31'],\n      skyattack: ['9E'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      swordsdance: ['9M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M', '9L48'],\n      upperhand: ['9M'],\n      uturn: ['9M'],\n      waterpulse: ['9M'],\n      wideguard: ['9L44'],\n      wingattack: ['9L12']\n    }\n  ],\n  [\n    'klawf',\n    {\n      ancientpower: ['9E'],\n      block: ['9S0'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      crabhammer: ['9E'],\n      dig: ['9M'],\n      earthpower: ['9M'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flail: ['9L37'],\n      fling: ['9M'],\n      gigaimpact: ['9M'],\n      guillotine: ['9L56'],\n      harden: ['9L6'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M', '9L47'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M', '9L51'],\n      knockoff: ['9M', '9E'],\n      metalclaw: ['9M', '9L17'],\n      meteorbeam: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      powergem: ['9M'],\n      protect: ['9M', '9L21'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      rockblast: ['9M', '9L24'],\n      rockslide: ['9M', '9L42'],\n      rocksmash: ['9L9', '9S0'],\n      rockthrow: ['9L1'],\n      rocktomb: ['9M', '9L13', '9S0'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      shadowclaw: ['9M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swordsdance: ['9M', '9L33'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      trailblaze: ['9M'],\n      visegrip: ['9L1', '9S0'],\n      xscissor: ['9M', '9L29']\n    }\n  ],\n  [\n    'nacli',\n    {\n      ancientpower: ['9E'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      curse: ['9M', '9E'],\n      dig: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L40'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fissure: ['9E'],\n      flashcannon: ['9M'],\n      harden: ['9L1'],\n      headbutt: ['9L16'],\n      heavyslam: ['9M', '9L35'],\n      helpinghand: ['9M'],\n      irondefense: ['9M', '9L20'],\n      ironhead: ['9M'],\n      meteorbeam: ['9M'],\n      mudshot: ['9M', '9L7'],\n      powergem: ['9M', '9E'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      recover: ['9L25'],\n      rest: ['9M'],\n      rockpolish: ['9L13'],\n      rockslide: ['9M', '9L30'],\n      rockthrow: ['9L5'],\n      sandstorm: ['9M'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M', '9L10'],\n      stealthrock: ['9M', '9L33'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '9L45'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'naclstack',\n    {\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      curse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L45'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      harden: ['9L1'],\n      headbutt: ['9L16'],\n      heavyslam: ['9M', '9L41'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M', '9L20'],\n      ironhead: ['9M'],\n      meteorbeam: ['9M'],\n      mudshot: ['9M', '9L7'],\n      powergem: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      recover: ['9L30'],\n      rest: ['9M'],\n      rockpolish: ['9L13'],\n      rockslide: ['9M', '9L34'],\n      rockthrow: ['9L5'],\n      saltcure: ['9L0'],\n      sandstorm: ['9M'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M', '9L10'],\n      stealthrock: ['9M', '9L38'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '9L51'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'garganacl',\n    {\n      avalanche: ['9M'],\n      block: ['9L1'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      curse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L49'],\n      endure: ['9M'],\n      explosion: ['9L60'],\n      facade: ['9M'],\n      firepunch: ['9M'],\n      flashcannon: ['9M'],\n      fling: ['9M'],\n      focuspunch: ['9M'],\n      gigaimpact: ['9M'],\n      gravity: ['9M'],\n      hammerarm: ['9L0'],\n      harden: ['9L1'],\n      hardpress: ['9M'],\n      headbutt: ['9L16'],\n      heavyslam: ['9M', '9L44'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      icepunch: ['9M'],\n      irondefense: ['9M'],\n      ironhead: ['9M'],\n      meteorbeam: ['9M'],\n      mudshot: ['9M', '9L7'],\n      powergem: ['9M'],\n      protect: ['9M', '9S0'],\n      raindance: ['9M'],\n      recover: ['9L30', '9S0'],\n      rest: ['9M'],\n      rockblast: ['9M', '9L1'],\n      rockpolish: ['9L13'],\n      rockslide: ['9M', '9L34'],\n      rockthrow: ['9L5'],\n      rocktomb: ['9M', '9L10'],\n      saltcure: ['9L24', '9S0'],\n      sandstorm: ['9M'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      stealthrock: ['9M', '9L40'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '9L54'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderpunch: ['9M'],\n      wideguard: ['9L1', '9S0'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'glimmet',\n    {\n      acidarmor: ['9L41'],\n      acidspray: ['9M', '9L7'],\n      ancientpower: ['9L11'],\n      confuseray: ['9M'],\n      dazzlinggleam: ['9M'],\n      endure: ['9M'],\n      explosion: ['9E'],\n      facade: ['9M'],\n      gunkshot: ['9M'],\n      harden: ['9L1'],\n      irondefense: ['9M'],\n      lightscreen: ['9M'],\n      memento: ['9E'],\n      meteorbeam: ['9M'],\n      mudshot: ['9M'],\n      powergem: ['9M', '9L37'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      rockblast: ['9M'],\n      rockpolish: ['9L15'],\n      rockslide: ['9M', '9L33'],\n      rockthrow: ['9L1'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M', '9L26'],\n      sandtomb: ['9M'],\n      selfdestruct: ['9L29'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M', '9L46'],\n      smackdown: ['9M', '9L1'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '9L18'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9E'],\n      toxicspikes: ['9M'],\n      venoshock: ['9M', '9L22']\n    }\n  ],\n  [\n    'glimmora',\n    {\n      acidarmor: ['9L44'],\n      acidspray: ['9M', '9L7'],\n      ancientpower: ['9L11'],\n      confuseray: ['9M'],\n      dazzlinggleam: ['9M'],\n      earthpower: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      harden: ['9L1'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M'],\n      lightscreen: ['9M'],\n      meteorbeam: ['9M'],\n      mortalspin: ['9L0'],\n      mudshot: ['9M'],\n      powergem: ['9M', '9L39'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      rockblast: ['9M'],\n      rockpolish: ['9L15'],\n      rockslide: ['9M', '9L33'],\n      rockthrow: ['9L1'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M', '9L26'],\n      sandtomb: ['9M'],\n      selfdestruct: ['9L29'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M', '9L50'],\n      smackdown: ['9M', '9L1'],\n      solarbeam: ['9M'],\n      spikes: ['9M'],\n      spikyshield: ['9L1'],\n      stealthrock: ['9M', '9L18'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M'],\n      toxicspikes: ['9M', '9L1'],\n      venoshock: ['9M', '9L22']\n    }\n  ],\n  [\n    'shroodle',\n    {\n      acidspray: ['9M', '9L5'],\n      acrobatics: ['9M'],\n      batonpass: ['9M'],\n      bite: ['9L8'],\n      copycat: ['9E'],\n      crosspoison: ['9E'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flatter: ['9L18'],\n      fling: ['9M'],\n      foulplay: ['9M'],\n      furyswipes: ['9L8'],\n      gunkshot: ['9M', '9L45'],\n      helpinghand: ['9M'],\n      knockoff: ['9M', '9L40'],\n      leer: ['9L1'],\n      metronome: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      nastyplot: ['9M'],\n      partingshot: ['9E'],\n      poisonfang: ['9L14'],\n      poisonjab: ['9M', '9L29'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scratch: ['9L1'],\n      skittersmack: ['9M'],\n      slash: ['9L21'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      substitute: ['9M', '9L36'],\n      sunnyday: ['9M'],\n      superfang: ['9M', '9E'],\n      swagger: ['9E'],\n      switcheroo: ['9L11'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L33'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      toxic: ['9M', '9E'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L25'],\n      venoshock: ['9M']\n    }\n  ],\n  [\n    'grafaiai',\n    {\n      acidspray: ['9M', '9L5'],\n      acrobatics: ['9M'],\n      batonpass: ['9M'],\n      dig: ['9M'],\n      doodle: ['9L0'],\n      doubleedge: ['9M'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flatter: ['9L18'],\n      fling: ['9M'],\n      foulplay: ['9M'],\n      furyswipes: ['9L8'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M', '9L51'],\n      helpinghand: ['9M'],\n      knockoff: ['9M', '9L45'],\n      leer: ['9L1'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      metronome: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      nastyplot: ['9M'],\n      poisonfang: ['9L14'],\n      poisonjab: ['9M', '9L33'],\n      poisontail: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      scaryface: ['9M'],\n      scratch: ['9L1'],\n      shadowclaw: ['9M'],\n      skittersmack: ['9M'],\n      slash: ['9L21'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      substitute: ['9M', '9L40'],\n      sunnyday: ['9M'],\n      superfang: ['9M'],\n      switcheroo: ['9L11'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L37'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      toxic: ['9M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '9L25'],\n      venoshock: ['9M'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'fidough',\n    {\n      agility: ['9M'],\n      alluringvoice: ['9M'],\n      babydolleyes: ['9L15'],\n      batonpass: ['9M', '9L26'],\n      bite: ['9L11'],\n      bodyslam: ['9M'],\n      charm: ['9M', '9L36', '9S0'],\n      copycat: ['9E'],\n      covet: ['9L8'],\n      crunch: ['9M', '9L40'],\n      dazzlinggleam: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L33'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firefang: ['9M'],\n      growl: ['9L1'],\n      helpinghand: ['9M'],\n      howl: ['9E'],\n      icefang: ['9M'],\n      lastresort: ['9L45'],\n      lick: ['9L3', '9S0'],\n      mistyterrain: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      playrough: ['9M', '9L18', '9S0'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L30'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      sweetscent: ['9E'],\n      tackle: ['9L1'],\n      tailwhip: ['9L6', '9S0'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      trailblaze: ['9M'],\n      wish: ['9E'],\n      workup: ['9L22'],\n      yawn: ['9E']\n    }\n  ],\n  [\n    'dachsbun',\n    {\n      agility: ['9M'],\n      alluringvoice: ['9M'],\n      babydolleyes: ['9L15'],\n      batonpass: ['9M', '9L29'],\n      bite: ['9L11'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      charm: ['9M', '9L42'],\n      covet: ['9L8'],\n      crunch: ['9M', '9L47'],\n      dazzlinggleam: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L38'],\n      drainingkiss: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firefang: ['9M'],\n      gigaimpact: ['9M'],\n      growl: ['9L1'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      icefang: ['9M'],\n      lastresort: ['9L53'],\n      lick: ['9L3'],\n      mistyterrain: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      playrough: ['9M', '9L18'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      psychup: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L33'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      tailwhip: ['9L6'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      trailblaze: ['9M'],\n      workup: ['9L22']\n    }\n  ],\n  [\n    'maschiff',\n    {\n      bite: ['9L14'],\n      bodyslam: ['9M'],\n      charm: ['9M'],\n      crunch: ['9M', '9L31'],\n      darkpulse: ['9M'],\n      destinybond: ['9E'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L49'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      firefang: ['9M'],\n      headbutt: ['9L22'],\n      helpinghand: ['9M'],\n      honeclaws: ['9L10'],\n      icefang: ['9M'],\n      jawlock: ['9L43'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      lick: ['9L4'],\n      payback: ['9L26'],\n      playrough: ['9M', '9E'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      retaliate: ['9E'],\n      reversal: ['9M', '9L39'],\n      roar: ['9M', '9L18'],\n      scaryface: ['9M', '9L1'],\n      sleeptalk: ['9M'],\n      snarl: ['9M', '9L7'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swagger: ['9L35'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderfang: ['9M'],\n      trailblaze: ['9M']\n    }\n  ],\n  [\n    'mabosstiff',\n    {\n      bite: ['9L14'],\n      bodyslam: ['9M'],\n      charm: ['9M'],\n      comeuppance: ['9L0'],\n      crunch: ['9M', '9L34'],\n      curse: ['9M'],\n      darkpulse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L55'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      firefang: ['9M'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L22'],\n      helpinghand: ['9M'],\n      honeclaws: ['9L10'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icefang: ['9M'],\n      jawlock: ['9L48'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      lick: ['9L4'],\n      outrage: ['9M', '9L60'],\n      painsplit: ['9M'],\n      payback: ['9L26'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M', '9L43'],\n      roar: ['9M', '9L18'],\n      scaryface: ['9M', '9L1'],\n      sleeptalk: ['9M'],\n      snarl: ['9M', '9L7'],\n      spite: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swagger: ['9L39'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderfang: ['9M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M']\n    }\n  ],\n  [\n    'bramblin',\n    {\n      absorb: ['9L5'],\n      astonish: ['9L1'],\n      beatup: ['9E'],\n      block: ['9E'],\n      bulletseed: ['9M', '9L13'],\n      confuseray: ['9M'],\n      curse: ['9M', '9L45'],\n      defensecurl: ['9L1'],\n      disable: ['9L29'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      gigadrain: ['9M', '9L40'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      hex: ['9M', '9L21'],\n      infestation: ['9L17'],\n      leafstorm: ['9M'],\n      leechseed: ['9E'],\n      megadrain: ['9L25'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '9L50'],\n      phantomforce: ['9M', '9L35'],\n      poltergeist: ['9M'],\n      pounce: ['9M'],\n      powerwhip: ['9L55'],\n      protect: ['9M'],\n      rapidspin: ['9L9'],\n      rest: ['9M'],\n      rollout: ['9L1'],\n      scaryface: ['9M'],\n      seedbomb: ['9M'],\n      shadowball: ['9M'],\n      shadowsneak: ['9E'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spikes: ['9M'],\n      spite: ['9M'],\n      strengthsap: ['9E'],\n      substitute: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M']\n    }\n  ],\n  [\n    'brambleghast',\n    {\n      absorb: ['9L5'],\n      astonish: ['9L1'],\n      bulletseed: ['9M', '9L13'],\n      confuseray: ['9M'],\n      curse: ['9M', '9L45'],\n      defensecurl: ['9L1'],\n      disable: ['9L29'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      gigadrain: ['9M', '9L40'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      hex: ['9M', '9L21'],\n      hyperbeam: ['9M'],\n      infestation: ['9L17'],\n      leafstorm: ['9M'],\n      megadrain: ['9L25'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '9L50'],\n      phantomforce: ['9M', '9L35'],\n      poltergeist: ['9M'],\n      pounce: ['9M'],\n      powerwhip: ['9L55'],\n      protect: ['9M'],\n      rapidspin: ['9L9'],\n      rest: ['9M'],\n      rollout: ['9L1'],\n      scaryface: ['9M'],\n      seedbomb: ['9M'],\n      shadowball: ['9M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spikes: ['9M'],\n      spite: ['9M'],\n      substitute: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      trailblaze: ['9M']\n    }\n  ],\n  [\n    'gimmighoul',\n    {\n      astonish: ['9L1', '9S2', '9S0'],\n      confuseray: ['9M'],\n      endure: ['9M'],\n      hex: ['9M', '9S1'],\n      lightscreen: ['9M'],\n      nastyplot: ['9M'],\n      nightshade: ['9M'],\n      powergem: ['9M', '9S1'],\n      protect: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      shadowball: ['9M', '9S1'],\n      sleeptalk: ['9M'],\n      substitute: ['9M'],\n      tackle: ['9L1', '9S2', '9S0'],\n      takedown: ['9M', '9S1'],\n      terablast: ['9M'],\n      thief: ['9M']\n    }\n  ],\n  [\n    'gholdengo',\n    {\n      astonish: ['9L1'],\n      chargebeam: ['9M'],\n      confuseray: ['9M', '9L14'],\n      dazzlinggleam: ['9M'],\n      electroball: ['9M'],\n      endure: ['9M'],\n      flashcannon: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      gigaimpact: ['9M'],\n      heavyslam: ['9M'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      ironhead: ['9M'],\n      lightscreen: ['9M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      makeitrain: ['9L56'],\n      memento: ['9L70'],\n      metalsound: ['9M', '9L28'],\n      nastyplot: ['9M', '9L63'],\n      nightshade: ['9M', '9L7'],\n      poltergeist: ['9M'],\n      powergem: ['9M', '9L49'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      psyshock: ['9M'],\n      recover: ['9L42'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      sandstorm: ['9M'],\n      shadowball: ['9M', '9L35'],\n      sleeptalk: ['9M'],\n      steelbeam: ['9M'],\n      substitute: ['9M', '9L21'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderpunch: ['9M'],\n      thunderwave: ['9M'],\n      trick: ['9M']\n    }\n  ],\n  [\n    'greattusk',\n    {\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M', '9L28', '9S0'],\n      bulkup: ['9M'],\n      bulldoze: ['9M', '9L7'],\n      closecombat: ['9M', '9L63'],\n      defensecurl: ['9L1'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L49', '9S1'],\n      endeavor: ['9M', '9L70'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firefang: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M', '9L56', '9S1'],\n      headlongrush: ['9L91'],\n      headsmash: ['9L84'],\n      heavyslam: ['9M'],\n      highhorsepower: ['9M'],\n      hornattack: ['9L1'],\n      hyperbeam: ['9M'],\n      icefang: ['9M'],\n      icespinner: ['9M'],\n      ironhead: ['9M'],\n      knockoff: ['9M', '9L42', '9S0', '9S1'],\n      megahorn: ['9L77'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      psyshock: ['9M'],\n      rapidspin: ['9L21', '9S0'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      roar: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      rollout: ['9L1'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      smartstrike: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M', '9L35', '9S0', '9S1'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      supercellslam: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L14'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      thunderfang: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'brutebonnet',\n    {\n      absorb: ['9L1'],\n      astonish: ['9L1'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulletseed: ['9M'],\n      clearsmog: ['9L28', '9S0'],\n      closecombat: ['9M'],\n      confuseray: ['9M'],\n      crunch: ['9M'],\n      darkpulse: ['9M'],\n      doubleedge: ['9M'],\n      earthpower: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      gigadrain: ['9M', '9L49', '9S0'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L1'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      ingrain: ['9L70'],\n      lashout: ['9M'],\n      leafstorm: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L14'],\n      outrage: ['9M'],\n      payback: ['9L35', '9S0'],\n      pollenpuff: ['9M'],\n      protect: ['9M'],\n      ragepowder: ['9L77'],\n      rest: ['9M'],\n      scaryface: ['9M'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M', '9L91'],\n      spore: ['9L63'],\n      stompingtantrum: ['9M'],\n      stunspore: ['9L7'],\n      substitute: ['9M'],\n      suckerpunch: ['9L56'],\n      sunnyday: ['9M', '9L1'],\n      synthesis: ['9L21'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thrash: ['9L42', '9S0'],\n      trailblaze: ['9M'],\n      venoshock: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'sandyshocks',\n    {\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '9L14'],\n      charge: ['9M'],\n      chargebeam: ['9M', '9L21'],\n      discharge: ['9L56'],\n      earthpower: ['9M', '9L63'],\n      earthquake: ['9M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '9L1'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      gravity: ['9M', '9L77'],\n      heavyslam: ['9M', '9L42', '9S0'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M'],\n      lightscreen: ['9M'],\n      magneticflux: ['9L91'],\n      metalsound: ['9M', '9L49', '9S0'],\n      mirrorcoat: ['9L70'],\n      mudshot: ['9M'],\n      powergem: ['9M'],\n      protect: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      sandstorm: ['9M'],\n      sandtomb: ['9M'],\n      scorchingsands: ['9M'],\n      screech: ['9L35', '9S0'],\n      sleeptalk: ['9M'],\n      spark: ['9L7'],\n      spikes: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      supercellslam: ['9M'],\n      supersonic: ['9L1'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thundershock: ['9L1'],\n      thunderwave: ['9M', '9L1'],\n      triattack: ['9L28', '9S0'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M'],\n      zapcannon: ['9L84']\n    }\n  ],\n  [\n    'screamtail',\n    {\n      amnesia: ['9M'],\n      batonpass: ['9M'],\n      bite: ['9L21'],\n      blizzard: ['9M'],\n      bodyslam: ['9M', '9L28', '9S0'],\n      boomburst: ['9L91'],\n      bulkup: ['9M'],\n      calmmind: ['9M'],\n      crunch: ['9M', '9L63'],\n      dazzlinggleam: ['9M'],\n      dig: ['9M'],\n      disable: ['9L1'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M'],\n      encore: ['9M'],\n      endure: ['9M'],\n      expandingforce: ['9M'],\n      facade: ['9M'],\n      faketears: ['9M'],\n      fireblast: ['9M'],\n      firefang: ['9M'],\n      firepunch: ['9M'],\n      flamethrower: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      gyroball: ['9M', '9L77'],\n      helpinghand: ['9M'],\n      howl: ['9L7'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M', '9L49', '9S0'],\n      icebeam: ['9M'],\n      icefang: ['9M'],\n      icepunch: ['9M'],\n      imprison: ['9M'],\n      lightscreen: ['9M'],\n      metronome: ['9M'],\n      mistyexplosion: ['9M'],\n      mistyterrain: ['9M'],\n      nobleroar: ['9L14'],\n      perishsong: ['9L84'],\n      playrough: ['9M', '9L42', '9S0'],\n      pound: ['9L1'],\n      protect: ['9M'],\n      psybeam: ['9M'],\n      psychic: ['9M'],\n      psychicfangs: ['9M', '9L56'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M'],\n      psyshock: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M', '9L35', '9S0'],\n      roar: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      sing: ['9L1'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      stealthrock: ['9M'],\n      stompingtantrum: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderfang: ['9M'],\n      thunderpunch: ['9M'],\n      thunderwave: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M'],\n      uproar: ['9M'],\n      waterpulse: ['9M'],\n      wish: ['9L70'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'fluttermane',\n    {\n      astonish: ['9L1'],\n      calmmind: ['9M'],\n      chargebeam: ['9M'],\n      charm: ['9M'],\n      confuseray: ['9M', '9L1'],\n      darkpulse: ['9M'],\n      dazzlinggleam: ['9M', '9L35', '9S0', '9S2'],\n      disarmingvoice: ['9M'],\n      drainingkiss: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      faketears: ['9M'],\n      gigaimpact: ['9M'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icywind: ['9M', '9S1'],\n      imprison: ['9M'],\n      magicalleaf: ['9M'],\n      meanlook: ['9L14'],\n      memento: ['9L21'],\n      mistyterrain: ['9M'],\n      moonblast: ['9L84', '9S1', '9S2'],\n      mysticalfire: ['9L49', '9S0'],\n      nightshade: ['9M'],\n      painsplit: ['9M', '9L77'],\n      perishsong: ['9L91'],\n      phantomforce: ['9M', '9L70'],\n      poltergeist: ['9M'],\n      powergem: ['9M', '9L56', '9S1'],\n      protect: ['9M'],\n      psybeam: ['9M', '9L7'],\n      psyshock: ['9M', '9L63'],\n      rest: ['9M'],\n      shadowball: ['9M', '9L42', '9S0', '9S1', '9S2'],\n      sleeptalk: ['9M'],\n      spite: ['9M', '9L1'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      swift: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M', '9S2'],\n      thunderwave: ['9M'],\n      trickroom: ['9M'],\n      wish: ['9L28', '9S0']\n    }\n  ],\n  [\n    'slitherwing',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bugbite: ['9M', '9L1'],\n      bugbuzz: ['9M'],\n      bulkup: ['9M', '9L56'],\n      closecombat: ['9M'],\n      curse: ['9M'],\n      doubleedge: ['9M'],\n      dualwingbeat: ['9M', '9L63'],\n      earthquake: ['9M'],\n      ember: ['9L1'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firstimpression: ['9L70'],\n      flamecharge: ['9M', '9L14'],\n      flareblitz: ['9M'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      gust: ['9L1'],\n      heatcrash: ['9M'],\n      heatwave: ['9M'],\n      heavyslam: ['9M'],\n      highhorsepower: ['9M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M'],\n      leechlife: ['9M', '9L84'],\n      lowkick: ['9M'],\n      lowsweep: ['9M', '9L28', '9S0'],\n      lunge: ['9M', '9L42', '9S0'],\n      morningsun: ['9L35', '9S0'],\n      poisonpowder: ['9L7'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      sandstorm: ['9M'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      stomp: ['9L21'],\n      stompingtantrum: ['9M'],\n      stunspore: ['9L7'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      superpower: ['9L49', '9S0'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L91'],\n      trailblaze: ['9M'],\n      uturn: ['9M'],\n      whirlwind: ['9L77'],\n      wildcharge: ['9M'],\n      willowisp: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'roaringmoon',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      airslash: ['9M'],\n      bite: ['9L1'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '9L1'],\n      brickbreak: ['9M'],\n      crunch: ['9M'],\n      darkpulse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M', '9L91'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L1'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L28', '9S0'],\n      dragondance: ['9M', '9L56', '9S1'],\n      dragonpulse: ['9M'],\n      dragonrush: ['9L63', '9S1'],\n      dragontail: ['9M'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firefang: ['9M'],\n      firespin: ['9M'],\n      flamethrower: ['9M', '9L42', '9S0'],\n      fly: ['9M', '9L70', '9S1'],\n      focusenergy: ['9L1'],\n      gigaimpact: ['9M'],\n      headbutt: ['9L14'],\n      heatwave: ['9M'],\n      hurricane: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      incinerate: ['9L7'],\n      ironhead: ['9M'],\n      jawlock: ['9L1'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      leer: ['9L1'],\n      metalclaw: ['9M'],\n      nightslash: ['9L49', '9S1', '9S0'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      rest: ['9M'],\n      roar: ['9M'],\n      rockslide: ['9M'],\n      roost: ['9L84'],\n      scaleshot: ['9M', '9L1'],\n      scaryface: ['9M', '9L21'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '9L77'],\n      thunderfang: ['9M'],\n      uturn: ['9M'],\n      xscissor: ['9M'],\n      zenheadbutt: ['9M', '9L35', '9S0']\n    }\n  ],\n  [\n    'irontreads',\n    {\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '9L7'],\n      defensecurl: ['9L1'],\n      doubleedge: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L49', '9S1'],\n      electricterrain: ['9M', '9L1'],\n      electroball: ['9M'],\n      endeavor: ['9M', '9L70'],\n      facade: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M', '9L84'],\n      gyroball: ['9M'],\n      hardpress: ['9M'],\n      heavyslam: ['9M', '9L56', '9S1'],\n      highhorsepower: ['9M'],\n      hornattack: ['9L1'],\n      hyperbeam: ['9M'],\n      icefang: ['9M'],\n      icespinner: ['9M'],\n      irondefense: ['9M'],\n      ironhead: ['9M', '9L28', '9S0'],\n      knockoff: ['9M', '9L42', '9S0', '9S1'],\n      megahorn: ['9L77'],\n      metalsound: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      protect: ['9M'],\n      rapidspin: ['9L21', '9S0'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      rollout: ['9L1'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M'],\n      stealthrock: ['9M'],\n      steelbeam: ['9M'],\n      steelroller: ['9L91'],\n      stompingtantrum: ['9M', '9L35', '9S0', '9S1'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      supercellslam: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderfang: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M', '9L63'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'ironmoth',\n    {\n      acidspray: ['9M', '9L1'],\n      acrobatics: ['9M'],\n      agility: ['9M'],\n      airslash: ['9M'],\n      bugbuzz: ['9M', '9L84'],\n      chargebeam: ['9M'],\n      confuseray: ['9M'],\n      dazzlinggleam: ['9M'],\n      discharge: ['9L42', '9S0'],\n      electricterrain: ['9M', '9L1'],\n      ember: ['9L1'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      fierydance: ['9L56'],\n      fireblast: ['9M'],\n      firespin: ['9M', '9L14'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M'],\n      flareblitz: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      gust: ['9L1'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      hurricane: ['9M', '9L77'],\n      hyperbeam: ['9M'],\n      lightscreen: ['9M'],\n      lunge: ['9M', '9L28', '9S0'],\n      metalsound: ['9M', '9L63'],\n      meteorbeam: ['9M'],\n      morningsun: ['9L70'],\n      overheat: ['9M', '9L91'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      rest: ['9M'],\n      screech: ['9L35', '9S0'],\n      sleeptalk: ['9M'],\n      sludgewave: ['9M', '9L49', '9S0'],\n      solarbeam: ['9M'],\n      strugglebug: ['9M', '9L7'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M', '9L21'],\n      terablast: ['9M'],\n      toxic: ['9M'],\n      toxicspikes: ['9M'],\n      uturn: ['9M'],\n      venoshock: ['9M'],\n      whirlwind: ['9L1']\n    }\n  ],\n  [\n    'ironhands',\n    {\n      armthrust: ['9L1'],\n      bellydrum: ['9L84'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      charge: ['9M', '9L49', '9S0'],\n      closecombat: ['9M', '9L63'],\n      detect: ['9L70'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M', '9S1'],\n      earthquake: ['9M'],\n      electricterrain: ['9M', '9L1'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fakeout: ['9L7', '9S1'],\n      firepunch: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      focusenergy: ['9L1'],\n      focuspunch: ['9M', '9L91'],\n      forcepalm: ['9L35', '9S0'],\n      gigaimpact: ['9M'],\n      hardpress: ['9M'],\n      heavyslam: ['9M', '9L77'],\n      hyperbeam: ['9M'],\n      icepunch: ['9M'],\n      irondefense: ['9M'],\n      ironhead: ['9M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      metronome: ['9M'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      sandattack: ['9L1'],\n      scaryface: ['9M'],\n      seismictoss: ['9L42', '9S0'],\n      slam: ['9L28', '9S0'],\n      sleeptalk: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      supercellslam: ['9M'],\n      swordsdance: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderpunch: ['9M', '9L21'],\n      voltswitch: ['9M', '9S1'],\n      whirlwind: ['9L14'],\n      wildcharge: ['9M', '9L56', '9S1']\n    }\n  ],\n  [\n    'ironjugulis',\n    {\n      acrobatics: ['9M'],\n      aircutter: ['9M', '9L1'],\n      airslash: ['9M', '9L56'],\n      assurance: ['9L14'],\n      bodyslam: ['9M'],\n      chargebeam: ['9M'],\n      crunch: ['9M', '9L35', '9S0'],\n      darkpulse: ['9M', '9L70'],\n      doubleedge: ['9M'],\n      dragonbreath: ['9L21', '9S0'],\n      dragoncheer: ['9M'],\n      dragonpulse: ['9M', '9L84'],\n      dragontail: ['9M'],\n      dualwingbeat: ['9M'],\n      earthpower: ['9M'],\n      electricterrain: ['9M', '9L1'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firefang: ['9M'],\n      flamethrower: ['9M'],\n      flashcannon: ['9M'],\n      fly: ['9M'],\n      focusblast: ['9M'],\n      focusenergy: ['9L1'],\n      gigaimpact: ['9M'],\n      heatwave: ['9M'],\n      hurricane: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M', '9L91'],\n      hypervoice: ['9M', '9L42', '9S0'],\n      ironhead: ['9M'],\n      knockoff: ['9M', '9L63'],\n      lashout: ['9M'],\n      metalsound: ['9M'],\n      meteorbeam: ['9M'],\n      outrage: ['9M', '9L77'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L7'],\n      rocktomb: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M', '9L28', '9S0'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      triattack: ['9L1'],\n      uturn: ['9M'],\n      workup: ['9L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'ironthorns',\n    {\n      bite: ['9L28', '9S0'],\n      blizzard: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      charge: ['9M', '9L35', '9S0'],\n      chargebeam: ['9M'],\n      crunch: ['9M'],\n      curse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      dragonclaw: ['9M'],\n      dragondance: ['9M'],\n      dragontail: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L70'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '9L1'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firefang: ['9M', '9L1'],\n      firepunch: ['9M'],\n      flamethrower: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      gigaimpact: ['9M', '9L91'],\n      heavyslam: ['9M'],\n      highhorsepower: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icefang: ['9M', '9L1'],\n      icepunch: ['9M'],\n      irondefense: ['9M', '9L1'],\n      ironhead: ['9M'],\n      lowkick: ['9M'],\n      metalclaw: ['9M'],\n      meteorbeam: ['9M'],\n      pinmissile: ['9L63'],\n      powergem: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      rockblast: ['9M'],\n      rockslide: ['9M', '9L42', '9S0'],\n      rockthrow: ['9L1'],\n      rocktomb: ['9M', '9L21'],\n      sandstorm: ['9M', '9L49', '9S0'],\n      sandtomb: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L7'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      snarl: ['9M'],\n      spikes: ['9M'],\n      stealthrock: ['9M', '9L77'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M', '9L84'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderfang: ['9M', '9L1'],\n      thunderpunch: ['9M'],\n      thunderwave: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M', '9L56']\n    }\n  ],\n  [\n    'ironbundle',\n    {\n      acrobatics: ['9M'],\n      agility: ['9M', '9L63'],\n      aircutter: ['9M'],\n      auroraveil: ['9L84'],\n      avalanche: ['9M'],\n      blizzard: ['9M', '9L91'],\n      bodyslam: ['9M'],\n      chillingwater: ['9M'],\n      drillpeck: ['9L28', '9S0'],\n      electricterrain: ['9M', '9L1'],\n      encore: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fling: ['9M'],\n      flipturn: ['9M', '9L49', '9S0'],\n      freezedry: ['9L42', '9S0'],\n      gigaimpact: ['9M'],\n      helpinghand: ['9M', '9L35', '9S0'],\n      hydropump: ['9M', '9L77'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M', '9L56'],\n      icepunch: ['9M'],\n      icespinner: ['9M'],\n      icywind: ['9M'],\n      playrough: ['9M'],\n      powdersnow: ['9L7'],\n      present: ['9L1'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M', '9L70'],\n      substitute: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M', '9L21'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      uturn: ['9M'],\n      waterpulse: ['9M'],\n      whirlpool: ['9M', '9L14']\n    }\n  ],\n  [\n    'ironvaliant',\n    {\n      aerialace: ['9M'],\n      agility: ['9M'],\n      aurasphere: ['9M'],\n      brickbreak: ['9M'],\n      calmmind: ['9M'],\n      chargebeam: ['9M'],\n      closecombat: ['9M', '9L63', '9S1'],\n      coaching: ['9M'],\n      confuseray: ['9M'],\n      dazzlinggleam: ['9M', '9L28', '9S0'],\n      destinybond: ['9L77'],\n      disable: ['9L1'],\n      doubleteam: ['9L1'],\n      drainpunch: ['9M'],\n      electricterrain: ['9M', '9L1'],\n      encore: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      expandingforce: ['9M'],\n      falseswipe: ['9M'],\n      feint: ['9L14'],\n      firepunch: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      furycutter: ['9L1'],\n      futuresight: ['9M', '9L21'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      hypnosis: ['9L7'],\n      icepunch: ['9M'],\n      icywind: ['9M'],\n      imprison: ['9M'],\n      knockoff: ['9M', '9L70', '9S1'],\n      leafblade: ['9L49', '9S1', '9S0'],\n      lightscreen: ['9M'],\n      liquidation: ['9M'],\n      lowkick: ['9M'],\n      magicalleaf: ['9M'],\n      metronome: ['9M'],\n      mistyterrain: ['9M'],\n      moonblast: ['9L56', '9S1'],\n      nightslash: ['9L42', '9S0'],\n      poisonjab: ['9M'],\n      protect: ['9M'],\n      psybeam: ['9M'],\n      psychic: ['9M'],\n      psychicterrain: ['9M'],\n      psychocut: ['9L35', '9S0'],\n      psychup: ['9M'],\n      psyshock: ['9M'],\n      quickguard: ['9L84'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M'],\n      shadowsneak: ['9L1'],\n      skillswap: ['9M'],\n      sleeptalk: ['9M'],\n      spiritbreak: ['9L91'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      thunderbolt: ['9M'],\n      thunderpunch: ['9M'],\n      thunderwave: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M'],\n      vacuumwave: ['9M'],\n      wideguard: ['9L84'],\n      xscissor: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'tinglu',\n    {\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M', '9L20'],\n      darkpulse: ['9M', '9L40'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      earthpower: ['9M'],\n      earthquake: ['9M', '9L70'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fissure: ['9L75'],\n      gigaimpact: ['9M'],\n      heavyslam: ['9M', '9S1'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      lashout: ['9M'],\n      meanlook: ['9L1'],\n      memento: ['9L65'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      payback: ['9L10'],\n      protect: ['9M'],\n      rest: ['9M'],\n      rockslide: ['9M', '9L60', '9S0'],\n      rocktomb: ['9M'],\n      ruination: ['9L50', '9S0'],\n      sandstorm: ['9M'],\n      sandtomb: ['9M', '9L1'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M', '9S1'],\n      spikes: ['9M', '9L5'],\n      spite: ['9M', '9L1'],\n      stealthrock: ['9M'],\n      stomp: ['9L15'],\n      stompingtantrum: ['9M', '9L45', '9S0', '9S1'],\n      stoneedge: ['9M', '9S1'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L30'],\n      terablast: ['9M'],\n      thrash: ['9L35'],\n      throatchop: ['9M', '9L55', '9S0'],\n      whirlwind: ['9L25'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'chienpao',\n    {\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      avalanche: ['9M'],\n      blizzard: ['9M'],\n      brickbreak: ['9M'],\n      crunch: ['9M', '9S1'],\n      darkpulse: ['9M', '9L40'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      gigaimpact: ['9M'],\n      haze: ['9M', '9L15'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      icefang: ['9M'],\n      iceshard: ['9L20', '9S1'],\n      icespinner: ['9M'],\n      iciclecrash: ['9L45', '9S0', '9S1'],\n      icywind: ['9M', '9L5'],\n      lashout: ['9M'],\n      meanlook: ['9L1'],\n      mist: ['9L15'],\n      nightslash: ['9L35'],\n      payback: ['9L10'],\n      powdersnow: ['9L1'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      raindance: ['9M'],\n      recover: ['9L65'],\n      rest: ['9M'],\n      ruination: ['9L50', '9S0'],\n      sacredsword: ['9L60', '9S0', '9S1'],\n      scaryface: ['9M'],\n      sheercold: ['9L75'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      snowscape: ['9M', '9L30'],\n      spite: ['9M', '9L1'],\n      substitute: ['9M'],\n      suckerpunch: ['9L55', '9S0'],\n      swordsdance: ['9M', '9L25'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '9L70']\n    }\n  ],\n  [\n    'wochien',\n    {\n      absorb: ['9L1'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bulletseed: ['9M'],\n      darkpulse: ['9M', '9L40', '9S1'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      foulplay: ['9M', '9L55', '9S0'],\n      gigadrain: ['9M', '9L45', '9S0', '9S1'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyterrain: ['9M', '9L65'],\n      growth: ['9L30'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      ingrain: ['9L35'],\n      knockoff: ['9M', '9L70'],\n      lashout: ['9M'],\n      leafstorm: ['9M', '9L75'],\n      leechseed: ['9L25'],\n      lightscreen: ['9M'],\n      magicalleaf: ['9M'],\n      meanlook: ['9L1'],\n      megadrain: ['9L20'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      payback: ['9L10'],\n      poisonpowder: ['9L15'],\n      pollenpuff: ['9M', '9S1'],\n      powerwhip: ['9L60', '9S0'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      ruination: ['9L50', '9S0'],\n      scaryface: ['9M'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M', '9S1'],\n      solarbeam: ['9M'],\n      solarblade: ['9M'],\n      spite: ['9M', '9L1'],\n      stunspore: ['9L15'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      tickle: ['9L5'],\n      trailblaze: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'chiyu',\n    {\n      bounce: ['9L55', '9S0'],\n      burningjealousy: ['9M'],\n      confuseray: ['9M', '9L30'],\n      crunch: ['9M'],\n      darkpulse: ['9M', '9L40', '9S1'],\n      ember: ['9L1'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firespin: ['9M'],\n      flamecharge: ['9M', '9L20'],\n      flamethrower: ['9M', '9S1'],\n      flamewheel: ['9L5'],\n      flareblitz: ['9M'],\n      gigaimpact: ['9M'],\n      heatwave: ['9M', '9S1'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      incinerate: ['9L25'],\n      inferno: ['9L65'],\n      lashout: ['9M'],\n      lavaplume: ['9L45', '9S0'],\n      lightscreen: ['9M'],\n      meanlook: ['9L1'],\n      memento: ['9L70'],\n      nastyplot: ['9M', '9L35'],\n      overheat: ['9M', '9L75'],\n      payback: ['9L10'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      ruination: ['9L50', '9S0'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M', '9S1'],\n      spite: ['9M', '9L1'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swagger: ['9L60', '9S0'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      willowisp: ['9M', '9L15'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'koraidon',\n    {\n      acrobatics: ['9M'],\n      agility: ['9M', '9L35'],\n      ancientpower: ['9L14'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '9L1'],\n      brickbreak: ['9M', '9L28'],\n      bulkup: ['9M', '9S1'],\n      bulldoze: ['9M'],\n      closecombat: ['9M', '9L84', '9S2'],\n      collisioncourse: ['9L56', '9S0', '9S1', '9S2'],\n      counter: ['9L70'],\n      crunch: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      dracometeor: ['9M'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L42'],\n      dragonpulse: ['9M'],\n      dragontail: ['9M'],\n      drainpunch: ['9M', '9L21'],\n      dualwingbeat: ['9M'],\n      endure: ['9M', '9S0'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firefang: ['9M'],\n      firespin: ['9M'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '9L49', '9S0', '9S1'],\n      flareblitz: ['9M', '9L91', '9S2'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      gigaimpact: ['9M', '9L98', '9S1', '9S2'],\n      heatcrash: ['9M'],\n      heatwave: ['9M'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      icefang: ['9M'],\n      ironhead: ['9M'],\n      lowkick: ['9M'],\n      lowsweep: ['9M'],\n      meteorbeam: ['9M'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      outrage: ['9M', '9L77'],\n      overheat: ['9M'],\n      protect: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      roar: ['9M'],\n      rocksmash: ['9L7'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L63'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      solarbeam: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M', '9S0'],\n      thunderfang: ['9M'],\n      uproar: ['9M'],\n      uturn: ['9M'],\n      wildcharge: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'miraidon',\n    {\n      acrobatics: ['9M'],\n      agility: ['9M', '9L35'],\n      bodyslam: ['9M'],\n      calmmind: ['9M'],\n      charge: ['9M', '9L14', '9S1'],\n      chargebeam: ['9M'],\n      confuseray: ['9M'],\n      crunch: ['9M'],\n      dazzlinggleam: ['9M'],\n      discharge: ['9L28'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L1'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M'],\n      dragonpulse: ['9M', '9L42'],\n      dragontail: ['9M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '9L1'],\n      electroball: ['9M'],\n      electrodrift: ['9L56', '9S0', '9S1', '9S2'],\n      endure: ['9M', '9S0'],\n      facade: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M', '9L98', '9S1', '9S2'],\n      lightscreen: ['9M'],\n      metalsound: ['9M', '9L63'],\n      mirrorcoat: ['9L70'],\n      outrage: ['9M', '9L77'],\n      overheat: ['9M', '9L91', '9S2'],\n      paraboliccharge: ['9L21'],\n      powergem: ['9M', '9S0', '9S1'],\n      protect: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      scaryface: ['9M'],\n      shockwave: ['9L7'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      solarbeam: ['9M'],\n      substitute: ['9M'],\n      supercellslam: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M', '9S0'],\n      thunder: ['9M', '9L84', '9S2'],\n      thunderbolt: ['9M'],\n      thundershock: ['9L1'],\n      thunderwave: ['9M'],\n      uturn: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'tinkatink',\n    {\n      astonish: ['9L1'],\n      babydolleyes: ['9L5'],\n      brutalswing: ['9L24'],\n      covet: ['9L11'],\n      drainingkiss: ['9M', '9L17'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fairywind: ['9L1'],\n      fakeout: ['9L39'],\n      faketears: ['9M'],\n      feint: ['9E'],\n      flashcannon: ['9M', '9L31'],\n      flatter: ['9L43'],\n      fling: ['9M'],\n      foulplay: ['9M'],\n      helpinghand: ['9M'],\n      icehammer: ['9E'],\n      knockoff: ['9M', '9L52'],\n      lightscreen: ['9M'],\n      metalclaw: ['9M', '9L8'],\n      metalsound: ['9M'],\n      metronome: ['9M'],\n      playrough: ['9M', '9L35'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      quash: ['9E'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocksmash: ['9L14'],\n      rocktomb: ['9M'],\n      skillswap: ['9M'],\n      skittersmack: ['9M', '9L47'],\n      slam: ['9L27'],\n      sleeptalk: ['9M'],\n      stealthrock: ['9M'],\n      steelbeam: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sweetkiss: ['9L21'],\n      swordsdance: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderwave: ['9M']\n    }\n  ],\n  [\n    'tinkatuff',\n    {\n      astonish: ['9L1'],\n      babydolleyes: ['9L5'],\n      brickbreak: ['9M'],\n      brutalswing: ['9L24'],\n      covet: ['9L11'],\n      drainingkiss: ['9M', '9L17'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fairywind: ['9L1'],\n      fakeout: ['9L39'],\n      faketears: ['9M'],\n      flashcannon: ['9M', '9L31'],\n      flatter: ['9L43'],\n      fling: ['9M'],\n      foulplay: ['9M'],\n      helpinghand: ['9M'],\n      knockoff: ['9M', '9L52'],\n      lightscreen: ['9M'],\n      metalclaw: ['9M', '9L8'],\n      metalsound: ['9M'],\n      metronome: ['9M'],\n      playrough: ['9M', '9L35'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocksmash: ['9L14'],\n      rocktomb: ['9M'],\n      skillswap: ['9M'],\n      skittersmack: ['9M', '9L47'],\n      slam: ['9L27'],\n      sleeptalk: ['9M'],\n      stealthrock: ['9M'],\n      steelbeam: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sweetkiss: ['9L21'],\n      swordsdance: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderwave: ['9M']\n    }\n  ],\n  [\n    'tinkaton',\n    {\n      astonish: ['9L1'],\n      babydolleyes: ['9L5'],\n      brickbreak: ['9M'],\n      brutalswing: ['9L24'],\n      bulldoze: ['9M'],\n      covet: ['9L11'],\n      drainingkiss: ['9M', '9L17'],\n      encore: ['9M'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fairywind: ['9L1'],\n      fakeout: ['9L39'],\n      faketears: ['9M'],\n      flashcannon: ['9M', '9L31'],\n      flatter: ['9L43'],\n      fling: ['9M'],\n      foulplay: ['9M'],\n      gigatonhammer: ['9L0'],\n      hardpress: ['9M'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      knockoff: ['9M', '9L52'],\n      lightscreen: ['9M'],\n      metalclaw: ['9M', '9L8'],\n      metalsound: ['9M'],\n      metronome: ['9M'],\n      playrough: ['9M', '9L35'],\n      pounce: ['9M'],\n      protect: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocksmash: ['9L14'],\n      rocktomb: ['9M'],\n      skillswap: ['9M'],\n      skittersmack: ['9M', '9L47'],\n      slam: ['9L27'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      stealthrock: ['9M'],\n      steelbeam: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sweetkiss: ['9L21'],\n      swordsdance: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunderwave: ['9M']\n    }\n  ],\n  [\n    'charcadet',\n    {\n      astonish: ['9L1', '9S0'],\n      celebrate: ['9S0'],\n      clearsmog: ['9L8'],\n      confuseray: ['9M'],\n      destinybond: ['9E'],\n      disable: ['9E'],\n      ember: ['9L1', '9S0'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firespin: ['9M', '9L12'],\n      flamecharge: ['9M', '9L24'],\n      flamethrower: ['9M'],\n      flareblitz: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      incinerate: ['9L28'],\n      lavaplume: ['9L32'],\n      leer: ['9L1'],\n      nightshade: ['9M', '9L20'],\n      overheat: ['9M'],\n      protect: ['9M'],\n      rest: ['9M'],\n      sleeptalk: ['9M'],\n      spite: ['9M', '9E'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M', '9S0'],\n      willowisp: ['9M', '9L16']\n    }\n  ],\n  [\n    'armarouge',\n    {\n      acidspray: ['9M'],\n      allyswitch: ['9L42'],\n      armorcannon: ['9L62'],\n      astonish: ['9L1'],\n      aurasphere: ['9M'],\n      calmmind: ['9M', '9L37'],\n      clearsmog: ['9L8'],\n      confuseray: ['9M'],\n      darkpulse: ['9M'],\n      dragonpulse: ['9M'],\n      ember: ['9L1'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      expandingforce: ['9M', '9L56'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      firespin: ['9M', '9L12'],\n      flamecharge: ['9M', '9L24'],\n      flamethrower: ['9M', '9L48'],\n      flareblitz: ['9M'],\n      flashcannon: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      incinerate: ['9L28'],\n      irondefense: ['9M'],\n      lavaplume: ['9L32'],\n      leer: ['9L1'],\n      lightscreen: ['9M'],\n      meteorbeam: ['9M'],\n      mysticalfire: ['9L1'],\n      nightshade: ['9M', '9L20'],\n      overheat: ['9M'],\n      protect: ['9M'],\n      psybeam: ['9M'],\n      psychic: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M'],\n      psyshock: ['9M', '9L0'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      scorchingsands: ['9M'],\n      shadowball: ['9M'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spite: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      trick: ['9M'],\n      trickroom: ['9M'],\n      weatherball: ['9M'],\n      wideguard: ['9L1'],\n      willowisp: ['9M', '9L16']\n    }\n  ],\n  [\n    'ceruledge',\n    {\n      allyswitch: ['9L42'],\n      astonish: ['9L1'],\n      bitterblade: ['9L48'],\n      brickbreak: ['9M'],\n      bulkup: ['9M'],\n      clearsmog: ['9L8'],\n      closecombat: ['9M'],\n      confuseray: ['9M'],\n      curse: ['9M'],\n      dragonclaw: ['9M'],\n      ember: ['9L1'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      fireblast: ['9M'],\n      firespin: ['9M', '9L12'],\n      flamecharge: ['9M', '9L24'],\n      flamethrower: ['9M'],\n      flareblitz: ['9M', '9L62'],\n      fling: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      hex: ['9M'],\n      incinerate: ['9L28'],\n      irondefense: ['9M'],\n      ironhead: ['9M'],\n      lavaplume: ['9L32'],\n      leer: ['9L1'],\n      lightscreen: ['9M'],\n      nightshade: ['9M', '9L20'],\n      nightslash: ['9L1'],\n      overheat: ['9M'],\n      phantomforce: ['9M'],\n      poisonjab: ['9M'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      psychocut: ['9L56'],\n      psychup: ['9M'],\n      quickguard: ['9L1'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M', '9L0'],\n      shadowsneak: ['9L1'],\n      sleeptalk: ['9M'],\n      solarblade: ['9M', '9L1'],\n      spite: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swordsdance: ['9M', '9L37'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      vacuumwave: ['9M'],\n      willowisp: ['9M', '9L16'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'toedscool',\n    {\n      absorb: ['9L4'],\n      acidspray: ['9M'],\n      acupressure: ['9E'],\n      bulletseed: ['9M'],\n      celebrate: ['9S0'],\n      confuseray: ['9M'],\n      dazzlinggleam: ['9M'],\n      earthpower: ['9M', '9L48'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      flashcannon: ['9M'],\n      foulplay: ['9M'],\n      gigadrain: ['9M', '9L44', '9S0'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L40'],\n      hex: ['9M', '9L28'],\n      knockoff: ['9M', '9E'],\n      leafstorm: ['9M'],\n      leechseed: ['9E'],\n      lightscreen: ['9M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M', '9S0'],\n      megadrain: ['9L16'],\n      mirrorcoat: ['9E'],\n      mudshot: ['9M', '9L24'],\n      mudslap: ['9M', '9L1'],\n      painsplit: ['9M'],\n      poisonpowder: ['9L8'],\n      powerwhip: ['9L52'],\n      protect: ['9M'],\n      ragepowder: ['9E'],\n      raindance: ['9M'],\n      rapidspin: ['9E'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L20'],\n      seedbomb: ['9M', '9L32'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      solarbeam: ['9M'],\n      spikes: ['9M', '9S0'],\n      spore: ['9L36'],\n      stunspore: ['9L8'],\n      substitute: ['9M'],\n      supersonic: ['9L12'],\n      swift: ['9M'],\n      tackle: ['9L15'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      tickle: ['9E'],\n      toxic: ['9M', '9E'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      trickroom: ['9M'],\n      venoshock: ['9M'],\n      wrap: ['9L1']\n    }\n  ],\n  [\n    'toedscruel',\n    {\n      absorb: ['9L4'],\n      acidspray: ['9M'],\n      bulletseed: ['9M'],\n      confuseray: ['9M'],\n      dazzlinggleam: ['9M'],\n      earthpower: ['9M', '9L54'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      flashcannon: ['9M'],\n      foulplay: ['9M'],\n      gigadrain: ['9M', '9L48'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L44'],\n      hex: ['9M', '9L28'],\n      hyperbeam: ['9M'],\n      knockoff: ['9M'],\n      leafstorm: ['9M'],\n      lightscreen: ['9M'],\n      lunge: ['9M'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L16'],\n      mudshot: ['9M', '9L24'],\n      mudslap: ['9M', '9L1'],\n      painsplit: ['9M'],\n      poisonpowder: ['9L8'],\n      powerwhip: ['9L58'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      reflect: ['9M'],\n      reflecttype: ['9L1'],\n      rest: ['9M'],\n      scaryface: ['9M'],\n      screech: ['9L20'],\n      seedbomb: ['9M', '9L34'],\n      skittersmack: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      solarbeam: ['9M'],\n      spikes: ['9M'],\n      spore: ['9L40'],\n      stunspore: ['9L8'],\n      substitute: ['9M'],\n      supersonic: ['9L12'],\n      swift: ['9M'],\n      tackle: ['9L15'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M'],\n      toxicspikes: ['9M'],\n      trailblaze: ['9M'],\n      trickroom: ['9M'],\n      venoshock: ['9M'],\n      wrap: ['9L1']\n    }\n  ],\n  [\n    'walkingwake',\n    {\n      agility: ['9M'],\n      aquajet: ['9L1'],\n      bite: ['9L7', '9L07'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '9L35'],\n      chillingwater: ['9M'],\n      crunch: ['9M'],\n      doubleedge: ['9M'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L28'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M'],\n      dragondance: ['9M'],\n      dragonpulse: ['9M', '9L63', '9S0'],\n      dragonrush: ['9L42'],\n      dragontail: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firefang: ['9M'],\n      flamethrower: ['9M', '9L77', '9S0'],\n      flipturn: ['9M'],\n      gigaimpact: ['9M'],\n      honeclaws: ['9L1'],\n      hurricane: ['9M'],\n      hydropump: ['9M', '9L84'],\n      hydrosteam: ['9L56', '9S0'],\n      hyperbeam: ['9M'],\n      knockoff: ['9M'],\n      leer: ['9L1'],\n      liquidation: ['9M'],\n      lowkick: ['9M'],\n      mudshot: ['9M'],\n      nobleroar: ['9L21', '9S0'],\n      outrage: ['9M', '9L70'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L1'],\n      scald: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      surf: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      twister: ['9L1'],\n      waterfall: ['9M'],\n      waterpulse: ['9M', '9L14'],\n      weatherball: ['9M'],\n      whirlpool: ['9M']\n    }\n  ],\n  [\n    'ironleaves',\n    {\n      aerialace: ['9M'],\n      agility: ['9M'],\n      airslash: ['9M'],\n      allyswitch: ['9L84'],\n      brickbreak: ['9M'],\n      calmmind: ['9M'],\n      closecombat: ['9M', '9L63'],\n      coaching: ['9M'],\n      doubleedge: ['9M'],\n      electricterrain: ['9M', '9L1'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      focusblast: ['9M'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyterrain: ['9M'],\n      gravity: ['9M'],\n      helpinghand: ['9M', '9L1'],\n      hyperbeam: ['9M'],\n      imprison: ['9M', '9L70'],\n      irondefense: ['9M'],\n      leafblade: ['9L49', '9S0'],\n      leafstorm: ['9M'],\n      leer: ['9L1'],\n      magicalleaf: ['9M', '9L7', '9L07'],\n      megahorn: ['9L77', '9S0'],\n      metalsound: ['9M'],\n      nightslash: ['9L28'],\n      protect: ['9M'],\n      psyblade: ['9L56', '9S0'],\n      psychicterrain: ['9M'],\n      quash: ['9L1'],\n      quickattack: ['9L1'],\n      quickguard: ['9L21'],\n      rest: ['9M'],\n      retaliate: ['9L14'],\n      reversal: ['9M'],\n      sacredsword: ['9L42'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M'],\n      solarbeam: ['9M'],\n      solarblade: ['9M', '9L91'],\n      substitute: ['9M'],\n      swift: ['9M'],\n      swordsdance: ['9M', '9L35', '9S0'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M'],\n      workup: ['9L1'],\n      xscissor: ['9M']\n    }\n  ],\n  [\n    'dipplin',\n    {\n      astonish: ['9L1'],\n      bodyslam: ['9M'],\n      bugbite: ['9M'],\n      bulletseed: ['9M', '9L20'],\n      doublehit: ['9L0'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L12'],\n      dragoncheer: ['9M'],\n      dragonpulse: ['9M', '9L32'],\n      dragontail: ['9M', '9L4'],\n      endure: ['9M'],\n      energyball: ['9M', '9L40'],\n      facade: ['9M'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L8'],\n      gyroball: ['9M'],\n      hyperbeam: ['9M'],\n      infestation: ['9L1'],\n      leafstorm: ['9M'],\n      outrage: ['9M'],\n      pollenpuff: ['9M'],\n      pounce: ['9M'],\n      protect: ['9M', '9L16'],\n      recover: ['9L36'],\n      recycle: ['9L1'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      substitute: ['9M', '9L44'],\n      sunnyday: ['9M'],\n      sweetscent: ['9L1'],\n      syrupbomb: ['9L28'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      withdraw: ['9L1']\n    }\n  ],\n  [\n    'poltchageist',\n    {\n      absorb: ['9L6'],\n      astonish: ['9L1'],\n      calmmind: ['9M'],\n      curse: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      foulplay: ['9M', '9L18'],\n      gigadrain: ['9M', '9L42'],\n      grassyterrain: ['9M'],\n      hex: ['9M', '9L30'],\n      imprison: ['9M'],\n      irondefense: ['9M'],\n      leafstorm: ['9M', '9L60'],\n      lifedew: ['9L12'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L24'],\n      memento: ['9L54'],\n      nastyplot: ['9M'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      ragepowder: ['9L36'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      scald: ['9M'],\n      shadowball: ['9M', '9L48'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spite: ['9M'],\n      stunspore: ['9L1'],\n      substitute: ['9M'],\n      terablast: ['9M'],\n      trickroom: ['9M'],\n      uproar: ['9M'],\n      withdraw: ['9L1']\n    }\n  ],\n  [\n    'poltchageistartisan',\n    {\n      absorb: ['9L6'],\n      astonish: ['9L1'],\n      calmmind: ['9M'],\n      curse: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      foulplay: ['9M', '9L18'],\n      gigadrain: ['9M', '9L42'],\n      grassyterrain: ['9M'],\n      hex: ['9M', '9L30'],\n      imprison: ['9M'],\n      irondefense: ['9M'],\n      leafstorm: ['9M', '9L60'],\n      lifedew: ['9L12'],\n      magicalleaf: ['9M'],\n      megadrain: ['9L24'],\n      memento: ['9L54'],\n      nastyplot: ['9M'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      ragepowder: ['9L36'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      scald: ['9M'],\n      shadowball: ['9M', '9L48'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spite: ['9M'],\n      stunspore: ['9L1'],\n      substitute: ['9M'],\n      terablast: ['9M'],\n      trickroom: ['9M'],\n      uproar: ['9M'],\n      withdraw: ['9L1']\n    }\n  ],\n  [\n    'sinistcha',\n    {\n      absorb: ['9L6'],\n      astonish: ['9L1'],\n      calmmind: ['9M'],\n      curse: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      foulplay: ['9M', '9L18'],\n      gigadrain: ['9M'],\n      grassyterrain: ['9M'],\n      hex: ['9M', '9L30'],\n      hyperbeam: ['9M'],\n      imprison: ['9M'],\n      irondefense: ['9M'],\n      leafstorm: ['9M', '9L60'],\n      lifedew: ['9L12'],\n      magicalleaf: ['9M'],\n      matchagotcha: ['9L0'],\n      megadrain: ['9L24'],\n      memento: ['9L54'],\n      nastyplot: ['9M'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      ragepowder: ['9L36'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      scald: ['9M'],\n      shadowball: ['9M', '9L48'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spite: ['9M'],\n      strengthsap: ['9L42'],\n      stunspore: ['9L1'],\n      substitute: ['9M'],\n      terablast: ['9M'],\n      trickroom: ['9M'],\n      uproar: ['9M'],\n      withdraw: ['9L1']\n    }\n  ],\n  [\n    'sinistchamasterpiece',\n    {\n      absorb: ['9L6'],\n      astonish: ['9L1'],\n      calmmind: ['9M'],\n      curse: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      foulplay: ['9M', '9L18'],\n      gigadrain: ['9M'],\n      grassyterrain: ['9M'],\n      hex: ['9M', '9L30'],\n      hyperbeam: ['9M'],\n      imprison: ['9M'],\n      irondefense: ['9M'],\n      leafstorm: ['9M', '9L60'],\n      lifedew: ['9L12'],\n      magicalleaf: ['9M'],\n      matchagotcha: ['9L0'],\n      megadrain: ['9L24'],\n      memento: ['9L54'],\n      nastyplot: ['9M'],\n      nightshade: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      ragepowder: ['9L36'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      scald: ['9M'],\n      shadowball: ['9M', '9L48'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spite: ['9M'],\n      strengthsap: ['9L42'],\n      stunspore: ['9L1'],\n      substitute: ['9M'],\n      terablast: ['9M'],\n      trickroom: ['9M'],\n      uproar: ['9M'],\n      withdraw: ['9L1']\n    }\n  ],\n  [\n    'okidogi',\n    {\n      bite: ['9L1'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      brutalswing: ['9L48', '9S0'],\n      bulkup: ['9M', '9L1'],\n      closecombat: ['9M'],\n      counter: ['9L32'],\n      crunch: ['9M', '9L56', '9S0'],\n      curse: ['9M'],\n      dig: ['9M'],\n      doubleedge: ['9M'],\n      drainpunch: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      firefang: ['9M'],\n      firepunch: ['9M'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      focuspunch: ['9M'],\n      forcepalm: ['9L24'],\n      gigaimpact: ['9M', '9L72'],\n      gunkshot: ['9M'],\n      hardpress: ['9M'],\n      highhorsepower: ['9M'],\n      howl: ['9L8'],\n      hyperbeam: ['9M'],\n      icefang: ['9M'],\n      icepunch: ['9M'],\n      ironhead: ['9M'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      lowkick: ['9M', '9L1'],\n      lowsweep: ['9M'],\n      metalclaw: ['9M'],\n      outrage: ['9M'],\n      poisonfang: ['9L16'],\n      poisonjab: ['9M', '9L40', '9S0'],\n      poisontail: ['9M'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      roar: ['9M'],\n      rocktomb: ['9M'],\n      scaryface: ['9M'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      snarl: ['9M'],\n      spite: ['9M'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      superpower: ['9L64', '9S0'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunderfang: ['9M'],\n      thunderpunch: ['9M'],\n      toxic: ['9M'],\n      upperhand: ['9M'],\n      uproar: ['9M']\n    }\n  ],\n  [\n    'munkidori',\n    {\n      acidspray: ['9M'],\n      batonpass: ['9M'],\n      calmmind: ['9M'],\n      clearsmog: ['9L24'],\n      confuseray: ['9M'],\n      confusion: ['9L1'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fakeout: ['9L1'],\n      flatter: ['9L1'],\n      fling: ['9M'],\n      focusblast: ['9M'],\n      futuresight: ['9M', '9L64', '9S0'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      gunkshot: ['9M'],\n      helpinghand: ['9M', '9L8'],\n      hex: ['9M'],\n      hyperbeam: ['9M'],\n      imprison: ['9M'],\n      lashout: ['9M'],\n      lightscreen: ['9M'],\n      metronome: ['9M'],\n      mudslap: ['9M'],\n      nastyplot: ['9M', '9L56', '9S0'],\n      nightshade: ['9M'],\n      partingshot: ['9L72'],\n      poisonjab: ['9M', '9L32'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      psybeam: ['9M', '9L16'],\n      psychic: ['9M', '9L40', '9S0'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M'],\n      psychup: ['9M'],\n      psyshock: ['9M'],\n      rest: ['9M'],\n      scratch: ['9L1'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M', '9L48', '9S0'],\n      spite: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      swift: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['9M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      uproar: ['9M'],\n      uturn: ['9M'],\n      venoshock: ['9M']\n    }\n  ],\n  [\n    'fezandipiti',\n    {\n      acidspray: ['9M'],\n      acrobatics: ['9M'],\n      aerialace: ['9M'],\n      agility: ['9M'],\n      aircutter: ['9M'],\n      airslash: ['9M'],\n      alluringvoice: ['9M'],\n      attract: ['9L16'],\n      beatup: ['9L48', '9S0'],\n      bravebird: ['9M'],\n      calmmind: ['9M'],\n      charm: ['9M'],\n      crosspoison: ['9L32'],\n      darkpulse: ['9M'],\n      dazzlinggleam: ['9M'],\n      disarmingvoice: ['9M', '9L1'],\n      doublekick: ['9L1'],\n      dualwingbeat: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flatter: ['9L56', '9S0'],\n      fly: ['9M'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M'],\n      heatwave: ['9M'],\n      hex: ['9M'],\n      hurricane: ['9M'],\n      hyperbeam: ['9M'],\n      icywind: ['9M'],\n      lashout: ['9M'],\n      lightscreen: ['9M'],\n      moonblast: ['9L72'],\n      nastyplot: ['9M'],\n      peck: ['9L1'],\n      playrough: ['9M'],\n      poisongas: ['9L1'],\n      poisonjab: ['9M'],\n      poisontail: ['9M'],\n      protect: ['9M'],\n      psychup: ['9M'],\n      quickattack: ['9L8'],\n      rest: ['9M'],\n      roost: ['9L64', '9S0'],\n      shadowball: ['9M'],\n      shadowclaw: ['9M'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      spite: ['9M'],\n      substitute: ['9M'],\n      swagger: ['9L56', '9S0'],\n      swift: ['9M'],\n      swordsdance: ['9M'],\n      tailslap: ['9L40'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      toxic: ['9M'],\n      uproar: ['9M'],\n      uturn: ['9M'],\n      venoshock: ['9M'],\n      wingattack: ['9L24']\n    }\n  ],\n  [\n    'ogerpon',\n    {\n      brickbreak: ['9M'],\n      bulletseed: ['9M'],\n      charm: ['9M'],\n      counter: ['9L1'],\n      doublekick: ['9L1'],\n      encore: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      fling: ['9M'],\n      focusenergy: ['9L6'],\n      followme: ['9L1'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M', '9S1'],\n      growth: ['9L12', '9S0'],\n      helpinghand: ['9M'],\n      hornleech: ['9L1'],\n      ivycudgel: ['9L30', '9S1', '9S0'],\n      knockoff: ['9M'],\n      lashout: ['9M'],\n      leafstorm: ['9M'],\n      leechseed: ['9L1'],\n      lowkick: ['9M', '9S1'],\n      lowsweep: ['9M', '9L24'],\n      magicalleaf: ['9M'],\n      playrough: ['9M'],\n      powerwhip: ['9L54'],\n      protect: ['9M'],\n      quickattack: ['9L1'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      retaliate: ['9L1'],\n      reversal: ['9M'],\n      rocktomb: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      seedbomb: ['9M'],\n      slam: ['9L18', '9S1', '9S0'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      solarblade: ['9M'],\n      spikes: ['9M'],\n      spikyshield: ['9L48'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superpower: ['9L60'],\n      swordsdance: ['9M'],\n      synthesis: ['9L42'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '9L36'],\n      trailblaze: ['9M'],\n      uturn: ['9M'],\n      vinewhip: ['9L1', '9S0'],\n      woodhammer: ['9L66'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  ['ogerponhearthflame', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['ogerponwellspring', { eventOnly: ['See base forme of this Pokémon'] }],\n  ['ogerponcornerstone', { eventOnly: ['See base forme of this Pokémon'] }],\n  [\n    'archaludon',\n    {\n      aurasphere: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M', '9L24'],\n      brickbreak: ['9M'],\n      darkpulse: ['9M'],\n      doubleedge: ['9M'],\n      dracometeor: ['9M'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L48'],\n      dragonpulse: ['9M'],\n      dragontail: ['9M', '9L30'],\n      earthquake: ['9M'],\n      electroshot: ['9L0'],\n      endure: ['9M'],\n      facade: ['9M'],\n      flashcannon: ['9M', '9L54'],\n      focusenergy: ['9L42'],\n      foulplay: ['9M'],\n      gigaimpact: ['9M'],\n      gyroball: ['9M'],\n      hardpress: ['9M'],\n      heavyslam: ['9M'],\n      honeclaws: ['9L12'],\n      hyperbeam: ['9M', '9L66'],\n      irondefense: ['9M', '9L36'],\n      ironhead: ['9M'],\n      leer: ['9L1'],\n      lightscreen: ['9M'],\n      metalburst: ['9L60'],\n      metalclaw: ['9M', '9L1'],\n      metalsound: ['9M', '9L18'],\n      meteorbeam: ['9M'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      roar: ['9M'],\n      rockslide: ['9M'],\n      rocksmash: ['9L6'],\n      rocktomb: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      smackdown: ['9M'],\n      snarl: ['9M'],\n      solarbeam: ['9M'],\n      stealthrock: ['9M'],\n      steelbeam: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      swordsdance: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      thunderwave: ['9M']\n    }\n  ],\n  [\n    'hydrapple',\n    {\n      astonish: ['9L1'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M'],\n      bugbite: ['9M'],\n      bulletseed: ['9M', '9L20'],\n      curse: ['9M'],\n      doubleedge: ['9M'],\n      doublehit: ['9L1'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L12'],\n      dragoncheer: ['9M'],\n      dragonpulse: ['9M', '9L32'],\n      dragontail: ['9M', '9L4'],\n      earthpower: ['9M'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M', '9L40'],\n      facade: ['9M'],\n      ficklebeam: ['9L0'],\n      gigadrain: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      grassyglide: ['9M'],\n      grassyterrain: ['9M'],\n      growth: ['9L8'],\n      gyroball: ['9M'],\n      heavyslam: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      infestation: ['9L1'],\n      leafstorm: ['9M'],\n      magicalleaf: ['9M'],\n      nastyplot: ['9M'],\n      outrage: ['9M'],\n      pollenpuff: ['9M'],\n      pounce: ['9M'],\n      powerwhip: ['9L54'],\n      protect: ['9M', '9L16'],\n      raindance: ['9M'],\n      recover: ['9L36'],\n      recycle: ['9L1'],\n      reflect: ['9M'],\n      rest: ['9M'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      substitute: ['9M', '9L44'],\n      sunnyday: ['9M'],\n      sweetscent: ['9L1'],\n      syrupbomb: ['9L28'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      uproar: ['9M'],\n      withdraw: ['9L1'],\n      yawn: ['9L1']\n    }\n  ],\n  [\n    'gougingfire',\n    {\n      ancientpower: ['9L1'],\n      bite: ['9L21'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M'],\n      bulldoze: ['9M'],\n      burningbulwark: ['9L49', '9S0'],\n      crunch: ['9M'],\n      crushclaw: ['9L35'],\n      doubleedge: ['9M'],\n      doublekick: ['9L1'],\n      dracometeor: ['9M'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L28'],\n      dragondance: ['9M'],\n      dragonpulse: ['9M'],\n      dragonrush: ['9L56', '9S0'],\n      dragontail: ['9M'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M', '9L63', '9S0'],\n      firefang: ['9M', '9L7'],\n      firespin: ['9M'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M'],\n      flareblitz: ['9M', '9L84'],\n      gigaimpact: ['9M'],\n      heatcrash: ['9M'],\n      heatwave: ['9M'],\n      howl: ['9L14'],\n      hyperbeam: ['9M'],\n      incinerate: ['9L1'],\n      ironhead: ['9M'],\n      lavaplume: ['9L70', '9S0'],\n      leer: ['9L1'],\n      morningsun: ['9L42'],\n      nobleroar: ['9L1'],\n      outrage: ['9M', '9L77'],\n      overheat: ['9M'],\n      protect: ['9M'],\n      psychicfangs: ['9M'],\n      ragingfury: ['9L91'],\n      rest: ['9M'],\n      reversal: ['9M'],\n      roar: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      scorchingsands: ['9M'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M'],\n      snarl: ['9M'],\n      stomp: ['9L1'],\n      stompingtantrum: ['9M'],\n      stoneedge: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M'],\n      weatherball: ['9M']\n    }\n  ],\n  [\n    'ragingbolt',\n    {\n      ancientpower: ['9L1'],\n      bodypress: ['9M', '9L84'],\n      bodyslam: ['9M'],\n      breakingswipe: ['9M'],\n      calmmind: ['9M', '9L42'],\n      charge: ['9M', '9L7'],\n      chargebeam: ['9M'],\n      crunch: ['9M'],\n      discharge: ['9L28'],\n      doubleedge: ['9M'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L14'],\n      dragoncheer: ['9M'],\n      dragonhammer: ['9L56', '9S0'],\n      dragonpulse: ['9M', '9L70', '9S0'],\n      dragontail: ['9M', '9L35'],\n      earthquake: ['9M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M', '9L21'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      heavyslam: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      outrage: ['9M'],\n      protect: ['9M'],\n      rest: ['9M'],\n      risingvoltage: ['9L63', '9S0'],\n      roar: ['9M'],\n      scaryface: ['9M'],\n      shockwave: ['9L1'],\n      sleeptalk: ['9M'],\n      snarl: ['9M'],\n      solarbeam: ['9M'],\n      stomp: ['9L1'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M', '9L1'],\n      supercellslam: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L91'],\n      thunderbolt: ['9M'],\n      thunderclap: ['9L49', '9S0'],\n      thunderfang: ['9M'],\n      thunderwave: ['9M'],\n      twister: ['9L1'],\n      voltswitch: ['9M'],\n      weatherball: ['9M'],\n      wildcharge: ['9M'],\n      zapcannon: ['9L77']\n    }\n  ],\n  [\n    'ironboulder',\n    {\n      aerialace: ['9M'],\n      agility: ['9M', '9L21'],\n      airslash: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      closecombat: ['9M'],\n      counter: ['9L35'],\n      doubleedge: ['9M'],\n      earthquake: ['9M'],\n      electricterrain: ['9M', '9L1'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M', '9L91'],\n      hornattack: ['9L1'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M'],\n      ironhead: ['9M'],\n      leer: ['9L1'],\n      megahorn: ['9L70', '9S0'],\n      meteorbeam: ['9M'],\n      mightycleave: ['9L56', '9S0'],\n      poisonjab: ['9M'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      psychocut: ['9L28'],\n      psyshock: ['9M'],\n      quickattack: ['9L7'],\n      quickguard: ['9L77'],\n      rest: ['9M'],\n      rockblast: ['9M'],\n      rockthrow: ['9L1'],\n      rocktomb: ['9M', '9L42'],\n      sacredsword: ['9L49', '9S0'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      slash: ['9L14'],\n      sleeptalk: ['9M'],\n      solarblade: ['9M'],\n      stoneedge: ['9M', '9L84'],\n      substitute: ['9M'],\n      swordsdance: ['9M', '9L63', '9S0'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M'],\n      wildcharge: ['9M'],\n      xscissor: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'ironcrown',\n    {\n      agility: ['9M'],\n      airslash: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      bulldoze: ['9M'],\n      calmmind: ['9M'],\n      confusion: ['9L1'],\n      doubleedge: ['9M'],\n      electricterrain: ['9M', '9L1'],\n      endure: ['9M'],\n      expandingforce: ['9M'],\n      facade: ['9M'],\n      flashcannon: ['9M', '9L42'],\n      focusblast: ['9M'],\n      futuresight: ['9M', '9L63', '9S0'],\n      gigaimpact: ['9M'],\n      gravity: ['9M'],\n      heavyslam: ['9M'],\n      hyperbeam: ['9M', '9L91'],\n      irondefense: ['9M', '9L21'],\n      ironhead: ['9M'],\n      leer: ['9L1'],\n      metalburst: ['9L84'],\n      metalclaw: ['9M', '9L1'],\n      metalsound: ['9M'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      psychicnoise: ['9M'],\n      psychocut: ['9L35'],\n      psyshock: ['9M', '9L28'],\n      quickguard: ['9L77'],\n      rest: ['9M'],\n      sacredsword: ['9L49', '9S0'],\n      scaryface: ['9M'],\n      slash: ['9L14'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M', '9L7'],\n      solarblade: ['9M'],\n      steelbeam: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      supercellslam: ['9M'],\n      swordsdance: ['9M'],\n      tachyoncutter: ['9L56', '9S0'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      voltswitch: ['9M', '9L70', '9S0'],\n      xscissor: ['9M'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'terapagos',\n    {\n      ancientpower: ['9L10'],\n      aurasphere: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      bugbuzz: ['9M'],\n      calmmind: ['9M'],\n      crunch: ['9M'],\n      darkpulse: ['9M'],\n      dazzlinggleam: ['9M'],\n      doubleedge: ['9M', '9L70'],\n      dragonpulse: ['9M'],\n      earthpower: ['9M', '9L40', '9S0'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      flamethrower: ['9M'],\n      flareblitz: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      gravity: ['9M'],\n      gyroball: ['9M', '9L90'],\n      headbutt: ['9L20'],\n      heatcrash: ['9M'],\n      heavyslam: ['9M', '9L50'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icespinner: ['9M'],\n      ironhead: ['9M'],\n      meteorbeam: ['9M'],\n      powergem: ['9M'],\n      protect: ['9M', '9L30'],\n      raindance: ['9M'],\n      rapidspin: ['9L1'],\n      rest: ['9M'],\n      roar: ['9M'],\n      rockpolish: ['9L80'],\n      rockslide: ['9M'],\n      scorchingsands: ['9M'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      stealthrock: ['9M'],\n      stoneedge: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      supercellslam: ['9M'],\n      surf: ['9M'],\n      takedown: ['9M'],\n      terastarstorm: ['9L60', '9S0'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      toxic: ['9M'],\n      triattack: ['9L1'],\n      waterpulse: ['9M', '9S0'],\n      weatherball: ['9M'],\n      wildcharge: ['9M'],\n      withdraw: ['9L1'],\n      zenheadbutt: ['9M', '9S0']\n    }\n  ],\n  [\n    'pecharunt',\n    {\n      acidspray: ['9M'],\n      astonish: ['9L1'],\n      curse: ['9M'],\n      defensecurl: ['9L1'],\n      destinybond: ['9L16'],\n      endure: ['9M'],\n      faketears: ['9M', '9L24'],\n      foulplay: ['9M'],\n      gunkshot: ['9M'],\n      hex: ['9M'],\n      imprison: ['9M'],\n      malignantchain: ['9L48', '9S0'],\n      meanlook: ['9L1'],\n      memento: ['9L1'],\n      nastyplot: ['9M', '9L64', '9S0'],\n      nightshade: ['9M'],\n      partingshot: ['9L32'],\n      phantomforce: ['9M'],\n      poisongas: ['9L1'],\n      poltergeist: ['9M'],\n      protect: ['9M'],\n      recover: ['9L72'],\n      rest: ['9M'],\n      rollout: ['9L1'],\n      shadowball: ['9M', '9L40', '9S0'],\n      sleeptalk: ['9M'],\n      sludgebomb: ['9M'],\n      sludgewave: ['9M'],\n      smog: ['9L1'],\n      spite: ['9M'],\n      substitute: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L56', '9S0'],\n      venoshock: ['9M'],\n      withdraw: ['9L8']\n    }\n  ],\n  [\n    'syclar',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      attract: ['8M', '7M', '4M'],\n      avalanche: ['9M', '9L31', '8M', '8L31', '7L48', '4M'],\n      blizzard: ['9M', '8M', '7M', '4M'],\n      bugbite: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      bugbuzz: ['9M', '9L50', '8M', '8L50', '7L43', '4L42'],\n      captivate: ['4M'],\n      confide: ['7M'],\n      counter: ['9E', '8E', '7E', '4T'],\n      cut: ['6M', '4M'],\n      doubleedge: ['9E', '8E', '4T'],\n      doubleteam: ['7M', '4M'],\n      earthpower: ['9M', '8M', '8E', '7E', '4T', '4E'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      falseswipe: ['9M', '8M', '7M', '4M'],\n      fellstinger: ['9E', '8E', '7E'],\n      fling: ['9M', '8M', '7M', '4M'],\n      focusenergy: ['9L25', '8M', '8L25', '7L10', '4L13'],\n      focuspunch: ['9M', '7T'],\n      frostbreath: ['7M'],\n      frustration: ['7M', '4M'],\n      furyattack: ['9L5', '8L5', '7L14', '4L1'],\n      furycutter: ['9L10', '8L10', '7L23', '4T'],\n      hail: ['8M', '7M', '7L34', '4M', '4L28'],\n      hiddenpower: ['7M', '4M'],\n      honeclaws: ['7M'],\n      icebeam: ['9M', '8M', '7M', '4M'],\n      icefang: ['9M', '8M'],\n      icepunch: ['9M', '8M', '7L1'],\n      iceshard: ['9L15', '8L15', '7L5', '4L8'],\n      icespinner: ['9M'],\n      iciclecrash: ['9L45', '8L45', '7L39'],\n      icywind: ['9M', '9L20', '8M', '8L20', '7T', '7L19', '4T', '4L18'],\n      leechlife: ['9M', '8M', '7M', '4L5'],\n      leer: ['9L1', '8L1', '7L1', '4L1'],\n      naturalgift: ['4M'],\n      pinmissile: ['9E', '8M', '7E', '6E', '5E', '4E'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M'],\n      screech: ['8M'],\n      secretpower: ['7M', '4M'],\n      sheercold: ['9L55', '8L55', '5L55', '4L49'],\n      signalbeam: ['7T', '7E'],\n      silverwind: ['4M'],\n      skittersmack: ['8T'],\n      slash: ['9L35', '8L35', '7L28'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      snowscape: ['9M'],\n      spikes: ['9M', '8M', '7E', '4E'],\n      strength: ['6M', '5M'],\n      stringshot: ['9E', '8E', '4T'],\n      strugglebug: ['9M', '9E', '8E', '7M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      superpower: ['8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      swagger: ['7M', '4M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '4M'],\n      tailglow: ['9E', '7E', '6E', '5E', '4E'],\n      taunt: ['9M', '8M', '7M', '4M'],\n      terablast: ['9M'],\n      toxic: ['7M', '4M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M', '4M'],\n      waterpulse: ['9M', '6T', '4M'],\n      xscissor: ['9M', '9L40', '8M', '8L40', '7M', '7L31', '4M', '4L23']\n    }\n  ],\n  [\n    'syclant',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      attract: ['8M', '7M', '4M'],\n      avalanche: ['9M', '9L33', '8M', '8L33', '7L50', '4M', '4L49'],\n      blizzard: ['9M', '8M', '7M', '4M'],\n      brickbreak: ['9M', '8M', '7M', '4M'],\n      brutalswing: ['8M', '7M'],\n      bugbite: ['9M', '7T', '6T', '5T', '4T'],\n      bugbuzz: ['9M', '9L60', '8M', '8L60', '7L46', '4L42'],\n      bulldoze: ['9M', '8M', '7M'],\n      captivate: ['4M'],\n      closecombat: ['9M'],\n      confide: ['7M'],\n      counter: ['4T'],\n      cut: ['4M'],\n      doubleedge: ['4T'],\n      doubleteam: ['7M', '4M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M', '4T'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      falseswipe: ['9M', '8M', '7M', '4M'],\n      fling: ['9M', '8M', '7M', '4M'],\n      focusblast: ['9M', '8M', '7M', '4M'],\n      focusenergy: ['9L25', '8M', '8L25', '7L10', '4L8'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      frostbreath: ['7M'],\n      frustration: ['7M', '4M'],\n      furyattack: ['9L1', '8L1', '7L14', '4L1'],\n      furycutter: ['9L1', '8L1', '7L23', '4T'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      hail: ['8M', '7M', '7L37', '4M', '4L35'],\n      hiddenpower: ['7M', '4M'],\n      honeclaws: ['7M'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      icebeam: ['9M', '8M', '7M', '4M'],\n      icefang: ['9M', '8M'],\n      icepunch: ['9M', '9L1', '8M', '8L1', '7L1', '4T', '4L30'],\n      iceshard: ['9L15', '8L15', '7L5', '4L5'],\n      icespinner: ['9M'],\n      iciclecrash: ['9L53', '8L53', '7L41'],\n      iciclespear: ['9M', '9L1', '8M', '8L1', '7L1'],\n      icywind: ['9M', '9L20', '8M', '8L20', '7L19', '4T', '4L18'],\n      leechlife: ['9M', '8M', '7M', '4L1'],\n      leer: ['9L1', '8L1', '7L1', '4L1'],\n      megapunch: ['8M'],\n      metronome: ['9M', '8M'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      pinmissile: ['8M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      round: ['8M', '7M'],\n      screech: ['8M'],\n      secretpower: ['7M', '4M'],\n      sheercold: ['9L67', '8L67', '5L59', '4L60'],\n      signalbeam: ['7T'],\n      silverwind: ['4M'],\n      skittersmack: ['9M', '8T'],\n      slash: ['9L39', '8L39', '7L28', '4L14'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snore: ['8M', '4T'],\n      snowscape: ['9M'],\n      spikes: ['9M', '8M'],\n      stoneedge: ['9M', '8M', '7M', '4M'],\n      strength: ['6M', '5M', '4M'],\n      stringshot: ['4T'],\n      strugglebug: ['9M', '7M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '4M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '4M'],\n      taunt: ['9M', '8M', '7M', '4M'],\n      terablast: ['9M'],\n      toxic: ['7M', '4M'],\n      trailblaze: ['9M'],\n      tripleaxel: ['9M', '8T'],\n      uturn: ['9M', '8M', '7M', '4M'],\n      waterpulse: ['9M', '6T', '4M'],\n      xscissor: ['9M', '9L46', '8M', '8L46', '7M', '7L32', '4M', '4L27']\n    }\n  ],\n  [\n    'revenankh',\n    {\n      ancientpower: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      armthrust: ['9L4', '8L4', '7L8', '6L8', '5L8', '4L8'],\n      attract: ['8M', '7M', '6M', '5M', '4M'],\n      bind: ['7T', '6T', '5T'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      bulkup: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '8M'],\n      coaching: ['8T'],\n      confide: ['7M', '6M'],\n      confuseray: ['9M'],\n      counter: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      curse: ['9L36', '8L36', '7L28', '6L28', '5L28', '4L28'],\n      darkestlariat: ['8M'],\n      darkpulse: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      destinybond: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      detect: ['9L8', '8L8', '7L11', '6L11', '5L11', '4L11'],\n      dig: ['9M', '8M', '6M', '5M', '4M'],\n      doubleteam: ['8M', '7M', '6M', '5M', '4M'],\n      drainpunch: ['9M', '8M', '7T', '6T', '5T', '4M'],\n      dreameater: ['7M', '6M', '5M', '4M'],\n      dualchop: ['7T', '6T', '5T'],\n      earthquake: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      embargo: ['7M', '6M', '5M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      fling: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focusblast: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      focuspunch: ['9M', '9L56', '8L60', '7T', '6T', '4M'],\n      forcepalm: ['9L28', '8L28', '7L15', '6L15', '5L15', '4L15'],\n      foulplay: ['9M', '8M', '7T', '6T', '5T'],\n      frustration: ['7M', '6M', '5M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      glare: ['9L24', '8L24', '7L21', '6L21', '5L21', '4L21'],\n      grudge: ['8L52', '7L55', '6L55', '5L55', '4L49'],\n      hammerarm: ['9L48', '8L48', '7L49', '6L49', '5L49', '4L44'],\n      helpinghand: ['9M', '8M'],\n      hex: ['9M', '9L32', '8M', '8L32', '7L44', '6L44', '5L44'],\n      hiddenpower: ['7M', '6M', '5M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      knockoff: ['9M', '9L40', '8L40', '7T', '6T', '5T', '4T'],\n      laserfocus: ['7T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1'],\n      machpunch: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      meanlook: ['9L16', '8L16', '7L5', '6L5', '5L5', '4L5'],\n      megapunch: ['8M'],\n      memento: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      metronome: ['9M', '8M'],\n      moonlight: ['9L44', '8L44', '7L66', '6L66', '5L66', '4L60'],\n      mudslap: ['9M', '4T'],\n      nastyplot: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      ominouswind: ['7E', '6E', '5E', '4T', '4E'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      phantomforce: ['9M'],\n      poisonjab: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      poltergeist: ['9M', '8T'],\n      poweruppunch: ['6M'],\n      powerwhip: ['9L52', '8L56', '7L60', '6L60', '5L60', '4L55'],\n      protect: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      psychup: ['7M', '6M', '5M', '4M'],\n      punishment: ['7L33', '6L33', '5L33', '4L33'],\n      quickguard: ['9E', '8E', '7E', '6E'],\n      raindance: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rest: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      retaliate: ['8M', '6M', '5M'],\n      return: ['7M', '6M', '5M', '4M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '7L18', '6M', '6L18', '5M', '5L18', '4M', '4L18'],\n      roleplay: ['7T', '6T', '5T', '4T'],\n      round: ['8M', '7M', '6M', '5M'],\n      safeguard: ['8M', '7M', '6M', '5M', '4M'],\n      sandstorm: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      sandtomb: ['9M', '9L12', '8M', '8L12', '7L39', '6L39', '5L39', '4L39'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['6M', '4M'],\n      shadowball: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowclaw: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      shadowpunch: ['9L20', '8L20', '7L25', '6L25', '5L25', '4L25'],\n      shadowsneak: ['9E', '8E', '7E', '6E', '5E', '4E'],\n      sleeptalk: ['9M', '8M', '7M', '6M', '5T', '4M'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T', '6T', '5T', '4M'],\n      snore: ['8M', '7T', '6T', '5T', '4T'],\n      spite: ['9M', '7T', '6T', '5T', '4T'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      suckerpunch: ['9E', '8E', '7E', '6E', '5E', '4T'],\n      sunnyday: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '6M', '5M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      telekinesis: ['7T', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      throatchop: ['8M', '7T'],\n      thunderpunch: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      torment: ['7M', '6M', '5M', '4M'],\n      toxic: ['7M', '6M', '5M', '4M'],\n      trick: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      trickroom: ['9M', '8M', '7M', '6M', '5M', '4M'],\n      upperhand: ['9M'],\n      vacuumwave: ['9M', '4T'],\n      willowisp: ['9M', '8M', '7M'],\n      wonderroom: ['8M', '7T', '6T', '5T'],\n      workup: ['8M', '7M', '5M'],\n      wrap: ['9L1', '8L1', '7L1', '6L1', '5L1', '4L1']\n    }\n  ],\n  [\n    'embirch',\n    {\n      amnesia: ['9M', '8M', '7L37'],\n      aromatherapy: ['7E', '4E'],\n      attract: ['8M', '7M', '4M'],\n      block: ['9E', '8E', '7T', '4T'],\n      bulldoze: ['9M', '8M'],\n      bulletseed: ['9M', '9L1', '8M', '8L1', '7L1', '4M', '4L1'],\n      confide: ['7M'],\n      counter: ['9E', '8E', '7E', '4T', '4E'],\n      doubleedge: ['9L40', '8L40', '7L1', '7E', '4T', '4L33'],\n      doubleteam: ['7M', '4M'],\n      dragonbreath: ['9E', '8E', '7E', '4E'],\n      dragondance: ['9M', '8M'],\n      earthpower: ['9M', '8M', '7T'],\n      ember: ['9L4', '8L4', '7L5', '4L9'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fireblast: ['9M', '8M'],\n      firespin: ['9M', '8M', '7E', '4L25'],\n      flamecharge: ['9M', '7M'],\n      flamethrower: ['9M', '8M', '7M', '4M'],\n      flamewheel: ['9L16', '8L16', '7L19', '4L17'],\n      flareblitz: ['9M', '8M'],\n      flash: ['4M'],\n      frustration: ['7M', '4M'],\n      gigadrain: ['9M', '9L20', '8M', '8L20', '7T', '7L32', '4M', '4L21'],\n      grassknot: ['9M', '8M', '7M', '4M'],\n      grasswhistle: ['7E', '4E'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M', '7E'],\n      growth: ['9L12', '8L12', '7L28', '4L5'],\n      headbutt: ['4T'],\n      heatcrash: ['9M', '9L44', '8M', '8L44'],\n      heatwave: ['9M', '8M', '7T', '4T'],\n      hiddenpower: ['7M', '4M'],\n      incinerate: ['7M'],\n      irondefense: ['9M', '8M', '7T', '7L37', '4T'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T', '4M'],\n      lavaplume: ['9L32', '8L32', '7L41', '4L40'],\n      leechseed: ['9L8', '8L8', '7L10', '4L13'],\n      lightscreen: ['9M', '8M', '7M', '4M'],\n      magicalleaf: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['8E', '7M'],\n      overheat: ['9M', '8M', '7M', '4M'],\n      petaldance: ['9L36', '8L36', '7L46', '4L29'],\n      protect: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      revenge: ['8M', '7E', '4E'],\n      roar: ['7M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['4M'],\n      rocktomb: ['9M', '8M', '7M', '4M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M', '4M'],\n      sandtomb: ['9M', '8M', '7L23', '7E', '4E'],\n      secretpower: ['4M'],\n      seedbomb: ['9M', '9L28', '8M', '8L28', '7T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '4M'],\n      stealthrock: ['9M', '8M', '7T', '4M'],\n      strength: ['4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      sweetscent: ['9L1', '8L1', '7L1', '4L1'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '4M'],\n      synthesis: ['9L25', '8L25', '7T', '7L14', '4T', '4L37'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      toxic: ['7M', '4M'],\n      trailblaze: ['9M'],\n      watersport: ['7E', '4E'],\n      wildcharge: ['9M', '8M'],\n      willowisp: ['9M', '8M', '7M', '4M'],\n      worryseed: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'flarelm',\n    {\n      amnesia: ['9M', '9L39', '8M', '8L39', '7L37'],\n      ancientpower: ['4T'],\n      attract: ['8M', '7M', '4M'],\n      block: ['7T', '4T'],\n      bulldoze: ['9M', '8M', '7M'],\n      bulletseed: ['9M', '9L1', '8M', '8L1', '7L1', '4M', '4L1'],\n      burningjealousy: ['9M', '8T'],\n      confide: ['7M'],\n      counter: ['4T'],\n      doubleedge: ['9L56', '8L56', '7L1', '4T'],\n      doubleteam: ['7M', '4M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '7T'],\n      dragontail: ['9M', '7M'],\n      earthpower: ['9M', '8M', '7T', '4T'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      ember: ['9L1', '8L1', '7L5', '4L9'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fireblast: ['9M', '8M', '7M', '4M'],\n      firespin: ['9M', '8M', '4L28'],\n      flameburst: ['7L24'],\n      flamecharge: ['9M', '9L0', '8L0', '7M'],\n      flamethrower: ['9M', '8M', '7M', '4M'],\n      flamewheel: ['9L16', '8L16', '7L19', '4L17'],\n      flareblitz: ['9M', '8M'],\n      flash: ['4M'],\n      flashcannon: ['9M', '8M', '7M'],\n      frustration: ['7M', '4M'],\n      gigadrain: ['9M', '9L20', '8M', '8L20', '7L32', '4M', '4L21'],\n      grassknot: ['9M', '8M', '7M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L12', '8L12', '7L28', '4L5'],\n      headbutt: ['4T'],\n      heatcrash: ['9M', '9L62', '8M', '8L62'],\n      heatwave: ['9M', '8M', '7T', '4T'],\n      hiddenpower: ['7M', '4M'],\n      incinerate: ['7M'],\n      irondefense: ['9M', '9L39', '8M', '8L39', '7L37', '4T', '4L40'],\n      ironhead: ['8M', '7T'],\n      irontail: ['8M', '7T', '4M'],\n      lavaplume: ['9L44', '8L44', '7L46', '4L48'],\n      leechseed: ['9L1', '8L1', '7L10', '4L13'],\n      lightscreen: ['9M', '8M', '7M', '4M'],\n      lowkick: ['9M', '8M', '7T', '4T'],\n      magicalleaf: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M'],\n      overheat: ['9M', '8M', '7M', '4M'],\n      petaldance: ['9L50', '8L50', '7L50', '4L36'],\n      protect: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      revenge: ['8M'],\n      roar: ['7M', '4M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '4M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M', '4M'],\n      sandtomb: ['9M', '8M'],\n      secretpower: ['7M', '4M'],\n      seedbomb: ['9M', '9L32', '8M', '8L32', '7L23', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      solarbeam: ['9M', '8M', '7M', '4M'],\n      stealthrock: ['9M', '8M', '7T', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      sweetscent: ['9L1', '8L1', '7L1', '4L1'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '4M'],\n      synthesis: ['9L27', '8L27', '7L14', '4T', '4L44'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      toxic: ['7M', '4M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '8M', '7M'],\n      willowisp: ['9M', '8M', '7M', '4M'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'pyroak',\n    {\n      amnesia: ['9M', '9L41', '8M', '8L41', '7L37'],\n      ancientpower: ['4T'],\n      aromaticmist: ['9L1', '8L1', '7L59'],\n      attract: ['8M', '7M', '4M'],\n      block: ['7T', '4T'],\n      bulldoze: ['9M', '8M', '7M'],\n      bulletseed: ['9M', '9L1', '8M', '8L1', '7L1', '4M', '4L1'],\n      burningjealousy: ['9M', '8T'],\n      burnup: ['8L72', '7L68'],\n      confide: ['7M'],\n      counter: ['4T'],\n      doubleedge: ['9L1', '8L1', '4T'],\n      doubleteam: ['7M', '4M'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '7T'],\n      dragontail: ['9M', '7M'],\n      earthpower: ['9M', '8M', '7T', '4T'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      ember: ['9L1', '8L1', '7L5', '4L9'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '9L0', '8M', '8L0', '7M', '7L1', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fireblast: ['9M', '8M', '7M', '4M'],\n      firespin: ['9M', '8M', '4L28'],\n      flameburst: ['7L24'],\n      flamecharge: ['9M', '9L1', '8L1', '7M'],\n      flamethrower: ['9M', '8M', '7M', '4M'],\n      flamewheel: ['9L16', '8L16', '7L19', '4L17'],\n      flareblitz: ['9M', '8M', '8L1', '7L1', '4L1'],\n      flash: ['4M'],\n      flashcannon: ['9M', '8M', '7M', '7L46'],\n      frustration: ['7M', '4M'],\n      gigadrain: ['9M', '9L20', '8M', '8L20', '7L32', '4M', '4L21'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      grassknot: ['9M', '8M', '7M', '4M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      growth: ['9L12', '8L12', '7L28', '4L5'],\n      headbutt: ['4T'],\n      heatcrash: ['9M', '9L64', '8M', '8L64', '7L41'],\n      heatwave: ['9M', '8M', '7T', '4T'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['7M', '4M'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      incinerate: ['7M'],\n      irondefense: ['9M', '9L41', '8M', '8L41', '7L37', '4T', '4L42'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T', '4M'],\n      lavaplume: ['9L48', '8L48', '7L50', '4L54'],\n      leechseed: ['9L1', '8L1', '7L10', '4L13'],\n      lightscreen: ['9M', '8M', '7M', '4M'],\n      lowkick: ['9M', '8M', '7T', '4T'],\n      magicalleaf: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M'],\n      overheat: ['9M', '9L72', '8M', '7M', '4M'],\n      petalblizzard: ['9L1', '8L1'],\n      petaldance: ['9L56', '8L56', '7L55', '4L36'],\n      protect: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      revenge: ['8M'],\n      roar: ['7M', '4M'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '4M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M', '4M'],\n      sandtomb: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['7M', '4M'],\n      seedbomb: ['9M', '9L32', '8M', '8L32', '7L23', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snore: ['8M', '4T'],\n      solarbeam: ['9M', '8M', '7M', '4M'],\n      solarblade: ['9M', '8M'],\n      stealthrock: ['9M', '8M', '7T', '4M'],\n      strength: ['6M', '5M', '4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      sweetscent: ['9L1', '8L1', '7L1', '4L1'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M', '4M'],\n      synthesis: ['9L27', '8L27', '7L14', '4T', '4L48'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      toxic: ['7M', '4M'],\n      trailblaze: ['9M'],\n      wildcharge: ['9M', '8M', '7M'],\n      willowisp: ['9M', '8M', '7M', '4M'],\n      woodhammer: ['9L1', '8L1', '7L1', '4L1'],\n      worryseed: ['7T', '6T', '5T', '4T'],\n      zapcannon: ['9L1', '8L1', '7L64', '4L60'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'breezi',\n    {\n      acrobatics: ['9M', '9L8', '8M', '8L8', '7M', '7L59'],\n      aerialace: ['9M', '9L16', '8L16', '7M', '7L30', '4M', '4L55'],\n      afteryou: ['7T'],\n      attract: ['8M', '7M', '4M'],\n      block: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      bodyslam: ['9M', '8M', '4T', '4L30'],\n      bounce: ['8M'],\n      captivate: ['4M'],\n      confide: ['7M'],\n      copycat: ['9E', '8E', '7L19', '4L19'],\n      disable: ['9E', '8E', '7E', '4E'],\n      doubleedge: ['9E', '8E', '7E', '4T'],\n      doubleteam: ['7M', '4M'],\n      encore: ['9M', '9L12', '8M', '8L12', '7L5', '4L5'],\n      endure: ['9M', '8M', '4M'],\n      entrainment: ['9E', '8E', '7E'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fling: ['9M', '8M', '7M', '4M'],\n      followme: ['9L28', '8L28', '7E', '4E'],\n      frustration: ['7M', '4M'],\n      gastroacid: ['7T', '4T'],\n      gunkshot: ['9M', '9L52', '8M', '8L52'],\n      gust: ['9L1', '8L1', '7L1', '4L1'],\n      healblock: ['7L54', '4L50'],\n      healingwish: ['9E'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T', '7L1', '4T', '4L1'],\n      hiddenpower: ['7M', '4M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '4T'],\n      knockoff: ['9M', '9L24', '8L24', '7L14', '4T', '4L14'],\n      lightscreen: ['9M', '8M', '7M', '4M'],\n      luckychant: ['7L55', '4L59'],\n      magicroom: ['9E', '8M', '7E'],\n      mefirst: ['7E', '4E'],\n      metronome: ['9M', '8M', '7E', '4T', '4E'],\n      mimic: ['7E', '5E'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      poisonjab: ['9M', '8M', '7M', '4M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      psychup: ['7M', '4M'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      reflect: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '9L48', '8M', '8L48', '7M', '7L44', '4M', '4L44'],\n      return: ['7M', '4M'],\n      roleplay: ['7T'],\n      round: ['8M', '7M'],\n      safeguard: ['9L44', '8M', '8L44', '7M', '7L9', '4M', '4L9'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      sandtomb: ['9M', '8M', '7E', '6E', '5E', '4E'],\n      secretpower: ['7M', '4M'],\n      selfdestruct: ['9E', '8M'],\n      shadowball: ['9M', '8M', '7M', '4M'],\n      skillswap: ['9M', '8M', '7M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      sludgebomb: ['9M', '9L36', '8M', '8L36', '7M', '7L34', '4M', '4L34'],\n      sludgewave: ['8M'],\n      snatch: ['7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      speedswap: ['8M'],\n      spikes: ['9M', '8M', '7E', '4E'],\n      stealthrock: ['9M', '8M', '7T'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      tailwind: ['9M', '9L4', '8L4', '7L1', '4T', '4L1'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M'],\n      toxic: ['9M', '9L40', '8L40', '7M', '6M', '5M', '4M'],\n      toxicspikes: ['9M', '9L20', '8M', '8L20', '7L39', '4L39'],\n      trickroom: ['9M', '8M', '7M', '4M'],\n      twister: ['4T'],\n      uturn: ['9M', '8M', '7M', '4M'],\n      venoshock: ['9M', '8M', '7M'],\n      whirlwind: ['9L32', '8L32', '7L25', '4L25'],\n      wish: ['9E', '8E', '7E', '4E'],\n      wonderroom: ['9E', '8M', '7E']\n    }\n  ],\n  [\n    'fidgit',\n    {\n      acrobatics: ['9M', '9L1', '8M', '8L1', '7M'],\n      aerialace: ['9M', '9L1', '8L1', '7M', '4M'],\n      afteryou: ['7T'],\n      attract: ['8M', '7M', '4M'],\n      block: ['7T', '6T', '5T', '4T'],\n      bodyslam: ['9M', '9L28', '8M', '8L28', '7L30', '4T', '4L30'],\n      bounce: ['8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      captivate: ['4M'],\n      cometpunch: ['7L1', '4L1'],\n      confide: ['7M'],\n      copycat: ['7L19', '4L19'],\n      dig: ['9M', '8M', '7M'],\n      doubleedge: ['4T'],\n      doubleteam: ['7M', '4M'],\n      drillrun: ['9M', '9L0', '8M', '8L0', '7L1'],\n      earthpower: ['9M', '9L56', '8M', '8L56', '7L60', '4T', '4L59'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      encore: ['9M', '9L1', '8M', '8L1', '7L5', '4L5'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fling: ['9M', '8M', '7M', '4M'],\n      followme: ['9L1', '8L1'],\n      frustration: ['7M', '4M'],\n      gastroacid: ['9L1', '8L1', '7T', '4T'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      gravity: ['9M', '9L50', '8L50', '7L47', '4T', '4L49'],\n      gunkshot: ['9M', '9L62', '8M', '8L62'],\n      gust: ['9L1', '8L1', '7L1', '4L1'],\n      healblock: ['7L54', '4L53'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7L1', '4T', '4L1'],\n      hiddenpower: ['7M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      icespinner: ['9M'],\n      icywind: ['9M', '8M', '7T', '4T'],\n      knockoff: ['9M', '9L24', '8L24', '7L14', '4T', '4L14'],\n      lightscreen: ['9M', '8M', '7M', '4M'],\n      luckychant: ['7L65', '4L67'],\n      magicroom: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M', '8M', '4T'],\n      mudshot: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      poisonjab: ['9M', '8M', '7M', '4M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      psychup: ['9M', '7M', '4M'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rapidspin: ['9L16', '8L16', '7L9', '4L9'],\n      reflect: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '9L1', '8M', '8L1', '7M', '4M'],\n      return: ['7M', '4M'],\n      rockclimb: ['4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '4M'],\n      roleplay: ['7T'],\n      rototiller: ['7L1'],\n      round: ['8M', '7M'],\n      safeguard: ['9L1', '8M', '8L1', '7M', '4M'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      sandtomb: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['7M', '4M'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '8M', '7M', '4M'],\n      skillswap: ['9M', '8M', '7M', '4M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      sludgebomb: ['9M', '9L38', '8M', '8L38', '7M', '7L35', '4M', '4L35'],\n      sludgewave: ['9M', '8M', '7M'],\n      smartstrike: ['9M', '8M'],\n      snatch: ['7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      speedswap: ['8M'],\n      spikes: ['9M', '8M'],\n      stealthrock: ['9M', '8M', '7T', '4M'],\n      stompingtantrum: ['9M', '8M'],\n      stoneedge: ['9M', '8M', '7M', '4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      swift: ['9M', '8M', '4T'],\n      tailwind: ['9M', '9L1', '8L1', '7L1', '4T', '4L1'],\n      taunt: ['9M', '8M', '7M', '4M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '4M'],\n      torment: ['7M', '4M'],\n      toxic: ['9M', '9L44', '8L44', '7M', '6M', '5M', '4M'],\n      toxicspikes: ['9M', '9L20', '8M', '8L20', '7L41', '4L41'],\n      trickroom: ['9M', '8M', '7M', '4M'],\n      twister: ['4T'],\n      upperhand: ['9M'],\n      uturn: ['9M', '8M', '7M', '4M'],\n      venoshock: ['9M', '8M', '7M'],\n      whirlwind: ['9L32', '8L32', '7L25', '4L25'],\n      wideguard: ['9L12', '8L12', '7L1'],\n      wonderroom: ['8M']\n    }\n  ],\n  [\n    'rebble',\n    {\n      accelerock: ['9L20', '8L20', '7L21'],\n      acupressure: ['9L40', '8L40', '7L26', '4L20'],\n      aerialace: ['9M', '7M', '4M'],\n      ancientpower: ['9L29', '8L29', '7L30', '4T'],\n      bulldoze: ['9M', '8M', '7M'],\n      calmmind: ['9M', '8M', '7M', '4M'],\n      confide: ['7M'],\n      cut: ['4M'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      defensecurl: ['9L1', '8L1', '7L1', '4L1'],\n      disable: ['9L16', '8L16', '7L17', '4L17'],\n      doubleedge: ['9L44', '8L44', '7L41', '4L41'],\n      doubleteam: ['7M', '4M'],\n      earthpower: ['9M', '8M', '7T', '7L45', '4T'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      embargo: ['7M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '4M'],\n      explosion: ['9L56', '8L56', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      falseswipe: ['9M', '8M', '7M', '4M'],\n      fireblast: ['9M', '8M', '7M', '4M'],\n      flamethrower: ['9M', '8M', '7M', '4M'],\n      flash: ['4M'],\n      frustration: ['7M', '4M'],\n      gigadrain: ['9M', '8M', '7T', '4M'],\n      headbutt: ['4T'],\n      headsmash: ['9L52', '8L52'],\n      heatwave: ['9M', '8M', '7T', '4T'],\n      hiddenpower: ['7M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      incinerate: ['7M'],\n      lockon: ['9L48', '8L48', '7L65'],\n      metalsound: ['9L32', '8L32', '7L50', '4L37'],\n      meteorbeam: ['8T'],\n      mudshot: ['9M', '8M', '7L34', '4L25'],\n      mudslap: ['9M', '9L4', '8L4', '7L8', '4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      powergem: ['9M', '9L36', '8M', '8L36', '7L38', '4L29'],\n      protect: ['9M', '8M', '7M', '4M'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      rockblast: ['9M', '9L12', '8M', '8L12', '7L13', '4L15'],\n      rockpolish: ['9E', '8E', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '4M'],\n      rollout: ['9L8', '8L8', '7L4', '4T', '4L1'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      secretpower: ['7M', '4M'],\n      shadowball: ['9M', '8M', '7M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      smackdown: ['9M', '9L1', '8L1', '7M'],\n      snore: ['8M', '7T', '4T'],\n      speedswap: ['8M'],\n      stealthrock: ['9M', '8M', '7T', '4M'],\n      stoneedge: ['9M', '8M', '7M', '4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '4L1'],\n      terablast: ['9M'],\n      toxic: ['7M', '4M'],\n      trick: ['9M', '8M', '7T', '4T'],\n      vacuumwave: ['9M', '9L24', '8L24', '7L60', '4T'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'tactite',\n    {\n      accelerock: ['9L20', '8L20', '7L21'],\n      acupressure: ['9L48', '8L48', '7L26', '4L20'],\n      aerialace: ['9M', '7M', '4M'],\n      ancientpower: ['9L31', '8L31', '7L30', '4T'],\n      bulldoze: ['9M', '8M', '7M'],\n      calmmind: ['9M', '8M', '7M', '4M'],\n      confide: ['7M'],\n      cut: ['4M'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      defensecurl: ['9L1', '8L1', '7L1', '4L1'],\n      disable: ['9L16', '8L16', '7L17', '4L17'],\n      doubleedge: ['9L54', '8L54', '7L43', '4L43'],\n      doubleteam: ['7M', '4M'],\n      earthpower: ['9M', '8M', '7T', '7L47', '4T'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      embargo: ['7M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '4M'],\n      explosion: ['9L72', '8L72', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      falseswipe: ['9M', '8M', '7M', '4M'],\n      fireblast: ['9M', '8M', '7M', '4M'],\n      flamethrower: ['9M', '8M', '7M', '4M'],\n      flash: ['4M'],\n      frustration: ['7M', '4M'],\n      gigadrain: ['9M', '8M', '7T', '4M'],\n      headbutt: ['4T'],\n      headsmash: ['9L66', '8L66', '4L67'],\n      heatwave: ['9M', '8M', '7T', '4T'],\n      hiddenpower: ['7M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      incinerate: ['7M'],\n      lockon: ['9L60', '8L60', '7L63'],\n      metalsound: ['9L36', '8L36', '7L51', '4L51'],\n      meteorbeam: ['8T'],\n      mudshot: ['9M', '8M', '7L34', '4L25'],\n      mudslap: ['9M', '9L1', '8L1', '7L8', '4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      powergem: ['9M', '9L42', '8M', '8L42', '7L39', '4L29'],\n      protect: ['9M', '8M', '7M', '4M'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      rockblast: ['9M', '9L12', '8M', '8L12', '7L13', '4L15'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '4M'],\n      rollout: ['9L1', '8L1', '7L4', '4T', '4L1'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      secretpower: ['7M', '4M'],\n      shadowball: ['9M', '8M', '7M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      smackdown: ['9M', '9L1', '8L1', '7M'],\n      smartstrike: ['9M', '8M'],\n      snore: ['8M', '7T', '4T'],\n      speedswap: ['8M', '7L55'],\n      stealthrock: ['9M', '8M', '7T', '4M'],\n      stoneedge: ['8M', '7M', '4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '4L1'],\n      terablast: ['9M'],\n      toxic: ['7M', '4M'],\n      trick: ['9M', '8M', '7T', '4T'],\n      vacuumwave: ['9M', '9L24', '8L24', '7L60', '4T'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'stratagem',\n    {\n      accelerock: ['9L20', '8L20', '7L21'],\n      acupressure: ['9L48', '8L48', '7L26', '4L20'],\n      aerialace: ['9M', '7M', '4M'],\n      ancientpower: ['9L31', '8L31', '7L30', '4T'],\n      bulldoze: ['9M', '8M', '7M'],\n      calmmind: ['9M', '8M', '7M', '4M'],\n      confide: ['7M'],\n      cut: ['4M'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      defensecurl: ['9L1', '8L1', '7L1', '4L1'],\n      disable: ['9L16', '8L16', '7L17', '4L17'],\n      doubleedge: ['9L54', '8L54', '7L43', '4L32'],\n      doubleteam: ['7M', '4M'],\n      earthpower: ['9M', '8M', '7L47', '4T'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      embargo: ['7M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      energyball: ['9M', '8M', '7M', '4M'],\n      explosion: ['9L72', '8L72', '7M', '6M', '5M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      falseswipe: ['9M', '8M', '7M', '4M'],\n      fireblast: ['9M', '8M', '7M', '4M'],\n      flamethrower: ['9M', '8M', '7M', '4M'],\n      flash: ['4M'],\n      frustration: ['7M', '4M'],\n      gigadrain: ['9M', '8M', '7T', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      headbutt: ['4T'],\n      headsmash: ['9L66', '8L66', '7L69', '4L50'],\n      heatwave: ['9M', '8M', '7T', '4T'],\n      hiddenpower: ['7M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      incinerate: ['7M'],\n      laserfocus: ['8L1', '7L1'],\n      lockon: ['9L60', '8L60', '7L65'],\n      metalsound: ['9L36', '8L36', '7L52', '4L37'],\n      meteorbeam: ['9L1', '8T'],\n      mudshot: ['9M', '8M', '7L34', '4L25'],\n      mudslap: ['9M', '9L1', '8L1', '7L8', '4T'],\n      naturalgift: ['4M'],\n      ominouswind: ['4T'],\n      paleowave: ['9L0', '8L0', '7L1', '4L42'],\n      powergem: ['9M', '9L42', '8M', '8L42', '7L39', '4L29'],\n      protect: ['9M', '8M', '7M', '4M'],\n      quickguard: ['9L1', '8L1', '7L1'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      rockblast: ['9M', '9L12', '8M', '8L12', '7L13', '4L15'],\n      rockclimb: ['4M'],\n      rockpolish: ['7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['6M', '5M', '4M'],\n      rocktomb: ['9M', '8M', '7M', '4M'],\n      rollout: ['9L1', '8L1', '7L4', '4T', '4L1'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      secretpower: ['7M', '4M'],\n      shadowball: ['9M', '8M', '7M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      smackdown: ['9M', '9L1', '8L1', '7M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7T', '4T'],\n      speedswap: ['8M', '7L56'],\n      stealthrock: ['9M', '8M', '7T', '4M'],\n      stoneedge: ['9M', '8M', '7M', '4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '4L1'],\n      terablast: ['9M'],\n      toxic: ['7M', '4M'],\n      trick: ['9M', '8M', '7T', '4T'],\n      vacuumwave: ['9M', '9L24', '8L24', '7L60', '4T'],\n      weatherball: ['9M', '9L1', '8M', '8L1', '7L1', '4L1'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'privatyke',\n    {\n      aquacutter: ['9L28'],\n      aquajet: ['9L16', '8L16', '7L19', '4L27'],\n      armthrust: ['9L4', '8L4', '7L14', '4L21'],\n      attract: ['8M', '7M', '4M'],\n      blizzard: ['9M', '8M', '7M', '4M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '4M'],\n      brine: ['8M', '4M'],\n      bubble: ['7L1', '4L1'],\n      bulkup: ['9M', '8M', '7M', '7E', '4E'],\n      bulldoze: ['9M', '8M', '7M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7L30'],\n      closecombat: ['9M', '8M', '7E'],\n      coaching: ['8T'],\n      confide: ['7M'],\n      crosschop: ['9E', '8E', '7M', '4E'],\n      cut: ['4M'],\n      dive: ['8M', '4T'],\n      doubleteam: ['7M', '4M'],\n      drainpunch: ['9M', '8M', '4M'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      embargo: ['7M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      falseswipe: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '4M'],\n      focuspunch: ['9M', '9L52', '8L52', '7L59', '4M', '4L67'],\n      foulplay: ['9M', '8M', '7T'],\n      frustration: ['7M', '4M'],\n      hail: ['8M', '7M', '4M'],\n      headbutt: ['9L36', '8L36', '7E', '4T', '4E'],\n      hiddenpower: ['7M', '4M'],\n      icebeam: ['9M', '8M', '7M', '4M'],\n      icepunch: ['9M', '8M', '7T', '4T'],\n      icywind: ['9M', '8M', '7T', '4T'],\n      knockoff: ['9M', '9L24', '8L24', '7T', '6T', '5T', '4T'],\n      lashout: ['8T'],\n      liquidation: ['9M', '9L40'],\n      lowkick: ['9M', '8M', '7T', '4T'],\n      lowsweep: ['9M', '8M', '7M'],\n      machpunch: ['9L16', '8L16', '7L35', '4L32'],\n      megapunch: ['8M'],\n      muddywater: ['8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      octazooka: ['8E', '7E', '4E'],\n      poisonjab: ['9M', '8M', '7M'],\n      poweruppunch: ['8E', '7M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      psychup: ['7M'],\n      punishment: ['7L55', '4L60'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      recover: ['9E', '8E', '7E', '4E'],\n      rest: ['9M', '8M', '7M', '4M'],\n      retaliate: ['8M', '7M'],\n      return: ['7M', '4M'],\n      revenge: ['8M', '8L28', '7L42', '4L41'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['4M'],\n      rocktomb: ['9M', '8M', '7M', '4M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M'],\n      scald: ['8M', '8L40', '7M', '7L38'],\n      scaryface: ['9M', '8M', '7E', '4E'],\n      secretpower: ['7M', '4M'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      sludgebomb: ['9M', '8M', '7M', '4M'],\n      smokescreen: ['9L12', '8L12', '7L7', '4L7'],\n      snatch: ['7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      snowscape: ['9M'],\n      spikes: ['9M', '8M', '7E'],\n      strength: ['4M'],\n      submission: ['8L44', '7L48', '4L55'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      superpower: ['9L44', '8M', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L32', '8M', '8L32', '7M', '7L24', '4M', '4L36'],\n      terablast: ['9M'],\n      thief: ['9M', '9L8', '8M', '8L8', '7M', '7L45', '4M', '4L47'],\n      throatchop: ['8M'],\n      thunderpunch: ['9M', '8M', '7T', '4T'],\n      torment: ['9E', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '4M'],\n      vacuumwave: ['4T'],\n      waterfall: ['9M', '8M', '7M', '4M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '7T', '4M'],\n      whirlpool: ['8M', '4M'],\n      wideguard: ['9L48', '8L48', '7L52'],\n      workup: ['8M', '7M'],\n      wrap: ['9L1', '8L1', '7L1', '4L1'],\n      yawn: ['9L20', '8L20', '7L10', '4L1']\n    }\n  ],\n  [\n    'arghonaut',\n    {\n      aquacutter: ['9L28'],\n      aquajet: ['9L16', '8L16', '7L19', '4L27'],\n      armthrust: ['9L1', '8L1', '7L14', '4L21'],\n      attract: ['8M', '7M', '4M'],\n      blizzard: ['9M', '8M', '7M', '4M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '4M'],\n      brine: ['9L1', '8M', '8L1', '7L1', '6L1', '5L1', '4M', '4L1'],\n      bubble: ['7L1', '4L1'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      captivate: ['4M'],\n      chillingwater: ['9M'],\n      chipaway: ['7L30'],\n      circlethrow: ['9L1', '8L1', '7L1'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M'],\n      crosschop: ['7M'],\n      crosspoison: ['8M'],\n      cut: ['4M'],\n      dive: ['8M', '4T'],\n      doubleteam: ['7M', '4M'],\n      drainpunch: ['9M', '8M', '4M'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      embargo: ['7M', '4M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      falseswipe: ['9M', '8M'],\n      fling: ['9M', '8M', '7M', '4M'],\n      focusblast: ['9M', '8M', '7M', '4M'],\n      focuspunch: ['9M', '9L60', '8L60', '7L73', '4M', '4L67'],\n      foulplay: ['9M', '8M', '7T'],\n      frustration: ['7M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      gunkshot: ['9M', '8M', '7T', '4T'],\n      hail: ['8M', '7M', '4M'],\n      hardpress: ['9M'],\n      headbutt: ['9L36', '8L36', '4T'],\n      hiddenpower: ['7M', '4M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      icebeam: ['9M', '8M', '7M', '4M'],\n      icepunch: ['9M', '8M', '7T', '4T'],\n      icywind: ['9M', '8M', '7T', '4T'],\n      knockoff: ['9M', '9L24', '8L24', '7T', '4T'],\n      lashout: ['8T'],\n      liquidation: ['9M', '9L42'],\n      lowkick: ['9M', '8M', '7T', '4T'],\n      lowsweep: ['9M', '8M', '7M'],\n      machpunch: ['9L16', '8L16', '7L35', '4L32'],\n      megapunch: ['8M'],\n      muddywater: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      poisonjab: ['9M', '8M', '7M'],\n      poweruppunch: ['7M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      psychup: ['7M'],\n      punishment: ['7L67', '4L60'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      retaliate: ['8M', '7M'],\n      return: ['7M', '4M'],\n      revenge: ['8M', '8L28', '7L46', '4L41'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['4M'],\n      rocktomb: ['9M', '8M', '7M', '4M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M'],\n      scald: ['8M', '8L42', '7M', '7L40'],\n      scaryface: ['9M', '8M'],\n      secretpower: ['7M', '4M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      sludgebomb: ['9M', '8M', '7M', '4M'],\n      smokescreen: ['9L12', '8L12', '7L7', '4L7'],\n      snatch: ['7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      snowscape: ['9M'],\n      spikes: ['9M', '8M'],\n      stoneedge: ['9M', '8M', '7M', '4M'],\n      strength: ['4M'],\n      submission: ['8L48', '7L56', '4L55'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      superpower: ['9L48', '8M', '7T', '6T', '5T', '4T'],\n      surf: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L32', '8M', '8L32', '7M', '7L24', '4M', '4L36'],\n      terablast: ['9M'],\n      thief: ['9M', '9L1', '8M', '8L1', '7M', '7L51', '4M', '4L47'],\n      throatchop: ['9M', '8M'],\n      thunderpunch: ['9M', '8M', '7T', '4T'],\n      torment: ['7M', '4M'],\n      toxic: ['7M', '4M'],\n      vacuumwave: ['9L1', '8L1', '4T'],\n      waterfall: ['9M', '8M', '7M', '4M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '7T', '4M'],\n      whirlpool: ['9M', '8M', '4M'],\n      wideguard: ['9L54', '8L54', '7L62'],\n      workup: ['8M', '7M'],\n      wrap: ['9L1', '8L1', '7L1', '4L1'],\n      yawn: ['9L20', '8L20', '7L10', '4L1']\n    }\n  ],\n  [\n    'nohface',\n    {\n      assurance: ['8M'],\n      attract: ['8M', '7M', '4M'],\n      captivate: ['4M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      copycat: ['9L20', '8L20', '7L22', '4L22'],\n      curse: ['9E', '8E', '7E', '4E'],\n      cut: ['7M', '4M'],\n      darkpulse: ['9M', '8M', '7M', '4M'],\n      defog: ['9E', '8E', '7E', '4M'],\n      dig: ['9M', '8M', '7M', '4M'],\n      doubleteam: ['7M', '4M'],\n      dreameater: ['7M', '4M'],\n      embargo: ['7M', '4M'],\n      endeavor: ['7T', '4T'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fakeout: ['9L8', '8L8', '7L27', '4L35'],\n      falseswipe: ['9M', '8M', '7M', '4M'],\n      featherdance: ['9E', '8E', '7E', '4E'],\n      feintattack: ['7L14', '4L14'],\n      flail: ['9E', '8E', '7E', '4E'],\n      flash: ['7M', '4M'],\n      fling: ['9M', '8M', '7M', '4M'],\n      foulplay: ['9M', '8M', '7M'],\n      frustration: ['7M', '4M'],\n      furycutter: ['4T'],\n      headbutt: ['4T'],\n      hex: ['9M', '8M', '7E'],\n      hiddenpower: ['7M', '4M'],\n      honeclaws: ['9L28', '8L28', '7L31'],\n      icepunch: ['9M', '8M', '7T', '4T'],\n      icywind: ['9M', '8M', '7T', '4T'],\n      irontail: ['9E', '8M', '7E', '6E', '5E', '4M'],\n      knockoff: ['9M', '9L36', '7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '4T'],\n      lick: ['9L4', '8L4', '7L6', '4L6'],\n      magiccoat: ['7T', '4T'],\n      memento: ['9L44', '8L44', '7L52', '4L31'],\n      metalsound: ['9E', '8E', '7E', '4E'],\n      meteormash: ['9E', '8E', '7E', '4E'],\n      metronome: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      odorsleuth: ['7L10', '4L10'],\n      ominouswind: ['4T'],\n      painsplit: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '4T'],\n      payback: ['8M', '7M', '4M'],\n      perishsong: ['9L48', '8L48', '7L56', '4L55'],\n      playrough: ['9M', '8M', '7E'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M', '4M'],\n      psychoshift: ['8E', '7E', '4E'],\n      psychup: ['7M', '4M'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      retaliate: ['8M', '7M'],\n      return: ['7M', '4M'],\n      revenge: ['8M', '8L36', '7L39', '4L44'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M', '4M'],\n      scratch: ['9L1', '8L1', '7L1', '4L1'],\n      secretpower: ['7M', '4M'],\n      shadowball: ['9M', '8M', '7M', '4M'],\n      shadowclaw: ['9M', '9L32', '8M', '8L32', '7M', '7L35', '4M', '4L40'],\n      shadowsneak: ['9L16', '8L16', '7L18', '4L18'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snatch: ['7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      spite: ['9M', '9L12', '8L12', '7T', '6T', '5T', '4T'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      suckerpunch: ['9E', '8E', '7E', '4T'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      tailwhip: ['9L1', '8L1', '7L1', '4L1'],\n      taunt: ['9M', '8M', '7M', '4M'],\n      telekinesis: ['7M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '4T'],\n      torment: ['9L24', '8L24', '7M', '4M'],\n      toxic: ['7M', '4M'],\n      trick: ['9M', '9L40', '8M', '8L40', '7T', '4T'],\n      trickroom: ['9M', '8M', '7M', '4M'],\n      uturn: ['9M', '8M', '7M', '4M'],\n      willowisp: ['9M', '8M', '7M', '4M'],\n      wish: ['9E', '8E', '7E'],\n      yawn: ['9E', '8E', '7E', '4E']\n    }\n  ],\n  [\n    'kitsunoh',\n    {\n      assurance: ['8M'],\n      attract: ['8M', '7M', '4M'],\n      bulldoze: ['9M', '8M', '7M'],\n      bulletpunch: ['9L1', '8L1', '7L1'],\n      captivate: ['4M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      copycat: ['9L20', '8L20', '7L22', '4L22'],\n      cut: ['7M', '4M'],\n      darkpulse: ['9M', '8M', '7M', '4M'],\n      defog: ['4M'],\n      dig: ['9M', '8M', '7M', '4M'],\n      doubleteam: ['7M', '4M'],\n      dreameater: ['7M', '4M'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      embargo: ['7M', '4M'],\n      endeavor: ['9M', '7T', '4T'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fakeout: ['9L1', '8L1', '7L27', '4L35'],\n      falseswipe: ['9M', '8M', '7M', '4M'],\n      feintattack: ['7L14', '4L14'],\n      flash: ['7M', '4M'],\n      flashcannon: ['9M', '8M', '7M', '4M'],\n      fling: ['9M', '8M', '7M', '4M'],\n      foulplay: ['9M', '8M', '7M'],\n      frustration: ['7M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      headbutt: ['4T'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M', '4M'],\n      honeclaws: ['9L28', '8L28', '7L31'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      icepunch: ['9M', '8M', '7T', '4T'],\n      icywind: ['9M', '8M', '7T', '4T'],\n      irondefense: ['9M', '8M', '7T', '4T'],\n      ironhead: ['9M', '9L40', '8M', '8L40', '7L43', '4T'],\n      irontail: ['8M', '4M'],\n      knockoff: ['9M', '9L36', '7T', '6T', '5T', '4T'],\n      lastresort: ['7T', '4T'],\n      lick: ['9L1', '8L1', '7L6', '4L6'],\n      lowkick: ['9M', '8M', '7T', '4T'],\n      magiccoat: ['7T', '4T'],\n      memento: ['9L48', '8L48', '7L52', '4L31'],\n      metalclaw: ['9M', '9L0', '8L0', '7L1', '4L27'],\n      metronome: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightshade: ['9M'],\n      odorsleuth: ['7L10', '4L10'],\n      ominouswind: ['4T'],\n      painsplit: ['7T', '6T', '5T', '4T'],\n      payback: ['8M', '7M', '4M'],\n      perishsong: ['9L52', '8L52', '7L56', '4L55'],\n      playrough: ['9M', '8M', '7E'],\n      poltergeist: ['9M', '8T'],\n      protect: ['9M', '8M', '7M', '4M'],\n      psychup: ['9M', '7M', '4M'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      retaliate: ['8M', '7M'],\n      return: ['7M', '4M'],\n      revenge: ['8M', '8L36', '7L39', '4L44'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M', '4M'],\n      scratch: ['9L1', '8L1', '7L1', '4L1'],\n      secretpower: ['7M', '4M'],\n      shadowball: ['9M', '8M', '7M', '4M'],\n      shadowclaw: ['9M', '9L32', '8M', '8L32', '7M', '7L35', '4M', '4L40'],\n      shadowsneak: ['9L16', '8L16', '7L18', '4L18'],\n      shadowstrike: ['9L44', '8L44', '7L48', '4L49'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snatch: ['7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      spite: ['9M', '9L12', '8L12', '7T', '6T', '5T', '4T'],\n      steelbeam: ['9M', '8T'],\n      strengthsap: ['9L1'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      superfang: ['9M', '7T', '6T', '5T', '4T'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '4M'],\n      tailwhip: ['9L1', '8L1', '7L1', '4L1'],\n      taunt: ['9M', '8M', '7M', '4M'],\n      telekinesis: ['7M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '4T'],\n      torment: ['9L24', '8L24', '7M', '4M'],\n      toxic: ['7M', '4M'],\n      trick: ['9M', '9L1', '8M', '8L1', '7T', '4T'],\n      trickroom: ['9M', '8M', '7M', '4M'],\n      upperhand: ['9M'],\n      uturn: ['9M', '8M', '7M', '4M'],\n      willowisp: ['9M', '8M', '7M', '4M']\n    }\n  ],\n  [\n    'monohm',\n    {\n      aerialace: ['9M', '7M', '4M'],\n      aquatail: ['9E', '8E', '7T'],\n      attract: ['8M', '7M', '4M'],\n      bide: ['7L1', '4L1'],\n      blizzard: ['9M', '8M', '7M', '4M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L12', '8L12', '7L11', '4L11'],\n      chargebeam: ['9M', '7M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      defog: ['9E'],\n      discharge: ['9L33', '8L33', '7L33', '4L37'],\n      doubleteam: ['7M', '4M'],\n      dragonbreath: ['9L20', '8L20', '7L29', '7E', '4E'],\n      dragonpulse: ['9M', '8M', '7T', '4M'],\n      dragonrage: ['7L24', '4L7'],\n      dragontail: ['9M', '9L28', '8L28', '7M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '9L1', '8M', '8L1', '7L1'],\n      electroball: ['9M', '8M'],\n      electroweb: ['8M', '7T'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      flash: ['4M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '4L1'],\n      hail: ['8M', '7M', '4M'],\n      headbutt: ['9E', '8E', '4T'],\n      healbell: ['7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      hiddenpower: ['7M', '4M'],\n      hydropump: ['9M', '8M', '7E', '4E'],\n      icebeam: ['9M', '8M', '7M', '4M'],\n      icywind: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      lightscreen: ['9M', '8M', '7M', '4M'],\n      lockon: ['9L44', '8L44'],\n      muddywater: ['8M'],\n      mudslap: ['9M', '9E', '8E', '7E', '4T', '4E'],\n      naturalgift: ['4M'],\n      naturepower: ['7M'],\n      outrage: ['9M', '8M', '4T'],\n      powdersnow: ['9E', '8E', '7E'],\n      powergem: ['9M', '8M', '7E', '4E'],\n      protect: ['9M', '8M', '7M', '4M'],\n      raindance: ['9M', '9L36', '8M', '8L36', '7M', '7L37', '4M', '4L19'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      risingvoltage: ['8T'],\n      roar: ['9M', '9E', '8E', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      secretpower: ['7M', '4M'],\n      shockwave: ['7T', '4M'],\n      signalbeam: ['4T'],\n      slackoff: ['9L40', '8L40', '7L48', '4L42'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snore: ['8M', '4T'],\n      snowscape: ['9M'],\n      sonicboom: ['7L16', '4L29'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      surf: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L48', '8L48', '7L53', '4L50'],\n      thunder: ['9M', '9L52', '8M', '8L52', '7M', '7L65', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '4M'],\n      thunderfang: ['9M', '8M'],\n      thundershock: ['9L4', '8L4', '7L11', '4L15'],\n      thunderwave: ['9M', '9L24', '8M', '8L24', '7M', '4M'],\n      torment: ['7M', '4M'],\n      toxic: ['7M', '4M'],\n      trickroom: ['9M', '8M', '7M', '4M'],\n      twister: ['9L8', '8L8', '7L7', '4T'],\n      voltswitch: ['9M', '8M', '7M'],\n      waterfall: ['9M', '8M', '7M', '4M'],\n      waterpulse: ['9M', '7T', '4M'],\n      weatherball: ['9M', '9E', '8M'],\n      whirlwind: ['9L16', '8L16', '7L1', '4L1'],\n      wildcharge: ['9M', '8M', '7M'],\n      zapcannon: ['9L44', '8L44', '7L59', '4L59']\n    }\n  ],\n  [\n    'duohm',\n    {\n      aerialace: ['9M', '7M', '4M'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M', '4M'],\n      bide: ['7L1', '4L1'],\n      blizzard: ['9M', '8M', '7M', '4M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L12', '8L12', '7L11', '4L11'],\n      chargebeam: ['9M', '7M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      discharge: ['9L35', '8L35', '7L33', '4L37'],\n      doublehit: ['9L0', '8L0', '7L20', '4L22'],\n      doubleteam: ['7M', '4M'],\n      dracometeor: ['9M', '8T', '7T', '4T'],\n      dragonbreath: ['9L20', '8L20', '7L29'],\n      dragonclaw: ['9M', '8M', '7M', '4M'],\n      dragonpulse: ['9M', '8M', '7T', '4M'],\n      dragonrage: ['7L24', '4L7'],\n      dragontail: ['9M', '9L28', '8L28', '7M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '9L1', '8M', '8L1', '7L1'],\n      electroball: ['9M', '8M'],\n      electroweb: ['8M', '7T'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fireblast: ['9M', '8M', '7M', '4M'],\n      firefang: ['9M', '8M'],\n      flamethrower: ['9M', '8M', '7M', '4M'],\n      flash: ['4M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '4L1'],\n      hail: ['8M', '7M', '4M'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '4M'],\n      honeclaws: ['7M'],\n      hydropump: ['9M', '8M'],\n      icebeam: ['9M', '8M', '7M', '4M'],\n      icefang: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T'],\n      incinerate: ['7M'],\n      irontail: ['8M', '7T'],\n      lightscreen: ['9M', '8M', '7M', '4M'],\n      lockon: ['9L52', '8L52'],\n      muddywater: ['8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M'],\n      outrage: ['9M', '8M', '4T'],\n      powergem: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      raindance: ['9M', '9L40', '8M', '8L40', '7M', '7L37', '4M', '4L19'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      risingvoltage: ['8T'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      secretpower: ['7M', '4M'],\n      shockwave: ['7T', '4M'],\n      signalbeam: ['4T'],\n      slackoff: ['9L46', '8L46', '7L48', '4L42'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snore: ['8M', '4T'],\n      snowscape: ['9M'],\n      sonicboom: ['7L16', '4L29'],\n      strength: ['4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      surf: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L58', '8L58', '7L53', '4L50'],\n      thunder: ['9M', '9L64', '8M', '8L64', '7M', '7L65', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '4M'],\n      thunderfang: ['9M', '8M'],\n      thundershock: ['9L1', '8L1', '7L11', '4L15'],\n      thunderwave: ['9M', '9L24', '8M', '8L24', '7M', '4M'],\n      torment: ['7M', '4M'],\n      toxic: ['7M', '4M'],\n      trickroom: ['9M', '8M', '7M', '4M'],\n      twister: ['9L1', '8L1', '7L7', '4T'],\n      voltswitch: ['9M', '8M', '7M'],\n      waterfall: ['9M', '8M', '7M', '4M'],\n      waterpulse: ['9M', '7T', '4M'],\n      weatherball: ['9M', '8M'],\n      whirlwind: ['9L16', '8L16', '7L1', '4L1'],\n      wildcharge: ['9M', '8M', '7M'],\n      zapcannon: ['9L52', '8L52', '7L59', '4L59']\n    }\n  ],\n  [\n    'cyclohm',\n    {\n      aerialace: ['9M', '7M', '4M'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M', '4M'],\n      bide: ['7L1', '4L1'],\n      blizzard: ['9M', '8M', '7M', '4M'],\n      breakingswipe: ['9L1', '8M'],\n      bulldoze: ['9M', '8M', '7M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L12', '8L12', '7L11', '4L11'],\n      chargebeam: ['9M', '7M', '4M'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      discharge: ['9L35', '8L35', '7L33', '4L37'],\n      doublehit: ['9L1', '8L1', '7L20', '4L22'],\n      doubleteam: ['7M', '4M'],\n      dracometeor: ['9M', '8T', '7T', '4T'],\n      dragonbreath: ['9L20', '8L20', '7L29'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M', '7M', '4M'],\n      dragonpulse: ['9M', '8M', '7T', '4M'],\n      dragonrage: ['7L24', '4L7'],\n      dragontail: ['9M', '9L28', '8L28', '7M'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '9L1', '8M', '8L1', '7L1'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fireblast: ['9M', '8M', '7M', '4M'],\n      firefang: ['9M', '8M'],\n      flamethrower: ['9M', '8M', '7M', '4M'],\n      flash: ['4M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      growl: ['9L1', '8L1', '7L1', '4L1'],\n      hail: ['8M', '7M', '4M'],\n      headbutt: ['4T'],\n      healbell: ['7T', '6T', '5T', '4T'],\n      hiddenpower: ['7M', '4M'],\n      honeclaws: ['7M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      icebeam: ['9M', '8M', '7M', '4M'],\n      icefang: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T'],\n      incinerate: ['7M'],\n      irontail: ['8M', '7T'],\n      lightscreen: ['9M', '8M', '7M', '4M'],\n      lockon: ['9L56', '8L56'],\n      muddywater: ['9M', '8M'],\n      mudslap: ['9M', '4T'],\n      naturalgift: ['4M'],\n      naturepower: ['7M'],\n      outrage: ['9M', '8M', '4T'],\n      powergem: ['9M', '8M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      raindance: ['9M', '9L40', '8M', '8L40', '7M', '7L37', '4M', '4L19'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      risingvoltage: ['8T'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      secretpower: ['7M', '4M'],\n      shockwave: ['7T', '4M'],\n      signalbeam: ['4T'],\n      slackoff: ['9L48', '8L48', '7L48', '4L42'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snore: ['8M', '4T'],\n      snowscape: ['9M'],\n      sonicboom: ['7L16', '4L29'],\n      strength: ['4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      supercellslam: ['9M'],\n      surf: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M', '4T'],\n      tackle: ['9L1', '8L1', '7L1', '4L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thrash: ['9L64', '8L64', '7L53', '4L50'],\n      thunder: ['9M', '9L72', '8M', '8L72', '7M', '7L65', '4M'],\n      thunderbolt: ['9M', '8M', '7M', '4M'],\n      thunderfang: ['9M', '8M'],\n      thundershock: ['9L1', '8L1', '7L11', '4L15'],\n      thunderwave: ['9M', '9L24', '8M', '8L24', '7M', '4M'],\n      torment: ['7M', '4M'],\n      toxic: ['7M', '4M'],\n      triattack: ['9L0', '8M', '8L0', '7L1', '4L33'],\n      trickroom: ['9M', '8M', '7M', '4M'],\n      twister: ['9L1', '8L1', '7L7', '4T'],\n      voltswitch: ['9M', '8M', '7M'],\n      waterfall: ['9M', '8M', '7M', '4M'],\n      waterpulse: ['9M', '7T', '4M'],\n      weatherball: ['9M', '8M', '7L42'],\n      whirlwind: ['9L16', '8L16', '7L1', '4L1'],\n      wildcharge: ['9M', '8M', '7M'],\n      zapcannon: ['9L56', '8L56', '7L59', '4L59']\n    }\n  ],\n  [\n    'dorsoil',\n    {\n      ancientpower: ['4T'],\n      aquatail: ['9E', '8E', '7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '4M'],\n      bite: ['9L20', '8L20', '5L10', '4L11'],\n      block: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L35', '8M', '8L35', '7L42', '4T', '4L22'],\n      bounce: ['8M', '4T'],\n      brickbreak: ['9M', '8M', '7M', '4M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['8M', '7M'],\n      captivate: ['4M'],\n      chipaway: ['7E'],\n      confide: ['7M'],\n      crunch: ['9M', '9L45', '8M', '8L45', '7L58', '4L55'],\n      darkpulse: ['9M', '8M', '7M', '4M'],\n      dig: ['9M', '8M', '4M'],\n      dive: ['8M', '4T'],\n      doubleedge: ['9E', '8E', '7E', '4T', '4E'],\n      doubleteam: ['7M', '4M'],\n      drillrun: ['9M', '8M'],\n      earthpower: ['9M', '8M', '7T', '4T'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      embargo: ['7M', '4M'],\n      encore: ['9M', '8M', '7E', '4E'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      fakeout: ['9E', '8E', '7E', '4E'],\n      firefang: ['9M', '8M', '7E', '4E'],\n      fissure: ['9E', '8E', '7E', '4E'],\n      flail: ['9E', '8E', '7E', '4E'],\n      foulplay: ['9M', '8M', '7T'],\n      frustration: ['7M', '4M'],\n      hiddenpower: ['7M', '4M'],\n      highhorsepower: ['9M', '8M'],\n      icespinner: ['9M'],\n      irontail: ['8M', '7T', '4M'],\n      knockoff: ['9M', '9L25', '8L25', '7T', '6T', '5T', '4T'],\n      leer: ['9L1', '8L1', '7L1', '4L1'],\n      magnitude: ['7L32', '4L42'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L5', '8L5', '7L16', '4T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '6M', '5M', '4M'],\n      peck: ['9L1', '8L1', '7L1', '4L1'],\n      protect: ['9M', '8M', '7M', '4M'],\n      pursuit: ['7L37', '4L29'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rapidspin: ['9L15', '8L15', '7L21', '4L17'],\n      rest: ['9M', '8M', '7M', '4M'],\n      retaliate: ['8M', '7M'],\n      return: ['7M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['7M', '4M'],\n      rocktomb: ['9M', '8M', '7M'],\n      rollout: ['4T'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      sandtomb: ['9M', '9L10', '8M', '8L10', '7E', '6E', '5E', '4E'],\n      scorchingsands: ['8T'],\n      screech: ['8M', '7E', '4E'],\n      secretpower: ['7M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snarl: ['9M', '8M', '7M'],\n      snatch: ['7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      spitup: ['9L40', '8L40', '7L53', '4L48'],\n      stealthrock: ['9M'],\n      stockpile: ['9L40', '8L40', '7L53', '4L48'],\n      strength: ['9L30', '8L30', '4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      suckerpunch: ['9E', '8E', '7E', '4T', '4E'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      superpower: ['9E', '8M', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      swagger: ['7M', '4M'],\n      swallow: ['9L40', '8L40', '7L53', '4L48'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '4M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M', '7E', '4E'],\n      torment: ['7M'],\n      toxic: ['7M', '4M'],\n      uturn: ['9M', '8M', '7M', '4M'],\n      wideguard: ['7E']\n    }\n  ],\n  [\n    'colossoil',\n    {\n      ancientpower: ['4T'],\n      aquatail: ['7T', '6T', '5T', '4T'],\n      attract: ['8M', '7M', '4M'],\n      bite: ['9L20', '8L20', '5L10', '4L11'],\n      block: ['7T', '6T', '5T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '9L35', '8M', '8L35', '7L42', '4T', '4L22'],\n      bounce: ['8M', '7L48', '4T', '4L35'],\n      brickbreak: ['9M', '8M', '7M', '4M'],\n      brutalswing: ['9L1', '8M', '8L1', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      captivate: ['4M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L49', '8M', '8L49', '7L58', '4L55'],\n      darkpulse: ['9M', '8M', '7M', '4M'],\n      dig: ['9M', '8M', '4M'],\n      dive: ['8M', '4T'],\n      doubleedge: ['4T'],\n      doubleteam: ['7M', '4M'],\n      drillrun: ['9M', '9L0', '8M', '8L0', '7L1'],\n      earthpower: ['9M', '8M', '7T', '4T'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      embargo: ['7M', '4M'],\n      encore: ['9M', '8M'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      firefang: ['9M', '8M'],\n      foulplay: ['9M', '8M', '7T'],\n      frustration: ['7M', '4M'],\n      furyattack: ['9L1', '8L1', '7L26'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      headlongrush: ['9L63'],\n      hiddenpower: ['7M', '4M'],\n      highhorsepower: ['9M', '9L1', '8M', '8L1', '7L1'],\n      hornattack: ['9L1', '8L1', '7L5', '4L6'],\n      horndrill: ['9L70', '8L63', '7L74', '4L70'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      icespinner: ['9M'],\n      irontail: ['8M', '7T', '4M'],\n      knockoff: ['9M', '9L25', '8L25', '7T', '6T', '5T', '4T'],\n      lashout: ['9M', '8T'],\n      leer: ['9L1', '8L1', '7L1', '4L1'],\n      magnitude: ['7L32', '4L42'],\n      megahorn: ['9L56', '8M', '8L56', '7L64', '4L63'],\n      mudshot: ['9M'],\n      mudslap: ['9M', '9L1', '8L1', '7L16', '4T'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '4M'],\n      peck: ['9L1', '8L1', '7L1', '4L1'],\n      protect: ['9M', '8M', '7M', '4M'],\n      pursuit: ['7L37', '4L29'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      rapidspin: ['9L15', '8L15', '7L21', '4L17'],\n      rest: ['9M', '8M', '7M', '4M'],\n      retaliate: ['8M', '7M'],\n      return: ['7M', '4M'],\n      roar: ['9M', '7M', '6M', '5M', '4M'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['7M', '4M'],\n      rocktomb: ['9M', '8M', '7M'],\n      rollout: ['4T'],\n      round: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M', '4M'],\n      sandtomb: ['9M', '9L1', '8M', '8L1'],\n      scorchingsands: ['9M', '8T'],\n      screech: ['8M'],\n      secretpower: ['7M', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M'],\n      snatch: ['7M', '4M'],\n      snore: ['8M', '7T', '4T'],\n      spitup: ['9L42', '8L42', '7L53', '4L48'],\n      stealthrock: ['9M'],\n      stockpile: ['9L42', '8L42', '7L53', '4L48'],\n      stoneedge: ['9M', '8M', '7M', '4M'],\n      strength: ['9L30', '8L30', '4M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      suckerpunch: ['4T'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      supercellslam: ['9M'],\n      superpower: ['8M', '7T', '6T', '5T', '4T'],\n      swagger: ['7M', '4M'],\n      swallow: ['9L42', '8L42', '7L53', '4L48'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '4M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M'],\n      torment: ['7M'],\n      toxic: ['7M', '4M'],\n      uturn: ['9M', '8M', '7M', '4M']\n    }\n  ],\n  [\n    'protowatt',\n    {\n      bubble: ['7L1', '4L1'],\n      charge: ['9M', '9L1', '8L1', '7L1', '4L1'],\n      confuseray: ['9M', '9L10', '8L10', '7L11', '4L11'],\n      counter: ['9E', '8E', '7E', '4E'],\n      entrainment: ['9E', '8E', '7E'],\n      followme: ['9E', '8E', '7E', '4E'],\n      mefirst: ['7E', '4E'],\n      metronome: ['7E', '4E'],\n      mindreader: ['7E', '4E'],\n      mirrorcoat: ['9E', '8E', '7E', '4E'],\n      sheercold: ['9E', '8E', '7E', '4E'],\n      speedswap: ['7E'],\n      terablast: ['9M'],\n      thundershock: ['9L5', '8L5', '7L5', '4L5'],\n      watergun: ['9L1', '8L1']\n    }\n  ],\n  [\n    'krilowatt',\n    {\n      aquatail: ['9L50', '8L50', '7L1'],\n      attract: ['8M', '7M', '4M'],\n      blizzard: ['9M', '8M', '7M', '6M', '5M'],\n      bubble: ['7L1', '4L1'],\n      bubblebeam: ['9L0', '8L0', '7L28', '4L28'],\n      bulldoze: ['9M', '8M', '7M'],\n      captivate: ['4M'],\n      charge: ['9M', '9L1', '8L1', '7L1', '4L1'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L1', '8L1', '7L11', '4L11'],\n      copycat: ['9L25', '8L25', '7L39', '4L39'],\n      counter: ['7L33', '4L33'],\n      cut: ['6M', '5M', '4M'],\n      discharge: ['9L30', '8L30', '7M', '7L51', '4L51'],\n      dive: ['8M', '6M', '4T'],\n      doubleteam: ['7M', '4M'],\n      earthpower: ['9M', '8M', '7T', '4T'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '8M'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      flash: ['4M'],\n      fling: ['9M', '8M', '7M', '4M'],\n      flipturn: ['8T'],\n      frustration: ['7M', '4M'],\n      furycutter: ['4T'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      guillotine: ['9L60', '8L60', '7L57', '4L57'],\n      hail: ['8M', '7M', '4M'],\n      heartswap: ['9S0', '7L53', '4L46'],\n      helpinghand: ['9M', '8M', '7T', '4T'],\n      hiddenpower: ['7M', '4M'],\n      hyperbeam: ['9M', '8M', '7M', '4M'],\n      icebeam: ['9M', '9S0', '8M', '7M', '6M', '5M'],\n      icepunch: ['9M', '8M', '7T', '6T', '5T'],\n      iceshard: ['9L1', '8L1', '7L1', '4L1'],\n      icywind: ['9M', '8M', '7T', '4T'],\n      imprison: ['9M', '9L20', '8M', '8L20', '7L17', '4L17'],\n      irontail: ['8M', '7T'],\n      liquidation: ['9M', '8M'],\n      lowkick: ['9M', '8M', '7T', '4T'],\n      lowsweep: ['9M', '8M', '7M'],\n      magneticflux: ['9L1', '8L1', '7L1'],\n      metronome: ['9M', '8M'],\n      mindreader: ['8L35'],\n      mirrorcoat: ['7L24', '4L24'],\n      muddywater: ['9L40', '8M', '8L40', '7L68', '4L68'],\n      naturalgift: ['4M'],\n      payback: ['8M', '7M', '4M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      raindance: ['9M', '8M', '7M', '4M'],\n      recycle: ['7T', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      return: ['7M', '4M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      secretpower: ['7T', '4M'],\n      shockwave: ['7T', '4M'],\n      signalbeam: ['7T', '4T'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      speedswap: ['8M'],\n      substitute: ['9M', '8M', '7M', '4M'],\n      surf: ['9M', '9S0', '8M', '7M', '4M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M', '4T'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L55', '8M', '8L55', '7M', '7L63', '4M', '4L63'],\n      thunderbolt: ['9M', '9S0', '8M', '7M', '4M'],\n      thunderpunch: ['9M', '8M', '7T', '4T'],\n      thundershock: ['9L1', '8L1', '7L5', '4L5'],\n      thunderwave: ['9M', '8M', '7M', '4M'],\n      torment: ['7M', '4M'],\n      toxic: ['7M', '4M'],\n      voltswitch: ['9M', '8M', '7M'],\n      waterfall: ['9M', '8M', '7M', '4M'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M', '7T', '4M'],\n      whirlpool: ['9L35', '8M', '7M', '4M'],\n      wildcharge: ['9M', '9L45', '8M', '8L45', '7M', '7L53']\n    }\n  ],\n  [\n    'voodoll',\n    {\n      acupressure: ['9L48', '8L48', '7L36', '4L40'],\n      afteryou: ['7T'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1', '7L1', '4L1'],\n      attract: ['8M', '7M', '4M'],\n      aurasphere: ['9M', '9L36', '8M', '8L36', '7L45', '4L45'],\n      batonpass: ['9M', '8M', '7E', '4E'],\n      burningjealousy: ['9M', '8T'],\n      captivate: ['4M'],\n      charge: ['9M', '9L20', '8L20', '7L19', '4L19'],\n      confide: ['7M'],\n      copycat: ['9L4', '8L4', '7L1', '4L1'],\n      counter: ['9E', '8E', '7E', '4T'],\n      darkpulse: ['9M', '8M', '7M', '4M'],\n      doubleteam: ['7M'],\n      dreameater: ['7M', '4M'],\n      echoedvoice: ['9L16', '8L16'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      feintattack: ['7L30', '4L30'],\n      fling: ['9M', '8M', '7M', '4M'],\n      followme: ['9L40', '8L40', '7L20', '4L20'],\n      foulplay: ['9M', '9L54', '8M', '8L52', '7L54'],\n      frustration: ['7M', '4M'],\n      grudge: ['8L33', '7L15', '4L15'],\n      hex: ['9M', '9L28', '8M', '8L28', '7L43'],\n      hiddenpower: ['7M', '4M'],\n      hypervoice: ['9M', '8M', '7T'],\n      imprison: ['9M', '8M', '7E', '4E'],\n      knockoff: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E', '4T', '4E'],\n      lashout: ['9M', '8T'],\n      machpunch: ['9E', '8E', '7E', '4E'],\n      magiccoat: ['7T', '4T'],\n      magicroom: ['8M', '7T'],\n      memento: ['9E', '8E', '7E', '4E'],\n      metronome: ['9M', '8M', '7E', '4T'],\n      mimic: ['7E', '4E'],\n      mudslap: ['9M', '4T'],\n      nastyplot: ['9M', '8M', '7E'],\n      naturalgift: ['4M'],\n      nightmare: ['7E', '4T'],\n      painsplit: ['9L44', '8L44', '7L7', '4T', '4L7'],\n      payback: ['8M', '7M', '4M'],\n      perishsong: ['9E', '8E', '7E', '4E'],\n      pinmissile: ['9L8', '8M', '8L8', '7L25', '4L25'],\n      powertrip: ['9E', '8E', '7E'],\n      poweruppunch: ['7M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      psychic: ['9M', '8M', '7M', '4M'],\n      pursuit: ['7E', '4E'],\n      rest: ['9M', '8M', '7M', '4M'],\n      retaliate: ['8M', '7M'],\n      return: ['7M', '4M'],\n      risingvoltage: ['8T'],\n      rocksmash: ['7M', '4M'],\n      round: ['8M', '7M'],\n      screech: ['8M', '7E', '4E'],\n      secretpower: ['7M', '4M'],\n      shockwave: ['7T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      smellingsalts: ['7E', '4E'],\n      snarl: ['9M', '8M', '7M'],\n      snatch: ['4M'],\n      snore: ['8M', '7T', '4T'],\n      spite: ['9M', '9L12', '8L12', '7T', '7L11', '6T', '5T', '4T', '4L11'],\n      strength: ['7M', '4M'],\n      substitute: ['9M', '8M', '7M', '7L50', '4M', '4L50'],\n      suckerpunch: ['9E', '8E'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '4M'],\n      tearfullook: ['9L24', '8L24', '7L22'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '4M'],\n      thunderbolt: ['9M', '8M', '7M'],\n      thunderwave: ['9M', '8M', '7M', '4M'],\n      torment: ['9L33', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '4M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      vacuumwave: ['9M', '9E', '8E', '7E', '6E', '5E', '4T', '4E'],\n      voltswitch: ['9M'],\n      workup: ['8M', '7M'],\n      wrap: ['9L1', '8L1', '7L1', '4L1']\n    }\n  ],\n  [\n    'voodoom',\n    {\n      acupressure: ['9L52', '8L52', '7L40', '4L40'],\n      afteryou: ['7T'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1', '7L1', '4L1'],\n      attract: ['8M', '7M', '4M'],\n      aurasphere: ['9M', '9L40', '8M', '8L40', '7L45', '4L45'],\n      batonpass: ['9M', '8M'],\n      beatup: ['8M', '7L55', '4L55'],\n      brickbreak: ['8M', '7M', '4M'],\n      brutalswing: ['8M'],\n      bulkup: ['8M', '7M', '4M'],\n      bulldoze: ['8M', '7M'],\n      burningjealousy: ['9M', '8T'],\n      captivate: ['4M'],\n      charge: ['9M', '9L20', '8L20', '7L19', '4L19'],\n      closecombat: ['9M', '9L64', '8M', '8L64', '7L35', '4L35'],\n      coaching: ['9M', '8T'],\n      confide: ['7M'],\n      copycat: ['9L1', '8L1', '7L1', '4L1'],\n      counter: ['4T'],\n      darkestlariat: ['8M'],\n      darkpulse: ['9M', '8M', '7M', '4M'],\n      doubleteam: ['7M'],\n      drainpunch: ['9M', '8M', '7T', '4M'],\n      dreameater: ['7M', '4M'],\n      earthquake: ['9M', '8M', '7M', '4M'],\n      echoedvoice: ['9L16', '8L16'],\n      endure: ['9M', '8M', '4M'],\n      facade: ['9M', '8M', '7M', '4M'],\n      feintattack: ['7L30', '4L30'],\n      flashcannon: ['9M', '8M', '7M'],\n      fling: ['9M', '8M', '7M', '4M'],\n      focusblast: ['9M', '8M', '7M', '4M'],\n      focuspunch: ['9M', '7T', '6T', '4M'],\n      followme: ['9L1', '8L1', '7L20', '4L20'],\n      foulplay: ['9M', '9L58', '8M', '8L58', '7L61'],\n      frustration: ['7M', '4M'],\n      gigaimpact: ['9M', '8M', '7M', '4M'],\n      grudge: ['8L35', '7L15', '4L15'],\n      hex: ['9M', '9L28', '8M', '8L28', '7L48'],\n      hiddenpower: ['7M', '4M'],\n      hyperbeam: ['8M', '7M', '4M'],\n      hypervoice: ['9M', '8M', '7T'],\n      icepunch: ['9M', '8M', '7T', '4T'],\n      imprison: ['9M', '8M'],\n      knockoff: ['9M', '7T', '6T', '5T', '4T'],\n      lashout: ['9M', '8T'],\n      lowkick: ['9M', '8M', '7T', '4T'],\n      lowsweep: ['9M', '8M', '7M'],\n      magiccoat: ['7T', '4T'],\n      magicroom: ['8M', '7T'],\n      metronome: ['9M', '8M', '4T'],\n      mudslap: ['9M', '4T'],\n      nastyplot: ['9M', '8M'],\n      naturalgift: ['4M'],\n      nightmare: ['4T'],\n      nightslash: ['9L1', '8L1', '7M', '7L1', '4L1'],\n      painsplit: ['9L46', '8L46', '7L1', '4T', '4L1'],\n      payback: ['8M', '7M', '4M'],\n      pinmissile: ['9L1', '8M', '8L1', '7L25', '4L25'],\n      poweruppunch: ['7M'],\n      protect: ['9M', '8M', '7M', '4M'],\n      psychic: ['9M', '8M', '7M', '4M'],\n      rest: ['9M', '8M', '7M', '4M'],\n      retaliate: ['8M', '7M'],\n      return: ['7M', '4M'],\n      revenge: ['8M', '8L0', '7L1', '4L1'],\n      risingvoltage: ['8T'],\n      rockslide: ['9M', '8M', '7M', '4M'],\n      rocksmash: ['7M', '4M'],\n      round: ['8M', '7M'],\n      screech: ['8M'],\n      secretpower: ['7M', '4M'],\n      shockwave: ['7T', '4M'],\n      sleeptalk: ['9M', '8M', '7M', '4M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snarl: ['9M', '8M', '7M'],\n      snatch: ['4M'],\n      snore: ['8M', '7T', '4T'],\n      spite: ['9M', '9L12', '8L12', '7T', '7L1', '6T', '5T', '4T', '4L1'],\n      stoneedge: ['9M', '8M', '7M', '4M'],\n      strength: ['7M', '4M'],\n      substitute: ['9M', '8M', '7M', '7L50', '4M', '4L50'],\n      sunnyday: ['9M', '8M', '7M', '4M'],\n      swagger: ['7M', '4M'],\n      taunt: ['9M', '8M', '7M', '4M'],\n      tearfullook: ['9L24', '8L24', '7L22'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '4M'],\n      throatchop: ['9L1', '8M', '8L1'],\n      thunderbolt: ['9M', '8M', '7M'],\n      thunderpunch: ['9M', '8M'],\n      thunderwave: ['9M', '8M', '7M', '4M'],\n      torment: ['9L35', '7M', '6M', '5M', '4M'],\n      toxic: ['7M', '4M'],\n      uproar: ['9M', '8M', '7T', '6T', '5T', '4T'],\n      vacuumwave: ['9M', '4T'],\n      voltswitch: ['9M'],\n      workup: ['8M', '7M'],\n      wrap: ['9L1', '8L1', '7L1', '4L1']\n    }\n  ],\n  [\n    'scratchet',\n    {\n      aerialace: ['9M', '7M', '5M'],\n      attract: ['8M', '7M', '5M'],\n      batonpass: ['9M', '8M', '7E', '5E'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '9L30', '8M', '7M', '6M', '5M'],\n      bulkup: ['9M', '9L36', '8M', '8L36', '7M', '7L40', '5M', '5L40'],\n      bulldoze: ['9M', '8M', '7M', '5M'],\n      closecombat: ['9M', '8M'],\n      coaching: ['8T'],\n      confide: ['7M'],\n      confuseray: ['9M', '9E', '8E', '7M', '7E', '5E'],\n      doubleteam: ['7M', '5M'],\n      echoedvoice: ['7M', '5M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '5M'],\n      falseswipe: ['9M', '8M', '7M', '5M'],\n      flash: ['6M', '5M'],\n      fling: ['9M', '8M', '7M', '5M'],\n      focusblast: ['9M', '8M', '7M', '5M'],\n      focusenergy: ['9L6', '8M', '8L6', '7L13', '7E', '5L13', '5E'],\n      frustration: ['7M', '7E', '5M'],\n      furyswipes: ['9L9', '8L9', '7L18', '5L1'],\n      grassknot: ['9M', '8M', '7M', '5M'],\n      harden: ['9L1', '8L1', '7L4', '5L9'],\n      haze: ['9M', '9E', '8E', '7E', '6E', '5E'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M', '5M'],\n      hypervoice: ['9M', '9L33', '8M', '8L33', '7L36', '5L36'],\n      irontail: ['8M', '7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      memento: ['9E', '8E', '7E', '5E'],\n      mudslap: ['9M'],\n      naturepower: ['8E', '7M', '7E', '5E'],\n      poweruppunch: ['8L3', '6M'],\n      protect: ['9M', '8M', '7M', '5M'],\n      quash: ['9E', '8E', '7M', '5M'],\n      raindance: ['9M', '8M', '7M', '5M'],\n      rapidspin: ['9E', '8E', '7E', '5E'],\n      rest: ['9M', '9L24', '8M', '8L24', '7M', '7L53', '5M', '5L53'],\n      retaliate: ['9L21', '8M', '8L21', '7L57', '6M', '5M', '5L57'],\n      return: ['7M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '9L18', '8L18', '7M', '7L23', '7E', '6M', '6E', '5M', '5L23', '5E'],\n      rockslide: ['9M', '8M', '7M', '5M'],\n      rocksmash: ['9L12', '8L12', '7T', '7L9', '6M', '5M', '5L18'],\n      rocktomb: ['9M', '8M', '7M', '5M'],\n      roost: ['8E', '7M', '7E', '6M', '6E', '5T', '5E'],\n      round: ['8M', '7M', '5M'],\n      safeguard: ['8M', '7M', '5M'],\n      scratch: ['9L1', '8L1', '7L1'],\n      secretpower: ['7M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M', '7T'],\n      stealthrock: ['9M', '8M', '7T', '7E', '5E'],\n      strength: ['6M', '5M'],\n      submission: ['8L30', '7L32', '5L32'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '5M'],\n      superpower: ['9L39', '8M', '8L39', '7T', '7L45', '6T', '6L45', '5T', '5L45'],\n      swagger: ['7M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L15', '8M', '8L15', '7M', '7L49', '5M', '5L49'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '5M'],\n      throatchop: ['8M'],\n      toxic: ['7M', '5M'],\n      trailblaze: ['9M'],\n      workup: ['9L27', '8M', '8L27', '7M', '7L27', '5M', '5L27'],\n      yawn: ['9E', '8E', '7E', '5E']\n    }\n  ],\n  [\n    'tomohawk',\n    {\n      acrobatics: ['9M', '8M', '7M', '5M'],\n      aerialace: ['9M', '9L12', '8L12', '7M', '7L17', '5M', '5L17'],\n      aircutter: ['9M'],\n      airslash: ['9M', '9L31', '8M', '8L31', '7L33', '5L37'],\n      aquatail: ['7T'],\n      attract: ['8M', '7M', '5M'],\n      aurasphere: ['9M', '9L1', '8M', '8L1', '7L1', '5L1'],\n      batonpass: ['9M', '8M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '8M'],\n      bravebird: ['9M', '8M'],\n      brickbreak: ['9M', '9L36', '8M', '7M', '6M', '5M'],\n      bulkup: ['9M', '9L1', '8M', '8L1', '7M', '5M'],\n      bulldoze: ['9M', '8M', '7M', '5M'],\n      closecombat: ['9M', '8M'],\n      coaching: ['9M', '8T'],\n      confide: ['7M'],\n      confuseray: ['9M', '7M'],\n      doubleteam: ['7M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      earthquake: ['9M', '8M', '7M', '5M'],\n      echoedvoice: ['7M', '5M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '5M'],\n      falseswipe: ['9M', '8M', '7M', '5M'],\n      flash: ['6M', '5M'],\n      fling: ['9M', '8M', '7M', '5M'],\n      fly: ['9M', '8M', '7M', '5M'],\n      focusblast: ['9M', '8M', '7M', '5M'],\n      focusenergy: ['9L1', '8M', '8L1'],\n      frustration: ['5M'],\n      furyswipes: ['9L9', '8L9', '7L1', '5L1'],\n      gigaimpact: ['9M', '8M', '7M', '5M'],\n      grassknot: ['9M', '8M', '7M', '5M'],\n      harden: ['9L1', '8L1', '7L1', '5L1'],\n      haze: ['9M'],\n      healingwish: ['9L46', '8L46', '7L60', '5L60'],\n      heatwave: ['9M', '8M', '7L42', '5L45'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M', '5M'],\n      hurricane: ['9M', '9L56', '8M', '8L56', '7L51', '5L55'],\n      hyperbeam: ['9M', '8M', '7M', '5M'],\n      hypervoice: ['9M', '9L41', '8M', '8L41', '7L45', '5L49'],\n      incinerate: ['6M', '5M'],\n      irontail: ['8M', '7T'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      morningsun: ['9L15', '8L15', '7L20', '5L20'],\n      poweruppunch: ['8L1', '6L99'],\n      protect: ['9M', '8M', '7M', '5M'],\n      quash: ['7M', '5M'],\n      raindance: ['9M', '9L21', '8M', '8L21', '7M', '7L29', '5M', '5L29'],\n      rest: ['9M', '9L1', '8M', '8L1', '7M', '7L53', '5M', '5L53'],\n      retaliate: ['9L1', '8M', '8L1', '6M', '5M'],\n      return: ['7M', '5M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      roar: ['9M', '9L1', '8L1', '7M', '6M', '5M'],\n      rockslide: ['9M', '8M', '7M', '5M'],\n      rocksmash: ['9L1', '8L1', '6M', '5M'],\n      rocktomb: ['9M', '8M', '7M', '5M'],\n      roost: ['9L26', '8L26', '7M', '6M', '5T'],\n      round: ['8M', '7M', '5M'],\n      safeguard: ['8M', '7M', '5M'],\n      scratch: ['9L1', '8L1', '7L4'],\n      secretpower: ['7M'],\n      skyattack: ['9L61', '8L61', '7L55'],\n      skydrop: ['7M', '7L49', '5M', '5L50'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M', '5M'],\n      stealthrock: ['9M', '8M'],\n      steelwing: ['8M', '7M'],\n      stoneedge: ['9M', '8M'],\n      strength: ['6M', '5M'],\n      submission: ['8L36', '7L37', '5L42'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      sunnyday: ['9M', '9L15', '8M', '8L15', '7M', '7L1', '5M', '5L1'],\n      superpower: ['9L51', '8M', '8L51', '7T', '7L50', '6T', '6L51', '5T', '5L51'],\n      swagger: ['7M', '5M'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L1', '8M', '8L1', '7M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '5M'],\n      throatchop: ['9M', '8M'],\n      toxic: ['7M', '5M'],\n      trailblaze: ['9M'],\n      whirlwind: ['9L18', '8L18', '7L23', '5L23'],\n      workup: ['9L1', '8M', '8L1', '7M', '5M']\n    }\n  ],\n  [\n    'necturine',\n    {\n      attract: ['8M', '7M', '5M'],\n      calmmind: ['9M', '8M', '7M', '5M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      curse: ['9E', '8E', '7E', '5E'],\n      cut: ['7M', '5M'],\n      darkpulse: ['9M', '8M', '7M'],\n      doubleteam: ['7M', '5M'],\n      dreameater: ['7M', '5M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '5M'],\n      facade: ['9M', '8M', '7M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '5M'],\n      futuresight: ['8M', '7E', '5E'],\n      gigadrain: ['9M', '8M', '7E', '6T', '5E'],\n      grassknot: ['9M', '8M', '7M', '5M'],\n      grassyglide: ['8T'],\n      grassyterrain: ['9M', '9L32', '8M', '8L32', '7L22'],\n      gravity: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      hex: ['9M', '9L16', '8M', '8L16', '7L18', '5L25'],\n      hiddenpower: ['7M', '5M'],\n      ingrain: ['9E', '8E', '7E', '5E'],\n      leafblade: ['9E', '8M', '7E', '6E', '5E'],\n      leafstorm: ['9M', '8M', '7E', '5E'],\n      leechlife: ['9M', '8M', '7M'],\n      leechseed: ['9L8', '8L8', '7L8'],\n      leer: ['9L1', '8L1', '7L1', '5L1'],\n      magicalleaf: ['9M', '9L12', '8M', '8L12', '7L11'],\n      naturalgift: ['7E', '5L31', '5E'],\n      naturepower: ['7M'],\n      nightmare: ['7E', '5E'],\n      nightshade: ['9M', '9L28', '8L28', '7L26'],\n      ominouswind: ['7E', '5L7'],\n      painsplit: ['9L40', '8L40', '7L34', '6T', '5L37'],\n      payback: ['8M', '7M', '5M'],\n      powerwhip: ['9L44', '8M', '8L44', '7L50', '5L50'],\n      protect: ['9M', '8M', '7M', '5M'],\n      psychic: ['9M', '8M', '7M', '5M'],\n      psychup: ['7M', '5M'],\n      rest: ['9M', '8M', '7M', '5M'],\n      return: ['7M', '5M'],\n      round: ['8M', '7M', '5M'],\n      secretpower: ['7M'],\n      seedbomb: ['9M', '9L24', '8M', '8L24', '7T', '7L39'],\n      shadowball: ['9M', '9L36', '8M', '8L36', '7M', '7L43', '5M', '5L44'],\n      shadowsneak: ['9L4', '8L4', '7L4', '5L13'],\n      sketch: ['9S0', '5E'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M', '5M'],\n      spite: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '5M'],\n      swagger: ['7M', '5M'],\n      telekinesis: ['6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '5M'],\n      torment: ['7M', '5M'],\n      toxic: ['7M', '5M'],\n      toxicspikes: ['9M', '9L20', '8M', '8L20', '7L23', '5L19'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L1', '8L1', '7L1', '5L1'],\n      willowisp: ['9M', '9L20', '8M', '8L20', '7M', '7L15', '5M', '5L19'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'necturna',\n    {\n      attract: ['8M', '7M', '5M'],\n      calmmind: ['9M', '8M', '7M', '5M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      crunch: ['9M', '8M'],\n      cut: ['7M', '5M'],\n      darkpulse: ['9M', '8M', '7M'],\n      doubleteam: ['7M', '5M'],\n      dreameater: ['7M', '5M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '5M'],\n      facade: ['9M', '8M', '7M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '5M'],\n      futuresight: ['9M', '8M'],\n      gigadrain: ['8M', '6T'],\n      gigaimpact: ['9M', '8M', '7M', '5M'],\n      grassknot: ['9M', '8M', '7M', '5M'],\n      grassyglide: ['8T'],\n      grassyterrain: ['9M', '9L34', '8M', '8L34', '7L34'],\n      gravity: ['9M', '7T', '6T', '5T'],\n      hex: ['9M', '9L16', '8M', '8L16', '7L28', '5L25'],\n      hiddenpower: ['7M', '5M'],\n      hornleech: ['9L0', '8L0', '7L1', '5L31'],\n      hyperbeam: ['9M', '8M', '7M', '5M'],\n      leafblade: ['8M'],\n      leafstorm: ['9M', '8M'],\n      leechlife: ['9M', '8M', '7M'],\n      leechseed: ['9L1', '8L1', '7L12'],\n      leer: ['9L1', '8L1', '7L1', '5L1'],\n      magicalleaf: ['9M', '9L12', '8M', '8L12', '7L17'],\n      naturepower: ['7M'],\n      nightshade: ['9M', '9L28', '8L28', '7L39'],\n      ominouswind: ['5L7'],\n      painsplit: ['9L46', '8L46', '7L45', '6T', '5L40'],\n      payback: ['8M', '7M', '5M'],\n      poisonfang: ['9L1', '8L1', '7L1', '5L1'],\n      powerwhip: ['9L52', '8M', '8L52', '7L56', '5L60'],\n      protect: ['9M', '8M', '7M', '5M'],\n      psychic: ['9M', '8M', '7M', '5M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '5M'],\n      rest: ['9M', '8M', '7M', '5M'],\n      return: ['7M', '5M'],\n      round: ['8M', '7M', '5M'],\n      secretpower: ['7M'],\n      seedbomb: ['9M', '9L24', '8M', '8L24', '7T'],\n      shadowball: ['9M', '9L40', '8M', '8L40', '7M', '7L50', '5M', '5L50'],\n      shadowclaw: ['9M', '8M', '7M', '5M'],\n      shadowsneak: ['9L1', '8L1', '7L6', '5L13'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M', '5M'],\n      solarblade: ['9M', '8M'],\n      spite: ['9M', '7T', '6T', '5T'],\n      stoneedge: ['9M', '8M', '7M', '5M'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '5M'],\n      superfang: ['9M', '9L1', '8L1', '7T', '7L1', '6T', '5T', '5L1'],\n      swagger: ['7M', '5M'],\n      telekinesis: ['6M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '5M'],\n      thunderfang: ['9M', '9L1', '8M', '8L1', '7L1', '5L1'],\n      torment: ['7M', '5M'],\n      toxic: ['7M', '5M'],\n      toxicspikes: ['9M', '9L20', '8M', '8L20', '7L23', '5L19'],\n      trailblaze: ['9M'],\n      vinewhip: ['9L1', '8L1', '7L1', '5L1'],\n      willowisp: ['9M', '9L20', '8M', '8L20', '7M', '7L23', '5M', '5L19'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'mollux',\n    {\n      acid: ['9L4', '8L4', '7L4', '5L4'],\n      acidarmor: ['9L32', '8L32', '7L33', '5L28'],\n      acidspray: ['9M', '9L12', '8L12', '7L12', '5L12'],\n      aquaring: ['9E', '8E', '7E', '5E'],\n      attract: ['8M', '7M', '5M'],\n      bide: ['7L1', '5L1'],\n      bind: ['7T'],\n      calmmind: ['9M', '8M', '7M', '5M'],\n      charm: ['9M', '8M', '7E', '5E'],\n      clearsmog: ['9L24', '8L24', '7L25', '5L20'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L8', '8L8', '7L17', '5L17'],\n      corrosivegas: ['8T'],\n      doubleteam: ['7M', '5M'],\n      drainingkiss: ['9M', '9L16', '8M', '8L16', '7L20', '7E'],\n      ember: ['9L1', '8L1', '7L1', '5L1'],\n      endure: ['9M', '8M'],\n      eruption: ['9L68', '8L68', '7L57', '5L52'],\n      explosion: ['7M', '5M'],\n      facade: ['9M', '8M', '7M', '5M'],\n      finalgambit: ['9L60', '8L60', '7L60', '5L57'],\n      fireblast: ['9M', '8M', '7M', '5M'],\n      firespin: ['9M', '8M', '7E', '5E'],\n      flamecharge: ['9M', '7M', '5M'],\n      flamethrower: ['9M', '8M', '7M', '5M'],\n      flash: ['6M', '5M'],\n      frustration: ['7M', '5M'],\n      gastroacid: ['9L56', '8L56', '7M', '6T', '5E'],\n      gigaimpact: ['9M', '8M', '7M', '5M'],\n      gunkshot: ['9M', '8M', '7L52', '6T', '5L49'],\n      healbell: ['7T', '7E', '6T', '6E', '5T', '5E'],\n      healpulse: ['9E', '8E', '7E', '5E'],\n      heatwave: ['9M', '8M', '7L36', '6T', '5L33'],\n      helpinghand: ['9M', '8M', '7E', '6T', '5E'],\n      hiddenpower: ['7M', '5M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M', '8M', '7M', '5M'],\n      inferno: ['9L48', '8L48', '7L49', '5L44'],\n      lavaplume: ['9L28', '8L28', '7L28', '5L25'],\n      leechlife: ['9M', '8M', '7M'],\n      lifedew: ['9L20', '8L20'],\n      lightscreen: ['9M', '8M', '7M', '5M'],\n      moonlight: ['9L40', '8L40', '7L33', '5L28'],\n      overheat: ['9M', '8M', '7M', '5M'],\n      protect: ['9M', '8M', '7M', '5M'],\n      raindance: ['9M', '8M', '7M', '5M'],\n      rapidspin: ['9E', '8E', '7E', '5E'],\n      recover: ['9L52', '8L52', '7L41', '5L36'],\n      rest: ['9M', '8M', '7M', '5M'],\n      return: ['7M', '5M'],\n      round: ['8M', '7M', '5M'],\n      secretpower: ['7M'],\n      selfdestruct: ['8M'],\n      shockwave: ['7T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M', '7E', '5E'],\n      sludgebomb: ['9M', '8M', '7M', '5M'],\n      sludgewave: ['9L36', '8M', '8L36', '7M', '5M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M', '5M'],\n      spotlight: ['7L65'],\n      stealthrock: ['9M', '8M', '7E', '6T', '5E'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      sunnyday: ['9M', '8M', '7M', '5M'],\n      swagger: ['7M', '5M'],\n      swift: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '5M'],\n      thunder: ['9M', '8M', '7M', '5M'],\n      thunderbolt: ['9M', '8M', '7M', '5M'],\n      thunderwave: ['9M', '8M', '7M', '5M'],\n      toxic: ['9M', '9L64', '8L64', '7M', '6M', '5M'],\n      toxicspikes: ['9M', '9L44', '8M', '8L44', '7L44', '5L41'],\n      trick: ['9M', '8M', '7E', '6T', '5E'],\n      venomdrench: ['8M', '7E'],\n      venoshock: ['9M', '8M', '7M', '5M'],\n      willowisp: ['9M', '8M', '7M', '5M'],\n      withdraw: ['9L1', '8L1', '7L9', '5L9']\n    }\n  ],\n  [\n    'cupra',\n    {\n      allyswitch: ['8M', '5M'],\n      ancientpower: ['9L21', '8L21', '7L44', '5L44'],\n      attract: ['8M', '7M', '5M'],\n      bugbite: ['9M', '9L15', '8L15', '7T', '7L7', '6T', '5T', '5L7'],\n      bugbuzz: ['9M', '8M', '7E', '5E'],\n      calmmind: ['9M'],\n      closecombat: ['9M', '8M', '7E', '5E'],\n      confide: ['7M'],\n      counter: ['9E', '8E', '7E', '5E'],\n      cut: ['6M', '5M'],\n      disable: ['9E', '7E', '6E', '5E'],\n      doubleteam: ['9L9', '8L9', '7M', '5M'],\n      dreameater: ['7M', '5M'],\n      echoedvoice: ['7M', '5M'],\n      electroweb: ['8M', '7T', '5T'],\n      expandingforce: ['8T'],\n      facade: ['9M', '8M', '7M', '5M'],\n      feint: ['9E', '8E', '7E', '5E'],\n      finalgambit: ['9L36', '8L36', '7L38', '5L38'],\n      flash: ['6M', '5M'],\n      fling: ['9M', '8M', '7M', '5M'],\n      frustration: ['7M', '5M'],\n      hail: ['8M', '7M', '5M'],\n      healpulse: ['9L18', '8L18', '7L21', '5L21'],\n      helpinghand: ['9M', '8M', '7T', '5T'],\n      hiddenpower: ['7M', '5M'],\n      hydropump: ['9M', '8M', '7E', '5E'],\n      icywind: ['9M', '8M', '7T', '5T'],\n      imprison: ['9M', '9L12', '8M', '8L12'],\n      infestation: ['7M'],\n      lightscreen: ['9M', '8M', '7M', '5M'],\n      magiccoat: ['7T', '5T'],\n      magicroom: ['8M', '7T', '5T'],\n      megahorn: ['9E', '8M', '7E', '6E', '5E'],\n      nastyplot: ['9M', '8M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '5M'],\n      psychic: ['9M', '9L33', '8M', '8L33', '7M', '5M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['9E', '7M', '6M', '5M'],\n      psyshock: ['9M', '8M', '7M', '5M'],\n      raindance: ['9M', '8M', '7M', '5M'],\n      recycle: ['7T', '5T'],\n      reflect: ['9M', '8M', '7M', '5M'],\n      rest: ['9M', '8M', '7M', '5M'],\n      retaliate: ['8M', '5M'],\n      return: ['7M', '5M'],\n      roleplay: ['7T', '5T'],\n      round: ['8M', '7M', '5M'],\n      safeguard: ['8M', '7M', '7E', '5M', '5E'],\n      secretpower: ['7M'],\n      shadowball: ['9M', '8M', '7M', '5M'],\n      shockwave: ['7M'],\n      signalbeam: ['7T'],\n      skillswap: ['9M', '8M', '7T', '5T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      steelwing: ['8M', '7M'],\n      stringshot: ['9L1', '8L1', '7L1', '5L1'],\n      strugglebug: ['9M', '9L6', '8L6', '7L27', '5M'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      sunnyday: ['9M', '9L3', '8M', '8L3', '7M', '7L14', '5M', '5L14'],\n      swagger: ['7M', '5M'],\n      tackle: ['9L1', '8L1', '7L1', '5L1'],\n      tailglow: ['9E', '7L60'],\n      telekinesis: ['5M'],\n      terablast: ['9M'],\n      toxic: ['7M', '5M'],\n      trick: ['9M', '8M', '7T', '5T'],\n      waterpulse: ['9M', '7T'],\n      willowisp: ['9M', '9L24', '8M', '8L24', '7M', '7L32', '5M', '5L32'],\n      wingattack: ['7E', '5E'],\n      wish: ['9L31', '8L31', '7L48', '5L48'],\n      wonderroom: ['8M', '7T', '5T'],\n      xscissor: ['9M', '8M', '7M', '5M'],\n      zenheadbutt: ['9M', '9L27', '8M', '8L27', '7T', '5T', '5L54']\n    }\n  ],\n  [\n    'argalis',\n    {\n      allyswitch: ['8M', '5M'],\n      ancientpower: ['9L21', '8L21', '7L47', '5L47'],\n      attract: ['8M', '7M', '5M'],\n      bugbite: ['9M', '9L15', '8L15', '7T', '7L7', '6T', '5T', '5L7'],\n      bugbuzz: ['9M', '8M'],\n      calmmind: ['9M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      cut: ['6M', '5M'],\n      doubleteam: ['9L9', '8L9', '7M', '5M'],\n      dreameater: ['7M', '5M'],\n      echoedvoice: ['7M', '5M'],\n      electroweb: ['8M', '7T', '5T'],\n      expandingforce: ['8T'],\n      facade: ['9M', '8M', '7M', '5M'],\n      finalgambit: ['9L52', '8L52', '7L41', '5L41'],\n      flash: ['6M', '5M'],\n      fling: ['9M', '8M', '7M', '5M'],\n      frustration: ['7M', '5M'],\n      hail: ['8M', '7M', '5M'],\n      healpulse: ['9L18', '8L18', '7L21', '5L21'],\n      helpinghand: ['9M', '8M', '7T', '5T'],\n      hiddenpower: ['7M', '5M'],\n      hydropump: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T', '5T'],\n      imprison: ['9M', '9L12', '8M', '8L12'],\n      infestation: ['7M'],\n      lightscreen: ['9M', '9L37', '8M', '8L37', '7M', '7L57', '5M'],\n      magiccoat: ['7T', '5T'],\n      magicroom: ['8M', '7T', '5T'],\n      megahorn: ['8M'],\n      nastyplot: ['9M', '9L42', '8M', '8L42'],\n      ominouswind: ['7L27', '5L27'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '5M'],\n      psychic: ['9M', '9L47', '8M', '8L47', '7M', '7L62', '5M'],\n      psychicterrain: ['9M', '8M'],\n      psychup: ['7M', '5M'],\n      psyshock: ['9M', '8M', '7M', '5M'],\n      raindance: ['9M', '8M', '7M', '5M'],\n      recycle: ['7T', '5T'],\n      reflect: ['9M', '9L37', '8M', '8L37', '7M', '7L57', '5M'],\n      rest: ['9M', '8M', '7M', '5M'],\n      retaliate: ['8M', '5M'],\n      return: ['7M', '5M'],\n      roleplay: ['7T', '5T'],\n      round: ['8M', '7M', '5M'],\n      safeguard: ['8M', '7M', '5M'],\n      secretpower: ['7M'],\n      shadowball: ['9M', '8M', '7M', '5M'],\n      shockwave: ['7M'],\n      signalbeam: ['7T'],\n      skillswap: ['9M', '8M', '7T', '5T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      spotlight: ['7L1'],\n      steelwing: ['8M', '7M'],\n      stringshot: ['9L1', '8L1', '7L1', '5L1'],\n      strugglebug: ['9M', '9L1', '8L1', '5M'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      sunnyday: ['9M', '9L1', '8M', '8L1', '7M', '7L14', '5M', '5L14'],\n      swagger: ['7M', '5M'],\n      tackle: ['9L1', '8L1', '7L1', '5L1'],\n      tailglow: ['7L65'],\n      telekinesis: ['5M'],\n      terablast: ['9M'],\n      toxic: ['7M', '5M'],\n      trick: ['9M', '8M', '7T', '5T'],\n      waterpulse: ['9M', '7T'],\n      willowisp: ['9M', '9L24', '8M', '8L24', '7M', '7L34', '5M', '5L34'],\n      wish: ['9L33', '8L33', '7L54', '5L54'],\n      wonderroom: ['8M', '7T', '5T'],\n      xscissor: ['9M', '8M', '7M', '5M'],\n      zenheadbutt: ['9M', '9L27', '8M', '8L27', '7T', '5T']\n    }\n  ],\n  [\n    'aurumoth',\n    {\n      allyswitch: ['8M', '5M'],\n      ancientpower: ['9L21', '8L21', '7L47', '5L47'],\n      attract: ['8M', '7M', '5M'],\n      blizzard: ['9M', '8M', '7M', '5M'],\n      bugbite: ['9M', '9L15', '8L15', '7T', '6T', '5T'],\n      bugbuzz: ['8M'],\n      calmmind: ['9M'],\n      closecombat: ['9M', '8M'],\n      confide: ['7M'],\n      cut: ['6M', '5M'],\n      doubleteam: ['9L9', '8L9', '7M', '5M'],\n      dragoncheer: ['9M'],\n      dragondance: ['9M', '9L1', '8M', '8L1', '7L1', '5L1'],\n      dreameater: ['7M', '5M'],\n      dualwingbeat: ['9M', '8T'],\n      echoedvoice: ['7M', '5M'],\n      electroweb: ['9M', '8M', '7T', '5T'],\n      expandingforce: ['9M', '8T'],\n      facade: ['9M', '8M', '7M', '5M'],\n      finalgambit: ['9L61', '8L61', '5L41'],\n      flash: ['6M', '5M'],\n      fling: ['9M', '8M', '7M', '5M'],\n      focusblast: ['9M', '8M', '7M', '5M'],\n      frustration: ['7M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '5M'],\n      hail: ['8M', '7M', '5M'],\n      healingwish: ['9L54', '8L54', '7L61', '5L61'],\n      healpulse: ['9L18', '8L18', '7L21', '5L21'],\n      helpinghand: ['9M', '8M', '7T', '5T'],\n      hiddenpower: ['7M', '5M'],\n      hydropump: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M', '5M'],\n      icebeam: ['9M', '8M', '7M', '5M'],\n      icywind: ['9M', '8M', '7T', '5T'],\n      imprison: ['9M', '9L12', '8M', '8L12'],\n      infestation: ['7M'],\n      lightscreen: ['9M', '9L37', '8M', '8L37', '7M', '5M'],\n      magiccoat: ['7T', '5T'],\n      magicroom: ['8M', '7T', '5T'],\n      megahorn: ['8M'],\n      nastyplot: ['9M', '9L42', '8M', '8L42'],\n      ominouswind: ['7L27', '5L27'],\n      overheat: ['9M', '8M', '7M', '5M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M', '7M', '5M'],\n      psychic: ['9M', '9L47', '8M', '8L47', '7M', '5M'],\n      psychicnoise: ['9M'],\n      psychicterrain: ['9M', '9L0', '8M', '8L0', '7L1'],\n      psychup: ['7M', '5M'],\n      psyshock: ['9M', '8M', '7M', '5M'],\n      raindance: ['9M', '8M', '7M', '5M'],\n      recycle: ['7T', '5T'],\n      reflect: ['9M', '9L37', '8M', '8L37', '7M', '5M'],\n      rest: ['9M', '8M', '7M', '5M'],\n      retaliate: ['8M', '5M'],\n      return: ['7M', '5M'],\n      roleplay: ['7T', '5T'],\n      round: ['8M', '7M', '5M'],\n      safeguard: ['8M', '7M', '5M'],\n      secretpower: ['7M'],\n      shadowball: ['9M', '8M', '7M', '5M'],\n      shockwave: ['7M'],\n      signalbeam: ['7T'],\n      silverwind: ['7L1', '5L1'],\n      skillswap: ['9M', '8M', '7T', '5T'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      solarbeam: ['9M', '8M', '7M', '5M'],\n      spotlight: ['7L1'],\n      steelwing: ['8M', '7M'],\n      stringshot: ['9L1', '8L1', '7L1', '5L1'],\n      strugglebug: ['9M', '9L1', '8L1', '5M'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      sunnyday: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '5M', '5L1'],\n      surf: ['9M', '8M', '7M', '5M'],\n      swagger: ['7M', '5M'],\n      tackle: ['9L1', '8L1', '7L1', '5L1'],\n      tailglow: ['7L67', '5L67'],\n      telekinesis: ['5M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      thunder: ['9M', '8M', '7M', '5M'],\n      thunderbolt: ['9M', '8M', '7M', '5M'],\n      toxic: ['7M', '5M'],\n      trick: ['9M', '8M', '7T', '5T'],\n      waterpulse: ['9M', '7T'],\n      willowisp: ['9M', '9L24', '8M', '8L24', '7M', '7L34', '5M', '5L34'],\n      wish: ['9L33', '8L33', '7L54', '5L54'],\n      wonderroom: ['8M', '7T', '5T'],\n      xscissor: ['9M', '8M', '7M', '5M'],\n      zenheadbutt: ['9M', '9L27', '8M', '8L27', '7T', '5T']\n    }\n  ],\n  [\n    'brattler',\n    {\n      aromatherapy: ['8E', '7E', '5E'],\n      attract: ['8M', '7M', '5M'],\n      beatup: ['8M', '7E', '5E'],\n      belch: ['9E', '8E', '7E'],\n      bind: ['7T', '5T'],\n      brutalswing: ['8M', '7M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L28', '8M', '8L28', '7L43', '5L39'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '8M', '7M', '5T'],\n      doubleteam: ['7M', '5M'],\n      dragontail: ['9M', '7M', '5M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '5M'],\n      facade: ['9M', '8M', '7M', '5M'],\n      feint: ['9E', '8E', '7E'],\n      foulplay: ['9M', '9L44', '8M', '8L44', '7T', '5T'],\n      frustration: ['7M', '5M'],\n      gigadrain: ['9M', '8M', '7T', '5T'],\n      glare: ['9L32', '8L32', '7L1', '7E', '5E'],\n      grassknot: ['9M', '9L16', '8M', '8L16', '7M', '7L15', '5M', '5L18'],\n      grassyglide: ['9M', '8T'],\n      haze: ['9M', '9E', '8E', '7E', '6E', '5E'],\n      healbell: ['7T', '5T'],\n      hiddenpower: ['7M', '5M'],\n      icefang: ['9M', '8M', '7E'],\n      irontail: ['8M', '7T', '5T'],\n      knockoff: ['9M', '9E', '8E', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leafblade: ['9L36', '8M', '8L36', '7L26', '5L34'],\n      leer: ['9L1', '8L1', '7L1'],\n      nastyplot: ['9M', '8M'],\n      naturepower: ['7M'],\n      nightslash: ['9E', '8E', '7E', '5E'],\n      partingshot: ['9L48', '8L48'],\n      payback: ['9L8', '8M', '8L8', '7M', '5M'],\n      poisonpowder: ['9E', '8E', '7E', '5E'],\n      poisontail: ['9M', '9E', '8E', '7E', '6E', '5E'],\n      powerwhip: ['9L52', '8M', '8L52', '7L44', '5L50'],\n      protect: ['9M', '8M', '7M', '5M'],\n      punishment: ['7L55', '5L55'],\n      pursuit: ['7L8', '5L1'],\n      recycle: ['9E', '7T', '6T', '5T'],\n      rest: ['9M', '8M', '7M', '5M'],\n      retaliate: ['8M', '7M', '5M'],\n      return: ['7M', '5M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L11', '7E', '5E'],\n      screech: ['9E', '8M', '7E', '5E'],\n      secretpower: ['7M'],\n      seedbomb: ['9M', '8M', '7T', '5T'],\n      skittersmack: ['8T'],\n      slam: ['9L24', '8L24', '7L22', '5L30'],\n      sleeptalk: ['9M', '8M', '7M', '5T'],\n      snarl: ['9M', '8M', '7M', '5M'],\n      snore: ['8M', '7T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '5M'],\n      spikyshield: ['9L40', '8L40', '7L40'],\n      spite: ['9M', '9E', '7T', '6T', '5T'],\n      strength: ['6M', '5M'],\n      stunspore: ['9E', '8E', '7E', '5E'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      suckerpunch: ['9L20', '8L20', '7L18', '5L25'],\n      sunnyday: ['8M', '7M', '5M'],\n      swagger: ['7M', '6M', '5M'],\n      sweetscent: ['9E', '8E', '7E', '5E'],\n      synthesis: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      taunt: ['9M', '8M', '7M', '5M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '5M'],\n      thunderfang: ['9M', '8M', '7E'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M', '5M'],\n      vinewhip: ['9L4', '8L4', '7L5', '5L1'],\n      weatherball: ['9M', '8M'],\n      wildcharge: ['9M', '8M', '7M', '5M'],\n      worryseed: ['7T', '5T'],\n      wrap: ['9L1', '8L1', '7L1', '5L1'],\n      wringout: ['7L49', '5L44']\n    }\n  ],\n  [\n    'malaconda',\n    {\n      attract: ['8M', '7M', '5M'],\n      beatup: ['8M'],\n      bind: ['7T', '5T'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M', '7M'],\n      confide: ['7M'],\n      crunch: ['9M', '9L28', '8M', '8L28', '7L43', '5L42'],\n      cut: ['6M', '5M'],\n      darkpulse: ['9M', '8M', '7M', '5T'],\n      doubleteam: ['7M', '5M'],\n      dragoncheer: ['9M'],\n      dragontail: ['9M', '7M', '5M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '7M', '5M'],\n      facade: ['9M', '8M', '7M', '5M'],\n      followme: ['9L1', '8L1', '7L1'],\n      foulplay: ['9M', '9L50', '8M', '8L50', '7T', '5T'],\n      frustration: ['7M', '5M'],\n      gigadrain: ['9M', '8M', '7T', '5T'],\n      gigaimpact: ['9M', '8M', '7M', '5M'],\n      glare: ['9L32', '8L32', '7L38'],\n      grassknot: ['9M', '9L16', '8M', '8L16', '7M', '7L20', '5M', '5L18'],\n      grassyglide: ['9M', '8T'],\n      gravapple: ['9L0', '8L0'],\n      haze: ['9M'],\n      healbell: ['7T', '5T'],\n      hiddenpower: ['7M', '5M'],\n      hyperbeam: ['9M', '8M', '7M', '5M'],\n      icefang: ['9M', '8M'],\n      irontail: ['8M', '7T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      lashout: ['9M', '8T'],\n      leafblade: ['9L38', '8M', '8L38', '7L34', '5L36'],\n      leer: ['9L1', '8L1', '7L1'],\n      nastyplot: ['9M', '8M'],\n      naturepower: ['7M'],\n      partingshot: ['9L56', '8L56'],\n      payback: ['9L1', '8M', '8L1', '7M', '5M'],\n      poisontail: ['9M'],\n      powerwhip: ['9L1', '8M', '8L1', '7L48', '5L57'],\n      protect: ['9M', '8M', '7M', '5M'],\n      punishment: ['7L62', '5L66'],\n      pursuit: ['7L10', '5L1'],\n      rapidspin: ['9L1', '8L1', '7L1', '6L1', '5L1'],\n      recycle: ['7T', '6T', '5T'],\n      rest: ['9M', '8M', '7M', '5M'],\n      retaliate: ['8M', '7M', '5M'],\n      return: ['7M', '5M'],\n      roar: ['9M', '7M', '6M', '5M'],\n      round: ['8M', '7M', '5M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L12', '8M', '8L12', '7L15'],\n      screech: ['8M'],\n      secretpower: ['7M'],\n      seedbomb: ['9M', '8M', '7T', '5T'],\n      skittersmack: ['9M', '8T'],\n      slam: ['9L24', '8L24', '7L29', '5L30'],\n      sleeptalk: ['9M', '8M', '7M', '5T'],\n      snarl: ['9M', '8M', '7M', '5M'],\n      snore: ['8M', '7T', '5T'],\n      solarbeam: ['9M', '8M', '7M', '5M'],\n      solarblade: ['9M', '9L62', '8M', '8L62', '7L66'],\n      spikyshield: ['9L44', '8L44', '7L52'],\n      spite: ['9M', '7T', '6T', '5T'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      suckerpunch: ['9L20', '8L20', '7L24', '5L25'],\n      sunnyday: ['9M', '8M', '7M', '5M'],\n      swagger: ['7M', '5M'],\n      synthesis: ['7T', '6T', '5T'],\n      taunt: ['9M', '8M', '7M', '5M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '5M'],\n      throatchop: ['9M', '8M'],\n      thunderfang: ['9M', '8M'],\n      toxic: ['7M', '6M', '5M'],\n      trailblaze: ['9M'],\n      uturn: ['9M', '8M', '7M', '5M'],\n      vinewhip: ['9L1', '8L1', '7L6', '5L1'],\n      weatherball: ['9M', '8M'],\n      wildcharge: ['9M', '8M', '7M', '5M'],\n      worryseed: ['7T', '5T'],\n      wrap: ['9L1', '8L1', '7L1', '5L1'],\n      wringout: ['7L57', '5L48']\n    }\n  ],\n  [\n    'cawdet',\n    {\n      acrobatics: ['9M', '8M', '5M'],\n      aerialace: ['9M', '9E', '8E', '5M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M', '7E', '5E'],\n      assurance: ['8M'],\n      attract: ['8M', '5M'],\n      beatup: ['8M'],\n      block: ['5T'],\n      brickbreak: ['9M', '8M', '5M'],\n      brine: ['9L28', '8M', '8L28', '5L42'],\n      bulletpunch: ['9L8', '8L8', '5L38'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      detect: ['9L32', '8L32', '5L26'],\n      doubleteam: ['5M'],\n      drainpunch: ['9M', '8M', '5T'],\n      drillpeck: ['9E', '8E', '7E', '5E'],\n      endeavor: ['9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '5M'],\n      flashcannon: ['9M', '9L44', '8M', '8L44', '5M', '5L49'],\n      fly: ['9M', '8M', '5M'],\n      frustration: ['5M'],\n      growl: ['9L4', '8L4', '5L5'],\n      hiddenpower: ['5M'],\n      hurricane: ['9M', '9L48', '8M', '8L48', '5L53'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M', '5T'],\n      knockoff: ['9M', '9E', '8E', '7T', '7E', '6T', '6E', '5T', '5E'],\n      leer: ['9L1', '8L1', '5L1'],\n      metalclaw: ['9M', '9L12', '8L12', '5L13'],\n      metalsound: ['9E', '8E', '7E', '5E'],\n      metronome: ['9M', '8M'],\n      mirrormove: ['7E', '5E'],\n      peck: ['9L1', '8L1', '5L1'],\n      pluck: ['5M'],\n      protect: ['9M', '8M', '5M'],\n      psychup: ['5M'],\n      pursuit: ['7E', '5E'],\n      quickattack: ['9E', '8E', '7E', '5E'],\n      quickguard: ['9E', '8E', '7E', '5E'],\n      raindance: ['9M', '8M', '5M'],\n      razorwind: ['7E', '5E'],\n      rest: ['9M', '8M', '5M'],\n      retaliate: ['8M', '5M'],\n      return: ['5M'],\n      rocksmash: ['5M'],\n      round: ['8M', '5M'],\n      screech: ['9L16', '8M', '8L16', '5L18'],\n      shockwave: ['7T'],\n      skyattack: ['5T'],\n      skydrop: ['5M'],\n      sleeptalk: ['9M', '8M', '5T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snatch: ['5T'],\n      snore: ['8M', '5T'],\n      steelbeam: ['9M', '8T'],\n      steelwing: ['9L36', '8M', '8L36', '5L31'],\n      strength: ['5M'],\n      substitute: ['9M', '8M', '5M'],\n      surf: ['9M', '8M', '5M'],\n      swagger: ['5M'],\n      swift: ['9M', '9L20', '8M', '8L20', '5L9'],\n      tailwind: ['9M', '9L40', '8L40', '5T', '5L45'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['5M'],\n      waterpulse: ['9M', '7T'],\n      watersport: ['7E', '5E'],\n      whirlpool: ['8M'],\n      wingattack: ['9L24', '8L24', '5L22']\n    }\n  ],\n  [\n    'cawmodore',\n    {\n      acrobatics: ['9M', '8M', '7M', '5M'],\n      aerialace: ['9M', '7M', '5M'],\n      agility: ['9M', '8M'],\n      aircutter: ['9M'],\n      airslash: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '5M'],\n      beatup: ['8M'],\n      belch: ['9L56', '8L56', '7L52'],\n      bellydrum: ['9L0', '8L0', '7L1', '5L35'],\n      block: ['7T', '5T'],\n      brickbreak: ['9M', '8M', '7M', '5M'],\n      brine: ['9L28', '8M', '8L28', '7L44', '5L44'],\n      bulletpunch: ['9L1', '8L1', '7L39', '5L39'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      detect: ['9L32', '8L32', '7L26', '5L26'],\n      doubleteam: ['7M', '5M'],\n      drainpunch: ['9M', '8M', '7T', '5T'],\n      dualwingbeat: ['9M', '8T'],\n      endeavor: ['7T', '6T', '5T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '5M'],\n      flashcannon: ['9M', '9L50', '8M', '8L50', '7M', '7L58', '5M', '5L52'],\n      fly: ['9M', '8M', '7M', '5M'],\n      frustration: ['7M', '5M'],\n      gigaimpact: ['9M', '8M', '7M', '5M'],\n      growl: ['9L1', '8L1', '7L5', '5L5'],\n      hardpress: ['9M'],\n      hiddenpower: ['7M', '5M'],\n      hurricane: ['9M', '9L62', '8M', '8L62', '7L64', '5L58'],\n      hyperbeam: ['9M', '8M', '7M', '5M'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M', '7T', '5T'],\n      knockoff: ['9M', '7T', '6T', '5T'],\n      leer: ['9L1', '8L1', '7L1', '5L1'],\n      megapunch: ['8M'],\n      metalclaw: ['9M', '9L12', '8L12', '7L13', '5L13'],\n      metronome: ['9M', '8M'],\n      peck: ['9L1', '8L1', '7L1', '5L1'],\n      pluck: ['7M', '5M'],\n      protect: ['9M', '8M', '7M', '5M'],\n      psychup: ['7M', '5M'],\n      raindance: ['9M', '8M', '7M', '5M'],\n      rest: ['9M', '8M', '7M', '5M'],\n      retaliate: ['8M', '7M', '5M'],\n      return: ['7M', '5M'],\n      revenge: ['8M'],\n      rocksmash: ['6M', '5M'],\n      round: ['8M', '7M', '5M'],\n      screech: ['9L16', '8M', '8L16', '7L18', '5L18'],\n      secretpower: ['7M'],\n      shockwave: ['7T'],\n      skyattack: ['9L68', '8L68', '7T', '5T'],\n      skydrop: ['7M', '5M'],\n      sleeptalk: ['9M', '8M', '7M', '5T'],\n      smackdown: ['9M', '7M', '6M', '5M'],\n      snatch: ['7T', '5T'],\n      snore: ['8M', '7T', '5T'],\n      steelbeam: ['9M', '8T'],\n      steelwing: ['9L38', '8M', '8L38', '7M', '7L31', '5L31'],\n      strength: ['6M', '5M'],\n      substitute: ['9M', '8M', '7M', '5M'],\n      surf: ['9M', '8M', '7M', '5M'],\n      swagger: ['7M', '5M'],\n      swift: ['9M', '9L20', '8M', '8L20', '7L9', '5L9'],\n      tailwind: ['9M', '9L44', '8L44', '5T', '5L48'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M'],\n      toxic: ['7M', '5M'],\n      upperhand: ['9M'],\n      waterpulse: ['9M', '7T'],\n      whirlpool: ['9M', '8M'],\n      wingattack: ['9L24', '8L24', '7L22', '5L22']\n    }\n  ],\n  [\n    'volkritter',\n    {\n      absorb: ['9L1', '8L1'],\n      aquajet: ['9E', '8E', '7E'],\n      aquaring: ['9L32', '8L32', '6L44'],\n      assurance: ['8M', '7E', '6E'],\n      attract: ['8M', '6M'],\n      bind: ['9L1', '8L1'],\n      bite: ['9L24', '8L24', '6L1'],\n      bounce: ['8M', '7T'],\n      captivate: ['7E', '6E'],\n      confide: ['6M'],\n      constrict: ['6L1'],\n      covet: ['7T'],\n      destinybond: ['9L44', '8L44', '6L32'],\n      dive: ['9L28', '8M', '8L28', '6L36'],\n      doubleteam: ['6M'],\n      extrasensory: ['9L40', '8L40'],\n      facade: ['9M', '8M', '6M'],\n      falseswipe: ['9M', '8M', '6M'],\n      fireblast: ['9M', '8M', '6M'],\n      firespin: ['9M', '9L8', '8M', '8L8', '6L18'],\n      flameburst: ['6L23'],\n      flamethrower: ['9M', '8M', '6M'],\n      flareblitz: ['9M'],\n      flash: ['6M', '6L1'],\n      flashcannon: ['9M', '8M', '6M'],\n      fling: ['9M', '8M', '6M'],\n      flipturn: ['9M', '8T'],\n      frustration: ['6M'],\n      heatwave: ['9M', '8M', '6L48'],\n      hiddenpower: ['6M'],\n      hydropump: ['9M', '9L48', '8M', '8L48', '6L51'],\n      incinerate: ['9L20', '8L20', '6M'],\n      infestation: ['9E', '8E', '7M', '6M'],\n      leechlife: ['9M', '8M', '6L1'],\n      memento: ['9L52', '8L52', '6L59'],\n      muddywater: ['8M'],\n      overheat: ['9M', '8M', '6M'],\n      payback: ['8M', '6M'],\n      pounce: ['9M'],\n      powergem: ['9M', '9L36', '8M', '8L36', '6L39'],\n      protect: ['9M', '8M', '6M'],\n      quash: ['6M'],\n      raindance: ['9M', '8M', '6M'],\n      reflect: ['9M', '9L12', '8M', '8L12', '6M', '6L4'],\n      reflecttype: ['9E', '8E', '7E'],\n      rest: ['9M', '8M', '6M'],\n      return: ['6M'],\n      round: ['8M', '6M'],\n      scald: ['9M', '8M', '7M', '6M', '6L28'],\n      scaryface: ['9M', '8M', '7E', '6E'],\n      scorchingsands: ['8T'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M', '6M'],\n      snore: ['8M'],\n      substitute: ['9M', '8M', '6M'],\n      sunnyday: ['9M', '8M', '6M'],\n      surf: ['9M', '8M', '6M'],\n      swagger: ['6M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '6M'],\n      tickle: ['9E', '8E', '7E', '6E'],\n      torment: ['6M'],\n      toxic: ['6M'],\n      uturn: ['9M', '8M', '6M'],\n      waterfall: ['9M', '8M', '6M'],\n      watergun: ['9L4', '8L4', '6L1'],\n      waterpulse: ['9M', '9E', '8E', '7E', '6E'],\n      whirlpool: ['9L16', '8M', '8L16', '6L14'],\n      willowisp: ['9M', '8M', '6M']\n    }\n  ],\n  [\n    'volkraken',\n    {\n      absorb: ['9L1', '8L1', '7L1'],\n      aquaring: ['9L32', '8L32', '7L46', '6L46'],\n      assurance: ['8M'],\n      attract: ['8M', '7M', '6M'],\n      bind: ['9L1', '8L1', '7T'],\n      bite: ['9L24', '8L24', '7L1', '6L1'],\n      bounce: ['8M', '7T'],\n      burningjealousy: ['8T'],\n      confide: ['7M', '6M'],\n      constrict: ['7L1', '6L1'],\n      covet: ['7T'],\n      destinybond: ['9L56', '8L56', '7L32', '6L32'],\n      dive: ['9L28', '8M', '8L28', '6L37'],\n      doubleteam: ['7M', '6M'],\n      extrasensory: ['9L50', '8L50'],\n      facade: ['9M', '8M', '7M', '6M'],\n      falseswipe: ['9M', '8M', '7M', '6M'],\n      fireblast: ['9M', '8M', '7M', '6M'],\n      firelash: ['9L38', '8L38', '7L35'],\n      firespin: ['9M', '9L1', '8M', '8L1', '7L18', '6L18'],\n      flameburst: ['7L23', '6L23'],\n      flamethrower: ['9M', '8M', '7M', '6M'],\n      flareblitz: ['9M'],\n      flash: ['7L1', '6M', '6L1'],\n      flashcannon: ['9M', '8M', '7M', '6M'],\n      fling: ['9M', '8M', '7M', '6M'],\n      flipturn: ['9M', '8T'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      heatwave: ['9M', '8M', '7L51', '6T', '6L51'],\n      hiddenpower: ['7M', '6M'],\n      hydropump: ['9M', '9L62', '8M', '8L62', '7L56', '6L56'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      incinerate: ['9L20', '8L20', '7M'],\n      infestation: ['7M', '6M'],\n      leechlife: ['9M', '8M', '7M', '6L1'],\n      liquidation: ['9M', '8M'],\n      memento: ['9L68', '8L68', '7L66', '6L66'],\n      muddywater: ['9M', '8M'],\n      overheat: ['9M', '8M', '7M', '6M'],\n      payback: ['8M', '7M', '6M'],\n      pounce: ['9M'],\n      powergem: ['9M', '9L44', '8M', '8L44', '7L42', '6L42'],\n      protect: ['9M', '8M', '7M', '6M'],\n      quash: ['7M', '6M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      reflect: ['9M', '9L12', '8M', '8L12', '7M', '7L1', '6M', '6L1'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      scald: ['9M', '9L0', '8M', '8L0', '7M', '7L28', '6M', '6L28'],\n      scaryface: ['9M', '8M'],\n      scorchingsands: ['9M', '8T'],\n      secretpower: ['7M'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      surf: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M', '7M', '6M'],\n      torment: ['7M', '6M'],\n      toxic: ['7M', '6M'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      waterfall: ['9M', '8M', '7M', '6M'],\n      watergun: ['9L1', '8L1', '7L1', '6L1'],\n      waterpulse: ['9M', '6T'],\n      whirlpool: ['9L16', '8M', '8L16', '7L14', '6L14'],\n      willowisp: ['9M', '8M', '7M', '6M'],\n      wringout: ['7L60']\n    }\n  ],\n  [\n    'snugglow',\n    {\n      acid: ['9L8', '8L8', '6L12'],\n      acidspray: ['9M'],\n      aquatail: ['9E', '8E', '6L32'],\n      attract: ['8M', '6M'],\n      aurasphere: ['9M', '8M', '7E'],\n      block: ['7T'],\n      chargebeam: ['9M', '7M', '6M'],\n      chillingwater: ['9M'],\n      clearsmog: ['9L28', '8L28', '6L22'],\n      confide: ['6M'],\n      crosspoison: ['8M'],\n      cut: ['6M'],\n      dazzlinggleam: ['9M', '8M', '6M'],\n      discharge: ['9L36', '8L36', '6L42'],\n      doubleteam: ['6M'],\n      eerieimpulse: ['9M', '8M', '6L49'],\n      electrify: ['9L40', '8L40'],\n      electroball: ['9M', '8M'],\n      electroweb: ['8M'],\n      encore: ['9M', '9L12', '8M', '8L12', '6L16'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '6M'],\n      flashcannon: ['9M', '8M', '6M'],\n      frustration: ['6M'],\n      haze: ['9M', '9E', '8E', '7E', '6E'],\n      hiddenpower: ['6M'],\n      iondeluge: ['6L26'],\n      irontail: ['9M', '8M'],\n      paraboliccharge: ['9L24', '8L24', '6L36'],\n      poisonjab: ['9M', '8M'],\n      poisonsting: ['9L1', '8L1', '6L6'],\n      poisontail: ['9M', '9L20', '8L20', '6L29'],\n      protect: ['9M', '8M', '6M'],\n      psybeam: ['9M', '9L32', '8L32'],\n      psychic: ['9M', '8M', '6M'],\n      psyshock: ['9M', '8M', '6M'],\n      psywave: ['6L39'],\n      raindance: ['9M', '8M', '6M'],\n      rest: ['9M', '8M', '6M'],\n      return: ['6M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '6M'],\n      shockwave: ['9E', '7E', '6E'],\n      signalbeam: ['7E', '6E'],\n      sleeptalk: ['9M', '8M', '6M'],\n      sludgebomb: ['9M', '8M', '6M'],\n      sludgewave: ['9L44', '8M', '8L44', '7M', '6M'],\n      snore: ['8M'],\n      splash: ['9E', '8E', '7E', '6E'],\n      substitute: ['9M', '8M', '6M'],\n      supersonic: ['9L4', '8L4', '6L1'],\n      surf: ['9M'],\n      swagger: ['6M'],\n      taunt: ['9M', '8M', '6M'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L48', '8M', '8L48', '6M', '6L46'],\n      thunderbolt: ['9M', '8M', '6M'],\n      thundershock: ['9L1', '8L1', '6L1'],\n      thunderwave: ['9M', '9L16', '8M', '8L16', '6M', '6L19'],\n      toxic: ['9M', '9E', '8E', '7M', '6M'],\n      venomdrench: ['8M', '7E'],\n      venoshock: ['9M', '8M', '6M'],\n      waterpulse: ['9M', '9E', '8E', '7E', '6E'],\n      wideguard: ['9E', '8E', '7E', '6E'],\n      wildcharge: ['9M', '8M', '6M'],\n      zenheadbutt: ['9M', '8M']\n    }\n  ],\n  [\n    'plasmanta',\n    {\n      acid: ['9L1', '8L1', '7L12', '6L12'],\n      acidspray: ['9M'],\n      aquatail: ['7L33', '6T', '6L33'],\n      attract: ['8M', '7M', '6M'],\n      aurasphere: ['9M', '8M'],\n      block: ['7T'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      chargebeam: ['9M', '7M', '6M'],\n      chillingwater: ['9M'],\n      clearsmog: ['9L28', '8L28', '7L22', '6L22'],\n      confide: ['7M', '6M'],\n      corrosivegas: ['8T'],\n      crosspoison: ['8M', '7L51', '6L51'],\n      cut: ['6M'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      discharge: ['9L40', '8L40', '7L47', '6L47'],\n      doubleteam: ['7M', '6M'],\n      eerieimpulse: ['9M', '8M', '7L65', '6L65'],\n      electricterrain: ['9M', '9L1', '8M', '8L1', '7L1'],\n      electrify: ['9L46', '8L46'],\n      electroball: ['9M', '8M'],\n      electroweb: ['9M', '8M', '7T'],\n      encore: ['9M', '9L12', '8M', '8L12', '7L16', '6L16'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flashcannon: ['9M', '8M', '7M', '6M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      haze: ['9M'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      iondeluge: ['7L26', '6L26'],\n      irontail: ['8M', '7T'],\n      liquidation: ['9M', '8M'],\n      magnetrise: ['9L1', '8L1', '7T'],\n      paraboliccharge: ['9L24', '8L24', '7L38', '6L38'],\n      poisonjab: ['9M', '8M', '7M'],\n      poisonsting: ['9L1', '8L1', '7L1', '6L1'],\n      poisontail: ['9M', '9L20', '8L20', '7L29', '6L29'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psybeam: ['9M', '9L34', '8L34'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      psyshock: ['9M', '8M', '7M', '6M'],\n      psywave: ['7L42', '6L42'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M', '6M'],\n      signalbeam: ['6T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['9M', '8M', '7M', '6M'],\n      sludgewave: ['9L52', '8M', '8L52', '7M', '6M'],\n      snore: ['8M', '7T'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      supercellslam: ['9M'],\n      supersonic: ['9L1', '8L1', '7L1', '6L1'],\n      surf: ['9M'],\n      swagger: ['9L58', '8L58', '7M', '7L56', '6M', '6L56'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      terablast: ['9M'],\n      thunder: ['9M', '9L64', '8M', '8L64', '7M', '7L60', '6M', '6L60'],\n      thunderbolt: ['9M', '8M', '7M', '6M'],\n      thundershock: ['9L1', '8L1', '7L1', '6L1'],\n      thunderwave: ['9M', '9L16', '8M', '8L16', '7M', '7L19', '6M', '6L19'],\n      toxic: ['9M', '7M', '6M'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M', '6M'],\n      waterpulse: ['9M', '6T'],\n      wildcharge: ['9M', '8M', '7M', '6M'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'floatoy',\n    {\n      attract: ['8M', '6M'],\n      bite: ['9E', '8E', '7E', '6E'],\n      blizzard: ['9M', '8M', '6M'],\n      bodyslam: ['9M', '8M'],\n      brine: ['9L24', '8M', '8L24', '6L38'],\n      brutalswing: ['8M'],\n      bubblebeam: ['9L22', '8L22', '6L23'],\n      calmmind: ['9M', '8M', '6M'],\n      chillingwater: ['9M'],\n      confide: ['6M'],\n      crunch: ['9M', '8M'],\n      dive: ['8M', '6M'],\n      doubleteam: ['6M'],\n      dragonbreath: ['9L18', '8L18', '6L1'],\n      dragonclaw: ['9M', '8M', '6M'],\n      dragondance: ['9M', '8M', '7E', '6E'],\n      dragonpulse: ['9M', '8M', '6T'],\n      drillpeck: ['9L30', '8L30', '6L27'],\n      echoedvoice: ['6M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '6M'],\n      featherdance: ['9E', '8E', '7E', '6E'],\n      feint: ['9E', '8E', '7E', '6E'],\n      focusenergy: ['8M'],\n      frustration: ['6M'],\n      gust: ['9L6', '8L6', '6L1'],\n      hail: ['8M', '6M'],\n      haze: ['9M', '9E', '8E', '7E', '6E'],\n      hiddenpower: ['6M'],\n      hurricane: ['9M', '8M'],\n      hydropump: ['9M', '9L39', '8M', '8L39', '6L50'],\n      icebeam: ['9M', '8M', '6M'],\n      icefang: ['9M', '8M', '7E', '6E'],\n      icepunch: ['9M', '8M', '6T'],\n      iciclecrash: ['9L36', '8L36', '6L42'],\n      iciclespear: ['9E', '8M', '7E', '6E'],\n      icywind: ['9M', '8M', '6T'],\n      ironhead: ['9M', '9L33', '8M', '8L33', '6T', '6L53'],\n      irontail: ['8M', '7E', '6T', '6E'],\n      metalclaw: ['9M', '9L9', '8L9', '6L11'],\n      metronome: ['9M', '8M', '7E', '6E'],\n      muddywater: ['9E', '8M', '7E', '6E'],\n      peck: ['9L1', '8L1', '6L1'],\n      protect: ['9M', '9L42', '8M', '8L42', '6M'],\n      psychicfangs: ['9M', '8M', '7E'],\n      raindance: ['9M', '8M', '6M'],\n      refresh: ['7E', '6E'],\n      rest: ['9M', '8M', '6M'],\n      return: ['6M'],\n      rocksmash: ['6M'],\n      round: ['8M', '6M'],\n      scald: ['9M', '8M', '7M', '6M'],\n      scaryface: ['9M', '9L15', '8M', '8L15', '6L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      slackoff: ['9L27', '8L27', '6L39'],\n      sleeptalk: ['9M', '8M', '6M'],\n      snore: ['8M', '6T'],\n      snowscape: ['9M'],\n      splash: ['9L1', '8L1', '6L1'],\n      substitute: ['9M', '8M', '6M'],\n      surf: ['9M', '8M', '6M'],\n      swagger: ['6M'],\n      taunt: ['9M', '8M', '6M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M', '7E', '6E'],\n      toxic: ['6M'],\n      waterfall: ['9M', '8M', '6M'],\n      watergun: ['9L3', '8L3', '6L7'],\n      waterpulse: ['9M', '9L12', '8L12', '7E', '6T', '6E'],\n      whirlpool: ['8M', '7E', '6E']\n    }\n  ],\n  [\n    'caimanoe',\n    {\n      attract: ['8M', '6M'],\n      blizzard: ['9M', '8M', '6M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brine: ['9L28', '8M', '8L28', '6L43'],\n      brutalswing: ['8M'],\n      bubblebeam: ['9L24', '8L24', '6L25'],\n      calmmind: ['9M', '8M', '6M'],\n      chillingwater: ['9M'],\n      confide: ['6M'],\n      crunch: ['9M', '8M'],\n      dive: ['8M', '6M'],\n      doubleteam: ['6M'],\n      dragonbreath: ['9L18', '8L18', '6L1'],\n      dragonclaw: ['9M', '8M', '6M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '6T'],\n      drillpeck: ['9L38', '8L38', '6L31'],\n      echoedvoice: ['6M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '6M'],\n      flashcannon: ['9M', '8M', '6M', '6L35'],\n      focusenergy: ['8M'],\n      frustration: ['6M'],\n      gust: ['9L1', '8L1', '6L1'],\n      hail: ['8M', '6M'],\n      haze: ['9M'],\n      heavyslam: ['9M', '8M'],\n      hiddenpower: ['6M'],\n      hurricane: ['9M', '8M'],\n      hydropump: ['9M', '9L53', '8M', '8L53', '6L60'],\n      icebeam: ['9M', '8M', '6M'],\n      icefang: ['9M', '8M'],\n      icepunch: ['9M', '8M', '6T'],\n      iciclecrash: ['9L48', '8L48', '6L47'],\n      iciclespear: ['8M'],\n      icywind: ['9M', '8M', '6T'],\n      irondefense: ['9M', '8M', '6T'],\n      ironhead: ['9M', '9L43', '8M', '8L43', '6T', '6L58'],\n      irontail: ['8M', '6T'],\n      metalclaw: ['9M', '9L9', '8L9', '6L11'],\n      metalsound: ['9L0', '8L0', '6L21'],\n      metronome: ['9M', '8M'],\n      muddywater: ['8M'],\n      peck: ['9L1', '8L1', '6L1'],\n      protect: ['9M', '9L58', '8M', '8L58', '6M'],\n      psychicfangs: ['9M', '8M'],\n      raindance: ['9M', '8M', '6M'],\n      rest: ['9M', '8M', '6M'],\n      retaliate: ['8M', '6M'],\n      return: ['6M'],\n      rocksmash: ['6M'],\n      round: ['8M', '6M'],\n      scald: ['9M', '8M', '7M', '6M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L15', '8M', '8L15', '6L1'],\n      screech: ['8M'],\n      secretpower: ['6M'],\n      selfdestruct: ['8M', '6L62'],\n      slackoff: ['9L33', '8L33', '6L39'],\n      sleeptalk: ['9M', '8M', '6M'],\n      snore: ['8M', '6T'],\n      snowscape: ['9M'],\n      splash: ['9L1', '8L1', '6L1'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      strength: ['6M'],\n      substitute: ['9M', '8M', '6M'],\n      surf: ['9M', '8M', '6M'],\n      swagger: ['6M'],\n      taunt: ['9M', '8M', '6M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M'],\n      thunderpunch: ['9M', '8M', '6T'],\n      toxic: ['6M'],\n      waterfall: ['9M', '8M', '6M'],\n      watergun: ['9L1', '8L1', '6L7'],\n      waterpulse: ['9M', '9L12', '8L12', '6T'],\n      whirlpool: ['8M']\n    }\n  ],\n  [\n    'naviathan',\n    {\n      attract: ['8M', '7M', '6M'],\n      blizzard: ['9M', '8M', '7M', '6M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      brine: ['9L28', '8M', '8L28', '7L45', '6L45'],\n      brutalswing: ['8M', '7M'],\n      bubblebeam: ['9L24', '8L24', '7L25', '6L25'],\n      calmmind: ['9M', '8M', '7M', '6M'],\n      chillingwater: ['9M'],\n      confide: ['7M', '6M'],\n      crunch: ['9M', '8M'],\n      dive: ['8M', '7M', '6M'],\n      doubleteam: ['7M', '6M'],\n      dragonbreath: ['9L18', '8L18', '7L1', '6L1'],\n      dragonclaw: ['9M', '8M', '7M', '6M'],\n      dragondance: ['9M', '8M'],\n      dragonpulse: ['9M', '8M', '6T'],\n      drillpeck: ['9L38', '8L38', '7L31', '6L31'],\n      echoedvoice: ['7M', '6M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      flashcannon: ['9M', '8M', '7M', '7L35', '6M', '6L35'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      gust: ['9L1', '8L1', '7L1', '6L1'],\n      hail: ['8M', '7M', '6M'],\n      hardpress: ['9M'],\n      haze: ['9M'],\n      heavyslam: ['9M', '9L66', '8M', '8L66', '7L1'],\n      hiddenpower: ['7M', '6M'],\n      hurricane: ['9M', '8M', '7L64', '6L64'],\n      hydropump: ['9L59', '8M', '8L59', '7L60', '6L60'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      icebeam: ['9M', '8M', '7M', '6M'],\n      icefang: ['9M', '8M'],\n      icepunch: ['9M', '8M', '6T'],\n      iciclecrash: ['9L52', '8L52', '7L52', '6L51'],\n      iciclespear: ['8M'],\n      icywind: ['9M', '8M', '6T'],\n      irondefense: ['9M', '8M', '6T'],\n      ironhead: ['9M', '9L45', '8M', '8L45', '7L65', '6T', '6L65'],\n      irontail: ['8M', '6T'],\n      metalclaw: ['9M', '9L9', '8L9', '7L11', '6L11'],\n      metalsound: ['9L1', '8L1', '7L21', '6L21'],\n      metronome: ['9M', '8M'],\n      muddywater: ['8M'],\n      peck: ['9L1', '8L1', '7L1', '6L1'],\n      protect: ['9M', '9L1', '8M', '8L1', '7M', '6M'],\n      psychicfangs: ['9M', '8M'],\n      raindance: ['9M', '8M', '7M', '6M'],\n      rest: ['9M', '8M', '7M', '6M'],\n      retaliate: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rocksmash: ['7M', '6M'],\n      round: ['8M', '7M', '6M'],\n      scald: ['9M', '8M', '7M', '6M'],\n      scaleshot: ['9M', '8T'],\n      scaryface: ['9M', '9L15', '8M', '8L15', '7L1', '6L1'],\n      screech: ['8M'],\n      secretpower: ['7M'],\n      selfdestruct: ['8M', '7L74', '6L74'],\n      slackoff: ['9L33', '8L33', '7L39', '6L39'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      snore: ['8M', '6T'],\n      snowscape: ['9M'],\n      splash: ['9L1', '8L1', '7L1', '6L1'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      strength: ['6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      surf: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M'],\n      thunderpunch: ['9M', '8M', '6T'],\n      toxic: ['7M', '6M'],\n      waterfall: ['9M', '8M', '7M', '6M'],\n      watergun: ['9L1', '8L1', '7L7', '6L7'],\n      waterpulse: ['9M', '9L12', '8L12', '6T'],\n      wavecrash: ['9L73'],\n      whirlpool: ['9L1', '8M', '8L1'],\n      wideguard: ['9L1', '8L1', '7L54', '6L54'],\n      wildcharge: ['9M', '8M', '7M', '6M']\n    }\n  ],\n  [\n    'crucibelle',\n    {\n      acidarmor: ['9L40', '8L40', '7L32', '6L32'],\n      acidspray: ['9M'],\n      assurance: ['8M'],\n      astonish: ['9L1', '8L1', '7L1', '6L1'],\n      attract: ['8M', '7M', '6M'],\n      block: ['9E', '8E', '6T'],\n      coil: ['9L1', '8L1', '7E', '6E'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L8', '8L8', '7L16', '6L16'],\n      confusion: ['9L16', '8L16', '7L14', '6L14'],\n      crosspoison: ['8M'],\n      defensecurl: ['9E', '8E', '7E', '6E'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9M', '8M'],\n      embargo: ['7M', '6M'],\n      endure: ['9M', '9L1', '8M', '8L1', '7L1', '6L1'],\n      explosion: ['9L68', '8L68', '7M', '7L60', '6M', '6L60'],\n      facade: ['9M', '8M', '7M', '6M'],\n      faketears: ['9M', '9L28', '8M', '8L28', '7L10', '6L10'],\n      frustration: ['7M', '6M'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      grassknot: ['9M', '8M', '7M', '6M'],\n      gravity: ['9M', '7T', '6T'],\n      gunkshot: ['9M', '9L64', '8M', '8L64', '7L56', '6T', '6L56'],\n      helpinghand: ['9M', '8M', '6T'],\n      hex: ['9M', '9L48', '8M', '8L48', '7L44', '6L44'],\n      hiddenpower: ['7M', '6M'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      infestation: ['7M', '6M'],\n      irondefense: ['9M', '8M'],\n      ironhead: ['9M', '8M', '6T'],\n      knockoff: ['9E'],\n      lightscreen: ['9M', '8M'],\n      magicroom: ['8M', '6T'],\n      meteorbeam: ['9M', '8T'],\n      metronome: ['9M', '8M'],\n      payback: ['8M', '7M', '6M'],\n      pinmissile: ['8M'],\n      poisonjab: ['9M', '8M', '7M', '6M'],\n      powergem: ['9M', '8M'],\n      protect: ['9M', '9L1', '8M', '8L1', '7M', '7L1', '6M', '6L1'],\n      psybeam: ['9M', '9L32', '8L32', '7L40', '6L40'],\n      psychic: ['9M', '8M', '7M', '6M'],\n      reflect: ['9M', '8M', '7M', '7L25', '6M', '6L25'],\n      rest: ['9M', '8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      rockblast: ['9M', '9L12', '8M', '8L12', '7L52', '6L52'],\n      rockpolish: ['9E', '8E', '7M', '6M'],\n      rockslide: ['9M', '9L52', '8M', '8L52', '7M', '7L36', '6M', '6L36'],\n      rocksmash: ['7M', '6M'],\n      rockthrow: ['9L4', '8L4', '7L5', '6L5'],\n      rocktomb: ['9M', '8M', '7M', '6M'],\n      rollout: ['9E', '8E', '7E', '6E'],\n      round: ['8M', '7M', '6M'],\n      safeguard: ['8M', '7M', '6M'],\n      sandstorm: ['9M', '8M', '7M', '6M'],\n      secretpower: ['7M'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '8M', '7M', '6M'],\n      skillswap: ['9M', '8M', '6T'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludge: ['9L44', '8L44', '7L28', '6L28'],\n      sludgebomb: ['9M', '8M', '7M', '6M'],\n      sludgewave: ['9M', '8M', '8L60', '7M', '6M'],\n      smackdown: ['9M', '9L24', '8L24', '7M', '7L23', '6M', '6L23'],\n      snatch: ['6T'],\n      snore: ['8M', '6T'],\n      stealthrock: ['9M', '8M', '6T'],\n      steelroller: ['8T'],\n      stoneedge: ['9M', '8M', '7M', '6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      swagger: ['7M', '6M'],\n      terablast: ['9M'],\n      torment: ['9L20', '8L20', '7M', '7L48', '6M', '6L48'],\n      toxic: ['9L56', '8L56', '7M', '7L7', '6M', '6L7'],\n      toxicspikes: ['9M', '9L36', '8M', '8L36', '7L19', '6L19'],\n      trick: ['9M', '8M', '6T'],\n      uturn: ['9M', '8M', '7M', '6M'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M', '6M'],\n      withdraw: ['9L1', '8L1', '7L1', '6L1'],\n      wonderroom: ['8M', '6T'],\n      woodhammer: ['9E', '8E', '7E', '6E'],\n      zenheadbutt: ['9M', '8M', '6T']\n    }\n  ],\n  [\n    'pluffle',\n    {\n      allyswitch: ['8M'],\n      attract: ['8M', '6M'],\n      beatup: ['9E', '8M', '7E', '6E'],\n      bodyslam: ['9M', '8M'],\n      charm: ['9M', '9L9', '8M', '8L9', '7E', '6E'],\n      confide: ['7T', '6L25'],\n      dazzlinggleam: ['9M', '8M', '6M'],\n      doubleteam: ['6M'],\n      drainingkiss: ['9M', '9L12', '8M', '8L12', '6L13'],\n      dreameater: ['9L36', '8L36', '6M', '6L42'],\n      encore: ['9M', '9L15', '8M', '8L15', '7E', '6L16', '6E'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '8M', '6M'],\n      facade: ['9M', '8M', '6M'],\n      fairywind: ['9L3', '8L3', '6L1'],\n      featherdance: ['9L1', '8L1', '6L1'],\n      flashcannon: ['9M', '8M', '6M'],\n      frustration: ['6M'],\n      gigadrain: ['9M', '8M', '6T'],\n      grassknot: ['9M', '8M', '6M'],\n      helpinghand: ['9M', '8M', '6T'],\n      hiddenpower: ['6M'],\n      magicroom: ['8M'],\n      metronome: ['9M', '8M'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      moonblast: ['9L30', '8L30', '6L36'],\n      nightmare: ['6L42'],\n      partingshot: ['9L21', '8L21', '6L24'],\n      playrough: ['9M', '9L24', '8M', '8L24', '6L27'],\n      protect: ['9M', '8M', '6M'],\n      psychic: ['9M'],\n      psychup: ['6M'],\n      quickguard: ['9E', '8E', '7E', '6E'],\n      rest: ['9M', '9L27', '8M', '8L27', '6M', '6L31'],\n      retaliate: ['8M', '6M'],\n      return: ['6M'],\n      round: ['8M', '6M'],\n      scaryface: ['9M', '9L18', '8M', '8L18', '6L20'],\n      scratch: ['9L1', '8L1', '6L1'],\n      sleeptalk: ['9M', '8M', '6M'],\n      sludgebomb: ['9M', '8M', '6M'],\n      sludgewave: ['8M', '6M'],\n      snarl: ['9M', '8M', '6M'],\n      snore: ['9L27', '8M', '8L27', '6T'],\n      substitute: ['9M', '8M', '6M'],\n      sunnyday: ['9M', '8M', '6M'],\n      swagger: ['7M', '6M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '6M'],\n      terablast: ['9M'],\n      torment: ['9L33', '8L33', '6M'],\n      toxic: ['6M'],\n      uproar: ['9M', '8M'],\n      vacuumwave: ['9M'],\n      wakeupslap: ['6L10'],\n      wideguard: ['9E', '8E', '7E', '6E'],\n      wish: ['9E', '8E', '7E', '6E'],\n      workup: ['8M'],\n      yawn: ['9L6', '8L6', '6L7']\n    }\n  ],\n  [\n    'kerfluffle',\n    {\n      allyswitch: ['8M'],\n      attract: ['8M', '7M', '6M'],\n      aurasphere: ['9M', '9L30', '8M', '8L30', '7L45', '6L45'],\n      beatup: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      brickbreak: ['9M', '8M', '7M', '6M'],\n      bulkup: ['9M', '8M', '7M', '6M'],\n      celebrate: ['6S0'],\n      charm: ['9M', '9L9', '8M', '8L1'],\n      closecombat: ['9M', '9L42', '8M', '8L42', '7L53', '6L53'],\n      coaching: ['9M', '8T'],\n      confide: ['7L25', '6L25'],\n      crushclaw: ['9L0', '8L0', '7M', '6M'],\n      dazzlinggleam: ['9M', '8M', '7M', '6M'],\n      doubleteam: ['7M', '6M'],\n      drainingkiss: ['9L12', '8M', '8L12', '7L17', '6L17'],\n      drainpunch: ['9M', '8M', '6T'],\n      dreameater: ['9L39', '8L39', '7M', '7L57', '6M', '6L57'],\n      encore: ['9M', '9L1', '8M', '8L1'],\n      endure: ['9M', '9L15', '8M', '8L15', '7L21', '6L21'],\n      energyball: ['9M', '8M', '7M', '6M'],\n      facade: ['9M', '8M', '7M', '6M'],\n      fairywind: ['9L1', '8L1', '7L1', '6L1'],\n      featherdance: ['9L1', '8L1', '7L1', '6L1'],\n      flashcannon: ['9M', '8M', '7M', '6M'],\n      fly: ['9M', '8M', '6S0'],\n      focusblast: ['9M', '8M', '7M'],\n      focusenergy: ['8M'],\n      frustration: ['7M', '6M'],\n      gigadrain: ['9M', '8M', '6T'],\n      gigaimpact: ['9M', '8M', '7M', '6M'],\n      grassknot: ['9M', '8M', '7M', '6M'],\n      helpinghand: ['9M', '8M', '6T'],\n      hiddenpower: ['7M', '6M'],\n      holdhands: ['6S0'],\n      hyperbeam: ['9M', '8M', '7M', '6M'],\n      lowkick: ['9M', '8M', '6T'],\n      lowsweep: ['9M', '8M'],\n      magicroom: ['8M'],\n      megakick: ['8M'],\n      megapunch: ['8M'],\n      metronome: ['9M', '8M', '6S0'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      moonblast: ['9L33', '8L33', '7L49', '6L49'],\n      nightmare: ['7L57', '6L57'],\n      partingshot: ['9L21', '8L21', '7L33', '6L33'],\n      playrough: ['9M', '9L24', '8M', '8L24', '7L37', '6L37'],\n      poweruppunch: ['8L9', '7M', '6M'],\n      protect: ['9M', '8M', '7M', '6M'],\n      psychic: ['9M'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M', '6M'],\n      rest: ['9M', '9L27', '8M', '8L27', '7M', '7L41', '6M', '6L41'],\n      retaliate: ['8M', '7M', '6M'],\n      return: ['7M', '6M'],\n      revenge: ['8M'],\n      reversal: ['9M', '8M'],\n      round: ['8M', '7M', '6M'],\n      scaryface: ['9M', '9L18', '8M', '8L18', '7L29', '6L29'],\n      scratch: ['9L1', '8L1', '7L1', '6L1'],\n      secretpower: ['7M'],\n      sleeptalk: ['9M', '8M', '7M', '6M'],\n      sludgebomb: ['9M', '8M', '7M', '6M'],\n      sludgewave: ['9M', '8M', '7M', '6M'],\n      snarl: ['9M', '8M', '7M', '6M'],\n      snore: ['9L27', '8M', '8L27', '6T'],\n      speedswap: ['8M'],\n      strength: ['7M', '6M'],\n      substitute: ['9M', '8M', '7M', '6M'],\n      sunnyday: ['9M', '8M', '7M', '6M'],\n      superpower: ['8M'],\n      swagger: ['9L1', '8L1', '7M', '7L1', '6M', '6L1'],\n      swift: ['9M', '8M'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M', '7M', '6M'],\n      terablast: ['9M'],\n      torment: ['9L36', '8L36', '7M', '6M'],\n      toxic: ['7M', '6M'],\n      upperhand: ['9M'],\n      uproar: ['9M', '8M'],\n      vacuumwave: ['9M'],\n      wakeupslap: ['7L13', '6L13'],\n      workup: ['8M', '7M'],\n      yawn: ['9L1', '8L1', '7L9', '6L9']\n    }\n  ],\n  [\n    'pajantom',\n    {\n      aerialace: ['9M', '7M'],\n      astonish: ['9L10', '8L10', '7L1'],\n      attract: ['8M', '7M'],\n      bind: ['9L5', '8L5', '7T'],\n      block: ['7T'],\n      bravebird: ['9M', '9L1', '8M', '8L1', '7L1'],\n      breakingswipe: ['9L30', '8M'],\n      brutalswing: ['8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      confide: ['7M'],\n      confuseray: ['9M'],\n      crunch: ['9M', '8M'],\n      doubleteam: ['9L25', '8L25', '7M'],\n      dracometeor: ['9M', '8T', '7T'],\n      dragonbreath: ['9L20', '8L20', '7L19'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '9L35', '8M', '8L35', '7M', '7L23'],\n      dragonpulse: ['9M', '8M', '7T'],\n      dragonrage: ['7L12'],\n      dragonrush: ['9E', '8E', '7L34'],\n      dreameater: ['9E', '7M'],\n      drillrun: ['9M', '8M', '7T'],\n      dualchop: ['8L30', '7T'],\n      earthquake: ['9M', '8M', '7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      fairylock: ['9L1', '8L1', '7L1'],\n      fly: ['9M', '8M', '7M'],\n      focusenergy: ['9L15', '8M', '7E'],\n      frustration: ['7M'],\n      gastroacid: ['7T'],\n      gigaimpact: ['9M', '8M', '7M'],\n      gravity: ['9M', '7T'],\n      growl: ['9L1', '8L1', '7L1'],\n      haze: ['9M', '9L40', '8L40', '7L37'],\n      healblock: ['7L30'],\n      helpinghand: ['9M', '8M', '7T'],\n      hex: ['9M', '8M'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      icefang: ['9M', '8M', '7E'],\n      icepunch: ['9M', '8M', '7T'],\n      icywind: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      infestation: ['9E', '8E', '7M'],\n      irontail: ['8M', '7T', '7E'],\n      laserfocus: ['8L15', '7T', '7L10'],\n      leechlife: ['9M', '8M', '7M'],\n      nastyplot: ['9M', '8M'],\n      outrage: ['9M', '9L60', '8M', '8L60', '7T', '7L53'],\n      phantomforce: ['9M', '9L55', '8M', '8L55', '7L45'],\n      poisonfang: ['9E', '8E', '7E'],\n      poisongas: ['9L1', '8L1', '7L17'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      psychicfangs: ['9M', '9L50', '8M', '8L50', '7L32'],\n      psychicnoise: ['9M'],\n      psychup: ['9M', '7M'],\n      raindance: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      sandtomb: ['9M', '9E', '8M', '7E'],\n      shadowball: ['9M', '8M', '7M'],\n      shadowclaw: ['9M', '8M', '7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['9L1', '8M', '8L1', '7T', '7L1'],\n      spiritshackle: ['9L45', '8L45', '7L1'],\n      spite: ['9M', '7T', '7E'],\n      stoneedge: ['9M', '8M', '7M'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      telekinesis: ['7T'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['9M', '8M', '7T'],\n      toxic: ['9M', '7M'],\n      toxicspikes: ['9M', '8M', '7L28'],\n      trickroom: ['9M', '8M', '7M'],\n      venoshock: ['9M', '8M', '7M'],\n      whirlpool: ['9M', '8M', '7E'],\n      wrap: ['9L1', '8L1', '7L1'],\n      zenheadbutt: ['9M', '8M', '7T']\n    }\n  ],\n  [\n    'mumbao',\n    {\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '9L45', '8M', '8L45', '7L28'],\n      bulletseed: ['9M', '8M'],\n      confide: ['7M'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L55', '8M', '8L55', '7M', '7L37'],\n      explosion: ['9E', '8E'],\n      facade: ['9M', '8M', '7M'],\n      flowershield: ['8L1', '7L1'],\n      focusblast: ['9M', '8M', '7M'],\n      focusenergy: ['9L20', '8M', '8L20'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '9L40', '8M', '8L40', '7T'],\n      grassknot: ['9M', '8M', '7M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M', '7E'],\n      gravity: ['9M', '7T'],\n      gyroball: ['9M', '8M', '7M'],\n      harden: ['9L1'],\n      healingwish: ['9E', '8E', '7E'],\n      heavyslam: ['9M', '8M'],\n      helpinghand: ['9M', '9L15', '8M', '8L15', '7T', '7L35'],\n      hiddenpower: ['7M'],\n      ingrain: ['9L10', '8L10', '7L10'],\n      leafage: ['9L5', '8L5', '7L13'],\n      leafstorm: ['9M', '9L65', '8M', '8L65', '7L46'],\n      lightscreen: ['9M', '8M', '7M'],\n      luckychant: ['7L17'],\n      magicalleaf: ['9M', '9L25', '8M', '8L25', '7L19'],\n      magiccoat: ['7T'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M', '7E'],\n      moonblast: ['9L60', '8L60', '7L44'],\n      naturalgift: ['7L31'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M'],\n      psychup: ['9L35', '8L35', '7M', '7L26'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      rototiller: ['7L8'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '8M', '7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smellingsalts: ['7E'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '9L50', '8M', '8L50', '7M', '7L40'],\n      superpower: ['9E', '8M', '7T', '7E'],\n      swagger: ['7M'],\n      synthesis: ['9L50', '8L50', '7T'],\n      tackle: ['9L1', '8L1', '7L4'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      wish: ['9L30', '8L30', '7L22'],\n      woodhammer: ['9E', '8E', '7E'],\n      worryseed: ['9E', '8E', '7T']\n    }\n  ],\n  [\n    'jumbao',\n    {\n      armthrust: ['9L20', '8L20'],\n      attract: ['8M', '7M'],\n      block: ['7T'],\n      bodyslam: ['9M', '9L45', '8M', '8L45', '7L28'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M', '8M', '7M'],\n      bulletseed: ['9M', '8M', '7L38'],\n      confide: ['7M'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      detect: ['9L15', '8L15', '7L1'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L55', '8M', '8L55', '7M', '7L45'],\n      explosion: ['7M'],\n      facade: ['9M', '8M', '7M'],\n      fakeout: ['9L1', '8L1', '7L1'],\n      flameburst: ['7L35'],\n      flowershield: ['8L1', '7L1'],\n      focusblast: ['9M', '8M', '7M'],\n      focusenergy: ['9L1', '8M', '8L1'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '9L40', '8M', '8L40', '7T'],\n      gigaimpact: ['9M', '8M', '7M'],\n      grassknot: ['9M', '8M', '7M'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      gravity: ['9M', '7T'],\n      gyroball: ['9M', '8M', '7M'],\n      harden: ['9L1'],\n      heavyslam: ['9M', '9L60', '8M', '8L60', '7L42'],\n      helpinghand: ['9M', '9L1', '8M', '8L1', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      ingrain: ['9L1', '8L1', '7L14'],\n      leafage: ['9L1', '8L1', '7L1'],\n      leafstorm: ['9M', '9L70', '8M', '8L70', '7L52'],\n      lifedew: ['9L1', '8L1'],\n      lightscreen: ['9M', '8M', '7M'],\n      luckychant: ['7L1'],\n      magicalleaf: ['9M', '9L25', '8M', '8L25', '7L17'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      metronome: ['9M', '8M'],\n      mistyexplosion: ['9M', '8T'],\n      mistyterrain: ['9M', '8M'],\n      moonblast: ['9L65', '8L65', '7L49'],\n      naturalgift: ['7L31'],\n      playrough: ['9M', '8M'],\n      protect: ['9M', '8M', '7M'],\n      psychup: ['9L35', '8L35', '7M', '7L24'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      rototiller: ['7L10'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M'],\n      seedbomb: ['9M', '8M', '7T'],\n      selfdestruct: ['8M'],\n      shadowball: ['9M', '8M', '7M'],\n      shoreup: ['9L1', '8L1', '7L1'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      solarblade: ['9M', '8M'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '9L50', '8M', '8L50', '7M', '7L35'],\n      superpower: ['8M', '7T'],\n      swagger: ['7M'],\n      synthesis: ['9L50', '8L50', '7T'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      wish: ['9L30', '8L30', '7L21'],\n      wonderroom: ['8M', '7T'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'fawnifer',\n    {\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '9L30', '8M', '8L30', '7L30'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulletseed: ['9M', '8M'],\n      chargebeam: ['9M', '9L18', '8L18'],\n      charm: ['9M', '8M'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L15', '8L15', '7L18'],\n      doubleedge: ['9E', '8E', '7E'],\n      doublekick: ['9E', '8E', '7E'],\n      doubleteam: ['7M'],\n      echoedvoice: ['7M'],\n      endeavor: ['9E', '8E', '7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L39', '8M', '8L39', '7M'],\n      facade: ['9M', '8M', '7M'],\n      flash: ['7L42'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      grassknot: ['9M', '8M', '7M'],\n      grasspledge: ['9M', '8T', '7T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hypervoice: ['9M', '8M', '7T'],\n      knockoff: ['9M', '7T'],\n      leafage: ['9L3', '8L3', '7L1'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L21', '8L21', '7L26'],\n      leer: ['9L1', '8L1', '7L4'],\n      naturalgift: ['7E'],\n      naturepower: ['7M'],\n      powerwhip: ['9E', '8M', '7E'],\n      present: ['9E', '8E', '7E'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L9', '8L9', '7L11'],\n      rapidspin: ['9E', '8E', '7E'],\n      razorleaf: ['9L12', '8L12', '7L14'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      seedbomb: ['9M', '9L27', '8M', '8L27', '7T', '7L34'],\n      signalbeam: ['7L46'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      spark: ['9L24', '8L24', '7L22'],\n      spotlight: ['7E'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M'],\n      synthesis: ['9L33', '8L33', '7T'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      thundershock: ['9L6', '8L6', '7L7'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '9E', '8M', '7T', '7E'],\n      voltswitch: ['9M', '8M', '7M'],\n      wildcharge: ['9M', '9L36', '8M', '8L36', '7T', '7L38'],\n      workup: ['8M', '7M'],\n      worryseed: ['7T']\n    }\n  ],\n  [\n    'electrelk',\n    {\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '9L40', '8M', '8L40', '7L30'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulletseed: ['9M', '8M'],\n      chargebeam: ['9M', '9L20', '8L20', '7M'],\n      charm: ['9M', '8M'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L15', '8L15', '7L18'],\n      doubleteam: ['7M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M', '8M'],\n      electroweb: ['8M', '7T'],\n      endeavor: ['7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L1', '8M', '8L1', '7M'],\n      facade: ['9M', '8M', '7M'],\n      flash: ['7L45'],\n      flashcannon: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      grassknot: ['9M', '8M', '7M'],\n      grasspledge: ['9M', '8T', '7T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '8M', '7T'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hypervoice: ['9M', '8M', '7T'],\n      knockoff: ['9M', '7T'],\n      leafage: ['9L1', '8L1', '7L1'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L25', '8L25', '7L26'],\n      leer: ['9L1', '8L1', '7L4'],\n      magnetrise: ['9L55', '8L55', '7L58'],\n      naturepower: ['7M'],\n      powerwhip: ['8M'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L9', '8L9', '7L11'],\n      razorleaf: ['9L12', '8L12', '7L14'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      seedbomb: ['9M', '9L35', '8M', '8L35', '7T', '7L35'],\n      shockwave: ['7T'],\n      signalbeam: ['7T', '7L49'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      solarblade: ['9M', '8M'],\n      spark: ['9L30', '8L30', '7L22'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M'],\n      synthesis: ['9L45', '8L45', '7T'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      throatchop: ['8M'],\n      thunder: ['9M', '8M', '7M'],\n      thunderbolt: ['9M', '8M', '7M'],\n      thundershock: ['9L1', '8L1', '7L7'],\n      thunderwave: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M', '7T'],\n      voltswitch: ['9M', '8M', '7M'],\n      wildcharge: ['9M', '9L50', '8M', '8L50', '7T', '7L40'],\n      workup: ['8M', '7M'],\n      worryseed: ['7T'],\n      zapcannon: ['9L60', '8L60', '7L53']\n    }\n  ],\n  [\n    'caribolt',\n    {\n      attract: ['8M', '7M'],\n      bodyslam: ['9M', '9L44', '8M', '8L44', '7L32'],\n      boomburst: ['9L1', '8L1', '7L1'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulletseed: ['9M', '8M', '7L1'],\n      celebrate: ['7S0'],\n      chargebeam: ['9M', '9L20', '8L20', '7M'],\n      charm: ['9M', '8M'],\n      confide: ['7M'],\n      confuseray: ['9M', '9L15', '8L15', '7L19'],\n      doubleteam: ['7M'],\n      echoedvoice: ['7M'],\n      eerieimpulse: ['9M', '8M'],\n      electricterrain: ['9M', '9L1', '8M', '8L1', '7L1'],\n      electroweb: ['9M', '8M', '7T'],\n      endeavor: ['7T'],\n      endure: ['9M', '8M'],\n      energyball: ['9M', '9L1', '8M', '8L1', '7M'],\n      facade: ['9M', '8M', '7M'],\n      flash: ['7L47'],\n      flashcannon: ['9M', '8M', '7M'],\n      frenzyplant: ['9M', '8T', '7T'],\n      frustration: ['7M'],\n      gigadrain: ['9M', '8M', '7T'],\n      gigaimpact: ['9M', '8M', '7M'],\n      grassknot: ['9M', '8M', '7M'],\n      grasspledge: ['9M', '8T', '7T'],\n      grassyglide: ['9M', '8T'],\n      grassyterrain: ['9M', '9L1', '8M', '8L1', '7L1'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hornleech: ['9L0', '8L0', '7L1', '7S0'],\n      hyperbeam: ['9M', '8M', '7M'],\n      hyperdrill: ['9L1'],\n      hypervoice: ['9M', '8M', '7T'],\n      knockoff: ['9M', '7T'],\n      leafage: ['9L1', '8L1', '7L1'],\n      leafstorm: ['9M', '8M'],\n      leechseed: ['9L25', '8L25', '7L28'],\n      leer: ['9L1', '8L1', '7L1'],\n      magnetrise: ['9L65', '8L65', '7T', '7L62'],\n      metronome: ['9M', '8M', '7S0'],\n      naturepower: ['7M'],\n      powerwhip: ['8M'],\n      protect: ['9M', '8M', '7M'],\n      quickattack: ['9L9', '8L9', '7L12'],\n      razorleaf: ['9L12', '8L12', '7L15'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      risingvoltage: ['8T'],\n      round: ['8M', '7M'],\n      seedbomb: ['9M', '9L37', '8M', '8L37', '7T', '7L37'],\n      shockwave: ['7T'],\n      signalbeam: ['7T', '7L52'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      solarblade: ['9M', '8M'],\n      spark: ['9L30', '8L30', '7L24'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      supercellslam: ['9M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '8M', '7M'],\n      synthesis: ['9L51', '8L51', '7T'],\n      tackle: ['9L1', '8L1', '7L1'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      terrainpulse: ['8T'],\n      throatchop: ['9M', '8M'],\n      thunder: ['9M', '8M', '7M'],\n      thunderbolt: ['9M', '8M', '7M'],\n      thundershock: ['9L1', '8L1', '7L1'],\n      thunderwave: ['9M', '8M', '7M'],\n      toxic: ['7M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M', '7T'],\n      voltswitch: ['9M', '8M', '7M'],\n      wildcharge: ['9M', '9L58', '8M', '8L58', '7T', '7L42', '7S0'],\n      workup: ['8M', '7M'],\n      worryseed: ['7T'],\n      zapcannon: ['9L72', '8L72', '7L57']\n    }\n  ],\n  [\n    'smogecko',\n    {\n      acidspray: ['9M', '9E', '8E', '7E'],\n      aerialace: ['9M'],\n      attract: ['8M', '7M'],\n      bonerush: ['9E', '8E', '7E'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M', '9L24', '8M', '8L24', '7M', '7L19'],\n      bulletpunch: ['9E', '8E', '7E'],\n      camouflage: ['7L30'],\n      confide: ['7M'],\n      defog: ['9E', '8E', '7T'],\n      dig: ['9M', '9L33', '8M', '8L33', '7L47'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '8M', '7T'],\n      ember: ['9L3', '8L3', '7L1'],\n      endeavor: ['9E', '8E', '7T'],\n      facade: ['9M', '8M', '7M'],\n      fireblast: ['9M', '8M', '7M'],\n      firefang: ['9M', '8M'],\n      firepledge: ['9M', '8T', '7T'],\n      firepunch: ['9M', '8M'],\n      firespin: ['9M', '8M', '7E'],\n      flameburst: ['7L22'],\n      flamecharge: ['9M', '9E'],\n      flamethrower: ['9M', '8M', '7M', '7L40'],\n      flamewheel: ['9L21', '8L21', '7L15'],\n      flareblitz: ['9L39', '8L39'],\n      forcepalm: ['9E', '8E', '7E'],\n      frustration: ['7M'],\n      gunkshot: ['9M', '8M', '7T'],\n      heatwave: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      incinerate: ['9L16', '8L16', '7L34'],\n      irontail: ['8M', '7T'],\n      lavaplume: ['9L27', '8L27', '7L26'],\n      lick: ['9L9', '8L9', '7L7'],\n      lowkick: ['9M', '8M', '7T'],\n      mudshot: ['9M', '9L18', '8M', '8L18', '7L13'],\n      overheat: ['9M', '8M', '7M'],\n      poisonfang: ['9E', '8E', '7E'],\n      poisonjab: ['9M', '8M', '7M'],\n      protect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      round: ['8M', '7M'],\n      sandtomb: ['9M', '8M', '7E'],\n      scaleshot: ['9M', '8T'],\n      scorchingsands: ['8T'],\n      scratch: ['9L1', '8L1', '7L1'],\n      screech: ['9L30', '8M', '8L30', '7L44'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '7M'],\n      smog: ['9L12', '8L12', '7L10'],\n      smokescreen: ['9L6', '8L6', '7L4'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      stealthrock: ['9M', '8M', '7T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      tailwhip: ['9L1', '8L1', '7L4'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L36', '8L36', '7M'],\n      trailblaze: ['9M'],\n      venomdrench: ['8M'],\n      willowisp: ['9M', '8M', '7M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'smoguana',\n    {\n      acidspray: ['9M'],\n      aerialace: ['9M'],\n      attract: ['8M', '7M'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M', '9L35', '8M', '8L35', '7M', '7L19'],\n      burningjealousy: ['9M', '8T'],\n      camouflage: ['7L35'],\n      clearsmog: ['9L20', '8L20', '7L26'],\n      confide: ['7M'],\n      corrosivegas: ['8T'],\n      crosspoison: ['8M'],\n      defog: ['7T'],\n      dig: ['9M', '9L1', '8M', '8L1'],\n      doubleteam: ['7M'],\n      earthpower: ['9M', '8M', '7T'],\n      earthquake: ['9M', '9L50', '8M', '8L50', '7M', '7L50'],\n      ember: ['9L1', '8L1', '7L1'],\n      endeavor: ['7T'],\n      facade: ['9M', '8M', '7M'],\n      fireblast: ['9M', '8M', '7M'],\n      firefang: ['9M', '8M'],\n      firepledge: ['9M', '8T', '7T'],\n      firepunch: ['9M', '8M', '7T'],\n      flameburst: ['7L22'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '8M', '7M', '7L42'],\n      flamewheel: ['9L30', '8L30', '7L15'],\n      flareblitz: ['9M', '9L60', '8M', '8L60', '7L55'],\n      frustration: ['7M'],\n      gunkshot: ['9M', '8M', '7T'],\n      heatwave: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      incinerate: ['9L15', '8L15'],\n      irontail: ['8M', '7T'],\n      lavaplume: ['9L40', '8L40', '7L31'],\n      lick: ['9L9', '8L9', '7L7'],\n      lowkick: ['9M', '8M', '7T'],\n      mudshot: ['9M', '9L25', '8M', '8L25', '7L13'],\n      overheat: ['9M', '8M', '7M'],\n      poisonjab: ['9M', '8M', '7M'],\n      protect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      round: ['8M', '7M'],\n      sandtomb: ['9M', '8M'],\n      scaleshot: ['9M', '8T'],\n      scorchingsands: ['8T'],\n      scratch: ['9L1', '8L1', '7L1'],\n      screech: ['9L45', '8M', '8L45', '7L46'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '7M'],\n      smog: ['9L12', '8L12', '7L10'],\n      smokescreen: ['9L1', '8L1', '7L4'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      stealthrock: ['9M', '8M', '7T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      superpower: ['8M', '7T'],\n      swagger: ['7M'],\n      tailwhip: ['9L1', '8L1', '7L1'],\n      taunt: ['9M', '8M', '7M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L55', '8L55', '7M'],\n      trailblaze: ['9M'],\n      venomdrench: ['8M'],\n      willowisp: ['9M', '8M', '7M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'smokomodo',\n    {\n      acidspray: ['9M'],\n      aerialace: ['9M'],\n      attract: ['8M', '7M'],\n      blastburn: ['9M', '8T', '7T'],\n      brickbreak: ['9M', '8M', '7M'],\n      bulkup: ['9M', '8M', '7M'],\n      bulldoze: ['9M', '9L35', '8M', '8L35', '7M', '7L20'],\n      burningjealousy: ['9M', '8T'],\n      camouflage: ['7L38', '7S0'],\n      celebrate: ['7S0'],\n      circlethrow: ['9L1', '8L1', '7L1'],\n      clearsmog: ['9L20', '8L20', '7L29'],\n      confide: ['7M'],\n      corrosivegas: ['8T'],\n      crosspoison: ['8M'],\n      defog: ['7T'],\n      dig: ['9M', '9L1', '8M', '8L1'],\n      doubleteam: ['7M'],\n      dragoncheer: ['9M'],\n      earthpower: ['9M', '8M', '7T'],\n      earthquake: ['9M', '9L56', '8M', '8L56', '7M', '7L54'],\n      ember: ['9L1', '8L1', '7L1'],\n      endeavor: ['7T'],\n      eruption: ['9L0', '8L0', '7L1', '7S0'],\n      facade: ['9M', '8M', '7M'],\n      fireblast: ['9M', '8M', '7M'],\n      firefang: ['9M', '8M'],\n      firepledge: ['9M', '8T', '7T'],\n      firepunch: ['9M', '8M', '7T'],\n      firespin: ['9M', '8M'],\n      fissure: ['9L1', '8L1', '7L65'],\n      flameburst: ['7L24'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '8M', '7M', '7L43'],\n      flamewheel: ['9L30', '8L30', '7L17'],\n      flareblitz: ['9M', '9L70', '8M', '8L70', '7L60'],\n      focusblast: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      gunkshot: ['9M', '8M', '7T'],\n      heatcrash: ['9M', '8M'],\n      heatwave: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      incinerate: ['9L15', '8L15'],\n      irontail: ['8M', '7T'],\n      lavaplume: ['9L42', '8L42', '7L33'],\n      lick: ['9L9', '8L9', '7L7'],\n      lowkick: ['9M', '8M', '7T'],\n      machpunch: ['9L1', '8L1'],\n      magnitude: ['7L1', '7S0'],\n      metalclaw: ['9M', '9L1', '8L1', '7L1'],\n      morningsun: ['9L1', '8L1', '7L1'],\n      mudshot: ['9M', '9L25', '8M', '8L25', '7L14'],\n      mysticalfire: ['8M'],\n      overheat: ['9M', '8M', '7M'],\n      poisonjab: ['9M', '8M', '7M'],\n      protect: ['9M', '8M', '7M'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      roar: ['7M'],\n      round: ['8M', '7M'],\n      sandtomb: ['9M', '8M'],\n      scaleshot: ['9M', '8T'],\n      scorchingsands: ['9M', '8T'],\n      scratch: ['9L1', '8L1', '7L1'],\n      screech: ['9L49', '8M', '8L49', '7L49'],\n      sleeptalk: ['9M', '8M', '7M'],\n      sludgebomb: ['9M', '8M', '7M'],\n      smog: ['9L12', '8L12', '7L10'],\n      smokescreen: ['9L1', '8L1', '7L4'],\n      snore: ['8M', '7T'],\n      solarbeam: ['9M', '8M', '7M'],\n      stealthrock: ['9M', '8M', '7T'],\n      stompingtantrum: ['9M', '8M', '7T'],\n      stormthrow: ['9L1', '8L1', '7L1'],\n      substitute: ['9M', '8M', '7M'],\n      sunnyday: ['9M', '8M', '7M'],\n      superpower: ['8M', '7T'],\n      swagger: ['7M'],\n      tailwhip: ['9L1', '8L1', '7L1'],\n      taunt: ['9M', '8M', '7M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      toxic: ['9M', '9L63', '8L63', '7M'],\n      trailblaze: ['9M'],\n      venomdrench: ['8M'],\n      willowisp: ['9M', '8M', '7M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'swirlpool',\n    {\n      acidarmor: ['9E', '8E', '7E'],\n      allyswitch: ['8M'],\n      aquajet: ['9L12', '8L12', '7L16'],\n      attract: ['8M', '7M'],\n      blizzard: ['9M', '8M', '7M'],\n      bodyslam: ['9M', '8M'],\n      brine: ['9L21', '8M', '8L21', '7L25'],\n      bugbite: ['9M', '7T'],\n      bugbuzz: ['9M', '9L33', '8M', '8L33', '7L38'],\n      captivate: ['7L40'],\n      charm: ['9M', '9L9', '8M', '8L9', '7L10'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confusion: ['9L15', '8L15', '7L14'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      dive: ['8M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      echoedvoice: ['7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      futuresight: ['8M'],\n      growl: ['9L1', '8L1', '7L4'],\n      guardswap: ['8M'],\n      hail: ['8M', '7M'],\n      healpulse: ['9L24', '8L24', '7L20'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hydropump: ['9M', '9L39', '8M', '8L39', '7L44'],\n      hypervoice: ['9M', '8M', '7T'],\n      icebeam: ['9M', '8M', '7M'],\n      icywind: ['9M', '8M', '7T'],\n      infestation: ['9E', '8E', '7M'],\n      leechlife: ['9M', '8M', '7M'],\n      lifedew: ['9E', '8E'],\n      magiccoat: ['7T'],\n      metronome: ['9M', '8M'],\n      muddywater: ['9E', '8M', '7E'],\n      pinmissile: ['9E', '8M', '7E'],\n      pounce: ['9M'],\n      pound: ['9L1', '8L1', '7L1'],\n      powder: ['7E'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '8M', '7M'],\n      psychoshift: ['8E', '7E'],\n      raindance: ['9M', '9L18', '8M', '8L18', '7M', '7L29'],\n      recover: ['9E'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      signalbeam: ['7T'],\n      skillswap: ['9M', '8M'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      spikyshield: ['9E', '8E', '7E'],\n      spotlight: ['7E'],\n      stealthrock: ['9M', '8M', '7T'],\n      stickyweb: ['9E', '8E', '7E'],\n      strugglebug: ['9M', '9L6', '8L6', '7L7'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L30', '8M', '8L30', '7M', '7L48'],\n      terablast: ['9M'],\n      toxic: ['9L36', '8L36', '7M'],\n      trick: ['9M', '8M', '7T'],\n      uproar: ['8M', '7T'],\n      uturn: ['9M', '9L27', '8M', '8L27', '7M', '7L34'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M'],\n      waterfall: ['9M', '8M', '7M'],\n      watergun: ['9L3', '8L3', '7L1'],\n      waterpledge: ['9M', '8T', '7T'],\n      waterpulse: ['9M', '7T'],\n      whirlpool: ['8M'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'coribalis',\n    {\n      allyswitch: ['8M'],\n      aquajet: ['9L12', '8L12', '7L16'],\n      attract: ['8M', '7M'],\n      blizzard: ['9M', '8M', '7M'],\n      block: ['7T'],\n      bodyslam: ['9M', '8M'],\n      brine: ['9L25', '8M', '8L25', '7L26'],\n      bugbite: ['9M', '7T'],\n      bugbuzz: ['9M', '9L50', '8M', '8L50', '7L42'],\n      captivate: ['7L48'],\n      charm: ['9M', '9L9', '8M', '8L9', '7L10'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confusion: ['9L15', '8L15', '7L14'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      dive: ['8M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['8M'],\n      dualwingbeat: ['8T'],\n      echoedvoice: ['7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      futuresight: ['8M'],\n      growl: ['9L1', '8L1', '7L4'],\n      guardswap: ['8M'],\n      hail: ['8M', '7M'],\n      healpulse: ['9L30', '8L30', '7L22'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hydropump: ['9M', '9L60', '8M', '8L60', '7L52'],\n      hypervoice: ['9M', '8M', '7T'],\n      icebeam: ['9M', '8M', '7M'],\n      icywind: ['9M', '8M', '7T'],\n      infestation: ['7M'],\n      leechlife: ['9M', '8M', '7M'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      metronome: ['9M', '8M'],\n      muddywater: ['8M'],\n      pinmissile: ['8M'],\n      pounce: ['9M'],\n      pound: ['9L1', '8L1', '7L1'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '9L40', '8M', '8L40', '7M', '7L38'],\n      raindance: ['9M', '9L20', '8M', '8L20', '7M', '7L30'],\n      razorshell: ['9L1', '8M', '8L1'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      signalbeam: ['7T'],\n      skillswap: ['9M', '8M'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      stealthrock: ['9M', '8M', '7T'],\n      strugglebug: ['9M', '9L1', '8L1', '7L7'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L45', '8M', '8L45', '7M', '7L58'],\n      terablast: ['9M'],\n      toxic: ['9L55', '8L55', '7M'],\n      trick: ['9M', '8M', '7T'],\n      trickroom: ['9M', '8M', '7M'],\n      uproar: ['8M', '7T'],\n      uturn: ['9M', '9L35', '8M', '8L35', '7M', '7L34'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M'],\n      waterfall: ['9M', '8M', '7M'],\n      watergun: ['9L1', '8L1'],\n      waterpledge: ['9M', '8T', '7T'],\n      waterpulse: ['9M', '7T'],\n      whirlpool: ['8M'],\n      wonderroom: ['8M', '7T'],\n      workup: ['8M', '7M'],\n      xscissor: ['9M', '8M']\n    }\n  ],\n  [\n    'snaelstrom',\n    {\n      alluringvoice: ['9M'],\n      allyswitch: ['8M'],\n      aquajet: ['9L12', '8L12', '7L17'],\n      aquaring: ['9L1', '8L1', '7L1'],\n      attract: ['9L1', '8M', '8L1', '7M', '7L1'],\n      blizzard: ['9M', '8M', '7M'],\n      block: ['7T'],\n      bodyslam: ['9M', '8M'],\n      brine: ['9L25', '8M', '8L25', '7L27'],\n      bugbite: ['9M', '7T'],\n      bugbuzz: ['9M', '9L58', '8M', '8L58', '7L48'],\n      captivate: ['7L56'],\n      celebrate: ['7S0'],\n      charm: ['9M', '9L9', '8M', '8L9', '7L11'],\n      chillingwater: ['9M'],\n      confide: ['7M'],\n      confusion: ['9L15', '8L15', '7L14'],\n      dazzlinggleam: ['9M', '8M', '7M'],\n      dive: ['8M'],\n      doubleteam: ['7M'],\n      drainingkiss: ['9M', '8M'],\n      dualwingbeat: ['8T'],\n      echoedvoice: ['7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      frustration: ['7M'],\n      futuresight: ['9M', '8M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      growl: ['9L1', '8L1', '7L1'],\n      guardswap: ['8M'],\n      hail: ['8M', '7M'],\n      healpulse: ['9L30', '8L30', '7L22'],\n      helpinghand: ['9M', '8M'],\n      hiddenpower: ['7M'],\n      hydrocannon: ['9M', '8T', '7T'],\n      hydropump: ['9M', '9L72', '8M', '8L72', '7L60'],\n      hyperbeam: ['9M', '8M', '7M'],\n      hypervoice: ['9M', '8M'],\n      icebeam: ['9M', '8M', '7M'],\n      iciclespear: ['9M', '8M'],\n      icywind: ['9M', '8M', '7T'],\n      infestation: ['7M'],\n      leechlife: ['9M', '8M', '7M', '7S0'],\n      liquidation: ['9M', '9L0', '8M', '8L0', '7T', '7L1', '7S0'],\n      magiccoat: ['7T'],\n      magicroom: ['8M', '7T'],\n      metronome: ['9M', '8M', '7S0'],\n      muddywater: ['8M'],\n      pinmissile: ['8M'],\n      pounce: ['9M'],\n      pound: ['9L1', '8L1', '7L1'],\n      protect: ['9M', '8M', '7M'],\n      psychic: ['9M', '9L44', '8M', '8L44', '7M', '7L44'],\n      raindance: ['9M', '9L20', '8M', '8L20', '7M', '7L32'],\n      rapidspin: ['9L1', '8L1', '7L1'],\n      razorshell: ['9L1', '8M', '8L1'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      scald: ['8M', '7M'],\n      signalbeam: ['7T'],\n      skillswap: ['9M', '8M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M', '7M'],\n      snore: ['8M', '7T'],\n      snowscape: ['9M'],\n      stealthrock: ['9M', '8M', '7T'],\n      strugglebug: ['9M', '9L1', '8L1', '7L1'],\n      substitute: ['9M', '8M', '7M'],\n      surf: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      swift: ['9M', '8M'],\n      swordsdance: ['9M', '9L51', '8M', '8L51', '7M', '7L64'],\n      terablast: ['9M'],\n      toxic: ['9L65', '8L65', '7M'],\n      trick: ['9M', '8M', '7T'],\n      trickroom: ['9M', '8M', '7M'],\n      uproar: ['8M', '7T'],\n      uturn: ['9M', '9L37', '8M', '8L37', '7M', '7L40'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '8M', '7M'],\n      waterfall: ['9M', '8M', '7M'],\n      watergun: ['9L1', '8L1'],\n      waterpledge: ['9M', '8T', '7T'],\n      waterpulse: ['9M', '7T'],\n      whirlpool: ['9L1', '8M', '8L1', '7L1'],\n      wonderroom: ['8M', '7T'],\n      workup: ['8M', '7M'],\n      xscissor: ['9M', '8M']\n    }\n  ],\n  [\n    'justyke',\n    {\n      allyswitch: ['8M', '7T'],\n      aurasphere: ['9M', '9L33', '8M', '8L33', '7L64'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '8M', '7M'],\n      confide: ['7M'],\n      destinybond: ['9L44', '8L44', '7L58'],\n      doubleteam: ['7M'],\n      drillrun: ['9M', '8M', '7T'],\n      earthpower: ['9M', '9L48', '8M', '8L48', '7T', '7L36'],\n      earthquake: ['9M', '8M', '7M', '7L52'],\n      embargo: ['7M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M', '7M'],\n      flashcannon: ['9M', '9L28', '8M', '8L28', '7M', '7L41'],\n      frustration: ['7M'],\n      gravity: ['9M', '9L24', '7T'],\n      guardsplit: ['9L16', '8L16', '7L21'],\n      gyroball: ['9M', '9L12', '8M', '8L12', '7M', '7L17'],\n      healingwish: ['9L40', '8L40', '7L46'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      icespinner: ['9M'],\n      imprison: ['9M', '9L8', '8M', '8L8', '7L9'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      magicroom: ['8M', '7T'],\n      magnetrise: ['9L1', '8L1', '7T'],\n      memento: ['9L36', '8L36', '7L46'],\n      mindreader: ['8L24', '7L31'],\n      mirrorshot: ['7L26'],\n      mudshot: ['9M', '8M', '7L13'],\n      mudslap: ['9M', '9L4', '8L4', '7L5'],\n      mudsport: ['7L1'],\n      painsplit: ['9L52', '8L52', '7T', '7L70'],\n      pound: ['9L1', '8L1', '7L1'],\n      powersplit: ['9L16', '8L16', '7L21'],\n      protect: ['9M', '8M', '7M'],\n      psychup: ['7M'],\n      quash: ['9L20', '8L20', '7M'],\n      recycle: ['7T'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      substitute: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      terablast: ['9M'],\n      trickroom: ['9M', '8M', '7M'],\n      wonderroom: ['8M', '7T'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'equilibra',\n    {\n      allyswitch: ['8M', '7T'],\n      aurasphere: ['9M', '9L35', '8M', '8L35', '7L71'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '8M', '7M'],\n      confide: ['7M'],\n      destinybond: ['9L52', '8L52', '7L64'],\n      doomdesire: ['9S0', '8L0', '7L1'],\n      doubleteam: ['7M'],\n      drillrun: ['9M', '8M', '7T'],\n      earthpower: ['9M', '9L58', '9S0', '8M', '8L58', '7T', '7L40'],\n      earthquake: ['9M', '8M', '7M', '7L57'],\n      embargo: ['7M'],\n      endure: ['9M', '8M'],\n      explosion: ['7M'],\n      facade: ['9M', '8M', '7M'],\n      flashcannon: ['9M', '9L28', '9S0', '8M', '8L28', '7M', '7L45'],\n      frustration: ['7M'],\n      gigaimpact: ['9M', '8M', '7M'],\n      gravity: ['9M', '9L24', '7T'],\n      guardsplit: ['9L16', '8L16', '7L25'],\n      gyroball: ['9M', '9L12', '8M', '8L12', '7M', '7L20'],\n      hardpress: ['9M'],\n      healingwish: ['9L46', '8L46', '7L50'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M', '8M', '7T'],\n      hiddenpower: ['7M'],\n      hyperbeam: ['9M', '8M', '7M'],\n      imprison: ['9M', '9L1', '8M', '8L1', '7L1'],\n      irondefense: ['9M', '8M', '7T'],\n      ironhead: ['9M', '8M', '7T'],\n      irontail: ['8M', '7T'],\n      magicroom: ['8M', '7T'],\n      magnetrise: ['9L1', '8L1', '7T'],\n      memento: ['9L40', '8L40', '7L50'],\n      mindreader: ['8L24', '7L35'],\n      mirrorshot: ['7L30'],\n      mudshot: ['9M', '8M', '7L15'],\n      mudslap: ['9M', '9L1', '8L1', '7L1'],\n      mudsport: ['7L1'],\n      painsplit: ['9L64', '8L64', '7T', '7L78'],\n      perishsong: ['9L1', '8L1', '7L85'],\n      pound: ['9L1', '8L1', '7L1'],\n      powersplit: ['9L16', '8L16', '7L25'],\n      protect: ['9M', '8M', '7M'],\n      psychup: ['9M', '7M'],\n      quash: ['9L20', '8L20', '7M'],\n      rapidspin: ['9L1', '9S0', '8L1', '7L1'],\n      recycle: ['7T'],\n      rest: ['9M', '8M', '7M'],\n      return: ['7M'],\n      rockpolish: ['7M'],\n      rockslide: ['9M', '8M', '7M'],\n      rocktomb: ['9M', '8M', '7M'],\n      round: ['8M', '7M'],\n      safeguard: ['8M', '7M'],\n      sandstorm: ['9M', '8M', '7M'],\n      sleeptalk: ['9M', '8M', '7M'],\n      smartstrike: ['9M', '8M', '7M'],\n      snore: ['8M', '7M'],\n      steelbeam: ['9M', '8T'],\n      steelroller: ['8T'],\n      substitute: ['9M', '8M', '7M'],\n      swagger: ['7M'],\n      terablast: ['9M'],\n      trickroom: ['9M', '8M', '7M'],\n      wonderroom: ['8M', '7T'],\n      workup: ['8M', '7M']\n    }\n  ],\n  [\n    'solotl',\n    {\n      acrobatics: ['9M', '8M'],\n      agility: ['9M', '8M'],\n      allyswitch: ['8M'],\n      attract: ['8M'],\n      batonpass: ['9M', '8M'],\n      breakingswipe: ['8M'],\n      charm: ['9M', '9L20', '8M', '8L20'],\n      cosmicpower: ['9L28', '8M', '8L28'],\n      dazzlinggleam: ['9M', '8M'],\n      defog: ['9E', '8E'],\n      dracometeor: ['9M', '8T'],\n      dragonbreath: ['9L8', '8L8'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40'],\n      dragonrush: ['9L48', '8L48'],\n      dragontail: ['9M', '9L24', '8L24'],\n      ember: ['9L4', '8L4'],\n      encore: ['9M', '9L12', '8M', '8L12'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      firelash: ['9L36', '9L36', '8L36'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '8M'],\n      flamewheel: ['9L16', '8L16'],\n      flareblitz: ['9M', '9L52', '8M', '8L52'],\n      healbell: ['8L32'],\n      healingwish: ['9L44', '8L44'],\n      heatwave: ['9M', '8M'],\n      helpinghand: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lifedew: ['9E', '8E'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      meteorbeam: ['8T'],\n      metronome: ['9M', '8M'],\n      mysticalfire: ['8M'],\n      outrage: ['9M', '8M'],\n      overheat: ['9M', '8M'],\n      pound: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['9L32', '8M'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      spikes: ['9M', '8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M'],\n      twister: ['9E', '8E'],\n      willowisp: ['9M', '8M'],\n      workup: ['8M'],\n      yawn: ['9E', '8E']\n    }\n  ],\n  [\n    'astrolotl',\n    {\n      acrobatics: ['9M', '8M'],\n      agility: ['9M', '8M'],\n      alluringvoice: ['9M'],\n      allyswitch: ['8M'],\n      attract: ['8M'],\n      batonpass: ['9M', '9L1', '8M', '8L1'],\n      breakingswipe: ['9M', '8M'],\n      bulldoze: ['9M', '8M'],\n      charm: ['9M', '9L20', '8M', '8L20'],\n      cosmicpower: ['9L28', '8M', '8L28'],\n      dazzlinggleam: ['9M', '8M'],\n      dracometeor: ['8T'],\n      dragonbreath: ['9L1', '8L1'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M'],\n      dragonpulse: ['9M', '9L44', '8M', '8L44'],\n      dragonrush: ['9L56', '8L56'],\n      dragontail: ['9M', '9L24', '8L24'],\n      ember: ['9L1', '8L1'],\n      encore: ['9M', '9L12', '8M', '8L12'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fireblast: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      firelash: ['9L38', '8L38'],\n      firepunch: ['9M', '8M'],\n      firespin: ['9M', '8M'],\n      flamecharge: ['9M'],\n      flamethrower: ['9M', '8M'],\n      flamewheel: ['9L16', '8L16'],\n      flareblitz: ['9M', '9L62', '8M', '8L62'],\n      healbell: ['8L32'],\n      healingwish: ['9L50', '8L50'],\n      heatwave: ['9M', '8M'],\n      helpinghand: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      lightscreen: ['9M', '8M'],\n      magicalleaf: ['9M', '8M'],\n      magiccoat: ['8L1'],\n      meteorbeam: ['9M', '8T'],\n      metronome: ['9M', '8M'],\n      mysticalfire: ['9L0', '8M', '8L0'],\n      outrage: ['9M', '8M'],\n      overheat: ['9M', '8M'],\n      pound: ['9L1', '8L1'],\n      protect: ['9M', '8M'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      safeguard: ['9L32', '8M'],\n      scorchingsands: ['9M', '8T'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      solarbeam: ['9M', '8M'],\n      spikes: ['9M', '8M'],\n      stompingtantrum: ['9M', '8M'],\n      storedpower: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      tailwhip: ['9L1', '8L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M'],\n      willowisp: ['9M', '8M'],\n      workup: ['8M']\n    }\n  ],\n  [\n    'miasmite',\n    {\n      agility: ['9M', '8M'],\n      aromatherapy: ['8E'],\n      attract: ['8M'],\n      bite: ['9L8', '8L8'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['8M'],\n      bugbite: ['9M', '9L16', '8L16'],\n      bugbuzz: ['9M', '9L24', '8M', '8L24'],\n      corrosivegas: ['8T'],\n      crunch: ['9M', '9L36', '8M', '8L36'],\n      darkpulse: ['9M', '8M'],\n      dracometeor: ['9M', '8T'],\n      dragonbreath: ['9L4', '8L4'],\n      dragonclaw: ['9M', '8M'],\n      dragonpulse: ['9M', '9L40', '8M', '8L40'],\n      dragonrush: ['9E', '8E'],\n      dragontail: ['9M', '9E', '8E'],\n      earthpower: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      firstimpression: ['9E', '8E'],\n      flashcannon: ['9M', '8M'],\n      haze: ['9M', '9L28', '8L28'],\n      icefang: ['9M', '8M'],\n      ironhead: ['9M', '8M'],\n      irontail: ['8M'],\n      leechlife: ['9M', '8M'],\n      lunge: ['9M', '9L44', '8L44'],\n      megahorn: ['9E', '8M'],\n      outrage: ['9M', '8M'],\n      pinmissile: ['8M'],\n      poisonfang: ['9E', '8E'],\n      poisongas: ['9L20', '8L20'],\n      poisonjab: ['9M', '8M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      recover: ['9E', '8E'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scaryface: ['9M', '8M'],\n      screech: ['8M'],\n      skittersmack: ['8T'],\n      sleeptalk: ['9M', '8M'],\n      sludgebomb: ['9M', '8M'],\n      smog: ['9L12', '8L12'],\n      smokescreen: ['9L1', '8L1'],\n      snore: ['8M'],\n      strugglebug: ['9M', '9L1', '8L1'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      superfang: ['9M', '9L32', '8L32'],\n      superpower: ['8M'],\n      swordsdance: ['9M', '8M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thunderfang: ['9M', '8M'],\n      uproar: ['9M', '8M'],\n      workup: ['8M'],\n      xscissor: ['9M', '8M']\n    }\n  ],\n  [\n    'miasmaw',\n    {\n      agility: ['9M', '8M'],\n      attract: ['8M'],\n      bite: ['9L1', '8L1'],\n      bodyslam: ['9M', '8M'],\n      breakingswipe: ['9M', '8M'],\n      brutalswing: ['8M'],\n      bugbite: ['9M', '9L16', '8L16'],\n      bugbuzz: ['9M', '9L24', '8M', '8L24'],\n      bulldoze: ['9M', '8M'],\n      closecombat: ['9M', '8M'],\n      corrosivegas: ['8T'],\n      crunch: ['9M', '9L40', '8M', '8L40'],\n      darkpulse: ['9M', '8M'],\n      dracometeor: ['9M', '8T'],\n      dragonbreath: ['9L1', '8L1'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M', '8M'],\n      dragonhammer: ['9M', '8L0'],\n      dragonpulse: ['9M', '9L46', '8M', '8L46'],\n      dragontail: ['9M'],\n      dualwingbeat: ['9M', '8T'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '8M'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      firefang: ['9M', '8M'],\n      flashcannon: ['9M', '8M'],\n      focusblast: ['9M', '8M'],\n      gigaimpact: ['9M', '9L58', '8M', '8L58'],\n      gunkshot: ['9M', '8M'],\n      haze: ['9M', '9L28', '8L28'],\n      highhorsepower: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      icefang: ['9M', '8M'],\n      ironhead: ['9M', '8M'],\n      irontail: ['8M'],\n      leechlife: ['9M', '8M'],\n      lunge: ['9M', '9L52', '8L52'],\n      megahorn: ['8M'],\n      nastyplot: ['9M', '8M'],\n      outrage: ['9M', '8M'],\n      pinmissile: ['8M'],\n      poisongas: ['9L20', '8L20'],\n      poisonjab: ['9M', '8M'],\n      pounce: ['9M'],\n      protect: ['9M', '8M'],\n      raindance: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      round: ['8M'],\n      scaleshot: ['9M', '9L0'],\n      scaryface: ['9M', '8M'],\n      screech: ['8M'],\n      skittersmack: ['9M', '8T'],\n      sleeptalk: ['9M', '8M'],\n      sludgebomb: ['9M', '8M'],\n      smog: ['9L12', '8L12'],\n      smokescreen: ['9L1', '8L1'],\n      snore: ['8M'],\n      strugglebug: ['9M', '9L1', '8L1'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      superfang: ['9M', '9L34', '8L34'],\n      superpower: ['8M'],\n      swordsdance: ['9M', '8M'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      thunderfang: ['9M', '8M'],\n      uproar: ['9M', '8M'],\n      uturn: ['9M', '8M'],\n      wildcharge: ['9M', '8M'],\n      workup: ['8M'],\n      xscissor: ['9M', '8M']\n    }\n  ],\n  [\n    'chromera',\n    {\n      acidspray: ['9M', '9L1', '8L1'],\n      aerialace: ['9M', '9L10', '8L10'],\n      alluringvoice: ['9M'],\n      aromatherapy: ['8L60'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      beatup: ['8M'],\n      belch: ['8S0'],\n      blizzard: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      boomburst: ['9L75', '8L75'],\n      calmmind: ['9M', '8M', '8S0'],\n      charm: ['9M', '8M'],\n      chillingwater: ['9M'],\n      crunch: ['9M', '9L35', '8M', '8L35'],\n      darkpulse: ['9M', '8M', '8S0'],\n      decorate: ['8L65'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      faketears: ['9M', '8M'],\n      finalgambit: ['9L80', '8L80'],\n      firefang: ['9M', '9L20', '8M', '8L20'],\n      firstimpression: ['9L45', '8L45'],\n      foulplay: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      grassknot: ['9L60'],\n      gunkshot: ['9M', '8M'],\n      hex: ['9M', '8M'],\n      hyperbeam: ['9M', '8M'],\n      hypervoice: ['9M', '8M'],\n      icefang: ['9M', '9L20', '8M', '8L20'],\n      imprison: ['9M', '9L25', '8M', '8L25'],\n      knockoff: ['9L1', '8L1'],\n      lashout: ['9M', '8T'],\n      lifedew: ['9L40', '8L40'],\n      lightscreen: ['9M', '8M'],\n      metalclaw: ['9M', '9L5', '8L5'],\n      mudslap: ['9M'],\n      nobleroar: ['9L1', '8L1'],\n      outrage: ['9M', '9L70', '8M', '8L70'],\n      payback: ['8M'],\n      payday: ['8M'],\n      playrough: ['9M', '9L65', '8M'],\n      protect: ['9M', '8M'],\n      psychicnoise: ['9M'],\n      recover: ['9L1', '8L1', '8S0'],\n      reflect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      revenge: ['8M'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      scald: ['9M', '8M'],\n      scaryface: ['9M', '8M'],\n      shadowball: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      sludgebomb: ['9M', '8M'],\n      sludgewave: ['9M', '8M'],\n      snarl: ['9M', '8M'],\n      snore: ['8M'],\n      spite: ['9M', '9L15', '8L15'],\n      stompingtantrum: ['9M', '9L30', '8M', '8L30'],\n      substitute: ['9M', '8M'],\n      sunnyday: ['9M', '8M'],\n      switcheroo: ['9L1', '8L1'],\n      taunt: ['9M', '8M'],\n      terablast: ['9M'],\n      thief: ['9M', '8M'],\n      thunder: ['9M', '8M'],\n      thunderbolt: ['9M', '8M'],\n      thunderfang: ['9M', '9L20', '8M', '8L20'],\n      toxic: ['9L55', '8L55'],\n      toxicspikes: ['9M', '8M'],\n      trailblaze: ['9M'],\n      uproar: ['9M', '8M'],\n      venomdrench: ['8M'],\n      wideguard: ['9L50', '8L50']\n    }\n  ],\n  [\n    'venomicon',\n    {\n      acidspray: ['9M'],\n      aircutter: ['9M', '9L15', '8L15'],\n      airslash: ['9M', '8M'],\n      assurance: ['8M'],\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bravebird: ['9M', '8M'],\n      clearsmog: ['9E', '8E'],\n      coil: ['9L50', '8L50'],\n      confuseray: ['9L10', '8L10'],\n      darkpulse: ['9M', '8M'],\n      drillpeck: ['9L35', '8L35'],\n      dualwingbeat: ['9M', '8T'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fly: ['9M', '8M'],\n      focusenergy: ['8M'],\n      foulplay: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      guardswap: ['8M'],\n      gunkshot: ['9M', '8M'],\n      hex: ['9M', '9L25', '8M', '8L25'],\n      hurricane: ['9M', '9L55', '8M', '8L55'],\n      hyperbeam: ['9M', '8M'],\n      imprison: ['9M', '8M'],\n      irondefense: ['9M', '8M'],\n      knockoff: ['9M', '9E', '8E'],\n      lashout: ['9M', '8T'],\n      magicalleaf: ['9M', '8M'],\n      magicroom: ['8M'],\n      meanlook: ['9E', '8E'],\n      memento: ['9E', '8E'],\n      nastyplot: ['9M', '8M'],\n      payback: ['8M'],\n      peck: ['9L1', '8L1'],\n      phantomforce: ['9M', '8M'],\n      poisonjab: ['9M', '9L40', '8M', '8L40'],\n      poisonsting: ['9L1', '8L1'],\n      powerswap: ['8M'],\n      protect: ['9M', '8M'],\n      psychic: ['9M', '8M'],\n      psyshock: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      retaliate: ['8M'],\n      roost: ['9L45', '8L45'],\n      round: ['8M'],\n      safeguard: ['8M'],\n      scaryface: ['9M', '8M'],\n      shadowball: ['9M', '8M'],\n      skillswap: ['9M', '8M'],\n      sleeptalk: ['9M', '8M'],\n      sludgebomb: ['9M', '8M'],\n      sludgewave: ['9M', '8M'],\n      snore: ['8M'],\n      stealthrock: ['9M', '8M'],\n      steelwing: ['8M'],\n      substitute: ['9M', '8M'],\n      swift: ['9M', '8M'],\n      tailwind: ['9M'],\n      takedown: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunderwave: ['9M', '8M'],\n      toxic: ['9L30', '8L30'],\n      toxicspikes: ['9M', '8M'],\n      trick: ['9M', '8M'],\n      uturn: ['9M', '8M'],\n      venomdrench: ['8M'],\n      venoshock: ['9M', '9L20', '8M', '8L20'],\n      withdraw: ['9L5', '8L5']\n    }\n  ],\n  [\n    'saharascal',\n    {\n      ancientpower: ['9E', '8E'],\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '9L16', '8M', '8L16'],\n      doubleedge: ['9L36', '8L36'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '9L32', '8M', '8L32'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fissure: ['9L44', '8L44'],\n      heavyslam: ['9M', '8M'],\n      highhorsepower: ['9M', '9E', '8M'],\n      megakick: ['8M'],\n      mudshot: ['9M', '8M'],\n      painsplit: ['9E', '8E'],\n      payback: ['8M'],\n      payday: ['8M'],\n      protect: ['9M', '8M'],\n      rapidspin: ['9E', '8E'],\n      rest: ['9M', '8M'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      sandattack: ['9L1', '8L1'],\n      sandstorm: ['9M', '9L20', '8M', '8L20'],\n      sandtomb: ['9M', '9L14', '8M', '8L4'],\n      scorchingsands: ['8T'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spitup: ['9L40', '8L40'],\n      stealthrock: ['9M', '8M'],\n      stockpile: ['9L40', '8L40'],\n      stomp: ['9L28', '8L28'],\n      stompingtantrum: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      swallow: ['9L40', '8L40'],\n      swordsdance: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      taunt: ['9M', '9L8', '8M', '8L8'],\n      terablast: ['9M'],\n      thief: ['9M', '9L24', '8M', '8L24'],\n      watergun: ['9L12', '8L12'],\n      waterpulse: ['9M', '9E', '8E']\n    }\n  ],\n  [\n    'saharaja',\n    {\n      attract: ['8M'],\n      bodypress: ['9M', '8M'],\n      bodyslam: ['9M', '8M'],\n      bulldoze: ['9M', '9L1', '8M', '8L1'],\n      dazzlinggleam: ['9M', '8M'],\n      diamondstorm: ['9L0', '8L0'],\n      doubleedge: ['9L1', '8L1'],\n      earthpower: ['9M', '8M'],\n      earthquake: ['9M', '9L1', '8M', '8L1'],\n      endure: ['9M', '8M'],\n      facade: ['9M', '8M'],\n      fissure: ['9L1', '8L1'],\n      flashcannon: ['9M', '8M'],\n      gigaimpact: ['9M', '8M'],\n      healbell: ['8L1'],\n      heavyslam: ['9M', '8M'],\n      highhorsepower: ['9M', '8M'],\n      hornleech: ['9L1', '8L1'],\n      hyperbeam: ['9M', '8M'],\n      lashout: ['8T'],\n      megakick: ['8M'],\n      mudshot: ['9M', '8M'],\n      outrage: ['9M', '8M'],\n      payback: ['8M'],\n      payday: ['9L1', '8M', '8L1'],\n      powergem: ['9M', '8M'],\n      protect: ['9M', '8M'],\n      rest: ['9M', '8M'],\n      rocktomb: ['9M', '8M'],\n      round: ['8M'],\n      sandattack: ['9L1', '8L1'],\n      sandstorm: ['9M', '9L1', '8M', '8L1'],\n      sandtomb: ['9M', '9L1', '8M', '8L1'],\n      scorchingsands: ['9M', '8T'],\n      sleeptalk: ['9M', '8M'],\n      snore: ['8M'],\n      spitup: ['9L1', '8L1'],\n      stealthrock: ['9M', '8M'],\n      stockpile: ['9L1', '8L1'],\n      stomp: ['9L1', '8L1'],\n      stompingtantrum: ['8M'],\n      stoneedge: ['9M', '8M'],\n      substitute: ['9M', '8M'],\n      swallow: ['9L1', '8L1'],\n      swordsdance: ['9M', '8M'],\n      tackle: ['9L1', '8L1'],\n      taunt: ['9M', '9L1', '8M', '8L1'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thief: ['9M', '9L1', '8M', '8L1'],\n      watergun: ['9L1', '8L1'],\n      waterpulse: ['9M']\n    }\n  ],\n  [\n    'ababo',\n    {\n      bodyslam: ['9M'],\n      bulkup: ['9M'],\n      charm: ['9M', '9L20'],\n      copycat: ['9L1'],\n      dazzlinggleam: ['9M'],\n      defensecurl: ['9L4'],\n      disable: ['9L16'],\n      disarmingvoice: ['9M', '9L12'],\n      drainingkiss: ['9M'],\n      endure: ['9M'],\n      explosion: ['9E'],\n      extremespeed: ['9E'],\n      facade: ['9M'],\n      flamethrower: ['9M'],\n      fling: ['9M'],\n      grassknot: ['9M'],\n      helpinghand: ['9M'],\n      hypervoice: ['9M'],\n      lashout: ['9M'],\n      lightscreen: ['9M'],\n      metronome: ['9M'],\n      mistyexplosion: ['9M'],\n      mistyterrain: ['9M'],\n      playrough: ['9M'],\n      pound: ['9L1'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      seismictoss: ['9E'],\n      shadowball: ['9M'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      sweetkiss: ['9L8'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      wildcharge: ['9M'],\n      wish: ['9E']\n    }\n  ],\n  [\n    'scattervein',\n    {\n      batonpass: ['9M'],\n      bodyslam: ['9M'],\n      brutalswing: ['9L12'],\n      bulkup: ['9M'],\n      charm: ['9M', '9L1'],\n      copycat: ['9L1'],\n      dazzlinggleam: ['9M'],\n      defensecurl: ['9L1'],\n      disable: ['9L1'],\n      disarmingvoice: ['9M', '9L1'],\n      doubleedge: ['9L44'],\n      drainingkiss: ['9M'],\n      echoedvoice: ['9L8'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      explosion: ['9E'],\n      extremespeed: ['9E'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      flamethrower: ['9M'],\n      fling: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      imprison: ['9M'],\n      lashout: ['9M'],\n      lifedew: ['9L24'],\n      lightscreen: ['9M'],\n      magicalleaf: ['9M'],\n      metronome: ['9M'],\n      mistyexplosion: ['9M'],\n      mistyterrain: ['9M'],\n      moonblast: ['9L36'],\n      moonlight: ['9L28'],\n      playrough: ['9M'],\n      pound: ['9L1'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      psyshock: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      safeguard: ['9L32'],\n      screech: ['9L40'],\n      seismictoss: ['9E'],\n      shadowball: ['9M'],\n      slam: ['9L20'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spikes: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      sweetkiss: ['9L1'],\n      tailwhip: ['9L4'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      tickle: ['9L16'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      wildcharge: ['9M'],\n      willowisp: ['9M'],\n      wish: ['9E'],\n      wrap: ['9L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'hemogoblin',\n    {\n      batonpass: ['9M'],\n      bodyslam: ['9M'],\n      brutalswing: ['9L1'],\n      bulkup: ['9M'],\n      burningjealousy: ['9M'],\n      charm: ['9M', '9L1'],\n      copycat: ['9L1'],\n      dazzlinggleam: ['9M'],\n      defensecurl: ['9L1'],\n      disable: ['9L1'],\n      disarmingvoice: ['9M', '9L1'],\n      doubleedge: ['9L1'],\n      drainingkiss: ['9M'],\n      echoedvoice: ['9L1'],\n      endure: ['9M'],\n      energyball: ['9M'],\n      facade: ['9M'],\n      fireblast: ['9M'],\n      flamethrower: ['9M'],\n      flareblitz: ['9M'],\n      fling: ['9M'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      heatwave: ['9M'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      imprison: ['9M'],\n      lashout: ['9M'],\n      lifedew: ['9L1'],\n      lightscreen: ['9M'],\n      magicalleaf: ['9M'],\n      metronome: ['9M'],\n      mistyexplosion: ['9M'],\n      mistyterrain: ['9M'],\n      moonblast: ['9L1'],\n      moonlight: ['9L1'],\n      overheat: ['9M'],\n      playrough: ['9M'],\n      pound: ['9L1'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      psyshock: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      safeguard: ['9L1'],\n      screech: ['9L1'],\n      shadowball: ['9M'],\n      slam: ['9L1'],\n      sleeptalk: ['9M'],\n      solarbeam: ['9M'],\n      spikes: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      sweetkiss: ['9L1'],\n      tailwhip: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      temperflare: ['9M'],\n      terablast: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      tickle: ['9L1'],\n      trailblaze: ['9M'],\n      trick: ['9M'],\n      wildcharge: ['9M'],\n      willowisp: ['9M'],\n      wrap: ['9L1'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'cresceidon',\n    {\n      amnesia: ['9M'],\n      aquaring: ['9L10'],\n      blizzard: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M', '9L35'],\n      bulldoze: ['9M'],\n      chillingwater: ['9M'],\n      confuseray: ['9M'],\n      dazzlinggleam: ['9M'],\n      doubleedge: ['9M', '9L60'],\n      earthquake: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      haze: ['9M', '9L40'],\n      healingwish: ['9E'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hydropump: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      icywind: ['9M'],\n      liquidation: ['9M'],\n      mist: ['9L25'],\n      mistyexplosion: ['9M'],\n      mistyterrain: ['9M'],\n      moonblast: ['9L55'],\n      muddywater: ['9M'],\n      playrough: ['9M'],\n      pound: ['9L1'],\n      protect: ['9M'],\n      psychic: ['9M'],\n      raindance: ['9M'],\n      recover: ['9L50'],\n      rest: ['9M'],\n      scald: ['9M'],\n      scaryface: ['9M'],\n      shadowball: ['9M'],\n      sleeptalk: ['9M'],\n      soak: ['9L30'],\n      spitup: ['9E'],\n      splash: ['9L1'],\n      stockpile: ['9E'],\n      substitute: ['9M'],\n      surf: ['9M', '9L45'],\n      swallow: ['9E'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      taunt: ['9M'],\n      terablast: ['9M'],\n      thunderwave: ['9M'],\n      waterfall: ['9M'],\n      watergun: ['9L5'],\n      waterpulse: ['9M', '9L20'],\n      wavecrash: ['9L65'],\n      weatherball: ['9M'],\n      whirlpool: ['9M'],\n      wideguard: ['9L15'],\n      wish: ['9E'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'chuggon',\n    {\n      acidspray: ['9M'],\n      bite: ['9L8'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      clangingscales: ['9L48'],\n      crunch: ['9M', '9L32'],\n      destinybond: ['9E'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L12'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M'],\n      dragonpulse: ['9M', '9L36'],\n      dragonrush: ['9E'],\n      encore: ['9M'],\n      endure: ['9M'],\n      entrainment: ['9E'],\n      facade: ['9M'],\n      gunkshot: ['9M', '9L52'],\n      healbell: ['9E'],\n      helpinghand: ['9M'],\n      irondefense: ['9M', '9L44'],\n      lastresort: ['9E'],\n      metalsound: ['9M'],\n      nobleroar: ['9E'],\n      outrage: ['9M'],\n      poisongas: ['9L1'],\n      poisonjab: ['9M'],\n      poisontail: ['9M'],\n      protect: ['9M', '9L24'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L28'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      sludge: ['9L20'],\n      sludgebomb: ['9M', '9L40'],\n      sludgewave: ['9M'],\n      smog: ['9L4'],\n      snarl: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L16'],\n      terablast: ['9M'],\n      toxic: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      venoshock: ['9M']\n    }\n  ],\n  [\n    'draggalong',\n    {\n      acidspray: ['9M'],\n      bite: ['9L1'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      clangingscales: ['9L51'],\n      crunch: ['9M', '9L32'],\n      destinybond: ['9E'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L12'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M'],\n      dragonpulse: ['9M', '9L36'],\n      dragonrush: ['9E'],\n      dragontail: ['9M'],\n      encore: ['9M'],\n      endure: ['9M'],\n      entrainment: ['9E'],\n      facade: ['9M'],\n      gunkshot: ['9M', '9L56'],\n      healbell: ['9E'],\n      helpinghand: ['9M'],\n      irondefense: ['9M', '9L46'],\n      ironhead: ['9M'],\n      lastresort: ['9E'],\n      metalsound: ['9M'],\n      nobleroar: ['9E'],\n      outrage: ['9M'],\n      poisongas: ['9L1'],\n      poisonjab: ['9M'],\n      poisontail: ['9M'],\n      protect: ['9M', '9L24'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L28'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      sludge: ['9L20'],\n      sludgebomb: ['9M', '9L41'],\n      sludgewave: ['9M'],\n      smog: ['9L1'],\n      snarl: ['9M'],\n      stompingtantrum: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L16'],\n      terablast: ['9M'],\n      toxic: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      venoshock: ['9M']\n    }\n  ],\n  [\n    'chuggalong',\n    {\n      acidspray: ['9M'],\n      bite: ['9L1'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      celebrate: ['9S0'],\n      clangingscales: ['9L52'],\n      clangoroussoul: ['9L64'],\n      crunch: ['9M', '9L32'],\n      destinybond: ['9E'],\n      dracometeor: ['9M'],\n      dragonbreath: ['9L12'],\n      dragoncheer: ['9M'],\n      dragonclaw: ['9M'],\n      dragondance: ['9M', '9L1', '9S0'],\n      dragonpulse: ['9M', '9L36'],\n      dragonrush: ['9E'],\n      dragontail: ['9M', '9L1', '9S0'],\n      earthquake: ['9M'],\n      encore: ['9M'],\n      endure: ['9M'],\n      entrainment: ['9E'],\n      facade: ['9M'],\n      flashcannon: ['9M'],\n      gigaimpact: ['9M'],\n      gunkshot: ['9M', '9L58'],\n      healbell: ['9E'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      irondefense: ['9M', '9L46'],\n      ironhead: ['9M'],\n      lastresort: ['9E'],\n      metalsound: ['9M'],\n      nobleroar: ['9E'],\n      outrage: ['9M'],\n      poisongas: ['9L1'],\n      poisonjab: ['9M'],\n      poisontail: ['9M'],\n      protect: ['9M', '9L24'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      roar: ['9M', '9L28'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      scaleshot: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      sludge: ['9L20'],\n      sludgebomb: ['9M', '9L41', '9S0'],\n      sludgewave: ['9M'],\n      smog: ['9L1'],\n      snarl: ['9M'],\n      stompingtantrum: ['9M'],\n      storedpower: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      surf: ['9M'],\n      tackle: ['9L1'],\n      takedown: ['9M'],\n      taunt: ['9M', '9L16'],\n      terablast: ['9M'],\n      toxic: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      venoshock: ['9M']\n    }\n  ],\n  [\n    'flox',\n    {\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      charge: ['9M', '9L15'],\n      chargebeam: ['9M'],\n      charm: ['9M', '9L15'],\n      dig: ['9M'],\n      disarmingvoice: ['9M'],\n      discharge: ['9L40'],\n      doubleedge: ['9M', '9L50'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      glare: ['9E'],\n      growl: ['9L1'],\n      headbutt: ['9L20'],\n      helpinghand: ['9M'],\n      hypervoice: ['9M'],\n      icebeam: ['9M'],\n      icywind: ['9M'],\n      ironhead: ['9M'],\n      milkdrink: ['9L30'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      nuzzle: ['9E'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      spark: ['9L25'],\n      spitup: ['9E'],\n      stockpile: ['9E'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superfang: ['9M'],\n      swallow: ['9E'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L35'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      thunder: ['9M'],\n      thundershock: ['9L10'],\n      thunderwave: ['9M', '9L5'],\n      thunderbolt: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M'],\n      zapcannon: ['9L55'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'shox',\n    {\n      blizzard: ['9M'],\n      bodyslam: ['9M'],\n      bulldoze: ['9M'],\n      charge: ['9M', '9L15'],\n      chargebeam: ['9M'],\n      charm: ['9M', '9L1'],\n      dig: ['9M'],\n      disarmingvoice: ['9M'],\n      discharge: ['9L44'],\n      doubleedge: ['9M', '9L58'],\n      earthpower: ['9M'],\n      earthquake: ['9M'],\n      eerieimpulse: ['9M'],\n      electricterrain: ['9M'],\n      electroball: ['9M'],\n      electroweb: ['9M'],\n      endeavor: ['9M', '9E'],\n      endure: ['9M'],\n      facade: ['9M'],\n      gigaimpact: ['9M'],\n      glare: ['9E'],\n      growl: ['9L1'],\n      headbutt: ['9L20'],\n      helpinghand: ['9M'],\n      highhorsepower: ['9M'],\n      hornattack: ['9L1'],\n      hyperbeam: ['9M'],\n      hypervoice: ['9M'],\n      icebeam: ['9M'],\n      icywind: ['9M'],\n      ironhead: ['9M'],\n      knockoff: ['9M'],\n      milkdrink: ['9L30'],\n      mudshot: ['9M'],\n      mudslap: ['9M'],\n      nuzzle: ['9E'],\n      playrough: ['9M'],\n      protect: ['9M'],\n      raindance: ['9M'],\n      rest: ['9M'],\n      rockslide: ['9M'],\n      rocktomb: ['9M'],\n      scaryface: ['9M', '9L51'],\n      seedbomb: ['9M'],\n      sleeptalk: ['9M'],\n      smartstrike: ['9M'],\n      spark: ['9L25'],\n      spitup: ['9E'],\n      stockpile: ['9E'],\n      stompingtantrum: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      superfang: ['9M'],\n      supercellslam: ['9M'],\n      swallow: ['9E'],\n      tackle: ['9L1'],\n      takedown: ['9M', '9L37'],\n      terablast: ['9M'],\n      thief: ['9M'],\n      throatchop: ['9M'],\n      thunder: ['9M'],\n      thundershock: ['9L1'],\n      thunderwave: ['9M', '9L1'],\n      thunderbolt: ['9M'],\n      trailblaze: ['9M'],\n      uproar: ['9M'],\n      voltswitch: ['9M'],\n      wildcharge: ['9M'],\n      zapcannon: ['9L65'],\n      zenheadbutt: ['9M']\n    }\n  ],\n  [\n    'ramnarok',\n    {\n      ancientpower: ['9L21'],\n      aurorabeam: ['9L26'],\n      auroraveil: ['9L71'],\n      avalanche: ['9M'],\n      blizzard: ['9M'],\n      bodypress: ['9M'],\n      bodyslam: ['9M'],\n      brickbreak: ['9M'],\n      chargebeam: ['9M'],\n      curse: ['9M'],\n      dazzlinggleam: ['9M'],\n      detect: ['9L1'],\n      endeavor: ['9M'],\n      endure: ['9M'],\n      facade: ['9M'],\n      falseswipe: ['9M'],\n      fireblast: ['9M'],\n      flamecharge: ['9M', '9L1'],\n      flamethrower: ['9M'],\n      flareblitz: ['9M'],\n      flashcannon: ['9M'],\n      freezedry: ['9L36'],\n      gigaimpact: ['9M'],\n      grassknot: ['9M'],\n      hardpress: ['9M'],\n      haze: ['9M'],\n      heatcrash: ['9M'],\n      heatwave: ['9M'],\n      heavyslam: ['9M'],\n      helpinghand: ['9M'],\n      hyperbeam: ['9M'],\n      icebeam: ['9M'],\n      iceshard: ['9L1'],\n      icespinner: ['9M', '9L43'],\n      iciclespear: ['9M'],\n      icywind: ['9M'],\n      imprison: ['9M', '9L31'],\n      inferno: ['9L80'],\n      irondefense: ['9M', '9L1'],\n      ironhead: ['9M', '9L50'],\n      lavaplume: ['9L57'],\n      lowkick: ['9M'],\n      metalburst: ['9L89'],\n      outrage: ['9M'],\n      overheat: ['9M'],\n      painsplit: ['9M'],\n      phantomforce: ['9M', '9L64'],\n      polarflare: ['9L1'],\n      protect: ['9M'],\n      rest: ['9M'],\n      roar: ['9M'],\n      sandstorm: ['9M'],\n      scaryface: ['9M'],\n      sleeptalk: ['9M'],\n      snowscape: ['9M'],\n      solarbeam: ['9M'],\n      solarblade: ['9M'],\n      steelbeam: ['9M'],\n      substitute: ['9M'],\n      sunnyday: ['9M'],\n      swift: ['9M'],\n      takedown: ['9M'],\n      terablast: ['9M'],\n      temperflare: ['9M'],\n      throatchop: ['9M'],\n      thunder: ['9M'],\n      thunderbolt: ['9M'],\n      wildcharge: ['9M'],\n      willowisp: ['9M']\n    }\n  ]\n]);\n"
  },
  {
    "path": "src/lib/assets/moves.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { IsNonStandard } from '#utils/isNonStandardEnum';\nimport { Collection } from '@discordjs/collection';\n\n/** The moves in Pokémon */\nexport const moves = new Collection<string, PokemonTypes.Move>([\n  [\n    'absorb',\n    {\n      accuracy: 100,\n      basePower: '20',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      maxMovePower: 90,\n      name: 'Absorb',\n      pp: 25,\n      priority: 0,\n      shortDesc: 'User recovers 50% of the damage dealt.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'accelerock',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Accelerock',\n      pp: 20,\n      priority: 1,\n      shortDesc: 'Usually goes first.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'acid',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 70,\n      name: 'Acid',\n      pp: 30,\n      priority: 0,\n      shortDesc: '10% chance to lower the foe(s) Sp. Def by 1.',\n      target: 'Adjacent Foes',\n      type: 'Poison'\n    }\n  ],\n  [\n    'acidarmor',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Raises the user's Defense by 2 stages.\",\n      name: 'Acid Armor',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense by 2.\",\n      target: 'Self',\n      type: 'Poison'\n    }\n  ],\n  [\n    'aciddownpour',\n    {\n      accuracy: 100,\n      aliases: ['zpoison'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'poisoniumz',\n      name: 'Acid Downpour',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'acidspray',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 100% chance to lower the target's Special Defense by 2 stages.\",\n      maxMovePower: 70,\n      name: 'Acid Spray',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Sp. Def by 2.\",\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'acrobatics',\n    {\n      accuracy: 100,\n      basePower: '55',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Power doubles if the user has no held item.',\n      maxMovePower: 110,\n      name: 'Acrobatics',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Power doubles if the user has no held item.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'acupressure',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: 'Raises a random stat by 2 stages as long as the stat is not already at stage 6. The user can choose to use this move on itself or an adjacent ally. Fails if no stat stage can be raised or if used on an ally with a substitute.',\n      name: 'Acupressure',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Raises a random stat of the user or an ally by 2.',\n      target: 'Adjacent Ally or Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'aerialace',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'This move does not check accuracy.',\n      maxMovePower: 110,\n      name: 'Aerial Ace',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'aeroblast',\n    {\n      accuracy: 95,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 130,\n      name: 'Aeroblast',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'afteryou',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'The target makes its move immediately after the user this turn, no matter the priority of its selected move. Fails if the target would have moved next anyway, or if the target already moved this turn.',\n      name: 'After You',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'The target makes its move right after the user.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'agility',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Raises the user's Speed by 2 stages.\",\n      name: 'Agility',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"Raises the user's Speed by 2.\",\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'aircutter',\n    {\n      accuracy: 95,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 110,\n      name: 'Air Cutter',\n      pp: 25,\n      priority: 0,\n      shortDesc: 'High critical hit ratio. Hits adjacent foes.',\n      target: 'Adjacent Foes',\n      type: 'Flying'\n    }\n  ],\n  [\n    'airslash',\n    {\n      accuracy: 95,\n      basePower: '75',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to make the target flinch.',\n      maxMovePower: 130,\n      name: 'Air Slash',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'alloutpummeling',\n    {\n      accuracy: 100,\n      aliases: ['zfighting'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'fightiniumz',\n      name: 'All-Out Pummeling',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'alluringvoice',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: 'Has a 100% chance to confuse the target if it had a stat stage raised this turn.',\n      name: 'Alluring Voice',\n      pp: 10,\n      priority: 0,\n      shortDesc: '100% confuse target that had a stat rise this turn.',\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'allyswitch',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user swaps positions with its ally. Fails if the user is the only Pokémon on its side. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails or if the user's last move used is not Ally Switch.\",\n      name: 'Ally Switch',\n      pp: 15,\n      priority: 2,\n      shortDesc: 'User and ally swap positions; using again can fail.',\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'amnesia',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Raises the user's Special Defense by 2 stages.\",\n      name: 'Amnesia',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Sp. Def by 2.\",\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'anchorshot',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Anchor Shot',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Prevents the target from switching out.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'ancientpower',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Has a 10% chance to raise the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage.\",\n      maxMovePower: 110,\n      name: 'Ancient Power',\n      pp: 5,\n      priority: 0,\n      shortDesc: '10% chance to raise all stats by 1 (not acc/eva).',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'appleacid',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: \"Has a 100% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Apple Acid',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'aquacutter',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      name: 'Aqua Cutter',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'aquajet',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Aqua Jet',\n      pp: 20,\n      priority: 1,\n      shortDesc: 'Usually goes first.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'aquaring',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'The user has 1/16 of its maximum HP, rounded down, restored at the end of each turn while it remains active. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down. If the user uses Baton Pass, the replacement will receive the healing effect.',\n      name: 'Aqua Ring',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'User recovers 1/16 max HP per turn.',\n      target: 'Self',\n      type: 'Water'\n    }\n  ],\n  [\n    'aquastep',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n      name: 'Aqua Step',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to raise the user's Speed by 1.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'aquatail',\n    {\n      accuracy: 90,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Aqua Tail',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'armorcannon',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Special',\n      desc: \"Lowers the user's Defense and Special Defense by 1 stage.\",\n      name: 'Armor Cannon',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Defense and Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'armthrust',\n    {\n      accuracy: 100,\n      basePower: '15',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 70,\n      name: 'Arm Thrust',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'aromatherapy',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Sap Sipper Ability are not cured, unless they are the user.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Aromatherapy',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Cures the user's party of all status conditions.\",\n      target: \"Ally's Side\",\n      type: 'Grass'\n    }\n  ],\n  [\n    'aromaticmist',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the target's Special Defense by 1 stage. Fails if there is no ally adjacent to the user.\",\n      name: 'Aromatic Mist',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises an ally's Sp. Def by 1.\",\n      target: 'Adjacent Ally',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'assist',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"A random move among those known by the user's party members is selected for use. Does not select Assist, Baneful Bunker, Beak Blast, Belch, Bestow, Blazing Torque, Bounce, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dig, Dive, Dragon Tail, Endure, Feint, Fly, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Coat, Mirror Move, Nature Power, Noxious Torque, Phantom Force, Protect, Rage Powder, Roar, Shadow Force, Shell Trap, Sketch, Sky Drop, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Assist',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Uses a random move known by a team member.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'assurance',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Power doubles if the target has already taken damage this turn, other than direct damage from Belly Drum, confusion, Curse, or Pain Split.',\n      maxMovePower: 110,\n      name: 'Assurance',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Power doubles if target was damaged this turn.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'astonish',\n    {\n      accuracy: 100,\n      basePower: '30',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'Has a 30% chance to make the target flinch.',\n      maxMovePower: 90,\n      name: 'Astonish',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'astralbarrage',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Special',\n      desc: 'No additional effect.',\n      name: 'Astral Barrage',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent foes.',\n      target: 'Adjacent Foes',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'attackorder',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 130,\n      name: 'Attack Order',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'attract',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.',\n      name: 'Attract',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'A target of the opposite gender gets infatuated.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'aurasphere',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'This move does not check accuracy.',\n      maxMovePower: 90,\n      name: 'Aura Sphere',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Any',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'aurawheel',\n    {\n      accuracy: 100,\n      basePower: '110',\n      category: 'Physical',\n      desc: \"Has a 100% chance to raise the user's Speed by 1 stage. If the user is a Morpeko in Full Belly Mode, this move is Electric type. If the user is a Morpeko in Hangry Mode, this move is Dark type. This move cannot be used successfully unless the user's current form, while considering Transform, is Full Belly or Hangry Mode Morpeko.\",\n      maxMovePower: 140,\n      name: 'Aura Wheel',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Morpeko: Electric; Hangry: Dark; 100% +1 Spe.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'aurorabeam',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 10% chance to lower the target's Attack by 1 stage.\",\n      maxMovePower: 120,\n      name: 'Aurora Beam',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Attack by 1.\",\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'auroraveil',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"For 5 turns, the user and its party members take 0.5x damage from physical and special attacks, or 0.66x damage if in a Double Battle; does not reduce damage further with Reflect or Light Screen. Critical hits ignore this protection. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Brick Break and Psychic Fangs remove the effect before damage is calculated. Lasts for 8 turns if the user is holding Light Clay. Fails unless the weather is Snow.\",\n      name: 'Aurora Veil',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'For 5 turns, damage to allies halved. Snow only.',\n      target: \"Ally's Side\",\n      type: 'Ice'\n    }\n  ],\n  [\n    'autotomize',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the user's Speed by 2 stages. If the user's Speed was changed, the user's weight is reduced by 100 kg as long as it remains active. This effect is stackable but cannot reduce the user's weight to less than 0.1 kg.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Autotomize',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Raises the user's Speed by 2; user loses 100 kg.\",\n      target: 'Self',\n      type: 'Steel'\n    }\n  ],\n  [\n    'avalanche',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'Power doubles if the user was hit by the target this turn.',\n      maxMovePower: 110,\n      name: 'Avalanche',\n      pp: 10,\n      priority: -4,\n      shortDesc: 'Power doubles if user is damaged by the target.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'axekick',\n    {\n      accuracy: 90,\n      basePower: '120',\n      category: 'Physical',\n      desc: 'Has a 30% chance to confuse the target. If this attack is not successful, the user loses half of its maximum HP, rounded down, as crash damage. Pokémon with the Magic Guard Ability are unaffected by crash damage.',\n      name: 'Axe Kick',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% confusion. User loses 50% max HP if miss.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'babydolleyes',\n    {\n      accuracy: 100,\n      aliases: ['bde'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Attack by 1 stage.\",\n      name: 'Baby-Doll Eyes',\n      pp: 30,\n      priority: 1,\n      shortDesc: \"Lowers the target's Attack by 1.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'baddybad',\n    {\n      accuracy: 95,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'This move summons Reflect for 5 turns upon use.',\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Baddy Bad',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Summons Reflect.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'banefulbunker',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"The user is protected from most attacks made by other Pokémon during this turn, and Pokémon making contact with the user become poisoned. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      name: 'Baneful Bunker',\n      pp: 10,\n      priority: 4,\n      shortDesc: 'Protects from moves. Contact: poison.',\n      target: 'Self',\n      type: 'Poison'\n    }\n  ],\n  [\n    'barbbarrage',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      desc: 'Has a 50% chance to poison the target. Power doubles if the target is already poisoned.',\n      name: 'Barb Barrage',\n      pp: 10,\n      priority: 0,\n      shortDesc: '50% psn. 2x power if target already poisoned.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'barrage',\n    {\n      accuracy: 85,\n      basePower: '15',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Barrage',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'barrier',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Raises the user's Defense by 2 stages.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Barrier',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense by 2.\",\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'batonpass',\n    {\n      accuracy: 100,\n      aliases: ['bp', 'bpass'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n      name: 'Baton Pass',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'User switches, passing stat changes and more.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'beakblast',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If the user is hit by a contact move this turn before it can execute this move, the attacker is burned.',\n      maxMovePower: 130,\n      name: 'Beak Blast',\n      pp: 15,\n      priority: -3,\n      shortDesc: 'Burns on contact with the user before it moves.',\n      target: 'Normal',\n      type: 'Flying'\n    }\n  ],\n  [\n    'beatup',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"Hits one time for the user and one time for each unfainted Pokémon without a non-volatile status condition in the user's party. The power of each hit is equal to 5+(X/10), where X is each participating Pokémon's base Attack; each hit is considered to come from the user.\",\n      maxMovePower: 100,\n      name: 'Beat Up',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'All healthy allies aid in damaging the target.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'behemothbash',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      maxMovePower: 130,\n      name: 'Behemoth Bash',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'behemothblade',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      maxMovePower: 130,\n      name: 'Behemoth Blade',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'belch',\n    {\n      accuracy: 90,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'This move cannot be selected until the user eats a Berry, either by eating one that was held, stealing and eating one off another Pokémon with Bug Bite or Pluck, or eating one that was thrown at it with Fling. Once the condition is met, this move can be selected and used for the rest of the battle even if the user gains or uses another item or switches out. Consuming a Berry with Natural Gift does not count for the purposes of eating one.',\n      maxMovePower: 95,\n      name: 'Belch',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Cannot be selected until the user eats a Berry.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'bellydrum',\n    {\n      accuracy: 100,\n      aliases: ['bd'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Raises the user's Attack by 12 stages in exchange for the user losing 1/2 of its maximum HP, rounded down. Fails if the user would faint or if its Attack stat stage is 6.\",\n      name: 'Belly Drum',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User loses 50% max HP. Maximizes Attack.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'bestow',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"The target receives the user's held item. Fails if the user has no item or is holding a Mail or Z-Crystal, if the target is already holding an item, if the user is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, a Pokémon that can Mega Evolve holding the Mega Stone for its species, or if the target is one of those Pokémon and the user is holding the respective item.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Bestow',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'User passes its held item to the target.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'bide',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Bide',\n      pp: 10,\n      priority: 1,\n      shortDesc: 'Waits 2 turns; deals double the damage taken.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'bind',\n    {\n      accuracy: 85,\n      basePower: '15',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      maxMovePower: 90,\n      name: 'Bind',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'bite',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to make the target flinch.',\n      maxMovePower: 110,\n      name: 'Bite',\n      pp: 25,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'bitterblade',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      name: 'Bitter Blade',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User recovers 50% of the damage dealt.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'bittermalice',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Special',\n      desc: \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n      name: 'Bitter Malice',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Attack by 1.\",\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'blackholeeclipse',\n    {\n      accuracy: 100,\n      aliases: ['zdark'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'darkiniumz',\n      name: 'Black Hole Eclipse',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'blastburn',\n    {\n      accuracy: 90,\n      basePower: '150',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      maxMovePower: 150,\n      name: 'Blast Burn',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'blazekick',\n    {\n      accuracy: 90,\n      basePower: '85',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to burn the target and a higher chance for a critical hit.',\n      maxMovePower: 130,\n      name: 'Blaze Kick',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'High critical hit ratio. 10% chance to burn.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'blazingtorque',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: 'Has a 30% chance to burn the target.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Blazing Torque',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to burn the target.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'bleakwindstorm',\n    {\n      accuracy: 80,\n      basePower: '100',\n      category: 'Special',\n      desc: \"Has a 30% chance to lower the target's Speed by 1 stage. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 80%.\",\n      name: 'Bleakwind Storm',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"30% to lower foe(s) Speed by 1. Rain: can't miss.\",\n      target: 'Adjacent Foes',\n      type: 'Flying'\n    }\n  ],\n  [\n    'blizzard',\n    {\n      accuracy: 70,\n      basePower: '110',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.',\n      maxMovePower: 140,\n      name: 'Blizzard',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"10% chance to freeze foe(s). Can't miss in Snow.\",\n      target: 'Adjacent Foes',\n      type: 'Ice'\n    }\n  ],\n  [\n    'block',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field.',\n      name: 'Block',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Prevents the target from switching out.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'bloodmoon',\n    {\n      accuracy: 100,\n      basePower: '140',\n      category: 'Special',\n      name: 'Blood Moon',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Cannot be selected the turn after it's used.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'bloomdoom',\n    {\n      accuracy: 100,\n      aliases: ['zgrass'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'grassiumz',\n      name: 'Bloom Doom',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'blueflare',\n    {\n      accuracy: 85,\n      basePower: '130',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 20% chance to burn the target.',\n      maxMovePower: 140,\n      name: 'Blue Flare',\n      pp: 5,\n      priority: 0,\n      shortDesc: '20% chance to burn the target.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'bodypress',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: \"Damage is calculated using the user's Defense stat as its Attack, including stat stage changes. Other effects that modify the Attack stat are used as normal.\",\n      maxMovePower: 90,\n      name: 'Body Press',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Uses user's Def stat as Atk in damage calculation.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'bodyslam',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.',\n      maxMovePower: 130,\n      name: 'Body Slam',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'boltbeak',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Physical',\n      desc: 'Power doubles if the user moves before the target.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Bolt Beak',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Power doubles if user moves before the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'boltstrike',\n    {\n      accuracy: 85,\n      basePower: '130',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'Has a 20% chance to paralyze the target.',\n      maxMovePower: 140,\n      name: 'Bolt Strike',\n      pp: 5,\n      priority: 0,\n      shortDesc: '20% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'boneclub',\n    {\n      accuracy: 85,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 10% chance to make the target flinch.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Bone Club',\n      pp: 20,\n      priority: 0,\n      shortDesc: '10% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'bonemerang',\n    {\n      accuracy: 90,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Bonemerang',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 2 times in one turn.',\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'bonerush',\n    {\n      accuracy: 90,\n      basePower: '25',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 130,\n      name: 'Bone Rush',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'boomburst',\n    {\n      accuracy: 100,\n      basePower: '140',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 140,\n      name: 'Boomburst',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent Pokémon.',\n      target: 'All Adjacent',\n      type: 'Normal'\n    }\n  ],\n  [\n    'bounce',\n    {\n      accuracy: 85,\n      basePower: '85',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'Has a 30% chance to paralyze the target. This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.',\n      maxMovePower: 130,\n      name: 'Bounce',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Bounces turn 1. Hits turn 2. 30% paralyze.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'bouncybubble',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Bouncy Bubble',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'User recovers 50% of the damage dealt.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'branchpoke',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Branch Poke',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'bravebird',\n    {\n      accuracy: 100,\n      aliases: ['bb'],\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.',\n      maxMovePower: 140,\n      name: 'Brave Bird',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Has 33% recoil.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'breakingswipe',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      desc: \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n      maxMovePower: 110,\n      name: 'Breaking Swipe',\n      pp: 15,\n      priority: 0,\n      shortDesc: '100% chance to lower the foe(s) Attack by 1.',\n      target: 'Adjacent Foes',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'breakneckblitz',\n    {\n      accuracy: 100,\n      aliases: ['znormal'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'normaliumz',\n      name: 'Breakneck Blitz',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'brickbreak',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n      maxMovePower: 90,\n      name: 'Brick Break',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Destroys screens, unless the target is immune.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'brine',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Power doubles if the target has less than or equal to half of its maximum HP remaining.',\n      maxMovePower: 120,\n      name: 'Brine',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Power doubles if the target's HP is 50% or less.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'brutalswing',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 110,\n      name: 'Brutal Swing',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent Pokémon.',\n      target: 'All Adjacent',\n      type: 'Dark'\n    }\n  ],\n  [\n    'bubble',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: \"Has a 10% chance to lower the target's Speed by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Bubble',\n      pp: 30,\n      priority: 0,\n      shortDesc: '10% chance to lower the foe(s) Speed by 1.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'bubblebeam',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 10% chance to lower the target's Speed by 1 stage.\",\n      maxMovePower: 120,\n      name: 'Bubble Beam',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Speed by 1.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'bugbite',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n      maxMovePower: 110,\n      name: 'Bug Bite',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"User steals and eats the target's Berry.\",\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'bugbuzz',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Bug Buzz',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'bulkup',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Raises the user's Attack and Defense by 1 stage.\",\n      name: 'Bulk Up',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Attack and Defense by 1.\",\n      target: 'Self',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'bulldoze',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n      maxMovePower: 110,\n      name: 'Bulldoze',\n      pp: 20,\n      priority: 0,\n      shortDesc: '100% chance lower adjacent Pkmn Speed by 1.',\n      target: 'All Adjacent',\n      type: 'Ground'\n    }\n  ],\n  [\n    'bulletpunch',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Bullet Punch',\n      pp: 30,\n      priority: 1,\n      shortDesc: 'Usually goes first.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'bulletseed',\n    {\n      accuracy: 100,\n      basePower: '25',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 130,\n      name: 'Bullet Seed',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'burningbulwark',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"The user is protected from most attacks made by other Pokémon during this turn, and Pokémon trying to make contact with the user become burned. Non-damaging moves go through this protection. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      name: 'Burning Bulwark',\n      pp: 10,\n      priority: 4,\n      shortDesc: 'Protects from damaging attacks. Contact: burn.',\n      target: 'Self',\n      type: 'Fire'\n    }\n  ],\n  [\n    'burningjealousy',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Has a 100% chance to burn the target if it had a stat stage raised this turn.',\n      name: 'Burning Jealousy',\n      pp: 5,\n      priority: 0,\n      shortDesc: '100% burns a target that had a stat rise this turn.',\n      target: 'Adjacent Foes',\n      type: 'Fire'\n    }\n  ],\n  [\n    'burnup',\n    {\n      accuracy: 100,\n      basePower: '130',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Fails unless the user is a Fire type. If this move is successful and the user is not Terastallized, the user's Fire type becomes typeless as long as it remains active.\",\n      isNonstandard: IsNonStandard.Unobtainable,\n      maxMovePower: 140,\n      name: 'Burn Up',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"User's Fire type becomes typeless; must be Fire.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'buzzybuzz',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'Has a 100% chance to paralyze the foe.',\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Buzzy Buzz',\n      pp: 20,\n      priority: 0,\n      shortDesc: '100% chance to paralyze the foe.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'calmmind',\n    {\n      accuracy: 100,\n      aliases: ['cm'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n      name: 'Calm Mind',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'camouflage',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user's type changes based on the battle terrain. Normal type on the regular Wi-Fi terrain, Electric type during Electric Terrain, Fairy type during Misty Terrain, Grass type during Grassy Terrain, and Psychic type during Psychic Terrain. Fails if the user's type cannot be changed or if the user is already purely that type.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Camouflage',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Changes user's type by terrain (default Normal).\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'captivate',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Captivate',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Lowers the foe(s) Sp. Atk by 2 if opposite gender.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'catastropika',\n    {\n      accuracy: 100,\n      aliases: ['zpikachu', 'zvolttackle'],\n      basePower: '210',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'pikaniumz',\n      name: 'Catastropika',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'ceaselessedge',\n    {\n      accuracy: 90,\n      basePower: '65',\n      category: 'Physical',\n      desc: 'If this move is successful, it sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. A maximum of three layers may be set, and opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.',\n      name: 'Ceaseless Edge',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Sets a layer of Spikes on the opposing side.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'celebrate',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'It is your birthday.',\n      name: 'Celebrate',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'No competitive use.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'charge',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Raises the user's Special Defense by 1 stage. The user's next Electric-type attack will have its power doubled; the effect ends when the user is no longer active, or after the user attempts to use any Electric-type move besides Charge, even if it is not successful.\",\n      name: 'Charge',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"+1 SpD, user's next Electric move 2x power.\",\n      target: 'Self',\n      type: 'Electric'\n    }\n  ],\n  [\n    'chargebeam',\n    {\n      accuracy: 90,\n      basePower: '50',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 70% chance to raise the user's Special Attack by 1 stage.\",\n      maxMovePower: 100,\n      name: 'Charge Beam',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"70% chance to raise the user's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'charm',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Attack by 2 stages.\",\n      name: 'Charm',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers the target's Attack by 2.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'chatter',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: 'Has a 100% chance to confuse the target.',\n      isFieldMove:\n        \"It can be used to record and temporarily alter the battle cry of a Chatot. It does not function correctly with other Pokémon. The recorded audio is reset to Chatot's default cry when it is deposited into a box.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 120,\n      name: 'Chatter',\n      pp: 20,\n      priority: 0,\n      shortDesc: '100% chance to confuse the target.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'chillingwater',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n      name: 'Chilling Water',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Attack by 1.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'chillyreception',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: 'For 5 turns, the weather becomes Snow. The user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members.',\n      name: 'Chilly Reception',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Starts Snow. User switches out.',\n      target: 'All',\n      type: 'Ice'\n    }\n  ],\n  [\n    'chipaway',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Ignores the target's stat stage changes, including evasiveness.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Chip Away',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Ignores the target's stat stage changes.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'chloroblast',\n    {\n      accuracy: 95,\n      basePower: '150',\n      category: 'Special',\n      desc: 'If this move is successful, the user loses 1/2 of its maximum HP, rounded up, unless the user has the Magic Guard or Rock Head Abilities.',\n      name: 'Chloroblast',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User loses 50% max HP.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'circlethrow',\n    {\n      accuracy: 90,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target is under the effect of Ingrain, has the Suction Cups Ability, or this move hit a substitute.',\n      maxMovePower: 80,\n      name: 'Circle Throw',\n      pp: 10,\n      priority: -6,\n      shortDesc: 'Forces the target to switch to a random ally.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'clamp',\n    {\n      accuracy: 85,\n      basePower: '35',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Clamp',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'clangingscales',\n    {\n      accuracy: 100,\n      basePower: '110',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Lowers the user's Defense by 1 stage.\",\n      maxMovePower: 140,\n      name: 'Clanging Scales',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Defense by 1.\",\n      target: 'Adjacent Foes',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'clangoroussoul',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage in exchange for the user losing 33% of its maximum HP, rounded down. Fails if the user would faint or if its Attack, Defense, Special Attack, Special Defense, and Speed stat stages would not change.\",\n      name: 'Clangorous Soul',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User loses 33% of its max HP. +1 to all stats.',\n      target: 'Self',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'clangoroussoulblaze',\n    {\n      accuracy: 100,\n      aliases: ['clangorous', 'cs', 'zclangingscales', 'zkommoo'],\n      basePower: '185',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"Raises the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'kommoniumz',\n      name: 'Clangorous Soulblaze',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Raises the user's Atk/Def/SpAtk/SpDef/Spe by 1.\",\n      target: 'Adjacent Foes',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'clearsmog',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Resets all of the target's stat stages to 0.\",\n      maxMovePower: 75,\n      name: 'Clear Smog',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Resets all of the target's stat stages to 0.\",\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'closecombat',\n    {\n      accuracy: 100,\n      aliases: ['cc'],\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Lowers the user's Defense and Special Defense by 1 stage.\",\n      maxMovePower: 95,\n      name: 'Close Combat',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Defense and Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'coaching',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the target's Attack and Defense by 1 stage. Fails if there is no ally adjacent to the user.\",\n      name: 'Coaching',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Raises an ally's Attack and Defense by 1.\",\n      target: 'Adjacent Ally',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'coil',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Raises the user's Attack, Defense, and accuracy by 1 stage.\",\n      name: 'Coil',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises user's Attack, Defense, accuracy by 1.\",\n      target: 'Self',\n      type: 'Poison'\n    }\n  ],\n  [\n    'collisioncourse',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Damage is multiplied by 1.3333 if this move is super effective against the target.',\n      name: 'Collision Course',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Deals 1.3333x damage with supereffective hits.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'combattorque',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      desc: 'Has a 30% chance to paralyze the target.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Combat Torque',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'cometpunch',\n    {\n      accuracy: 85,\n      basePower: '18',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Comet Punch',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'comeuppance',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Deals damage to the last opposing Pokémon to hit the user with a physical or special attack this turn equal to 1.5 times the HP lost by the user from that attack, rounded down. If the user did not lose HP from that attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical or special attack this turn.\",\n      name: 'Comeuppance',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'If hit by an attack, returns 1.5x damage.',\n      target: 'Self',\n      type: 'Dark'\n    }\n  ],\n  [\n    'confide',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Special Attack by 1 stage.\",\n      name: 'Confide',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers the target's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'confuseray',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Causes the target to become confused.',\n      name: 'Confuse Ray',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Confuses the target.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'confusion',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'Has a 10% chance to confuse the target.',\n      maxMovePower: 100,\n      name: 'Confusion',\n      pp: 25,\n      priority: 0,\n      shortDesc: '10% chance to confuse the target.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'constrict',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Has a 10% chance to lower the target's Speed by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Constrict',\n      pp: 35,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Speed by 1.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'continentalcrush',\n    {\n      accuracy: 100,\n      aliases: ['zrock'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'rockiumz',\n      name: 'Continental Crush',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'conversion',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"The user's type changes to match the original type of the move in its first move slot. Fails if the user cannot change its type, or if the type is one of the user's current types.\",\n      name: 'Conversion',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"Changes user's type to match its first move.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'conversion2',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"The user's type changes to match a type that resists or is immune to the type of the last move used by the target, but not either of its current types. The determined type of the move is used rather than the original type. Fails if the target has not made a move, if the user cannot change its type, or if this move would only be able to select one of the user's current types.\",\n      name: 'Conversion 2',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"Changes user's type to resist target's last move.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'copycat',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n      name: 'Copycat',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Uses the last move used in the battle.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'coreenforcer',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"If the user moves after the target, the target's Ability is rendered ineffective as long as it remains active. If the target uses Baton Pass, the replacement will remain under this effect. If the target's Ability is As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Tera Shift, Zen Mode, or Zero to Hero, this effect does not happen, and receiving the effect through Baton Pass ends the effect immediately.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Core Enforcer',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Nullifies the foe(s) Ability if the foe(s) move first.',\n      target: 'Adjacent Foes',\n      type: 'Dragon',\n      zMovePower: 140\n    }\n  ],\n  [\n    'corkscrewcrash',\n    {\n      accuracy: 100,\n      aliases: ['zsteel'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'steeliumz',\n      name: 'Corkscrew Crash',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'corrosivegas',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: 'The target loses its held item. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item or cause a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, a Silvally, a Zacian, or a Zamazenta to lose their Blue Orb, Red Orb, Griseous Orb, Plate, Drive, Memory, Rusted Sword, or Rusted Shield respectively. Items lost to this move cannot be regained with Recycle or the Harvest Ability.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Corrosive Gas',\n      pp: 40,\n      priority: 0,\n      shortDesc: \"Removes adjacent Pokémon's held items.\",\n      target: 'All Adjacent',\n      type: 'Poison'\n    }\n  ],\n  [\n    'cosmicpower',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the user's Defense and Special Defense by 1 stage.\",\n      name: 'Cosmic Power',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense and Sp. Def by 1.\",\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'cottonguard',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Raises the user's Defense by 3 stages.\",\n      name: 'Cotton Guard',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense by 3.\",\n      target: 'Self',\n      type: 'Grass'\n    }\n  ],\n  [\n    'cottonspore',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Lowers the target's Speed by 2 stages.\",\n      name: 'Cotton Spore',\n      pp: 40,\n      priority: 0,\n      shortDesc: \"Lowers the target's Speed by 2.\",\n      target: 'Adjacent Foes',\n      type: 'Grass'\n    }\n  ],\n  [\n    'counter',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Deals damage to the last opposing Pokémon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical attack this turn.\",\n      maxMovePower: 75,\n      name: 'Counter',\n      pp: 20,\n      priority: -5,\n      shortDesc: 'If hit by physical attack, returns double damage.',\n      target: 'Foe that last hit user',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'courtchange',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Switches the Mist, Light Screen, Reflect, Spikes, Safeguard, Tailwind, Toxic Spikes, Stealth Rock, Water Pledge, Fire Pledge, Grass Pledge, Sticky Web, Aurora Veil, G-Max Steelsurge, G-Max Cannonade, G-Max Vine Lash, and G-Max Wildfire effects from the user's side to the opposing side and vice versa.\",\n      name: 'Court Change',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Swaps user's field effects with the opposing side.\",\n      target: 'All',\n      type: 'Normal'\n    }\n  ],\n  [\n    'covet',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n      maxMovePower: 110,\n      name: 'Covet',\n      pp: 25,\n      priority: 0,\n      shortDesc: \"If the user has no item, it steals the target's.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'crabhammer',\n    {\n      accuracy: 90,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 130,\n      name: 'Crabhammer',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'craftyshield',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user and its party members are protected from non-damaging attacks made by other Pokémon, including allies, during this turn. Fails if the user moves last this turn or if this move is already in effect for the user's side.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Crafty Shield',\n      pp: 10,\n      priority: 3,\n      shortDesc: 'Protects allies from Status moves this turn.',\n      target: \"Ally's Side\",\n      type: 'Fairy'\n    }\n  ],\n  [\n    'crosschop',\n    {\n      accuracy: 80,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 90,\n      name: 'Cross Chop',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'crosspoison',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to poison the target and a higher chance for a critical hit.',\n      maxMovePower: 85,\n      name: 'Cross Poison',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'High critical hit ratio. 10% chance to poison.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'crunch',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Crunch',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"20% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'crushclaw',\n    {\n      accuracy: 95,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Crush Claw',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"50% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'crushgrip',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Power is equal to 120 * (target's current HP / target's maximum HP), rounded half down, but not less than 1.\",\n      maxMovePower: 140,\n      name: 'Crush Grip',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'More power the more HP the target has left.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'curse',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n      name: 'Curse',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.',\n      target: 'Random',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'cut',\n    {\n      accuracy: 95,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      isFieldMove:\n        'The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      maxMovePower: 100,\n      name: 'Cut',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'darkestlariat',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Ignores the target's stat stage changes, including evasiveness.\",\n      maxMovePower: 130,\n      name: 'Darkest Lariat',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Ignores the target's stat stage changes.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'darkpulse',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 20% chance to make the target flinch.',\n      maxMovePower: 130,\n      name: 'Dark Pulse',\n      pp: 15,\n      priority: 0,\n      shortDesc: '20% chance to make the target flinch.',\n      target: 'Any',\n      type: 'Dark'\n    }\n  ],\n  [\n    'darkvoid',\n    {\n      accuracy: 50,\n      aliases: ['dv'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Causes the target to fall asleep. This move cannot be used successfully unless the user's current form, while considering Transform, is Darkrai.\",\n      name: 'Dark Void',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Darkrai: Causes the foe(s) to fall asleep.',\n      target: 'Adjacent Foes',\n      type: 'Dark'\n    }\n  ],\n  [\n    'dazzlinggleam',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Dazzling Gleam',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent foes.',\n      target: 'Adjacent Foes',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'decorate',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the target's Attack and Special Attack by 2 stages.\",\n      name: 'Decorate',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Raises the target's Attack and Sp. Atk by 2.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'defendorder',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Raises the user's Defense and Special Defense by 1 stage.\",\n      name: 'Defend Order',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense and Sp. Def by 1.\",\n      target: 'Self',\n      type: 'Bug'\n    }\n  ],\n  [\n    'defensecurl',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Raises the user's Defense by 1 stage. As long as the user remains active, the power of the user's Ice Ball and Rollout will be doubled (this effect is not stackable).\",\n      name: 'Defense Curl',\n      pp: 40,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense by 1.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'defog',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Lowers the target's evasiveness by 1 stage. If this move is successful and whether or not the target's evasiveness was affected, the effects of Reflect, Light Screen, Aurora Veil, Safeguard, Mist, Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the target's side, and the effects of Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the user's side. Ignores a target's substitute, although a substitute will still block the lowering of evasiveness. If there is a terrain active and this move is successful, the terrain will be cleared.\",\n      isFieldMove:\n        'The Pokémon can clear out fog on the field. Defog can be taught to a Pokémon by using HM05 in Diamond, Pearl, and Platinum. Since Generation V, it has lost its HM status.',\n      name: 'Defog',\n      pp: 15,\n      priority: 0,\n      shortDesc: '-1 evasion; ends user and target hazards/terrain.',\n      target: 'Normal',\n      type: 'Flying'\n    }\n  ],\n  [\n    'destinybond',\n    {\n      accuracy: 100,\n      aliases: ['dbond'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Until the user's next move, if an opposing Pokémon's attack knocks the user out, that Pokémon faints as well, unless the attack was Doom Desire or Future Sight. Fails if the user used this move successfully as its last move, disregarding moves used through the Dancer Ability.\",\n      name: 'Destiny Bond',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'If an opponent knocks out the user, it also faints.',\n      target: 'Self',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'detect',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      name: 'Detect',\n      pp: 5,\n      priority: 4,\n      shortDesc: 'Prevents moves from affecting the user this turn.',\n      target: 'Self',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'devastatingdrake',\n    {\n      accuracy: 100,\n      aliases: ['zdragon'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'dragoniumz',\n      name: 'Devastating Drake',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'diamondstorm',\n    {\n      accuracy: 95,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: \"Has a 50% chance to raise the user's Defense by 2 stages.\",\n      maxMovePower: 130,\n      name: 'Diamond Storm',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"50% chance to raise user's Defense by 2.\",\n      target: 'Adjacent Foes',\n      type: 'Rock'\n    }\n  ],\n  [\n    'dig',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.',\n      isFieldMove:\n        'The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.',\n      maxMovePower: 130,\n      name: 'Dig',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Digs underground turn 1, strikes turn 2.',\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'direclaw',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: 'Has a 50% chance to cause the target to either fall asleep, become poisoned, or become paralyzed.',\n      name: 'Dire Claw',\n      pp: 15,\n      priority: 0,\n      shortDesc: '50% chance to sleep, poison, or paralyze target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'disable',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"For 4 turns, the target's last move used becomes disabled. Fails if one of the target's moves is already disabled, if the target has not made a move, if the target no longer knows the move, or if the move was a Max or G-Max Move.\",\n      name: 'Disable',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"For 4 turns, disables the target's last move used.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'disarmingvoice',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: 'This move does not check accuracy.',\n      maxMovePower: 90,\n      name: 'Disarming Voice',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy. Hits foes.',\n      target: 'Adjacent Foes',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'discharge',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 30% chance to paralyze the target.',\n      maxMovePower: 130,\n      name: 'Discharge',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to paralyze adjacent Pokémon.',\n      target: 'All Adjacent',\n      type: 'Electric'\n    }\n  ],\n  [\n    'dive',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Surf and Whirlpool but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.',\n      isFieldMove:\n        \"The player can dive underwater on the Pokémon's back while surfing over deep waters. It can be taught to a Pokémon by using HM08 in Ruby, Sapphire, and Emerald. Since Generation IV it has been a regular level-up move. In Generation V, it has regained HM status as HM06; in Pokémon X and Y, it again lost its HM status; in Omega Ruby and Alpha Sapphire, it again regained HM status as HM07.\",\n      maxMovePower: 130,\n      name: 'Dive',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Dives underwater turn 1, strikes turn 2.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'dizzypunch',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'Has a 20% chance to confuse the target.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Dizzy Punch',\n      pp: 10,\n      priority: 0,\n      shortDesc: '20% chance to confuse the target.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'doodle',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"The user and its ally's Abilities change to match the target's Ability. Does not change Ability if the user's or its ally's is As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Tera Shift, Zen Mode, Zero to Hero, or already matches the target. Fails if both the user and its ally's Ability already matches the target, or if the target's Ability is As One, Battle Bond, Comatose, Commander, Disguise, Embody Aspect, Flower Gift, Forecast, Hunger Switch, Ice Face, Illusion, Imposter, Multitype, Neutralizing Gas, Poison Puppeteer, Power Construct, Power of Alchemy, Protosynthesis, Quark Drive, Receiver, RKS System, Schooling, Shields Down, Stance Change, Tera Shell, Tera Shift, Teraform Zero, Trace, Wonder Guard, Zen Mode, or Zero to Hero.\",\n      name: 'Doodle',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"User and ally's Abilities become target's Ability.\",\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'doomdesire',\n    {\n      accuracy: 100,\n      basePower: '140',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Deals damage two turns after this move is used. At the end of that turn, the damage is calculated at that time and dealt to the Pokémon at the position the target had when the move was used. If the user is no longer active at the time, damage is calculated based on the user's natural Special Attack stat, types, and level, with no boosts from its held item or Ability. Fails if this move or Future Sight is already in effect for the target's position.\",\n      maxMovePower: 140,\n      name: 'Doom Desire',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Hits two turns after being used.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'doubleedge',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.',\n      maxMovePower: 140,\n      name: 'Double-Edge',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Has 33% recoil.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'doublehit',\n    {\n      accuracy: 90,\n      basePower: '35',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n      maxMovePower: 120,\n      name: 'Double Hit',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 2 times in one turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'doubleironbash',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit. Has a 30% chance to make the target flinch.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 140,\n      name: 'Double Iron Bash',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Hits twice. 30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'doublekick',\n    {\n      accuracy: 100,\n      basePower: '30',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n      maxMovePower: 80,\n      name: 'Double Kick',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Hits 2 times in one turn.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'doubleshock',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"Fails unless the user is an Electric type. If this move is successful and the user is not Terastallized, the user's Electric type becomes typeless as long as it remains active.\",\n      name: 'Double Shock',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"User's Electric type: typeless; must be Electric.\",\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'doubleslap',\n    {\n      accuracy: 85,\n      basePower: '15',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Double Slap',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'doubleteam',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Raises the user's evasiveness by 1 stage.\",\n      name: 'Double Team',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Raises the user's evasiveness by 1.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'dracometeor',\n    {\n      accuracy: 90,\n      basePower: '130',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Lowers the user's Special Attack by 2 stages.\",\n      maxMovePower: 140,\n      name: 'Draco Meteor',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Sp. Atk by 2.\",\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragonascent',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: \"Lowers the user's Defense and Special Defense by 1 stage.\",\n      maxMovePower: 140,\n      name: 'Dragon Ascent',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Defense and Sp. Def by 1.\",\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'dragonbreath',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to paralyze the target.',\n      maxMovePower: 110,\n      name: 'Dragon Breath',\n      pp: 20,\n      priority: 0,\n      shortDesc: '30% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragoncheer',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the target's chance for a critical hit by 1 stage, or by 2 stages if the target is Dragon type. Fails if there is no ally adjacent to the user, or if the target already has this effect or the Focus Energy effect. Baton Pass can be used to transfer this effect to an ally.\",\n      name: 'Dragon Cheer',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Ally: Crit ratio +1, or +2 if ally is Dragon type.',\n      target: \"Ally's Side\",\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragonclaw',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Dragon Claw',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragondance',\n    {\n      accuracy: 100,\n      aliases: ['dd'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Raises the user's Attack and Speed by 1 stage.\",\n      name: 'Dragon Dance',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Attack and Speed by 1.\",\n      target: 'Self',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragondarts',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit. In Double Battles, this move attempts to hit the targeted Pokémon and its ally once each. If hitting one of these Pokémon would be prevented by immunity, protection, semi-invulnerability, an Ability, or accuracy, it attempts to hit the other Pokémon twice instead. If this move is redirected, it hits that target twice.\",\n      maxMovePower: 130,\n      name: 'Dragon Darts',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits twice. Doubles: Tries to hit each foe once.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragonenergy',\n    {\n      accuracy: 100,\n      basePower: '150',\n      category: 'Special',\n      desc: \"Power is equal to (user's current HP * 150 / user's maximum HP), rounded down, but not less than 1.\",\n      name: 'Dragon Energy',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Less power as user's HP decreases. Hits foe(s).\",\n      target: 'Adjacent Foes',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragonhammer',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Dragon Hammer',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragonpulse',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Dragon Pulse',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Any',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragonrage',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Deals 40 HP of damage to the target.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Dragon Rage',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Deals 40 HP of damage to the target.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragonrush',\n    {\n      accuracy: 75,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.',\n      maxMovePower: 130,\n      name: 'Dragon Rush',\n      pp: 10,\n      priority: 0,\n      shortDesc: '20% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dragontail',\n    {\n      accuracy: 90,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.',\n      maxMovePower: 110,\n      name: 'Dragon Tail',\n      pp: 10,\n      priority: -6,\n      shortDesc: 'Forces the target to switch to a random ally.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'drainingkiss',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: 'The user recovers 3/4 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      maxMovePower: 100,\n      name: 'Draining Kiss',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User recovers 75% of the damage dealt.',\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'drainpunch',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      maxMovePower: 90,\n      name: 'Drain Punch',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User recovers 50% of the damage dealt.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'dreameater',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'The target is unaffected by this move unless it is asleep. The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      maxMovePower: 130,\n      name: 'Dream Eater',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'User gains 1/2 HP inflicted. Sleeping target only.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'drillpeck',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Drill Peck',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'drillrun',\n    {\n      accuracy: 95,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 130,\n      name: 'Drill Run',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'drumbeating',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Drum Beating',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Speed by 1.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'dualchop',\n    {\n      accuracy: 90,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Dual Chop',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Hits 2 times in one turn.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dualwingbeat',\n    {\n      accuracy: 90,\n      basePower: '40',\n      category: 'Physical',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n      name: 'Dual Wingbeat',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 2 times in one turn.',\n      target: 'Normal',\n      type: 'Flying'\n    }\n  ],\n  [\n    'dynamaxcannon',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      maxMovePower: 140,\n      name: 'Dynamax Cannon',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'dynamicpunch',\n    {\n      accuracy: 50,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 100% chance to confuse the target.',\n      maxMovePower: 90,\n      name: 'Dynamic Punch',\n      pp: 5,\n      priority: 0,\n      shortDesc: '100% chance to confuse the target.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'earthpower',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Earth Power',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'earthquake',\n    {\n      accuracy: 100,\n      aliases: ['eq'],\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Damage doubles if the target is using Dig.',\n      maxMovePower: 130,\n      name: 'Earthquake',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits adjacent Pokémon. Double damage on Dig.',\n      target: 'All Adjacent',\n      type: 'Ground'\n    }\n  ],\n  [\n    'echoedvoice',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n      maxMovePower: 90,\n      name: 'Echoed Voice',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Power increases when used on consecutive turns.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'eerieimpulse',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Lowers the target's Special Attack by 2 stages.\",\n      name: 'Eerie Impulse',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Lowers the target's Sp. Atk by 2.\",\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'eeriespell',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: 'If this move is successful and the user has not fainted, the target loses 3 PP from its last move.',\n      name: 'Eerie Spell',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Removes 3 PP from the target's last move.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'eggbomb',\n    {\n      accuracy: 75,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'No additional effect.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Egg Bomb',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'electricterrain',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'For 5 turns, the terrain becomes Electric Terrain. During the effect, the power of Electric-type attacks made by grounded Pokémon is multiplied by 1.3 and grounded Pokémon cannot fall asleep; Pokémon already asleep do not wake up. Grounded Pokémon cannot become affected by Yawn or fall asleep from its effect. Camouflage transforms the user into an Electric type, Nature Power becomes Thunderbolt, and Secret Power has a 30% chance to cause paralysis. Fails if the current terrain is Electric Terrain.',\n      name: 'Electric Terrain',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"5 turns. Grounded: +Electric power, can't sleep.\",\n      target: 'All',\n      type: 'Electric'\n    }\n  ],\n  [\n    'electrify',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Causes the target's move to become Electric type this turn. Among effects that can change a move's type, this effect happens last. Fails if the target already moved this turn.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Electrify',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Changes the target's move to Electric this turn.\",\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'electroball',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"The power of this move depends on (user's current Speed / target's current Speed), rounded down. Power is equal to 150 if the result is 4 or more, 120 if 3, 80 if 2, 60 if 1, 40 if less than 1. If the target's current Speed is 0, this move's power is 40.\",\n      maxMovePower: 130,\n      name: 'Electro Ball',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'More power the faster the user is than the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'electrodrift',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Damage is multiplied by 1.3333 if this move is super effective against the target.',\n      name: 'Electro Drift',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Deals 1.3333x damage with supereffective hits.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'electroshot',\n    {\n      accuracy: 100,\n      basePower: '130',\n      category: 'Special',\n      desc: \"This attack charges on the first turn and executes on the second. Raises the user's Special Attack by 1 stage on the first turn. If the user is holding a Power Herb or the weather is Primordial Sea or Rain Dance, the move completes in one turn. If the user is holding Utility Umbrella and the weather is Primordial Sea or Rain Dance, the move still requires a turn to charge.\",\n      name: 'Electro Shot',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Raises Sp. Atk by 1, hits turn 2. Rain: no charge.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'electroweb',\n    {\n      accuracy: 95,\n      basePower: '55',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n      maxMovePower: 110,\n      name: 'Electroweb',\n      pp: 15,\n      priority: 0,\n      shortDesc: '100% chance to lower the foe(s) Speed by 1.',\n      target: 'Adjacent Foes',\n      type: 'Electric'\n    }\n  ],\n  [\n    'embargo',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"For 5 turns, the target's held item has no effect. An item's effect of causing forme changes is unaffected, but any other effects from such items are negated. During the effect, Fling and Natural Gift are prevented from being used by the target. Items thrown at the target with Fling will still activate for it. If the target uses Baton Pass, the replacement will remain unable to use items.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Embargo',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"For 5 turns, the target's item has no effect.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'ember',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: 'Has a 10% chance to burn the target.',\n      maxMovePower: 90,\n      name: 'Ember',\n      pp: 25,\n      priority: 0,\n      shortDesc: '10% chance to burn the target.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'encore',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'For its next 3 turns, the target is forced to repeat its last move used. If the affected move runs out of PP, the effect ends. Fails if the target is already under this effect, if it has not made a move, if the move has 0 PP, or if the move is Assist, Blazing Torque, Combat Torque, Copycat, Dynamax Cannon, Encore, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Transform, or Wicked Torque.',\n      name: 'Encore',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Target repeats its last move for its next 3 turns.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'endeavor',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Deals damage to the target equal to (target's current HP - user's current HP). The target is unaffected if its current HP is less than or equal to the user's current HP.\",\n      maxMovePower: 130,\n      name: 'Endeavor',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the target's HP to the user's HP.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'endure',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      name: 'Endure',\n      pp: 10,\n      priority: 4,\n      shortDesc: 'User survives attacks this turn with at least 1 HP.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'energyball',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Energy Ball',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'entrainment',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Causes the target's Ability to become the same as the user's. Fails if the target's Ability is As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Tera Shift, Truant, Zen Mode, or Zero to Hero, or the same Ability as the user, or if the user's Ability is As One, Battle Bond, Comatose, Commander, Disguise, Embody Aspect, Flower Gift, Forecast, Hunger Switch, Ice Face, Illusion, Imposter, Multitype, Neutralizing Gas, Poison Puppeteer, Power Construct, Power of Alchemy, Protosynthesis, Quark Drive, Receiver, RKS System, Schooling, Shields Down, Stance Change, Tera Shell, Tera Shift, Teraform Zero, Trace, Wonder Guard, Zen Mode, or Zero to Hero.\",\n      name: 'Entrainment',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"The target's Ability changes to match the user's.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'eruption',\n    {\n      accuracy: 100,\n      basePower: '150',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Power is equal to (user's current HP * 150 / user's maximum HP), rounded down, but not less than 1.\",\n      maxMovePower: 150,\n      name: 'Eruption',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Less power as user's HP decreases. Hits foe(s).\",\n      target: 'Adjacent Foes',\n      type: 'Fire'\n    }\n  ],\n  [\n    'esperwing',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: \"Has a 100% chance to raise the user's Speed by 1 stage and a higher chance for a critical hit.\",\n      name: 'Esper Wing',\n      pp: 10,\n      priority: 0,\n      shortDesc: '100% chance to raise user Speed by 1. High crit.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'eternabeam',\n    {\n      accuracy: 90,\n      basePower: '160',\n      category: 'Special',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 150,\n      name: 'Eternabeam',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'expandingforce',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: 'If the current terrain is Psychic Terrain and the user is grounded, this move hits all opposing Pokémon and has its power multiplied by 1.5.',\n      name: 'Expanding Force',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User on Psychic Terrain: 1.5x power, hits foes.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'explosion',\n    {\n      accuracy: 100,\n      basePower: '250',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokémon has the Damp Ability.',\n      maxMovePower: 150,\n      name: 'Explosion',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Hits adjacent Pokémon. The user faints.',\n      target: 'All Adjacent',\n      type: 'Normal'\n    }\n  ],\n  [\n    'extrasensory',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to make the target flinch.',\n      maxMovePower: 130,\n      name: 'Extrasensory',\n      pp: 20,\n      priority: 0,\n      shortDesc: '10% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'extremeevoboost',\n    {\n      accuracy: 100,\n      aliases: ['ee', 'extreme', 'zeevee', 'zevo', 'zlastresort'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the user's Attack, Defense, Special Attack, Special Defense, and Speed by 2 stages.\",\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'eeviumz',\n      name: 'Extreme Evoboost',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Raises user's Atk, Def, SpA, SpD, and Spe by 2.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'extremespeed',\n    {\n      accuracy: 100,\n      aliases: ['espeed'],\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Extreme Speed',\n      pp: 5,\n      priority: 2,\n      shortDesc: 'Nearly always goes first.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'facade',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n      maxMovePower: 120,\n      name: 'Facade',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Power doubles if user is burn/poison/paralyzed.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'fairylock',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Prevents all active Pokémon from switching next turn. A Pokémon can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. Fails if the effect is already active.',\n      name: 'Fairy Lock',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Prevents all Pokémon from switching next turn.',\n      target: 'All',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'fairywind',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Fairy Wind',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'fakeout',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Has a 100% chance to make the target flinch. Fails unless it is the user's first turn on the field.\",\n      maxMovePower: 90,\n      name: 'Fake Out',\n      pp: 10,\n      priority: 3,\n      shortDesc: 'Hits first. First turn out only. 100% flinch chance.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'faketears',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Special Defense by 2 stages.\",\n      name: 'Fake Tears',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers the target's Sp. Def by 2.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'falsesurrender',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      maxMovePower: 130,\n      name: 'False Surrender',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'falseswipe',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Leaves the target with at least 1 HP.',\n      maxMovePower: 90,\n      name: 'False Swipe',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'Always leaves the target with at least 1 HP.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'featherdance',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Lowers the target's Attack by 2 stages.\",\n      name: 'Feather Dance',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Lowers the target's Attack by 2.\",\n      target: 'Normal',\n      type: 'Flying'\n    }\n  ],\n  [\n    'feint',\n    {\n      accuracy: 100,\n      basePower: '30',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"If this move is successful, it breaks through the target's Baneful Bunker, Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokémon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokémon may attack the target's side normally.\",\n      maxMovePower: 90,\n      name: 'Feint',\n      pp: 10,\n      priority: 2,\n      shortDesc: 'Nullifies Detect, Protect, and Quick/Wide Guard.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'feintattack',\n    {\n      accuracy: 100,\n      aliases: ['faintattack'],\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'This move does not check accuracy.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Feint Attack',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'fellstinger',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Raises the user's Attack by 3 stages if this move knocks out the target.\",\n      maxMovePower: 100,\n      name: 'Fell Stinger',\n      pp: 25,\n      priority: 0,\n      shortDesc: \"Raises user's Attack by 3 if this KOes the target.\",\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'ficklebeam',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      name: 'Fickle Beam',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Has a 30% chance this move's power is doubled.\",\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'fierydance',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 50% chance to raise the user's Special Attack by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Fiery Dance',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"50% chance to raise the user's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'fierywrath',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      desc: 'Has a 20% chance to make the target flinch.',\n      name: 'Fiery Wrath',\n      pp: 10,\n      priority: 0,\n      shortDesc: '20% chance to make the foe(s) flinch.',\n      target: 'Adjacent Foes',\n      type: 'Dark'\n    }\n  ],\n  [\n    'filletaway',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the user's Attack, Special Attack, and Speed by 2 stages in exchange for the user losing 1/2 of its maximum HP, rounded down. Fails if the user would faint or if its Attack, Special Attack, and Speed stat stages would not change.\",\n      name: 'Fillet Away',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"+2 Attack, Sp. Atk, Speed for 1/2 user's max HP.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'finalgambit',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Deals damage to the target equal to the user's current HP. If this move is successful, the user faints.\",\n      maxMovePower: 100,\n      name: 'Final Gambit',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Does damage equal to the user's HP. User faints.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'fireblast',\n    {\n      accuracy: 85,\n      basePower: '110',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to burn the target.',\n      maxMovePower: 140,\n      name: 'Fire Blast',\n      pp: 5,\n      priority: 0,\n      shortDesc: '10% chance to burn the target.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'firefang',\n    {\n      accuracy: 95,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to burn the target and a 10% chance to make it flinch.',\n      maxMovePower: 120,\n      name: 'Fire Fang',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to burn. 10% chance to flinch.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'firelash',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Has a 100% chance to lower the target's Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Fire Lash',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'firepledge',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"If one of the user's allies chose to use Grass Pledge or Water Pledge this turn and has not moved yet, it takes its turn immediately after the user and the user's move does nothing. If combined with Grass Pledge, the ally uses Fire Pledge with 150 power and a sea of fire appears on the target's side for 4 turns, which causes damage to non-Fire types equal to 1/8 of their maximum HP, rounded down, at the end of each turn during effect, including the last turn. If combined with Water Pledge, the ally uses Water Pledge with 150 power and a rainbow appears on the user's side for 4 turns, which doubles secondary effect chances and stacks with the Serene Grace Ability, except effects that cause flinching can only have their chance doubled once. When used as a combined move, this move gains STAB no matter what the user's type is. This move does not consume the user's Fire Gem.\",\n      maxMovePower: 130,\n      name: 'Fire Pledge',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Use with Grass or Water Pledge for added effect.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'firepunch',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 10% chance to burn the target.',\n      maxMovePower: 130,\n      name: 'Fire Punch',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to burn the target.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'firespin',\n    {\n      accuracy: 85,\n      basePower: '35',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      maxMovePower: 90,\n      name: 'Fire Spin',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'firstimpression',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Fails unless it is the user's first turn on the field.\",\n      maxMovePower: 130,\n      name: 'First Impression',\n      pp: 10,\n      priority: 2,\n      shortDesc: 'Nearly always goes first. First turn out only.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'fishiousrend',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Physical',\n      desc: 'Power doubles if the user moves before the target.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Fishious Rend',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Power doubles if user moves before the target.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'fissure',\n    {\n      accuracy: 30,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + 30)%, and fails if the target is at a higher level. Pokémon with the Sturdy Ability are immune.\",\n      maxMovePower: 130,\n      name: 'Fissure',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'OHKOs the target. Fails if user is a lower level.',\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'flail',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n      maxMovePower: 130,\n      name: 'Flail',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'More power the less HP the user has left.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'flameburst',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"If this move is successful, the target's ally loses 1/16 of its maximum HP, rounded down, unless it has the Magic Guard Ability.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Flame Burst',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Damages Pokémon next to the target as well.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'flamecharge',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n      maxMovePower: 100,\n      name: 'Flame Charge',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"100% chance to raise the user's Speed by 1.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'flamethrower',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to burn the target.',\n      maxMovePower: 130,\n      name: 'Flamethrower',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to burn the target.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'flamewheel',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to burn the target.',\n      maxMovePower: 110,\n      name: 'Flame Wheel',\n      pp: 25,\n      priority: 0,\n      shortDesc: '10% chance to burn the target. Thaws user.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'flareblitz',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to burn the target. If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.',\n      maxMovePower: 140,\n      name: 'Flare Blitz',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Has 33% recoil. 10% chance to burn. Thaws user.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'flash',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Lowers the target's accuracy by 1 stage.\",\n      isFieldMove:\n        'The Pokémon is able to light up dark caverns. Flash is taught to Pokémon with HM05 in the first three generations, and with TM70 since Generation IV.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Flash',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'flashcannon',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Flash Cannon',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'flatter',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Raises the target's Special Attack by 1 stage and confuses it.\",\n      name: 'Flatter',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Raises the target's Sp. Atk by 1 and confuses it.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'fleurcannon',\n    {\n      accuracy: 90,\n      basePower: '130',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Lowers the user's Special Attack by 2 stages.\",\n      maxMovePower: 140,\n      name: 'Fleur Cannon',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Sp. Atk by 2.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'fling',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"The power of this move is based on the user's held item. The held item is lost and it activates for the target if applicable. If there is no target or the target avoids this move by protecting itself, the user's held item is still lost. The user can regain a thrown item with Recycle or the Harvest Ability. Fails if the user has no held item, if the held item cannot be thrown, if the user is under the effect of Embargo or Magic Room, or if the user has the Klutz Ability.\",\n      maxMovePower: 100,\n      name: 'Fling',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Flings the user's item at the target. Power varies.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'flipturn',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      desc: 'If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.',\n      name: 'Flip Turn',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'User switches out after damaging the target.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'floatyfall',\n    {\n      accuracy: 95,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to make the target flinch.',\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Floaty Fall',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Flying'\n    }\n  ],\n  [\n    'floralhealing',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'The target restores 1/2 of its maximum HP, rounded half up. If the terrain is Grassy Terrain, the target instead restores 2/3 of its maximum HP, rounded half down.',\n      name: 'Floral Healing',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Heals the target by 50% of its max HP.',\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'flowershield',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'Raises the Defense of all active Grass-type Pokémon by 1 stage. Fails if there are no active Grass-type Pokémon.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Flower Shield',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Raises Defense by 1 of all active Grass types.',\n      target: 'All',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'flowertrick',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      desc: 'This move is always a critical hit unless the target is under the effect of Lucky Chant or has the Battle Armor or Shell Armor Abilities. This move does not check accuracy.',\n      name: 'Flower Trick',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Always results in a critical hit; no accuracy check.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'fly',\n    {\n      accuracy: 95,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.',\n      isFieldMove:\n        'The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.',\n      maxMovePower: 130,\n      name: 'Fly',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Flies up on first turn, then strikes the next turn.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'flyingpress',\n    {\n      accuracy: 95,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'This move combines Flying in its type effectiveness against the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.',\n      maxMovePower: 90,\n      name: 'Flying Press',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Combines Flying in its type effectiveness.',\n      target: 'Any',\n      type: 'Fighting',\n      zMovePower: 170\n    }\n  ],\n  [\n    'focusblast',\n    {\n      accuracy: 70,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 95,\n      name: 'Focus Blast',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'focusenergy',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n      name: 'Focus Energy',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"Raises the user's critical hit ratio by 2.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'focuspunch',\n    {\n      accuracy: 100,\n      basePower: '150',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'The user loses its focus and does nothing if it is hit by a damaging attack this turn before it can execute the move.',\n      maxMovePower: 100,\n      name: 'Focus Punch',\n      pp: 20,\n      priority: -3,\n      shortDesc: 'Fails if the user takes damage before it hits.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'followme',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Until the end of the turn, all single-target attacks from the opposing side are redirected to the user. Such attacks are redirected to the user before they can be reflected by Magic Coat or the Magic Bounce Ability, or drawn in by the Lightning Rod or Storm Drain Abilities. Fails if it is not a Double Battle or Battle Royal. This effect is ignored while the user is under the effect of Sky Drop.',\n      name: 'Follow Me',\n      pp: 20,\n      priority: 2,\n      shortDesc: \"The foes' moves target the user on the turn used.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'forcepalm',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to paralyze the target.',\n      maxMovePower: 80,\n      name: 'Force Palm',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'foresight',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'As long as the target remains active, its evasiveness stat stage is ignored during accuracy checks against it if it is greater than 0, and Normal- and Fighting-type attacks can hit the target if it is a Ghost type. Fails if the target is already affected, or affected by Miracle Eye or Odor Sleuth.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Foresight',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'Fighting, Normal hit Ghost. Evasiveness ignored.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'forestscurse',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Causes the Grass type to be added to the target, effectively making it have two or three types. Fails if the target is already a Grass type. If Trick-or-Treat adds a type to the target, it replaces the type added by this move and vice versa.',\n      name: \"Forest's Curse\",\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Adds Grass to the target's type(s).\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'foulplay',\n    {\n      accuracy: 100,\n      basePower: '95',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"Damage is calculated using the target's Attack stat, including stat stage changes. The user's Ability, item, and burn are used as normal.\",\n      maxMovePower: 130,\n      name: 'Foul Play',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Uses target's Attack stat in damage calculation.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'freezedry',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 10% chance to freeze the target. This move's type effectiveness against Water is changed to be super effective no matter what this move's type is.\",\n      maxMovePower: 120,\n      name: 'Freeze-Dry',\n      pp: 20,\n      priority: 0,\n      shortDesc: '10% chance to freeze. Super effective on Water.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'freezeshock',\n    {\n      accuracy: 90,\n      basePower: '140',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'Has a 30% chance to paralyze the target. This attack charges on the first turn and executes on the second. If the user is holding a Power Herb, the move completes in one turn.',\n      maxMovePower: 140,\n      name: 'Freeze Shock',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Charges turn 1. Hits turn 2. 30% paralyze.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'freezingglare',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      desc: 'Has a 10% chance to freeze the target.',\n      name: 'Freezing Glare',\n      pp: 10,\n      priority: 0,\n      shortDesc: '10% chance to freeze the target.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'freezyfrost',\n    {\n      accuracy: 90,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'Resets the stat stages of all active Pokémon to 0.',\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Freezy Frost',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Eliminates all stat changes.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'frenzyplant',\n    {\n      accuracy: 90,\n      basePower: '150',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      maxMovePower: 150,\n      name: 'Frenzy Plant',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'frostbreath',\n    {\n      accuracy: 90,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'This move is always a critical hit unless the target is under the effect of Lucky Chant or has the Battle Armor or Shell Armor Abilities.',\n      maxMovePower: 110,\n      name: 'Frost Breath',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Always results in a critical hit.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'frustration',\n    {\n      accuracy: 100,\n      basePower: \"(255 - user's Happiness) * 2/5\",\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Frustration',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Max 102 power at minimum Happiness.',\n      target: 'Normal',\n      type: 'Normal',\n      zMovePower: 160\n    }\n  ],\n  [\n    'furyattack',\n    {\n      accuracy: 85,\n      basePower: '15',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 90,\n      name: 'Fury Attack',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'furycutter',\n    {\n      accuracy: 95,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.',\n      maxMovePower: 90,\n      name: 'Fury Cutter',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Power doubles with each hit, up to 160.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'furyswipes',\n    {\n      accuracy: 80,\n      basePower: '18',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 100,\n      name: 'Fury Swipes',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'fusionbolt',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Power doubles if the last move used by any Pokémon this turn was Fusion Flare.',\n      maxMovePower: 130,\n      name: 'Fusion Bolt',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Power doubles if used after Fusion Flare this turn.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'fusionflare',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Power doubles if the last move used by any Pokémon this turn was Fusion Bolt.',\n      maxMovePower: 130,\n      name: 'Fusion Flare',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Power doubles if used after Fusion Bolt this turn.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'futuresight',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Deals damage two turns after this move is used. At the end of that turn, the damage is calculated at that time and dealt to the Pokémon at the position the target had when the move was used. If the user is no longer active at the time, damage is calculated based on the user's natural Special Attack stat, types, and level, with no boosts from its held item or Ability. Fails if this move or Doom Desire is already in effect for the target's position.\",\n      maxMovePower: 140,\n      name: 'Future Sight',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits two turns after being used.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'gastroacid',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Causes the target's Ability to be rendered ineffective as long as it remains active. If the target uses Baton Pass, the replacement will remain under this effect. If the target's Ability is As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Tera Shift, Zen Mode, or Zero to Hero, this move fails, and receiving the effect through Baton Pass ends the effect immediately.\",\n      name: 'Gastro Acid',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Nullifies the target's Ability.\",\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'geargrind',\n    {\n      accuracy: 85,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Gear Grind',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Hits 2 times in one turn.',\n      target: 'Normal',\n      type: 'Steel',\n      zMovePower: 180\n    }\n  ],\n  [\n    'gearup',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Raises the Attack and Special Attack of Pokémon on the user's side with the Plus or Minus Abilities by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Gear Up',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Raises Atk, Sp. Atk of allies with Plus/Minus by 1.',\n      target: \"Ally's Side\",\n      type: 'Steel'\n    }\n  ],\n  [\n    'genesissupernova',\n    {\n      accuracy: 100,\n      aliases: ['genesis', 'gs', 'zmew'],\n      basePower: '185',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'If this move is successful, the terrain becomes Psychic Terrain.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'mewniumz',\n      name: 'Genesis Supernova',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'Summons Psychic Terrain.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'geomancy',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the user's Special Attack, Special Defense, and Speed by 2 stages. This attack charges on the first turn and executes on the second. If the user is holding a Power Herb, the move completes in one turn.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Geomancy',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Charges, then raises SpA, SpD, Spe by 2 turn 2.',\n      target: 'Self',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'gigadrain',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      maxMovePower: 130,\n      name: 'Giga Drain',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User recovers 50% of the damage dealt.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'gigaimpact',\n    {\n      accuracy: 90,\n      basePower: '150',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      maxMovePower: 150,\n      name: 'Giga Impact',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'gigatonhammer',\n    {\n      accuracy: 100,\n      basePower: '160',\n      category: 'Physical',\n      desc: '',\n      name: 'Gigaton Hammer',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Cannot be selected the turn after it's used.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'gigavolthavoc',\n    {\n      accuracy: 100,\n      aliases: ['zelectric'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'electriumz',\n      name: 'Gigavolt Havoc',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'glaciallance',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      desc: 'No additional effect.',\n      name: 'Glacial Lance',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent foes.',\n      target: 'Adjacent Foes',\n      type: 'Ice'\n    }\n  ],\n  [\n    'glaciate',\n    {\n      accuracy: 95,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n      maxMovePower: 120,\n      name: 'Glaciate',\n      pp: 10,\n      priority: 0,\n      shortDesc: '100% chance to lower the foe(s) Speed by 1.',\n      target: 'Adjacent Foes',\n      type: 'Ice'\n    }\n  ],\n  [\n    'glaiverush',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      desc: \"If this move is successful, moves targeted at the user deal double damage and do not check accuracy until the user's next turn.\",\n      name: 'Glaive Rush',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User takes sure-hit 2x damage until its next turn.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'glare',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: 'Paralyzes the target.',\n      name: 'Glare',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Paralyzes the target.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'glitzyglow',\n    {\n      accuracy: 95,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'This move summons Light Screen for 5 turns upon use.',\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Glitzy Glow',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Summons Light Screen.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'gmaxbefuddle',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side either falls asleep, becomes poisoned, or becomes paralyzed, even if they have a substitute.\",\n      isGMax: 'Butterfree',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Befuddle',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: slp or psn or par.',\n      target: 'Adjacent Foes',\n      type: 'Bug'\n    }\n  ],\n  [\n    'gmaxcannonade',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, for 4 turns each non-Water-type Pokémon on the opposing side takes damage equal to 1/6 of its maximum HP, rounded down, at the end of each turn during effect, including the last turn.\",\n      isGMax: 'Blastoise',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Cannonade',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1/6 HP, 4 turns.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'gmaxcentiferno',\n    {\n      accuracy: 100,\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side is prevented from switching for four or five turns (seven turns if the user is holding Grip Claw), even if they have a substitute. Causes damage equal to 1/8 of their maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. They can still switch out if they are holding Shed Shell or use Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends for a target if it leaves the field, or if it uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n      isGMax: 'Centiskorch',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Centiferno',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: bound 4-5 turns.',\n      target: 'Adjacent Foes',\n      type: 'Fire'\n    }\n  ],\n  [\n    'gmaxchistrike',\n    {\n      accuracy: 100,\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the user's side has their critical hit ratio raised by 1 stage, even if they have a substitute.\",\n      isGMax: 'Machamp',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Chi Strike',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Allies: Crit Ratio +1.',\n      target: 'Adjacent Foes',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'gmaxcuddle',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side becomes infatuated, even if they have a substitute. This effect does not happen for a target if both it and the user are the same gender, if either is genderless, or if the target is already infatuated.\",\n      isGMax: 'Eevee',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Cuddle',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: infatuated.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'gmaxdepletion',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side loses 2 PP from its last move used, even if they have a substitute.\",\n      isGMax: 'Duraludon',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Depletion',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: last move -2 PP.',\n      target: 'Adjacent Foes',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'gmaxdrumsolo',\n    {\n      accuracy: 100,\n      basePower: '160',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is 160 regardless of the base move's Max Move power. This move and its effects ignore the Abilities of other Pokémon.\",\n      isGMax: 'Rillaboom',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Drum Solo',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Always 160 power. Ignores Abilities.',\n      target: 'Adjacent Foes',\n      type: 'Grass'\n    }\n  ],\n  [\n    'gmaxfinale',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the user's side restores 1/6 of its current maximum HP, even if they have a substitute.\",\n      isGMax: 'Alcremie',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Finale',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Allies: +1/6 max HP.',\n      target: 'Adjacent Foes',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'gmaxfireball',\n    {\n      accuracy: 100,\n      basePower: '160',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is 160 regardless of the base move's Max Move power. This move and its effects ignore the Abilities of other Pokémon.\",\n      isGMax: 'Cinderace',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Fireball',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Always 160 power. Ignores Abilities.',\n      target: 'Adjacent Foes',\n      type: 'Fire'\n    }\n  ],\n  [\n    'gmaxfoamburst',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Speed of each Pokémon on the opposing side is lowered by 2 stages, even if they have a substitute.\",\n      isGMax: 'Kingler',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Foam Burst',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -2 Speed.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'gmaxgoldrush',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side becomes confused, even if they have a substitute.\",\n      isGMax: 'Meowth',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Gold Rush',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: confused.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'gmaxgravitas',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Gravity begins.\",\n      isGMax: 'Orbeetle',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Gravitas',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Starts Gravity.',\n      target: 'Adjacent Foes',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'gmaxhydrosnipe',\n    {\n      accuracy: 100,\n      basePower: '160',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is 160 regardless of the base move's Max Move power. This move and its effects ignore the Abilities of other Pokémon.\",\n      isGMax: 'Inteleon',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Hydrosnipe',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Always 160 power. Ignores Abilities.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'gmaxmalodor',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side becomes poisoned, even if they have a substitute.\",\n      isGMax: 'Garbodor',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Malodor',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: poisoned.',\n      target: 'Adjacent Foes',\n      type: 'Poison'\n    }\n  ],\n  [\n    'gmaxmeltdown',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Torment begins for each Pokémon on the opposing side, even if they have a substitute.\",\n      isGMax: 'Melmetal',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Meltdown',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: Tormented.',\n      target: 'Adjacent Foes',\n      type: 'Steel'\n    }\n  ],\n  [\n    'gmaxoneblow',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. This move bypasses all protection effects, including Max Guard.\",\n      isGMax: 'Urshifu',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max One Blow',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Bypasses Max Guard.',\n      target: 'Adjacent Foes',\n      type: 'Dark'\n    }\n  ],\n  [\n    'gmaxrapidflow',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. This move bypasses all protection effects, including Max Guard.\",\n      isGMax: 'Urshifu-Rapid-Strike',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Rapid Flow',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Bypasses Max Guard.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'gmaxreplenish',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, there is a 50% chance every Pokémon on the user's side has its Berry restored, even if they have a substitute.\",\n      isGMax: 'Snorlax',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Replenish',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. 50% restores Berries.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'gmaxresonance',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Aurora Veil begins on the user's side.\",\n      isGMax: 'Lapras',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Resonance',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Allies: Aurora Veil.',\n      target: 'Adjacent Foes',\n      type: 'Ice'\n    }\n  ],\n  [\n    'gmaxsandblast',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side is prevented from switching for four or five turns (seven turns if the user is holding Grip Claw), even if they have a substitute. Causes damage equal to 1/8 of their maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. They can still switch out if they are holding Shed Shell or use Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends for a target if it leaves the field, or if it uses Rapid Spin or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n      isGMax: 'Sandaconda',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Sandblast',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: bound 4-5 turns.',\n      target: 'Adjacent Foes',\n      type: 'Ground'\n    }\n  ],\n  [\n    'gmaxsmite',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side becomes confused, even if they have a substitute.\",\n      isGMax: 'Hatterene',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Smite',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: confused.',\n      target: 'Adjacent Foes',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'gmaxsnooze',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, there is a 50% chance the effect of Yawn begins on the target, even if it has a substitute.\",\n      isGMax: 'Grimmsnarl',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Snooze',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Target: 50% Yawn.',\n      target: 'Adjacent Foes',\n      type: 'Dark'\n    }\n  ],\n  [\n    'gmaxsteelsurge',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, it sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Steel type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any opposing Pokémon uses Rapid Spin or Defog successfully, or is hit by Defog.\",\n      isGMax: 'Copperajah',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Steelsurge',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: Steel hazard.',\n      target: 'Adjacent Foes',\n      type: 'Steel'\n    }\n  ],\n  [\n    'gmaxstonesurge',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, it sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any opposing Pokémon uses Rapid Spin or Defog successfully, or is hit by Defog.\",\n      isGMax: 'Drednaw',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Stonesurge',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: Stealth Rock.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'gmaxstunshock',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side either becomes poisoned or paralyzed, even if they have a substitute.\",\n      isGMax: 'Toxtricity',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Stun Shock',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: psn or par.',\n      target: 'Adjacent Foes',\n      type: 'Electric'\n    }\n  ],\n  [\n    'gmaxsweetness',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the user's side has its status condition cured, even if they have a substitute.\",\n      isGMax: 'Toxtricity',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Sweetness',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Allies: status cured.',\n      target: 'Adjacent Foes',\n      type: 'Grass'\n    }\n  ],\n  [\n    'gmaxtartness',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the evasiveness of each Pokémon on the opposing side is lowered by 1 stage, even if they have a substitute.\",\n      isGMax: 'Flapple',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Tartness',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1 evasiveness.',\n      target: 'Adjacent Foes',\n      type: 'Grass'\n    }\n  ],\n  [\n    'gmaxterror',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side is prevented from switching out, even if they have a substitute. They can still switch out if they are holding Shed Shell or use Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field.\",\n      isGMax: 'Gengar',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Terror',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: trapped.',\n      target: 'Adjacent Foes',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'gmaxvinelash',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, for 4 turns each non-Grass-type Pokémon on the opposing side takes damage equal to 1/6 of its maximum HP, rounded down, at the end of each turn during effect, including the last turn.\",\n      isGMax: 'Venusaur',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Vine Lash',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1/6 HP, 4 turns.',\n      target: 'Adjacent Foes',\n      type: 'Grass'\n    }\n  ],\n  [\n    'gmaxvolcalith',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, for 4 turns each non-Rock-type Pokémon on the opposing side takes damage equal to 1/6 of its maximum HP, rounded down, at the end of each turn during effect, including the last turn.\",\n      isGMax: 'Coalossal',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Volcalith',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1/6 HP, 4 turns.',\n      target: 'Adjacent Foes',\n      type: 'Rock'\n    }\n  ],\n  [\n    'gmaxvoltcrash',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, each Pokémon on the opposing side becomes paralyzed, even if they have a substitute.\",\n      isGMax: 'Pikachu',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Volt Crash',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: paralyzed.',\n      target: 'Adjacent Foes',\n      type: 'Electric'\n    }\n  ],\n  [\n    'gmaxwildfire',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, for 4 turns each non-Fire-type Pokémon on the opposing side takes damage equal to 1/6 of its maximum HP, rounded down, at the end of each turn during effect, including the last turn.\",\n      isGMax: 'Charizard',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Wildfire',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1/6 HP, 4 turns.',\n      target: 'Adjacent Foes',\n      type: 'Fire'\n    }\n  ],\n  [\n    'gmaxwindrage',\n    {\n      accuracy: 100,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effects of Electric Terrain, Grassy Terrain, Misty Terrain, and Psychic Terrain end, the effects of Reflect, Light Screen, Aurora Veil, Safeguard, Mist, G-Max Steelsurge, Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the target's side, and the effects of G-Max Steelsurge, Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the user's side.\",\n      isGMax: 'Corviknight',\n      isNonstandard: IsNonStandard.Gigantamax,\n      name: 'G-Max Wind Rage',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Ends Terrain, hazards.',\n      target: 'Adjacent Foes',\n      type: 'Flying'\n    }\n  ],\n  [\n    'grassknot',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: \"This move's power is 20 if the target weighs less than 10 kg, 40 if less than 25 kg, 60 if less than 50 kg, 80 if less than 100 kg, 100 if less than 200 kg, and 120 if greater than or equal to 200 kg.\",\n      maxMovePower: 130,\n      name: 'Grass Knot',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'More power the heavier the target.',\n      target: 'Adjacent Foes',\n      type: 'Grass'\n    }\n  ],\n  [\n    'grasspledge',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"If one of the user's allies chose to use Fire Pledge or Water Pledge this turn and has not moved yet, it takes its turn immediately after the user and the user's move does nothing. If combined with Fire Pledge, the ally uses Fire Pledge with 150 power and a sea of fire appears on the target's side for 4 turns, which causes damage to non-Fire types equal to 1/8 of their maximum HP, rounded down, at the end of each turn during effect, including the last turn. If combined with Water Pledge, the ally uses Grass Pledge with 150 power and a swamp appears on the target's side for 4 turns, which quarters the Speed of each Pokémon on that side. When used as a combined move, this move gains STAB no matter what the user's type is. This move does not consume the user's Grass Gem.\",\n      maxMovePower: 130,\n      name: 'Grass Pledge',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Use with Fire or Water Pledge for added effect.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'grasswhistle',\n    {\n      accuracy: 55,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Causes the target to fall asleep.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Grass Whistle',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Causes the target to fall asleep.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'grassyglide',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'If the current terrain is Grassy Terrain and the user is grounded, this move has its priority increased by 1.',\n      name: 'Grassy Glide',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'User on Grassy Terrain: +1 priority.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'grassyterrain',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'For 5 turns, the terrain becomes Grassy Terrain. During the effect, the power of Grass-type attacks used by grounded Pokémon is multiplied by 1.3, the power of Bulldoze, Earthquake, and Magnitude used against grounded Pokémon is multiplied by 0.5, and grounded Pokémon have 1/16 of their maximum HP, rounded down, restored at the end of each turn, including the last turn. Camouflage transforms the user into a Grass type, Nature Power becomes Energy Ball, and Secret Power has a 30% chance to cause sleep. Fails if the current terrain is Grassy Terrain.',\n      name: 'Grassy Terrain',\n      pp: 10,\n      priority: 0,\n      shortDesc: '5 turns. Grounded: +Grass power, +1/16 max HP.',\n      target: 'All',\n      type: 'Grass'\n    }\n  ],\n  [\n    'gravapple',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: \"Has a 100% chance to lower the target's Defense by 1 stage. Power is multiplied by 1.5 during Gravity's effect.\",\n      maxMovePower: 130,\n      name: 'Grav Apple',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Target: 100% -1 Def. During Gravity: 1.5x power.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'gravity',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'For 5 turns, the evasiveness of all active Pokémon is multiplied by 0.6. At the time of use, Bounce, Fly, Magnet Rise, Sky Drop, and Telekinesis end immediately for all active Pokémon. During the effect, Bounce, Fly, Flying Press, High Jump Kick, Jump Kick, Magnet Rise, Sky Drop, Splash, and Telekinesis are prevented from being used by all active Pokémon. Ground-type attacks, Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability can affect Flying types or Pokémon with the Levitate Ability. Fails if this move is already in effect.',\n      name: 'Gravity',\n      pp: 5,\n      priority: 0,\n      shortDesc: '5 turns: no Ground immunities, 1.67x accuracy.',\n      target: 'All',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'growl',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Attack by 1 stage.\",\n      name: 'Growl',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'Lowers the foe(s) Attack by 1.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'growth',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the user's Attack and Special Attack by 1 stage. If the weather is Sunny Day or Desolate Land, this move raises the user's Attack and Special Attack by 2 stages. If the user is holding Utility Umbrella, this move will only raise the user's Attack and Special Attack by 1 stage, even if the weather is Sunny Day or Desolate Land.\",\n      name: 'Growth',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises user's Attack and Sp. Atk by 1; 2 in Sun.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'grudge',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Until the user's next turn, if an opposing Pokémon's attack knocks the user out, that move loses all its remaining PP.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Grudge',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'If the user faints, the attack used loses all its PP.',\n      target: 'Self',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'guardianofalola',\n    {\n      accuracy: 100,\n      aliases: ['goa', 'guardian', 'znaturesmadness', 'ztapu'],\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Deals damage to the target equal to 3/4 of its current HP, rounded down, but not less than 1 HP.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'tapuniumz',\n      name: 'Guardian of Alola',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Does damage equal to 3/4 target's current HP.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'guardsplit',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user and the target have their Defense and Special Defense stats set to be equal to the average of the user and the target's Defense and Special Defense stats, respectively, rounded down. Stat stage changes are unaffected.\",\n      name: 'Guard Split',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Averages Defense and Sp. Def stats with target.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'guardswap',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user swaps its Defense and Special Defense stat stage changes with the target.',\n      name: 'Guard Swap',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Swaps Defense and Sp. Def changes with target.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'guillotine',\n    {\n      accuracy: 30,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + 30)%, and fails if the target is at a higher level. Pokémon with the Sturdy Ability are immune.\",\n      maxMovePower: 130,\n      name: 'Guillotine',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'OHKOs the target. Fails if user is a lower level.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'gunkshot',\n    {\n      accuracy: 80,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to poison the target.',\n      maxMovePower: 95,\n      name: 'Gunk Shot',\n      pp: 5,\n      priority: 0,\n      shortDesc: '30% chance to poison the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'gust',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.',\n      maxMovePower: 90,\n      name: 'Gust',\n      pp: 35,\n      priority: 0,\n      shortDesc: 'Power doubles during Bounce, Fly, and Sky Drop.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'gyroball',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to (25 * target's current Speed / user's current Speed) + 1, rounded down, but not more than 150. If the user's current Speed is 0, this move's power is 1.\",\n      maxMovePower: 130,\n      name: 'Gyro Ball',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'More power the slower the user than the target.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'hail',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Hail',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'For 5 turns, hail crashes down.',\n      target: 'All',\n      type: 'Ice'\n    }\n  ],\n  [\n    'hammerarm',\n    {\n      accuracy: 90,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Lowers the user's Speed by 1 stage.\",\n      maxMovePower: 90,\n      name: 'Hammer Arm',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Lowers the user's Speed by 1.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'happyhour',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Money falls from the sky.',\n      name: 'Happy Hour',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'No competitive use.',\n      target: \"Ally's Side\",\n      type: 'Normal'\n    }\n  ],\n  [\n    'harden',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Raises the user's Defense by 1 stage.\",\n      name: 'Harden',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense by 1.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'hardpress',\n    {\n      accuracy: 100,\n      basePower: 'Power varies between 1 and 100, and is greater the more HP the target has',\n      category: 'Physical',\n      desc: \"Power is equal to 100 * (target's current HP / target's maximum HP), rounded half down, but not less than 1.\",\n      name: 'Hard Press',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'More power the more HP the target has left.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'haze',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'Resets the stat stages of all active Pokémon to 0.',\n      name: 'Haze',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Eliminates all stat changes.',\n      target: 'All',\n      type: 'Ice'\n    }\n  ],\n  [\n    'headbutt',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to make the target flinch.',\n      isFieldMove:\n        \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n      maxMovePower: 120,\n      name: 'Headbutt',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'headcharge',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 140,\n      name: 'Head Charge',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Has 1/4 recoil.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'headlongrush',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      desc: \"Lowers the user's Defense and Special Defense by 1 stage.\",\n      name: 'Headlong Rush',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Defense and Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'headsmash',\n    {\n      accuracy: 80,\n      basePower: '150',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 1/2 the HP lost by the target, rounded half up, but not less than 1 HP.',\n      maxMovePower: 150,\n      name: 'Head Smash',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Has 1/2 recoil.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'healbell',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n      name: 'Heal Bell',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Cures the user's party of all status conditions.\",\n      target: \"Ally's Side\",\n      type: 'Normal'\n    }\n  ],\n  [\n    'healblock',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'For 5 turns, the target is prevented from restoring any HP as long as it remains active. During the effect, healing and draining moves are unusable, and Abilities and items that grant healing will not heal the user. If an affected Pokémon uses Baton Pass, the replacement will remain unable to restore its HP. Pain Split and the Regenerator Ability are unaffected.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Heal Block',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'For 5 turns, the foe(s) is prevented from healing.',\n      target: 'Adjacent Foes',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'healingwish',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"The user faints, and if the Pokémon brought out to replace it does not have full HP or has a non-volatile status condition, its HP is fully restored along with having any non-volatile status condition cured. The replacement is sent out at the end of the turn, and the healing happens before hazards take effect. This effect continues until a Pokémon that meets either of these conditions switches in at the user's position or gets swapped into the position with Ally Switch. Fails if the user is the last unfainted Pokémon in its party.\",\n      name: 'Healing Wish',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User faints. Next hurt Pokémon is fully healed.',\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'healorder',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user restores 1/2 of its maximum HP, rounded half up.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Heal Order',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Heals the user by 50% of its max HP.',\n      target: 'Self',\n      type: 'Bug'\n    }\n  ],\n  [\n    'healpulse',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'The target restores 1/2 of its maximum HP, rounded half up. If the user has the Mega Launcher Ability, the target instead restores 3/4 of its maximum HP, rounded half down.',\n      name: 'Heal Pulse',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Heals the target by 50% of its max HP.',\n      target: 'Any',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'heartstamp',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'Has a 30% chance to make the target flinch.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Heart Stamp',\n      pp: 25,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'heartswap',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user swaps all its stat stage changes with the target.',\n      name: 'Heart Swap',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Swaps all stat changes with target.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'heatcrash',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"The power of this move depends on (user's weight / target's weight), rounded down. Power is equal to 120 if the result is 5 or more, 100 if 4, 80 if 3, 60 if 2, and 40 if 1 or less. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n      maxMovePower: 130,\n      name: 'Heat Crash',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'More power the heavier the user than the target.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'heatwave',\n    {\n      accuracy: 90,\n      basePower: '95',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to burn the target.',\n      maxMovePower: 130,\n      name: 'Heat Wave',\n      pp: 10,\n      priority: 0,\n      shortDesc: '10% chance to burn the foe(s).',\n      target: 'Adjacent Foes',\n      type: 'Fire'\n    }\n  ],\n  [\n    'heavyslam',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"The power of this move depends on (user's weight / target's weight), rounded down. Power is equal to 120 if the result is 5 or more, 100 if 4, 80 if 3, 60 if 2, and 40 if 1 or less. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n      maxMovePower: 130,\n      name: 'Heavy Slam',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'More power the heavier the user than the target.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'helpinghand',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n      name: 'Helping Hand',\n      pp: 20,\n      priority: 5,\n      shortDesc: \"One adjacent ally's move power is 1.5x this turn.\",\n      target: 'Adjacent Ally',\n      type: 'Normal'\n    }\n  ],\n  [\n    'hex',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'Power doubles if the target has a non-volatile status condition.',\n      maxMovePower: 120,\n      name: 'Hex',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Power doubles if the target has a status ailment.',\n      target: 'Normal',\n      type: 'Ghost',\n      zMovePower: 160\n    }\n  ],\n  [\n    'hiddenpower',\n    {\n      accuracy: 100,\n      aliases: ['hp'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'hiddenpowerbug',\n    {\n      accuracy: 100,\n      aliases: ['hpbug'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Bug',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'hiddenpowerdark',\n    {\n      accuracy: 100,\n      aliases: ['hpdark'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Dark',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'hiddenpowerdragon',\n    {\n      accuracy: 100,\n      aliases: ['hpdragon'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Dragon',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'hiddenpowerelectric',\n    {\n      accuracy: 100,\n      aliases: ['hpelectric'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Electric',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'hiddenpowerfighting',\n    {\n      accuracy: 100,\n      aliases: ['hpfighting'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Fighting',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'hiddenpowerfire',\n    {\n      accuracy: 100,\n      aliases: ['hpfire'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Fire',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'hiddenpowerflying',\n    {\n      accuracy: 100,\n      aliases: ['hpflying'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Flying',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Flying'\n    }\n  ],\n  [\n    'hiddenpowerghost',\n    {\n      accuracy: 100,\n      aliases: ['hpghost'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Ghost',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'hiddenpowergrass',\n    {\n      accuracy: 100,\n      aliases: ['hpgrass'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Grass',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'hiddenpowerground',\n    {\n      accuracy: 100,\n      aliases: ['hpground'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Ground',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'hiddenpowerice',\n    {\n      accuracy: 100,\n      aliases: ['hpice'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Ice',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'hiddenpowerpoison',\n    {\n      accuracy: 100,\n      aliases: ['hppoison'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Poison',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'hiddenpowerpsychic',\n    {\n      accuracy: 100,\n      aliases: ['hppsychic'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Psychic',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'hiddenpowerrock',\n    {\n      accuracy: 100,\n      aliases: ['hprock'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Rock',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'hiddenpowersteel',\n    {\n      accuracy: 100,\n      aliases: ['hpsteel'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Steel',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'hiddenpowerwater',\n    {\n      accuracy: 100,\n      aliases: ['hpwater'],\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Hidden Power Water',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Varies in type based on the user's IVs.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'highhorsepower',\n    {\n      accuracy: 95,\n      basePower: '95',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'High Horsepower',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'highjumpkick',\n    {\n      accuracy: 90,\n      aliases: ['hijumpkick', 'hjk'],\n      basePower: '130',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'If this attack is not successful, the user loses half of its maximum HP, rounded down, as crash damage. Pokémon with the Magic Guard Ability are unaffected by crash damage.',\n      maxMovePower: 95,\n      name: 'High Jump Kick',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User is hurt by 50% of its max HP if it misses.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'holdback',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Leaves the target with at least 1 HP.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      maxMovePower: 90,\n      name: 'Hold Back',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'Always leaves the target with at least 1 HP.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'holdhands',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'No competitive use. Fails if there is no ally adjacent to the user.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Hold Hands',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'No competitive use.',\n      target: 'Adjacent Ally',\n      type: 'Normal'\n    }\n  ],\n  [\n    'honeclaws',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Raises the user's Attack and accuracy by 1 stage.\",\n      name: 'Hone Claws',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Raises the user's Attack and accuracy by 1.\",\n      target: 'Self',\n      type: 'Dark'\n    }\n  ],\n  [\n    'hornattack',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 120,\n      name: 'Horn Attack',\n      pp: 25,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'horndrill',\n    {\n      accuracy: 30,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + 30)%, and fails if the target is at a higher level. Pokémon with the Sturdy Ability are immune.\",\n      maxMovePower: 130,\n      name: 'Horn Drill',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'OHKOs the target. Fails if user is a lower level.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'hornleech',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      maxMovePower: 130,\n      name: 'Horn Leech',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User recovers 50% of the damage dealt.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'howl',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: 'Raises the Attack of the user and all allies 1 stage.',\n      name: 'Howl',\n      pp: 40,\n      priority: 0,\n      shortDesc: \"Raises the user's and ally's Attack by 1.\",\n      target: \"Ally's Side\",\n      type: 'Normal'\n    }\n  ],\n  [\n    'hurricane',\n    {\n      accuracy: 70,\n      basePower: '110',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Has a 30% chance to confuse the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n      maxMovePower: 140,\n      name: 'Hurricane',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"30% chance to confuse target. Can't miss in rain.\",\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'hydrocannon',\n    {\n      accuracy: 90,\n      basePower: '150',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      maxMovePower: 150,\n      name: 'Hydro Cannon',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'hydropump',\n    {\n      accuracy: 80,\n      basePower: '110',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      maxMovePower: 140,\n      name: 'Hydro Pump',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'hydrosteam',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: \"If the current weather is Sunny Day and the user is not holding Utility Umbrella, this move's damage is multiplied by 1.5 instead of halved for being Water type.\",\n      name: 'Hydro Steam',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'During Sunny Day: 1.5x damage instead of half.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'hydrovortex',\n    {\n      accuracy: 100,\n      aliases: ['zwater'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'wateriumz',\n      name: 'Hydro Vortex',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'hyperbeam',\n    {\n      accuracy: 90,\n      basePower: '150',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      maxMovePower: 150,\n      name: 'Hyper Beam',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'hyperdrill',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"If this move is successful, it breaks through the target's Baneful Bunker, Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokémon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokémon may attack the target's side normally.\",\n      name: 'Hyper Drill',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Bypasses protection without breaking it.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'hyperfang',\n    {\n      accuracy: 90,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to make the target flinch.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Hyper Fang',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'hyperspacefury',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Lowers the user's Defense by 1 stage. This move cannot be used successfully unless the user's current form, while considering Transform, is Hoopa Unbound. If this move is successful, it breaks through the target's Baneful Bunker, Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokémon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokémon may attack the target's side normally.\",\n      maxMovePower: 130,\n      name: 'Hyperspace Fury',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Hoopa-U: Lowers user's Def by 1; breaks protect.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'hyperspacehole',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"If this move is successful, it breaks through the target's Baneful Bunker, Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokémon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokémon may attack the target's side normally.\",\n      maxMovePower: 130,\n      name: 'Hyperspace Hole',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Breaks the target's protection for this turn.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'hypervoice',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Hyper Voice',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent foes.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'hypnosis',\n    {\n      accuracy: 60,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Causes the target to fall asleep.',\n      name: 'Hypnosis',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Causes the target to fall asleep.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'iceball',\n    {\n      accuracy: 90,\n      basePower: '30',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ice Ball',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Power doubles with each hit. Repeats for 5 turns.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'icebeam',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to freeze the target.',\n      maxMovePower: 130,\n      name: 'Ice Beam',\n      pp: 10,\n      priority: 0,\n      shortDesc: '10% chance to freeze the target.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'iceburn',\n    {\n      accuracy: 90,\n      basePower: '140',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 30% chance to burn the target. This attack charges on the first turn and executes on the second. If the user is holding a Power Herb, the move completes in one turn.',\n      maxMovePower: 130,\n      name: 'Ice Burn',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Charges turn 1. Hits turn 2. 30% burn.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'icefang',\n    {\n      accuracy: 95,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to freeze the target and a 10% chance to make it flinch.',\n      maxMovePower: 120,\n      name: 'Ice Fang',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to freeze. 10% chance to flinch.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'icehammer',\n    {\n      accuracy: 90,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Lowers the user's Speed by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Ice Hammer',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Lowers the user's Speed by 1.\",\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'icepunch',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to freeze the target.',\n      maxMovePower: 130,\n      name: 'Ice Punch',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to freeze the target.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'iceshard',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Ice Shard',\n      pp: 30,\n      priority: 1,\n      shortDesc: 'Usually goes first.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'icespinner',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: 'Ends the effects of Electric Terrain, Grassy Terrain, Misty Terrain, and Psychic Terrain.',\n      name: 'Ice Spinner',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Ends the effects of terrain.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'iciclecrash',\n    {\n      accuracy: 90,\n      basePower: '85',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'Has a 30% chance to make the target flinch.',\n      maxMovePower: 130,\n      name: 'Icicle Crash',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'iciclespear',\n    {\n      accuracy: 100,\n      basePower: '25',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 130,\n      name: 'Icicle Spear',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'icywind',\n    {\n      accuracy: 95,\n      basePower: '55',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n      maxMovePower: 110,\n      name: 'Icy Wind',\n      pp: 15,\n      priority: 0,\n      shortDesc: '100% chance to lower the foe(s) Speed by 1.',\n      target: 'Adjacent Foes',\n      type: 'Ice'\n    }\n  ],\n  [\n    'imprison',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user prevents all opposing Pokémon from using any moves that the user also knows as long as the user remains active.',\n      name: 'Imprison',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No foe can use any move known by the user.',\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'incinerate',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.',\n      maxMovePower: 110,\n      name: 'Incinerate',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Destroys the foe(s) Berry/Gem.',\n      target: 'Adjacent Foes',\n      type: 'Fire'\n    }\n  ],\n  [\n    'infernalparade',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      desc: 'Has a 30% chance to burn the target. Power doubles if the target has a non-volatile status condition.',\n      name: 'Infernal Parade',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% burn. 2x power if target is already statused.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'inferno',\n    {\n      accuracy: 50,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 100% chance to burn the target.',\n      maxMovePower: 130,\n      name: 'Inferno',\n      pp: 5,\n      priority: 0,\n      shortDesc: '100% chance to burn the target.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'infernooverdrive',\n    {\n      accuracy: 100,\n      aliases: ['zfire'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'firiumz',\n      name: 'Inferno Overdrive',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'infestation',\n    {\n      accuracy: 100,\n      basePower: '20',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      maxMovePower: 90,\n      name: 'Infestation',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'ingrain',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user has 1/16 of its maximum HP restored at the end of each turn, but it is prevented from switching out and other Pokémon cannot force the user to switch out. The user can still switch out if it uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. If the user leaves the field using Baton Pass, the replacement will remain trapped and still receive the healing effect. During the effect, the user can be hit normally by Ground-type attacks and be affected by Spikes, Toxic Spikes, and Sticky Web, even if the user is a Flying type or has the Levitate Ability.',\n      name: 'Ingrain',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Traps/grounds user; heals 1/16 max HP per turn.',\n      target: 'Self',\n      type: 'Grass'\n    }\n  ],\n  [\n    'instruct',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The target immediately uses its last used move. Fails if the target has not made a move, if the move has 0 PP, if the target is preparing to use Beak Blast, Focus Punch, or Shell Trap, or if the move is Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Ice Ball, Instruct, King's Shield, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Obstruct, Outrage, Petal Dance, Rollout, Shell Trap, Sketch, Sleep Talk, Struggle, Thrash, Transform, Uproar, Wicked Torque, any two-turn move, or any recharge move.\",\n      name: 'Instruct',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'The target immediately uses its last used move.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'iondeluge',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Causes Normal-type moves to become Electric type this turn. The effect happens after other effects that change a move's type.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ion Deluge',\n      pp: 25,\n      priority: 1,\n      shortDesc: 'Normal moves become Electric type this turn.',\n      target: 'All',\n      type: 'Electric'\n    }\n  ],\n  [\n    'irondefense',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Raises the user's Defense by 2 stages.\",\n      name: 'Iron Defense',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense by 2.\",\n      target: 'Self',\n      type: 'Steel'\n    }\n  ],\n  [\n    'ironhead',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to make the target flinch.',\n      maxMovePower: 130,\n      name: 'Iron Head',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'irontail',\n    {\n      accuracy: 75,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Iron Tail',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"30% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'ivycudgel',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      desc: \"Has a higher chance for a critical hit. If the user is an Ogerpon, this move's type changes depending on its form. Water type for Wellspring Mask, Fire type for Hearthflame Mask, and Rock type for Cornerstone Mask.\",\n      name: 'Ivy Cudgel',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"High critical hit ratio. Type depends on user's form.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'jawlock',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: 'Prevents the user and the target from switching out. The user and the target can still switch out if either of them is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field.',\n      maxMovePower: 130,\n      name: 'Jaw Lock',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Prevents both user and target from switching out.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'jetpunch',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      name: 'Jet Punch',\n      pp: 15,\n      priority: 1,\n      shortDesc: 'Usually goes first.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'judgment',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"This move's type depends on the user's held Plate.\",\n      maxMovePower: 130,\n      name: 'Judgment',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Type varies based on the held Plate.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'jumpkick',\n    {\n      accuracy: 95,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'If this attack is not successful, the user loses half of its maximum HP, rounded down, as crash damage. Pokémon with the Magic Guard Ability are unaffected by crash damage.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Jump Kick',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User is hurt by 50% of its max HP if it misses.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'junglehealing',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Each Pokémon on the user's side restores 1/4 of its maximum HP, rounded half up, and has its status condition cured.\",\n      name: 'Jungle Healing',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User and allies: healed 1/4 max HP, status cured.',\n      target: \"Ally's Side\",\n      type: 'Grass'\n    }\n  ],\n  [\n    'karatechop',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a higher chance for a critical hit.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Karate Chop',\n      pp: 25,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'kinesis',\n    {\n      accuracy: 80,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Lowers the target's accuracy by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Kinesis',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Lowers the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'kingsshield',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"The user is protected from most attacks made by other Pokémon during this turn, and Pokémon trying to make contact with the user have their Attack lowered by 1 stage. Non-damaging moves go through this protection. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      isNonstandard: IsNonStandard.Past,\n      name: \"King's Shield\",\n      pp: 10,\n      priority: 4,\n      shortDesc: 'Protects from damaging attacks. Contact: -1 Atk.',\n      target: 'Self',\n      type: 'Steel'\n    }\n  ],\n  [\n    'knockoff',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"If the target is holding an item that can be removed from it, ignoring the Sticky Hold Ability, this move's power is multiplied by 1.5. If the user has not fainted, the target loses its held item. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item or cause a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, a Silvally, a Zacian, or a Zamazenta to lose their Blue Orb, Red Orb, Griseous Orb, Plate, Drive, Memory, Rusted Sword, or Rusted Shield respectively. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n      maxMovePower: 120,\n      name: 'Knock Off',\n      pp: 20,\n      priority: 0,\n      shortDesc: '1.5x damage if foe holds an item. Removes item.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'kowtowcleave',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Physical',\n      desc: '',\n      name: 'Kowtow Cleave',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'landswrath',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: \"Land's Wrath\",\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent foes.',\n      target: 'Adjacent Foes',\n      type: 'Ground'\n    }\n  ],\n  [\n    'laserfocus',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Until the end of the next turn, the user's attacks will be critical hits.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Laser Focus',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"Until the end of the next turn, user's moves crit.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'lashout',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      desc: 'Power doubles if the user had a stat stage lowered this turn.',\n      name: 'Lash Out',\n      pp: 5,\n      priority: 0,\n      shortDesc: '2x power if the user had a stat lowered this turn.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'lastresort',\n    {\n      accuracy: 100,\n      basePower: '140',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.',\n      maxMovePower: 140,\n      name: 'Last Resort',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Fails unless each known move has been used.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'lastrespects',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      desc: \"Power is equal to 50+(X*50), where X is the total number of times any Pokémon has fainted on the user's side, and X cannot be greater than 100.\",\n      name: 'Last Respects',\n      pp: 10,\n      priority: 0,\n      shortDesc: '+50 power for each time a party member fainted.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'lavaplume',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to burn the target.',\n      maxMovePower: 130,\n      name: 'Lava Plume',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to burn adjacent Pokémon.',\n      target: 'All Adjacent',\n      type: 'Fire'\n    }\n  ],\n  [\n    'leafage',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Leafage',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'leafblade',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 130,\n      name: 'Leaf Blade',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'leafstorm',\n    {\n      accuracy: 90,\n      basePower: '130',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Lowers the user's Special Attack by 2 stages.\",\n      maxMovePower: 140,\n      name: 'Leaf Storm',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Sp. Atk by 2.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'leaftornado',\n    {\n      accuracy: 90,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"Has a 50% chance to lower the target's accuracy by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 120,\n      name: 'Leaf Tornado',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"50% chance to lower the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'leechlife',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      maxMovePower: 130,\n      name: 'Leech Life',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User recovers 50% of the damage dealt.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'leechseed',\n    {\n      accuracy: 90,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The Pokémon at the user's position steals 1/8 of the target's maximum HP, rounded down, at the end of each turn. If Big Root is held by the recipient, the HP recovered is 1.3x normal, rounded half down. If the target uses Baton Pass, the replacement will continue being leeched. If the target switches out or uses Mortal Spin or Rapid Spin successfully, the effect ends. Grass-type Pokémon are immune to this move on use, but not its effect.\",\n      name: 'Leech Seed',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"1/8 of target's HP is restored to user every turn.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'leer',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Lowers the target's Defense by 1 stage.\",\n      name: 'Leer',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Lowers the foe(s) Defense by 1.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'letssnuggleforever',\n    {\n      accuracy: 100,\n      aliases: ['lets', 'lsf', 'zmimikyu', 'zplayrough'],\n      basePower: '190',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'mimikiumz',\n      name: \"Let's Snuggle Forever\",\n      pp: 1,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'lick',\n    {\n      accuracy: 100,\n      basePower: '30',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'Has a 30% chance to paralyze the target.',\n      maxMovePower: 90,\n      name: 'Lick',\n      pp: 30,\n      priority: 0,\n      shortDesc: '30% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'lifedew',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Each Pokémon on the user's side restores 1/4 of its maximum HP, rounded half up.\",\n      name: 'Life Dew',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Heals the user and its allies by 1/4 their max HP.',\n      target: \"Ally's Side\",\n      type: 'Water'\n    }\n  ],\n  [\n    'lightofruin',\n    {\n      accuracy: 90,\n      basePower: '140',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 1/2 the HP lost by the target, rounded half up, but not less than 1 HP.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 140,\n      name: 'Light of Ruin',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Has 1/2 recoil.',\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'lightscreen',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n      name: 'Light Screen',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'For 5 turns, special damage to allies is halved.',\n      target: \"Ally's Side\",\n      type: 'Psychic'\n    }\n  ],\n  [\n    'lightthatburnsthesky',\n    {\n      accuracy: 100,\n      aliases: ['light', 'ltbts', 'znecrozma', 'zphotongeyser', 'zultranecrozma'],\n      basePower: '200',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"This move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes. This move and its effects ignore the Abilities of other Pokémon.\",\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'ultranecroziumz',\n      name: 'Light That Burns the Sky',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Physical if user's Atk > Sp. Atk. Ignores Abilities.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'liquidation',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Liquidation',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"20% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'lockon',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Until the end of the next turn, the target cannot avoid the user's moves, even if the target is in the middle of a two-turn move. The effect ends if either the user or the target leaves the field. Fails if this effect is active for the user.\",\n      name: 'Lock-On',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"User's next move will not miss the target.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'lovelykiss',\n    {\n      accuracy: 75,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'Causes the target to fall asleep.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Lovely Kiss',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Causes the target to fall asleep.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'lowkick',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"This move's power is 20 if the target weighs less than 10 kg, 40 if less than 25 kg, 60 if less than 50 kg, 80 if less than 100 kg, 100 if less than 200 kg, and 120 if greater than or equal to 200 kg.\",\n      maxMovePower: 100,\n      name: 'Low Kick',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'More power the heavier the target.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'lowsweep',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n      maxMovePower: 85,\n      name: 'Low Sweep',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Speed by 1.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'luckychant',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"For 5 turns, the user and its party members cannot be struck by a critical hit. Fails if the effect is already active on the user's side.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Lucky Chant',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"For 5 turns, shields user's party from critical hits.\",\n      target: \"Ally's Side\",\n      type: 'Normal'\n    }\n  ],\n  [\n    'luminacrash',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: \"Has a 100% chance to lower the target's Special Defense by 2 stages.\",\n      name: 'Lumina Crash',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Sp. Def by 2.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'lunarblessing',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Each Pokémon on the user's side restores 1/4 of its maximum HP, rounded half up, and has its status condition cured.\",\n      name: 'Lunar Blessing',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User and allies: healed 1/4 max HP, status cured.',\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'lunardance',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"The user faints, and if the Pokémon brought out to replace it does not have full HP or PP, or has a non-volatile status condition, its HP and PP are fully restored along with having any non-volatile status condition cured. The replacement is sent out at the end of the turn, and the healing happens before hazards take effect. This effect continues until a Pokémon that meets any of these conditions switches in at the user's position or gets swapped into the position with Ally Switch. Fails if the user is the last unfainted Pokémon in its party.\",\n      name: 'Lunar Dance',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User faints. Next hurt Pkmn is cured, max HP/PP.',\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'lunge',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Lunge',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Attack by 1.\",\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'lusterpurge',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Has a 50% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 120,\n      name: 'Luster Purge',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"50% chance to lower the target's Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'machpunch',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 70,\n      name: 'Mach Punch',\n      pp: 30,\n      priority: 1,\n      shortDesc: 'Usually goes first.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'magicalleaf',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'This move does not check accuracy.',\n      maxMovePower: 110,\n      name: 'Magical Leaf',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'magicaltorque',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      desc: 'Has a 30% chance to confuse the target.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Magical Torque',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to confuse the target.',\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'magiccoat',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Until the end of the turn, the user is unaffected by certain non-damaging moves directed at it and will instead use such moves against the original user. Moves reflected in this way are unable to be reflected again by this or the Magic Bounce Ability's effect. Spikes, Stealth Rock, Sticky Web, and Toxic Spikes can only be reflected once per side, by the leftmost Pokémon under this or the Magic Bounce Ability's effect. The Lightning Rod and Storm Drain Abilities redirect their respective moves before this move takes effect.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Magic Coat',\n      pp: 15,\n      priority: 4,\n      shortDesc: 'Bounces back certain non-damaging moves.',\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'magicpowder',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: 'Causes the target to become a Psychic type. Fails if the target is an Arceus or a Silvally, if the target is already purely Psychic type, or if the target is Terastallized.',\n      name: 'Magic Powder',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Changes the target's type to Psychic.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'magicroom',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"For 5 turns, the held items of all active Pokémon have no effect. An item's effect of causing forme changes is unaffected, but any other effects from such items are negated. During the effect, Fling and Natural Gift are prevented from being used by all active Pokémon. If this move is used during the effect, the effect ends.\",\n      name: 'Magic Room',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'For 5 turns, all held items have no effect.',\n      target: 'All',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'magmastorm',\n    {\n      accuracy: 75,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      maxMovePower: 130,\n      name: 'Magma Storm',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'magnetbomb',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'This move does not check accuracy.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Magnet Bomb',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'magneticflux',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Raises the Defense and Special Defense of Pokémon on the user's side with the Plus or Minus Abilities by 1 stage.\",\n      name: 'Magnetic Flux',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Raises Def, Sp. Def of allies with Plus/Minus by 1.',\n      target: \"Ally's Side\",\n      type: 'Electric'\n    }\n  ],\n  [\n    'magnetrise',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.',\n      name: 'Magnet Rise',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'For 5 turns, the user has immunity to Ground.',\n      target: 'Self',\n      type: 'Electric'\n    }\n  ],\n  [\n    'magnitude',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'The power of this move varies; 5% chances for 10 and 150 power, 10% chances for 30 and 110 power, 20% chances for 50 and 90 power, and 30% chance for 70 power. Damage doubles if the target is using Dig.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Magnitude',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Hits adjacent Pokémon. Power varies; 2x on Dig.',\n      target: 'All Adjacent',\n      type: 'Ground'\n    }\n  ],\n  [\n    'makeitrain',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Lowers the user's Special Attack by 1 stage.\",\n      name: 'Make It Rain',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Sp. Atk by 1. Hits foe(s).\",\n      target: 'Adjacent Foes',\n      type: 'Steel'\n    }\n  ],\n  [\n    'maliciousmoonsault',\n    {\n      accuracy: 100,\n      aliases: ['malicious', 'moonsault', 'zdarkestlariat', 'zincineroar'],\n      basePower: '180',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Damage doubles and no accuracy check is done if the target has used Minimize while active.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'inciniumz',\n      name: 'Malicious Moonsault',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'Damage doubles if the target used Minimize.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'malignantchain',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      desc: 'Has a 50% chance to badly poison the target.',\n      name: 'Malignant Chain',\n      pp: 5,\n      priority: 0,\n      shortDesc: '50% chance to badly poison the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'matblock',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"The user and its party members are protected from damaging attacks made by other Pokémon, including allies, during this turn. Fails unless it is the user's first turn on the field, if the user moves last this turn, or if this move is already in effect for the user's side.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mat Block',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Protects allies from damaging attacks. Turn 1 only.',\n      target: \"Ally's Side\",\n      type: 'Fighting'\n    }\n  ],\n  [\n    'matchagotcha',\n    {\n      accuracy: 90,\n      basePower: '80',\n      category: 'Special',\n      desc: 'Has a 20% chance to burn the target. The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down. The target thaws out if it is frozen.',\n      name: 'Matcha Gotcha',\n      pp: 15,\n      priority: 0,\n      shortDesc: '20% burn. Recovers 50% dmg dealt. Thaws foe(s).',\n      target: 'Adjacent Foes',\n      type: 'Grass'\n    }\n  ],\n  [\n    'maxairstream',\n    {\n      accuracy: 100,\n      aliases: ['maxflying'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Speed of each Pokémon on the user's side is raised by 1 stage, even if they have a substitute. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Airstream',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Allies: +1 Speed.',\n      target: 'Adjacent Foes',\n      type: 'Flying'\n    }\n  ],\n  [\n    'maxdarkness',\n    {\n      accuracy: 100,\n      aliases: ['maxdark'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Special Defense of each Pokémon on the opposing side is lowered by 1 stage, even if they have a substitute. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Darkness',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1 Sp. Def.',\n      target: 'Adjacent Foes',\n      type: 'Dark'\n    }\n  ],\n  [\n    'maxflare',\n    {\n      accuracy: 100,\n      aliases: ['maxfire'],\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Sunny Day begins. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Flare',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Starts Sunny Day.',\n      target: 'Adjacent Foes',\n      type: 'Fire'\n    }\n  ],\n  [\n    'maxflutterby',\n    {\n      accuracy: 100,\n      aliases: ['maxbug'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Special Attack of each Pokémon on the opposing side is lowered by 1 stage, even if they have a substitute. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Flutterby',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1 Sp. Atk.',\n      target: 'Adjacent Foes',\n      type: 'Bug'\n    }\n  ],\n  [\n    'maxgeyser',\n    {\n      accuracy: 100,\n      aliases: ['maxwater'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Rain Dance begins. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Geyser',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Starts Rain Dance.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'maxguard',\n    {\n      accuracy: 100,\n      aliases: ['maxprotect', 'maxstatus'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"The user is protected from nearly all attacks made by other Pokémon during this turn, including Max and G-Max Moves. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Guard',\n      pp: 10,\n      priority: 4,\n      shortDesc: 'Protects user from moves & Max Moves this turn.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'maxhailstorm',\n    {\n      accuracy: 100,\n      aliases: ['maxice'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Hail begins. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Hailstorm',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Starts Hail.',\n      target: 'Adjacent Foes',\n      type: 'Ice'\n    }\n  ],\n  [\n    'maxknuckle',\n    {\n      accuracy: 100,\n      aliases: ['maxfighting'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Boosts the user and its allies' Attack by 1 stage. BP scales with the base move's BP. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Knuckle',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Allies: +1 Attack.',\n      target: 'Adjacent Foes',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'maxlightning',\n    {\n      accuracy: 100,\n      aliases: ['maxelectric'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Electric Terrain begins. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Lightning',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Starts Electric Terrain.',\n      target: 'Adjacent Foes',\n      type: 'Electric'\n    }\n  ],\n  [\n    'maxmindstorm',\n    {\n      accuracy: 100,\n      aliases: ['maxpsychic'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Psychic Terrain begins. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Mindstorm',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Starts Psychic Terrain.',\n      target: 'Adjacent Foes',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'maxooze',\n    {\n      accuracy: 100,\n      aliases: ['maxpoison'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Special Attack of each Pokémon on the user's side is raised by 1 stage, even if they have a substitute. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Ooze',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Allies: +1 Sp. Atk.',\n      target: 'Adjacent Foes',\n      type: 'Poison'\n    }\n  ],\n  [\n    'maxovergrowth',\n    {\n      accuracy: 100,\n      aliases: ['maxgrass'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Grassy Terrain begins. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Overgrowth',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Starts Grassy Terrain.',\n      target: 'Adjacent Foes',\n      type: 'Grass'\n    }\n  ],\n  [\n    'maxphantasm',\n    {\n      accuracy: 100,\n      aliases: ['maxghost'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Defense of each Pokémon on the opposing side is lowered by 1 stage, even if they have a substitute. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Phantasm',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1 Defense.',\n      target: 'Adjacent Foes',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'maxquake',\n    {\n      accuracy: 100,\n      aliases: ['maxground'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Special Defense of each Pokémon on the user's side is raised by 1 stage, even if they have a substitute. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Quake',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Allies: +1 Sp. Def.',\n      target: 'Adjacent Foes',\n      type: 'Ground'\n    }\n  ],\n  [\n    'maxrockfall',\n    {\n      accuracy: 100,\n      aliases: ['maxrock'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Sandstorm begins. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Rockfall',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Starts Sandstorm.',\n      target: 'Adjacent Foes',\n      type: 'Rock'\n    }\n  ],\n  [\n    'maxstarfall',\n    {\n      accuracy: 100,\n      aliases: ['maxfairy'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the effect of Misty Terrain begins. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Starfall',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Starts Misty Terrain.',\n      target: 'Adjacent Foes',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'maxsteelspike',\n    {\n      accuracy: 100,\n      aliases: ['maxsteel'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Defense of each Pokémon on the user's side is raised by 1 stage, even if they have a substitute. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Steelspike',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Allies: +1 Defense.',\n      target: 'Adjacent Foes',\n      type: 'Steel'\n    }\n  ],\n  [\n    'maxstrike',\n    {\n      accuracy: 100,\n      aliases: ['maxnormal'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Speed of each Pokémon on the opposing side is lowered by 1 stage, even if they have a substitute. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Strike',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1 Speed.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'maxwyrmwind',\n    {\n      accuracy: 100,\n      aliases: ['maxdragon'],\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to the base move's Max Move power. If this move is successful, the Attack of each Pokémon on the opposing side is lowered by 1 stage, even if they have a substitute. This effect does not happen if the user is not Dynamaxed. If this move is used as a base move, it deals damage with a power of 0.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Max Wyrmwind',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Base move affects power. Foes: -1 Attack.',\n      target: 'Adjacent Foes',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'meanlook',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field.',\n      name: 'Mean Look',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Prevents the target from switching out.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'meditate',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the user's Attack by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Meditate',\n      pp: 40,\n      priority: 0,\n      shortDesc: \"Raises the user's Attack by 1.\",\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'mefirst',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user uses the move the target chose for use this turn against it, if possible, with its power multiplied by 1.5. The move must be a damaging move other than Beak Blast, Belch, Blazing Torque, Combat Torque, Comeuppance, Counter, Covet, Focus Punch, Magical Torque, Me First, Metal Burst, Mirror Coat, Noxious Torque, Shell Trap, Struggle, Thief, or Wicked Torque. Fails if the target moves before the user. Ignores the target's substitute for the purpose of copying the move.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Me First',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Copies a foe at 1.5x power. User must be faster.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'megadrain',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      maxMovePower: 90,\n      name: 'Mega Drain',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'User recovers 50% of the damage dealt.',\n      target: 'Normal',\n      type: 'Grass',\n      zMovePower: 120\n    }\n  ],\n  [\n    'megahorn',\n    {\n      accuracy: 85,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 140,\n      name: 'Megahorn',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'megakick',\n    {\n      accuracy: 75,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 140,\n      name: 'Mega Kick',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'megapunch',\n    {\n      accuracy: 85,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Mega Punch',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'memento',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Lowers the target's Attack and Special Attack by 2 stages. The user faints unless this move misses or there is no target. Fails entirely if this move hits a substitute, but does not fail if the target's stats cannot be changed.\",\n      name: 'Memento',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Lowers target's Attack, Sp. Atk by 2. User faints.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'menacingmoonrazemaelstrom',\n    {\n      accuracy: 100,\n      aliases: ['menacing', 'mmm', 'zdawnwingsnecrozma', 'zlunala', 'zmoongeistbeam'],\n      basePower: '200',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'This move and its effects ignore the Abilities of other Pokémon.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'lunaliumz',\n      name: 'Menacing Moonraze Maelstrom',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'Ignores the Abilities of other Pokémon.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'metalburst',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Deals damage to the last opposing Pokémon to hit the user with a physical or special attack this turn equal to 1.5 times the HP lost by the user from that attack, rounded down. If the user did not lose HP from that attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical or special attack this turn.\",\n      maxMovePower: 100,\n      name: 'Metal Burst',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'If hit by an attack, returns 1.5x damage.',\n      target: 'Foe that last hit user',\n      type: 'Steel'\n    }\n  ],\n  [\n    'metalclaw',\n    {\n      accuracy: 95,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 10% chance to raise the user's Attack by 1 stage.\",\n      maxMovePower: 100,\n      name: 'Metal Claw',\n      pp: 35,\n      priority: 0,\n      shortDesc: \"10% chance to raise the user's Attack by 1.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'metalsound',\n    {\n      accuracy: 85,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Lowers the target's Special Defense by 2 stages.\",\n      name: 'Metal Sound',\n      pp: 40,\n      priority: 0,\n      shortDesc: \"Lowers the target's Sp. Def by 2.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'meteorassault',\n    {\n      accuracy: 100,\n      basePower: '150',\n      category: 'Physical',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 100,\n      name: 'Meteor Assault',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'meteorbeam',\n    {\n      accuracy: 90,\n      basePower: '120',\n      category: 'Special',\n      desc: \"This attack charges on the first turn and executes on the second. Raises the user's Special Attack by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n      name: 'Meteor Beam',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Raises user's Sp. Atk by 1 on turn 1. Hits turn 2.\",\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'meteormash',\n    {\n      accuracy: 90,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 20% chance to raise the user's Attack by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Meteor Mash',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"20% chance to raise the user's Attack by 1.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'metronome',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"A random move is selected for use, other than After You, Apple Acid, Armor Cannon, Assist, Astral Barrage, Aura Wheel, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Body Press, Branch Poke, Breaking Swipe, Celebrate, Chatter, Chilling Water, Chilly Reception, Clangorous Soul, Collision Course, Combat Torque, Comeuppance, Copycat, Counter, Covet, Crafty Shield, Decorate, Destiny Bond, Detect, Diamond Storm, Doodle, Double Iron Bash, Double Shock, Dragon Ascent, Dragon Energy, Drum Beating, Dynamax Cannon, Electro Drift, Endure, Eternabeam, False Surrender, Feint, Fiery Wrath, Fillet Away, Fleur Cannon, Focus Punch, Follow Me, Freeze Shock, Freezing Glare, Glacial Lance, Grav Apple, Helping Hand, Hold Hands, Hyper Drill, Hyperspace Fury, Hyperspace Hole, Ice Burn, Instruct, Jet Punch, Jungle Healing, King's Shield, Life Dew, Light of Ruin, Magical Torque, Make It Rain, Mat Block, Me First, Meteor Assault, Metronome, Mimic, Mind Blown, Mirror Coat, Mirror Move, Moongeist Beam, Nature Power, Nature's Madness, Noxious Torque, Obstruct, Order Up, Origin Pulse, Overdrive, Photon Geyser, Plasma Fists, Population Bomb, Pounce, Power Shift, Precipice Blades, Protect, Pyro Ball, Quash, Quick Guard, Rage Fist, Rage Powder, Raging Bull, Raging Fury, Relic Song, Revival Blessing, Ruination, Salt Cure, Secret Sword, Shed Tail, Shell Trap, Silk Trap, Sketch, Sleep Talk, Snap Trap, Snarl, Snatch, Snore, Snowscape, Spectral Thief, Spicy Extract, Spiky Shield, Spirit Break, Spotlight, Springtide Storm, Steam Eruption, Steel Beam, Strange Steam, Struggle, Sunsteel Strike, Surging Strikes, Switcheroo, Techno Blast, Tera Starstorm, Thief, Thousand Arrows, Thousand Waves, Thunder Cage, Thunderous Kick, Tidy Up, Trailblaze, Transform, Trick, Twin Beam, V-create, Wicked Blow, Wicked Torque, or Wide Guard.\",\n      name: 'Metronome',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Picks a random move.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'mightycleave',\n    {\n      accuracy: 100,\n      basePower: '95',\n      category: 'Physical',\n      desc: \"Mighty Cleave inflicts damage. It bypasses the effects of Protect, Detect, Spiky Shield, King's Shield, Baneful Bunker, Silk Trap, and Burning Bulwark, but does not lift the effects of these moves.\",\n      name: 'Mighty Cleave',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Bypasses protection without breaking it.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'milkdrink',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'The user restores 1/2 of its maximum HP, rounded half up.',\n      isFieldMove:\n        \"Tthe Pokémon cuts some of its HP to recover another Pokémon's HP. It can be learned by Miltank, Skiddo and Gogoat by leveling up.\",\n      name: 'Milk Drink',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Heals the user by 50% of its max HP.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'mimic',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.',\n      name: 'Mimic',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'The last move the target used replaces this one.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'mindblown',\n    {\n      accuracy: 100,\n      basePower: '150',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Whether or not this move is successful and even if it would cause fainting, the user loses 1/2 of its maximum HP, rounded up, unless the user has the Magic Guard Ability. This move is prevented from executing and the user does not lose HP if any active Pokémon has the Damp Ability, or if this move is Fire type and the user is affected by Powder or the weather is Primordial Sea.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 150,\n      name: 'Mind Blown',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User loses 50% max HP. Hits adjacent Pokémon.',\n      target: 'All Adjacent',\n      type: 'Fire'\n    }\n  ],\n  [\n    'mindreader',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Until the end of the next turn, the target cannot avoid the user's moves, even if the target is in the middle of a two-turn move. The effect ends if either the user or the target leaves the field. Fails if this effect is active for the user.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mind Reader',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"User's next move will not miss the target.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'minimize',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Raises the user's evasiveness by 2 stages. Whether or not the user's evasiveness was changed, Body Slam, Dragon Rush, Flying Press, Heat Crash, Heavy Slam, Malicious Moonsault, Steamroller, Stomp, and Supercell Slam will not check accuracy and have their damage doubled if used against the user while it is active.\",\n      name: 'Minimize',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Raises the user's evasiveness by 2.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'miracleeye',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'As long as the target remains active, its evasiveness stat stage is ignored during accuracy checks against it if it is greater than 0, and Psychic-type attacks can hit the target if it is a Dark type. Fails if the target is already affected, or affected by Foresight or Odor Sleuth.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Miracle Eye',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'Psychic hits Dark. Evasiveness ignored.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'mirrorcoat',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Deals damage to the last opposing Pokémon to hit the user with a special attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's special attack this turn.\",\n      maxMovePower: 100,\n      name: 'Mirror Coat',\n      pp: 20,\n      priority: -5,\n      shortDesc: 'If hit by special attack, returns double damage.',\n      target: 'Foe that last hit user',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'mirrormove',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user uses the last move used by the target. The copied move is used against that target, if possible. Fails if the target has not made a move, or if the last move used cannot be copied by this move.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mirror Move',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"User uses the target's last used move against it.\",\n      target: 'Normal',\n      type: 'Flying'\n    }\n  ],\n  [\n    'mirrorshot',\n    {\n      accuracy: 85,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 30% chance to lower the target's accuracy by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mirror Shot',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"30% chance to lower the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'mist',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"For 5 turns, the user and its party members are protected from having their stat stages lowered by other Pokémon. Fails if the effect is already active on the user's side.\",\n      name: 'Mist',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"For 5 turns, protects user's party from stat drops.\",\n      target: \"Ally's Side\",\n      type: 'Ice'\n    }\n  ],\n  [\n    'mistball',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Has a 50% chance to lower the target's Special Attack by 1 stage.\",\n      maxMovePower: 120,\n      name: 'Mist Ball',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"50% chance to lower the target's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'mistyexplosion',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      desc: \"If the current terrain is Misty Terrain and the user is grounded, this move's power is multiplied by 1.5. The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokémon has the Damp Ability.\",\n      name: 'Misty Explosion',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User faints. User on Misty Terrain: 1.5x power.',\n      target: 'All Adjacent',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'mistyterrain',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'For 5 turns, the terrain becomes Misty Terrain. During the effect, the power of Dragon-type attacks used against grounded Pokémon is multiplied by 0.5 and grounded Pokémon cannot be inflicted with a non-volatile status condition nor confusion. Grounded Pokémon can become affected by Yawn but cannot fall asleep from its effect. Camouflage transforms the user into a Fairy type, Nature Power becomes Moonblast, and Secret Power has a 30% chance to lower Special Attack by 1 stage. Fails if the current terrain is Misty Terrain.',\n      name: 'Misty Terrain',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"5 turns. Can't status,-Dragon power vs grounded.\",\n      target: 'All',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'moonblast',\n    {\n      accuracy: 100,\n      basePower: '95',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 30% chance to lower the target's Special Attack by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Moonblast',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"30% chance to lower the target's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'moongeistbeam',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'This move and its effects ignore the Abilities of other Pokémon.',\n      maxMovePower: 130,\n      name: 'Moongeist Beam',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Ignores the Abilities of other Pokémon.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'moonlight',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'The user restores 1/2 of its maximum HP if Delta Stream or no weather conditions are in effect or if the user is holding Utility Umbrella, 2/3 of its maximum HP if the weather is Desolate Land or Sunny Day, and 1/4 of its maximum HP if the weather is Primordial Sea, Rain Dance, Sandstorm, or Snow, all rounded half down.',\n      name: 'Moonlight',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Heals the user by a weather-dependent amount.',\n      target: 'Self',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'morningsun',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'The user restores 1/2 of its maximum HP if Delta Stream or no weather conditions are in effect or if the user is holding Utility Umbrella, 2/3 of its maximum HP if the weather is Desolate Land or Sunny Day, and 1/4 of its maximum HP if the weather is Primordial Sea, Rain Dance, Sandstorm, or Snow, all rounded half down.',\n      name: 'Morning Sun',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Heals the user by a weather-dependent amount.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'mortalspin',\n    {\n      accuracy: 100,\n      basePower: '30',\n      category: 'Physical',\n      desc: \"If this move is successful and the user has not fainted, the effects of Leech Seed and binding moves end for the user, and all hazards are removed from the user's side of the field. Has a 100% chance to poison the target.\",\n      name: 'Mortal Spin',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Poisons foes, frees user from hazards/bind/leech.',\n      target: 'Adjacent Foes',\n      type: 'Poison'\n    }\n  ],\n  [\n    'mountaingale',\n    {\n      accuracy: 85,\n      basePower: '100',\n      category: 'Physical',\n      desc: 'Has a 30% chance to make the target flinch.',\n      name: 'Mountain Gale',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'mudbomb',\n    {\n      accuracy: 85,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: \"Has a 30% chance to lower the target's accuracy by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mud Bomb',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"30% chance to lower the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'muddywater',\n    {\n      accuracy: 85,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Has a 30% chance to lower the target's accuracy by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Muddy Water',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to lower the foe(s) accuracy by 1.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'mudshot',\n    {\n      accuracy: 95,\n      basePower: '55',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n      maxMovePower: 110,\n      name: 'Mud Shot',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Speed by 1.\",\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'mudslap',\n    {\n      accuracy: 100,\n      basePower: '20',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n      maxMovePower: 90,\n      name: 'Mud-Slap',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'mudsport',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'For 5 turns, all Electric-type attacks used by any active Pokémon have their power multiplied by 0.33. Fails if this effect is already active.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Mud Sport',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'For 5 turns, Electric-type attacks have 1/3 power.',\n      target: 'All',\n      type: 'Ground'\n    }\n  ],\n  [\n    'multiattack',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"This move's type depends on the user's held Memory.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 95,\n      name: 'Multi-Attack',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Type varies based on the held Memory.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'mysticalfire',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Mystical Fire',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'mysticalpower',\n    {\n      accuracy: 90,\n      basePower: '70',\n      category: 'Special',\n      desc: \"Has a 100% chance to raise the user's Special Attack by 1 stage.\",\n      name: 'Mystical Power',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to raise the user's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'nastyplot',\n    {\n      accuracy: 100,\n      aliases: ['np'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Raises the user's Special Attack by 2 stages.\",\n      name: 'Nasty Plot',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Sp. Atk by 2.\",\n      target: 'Self',\n      type: 'Dark'\n    }\n  ],\n  [\n    'naturalgift',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Natural Gift',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Power and type depends on the user's Berry.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'naturepower',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'This move calls another move for use based on the battle terrain. Tri Attack on the regular Wi-Fi terrain, Thunderbolt during Electric Terrain, Moonblast during Misty Terrain, Energy Ball during Grassy Terrain, and Psychic during Psychic Terrain.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Nature Power',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Attack depends on terrain (default Tri Attack).',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'naturesmadness',\n    {\n      accuracy: 90,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Deals damage to the target equal to half of its current HP, rounded down, but not less than 1 HP.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 100,\n      name: \"Nature's Madness\",\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Does damage equal to 1/2 target's current HP.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'needlearm',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Has a 30% chance to make the target flinch.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Needle Arm',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'neverendingnightmare',\n    {\n      accuracy: 100,\n      aliases: ['zghost'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'ghostiumz',\n      name: 'Never-Ending Nightmare',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'nightdaze',\n    {\n      accuracy: 95,\n      basePower: '85',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"Has a 40% chance to lower the target's accuracy by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Night Daze',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"40% chance to lower the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'nightmare',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Causes the target to lose 1/4 of its maximum HP, rounded down, at the end of each turn as long as it is asleep. This move does not affect the target unless it is asleep. The effect ends when the target wakes up, even if it falls asleep again in the same turn.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Nightmare',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'A sleeping target is hurt by 1/4 max HP per turn.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'nightshade',\n    {\n      accuracy: 100,\n      basePower: 'level',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Deals damage to the target equal to the user's level.\",\n      maxMovePower: 100,\n      name: 'Night Shade',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Does damage equal to the user's level.\",\n      target: 'Normal',\n      type: 'Ghost',\n      zMovePower: 100\n    }\n  ],\n  [\n    'nightslash',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 120,\n      name: 'Night Slash',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'nobleroar',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Lowers the target's Attack and Special Attack by 1 stage.\",\n      name: 'Noble Roar',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"Lowers the target's Attack and Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'noretreat',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage, but it becomes prevented from switching out. The user can still switch out if it uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. Fails if the user has already been prevented from switching by this effect.\",\n      name: 'No Retreat',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Raises all stats by 1 (not acc/eva). Traps user.',\n      target: 'Self',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'noxioustorque',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      desc: 'Has a 30% chance to poison the target.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Noxious Torque',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to poison the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'nuzzle',\n    {\n      accuracy: 100,\n      basePower: '20',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'Has a 100% chance to paralyze the target.',\n      maxMovePower: 90,\n      name: 'Nuzzle',\n      pp: 20,\n      priority: 0,\n      shortDesc: '100% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'oblivionwing',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'The user recovers 3/4 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Oblivion Wing',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User recovers 75% of the damage dealt.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'obstruct',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"The user is protected from most attacks made by other Pokémon during this turn, and Pokémon trying to make contact with the user have their Defense lowered by 2 stages. Non-damaging moves go through this protection. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Obstruct',\n      pp: 10,\n      priority: 4,\n      shortDesc: 'Protects from damaging attacks. Contact: -2 Def.',\n      target: 'Self',\n      type: 'Dark'\n    }\n  ],\n  [\n    'oceanicoperetta',\n    {\n      accuracy: 100,\n      aliases: ['oceanic', 'oo', 'zprimarina', 'zsparklingaria'],\n      basePower: '195',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'primariumz',\n      name: 'Oceanic Operetta',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'octazooka',\n    {\n      accuracy: 85,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Has a 50% chance to lower the target's accuracy by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 120,\n      name: 'Octazooka',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"50% chance to lower the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'octolock',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Prevents the target from switching out. At the end of each turn during effect, the target's Defense and Special Defense are lowered by 1 stage. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Octolock',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Traps target, lowers Def and SpD by 1 each turn.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'odorsleuth',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'As long as the target remains active, its evasiveness stat stage is ignored during accuracy checks against it if it is greater than 0, and Normal- and Fighting-type attacks can hit the target if it is a Ghost type. Fails if the target is already affected, or affected by Foresight or Miracle Eye.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Odor Sleuth',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'Fighting, Normal hit Ghost. Evasiveness ignored.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'ominouswind',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 10% chance to raise the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Ominous Wind',\n      pp: 5,\n      priority: 0,\n      shortDesc: '10% chance to raise all stats by 1 (not acc/eva).',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'orderup',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: \"If an ally Tatsugiri has activated its Commander Ability, this move raises the user's Attack by 1 stage if the Tatsugiri is Curly Form, Defense by 1 stage if Droopy Form, or Speed by 1 stage if Stretchy Form. The effect happens even if the Tatsugiri that activated the effect has since fainted.\",\n      name: 'Order Up',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Curly|Droopy|Stretchy eaten: +1 Atk|Def|Spe.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'originpulse',\n    {\n      accuracy: 85,\n      basePower: '110',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      maxMovePower: 140,\n      name: 'Origin Pulse',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent foes.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'outrage',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.',\n      maxMovePower: 140,\n      name: 'Outrage',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Lasts 2-3 turns. Confuses the user afterwards.',\n      target: 'Random',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'overdrive',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Overdrive',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits foe(s).',\n      target: 'Adjacent Foes',\n      type: 'Electric'\n    }\n  ],\n  [\n    'overheat',\n    {\n      accuracy: 90,\n      basePower: '130',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Lowers the user's Special Attack by 2 stages.\",\n      maxMovePower: 140,\n      name: 'Overheat',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Sp. Atk by 2.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'painsplit',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user and the target's HP become the average of their current HP, rounded down, but not more than the maximum HP of either one.\",\n      name: 'Pain Split',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Shares HP of user and target equally.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'paleowave',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 20% chance to lower the target's Attack by 1 stage.\",\n      isNonstandard: IsNonStandard.Cap,\n      name: 'Paleo Wave',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"20% chance to lower the target's Attack by 1.\",\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'paraboliccharge',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n      maxMovePower: 120,\n      name: 'Parabolic Charge',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'User recovers 50% of the damage dealt.',\n      target: 'All Adjacent',\n      type: 'Electric'\n    }\n  ],\n  [\n    'partingshot',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"Lowers the target's Attack and Special Attack by 1 stage. If this move is successful, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if the target's Attack and Special Attack stat stages were both unchanged, or if there are no unfainted party members.\",\n      name: 'Parting Shot',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers target's Atk, Sp. Atk by 1. User switches.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'payback',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Power doubles if the user moves after the target this turn, including actions taken through Instruct or the Dancer Ability. Switching in does not count as an action.',\n      maxMovePower: 100,\n      name: 'Payback',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Power doubles if the user moves after the target.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'payday',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Pay Day',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Scatters coins.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'peck',\n    {\n      accuracy: 100,\n      basePower: '35',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Peck',\n      pp: 35,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'perishsong',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Each active Pokémon receives a perish count of 4 if it doesn't already have a perish count. At the end of each turn including the turn used, the perish count of all active Pokémon lowers by 1 and Pokémon faint if the number reaches 0. The perish count is removed from Pokémon that switch out. If a Pokémon uses Baton Pass while it has a perish count, the replacement will gain the perish count and continue to count down.\",\n      name: 'Perish Song',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'All active Pokémon will faint in 3 turns.',\n      target: 'All',\n      type: 'Normal'\n    }\n  ],\n  [\n    'petalblizzard',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Petal Blizzard',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent Pokémon.',\n      target: 'All Adjacent',\n      type: 'Grass'\n    }\n  ],\n  [\n    'petaldance',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.',\n      maxMovePower: 140,\n      name: 'Petal Dance',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Lasts 2-3 turns. Confuses the user afterwards.',\n      target: 'Random',\n      type: 'Grass'\n    }\n  ],\n  [\n    'phantomforce',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"If this move is successful, it breaks through the target's Baneful Bunker, Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokémon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokémon may attack the target's side normally. This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks. If the user is holding a Power Herb, the move completes in one turn.\",\n      maxMovePower: 130,\n      name: 'Phantom Force',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Disappears turn 1. Hits turn 2. Breaks protection.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'photongeyser',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"This move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes. This move and its effects ignore the Abilities of other Pokémon.\",\n      maxMovePower: 130,\n      name: 'Photon Geyser',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Physical if user's Atk > Sp. Atk. Ignores Abilities.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'pikapapow',\n    {\n      accuracy: 100,\n      basePower: '(happiness * 10) / 25',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Pika Papow',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Max happiness: 102 power. Can't miss.\",\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'pinmissile',\n    {\n      accuracy: 95,\n      basePower: '25',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 130,\n      name: 'Pin Missile',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'plasmafists',\n    {\n      accuracy: 100,\n      aliases: ['pfists'],\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'If this move is successful, causes Normal-type moves to become Electric type this turn.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Plasma Fists',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Normal moves become Electric type this turn.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'playnice',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Attack by 1 stage.\",\n      name: 'Play Nice',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers the target's Attack by 1.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'playrough',\n    {\n      accuracy: 90,\n      aliases: ['playaround'],\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Has a 10% chance to lower the target's Attack by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Play Rough',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Attack by 1.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'pluck',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n      maxMovePower: 110,\n      name: 'Pluck',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"User steals and eats the target's Berry.\",\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'poisonfang',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Has a 50% chance to badly poison the target.',\n      maxMovePower: 75,\n      name: 'Poison Fang',\n      pp: 15,\n      priority: 0,\n      shortDesc: '50% chance to badly poison the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'poisongas',\n    {\n      accuracy: 90,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Poisons the target.',\n      name: 'Poison Gas',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'Poisons the foe(s).',\n      target: 'Adjacent Foes',\n      type: 'Poison'\n    }\n  ],\n  [\n    'poisonjab',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to poison the target.',\n      maxMovePower: 90,\n      name: 'Poison Jab',\n      pp: 20,\n      priority: 0,\n      shortDesc: '30% chance to poison the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'poisonpowder',\n    {\n      accuracy: 75,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Poisons the target.',\n      name: 'Poison Powder',\n      pp: 35,\n      priority: 0,\n      shortDesc: 'Poisons the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'poisonsting',\n    {\n      accuracy: 100,\n      basePower: '15',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Has a 30% chance to poison the target.',\n      maxMovePower: 70,\n      name: 'Poison Sting',\n      pp: 35,\n      priority: 0,\n      shortDesc: '30% chance to poison the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'poisontail',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Has a 10% chance to poison the target and a higher chance for a critical hit.',\n      maxMovePower: 75,\n      name: 'Poison Tail',\n      pp: 25,\n      priority: 0,\n      shortDesc: 'High critical hit ratio. 10% chance to poison.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'pollenpuff',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: 'If the target is an ally, this move restores 1/2 of its maximum HP, rounded down, instead of dealing damage.',\n      maxMovePower: 130,\n      name: 'Pollen Puff',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'If the target is an ally, heals 50% of its max HP.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'poltergeist',\n    {\n      accuracy: 90,\n      basePower: '110',\n      category: 'Physical',\n      desc: \"This move fails if the target doesn't have an item or is afflicted with Embargo. Additionally, this move fails if Magic Room is up, or the target has the ability Klutz and is not holding an item that ignores Klutz.\",\n      name: 'Poltergeist',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Fails if the target has no held item.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'populationbomb',\n    {\n      accuracy: 90,\n      basePower: '20',\n      category: 'Physical',\n      desc: \"Hits ten times. This move checks accuracy for each hit, and the attack ends if the target avoids a hit. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit ten times. If the user is holding Loaded Dice, this move hits four to ten times at random without checking accuracy between hits.\",\n      name: 'Population Bomb',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 10 times. Each hit can miss.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'pounce',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n      name: 'Pounce',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Speed by 1.\",\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'pound',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Pound',\n      pp: 35,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'powder',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'If the target uses a Fire-type move this turn, it is prevented from executing and the target loses 1/4 of its maximum HP, rounded half up. This effect does not happen if the Fire-type move is prevented by Primordial Sea.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Powder',\n      pp: 20,\n      priority: 1,\n      shortDesc: 'If using a Fire move, target loses 1/4 max HP.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'powdersnow',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to freeze the target.',\n      maxMovePower: 90,\n      name: 'Powder Snow',\n      pp: 25,\n      priority: 0,\n      shortDesc: '10% chance to freeze the foe(s).',\n      target: 'Adjacent Foes',\n      type: 'Ice'\n    }\n  ],\n  [\n    'powergem',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Power Gem',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'powershift',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: 'The user swaps its Attack and Defense stats, and stat stage changes remain on their respective stats. This move can be used again to swap the stats back. If the user uses Baton Pass, the replacement will have its Attack and Defense stats swapped if the effect is active. If the user has its stats recalculated by changing forme while its stats are swapped, this effect is ignored but is still active for the purposes of Baton Pass.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Power Shift',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Switches user's Attack and Defense stats.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'powersplit',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user and the target have their Attack and Special Attack stats set to be equal to the average of the user and the target's Attack and Special Attack stats, respectively, rounded down. Stat stage changes are unaffected.\",\n      name: 'Power Split',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Averages Attack and Sp. Atk stats with target.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'powerswap',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user swaps its Attack and Special Attack stat stage changes with the target.',\n      name: 'Power Swap',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Swaps Attack and Sp. Atk stat stages with target.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'powertrick',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user swaps its Attack and Defense stats, and stat stage changes remain on their respective stats. This move can be used again to swap the stats back. If the user uses Baton Pass, the replacement will have its Attack and Defense stats swapped if the effect is active. If the user has its stats recalculated by changing forme while its stats are swapped, this effect is ignored but is still active for the purposes of Baton Pass.',\n      name: 'Power Trick',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Switches user's Attack and Defense stats.\",\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'powertrip',\n    {\n      accuracy: 100,\n      basePower: '20',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n      maxMovePower: 130,\n      name: 'Power Trip',\n      pp: 10,\n      priority: 0,\n      shortDesc: \" + 20 power for each of the user's stat boosts.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'poweruppunch',\n    {\n      accuracy: 100,\n      aliases: ['glowpunch', 'pup'],\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Has a 100% chance to raise the user's Attack by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 70,\n      name: 'Power-Up Punch',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"100% chance to raise the user's Attack by 1.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'powerwhip',\n    {\n      accuracy: 85,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 140,\n      name: 'Power Whip',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'precipiceblades',\n    {\n      accuracy: 85,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 140,\n      name: 'Precipice Blades',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'No additional effect. Hits adjacent foes.',\n      target: 'Adjacent Foes',\n      type: 'Ground'\n    }\n  ],\n  [\n    'present',\n    {\n      accuracy: 90,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'If this move is successful, it deals damage or heals the target. 40% chance for 40 power, 30% chance for 80 power, 10% chance for 120 power, and 20% chance to heal the target by 1/4 of its maximum HP, rounded down.',\n      maxMovePower: 100,\n      name: 'Present',\n      pp: 15,\n      priority: 0,\n      shortDesc: '40, 80, 120 power, or heals target 1/4 max HP.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'prismaticlaser',\n    {\n      accuracy: 100,\n      basePower: '160',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      maxMovePower: 150,\n      name: 'Prismatic Laser',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'protect',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      name: 'Protect',\n      pp: 10,\n      priority: 4,\n      shortDesc: 'Prevents moves from affecting the user this turn.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'psybeam',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to confuse the target.',\n      maxMovePower: 120,\n      name: 'Psybeam',\n      pp: 20,\n      priority: 0,\n      shortDesc: '10% chance to confuse the target.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psyblade',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: \"If the current terrain is Electric Terrain, this move's power is multiplied by 1.5.\",\n      name: 'Psyblade',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'During Electric Terrain: 1.5x power.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psychic',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Psychic',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"10% chance to lower the target's Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psychicfangs',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n      maxMovePower: 130,\n      name: 'Psychic Fangs',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Destroys screens, unless the target is immune.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psychicnoise',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Special',\n      desc: 'For 2 turns, the target is prevented from restoring any HP as long as it remains active. During the effect, healing and draining moves are unusable, and Abilities and items that grant healing will not heal the user. If an affected Pokémon uses Baton Pass, the replacement will remain unable to restore its HP. Pain Split and the Regenerator Ability are unaffected.',\n      name: 'Psychic Noise',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'For 2 turns, the target is prevented from healing.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psychicterrain',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"For 5 turns, the terrain becomes Psychic Terrain. During the effect, the power of Psychic-type attacks made by grounded Pokémon is multiplied by 1.3 and grounded Pokémon cannot be hit by moves with priority greater than 0, unless the target is an ally. Camouflage transforms the user into a Psychic type, Nature Power becomes Psychic, and Secret Power has a 30% chance to lower the target's Speed by 1 stage. Fails if the current terrain is Psychic Terrain.\",\n      name: 'Psychic Terrain',\n      pp: 10,\n      priority: 0,\n      shortDesc: '5 turns. Grounded: +Psychic power, priority-safe.',\n      target: 'All',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psychoboost',\n    {\n      accuracy: 90,\n      basePower: '140',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Lowers the user's Special Attack by 2 stages.\",\n      maxMovePower: 140,\n      name: 'Psycho Boost',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Sp. Atk by 2.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psychocut',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 120,\n      name: 'Psycho Cut',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psychoshift',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user's non-volatile status condition is transferred to the target, and the user is then cured. Fails if the user has no non-volatile status condition or if the target already has one.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Psycho Shift',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Transfers the user's status ailment to the target.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psychup',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user copies all of the target's current stat stage changes.\",\n      name: 'Psych Up',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Copies the target's current stat stages.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'psyshieldbash',\n    {\n      accuracy: 90,\n      basePower: '70',\n      category: 'Physical',\n      desc: \"Has a 100% chance to raise the user's Defense by 1 stage.\",\n      name: 'Psyshield Bash',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to raise the user's Defense by 1.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psyshock',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Deals damage to the target based on its Defense instead of Special Defense.',\n      maxMovePower: 130,\n      name: 'Psyshock',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Damages target based on Defense, not Sp. Def.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psystrike',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Deals damage to the target based on its Defense instead of Special Defense.',\n      maxMovePower: 130,\n      name: 'Psystrike',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Damages target based on Defense, not Sp. Def.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'psywave',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Deals damage to the target equal to (user's level) * (X + 50) / 100, where X is a random number from 0 to 100, rounded down, but not less than 1 HP.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Psywave',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Random damage equal to 0.5x-1.5x user's level.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'pulverizingpancake',\n    {\n      accuracy: 100,\n      aliases: ['pp', 'pulverizing', 'zgigaimpact', 'zsnorlax'],\n      basePower: '210',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'snorliumz',\n      name: 'Pulverizing Pancake',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'punishment',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power is equal to 60+(X*20), where X is the target's total stat stage changes that are greater than 0, but not more than 200 power.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Punishment',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"60 power +20 for each of the target's stat boosts.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'purify',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'The target is cured if it has a non-volatile status condition. If the target was cured, the user restores 1/2 of its maximum HP, rounded down.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Purify',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Cures target's status; heals user 1/2 max HP if so.\",\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'pursuit',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"If an opposing Pokémon switches out this turn, this move hits that Pokémon before it leaves the field, even if it was not the original target. If the user moves after an opponent using Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokémon does not become active until the end of the turn.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Pursuit',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'If a foe is switching out, hits it at 2x power.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'pyroball',\n    {\n      accuracy: 90,\n      basePower: '120',\n      category: 'Physical',\n      desc: 'Has a 10% chance to burn the target.',\n      maxMovePower: 140,\n      name: 'Pyro Ball',\n      pp: 5,\n      priority: 0,\n      shortDesc: '10% chance to burn the target. Thaws user.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'quash',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Causes the target to take its turn after all other Pokémon this turn, no matter the priority of its selected move. Fails if the target already moved this turn.',\n      name: 'Quash',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Forces the target to move last this turn.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'quickattack',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Quick Attack',\n      pp: 30,\n      priority: 1,\n      shortDesc: 'Usually goes first.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'quickguard',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"The user and its party members are protected from attacks with original or altered priority greater than 0 made by other Pokémon, including allies, during this turn. This move modifies the same 1/X chance of being successful used by other protection moves, where X starts at 1 and triples each time this move is successfully used, but does not use the chance to check for failure. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn or if this move is already in effect for the user's side.\",\n      name: 'Quick Guard',\n      pp: 15,\n      priority: 3,\n      shortDesc: 'Protects allies from priority attacks this turn.',\n      target: \"Ally's Side\",\n      type: 'Fighting'\n    }\n  ],\n  [\n    'quiverdance',\n    {\n      accuracy: 100,\n      aliases: ['qd'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the user's Special Attack, Special Defense, and Speed by 1 stage.\",\n      name: 'Quiver Dance',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Sp. Atk, Sp. Def, Speed by 1.\",\n      target: 'Self',\n      type: 'Bug'\n    }\n  ],\n  [\n    'rage',\n    {\n      accuracy: 100,\n      basePower: '20',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rage',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Attack by 1 if hit during use.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'ragefist',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      desc: 'Power is equal to 50+(X*50), where X is the total number of times the user has been hit by a damaging attack during the battle, even if the user did not lose HP from the attack. X cannot be greater than 6 and does not reset upon switching out or fainting. Each hit of a multi-hit attack is counted, but confusion damage is not counted.',\n      name: 'Rage Fist',\n      pp: 10,\n      priority: 0,\n      shortDesc: '+50 power for each time user was hit. Max 6 hits.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'ragepowder',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Until the end of the turn, all single-target attacks from the opposing side are redirected to the user. Such attacks are redirected to the user before they can be reflected by Magic Coat or the Magic Bounce Ability, or drawn in by the Lightning Rod or Storm Drain Abilities. Fails if it is not a Double Battle or Battle Royal. This effect is ignored while the user is under the effect of Sky Drop.',\n      name: 'Rage Powder',\n      pp: 20,\n      priority: 2,\n      shortDesc: \"The foes' moves target the user on the turn used.\",\n      target: 'Self',\n      type: 'Bug'\n    }\n  ],\n  [\n    'ragingbull',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      desc: \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated. If the user's current form is a Paldean Tauros, this move's type changes to match. Fighting type for Combat Breed, Fire type for Blaze Breed, and Water type for Aqua Breed.\",\n      name: 'Raging Bull',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Destroys screens. Type depends on user's form.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'ragingfury',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      desc: 'The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.',\n      name: 'Raging Fury',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Lasts 2-3 turns. Confuses the user afterwards.',\n      target: 'Random',\n      type: 'Fire'\n    }\n  ],\n  [\n    'raindance',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.',\n      name: 'Rain Dance',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'For 5 turns, heavy rain powers Water moves.',\n      target: 'All',\n      type: 'Water'\n    }\n  ],\n  [\n    'rapidspin',\n    {\n      accuracy: 100,\n      aliases: ['spin'],\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"If this move is successful and the user has not fainted, the effects of Leech Seed and binding moves end for the user, and all hazards are removed from the user's side of the field. Has a 100% chance to raise the user's Speed by 1 stage.\",\n      maxMovePower: 100,\n      name: 'Rapid Spin',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'Free user from hazards/bind/Leech Seed; +1 Spe.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'razorleaf',\n    {\n      accuracy: 95,\n      basePower: '55',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 110,\n      name: 'Razor Leaf',\n      pp: 25,\n      priority: 0,\n      shortDesc: 'High critical hit ratio. Hits adjacent foes.',\n      target: 'Adjacent Foes',\n      type: 'Grass'\n    }\n  ],\n  [\n    'razorshell',\n    {\n      accuracy: 95,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Razor Shell',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"50% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'razorwind',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit. This attack charges on the first turn and executes on the second. If the user is holding a Power Herb, the move completes in one turn.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Razor Wind',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Charges, then hits foe(s) turn 2. High crit ratio.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'recover',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user restores 1/2 of its maximum HP, rounded half up.',\n      name: 'Recover',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Heals the user by 50% of its max HP.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'recycle',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user regains the item it last used. Fails if the user is holding an item, if the user has not held an item, if the item was a popped Air Balloon, if the item was picked up by a Pokémon with the Pickup Ability, or if the item was lost to Bug Bite, Corrosive Gas, Covet, Incinerate, Knock Off, Pluck, or Thief. Items thrown with Fling can be regained.',\n      name: 'Recycle',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Restores the item the user last used.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'reflect',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n      name: 'Reflect',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'For 5 turns, physical damage to allies is halved.',\n      target: \"Ally's Side\",\n      type: 'Psychic'\n    }\n  ],\n  [\n    'reflecttype',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Causes the user's types to become the same as the current types of the target. If the target's current types include typeless and a non-added type, typeless is ignored. If the target's current types include typeless and an added type from Forest's Curse or Trick-or-Treat, typeless is copied as the Normal type instead. Fails if the user is an Arceus or a Silvally, if the user is Terastallized, or if the target's current type is typeless alone.\",\n      name: 'Reflect Type',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'User becomes the same type as the target.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'refresh',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Refresh',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'User cures its burn, poison, or paralysis.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'relicsong',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to cause the target to fall asleep. If this move is successful on at least one target and the user is a Meloetta, it changes to Pirouette Forme if it is currently in Aria Forme, or changes to Aria Forme if it is currently in Pirouette Forme. This forme change does not happen if the Meloetta has the Sheer Force Ability. The Pirouette Forme reverts to Aria Forme when Meloetta is not active.',\n      maxMovePower: 130,\n      name: 'Relic Song',\n      pp: 10,\n      priority: 0,\n      shortDesc: '10% chance to sleep foe(s). Meloetta transforms.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'rest',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.',\n      name: 'Rest',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User sleeps 2 turns and restores HP and status.',\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'retaliate',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Power doubles if one of the user's party members fainted last turn.\",\n      maxMovePower: 20,\n      name: 'Retaliate',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Power doubles if an ally fainted last turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'return',\n    {\n      accuracy: 100,\n      basePower: \"(user's Happiness * 2/5)\",\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Return',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Max 102 power at maximum Happiness.',\n      target: 'Normal',\n      type: 'Normal',\n      zMovePower: 160\n    }\n  ],\n  [\n    'revelationdance',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"This move's type depends on the user's primary type. If the user's primary type is typeless, this move's type is the user's secondary type if it has one, otherwise the added type from Forest's Curse or Trick-or-Treat. This move is typeless if the user's type is typeless alone.\",\n      maxMovePower: 130,\n      name: 'Revelation Dance',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Type varies based on the user's primary type.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'revenge',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Power doubles if the user was hit by the target this turn.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Revenge',\n      pp: 10,\n      priority: -4,\n      shortDesc: 'Power doubles if user is damaged by the target.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'reversal',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n      maxMovePower: 100,\n      name: 'Reversal',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'More power the less HP the user has left.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'revivalblessing',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: 'A fainted party member is selected and revived with 1/2 its max HP, rounded down. Fails if there are no fainted party members.',\n      name: 'Revival Blessing',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'Revives a fainted Pokémon to 50% HP.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'risingvoltage',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Special',\n      desc: \"If the current terrain is Electric Terrain and the target is grounded, this move's power is doubled.\",\n      maxMovePower: 140,\n      name: 'Rising Voltage',\n      pp: 20,\n      priority: 0,\n      shortDesc: '2x power if target is grounded in Electric Terrain.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'roar',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: 'The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.',\n      name: 'Roar',\n      pp: 20,\n      priority: -6,\n      shortDesc: 'Forces the target to switch to a random ally.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'roaroftime',\n    {\n      accuracy: 90,\n      basePower: '150',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      maxMovePower: 150,\n      name: 'Roar of Time',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'rockblast',\n    {\n      accuracy: 90,\n      basePower: '25',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 130,\n      name: 'Rock Blast',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'rockclimb',\n    {\n      accuracy: 85,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 20% chance to confuse the target.',\n      isFieldMove:\n        'The Pokémon can climb up rocky walls. Rock climb can be taught to a Pokémon by using HM08 in Generation IV. Since Generation V, it has lost its HM status.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rock Climb',\n      pp: 20,\n      priority: 0,\n      shortDesc: '20% chance to confuse the target.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'rockpolish',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Raises the user's Speed by 2 stages.\",\n      name: 'Rock Polish',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Speed by 2.\",\n      target: 'Self',\n      type: 'Rock'\n    }\n  ],\n  [\n    'rockslide',\n    {\n      accuracy: 90,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to make the target flinch.',\n      maxMovePower: 130,\n      name: 'Rock Slide',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to make the foe(s) flinch.',\n      target: 'Adjacent Foes',\n      type: 'Rock'\n    }\n  ],\n  [\n    'rocksmash',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n      isFieldMove:\n        'The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.',\n      maxMovePower: 70,\n      name: 'Rock Smash',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"50% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'rockthrow',\n    {\n      accuracy: 90,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 100,\n      name: 'Rock Throw',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'rocktomb',\n    {\n      accuracy: 95,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n      maxMovePower: 110,\n      name: 'Rock Tomb',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Speed by 1.\",\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'rockwrecker',\n    {\n      accuracy: 90,\n      basePower: '150',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If this move is successful, the user must recharge on the following turn and cannot select a move.',\n      maxMovePower: 150,\n      name: 'Rock Wrecker',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User cannot move next turn.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'roleplay',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"The user's Ability changes to match the target's Ability. Fails if the user's Ability is As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Tera Shift, Zen Mode, Zero to Hero, or already matches the target, or if the target's Ability is As One, Battle Bond, Comatose, Commander, Disguise, Embody Aspect, Flower Gift, Forecast, Hunger Switch, Ice Face, Illusion, Imposter, Multitype, Neutralizing Gas, Poison Puppeteer, Power Construct, Power of Alchemy, Protosynthesis, Quark Drive, Receiver, RKS System, Schooling, Shields Down, Stance Change, Tera Shell, Tera Shift, Teraform Zero, Trace, Wonder Guard, Zen Mode, or Zero to Hero.\",\n      name: 'Role Play',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"User replaces its Ability with the target's.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'rollingkick',\n    {\n      accuracy: 85,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to make the target flinch.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rolling Kick',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'rollout',\n    {\n      accuracy: 90,\n      basePower: '30',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.',\n      maxMovePower: 90,\n      name: 'Rollout',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Power doubles with each hit. Repeats for 5 turns.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'roost',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n      name: 'Roost',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n      target: 'Self',\n      type: 'Flying'\n    }\n  ],\n  [\n    'rototiller',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: 'Raises the Attack and Special Attack of all grounded Grass-type Pokémon on the field by 1 stage.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Rototiller',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Raises Atk/Sp. Atk of grounded Grass types by 1.',\n      target: 'All',\n      type: 'Ground'\n    }\n  ],\n  [\n    'round',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n      maxMovePower: 110,\n      name: 'Round',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Power doubles if others used Round this turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'ruination',\n    {\n      accuracy: 90,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Deals damage to the target equal to half of its current HP, rounded down, but not less than 1 HP.',\n      name: 'Ruination',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Does damage equal to 1/2 target's current HP.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'sacredfire',\n    {\n      accuracy: 95,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'Has a 50% chance to burn the target.',\n      maxMovePower: 130,\n      name: 'Sacred Fire',\n      pp: 5,\n      priority: 0,\n      shortDesc: '50% chance to burn the target. Thaws user.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'sacredsword',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Ignores the target's stat stage changes, including evasiveness.\",\n      maxMovePower: 90,\n      name: 'Sacred Sword',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Ignores the target's stat stage changes.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'safeguard',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n      name: 'Safeguard',\n      pp: 25,\n      priority: 0,\n      shortDesc: \"For 5 turns, protects user's party from status.\",\n      target: \"Ally's Side\",\n      type: 'Normal'\n    }\n  ],\n  [\n    'saltcure',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      desc: 'Causes damage to the target equal to 1/8 of its maximum HP (1/4 if the target is Steel or Water type), rounded down, at the end of each turn during effect. This effect ends when the target is no longer active.',\n      name: 'Salt Cure',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Deals 1/8 max HP each turn; 1/4 on Steel, Water.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'sandattack',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's accuracy by 1 stage.\",\n      name: 'Sand Attack',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Lowers the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'sandsearstorm',\n    {\n      accuracy: 80,\n      basePower: '100',\n      category: 'Special',\n      desc: \"Has a 20% chance to burn the target. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 80%.\",\n      name: 'Sandsear Storm',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"20% chance to burn foe(s). Can't miss in rain.\",\n      target: 'Adjacent Foes',\n      type: 'Ground'\n    }\n  ],\n  [\n    'sandstorm',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: 'For 5 turns, the weather becomes Sandstorm. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are a Ground, Rock, or Steel type, or have the Magic Guard, Overcoat, Sand Force, Sand Rush, or Sand Veil Abilities. During the effect, the Special Defense of Rock-type Pokémon is multiplied by 1.5 when taking damage from a special attack. Lasts for 8 turns if the user is holding Smooth Rock. Fails if the current weather is Sandstorm.',\n      name: 'Sandstorm',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'For 5 turns, a sandstorm rages. Rock: 1.5x SpD.',\n      target: 'All',\n      type: 'Rock'\n    }\n  ],\n  [\n    'sandtomb',\n    {\n      accuracy: 85,\n      basePower: '35',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      maxMovePower: 90,\n      name: 'Sand Tomb',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'sappyseed',\n    {\n      accuracy: 90,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'This move summons Leech Seed on the foe.',\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Sappy Seed',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Summons Leech Seed.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'savagespinout',\n    {\n      accuracy: 100,\n      aliases: ['zbug'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'buginiumz',\n      name: 'Savage Spin-Out',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'scald',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to burn the target. The target thaws out if it is frozen.',\n      maxMovePower: 130,\n      name: 'Scald',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to burn the target. Thaws target.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'scaleshot',\n    {\n      accuracy: 90,\n      basePower: '25',\n      category: 'Physical',\n      desc: \"Hits two to five times. Lowers the user's Defense by 1 stage and raises the user's Speed by 1 stage after the last hit. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      name: 'Scale Shot',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times. User: -1 Def, +1 Spe after last hit.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'scaryface',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Lowers the target's Speed by 2 stages.\",\n      name: 'Scary Face',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Lowers the target's Speed by 2.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'scorchingsands',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Special',\n      desc: 'Has a 30% chance to burn the target. The target thaws out if it is frozen.',\n      name: 'Scorching Sands',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to burn the target. Thaws target.',\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'scratch',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Scratch',\n      pp: 35,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'screech',\n    {\n      accuracy: 85,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Lowers the target's Defense by 2 stages.\",\n      name: 'Screech',\n      pp: 40,\n      priority: 0,\n      shortDesc: \"Lowers the target's Defense by 2.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'searingshot',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to burn the target.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Searing Shot',\n      pp: 5,\n      priority: 0,\n      shortDesc: '30% chance to burn adjacent Pokémon.',\n      target: 'All Adjacent',\n      type: 'Fire'\n    }\n  ],\n  [\n    'searingsunrazesmash',\n    {\n      accuracy: 100,\n      aliases: ['searing', 'sss', 'zduskmanenecrozma', 'zsolgaleo', 'zsunsteelstrike'],\n      basePower: '200',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'This move and its effects ignore the Abilities of other Pokémon.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'solganiumz',\n      name: 'Searing Sunraze Smash',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'Ignores the Abilities of other Pokémon.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'secretpower',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.',\n      isFieldMove:\n        \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Secret Power',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Effect varies with terrain. (30% paralysis chance)',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'secretsword',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Deals damage to the target based on its Defense instead of Special Defense.',\n      maxMovePower: 90,\n      name: 'Secret Sword',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Damages target based on Defense, not Sp. Def.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'seedbomb',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Seed Bomb',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'seedflare',\n    {\n      accuracy: 85,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 40% chance to lower the target's Special Defense by 2 stages.\",\n      maxMovePower: 140,\n      name: 'Seed Flare',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"40% chance to lower the target's Sp. Def by 2.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'seismictoss',\n    {\n      accuracy: 100,\n      basePower: 'level',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Deals damage to the target equal to the user's level.\",\n      maxMovePower: 75,\n      name: 'Seismic Toss',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Does damage equal to the user's level.\",\n      target: 'Normal',\n      type: 'Fighting',\n      zMovePower: 100\n    }\n  ],\n  [\n    'selfdestruct',\n    {\n      accuracy: 100,\n      basePower: '200',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokémon has the Damp Ability.',\n      maxMovePower: 150,\n      name: 'Self-Destruct',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Hits adjacent Pokémon. The user faints.',\n      target: 'All Adjacent',\n      type: 'Normal'\n    }\n  ],\n  [\n    'shadowball',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Shadow Ball',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"20% chance to lower the target's Sp. Def by 1.\",\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'shadowbone',\n    {\n      accuracy: 100,\n      basePower: '85',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Shadow Bone',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"20% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'shadowclaw',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 120,\n      name: 'Shadow Claw',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'shadowforce',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"If this move is successful, it breaks through the target's Baneful Bunker, Detect, King's Shield, Protect, or Spiky Shield for this turn, allowing other Pokémon to attack the target normally. If the target's side is protected by Crafty Shield, Mat Block, Quick Guard, or Wide Guard, that protection is also broken for this turn and other Pokémon may attack the target's side normally. This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks. If the user is holding a Power Herb, the move completes in one turn.\",\n      maxMovePower: 140,\n      name: 'Shadow Force',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Disappears turn 1. Hits turn 2. Breaks protection.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'shadowpunch',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'This move does not check accuracy.',\n      maxMovePower: 110,\n      name: 'Shadow Punch',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'shadowsneak',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Shadow Sneak',\n      pp: 30,\n      priority: 1,\n      shortDesc: 'Usually goes first.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'shadowstrike',\n    {\n      accuracy: 95,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n      isNonstandard: IsNonStandard.Cap,\n      name: 'Shadow Strike',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"50% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'sharpen',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Raises the user's Attack by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sharpen',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"Raises the user's Attack by 1.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'shatteredpsyche',\n    {\n      accuracy: 100,\n      aliases: ['zpsychic'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'psychiumz',\n      name: 'Shattered Psyche',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'shedtail',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"The user takes 1/2 of its maximum HP, rounded up, and creates a substitute that has 1/4 of the user's maximum HP, rounded down. The user is replaced with another Pokémon in its party and the selected Pokémon has the substitute transferred to it. Fails if the user would faint, or if there are no unfainted party members.\",\n      name: 'Shed Tail',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User takes 1/2 its max HP to pass a substitute.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'sheercold',\n    {\n      accuracy: 30,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + X)%, where X is 30 if the user is an Ice type and 20 otherwise, and fails if the target is at a higher level. Ice-type Pokémon and Pokémon with the Sturdy Ability are immune.\",\n      maxMovePower: 130,\n      name: 'Sheer Cold',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"OHKOs non-Ice targets. Fails if user's lower level.\",\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'shellsidearm',\n    {\n      accuracy: 100,\n      aliases: ['sideshellarm', 'ssa'],\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Has a 20% chance to poison the target. This move becomes a physical attack that makes contact if the value of ((((2 * the user's level / 5 + 2) * 90 * X) / Y) / 50), where X is the user's Attack stat and Y is the target's Defense stat, is greater than the same value where X is the user's Special Attack stat and Y is the target's Special Defense stat. No stat modifiers other than stat stage changes are considered for this purpose. If the two values are equal, this move chooses a damage category at random.\",\n      name: 'Shell Side Arm',\n      pp: 10,\n      priority: 0,\n      shortDesc: '20% psn. Physical+contact if it would be stronger.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'shellsmash',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Lowers the user's Defense and Special Defense by 1 stage. Raises the user's Attack, Special Attack, and Speed by 2 stages.\",\n      name: 'Shell Smash',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Lowers Def, SpD by 1; raises Atk, SpA, Spe by 2.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'shelltrap',\n    {\n      accuracy: 100,\n      basePower: '150',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Fails unless the user is hit by a physical attack from an opponent this turn before it can execute the move. If the user was hit and has not fainted, it attacks immediately after being hit, and the effect ends. If the opponent's physical attack had a secondary effect removed by the Sheer Force Ability, it does not count for the purposes of this effect.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 150,\n      name: 'Shell Trap',\n      pp: 5,\n      priority: -3,\n      shortDesc: 'User must take physical damage before moving.',\n      target: 'Adjacent Foes',\n      type: 'Fire'\n    }\n  ],\n  [\n    'shelter',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the user's Defense by 2 stages.\",\n      name: 'Shelter',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense by 2.\",\n      target: 'Self',\n      type: 'Steel'\n    }\n  ],\n  [\n    'shiftgear',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Raises the user's Speed by 2 stages and its Attack by 1 stage.\",\n      name: 'Shift Gear',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Raises the user's Speed by 2 and Attack by 1.\",\n      target: 'Self',\n      type: 'Steel'\n    }\n  ],\n  [\n    'shockwave',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'This move does not check accuracy.',\n      maxMovePower: 110,\n      name: 'Shock Wave',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'shoreup',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'The user restores 1/2 of its maximum HP, rounded half down. If the weather is Sandstorm, the user instead restores 2/3 of its maximum HP, rounded half down.',\n      name: 'Shore Up',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User restores 1/2 its max HP; 2/3 in Sandstorm.',\n      target: 'Self',\n      type: 'Ground'\n    }\n  ],\n  [\n    'signalbeam',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to confuse the target.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Signal Beam',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to confuse the target.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'silktrap',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"The user is protected from most attacks made by other Pokémon during this turn, and Pokémon trying to make contact with the user have their Speed lowered by 1 stage. Non-damaging moves go through this protection. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      name: 'Silk Trap',\n      pp: 10,\n      priority: 4,\n      shortDesc: 'Protects from damaging attacks. Contact: -1 Spe.',\n      target: 'Self',\n      type: 'Bug'\n    }\n  ],\n  [\n    'silverwind',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 10% chance to raise the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Silver Wind',\n      pp: 5,\n      priority: 0,\n      shortDesc: '10% chance to raise all stats by 1 (not acc/eva).',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'simplebeam',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Causes the target's Ability to become Simple. Fails if the target's Ability is As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Multitype, Power Construct, RKS System, Schooling, Shields Down, Simple, Stance Change, Tera Shift, Truant, Zen Mode, or Zero to Hero.\",\n      name: 'Simple Beam',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"The target's Ability becomes Simple.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'sing',\n    {\n      accuracy: 55,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Causes the target to fall asleep.',\n      name: 'Sing',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Causes the target to fall asleep.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'sinisterarrowraid',\n    {\n      accuracy: 100,\n      aliases: ['sar', 'sinister', 'zdecidueye', 'zspiritshackle'],\n      basePower: '180',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'decidiumz',\n      name: 'Sinister Arrow Raid',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'sizzlyslide',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Has a 100% chance to burn the foe.',\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Sizzly Slide',\n      pp: 20,\n      priority: 0,\n      shortDesc: '100% chance to burn the foe.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'sketch',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'This move is permanently replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, or if the move is Blazing Torque, Combat Torque, Dark Void, Hyperspace Fury, Magical Torque, Noxious Torque, Revival Blessing, Sketch, Struggle, Tera Starstorm, Wicked Torque, or any move the user knows.',\n      name: 'Sketch',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'Permanently copies the last move target used.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'skillswap',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user swaps its Ability with the target's Ability. Fails if either the user or the target's Ability is As One, Battle Bond, Comatose, Commander, Disguise, Embody Aspect, Hunger Switch, Ice Face, Illusion, Multitype, Neutralizing Gas, Poison Puppeteer, Power Construct, Protosynthesis, Quark Drive, RKS System, Schooling, Shields Down, Stance Change, Tera Shell, Tera Shift, Teraform Zero, Wonder Guard, Zen Mode, or Zero to Hero.\",\n      name: 'Skill Swap',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'The user and the target trade Abilities.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'skittersmack',\n    {\n      accuracy: 90,\n      basePower: '70',\n      category: 'Physical',\n      desc: \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n      name: 'Skitter Smack',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to lower target's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'skullbash',\n    {\n      accuracy: 100,\n      basePower: '130',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 140,\n      name: 'Skull Bash',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'skyattack',\n    {\n      accuracy: 90,\n      basePower: '140',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to make the target flinch and a higher chance for a critical hit. This attack charges on the first turn and executes on the second. If the user is holding a Power Herb, the move completes in one turn.',\n      maxMovePower: 140,\n      name: 'Sky Attack',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Charges, then hits turn 2. 30% flinch. High crit.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'skydrop',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'This attack takes the target into the air with the user on the first turn and executes on the second. Pokémon weighing 200 kg or more cannot be lifted. On the first turn, the user and the target avoid all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister. The user and the target cannot make a move between turns, but the target can select a move to use. This move cannot damage Flying-type Pokémon. Fails on the first turn if the target is an ally, if the target has a substitute, or if the target is using Bounce, Dig, Dive, Fly, Phantom Force, Shadow Force, or Sky Drop.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sky Drop',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User and foe fly up turn 1. Damages on turn 2.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'skyuppercut',\n    {\n      accuracy: 90,\n      basePower: '85',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sky Uppercut',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Can hit Pokémon using Bounce, Fly, or Sky Drop.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'slackoff',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'The user restores 1/2 of its maximum HP, rounded half up.',\n      name: 'Slack Off',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Heals the user by 50% of its max HP.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'slam',\n    {\n      accuracy: 75,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'Slam',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'slash',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 120,\n      name: 'Slash',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'sleeppowder',\n    {\n      accuracy: 75,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Causes the target to fall asleep.',\n      name: 'Sleep Powder',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Causes the target to fall asleep.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'sleeptalk',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n      name: 'Sleep Talk',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User must be asleep. Uses another known move.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'sludge',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to poison the target.',\n      maxMovePower: 85,\n      name: 'Sludge',\n      pp: 20,\n      priority: 0,\n      shortDesc: '30% chance to poison the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'sludgebomb',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to poison the target.',\n      maxMovePower: 90,\n      name: 'Sludge Bomb',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to poison the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'sludgewave',\n    {\n      accuracy: 100,\n      basePower: '95',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Has a 10% chance to poison the target.',\n      maxMovePower: 90,\n      name: 'Sludge Wave',\n      pp: 10,\n      priority: 0,\n      shortDesc: '10% chance to poison adjacent Pokémon.',\n      target: 'All Adjacent',\n      type: 'Poison'\n    }\n  ],\n  [\n    'smackdown',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If this move hits a target under the effect of Bounce, Fly, Magnet Rise, or Telekinesis, the effect ends. If the target is a Flying type that has not used Roost this turn or a Pokémon with the Levitate Ability, it loses its immunity to Ground-type attacks and the Arena Trap Ability as long as it remains active. During the effect, Magnet Rise fails for the target and Telekinesis fails against the target.',\n      maxMovePower: 100,\n      name: 'Smack Down',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Removes the target's Ground immunity.\",\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'smartstrike',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'This move does not check accuracy.',\n      maxMovePower: 120,\n      name: 'Smart Strike',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'smellingsalts',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Power doubles if the target is paralyzed. If the user has not fainted, the target is cured of paralysis.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Smelling Salts',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Power doubles if target is paralyzed, and cures it.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'smog',\n    {\n      accuracy: 70,\n      basePower: '30',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'Has a 40% chance to poison the target.',\n      maxMovePower: 70,\n      name: 'Smog',\n      pp: 20,\n      priority: 0,\n      shortDesc: '40% chance to poison the target.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'smokescreen',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Lowers the target's accuracy by 1 stage.\",\n      name: 'Smokescreen',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers the target's accuracy by 1.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'snaptrap',\n    {\n      accuracy: 100,\n      basePower: '35',\n      category: 'Physical',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 90,\n      name: 'Snap Trap',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'snarl',\n    {\n      accuracy: 95,\n      basePower: '55',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n      maxMovePower: 110,\n      name: 'Snarl',\n      pp: 15,\n      priority: 0,\n      shortDesc: '100% chance to lower the foe(s) Sp. Atk by 1.',\n      target: 'Adjacent Foes',\n      type: 'Dark'\n    }\n  ],\n  [\n    'snatch',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'If another Pokémon uses certain non-damaging moves this turn, the user steals that move to use itself. If multiple Pokémon use one of those moves this turn, the applicable moves are all stolen by the first Pokémon in turn order that used this move this turn. This effect is ignored while the user is under the effect of Sky Drop.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Snatch',\n      pp: 10,\n      priority: 4,\n      shortDesc: 'User steals certain support moves to use itself.',\n      target: 'Self',\n      type: 'Dark'\n    }\n  ],\n  [\n    'snipeshot',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: 'Has a higher chance for a critical hit. This move cannot be redirected to a different target by any effect.',\n      maxMovePower: 130,\n      name: 'Snipe Shot',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'High critical hit ratio. Cannot be redirected.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'snore',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: 'Has a 30% chance to make the target flinch. Fails if the user is not asleep.',\n      maxMovePower: 100,\n      name: 'Snore',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'User must be asleep. 30% chance to flinch target.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'snowscape',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: 'For 5 turns, the weather becomes Snow. During the effect, the Defense of Ice-type Pokémon is multiplied by 1.5 when taking damage from a physical attack. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Snow.',\n      name: 'Snowscape',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'For 5 turns, snow falls. Ice: 1.5x Def.',\n      target: 'All',\n      type: 'Ice'\n    }\n  ],\n  [\n    'soak',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Causes the target to become a Water type. Fails if the target is an Arceus or a Silvally, if the target is already purely Water type, or if the target is Terastallized.',\n      name: 'Soak',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Changes the target's type to Water.\",\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'softboiled',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'The user restores 1/2 of its maximum HP, rounded half up.',\n      isFieldMove:\n        \"The Pokémon cuts 20% of its HP to recover another Pokémon's HP. It can be taught to a Pokémon by using TM41 in Generation I, and it can be learned via level-up by Chansey and Blissey as well as certain Pokémon via a Move Tutor in Pokémon FireRed and LeafGreen.\",\n      name: 'Soft-Boiled',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Heals the user by 50% of its max HP.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'solarbeam',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'This attack charges on the first turn and executes on the second. Power is halved if the weather is Primordial Sea, Rain Dance, Sandstorm, or Snow and the user is not holding Utility Umbrella. If the user is holding a Power Herb or the weather is Desolate Land or Sunny Day, the move completes in one turn. If the user is holding Utility Umbrella and the weather is Desolate Land or Sunny Day, the move still requires a turn to charge.',\n      maxMovePower: 140,\n      name: 'Solar Beam',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Charges turn 1. Hits turn 2. No charge in sunlight.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'solarblade',\n    {\n      accuracy: 100,\n      basePower: '125',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'This attack charges on the first turn and executes on the second. Power is halved if the weather is Hail, Primordial Sea, Rain Dance, or Sandstorm and the user is not holding Utility Umbrella. If the user is holding a Power Herb or the weather is Desolate Land or Sunny Day, the move completes in one turn. If the user is holding Utility Umbrella and the weather is Desolate Land or Sunny Day, the move still requires a turn to charge.',\n      maxMovePower: 140,\n      name: 'Solar Blade',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Charges turn 1. Hits turn 2. No charge in sunlight.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'sonicboom',\n    {\n      accuracy: 90,\n      basePower: '20',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Deals 20 HP of damage to the target.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Sonic Boom',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Always does 20 HP of damage.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'soulstealing7starstrike',\n    {\n      accuracy: 100,\n      aliases: ['soul', 'soulstealingsevenstarstrike', 'ss7ss', 'sssss', 'zmarshadow', 'zspectralthief'],\n      basePower: '195',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'marshadiumz',\n      name: 'Soul-Stealing 7-Star Strike',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'spacialrend',\n    {\n      accuracy: 95,\n      basePower: '100',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 130,\n      name: 'Spacial Rend',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'spark',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to paralyze the target.',\n      maxMovePower: 120,\n      name: 'Spark',\n      pp: 20,\n      priority: 0,\n      shortDesc: '30% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'sparklingaria',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: 'If the user has not fainted, the target is cured of its burn.',\n      maxMovePower: 30,\n      name: 'Sparkling Aria',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'The target is cured of its burn.',\n      target: 'All Adjacent',\n      type: 'Water'\n    }\n  ],\n  [\n    'sparklyswirl',\n    {\n      accuracy: 85,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Every Pokémon in the user's party is cured of its non-volatile status condition.\",\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Sparkly Swirl',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Cures the user's party of all status conditions.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'spectralthief',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"The target's stat stages greater than 0 are stolen from it and applied to the user before dealing damage.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Spectral Thief',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Steals target's boosts before dealing damage.\",\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'speedswap',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user swaps its Speed stat with the target. Stat stage changes are unaffected.',\n      name: 'Speed Swap',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Swaps Speed stat with target.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'spicyextract',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the target's Attack by 2 stages and lowers its Defense by 2 stages.\",\n      name: 'Spicy Extract',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Raises target's Atk by 2 and lowers its Def by 2.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'spiderweb',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Spider Web',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Prevents the target from switching out.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'spikecannon',\n    {\n      accuracy: 100,\n      basePower: '20',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Spike Cannon',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'spikes',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. Can be used up to three times before failing. Opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.',\n      name: 'Spikes',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Hurts grounded foes on switch-in. Max 3 layers.',\n      target: \"Foe's Side\",\n      type: 'Ground'\n    }\n  ],\n  [\n    'spikyshield',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"The user is protected from most attacks made by other Pokémon during this turn, and Pokémon making contact with the user lose 1/8 of their maximum HP, rounded down. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n      name: 'Spiky Shield',\n      pp: 10,\n      priority: 4,\n      shortDesc: 'Protects from moves. Contact: loses 1/8 max HP.',\n      target: 'Self',\n      type: 'Grass'\n    }\n  ],\n  [\n    'spinout',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      desc: \"Lowers the user's Speed by 2 stages.\",\n      name: 'Spin Out',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Speed by 2.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'spiritbreak',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      desc: \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n      maxMovePower: 130,\n      name: 'Spirit Break',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'spiritshackle',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field.',\n      maxMovePower: 130,\n      name: 'Spirit Shackle',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Prevents the target from switching out.',\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'spite',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Causes the target's last move used to lose 4 PP. Fails if the target has not made a move, if the move has 0 PP, or if it no longer knows the move.\",\n      name: 'Spite',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Lowers the PP of the target's last move by 4.\",\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'spitup',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Power is equal to 100 times the user's Stockpile count. Fails if the user's Stockpile count is 0. Whether or not this move is successful, the user's Defense and Special Defense decrease by as many stages as Stockpile had increased them, and the user's Stockpile count resets to 0.\",\n      maxMovePower: 100,\n      name: 'Spit Up',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'More power with more uses of Stockpile.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'splash',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Nothing happens...',\n      name: 'Splash',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'No competitive use.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'splinteredstormshards',\n    {\n      accuracy: 100,\n      aliases: ['splintered', 'stormshards', 'zlycanroc', 'zstoneedge'],\n      basePower: '190',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Ends the effects of Electric Terrain, Grassy Terrain, Misty Terrain, and Psychic Terrain.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'lycaniumz',\n      name: 'Splintered Stormshards',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'Ends the effects of terrain.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'splishysplash',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to paralyze the target.',\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Splishy Splash',\n      pp: 15,\n      priority: 0,\n      shortDesc: '30% chance to paralyze the target.',\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'spore',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'Causes the target to fall asleep.',\n      name: 'Spore',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Causes the target to fall asleep.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'spotlight',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Until the end of the turn, all single-target attacks from opponents of the target are redirected to the target. Such attacks are redirected to the target before they can be reflected by Magic Coat or the Magic Bounce Ability, or drawn in by the Lightning Rod or Storm Drain Abilities. Fails if it is not a Double Battle or Battle Royal.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Spotlight',\n      pp: 15,\n      priority: 3,\n      shortDesc: \"Target's foes' moves are redirected to it this turn.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'springtidestorm',\n    {\n      accuracy: 80,\n      basePower: '100',\n      category: 'Special',\n      desc: \"Has a 30% chance to lower the target's Attack by 1 stage.\",\n      name: 'Springtide Storm',\n      pp: 5,\n      priority: 0,\n      shortDesc: '30% chance to lower the foe(s) Attack by 1.',\n      target: 'Adjacent Foes',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'stealthrock',\n    {\n      accuracy: 100,\n      aliases: ['rocks', 'sr'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: 'Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in. Fails if the effect is already active on the opposing side. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.',\n      name: 'Stealth Rock',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Hurts foes on switch-in. Factors Rock weakness.',\n      target: \"Foe's Side\",\n      type: 'Rock'\n    }\n  ],\n  [\n    'steameruption',\n    {\n      accuracy: 95,\n      basePower: '110',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 30% chance to burn the target. The target thaws out if it is frozen.',\n      maxMovePower: 140,\n      name: 'Steam Eruption',\n      pp: 5,\n      priority: 0,\n      shortDesc: '30% chance to burn the target. Thaws target.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'steamroller',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Steamroller',\n      pp: 20,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'steelbeam',\n    {\n      accuracy: 95,\n      basePower: '140',\n      category: 'Special',\n      desc: 'Whether or not this move is successful and even if it would cause fainting, the user loses 1/2 of its maximum HP, rounded up, unless the user has the Magic Guard Ability.',\n      maxMovePower: 140,\n      name: 'Steel Beam',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'User loses 50% max HP.',\n      target: 'All Adjacent',\n      type: 'Steel'\n    }\n  ],\n  [\n    'steelroller',\n    {\n      accuracy: 100,\n      basePower: '130',\n      category: 'Physical',\n      desc: 'Fails if there is no terrain active. Ends the effects of Electric Terrain, Grassy Terrain, Misty Terrain, and Psychic Terrain.',\n      name: 'Steel Roller',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Fails if there is no terrain active. Ends the terrain.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'steelwing',\n    {\n      accuracy: 90,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 10% chance to raise the user's Defense by 1 stage.\",\n      maxMovePower: 120,\n      name: 'Steel Wing',\n      pp: 25,\n      priority: 0,\n      shortDesc: \"10% chance to raise the user's Defense by 1.\",\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'stickyweb',\n    {\n      accuracy: 100,\n      aliases: ['web'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: 'Sets up a hazard on the opposing side of the field, lowering the Speed by 1 stage of each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. Fails if the effect is already active on the opposing side. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.',\n      name: 'Sticky Web',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Lowers Speed of grounded foes by 1 on switch-in.',\n      target: \"Foe's Side\",\n      type: 'Bug'\n    }\n  ],\n  [\n    'stockpile',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Raises the user's Defense and Special Defense by 1 stage. The user's Stockpile count increases by 1. Fails if the user's Stockpile count is 3. The user's Stockpile count is reset to 0 when it is no longer active.\",\n      name: 'Stockpile',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises user's Defense, Sp. Def by 1. Max 3 uses.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'stokedsparksurfer',\n    {\n      accuracy: 100,\n      aliases: ['ss', 'stoked', 'zraichu'],\n      basePower: '175',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 100% chance to paralyze the target.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'aloraichiumz',\n      name: 'Stoked Sparksurfer',\n      pp: 1,\n      priority: 0,\n      shortDesc: '100% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'stomp',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 30% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.',\n      maxMovePower: 120,\n      name: 'Stomp',\n      pp: 20,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'stompingtantrum',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Power doubles if the user's last move on the previous turn, including moves called by other moves or those used through Instruct, Magic Coat, Snatch, or the Dancer or Magic Bounce Abilities, failed to do any of its normal effects, not including damage from an unsuccessful High Jump Kick, Jump Kick, or Mind Blown, or if the user was prevented from moving by any effect other than recharging or Sky Drop. A move that was blocked by Baneful Bunker, Detect, King's Shield, Protect, Spiky Shield, Crafty Shield, Mat Block, Quick Guard, or Wide Guard will not double this move's power, nor will Bounce or Fly ending early due to the effect of Gravity, Smack Down, or Thousand Arrows.\",\n      maxMovePower: 130,\n      name: 'Stomping Tantrum',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Power doubles if the user's last move failed.\",\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'stoneaxe',\n    {\n      accuracy: 90,\n      basePower: '65',\n      category: 'Physical',\n      desc: 'If this move is successful, it sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.',\n      name: 'Stone Axe',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Sets Stealth Rock on the target's side.\",\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'stoneedge',\n    {\n      accuracy: 80,\n      aliases: ['se'],\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a higher chance for a critical hit.',\n      maxMovePower: 130,\n      name: 'Stone Edge',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'High critical hit ratio.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'storedpower',\n    {\n      accuracy: 100,\n      basePower: '20',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n      maxMovePower: 130,\n      name: 'Stored Power',\n      pp: 10,\n      priority: 0,\n      shortDesc: \" + 20 power for each of the user's stat boosts.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'stormthrow',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'This move is always a critical hit unless the target is under the effect of Lucky Chant or has the Battle Armor or Shell Armor Abilities.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 80,\n      name: 'Storm Throw',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Always results in a critical hit.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'strangesteam',\n    {\n      accuracy: 95,\n      basePower: '90',\n      category: 'Special',\n      desc: 'Has a 20% chance to confuse the target.',\n      maxMovePower: 130,\n      name: 'Strange Steam',\n      pp: 10,\n      priority: 0,\n      shortDesc: '20% chance to confuse the target.',\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'strength',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      isFieldMove: 'The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.',\n      maxMovePower: 130,\n      name: 'Strength',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'strengthsap',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Attack by 1 stage. The user restores its HP equal to the target's Attack stat calculated with its stat stage before this move was used. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down. Fails if the target's Attack stat stage is -6.\",\n      name: 'Strength Sap',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"User heals HP=target's Atk stat. Lowers Atk by 1.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'stringshot',\n    {\n      accuracy: 95,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Lowers the target's Speed by 2 stages.\",\n      name: 'String Shot',\n      pp: 40,\n      priority: 0,\n      shortDesc: 'Lowers the foe(s) Speed by 2.',\n      target: 'Adjacent Foes',\n      type: 'Bug'\n    }\n  ],\n  [\n    'struggle',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Deals typeless damage to a random opposing Pokémon. If this move was successful, the user loses 1/4 of its maximum HP, rounded half up, and the Rock Head Ability does not prevent this. This move is automatically used if none of the user's known moves can be selected.\",\n      maxMovePower: 1,\n      name: 'Struggle',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'User loses 1/4 of its max HP.',\n      target: 'Random',\n      type: 'Normal',\n      zMovePower: 1\n    }\n  ],\n  [\n    'strugglebug',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n      maxMovePower: 100,\n      name: 'Struggle Bug',\n      pp: 20,\n      priority: 0,\n      shortDesc: '100% chance to lower the foe(s) Sp. Atk by 1.',\n      target: 'Adjacent Foes',\n      type: 'Bug'\n    }\n  ],\n  [\n    'stuffcheeks',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'This move cannot be selected unless the user is holding a Berry. The user eats its Berry and raises its Defense by 2 stages. This effect is not prevented by the Klutz or Unnerve Abilities, or the effects of Embargo or Magic Room. Fails if the user is not holding a Berry.',\n      name: 'Stuff Cheeks',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Must hold Berry to use. User eats Berry, Def +2.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'stunspore',\n    {\n      accuracy: 75,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Paralyzes the target.',\n      name: 'Stun Spore',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Paralyzes the target.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'submission',\n    {\n      accuracy: 80,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 90,\n      name: 'Submission',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Has 1/4 recoil.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'substitute',\n    {\n      accuracy: 100,\n      aliases: ['sub'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.',\n      name: 'Substitute',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User takes 1/4 its max HP to put in a substitute.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'subzeroslammer',\n    {\n      accuracy: 100,\n      aliases: ['zice'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'iciumz',\n      name: 'Subzero Slammer',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'suckerpunch',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Fails if the target did not select a physical attack, special attack, or Me First for use this turn, or if the target moves before the user.',\n      maxMovePower: 120,\n      name: 'Sucker Punch',\n      pp: 5,\n      priority: 1,\n      shortDesc: 'Usually goes first. Fails if target is not attacking.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'sunnyday',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.',\n      name: 'Sunny Day',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'For 5 turns, intense sunlight powers Fire moves.',\n      target: 'All',\n      type: 'Fire'\n    }\n  ],\n  [\n    'sunsteelstrike',\n    {\n      accuracy: 100,\n      basePower: '100',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'This move and its effects ignore the Abilities of other Pokémon.',\n      maxMovePower: 130,\n      name: 'Sunsteel Strike',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Ignores the Abilities of other Pokémon.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'supercellslam',\n    {\n      accuracy: 95,\n      basePower: '100',\n      category: 'Physical',\n      desc: 'If this attack is not successful, the user loses half of its maximum HP, rounded down, as crash damage. Pokémon with the Magic Guard Ability are unaffected by crash damage. Damage doubles and no accuracy check is done if the target has used Minimize while active.',\n      name: 'Supercell Slam',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'User is hurt by 50% of its max HP if it misses.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'superfang',\n    {\n      accuracy: 90,\n      basePower: '0',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Deals damage to the target equal to half of its current HP, rounded down, but not less than 1 HP.',\n      maxMovePower: 100,\n      name: 'Super Fang',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Does damage equal to 1/2 target's current HP.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'superpower',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"Lowers the user's Attack and Defense by 1 stage.\",\n      name: 'Superpower',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Attack and Defense by 1.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'supersonic',\n    {\n      accuracy: 55,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Causes the target to become confused.',\n      name: 'Supersonic',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Causes the target to become confused.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'supersonicskystrike',\n    {\n      accuracy: 100,\n      aliases: ['zflying'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'flyiniumz',\n      name: 'Supersonic Skystrike',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Flying'\n    }\n  ],\n  [\n    'surf',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Damage doubles if the target is using Dive.',\n      isFieldMove: \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n      maxMovePower: 130,\n      name: 'Surf',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Hits adjacent Pokémon. Double damage on Dive.',\n      target: 'All Adjacent',\n      type: 'Water'\n    }\n  ],\n  [\n    'surgingstrikes',\n    {\n      accuracy: 100,\n      basePower: '25',\n      category: 'Physical',\n      desc: 'Hits three times. This move is always a critical hit unless the target is under the effect of Lucky Chant or has the Battle Armor or Shell Armor Abilities.',\n      maxMovePower: 130,\n      name: 'Surging Strikes',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Always results in a critical hit. Hits 3 times.',\n      target: 'Normal',\n      type: 'Water',\n      zMovePower: 140\n    }\n  ],\n  [\n    'swagger',\n    {\n      accuracy: 85,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Raises the target's Attack by 2 stages and confuses it.\",\n      name: 'Swagger',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Raises the target's Attack by 2 and confuses it.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'swallow',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"The user restores its HP based on its Stockpile count. Restores 1/4 of its maximum HP if it's 1, 1/2 of its maximum HP if it's 2, both rounded half down, and all of its HP if it's 3. Fails if the user's Stockpile count is 0. The user's Defense and Special Defense decrease by as many stages as Stockpile had increased them, and the user's Stockpile count resets to 0.\",\n      name: 'Swallow',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Heals the user based on uses of Stockpile.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'sweetkiss',\n    {\n      accuracy: 75,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Causes the target to become confused.',\n      name: 'Sweet Kiss',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Causes the target to become confused.',\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'sweetscent',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's evasiveness by 2 stages.\",\n      isFieldMove:\n        'The Pokémon can activate a wild Pokémon battle in tall grass, caves, and water. It can be taught to a Pokémon by using TM12 in Generation II, and it can be learned by many Grass-type Pokémon.',\n      name: 'Sweet Scent',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Lowers the foe(s) evasiveness by 2.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'swift',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'This move does not check accuracy.',\n      maxMovePower: 110,\n      name: 'Swift',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'This move does not check accuracy. Hits foes.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'switcheroo',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail or Z-Crystal, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, a Drive, or a Memory to or from a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally, respectively. The target is immune to this move if it has the Sticky Hold Ability.\",\n      name: 'Switcheroo',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"User switches its held item with the target's.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'swordsdance',\n    {\n      accuracy: 100,\n      aliases: ['sd'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the user's Attack by 2 stages.\",\n      name: 'Swords Dance',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Attack by 2.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'synchronoise',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'The target is immune if it does not share a type with the user.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Synchronoise',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Hits adjacent Pokémon sharing the user's type.\",\n      target: 'All Adjacent',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'synthesis',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The user restores 1/2 of its maximum HP if Delta Stream or no weather conditions are in effect or if the user is holding Utility Umbrella, 2/3 of its maximum HP if the weather is Desolate Land or Sunny Day, and 1/4 of its maximum HP if the weather is Primordial Sea, Rain Dance, Sandstorm, or Snow, all rounded half down.',\n      name: 'Synthesis',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Heals the user by a weather-dependent amount.',\n      target: 'Self',\n      type: 'Grass'\n    }\n  ],\n  [\n    'syrupbomb',\n    {\n      accuracy: 85,\n      basePower: '60',\n      category: 'Special',\n      desc: \"If this move is successful, it causes the target's Speed to be lowered by 1 stage at the end of each turn for 3 turns.\",\n      name: 'Syrup Bomb',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Target's Speed is lowered by 1 stage for 3 turns.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'tachyoncutter',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit. This move does not check accuracy.\",\n      name: 'Tachyon Cutter',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits twice. This move does not check accuracy.',\n      target: 'Normal',\n      type: 'Steel'\n    }\n  ],\n  [\n    'tackle',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Tackle',\n      pp: 35,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'tailglow',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: \"Raises the user's Special Attack by 3 stages.\",\n      name: 'Tail Glow',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Raises the user's Sp. Atk by 3.\",\n      target: 'Self',\n      type: 'Bug'\n    }\n  ],\n  [\n    'tailslap',\n    {\n      accuracy: 85,\n      basePower: '25',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 130,\n      name: 'Tail Slap',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'tailwhip',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Defense by 1 stage.\",\n      name: 'Tail Whip',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'Lowers the foe(s) Defense by 1.',\n      target: 'Adjacent Foes',\n      type: 'Normal'\n    }\n  ],\n  [\n    'tailwind',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n      name: 'Tailwind',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"For 4 turns, allies' Speed is doubled.\",\n      target: \"Ally's Side\",\n      type: 'Flying'\n    }\n  ],\n  [\n    'takedown',\n    {\n      accuracy: 85,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.',\n      maxMovePower: 130,\n      name: 'Take Down',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Has 1/4 recoil.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'takeheart',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"The user cures its non-volatile status condition. Raises the user's Special Attack and Special Defense by 1 stage.\",\n      name: 'Take Heart',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Cures user's status, raises Sp. Atk, Sp. Def by 1.\",\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'tarshot',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Lowers the target's Speed by 1 stage. Until the target switches out, the effectiveness of Fire-type moves is doubled against it.\",\n      name: 'Tar Shot',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Target gets -1 Spe and becomes weaker to Fire.',\n      target: 'Normal',\n      type: 'Rock'\n    }\n  ],\n  [\n    'taunt',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Prevents the target from using non-damaging moves for its next three turns. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.',\n      name: 'Taunt',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Target can't use status moves its next 3 turns.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'tearfullook',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Attack and Special Attack by 1 stage.\",\n      name: 'Tearful Look',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers the target's Attack and Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'teatime',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: 'All active Pokémon consume their held Berries. This effect is not prevented by substitutes, the Klutz or Unnerve Abilities, or the effects of Embargo or Magic Room. Fails if no active Pokémon is holding a Berry.',\n      name: 'Teatime',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'All active Pokémon consume held Berries.',\n      target: 'Any',\n      type: 'Normal'\n    }\n  ],\n  [\n    'technoblast',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"This move's type depends on the user's held Drive.\",\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 140,\n      name: 'Techno Blast',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Type varies based on the held Drive.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'tectonicrage',\n    {\n      accuracy: 100,\n      aliases: ['zground'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'groundiumz',\n      name: 'Tectonic Rage',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Ground'\n    }\n  ],\n  [\n    'teeterdance',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Causes the target to become confused.',\n      name: 'Teeter Dance',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Confuses adjacent Pokémon.',\n      target: 'All Adjacent',\n      type: 'Normal'\n    }\n  ],\n  [\n    'telekinesis',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'For 3 turns, the target cannot avoid any attacks made against it, other than OHKO moves, as long as it remains active. During the effect, the target is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the target uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the target is under any of their effects. Fails if the target is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows. The target is immune to this move on use if its species is Diglett, Dugtrio, Alolan Diglett, Alolan Dugtrio, Sandygast, Palossand, or Gengar while Mega-Evolved. Mega Gengar cannot be under this effect by any means.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Telekinesis',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"For 3 turns, target floats but moves can't miss it.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'teleport',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: 'If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members.',\n      isFieldMove:\n        'The Pokémon can teleport the player to the front of the last visited Pokémon Center by using telekinesis. It can be taught to a Pokémon by using TM30 in Generation I, and it can be learned by many Psychic-type Pokémon.',\n      name: 'Teleport',\n      pp: 20,\n      priority: -6,\n      shortDesc: 'User switches out.',\n      target: 'Self',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'temperflare',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      desc: \"Power doubles if the user's last move on the previous turn, including moves called by other moves or those used through Instruct, Magic Coat, Snatch, or the Dancer or Magic Bounce Abilities, failed to do any of its normal effects, not including damage from an unsuccessful High Jump Kick, Jump Kick, or Mind Blown, or if the user was prevented from moving by any effect other than recharging or Sky Drop. A move that was blocked by Baneful Bunker, Detect, King's Shield, Protect, Spiky Shield, Crafty Shield, Mat Block, Quick Guard, or Wide Guard will not double this move's power, nor will Bounce or Fly ending early due to the effect of Gravity, Smack Down, or Thousand Arrows.\",\n      name: 'Temper Flare',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Power doubles if the user's last move failed.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'tenmillionvoltthunderbolt',\n    {\n      accuracy: 100,\n      aliases: ['10000000voltthunderbolt', '10mv', '10mvt', 'zpikachucap', 'zthunderbolt'],\n      basePower: '195',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a very high chance for a critical hit.',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'pikashuniumz',\n      name: '10,000,000 Volt Thunderbolt',\n      pp: 1,\n      priority: 0,\n      shortDesc: 'Very high critical hit ratio.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'terablast',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      desc: \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n      name: 'Tera Blast',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'If Terastallized: Phys. if Atk > SpA, type = Tera.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'terastarstorm',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Special',\n      desc: \"If the user is a Terapagos in Stellar Form, this move's type becomes Stellar, hits all opposing Pokémon, and becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes.\",\n      name: 'Tera Starstorm',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Terapagos-Stellar: Stellar type, hits both foes.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'terrainpulse',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Special',\n      desc: \"Power doubles if the user is grounded and a terrain is active, and this move's type changes to match. Electric type during Electric Terrain, Grass type during Grassy Terrain, Fairy type during Misty Terrain, and Psychic type during Psychic Terrain.\",\n      name: 'Terrain Pulse',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User on terrain: power doubles, type varies.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'thief',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n      maxMovePower: 110,\n      name: 'Thief',\n      pp: 25,\n      priority: 0,\n      shortDesc: \"If the user has no item, it steals the target's.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'thousandarrows',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Beautiful',\n      desc: 'This move can hit airborne Pokémon, which includes Flying-type Pokémon, Pokémon with the Levitate Ability, Pokémon holding an Air Balloon, and Pokémon under the effect of Magnet Rise or Telekinesis. If the target is a Flying type and is not already grounded, this move deals neutral damage regardless of its other type(s). This move can hit a target using Bounce, Fly, or Sky Drop. If this move hits a target under the effect of Bounce, Fly, Magnet Rise, or Telekinesis, the effect ends. If the target is a Flying type that has not used Roost this turn or a Pokémon with the Levitate Ability, it loses its immunity to Ground-type attacks and the Arena Trap Ability as long as it remains active. During the effect, Magnet Rise fails for the target and Telekinesis fails against the target.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Thousand Arrows',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Grounds adjacent foes. First hit neutral on Flying.',\n      target: 'Adjacent Foes',\n      type: 'Ground'\n    }\n  ],\n  [\n    'thousandwaves',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Prevents the target from switching out. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 130,\n      name: 'Thousand Waves',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits adjacent foes. Prevents them from switching.',\n      target: 'Adjacent Foes',\n      type: 'Ground'\n    }\n  ],\n  [\n    'thrash',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.',\n      maxMovePower: 40,\n      name: 'Thrash',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Lasts 2-3 turns. Confuses the user afterwards.',\n      target: 'Random',\n      type: 'Normal'\n    }\n  ],\n  [\n    'throatchop',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'For 2 turns, the target cannot use sound-based moves.',\n      maxMovePower: 130,\n      name: 'Throat Chop',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'For 2 turns, the target cannot use sound moves.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'thunder',\n    {\n      accuracy: 70,\n      basePower: '110',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n      maxMovePower: 40,\n      name: 'Thunder',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"30% chance to paralyze. Can't miss in rain.\",\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'thunderbolt',\n    {\n      accuracy: 100,\n      aliases: ['tbolt'],\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to paralyze the target.',\n      maxMovePower: 130,\n      name: 'Thunderbolt',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'thundercage',\n    {\n      accuracy: 90,\n      basePower: '80',\n      category: 'Special',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      name: 'Thunder Cage',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'thunderclap',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'Fails if the target did not select a physical attack, special attack, or Me First for use this turn, or if the target moves before the user.',\n      name: 'Thunderclap',\n      pp: 5,\n      priority: 1,\n      shortDesc: 'Usually goes first. Fails if target is not attacking.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'thunderfang',\n    {\n      accuracy: 95,\n      basePower: '65',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to paralyze the target and a 10% chance to make it flinch.',\n      maxMovePower: 120,\n      name: 'Thunder Fang',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to paralyze. 10% chance to flinch.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'thunderouskick',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      desc: \"Has a 100% chance to lower the target's Defense by 1 stage.\",\n      name: 'Thunderous Kick',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Defense by 1.\",\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'thunderpunch',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to paralyze the target.',\n      maxMovePower: 130,\n      name: 'Thunder Punch',\n      pp: 15,\n      priority: 0,\n      shortDesc: '10% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'thundershock',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to paralyze the target.',\n      maxMovePower: 90,\n      name: 'Thunder Shock',\n      pp: 30,\n      priority: 0,\n      shortDesc: '10% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'thunderwave',\n    {\n      accuracy: 90,\n      aliases: ['twave'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cool',\n      desc: 'Paralyzes the target. This move does not ignore type immunity.',\n      name: 'Thunder Wave',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Paralyzes the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'tickle',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Lowers the target's Attack and Defense by 1 stage.\",\n      name: 'Tickle',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers the target's Attack and Defense by 1.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'tidyup',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the user's Attack and Speed by 1 stage. Removes substitutes from all active Pokémon and ends the effects of Spikes, Stealth Rock, Sticky Web, and Toxic Spikes for both sides.\",\n      name: 'Tidy Up',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'User +1 Atk, Spe. Clears all substitutes/hazards.',\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'topsyturvy',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The target's positive stat stages become negative and vice versa. Fails if all of the target's stat stages are 0.\",\n      name: 'Topsy-Turvy',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Inverts the target's stat stages.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'torchsong',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Has a 100% chance to raise the user's Special Attack by 1 stage.\",\n      name: 'Torch Song',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"100% chance to raise the user's Sp. Atk by 1.\",\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'torment',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: 'Prevents the target from selecting the same move for use two turns in a row. This effect ends when the target is no longer active.',\n      name: 'Torment',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"Target can't select the same move twice in a row.\",\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'toxic',\n    {\n      accuracy: 90,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.',\n      name: 'Toxic',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Badly poisons the target. Poison types can't miss.\",\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'toxicspikes',\n    {\n      accuracy: 100,\n      aliases: ['tspikes'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'Sets up a hazard on the opposing side of the field, poisoning each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. Can be used up to two times before failing. Opposing Pokémon become poisoned with one layer and badly poisoned with two layers. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, is hit by Defog, or a grounded Poison-type Pokémon switches in. Safeguard prevents the opposing party from being poisoned on switch-in, but a substitute does not.',\n      name: 'Toxic Spikes',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Poisons grounded foes on switch-in. Max 2 layers.',\n      target: \"Foe's Side\",\n      type: 'Poison'\n    }\n  ],\n  [\n    'toxicthread',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Lowers the target's Speed by 1 stage and poisons it.\",\n      name: 'Toxic Thread',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Lowers the target's Speed by 1 and poisons it.\",\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'trailblaze',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n      name: 'Trailblaze',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"100% chance to raise the user's Speed by 1.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'transform',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user transforms into the target. The target's current stats, stat stages, types, moves, Ability, weight, gender, and sprite are copied. The user's level and HP remain the same and each copied move receives only 5 PP, with a maximum of 5 PP each. The user can no longer change formes if it would have the ability to do so. This move fails if it hits a substitute, if either the user or the target is already transformed, or if either is behind an Illusion.\",\n      name: 'Transform',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Copies target's stats, moves, types, and Ability.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'triattack',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 20% chance to either burn, freeze, or paralyze the target.',\n      maxMovePower: 80,\n      name: 'Tri Attack',\n      pp: 10,\n      priority: 0,\n      shortDesc: '20% chance to paralyze or burn or freeze target.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'trick',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail or Z-Crystal, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, a Drive, or a Memory to or from a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally, respectively. The target is immune to this move if it has the Sticky Hold Ability.\",\n      name: 'Trick',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"User switches its held item with the target's.\",\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'trickortreat',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Causes the Ghost type to be added to the target, effectively making it have two or three types. Fails if the target is already a Ghost type. If Forest's Curse adds a type to the target, it replaces the type added by this move and vice versa.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Trick-or-Treat',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Adds Ghost to the target's type(s).\",\n      target: 'Normal',\n      type: 'Ghost'\n    }\n  ],\n  [\n    'trickroom',\n    {\n      accuracy: 100,\n      aliases: ['tr', 'troom'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"For 5 turns, the Speed of every Pokémon is recalculated for the purposes of determining turn order. During the effect, each Pokémon's Speed is considered to be (10000 - its normal Speed), and if this value is greater than 8191, 8192 is subtracted from it. If this move is used during the effect, the effect ends.\",\n      name: 'Trick Room',\n      pp: 5,\n      priority: -7,\n      shortDesc: 'Goes last. For 5 turns, turn order is reversed.',\n      target: 'All',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'triplearrows',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      desc: \"Has a 50% chance to lower the target's Defense by 1 stage, a 30% chance to make it flinch, and a higher chance for a critical hit.\",\n      name: 'Triple Arrows',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'High crit. Target: 50% -1 Defense, 30% flinch.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'tripleaxel',\n    {\n      accuracy: 90,\n      basePower: '20',\n      category: 'Physical',\n      desc: \"Hits three times. Power increases to 40 for the second hit and 60 for the third. This move checks accuracy for each hit, and the attack ends if the target avoids a hit. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit three times.\",\n      name: 'Triple Axel',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 3 times. Each hit can miss, but power rises.',\n      target: 'Normal',\n      type: 'Ice'\n    }\n  ],\n  [\n    'tripledive',\n    {\n      accuracy: 95,\n      basePower: '30',\n      category: 'Physical',\n      desc: 'Hits three times.',\n      name: 'Triple Dive',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 3 times.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'triplekick',\n    {\n      accuracy: 90,\n      basePower: '10',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Hits three times. Power increases to 20 for the second hit and 30 for the third. This move checks accuracy for each hit, and the attack ends if the target avoids a hit. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit three times.\",\n      maxMovePower: 80,\n      name: 'Triple Kick',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 3 times. Each hit can miss, but power rises.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'tropkick',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n      maxMovePower: 120,\n      name: 'Trop Kick',\n      pp: 15,\n      priority: 0,\n      shortDesc: \"100% chance to lower the target's Attack by 1.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'trumpcard',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Trump Card',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'More power the fewer PP this move has left.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'twinbeam',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n      name: 'Twin Beam',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Hits 2 times in one turn.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'twineedle',\n    {\n      accuracy: 100,\n      basePower: '25',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Hits twice, with each hit having a 20% chance to poison the target. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Twineedle',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Hits 2 times. Each hit has 20% chance to poison.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'twinkletackle',\n    {\n      accuracy: 100,\n      aliases: ['zfairy'],\n      basePower: '1',\n      category: 'Physical',\n      contestType: 'Cool',\n      isNonstandard: IsNonStandard.Past,\n      isZ: 'fairiumz',\n      name: 'Twinkle Tackle',\n      pp: 1,\n      priority: 0,\n      shortDesc: \"Power is equal to the base move's Z-Power.\",\n      target: 'Normal',\n      type: 'Fairy'\n    }\n  ],\n  [\n    'twister',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.',\n      maxMovePower: 90,\n      name: 'Twister',\n      pp: 20,\n      priority: 0,\n      shortDesc: '20% chance to make the foe(s) flinch.',\n      target: 'Adjacent Foes',\n      type: 'Dragon'\n    }\n  ],\n  [\n    'upperhand',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Physical',\n      desc: 'Has a 100% chance to make the target flinch. Fails if the target did not select a priority move for use this turn, or if the target moves before the user.',\n      name: 'Upper Hand',\n      pp: 15,\n      priority: 3,\n      shortDesc: '100% flinch. Fails unless target using priority.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'uproar',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: 'The user spends three turns locked into this move. This move targets an opponent at random on each turn. On the first of the three turns, all sleeping active Pokémon wake up. During the three turns, no active Pokémon can fall asleep by any means, and Pokémon switched in during the effect do not wake up. If the user is prevented from moving or the attack is not successful against the target during one of the turns, the effect ends.',\n      maxMovePower: 30,\n      name: 'Uproar',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Lasts 3 turns. Active Pokémon cannot fall asleep.',\n      target: 'Random',\n      type: 'Normal'\n    }\n  ],\n  [\n    'uturn',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: 'If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.',\n      maxMovePower: 120,\n      name: 'U-turn',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'User switches out after damaging the target.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'vacuumwave',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 70,\n      name: 'Vacuum Wave',\n      pp: 30,\n      priority: 1,\n      shortDesc: 'Usually goes first.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'vcreate',\n    {\n      accuracy: 95,\n      basePower: '180',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Lowers the user's Speed, Defense, and Special Defense by 1 stage.\",\n      isNonstandard: IsNonStandard.Unobtainable,\n      maxMovePower: 150,\n      name: 'V-create',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Lowers the user's Defense, Sp. Def, Speed by 1.\",\n      target: 'Normal',\n      type: 'Fire',\n      zMovePower: 220\n    }\n  ],\n  [\n    'veeveevolley',\n    {\n      accuracy: 100,\n      basePower: '(happiness * 10) / 25',\n      category: 'Physical',\n      contestType: 'Cute',\n      desc: \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Veevee Volley',\n      pp: 20,\n      priority: 0,\n      shortDesc: \"Max happiness: 102 power. Can't miss.\",\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'venomdrench',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Lowers the target's Attack, Special Attack, and Speed by 1 stage if the target is poisoned. Fails if the target is not poisoned.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Venom Drench',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Lowers Atk/Sp. Atk/Speed of poisoned foes by 1.',\n      target: 'Adjacent Foes',\n      type: 'Poison'\n    }\n  ],\n  [\n    'venoshock',\n    {\n      accuracy: 100,\n      basePower: '65',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Power doubles if the target is poisoned.',\n      maxMovePower: 85,\n      name: 'Venoshock',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Power doubles if the target is poisoned.',\n      target: 'Normal',\n      type: 'Poison'\n    }\n  ],\n  [\n    'victorydance',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      desc: \"Raises the user's Attack, Defense, and Speed by 1 stage.\",\n      name: 'Victory Dance',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Raises the user's Attack, Defense, Speed by 1.\",\n      target: 'Self',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'vinewhip',\n    {\n      accuracy: 100,\n      basePower: '45',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 100,\n      name: 'Vine Whip',\n      pp: 25,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'visegrip',\n    {\n      accuracy: 100,\n      aliases: ['vicegrip'],\n      basePower: '55',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'No additional effect.',\n      maxMovePower: 110,\n      name: 'Vise Grip',\n      pp: 30,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'vitalthrow',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'This move does not check accuracy.',\n      isNonstandard: IsNonStandard.Past,\n      maxMovePower: 85,\n      name: 'Vital Throw',\n      pp: 10,\n      priority: -1,\n      shortDesc: 'This move does not check accuracy. Goes last.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'voltswitch',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.',\n      maxMovePower: 120,\n      name: 'Volt Switch',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'User switches out after damaging the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'volttackle',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 10% chance to paralyze the target. If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.',\n      maxMovePower: 140,\n      name: 'Volt Tackle',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Has 33% recoil. 10% chance to paralyze target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'wakeupslap',\n    {\n      accuracy: 100,\n      basePower: '70',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Power doubles if the target is asleep. If the user has not fainted, the target wakes up.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Wake-Up Slap',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Power doubles if target is asleep, and wakes it.',\n      target: 'Normal',\n      type: 'Fighting'\n    }\n  ],\n  [\n    'waterfall',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Has a 20% chance to make the target flinch.',\n      isFieldMove:\n        \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n      maxMovePower: 130,\n      name: 'Waterfall',\n      pp: 15,\n      priority: 0,\n      shortDesc: '20% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'watergun',\n    {\n      accuracy: 100,\n      basePower: '40',\n      category: 'Special',\n      contestType: 'Cute',\n      desc: 'No additional effect.',\n      maxMovePower: 90,\n      name: 'Water Gun',\n      pp: 25,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'waterpledge',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"If one of the user's allies chose to use Fire Pledge or Grass Pledge this turn and has not moved yet, it takes its turn immediately after the user and the user's move does nothing. If combined with Fire Pledge, the ally uses Water Pledge with 150 power and a rainbow appears on the user's side for 4 turns, which doubles secondary effect chances and stacks with the Serene Grace Ability, except effects that cause flinching can only have their chance doubled once. If combined with Grass Pledge, the ally uses Grass Pledge with 150 power and a swamp appears on the target's side for 4 turns, which quarters the Speed of each Pokémon on that side. When used as a combined move, this move gains STAB no matter what the user's type is. This move does not consume the user's Water Gem, and cannot be redirected by the Storm Drain Ability.\",\n      maxMovePower: 130,\n      name: 'Water Pledge',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Use with Grass or Fire Pledge for added effect.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'waterpulse',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 20% chance to confuse the target.',\n      maxMovePower: 110,\n      name: 'Water Pulse',\n      pp: 20,\n      priority: 0,\n      shortDesc: '20% chance to confuse the target.',\n      target: 'Any',\n      type: 'Water'\n    }\n  ],\n  [\n    'watershuriken',\n    {\n      accuracy: 100,\n      basePower: '15',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is an Ash-Greninja with the Battle Bond Ability, this move has a power of 20 and always hits three times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n      maxMovePower: 90,\n      name: 'Water Shuriken',\n      pp: 20,\n      priority: 1,\n      shortDesc: 'Usually goes first. Hits 2-5 times in one turn.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'watersport',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'For 5 turns, all Fire-type attacks used by any active Pokémon have their power multiplied by 0.33. Fails if this effect is already active.',\n      isNonstandard: IsNonStandard.Past,\n      name: 'Water Sport',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'For 5 turns, Fire-type attacks have 1/3 power.',\n      target: 'All',\n      type: 'Water'\n    }\n  ],\n  [\n    'waterspout',\n    {\n      accuracy: 100,\n      basePower: '150',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Power is equal to (user's current HP * 150 / user's maximum HP), rounded down, but not less than 1.\",\n      maxMovePower: 150,\n      name: 'Water Spout',\n      pp: 5,\n      priority: 0,\n      shortDesc: \"Less power as user's HP decreases. Hits foe(s).\",\n      target: 'Adjacent Foes',\n      type: 'Water'\n    }\n  ],\n  [\n    'wavecrash',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.',\n      name: 'Wave Crash',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Has 33% recoil.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'weatherball',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n      maxMovePower: 130,\n      name: 'Weather Ball',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Power doubles and type varies in each weather.',\n      target: 'Normal',\n      type: 'Normal',\n      zMovePower: 160\n    }\n  ],\n  [\n    'whirlpool',\n    {\n      accuracy: 85,\n      basePower: '35',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      isFieldMove:\n        \"The Pokémon can dismiss small whirlpools in the water. Whirlpool is taught to Pokémon with HM06 in generation II and generation IV's HeartGold and SoulSilver as HM05\",\n      maxMovePower: 90,\n      name: 'Whirlpool',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Water'\n    }\n  ],\n  [\n    'whirlwind',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.',\n      name: 'Whirlwind',\n      pp: 20,\n      priority: -6,\n      shortDesc: 'Forces the target to switch to a random ally.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'wickedblow',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: 'This move is always a critical hit unless the target is under the effect of Lucky Chant or has the Battle Armor or Shell Armor Abilities.',\n      name: 'Wicked Blow',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'Always results in a critical hit.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'wickedtorque',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      desc: 'Has a 10% chance to cause the target to fall asleep.',\n      isNonstandard: IsNonStandard.Unobtainable,\n      name: 'Wicked Torque',\n      pp: 10,\n      priority: 0,\n      shortDesc: '10% chance to cause the target to fall asleep.',\n      target: 'Normal',\n      type: 'Dark'\n    }\n  ],\n  [\n    'wideguard',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"The user and its party members are protected from moves made by other Pokémon, including allies, during this turn that target all adjacent foes or all adjacent Pokémon. This move modifies the same 1/X chance of being successful used by other protection moves, where X starts at 1 and triples each time this move is successfully used, but does not use the chance to check for failure. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn or if this move is already in effect for the user's side.\",\n      name: 'Wide Guard',\n      pp: 10,\n      priority: 3,\n      shortDesc: 'Protects allies from multi-target moves this turn.',\n      target: \"Ally's Side\",\n      type: 'Rock'\n    }\n  ],\n  [\n    'wildboltstorm',\n    {\n      accuracy: 80,\n      basePower: '100',\n      category: 'Special',\n      desc: \"Has a 20% chance to paralyze the target. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 80%.\",\n      name: 'Wildbolt Storm',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"20% chance to paralyze foe(s). Rain: can't miss.\",\n      target: 'Adjacent Foes',\n      type: 'Electric'\n    }\n  ],\n  [\n    'wildcharge',\n    {\n      accuracy: 100,\n      basePower: '90',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.',\n      maxMovePower: 130,\n      name: 'Wild Charge',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Has 1/4 recoil.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'willowisp',\n    {\n      accuracy: 85,\n      aliases: ['wow'],\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Beautiful',\n      desc: 'Burns the target.',\n      name: 'Will-O-Wisp',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Burns the target.',\n      target: 'Normal',\n      type: 'Fire'\n    }\n  ],\n  [\n    'wingattack',\n    {\n      accuracy: 100,\n      basePower: '60',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 110,\n      name: 'Wing Attack',\n      pp: 35,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Any',\n      type: 'Flying'\n    }\n  ],\n  [\n    'wish',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n      name: 'Wish',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"Next turn, 50% of the user's max HP is restored.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'withdraw',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: \"Raises the user's Defense by 1 stage.\",\n      name: 'Withdraw',\n      pp: 40,\n      priority: 0,\n      shortDesc: \"Raises the user's Defense by 1.\",\n      target: 'Self',\n      type: 'Water'\n    }\n  ],\n  [\n    'wonderroom',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: 'For 5 turns, all active Pokémon have their Defense and Special Defense stats swapped. Stat stage changes are unaffected. If this move is used during the effect, the effect ends.',\n      name: 'Wonder Room',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'For 5 turns, all Defense and Sp. Def stats switch.',\n      target: 'All',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'woodhammer',\n    {\n      accuracy: 100,\n      basePower: '120',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.',\n      maxMovePower: 140,\n      name: 'Wood Hammer',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'Has 33% recoil.',\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'workup',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Tough',\n      desc: \"Raises the user's Attack and Special Attack by 1 stage.\",\n      name: 'Work Up',\n      pp: 30,\n      priority: 0,\n      shortDesc: \"Raises the user's Attack and Sp. Atk by 1.\",\n      target: 'Self',\n      type: 'Normal'\n    }\n  ],\n  [\n    'worryseed',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Clever',\n      desc: \"Causes the target's Ability to become Insomnia. Fails if the target's Ability is As One, Battle Bond, Comatose, Disguise, Gulp Missile, Ice Face, Insomnia, Multitype, Power Construct, RKS System, Schooling, Shields Down, Stance Change, Tera Shift, Truant, Zen Mode, or Zero to Hero.\",\n      name: 'Worry Seed',\n      pp: 10,\n      priority: 0,\n      shortDesc: \"The target's Ability becomes Insomnia.\",\n      target: 'Normal',\n      type: 'Grass'\n    }\n  ],\n  [\n    'wrap',\n    {\n      accuracy: 90,\n      basePower: '15',\n      category: 'Physical',\n      contestType: 'Tough',\n      desc: 'Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.',\n      maxMovePower: 90,\n      name: 'Wrap',\n      pp: 20,\n      priority: 0,\n      shortDesc: 'Traps and damages the target for 4-5 turns.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'wringout',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Special',\n      contestType: 'Tough',\n      desc: \"Power is equal to 120 * (target's current HP / target's maximum HP), rounded half down, but not less than 1.\",\n      isNonstandard: IsNonStandard.Past,\n      name: 'Wring Out',\n      pp: 5,\n      priority: 0,\n      shortDesc: 'More power the more HP the target has left.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'xscissor',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'No additional effect.',\n      maxMovePower: 130,\n      name: 'X-Scissor',\n      pp: 15,\n      priority: 0,\n      shortDesc: 'No additional effect.',\n      target: 'Normal',\n      type: 'Bug'\n    }\n  ],\n  [\n    'yawn',\n    {\n      accuracy: 100,\n      basePower: '0',\n      category: 'Status',\n      contestType: 'Cute',\n      desc: 'Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.',\n      name: 'Yawn',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Puts the target to sleep after 1 turn.',\n      target: 'Normal',\n      type: 'Normal'\n    }\n  ],\n  [\n    'zapcannon',\n    {\n      accuracy: 50,\n      basePower: '120',\n      category: 'Special',\n      contestType: 'Cool',\n      desc: 'Has a 100% chance to paralyze the target.',\n      maxMovePower: 140,\n      name: 'Zap Cannon',\n      pp: 5,\n      priority: 0,\n      shortDesc: '100% chance to paralyze the target.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'zenheadbutt',\n    {\n      accuracy: 90,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Clever',\n      desc: 'Has a 20% chance to make the target flinch.',\n      maxMovePower: 130,\n      name: 'Zen Headbutt',\n      pp: 15,\n      priority: 0,\n      shortDesc: '20% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Psychic'\n    }\n  ],\n  [\n    'zingzap',\n    {\n      accuracy: 100,\n      basePower: '80',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: 'Has a 30% chance to make the target flinch.',\n      maxMovePower: 130,\n      name: 'Zing Zap',\n      pp: 10,\n      priority: 0,\n      shortDesc: '30% chance to make the target flinch.',\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'zippyzap',\n    {\n      accuracy: 100,\n      basePower: '50',\n      category: 'Physical',\n      contestType: 'Cool',\n      desc: \"Has a 100% chance to raise the user's evasion by 1 stage.\",\n      isNonstandard: IsNonStandard.LetsGoPikachuEevee,\n      name: 'Zippy Zap',\n      pp: 10,\n      priority: 2,\n      shortDesc: \"Goes first. Raises user's evasion by 1.\",\n      target: 'Normal',\n      type: 'Electric'\n    }\n  ],\n  [\n    'polarflare',\n    {\n      accuracy: 100,\n      basePower: '75',\n      category: 'Special',\n      contestType: 'Beautiful',\n      desc: 'Has a 10% chance to freeze the target. This move cannot thaw a frozen target. If this move is successful on at least one target and the user is a Ramnarok, it changes to Radiant Forme if it is currently in Dormant Forme, or changes to Dormant Forme if it is currently in Radiant Forme. This forme change does not happen if the Ramnarok has the Sheer Force Ability. The Radiant Forme reverts to Dormant Forme when Ramnarok is not active.',\n      isNonstandard: IsNonStandard.Cap,\n      name: 'Polar Flare',\n      pp: 10,\n      priority: 0,\n      shortDesc: '10% chance to frz foe(s). Ramnarok transforms.',\n      target: 'All Adjacent',\n      type: 'Fire'\n    }\n  ],\n  [\n    'nihillight',\n    {\n      accuracy: 100,\n      basePower: '200',\n      category: 'Special',\n      contestType: 'Clever',\n      desc: 'The user attacks by unleashing a powerful light that defies all laws of nature, striking even Fairy types and ignoring any stat changes affecting its targets.',\n      maxMovePower: 90,\n      name: 'Nihil Light',\n      pp: 10,\n      priority: 0,\n      shortDesc: 'Deals damage and ignores any stat changes affecting its targets, including Fairy types. ',\n      target: 'Adjacent Foes',\n      type: 'Dragon'\n    }\n  ]\n]);\n\nfor (const [key, value] of moves.entries()) {\n  value.key = key;\n}\n"
  },
  {
    "path": "src/lib/assets/natures.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Collection } from '@discordjs/collection';\n\n/** The natures in Pokémon */\nexport const natures = new Collection<string, PokemonTypes.Natures>([\n  [\n    'adamant',\n    {\n      name: 'Adamant',\n      increasedStat: 'Attack',\n      decreasedStat: 'Special Attack',\n      preferredFlavor: 'Spicy',\n      dislikedFlavor: 'Dry'\n    }\n  ],\n  [\n    'bashful',\n    {\n      name: 'Bashful',\n      increasedStat: null,\n      decreasedStat: null,\n      preferredFlavor: null,\n      dislikedFlavor: null\n    }\n  ],\n  [\n    'bold',\n    {\n      name: 'Bold',\n      increasedStat: 'Defense',\n      decreasedStat: 'Attack',\n      preferredFlavor: 'Sour',\n      dislikedFlavor: 'Spicy'\n    }\n  ],\n  [\n    'brave',\n    {\n      name: 'Brave',\n      increasedStat: 'Attack',\n      decreasedStat: 'Speed',\n      preferredFlavor: 'Spicy',\n      dislikedFlavor: 'Sweet'\n    }\n  ],\n  [\n    'calm',\n    {\n      name: 'Calm',\n      increasedStat: 'Special Defense',\n      decreasedStat: 'Attack',\n      preferredFlavor: 'Bitter',\n      dislikedFlavor: 'Spicy'\n    }\n  ],\n  [\n    'careful',\n    {\n      name: 'Careful',\n      increasedStat: 'Special Defense',\n      decreasedStat: 'Special Attack',\n      preferredFlavor: 'Bitter',\n      dislikedFlavor: 'Dry'\n    }\n  ],\n  [\n    'docile',\n    {\n      name: 'Docile',\n      increasedStat: null,\n      decreasedStat: null,\n      preferredFlavor: null,\n      dislikedFlavor: null\n    }\n  ],\n  [\n    'gentle',\n    {\n      name: 'Gentle',\n      increasedStat: 'Special Defense',\n      decreasedStat: 'Defense',\n      preferredFlavor: 'Bitter',\n      dislikedFlavor: 'Sour'\n    }\n  ],\n  [\n    'hardy',\n    {\n      name: 'Hardy',\n      increasedStat: null,\n      decreasedStat: null,\n      preferredFlavor: null,\n      dislikedFlavor: null\n    }\n  ],\n  [\n    'hasty',\n    {\n      name: 'Hasty',\n      increasedStat: 'Hasty',\n      decreasedStat: 'Defense',\n      preferredFlavor: 'Sweet',\n      dislikedFlavor: 'Sour'\n    }\n  ],\n  [\n    'impish',\n    {\n      name: 'Impish',\n      increasedStat: 'Defense',\n      decreasedStat: 'Sour',\n      preferredFlavor: 'Special Attack',\n      dislikedFlavor: 'Dry'\n    }\n  ],\n  [\n    'jolly',\n    {\n      name: 'Jolly',\n      increasedStat: 'Speed',\n      decreasedStat: 'Special Attack',\n      preferredFlavor: 'Sweet',\n      dislikedFlavor: 'Dry'\n    }\n  ],\n  [\n    'lax',\n    {\n      name: 'Lax',\n      increasedStat: 'Defense',\n      decreasedStat: 'Sour',\n      preferredFlavor: 'Special Defense',\n      dislikedFlavor: 'Bitter'\n    }\n  ],\n  [\n    'lonely',\n    {\n      name: 'Lonely',\n      increasedStat: 'Attack',\n      decreasedStat: 'Defense',\n      preferredFlavor: 'Spicy',\n      dislikedFlavor: 'Sour'\n    }\n  ],\n  [\n    'mild',\n    {\n      name: 'Mild',\n      increasedStat: 'Special Attack',\n      decreasedStat: 'Defense',\n      preferredFlavor: 'Dry',\n      dislikedFlavor: 'Sour'\n    }\n  ],\n  [\n    'modest',\n    {\n      name: 'Modest',\n      increasedStat: 'Special Attack',\n      decreasedStat: 'Attack',\n      preferredFlavor: 'Dry',\n      dislikedFlavor: 'Spicy'\n    }\n  ],\n  [\n    'naive',\n    {\n      name: 'Naive',\n      increasedStat: 'Speed',\n      decreasedStat: 'Special Defense',\n      preferredFlavor: 'Sweet',\n      dislikedFlavor: 'Bitter'\n    }\n  ],\n  [\n    'naughty',\n    {\n      name: 'Naughty',\n      increasedStat: 'Attack',\n      decreasedStat: 'Special Defense',\n      preferredFlavor: 'Spicy',\n      dislikedFlavor: 'Bitter'\n    }\n  ],\n  [\n    'quiet',\n    {\n      name: 'Quiet',\n      increasedStat: 'Special Attack',\n      decreasedStat: 'Speed',\n      preferredFlavor: 'Dry',\n      dislikedFlavor: 'Sweet'\n    }\n  ],\n  [\n    'quirky',\n    {\n      name: 'Quirky',\n      increasedStat: null,\n      decreasedStat: null,\n      preferredFlavor: null,\n      dislikedFlavor: null\n    }\n  ],\n  [\n    'rash',\n    {\n      name: 'Rash',\n      increasedStat: 'Special Attack',\n      decreasedStat: 'Special Defense',\n      preferredFlavor: 'Dry',\n      dislikedFlavor: 'Bitter'\n    }\n  ],\n  [\n    'relaxed',\n    {\n      name: 'Relaxed',\n      increasedStat: 'Defense',\n      decreasedStat: 'Speed',\n      preferredFlavor: 'Sour',\n      dislikedFlavor: 'Sweet'\n    }\n  ],\n  [\n    'sassy',\n    {\n      name: 'Sassy',\n      increasedStat: 'Special Defense',\n      decreasedStat: 'Speed',\n      preferredFlavor: 'Bitter',\n      dislikedFlavor: 'Sweet'\n    }\n  ],\n  [\n    'serious',\n    {\n      name: 'Serious',\n      increasedStat: null,\n      decreasedStat: null,\n      preferredFlavor: null,\n      dislikedFlavor: null\n    }\n  ],\n  [\n    'timid',\n    {\n      name: 'Timid',\n      increasedStat: 'Speed',\n      decreasedStat: 'Attack',\n      preferredFlavor: 'Sweet',\n      dislikedFlavor: 'Spicy'\n    }\n  ]\n]);\n\nfor (const [key, value] of natures.entries()) {\n  value.key = key;\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/cap.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'syclar',\n    {\n      abilities: { first: 'compoundeyes', second: 'snowcloak', hidden: 'icebody' },\n      baseStats: { hp: 40, atk: 76, def: 45, spa: 74, spd: 39, spe: 91 },\n      color: 'Blue',\n      eggGroups: ['Bug'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['syclant'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: false,\n      num: -1,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/syclar.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/syclar.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/syclar.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/syclar.png',\n      species: 'syclar',\n      types: [TypesEnum.Ice, TypesEnum.Bug],\n      weightkg: 4\n    }\n  ],\n  [\n    'syclant',\n    {\n      abilities: { first: 'compoundeyes', second: 'mountaineer', hidden: 'icebody' },\n      baseStats: { hp: 70, atk: 116, def: 70, spa: 114, spd: 64, spe: 121 },\n      color: 'Blue',\n      eggGroups: ['Bug'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      num: -2,\n      prevo: 'syclar',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/syclant.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/syclant.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/syclant.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/syclant.png',\n      species: 'syclant',\n      types: [TypesEnum.Ice, TypesEnum.Bug],\n      weightkg: 52\n    }\n  ],\n  [\n    'revenankh',\n    {\n      abilities: { first: 'airlock', second: 'triage', hidden: 'shedskin' },\n      baseStats: { hp: 90, atk: 105, def: 90, spa: 65, spd: 110, spe: 65 },\n      color: 'White',\n      eggGroups: ['Amorphous', 'Human-Like'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      num: -3,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/revenankh.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/revenankh.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/revenankh.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/revenankh.png',\n      species: 'revenankh',\n      types: [TypesEnum.Ghost, TypesEnum.Fighting],\n      weightkg: 44\n    }\n  ],\n  [\n    'embirch',\n    {\n      abilities: { first: 'reckless', second: 'leafguard', hidden: 'chlorophyll' },\n      baseStats: { hp: 60, atk: 40, def: 55, spa: 65, spd: 40, spe: 60 },\n      color: 'Brown',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['flarelm'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      num: -4,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/embirch.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/embirch.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/embirch.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/embirch.png',\n      species: 'embirch',\n      types: [TypesEnum.Fire, TypesEnum.Grass],\n      weightkg: 15\n    }\n  ],\n  [\n    'flarelm',\n    {\n      abilities: { first: 'rockhead', second: 'battlearmor', hidden: 'whitesmoke' },\n      baseStats: { hp: 90, atk: 50, def: 95, spa: 75, spd: 70, spe: 40 },\n      color: 'Brown',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 24,\n      evos: ['pyroak'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      num: -5,\n      prevo: 'embirch',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/flarelm.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/flarelm.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/flarelm.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/flarelm.png',\n      species: 'flarelm',\n      types: [TypesEnum.Fire, TypesEnum.Grass],\n      weightkg: 73\n    }\n  ],\n  [\n    'pyroak',\n    {\n      abilities: { first: 'rockhead', second: 'battlearmor', hidden: 'contrary' },\n      baseStats: { hp: 120, atk: 70, def: 105, spa: 70, spd: 65, spe: 60 },\n      color: 'Brown',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: false,\n      num: -6,\n      prevo: 'flarelm',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pyroak.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pyroak.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pyroak.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pyroak.png',\n      species: 'pyroak',\n      types: [TypesEnum.Fire, TypesEnum.Grass],\n      weightkg: 168\n    }\n  ],\n  [\n    'breezi',\n    {\n      abilities: { first: 'unburden', second: 'owntempo', hidden: 'frisk' },\n      baseStats: { hp: 50, atk: 46, def: 69, spa: 60, spd: 50, spe: 75 },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['fidgit'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: false,\n      num: -7,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/breezi.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/breezi.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/breezi.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/breezi.png',\n      species: 'breezi',\n      types: [TypesEnum.Poison, TypesEnum.Flying],\n      weightkg: 0.6\n    }\n  ],\n  [\n    'fidgit',\n    {\n      abilities: { first: 'persistent', second: 'vitalspirit', hidden: 'frisk' },\n      baseStats: { hp: 95, atk: 76, def: 109, spa: 90, spd: 80, spe: 105 },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 33,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: false,\n      num: -8,\n      prevo: 'breezi',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/fidgit.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/fidgit.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/fidgit.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/fidgit.png',\n      species: 'fidgit',\n      types: [TypesEnum.Poison, TypesEnum.Ground],\n      weightkg: 53\n    }\n  ],\n  [\n    'rebble',\n    {\n      abilities: { first: 'levitate', second: 'solidrock', hidden: 'sniper' },\n      baseStats: { hp: 45, atk: 25, def: 65, spa: 75, spd: 55, spe: 80 },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['tactite'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      num: -9,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/rebble.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/rebble.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/rebble.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/rebble.png',\n      species: 'rebble',\n      types: [TypesEnum.Rock],\n      weightkg: 7\n    }\n  ],\n  [\n    'tactite',\n    {\n      abilities: { first: 'levitate', second: 'technician', hidden: 'sniper' },\n      baseStats: { hp: 70, atk: 40, def: 65, spa: 100, spd: 65, spe: 95 },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 28,\n      evos: ['stratagem'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      num: -10,\n      prevo: 'rebble',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/tactite.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/tactite.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/tactite.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/tactite.png',\n      species: 'tactite',\n      types: [TypesEnum.Rock],\n      weightkg: 16\n    }\n  ],\n  [\n    'stratagem',\n    {\n      abilities: { first: 'levitate', second: 'technician', hidden: 'sniper' },\n      baseStats: { hp: 90, atk: 60, def: 65, spa: 120, spd: 70, spe: 130 },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 28,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.9,\n      isEggObtainable: false,\n      num: -11,\n      prevo: 'tactite',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/stratagem.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/stratagem.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/stratagem.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/stratagem.png',\n      species: 'stratagem',\n      types: [TypesEnum.Rock],\n      weightkg: 45\n    }\n  ],\n  [\n    'privatyke',\n    {\n      abilities: { first: 'unaware', hidden: 'technician' },\n      baseStats: { hp: 65, atk: 75, def: 65, spa: 40, spd: 60, spe: 45 },\n      color: 'Green',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['arghonaut'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: false,\n      num: -12,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/privatyke.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/privatyke.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/privatyke.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/privatyke.png',\n      species: 'privatyke',\n      types: [TypesEnum.Water, TypesEnum.Fighting],\n      weightkg: 35\n    }\n  ],\n  [\n    'arghonaut',\n    {\n      abilities: { first: 'unaware', hidden: 'technician' },\n      baseStats: { hp: 105, atk: 110, def: 95, spa: 70, spd: 100, spe: 75 },\n      color: 'Green',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 37,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      num: -13,\n      prevo: 'privatyke',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/arghonaut.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/arghonaut.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/arghonaut.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/arghonaut.png',\n      species: 'arghonaut',\n      types: [TypesEnum.Water, TypesEnum.Fighting],\n      weightkg: 151\n    }\n  ],\n  [\n    'kitsunoh',\n    {\n      abilities: { first: 'frisk', second: 'limber', hidden: 'ironfist' },\n      baseStats: { hp: 80, atk: 103, def: 85, spa: 55, spd: 80, spe: 110 },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Metal Coat',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: false,\n      num: -14,\n      prevo: 'nohface',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/kitsunoh.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/kitsunoh.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/kitsunoh.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/kitsunoh.png',\n      species: 'kitsunoh',\n      types: [TypesEnum.Ghost, TypesEnum.Steel],\n      weightkg: 51\n    }\n  ],\n  [\n    'cyclohm',\n    {\n      abilities: { first: 'shielddust', second: 'static', hidden: 'damp' },\n      baseStats: { hp: 108, atk: 60, def: 118, spa: 112, spd: 70, spe: 80 },\n      color: 'Yellow',\n      eggGroups: ['Dragon', 'Monster'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 43,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: false,\n      num: -15,\n      prevo: 'duohm',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/cyclohm.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/cyclohm.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/cyclohm.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/cyclohm.png',\n      species: 'cyclohm',\n      types: [TypesEnum.Electric, TypesEnum.Dragon],\n      weightkg: 59\n    }\n  ],\n  [\n    'colossoil',\n    {\n      abilities: { first: 'rebound', second: 'guts', hidden: 'unnerve' },\n      baseStats: { hp: 133, atk: 122, def: 72, spa: 71, spd: 72, spe: 95 },\n      color: 'Brown',\n      eggGroups: ['Water 2', 'Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 39,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.6,\n      isEggObtainable: false,\n      num: -16,\n      prevo: 'dorsoil',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/colossoil.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/colossoil.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/colossoil.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/colossoil.png',\n      species: 'colossoil',\n      types: [TypesEnum.Ground, TypesEnum.Dark],\n      weightkg: 683.6\n    }\n  ],\n  [\n    'krilowatt',\n    {\n      abilities: { first: 'trace', second: 'magicguard', hidden: 'minus' },\n      baseStats: { hp: 151, atk: 84, def: 73, spa: 83, spd: 74, spe: 105 },\n      color: 'Red',\n      eggGroups: ['Water 1', 'Fairy'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 15,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: false,\n      num: -17,\n      prevo: 'protowatt',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/krillowatt.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/krillowatt.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/krillowatt.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/krillowatt.png',\n      species: 'krilowatt',\n      types: [TypesEnum.Electric, TypesEnum.Water],\n      weightkg: 10.6\n    }\n  ],\n  [\n    'voodoll',\n    {\n      abilities: { first: 'voltabsorb', second: 'lightningrod', hidden: 'cursedbody' },\n      baseStats: { hp: 55, atk: 40, def: 55, spa: 75, spd: 50, spe: 70 },\n      color: 'Brown',\n      eggGroups: ['Human-Like', 'Ground'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['voodoom'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: false,\n      num: -18,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/voodoll.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/voodoll.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/voodoll.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/voodoll.png',\n      species: 'voodoll',\n      types: [TypesEnum.Normal, TypesEnum.Dark],\n      weightkg: 25\n    }\n  ],\n  [\n    'voodoom',\n    {\n      abilities: { first: 'voltabsorb', second: 'lightningrod', hidden: 'cursedbody' },\n      baseStats: { hp: 90, atk: 85, def: 80, spa: 105, spd: 80, spe: 110 },\n      color: 'Brown',\n      eggGroups: ['Human-Like', 'Ground'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: false,\n      num: -19,\n      prevo: 'voodoll',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/voodoom.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/voodoom.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/voodoom.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/voodoom.png',\n      species: 'voodoom',\n      types: [TypesEnum.Fighting, TypesEnum.Dark],\n      weightkg: 75.5\n    }\n  ],\n  [\n    'scratchet',\n    {\n      abilities: { first: 'scrappy', second: 'prankster', hidden: 'vitalspirit' },\n      baseStats: { hp: 55, atk: 85, def: 80, spa: 20, spd: 70, spe: 40 },\n      color: 'Brown',\n      eggGroups: ['Field', 'Flying'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['tomohawk'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: false,\n      num: -20,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/scratchet.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/scratchet.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/scratchet.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/scratchet.png',\n      species: 'scratchet',\n      types: [TypesEnum.Normal, TypesEnum.Fighting],\n      weightkg: 20\n    }\n  ],\n  [\n    'tomohawk',\n    {\n      abilities: { first: 'intimidate', second: 'prankster', hidden: 'justified' },\n      baseStats: { hp: 105, atk: 60, def: 90, spa: 115, spd: 80, spe: 85 },\n      color: 'Red',\n      eggGroups: ['Field', 'Flying'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 23,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.27,\n      isEggObtainable: false,\n      num: -21,\n      prevo: 'scratchet',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/tomohawk.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/tomohawk.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/tomohawk.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/tomohawk.png',\n      species: 'tomohawk',\n      types: [TypesEnum.Flying, TypesEnum.Fighting],\n      weightkg: 37.2\n    }\n  ],\n  [\n    'necturine',\n    {\n      abilities: { first: 'anticipation', hidden: 'telepathy' },\n      baseStats: { hp: 49, atk: 55, def: 60, spa: 50, spd: 75, spe: 51 },\n      color: 'White',\n      eggGroups: ['Grass', 'Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['necturna'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      num: -22,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/necturine.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/necturine.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/necturine.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/necturine.png',\n      species: 'necturine',\n      types: [TypesEnum.Grass, TypesEnum.Ghost],\n      weightkg: 1.8\n    }\n  ],\n  [\n    'necturna',\n    {\n      abilities: { first: 'forewarn', hidden: 'telepathy' },\n      baseStats: { hp: 64, atk: 120, def: 100, spa: 85, spd: 120, spe: 58 },\n      color: 'Black',\n      eggGroups: ['Grass', 'Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 31,\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.65,\n      isEggObtainable: false,\n      num: -23,\n      prevo: 'necturine',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/necturna.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/necturna.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/necturna.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/necturna.png',\n      species: 'necturna',\n      types: [TypesEnum.Grass, TypesEnum.Ghost],\n      weightkg: 49.6\n    }\n  ],\n  [\n    'mollux',\n    {\n      abilities: { first: 'dryskin', hidden: 'illuminate' },\n      baseStats: { hp: 95, atk: 45, def: 83, spa: 131, spd: 105, spe: 76 },\n      color: 'Pink',\n      eggGroups: ['Fairy', 'Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      num: -24,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/mollux.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/mollux.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/mollux.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/mollux.png',\n      species: 'mollux',\n      types: [TypesEnum.Fire, TypesEnum.Poison],\n      weightkg: 41\n    }\n  ],\n  [\n    'cupra',\n    {\n      abilities: { first: 'shielddust', second: 'keeneye', hidden: 'magicguard' },\n      baseStats: { hp: 50, atk: 60, def: 49, spa: 67, spd: 30, spe: 44 },\n      color: 'Brown',\n      eggGroups: ['Bug'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['argalis'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: false,\n      num: -25,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/cupra.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/cupra.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/cupra.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/cupra.png',\n      species: 'cupra',\n      types: [TypesEnum.Bug, TypesEnum.Psychic],\n      weightkg: 4.8\n    }\n  ],\n  [\n    'argalis',\n    {\n      abilities: { first: 'shedskin', second: 'compoundeyes', hidden: 'overcoat' },\n      baseStats: { hp: 60, atk: 90, def: 89, spa: 87, spd: 40, spe: 54 },\n      color: 'Gray',\n      eggGroups: ['Bug'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      evos: ['aurumoth'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: false,\n      num: -26,\n      prevo: 'cupra',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/argalis.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/argalis.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/argalis.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/argalis.png',\n      species: 'argalis',\n      types: [TypesEnum.Bug, TypesEnum.Psychic],\n      weightkg: 341.4\n    }\n  ],\n  [\n    'aurumoth',\n    {\n      abilities: { first: 'weakarmor', second: 'noguard', hidden: 'lightmetal' },\n      baseStats: { hp: 110, atk: 120, def: 99, spa: 117, spd: 60, spe: 94 },\n      color: 'Purple',\n      eggGroups: ['Bug'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 50,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: false,\n      num: -27,\n      prevo: 'argalis',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/aurumoth.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/aurumoth.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/aurumoth.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/aurumoth.png',\n      species: 'aurumoth',\n      types: [TypesEnum.Bug, TypesEnum.Psychic],\n      weightkg: 193\n    }\n  ],\n  [\n    'brattler',\n    {\n      abilities: { first: 'harvest', second: 'infiltrator', hidden: 'rattled' },\n      baseStats: { hp: 80, atk: 70, def: 40, spa: 20, spd: 90, spe: 30 },\n      color: 'Brown',\n      eggGroups: ['Grass', 'Dragon'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['malaconda'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      num: -28,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/brattler.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/brattler.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/brattler.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/brattler.png',\n      species: 'brattler',\n      types: [TypesEnum.Dark, TypesEnum.Grass],\n      weightkg: 11.5\n    }\n  ],\n  [\n    'malaconda',\n    {\n      abilities: { first: 'harvest', second: 'infiltrator', hidden: 'drought' },\n      baseStats: { hp: 115, atk: 100, def: 60, spa: 40, spd: 130, spe: 55 },\n      color: 'Brown',\n      eggGroups: ['Grass', 'Dragon'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 33,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 5.5,\n      isEggObtainable: false,\n      num: -29,\n      prevo: 'brattler',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/malaconda.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/malaconda.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/malaconda.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/malaconda.png',\n      species: 'malaconda',\n      types: [TypesEnum.Dark, TypesEnum.Grass],\n      weightkg: 108.8\n    }\n  ],\n  [\n    'cawdet',\n    {\n      abilities: { first: 'keeneye', second: 'voltabsorb', hidden: 'bigpecks' },\n      baseStats: { hp: 35, atk: 72, def: 85, spa: 40, spd: 55, spe: 88 },\n      color: 'Gray',\n      eggGroups: ['Flying'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['cawmodore'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.76,\n      isEggObtainable: false,\n      num: -30,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/cawdet.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/cawdet.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/cawdet.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/cawdet.png',\n      species: 'cawdet',\n      types: [TypesEnum.Steel, TypesEnum.Flying],\n      weightkg: 25\n    }\n  ],\n  [\n    'cawmodore',\n    {\n      abilities: { first: 'intimidate', second: 'voltabsorb', hidden: 'bigpecks' },\n      baseStats: { hp: 50, atk: 92, def: 130, spa: 65, spd: 75, spe: 118 },\n      color: 'Black',\n      eggGroups: ['Flying'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 33,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      num: -31,\n      prevo: 'cawdet',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/cawmodore.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/cawmodore.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/cawmodore.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/cawmodore.png',\n      species: 'cawmodore',\n      types: [TypesEnum.Steel, TypesEnum.Flying],\n      weightkg: 37\n    }\n  ],\n  [\n    'volkritter',\n    {\n      abilities: { first: 'anticipation', second: 'infiltrator', hidden: 'unnerve' },\n      baseStats: { hp: 60, atk: 30, def: 50, spa: 80, spd: 60, spe: 70 },\n      color: 'Red',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['volkraken'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      num: -32,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/volkritter.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/volkritter.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/volkritter.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/volkritter.png',\n      species: 'volkritter',\n      types: [TypesEnum.Water, TypesEnum.Fire],\n      weightkg: 15\n    }\n  ],\n  [\n    'volkraken',\n    {\n      abilities: { first: 'analytic', second: 'infiltrator', hidden: 'pressure' },\n      baseStats: { hp: 100, atk: 45, def: 80, spa: 135, spd: 100, spe: 95 },\n      color: 'Red',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: false,\n      num: -33,\n      prevo: 'volkritter',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/volkraken.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/volkraken.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/volkraken.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/volkraken.png',\n      species: 'volkraken',\n      types: [TypesEnum.Water, TypesEnum.Fire],\n      weightkg: 44.5\n    }\n  ],\n  [\n    'snugglow',\n    {\n      abilities: { first: 'stormdrain', second: 'vitalspirit', hidden: 'telepathy' },\n      baseStats: { hp: 40, atk: 37, def: 79, spa: 91, spd: 68, spe: 70 },\n      color: 'Purple',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['plasmanta'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      num: -34,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/snugglow.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/snugglow.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/snugglow.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/snugglow.png',\n      species: 'snugglow',\n      types: [TypesEnum.Electric, TypesEnum.Poison],\n      weightkg: 6\n    }\n  ],\n  [\n    'plasmanta',\n    {\n      abilities: { first: 'stormdrain', second: 'vitalspirit', hidden: 'telepathy' },\n      baseStats: { hp: 60, atk: 57, def: 119, spa: 131, spd: 98, spe: 100 },\n      color: 'Purple',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 29,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 7,\n      isEggObtainable: false,\n      num: -35,\n      prevo: 'snugglow',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/plasmanta.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/plasmanta.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/plasmanta.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/plasmanta.png',\n      species: 'plasmanta',\n      types: [TypesEnum.Electric, TypesEnum.Poison],\n      weightkg: 460,\n      aliases: ['ohmagod']\n    }\n  ],\n  [\n    'floatoy',\n    {\n      abilities: { first: 'waterveil', second: 'heatproof', hidden: 'swiftswim' },\n      baseStats: { hp: 48, atk: 70, def: 40, spa: 70, spd: 30, spe: 77 },\n      color: 'White',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['caimanoe'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: false,\n      num: -36,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/floatoy.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/floatoy.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/floatoy.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/floatoy.png',\n      species: 'floatoy',\n      types: [TypesEnum.Water],\n      weightkg: 1.9\n    }\n  ],\n  [\n    'caimanoe',\n    {\n      abilities: { first: 'waterveil', second: 'heatproof', hidden: 'lightmetal' },\n      baseStats: { hp: 73, atk: 85, def: 65, spa: 80, spd: 40, spe: 87 },\n      color: 'Gray',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 21,\n      evos: ['naviathan'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      num: -37,\n      prevo: 'floatoy',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/caimanoe.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/caimanoe.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/caimanoe.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/caimanoe.png',\n      species: 'caimanoe',\n      types: [TypesEnum.Water, TypesEnum.Steel],\n      weightkg: 72.5\n    }\n  ],\n  [\n    'naviathan',\n    {\n      abilities: { first: 'guts', second: 'heatproof', hidden: 'lightmetal' },\n      baseStats: { hp: 103, atk: 110, def: 90, spa: 95, spd: 65, spe: 97 },\n      color: 'Gray',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3,\n      isEggObtainable: false,\n      num: -38,\n      prevo: 'caimanoe',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/naviathan.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/naviathan.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/naviathan.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/naviathan.png',\n      species: 'naviathan',\n      types: [TypesEnum.Water, TypesEnum.Steel],\n      weightkg: 510\n    }\n  ],\n  [\n    'crucibelle',\n    {\n      abilities: { first: 'regenerator', second: 'moldbreaker', hidden: 'liquidooze' },\n      baseStats: { hp: 106, atk: 105, def: 65, spa: 75, spd: 85, spe: 104 },\n      color: 'Purple',\n      eggGroups: ['Amorphous', 'Mineral'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1.3,\n      isEggObtainable: false,\n      num: -39,\n      otherFormes: ['crucibellemega'],\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/crucibelle.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/crucibelle.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/crucibelle.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/crucibelle.png',\n      species: 'crucibelle',\n      types: [TypesEnum.Rock, TypesEnum.Poison],\n      weightkg: 23.6\n    }\n  ],\n  [\n    'crucibellemega',\n    {\n      abilities: { first: 'magicguard' },\n      baseSpecies: 'crucibelle',\n      baseStats: { hp: 106, atk: 135, def: 75, spa: 91, spd: 125, spe: 108 },\n      color: 'Purple',\n      eggGroups: ['Amorphous', 'Mineral'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      num: -39,\n      otherFormes: ['crucibelle'],\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/crucibelle-mega.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/crucibelle-mega.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/crucibelle-mega.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/crucibelle-mega.png',\n      species: 'crucibelle-mega',\n      types: [TypesEnum.Rock, TypesEnum.Poison],\n      weightkg: 22.5\n    }\n  ],\n  [\n    'pluffle',\n    {\n      abilities: { first: 'naturalcure', second: 'aromaveil', hidden: 'friendguard' },\n      baseStats: { hp: 74, atk: 38, def: 51, spa: 65, spd: 78, spe: 49 },\n      color: 'Pink',\n      eggGroups: ['Fairy', 'Human-Like'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['kerfluffle'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: false,\n      num: -40,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pluffle.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pluffle.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pluffle.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pluffle.png',\n      species: 'pluffle',\n      types: [TypesEnum.Fairy],\n      weightkg: 1.8\n    }\n  ],\n  [\n    'kerfluffle',\n    {\n      abilities: { first: 'naturalcure', second: 'aromaveil', hidden: 'friendguard' },\n      baseStats: { hp: 84, atk: 78, def: 86, spa: 115, spd: 88, spe: 119 },\n      color: 'Pink',\n      eggGroups: ['Fairy', 'Human-Like'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: false,\n      num: -41,\n      prevo: 'pluffle',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/kerfluffle.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/kerfluffle.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/kerfluffle.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/kerfluffle.png',\n      species: 'kerfluffle',\n      types: [TypesEnum.Fairy, TypesEnum.Fighting],\n      weightkg: 24.2\n    }\n  ],\n  [\n    'pajantom',\n    {\n      abilities: { first: 'comatose' },\n      baseStats: { hp: 84, atk: 133, def: 71, spa: 51, spd: 111, spe: 101 },\n      color: 'Purple',\n      eggGroups: ['Dragon', 'Monster'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: false,\n      num: -42,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pajantom.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pajantom.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pajantom.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pajantom.png',\n      species: 'pajantom',\n      types: [TypesEnum.Dragon, TypesEnum.Ghost],\n      weightkg: 3.1\n    }\n  ],\n  [\n    'mumbao',\n    {\n      abilities: { first: 'trace', second: 'overcoat', hidden: 'solarpower' },\n      baseStats: { hp: 55, atk: 30, def: 64, spa: 87, spd: 73, spe: 66 },\n      color: 'Brown',\n      eggGroups: ['Grass'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['jumbao'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: false,\n      num: -43,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/mumbao.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/mumbao.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/mumbao.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/mumbao.png',\n      species: 'mumbao',\n      types: [TypesEnum.Grass, TypesEnum.Fairy],\n      weightkg: 83\n    }\n  ],\n  [\n    'jumbao',\n    {\n      abilities: { first: 'trace', second: 'overcoat', hidden: 'drought' },\n      baseStats: { hp: 92, atk: 63, def: 97, spa: 124, spd: 104, spe: 96 },\n      color: 'Brown',\n      eggGroups: ['Grass'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.4,\n      isEggObtainable: false,\n      num: -44,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/jumbao.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/jumbao.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/jumbao.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/jumbao.png',\n      species: 'jumbao',\n      types: [TypesEnum.Grass, TypesEnum.Fairy],\n      weightkg: 200\n    }\n  ],\n  [\n    'fawnifer',\n    {\n      abilities: { first: 'overgrow', hidden: 'lightningrod' },\n      baseStats: { hp: 49, atk: 61, def: 42, spa: 52, spd: 40, spe: 76 },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['electrelk'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: false,\n      num: -45,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/fawnifer.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/fawnifer.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/fawnifer.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/fawnifer.png',\n      species: 'fawnifer',\n      types: [TypesEnum.Grass],\n      weightkg: 6.9\n    }\n  ],\n  [\n    'electrelk',\n    {\n      abilities: { first: 'overgrow', hidden: 'galvanize' },\n      baseStats: { hp: 59, atk: 81, def: 67, spa: 57, spd: 55, spe: 101 },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 17,\n      evos: ['caribolt'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      num: -46,\n      prevo: 'fawnifer',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/electrelk.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/electrelk.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/electrelk.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/electrelk.png',\n      species: 'electrelk',\n      types: [TypesEnum.Grass, TypesEnum.Electric],\n      weightkg: 41.5\n    }\n  ],\n  [\n    'caribolt',\n    {\n      abilities: { first: 'overgrow', hidden: 'galvanize' },\n      baseStats: { hp: 84, atk: 106, def: 82, spa: 77, spd: 80, spe: 106 },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.5,\n      isEggObtainable: false,\n      num: -47,\n      prevo: 'electrelk',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/caribolt.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/caribolt.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/caribolt.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/caribolt.png',\n      species: 'caribolt',\n      types: [TypesEnum.Grass, TypesEnum.Electric],\n      weightkg: 140\n    }\n  ],\n  [\n    'smogecko',\n    {\n      abilities: { first: 'blaze', hidden: 'technician' },\n      baseStats: { hp: 48, atk: 66, def: 43, spa: 58, spd: 48, spe: 56 },\n      color: 'Red',\n      eggGroups: ['Field', 'Monster'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['smoguana'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: false,\n      num: -48,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/smogecko.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/smogecko.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/smogecko.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/smogecko.png',\n      species: 'smogecko',\n      types: [TypesEnum.Fire],\n      weightkg: 8.5\n    }\n  ],\n  [\n    'smoguana',\n    {\n      abilities: { first: 'blaze', hidden: 'technician' },\n      baseStats: { hp: 68, atk: 86, def: 53, spa: 68, spd: 68, spe: 76 },\n      color: 'Red',\n      eggGroups: ['Field', 'Monster'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 15,\n      evos: ['smokomodo'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -49,\n      prevo: 'smogecko',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/smoguana.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/smoguana.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/smoguana.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/smoguana.png',\n      species: 'smoguana',\n      types: [TypesEnum.Fire, TypesEnum.Ground],\n      weightkg: 22.2\n    }\n  ],\n  [\n    'smokomodo',\n    {\n      abilities: { first: 'blaze', hidden: 'technician' },\n      baseStats: { hp: 88, atk: 116, def: 67, spa: 88, spd: 78, spe: 97 },\n      color: 'Red',\n      eggGroups: ['Field', 'Monster'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.2,\n      isEggObtainable: false,\n      num: -50,\n      prevo: 'smoguana',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/smokomodo.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/smokomodo.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/smokomodo.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/smokomodo.png',\n      species: 'smokomodo',\n      types: [TypesEnum.Fire, TypesEnum.Ground],\n      weightkg: 205\n    }\n  ],\n  [\n    'swirlpool',\n    {\n      abilities: { first: 'torrent', hidden: 'poisonheal' },\n      baseStats: { hp: 61, atk: 49, def: 70, spa: 50, spd: 62, spe: 28 },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Fairy'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['coribalis'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: false,\n      num: -51,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/swirlpool.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/swirlpool.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/swirlpool.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/swirlpool.png',\n      species: 'swirlpool',\n      types: [TypesEnum.Water],\n      weightkg: 7\n    }\n  ],\n  [\n    'coribalis',\n    {\n      abilities: { first: 'torrent', hidden: 'poisonheal' },\n      baseStats: { hp: 76, atk: 69, def: 90, spa: 65, spd: 77, spe: 43 },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Fairy'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 17,\n      evos: ['snaelstrom'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      num: -52,\n      prevo: 'swirlpool',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/coribalis.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/coribalis.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/coribalis.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/coribalis.png',\n      species: 'coribalis',\n      types: [TypesEnum.Water, TypesEnum.Bug],\n      weightkg: 24.5\n    }\n  ],\n  [\n    'snaelstrom',\n    {\n      abilities: { first: 'torrent', hidden: 'poisonheal' },\n      baseStats: { hp: 91, atk: 94, def: 110, spa: 80, spd: 97, spe: 63 },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Fairy'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2,\n      isEggObtainable: false,\n      num: -53,\n      prevo: 'coribalis',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/snaelstrom.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/snaelstrom.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/snaelstrom.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/snaelstrom.png',\n      species: 'snaelstrom',\n      types: [TypesEnum.Water, TypesEnum.Bug],\n      weightkg: 120\n    }\n  ],\n  [\n    'justyke',\n    {\n      abilities: { first: 'levitate', second: 'bulletproof', hidden: 'justified' },\n      baseStats: { hp: 72, atk: 70, def: 56, spa: 83, spd: 68, spe: 30 },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['equilibra'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: false,\n      num: -54,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/justyke.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/justyke.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/justyke.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/justyke.png',\n      species: 'justyke',\n      types: [TypesEnum.Steel, TypesEnum.Ground],\n      weightkg: 36.5\n    }\n  ],\n  [\n    'equilibra',\n    {\n      abilities: { first: 'levitate', second: 'bulletproof', hidden: 'justified' },\n      baseStats: { hp: 102, atk: 50, def: 96, spa: 133, spd: 118, spe: 60 },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: '32',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.8,\n      isEggObtainable: false,\n      num: -55,\n      prevo: 'justyke',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/equilibra.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/equilibra.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/equilibra.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/equilibra.png',\n      species: 'equilibra',\n      types: [TypesEnum.Steel, TypesEnum.Ground],\n      weightkg: 51.3\n    }\n  ],\n  [\n    'solotl',\n    {\n      abilities: { first: 'regenerator', second: 'vitalspirit', hidden: 'magician' },\n      baseStats: { hp: 68, atk: 48, def: 34, spa: 72, spd: 24, spe: 84 },\n      color: 'Red',\n      eggGroups: ['Dragon', 'Fairy'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['astrolotl'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      num: -56,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/solotl.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/solotl.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/solotl.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/solotl.png',\n      species: 'solotl',\n      types: [TypesEnum.Fire, TypesEnum.Dragon],\n      weightkg: 11.8\n    }\n  ],\n  [\n    'astrolotl',\n    {\n      abilities: { first: 'regenerator', second: 'vitalspirit', hidden: 'magician' },\n      baseStats: { hp: 108, atk: 108, def: 74, spa: 92, spd: 64, spe: 114 },\n      color: 'Red',\n      eggGroups: ['Dragon', 'Fairy'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: '36',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.9,\n      isEggObtainable: false,\n      num: -57,\n      prevo: 'solotl',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/astrolotl.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/astrolotl.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/astrolotl.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/astrolotl.png',\n      species: 'astrolotl',\n      types: [TypesEnum.Fire, TypesEnum.Dragon],\n      weightkg: 50\n    }\n  ],\n  [\n    'miasmite',\n    {\n      abilities: { first: 'neutralizinggas', second: 'hypercutter', hidden: 'compoundeyes' },\n      baseStats: { hp: 85, atk: 135, def: 60, spa: 88, spd: 105, spe: 99 },\n      color: 'Green',\n      eggGroups: ['Bug', 'Dragon'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['miasmaw'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      num: -58,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/miasmite.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/miasmite.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/miasmite.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/miasmite.png',\n      species: 'miasmite',\n      types: [TypesEnum.Bug, TypesEnum.Dragon],\n      weightkg: 10.1\n    }\n  ],\n  [\n    'miasmaw',\n    {\n      abilities: { first: 'neutralizinggas', second: 'hypercutter', hidden: 'compoundeyes' },\n      baseStats: { hp: 85, atk: 135, def: 60, spa: 115, spd: 85, spe: 89 },\n      color: 'Green',\n      eggGroups: ['Bug', 'Dragon'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      num: -59,\n      prevo: 'miasmite',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/miasmaw.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/miasmaw.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/miasmaw.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/miasmaw.png',\n      species: 'miasmaw',\n      types: [TypesEnum.Bug, TypesEnum.Dragon],\n      weightkg: 57\n    }\n  ],\n  [\n    'chromera',\n    {\n      abilities: { first: 'colorchange' },\n      baseStats: { hp: 85, atk: 85, def: 115, spa: 115, spd: 100, spe: 100 },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.5,\n      isEggObtainable: false,\n      num: -60,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/chromera.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/chromera.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/chromera.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/chromera.png',\n      species: 'chromera',\n      types: [TypesEnum.Dark, TypesEnum.Normal],\n      weightkg: 215\n    }\n  ],\n  [\n    'nohface',\n    {\n      abilities: { first: 'frisk', second: 'limber', hidden: 'unnerve' },\n      baseStats: { hp: 50, atk: 73, def: 50, spa: 30, spd: 50, spe: 80 },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['kitsunoh'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.5,\n      isEggObtainable: false,\n      num: -61,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/nohface.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/nohface.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/nohface.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/nohface.png',\n      species: 'nohface',\n      types: [TypesEnum.Ghost],\n      weightkg: 5.9\n    }\n  ],\n  [\n    'monohm',\n    {\n      abilities: { first: 'shielddust', second: 'static', hidden: 'damp' },\n      baseStats: { hp: 53, atk: 40, def: 58, spa: 67, spd: 55, spe: 55 },\n      color: 'Yellow',\n      eggGroups: ['Dragon', 'Monster'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['duohm'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      num: -62,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/monohm.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/monohm.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/monohm.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/monohm.png',\n      species: 'monohm',\n      types: [TypesEnum.Electric],\n      weightkg: 5.9\n    }\n  ],\n  [\n    'duohm',\n    {\n      abilities: { first: 'shielddust', second: 'static', hidden: 'damp' },\n      baseStats: { hp: 88, atk: 40, def: 103, spa: 77, spd: 60, spe: 60 },\n      color: 'Yellow',\n      eggGroups: ['Dragon', 'Monster'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 32,\n      evos: ['cyclohm'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.1,\n      isEggObtainable: false,\n      num: -63,\n      prevo: 'monohm',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/duohm.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/duohm.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/duohm.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/duohm.png',\n      species: 'duohm',\n      types: [TypesEnum.Electric, TypesEnum.Dragon],\n      weightkg: 19.2\n    }\n  ],\n  [\n    'dorsoil',\n    {\n      abilities: { first: 'oblivious', second: 'guts', hidden: 'unnerve' },\n      baseStats: { hp: 103, atk: 72, def: 52, spa: 61, spd: 52, spe: 65 },\n      color: 'White',\n      eggGroups: ['Water 2', 'Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 32,\n      evos: ['colossoil'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.3,\n      isEggObtainable: false,\n      num: -64,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/dorsoil.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/dorsoil.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/dorsoil.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/dorsoil.png',\n      species: 'dorsoil',\n      types: [TypesEnum.Ground],\n      weightkg: 145\n    }\n  ],\n  [\n    'protowatt',\n    {\n      abilities: { first: 'trace', second: 'magicguard', hidden: 'minus' },\n      baseStats: { hp: 51, atk: 44, def: 33, spa: 43, spd: 34, spe: 65 },\n      color: 'Red',\n      eggGroups: ['Water 1', 'Fairy'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['krilowatt'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.1,\n      isEggObtainable: false,\n      num: -65,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/protowatt.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/protowatt.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/protowatt.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/protowatt.png',\n      species: 'protowatt',\n      types: [TypesEnum.Electric, TypesEnum.Water],\n      weightkg: 0.1\n    }\n  ],\n  [\n    'venomicon',\n    {\n      abilities: { first: 'stamina', hidden: 'powerofalchemy' },\n      baseStats: { hp: 85, atk: 50, def: 113, spa: 118, spd: 90, spe: 64 },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.8,\n      isEggObtainable: false,\n      num: -66,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/venomicon.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/venomicon.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/venomicon.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/venomicon.png',\n      species: 'venomicon',\n      types: [TypesEnum.Poison, TypesEnum.Flying],\n      weightkg: 11.5\n    }\n  ],\n  [\n    'venomiconepilogue',\n    {\n      abilities: { first: 'tintedlens' },\n      baseSpecies: 'venomicon',\n      baseStats: { hp: 85, atk: 102, def: 85, spa: 62, spd: 85, spe: 101 },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Epilogue',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.8,\n      isEggObtainable: false,\n      num: -66,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/venomiconepilogue.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/venomiconepilogue.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/venomiconepilogue.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/venomiconepilogue.png',\n      species: 'venomicon-epilogue',\n      types: [TypesEnum.Poison, TypesEnum.Flying],\n      weightkg: 12.4\n    }\n  ],\n  [\n    'saharascal',\n    {\n      abilities: { first: 'waterabsorb', second: 'pickpocket', hidden: 'sandspit' },\n      baseStats: { hp: 50, atk: 80, def: 65, spa: 45, spd: 90, spe: 70 },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['saharaja'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      num: -67,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/saharascal.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/saharascal.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/saharascal.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/saharascal.png',\n      species: 'saharascal',\n      types: [TypesEnum.Ground],\n      weightkg: 48\n    }\n  ],\n  [\n    'saharaja',\n    {\n      abilities: { first: 'waterabsorb', second: 'serenegrace', hidden: 'sandspit' },\n      baseStats: { hp: 70, atk: 112, def: 105, spa: 65, spd: 123, spe: 78 },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Shiny Stone',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      num: -68,\n      prevo: 'saharascal',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/saharaja.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/saharaja.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/saharaja.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/saharaja.png',\n      species: 'saharaja',\n      types: [TypesEnum.Ground],\n      weightkg: 303.9\n    }\n  ],\n  [\n    'ababo',\n    {\n      abilities: { first: 'pixilate', second: 'rattled', hidden: 'owntempo' },\n      baseStats: { hp: 42, atk: 35, def: 27, spa: 35, spd: 35, spe: 38 },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 0.5,\n      isEggObtainable: false,\n      num: -69,\n      evos: ['scattervein'],\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/ababo.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/ababo.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/ababo.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/ababo.png',\n      species: 'ababo',\n      types: [TypesEnum.Fairy],\n      weightkg: 3.5\n    }\n  ],\n  [\n    'scattervein',\n    {\n      abilities: { first: 'pixilate', second: 'intimidate', hidden: 'owntempo' },\n      baseStats: { hp: 75, atk: 74, def: 87, spa: 62, spd: 89, spe: 63 },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Fairy'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up with happiness of at least 220',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -70,\n      evos: ['hemogoblin'],\n      prevo: 'ababo',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/scattervein.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/scattervein.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/scattervein.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/scattervein.png',\n      species: 'scattervein',\n      types: [TypesEnum.Fairy],\n      weightkg: 25\n    }\n  ],\n  [\n    'hemogoblin',\n    {\n      abilities: { first: 'pixilate', second: 'intimidate', hidden: 'owntempo' },\n      baseStats: { hp: 90, atk: 96, def: 87, spa: 96, spd: 89, spe: 55 },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Fairy'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Fire Stone',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      num: -71,\n      prevo: 'scattervein',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/hemogoblin.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/hemogoblin.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/hemogoblin.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/hemogoblin.png',\n      species: 'hemogoblin',\n      types: [TypesEnum.Fairy, TypesEnum.Fire],\n      weightkg: 85\n    }\n  ],\n  [\n    'cresceidon',\n    {\n      abilities: { first: 'multiscale', second: 'roughskin' },\n      baseStats: { hp: 80, atk: 32, def: 111, spa: 88, spd: 99, spe: 125 },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 10,\n      isEggObtainable: false,\n      num: -72,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/cresceidon.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/cresceidon.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/cresceidon.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/cresceidon.png',\n      species: 'cresceidon',\n      types: [TypesEnum.Water, TypesEnum.Fairy],\n      weightkg: 999.9\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/gen1.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'missingno',\n    {\n      abilities: { first: 'pressure' },\n      baseStats: { hp: 33, atk: 136, def: 0, spa: 6, spd: 6, spe: 29 },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      heightm: 3.3,\n      isEggObtainable: false,\n      num: 0,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/afd-back/missingno.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/afd-back-shiny/missingno.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/afd-shiny/missingno.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/afd/missingno.png',\n      specialBulbapediaUrl: 'MissingNo.',\n      species: 'missingno.',\n      types: [TypesEnum.Normal],\n      weightkg: 1590.8,\n      otherFormes: ['m00']\n    }\n  ],\n  [\n    'm00',\n    {\n      abilities: { first: 'pressure' },\n      baseSpecies: 'missingno',\n      baseStats: { hp: 33, atk: 137, def: 0, spa: 29, spd: 29, spe: 6 },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      heightm: 7,\n      isEggObtainable: false,\n      num: 0,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen1/missingno.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen1/missingno.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen1/missingno.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen1/missingno.png',\n      specialBulbapediaUrl: \"'M_(00)\",\n      species: \"'m (00)\",\n      types: [TypesEnum.Normal],\n      weightkg: 399.4,\n      otherFormes: ['missingno']\n    }\n  ],\n  [\n    'bulbasaur',\n    {\n      abilities: { first: 'overgrow', hidden: 'chlorophyll' },\n      baseStats: { hp: 45, atk: 49, def: 49, spa: 65, spd: 65, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['ivysaur'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 1,\n      species: 'bulbasaur',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 6.9,\n      aliases: ['bulbapedia', 'fushigidane'],\n      classification: 'Seed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bulbasaur.mp3',\n      respelling: 'BUL-buh-sore',\n      ipa: '/ˈbʌlbəsɔər/'\n    }\n  ],\n  [\n    'ivysaur',\n    {\n      abilities: { first: 'overgrow', hidden: 'chlorophyll' },\n      baseStats: { hp: 60, atk: 62, def: 63, spa: 80, spd: 80, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 1, spe: 0 },\n      evoLevel: 16,\n      evos: ['venusaur'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 2,\n      prevo: 'bulbasaur',\n      species: 'ivysaur',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 13,\n      aliases: ['fushigisou'],\n      classification: 'Seed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ivysaur.mp3',\n      respelling: 'EYE-vee-sore',\n      ipa: '/ˈaɪviːsɔər/'\n    }\n  ],\n  [\n    'venusaur',\n    {\n      abilities: { first: 'overgrow', hidden: 'chlorophyll' },\n      baseStats: { hp: 80, atk: 82, def: 83, spa: 100, spd: 100, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 1, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 3,\n      otherFormes: ['venusaurmega', 'venusaurgmax'],\n      prevo: 'ivysaur',\n      species: 'venusaur',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 100,\n      aliases: ['fushigibana', 'venu'],\n      classification: 'Seed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/venusaur.mp3',\n      respelling: 'VEE-nuh-sore',\n      ipa: '/ˈviːnəsɔər/'\n    }\n  ],\n  [\n    'venusaurgmax',\n    {\n      abilities: { first: 'overgrow', hidden: 'chlorophyll' },\n      baseSpecies: 'venusaur',\n      baseStats: { hp: 80, atk: 82, def: 83, spa: 100, spd: 100, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 1, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 24,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 3,\n      otherFormes: ['venusaur', 'venusaurmega'],\n      species: 'venusaur-gmax',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 100,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/venusaur.mp3',\n      respelling: 'VEE-nuh-sore',\n      ipa: '/ˈviːnəsɔər/'\n    }\n  ],\n  [\n    'venusaurmega',\n    {\n      abilities: { first: 'thickfat' },\n      baseSpecies: 'venusaur',\n      baseStats: { hp: 80, atk: 100, def: 123, spa: 122, spd: 120, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 1, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 3,\n      otherFormes: ['venusaur', 'venusaurgmax'],\n      species: 'venusaur-mega',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 155.5,\n      aliases: ['megasaur', 'megavenu'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/venusaur-mega.mp3',\n      respelling: 'VEE-nuh-sore',\n      ipa: '/ˈviːnəsɔər/'\n    }\n  ],\n  [\n    'charmander',\n    {\n      abilities: { first: 'blaze', hidden: 'solarpower' },\n      baseStats: { hp: 39, atk: 52, def: 43, spa: 60, spd: 50, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['charmeleon'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 4,\n      species: 'charmander',\n      types: [TypesEnum.Fire],\n      weightkg: 8.5,\n      aliases: ['hitokage'],\n      classification: 'Lizard Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/charmander.mp3',\n      respelling: 'CHAR-man-der',\n      ipa: '/ˈtʃɑːrmændər/'\n    }\n  ],\n  [\n    'charmeleon',\n    {\n      abilities: { first: 'blaze', hidden: 'solarpower' },\n      baseStats: { hp: 58, atk: 64, def: 58, spa: 80, spd: 65, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      evoLevel: 16,\n      evos: ['charizard'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 5,\n      prevo: 'charmander',\n      species: 'charmeleon',\n      types: [TypesEnum.Fire],\n      weightkg: 19,\n      aliases: ['rizaado'],\n      classification: 'Flame Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/charmeleon.mp3',\n      respelling: 'char-MEAL-ee-ehn',\n      ipa: '/tʃɑːrˈmiːliːɛn/'\n    }\n  ],\n  [\n    'charizard',\n    {\n      abilities: { first: 'blaze', hidden: 'solarpower' },\n      baseStats: { hp: 78, atk: 84, def: 78, spa: 109, spd: 85, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 6,\n      otherFormes: ['charizardmegax', 'charizardmegay', 'charizardgmax'],\n      prevo: 'charmeleon',\n      species: 'charizard',\n      types: [TypesEnum.Fire, TypesEnum.Flying],\n      weightkg: 90.5,\n      aliases: ['rizaadon', 'zard'],\n      classification: 'Flame Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/charizard.mp3',\n      respelling: 'CHAR-i-zard',\n      ipa: '/ˈtʃɑːrɪzɑːrd/'\n    }\n  ],\n  [\n    'charizardmegax',\n    {\n      abilities: { first: 'toughclaws' },\n      baseSpecies: 'charizard',\n      baseStats: { hp: 78, atk: 130, def: 111, spa: 130, spd: 85, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega-X',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 6,\n      otherFormes: ['charizard', 'charizardmegay', 'charizardgmax'],\n      species: 'charizard-mega-x',\n      types: [TypesEnum.Fire, TypesEnum.Dragon],\n      weightkg: 110.5,\n      aliases: ['megacharizardx', 'megazardx', 'zardx'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/charizard-megax.mp3',\n      respelling: 'CHAR-i-zard',\n      ipa: '/ˈtʃɑːrɪzɑːrd/'\n    }\n  ],\n  [\n    'charizardmegay',\n    {\n      abilities: { first: 'drought' },\n      baseSpecies: 'charizard',\n      baseStats: { hp: 78, atk: 104, def: 78, spa: 159, spd: 115, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega-Y',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 6,\n      otherFormes: ['charizard', 'charizardmegax', 'charizardgmax'],\n      species: 'charizard-mega-y',\n      types: [TypesEnum.Fire, TypesEnum.Flying],\n      weightkg: 100.5,\n      aliases: ['megacharizard', 'megacharizardy', 'megazardy', 'zardy'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/charizard-megay.mp3',\n      respelling: 'CHAR-i-zard',\n      ipa: '/ˈtʃɑːrɪzɑːrd/'\n    }\n  ],\n  [\n    'charizardgmax',\n    {\n      abilities: { first: 'blaze', hidden: 'solarpower' },\n      baseSpecies: 'charizard',\n      baseStats: { hp: 78, atk: 84, def: 78, spa: 109, spd: 85, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 28,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 6,\n      otherFormes: ['charizard', 'charizardmegax', 'charizardmegay'],\n      species: 'charizard-gmax',\n      types: [TypesEnum.Fire, TypesEnum.Flying],\n      weightkg: 100.5,\n      aliases: ['gigantamax charizard'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/charizard.mp3',\n      respelling: 'CHAR-i-zard',\n      ipa: '/ˈtʃɑːrɪzɑːrd/'\n    }\n  ],\n  [\n    'squirtle',\n    {\n      abilities: { first: 'torrent', hidden: 'raindish' },\n      baseStats: { hp: 44, atk: 48, def: 65, spa: 50, spd: 64, spe: 43 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['wartortle'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 7,\n      species: 'squirtle',\n      types: [TypesEnum.Water],\n      weightkg: 9,\n      aliases: ['zenigame'],\n      classification: 'Tiny Turtle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/squirtle.mp3',\n      respelling: 'SKWUR-tull',\n      ipa: '/ˈskwɜːrtəl/'\n    }\n  ],\n  [\n    'wartortle',\n    {\n      abilities: { first: 'torrent', hidden: 'raindish' },\n      baseStats: { hp: 59, atk: 63, def: 80, spa: 65, spd: 80, spe: 58 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 16,\n      evos: ['blastoise'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 8,\n      prevo: 'squirtle',\n      species: 'wartortle',\n      types: [TypesEnum.Water],\n      weightkg: 22.5,\n      aliases: ['kameeru'],\n      classification: 'Turtle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wartortle.mp3',\n      respelling: 'WAR-tor-tull',\n      ipa: '/ˈwɔːrtɔːrtəl/'\n    }\n  ],\n  [\n    'blastoise',\n    {\n      abilities: { first: 'torrent', hidden: 'raindish' },\n      baseStats: { hp: 79, atk: 83, def: 100, spa: 85, spd: 105, spe: 78 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 9,\n      otherFormes: ['blastoisemega', 'blastoisegmax'],\n      prevo: 'wartortle',\n      species: 'blastoise',\n      types: [TypesEnum.Water],\n      weightkg: 85.5,\n      aliases: ['kamekkusu'],\n      classification: 'Shellfish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/blastoise.mp3',\n      respelling: 'BLAST-oys',\n      ipa: '/ˈblɑːstɔɪs/'\n    }\n  ],\n  [\n    'blastoisegmax',\n    {\n      abilities: { first: 'torrent', hidden: 'raindish' },\n      baseSpecies: 'blastoise',\n      baseStats: { hp: 79, atk: 83, def: 100, spa: 85, spd: 105, spe: 78 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 25,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 9,\n      otherFormes: ['blastoise', 'blastoisemega'],\n      species: 'blastoise-gmax',\n      types: [TypesEnum.Water],\n      weightkg: 85.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/blastoise.mp3',\n      respelling: 'BLAST-oys',\n      ipa: '/ˈblɑːstɔɪs/'\n    }\n  ],\n  [\n    'blastoisemega',\n    {\n      abilities: { first: 'megalauncher' },\n      baseSpecies: 'blastoise',\n      baseStats: { hp: 79, atk: 103, def: 120, spa: 135, spd: 115, spe: 78 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 9,\n      otherFormes: ['blastoise', 'blastoisegmax'],\n      species: 'blastoise-mega',\n      types: [TypesEnum.Water],\n      weightkg: 101.1,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/blastoise-mega.mp3',\n      respelling: 'BLAST-oys',\n      ipa: '/ˈblɑːstɔɪs/'\n    }\n  ],\n  [\n    'caterpie',\n    {\n      abilities: { first: 'shielddust', hidden: 'runaway' },\n      baseStats: { hp: 45, atk: 30, def: 35, spa: 20, spd: 20, spe: 45 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['metapod'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 10,\n      species: 'caterpie',\n      types: [TypesEnum.Bug],\n      weightkg: 2.9,\n      aliases: ['kyatapii'],\n      classification: 'Worm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/caterpie.mp3',\n      respelling: 'CAT-er-pee',\n      ipa: '/ˈkætərpiː/'\n    }\n  ],\n  [\n    'metapod',\n    {\n      abilities: { first: 'shedskin' },\n      baseStats: { hp: 50, atk: 20, def: 55, spa: 25, spd: 25, spe: 30 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 7,\n      evos: ['butterfree'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 11,\n      prevo: 'caterpie',\n      species: 'metapod',\n      types: [TypesEnum.Bug],\n      weightkg: 9.9,\n      aliases: ['toranseru'],\n      classification: 'Cocoon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/metapod.mp3',\n      respelling: 'MET-uh-pod',\n      ipa: '/ˈmɛtəpɒd/'\n    }\n  ],\n  [\n    'butterfree',\n    {\n      abilities: { first: 'compoundeyes', hidden: 'tintedlens' },\n      baseStats: { hp: 60, atk: 45, def: 50, spa: 90, spd: 80, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 1, spe: 0 },\n      evoLevel: 10,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 12,\n      otherFormes: ['butterfreegmax'],\n      prevo: 'metapod',\n      species: 'butterfree',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 32,\n      aliases: ['batafurii'],\n      classification: 'Butterfly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/butterfree.mp3',\n      respelling: 'BUT-er-free',\n      ipa: '/ˈbʌtərfriː/'\n    }\n  ],\n  [\n    'butterfreegmax',\n    {\n      abilities: { first: 'compoundeyes', hidden: 'tintedlens' },\n      baseSpecies: 'butterfree',\n      baseStats: { hp: 60, atk: 45, def: 50, spa: 90, spd: 80, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 1, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 17,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 12,\n      otherFormes: ['butterfree'],\n      species: 'butterfree-gmax',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 96,\n      aliases: ['gigantamax butterfree'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/butterfree.mp3',\n      respelling: 'BUT-er-free',\n      ipa: '/ˈbʌtərfriː/'\n    }\n  ],\n  [\n    'weedle',\n    {\n      abilities: { first: 'shielddust', hidden: 'runaway' },\n      baseStats: { hp: 40, atk: 35, def: 30, spa: 20, spd: 20, spe: 50 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['kakuna'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 13,\n      species: 'weedle',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 3.2,\n      aliases: ['biidoru'],\n      classification: 'Hairy Bug Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/weedle.mp3',\n      respelling: 'WEE-dull',\n      ipa: '/ˈwiːdʌl/'\n    }\n  ],\n  [\n    'kakuna',\n    {\n      abilities: { first: 'shedskin' },\n      baseStats: { hp: 45, atk: 25, def: 50, spa: 25, spd: 25, spe: 35 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 7,\n      evos: ['beedrill'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 14,\n      prevo: 'weedle',\n      species: 'kakuna',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 10,\n      aliases: ['kokuun'],\n      classification: 'Cocoon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kakuna.mp3',\n      respelling: 'ka-KOO-nuh',\n      ipa: '/kæˈkuːnə/'\n    }\n  ],\n  [\n    'beedrill',\n    {\n      abilities: { first: 'swarm', hidden: 'sniper' },\n      baseStats: { hp: 65, atk: 90, def: 40, spa: 45, spd: 80, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 10,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 15,\n      otherFormes: ['beedrillmega'],\n      prevo: 'kakuna',\n      species: 'beedrill',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 29.5,\n      aliases: ['bdrill', 'bee', 'supiaa'],\n      classification: 'Poison Bee Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/beedrill.mp3',\n      respelling: 'BEE-drill',\n      ipa: '/ˈbiːdrɪl/'\n    }\n  ],\n  [\n    'beedrillmega',\n    {\n      abilities: { first: 'adaptability' },\n      baseSpecies: 'beedrill',\n      baseStats: { hp: 65, atk: 150, def: 40, spa: 15, spd: 80, spe: 145 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 1, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 15,\n      otherFormes: ['beedrill'],\n      species: 'beedrill-mega',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 40.5,\n      aliases: ['megabee', 'megadrill'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/beedrill-mega.mp3',\n      respelling: 'BEE-drill',\n      ipa: '/ˈbiːdrɪl/'\n    }\n  ],\n  [\n    'pidgey',\n    {\n      abilities: { first: 'keeneye', second: 'tangledfeet', hidden: 'bigpecks' },\n      baseStats: { hp: 40, atk: 45, def: 40, spa: 35, spd: 35, spe: 56 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['pidgeotto'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 16,\n      species: 'pidgey',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 1.8,\n      aliases: ['poppo'],\n      classification: 'Tiny Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pidgey.mp3',\n      respelling: 'PID-jee',\n      ipa: '/ˈpɪdʒiː/'\n    }\n  ],\n  [\n    'pidgeotto',\n    {\n      abilities: { first: 'keeneye', second: 'tangledfeet', hidden: 'bigpecks' },\n      baseStats: { hp: 63, atk: 60, def: 55, spa: 50, spd: 50, spe: 71 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 18,\n      evos: ['pidgeot'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 17,\n      prevo: 'pidgey',\n      species: 'pidgeotto',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 30,\n      aliases: ['pijon'],\n      classification: 'Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pidgeotto.mp3',\n      respelling: 'pid-JYO-toe',\n      ipa: '/ˈpɪdʒjoʊtoʊ/'\n    }\n  ],\n  [\n    'pidgeot',\n    {\n      abilities: { first: 'keeneye', second: 'tangledfeet', hidden: 'bigpecks' },\n      baseStats: { hp: 83, atk: 80, def: 75, spa: 70, spd: 70, spe: 101 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 36,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 18,\n      otherFormes: ['pidgeotmega'],\n      prevo: 'pidgeotto',\n      species: 'pidgeot',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 39.5,\n      aliases: ['birdjesus', 'pijotto'],\n      classification: 'Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pidgeot.mp3',\n      respelling: 'PID-jit',\n      ipa: '/ˈpɪdʒɪt/'\n    }\n  ],\n  [\n    'pidgeotmega',\n    {\n      abilities: { first: 'noguard' },\n      baseSpecies: 'pidgeot',\n      baseStats: { hp: 83, atk: 80, def: 80, spa: 135, spd: 80, spe: 121 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 18,\n      otherFormes: ['pidgeot'],\n      species: 'pidgeot-mega',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 50.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pidgeot-mega.mp3',\n      respelling: 'PID-jit',\n      ipa: '/ˈpɪdʒɪt/'\n    }\n  ],\n  [\n    'rattata',\n    {\n      abilities: { first: 'runaway', second: 'guts', hidden: 'hustle' },\n      baseStats: { hp: 30, atk: 56, def: 35, spa: 25, spd: 35, spe: 72 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['raticate'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 19,\n      otherFormes: ['rattataalola'],\n      species: 'rattata',\n      types: [TypesEnum.Normal],\n      weightkg: 3.5,\n      aliases: ['koratta'],\n      classification: 'Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rattata.mp3',\n      respelling: 'ruh-TA-tah',\n      ipa: '/rəˈtætɑː/'\n    }\n  ],\n  [\n    'rattataalola',\n    {\n      abilities: { first: 'gluttony', second: 'hustle', hidden: 'thickfat' },\n      baseSpecies: 'rattata',\n      baseStats: { hp: 30, atk: 56, def: 35, spa: 25, spd: 35, spe: 72 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['raticatealola'],\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 19,\n      otherFormes: ['rattata'],\n      species: 'rattata-alola',\n      types: [TypesEnum.Dark, TypesEnum.Normal],\n      weightkg: 3.8,\n      aliases: ['alolanrattata', 'rattataa'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rattata.mp3',\n      respelling: 'uh-LO-luhn RA-TAT-ta',\n      ipa: '/əˈloʊlən ˌræˈtætæ/'\n    }\n  ],\n  [\n    'raticate',\n    {\n      abilities: { first: 'runaway', second: 'guts', hidden: 'hustle' },\n      baseStats: { hp: 55, atk: 81, def: 60, spa: 50, spd: 70, spe: 97 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 20,\n      otherFormes: ['raticatealola', 'raticatealolatotem'],\n      prevo: 'rattata',\n      species: 'raticate',\n      types: [TypesEnum.Normal],\n      weightkg: 18.5,\n      aliases: ['ratta'],\n      classification: 'Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/raticate.mp3',\n      respelling: 'RAT-i-kate',\n      ipa: '/ˈrætɪkeɪt/'\n    }\n  ],\n  [\n    'raticatealola',\n    {\n      abilities: { first: 'gluttony', second: 'hustle', hidden: 'thickfat' },\n      baseSpecies: 'raticate',\n      baseStats: { hp: 75, atk: 71, def: 70, spa: 40, spd: 80, spe: 77 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'level 20 at night',\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 20,\n      otherFormes: ['raticate', 'raticatealolatotem'],\n      prevo: 'rattataalola',\n      species: 'raticate-alola',\n      types: [TypesEnum.Dark, TypesEnum.Normal],\n      weightkg: 25.5,\n      aliases: ['alolanraticate', 'raticatea'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/raticate.mp3',\n      respelling: 'uh-LO-luhn RAT-ih-kate',\n      ipa: '/əˈloʊlən ˈrætɪkeɪt/'\n    }\n  ],\n  [\n    'raticatealolatotem',\n    {\n      abilities: { first: 'thickfat' },\n      baseSpecies: 'raticate',\n      baseStats: { hp: 75, atk: 71, def: 70, spa: 40, spd: 80, spe: 77 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Alola-Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 20,\n      otherFormes: ['raticate', 'raticatealola'],\n      species: 'raticate-alola-totem',\n      types: [TypesEnum.Dark, TypesEnum.Normal],\n      weightkg: 105,\n      aliases: ['raticatet', 'totemalolanraticate', 'totemraticate', 'totemraticatea', 'totemraticatealola'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/raticate.mp3',\n      respelling: 'RAT-i-kate',\n      ipa: '/ˈrætɪkeɪt/'\n    }\n  ],\n  [\n    'spearow',\n    {\n      abilities: { first: 'keeneye', hidden: 'sniper' },\n      baseStats: { hp: 40, atk: 60, def: 30, spa: 31, spd: 31, spe: 70 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['fearow'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 21,\n      species: 'spearow',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 2,\n      aliases: ['onisuzume'],\n      classification: 'Tiny Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spearow.mp3',\n      respelling: 'SPEER-oh',\n      ipa: '/ˈspɪəroʊ/'\n    }\n  ],\n  [\n    'fearow',\n    {\n      abilities: { first: 'keeneye', hidden: 'sniper' },\n      baseStats: { hp: 65, atk: 90, def: 65, spa: 61, spd: 61, spe: 100 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 22,\n      prevo: 'spearow',\n      species: 'fearow',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 38,\n      aliases: ['onidoriru'],\n      classification: 'Beak Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fearow.mp3',\n      respelling: 'FEER-oh',\n      ipa: '/ˈfɪəroʊ/'\n    }\n  ],\n  [\n    'ekans',\n    {\n      abilities: { first: 'intimidate', second: 'shedskin', hidden: 'unnerve' },\n      baseStats: { hp: 35, atk: 60, def: 44, spa: 40, spd: 54, spe: 55 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Field', 'Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['arbok'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 23,\n      species: 'ekans',\n      types: [TypesEnum.Poison],\n      weightkg: 6.9,\n      aliases: ['aabo'],\n      classification: 'Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ekans.mp3',\n      respelling: 'ECK-ehns',\n      ipa: '/ˈɛkɪnz/'\n    }\n  ],\n  [\n    'arbok',\n    {\n      abilities: { first: 'intimidate', second: 'shedskin', hidden: 'unnerve' },\n      baseStats: { hp: 60, atk: 95, def: 69, spa: 65, spd: 79, spe: 80 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Purple',\n      eggGroups: ['Field', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 22,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 24,\n      prevo: 'ekans',\n      species: 'arbok',\n      types: [TypesEnum.Poison],\n      weightkg: 65,\n      aliases: ['aabokku'],\n      classification: 'Cobra Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arbok.mp3',\n      respelling: 'AR-bock',\n      ipa: '/ˈɑːrbɒk/'\n    }\n  ],\n  [\n    'pikachu',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'Level up with happiness of at least 220',\n      evos: ['raichu', 'raichualola'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      prevo: 'pichu',\n      species: 'pikachu',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      aliases: ['pika', 'pikachuu'],\n      classification: 'Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachugmax',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 21,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachuworld'\n      ],\n      species: 'pikachu-gmax',\n      types: [TypesEnum.Electric],\n      weightkg: 18,\n      aliases: ['gigantamax pikachu'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachucosplay',\n    {\n      abilities: { first: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Cosplay',\n      formeLetter: 'C',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-cosplay',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachurockstar',\n    {\n      abilities: { first: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Rock-Star',\n      formeLetter: 'R',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-rock-star',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachubelle',\n    {\n      abilities: { first: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Belle',\n      formeLetter: 'B',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-belle',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachupopstar',\n    {\n      abilities: { first: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Pop-Star',\n      formeLetter: 'P',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-pop-star',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachuphd',\n    {\n      abilities: { first: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'PhD',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-phd',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      aliases: ['pikachu doctor'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachulibre',\n    {\n      abilities: { first: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Libre',\n      formeLetter: 'L',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-libre',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachuoriginal',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Original',\n      formeLetter: 'O',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-original',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      aliases: ['pikachu kanto'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachuhoenn',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Hoenn',\n      formeLetter: 'H',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-hoenn',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachusinnoh',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Sinnoh',\n      formeLetter: 'S',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-sinnoh',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachuunova',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Unova',\n      formeLetter: 'U',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      species: 'pikachu-unova',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachukalos',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Kalos',\n      formeLetter: 'K',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-kalos',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachualola',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-alola',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3'\n    }\n  ],\n  [\n    'pikachupartner',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Partner',\n      formeLetter: 'P',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachustarter',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-partner',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachustarter',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 45, atk: 80, def: 50, spa: 75, spd: 60, spe: 120 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Starter',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachugmax',\n        'pikachuworld'\n      ],\n      species: 'pikachu-starter',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu-starter.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'pikachuworld',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseSpecies: 'pikachu',\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'World',\n      formeLetter: 'W',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 25,\n      otherFormes: [\n        'pikachu',\n        'pikachucosplay',\n        'pikachurockstar',\n        'pikachubelle',\n        'pikachupopstar',\n        'pikachuphd',\n        'pikachulibre',\n        'pikachuoriginal',\n        'pikachuhoenn',\n        'pikachusinnoh',\n        'pikachuunova',\n        'pikachukalos',\n        'pikachualola',\n        'pikachupartner',\n        'pikachustarter',\n        'pikachugmax'\n      ],\n      species: 'pikachu-world',\n      types: [TypesEnum.Electric],\n      weightkg: 6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikachu.mp3',\n      respelling: 'PEEK-uh-chew',\n      ipa: '/ˈpiːkətʃuː/'\n    }\n  ],\n  [\n    'raichu',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseStats: { hp: 60, atk: 90, def: 55, spa: 90, spd: 80, spe: 110 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Yellow',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 'use Thunder Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 26,\n      otherFormes: ['raichualola', 'raichumegax', 'raichumegay'],\n      prevo: 'pikachu',\n      species: 'raichu',\n      types: [TypesEnum.Electric],\n      weightkg: 30,\n      aliases: ['raichuu'],\n      classification: 'Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/raichu.mp3',\n      respelling: 'RYE-chew',\n      ipa: '/ˈraɪtʃuː/'\n    }\n  ],\n  [\n    'raichualola',\n    {\n      abilities: { first: 'surgesurfer' },\n      baseSpecies: 'raichu',\n      baseStats: { hp: 60, atk: 85, def: 50, spa: 95, spd: 85, spe: 110 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Brown',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 'use Thunder Stone',\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 26,\n      otherFormes: ['raichu', 'raichumegax', 'raichumegay'],\n      prevo: 'pikachu',\n      species: 'raichu-alola',\n      types: [TypesEnum.Electric, TypesEnum.Psychic],\n      weightkg: 21,\n      aliases: ['alolanraichu', 'raichua'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/raichu.mp3',\n      respelling: 'uh-LO-luhn RYE-choo',\n      ipa: '/əˈloʊlən ˈraɪtʃuː/'\n    }\n  ],\n  [\n    'raichumegax',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseStats: { hp: 60, atk: 135, def: 95, spa: 90, spd: 95, spe: 110 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      baseSpecies: 'raichu',\n      color: 'Yellow',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Mega-X',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 26,\n      otherFormes: ['raichu', 'raichualola', 'raichumegay'],\n      species: 'raichu-mega-x',\n      types: [TypesEnum.Electric],\n      weightkg: 38,\n      aliases: ['raichux'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/raichu.mp3',\n      respelling: 'RYE-chew',\n      ipa: '/ˈraɪtʃuː/'\n    }\n  ],\n  [\n    'raichumegay',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseStats: { hp: 60, atk: 135, def: 95, spa: 90, spd: 95, spe: 110 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      baseSpecies: 'raichu',\n      color: 'Yellow',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Mega-Y',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 26,\n      otherFormes: ['raichu', 'raichualola', 'raichumegax'],\n      species: 'raichu-mega-y',\n      types: [TypesEnum.Electric],\n      weightkg: 26,\n      aliases: ['raichuy'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/raichu.mp3',\n      respelling: 'RYE-chew',\n      ipa: '/ˈraɪtʃuː/'\n    }\n  ],\n  [\n    'sandshrew',\n    {\n      abilities: { first: 'sandveil', hidden: 'sandrush' },\n      baseStats: { hp: 50, atk: 75, def: 85, spa: 20, spd: 30, spe: 40 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['sandslash'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 27,\n      otherFormes: ['sandshrewalola'],\n      species: 'sandshrew',\n      types: [TypesEnum.Ground],\n      weightkg: 12,\n      aliases: ['sando'],\n      classification: 'Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sandshrew.mp3',\n      respelling: 'SAND-shroo',\n      ipa: '/ˈsændʃruː/'\n    }\n  ],\n  [\n    'sandshrewalola',\n    {\n      abilities: { first: 'snowcloak', hidden: 'slushrush' },\n      baseSpecies: 'sandshrew',\n      baseStats: { hp: 50, atk: 75, def: 90, spa: 10, spd: 35, spe: 40 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['sandslashalola'],\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 27,\n      otherFormes: ['sandshrew'],\n      species: 'sandshrew-alola',\n      types: [TypesEnum.Ice, TypesEnum.Steel],\n      weightkg: 40,\n      aliases: ['alolansandshrew', 'sandshrewa'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sandshrew.mp3',\n      respelling: 'uh-LO-luhn SAND-shroo',\n      ipa: '/əˈloʊlən ˈsændʃruː/'\n    }\n  ],\n  [\n    'sandslash',\n    {\n      abilities: { first: 'sandveil', hidden: 'sandrush' },\n      baseStats: { hp: 75, atk: 100, def: 110, spa: 45, spd: 55, spe: 65 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 22,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 28,\n      otherFormes: ['sandslashalola'],\n      prevo: 'sandshrew',\n      species: 'sandslash',\n      types: [TypesEnum.Ground],\n      weightkg: 29.5,\n      aliases: ['sandopan'],\n      classification: 'Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sandslash.mp3',\n      respelling: 'SAND-slash',\n      ipa: '/ˈsændslæʃ/'\n    }\n  ],\n  [\n    'sandslashalola',\n    {\n      abilities: { first: 'snowcloak', hidden: 'slushrush' },\n      baseSpecies: 'sandslash',\n      baseStats: { hp: 75, atk: 100, def: 120, spa: 25, spd: 65, spe: 65 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Icestone',\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 28,\n      otherFormes: ['sandslash'],\n      prevo: 'sandshrewalola',\n      species: 'sandslash-alola',\n      types: [TypesEnum.Ice, TypesEnum.Steel],\n      weightkg: 55,\n      aliases: ['alolansandslash', 'sandslasha'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sandslash.mp3',\n      respelling: 'uh-LO-luhn SAND-slash',\n      ipa: '/əˈloʊlən ˈsændslæʃ/'\n    }\n  ],\n  [\n    'nidoranf',\n    {\n      abilities: { first: 'poisonpoint', second: 'rivalry', hidden: 'hustle' },\n      baseStats: { hp: 55, atk: 47, def: 52, spa: 40, spd: 40, spe: 41 },\n      catchRate: {\n        base: 235,\n        percentageWithOrdinaryPokeballAtFullHealth: '41.3%'\n      },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['nidorina'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 29,\n      specialBulbapediaUrl: 'Nidoran♀',\n      species: 'nidoranf',\n      types: [TypesEnum.Poison],\n      weightkg: 7,\n      aliases: ['nidoranfemale', 'nidoranmesu'],\n      classification: 'Poison Pin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nidoranf.mp3'\n    }\n  ],\n  [\n    'nidorina',\n    {\n      abilities: { first: 'poisonpoint', second: 'rivalry', hidden: 'hustle' },\n      baseStats: { hp: 70, atk: 62, def: 67, spa: 55, spd: 55, spe: 56 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Moon Stone',\n      evos: ['nidoqueen'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 30,\n      prevo: 'nidoranf',\n      species: 'nidorina',\n      types: [TypesEnum.Poison],\n      weightkg: 20,\n      aliases: ['nidoriina'],\n      classification: 'Poison Pin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nidorina.mp3',\n      respelling: 'nee-door-EE-nuh',\n      ipa: '/niːdɔərˈiːnə/'\n    }\n  ],\n  [\n    'nidoqueen',\n    {\n      abilities: { first: 'poisonpoint', second: 'rivalry', hidden: 'sheerforce' },\n      baseStats: { hp: 90, atk: 92, def: 87, spa: 75, spd: 85, spe: 76 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 16,\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 31,\n      prevo: 'nidorina',\n      species: 'nidoqueen',\n      types: [TypesEnum.Poison, TypesEnum.Ground],\n      weightkg: 60,\n      aliases: ['nidokuin', 'nidoq', 'queen'],\n      classification: 'Drill Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nidoqueen.mp3',\n      respelling: 'nee-doe-QUEEN',\n      ipa: '/niːdoʊˈkwiːn/'\n    }\n  ],\n  [\n    'nidoranm',\n    {\n      abilities: { first: 'poisonpoint', second: 'rivalry', hidden: 'hustle' },\n      baseStats: { hp: 46, atk: 57, def: 40, spa: 40, spd: 40, spe: 50 },\n      catchRate: {\n        base: 235,\n        percentageWithOrdinaryPokeballAtFullHealth: '41.3%'\n      },\n      color: 'Purple',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['nidorino'],\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 32,\n      specialBulbapediaUrl: 'Nidoran♂',\n      species: 'nidoranm',\n      types: [TypesEnum.Poison],\n      weightkg: 9,\n      aliases: ['nidoranmale', 'nidoranosu'],\n      classification: 'Poison Pin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nidoranm.mp3'\n    }\n  ],\n  [\n    'nidorino',\n    {\n      abilities: { first: 'poisonpoint', second: 'rivalry', hidden: 'hustle' },\n      baseStats: { hp: 61, atk: 72, def: 57, spa: 55, spd: 55, spe: 65 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Moon Stone',\n      evos: ['nidoking'],\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 33,\n      prevo: 'nidoranm',\n      species: 'nidorino',\n      types: [TypesEnum.Poison],\n      weightkg: 19.5,\n      aliases: ['nidoriino'],\n      classification: 'Poison Pin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nidorino.mp3',\n      respelling: 'nee-door-EE-no',\n      ipa: '/niːdɔərˈiːnoʊ/'\n    }\n  ],\n  [\n    'nidoking',\n    {\n      abilities: { first: 'poisonpoint', second: 'rivalry', hidden: 'sheerforce' },\n      baseStats: { hp: 81, atk: 102, def: 77, spa: 85, spd: 75, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 16,\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 34,\n      prevo: 'nidorino',\n      species: 'nidoking',\n      types: [TypesEnum.Poison, TypesEnum.Ground],\n      weightkg: 62,\n      aliases: ['nidok', 'nidokingu'],\n      classification: 'Drill Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nidoking.mp3',\n      respelling: 'nee-doe-KING',\n      ipa: '/niːdoʊˈkɪŋ/'\n    }\n  ],\n  [\n    'clefairy',\n    {\n      abilities: {\n        first: 'cutecharm',\n        second: 'magicguard',\n        hidden: 'friendguard'\n      },\n      baseStats: { hp: 70, atk: 45, def: 48, spa: 60, spd: 65, spe: 35 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up with happiness of at least 220',\n      evos: ['clefable'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 35,\n      prevo: 'cleffa',\n      species: 'clefairy',\n      types: [TypesEnum.Fairy],\n      weightkg: 7.5,\n      aliases: ['pippi'],\n      classification: 'Fairy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/clefairy.mp3',\n      respelling: 'cluh-FAIR-ee',\n      ipa: '/kləˈfɛəriː/'\n    }\n  ],\n  [\n    'clefable',\n    {\n      abilities: { first: 'cutecharm', second: 'magicguard', hidden: 'unaware' },\n      baseStats: { hp: 95, atk: 70, def: 73, spa: 95, spd: 90, spe: 60 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Moon Stone',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 36,\n      prevo: 'clefairy',\n      species: 'clefable',\n      otherFormes: ['clefablemega'],\n      types: [TypesEnum.Fairy],\n      weightkg: 40,\n      aliases: ['clef', 'pikushii'],\n      classification: 'Fairy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/clefable.mp3',\n      respelling: 'cluh-FAY-bull',\n      ipa: '/kləˈfeɪbʊl/'\n    }\n  ],\n  [\n    'clefablemega',\n    {\n      abilities: { first: 'magicbounce' },\n      baseSpecies: 'clefable',\n      baseStats: { hp: 95, atk: 80, def: 93, spa: 135, spd: 110, spe: 70 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 36,\n      otherFormes: ['clefable'],\n      species: 'clefable-mega',\n      types: [TypesEnum.Fairy],\n      weightkg: 42.3,\n      aliases: ['megafable'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/clefable.mp3',\n      respelling: 'cluh-FAY-bull',\n      ipa: '/kləˈfeɪbʊl/'\n    }\n  ],\n  [\n    'vulpix',\n    {\n      abilities: { first: 'flashfire', hidden: 'drought' },\n      baseStats: { hp: 38, atk: 41, def: 40, spa: 50, spd: 65, spe: 65 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['ninetales'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 37,\n      otherFormes: ['vulpixalola'],\n      species: 'vulpix',\n      types: [TypesEnum.Fire],\n      weightkg: 9.9,\n      aliases: ['rokon'],\n      classification: 'Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vulpix.mp3',\n      respelling: 'VULL-picks',\n      ipa: '/ˈvʌlpɪks/'\n    }\n  ],\n  [\n    'vulpixalola',\n    {\n      abilities: { first: 'snowcloak', hidden: 'snowwarning' },\n      baseSpecies: 'vulpix',\n      baseStats: { hp: 38, atk: 41, def: 40, spa: 50, spd: 65, spe: 65 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['ninetalesalola'],\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 37,\n      otherFormes: ['vulpix'],\n      species: 'vulpix-alola',\n      types: [TypesEnum.Ice],\n      weightkg: 9.9,\n      aliases: ['alolanvulpix', 'vulpixa'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vulpix.mp3',\n      respelling: 'uh-LO-luhn VULL-picks',\n      ipa: '/əˈloʊlən ˈvʌlpɪks/'\n    }\n  ],\n  [\n    'ninetales',\n    {\n      abilities: { first: 'flashfire', hidden: 'drought' },\n      baseStats: { hp: 73, atk: 76, def: 75, spa: 81, spd: 100, spe: 100 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 1 },\n      evoLevel: 'use Fire Stone',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 38,\n      otherFormes: ['ninetalesalola'],\n      prevo: 'vulpix',\n      species: 'ninetales',\n      types: [TypesEnum.Fire],\n      weightkg: 19.9,\n      aliases: ['kyuukon'],\n      classification: 'Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ninetales.mp3',\n      respelling: 'NINE-tails',\n      ipa: '/ˈnaɪnteɪlz/'\n    }\n  ],\n  [\n    'ninetalesalola',\n    {\n      abilities: { first: 'snowcloak', hidden: 'snowwarning' },\n      baseSpecies: 'ninetales',\n      baseStats: { hp: 73, atk: 67, def: 75, spa: 81, spd: 100, spe: 109 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 1 },\n      evoLevel: 'use Ice Stone',\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 38,\n      otherFormes: ['ninetales'],\n      prevo: 'vulpixalola',\n      species: 'ninetales-alola',\n      types: [TypesEnum.Ice, TypesEnum.Fairy],\n      weightkg: 19.9,\n      aliases: ['alolanninetales', 'ninetalesa'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ninetales.mp3',\n      respelling: 'uh-LO-luhn NINE-tails',\n      ipa: '/əˈloʊlən ˈnaɪnteɪlz/'\n    }\n  ],\n  [\n    'jigglypuff',\n    {\n      abilities: {\n        first: 'cutecharm',\n        second: 'competitive',\n        hidden: 'friendguard'\n      },\n      baseStats: { hp: 115, atk: 45, def: 20, spa: 45, spd: 25, spe: 20 },\n      catchRate: {\n        base: 170,\n        percentageWithOrdinaryPokeballAtFullHealth: '32.4%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up with happiness of at least 220',\n      evos: ['wigglytuff'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 39,\n      prevo: 'igglybuff',\n      species: 'jigglypuff',\n      types: [TypesEnum.Normal, TypesEnum.Fairy],\n      weightkg: 5.5,\n      aliases: ['purin'],\n      classification: 'Balloon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/jigglypuff.mp3',\n      respelling: 'jig-lee-PUFF',\n      ipa: '/dʒɪɡliːˈpʌf/'\n    }\n  ],\n  [\n    'wigglytuff',\n    {\n      abilities: { first: 'cutecharm', second: 'competitive', hidden: 'frisk' },\n      baseStats: { hp: 140, atk: 70, def: 45, spa: 85, spd: 50, spe: 45 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Moon Stone',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 40,\n      prevo: 'jigglypuff',\n      species: 'wigglytuff',\n      types: [TypesEnum.Normal, TypesEnum.Fairy],\n      weightkg: 12,\n      aliases: ['pukurin'],\n      classification: 'Balloon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wigglytuff.mp3',\n      respelling: 'wig-lee-TUFF',\n      ipa: '/wɪɡliːˈtʌf/'\n    }\n  ],\n  [\n    'zubat',\n    {\n      abilities: { first: 'innerfocus', hidden: 'infiltrator' },\n      baseStats: { hp: 40, atk: 45, def: 35, spa: 30, spd: 40, spe: 55 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['golbat'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 41,\n      species: 'zubat',\n      types: [TypesEnum.Poison, TypesEnum.Flying],\n      weightkg: 7.5,\n      aliases: ['zubatto'],\n      classification: 'Bat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zubat.mp3',\n      respelling: 'ZOO-bat',\n      ipa: '/ˈzuːbæt/'\n    }\n  ],\n  [\n    'golbat',\n    {\n      abilities: { first: 'innerfocus', hidden: 'infiltrator' },\n      baseStats: { hp: 75, atk: 80, def: 70, spa: 65, spd: 75, spe: 90 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Purple',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 22,\n      evos: ['crobat'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 42,\n      prevo: 'zubat',\n      species: 'golbat',\n      types: [TypesEnum.Poison, TypesEnum.Flying],\n      weightkg: 55,\n      aliases: ['gorubatto'],\n      classification: 'Bat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/golbat.mp3',\n      respelling: 'GOAL-bat',\n      ipa: '/ˈɡoʊlbæt/'\n    }\n  ],\n  [\n    'oddish',\n    {\n      abilities: { first: 'chlorophyll', hidden: 'runaway' },\n      baseStats: { hp: 45, atk: 50, def: 55, spa: 75, spd: 65, spe: 30 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['gloom'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 43,\n      species: 'oddish',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 5.4,\n      aliases: ['nazonokusa'],\n      classification: 'Weed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/oddish.mp3',\n      respelling: 'ODD-ish',\n      ipa: '/ˈɒdɪʃ/'\n    }\n  ],\n  [\n    'gloom',\n    {\n      abilities: { first: 'chlorophyll', hidden: 'stench' },\n      baseStats: { hp: 60, atk: 65, def: 70, spa: 85, spd: 75, spe: 40 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 21,\n      evos: ['vileplume', 'bellossom'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 44,\n      prevo: 'oddish',\n      species: 'gloom',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 8.6,\n      aliases: ['kusaihana'],\n      classification: 'Weed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gloom.mp3',\n      respelling: 'GLOOM',\n      ipa: '/ˈɡluːm/'\n    }\n  ],\n  [\n    'vileplume',\n    {\n      abilities: { first: 'chlorophyll', hidden: 'effectspore' },\n      baseStats: { hp: 75, atk: 80, def: 85, spa: 110, spd: 90, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 'use Leaf Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 45,\n      prevo: 'gloom',\n      species: 'vileplume',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 18.6,\n      aliases: ['rafureshia'],\n      classification: 'Flower Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vileplume.mp3',\n      respelling: 'VILE-ploom',\n      ipa: '/ˈvaɪlpluːm/'\n    }\n  ],\n  [\n    'paras',\n    {\n      abilities: { first: 'effectspore', second: 'dryskin', hidden: 'damp' },\n      baseStats: { hp: 35, atk: 70, def: 55, spa: 45, spd: 55, spe: 25 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Red',\n      eggGroups: ['Bug', 'Grass'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['parasect'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 46,\n      species: 'paras',\n      types: [TypesEnum.Bug, TypesEnum.Grass],\n      weightkg: 5.4,\n      aliases: ['parasu'],\n      classification: 'Mushroom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/paras.mp3',\n      respelling: 'PAR-iss',\n      ipa: '/ˈpɑːrɪs/'\n    }\n  ],\n  [\n    'parasect',\n    {\n      abilities: { first: 'effectspore', second: 'dryskin', hidden: 'damp' },\n      baseStats: { hp: 60, atk: 95, def: 80, spa: 60, spd: 80, spe: 30 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Red',\n      eggGroups: ['Bug', 'Grass'],\n      evYields: { hp: 0, atk: 2, def: 1, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 24,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 47,\n      prevo: 'paras',\n      species: 'parasect',\n      types: [TypesEnum.Bug, TypesEnum.Grass],\n      weightkg: 29.5,\n      aliases: ['parasekuto'],\n      classification: 'Mushroom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/parasect.mp3',\n      respelling: 'PAR-i-sect',\n      ipa: '/ˈpɑːrɪsɛkt/'\n    }\n  ],\n  [\n    'venonat',\n    {\n      abilities: {\n        first: 'compoundeyes',\n        second: 'tintedlens',\n        hidden: 'runaway'\n      },\n      baseStats: { hp: 60, atk: 55, def: 50, spa: 40, spd: 55, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Purple',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['venomoth'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 48,\n      species: 'venonat',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 30,\n      aliases: ['konpan'],\n      classification: 'Insect Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/venonat.mp3',\n      respelling: 'VENN-oh-nat',\n      ipa: '/ˈvɛnoʊnæt/'\n    }\n  ],\n  [\n    'venomoth',\n    {\n      abilities: {\n        first: 'shielddust',\n        second: 'tintedlens',\n        hidden: 'wonderskin'\n      },\n      baseStats: { hp: 70, atk: 65, def: 60, spa: 90, spd: 75, spe: 90 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      evoLevel: 31,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 49,\n      prevo: 'venonat',\n      species: 'venomoth',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 12.5,\n      aliases: ['morufon'],\n      classification: 'Poison Moth Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/venomoth.mp3',\n      respelling: 'VENN-oh-moth',\n      ipa: '/ˈvɛnoʊmɒθ/'\n    }\n  ],\n  [\n    'diglett',\n    {\n      abilities: { first: 'sandveil', second: 'arenatrap', hidden: 'sandforce' },\n      baseStats: { hp: 10, atk: 55, def: 25, spa: 35, spd: 45, spe: 95 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['dugtrio'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 50,\n      otherFormes: ['diglettalola'],\n      species: 'diglett',\n      types: [TypesEnum.Ground],\n      weightkg: 0.8,\n      aliases: ['diguda'],\n      classification: 'Mole Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/diglett.mp3',\n      respelling: 'DIG-lit',\n      ipa: '/ˈdɪɡlɪt/'\n    }\n  ],\n  [\n    'diglettalola',\n    {\n      abilities: {\n        first: 'sandveil',\n        second: 'tanglinghair',\n        hidden: 'sandforce'\n      },\n      baseSpecies: 'diglett',\n      baseStats: { hp: 10, atk: 55, def: 30, spa: 35, spd: 45, spe: 90 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['dugtrioalola'],\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 50,\n      otherFormes: ['diglett'],\n      species: 'diglett-alola',\n      types: [TypesEnum.Ground, TypesEnum.Steel],\n      weightkg: 1,\n      aliases: ['alolandiglett', 'digletta'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/diglett.mp3',\n      respelling: 'uh-LO-luhn DIG-let',\n      ipa: '/əˈloʊlən ˈdɪɡlɛt/'\n    }\n  ],\n  [\n    'dugtrio',\n    {\n      abilities: { first: 'sandveil', second: 'arenatrap', hidden: 'sandforce' },\n      baseStats: { hp: 35, atk: 100, def: 50, spa: 50, spd: 70, spe: 120 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 26,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 51,\n      otherFormes: ['dugtrioalola'],\n      prevo: 'diglett',\n      species: 'dugtrio',\n      types: [TypesEnum.Ground],\n      weightkg: 33.3,\n      aliases: ['dagutorio', 'dug', 'duggy'],\n      classification: 'Mole Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dugtrio.mp3',\n      respelling: 'dug-TREE-oh',\n      ipa: '/dʌɡˈtriː.oʊ/'\n    }\n  ],\n  [\n    'dugtrioalola',\n    {\n      abilities: {\n        first: 'sandveil',\n        second: 'tanglinghair',\n        hidden: 'sandforce'\n      },\n      baseSpecies: 'dugtrio',\n      baseStats: { hp: 35, atk: 100, def: 60, spa: 50, spd: 70, spe: 110 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 26,\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 51,\n      otherFormes: ['dugtrio'],\n      prevo: 'diglettalola',\n      species: 'dugtrio-alola',\n      types: [TypesEnum.Ground, TypesEnum.Steel],\n      weightkg: 66.6,\n      aliases: ['alolandugtrio', 'dugtrioa'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dugtrio.mp3',\n      respelling: 'uh-LO-luhn DUG-TREE-oh',\n      ipa: '/əˈloʊlən ˌdʌɡˈtriː.oʊ/'\n    }\n  ],\n  [\n    'meowth',\n    {\n      abilities: { first: 'pickup', second: 'technician', hidden: 'unnerve' },\n      baseStats: { hp: 40, atk: 45, def: 35, spa: 40, spd: 40, spe: 90 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['persian'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 52,\n      otherFormes: ['meowthalola', 'meowthgmax', 'meowthgalar'],\n      species: 'meowth',\n      types: [TypesEnum.Normal],\n      weightkg: 4.2,\n      aliases: ['nyaasu'],\n      classification: 'Scratch Cat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meowth.mp3',\n      respelling: 'me-OUTH',\n      ipa: '/miːˈaʊθ/'\n    }\n  ],\n  [\n    'meowthalola',\n    {\n      abilities: { first: 'pickup', second: 'technician', hidden: 'rattled' },\n      baseSpecies: 'meowth',\n      baseStats: { hp: 40, atk: 35, def: 35, spa: 50, spd: 40, spe: 90 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['persianalola'],\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 52,\n      otherFormes: ['meowth', 'meowthgmax', 'meowthgalar'],\n      species: 'meowth-alola',\n      types: [TypesEnum.Dark],\n      weightkg: 4.2,\n      aliases: ['alolanmeowth', 'meowtha'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meowth.mp3'\n    }\n  ],\n  [\n    'meowthgalar',\n    {\n      abilities: { first: 'pickup', second: 'technician', hidden: 'rattled' },\n      baseSpecies: 'meowth',\n      baseStats: { hp: 50, atk: 65, def: 55, spa: 40, spd: 40, spe: 40 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['perrserker'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 52,\n      otherFormes: ['meowth', 'meowthalola', 'meowthgmax'],\n      species: 'meowth-galar',\n      types: [TypesEnum.Steel],\n      weightkg: 4.2,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meowth.mp3',\n      respelling: 'me-OUTH',\n      ipa: '/miːˈaʊθ/'\n    }\n  ],\n  [\n    'meowthgmax',\n    {\n      abilities: { first: 'pickup', second: 'technician', hidden: 'unnerve' },\n      baseSpecies: 'meowth',\n      baseStats: { hp: 40, atk: 45, def: 35, spa: 40, spd: 40, spe: 90 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 33,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 52,\n      otherFormes: ['meowth', 'meowthalola', 'meowthgalar'],\n      species: 'meowth-gmax',\n      types: [TypesEnum.Normal],\n      weightkg: 12.6,\n      aliases: ['gigantamax meowth'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meowth.mp3',\n      respelling: 'me-OUTH',\n      ipa: '/miːˈaʊθ/'\n    }\n  ],\n  [\n    'persian',\n    {\n      abilities: { first: 'limber', second: 'technician', hidden: 'unnerve' },\n      baseStats: { hp: 65, atk: 70, def: 60, spa: 65, spd: 65, spe: 115 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 28,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 53,\n      otherFormes: ['persianalola'],\n      prevo: 'meowth',\n      species: 'persian',\n      types: [TypesEnum.Normal],\n      weightkg: 32,\n      aliases: ['perushian'],\n      classification: 'Classy Cat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/persian.mp3',\n      respelling: 'PURR-shin',\n      ipa: '/ˈpɜːrʃɪn/'\n    }\n  ],\n  [\n    'persianalola',\n    {\n      abilities: { first: 'furcoat', second: 'technician', hidden: 'rattled' },\n      baseSpecies: 'persian',\n      baseStats: { hp: 65, atk: 60, def: 60, spa: 75, spd: 65, spe: 115 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 2,\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 53,\n      otherFormes: ['persian'],\n      prevo: 'meowthalola',\n      species: 'persian-alola',\n      types: [TypesEnum.Dark],\n      weightkg: 33,\n      aliases: ['alolanpersian', 'persiana'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/persian.mp3',\n      respelling: 'uh-LO-luhn PURR-zhun',\n      ipa: '/əˈloʊlən ˈpɜːrʒən/'\n    }\n  ],\n  [\n    'psyduck',\n    {\n      abilities: { first: 'damp', second: 'cloudnine', hidden: 'swiftswim' },\n      baseStats: { hp: 50, atk: 52, def: 48, spa: 65, spd: 50, spe: 55 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['golduck'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 54,\n      species: 'psyduck',\n      types: [TypesEnum.Water],\n      weightkg: 19.6,\n      aliases: ['kodakku'],\n      classification: 'Duck Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/psyduck.mp3',\n      respelling: 'SYE-duck',\n      ipa: '/ˈsaɪdʌk/'\n    }\n  ],\n  [\n    'golduck',\n    {\n      abilities: { first: 'damp', second: 'cloudnine', hidden: 'swiftswim' },\n      baseStats: { hp: 80, atk: 82, def: 78, spa: 95, spd: 80, spe: 85 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 33,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 55,\n      prevo: 'psyduck',\n      species: 'golduck',\n      types: [TypesEnum.Water],\n      weightkg: 76.6,\n      aliases: ['gorudakku'],\n      classification: 'Duck Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/golduck.mp3',\n      respelling: 'GOAL-duck',\n      ipa: '/ˈɡoʊldʌk/'\n    }\n  ],\n  [\n    'mankey',\n    {\n      abilities: { first: 'vitalspirit', second: 'angerpoint', hidden: 'defiant' },\n      baseStats: { hp: 40, atk: 80, def: 35, spa: 35, spd: 45, spe: 70 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['primeape'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 56,\n      species: 'mankey',\n      types: [TypesEnum.Fighting],\n      weightkg: 28,\n      aliases: ['mankii'],\n      classification: 'Pig Monkey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mankey.mp3',\n      respelling: 'MANK-ee',\n      ipa: '/ˈmæŋkiː/'\n    }\n  ],\n  [\n    'primeape',\n    {\n      abilities: { first: 'vitalspirit', second: 'angerpoint', hidden: 'defiant' },\n      baseStats: { hp: 65, atk: 105, def: 60, spa: 60, spd: 70, spe: 95 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['annihilape'],\n      evoLevel: 28,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 57,\n      prevo: 'mankey',\n      species: 'primeape',\n      types: [TypesEnum.Fighting],\n      weightkg: 32,\n      aliases: ['okorizaru'],\n      classification: 'Pig Monkey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/primeape.mp3',\n      respelling: 'PRIME-ape',\n      ipa: '/ˈpraɪmeɪp/'\n    }\n  ],\n  [\n    'growlithe',\n    {\n      abilities: { first: 'intimidate', second: 'flashfire', hidden: 'justified' },\n      baseStats: { hp: 55, atk: 70, def: 45, spa: 70, spd: 50, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['arcanine'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 58,\n      otherFormes: ['growlithehisui'],\n      species: 'growlithe',\n      types: [TypesEnum.Fire],\n      weightkg: 19,\n      aliases: ['gaadi'],\n      classification: 'Puppy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/growlithe.mp3',\n      respelling: 'GROWL-ith',\n      ipa: '/ˈɡraʊlɪθ/'\n    }\n  ],\n  [\n    'growlithehisui',\n    {\n      abilities: { first: 'intimidate', second: 'flashfire', hidden: 'rockhead' },\n      baseSpecies: 'growlithe',\n      baseStats: { hp: 60, atk: 75, def: 45, spa: 65, spd: 50, spe: 55 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['arcaninehisui'],\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 58,\n      otherFormes: ['growlithe'],\n      species: 'growlithe-hisui',\n      types: [TypesEnum.Fire, TypesEnum.Rock],\n      weightkg: 22.7,\n      aliases: ['hisuiangrowlithe', 'growlitheh'],\n      classification: 'Scout Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/growlithe.mp3',\n      respelling: 'GROWL-ith',\n      ipa: '/ˈɡraʊlɪθ/'\n    }\n  ],\n  [\n    'arcanine',\n    {\n      abilities: { first: 'intimidate', second: 'flashfire', hidden: 'justified' },\n      baseStats: { hp: 90, atk: 110, def: 80, spa: 100, spd: 80, spe: 95 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Fire Stone',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 59,\n      otherFormes: ['arcaninehisui'],\n      prevo: 'growlithe',\n      species: 'arcanine',\n      types: [TypesEnum.Fire],\n      weightkg: 155,\n      aliases: ['uindi'],\n      classification: 'Legendary Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arcanine.mp3',\n      respelling: 'ar-kuh-NINE',\n      ipa: '/ɑːrkəˈnaɪn/'\n    }\n  ],\n  [\n    'arcaninehisui',\n    {\n      abilities: { first: 'intimidate', second: 'flashfire', hidden: 'rockhead' },\n      baseSpecies: 'arcanine',\n      baseStats: { hp: 95, atk: 115, def: 80, spa: 95, spd: 80, spe: 90 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Fire Stone',\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 59,\n      otherFormes: ['arcanine'],\n      prevo: 'growlithehisui',\n      species: 'arcanine-hisui',\n      types: [TypesEnum.Fire, TypesEnum.Rock],\n      weightkg: 168,\n      aliases: ['hisuianarcanine', 'arcanineh'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arcanine.mp3',\n      respelling: 'ar-kuh-NINE',\n      ipa: '/ɑːrkəˈnaɪn/'\n    }\n  ],\n  [\n    'poliwag',\n    {\n      abilities: { first: 'waterabsorb', second: 'damp', hidden: 'swiftswim' },\n      baseStats: { hp: 40, atk: 50, def: 40, spa: 40, spd: 40, spe: 90 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['poliwhirl'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 60,\n      species: 'poliwag',\n      types: [TypesEnum.Water],\n      weightkg: 12.4,\n      aliases: ['nyoromo'],\n      classification: 'Tadpole Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/poliwag.mp3',\n      respelling: 'POL-ee-wag',\n      ipa: '/ˈpɒliːwæɡ/'\n    }\n  ],\n  [\n    'poliwhirl',\n    {\n      abilities: { first: 'waterabsorb', second: 'damp', hidden: 'swiftswim' },\n      baseStats: { hp: 65, atk: 65, def: 65, spa: 50, spd: 50, spe: 90 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 25,\n      evos: ['poliwrath', 'politoed'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 61,\n      prevo: 'poliwag',\n      species: 'poliwhirl',\n      types: [TypesEnum.Water],\n      weightkg: 20,\n      aliases: ['nyorozo'],\n      classification: 'Tadpole Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/poliwhirl.mp3',\n      respelling: 'POL-ee-wurl',\n      ipa: '/ˈpɒliːwɜːrl/'\n    }\n  ],\n  [\n    'poliwrath',\n    {\n      abilities: { first: 'waterabsorb', second: 'damp', hidden: 'swiftswim' },\n      baseStats: { hp: 90, atk: 95, def: 95, spa: 70, spd: 90, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Water Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 62,\n      prevo: 'poliwhirl',\n      species: 'poliwrath',\n      types: [TypesEnum.Water, TypesEnum.Fighting],\n      weightkg: 54,\n      aliases: ['nyorobon'],\n      classification: 'Tadpole Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/poliwrath.mp3',\n      respelling: 'POL-ee-rath',\n      ipa: '/ˈpɒliːræθ/'\n    }\n  ],\n  [\n    'abra',\n    {\n      abilities: {\n        first: 'synchronize',\n        second: 'innerfocus',\n        hidden: 'magicguard'\n      },\n      baseStats: { hp: 25, atk: 20, def: 15, spa: 105, spd: 55, spe: 90 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['kadabra'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 63,\n      species: 'abra',\n      types: [TypesEnum.Psychic],\n      weightkg: 19.5,\n      aliases: ['keeshy'],\n      classification: 'Psi Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/abra.mp3',\n      respelling: 'AB-ruh',\n      ipa: '/ˈæbrə/'\n    }\n  ],\n  [\n    'kadabra',\n    {\n      abilities: {\n        first: 'synchronize',\n        second: 'innerfocus',\n        hidden: 'magicguard'\n      },\n      baseStats: { hp: 40, atk: 35, def: 30, spa: 120, spd: 70, spe: 105 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 16,\n      evos: ['alakazam'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 64,\n      prevo: 'abra',\n      species: 'kadabra',\n      types: [TypesEnum.Psychic],\n      weightkg: 56.5,\n      aliases: ['yungeraa'],\n      classification: 'Psi Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kadabra.mp3',\n      respelling: 'kah-DA-bruh',\n      ipa: '/kɑːˈdæbrə/'\n    }\n  ],\n  [\n    'alakazam',\n    {\n      abilities: {\n        first: 'synchronize',\n        second: 'innerfocus',\n        hidden: 'magicguard'\n      },\n      baseStats: { hp: 55, atk: 50, def: 45, spa: 135, spd: 95, spe: 120 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 65,\n      otherFormes: ['alakazammega'],\n      prevo: 'kadabra',\n      species: 'alakazam',\n      types: [TypesEnum.Psychic],\n      weightkg: 48,\n      aliases: ['fuudin', 'zam'],\n      classification: 'Psi Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/alakazam.mp3',\n      respelling: 'al-uh-kuh-ZAM',\n      ipa: '/æləkəˈzæm/'\n    }\n  ],\n  [\n    'alakazammega',\n    {\n      abilities: { first: 'trace' },\n      baseSpecies: 'alakazam',\n      baseStats: { hp: 55, atk: 50, def: 65, spa: 175, spd: 105, spe: 150 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 65,\n      otherFormes: ['alakazam'],\n      species: 'alakazam-mega',\n      types: [TypesEnum.Psychic],\n      weightkg: 48,\n      aliases: ['megazam'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/alakazam-mega.mp3',\n      respelling: 'al-uh-kuh-ZAM',\n      ipa: '/æləkəˈzæm/'\n    }\n  ],\n  [\n    'machop',\n    {\n      abilities: { first: 'guts', second: 'noguard', hidden: 'steadfast' },\n      baseStats: { hp: 70, atk: 80, def: 50, spa: 35, spd: 35, spe: 35 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Gray',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['machoke'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 66,\n      species: 'machop',\n      types: [TypesEnum.Fighting],\n      weightkg: 19.5,\n      aliases: ['wanrikii'],\n      classification: 'Superpower Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/machop.mp3',\n      respelling: 'MAH-chop',\n      ipa: '/ˈmɑːtʃɒp/'\n    }\n  ],\n  [\n    'machoke',\n    {\n      abilities: { first: 'guts', second: 'noguard', hidden: 'steadfast' },\n      baseStats: { hp: 80, atk: 100, def: 70, spa: 50, spd: 60, spe: 45 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Gray',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 28,\n      evos: ['machamp'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 67,\n      prevo: 'machop',\n      species: 'machoke',\n      types: [TypesEnum.Fighting],\n      weightkg: 70.5,\n      aliases: ['goorikii'],\n      classification: 'Superpower Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/machoke.mp3',\n      respelling: 'MAH-choke',\n      ipa: '/ˈmɑːtʃoʊk/'\n    }\n  ],\n  [\n    'machamp',\n    {\n      abilities: { first: 'guts', second: 'noguard', hidden: 'steadfast' },\n      baseStats: { hp: 90, atk: 130, def: 80, spa: 65, spd: 85, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 68,\n      otherFormes: ['machampgmax'],\n      prevo: 'machoke',\n      species: 'machamp',\n      types: [TypesEnum.Fighting],\n      weightkg: 130,\n      aliases: ['kairikii'],\n      classification: 'Superpower Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/machamp.mp3',\n      respelling: 'MAH-champ',\n      ipa: '/ˈmɑːtʃæmp/'\n    }\n  ],\n  [\n    'machampgmax',\n    {\n      abilities: { first: 'guts', second: 'noguard', hidden: 'steadfast' },\n      baseSpecies: 'machamp',\n      baseStats: { hp: 90, atk: 130, def: 80, spa: 65, spd: 85, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 25,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 68,\n      otherFormes: ['machamp'],\n      species: 'machamp-gmax',\n      types: [TypesEnum.Fighting],\n      weightkg: 390,\n      aliases: ['gigantamax machamp'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/machamp.mp3',\n      respelling: 'MAH-champ',\n      ipa: '/ˈmɑːtʃæmp/'\n    }\n  ],\n  [\n    'bellsprout',\n    {\n      abilities: { first: 'chlorophyll', hidden: 'gluttony' },\n      baseStats: { hp: 50, atk: 75, def: 35, spa: 70, spd: 30, spe: 40 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['weepinbell'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 69,\n      species: 'bellsprout',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 4,\n      aliases: ['madatsubomi'],\n      classification: 'Flower Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bellsprout.mp3',\n      respelling: 'BELL-sprout',\n      ipa: '/ˈbɛlspraʊt/'\n    }\n  ],\n  [\n    'weepinbell',\n    {\n      abilities: { first: 'chlorophyll', hidden: 'gluttony' },\n      baseStats: { hp: 65, atk: 90, def: 50, spa: 85, spd: 45, spe: 55 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 21,\n      evos: ['victreebel'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 70,\n      prevo: 'bellsprout',\n      species: 'weepinbell',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 6.4,\n      aliases: ['utsudon'],\n      classification: 'Flycatcher Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/weepinbell.mp3',\n      respelling: 'WEEP-in-bell',\n      ipa: '/ˈwiːpɪnbɛl/'\n    }\n  ],\n  [\n    'victreebel',\n    {\n      abilities: { first: 'chlorophyll', hidden: 'gluttony' },\n      baseStats: { hp: 80, atk: 105, def: 65, spa: 100, spd: 70, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Leaf Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 71,\n      prevo: 'weepinbell',\n      species: 'victreebel',\n      otherFormes: ['victreebelmega'],\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 15.5,\n      aliases: ['utsubotto'],\n      classification: 'Flycatcher Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/victreebel.mp3',\n      respelling: 'VICK-tree-bell',\n      ipa: '/ˈvɪktriːbɛl/'\n    }\n  ],\n  [\n    'victreebelmega',\n    {\n      abilities: { first: 'innardsout' },\n      baseSpecies: 'victreebel',\n      baseStats: { hp: 80, atk: 125, def: 85, spa: 135, spd: 95, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 4.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 71,\n      otherFormes: ['victreebel'],\n      species: 'victreebel-mega',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 125.5,\n      aliases: ['megabell', 'megatree'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/victreebel.mp3',\n      respelling: 'VICK-tree-bell',\n      ipa: '/ˈvɪktriːbɛl/'\n    }\n  ],\n  [\n    'tentacool',\n    {\n      abilities: { first: 'clearbody', second: 'liquidooze', hidden: 'raindish' },\n      baseStats: { hp: 40, atk: 40, def: 35, spa: 50, spd: 100, spe: 70 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['tentacruel'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 72,\n      species: 'tentacool',\n      types: [TypesEnum.Water, TypesEnum.Poison],\n      weightkg: 45.5,\n      aliases: ['menokurage'],\n      classification: 'Jellyfish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tentacool.mp3',\n      respelling: 'TENT-uh-cool',\n      ipa: '/ˈtɛntəkuːl/'\n    }\n  ],\n  [\n    'tentacruel',\n    {\n      abilities: { first: 'clearbody', second: 'liquidooze', hidden: 'raindish' },\n      baseStats: { hp: 80, atk: 70, def: 65, spa: 80, spd: 120, spe: 100 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 73,\n      prevo: 'tentacool',\n      species: 'tentacruel',\n      types: [TypesEnum.Water, TypesEnum.Poison],\n      weightkg: 55,\n      aliases: ['cruel', 'dokukurage'],\n      classification: 'Jellyfish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tentacruel.mp3',\n      respelling: 'TENT-uh-crool',\n      ipa: '/ˈtɛntəkruːl/'\n    }\n  ],\n  [\n    'geodude',\n    {\n      abilities: { first: 'rockhead', second: 'sturdy', hidden: 'sandveil' },\n      baseStats: { hp: 40, atk: 80, def: 100, spa: 30, spd: 30, spe: 20 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['graveler'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 74,\n      otherFormes: ['geodudealola'],\n      species: 'geodude',\n      types: [TypesEnum.Rock, TypesEnum.Ground],\n      weightkg: 20,\n      aliases: ['ishitsubute'],\n      classification: 'Rock Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/geodude.mp3',\n      respelling: 'GEE-oh-dood',\n      ipa: '/ˈdʒiːoʊduːd/'\n    }\n  ],\n  [\n    'geodudealola',\n    {\n      abilities: { first: 'magnetpull', second: 'sturdy', hidden: 'galvanize' },\n      baseSpecies: 'geodude',\n      baseStats: { hp: 40, atk: 80, def: 100, spa: 30, spd: 30, spe: 20 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['graveleralola'],\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 74,\n      otherFormes: ['geodude'],\n      species: 'geodude-alola',\n      types: [TypesEnum.Rock, TypesEnum.Electric],\n      weightkg: 20.3,\n      aliases: ['alolangeodude', 'geodudea'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/geodude.mp3',\n      respelling: 'uh-LO-luhn JEE-oh-dude',\n      ipa: '/əˈloʊlən ˈdʒiːoʊduːd/'\n    }\n  ],\n  [\n    'graveler',\n    {\n      abilities: { first: 'rockhead', second: 'sturdy', hidden: 'sandveil' },\n      baseStats: { hp: 55, atk: 95, def: 115, spa: 45, spd: 45, spe: 35 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 25,\n      evos: ['golem'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 75,\n      otherFormes: ['graveleralola'],\n      prevo: 'geodude',\n      species: 'graveler',\n      types: [TypesEnum.Rock, TypesEnum.Ground],\n      weightkg: 105,\n      aliases: ['goroon'],\n      classification: 'Rock Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/graveler.mp3',\n      respelling: 'GRAV-el-er',\n      ipa: '/ˈɡrævɛlər/'\n    }\n  ],\n  [\n    'graveleralola',\n    {\n      abilities: { first: 'magnetpull', second: 'sturdy', hidden: 'galvanize' },\n      baseSpecies: 'graveler',\n      baseStats: { hp: 55, atk: 95, def: 115, spa: 45, spd: 45, spe: 35 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 25,\n      evos: ['golemalola'],\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 75,\n      otherFormes: ['graveler'],\n      prevo: 'geodudealola',\n      species: 'graveler-alola',\n      types: [TypesEnum.Rock, TypesEnum.Electric],\n      weightkg: 110,\n      aliases: ['alolangraveler', 'gravelera'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/graveler.mp3',\n      respelling: 'uh-LO-luhn GRAV-el-er',\n      ipa: '/əˈloʊlən ˈɡrævɛlər/'\n    }\n  ],\n  [\n    'golem',\n    {\n      abilities: { first: 'rockhead', second: 'sturdy', hidden: 'sandveil' },\n      baseStats: { hp: 80, atk: 120, def: 130, spa: 55, spd: 65, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 76,\n      otherFormes: ['golemalola'],\n      prevo: 'graveler',\n      species: 'golem',\n      types: [TypesEnum.Rock, TypesEnum.Ground],\n      weightkg: 300,\n      aliases: ['goroonya'],\n      classification: 'Megaton Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/golem.mp3',\n      respelling: 'GOAL-um',\n      ipa: '/ˈɡoʊləm/'\n    }\n  ],\n  [\n    'golemalola',\n    {\n      abilities: { first: 'magnetpull', second: 'sturdy', hidden: 'galvanize' },\n      baseSpecies: 'golem',\n      baseStats: { hp: 80, atk: 120, def: 130, spa: 55, spd: 65, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 76,\n      otherFormes: ['golem'],\n      prevo: 'graveleralola',\n      species: 'golem-alola',\n      types: [TypesEnum.Rock, TypesEnum.Electric],\n      weightkg: 316,\n      aliases: ['alolangolem', 'golema'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/golem.mp3',\n      respelling: 'uh-LO-luhn GO-lum',\n      ipa: '/əˈloʊlən ˈɡoʊləm/'\n    }\n  ],\n  [\n    'ponyta',\n    {\n      abilities: { first: 'runaway', second: 'flashfire', hidden: 'flamebody' },\n      baseStats: { hp: 50, atk: 85, def: 55, spa: 65, spd: 65, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['rapidash'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 77,\n      otherFormes: ['ponytagalar'],\n      species: 'ponyta',\n      types: [TypesEnum.Fire],\n      weightkg: 30,\n      aliases: ['poniita'],\n      classification: 'Fire Horse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ponyta.mp3',\n      respelling: 'po-NEE-tuh',\n      ipa: '/poʊˈniːtə/'\n    }\n  ],\n  [\n    'ponytagalar',\n    {\n      abilities: {\n        first: 'runaway',\n        second: 'pastelveil',\n        hidden: 'anticipation'\n      },\n      baseSpecies: 'ponyta',\n      baseStats: { hp: 50, atk: 85, def: 55, spa: 65, spd: 65, spe: 90 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['rapidashgalar'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 77,\n      otherFormes: ['ponyta'],\n      species: 'ponyta-galar',\n      types: [TypesEnum.Psychic],\n      weightkg: 24,\n      classification: 'Unique Horn Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ponyta.mp3',\n      respelling: 'po-NEE-tuh',\n      ipa: '/poʊˈniːtə/'\n    }\n  ],\n  [\n    'rapidash',\n    {\n      abilities: { first: 'runaway', second: 'flashfire', hidden: 'flamebody' },\n      baseStats: { hp: 65, atk: 100, def: 70, spa: 80, spd: 80, spe: 105 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 78,\n      otherFormes: ['rapidashgalar'],\n      prevo: 'ponyta',\n      species: 'rapidash',\n      types: [TypesEnum.Fire],\n      weightkg: 95,\n      aliases: ['gyaroppu'],\n      classification: 'Fire Horse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rapidash.mp3',\n      respelling: 'RAP-i-dash',\n      ipa: '/ˈræpɪdæʃ/'\n    }\n  ],\n  [\n    'rapidashgalar',\n    {\n      abilities: {\n        first: 'runaway',\n        second: 'pastelveil',\n        hidden: 'anticipation'\n      },\n      baseSpecies: 'rapidash',\n      baseStats: { hp: 65, atk: 100, def: 70, spa: 80, spd: 80, spe: 105 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 40,\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 78,\n      otherFormes: ['rapidash'],\n      prevo: 'ponytagalar',\n      species: 'rapidash-galar',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 95,\n      classification: 'Unique Horn Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rapidash.mp3',\n      respelling: 'RAP-i-dash',\n      ipa: '/ˈræpɪdæʃ/'\n    }\n  ],\n  [\n    'slowpoke',\n    {\n      abilities: { first: 'oblivious', second: 'owntempo', hidden: 'regenerator' },\n      baseStats: { hp: 90, atk: 65, def: 65, spa: 40, spd: 40, spe: 15 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['slowbro', 'slowking'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 79,\n      species: 'slowpoke',\n      types: [TypesEnum.Water, TypesEnum.Psychic],\n      weightkg: 36,\n      aliases: ['yadon'],\n      classification: 'Dopey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slowpoke.mp3',\n      respelling: 'SLOW-poke',\n      ipa: '/ˈsloʊpoʊk/'\n    }\n  ],\n  [\n    'slowpokegalar',\n    {\n      abilities: { first: 'gluttony', second: 'owntempo', hidden: 'regenerator' },\n      baseSpecies: 'slowpoke',\n      baseStats: { hp: 90, atk: 65, def: 65, spa: 40, spd: 40, spe: 15 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['slowbrogalar', 'slowkinggalar'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 79,\n      species: 'slowpoke-galar',\n      types: [TypesEnum.Psychic],\n      weightkg: 36,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slowpoke-galar.mp3',\n      respelling: 'SLOW-poke',\n      ipa: '/ˈsloʊpoʊk/'\n    }\n  ],\n  [\n    'slowbro',\n    {\n      abilities: { first: 'oblivious', second: 'owntempo', hidden: 'regenerator' },\n      baseStats: { hp: 95, atk: 75, def: 110, spa: 100, spd: 80, spe: 30 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 37,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 80,\n      otherFormes: ['slowbromega', 'slowbrogalar'],\n      prevo: 'slowpoke',\n      species: 'slowbro',\n      types: [TypesEnum.Water, TypesEnum.Psychic],\n      weightkg: 78.5,\n      aliases: ['yadoran'],\n      classification: 'Hermit Crab Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slowbro.mp3',\n      respelling: 'SLOW-bro',\n      ipa: '/ˈsloʊbroʊ/'\n    }\n  ],\n  [\n    'slowbrogalar',\n    {\n      abilities: { first: 'quickdraw', second: 'owntempo', hidden: 'regenerator' },\n      baseSpecies: 'slowbro',\n      baseStats: { hp: 95, atk: 100, def: 95, spa: 100, spd: 70, spe: 30 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Galarica Cuff',\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 80,\n      otherFormes: ['slowbro', 'slowbromega'],\n      prevo: 'slowpokegalar',\n      species: 'slowbro-galar',\n      types: [TypesEnum.Poison, TypesEnum.Psychic],\n      weightkg: 70.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slowbro.mp3',\n      respelling: 'SLOW-bro',\n      ipa: '/ˈsloʊbroʊ/'\n    }\n  ],\n  [\n    'slowbromega',\n    {\n      abilities: { first: 'shellarmor' },\n      baseSpecies: 'slowbro',\n      baseStats: { hp: 95, atk: 75, def: 180, spa: 130, spd: 80, spe: 30 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 80,\n      otherFormes: ['slowbro', 'slowbrogalar'],\n      species: 'slowbro-mega',\n      types: [TypesEnum.Water, TypesEnum.Psychic],\n      weightkg: 120,\n      aliases: ['megabro'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slowbro-mega.mp3',\n      respelling: 'SLOW-bro',\n      ipa: '/ˈsloʊbroʊ/'\n    }\n  ],\n  [\n    'magnemite',\n    {\n      abilities: { first: 'magnetpull', second: 'sturdy', hidden: 'analytic' },\n      baseStats: { hp: 25, atk: 35, def: 70, spa: 95, spd: 55, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['magneton'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 81,\n      species: 'magnemite',\n      types: [TypesEnum.Electric, TypesEnum.Steel],\n      weightkg: 6,\n      aliases: ['koiru'],\n      classification: 'Magnet Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magnemite.mp3',\n      respelling: 'MAG-nuh-mite',\n      ipa: '/ˈmæɡnəmaɪt/'\n    }\n  ],\n  [\n    'magneton',\n    {\n      abilities: { first: 'magnetpull', second: 'sturdy', hidden: 'analytic' },\n      baseStats: { hp: 50, atk: 60, def: 95, spa: 120, spd: 70, spe: 70 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 30,\n      evos: ['magnezone'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 82,\n      prevo: 'magnemite',\n      species: 'magneton',\n      types: [TypesEnum.Electric, TypesEnum.Steel],\n      weightkg: 60,\n      aliases: ['reakoiru'],\n      classification: 'Magnet Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magneton.mp3',\n      respelling: 'MAG-nuh-tun',\n      ipa: '/ˈmæɡnətən/'\n    }\n  ],\n  [\n    'farfetchd',\n    {\n      abilities: { first: 'keeneye', second: 'innerfocus', hidden: 'defiant' },\n      baseStats: { hp: 52, atk: 90, def: 55, spa: 58, spd: 62, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying', 'Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 83,\n      otherFormes: ['farfetchdgalar'],\n      specialBulbapediaUrl: \"Farfetch'd\",\n      species: \"farfetch'd\",\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 15,\n      aliases: ['kamonegi'],\n      classification: 'Wild Duck Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/farfetchd.mp3'\n    }\n  ],\n  [\n    'farfetchdgalar',\n    {\n      abilities: { first: 'steadfast', second: 'steadfast', hidden: 'scrappy' },\n      baseSpecies: 'farfetchd',\n      baseStats: { hp: 52, atk: 95, def: 55, spa: 58, spd: 62, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying', 'Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['sirfetchd'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 83,\n      otherFormes: ['farfetchd'],\n      specialBulbapediaUrl: \"Farfetch'd\",\n      species: 'farfetchd-galar',\n      types: [TypesEnum.Fighting],\n      weightkg: 42,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/farfetchd.mp3'\n    }\n  ],\n  [\n    'doduo',\n    {\n      abilities: { first: 'runaway', second: 'earlybird', hidden: 'tangledfeet' },\n      baseStats: { hp: 35, atk: 85, def: 45, spa: 35, spd: 35, spe: 75 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['dodrio'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 84,\n      species: 'doduo',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 39.2,\n      aliases: ['doodoo'],\n      classification: 'Twin Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/doduo.mp3',\n      respelling: 'DOE-doo-oh',\n      ipa: '/ˈdoʊduː.oʊ/'\n    }\n  ],\n  [\n    'dodrio',\n    {\n      abilities: { first: 'runaway', second: 'earlybird', hidden: 'tangledfeet' },\n      baseStats: { hp: 60, atk: 110, def: 70, spa: 60, spd: 60, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 31,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 85,\n      prevo: 'doduo',\n      species: 'dodrio',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 85.2,\n      aliases: ['doodorio'],\n      classification: 'Triple Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dodrio.mp3',\n      respelling: 'doe-DREE-oh',\n      ipa: '/doʊˈdriː.oʊ/'\n    }\n  ],\n  [\n    'seel',\n    {\n      abilities: { first: 'thickfat', second: 'hydration', hidden: 'icebody' },\n      baseStats: { hp: 65, atk: 45, def: 55, spa: 45, spd: 70, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['dewgong'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 86,\n      species: 'seel',\n      types: [TypesEnum.Water],\n      weightkg: 90,\n      aliases: ['pauwau'],\n      classification: 'Sea Lion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/seel.mp3',\n      respelling: 'seel',\n      ipa: '/siːl/'\n    }\n  ],\n  [\n    'dewgong',\n    {\n      abilities: { first: 'thickfat', second: 'hydration', hidden: 'icebody' },\n      baseStats: { hp: 90, atk: 70, def: 80, spa: 70, spd: 95, spe: 70 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'White',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 87,\n      prevo: 'seel',\n      species: 'dewgong',\n      types: [TypesEnum.Water, TypesEnum.Ice],\n      weightkg: 120,\n      aliases: ['jugon'],\n      classification: 'Sea Lion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dewgong.mp3',\n      respelling: 'DOO-gong',\n      ipa: '/ˈduːɡɒŋ/'\n    }\n  ],\n  [\n    'grimer',\n    {\n      abilities: { first: 'stench', second: 'stickyhold', hidden: 'poisontouch' },\n      baseStats: { hp: 80, atk: 80, def: 50, spa: 40, spd: 50, spe: 25 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['muk'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 88,\n      otherFormes: ['grimeralola'],\n      species: 'grimer',\n      types: [TypesEnum.Poison],\n      weightkg: 30,\n      aliases: ['betobetaa'],\n      classification: 'Sludge Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grimer.mp3',\n      respelling: 'GRIME-er',\n      ipa: '/ˈɡraɪmər/'\n    }\n  ],\n  [\n    'grimeralola',\n    {\n      abilities: {\n        first: 'poisontouch',\n        second: 'gluttony',\n        hidden: 'powerofalchemy'\n      },\n      baseSpecies: 'grimer',\n      baseStats: { hp: 80, atk: 80, def: 50, spa: 40, spd: 50, spe: 25 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['mukalola'],\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 88,\n      otherFormes: ['grimer'],\n      species: 'grimer-alola',\n      types: [TypesEnum.Poison, TypesEnum.Dark],\n      weightkg: 42,\n      aliases: ['alolangrimer', 'grimera'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grimer.mp3',\n      respelling: 'uh-LO-luhn GRY-mur',\n      ipa: '/əˈloʊlən ˈɡraɪmər/'\n    }\n  ],\n  [\n    'muk',\n    {\n      abilities: { first: 'stench', second: 'stickyhold', hidden: 'poisontouch' },\n      baseStats: { hp: 105, atk: 105, def: 75, spa: 65, spd: 100, spe: 50 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 1, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 89,\n      otherFormes: ['mukalola'],\n      prevo: 'grimer',\n      species: 'muk',\n      types: [TypesEnum.Poison],\n      weightkg: 30,\n      aliases: ['betobeton'],\n      classification: 'Sludge Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/muk.mp3',\n      respelling: 'muck',\n      ipa: '/mʌk/'\n    }\n  ],\n  [\n    'mukalola',\n    {\n      abilities: {\n        first: 'poisontouch',\n        second: 'gluttony',\n        hidden: 'powerofalchemy'\n      },\n      baseSpecies: 'muk',\n      baseStats: { hp: 105, atk: 105, def: 75, spa: 65, spd: 100, spe: 50 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 1, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 89,\n      otherFormes: ['muk'],\n      prevo: 'grimeralola',\n      species: 'muk-alola',\n      types: [TypesEnum.Poison, TypesEnum.Dark],\n      weightkg: 52,\n      aliases: ['alolanmuk', 'muka'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/muk.mp3',\n      respelling: 'uh-LO-luhn MUCK',\n      ipa: '/əˈloʊlən ˈmʌk/'\n    }\n  ],\n  [\n    'shellder',\n    {\n      abilities: { first: 'shellarmor', second: 'skilllink', hidden: 'overcoat' },\n      baseStats: { hp: 30, atk: 65, def: 100, spa: 45, spd: 25, spe: 40 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Purple',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['cloyster'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 90,\n      species: 'shellder',\n      types: [TypesEnum.Water],\n      weightkg: 4,\n      aliases: ['sherudaa'],\n      classification: 'Bivalve Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shellder.mp3',\n      respelling: 'SHELL-der',\n      ipa: '/ˈʃɛldər/'\n    }\n  ],\n  [\n    'cloyster',\n    {\n      abilities: { first: 'shellarmor', second: 'skilllink', hidden: 'overcoat' },\n      baseStats: { hp: 50, atk: 95, def: 180, spa: 85, spd: 45, spe: 70 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Water Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 91,\n      prevo: 'shellder',\n      species: 'cloyster',\n      types: [TypesEnum.Water, TypesEnum.Ice],\n      weightkg: 132.5,\n      aliases: ['parushen'],\n      classification: 'Bivalve Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cloyster.mp3',\n      respelling: 'CLOY-stir',\n      ipa: '/ˈklɔɪstɜːr/'\n    }\n  ],\n  [\n    'gastly',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 30, atk: 35, def: 30, spa: 100, spd: 35, spe: 80 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['haunter'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 92,\n      species: 'gastly',\n      types: [TypesEnum.Ghost, TypesEnum.Poison],\n      weightkg: 0.1,\n      aliases: ['goosu'],\n      classification: 'Gas Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gastly.mp3',\n      respelling: 'GAST-lee',\n      ipa: '/ˈɡæstliː/'\n    }\n  ],\n  [\n    'haunter',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 45, atk: 50, def: 45, spa: 115, spd: 55, spe: 95 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 25,\n      evos: ['gengar'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 93,\n      prevo: 'gastly',\n      species: 'haunter',\n      types: [TypesEnum.Ghost, TypesEnum.Poison],\n      weightkg: 0.1,\n      aliases: ['goosuto'],\n      classification: 'Gas Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/haunter.mp3',\n      respelling: 'HAWN-ter',\n      ipa: '/ˈhɔːntər/'\n    }\n  ],\n  [\n    'gengar',\n    {\n      abilities: { first: 'cursedbody' },\n      baseStats: { hp: 60, atk: 65, def: 60, spa: 130, spd: 75, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 94,\n      otherFormes: ['gengarmega', 'gengargmax'],\n      prevo: 'haunter',\n      species: 'gengar',\n      types: [TypesEnum.Ghost, TypesEnum.Poison],\n      weightkg: 40.5,\n      aliases: ['gar', 'gengaa', 'morfentshusbando'],\n      classification: 'Shadow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gengar.mp3',\n      respelling: 'GANG-are',\n      ipa: '/ˈɡæŋɑːr/'\n    }\n  ],\n  [\n    'gengarmega',\n    {\n      abilities: { first: 'shadowtag' },\n      baseSpecies: 'gengar',\n      baseStats: { hp: 60, atk: 65, def: 80, spa: 170, spd: 95, spe: 130 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 94,\n      otherFormes: ['gengar', 'gengargmax'],\n      species: 'gengar-mega',\n      types: [TypesEnum.Ghost, TypesEnum.Poison],\n      weightkg: 40.5,\n      aliases: ['mgar'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gengar-mega.mp3',\n      respelling: 'GANG-are',\n      ipa: '/ˈɡæŋɑːr/'\n    }\n  ],\n  [\n    'gengargmax',\n    {\n      abilities: { first: 'cursedbody' },\n      baseSpecies: 'gengar',\n      baseStats: { hp: 60, atk: 65, def: 60, spa: 130, spd: 75, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 20,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 94,\n      otherFormes: ['gengar', 'gengarmega'],\n      species: 'gengar-gmax',\n      types: [TypesEnum.Ghost, TypesEnum.Poison],\n      weightkg: 121.5,\n      aliases: ['gigantamax gengar'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gengar.mp3',\n      respelling: 'GANG-are',\n      ipa: '/ˈɡæŋɑːr/'\n    }\n  ],\n  [\n    'onix',\n    {\n      abilities: { first: 'rockhead', second: 'sturdy', hidden: 'weakarmor' },\n      baseStats: { hp: 35, atk: 45, def: 160, spa: 30, spd: 45, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['steelix'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 8.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 95,\n      species: 'onix',\n      types: [TypesEnum.Rock, TypesEnum.Ground],\n      weightkg: 210,\n      aliases: ['iwaaku'],\n      classification: 'Rock Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/onix.mp3',\n      respelling: 'ON-icks',\n      ipa: '/ˈɒnɪks/'\n    }\n  ],\n  [\n    'drowzee',\n    {\n      abilities: { first: 'insomnia', second: 'forewarn', hidden: 'innerfocus' },\n      baseStats: { hp: 60, atk: 48, def: 45, spa: 43, spd: 90, spe: 42 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['hypno'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 96,\n      species: 'drowzee',\n      types: [TypesEnum.Psychic],\n      weightkg: 32.4,\n      aliases: ['suriipu'],\n      classification: 'Hypnosis Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drowzee.mp3',\n      respelling: 'DROW-zee',\n      ipa: '/ˈdraʊziː/'\n    }\n  ],\n  [\n    'hypno',\n    {\n      abilities: { first: 'insomnia', second: 'forewarn', hidden: 'innerfocus' },\n      baseStats: { hp: 85, atk: 73, def: 70, spa: 73, spd: 115, spe: 67 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Yellow',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 26,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 97,\n      prevo: 'drowzee',\n      species: 'hypno',\n      types: [TypesEnum.Psychic],\n      weightkg: 75.6,\n      aliases: ['suriipaa'],\n      classification: 'Hypnosis Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hypno.mp3',\n      respelling: 'HIP-no',\n      ipa: '/ˈhɪpnoʊ/'\n    }\n  ],\n  [\n    'krabby',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'shellarmor',\n        hidden: 'sheerforce'\n      },\n      baseStats: { hp: 30, atk: 105, def: 90, spa: 25, spd: 25, spe: 50 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['kingler'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 98,\n      species: 'krabby',\n      types: [TypesEnum.Water],\n      weightkg: 6.5,\n      aliases: ['kurabu'],\n      classification: 'River Crab Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/krabby.mp3',\n      respelling: 'CRA-bee',\n      ipa: '/ˈkræbiː/'\n    }\n  ],\n  [\n    'kingler',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'shellarmor',\n        hidden: 'sheerforce'\n      },\n      baseStats: { hp: 55, atk: 130, def: 115, spa: 50, spd: 50, spe: 75 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Red',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 28,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 99,\n      otherFormes: ['kinglergmax'],\n      prevo: 'krabby',\n      species: 'kingler',\n      types: [TypesEnum.Water],\n      weightkg: 60,\n      aliases: ['kinguraa'],\n      classification: 'Pincer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kingler.mp3',\n      respelling: 'KING-ler',\n      ipa: '/ˈkɪŋlər/'\n    }\n  ],\n  [\n    'kinglergmax',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'shellarmor',\n        hidden: 'sheerforce'\n      },\n      baseSpecies: 'kingler',\n      baseStats: { hp: 55, atk: 130, def: 115, spa: 50, spd: 50, spe: 75 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Red',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 19,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 99,\n      otherFormes: ['kingler'],\n      species: 'kingler-gmax',\n      types: [TypesEnum.Water],\n      weightkg: 180,\n      aliases: ['gigantamax kingler'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kingler.mp3',\n      respelling: 'KING-ler',\n      ipa: '/ˈkɪŋlər/'\n    }\n  ],\n  [\n    'voltorb',\n    {\n      abilities: { first: 'soundproof', second: 'static', hidden: 'aftermath' },\n      baseStats: { hp: 40, atk: 30, def: 50, spa: 55, spd: 55, spe: 100 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Red',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['electrode'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 100,\n      otherFormes: ['voltorbhisui'],\n      species: 'voltorb',\n      types: [TypesEnum.Electric],\n      weightkg: 10.4,\n      aliases: ['biriridama'],\n      classification: 'Ball Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/voltorb.mp3',\n      respelling: 'VOL-torb',\n      ipa: '/ˈvɒltɔːrb/'\n    }\n  ],\n  [\n    'voltorbhisui',\n    {\n      abilities: { first: 'soundproof', second: 'static', hidden: 'aftermath' },\n      baseSpecies: 'voltorb',\n      baseStats: { hp: 40, atk: 30, def: 50, spa: 55, spd: 55, spe: 100 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Red',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['electrodehisui'],\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 100,\n      otherFormes: ['voltorb'],\n      species: 'voltorb-hisui',\n      types: [TypesEnum.Electric, TypesEnum.Grass],\n      weightkg: 13,\n      aliases: ['hisuianvoltorb', 'voltorbh'],\n      classification: 'Sphere Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/voltorb.mp3',\n      respelling: 'VOL-torb',\n      ipa: '/ˈvɒltɔːrb/'\n    }\n  ],\n  [\n    'electrode',\n    {\n      abilities: { first: 'soundproof', second: 'static', hidden: 'aftermath' },\n      baseStats: { hp: 60, atk: 50, def: 70, spa: 80, spd: 80, spe: 150 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Red',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 30,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 101,\n      otherFormes: ['electrodehisui'],\n      prevo: 'voltorb',\n      species: 'electrode',\n      types: [TypesEnum.Electric],\n      weightkg: 66.6,\n      aliases: ['marumain'],\n      classification: 'Ball Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/electrode.mp3',\n      respelling: 'ee-LECK-trode',\n      ipa: '/iːˈlɛktroʊd/'\n    }\n  ],\n  [\n    'electrodehisui',\n    {\n      abilities: { first: 'soundproof', second: 'static', hidden: 'aftermath' },\n      baseSpecies: 'electrode',\n      baseStats: { hp: 60, atk: 50, def: 70, spa: 80, spd: 80, spe: 150 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Red',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Leaf Stone',\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Medium Fast',\n      num: 101,\n      otherFormes: ['electrode'],\n      prevo: 'voltorbhisui',\n      species: 'electrode-hisui',\n      types: [TypesEnum.Electric, TypesEnum.Grass],\n      weightkg: 71,\n      aliases: ['hisuianelectrode', 'electrodeh'],\n      classification: 'Sphere Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/electrode.mp3',\n      respelling: 'ee-LECK-trode',\n      ipa: '/iːˈlɛktroʊd/'\n    }\n  ],\n  [\n    'exeggcute',\n    {\n      abilities: { first: 'chlorophyll', hidden: 'harvest' },\n      baseStats: { hp: 60, atk: 40, def: 80, spa: 60, spd: 45, spe: 40 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Pink',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['exeggutor', 'exeggutoralola'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 102,\n      species: 'exeggcute',\n      types: [TypesEnum.Grass, TypesEnum.Psychic],\n      weightkg: 2.5,\n      aliases: ['tamatama'],\n      classification: 'Egg Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/exeggcute.mp3',\n      respelling: 'EGGS-egg-cute',\n      ipa: '/ˈɛɡzɛɡkjuːt/'\n    }\n  ],\n  [\n    'exeggutor',\n    {\n      abilities: { first: 'chlorophyll', hidden: 'harvest' },\n      baseStats: { hp: 95, atk: 95, def: 85, spa: 125, spd: 75, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Leaf Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 103,\n      otherFormes: ['exeggutoralola'],\n      prevo: 'exeggcute',\n      species: 'exeggutor',\n      types: [TypesEnum.Grass, TypesEnum.Psychic],\n      weightkg: 120,\n      aliases: ['nasshii'],\n      classification: 'Coconut Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/exeggutor.mp3',\n      respelling: 'eggs-EGG-you-tor',\n      ipa: '/ɛɡzˈɛɡjuːtɔːr/'\n    }\n  ],\n  [\n    'exeggutoralola',\n    {\n      abilities: { first: 'frisk', hidden: 'harvest' },\n      baseSpecies: 'exeggutor',\n      baseStats: { hp: 95, atk: 105, def: 85, spa: 125, spd: 75, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Leaf Stone',\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 10.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 103,\n      otherFormes: ['exeggutor'],\n      prevo: 'exeggcute',\n      species: 'exeggutor-alola',\n      types: [TypesEnum.Grass, TypesEnum.Dragon],\n      weightkg: 415.6,\n      aliases: ['alolanexeggutor', 'exeggutora', 'neckboy'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/exeggutor.mp3',\n      respelling: 'uh-LO-luhn ecks-EGG-u-tore',\n      ipa: '/əˈloʊlən ɛksˈɛɡjuːtɔər/'\n    }\n  ],\n  [\n    'cubone',\n    {\n      abilities: {\n        first: 'rockhead',\n        second: 'lightningrod',\n        hidden: 'battlearmor'\n      },\n      baseStats: { hp: 50, atk: 50, def: 95, spa: 40, spd: 50, spe: 35 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['marowak', 'marowakalola'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 104,\n      species: 'cubone',\n      types: [TypesEnum.Ground],\n      weightkg: 6.5,\n      aliases: ['karakara'],\n      classification: 'Lonely Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cubone.mp3',\n      respelling: 'CUE-bone',\n      ipa: '/ˈkjuːboʊn/'\n    }\n  ],\n  [\n    'marowak',\n    {\n      abilities: {\n        first: 'rockhead',\n        second: 'lightningrod',\n        hidden: 'battlearmor'\n      },\n      baseStats: { hp: 60, atk: 80, def: 110, spa: 50, spd: 80, spe: 45 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Brown',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 28,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 105,\n      otherFormes: ['marowakalola', 'marowakalolatotem'],\n      prevo: 'cubone',\n      species: 'marowak',\n      types: [TypesEnum.Ground],\n      weightkg: 45,\n      aliases: ['garagara'],\n      classification: 'Bone Keeper Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/marowak.mp3',\n      respelling: 'MAR-row-ack',\n      ipa: '/ˈmɑːroʊæk/'\n    }\n  ],\n  [\n    'marowakalola',\n    {\n      abilities: {\n        first: 'cursedbody',\n        second: 'lightningrod',\n        hidden: 'rockhead'\n      },\n      baseSpecies: 'marowak',\n      baseStats: { hp: 60, atk: 80, def: 110, spa: 50, spd: 80, spe: 45 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'level 28 at night',\n      forme: 'Alola',\n      formeLetter: 'A',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 105,\n      otherFormes: ['marowak', 'marowakalolatotem'],\n      prevo: 'cubone',\n      species: 'marowak-alola',\n      types: [TypesEnum.Fire, TypesEnum.Ghost],\n      weightkg: 34,\n      aliases: ['alolanmarowak', 'marowaka'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/marowak.mp3',\n      respelling: 'uh-LO-luhn MARE-oh-wack',\n      ipa: '/əˈloʊlən ˈmɛəroʊwæk/'\n    }\n  ],\n  [\n    'marowakalolatotem',\n    {\n      abilities: { first: 'rockhead' },\n      baseSpecies: 'marowak',\n      baseStats: { hp: 60, atk: 80, def: 110, spa: 50, spd: 80, spe: 45 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      forme: 'Alola-Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 105,\n      otherFormes: ['marowak', 'marowakalola'],\n      species: 'marowak-alola-totem',\n      types: [TypesEnum.Fire, TypesEnum.Ghost],\n      weightkg: 98,\n      aliases: ['marowakt', 'totemalolanmarowak', 'totemmarowak', 'totemmarowaka', 'totemmarowakalola'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/marowak.mp3',\n      respelling: 'MAR-row-ack',\n      ipa: '/ˈmɑːroʊæk/'\n    }\n  ],\n  [\n    'hitmonlee',\n    {\n      abilities: { first: 'limber', second: 'reckless', hidden: 'unburden' },\n      baseStats: { hp: 50, atk: 120, def: 53, spa: 35, spd: 110, spe: 87 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level 20 with higher Attack',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 106,\n      prevo: 'tyrogue',\n      species: 'hitmonlee',\n      types: [TypesEnum.Fighting],\n      weightkg: 49.8,\n      aliases: ['sawamuraa'],\n      classification: 'Kicking Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hitmonlee.mp3',\n      respelling: 'HIT-moan-lee',\n      ipa: '/ˈhɪtmoʊnliː/'\n    }\n  ],\n  [\n    'hitmonchan',\n    {\n      abilities: { first: 'keeneye', second: 'ironfist', hidden: 'innerfocus' },\n      baseStats: { hp: 50, atk: 105, def: 79, spa: 35, spd: 110, spe: 76 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Level 20 with higher defense',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 107,\n      prevo: 'tyrogue',\n      species: 'hitmonchan',\n      types: [TypesEnum.Fighting],\n      weightkg: 50.2,\n      aliases: ['ebiwaraa'],\n      classification: 'Punching Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hitmonchan.mp3',\n      respelling: 'HIT-moan-chan',\n      ipa: '/ˈhɪtmoʊntʃæn/'\n    }\n  ],\n  [\n    'lickitung',\n    {\n      abilities: { first: 'owntempo', second: 'oblivious', hidden: 'cloudnine' },\n      baseStats: { hp: 90, atk: 55, def: 75, spa: 60, spd: 75, spe: 30 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Monster'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['lickilicky'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 108,\n      species: 'lickitung',\n      types: [TypesEnum.Normal],\n      weightkg: 65.5,\n      aliases: ['beroringa'],\n      classification: 'Licking Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lickitung.mp3',\n      respelling: 'LICK-i-tung',\n      ipa: '/ˈlɪkɪtʌŋ/'\n    }\n  ],\n  [\n    'koffing',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 40, atk: 65, def: 95, spa: 60, spd: 45, spe: 35 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['weezing'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 109,\n      species: 'koffing',\n      types: [TypesEnum.Poison],\n      weightkg: 1,\n      aliases: ['dogaasu', 'dogars', 'smogon'],\n      classification: 'Poison Gas Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/koffing.mp3',\n      respelling: 'CAWF-ing',\n      ipa: '/ˈkɔːfɪŋ/'\n    }\n  ],\n  [\n    'weezing',\n    {\n      abilities: {\n        first: 'levitate',\n        second: 'neutralizinggas',\n        hidden: 'stench'\n      },\n      baseStats: { hp: 65, atk: 90, def: 120, spa: 85, spd: 70, spe: 60 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 35,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 110,\n      prevo: 'koffing',\n      species: 'weezing',\n      types: [TypesEnum.Poison],\n      weightkg: 9.5,\n      aliases: ['matadogasu'],\n      classification: 'Poison Gas Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/weezing.mp3',\n      respelling: 'WEEZE-ing',\n      ipa: '/ˈwiːzɪŋ/'\n    }\n  ],\n  [\n    'weezinggalar',\n    {\n      abilities: {\n        first: 'levitate',\n        second: 'neutralizinggas',\n        hidden: 'mistysurge'\n      },\n      baseSpecies: 'weezing',\n      baseStats: { hp: 65, atk: 90, def: 120, spa: 85, spd: 70, spe: 60 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 35,\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 110,\n      prevo: 'koffing',\n      species: 'weezing-galar',\n      types: [TypesEnum.Poison, TypesEnum.Fairy],\n      weightkg: 16,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/weezing.mp3',\n      respelling: 'WEEZE-ing',\n      ipa: '/ˈwiːzɪŋ/'\n    }\n  ],\n  [\n    'rhyhorn',\n    {\n      abilities: { first: 'lightningrod', second: 'rockhead', hidden: 'reckless' },\n      baseStats: { hp: 80, atk: 85, def: 95, spa: 30, spd: 30, spe: 25 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['rhydon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 111,\n      species: 'rhyhorn',\n      types: [TypesEnum.Ground, TypesEnum.Rock],\n      weightkg: 115,\n      aliases: ['saihoon'],\n      classification: 'Spikes Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rhyhorn.mp3',\n      respelling: 'RYE-horn',\n      ipa: '/ˈraɪhɔːrn/'\n    }\n  ],\n  [\n    'rhydon',\n    {\n      abilities: { first: 'lightningrod', second: 'rockhead', hidden: 'reckless' },\n      baseStats: { hp: 105, atk: 130, def: 120, spa: 45, spd: 45, spe: 40 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 42,\n      evos: ['rhyperior'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 112,\n      prevo: 'rhyhorn',\n      species: 'rhydon',\n      types: [TypesEnum.Ground, TypesEnum.Rock],\n      weightkg: 120,\n      aliases: ['saidon'],\n      classification: 'Drill Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rhydon.mp3',\n      respelling: 'RYE-donn',\n      ipa: '/ˈraɪdɒn/'\n    }\n  ],\n  [\n    'chansey',\n    {\n      abilities: { first: 'naturalcure', second: 'serenegrace', hidden: 'healer' },\n      baseStats: { hp: 250, atk: 5, def: 5, spa: 35, spd: 105, spe: 50 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Hold Oval Stone, Level Up',\n      evos: ['blissey'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 10280,\n      num: 113,\n      prevo: 'happiny',\n      species: 'chansey',\n      types: [TypesEnum.Normal],\n      weightkg: 34.6,\n      aliases: ['rakkii'],\n      classification: 'Egg Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chansey.mp3',\n      respelling: 'CHAN-see',\n      ipa: '/ˈtʃænsiː/'\n    }\n  ],\n  [\n    'tangela',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'leafguard',\n        hidden: 'regenerator'\n      },\n      baseStats: { hp: 65, atk: 55, def: 115, spa: 100, spd: 40, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['tangrowth'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 114,\n      species: 'tangela',\n      types: [TypesEnum.Grass],\n      weightkg: 35,\n      aliases: ['monjara'],\n      classification: 'Vine Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tangela.mp3',\n      respelling: 'TANG-guh-luh',\n      ipa: '/ˈtæŋɡələ/'\n    }\n  ],\n  [\n    'kangaskhan',\n    {\n      abilities: { first: 'earlybird', second: 'scrappy', hidden: 'innerfocus' },\n      baseStats: { hp: 105, atk: 95, def: 80, spa: 40, spd: 80, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Monster'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 115,\n      otherFormes: ['kangaskhanmega'],\n      species: 'kangaskhan',\n      types: [TypesEnum.Normal],\n      weightkg: 80,\n      aliases: ['garuura', 'kanga'],\n      classification: 'Parent Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kangaskhan.mp3',\n      respelling: 'KANG-gus-con',\n      ipa: '/ˈkæŋɡʌskɒn/'\n    }\n  ],\n  [\n    'kangaskhanmega',\n    {\n      abilities: { first: 'parentalbond' },\n      baseSpecies: 'kangaskhan',\n      baseStats: { hp: 105, atk: 125, def: 100, spa: 60, spd: 100, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Monster'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 115,\n      otherFormes: ['kangaskhan'],\n      species: 'kangaskhan-mega',\n      types: [TypesEnum.Normal],\n      weightkg: 100,\n      aliases: ['megakanga', 'megakhan'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kangaskhan-mega.mp3',\n      respelling: 'KANG-gus-con',\n      ipa: '/ˈkæŋɡʌskɒn/'\n    }\n  ],\n  [\n    'horsea',\n    {\n      abilities: { first: 'swiftswim', second: 'sniper', hidden: 'damp' },\n      baseStats: { hp: 30, atk: 40, def: 70, spa: 70, spd: 25, spe: 60 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['seadra'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 116,\n      species: 'horsea',\n      types: [TypesEnum.Water],\n      weightkg: 8,\n      aliases: ['tattsuu'],\n      classification: 'Dragon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/horsea.mp3',\n      respelling: 'HORSE-ee',\n      ipa: '/ˈhɔːrsiː/'\n    }\n  ],\n  [\n    'seadra',\n    {\n      abilities: { first: 'poisonpoint', second: 'sniper', hidden: 'damp' },\n      baseStats: { hp: 55, atk: 65, def: 95, spa: 95, spd: 45, spe: 85 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 1, spd: 0, spe: 0 },\n      evoLevel: 32,\n      evos: ['kingdra'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 117,\n      prevo: 'horsea',\n      species: 'seadra',\n      types: [TypesEnum.Water],\n      weightkg: 25,\n      aliases: ['shiidora'],\n      classification: 'Dragon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/seadra.mp3',\n      respelling: 'see-druh',\n      ipa: '/siːdrə/'\n    }\n  ],\n  [\n    'goldeen',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'waterveil',\n        hidden: 'lightningrod'\n      },\n      baseStats: { hp: 45, atk: 67, def: 60, spa: 35, spd: 50, spe: 63 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['seaking'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 118,\n      species: 'goldeen',\n      types: [TypesEnum.Water],\n      weightkg: 15,\n      aliases: ['tosakinto'],\n      classification: 'Goldfish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/goldeen.mp3',\n      respelling: 'GOAL-deen',\n      ipa: '/ˈɡoʊldiːn/'\n    }\n  ],\n  [\n    'seaking',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'waterveil',\n        hidden: 'lightningrod'\n      },\n      baseStats: { hp: 80, atk: 92, def: 65, spa: 65, spd: 80, spe: 68 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Red',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 33,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 119,\n      prevo: 'goldeen',\n      species: 'seaking',\n      types: [TypesEnum.Water],\n      weightkg: 39,\n      aliases: ['azumaou'],\n      classification: 'Goldfish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/seaking.mp3',\n      respelling: 'SEE-king',\n      ipa: '/ˈsiːkɪŋ/'\n    }\n  ],\n  [\n    'staryu',\n    {\n      abilities: {\n        first: 'illuminate',\n        second: 'naturalcure',\n        hidden: 'analytic'\n      },\n      baseStats: { hp: 30, atk: 45, def: 55, spa: 70, spd: 55, spe: 85 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['starmie'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 120,\n      species: 'staryu',\n      types: [TypesEnum.Water],\n      weightkg: 34.5,\n      aliases: ['hitodeman'],\n      classification: 'Star Shape Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/staryu.mp3',\n      respelling: 'STAR-you',\n      ipa: '/ˈstɑːrjuː/'\n    }\n  ],\n  [\n    'starmie',\n    {\n      abilities: {\n        first: 'illuminate',\n        second: 'naturalcure',\n        hidden: 'analytic'\n      },\n      baseStats: { hp: 60, atk: 75, def: 85, spa: 100, spd: 85, spe: 115 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'use Water Stone',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 121,\n      prevo: 'staryu',\n      species: 'starmie',\n      otherFormes: ['starmiemega'],\n      types: [TypesEnum.Water, TypesEnum.Psychic],\n      weightkg: 80,\n      aliases: ['sutaamii'],\n      classification: 'Mysterious Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/starmie.mp3',\n      respelling: 'STAR-me',\n      ipa: '/ˈstɑːrmiː/'\n    }\n  ],\n  [\n    'starmiemega',\n    {\n      abilities: { first: 'hugepower' },\n      baseStats: { hp: 60, atk: 100, def: 105, spa: 130, spd: 105, spe: 120 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      baseSpecies: 'starmie',\n      color: 'Purple',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 121,\n      otherFormes: ['starmie'],\n      species: 'starmie-mega',\n      types: [TypesEnum.Water, TypesEnum.Psychic],\n      weightkg: 80,\n      aliases: ['megastar', 'megastarmie'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/starmie.mp3',\n      respelling: 'STAR-me',\n      ipa: '/ˈstɑːrmiː/'\n    }\n  ],\n  [\n    'mrmime',\n    {\n      abilities: { first: 'soundproof', second: 'filter', hidden: 'technician' },\n      baseStats: { hp: 40, atk: 45, def: 65, spa: 100, spd: 120, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Level up while knowing Mimic',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 122,\n      prevo: 'mimejr',\n      species: 'Mr. Mime',\n      specialBulbapediaUrl: 'Mr._Mime',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 54.5,\n      aliases: ['bariyaado', 'mister mime', 'mr mime', 'mr. mime', 'mrmime'],\n      classification: 'Barrier Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mrmime.mp3'\n    }\n  ],\n  [\n    'mrmimegalar',\n    {\n      abilities: {\n        first: 'vitalspirit',\n        second: 'screencleaner',\n        hidden: 'icebody'\n      },\n      baseSpecies: 'mr.mime',\n      baseStats: { hp: 50, atk: 65, def: 65, spa: 90, spd: 90, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evos: ['mrrime'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 122,\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/ani/mrmime-galar.gif',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/mrmime-galar.gif',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/mrmime-galar.gif',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/mrmime-galar.gif',\n      specialBulbapediaUrl: 'Mr._Mime',\n      species: 'Mr. Mime-Galar',\n      types: [TypesEnum.Ice, TypesEnum.Psychic],\n      weightkg: 56.8,\n      aliases: ['gmime', 'gmrmime'],\n      classification: 'Dancing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mrmime.mp3'\n    }\n  ],\n  [\n    'scyther',\n    {\n      abilities: { first: 'swarm', second: 'technician', hidden: 'steadfast' },\n      baseStats: { hp: 70, atk: 110, def: 80, spa: 55, spd: 80, spe: 105 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['scizor', 'kleavor'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 123,\n      species: 'scyther',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 56,\n      aliases: ['sutoraiku'],\n      classification: 'Mantis Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scyther.mp3',\n      respelling: 'SYE-ther',\n      ipa: '/ˈsaɪθər/'\n    }\n  ],\n  [\n    'jynx',\n    {\n      abilities: { first: 'oblivious', second: 'forewarn', hidden: 'dryskin' },\n      baseStats: { hp: 65, atk: 50, def: 35, spa: 115, spd: 95, spe: 95 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 124,\n      prevo: 'smoochum',\n      species: 'jynx',\n      types: [TypesEnum.Ice, TypesEnum.Psychic],\n      weightkg: 40.6,\n      aliases: ['ruujura'],\n      classification: 'Human Shape Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/jynx.mp3',\n      respelling: 'jincks',\n      ipa: '/dʒɪŋks/'\n    }\n  ],\n  [\n    'electabuzz',\n    {\n      abilities: { first: 'static', hidden: 'vitalspirit' },\n      baseStats: { hp: 65, atk: 83, def: 57, spa: 95, spd: 85, spe: 105 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 30,\n      evos: ['electivire'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 125,\n      prevo: 'elekid',\n      species: 'electabuzz',\n      types: [TypesEnum.Electric],\n      weightkg: 30,\n      aliases: ['erebuu'],\n      classification: 'Electric Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/electabuzz.mp3',\n      respelling: 'uh-LECK-tuh-buzz',\n      ipa: '/əˈlɛktəbʌz/'\n    }\n  ],\n  [\n    'magmar',\n    {\n      abilities: { first: 'flamebody', hidden: 'vitalspirit' },\n      baseStats: { hp: 65, atk: 95, def: 57, spa: 100, spd: 85, spe: 93 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 30,\n      evos: ['magmortar'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 126,\n      prevo: 'magby',\n      species: 'magmar',\n      types: [TypesEnum.Fire],\n      weightkg: 44.5,\n      aliases: ['buubaa'],\n      classification: 'Spitfire Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magmar.mp3',\n      respelling: 'MAG-mar',\n      ipa: '/ˈmæɡmɑːr/'\n    }\n  ],\n  [\n    'pinsir',\n    {\n      abilities: { first: 'hypercutter', second: 'moldbreaker', hidden: 'moxie' },\n      baseStats: { hp: 65, atk: 125, def: 100, spa: 55, spd: 70, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 127,\n      otherFormes: ['pinsirmega'],\n      species: 'pinsir',\n      types: [TypesEnum.Bug],\n      weightkg: 55,\n      aliases: ['kairosu'],\n      classification: 'Stag Beetle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pinsir.mp3',\n      respelling: 'PIN-sir',\n      ipa: '/ˈpɪnsɜːr/'\n    }\n  ],\n  [\n    'pinsirmega',\n    {\n      abilities: { first: 'aerilate' },\n      baseSpecies: 'pinsir',\n      baseStats: { hp: 65, atk: 155, def: 120, spa: 65, spd: 90, spe: 105 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 127,\n      otherFormes: ['pinsir'],\n      species: 'pinsir-mega',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 59,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pinsir-mega.mp3',\n      respelling: 'PIN-sir',\n      ipa: '/ˈpɪnsɜːr/'\n    }\n  ],\n  [\n    'tauros',\n    {\n      abilities: {\n        first: 'intimidate',\n        second: 'angerpoint',\n        hidden: 'sheerforce'\n      },\n      baseStats: { hp: 75, atk: 100, def: 95, spa: 40, spd: 70, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 128,\n      otherFormes: ['taurospaldeacombat', 'taurospaldeablaze', 'taurospaldeaaqua'],\n      species: 'tauros',\n      types: [TypesEnum.Normal],\n      weightkg: 88.4,\n      aliases: ['bull', 'kentarosu'],\n      classification: 'Wild Bull Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tauros.mp3',\n      respelling: 'TOR-ose',\n      ipa: '/ˈtɔːroʊs/'\n    }\n  ],\n  [\n    'taurospaldeacombat',\n    {\n      abilities: { first: 'intimidate', second: 'angerpoint', hidden: 'cudchew' },\n      baseSpecies: 'tauros',\n      baseStats: { hp: 75, atk: 110, def: 105, spa: 30, spd: 70, spe: 100 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 1 },\n      forme: 'Paldea',\n      formeLetter: 'P',\n      genderRatio: { male: '10%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 128,\n      otherFormes: ['tauros', 'taurospaldeablaze', 'taurospaldeaaqua'],\n      species: 'tauros-paldeacombat',\n      types: [TypesEnum.Fighting],\n      weightkg: 115,\n      aliases: ['paldeantauros', 'taurosp', 'taurospaldea'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tauros.mp3',\n      respelling: 'TOR-ose',\n      ipa: '/ˈtɔːroʊs/'\n    }\n  ],\n  [\n    'taurospaldeablaze',\n    {\n      abilities: { first: 'intimidate', second: 'angerpoint', hidden: 'cudchew' },\n      baseSpecies: 'tauros',\n      baseStats: { hp: 75, atk: 110, def: 105, spa: 30, spd: 70, spe: 100 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 1 },\n      forme: 'Paldea-Blaze',\n      formeLetter: 'PF',\n      genderRatio: { male: '10%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 128,\n      otherFormes: ['tauros', 'taurospaldeacombat', 'taurospaldeaaqua'],\n      species: 'tauros-paldeablaze',\n      types: [TypesEnum.Fighting, TypesEnum.Fire],\n      weightkg: 85,\n      aliases: ['paldeanfiretauros', 'taurospf', 'paldeantaurosfire', 'paldeaonblazetaurus', 'pladeantaurosblaze', 'taurospaldeafire'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tauros.mp3',\n      respelling: 'TOR-ose',\n      ipa: '/ˈtɔːroʊs/'\n    }\n  ],\n  [\n    'taurospaldeaaqua',\n    {\n      abilities: { first: 'intimidate', second: 'angerpoint', hidden: 'cudchew' },\n      baseSpecies: 'tauros',\n      baseStats: { hp: 75, atk: 110, def: 105, spa: 30, spd: 70, spe: 100 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 1 },\n      forme: 'Paldea-Water',\n      formeLetter: 'PW',\n      genderRatio: { male: '10%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 128,\n      otherFormes: ['tauros', 'taurospaldeacombat', 'taurospaldeablaze'],\n      species: 'tauros-paldeaaqua',\n      types: [TypesEnum.Fighting, TypesEnum.Water],\n      weightkg: 110,\n      aliases: ['paldeanwatertauros', 'taurospw', 'paldeantauroswater', 'paldeanaquatauros', 'paldeantaurosaqua', 'taurospaldeawater'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tauros.mp3',\n      respelling: 'TOR-ose',\n      ipa: '/ˈtɔːroʊs/'\n    }\n  ],\n  [\n    'magikarp',\n    {\n      abilities: { first: 'swiftswim', hidden: 'rattled' },\n      baseStats: { hp: 20, atk: 10, def: 55, spa: 15, spd: 20, spe: 80 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Water 2', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['gyarados'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 1285,\n      num: 129,\n      species: 'magikarp',\n      types: [TypesEnum.Water],\n      weightkg: 10,\n      aliases: ['karp', 'koikingu'],\n      classification: 'Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magikarp.mp3',\n      respelling: 'MAG-i-karp',\n      ipa: '/ˈmæɡɪkɑːrp/'\n    }\n  ],\n  [\n    'gyarados',\n    {\n      abilities: { first: 'intimidate', hidden: 'moxie' },\n      baseStats: { hp: 95, atk: 125, def: 79, spa: 60, spd: 100, spe: 81 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 2', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 6.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 1285,\n      num: 130,\n      otherFormes: ['gyaradosmega'],\n      prevo: 'magikarp',\n      species: 'gyarados',\n      types: [TypesEnum.Water, TypesEnum.Flying],\n      weightkg: 235,\n      aliases: ['gyara', 'gyaradosu'],\n      classification: 'Atrocious Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gyarados.mp3',\n      respelling: 'GAR-i-dose',\n      ipa: '/ˈɡɑːrɪdoʊs/'\n    }\n  ],\n  [\n    'gyaradosmega',\n    {\n      abilities: { first: 'moldbreaker' },\n      baseSpecies: 'gyarados',\n      baseStats: { hp: 95, atk: 155, def: 109, spa: 70, spd: 130, spe: 81 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 2', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 6.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 1285,\n      num: 130,\n      otherFormes: ['gyarados'],\n      species: 'gyarados-mega',\n      types: [TypesEnum.Water, TypesEnum.Dark],\n      weightkg: 305,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gyarados-mega.mp3',\n      respelling: 'GAR-i-dose',\n      ipa: '/ˈɡɑːrɪdoʊs/'\n    }\n  ],\n  [\n    'lapras',\n    {\n      abilities: {\n        first: 'waterabsorb',\n        second: 'shellarmor',\n        hidden: 'hydration'\n      },\n      baseStats: { hp: 130, atk: 85, def: 80, spa: 85, spd: 95, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 131,\n      otherFormes: ['laprasgmax'],\n      species: 'lapras',\n      types: [TypesEnum.Water, TypesEnum.Ice],\n      weightkg: 220,\n      aliases: ['rapurasu'],\n      classification: 'Transport Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lapras.mp3',\n      respelling: 'LAP-russ',\n      ipa: '/ˈlæprəs/'\n    }\n  ],\n  [\n    'laprasgmax',\n    {\n      abilities: {\n        first: 'waterabsorb',\n        second: 'shellarmor',\n        hidden: 'hydration'\n      },\n      baseSpecies: 'lapras',\n      baseStats: { hp: 130, atk: 85, def: 80, spa: 85, spd: 95, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 24,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 131,\n      otherFormes: ['lapras'],\n      species: 'lapras-gmax',\n      types: [TypesEnum.Water, TypesEnum.Ice],\n      weightkg: 660,\n      aliases: ['gigantamax lapras'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lapras.mp3',\n      respelling: 'LAP-russ',\n      ipa: '/ˈlæprəs/'\n    }\n  ],\n  [\n    'ditto',\n    {\n      abilities: { first: 'limber', hidden: 'imposter' },\n      baseStats: { hp: 48, atk: 48, def: 48, spa: 48, spd: 48, spe: 48 },\n      catchRate: { base: 35, percentageWithOrdinaryPokeballAtFullHealth: '9.9%' },\n      color: 'Purple',\n      eggGroups: ['Ditto'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 132,\n      species: 'ditto',\n      types: [TypesEnum.Normal],\n      weightkg: 4,\n      aliases: ['metamon'],\n      classification: 'Transform Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ditto.mp3',\n      respelling: 'DID-oh',\n      ipa: '/ˈdɪdoʊ/'\n    }\n  ],\n  [\n    'eevee',\n    {\n      abilities: {\n        first: 'runaway',\n        second: 'adaptability',\n        hidden: 'anticipation'\n      },\n      baseStats: { hp: 55, atk: 55, def: 50, spa: 45, spd: 65, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['vaporeon', 'jolteon', 'flareon', 'espeon', 'umbreon', 'leafeon', 'glaceon', 'sylveon'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 133,\n      otherFormes: ['eeveestarter', 'eeveegmax'],\n      species: 'eevee',\n      types: [TypesEnum.Normal],\n      weightkg: 6.5,\n      aliases: ['iibui'],\n      classification: 'Evolution Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eevee.mp3',\n      respelling: 'EE-vee',\n      ipa: '/ˈiːviː/'\n    }\n  ],\n  [\n    'eeveestarter',\n    {\n      abilities: {\n        first: 'runaway',\n        second: 'adaptability',\n        hidden: 'anticipation'\n      },\n      baseSpecies: 'eevee',\n      baseStats: { hp: 65, atk: 75, def: 70, spa: 65, spd: 85, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      forme: 'Starter',\n      formeLetter: 'S',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 133,\n      otherFormes: ['eevee', 'eeveegmax'],\n      species: 'eevee-starter',\n      types: [TypesEnum.Normal],\n      weightkg: 6.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eevee-starter.mp3',\n      respelling: 'EE-vee',\n      ipa: '/ˈiːviː/'\n    }\n  ],\n  [\n    'eeveegmax',\n    {\n      abilities: {\n        first: 'runaway',\n        second: 'adaptability',\n        hidden: 'anticipation'\n      },\n      baseSpecies: 'eevee',\n      baseStats: { hp: 55, atk: 55, def: 50, spa: 45, spd: 65, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 18,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 133,\n      otherFormes: ['eeveegmax', 'eeveestarter'],\n      species: 'eevee-gmax',\n      types: [TypesEnum.Normal],\n      weightkg: 19.5,\n      aliases: ['gigantamax eevee'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eevee.mp3',\n      respelling: 'EE-vee',\n      ipa: '/ˈiːviː/'\n    }\n  ],\n  [\n    'vaporeon',\n    {\n      abilities: { first: 'waterabsorb', hidden: 'hydration' },\n      baseStats: { hp: 130, atk: 65, def: 60, spa: 110, spd: 95, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Water Stone',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 134,\n      prevo: 'eevee',\n      species: 'vaporeon',\n      types: [TypesEnum.Water],\n      weightkg: 29,\n      aliases: ['shawaazu'],\n      classification: 'Bubble Jet Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vaporeon.mp3',\n      respelling: 'vay-POR-ey-on',\n      ipa: '/veɪˈpɔːreɪɒn/'\n    }\n  ],\n  [\n    'jolteon',\n    {\n      abilities: { first: 'voltabsorb', hidden: 'quickfeet' },\n      baseStats: { hp: 65, atk: 65, def: 60, spa: 110, spd: 95, spe: 130 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'use Thunder Stone',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 135,\n      prevo: 'eevee',\n      species: 'jolteon',\n      types: [TypesEnum.Electric],\n      weightkg: 24.5,\n      aliases: ['sandaasu'],\n      classification: 'Lightning Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/jolteon.mp3',\n      respelling: 'JOLT-e-on',\n      ipa: '/ˈdʒɒltɛɒn/'\n    }\n  ],\n  [\n    'flareon',\n    {\n      abilities: { first: 'flashfire', hidden: 'guts' },\n      baseStats: { hp: 65, atk: 130, def: 60, spa: 95, spd: 110, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Fire Stone',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 136,\n      prevo: 'eevee',\n      species: 'flareon',\n      types: [TypesEnum.Fire],\n      weightkg: 25,\n      aliases: ['buusutaa'],\n      classification: 'Flame Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/flareon.mp3',\n      respelling: 'FLARE-ae-on',\n      ipa: '/ˈflɛəreɪɒn/'\n    }\n  ],\n  [\n    'porygon',\n    {\n      abilities: { first: 'trace', second: 'download', hidden: 'analytic' },\n      baseStats: { hp: 65, atk: 60, def: 70, spa: 85, spd: 75, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['porygon2'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 137,\n      species: 'porygon',\n      types: [TypesEnum.Normal],\n      weightkg: 36.5,\n      aliases: ['porigon'],\n      classification: 'Virtual Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/porygon.mp3',\n      respelling: 'POR-eh-gon',\n      ipa: '/ˈpɔːrɛɡɒn/'\n    }\n  ],\n  [\n    'omanyte',\n    {\n      abilities: { first: 'swiftswim', second: 'shellarmor', hidden: 'weakarmor' },\n      baseStats: { hp: 35, atk: 40, def: 100, spa: 90, spd: 55, spe: 35 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['omastar'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 138,\n      species: 'omanyte',\n      types: [TypesEnum.Rock, TypesEnum.Water],\n      weightkg: 7.5,\n      aliases: ['omunaito'],\n      classification: 'Spiral Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/omanyte.mp3',\n      respelling: 'AHM-uh-nite',\n      ipa: '/ˈɑːmənaɪt/'\n    }\n  ],\n  [\n    'omastar',\n    {\n      abilities: { first: 'swiftswim', second: 'shellarmor', hidden: 'weakarmor' },\n      baseStats: { hp: 70, atk: 60, def: 125, spa: 115, spd: 70, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 139,\n      prevo: 'omanyte',\n      species: 'omastar',\n      types: [TypesEnum.Rock, TypesEnum.Water],\n      weightkg: 35,\n      aliases: ['omusutaa'],\n      classification: 'Spiral Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/omastar.mp3',\n      respelling: 'AHM-uh-star',\n      ipa: '/ˈɑːməstɑːr/'\n    }\n  ],\n  [\n    'kabuto',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'battlearmor',\n        hidden: 'weakarmor'\n      },\n      baseStats: { hp: 30, atk: 80, def: 90, spa: 55, spd: 45, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['kabutops'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 140,\n      species: 'kabuto',\n      types: [TypesEnum.Rock, TypesEnum.Water],\n      weightkg: 11.5,\n      classification: 'Shellfish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kabuto.mp3',\n      respelling: 'kuh-BOO-toe',\n      ipa: '/kəˈbuːtoʊ/'\n    }\n  ],\n  [\n    'kabutops',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'battlearmor',\n        hidden: 'weakarmor'\n      },\n      baseStats: { hp: 60, atk: 115, def: 105, spa: 65, spd: 70, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 141,\n      prevo: 'kabuto',\n      species: 'kabutops',\n      types: [TypesEnum.Rock, TypesEnum.Water],\n      weightkg: 40.5,\n      aliases: ['kabutopusu'],\n      classification: 'Shellfish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kabutops.mp3',\n      respelling: 'kuh-BOO-tops',\n      ipa: '/kəˈbuːtɒps/'\n    }\n  ],\n  [\n    'aerodactyl',\n    {\n      abilities: { first: 'rockhead', second: 'pressure', hidden: 'unnerve' },\n      baseStats: { hp: 80, atk: 105, def: 65, spa: 60, spd: 75, spe: 130 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 142,\n      otherFormes: ['aerodactylmega'],\n      species: 'aerodactyl',\n      types: [TypesEnum.Rock, TypesEnum.Flying],\n      weightkg: 59,\n      aliases: ['aero', 'putera'],\n      classification: 'Fossil Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aerodactyl.mp3',\n      respelling: 'air-oh-DACK-tull',\n      ipa: '/ɛəroʊˈdæktʌl/'\n    }\n  ],\n  [\n    'aerodactylmega',\n    {\n      abilities: { first: 'toughclaws' },\n      baseSpecies: 'aerodactyl',\n      baseStats: { hp: 80, atk: 135, def: 85, spa: 70, spd: 95, spe: 150 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 142,\n      otherFormes: ['aerodactyl'],\n      species: 'aerodactyl-mega',\n      types: [TypesEnum.Rock, TypesEnum.Flying],\n      weightkg: 79,\n      aliases: ['maero', 'megaaero'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aerodactyl-mega.mp3',\n      respelling: 'air-oh-DACK-tull',\n      ipa: '/ɛəroʊˈdæktʌl/'\n    }\n  ],\n  [\n    'snorlax',\n    {\n      abilities: { first: 'immunity', second: 'thickfat', hidden: 'gluttony' },\n      baseStats: { hp: 160, atk: 110, def: 65, spa: 65, spd: 110, spe: 30 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Black',\n      eggGroups: ['Monster'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up with happiness of at least 220',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 143,\n      otherFormes: ['snorlaxgmax'],\n      prevo: 'munchlax',\n      species: 'snorlax',\n      types: [TypesEnum.Normal],\n      weightkg: 460,\n      aliases: ['kabigon'],\n      classification: 'Sleeping Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/snorlax.mp3',\n      respelling: 'SNORE-lacks',\n      ipa: '/ˈsnɔərlæks/'\n    }\n  ],\n  [\n    'snorlaxgmax',\n    {\n      abilities: { first: 'immunity', second: 'thickfat', hidden: 'gluttony' },\n      baseSpecies: 'snorlax',\n      baseStats: { hp: 160, atk: 110, def: 65, spa: 65, spd: 110, spe: 30 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Black',\n      eggGroups: ['Monster'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 35,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 143,\n      otherFormes: ['snorlax'],\n      species: 'snorlax-gmax',\n      types: [TypesEnum.Normal],\n      weightkg: 980,\n      aliases: ['gigantamax snorlax'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/snorlax.mp3',\n      respelling: 'SNORE-lacks',\n      ipa: '/ˈsnɔərlæks/'\n    }\n  ],\n  [\n    'articuno',\n    {\n      abilities: { first: 'pressure', hidden: 'snowcloak' },\n      baseStats: { hp: 90, atk: 85, def: 100, spa: 95, spd: 125, spe: 85 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 144,\n      otherFormes: ['articunogalar'],\n      species: 'articuno',\n      types: [TypesEnum.Ice, TypesEnum.Flying],\n      weightkg: 55.4,\n      aliases: ['furiizaa'],\n      legendary: true,\n      classification: 'Freeze Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/articuno.mp3',\n      respelling: 'are-ti-KOO-no',\n      ipa: '/ɑːrtɪˈkuːnoʊ/'\n    }\n  ],\n  [\n    'articunogalar',\n    {\n      abilities: { first: 'competitive' },\n      baseSpecies: 'articuno',\n      baseStats: { hp: 90, atk: 85, def: 85, spa: 125, spd: 100, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 144,\n      otherFormes: ['articuno'],\n      species: 'articuno-galar',\n      types: [TypesEnum.Psychic, TypesEnum.Flying],\n      weightkg: 50.9,\n      legendary: true,\n      classification: 'Cruel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/articuno.mp3',\n      respelling: 'are-ti-KOO-no',\n      ipa: '/ɑːrtɪˈkuːnoʊ/'\n    }\n  ],\n  [\n    'zapdos',\n    {\n      abilities: { first: 'pressure', hidden: 'static' },\n      baseStats: { hp: 90, atk: 90, def: 85, spa: 125, spd: 90, spe: 100 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 145,\n      otherFormes: ['zapdosgalar'],\n      species: 'zapdos',\n      types: [TypesEnum.Electric, TypesEnum.Flying],\n      weightkg: 52.6,\n      aliases: ['sandaa'],\n      legendary: true,\n      classification: 'Electric Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zapdos.mp3',\n      respelling: 'ZAP-dose',\n      ipa: '/ˈzæpdoʊs/'\n    }\n  ],\n  [\n    'zapdosgalar',\n    {\n      abilities: { first: 'defiant' },\n      baseSpecies: 'zapdos',\n      baseStats: { hp: 90, atk: 125, def: 90, spa: 85, spd: 90, spe: 100 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 145,\n      otherFormes: ['zapdos'],\n      species: 'zapdos-galar',\n      types: [TypesEnum.Fighting, TypesEnum.Flying],\n      weightkg: 58.2,\n      legendary: true,\n      classification: 'Strong Legs Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zapdos.mp3',\n      respelling: 'ZAP-dose',\n      ipa: '/ˈzæpdoʊs/'\n    }\n  ],\n  [\n    'moltres',\n    {\n      abilities: { first: 'pressure', hidden: 'flamebody' },\n      baseStats: { hp: 90, atk: 100, def: 90, spa: 125, spd: 85, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 146,\n      otherFormes: ['moltresgalar'],\n      species: 'moltres',\n      types: [TypesEnum.Fire, TypesEnum.Flying],\n      weightkg: 60,\n      aliases: ['faiyaa'],\n      legendary: true,\n      classification: 'Flame Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/moltres.mp3',\n      respelling: 'MOLE-trace',\n      ipa: '/ˈmoʊltreɪs/'\n    }\n  ],\n  [\n    'moltresgalar',\n    {\n      abilities: { first: 'berserk' },\n      baseSpecies: 'moltres',\n      baseStats: { hp: 90, atk: 85, def: 90, spa: 100, spd: 125, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 146,\n      otherFormes: ['moltres'],\n      species: 'moltres-galar',\n      types: [TypesEnum.Dark, TypesEnum.Flying],\n      weightkg: 66,\n      legendary: true,\n      classification: 'Malevolent Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/moltres.mp3',\n      respelling: 'MOLE-trace',\n      ipa: '/ˈmoʊltreɪs/'\n    }\n  ],\n  [\n    'dratini',\n    {\n      abilities: { first: 'shedskin', hidden: 'marvelscale' },\n      baseStats: { hp: 41, atk: 64, def: 45, spa: 50, spd: 50, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['dragonair'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 147,\n      species: 'dratini',\n      types: [TypesEnum.Dragon],\n      weightkg: 3.3,\n      aliases: ['miniryuu'],\n      classification: 'Dragon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dratini.mp3',\n      respelling: 'druh-TEE-nee',\n      ipa: '/drəˈtiːniː/'\n    }\n  ],\n  [\n    'dragonair',\n    {\n      abilities: { first: 'shedskin', hidden: 'marvelscale' },\n      baseStats: { hp: 61, atk: 84, def: 65, spa: 70, spd: 70, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      evos: ['dragonite'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 148,\n      prevo: 'dratini',\n      species: 'dragonair',\n      types: [TypesEnum.Dragon],\n      weightkg: 16.5,\n      aliases: ['hakuryuu'],\n      classification: 'Dragon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dragonair.mp3',\n      respelling: 'drag-uh-NAIR',\n      ipa: '/dræɡəˈnɛər/'\n    }\n  ],\n  [\n    'dragonite',\n    {\n      abilities: { first: 'innerfocus', hidden: 'multiscale' },\n      baseStats: { hp: 91, atk: 134, def: 95, spa: 100, spd: 100, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 55,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 149,\n      prevo: 'dragonair',\n      species: 'dragonite',\n      otherFormes: ['dragonitemega'],\n      types: [TypesEnum.Dragon, TypesEnum.Flying],\n      weightkg: 210,\n      aliases: ['dnite', 'favna', 'kairyuu'],\n      classification: 'Dragon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dragonite.mp3',\n      respelling: 'drag-uh-NITE',\n      ipa: '/dræɡəˈnaɪt/'\n    }\n  ],\n  [\n    'dragonitemega',\n    {\n      abilities: { first: 'multiscale' },\n      baseStats: { hp: 91, atk: 124, def: 115, spa: 145, spd: 125, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      baseSpecies: 'dragonite',\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 149,\n      otherFormes: ['dragonite'],\n      species: 'dragonite-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Flying],\n      weightkg: 290,\n      aliases: ['megadnite', 'megafavna', 'kairyuu-mega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dragonite.mp3',\n      respelling: 'drag-uh-NITE',\n      ipa: '/dræɡəˈnaɪt/'\n    }\n  ],\n  [\n    'mewtwo',\n    {\n      abilities: { first: 'pressure', hidden: 'unnerve' },\n      baseStats: { hp: 106, atk: 110, def: 90, spa: 154, spd: 90, spe: 130 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 150,\n      otherFormes: ['mewtwomegax', 'mewtwomegay'],\n      species: 'mewtwo',\n      types: [TypesEnum.Psychic],\n      weightkg: 122,\n      aliases: ['m2', 'myuutsuu'],\n      legendary: true,\n      classification: 'Genetic Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mewtwo.mp3',\n      respelling: 'MYU-too',\n      ipa: '/ˈmjuːtuː/'\n    }\n  ],\n  [\n    'mewtwomegax',\n    {\n      abilities: { first: 'steadfast' },\n      baseSpecies: 'mewtwo',\n      baseStats: { hp: 106, atk: 190, def: 100, spa: 154, spd: 100, spe: 130 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega-X',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 150,\n      otherFormes: ['mewtwo', 'mewtwomegay'],\n      species: 'mewtwo-mega-x',\n      types: [TypesEnum.Psychic, TypesEnum.Fighting],\n      weightkg: 127,\n      aliases: ['megamewtwox', 'mmx'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mewtwo-megax.mp3',\n      respelling: 'MYU-too',\n      ipa: '/ˈmjuːtuː/'\n    }\n  ],\n  [\n    'mewtwomegay',\n    {\n      abilities: { first: 'insomnia' },\n      baseSpecies: 'mewtwo',\n      baseStats: { hp: 106, atk: 150, def: 70, spa: 194, spd: 120, spe: 140 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega-Y',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 150,\n      otherFormes: ['mewtwo', 'mewtwomegax'],\n      species: 'mewtwo-mega-y',\n      types: [TypesEnum.Psychic],\n      weightkg: 33,\n      aliases: ['megamewtwo', 'megamewtwoy', 'mmy'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mewtwo-megay.mp3',\n      respelling: 'MYU-too',\n      ipa: '/ˈmjuːtuː/'\n    }\n  ],\n  [\n    'mew',\n    {\n      abilities: { first: 'synchronize' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: false,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 30840,\n      num: 151,\n      species: 'mew',\n      types: [TypesEnum.Psychic],\n      weightkg: 4,\n      aliases: ['myuu'],\n      mythical: true,\n      classification: 'New Species Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mew.mp3',\n      respelling: 'myu',\n      ipa: '/mjuː/'\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/gen2.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'chikorita',\n    {\n      abilities: { first: 'overgrow', hidden: 'leafguard' },\n      baseStats: { hp: 45, atk: 49, def: 65, spa: 49, spd: 65, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['bayleef'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 152,\n      species: 'chikorita',\n      types: [TypesEnum.Grass],\n      weightkg: 6.4,\n      aliases: ['chikoriita'],\n      classification: 'Leaf Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chikorita.mp3',\n      respelling: 'chick-or-EEE-tuh',\n      ipa: '/tʃɪkɔːrˈiːtə/'\n    }\n  ],\n  [\n    'bayleef',\n    {\n      abilities: { first: 'overgrow', hidden: 'leafguard' },\n      baseStats: { hp: 60, atk: 62, def: 80, spa: 63, spd: 80, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 16,\n      evos: ['meganium'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 153,\n      prevo: 'chikorita',\n      species: 'bayleef',\n      types: [TypesEnum.Grass],\n      weightkg: 15.8,\n      aliases: ['beiriifu'],\n      classification: 'Leaf Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bayleef.mp3',\n      respelling: 'BAY-leef',\n      ipa: '/ˈbeɪliːf/'\n    }\n  ],\n  [\n    'meganium',\n    {\n      abilities: { first: 'overgrow', hidden: 'leafguard' },\n      baseStats: { hp: 80, atk: 82, def: 100, spa: 83, spd: 100, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 154,\n      prevo: 'bayleef',\n      species: 'meganium',\n      otherFormes: ['meganiummega'],\n      types: [TypesEnum.Grass],\n      weightkg: 100.5,\n      aliases: ['meganiumu'],\n      classification: 'Herb Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meganium.mp3',\n      respelling: 'muh-GAY-knee-um',\n      ipa: '/məˈɡeɪniː.ʌm/'\n    }\n  ],\n  [\n    'meganiummega',\n    {\n      abilities: { first: 'megasol' },\n      baseStats: { hp: 80, atk: 92, def: 115, spa: 143, spd: 115, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      baseSpecies: 'meganium',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 2, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 154,\n      otherFormes: ['meganium'],\n      species: 'meganium-mega',\n      types: [TypesEnum.Grass, TypesEnum.Fairy],\n      weightkg: 201,\n      aliases: ['meganiumumega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meganium.mp3',\n      respelling: 'muh-GAY-knee-um',\n      ipa: '/məˈɡeɪniː.ʌm/'\n    }\n  ],\n  [\n    'cyndaquil',\n    {\n      abilities: { first: 'blaze', hidden: 'flashfire' },\n      baseStats: { hp: 39, atk: 52, def: 43, spa: 60, spd: 50, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['quilava'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 155,\n      species: 'cyndaquil',\n      types: [TypesEnum.Fire],\n      weightkg: 7.9,\n      aliases: ['hinoarashi'],\n      classification: 'Fire Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cyndaquil.mp3',\n      respelling: 'SIN-da-qwil',\n      ipa: '/ˈsɪndækwɪl/'\n    }\n  ],\n  [\n    'quilava',\n    {\n      abilities: { first: 'blaze', hidden: 'flashfire' },\n      baseStats: { hp: 58, atk: 64, def: 58, spa: 80, spd: 65, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      evoLevel: 14,\n      evos: ['typhlosion', 'typhlosionhisui'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 156,\n      prevo: 'cyndaquil',\n      species: 'quilava',\n      types: [TypesEnum.Fire],\n      weightkg: 19,\n      aliases: ['magumarashi'],\n      classification: 'Volcano Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/quilava.mp3',\n      respelling: 'qwi-LAVA',\n      ipa: '/kwɪˈlɑːvə/'\n    }\n  ],\n  [\n    'typhlosion',\n    {\n      abilities: { first: 'blaze', hidden: 'flashfire' },\n      baseStats: { hp: 78, atk: 84, def: 78, spa: 109, spd: 85, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 157,\n      otherFormes: ['typhlosionhisui'],\n      prevo: 'quilava',\n      species: 'typhlosion',\n      types: [TypesEnum.Fire],\n      weightkg: 79.5,\n      aliases: ['bakufuun'],\n      classification: 'Volcano Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/typhlosion.mp3',\n      respelling: 'tie-FLOW-sion',\n      ipa: '/taɪˈfloʊʒən/'\n    }\n  ],\n  [\n    'typhlosionhisui',\n    {\n      abilities: { first: 'blaze', hidden: 'frisk' },\n      baseSpecies: 'typhlosion',\n      baseStats: { hp: 73, atk: 84, def: 78, spa: 119, spd: 85, spe: 95 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 36,\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 157,\n      otherFormes: ['typhlosion'],\n      prevo: 'quilava',\n      species: 'typhlosion-hisui',\n      types: [TypesEnum.Fire, TypesEnum.Ghost],\n      weightkg: 69.8,\n      aliases: ['hisuiantyphlosion', 'typhlosionh'],\n      classification: 'Ghost Flame Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/typhlosion.mp3',\n      respelling: 'tie-FLOW-sion',\n      ipa: '/taɪˈfloʊʒən/'\n    }\n  ],\n  [\n    'totodile',\n    {\n      abilities: { first: 'torrent', hidden: 'sheerforce' },\n      baseStats: { hp: 50, atk: 65, def: 64, spa: 44, spd: 48, spe: 43 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['croconaw'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 158,\n      species: 'totodile',\n      types: [TypesEnum.Water],\n      weightkg: 9.5,\n      aliases: ['waninoko'],\n      classification: 'Big Jaw Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/totodile.mp3',\n      respelling: 'TOT-o-dile',\n      ipa: '/ˈtɒtɒdaɪl/'\n    }\n  ],\n  [\n    'croconaw',\n    {\n      abilities: { first: 'torrent', hidden: 'sheerforce' },\n      baseStats: { hp: 65, atk: 80, def: 80, spa: 59, spd: 63, spe: 58 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 18,\n      evos: ['feraligatr'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 159,\n      prevo: 'totodile',\n      species: 'croconaw',\n      types: [TypesEnum.Water],\n      weightkg: 25,\n      aliases: ['arigeitsu'],\n      classification: 'Big Jaw Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/croconaw.mp3',\n      respelling: 'CROCK-o-naw',\n      ipa: '/ˈkrɒkɒnɔː/'\n    }\n  ],\n  [\n    'feraligatr',\n    {\n      abilities: { first: 'torrent', hidden: 'sheerforce' },\n      baseStats: { hp: 85, atk: 105, def: 100, spa: 79, spd: 83, spe: 78 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 2, def: 1, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 160,\n      prevo: 'croconaw',\n      species: 'feraligatr',\n      otherFormes: ['feraligatrmega'],\n      types: [TypesEnum.Water],\n      weightkg: 88.8,\n      aliases: ['gatr', 'oodairu'],\n      classification: 'Big Jaw Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/feraligatr.mp3',\n      respelling: 'fur-AL-i-gay-ter',\n      ipa: '/fɜːrˈælɪɡeɪtər/'\n    }\n  ],\n  [\n    'feraligatrmega',\n    {\n      abilities: { first: 'dragonize' },\n      baseStats: { hp: 85, atk: 160, def: 125, spa: 89, spd: 93, spe: 78 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      baseSpecies: 'feraligatr',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 2, def: 1, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 160,\n      otherFormes: ['feraligatr'],\n      species: 'feraligatr-mega',\n      types: [TypesEnum.Water, TypesEnum.Dragon],\n      weightkg: 108,\n      aliases: ['gatrmega', 'oodairumega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/feraligatr.mp3',\n      respelling: 'fur-AL-i-gay-ter',\n      ipa: '/fɜːrˈælɪɡeɪtər/',\n      classification: 'Double Jaw Pokémon'\n    }\n  ],\n  [\n    'sentret',\n    {\n      abilities: { first: 'runaway', second: 'keeneye', hidden: 'frisk' },\n      baseStats: { hp: 35, atk: 46, def: 34, spa: 35, spd: 45, spe: 20 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['furret'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 161,\n      species: 'sentret',\n      types: [TypesEnum.Normal],\n      weightkg: 6,\n      aliases: ['otachi'],\n      classification: 'Scout Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sentret.mp3',\n      respelling: 'SEN-trit',\n      ipa: '/ˈsɛntrɪt/'\n    }\n  ],\n  [\n    'furret',\n    {\n      abilities: { first: 'runaway', second: 'keeneye', hidden: 'frisk' },\n      baseStats: { hp: 85, atk: 76, def: 64, spa: 45, spd: 55, spe: 90 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 15,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 162,\n      prevo: 'sentret',\n      species: 'furret',\n      types: [TypesEnum.Normal],\n      weightkg: 32.5,\n      aliases: ['ootachi'],\n      classification: 'Long Body Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/furret.mp3',\n      respelling: 'FUR-et',\n      ipa: '/ˈfɜːrɛt/'\n    }\n  ],\n  [\n    'hoothoot',\n    {\n      abilities: { first: 'insomnia', second: 'keeneye', hidden: 'tintedlens' },\n      baseStats: { hp: 60, atk: 30, def: 30, spa: 36, spd: 56, spe: 50 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['noctowl'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 163,\n      species: 'hoothoot',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 21.2,\n      aliases: ['hoohoo'],\n      classification: 'Owl Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hoothoot.mp3',\n      respelling: 'HOOT-hoot',\n      ipa: '/ˈhuːtˌhuːt/'\n    }\n  ],\n  [\n    'noctowl',\n    {\n      abilities: { first: 'insomnia', second: 'keeneye', hidden: 'tintedlens' },\n      baseStats: { hp: 100, atk: 50, def: 50, spa: 86, spd: 96, spe: 70 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 164,\n      prevo: 'hoothoot',\n      species: 'noctowl',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 40.8,\n      aliases: ['yorunozuku'],\n      classification: 'Owl Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/noctowl.mp3',\n      respelling: 'NOCT-owl',\n      ipa: '/ˈnɒktaʊl/'\n    }\n  ],\n  [\n    'ledyba',\n    {\n      abilities: { first: 'swarm', second: 'earlybird', hidden: 'rattled' },\n      baseStats: { hp: 40, atk: 20, def: 30, spa: 40, spd: 80, spe: 55 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['ledian'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 165,\n      species: 'ledyba',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 10.8,\n      aliases: ['rediba'],\n      classification: 'Five Star Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ledyba.mp3',\n      respelling: 'LAY-dee-bah',\n      ipa: '/ˈleɪdiːbɑː/'\n    }\n  ],\n  [\n    'ledian',\n    {\n      abilities: { first: 'swarm', second: 'earlybird', hidden: 'ironfist' },\n      baseStats: { hp: 55, atk: 35, def: 50, spa: 55, spd: 110, spe: 85 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 18,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 166,\n      prevo: 'ledyba',\n      species: 'ledian',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 35.6,\n      aliases: ['redian'],\n      classification: 'Five Star Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ledian.mp3',\n      respelling: 'LAY-dee-on',\n      ipa: '/ˈleɪdiː.ɒn/'\n    }\n  ],\n  [\n    'spinarak',\n    {\n      abilities: { first: 'swarm', second: 'insomnia', hidden: 'sniper' },\n      baseStats: { hp: 40, atk: 60, def: 40, spa: 40, spd: 40, spe: 30 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['ariados'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 167,\n      species: 'spinarak',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 8.5,\n      aliases: ['itomaru'],\n      classification: 'String Spit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spinarak.mp3',\n      respelling: 'SPIN-a-rack',\n      ipa: '/ˈspɪnæræk/'\n    }\n  ],\n  [\n    'ariados',\n    {\n      abilities: { first: 'swarm', second: 'insomnia', hidden: 'sniper' },\n      baseStats: { hp: 70, atk: 90, def: 70, spa: 60, spd: 70, spe: 40 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 22,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 168,\n      prevo: 'spinarak',\n      species: 'ariados',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 33.5,\n      aliases: ['ariadosu'],\n      classification: 'Long Leg Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ariados.mp3',\n      respelling: 'ARE-ee-a-dos',\n      ipa: '/ˈɑːriːædɒs/'\n    }\n  ],\n  [\n    'crobat',\n    {\n      abilities: { first: 'innerfocus', hidden: 'infiltrator' },\n      baseStats: { hp: 85, atk: 90, def: 80, spa: 70, spd: 80, spe: 130 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Purple',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 23,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 169,\n      prevo: 'golbat',\n      species: 'crobat',\n      types: [TypesEnum.Poison, TypesEnum.Flying],\n      weightkg: 75,\n      aliases: ['kurobatto'],\n      classification: 'Bat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/crobat.mp3',\n      respelling: 'CROW-bat',\n      ipa: '/ˈkroʊbæt/'\n    }\n  ],\n  [\n    'chinchou',\n    {\n      abilities: {\n        first: 'voltabsorb',\n        second: 'illuminate',\n        hidden: 'waterabsorb'\n      },\n      baseStats: { hp: 75, atk: 38, def: 38, spa: 56, spd: 56, spe: 67 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['lanturn'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 170,\n      species: 'chinchou',\n      types: [TypesEnum.Water, TypesEnum.Electric],\n      weightkg: 12,\n      aliases: ['chonchii'],\n      classification: 'Angler Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chinchou.mp3',\n      respelling: 'CHIN-chow',\n      ipa: '/ˈtʃɪntʃaʊ/'\n    }\n  ],\n  [\n    'lanturn',\n    {\n      abilities: {\n        first: 'voltabsorb',\n        second: 'illuminate',\n        hidden: 'waterabsorb'\n      },\n      baseStats: { hp: 125, atk: 58, def: 58, spa: 76, spd: 76, spe: 67 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 27,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 171,\n      prevo: 'chinchou',\n      species: 'lanturn',\n      types: [TypesEnum.Water, TypesEnum.Electric],\n      weightkg: 22.5,\n      aliases: ['rantaan'],\n      classification: 'Light Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lanturn.mp3',\n      respelling: 'LAN-turn',\n      ipa: '/ˈlæntɜːrn/'\n    }\n  ],\n  [\n    'pichu',\n    {\n      abilities: { first: 'static', hidden: 'lightningrod' },\n      baseStats: { hp: 20, atk: 40, def: 15, spa: 35, spd: 35, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['pikachu'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 172,\n      otherFormes: ['pichuspikyeared'],\n      species: 'pichu',\n      types: [TypesEnum.Electric],\n      weightkg: 2,\n      aliases: ['pichuu'],\n      classification: 'Tiny Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pichu.mp3',\n      respelling: 'PEE-chew',\n      ipa: '/ˈpiːtʃuː/'\n    }\n  ],\n  [\n    'pichuspikyeared',\n    {\n      abilities: { first: 'static' },\n      baseSpecies: 'pichu',\n      baseStats: { hp: 20, atk: 40, def: 15, spa: 35, spd: 35, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      forme: 'Spiky-eared',\n      formeLetter: 'S',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 172,\n      otherFormes: ['pichu'],\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen4-back/pichu-spikyeared.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen4-back-shiny/pichu-spikyeared.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen4-shiny/pichu-spikyeared.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen4/pichu-spikyeared.png',\n      species: 'pichu-spiky-eared',\n      types: [TypesEnum.Electric],\n      weightkg: 2,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pichu.mp3',\n      respelling: 'PEE-chew',\n      ipa: '/ˈpiːtʃuː/'\n    }\n  ],\n  [\n    'cleffa',\n    {\n      abilities: {\n        first: 'cutecharm',\n        second: 'magicguard',\n        hidden: 'friendguard'\n      },\n      baseStats: { hp: 50, atk: 25, def: 28, spa: 45, spd: 55, spe: 15 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['clefairy'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 173,\n      species: 'cleffa',\n      types: [TypesEnum.Fairy],\n      weightkg: 3,\n      aliases: ['py'],\n      classification: 'Star Shape Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cleffa.mp3',\n      respelling: 'CLEFF-ah',\n      ipa: '/ˈklɛfɑː/'\n    }\n  ],\n  [\n    'igglybuff',\n    {\n      abilities: {\n        first: 'cutecharm',\n        second: 'competitive',\n        hidden: 'friendguard'\n      },\n      baseStats: { hp: 90, atk: 30, def: 15, spa: 40, spd: 20, spe: 15 },\n      catchRate: {\n        base: 170,\n        percentageWithOrdinaryPokeballAtFullHealth: '32.4%'\n      },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['jigglypuff'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 174,\n      species: 'igglybuff',\n      types: [TypesEnum.Normal, TypesEnum.Fairy],\n      weightkg: 1,\n      aliases: ['pupurin'],\n      classification: 'Balloon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/igglybuff.mp3',\n      respelling: 'IGG-lee-buff',\n      ipa: '/ˈɪɡliːbʌf/'\n    }\n  ],\n  [\n    'togepi',\n    {\n      abilities: { first: 'hustle', second: 'serenegrace', hidden: 'superluck' },\n      baseStats: { hp: 35, atk: 20, def: 65, spa: 40, spd: 65, spe: 20 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['togetic'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 175,\n      species: 'togepi',\n      types: [TypesEnum.Fairy],\n      weightkg: 1.5,\n      aliases: ['togepii'],\n      classification: 'Spike Ball Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/togepi.mp3',\n      respelling: 'TOE-gah-pee',\n      ipa: '/ˈtoʊɡɑːpiː/'\n    }\n  ],\n  [\n    'togetic',\n    {\n      abilities: { first: 'hustle', second: 'serenegrace', hidden: 'superluck' },\n      baseStats: { hp: 55, atk: 40, def: 85, spa: 80, spd: 105, spe: 40 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'White',\n      eggGroups: ['Flying', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 2,\n      evos: ['togekiss'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 176,\n      prevo: 'togepi',\n      species: 'togetic',\n      types: [TypesEnum.Fairy, TypesEnum.Flying],\n      weightkg: 3.2,\n      aliases: ['togechikku'],\n      classification: 'Happiness Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/togetic.mp3',\n      respelling: 'TOE-geh-tick',\n      ipa: '/ˈtoʊɡɛtɪk/'\n    }\n  ],\n  [\n    'natu',\n    {\n      abilities: {\n        first: 'synchronize',\n        second: 'earlybird',\n        hidden: 'magicbounce'\n      },\n      baseStats: { hp: 40, atk: 50, def: 45, spa: 70, spd: 45, spe: 70 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['xatu'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 177,\n      species: 'natu',\n      types: [TypesEnum.Psychic, TypesEnum.Flying],\n      weightkg: 2,\n      aliases: ['neitei'],\n      classification: 'Tiny Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/natu.mp3',\n      respelling: 'NAH-too',\n      ipa: '/ˈnɑːtuː/'\n    }\n  ],\n  [\n    'xatu',\n    {\n      abilities: {\n        first: 'synchronize',\n        second: 'earlybird',\n        hidden: 'magicbounce'\n      },\n      baseStats: { hp: 65, atk: 75, def: 70, spa: 95, spd: 70, spe: 95 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      evoLevel: 25,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 178,\n      prevo: 'natu',\n      species: 'xatu',\n      types: [TypesEnum.Psychic, TypesEnum.Flying],\n      weightkg: 15,\n      aliases: ['neiteio'],\n      classification: 'Mystic Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/xatu.mp3',\n      respelling: 'ZAH-too',\n      ipa: '/ˈzɑːtuː/'\n    }\n  ],\n  [\n    'mareep',\n    {\n      abilities: { first: 'static', hidden: 'plus' },\n      baseStats: { hp: 55, atk: 40, def: 40, spa: 65, spd: 45, spe: 35 },\n      catchRate: {\n        base: 235,\n        percentageWithOrdinaryPokeballAtFullHealth: '41.3%'\n      },\n      color: 'White',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['flaaffy'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 179,\n      species: 'mareep',\n      types: [TypesEnum.Electric],\n      weightkg: 7.8,\n      aliases: ['meriipu'],\n      classification: 'Wool Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mareep.mp3',\n      respelling: 'ma-REEP',\n      ipa: '/ˈmæriːp/'\n    }\n  ],\n  [\n    'flaaffy',\n    {\n      abilities: { first: 'static', hidden: 'plus' },\n      baseStats: { hp: 70, atk: 55, def: 55, spa: 80, spd: 60, spe: 45 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 15,\n      evos: ['ampharos'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 180,\n      prevo: 'mareep',\n      species: 'flaaffy',\n      types: [TypesEnum.Electric],\n      weightkg: 13.3,\n      aliases: ['mokoko'],\n      classification: 'Wool Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/flaaffy.mp3',\n      respelling: 'FLAAH-fee',\n      ipa: '/ˈflɑːfiː/'\n    }\n  ],\n  [\n    'ampharos',\n    {\n      abilities: { first: 'static', hidden: 'plus' },\n      baseStats: { hp: 90, atk: 75, def: 85, spa: 115, spd: 90, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 181,\n      otherFormes: ['ampharosmega'],\n      prevo: 'flaaffy',\n      species: 'ampharos',\n      types: [TypesEnum.Electric],\n      weightkg: 61.5,\n      aliases: ['amph', 'denryuu'],\n      classification: 'Light Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ampharos.mp3',\n      respelling: 'AM-fah-ross',\n      ipa: '/ˈæmfɑːrɒs/'\n    }\n  ],\n  [\n    'ampharosmega',\n    {\n      abilities: { first: 'moldbreaker' },\n      baseSpecies: 'ampharos',\n      baseStats: { hp: 90, atk: 95, def: 105, spa: 165, spd: 110, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 181,\n      otherFormes: ['ampharos'],\n      species: 'ampharos-mega',\n      types: [TypesEnum.Electric, TypesEnum.Dragon],\n      weightkg: 61.5,\n      aliases: ['fabio', 'shep'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ampharos-mega.mp3',\n      respelling: 'AM-fah-ross',\n      ipa: '/ˈæmfɑːrɒs/'\n    }\n  ],\n  [\n    'bellossom',\n    {\n      abilities: { first: 'chlorophyll', hidden: 'healer' },\n      baseStats: { hp: 75, atk: 80, def: 95, spa: 90, spd: 100, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 'use Sun Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 182,\n      prevo: 'gloom',\n      species: 'bellossom',\n      types: [TypesEnum.Grass],\n      weightkg: 5.8,\n      aliases: ['kireihana'],\n      classification: 'Flower Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bellossom.mp3',\n      respelling: 'bell-AWE-sum',\n      ipa: '/bɛlˈɔːsʌm/'\n    }\n  ],\n  [\n    'marill',\n    {\n      abilities: { first: 'thickfat', second: 'hugepower', hidden: 'sapsipper' },\n      baseStats: { hp: 70, atk: 20, def: 50, spa: 20, spd: 50, spe: 40 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Fairy'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up with happiness of at least 220',\n      evos: ['azumarill'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 183,\n      prevo: 'azurill',\n      species: 'marill',\n      types: [TypesEnum.Water, TypesEnum.Fairy],\n      weightkg: 8.5,\n      aliases: ['mariru'],\n      classification: 'Aqua Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/marill.mp3',\n      respelling: 'MARE-ill',\n      ipa: '/ˈmɛərɪl/'\n    }\n  ],\n  [\n    'azumarill',\n    {\n      abilities: { first: 'thickfat', second: 'hugepower', hidden: 'sapsipper' },\n      baseStats: { hp: 100, atk: 50, def: 80, spa: 60, spd: 80, spe: 50 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Fairy'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 18,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 184,\n      prevo: 'marill',\n      species: 'azumarill',\n      types: [TypesEnum.Water, TypesEnum.Fairy],\n      weightkg: 28.5,\n      aliases: ['azu', 'mariruri'],\n      classification: 'Aqua Rabbit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/azumarill.mp3',\n      respelling: 'ah-ZOO-mare-ill',\n      ipa: '/ɑːˈzuːmɛərɪl/'\n    }\n  ],\n  [\n    'sudowoodo',\n    {\n      abilities: { first: 'sturdy', second: 'rockhead', hidden: 'rattled' },\n      baseStats: { hp: 70, atk: 100, def: 115, spa: 30, spd: 65, spe: 30 },\n      catchRate: { base: 65, percentageWithOrdinaryPokeballAtFullHealth: '15.7%' },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up while knowing Mimic',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 185,\n      prevo: 'bonsly',\n      species: 'sudowoodo',\n      types: [TypesEnum.Rock],\n      weightkg: 38,\n      aliases: ['usokkii'],\n      classification: 'Imitation Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sudowoodo.mp3',\n      respelling: 'Sood-',\n      ipa: '/suːdˈoʊwʊdˌɒ/'\n    }\n  ],\n  [\n    'politoed',\n    {\n      abilities: { first: 'waterabsorb', second: 'damp', hidden: 'drizzle' },\n      baseStats: { hp: 90, atk: 75, def: 75, spa: 90, spd: 100, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: \"Trade while holding King's Rock\",\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 186,\n      prevo: 'poliwhirl',\n      species: 'politoed',\n      types: [TypesEnum.Water],\n      weightkg: 33.9,\n      aliases: ['nyorotono', 'toed'],\n      classification: 'Frog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/politoed.mp3',\n      respelling: 'PAUL-ee-toad',\n      ipa: '/ˈpɔːliːtoʊd/'\n    }\n  ],\n  [\n    'hoppip',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'leafguard',\n        hidden: 'infiltrator'\n      },\n      baseStats: { hp: 35, atk: 35, def: 40, spa: 35, spd: 55, spe: 50 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['skiploom'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 187,\n      species: 'hoppip',\n      types: [TypesEnum.Grass, TypesEnum.Flying],\n      weightkg: 0.5,\n      aliases: ['hanekko'],\n      classification: 'Cottonweed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hoppip.mp3',\n      respelling: 'HOP-pip',\n      ipa: '/ˈhɒp.pɪp/'\n    }\n  ],\n  [\n    'skiploom',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'leafguard',\n        hidden: 'infiltrator'\n      },\n      baseStats: { hp: 55, atk: 45, def: 50, spa: 45, spd: 65, spe: 80 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 18,\n      evos: ['jumpluff'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 188,\n      prevo: 'hoppip',\n      species: 'skiploom',\n      types: [TypesEnum.Grass, TypesEnum.Flying],\n      weightkg: 1,\n      aliases: ['popokko'],\n      classification: 'Cottonweed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skiploom.mp3',\n      respelling: 'SKIP-ploom',\n      ipa: '/ˈskɪp.pluːm/'\n    }\n  ],\n  [\n    'jumpluff',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'leafguard',\n        hidden: 'infiltrator'\n      },\n      baseStats: { hp: 75, atk: 55, def: 70, spa: 55, spd: 95, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 27,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 189,\n      prevo: 'skiploom',\n      species: 'jumpluff',\n      types: [TypesEnum.Grass, TypesEnum.Flying],\n      weightkg: 3,\n      aliases: ['watakko'],\n      classification: 'Cottonweed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/jumpluff.mp3',\n      respelling: 'JUMP-pluff',\n      ipa: '/ˈdʒʌmp.plʌf/'\n    }\n  ],\n  [\n    'aipom',\n    {\n      abilities: { first: 'runaway', second: 'pickup', hidden: 'skilllink' },\n      baseStats: { hp: 55, atk: 70, def: 55, spa: 40, spd: 55, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['ambipom'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 190,\n      species: 'aipom',\n      types: [TypesEnum.Normal],\n      weightkg: 11.5,\n      aliases: ['eipamu'],\n      classification: 'Long Tail Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aipom.mp3'\n    }\n  ],\n  [\n    'sunkern',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'solarpower',\n        hidden: 'earlybird'\n      },\n      baseStats: { hp: 30, atk: 30, def: 30, spa: 30, spd: 30, spe: 30 },\n      catchRate: {\n        base: 235,\n        percentageWithOrdinaryPokeballAtFullHealth: '41.3%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['sunflora'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 191,\n      species: 'sunkern',\n      types: [TypesEnum.Grass],\n      weightkg: 1.8,\n      aliases: ['himanattsu'],\n      classification: 'Seed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sunkern.mp3',\n      respelling: 'SUN-kern',\n      ipa: '/ˈsʌŋkɜːrn/'\n    }\n  ],\n  [\n    'sunflora',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'solarpower',\n        hidden: 'earlybird'\n      },\n      baseStats: { hp: 75, atk: 75, def: 55, spa: 105, spd: 85, spe: 30 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Sun Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 192,\n      prevo: 'sunkern',\n      species: 'sunflora',\n      types: [TypesEnum.Grass],\n      weightkg: 8.5,\n      aliases: ['kimawari'],\n      classification: 'Sun Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sunflora.mp3',\n      respelling: 'sun-FLOOR-uh',\n      ipa: '/sʌnˈflɔərə/'\n    }\n  ],\n  [\n    'yanma',\n    {\n      abilities: { first: 'speedboost', second: 'compoundeyes', hidden: 'frisk' },\n      baseStats: { hp: 65, atk: 65, def: 45, spa: 75, spd: 45, spe: 95 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['yanmega'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 193,\n      species: 'yanma',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 38,\n      aliases: ['yanyanma'],\n      classification: 'Clear Wing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/yanma.mp3',\n      respelling: 'YAN-mah',\n      ipa: '/ˈjænmɑː/'\n    }\n  ],\n  [\n    'wooper',\n    {\n      abilities: { first: 'damp', second: 'waterabsorb', hidden: 'unaware' },\n      baseStats: { hp: 55, atk: 45, def: 45, spa: 25, spd: 25, spe: 15 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['quagsire'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 194,\n      species: 'wooper',\n      otherFormes: ['wooperpaldea'],\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 8.5,\n      aliases: ['upaa'],\n      classification: 'Water Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wooper.mp3',\n      respelling: 'W',\n      ipa: '/ˈwuːpər/'\n    }\n  ],\n  [\n    'wooperpaldea',\n    {\n      abilities: {\n        first: 'poisonpoint',\n        second: 'waterabsorb',\n        hidden: 'unaware'\n      },\n      baseSpecies: 'wooper',\n      baseStats: { hp: 55, atk: 45, def: 45, spa: 25, spd: 25, spe: 15 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['clodsire'],\n      forme: 'Paldea',\n      formeLetter: 'P',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 194,\n      otherFormes: ['wooper'],\n      species: 'wooper-paldea',\n      types: [TypesEnum.Poison, TypesEnum.Ground],\n      weightkg: 11,\n      aliases: ['wooperp'],\n      classification: 'Poison Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wooper.mp3',\n      respelling: 'W',\n      ipa: '/ˈwuːpər/'\n    }\n  ],\n  [\n    'quagsire',\n    {\n      abilities: { first: 'damp', second: 'waterabsorb', hidden: 'unaware' },\n      baseStats: { hp: 95, atk: 85, def: 85, spa: 65, spd: 65, spe: 35 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 195,\n      prevo: 'wooper',\n      species: 'quagsire',\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 75,\n      aliases: ['nuoo'],\n      classification: 'Water Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/quagsire.mp3',\n      respelling: 'QWAG-sire',\n      ipa: '/ˈkwæɡsaɪər/'\n    }\n  ],\n  [\n    'espeon',\n    {\n      abilities: { first: 'synchronize', hidden: 'magicbounce' },\n      baseStats: { hp: 65, atk: 65, def: 60, spa: 130, spd: 95, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'Level up during Daytime with happiness of at least 220',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 196,\n      prevo: 'eevee',\n      species: 'espeon',\n      types: [TypesEnum.Psychic],\n      weightkg: 26.5,\n      aliases: ['eefi'],\n      classification: 'Sun Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/espeon.mp3',\n      respelling: 'ESS-pee-on',\n      ipa: '/ˈɛspiːɒn/'\n    }\n  ],\n  [\n    'umbreon',\n    {\n      abilities: { first: 'synchronize', hidden: 'innerfocus' },\n      baseStats: { hp: 95, atk: 65, def: 110, spa: 60, spd: 130, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Level up during Nighttime with happiness of at least 220',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 197,\n      prevo: 'eevee',\n      species: 'umbreon',\n      types: [TypesEnum.Dark],\n      weightkg: 27,\n      aliases: ['burakkii'],\n      classification: 'Moonlight Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/umbreon.mp3',\n      respelling: 'UMM-bree-on',\n      ipa: '/ˈʌmbriːɒn/'\n    }\n  ],\n  [\n    'murkrow',\n    {\n      abilities: { first: 'insomnia', second: 'superluck', hidden: 'prankster' },\n      baseStats: { hp: 60, atk: 85, def: 42, spa: 85, spd: 42, spe: 91 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Black',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['honchkrow'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 198,\n      species: 'murkrow',\n      types: [TypesEnum.Dark, TypesEnum.Flying],\n      weightkg: 2.1,\n      aliases: ['yamikarasu'],\n      classification: 'Darkness Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/murkrow.mp3',\n      respelling: 'MUR-krow',\n      ipa: '/ˈmɜːrkroʊ/'\n    }\n  ],\n  [\n    'slowking',\n    {\n      abilities: { first: 'oblivious', second: 'owntempo', hidden: 'regenerator' },\n      baseStats: { hp: 95, atk: 75, def: 80, spa: 100, spd: 110, spe: 30 },\n      catchRate: { base: 70, percentageWithOrdinaryPokeballAtFullHealth: '16.6%' },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: \"Trade while holding King's Rock\",\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 199,\n      otherFormes: ['slowkinggalar'],\n      prevo: 'slowpoke',\n      species: 'slowking',\n      types: [TypesEnum.Water, TypesEnum.Psychic],\n      weightkg: 79.5,\n      aliases: ['yadokingu'],\n      classification: 'Royal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slowking.mp3',\n      respelling: 'SLOW-king',\n      ipa: '/ˈsloʊkɪŋ/'\n    }\n  ],\n  [\n    'slowkinggalar',\n    {\n      abilities: {\n        first: 'curiousmedicine',\n        second: 'owntempo',\n        hidden: 'regenerator'\n      },\n      baseSpecies: 'slowking',\n      baseStats: { hp: 95, atk: 65, def: 80, spa: 110, spd: 110, spe: 30 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 'use Galarica Wreath',\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 199,\n      otherFormes: ['slowking'],\n      prevo: 'slowpokegalar',\n      species: 'slowking-galar',\n      types: [TypesEnum.Poison, TypesEnum.Psychic],\n      weightkg: 79.5,\n      classification: 'Hexpert Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slowking.mp3',\n      respelling: 'SLOW-king',\n      ipa: '/ˈsloʊkɪŋ/'\n    }\n  ],\n  [\n    'misdreavus',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 60, atk: 60, def: 60, spa: 85, spd: 85, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['mismagius'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 200,\n      species: 'misdreavus',\n      types: [TypesEnum.Ghost],\n      weightkg: 1,\n      aliases: ['muuma'],\n      classification: 'Screech Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/misdreavus.mp3',\n      respelling: 'MISS-dreav-us',\n      ipa: '/ˈmɪsdriːvʌs/'\n    }\n  ],\n  [\n    'unown',\n    {\n      abilities: { first: 'levitate' },\n      baseForme: 'A',\n      baseStats: { hp: 48, atk: 72, def: 48, spa: 72, spd: 48, spe: 48 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Black',\n      cosmeticFormes: [\n        'Unown-B',\n        'Unown-C',\n        'Unown-D',\n        'Unown-E',\n        'Unown-F',\n        'Unown-G',\n        'Unown-H',\n        'Unown-I',\n        'Unown-J',\n        'Unown-K',\n        'Unown-L',\n        'Unown-M',\n        'Unown-N',\n        'Unown-O',\n        'Unown-P',\n        'Unown-Q',\n        'Unown-R',\n        'Unown-S',\n        'Unown-T',\n        'Unown-U',\n        'Unown-V',\n        'Unown-W',\n        'Unown-X',\n        'Unown-Y',\n        'Unown-Z',\n        'Unown-Exclamation',\n        'Unown-Question'\n      ],\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.5,\n      isEggObtainable: false,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 10280,\n      num: 201,\n      species: 'unown',\n      types: [TypesEnum.Psychic],\n      weightkg: 5,\n      aliases: [\n        'annoon',\n        'unownb',\n        'unownc',\n        'unownd',\n        'unowne',\n        'unownexclamation',\n        'unownf',\n        'unowng',\n        'unownh',\n        'unowni',\n        'unownj',\n        'unownk',\n        'unownl',\n        'unownm',\n        'unownn',\n        'unowno',\n        'unownp',\n        'unownq',\n        'unownquestion',\n        'unownr',\n        'unowns',\n        'unownt',\n        'unownu',\n        'unownv',\n        'unownw',\n        'unownx',\n        'unowny',\n        'unownz'\n      ],\n      classification: 'Symbol Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/unown.mp3',\n      respelling: 'UN-nown',\n      ipa: '/ˈʌn.noʊn/'\n    }\n  ],\n  [\n    'wobbuffet',\n    {\n      abilities: { first: 'shadowtag', hidden: 'telepathy' },\n      baseStats: { hp: 190, atk: 33, def: 58, spa: 33, spd: 58, spe: 33 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 15,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 202,\n      prevo: 'wynaut',\n      species: 'wobbuffet',\n      types: [TypesEnum.Psychic],\n      weightkg: 28.5,\n      aliases: ['soonansu'],\n      classification: 'Patient Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wobbuffet.mp3',\n      respelling: 'WAH-buff-ett',\n      ipa: '/ˈwɑːbʌfɛt/'\n    }\n  ],\n  [\n    'girafarig',\n    {\n      abilities: { first: 'innerfocus', second: 'earlybird', hidden: 'sapsipper' },\n      baseStats: { hp: 70, atk: 80, def: 65, spa: 90, spd: 65, spe: 85 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evos: ['farigiraf'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 203,\n      species: 'girafarig',\n      types: [TypesEnum.Normal, TypesEnum.Psychic],\n      weightkg: 41.5,\n      aliases: ['kirinriki'],\n      classification: 'Long Neck Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/girafarig.mp3',\n      respelling: 'Jir-AFF-uh-rig',\n      ipa: '/dʒɪrˈæfərɪɡ/'\n    }\n  ],\n  [\n    'pineco',\n    {\n      abilities: { first: 'sturdy', hidden: 'overcoat' },\n      baseStats: { hp: 50, atk: 65, def: 90, spa: 35, spd: 35, spe: 15 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['forretress'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 204,\n      species: 'pineco',\n      types: [TypesEnum.Bug],\n      weightkg: 7.2,\n      aliases: ['kunugidama'],\n      classification: 'Bagworm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pineco.mp3',\n      respelling: 'PINE-k',\n      ipa: '/ˈpaɪŋkoʊ/'\n    }\n  ],\n  [\n    'forretress',\n    {\n      abilities: { first: 'sturdy', hidden: 'overcoat' },\n      baseStats: { hp: 75, atk: 90, def: 140, spa: 60, spd: 60, spe: 40 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 31,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 205,\n      prevo: 'pineco',\n      species: 'forretress',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 125.8,\n      aliases: ['foretosu', 'forry'],\n      classification: 'Bagworm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/forretress.mp3',\n      respelling: 'FOUR-ett-tress',\n      ipa: '/ˈfɔərɛt.trɛs/'\n    }\n  ],\n  [\n    'dunsparce',\n    {\n      abilities: { first: 'serenegrace', second: 'runaway', hidden: 'rattled' },\n      baseStats: { hp: 100, atk: 70, def: 70, spa: 65, spd: 65, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      evos: ['dudunsparce', 'dudunsparcethreesegment'],\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 206,\n      species: 'dunsparce',\n      types: [TypesEnum.Normal],\n      weightkg: 14,\n      aliases: ['nokotchi'],\n      classification: 'Land Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dunsparce.mp3',\n      respelling: 'DUNN-sparce',\n      ipa: '/ˈdʌnspɑːrs/'\n    }\n  ],\n  [\n    'gligar',\n    {\n      abilities: { first: 'hypercutter', second: 'sandveil', hidden: 'immunity' },\n      baseStats: { hp: 65, atk: 75, def: 105, spa: 35, spd: 65, spe: 85 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['gliscor'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 207,\n      species: 'gligar',\n      types: [TypesEnum.Ground, TypesEnum.Flying],\n      weightkg: 64.8,\n      aliases: ['guraigaa'],\n      classification: 'Fly Scorpion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gligar.mp3',\n      respelling: 'GLIE-gar',\n      ipa: '/ˈɡlaɪɡɑːr/'\n    }\n  ],\n  [\n    'steelix',\n    {\n      abilities: { first: 'rockhead', second: 'sturdy', hidden: 'sheerforce' },\n      baseStats: { hp: 75, atk: 85, def: 200, spa: 55, spd: 65, spe: 30 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Metal Coat',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 9.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 208,\n      otherFormes: ['steelixmega'],\n      prevo: 'onix',\n      species: 'steelix',\n      types: [TypesEnum.Steel, TypesEnum.Ground],\n      weightkg: 400,\n      aliases: ['haganeeru'],\n      classification: 'Iron Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/steelix.mp3',\n      respelling: 'STEEL-icks',\n      ipa: '/ˈstiːlɪks/'\n    }\n  ],\n  [\n    'steelixmega',\n    {\n      abilities: { first: 'sandforce' },\n      baseSpecies: 'steelix',\n      baseStats: { hp: 75, atk: 125, def: 230, spa: 55, spd: 95, spe: 30 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 10.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 208,\n      otherFormes: ['steelix'],\n      species: 'steelix-mega',\n      types: [TypesEnum.Steel, TypesEnum.Ground],\n      weightkg: 740,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/steelix-mega.mp3',\n      respelling: 'STEEL-icks',\n      ipa: '/ˈstiːlɪks/'\n    }\n  ],\n  [\n    'snubbull',\n    {\n      abilities: { first: 'intimidate', second: 'runaway', hidden: 'rattled' },\n      baseStats: { hp: 60, atk: 80, def: 50, spa: 40, spd: 40, spe: 30 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Pink',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['granbull'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 209,\n      species: 'snubbull',\n      types: [TypesEnum.Fairy],\n      weightkg: 7.8,\n      aliases: ['buruu'],\n      classification: 'Fairy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/snubbull.mp3',\n      respelling: 'SNUB-bull',\n      ipa: '/ˈsnʌb.bʊl/'\n    }\n  ],\n  [\n    'granbull',\n    {\n      abilities: { first: 'intimidate', second: 'quickfeet', hidden: 'rattled' },\n      baseStats: { hp: 90, atk: 120, def: 75, spa: 60, spd: 60, spe: 45 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 23,\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 210,\n      prevo: 'snubbull',\n      species: 'granbull',\n      types: [TypesEnum.Fairy],\n      weightkg: 48.7,\n      aliases: ['guranburu'],\n      classification: 'Fairy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/granbull.mp3',\n      respelling: 'GRAN-bull',\n      ipa: '/ˈɡrænbʊl/'\n    }\n  ],\n  [\n    'qwilfish',\n    {\n      abilities: {\n        first: 'poisonpoint',\n        second: 'swiftswim',\n        hidden: 'intimidate'\n      },\n      baseStats: { hp: 65, atk: 95, def: 85, spa: 55, spd: 55, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 211,\n      otherFormes: ['qwilfishhisui'],\n      species: 'qwilfish',\n      types: [TypesEnum.Water, TypesEnum.Poison],\n      weightkg: 3.9,\n      aliases: ['hariisen'],\n      classification: 'Balloon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/qwilfish.mp3',\n      respelling: 'QUILL-fish',\n      ipa: '/ˈkwɪlfɪʃ/'\n    }\n  ],\n  [\n    'qwilfishhisui',\n    {\n      abilities: {\n        first: 'poisonpoint',\n        second: 'swiftswim',\n        hidden: 'intimidate'\n      },\n      baseSpecies: 'qwilfish',\n      baseStats: { hp: 65, atk: 95, def: 85, spa: 55, spd: 55, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['overqwil'],\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 211,\n      otherFormes: ['qwilfish'],\n      species: 'qwilfish-hisui',\n      types: [TypesEnum.Dark, TypesEnum.Poison],\n      weightkg: 3.9,\n      aliases: ['hisiuanqwilfish', 'qwilfishh'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/qwilfish.mp3',\n      respelling: 'QUILL-fish',\n      ipa: '/ˈkwɪlfɪʃ/'\n    }\n  ],\n  [\n    'scizor',\n    {\n      abilities: { first: 'swarm', second: 'technician', hidden: 'lightmetal' },\n      baseStats: { hp: 70, atk: 130, def: 100, spa: 55, spd: 80, spe: 65 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Metal Coat',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 212,\n      otherFormes: ['scizormega'],\n      prevo: 'scyther',\n      species: 'scizor',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 118,\n      aliases: ['hassamu', 'zor'],\n      classification: 'Pincer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scizor.mp3',\n      respelling: 'SIE-zor',\n      ipa: '/ˈsaɪzɔːr/'\n    }\n  ],\n  [\n    'scizormega',\n    {\n      abilities: { first: 'technician' },\n      baseSpecies: 'scizor',\n      baseStats: { hp: 70, atk: 150, def: 140, spa: 65, spd: 100, spe: 75 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 212,\n      otherFormes: ['scizor'],\n      species: 'scizor-mega',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 125,\n      aliases: ['mzor'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scizor-mega.mp3',\n      respelling: 'SIE-zor',\n      ipa: '/ˈsaɪzɔːr/'\n    }\n  ],\n  [\n    'shuckle',\n    {\n      abilities: { first: 'sturdy', second: 'gluttony', hidden: 'contrary' },\n      baseStats: { hp: 20, atk: 10, def: 230, spa: 10, spd: 230, spe: 5 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 213,\n      species: 'shuckle',\n      types: [TypesEnum.Bug, TypesEnum.Rock],\n      weightkg: 20.5,\n      aliases: ['tsubotsubo'],\n      classification: 'Mold Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shuckle.mp3',\n      respelling: 'SHUK-ul',\n      ipa: '/ˈʃʌkəl/'\n    }\n  ],\n  [\n    'heracross',\n    {\n      abilities: { first: 'swarm', second: 'guts', hidden: 'moxie' },\n      baseStats: { hp: 80, atk: 125, def: 75, spa: 40, spd: 95, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 214,\n      otherFormes: ['heracrossmega'],\n      species: 'heracross',\n      types: [TypesEnum.Bug, TypesEnum.Fighting],\n      weightkg: 54,\n      aliases: ['hera', 'herakurosu'],\n      classification: 'Single Horn Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/heracross.mp3',\n      respelling: 'HAIR-a-cross',\n      ipa: '/ˈhɛərækrɒs/'\n    }\n  ],\n  [\n    'heracrossmega',\n    {\n      abilities: { first: 'skilllink' },\n      baseSpecies: 'heracross',\n      baseStats: { hp: 80, atk: 185, def: 115, spa: 40, spd: 105, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 214,\n      otherFormes: ['heracross'],\n      species: 'heracross-mega',\n      types: [TypesEnum.Bug, TypesEnum.Fighting],\n      weightkg: 62.5,\n      aliases: ['megacross', 'megahera'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/heracross-mega.mp3',\n      respelling: 'HAIR-a-cross',\n      ipa: '/ˈhɛərækrɒs/'\n    }\n  ],\n  [\n    'sneasel',\n    {\n      abilities: { first: 'innerfocus', second: 'keeneye', hidden: 'pickpocket' },\n      baseStats: { hp: 55, atk: 95, def: 55, spa: 35, spd: 75, spe: 115 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['weavile'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 215,\n      otherFormes: ['sneaselhisui'],\n      species: 'sneasel',\n      types: [TypesEnum.Dark, TypesEnum.Ice],\n      weightkg: 28,\n      aliases: ['nyuura'],\n      classification: 'Sharp Claw Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sneasel.mp3',\n      respelling: 'SNEE-zul',\n      ipa: '/ˈsniːzəl/'\n    }\n  ],\n  [\n    'sneaselhisui',\n    {\n      abilities: { first: 'innerfocus', second: 'keeneye', hidden: 'pickpocket' },\n      baseSpecies: 'sneasel',\n      baseStats: { hp: 55, atk: 95, def: 55, spa: 35, spd: 75, spe: 115 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['sneasler'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 215,\n      otherFormes: ['sneasel'],\n      forme: 'Hisui',\n      formeLetter: 'H',\n      species: 'sneasel-hisui',\n      types: [TypesEnum.Fighting, TypesEnum.Poison],\n      weightkg: 27,\n      aliases: ['hisuiansneasel', 'sneaselh'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sneasel.mp3',\n      respelling: 'SNEE-zul',\n      ipa: '/ˈsniːzəl/'\n    }\n  ],\n  [\n    'teddiursa',\n    {\n      abilities: { first: 'pickup', second: 'quickfeet', hidden: 'honeygather' },\n      baseStats: { hp: 60, atk: 80, def: 50, spa: 50, spd: 50, spe: 40 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['ursaring'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 216,\n      species: 'teddiursa',\n      types: [TypesEnum.Normal],\n      weightkg: 8.8,\n      aliases: ['himeguma'],\n      classification: 'Little Bear Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/teddiursa.mp3',\n      respelling: 'Ted-eee-UR-sa',\n      ipa: '/tɛdiːˈɜːrsæ/'\n    }\n  ],\n  [\n    'ursaring',\n    {\n      abilities: { first: 'guts', second: 'quickfeet', hidden: 'unnerve' },\n      baseStats: { hp: 90, atk: 130, def: 75, spa: 75, spd: 75, spe: 55 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      evos: ['ursaluna'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 217,\n      prevo: 'teddiursa',\n      species: 'ursaring',\n      types: [TypesEnum.Normal],\n      weightkg: 125.8,\n      aliases: ['ringuma'],\n      classification: 'Hibernator Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ursaring.mp3',\n      respelling: 'UR-sa-ring',\n      ipa: '/ˈɜːrsærɪŋ/'\n    }\n  ],\n  [\n    'slugma',\n    {\n      abilities: { first: 'magmaarmor', second: 'flamebody', hidden: 'weakarmor' },\n      baseStats: { hp: 40, atk: 40, def: 40, spa: 70, spd: 40, spe: 20 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Red',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['magcargo'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 218,\n      species: 'slugma',\n      types: [TypesEnum.Fire],\n      weightkg: 35,\n      aliases: ['magumaggu'],\n      classification: 'Lava Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slugma.mp3',\n      respelling: 'SLUG-ma',\n      ipa: '/ˈslʌɡmæ/'\n    }\n  ],\n  [\n    'magcargo',\n    {\n      abilities: { first: 'magmaarmor', second: 'flamebody', hidden: 'weakarmor' },\n      baseStats: { hp: 60, atk: 50, def: 120, spa: 90, spd: 80, spe: 30 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Red',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 219,\n      prevo: 'slugma',\n      species: 'magcargo',\n      types: [TypesEnum.Fire, TypesEnum.Rock],\n      weightkg: 55,\n      aliases: ['magukarugo'],\n      classification: 'Lava Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magcargo.mp3',\n      respelling: 'Mug-CAR-go',\n      ipa: '/məɡˈkɑːrɡoʊ/'\n    }\n  ],\n  [\n    'swinub',\n    {\n      abilities: { first: 'oblivious', second: 'snowcloak', hidden: 'thickfat' },\n      baseStats: { hp: 50, atk: 50, def: 40, spa: 30, spd: 30, spe: 50 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['piloswine'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 220,\n      species: 'swinub',\n      types: [TypesEnum.Ice, TypesEnum.Ground],\n      weightkg: 6.5,\n      aliases: ['urimuu'],\n      classification: 'Pig Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swinub.mp3',\n      respelling: 'SWINE-ub',\n      ipa: '/ˈswaɪnʌb/'\n    }\n  ],\n  [\n    'piloswine',\n    {\n      abilities: { first: 'oblivious', second: 'snowcloak', hidden: 'thickfat' },\n      baseStats: { hp: 100, atk: 100, def: 80, spa: 60, spd: 60, spe: 50 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 1, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 33,\n      evos: ['mamoswine'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 221,\n      prevo: 'swinub',\n      species: 'piloswine',\n      types: [TypesEnum.Ice, TypesEnum.Ground],\n      weightkg: 55.8,\n      aliases: ['inomuu'],\n      classification: 'Swine Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/piloswine.mp3',\n      respelling: 'PILE-a-swine',\n      ipa: '/ˈpaɪlæswaɪn/'\n    }\n  ],\n  [\n    'corsola',\n    {\n      abilities: { first: 'hustle', second: 'naturalcure', hidden: 'regenerator' },\n      baseStats: { hp: 65, atk: 55, def: 95, spa: 65, spd: 95, spe: 35 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Pink',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 222,\n      otherFormes: ['corsolagalar'],\n      species: 'corsola',\n      types: [TypesEnum.Water, TypesEnum.Rock],\n      weightkg: 5,\n      aliases: ['saniigo'],\n      classification: 'Coral Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/corsola.mp3',\n      respelling: 'Course-ola',\n      ipa: '/kɔərsɒlæ/'\n    }\n  ],\n  [\n    'corsolagalar',\n    {\n      abilities: { first: 'weakarmor', second: 'weakarmor', hidden: 'cursedbody' },\n      baseSpecies: 'corsola',\n      baseStats: { hp: 60, atk: 55, def: 100, spa: 65, spd: 100, spe: 30 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      evos: ['cursola'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 222,\n      otherFormes: ['corsola'],\n      species: 'corsola-galar',\n      types: [TypesEnum.Ghost],\n      weightkg: 0.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/corsola.mp3',\n      respelling: 'Course-ola',\n      ipa: '/kɔərsɒlæ/'\n    }\n  ],\n  [\n    'remoraid',\n    {\n      abilities: { first: 'hustle', second: 'sniper', hidden: 'moody' },\n      baseStats: { hp: 35, atk: 65, def: 35, spa: 65, spd: 35, spe: 65 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['octillery'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 223,\n      species: 'remoraid',\n      types: [TypesEnum.Water],\n      weightkg: 12,\n      aliases: ['teppouo'],\n      classification: 'Jet Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/remoraid.mp3',\n      respelling: 'REM-or-aid',\n      ipa: '/ˈrɛmɔːreɪd/'\n    }\n  ],\n  [\n    'octillery',\n    {\n      abilities: { first: 'suctioncups', second: 'sniper', hidden: 'moody' },\n      baseStats: { hp: 75, atk: 105, def: 75, spa: 105, spd: 75, spe: 45 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Red',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      evoLevel: 25,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 224,\n      prevo: 'remoraid',\n      species: 'octillery',\n      types: [TypesEnum.Water],\n      weightkg: 28.5,\n      aliases: ['okutan'],\n      classification: 'Jet Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/octillery.mp3',\n      respelling: 'Ock-TILL-uh-ree',\n      ipa: '/ɒkˈtɪləriː/'\n    }\n  ],\n  [\n    'delibird',\n    {\n      abilities: { first: 'vitalspirit', second: 'hustle', hidden: 'insomnia' },\n      baseStats: { hp: 45, atk: 55, def: 45, spa: 65, spd: 45, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 225,\n      species: 'delibird',\n      types: [TypesEnum.Ice, TypesEnum.Flying],\n      weightkg: 16,\n      aliases: ['deribaado'],\n      classification: 'Delivery Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/delibird.mp3',\n      respelling: 'DEL-i-bird',\n      ipa: '/ˈdɛlɪbɜːrd/'\n    }\n  ],\n  [\n    'mantine',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'waterabsorb',\n        hidden: 'waterveil'\n      },\n      baseStats: { hp: 85, atk: 40, def: 70, spa: 80, spd: 140, spe: 70 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Purple',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Level up with Remoraid in party',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 226,\n      prevo: 'mantyke',\n      species: 'mantine',\n      types: [TypesEnum.Water, TypesEnum.Flying],\n      weightkg: 220,\n      aliases: ['mantain'],\n      classification: 'Kite Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mantine.mp3',\n      respelling: 'MAN-tyne',\n      ipa: '/ˈmæntaɪn/'\n    }\n  ],\n  [\n    'skarmory',\n    {\n      abilities: { first: 'keeneye', second: 'sturdy', hidden: 'weakarmor' },\n      baseStats: { hp: 65, atk: 80, def: 140, spa: 40, spd: 70, spe: 70 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Gray',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 227,\n      species: 'skarmory',\n      otherFormes: ['skarmorymega'],\n      types: [TypesEnum.Steel, TypesEnum.Flying],\n      weightkg: 50.5,\n      aliases: ['eaamudo', 'skarm'],\n      classification: 'Armor Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skarmory.mp3',\n      respelling: 'SCAR-muh-ree',\n      ipa: '/ˈskɑːrməriː/'\n    }\n  ],\n  [\n    'skarmorymega',\n    {\n      abilities: { first: 'stalwart' },\n      baseStats: { hp: 65, atk: 140, def: 110, spa: 40, spd: 100, spe: 110 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Gray',\n      baseSpecies: 'skarmory',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 227,\n      otherFormes: ['skarmory'],\n      species: 'skarmory-mega',\n      types: [TypesEnum.Steel, TypesEnum.Flying],\n      weightkg: 40.4,\n      aliases: ['eaamudomega', 'skarmmega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skarmory.mp3',\n      respelling: 'SCAR-muh-ree',\n      ipa: '/ˈskɑːrməriː/'\n    }\n  ],\n  [\n    'houndour',\n    {\n      abilities: { first: 'earlybird', second: 'flashfire', hidden: 'unnerve' },\n      baseStats: { hp: 45, atk: 60, def: 30, spa: 80, spd: 50, spe: 65 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['houndoom'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 228,\n      species: 'houndour',\n      types: [TypesEnum.Dark, TypesEnum.Fire],\n      weightkg: 10.8,\n      aliases: ['derubiru'],\n      classification: 'Dark Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/houndour.mp3',\n      respelling: 'Hownd-our',\n      ipa: '/haʊndaʊər/'\n    }\n  ],\n  [\n    'houndoom',\n    {\n      abilities: { first: 'earlybird', second: 'flashfire', hidden: 'unnerve' },\n      baseStats: { hp: 75, atk: 90, def: 50, spa: 110, spd: 80, spe: 95 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 24,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 229,\n      otherFormes: ['houndoommega'],\n      prevo: 'houndour',\n      species: 'houndoom',\n      types: [TypesEnum.Dark, TypesEnum.Fire],\n      weightkg: 35,\n      aliases: ['herugaa'],\n      classification: 'Dark Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/houndoom.mp3',\n      respelling: 'Hown-DOOM',\n      ipa: '/haʊnˈduːm/'\n    }\n  ],\n  [\n    'houndoommega',\n    {\n      abilities: { first: 'solarpower' },\n      baseSpecies: 'houndoom',\n      baseStats: { hp: 75, atk: 90, def: 90, spa: 140, spd: 90, spe: 115 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 229,\n      otherFormes: ['houndoom'],\n      species: 'houndoom-mega',\n      types: [TypesEnum.Dark, TypesEnum.Fire],\n      weightkg: 49.5,\n      aliases: ['megadoom'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/houndoom-mega.mp3',\n      respelling: 'Hown-DOOM',\n      ipa: '/haʊnˈduːm/'\n    }\n  ],\n  [\n    'kingdra',\n    {\n      abilities: { first: 'swiftswim', second: 'sniper', hidden: 'damp' },\n      baseStats: { hp: 75, atk: 95, def: 95, spa: 95, spd: 95, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 1, spe: 0 },\n      evoLevel: 'Trade while holding Dragon Scale',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 230,\n      prevo: 'seadra',\n      species: 'kingdra',\n      types: [TypesEnum.Water, TypesEnum.Dragon],\n      weightkg: 152,\n      aliases: ['kingudora'],\n      classification: 'Dragon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kingdra.mp3',\n      respelling: 'KING-dra',\n      ipa: '/ˈkɪŋdræ/'\n    }\n  ],\n  [\n    'phanpy',\n    {\n      abilities: { first: 'pickup', hidden: 'sandveil' },\n      baseStats: { hp: 90, atk: 60, def: 60, spa: 40, spd: 40, spe: 40 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['donphan'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 231,\n      species: 'phanpy',\n      types: [TypesEnum.Ground],\n      weightkg: 33.5,\n      aliases: ['gomazou'],\n      classification: 'Long Nose Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/phanpy.mp3',\n      respelling: 'FAN-pee',\n      ipa: '/ˈfænpiː/'\n    }\n  ],\n  [\n    'donphan',\n    {\n      abilities: { first: 'sturdy', hidden: 'sandveil' },\n      baseStats: { hp: 90, atk: 120, def: 120, spa: 60, spd: 60, spe: 50 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 25,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 232,\n      prevo: 'phanpy',\n      species: 'donphan',\n      types: [TypesEnum.Ground],\n      weightkg: 120,\n      aliases: ['donfan'],\n      classification: 'Armor Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/donphan.mp3',\n      respelling: 'DON-fan',\n      ipa: '/ˈdɒnfæn/'\n    }\n  ],\n  [\n    'porygon2',\n    {\n      abilities: { first: 'trace', second: 'download', hidden: 'analytic' },\n      baseStats: { hp: 85, atk: 80, def: 90, spa: 105, spd: 95, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Up-Grade',\n      evos: ['porygonz'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 233,\n      prevo: 'porygon',\n      species: 'porygon2',\n      types: [TypesEnum.Normal],\n      weightkg: 32.5,\n      aliases: ['p2', 'porigon2', 'pory2'],\n      classification: 'Virtual Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/porygon2.mp3',\n      respelling: 'PORE-ee-gone-too',\n      ipa: '/ˈpɔəriːɡɒːntuː/'\n    }\n  ],\n  [\n    'stantler',\n    {\n      abilities: { first: 'intimidate', second: 'frisk', hidden: 'sapsipper' },\n      baseStats: { hp: 73, atk: 95, def: 62, spa: 85, spd: 65, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['wyrdeer'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 234,\n      species: 'stantler',\n      types: [TypesEnum.Normal],\n      weightkg: 71.2,\n      aliases: ['odoshishi'],\n      classification: 'Big Horn Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/stantler.mp3',\n      respelling: 'STANT-ler',\n      ipa: '/ˈstæntlər/'\n    }\n  ],\n  [\n    'smeargle',\n    {\n      abilities: { first: 'owntempo', second: 'technician', hidden: 'moody' },\n      baseStats: { hp: 55, atk: 20, def: 35, spa: 20, spd: 45, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 235,\n      species: 'smeargle',\n      types: [TypesEnum.Normal],\n      weightkg: 58,\n      aliases: ['dooburu'],\n      classification: 'Painter Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/smeargle.mp3',\n      respelling: 'SMEAR-gull',\n      ipa: '/ˈsmɪərɡʌl/'\n    }\n  ],\n  [\n    'tyrogue',\n    {\n      abilities: { first: 'guts', second: 'steadfast', hidden: 'vitalspirit' },\n      baseStats: { hp: 35, atk: 35, def: 35, spa: 35, spd: 35, spe: 35 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['hitmonlee', 'hitmonchan', 'hitmontop'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 236,\n      species: 'tyrogue',\n      types: [TypesEnum.Fighting],\n      weightkg: 21,\n      aliases: ['barukii'],\n      classification: 'Scuffle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tyrogue.mp3',\n      respelling: 'Ty-ROGE',\n      ipa: '/taɪˈroʊɡ/'\n    }\n  ],\n  [\n    'hitmontop',\n    {\n      abilities: {\n        first: 'intimidate',\n        second: 'technician',\n        hidden: 'steadfast'\n      },\n      baseStats: { hp: 50, atk: 95, def: 95, spa: 35, spd: 110, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Level 20 with Attack = Defense',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 237,\n      prevo: 'tyrogue',\n      species: 'hitmontop',\n      types: [TypesEnum.Fighting],\n      weightkg: 48,\n      aliases: ['kapoeraa'],\n      classification: 'Handstand Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hitmontop.mp3',\n      respelling: 'HIT-mon-top',\n      ipa: '/ˈhɪtmɒntɒp/'\n    }\n  ],\n  [\n    'smoochum',\n    {\n      abilities: { first: 'oblivious', second: 'forewarn', hidden: 'hydration' },\n      baseStats: { hp: 45, atk: 30, def: 15, spa: 85, spd: 65, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['jynx'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 238,\n      species: 'smoochum',\n      types: [TypesEnum.Ice, TypesEnum.Psychic],\n      weightkg: 6,\n      aliases: ['muchuuru'],\n      classification: 'Kiss Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/smoochum.mp3',\n      respelling: 'SMOOCH-um',\n      ipa: '/ˈsmuːtʃʌm/'\n    }\n  ],\n  [\n    'elekid',\n    {\n      abilities: { first: 'static', hidden: 'vitalspirit' },\n      baseStats: { hp: 45, atk: 63, def: 37, spa: 65, spd: 55, spe: 95 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['electabuzz'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 239,\n      species: 'elekid',\n      types: [TypesEnum.Electric],\n      weightkg: 23.5,\n      aliases: ['erekiddo'],\n      classification: 'Electric Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/elekid.mp3',\n      respelling: 'EL-ah-kid',\n      ipa: '/ˈɛləkɪd/'\n    }\n  ],\n  [\n    'magby',\n    {\n      abilities: { first: 'flamebody', hidden: 'vitalspirit' },\n      baseStats: { hp: 45, atk: 75, def: 37, spa: 70, spd: 55, spe: 83 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['magmar'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 240,\n      species: 'magby',\n      types: [TypesEnum.Fire],\n      weightkg: 21.4,\n      aliases: ['buby'],\n      classification: 'Live Coal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magby.mp3',\n      respelling: 'MAG-bee',\n      ipa: '/ˈmæɡbiː/'\n    }\n  ],\n  [\n    'miltank',\n    {\n      abilities: { first: 'thickfat', second: 'scrappy', hidden: 'sapsipper' },\n      baseStats: { hp: 95, atk: 80, def: 105, spa: 40, spd: 70, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 241,\n      species: 'miltank',\n      types: [TypesEnum.Normal],\n      weightkg: 75.5,\n      aliases: ['mirutanku'],\n      classification: 'Milk Cow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/miltank.mp3',\n      respelling: 'MIL-tank',\n      ipa: '/ˈmɪltæŋk/'\n    }\n  ],\n  [\n    'blissey',\n    {\n      abilities: { first: 'naturalcure', second: 'serenegrace', hidden: 'healer' },\n      baseStats: { hp: 255, atk: 10, def: 10, spa: 75, spd: 135, spe: 55 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 10280,\n      num: 242,\n      prevo: 'chansey',\n      species: 'blissey',\n      types: [TypesEnum.Normal],\n      weightkg: 46.8,\n      aliases: ['bliss', 'hapinasu'],\n      classification: 'Happiness Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/blissey.mp3',\n      respelling: 'BLISS-ee',\n      ipa: '/ˈblɪsiː/'\n    }\n  ],\n  [\n    'raikou',\n    {\n      abilities: { first: 'pressure', hidden: 'innerfocus' },\n      baseStats: { hp: 90, atk: 85, def: 75, spa: 115, spd: 100, spe: 115 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 2 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 243,\n      species: 'raikou',\n      types: [TypesEnum.Electric],\n      weightkg: 178,\n      aliases: ['kou'],\n      legendary: true,\n      classification: 'Thunder Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/raikou.mp3',\n      respelling: 'RIE-k',\n      ipa: '/ˈraɪkoʊ/'\n    }\n  ],\n  [\n    'entei',\n    {\n      abilities: { first: 'pressure', hidden: 'innerfocus' },\n      baseStats: { hp: 115, atk: 115, def: 85, spa: 90, spd: 75, spe: 100 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 1, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 244,\n      species: 'entei',\n      types: [TypesEnum.Fire],\n      weightkg: 198,\n      legendary: true,\n      classification: 'Volcano Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/entei.mp3',\n      respelling: 'EN-tay',\n      ipa: '/ˈɛnteɪ/'\n    }\n  ],\n  [\n    'suicune',\n    {\n      abilities: { first: 'pressure', hidden: 'innerfocus' },\n      baseStats: { hp: 100, atk: 75, def: 115, spa: 90, spd: 115, spe: 85 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 2, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 245,\n      species: 'suicune',\n      types: [TypesEnum.Water],\n      weightkg: 187,\n      aliases: ['cune', 'sui', 'suikun'],\n      legendary: true,\n      classification: 'Aurora Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/suicune.mp3',\n      respelling: 'SWEE-koon',\n      ipa: '/ˈswiːkuːn/'\n    }\n  ],\n  [\n    'larvitar',\n    {\n      abilities: { first: 'guts', hidden: 'sandveil' },\n      baseStats: { hp: 50, atk: 64, def: 50, spa: 45, spd: 50, spe: 41 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['pupitar'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 246,\n      species: 'larvitar',\n      types: [TypesEnum.Rock, TypesEnum.Ground],\n      weightkg: 72,\n      aliases: ['yoogirasu'],\n      classification: 'Rock Skin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/larvitar.mp3',\n      respelling: 'LAR-vay-tar',\n      ipa: '/ˈlɑːrveɪtɑːr/'\n    }\n  ],\n  [\n    'pupitar',\n    {\n      abilities: { first: 'shedskin' },\n      baseStats: { hp: 70, atk: 84, def: 70, spa: 65, spd: 70, spe: 51 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      evos: ['tyranitar'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 247,\n      prevo: 'larvitar',\n      species: 'pupitar',\n      types: [TypesEnum.Rock, TypesEnum.Ground],\n      weightkg: 152,\n      aliases: ['sanagirasu'],\n      classification: 'Hard Shell Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pupitar.mp3',\n      respelling: 'PUPE-i-tar',\n      ipa: '/ˈpjuːpɪtɑːr/'\n    }\n  ],\n  [\n    'tyranitar',\n    {\n      abilities: { first: 'sandstream', hidden: 'unnerve' },\n      baseStats: { hp: 100, atk: 134, def: 110, spa: 95, spd: 100, spe: 61 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 55,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 248,\n      otherFormes: ['tyranitarmega'],\n      prevo: 'pupitar',\n      species: 'tyranitar',\n      types: [TypesEnum.Rock, TypesEnum.Dark],\n      weightkg: 202,\n      aliases: ['bangirasu', 'ttar'],\n      classification: 'Armor Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tyranitar.mp3',\n      respelling: 'Tie-RAN-i-tar',\n      ipa: '/taɪˈrænɪtɑːr/'\n    }\n  ],\n  [\n    'tyranitarmega',\n    {\n      abilities: { first: 'sandstream' },\n      baseSpecies: 'tyranitar',\n      baseStats: { hp: 100, atk: 164, def: 150, spa: 95, spd: 120, spe: 71 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 248,\n      otherFormes: ['tyranitar'],\n      species: 'tyranitar-mega',\n      types: [TypesEnum.Rock, TypesEnum.Dark],\n      weightkg: 255,\n      aliases: ['megattar'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tyranitar-mega.mp3',\n      respelling: 'Tie-RAN-i-tar',\n      ipa: '/taɪˈrænɪtɑːr/'\n    }\n  ],\n  [\n    'lugia',\n    {\n      abilities: { first: 'pressure', hidden: 'multiscale' },\n      baseStats: { hp: 106, atk: 90, def: 130, spa: 90, spd: 154, spe: 110 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 5.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 249,\n      species: 'lugia',\n      types: [TypesEnum.Psychic, TypesEnum.Flying],\n      weightkg: 216,\n      aliases: ['rugia'],\n      legendary: true,\n      classification: 'Diving Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lugia.mp3',\n      respelling: 'LU-gee-uh',\n      ipa: '/ˈluːɡiː.ə/'\n    }\n  ],\n  [\n    'hooh',\n    {\n      abilities: { first: 'pressure', hidden: 'regenerator' },\n      baseStats: { hp: 106, atk: 130, def: 90, spa: 110, spd: 154, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 250,\n      specialBulbapediaUrl: 'Ho-Oh',\n      species: 'ho-oh',\n      types: [TypesEnum.Fire, TypesEnum.Flying],\n      weightkg: 199,\n      aliases: ['ho-oh', 'houou'],\n      legendary: true,\n      classification: 'Rainbow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hooh.mp3'\n    }\n  ],\n  [\n    'celebi',\n    {\n      abilities: { first: 'naturalcure' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 30840,\n      num: 251,\n      species: 'celebi',\n      types: [TypesEnum.Psychic, TypesEnum.Grass],\n      weightkg: 5,\n      aliases: ['serebii', 'sereby'],\n      mythical: true,\n      classification: 'Time Travel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/celebi.mp3',\n      respelling: 'SEL-ih-bee',\n      ipa: '/ˈsɛlɪbiː/'\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/gen3.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'treecko',\n    {\n      abilities: { first: 'overgrow', hidden: 'unburden' },\n      baseStats: { hp: 40, atk: 45, def: 35, spa: 65, spd: 55, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['grovyle'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 252,\n      species: 'treecko',\n      types: [TypesEnum.Grass],\n      weightkg: 5,\n      aliases: ['kimori'],\n      classification: 'Wood Gecko Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/treecko.mp3',\n      respelling: 'TREE-ko',\n      ipa: '/ˈtriːkoʊ/'\n    }\n  ],\n  [\n    'grovyle',\n    {\n      abilities: { first: 'overgrow', hidden: 'unburden' },\n      baseStats: { hp: 50, atk: 65, def: 45, spa: 85, spd: 65, spe: 95 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 16,\n      evos: ['sceptile'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 253,\n      prevo: 'treecko',\n      species: 'grovyle',\n      types: [TypesEnum.Grass],\n      weightkg: 21.6,\n      aliases: ['juputoru'],\n      classification: 'Wood Gecko Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grovyle.mp3',\n      respelling: 'GROW-vile',\n      ipa: '/ˈɡroʊvaɪl/'\n    }\n  ],\n  [\n    'sceptile',\n    {\n      abilities: { first: 'overgrow', hidden: 'unburden' },\n      baseStats: { hp: 70, atk: 85, def: 65, spa: 105, spd: 85, spe: 120 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 254,\n      otherFormes: ['sceptilemega'],\n      prevo: 'grovyle',\n      species: 'sceptile',\n      types: [TypesEnum.Grass],\n      weightkg: 52.2,\n      aliases: ['jukain', 'scept'],\n      classification: 'Forest Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sceptile.mp3',\n      respelling: 'SEP-tile',\n      ipa: '/ˈsɛptaɪl/'\n    }\n  ],\n  [\n    'sceptilemega',\n    {\n      abilities: { first: 'lightningrod' },\n      baseSpecies: 'sceptile',\n      baseStats: { hp: 70, atk: 110, def: 75, spa: 145, spd: 85, spe: 145 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 254,\n      otherFormes: ['sceptile'],\n      species: 'sceptile-mega',\n      types: [TypesEnum.Grass, TypesEnum.Dragon],\n      weightkg: 55.2,\n      aliases: ['megascept'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sceptile-mega.mp3',\n      respelling: 'SEP-tile',\n      ipa: '/ˈsɛptaɪl/'\n    }\n  ],\n  [\n    'torchic',\n    {\n      abilities: { first: 'blaze', hidden: 'speedboost' },\n      baseStats: { hp: 45, atk: 60, def: 40, spa: 70, spd: 50, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['combusken'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 255,\n      species: 'torchic',\n      types: [TypesEnum.Fire],\n      weightkg: 2.5,\n      aliases: ['achamo'],\n      classification: 'Chick Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/torchic.mp3',\n      respelling: 'TOR-chick',\n      ipa: '/ˈtɔːrtʃɪk/'\n    }\n  ],\n  [\n    'combusken',\n    {\n      abilities: { first: 'blaze', hidden: 'speedboost' },\n      baseStats: { hp: 60, atk: 85, def: 60, spa: 85, spd: 60, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      evoLevel: 16,\n      evos: ['blaziken'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 256,\n      prevo: 'torchic',\n      species: 'combusken',\n      types: [TypesEnum.Fire, TypesEnum.Fighting],\n      weightkg: 19.5,\n      aliases: ['wakashamo'],\n      classification: 'Young Fowl Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/combusken.mp3',\n      respelling: 'com-BUS-ken',\n      ipa: '/kɒmˈbʌskɛn/'\n    }\n  ],\n  [\n    'blaziken',\n    {\n      abilities: { first: 'blaze', hidden: 'speedboost' },\n      baseStats: { hp: 80, atk: 120, def: 70, spa: 110, spd: 70, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 257,\n      otherFormes: ['blazikenmega'],\n      prevo: 'combusken',\n      species: 'blaziken',\n      types: [TypesEnum.Fire, TypesEnum.Fighting],\n      weightkg: 52,\n      aliases: ['bashaamo'],\n      classification: 'Blaze Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/blaziken.mp3',\n      respelling: 'BLAZE-uh-ken',\n      ipa: '/ˈbleɪzəkɛn/'\n    }\n  ],\n  [\n    'blazikenmega',\n    {\n      abilities: { first: 'speedboost' },\n      baseSpecies: 'blaziken',\n      baseStats: { hp: 80, atk: 160, def: 80, spa: 130, spd: 80, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 257,\n      otherFormes: ['blaziken'],\n      species: 'blaziken-mega',\n      types: [TypesEnum.Fire, TypesEnum.Fighting],\n      weightkg: 52,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/blaziken-mega.mp3',\n      respelling: 'BLAZE-uh-ken',\n      ipa: '/ˈbleɪzəkɛn/'\n    }\n  ],\n  [\n    'mudkip',\n    {\n      abilities: { first: 'torrent', hidden: 'damp' },\n      baseStats: { hp: 50, atk: 70, def: 50, spa: 50, spd: 50, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['marshtomp'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 258,\n      species: 'mudkip',\n      types: [TypesEnum.Water],\n      weightkg: 7.6,\n      aliases: ['mizugorou'],\n      classification: 'Mud Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mudkip.mp3',\n      respelling: 'MUD-kip',\n      ipa: '/ˈmʌdkɪp/'\n    }\n  ],\n  [\n    'marshtomp',\n    {\n      abilities: { first: 'torrent', hidden: 'damp' },\n      baseStats: { hp: 70, atk: 85, def: 70, spa: 60, spd: 70, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 16,\n      evos: ['swampert'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 259,\n      prevo: 'mudkip',\n      species: 'marshtomp',\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 28,\n      aliases: ['numakuroo'],\n      classification: 'Mud Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/marshtomp.mp3',\n      respelling: 'MARSH-stomp',\n      ipa: '/ˈmɑːrʃstɒmp/'\n    }\n  ],\n  [\n    'swampert',\n    {\n      abilities: { first: 'torrent', hidden: 'damp' },\n      baseStats: { hp: 100, atk: 110, def: 90, spa: 85, spd: 90, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 260,\n      otherFormes: ['swampertmega'],\n      prevo: 'marshtomp',\n      species: 'swampert',\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 81.9,\n      aliases: ['pert', 'raguraaji'],\n      classification: 'Mud Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swampert.mp3',\n      respelling: 'SWAM-pert',\n      ipa: '/ˈswæmpɜːrt/'\n    }\n  ],\n  [\n    'swampertmega',\n    {\n      abilities: { first: 'swiftswim' },\n      baseSpecies: 'swampert',\n      baseStats: { hp: 100, atk: 150, def: 110, spa: 95, spd: 110, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 260,\n      otherFormes: ['swampert'],\n      species: 'swampert-mega',\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 102,\n      aliases: ['megapert'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swampert-mega.mp3',\n      respelling: 'SWAM-pert',\n      ipa: '/ˈswæmpɜːrt/'\n    }\n  ],\n  [\n    'poochyena',\n    {\n      abilities: { first: 'runaway', second: 'quickfeet', hidden: 'rattled' },\n      baseStats: { hp: 35, atk: 55, def: 35, spa: 30, spd: 30, spe: 35 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['mightyena'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 261,\n      species: 'poochyena',\n      types: [TypesEnum.Dark],\n      weightkg: 13.6,\n      aliases: ['pochiena'],\n      classification: 'Bite Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/poochyena.mp3',\n      respelling: 'POO-chee-EH-nah',\n      ipa: '/ˈpuːtʃiːˌɛnɑː/'\n    }\n  ],\n  [\n    'mightyena',\n    {\n      abilities: { first: 'intimidate', second: 'quickfeet', hidden: 'moxie' },\n      baseStats: { hp: 70, atk: 90, def: 70, spa: 60, spd: 60, spe: 70 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 18,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 262,\n      prevo: 'poochyena',\n      species: 'mightyena',\n      types: [TypesEnum.Dark],\n      weightkg: 37,\n      aliases: ['guraena'],\n      classification: 'Bite Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mightyena.mp3',\n      respelling: 'MY-tee-EH-nah',\n      ipa: '/ˈmaɪtiːˌɛnɑː/'\n    }\n  ],\n  [\n    'zigzagoon',\n    {\n      abilities: { first: 'pickup', second: 'gluttony', hidden: 'quickfeet' },\n      baseStats: { hp: 38, atk: 30, def: 41, spa: 30, spd: 41, spe: 60 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['linoone'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 263,\n      otherFormes: ['zigzagoongalar'],\n      species: 'zigzagoon',\n      types: [TypesEnum.Normal],\n      weightkg: 17.5,\n      aliases: ['jiguzaguma'],\n      classification: 'Tiny Raccoon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zigzagoon.mp3',\n      respelling: 'ZIG-zag-GOON',\n      ipa: '/ˈzɪɡzæˌɡuːn/'\n    }\n  ],\n  [\n    'zigzagoongalar',\n    {\n      abilities: { first: 'pickup', second: 'gluttony', hidden: 'quickfeet' },\n      baseSpecies: 'zigzagoon',\n      baseStats: { hp: 38, atk: 30, def: 41, spa: 30, spd: 41, spe: 60 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['linoonegalar'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 263,\n      otherFormes: ['zigzagoon'],\n      species: 'zigzagoon-galar',\n      types: [TypesEnum.Dark, TypesEnum.Normal],\n      weightkg: 17.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zigzagoon.mp3',\n      respelling: 'ZIG-zag-GOON',\n      ipa: '/ˈzɪɡzæˌɡuːn/'\n    }\n  ],\n  [\n    'linoone',\n    {\n      abilities: { first: 'pickup', second: 'gluttony', hidden: 'quickfeet' },\n      baseStats: { hp: 78, atk: 70, def: 61, spa: 50, spd: 61, spe: 100 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 264,\n      otherFormes: ['linoonegalar'],\n      prevo: 'zigzagoon',\n      species: 'linoone',\n      types: [TypesEnum.Normal],\n      weightkg: 32.5,\n      aliases: ['massuguma'],\n      classification: 'Rushing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/linoone.mp3',\n      respelling: 'line-NOON',\n      ipa: '/laɪˈnuːn/'\n    }\n  ],\n  [\n    'linoonegalar',\n    {\n      abilities: { first: 'pickup', second: 'gluttony', hidden: 'quickfeet' },\n      baseSpecies: 'linoone',\n      baseStats: { hp: 78, atk: 70, def: 61, spa: 50, spd: 61, spe: 100 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 20,\n      evos: ['obstagoon'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 264,\n      otherFormes: ['linoone'],\n      prevo: 'zigzagoongalar',\n      species: 'linoone-galar',\n      types: [TypesEnum.Dark, TypesEnum.Normal],\n      weightkg: 32.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/linoone.mp3',\n      respelling: 'line-NOON',\n      ipa: '/laɪˈnuːn/'\n    }\n  ],\n  [\n    'wurmple',\n    {\n      abilities: { first: 'shielddust', hidden: 'runaway' },\n      baseStats: { hp: 45, atk: 45, def: 35, spa: 20, spd: 30, spe: 20 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['silcoon', 'cascoon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 265,\n      species: 'wurmple',\n      types: [TypesEnum.Bug],\n      weightkg: 3.6,\n      aliases: ['kemusso'],\n      classification: 'Worm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wurmple.mp3',\n      respelling: 'WERM-pull',\n      ipa: '/ˈwɜːrmpʊl/'\n    }\n  ],\n  [\n    'silcoon',\n    {\n      abilities: { first: 'shedskin' },\n      baseStats: { hp: 50, atk: 35, def: 55, spa: 25, spd: 25, spe: 15 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 7,\n      evos: ['beautifly'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 266,\n      prevo: 'wurmple',\n      species: 'silcoon',\n      types: [TypesEnum.Bug],\n      weightkg: 10,\n      aliases: ['karasarisu'],\n      classification: 'Cocoon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silcoon.mp3',\n      respelling: 'sill-COON',\n      ipa: '/sɪlˈkuːn/'\n    }\n  ],\n  [\n    'beautifly',\n    {\n      abilities: { first: 'swarm', hidden: 'rivalry' },\n      baseStats: { hp: 60, atk: 70, def: 50, spa: 100, spd: 50, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 10,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 267,\n      prevo: 'silcoon',\n      species: 'beautifly',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 28.4,\n      aliases: ['agehanto'],\n      classification: 'Butterfly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/beautifly.mp3',\n      respelling: 'BUE-tee-fly',\n      ipa: '/ˈbjuːtiːflaɪ/'\n    }\n  ],\n  [\n    'cascoon',\n    {\n      abilities: { first: 'shedskin' },\n      baseStats: { hp: 50, atk: 35, def: 55, spa: 25, spd: 25, spe: 15 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 7,\n      evos: ['dustox'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 268,\n      prevo: 'wurmple',\n      species: 'cascoon',\n      types: [TypesEnum.Bug],\n      weightkg: 11.5,\n      aliases: ['mayurudo'],\n      classification: 'Cocoon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cascoon.mp3',\n      respelling: 'CAS-koon',\n      ipa: '/ˈkæskuːn/'\n    }\n  ],\n  [\n    'dustox',\n    {\n      abilities: { first: 'shielddust', hidden: 'compoundeyes' },\n      baseStats: { hp: 60, atk: 50, def: 70, spa: 50, spd: 90, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 10,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 269,\n      prevo: 'cascoon',\n      species: 'dustox',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 31.6,\n      aliases: ['dokukeiru'],\n      classification: 'Poison Moth Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dustox.mp3',\n      respelling: 'DUS-tocks',\n      ipa: '/ˈdʌstɒks/'\n    }\n  ],\n  [\n    'lotad',\n    {\n      abilities: { first: 'swiftswim', second: 'raindish', hidden: 'owntempo' },\n      baseStats: { hp: 40, atk: 30, def: 30, spa: 40, spd: 50, spe: 30 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Water 1', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['lombre'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 270,\n      species: 'lotad',\n      types: [TypesEnum.Water, TypesEnum.Grass],\n      weightkg: 2.6,\n      aliases: ['hasuboo'],\n      classification: 'Water Weed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lotad.mp3',\n      respelling: 'LOW-tad',\n      ipa: '/ˈloʊtæd/'\n    }\n  ],\n  [\n    'lombre',\n    {\n      abilities: { first: 'swiftswim', second: 'raindish', hidden: 'owntempo' },\n      baseStats: { hp: 60, atk: 50, def: 50, spa: 60, spd: 70, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Water 1', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 14,\n      evos: ['ludicolo'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 271,\n      prevo: 'lotad',\n      species: 'lombre',\n      types: [TypesEnum.Water, TypesEnum.Grass],\n      weightkg: 32.5,\n      aliases: ['hasuburero'],\n      classification: 'Jolly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lombre.mp3',\n      respelling: 'LOM-brey',\n      ipa: '/ˈlɒmbreɪ/'\n    }\n  ],\n  [\n    'ludicolo',\n    {\n      abilities: { first: 'swiftswim', second: 'raindish', hidden: 'owntempo' },\n      baseStats: { hp: 80, atk: 70, def: 70, spa: 90, spd: 100, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Water 1', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 'use Water Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 272,\n      prevo: 'lombre',\n      species: 'ludicolo',\n      types: [TypesEnum.Water, TypesEnum.Grass],\n      weightkg: 55,\n      aliases: ['runpappa'],\n      classification: 'Carefree Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ludicolo.mp3',\n      respelling: 'LOO-dee-KO-low',\n      ipa: '/ˌluːdiːˈkoʊloʊ/'\n    }\n  ],\n  [\n    'seedot',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'earlybird',\n        hidden: 'pickpocket'\n      },\n      baseStats: { hp: 40, atk: 40, def: 50, spa: 30, spd: 30, spe: 30 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['nuzleaf'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 273,\n      species: 'seedot',\n      types: [TypesEnum.Grass],\n      weightkg: 4,\n      aliases: ['taneboo'],\n      classification: 'Acorn Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/seedot.mp3',\n      respelling: 'SEE-dot',\n      ipa: '/ˈsiːdɒt/'\n    }\n  ],\n  [\n    'nuzleaf',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'earlybird',\n        hidden: 'pickpocket'\n      },\n      baseStats: { hp: 70, atk: 70, def: 40, spa: 60, spd: 40, spe: 60 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 14,\n      evos: ['shiftry'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 274,\n      prevo: 'seedot',\n      species: 'nuzleaf',\n      types: [TypesEnum.Grass, TypesEnum.Dark],\n      weightkg: 28,\n      aliases: ['konohana'],\n      classification: 'Wily Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nuzleaf.mp3',\n      respelling: 'NUZ-leaf',\n      ipa: '/ˈnʌzliːf/'\n    }\n  ],\n  [\n    'shiftry',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'windrider',\n        hidden: 'pickpocket'\n      },\n      baseStats: { hp: 90, atk: 100, def: 60, spa: 90, spd: 60, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Leaf Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 275,\n      prevo: 'nuzleaf',\n      species: 'shiftry',\n      types: [TypesEnum.Grass, TypesEnum.Dark],\n      weightkg: 59.6,\n      aliases: ['daatengu'],\n      classification: 'Wicked Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shiftry.mp3',\n      respelling: 'SHIFF-tree',\n      ipa: '/ˈʃɪftriː/'\n    }\n  ],\n  [\n    'taillow',\n    {\n      abilities: { first: 'guts', hidden: 'scrappy' },\n      baseStats: { hp: 40, atk: 55, def: 30, spa: 30, spd: 30, spe: 85 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Blue',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['swellow'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 276,\n      species: 'taillow',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 2.3,\n      aliases: ['subame'],\n      classification: 'Tiny Swallow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/taillow.mp3',\n      respelling: 'TAY-low',\n      ipa: '/ˈteɪloʊ/'\n    }\n  ],\n  [\n    'swellow',\n    {\n      abilities: { first: 'guts', hidden: 'scrappy' },\n      baseStats: { hp: 60, atk: 85, def: 60, spa: 75, spd: 50, spe: 125 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 22,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 277,\n      prevo: 'taillow',\n      species: 'swellow',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 19.8,\n      aliases: ['oosubame'],\n      classification: 'Swallow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swellow.mp3',\n      respelling: 'SWELL-low',\n      ipa: '/ˈswɛloʊ/'\n    }\n  ],\n  [\n    'wingull',\n    {\n      abilities: { first: 'keeneye', second: 'hydration', hidden: 'raindish' },\n      baseStats: { hp: 40, atk: 30, def: 30, spa: 55, spd: 30, spe: 85 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Water 1', 'Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['pelipper'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 278,\n      species: 'wingull',\n      types: [TypesEnum.Water, TypesEnum.Flying],\n      weightkg: 9.5,\n      aliases: ['kyamome'],\n      classification: 'Seagull Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wingull.mp3',\n      respelling: 'WING-gull',\n      ipa: '/ˈwɪŋɡʌl/'\n    }\n  ],\n  [\n    'pelipper',\n    {\n      abilities: { first: 'keeneye', second: 'drizzle', hidden: 'raindish' },\n      baseStats: { hp: 60, atk: 50, def: 100, spa: 95, spd: 70, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Water 1', 'Flying'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 25,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 279,\n      prevo: 'wingull',\n      species: 'pelipper',\n      types: [TypesEnum.Water, TypesEnum.Flying],\n      weightkg: 28,\n      aliases: ['perippaa'],\n      classification: 'Water Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pelipper.mp3',\n      respelling: 'PEL-ip-purr',\n      ipa: '/ˈpɛlɪpɜːr/'\n    }\n  ],\n  [\n    'ralts',\n    {\n      abilities: { first: 'synchronize', second: 'trace', hidden: 'telepathy' },\n      baseStats: { hp: 28, atk: 25, def: 25, spa: 45, spd: 35, spe: 40 },\n      catchRate: {\n        base: 235,\n        percentageWithOrdinaryPokeballAtFullHealth: '41.3%'\n      },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['kirlia'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 280,\n      species: 'ralts',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 6.6,\n      aliases: ['rarutosu'],\n      classification: 'Feeling Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ralts.mp3',\n      respelling: 'RALTS',\n      ipa: '/ˈrælts/'\n    }\n  ],\n  [\n    'kirlia',\n    {\n      abilities: { first: 'synchronize', second: 'trace', hidden: 'telepathy' },\n      baseStats: { hp: 38, atk: 35, def: 35, spa: 65, spd: 55, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 20,\n      evos: ['gardevoir', 'gallade'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 281,\n      prevo: 'ralts',\n      species: 'kirlia',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 20.2,\n      aliases: ['kiruria'],\n      classification: 'Emotion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kirlia.mp3',\n      respelling: 'KEERL-lee-ah',\n      ipa: '/ˈkɪərliːɑː/'\n    }\n  ],\n  [\n    'gardevoir',\n    {\n      abilities: { first: 'synchronize', second: 'trace', hidden: 'telepathy' },\n      baseStats: { hp: 68, atk: 65, def: 65, spa: 125, spd: 115, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 282,\n      otherFormes: ['gardevoirmega'],\n      prevo: 'kirlia',\n      species: 'gardevoir',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 48.4,\n      aliases: ['garde', 'saanaito'],\n      classification: 'Embrace Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gardevoir.mp3',\n      respelling: 'GAR-dee-VWAR',\n      ipa: '/ˈɡɑːrdiːˌvwɑːr/'\n    }\n  ],\n  [\n    'gardevoirmega',\n    {\n      abilities: { first: 'pixilate' },\n      baseSpecies: 'gardevoir',\n      baseStats: { hp: 68, atk: 85, def: 65, spa: 165, spd: 135, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 282,\n      otherFormes: ['gardevoir'],\n      species: 'gardevoir-mega',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 48.4,\n      aliases: ['megagard', 'megagarde'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gardevoir-mega.mp3',\n      respelling: 'GAR-dee-VWAR',\n      ipa: '/ˈɡɑːrdiːˌvwɑːr/'\n    }\n  ],\n  [\n    'surskit',\n    {\n      abilities: { first: 'swiftswim', hidden: 'raindish' },\n      baseStats: { hp: 40, atk: 30, def: 32, spa: 50, spd: 52, spe: 65 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['masquerain'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 283,\n      species: 'surskit',\n      types: [TypesEnum.Bug, TypesEnum.Water],\n      weightkg: 1.7,\n      aliases: ['ametama'],\n      classification: 'Pond Skater Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/surskit.mp3',\n      respelling: 'SUR-skit',\n      ipa: '/ˈsɜːrskɪt/'\n    }\n  ],\n  [\n    'masquerain',\n    {\n      abilities: { first: 'intimidate', hidden: 'unnerve' },\n      baseStats: { hp: 70, atk: 60, def: 62, spa: 100, spd: 82, spe: 80 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 1, spe: 0 },\n      evoLevel: 22,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 284,\n      prevo: 'surskit',\n      species: 'masquerain',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 3.6,\n      aliases: ['amemoosu'],\n      classification: 'Eyeball Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/masquerain.mp3',\n      respelling: 'mas-ker-RAIN',\n      ipa: '/mæskɜːˈreɪn/'\n    }\n  ],\n  [\n    'shroomish',\n    {\n      abilities: {\n        first: 'effectspore',\n        second: 'poisonheal',\n        hidden: 'quickfeet'\n      },\n      baseStats: { hp: 60, atk: 40, def: 60, spa: 40, spd: 60, spe: 35 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['breloom'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 3855,\n      num: 285,\n      species: 'shroomish',\n      types: [TypesEnum.Grass],\n      weightkg: 4.5,\n      aliases: ['kinokoko'],\n      classification: 'Mushroom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shroomish.mp3',\n      respelling: 'SHROOM-ish',\n      ipa: '/ˈʃruːmɪʃ/'\n    }\n  ],\n  [\n    'breloom',\n    {\n      abilities: {\n        first: 'effectspore',\n        second: 'poisonheal',\n        hidden: 'technician'\n      },\n      baseStats: { hp: 60, atk: 130, def: 80, spa: 60, spd: 60, spe: 70 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Green',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 23,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 3855,\n      num: 286,\n      prevo: 'shroomish',\n      species: 'breloom',\n      types: [TypesEnum.Grass, TypesEnum.Fighting],\n      weightkg: 39.2,\n      aliases: ['kinogassa'],\n      classification: 'Mushroom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/breloom.mp3',\n      respelling: 'BRELL-loom',\n      ipa: '/ˈbrɛluːm/'\n    }\n  ],\n  [\n    'slakoth',\n    {\n      abilities: { first: 'truant' },\n      baseStats: { hp: 60, atk: 60, def: 60, spa: 35, spd: 35, spe: 30 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['vigoroth'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 3855,\n      num: 287,\n      species: 'slakoth',\n      types: [TypesEnum.Normal],\n      weightkg: 24,\n      aliases: ['namakero'],\n      classification: 'Slacker Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slakoth.mp3',\n      respelling: 'SLAH-koth',\n      ipa: '/ˈslɑːkɒθ/'\n    }\n  ],\n  [\n    'vigoroth',\n    {\n      abilities: { first: 'vitalspirit' },\n      baseStats: { hp: 80, atk: 80, def: 80, spa: 55, spd: 55, spe: 90 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 18,\n      evos: ['slaking'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 3855,\n      num: 288,\n      prevo: 'slakoth',\n      species: 'vigoroth',\n      types: [TypesEnum.Normal],\n      weightkg: 46.5,\n      aliases: ['yarukimono'],\n      classification: 'Wild Monkey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vigoroth.mp3',\n      respelling: 'VIG-er-roth',\n      ipa: '/ˈvɪɡərɒθ/'\n    }\n  ],\n  [\n    'slaking',\n    {\n      abilities: { first: 'truant' },\n      baseStats: { hp: 150, atk: 160, def: 100, spa: 95, spd: 65, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 3855,\n      num: 289,\n      prevo: 'vigoroth',\n      species: 'slaking',\n      types: [TypesEnum.Normal],\n      weightkg: 130.5,\n      aliases: ['kekkingu'],\n      classification: 'Lazy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slaking.mp3',\n      respelling: 'SLAH-king',\n      ipa: '/ˈslɑːkɪŋ/'\n    }\n  ],\n  [\n    'nincada',\n    {\n      abilities: { first: 'compoundeyes', hidden: 'runaway' },\n      baseStats: { hp: 31, atk: 45, def: 90, spa: 30, spd: 30, spe: 40 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['ninjask', 'shedinja'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 290,\n      species: 'nincada',\n      types: [TypesEnum.Bug, TypesEnum.Ground],\n      weightkg: 5.5,\n      aliases: ['tsuchinin'],\n      classification: 'Trainee Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nincada.mp3',\n      respelling: 'nin-KAH-da',\n      ipa: '/nɪŋˈkɑːdæ/'\n    }\n  ],\n  [\n    'ninjask',\n    {\n      abilities: { first: 'speedboost', hidden: 'infiltrator' },\n      baseStats: { hp: 61, atk: 90, def: 45, spa: 50, spd: 50, spe: 160 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 291,\n      prevo: 'nincada',\n      species: 'ninjask',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 12,\n      aliases: ['tekkanin'],\n      classification: 'Ninja Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ninjask.mp3',\n      respelling: 'NIN-jask',\n      ipa: '/ˈnɪndʒæsk/'\n    }\n  ],\n  [\n    'shedinja',\n    {\n      abilities: { first: 'wonderguard' },\n      baseStats: { hp: 1, atk: 90, def: 45, spa: 30, spd: 30, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level 20 with Free Party Slot',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 292,\n      prevo: 'nincada',\n      species: 'shedinja',\n      types: [TypesEnum.Bug, TypesEnum.Ghost],\n      weightkg: 1.2,\n      aliases: ['nukenin'],\n      classification: 'Shed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shedinja.mp3',\n      respelling: 'sheh-DIN-ja',\n      ipa: '/ʃɛˈdɪndʒæ/'\n    }\n  ],\n  [\n    'whismur',\n    {\n      abilities: { first: 'soundproof', hidden: 'rattled' },\n      baseStats: { hp: 64, atk: 51, def: 23, spa: 51, spd: 23, spe: 28 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Pink',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['loudred'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 293,\n      species: 'whismur',\n      types: [TypesEnum.Normal],\n      weightkg: 16.3,\n      aliases: ['gonyonyo'],\n      classification: 'Whisper Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/whismur.mp3',\n      respelling: 'WHIS-mur',\n      ipa: '/ˈhwɪsmər/'\n    }\n  ],\n  [\n    'loudred',\n    {\n      abilities: { first: 'soundproof', hidden: 'scrappy' },\n      baseStats: { hp: 84, atk: 71, def: 43, spa: 71, spd: 43, spe: 48 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      evos: ['exploud'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 294,\n      prevo: 'whismur',\n      species: 'loudred',\n      types: [TypesEnum.Normal],\n      weightkg: 40.5,\n      aliases: ['dogoomu'],\n      classification: 'Big Voice Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/loudred.mp3',\n      respelling: 'LOUD-red',\n      ipa: '/ˈlaʊdrɛd/'\n    }\n  ],\n  [\n    'exploud',\n    {\n      abilities: { first: 'soundproof', hidden: 'scrappy' },\n      baseStats: { hp: 104, atk: 91, def: 63, spa: 91, spd: 73, spe: 68 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 295,\n      prevo: 'loudred',\n      species: 'exploud',\n      types: [TypesEnum.Normal],\n      weightkg: 84,\n      aliases: ['bakuongu'],\n      classification: 'Loud Noise Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/exploud.mp3',\n      respelling: 'ecks-PLOWD',\n      ipa: '/ɛksˈplaʊd/'\n    }\n  ],\n  [\n    'makuhita',\n    {\n      abilities: { first: 'thickfat', second: 'guts', hidden: 'sheerforce' },\n      baseStats: { hp: 72, atk: 60, def: 30, spa: 20, spd: 30, spe: 25 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['hariyama'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 5140,\n      num: 296,\n      species: 'makuhita',\n      types: [TypesEnum.Fighting],\n      weightkg: 86.4,\n      aliases: ['makunoshita'],\n      classification: 'Guts Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/makuhita.mp3',\n      respelling: 'MAK-oo-HEE-ta',\n      ipa: '/ˌmækuːˈhiːtæ/'\n    }\n  ],\n  [\n    'hariyama',\n    {\n      abilities: { first: 'thickfat', second: 'guts', hidden: 'sheerforce' },\n      baseStats: { hp: 144, atk: 120, def: 60, spa: 40, spd: 60, spe: 50 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 24,\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 2.3,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 5140,\n      num: 297,\n      prevo: 'makuhita',\n      species: 'hariyama',\n      types: [TypesEnum.Fighting],\n      weightkg: 253.8,\n      aliases: ['hariteyama'],\n      classification: 'Arm Thrust Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hariyama.mp3',\n      respelling: 'HAR-ee-YAH-mah',\n      ipa: '/ˌhɑːriːˈjɑːmɑː/'\n    }\n  ],\n  [\n    'azurill',\n    {\n      abilities: { first: 'thickfat', second: 'hugepower', hidden: 'sapsipper' },\n      baseStats: { hp: 50, atk: 20, def: 40, spa: 20, spd: 40, spe: 20 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['marill'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 298,\n      species: 'azurill',\n      types: [TypesEnum.Normal, TypesEnum.Fairy],\n      weightkg: 2,\n      aliases: ['ruriri'],\n      classification: 'Polka Dot Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/azurill.mp3',\n      respelling: 'uh-ZOO-rill',\n      ipa: '/əˈzuːrɪl/'\n    }\n  ],\n  [\n    'nosepass',\n    {\n      abilities: { first: 'sturdy', second: 'magnetpull', hidden: 'sandforce' },\n      baseStats: { hp: 30, atk: 45, def: 135, spa: 45, spd: 90, spe: 30 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['probopass'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 299,\n      species: 'nosepass',\n      types: [TypesEnum.Rock],\n      weightkg: 97,\n      aliases: ['nozupasu'],\n      classification: 'Compass Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nosepass.mp3',\n      respelling: 'NOSE-pass',\n      ipa: '/ˈnoʊzpæs/'\n    }\n  ],\n  [\n    'skitty',\n    {\n      abilities: { first: 'cutecharm', second: 'normalize', hidden: 'wonderskin' },\n      baseStats: { hp: 50, atk: 45, def: 45, spa: 35, spd: 35, spe: 50 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Pink',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['delcatty'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 300,\n      species: 'skitty',\n      types: [TypesEnum.Normal],\n      weightkg: 11,\n      aliases: ['eneko'],\n      classification: 'Kitten Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skitty.mp3',\n      respelling: 'SKIT-tee',\n      ipa: '/ˈskɪtiː/'\n    }\n  ],\n  [\n    'delcatty',\n    {\n      abilities: { first: 'cutecharm', second: 'normalize', hidden: 'wonderskin' },\n      baseStats: { hp: 70, atk: 65, def: 65, spa: 55, spd: 55, spe: 90 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evoLevel: 'use Moon Stone',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 301,\n      prevo: 'skitty',\n      species: 'delcatty',\n      types: [TypesEnum.Normal],\n      weightkg: 32.6,\n      aliases: ['enekororo'],\n      classification: 'Prim Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/delcatty.mp3',\n      respelling: 'dell-CAT-tee',\n      ipa: '/dɛlˈkætiː/'\n    }\n  ],\n  [\n    'sableye',\n    {\n      abilities: { first: 'keeneye', second: 'stall', hidden: 'prankster' },\n      baseStats: { hp: 50, atk: 75, def: 75, spa: 65, spd: 65, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 302,\n      otherFormes: ['sableyemega'],\n      species: 'sableye',\n      types: [TypesEnum.Dark, TypesEnum.Ghost],\n      weightkg: 11,\n      aliases: ['sab', 'sable', 'yamirami'],\n      classification: 'Darkness Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sableye.mp3',\n      respelling: 'SAY-bull-eye',\n      ipa: '/ˈseɪbʊlaɪ/'\n    }\n  ],\n  [\n    'sableyemega',\n    {\n      abilities: { first: 'magicbounce' },\n      baseSpecies: 'sableye',\n      baseStats: { hp: 50, atk: 85, def: 125, spa: 85, spd: 115, spe: 20 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 302,\n      otherFormes: ['sableye'],\n      species: 'sableye-mega',\n      types: [TypesEnum.Dark, TypesEnum.Ghost],\n      weightkg: 161,\n      aliases: ['megasab', 'megasable'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sableye-mega.mp3',\n      respelling: 'SAY-bull-eye',\n      ipa: '/ˈseɪbʊlaɪ/'\n    }\n  ],\n  [\n    'mawile',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'intimidate',\n        hidden: 'sheerforce'\n      },\n      baseStats: { hp: 50, atk: 85, def: 85, spa: 55, spd: 55, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 303,\n      otherFormes: ['mawilemega'],\n      species: 'mawile',\n      types: [TypesEnum.Steel, TypesEnum.Fairy],\n      weightkg: 11.5,\n      aliases: ['kuchiito'],\n      classification: 'Deceiver Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mawile.mp3',\n      respelling: 'MAW-while',\n      ipa: '/ˈmɔːhwaɪl/'\n    }\n  ],\n  [\n    'mawilemega',\n    {\n      abilities: { first: 'hugepower' },\n      baseSpecies: 'mawile',\n      baseStats: { hp: 50, atk: 147, def: 125, spa: 55, spd: 95, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 303,\n      otherFormes: ['mawile'],\n      species: 'mawile-mega',\n      types: [TypesEnum.Steel, TypesEnum.Fairy],\n      weightkg: 23.5,\n      aliases: ['megamaw'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mawile-mega.mp3',\n      respelling: 'MAW-while',\n      ipa: '/ˈmɔːhwaɪl/'\n    }\n  ],\n  [\n    'aron',\n    {\n      abilities: { first: 'sturdy', second: 'rockhead', hidden: 'heavymetal' },\n      baseStats: { hp: 50, atk: 70, def: 100, spa: 40, spd: 40, spe: 30 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Gray',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['lairon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 304,\n      species: 'aron',\n      types: [TypesEnum.Steel, TypesEnum.Rock],\n      weightkg: 60,\n      aliases: ['kokodora'],\n      classification: 'Iron Armor Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aron.mp3',\n      respelling: 'AIR-ron',\n      ipa: '/ˈɛərɒn/'\n    }\n  ],\n  [\n    'lairon',\n    {\n      abilities: { first: 'sturdy', second: 'rockhead', hidden: 'heavymetal' },\n      baseStats: { hp: 60, atk: 90, def: 140, spa: 50, spd: 50, spe: 40 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Gray',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 32,\n      evos: ['aggron'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 305,\n      prevo: 'aron',\n      species: 'lairon',\n      types: [TypesEnum.Steel, TypesEnum.Rock],\n      weightkg: 120,\n      aliases: ['kodora'],\n      classification: 'Iron Armor Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lairon.mp3',\n      respelling: 'LAIR-ron',\n      ipa: '/ˈlɛərɒn/'\n    }\n  ],\n  [\n    'aggron',\n    {\n      abilities: { first: 'sturdy', second: 'rockhead', hidden: 'heavymetal' },\n      baseStats: { hp: 70, atk: 110, def: 180, spa: 60, spd: 60, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 42,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 306,\n      otherFormes: ['aggronmega'],\n      prevo: 'lairon',\n      species: 'aggron',\n      types: [TypesEnum.Steel, TypesEnum.Rock],\n      weightkg: 360,\n      aliases: ['bosugodora'],\n      classification: 'Iron Armor Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aggron.mp3',\n      respelling: 'AGG-ron',\n      ipa: '/ˈæɡrɒn/'\n    }\n  ],\n  [\n    'aggronmega',\n    {\n      abilities: { first: 'filter' },\n      baseSpecies: 'aggron',\n      baseStats: { hp: 70, atk: 140, def: 230, spa: 60, spd: 80, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 306,\n      otherFormes: ['aggron'],\n      species: 'aggron-mega',\n      types: [TypesEnum.Steel],\n      weightkg: 395,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aggron-mega.mp3',\n      respelling: 'AGG-ron',\n      ipa: '/ˈæɡrɒn/'\n    }\n  ],\n  [\n    'meditite',\n    {\n      abilities: { first: 'purepower', hidden: 'telepathy' },\n      baseStats: { hp: 30, atk: 40, def: 55, spa: 40, spd: 55, spe: 60 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Blue',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['medicham'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 307,\n      species: 'meditite',\n      types: [TypesEnum.Fighting, TypesEnum.Psychic],\n      weightkg: 11.2,\n      aliases: ['asanan'],\n      classification: 'Meditate Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meditite.mp3',\n      respelling: 'MED-uh-tite',\n      ipa: '/ˈmɛdətaɪt/'\n    }\n  ],\n  [\n    'medicham',\n    {\n      abilities: { first: 'purepower', hidden: 'telepathy' },\n      baseStats: { hp: 60, atk: 84, def: 75, spa: 60, spd: 75, spe: 80 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 37,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 308,\n      otherFormes: ['medichammega'],\n      prevo: 'meditite',\n      species: 'medicham',\n      types: [TypesEnum.Fighting, TypesEnum.Psychic],\n      weightkg: 31.5,\n      aliases: ['chaaremu'],\n      classification: 'Meditate Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/medicham.mp3',\n      respelling: 'MED-uh-cham',\n      ipa: '/ˈmɛdətʃæm/'\n    }\n  ],\n  [\n    'medichammega',\n    {\n      abilities: { first: 'purepower' },\n      baseSpecies: 'medicham',\n      baseStats: { hp: 60, atk: 140, def: 85, spa: 80, spd: 85, spe: 100 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 308,\n      otherFormes: ['medicham'],\n      species: 'medicham-mega',\n      types: [TypesEnum.Fighting, TypesEnum.Psychic],\n      weightkg: 31.5,\n      aliases: ['megamedi'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/medicham-mega.mp3',\n      respelling: 'MED-uh-cham',\n      ipa: '/ˈmɛdətʃæm/'\n    }\n  ],\n  [\n    'electrike',\n    {\n      abilities: { first: 'static', second: 'lightningrod', hidden: 'minus' },\n      baseStats: { hp: 40, atk: 45, def: 40, spa: 65, spd: 40, spe: 65 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['manectric'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 309,\n      species: 'electrike',\n      types: [TypesEnum.Electric],\n      weightkg: 15.2,\n      aliases: ['rakurai'],\n      classification: 'Lightning Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/electrike.mp3',\n      respelling: 'ee-LEK-trike',\n      ipa: '/iːˈlɛktraɪk/'\n    }\n  ],\n  [\n    'manectric',\n    {\n      abilities: { first: 'static', second: 'lightningrod', hidden: 'minus' },\n      baseStats: { hp: 70, atk: 75, def: 60, spa: 105, spd: 60, spe: 105 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 26,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 310,\n      otherFormes: ['manectricmega'],\n      prevo: 'electrike',\n      species: 'manectric',\n      types: [TypesEnum.Electric],\n      weightkg: 40.2,\n      aliases: ['raiboruto'],\n      classification: 'Discharge Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/manectric.mp3',\n      respelling: 'mane-EK-trick',\n      ipa: '/meɪnˈɛktrɪk/'\n    }\n  ],\n  [\n    'manectricmega',\n    {\n      abilities: { first: 'intimidate' },\n      baseSpecies: 'manectric',\n      baseStats: { hp: 70, atk: 75, def: 80, spa: 135, spd: 80, spe: 135 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 310,\n      otherFormes: ['manectric'],\n      species: 'manectric-mega',\n      types: [TypesEnum.Electric],\n      weightkg: 44,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/manectric-mega.mp3',\n      respelling: 'mane-EK-trick',\n      ipa: '/meɪnˈɛktrɪk/'\n    }\n  ],\n  [\n    'plusle',\n    {\n      abilities: { first: 'plus', hidden: 'lightningrod' },\n      baseStats: { hp: 60, atk: 50, def: 40, spa: 85, spd: 75, spe: 95 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 311,\n      species: 'plusle',\n      types: [TypesEnum.Electric],\n      weightkg: 4.2,\n      aliases: ['purasuru'],\n      classification: 'Cheering Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/plusle.mp3',\n      respelling: 'PLUS-ull',\n      ipa: '/ˈplʌsəl/'\n    }\n  ],\n  [\n    'minun',\n    {\n      abilities: { first: 'minus', hidden: 'voltabsorb' },\n      baseStats: { hp: 60, atk: 40, def: 50, spa: 75, spd: 85, spe: 95 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 312,\n      species: 'minun',\n      types: [TypesEnum.Electric],\n      weightkg: 4.2,\n      aliases: ['mainan'],\n      classification: 'Cheering Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/minun.mp3',\n      respelling: 'MIE-nun',\n      ipa: '/ˈmaɪnʌn/'\n    }\n  ],\n  [\n    'volbeat',\n    {\n      abilities: { first: 'illuminate', second: 'swarm', hidden: 'prankster' },\n      baseStats: { hp: 65, atk: 73, def: 75, spa: 47, spd: 85, spe: 85 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'Gray',\n      eggGroups: ['Bug', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 313,\n      species: 'volbeat',\n      types: [TypesEnum.Bug],\n      weightkg: 17.7,\n      aliases: ['barubiito'],\n      classification: 'Firefly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/volbeat.mp3',\n      respelling: 'VOLL-beat',\n      ipa: '/ˈvɒlbiːt/'\n    }\n  ],\n  [\n    'illumise',\n    {\n      abilities: { first: 'oblivious', second: 'tintedlens', hidden: 'prankster' },\n      baseStats: { hp: 65, atk: 47, def: 75, spa: 73, spd: 85, spe: 85 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'Purple',\n      eggGroups: ['Bug', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 3855,\n      num: 314,\n      species: 'illumise',\n      types: [TypesEnum.Bug],\n      weightkg: 17.7,\n      aliases: ['irumiize'],\n      classification: 'Firefly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/illumise.mp3',\n      respelling: 'EE-loom-MEE-zay',\n      ipa: '/ˌiːluːˈmiːzeɪ/'\n    }\n  ],\n  [\n    'roselia',\n    {\n      abilities: {\n        first: 'naturalcure',\n        second: 'poisonpoint',\n        hidden: 'leafguard'\n      },\n      baseStats: { hp: 50, atk: 60, def: 45, spa: 100, spd: 80, spe: 65 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'Green',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'Level up during Daytime with happiness of at least 220',\n      evos: ['roserade'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 315,\n      prevo: 'budew',\n      species: 'roselia',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 2,\n      aliases: ['rozeria'],\n      classification: 'Thorn Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/roselia.mp3',\n      respelling: 'roh-ZEH-lee-uh',\n      ipa: '/roʊˈzɛliːə/'\n    }\n  ],\n  [\n    'gulpin',\n    {\n      abilities: { first: 'liquidooze', second: 'stickyhold', hidden: 'gluttony' },\n      baseStats: { hp: 70, atk: 43, def: 53, spa: 43, spd: 53, spe: 40 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['swalot'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 5140,\n      num: 316,\n      species: 'gulpin',\n      types: [TypesEnum.Poison],\n      weightkg: 10.3,\n      aliases: ['gokurin'],\n      classification: 'Stomach Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gulpin.mp3',\n      respelling: 'GULL-pin',\n      ipa: '/ˈɡʌlpɪn/'\n    }\n  ],\n  [\n    'swalot',\n    {\n      abilities: { first: 'liquidooze', second: 'stickyhold', hidden: 'gluttony' },\n      baseStats: { hp: 100, atk: 73, def: 83, spa: 73, spd: 83, spe: 55 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 26,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 5140,\n      num: 317,\n      prevo: 'gulpin',\n      species: 'swalot',\n      types: [TypesEnum.Poison],\n      weightkg: 80,\n      aliases: ['marunoomu'],\n      classification: 'Poison Bag Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swalot.mp3',\n      respelling: 'SWAH-lot',\n      ipa: '/ˈswɑːlɒt/'\n    }\n  ],\n  [\n    'carvanha',\n    {\n      abilities: { first: 'roughskin', hidden: 'speedboost' },\n      baseStats: { hp: 45, atk: 90, def: 20, spa: 65, spd: 20, spe: 65 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['sharpedo'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 318,\n      species: 'carvanha',\n      types: [TypesEnum.Water, TypesEnum.Dark],\n      weightkg: 20.8,\n      aliases: ['kibania'],\n      classification: 'Savage Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/carvanha.mp3',\n      respelling: 'car-VAH-na',\n      ipa: '/kɑːrˈvɑːnæ/'\n    }\n  ],\n  [\n    'sharpedo',\n    {\n      abilities: { first: 'roughskin', hidden: 'speedboost' },\n      baseStats: { hp: 70, atk: 120, def: 40, spa: 95, spd: 40, spe: 95 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 319,\n      otherFormes: ['sharpedomega'],\n      prevo: 'carvanha',\n      species: 'sharpedo',\n      types: [TypesEnum.Water, TypesEnum.Dark],\n      weightkg: 88.8,\n      aliases: ['samehadaa'],\n      classification: 'Brutal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sharpedo.mp3',\n      respelling: 'shar-PEE-do',\n      ipa: '/ʃɑːrˈpiːdoʊ/'\n    }\n  ],\n  [\n    'sharpedomega',\n    {\n      abilities: { first: 'strongjaw' },\n      baseSpecies: 'sharpedo',\n      baseStats: { hp: 70, atk: 140, def: 70, spa: 110, spd: 65, spe: 105 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 319,\n      otherFormes: ['sharpedo'],\n      species: 'sharpedo-mega',\n      types: [TypesEnum.Water, TypesEnum.Dark],\n      weightkg: 130.3,\n      aliases: ['megashark'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sharpedo-mega.mp3',\n      respelling: 'shar-PEE-do',\n      ipa: '/ʃɑːrˈpiːdoʊ/'\n    }\n  ],\n  [\n    'wailmer',\n    {\n      abilities: { first: 'waterveil', second: 'oblivious', hidden: 'pressure' },\n      baseStats: { hp: 130, atk: 70, def: 35, spa: 70, spd: 35, spe: 60 },\n      catchRate: {\n        base: 125,\n        percentageWithOrdinaryPokeballAtFullHealth: '25.7%'\n      },\n      color: 'Blue',\n      eggGroups: ['Field', 'Water 2'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['wailord'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 10280,\n      num: 320,\n      species: 'wailmer',\n      types: [TypesEnum.Water],\n      weightkg: 130,\n      aliases: ['hoeruko'],\n      classification: 'Ball Whale Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wailmer.mp3',\n      respelling: 'WAIL-murr',\n      ipa: '/ˈweɪlmər/'\n    }\n  ],\n  [\n    'wailord',\n    {\n      abilities: { first: 'waterveil', second: 'oblivious', hidden: 'pressure' },\n      baseStats: { hp: 170, atk: 90, def: 45, spa: 90, spd: 45, spe: 60 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Field', 'Water 2'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 14.5,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 10280,\n      num: 321,\n      prevo: 'wailmer',\n      species: 'wailord',\n      types: [TypesEnum.Water],\n      weightkg: 398,\n      aliases: ['hoeruoo'],\n      classification: 'Float Whale Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wailord.mp3',\n      respelling: 'WAIL-lord',\n      ipa: '/ˈweɪlɔːrd/'\n    }\n  ],\n  [\n    'numel',\n    {\n      abilities: { first: 'oblivious', second: 'simple', hidden: 'owntempo' },\n      baseStats: { hp: 60, atk: 60, def: 40, spa: 65, spd: 45, spe: 35 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['camerupt'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 322,\n      species: 'numel',\n      types: [TypesEnum.Fire, TypesEnum.Ground],\n      weightkg: 24,\n      aliases: ['donmeru'],\n      classification: 'Numb Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/numel.mp3',\n      respelling: 'NUM-mull',\n      ipa: '/ˈnʌmʌl/'\n    }\n  ],\n  [\n    'camerupt',\n    {\n      abilities: {\n        first: 'magmaarmor',\n        second: 'solidrock',\n        hidden: 'angerpoint'\n      },\n      baseStats: { hp: 70, atk: 100, def: 70, spa: 105, spd: 75, spe: 40 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      evoLevel: 33,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 323,\n      otherFormes: ['cameruptmega'],\n      prevo: 'numel',\n      species: 'camerupt',\n      types: [TypesEnum.Fire, TypesEnum.Ground],\n      weightkg: 220,\n      aliases: ['bakuuda', 'camel'],\n      classification: 'Eruption Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/camerupt.mp3',\n      respelling: 'CAM-err-rupt',\n      ipa: '/ˈkæmɛrʌpt/'\n    }\n  ],\n  [\n    'cameruptmega',\n    {\n      abilities: { first: 'sheerforce' },\n      baseSpecies: 'camerupt',\n      baseStats: { hp: 70, atk: 120, def: 100, spa: 145, spd: 105, spe: 20 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 323,\n      otherFormes: ['camerupt'],\n      species: 'camerupt-mega',\n      types: [TypesEnum.Fire, TypesEnum.Ground],\n      weightkg: 320.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/camerupt-mega.mp3',\n      respelling: 'CAM-err-rupt',\n      ipa: '/ˈkæmɛrʌpt/'\n    }\n  ],\n  [\n    'torkoal',\n    {\n      abilities: { first: 'whitesmoke', second: 'drought', hidden: 'shellarmor' },\n      baseStats: { hp: 70, atk: 85, def: 140, spa: 85, spd: 70, spe: 20 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 324,\n      species: 'torkoal',\n      types: [TypesEnum.Fire],\n      weightkg: 80.4,\n      aliases: ['kootasu'],\n      classification: 'Coal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/torkoal.mp3',\n      respelling: 'TOR-coal',\n      ipa: '/ˈtɔːrkoʊl/'\n    }\n  ],\n  [\n    'spoink',\n    {\n      abilities: { first: 'thickfat', second: 'owntempo', hidden: 'gluttony' },\n      baseStats: { hp: 60, atk: 25, def: 35, spa: 70, spd: 80, spe: 60 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['grumpig'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 325,\n      species: 'spoink',\n      types: [TypesEnum.Psychic],\n      weightkg: 30.6,\n      aliases: ['banebuu'],\n      classification: 'Bounce Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spoink.mp3',\n      respelling: 'SPOINK',\n      ipa: '/ˈspɔɪŋk/'\n    }\n  ],\n  [\n    'grumpig',\n    {\n      abilities: { first: 'thickfat', second: 'owntempo', hidden: 'gluttony' },\n      baseStats: { hp: 80, atk: 45, def: 65, spa: 90, spd: 110, spe: 80 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 326,\n      prevo: 'spoink',\n      species: 'grumpig',\n      types: [TypesEnum.Psychic],\n      weightkg: 71.5,\n      aliases: ['buupiggu'],\n      classification: 'Manipulate Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grumpig.mp3',\n      respelling: 'GRUM-pig',\n      ipa: '/ˈɡrʌmpɪɡ/'\n    }\n  ],\n  [\n    'spinda',\n    {\n      abilities: { first: 'owntempo', second: 'tangledfeet', hidden: 'contrary' },\n      baseStats: { hp: 60, atk: 60, def: 60, spa: 60, spd: 60, spe: 60 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 327,\n      species: 'spinda',\n      types: [TypesEnum.Normal],\n      weightkg: 5,\n      aliases: ['patchiiru'],\n      classification: 'Spot Panda Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spinda.mp3',\n      respelling: 'SPIN-dah',\n      ipa: '/ˈspɪndɑː/'\n    }\n  ],\n  [\n    'trapinch',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'arenatrap',\n        hidden: 'sheerforce'\n      },\n      baseStats: { hp: 45, atk: 100, def: 45, spa: 45, spd: 45, spe: 10 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['vibrava'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 328,\n      species: 'trapinch',\n      types: [TypesEnum.Ground],\n      weightkg: 15,\n      aliases: ['nakkuraa'],\n      classification: 'Ant Pit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/trapinch.mp3',\n      respelling: 'TRAP-pinch',\n      ipa: '/ˈtræpɪntʃ/'\n    }\n  ],\n  [\n    'vibrava',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 50, atk: 70, def: 50, spa: 50, spd: 50, spe: 70 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 1 },\n      evoLevel: 35,\n      evos: ['flygon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 329,\n      prevo: 'trapinch',\n      species: 'vibrava',\n      types: [TypesEnum.Ground, TypesEnum.Dragon],\n      weightkg: 15.3,\n      aliases: ['biburaaba'],\n      classification: 'Vibration Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vibrava.mp3',\n      respelling: 'VY-brah-va',\n      ipa: '/ˌvaɪbrɑːvæ/'\n    }\n  ],\n  [\n    'flygon',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 80, atk: 100, def: 80, spa: 80, spd: 80, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 45,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 330,\n      prevo: 'vibrava',\n      species: 'flygon',\n      types: [TypesEnum.Ground, TypesEnum.Dragon],\n      weightkg: 82,\n      aliases: ['furaigon'],\n      classification: 'Mystic Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/flygon.mp3',\n      respelling: 'FLY-gon',\n      ipa: '/ˈflaɪɡɒn/'\n    }\n  ],\n  [\n    'cacnea',\n    {\n      abilities: { first: 'sandveil', hidden: 'waterabsorb' },\n      baseStats: { hp: 50, atk: 85, def: 40, spa: 85, spd: 40, spe: 35 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['cacturne'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 331,\n      species: 'cacnea',\n      types: [TypesEnum.Grass],\n      weightkg: 51.3,\n      aliases: ['sabonea'],\n      classification: 'Cactus Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cacnea.mp3',\n      respelling: 'CACK-nee-uh',\n      ipa: '/ˈkækniːə/'\n    }\n  ],\n  [\n    'cacturne',\n    {\n      abilities: { first: 'sandveil', hidden: 'waterabsorb' },\n      baseStats: { hp: 70, atk: 115, def: 60, spa: 115, spd: 60, spe: 55 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Green',\n      eggGroups: ['Grass', 'Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 332,\n      prevo: 'cacnea',\n      species: 'cacturne',\n      types: [TypesEnum.Grass, TypesEnum.Dark],\n      weightkg: 77.4,\n      aliases: ['nokutasu'],\n      classification: 'Scarecrow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cacturne.mp3',\n      respelling: 'CACK-turn',\n      ipa: '/ˈkæktərn/'\n    }\n  ],\n  [\n    'swablu',\n    {\n      abilities: { first: 'naturalcure', hidden: 'cloudnine' },\n      baseStats: { hp: 45, atk: 40, def: 60, spa: 40, spd: 75, spe: 50 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Flying', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['altaria'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 333,\n      species: 'swablu',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 1.2,\n      aliases: ['chirutto'],\n      classification: 'Cotton Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swablu.mp3',\n      respelling: 'SWAH-blue',\n      ipa: '/ˈswɑːbluː/'\n    }\n  ],\n  [\n    'altaria',\n    {\n      abilities: { first: 'naturalcure', hidden: 'cloudnine' },\n      baseStats: { hp: 75, atk: 70, def: 90, spa: 70, spd: 105, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Flying', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 35,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 334,\n      otherFormes: ['altariamega'],\n      prevo: 'swablu',\n      species: 'altaria',\n      types: [TypesEnum.Dragon, TypesEnum.Flying],\n      weightkg: 20.6,\n      aliases: ['chirutarisu'],\n      classification: 'Humming Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/altaria.mp3',\n      respelling: 'all-TEAR-ee-uh',\n      ipa: '/ɔːlˈtɛəriːə/'\n    }\n  ],\n  [\n    'altariamega',\n    {\n      abilities: { first: 'pixilate' },\n      baseSpecies: 'altaria',\n      baseStats: { hp: 75, atk: 110, def: 110, spa: 110, spd: 105, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Flying', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 334,\n      otherFormes: ['altaria'],\n      species: 'altaria-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Fairy],\n      weightkg: 20.6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/altaria-mega.mp3',\n      respelling: 'all-TEAR-ee-uh',\n      ipa: '/ɔːlˈtɛəriːə/'\n    }\n  ],\n  [\n    'zangoose',\n    {\n      abilities: { first: 'immunity', hidden: 'toxicboost' },\n      baseStats: { hp: 73, atk: 115, def: 60, spa: 60, spd: 60, spe: 90 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 335,\n      species: 'zangoose',\n      types: [TypesEnum.Normal],\n      weightkg: 40.3,\n      aliases: ['zanguusu'],\n      classification: 'Cat Ferret Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zangoose.mp3',\n      respelling: 'ZANG-goose',\n      ipa: '/ˈzæŋɡuːs/'\n    }\n  ],\n  [\n    'seviper',\n    {\n      abilities: { first: 'shedskin', hidden: 'infiltrator' },\n      baseStats: { hp: 73, atk: 100, def: 60, spa: 100, spd: 60, spe: 65 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Black',\n      eggGroups: ['Field', 'Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.7,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 5140,\n      num: 336,\n      species: 'seviper',\n      types: [TypesEnum.Poison],\n      weightkg: 52.5,\n      aliases: ['habuneeku'],\n      classification: 'Fang Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/seviper.mp3',\n      respelling: 'seh-VIE-per',\n      ipa: '/sɛˈvaɪpɜːr/'\n    }\n  ],\n  [\n    'lunatone',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 90, atk: 55, def: 65, spa: 95, spd: 85, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 337,\n      species: 'lunatone',\n      types: [TypesEnum.Rock, TypesEnum.Psychic],\n      weightkg: 168,\n      aliases: ['runatoon'],\n      classification: 'Meteorite Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lunatone.mp3',\n      respelling: 'LOO-nuh-tone',\n      ipa: '/ˈluːnətoʊn/'\n    }\n  ],\n  [\n    'solrock',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 90, atk: 95, def: 85, spa: 55, spd: 65, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 338,\n      species: 'solrock',\n      types: [TypesEnum.Rock, TypesEnum.Psychic],\n      weightkg: 154,\n      aliases: ['sorurokku'],\n      classification: 'Meteorite Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/solrock.mp3',\n      respelling: 'SOL-rock',\n      ipa: '/ˈsɒlrɒk/'\n    }\n  ],\n  [\n    'barboach',\n    {\n      abilities: {\n        first: 'oblivious',\n        second: 'anticipation',\n        hidden: 'hydration'\n      },\n      baseStats: { hp: 50, atk: 48, def: 43, spa: 46, spd: 41, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['whiscash'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 339,\n      species: 'barboach',\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 1.9,\n      aliases: ['dojotchi'],\n      classification: 'Whiskers Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/barboach.mp3',\n      respelling: 'bar-BOACH',\n      ipa: '/bɑːrˈboʊtʃ/'\n    }\n  ],\n  [\n    'whiscash',\n    {\n      abilities: {\n        first: 'oblivious',\n        second: 'anticipation',\n        hidden: 'hydration'\n      },\n      baseStats: { hp: 110, atk: 78, def: 73, spa: 76, spd: 71, spe: 60 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 340,\n      prevo: 'barboach',\n      species: 'whiscash',\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 23.6,\n      aliases: ['namazun'],\n      classification: 'Whiskers Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/whiscash.mp3',\n      respelling: 'WISS-cash',\n      ipa: '/ˈwɪskæʃ/'\n    }\n  ],\n  [\n    'corphish',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'shellarmor',\n        hidden: 'adaptability'\n      },\n      baseStats: { hp: 43, atk: 80, def: 65, spa: 50, spd: 35, spe: 35 },\n      catchRate: {\n        base: 205,\n        percentageWithOrdinaryPokeballAtFullHealth: '37.2%'\n      },\n      color: 'Red',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['crawdaunt'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 3855,\n      num: 341,\n      species: 'corphish',\n      types: [TypesEnum.Water],\n      weightkg: 11.5,\n      aliases: ['heigani'],\n      classification: 'Ruffian Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/corphish.mp3',\n      respelling: 'COR-fish',\n      ipa: '/ˈkɔːrfɪʃ/'\n    }\n  ],\n  [\n    'crawdaunt',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'shellarmor',\n        hidden: 'adaptability'\n      },\n      baseStats: { hp: 63, atk: 120, def: 85, spa: 90, spd: 55, spe: 55 },\n      catchRate: {\n        base: 155,\n        percentageWithOrdinaryPokeballAtFullHealth: '30.2%'\n      },\n      color: 'Red',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 3855,\n      num: 342,\n      prevo: 'corphish',\n      species: 'crawdaunt',\n      types: [TypesEnum.Water, TypesEnum.Dark],\n      weightkg: 32.8,\n      aliases: ['shizarigaa'],\n      classification: 'Rogue Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/crawdaunt.mp3',\n      respelling: 'CRAW-daunt',\n      ipa: '/ˈkrɔːdɔːnt/'\n    }\n  ],\n  [\n    'baltoy',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 40, atk: 40, def: 55, spa: 40, spd: 70, spe: 55 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['claydol'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 343,\n      species: 'baltoy',\n      types: [TypesEnum.Ground, TypesEnum.Psychic],\n      weightkg: 21.5,\n      aliases: ['yajiron'],\n      classification: 'Clay Doll Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/baltoy.mp3',\n      respelling: 'BALL-toy',\n      ipa: '/ˈbɔːltɔɪ/'\n    }\n  ],\n  [\n    'claydol',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 60, atk: 70, def: 105, spa: 70, spd: 120, spe: 75 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Black',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 344,\n      prevo: 'baltoy',\n      species: 'claydol',\n      types: [TypesEnum.Ground, TypesEnum.Psychic],\n      weightkg: 108,\n      aliases: ['nendooru'],\n      classification: 'Clay Doll Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/claydol.mp3',\n      respelling: 'CLAY-doll',\n      ipa: '/ˈkleɪdɒl/'\n    }\n  ],\n  [\n    'lileep',\n    {\n      abilities: { first: 'suctioncups', hidden: 'stormdrain' },\n      baseStats: { hp: 66, atk: 41, def: 77, spa: 61, spd: 87, spe: 23 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['cradily'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 7710,\n      num: 345,\n      species: 'lileep',\n      types: [TypesEnum.Rock, TypesEnum.Grass],\n      weightkg: 23.8,\n      aliases: ['ririira'],\n      classification: 'Sea Lily Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lileep.mp3',\n      respelling: 'LILL-leep',\n      ipa: '/ˈlɪliːp/'\n    }\n  ],\n  [\n    'cradily',\n    {\n      abilities: { first: 'suctioncups', hidden: 'stormdrain' },\n      baseStats: { hp: 86, atk: 81, def: 97, spa: 81, spd: 107, spe: 43 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 7710,\n      num: 346,\n      prevo: 'lileep',\n      species: 'cradily',\n      types: [TypesEnum.Rock, TypesEnum.Grass],\n      weightkg: 60.4,\n      aliases: ['yureidoru'],\n      classification: 'Barnacle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cradily.mp3',\n      respelling: 'cray-DILLY',\n      ipa: '/kreɪˈdɪliː/'\n    }\n  ],\n  [\n    'anorith',\n    {\n      abilities: { first: 'battlearmor', hidden: 'swiftswim' },\n      baseStats: { hp: 45, atk: 95, def: 50, spa: 40, spd: 50, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['armaldo'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 7710,\n      num: 347,\n      species: 'anorith',\n      types: [TypesEnum.Rock, TypesEnum.Bug],\n      weightkg: 12.5,\n      aliases: ['anopusu'],\n      classification: 'Old Shrimp Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/anorith.mp3',\n      respelling: 'AN-no-rith',\n      ipa: '/ˈænoʊrɪθ/'\n    }\n  ],\n  [\n    'armaldo',\n    {\n      abilities: { first: 'battlearmor', hidden: 'swiftswim' },\n      baseStats: { hp: 75, atk: 125, def: 100, spa: 70, spd: 80, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 7710,\n      num: 348,\n      prevo: 'anorith',\n      species: 'armaldo',\n      types: [TypesEnum.Rock, TypesEnum.Bug],\n      weightkg: 68.2,\n      aliases: ['aamarudo'],\n      classification: 'Plate Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/armaldo.mp3',\n      respelling: 'ar-MAL-do',\n      ipa: '/ɑːrˈmældoʊ/'\n    }\n  ],\n  [\n    'feebas',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'oblivious',\n        hidden: 'adaptability'\n      },\n      baseStats: { hp: 20, atk: 15, def: 20, spa: 10, spd: 55, spe: 80 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['milotic'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 349,\n      species: 'feebas',\n      types: [TypesEnum.Water],\n      weightkg: 7.4,\n      aliases: ['hinbasu'],\n      classification: 'Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/feebas.mp3',\n      respelling: 'FEE-bass',\n      ipa: '/ˈfiːbæs/'\n    }\n  ],\n  [\n    'milotic',\n    {\n      abilities: {\n        first: 'marvelscale',\n        second: 'competitive',\n        hidden: 'cutecharm'\n      },\n      baseStats: { hp: 95, atk: 60, def: 79, spa: 100, spd: 125, spe: 81 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Pink',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Trade while holding Prism Scale',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 6.2,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 350,\n      prevo: 'feebas',\n      species: 'milotic',\n      types: [TypesEnum.Water],\n      weightkg: 162,\n      aliases: ['milo', 'mirokarosu'],\n      classification: 'Tender Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/milotic.mp3',\n      respelling: 'my-LOW-tic',\n      ipa: '/maɪˈloʊtɪk/'\n    }\n  ],\n  [\n    'castform',\n    {\n      abilities: { first: 'forecast' },\n      baseStats: { hp: 70, atk: 70, def: 70, spa: 70, spd: 70, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Fairy', 'Amorphous'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 351,\n      otherFormes: ['castformsunny', 'castformrainy', 'castformsnowy'],\n      species: 'castform',\n      types: [TypesEnum.Normal],\n      weightkg: 0.8,\n      aliases: ['powarun'],\n      classification: 'Weather Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/castform.mp3',\n      respelling: 'CAST-form',\n      ipa: '/ˈkæstfɔːrm/'\n    }\n  ],\n  [\n    'castformsunny',\n    {\n      abilities: { first: 'forecast' },\n      baseSpecies: 'castform',\n      baseStats: { hp: 70, atk: 70, def: 70, spa: 70, spd: 70, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Fairy', 'Amorphous'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Sunny',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 351,\n      otherFormes: ['castform', 'castformrainy', 'castformsnowy'],\n      species: 'castform-sunny',\n      types: [TypesEnum.Fire],\n      weightkg: 0.8,\n      aliases: ['castformfire', 'castforms'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/castform.mp3',\n      respelling: 'CAST-form',\n      ipa: '/ˈkæstfɔːrm/'\n    }\n  ],\n  [\n    'castformrainy',\n    {\n      abilities: { first: 'forecast' },\n      baseSpecies: 'castform',\n      baseStats: { hp: 70, atk: 70, def: 70, spa: 70, spd: 70, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Fairy', 'Amorphous'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Rainy',\n      formeLetter: 'R',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 351,\n      otherFormes: ['castform', 'castformsunny', 'castformsnowy'],\n      species: 'castform-rainy',\n      types: [TypesEnum.Water],\n      weightkg: 0.8,\n      aliases: ['castformr', 'castformwater'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/castform.mp3',\n      respelling: 'CAST-form',\n      ipa: '/ˈkæstfɔːrm/'\n    }\n  ],\n  [\n    'castformsnowy',\n    {\n      abilities: { first: 'forecast' },\n      baseSpecies: 'castform',\n      baseStats: { hp: 70, atk: 70, def: 70, spa: 70, spd: 70, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Fairy', 'Amorphous'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Snowy',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 351,\n      otherFormes: ['castform', 'castformsunny', 'castformrainy'],\n      species: 'castform-snowy',\n      types: [TypesEnum.Ice],\n      weightkg: 0.8,\n      aliases: ['castformh', 'castformice'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/castform.mp3',\n      respelling: 'CAST-form',\n      ipa: '/ˈkæstfɔːrm/'\n    }\n  ],\n  [\n    'kecleon',\n    {\n      abilities: { first: 'colorchange', hidden: 'protean' },\n      baseStats: { hp: 60, atk: 90, def: 70, spa: 60, spd: 120, spe: 40 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 352,\n      species: 'kecleon',\n      types: [TypesEnum.Normal],\n      weightkg: 22,\n      aliases: ['kakureon'],\n      classification: 'Color Swap Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kecleon.mp3',\n      respelling: 'KEH-clee-on',\n      ipa: '/ˈkɛkliːɒn/'\n    }\n  ],\n  [\n    'shuppet',\n    {\n      abilities: { first: 'insomnia', second: 'frisk', hidden: 'cursedbody' },\n      baseStats: { hp: 44, atk: 75, def: 35, spa: 63, spd: 33, spe: 45 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['banette'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 353,\n      species: 'shuppet',\n      types: [TypesEnum.Ghost],\n      weightkg: 2.3,\n      aliases: ['kagebouzu'],\n      classification: 'Puppet Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shuppet.mp3',\n      respelling: 'SHUP-pett',\n      ipa: '/ˈʃʌpɛt/'\n    }\n  ],\n  [\n    'banette',\n    {\n      abilities: { first: 'insomnia', second: 'frisk', hidden: 'cursedbody' },\n      baseStats: { hp: 64, atk: 115, def: 65, spa: 83, spd: 63, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 37,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 354,\n      otherFormes: ['banettemega'],\n      prevo: 'shuppet',\n      species: 'banette',\n      types: [TypesEnum.Ghost],\n      weightkg: 12.5,\n      aliases: ['jupetta'],\n      classification: 'Marionette Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/banette.mp3',\n      respelling: 'bane-NETT',\n      ipa: '/beɪnˈnɛt/'\n    }\n  ],\n  [\n    'banettemega',\n    {\n      abilities: { first: 'prankster' },\n      baseSpecies: 'banette',\n      baseStats: { hp: 64, atk: 165, def: 75, spa: 93, spd: 83, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 354,\n      otherFormes: ['banette'],\n      species: 'banette-mega',\n      types: [TypesEnum.Ghost],\n      weightkg: 13,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/banette-mega.mp3',\n      respelling: 'bane-NETT',\n      ipa: '/beɪnˈnɛt/'\n    }\n  ],\n  [\n    'duskull',\n    {\n      abilities: { first: 'levitate', hidden: 'frisk' },\n      baseStats: { hp: 20, atk: 40, def: 90, spa: 30, spd: 90, spe: 25 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Black',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['dusclops'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 355,\n      species: 'duskull',\n      types: [TypesEnum.Ghost],\n      weightkg: 15,\n      aliases: ['yomawaru'],\n      classification: 'Requiem Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/duskull.mp3',\n      respelling: 'DUS-kull',\n      ipa: '/ˈdʌskʌl/'\n    }\n  ],\n  [\n    'dusclops',\n    {\n      abilities: { first: 'pressure', hidden: 'frisk' },\n      baseStats: { hp: 40, atk: 70, def: 130, spa: 60, spd: 130, spe: 25 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Black',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 37,\n      evos: ['dusknoir'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 356,\n      prevo: 'duskull',\n      species: 'dusclops',\n      types: [TypesEnum.Ghost],\n      weightkg: 30.6,\n      aliases: ['samayooru'],\n      classification: 'Beckon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dusclops.mp3',\n      respelling: 'DUS-klops',\n      ipa: '/ˈdʌsklɒps/'\n    }\n  ],\n  [\n    'tropius',\n    {\n      abilities: { first: 'chlorophyll', second: 'solarpower', hidden: 'harvest' },\n      baseStats: { hp: 99, atk: 68, def: 83, spa: 72, spd: 87, spe: 51 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 357,\n      species: 'tropius',\n      types: [TypesEnum.Grass, TypesEnum.Flying],\n      weightkg: 100,\n      aliases: ['toropiusu'],\n      classification: 'Fruit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tropius.mp3',\n      respelling: 'TROH-pee-us',\n      ipa: '/ˈtroʊpiːʌs/'\n    }\n  ],\n  [\n    'chimecho',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 75, atk: 50, def: 80, spa: 95, spd: 90, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 1, spe: 0 },\n      evoLevel: 'Level up during Nighttime with happiness of at least 220',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 358,\n      prevo: 'chingling',\n      species: 'chimecho',\n      otherFormes: ['chimechomega'],\n      types: [TypesEnum.Psychic],\n      weightkg: 1,\n      aliases: ['chiriin'],\n      classification: 'Wind Chime Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chimecho.mp3',\n      respelling: 'chime-ECK-ko',\n      ipa: '/tʃaɪmˈɛkoʊ/'\n    }\n  ],\n  [\n    'chimechomega',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 75, atk: 50, def: 80, spa: 95, spd: 90, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      baseSpecies: 'chimecho',\n      color: 'Blue',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 1, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 358,\n      species: 'chimecho-mega',\n      forme: 'Mega',\n      formeLetter: 'M',\n      otherFormes: ['chimecho'],\n      types: [TypesEnum.Psychic, TypesEnum.Steel],\n      weightkg: 8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chimecho.mp3',\n      respelling: 'chime-ECK-ko',\n      ipa: '/tʃaɪmˈɛkoʊ/'\n    }\n  ],\n  [\n    'absol',\n    {\n      abilities: { first: 'pressure', second: 'superluck', hidden: 'justified' },\n      baseStats: { hp: 65, atk: 130, def: 60, spa: 75, spd: 60, spe: 75 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 359,\n      otherFormes: ['absolmega', 'absolmegaz'],\n      species: 'absol',\n      types: [TypesEnum.Dark],\n      weightkg: 47,\n      aliases: ['abusoru'],\n      classification: 'Disaster Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/absol.mp3',\n      respelling: 'AB-sol',\n      ipa: '/ˈæbsoʊl/'\n    }\n  ],\n  [\n    'absolmega',\n    {\n      abilities: { first: 'magicbounce' },\n      baseSpecies: 'absol',\n      baseStats: { hp: 65, atk: 150, def: 60, spa: 115, spd: 60, spe: 115 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 359,\n      otherFormes: ['absol', 'absolmegaz'],\n      species: 'absol-mega',\n      types: [TypesEnum.Dark],\n      weightkg: 49,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/absol-mega.mp3',\n      respelling: 'AB-sol',\n      ipa: '/ˈæbsoʊl/'\n    }\n  ],\n  [\n    'absolmegaz',\n    {\n      abilities: { first: 'magicbounce' },\n      baseSpecies: 'absol',\n      baseStats: { hp: 65, atk: 154, def: 60, spa: 75, spd: 60, spe: 151 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega-Z',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 359,\n      otherFormes: ['absol', 'absolmega'],\n      aliases: ['absolz'],\n      species: 'absol-mega-z',\n      types: [TypesEnum.Dark, TypesEnum.Ghost],\n      weightkg: 49,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/absol.mp3',\n      respelling: 'AB-sol',\n      ipa: '/ˈæbsoʊl/'\n    }\n  ],\n  [\n    'wynaut',\n    {\n      abilities: { first: 'shadowtag', hidden: 'telepathy' },\n      baseStats: { hp: 95, atk: 23, def: 48, spa: 23, spd: 48, spe: 23 },\n      catchRate: {\n        base: 125,\n        percentageWithOrdinaryPokeballAtFullHealth: '25.7%'\n      },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['wobbuffet'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 360,\n      species: 'wynaut',\n      types: [TypesEnum.Psychic],\n      weightkg: 14,\n      aliases: ['soonano'],\n      classification: 'Bright Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wynaut.mp3',\n      respelling: 'WHY-not',\n      ipa: '/ˈhwaɪnɒt/'\n    }\n  ],\n  [\n    'snorunt',\n    {\n      abilities: { first: 'innerfocus', second: 'icebody', hidden: 'moody' },\n      baseStats: { hp: 50, atk: 50, def: 50, spa: 50, spd: 50, spe: 50 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Fairy', 'Mineral'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['glalie', 'froslass'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 361,\n      species: 'snorunt',\n      types: [TypesEnum.Ice],\n      weightkg: 16.8,\n      aliases: ['yukiwarashi'],\n      classification: 'Snow Hat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/snorunt.mp3',\n      respelling: 'SNOW-runt',\n      ipa: '/ˈsnoʊrʌnt/'\n    }\n  ],\n  [\n    'glalie',\n    {\n      abilities: { first: 'innerfocus', second: 'icebody', hidden: 'moody' },\n      baseStats: { hp: 80, atk: 80, def: 80, spa: 80, spd: 80, spe: 80 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Gray',\n      eggGroups: ['Fairy', 'Mineral'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 42,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 362,\n      otherFormes: ['glaliemega'],\n      prevo: 'snorunt',\n      species: 'glalie',\n      types: [TypesEnum.Ice],\n      weightkg: 256.5,\n      aliases: ['onigoori'],\n      classification: 'Face Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/glalie.mp3',\n      respelling: 'GLAY-lee',\n      ipa: '/ˈɡleɪliː/'\n    }\n  ],\n  [\n    'glaliemega',\n    {\n      abilities: { first: 'refrigerate' },\n      baseSpecies: 'glalie',\n      baseStats: { hp: 80, atk: 120, def: 80, spa: 120, spd: 80, spe: 100 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Gray',\n      eggGroups: ['Fairy', 'Mineral'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 362,\n      otherFormes: ['glalie'],\n      species: 'glalie-mega',\n      types: [TypesEnum.Ice],\n      weightkg: 350.2,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/glalie-mega.mp3',\n      respelling: 'GLAY-lee',\n      ipa: '/ˈɡleɪliː/'\n    }\n  ],\n  [\n    'spheal',\n    {\n      abilities: { first: 'thickfat', second: 'icebody', hidden: 'oblivious' },\n      baseStats: { hp: 70, atk: 40, def: 50, spa: 55, spd: 50, spe: 25 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['sealeo'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 363,\n      species: 'spheal',\n      types: [TypesEnum.Ice, TypesEnum.Water],\n      weightkg: 39.5,\n      aliases: ['tamazarashi'],\n      classification: 'Clap Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spheal.mp3',\n      respelling: 'SFEEL',\n      ipa: '/ˈsfiːl/'\n    }\n  ],\n  [\n    'sealeo',\n    {\n      abilities: { first: 'thickfat', second: 'icebody', hidden: 'oblivious' },\n      baseStats: { hp: 90, atk: 60, def: 70, spa: 75, spd: 70, spe: 45 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 32,\n      evos: ['walrein'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 364,\n      prevo: 'spheal',\n      species: 'sealeo',\n      types: [TypesEnum.Ice, TypesEnum.Water],\n      weightkg: 87.6,\n      aliases: ['seejong', 'todoguraa'],\n      classification: 'Ball Roll Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sealeo.mp3',\n      respelling: 'SEEL-ee-oh',\n      ipa: '/ˈsiːliːoʊ/'\n    }\n  ],\n  [\n    'walrein',\n    {\n      abilities: { first: 'thickfat', second: 'icebody', hidden: 'oblivious' },\n      baseStats: { hp: 110, atk: 80, def: 90, spa: 95, spd: 90, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 44,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 365,\n      prevo: 'sealeo',\n      species: 'walrein',\n      types: [TypesEnum.Ice, TypesEnum.Water],\n      weightkg: 150.6,\n      aliases: ['todozeruga'],\n      classification: 'Ice Break Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/walrein.mp3',\n      respelling: 'WAL-rain',\n      ipa: '/ˈwælreɪn/'\n    }\n  ],\n  [\n    'clamperl',\n    {\n      abilities: { first: 'shellarmor', hidden: 'rattled' },\n      baseStats: { hp: 35, atk: 64, def: 85, spa: 74, spd: 55, spe: 32 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['huntail', 'gorebyss'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 366,\n      species: 'clamperl',\n      types: [TypesEnum.Water],\n      weightkg: 52.5,\n      aliases: ['paaruru'],\n      classification: 'Bivalve Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/clamperl.mp3',\n      respelling: 'CLAM-perl',\n      ipa: '/ˈklæmpɜːrl/'\n    }\n  ],\n  [\n    'huntail',\n    {\n      abilities: { first: 'swiftswim', hidden: 'waterveil' },\n      baseStats: { hp: 55, atk: 104, def: 105, spa: 94, spd: 75, spe: 52 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Deep Sea Tooth',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 367,\n      prevo: 'clamperl',\n      species: 'huntail',\n      types: [TypesEnum.Water],\n      weightkg: 27,\n      aliases: ['hanteeru'],\n      classification: 'Deep Sea Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/huntail.mp3',\n      respelling: 'HUN-tail',\n      ipa: '/ˈhʌnteɪl/'\n    }\n  ],\n  [\n    'gorebyss',\n    {\n      abilities: { first: 'swiftswim', hidden: 'hydration' },\n      baseStats: { hp: 55, atk: 84, def: 105, spa: 114, spd: 75, spe: 52 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Pink',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Deep Sea Scale',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 368,\n      prevo: 'clamperl',\n      species: 'gorebyss',\n      types: [TypesEnum.Water],\n      weightkg: 22.6,\n      aliases: ['sakurabisu'],\n      classification: 'South Sea Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gorebyss.mp3',\n      respelling: 'GORE-a-biss',\n      ipa: '/ˈɡɔəræbɪs/'\n    }\n  ],\n  [\n    'relicanth',\n    {\n      abilities: { first: 'swiftswim', second: 'rockhead', hidden: 'sturdy' },\n      baseStats: { hp: 100, atk: 90, def: 130, spa: 45, spd: 65, spe: 55 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Gray',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { hp: 1, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 369,\n      species: 'relicanth',\n      types: [TypesEnum.Water, TypesEnum.Rock],\n      weightkg: 23.4,\n      aliases: ['jiiransu'],\n      classification: 'Longevity Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/relicanth.mp3',\n      respelling: 'REL-uh-canth',\n      ipa: '/ˈrɛləkænθ/'\n    }\n  ],\n  [\n    'luvdisc',\n    {\n      abilities: { first: 'swiftswim', hidden: 'hydration' },\n      baseStats: { hp: 43, atk: 30, def: 55, spa: 40, spd: 65, spe: 97 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Pink',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 370,\n      species: 'luvdisc',\n      types: [TypesEnum.Water],\n      weightkg: 8.7,\n      aliases: ['rabukasu'],\n      classification: 'Rendezvous Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/luvdisc.mp3',\n      respelling: 'LOVE-disk',\n      ipa: '/ˈlʌvdɪsk/'\n    }\n  ],\n  [\n    'bagon',\n    {\n      abilities: { first: 'rockhead', hidden: 'sheerforce' },\n      baseStats: { hp: 45, atk: 75, def: 60, spa: 40, spd: 30, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['shelgon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 371,\n      species: 'bagon',\n      types: [TypesEnum.Dragon],\n      weightkg: 42.1,\n      aliases: ['tatsubei'],\n      classification: 'Rock Head Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bagon.mp3',\n      respelling: 'BAY-gon',\n      ipa: '/ˈbeɪɡɒn/'\n    }\n  ],\n  [\n    'shelgon',\n    {\n      abilities: { first: 'rockhead', hidden: 'overcoat' },\n      baseStats: { hp: 65, atk: 95, def: 100, spa: 60, spd: 50, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      evos: ['salamence'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 372,\n      prevo: 'bagon',\n      species: 'shelgon',\n      types: [TypesEnum.Dragon],\n      weightkg: 110.5,\n      aliases: ['komoruu'],\n      classification: 'Endurance Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shelgon.mp3',\n      respelling: 'SHELL-gon',\n      ipa: '/ˈʃɛlɡɒn/'\n    }\n  ],\n  [\n    'salamence',\n    {\n      abilities: { first: 'intimidate', hidden: 'moxie' },\n      baseStats: { hp: 95, atk: 135, def: 80, spa: 110, spd: 80, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 50,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 373,\n      otherFormes: ['salamencemega'],\n      prevo: 'shelgon',\n      species: 'salamence',\n      types: [TypesEnum.Dragon, TypesEnum.Flying],\n      weightkg: 102.6,\n      aliases: ['boomanda', 'mence'],\n      classification: 'Dragon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/salamence.mp3',\n      respelling: 'SAL-uh-mence',\n      ipa: '/ˈsæləmɛns/'\n    }\n  ],\n  [\n    'salamencemega',\n    {\n      abilities: { first: 'aerilate' },\n      baseSpecies: 'salamence',\n      baseStats: { hp: 95, atk: 145, def: 130, spa: 120, spd: 90, spe: 120 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 373,\n      otherFormes: ['salamence'],\n      species: 'salamence-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Flying],\n      weightkg: 112.6,\n      aliases: ['megamence'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/salamence-mega.mp3',\n      respelling: 'SAL-uh-mence',\n      ipa: '/ˈsæləmɛns/'\n    }\n  ],\n  [\n    'beldum',\n    {\n      abilities: { first: 'clearbody', hidden: 'lightmetal' },\n      baseStats: { hp: 40, atk: 55, def: 80, spa: 35, spd: 60, spe: 30 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['metang'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 374,\n      species: 'beldum',\n      types: [TypesEnum.Steel, TypesEnum.Psychic],\n      weightkg: 95.2,\n      aliases: ['danbaru'],\n      classification: 'Iron Ball Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/beldum.mp3',\n      respelling: 'BELL-dum',\n      ipa: '/ˈbɛldʌm/'\n    }\n  ],\n  [\n    'metang',\n    {\n      abilities: { first: 'clearbody', hidden: 'lightmetal' },\n      baseStats: { hp: 60, atk: 75, def: 100, spa: 55, spd: 80, spe: 50 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      evos: ['metagross'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 375,\n      prevo: 'beldum',\n      species: 'metang',\n      types: [TypesEnum.Steel, TypesEnum.Psychic],\n      weightkg: 202.5,\n      aliases: ['metangu'],\n      classification: 'Iron Claw Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/metang.mp3',\n      respelling: 'met-TANG',\n      ipa: '/mɛˈtæŋ/'\n    }\n  ],\n  [\n    'metagross',\n    {\n      abilities: { first: 'clearbody', hidden: 'lightmetal' },\n      baseStats: { hp: 80, atk: 135, def: 130, spa: 95, spd: 90, spe: 70 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 45,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 376,\n      otherFormes: ['metagrossmega'],\n      prevo: 'metang',\n      species: 'metagross',\n      types: [TypesEnum.Steel, TypesEnum.Psychic],\n      weightkg: 550,\n      aliases: ['gross', 'metagurosu'],\n      classification: 'Iron Leg Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/metagross.mp3',\n      respelling: 'MET-uh-gross',\n      ipa: '/ˈmɛtəɡroʊs/'\n    }\n  ],\n  [\n    'metagrossmega',\n    {\n      abilities: { first: 'toughclaws' },\n      baseSpecies: 'metagross',\n      baseStats: { hp: 80, atk: 145, def: 150, spa: 105, spd: 110, spe: 110 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 376,\n      otherFormes: ['metagross'],\n      species: 'metagross-mega',\n      types: [TypesEnum.Steel, TypesEnum.Psychic],\n      weightkg: 942.9,\n      aliases: ['megagross', 'mgross'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/metagross-mega.mp3',\n      respelling: 'MET-uh-gross',\n      ipa: '/ˈmɛtəɡroʊs/'\n    }\n  ],\n  [\n    'regirock',\n    {\n      abilities: { first: 'clearbody', hidden: 'sturdy' },\n      baseStats: { hp: 80, atk: 100, def: 200, spa: 50, spd: 100, spe: 50 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 377,\n      species: 'regirock',\n      types: [TypesEnum.Rock],\n      weightkg: 230,\n      aliases: ['rejirokku'],\n      legendary: true,\n      classification: 'Rock Peak Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/regirock.mp3',\n      respelling: 'REDGE-ee-rock',\n      ipa: '/ˈrɛdʒiːrɒk/'\n    }\n  ],\n  [\n    'regice',\n    {\n      abilities: { first: 'clearbody', hidden: 'icebody' },\n      baseStats: { hp: 80, atk: 50, def: 100, spa: 100, spd: 200, spe: 50 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 378,\n      species: 'regice',\n      types: [TypesEnum.Ice],\n      weightkg: 175,\n      aliases: ['rejiaisu'],\n      legendary: true,\n      classification: 'Iceberg Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/regice.mp3',\n      respelling: 'REDGE-ice',\n      ipa: '/ˈrɛdʒaɪs/'\n    }\n  ],\n  [\n    'registeel',\n    {\n      abilities: { first: 'clearbody', hidden: 'lightmetal' },\n      baseStats: { hp: 80, atk: 75, def: 150, spa: 75, spd: 150, spe: 50 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 379,\n      species: 'registeel',\n      types: [TypesEnum.Steel],\n      weightkg: 205,\n      aliases: ['rejisuchiru'],\n      legendary: true,\n      classification: 'Iron Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/registeel.mp3',\n      respelling: 'REDGE-ee-steel',\n      ipa: '/ˈrɛdʒiːstiːl/'\n    }\n  ],\n  [\n    'latias',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 80, atk: 80, def: 90, spa: 110, spd: 130, spe: 110 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 380,\n      otherFormes: ['latiasmega'],\n      species: 'latias',\n      types: [TypesEnum.Dragon, TypesEnum.Psychic],\n      weightkg: 40,\n      aliases: ['rateiasu'],\n      legendary: true,\n      classification: 'Eon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/latias.mp3',\n      respelling: 'LAT-ee-ahs',\n      ipa: '/ˈlætiːɑːs/'\n    }\n  ],\n  [\n    'latiasmega',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'latias',\n      baseStats: { hp: 80, atk: 100, def: 120, spa: 140, spd: 150, spe: 110 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 380,\n      otherFormes: ['latias'],\n      species: 'latias-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Psychic],\n      weightkg: 52,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/latias-mega.mp3',\n      respelling: 'LAT-ee-ahs',\n      ipa: '/ˈlætiːɑːs/'\n    }\n  ],\n  [\n    'latios',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 80, atk: 90, def: 80, spa: 130, spd: 110, spe: 110 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 381,\n      otherFormes: ['latiosmega'],\n      species: 'latios',\n      types: [TypesEnum.Dragon, TypesEnum.Psychic],\n      weightkg: 60,\n      aliases: ['rateiosu'],\n      legendary: true,\n      classification: 'Eon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/latios.mp3',\n      respelling: 'LAT-ee-ose',\n      ipa: '/ˈlætiːoʊs/'\n    }\n  ],\n  [\n    'latiosmega',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'latios',\n      baseStats: { hp: 80, atk: 130, def: 100, spa: 160, spd: 120, spe: 110 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 381,\n      otherFormes: ['latios'],\n      species: 'latios-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Psychic],\n      weightkg: 70,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/latios-mega.mp3',\n      respelling: 'LAT-ee-ose',\n      ipa: '/ˈlætiːoʊs/'\n    }\n  ],\n  [\n    'kyogre',\n    {\n      abilities: { first: 'drizzle' },\n      baseStats: { hp: 100, atk: 100, def: 90, spa: 150, spd: 140, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 4.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 382,\n      otherFormes: ['kyogreprimal'],\n      species: 'kyogre',\n      types: [TypesEnum.Water],\n      weightkg: 352,\n      aliases: ['kaiooga', 'ogre', 'shrek'],\n      legendary: true,\n      classification: 'Sea Basin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kyogre.mp3',\n      respelling: 'kai-OH-gurr',\n      ipa: '/kaɪˈoʊɡər/'\n    }\n  ],\n  [\n    'kyogreprimal',\n    {\n      abilities: { first: 'primordialsea' },\n      baseSpecies: 'kyogre',\n      baseStats: { hp: 100, atk: 150, def: 90, spa: 180, spd: 160, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Primal',\n      formeLetter: 'P',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 9.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 382,\n      otherFormes: ['kyogre'],\n      species: 'kyogre-primal',\n      types: [TypesEnum.Water],\n      weightkg: 430,\n      aliases: ['pogre', 'primalogre'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kyogre-primal.mp3',\n      respelling: 'kai-OH-gurr',\n      ipa: '/kaɪˈoʊɡər/'\n    }\n  ],\n  [\n    'groudon',\n    {\n      abilities: { first: 'drought' },\n      baseStats: { hp: 100, atk: 150, def: 140, spa: 100, spd: 90, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 383,\n      otherFormes: ['groudonprimal'],\n      species: 'groudon',\n      types: [TypesEnum.Ground],\n      weightkg: 950,\n      aliases: ['don', 'guraadon'],\n      legendary: true,\n      classification: 'Continent Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/groudon.mp3',\n      respelling: 'GRAU-don',\n      ipa: '/ˈɡraʊdɒn/'\n    }\n  ],\n  [\n    'groudonprimal',\n    {\n      abilities: { first: 'desolateland' },\n      baseSpecies: 'groudon',\n      baseStats: { hp: 100, atk: 180, def: 160, spa: 150, spd: 90, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Primal',\n      formeLetter: 'P',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 383,\n      otherFormes: ['groudon'],\n      species: 'groudon-primal',\n      types: [TypesEnum.Ground, TypesEnum.Fire],\n      weightkg: 999.7,\n      aliases: ['pdon', 'primaldon'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/groudon-primal.mp3',\n      respelling: 'GRAU-don',\n      ipa: '/ˈɡraʊdɒn/'\n    }\n  ],\n  [\n    'rayquaza',\n    {\n      abilities: { first: 'airlock' },\n      baseStats: { hp: 105, atk: 150, def: 90, spa: 150, spd: 90, spe: 95 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 384,\n      otherFormes: ['rayquazamega'],\n      species: 'rayquaza',\n      types: [TypesEnum.Dragon, TypesEnum.Flying],\n      weightkg: 206.5,\n      aliases: ['fug', 'ray', 'rekkuuza'],\n      legendary: true,\n      classification: 'Sky High Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rayquaza.mp3',\n      respelling: 'ray-KWAZ-uh',\n      ipa: '/reɪˈkwæzə/'\n    }\n  ],\n  [\n    'rayquazamega',\n    {\n      abilities: { first: 'deltastream' },\n      baseSpecies: 'rayquaza',\n      baseStats: { hp: 105, atk: 180, def: 100, spa: 180, spd: 100, spe: 115 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 1, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 10.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 384,\n      otherFormes: ['rayquaza'],\n      species: 'rayquaza-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Flying],\n      weightkg: 392,\n      aliases: ['megaray', 'mray'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rayquaza-mega.mp3',\n      respelling: 'ray-KWAZ-uh',\n      ipa: '/reɪˈkwæzə/'\n    }\n  ],\n  [\n    'jirachi',\n    {\n      abilities: { first: 'serenegrace' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 385,\n      species: 'jirachi',\n      types: [TypesEnum.Steel, TypesEnum.Psychic],\n      weightkg: 1.1,\n      aliases: ['jiraachi', 'rachi'],\n      mythical: true,\n      classification: 'Wish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/jirachi.mp3',\n      respelling: 'jer-AH-chi',\n      ipa: '/dʒərˈɑːtʃiː/'\n    }\n  ],\n  [\n    'deoxys',\n    {\n      abilities: { first: 'pressure' },\n      baseForme: 'Normal',\n      baseStats: { hp: 50, atk: 150, def: 50, spa: 150, spd: 50, spe: 150 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 1 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 386,\n      otherFormes: ['deoxysattack', 'deoxysdefense', 'deoxysspeed'],\n      species: 'deoxys',\n      types: [TypesEnum.Psychic],\n      weightkg: 60.8,\n      aliases: ['deokishisu', 'deon', 'deoxysnormal'],\n      mythical: true,\n      classification: 'DNA Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/deoxys.mp3',\n      respelling: 'dee-OCKS-iss',\n      ipa: '/diːˈɒksɪs/'\n    }\n  ],\n  [\n    'deoxysattack',\n    {\n      abilities: { first: 'pressure' },\n      baseSpecies: 'deoxys',\n      baseStats: { hp: 50, atk: 180, def: 20, spa: 180, spd: 20, spe: 150 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 1, spd: 0, spe: 0 },\n      forme: 'Attack',\n      formeLetter: 'A',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 386,\n      otherFormes: ['deoxys', 'deoxysdefense', 'deoxysspeed'],\n      species: 'deoxys-attack',\n      types: [TypesEnum.Psychic],\n      weightkg: 60.8,\n      aliases: ['deoa', 'deoxysa'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/deoxys.mp3',\n      respelling: 'dee-OCKS-iss',\n      ipa: '/diːˈɒksɪs/'\n    }\n  ],\n  [\n    'deoxysdefense',\n    {\n      abilities: { first: 'pressure' },\n      baseSpecies: 'deoxys',\n      baseStats: { hp: 50, atk: 70, def: 160, spa: 70, spd: 160, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 1, spe: 0 },\n      forme: 'Defense',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 386,\n      otherFormes: ['deoxys', 'deoxysattack', 'deoxysspeed'],\n      species: 'deoxys-defense',\n      types: [TypesEnum.Psychic],\n      weightkg: 60.8,\n      aliases: ['deod', 'deoxysd', 'deoxysdefence'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/deoxys.mp3',\n      respelling: 'dee-OCKS-iss',\n      ipa: '/diːˈɒksɪs/'\n    }\n  ],\n  [\n    'deoxysspeed',\n    {\n      abilities: { first: 'pressure' },\n      baseSpecies: 'deoxys',\n      baseStats: { hp: 50, atk: 95, def: 90, spa: 95, spd: 90, spe: 180 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Speed',\n      formeLetter: 'S',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 386,\n      otherFormes: ['deoxys', 'deoxysattack', 'deoxysdefense'],\n      species: 'deoxys-speed',\n      types: [TypesEnum.Psychic],\n      weightkg: 60.8,\n      aliases: ['deos', 'deoxyss'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/deoxys.mp3',\n      respelling: 'dee-OCKS-iss',\n      ipa: '/diːˈɒksɪs/'\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/gen4.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'turtwig',\n    {\n      abilities: { first: 'overgrow', hidden: 'shellarmor' },\n      baseStats: { hp: 55, atk: 68, def: 64, spa: 45, spd: 55, spe: 31 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['grotle'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 387,\n      species: 'turtwig',\n      types: [TypesEnum.Grass],\n      weightkg: 10.2,\n      aliases: ['naetoru'],\n      classification: 'Tiny Leaf Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/turtwig.mp3',\n      respelling: 'TUR-twig',\n      ipa: '/ˈtɜːrtwɪɡ/'\n    }\n  ],\n  [\n    'grotle',\n    {\n      abilities: { first: 'overgrow', hidden: 'shellarmor' },\n      baseStats: { hp: 75, atk: 89, def: 85, spa: 55, spd: 65, spe: 36 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 18,\n      evos: ['torterra'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 388,\n      prevo: 'turtwig',\n      species: 'grotle',\n      types: [TypesEnum.Grass],\n      weightkg: 97,\n      aliases: ['hayashigame'],\n      classification: 'Grove Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grotle.mp3',\n      respelling: 'GRAHT-ull',\n      ipa: '/ˈɡrɑːtəl/'\n    }\n  ],\n  [\n    'torterra',\n    {\n      abilities: { first: 'overgrow', hidden: 'shellarmor' },\n      baseStats: { hp: 95, atk: 109, def: 105, spa: 75, spd: 85, spe: 56 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 2, def: 1, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 389,\n      prevo: 'grotle',\n      species: 'torterra',\n      types: [TypesEnum.Grass, TypesEnum.Ground],\n      weightkg: 310,\n      aliases: ['dodaitosu'],\n      classification: 'Continent Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/torterra.mp3',\n      respelling: 'tor-TERR-uh',\n      ipa: '/tɔːrˈtɛrə/'\n    }\n  ],\n  [\n    'chimchar',\n    {\n      abilities: { first: 'blaze', hidden: 'ironfist' },\n      baseStats: { hp: 44, atk: 58, def: 44, spa: 58, spd: 44, spe: 61 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['monferno'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 390,\n      species: 'chimchar',\n      types: [TypesEnum.Fire],\n      weightkg: 6.2,\n      aliases: ['hikozaru'],\n      classification: 'Chimp Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chimchar.mp3',\n      respelling: 'CHIM-char',\n      ipa: '/ˈtʃɪmtʃɑːr/'\n    }\n  ],\n  [\n    'monferno',\n    {\n      abilities: { first: 'blaze', hidden: 'ironfist' },\n      baseStats: { hp: 64, atk: 78, def: 52, spa: 78, spd: 52, spe: 81 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      evoLevel: 14,\n      evos: ['infernape'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 391,\n      prevo: 'chimchar',\n      species: 'monferno',\n      types: [TypesEnum.Fire, TypesEnum.Fighting],\n      weightkg: 22,\n      aliases: ['moukazaru'],\n      classification: 'Playful Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/monferno.mp3',\n      respelling: 'mon-FERN-oh',\n      ipa: '/mɒnˈfɜːrnoʊ/'\n    }\n  ],\n  [\n    'infernape',\n    {\n      abilities: { first: 'blaze', hidden: 'ironfist' },\n      baseStats: { hp: 76, atk: 104, def: 71, spa: 104, spd: 71, spe: 108 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 1 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 392,\n      prevo: 'monferno',\n      species: 'infernape',\n      types: [TypesEnum.Fire, TypesEnum.Fighting],\n      weightkg: 55,\n      aliases: ['goukazaru', 'nape'],\n      classification: 'Flame Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/infernape.mp3',\n      respelling: 'in-FER-nape',\n      ipa: '/ɪnˈfɜːrneɪp/'\n    }\n  ],\n  [\n    'piplup',\n    {\n      abilities: { first: 'torrent', hidden: 'competitive' },\n      baseStats: { hp: 53, atk: 51, def: 53, spa: 61, spd: 56, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['prinplup'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 393,\n      species: 'piplup',\n      types: [TypesEnum.Water],\n      weightkg: 5.2,\n      aliases: ['potchama'],\n      classification: 'Penguin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/piplup.mp3',\n      respelling: 'PIP-plup',\n      ipa: '/ˈpɪplʌp/'\n    }\n  ],\n  [\n    'prinplup',\n    {\n      abilities: { first: 'torrent', hidden: 'competitive' },\n      baseStats: { hp: 64, atk: 66, def: 68, spa: 81, spd: 76, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 16,\n      evos: ['empoleon'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 394,\n      prevo: 'piplup',\n      species: 'prinplup',\n      types: [TypesEnum.Water],\n      weightkg: 23,\n      aliases: ['pottaishi'],\n      classification: 'Penguin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/prinplup.mp3',\n      respelling: 'PRIN-plup',\n      ipa: '/ˈprɪnplʌp/'\n    }\n  ],\n  [\n    'empoleon',\n    {\n      abilities: { first: 'torrent', hidden: 'competitive' },\n      baseStats: { hp: 84, atk: 86, def: 88, spa: 111, spd: 101, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 395,\n      prevo: 'prinplup',\n      species: 'empoleon',\n      types: [TypesEnum.Water, TypesEnum.Steel],\n      weightkg: 84.5,\n      aliases: ['enperuto'],\n      classification: 'Emperor Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/empoleon.mp3',\n      respelling: 'im-PO-lee-on',\n      ipa: '/ɪmˈpoʊliːɒn/'\n    }\n  ],\n  [\n    'starly',\n    {\n      abilities: { first: 'keeneye', hidden: 'reckless' },\n      baseStats: { hp: 40, atk: 55, def: 30, spa: 30, spd: 30, spe: 60 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['staravia'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 396,\n      species: 'starly',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 2,\n      aliases: ['mukkuru'],\n      classification: 'Starling Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/starly.mp3',\n      respelling: 'STAR-lee',\n      ipa: '/ˈstɑːrliː/'\n    }\n  ],\n  [\n    'staravia',\n    {\n      abilities: { first: 'intimidate', hidden: 'reckless' },\n      baseStats: { hp: 55, atk: 75, def: 50, spa: 40, spd: 40, spe: 80 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 14,\n      evos: ['staraptor'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 397,\n      prevo: 'starly',\n      species: 'staravia',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 15.5,\n      aliases: ['mukubaado'],\n      classification: 'Starling Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/staravia.mp3',\n      respelling: 'star-AY-vee-ah',\n      ipa: '/stɑːrˈeɪviːɑː/'\n    }\n  ],\n  [\n    'staraptor',\n    {\n      abilities: { first: 'intimidate', hidden: 'reckless' },\n      baseStats: { hp: 85, atk: 120, def: 70, spa: 50, spd: 60, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 398,\n      prevo: 'staravia',\n      species: 'staraptor',\n      otherFormes: ['staraptormega'],\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 24.9,\n      aliases: ['mukuhooku'],\n      classification: 'Predator Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/staraptor.mp3',\n      respelling: 'star-RAPT-orr',\n      ipa: '/stɑːˈræptɒr/'\n    }\n  ],\n  [\n    'staraptormega',\n    {\n      abilities: { first: 'intimidate', hidden: 'reckless' },\n      baseStats: { hp: 85, atk: 140, def: 100, spa: 60, spd: 90, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      baseSpecies: 'staraptor',\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 398,\n      otherFormes: ['staraptor'],\n      species: 'staraptor-mega',\n      types: [TypesEnum.Fighting, TypesEnum.Flying],\n      weightkg: 50,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/staraptor.mp3',\n      respelling: 'star-RAPT-orr',\n      ipa: '/stɑːˈræptɒr/'\n    }\n  ],\n  [\n    'bidoof',\n    {\n      abilities: { first: 'simple', second: 'unaware', hidden: 'moody' },\n      baseStats: { hp: 59, atk: 45, def: 40, spa: 35, spd: 40, spe: 31 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['bibarel'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 399,\n      species: 'bidoof',\n      types: [TypesEnum.Normal],\n      weightkg: 20,\n      aliases: ['bippa'],\n      classification: 'Plump Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bidoof.mp3',\n      respelling: 'BEE-doof',\n      ipa: '/ˈbiːduːf/'\n    }\n  ],\n  [\n    'bibarel',\n    {\n      abilities: { first: 'simple', second: 'unaware', hidden: 'moody' },\n      baseStats: { hp: 79, atk: 85, def: 60, spa: 55, spd: 60, spe: 71 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 15,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 400,\n      prevo: 'bidoof',\n      species: 'bibarel',\n      types: [TypesEnum.Normal, TypesEnum.Water],\n      weightkg: 31.5,\n      aliases: ['biidaru'],\n      classification: 'Beaver Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bibarel.mp3',\n      respelling: 'BEE-bear-ull',\n      ipa: '/ˈbiːbɛərəl/'\n    }\n  ],\n  [\n    'kricketot',\n    {\n      abilities: { first: 'shedskin', hidden: 'runaway' },\n      baseStats: { hp: 37, atk: 25, def: 41, spa: 25, spd: 41, spe: 25 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['kricketune'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 401,\n      species: 'kricketot',\n      types: [TypesEnum.Bug],\n      weightkg: 2.2,\n      aliases: ['korobooshi'],\n      classification: 'Cricket Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kricketot.mp3',\n      respelling: 'KRICK-eh-tot',\n      ipa: '/ˈkrɪkɛtɒt/'\n    }\n  ],\n  [\n    'kricketune',\n    {\n      abilities: { first: 'swarm', hidden: 'technician' },\n      baseStats: { hp: 77, atk: 85, def: 51, spa: 55, spd: 51, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 10,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 402,\n      prevo: 'kricketot',\n      species: 'kricketune',\n      types: [TypesEnum.Bug],\n      weightkg: 25.5,\n      aliases: ['korotokku'],\n      classification: 'Cricket Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kricketune.mp3',\n      respelling: 'KRICK-eh-toon',\n      ipa: '/ˈkrɪkɛtuːn/'\n    }\n  ],\n  [\n    'shinx',\n    {\n      abilities: { first: 'rivalry', second: 'intimidate', hidden: 'guts' },\n      baseStats: { hp: 45, atk: 65, def: 34, spa: 40, spd: 34, spe: 45 },\n      catchRate: {\n        base: 235,\n        percentageWithOrdinaryPokeballAtFullHealth: '41.3%'\n      },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['luxio'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 403,\n      species: 'shinx',\n      types: [TypesEnum.Electric],\n      weightkg: 9.5,\n      aliases: ['korinku'],\n      classification: 'Flash Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shinx.mp3',\n      respelling: 'SHINKS',\n      ipa: '/ˈʃɪŋks/'\n    }\n  ],\n  [\n    'luxio',\n    {\n      abilities: { first: 'rivalry', second: 'intimidate', hidden: 'guts' },\n      baseStats: { hp: 60, atk: 85, def: 49, spa: 60, spd: 49, spe: 60 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 15,\n      evos: ['luxray'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 404,\n      prevo: 'shinx',\n      species: 'luxio',\n      types: [TypesEnum.Electric],\n      weightkg: 30.5,\n      aliases: ['rukushio'],\n      classification: 'Spark Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/luxio.mp3',\n      respelling: 'LUCKS-ee-oh',\n      ipa: '/ˈlʌksiːoʊ/'\n    }\n  ],\n  [\n    'luxray',\n    {\n      abilities: { first: 'rivalry', second: 'intimidate', hidden: 'guts' },\n      baseStats: { hp: 80, atk: 120, def: 79, spa: 95, spd: 79, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 405,\n      prevo: 'luxio',\n      species: 'luxray',\n      types: [TypesEnum.Electric],\n      weightkg: 42,\n      aliases: ['rentoraa'],\n      classification: 'Gleam Eyes Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/luxray.mp3',\n      respelling: 'LUCKS-ray',\n      ipa: '/ˈlʌksreɪ/'\n    }\n  ],\n  [\n    'budew',\n    {\n      abilities: {\n        first: 'naturalcure',\n        second: 'poisonpoint',\n        hidden: 'leafguard'\n      },\n      baseStats: { hp: 40, atk: 30, def: 35, spa: 50, spd: 70, spe: 55 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['roselia'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 406,\n      species: 'budew',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 1.2,\n      aliases: ['subomii'],\n      classification: 'Bud Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/budew.mp3',\n      respelling: 'Buh-DOO',\n      ipa: '/bəˈduː/'\n    }\n  ],\n  [\n    'roserade',\n    {\n      abilities: {\n        first: 'naturalcure',\n        second: 'poisonpoint',\n        hidden: 'technician'\n      },\n      baseStats: { hp: 60, atk: 70, def: 65, spa: 125, spd: 105, spe: 90 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 'use Shiny Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 407,\n      prevo: 'roselia',\n      species: 'roserade',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 14.5,\n      aliases: ['rozureido'],\n      classification: 'Bouquet Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/roserade.mp3',\n      respelling: 'ROSE-raid',\n      ipa: '/ˈroʊzreɪd/'\n    }\n  ],\n  [\n    'cranidos',\n    {\n      abilities: { first: 'moldbreaker', hidden: 'sheerforce' },\n      baseStats: { hp: 67, atk: 125, def: 40, spa: 30, spd: 30, spe: 58 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['rampardos'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 7710,\n      num: 408,\n      species: 'cranidos',\n      types: [TypesEnum.Rock],\n      weightkg: 31.5,\n      aliases: ['zugaidosu'],\n      classification: 'Head Butt Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cranidos.mp3',\n      respelling: 'CRANE-ee-dose',\n      ipa: '/ˈkreɪniːdoʊs/'\n    }\n  ],\n  [\n    'rampardos',\n    {\n      abilities: { first: 'moldbreaker', hidden: 'sheerforce' },\n      baseStats: { hp: 97, atk: 165, def: 60, spa: 65, spd: 50, spe: 58 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 7710,\n      num: 409,\n      prevo: 'cranidos',\n      species: 'rampardos',\n      types: [TypesEnum.Rock],\n      weightkg: 102.5,\n      aliases: ['ramuparudo'],\n      classification: 'Head Butt Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rampardos.mp3',\n      respelling: 'ram-PAR-dose',\n      ipa: '/ræmˈpɑːrdoʊs/'\n    }\n  ],\n  [\n    'shieldon',\n    {\n      abilities: { first: 'sturdy', hidden: 'soundproof' },\n      baseStats: { hp: 30, atk: 42, def: 118, spa: 42, spd: 88, spe: 30 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['bastiodon'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 7710,\n      num: 410,\n      species: 'shieldon',\n      types: [TypesEnum.Rock, TypesEnum.Steel],\n      weightkg: 57,\n      aliases: ['tatetopusu'],\n      classification: 'Shield Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shieldon.mp3',\n      respelling: 'SHEEL-donn',\n      ipa: '/ˈʃiːldɒn/'\n    }\n  ],\n  [\n    'bastiodon',\n    {\n      abilities: { first: 'sturdy', hidden: 'soundproof' },\n      baseStats: { hp: 60, atk: 52, def: 168, spa: 47, spd: 138, spe: 30 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Monster'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 7710,\n      num: 411,\n      prevo: 'shieldon',\n      species: 'bastiodon',\n      types: [TypesEnum.Rock, TypesEnum.Steel],\n      weightkg: 149.5,\n      aliases: ['toridepusu'],\n      classification: 'Shield Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bastiodon.mp3',\n      respelling: 'BAS-tee-oh-donn',\n      ipa: '/ˈbæstiːoʊdɒn/'\n    }\n  ],\n  [\n    'burmy',\n    {\n      abilities: { first: 'shedskin', hidden: 'overcoat' },\n      baseForme: 'Plant',\n      baseStats: { hp: 40, atk: 29, def: 45, spa: 29, spd: 45, spe: 36 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      cosmeticFormes: ['Burmy-Sandy', 'Burmy-Trash'],\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['wormadam', 'wormadamsandy', 'wormadamtrash', 'mothim'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 412,\n      species: 'burmy',\n      types: [TypesEnum.Bug],\n      weightkg: 3.4,\n      aliases: ['burmygrass', 'burmyplant', 'burmysandy', 'burmytrash', 'minomutchi'],\n      classification: 'Bagworm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/burmy.mp3',\n      respelling: 'BURR-mee',\n      ipa: '/ˈbɜːrmiː/'\n    }\n  ],\n  [\n    'wormadam',\n    {\n      abilities: { first: 'anticipation', hidden: 'overcoat' },\n      baseForme: 'Plant',\n      baseStats: { hp: 60, atk: 59, def: 85, spa: 79, spd: 105, spe: 36 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Level 20, Female only',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 413,\n      otherFormes: ['wormadamsandy', 'wormadamtrash'],\n      prevo: 'burmy',\n      species: 'wormadam',\n      types: [TypesEnum.Bug, TypesEnum.Grass],\n      weightkg: 6.5,\n      aliases: ['minomadamu', 'wormadamgrass', 'wormadamp', 'wormadamplant', 'wormadamplantcloak'],\n      classification: 'Bagworm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wormadam.mp3',\n      respelling: 'WURR-mah-dam',\n      ipa: '/ˈwʌrmɑːdæm/'\n    }\n  ],\n  [\n    'wormadamsandy',\n    {\n      abilities: { first: 'anticipation', hidden: 'overcoat' },\n      baseSpecies: 'wormadam',\n      baseStats: { hp: 60, atk: 79, def: 105, spa: 59, spd: 85, spe: 36 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      forme: 'Sandy',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 413,\n      otherFormes: ['wormadam', 'wormadamtrash'],\n      prevo: 'burmy',\n      species: 'wormadam-sandy',\n      types: [TypesEnum.Bug, TypesEnum.Ground],\n      weightkg: 6.5,\n      aliases: ['wormadamg', 'wormadamground', 'wormadamsandycloak'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wormadam.mp3',\n      respelling: 'WURR-mah-dam',\n      ipa: '/ˈwʌrmɑːdæm/'\n    }\n  ],\n  [\n    'wormadamtrash',\n    {\n      abilities: { first: 'anticipation', hidden: 'overcoat' },\n      baseSpecies: 'wormadam',\n      baseStats: { hp: 60, atk: 69, def: 95, spa: 69, spd: 95, spe: 36 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 20,\n      forme: 'Trash',\n      formeLetter: 'S',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 413,\n      otherFormes: ['wormadam', 'wormadamsandy'],\n      prevo: 'burmy',\n      species: 'wormadam-trash',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 6.5,\n      aliases: ['wormadams', 'wormadamsteel', 'wormadamtrashcloak'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wormadam.mp3',\n      respelling: 'WURR-mah-dam',\n      ipa: '/ˈwʌrmɑːdæm/'\n    }\n  ],\n  [\n    'mothim',\n    {\n      abilities: { first: 'swarm', hidden: 'tintedlens' },\n      baseStats: { hp: 70, atk: 94, def: 50, spa: 94, spd: 50, spe: 66 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      evoLevel: 'Level 20, Male only',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 414,\n      prevo: 'burmy',\n      species: 'mothim',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 23.3,\n      aliases: ['gaameiru'],\n      classification: 'Moth Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mothim.mp3',\n      respelling: 'MAH-thum',\n      ipa: '/ˈmɑːθəm/'\n    }\n  ],\n  [\n    'combee',\n    {\n      abilities: { first: 'honeygather', hidden: 'hustle' },\n      baseStats: { hp: 30, atk: 30, def: 42, spa: 30, spd: 42, spe: 70 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['vespiquen'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 415,\n      species: 'combee',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 5.5,\n      aliases: ['mitsuhanii'],\n      classification: 'Tiny Bee Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/combee.mp3',\n      respelling: 'COHM-bee',\n      ipa: '/ˈkoʊmbiː/'\n    }\n  ],\n  [\n    'vespiquen',\n    {\n      abilities: { first: 'pressure', hidden: 'unnerve' },\n      baseStats: { hp: 70, atk: 80, def: 102, spa: 80, spd: 102, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 'Level 21, Female only',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 416,\n      prevo: 'combee',\n      species: 'vespiquen',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 38.5,\n      aliases: ['biikuin'],\n      classification: 'Beehive Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vespiquen.mp3',\n      respelling: 'VES-pa-kwen',\n      ipa: '/ˈvɛspækwɛn/'\n    }\n  ],\n  [\n    'pachirisu',\n    {\n      abilities: { first: 'runaway', second: 'pickup', hidden: 'voltabsorb' },\n      baseStats: { hp: 60, atk: 45, def: 70, spa: 45, spd: 90, spe: 95 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'White',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 417,\n      species: 'pachirisu',\n      types: [TypesEnum.Electric],\n      weightkg: 3.9,\n      classification: 'EleSquirrel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pachirisu.mp3',\n      respelling: 'patch-ee-REE-su',\n      ipa: '/pætʃiːˈriːsuː/'\n    }\n  ],\n  [\n    'buizel',\n    {\n      abilities: { first: 'swiftswim', hidden: 'waterveil' },\n      baseStats: { hp: 55, atk: 65, def: 35, spa: 60, spd: 30, spe: 85 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['floatzel'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 418,\n      species: 'buizel',\n      types: [TypesEnum.Water],\n      weightkg: 29.5,\n      aliases: ['buizeru'],\n      classification: 'Sea Weasel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/buizel.mp3',\n      respelling: 'BWEE-zull',\n      ipa: '/ˈbwiːzəl/'\n    }\n  ],\n  [\n    'floatzel',\n    {\n      abilities: { first: 'swiftswim', hidden: 'waterveil' },\n      baseStats: { hp: 85, atk: 105, def: 55, spa: 85, spd: 50, spe: 115 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 26,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 419,\n      prevo: 'buizel',\n      species: 'floatzel',\n      types: [TypesEnum.Water],\n      weightkg: 33.5,\n      aliases: ['furoozeru'],\n      classification: 'Sea Weasel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/floatzel.mp3',\n      respelling: 'FLOAT-zull',\n      ipa: '/ˈfloʊtzəl/'\n    }\n  ],\n  [\n    'cherubi',\n    {\n      abilities: { first: 'chlorophyll' },\n      baseStats: { hp: 45, atk: 35, def: 45, spa: 62, spd: 53, spe: 35 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['cherrim'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 420,\n      species: 'cherubi',\n      types: [TypesEnum.Grass],\n      weightkg: 3.3,\n      aliases: ['cherinbo'],\n      classification: 'Cherry Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cherubi.mp3',\n      respelling: 'chuh-ROO-bee',\n      ipa: '/tʃəˈruːbiː/'\n    }\n  ],\n  [\n    'cherrim',\n    {\n      abilities: { first: 'flowergift' },\n      baseForme: 'Overcast',\n      baseStats: { hp: 70, atk: 60, def: 70, spa: 87, spd: 78, spe: 85 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 25,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 421,\n      otherFormes: ['cherrimsunshine'],\n      prevo: 'cherubi',\n      species: 'cherrim',\n      types: [TypesEnum.Grass],\n      weightkg: 9.3,\n      aliases: ['cherimu', 'cherrimo', 'cherrimovercast'],\n      classification: 'Blossom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cherrim.mp3',\n      respelling: 'chuh-RIM',\n      ipa: '/tʃəˈrɪm/'\n    }\n  ],\n  [\n    'cherrimsunshine',\n    {\n      abilities: { first: 'flowergift' },\n      baseSpecies: 'cherrim',\n      baseStats: { hp: 70, atk: 60, def: 70, spa: 87, spd: 78, spe: 85 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Pink',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 25,\n      forme: 'Sunshine',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 421,\n      otherFormes: ['cherrim'],\n      prevo: 'cherubi',\n      species: 'cherrim-sunshine',\n      types: [TypesEnum.Grass],\n      weightkg: 9.3,\n      aliases: ['cherrims', 'cherrimsunny'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cherrim.mp3',\n      respelling: 'chuh-RIM',\n      ipa: '/tʃəˈrɪm/'\n    }\n  ],\n  [\n    'shellos',\n    {\n      abilities: {\n        first: 'stickyhold',\n        second: 'stormdrain',\n        hidden: 'sandforce'\n      },\n      baseForme: 'West',\n      baseStats: { hp: 76, atk: 48, def: 48, spa: 57, spd: 62, spe: 34 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Purple',\n      cosmeticFormes: ['Shellos-East'],\n      eggGroups: ['Water 1', 'Amorphous'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['gastrodon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 422,\n      species: 'shellos',\n      types: [TypesEnum.Water],\n      weightkg: 6.3,\n      aliases: ['karanakushi', 'shelloseast', 'shelloswest'],\n      classification: 'Sea Slug Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shellos.mp3',\n      respelling: 'SHELL-oss',\n      ipa: '/ˈʃɛlɒs/'\n    }\n  ],\n  [\n    'gastrodon',\n    {\n      abilities: {\n        first: 'stickyhold',\n        second: 'stormdrain',\n        hidden: 'sandforce'\n      },\n      baseForme: 'West',\n      baseStats: { hp: 111, atk: 83, def: 68, spa: 92, spd: 82, spe: 39 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      cosmeticFormes: ['Gastrodon-East'],\n      eggGroups: ['Water 1', 'Amorphous'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 423,\n      prevo: 'shellos',\n      species: 'gastrodon',\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 29.9,\n      aliases: ['gastrodone', 'gastrodoneast', 'gastrodoneastsea', 'gastrodonw', 'gastrodonwest', 'gastrodonwestsea', 'toritodon'],\n      classification: 'Sea Slug Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gastrodon.mp3',\n      respelling: 'GAS-tro-donn',\n      ipa: '/ˈɡæstroʊdɒn/'\n    }\n  ],\n  [\n    'ambipom',\n    {\n      abilities: { first: 'technician', second: 'pickup', hidden: 'skilllink' },\n      baseStats: { hp: 75, atk: 100, def: 66, spa: 60, spd: 66, spe: 115 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'Level up while knowing Double Hit',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 424,\n      prevo: 'aipom',\n      species: 'ambipom',\n      types: [TypesEnum.Normal],\n      weightkg: 20.3,\n      aliases: ['eteboosu'],\n      classification: 'Long Tail Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ambipom.mp3',\n      respelling: 'AM-bih-pom',\n      ipa: '/ˈæmbɪpɒm/'\n    }\n  ],\n  [\n    'drifloon',\n    {\n      abilities: { first: 'aftermath', second: 'unburden', hidden: 'flareboost' },\n      baseStats: { hp: 90, atk: 50, def: 34, spa: 60, spd: 44, spe: 70 },\n      catchRate: {\n        base: 125,\n        percentageWithOrdinaryPokeballAtFullHealth: '25.7%'\n      },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['drifblim'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 7710,\n      num: 425,\n      species: 'drifloon',\n      types: [TypesEnum.Ghost, TypesEnum.Flying],\n      weightkg: 1.2,\n      aliases: ['fuwante'],\n      classification: 'Balloon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drifloon.mp3',\n      respelling: 'DRIFF-loon',\n      ipa: '/ˈdrɪfluːn/'\n    }\n  ],\n  [\n    'drifblim',\n    {\n      abilities: { first: 'aftermath', second: 'unburden', hidden: 'flareboost' },\n      baseStats: { hp: 150, atk: 80, def: 44, spa: 90, spd: 54, spe: 80 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 28,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fluctuating',\n      minimumHatchTime: 7710,\n      num: 426,\n      prevo: 'drifloon',\n      species: 'drifblim',\n      types: [TypesEnum.Ghost, TypesEnum.Flying],\n      weightkg: 15,\n      aliases: ['fuwaraido'],\n      classification: 'Blimp Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drifblim.mp3',\n      respelling: 'DRIFF-blimm',\n      ipa: '/ˈdrɪfblɪm/'\n    }\n  ],\n  [\n    'buneary',\n    {\n      abilities: { first: 'runaway', second: 'klutz', hidden: 'limber' },\n      baseStats: { hp: 55, atk: 66, def: 44, spa: 44, spd: 56, spe: 85 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['lopunny'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 427,\n      species: 'buneary',\n      types: [TypesEnum.Normal],\n      weightkg: 5.5,\n      aliases: ['mimiroru'],\n      classification: 'Rabbit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/buneary.mp3',\n      respelling: 'buh-NEER-ree',\n      ipa: '/bəˈnɪəriː/'\n    }\n  ],\n  [\n    'lopunny',\n    {\n      abilities: { first: 'cutecharm', second: 'klutz', hidden: 'limber' },\n      baseStats: { hp: 65, atk: 76, def: 84, spa: 54, spd: 96, spe: 105 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 2,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 428,\n      otherFormes: ['lopunnymega'],\n      prevo: 'buneary',\n      species: 'lopunny',\n      types: [TypesEnum.Normal],\n      weightkg: 33.3,\n      aliases: ['mimiroppu'],\n      classification: 'Rabbit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lopunny.mp3',\n      respelling: 'LAH-puh-nee',\n      ipa: '/ˈlɑːpəniː/'\n    }\n  ],\n  [\n    'lopunnymega',\n    {\n      abilities: { first: 'scrappy' },\n      baseSpecies: 'lopunny',\n      baseStats: { hp: 65, atk: 136, def: 94, spa: 54, spd: 96, spe: 135 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 428,\n      otherFormes: ['lopunny'],\n      species: 'lopunny-mega',\n      types: [TypesEnum.Normal, TypesEnum.Fighting],\n      weightkg: 28.3,\n      aliases: ['megabunny', 'megalop'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lopunny-mega.mp3',\n      respelling: 'LAH-puh-nee',\n      ipa: '/ˈlɑːpəniː/'\n    }\n  ],\n  [\n    'mismagius',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 60, atk: 60, def: 60, spa: 105, spd: 105, spe: 105 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 1, spe: 0 },\n      evoLevel: 'use Dusk Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 429,\n      prevo: 'misdreavus',\n      species: 'mismagius',\n      types: [TypesEnum.Ghost],\n      weightkg: 4.4,\n      aliases: ['muumaaji'],\n      classification: 'Magical Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mismagius.mp3',\n      respelling: 'mis-MAG-ee-us',\n      ipa: '/mɪsˈmæɡiːʌs/'\n    }\n  ],\n  [\n    'honchkrow',\n    {\n      abilities: { first: 'insomnia', second: 'superluck', hidden: 'moxie' },\n      baseStats: { hp: 100, atk: 125, def: 52, spa: 105, spd: 52, spe: 71 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Black',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Dusk Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 430,\n      prevo: 'murkrow',\n      species: 'honchkrow',\n      types: [TypesEnum.Dark, TypesEnum.Flying],\n      weightkg: 27.3,\n      aliases: ['donkarasu', 'honch'],\n      classification: 'Big Boss Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/honchkrow.mp3',\n      respelling: 'HONCH-krow',\n      ipa: '/ˈhɒntʃkroʊ/'\n    }\n  ],\n  [\n    'glameow',\n    {\n      abilities: { first: 'limber', second: 'owntempo', hidden: 'keeneye' },\n      baseStats: { hp: 49, atk: 55, def: 42, spa: 42, spd: 37, spe: 85 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['purugly'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 431,\n      species: 'glameow',\n      types: [TypesEnum.Normal],\n      weightkg: 3.9,\n      aliases: ['nyarumaa'],\n      classification: 'Catty Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/glameow.mp3',\n      respelling: 'GLAM-meow',\n      ipa: '/ˈɡlæmjaʊ/'\n    }\n  ],\n  [\n    'purugly',\n    {\n      abilities: { first: 'thickfat', second: 'owntempo', hidden: 'defiant' },\n      baseStats: { hp: 71, atk: 82, def: 64, spa: 64, spd: 59, spe: 112 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 38,\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 432,\n      prevo: 'glameow',\n      species: 'purugly',\n      types: [TypesEnum.Normal],\n      weightkg: 43.8,\n      aliases: ['bunyatto'],\n      classification: 'Tiger Cat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/purugly.mp3',\n      respelling: 'prr-UG-lee',\n      ipa: '/pərˈʌɡliː/'\n    }\n  ],\n  [\n    'chingling',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 45, atk: 30, def: 50, spa: 65, spd: 50, spe: 45 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['chimecho'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 433,\n      species: 'chingling',\n      types: [TypesEnum.Psychic],\n      weightkg: 0.6,\n      aliases: ['riishan'],\n      classification: 'Bell Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chingling.mp3',\n      respelling: 'CHING-ling',\n      ipa: '/ˈtʃɪŋlɪŋ/'\n    }\n  ],\n  [\n    'stunky',\n    {\n      abilities: { first: 'stench', second: 'aftermath', hidden: 'keeneye' },\n      baseStats: { hp: 63, atk: 63, def: 47, spa: 41, spd: 41, spe: 74 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['skuntank'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 434,\n      species: 'stunky',\n      types: [TypesEnum.Poison, TypesEnum.Dark],\n      weightkg: 19.2,\n      aliases: ['sukanpuu'],\n      classification: 'Skunk Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/stunky.mp3',\n      respelling: 'STUNK-ee',\n      ipa: '/ˈstʌŋkiː/'\n    }\n  ],\n  [\n    'skuntank',\n    {\n      abilities: { first: 'stench', second: 'aftermath', hidden: 'keeneye' },\n      baseStats: { hp: 103, atk: 93, def: 67, spa: 71, spd: 61, spe: 84 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 435,\n      prevo: 'stunky',\n      species: 'skuntank',\n      types: [TypesEnum.Poison, TypesEnum.Dark],\n      weightkg: 38,\n      aliases: ['sukatanku'],\n      classification: 'Skunk Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skuntank.mp3',\n      respelling: 'SKUN-tank',\n      ipa: '/ˈskʌntæŋk/'\n    }\n  ],\n  [\n    'bronzor',\n    {\n      abilities: { first: 'levitate', second: 'heatproof', hidden: 'heavymetal' },\n      baseStats: { hp: 57, atk: 24, def: 86, spa: 24, spd: 86, spe: 23 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['bronzong'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 436,\n      species: 'bronzor',\n      types: [TypesEnum.Steel, TypesEnum.Psychic],\n      weightkg: 60.5,\n      aliases: ['doomiraa'],\n      classification: 'Bronze Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bronzor.mp3',\n      respelling: 'BRAWN-zor',\n      ipa: '/ˈbrɔːnzɔːr/'\n    }\n  ],\n  [\n    'bronzong',\n    {\n      abilities: { first: 'levitate', second: 'heatproof', hidden: 'heavymetal' },\n      baseStats: { hp: 67, atk: 89, def: 116, spa: 79, spd: 116, spe: 33 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Green',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 33,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 437,\n      prevo: 'bronzor',\n      species: 'bronzong',\n      types: [TypesEnum.Steel, TypesEnum.Psychic],\n      weightkg: 187,\n      aliases: ['dootakun', 'zong'],\n      classification: 'Bronze Bell Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bronzong.mp3',\n      respelling: 'brawn-ZONG',\n      ipa: '/brɔːnˈzɒŋ/'\n    }\n  ],\n  [\n    'bonsly',\n    {\n      abilities: { first: 'sturdy', second: 'rockhead', hidden: 'rattled' },\n      baseStats: { hp: 50, atk: 80, def: 95, spa: 10, spd: 45, spe: 10 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['sudowoodo'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 438,\n      species: 'bonsly',\n      types: [TypesEnum.Rock],\n      weightkg: 15,\n      aliases: ['usohachi'],\n      classification: 'Bonsai Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bonsly.mp3',\n      respelling: 'BON-sly',\n      ipa: '/ˈbɒnslaɪ/'\n    }\n  ],\n  [\n    'mimejr',\n    {\n      abilities: { first: 'soundproof', second: 'filter', hidden: 'technician' },\n      baseStats: { hp: 20, atk: 25, def: 45, spa: 70, spd: 90, spe: 60 },\n      catchRate: {\n        base: 145,\n        percentageWithOrdinaryPokeballAtFullHealth: '28.7%'\n      },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['mrmime'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 439,\n      species: 'Mime Jr.',\n      specialBulbapediaUrl: 'Mime_Jr.',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 13,\n      aliases: ['manene', 'mime jr.', 'mime jr', 'mime junior'],\n      classification: 'Mime Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mimejr.mp3'\n    }\n  ],\n  [\n    'happiny',\n    {\n      abilities: {\n        first: 'naturalcure',\n        second: 'serenegrace',\n        hidden: 'friendguard'\n      },\n      baseStats: { hp: 100, atk: 5, def: 5, spa: 15, spd: 65, spe: 30 },\n      catchRate: {\n        base: 130,\n        percentageWithOrdinaryPokeballAtFullHealth: '26.5%'\n      },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['chansey'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 10280,\n      num: 440,\n      species: 'happiny',\n      types: [TypesEnum.Normal],\n      weightkg: 24.4,\n      aliases: ['pinpuku'],\n      classification: 'Playhouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/happiny.mp3',\n      respelling: 'hap-PEE-nee',\n      ipa: '/hæpˈpiːniː/'\n    }\n  ],\n  [\n    'chatot',\n    {\n      abilities: { first: 'keeneye', second: 'tangledfeet', hidden: 'bigpecks' },\n      baseStats: { hp: 76, atk: 65, def: 45, spa: 92, spd: 42, spe: 91 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Black',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 441,\n      species: 'chatot',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 1.9,\n      aliases: ['perappu'],\n      classification: 'Music Note Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chatot.mp3',\n      respelling: 'CHAH-tot',\n      ipa: '/ˈtʃɑːtɒt/'\n    }\n  ],\n  [\n    'spiritomb',\n    {\n      abilities: { first: 'pressure', hidden: 'infiltrator' },\n      baseStats: { hp: 50, atk: 92, def: 108, spa: 92, spd: 108, spe: 35 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Purple',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 442,\n      species: 'spiritomb',\n      types: [TypesEnum.Ghost, TypesEnum.Dark],\n      weightkg: 108,\n      aliases: ['mikaruge'],\n      classification: 'Forbidden Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spiritomb.mp3',\n      respelling: 'SPIRI-toom',\n      ipa: '/ˈspɪrɪtuːm/'\n    }\n  ],\n  [\n    'gible',\n    {\n      abilities: { first: 'sandveil', hidden: 'roughskin' },\n      baseStats: { hp: 58, atk: 70, def: 45, spa: 40, spd: 45, spe: 42 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['gabite'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 443,\n      species: 'gible',\n      types: [TypesEnum.Dragon, TypesEnum.Ground],\n      weightkg: 20.5,\n      aliases: ['fukamaru'],\n      classification: 'Land Shark Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gible.mp3',\n      respelling: 'GIBB-bull',\n      ipa: '/ˈɡɪbʊl/'\n    }\n  ],\n  [\n    'gabite',\n    {\n      abilities: { first: 'sandveil', hidden: 'roughskin' },\n      baseStats: { hp: 68, atk: 90, def: 65, spa: 50, spd: 55, spe: 82 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 24,\n      evos: ['garchomp'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 444,\n      prevo: 'gible',\n      species: 'gabite',\n      types: [TypesEnum.Dragon, TypesEnum.Ground],\n      weightkg: 56,\n      aliases: ['gabaito'],\n      classification: 'Cave Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gabite.mp3',\n      respelling: 'guh-BITE',\n      ipa: '/ɡəˈbaɪt/'\n    }\n  ],\n  [\n    'garchomp',\n    {\n      abilities: { first: 'sandveil', hidden: 'roughskin' },\n      baseStats: { hp: 108, atk: 130, def: 95, spa: 80, spd: 85, spe: 102 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 48,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 445,\n      otherFormes: ['garchompmega', 'garchompmegaz'],\n      prevo: 'gabite',\n      species: 'garchomp',\n      types: [TypesEnum.Dragon, TypesEnum.Ground],\n      weightkg: 95,\n      aliases: ['chomp', 'gaburiasu'],\n      classification: 'Mach Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/garchomp.mp3',\n      respelling: 'gar-CHOMP',\n      ipa: '/ɡɑːrˈtʃɒmp/'\n    }\n  ],\n  [\n    'garchompmega',\n    {\n      abilities: { first: 'sandforce' },\n      baseSpecies: 'garchomp',\n      baseStats: { hp: 108, atk: 170, def: 115, spa: 120, spd: 95, spe: 92 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 445,\n      otherFormes: ['garchomp', 'garchompmegaz'],\n      species: 'garchomp-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Ground],\n      weightkg: 95,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/garchomp-mega.mp3',\n      respelling: 'gar-CHOMP',\n      ipa: '/ɡɑːrˈtʃɒmp/'\n    }\n  ],\n  [\n    'garchompmegaz',\n    {\n      abilities: { first: 'sandforce' },\n      baseSpecies: 'garchomp',\n      baseStats: { hp: 108, atk: 130, def: 85, spa: 141, spd: 85, spe: 151 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega-Z',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 445,\n      otherFormes: ['garchomp', 'garchompmega'],\n      species: 'garchomp-mega-z',\n      aliases: ['garchompz'],\n      types: [TypesEnum.Dragon],\n      weightkg: 99,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/garchomp.mp3',\n      respelling: 'gar-CHOMP',\n      ipa: '/ɡɑːrˈtʃɒmp/'\n    }\n  ],\n  [\n    'munchlax',\n    {\n      abilities: { first: 'pickup', second: 'thickfat', hidden: 'gluttony' },\n      baseStats: { hp: 135, atk: 85, def: 40, spa: 40, spd: 85, spe: 5 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['snorlax'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 446,\n      species: 'munchlax',\n      types: [TypesEnum.Normal],\n      weightkg: 105,\n      aliases: ['gonbe'],\n      classification: 'Big Eater Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/munchlax.mp3',\n      respelling: 'MUNCH-lacks',\n      ipa: '/ˈmʌntʃlæks/'\n    }\n  ],\n  [\n    'riolu',\n    {\n      abilities: { first: 'steadfast', second: 'innerfocus', hidden: 'prankster' },\n      baseStats: { hp: 40, atk: 70, def: 40, spa: 35, spd: 40, spe: 60 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['lucario'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 447,\n      species: 'riolu',\n      types: [TypesEnum.Fighting],\n      weightkg: 20.2,\n      aliases: ['rioru'],\n      classification: 'Emanation Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/riolu.mp3',\n      respelling: 'ree-OH-loo',\n      ipa: '/riːˈoʊluː/'\n    }\n  ],\n  [\n    'lucario',\n    {\n      abilities: { first: 'steadfast', second: 'innerfocus', hidden: 'justified' },\n      baseStats: { hp: 70, atk: 110, def: 70, spa: 115, spd: 70, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      evoLevel: 'Level up during Daytime with happiness of at least 220',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 448,\n      otherFormes: ['lucariomega', 'lucariomegaz'],\n      prevo: 'riolu',\n      species: 'lucario',\n      types: [TypesEnum.Fighting, TypesEnum.Steel],\n      weightkg: 54,\n      aliases: ['luke', 'rukario'],\n      classification: 'Aura Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lucario.mp3',\n      respelling: 'loo-CAR-ee-oh',\n      ipa: '/luːˈkɑːriːoʊ/'\n    }\n  ],\n  [\n    'lucariomega',\n    {\n      abilities: { first: 'adaptability' },\n      baseSpecies: 'lucario',\n      baseStats: { hp: 70, atk: 145, def: 88, spa: 140, spd: 70, spe: 112 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 448,\n      otherFormes: ['lucario', 'lucariomegaz'],\n      species: 'lucario-mega',\n      types: [TypesEnum.Fighting, TypesEnum.Steel],\n      weightkg: 57.5,\n      aliases: ['megaluc', 'megaluke'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lucario-mega.mp3',\n      respelling: 'loo-CAR-ee-oh',\n      ipa: '/luːˈkɑːriːoʊ/'\n    }\n  ],\n  [\n    'lucariomegaz',\n    {\n      abilities: { first: 'adaptability' },\n      baseSpecies: 'lucario',\n      baseStats: { hp: 70, atk: 100, def: 70, spa: 164, spd: 70, spe: 151 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      forme: 'Mega-Z',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 448,\n      otherFormes: ['lucario', 'lucariomega'],\n      species: 'lucario-mega-z',\n      types: [TypesEnum.Fighting, TypesEnum.Steel],\n      weightkg: 49.4,\n      aliases: ['megalucz', 'megalukez', 'lucarioz'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lucario.mp3',\n      respelling: 'loo-CAR-ee-oh',\n      ipa: '/luːˈkɑːriːoʊ/'\n    }\n  ],\n  [\n    'hippopotas',\n    {\n      abilities: { first: 'sandstream', hidden: 'sandforce' },\n      baseStats: { hp: 68, atk: 72, def: 78, spa: 38, spd: 42, spe: 32 },\n      catchRate: { base: 140, percentageWithOrdinaryPokeballAtFullHealth: '28%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['hippowdon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 7710,\n      num: 449,\n      species: 'hippopotas',\n      types: [TypesEnum.Ground],\n      weightkg: 49.5,\n      aliases: ['hipopotasu'],\n      classification: 'Hippo Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hippopotas.mp3',\n      respelling: 'HIP-po-puh-TOSS',\n      ipa: '/ˌhɪpoʊpəˈtɒs/'\n    }\n  ],\n  [\n    'hippowdon',\n    {\n      abilities: { first: 'sandstream', hidden: 'sandforce' },\n      baseStats: { hp: 108, atk: 112, def: 118, spa: 68, spd: 72, spe: 47 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 7710,\n      num: 450,\n      prevo: 'hippopotas',\n      species: 'hippowdon',\n      types: [TypesEnum.Ground],\n      weightkg: 300,\n      aliases: ['hippo', 'kabarudon'],\n      classification: 'Heavyweight Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hippowdon.mp3',\n      respelling: 'hip-POW-donn',\n      ipa: '/hɪpˈpaʊdɒn/'\n    }\n  ],\n  [\n    'skorupi',\n    {\n      abilities: { first: 'battlearmor', second: 'sniper', hidden: 'keeneye' },\n      baseStats: { hp: 40, atk: 50, def: 90, spa: 30, spd: 55, spe: 65 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Bug', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['drapion'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 451,\n      species: 'skorupi',\n      types: [TypesEnum.Poison, TypesEnum.Bug],\n      weightkg: 12,\n      aliases: ['sukorupi'],\n      classification: 'Scorpion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skorupi.mp3',\n      respelling: 'sco-ROO-pee',\n      ipa: '/skoʊˈruːpiː/'\n    }\n  ],\n  [\n    'drapion',\n    {\n      abilities: { first: 'battlearmor', second: 'sniper', hidden: 'keeneye' },\n      baseStats: { hp: 70, atk: 90, def: 110, spa: 60, spd: 75, spe: 95 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Bug', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 452,\n      prevo: 'skorupi',\n      species: 'drapion',\n      types: [TypesEnum.Poison, TypesEnum.Dark],\n      weightkg: 61.5,\n      aliases: ['dorapion', 'snips'],\n      classification: 'Ogre Scorpion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drapion.mp3',\n      respelling: 'DRAP-pee-on',\n      ipa: '/ˈdræpiːɒn/'\n    }\n  ],\n  [\n    'croagunk',\n    {\n      abilities: {\n        first: 'anticipation',\n        second: 'dryskin',\n        hidden: 'poisontouch'\n      },\n      baseStats: { hp: 48, atk: 61, def: 40, spa: 61, spd: 40, spe: 50 },\n      catchRate: { base: 140, percentageWithOrdinaryPokeballAtFullHealth: '28%' },\n      color: 'Blue',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['toxicroak'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 453,\n      species: 'croagunk',\n      types: [TypesEnum.Poison, TypesEnum.Fighting],\n      weightkg: 23,\n      aliases: ['guregguru'],\n      classification: 'Toxic Mouth Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/croagunk.mp3',\n      respelling: 'CROW-gunk',\n      ipa: '/ˈkroʊɡʌŋk/'\n    }\n  ],\n  [\n    'toxicroak',\n    {\n      abilities: {\n        first: 'anticipation',\n        second: 'dryskin',\n        hidden: 'poisontouch'\n      },\n      baseStats: { hp: 83, atk: 106, def: 65, spa: 86, spd: 65, spe: 85 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 37,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 454,\n      prevo: 'croagunk',\n      species: 'toxicroak',\n      types: [TypesEnum.Poison, TypesEnum.Fighting],\n      weightkg: 44.4,\n      aliases: ['dokuroggu'],\n      classification: 'Toxic Mouth Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toxicroak.mp3',\n      respelling: 'TOCKS-eh-croak',\n      ipa: '/ˈtɒksɛkroʊk/'\n    }\n  ],\n  [\n    'carnivine',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 74, atk: 100, def: 72, spa: 90, spd: 72, spe: 46 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 455,\n      species: 'carnivine',\n      types: [TypesEnum.Grass],\n      weightkg: 27,\n      aliases: ['masukippa'],\n      classification: 'Bug Catcher Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/carnivine.mp3',\n      respelling: 'CAR-nuh-vine',\n      ipa: '/ˈkɑːrnəvaɪn/'\n    }\n  ],\n  [\n    'finneon',\n    {\n      abilities: { first: 'swiftswim', second: 'stormdrain', hidden: 'waterveil' },\n      baseStats: { hp: 49, atk: 49, def: 56, spa: 49, spd: 61, spe: 66 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['lumineon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 456,\n      species: 'finneon',\n      types: [TypesEnum.Water],\n      weightkg: 7,\n      aliases: ['keikouo'],\n      classification: 'Wing Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/finneon.mp3',\n      respelling: 'FINN-ee-onn',\n      ipa: '/ˈfɪniːɒn/'\n    }\n  ],\n  [\n    'lumineon',\n    {\n      abilities: { first: 'swiftswim', second: 'stormdrain', hidden: 'waterveil' },\n      baseStats: { hp: 69, atk: 69, def: 76, spa: 69, spd: 86, spe: 91 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 31,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 457,\n      prevo: 'finneon',\n      species: 'lumineon',\n      types: [TypesEnum.Water],\n      weightkg: 24,\n      aliases: ['neoranto'],\n      classification: 'Neon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lumineon.mp3',\n      respelling: 'loo-MIN-ee-onn',\n      ipa: '/luːˈmɪniːɒn/'\n    }\n  ],\n  [\n    'mantyke',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'waterabsorb',\n        hidden: 'waterveil'\n      },\n      baseStats: { hp: 45, atk: 20, def: 50, spa: 60, spd: 120, spe: 50 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['mantine'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 458,\n      species: 'mantyke',\n      types: [TypesEnum.Water, TypesEnum.Flying],\n      weightkg: 65,\n      aliases: ['tamanta'],\n      classification: 'Kite Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mantyke.mp3',\n      respelling: 'MAN-tike',\n      ipa: '/ˈmæntaɪk/'\n    }\n  ],\n  [\n    'snover',\n    {\n      abilities: { first: 'snowwarning', hidden: 'soundproof' },\n      baseStats: { hp: 60, atk: 62, def: 50, spa: 62, spd: 60, spe: 40 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['abomasnow'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 459,\n      species: 'snover',\n      types: [TypesEnum.Grass, TypesEnum.Ice],\n      weightkg: 50.5,\n      aliases: ['yukikaburi'],\n      classification: 'Frost Tree Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/snover.mp3',\n      respelling: 'SNOW-vurr',\n      ipa: '/ˈsnoʊvʌr/'\n    }\n  ],\n  [\n    'abomasnow',\n    {\n      abilities: { first: 'snowwarning', hidden: 'soundproof' },\n      baseStats: { hp: 90, atk: 92, def: 75, spa: 92, spd: 85, spe: 60 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 460,\n      otherFormes: ['abomasnowmega'],\n      prevo: 'snover',\n      species: 'abomasnow',\n      types: [TypesEnum.Grass, TypesEnum.Ice],\n      weightkg: 135.5,\n      aliases: ['aboma', 'obama', 'yukinooo'],\n      classification: 'Frost Tree Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/abomasnow.mp3',\n      respelling: 'uh-BOM-a-snow',\n      ipa: '/əˈbɒmæsnoʊ/'\n    }\n  ],\n  [\n    'abomasnowmega',\n    {\n      abilities: { first: 'snowwarning' },\n      baseSpecies: 'abomasnow',\n      baseStats: { hp: 90, atk: 132, def: 105, spa: 132, spd: 105, spe: 30 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Monster', 'Grass'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.7,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 460,\n      otherFormes: ['abomasnow'],\n      species: 'abomasnow-mega',\n      types: [TypesEnum.Grass, TypesEnum.Ice],\n      weightkg: 185,\n      aliases: ['megaobama', 'megasnow'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/abomasnow-mega.mp3',\n      respelling: 'uh-BOM-a-snow',\n      ipa: '/əˈbɒmæsnoʊ/'\n    }\n  ],\n  [\n    'weavile',\n    {\n      abilities: { first: 'pressure', hidden: 'pickpocket' },\n      baseStats: { hp: 70, atk: 120, def: 65, spa: 45, spd: 85, spe: 125 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 1 },\n      evoLevel: 'Hold Razor Claw Nighttime then level up',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 461,\n      prevo: 'sneasel',\n      species: 'weavile',\n      types: [TypesEnum.Dark, TypesEnum.Ice],\n      weightkg: 34,\n      aliases: ['manyuura'],\n      classification: 'Sharp Claw Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/weavile.mp3',\n      respelling: 'WEE-vile',\n      ipa: '/ˈwiːvaɪl/'\n    }\n  ],\n  [\n    'magnezone',\n    {\n      abilities: { first: 'magnetpull', second: 'sturdy', hidden: 'analytic' },\n      baseStats: { hp: 70, atk: 70, def: 115, spa: 130, spd: 90, spe: 60 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 'use Thunder Stone',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 462,\n      prevo: 'magneton',\n      species: 'magnezone',\n      types: [TypesEnum.Electric, TypesEnum.Steel],\n      weightkg: 180,\n      aliases: ['jibakoiru'],\n      classification: 'Magnet Area Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magnezone.mp3',\n      respelling: 'MAG-nuh-zone',\n      ipa: '/ˈmæɡnəzoʊn/'\n    }\n  ],\n  [\n    'lickilicky',\n    {\n      abilities: { first: 'owntempo', second: 'oblivious', hidden: 'cloudnine' },\n      baseStats: { hp: 110, atk: 85, def: 95, spa: 80, spd: 95, spe: 50 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Pink',\n      eggGroups: ['Monster'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up while knowing Rollout',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 463,\n      prevo: 'lickitung',\n      species: 'lickilicky',\n      types: [TypesEnum.Normal],\n      weightkg: 140,\n      aliases: ['beroberuto'],\n      classification: 'Licking Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lickilicky.mp3',\n      respelling: 'LICK-ee-LICK-ee',\n      ipa: '/ˈlɪkiːˌlɪkiː/'\n    }\n  ],\n  [\n    'rhyperior',\n    {\n      abilities: {\n        first: 'lightningrod',\n        second: 'solidrock',\n        hidden: 'reckless'\n      },\n      baseStats: { hp: 115, atk: 140, def: 130, spa: 55, spd: 55, spe: 40 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Gray',\n      eggGroups: ['Monster', 'Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Protector',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 464,\n      prevo: 'rhydon',\n      species: 'rhyperior',\n      types: [TypesEnum.Ground, TypesEnum.Rock],\n      weightkg: 282.8,\n      aliases: ['dosaidon'],\n      classification: 'Drill Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rhyperior.mp3',\n      respelling: 'RYE-peer-ee-urr',\n      ipa: '/ˈraɪpɪəriːʌr/'\n    }\n  ],\n  [\n    'tangrowth',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'leafguard',\n        hidden: 'regenerator'\n      },\n      baseStats: { hp: 100, atk: 100, def: 125, spa: 110, spd: 50, spe: 50 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Blue',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up while knowing Ancient Power',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 465,\n      prevo: 'tangela',\n      species: 'tangrowth',\n      types: [TypesEnum.Grass],\n      weightkg: 128.6,\n      aliases: ['mojanbo', 'tang'],\n      classification: 'Vine Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tangrowth.mp3',\n      respelling: 'TANG-growth',\n      ipa: '/ˈtæŋɡroʊθ/'\n    }\n  ],\n  [\n    'electivire',\n    {\n      abilities: { first: 'motordrive', hidden: 'vitalspirit' },\n      baseStats: { hp: 75, atk: 123, def: 67, spa: 95, spd: 85, spe: 95 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Yellow',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Electirizer',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 466,\n      prevo: 'electabuzz',\n      species: 'electivire',\n      types: [TypesEnum.Electric],\n      weightkg: 138.6,\n      aliases: ['erekiburu'],\n      classification: 'Thunderbolt Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/electivire.mp3',\n      respelling: 'e-LECT-uh-vire',\n      ipa: '/ɪˈlɛktəvaɪər/'\n    }\n  ],\n  [\n    'magmortar',\n    {\n      abilities: { first: 'flamebody', hidden: 'vitalspirit' },\n      baseStats: { hp: 75, atk: 95, def: 67, spa: 125, spd: 95, spe: 83 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Magmarizer',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 467,\n      prevo: 'magmar',\n      species: 'magmortar',\n      types: [TypesEnum.Fire],\n      weightkg: 68,\n      aliases: ['buubaan'],\n      classification: 'Blast Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magmortar.mp3',\n      respelling: 'MAG-mor-tur',\n      ipa: '/ˈmæɡmɔːrtər/'\n    }\n  ],\n  [\n    'togekiss',\n    {\n      abilities: { first: 'hustle', second: 'serenegrace', hidden: 'superluck' },\n      baseStats: { hp: 85, atk: 50, def: 95, spa: 120, spd: 115, spe: 80 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'White',\n      eggGroups: ['Flying', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 1, spe: 0 },\n      evoLevel: 'use Shiny Stone',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 468,\n      prevo: 'togetic',\n      species: 'togekiss',\n      types: [TypesEnum.Fairy, TypesEnum.Flying],\n      weightkg: 38,\n      aliases: ['togekissu'],\n      classification: 'Jubilee Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/togekiss.mp3',\n      respelling: 'TOE-geh-kiss',\n      ipa: '/ˈtoʊɡɛkɪs/'\n    }\n  ],\n  [\n    'yanmega',\n    {\n      abilities: { first: 'speedboost', second: 'tintedlens', hidden: 'frisk' },\n      baseStats: { hp: 86, atk: 76, def: 86, spa: 116, spd: 56, spe: 95 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up while knowing Ancient Power',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 469,\n      prevo: 'yanma',\n      species: 'yanmega',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 51.5,\n      aliases: ['megayanma'],\n      classification: 'Ogre Darner Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/yanmega.mp3',\n      respelling: 'YAN-meh-gah',\n      ipa: '/ˈjænmɛɡɑː/'\n    }\n  ],\n  [\n    'leafeon',\n    {\n      abilities: { first: 'leafguard', hidden: 'chlorophyll' },\n      baseStats: { hp: 65, atk: 110, def: 130, spa: 60, spd: 65, spe: 95 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Leaf Stone',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 470,\n      prevo: 'eevee',\n      species: 'leafeon',\n      types: [TypesEnum.Grass],\n      weightkg: 25.5,\n      aliases: ['riifia'],\n      classification: 'Verdant Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/leafeon.mp3',\n      respelling: 'LEEF-ee-on',\n      ipa: '/ˈliːfiːɒn/'\n    }\n  ],\n  [\n    'glaceon',\n    {\n      abilities: { first: 'snowcloak', hidden: 'icebody' },\n      baseStats: { hp: 65, atk: 60, def: 110, spa: 130, spd: 95, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Ice Stone',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 471,\n      prevo: 'eevee',\n      species: 'glaceon',\n      types: [TypesEnum.Ice],\n      weightkg: 25.9,\n      aliases: ['gureishia'],\n      classification: 'Fresh Snow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/glaceon.mp3',\n      respelling: 'GLACE-ee-on',\n      ipa: '/ˈɡleɪsiːɒn/'\n    }\n  ],\n  [\n    'gliscor',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'sandveil',\n        hidden: 'poisonheal'\n      },\n      baseStats: { hp: 75, atk: 95, def: 125, spa: 45, spd: 75, spe: 95 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Purple',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Hold Razor Fang Nighttime',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 472,\n      prevo: 'gligar',\n      species: 'gliscor',\n      types: [TypesEnum.Ground, TypesEnum.Flying],\n      weightkg: 42.5,\n      aliases: ['guraion'],\n      classification: 'Fang Scorpion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gliscor.mp3',\n      respelling: 'GLY-skor',\n      ipa: '/ˈɡlaɪskɔːr/'\n    }\n  ],\n  [\n    'mamoswine',\n    {\n      abilities: { first: 'oblivious', second: 'snowcloak', hidden: 'thickfat' },\n      baseStats: { hp: 110, atk: 130, def: 80, spa: 70, spd: 60, spe: 80 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up while knowing Ancient Power',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 473,\n      prevo: 'piloswine',\n      species: 'mamoswine',\n      types: [TypesEnum.Ice, TypesEnum.Ground],\n      weightkg: 291,\n      aliases: ['mamo', 'manmuu'],\n      classification: 'Twin Tusk Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mamoswine.mp3',\n      respelling: 'MAMO-swine',\n      ipa: '/ˈmæmoʊswaɪn/'\n    }\n  ],\n  [\n    'porygonz',\n    {\n      abilities: { first: 'adaptability', second: 'download', hidden: 'analytic' },\n      baseStats: { hp: 85, atk: 80, def: 70, spa: 135, spd: 75, spe: 90 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Red',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Dubious Disc',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 474,\n      prevo: 'porygon2',\n      specialBulbapediaUrl: 'Porygon-Z',\n      species: 'porygon-z',\n      types: [TypesEnum.Normal],\n      weightkg: 34,\n      aliases: ['porigonz', 'poryz', 'pz'],\n      classification: 'Virtual Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/porygonz.mp3'\n    }\n  ],\n  [\n    'gallade',\n    {\n      abilities: { first: 'steadfast', second: 'sharpness', hidden: 'justified' },\n      baseStats: { hp: 68, atk: 125, def: 65, spa: 65, spd: 115, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Male + use Dawn Stone',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 475,\n      otherFormes: ['gallademega'],\n      prevo: 'kirlia',\n      species: 'gallade',\n      types: [TypesEnum.Psychic, TypesEnum.Fighting],\n      weightkg: 52,\n      aliases: ['erureido'],\n      classification: 'Blade Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gallade.mp3',\n      respelling: 'GAL-ade',\n      ipa: '/ˈɡæleɪd/'\n    }\n  ],\n  [\n    'gallademega',\n    {\n      abilities: { first: 'innerfocus' },\n      baseSpecies: 'gallade',\n      baseStats: { hp: 68, atk: 165, def: 95, spa: 65, spd: 115, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 475,\n      otherFormes: ['gallade'],\n      species: 'gallade-mega',\n      types: [TypesEnum.Psychic, TypesEnum.Fighting],\n      weightkg: 56.4,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gallade-mega.mp3',\n      respelling: 'GAL-ade',\n      ipa: '/ˈɡæleɪd/'\n    }\n  ],\n  [\n    'probopass',\n    {\n      abilities: { first: 'sturdy', second: 'magnetpull', hidden: 'sandforce' },\n      baseStats: { hp: 60, atk: 55, def: 145, spa: 75, spd: 150, spe: 40 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Level up in special magnetic field',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 476,\n      prevo: 'nosepass',\n      species: 'probopass',\n      types: [TypesEnum.Rock, TypesEnum.Steel],\n      weightkg: 340,\n      aliases: ['dainoozu'],\n      classification: 'Compass Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/probopass.mp3',\n      respelling: 'PRO-bo-pass',\n      ipa: '/ˈproʊboʊpæs/'\n    }\n  ],\n  [\n    'dusknoir',\n    {\n      abilities: { first: 'pressure', hidden: 'frisk' },\n      baseStats: { hp: 45, atk: 100, def: 135, spa: 65, spd: 135, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Trade while holding Reaper Cloth',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 6425,\n      num: 477,\n      prevo: 'dusclops',\n      species: 'dusknoir',\n      types: [TypesEnum.Ghost],\n      weightkg: 106.6,\n      aliases: ['yonowaaru'],\n      classification: 'Gripper Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dusknoir.mp3',\n      respelling: 'DUSK-nwar',\n      ipa: '/ˈdʌsknwɑːr/'\n    }\n  ],\n  [\n    'froslass',\n    {\n      abilities: { first: 'snowcloak', hidden: 'cursedbody' },\n      baseStats: { hp: 70, atk: 80, def: 70, spa: 80, spd: 70, spe: 110 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'White',\n      eggGroups: ['Fairy', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'Female + use Dawn Stone',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 478,\n      prevo: 'snorunt',\n      species: 'froslass',\n      otherFormes: ['froslassmega'],\n      types: [TypesEnum.Ice, TypesEnum.Ghost],\n      weightkg: 26.6,\n      aliases: ['yukimenoko'],\n      classification: 'Snow Land Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/froslass.mp3',\n      respelling: 'FROS-lass',\n      ipa: '/ˈfrɒslæs/'\n    }\n  ],\n  [\n    'froslassmega',\n    {\n      abilities: { first: 'snowwarning' },\n      baseStats: { hp: 70, atk: 80, def: 70, spa: 140, spd: 100, spe: 120 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'White',\n      baseSpecies: 'froslass',\n      eggGroups: ['Fairy', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 2.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 478,\n      otherFormes: ['froslass'],\n      species: 'froslass-mega',\n      types: [TypesEnum.Ice, TypesEnum.Ghost],\n      weightkg: 29.6,\n      aliases: ['yukimenokomega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/froslass.mp3',\n      respelling: 'FROS-lass',\n      ipa: '/ˈfrɒslæs/'\n    }\n  ],\n  [\n    'rotom',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 50, atk: 50, def: 77, spa: 95, spd: 77, spe: 91 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 479,\n      otherFormes: ['rotomheat', 'rotomwash', 'rotomfrost', 'rotomfan', 'rotommow'],\n      species: 'rotom',\n      types: [TypesEnum.Electric, TypesEnum.Ghost],\n      weightkg: 0.3,\n      aliases: ['rotomu'],\n      classification: 'Plasma Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rotom.mp3',\n      respelling: 'ROW-tom',\n      ipa: '/ˈroʊtɒm/'\n    }\n  ],\n  [\n    'rotomheat',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'rotom',\n      baseStats: { hp: 50, atk: 65, def: 107, spa: 105, spd: 107, spe: 86 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Heat',\n      formeLetter: 'H',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 479,\n      otherFormes: ['rotom', 'rotomwash', 'rotomfrost', 'rotomfan', 'rotommow'],\n      species: 'rotom-heat',\n      types: [TypesEnum.Electric, TypesEnum.Fire],\n      weightkg: 0.3,\n      aliases: ['rotomh'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rotom.mp3',\n      respelling: 'ROW-tom',\n      ipa: '/ˈroʊtɒm/'\n    }\n  ],\n  [\n    'rotomwash',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'rotom',\n      baseStats: { hp: 50, atk: 65, def: 107, spa: 105, spd: 107, spe: 86 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Wash',\n      formeLetter: 'W',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 479,\n      otherFormes: ['rotom', 'rotomheat', 'rotomfrost', 'rotomfan', 'rotommow'],\n      species: 'rotom-wash',\n      types: [TypesEnum.Electric, TypesEnum.Water],\n      weightkg: 0.3,\n      aliases: ['rotomw'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rotom.mp3',\n      respelling: 'ROW-tom',\n      ipa: '/ˈroʊtɒm/'\n    }\n  ],\n  [\n    'rotomfrost',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'rotom',\n      baseStats: { hp: 50, atk: 65, def: 107, spa: 105, spd: 107, spe: 86 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Frost',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 479,\n      otherFormes: ['rotom', 'rotomheat', 'rotomwash', 'rotomfan', 'rotommow'],\n      species: 'rotom-frost',\n      types: [TypesEnum.Electric, TypesEnum.Ice],\n      weightkg: 0.3,\n      aliases: ['rotomf'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rotom.mp3',\n      respelling: 'ROW-tom',\n      ipa: '/ˈroʊtɒm/'\n    }\n  ],\n  [\n    'rotomfan',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'rotom',\n      baseStats: { hp: 50, atk: 65, def: 107, spa: 105, spd: 107, spe: 86 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Fan',\n      formeLetter: 'S',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 479,\n      otherFormes: ['rotom', 'rotomheat', 'rotomwash', 'rotomfrost', 'rotommow'],\n      species: 'rotom-fan',\n      types: [TypesEnum.Electric, TypesEnum.Flying],\n      weightkg: 0.3,\n      aliases: ['rotoms', 'rotomspin'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rotom.mp3',\n      respelling: 'ROW-tom',\n      ipa: '/ˈroʊtɒm/'\n    }\n  ],\n  [\n    'rotommow',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'rotom',\n      baseStats: { hp: 50, atk: 65, def: 107, spa: 105, spd: 107, spe: 86 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Mow',\n      formeLetter: 'C',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 479,\n      otherFormes: ['rotom', 'rotomheat', 'rotomwash', 'rotomfrost', 'rotomfan'],\n      species: 'rotom-mow',\n      types: [TypesEnum.Electric, TypesEnum.Grass],\n      weightkg: 0.3,\n      aliases: ['rotomc', 'rotomcut'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rotom.mp3',\n      respelling: 'ROW-tom',\n      ipa: '/ˈroʊtɒm/'\n    }\n  ],\n  [\n    'uxie',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 75, atk: 75, def: 130, spa: 75, spd: 130, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 480,\n      species: 'uxie',\n      types: [TypesEnum.Psychic],\n      weightkg: 0.3,\n      aliases: ['yukushii'],\n      legendary: true,\n      classification: 'Knowledge Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/uxie.mp3',\n      respelling: 'YUKE-see',\n      ipa: '/ˈjuːksiː/'\n    }\n  ],\n  [\n    'mesprit',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 80, atk: 105, def: 105, spa: 105, spd: 105, spe: 80 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 1, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 481,\n      species: 'mesprit',\n      types: [TypesEnum.Psychic],\n      weightkg: 0.3,\n      aliases: ['emuritto'],\n      legendary: true,\n      classification: 'Emotion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mesprit.mp3',\n      respelling: 'MES-prit',\n      ipa: '/ˈmɛsprɪt/'\n    }\n  ],\n  [\n    'azelf',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 75, atk: 125, def: 70, spa: 125, spd: 70, spe: 115 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 482,\n      species: 'azelf',\n      types: [TypesEnum.Psychic],\n      weightkg: 0.3,\n      aliases: ['agunomu'],\n      legendary: true,\n      classification: 'Willpower Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/azelf.mp3',\n      respelling: 'AZ-elf',\n      ipa: '/ˈæʒɛlf/'\n    }\n  ],\n  [\n    'dialga',\n    {\n      abilities: { first: 'pressure', hidden: 'telepathy' },\n      baseForme: 'Normal',\n      baseStats: { hp: 100, atk: 120, def: 120, spa: 150, spd: 100, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 5.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 483,\n      otherFormes: ['dialgaorigin'],\n      species: 'dialga',\n      types: [TypesEnum.Steel, TypesEnum.Dragon],\n      weightkg: 683,\n      aliases: ['diaruga'],\n      legendary: true,\n      classification: 'Temporal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dialga.mp3',\n      respelling: 'dee-AL-guh',\n      ipa: '/diːˈælɡə/'\n    }\n  ],\n  [\n    'dialgaorigin',\n    {\n      abilities: { first: 'pressure', hidden: 'telepathy' },\n      baseSpecies: 'dialga',\n      baseStats: { hp: 100, atk: 100, def: 120, spa: 150, spd: 120, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Origin',\n      formeLetter: 'O',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 483,\n      otherFormes: ['dialga'],\n      species: 'dialga-origin',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/dialga-origin.png',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/dialga-origin.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/dialga-origin.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/dialga-origin.png',\n      types: [TypesEnum.Steel, TypesEnum.Dragon],\n      weightkg: 850,\n      aliases: ['origindialga', 'dialgao'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dialga.mp3',\n      respelling: 'dee-AL-guh',\n      ipa: '/diːˈælɡə/'\n    }\n  ],\n  [\n    'palkia',\n    {\n      abilities: { first: 'pressure', hidden: 'telepathy' },\n      baseForme: 'Normal',\n      baseStats: { hp: 90, atk: 120, def: 100, spa: 150, spd: 120, spe: 100 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 4.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 484,\n      otherFormes: ['palkiaorigin'],\n      species: 'palkia',\n      types: [TypesEnum.Water, TypesEnum.Dragon],\n      weightkg: 336,\n      aliases: ['parukia'],\n      legendary: true,\n      classification: 'Spatial Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/palkia.mp3',\n      respelling: 'PAL-kee-uh',\n      ipa: '/ˈpælkiːə/'\n    }\n  ],\n  [\n    'palkiaorigin',\n    {\n      abilities: { first: 'pressure', hidden: 'telepathy' },\n      baseSpecies: 'palkia',\n      baseStats: { hp: 90, atk: 100, def: 100, spa: 150, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Origin',\n      formeLetter: 'O',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 6.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 484,\n      otherFormes: ['palkia'],\n      species: 'palkia-origin',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/palkia-origin.png',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/palkia-origin.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/palkia-origin.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/palkia-origin.png',\n      types: [TypesEnum.Water, TypesEnum.Dragon],\n      weightkg: 660,\n      aliases: ['originpalkia', 'palkiao'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/palkia.mp3',\n      respelling: 'PAL-kee-uh',\n      ipa: '/ˈpælkiːə/'\n    }\n  ],\n  [\n    'heatran',\n    {\n      abilities: { first: 'flashfire', hidden: 'flamebody' },\n      baseStats: { hp: 91, atk: 90, def: 106, spa: 130, spd: 106, spe: 77 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 2570,\n      num: 485,\n      species: 'heatran',\n      types: [TypesEnum.Fire, TypesEnum.Steel],\n      weightkg: 430,\n      aliases: ['hiidoran', 'tran'],\n      otherFormes: ['heatranmega'],\n      legendary: true,\n      classification: 'Lava Dome Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/heatran.mp3',\n      respelling: 'HEE-tran',\n      ipa: '/ˈhiːtræn/'\n    }\n  ],\n  [\n    'heatranmega',\n    {\n      abilities: { first: 'flashfire', hidden: 'flamebody' },\n      baseStats: { hp: 91, atk: 120, def: 106, spa: 175, spd: 141, spe: 67 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      baseSpecies: 'heatran',\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 2570,\n      num: 485,\n      otherFormes: ['heatran'],\n      species: 'heatran-mega',\n      aliases: ['hiidoran', 'tran', 'megatran'],\n      types: [TypesEnum.Fire, TypesEnum.Steel],\n      legendary: true,\n      weightkg: 570,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/heatran.mp3',\n      respelling: 'HEE-tran',\n      ipa: '/ˈhiːtræn/'\n    }\n  ],\n  [\n    'regigigas',\n    {\n      abilities: { first: 'slowstart' },\n      baseStats: { hp: 110, atk: 160, def: 110, spa: 80, spd: 110, spe: 100 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 486,\n      species: 'regigigas',\n      types: [TypesEnum.Normal],\n      weightkg: 420,\n      aliases: ['rejigigasu'],\n      legendary: true,\n      classification: 'Colossal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/regigigas.mp3',\n      respelling: 'REDGE-ee-gee-gus',\n      ipa: '/ˈrɛdʒiːɡiːɡʌs/'\n    }\n  ],\n  [\n    'giratina',\n    {\n      abilities: { first: 'pressure', hidden: 'telepathy' },\n      baseForme: 'Altered',\n      baseStats: { hp: 150, atk: 100, def: 120, spa: 100, spd: 120, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 4.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 487,\n      otherFormes: ['giratinaorigin'],\n      species: 'giratina',\n      types: [TypesEnum.Ghost, TypesEnum.Dragon],\n      weightkg: 750,\n      aliases: ['gira', 'girateina', 'giratinaa', 'giratinaaltered'],\n      legendary: true,\n      classification: 'Renegade Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/giratina.mp3',\n      respelling: 'gear-uh-TEE-na',\n      ipa: '/ɡɪərəˈtiːnæ/'\n    }\n  ],\n  [\n    'giratinaorigin',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'giratina',\n      baseStats: { hp: 150, atk: 120, def: 100, spa: 120, spd: 100, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Origin',\n      formeLetter: 'O',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 6.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 487,\n      otherFormes: ['giratina'],\n      species: 'giratina-origin',\n      types: [TypesEnum.Ghost, TypesEnum.Dragon],\n      weightkg: 650,\n      aliases: ['origingiratina', 'girao', 'giratinao'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/giratina.mp3',\n      respelling: 'gear-uh-TEE-na',\n      ipa: '/ɡɪərəˈtiːnæ/'\n    }\n  ],\n  [\n    'cresselia',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 120, atk: 70, def: 110, spa: 75, spd: 120, spe: 85 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 488,\n      species: 'cresselia',\n      types: [TypesEnum.Psychic],\n      weightkg: 85.6,\n      aliases: ['cress', 'kureseria'],\n      legendary: true,\n      classification: 'Lunar Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cresselia.mp3',\n      respelling: 'cres-SEL-ee-uh',\n      ipa: '/krɛˈsɛliːə/'\n    }\n  ],\n  [\n    'phione',\n    {\n      abilities: { first: 'hydration' },\n      baseStats: { hp: 80, atk: 80, def: 80, spa: 80, spd: 80, spe: 80 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Fairy'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 489,\n      species: 'phione',\n      types: [TypesEnum.Water],\n      weightkg: 3.1,\n      aliases: ['fione'],\n      mythical: true,\n      classification: 'Sea Drifter Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/phione.mp3',\n      respelling: 'fee-OWN-ay',\n      ipa: '/fiːˈoʊneɪ/'\n    }\n  ],\n  [\n    'manaphy',\n    {\n      abilities: { first: 'hydration' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Fairy'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 2570,\n      num: 490,\n      species: 'manaphy',\n      types: [TypesEnum.Water],\n      weightkg: 1.4,\n      aliases: ['manafi'],\n      mythical: true,\n      classification: 'Seafaring Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/manaphy.mp3',\n      respelling: 'man-A-phee',\n      ipa: '/mænˈæfiː/'\n    }\n  ],\n  [\n    'darkrai',\n    {\n      abilities: { first: 'baddreams' },\n      baseStats: { hp: 70, atk: 90, def: 90, spa: 135, spd: 90, spe: 125 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 1 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 491,\n      species: 'darkrai',\n      types: [TypesEnum.Dark],\n      weightkg: 50.5,\n      aliases: ['daakurai'],\n      otherFormes: ['darkraimega'],\n      mythical: true,\n      classification: 'Pitch-Black Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/darkrai.mp3',\n      respelling: 'DARK-rye',\n      ipa: '/ˈdɑːrkraɪ/'\n    }\n  ],\n  [\n    'darkraimega',\n    {\n      abilities: { first: 'baddreams' },\n      baseStats: { hp: 70, atk: 120, def: 130, spa: 165, spd: 130, spe: 85 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      baseSpecies: 'darkrai',\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 1 },\n      genderRatio: { male: '0%', female: '0%' },\n      forme: 'Mega',\n      formeLetter: 'M',\n      heightm: 3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 491,\n      otherFormes: ['darkrai'],\n      species: 'darkrai-mega',\n      aliases: ['daakuraimega'],\n      mythical: true,\n      types: [TypesEnum.Dark],\n      weightkg: 240,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/darkrai.mp3',\n      respelling: 'DARK-rye',\n      ipa: '/ˈdɑːrkraɪ/',\n      classification: 'Bad Dreams Pokémon'\n    }\n  ],\n  [\n    'shaymin',\n    {\n      abilities: { first: 'naturalcure' },\n      baseForme: 'Land',\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.2,\n      isEggObtainable: false,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 30840,\n      num: 492,\n      otherFormes: ['shayminsky'],\n      species: 'shaymin',\n      types: [TypesEnum.Grass],\n      weightkg: 2.1,\n      aliases: ['shayminl', 'shayminland', 'sheimi'],\n      mythical: true,\n      classification: 'Gratitude Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shaymin.mp3',\n      respelling: 'SHAY-min',\n      ipa: '/ˈʃeɪmɪn/'\n    }\n  ],\n  [\n    'shayminsky',\n    {\n      abilities: { first: 'serenegrace' },\n      baseSpecies: 'shaymin',\n      baseStats: { hp: 100, atk: 103, def: 75, spa: 120, spd: 75, spe: 127 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Sky',\n      formeLetter: 'S',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: false,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 30840,\n      num: 492,\n      otherFormes: ['shaymin'],\n      species: 'shaymin-sky',\n      types: [TypesEnum.Grass, TypesEnum.Flying],\n      weightkg: 5.2,\n      aliases: ['shaymins', 'skymin'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shaymin-sky.mp3',\n      respelling: 'SHAY-min',\n      ipa: '/ˈʃeɪmɪn/'\n    }\n  ],\n  [\n    'arceus',\n    {\n      abilities: { first: 'multitype' },\n      baseForme: 'Normal',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater',\n        'arceuslegend'\n      ],\n      species: 'arceus',\n      types: [TypesEnum.Normal],\n      weightkg: 320,\n      aliases: ['arc', 'arceusnormal', 'aruseusu', 'ekiller'],\n      mythical: true,\n      classification: 'Alpha Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusbug',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Bug',\n      formeLetter: 'B',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-bug',\n      types: [TypesEnum.Bug],\n      weightkg: 320,\n      aliases: ['arcbug', 'bugceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusdark',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Dark',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-dark',\n      types: [TypesEnum.Dark],\n      weightkg: 320,\n      aliases: ['arcdark', 'darkceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusdragon',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Dragon',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-dragon',\n      types: [TypesEnum.Dragon],\n      weightkg: 320,\n      aliases: ['arcdragon', 'dragonceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceuselectric',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Electric',\n      formeLetter: 'E',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-electric',\n      types: [TypesEnum.Electric],\n      weightkg: 320,\n      aliases: ['arcelectric', 'eleceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusfairy',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Fairy',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-fairy',\n      types: [TypesEnum.Fairy],\n      weightkg: 320,\n      aliases: ['arcfairy', 'fairyceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusfighting',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Fighting',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-fighting',\n      types: [TypesEnum.Fighting],\n      weightkg: 320,\n      aliases: ['arcfighting', 'fightceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusfire',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Fire',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-fire',\n      types: [TypesEnum.Fire],\n      weightkg: 320,\n      aliases: ['arcfire', 'fireceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusflying',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Flying',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-flying',\n      types: [TypesEnum.Flying],\n      weightkg: 320,\n      aliases: ['arcflying', 'flyceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusghost',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Ghost',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-ghost',\n      types: [TypesEnum.Ghost],\n      weightkg: 320,\n      aliases: ['arcghost', 'ghostceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusgrass',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Grass',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-grass',\n      types: [TypesEnum.Grass],\n      weightkg: 320,\n      aliases: ['arcgrass', 'grassceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusground',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Ground',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-ground',\n      types: [TypesEnum.Ground],\n      weightkg: 320,\n      aliases: ['arcground', 'groundceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusice',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Ice',\n      formeLetter: 'I',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-ice',\n      types: [TypesEnum.Ice],\n      weightkg: 320,\n      aliases: ['arcice', 'iceceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceuspoison',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Poison',\n      formeLetter: 'P',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      species: 'arceus-poison',\n      types: [TypesEnum.Poison],\n      weightkg: 320,\n      aliases: ['arcpoison', 'poisonceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceuspsychic',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Psychic',\n      formeLetter: 'P',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-psychic',\n      types: [TypesEnum.Psychic],\n      weightkg: 320,\n      aliases: ['arcpsychic', 'psyceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceusrock',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Rock',\n      formeLetter: 'R',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-rock',\n      types: [TypesEnum.Rock],\n      weightkg: 320,\n      aliases: ['arcrock', 'rockceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceussteel',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Steel',\n      formeLetter: 'S',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceuswater'\n      ],\n      species: 'arceus-steel',\n      types: [TypesEnum.Steel],\n      weightkg: 320,\n      aliases: ['arcsteel', 'steelceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceuswater',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Water',\n      formeLetter: 'W',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel'\n      ],\n      species: 'arceus-water',\n      types: [TypesEnum.Water],\n      weightkg: 320,\n      aliases: ['arcwater', 'waterceus'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ],\n  [\n    'arceuslegend',\n    {\n      abilities: { first: 'multitype' },\n      baseSpecies: 'arceus',\n      baseStats: { hp: 120, atk: 120, def: 120, spa: 120, spd: 120, spe: 120 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Legend',\n      formeLetter: 'L',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 493,\n      otherFormes: [\n        'arceus',\n        'arceusbug',\n        'arceusdark',\n        'arceusdragon',\n        'arceuselectric',\n        'arceusfairy',\n        'arceusfighting',\n        'arceusfire',\n        'arceusflying',\n        'arceusghost',\n        'arceusgrass',\n        'arceusground',\n        'arceusice',\n        'arceuspoison',\n        'arceuspsychic',\n        'arceusrock',\n        'arceussteel',\n        'arceuswater'\n      ],\n      species: 'arceus-legend',\n      types: [TypesEnum.Normal],\n      weightkg: 320,\n      aliases: ['arceuslegendary', 'plarceus', 'god'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arceus.mp3',\n      respelling: 'AR-key-us',\n      ipa: '/ˈɑːrkiːʌs/'\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/gen5.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'victini',\n    {\n      abilities: { first: 'victorystar' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 494,\n      species: 'victini',\n      types: [TypesEnum.Psychic, TypesEnum.Fire],\n      weightkg: 4,\n      aliases: ['bikuteini', 'kyra'],\n      mythical: true,\n      classification: 'Victory Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/victini.mp3',\n      respelling: 'vik-TEE-nee',\n      ipa: '/vɪkˈtiːniː/'\n    }\n  ],\n  [\n    'snivy',\n    {\n      abilities: { first: 'overgrow', hidden: 'contrary' },\n      baseStats: { hp: 45, atk: 45, def: 55, spa: 45, spd: 55, spe: 63 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['servine'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 495,\n      species: 'snivy',\n      types: [TypesEnum.Grass],\n      weightkg: 8.1,\n      aliases: ['tsutaaja'],\n      classification: 'Grass Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/snivy.mp3',\n      respelling: 'SNY-vee',\n      ipa: '/ˈsnaɪviː/'\n    }\n  ],\n  [\n    'servine',\n    {\n      abilities: { first: 'overgrow', hidden: 'contrary' },\n      baseStats: { hp: 60, atk: 60, def: 75, spa: 60, spd: 75, spe: 83 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 17,\n      evos: ['serperior'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 496,\n      prevo: 'snivy',\n      species: 'servine',\n      types: [TypesEnum.Grass],\n      weightkg: 16,\n      aliases: ['janobii'],\n      classification: 'Grass Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/servine.mp3',\n      respelling: 'SUR-vine',\n      ipa: '/ˈsɜːrvaɪn/'\n    }\n  ],\n  [\n    'serperior',\n    {\n      abilities: { first: 'overgrow', hidden: 'contrary' },\n      baseStats: { hp: 75, atk: 75, def: 95, spa: 75, spd: 95, spe: 113 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 3.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 497,\n      prevo: 'servine',\n      species: 'serperior',\n      types: [TypesEnum.Grass],\n      weightkg: 63,\n      aliases: ['jarooda', 'serp'],\n      classification: 'Regal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/serperior.mp3',\n      respelling: 'sur-PEER-ee-ur',\n      ipa: '/sɜːrˈpɪəriːər/'\n    }\n  ],\n  [\n    'tepig',\n    {\n      abilities: { first: 'blaze', hidden: 'thickfat' },\n      baseStats: { hp: 65, atk: 63, def: 45, spa: 45, spd: 45, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['pignite'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 498,\n      species: 'tepig',\n      types: [TypesEnum.Fire],\n      weightkg: 9.9,\n      aliases: ['pokabu'],\n      classification: 'Fire Pig Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tepig.mp3',\n      respelling: 'TEH-pig',\n      ipa: '/ˈtɛpɪɡ/'\n    }\n  ],\n  [\n    'pignite',\n    {\n      abilities: { first: 'blaze', hidden: 'thickfat' },\n      baseStats: { hp: 90, atk: 93, def: 55, spa: 70, spd: 55, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 17,\n      evos: ['emboar'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 499,\n      prevo: 'tepig',\n      species: 'pignite',\n      types: [TypesEnum.Fire, TypesEnum.Fighting],\n      weightkg: 55.5,\n      aliases: ['chaobuu'],\n      classification: 'Fire Pig Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pignite.mp3',\n      respelling: 'pig-NYTE',\n      ipa: '/pɪɡˈnaɪt/'\n    }\n  ],\n  [\n    'emboar',\n    {\n      abilities: { first: 'blaze', hidden: 'reckless' },\n      baseStats: { hp: 110, atk: 123, def: 65, spa: 100, spd: 65, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 500,\n      prevo: 'pignite',\n      species: 'emboar',\n      otherFormes: ['emboarmega'],\n      types: [TypesEnum.Fire, TypesEnum.Fighting],\n      weightkg: 150,\n      aliases: ['enbuoo'],\n      classification: 'Mega Fire Pig Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/emboar.mp3',\n      respelling: 'EHM-bohr',\n      ipa: '/ˈɛmbɔər/'\n    }\n  ],\n  [\n    'emboarmega',\n    {\n      abilities: { first: 'moldbreaker' },\n      baseStats: { hp: 110, atk: 123, def: 65, spa: 100, spd: 65, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      baseSpecies: 'emboar',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 500,\n      otherFormes: ['emboar'],\n      species: 'emboar-mega',\n      types: [TypesEnum.Fire, TypesEnum.Fighting],\n      weightkg: 180.3,\n      aliases: ['enbuoomega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/emboar.mp3',\n      respelling: 'EHM-bohr',\n      ipa: '/ˈɛmbɔər/'\n    }\n  ],\n  [\n    'oshawott',\n    {\n      abilities: { first: 'torrent', hidden: 'shellarmor' },\n      baseStats: { hp: 55, atk: 55, def: 45, spa: 63, spd: 45, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['dewott'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 501,\n      species: 'oshawott',\n      types: [TypesEnum.Water],\n      weightkg: 5.9,\n      aliases: ['mijumaru'],\n      classification: 'Sea Otter Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/oshawott.mp3',\n      respelling: 'AS-shuh-wot',\n      ipa: '/ˈæsʃəwɒt/'\n    }\n  ],\n  [\n    'dewott',\n    {\n      abilities: { first: 'torrent', hidden: 'shellarmor' },\n      baseStats: { hp: 75, atk: 75, def: 60, spa: 83, spd: 60, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 17,\n      evos: ['samurott', 'samurotthisui'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 502,\n      prevo: 'oshawott',\n      species: 'dewott',\n      types: [TypesEnum.Water],\n      weightkg: 24.5,\n      aliases: ['futachimaru'],\n      classification: 'Discipline Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dewott.mp3',\n      respelling: 'DOO-wot',\n      ipa: '/ˈduːwɒt/'\n    }\n  ],\n  [\n    'samurott',\n    {\n      abilities: { first: 'torrent', hidden: 'shellarmor' },\n      baseStats: { hp: 95, atk: 100, def: 85, spa: 108, spd: 70, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 503,\n      otherFormes: ['samurotthisui'],\n      prevo: 'dewott',\n      species: 'samurott',\n      types: [TypesEnum.Water],\n      weightkg: 94.6,\n      aliases: ['daikenki'],\n      classification: 'Formidable Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/samurott.mp3',\n      respelling: 'SAM-uh-rot',\n      ipa: '/ˈdæmərɒt/'\n    }\n  ],\n  [\n    'samurotthisui',\n    {\n      abilities: { first: 'torrent', hidden: 'sharpness' },\n      baseSpecies: 'samurott',\n      baseStats: { hp: 90, atk: 108, def: 80, spa: 100, spd: 65, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 36,\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 503,\n      otherFormes: ['samurott'],\n      prevo: 'dewott',\n      species: 'samurott-hisui',\n      types: [TypesEnum.Water, TypesEnum.Dark],\n      weightkg: 58.2,\n      aliases: ['hisuisamurott', 'samurotth'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/samurott.mp3',\n      respelling: 'SAM-uh-rot',\n      ipa: '/ˈdæmərɒt/'\n    }\n  ],\n  [\n    'patrat',\n    {\n      abilities: { first: 'runaway', second: 'keeneye', hidden: 'analytic' },\n      baseStats: { hp: 45, atk: 55, def: 39, spa: 35, spd: 39, spe: 42 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['watchog'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 504,\n      species: 'patrat',\n      types: [TypesEnum.Normal],\n      weightkg: 11.6,\n      aliases: ['minezumi'],\n      classification: 'Scout Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/patrat.mp3',\n      respelling: 'pat-RAT',\n      ipa: '/pætˈræt/'\n    }\n  ],\n  [\n    'watchog',\n    {\n      abilities: { first: 'illuminate', second: 'keeneye', hidden: 'analytic' },\n      baseStats: { hp: 60, atk: 85, def: 69, spa: 60, spd: 69, spe: 77 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 505,\n      prevo: 'patrat',\n      species: 'watchog',\n      types: [TypesEnum.Normal],\n      weightkg: 27,\n      aliases: ['miruhoggu'],\n      classification: 'Lookout Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/watchog.mp3',\n      respelling: 'WAH-chawg',\n      ipa: '/ˈwɑːtʃɔːɡ/'\n    }\n  ],\n  [\n    'lillipup',\n    {\n      abilities: { first: 'vitalspirit', second: 'pickup', hidden: 'runaway' },\n      baseStats: { hp: 45, atk: 60, def: 45, spa: 25, spd: 45, spe: 55 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['herdier'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 506,\n      species: 'lillipup',\n      types: [TypesEnum.Normal],\n      weightkg: 4.1,\n      aliases: ['yooterii'],\n      classification: 'Puppy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lillipup.mp3',\n      respelling: 'LIL-ee-pup',\n      ipa: '/ˈlɪliːpʌp/'\n    }\n  ],\n  [\n    'herdier',\n    {\n      abilities: { first: 'intimidate', second: 'sandrush', hidden: 'scrappy' },\n      baseStats: { hp: 65, atk: 80, def: 65, spa: 35, spd: 65, spe: 60 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 16,\n      evos: ['stoutland'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 507,\n      prevo: 'lillipup',\n      species: 'herdier',\n      types: [TypesEnum.Normal],\n      weightkg: 14.7,\n      aliases: ['haaderia'],\n      classification: 'Loyal Dog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/herdier.mp3',\n      respelling: 'HERD-ee-er',\n      ipa: '/ˈhɜːrdiːər/'\n    }\n  ],\n  [\n    'stoutland',\n    {\n      abilities: { first: 'intimidate', second: 'sandrush', hidden: 'scrappy' },\n      baseStats: { hp: 85, atk: 110, def: 90, spa: 45, spd: 90, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 508,\n      prevo: 'herdier',\n      species: 'stoutland',\n      types: [TypesEnum.Normal],\n      weightkg: 61,\n      aliases: ['muurando'],\n      classification: 'Big-Hearted Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/stoutland.mp3',\n      respelling: 'STOWT-lund',\n      ipa: '/ˈstaʊtlənd/'\n    }\n  ],\n  [\n    'purrloin',\n    {\n      abilities: { first: 'limber', second: 'unburden', hidden: 'prankster' },\n      baseStats: { hp: 41, atk: 50, def: 37, spa: 50, spd: 37, spe: 66 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['liepard'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 509,\n      species: 'purrloin',\n      types: [TypesEnum.Dark],\n      weightkg: 10.1,\n      aliases: ['choroneko'],\n      classification: 'Devious Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/purrloin.mp3',\n      respelling: 'PUR-loyn',\n      ipa: '/ˈpɜːrlɔɪn/'\n    }\n  ],\n  [\n    'liepard',\n    {\n      abilities: { first: 'limber', second: 'unburden', hidden: 'prankster' },\n      baseStats: { hp: 64, atk: 88, def: 50, spa: 88, spd: 50, spe: 106 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 510,\n      prevo: 'purrloin',\n      species: 'liepard',\n      types: [TypesEnum.Dark],\n      weightkg: 37.5,\n      aliases: ['reparudasu'],\n      classification: 'Cruel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/liepard.mp3',\n      respelling: 'LY-purd',\n      ipa: '/ˈlaɪpərd/'\n    }\n  ],\n  [\n    'pansage',\n    {\n      abilities: { first: 'gluttony', hidden: 'overgrow' },\n      baseStats: { hp: 50, atk: 53, def: 48, spa: 53, spd: 48, spe: 64 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['simisage'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 511,\n      species: 'pansage',\n      types: [TypesEnum.Grass],\n      weightkg: 10.5,\n      aliases: ['yanappu'],\n      classification: 'Grass Monkey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pansage.mp3',\n      respelling: 'PAN-sayj',\n      ipa: '/ˈpænseɪdʒ/'\n    }\n  ],\n  [\n    'simisage',\n    {\n      abilities: { first: 'gluttony', hidden: 'overgrow' },\n      baseStats: { hp: 75, atk: 98, def: 63, spa: 98, spd: 63, spe: 101 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'use Leaf Stone',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 512,\n      prevo: 'pansage',\n      species: 'simisage',\n      types: [TypesEnum.Grass],\n      weightkg: 30.5,\n      aliases: ['yanakkii'],\n      classification: 'Thorn Monkey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/simisage.mp3',\n      respelling: 'SIH-mee-sayj',\n      ipa: '/ˈsɪmiːseɪdʒ/'\n    }\n  ],\n  [\n    'pansear',\n    {\n      abilities: { first: 'gluttony', hidden: 'blaze' },\n      baseStats: { hp: 50, atk: 53, def: 48, spa: 53, spd: 48, spe: 64 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['simisear'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 513,\n      species: 'pansear',\n      types: [TypesEnum.Fire],\n      weightkg: 11,\n      aliases: ['baoppu'],\n      classification: 'High Temp Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pansear.mp3',\n      respelling: 'PAN-seer',\n      ipa: '/ˈpænsɪːr/'\n    }\n  ],\n  [\n    'simisear',\n    {\n      abilities: { first: 'gluttony', hidden: 'blaze' },\n      baseStats: { hp: 75, atk: 98, def: 63, spa: 98, spd: 63, spe: 101 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'use Fire Stone',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 514,\n      prevo: 'pansear',\n      species: 'simisear',\n      types: [TypesEnum.Fire],\n      weightkg: 28,\n      aliases: ['baokkii'],\n      classification: 'Ember Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/simisear.mp3',\n      respelling: 'SIH-mee-seer',\n      ipa: '/ˈsɪmiːsɪːr/'\n    }\n  ],\n  [\n    'panpour',\n    {\n      abilities: { first: 'gluttony', hidden: 'torrent' },\n      baseStats: { hp: 50, atk: 53, def: 48, spa: 53, spd: 48, spe: 64 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['simipour'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 515,\n      species: 'panpour',\n      types: [TypesEnum.Water],\n      weightkg: 13.5,\n      aliases: ['hiyappu'],\n      classification: 'Spray Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/panpour.mp3',\n      respelling: 'PAN-por',\n      ipa: '/ˈpænpɔːr/'\n    }\n  ],\n  [\n    'simipour',\n    {\n      abilities: { first: 'gluttony', hidden: 'torrent' },\n      baseStats: { hp: 75, atk: 98, def: 63, spa: 98, spd: 63, spe: 101 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'use Water Stone',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 516,\n      prevo: 'panpour',\n      species: 'simipour',\n      types: [TypesEnum.Water],\n      weightkg: 29,\n      aliases: ['hiyakkii'],\n      classification: 'Geyser Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/simipour.mp3',\n      respelling: 'SIH-mee-por',\n      ipa: '/ˈsɪmiːpɔːr/'\n    }\n  ],\n  [\n    'munna',\n    {\n      abilities: { first: 'forewarn', second: 'synchronize', hidden: 'telepathy' },\n      baseStats: { hp: 76, atk: 25, def: 45, spa: 67, spd: 55, spe: 24 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Pink',\n      eggGroups: ['Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['musharna'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 517,\n      species: 'munna',\n      types: [TypesEnum.Psychic],\n      weightkg: 23.3,\n      classification: 'Dream Eater Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/munna.mp3',\n      respelling: 'MOON-nuh',\n      ipa: '/ˈmuːnə/'\n    }\n  ],\n  [\n    'musharna',\n    {\n      abilities: { first: 'forewarn', second: 'synchronize', hidden: 'telepathy' },\n      baseStats: { hp: 116, atk: 55, def: 85, spa: 107, spd: 95, spe: 29 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Pink',\n      eggGroups: ['Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Moon Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 518,\n      prevo: 'munna',\n      species: 'musharna',\n      types: [TypesEnum.Psychic],\n      weightkg: 60.5,\n      aliases: ['mushaana'],\n      classification: 'Drowsing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/musharna.mp3',\n      respelling: 'moo-SHAHR-nuh',\n      ipa: '/muːˈʃɑːrnə/'\n    }\n  ],\n  [\n    'pidove',\n    {\n      abilities: { first: 'bigpecks', second: 'superluck', hidden: 'rivalry' },\n      baseStats: { hp: 50, atk: 55, def: 50, spa: 36, spd: 30, spe: 43 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['tranquill'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 519,\n      species: 'pidove',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 2.1,\n      aliases: ['mamepato'],\n      classification: 'Tiny Pigeon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pidove.mp3',\n      respelling: 'pih-DUV',\n      ipa: '/pɪˈdʌv/'\n    }\n  ],\n  [\n    'tranquill',\n    {\n      abilities: { first: 'bigpecks', second: 'superluck', hidden: 'rivalry' },\n      baseStats: { hp: 62, atk: 77, def: 62, spa: 50, spd: 42, spe: 65 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 21,\n      evos: ['unfezant'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 520,\n      prevo: 'pidove',\n      species: 'tranquill',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 15,\n      aliases: ['hatooboo'],\n      classification: 'Wild Pigeon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tranquill.mp3',\n      respelling: 'TRAN-kwil',\n      ipa: '/ˈtræŋkwɪl/'\n    }\n  ],\n  [\n    'unfezant',\n    {\n      abilities: { first: 'bigpecks', second: 'superluck', hidden: 'rivalry' },\n      baseStats: { hp: 80, atk: 115, def: 80, spa: 65, spd: 55, spe: 93 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 521,\n      prevo: 'tranquill',\n      species: 'unfezant',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 29,\n      aliases: ['kenhorou'],\n      classification: 'Proud Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/unfezant.mp3',\n      respelling: 'un-FEZ-ent',\n      ipa: '/ʌnˈfɛzənt/'\n    }\n  ],\n  [\n    'blitzle',\n    {\n      abilities: {\n        first: 'lightningrod',\n        second: 'motordrive',\n        hidden: 'sapsipper'\n      },\n      baseStats: { hp: 45, atk: 60, def: 32, spa: 50, spd: 32, spe: 76 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['zebstrika'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 522,\n      species: 'blitzle',\n      types: [TypesEnum.Electric],\n      weightkg: 29.8,\n      aliases: ['shimama'],\n      classification: 'Electrified Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/blitzle.mp3',\n      respelling: 'BLIT-zul',\n      ipa: '/ˈblɪtzəl/'\n    }\n  ],\n  [\n    'zebstrika',\n    {\n      abilities: {\n        first: 'lightningrod',\n        second: 'motordrive',\n        hidden: 'sapsipper'\n      },\n      baseStats: { hp: 75, atk: 100, def: 63, spa: 80, spd: 63, spe: 116 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 27,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 523,\n      prevo: 'blitzle',\n      species: 'zebstrika',\n      types: [TypesEnum.Electric],\n      weightkg: 79.5,\n      aliases: ['zeburaika'],\n      classification: 'Thunderbolt Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zebstrika.mp3',\n      respelling: 'zehb-STRY-kuh',\n      ipa: '/zɛbˈstraɪkə/'\n    }\n  ],\n  [\n    'roggenrola',\n    {\n      abilities: { first: 'sturdy', second: 'weakarmor', hidden: 'sandforce' },\n      baseStats: { hp: 55, atk: 75, def: 85, spa: 25, spd: 25, spe: 15 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['boldore'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 524,\n      species: 'roggenrola',\n      types: [TypesEnum.Rock],\n      weightkg: 18,\n      aliases: ['dangoro'],\n      classification: 'Mantle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/roggenrola.mp3',\n      respelling: 'rah-gen-ROH-lah',\n      ipa: '/rɑːɡənˈroʊlɑː/'\n    }\n  ],\n  [\n    'boldore',\n    {\n      abilities: { first: 'sturdy', second: 'weakarmor', hidden: 'sandforce' },\n      baseStats: { hp: 70, atk: 105, def: 105, spa: 50, spd: 40, spe: 20 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 25,\n      evos: ['gigalith'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 525,\n      prevo: 'roggenrola',\n      species: 'boldore',\n      types: [TypesEnum.Rock],\n      weightkg: 102,\n      aliases: ['gantoru'],\n      classification: 'Ore Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/boldore.mp3',\n      respelling: 'BOHL-dohr',\n      ipa: '/ˈboʊldɔər/'\n    }\n  ],\n  [\n    'gigalith',\n    {\n      abilities: { first: 'sturdy', second: 'sandstream', hidden: 'sandforce' },\n      baseStats: { hp: 85, atk: 135, def: 130, spa: 60, spd: 80, spe: 25 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 526,\n      prevo: 'boldore',\n      species: 'gigalith',\n      types: [TypesEnum.Rock],\n      weightkg: 260,\n      aliases: ['gigaiasu'],\n      classification: 'Compressed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gigalith.mp3',\n      respelling: 'GIH-gah-lith',\n      ipa: '/ˈɡɪɡɑːlɪθ/'\n    }\n  ],\n  [\n    'woobat',\n    {\n      abilities: { first: 'unaware', second: 'klutz', hidden: 'simple' },\n      baseStats: { hp: 65, atk: 45, def: 43, spa: 55, spd: 43, spe: 72 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Flying', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['swoobat'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 527,\n      species: 'woobat',\n      types: [TypesEnum.Psychic, TypesEnum.Flying],\n      weightkg: 2.1,\n      aliases: ['koromori'],\n      classification: 'Bat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/woobat.mp3',\n      respelling: 'WOO-bat',\n      ipa: '/ˈwuːbæt/'\n    }\n  ],\n  [\n    'swoobat',\n    {\n      abilities: { first: 'unaware', second: 'klutz', hidden: 'simple' },\n      baseStats: { hp: 67, atk: 57, def: 55, spa: 77, spd: 55, spe: 114 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Flying', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'Level up with happiness of at least 220',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 528,\n      prevo: 'woobat',\n      species: 'swoobat',\n      types: [TypesEnum.Psychic, TypesEnum.Flying],\n      weightkg: 10.5,\n      aliases: ['kokoromori'],\n      classification: 'Courting Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swoobat.mp3',\n      respelling: 'SWOO-bat',\n      ipa: '/ˈsuːbæt/'\n    }\n  ],\n  [\n    'drilbur',\n    {\n      abilities: { first: 'sandrush', second: 'sandforce', hidden: 'moldbreaker' },\n      baseStats: { hp: 60, atk: 85, def: 40, spa: 30, spd: 45, spe: 68 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['excadrill'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 529,\n      species: 'drilbur',\n      types: [TypesEnum.Ground],\n      weightkg: 8.5,\n      aliases: ['moguryuu'],\n      classification: 'Mole Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drilbur.mp3',\n      respelling: 'DRIL-bur',\n      ipa: '/ˈdrɪlbɜːr/'\n    }\n  ],\n  [\n    'excadrill',\n    {\n      abilities: { first: 'piercingdrill' },\n      baseStats: { hp: 110, atk: 135, def: 60, spa: 50, spd: 65, spe: 88 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 31,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 530,\n      prevo: 'drilbur',\n      species: 'excadrill',\n      otherFormes: ['excadrillmega'],\n      types: [TypesEnum.Ground, TypesEnum.Steel],\n      weightkg: 40.4,\n      aliases: ['doryuuzu', 'drill', 'driller'],\n      classification: 'Subterrene Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/excadrill.mp3',\n      respelling: 'EKS-kuh-dril',\n      ipa: '/ˈɛkskədrɪl/'\n    }\n  ],\n  [\n    'excadrillmega',\n    {\n      abilities: { first: 'sandrush', second: 'sandforce', hidden: 'moldbreaker' },\n      baseStats: { hp: 110, atk: 165, def: 100, spa: 65, spd: 65, spe: 103 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      baseSpecies: 'excadrill',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 530,\n      otherFormes: ['excadrill'],\n      species: 'excadrill-mega',\n      types: [TypesEnum.Ground, TypesEnum.Steel],\n      weightkg: 60,\n      aliases: ['doryuuzumega', 'drillmega', 'drillermega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/excadrill.mp3',\n      respelling: 'EKS-kuh-dril',\n      ipa: '/ˈɛkskədrɪl/'\n    }\n  ],\n  [\n    'audino',\n    {\n      abilities: { first: 'healer', second: 'regenerator', hidden: 'klutz' },\n      baseStats: { hp: 103, atk: 60, def: 86, spa: 60, spd: 86, spe: 50 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 531,\n      otherFormes: ['audinomega'],\n      species: 'audino',\n      types: [TypesEnum.Normal],\n      weightkg: 31,\n      aliases: ['tabunne'],\n      classification: 'Hearing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/audino.mp3',\n      respelling: 'AW-dih-noh',\n      ipa: '/ˈɔːdɪnoʊ/'\n    }\n  ],\n  [\n    'audinomega',\n    {\n      abilities: { first: 'healer' },\n      baseSpecies: 'audino',\n      baseStats: { hp: 103, atk: 60, def: 126, spa: 80, spd: 126, spe: 50 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'White',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 531,\n      otherFormes: ['audino'],\n      species: 'audino-mega',\n      types: [TypesEnum.Normal, TypesEnum.Fairy],\n      weightkg: 32,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/audino-mega.mp3',\n      respelling: 'AW-dih-noh',\n      ipa: '/ˈɔːdɪnoʊ/'\n    }\n  ],\n  [\n    'timburr',\n    {\n      abilities: { first: 'guts', second: 'sheerforce', hidden: 'ironfist' },\n      baseStats: { hp: 75, atk: 80, def: 55, spa: 25, spd: 35, spe: 35 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Gray',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['gurdurr'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 532,\n      species: 'timburr',\n      types: [TypesEnum.Fighting],\n      weightkg: 12.5,\n      aliases: ['dokkoraa'],\n      classification: 'Muscular Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/timburr.mp3',\n      respelling: 'TIM-bur',\n      ipa: '/ˈtɪmbɜːr/'\n    }\n  ],\n  [\n    'gurdurr',\n    {\n      abilities: { first: 'guts', second: 'sheerforce', hidden: 'ironfist' },\n      baseStats: { hp: 85, atk: 105, def: 85, spa: 40, spd: 50, spe: 40 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Gray',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 25,\n      evos: ['conkeldurr'],\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 533,\n      prevo: 'timburr',\n      species: 'gurdurr',\n      types: [TypesEnum.Fighting],\n      weightkg: 40,\n      aliases: ['dotekkotsu'],\n      classification: 'Muscular Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gurdurr.mp3',\n      respelling: 'GUR-dur',\n      ipa: '/ˈɡɜːrdər/'\n    }\n  ],\n  [\n    'conkeldurr',\n    {\n      abilities: { first: 'guts', second: 'sheerforce', hidden: 'ironfist' },\n      baseStats: { hp: 105, atk: 140, def: 95, spa: 55, spd: 65, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      genderRatio: { male: '75%', female: '25%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 534,\n      prevo: 'gurdurr',\n      species: 'conkeldurr',\n      types: [TypesEnum.Fighting],\n      weightkg: 87,\n      aliases: ['conk', 'roobushin'],\n      classification: 'Muscular Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/conkeldurr.mp3',\n      respelling: 'kon-KELL-dur',\n      ipa: '/kɒŋˈkɛldər/'\n    }\n  ],\n  [\n    'tympole',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'hydration',\n        hidden: 'waterabsorb'\n      },\n      baseStats: { hp: 50, atk: 50, def: 40, spa: 50, spd: 40, spe: 64 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['palpitoad'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 535,\n      species: 'tympole',\n      types: [TypesEnum.Water],\n      weightkg: 4.5,\n      aliases: ['otamaro'],\n      classification: 'Tadpole Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tympole.mp3',\n      respelling: 'TIM-pohl',\n      ipa: '/ˈtɪmpoʊl/'\n    }\n  ],\n  [\n    'palpitoad',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'hydration',\n        hidden: 'waterabsorb'\n      },\n      baseStats: { hp: 75, atk: 65, def: 55, spa: 65, spd: 55, spe: 69 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 25,\n      evos: ['seismitoad'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 536,\n      prevo: 'tympole',\n      species: 'palpitoad',\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 17,\n      aliases: ['gamagaru'],\n      classification: 'Vibration Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/palpitoad.mp3',\n      respelling: 'PAL-pih-tohd',\n      ipa: '/ˈpælpɪtoʊd/'\n    }\n  ],\n  [\n    'seismitoad',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'poisontouch',\n        hidden: 'waterabsorb'\n      },\n      baseStats: { hp: 105, atk: 95, def: 75, spa: 85, spd: 75, spe: 74 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 537,\n      prevo: 'palpitoad',\n      species: 'seismitoad',\n      types: [TypesEnum.Water, TypesEnum.Ground],\n      weightkg: 62,\n      aliases: ['gamageroge'],\n      classification: 'Vibration Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/seismitoad.mp3',\n      respelling: 'SYZ-mih-tohd',\n      ipa: '/ˈsaɪzmɪtoʊd/'\n    }\n  ],\n  [\n    'throh',\n    {\n      abilities: { first: 'guts', second: 'innerfocus', hidden: 'moldbreaker' },\n      baseStats: { hp: 120, atk: 100, def: 85, spa: 30, spd: 85, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 538,\n      species: 'throh',\n      types: [TypesEnum.Fighting],\n      weightkg: 55.5,\n      aliases: ['ernie', 'nageki'],\n      classification: 'Judo Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/throh.mp3',\n      respelling: 'THROH',\n      ipa: '/ˈθroʊ/'\n    }\n  ],\n  [\n    'sawk',\n    {\n      abilities: { first: 'sturdy', second: 'innerfocus', hidden: 'moldbreaker' },\n      baseStats: { hp: 75, atk: 125, def: 75, spa: 30, spd: 75, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 539,\n      species: 'sawk',\n      types: [TypesEnum.Fighting],\n      weightkg: 51,\n      aliases: ['bert', 'dageki'],\n      classification: 'Karate Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sawk.mp3',\n      respelling: 'SAWK',\n      ipa: '/ˈsɔːk/'\n    }\n  ],\n  [\n    'sewaddle',\n    {\n      abilities: { first: 'swarm', second: 'chlorophyll', hidden: 'overcoat' },\n      baseStats: { hp: 45, atk: 53, def: 70, spa: 40, spd: 60, spe: 42 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['swadloon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 540,\n      species: 'sewaddle',\n      types: [TypesEnum.Bug, TypesEnum.Grass],\n      weightkg: 2.5,\n      aliases: ['kurumiru'],\n      classification: 'Sewing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sewaddle.mp3',\n      respelling: 'seh-WAH-dul',\n      ipa: '/sɛˈwɑːdəl/'\n    }\n  ],\n  [\n    'swadloon',\n    {\n      abilities: { first: 'leafguard', second: 'chlorophyll', hidden: 'overcoat' },\n      baseStats: { hp: 55, atk: 63, def: 90, spa: 50, spd: 80, spe: 42 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      evos: ['leavanny'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 541,\n      prevo: 'sewaddle',\n      species: 'swadloon',\n      types: [TypesEnum.Bug, TypesEnum.Grass],\n      weightkg: 7.3,\n      aliases: ['kurumayu'],\n      classification: 'Leaf-Wrapped Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swadloon.mp3',\n      respelling: 'swahd-LOON',\n      ipa: '/swɑːdˈluːn/'\n    }\n  ],\n  [\n    'leavanny',\n    {\n      abilities: { first: 'swarm', second: 'chlorophyll', hidden: 'overcoat' },\n      baseStats: { hp: 75, atk: 103, def: 80, spa: 70, spd: 80, spe: 92 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 21,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 542,\n      prevo: 'swadloon',\n      species: 'leavanny',\n      types: [TypesEnum.Bug, TypesEnum.Grass],\n      weightkg: 20.5,\n      aliases: ['hahakomori'],\n      classification: 'Nurturing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/leavanny.mp3',\n      respelling: 'lee-VAN-nee',\n      ipa: '/liːˈvæniː/'\n    }\n  ],\n  [\n    'venipede',\n    {\n      abilities: { first: 'poisonpoint', second: 'swarm', hidden: 'speedboost' },\n      baseStats: { hp: 30, atk: 45, def: 59, spa: 30, spd: 39, spe: 57 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['whirlipede'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 543,\n      species: 'venipede',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 5.3,\n      aliases: ['fushide'],\n      classification: 'Centipede Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/venipede.mp3',\n      respelling: 'VEHN-ih-peed',\n      ipa: '/ˈvɛnɪpiːd/'\n    }\n  ],\n  [\n    'whirlipede',\n    {\n      abilities: { first: 'poisonpoint', second: 'swarm', hidden: 'speedboost' },\n      baseStats: { hp: 40, atk: 55, def: 99, spa: 40, spd: 79, spe: 47 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 22,\n      evos: ['scolipede'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 544,\n      prevo: 'venipede',\n      species: 'whirlipede',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 58.5,\n      aliases: ['hoiiga'],\n      classification: 'Curlipede Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/whirlipede.mp3',\n      respelling: 'WHIR-lih-peed',\n      ipa: '/ˈhwɜːrlɪpiːd/'\n    }\n  ],\n  [\n    'scolipede',\n    {\n      abilities: { first: 'poisonpoint', second: 'swarm', hidden: 'speedboost' },\n      baseStats: { hp: 60, atk: 100, def: 89, spa: 55, spd: 69, spe: 112 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 545,\n      prevo: 'whirlipede',\n      species: 'scolipede',\n      otherFormes: ['scolipedemega'],\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 200.5,\n      aliases: ['pendoraa', 'scoli'],\n      classification: 'Megapede Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scolipede.mp3',\n      respelling: 'SKOH-lih-peed',\n      ipa: '/ˈskoʊlɪpiːd/'\n    }\n  ],\n  [\n    'scolipedemega',\n    {\n      abilities: { first: 'poisonpoint', second: 'swarm', hidden: 'speedboost' },\n      baseStats: { hp: 60, atk: 140, def: 149, spa: 75, spd: 99, spe: 62 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      baseSpecies: 'scolipede',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 545,\n      otherFormes: ['scolipede'],\n      species: 'scolipede-mega',\n      types: [TypesEnum.Bug, TypesEnum.Poison],\n      weightkg: 230.5,\n      aliases: ['pendoraamega', 'scolimega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scolipede.mp3',\n      respelling: 'SKOH-lih-peed',\n      ipa: '/ˈskoʊlɪpiːd/'\n    }\n  ],\n  [\n    'cottonee',\n    {\n      abilities: {\n        first: 'prankster',\n        second: 'infiltrator',\n        hidden: 'chlorophyll'\n      },\n      baseStats: { hp: 40, atk: 27, def: 60, spa: 37, spd: 50, spe: 66 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['whimsicott'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 546,\n      species: 'cottonee',\n      types: [TypesEnum.Grass, TypesEnum.Fairy],\n      weightkg: 0.6,\n      aliases: ['monmen'],\n      classification: 'Cotton Puff Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cottonee.mp3',\n      respelling: 'KAHT-ton-ee',\n      ipa: '/ˈkɑːtɒniː/'\n    }\n  ],\n  [\n    'whimsicott',\n    {\n      abilities: {\n        first: 'prankster',\n        second: 'infiltrator',\n        hidden: 'chlorophyll'\n      },\n      baseStats: { hp: 60, atk: 67, def: 85, spa: 77, spd: 75, spe: 116 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Fairy', 'Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'use Sun Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 547,\n      prevo: 'cottonee',\n      species: 'whimsicott',\n      types: [TypesEnum.Grass, TypesEnum.Fairy],\n      weightkg: 6.6,\n      aliases: ['erufuun', 'whimsi'],\n      classification: 'Windveiled Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/whimsicott.mp3',\n      respelling: 'WHIM-zih-kot',\n      ipa: '/ˈhwɪmzɪkɒt/'\n    }\n  ],\n  [\n    'petilil',\n    {\n      abilities: { first: 'chlorophyll', second: 'owntempo', hidden: 'leafguard' },\n      baseStats: { hp: 45, atk: 35, def: 50, spa: 70, spd: 50, spe: 30 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['lilligant', 'lilliganthisui'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 548,\n      species: 'petilil',\n      types: [TypesEnum.Grass],\n      weightkg: 6.6,\n      aliases: ['churine'],\n      classification: 'Bulb Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/petilil.mp3',\n      respelling: 'PEH-tih-lil',\n      ipa: '/ˈpɛtɪlɪl/'\n    }\n  ],\n  [\n    'lilligant',\n    {\n      abilities: { first: 'chlorophyll', second: 'owntempo', hidden: 'leafguard' },\n      baseStats: { hp: 70, atk: 60, def: 75, spa: 110, spd: 75, spe: 90 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Sun Stone',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 549,\n      otherFormes: ['lilliganthisui'],\n      prevo: 'petilil',\n      species: 'lilligant',\n      types: [TypesEnum.Grass],\n      weightkg: 16.3,\n      aliases: ['doredia'],\n      classification: 'Flowering Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lilligant.mp3',\n      respelling: 'LIL-lih-gunt',\n      ipa: '/ˈlɪlɪɡʌnt/'\n    }\n  ],\n  [\n    'lilliganthisui',\n    {\n      abilities: { first: 'chlorophyll', second: 'hustle', hidden: 'leafguard' },\n      baseSpecies: 'lilligant',\n      baseStats: { hp: 70, atk: 105, def: 75, spa: 50, spd: 75, spe: 105 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Sun Stone',\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 549,\n      otherFormes: ['lilligant'],\n      prevo: 'petilil',\n      species: 'lilligant-hisui',\n      types: [TypesEnum.Grass, TypesEnum.Fighting],\n      weightkg: 19.2,\n      aliases: ['hisuianlilligant', 'lilliganth'],\n      classification: 'Spinning Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lilligant.mp3',\n      respelling: 'LIL-lih-gunt',\n      ipa: '/ˈlɪlɪɡʌnt/'\n    }\n  ],\n  [\n    'basculin',\n    {\n      abilities: {\n        first: 'reckless',\n        second: 'adaptability',\n        hidden: 'moldbreaker'\n      },\n      baseForme: 'Red-Striped',\n      baseStats: { hp: 70, atk: 92, def: 65, spa: 80, spd: 55, spe: 98 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Green',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 10280,\n      num: 550,\n      otherFormes: ['basculinbluestriped', 'basculinwhitestriped'],\n      species: 'basculin',\n      types: [TypesEnum.Water],\n      weightkg: 18,\n      aliases: ['basculinr', 'basculinred', 'basculinredstripe', 'basculinredstriped', 'basurao'],\n      classification: 'Hostile Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/basculin.mp3',\n      respelling: 'BASS-kyoo-lin',\n      ipa: '/ˈbæskjuːlɪn/'\n    }\n  ],\n  [\n    'basculinbluestriped',\n    {\n      abilities: {\n        first: 'rockhead',\n        second: 'adaptability',\n        hidden: 'moldbreaker'\n      },\n      baseSpecies: 'basculin',\n      baseStats: { hp: 70, atk: 92, def: 65, spa: 80, spd: 55, spe: 98 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Green',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Blue-Striped',\n      formeLetter: 'B',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 10280,\n      num: 550,\n      otherFormes: ['basculin', 'basculinwhitestriped'],\n      species: 'basculin-blue-striped',\n      types: [TypesEnum.Water],\n      weightkg: 18,\n      aliases: ['basculinb', 'basculinblue', 'basculinbluestripe'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/basculin.mp3',\n      respelling: 'BASS-kyoo-lin',\n      ipa: '/ˈbæskjuːlɪn/'\n    }\n  ],\n  [\n    'basculinwhitestriped',\n    {\n      abilities: {\n        first: 'rattled',\n        second: 'adaptability',\n        hidden: 'moldbreaker'\n      },\n      baseSpecies: 'basculin',\n      baseStats: { hp: 70, atk: 92, def: 65, spa: 80, spd: 55, spe: 98 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Green',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evos: ['basculegion', 'basculegionf'],\n      forme: 'White-Striped',\n      formeLetter: 'W',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 10280,\n      num: 550,\n      otherFormes: ['basculin', 'basculinbluestriped'],\n      species: 'basculin-white-striped',\n      types: [TypesEnum.Water],\n      weightkg: 18,\n      aliases: ['basculinw', 'basculinwhite', 'basculinwhitestripe', 'hisuianbasculin', 'basculinhisui', 'basculinh'],\n      classification: 'Mellow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/basculin.mp3',\n      respelling: 'BASS-kyoo-lin',\n      ipa: '/ˈbæskjuːlɪn/'\n    }\n  ],\n  [\n    'sandile',\n    {\n      abilities: { first: 'intimidate', second: 'moxie', hidden: 'angerpoint' },\n      baseStats: { hp: 50, atk: 72, def: 35, spa: 35, spd: 35, spe: 65 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['krokorok'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 551,\n      species: 'sandile',\n      types: [TypesEnum.Ground, TypesEnum.Dark],\n      weightkg: 15.2,\n      aliases: ['meguroko'],\n      classification: 'Desert Croc Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sandile.mp3',\n      respelling: 'SAN-dyle',\n      ipa: '/ˈsændaɪl/'\n    }\n  ],\n  [\n    'krokorok',\n    {\n      abilities: { first: 'intimidate', second: 'moxie', hidden: 'angerpoint' },\n      baseStats: { hp: 60, atk: 82, def: 45, spa: 45, spd: 45, spe: 74 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 29,\n      evos: ['krookodile'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 552,\n      prevo: 'sandile',\n      species: 'krokorok',\n      types: [TypesEnum.Ground, TypesEnum.Dark],\n      weightkg: 33.4,\n      aliases: ['warubiru'],\n      classification: 'Desert Croc Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/krokorok.mp3',\n      respelling: 'KRAHK-oh-rahk',\n      ipa: '/ˈkrɑːkoʊrɑːk/'\n    }\n  ],\n  [\n    'krookodile',\n    {\n      abilities: { first: 'intimidate', second: 'moxie', hidden: 'angerpoint' },\n      baseStats: { hp: 95, atk: 117, def: 80, spa: 65, spd: 70, spe: 92 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 553,\n      prevo: 'krokorok',\n      species: 'krookodile',\n      types: [TypesEnum.Ground, TypesEnum.Dark],\n      weightkg: 96.3,\n      aliases: ['krook', 'warubiaru'],\n      classification: 'Intimidation Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/krookodile.mp3',\n      respelling: 'KROOK-oh-dyle',\n      ipa: '/ˈkrʊkoʊdaɪl/'\n    }\n  ],\n  [\n    'darumaka',\n    {\n      abilities: { first: 'hustle', hidden: 'innerfocus' },\n      baseStats: { hp: 70, atk: 90, def: 45, spa: 15, spd: 45, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['darmanitan'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 554,\n      otherFormes: ['darumakagalar'],\n      species: 'darumaka',\n      types: [TypesEnum.Fire],\n      weightkg: 37.5,\n      aliases: ['darumakka'],\n      classification: 'Zen Charm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/darumaka.mp3',\n      respelling: 'dah-roo-MAH-kuh',\n      ipa: '/dɑːruːˈmɑːkə/'\n    }\n  ],\n  [\n    'darumakagalar',\n    {\n      abilities: { first: 'hustle', hidden: 'innerfocus' },\n      baseSpecies: 'darumaka',\n      baseStats: { hp: 70, atk: 90, def: 45, spa: 15, spd: 45, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['darmanitangalar'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 554,\n      otherFormes: ['darumaka'],\n      species: 'darumaka-galar',\n      types: [TypesEnum.Ice],\n      weightkg: 40,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/darumaka.mp3',\n      respelling: 'dah-roo-MAH-kuh',\n      ipa: '/dɑːruːˈmɑːkə/'\n    }\n  ],\n  [\n    'darmanitan',\n    {\n      abilities: { first: 'sheerforce', hidden: 'zenmode' },\n      baseForme: 'Standard',\n      baseStats: { hp: 105, atk: 140, def: 55, spa: 30, spd: 55, spe: 95 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 35,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 555,\n      otherFormes: ['darmanitanzen', 'darmanitangalar', 'darmanitangalarzen'],\n      prevo: 'darumaka',\n      species: 'darmanitan',\n      types: [TypesEnum.Fire],\n      weightkg: 92.9,\n      aliases: ['darm', 'darmanitans', 'darmanitanstandard', 'darmanitanstandardmode', 'hihidaruma'],\n      classification: 'Blazing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/darmanitan.mp3',\n      respelling: 'dar-MAN-ih-tan',\n      ipa: '/dɑːrˈmænɪtæn/'\n    }\n  ],\n  [\n    'darmanitangalar',\n    {\n      abilities: { first: 'gorillatactics', hidden: 'zenmode' },\n      baseSpecies: 'darmanitan',\n      baseStats: { hp: 105, atk: 140, def: 55, spa: 30, spd: 55, spe: 95 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Ice Stone',\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 555,\n      otherFormes: ['darmanitan', 'darmanitanzen', 'darmanitangalarzen'],\n      prevo: 'darumakagalar',\n      species: 'darmanitan-galar',\n      types: [TypesEnum.Ice],\n      weightkg: 120,\n      classification: 'Zen Charm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/darmanitan.mp3',\n      respelling: 'dar-MAN-ih-tan',\n      ipa: '/dɑːrˈmænɪtæn/'\n    }\n  ],\n  [\n    'darmanitanzen',\n    {\n      abilities: { first: 'zenmode' },\n      baseSpecies: 'darmanitan',\n      baseStats: { hp: 105, atk: 30, def: 105, spa: 140, spd: 105, spe: 55 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 35,\n      forme: 'Zen',\n      formeLetter: 'Z',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 555,\n      otherFormes: ['darmanitan', 'darmanitangalar', 'darmanitangalarzen'],\n      prevo: 'darumaka',\n      species: 'darmanitan-zen',\n      types: [TypesEnum.Fire, TypesEnum.Psychic],\n      weightkg: 92.9,\n      aliases: ['darmanitanz', 'darmanitanzenmode'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/darmanitan.mp3',\n      respelling: 'dar-MAN-ih-tan',\n      ipa: '/dɑːrˈmænɪtæn/'\n    }\n  ],\n  [\n    'darmanitangalarzen',\n    {\n      abilities: { first: 'gorillatactics', hidden: 'zenmode' },\n      baseSpecies: 'darmanitangalar',\n      baseStats: { hp: 105, atk: 160, def: 55, spa: 30, spd: 55, spe: 135 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Ice Stone',\n      forme: 'Galar-Zen',\n      formeLetter: 'Z',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 555,\n      otherFormes: ['darmanitan', 'darmanitangalar', 'darmanitanzen'],\n      prevo: 'darumakagalar',\n      species: 'darmanitan-galarzen',\n      types: [TypesEnum.Ice, TypesEnum.Fire],\n      weightkg: 120,\n      aliases: ['darmanitangalarzen', 'darmanitanzengalar', 'darmgz'],\n      classification: 'Blazing Pokémon',\n      respelling: 'dar-MAN-ih-tan',\n      ipa: '/dɑːrˈmænɪtæn/'\n    }\n  ],\n  [\n    'maractus',\n    {\n      abilities: {\n        first: 'waterabsorb',\n        second: 'chlorophyll',\n        hidden: 'stormdrain'\n      },\n      baseStats: { hp: 75, atk: 86, def: 67, spa: 106, spd: 67, spe: 60 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 556,\n      species: 'maractus',\n      types: [TypesEnum.Grass],\n      weightkg: 28,\n      aliases: ['marakatchi'],\n      classification: 'Cactus Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/maractus.mp3',\n      respelling: 'mah-RAK-tus',\n      ipa: '/mɑːˈræktʌs/'\n    }\n  ],\n  [\n    'dwebble',\n    {\n      abilities: { first: 'sturdy', second: 'shellarmor', hidden: 'weakarmor' },\n      baseStats: { hp: 50, atk: 65, def: 85, spa: 35, spd: 35, spe: 55 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Red',\n      eggGroups: ['Bug', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['crustle'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 557,\n      species: 'dwebble',\n      types: [TypesEnum.Bug, TypesEnum.Rock],\n      weightkg: 14.5,\n      aliases: ['ishizumai'],\n      classification: 'Rock Inn Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dwebble.mp3',\n      respelling: 'DWEHB-bul',\n      ipa: '/ˈdwɛbəl/'\n    }\n  ],\n  [\n    'crustle',\n    {\n      abilities: { first: 'sturdy', second: 'shellarmor', hidden: 'weakarmor' },\n      baseStats: { hp: 70, atk: 105, def: 125, spa: 65, spd: 75, spe: 45 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Red',\n      eggGroups: ['Bug', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 558,\n      prevo: 'dwebble',\n      species: 'crustle',\n      types: [TypesEnum.Bug, TypesEnum.Rock],\n      weightkg: 200,\n      aliases: ['iwaparesu'],\n      classification: 'Stone Home Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/crustle.mp3',\n      respelling: 'KRUS-tul',\n      ipa: '/ˈkrʌstəl/'\n    }\n  ],\n  [\n    'scraggy',\n    {\n      abilities: { first: 'shedskin', second: 'moxie', hidden: 'intimidate' },\n      baseStats: { hp: 50, atk: 75, def: 70, spa: 35, spd: 70, spe: 48 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field', 'Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['scrafty'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 559,\n      species: 'scraggy',\n      types: [TypesEnum.Dark, TypesEnum.Fighting],\n      weightkg: 11.8,\n      aliases: ['zuruggu'],\n      classification: 'Shedding Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scraggy.mp3',\n      respelling: 'SKRAG-ee',\n      ipa: '/ˈskræɡiː/'\n    }\n  ],\n  [\n    'scrafty',\n    {\n      abilities: { first: 'shedskin', second: 'moxie', hidden: 'intimidate' },\n      baseStats: { hp: 65, atk: 90, def: 115, spa: 45, spd: 115, spe: 58 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Red',\n      eggGroups: ['Field', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 39,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 560,\n      prevo: 'scraggy',\n      species: 'scrafty',\n      otherFormes: ['scraftymega'],\n      types: [TypesEnum.Dark, TypesEnum.Fighting],\n      weightkg: 30,\n      aliases: ['zuruzukin'],\n      classification: 'Hoodlum Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scrafty.mp3',\n      respelling: 'SKRAF-tee',\n      ipa: '/ˈskræftiː/'\n    }\n  ],\n  [\n    'scraftymega',\n    {\n      abilities: { first: 'shedskin', second: 'moxie', hidden: 'intimidate' },\n      baseStats: { hp: 65, atk: 130, def: 135, spa: 55, spd: 135, spe: 68 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Red',\n      baseSpecies: 'scrafty',\n      eggGroups: ['Field', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 560,\n      otherFormes: ['scrafty'],\n      species: 'scrafty-mega',\n      types: [TypesEnum.Dark, TypesEnum.Fighting],\n      weightkg: 31,\n      aliases: ['zuruzukinmega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scrafty.mp3',\n      respelling: 'SKRAF-tee',\n      ipa: '/ˈskræftiː/'\n    }\n  ],\n  [\n    'sigilyph',\n    {\n      abilities: {\n        first: 'wonderskin',\n        second: 'magicguard',\n        hidden: 'tintedlens'\n      },\n      baseStats: { hp: 72, atk: 58, def: 80, spa: 103, spd: 80, spe: 97 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 561,\n      species: 'sigilyph',\n      types: [TypesEnum.Psychic, TypesEnum.Flying],\n      weightkg: 14,\n      aliases: ['shinboraa'],\n      classification: 'Avianoid Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sigilyph.mp3',\n      respelling: 'SIH-jih-liff',\n      ipa: '/ˈsɪdʒɪlɪf/'\n    }\n  ],\n  [\n    'yamask',\n    {\n      abilities: { first: 'mummy' },\n      baseStats: { hp: 38, atk: 30, def: 85, spa: 55, spd: 65, spe: 30 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Black',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['cofagrigus'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 562,\n      otherFormes: ['yamaskgalar'],\n      species: 'yamask',\n      types: [TypesEnum.Ghost],\n      weightkg: 1.5,\n      aliases: ['desumasu'],\n      classification: 'Spirit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/yamask.mp3',\n      respelling: 'YAH-mask',\n      ipa: '/ˈjɑːmæsk/'\n    }\n  ],\n  [\n    'yamaskgalar',\n    {\n      abilities: {\n        first: 'wanderingspirit',\n        second: 'wanderingspirit',\n        hidden: 'wanderingspirit'\n      },\n      baseSpecies: 'yamask',\n      baseStats: { hp: 38, atk: 55, def: 85, spa: 30, spd: 65, spe: 30 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Black',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['runerigus'],\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 562,\n      otherFormes: ['yamask'],\n      species: 'yamask-galar',\n      types: [TypesEnum.Ground, TypesEnum.Ghost],\n      weightkg: 1.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/yamask.mp3',\n      respelling: 'YAH-mask',\n      ipa: '/ˈjɑːmæsk/'\n    }\n  ],\n  [\n    'cofagrigus',\n    {\n      abilities: { first: 'mummy' },\n      baseStats: { hp: 58, atk: 50, def: 145, spa: 95, spd: 105, spe: 30 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Yellow',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 563,\n      prevo: 'yamask',\n      species: 'cofagrigus',\n      types: [TypesEnum.Ghost],\n      weightkg: 76.5,\n      aliases: ['cofag', 'desukaan'],\n      classification: 'Coffin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cofagrigus.mp3',\n      respelling: 'kof-uh-GREE-guss',\n      ipa: '/kɒfəˈgriːɡʌs/'\n    }\n  ],\n  [\n    'tirtouga',\n    {\n      abilities: { first: 'solidrock', second: 'sturdy', hidden: 'swiftswim' },\n      baseStats: { hp: 54, atk: 78, def: 103, spa: 53, spd: 45, spe: 22 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['carracosta'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 564,\n      species: 'tirtouga',\n      types: [TypesEnum.Water, TypesEnum.Rock],\n      weightkg: 16.5,\n      aliases: ['purotooga'],\n      classification: 'Prototurtle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tirtouga.mp3',\n      respelling: 'teer-TOO-guh',\n      ipa: '/tɪərˈtuːɡə/'\n    }\n  ],\n  [\n    'carracosta',\n    {\n      abilities: { first: 'solidrock', second: 'sturdy', hidden: 'swiftswim' },\n      baseStats: { hp: 74, atk: 108, def: 133, spa: 83, spd: 65, spe: 32 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 37,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 565,\n      prevo: 'tirtouga',\n      species: 'carracosta',\n      types: [TypesEnum.Water, TypesEnum.Rock],\n      weightkg: 81,\n      aliases: ['abagoora'],\n      classification: 'Prototurtle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/carracosta.mp3',\n      respelling: 'kar-ruh-KOSS-tuh',\n      ipa: '/kɑːrəˈkɒstə/'\n    }\n  ],\n  [\n    'archen',\n    {\n      abilities: { first: 'defeatist' },\n      baseStats: { hp: 55, atk: 112, def: 45, spa: 74, spd: 45, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Flying', 'Water 3'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['archeops'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 566,\n      species: 'archen',\n      types: [TypesEnum.Rock, TypesEnum.Flying],\n      weightkg: 9.5,\n      aliases: ['aaken'],\n      classification: 'First Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/archen.mp3',\n      respelling: 'AR-ken',\n      ipa: '/ˈɑːrkɛn/'\n    }\n  ],\n  [\n    'archeops',\n    {\n      abilities: { first: 'defeatist' },\n      baseStats: { hp: 75, atk: 140, def: 65, spa: 112, spd: 65, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Flying', 'Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 37,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 567,\n      prevo: 'archen',\n      species: 'archeops',\n      types: [TypesEnum.Rock, TypesEnum.Flying],\n      weightkg: 32,\n      aliases: ['aakeosu'],\n      classification: 'First Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/archeops.mp3',\n      respelling: 'AR-kee-ops',\n      ipa: '/ˈɑːrkiːɒps/'\n    }\n  ],\n  [\n    'trubbish',\n    {\n      abilities: { first: 'stench', second: 'stickyhold', hidden: 'aftermath' },\n      baseStats: { hp: 50, atk: 50, def: 62, spa: 40, spd: 62, spe: 65 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['garbodor'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 568,\n      species: 'trubbish',\n      types: [TypesEnum.Poison],\n      weightkg: 31,\n      aliases: ['yabukuron'],\n      classification: 'Trash Bag Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/trubbish.mp3',\n      respelling: 'TRUB-bish',\n      ipa: '/ˈtrʌbɪʃ/'\n    }\n  ],\n  [\n    'garbodor',\n    {\n      abilities: { first: 'stench', second: 'weakarmor', hidden: 'aftermath' },\n      baseStats: { hp: 80, atk: 95, def: 82, spa: 60, spd: 82, spe: 75 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Green',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 569,\n      otherFormes: ['garbodorgmax'],\n      prevo: 'trubbish',\n      species: 'garbodor',\n      types: [TypesEnum.Poison],\n      weightkg: 107.3,\n      aliases: ['dasutodasu'],\n      classification: 'Trash Heap Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/garbodor.mp3',\n      respelling: 'gar-BOH-dur',\n      ipa: '/ɡɑːrˈboʊdər/'\n    }\n  ],\n  [\n    'garbodorgmax',\n    {\n      abilities: { first: 'stench', second: 'weakarmor', hidden: 'aftermath' },\n      baseSpecies: 'garbodor',\n      baseStats: { hp: 80, atk: 95, def: 82, spa: 60, spd: 82, spe: 75 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Green',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 21,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 569,\n      otherFormes: ['garbodor'],\n      species: 'garbodor-gmax',\n      types: [TypesEnum.Poison],\n      weightkg: 429.2,\n      aliases: ['gigantamax garbodor'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/garbodor.mp3',\n      respelling: 'gar-BOH-dur',\n      ipa: '/ɡɑːrˈboʊdər/'\n    }\n  ],\n  [\n    'zorua',\n    {\n      abilities: { first: 'illusion' },\n      baseStats: { hp: 40, atk: 65, def: 40, spa: 80, spd: 40, spe: 65 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['zoroark'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 570,\n      otherFormes: ['zoruahisui'],\n      species: 'zorua',\n      types: [TypesEnum.Dark],\n      weightkg: 12.5,\n      aliases: ['zoroa'],\n      classification: 'Tricky Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zorua.mp3',\n      respelling: 'ZORE-oo-ah',\n      ipa: '/ˈzɔəruːɑː/'\n    }\n  ],\n  [\n    'zoruahisui',\n    {\n      abilities: { first: 'illusion' },\n      baseSpecies: 'zorua',\n      baseStats: { hp: 40, atk: 65, def: 40, spa: 80, spd: 40, spe: 65 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['zoroarkhisui'],\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 570,\n      otherFormes: ['zorua'],\n      species: 'zorua-hisui',\n      types: [TypesEnum.Normal, TypesEnum.Ghost],\n      weightkg: 12.5,\n      aliases: ['hisuianzoroa', 'zoroah'],\n      classification: 'Spiteful Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zorua.mp3',\n      respelling: 'ZORE-oo-ah',\n      ipa: '/ˈzɔəruːɑː/'\n    }\n  ],\n  [\n    'zoroark',\n    {\n      abilities: { first: 'illusion' },\n      baseStats: { hp: 60, atk: 105, def: 60, spa: 120, spd: 60, spe: 105 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 571,\n      otherFormes: ['zoroarkhisui'],\n      prevo: 'zorua',\n      species: 'zoroark',\n      types: [TypesEnum.Dark],\n      weightkg: 81.1,\n      aliases: ['zoroaaku'],\n      classification: 'Illusion Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zoroark.mp3',\n      respelling: 'ZORE-oh-ark',\n      ipa: '/ˈzɔəroʊɑːrk/'\n    }\n  ],\n  [\n    'zoroarkhisui',\n    {\n      abilities: { first: 'illusion' },\n      baseSpecies: 'zoroark',\n      baseStats: { hp: 55, atk: 100, def: 60, spa: 125, spd: 60, spe: 110 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 30,\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 571,\n      otherFormes: ['zoroark'],\n      prevo: 'zoruahisui',\n      species: 'zoroark-hisui',\n      types: [TypesEnum.Normal, TypesEnum.Ghost],\n      weightkg: 73,\n      aliases: ['hisuianzoroark', 'zoroarkh'],\n      classification: 'Baneful Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zoroark.mp3',\n      respelling: 'ZORE-oh-ark',\n      ipa: '/ˈzɔəroʊɑːrk/'\n    }\n  ],\n  [\n    'minccino',\n    {\n      abilities: { first: 'cutecharm', second: 'technician', hidden: 'skilllink' },\n      baseStats: { hp: 55, atk: 50, def: 40, spa: 40, spd: 40, spe: 75 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['cinccino'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 572,\n      species: 'minccino',\n      types: [TypesEnum.Normal],\n      weightkg: 5.8,\n      aliases: ['chiraamy'],\n      classification: 'Chinchilla Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/minccino.mp3',\n      respelling: 'min-CHEE-noh',\n      ipa: '/mɪnˈtʃiːnoʊ/'\n    }\n  ],\n  [\n    'cinccino',\n    {\n      abilities: { first: 'cutecharm', second: 'technician', hidden: 'skilllink' },\n      baseStats: { hp: 75, atk: 95, def: 60, spa: 65, spd: 60, spe: 115 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'use Shiny Stone',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 573,\n      prevo: 'minccino',\n      species: 'cinccino',\n      types: [TypesEnum.Normal],\n      weightkg: 7.5,\n      aliases: ['chirachiino'],\n      classification: 'Scarf Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cinccino.mp3',\n      respelling: 'chin-CHEE-noh',\n      ipa: '/tʃɪnˈtʃiːnoʊ/'\n    }\n  ],\n  [\n    'gothita',\n    {\n      abilities: { first: 'frisk', second: 'competitive', hidden: 'shadowtag' },\n      baseStats: { hp: 45, atk: 30, def: 50, spa: 55, spd: 65, spe: 45 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['gothorita'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 574,\n      species: 'gothita',\n      types: [TypesEnum.Psychic],\n      weightkg: 5.8,\n      aliases: ['gochimu'],\n      classification: 'Fixation Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gothita.mp3',\n      respelling: 'GAH-THEE-tah',\n      ipa: '/ˌɡɑːˈθiːtɑː/'\n    }\n  ],\n  [\n    'gothorita',\n    {\n      abilities: { first: 'frisk', second: 'competitive', hidden: 'shadowtag' },\n      baseStats: { hp: 60, atk: 45, def: 70, spa: 75, spd: 85, spe: 55 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 32,\n      evos: ['gothitelle'],\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 575,\n      prevo: 'gothita',\n      species: 'gothorita',\n      types: [TypesEnum.Psychic],\n      weightkg: 18,\n      aliases: ['gochimiru'],\n      classification: 'Manipulate Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gothorita.mp3',\n      respelling: 'GAH-thoh-REE-tah',\n      ipa: '/ˌɡɑːθoʊˈriːtɑː/'\n    }\n  ],\n  [\n    'gothitelle',\n    {\n      abilities: { first: 'frisk', second: 'competitive', hidden: 'shadowtag' },\n      baseStats: { hp: 70, atk: 55, def: 95, spa: 95, spd: 110, spe: 65 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 41,\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 576,\n      prevo: 'gothorita',\n      species: 'gothitelle',\n      types: [TypesEnum.Psychic],\n      weightkg: 44,\n      aliases: ['gochiruzeru'],\n      classification: 'Astral Body Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gothitelle.mp3',\n      respelling: 'GAH-thih-tell',\n      ipa: '/ˈɡɑːθɪtɛl/'\n    }\n  ],\n  [\n    'solosis',\n    {\n      abilities: {\n        first: 'overcoat',\n        second: 'magicguard',\n        hidden: 'regenerator'\n      },\n      baseStats: { hp: 45, atk: 30, def: 40, spa: 105, spd: 50, spe: 20 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Green',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['duosion'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 577,\n      species: 'solosis',\n      types: [TypesEnum.Psychic],\n      weightkg: 1,\n      aliases: ['yuniran'],\n      classification: 'Cell Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/solosis.mp3',\n      respelling: 'soh-LOH-sis',\n      ipa: '/soʊˈloʊsɪs/'\n    }\n  ],\n  [\n    'duosion',\n    {\n      abilities: {\n        first: 'overcoat',\n        second: 'magicguard',\n        hidden: 'regenerator'\n      },\n      baseStats: { hp: 65, atk: 40, def: 50, spa: 125, spd: 60, spe: 30 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Green',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 32,\n      evos: ['reuniclus'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 578,\n      prevo: 'solosis',\n      species: 'duosion',\n      types: [TypesEnum.Psychic],\n      weightkg: 8,\n      aliases: ['daburan'],\n      classification: 'Mitosis Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/duosion.mp3',\n      respelling: 'doo-OH-zhun',\n      ipa: '/duːˈoʊʒən/'\n    }\n  ],\n  [\n    'reuniclus',\n    {\n      abilities: {\n        first: 'overcoat',\n        second: 'magicguard',\n        hidden: 'regenerator'\n      },\n      baseStats: { hp: 110, atk: 65, def: 75, spa: 125, spd: 85, spe: 30 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Green',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 41,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 579,\n      prevo: 'duosion',\n      species: 'reuniclus',\n      types: [TypesEnum.Psychic],\n      weightkg: 20.1,\n      aliases: ['rank', 'rankurusu', 'reuni'],\n      classification: 'Multiplying Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/reuniclus.mp3',\n      respelling: 'ree-yoo-NIH-klus',\n      ipa: '/riːjuːˈnɪklʌs/'\n    }\n  ],\n  [\n    'ducklett',\n    {\n      abilities: { first: 'keeneye', second: 'bigpecks', hidden: 'hydration' },\n      baseStats: { hp: 62, atk: 44, def: 50, spa: 44, spd: 50, spe: 55 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Flying'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['swanna'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 580,\n      species: 'ducklett',\n      types: [TypesEnum.Water, TypesEnum.Flying],\n      weightkg: 5.5,\n      aliases: ['koaruhii'],\n      classification: 'Water Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ducklett.mp3',\n      respelling: 'DUK-lit',\n      ipa: '/ˈdʌklɪt/'\n    }\n  ],\n  [\n    'swanna',\n    {\n      abilities: { first: 'keeneye', second: 'bigpecks', hidden: 'hydration' },\n      baseStats: { hp: 75, atk: 87, def: 63, spa: 87, spd: 63, spe: 98 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Water 1', 'Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 35,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 581,\n      prevo: 'ducklett',\n      species: 'swanna',\n      types: [TypesEnum.Water, TypesEnum.Flying],\n      weightkg: 24.2,\n      aliases: ['suwanna'],\n      classification: 'White Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swanna.mp3',\n      respelling: 'SWAH-nuh',\n      ipa: '/ˈswɑːnə/'\n    }\n  ],\n  [\n    'vanillite',\n    {\n      abilities: { first: 'icebody', second: 'snowcloak', hidden: 'weakarmor' },\n      baseStats: { hp: 36, atk: 50, def: 50, spa: 65, spd: 60, spe: 44 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'White',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['vanillish'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 582,\n      species: 'vanillite',\n      types: [TypesEnum.Ice],\n      weightkg: 5.7,\n      aliases: ['baniputchi'],\n      classification: 'Fresh Snow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vanillite.mp3',\n      respelling: 'vuh-NIHL-lyte',\n      ipa: '/vəˈnɪlaɪt/'\n    }\n  ],\n  [\n    'vanillish',\n    {\n      abilities: { first: 'icebody', second: 'snowcloak', hidden: 'weakarmor' },\n      baseStats: { hp: 51, atk: 65, def: 65, spa: 80, spd: 75, spe: 59 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 35,\n      evos: ['vanilluxe'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 583,\n      prevo: 'vanillite',\n      species: 'vanillish',\n      types: [TypesEnum.Ice],\n      weightkg: 41,\n      aliases: ['baniritchi'],\n      classification: 'Icy Snow Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vanillish.mp3',\n      respelling: 'vuh-NIHL-lish',\n      ipa: '/vəˈnɪlɪʃ/'\n    }\n  ],\n  [\n    'vanilluxe',\n    {\n      abilities: { first: 'icebody', second: 'snowwarning', hidden: 'weakarmor' },\n      baseStats: { hp: 71, atk: 95, def: 85, spa: 110, spd: 95, spe: 79 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 47,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 584,\n      prevo: 'vanillish',\n      species: 'vanilluxe',\n      types: [TypesEnum.Ice],\n      weightkg: 57.5,\n      aliases: ['baibanira'],\n      classification: 'Snowstorm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vanilluxe.mp3',\n      respelling: 'vuh-NIHL-lux',\n      ipa: '/vəˈnɪlʌks/'\n    }\n  ],\n  [\n    'deerling',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'sapsipper',\n        hidden: 'serenegrace'\n      },\n      baseForme: 'Spring',\n      baseStats: { hp: 60, atk: 60, def: 50, spa: 40, spd: 50, spe: 75 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Pink',\n      cosmeticFormes: ['Deerling-Summer', 'Deerling-Autumn', 'Deerling-Winter'],\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['sawsbuck'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 585,\n      species: 'deerling',\n      types: [TypesEnum.Normal, TypesEnum.Grass],\n      weightkg: 19.5,\n      aliases: ['deerlingautumn', 'deerlingspring', 'deerlingsummer', 'deerlingwinter', 'shikijika'],\n      classification: 'Season Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/deerling.mp3',\n      respelling: 'DEER-ling',\n      ipa: '/ˈdɪərlɪŋ/'\n    }\n  ],\n  [\n    'sawsbuck',\n    {\n      abilities: {\n        first: 'chlorophyll',\n        second: 'sapsipper',\n        hidden: 'serenegrace'\n      },\n      baseForme: 'Spring',\n      baseStats: { hp: 80, atk: 100, def: 70, spa: 60, spd: 70, spe: 95 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Brown',\n      cosmeticFormes: ['Sawsbuck-Summer', 'Sawsbuck-Autumn', 'Sawsbuck-Winter'],\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 586,\n      prevo: 'deerling',\n      species: 'sawsbuck',\n      types: [TypesEnum.Normal, TypesEnum.Grass],\n      weightkg: 92.5,\n      aliases: ['mebukijika', 'sawsbuckautumn', 'sawsbuckspring', 'sawsbucksummer', 'sawsbuckwinter'],\n      classification: 'Season Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sawsbuck.mp3',\n      respelling: 'SAWZ-buk',\n      ipa: '/ˈsɔːzbʌk/'\n    }\n  ],\n  [\n    'emolga',\n    {\n      abilities: { first: 'static', hidden: 'motordrive' },\n      baseStats: { hp: 55, atk: 75, def: 60, spa: 75, spd: 60, spe: 103 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 587,\n      species: 'emolga',\n      types: [TypesEnum.Electric, TypesEnum.Flying],\n      weightkg: 5,\n      aliases: ['emonga'],\n      classification: 'Sky Squirrel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/emolga.mp3',\n      respelling: 'ee-MAHL-guh',\n      ipa: '/iːˈmɑːlɡə/'\n    }\n  ],\n  [\n    'karrablast',\n    {\n      abilities: { first: 'swarm', second: 'shedskin', hidden: 'noguard' },\n      baseStats: { hp: 50, atk: 75, def: 45, spa: 40, spd: 45, spe: 60 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Blue',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['escavalier'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 588,\n      species: 'karrablast',\n      types: [TypesEnum.Bug],\n      weightkg: 5.9,\n      aliases: ['kaburumo'],\n      classification: 'Clamping Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/karrablast.mp3',\n      respelling: 'KAIR-ruh-blast',\n      ipa: '/ˈkɛərəblæst/'\n    }\n  ],\n  [\n    'escavalier',\n    {\n      abilities: { first: 'swarm', second: 'shellarmor', hidden: 'overcoat' },\n      baseStats: { hp: 70, atk: 135, def: 105, spa: 60, spd: 105, spe: 20 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Gray',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade for Shelmet',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 589,\n      prevo: 'karrablast',\n      species: 'escavalier',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 33,\n      aliases: ['esca', 'shubarugo'],\n      classification: 'Cavalry Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/escavalier.mp3',\n      respelling: 'ess-KAH-vuh-LEER',\n      ipa: '/ɛsˌkɑːvəˈlɪər/'\n    }\n  ],\n  [\n    'foongus',\n    {\n      abilities: { first: 'effectspore', hidden: 'regenerator' },\n      baseStats: { hp: 69, atk: 55, def: 45, spa: 55, spd: 55, spe: 15 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Grass'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['amoonguss'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 590,\n      species: 'foongus',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 1,\n      aliases: ['tamagetake'],\n      classification: 'Mushroom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/foongus.mp3',\n      respelling: 'FOON-gus',\n      ipa: '/ˈfuːŋɡʌs/'\n    }\n  ],\n  [\n    'amoonguss',\n    {\n      abilities: { first: 'effectspore', hidden: 'regenerator' },\n      baseStats: { hp: 114, atk: 85, def: 70, spa: 85, spd: 80, spe: 30 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'White',\n      eggGroups: ['Grass'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 39,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 591,\n      prevo: 'foongus',\n      species: 'amoonguss',\n      types: [TypesEnum.Grass, TypesEnum.Poison],\n      weightkg: 10.5,\n      aliases: ['morobareru'],\n      classification: 'Mushroom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/amoonguss.mp3',\n      respelling: 'uh-MOON-gus',\n      ipa: '/əˈmuːŋɡʌs/'\n    }\n  ],\n  [\n    'frillish',\n    {\n      abilities: { first: 'waterabsorb', second: 'cursedbody', hidden: 'damp' },\n      baseStats: { hp: 55, atk: 40, def: 50, spa: 65, spd: 85, spe: 40 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['jellicent'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 592,\n      otherFormes: ['frillishfemale'],\n      species: 'frillish',\n      types: [TypesEnum.Water, TypesEnum.Ghost],\n      weightkg: 33,\n      aliases: ['pururiru'],\n      classification: 'Floating Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/frillish.mp3',\n      respelling: 'FRIL-lish',\n      ipa: '/ˈfrɪlɪʃ/'\n    }\n  ],\n  [\n    'frillishfemale',\n    {\n      abilities: { first: 'waterabsorb', second: 'cursedbody', hidden: 'damp' },\n      baseSpecies: 'frillish',\n      baseStats: { hp: 55, atk: 40, def: 50, spa: 65, spd: 85, spe: 40 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['jellicent'],\n      forme: 'female',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 592,\n      otherFormes: ['frillish'],\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/frillish-f.gif',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/frillish-f.gif',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/frillish-f.gif',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/ani/frillish-f.gif',\n      species: 'frillish-female',\n      types: [TypesEnum.Water, TypesEnum.Ghost],\n      weightkg: 33,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/frillish.mp3',\n      respelling: 'FRIL-lish',\n      ipa: '/ˈfrɪlɪʃ/'\n    }\n  ],\n  [\n    'jellicent',\n    {\n      abilities: { first: 'waterabsorb', second: 'cursedbody', hidden: 'damp' },\n      baseStats: { hp: 100, atk: 60, def: 70, spa: 85, spd: 105, spe: 60 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 593,\n      otherFormes: ['jellicentfemale'],\n      prevo: 'frillish',\n      species: 'jellicent',\n      types: [TypesEnum.Water, TypesEnum.Ghost],\n      weightkg: 135,\n      aliases: ['burungeru'],\n      classification: 'Floating Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/jellicent.mp3',\n      respelling: 'JEL-ih-sent',\n      ipa: '/ˈdʒɛlɪsɛnt/'\n    }\n  ],\n  [\n    'jellicentfemale',\n    {\n      abilities: { first: 'waterabsorb', second: 'cursedbody', hidden: 'damp' },\n      baseSpecies: 'jellicent',\n      baseStats: { hp: 100, atk: 60, def: 70, spa: 85, spd: 105, spe: 60 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 40,\n      forme: 'female',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 593,\n      otherFormes: ['jellicent'],\n      prevo: 'frillish',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/jellicent-f.gif',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/jellicent-f.gif',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/jellicent-f.gif',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/ani/jellicent-f.gif',\n      species: 'jellicent-female',\n      types: [TypesEnum.Water, TypesEnum.Ghost],\n      weightkg: 135,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/jellicent.mp3',\n      respelling: 'JEL-ih-sent',\n      ipa: '/ˈdʒɛlɪsɛnt/'\n    }\n  ],\n  [\n    'alomomola',\n    {\n      abilities: { first: 'healer', second: 'hydration', hidden: 'regenerator' },\n      baseStats: { hp: 165, atk: 75, def: 80, spa: 40, spd: 45, spe: 65 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Pink',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 10280,\n      num: 594,\n      species: 'alomomola',\n      types: [TypesEnum.Water],\n      weightkg: 31.6,\n      aliases: ['mamanbou'],\n      classification: 'Caring Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/alomomola.mp3',\n      respelling: 'uh-LOH-muh-MOH-luh',\n      ipa: '/əˌloʊməˈmoʊlə/'\n    }\n  ],\n  [\n    'joltik',\n    {\n      abilities: { first: 'compoundeyes', second: 'unnerve', hidden: 'swarm' },\n      baseStats: { hp: 50, atk: 47, def: 50, spa: 57, spd: 50, spe: 65 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['galvantula'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 595,\n      species: 'joltik',\n      types: [TypesEnum.Bug, TypesEnum.Electric],\n      weightkg: 0.6,\n      aliases: ['bachuru'],\n      classification: 'Attaching Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/joltik.mp3',\n      respelling: 'JOHL-tik',\n      ipa: '/ˈdʒoʊltɪk/'\n    }\n  ],\n  [\n    'galvantula',\n    {\n      abilities: { first: 'compoundeyes', second: 'unnerve', hidden: 'swarm' },\n      baseStats: { hp: 70, atk: 77, def: 60, spa: 97, spd: 60, spe: 108 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 36,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 596,\n      prevo: 'joltik',\n      species: 'galvantula',\n      types: [TypesEnum.Bug, TypesEnum.Electric],\n      weightkg: 14.3,\n      aliases: ['denchura'],\n      classification: 'EleSpider Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/galvantula.mp3',\n      respelling: 'gal-VAN-choo-luh',\n      ipa: '/ɡælˈvæntʃuːlə/'\n    }\n  ],\n  [\n    'ferroseed',\n    {\n      abilities: { first: 'ironbarbs' },\n      baseStats: { hp: 44, atk: 50, def: 91, spa: 24, spd: 86, spe: 10 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Grass', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['ferrothorn'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 597,\n      species: 'ferroseed',\n      types: [TypesEnum.Grass, TypesEnum.Steel],\n      weightkg: 18.8,\n      aliases: ['tesshiido'],\n      classification: 'Thorn Seed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ferroseed.mp3',\n      respelling: 'fer-AH-seed',\n      ipa: '/fɜːrˈɑːsiːd/'\n    }\n  ],\n  [\n    'ferrothorn',\n    {\n      abilities: { first: 'ironbarbs', hidden: 'anticipation' },\n      baseStats: { hp: 74, atk: 94, def: 131, spa: 54, spd: 116, spe: 20 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Gray',\n      eggGroups: ['Grass', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 598,\n      prevo: 'ferroseed',\n      species: 'ferrothorn',\n      types: [TypesEnum.Grass, TypesEnum.Steel],\n      weightkg: 110,\n      aliases: ['ferro', 'nattorei'],\n      classification: 'Thorn Pod Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ferrothorn.mp3',\n      respelling: 'fer-AH-thorn',\n      ipa: '/fɜːrˈɑːθɔːrn/'\n    }\n  ],\n  [\n    'klink',\n    {\n      abilities: { first: 'plus', second: 'minus', hidden: 'clearbody' },\n      baseStats: { hp: 40, atk: 55, def: 70, spa: 45, spd: 60, spe: 30 },\n      catchRate: {\n        base: 130,\n        percentageWithOrdinaryPokeballAtFullHealth: '26.5%'\n      },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['klang'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 599,\n      species: 'klink',\n      types: [TypesEnum.Steel],\n      weightkg: 21,\n      aliases: ['giaru'],\n      classification: 'Gear Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/klink.mp3',\n      respelling: 'KLEENK',\n      ipa: '/ˈkliːŋk/'\n    }\n  ],\n  [\n    'klang',\n    {\n      abilities: { first: 'plus', second: 'minus', hidden: 'clearbody' },\n      baseStats: { hp: 60, atk: 80, def: 95, spa: 70, spd: 85, spe: 50 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      evos: ['klinklang'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 600,\n      prevo: 'klink',\n      species: 'klang',\n      types: [TypesEnum.Steel],\n      weightkg: 51,\n      aliases: ['gigiaru'],\n      classification: 'Gear Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/klang.mp3',\n      respelling: 'KLANG',\n      ipa: '/ˈklæŋ/'\n    }\n  ],\n  [\n    'klinklang',\n    {\n      abilities: { first: 'plus', second: 'minus', hidden: 'clearbody' },\n      baseStats: { hp: 60, atk: 100, def: 115, spa: 70, spd: 85, spe: 90 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 49,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 601,\n      prevo: 'klang',\n      species: 'klinklang',\n      types: [TypesEnum.Steel],\n      weightkg: 81,\n      aliases: ['gigigiaru'],\n      classification: 'Gear Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/klinklang.mp3',\n      respelling: 'KLEENK-klang',\n      ipa: '/ˈkliːŋklæŋ/'\n    }\n  ],\n  [\n    'tynamo',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 35, atk: 55, def: 40, spa: 45, spd: 40, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['eelektrik'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 602,\n      species: 'tynamo',\n      types: [TypesEnum.Electric],\n      weightkg: 0.3,\n      aliases: ['shibishirasu'],\n      classification: 'EleFish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tynamo.mp3',\n      respelling: 'TY-nuh-moh',\n      ipa: '/ˈtaɪnəmoʊ/'\n    }\n  ],\n  [\n    'eelektrik',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 65, atk: 85, def: 70, spa: 75, spd: 70, spe: 40 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 39,\n      evos: ['eelektross'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 603,\n      prevo: 'tynamo',\n      species: 'eelektrik',\n      types: [TypesEnum.Electric],\n      weightkg: 22,\n      aliases: ['shibibiiru'],\n      classification: 'EleFish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eelektrik.mp3',\n      respelling: 'ee-LEK-trik',\n      ipa: '/iːˈlɛktrɪk/'\n    }\n  ],\n  [\n    'eelektross',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 85, atk: 115, def: 80, spa: 105, spd: 80, spe: 50 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Blue',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 39,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 604,\n      prevo: 'eelektrik',\n      species: 'eelektross',\n      otherFormes: ['eelektrossmega'],\n      types: [TypesEnum.Electric],\n      weightkg: 80.5,\n      aliases: ['shibirudon'],\n      classification: 'EleFish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eelektross.mp3',\n      respelling: 'ee-LEK-trahs',\n      ipa: '/iːˈlɛktrɑːs/'\n    }\n  ],\n  [\n    'eelektrossmega',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 85, atk: 145, def: 80, spa: 135, spd: 90, spe: 80 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Blue',\n      baseSpecies: 'eelektross',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 604,\n      otherFormes: ['eelektross'],\n      species: 'eelektross-mega',\n      types: [TypesEnum.Electric],\n      weightkg: 180,\n      aliases: ['shibirudonmega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eelektross.mp3',\n      respelling: 'ee-LEK-trahs',\n      ipa: '/iːˈlɛktrɑːs/'\n    }\n  ],\n  [\n    'elgyem',\n    {\n      abilities: { first: 'telepathy', second: 'synchronize', hidden: 'analytic' },\n      baseStats: { hp: 55, atk: 55, def: 55, spa: 85, spd: 55, spe: 30 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['beheeyem'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 605,\n      species: 'elgyem',\n      types: [TypesEnum.Psychic],\n      weightkg: 9,\n      aliases: ['riguree'],\n      classification: 'Cerebral Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/elgyem.mp3',\n      respelling: 'ELL-jee-ehm',\n      ipa: '/ˈɛldʒiːɛm/'\n    }\n  ],\n  [\n    'beheeyem',\n    {\n      abilities: { first: 'telepathy', second: 'synchronize', hidden: 'analytic' },\n      baseStats: { hp: 75, atk: 75, def: 75, spa: 125, spd: 95, spe: 40 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 42,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 606,\n      prevo: 'elgyem',\n      species: 'beheeyem',\n      types: [TypesEnum.Psychic],\n      weightkg: 34.5,\n      aliases: ['oobemu'],\n      classification: 'Cerebral Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/beheeyem.mp3',\n      respelling: 'BEE-hee-ehm',\n      ipa: '/ˈbiːhiːɛm/'\n    }\n  ],\n  [\n    'litwick',\n    {\n      abilities: {\n        first: 'flashfire',\n        second: 'flamebody',\n        hidden: 'infiltrator'\n      },\n      baseStats: { hp: 50, atk: 30, def: 55, spa: 65, spd: 55, spe: 20 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['lampent'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 607,\n      species: 'litwick',\n      types: [TypesEnum.Ghost, TypesEnum.Fire],\n      weightkg: 3.1,\n      aliases: ['hitomoshi'],\n      classification: 'Candle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/litwick.mp3',\n      respelling: 'LIT-wik',\n      ipa: '/ˈlɪtwɪk/'\n    }\n  ],\n  [\n    'lampent',\n    {\n      abilities: {\n        first: 'flashfire',\n        second: 'flamebody',\n        hidden: 'infiltrator'\n      },\n      baseStats: { hp: 60, atk: 40, def: 60, spa: 95, spd: 60, spe: 55 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Black',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 41,\n      evos: ['chandelure'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 608,\n      prevo: 'litwick',\n      species: 'lampent',\n      types: [TypesEnum.Ghost, TypesEnum.Fire],\n      weightkg: 13,\n      aliases: ['ranpuraa'],\n      classification: 'Lamp Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lampent.mp3',\n      respelling: 'LAM-pent',\n      ipa: '/ˈlæmpɛnt/'\n    }\n  ],\n  [\n    'chandelure',\n    {\n      abilities: {\n        first: 'flashfire',\n        second: 'flamebody',\n        hidden: 'infiltrator'\n      },\n      baseStats: { hp: 60, atk: 55, def: 90, spa: 145, spd: 90, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 41,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 609,\n      prevo: 'lampent',\n      species: 'chandelure',\n      otherFormes: ['chandeluremega'],\n      types: [TypesEnum.Ghost, TypesEnum.Fire],\n      weightkg: 34.3,\n      aliases: ['chandy', 'shandera'],\n      classification: 'Luring Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chandelure.mp3',\n      respelling: 'shan-duh-LOOR',\n      ipa: '/ʃændəˈlʊər/'\n    }\n  ],\n  [\n    'chandeluremega',\n    {\n      abilities: { first: 'infiltrator' },\n      baseStats: { hp: 60, atk: 75, def: 110, spa: 175, spd: 110, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      baseSpecies: 'chandelure',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 609,\n      otherFormes: ['chandelure'],\n      species: 'chandelure-mega',\n      types: [TypesEnum.Ghost, TypesEnum.Fire],\n      weightkg: 69.6,\n      aliases: ['chandymega', 'shanderamega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chandelure.mp3',\n      respelling: 'shan-duh-LOOR',\n      ipa: '/ʃændəˈlʊər/'\n    }\n  ],\n  [\n    'axew',\n    {\n      abilities: { first: 'rivalry', second: 'moldbreaker', hidden: 'unnerve' },\n      baseStats: { hp: 46, atk: 87, def: 60, spa: 30, spd: 40, spe: 57 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['fraxure'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 610,\n      species: 'axew',\n      types: [TypesEnum.Dragon],\n      weightkg: 18,\n      aliases: ['kibago'],\n      classification: 'Tusk Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/axew.mp3',\n      respelling: 'AKS-yoo',\n      ipa: '/ˈæksjuː/'\n    }\n  ],\n  [\n    'fraxure',\n    {\n      abilities: { first: 'rivalry', second: 'moldbreaker', hidden: 'unnerve' },\n      baseStats: { hp: 66, atk: 117, def: 70, spa: 40, spd: 50, spe: 67 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      evos: ['haxorus'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 611,\n      prevo: 'axew',\n      species: 'fraxure',\n      types: [TypesEnum.Dragon],\n      weightkg: 36,\n      aliases: ['onondo'],\n      classification: 'Axe Jaw Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fraxure.mp3',\n      respelling: 'FRAK-shur',\n      ipa: '/ˈfrækʃər/'\n    }\n  ],\n  [\n    'haxorus',\n    {\n      abilities: { first: 'rivalry', second: 'moldbreaker', hidden: 'unnerve' },\n      baseStats: { hp: 76, atk: 147, def: 90, spa: 60, spd: 70, spe: 97 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 48,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 612,\n      prevo: 'fraxure',\n      species: 'haxorus',\n      types: [TypesEnum.Dragon],\n      weightkg: 105.5,\n      aliases: ['ononokusu'],\n      classification: 'Axe Jaw Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/haxorus.mp3',\n      respelling: 'HAK-soar-us',\n      ipa: '/ˈhæksɔərʌs/'\n    }\n  ],\n  [\n    'cubchoo',\n    {\n      abilities: { first: 'snowcloak', second: 'slushrush', hidden: 'rattled' },\n      baseStats: { hp: 55, atk: 70, def: 40, spa: 60, spd: 40, spe: 40 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['beartic'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 613,\n      species: 'cubchoo',\n      types: [TypesEnum.Ice],\n      weightkg: 8.5,\n      aliases: ['kumashun'],\n      classification: 'Chill Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cubchoo.mp3',\n      respelling: 'cub-CHOO',\n      ipa: '/kʌbˈtʃuː/'\n    }\n  ],\n  [\n    'beartic',\n    {\n      abilities: { first: 'snowcloak', second: 'slushrush', hidden: 'swiftswim' },\n      baseStats: { hp: 95, atk: 130, def: 80, spa: 70, spd: 80, spe: 50 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 37,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 614,\n      prevo: 'cubchoo',\n      species: 'beartic',\n      types: [TypesEnum.Ice],\n      weightkg: 260,\n      aliases: ['tsunbeaa'],\n      classification: 'Freezing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/beartic.mp3',\n      respelling: 'BAIR-tick',\n      ipa: '/ˈbɛərtɪk/'\n    }\n  ],\n  [\n    'cryogonal',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 80, atk: 50, def: 50, spa: 95, spd: 135, spe: 105 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 615,\n      species: 'cryogonal',\n      types: [TypesEnum.Ice],\n      weightkg: 148,\n      aliases: ['furiijio'],\n      classification: 'Crystallizing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cryogonal.mp3',\n      respelling: 'kry-AH-guh-nul',\n      ipa: '/kraɪˈɑːɡənəl/'\n    }\n  ],\n  [\n    'shelmet',\n    {\n      abilities: { first: 'hydration', second: 'shellarmor', hidden: 'overcoat' },\n      baseStats: { hp: 50, atk: 40, def: 85, spa: 40, spd: 65, spe: 25 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['accelgor'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 616,\n      species: 'shelmet',\n      types: [TypesEnum.Bug],\n      weightkg: 7.7,\n      aliases: ['chobomaki'],\n      classification: 'Snail Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shelmet.mp3',\n      respelling: 'SHELL-mett',\n      ipa: '/ˈʃɛlmɛt/'\n    }\n  ],\n  [\n    'accelgor',\n    {\n      abilities: { first: 'hydration', second: 'stickyhold', hidden: 'unburden' },\n      baseStats: { hp: 80, atk: 70, def: 40, spa: 100, spd: 60, spe: 145 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'Trade for Karrablast',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 617,\n      prevo: 'shelmet',\n      species: 'accelgor',\n      types: [TypesEnum.Bug],\n      weightkg: 25.3,\n      aliases: ['agirudaa'],\n      classification: 'Shell Out Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/accelgor.mp3',\n      respelling: 'ak-SELL-gohr',\n      ipa: '/ækˈsɛlɡɔər/'\n    }\n  ],\n  [\n    'stunfisk',\n    {\n      abilities: { first: 'static', second: 'limber', hidden: 'sandveil' },\n      baseStats: { hp: 109, atk: 66, def: 84, spa: 81, spd: 99, spe: 32 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Amorphous'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 618,\n      species: 'stunfisk',\n      otherFormes: ['stunfiskgalar'],\n      types: [TypesEnum.Ground, TypesEnum.Electric],\n      weightkg: 11,\n      aliases: ['maggyo'],\n      classification: 'Trap Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/stunfisk.mp3',\n      respelling: 'STUN-fisk',\n      ipa: '/ˈstʌnfɪsk/'\n    }\n  ],\n  [\n    'stunfiskgalar',\n    {\n      abilities: { first: 'mimicry' },\n      baseStats: { hp: 109, atk: 81, def: 99, spa: 66, spd: 84, spe: 32 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Water 1', 'Amorphous'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Galar',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 618,\n      otherFormes: ['stunfisk'],\n      species: 'stunfisk-galar',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/ani/stunfisk-galar.gif',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/stunfisk-galar.gif',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/stunfisk-galar.gif',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/stunfisk-galar.gif',\n      types: [TypesEnum.Ground, TypesEnum.Steel],\n      weightkg: 20.5,\n      respelling: 'STUN-fisk',\n      ipa: '/ˈstʌnfɪsk/'\n    }\n  ],\n  [\n    'mienfoo',\n    {\n      abilities: {\n        first: 'innerfocus',\n        second: 'regenerator',\n        hidden: 'reckless'\n      },\n      baseStats: { hp: 45, atk: 85, def: 50, spa: 55, spd: 50, spe: 65 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['mienshao'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 619,\n      species: 'mienfoo',\n      types: [TypesEnum.Fighting],\n      weightkg: 20,\n      aliases: ['kojofuu'],\n      classification: 'Martial Arts Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mienfoo.mp3',\n      respelling: 'MEEN-FOO',\n      ipa: '/ˌmiːnˈfuː/'\n    }\n  ],\n  [\n    'mienshao',\n    {\n      abilities: {\n        first: 'innerfocus',\n        second: 'regenerator',\n        hidden: 'reckless'\n      },\n      baseStats: { hp: 65, atk: 125, def: 60, spa: 95, spd: 60, spe: 105 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 50,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 620,\n      prevo: 'mienfoo',\n      species: 'mienshao',\n      types: [TypesEnum.Fighting],\n      weightkg: 35.5,\n      aliases: ['kojondo', 'shao'],\n      classification: 'Martial Arts Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mienshao.mp3',\n      respelling: 'MEEN-SHOW',\n      ipa: '/ˌmiːnˈʃoʊ/'\n    }\n  ],\n  [\n    'druddigon',\n    {\n      abilities: {\n        first: 'roughskin',\n        second: 'sheerforce',\n        hidden: 'moldbreaker'\n      },\n      baseStats: { hp: 77, atk: 120, def: 90, spa: 60, spd: 90, spe: 48 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 621,\n      species: 'druddigon',\n      types: [TypesEnum.Dragon],\n      weightkg: 139,\n      aliases: ['kurimugan'],\n      classification: 'Cave Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/druddigon.mp3',\n      respelling: 'DRUD-dih-gahn',\n      ipa: '/ˈdrʌdɪɡən/'\n    }\n  ],\n  [\n    'golett',\n    {\n      abilities: { first: 'ironfist', second: 'klutz', hidden: 'noguard' },\n      baseStats: { hp: 59, atk: 74, def: 50, spa: 35, spd: 50, spe: 35 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['golurk'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 622,\n      species: 'golett',\n      types: [TypesEnum.Ground, TypesEnum.Ghost],\n      weightkg: 92,\n      aliases: ['gobitto'],\n      classification: 'Automaton Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/golett.mp3',\n      respelling: 'GO-let',\n      ipa: '/ˈɡoʊlɛt/'\n    }\n  ],\n  [\n    'golurk',\n    {\n      abilities: { first: 'ironfist', second: 'klutz', hidden: 'noguard' },\n      baseStats: { hp: 89, atk: 124, def: 80, spa: 55, spd: 80, spe: 55 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Green',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 43,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 623,\n      prevo: 'golett',\n      species: 'golurk',\n      types: [TypesEnum.Ground, TypesEnum.Ghost],\n      weightkg: 330,\n      otherFormes: ['golurkmega'],\n      aliases: ['goruugu', 'lurk'],\n      classification: 'Automaton Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/golurk.mp3',\n      respelling: 'GO-lurk',\n      ipa: '/ˈɡoʊlərk/'\n    }\n  ],\n  [\n    'golurkmega',\n    {\n      abilities: { first: 'unseenfist' },\n      baseStats: { hp: 89, atk: 159, def: 105, spa: 70, spd: 105, spe: 55 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Green',\n      eggGroups: ['Mineral'],\n      baseSpecies: 'golurk',\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 623,\n      otherFormes: ['golurk'],\n      species: 'golurk-mega',\n      types: [TypesEnum.Ground, TypesEnum.Ghost],\n      weightkg: 330,\n      aliases: ['goruugumega', 'lurkmega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/golurk.mp3',\n      respelling: 'GO-lurk',\n      ipa: '/ˈɡoʊlərk/'\n    }\n  ],\n  [\n    'pawniard',\n    {\n      abilities: { first: 'defiant', second: 'innerfocus', hidden: 'pressure' },\n      baseStats: { hp: 45, atk: 85, def: 70, spa: 40, spd: 40, spe: 60 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['bisharp'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 624,\n      species: 'pawniard',\n      types: [TypesEnum.Dark, TypesEnum.Steel],\n      weightkg: 10.2,\n      aliases: ['komatana'],\n      classification: 'Sharp Blade Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pawniard.mp3',\n      respelling: 'PAWN-yard',\n      ipa: '/ˈpɔːnjɑːrd/'\n    }\n  ],\n  [\n    'bisharp',\n    {\n      abilities: { first: 'defiant', second: 'innerfocus', hidden: 'pressure' },\n      baseStats: { hp: 65, atk: 125, def: 100, spa: 60, spd: 70, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['kingambit'],\n      evoLevel: 52,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 625,\n      prevo: 'pawniard',\n      species: 'bisharp',\n      types: [TypesEnum.Dark, TypesEnum.Steel],\n      weightkg: 70,\n      aliases: ['bish', 'kirikizan'],\n      classification: 'Sword Blade Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bisharp.mp3',\n      respelling: 'BIH-sharp',\n      ipa: '/ˈbɪʃɑːrp/'\n    }\n  ],\n  [\n    'bouffalant',\n    {\n      abilities: { first: 'reckless', second: 'sapsipper', hidden: 'soundproof' },\n      baseStats: { hp: 95, atk: 110, def: 95, spa: 40, spd: 95, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 626,\n      species: 'bouffalant',\n      types: [TypesEnum.Normal],\n      weightkg: 94.6,\n      aliases: ['baffuron'],\n      classification: 'Bash Buffalo Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bouffalant.mp3',\n      respelling: 'BOO-fuh-lahnt',\n      ipa: '/ˈbuːfəlɑːnt/'\n    }\n  ],\n  [\n    'rufflet',\n    {\n      abilities: { first: 'keeneye', second: 'sheerforce', hidden: 'hustle' },\n      baseStats: { hp: 70, atk: 83, def: 50, spa: 37, spd: 50, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['braviary', 'braviaryhisui'],\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 627,\n      species: 'rufflet',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 10.5,\n      aliases: ['washibon'],\n      classification: 'Eaglet Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rufflet.mp3',\n      respelling: 'RUF-lit',\n      ipa: '/ˈrʌflɪt/'\n    }\n  ],\n  [\n    'braviary',\n    {\n      abilities: { first: 'keeneye', second: 'sheerforce', hidden: 'defiant' },\n      baseStats: { hp: 100, atk: 123, def: 75, spa: 57, spd: 75, spe: 80 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Red',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 54,\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 628,\n      otherFormes: ['braviaryhisui'],\n      prevo: 'rufflet',\n      species: 'braviary',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 41,\n      aliases: ['muricabird', 'uooguru'],\n      classification: 'Valiant Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/braviary.mp3',\n      respelling: 'BRAY-vee-air-ee',\n      ipa: '/ˈbreɪviːɛəriː/'\n    }\n  ],\n  [\n    'braviaryhisui',\n    {\n      abilities: { first: 'keeneye', second: 'sheerforce', hidden: 'tintedlens' },\n      baseSpecies: 'braviary',\n      baseStats: { hp: 110, atk: 83, def: 70, spa: 112, spd: 70, spe: 65 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 54,\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 628,\n      otherFormes: ['braviary'],\n      prevo: 'rufflet',\n      species: 'braviary-hisui',\n      types: [TypesEnum.Psychic, TypesEnum.Flying],\n      weightkg: 54,\n      aliases: ['hisuianbraviary', 'braviaryh'],\n      classification: 'Battle Cry Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/braviary.mp3',\n      respelling: 'BRAY-vee-air-ee',\n      ipa: '/ˈbreɪviːɛəriː/'\n    }\n  ],\n  [\n    'vullaby',\n    {\n      abilities: { first: 'bigpecks', second: 'overcoat', hidden: 'weakarmor' },\n      baseStats: { hp: 70, atk: 55, def: 75, spa: 45, spd: 65, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['mandibuzz'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 629,\n      species: 'vullaby',\n      types: [TypesEnum.Dark, TypesEnum.Flying],\n      weightkg: 9,\n      aliases: ['baruchai'],\n      classification: 'Diapered Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vullaby.mp3',\n      respelling: 'VUL-luh-bye',\n      ipa: '/ˈvʌləbaɪ/'\n    }\n  ],\n  [\n    'mandibuzz',\n    {\n      abilities: { first: 'bigpecks', second: 'overcoat', hidden: 'weakarmor' },\n      baseStats: { hp: 110, atk: 65, def: 105, spa: 55, spd: 95, spe: 80 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 54,\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 630,\n      prevo: 'vullaby',\n      species: 'mandibuzz',\n      types: [TypesEnum.Dark, TypesEnum.Flying],\n      weightkg: 39.5,\n      aliases: ['barujiina', 'mandi'],\n      classification: 'Bone Vulture Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mandibuzz.mp3',\n      respelling: 'MAN-dih-buz',\n      ipa: '/ˈmændɪbʌz/'\n    }\n  ],\n  [\n    'heatmor',\n    {\n      abilities: { first: 'gluttony', second: 'flashfire', hidden: 'whitesmoke' },\n      baseStats: { hp: 85, atk: 97, def: 66, spa: 105, spd: 66, spe: 65 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 631,\n      species: 'heatmor',\n      types: [TypesEnum.Fire],\n      weightkg: 58,\n      aliases: ['kuitaran'],\n      classification: 'Anteater Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/heatmor.mp3',\n      respelling: 'HEET-mohr',\n      ipa: '/ˈhiːtmɔər/'\n    }\n  ],\n  [\n    'durant',\n    {\n      abilities: { first: 'swarm', second: 'hustle', hidden: 'truant' },\n      baseStats: { hp: 58, atk: 109, def: 112, spa: 48, spd: 48, spe: 109 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Gray',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 632,\n      species: 'durant',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 33,\n      aliases: ['aianto'],\n      classification: 'Iron Ant Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/durant.mp3',\n      respelling: 'dur-ANT',\n      ipa: '/dərˈænt/'\n    }\n  ],\n  [\n    'deino',\n    {\n      abilities: { first: 'hustle' },\n      baseStats: { hp: 52, atk: 65, def: 50, spa: 45, spd: 50, spe: 38 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['zweilous'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 633,\n      species: 'deino',\n      types: [TypesEnum.Dark, TypesEnum.Dragon],\n      weightkg: 17.3,\n      aliases: ['monozu'],\n      classification: 'Irate Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/deino.mp3',\n      respelling: 'DY-noh',\n      ipa: '/ˈdiːnoʊ/'\n    }\n  ],\n  [\n    'zweilous',\n    {\n      abilities: { first: 'hustle' },\n      baseStats: { hp: 72, atk: 85, def: 70, spa: 65, spd: 70, spe: 58 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 50,\n      evos: ['hydreigon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 634,\n      prevo: 'deino',\n      species: 'zweilous',\n      types: [TypesEnum.Dark, TypesEnum.Dragon],\n      weightkg: 50,\n      aliases: ['jiheddo'],\n      classification: 'Hostile Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zweilous.mp3',\n      respelling: 'ZVY-lus',\n      ipa: '/ˈtsvaɪlʌs/'\n    }\n  ],\n  [\n    'hydreigon',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 92, atk: 105, def: 90, spa: 125, spd: 90, spe: 98 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 64,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 635,\n      prevo: 'zweilous',\n      species: 'hydreigon',\n      types: [TypesEnum.Dark, TypesEnum.Dragon],\n      weightkg: 160,\n      aliases: ['sazandora'],\n      classification: 'Brutal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hydreigon.mp3',\n      respelling: 'hy-DRY-gahn',\n      ipa: '/haɪˈdraɪɡən/'\n    }\n  ],\n  [\n    'larvesta',\n    {\n      abilities: { first: 'flamebody', hidden: 'swarm' },\n      baseStats: { hp: 55, atk: 85, def: 55, spa: 50, spd: 55, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['volcarona'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 636,\n      species: 'larvesta',\n      types: [TypesEnum.Bug, TypesEnum.Fire],\n      weightkg: 28.8,\n      aliases: ['meraruba'],\n      classification: 'Torch Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/larvesta.mp3',\n      respelling: 'lar-VESS-tuh',\n      ipa: '/lɑːrˈvɛstə/'\n    }\n  ],\n  [\n    'volcarona',\n    {\n      abilities: { first: 'flamebody', hidden: 'swarm' },\n      baseStats: { hp: 85, atk: 60, def: 65, spa: 135, spd: 105, spe: 100 },\n      catchRate: { base: 15, percentageWithOrdinaryPokeballAtFullHealth: '5.2%' },\n      color: 'White',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 59,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 637,\n      prevo: 'larvesta',\n      species: 'volcarona',\n      types: [TypesEnum.Bug, TypesEnum.Fire],\n      weightkg: 46,\n      aliases: ['urugamosu'],\n      classification: 'Sun Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/volcarona.mp3',\n      respelling: 'vol-kah-ROH-nuh',\n      ipa: '/vɒlkɑːˈroʊnə/'\n    }\n  ],\n  [\n    'cobalion',\n    {\n      abilities: { first: 'justified' },\n      baseStats: { hp: 91, atk: 90, def: 129, spa: 90, spd: 72, spe: 108 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 638,\n      species: 'cobalion',\n      types: [TypesEnum.Steel, TypesEnum.Fighting],\n      weightkg: 250,\n      aliases: ['coba', 'kobaruon'],\n      legendary: true,\n      classification: 'Iron Will Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cobalion.mp3',\n      respelling: 'koh-BAY-lee-un',\n      ipa: '/koʊˈbeɪliːʌn/'\n    }\n  ],\n  [\n    'terrakion',\n    {\n      abilities: { first: 'justified' },\n      baseStats: { hp: 91, atk: 129, def: 90, spa: 72, spd: 90, spe: 108 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 639,\n      species: 'terrakion',\n      types: [TypesEnum.Rock, TypesEnum.Fighting],\n      weightkg: 260,\n      aliases: ['terakion', 'terra'],\n      legendary: true,\n      classification: 'Cavern Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/terrakion.mp3',\n      respelling: 'tur-RAK-ee-un',\n      ipa: '/tərˈrækiːʌn/'\n    }\n  ],\n  [\n    'virizion',\n    {\n      abilities: { first: 'justified' },\n      baseStats: { hp: 91, atk: 90, def: 72, spa: 90, spd: 129, spe: 108 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 640,\n      species: 'virizion',\n      types: [TypesEnum.Grass, TypesEnum.Fighting],\n      weightkg: 200,\n      aliases: ['birijion', 'viriz'],\n      legendary: true,\n      classification: 'Grassland Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/virizion.mp3',\n      respelling: 'vih-RY-zee-un',\n      ipa: '/vɪˈraɪziːʌn/'\n    }\n  ],\n  [\n    'tornadus',\n    {\n      abilities: { first: 'prankster', hidden: 'defiant' },\n      baseForme: 'Incarnate',\n      baseStats: { hp: 79, atk: 115, def: 70, spa: 125, spd: 80, spe: 111 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 641,\n      otherFormes: ['tornadustherian'],\n      species: 'tornadus',\n      types: [TypesEnum.Flying],\n      weightkg: 63,\n      aliases: ['torn', 'tornadusi', 'tornadusincarnate', 'tornadusincarnation', 'torunerosu'],\n      legendary: true,\n      classification: 'Cyclone Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tornadus.mp3',\n      respelling: 'tohr-NAY-dus',\n      ipa: '/tɔərˈneɪdʌs/'\n    }\n  ],\n  [\n    'tornadustherian',\n    {\n      abilities: { first: 'regenerator' },\n      baseSpecies: 'tornadus',\n      baseStats: { hp: 79, atk: 100, def: 80, spa: 110, spd: 90, spe: 121 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Therian',\n      formeLetter: 'T',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 641,\n      otherFormes: ['tornadus'],\n      species: 'tornadus-therian',\n      types: [TypesEnum.Flying],\n      weightkg: 63,\n      aliases: ['tornadust', 'tornt'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tornadus-therian.mp3',\n      respelling: 'tohr-NAY-dus',\n      ipa: '/tɔərˈneɪdʌs/'\n    }\n  ],\n  [\n    'thundurus',\n    {\n      abilities: { first: 'prankster', hidden: 'defiant' },\n      baseForme: 'Incarnate',\n      baseStats: { hp: 79, atk: 115, def: 70, spa: 125, spd: 80, spe: 111 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 642,\n      otherFormes: ['thundurustherian'],\n      species: 'thundurus',\n      types: [TypesEnum.Electric, TypesEnum.Flying],\n      weightkg: 61,\n      aliases: ['borutorosu', 'thundurusi', 'thundurusincarnate', 'thundurusincarnation', 'thundy'],\n      legendary: true,\n      classification: 'Bolt Strike Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/thundurus.mp3',\n      respelling: 'THUN-duh-rus',\n      ipa: '/ˈθʌndərʌs/'\n    }\n  ],\n  [\n    'thundurustherian',\n    {\n      abilities: { first: 'voltabsorb' },\n      baseSpecies: 'thundurus',\n      baseStats: { hp: 79, atk: 105, def: 70, spa: 145, spd: 80, spe: 101 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Therian',\n      formeLetter: 'T',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 642,\n      otherFormes: ['thundurus'],\n      species: 'thundurus-therian',\n      types: [TypesEnum.Electric, TypesEnum.Flying],\n      weightkg: 61,\n      aliases: ['thundurust', 'thundyt'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/thundurus-therian.mp3',\n      respelling: 'THUN-duh-rus',\n      ipa: '/ˈθʌndərʌs/'\n    }\n  ],\n  [\n    'reshiram',\n    {\n      abilities: { first: 'turboblaze' },\n      baseStats: { hp: 100, atk: 120, def: 100, spa: 150, spd: 120, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 643,\n      species: 'reshiram',\n      types: [TypesEnum.Dragon, TypesEnum.Fire],\n      weightkg: 330,\n      aliases: ['reshiramu'],\n      legendary: true,\n      classification: 'Vast White Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/reshiram.mp3',\n      respelling: 'RESH-i-ram',\n      ipa: '/ˈrɛʃɪræm/'\n    }\n  ],\n  [\n    'zekrom',\n    {\n      abilities: { first: 'teravolt' },\n      baseStats: { hp: 100, atk: 150, def: 120, spa: 120, spd: 100, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 644,\n      species: 'zekrom',\n      types: [TypesEnum.Dragon, TypesEnum.Electric],\n      weightkg: 345,\n      aliases: ['zekuromu'],\n      legendary: true,\n      classification: 'Deep Black Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zekrom.mp3',\n      respelling: 'ZECK-rahm',\n      ipa: '/ˈzɛkrɑːm/'\n    }\n  ],\n  [\n    'landorus',\n    {\n      abilities: { first: 'sandforce', hidden: 'sheerforce' },\n      baseForme: 'Incarnate',\n      baseStats: { hp: 89, atk: 125, def: 90, spa: 115, spd: 80, spe: 101 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 645,\n      otherFormes: ['landorustherian'],\n      species: 'landorus',\n      types: [TypesEnum.Ground, TypesEnum.Flying],\n      weightkg: 68,\n      aliases: ['lando', 'landoi', 'landorusi', 'landorusincarnate', 'landorusincarnation', 'randorosu'],\n      legendary: true,\n      classification: 'Abundance Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/landorus.mp3',\n      respelling: 'LAN-duh-rus',\n      ipa: '/ˈlændərʌs/'\n    }\n  ],\n  [\n    'landorustherian',\n    {\n      abilities: { first: 'intimidate' },\n      baseSpecies: 'landorus',\n      baseStats: { hp: 89, atk: 145, def: 90, spa: 105, spd: 80, spe: 91 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Therian',\n      formeLetter: 'T',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 645,\n      otherFormes: ['landorus'],\n      species: 'landorus-therian',\n      types: [TypesEnum.Ground, TypesEnum.Flying],\n      weightkg: 68,\n      aliases: ['landorust', 'landot'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/landorus-therian.mp3',\n      respelling: 'LAN-duh-rus',\n      ipa: '/ˈlændərʌs/'\n    }\n  ],\n  [\n    'kyurem',\n    {\n      abilities: { first: 'pressure' },\n      baseStats: { hp: 125, atk: 130, def: 90, spa: 130, spd: 90, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 1, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 646,\n      otherFormes: ['kyuremblack', 'kyuremwhite'],\n      species: 'kyurem',\n      types: [TypesEnum.Dragon, TypesEnum.Ice],\n      weightkg: 325,\n      aliases: ['kyuremu'],\n      legendary: true,\n      classification: 'Boundary Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kyurem.mp3',\n      respelling: 'KYOO-rem',\n      ipa: '/ˈkjuːrɛm/'\n    }\n  ],\n  [\n    'kyuremblack',\n    {\n      abilities: { first: 'teravolt' },\n      baseSpecies: 'kyurem',\n      baseStats: { hp: 125, atk: 170, def: 100, spa: 120, spd: 90, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Black',\n      formeLetter: 'B',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 646,\n      otherFormes: ['kyurem', 'kyuremwhite'],\n      species: 'kyurem-black',\n      types: [TypesEnum.Dragon, TypesEnum.Ice],\n      weightkg: 325,\n      aliases: ['cube', 'kyub', 'kyuremb'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kyurem-black.mp3',\n      respelling: 'KYOO-rem',\n      ipa: '/ˈkjuːrɛm/'\n    }\n  ],\n  [\n    'kyuremwhite',\n    {\n      abilities: { first: 'turboblaze' },\n      baseSpecies: 'kyurem',\n      baseStats: { hp: 125, atk: 120, def: 90, spa: 170, spd: 100, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'White',\n      formeLetter: 'W',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 646,\n      otherFormes: ['kyurem', 'kyuremblack'],\n      species: 'kyurem-white',\n      types: [TypesEnum.Dragon, TypesEnum.Ice],\n      weightkg: 325,\n      aliases: ['kyuremw', 'kyuw'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kyurem-white.mp3',\n      respelling: 'KYOO-rem',\n      ipa: '/ˈkjuːrɛm/'\n    }\n  ],\n  [\n    'keldeo',\n    {\n      abilities: { first: 'justified' },\n      baseForme: 'Ordinary',\n      baseStats: { hp: 91, atk: 72, def: 90, spa: 129, spd: 90, spe: 108 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 647,\n      otherFormes: ['keldeoresolute'],\n      species: 'keldeo',\n      types: [TypesEnum.Water, TypesEnum.Fighting],\n      weightkg: 48.5,\n      aliases: ['keld', 'keldeoo', 'keldeoordinary', 'kerudio'],\n      mythical: true,\n      classification: 'Colt Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/keldeo.mp3',\n      respelling: 'KELL-dee-oh',\n      ipa: '/ˈkɛldiːoʊ/'\n    }\n  ],\n  [\n    'keldeoresolute',\n    {\n      abilities: { first: 'justified' },\n      baseSpecies: 'keldeo',\n      baseStats: { hp: 91, atk: 72, def: 90, spa: 129, spd: 90, spe: 108 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Resolute',\n      formeLetter: 'R',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 20560,\n      num: 647,\n      otherFormes: ['keldeo'],\n      species: 'keldeo-resolute',\n      types: [TypesEnum.Water, TypesEnum.Fighting],\n      weightkg: 48.5,\n      aliases: ['keldeor', 'keldeoresolution'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/keldeo.mp3',\n      respelling: 'KELL-dee-oh',\n      ipa: '/ˈkɛldiːoʊ/'\n    }\n  ],\n  [\n    'meloetta',\n    {\n      abilities: { first: 'serenegrace' },\n      baseForme: 'Aria',\n      baseStats: { hp: 100, atk: 77, def: 77, spa: 128, spd: 128, spe: 90 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 1, spe: 1 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 648,\n      otherFormes: ['meloettapirouette'],\n      species: 'meloetta',\n      types: [TypesEnum.Normal, TypesEnum.Psychic],\n      weightkg: 6.5,\n      aliases: ['meloettaa', 'meloettaaria', 'meloettavoice', 'meroetta'],\n      mythical: true,\n      classification: 'Melody Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meloetta.mp3',\n      respelling: 'mell-oh-ET-uh',\n      ipa: '/mɛloʊˈɛtə/'\n    }\n  ],\n  [\n    'meloettapirouette',\n    {\n      abilities: { first: 'serenegrace' },\n      baseSpecies: 'meloetta',\n      baseStats: { hp: 100, atk: 128, def: 90, spa: 77, spd: 77, spe: 128 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 0, spd: 0, spe: 1 },\n      forme: 'Pirouette',\n      formeLetter: 'P',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 648,\n      otherFormes: ['meloetta'],\n      species: 'meloetta-pirouette',\n      types: [TypesEnum.Normal, TypesEnum.Fighting],\n      weightkg: 6.5,\n      aliases: ['meloettap', 'meloettas', 'meloettastep'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meloetta.mp3',\n      respelling: 'mell-oh-ET-uh',\n      ipa: '/mɛloʊˈɛtə/'\n    }\n  ],\n  [\n    'genesect',\n    {\n      abilities: { first: 'download' },\n      baseStats: { hp: 71, atk: 120, def: 95, spa: 120, spd: 95, spe: 99 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 1 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 649,\n      otherFormes: ['genesectdouse', 'genesectshock', 'genesectburn', 'genesectchill'],\n      species: 'genesect',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 82.5,\n      aliases: ['gene', 'genosekuto'],\n      mythical: true,\n      classification: 'Paleozoic Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/genesect.mp3',\n      respelling: 'JEN-uh-sekt',\n      ipa: '/ˈdʒɛnəsɛkt/'\n    }\n  ],\n  [\n    'genesectdouse',\n    {\n      abilities: { first: 'download' },\n      baseSpecies: 'genesect',\n      baseStats: { hp: 71, atk: 120, def: 95, spa: 120, spd: 95, spe: 99 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Douse',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 649,\n      otherFormes: ['genesect', 'genesectshock', 'genesectburn', 'genesectchill'],\n      species: 'genesect-douse',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 82.5,\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/genesect.mp3',\n      respelling: 'JEN-uh-sekt',\n      ipa: '/ˈdʒɛnəsɛkt/'\n    }\n  ],\n  [\n    'genesectshock',\n    {\n      abilities: { first: 'download' },\n      baseSpecies: 'genesect',\n      baseStats: { hp: 71, atk: 120, def: 95, spa: 120, spd: 95, spe: 99 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Shock',\n      formeLetter: 'S',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 649,\n      otherFormes: ['genesect', 'genesectdouse', 'genesectburn', 'genesectchill'],\n      species: 'genesect-shock',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 82.5,\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/genesect.mp3',\n      respelling: 'JEN-uh-sekt',\n      ipa: '/ˈdʒɛnəsɛkt/'\n    }\n  ],\n  [\n    'genesectburn',\n    {\n      abilities: { first: 'download' },\n      baseSpecies: 'genesect',\n      baseStats: { hp: 71, atk: 120, def: 95, spa: 120, spd: 95, spe: 99 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Burn',\n      formeLetter: 'B',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 649,\n      otherFormes: ['genesect', 'genesectdouse', 'genesectshock', 'genesectchill'],\n      species: 'genesect-burn',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 82.5,\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/genesect.mp3',\n      respelling: 'JEN-uh-sekt',\n      ipa: '/ˈdʒɛnəsɛkt/'\n    }\n  ],\n  [\n    'genesectchill',\n    {\n      abilities: { first: 'download' },\n      baseSpecies: 'genesect',\n      baseStats: { hp: 71, atk: 120, def: 95, spa: 120, spd: 95, spe: 99 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Chill',\n      formeLetter: 'C',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 649,\n      otherFormes: ['genesect', 'genesectdouse', 'genesectshock', 'genesectburn'],\n      species: 'genesect-chill',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 82.5,\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/genesect.mp3',\n      respelling: 'JEN-uh-sekt',\n      ipa: '/ˈdʒɛnəsɛkt/'\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/gen6.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'chespin',\n    {\n      abilities: { first: 'overgrow', hidden: 'bulletproof' },\n      baseStats: { hp: 56, atk: 61, def: 65, spa: 48, spd: 45, spe: 38 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['quilladin'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 650,\n      species: 'chespin',\n      types: [TypesEnum.Grass],\n      weightkg: 9,\n      aliases: ['harimaron'],\n      classification: 'Spiny Nut Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chespin.mp3',\n      respelling: 'CHESS-pin',\n      ipa: '/ˈtʃɛspɪn/'\n    }\n  ],\n  [\n    'quilladin',\n    {\n      abilities: { first: 'overgrow', hidden: 'bulletproof' },\n      baseStats: { hp: 61, atk: 78, def: 95, spa: 56, spd: 58, spe: 57 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 16,\n      evos: ['chesnaught'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 651,\n      prevo: 'chespin',\n      species: 'quilladin',\n      types: [TypesEnum.Grass],\n      weightkg: 29,\n      aliases: ['hariboogu'],\n      classification: 'Spiny Armor Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/quilladin.mp3',\n      respelling: 'QUILL-uh-din',\n      ipa: '/ˈkwɪlədɪn/'\n    }\n  ],\n  [\n    'chesnaught',\n    {\n      abilities: { first: 'overgrow', hidden: 'bulletproof' },\n      baseStats: { hp: 88, atk: 107, def: 122, spa: 74, spd: 75, spe: 64 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 652,\n      prevo: 'quilladin',\n      species: 'chesnaught',\n      otherFormes: ['chesnaughtmega'],\n      types: [TypesEnum.Grass, TypesEnum.Fighting],\n      weightkg: 90,\n      aliases: ['burigaron'],\n      classification: 'Spiny Armor Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chesnaught.mp3',\n      respelling: 'CHESS-nawt',\n      ipa: '/ˈtʃɛsnɔːt/'\n    }\n  ],\n  [\n    'chesnaughtmega',\n    {\n      abilities: { first: 'bulletproof' },\n      baseStats: { hp: 88, atk: 137, def: 172, spa: 74, spd: 115, spe: 44 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      baseSpecies: 'chesnaught',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 652,\n      otherFormes: ['chesnaught'],\n      species: 'chesnaught-mega',\n      types: [TypesEnum.Grass, TypesEnum.Fighting],\n      weightkg: 90,\n      aliases: ['burigaronmega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chesnaught.mp3',\n      respelling: 'CHESS-nawt',\n      ipa: '/ˈtʃɛsnɔːt/'\n    }\n  ],\n  [\n    'fennekin',\n    {\n      abilities: { first: 'blaze', hidden: 'magician' },\n      baseStats: { hp: 40, atk: 45, def: 40, spa: 62, spd: 60, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['braixen'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 653,\n      species: 'fennekin',\n      types: [TypesEnum.Fire],\n      weightkg: 9.4,\n      aliases: ['fokko'],\n      classification: 'Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fennekin.mp3',\n      respelling: 'FEN-ik-in',\n      ipa: '/ˈfɛnɪkɪn/'\n    }\n  ],\n  [\n    'braixen',\n    {\n      abilities: { first: 'blaze', hidden: 'magician' },\n      baseStats: { hp: 59, atk: 59, def: 58, spa: 90, spd: 70, spe: 73 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 16,\n      evos: ['delphox'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 654,\n      prevo: 'fennekin',\n      species: 'braixen',\n      types: [TypesEnum.Fire],\n      weightkg: 14.5,\n      aliases: ['teerunaa'],\n      classification: 'Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/braixen.mp3',\n      respelling: 'BRAKE-sen',\n      ipa: '/ˈbreɪksɛn/'\n    }\n  ],\n  [\n    'delphox',\n    {\n      abilities: { first: 'blaze', hidden: 'magician' },\n      baseStats: { hp: 75, atk: 69, def: 72, spa: 114, spd: 100, spe: 104 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 655,\n      prevo: 'braixen',\n      species: 'delphox',\n      otherFormes: ['delphoxmega'],\n      types: [TypesEnum.Fire, TypesEnum.Psychic],\n      weightkg: 39,\n      aliases: ['mafokushii'],\n      classification: 'Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/delphox.mp3',\n      respelling: 'DELL-fox',\n      ipa: '/ˈdɛlfɒks/'\n    }\n  ],\n  [\n    'delphoxmega',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 75, atk: 69, def: 72, spa: 159, spd: 125, spe: 134 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      baseSpecies: 'delphox',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 655,\n      otherFormes: ['delphox'],\n      species: 'delphox-mega',\n      types: [TypesEnum.Fire, TypesEnum.Psychic],\n      weightkg: 39,\n      aliases: ['mafokushiimega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/delphox.mp3',\n      respelling: 'DELL-fox',\n      ipa: '/ˈdɛlfɒks/'\n    }\n  ],\n  [\n    'froakie',\n    {\n      abilities: { first: 'torrent', hidden: 'protean' },\n      baseStats: { hp: 41, atk: 56, def: 40, spa: 62, spd: 44, spe: 71 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['frogadier'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 656,\n      species: 'froakie',\n      types: [TypesEnum.Water],\n      weightkg: 7,\n      aliases: ['keromatsu'],\n      classification: 'Bubble Frog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/froakie.mp3',\n      respelling: 'FRO-kee',\n      ipa: '/ˈfroʊkiː/'\n    }\n  ],\n  [\n    'frogadier',\n    {\n      abilities: { first: 'torrent', hidden: 'protean' },\n      baseStats: { hp: 54, atk: 63, def: 52, spa: 83, spd: 56, spe: 97 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 16,\n      evos: ['greninja'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 657,\n      prevo: 'froakie',\n      species: 'frogadier',\n      types: [TypesEnum.Water],\n      weightkg: 10.9,\n      aliases: ['gekogashira'],\n      classification: 'Bubble Frog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/frogadier.mp3',\n      respelling: 'FROG-uh-deer',\n      ipa: '/ˈfrɒɡədɪər/'\n    }\n  ],\n  [\n    'greninja',\n    {\n      abilities: { first: 'torrent', hidden: 'protean', special: 'battlebond' },\n      baseStats: { hp: 72, atk: 95, def: 67, spa: 103, spd: 71, spe: 122 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 36,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 658,\n      otherFormes: ['greninjaash', 'greninjamega'],\n      prevo: 'frogadier',\n      species: 'greninja',\n      types: [TypesEnum.Water, TypesEnum.Dark],\n      weightkg: 40,\n      aliases: ['gekkouga', 'gren'],\n      classification: 'Ninja Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/greninja.mp3',\n      respelling: 'greh-NIN-jah',\n      ipa: '/ɡrɛˈnɪndʒɑː/'\n    }\n  ],\n  [\n    'greninjaash',\n    {\n      abilities: { first: 'battlebond' },\n      baseSpecies: 'greninja',\n      baseStats: { hp: 72, atk: 145, def: 67, spa: 153, spd: 71, spe: 132 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Ash',\n      formeLetter: 'A',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 658,\n      otherFormes: ['greninja'],\n      species: 'greninja-ash',\n      types: [TypesEnum.Water, TypesEnum.Dark],\n      weightkg: 40,\n      aliases: ['ashgren', 'ashgreninja', 'bondgreninja', 'gekkougasatoshi', 'satoshigekkouga'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/greninja.mp3',\n      respelling: 'greh-NIN-jah',\n      ipa: '/ɡrɛˈnɪndʒɑː/'\n    }\n  ],\n  [\n    'greninjamega',\n    {\n      abilities: { first: 'protean' },\n      baseStats: { hp: 72, atk: 125, def: 77, spa: 133, spd: 81, spe: 142 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      baseSpecies: 'greninja',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 658,\n      otherFormes: ['greninja'],\n      species: 'greninja-mega',\n      types: [TypesEnum.Water, TypesEnum.Dark],\n      weightkg: 40,\n      aliases: ['gekkougamega', 'grenmega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/greninja.mp3',\n      respelling: 'greh-NIN-jah',\n      ipa: '/ɡrɛˈnɪndʒɑː/'\n    }\n  ],\n  [\n    'bunnelby',\n    {\n      abilities: { first: 'pickup', second: 'cheekpouch', hidden: 'hugepower' },\n      baseStats: { hp: 38, atk: 36, def: 38, spa: 32, spd: 36, spe: 57 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['diggersby'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 659,\n      species: 'bunnelby',\n      types: [TypesEnum.Normal],\n      weightkg: 5,\n      aliases: ['horubii'],\n      classification: 'Digging Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bunnelby.mp3',\n      respelling: 'BUN-ell-bee',\n      ipa: '/ˈbʌnɛlbiː/'\n    }\n  ],\n  [\n    'diggersby',\n    {\n      abilities: { first: 'pickup', second: 'cheekpouch', hidden: 'hugepower' },\n      baseStats: { hp: 85, atk: 56, def: 77, spa: 50, spd: 77, spe: 78 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 660,\n      prevo: 'bunnelby',\n      species: 'diggersby',\n      types: [TypesEnum.Normal, TypesEnum.Ground],\n      weightkg: 42.4,\n      aliases: ['horuudo'],\n      classification: 'Digging Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/diggersby.mp3',\n      respelling: 'DIH-gurz-bee',\n      ipa: '/ˈdɪɡərzbiː/'\n    }\n  ],\n  [\n    'fletchling',\n    {\n      abilities: { first: 'bigpecks', hidden: 'galewings' },\n      baseStats: { hp: 45, atk: 50, def: 43, spa: 40, spd: 38, spe: 62 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['fletchinder'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 661,\n      species: 'fletchling',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 1.7,\n      aliases: ['yayakoma'],\n      classification: 'Tiny Robin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fletchling.mp3',\n      respelling: 'FLETCH-ling',\n      ipa: '/ˈflɛtʃlɪŋ/'\n    }\n  ],\n  [\n    'fletchinder',\n    {\n      abilities: { first: 'flamebody', hidden: 'galewings' },\n      baseStats: { hp: 62, atk: 73, def: 55, spa: 56, spd: 52, spe: 84 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 17,\n      evos: ['talonflame'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 662,\n      prevo: 'fletchling',\n      species: 'fletchinder',\n      types: [TypesEnum.Fire, TypesEnum.Flying],\n      weightkg: 16,\n      aliases: ['hinoyakoma', 'linda'],\n      classification: 'Ember Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fletchinder.mp3',\n      respelling: 'FLETCH-in-der',\n      ipa: '/ˈflɛtʃɪndər/'\n    }\n  ],\n  [\n    'talonflame',\n    {\n      abilities: { first: 'flamebody', hidden: 'galewings' },\n      baseStats: { hp: 78, atk: 81, def: 71, spa: 74, spd: 69, spe: 126 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 35,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 663,\n      prevo: 'fletchinder',\n      species: 'talonflame',\n      types: [TypesEnum.Fire, TypesEnum.Flying],\n      weightkg: 24.5,\n      aliases: ['faiaroo', 'smogonbird', 'talon', 'tflame'],\n      classification: 'Scorching Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/talonflame.mp3',\n      respelling: 'TAL-un-flame',\n      ipa: '/ˈtælʌnfleɪm/'\n    }\n  ],\n  [\n    'scatterbug',\n    {\n      abilities: {\n        first: 'shielddust',\n        second: 'compoundeyes',\n        hidden: 'friendguard'\n      },\n      baseStats: { hp: 38, atk: 35, def: 40, spa: 27, spd: 25, spe: 35 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['spewpa'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 664,\n      species: 'scatterbug',\n      types: [TypesEnum.Bug],\n      weightkg: 2.5,\n      aliases: ['kofukimushi'],\n      classification: 'Scatterdust Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scatterbug.mp3',\n      respelling: 'SCAT-ter-BUG',\n      ipa: '/ˈskætərˌbʌɡ/'\n    }\n  ],\n  [\n    'spewpa',\n    {\n      abilities: { first: 'shedskin', hidden: 'friendguard' },\n      baseStats: { hp: 45, atk: 22, def: 60, spa: 27, spd: 30, spe: 29 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 9,\n      evos: ['vivillon', 'vivillonfancy'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 665,\n      prevo: 'scatterbug',\n      species: 'spewpa',\n      types: [TypesEnum.Bug],\n      weightkg: 8.4,\n      aliases: ['kofuurai'],\n      classification: 'Scatterdust Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spewpa.mp3',\n      respelling: 'SPEW-puh',\n      ipa: '/ˈspjuːpə/'\n    }\n  ],\n  [\n    'vivillon',\n    {\n      abilities: {\n        first: 'shielddust',\n        second: 'compoundeyes',\n        hidden: 'friendguard'\n      },\n      baseForme: 'Meadow',\n      baseStats: { hp: 80, atk: 52, def: 50, spa: 90, spd: 50, spe: 89 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      cosmeticFormes: [\n        'Vivillon-Archipelago',\n        'Vivillon-Continental',\n        'Vivillon-Elegant',\n        'Vivillon-Garden',\n        'Vivillon-High Plains',\n        'Vivillon-Icy Snow',\n        'Vivillon-Jungle',\n        'Vivillon-Marine',\n        'Vivillon-Modern',\n        'Vivillon-Monsoon',\n        'Vivillon-Ocean',\n        'Vivillon-Polar',\n        'Vivillon-River',\n        'Vivillon-Sandstorm',\n        'Vivillon-Savanna',\n        'Vivillon-Sun',\n        'Vivillon-Tundra'\n      ],\n      eggGroups: ['Bug'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      evoLevel: 12,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 666,\n      otherFormes: ['vivillonfancy', 'vivillonpokeball'],\n      prevo: 'spewpa',\n      species: 'vivillon',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 17,\n      aliases: [\n        'bibiyon',\n        'vivillonarchipelago',\n        'vivilloncontinental',\n        'vivillonelegant',\n        'vivillongarden',\n        'vivillonhighplains',\n        'vivillonicysnow',\n        'vivillonjungle',\n        'vivillonmarine',\n        'vivillonmeadow',\n        'vivillonmodern',\n        'vivillonmonsoon',\n        'vivillonocean',\n        'vivillonpolar',\n        'vivillonriver',\n        'vivillonsandstorm',\n        'vivillonsavanna',\n        'vivillonsun',\n        'vivillontundra'\n      ],\n      classification: 'Scale Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vivillon.mp3',\n      respelling: 'VIH-vee-yon',\n      ipa: '/ˈvɪviːjɒn/'\n    }\n  ],\n  [\n    'vivillonfancy',\n    {\n      abilities: {\n        first: 'shielddust',\n        second: 'compoundeyes',\n        hidden: 'friendguard'\n      },\n      baseSpecies: 'vivillon',\n      baseStats: { hp: 80, atk: 52, def: 50, spa: 90, spd: 50, spe: 89 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Bug'],\n      evoLevel: 12,\n      evYields: { hp: 1, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Fancy',\n      formeLetter: 'F',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 666,\n      prevo: 'spewpa',\n      otherFormes: ['vivillon', 'vivillonpokeball'],\n      species: 'vivillon-fancy',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 17,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vivillon.mp3',\n      respelling: 'VIH-vee-yon',\n      ipa: '/ˈvɪviːjɒn/'\n    }\n  ],\n  [\n    'vivillonpokeball',\n    {\n      abilities: {\n        first: 'shielddust',\n        second: 'compoundeyes',\n        hidden: 'friendguard'\n      },\n      baseSpecies: 'vivillon',\n      baseStats: { hp: 80, atk: 52, def: 50, spa: 90, spd: 50, spe: 89 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Bug'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Pokeball',\n      formeLetter: 'P',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 666,\n      otherFormes: ['vivillon', 'vivillonfancy'],\n      species: 'vivillon-pokeball',\n      types: [TypesEnum.Bug, TypesEnum.Flying],\n      weightkg: 17,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vivillon.mp3',\n      respelling: 'VIH-vee-yon',\n      ipa: '/ˈvɪviːjɒn/'\n    }\n  ],\n  [\n    'litleo',\n    {\n      abilities: { first: 'rivalry', second: 'unnerve', hidden: 'moxie' },\n      baseStats: { hp: 62, atk: 50, def: 58, spa: 73, spd: 54, spe: 72 },\n      catchRate: {\n        base: 220,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.3%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['pyroar'],\n      genderRatio: { male: '12.5%', female: '87.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 667,\n      species: 'litleo',\n      types: [TypesEnum.Fire, TypesEnum.Normal],\n      weightkg: 13.5,\n      aliases: ['shishiko'],\n      classification: 'Lion Cub Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/litleo.mp3',\n      respelling: 'LIT-lee-oh',\n      ipa: '/ˈlɪtliːoʊ/'\n    }\n  ],\n  [\n    'pyroar',\n    {\n      abilities: { first: 'rivalry', second: 'unnerve', hidden: 'moxie' },\n      baseStats: { hp: 86, atk: 68, def: 72, spa: 109, spd: 66, spe: 106 },\n      catchRate: { base: 65, percentageWithOrdinaryPokeballAtFullHealth: '15.7%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 35,\n      genderRatio: { male: '12.5%', female: '87.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 668,\n      prevo: 'litleo',\n      species: 'pyroar',\n      otherFormes: ['pyroarmega'],\n      types: [TypesEnum.Fire, TypesEnum.Normal],\n      weightkg: 81.5,\n      aliases: ['kaenjishi'],\n      classification: 'Royal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pyroar.mp3',\n      respelling: 'PIE-roar',\n      ipa: '/ˈpaɪrɔər/'\n    }\n  ],\n  [\n    'pyroarmega',\n    {\n      abilities: { first: 'rivalry', second: 'unnerve', hidden: 'moxie' },\n      baseStats: { hp: 86, atk: 88, def: 92, spa: 129, spd: 86, spe: 126 },\n      catchRate: { base: 65, percentageWithOrdinaryPokeballAtFullHealth: '15.7%' },\n      color: 'Brown',\n      baseSpecies: 'pyroar',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '12.5%', female: '87.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 668,\n      otherFormes: ['pyroar'],\n      species: 'pyroar-mega',\n      types: [TypesEnum.Fire, TypesEnum.Normal],\n      weightkg: 93.3,\n      aliases: ['kaenjishimega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pyroar.mp3',\n      respelling: 'PIE-roar',\n      ipa: '/ˈpaɪrɔər/'\n    }\n  ],\n  [\n    'flabebe',\n    {\n      abilities: { first: 'flowerveil', hidden: 'symbiosis' },\n      baseForme: 'Red',\n      baseStats: { hp: 44, atk: 38, def: 39, spa: 61, spd: 79, spe: 42 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'White',\n      cosmeticFormes: ['Flabébé-Blue', 'Flabébé-Orange', 'Flabébé-White', 'Flabébé-Yellow'],\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['floette'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 669,\n      specialBulbapediaUrl: 'Flabébé',\n      species: 'flabebe',\n      types: [TypesEnum.Fairy],\n      weightkg: 0.1,\n      aliases: [\n        'flabb',\n        'flabbblue',\n        'flabborange',\n        'flabbred',\n        'flabbwhite',\n        'flabbyellow',\n        'flabebeblue',\n        'flabebeorange',\n        'flabebered',\n        'flabebewhite',\n        'flabebeyellow',\n        'furabebe'\n      ],\n      classification: 'Single Bloom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/flabebe.mp3'\n    }\n  ],\n  [\n    'floette',\n    {\n      abilities: { first: 'flowerveil', hidden: 'symbiosis' },\n      baseForme: 'Red',\n      baseStats: { hp: 54, atk: 45, def: 47, spa: 75, spd: 98, spe: 52 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      cosmeticFormes: ['Floette-Blue', 'Floette-Orange', 'Floette-White', 'Floette-Yellow'],\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 19,\n      evos: ['florges'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 670,\n      prevo: 'flabebe',\n      species: 'floette',\n      types: [TypesEnum.Fairy],\n      weightkg: 0.9,\n      aliases: ['floetteblue', 'floetteorange', 'floettered', 'floettewhite', 'floetteyellow', 'furaette'],\n      classification: 'Single Bloom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/floette.mp3',\n      respelling: 'floh-ET',\n      ipa: '/floʊˈɛt/'\n    }\n  ],\n  [\n    'floetteeternal',\n    {\n      abilities: { first: 'flowerveil' },\n      baseSpecies: 'floette',\n      baseStats: { hp: 74, atk: 65, def: 67, spa: 125, spd: 128, spe: 92 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Eternal',\n      formeLetter: 'E',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 670,\n      species: 'floette-eternal',\n      otherFormes: ['floettemega'],\n      types: [TypesEnum.Fairy],\n      weightkg: 0.9,\n      aliases: ['eternalfloette', 'floettee', 'floetteeternalflower'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/floette-eternal.mp3',\n      respelling: 'floh-ET',\n      ipa: '/floʊˈɛt/'\n    }\n  ],\n  [\n    'floettemega',\n    {\n      abilities: { first: 'fairyaura' },\n      baseSpecies: 'floette',\n      baseStats: { hp: 74, atk: 85, def: 87, spa: 155, spd: 148, spe: 102 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 670,\n      otherFormes: ['floetteeternal'],\n      species: 'floette-mega',\n      types: [TypesEnum.Fairy],\n      weightkg: 0.9,\n      aliases: ['eternalfloettemega', 'floetteeternalflowermega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/floette.mp3',\n      respelling: 'floh-ET',\n      ipa: '/floʊˈɛt/'\n    }\n  ],\n  [\n    'florges',\n    {\n      abilities: { first: 'flowerveil', hidden: 'symbiosis' },\n      baseForme: 'Red',\n      baseStats: { hp: 78, atk: 65, def: 68, spa: 112, spd: 154, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      cosmeticFormes: ['Florges-Blue', 'Florges-Orange', 'Florges-White', 'Florges-Yellow'],\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 'use Shiny Stone',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 671,\n      prevo: 'floette',\n      species: 'florges',\n      types: [TypesEnum.Fairy],\n      weightkg: 10,\n      aliases: ['florgesblue', 'florgesorange', 'florgesred', 'florgeswhite', 'florgesyellow', 'furaajesu'],\n      classification: 'Garden Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/florges.mp3',\n      respelling: 'FLORE-jess',\n      ipa: '/ˈflɔərdʒɛs/'\n    }\n  ],\n  [\n    'skiddo',\n    {\n      abilities: { first: 'sapsipper', hidden: 'grasspelt' },\n      baseStats: { hp: 66, atk: 65, def: 48, spa: 62, spd: 57, spe: 52 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['gogoat'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 672,\n      species: 'skiddo',\n      types: [TypesEnum.Grass],\n      weightkg: 31,\n      aliases: ['meeekuru'],\n      classification: 'Mount Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skiddo.mp3',\n      respelling: 'skid-OO',\n      ipa: '/skɪdˈuː/'\n    }\n  ],\n  [\n    'gogoat',\n    {\n      abilities: { first: 'sapsipper', hidden: 'grasspelt' },\n      baseStats: { hp: 123, atk: 100, def: 62, spa: 97, spd: 81, spe: 68 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 673,\n      prevo: 'skiddo',\n      species: 'gogoat',\n      types: [TypesEnum.Grass],\n      weightkg: 91,\n      aliases: ['googooto'],\n      classification: 'Mount Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gogoat.mp3',\n      respelling: 'GO-goat',\n      ipa: '/ˈɡoʊɡoʊt/'\n    }\n  ],\n  [\n    'pancham',\n    {\n      abilities: { first: 'ironfist', second: 'moldbreaker', hidden: 'scrappy' },\n      baseStats: { hp: 67, atk: 82, def: 62, spa: 46, spd: 48, spe: 43 },\n      catchRate: {\n        base: 220,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.3%'\n      },\n      color: 'White',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['pangoro'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 674,\n      species: 'pancham',\n      types: [TypesEnum.Fighting],\n      weightkg: 8,\n      aliases: ['yanchamu'],\n      classification: 'Playful Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pancham.mp3',\n      respelling: 'PAN-chum',\n      ipa: '/ˈpæntʃʌm/'\n    }\n  ],\n  [\n    'pangoro',\n    {\n      abilities: { first: 'ironfist', second: 'moldbreaker', hidden: 'scrappy' },\n      baseStats: { hp: 95, atk: 124, def: 78, spa: 69, spd: 71, spe: 58 },\n      catchRate: { base: 65, percentageWithOrdinaryPokeballAtFullHealth: '15.7%' },\n      color: 'White',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level 32 with Dark Type in Party',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 675,\n      prevo: 'pancham',\n      species: 'pangoro',\n      types: [TypesEnum.Fighting, TypesEnum.Dark],\n      weightkg: 136,\n      aliases: ['goronda'],\n      classification: 'Daunting Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pangoro.mp3',\n      respelling: 'PAN-go-roh',\n      ipa: '/ˈpæŋɡoʊroʊ/'\n    }\n  ],\n  [\n    'furfrou',\n    {\n      abilities: { first: 'furcoat' },\n      baseForme: 'Natural',\n      baseStats: { hp: 75, atk: 80, def: 60, spa: 65, spd: 90, spe: 102 },\n      catchRate: {\n        base: 160,\n        percentageWithOrdinaryPokeballAtFullHealth: '30.9%'\n      },\n      color: 'White',\n      cosmeticFormes: [\n        'Furfrou-Dandy',\n        'Furfrou-Debutante',\n        'Furfrou-Diamond',\n        'Furfrou-Heart',\n        'Furfrou-Kabuki',\n        'Furfrou-La Reine',\n        'Furfrou-Matron',\n        'Furfrou-Pharaoh',\n        'Furfrou-Star'\n      ],\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 676,\n      species: 'furfrou',\n      types: [TypesEnum.Normal],\n      weightkg: 28,\n      aliases: [\n        'furfroudandy',\n        'furfroudebutante',\n        'furfroudiamond',\n        'furfrouheart',\n        'furfroukabuki',\n        'furfroulareine',\n        'furfroumatron',\n        'furfrounatural',\n        'furfroupharaoh',\n        'furfroustar',\n        'torimian'\n      ],\n      classification: 'Poodle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/furfrou.mp3',\n      respelling: 'FUR-froo',\n      ipa: '/ˈfɜːrfruː/'\n    }\n  ],\n  [\n    'espurr',\n    {\n      abilities: { first: 'keeneye', second: 'infiltrator', hidden: 'owntempo' },\n      baseStats: { hp: 62, atk: 48, def: 54, spa: 63, spd: 60, spe: 68 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['meowstic'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 677,\n      species: 'espurr',\n      types: [TypesEnum.Psychic],\n      weightkg: 3.5,\n      aliases: ['nyasupaa'],\n      classification: 'Restraint Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/espurr.mp3',\n      respelling: 'ESS-purr',\n      ipa: '/ˈɛspɜːr/'\n    }\n  ],\n  [\n    'meowstic',\n    {\n      abilities: { first: 'keeneye', second: 'infiltrator', hidden: 'prankster' },\n      baseForme: 'M',\n      baseStats: { hp: 74, atk: 48, def: 76, spa: 83, spd: 81, spe: 104 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 25,\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 678,\n      otherFormes: ['meowsticf', 'meowsticmega'],\n      prevo: 'espurr',\n      species: 'meowstic',\n      types: [TypesEnum.Psychic],\n      weightkg: 8.5,\n      aliases: ['meowsticm', 'meowsticmale', 'nyaonikusu'],\n      classification: 'Constraint Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meowstic.mp3',\n      respelling: 'MYOW-stik',\n      ipa: '/ˈmjaʊstɪk/'\n    }\n  ],\n  [\n    'meowsticf',\n    {\n      abilities: {\n        first: 'keeneye',\n        second: 'infiltrator',\n        hidden: 'competitive'\n      },\n      baseSpecies: 'meowstic',\n      baseStats: { hp: 74, atk: 48, def: 76, spa: 83, spd: 81, spe: 104 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 25,\n      forme: 'F',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 678,\n      otherFormes: ['meowstic', 'meowsticmega'],\n      prevo: 'espurr',\n      species: 'meowstic-f',\n      types: [TypesEnum.Psychic],\n      weightkg: 8.5,\n      aliases: ['meowsticfemale'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meowstic.mp3',\n      respelling: 'MYOW-stik',\n      ipa: '/ˈmjaʊstɪk/'\n    }\n  ],\n  [\n    'meowsticmega',\n    {\n      abilities: { first: 'trace' },\n      baseStats: { hp: 74, atk: 48, def: 76, spa: 143, spd: 101, spe: 124 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      baseSpecies: 'meowstic',\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 678,\n      otherFormes: ['meowstic', 'meowsticf'],\n      species: 'meowstic-mega',\n      types: [TypesEnum.Psychic],\n      weightkg: 10.1,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meowstic.mp3',\n      respelling: 'MYOW-stik',\n      ipa: '/ˈmjaʊstɪk/',\n      classification: 'Second Sight Pokémon'\n    }\n  ],\n  [\n    'honedge',\n    {\n      abilities: { first: 'noguard' },\n      baseStats: { hp: 45, atk: 80, def: 100, spa: 35, spd: 37, spe: 28 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['doublade'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 679,\n      species: 'honedge',\n      types: [TypesEnum.Steel, TypesEnum.Ghost],\n      weightkg: 2,\n      aliases: ['hitotsuki'],\n      classification: 'Sword Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/honedge.mp3',\n      respelling: 'HONE-ej',\n      ipa: '/ˈhoʊnɛdʒ/'\n    }\n  ],\n  [\n    'doublade',\n    {\n      abilities: { first: 'noguard' },\n      baseStats: { hp: 59, atk: 110, def: 150, spa: 45, spd: 49, spe: 35 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 35,\n      evos: ['aegislash'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 680,\n      prevo: 'honedge',\n      species: 'doublade',\n      types: [TypesEnum.Steel, TypesEnum.Ghost],\n      weightkg: 4.5,\n      aliases: ['nidangiru'],\n      classification: 'Sword Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/doublade.mp3',\n      respelling: 'DUH-blade',\n      ipa: '/ˈdəbleɪd/'\n    }\n  ],\n  [\n    'aegislash',\n    {\n      abilities: { first: 'stancechange' },\n      baseForme: 'Shield',\n      baseStats: { hp: 60, atk: 50, def: 150, spa: 50, spd: 150, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 'use Dusk Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 681,\n      otherFormes: ['aegislashblade'],\n      prevo: 'doublade',\n      species: 'aegislash',\n      types: [TypesEnum.Steel, TypesEnum.Ghost],\n      weightkg: 53,\n      aliases: ['aegi', 'aegis', 'aegislashs', 'aegislashshield', 'girugarudo'],\n      classification: 'Royal Sword Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aegislash.mp3',\n      respelling: 'EE-jih-SLASH',\n      ipa: '/ˌiːdʒɪˈslæʃ/'\n    }\n  ],\n  [\n    'aegislashblade',\n    {\n      abilities: { first: 'stancechange' },\n      baseSpecies: 'aegislash',\n      baseStats: { hp: 60, atk: 150, def: 50, spa: 150, spd: 50, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 1, spd: 0, spe: 0 },\n      evoLevel: 35,\n      forme: 'Blade',\n      formeLetter: 'B',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 681,\n      otherFormes: ['aegislash'],\n      prevo: 'doublade',\n      species: 'aegislash-blade',\n      types: [TypesEnum.Steel, TypesEnum.Ghost],\n      weightkg: 53,\n      aliases: ['aegiblade'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aegislash.mp3',\n      respelling: 'EE-jih-SLASH',\n      ipa: '/ˌiːdʒɪˈslæʃ/'\n    }\n  ],\n  [\n    'spritzee',\n    {\n      abilities: { first: 'healer', hidden: 'aromaveil' },\n      baseStats: { hp: 78, atk: 52, def: 60, spa: 63, spd: 65, spe: 23 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['aromatisse'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 682,\n      species: 'spritzee',\n      types: [TypesEnum.Fairy],\n      weightkg: 0.5,\n      aliases: ['shushupu'],\n      classification: 'Perfume Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spritzee.mp3',\n      respelling: 'SPRIT-zee',\n      ipa: '/ˈsprɪtziː/'\n    }\n  ],\n  [\n    'aromatisse',\n    {\n      abilities: { first: 'healer', hidden: 'aromaveil' },\n      baseStats: { hp: 101, atk: 72, def: 72, spa: 99, spd: 89, spe: 29 },\n      catchRate: { base: 140, percentageWithOrdinaryPokeballAtFullHealth: '28%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Sachet',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 683,\n      prevo: 'spritzee',\n      species: 'aromatisse',\n      types: [TypesEnum.Fairy],\n      weightkg: 15.5,\n      aliases: ['furefuwan'],\n      classification: 'Fragrance Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aromatisse.mp3',\n      respelling: 'uh-ROME-uh-teece',\n      ipa: '/əˈroʊmətiːs/'\n    }\n  ],\n  [\n    'swirlix',\n    {\n      abilities: { first: 'sweetveil', hidden: 'unburden' },\n      baseStats: { hp: 62, atk: 48, def: 66, spa: 59, spd: 57, spe: 49 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'White',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['slurpuff'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 684,\n      species: 'swirlix',\n      types: [TypesEnum.Fairy],\n      weightkg: 3.5,\n      aliases: ['peroppafu'],\n      classification: 'Cotton Candy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/swirlix.mp3',\n      respelling: 'SWUR-licks',\n      ipa: '/ˈswɜːrlɪks/'\n    }\n  ],\n  [\n    'slurpuff',\n    {\n      abilities: { first: 'sweetveil', hidden: 'unburden' },\n      baseStats: { hp: 82, atk: 80, def: 86, spa: 85, spd: 75, spe: 72 },\n      catchRate: { base: 140, percentageWithOrdinaryPokeballAtFullHealth: '28%' },\n      color: 'White',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade while holding Whipped Dream',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 685,\n      prevo: 'swirlix',\n      species: 'slurpuff',\n      types: [TypesEnum.Fairy],\n      weightkg: 5,\n      aliases: ['peroriimu'],\n      classification: 'Meringue Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slurpuff.mp3',\n      respelling: 'SLUR-puff',\n      ipa: '/ˈslɜːrpʌf/'\n    }\n  ],\n  [\n    'inkay',\n    {\n      abilities: {\n        first: 'contrary',\n        second: 'suctioncups',\n        hidden: 'infiltrator'\n      },\n      baseStats: { hp: 53, atk: 54, def: 53, spa: 37, spd: 46, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['malamar'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 686,\n      species: 'inkay',\n      types: [TypesEnum.Dark, TypesEnum.Psychic],\n      weightkg: 3.5,\n      aliases: ['maaiika'],\n      classification: 'Revolving Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/inkay.mp3',\n      respelling: 'in-kay',\n      ipa: '/ɪŋkeɪ/'\n    }\n  ],\n  [\n    'malamar',\n    {\n      abilities: {\n        first: 'contrary',\n        second: 'suctioncups',\n        hidden: 'infiltrator'\n      },\n      baseStats: { hp: 86, atk: 92, def: 88, spa: 68, spd: 75, spe: 73 },\n      catchRate: { base: 80, percentageWithOrdinaryPokeballAtFullHealth: '18.4%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level 30, Flip device upside down',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 687,\n      prevo: 'inkay',\n      species: 'malamar',\n      otherFormes: ['malamarmega'],\n      types: [TypesEnum.Dark, TypesEnum.Psychic],\n      weightkg: 47,\n      aliases: ['karamanero'],\n      classification: 'Overturning Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/malamar.mp3',\n      respelling: 'MAL-uh-MAR',\n      ipa: '/ˈmæləˌmɑːr/'\n    }\n  ],\n  [\n    'malamarmega',\n    {\n      abilities: {\n        first: 'contrary',\n        second: 'suctioncups',\n        hidden: 'infiltrator'\n      },\n      baseStats: { hp: 86, atk: 102, def: 88, spa: 98, spd: 120, spe: 88 },\n      catchRate: { base: 80, percentageWithOrdinaryPokeballAtFullHealth: '18.4%' },\n      baseSpecies: 'malamar',\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Water 2'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 687,\n      otherFormes: ['malamar'],\n      species: 'malamar-mega',\n      types: [TypesEnum.Dark, TypesEnum.Psychic],\n      weightkg: 69.8,\n      aliases: ['karamaneromega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/malamar.mp3',\n      respelling: 'MAL-uh-MAR',\n      ipa: '/ˈmæləˌmɑːr/'\n    }\n  ],\n  [\n    'binacle',\n    {\n      abilities: { first: 'toughclaws', second: 'sniper', hidden: 'pickpocket' },\n      baseStats: { hp: 42, atk: 52, def: 67, spa: 39, spd: 56, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['barbaracle'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 688,\n      species: 'binacle',\n      types: [TypesEnum.Rock, TypesEnum.Water],\n      weightkg: 31,\n      aliases: ['kametete'],\n      classification: 'Two-Handed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/binacle.mp3',\n      respelling: 'BY-nuh-kull',\n      ipa: '/ˈbaɪnəkəl/'\n    }\n  ],\n  [\n    'barbaracle',\n    {\n      abilities: { first: 'toughclaws', second: 'sniper', hidden: 'pickpocket' },\n      baseStats: { hp: 72, atk: 105, def: 115, spa: 54, spd: 86, spe: 68 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 39,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 689,\n      prevo: 'binacle',\n      species: 'barbaracle',\n      otherFormes: ['barbaraclemega'],\n      types: [TypesEnum.Rock, TypesEnum.Water],\n      weightkg: 96,\n      aliases: ['gamenodesu'],\n      classification: 'Collective Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/barbaracle.mp3',\n      respelling: 'bar-BARE-uh-kull',\n      ipa: '/bɑːrˈbɛərəkəl/'\n    }\n  ],\n  [\n    'barbaraclemega',\n    {\n      abilities: { first: 'toughclaws', second: 'sniper', hidden: 'pickpocket' },\n      baseStats: { hp: 72, atk: 140, def: 130, spa: 64, spd: 106, spe: 88 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      baseSpecies: 'barbaracle',\n      color: 'Brown',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 689,\n      otherFormes: ['barbaracle'],\n      species: 'barbaracle-mega',\n      types: [TypesEnum.Rock, TypesEnum.Fighting],\n      weightkg: 100,\n      aliases: ['gamenodesumega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/barbaracle.mp3',\n      respelling: 'bar-BARE-uh-kull',\n      ipa: '/bɑːrˈbɛərəkəl/'\n    }\n  ],\n  [\n    'skrelp',\n    {\n      abilities: {\n        first: 'poisonpoint',\n        second: 'poisontouch',\n        hidden: 'adaptability'\n      },\n      baseStats: { hp: 50, atk: 60, def: 60, spa: 60, spd: 60, spe: 30 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['dragalge'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 690,\n      species: 'skrelp',\n      types: [TypesEnum.Poison, TypesEnum.Water],\n      weightkg: 7.3,\n      aliases: ['kuzumoo'],\n      classification: 'Mock Kelp Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skrelp.mp3',\n      respelling: 'Skrelp',\n      ipa: '/ˈskrɛlp/'\n    }\n  ],\n  [\n    'dragalge',\n    {\n      abilities: {\n        first: 'poisonpoint',\n        second: 'poisontouch',\n        hidden: 'adaptability'\n      },\n      baseStats: { hp: 65, atk: 75, def: 90, spa: 97, spd: 123, spe: 44 },\n      catchRate: { base: 55, percentageWithOrdinaryPokeballAtFullHealth: '13.9%' },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 48,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 691,\n      prevo: 'skrelp',\n      species: 'dragalge',\n      otherFormes: ['dragalgemega'],\n      types: [TypesEnum.Poison, TypesEnum.Dragon],\n      weightkg: 81.5,\n      aliases: ['doramidoro'],\n      classification: 'Mock Kelp Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dragalge.mp3',\n      respelling: 'druh-GAL-jee',\n      ipa: '/drəˈɡældʒiː/'\n    }\n  ],\n  [\n    'dragalgemega',\n    {\n      abilities: {\n        first: 'poisonpoint',\n        second: 'poisontouch',\n        hidden: 'adaptability'\n      },\n      baseStats: { hp: 65, atk: 85, def: 105, spa: 132, spd: 163, spe: 44 },\n      catchRate: { base: 55, percentageWithOrdinaryPokeballAtFullHealth: '13.9%' },\n      baseSpecies: 'dragalge',\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 691,\n      otherFormes: ['dragalge'],\n      species: 'dragalge-mega',\n      types: [TypesEnum.Poison, TypesEnum.Dragon],\n      weightkg: 100.3,\n      aliases: ['doramidoromega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dragalge.mp3',\n      respelling: 'druh-GAL-jee',\n      ipa: '/drəˈɡældʒiː/'\n    }\n  ],\n  [\n    'clauncher',\n    {\n      abilities: { first: 'megalauncher' },\n      baseStats: { hp: 50, atk: 53, def: 62, spa: 58, spd: 63, spe: 44 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['clawitzer'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 3855,\n      num: 692,\n      species: 'clauncher',\n      types: [TypesEnum.Water],\n      weightkg: 8.3,\n      aliases: ['udeppou'],\n      classification: 'Water Gun Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/clauncher.mp3',\n      respelling: 'CLAWN-chur',\n      ipa: '/ˈklɔːntʃər/'\n    }\n  ],\n  [\n    'clawitzer',\n    {\n      abilities: { first: 'megalauncher' },\n      baseStats: { hp: 71, atk: 73, def: 88, spa: 120, spd: 89, spe: 59 },\n      catchRate: { base: 55, percentageWithOrdinaryPokeballAtFullHealth: '13.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 37,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 3855,\n      num: 693,\n      prevo: 'clauncher',\n      species: 'clawitzer',\n      types: [TypesEnum.Water],\n      weightkg: 35.3,\n      aliases: ['burosutaa'],\n      classification: 'Howitzer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/clawitzer.mp3',\n      respelling: 'CLOW-wit-zur',\n      ipa: '/ˈklaʊwɪtzər/'\n    }\n  ],\n  [\n    'helioptile',\n    {\n      abilities: { first: 'dryskin', second: 'sandveil', hidden: 'solarpower' },\n      baseStats: { hp: 44, atk: 38, def: 33, spa: 61, spd: 43, spe: 70 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['heliolisk'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 694,\n      species: 'helioptile',\n      types: [TypesEnum.Electric, TypesEnum.Normal],\n      weightkg: 6,\n      aliases: ['erikiteru'],\n      classification: 'Generator Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/helioptile.mp3',\n      respelling: 'hee-lee-AHP-tile',\n      ipa: '/hiːliːˈɑːptaɪl/'\n    }\n  ],\n  [\n    'heliolisk',\n    {\n      abilities: { first: 'dryskin', second: 'sandveil', hidden: 'solarpower' },\n      baseStats: { hp: 62, atk: 55, def: 52, spa: 109, spd: 94, spe: 109 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Yellow',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 1 },\n      evoLevel: 'use Sun Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 695,\n      prevo: 'helioptile',\n      species: 'heliolisk',\n      types: [TypesEnum.Electric, TypesEnum.Normal],\n      weightkg: 21,\n      aliases: ['erezaado'],\n      classification: 'Generator Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/heliolisk.mp3',\n      respelling: 'HEE-lee-oh-lisk',\n      ipa: '/ˈhiːliːoʊlɪsk/'\n    }\n  ],\n  [\n    'tyrunt',\n    {\n      abilities: { first: 'strongjaw', hidden: 'sturdy' },\n      baseStats: { hp: 58, atk: 89, def: 77, spa: 45, spd: 45, spe: 48 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['tyrantrum'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 696,\n      species: 'tyrunt',\n      types: [TypesEnum.Rock, TypesEnum.Dragon],\n      weightkg: 26,\n      aliases: ['chigorasu'],\n      classification: 'Royal Heir Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tyrunt.mp3',\n      respelling: 'TIE-runt',\n      ipa: '/ˈtaɪrʌnt/'\n    }\n  ],\n  [\n    'tyrantrum',\n    {\n      abilities: { first: 'strongjaw', hidden: 'rockhead' },\n      baseStats: { hp: 82, atk: 121, def: 119, spa: 69, spd: 59, spe: 71 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'level 39 during daytime',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 697,\n      prevo: 'tyrunt',\n      species: 'tyrantrum',\n      types: [TypesEnum.Rock, TypesEnum.Dragon],\n      weightkg: 270,\n      aliases: ['gachigorasu'],\n      classification: 'Despot Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tyrantrum.mp3',\n      respelling: 'tie-RAN-trum',\n      ipa: '/taɪˈræntrʌm/'\n    }\n  ],\n  [\n    'amaura',\n    {\n      abilities: { first: 'refrigerate', hidden: 'snowwarning' },\n      baseStats: { hp: 77, atk: 59, def: 50, spa: 67, spd: 63, spe: 46 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['aurorus'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 698,\n      species: 'amaura',\n      types: [TypesEnum.Rock, TypesEnum.Ice],\n      weightkg: 25.2,\n      aliases: ['amarusu'],\n      classification: 'Tundra Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/amaura.mp3',\n      respelling: 'ah-MORE-uh',\n      ipa: '/ɑːˈmɔərə/'\n    }\n  ],\n  [\n    'aurorus',\n    {\n      abilities: { first: 'refrigerate', hidden: 'snowwarning' },\n      baseStats: { hp: 123, atk: 77, def: 72, spa: 99, spd: 92, spe: 58 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'level 39 at night',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 699,\n      prevo: 'amaura',\n      species: 'aurorus',\n      types: [TypesEnum.Rock, TypesEnum.Ice],\n      weightkg: 225,\n      aliases: ['amaruruga'],\n      classification: 'Tundra Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/aurorus.mp3',\n      respelling: 'ah-ROAR-us',\n      ipa: '/ɑːˈrɔərʌs/'\n    }\n  ],\n  [\n    'sylveon',\n    {\n      abilities: { first: 'cutecharm', hidden: 'pixilate' },\n      baseStats: { hp: 95, atk: 65, def: 65, spa: 110, spd: 130, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Level up while having high Affection and knowing a Fairy type move',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 8995,\n      num: 700,\n      prevo: 'eevee',\n      species: 'sylveon',\n      types: [TypesEnum.Fairy],\n      weightkg: 23.5,\n      aliases: ['ninfia'],\n      classification: 'Intertwining Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sylveon.mp3',\n      respelling: 'SIL-vee-on',\n      ipa: '/ˈsɪlviːɒn/'\n    }\n  ],\n  [\n    'hawlucha',\n    {\n      abilities: { first: 'limber', second: 'unburden', hidden: 'moldbreaker' },\n      baseStats: { hp: 78, atk: 92, def: 75, spa: 74, spd: 63, spe: 118 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Green',\n      eggGroups: ['Flying', 'Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 701,\n      species: 'hawlucha',\n      otherFormes: ['hawluchamega'],\n      types: [TypesEnum.Fighting, TypesEnum.Flying],\n      weightkg: 21.5,\n      aliases: ['ruchaburu'],\n      classification: 'Wrestling Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hawlucha.mp3',\n      respelling: 'haw-LOO-cha',\n      ipa: '/hɔːˈluːtʃæ/'\n    }\n  ],\n  [\n    'hawluchamega',\n    {\n      abilities: { first: 'noguard' },\n      baseStats: { hp: 78, atk: 137, def: 100, spa: 74, spd: 93, spe: 118 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      baseSpecies: 'hawlucha',\n      color: 'Green',\n      eggGroups: ['Flying', 'Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 701,\n      otherFormes: ['hawlucha'],\n      species: 'hawlucha-mega',\n      types: [TypesEnum.Fighting, TypesEnum.Flying],\n      weightkg: 25,\n      aliases: ['ruchaburu'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hawlucha.mp3',\n      respelling: 'haw-LOO-cha',\n      ipa: '/hɔːˈluːtʃæ/'\n    }\n  ],\n  [\n    'dedenne',\n    {\n      abilities: { first: 'cheekpouch', second: 'pickup', hidden: 'plus' },\n      baseStats: { hp: 67, atk: 58, def: 57, spa: 81, spd: 67, spe: 101 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 702,\n      species: 'dedenne',\n      types: [TypesEnum.Electric, TypesEnum.Fairy],\n      weightkg: 2.2,\n      classification: 'Antenna Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dedenne.mp3',\n      respelling: 'deh-DEN-nay',\n      ipa: '/dɛˈdɛneɪ/'\n    }\n  ],\n  [\n    'carbink',\n    {\n      abilities: { first: 'clearbody', hidden: 'sturdy' },\n      baseStats: { hp: 50, atk: 50, def: 150, spa: 50, spd: 150, spe: 50 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Fairy', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 703,\n      species: 'carbink',\n      types: [TypesEnum.Rock, TypesEnum.Fairy],\n      weightkg: 5.7,\n      aliases: ['mereshii'],\n      classification: 'Jewel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/carbink.mp3',\n      respelling: 'CAR-bink',\n      ipa: '/ˈkɑːrbɪŋk/'\n    }\n  ],\n  [\n    'goomy',\n    {\n      abilities: { first: 'sapsipper', second: 'hydration', hidden: 'gooey' },\n      baseStats: { hp: 45, atk: 50, def: 35, spa: 55, spd: 75, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['sliggoo', 'sliggoohisui'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 704,\n      species: 'goomy',\n      types: [TypesEnum.Dragon],\n      weightkg: 2.8,\n      aliases: ['numera'],\n      classification: 'Soft Tissue Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/goomy.mp3',\n      respelling: 'GOO-mee',\n      ipa: '/ˈɡuːmiː/'\n    }\n  ],\n  [\n    'sliggoo',\n    {\n      abilities: { first: 'sapsipper', second: 'hydration', hidden: 'gooey' },\n      baseStats: { hp: 68, atk: 75, def: 53, spa: 83, spd: 113, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 40,\n      evos: ['goodra'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 705,\n      otherFormes: ['sliggoohisui'],\n      prevo: 'goomy',\n      species: 'sliggoo',\n      types: [TypesEnum.Dragon],\n      weightkg: 17.5,\n      aliases: ['numeiru'],\n      classification: 'Soft Tissue Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sliggoo.mp3',\n      respelling: 'SLIH-goo',\n      ipa: '/ˈslɪɡuː/'\n    }\n  ],\n  [\n    'sliggoohisui',\n    {\n      abilities: { first: 'sapsipper', second: 'shellarmor', hidden: 'gooey' },\n      baseSpecies: 'sliggoo',\n      baseStats: { hp: 58, atk: 75, def: 83, spa: 83, spd: 113, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 40,\n      evos: ['goodrahisui'],\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 705,\n      otherFormes: ['sliggoo'],\n      prevo: 'goomy',\n      species: 'sliggoo-hisui',\n      types: [TypesEnum.Steel, TypesEnum.Dragon],\n      weightkg: 68.5,\n      aliases: ['hisuiansliggoo', 'sliggooh'],\n      classification: 'Snail Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sliggoo.mp3',\n      respelling: 'SLIH-goo',\n      ipa: '/ˈslɪɡuː/'\n    }\n  ],\n  [\n    'goodra',\n    {\n      abilities: { first: 'sapsipper', second: 'hydration', hidden: 'gooey' },\n      baseStats: { hp: 90, atk: 100, def: 70, spa: 110, spd: 150, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 'Level 50 In Rain',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 706,\n      otherFormes: ['goodrahisui'],\n      prevo: 'sliggoo',\n      species: 'goodra',\n      types: [TypesEnum.Dragon],\n      weightkg: 150.5,\n      aliases: ['numerugon'],\n      classification: 'Dragon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/goodra.mp3',\n      respelling: 'GOO-druh',\n      ipa: '/ˈɡuːdrə/'\n    }\n  ],\n  [\n    'goodrahisui',\n    {\n      abilities: { first: 'sapsipper', second: 'shellarmor', hidden: 'gooey' },\n      baseSpecies: 'goodra',\n      baseStats: { hp: 80, atk: 100, def: 100, spa: 110, spd: 150, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 'Level 50 In Rain',\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 706,\n      otherFormes: ['goodra'],\n      prevo: 'sliggoohisui',\n      species: 'goodra-hisui',\n      types: [TypesEnum.Steel, TypesEnum.Dragon],\n      weightkg: 334.1,\n      aliases: ['hisuiangoodra', 'goodrah'],\n      classification: 'Shell Bunker Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/goodra.mp3',\n      respelling: 'GOO-druh',\n      ipa: '/ˈɡuːdrə/'\n    }\n  ],\n  [\n    'klefki',\n    {\n      abilities: { first: 'prankster', hidden: 'magician' },\n      baseStats: { hp: 57, atk: 80, def: 91, spa: 80, spd: 87, spe: 75 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 707,\n      species: 'klefki',\n      types: [TypesEnum.Steel, TypesEnum.Fairy],\n      weightkg: 3,\n      aliases: ['klef', 'kureffi'],\n      classification: 'Key Ring Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/klefki.mp3',\n      respelling: 'KLEF-key',\n      ipa: '/ˈklɛfkiː/'\n    }\n  ],\n  [\n    'phantump',\n    {\n      abilities: { first: 'naturalcure', second: 'frisk', hidden: 'harvest' },\n      baseStats: { hp: 43, atk: 70, def: 48, spa: 50, spd: 60, spe: 38 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Grass', 'Amorphous'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['trevenant'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 708,\n      species: 'phantump',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 7,\n      aliases: ['bokuree'],\n      classification: 'Stump Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/phantump.mp3',\n      respelling: 'FAN-tump',\n      ipa: '/ˈfæntʌmp/'\n    }\n  ],\n  [\n    'trevenant',\n    {\n      abilities: { first: 'naturalcure', second: 'frisk', hidden: 'harvest' },\n      baseStats: { hp: 85, atk: 110, def: 76, spa: 65, spd: 82, spe: 56 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Grass', 'Amorphous'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 709,\n      prevo: 'phantump',\n      species: 'trevenant',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 71,\n      aliases: ['cathy', 'oorotto'],\n      classification: 'Elder Tree Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/trevenant.mp3',\n      respelling: 'TREV-uh-nunt',\n      ipa: '/ˈtrɛvənʌnt/'\n    }\n  ],\n  [\n    'pumpkaboo',\n    {\n      abilities: { first: 'pickup', second: 'frisk', hidden: 'insomnia' },\n      baseForme: 'Average',\n      baseStats: { hp: 49, atk: 66, def: 70, spa: 44, spd: 55, spe: 51 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['gourgeist'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 710,\n      otherFormes: ['pumpkaboosmall', 'pumpkaboolarge', 'pumpkaboosuper'],\n      species: 'pumpkaboo',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 5,\n      aliases: ['baketcha', 'pumpkabooaverage'],\n      classification: 'Pumpkin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pumpkaboo.mp3',\n      respelling: 'PUMP-ka-boo',\n      ipa: '/ˈpʌmpkæbuː/'\n    }\n  ],\n  [\n    'pumpkaboosmall',\n    {\n      abilities: { first: 'pickup', second: 'frisk', hidden: 'insomnia' },\n      baseSpecies: 'pumpkaboo',\n      baseStats: { hp: 44, atk: 66, def: 70, spa: 44, spd: 55, spe: 56 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['gourgeistsmall'],\n      forme: 'Small',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 710,\n      otherFormes: ['pumpkaboo', 'pumpkaboolarge', 'pumpkaboosuper'],\n      species: 'pumpkaboo-small',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 3.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pumpkaboo.mp3',\n      respelling: 'PUMP-ka-boo',\n      ipa: '/ˈpʌmpkæbuː/'\n    }\n  ],\n  [\n    'pumpkaboolarge',\n    {\n      abilities: { first: 'pickup', second: 'frisk', hidden: 'insomnia' },\n      baseSpecies: 'pumpkaboo',\n      baseStats: { hp: 54, atk: 66, def: 70, spa: 44, spd: 55, spe: 46 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['gourgeistlarge'],\n      forme: 'Large',\n      formeLetter: 'L',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 710,\n      otherFormes: ['pumpkaboo', 'pumpkaboosmall', 'pumpkaboosuper'],\n      species: 'pumpkaboo-large',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 7.5,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pumpkaboo.mp3',\n      respelling: 'PUMP-ka-boo',\n      ipa: '/ˈpʌmpkæbuː/'\n    }\n  ],\n  [\n    'pumpkaboosuper',\n    {\n      abilities: { first: 'pickup', second: 'frisk', hidden: 'insomnia' },\n      baseSpecies: 'pumpkaboo',\n      baseStats: { hp: 59, atk: 66, def: 70, spa: 44, spd: 55, spe: 41 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['gourgeistsuper'],\n      forme: 'Super',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 710,\n      otherFormes: ['pumpkaboo', 'pumpkaboosmall', 'pumpkaboolarge'],\n      species: 'pumpkaboo-super',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 15,\n      aliases: ['pumpkaboohuge'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pumpkaboo-super.mp3',\n      respelling: 'PUMP-ka-boo',\n      ipa: '/ˈpʌmpkæbuː/'\n    }\n  ],\n  [\n    'gourgeist',\n    {\n      abilities: { first: 'pickup', second: 'frisk', hidden: 'insomnia' },\n      baseForme: 'Average',\n      baseStats: { hp: 65, atk: 90, def: 122, spa: 58, spd: 75, spe: 84 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 711,\n      otherFormes: ['gourgeistsmall', 'gourgeistlarge', 'gourgeistsuper'],\n      prevo: 'pumpkaboo',\n      species: 'gourgeist',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 12.5,\n      aliases: ['gourgeistaverage', 'panpujin'],\n      classification: 'Pumpkin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gourgeist.mp3',\n      respelling: 'GORE-guyst',\n      ipa: '/ˈɡɔərɡaɪst/'\n    }\n  ],\n  [\n    'gourgeistsmall',\n    {\n      abilities: { first: 'pickup', second: 'frisk', hidden: 'insomnia' },\n      baseSpecies: 'gourgeist',\n      baseStats: { hp: 55, atk: 85, def: 122, spa: 58, spd: 75, spe: 99 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      forme: 'Small',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      otherFormes: ['gourgeist', 'gourgeistlarge', 'gourgeistsuper'],\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 711,\n      prevo: 'pumpkaboosmall',\n      species: 'gourgeist-small',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 9.5,\n      aliases: ['gourgeists'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gourgeist.mp3',\n      respelling: 'GORE-guyst',\n      ipa: '/ˈɡɔərɡaɪst/'\n    }\n  ],\n  [\n    'gourgeistlarge',\n    {\n      abilities: { first: 'pickup', second: 'frisk', hidden: 'insomnia' },\n      baseSpecies: 'gourgeist',\n      baseStats: { hp: 75, atk: 95, def: 122, spa: 58, spd: 75, spe: 69 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      forme: 'Large',\n      formeLetter: 'L',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 711,\n      otherFormes: ['gourgeist', 'gourgeistsmall', 'gourgeistsuper'],\n      prevo: 'pumpkaboolarge',\n      species: 'gourgeist-large',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 14,\n      aliases: ['gourgeistl'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gourgeist.mp3',\n      respelling: 'GORE-guyst',\n      ipa: '/ˈɡɔərɡaɪst/'\n    }\n  ],\n  [\n    'gourgeistsuper',\n    {\n      abilities: { first: 'pickup', second: 'frisk', hidden: 'insomnia' },\n      baseSpecies: 'gourgeist',\n      baseStats: { hp: 85, atk: 100, def: 122, spa: 58, spd: 75, spe: 54 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Trade',\n      forme: 'Super',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 711,\n      otherFormes: ['gourgeist', 'gourgeistsmall', 'gourgeistlarge'],\n      prevo: 'pumpkaboosuper',\n      species: 'gourgeist-super',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 39,\n      aliases: ['gourgeisth', 'gourgeisthuge', 'gourgeistxl'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gourgeist-super.mp3',\n      respelling: 'GORE-guyst',\n      ipa: '/ˈɡɔərɡaɪst/'\n    }\n  ],\n  [\n    'bergmite',\n    {\n      abilities: { first: 'owntempo', second: 'icebody', hidden: 'sturdy' },\n      baseStats: { hp: 55, atk: 69, def: 85, spa: 32, spd: 35, spe: 28 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['avalugg', 'avalugghisui'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 712,\n      species: 'bergmite',\n      types: [TypesEnum.Ice],\n      weightkg: 99.5,\n      aliases: ['kachikooru'],\n      classification: 'Ice Chunk Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bergmite.mp3',\n      respelling: 'BERG-mite',\n      ipa: '/ˈbɜːrɡmaɪt/'\n    }\n  ],\n  [\n    'avalugg',\n    {\n      abilities: { first: 'owntempo', second: 'icebody', hidden: 'sturdy' },\n      baseStats: { hp: 95, atk: 117, def: 184, spa: 44, spd: 46, spe: 28 },\n      catchRate: { base: 55, percentageWithOrdinaryPokeballAtFullHealth: '13.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 37,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 713,\n      otherFormes: ['avalugghisui'],\n      prevo: 'bergmite',\n      species: 'avalugg',\n      types: [TypesEnum.Ice],\n      weightkg: 505,\n      aliases: ['kurebeesu'],\n      classification: 'Iceberg Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/avalugg.mp3',\n      respelling: 'AV-uh-lug',\n      ipa: '/ˈævəlʌɡ/'\n    }\n  ],\n  [\n    'avalugghisui',\n    {\n      abilities: { first: 'strongjaw', second: 'icebody', hidden: 'sturdy' },\n      baseSpecies: 'avalugg',\n      baseStats: { hp: 95, atk: 127, def: 184, spa: 34, spd: 36, spe: 38 },\n      catchRate: { base: 55, percentageWithOrdinaryPokeballAtFullHealth: '13.9%' },\n      color: 'Blue',\n      eggGroups: ['Monster', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 37,\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 713,\n      otherFormes: ['avalugg'],\n      prevo: 'bergmite',\n      species: 'avalugg-hisui',\n      types: [TypesEnum.Ice, TypesEnum.Rock],\n      weightkg: 262.4,\n      aliases: ['kurebeesu'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/avalugg.mp3',\n      respelling: 'AV-uh-lug',\n      ipa: '/ˈævəlʌɡ/'\n    }\n  ],\n  [\n    'noibat',\n    {\n      abilities: { first: 'frisk', second: 'infiltrator', hidden: 'telepathy' },\n      baseStats: { hp: 40, atk: 30, def: 35, spa: 45, spd: 40, spe: 55 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Purple',\n      eggGroups: ['Flying', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['noivern'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 714,\n      species: 'noibat',\n      types: [TypesEnum.Flying, TypesEnum.Dragon],\n      weightkg: 8,\n      aliases: ['onbatto'],\n      classification: 'Sound Wave Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/noibat.mp3',\n      respelling: 'NOY-bat',\n      ipa: '/ˈnɔɪbæt/'\n    }\n  ],\n  [\n    'noivern',\n    {\n      abilities: { first: 'frisk', second: 'infiltrator', hidden: 'telepathy' },\n      baseStats: { hp: 85, atk: 70, def: 80, spa: 97, spd: 80, spe: 123 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Flying', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 48,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 715,\n      prevo: 'noibat',\n      species: 'noivern',\n      types: [TypesEnum.Flying, TypesEnum.Dragon],\n      weightkg: 85,\n      aliases: ['onbaan'],\n      classification: 'Sound Wave Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/noivern.mp3',\n      respelling: 'NOY-vern',\n      ipa: '/ˈnɔɪvərn/'\n    }\n  ],\n  [\n    'xerneas',\n    {\n      abilities: { first: 'fairyaura' },\n      baseForme: 'Active',\n      baseStats: { hp: 126, atk: 131, def: 95, spa: 131, spd: 98, spe: 99 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 716,\n      otherFormes: ['xerneasneutral'],\n      species: 'xerneas',\n      types: [TypesEnum.Fairy],\n      weightkg: 215,\n      aliases: ['rudolf', 'xern', 'zeruneasu'],\n      legendary: true,\n      classification: 'Life Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/xerneas.mp3',\n      respelling: 'ZURR-nee-us',\n      ipa: '/ˈzʌrniː.ʌs/'\n    }\n  ],\n  [\n    'xerneasneutral',\n    {\n      abilities: { first: 'fairyaura' },\n      baseSpecies: 'xerneas',\n      baseStats: { hp: 126, atk: 131, def: 95, spa: 131, spd: 98, spe: 99 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Neutral',\n      formeLetter: 'N',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 716,\n      otherFormes: ['xerneas'],\n      species: 'xerneas-neutral',\n      types: [TypesEnum.Fairy],\n      weightkg: 215,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/xerneas.mp3',\n      respelling: 'ZURR-nee-us',\n      ipa: '/ˈzʌrniː.ʌs/'\n    }\n  ],\n  [\n    'yveltal',\n    {\n      abilities: { first: 'darkaura' },\n      baseStats: { hp: 126, atk: 131, def: 95, spa: 131, spd: 98, spe: 99 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 5.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 717,\n      species: 'yveltal',\n      types: [TypesEnum.Dark, TypesEnum.Flying],\n      weightkg: 203,\n      aliases: ['baconbird', 'iberutaru', 'ygod'],\n      legendary: true,\n      classification: 'Destruction Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/yveltal.mp3',\n      respelling: 'ee-VELL-tall',\n      ipa: '/iːˈvɛltɔːl/'\n    }\n  ],\n  [\n    'zygarde',\n    {\n      abilities: { first: 'aurabreak', special: 'powerconstruct' },\n      baseForme: '50%',\n      baseStats: { hp: 108, atk: 100, def: 121, spa: 81, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 718,\n      otherFormes: ['zygarde10', 'zygardecomplete'],\n      species: 'zygarde',\n      types: [TypesEnum.Dragon, TypesEnum.Ground],\n      weightkg: 305,\n      aliases: ['jigarude', 'zyg', 'zygarde50'],\n      legendary: true,\n      classification: 'Order Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zygarde.mp3',\n      respelling: 'ZY-gard',\n      ipa: '/ˈzaɪɡɑːrd/'\n    }\n  ],\n  [\n    'zygarde10',\n    {\n      abilities: { first: 'aurabreak', special: 'powerconstruct' },\n      baseSpecies: 'zygarde',\n      baseStats: { hp: 54, atk: 100, def: 71, spa: 61, spd: 85, spe: 115 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: '10%',\n      formeLetter: 'T',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 718,\n      otherFormes: ['zygarde', 'zygardecomplete'],\n      species: 'zygarde-10',\n      types: [TypesEnum.Dragon, TypesEnum.Ground],\n      weightkg: 33.5,\n      aliases: ['zydog', 'zydoge', 'zygardedog'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zygarde-10.mp3',\n      respelling: 'ZY-gard',\n      ipa: '/ˈzaɪɡɑːrd/'\n    }\n  ],\n  [\n    'zygardecomplete',\n    {\n      abilities: { first: 'powerconstruct' },\n      baseSpecies: 'zygarde',\n      baseStats: { hp: 216, atk: 100, def: 121, spa: 91, spd: 95, spe: 85 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Complete',\n      formeLetter: 'C',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 4.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 718,\n      otherFormes: ['zygarde', 'zygarde10', 'zygardecompletemega'],\n      species: 'zygarde-complete',\n      types: [TypesEnum.Dragon, TypesEnum.Ground],\n      weightkg: 610,\n      aliases: ['perfectzygarde', 'zyc', 'zygarde100', 'zygardec', 'zygardefull', 'zygod'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zygarde-complete.mp3',\n      respelling: 'ZY-gard',\n      ipa: '/ˈzaɪɡɑːrd/'\n    }\n  ],\n  [\n    'zygardecompletemega',\n    {\n      abilities: { first: 'powerconstruct' },\n      baseSpecies: 'zygarde',\n      baseStats: { hp: 216, atk: 70, def: 91, spa: 216, spd: 85, spe: 100 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 7.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 718,\n      otherFormes: ['zygardecomplete'],\n      species: 'zygarde-complete-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Ground],\n      weightkg: 610,\n      aliases: ['perfectzygardemega', 'zycm', 'zygarde100mega', 'zygardecm', 'zygardefullmega', 'zygodmega'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zygarde.mp3',\n      respelling: 'ZY-gard',\n      ipa: '/ˈzaɪɡɑːrd/'\n    }\n  ],\n  [\n    'diancie',\n    {\n      abilities: { first: 'clearbody' },\n      baseStats: { hp: 50, atk: 100, def: 150, spa: 100, spd: 150, spe: 50 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 2, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 719,\n      otherFormes: ['dianciemega'],\n      species: 'diancie',\n      types: [TypesEnum.Rock, TypesEnum.Fairy],\n      weightkg: 8.8,\n      aliases: ['dianshii'],\n      mythical: true,\n      classification: 'Jewel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/diancie.mp3',\n      respelling: 'die-AHN-see',\n      ipa: '/daɪˈɑːnsiː/'\n    }\n  ],\n  [\n    'dianciemega',\n    {\n      abilities: { first: 'magicbounce' },\n      baseSpecies: 'diancie',\n      baseStats: { hp: 50, atk: 160, def: 110, spa: 160, spd: 110, spe: 110 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 2, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 719,\n      otherFormes: ['diancie'],\n      species: 'diancie-mega',\n      types: [TypesEnum.Rock, TypesEnum.Fairy],\n      weightkg: 27.8,\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/diancie-mega.mp3',\n      respelling: 'die-AHN-see',\n      ipa: '/daɪˈɑːnsiː/'\n    }\n  ],\n  [\n    'hoopa',\n    {\n      abilities: { first: 'magician' },\n      baseForme: 'Confined',\n      baseStats: { hp: 80, atk: 110, def: 60, spa: 150, spd: 130, spe: 70 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 720,\n      otherFormes: ['hoopaunbound'],\n      species: 'hoopa',\n      types: [TypesEnum.Psychic, TypesEnum.Ghost],\n      weightkg: 9,\n      aliases: ['fuupa', 'hoopac', 'hoopaconfined'],\n      mythical: true,\n      classification: 'Mischief Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hoopa.mp3',\n      respelling: 'HOO-puh',\n      ipa: '/ˈhuːpə/'\n    }\n  ],\n  [\n    'hoopaunbound',\n    {\n      abilities: { first: 'magician' },\n      baseSpecies: 'hoopa',\n      baseStats: { hp: 80, atk: 160, def: 60, spa: 170, spd: 130, spe: 80 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Unbound',\n      formeLetter: 'U',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 6.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 720,\n      otherFormes: ['hoopa'],\n      species: 'hoopa-unbound',\n      types: [TypesEnum.Psychic, TypesEnum.Dark],\n      weightkg: 490,\n      aliases: ['hoopau'],\n      mythical: true,\n      classification: 'Djinn Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hoopa-unbound.mp3',\n      respelling: 'HOO-puh',\n      ipa: '/ˈhuːpə/'\n    }\n  ],\n  [\n    'volcanion',\n    {\n      abilities: { first: 'waterabsorb' },\n      baseStats: { hp: 80, atk: 110, def: 120, spa: 130, spd: 90, spe: 70 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 721,\n      species: 'volcanion',\n      types: [TypesEnum.Fire, TypesEnum.Water],\n      weightkg: 195,\n      aliases: ['borukenion'],\n      mythical: true,\n      classification: 'Steam Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/volcanion.mp3',\n      respelling: 'vol-KAY-nee-un',\n      ipa: '/vɒlˈkeɪniːʌn/'\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/gen7.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'rowlet',\n    {\n      abilities: { first: 'overgrow', hidden: 'longreach' },\n      baseStats: { hp: 68, atk: 55, def: 55, spa: 50, spd: 50, spe: 42 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['dartrix'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 722,\n      species: 'rowlet',\n      types: [TypesEnum.Grass, TypesEnum.Flying],\n      weightkg: 1.5,\n      aliases: ['mokuroo'],\n      classification: 'Grass Quill Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rowlet.mp3',\n      respelling: 'ROW-let',\n      ipa: '/ˈroʊlɛt/'\n    }\n  ],\n  [\n    'dartrix',\n    {\n      abilities: { first: 'overgrow', hidden: 'longreach' },\n      baseStats: { hp: 78, atk: 75, def: 75, spa: 70, spd: 70, spe: 52 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 17,\n      evos: ['decidueye', 'decidueyehisui'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 723,\n      prevo: 'rowlet',\n      species: 'dartrix',\n      types: [TypesEnum.Grass, TypesEnum.Flying],\n      weightkg: 16,\n      aliases: ['fukusuroo'],\n      classification: 'Blade Quill Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dartrix.mp3',\n      respelling: 'DAR-trix',\n      ipa: '/ˈdɑːrtrɪks/'\n    }\n  ],\n  [\n    'decidueye',\n    {\n      abilities: { first: 'overgrow', hidden: 'longreach' },\n      baseStats: { hp: 78, atk: 107, def: 75, spa: 100, spd: 100, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 724,\n      otherFormes: ['decidueyehisui'],\n      prevo: 'dartrix',\n      species: 'decidueye',\n      types: [TypesEnum.Grass, TypesEnum.Ghost],\n      weightkg: 36.6,\n      aliases: ['junaipaa'],\n      classification: 'Arrow Quill Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/decidueye.mp3',\n      respelling: 'deh-SIH-joo-eye',\n      ipa: '/dɛˈsɪdʒuːaɪ/'\n    }\n  ],\n  [\n    'decidueyehisui',\n    {\n      abilities: { first: 'overgrow', hidden: 'scrappy' },\n      baseSpecies: 'deicueye',\n      baseStats: { hp: 88, atk: 112, def: 80, spa: 95, spd: 95, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      forme: 'Hisui',\n      formeLetter: 'H',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 724,\n      otherFormes: ['decidueye'],\n      prevo: 'dartrix',\n      species: 'decidueye-hisui',\n      types: [TypesEnum.Grass, TypesEnum.Fighting],\n      weightkg: 37,\n      aliases: ['hisuiandartrix', 'datrixh'],\n      respelling: 'deh-SIH-joo-eye',\n      ipa: '/dɛˈsɪdʒuːaɪ/'\n    }\n  ],\n  [\n    'litten',\n    {\n      abilities: { first: 'blaze', hidden: 'intimidate' },\n      baseStats: { hp: 45, atk: 65, def: 40, spa: 60, spd: 40, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['torracat'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 725,\n      species: 'litten',\n      types: [TypesEnum.Fire],\n      weightkg: 4.3,\n      aliases: ['nyabii'],\n      classification: 'Fire Cat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/litten.mp3',\n      respelling: 'LIT-n',\n      ipa: '/ˈlɪtən/'\n    }\n  ],\n  [\n    'torracat',\n    {\n      abilities: { first: 'blaze', hidden: 'intimidate' },\n      baseStats: { hp: 65, atk: 85, def: 50, spa: 80, spd: 50, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 17,\n      evos: ['incineroar'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 726,\n      prevo: 'litten',\n      species: 'torracat',\n      types: [TypesEnum.Fire],\n      weightkg: 25,\n      aliases: ['nyahiito'],\n      classification: 'Fire Cat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/torracat.mp3',\n      respelling: 'TOR-ruh-cat',\n      ipa: '/ˈtɔːrəkæt/'\n    }\n  ],\n  [\n    'incineroar',\n    {\n      abilities: { first: 'blaze', hidden: 'intimidate' },\n      baseStats: { hp: 95, atk: 115, def: 90, spa: 80, spd: 90, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 727,\n      prevo: 'torracat',\n      species: 'incineroar',\n      types: [TypesEnum.Fire, TypesEnum.Dark],\n      weightkg: 83,\n      aliases: ['gaogaen'],\n      classification: 'Heel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/incineroar.mp3',\n      respelling: 'in-SIN-uh-roar',\n      ipa: '/ɪnˈsɪnərɔər/'\n    }\n  ],\n  [\n    'popplio',\n    {\n      abilities: { first: 'torrent', hidden: 'liquidvoice' },\n      baseStats: { hp: 50, atk: 54, def: 54, spa: 66, spd: 56, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['brionne'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 728,\n      species: 'popplio',\n      types: [TypesEnum.Water],\n      weightkg: 7.5,\n      aliases: ['ashimari'],\n      classification: 'Sea Lion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/popplio.mp3',\n      respelling: 'POP-lee-oh',\n      ipa: '/ˈpɒpliːoʊ/'\n    }\n  ],\n  [\n    'brionne',\n    {\n      abilities: { first: 'torrent', hidden: 'liquidvoice' },\n      baseStats: { hp: 60, atk: 69, def: 69, spa: 91, spd: 81, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 17,\n      evos: ['primarina'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 729,\n      prevo: 'popplio',\n      species: 'brionne',\n      types: [TypesEnum.Water],\n      weightkg: 17.5,\n      aliases: ['oshamari'],\n      classification: 'Pop Star Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/brionne.mp3',\n      respelling: 'bree-AHN',\n      ipa: '/briːˈɑːn/'\n    }\n  ],\n  [\n    'primarina',\n    {\n      abilities: { first: 'torrent', hidden: 'liquidvoice' },\n      baseStats: { hp: 80, atk: 74, def: 74, spa: 126, spd: 116, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 730,\n      prevo: 'brionne',\n      species: 'primarina',\n      types: [TypesEnum.Water, TypesEnum.Fairy],\n      weightkg: 44,\n      aliases: ['ashireenu'],\n      classification: 'Soloist Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/primarina.mp3',\n      respelling: 'PREE-muh-REE-nuh',\n      ipa: '/ˈpriːməˈriːnə/'\n    }\n  ],\n  [\n    'pikipek',\n    {\n      abilities: { first: 'keeneye', second: 'skilllink', hidden: 'pickup' },\n      baseStats: { hp: 35, atk: 75, def: 30, spa: 30, spd: 30, spe: 65 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['trumbeak'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 731,\n      species: 'pikipek',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 1.2,\n      aliases: ['tsutsukera'],\n      classification: 'Woodpecker Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pikipek.mp3',\n      respelling: 'PICK-kee-peck',\n      ipa: '/ˈpɪkiːpɛk/'\n    }\n  ],\n  [\n    'trumbeak',\n    {\n      abilities: { first: 'keeneye', second: 'skilllink', hidden: 'pickup' },\n      baseStats: { hp: 55, atk: 85, def: 50, spa: 40, spd: 50, spe: 75 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 14,\n      evos: ['toucannon'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 732,\n      prevo: 'pikipek',\n      species: 'trumbeak',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 14.8,\n      aliases: ['kerarappa'],\n      classification: 'Bugle Beak Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/trumbeak.mp3',\n      respelling: 'TRUM-beak',\n      ipa: '/ˈtrʌmbiːk/'\n    }\n  ],\n  [\n    'toucannon',\n    {\n      abilities: { first: 'keeneye', second: 'skilllink', hidden: 'sheerforce' },\n      baseStats: { hp: 80, atk: 120, def: 75, spa: 75, spd: 75, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 28,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 733,\n      prevo: 'trumbeak',\n      species: 'toucannon',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 26,\n      aliases: ['dodekabashi'],\n      classification: 'Cannon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toucannon.mp3',\n      respelling: 'too-CAN-nun',\n      ipa: '/tuːˈkænən/'\n    }\n  ],\n  [\n    'yungoos',\n    {\n      abilities: {\n        first: 'stakeout',\n        second: 'strongjaw',\n        hidden: 'adaptability'\n      },\n      baseStats: { hp: 48, atk: 70, def: 30, spa: 30, spd: 30, spe: 45 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['gumshoos'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 734,\n      species: 'yungoos',\n      types: [TypesEnum.Normal],\n      weightkg: 6,\n      aliases: ['yanguusu'],\n      classification: 'Loitering Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/yungoos.mp3',\n      respelling: 'YUNG-goose',\n      ipa: '/ˈjʌŋɡuːs/'\n    }\n  ],\n  [\n    'gumshoos',\n    {\n      abilities: {\n        first: 'stakeout',\n        second: 'strongjaw',\n        hidden: 'adaptability'\n      },\n      baseStats: { hp: 88, atk: 110, def: 60, spa: 55, spd: 60, spe: 45 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'level 20 during daytime',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 735,\n      otherFormes: ['gumshoostotem'],\n      prevo: 'yungoos',\n      species: 'gumshoos',\n      types: [TypesEnum.Normal],\n      weightkg: 14.2,\n      aliases: ['dekaguusu'],\n      classification: 'Stakeout Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gumshoos.mp3',\n      respelling: 'GUM-shoos',\n      ipa: '/ˈɡʌmʃuːs/'\n    }\n  ],\n  [\n    'gumshoostotem',\n    {\n      abilities: { first: 'adaptability' },\n      baseSpecies: 'gumshoos',\n      baseStats: { hp: 88, atk: 110, def: 60, spa: 55, spd: 60, spe: 45 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 735,\n      otherFormes: ['gumshoos'],\n      species: 'gumshoos-totem',\n      types: [TypesEnum.Normal],\n      weightkg: 60,\n      aliases: ['gumshoost', 'totemgumshoos'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gumshoos.mp3',\n      respelling: 'GUM-shoos',\n      ipa: '/ˈɡʌmʃuːs/'\n    }\n  ],\n  [\n    'grubbin',\n    {\n      abilities: { first: 'swarm' },\n      baseStats: { hp: 47, atk: 62, def: 45, spa: 55, spd: 45, spe: 46 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['charjabug'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 736,\n      species: 'grubbin',\n      types: [TypesEnum.Bug],\n      weightkg: 4.4,\n      aliases: ['agojimushi'],\n      classification: 'Larva Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grubbin.mp3',\n      respelling: 'GRUB-bin',\n      ipa: '/ˈɡrʌb.bɪn/'\n    }\n  ],\n  [\n    'charjabug',\n    {\n      abilities: { first: 'battery' },\n      baseStats: { hp: 57, atk: 82, def: 95, spa: 55, spd: 75, spe: 36 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      evos: ['vikavolt'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 737,\n      prevo: 'grubbin',\n      species: 'charjabug',\n      types: [TypesEnum.Bug, TypesEnum.Electric],\n      weightkg: 10.5,\n      aliases: ['denjimushi'],\n      classification: 'Battery Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/charjabug.mp3',\n      respelling: 'CHAR-juh-bug',\n      ipa: '/ˈtʃɑːrdʒəbʌɡ/'\n    }\n  ],\n  [\n    'vikavolt',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 77, atk: 70, def: 90, spa: 145, spd: 75, spe: 43 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 'Use Thunder Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 738,\n      otherFormes: ['vikavolttotem'],\n      prevo: 'charjabug',\n      species: 'vikavolt',\n      types: [TypesEnum.Bug, TypesEnum.Electric],\n      weightkg: 45,\n      aliases: ['kuwaganon'],\n      classification: 'Stag Beetle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vikavolt.mp3',\n      respelling: 'VIE-kuh-volt',\n      ipa: '/ˈvaɪkəvɒlt/'\n    }\n  ],\n  [\n    'vikavolttotem',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'vikavolt',\n      baseStats: { hp: 77, atk: 70, def: 90, spa: 145, spd: 75, spe: 43 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 738,\n      otherFormes: ['vikavolt'],\n      species: 'vikavolt-totem',\n      types: [TypesEnum.Bug, TypesEnum.Electric],\n      weightkg: 147.5,\n      aliases: ['totemvikavolt', 'vikavoltt'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/vikavolt.mp3',\n      respelling: 'VIE-kuh-volt',\n      ipa: '/ˈvaɪkəvɒlt/'\n    }\n  ],\n  [\n    'crabrawler',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'ironfist',\n        hidden: 'angerpoint'\n      },\n      baseStats: { hp: 47, atk: 82, def: 57, spa: 42, spd: 47, spe: 63 },\n      catchRate: {\n        base: 225,\n        percentageWithOrdinaryPokeballAtFullHealth: '39.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['crabominable'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 739,\n      species: 'crabrawler',\n      types: [TypesEnum.Fighting],\n      weightkg: 7,\n      aliases: ['makenkani'],\n      classification: 'Boxing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/crabrawler.mp3',\n      respelling: 'crab-BRAW-ler',\n      ipa: '/kræbˈbrɔːlər/'\n    }\n  ],\n  [\n    'crabominable',\n    {\n      abilities: {\n        first: 'hypercutter',\n        second: 'ironfist',\n        hidden: 'angerpoint'\n      },\n      baseStats: { hp: 97, atk: 132, def: 77, spa: 62, spd: 67, spe: 43 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up in extreme cold',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 740,\n      prevo: 'crabrawler',\n      species: 'crabominable',\n      otherFormes: ['crabominablemega'],\n      types: [TypesEnum.Fighting, TypesEnum.Ice],\n      weightkg: 180,\n      aliases: ['kekenkani'],\n      classification: 'Woolly Crab Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/crabominable.mp3',\n      respelling: 'crab-BAH-min-uh-bull',\n      ipa: '/kræbˈbɑːmɪnəbʊl/'\n    }\n  ],\n  [\n    'crabominablemega',\n    {\n      abilities: { first: 'ironfist' },\n      baseStats: { hp: 97, atk: 157, def: 122, spa: 62, spd: 107, spe: 33 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      baseSpecies: 'crabominable',\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 740,\n      otherFormes: ['crabominable'],\n      species: 'crabominable-mega',\n      types: [TypesEnum.Fighting, TypesEnum.Ice],\n      weightkg: 252.8,\n      aliases: ['kekenkanimega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/crabominable.mp3',\n      respelling: 'crab-BAH-min-uh-bull',\n      ipa: '/kræbˈbɑːmɪnəbʊl/'\n    }\n  ],\n  [\n    'oricorio',\n    {\n      abilities: { first: 'dancer' },\n      baseForme: 'Baile',\n      baseStats: { hp: 75, atk: 70, def: 70, spa: 98, spd: 70, spe: 93 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 741,\n      otherFormes: ['oricoriopompom', 'oricoriopau', 'oricoriosensu'],\n      species: 'oricorio',\n      types: [TypesEnum.Fire, TypesEnum.Flying],\n      weightkg: 3.4,\n      aliases: ['odoridori', 'oricoriob', 'oricoriobaile', 'oricoriof', 'oricoriofire'],\n      classification: 'Dancing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/oricorio.mp3',\n      respelling: 'or-ih-KOR-ee-oh',\n      ipa: '/ɔːrɪˈkɔːriːoʊ/'\n    }\n  ],\n  [\n    'oricoriopompom',\n    {\n      abilities: { first: 'dancer' },\n      baseSpecies: 'oricorio',\n      baseStats: { hp: 75, atk: 70, def: 70, spa: 98, spd: 70, spe: 93 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: 'Pom-Pom',\n      formeLetter: 'P',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 741,\n      otherFormes: ['oricorio', 'oricoriopau', 'oricoriosensu'],\n      species: 'oricorio-pompom',\n      types: [TypesEnum.Electric, TypesEnum.Flying],\n      weightkg: 3.4,\n      aliases: ['oricorioe', 'oricorioelectric'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/oricorio-pompom.mp3',\n      respelling: 'or-ih-KOR-ee-oh',\n      ipa: '/ɔːrɪˈkɔːriːoʊ/'\n    }\n  ],\n  [\n    'oricoriopau',\n    {\n      abilities: { first: 'dancer' },\n      baseSpecies: 'oricorio',\n      baseStats: { hp: 75, atk: 70, def: 70, spa: 98, spd: 70, spe: 93 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: \"Pa'u\",\n      formeLetter: 'P',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 741,\n      otherFormes: ['oricorio', 'oricoriopompom', 'oricoriosensu'],\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/oricorio-pau.gif',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/oricorio-pau.gif',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/oricorio-pau.gif',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/ani/oricorio-pau.gif',\n      species: \"oricorio-pa'u\",\n      types: [TypesEnum.Psychic, TypesEnum.Flying],\n      weightkg: 3.4,\n      aliases: ['oricoriop', 'oricoriopsychic'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/oricorio.mp3',\n      respelling: 'or-ih-KOR-ee-oh',\n      ipa: '/ɔːrɪˈkɔːriːoʊ/'\n    }\n  ],\n  [\n    'oricoriosensu',\n    {\n      abilities: { first: 'dancer' },\n      baseSpecies: 'oricorio',\n      baseStats: { hp: 75, atk: 70, def: 70, spa: 98, spd: 70, spe: 93 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: 'Sensu',\n      formeLetter: 'S',\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 741,\n      otherFormes: ['oricorio', 'oricoriopompom', 'oricoriopau'],\n      species: 'oricorio-sensu',\n      types: [TypesEnum.Ghost, TypesEnum.Flying],\n      weightkg: 3.4,\n      aliases: ['oricoriog', 'oricorioghost', 'oricorios'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/oricorio-sensu.mp3',\n      respelling: 'or-ih-KOR-ee-oh',\n      ipa: '/ɔːrɪˈkɔːriːoʊ/'\n    }\n  ],\n  [\n    'cutiefly',\n    {\n      abilities: {\n        first: 'honeygather',\n        second: 'shielddust',\n        hidden: 'sweetveil'\n      },\n      baseStats: { hp: 40, atk: 45, def: 40, spa: 55, spd: 40, spe: 84 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Bug', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['ribombee'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 742,\n      species: 'cutiefly',\n      types: [TypesEnum.Bug, TypesEnum.Fairy],\n      weightkg: 0.2,\n      aliases: ['aburii'],\n      classification: 'Bee Fly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cutiefly.mp3',\n      respelling: 'KYOO-tee-fly',\n      ipa: '/ˈkjuːtiːflaɪ/'\n    }\n  ],\n  [\n    'ribombee',\n    {\n      abilities: {\n        first: 'honeygather',\n        second: 'shielddust',\n        hidden: 'sweetveil'\n      },\n      baseStats: { hp: 60, atk: 55, def: 60, spa: 95, spd: 70, spe: 124 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Yellow',\n      eggGroups: ['Bug', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 25,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 743,\n      otherFormes: ['ribombeetotem'],\n      prevo: 'cutiefly',\n      species: 'ribombee',\n      types: [TypesEnum.Bug, TypesEnum.Fairy],\n      weightkg: 0.5,\n      aliases: ['aburibon'],\n      classification: 'Bee Fly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ribombee.mp3',\n      respelling: 'rih-BOMB-bee',\n      ipa: '/rɪˈbɒmb.biː/'\n    }\n  ],\n  [\n    'ribombeetotem',\n    {\n      abilities: { first: 'sweetveil' },\n      baseSpecies: 'ribombee',\n      baseStats: { hp: 60, atk: 55, def: 60, spa: 95, spd: 70, spe: 124 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Yellow',\n      eggGroups: ['Bug', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 743,\n      otherFormes: ['ribombee'],\n      species: 'ribombee-totem',\n      types: [TypesEnum.Bug, TypesEnum.Fairy],\n      weightkg: 2,\n      aliases: ['ribombeet', 'totemribombee'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ribombee.mp3',\n      respelling: 'rih-BOMB-bee',\n      ipa: '/rɪˈbɒmb.biː/'\n    }\n  ],\n  [\n    'rockruff',\n    {\n      abilities: {\n        first: 'keeneye',\n        second: 'vitalspirit',\n        hidden: 'steadfast',\n        special: 'owntempo'\n      },\n      baseForme: 'Midday',\n      baseStats: { hp: 45, atk: 65, def: 40, spa: 30, spd: 40, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['lycanroc', 'lycanrocmidnight', 'lycanrocdusk'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 744,\n      species: 'rockruff',\n      types: [TypesEnum.Rock],\n      weightkg: 9.2,\n      aliases: ['iwanko', 'rockruffdusk'],\n      classification: 'Puppy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rockruff.mp3',\n      respelling: 'ROCK-ruff',\n      ipa: '/ˈrɒkrʌf/'\n    }\n  ],\n  [\n    'lycanroc',\n    {\n      abilities: { first: 'keeneye', second: 'sandrush', hidden: 'steadfast' },\n      baseForme: 'Midday',\n      baseStats: { hp: 75, atk: 115, def: 65, spa: 55, spd: 65, spe: 112 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level 25 during Daytime',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 745,\n      otherFormes: ['lycanrocmidnight', 'lycanrocdusk'],\n      prevo: 'rockruff',\n      species: 'lycanroc',\n      types: [TypesEnum.Rock],\n      weightkg: 25,\n      aliases: ['lycanrocday', 'lycanrocmidday', 'rugarugan'],\n      classification: 'Wolf Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lycanroc.mp3',\n      respelling: 'LIE-can-rock',\n      ipa: '/ˈlaɪkænrɒk/'\n    }\n  ],\n  [\n    'lycanrocmidnight',\n    {\n      abilities: { first: 'keeneye', second: 'vitalspirit', hidden: 'noguard' },\n      baseSpecies: 'lycanroc',\n      baseStats: { hp: 85, atk: 115, def: 75, spa: 55, spd: 75, spe: 82 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level 25 during Nightttime',\n      forme: 'Midnight',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 745,\n      otherFormes: ['lycanroc', 'lycanrocdusk'],\n      prevo: 'rockruff',\n      species: 'lycanroc-midnight',\n      types: [TypesEnum.Rock],\n      weightkg: 25,\n      aliases: ['lycanrocn', 'lycanrocnight'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lycanroc-midnight.mp3',\n      respelling: 'LIE-can-rock',\n      ipa: '/ˈlaɪkænrɒk/'\n    }\n  ],\n  [\n    'lycanrocdusk',\n    {\n      abilities: { first: 'toughclaws' },\n      baseSpecies: 'lycanroc',\n      baseStats: { hp: 75, atk: 117, def: 65, spa: 55, spd: 65, spe: 110 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'from a special Rockruff',\n      forme: 'Dusk',\n      formeLetter: 'D',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 745,\n      otherFormes: ['lycanroc', 'lycanrocmidnight'],\n      prevo: 'rockruff',\n      species: 'lycanroc-dusk',\n      types: [TypesEnum.Rock],\n      weightkg: 25,\n      aliases: ['lycanrocd'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lycanroc-dusk.mp3',\n      respelling: 'LIE-can-rock',\n      ipa: '/ˈlaɪkænrɒk/'\n    }\n  ],\n  [\n    'wishiwashi',\n    {\n      abilities: { first: 'schooling' },\n      baseForme: 'Solo',\n      baseStats: { hp: 45, atk: 20, def: 20, spa: 25, spd: 25, spe: 40 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 746,\n      otherFormes: ['wishiwashischool'],\n      species: 'wishiwashi',\n      types: [TypesEnum.Water],\n      weightkg: 0.3,\n      aliases: ['wishiwashisolo', 'yowashi'],\n      classification: 'Small Fry Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wishiwashi.mp3',\n      respelling: 'WISH-ee-WASH-ee',\n      ipa: '/ˈwɪʃiːˌwɒʃiː/'\n    }\n  ],\n  [\n    'wishiwashischool',\n    {\n      abilities: { first: 'schooling' },\n      baseSpecies: 'wishiwashi',\n      baseStats: { hp: 45, atk: 140, def: 130, spa: 140, spd: 135, spe: 30 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'School',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 8.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 746,\n      otherFormes: ['wishiwashi'],\n      species: 'wishiwashi-school',\n      types: [TypesEnum.Water],\n      weightkg: 78.6,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wishiwashi-school.mp3',\n      respelling: 'WISH-ee-WASH-ee',\n      ipa: '/ˈwɪʃiːˌwɒʃiː/'\n    }\n  ],\n  [\n    'mareanie',\n    {\n      abilities: { first: 'merciless', second: 'limber', hidden: 'regenerator' },\n      baseStats: { hp: 50, atk: 53, def: 62, spa: 43, spd: 52, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['toxapex'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 747,\n      species: 'mareanie',\n      types: [TypesEnum.Poison, TypesEnum.Water],\n      weightkg: 8,\n      aliases: ['hidoide'],\n      classification: 'Brutal Star Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mareanie.mp3',\n      respelling: 'muh-REE-nee',\n      ipa: '/məˈriːniː/'\n    }\n  ],\n  [\n    'toxapex',\n    {\n      abilities: { first: 'merciless', second: 'limber', hidden: 'regenerator' },\n      baseStats: { hp: 50, atk: 63, def: 152, spa: 53, spd: 142, spe: 35 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Blue',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 748,\n      prevo: 'mareanie',\n      species: 'toxapex',\n      types: [TypesEnum.Poison, TypesEnum.Water],\n      weightkg: 14.5,\n      aliases: ['dohidoide', 'pex'],\n      classification: 'Brutal Star Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toxapex.mp3',\n      respelling: 'TOX-uh-pex',\n      ipa: '/ˈtɒksəpɛks/'\n    }\n  ],\n  [\n    'mudbray',\n    {\n      abilities: { first: 'owntempo', second: 'stamina', hidden: 'innerfocus' },\n      baseStats: { hp: 70, atk: 100, def: 70, spa: 45, spd: 55, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['mudsdale'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 749,\n      species: 'mudbray',\n      types: [TypesEnum.Ground],\n      weightkg: 110,\n      aliases: ['dorobanko'],\n      classification: 'Donkey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mudbray.mp3',\n      respelling: 'MUD-bray',\n      ipa: '/ˈmʌdbreɪ/'\n    }\n  ],\n  [\n    'mudsdale',\n    {\n      abilities: { first: 'owntempo', second: 'stamina', hidden: 'innerfocus' },\n      baseStats: { hp: 100, atk: 125, def: 100, spa: 55, spd: 85, spe: 35 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 750,\n      prevo: 'mudbray',\n      species: 'mudsdale',\n      types: [TypesEnum.Ground],\n      weightkg: 920,\n      aliases: ['banbadoro'],\n      classification: 'Draft Horse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mudsdale.mp3',\n      respelling: 'MUDZ-dale',\n      ipa: '/ˈmʌdzdeɪl/'\n    }\n  ],\n  [\n    'dewpider',\n    {\n      abilities: { first: 'waterbubble', hidden: 'waterabsorb' },\n      baseStats: { hp: 38, atk: 40, def: 52, spa: 40, spd: 72, spe: 27 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Green',\n      eggGroups: ['Water 1', 'Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['araquanid'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 751,\n      species: 'dewpider',\n      types: [TypesEnum.Water, TypesEnum.Bug],\n      weightkg: 4,\n      aliases: ['shizukumo'],\n      classification: 'Water Bubble Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dewpider.mp3',\n      respelling: 'DOO-pih-der',\n      ipa: '/ˈduːpɪdər/'\n    }\n  ],\n  [\n    'araquanid',\n    {\n      abilities: { first: 'waterbubble', hidden: 'waterabsorb' },\n      baseStats: { hp: 68, atk: 70, def: 92, spa: 50, spd: 132, spe: 42 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Green',\n      eggGroups: ['Water 1', 'Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 22,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 752,\n      otherFormes: ['araquanidtotem'],\n      prevo: 'dewpider',\n      species: 'araquanid',\n      types: [TypesEnum.Water, TypesEnum.Bug],\n      weightkg: 82,\n      aliases: ['onishizukumo'],\n      classification: 'Water Bubble Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/araquanid.mp3',\n      respelling: 'uh-RACK-wuh-nid',\n      ipa: '/əˈrækwənɪd/'\n    }\n  ],\n  [\n    'araquanidtotem',\n    {\n      abilities: { first: 'waterbubble' },\n      baseSpecies: 'araquanid',\n      baseStats: { hp: 68, atk: 70, def: 92, spa: 50, spd: 132, spe: 42 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Green',\n      eggGroups: ['Water 1', 'Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 752,\n      otherFormes: ['araquanid'],\n      species: 'araquanid-totem',\n      types: [TypesEnum.Water, TypesEnum.Bug],\n      weightkg: 217.5,\n      aliases: ['araquanidt', 'totemaraquanid'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/araquanid.mp3',\n      respelling: 'uh-RACK-wuh-nid',\n      ipa: '/əˈrækwənɪd/'\n    }\n  ],\n  [\n    'fomantis',\n    {\n      abilities: { first: 'leafguard', hidden: 'contrary' },\n      baseStats: { hp: 40, atk: 55, def: 35, spa: 50, spd: 35, spe: 35 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Pink',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['lurantis'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 753,\n      species: 'fomantis',\n      types: [TypesEnum.Grass],\n      weightkg: 1.5,\n      aliases: ['karikiri'],\n      classification: 'Sickle Grass Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fomantis.mp3',\n      respelling: 'fo-MAN-tis',\n      ipa: '/foʊˈmæntɪs/'\n    }\n  ],\n  [\n    'lurantis',\n    {\n      abilities: { first: 'leafguard', hidden: 'contrary' },\n      baseStats: { hp: 70, atk: 105, def: 90, spa: 80, spd: 90, spe: 45 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Pink',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 754,\n      otherFormes: ['lurantistotem'],\n      prevo: 'fomantis',\n      species: 'lurantis',\n      types: [TypesEnum.Grass],\n      weightkg: 18.5,\n      aliases: ['rarantesu'],\n      classification: 'Bloom Sickle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lurantis.mp3'\n    }\n  ],\n  [\n    'lurantistotem',\n    {\n      abilities: { first: 'leafguard' },\n      baseSpecies: 'lurantis',\n      baseStats: { hp: 70, atk: 105, def: 90, spa: 80, spd: 90, spe: 45 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Pink',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 754,\n      otherFormes: ['lurantis'],\n      species: 'lurantis-totem',\n      types: [TypesEnum.Grass],\n      weightkg: 58,\n      aliases: ['lurantist', 'totemlurantis'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lurantis.mp3'\n    }\n  ],\n  [\n    'morelull',\n    {\n      abilities: {\n        first: 'illuminate',\n        second: 'effectspore',\n        hidden: 'raindish'\n      },\n      baseStats: { hp: 40, atk: 35, def: 55, spa: 65, spd: 75, spe: 15 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Purple',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['shiinotic'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 755,\n      species: 'morelull',\n      types: [TypesEnum.Grass, TypesEnum.Fairy],\n      weightkg: 1.5,\n      aliases: ['nemashu'],\n      classification: 'Illuminating Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/morelull.mp3',\n      respelling: 'MORE-eh-lull',\n      ipa: '/ˈmɔərɛlʌl/'\n    }\n  ],\n  [\n    'shiinotic',\n    {\n      abilities: {\n        first: 'illuminate',\n        second: 'effectspore',\n        hidden: 'raindish'\n      },\n      baseStats: { hp: 60, atk: 45, def: 80, spa: 90, spd: 100, spe: 30 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 24,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 756,\n      prevo: 'morelull',\n      species: 'shiinotic',\n      types: [TypesEnum.Grass, TypesEnum.Fairy],\n      weightkg: 11.5,\n      aliases: ['masheedo'],\n      classification: 'Illuminating Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shiinotic.mp3',\n      respelling: 'shee-NAH-tick',\n      ipa: '/ʃiːˈnɑːtɪk/'\n    }\n  ],\n  [\n    'salandit',\n    {\n      abilities: { first: 'corrosion', hidden: 'oblivious' },\n      baseStats: { hp: 48, atk: 44, def: 40, spa: 71, spd: 40, spe: 77 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['salazzle'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 757,\n      species: 'salandit',\n      types: [TypesEnum.Poison, TypesEnum.Fire],\n      weightkg: 4.8,\n      aliases: ['yatoumori'],\n      classification: 'Toxic Lizard Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/salandit.mp3',\n      respelling: 'suh-LAN-dit',\n      ipa: '/səˈlændɪt/'\n    }\n  ],\n  [\n    'salazzle',\n    {\n      abilities: { first: 'corrosion', hidden: 'oblivious' },\n      baseStats: { hp: 68, atk: 64, def: 60, spa: 111, spd: 60, spe: 117 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 'Level 33, Female only',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 758,\n      otherFormes: ['salazzletotem'],\n      prevo: 'salandit',\n      species: 'salazzle',\n      types: [TypesEnum.Poison, TypesEnum.Fire],\n      weightkg: 22.2,\n      aliases: ['ennyuuto'],\n      classification: 'Toxic Lizard Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/salazzle.mp3',\n      respelling: 'suh-LAZ-zuhl',\n      ipa: '/səˈlæzəl/'\n    }\n  ],\n  [\n    'salazzletotem',\n    {\n      abilities: { first: 'corrosion' },\n      baseSpecies: 'salazzle',\n      baseStats: { hp: 68, atk: 64, def: 60, spa: 111, spd: 60, spe: 117 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 758,\n      otherFormes: ['salazzle'],\n      species: 'salazzle-totem',\n      types: [TypesEnum.Poison, TypesEnum.Fire],\n      weightkg: 81,\n      aliases: ['salazzlet', 'totemsalazzle'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/salazzle.mp3',\n      respelling: 'suh-LAZ-zuhl',\n      ipa: '/səˈlæzəl/'\n    }\n  ],\n  [\n    'stufful',\n    {\n      abilities: { first: 'fluffy', second: 'klutz', hidden: 'cutecharm' },\n      baseStats: { hp: 70, atk: 75, def: 50, spa: 45, spd: 50, spe: 50 },\n      catchRate: { base: 140, percentageWithOrdinaryPokeballAtFullHealth: '28%' },\n      color: 'Pink',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['bewear'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 759,\n      species: 'stufful',\n      types: [TypesEnum.Normal, TypesEnum.Fighting],\n      weightkg: 6.8,\n      aliases: ['nuikoguma'],\n      classification: 'Flailing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/stufful.mp3',\n      respelling: 'STUFF-fuhl',\n      ipa: '/ˈstʌf.fʌl/'\n    }\n  ],\n  [\n    'bewear',\n    {\n      abilities: { first: 'fluffy', second: 'klutz', hidden: 'unnerve' },\n      baseStats: { hp: 120, atk: 125, def: 80, spa: 55, spd: 60, spe: 60 },\n      catchRate: { base: 70, percentageWithOrdinaryPokeballAtFullHealth: '16.6%' },\n      color: 'Pink',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 27,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 760,\n      prevo: 'stufful',\n      species: 'bewear',\n      types: [TypesEnum.Normal, TypesEnum.Fighting],\n      weightkg: 135,\n      aliases: ['kiteruguma'],\n      classification: 'Strong Arm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bewear.mp3',\n      respelling: 'beh-WARE',\n      ipa: '/bəˈwɛər/'\n    }\n  ],\n  [\n    'bounsweet',\n    {\n      abilities: { first: 'leafguard', second: 'oblivious', hidden: 'sweetveil' },\n      baseStats: { hp: 42, atk: 30, def: 38, spa: 30, spd: 38, spe: 32 },\n      catchRate: {\n        base: 235,\n        percentageWithOrdinaryPokeballAtFullHealth: '41.3%'\n      },\n      color: 'Purple',\n      eggGroups: ['Grass'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['steenee'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 761,\n      species: 'bounsweet',\n      types: [TypesEnum.Grass],\n      weightkg: 3.2,\n      aliases: ['amakaji'],\n      classification: 'Fruit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bounsweet.mp3',\n      respelling: 'BOWN-sweet',\n      ipa: '/ˈbaʊnswiːt/'\n    }\n  ],\n  [\n    'steenee',\n    {\n      abilities: { first: 'leafguard', second: 'oblivious', hidden: 'sweetveil' },\n      baseStats: { hp: 52, atk: 40, def: 48, spa: 40, spd: 48, spe: 62 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 18,\n      evos: ['tsareena'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 762,\n      prevo: 'bounsweet',\n      species: 'steenee',\n      types: [TypesEnum.Grass],\n      weightkg: 8.2,\n      aliases: ['amamaiko'],\n      classification: 'Fruit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/steenee.mp3',\n      respelling: 'STEE-nee',\n      ipa: '/ˈstiːniː/'\n    }\n  ],\n  [\n    'tsareena',\n    {\n      abilities: {\n        first: 'leafguard',\n        second: 'queenlymajesty',\n        hidden: 'sweetveil'\n      },\n      baseStats: { hp: 72, atk: 120, def: 98, spa: 50, spd: 98, spe: 72 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level 19 while knowing Stomp',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 763,\n      prevo: 'steenee',\n      species: 'tsareena',\n      types: [TypesEnum.Grass],\n      weightkg: 21.4,\n      aliases: ['amaajo'],\n      classification: 'Fruit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tsareena.mp3',\n      respelling: 'zar-EE-nuh',\n      ipa: '/zɑːrˈiːnə/'\n    }\n  ],\n  [\n    'comfey',\n    {\n      abilities: { first: 'flowerveil', second: 'triage', hidden: 'naturalcure' },\n      baseStats: { hp: 51, atk: 52, def: 90, spa: 82, spd: 110, spe: 100 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 0.1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 764,\n      species: 'comfey',\n      types: [TypesEnum.Fairy],\n      weightkg: 0.3,\n      aliases: ['kyuwawaa'],\n      classification: 'Posy Picker Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/comfey.mp3',\n      respelling: 'KUM-fay',\n      ipa: '/ˈkʌmfeɪ/'\n    }\n  ],\n  [\n    'oranguru',\n    {\n      abilities: { first: 'innerfocus', second: 'telepathy', hidden: 'symbiosis' },\n      baseStats: { hp: 90, atk: 60, def: 80, spa: 90, spd: 110, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 765,\n      species: 'oranguru',\n      types: [TypesEnum.Normal, TypesEnum.Psychic],\n      weightkg: 76,\n      aliases: ['yareyuutan'],\n      classification: 'Sage Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/oranguru.mp3',\n      respelling: 'or-RANG-goo-roo',\n      ipa: '/ɔːˈræŋɡuːruː/'\n    }\n  ],\n  [\n    'passimian',\n    {\n      abilities: { first: 'receiver', hidden: 'defiant' },\n      baseStats: { hp: 100, atk: 120, def: 90, spa: 40, spd: 60, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 766,\n      species: 'passimian',\n      types: [TypesEnum.Fighting],\n      weightkg: 82.8,\n      aliases: ['nagetsukesaru'],\n      classification: 'Teamwork Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/passimian.mp3',\n      respelling: 'pass-SIM-ee-uhn',\n      ipa: '/pæsˈsɪmiːən/'\n    }\n  ],\n  [\n    'wimpod',\n    {\n      abilities: { first: 'wimpout' },\n      baseStats: { hp: 25, atk: 35, def: 40, spa: 20, spd: 30, spe: 80 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Gray',\n      eggGroups: ['Bug', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['golisopod'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 767,\n      species: 'wimpod',\n      types: [TypesEnum.Bug, TypesEnum.Water],\n      weightkg: 12,\n      aliases: ['kosokumushi'],\n      classification: 'Turn Tail Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wimpod.mp3',\n      respelling: 'WIM-pod',\n      ipa: '/ˈwɪmpɒd/'\n    }\n  ],\n  [\n    'golisopod',\n    {\n      abilities: { first: 'emergencyexit' },\n      baseStats: { hp: 75, atk: 125, def: 140, spa: 60, spd: 90, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Bug', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 768,\n      prevo: 'wimpod',\n      species: 'golisopod',\n      types: [TypesEnum.Bug, TypesEnum.Water],\n      otherFormes: ['golisopodmega'],\n      weightkg: 108,\n      aliases: ['gusokumusha'],\n      classification: 'Hard Scale Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/golisopod.mp3',\n      respelling: 'go-LIE-suh-pod',\n      ipa: '/ɡoʊˈlaɪsəpɒd/'\n    }\n  ],\n  [\n    'golisopodmega',\n    {\n      abilities: { first: 'emergencyexit' },\n      baseStats: { hp: 75, atk: 150, def: 175, spa: 70, spd: 120, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Bug', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      baseSpecies: 'golisopod',\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 768,\n      otherFormes: ['golisopod'],\n      species: 'golisopod-mega',\n      types: [TypesEnum.Bug, TypesEnum.Steel],\n      weightkg: 148,\n      aliases: ['kekenkanimega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/golisopod.mp3',\n      respelling: 'go-LIE-suh-pod',\n      ipa: '/ɡoʊˈlaɪsəpɒd/'\n    }\n  ],\n  [\n    'sandygast',\n    {\n      abilities: { first: 'watercompaction', hidden: 'sandveil' },\n      baseStats: { hp: 55, atk: 55, def: 80, spa: 70, spd: 45, spe: 15 },\n      catchRate: { base: 140, percentageWithOrdinaryPokeballAtFullHealth: '28%' },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['palossand'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 769,\n      species: 'sandygast',\n      types: [TypesEnum.Ghost, TypesEnum.Ground],\n      weightkg: 70,\n      aliases: ['sunabaa'],\n      classification: 'Sand Heap Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sandygast.mp3',\n      respelling: 'SAN-dee-GAST',\n      ipa: '/ˈsændiːˌɡæst/'\n    }\n  ],\n  [\n    'palossand',\n    {\n      abilities: { first: 'watercompaction', hidden: 'sandveil' },\n      baseStats: { hp: 85, atk: 75, def: 110, spa: 100, spd: 75, spe: 35 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 42,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 770,\n      prevo: 'sandygast',\n      species: 'palossand',\n      types: [TypesEnum.Ghost, TypesEnum.Ground],\n      weightkg: 250,\n      aliases: ['shirodesuna'],\n      classification: 'Sand Castle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/palossand.mp3',\n      respelling: 'PAL-uh-sand',\n      ipa: '/ˈpæləsænd/'\n    }\n  ],\n  [\n    'pyukumuku',\n    {\n      abilities: { first: 'innardsout', hidden: 'unaware' },\n      baseStats: { hp: 55, atk: 60, def: 130, spa: 30, spd: 130, spe: 5 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Black',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 771,\n      species: 'pyukumuku',\n      types: [TypesEnum.Water],\n      weightkg: 1.2,\n      aliases: ['namakobushi', 'pyuku'],\n      classification: 'Sea Cucumber Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pyukumuku.mp3',\n      respelling: 'PYOO-koo-MOO-koo',\n      ipa: '/ˌpjuːkuːˈmuːkuː/'\n    }\n  ],\n  [\n    'typenull',\n    {\n      abilities: { first: 'battlearmor' },\n      baseForme: 'Type: Null',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 59 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['silvally'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 772,\n      species: 'Type: Null',\n      types: [TypesEnum.Normal],\n      weightkg: 120.5,\n      aliases: ['taipunuru', 'type null', 'type: null'],\n      legendary: true,\n      classification: 'Synthetic Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/typenull.mp3'\n    }\n  ],\n  [\n    'silvally',\n    {\n      abilities: { first: 'rkssystem' },\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up with happiness of at least 220',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally',\n      types: [TypesEnum.Normal],\n      weightkg: 100.5,\n      aliases: ['shiruvuadi'],\n      legendary: true,\n      classification: 'Synthetic Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallybug',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Bug',\n      formeLetter: 'B',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-bug',\n      types: [TypesEnum.Bug],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallydark',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Dark',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-dark',\n      types: [TypesEnum.Dark],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallydragon',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Dragon',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-dragon',\n      types: [TypesEnum.Dragon],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallyelectric',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Electric',\n      formeLetter: 'E',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-electric',\n      types: [TypesEnum.Electric],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallyfairy',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Fairy',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-fairy',\n      types: [TypesEnum.Fairy],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallyfighting',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Fighting',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-fighting',\n      types: [TypesEnum.Fighting],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallyfire',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Fire',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-fire',\n      types: [TypesEnum.Fire],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallyflying',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Flying',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-flying',\n      types: [TypesEnum.Flying],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallyghost',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Ghost',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-ghost',\n      types: [TypesEnum.Ghost],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallygrass',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Grass',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-grass',\n      types: [TypesEnum.Grass],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallyground',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Ground',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-ground',\n      types: [TypesEnum.Ground],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallyice',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Ice',\n      formeLetter: 'I',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-ice',\n      types: [TypesEnum.Ice],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallypoison',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Poison',\n      formeLetter: 'P',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-poison',\n      types: [TypesEnum.Poison],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallypsychic',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Psychic',\n      formeLetter: 'P',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallyrock',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-psychic',\n      types: [TypesEnum.Psychic],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallyrock',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Rock',\n      formeLetter: 'R',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallysteel',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-rock',\n      types: [TypesEnum.Rock],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallysteel',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Steel',\n      formeLetter: 'S',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallywater'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-steel',\n      types: [TypesEnum.Steel],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'silvallywater',\n    {\n      abilities: { first: 'rkssystem' },\n      baseSpecies: 'silvally',\n      baseStats: { hp: 95, atk: 95, def: 95, spa: 95, spd: 95, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 2,\n      forme: 'Water',\n      formeLetter: 'W',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 773,\n      otherFormes: [\n        'silvally',\n        'silvallybug',\n        'silvallydark',\n        'silvallydragon',\n        'silvallyelectric',\n        'silvallyfairy',\n        'silvallyfighting',\n        'silvallyfire',\n        'silvallyflying',\n        'silvallyghost',\n        'silvallygrass',\n        'silvallyground',\n        'silvallyice',\n        'silvallypoison',\n        'silvallypsychic',\n        'silvallyrock',\n        'silvallysteel'\n      ],\n      prevo: 'typenull',\n      species: 'silvally-water',\n      types: [TypesEnum.Water],\n      weightkg: 100.5,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silvally.mp3'\n    }\n  ],\n  [\n    'minior',\n    {\n      abilities: { first: 'shieldsdown' },\n      baseForme: 'Red',\n      baseStats: { hp: 60, atk: 100, def: 60, spa: 100, spd: 60, spe: 120 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Red',\n      cosmeticFormes: ['Minior-Orange', 'Minior-Yellow', 'Minior-Green', 'Minior-Blue', 'Minior-Indigo', 'Minior-Violet'],\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 774,\n      otherFormes: ['miniormeteor'],\n      species: 'minior',\n      types: [TypesEnum.Rock, TypesEnum.Flying],\n      weightkg: 0.3,\n      aliases: ['meteno', 'miniorblue', 'miniorgreen', 'miniorindigo', 'miniororange', 'miniorred', 'miniorviolet', 'minioryellow'],\n      classification: 'Meteor Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/minior.mp3',\n      respelling: 'MIN-ee-or',\n      ipa: '/ˈmɪniːɔːr/'\n    }\n  ],\n  [\n    'miniormeteor',\n    {\n      abilities: { first: 'shieldsdown' },\n      baseSpecies: 'minior',\n      baseStats: { hp: 60, atk: 60, def: 100, spa: 60, spd: 100, spe: 60 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      forme: 'Meteor',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 774,\n      otherFormes: ['minior'],\n      species: 'minior-meteor',\n      types: [TypesEnum.Rock, TypesEnum.Flying],\n      weightkg: 40,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/minior.mp3',\n      respelling: 'MIN-ee-or',\n      ipa: '/ˈmɪniːɔːr/'\n    }\n  ],\n  [\n    'komala',\n    {\n      abilities: { first: 'comatose' },\n      baseStats: { hp: 65, atk: 115, def: 65, spa: 75, spd: 95, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 775,\n      species: 'komala',\n      types: [TypesEnum.Normal],\n      weightkg: 19.9,\n      aliases: ['nekkoara'],\n      classification: 'Drowsing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/komala.mp3',\n      respelling: 'koh-MAH-luh',\n      ipa: '/koʊˈmɑːlə/'\n    }\n  ],\n  [\n    'turtonator',\n    {\n      abilities: { first: 'shellarmor' },\n      baseStats: { hp: 60, atk: 78, def: 135, spa: 91, spd: 85, spe: 36 },\n      catchRate: { base: 70, percentageWithOrdinaryPokeballAtFullHealth: '16.6%' },\n      color: 'Red',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 776,\n      species: 'turtonator',\n      types: [TypesEnum.Fire, TypesEnum.Dragon],\n      weightkg: 212,\n      aliases: ['bakugamesu'],\n      classification: 'Blast Turtle Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/turtonator.mp3',\n      respelling: 'TURT-nay-ter',\n      ipa: '/ˈtɜːrt.neɪtər/'\n    }\n  ],\n  [\n    'togedemaru',\n    {\n      abilities: { first: 'ironbarbs', second: 'lightningrod', hidden: 'sturdy' },\n      baseStats: { hp: 65, atk: 98, def: 63, spa: 40, spd: 73, spe: 96 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 777,\n      otherFormes: ['togedemarutotem'],\n      species: 'togedemaru',\n      types: [TypesEnum.Electric, TypesEnum.Steel],\n      weightkg: 3.3,\n      classification: 'Roly-Poly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/togedemaru.mp3',\n      respelling: 'TOH-geh-deh-MAH-roo',\n      ipa: '/ˌtoʊɡɛdɛˈmɑːruː/'\n    }\n  ],\n  [\n    'togedemarutotem',\n    {\n      abilities: { first: 'sturdy' },\n      baseSpecies: 'togedemaru',\n      baseStats: { hp: 65, atk: 98, def: 63, spa: 40, spd: 73, spe: 96 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 777,\n      otherFormes: ['togedemaru'],\n      species: 'togedemaru-totem',\n      types: [TypesEnum.Electric, TypesEnum.Steel],\n      weightkg: 13,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/togedemaru.mp3',\n      respelling: 'TOH-geh-deh-MAH-roo',\n      ipa: '/ˌtoʊɡɛdɛˈmɑːruː/'\n    }\n  ],\n  [\n    'mimikyu',\n    {\n      abilities: { first: 'disguise' },\n      baseForme: 'Disguised',\n      baseStats: { hp: 55, atk: 90, def: 80, spa: 50, spd: 105, spe: 96 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 778,\n      otherFormes: ['mimikyubusted', 'mimikyutotem', 'mimikyubustedtotem'],\n      species: 'mimikyu',\n      types: [TypesEnum.Ghost, TypesEnum.Fairy],\n      weightkg: 0.7,\n      aliases: ['mimikkyu', 'mimikyudisguised'],\n      classification: 'Disguise Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mimikyu.mp3',\n      respelling: 'MEE-mee-kyoo',\n      ipa: '/ˈmiːmiːkjuː/'\n    }\n  ],\n  [\n    'mimikyubusted',\n    {\n      abilities: { first: 'disguise' },\n      baseSpecies: 'mimikyu',\n      baseStats: { hp: 55, atk: 90, def: 80, spa: 50, spd: 105, spe: 96 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Busted',\n      formeLetter: 'B',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 778,\n      otherFormes: ['mimikyu', 'mimikyutotem', 'mimikyubustedtotem'],\n      species: 'mimikyu-busted',\n      types: [TypesEnum.Ghost, TypesEnum.Fairy],\n      weightkg: 0.7,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mimikyu.mp3',\n      respelling: 'MEE-mee-kyoo',\n      ipa: '/ˈmiːmiːkjuː/'\n    }\n  ],\n  [\n    'mimikyutotem',\n    {\n      abilities: { first: 'disguise' },\n      baseSpecies: 'mimikyu',\n      baseStats: { hp: 55, atk: 90, def: 80, spa: 50, spd: 105, spe: 96 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 778,\n      otherFormes: ['mimikyu', 'mimikyubusted', 'mimikyubustedtotem'],\n      species: 'mimikyu-totem',\n      types: [TypesEnum.Ghost, TypesEnum.Fairy],\n      weightkg: 2.8,\n      aliases: ['mimikyut', 'totemmimikyu'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mimikyu.mp3',\n      respelling: 'MEE-mee-kyoo',\n      ipa: '/ˈmiːmiːkjuː/'\n    }\n  ],\n  [\n    'mimikyubustedtotem',\n    {\n      abilities: { first: 'disguise' },\n      baseSpecies: 'mimikyu',\n      baseStats: { hp: 55, atk: 90, def: 80, spa: 50, spd: 105, spe: 96 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Busted-Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 778,\n      otherFormes: ['mimikyu', 'mimikyubusted', 'mimikyutotem'],\n      species: 'mimikyu-busted-totem',\n      types: [TypesEnum.Ghost, TypesEnum.Fairy],\n      weightkg: 2.8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mimikyu.mp3',\n      respelling: 'MEE-mee-kyoo',\n      ipa: '/ˈmiːmiːkjuː/'\n    }\n  ],\n  [\n    'bruxish',\n    {\n      abilities: { first: 'dazzling', second: 'strongjaw', hidden: 'wonderskin' },\n      baseStats: { hp: 68, atk: 105, def: 70, spa: 70, spd: 70, spe: 92 },\n      catchRate: { base: 80, percentageWithOrdinaryPokeballAtFullHealth: '18.4%' },\n      color: 'Pink',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 779,\n      species: 'bruxish',\n      types: [TypesEnum.Water, TypesEnum.Psychic],\n      weightkg: 19,\n      aliases: ['hagigishiri'],\n      classification: 'Gnash Teeth Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bruxish.mp3'\n    }\n  ],\n  [\n    'drampa',\n    {\n      abilities: { first: 'berserk', second: 'sapsipper', hidden: 'cloudnine' },\n      baseStats: { hp: 78, atk: 60, def: 85, spa: 135, spd: 91, spe: 36 },\n      catchRate: { base: 70, percentageWithOrdinaryPokeballAtFullHealth: '16.6%' },\n      color: 'White',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 780,\n      species: 'drampa',\n      otherFormes: ['drampamega'],\n      types: [TypesEnum.Normal, TypesEnum.Dragon],\n      weightkg: 185,\n      aliases: ['jijiiron'],\n      classification: 'Placid Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drampa.mp3',\n      respelling: 'DRAM-puh',\n      ipa: '/ˈdræmpə/'\n    }\n  ],\n  [\n    'drampamega',\n    {\n      abilities: { first: 'berserk' },\n      baseStats: { hp: 78, atk: 85, def: 110, spa: 160, spd: 116, spe: 36 },\n      catchRate: { base: 70, percentageWithOrdinaryPokeballAtFullHealth: '16.6%' },\n      color: 'White',\n      baseSpecies: 'drampa',\n      eggGroups: ['Monster', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 780,\n      otherFormes: ['drampa'],\n      species: 'drampa-mega',\n      types: [TypesEnum.Normal, TypesEnum.Dragon],\n      weightkg: 240.5,\n      aliases: ['jijiironmega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drampa.mp3',\n      respelling: 'DRAM-puh',\n      ipa: '/ˈdræmpə/',\n      classification: 'Imposing Pokémon'\n    }\n  ],\n  [\n    'dhelmise',\n    {\n      abilities: { first: 'steelworker' },\n      baseStats: { hp: 70, atk: 131, def: 100, spa: 86, spd: 90, spe: 40 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Green',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 781,\n      species: 'dhelmise',\n      types: [TypesEnum.Ghost, TypesEnum.Grass],\n      weightkg: 210,\n      aliases: ['dadarin'],\n      classification: 'Sea Creeper Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dhelmise.mp3',\n      respelling: 'dell-MIZE',\n      ipa: '/dɛlˈmaɪz/'\n    }\n  ],\n  [\n    'jangmoo',\n    {\n      abilities: {\n        first: 'bulletproof',\n        second: 'soundproof',\n        hidden: 'overcoat'\n      },\n      baseStats: { hp: 45, atk: 55, def: 65, spa: 45, spd: 45, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['hakamoo'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 782,\n      specialBulbapediaUrl: 'Jangmo-o',\n      species: 'jangmo-o',\n      types: [TypesEnum.Dragon],\n      weightkg: 29.7,\n      aliases: ['jarako'],\n      classification: 'Scaly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/jangmoo.mp3'\n    }\n  ],\n  [\n    'hakamoo',\n    {\n      abilities: {\n        first: 'bulletproof',\n        second: 'soundproof',\n        hidden: 'overcoat'\n      },\n      baseStats: { hp: 55, atk: 75, def: 90, spa: 65, spd: 70, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 35,\n      evos: ['kommoo'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 783,\n      prevo: 'jangmoo',\n      specialBulbapediaUrl: 'Hakamo-o',\n      species: 'hakamo-o',\n      types: [TypesEnum.Dragon, TypesEnum.Fighting],\n      weightkg: 47,\n      aliases: ['jarango'],\n      classification: 'Scaly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hakamoo.mp3'\n    }\n  ],\n  [\n    'kommoo',\n    {\n      abilities: {\n        first: 'bulletproof',\n        second: 'soundproof',\n        hidden: 'overcoat'\n      },\n      baseStats: { hp: 75, atk: 110, def: 125, spa: 100, spd: 105, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 45,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 784,\n      otherFormes: ['kommoototem'],\n      prevo: 'hakamoo',\n      specialBulbapediaUrl: 'Kommo-o',\n      species: 'kommo-o',\n      types: [TypesEnum.Dragon, TypesEnum.Fighting],\n      weightkg: 78.2,\n      aliases: ['clanger', 'jararanga'],\n      classification: 'Scaly Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kommoo.mp3'\n    }\n  ],\n  [\n    'kommoototem',\n    {\n      abilities: { first: 'overcoat' },\n      baseSpecies: 'kommoo',\n      baseStats: { hp: 75, atk: 110, def: 125, spa: 100, spd: 105, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Dragon'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      forme: 'Totem',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 784,\n      otherFormes: ['kommoo'],\n      species: 'kommo-o-totem',\n      types: [TypesEnum.Dragon, TypesEnum.Fighting],\n      weightkg: 207.5,\n      aliases: ['kommoot', 'totemkommoo'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kommoo.mp3'\n    }\n  ],\n  [\n    'tapukoko',\n    {\n      abilities: { first: 'electricsurge', hidden: 'telepathy' },\n      baseStats: { hp: 70, atk: 115, def: 85, spa: 95, spd: 75, spe: 130 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 3855,\n      num: 785,\n      species: 'Tapu Koko',\n      types: [TypesEnum.Electric, TypesEnum.Fairy],\n      weightkg: 20.5,\n      aliases: ['kapukokeko', 'koko', 'tapu koko'],\n      legendary: true,\n      classification: 'Land Spirit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tapukoko.mp3'\n    }\n  ],\n  [\n    'tapulele',\n    {\n      abilities: { first: 'psychicsurge', hidden: 'telepathy' },\n      baseStats: { hp: 70, atk: 85, def: 75, spa: 130, spd: 115, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 3855,\n      num: 786,\n      species: 'Tapu Lele',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 18.6,\n      aliases: ['kaputetefu', 'lele', 'tapu lele'],\n      legendary: true,\n      classification: 'Land Spirit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tapulele.mp3'\n    }\n  ],\n  [\n    'tapubulu',\n    {\n      abilities: { first: 'grassysurge', hidden: 'telepathy' },\n      baseStats: { hp: 70, atk: 130, def: 115, spa: 85, spd: 95, spe: 75 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 3855,\n      num: 787,\n      species: 'Tapu Bulu',\n      types: [TypesEnum.Grass, TypesEnum.Fairy],\n      weightkg: 45.5,\n      aliases: ['bulu', 'kapubururu', 'tapu bulu'],\n      legendary: true,\n      classification: 'Land Spirit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tapubulu.mp3'\n    }\n  ],\n  [\n    'tapufini',\n    {\n      abilities: { first: 'mistysurge', hidden: 'telepathy' },\n      baseStats: { hp: 70, atk: 75, def: 115, spa: 95, spd: 130, spe: 85 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 3855,\n      num: 788,\n      species: 'Tapu Fini',\n      types: [TypesEnum.Water, TypesEnum.Fairy],\n      weightkg: 21.2,\n      aliases: ['fini', 'kapurehire', 'tapu fini'],\n      legendary: true,\n      classification: 'Land Spirit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tapufini.mp3'\n    }\n  ],\n  [\n    'cosmog',\n    {\n      abilities: { first: 'unaware' },\n      baseStats: { hp: 43, atk: 29, def: 31, spa: 29, spd: 31, spe: 37 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['cosmoem'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 789,\n      species: 'cosmog',\n      types: [TypesEnum.Psychic],\n      weightkg: 0.1,\n      aliases: ['kosumoggu', 'mene', 'nebby'],\n      legendary: true,\n      classification: 'Nebula Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cosmog.mp3',\n      respelling: 'KOZ-mog',\n      ipa: '/ˈkɒzmɒɡ/'\n    }\n  ],\n  [\n    'cosmoem',\n    {\n      abilities: { first: 'sturdy' },\n      baseStats: { hp: 43, atk: 29, def: 131, spa: 29, spd: 131, spe: 37 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 1, spe: 0 },\n      evoLevel: 43,\n      evos: ['solgaleo', 'lunala'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 790,\n      prevo: 'cosmog',\n      species: 'cosmoem',\n      types: [TypesEnum.Psychic],\n      weightkg: 999.9,\n      aliases: ['kosumoumu'],\n      legendary: true,\n      classification: 'Protostar Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cosmoem.mp3',\n      respelling: 'KOZ-mo-em',\n      ipa: '/ˈkɒzmoʊɛm/'\n    }\n  ],\n  [\n    'solgaleo',\n    {\n      abilities: { first: 'fullmetalbody' },\n      baseStats: { hp: 137, atk: 137, def: 107, spa: 113, spd: 89, spe: 97 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 53,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 791,\n      prevo: 'cosmoem',\n      species: 'solgaleo',\n      types: [TypesEnum.Psychic, TypesEnum.Steel],\n      weightkg: 230,\n      aliases: ['sorugareo'],\n      legendary: true,\n      classification: 'Sunne Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/solgaleo.mp3',\n      respelling: 'SOUL-gah-LAY-oh',\n      ipa: '/ˌsoʊlɡɑːˈleɪoʊ/'\n    }\n  ],\n  [\n    'lunala',\n    {\n      abilities: { first: 'shadowshield' },\n      baseStats: { hp: 137, atk: 113, def: 89, spa: 137, spd: 107, spe: 97 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 53,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 792,\n      prevo: 'cosmoem',\n      species: 'lunala',\n      types: [TypesEnum.Psychic, TypesEnum.Ghost],\n      weightkg: 120,\n      aliases: ['runaaara'],\n      legendary: true,\n      classification: 'Moone Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lunala.mp3',\n      respelling: 'loo-NAH-luh',\n      ipa: '/luːˈnɑːlə/'\n    }\n  ],\n  [\n    'nihilego',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 109, atk: 53, def: 47, spa: 127, spd: 131, spe: 103 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 793,\n      species: 'nihilego',\n      types: [TypesEnum.Rock, TypesEnum.Poison],\n      weightkg: 55.5,\n      aliases: ['lego', 'ub01', 'utsuroido'],\n      classification: 'Parasite Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nihilego.mp3',\n      respelling: 'NIE-uh-lee-go',\n      ipa: '/ˈnaɪəliːɡoʊ/'\n    }\n  ],\n  [\n    'buzzwole',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 107, atk: 139, def: 139, spa: 53, spd: 53, spe: 79 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 794,\n      species: 'buzzwole',\n      types: [TypesEnum.Bug, TypesEnum.Fighting],\n      weightkg: 333.6,\n      aliases: ['masshibuun', 'swole', 'ub02a'],\n      classification: 'Swollen Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/buzzwole.mp3'\n    }\n  ],\n  [\n    'pheromosa',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 71, atk: 137, def: 37, spa: 137, spd: 37, spe: 151 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 795,\n      species: 'pheromosa',\n      types: [TypesEnum.Bug, TypesEnum.Fighting],\n      weightkg: 25,\n      aliases: ['fierooche', 'phero', 'ub02b'],\n      classification: 'Lissome Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pheromosa.mp3',\n      respelling: 'fair-uh-MO-suh',\n      ipa: '/fɛərəˈmoʊsə/'\n    }\n  ],\n  [\n    'xurkitree',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 83, atk: 89, def: 71, spa: 173, spd: 71, spe: 83 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 796,\n      species: 'xurkitree',\n      types: [TypesEnum.Electric],\n      weightkg: 100,\n      aliases: ['denjumoku', 'ub03', 'xurk'],\n      classification: 'Glowing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/xurkitree.mp3',\n      respelling: 'ZURK-ih-tree',\n      ipa: '/ˈzɜːrkɪtriː/'\n    }\n  ],\n  [\n    'celesteela',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 97, atk: 101, def: 103, spa: 107, spd: 101, spe: 61 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 1, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 9.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 797,\n      species: 'celesteela',\n      types: [TypesEnum.Steel, TypesEnum.Flying],\n      weightkg: 999.9,\n      aliases: ['steela', 'tekkaguya', 'ub04blaster'],\n      classification: 'Launch Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/celesteela.mp3',\n      respelling: 'sell-uh-STEEL-uh',\n      ipa: '/sɛləˈstiːlə/'\n    }\n  ],\n  [\n    'kartana',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 59, atk: 181, def: 131, spa: 59, spd: 31, spe: 109 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 798,\n      species: 'kartana',\n      types: [TypesEnum.Grass, TypesEnum.Steel],\n      weightkg: 0.1,\n      aliases: ['kamitsurugi', 'kart', 'ub04blade'],\n      classification: 'Drawn Sword Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kartana.mp3',\n      respelling: 'kar-TAH-nuh',\n      ipa: '/kɑːrˈtɑːnə/'\n    }\n  ],\n  [\n    'guzzlord',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 223, atk: 101, def: 53, spa: 97, spd: 53, spe: 43 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 5.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 799,\n      species: 'guzzlord',\n      types: [TypesEnum.Dark, TypesEnum.Dragon],\n      weightkg: 888,\n      aliases: ['akujikingu', 'ub05'],\n      classification: 'Junkivore Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/guzzlord.mp3',\n      respelling: 'GUZZ-lord',\n      ipa: '/ˈgʌzlɔːrd/'\n    }\n  ],\n  [\n    'necrozma',\n    {\n      abilities: { first: 'prismarmor' },\n      baseStats: { hp: 97, atk: 107, def: 101, spa: 127, spd: 89, spe: 79 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 800,\n      otherFormes: ['necrozmaduskmane', 'necrozmadawnwings', 'necrozmaultra'],\n      species: 'necrozma',\n      types: [TypesEnum.Psychic],\n      weightkg: 230,\n      aliases: ['nekurozuma'],\n      legendary: true,\n      classification: 'Prism Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/necrozma.mp3',\n      respelling: 'neh-KROHZ-muh',\n      ipa: '/nɛˈkroʊzmə/'\n    }\n  ],\n  [\n    'necrozmaduskmane',\n    {\n      abilities: { first: 'prismarmor' },\n      baseSpecies: 'necrozma',\n      baseStats: { hp: 97, atk: 157, def: 127, spa: 113, spd: 109, spe: 77 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Dusk-Mane',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 800,\n      otherFormes: ['necrozma', 'necrozmadawnwings', 'necrozmaultra'],\n      species: 'necrozma-duskmane',\n      types: [TypesEnum.Psychic, TypesEnum.Steel],\n      weightkg: 460,\n      aliases: [\n        'duskmane',\n        'duskmanenecrozma',\n        'ndm',\n        'necrozma dusk mane',\n        'necrozma dusk',\n        'necrozma-dusk-mane',\n        'necrozma-dusk',\n        'necrozmadm',\n        'necrozmadusk'\n      ],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/necrozma-duskmane.mp3',\n      respelling: 'neh-KROHZ-muh',\n      ipa: '/nɛˈkroʊzmə/'\n    }\n  ],\n  [\n    'necrozmadawnwings',\n    {\n      abilities: { first: 'prismarmor' },\n      baseSpecies: 'necrozma',\n      baseStats: { hp: 97, atk: 113, def: 109, spa: 157, spd: 127, spe: 77 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Dawn-Wings',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 4.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 800,\n      otherFormes: ['necrozma', 'necrozmaduskmane', 'necrozmaultra'],\n      species: 'necrozma-dawnwings',\n      types: [TypesEnum.Psychic, TypesEnum.Ghost],\n      weightkg: 350,\n      aliases: [\n        'dawnwings',\n        'dawnwingsnecrozma',\n        'ndw',\n        'necrozma dawn wings',\n        'necrozma dawn',\n        'necrozma-dawn-wings',\n        'necrozma-dawn',\n        'necrozmadawn',\n        'necrozmadw'\n      ],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/necrozma-dawnwings.mp3',\n      respelling: 'neh-KROHZ-muh',\n      ipa: '/nɛˈkroʊzmə/'\n    }\n  ],\n  [\n    'necrozmaultra',\n    {\n      abilities: { first: 'neuroforce' },\n      baseSpecies: 'necrozma',\n      baseStats: { hp: 97, atk: 167, def: 97, spa: 167, spd: 97, spe: 129 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 1, spd: 0, spe: 1 },\n      forme: 'Ultra',\n      formeLetter: 'U',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 7.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 800,\n      otherFormes: ['necrozma', 'necrozmaduskmane', 'necrozmadawnwings'],\n      species: 'necrozma-ultra',\n      types: [TypesEnum.Psychic, TypesEnum.Dragon],\n      weightkg: 230,\n      aliases: ['necrozmau', 'ultranecrozma', 'unecro'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/necrozma-ultra.mp3',\n      respelling: 'neh-KROHZ-muh',\n      ipa: '/nɛˈkroʊzmə/'\n    }\n  ],\n  [\n    'magearna',\n    {\n      abilities: { first: 'soulheart' },\n      baseStats: { hp: 80, atk: 95, def: 115, spa: 130, spd: 115, spe: 65 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 801,\n      otherFormes: ['magearnaoriginal', 'magearnaoriginalmega', 'magearnamega'],\n      species: 'magearna',\n      types: [TypesEnum.Steel, TypesEnum.Fairy],\n      weightkg: 80.5,\n      aliases: ['mage', 'magiana'],\n      mythical: true,\n      classification: 'Artificial Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magearna.mp3',\n      respelling: 'muh-GEER-nuh',\n      ipa: '/məˈgɪərnə/'\n    }\n  ],\n  [\n    'magearnamega',\n    {\n      abilities: { first: 'soulheart' },\n      baseStats: { hp: 80, atk: 125, def: 115, spa: 170, spd: 115, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      baseSpecies: 'magearna',\n      forme: 'Mega',\n      formeLetter: 'M',\n      heightm: 1.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 801,\n      otherFormes: ['magearnaoriginal', 'magearnaoriginalmega', 'magearna'],\n      species: 'magearna-mega',\n      types: [TypesEnum.Steel, TypesEnum.Fairy],\n      weightkg: 248.1,\n      mythical: true,\n      aliases: ['magemega', 'magianamega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magearna.mp3',\n      respelling: 'muh-GEER-nuh',\n      ipa: '/məˈgɪərnə/'\n    }\n  ],\n  [\n    'magearnaoriginal',\n    {\n      abilities: { first: 'soulheart' },\n      baseSpecies: 'magearna',\n      baseStats: { hp: 80, atk: 95, def: 115, spa: 130, spd: 115, spe: 65 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Original',\n      formeLetter: 'O',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 801,\n      otherFormes: ['magearnamega', 'magearnaoriginalmega', 'magearna'],\n      species: 'magearna-original',\n      types: [TypesEnum.Steel, TypesEnum.Fairy],\n      weightkg: 80.5,\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magearna.mp3',\n      respelling: 'muh-GEER-nuh',\n      ipa: '/məˈgɪərnə/'\n    }\n  ],\n  [\n    'magearnaoriginalmega',\n    {\n      abilities: { first: 'soulheart' },\n      baseStats: { hp: 80, atk: 125, def: 115, spa: 170, spd: 115, spe: 95 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      baseSpecies: 'magearna',\n      forme: 'Original-Mega',\n      formeLetter: 'M',\n      heightm: 1.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 801,\n      otherFormes: ['magearnaoriginal', 'magearnamega', 'magearna'],\n      species: 'magearna-original-mega',\n      types: [TypesEnum.Steel, TypesEnum.Fairy],\n      mythical: true,\n      weightkg: 248.1,\n      aliases: ['magemega', 'magianamega'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/magearna.mp3',\n      respelling: 'muh-GEER-nuh',\n      ipa: '/məˈgɪərnə/'\n    }\n  ],\n  [\n    'marshadow',\n    {\n      abilities: { first: 'technician' },\n      baseStats: { hp: 90, atk: 125, def: 80, spa: 90, spd: 90, spe: 125 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 802,\n      species: 'marshadow',\n      types: [TypesEnum.Fighting, TypesEnum.Ghost],\n      weightkg: 22.2,\n      aliases: ['maashadoo'],\n      mythical: true,\n      classification: 'Gloomdweller Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/marshadow.mp3',\n      respelling: 'mar-SHAD-oh',\n      ipa: '/mɑːrˈʃædoʊ/'\n    }\n  ],\n  [\n    'poipole',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 67, atk: 73, def: 67, spa: 73, spd: 67, spe: 73 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['naganadel'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 803,\n      species: 'poipole',\n      types: [TypesEnum.Poison],\n      weightkg: 1.8,\n      aliases: ['bebenomu', 'ubadhesive'],\n      classification: 'Poison Pin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/poipole.mp3',\n      respelling: 'POY-pull',\n      ipa: '/ˈpɔɪpʊl/'\n    }\n  ],\n  [\n    'naganadel',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 73, atk: 73, def: 73, spa: 127, spd: 73, spe: 121 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 41,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 804,\n      prevo: 'poipole',\n      species: 'naganadel',\n      types: [TypesEnum.Poison, TypesEnum.Dragon],\n      weightkg: 150,\n      aliases: ['aagoyon', 'naga'],\n      classification: 'Poison Pin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/naganadel.mp3',\n      respelling: 'NAW-guh-NAW-duhl',\n      ipa: '/ˈnɔːɡəˌnɔːdəl/'\n    }\n  ],\n  [\n    'stakataka',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 61, atk: 131, def: 211, spa: 53, spd: 101, spe: 13 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 5.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 805,\n      species: 'stakataka',\n      types: [TypesEnum.Rock, TypesEnum.Steel],\n      weightkg: 820,\n      aliases: ['staka', 'tsundetsunde', 'ubassembly'],\n      classification: 'Rampart Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/stakataka.mp3',\n      respelling: 'STACK-uh-TACK-uh',\n      ipa: '/ˈstækəˌtækə/'\n    }\n  ],\n  [\n    'blacephalon',\n    {\n      abilities: { first: 'beastboost' },\n      baseStats: { hp: 53, atk: 127, def: 53, spa: 151, spd: 79, spe: 107 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 806,\n      species: 'blacephalon',\n      types: [TypesEnum.Fire, TypesEnum.Ghost],\n      weightkg: 13,\n      aliases: ['blace', 'ubburst', 'zugadoon'],\n      classification: 'Fireworks Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/blacephalon.mp3',\n      respelling: 'blass-SEF-uh-lawn',\n      ipa: '/blæˈsɛfəlɔːn/'\n    }\n  ],\n  [\n    'zeraora',\n    {\n      abilities: { first: 'voltabsorb' },\n      baseStats: { hp: 88, atk: 112, def: 75, spa: 102, spd: 80, spe: 143 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 807,\n      species: 'zeraora',\n      otherFormes: ['zeraoramega'],\n      types: [TypesEnum.Electric],\n      weightkg: 44.5,\n      mythical: true,\n      classification: 'Thunderclap Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zeraora.mp3'\n    }\n  ],\n  [\n    'zeraoramega',\n    {\n      abilities: { first: 'voltabsorb' },\n      baseStats: { hp: 88, atk: 157, def: 75, spa: 147, spd: 80, spe: 153 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      baseSpecies: 'zeraora',\n      forme: 'Mega',\n      formeLetter: 'M',\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 807,\n      otherFormes: ['zeraora'],\n      mythical: true,\n      species: 'zeraora-mega',\n      types: [TypesEnum.Electric],\n      weightkg: 248.1,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zeraora.mp3'\n    }\n  ],\n  [\n    'meltan',\n    {\n      abilities: { first: 'magnetpull' },\n      baseStats: { hp: 46, atk: 65, def: 65, spa: 55, spd: 35, spe: 34 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['melmetal'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 808,\n      species: 'meltan',\n      types: [TypesEnum.Steel],\n      weightkg: 8,\n      aliases: ['merutan'],\n      mythical: true,\n      classification: 'Hex Nut Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meltan.mp3'\n    }\n  ],\n  [\n    'melmetal',\n    {\n      abilities: { first: 'ironfist' },\n      baseStats: { hp: 135, atk: 143, def: 143, spa: 80, spd: 65, spe: 34 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'feed 400 Meltan Candy in Pokémon GO',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 809,\n      otherFormes: ['melmetalgmax'],\n      prevo: 'meltan',\n      species: 'melmetal',\n      types: [TypesEnum.Steel],\n      weightkg: 800,\n      aliases: ['merumetaru'],\n      mythical: true,\n      classification: 'Hex Nut Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/melmetal.mp3'\n    }\n  ],\n  [\n    'melmetalgmax',\n    {\n      abilities: { first: 'ironfist' },\n      baseSpecies: 'melmetal',\n      baseStats: { hp: 135, atk: 143, def: 143, spa: 80, spd: 65, spe: 34 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 25,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 809,\n      otherFormes: ['melmetal'],\n      species: 'melmetal-gmax',\n      types: [TypesEnum.Steel],\n      weightkg: 1000,\n      aliases: ['gigantamax melmetal'],\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/melmetal.mp3'\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/gen8.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'grookey',\n    {\n      abilities: { first: 'overgrow', hidden: 'grassysurge' },\n      baseStats: { hp: 50, atk: 65, def: 50, spa: 40, spd: 40, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['thwackey'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 810,\n      species: 'grookey',\n      types: [TypesEnum.Grass],\n      weightkg: 5,\n      classification: 'Chimp Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grookey.mp3'\n    }\n  ],\n  [\n    'thwackey',\n    {\n      abilities: { first: 'overgrow', hidden: 'grassysurge' },\n      baseStats: { hp: 70, atk: 85, def: 70, spa: 55, spd: 60, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 16,\n      evos: ['rillaboom'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 811,\n      prevo: 'grookey',\n      species: 'thwackey',\n      types: [TypesEnum.Grass],\n      weightkg: 14,\n      classification: 'Beat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/thwackey.mp3'\n    }\n  ],\n  [\n    'rillaboom',\n    {\n      abilities: { first: 'overgrow', hidden: 'grassysurge' },\n      baseStats: { hp: 100, atk: 125, def: 90, spa: 60, spd: 70, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 35,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 812,\n      otherFormes: ['rillaboomgmax'],\n      prevo: 'thwackey',\n      species: 'rillaboom',\n      types: [TypesEnum.Grass],\n      weightkg: 90,\n      classification: 'Drummer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rillaboom.mp3'\n    }\n  ],\n  [\n    'rillaboomgmax',\n    {\n      abilities: { first: 'overgrow', hidden: 'grassysurge' },\n      baseSpecies: 'rillaboom',\n      baseStats: { hp: 100, atk: 125, def: 90, spa: 60, spd: 70, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 35,\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 28,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 812,\n      otherFormes: ['rillaboom'],\n      species: 'rillaboom-gmax',\n      types: [TypesEnum.Grass],\n      weightkg: 90,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rillaboom.mp3'\n    }\n  ],\n  [\n    'scorbunny',\n    {\n      abilities: { first: 'blaze', hidden: 'libero' },\n      baseStats: { hp: 50, atk: 71, def: 40, spa: 40, spd: 40, spe: 69 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['raboot'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 813,\n      species: 'scorbunny',\n      types: [TypesEnum.Fire],\n      weightkg: 4.5,\n      classification: 'Rabbit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scorbunny.mp3'\n    }\n  ],\n  [\n    'raboot',\n    {\n      abilities: { first: 'blaze', hidden: 'libero' },\n      baseStats: { hp: 65, atk: 86, def: 60, spa: 55, spd: 60, spe: 94 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 16,\n      evos: ['cinderace'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 814,\n      prevo: 'scorbunny',\n      species: 'raboot',\n      types: [TypesEnum.Fire],\n      weightkg: 9,\n      classification: 'Rabbit Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/raboot.mp3'\n    }\n  ],\n  [\n    'cinderace',\n    {\n      abilities: { first: 'blaze', hidden: 'libero' },\n      baseStats: { hp: 80, atk: 116, def: 75, spa: 65, spd: 75, spe: 119 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 35,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 815,\n      otherFormes: ['cinderacegmax'],\n      prevo: 'raboot',\n      species: 'cinderace',\n      types: [TypesEnum.Fire],\n      weightkg: 33,\n      classification: 'Striker Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cinderace.mp3'\n    }\n  ],\n  [\n    'cinderacegmax',\n    {\n      abilities: { first: 'blaze', hidden: 'libero' },\n      baseSpecies: 'cinderace',\n      baseStats: { hp: 80, atk: 116, def: 75, spa: 65, spd: 75, spe: 119 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Field', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 35,\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 27,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 815,\n      otherFormes: ['cinderace'],\n      species: 'cinderace-gmax',\n      types: [TypesEnum.Fire],\n      weightkg: 33,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cinderace.mp3'\n    }\n  ],\n  [\n    'sobble',\n    {\n      abilities: { first: 'torrent', hidden: 'sniper' },\n      baseStats: { hp: 50, atk: 40, def: 40, spa: 70, spd: 40, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 1 },\n      evos: ['drizzile'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 816,\n      species: 'sobble',\n      types: [TypesEnum.Water],\n      weightkg: 4,\n      classification: 'Water Lizard Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sobble.mp3'\n    }\n  ],\n  [\n    'drizzile',\n    {\n      abilities: { first: 'torrent', hidden: 'sniper' },\n      baseStats: { hp: 65, atk: 60, def: 55, spa: 95, spd: 55, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 16,\n      evos: ['inteleon'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 817,\n      prevo: 'sobble',\n      species: 'drizzile',\n      types: [TypesEnum.Water],\n      weightkg: 11.5,\n      classification: 'Water Lizard Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drizzile.mp3'\n    }\n  ],\n  [\n    'inteleon',\n    {\n      abilities: { first: 'torrent', hidden: 'sniper' },\n      baseStats: { hp: 70, atk: 85, def: 65, spa: 125, spd: 65, spe: 120 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 35,\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 818,\n      otherFormes: ['inteleongmax'],\n      prevo: 'drizzile',\n      species: 'inteleon',\n      types: [TypesEnum.Water],\n      weightkg: 45.2,\n      classification: 'Secret Agent Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/inteleon.mp3'\n    }\n  ],\n  [\n    'inteleongmax',\n    {\n      abilities: { first: 'torrent', hidden: 'sniper' },\n      baseSpecies: 'inteleon',\n      baseStats: { hp: 70, atk: 85, def: 65, spa: 125, spd: 65, spe: 120 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 35,\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 40,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 818,\n      otherFormes: ['inteleon'],\n      species: 'inteleon-gmax',\n      types: [TypesEnum.Water],\n      weightkg: 45.2,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/inteleon.mp3'\n    }\n  ],\n  [\n    'skwovet',\n    {\n      abilities: { first: 'cheekpouch', hidden: 'gluttony' },\n      baseStats: { hp: 70, atk: 55, def: 55, spa: 35, spd: 35, spe: 25 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['greedent'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 819,\n      species: 'skwovet',\n      types: [TypesEnum.Normal],\n      weightkg: 2.5,\n      classification: 'Cheeky Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skwovet.mp3'\n    }\n  ],\n  [\n    'greedent',\n    {\n      abilities: { first: 'cheekpouch', hidden: 'gluttony' },\n      baseStats: { hp: 120, atk: 95, def: 95, spa: 55, spd: 75, spe: 20 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 24,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 820,\n      prevo: 'skwovet',\n      species: 'greedent',\n      types: [TypesEnum.Normal],\n      weightkg: 6,\n      classification: 'Greedy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/greedent.mp3'\n    }\n  ],\n  [\n    'rookidee',\n    {\n      abilities: { first: 'keeneye', second: 'unnerve', hidden: 'bigpecks' },\n      baseStats: { hp: 38, atk: 47, def: 35, spa: 33, spd: 35, spe: 57 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['corvisquire'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 821,\n      species: 'rookidee',\n      types: [TypesEnum.Flying],\n      weightkg: 1.8,\n      classification: 'Tiny Bird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rookidee.mp3'\n    }\n  ],\n  [\n    'corvisquire',\n    {\n      abilities: { first: 'keeneye', second: 'unnerve', hidden: 'bigpecks' },\n      baseStats: { hp: 68, atk: 67, def: 55, spa: 43, spd: 55, spe: 77 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 18,\n      evos: ['corviknight'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 822,\n      prevo: 'rookidee',\n      species: 'corvisquire',\n      types: [TypesEnum.Flying],\n      weightkg: 16,\n      classification: 'Raven Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/corvisquire.mp3'\n    }\n  ],\n  [\n    'corviknight',\n    {\n      abilities: { first: 'pressure', second: 'unnerve', hidden: 'mirrorarmor' },\n      baseStats: { hp: 98, atk: 87, def: 105, spa: 53, spd: 85, spe: 67 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 823,\n      otherFormes: ['corviknightgmax'],\n      prevo: 'corvisquire',\n      species: 'corviknight',\n      types: [TypesEnum.Flying, TypesEnum.Steel],\n      weightkg: 75,\n      classification: 'Raven Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/corviknight.mp3'\n    }\n  ],\n  [\n    'corviknightgmax',\n    {\n      abilities: { first: 'pressure', second: 'unnerve', hidden: 'mirrorarmor' },\n      baseSpecies: 'corviknight',\n      baseStats: { hp: 98, atk: 87, def: 105, spa: 53, spd: 85, spe: 67 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 14,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 823,\n      otherFormes: ['corviknight'],\n      species: 'corviknight-gmax',\n      types: [TypesEnum.Flying, TypesEnum.Steel],\n      weightkg: 350,\n      aliases: ['gigantamax corviknight'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/corviknight.mp3'\n    }\n  ],\n  [\n    'blipbug',\n    {\n      abilities: { first: 'swarm', second: 'compoundeyes', hidden: 'telepathy' },\n      baseStats: { hp: 25, atk: 20, def: 20, spa: 25, spd: 45, spe: 45 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['dottler'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 824,\n      species: 'blipbug',\n      types: [TypesEnum.Bug],\n      weightkg: 8,\n      classification: 'Larva Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/blipbug.mp3'\n    }\n  ],\n  [\n    'dottler',\n    {\n      abilities: { first: 'swarm', second: 'compoundeyes', hidden: 'telepathy' },\n      baseStats: { hp: 50, atk: 35, def: 80, spa: 50, spd: 90, spe: 30 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 10,\n      evos: ['orbeetle'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 825,\n      prevo: 'blipbug',\n      species: 'dottler',\n      types: [TypesEnum.Bug, TypesEnum.Psychic],\n      weightkg: 19.5,\n      classification: 'Radome Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dottler.mp3'\n    }\n  ],\n  [\n    'orbeetle',\n    {\n      abilities: { first: 'swarm', second: 'frisk', hidden: 'telepathy' },\n      baseStats: { hp: 60, atk: 45, def: 110, spa: 80, spd: 120, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 826,\n      otherFormes: ['orbeetlegmax'],\n      prevo: 'dottler',\n      species: 'orbeetle',\n      types: [TypesEnum.Bug, TypesEnum.Psychic],\n      weightkg: 40.8,\n      classification: 'Seven Spot Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/orbeetle.mp3'\n    }\n  ],\n  [\n    'orbeetlegmax',\n    {\n      abilities: { first: 'swarm', second: 'frisk', hidden: 'telepathy' },\n      baseSpecies: 'orbeetle',\n      baseStats: { hp: 60, atk: 45, def: 110, spa: 80, spd: 120, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 14,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 826,\n      otherFormes: ['orbeetle'],\n      species: 'orbeetle-gmax',\n      types: [TypesEnum.Bug, TypesEnum.Psychic],\n      weightkg: 122.4,\n      aliases: ['gigantamax orbeetle'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/orbeetle.mp3'\n    }\n  ],\n  [\n    'nickit',\n    {\n      abilities: { first: 'runaway', second: 'unburden', hidden: 'stakeout' },\n      baseStats: { hp: 40, atk: 28, def: 28, spa: 47, spd: 52, spe: 50 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['thievul'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 827,\n      species: 'nickit',\n      types: [TypesEnum.Dark],\n      weightkg: 8.9,\n      classification: 'Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nickit.mp3'\n    }\n  ],\n  [\n    'thievul',\n    {\n      abilities: { first: 'runaway', second: 'unburden', hidden: 'stakeout' },\n      baseStats: { hp: 70, atk: 58, def: 58, spa: 87, spd: 92, spe: 90 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 18,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 3855,\n      num: 828,\n      prevo: 'nickit',\n      species: 'thievul',\n      types: [TypesEnum.Dark],\n      weightkg: 19.9,\n      classification: 'Fox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/thievul.mp3'\n    }\n  ],\n  [\n    'gossifleur',\n    {\n      abilities: {\n        first: 'cottondown',\n        second: 'regenerator',\n        hidden: 'effectspore'\n      },\n      baseStats: { hp: 40, atk: 40, def: 60, spa: 40, spd: 60, spe: 10 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      evos: ['eldegoss'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 829,\n      species: 'gossifleur',\n      types: [TypesEnum.Grass],\n      weightkg: 2.2,\n      classification: 'Flowering Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gossifleur.mp3'\n    }\n  ],\n  [\n    'eldegoss',\n    {\n      abilities: {\n        first: 'cottondown',\n        second: 'regenerator',\n        hidden: 'effectspore'\n      },\n      baseStats: { hp: 60, atk: 50, def: 90, spa: 80, spd: 120, spe: 60 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 830,\n      prevo: 'gossifleur',\n      species: 'eldegoss',\n      types: [TypesEnum.Grass],\n      weightkg: 2.5,\n      classification: 'Cotton Bloom Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eldegoss.mp3'\n    }\n  ],\n  [\n    'wooloo',\n    {\n      abilities: { first: 'fluffy', second: 'runaway', hidden: 'bulletproof' },\n      baseStats: { hp: 42, atk: 40, def: 55, spa: 40, spd: 45, spe: 48 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['dubwool'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 831,\n      species: 'wooloo',\n      types: [TypesEnum.Normal],\n      weightkg: 6,\n      classification: 'Sheep Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wooloo.mp3'\n    }\n  ],\n  [\n    'dubwool',\n    {\n      abilities: { first: 'fluffy', second: 'steadfast', hidden: 'bulletproof' },\n      baseStats: { hp: 72, atk: 80, def: 100, spa: 60, spd: 90, spe: 88 },\n      catchRate: { base: 127, percentageWithOrdinaryPokeballAtFullHealth: '26%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 24,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 832,\n      prevo: 'wooloo',\n      species: 'dubwool',\n      types: [TypesEnum.Normal],\n      weightkg: 43,\n      classification: 'Sheep Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dubwool.mp3'\n    }\n  ],\n  [\n    'chewtle',\n    {\n      abilities: { first: 'strongjaw', second: 'shellarmor', hidden: 'swiftswim' },\n      baseStats: { hp: 50, atk: 64, def: 50, spa: 38, spd: 38, spe: 44 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['drednaw'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 833,\n      species: 'chewtle',\n      types: [TypesEnum.Water],\n      weightkg: 8.5,\n      classification: 'Snapping Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chewtle.mp3'\n    }\n  ],\n  [\n    'drednaw',\n    {\n      abilities: { first: 'strongjaw', second: 'shellarmor', hidden: 'swiftswim' },\n      baseStats: { hp: 90, atk: 115, def: 90, spa: 48, spd: 68, spe: 74 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 22,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 834,\n      otherFormes: ['drednawgmax'],\n      prevo: 'chewtle',\n      species: 'drednaw',\n      types: [TypesEnum.Water, TypesEnum.Rock],\n      weightkg: 115.5,\n      classification: 'Bite Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drednaw.mp3'\n    }\n  ],\n  [\n    'drednawgmax',\n    {\n      abilities: { first: 'strongjaw', second: 'shellarmor', hidden: 'swiftswim' },\n      baseSpecies: 'drednaw',\n      baseStats: { hp: 90, atk: 115, def: 90, spa: 48, spd: 68, spe: 74 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Monster', 'Water 1'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 24,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 834,\n      otherFormes: ['drednaw'],\n      species: 'drednaw-gmax',\n      types: [TypesEnum.Water, TypesEnum.Rock],\n      weightkg: 346.5,\n      aliases: ['gigantamax drednaw'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drednaw.mp3'\n    }\n  ],\n  [\n    'yamper',\n    {\n      abilities: { first: 'ballfetch', hidden: 'rattled' },\n      baseStats: { hp: 59, atk: 45, def: 50, spa: 40, spd: 50, spe: 26 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['boltund'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 835,\n      species: 'yamper',\n      types: [TypesEnum.Electric],\n      weightkg: 13.5,\n      classification: 'Puppy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/yamper.mp3'\n    }\n  ],\n  [\n    'boltund',\n    {\n      abilities: { first: 'strongjaw', hidden: 'competitive' },\n      baseStats: { hp: 69, atk: 90, def: 60, spa: 90, spd: 60, spe: 121 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 25,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 836,\n      prevo: 'yamper',\n      species: 'boltund',\n      types: [TypesEnum.Electric],\n      weightkg: 34,\n      classification: 'Dog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/boltund.mp3'\n    }\n  ],\n  [\n    'rolycoly',\n    {\n      abilities: {\n        first: 'steamengine',\n        second: 'heatproof',\n        hidden: 'flashfire'\n      },\n      baseStats: { hp: 30, atk: 40, def: 50, spa: 40, spd: 50, spe: 30 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['carkol'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 837,\n      species: 'rolycoly',\n      types: [TypesEnum.Rock],\n      weightkg: 12,\n      classification: 'Coal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rolycoly.mp3'\n    }\n  ],\n  [\n    'carkol',\n    {\n      abilities: {\n        first: 'steamengine',\n        second: 'flamebody',\n        hidden: 'flashfire'\n      },\n      baseStats: { hp: 80, atk: 60, def: 90, spa: 60, spd: 70, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Black',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 18,\n      evos: ['coalossal'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 838,\n      prevo: 'rolycoly',\n      species: 'carkol',\n      types: [TypesEnum.Rock, TypesEnum.Fire],\n      weightkg: 78,\n      classification: 'Coal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/carkol.mp3'\n    }\n  ],\n  [\n    'coalossal',\n    {\n      abilities: {\n        first: 'steamengine',\n        second: 'flamebody',\n        hidden: 'flashfire'\n      },\n      baseStats: { hp: 110, atk: 80, def: 120, spa: 80, spd: 90, spe: 30 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 839,\n      otherFormes: ['coalossalgmax'],\n      prevo: 'carkol',\n      species: 'coalossal',\n      types: [TypesEnum.Rock, TypesEnum.Fire],\n      weightkg: 310.5,\n      classification: 'Coal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/coalossal.mp3'\n    }\n  ],\n  [\n    'coalossalgmax',\n    {\n      abilities: {\n        first: 'steamengine',\n        second: 'flamebody',\n        hidden: 'flashfire'\n      },\n      baseSpecies: 'coalossal',\n      baseStats: { hp: 110, atk: 80, def: 120, spa: 80, spd: 90, spe: 30 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Black',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 42,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 3855,\n      num: 839,\n      otherFormes: ['coalossal'],\n      species: 'coalossal-gmax',\n      types: [TypesEnum.Rock, TypesEnum.Fire],\n      weightkg: 930,\n      aliases: ['gigantamax coalossal'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/coalossal.mp3'\n    }\n  ],\n  [\n    'applin',\n    {\n      abilities: { first: 'ripen', second: 'gluttony', hidden: 'bulletproof' },\n      baseStats: { hp: 40, atk: 40, def: 80, spa: 40, spd: 40, spe: 20 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['flapple', 'appletun', 'dipplin'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 840,\n      species: 'applin',\n      types: [TypesEnum.Grass, TypesEnum.Dragon],\n      weightkg: 0.5,\n      classification: 'Apple Core Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/applin.mp3'\n    }\n  ],\n  [\n    'flapple',\n    {\n      abilities: { first: 'ripen', second: 'gluttony', hidden: 'hustle' },\n      baseStats: { hp: 70, atk: 110, def: 80, spa: 95, spd: 60, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Grass', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Tart Apple',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 841,\n      otherFormes: ['flapplegmax'],\n      prevo: 'applin',\n      species: 'flapple',\n      types: [TypesEnum.Grass, TypesEnum.Dragon],\n      weightkg: 1,\n      classification: 'Apple Wing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/flapple.mp3'\n    }\n  ],\n  [\n    'flapplegmax',\n    {\n      abilities: { first: 'ripen', second: 'gluttony', hidden: 'hustle' },\n      baseSpecies: 'flapple',\n      baseStats: { hp: 70, atk: 110, def: 80, spa: 95, spd: 60, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Grass', 'Dragon'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 24,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 841,\n      otherFormes: ['flapple'],\n      species: 'flapple-gmax',\n      types: [TypesEnum.Grass, TypesEnum.Dragon],\n      weightkg: 1,\n      aliases: ['gigantamax flapple'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/flapple.mp3'\n    }\n  ],\n  [\n    'appletun',\n    {\n      abilities: { first: 'ripen', second: 'gluttony', hidden: 'thickfat' },\n      baseStats: { hp: 110, atk: 85, def: 80, spa: 100, spd: 80, spe: 30 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Grass', 'Dragon'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Sweet Apple',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 842,\n      otherFormes: ['appletungmax'],\n      prevo: 'applin',\n      species: 'appletun',\n      types: [TypesEnum.Grass, TypesEnum.Dragon],\n      weightkg: 13,\n      classification: 'Apple Nectar Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/appletun.mp3'\n    }\n  ],\n  [\n    'appletungmax',\n    {\n      abilities: { first: 'ripen', second: 'gluttony', hidden: 'thickfat' },\n      baseSpecies: 'appletun',\n      baseStats: { hp: 110, atk: 85, def: 80, spa: 100, spd: 80, spe: 30 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Grass', 'Dragon'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Sweet Apple',\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 24,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 842,\n      otherFormes: ['appletun'],\n      prevo: 'applin',\n      species: 'appletun-gmax',\n      types: [TypesEnum.Grass, TypesEnum.Dragon],\n      weightkg: 40,\n      aliases: ['gigantamax appletun'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/appletun.mp3'\n    }\n  ],\n  [\n    'silicobra',\n    {\n      abilities: { first: 'sandspit', second: 'shedskin', hidden: 'sandveil' },\n      baseStats: { hp: 52, atk: 57, def: 75, spa: 35, spd: 50, spe: 46 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Field', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      evos: ['sandaconda'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 843,\n      species: 'silicobra',\n      types: [TypesEnum.Ground],\n      weightkg: 7.6,\n      classification: 'Sand Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/silicobra.mp3'\n    }\n  ],\n  [\n    'sandaconda',\n    {\n      abilities: { first: 'sandspit', second: 'shedskin', hidden: 'sandveil' },\n      baseStats: { hp: 72, atk: 107, def: 125, spa: 65, spd: 70, spe: 71 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Field', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 844,\n      otherFormes: ['sandacondagmax'],\n      prevo: 'silicobra',\n      species: 'sandaconda',\n      types: [TypesEnum.Ground],\n      weightkg: 65.5,\n      classification: 'Sand Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sandaconda.mp3'\n    }\n  ],\n  [\n    'sandacondagmax',\n    {\n      abilities: { first: 'sandspit', second: 'shedskin', hidden: 'sandveil' },\n      baseSpecies: 'sandaconda',\n      baseStats: { hp: 72, atk: 107, def: 125, spa: 65, spd: 70, spe: 71 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Field', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 36,\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 22,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 844,\n      otherFormes: ['sandaconda'],\n      prevo: 'silicobra',\n      species: 'sandaconda-gmax',\n      types: [TypesEnum.Ground],\n      weightkg: 197,\n      aliases: ['gigantamax sandaconda'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sandaconda.mp3'\n    }\n  ],\n  [\n    'cramorant',\n    {\n      abilities: { first: 'gulpmissile' },\n      baseStats: { hp: 70, atk: 85, def: 55, spa: 85, spd: 95, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 845,\n      otherFormes: ['cramorantgulping', 'cramorantgorging'],\n      species: 'cramorant',\n      types: [TypesEnum.Flying, TypesEnum.Water],\n      weightkg: 18,\n      classification: 'Gulp Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cramorant.mp3'\n    }\n  ],\n  [\n    'cramorantgulping',\n    {\n      abilities: { first: 'gulpmissile' },\n      baseSpecies: 'cramorant',\n      baseStats: { hp: 70, atk: 85, def: 55, spa: 85, spd: 95, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Gulping',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 845,\n      otherFormes: ['cramorant', 'cramorantgorging'],\n      species: 'cramorant-gulping',\n      types: [TypesEnum.Flying, TypesEnum.Water],\n      weightkg: 18,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cramorant-gulping.mp3'\n    }\n  ],\n  [\n    'cramorantgorging',\n    {\n      abilities: { first: 'gulpmissile' },\n      baseSpecies: 'cramorant',\n      baseStats: { hp: 70, atk: 85, def: 55, spa: 85, spd: 95, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Gorging',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 845,\n      otherFormes: ['cramorant', 'cramorantgulping'],\n      species: 'cramorant-gorging',\n      types: [TypesEnum.Flying, TypesEnum.Water],\n      weightkg: 18,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cramorant-gorging.mp3'\n    }\n  ],\n  [\n    'arrokuda',\n    {\n      abilities: { first: 'swiftswim', hidden: 'propellertail' },\n      baseStats: { hp: 41, atk: 63, def: 40, spa: 40, spd: 30, spe: 66 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['barraskewda'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 846,\n      species: 'arrokuda',\n      types: [TypesEnum.Water],\n      weightkg: 1,\n      classification: 'Rush Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arrokuda.mp3'\n    }\n  ],\n  [\n    'barraskewda',\n    {\n      abilities: { first: 'swiftswim', hidden: 'propellertail' },\n      baseStats: { hp: 61, atk: 123, def: 60, spa: 60, spd: 50, spe: 136 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Brown',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 26,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 847,\n      prevo: 'arrokuda',\n      species: 'barraskewda',\n      types: [TypesEnum.Water],\n      weightkg: 30,\n      classification: 'Skewer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/barraskewda.mp3'\n    }\n  ],\n  [\n    'toxel',\n    {\n      abilities: { first: 'rattled', second: 'static', hidden: 'klutz' },\n      baseStats: { hp: 40, atk: 38, def: 35, spa: 54, spd: 35, spe: 40 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['toxtricity', 'toxtricitylowkey'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 848,\n      species: 'toxel',\n      types: [TypesEnum.Electric, TypesEnum.Poison],\n      weightkg: 0.11,\n      classification: 'Baby Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toxel.mp3'\n    }\n  ],\n  [\n    'toxtricity',\n    {\n      abilities: { first: 'punkrock', second: 'plus', hidden: 'technician' },\n      baseForme: 'Amped',\n      baseStats: { hp: 75, atk: 98, def: 70, spa: 114, spd: 70, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: '30 while having a Adamant, Brave, Docile, Hardy, Hasty, Impish, Jolly, Lax, Naive, Naughty, Rash, Quirky, or Sassy Nature',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 849,\n      otherFormes: ['toxtricitygmax', 'toxtricitylowkey', 'toxtricitylowkeygmax'],\n      prevo: 'toxel',\n      species: 'toxtricity',\n      types: [TypesEnum.Electric, TypesEnum.Poison],\n      weightkg: 40,\n      aliases: ['toxtricitya', 'toxtricityamped'],\n      classification: 'Punk Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toxtricity.mp3'\n    }\n  ],\n  [\n    'toxtricitylowkey',\n    {\n      abilities: { first: 'punkrock', second: 'minus', hidden: 'technician' },\n      baseSpecies: 'toxtricity',\n      baseStats: { hp: 75, atk: 98, def: 70, spa: 114, spd: 70, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: '30 while having a Bashful, Bold, Calm, Careful, Gentle, Lonely, Mild, Modest, Quiet, Relaxed, Serious, or Timid Nature',\n      forme: 'Low-Key',\n      formeLetter: 'L',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 849,\n      otherFormes: ['toxtricity', 'toxtricitygmax', 'toxtricitylowkeygmax'],\n      prevo: 'toxel',\n      species: 'toxtricity-lowkey',\n      types: [TypesEnum.Electric, TypesEnum.Poison],\n      weightkg: 40,\n      aliases: ['toxtricityl', 'toxtricitylk'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toxtricity-lowkey.mp3'\n    }\n  ],\n  [\n    'toxtricitygmax',\n    {\n      abilities: { first: 'punkrock', second: 'plus', hidden: 'technician' },\n      baseSpecies: 'toxtricity',\n      baseStats: { hp: 75, atk: 98, def: 70, spa: 114, spd: 70, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 24,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 849,\n      otherFormes: ['toxtricity', 'toxtricitylowkey', 'toxtricitylowkeygmax'],\n      species: 'toxtricity-gmax',\n      types: [TypesEnum.Electric, TypesEnum.Poison],\n      weightkg: 140,\n      aliases: ['gigantamax toxtricity'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toxtricity.mp3'\n    }\n  ],\n  [\n    'toxtricitylowkeygmax',\n    {\n      abilities: { first: 'punkrock', second: 'minus', hidden: 'technician' },\n      baseSpecies: 'toxtricitylowkey',\n      baseStats: { hp: 75, atk: 98, def: 70, spa: 114, spd: 70, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: 'Low-Key-Gmax',\n      formeLetter: 'LKG',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 849,\n      otherFormes: ['toxtricity', 'toxtricitygmax', 'toxtricitylowkey'],\n      species: 'toxtricity-lowkey-gmax',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/ani/toxtricity-gmax.gif',\n      types: [TypesEnum.Electric, TypesEnum.Poison],\n      weightkg: 140,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toxtricity-lowkey.mp3'\n    }\n  ],\n  [\n    'sizzlipede',\n    {\n      abilities: { first: 'flashfire', second: 'whitesmoke', hidden: 'flamebody' },\n      baseStats: { hp: 50, atk: 65, def: 45, spa: 50, spd: 50, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['centiskorch'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 850,\n      species: 'sizzlipede',\n      types: [TypesEnum.Fire, TypesEnum.Bug],\n      weightkg: 1,\n      classification: 'Radiator Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sizzlipede.mp3'\n    }\n  ],\n  [\n    'centiskorch',\n    {\n      abilities: { first: 'flashfire', second: 'whitesmoke', hidden: 'flamebody' },\n      baseStats: { hp: 100, atk: 115, def: 65, spa: 90, spd: 90, spe: 65 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 28,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 851,\n      prevo: 'sizzlipede',\n      species: 'centiskorch',\n      types: [TypesEnum.Fire, TypesEnum.Bug],\n      weightkg: 120,\n      classification: 'Radiator Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/centiskorch.mp3'\n    }\n  ],\n  [\n    'centiskorchgmax',\n    {\n      abilities: { first: 'flashfire', second: 'whitesmoke', hidden: 'flamebody' },\n      baseSpecies: 'centiskorch',\n      baseStats: { hp: 100, atk: 15, def: 65, spa: 90, spd: 90, spe: 65 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Red',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 75,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 851,\n      species: 'centiskorch-gmax',\n      types: [TypesEnum.Fire, TypesEnum.Bug],\n      weightkg: 360,\n      aliases: ['gigantamax centiskorch'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/centiskorch.mp3'\n    }\n  ],\n  [\n    'clobbopus',\n    {\n      abilities: { first: 'limber', hidden: 'technician' },\n      baseStats: { hp: 50, atk: 68, def: 60, spa: 50, spd: 50, spe: 32 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Human-Like'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['grapploct'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 852,\n      species: 'clobbopus',\n      types: [TypesEnum.Fighting],\n      weightkg: 4,\n      classification: 'Tantrum Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/clobbopus.mp3'\n    }\n  ],\n  [\n    'grapploct',\n    {\n      abilities: { first: 'limber', hidden: 'technician' },\n      baseStats: { hp: 80, atk: 118, def: 90, spa: 70, spd: 80, spe: 42 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'level up while knowing Taunt',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 853,\n      prevo: 'clobbopus',\n      species: 'grapploct',\n      types: [TypesEnum.Fighting],\n      weightkg: 39,\n      classification: 'Jujitsu Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grapploct.mp3'\n    }\n  ],\n  [\n    'sinistea',\n    {\n      abilities: { first: 'weakarmor', hidden: 'cursedbody' },\n      baseForme: 'Phony',\n      baseStats: { hp: 40, atk: 45, def: 45, spa: 74, spd: 54, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['polteageist'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 854,\n      otherFormes: ['sinisteaantique'],\n      species: 'sinistea',\n      types: [TypesEnum.Ghost],\n      weightkg: 0.2,\n      classification: 'Black Tea Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sinistea.mp3'\n    }\n  ],\n  [\n    'sinisteaantique',\n    {\n      abilities: { first: 'weakarmor', hidden: 'cursedbody' },\n      baseSpecies: 'sinistea',\n      baseStats: { hp: 40, atk: 45, def: 45, spa: 74, spd: 54, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['polteageistantique'],\n      forme: 'antique',\n      formeLetter: 'A',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 854,\n      otherFormes: ['sinistea'],\n      species: 'sinistea-antique',\n      types: [TypesEnum.Ghost],\n      weightkg: 0.2,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sinistea.mp3'\n    }\n  ],\n  [\n    'polteageist',\n    {\n      abilities: { first: 'weakarmor', second: 'weakarmor', hidden: 'cursedbody' },\n      baseForme: 'Phony',\n      baseStats: { hp: 60, atk: 65, def: 65, spa: 134, spd: 114, spe: 70 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Cracked Pot',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 855,\n      otherFormes: ['polteageistantique'],\n      prevo: 'sinistea',\n      species: 'polteageist',\n      types: [TypesEnum.Ghost],\n      weightkg: 0.4,\n      classification: 'Black Tea Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/polteageist.mp3'\n    }\n  ],\n  [\n    'polteageistantique',\n    {\n      abilities: { first: 'weakarmor', second: 'weakarmor', hidden: 'cursedbody' },\n      baseSpecies: 'polteageist',\n      baseStats: { hp: 60, atk: 65, def: 65, spa: 134, spd: 114, spe: 70 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Purple',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Chipped Pot',\n      forme: 'antique',\n      formeLetter: 'A',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 855,\n      otherFormes: ['polteageist'],\n      prevo: 'sinisteaantique',\n      species: 'polteageist-antique',\n      types: [TypesEnum.Ghost],\n      weightkg: 0.4,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/polteageist.mp3'\n    }\n  ],\n  [\n    'hatenna',\n    {\n      abilities: {\n        first: 'healer',\n        second: 'anticipation',\n        hidden: 'magicbounce'\n      },\n      baseStats: { hp: 42, atk: 30, def: 45, spa: 56, spd: 53, spe: 39 },\n      catchRate: {\n        base: 235,\n        percentageWithOrdinaryPokeballAtFullHealth: '41.3%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['hattrem'],\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 856,\n      species: 'hatenna',\n      types: [TypesEnum.Psychic],\n      weightkg: 3.4,\n      classification: 'Calm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hatenna.mp3'\n    }\n  ],\n  [\n    'hattrem',\n    {\n      abilities: {\n        first: 'healer',\n        second: 'anticipation',\n        hidden: 'magicbounce'\n      },\n      baseStats: { hp: 57, atk: 40, def: 65, spa: 86, spd: 73, spe: 49 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 32,\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 857,\n      prevo: 'hatenna',\n      species: 'hattrem',\n      types: [TypesEnum.Psychic],\n      weightkg: 4.8,\n      classification: 'Serene Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hattrem.mp3'\n    }\n  ],\n  [\n    'hatterene',\n    {\n      abilities: {\n        first: 'healer',\n        second: 'anticipation',\n        hidden: 'magicbounce'\n      },\n      baseStats: { hp: 57, atk: 90, def: 95, spa: 136, spd: 103, spe: 29 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 42,\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 858,\n      prevo: 'hattrem',\n      species: 'hatterene',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 5.1,\n      classification: 'Silent Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hatterene.mp3'\n    }\n  ],\n  [\n    'hatterenegmax',\n    {\n      abilities: {\n        first: 'healer',\n        second: 'anticipation',\n        hidden: 'magicbounce'\n      },\n      baseSpecies: 'hatterene',\n      baseStats: { hp: 57, atk: 90, def: 95, spa: 136, spd: 103, spe: 29 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 42,\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 26,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 5140,\n      num: 858,\n      prevo: 'hattrem',\n      species: 'hatterene-gmax',\n      types: [TypesEnum.Psychic, TypesEnum.Fairy],\n      weightkg: 15.3,\n      aliases: ['gigantamax hatterene'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hatterene.mp3'\n    }\n  ],\n  [\n    'impidimp',\n    {\n      abilities: { first: 'prankster', second: 'frisk', hidden: 'pickpocket' },\n      baseStats: { hp: 45, atk: 45, def: 30, spa: 55, spd: 40, spe: 50 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['morgrem'],\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 859,\n      species: 'impidimp',\n      types: [TypesEnum.Dark, TypesEnum.Fairy],\n      weightkg: 5.5,\n      classification: 'Wily Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/impidimp.mp3'\n    }\n  ],\n  [\n    'morgrem',\n    {\n      abilities: { first: 'prankster', second: 'frisk', hidden: 'pickpocket' },\n      baseStats: { hp: 65, atk: 60, def: 45, spa: 75, spd: 55, spe: 70 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy', 'Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 32,\n      evos: ['grimmsnarl'],\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 860,\n      prevo: 'impidimp',\n      species: 'morgrem',\n      types: [TypesEnum.Dark, TypesEnum.Fairy],\n      weightkg: 12.5,\n      classification: 'Devious Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/morgrem.mp3'\n    }\n  ],\n  [\n    'grimmsnarl',\n    {\n      abilities: { first: 'prankster', second: 'frisk', hidden: 'pickpocket' },\n      baseStats: { hp: 95, atk: 120, def: 65, spa: 95, spd: 75, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Fairy', 'Human-Like'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 42,\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 861,\n      otherFormes: ['grimmsnarlgmax'],\n      prevo: 'morgrem',\n      species: 'grimmsnarl',\n      types: [TypesEnum.Dark, TypesEnum.Fairy],\n      weightkg: 61,\n      classification: 'Bulk Up Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grimmsnarl.mp3'\n    }\n  ],\n  [\n    'grimmsnarlgmax',\n    {\n      abilities: { first: 'prankster', second: 'frisk', hidden: 'pickpocket' },\n      baseSpecies: 'grimmsnarl',\n      baseStats: { hp: 95, atk: 120, def: 65, spa: 95, spd: 75, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Fairy', 'Human-Like'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 42,\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 32,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 861,\n      otherFormes: ['grimmsnarl'],\n      prevo: 'morgrem',\n      species: 'grimmsnarl-gmax',\n      types: [TypesEnum.Dark, TypesEnum.Fairy],\n      weightkg: 183,\n      aliases: ['gigantamax grimmsnarl'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grimmsnarl.mp3'\n    }\n  ],\n  [\n    'obstagoon',\n    {\n      abilities: { first: 'reckless', second: 'guts', hidden: 'defiant' },\n      baseStats: { hp: 93, atk: 90, def: 101, spa: 60, spd: 81, spe: 95 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'level 35 at night',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 862,\n      prevo: 'linoonegalar',\n      species: 'obstagoon',\n      types: [TypesEnum.Dark, TypesEnum.Normal],\n      weightkg: 46,\n      aliases: ['goon'],\n      classification: 'Blocking Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/obstagoon.mp3'\n    }\n  ],\n  [\n    'perrserker',\n    {\n      abilities: {\n        first: 'battlearmor',\n        second: 'toughclaws',\n        hidden: 'steelyspirit'\n      },\n      baseStats: { hp: 70, atk: 110, def: 100, spa: 50, spd: 60, spe: 50 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 863,\n      prevo: 'meowthgalar',\n      species: 'perrserker',\n      types: [TypesEnum.Steel],\n      weightkg: 28,\n      classification: 'Viking Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/perrserker.mp3'\n    }\n  ],\n  [\n    'cursola',\n    {\n      abilities: { first: 'weakarmor', hidden: 'perishbody' },\n      baseStats: { hp: 60, atk: 95, def: 50, spa: 145, spd: 130, spe: 30 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'White',\n      eggGroups: ['Water 1', 'Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 38,\n      genderRatio: { male: '25%', female: '75%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 864,\n      prevo: 'corsolagalar',\n      species: 'cursola',\n      types: [TypesEnum.Ghost],\n      weightkg: 0.4,\n      classification: 'Coral Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cursola.mp3'\n    }\n  ],\n  [\n    'sirfetchd',\n    {\n      abilities: { first: 'steadfast', hidden: 'scrappy' },\n      baseStats: { hp: 62, atk: 135, def: 95, spa: 68, spd: 82, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Flying', 'Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Land 3 critical hits in 1 battle',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 865,\n      prevo: 'farfetchdgalar',\n      species: \"sirfetch'd\",\n      types: [TypesEnum.Fighting],\n      weightkg: 117,\n      classification: 'Wild Duck Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sirfetchd.mp3'\n    }\n  ],\n  [\n    'mrrime',\n    {\n      abilities: {\n        first: 'tangledfeet',\n        second: 'screencleaner',\n        hidden: 'icebody'\n      },\n      baseStats: { hp: 80, atk: 85, def: 75, spa: 110, spd: 100, spe: 70 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Purple',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 42,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 866,\n      prevo: 'mrmimegalar',\n      species: 'Mr. Rime',\n      specialBulbapediaUrl: 'Mr._Rime',\n      types: [TypesEnum.Ice, TypesEnum.Psychic],\n      weightkg: 58.2,\n      aliases: ['rime'],\n      classification: 'Comedian Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mrrime.mp3'\n    }\n  ],\n  [\n    'runerigus',\n    {\n      abilities: {\n        first: 'wanderingspirit',\n        second: 'wanderingspirit',\n        hidden: 'wanderingspirit'\n      },\n      baseStats: { hp: 58, atk: 95, def: 145, spa: 50, spd: 105, spe: 30 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Gray',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'have 49+ damage on Yamask and walk under stone sculpture in Dusty Bowl Wild Area',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 867,\n      prevo: 'yamaskgalar',\n      species: 'runerigus',\n      types: [TypesEnum.Ground, TypesEnum.Ghost],\n      weightkg: 66.6,\n      classification: 'Grudge Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/runerigus.mp3'\n    }\n  ],\n  [\n    'milcery',\n    {\n      abilities: { first: 'sweetveil', hidden: 'aromaveil' },\n      baseStats: { hp: 45, atk: 40, def: 40, spa: 50, spd: 61, spe: 34 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'White',\n      eggGroups: ['Fairy', 'Amorphous'],\n      evos: ['alcremie'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 868,\n      species: 'milcery',\n      types: [TypesEnum.Fairy],\n      weightkg: 0.3,\n      classification: 'Cream Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/milcery.mp3'\n    }\n  ],\n  [\n    'alcremie',\n    {\n      abilities: { first: 'sweetveil', second: 'sweetveil', hidden: 'aromaveil' },\n      baseForme: 'Vanilla Cream',\n      baseStats: { hp: 65, atk: 60, def: 75, spa: 110, spd: 121, spe: 64 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'White',\n      cosmeticFormes: [\n        'Alcremie-Ruby-Cream',\n        'Alcremie-Matcha-Cream',\n        'Alcremie-Mint-Cream',\n        'Alcremie-Lemon-Cream',\n        'Alcremie-Salted-Cream',\n        'Alcremie-Ruby-Swirl',\n        'Alcremie-Caramel-Swirl',\n        'Alcremie-Rainbow-Swirl'\n      ],\n      eggGroups: ['Fairy', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 'Spin the joystick while Milcery is holding a sweet.',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 869,\n      prevo: 'milcery',\n      species: 'alcremie',\n      types: [TypesEnum.Fairy],\n      weightkg: 0.5,\n      aliases: [\n        'alcremiecaramelswirl',\n        'alcremielemoncream',\n        'alcremiematchacream',\n        'alcremiemintcream',\n        'alcremierainbowswirl',\n        'alcremierubycream',\n        'alcremierubyswirl',\n        'alcremiesaltedcream'\n      ],\n      classification: 'Cream Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/alcremie.mp3'\n    }\n  ],\n  [\n    'alcremiegmax',\n    {\n      abilities: { first: 'sweetveil', hidden: 'aromaveil' },\n      baseSpecies: 'alcremie',\n      baseStats: { hp: 65, atk: 60, def: 75, spa: 110, spd: 121, spe: 64 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'White',\n      eggGroups: ['Fairy', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 30,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 869,\n      species: 'alcremie-gmax',\n      types: [TypesEnum.Fairy],\n      weightkg: 3,\n      aliases: ['gigantamax alcremie'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/alcremie.mp3'\n    }\n  ],\n  [\n    'falinks',\n    {\n      abilities: { first: 'battlearmor', hidden: 'defiant' },\n      baseStats: { hp: 65, atk: 100, def: 100, spa: 70, spd: 60, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Fairy', 'Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 870,\n      species: 'falinks',\n      otherFormes: ['falinksmega'],\n      types: [TypesEnum.Fighting],\n      weightkg: 62,\n      classification: 'Formation Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/falinks.mp3'\n    }\n  ],\n  [\n    'falinksmega',\n    {\n      abilities: { first: 'battlearmor', hidden: 'defiant' },\n      baseStats: { hp: 65, atk: 135, def: 135, spa: 70, spd: 65, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      baseSpecies: 'falinks',\n      eggGroups: ['Fairy', 'Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 1, spe: 0 },\n      forme: 'Mega',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 870,\n      otherFormes: ['falinks'],\n      species: 'falinks-mega',\n      types: [TypesEnum.Fighting],\n      weightkg: 99,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/falinks.mp3'\n    }\n  ],\n  [\n    'pincurchin',\n    {\n      abilities: { first: 'lightningrod', hidden: 'electricsurge' },\n      baseStats: { hp: 48, atk: 101, def: 95, spa: 91, spd: 85, spe: 15 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Purple',\n      eggGroups: ['Water 1', 'Amorphous'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 871,\n      species: 'pincurchin',\n      types: [TypesEnum.Electric],\n      weightkg: 1,\n      classification: 'Sea Urchin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pincurchin.mp3'\n    }\n  ],\n  [\n    'snom',\n    {\n      abilities: { first: 'shielddust', hidden: 'icescales' },\n      baseStats: { hp: 30, atk: 25, def: 35, spa: 45, spd: 30, spe: 20 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['frosmoth'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 872,\n      species: 'snom',\n      types: [TypesEnum.Ice, TypesEnum.Bug],\n      weightkg: 3.8,\n      classification: 'Worm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/snom.mp3'\n    }\n  ],\n  [\n    'frosmoth',\n    {\n      abilities: { first: 'shielddust', hidden: 'icescales' },\n      baseStats: { hp: 70, atk: 65, def: 60, spa: 125, spd: 90, spe: 65 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'White',\n      eggGroups: ['Bug'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'Level up during Nighttime with happiness of at least 220',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 873,\n      prevo: 'snom',\n      species: 'frosmoth',\n      types: [TypesEnum.Ice, TypesEnum.Bug],\n      weightkg: 42,\n      classification: 'Frost Moth Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/frosmoth.mp3'\n    }\n  ],\n  [\n    'stonjourner',\n    {\n      abilities: { first: 'powerspot' },\n      baseStats: { hp: 100, atk: 125, def: 135, spa: 20, spd: 20, spe: 70 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 874,\n      species: 'stonjourner',\n      types: [TypesEnum.Rock],\n      weightkg: 520,\n      classification: 'Big Rock Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/stonjourner.mp3'\n    }\n  ],\n  [\n    'eiscue',\n    {\n      abilities: { first: 'iceface' },\n      baseStats: { hp: 75, atk: 80, def: 110, spa: 65, spd: 90, spe: 50 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 875,\n      otherFormes: ['eiscuenoice'],\n      species: 'eiscue',\n      types: [TypesEnum.Ice],\n      weightkg: 89,\n      classification: 'Penguin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eiscue.mp3'\n    }\n  ],\n  [\n    'eiscuenoice',\n    {\n      abilities: { first: 'iceface' },\n      baseSpecies: 'eiscue',\n      baseStats: { hp: 75, atk: 80, def: 110, spa: 65, spd: 90, spe: 130 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Blue',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      forme: 'noice',\n      formeLetter: 'N',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 6425,\n      num: 875,\n      otherFormes: ['eiscue'],\n      species: 'eiscue-noice',\n      types: [TypesEnum.Ice],\n      weightkg: 89,\n      aliases: ['eiscuen'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eiscue-noice.mp3'\n    }\n  ],\n  [\n    'indeedee',\n    {\n      abilities: {\n        first: 'innerfocus',\n        second: 'synchronize',\n        hidden: 'psychicsurge'\n      },\n      baseStats: { hp: 60, atk: 65, def: 55, spa: 105, spd: 95, spe: 95 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Purple',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: 'male',\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 10280,\n      num: 876,\n      species: 'indeedee',\n      types: [TypesEnum.Psychic, TypesEnum.Normal],\n      weightkg: 28,\n      classification: 'Emotion Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/indeedee.mp3'\n    }\n  ],\n  [\n    'indeedeef',\n    {\n      abilities: {\n        first: 'owntempo',\n        second: 'synchronize',\n        hidden: 'psychicsurge'\n      },\n      baseSpecies: 'indeedee',\n      baseStats: { hp: 70, atk: 55, def: 65, spa: 95, spd: 105, spe: 85 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Purple',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      forme: 'female',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 10280,\n      num: 876,\n      species: 'indeedee-f',\n      types: [TypesEnum.Psychic, TypesEnum.Normal],\n      weightkg: 28,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/indeedee-f.mp3'\n    }\n  ],\n  [\n    'morpeko',\n    {\n      abilities: { first: 'hungerswitch' },\n      baseStats: { hp: 58, atk: 95, def: 58, spa: 70, spd: 58, spe: 97 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 877,\n      otherFormes: ['morpekohangry'],\n      species: 'morpeko',\n      types: [TypesEnum.Electric, TypesEnum.Dark],\n      weightkg: 3,\n      classification: 'Two-Sided Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/morpeko.mp3'\n    }\n  ],\n  [\n    'morpekohangry',\n    {\n      abilities: { first: 'hungerswitch' },\n      baseSpecies: 'morpeko',\n      baseStats: { hp: 58, atk: 95, def: 58, spa: 70, spd: 58, spe: 97 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Purple',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      forme: 'Hangry',\n      formeLetter: 'H',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 2570,\n      num: 877,\n      otherFormes: ['morpeko'],\n      species: 'morpeko-hangry',\n      types: [TypesEnum.Electric, TypesEnum.Dark],\n      weightkg: 3,\n      aliases: ['morpekoh'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/morpeko-hangry.mp3'\n    }\n  ],\n  [\n    'cufant',\n    {\n      abilities: { first: 'sheerforce', hidden: 'heavymetal' },\n      baseStats: { hp: 72, atk: 80, def: 49, spa: 40, spd: 49, spe: 40 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field', 'Mineral'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['copperajah'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 878,\n      species: 'cufant',\n      types: [TypesEnum.Steel],\n      weightkg: 100,\n      classification: 'Copperderm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cufant.mp3'\n    }\n  ],\n  [\n    'copperajah',\n    {\n      abilities: { first: 'sheerforce', hidden: 'heavymetal' },\n      baseStats: { hp: 122, atk: 130, def: 69, spa: 80, spd: 69, spe: 30 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 34,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 879,\n      prevo: 'cufant',\n      species: 'copperajah',\n      types: [TypesEnum.Steel],\n      weightkg: 650,\n      classification: 'Copperderm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/copperajah.mp3'\n    }\n  ],\n  [\n    'copperajahgmax',\n    {\n      abilities: { first: 'sheerforce', hidden: 'heavymetal' },\n      baseSpecies: 'copperajah',\n      baseStats: { hp: 122, atk: 130, def: 69, spa: 80, spd: 69, spe: 30 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 23,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 6425,\n      num: 879,\n      species: 'copperajah-gmax',\n      types: [TypesEnum.Steel],\n      weightkg: 1950,\n      aliases: ['gigantamax copperajah'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/copperajah.mp3'\n    }\n  ],\n  [\n    'dracozolt',\n    {\n      abilities: { first: 'voltabsorb', second: 'hustle', hidden: 'sandrush' },\n      baseStats: { hp: 90, atk: 100, def: 90, spa: 80, spd: 70, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 880,\n      species: 'dracozolt',\n      types: [TypesEnum.Electric, TypesEnum.Dragon],\n      weightkg: 190,\n      classification: 'Fossil Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dracozolt.mp3'\n    }\n  ],\n  [\n    'arctozolt',\n    {\n      abilities: { first: 'voltabsorb', second: 'static', hidden: 'slushrush' },\n      baseStats: { hp: 90, atk: 100, def: 90, spa: 90, spd: 80, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 881,\n      species: 'arctozolt',\n      types: [TypesEnum.Electric, TypesEnum.Ice],\n      weightkg: 150,\n      classification: 'Fossil Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arctozolt.mp3'\n    }\n  ],\n  [\n    'dracovish',\n    {\n      abilities: { first: 'waterabsorb', second: 'strongjaw', hidden: 'sandrush' },\n      baseStats: { hp: 90, atk: 90, def: 100, spa: 70, spd: 80, spe: 75 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 882,\n      species: 'dracovish',\n      types: [TypesEnum.Water, TypesEnum.Dragon],\n      weightkg: 215,\n      classification: 'Fossil Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dracovish.mp3'\n    }\n  ],\n  [\n    'arctovish',\n    {\n      abilities: { first: 'waterabsorb', second: 'icebody', hidden: 'slushrush' },\n      baseStats: { hp: 90, atk: 90, def: 100, spa: 80, spd: 90, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 883,\n      species: 'arctovish',\n      types: [TypesEnum.Water, TypesEnum.Ice],\n      weightkg: 175,\n      classification: 'Fossil Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arctovish.mp3'\n    }\n  ],\n  [\n    'duraludon',\n    {\n      abilities: { first: 'lightmetal', second: 'heavymetal', hidden: 'stalwart' },\n      baseStats: { hp: 70, atk: 95, def: 115, spa: 120, spd: 50, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Mineral', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 884,\n      species: 'duraludon',\n      types: [TypesEnum.Steel, TypesEnum.Dragon],\n      weightkg: 40,\n      classification: 'Alloy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/duraludon.mp3'\n    }\n  ],\n  [\n    'duraludongmax',\n    {\n      abilities: { first: 'lightmetal', second: 'heavymetal', hidden: 'stalwart' },\n      baseSpecies: 'duraludon',\n      baseStats: { hp: 70, atk: 95, def: 115, spa: 120, spd: 50, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'White',\n      eggGroups: ['Mineral', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 43,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 7710,\n      num: 884,\n      species: 'duraludon-gmax',\n      types: [TypesEnum.Steel, TypesEnum.Dragon],\n      weightkg: 120,\n      aliases: ['gigantamax duraludon'],\n      cry: 'https://play.pokemonshowdown.com/audio/cries/duraludon.mp3'\n    }\n  ],\n  [\n    'dreepy',\n    {\n      abilities: {\n        first: 'clearbody',\n        second: 'infiltrator',\n        hidden: 'cursedbody'\n      },\n      baseStats: { hp: 28, atk: 60, def: 30, spa: 40, spd: 30, spe: 82 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Amorphous', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      evos: ['drakloak'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 885,\n      species: 'dreepy',\n      types: [TypesEnum.Dragon, TypesEnum.Ghost],\n      weightkg: 2,\n      classification: 'Lingering Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dreepy.mp3'\n    }\n  ],\n  [\n    'drakloak',\n    {\n      abilities: {\n        first: 'clearbody',\n        second: 'infiltrator',\n        hidden: 'cursedbody'\n      },\n      baseStats: { hp: 68, atk: 80, def: 50, spa: 60, spd: 50, spe: 102 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Amorphous', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 50,\n      evos: ['dragapult'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 886,\n      prevo: 'dreepy',\n      species: 'drakloak',\n      types: [TypesEnum.Dragon, TypesEnum.Ghost],\n      weightkg: 11,\n      classification: 'Caretaker Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/drakloak.mp3'\n    }\n  ],\n  [\n    'dragapult',\n    {\n      abilities: {\n        first: 'clearbody',\n        second: 'infiltrator',\n        hidden: 'cursedbody'\n      },\n      baseStats: { hp: 88, atk: 120, def: 75, spa: 100, spd: 75, spe: 142 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Amorphous', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      evoLevel: 60,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 887,\n      prevo: 'drakloak',\n      species: 'dragapult',\n      types: [TypesEnum.Dragon, TypesEnum.Ghost],\n      weightkg: 50,\n      classification: 'Stealth Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dragapult.mp3'\n    }\n  ],\n  [\n    'zacian',\n    {\n      abilities: { first: 'intrepidsword' },\n      baseStats: { hp: 92, atk: 120, def: 115, spa: 80, spd: 115, spe: 138 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 888,\n      otherFormes: ['zaciancrowned'],\n      species: 'zacian',\n      types: [TypesEnum.Fairy],\n      weightkg: 110,\n      legendary: true,\n      classification: 'Warrior Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zacian.mp3'\n    }\n  ],\n  [\n    'zaciancrowned',\n    {\n      abilities: { first: 'intrepidsword' },\n      baseSpecies: 'zacian',\n      baseStats: { hp: 92, atk: 150, def: 115, spa: 80, spd: 115, spe: 148 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Crowned',\n      formeLetter: 'C',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 888,\n      otherFormes: ['zacian'],\n      species: 'zacian-crowned',\n      types: [TypesEnum.Fairy, TypesEnum.Steel],\n      weightkg: 355,\n      aliases: ['zacianc', 'zanianc'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zacian-crowned.mp3'\n    }\n  ],\n  [\n    'zamazenta',\n    {\n      abilities: { first: 'dauntlessshield' },\n      baseStats: { hp: 92, atk: 120, def: 115, spa: 80, spd: 115, spe: 138 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 889,\n      otherFormes: ['zamazentacrowned'],\n      species: 'zamazenta',\n      types: [TypesEnum.Fighting],\n      weightkg: 210,\n      legendary: true,\n      classification: 'Warrior Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zamazenta.mp3'\n    }\n  ],\n  [\n    'zamazentacrowned',\n    {\n      abilities: { first: 'dauntlessshield' },\n      baseSpecies: 'zamazenta',\n      baseStats: { hp: 92, atk: 120, def: 140, spa: 80, spd: 140, spe: 128 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      forme: 'Crowned',\n      formeLetter: 'C',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 889,\n      otherFormes: ['zamazenta'],\n      species: 'zamazenta-crowned',\n      types: [TypesEnum.Fighting, TypesEnum.Steel],\n      weightkg: 785,\n      aliases: ['zamazentac'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zamazenta-crowned.mp3'\n    }\n  ],\n  [\n    'eternatus',\n    {\n      abilities: { first: 'pressure' },\n      baseStats: { hp: 140, atk: 85, def: 95, spa: 145, spd: 95, spe: 130 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 20,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 890,\n      otherFormes: ['eternatuseternamax'],\n      species: 'eternatus',\n      types: [TypesEnum.Poison, TypesEnum.Dragon],\n      weightkg: 950,\n      legendary: true,\n      classification: 'Gigantic Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eternatus.mp3'\n    }\n  ],\n  [\n    'eternatuseternamax',\n    {\n      abilities: { first: 'pressure' },\n      baseSpecies: 'eternatus',\n      baseStats: { hp: 255, atk: 115, def: 250, spa: 125, spd: 250, spe: 130 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Eternamax',\n      formeLetter: 'E',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 100,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 890,\n      otherFormes: ['eternatus'],\n      species: 'eternatus-eternamax',\n      types: [TypesEnum.Poison, TypesEnum.Dragon],\n      weightkg: 950,\n      aliases: ['entermax enternatus', 'eternamax', 'gigantamax enternatus'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/eternatus-eternamax.mp3'\n    }\n  ],\n  [\n    'kubfu',\n    {\n      abilities: { first: 'innerfocus' },\n      baseStats: { hp: 60, atk: 90, def: 60, spa: 53, spd: 50, spe: 72 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      evos: ['urshifu', 'urshifurapidstrike'],\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 891,\n      species: 'kubfu',\n      types: [TypesEnum.Fighting],\n      weightkg: 12,\n      legendary: true,\n      classification: 'Wushu Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kubfu.mp3'\n    }\n  ],\n  [\n    'urshifu',\n    {\n      abilities: { first: 'unseenfist' },\n      baseStats: { hp: 100, atk: 130, def: 100, spa: 63, spd: 60, spe: 97 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Defeat the Single Strike Tower',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 892,\n      otherFormes: ['urshifurapidstrike', 'urshifugmax', 'urshifurapidstrikegmax'],\n      prevo: 'kubfu',\n      species: 'urshifu',\n      types: [TypesEnum.Fighting, TypesEnum.Dark],\n      weightkg: 105,\n      aliases: ['urshifusingle', 'urshifusinglestrike', 'urshifuss'],\n      legendary: true,\n      classification: 'Wushu Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/urshifu.mp3'\n    }\n  ],\n  [\n    'urshifurapidstrike',\n    {\n      abilities: { first: 'unseenfist' },\n      baseSpecies: 'urshifu',\n      baseStats: { hp: 100, atk: 130, def: 100, spa: 63, spd: 60, spe: 97 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Defeat the Rapid Strike Tower',\n      forme: 'Rapid-Strike',\n      formeLetter: 'RS',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 29,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 892,\n      otherFormes: ['urshifu', 'urshifugmax', 'urshifurapidstrikegmax'],\n      prevo: 'kubfu',\n      species: 'urshifu-rapidstrike',\n      types: [TypesEnum.Fighting, TypesEnum.Water],\n      weightkg: 105,\n      aliases: ['urshifurapid', 'urshifurs', 'watershifu'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/urshifu-rapidstrike.mp3'\n    }\n  ],\n  [\n    'urshifugmax',\n    {\n      abilities: { first: 'unseenfist' },\n      baseSpecies: 'urshifu',\n      baseStats: { hp: 100, atk: 130, def: 100, spa: 63, spd: 60, spe: 97 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Gmax',\n      formeLetter: 'G',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 29,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 892,\n      otherFormes: ['urshifu', 'urshifurapidstrike', 'urshifurapidstrikegmax'],\n      species: 'urshifu-gmax',\n      types: [TypesEnum.Fighting, TypesEnum.Dark],\n      weightkg: 105,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/urshifu.mp3'\n    }\n  ],\n  [\n    'urshifurapidstrikegmax',\n    {\n      abilities: { first: 'unseenfist' },\n      baseSpecies: 'urshifurapidstrike',\n      baseStats: { hp: 100, atk: 130, def: 100, spa: 63, spd: 60, spe: 97 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Rapid-Strike-Gmax',\n      formeLetter: 'RSG',\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 26,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 892,\n      otherFormes: ['urshifu', 'urshifugmax', 'urshifurapidstrike'],\n      species: 'urshifu-rapid-strike-gmax',\n      types: [TypesEnum.Fighting, TypesEnum.Water],\n      weightkg: 0,\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/urshifu-rapidstrike.mp3'\n    }\n  ],\n  [\n    'zarude',\n    {\n      abilities: { first: 'leafguard' },\n      baseStats: { hp: 105, atk: 120, def: 105, spa: 70, spd: 95, spe: 105 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 893,\n      otherFormes: ['zarudedada'],\n      species: 'zarude',\n      types: [TypesEnum.Dark, TypesEnum.Grass],\n      weightkg: 70,\n      mythical: true,\n      classification: 'Rogue Monkey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zarude.mp3'\n    }\n  ],\n  [\n    'zarudedada',\n    {\n      abilities: { first: 'leafguard' },\n      baseSpecies: 'zarude',\n      baseStats: { hp: 105, atk: 120, def: 105, spa: 70, spd: 95, spe: 105 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Dada',\n      formeLetter: 'D',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 893,\n      otherFormes: ['zarude'],\n      species: 'zarude-dada',\n      types: [TypesEnum.Dark, TypesEnum.Grass],\n      weightkg: 70,\n      mythical: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/zarude.mp3'\n    }\n  ],\n  [\n    'regieleki',\n    {\n      abilities: { first: 'transistor' },\n      baseStats: { hp: 80, atk: 100, def: 50, spa: 100, spd: 50, spe: 200 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 894,\n      species: 'regieleki',\n      types: [TypesEnum.Electric],\n      weightkg: 145,\n      legendary: true,\n      classification: 'Electron Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/regieleki.mp3'\n    }\n  ],\n  [\n    'regidrago',\n    {\n      abilities: { first: 'dragonsmaw' },\n      baseStats: { hp: 200, atk: 100, def: 50, spa: 100, spd: 50, spe: 80 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 895,\n      species: 'regidrago',\n      types: [TypesEnum.Dragon],\n      weightkg: 200,\n      legendary: true,\n      classification: 'Dragon Orb Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/regidrago.mp3'\n    }\n  ],\n  [\n    'glastrier',\n    {\n      abilities: { first: 'chillingneigh' },\n      baseStats: { hp: 100, atk: 145, def: 130, spa: 65, spd: 110, spe: 30 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 896,\n      species: 'glastrier',\n      types: [TypesEnum.Ice],\n      weightkg: 800,\n      legendary: true,\n      classification: 'Wild Horse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/glastrier.mp3',\n      respelling: 'GLASS-tree-er',\n      ipa: '/ˈɡlæstriːər/'\n    }\n  ],\n  [\n    'spectrier',\n    {\n      abilities: { first: 'grimneigh' },\n      baseStats: { hp: 100, atk: 65, def: 60, spa: 145, spd: 80, spe: 130 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 897,\n      species: 'spectrier',\n      types: [TypesEnum.Ghost],\n      weightkg: 44.5,\n      legendary: true,\n      classification: 'Swift Horse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spectrier.mp3'\n    }\n  ],\n  [\n    'calyrex',\n    {\n      abilities: { first: 'unnerve' },\n      baseStats: { hp: 100, atk: 80, def: 80, spa: 80, spd: 80, spe: 80 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 898,\n      otherFormes: ['calyrexice', 'calyrexshadow'],\n      species: 'calyrex',\n      types: [TypesEnum.Psychic, TypesEnum.Grass],\n      weightkg: 7.7,\n      legendary: true,\n      classification: 'King Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/calyrex.mp3'\n    }\n  ],\n  [\n    'calyrexice',\n    {\n      abilities: { first: 'asoneglastrier' },\n      baseSpecies: 'calyrex',\n      baseStats: { hp: 100, atk: 165, def: 150, spa: 85, spd: 130, spe: 50 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Ice',\n      formeLetter: 'CI',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 898,\n      otherFormes: ['calyrex', 'calyrexshadow'],\n      species: 'calyrex-ice',\n      types: [TypesEnum.Psychic, TypesEnum.Ice],\n      weightkg: 809.1,\n      aliases: ['calyrexice', 'calyrexir'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/calyrex-ice.mp3'\n    }\n  ],\n  [\n    'calyrexshadow',\n    {\n      abilities: { first: 'asonespectrier' },\n      baseSpecies: 'calyrex',\n      baseStats: { hp: 100, atk: 85, def: 80, spa: 165, spd: 100, spe: 150 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      forme: 'Shadow',\n      formeLetter: 'CS',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 898,\n      otherFormes: ['calyrex', 'calyrexice'],\n      species: 'calyrex-shadow',\n      types: [TypesEnum.Psychic, TypesEnum.Ghost],\n      weightkg: 53.6,\n      aliases: ['calyrexshadow', 'calyrexsr'],\n      legendary: true,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/calyrex-shadow.mp3'\n    }\n  ],\n  [\n    'wyrdeer',\n    {\n      abilities: { first: 'intimidate', second: 'frisk', hidden: 'sapsipper' },\n      baseStats: { hp: 103, atk: 105, def: 72, spa: 105, spd: 75, spe: 65 },\n      color: 'White',\n      eggGroups: ['Field'],\n      evoLevel: 'use Agile style Psyshield Bash 20 times',\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      num: 899,\n      prevo: 'stantler',\n      species: 'wyrdeer',\n      types: [TypesEnum.Normal, TypesEnum.Psychic],\n      weightkg: 95.1,\n      classification: 'Big Horn Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wyrdeer.mp3'\n    }\n  ],\n  [\n    'kleavor',\n    {\n      abilities: { first: 'swarm', second: 'sheerforce', hidden: 'sharpness' },\n      baseStats: { hp: 70, atk: 135, def: 95, spa: 45, spd: 70, spe: 85 },\n      color: 'Brown',\n      eggGroups: ['Bug'],\n      evoLevel: 'use Black Augurite',\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      num: 900,\n      prevo: 'scyther',\n      species: 'kleavor',\n      types: [TypesEnum.Bug, TypesEnum.Rock],\n      weightkg: 89,\n      classification: 'Axe Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kleavor.mp3'\n    }\n  ],\n  [\n    'ursaluna',\n    {\n      abilities: { first: 'guts', second: 'bulletproof', hidden: 'unnerve' },\n      baseStats: { hp: 130, atk: 140, def: 105, spa: 45, spd: 80, spe: 50 },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evoLevel: \"expose to Peat Block when there's a full moon\",\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.4,\n      isEggObtainable: false,\n      num: 901,\n      otherFormes: ['ursalunabloodmoon'],\n      prevo: 'ursaring',\n      species: 'ursaluna',\n      types: [TypesEnum.Ground, TypesEnum.Normal],\n      weightkg: 290,\n      classification: 'Peat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ursaluna.mp3'\n    }\n  ],\n  [\n    'ursalunabloodmoon',\n    {\n      abilities: { first: 'mindseye' },\n      baseSpecies: 'ursaluna',\n      baseStats: { hp: 113, atk: 70, def: 120, spa: 135, spd: 65, spe: 52 },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      forme: 'Bloodmoon',\n      formeLetter: 'B',\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 2.7,\n      isEggObtainable: false,\n      num: 901,\n      otherFormes: ['ursaluna'],\n      species: 'ursaluna-bloodmoon',\n      types: [TypesEnum.Ground, TypesEnum.Normal],\n      weightkg: 333,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ursaluna.mp3'\n    }\n  ],\n  [\n    'basculegion',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'adaptability',\n        hidden: 'moldbreaker'\n      },\n      baseStats: { hp: 120, atk: 112, def: 65, spa: 80, spd: 75, spe: 78 },\n      color: 'Green',\n      eggGroups: ['Water 2'],\n      evoLevel: 'Receive 294+ recoil without fainting',\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 3,\n      isEggObtainable: false,\n      num: 902,\n      otherFormes: ['basculegionf'],\n      prevo: 'basculinwhitestriped',\n      species: 'basculegion',\n      types: [TypesEnum.Water, TypesEnum.Ghost],\n      weightkg: 110,\n      classification: 'Big Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/basculegion.mp3'\n    }\n  ],\n  [\n    'basculegionf',\n    {\n      abilities: {\n        first: 'swiftswim',\n        second: 'adaptability',\n        hidden: 'moldbreaker'\n      },\n      baseSpecies: 'basculegion',\n      baseStats: { hp: 120, atk: 92, def: 65, spa: 100, spd: 75, spe: 78 },\n      color: 'Green',\n      eggGroups: ['Water 2'],\n      evoLevel: 'Receive 294+ recoil without fainting',\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Female',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 3,\n      isEggObtainable: false,\n      num: 902,\n      otherFormes: ['basculegion'],\n      prevo: 'basculinwhitestriped',\n      species: 'basculegion-f',\n      types: [TypesEnum.Water, TypesEnum.Ghost],\n      weightkg: 110,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/basculegion.mp3'\n    }\n  ],\n  [\n    'sneasler',\n    {\n      abilities: { first: 'pressure', second: 'unburden', hidden: 'poisontouch' },\n      baseStats: { hp: 80, atk: 130, def: 60, spa: 40, spd: 80, spe: 120 },\n      color: 'Purple',\n      eggGroups: ['Field'],\n      evoLevel: 'use Razor Claw during daytime',\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: false,\n      num: 903,\n      prevo: 'sneaselhisui',\n      species: 'sneasler',\n      types: [TypesEnum.Fighting, TypesEnum.Poison],\n      weightkg: 43,\n      classification: 'Free Climb Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sneasler.mp3'\n    }\n  ],\n  [\n    'overqwil',\n    {\n      abilities: {\n        first: 'poisonpoint',\n        second: 'swiftswim',\n        hidden: 'intimidate'\n      },\n      baseStats: { hp: 85, atk: 115, def: 95, spa: 65, spd: 65, spe: 85 },\n      color: 'Gray',\n      eggGroups: ['Water 2'],\n      evoLevel: 'use Strong style Barb Barrage 20 times',\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: false,\n      num: 904,\n      prevo: 'qwilfishhisui',\n      species: 'overqwil',\n      types: [TypesEnum.Dark, TypesEnum.Poison],\n      weightkg: 60.5,\n      classification: 'Pin Cluster Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/overqwil.mp3'\n    }\n  ],\n  [\n    'enamorus',\n    {\n      abilities: { first: 'cutecharm', hidden: 'contrary' },\n      baseStats: { hp: 74, atk: 115, def: 70, spa: 135, spd: 80, spe: 106 },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.6,\n      isEggObtainable: false,\n      num: 905,\n      otherFormes: ['enamorustherian'],\n      species: 'enamorus',\n      types: [TypesEnum.Fairy, TypesEnum.Flying],\n      weightkg: 48,\n      legendary: true,\n      classification: 'Love-Hate Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/enamorus.mp3'\n    }\n  ],\n  [\n    'enamorustherian',\n    {\n      abilities: { first: 'overcoat' },\n      baseStats: { hp: 74, atk: 115, def: 110, spa: 135, spd: 100, spe: 46 },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Therian',\n      formeLetter: 'T',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.6,\n      isEggObtainable: false,\n      num: 905,\n      otherFormes: ['enamorus'],\n      species: 'enamorus-therian',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/ani/enamorus-therian.gif',\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/enamorus-therian.gif',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/enamorus-therian.gif',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/enamorus-therian.gif',\n      types: [TypesEnum.Fairy, TypesEnum.Flying],\n      weightkg: 48,\n      legendary: true\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/gen9.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'sprigatito',\n    {\n      abilities: { first: 'overgrow', hidden: 'protean' },\n      baseStats: { hp: 40, atk: 61, def: 54, spa: 45, spd: 45, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evos: ['floragato'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 906,\n      species: 'sprigatito',\n      types: [TypesEnum.Grass],\n      weightkg: 4.1,\n      classification: 'Grass Cat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sprigatito.mp3'\n    }\n  ],\n  [\n    'floragato',\n    {\n      abilities: { first: 'overgrow', hidden: 'protean' },\n      baseStats: { hp: 61, atk: 80, def: 63, spa: 60, spd: 63, spe: 83 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evoLevel: 16,\n      evos: ['meowscarada'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 907,\n      prevo: 'sprigatito',\n      species: 'floragato',\n      types: [TypesEnum.Grass],\n      weightkg: 12.2,\n      classification: 'Grass Cat Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/floragato.mp3'\n    }\n  ],\n  [\n    'meowscarada',\n    {\n      abilities: { first: 'overgrow', hidden: 'protean' },\n      baseStats: { hp: 76, atk: 110, def: 70, spa: 81, spd: 70, spe: 123 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Field', 'Grass'],\n      evoLevel: 36,\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 908,\n      prevo: 'floragato',\n      species: 'meowscarada',\n      types: [TypesEnum.Grass, TypesEnum.Dark],\n      weightkg: 31.2,\n      classification: 'Magician Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/meowscarada.mp3'\n    }\n  ],\n  [\n    'fuecoco',\n    {\n      abilities: { first: 'blaze', hidden: 'unaware' },\n      baseStats: { hp: 67, atk: 45, def: 59, spa: 63, spd: 40, spe: 36 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evos: ['crocalor'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 909,\n      species: 'fuecoco',\n      types: [TypesEnum.Fire],\n      weightkg: 9.8,\n      classification: 'Fire Croc Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fuecoco.mp3'\n    }\n  ],\n  [\n    'crocalor',\n    {\n      abilities: { first: 'blaze', hidden: 'unaware' },\n      baseStats: { hp: 81, atk: 55, def: 78, spa: 90, spd: 58, spe: 49 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evoLevel: 16,\n      evos: ['skeledirge'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 910,\n      prevo: 'fuecoco',\n      species: 'crocalor',\n      types: [TypesEnum.Fire],\n      weightkg: 30.7,\n      classification: 'Fire Croc Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/crocalor.mp3'\n    }\n  ],\n  [\n    'skeledirge',\n    {\n      abilities: { first: 'blaze', hidden: 'unaware' },\n      aliases: ['LilChubbs v5'],\n      baseStats: { hp: 104, atk: 75, def: 100, spa: 110, spd: 75, spe: 66 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Red',\n      eggGroups: ['Field'],\n      evoLevel: 36,\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 911,\n      prevo: 'crocalor',\n      species: 'skeledirge',\n      types: [TypesEnum.Fire, TypesEnum.Ghost],\n      weightkg: 326.5,\n      classification: 'Singer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/skeledirge.mp3'\n    }\n  ],\n  [\n    'quaxly',\n    {\n      abilities: { first: 'torrent', hidden: 'moxie' },\n      baseStats: { hp: 55, atk: 65, def: 45, spa: 50, spd: 45, spe: 50 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Flying', 'Water 1'],\n      evos: ['quaxwell'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 1,\n      num: 912,\n      species: 'quaxly',\n      types: [TypesEnum.Water],\n      weightkg: 6.1,\n      classification: 'Duckling Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/quaxly.mp3'\n    }\n  ],\n  [\n    'quaxwell',\n    {\n      abilities: { first: 'torrent', hidden: 'moxie' },\n      baseStats: { hp: 70, atk: 85, def: 65, spa: 65, spd: 60, spe: 65 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Flying', 'Water 1'],\n      evoLevel: 16,\n      evos: ['quaquaval'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 1,\n      num: 913,\n      prevo: 'quaxly',\n      species: 'quaxwell',\n      types: [TypesEnum.Water],\n      weightkg: 21.5,\n      classification: 'Practicing Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/quaxwell.mp3'\n    }\n  ],\n  [\n    'quaquaval',\n    {\n      abilities: { first: 'torrent', hidden: 'moxie' },\n      baseStats: { hp: 85, atk: 120, def: 80, spa: 85, spd: 75, spe: 85 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Flying', 'Water 1'],\n      evoLevel: 36,\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '87.5%', female: '12.5%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 914,\n      prevo: 'quaxwell',\n      species: 'quaquaval',\n      types: [TypesEnum.Water, TypesEnum.Fighting],\n      weightkg: 61.9,\n      classification: 'Dancer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/quaquaval.mp3'\n    }\n  ],\n  [\n    'lechonk',\n    {\n      abilities: { first: 'aromaveil', second: 'gluttony', hidden: 'thickfat' },\n      baseStats: { hp: 54, atk: 45, def: 40, spa: 35, spd: 45, spe: 35 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evos: ['oinkologne', 'oinkolognef'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 915,\n      species: 'lechonk',\n      types: [TypesEnum.Normal],\n      weightkg: 10.2,\n      classification: 'Hog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lechonk.mp3'\n    }\n  ],\n  [\n    'oinkologne',\n    {\n      abilities: {\n        first: 'lingeringaroma',\n        second: 'gluttony',\n        hidden: 'thickfat'\n      },\n      baseForme: 'male',\n      baseStats: { hp: 110, atk: 100, def: 75, spa: 59, spd: 80, spe: 65 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evoLevel: 18,\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 916,\n      otherFormes: ['oinkolognef'],\n      prevo: 'lechonk',\n      species: 'oinkologne',\n      types: [TypesEnum.Normal],\n      weightkg: 120,\n      classification: 'Hog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/oinkologne.mp3'\n    }\n  ],\n  [\n    'oinkolognef',\n    {\n      abilities: { first: 'aromaveil', second: 'gluttony', hidden: 'thickfat' },\n      baseSpecies: 'oinkologne',\n      baseStats: { hp: 115, atk: 90, def: 70, spa: 59, spd: 90, spe: 65 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evoLevel: 18,\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'female',\n      formeLetter: 'F',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 916,\n      otherFormes: ['oinkologne'],\n      prevo: 'lechonk',\n      species: 'oinkologne-f',\n      types: [TypesEnum.Normal],\n      weightkg: 120,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/oinkologne-f.mp3'\n    }\n  ],\n  [\n    'tarountula',\n    {\n      abilities: { first: 'insomnia', hidden: 'stakeout' },\n      baseStats: { hp: 35, atk: 41, def: 45, spa: 29, spd: 40, spe: 20 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'White',\n      eggGroups: ['Bug'],\n      evos: ['spidops'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 917,\n      species: 'tarountula',\n      types: [TypesEnum.Bug],\n      weightkg: 4,\n      classification: 'String Ball Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tarountula.mp3'\n    }\n  ],\n  [\n    'spidops',\n    {\n      abilities: { first: 'insomnia', hidden: 'stakeout' },\n      baseStats: { hp: 60, atk: 79, def: 92, spa: 52, spd: 86, spe: 35 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evoLevel: 15,\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 918,\n      prevo: 'tarountula',\n      species: 'spidops',\n      types: [TypesEnum.Bug],\n      weightkg: 16.5,\n      classification: 'Trap Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/spidops.mp3'\n    }\n  ],\n  [\n    'nymble',\n    {\n      abilities: { first: 'swarm', hidden: 'tintedlens' },\n      baseStats: { hp: 33, atk: 46, def: 40, spa: 21, spd: 25, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Bug'],\n      evos: ['lokix'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 919,\n      species: 'nymble',\n      types: [TypesEnum.Bug],\n      weightkg: 1,\n      classification: 'Grasshopper Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nymble.mp3'\n    }\n  ],\n  [\n    'lokix',\n    {\n      abilities: { first: 'swarm', hidden: 'tintedlens' },\n      baseStats: { hp: 71, atk: 102, def: 78, spa: 52, spd: 55, spe: 92 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Gray',\n      eggGroups: ['Bug'],\n      evoLevel: 24,\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 920,\n      prevo: 'nymble',\n      species: 'lokix',\n      types: [TypesEnum.Bug, TypesEnum.Dark],\n      weightkg: 17.5,\n      classification: 'Grasshopper Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/lokix.mp3'\n    }\n  ],\n  [\n    'pawmi',\n    {\n      abilities: { first: 'static', second: 'naturalcure', hidden: 'ironfist' },\n      baseStats: { hp: 45, atk: 50, def: 20, spa: 40, spd: 25, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evos: ['pawmo'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 921,\n      species: 'pawmi',\n      types: [TypesEnum.Electric],\n      weightkg: 2.5,\n      classification: 'Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pawmi.mp3'\n    }\n  ],\n  [\n    'pawmo',\n    {\n      abilities: {\n        first: 'voltabsorb',\n        second: 'naturalcure',\n        hidden: 'ironfist'\n      },\n      baseStats: { hp: 60, atk: 75, def: 40, spa: 50, spd: 40, spe: 85 },\n      catchRate: { base: 80, percentageWithOrdinaryPokeballAtFullHealth: '18.4%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evos: ['pawmot'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 18,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 922,\n      prevo: 'pawmi',\n      species: 'pawmo',\n      types: [TypesEnum.Electric, TypesEnum.Fighting],\n      weightkg: 6.5,\n      classification: 'Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pawmo.mp3'\n    }\n  ],\n  [\n    'pawmot',\n    {\n      abilities: {\n        first: 'voltabsorb',\n        second: 'naturalcure',\n        hidden: 'ironfist'\n      },\n      baseStats: { hp: 70, atk: 115, def: 70, spa: 70, spd: 60, spe: 105 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: \"walk 1000 steps in Let's Go without returning to Poké Ball and level it up\",\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3855,\n      num: 923,\n      prevo: 'pawmo',\n      species: 'pawmot',\n      types: [TypesEnum.Electric, TypesEnum.Fighting],\n      weightkg: 41,\n      classification: 'Hands-On Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pawmot.mp3'\n    }\n  ],\n  [\n    'tandemaus',\n    {\n      abilities: { first: 'runaway', second: 'pickup', hidden: 'owntempo' },\n      baseStats: { hp: 50, atk: 50, def: 45, spa: 40, spd: 45, spe: 75 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'White',\n      eggGroups: ['Field', 'Fairy'],\n      evos: ['maushold', 'mausholdfour'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 924,\n      species: 'tandemaus',\n      types: [TypesEnum.Normal],\n      weightkg: 1.8,\n      classification: 'Couple Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tandemaus.mp3'\n    }\n  ],\n  [\n    'maushold',\n    {\n      abilities: {\n        first: 'friendguard',\n        second: 'cheekpouch',\n        hidden: 'technician'\n      },\n      baseForme: 'Family of Three',\n      baseStats: { hp: 74, atk: 75, def: 70, spa: 65, spd: 75, spe: 111 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'White',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 25,\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 925,\n      prevo: 'tandemaus',\n      otherFormes: ['mausholdfour'],\n      species: 'maushold',\n      types: [TypesEnum.Normal],\n      weightkg: 2.3,\n      classification: 'Family Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/maushold.mp3'\n    }\n  ],\n  [\n    'mausholdfour',\n    {\n      abilities: {\n        first: 'friendguard',\n        second: 'cheekpouch',\n        hidden: 'technician'\n      },\n      baseSpecies: 'maushold',\n      baseStats: { hp: 74, atk: 75, def: 70, spa: 65, spd: 75, spe: 111 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'White',\n      eggGroups: ['Field', 'Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 25,\n      forme: 'Family of Four',\n      formeLetter: 'F',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2570,\n      num: 925,\n      prevo: 'tandemaus',\n      otherFormes: ['maushold'],\n      species: 'maushold-four',\n      types: [TypesEnum.Normal],\n      weightkg: 2.8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/maushold-four.mp3'\n    }\n  ],\n  [\n    'fidough',\n    {\n      abilities: { first: 'owntempo', hidden: 'klutz' },\n      baseStats: { hp: 37, atk: 55, def: 70, spa: 30, spd: 55, spe: 65 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field', 'Mineral'],\n      evos: ['dachsbun'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 926,\n      species: 'fidough',\n      types: [TypesEnum.Fairy],\n      weightkg: 10.9,\n      classification: 'Puppy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fidough.mp3'\n    }\n  ],\n  [\n    'dachsbun',\n    {\n      abilities: { first: 'wellbakedbody', hidden: 'aromaveil' },\n      baseStats: { hp: 57, atk: 80, def: 115, spa: 50, spd: 80, spe: 95 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Field', 'Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 26,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 927,\n      prevo: 'fidough',\n      species: 'dachsbun',\n      types: [TypesEnum.Fairy],\n      weightkg: 14.9,\n      classification: 'Dog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dachsbun.mp3'\n    }\n  ],\n  [\n    'smoliv',\n    {\n      abilities: { first: 'earlybird', hidden: 'harvest' },\n      baseStats: { hp: 41, atk: 35, def: 45, spa: 58, spd: 51, spe: 30 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evos: ['dolliv'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 928,\n      species: 'smoliv',\n      types: [TypesEnum.Grass, TypesEnum.Normal],\n      weightkg: 6.5,\n      classification: 'Olive Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/smoliv.mp3'\n    }\n  ],\n  [\n    'dolliv',\n    {\n      abilities: { first: 'earlybird', hidden: 'harvest' },\n      baseStats: { hp: 52, atk: 53, def: 60, spa: 78, spd: 78, spe: 33 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evos: ['arboliva'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 25,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 929,\n      prevo: 'smoliv',\n      species: 'dolliv',\n      types: [TypesEnum.Grass, TypesEnum.Normal],\n      weightkg: 11.9,\n      classification: 'Olive Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dolliv.mp3'\n    }\n  ],\n  [\n    'arboliva',\n    {\n      abilities: { first: 'seedsower', hidden: 'harvest' },\n      baseStats: { hp: 78, atk: 69, def: 90, spa: 125, spd: 109, spe: 39 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      evoLevel: 35,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 930,\n      prevo: 'dolliv',\n      species: 'arboliva',\n      types: [TypesEnum.Grass, TypesEnum.Normal],\n      weightkg: 48.2,\n      classification: 'Olive Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arboliva.mp3'\n    }\n  ],\n  [\n    'squawkabilly',\n    {\n      abilities: { first: 'intimidate', second: 'hustle', hidden: 'guts' },\n      baseForme: 'Green',\n      baseStats: { hp: 82, atk: 96, def: 51, spa: 45, spd: 51, spe: 92 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 931,\n      otherFormes: ['squawkabillyblue', 'squawkabillyyellow', 'squawkabillywhite'],\n      species: 'squawkabilly',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 2.4,\n      classification: 'Parrot Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/squawkabilly.mp3'\n    }\n  ],\n  [\n    'squawkabillyblue',\n    {\n      abilities: { first: 'intimidate', second: 'hustle', hidden: 'guts' },\n      baseSpecies: 'squawkabilly',\n      baseStats: { hp: 82, atk: 96, def: 51, spa: 45, spd: 51, spe: 92 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Blue',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Blue',\n      formeLetter: 'B',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 931,\n      otherFormes: ['squawkabilly', 'squawkabillyyellow', 'squawkabillywhite'],\n      species: 'squawkabilly-blue',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 2.4,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/squawkabilly.mp3'\n    }\n  ],\n  [\n    'squawkabillyyellow',\n    {\n      abilities: { first: 'intimidate', second: 'hustle', hidden: 'sheerforce' },\n      baseSpecies: 'squawkabilly',\n      baseStats: { hp: 82, atk: 96, def: 51, spa: 45, spd: 51, spe: 92 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Yellow',\n      formeLetter: 'Y',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 931,\n      otherFormes: ['squawkabilly', 'squawkabillyblue', 'squawkabillywhite'],\n      species: 'squawkabilly-yellow',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 2.4,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/squawkabilly.mp3'\n    }\n  ],\n  [\n    'squawkabillywhite',\n    {\n      abilities: { first: 'intimidate', second: 'hustle', hidden: 'sheerforce' },\n      baseSpecies: 'squawkabilly',\n      baseStats: { hp: 82, atk: 96, def: 51, spa: 45, spd: 51, spe: 92 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'White',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'White',\n      formeLetter: 'W',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 3855,\n      num: 931,\n      otherFormes: ['squawkabilly', 'squawkabillyblue', 'squawkabillyyellow'],\n      species: 'squawkabilly-white',\n      types: [TypesEnum.Normal, TypesEnum.Flying],\n      weightkg: 2.4,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/squawkabilly.mp3'\n    }\n  ],\n  [\n    'nacli',\n    {\n      abilities: { first: 'purifyingsalt', second: 'sturdy', hidden: 'clearbody' },\n      baseStats: { hp: 55, atk: 55, def: 75, spa: 35, spd: 35, spe: 25 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evos: ['naclstack'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 932,\n      species: 'nacli',\n      types: [TypesEnum.Rock],\n      weightkg: 16,\n      classification: 'Rock Salt Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/nacli.mp3'\n    }\n  ],\n  [\n    'naclstack',\n    {\n      abilities: { first: 'purifyingsalt', second: 'sturdy', hidden: 'clearbody' },\n      baseStats: { hp: 60, atk: 60, def: 100, spa: 35, spd: 65, spe: 35 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evos: ['garganacl'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 24,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 933,\n      prevo: 'nacli',\n      species: 'naclstack',\n      types: [TypesEnum.Rock],\n      weightkg: 105,\n      classification: 'Rock Salt Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/naclstack.mp3'\n    }\n  ],\n  [\n    'garganacl',\n    {\n      abilities: { first: 'purifyingsalt', second: 'sturdy', hidden: 'clearbody' },\n      baseStats: { hp: 100, atk: 100, def: 130, spa: 45, spd: 90, spe: 35 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 934,\n      prevo: 'naclstack',\n      species: 'garganacl',\n      types: [TypesEnum.Rock],\n      weightkg: 240,\n      classification: 'Rock Salt Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/garganacl.mp3'\n    }\n  ],\n  [\n    'charcadet',\n    {\n      abilities: { first: 'flashfire', hidden: 'flamebody' },\n      baseStats: { hp: 40, atk: 50, def: 40, spa: 50, spd: 40, spe: 35 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evos: ['armarouge', 'ceruledge'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 935,\n      species: 'charcadet',\n      types: [TypesEnum.Fire],\n      weightkg: 10.5,\n      classification: 'Fire Child Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/charcadet.mp3'\n    }\n  ],\n  [\n    'armarouge',\n    {\n      abilities: { first: 'flashfire', hidden: 'weakarmor' },\n      baseStats: { hp: 85, atk: 60, def: 100, spa: 125, spd: 80, spe: 75 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Red',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Auspicious Armor',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 936,\n      prevo: 'charcadet',\n      species: 'armarouge',\n      types: [TypesEnum.Fire, TypesEnum.Psychic],\n      weightkg: 85,\n      classification: 'Fire Warrior Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/armarouge.mp3'\n    }\n  ],\n  [\n    'ceruledge',\n    {\n      abilities: { first: 'flashfire', hidden: 'weakarmor' },\n      baseStats: { hp: 75, atk: 125, def: 80, spa: 60, spd: 100, spe: 85 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Blue',\n      eggGroups: ['Human-Like'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Malicious Armor',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 937,\n      prevo: 'charcadet',\n      species: 'ceruledge',\n      types: [TypesEnum.Fire, TypesEnum.Ghost],\n      weightkg: 62,\n      classification: 'Fire Blades Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ceruledge.mp3'\n    }\n  ],\n  [\n    'tadbulb',\n    {\n      abilities: { first: 'owntempo', second: 'static', hidden: 'damp' },\n      baseStats: { hp: 61, atk: 31, def: 41, spa: 59, spd: 35, spe: 45 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Water 1'],\n      evos: ['bellibolt'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 1,\n      num: 938,\n      species: 'tadbulb',\n      types: [TypesEnum.Electric],\n      weightkg: 0.4,\n      classification: 'EleTadpole Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tadbulb.mp3'\n    }\n  ],\n  [\n    'bellibolt',\n    {\n      abilities: { first: 'electromorphosis', second: 'static', hidden: 'damp' },\n      baseStats: { hp: 109, atk: 64, def: 91, spa: 103, spd: 83, spe: 45 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Green',\n      eggGroups: ['Water 1'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Thunder Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 1,\n      num: 939,\n      prevo: 'tadbulb',\n      species: 'bellibolt',\n      types: [TypesEnum.Electric],\n      weightkg: 113,\n      classification: 'EleFrog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bellibolt.mp3'\n    }\n  ],\n  [\n    'wattrel',\n    {\n      abilities: {\n        first: 'windpower',\n        second: 'voltabsorb',\n        hidden: 'competitive'\n      },\n      baseStats: { hp: 40, atk: 40, def: 35, spa: 55, spd: 40, spe: 70 },\n      catchRate: {\n        base: 180,\n        percentageWithOrdinaryPokeballAtFullHealth: '33.8%'\n      },\n      color: 'Black',\n      eggGroups: ['Water 1', 'Flying'],\n      evos: ['kilowattrel'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 1,\n      num: 940,\n      species: 'wattrel',\n      types: [TypesEnum.Electric, TypesEnum.Flying],\n      weightkg: 3.6,\n      classification: 'Storm Petrel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wattrel.mp3'\n    }\n  ],\n  [\n    'kilowattrel',\n    {\n      abilities: {\n        first: 'windpower',\n        second: 'voltabsorb',\n        hidden: 'competitive'\n      },\n      baseStats: { hp: 70, atk: 70, def: 60, spa: 105, spd: 60, spe: 125 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Yellow',\n      eggGroups: ['Water 1', 'Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 25,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 1,\n      num: 941,\n      prevo: 'wattrel',\n      species: 'kilowattrel',\n      types: [TypesEnum.Electric, TypesEnum.Flying],\n      weightkg: 38.6,\n      classification: 'Frigatebird Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kilowattrel.mp3'\n    }\n  ],\n  [\n    'maschiff',\n    {\n      abilities: { first: 'intimidate', second: 'runaway', hidden: 'stakeout' },\n      baseStats: { hp: 60, atk: 78, def: 60, spa: 40, spd: 51, spe: 51 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evos: ['mabosstiff'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 942,\n      species: 'maschiff',\n      types: [TypesEnum.Dark],\n      weightkg: 16,\n      classification: 'Rascal Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/maschiff.mp3'\n    }\n  ],\n  [\n    'mabosstiff',\n    {\n      abilities: { first: 'intimidate', second: 'guarddog', hidden: 'stakeout' },\n      baseStats: { hp: 80, atk: 120, def: 90, spa: 60, spd: 70, spe: 85 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 943,\n      prevo: 'maschiff',\n      species: 'mabosstiff',\n      types: [TypesEnum.Dark],\n      weightkg: 61,\n      classification: 'Boss Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/mabosstiff.mp3'\n    }\n  ],\n  [\n    'shroodle',\n    {\n      abilities: { first: 'unburden', second: 'pickpocket', hidden: 'prankster' },\n      baseStats: { hp: 40, atk: 65, def: 35, spa: 40, spd: 35, spe: 75 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evos: ['grafaiai'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 944,\n      species: 'shroodle',\n      types: [TypesEnum.Poison, TypesEnum.Normal],\n      weightkg: 0.7,\n      classification: 'Toxic Mouse Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/shroodle.mp3'\n    }\n  ],\n  [\n    'grafaiai',\n    {\n      abilities: { first: 'unburden', second: 'poisontouch', hidden: 'prankster' },\n      baseStats: { hp: 63, atk: 95, def: 65, spa: 80, spd: 72, spe: 110 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 28,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 945,\n      prevo: 'shroodle',\n      species: 'grafaiai',\n      types: [TypesEnum.Poison, TypesEnum.Normal],\n      weightkg: 27.2,\n      classification: 'Toxic Monkey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/grafaiai.mp3'\n    }\n  ],\n  [\n    'bramblin',\n    {\n      abilities: { first: 'windrider', hidden: 'infiltrator' },\n      baseStats: { hp: 40, atk: 65, def: 30, spa: 45, spd: 35, spe: 60 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Grass'],\n      evos: ['brambleghast'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 946,\n      species: 'bramblin',\n      types: [TypesEnum.Grass, TypesEnum.Ghost],\n      weightkg: 0.6,\n      classification: 'Tumbleweed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bramblin.mp3'\n    }\n  ],\n  [\n    'brambleghast',\n    {\n      abilities: { first: 'windrider', hidden: 'infiltrator' },\n      baseStats: { hp: 55, atk: 115, def: 70, spa: 80, spd: 70, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: \"walk 1000 steps in Let's Go without returning to Poké Ball and level it up\",\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 947,\n      prevo: 'bramblin',\n      species: 'brambleghast',\n      types: [TypesEnum.Grass, TypesEnum.Ghost],\n      weightkg: 6,\n      classification: 'Tumbleweed Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/brambleghast.mp3'\n    }\n  ],\n  [\n    'toedscool',\n    {\n      abilities: { first: 'myceliummight' },\n      baseStats: { hp: 40, atk: 40, def: 35, spa: 50, spd: 100, spe: 70 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evos: ['toedscruel'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 948,\n      species: 'toedscool',\n      types: [TypesEnum.Ground, TypesEnum.Grass],\n      weightkg: 33,\n      classification: 'Woodear Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toedscool.mp3'\n    }\n  ],\n  [\n    'toedscruel',\n    {\n      abilities: { first: 'myceliummight' },\n      baseStats: { hp: 80, atk: 70, def: 65, spa: 80, spd: 120, spe: 100 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Black',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 30,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 949,\n      prevo: 'toedscool',\n      species: 'toedscruel',\n      types: [TypesEnum.Ground, TypesEnum.Grass],\n      weightkg: 58,\n      classification: 'Woodear Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/toedscruel.mp3'\n    }\n  ],\n  [\n    'klawf',\n    {\n      abilities: {\n        first: 'angershell',\n        second: 'shellarmor',\n        hidden: 'regenerator'\n      },\n      baseStats: { hp: 70, atk: 100, def: 115, spa: 35, spd: 55, spe: 75 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Red',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3,\n      num: 950,\n      species: 'klawf',\n      types: [TypesEnum.Rock],\n      weightkg: 79,\n      classification: 'Ambush Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/klawf.mp3'\n    }\n  ],\n  [\n    'capsakid',\n    {\n      abilities: { first: 'chlorophyll', second: 'insomnia', hidden: 'klutz' },\n      baseStats: { hp: 50, atk: 62, def: 40, spa: 62, spd: 40, spe: 50 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evos: ['scovillain'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 951,\n      species: 'capsakid',\n      types: [TypesEnum.Grass],\n      weightkg: 3,\n      classification: 'Spicy Pepper Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/capsakid.mp3'\n    }\n  ],\n  [\n    'scovillain',\n    {\n      abilities: { first: 'chlorophyll', second: 'insomnia', hidden: 'moody' },\n      baseStats: { hp: 65, atk: 108, def: 65, spa: 108, spd: 65, spe: 75 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Fire Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 952,\n      prevo: 'capsakid',\n      species: 'scovillain',\n      otherFormes: ['scovillainmega'],\n      types: [TypesEnum.Grass, TypesEnum.Fire],\n      weightkg: 15,\n      classification: 'Spicy Pepper Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scovillain.mp3'\n    }\n  ],\n  [\n    'scovillainmega',\n    {\n      abilities: { first: 'spicyspray' },\n      baseStats: { hp: 65, atk: 138, def: 85, spa: 138, spd: 85, spe: 75 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Green',\n      eggGroups: ['Grass'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      baseSpecies: 'scovillain',\n      forme: 'Mega',\n      formeLetter: 'M',\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 952,\n      otherFormes: ['scovillain'],\n      species: 'scovillain-mega',\n      types: [TypesEnum.Grass, TypesEnum.Fire],\n      weightkg: 22,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/scovillain.mp3'\n    }\n  ],\n  [\n    'rellor',\n    {\n      abilities: { first: 'compoundeyes', hidden: 'shedskin' },\n      baseStats: { hp: 41, atk: 50, def: 60, spa: 31, spd: 58, spe: 30 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Brown',\n      eggGroups: ['Bug'],\n      evos: ['rabsca'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 953,\n      species: 'rellor',\n      types: [TypesEnum.Bug],\n      weightkg: 1,\n      classification: 'Rolling Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rellor.mp3'\n    }\n  ],\n  [\n    'rabsca',\n    {\n      abilities: { first: 'synchronize', hidden: 'telepathy' },\n      baseStats: { hp: 75, atk: 50, def: 85, spa: 115, spd: 100, spe: 45 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Bug'],\n      evoLevel: \"walk 1000 steps in Let's Go without returning to Poké Ball and level it up\",\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 5140,\n      num: 954,\n      prevo: 'rellor',\n      species: 'rabsca',\n      types: [TypesEnum.Bug, TypesEnum.Psychic],\n      weightkg: 3.5,\n      classification: 'Rolling Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/rabsca.mp3'\n    }\n  ],\n  [\n    'flittle',\n    {\n      abilities: { first: 'anticipation', second: 'frisk', hidden: 'speedboost' },\n      baseStats: { hp: 30, atk: 35, def: 30, spa: 55, spd: 30, spe: 75 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Yellow',\n      eggGroups: ['Flying'],\n      evos: ['espathra'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 955,\n      species: 'flittle',\n      types: [TypesEnum.Psychic],\n      weightkg: 1.5,\n      classification: 'Frill Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/flittle.mp3'\n    }\n  ],\n  [\n    'espathra',\n    {\n      abilities: { first: 'opportunist', second: 'frisk', hidden: 'speedboost' },\n      baseStats: { hp: 95, atk: 60, def: 60, spa: 101, spd: 60, spe: 105 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Yellow',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 35,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.9,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 956,\n      prevo: 'flittle',\n      species: 'espathra',\n      types: [TypesEnum.Psychic],\n      weightkg: 90,\n      classification: 'Ostrich Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/espathra.mp3'\n    }\n  ],\n  [\n    'tinkatink',\n    {\n      abilities: {\n        first: 'moldbreaker',\n        second: 'owntempo',\n        hidden: 'pickpocket'\n      },\n      baseStats: { hp: 50, atk: 45, def: 45, spa: 35, spd: 64, spe: 58 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evos: ['tinkatuff'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 1, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 957,\n      species: 'tinkatink',\n      types: [TypesEnum.Fairy, TypesEnum.Steel],\n      weightkg: 8.9,\n      classification: 'Metalsmith Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tinkatink.mp3'\n    }\n  ],\n  [\n    'tinkatuff',\n    {\n      abilities: {\n        first: 'moldbreaker',\n        second: 'owntempo',\n        hidden: 'pickpocket'\n      },\n      baseStats: { hp: 65, atk: 55, def: 55, spa: 45, spd: 82, spe: 78 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evos: ['tinkaton'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 2, spe: 0 },\n      evoLevel: 24,\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 958,\n      prevo: 'tinkatink',\n      species: 'tinkatuff',\n      types: [TypesEnum.Fairy, TypesEnum.Steel],\n      weightkg: 59.1,\n      classification: 'Hammer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tinkatuff.mp3'\n    }\n  ],\n  [\n    'tinkaton',\n    {\n      abilities: {\n        first: 'moldbreaker',\n        second: 'owntempo',\n        hidden: 'pickpocket'\n      },\n      baseStats: { hp: 85, atk: 75, def: 77, spa: 70, spd: 105, spe: 94 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Pink',\n      eggGroups: ['Fairy'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      evoLevel: 38,\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 959,\n      prevo: 'tinkatuff',\n      species: 'tinkaton',\n      types: [TypesEnum.Fairy, TypesEnum.Steel],\n      weightkg: 112.8,\n      classification: 'Hammer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tinkaton.mp3'\n    }\n  ],\n  [\n    'wiglett',\n    {\n      abilities: { first: 'gooey', second: 'rattled', hidden: 'sandveil' },\n      baseStats: { hp: 10, atk: 55, def: 25, spa: 35, spd: 25, spe: 95 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'White',\n      eggGroups: ['Water 3'],\n      evos: ['wugtrio'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3,\n      num: 960,\n      species: 'wiglett',\n      types: [TypesEnum.Water],\n      weightkg: 1.8,\n      classification: 'Garden Eel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wiglett.mp3'\n    }\n  ],\n  [\n    'wugtrio',\n    {\n      abilities: { first: 'gooey', second: 'rattled', hidden: 'sandveil' },\n      baseStats: { hp: 35, atk: 100, def: 50, spa: 50, spd: 70, spe: 120 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Red',\n      eggGroups: ['Water 3'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      evoLevel: 26,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 3,\n      num: 961,\n      prevo: 'wiglett',\n      species: 'wugtrio',\n      types: [TypesEnum.Water],\n      weightkg: 5.4,\n      classification: 'Garden Eel Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wugtrio.mp3'\n    }\n  ],\n  [\n    'bombirdier',\n    {\n      abilities: { first: 'bigpecks', second: 'keeneye', hidden: 'rockypayload' },\n      baseStats: { hp: 70, atk: 103, def: 85, spa: 60, spd: 85, spe: 82 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'White',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 962,\n      species: 'bombirdier',\n      types: [TypesEnum.Flying, TypesEnum.Dark],\n      weightkg: 42.9,\n      classification: 'Item Drop Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/bombirdier.mp3'\n    }\n  ],\n  [\n    'finizen',\n    {\n      abilities: { first: 'waterveil' },\n      baseStats: { hp: 70, atk: 45, def: 40, spa: 45, spd: 40, spe: 75 },\n      catchRate: {\n        base: 200,\n        percentageWithOrdinaryPokeballAtFullHealth: '36.6%'\n      },\n      color: 'Blue',\n      eggGroups: ['Field', 'Water 2'],\n      evos: ['palafin'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 1 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 2,\n      num: 963,\n      species: 'finizen',\n      types: [TypesEnum.Water],\n      weightkg: 60.2,\n      classification: 'Dolphin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/finizen.mp3'\n    }\n  ],\n  [\n    'palafin',\n    {\n      abilities: { first: 'zerotohero' },\n      baseForme: 'zero',\n      baseStats: { hp: 100, atk: 70, def: 72, spa: 53, spd: 62, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field', 'Water 2'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.3,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 2,\n      num: 964,\n      prevo: 'finizen',\n      otherFormes: ['palafinhero'],\n      species: 'palafin',\n      types: [TypesEnum.Water],\n      weightkg: 60.2,\n      classification: 'Dolphin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/palafin.mp3'\n    }\n  ],\n  [\n    'palafinhero',\n    {\n      abilities: { first: 'zerotohero' },\n      baseSpecies: 'palafin',\n      baseStats: { hp: 100, atk: 160, def: 97, spa: 106, spd: 87, spe: 100 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Field', 'Water 2'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 38,\n      forme: 'hero',\n      formeLetter: 'H',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 2,\n      num: 964,\n      prevo: 'finizen',\n      otherFormes: ['palafin'],\n      species: 'palafin-hero',\n      types: [TypesEnum.Water],\n      weightkg: 97.4,\n      classification: 'Hero Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/palafin-hero.mp3'\n    }\n  ],\n  [\n    'varoom',\n    {\n      abilities: { first: 'overcoat', hidden: 'slowstart' },\n      baseStats: { hp: 45, atk: 70, def: 63, spa: 30, spd: 45, spe: 47 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evos: ['revavroom'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 965,\n      species: 'varoom',\n      types: [TypesEnum.Steel, TypesEnum.Poison],\n      weightkg: 35,\n      classification: 'Single-Cyl Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/varoom.mp3'\n    }\n  ],\n  [\n    'revavroom',\n    {\n      abilities: { first: 'overcoat', hidden: 'filter' },\n      baseStats: { hp: 80, atk: 119, def: 90, spa: 54, spd: 67, spe: 90 },\n      catchRate: { base: 75, percentageWithOrdinaryPokeballAtFullHealth: '17.5%' },\n      color: 'Gray',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 40,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 966,\n      prevo: 'varoom',\n      species: 'revavroom',\n      types: [TypesEnum.Steel, TypesEnum.Poison],\n      weightkg: 120,\n      classification: 'Multi-Cyl Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/revavroom.mp3'\n    }\n  ],\n  [\n    'cyclizar',\n    {\n      abilities: { first: 'shedskin', hidden: 'regenerator' },\n      baseStats: { hp: 70, atk: 95, def: 65, spa: 85, spd: 65, spe: 121 },\n      catchRate: {\n        base: 190,\n        percentageWithOrdinaryPokeballAtFullHealth: '35.2%'\n      },\n      color: 'Green',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 2 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 7710,\n      num: 967,\n      species: 'cyclizar',\n      types: [TypesEnum.Dragon, TypesEnum.Normal],\n      weightkg: 63,\n      classification: 'Mount Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cyclizar.mp3'\n    }\n  ],\n  [\n    'orthworm',\n    {\n      abilities: { first: 'eartheater', hidden: 'sandveil' },\n      baseStats: { hp: 70, atk: 85, def: 145, spa: 60, spd: 55, spe: 65 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Pink',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 8995,\n      num: 968,\n      species: 'orthworm',\n      types: [TypesEnum.Steel],\n      weightkg: 310,\n      classification: 'Earthworm Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/orthworm.mp3'\n    }\n  ],\n  [\n    'glimmet',\n    {\n      abilities: { first: 'toxicdebris', hidden: 'corrosion' },\n      baseStats: { hp: 48, atk: 35, def: 42, spa: 105, spd: 60, spe: 60 },\n      catchRate: { base: 70, percentageWithOrdinaryPokeballAtFullHealth: '16.6%' },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evos: ['glimmora'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.7,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 7710,\n      num: 969,\n      species: 'glimmet',\n      types: [TypesEnum.Rock, TypesEnum.Poison],\n      weightkg: 8,\n      classification: 'Ore Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/glimmet.mp3'\n    }\n  ],\n  [\n    'glimmora',\n    {\n      abilities: { first: 'toxicdebris', hidden: 'corrosion' },\n      baseStats: { hp: 83, atk: 55, def: 90, spa: 130, spd: 81, spe: 86 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 35,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 7710,\n      num: 970,\n      prevo: 'glimmet',\n      species: 'glimmora',\n      otherFormes: ['glimmoramega'],\n      types: [TypesEnum.Rock, TypesEnum.Poison],\n      weightkg: 45,\n      classification: 'Ore Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/glimmora.mp3'\n    }\n  ],\n  [\n    'glimmoramega',\n    {\n      abilities: { first: 'adaptability' },\n      baseStats: { hp: 83, atk: 90, def: 105, spa: 150, spd: 96, spe: 101 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Blue',\n      eggGroups: ['Mineral'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      baseSpecies: 'glimmora',\n      forme: 'Mega',\n      formeLetter: 'M',\n      heightm: 2.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 7710,\n      num: 970,\n      otherFormes: ['glimmora'],\n      species: 'glimmora-mega',\n      types: [TypesEnum.Rock, TypesEnum.Poison],\n      weightkg: 77,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/glimmora.mp3'\n    }\n  ],\n  [\n    'greavard',\n    {\n      abilities: { first: 'pickup', hidden: 'fluffy' },\n      baseStats: { hp: 50, atk: 61, def: 60, spa: 30, spd: 55, spe: 34 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evos: ['houndstone'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 971,\n      species: 'greavard',\n      types: [TypesEnum.Ghost],\n      weightkg: 35,\n      classification: 'Ghost Dog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/greavard.mp3'\n    }\n  ],\n  [\n    'houndstone',\n    {\n      abilities: { first: 'sandrush', hidden: 'fluffy' },\n      baseStats: { hp: 72, atk: 101, def: 100, spa: 50, spd: 97, spe: 68 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evoLevel: 'level 30 at night',\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 972,\n      prevo: 'greavard',\n      species: 'houndstone',\n      types: [TypesEnum.Ghost],\n      weightkg: 15,\n      classification: 'Ghost Dog Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/houndstone.mp3'\n    }\n  ],\n  [\n    'flamigo',\n    {\n      abilities: { first: 'scrappy', second: 'tangledfeet', hidden: 'costar' },\n      baseStats: { hp: 82, atk: 115, def: 74, spa: 75, spd: 64, spe: 90 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Pink',\n      eggGroups: ['Flying'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 5140,\n      num: 973,\n      species: 'flamigo',\n      types: [TypesEnum.Flying, TypesEnum.Fighting],\n      weightkg: 37,\n      classification: 'Synchronize Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/flamigo.mp3'\n    }\n  ],\n  [\n    'cetoddle',\n    {\n      abilities: { first: 'thickfat', second: 'snowcloak', hidden: 'sheerforce' },\n      baseStats: { hp: 108, atk: 68, def: 45, spa: 30, spd: 40, spe: 43 },\n      catchRate: {\n        base: 150,\n        percentageWithOrdinaryPokeballAtFullHealth: '29.5%'\n      },\n      color: 'White',\n      eggGroups: ['Field'],\n      evos: ['cetitan'],\n      evYields: { hp: 1, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 974,\n      species: 'cetoddle',\n      types: [TypesEnum.Ice],\n      weightkg: 45,\n      classification: 'Terra Whale Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cetoddle.mp3'\n    }\n  ],\n  [\n    'cetitan',\n    {\n      abilities: { first: 'thickfat', second: 'slushrush', hidden: 'sheerforce' },\n      baseStats: { hp: 170, atk: 113, def: 65, spa: 45, spd: 55, spe: 73 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Ice Stone',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 4.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 6425,\n      num: 975,\n      prevo: 'cetoddle',\n      species: 'cetitan',\n      types: [TypesEnum.Ice],\n      weightkg: 700,\n      classification: 'Terra Whale Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/cetitan.mp3'\n    }\n  ],\n  [\n    'veluza',\n    {\n      abilities: { first: 'moldbreaker', hidden: 'sharpness' },\n      baseStats: { hp: 90, atk: 102, def: 73, spa: 78, spd: 65, spe: 70 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Gray',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.5,\n      isEggObtainable: true,\n      levellingRate: 'Fast',\n      minimumHatchTime: 2,\n      num: 976,\n      species: 'veluza',\n      types: [TypesEnum.Water, TypesEnum.Psychic],\n      weightkg: 90,\n      classification: 'Jettison Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/veluza.mp3'\n    }\n  ],\n  [\n    'dondozo',\n    {\n      abilities: { first: 'unaware', second: 'oblivious', hidden: 'waterveil' },\n      baseStats: { hp: 150, atk: 100, def: 115, spa: 65, spd: 65, spe: 35 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Blue',\n      eggGroups: ['Water 2'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 12,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 2,\n      num: 977,\n      species: 'dondozo',\n      types: [TypesEnum.Water],\n      weightkg: 220,\n      classification: 'Big Catfish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dondozo.mp3'\n    }\n  ],\n  [\n    'tatsugiri',\n    {\n      abilities: { first: 'commander', hidden: 'stormdrain' },\n      baseStats: { hp: 68, atk: 50, def: 60, spa: 120, spd: 95, spe: 82 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Pink',\n      cosmeticFormes: ['Tatsugiri-Droopy', 'Tatsugiri-Stretchy'],\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 2,\n      num: 978,\n      species: 'tatsugiri',\n      otherFormes: ['tatsugirimega'],\n      types: [TypesEnum.Dragon, TypesEnum.Water],\n      weightkg: 8,\n      classification: 'Mimicry Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tatsugiri.mp3'\n    }\n  ],\n  [\n    'tatsugirimega',\n    {\n      abilities: { first: 'commander', hidden: 'stormdrain' },\n      baseStats: { hp: 68, atk: 65, def: 90, spa: 135, spd: 125, spe: 92 },\n      catchRate: {\n        base: 100,\n        percentageWithOrdinaryPokeballAtFullHealth: '21.7%'\n      },\n      color: 'Pink',\n      cosmeticFormes: ['Tatsugiri-Droopy', 'Tatsugiri-Stretchy'],\n      eggGroups: ['Water 2'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Slow',\n      minimumHatchTime: 2,\n      baseSpecies: 'tatsugiri',\n      forme: 'Mega',\n      formeLetter: 'M',\n      num: 978,\n      otherFormes: ['tatsugiri'],\n      species: 'tatsugiri-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Water],\n      weightkg: 24,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tatsugiri.mp3'\n    }\n  ],\n  [\n    'annihilape',\n    {\n      abilities: { first: 'vitalspirit', second: 'innerfocus', hidden: 'defiant' },\n      baseStats: { hp: 110, atk: 115, def: 80, spa: 50, spd: 90, spe: 90 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Field'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'use Rage Fist 20 times then level up',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 979,\n      prevo: 'primeape',\n      species: 'annihilape',\n      types: [TypesEnum.Fighting, TypesEnum.Ghost],\n      weightkg: 56,\n      classification: 'Rage Monkey Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/annihilape.mp3'\n    }\n  ],\n  [\n    'clodsire',\n    {\n      abilities: {\n        first: 'poisonpoint',\n        second: 'waterabsorb',\n        hidden: 'unaware'\n      },\n      baseStats: { hp: 130, atk: 75, def: 60, spa: 45, spd: 100, spe: 20 },\n      catchRate: { base: 90, percentageWithOrdinaryPokeballAtFullHealth: '20.1%' },\n      color: 'Brown',\n      eggGroups: ['Water 1', 'Field'],\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 20,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 1,\n      num: 980,\n      prevo: 'wooperpaldea',\n      species: 'clodsire',\n      types: [TypesEnum.Poison, TypesEnum.Ground],\n      weightkg: 223,\n      classification: 'Spiny Fish Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/clodsire.mp3'\n    }\n  ],\n  [\n    'farigiraf',\n    {\n      abilities: { first: 'cudchew', second: 'armortail', hidden: 'sapsipper' },\n      baseStats: { hp: 120, atk: 90, def: 70, spa: 110, spd: 70, spe: 60 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Field'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 'Level up while knowing Twin Beam',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 981,\n      prevo: 'girafarig',\n      species: 'farigiraf',\n      types: [TypesEnum.Normal, TypesEnum.Psychic],\n      weightkg: 160,\n      classification: 'Long Neck Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/farigiraf.mp3'\n    }\n  ],\n  [\n    'dudunsparce',\n    {\n      abilities: { first: 'serenegrace', second: 'runaway', hidden: 'rattled' },\n      baseForme: 'Two-Segment',\n      baseStats: { hp: 125, atk: 100, def: 80, spa: 85, spd: 75, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evoLevel: 'Level up while knowing Hyper Drill',\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 3.6,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 982,\n      otherFormes: ['dudunsparcethreesegment'],\n      prevo: 'dunsparce',\n      species: 'dudunsparce',\n      types: [TypesEnum.Normal],\n      weightkg: 39.2,\n      classification: 'Land Snake Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dudunsparce.mp3'\n    }\n  ],\n  [\n    'dudunsparcethreesegment',\n    {\n      abilities: { first: 'serenegrace', second: 'runaway', hidden: 'rattled' },\n      baseSpecies: 'dudunsparce',\n      baseStats: { hp: 125, atk: 100, def: 80, spa: 85, spd: 75, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Field'],\n      evoLevel: 'Level up while knowing Hyper Drill',\n      evYields: { hp: 2, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Three-Segment',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 4.5,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 982,\n      otherFormes: ['dudunsparce'],\n      prevo: 'dunsparce',\n      species: 'dudunsparce-threesegment',\n      types: [TypesEnum.Normal],\n      weightkg: 47.4,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dudunsparce.mp3'\n    }\n  ],\n  [\n    'kingambit',\n    {\n      abilities: {\n        first: 'defiant',\n        second: 'supremeoverlord',\n        hidden: 'pressure'\n      },\n      baseStats: { hp: 100, atk: 135, def: 120, spa: 60, spd: 85, spe: 50 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Black',\n      eggGroups: ['Human-Like'],\n      evoLevel: \"Defeat 3 Bisharp in groups with Pawniard that hold a Leader's Crest (the opponents hold it) then level up\",\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 983,\n      prevo: 'bisharp',\n      species: 'kingambit',\n      types: [TypesEnum.Dark, TypesEnum.Steel],\n      weightkg: 120,\n      classification: 'Big Blade Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/kingambit.mp3'\n    }\n  ],\n  [\n    'greattusk',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 115, atk: 131, def: 131, spa: 53, spd: 53, spe: 87 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 984,\n      species: 'Great Tusk',\n      types: [TypesEnum.Ground, TypesEnum.Fighting],\n      weightkg: 320,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/greattusk.mp3'\n    }\n  ],\n  [\n    'screamtail',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 115, atk: 65, def: 99, spa: 65, spd: 115, spe: 111 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Pink',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 985,\n      species: 'Scream Tail',\n      types: [TypesEnum.Fairy, TypesEnum.Psychic],\n      weightkg: 8,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/screamtail.mp3'\n    }\n  ],\n  [\n    'brutebonnet',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 111, atk: 127, def: 99, spa: 79, spd: 99, spe: 55 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 986,\n      species: 'Brute Bonnet',\n      types: [TypesEnum.Grass, TypesEnum.Dark],\n      weightkg: 21,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/brutebonnet.mp3'\n    }\n  ],\n  [\n    'fluttermane',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 55, atk: 55, def: 55, spa: 135, spd: 135, spe: 135 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 1, spe: 1 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 987,\n      species: 'Flutter Mane',\n      types: [TypesEnum.Ghost, TypesEnum.Fairy],\n      weightkg: 4,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fluttermane.mp3'\n    }\n  ],\n  [\n    'slitherwing',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 85, atk: 135, def: 79, spa: 85, spd: 105, spe: 81 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 988,\n      species: 'Slither Wing',\n      types: [TypesEnum.Bug, TypesEnum.Fighting],\n      weightkg: 92,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/slitherwing.mp3'\n    }\n  ],\n  [\n    'sandyshocks',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 85, atk: 81, def: 97, spa: 121, spd: 85, spe: 101 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 989,\n      species: 'Sandy Shocks',\n      types: [TypesEnum.Electric, TypesEnum.Ground],\n      weightkg: 60,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sandyshocks.mp3'\n    }\n  ],\n  [\n    'irontreads',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 90, atk: 112, def: 120, spa: 72, spd: 70, spe: 106 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 990,\n      species: 'Iron Treads',\n      types: [TypesEnum.Ground, TypesEnum.Steel],\n      weightkg: 240,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/irontreads.mp3'\n    }\n  ],\n  [\n    'ironbundle',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 56, atk: 80, def: 114, spa: 124, spd: 60, spe: 136 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 991,\n      species: 'Iron Bundle',\n      types: [TypesEnum.Ice, TypesEnum.Water],\n      weightkg: 11,\n      aliases: ['bundlechan'],\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ironbundle.mp3'\n    }\n  ],\n  [\n    'ironhands',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 154, atk: 140, def: 108, spa: 50, spd: 68, spe: 50 },\n      catchRate: { base: 50, percentageWithOrdinaryPokeballAtFullHealth: '12.9%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 992,\n      species: 'Iron Hands',\n      types: [TypesEnum.Fighting, TypesEnum.Electric],\n      weightkg: 380.7,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ironhands.mp3'\n    }\n  ],\n  [\n    'ironjugulis',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 94, atk: 80, def: 86, spa: 122, spd: 80, spe: 108 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 993,\n      species: 'Iron Jugulis',\n      types: [TypesEnum.Dark, TypesEnum.Flying],\n      weightkg: 111,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ironjugulis.mp3'\n    }\n  ],\n  [\n    'ironmoth',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 80, atk: 70, def: 60, spa: 140, spd: 110, spe: 110 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 994,\n      species: 'Iron Moth',\n      types: [TypesEnum.Fire, TypesEnum.Poison],\n      weightkg: 36,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ironmoth.mp3'\n    }\n  ],\n  [\n    'ironthorns',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 100, atk: 134, def: 110, spa: 70, spd: 84, spe: 72 },\n      catchRate: { base: 30, percentageWithOrdinaryPokeballAtFullHealth: '8.8%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 995,\n      species: 'Iron Thorns',\n      types: [TypesEnum.Rock, TypesEnum.Electric],\n      weightkg: 303,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ironthorns.mp3'\n    }\n  ],\n  [\n    'frigibax',\n    {\n      abilities: { first: 'thermalexchange', hidden: 'icebody' },\n      baseStats: { hp: 65, atk: 75, def: 45, spa: 35, spd: 45, spe: 55 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Gray',\n      eggGroups: ['Dragon', 'Mineral'],\n      evos: ['arctibax'],\n      evYields: { hp: 0, atk: 1, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.5,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 996,\n      species: 'frigibax',\n      types: [TypesEnum.Dragon, TypesEnum.Ice],\n      weightkg: 17,\n      classification: 'Ice Fin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/frigibax.mp3'\n    }\n  ],\n  [\n    'arctibax',\n    {\n      abilities: { first: 'thermalexchange', hidden: 'icebody' },\n      baseStats: { hp: 90, atk: 95, def: 66, spa: 45, spd: 65, spe: 62 },\n      catchRate: { base: 25, percentageWithOrdinaryPokeballAtFullHealth: '7.7%' },\n      color: 'Gray',\n      eggGroups: ['Dragon', 'Mineral'],\n      evos: ['baxcalibur'],\n      evYields: { hp: 0, atk: 2, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 35,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.8,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 997,\n      prevo: 'frigibax',\n      species: 'arctibax',\n      types: [TypesEnum.Dragon, TypesEnum.Ice],\n      weightkg: 30,\n      classification: 'Ice Fin Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/arctibax.mp3'\n    }\n  ],\n  [\n    'baxcalibur',\n    {\n      abilities: { first: 'thermalexchange', hidden: 'icebody' },\n      baseStats: { hp: 115, atk: 145, def: 92, spa: 75, spd: 86, spe: 87 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Gray',\n      eggGroups: ['Dragon', 'Mineral'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      evoLevel: 54,\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 998,\n      prevo: 'arctibax',\n      species: 'baxcalibur',\n      otherFormes: ['baxcaliburmega'],\n      types: [TypesEnum.Dragon, TypesEnum.Ice],\n      weightkg: 210,\n      classification: 'Ice Dragon Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/baxcalibur.mp3'\n    }\n  ],\n  [\n    'baxcaliburmega',\n    {\n      abilities: { first: 'thermalexchange', hidden: 'icebody' },\n      baseStats: { hp: 115, atk: 145, def: 92, spa: 75, spd: 86, spe: 87 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Gray',\n      eggGroups: ['Dragon', 'Mineral'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      baseSpecies: 'baxcalibur',\n      forme: 'Mega',\n      formeLetter: 'M',\n      heightm: 2.1,\n      isEggObtainable: true,\n      levellingRate: 'Slow',\n      minimumHatchTime: 10280,\n      num: 998,\n      otherFormes: ['baxcalibur'],\n      species: 'baxcalibur-mega',\n      types: [TypesEnum.Dragon, TypesEnum.Ice],\n      weightkg: 315,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/baxcalibur.mp3'\n    }\n  ],\n  [\n    'gimmighoul',\n    {\n      abilities: { first: 'rattled' },\n      baseForme: 'Chest',\n      baseStats: { hp: 45, atk: 30, def: 70, spa: 75, spd: 70, spe: 10 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evos: ['gholdengo'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 999,\n      otherFormes: ['gimmighoulroaming'],\n      species: 'gimmighoul',\n      types: [TypesEnum.Ghost],\n      weightkg: 5,\n      classification: 'Coin Chest Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gimmighoul.mp3'\n    }\n  ],\n  [\n    'gimmighoulroaming',\n    {\n      abilities: { first: 'runaway' },\n      baseSpecies: 'gimmighoul',\n      baseStats: { hp: 45, atk: 30, def: 25, spa: 75, spd: 45, spe: 80 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evos: ['gholdengo'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      forme: 'Roaming',\n      formeLetter: 'R',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 999,\n      otherFormes: ['gimmighoul'],\n      species: 'gimmighoul-roaming',\n      types: [TypesEnum.Ghost],\n      weightkg: 0.1,\n      classification: 'Coin Hunter Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gimmighoul-roaming.mp3'\n    }\n  ],\n  [\n    'gholdengo',\n    {\n      abilities: { first: 'goodasgold' },\n      baseStats: { hp: 87, atk: 60, def: 95, spa: 133, spd: 91, spe: 84 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'Collect 999 Gimmighoul Coins and level up',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1000,\n      prevo: 'gimmighoul',\n      species: 'gholdengo',\n      types: [TypesEnum.Steel, TypesEnum.Ghost],\n      weightkg: 30,\n      classification: 'Coin Entity Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gholdengo.mp3'\n    }\n  ],\n  [\n    'wochien',\n    {\n      abilities: { first: 'tabletsofruin' },\n      baseStats: { hp: 85, atk: 85, def: 100, spa: 95, spd: 135, spe: 70 },\n      catchRate: { base: 6, percentageWithOrdinaryPokeballAtFullHealth: '2.6%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1001,\n      species: 'Wo-Chien',\n      types: [TypesEnum.Dark, TypesEnum.Grass],\n      weightkg: 74.2,\n      legendary: true,\n      classification: 'Ruinous Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/wochien.mp3'\n    }\n  ],\n  [\n    'chienpao',\n    {\n      abilities: { first: 'swordofruin' },\n      baseStats: { hp: 80, atk: 120, def: 80, spa: 90, spd: 65, spe: 135 },\n      catchRate: { base: 6, percentageWithOrdinaryPokeballAtFullHealth: '2.6%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.9,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1002,\n      species: 'Chien-Pao',\n      types: [TypesEnum.Dark, TypesEnum.Ice],\n      weightkg: 152.2,\n      legendary: true,\n      classification: 'Ruinous Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chienpao.mp3'\n    }\n  ],\n  [\n    'tinglu',\n    {\n      abilities: { first: 'vesselofruin' },\n      baseStats: { hp: 155, atk: 110, def: 125, spa: 55, spd: 80, spe: 45 },\n      catchRate: { base: 6, percentageWithOrdinaryPokeballAtFullHealth: '2.6%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1003,\n      species: 'Ting-Lu',\n      types: [TypesEnum.Dark, TypesEnum.Ground],\n      weightkg: 699.7,\n      legendary: true,\n      classification: 'Ruinous Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/tinglu.mp3'\n    }\n  ],\n  [\n    'chiyu',\n    {\n      abilities: { first: 'beadsofruin' },\n      baseStats: { hp: 55, atk: 80, def: 80, spa: 135, spd: 120, spe: 100 },\n      catchRate: { base: 6, percentageWithOrdinaryPokeballAtFullHealth: '2.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1004,\n      species: 'Chi-Yu',\n      types: [TypesEnum.Dark, TypesEnum.Fire],\n      weightkg: 4.9,\n      legendary: true,\n      classification: 'Ruinous Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/chiyu.mp3'\n    }\n  ],\n  [\n    'roaringmoon',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 105, atk: 139, def: 71, spa: 55, spd: 101, spe: 119 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1005,\n      species: 'Roaring Moon',\n      types: [TypesEnum.Dragon, TypesEnum.Dark],\n      weightkg: 380,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/roaringmoon.mp3'\n    }\n  ],\n  [\n    'ironvaliant',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 74, atk: 130, def: 90, spa: 120, spd: 60, spe: 116 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1006,\n      species: 'Iron Valiant',\n      types: [TypesEnum.Fairy, TypesEnum.Fighting],\n      weightkg: 35,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ironvaliant.mp3'\n    }\n  ],\n  [\n    'koraidon',\n    {\n      abilities: { first: 'orichalcumpulse' },\n      baseStats: { hp: 100, atk: 135, def: 115, spa: 85, spd: 100, spe: 135 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 2.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1007,\n      species: 'koraidon',\n      types: [TypesEnum.Fighting, TypesEnum.Dragon],\n      weightkg: 303,\n      legendary: true,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/koraidon.mp3'\n    }\n  ],\n  [\n    'miraidon',\n    {\n      abilities: { first: 'hadronengine' },\n      baseStats: { hp: 100, atk: 85, def: 100, spa: 135, spd: 115, spe: 135 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1008,\n      species: 'miraidon',\n      types: [TypesEnum.Electric, TypesEnum.Dragon],\n      weightkg: 240,\n      legendary: true,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/miraidon.mp3'\n    }\n  ],\n  [\n    'walkingwake',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 99, atk: 83, def: 91, spa: 125, spd: 83, spe: 109 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1009,\n      species: 'Walking Wake',\n      types: [TypesEnum.Water, TypesEnum.Dragon],\n      weightkg: 280,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/walkingwake.mp3'\n    }\n  ],\n  [\n    'ironleaves',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 90, atk: 130, def: 88, spa: 70, spd: 108, spe: 104 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1010,\n      species: 'Iron Leaves',\n      types: [TypesEnum.Grass, TypesEnum.Psychic],\n      weightkg: 125,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ironleaves.mp3'\n    }\n  ],\n  [\n    'dipplin',\n    {\n      abilities: {\n        first: 'supersweetsyrup',\n        second: 'gluttony',\n        hidden: 'stickyhold'\n      },\n      baseStats: { hp: 80, atk: 80, def: 110, spa: 95, spd: 80, spe: 40 },\n      catchRate: { base: 45, percentageWithOrdinaryPokeballAtFullHealth: '11.9%' },\n      color: 'Green',\n      eggGroups: ['Grass', 'Dragon'],\n      evoLevel: 'use Syrupy Apple',\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 0, spe: 0 },\n      evos: ['hydrapple'],\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.4,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      minimumHatchTime: 5140,\n      num: 1011,\n      prevo: 'applin',\n      species: 'dipplin',\n      types: [TypesEnum.Grass, TypesEnum.Dragon],\n      weightkg: 4.4,\n      classification: 'Candy Apple Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/dipplin.mp3'\n    }\n  ],\n  [\n    'poltchageist',\n    {\n      abilities: { first: 'hospitality', hidden: 'heatproof' },\n      baseStats: { hp: 40, atk: 45, def: 45, spa: 74, spd: 54, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['sinistcha'],\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 1012,\n      otherFormes: ['poltchageistartisan'],\n      species: 'poltchageist',\n      types: [TypesEnum.Grass, TypesEnum.Ghost],\n      weightkg: 1.1,\n      classification: 'Matcha Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/poltchageist.mp3'\n    }\n  ],\n  [\n    'poltchageistartisan',\n    {\n      abilities: { first: 'hospitality', hidden: 'heatproof' },\n      baseSpecies: 'poltchageist',\n      baseStats: { hp: 40, atk: 45, def: 45, spa: 74, spd: 54, spe: 50 },\n      catchRate: {\n        base: 120,\n        percentageWithOrdinaryPokeballAtFullHealth: '24.9%'\n      },\n      color: 'Green',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 1, spd: 0, spe: 0 },\n      evos: ['sinistchamasterpiece'],\n      forme: 'artisan',\n      formeLetter: 'A',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.1,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 1012,\n      otherFormes: ['poltchageist'],\n      species: 'poltchageist-artisan',\n      types: [TypesEnum.Grass, TypesEnum.Ghost],\n      weightkg: 1.1,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/poltchageist.mp3'\n    }\n  ],\n  [\n    'sinistcha',\n    {\n      abilities: { first: 'hospitality', hidden: 'heatproof' },\n      baseForme: 'Unremarkable',\n      baseStats: { hp: 71, atk: 60, def: 106, spa: 121, spd: 80, spe: 70 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Green',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Unremarkable Teacup',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 1013,\n      otherFormes: ['sinistchamasterpiece'],\n      prevo: 'poltchageist',\n      species: 'sinistcha',\n      types: [TypesEnum.Grass, TypesEnum.Ghost],\n      weightkg: 2.2,\n      classification: 'Matcha Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sinistcha.mp3'\n    }\n  ],\n  [\n    'sinistchamasterpiece',\n    {\n      abilities: { first: 'hospitality', hidden: 'heatproof' },\n      baseSpecies: 'sinistcha',\n      baseStats: { hp: 71, atk: 60, def: 106, spa: 121, spd: 80, spe: 70 },\n      catchRate: { base: 60, percentageWithOrdinaryPokeballAtFullHealth: '14.8%' },\n      color: 'Green',\n      eggGroups: ['Mineral', 'Amorphous'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 2, spd: 0, spe: 0 },\n      evoLevel: 'use Masterpiece Teacup',\n      forme: 'Masterpiece',\n      formeLetter: 'M',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      minimumHatchTime: 5140,\n      num: 1013,\n      otherFormes: ['sinistcha'],\n      prevo: 'poltchageistartisan',\n      species: 'sinistcha-masterpiece',\n      types: [TypesEnum.Grass, TypesEnum.Ghost],\n      weightkg: 2.2,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/sinistcha.mp3'\n    }\n  ],\n  [\n    'okidogi',\n    {\n      abilities: { first: 'toxicchain', hidden: 'guarddog' },\n      baseStats: { hp: 88, atk: 128, def: 115, spa: 58, spd: 86, spe: 80 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.8,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1014,\n      species: 'okidogi',\n      types: [TypesEnum.Poison, TypesEnum.Fighting],\n      weightkg: 92,\n      classification: 'Retainer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/okidogi.mp3'\n    }\n  ],\n  [\n    'munkidori',\n    {\n      abilities: { first: 'toxicchain', hidden: 'frisk' },\n      baseStats: { hp: 88, atk: 75, def: 66, spa: 130, spd: 90, spe: 106 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1015,\n      species: 'munkidori',\n      types: [TypesEnum.Poison, TypesEnum.Psychic],\n      weightkg: 12.2,\n      classification: 'Retainer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/munkidori.mp3'\n    }\n  ],\n  [\n    'fezandipiti',\n    {\n      abilities: { first: 'toxicchain', hidden: 'technician' },\n      baseStats: { hp: 88, atk: 91, def: 82, spa: 70, spd: 125, spe: 99 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Black',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 3, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.4,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1016,\n      species: 'fezandipiti',\n      types: [TypesEnum.Poison, TypesEnum.Fairy],\n      weightkg: 30.1,\n      classification: 'Retainer Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/fezandipiti.mp3'\n    }\n  ],\n  [\n    'ogerpon',\n    {\n      abilities: { first: 'defiant' },\n      baseForme: 'Teal',\n      baseStats: { hp: 80, atk: 120, def: 84, spa: 60, spd: 96, spe: 110 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1017,\n      otherFormes: [\n        'ogerponcornerstone',\n        'ogerponcornerstonetera',\n        'ogerponhearthflame',\n        'ogerponhearthflametera',\n        'ogerpontealtera',\n        'ogerponwellspring',\n        'ogerponwellspringtera'\n      ],\n      species: 'ogerpon',\n      types: [TypesEnum.Grass],\n      weightkg: 39.8,\n      classification: 'Mask Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ogerpon.mp3'\n    }\n  ],\n  [\n    'ogerponcornerstone',\n    {\n      abilities: { first: 'sturdy' },\n      baseSpecies: 'ogerpon',\n      baseStats: { hp: 80, atk: 120, def: 84, spa: 60, spd: 96, spe: 110 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Cornerstone',\n      formeLetter: 'C',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1017,\n      otherFormes: [\n        'ogerpon',\n        'ogerponcornerstonetera',\n        'ogerponhearthflame',\n        'ogerponhearthflametera',\n        'ogerpontealtera',\n        'ogerponwellspring',\n        'ogerponwellspringtera'\n      ],\n      species: 'ogerpon-cornerstone',\n      types: [TypesEnum.Grass, TypesEnum.Rock],\n      weightkg: 39.8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ogerpon.mp3'\n    }\n  ],\n  [\n    'ogerponcornerstonetera',\n    {\n      abilities: { first: 'embodyaspectcornerstone' },\n      baseSpecies: 'ogerpon',\n      baseStats: { hp: 80, atk: 120, def: 84, spa: 60, spd: 96, spe: 110 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Cornerstone-Tera',\n      formeLetter: 'CT',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1017,\n      otherFormes: [\n        'ogerpon',\n        'ogerponcornerstone',\n        'ogerponhearthflame',\n        'ogerponhearthflametera',\n        'ogerpontealtera',\n        'ogerponwellspring',\n        'ogerponwellspringtera'\n      ],\n      species: 'ogerpon-cornerstonetera',\n      types: [TypesEnum.Grass, TypesEnum.Rock],\n      weightkg: 39.8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ogerpon.mp3'\n    }\n  ],\n  [\n    'ogerponhearthflame',\n    {\n      abilities: { first: 'moldbreaker' },\n      baseSpecies: 'ogerpon',\n      baseStats: { hp: 80, atk: 120, def: 84, spa: 60, spd: 96, spe: 110 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Hearthflame',\n      formeLetter: 'H',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1017,\n      otherFormes: [\n        'ogerpon',\n        'ogerponcornerstone',\n        'ogerponcornerstonetera',\n        'ogerponhearthflametera',\n        'ogerpontealtera',\n        'ogerponwellspring',\n        'ogerponwellspringtera'\n      ],\n      species: 'ogerpon-hearthflame',\n      types: [TypesEnum.Grass, TypesEnum.Fire],\n      weightkg: 39.8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ogerpon.mp3'\n    }\n  ],\n  [\n    'ogerponhearthflametera',\n    {\n      abilities: { first: 'embodyaspecthearthflame' },\n      baseSpecies: 'ogerpon',\n      baseStats: { hp: 80, atk: 120, def: 84, spa: 60, spd: 96, spe: 110 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Red',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Hearthflame-Tera',\n      formeLetter: 'HT',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1017,\n      otherFormes: [\n        'ogerpon',\n        'ogerponcornerstone',\n        'ogerponcornerstonetera',\n        'ogerponhearthflame',\n        'ogerpontealtera',\n        'ogerponwellspring',\n        'ogerponwellspringtera'\n      ],\n      species: 'ogerpon-hearthflametera',\n      types: [TypesEnum.Grass, TypesEnum.Fire],\n      weightkg: 39.8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ogerpon.mp3'\n    }\n  ],\n  [\n    'ogerponwellspring',\n    {\n      abilities: { first: 'waterabsorb' },\n      baseSpecies: 'ogerpon',\n      baseStats: { hp: 80, atk: 120, def: 84, spa: 60, spd: 96, spe: 110 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Wellspring',\n      formeLetter: 'W',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1017,\n      otherFormes: [\n        'ogerpon',\n        'ogerponcornerstone',\n        'ogerponcornerstonetera',\n        'ogerponhearthflame',\n        'ogerponhearthflametera',\n        'ogerpontealtera',\n        'ogerponwellspringtera'\n      ],\n      species: 'ogerpon-wellspring',\n      types: [TypesEnum.Grass, TypesEnum.Water],\n      weightkg: 39.8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ogerpon.mp3'\n    }\n  ],\n  [\n    'ogerponwellspringtera',\n    {\n      abilities: { first: 'embodyaspectwellspring' },\n      baseSpecies: 'ogerpon',\n      baseStats: { hp: 80, atk: 120, def: 84, spa: 60, spd: 96, spe: 110 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Wellspring-Tera',\n      formeLetter: 'WT',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1017,\n      otherFormes: [\n        'ogerpon',\n        'ogerponcornerstone',\n        'ogerponcornerstonetera',\n        'ogerponhearthflame',\n        'ogerponhearthflametera',\n        'ogerpontealtera',\n        'ogerponwellspring'\n      ],\n      species: 'ogerpon-wellspringtera',\n      types: [TypesEnum.Grass, TypesEnum.Water],\n      weightkg: 39.8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ogerpon.mp3'\n    }\n  ],\n  [\n    'ogerpontealtera',\n    {\n      abilities: { first: 'embodyaspectteal' },\n      baseSpecies: 'ogerpon',\n      baseStats: { hp: 80, atk: 120, def: 84, spa: 60, spd: 96, spe: 110 },\n      catchRate: { base: 5, percentageWithOrdinaryPokeballAtFullHealth: '2.3%' },\n      color: 'Green',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 3, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Teal-Tera',\n      formeLetter: 'TT',\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1017,\n      otherFormes: [\n        'ogerpon',\n        'ogerponcornerstone',\n        'ogerponcornerstonetera',\n        'ogerponhearthflame',\n        'ogerponhearthflametera',\n        'ogerponwellspring',\n        'ogerponwellspringtera'\n      ],\n      species: 'ogerpon-tealtera',\n      types: [TypesEnum.Grass],\n      weightkg: 39.8,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ogerpon.mp3'\n    }\n  ],\n  [\n    'archaludon',\n    {\n      abilities: { first: 'stamina', second: 'sturdy', hidden: 'stalwart' },\n      baseStats: { hp: 90, atk: 105, def: 130, spa: 125, spd: 65, spe: 85 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'White',\n      eggGroups: ['Mineral', 'Dragon'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 2,\n      isEggObtainable: true,\n      levellingRate: 'Medium Fast',\n      num: 1018,\n      species: 'archaludon',\n      types: [TypesEnum.Steel, TypesEnum.Dragon],\n      weightkg: 60,\n      classification: 'Alloy Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/archaludon.mp3'\n    }\n  ],\n  [\n    'hydrapple',\n    {\n      abilities: {\n        first: 'supersweetsyrup',\n        second: 'regenerator',\n        hidden: 'stickyhold'\n      },\n      baseStats: { hp: 106, atk: 80, def: 110, spa: 120, spd: 80, spe: 44 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Green',\n      eggGroups: ['Grass', 'Dragon'],\n      evoLevel: 'Level up while knowing Dragon Cheer',\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.8,\n      isEggObtainable: true,\n      levellingRate: 'Erratic',\n      num: 1019,\n      prevo: 'dipplin',\n      species: 'hydrapple',\n      types: [TypesEnum.Grass, TypesEnum.Dragon],\n      weightkg: 93,\n      classification: 'Apple Hydra Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/hydrapple.mp3'\n    }\n  ],\n  [\n    'gougingfire',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 105, atk: 115, def: 121, spa: 65, spd: 93, spe: 91 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Brown',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 3.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1020,\n      species: 'Gouging Fire',\n      types: [TypesEnum.Fire, TypesEnum.Dragon],\n      weightkg: 590,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/gougingfire.mp3'\n    }\n  ],\n  [\n    'ragingbolt',\n    {\n      abilities: { first: 'protosynthesis' },\n      baseStats: { hp: 125, atk: 73, def: 91, spa: 137, spd: 89, spe: 75 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Yellow',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 5.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1021,\n      species: 'Raging Bolt',\n      types: [TypesEnum.Electric, TypesEnum.Dragon],\n      weightkg: 480,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ragingbolt.mp3'\n    }\n  ],\n  [\n    'ironboulder',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 90, atk: 120, def: 80, spa: 68, spd: 108, spe: 124 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Gray',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 0, spd: 0, spe: 3 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1022,\n      species: 'Iron Boulder',\n      types: [TypesEnum.Rock, TypesEnum.Psychic],\n      weightkg: 162.5,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ironboulder.mp3'\n    }\n  ],\n  [\n    'ironcrown',\n    {\n      abilities: { first: 'quarkdrive' },\n      baseStats: { hp: 90, atk: 72, def: 100, spa: 122, spd: 108, spe: 98 },\n      catchRate: { base: 10, percentageWithOrdinaryPokeballAtFullHealth: '3.9%' },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 0, spa: 3, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.6,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 12850,\n      num: 1023,\n      species: 'Iron Crown',\n      types: [TypesEnum.Steel, TypesEnum.Psychic],\n      weightkg: 156,\n      classification: 'Paradox Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/ironcrown.mp3'\n    }\n  ],\n  [\n    'terapagos',\n    {\n      abilities: { first: 'terashift' },\n      baseForme: 'Normal',\n      baseStats: { hp: 90, atk: 65, def: 85, spa: 65, spd: 85, spe: 60 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 1, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.2,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1024,\n      otherFormes: ['terapagosterastal', 'terapagosstellar'],\n      species: 'terapagos',\n      types: [TypesEnum.Normal],\n      weightkg: 6.5,\n      classification: 'Tera Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/terapagos.mp3'\n    }\n  ],\n  [\n    'terapagosterastal',\n    {\n      abilities: { first: 'terashell' },\n      baseSpecies: 'terapagos',\n      baseStats: { hp: 95, atk: 95, def: 110, spa: 105, spd: 110, spe: 85 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 2, spa: 0, spd: 2, spe: 0 },\n      forme: 'Terastal',\n      formeLetter: 'T',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1024,\n      otherFormes: ['terapagos', 'terapagosstellar'],\n      species: 'terapagos-terastal',\n      types: [TypesEnum.Normal],\n      weightkg: 16,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/terapagos.mp3'\n    }\n  ],\n  [\n    'terapagosstellar',\n    {\n      abilities: { first: 'teraformzero' },\n      baseSpecies: 'terapagos',\n      baseStats: { hp: 160, atk: 105, def: 110, spa: 130, spd: 110, spe: 85 },\n      catchRate: {\n        base: 255,\n        percentageWithOrdinaryPokeballAtFullHealth: '43.9%'\n      },\n      color: 'Blue',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 3, atk: 0, def: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'Stellar',\n      formeLetter: 'S',\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.7,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1024,\n      otherFormes: ['terapagos', 'terapagosterastal'],\n      species: 'terapagos-stellar',\n      types: [TypesEnum.Normal],\n      weightkg: 77,\n      cry: 'https://play.pokemonshowdown.com/audio/cries/terapagos.mp3'\n    }\n  ],\n  [\n    'pecharunt',\n    {\n      abilities: { first: 'poisonpuppeteer' },\n      baseStats: { hp: 88, atk: 88, def: 160, spa: 88, spd: 88, spe: 88 },\n      catchRate: { base: 3, percentageWithOrdinaryPokeballAtFullHealth: '1.6%' },\n      color: 'Purple',\n      eggGroups: ['Undiscovered'],\n      evYields: { hp: 0, atk: 0, def: 3, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 0.3,\n      isEggObtainable: false,\n      levellingRate: 'Slow',\n      minimumHatchTime: 30840,\n      num: 1025,\n      species: 'pecharunt',\n      types: [TypesEnum.Poison, TypesEnum.Ghost],\n      weightkg: 0.3,\n      classification: 'Subjugation Pokémon',\n      cry: 'https://play.pokemonshowdown.com/audio/cries/pecharunt.mp3'\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/pokedex.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Collection } from '@discordjs/collection';\n\n/** The entire PokéDex of Pokémon */\nexport const Pokedex = new Collection<string, PokemonTypes.DexEntry>();\n"
  },
  {
    "path": "src/lib/assets/pokedex-data/pokestar.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { Pokedex } from '#dexdata/pokedex';\nimport { TypesEnum } from '#utils/pokemonTypes';\n\nconst entries: [string, PokemonTypes.DexEntry][] = [\n  [\n    'pokestarsmeargle',\n    {\n      abilities: { first: 'owntempo', second: 'technician', hidden: 'moody' },\n      baseStats: { hp: 55, atk: 20, def: 35, spa: 20, spd: 45, spe: 75 },\n      color: 'White',\n      eggGroups: ['Field'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5000,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarsmeargle.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarsmeargle.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarsmeargle.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarsmeargle.png',\n      species: 'Pokestar Smeargle',\n      types: [TypesEnum.Normal],\n      weightkg: 61\n    }\n  ],\n  [\n    'pokestarufo',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar UFO-PropU1'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5001,\n      otherFormes: ['pokestarufo2', 'pokestarufopropu2'],\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarufo.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarufo.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarufo.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarufo.png',\n      species: 'Pokestar UFO',\n      types: [TypesEnum.Flying, TypesEnum.Electric],\n      weightkg: 61,\n      aliases: ['pokestarpropu1', 'pokestarufof', 'pokestarufoflying', 'pokestarufopropu1', 'propu1', 'ufo', 'ufof', 'ufoflying', 'ufopropu1']\n    }\n  ],\n  [\n    'pokestarufo2',\n    {\n      abilities: { first: 'levitate' },\n      baseSpecies: 'pokestarufo',\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      forme: '2',\n      formeLetter: '2',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5001,\n      otherFormes: ['pokestarufo', 'pokestarufopropu2'],\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarufo2.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarufo2.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarufo2.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarufo2.png',\n      species: 'Pokestar UFO-2',\n      types: [TypesEnum.Psychic, TypesEnum.Electric],\n      weightkg: 61,\n      aliases: ['pokestarpropu2', 'propu2', 'ufo2', 'ufop', 'ufopropu2', 'ufopsychic']\n    }\n  ],\n  [\n    'pokestarbrycenman',\n    {\n      abilities: { first: 'levitate' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar Brycen-Man-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5002,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarbrycenman.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarbrycenman.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarbrycenman.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarbrycenman.png',\n      species: 'Pokestar Brycen-Man',\n      types: [TypesEnum.Dark, TypesEnum.Psychic],\n      weightkg: 61,\n      aliases: ['brycen', 'brycenman', 'brycenmanprop', 'pokestarbrycenmanprop', 'pokestarproph1', 'proph1']\n    }\n  ],\n  [\n    'pokestarmt',\n    {\n      abilities: { first: 'analytic' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar MT-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5003,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarmt.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarmt.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarmt.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarmt.png',\n      species: 'Pokestar MT',\n      types: [TypesEnum.Steel],\n      weightkg: 61,\n      aliases: ['mechatyranitar', 'mt', 'mtprop', 'pokestarmtprop', 'pokestarpropm1', 'propm1']\n    }\n  ],\n  [\n    'pokestarmt2',\n    {\n      abilities: { first: 'flashfire' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar MT2-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5004,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarmt2.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarmt2.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarmt2.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarmt2.png',\n      species: 'Pokestar MT2',\n      types: [TypesEnum.Steel, TypesEnum.Electric],\n      weightkg: 61,\n      aliases: ['mechatyranitar2', 'mt2', 'mt2prop', 'pokestarmt2prop', 'pokestarpropm2', 'propm2']\n    }\n  ],\n  [\n    'pokestartransport',\n    {\n      abilities: { first: 'motordrive' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar Transport-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5005,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestartransport.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestartransport.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestartransport.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestartransport.png',\n      species: 'Pokestar Transport',\n      types: [TypesEnum.Steel],\n      weightkg: 61,\n      aliases: ['pokestarpropt1', 'pokestartransportprop', 'propt1', 'transport', 'transportprop']\n    }\n  ],\n  [\n    'pokestargiant',\n    {\n      abilities: { first: 'hugepower' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar Giant-2', 'Pokestar Giant-PropO1', 'Pokestar Giant-PropO2'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5006,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestargiant.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestargiant.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestargiant.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestargiant.png',\n      species: 'Pokestar Giant',\n      types: [TypesEnum.Normal],\n      weightkg: 61,\n      aliases: [\n        'giant',\n        'giant2',\n        'giantpropo1',\n        'giantpropo2',\n        'monica',\n        'monica2',\n        'pokestargiant2',\n        'pokestargiantpropo1',\n        'pokestargiantpropo2',\n        'pokestarmonica2',\n        'pokestarpropo1',\n        'pokestarpropo2',\n        'propo1',\n        'propo2'\n      ]\n    }\n  ],\n  [\n    'pokestarhumanoid',\n    {\n      abilities: { first: 'insomnia' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar Humanoid-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5007,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarhumanoid.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarhumanoid.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarhumanoid.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarhumanoid.png',\n      species: 'Pokestar Humanoid',\n      types: [TypesEnum.Normal],\n      weightkg: 61,\n      aliases: ['humanoidprop', 'pokestarhumanoidprop', 'pokestarpropc1', 'propc1']\n    }\n  ],\n  [\n    'pokestarmonster',\n    {\n      abilities: { first: 'pressure' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar Monster-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5008,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarmonster.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarmonster.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarmonster.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarmonster.png',\n      species: 'Pokestar Monster',\n      types: [TypesEnum.Dark],\n      weightkg: 61,\n      aliases: ['monsterprop', 'pokestarmonsterprop', 'pokestarpropc2', 'propc2']\n    }\n  ],\n  [\n    'pokestarf00',\n    {\n      abilities: { first: 'voltabsorb' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar F-00-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5009,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarf00.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarf00.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarf00.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarf00.png',\n      species: 'Pokestar F-00',\n      types: [TypesEnum.Steel, TypesEnum.Normal],\n      weightkg: 61,\n      aliases: ['f00', 'f00prop', 'pokestarf00prop', 'pokestarpropr1', 'propr1']\n    }\n  ],\n  [\n    'pokestarf002',\n    {\n      abilities: { first: 'reckless' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar F-002-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5010,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarf002.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarf002.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarf002.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarf002.png',\n      species: 'Pokestar F-002',\n      types: [TypesEnum.Steel, TypesEnum.Normal],\n      weightkg: 61,\n      aliases: ['f002', 'f002prop', 'pokestarf002prop', 'pokestarpropr2', 'propr2']\n    }\n  ],\n  [\n    'pokestarspirit',\n    {\n      abilities: { first: 'wonderguard' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar Spirit-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '50%', female: '50%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5011,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarspirit.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarspirit.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarspirit.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarspirit.png',\n      species: 'Pokestar Spirit',\n      types: [TypesEnum.Dark, TypesEnum.Ghost],\n      weightkg: 61,\n      aliases: ['majin', 'pokestarpropg1', 'pokestarspiritprop', 'propg1', 'spirit', 'spiritprop']\n    }\n  ],\n  [\n    'pokestarblackdoor',\n    {\n      abilities: { first: 'earlybird' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar Black Door-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '0%', female: '100%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5012,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarblackdoor.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarblackdoor.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarblackdoor.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarblackdoor.png',\n      species: 'Pokestar Black Door',\n      types: [TypesEnum.Grass],\n      weightkg: 61,\n      aliases: ['blackdoor', 'blackdoorprop', 'pokestarblackdoorprop', 'pokestarpropw1', 'propw1']\n    }\n  ],\n  [\n    'pokestarwhitedoor',\n    {\n      abilities: { first: 'blaze' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar White Door-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5013,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarwhitedoor.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarwhitedoor.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarwhitedoor.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarwhitedoor.png',\n      species: 'Pokestar White Door',\n      types: [TypesEnum.Fire],\n      weightkg: 61,\n      aliases: ['pokestarpropw2', 'pokestarwhitedoorprop', 'propw2', 'whitedoor', 'whitedoorprop']\n    }\n  ],\n  [\n    'pokestarblackbelt',\n    {\n      abilities: { first: 'hugepower' },\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      cosmeticFormes: ['Pokestar Black Belt-Prop'],\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      genderRatio: { male: '100%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5014,\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarblackbelt.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarblackbelt.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarblackbelt.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarblackbelt.png',\n      species: 'Pokestar Black Belt',\n      types: [TypesEnum.Fighting],\n      weightkg: 61,\n      aliases: ['blackbeltprop', 'pokestarblackbeltprop', 'pokestarpropk1', 'propk1']\n    }\n  ],\n  [\n    'pokestarufopropu2',\n    {\n      abilities: { first: 'levitate' },\n      baseForme: 'Pokestar UFO',\n      baseStats: { hp: 100, atk: 100, def: 100, spa: 100, spd: 100, spe: 100 },\n      color: 'White',\n      eggGroups: ['Undiscovered'],\n      evYields: { atk: 0, def: 0, hp: 0, spa: 0, spd: 0, spe: 0 },\n      forme: 'PropU2',\n      genderRatio: { male: '0%', female: '0%' },\n      heightm: 1.5,\n      isEggObtainable: false,\n      num: -5001,\n      otherFormes: ['pokestarufo', 'pokestarufou2'],\n      specialBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back/pokestarufopropu2.png',\n      specialShinyBackSprite: 'https://play.pokemonshowdown.com/sprites/gen5-back-shiny/pokestarufopropu2.png',\n      specialShinySprite: 'https://play.pokemonshowdown.com/sprites/gen5-shiny/pokestarufopropu2.png',\n      specialSprite: 'https://play.pokemonshowdown.com/sprites/gen5/pokestarufopropu2.png',\n      species: 'Pokestar UFO-PropU2',\n      types: [TypesEnum.Psychic, TypesEnum.Electric],\n      weightkg: 61\n    }\n  ]\n];\n\nfor (const [key, value] of entries) {\n  value.key = key;\n\n  Pokedex.set(key, value);\n}\n"
  },
  {
    "path": "src/lib/assets/pokedex.ts",
    "content": "import { Pokedex } from '#dexdata/pokedex';\n\nimport '#dexdata/pokestar';\nimport '#dexdata/cap';\nimport '#dexdata/gen1';\nimport '#dexdata/gen2';\nimport '#dexdata/gen3';\nimport '#dexdata/gen4';\nimport '#dexdata/gen5';\nimport '#dexdata/gen6';\nimport '#dexdata/gen7';\nimport '#dexdata/gen8';\nimport '#dexdata/gen9';\n\n/** The entire PokéDex of Pokémon */\nexport { Pokedex as pokedex };\n"
  },
  {
    "path": "src/lib/assets/pokemon-source.ts",
    "content": "import type { IsNonStandard } from '#utils/isNonStandardEnum';\nimport type { TypesEnum } from '#utils/pokemonTypes';\n\nexport namespace PokemonTypes {\n  interface AliasEntry {\n    key?: string;\n    aliases?: string[];\n  }\n\n  export interface Types {\n    bug: number;\n\n    dark: number;\n\n    dragon: number;\n\n    electric: number;\n\n    fairy: number;\n\n    fighting: number;\n\n    fire: number;\n\n    flying: number;\n\n    ghost: number;\n\n    grass: number;\n\n    ground: number;\n\n    ice: number;\n\n    normal: number;\n\n    poison: number;\n\n    psychic: number;\n\n    rock: number;\n\n    steel: number;\n\n    water: number;\n  }\n\n  export interface GenderEntry {\n    female: string;\n\n    male: string;\n  }\n\n  export interface Stats<T extends number = number> {\n    atk: T;\n\n    def: T;\n\n    hp: T;\n\n    spa: T;\n\n    spd: T;\n\n    spe: T;\n  }\n\n  export interface Abilities {\n    first: string;\n\n    hidden?: string;\n\n    second?: string;\n\n    special?: string;\n  }\n\n  export interface CatchRateEntry {\n    base: number;\n\n    percentageWithOrdinaryPokeballAtFullHealth: string;\n  }\n\n  export interface DexEntry extends AliasEntry {\n    abilities: Abilities;\n\n    baseForme?: string;\n\n    baseSpecies?: string;\n\n    baseStats: Stats;\n\n    catchRate?: CatchRateEntry;\n\n    classification?: string;\n    respelling?: string;\n    ipa?: string;\n\n    color: `${Capitalize<'Black' | 'Blue' | 'Brown' | 'Gray' | 'Green' | 'Pink' | 'Purple' | 'Red' | 'White' | 'Yellow'>}`;\n\n    cosmeticFormes?: string[];\n\n    cry?: string;\n\n    eggGroups?: `${Capitalize<\n      | 'Monster'\n      | 'Water 1'\n      | 'Bug'\n      | 'Flying'\n      | 'Field'\n      | 'Fairy'\n      | 'Grass'\n      | 'Ground'\n      | 'Human-Like'\n      | 'Water 3'\n      | 'Mineral'\n      | 'Amorphous'\n      | 'Water 2'\n      | 'Ditto'\n      | 'Dragon'\n      | 'Undiscovered'\n    >}`[];\n\n    evoLevel?: string | number;\n\n    evos?: string[];\n\n    evYields: Stats<0 | 1 | 2 | 3>;\n\n    forme?: string;\n\n    formeLetter?: string;\n\n    genderRatio?: GenderEntry;\n\n    heightm: number;\n\n    isEggObtainable: boolean;\n\n    levellingRate?: LevellingRateUnion;\n\n    minimumHatchTime?: number;\n\n    num: number;\n\n    otherFormes?: string[];\n\n    prevo?: string;\n\n    specialBackSprite?: string;\n\n    specialBulbapediaUrl?: string;\n\n    specialShinyBackSprite?: string;\n\n    specialShinySprite?: string;\n\n    specialSprite?: string;\n\n    species: string;\n\n    types: TypesEnum[];\n\n    weightkg: number;\n\n    mythical?: boolean;\n\n    legendary?: boolean;\n  }\n\n  export interface Ability extends AliasEntry {\n    desc?: string;\n\n    isFieldAbility?: string;\n\n    isNonstandard?: IsNonStandard;\n\n    name: string;\n\n    shortDesc: string;\n  }\n\n  export interface Item extends AliasEntry {\n    desc: string;\n\n    gen: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n\n    isNonstandard?: IsNonStandard;\n\n    keyItem?: boolean;\n\n    name: string;\n\n    shortDesc?: string;\n\n    specialSprite?: string;\n  }\n\n  export interface Move extends AliasEntry {\n    accuracy: number;\n\n    basePower: string;\n\n    category: MoveCategoryUnion;\n\n    contestType?: string;\n\n    desc?: string;\n\n    isFieldMove?: string;\n\n    isGMax?: string;\n\n    isNonstandard?: IsNonStandard;\n\n    isZ?: string;\n\n    maxMovePower?: number;\n\n    name: string;\n\n    pp: number;\n\n    priority: number;\n\n    shortDesc: string;\n\n    target: MoveTargetUnion;\n\n    type: `${Capitalize<keyof Types>}`;\n\n    zMovePower?: number;\n  }\n\n  export interface LearnsetMove {\n    generation: number | null;\n\n    name: string | null;\n  }\n\n  export interface LearnsetLevelupMove extends LearnsetMove {\n    level: number | null;\n  }\n\n  export type RecordStringArray = Record<string, string[]>;\n\n  export interface TypeDataset {\n    doubleEffectiveTypes: (keyof Types)[];\n\n    doubleResistedTypes: (keyof Types)[];\n\n    effectiveTypes: (keyof Types)[];\n\n    effectlessTypes: (keyof Types)[];\n\n    multi: Types;\n\n    normalTypes: (keyof Types)[];\n\n    resistedTypes: (keyof Types)[];\n  }\n\n  export interface TypeMatchups {\n    damageDealt: Types;\n\n    damageTaken: Types;\n  }\n\n  export interface FlavorText {\n    flavor_text: string;\n\n    version_id: string;\n  }\n\n  export type LevellingRateUnion = 'Slow' | 'Medium Slow' | 'Medium Fast' | 'Fast' | 'Erratic' | 'Fluctuating';\n  export type MoveCategoryUnion = 'Physical' | 'Special' | 'Status';\n  export type MoveTargetUnion =\n    | 'Random'\n    | 'Self'\n    | 'Adjacent Ally or Self'\n    | 'Adjacent Foes'\n    | 'All Adjacent'\n    | 'Adjacent Ally'\n    | 'Any'\n    | 'Foe that last hit user'\n    | \"Foe's Side\"\n    | \"Ally's Side\"\n    | 'Normal'\n    | 'All';\n\n  export interface Natures {\n    key?: string;\n    name: string;\n\n    increasedStat: string | null;\n\n    decreasedStat: string | null;\n\n    preferredFlavor: string | null;\n\n    dislikedFlavor: string | null;\n  }\n}\n"
  },
  {
    "path": "src/lib/assets/typechart.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { TypesEnum } from '#utils/pokemonTypes';\nimport { Collection } from '@discordjs/collection';\n\n/** The type effectiveness typechart in Pokémon */\nexport const typechart = new Collection<TypesEnum, PokemonTypes.TypeMatchups>([\n  [\n    TypesEnum.Bug,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 1,\n        dragon: 0,\n        electric: 0,\n        fairy: 2,\n        fighting: 2,\n        fire: 2,\n        flying: 2,\n        ghost: 2,\n        grass: 1,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 2,\n        psychic: 1,\n        rock: 0,\n        steel: 2,\n        water: 0\n      },\n      damageTaken: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 2,\n        fire: 1,\n        flying: 1,\n        ghost: 0,\n        grass: 2,\n        ground: 2,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 1,\n        steel: 0,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Dark,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 2,\n        dragon: 0,\n        electric: 0,\n        fairy: 2,\n        fighting: 2,\n        fire: 0,\n        flying: 0,\n        ghost: 1,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 1,\n        rock: 0,\n        steel: 0,\n        water: 0\n      },\n      damageTaken: {\n        bug: 1,\n        dark: 2,\n        dragon: 0,\n        electric: 0,\n        fairy: 1,\n        fighting: 1,\n        fire: 0,\n        flying: 0,\n        ghost: 2,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 3,\n        rock: 0,\n        steel: 0,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Dragon,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 0,\n        dragon: 1,\n        electric: 0,\n        fairy: 3,\n        fighting: 0,\n        fire: 0,\n        flying: 0,\n        ghost: 0,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 0,\n        steel: 2,\n        water: 0\n      },\n      damageTaken: {\n        bug: 0,\n        dark: 0,\n        dragon: 1,\n        electric: 2,\n        fairy: 1,\n        fighting: 0,\n        fire: 2,\n        flying: 0,\n        ghost: 0,\n        grass: 2,\n        ground: 0,\n        ice: 1,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 0,\n        steel: 0,\n        water: 2\n      }\n    }\n  ],\n  [\n    TypesEnum.Electric,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 0,\n        dragon: 2,\n        electric: 2,\n        fairy: 0,\n        fighting: 0,\n        fire: 0,\n        flying: 1,\n        ghost: 0,\n        grass: 2,\n        ground: 3,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 0,\n        steel: 0,\n        water: 1\n      },\n      damageTaken: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 2,\n        fairy: 0,\n        fighting: 0,\n        fire: 0,\n        flying: 2,\n        ghost: 0,\n        grass: 0,\n        ground: 1,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 0,\n        steel: 2,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Fairy,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 1,\n        dragon: 1,\n        electric: 0,\n        fairy: 0,\n        fighting: 1,\n        fire: 2,\n        flying: 0,\n        ghost: 0,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 2,\n        psychic: 0,\n        rock: 0,\n        steel: 2,\n        water: 0\n      },\n      damageTaken: {\n        bug: 2,\n        dark: 2,\n        dragon: 3,\n        electric: 0,\n        fairy: 0,\n        fighting: 2,\n        fire: 0,\n        flying: 0,\n        ghost: 0,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 1,\n        psychic: 0,\n        rock: 0,\n        steel: 1,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Fighting,\n    {\n      damageDealt: {\n        bug: 2,\n        dark: 1,\n        dragon: 0,\n        electric: 0,\n        fairy: 2,\n        fighting: 0,\n        fire: 0,\n        flying: 2,\n        ghost: 3,\n        grass: 0,\n        ground: 0,\n        ice: 1,\n        normal: 1,\n        poison: 2,\n        psychic: 2,\n        rock: 1,\n        steel: 1,\n        water: 0\n      },\n      damageTaken: {\n        bug: 2,\n        dark: 2,\n        dragon: 0,\n        electric: 0,\n        fairy: 1,\n        fighting: 0,\n        fire: 0,\n        flying: 1,\n        ghost: 0,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 1,\n        rock: 2,\n        steel: 0,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Fire,\n    {\n      damageDealt: {\n        bug: 1,\n        dark: 0,\n        dragon: 2,\n        electric: 0,\n        fairy: 0,\n        fighting: 0,\n        fire: 2,\n        flying: 0,\n        ghost: 0,\n        grass: 1,\n        ground: 0,\n        ice: 1,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 2,\n        steel: 1,\n        water: 2\n      },\n      damageTaken: {\n        bug: 2,\n        dark: 0,\n        dragon: 0,\n        electric: 0,\n        fairy: 2,\n        fighting: 0,\n        fire: 2,\n        flying: 0,\n        ghost: 0,\n        grass: 2,\n        ground: 1,\n        ice: 2,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 1,\n        steel: 2,\n        water: 1\n      }\n    }\n  ],\n  [\n    TypesEnum.Flying,\n    {\n      damageDealt: {\n        bug: 1,\n        dark: 0,\n        dragon: 0,\n        electric: 2,\n        fairy: 0,\n        fighting: 1,\n        fire: 0,\n        flying: 0,\n        ghost: 0,\n        grass: 1,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 2,\n        steel: 2,\n        water: 0\n      },\n      damageTaken: {\n        bug: 2,\n        dark: 0,\n        dragon: 0,\n        electric: 1,\n        fairy: 0,\n        fighting: 2,\n        fire: 0,\n        flying: 0,\n        ghost: 0,\n        grass: 2,\n        ground: 3,\n        ice: 1,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 1,\n        steel: 0,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Ghost,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 2,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 0,\n        fire: 0,\n        flying: 0,\n        ghost: 1,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 3,\n        poison: 0,\n        psychic: 1,\n        rock: 0,\n        steel: 0,\n        water: 0\n      },\n      damageTaken: {\n        bug: 2,\n        dark: 1,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 3,\n        fire: 0,\n        flying: 0,\n        ghost: 1,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 3,\n        poison: 2,\n        psychic: 0,\n        rock: 0,\n        steel: 0,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Grass,\n    {\n      damageDealt: {\n        bug: 2,\n        dark: 0,\n        dragon: 2,\n        electric: 0,\n        fairy: 0,\n        fighting: 0,\n        fire: 2,\n        flying: 2,\n        ghost: 0,\n        grass: 2,\n        ground: 1,\n        ice: 0,\n        normal: 0,\n        poison: 2,\n        psychic: 0,\n        rock: 1,\n        steel: 2,\n        water: 1\n      },\n      damageTaken: {\n        bug: 1,\n        dark: 0,\n        dragon: 0,\n        electric: 2,\n        fairy: 0,\n        fighting: 0,\n        fire: 1,\n        flying: 1,\n        ghost: 0,\n        grass: 2,\n        ground: 2,\n        ice: 1,\n        normal: 0,\n        poison: 1,\n        psychic: 0,\n        rock: 0,\n        steel: 0,\n        water: 2\n      }\n    }\n  ],\n  [\n    TypesEnum.Ground,\n    {\n      damageDealt: {\n        bug: 2,\n        dark: 0,\n        dragon: 0,\n        electric: 1,\n        fairy: 0,\n        fighting: 0,\n        fire: 1,\n        flying: 3,\n        ghost: 0,\n        grass: 2,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 1,\n        psychic: 0,\n        rock: 1,\n        steel: 1,\n        water: 0\n      },\n      damageTaken: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 3,\n        fairy: 0,\n        fighting: 0,\n        fire: 0,\n        flying: 0,\n        ghost: 0,\n        grass: 1,\n        ground: 0,\n        ice: 1,\n        normal: 0,\n        poison: 2,\n        psychic: 0,\n        rock: 2,\n        steel: 0,\n        water: 1\n      }\n    }\n  ],\n  [\n    TypesEnum.Ice,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 0,\n        dragon: 1,\n        electric: 0,\n        fairy: 0,\n        fighting: 0,\n        fire: 2,\n        flying: 1,\n        ghost: 0,\n        grass: 1,\n        ground: 1,\n        ice: 2,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 0,\n        steel: 2,\n        water: 2\n      },\n      damageTaken: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 1,\n        fire: 1,\n        flying: 0,\n        ghost: 0,\n        grass: 0,\n        ground: 0,\n        ice: 2,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 1,\n        steel: 1,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Normal,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 0,\n        fire: 0,\n        flying: 0,\n        ghost: 3,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 2,\n        steel: 2,\n        water: 0\n      },\n      damageTaken: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 1,\n        fire: 0,\n        flying: 0,\n        ghost: 3,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 0,\n        steel: 0,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Poison,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 0,\n        fairy: 1,\n        fighting: 0,\n        fire: 0,\n        flying: 0,\n        ghost: 2,\n        grass: 1,\n        ground: 2,\n        ice: 0,\n        normal: 0,\n        poison: 2,\n        psychic: 0,\n        rock: 2,\n        steel: 3,\n        water: 0\n      },\n      damageTaken: {\n        bug: 2,\n        dark: 0,\n        dragon: 0,\n        electric: 0,\n        fairy: 2,\n        fighting: 2,\n        fire: 0,\n        flying: 0,\n        ghost: 0,\n        grass: 2,\n        ground: 1,\n        ice: 0,\n        normal: 0,\n        poison: 2,\n        psychic: 1,\n        rock: 0,\n        steel: 0,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Psychic,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 3,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 1,\n        fire: 0,\n        flying: 0,\n        ghost: 0,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 1,\n        psychic: 2,\n        rock: 0,\n        steel: 2,\n        water: 0\n      },\n      damageTaken: {\n        bug: 1,\n        dark: 1,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 2,\n        fire: 0,\n        flying: 0,\n        ghost: 1,\n        grass: 0,\n        ground: 0,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 2,\n        rock: 0,\n        steel: 0,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Rock,\n    {\n      damageDealt: {\n        bug: 1,\n        dark: 0,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 2,\n        fire: 1,\n        flying: 1,\n        ghost: 0,\n        grass: 0,\n        ground: 2,\n        ice: 1,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 0,\n        steel: 2,\n        water: 0\n      },\n      damageTaken: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 0,\n        fairy: 0,\n        fighting: 1,\n        fire: 2,\n        flying: 2,\n        ghost: 0,\n        grass: 1,\n        ground: 1,\n        ice: 0,\n        normal: 2,\n        poison: 2,\n        psychic: 0,\n        rock: 0,\n        steel: 1,\n        water: 1\n      }\n    }\n  ],\n  [\n    TypesEnum.Steel,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 2,\n        fairy: 1,\n        fighting: 0,\n        fire: 2,\n        flying: 0,\n        ghost: 0,\n        grass: 0,\n        ground: 0,\n        ice: 1,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 1,\n        steel: 2,\n        water: 2\n      },\n      damageTaken: {\n        bug: 2,\n        dark: 0,\n        dragon: 2,\n        electric: 0,\n        fairy: 2,\n        fighting: 1,\n        fire: 1,\n        flying: 2,\n        ghost: 0,\n        grass: 2,\n        ground: 1,\n        ice: 2,\n        normal: 2,\n        poison: 3,\n        psychic: 2,\n        rock: 2,\n        steel: 2,\n        water: 0\n      }\n    }\n  ],\n  [\n    TypesEnum.Water,\n    {\n      damageDealt: {\n        bug: 0,\n        dark: 0,\n        dragon: 2,\n        electric: 0,\n        fairy: 0,\n        fighting: 0,\n        fire: 1,\n        flying: 0,\n        ghost: 0,\n        grass: 2,\n        ground: 1,\n        ice: 0,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 1,\n        steel: 0,\n        water: 2\n      },\n      damageTaken: {\n        bug: 0,\n        dark: 0,\n        dragon: 0,\n        electric: 1,\n        fairy: 0,\n        fighting: 0,\n        fire: 2,\n        flying: 0,\n        ghost: 0,\n        grass: 1,\n        ground: 0,\n        ice: 2,\n        normal: 0,\n        poison: 0,\n        psychic: 0,\n        rock: 0,\n        steel: 2,\n        water: 2\n      }\n    }\n  ]\n]);\n"
  },
  {
    "path": "src/lib/mappers/abilityMapper.ts",
    "content": "import { pokedex } from '#assets/pokedex';\nimport type { PokemonTypes } from '#assets/pokemon-source';\nimport { mapPokemonDataToPokemonGraphQL, PokemonReferencedCallIdentifier } from '#mappers/pokemonMapper';\nimport type { Ability, Pokemon } from '#types/graphql-mapped-types';\nimport { addPropertyToObjectFieldBased } from '#utils/addPropertyToObject';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { isNullishOrEmpty, toTitleCase } from '@sapphire/utilities';\n\nexport function mapAbilityDataToAbilityGraphQL({\n  data,\n  requestedFields,\n  referencedCall = AbilityReferencedCallIdentifier.None\n}: MapAbilityDataToAbilityGraphQLParameters): Ability {\n  const abilityObject: Ability = {} as Ability;\n\n  addPropertyToObjectFieldBased({ objectTarget: abilityObject, propertyKey: 'key', propertyValue: data.key, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: abilityObject, propertyKey: 'name', propertyValue: data.name, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: abilityObject, propertyKey: 'desc', propertyValue: data.desc, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: abilityObject, propertyKey: 'shortDesc', propertyValue: data.shortDesc, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: abilityObject, propertyKey: 'isNonstandard', propertyValue: data.isNonstandard, requestedFields });\n  addPropertyToObjectFieldBased({\n    objectTarget: abilityObject,\n    propertyKey: 'isFieldAbility',\n    propertyValue: data.isFieldAbility,\n    requestedFields\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: abilityObject,\n    propertyKey: 'bulbapediaPage',\n    propertyValue: `https://bulbapedia.bulbagarden.net/wiki/${toTitleCase(data.name).replace(/ /g, '_')}_(Ability)`,\n    requestedFields\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: abilityObject,\n    propertyKey: 'serebiiPage',\n    propertyValue: `https://www.serebii.net/abilitydex/${data.name.replace(/ /g, '_').toLowerCase()}.shtml`,\n    requestedFields\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: abilityObject,\n    propertyKey: 'smogonPage',\n    propertyValue: `https://www.smogon.com/dex/ss/abilities/${data.name.toLowerCase().replace(/ /g, '_')}`,\n    requestedFields\n  });\n\n  if (requestedFields.hasStartsWith('pokemonThatHaveThisAbility.')) {\n    if (referencedCall === AbilityReferencedCallIdentifier.PokemonToAbility) {\n      Reflect.set(abilityObject, 'pokemonThatHaveThisAbility', []);\n    } else {\n      const pokemonThatHaveThisAbility = pokedex.filter(\n        (pokemon) =>\n          (!isNullishOrEmpty(pokemon.abilities.first) && pokemon.abilities.first === data.key) ||\n          (!isNullishOrEmpty(pokemon.abilities.second) && pokemon.abilities.second === data.key) ||\n          (!isNullishOrEmpty(pokemon.abilities.hidden) && pokemon.abilities.hidden === data.key) ||\n          (!isNullishOrEmpty(pokemon.abilities.special) && pokemon.abilities.special === data.key)\n      );\n\n      let pokemonData: Pokemon[] = [];\n\n      if (pokemonThatHaveThisAbility.size) {\n        const pokemonFields = requestedFields.filterStartsWith<keyof Pokemon>('pokemonThatHaveThisAbility.', true);\n        pokemonData = pokemonThatHaveThisAbility.map((pokemon) =>\n          mapPokemonDataToPokemonGraphQL({\n            data: pokemon,\n            requestedFields: pokemonFields,\n            referencedCall: PokemonReferencedCallIdentifier.AbilityToPokemon,\n            offsetFlavorTexts: 0,\n            takeFlavorTexts: 1,\n            reverseFlavorTexts: true\n          })\n        );\n      }\n\n      Reflect.set(abilityObject, 'pokemonThatHaveThisAbility', pokemonData);\n    }\n  }\n\n  return abilityObject;\n}\n\nexport const enum AbilityReferencedCallIdentifier {\n  None = 'none',\n  PokemonToAbility = 'pokemonToAbility'\n}\n\ninterface MapAbilityDataToAbilityGraphQLParameters {\n  data: PokemonTypes.Ability;\n  requestedFields: GraphQLSet<keyof Ability>;\n  referencedCall?: AbilityReferencedCallIdentifier;\n}\n"
  },
  {
    "path": "src/lib/mappers/itemMapper.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport type { Item } from '#types/graphql-mapped-types';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { addPropertyToObjectFieldBased } from '#utils/addPropertyToObject';\nimport { toLowerHyphenCase, toLowerSingleWordCase } from '#utils/utils';\nimport { toTitleCase } from '@sapphire/utilities';\n\nexport function mapItemDataToItemGraphQL({ data, requestedFields }: MapItemDataToItemGraphQLParameters): Item {\n  const itemObject: Item = {} as Item;\n\n  addPropertyToObjectFieldBased({ objectTarget: itemObject, propertyKey: 'isNonstandard', propertyValue: data.isNonstandard, requestedFields });\n  addPropertyToObjectFieldBased({\n    objectTarget: itemObject,\n    propertyKey: 'sprite',\n    propertyValue: data.specialSprite ?? `https://play.pokemonshowdown.com/sprites/itemicons/${toLowerHyphenCase(data.name)}.png`,\n    requestedFields\n  });\n  addPropertyToObjectFieldBased({ objectTarget: itemObject, propertyKey: 'generationIntroduced', propertyValue: data.gen, requestedFields });\n\n  addPropertyToObjectFieldBased({ objectTarget: itemObject, propertyKey: 'key', propertyValue: data.key, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: itemObject, propertyKey: 'name', propertyValue: data.name, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: itemObject, propertyKey: 'desc', propertyValue: data.desc, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: itemObject, propertyKey: 'shortDesc', propertyValue: data.shortDesc, requestedFields });\n  addPropertyToObjectFieldBased({\n    objectTarget: itemObject,\n    propertyKey: 'bulbapediaPage',\n    propertyValue: `https://bulbapedia.bulbagarden.net/wiki/${toTitleCase(data.name).replace(/ /g, '_')}`,\n    requestedFields\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: itemObject,\n    propertyKey: 'serebiiPage',\n    propertyValue: `https://www.serebii.net/itemdex/${toLowerSingleWordCase(data.name).replaceAll('é', 'e')}.shtml`,\n    requestedFields\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: itemObject,\n    propertyKey: 'smogonPage',\n    propertyValue: `https://www.smogon.com/dex/sv/items/${toLowerHyphenCase(data.name)}`,\n    requestedFields\n  });\n\n  return itemObject;\n}\n\ninterface MapItemDataToItemGraphQLParameters {\n  data: PokemonTypes.Item;\n  requestedFields: GraphQLSet<keyof Item>;\n}\n"
  },
  {
    "path": "src/lib/mappers/learnsetMapper.ts",
    "content": "import { learnsets } from '#assets/learnsets';\nimport { moves } from '#assets/moves';\nimport { pokedex } from '#assets/pokedex';\nimport type { PokemonTypes } from '#assets/pokemon-source';\nimport { mapMoveDataToMoveGraphQL } from '#mappers/moveMapper';\nimport type { Learnset, LearnsetLevelUpMove, LearnsetMove, Move, PokemonLearnset } from '#types/graphql-mapped-types';\nimport type { Generation, NonNullish } from '#types/utility-types';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { addPropertyToObjectFieldBased } from '#utils/addPropertyToObject';\nimport { parseSpeciesForSprite } from '#utils/sprite-parser';\nimport { toLowerSingleWordCase } from '#utils/utils';\nimport type { GetLearnsetArgs } from '#validations/getLearnsetArgs';\nimport { cast, isNullish } from '@sapphire/utilities';\n\nexport function mapPokemonAndMovesToLearnsetGraphQL({ args, requestedFields }: MapPokemonAndMovesToLearnsetGraphQLParams): Learnset | null {\n  const learnsetFromDataset = getLearnsetDataset(args.pokemon);\n\n  if (isNullish(learnsetFromDataset)) {\n    return null;\n  }\n\n  const learnset: Learnset = {} as Learnset;\n\n  if (learnsetFromDataset.eventOnly === undefined) {\n    const levelupMoves: LearnsetLevelUpMove[] = [];\n    const virtualTransferMoves: LearnsetMove[] = [];\n    const tutorMoves: LearnsetMove[] = [];\n    const tmMoves: LearnsetMove[] = [];\n    const eggMoves: LearnsetMove[] = [];\n    const eventMoves: LearnsetMove[] = [];\n    const dreamworldMoves: LearnsetMove[] = [];\n\n    for (const move of args.moves) {\n      if (Reflect.has(learnsetFromDataset, move)) {\n        const methods = learnsetFromDataset[move];\n\n        const {\n          virtualTransferMoves: generationalVirtualTransferMoves,\n          tutorMoves: generationalTutorMoves,\n          tmMoves: generationalTmMoves,\n          eggMoves: generationalEggMoves,\n          eventMoves: generationalEventMoves,\n          dreamworldMoves: generationalDreamworldMoves,\n          levelupMoves: generationalLevelupMoves\n        } = mapMoveAndMethodsToLearnsets({ move, methods, generation: args.generation as Generation, requestedFields });\n\n        levelupMoves.push(...generationalLevelupMoves);\n        virtualTransferMoves.push(...generationalVirtualTransferMoves);\n        tutorMoves.push(...generationalTutorMoves);\n        tmMoves.push(...generationalTmMoves);\n        eggMoves.push(...generationalEggMoves);\n        eventMoves.push(...generationalEventMoves);\n        dreamworldMoves.push(...generationalDreamworldMoves);\n      }\n    }\n\n    addLearnsetPropertiesToGraphQLObject({\n      objectTarget: learnset,\n      data: {\n        virtualTransferMoves,\n        tutorMoves,\n        tmMoves,\n        eggMoves,\n        eventMoves,\n        dreamworldMoves,\n        levelupMoves\n      },\n      requestedFields: cast<GraphQLSet<keyof PokemonLearnset>>(requestedFields)\n    });\n  }\n\n  if (shouldIncludePokemonDetails(requestedFields)) {\n    const pokemonEntry = pokedex.get(args.pokemon)!;\n\n    addPropertyToObjectFieldBased({\n      objectTarget: learnset,\n      propertyKey: 'sprite',\n      propertyValue: parseSpeciesForSprite({\n        pokemonName: pokemonEntry.species,\n        pokemonNumber: pokemonEntry.num,\n        baseSpecies: pokemonEntry.baseSpecies,\n        specialSprite: pokemonEntry.specialSprite,\n        specialShinySprite: pokemonEntry.specialShinySprite,\n        specialBackSprite: pokemonEntry.specialBackSprite,\n        specialShinyBackSprite: pokemonEntry.specialShinyBackSprite\n      }),\n      requestedFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: learnset,\n      propertyKey: 'shinySprite',\n      propertyValue: parseSpeciesForSprite({\n        pokemonName: pokemonEntry.species,\n        pokemonNumber: pokemonEntry.num,\n        baseSpecies: pokemonEntry.baseSpecies,\n        specialSprite: pokemonEntry.specialSprite,\n        specialShinySprite: pokemonEntry.specialShinySprite,\n        specialBackSprite: pokemonEntry.specialBackSprite,\n        specialShinyBackSprite: pokemonEntry.specialShinyBackSprite,\n        shiny: true\n      }),\n      requestedFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: learnset,\n      propertyKey: 'backSprite',\n      propertyValue: parseSpeciesForSprite({\n        pokemonName: pokemonEntry.species,\n        pokemonNumber: pokemonEntry.num,\n        baseSpecies: pokemonEntry.baseSpecies,\n        specialSprite: pokemonEntry.specialSprite,\n        specialShinySprite: pokemonEntry.specialShinySprite,\n        specialBackSprite: pokemonEntry.specialBackSprite,\n        specialShinyBackSprite: pokemonEntry.specialShinyBackSprite,\n        backSprite: true\n      }),\n      requestedFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: learnset,\n      propertyKey: 'shinyBackSprite',\n      propertyValue: parseSpeciesForSprite({\n        pokemonName: pokemonEntry.species,\n        pokemonNumber: pokemonEntry.num,\n        baseSpecies: pokemonEntry.baseSpecies,\n        specialSprite: pokemonEntry.specialSprite,\n        specialShinySprite: pokemonEntry.specialShinySprite,\n        specialBackSprite: pokemonEntry.specialBackSprite,\n        specialShinyBackSprite: pokemonEntry.specialShinyBackSprite,\n        shiny: true,\n        backSprite: true\n      }),\n      requestedFields\n    });\n\n    addPropertyToObjectFieldBased({\n      objectTarget: learnset,\n      propertyKey: 'num',\n      propertyValue: pokemonEntry.num,\n      requestedFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: learnset,\n      propertyKey: 'pokemonKey',\n      propertyValue: pokemonEntry.key!,\n      requestedFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: learnset,\n      propertyKey: 'color',\n      propertyValue: pokemonEntry.color,\n      requestedFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: learnset,\n      propertyKey: 'species',\n      propertyValue: pokemonEntry.species,\n      requestedFields\n    });\n  }\n\n  return learnset;\n}\n\nexport function getLearnsetDataset(pokemon: string): Record<string, string[]> | null {\n  let learnsetFromDataset = learnsets.get(pokemon);\n\n  let pokemonFromDataset: PokemonTypes.DexEntry | undefined = undefined;\n\n  // If the learnset is event only then overwrite it back to undefined to allow for further parsing\n  if (learnsetFromDataset?.eventOnly?.[0] === 'See base forme of this Pokémon') {\n    learnsetFromDataset = undefined;\n  }\n\n  // Attempt to get the learnset from the base species\n  if (!learnsetFromDataset) {\n    pokemonFromDataset = pokedex.get(toLowerSingleWordCase(pokemon));\n    learnsetFromDataset = learnsets.get(toLowerSingleWordCase(pokemonFromDataset?.baseSpecies ?? ''));\n  }\n\n  // If there is still no learnset then try to get it from other formes\n  if (!learnsetFromDataset) {\n    // First ensure the pokemon is retrieved from the dataset\n    if (!pokemonFromDataset) {\n      pokemonFromDataset = pokedex.get(toLowerSingleWordCase(pokemon));\n    }\n\n    for (const otherForm of pokemonFromDataset?.otherFormes ?? []) {\n      learnsetFromDataset = learnsets.get(toLowerSingleWordCase(otherForm));\n      if (learnsetFromDataset) {\n        break;\n      }\n    }\n  }\n\n  return learnsetFromDataset ?? null;\n}\n\nexport function mapPokemonToPokemonLearnsetGraphQL({\n  learnsetFromDataset,\n  generation,\n  requestedFields\n}: MapPokemonToPokemonLearnsetGraphQLParams): PokemonLearnset {\n  const pokemonLearnset: PokemonLearnset = {} as PokemonLearnset;\n\n  if (learnsetFromDataset.eventOnly === undefined) {\n    const levelupMoves: LearnsetLevelUpMove[] = [];\n    const virtualTransferMoves: LearnsetMove[] = [];\n    const tutorMoves: LearnsetMove[] = [];\n    const tmMoves: LearnsetMove[] = [];\n    const eggMoves: LearnsetMove[] = [];\n    const eventMoves: LearnsetMove[] = [];\n    const dreamworldMoves: LearnsetMove[] = [];\n\n    for (const [move, methods] of Object.entries(learnsetFromDataset)) {\n      const {\n        virtualTransferMoves: generationalVirtualTransferMoves,\n        tutorMoves: generationalTutorMoves,\n        tmMoves: generationalTmMoves,\n        eggMoves: generationalEggMoves,\n        eventMoves: generationalEventMoves,\n        dreamworldMoves: generationalDreamworldMoves,\n        levelupMoves: generationalLevelupMoves\n      } = mapMoveAndMethodsToLearnsets({ move, methods, generation, requestedFields });\n\n      levelupMoves.push(...generationalLevelupMoves);\n      virtualTransferMoves.push(...generationalVirtualTransferMoves);\n      tutorMoves.push(...generationalTutorMoves);\n      tmMoves.push(...generationalTmMoves);\n      eggMoves.push(...generationalEggMoves);\n      eventMoves.push(...generationalEventMoves);\n      dreamworldMoves.push(...generationalDreamworldMoves);\n    }\n\n    addLearnsetPropertiesToGraphQLObject({\n      objectTarget: pokemonLearnset,\n      data: {\n        levelupMoves,\n        virtualTransferMoves,\n        tutorMoves,\n        tmMoves,\n        eggMoves,\n        eventMoves,\n        dreamworldMoves\n      },\n      requestedFields\n    });\n  }\n\n  return pokemonLearnset;\n}\n\nfunction mapMoveAndMethodsToLearnsets({ move, methods, generation, requestedFields }: MapMoveAndMethodsToLearnsetsParams) {\n  const levelupMoves: LearnsetLevelUpMove[] = [];\n  const virtualTransferMoves: LearnsetMove[] = [];\n  const tutorMoves: LearnsetMove[] = [];\n  const tmMoves: LearnsetMove[] = [];\n  const eggMoves: LearnsetMove[] = [];\n  const eventMoves: LearnsetMove[] = [];\n  const dreamworldMoves: LearnsetMove[] = [];\n\n  for (const method of methods) {\n    if (generation && getMethodGeneration(method) !== generation) continue;\n\n    switch (getMethodType(method)) {\n      case 'L':\n        if (requestedFields.has('levelUpMoves')) {\n          levelupMoves.push(\n            createLevelupMove({\n              move,\n              level: getMethodLevel(method),\n              generation: getMethodGeneration(method),\n              requestedFields\n            })\n          );\n        }\n        break;\n      case 'V':\n        if (requestedFields.has('virtualTransferMoves')) {\n          virtualTransferMoves.push(\n            createLearnsetMove({\n              move,\n              generation: getMethodGeneration(method),\n              requestedFields,\n              requestedFieldsPrefix: 'virtualTransferMoves.move.'\n            })\n          );\n        }\n        break;\n      case 'T':\n        if (requestedFields.has('tutorMoves')) {\n          tutorMoves.push(\n            createLearnsetMove({\n              move,\n              generation: getMethodGeneration(method),\n              requestedFields,\n              requestedFieldsPrefix: 'tutorMoves.move.'\n            })\n          );\n        }\n        break;\n      case 'M':\n        if (requestedFields.has('tmMoves')) {\n          tmMoves.push(\n            createLearnsetMove({\n              move,\n              generation: getMethodGeneration(method),\n              requestedFields,\n              requestedFieldsPrefix: 'tmMoves.move.'\n            })\n          );\n        }\n        break;\n      case 'E':\n        if (requestedFields.has('eggMoves')) {\n          eggMoves.push(\n            createLearnsetMove({\n              move,\n              generation: getMethodGeneration(method),\n              requestedFields,\n              requestedFieldsPrefix: 'eggMoves.move.'\n            })\n          );\n        }\n        break;\n      case 'S':\n        if (requestedFields.has('eventMoves')) {\n          eventMoves.push(\n            createLearnsetMove({\n              move,\n              generation: getMethodGeneration(method),\n              requestedFields,\n              requestedFieldsPrefix: 'eventMoves.move.'\n            })\n          );\n        }\n        break;\n      case 'D':\n        if (requestedFields.has('dreamworldMoves')) {\n          dreamworldMoves.push(\n            createLearnsetMove({\n              move,\n              generation: getMethodGeneration(method),\n              requestedFields,\n              requestedFieldsPrefix: 'eggMoves.move.'\n            })\n          );\n        }\n        break;\n    }\n  }\n\n  return {\n    levelupMoves,\n    virtualTransferMoves,\n    tutorMoves,\n    tmMoves,\n    eggMoves,\n    eventMoves,\n    dreamworldMoves\n  };\n}\n\nfunction addLearnsetPropertiesToGraphQLObject({ objectTarget, data, requestedFields }: AddLearnsetPropertiesToGraphQLObjectParams) {\n  addPropertyToObjectFieldBased({\n    objectTarget,\n    propertyKey: 'levelUpMoves',\n    propertyValue: data.levelupMoves,\n    requestedFields\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget,\n    propertyKey: 'virtualTransferMoves',\n    propertyValue: data.virtualTransferMoves,\n    requestedFields\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget,\n    propertyKey: 'tutorMoves',\n    propertyValue: data.tutorMoves,\n    requestedFields\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget,\n    propertyKey: 'tmMoves',\n    propertyValue: data.tmMoves,\n    requestedFields\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget,\n    propertyKey: 'eggMoves',\n    propertyValue: data.eggMoves,\n    requestedFields\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget,\n    propertyKey: 'eventMoves',\n    propertyValue: data.eventMoves,\n    requestedFields\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget,\n    propertyKey: 'dreamworldMoves',\n    propertyValue: data.dreamworldMoves,\n    requestedFields\n  });\n}\n\nfunction createLearnsetMove({ move, generation, requestedFields, requestedFieldsPrefix }: CreateLearnsetMoveParameters): LearnsetMove {\n  const moveData = moves.get(move)!;\n\n  const requestedMoveFields = requestedFields.filterStartsWith<keyof Move>(requestedFieldsPrefix, true);\n\n  return {\n    move: mapMoveDataToMoveGraphQL({ data: moveData, requestedFields: requestedMoveFields }),\n    generation\n  };\n}\n\nfunction createLevelupMove({ level, ...params }: CreateLevelupMoveParameters): LearnsetLevelUpMove {\n  return {\n    ...createLearnsetMove({ ...params, requestedFieldsPrefix: 'levelUpMoves.move.' }),\n    level\n  };\n}\n\nfunction getMethodGeneration(method: string): Generation {\n  return parseInt(method.slice(0, 1), 10) as Generation;\n}\n\nfunction getMethodLevel(method: string): number {\n  return parseInt(method.slice(2), 10);\n}\n\nfunction getMethodType(method: string): MethodTypes {\n  return method.slice(1, 2) as MethodTypes;\n}\n\nfunction shouldIncludePokemonDetails(requestedFields: GraphQLSet<keyof Learnset>): boolean {\n  return (\n    requestedFields.has('sprite') ||\n    requestedFields.has('backSprite') ||\n    requestedFields.has('shinySprite') ||\n    requestedFields.has('shinyBackSprite') ||\n    requestedFields.has('num') ||\n    requestedFields.has('color') ||\n    requestedFields.has('species')\n  );\n}\n\ntype MethodTypes = 'L' | 'V' | 'T' | 'M' | 'E' | 'S' | 'D';\n\ninterface MapPokemonAndMovesToLearnsetGraphQLParams {\n  args: NonNullish<GetLearnsetArgs>;\n  requestedFields: GraphQLSet<keyof Learnset>;\n}\n\ninterface MapPokemonToPokemonLearnsetGraphQLParams {\n  learnsetFromDataset: Record<string, string[]>;\n  generation: Generation;\n  requestedFields: GraphQLSet<keyof PokemonLearnset>;\n}\n\ninterface MapMoveAndMethodsToLearnsetsParams {\n  move: string;\n  methods: string[];\n  generation: Generation;\n  requestedFields: GraphQLSet<keyof PokemonLearnset | keyof Learnset>;\n}\n\ninterface AddLearnsetPropertiesToGraphQLObjectParams {\n  objectTarget: PokemonLearnset | Learnset;\n  data: ReturnType<typeof mapMoveAndMethodsToLearnsets>;\n  requestedFields: GraphQLSet<keyof PokemonLearnset>;\n}\n\ninterface CreateLearnsetMoveParameters extends Pick<MapPokemonAndMovesToLearnsetGraphQLParams, 'requestedFields'> {\n  move: string;\n  generation: Generation;\n  requestedFieldsPrefix: `${\n    | 'levelUpMoves'\n    | 'dreamworldMoves'\n    | 'eggMoves'\n    | 'eventMoves'\n    | 'tmMoves'\n    | 'tutorMoves'\n    | 'virtualTransferMoves'}.move.`;\n}\n\ninterface CreateLevelupMoveParameters extends Omit<CreateLearnsetMoveParameters, 'requestedFieldsPrefix'> {\n  level: number;\n}\n"
  },
  {
    "path": "src/lib/mappers/moveMapper.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport type { Move } from '#types/graphql-mapped-types';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { addPropertyToObjectFieldBased } from '#utils/addPropertyToObject';\nimport { parseZCrystal, toLowerHyphenCase, toLowerSingleWordCase, toTitleSnakeCaseWithoutHyphenConvert } from '#utils/utils';\n\nexport function mapMoveDataToMoveGraphQL({ data, requestedFields }: MapMoveDataToMoveGraphQLParameters): Move {\n  const moveObject: Move = {} as Move;\n\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'key', propertyValue: data.key, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'name', propertyValue: data.name, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'desc', propertyValue: data.desc, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'shortDesc', propertyValue: data.shortDesc, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'type', propertyValue: data.type, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'contestType', propertyValue: data.contestType, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'basePower', propertyValue: data.basePower, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'pp', propertyValue: data.pp, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'category', propertyValue: data.category, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'accuracy', propertyValue: data.accuracy, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'priority', propertyValue: data.priority, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'target', propertyValue: data.target, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'isNonstandard', propertyValue: data.isNonstandard, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'isGMax', propertyValue: data.isGMax, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'isZ', propertyValue: parseZCrystal(data.isZ), requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'isFieldMove', propertyValue: data.isFieldMove, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: moveObject, propertyKey: 'maxMovePower', propertyValue: data.maxMovePower, requestedFields });\n  addPropertyToObjectFieldBased({\n    objectTarget: moveObject,\n    propertyKey: 'zMovePower',\n    propertyValue: parseZMovePower(data.basePower, data.zMovePower),\n    requestedFields\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: moveObject,\n    propertyKey: 'serebiiPage',\n    propertyValue: `https://www.serebii.net/attackdex-swsh/${toLowerSingleWordCase(data.name)}.shtml`,\n    requestedFields\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: moveObject,\n    propertyKey: 'bulbapediaPage',\n    propertyValue: `https://bulbapedia.bulbagarden.net/wiki/${toTitleSnakeCaseWithoutHyphenConvert(data.name)}_(move)`,\n    requestedFields\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: moveObject,\n    propertyKey: 'smogonPage',\n    propertyValue: `https://www.smogon.com/dex/ss/moves/${toLowerHyphenCase(data.name)}`,\n    requestedFields\n  });\n\n  return moveObject;\n}\n\n/**\n * Converts basePower and zMovePower to the correct Z-Move power, using datamined conversion table seen below.\n *\n * | Base move power  | Z-Move power |\n * |------------------|--------------|\n * | 0-55             | 100          |\n * | 60-65            | 120          |\n * | 70-75            | 140          |\n * | 80-85            | 160          |\n * | 90-95            | 175          |\n * | 100              | 180          |\n * | 110              | 185          |\n * | 120-125          | 190          |\n * | 130              | 195          |\n * | 140+             | 200          |\n * @param basePower The basepower of a move\n * @param zMovePower The z-move power of a move, if specified it is preferred.\n */\nfunction parseZMovePower(basePower: string, zMovePower: number | undefined): number {\n  // If zMovePower was defined on the move data then just return that value\n  if (typeof zMovePower === 'number') return zMovePower;\n\n  // If the basePower is 0 (status moves) then return 0\n  if (basePower === '0') return 0;\n\n  const basePowerAsNumber = Number(basePower);\n\n  if (basePowerAsNumber >= 0 && basePowerAsNumber <= 55) return 100;\n  if (basePowerAsNumber >= 60 && basePowerAsNumber <= 65) return 120;\n\n  if (basePowerAsNumber >= 70 && basePowerAsNumber <= 75) return 140;\n  if (basePowerAsNumber >= 80 && basePowerAsNumber <= 85) return 160;\n  if (basePowerAsNumber >= 90 && basePowerAsNumber <= 95) return 175;\n  if (basePowerAsNumber === 100) return 180;\n  if (basePowerAsNumber === 110) return 185;\n  if (basePowerAsNumber >= 120 && basePowerAsNumber <= 125) return 190;\n  if (basePowerAsNumber === 130) return 195;\n  if (basePowerAsNumber >= 140) return 200;\n\n  // If none of the cases matched then we return 0. This can happen if the move cannot be a Z-move\n  // Which is the case for moves that were exclusive to a game that didn't feature Z-Moves\n  // Such as \"Pika Papow\" and \"Veevee Volley\"\n  return 0;\n}\n\ninterface MapMoveDataToMoveGraphQLParameters {\n  data: PokemonTypes.Move;\n  requestedFields: GraphQLSet<keyof Move>;\n}\n"
  },
  {
    "path": "src/lib/mappers/natureMapper.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport type { Nature } from '#types/graphql-mapped-types';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { addPropertyToObjectFieldBased } from '#utils/addPropertyToObject';\n\nexport function mapNatureDataToNatureGraphQL({ data, requestedFields }: MapNatureDataToNatureGraphQLParameters): Nature {\n  const natureObject: Nature = {} as Nature;\n\n  addPropertyToObjectFieldBased({ objectTarget: natureObject, propertyKey: 'key', propertyValue: data.key, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: natureObject, propertyKey: 'name', propertyValue: data.name, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: natureObject, propertyKey: 'increasedStat', propertyValue: data.increasedStat, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: natureObject, propertyKey: 'decreasedStat', propertyValue: data.decreasedStat, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: natureObject, propertyKey: 'preferredFlavor', propertyValue: data.preferredFlavor, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: natureObject, propertyKey: 'dislikedFlavor', propertyValue: data.dislikedFlavor, requestedFields });\n\n  return natureObject;\n}\n\ninterface MapNatureDataToNatureGraphQLParameters {\n  data: PokemonTypes.Natures;\n  requestedFields: GraphQLSet<keyof Nature>;\n}\n"
  },
  {
    "path": "src/lib/mappers/pokemonMapper.ts",
    "content": "import { abilities } from '#assets/abilities';\nimport { pokedex } from '#assets/pokedex';\nimport type { PokemonTypes } from '#assets/pokemon-source';\nimport { AbilityReferencedCallIdentifier, mapAbilityDataToAbilityGraphQL } from '#mappers/abilityMapper';\nimport { getLearnsetDataset, mapPokemonToPokemonLearnsetGraphQL } from '#mappers/learnsetMapper';\nimport { mapTypesToTypeMatchupGraphQL } from '#mappers/typeMatchupMapper';\nimport type {\n  Abilities,\n  Ability,\n  CatchRate,\n  EvYields,\n  Flavor,\n  Gender,\n  GenerationalPokemonLearnset,\n  Pokemon,\n  PokemonLearnset,\n  PokemonType,\n  Stats,\n  TypeMatchup\n} from '#types/graphql-mapped-types';\nimport type { Generation, UnwrapArray } from '#types/utility-types';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { addPropertyToObjectConditional, addPropertyToObjectFieldBased } from '#utils/addPropertyToObject';\nimport { flavorsModule as flavors } from '#utils/flavorsModule';\nimport { formatsModule as formats } from '#utils/formatsModule';\nimport { speciesThatAreNotInGeneration8Nor9 } from '#utils/pastGenerationPokemon';\nimport type { TypesEnum } from '#utils/pokemonTypes';\nimport { parseSpeciesForSprite } from '#utils/sprite-parser';\nimport { toLowerHyphenCase, toLowerSingleWordCase } from '#utils/utils';\nimport { cast, toTitleCase } from '@sapphire/utilities';\n\nconst bulbapediaBaseUrlPrefix = 'https://bulbapedia.bulbagarden.net/wiki/';\nconst bulbapediaBaseUrlPostfix = '_(Pokémon)';\nconst serebiiBaseUrl = 'https://www.serebii.net/pokedex';\nconst smogonBaseUrl = 'https://www.smogon.com/dex';\n\nexport function mapPokemonDataToPokemonGraphQL({\n  data,\n  requestedFields,\n  offsetFlavorTexts = 0,\n  reverseFlavorTexts = true,\n  takeFlavorTexts = 1,\n  parsingPokemon = '',\n  recursingAs = false\n}: MapPokemonDataToPokemonGraphQLParameters) {\n  const resolvedRecursingAs = recursingAs ? (`${recursingAs}.` as const) : ('' as const);\n\n  const genderEntryRequestedFields = cast<GraphQLSet<keyof Gender>>(requestedFields);\n  const genderObject: Gender = {} as Gender;\n  const basePokemonGenderRatio: PokemonTypes.DexEntry['genderRatio'] = data.genderRatio || {\n    male: '50%',\n    female: '50%'\n  };\n  addPropertyToObjectFieldBased({\n    objectTarget: genderObject,\n    propertyKey: 'male',\n    propertyValue: basePokemonGenderRatio.male,\n    requestedFields: genderEntryRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}gender.male`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: genderObject,\n    propertyKey: 'female',\n    propertyValue: basePokemonGenderRatio.female,\n    requestedFields: genderEntryRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}gender.female`\n  });\n\n  const baseStatsRequestedFields = cast<GraphQLSet<keyof Stats>>(requestedFields);\n  const baseStatsObject: Stats = {} as Stats;\n  addPropertyToObjectFieldBased({\n    objectTarget: baseStatsObject,\n    propertyKey: 'hp',\n    propertyValue: data.baseStats.hp,\n    requestedFields: baseStatsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseStats.hp`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: baseStatsObject,\n    propertyKey: 'attack',\n    propertyValue: data.baseStats.atk,\n    requestedFields: baseStatsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseStats.attack`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: baseStatsObject,\n    propertyKey: 'defense',\n    propertyValue: data.baseStats.def,\n    requestedFields: baseStatsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseStats.defense`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: baseStatsObject,\n    propertyKey: 'specialattack',\n    propertyValue: data.baseStats.spa,\n    requestedFields: baseStatsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseStats.specialattack`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: baseStatsObject,\n    propertyKey: 'specialdefense',\n    propertyValue: data.baseStats.spd,\n    requestedFields: baseStatsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseStats.specialdefense`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: baseStatsObject,\n    propertyKey: 'speed',\n    propertyValue: data.baseStats.spe,\n    requestedFields: baseStatsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseStats.speed`\n  });\n\n  const evYieldsRequestedFields = cast<GraphQLSet<keyof EvYields>>(requestedFields);\n  const evYieldsObject: EvYields = {} as EvYields;\n  addPropertyToObjectFieldBased({\n    objectTarget: evYieldsObject,\n    propertyKey: 'hp',\n    propertyValue: data.evYields.hp,\n    requestedFields: evYieldsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}evYields.hp`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: evYieldsObject,\n    propertyKey: 'attack',\n    propertyValue: data.evYields.atk,\n    requestedFields: evYieldsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}evYields.attack`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: evYieldsObject,\n    propertyKey: 'defense',\n    propertyValue: data.evYields.def,\n    requestedFields: evYieldsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}evYields.defense`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: evYieldsObject,\n    propertyKey: 'specialattack',\n    propertyValue: data.evYields.spa,\n    requestedFields: evYieldsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}evYields.specialattack`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: evYieldsObject,\n    propertyKey: 'specialdefense',\n    propertyValue: data.evYields.spd,\n    requestedFields: evYieldsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}evYields.specialdefense`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: evYieldsObject,\n    propertyKey: 'speed',\n    propertyValue: data.evYields.spe,\n    requestedFields: evYieldsRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}evYields.speed`\n  });\n\n  const abilitiesObject: Abilities = {} as Abilities;\n\n  const abilitiesRequestedFields = requestedFields.filterStartsWith<keyof Abilities>(`${resolvedRecursingAs}abilities.`);\n  addPropertyToObjectFieldBased({\n    objectTarget: abilitiesObject,\n    propertyKey: 'first',\n    propertyValue: () =>\n      resolvedNestedAbility(\n        data.abilities.first,\n        abilitiesRequestedFields.filterStartsWith<keyof Ability>(`${resolvedRecursingAs}abilities.first.`, true)\n      ),\n    requestedFields: abilitiesRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}abilities.first`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: abilitiesObject,\n    propertyKey: 'second',\n    propertyValue: () =>\n      resolvedNestedAbility(\n        data.abilities.second,\n        abilitiesRequestedFields.filterStartsWith<keyof Ability>(`${resolvedRecursingAs}abilities.second.`, true)\n      ),\n    requestedFields: abilitiesRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}abilities.second`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: abilitiesObject,\n    propertyKey: 'hidden',\n    propertyValue: () =>\n      resolvedNestedAbility(\n        data.abilities.hidden,\n        abilitiesRequestedFields.filterStartsWith<keyof Ability>(`${resolvedRecursingAs}abilities.hidden.`, true)\n      ),\n    requestedFields: abilitiesRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}abilities.hidden`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: abilitiesObject,\n    propertyKey: 'special',\n    propertyValue: () =>\n      resolvedNestedAbility(\n        data.abilities.special,\n        abilitiesRequestedFields.filterStartsWith<keyof Ability>(`${resolvedRecursingAs}abilities.special.`, true)\n      ),\n    requestedFields: abilitiesRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}abilities.special`\n  });\n\n  const pokemonTypesArray: PokemonType[] = [];\n  const pokemonTypeRequestedFields = requestedFields.filterStartsWith<keyof PokemonType>(`${resolvedRecursingAs}types.`);\n\n  for (const type of data.types) {\n    const pokemonTypeObject: PokemonType = {} as PokemonType;\n\n    addPropertyToObjectFieldBased({\n      objectTarget: pokemonTypeObject,\n      propertyKey: 'name',\n      propertyValue: toTitleCase(type),\n      requestedFields: pokemonTypeRequestedFields,\n      fieldAccessor: `${resolvedRecursingAs}types.name`\n    });\n\n    addPropertyToObjectConditional({\n      objectTarget: pokemonTypeObject,\n      propertyKey: 'matchup',\n      propertyValue: () =>\n        resolveNestedType(type, pokemonTypeRequestedFields.filterStartsWith<keyof TypeMatchup>(`${resolvedRecursingAs}types.matchup.`, true)),\n      condition: pokemonTypeRequestedFields.hasStartsWith(`${resolvedRecursingAs}types.matchup.`)\n    });\n\n    if (Object.values(pokemonTypeObject).length) {\n      pokemonTypesArray.push(pokemonTypeObject);\n    }\n  }\n\n  const generationalLearnsetsObject: GenerationalPokemonLearnset = {} as GenerationalPokemonLearnset;\n  const generationalLearnsetsRequestedFields = requestedFields.filterStartsWith<keyof GenerationalPokemonLearnset>(\n    `${resolvedRecursingAs}learnsets.`\n  );\n\n  addPropertyToObjectConditional({\n    objectTarget: generationalLearnsetsObject,\n    propertyKey: 'generation3',\n    propertyValue: () =>\n      resolvedNestedLearnset(\n        parsingPokemon || toLowerSingleWordCase(data.species),\n        3,\n        generationalLearnsetsRequestedFields.filterStartsWith<keyof PokemonLearnset>(`${resolvedRecursingAs}learnsets.generation3.`, true)\n      ),\n    condition: generationalLearnsetsRequestedFields.hasStartsWith(`${resolvedRecursingAs}learnsets.generation3.`)\n  });\n\n  addPropertyToObjectConditional({\n    objectTarget: generationalLearnsetsObject,\n    propertyKey: 'generation4',\n    propertyValue: () =>\n      resolvedNestedLearnset(\n        parsingPokemon || toLowerSingleWordCase(data.species),\n        4,\n        generationalLearnsetsRequestedFields.filterStartsWith<keyof PokemonLearnset>(`${resolvedRecursingAs}learnsets.generation4.`, true)\n      ),\n    condition: generationalLearnsetsRequestedFields.hasStartsWith(`${resolvedRecursingAs}learnsets.generation4.`)\n  });\n\n  addPropertyToObjectConditional({\n    objectTarget: generationalLearnsetsObject,\n    propertyKey: 'generation5',\n    propertyValue: () =>\n      resolvedNestedLearnset(\n        parsingPokemon || toLowerSingleWordCase(data.species),\n        5,\n        generationalLearnsetsRequestedFields.filterStartsWith<keyof PokemonLearnset>(`${resolvedRecursingAs}learnsets.generation5.`, true)\n      ),\n    condition: generationalLearnsetsRequestedFields.hasStartsWith(`${resolvedRecursingAs}learnsets.generation5.`)\n  });\n\n  addPropertyToObjectConditional({\n    objectTarget: generationalLearnsetsObject,\n    propertyKey: 'generation6',\n    propertyValue: () =>\n      resolvedNestedLearnset(\n        parsingPokemon || toLowerSingleWordCase(data.species),\n        6,\n        generationalLearnsetsRequestedFields.filterStartsWith<keyof PokemonLearnset>(`${resolvedRecursingAs}learnsets.generation6.`, true)\n      ),\n    condition: generationalLearnsetsRequestedFields.hasStartsWith(`${resolvedRecursingAs}learnsets.generation6.`)\n  });\n\n  addPropertyToObjectConditional({\n    objectTarget: generationalLearnsetsObject,\n    propertyKey: 'generation7',\n    propertyValue: () =>\n      resolvedNestedLearnset(\n        parsingPokemon || toLowerSingleWordCase(data.species),\n        7,\n        generationalLearnsetsRequestedFields.filterStartsWith<keyof PokemonLearnset>(`${resolvedRecursingAs}learnsets.generation7.`, true)\n      ),\n    condition: generationalLearnsetsRequestedFields.hasStartsWith(`${resolvedRecursingAs}learnsets.generation7.`)\n  });\n\n  addPropertyToObjectConditional({\n    objectTarget: generationalLearnsetsObject,\n    propertyKey: 'generation8',\n    propertyValue: () =>\n      resolvedNestedLearnset(\n        parsingPokemon || toLowerSingleWordCase(data.species),\n        9,\n        generationalLearnsetsRequestedFields.filterStartsWith<keyof PokemonLearnset>(`${resolvedRecursingAs}learnsets.generation8.`, true)\n      ),\n    condition: generationalLearnsetsRequestedFields.hasStartsWith(`${resolvedRecursingAs}learnsets.generation8.`)\n  });\n\n  const catchRateRequestedFields = cast<GraphQLSet<keyof CatchRate>>(requestedFields);\n  const catchRateObject: CatchRate = {} as CatchRate;\n  const basePokemonCatchRate: PokemonTypes.DexEntry['catchRate'] = data.catchRate || {\n    base: 0,\n    percentageWithOrdinaryPokeballAtFullHealth: '0%'\n  };\n  addPropertyToObjectFieldBased({\n    objectTarget: catchRateObject,\n    propertyKey: 'base',\n    propertyValue: basePokemonCatchRate.base,\n    requestedFields: catchRateRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}catchRate.base`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: catchRateObject,\n    propertyKey: 'percentageWithOrdinaryPokeballAtFullHealth',\n    propertyValue: basePokemonCatchRate.percentageWithOrdinaryPokeballAtFullHealth,\n    requestedFields: catchRateRequestedFields,\n    fieldAccessor: `${resolvedRecursingAs}catchRate.percentageWithOrdinaryPokeballAtFullHealth`\n  });\n\n  const basePokemonArgs = {\n    offsetFlavorTexts,\n    takeFlavorTexts,\n    reverseFlavorTexts\n  };\n\n  const evolutionChain: Pokemon[] = [];\n  const preevolutionChain: Pokemon[] = [];\n\n  const pokemonData: Pokemon = {} as Pokemon;\n\n  addPropertyToObjectConditional({\n    objectTarget: pokemonData,\n    propertyKey: 'learnsets',\n    propertyValue: generationalLearnsetsObject,\n    condition: Boolean(Object.keys(generationalLearnsetsObject).length)\n  });\n  addPropertyToObjectConditional({\n    objectTarget: pokemonData,\n    propertyKey: 'abilities',\n    propertyValue: abilitiesObject,\n    condition: Boolean(Object.keys(abilitiesObject).length)\n  });\n  addPropertyToObjectConditional({\n    objectTarget: pokemonData,\n    propertyKey: 'types',\n    propertyValue: pokemonTypesArray,\n    condition: Boolean(pokemonTypesArray.length)\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'gender',\n    propertyValue: genderObject,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}gender`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'baseStats',\n    propertyValue: baseStatsObject,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseStats`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'evYields',\n    propertyValue: evYieldsObject,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}evYields`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'catchRate',\n    propertyValue: catchRateObject,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}catchRate`\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'key',\n    propertyValue: data.key,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}key`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'num',\n    propertyValue: data.num,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}num`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'species',\n    propertyValue: data.species,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}species`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'classification',\n    propertyValue: data.classification,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}classification`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'respelling',\n    propertyValue: data.respelling,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}respelling`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'ipa',\n    propertyValue: data.ipa,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}ipa`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'color',\n    propertyValue: data.color,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}color`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'cry',\n    propertyValue: data.cry,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}cry`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'eggGroups',\n    propertyValue: data.eggGroups,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}eggGroups`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'evolutionLevel',\n    propertyValue: data.evoLevel,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}evolutionLevel`\n  });\n\n  const smogonTier = formats[toLowerSingleWordCase(data.species)] || 'Undiscovered';\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'smogonTier',\n    propertyValue: smogonTier,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}smogonTier`\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'height',\n    propertyValue: data.heightm,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}height`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'weight',\n    propertyValue: data.weightkg,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}weight`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'forme',\n    propertyValue: data.forme,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}forme`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'formeLetter',\n    propertyValue: data.formeLetter,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}formeLetter`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'baseForme',\n    propertyValue: data.baseForme,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseForme`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'baseSpecies',\n    propertyValue: data.baseSpecies,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseSpecies`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'otherFormes',\n    propertyValue: data.otherFormes,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}otherFormes`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'cosmeticFormes',\n    propertyValue: data.cosmeticFormes,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}cosmeticFormes`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'baseStatsTotal',\n    propertyValue: parseBaseStatsTotal(data.baseStats),\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}baseStatsTotal`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'levellingRate',\n    propertyValue: data.levellingRate,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}levellingRate`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'minimumHatchTime',\n    propertyValue: data.minimumHatchTime,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}minimumHatchTime`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'maximumHatchTime',\n    propertyValue: parseMinimumHatchTimeForMaximumHatchTime(data.minimumHatchTime),\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}maximumHatchTime`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'isEggObtainable',\n    propertyValue: data.isEggObtainable,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}isEggObtainable`\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'serebiiPage',\n    propertyValue: parseSpeciesForSerebiiPage(data.baseSpecies ?? data.species, data.num, smogonTier),\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}serebiiPage`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'bulbapediaPage',\n    propertyValue: data.num >= 0 ? parseSpeciesForBulbapedia(data) : '',\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}bulbapediaPage`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'smogonPage',\n    propertyValue: parseSpeciesForSmogonPage(data.species, data.num, smogonTier),\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}smogonPage`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'sprite',\n    propertyValue: parseSpeciesForSprite({\n      pokemonName: data.species,\n      pokemonNumber: data.num,\n      baseSpecies: data.baseSpecies,\n      specialSprite: data.specialSprite,\n      specialShinySprite: data.specialShinySprite,\n      specialBackSprite: data.specialBackSprite,\n      specialShinyBackSprite: data.specialShinyBackSprite\n    }),\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}sprite`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'shinySprite',\n    propertyValue: parseSpeciesForSprite({\n      pokemonName: data.species,\n      pokemonNumber: data.num,\n      baseSpecies: data.baseSpecies,\n      specialSprite: data.specialSprite,\n      specialShinySprite: data.specialShinySprite,\n      specialBackSprite: data.specialBackSprite,\n      specialShinyBackSprite: data.specialShinyBackSprite,\n      shiny: true\n    }),\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}shinySprite`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'backSprite',\n    propertyValue: parseSpeciesForSprite({\n      pokemonName: data.species,\n      pokemonNumber: data.num,\n      baseSpecies: data.baseSpecies,\n      specialSprite: data.specialSprite,\n      specialShinySprite: data.specialShinySprite,\n      specialBackSprite: data.specialBackSprite,\n      specialShinyBackSprite: data.specialShinyBackSprite,\n      backSprite: true\n    }),\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}backSprite`\n  });\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'shinyBackSprite',\n    propertyValue: parseSpeciesForSprite({\n      pokemonName: data.species,\n      pokemonNumber: data.num,\n      baseSpecies: data.baseSpecies,\n      specialSprite: data.specialSprite,\n      specialShinySprite: data.specialShinySprite,\n      specialBackSprite: data.specialBackSprite,\n      specialShinyBackSprite: data.specialShinyBackSprite,\n      shiny: true,\n      backSprite: true\n    }),\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}shinyBackSprite`\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'flavorTexts',\n    propertyValue: [],\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}flavorTexts`\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'legendary',\n    propertyValue: data.legendary ?? false,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}legendary`\n  });\n\n  addPropertyToObjectFieldBased({\n    objectTarget: pokemonData,\n    propertyKey: 'mythical',\n    propertyValue: data.mythical ?? false,\n    requestedFields,\n    fieldAccessor: `${resolvedRecursingAs}mythical`\n  });\n\n  if ((requestedFields as GraphQLSet<string>).has(`${resolvedRecursingAs}flavorTexts`) && data.num >= 0) {\n    let shouldParseBaseForme = true;\n\n    if (data.forme) {\n      const formFlavors = flavors[`${data.num}${data.forme.toLowerCase()}`];\n\n      if (formFlavors) {\n        shouldParseBaseForme = false;\n\n        for (const formFlavor of formFlavors) {\n          const formFlavorEntry: Flavor = {} as Flavor;\n          formFlavorEntry.game = formFlavor.version_id;\n          formFlavorEntry.flavor = formFlavor.flavor_text;\n          pokemonData.flavorTexts.push(formFlavorEntry);\n        }\n      }\n    }\n\n    if (shouldParseBaseForme) {\n      const baseFlavors = flavors[data.num];\n\n      for (const baseFlavor of baseFlavors) {\n        const formFlavorEntry: Flavor = {} as Flavor;\n        formFlavorEntry.game = baseFlavor.version_id;\n        formFlavorEntry.flavor = baseFlavor.flavor_text;\n        pokemonData.flavorTexts.push(formFlavorEntry);\n      }\n    }\n\n    if (reverseFlavorTexts) {\n      pokemonData.flavorTexts.reverse();\n    }\n\n    pokemonData.flavorTexts = pokemonData.flavorTexts.slice(offsetFlavorTexts, offsetFlavorTexts + takeFlavorTexts);\n  }\n\n  if ((requestedFields as GraphQLSet<string>).has(`${resolvedRecursingAs}preevolutions`) && data.prevo && data.prevo !== parsingPokemon) {\n    const prevoPokemon = pokedex.get(data.prevo);\n    if (prevoPokemon) {\n      preevolutionChain.push(\n        mapPokemonDataToPokemonGraphQL({\n          data: pokedex.get(toLowerSingleWordCase(prevoPokemon.species))!,\n          requestedFields,\n          ...basePokemonArgs,\n          parsingPokemon: parseDataForEvolutionRecursion(data, prevoPokemon),\n          recursingAs: 'preevolutions'\n        })\n      );\n    }\n\n    addPropertyToObjectFieldBased({\n      objectTarget: pokemonData,\n      propertyKey: 'preevolutions',\n      propertyValue: preevolutionChain,\n      requestedFields,\n      fieldAccessor: `${resolvedRecursingAs}preevolutions`\n    });\n  }\n\n  if ((requestedFields as GraphQLSet<string>).has(`${resolvedRecursingAs}evolutions`) && data.evos && data.evos[0] !== parsingPokemon) {\n    for (const evo of data.evos) {\n      const evoPokemon = pokedex.get(toLowerSingleWordCase(evo));\n      if (evoPokemon) {\n        evolutionChain.push(\n          mapPokemonDataToPokemonGraphQL({\n            data: pokedex.get(toLowerSingleWordCase(evoPokemon.species))!,\n            requestedFields,\n            ...basePokemonArgs,\n            parsingPokemon: parseDataForEvolutionRecursion(data, evoPokemon),\n            recursingAs: 'evolutions'\n          })\n        );\n      }\n    }\n\n    addPropertyToObjectFieldBased({\n      objectTarget: pokemonData,\n      propertyKey: 'evolutions',\n      propertyValue: evolutionChain,\n      requestedFields,\n      fieldAccessor: `${resolvedRecursingAs}evolutions`\n    });\n  }\n\n  return pokemonData;\n}\n\nfunction resolvedNestedAbility(abilityKey: string | undefined, abilityRequestedFields: GraphQLSet<keyof Ability>): Ability | undefined {\n  if (abilityKey) {\n    const abilityFromDataset = abilities.get(abilityKey);\n\n    if (abilityFromDataset) {\n      return mapAbilityDataToAbilityGraphQL({\n        data: abilityFromDataset,\n        requestedFields: abilityRequestedFields,\n        referencedCall: AbilityReferencedCallIdentifier.PokemonToAbility\n      });\n    }\n  }\n\n  return undefined;\n}\n\nfunction resolveNestedType(type: UnwrapArray<PokemonTypes.DexEntry['types']>, typeRequestedFields: GraphQLSet<keyof TypeMatchup>): TypeMatchup {\n  return mapTypesToTypeMatchupGraphQL({ primaryType: toLowerSingleWordCase(type) as TypesEnum }, typeRequestedFields);\n}\n\nfunction resolvedNestedLearnset(\n  pokemon: string,\n  generation: Exclude<Generation, 1 | 2>,\n  pokemonLearnsetRequestedFields: GraphQLSet<keyof PokemonLearnset>\n): PokemonLearnset | null {\n  const learnsetFromDataset = getLearnsetDataset(pokemon);\n\n  if (!learnsetFromDataset) {\n    return null;\n  }\n\n  return mapPokemonToPokemonLearnsetGraphQL({\n    learnsetFromDataset,\n    generation,\n    requestedFields: pokemonLearnsetRequestedFields\n  });\n}\n\nfunction parseBaseStatsTotal(baseStats: PokemonTypes.Stats) {\n  return baseStats.hp + baseStats.atk + baseStats.def + baseStats.spa + baseStats.spd + baseStats.spe;\n}\n\nfunction parseMinimumHatchTimeForMaximumHatchTime(minimumHatchTime?: number) {\n  return minimumHatchTime ? minimumHatchTime + 256 : undefined;\n}\n\nfunction parseSpeciesForBulbapedia(pokemonData: PokemonTypes.DexEntry) {\n  if (pokemonData.specialBulbapediaUrl) {\n    return bulbapediaBaseUrlPrefix + pokemonData.specialBulbapediaUrl + bulbapediaBaseUrlPostfix;\n  }\n\n  if (pokemonData.baseSpecies) {\n    return bulbapediaBaseUrlPrefix + pokemonData.baseSpecies + bulbapediaBaseUrlPostfix;\n  }\n\n  return bulbapediaBaseUrlPrefix + pokemonData.species + bulbapediaBaseUrlPostfix;\n}\n\n/**\n * Parses data from a Pokémon into a valid Serebii URL\n * @param pokemonName The name of the Pokémon to parse, required for new Serebii pages\n * @param pokemonNumber The number of the Pokémon to parse, required for old Serebii pages\n * @param pokemonTier The smogon tier of the Pokémon, required to check if the Pokémon is available in Generation 9\n */\nfunction parseSpeciesForSerebiiPage(pokemonName: string, pokemonNumber: number, pokemonTier: string) {\n  // If the Pokémon has a number of 0 or lower (0 is Missingno, negatives are Smogon CAP and PokéStar) then it doesn't have a Serebii page\n  if (pokemonNumber <= 0) return '';\n\n  const parsedPokemonName = toLowerHyphenCase(pokemonName.replace(/:/g, ''));\n\n  // If the Pokémon is not in Generation 8 or 9 then build a Generation 7 based URL\n  if (speciesThatAreNotInGeneration8Nor9.includes(parsedPokemonName)) {\n    return `${serebiiBaseUrl}-sm/${pokemonNumber < 100 ? pokemonNumber.toString().padStart(3, '0') : pokemonNumber}.shtml`;\n  }\n\n  // If the Pokémon is `'past'` in Generation 9, but was not included in speciesThatAreNotInGeneration8Nor9\n  // or the Pokémon is within the numbers range for generation 8,\n  // then build a Generation 8 based URL\n  if (pokemonTier.toLowerCase() === 'past' || (pokemonNumber >= 810 && pokemonNumber <= 905)) {\n    return `${serebiiBaseUrl}-swsh/${pokemonName.replace(/ /g, '').toLowerCase()}`;\n  }\n\n  // If the Pokémon is available in Generation 9 then build a Generation 9 based URL\n  return `${serebiiBaseUrl}-sv/${pokemonName.replace(/ /g, '').toLowerCase()}`;\n}\n\nfunction parseDataForEvolutionRecursion(basePokemonData: PokemonTypes.DexEntry, _: PokemonTypes.DexEntry) {\n  if (basePokemonData.forme) {\n    return toLowerSingleWordCase(basePokemonData.species);\n  }\n\n  return toLowerSingleWordCase(basePokemonData.baseSpecies || basePokemonData.species);\n}\n\n/**\n * Parses data from a Pokémon into a valid Smogon Dex URL\n * @param pokemonName The name of the Pokémon to parse\n * @param pokemonNumber The number of the Pokémon to parse\n * @param pokemonTier The smogon tier of the Pokémon, required to check if the Pokémon is available in Generation 9\n */\nfunction parseSpeciesForSmogonPage(pokemonName: string, pokemonNumber: number, pokemonTier: string) {\n  // If the Pokémon is Missingno, then it doesn't have a Smogon Dex page\n  if (pokemonNumber === 0) return '';\n\n  const parsedPokemonName = toLowerHyphenCase(pokemonName.replace(/:/g, ''));\n\n  // If the Pokémon has a number of lower than 0 then it is CAP so we can always send the latest generation URL\n  if (pokemonNumber < 0) {\n    return `${smogonBaseUrl}/sv/pokemon/${parsedPokemonName}`;\n  }\n\n  // If the Pokémon is not in Generation 8 or 9 then build a Generation 7 based URL\n  if (speciesThatAreNotInGeneration8Nor9.includes(parsedPokemonName)) {\n    return `${smogonBaseUrl}/sm/pokemon/${parsedPokemonName}`;\n  }\n\n  // IF the pokemon is not ursaluna-bloodmoon\n  // AND the Pokémon is `'past'` in Generation 9, but was not included in `speciesThatAreNotInGeneration8Nor9`\n  // OR the Pokémon is within the numbers range for generation 8,\n  // then build a Generation 8 based URL\n  if (pokemonName !== 'ursaluna-bloodmoon' && (pokemonTier.toLowerCase() === 'past' || (pokemonNumber >= 810 && pokemonNumber <= 905))) {\n    return `${smogonBaseUrl}/ss/pokemon/${parsedPokemonName}`;\n  }\n\n  // If the Pokémon is available in Generation 9 then build a Generation 9 based URL\n  return `${smogonBaseUrl}/sv/pokemon/${parsedPokemonName}`;\n}\n\nexport const enum PokemonReferencedCallIdentifier {\n  None = 'none',\n  AbilityToPokemon = 'abilityToPokemon',\n  MoveToPokemon = 'moveToPokemon'\n}\n\ninterface MapPokemonDataToPokemonGraphQLParameters {\n  data: PokemonTypes.DexEntry;\n  requestedFields: GraphQLSet<keyof Pokemon>;\n  offsetFlavorTexts: number;\n  takeFlavorTexts: number;\n  reverseFlavorTexts: boolean;\n  referencedCall?: PokemonReferencedCallIdentifier;\n  parsingPokemon?: string;\n  recursingAs?: 'preevolutions' | 'evolutions' | false;\n}\n"
  },
  {
    "path": "src/lib/mappers/typeMatchupMapper.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { typechart } from '#assets/typechart';\nimport type { TypeEffectiveness, TypeMatchup } from '#types/graphql-mapped-types';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { addPropertyToObjectFieldBased } from '#utils/addPropertyToObject';\nimport type { GetTypeMatchupArgs } from '#validations/getTypeMatchupArgs';\nimport { filterNullish } from '@sapphire/utilities';\n\nexport function mapTypesToTypeMatchupGraphQL(args: GetTypeMatchupArgs, requestedFields: GraphQLSet<keyof TypeMatchup>): TypeMatchup {\n  const atk: PokemonTypes.TypeDataset = {\n    doubleEffectiveTypes: [],\n    doubleResistedTypes: [],\n    effectiveTypes: [],\n    effectlessTypes: [],\n    multi: {\n      bug: 1,\n      dark: 1,\n      dragon: 1,\n      electric: 1,\n      fairy: 1,\n      fighting: 1,\n      fire: 1,\n      flying: 1,\n      ghost: 1,\n      grass: 1,\n      ground: 1,\n      ice: 1,\n      normal: 1,\n      poison: 1,\n      psychic: 1,\n      rock: 1,\n      steel: 1,\n      water: 1\n    },\n    normalTypes: [],\n    resistedTypes: []\n  };\n\n  const def: PokemonTypes.TypeDataset = JSON.parse(JSON.stringify(atk));\n\n  if (args.primaryType === args.secondaryType) {\n    args.secondaryType = null;\n  }\n\n  const typesAsArray = [args.primaryType, args.secondaryType].filter(filterNullish);\n\n  for (const curType of typesAsArray) {\n    const dDealt = typechart.get(curType)!.damageDealt;\n    const dTaken = typechart.get(curType)!.damageTaken;\n\n    for (const [type, multiplier] of Object.entries(dTaken) as [keyof PokemonTypes.Types, 1 | 2 | 3][]) {\n      switch (multiplier) {\n        case 1:\n          def.multi[type] *= 2;\n          break;\n        case 2:\n          def.multi[type] *= 0.5;\n          break;\n        case 3:\n          def.multi[type] = 0;\n          break;\n      }\n    }\n\n    for (const [type, multiplier] of Object.entries(dDealt) as [keyof PokemonTypes.Types, 1 | 2 | 3][]) {\n      switch (multiplier) {\n        case 1:\n          atk.multi[type] *= 2;\n          break;\n        case 2:\n          atk.multi[type] *= 0.5;\n          break;\n        case 3:\n          atk.multi[type] = 0;\n          break;\n      }\n    }\n  }\n\n  const attackingTypeEntry: TypeEffectiveness = {} as TypeEffectiveness;\n  const defendingTypeEntry: TypeEffectiveness = {} as TypeEffectiveness;\n\n  if (requestedFields.has('attacking')) {\n    for (const [attack, multiplier] of Object.entries(atk.multi) as [keyof PokemonTypes.Types, 0 | 0.25 | 0.5 | 1 | 2 | 4][]) {\n      switch (multiplier) {\n        case 0:\n          atk.effectlessTypes.push(attack);\n          break;\n        case 0.25:\n          atk.doubleResistedTypes.push(attack);\n          break;\n        case 0.5:\n          atk.resistedTypes.push(attack);\n          break;\n        case 1:\n          atk.normalTypes.push(attack);\n          break;\n        case 2:\n          atk.effectiveTypes.push(attack);\n          break;\n        case 4:\n          atk.doubleEffectiveTypes.push(attack);\n          break;\n      }\n    }\n\n    const attackingTypeEntryFields = requestedFields.filterStartsWith<keyof TypeEffectiveness>('attacking.', true);\n    addPropertyToObjectFieldBased({\n      objectTarget: attackingTypeEntry,\n      propertyKey: 'doubleEffectiveTypes',\n      propertyValue: atk.doubleEffectiveTypes,\n      requestedFields: attackingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: attackingTypeEntry,\n      propertyKey: 'doubleResistedTypes',\n      propertyValue: atk.doubleResistedTypes,\n      requestedFields: attackingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: attackingTypeEntry,\n      propertyKey: 'effectiveTypes',\n      propertyValue: atk.effectiveTypes,\n      requestedFields: attackingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: attackingTypeEntry,\n      propertyKey: 'effectlessTypes',\n      propertyValue: atk.effectlessTypes,\n      requestedFields: attackingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: attackingTypeEntry,\n      propertyKey: 'normalTypes',\n      propertyValue: atk.normalTypes,\n      requestedFields: attackingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: attackingTypeEntry,\n      propertyKey: 'resistedTypes',\n      propertyValue: atk.resistedTypes,\n      requestedFields: attackingTypeEntryFields\n    });\n  }\n\n  if (requestedFields.has('defending')) {\n    for (const [defense, multiplier] of Object.entries(def.multi) as [keyof PokemonTypes.Types, 0 | 0.25 | 0.5 | 1 | 2 | 4][]) {\n      switch (multiplier) {\n        case 0:\n          def.effectlessTypes.push(defense);\n          break;\n        case 0.25:\n          def.doubleResistedTypes.push(defense);\n          break;\n        case 0.5:\n          def.resistedTypes.push(defense);\n          break;\n        case 1:\n          def.normalTypes.push(defense);\n          break;\n        case 2:\n          def.effectiveTypes.push(defense);\n          break;\n        case 4:\n          def.doubleEffectiveTypes.push(defense);\n          break;\n      }\n    }\n\n    const defendingTypeEntryFields = requestedFields.filterStartsWith<keyof TypeEffectiveness>('defending.', true);\n    addPropertyToObjectFieldBased({\n      objectTarget: defendingTypeEntry,\n      propertyKey: 'doubleEffectiveTypes',\n      propertyValue: def.doubleEffectiveTypes,\n      requestedFields: defendingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: defendingTypeEntry,\n      propertyKey: 'doubleResistedTypes',\n      propertyValue: def.doubleResistedTypes,\n      requestedFields: defendingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: defendingTypeEntry,\n      propertyKey: 'effectiveTypes',\n      propertyValue: def.effectiveTypes,\n      requestedFields: defendingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: defendingTypeEntry,\n      propertyKey: 'effectlessTypes',\n      propertyValue: def.effectlessTypes,\n      requestedFields: defendingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: defendingTypeEntry,\n      propertyKey: 'normalTypes',\n      propertyValue: def.normalTypes,\n      requestedFields: defendingTypeEntryFields\n    });\n    addPropertyToObjectFieldBased({\n      objectTarget: defendingTypeEntry,\n      propertyKey: 'resistedTypes',\n      propertyValue: def.resistedTypes,\n      requestedFields: defendingTypeEntryFields\n    });\n  }\n\n  const typeMatchups: TypeMatchup = {} as TypeMatchup;\n  addPropertyToObjectFieldBased({ objectTarget: typeMatchups, propertyKey: 'attacking', propertyValue: attackingTypeEntry, requestedFields });\n  addPropertyToObjectFieldBased({ objectTarget: typeMatchups, propertyKey: 'defending', propertyValue: defendingTypeEntry, requestedFields });\n\n  return typeMatchups;\n}\n"
  },
  {
    "path": "src/lib/resolvers/RootResolver.ts",
    "content": "import { getAbility, getFuzzyAbility } from '#resolvers/abilityResolvers';\nimport { getFuzzyItem, getItem } from '#resolvers/itemResolver';\nimport { getFuzzyLearnset, getLearnset } from '#resolvers/learnsetResolvers';\nimport { getFuzzyMove, getMove } from '#resolvers/moveResolvers';\nimport { getAllPokemon, getFuzzyPokemon, getPokemon, getPokemonByDexNumber } from '#resolvers/pokemonResolvers';\nimport { getTypeMatchup } from '#resolvers/typeResolver';\nimport { getNature, getAllNatures } from '#resolvers/natureResolver';\nimport { graphqlResolveInfoToRequestedFields } from '#utils/getRequestedFields';\nimport type { IExecutableSchemaDefinition } from '@graphql-tools/schema';\n\nexport const RootResolver: IExecutableSchemaDefinition['resolvers'] = {\n  Query: {\n    getAbility(_, args, _2, info) {\n      return getAbility(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getFuzzyAbility(_, args, _2, info) {\n      return getFuzzyAbility(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getPokemonByDexNumber(_, args, _2, info) {\n      return getPokemonByDexNumber(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getPokemon(_, args, _2, info) {\n      return getPokemon(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getFuzzyPokemon(_, args, _2, info) {\n      return getFuzzyPokemon(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getAllPokemon(_, args, _2, info) {\n      return getAllPokemon(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getItem(_, args, _2, info) {\n      return getItem(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getFuzzyItem(_, args, _2, info) {\n      return getFuzzyItem(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getMove(_, args, _2, info) {\n      return getMove(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getFuzzyMove(_, args, _2, info) {\n      return getFuzzyMove(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getTypeMatchup(_, args, _2, info) {\n      return getTypeMatchup(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getLearnset(_, args, _2, info) {\n      return getLearnset(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getFuzzyLearnset(_, args, _2, info) {\n      return getFuzzyLearnset(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getNature(_, args, _2, info) {\n      return getNature(args, graphqlResolveInfoToRequestedFields(info));\n    },\n    getAllNatures(_, _2, _3, info) {\n      return getAllNatures(graphqlResolveInfoToRequestedFields(info));\n    }\n  }\n};\n"
  },
  {
    "path": "src/lib/resolvers/abilityResolvers.ts",
    "content": "import { abilities } from '#assets/abilities';\nimport { mapAbilityDataToAbilityGraphQL } from '#mappers/abilityMapper';\nimport type { Ability } from '#types/graphql-mapped-types';\nimport { FuzzySearch } from '#utils/FuzzySearch';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { preParseInput } from '#utils/utils';\nimport { validateGetFuzzyAbilityArgs, type GetFuzzyAbilityArgs } from '#validations/fuzzyArgs/fuzzyAbilityArgs';\nimport { validateGetAbilityArgs, type GetAbilityArgs } from '#validations/getAbilityArgs';\n\nconst fuzzySearch = new FuzzySearch(abilities, ['name', 'aliases']);\n\n/**\n * Gets the details on a Pokémon ability, using the ability name\n */\nexport function getAbility(args: GetAbilityArgs, requestedFields: GraphQLSet<keyof Ability>): Ability {\n  args = validateGetAbilityArgs(args);\n\n  const abilityFromDataset = abilities.get(args.ability);\n\n  if (!abilityFromDataset) {\n    throw new Error(`No ability found for ${args.ability}`);\n  }\n\n  const graphqlObject = mapAbilityDataToAbilityGraphQL({ data: abilityFromDataset, requestedFields });\n\n  if (!graphqlObject) {\n    throw new Error(`Failed to get data for ability: ${args.ability}`);\n  }\n\n  return graphqlObject;\n}\n\n/**\n * Gets details on a Pokémon ability, using a fuzzy search on name\n *\n * This can be used to find multiple results based on the query\n *\n * By default only 1 result is returned. You can provide the arguments `take`, `offset`, and `reverse` to modify this behaviour.\n */\nexport function getFuzzyAbility(args: GetFuzzyAbilityArgs, requestedFields: GraphQLSet<keyof Ability>): Ability[] {\n  args = validateGetFuzzyAbilityArgs(args);\n\n  let { ability } = args;\n  const { offset, reverse, take } = args;\n\n  ability = preParseInput(ability);\n\n  const fuzzyResult = fuzzySearch.runFuzzy(ability);\n\n  if (reverse) {\n    fuzzyResult.reverse();\n  }\n\n  const fuzzyEntries = fuzzyResult.slice(offset!, offset! + take!);\n\n  if (!fuzzyEntries.length) {\n    throw new Error(`No abilities found for: ${args.ability}`);\n  }\n\n  const graphqlObjects = fuzzyEntries.map((abilityData) => mapAbilityDataToAbilityGraphQL({ data: abilityData, requestedFields }));\n\n  if (!graphqlObjects.length) {\n    throw new Error(`Failed to get data for ability: ${args.ability}`);\n  }\n\n  return graphqlObjects;\n}\n"
  },
  {
    "path": "src/lib/resolvers/itemResolver.ts",
    "content": "import { items } from '#assets/items';\nimport { mapItemDataToItemGraphQL } from '#mappers/itemMapper';\nimport type { Item } from '#types/graphql-mapped-types';\nimport { FuzzySearch } from '#utils/FuzzySearch';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { preParseInput } from '#utils/utils';\nimport { validateGetFuzzyItemArgs, type GetFuzzyItemArgs } from '#validations/fuzzyArgs/fuzzyItemArgs';\nimport { validateGetItemArgs, type GetItemArgs } from '#validations/getItemArgs';\n\nconst fuzzySearch = new FuzzySearch(items, ['name', 'aliases']);\n\n/**\n * Gets the details on a Pokémon item, using the item name\n */\nexport function getItem(args: GetItemArgs, requestedFields: GraphQLSet<keyof Item>): Item {\n  args = validateGetItemArgs(args);\n\n  const itemFromDataset = items.get(args.item);\n\n  if (!itemFromDataset) {\n    throw new Error(`No item found for ${args.item}`);\n  }\n\n  const graphqlObject = mapItemDataToItemGraphQL({ data: itemFromDataset, requestedFields });\n\n  if (!graphqlObject) {\n    throw new Error(`Failed to get data for item: ${args.item}`);\n  }\n\n  return graphqlObject;\n}\n\n/**\n * Gets details on a Pokémon item, using a fuzzy search on name\n *\n * This can be used to find multiple results based on the query\n *\n * By default only 1 result is returned. You can provide the arguments `take`, `offset`, and `reverse` to modify this behaviour.\n */\nexport function getFuzzyItem(args: GetFuzzyItemArgs, requestedFields: GraphQLSet<keyof Item>): Item[] {\n  args = validateGetFuzzyItemArgs(args);\n\n  let { item } = args;\n  const { offset, reverse, take } = args;\n\n  item = preParseInput(item);\n\n  const fuzzyResult = fuzzySearch.runFuzzy(item);\n\n  if (reverse) {\n    fuzzyResult.reverse();\n  }\n\n  const fuzzyEntries = fuzzyResult.slice(offset!, offset! + take!);\n\n  if (!fuzzyEntries.length) {\n    throw new Error(`No items found for: ${args.item}`);\n  }\n\n  const graphqlObjects = fuzzyEntries.map((itemData) => mapItemDataToItemGraphQL({ data: itemData, requestedFields }));\n\n  if (!graphqlObjects.length) {\n    throw new Error(`Failed to get data for item: ${args.item}`);\n  }\n\n  return graphqlObjects;\n}\n"
  },
  {
    "path": "src/lib/resolvers/learnsetResolvers.ts",
    "content": "import { moves } from '#assets/moves';\nimport { pokedex } from '#assets/pokedex';\nimport { mapPokemonAndMovesToLearnsetGraphQL } from '#mappers/learnsetMapper';\nimport { fuzzySearch as moveFuzzySearch } from '#resolvers/moveResolvers';\nimport { fuzzySearch as pokemonFuzzySearch } from '#resolvers/pokemonResolvers';\nimport type { Learnset } from '#types/graphql-mapped-types';\nimport type { NonNullish } from '#types/utility-types';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { toLowerSingleWordCase } from '#utils/utils';\nimport { validateGetLearnsetArgs, type GetLearnsetArgs } from '#validations/getLearnsetArgs';\nimport { lazy } from '@sapphire/utilities';\n\nconst formatter = lazy(() => new Intl.ListFormat('en', { style: 'long', type: 'conjunction' }));\n\n/**\n * Gets the learnsets for a given Pokémon and move.\n *\n * Multiple moves are possible by putting them in an array: `[move1, move2]`.\n *\n * You can also apply a generation filter (only results for the given generation will be returned) with the generation argument\n */\nexport function getLearnset(args: NonNullish<GetLearnsetArgs>, requestedFields: GraphQLSet<keyof Learnset>): Learnset {\n  args = validateGetLearnsetArgs(args);\n\n  const graphqlObject = mapPokemonAndMovesToLearnsetGraphQL({ args, requestedFields });\n\n  if (!graphqlObject) {\n    const movesString = args.moves.length > 1 ? 'moves' : 'move';\n    const movesList = formatter().format(args.moves);\n    const generationString = args.generation ? ` with generation filter set to ${args.generation}` : '';\n\n    throw new Error(`Failed to get learnsets for the combination of Pokémon \"${args.pokemon}\", and ${movesString} \"${movesList}\"${generationString}`);\n  }\n\n  return graphqlObject;\n}\n\n/**\n * Gets the learnset for a given Pokémon and move.\n *\n * A fuzzy search is performed to find a matching Pokémon and move\n *\n * Multiple moves are possible by putting them in an array: `[move1, move2]`.\n *\n * You can also apply a generation filter (only results for the given generation will be returned) with the generation argument\n */\nexport function getFuzzyLearnset(args: NonNullish<GetLearnsetArgs>, requestedFields: GraphQLSet<keyof Learnset>): Learnset {\n  args = validateGetLearnsetArgs(args);\n\n  // Try and get an exactly matching Pokémon\n  const pokemonData = pokedex.get(args.pokemon);\n\n  // If it not an exact move then perform a fuzzy search\n  if (!pokemonData) {\n    const fuzzyEntry = pokemonFuzzySearch.runFuzzy(args.pokemon);\n    if (fuzzyEntry === undefined || !fuzzyEntry.length) {\n      throw new Error(`Failed to get data for Pokémon: ${args.pokemon}`);\n    }\n    args.pokemon = toLowerSingleWordCase(fuzzyEntry[0].species);\n  }\n\n  for (const [index, move] of args.moves.entries()) {\n    // Try and get an exactly matching move\n    const moveFromDataset = moves.get(move);\n\n    // If it not an exact move then perform a fuzzy search\n    if (!moveFromDataset) {\n      const fuzzyEntry = moveFuzzySearch.runFuzzy(move);\n\n      if (fuzzyEntry === undefined || !fuzzyEntry.length) {\n        throw new Error(`Failed to get data for move: ${move}`);\n      }\n\n      // And overwrite the move at  this index with the proper entry\n      args.moves[index] = toLowerSingleWordCase(fuzzyEntry[0].name);\n    }\n  }\n\n  return getLearnset(args, requestedFields);\n}\n"
  },
  {
    "path": "src/lib/resolvers/moveResolvers.ts",
    "content": "import { moves } from '#assets/moves';\nimport { mapMoveDataToMoveGraphQL } from '#mappers/moveMapper';\nimport type { Move } from '#types/graphql-mapped-types';\nimport { FuzzySearch } from '#utils/FuzzySearch';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { preParseInput } from '#utils/utils';\nimport { validateGetFuzzyMoveArgs, type GetFuzzyMoveArgs } from '#validations/fuzzyArgs/fuzzyMoveArgs';\nimport { validateGetMoveArgs, type GetMoveArgs } from '#validations/getMoveArgs';\n\nexport const fuzzySearch = new FuzzySearch(moves, ['name', 'aliases']);\n\n/**\n * Gets the details on a Pokémon move, using the move name\n */\nexport function getMove(args: GetMoveArgs, requestedFields: GraphQLSet<keyof Move>): Move {\n  args = validateGetMoveArgs(args);\n\n  const moveFromDataset = moves.get(args.move);\n\n  if (!moveFromDataset) {\n    throw new Error(`No move found for ${args.move}`);\n  }\n\n  const graphqlObject = mapMoveDataToMoveGraphQL({ data: moveFromDataset, requestedFields });\n\n  if (!graphqlObject) {\n    throw new Error(`Failed to get data for move: ${args.move}`);\n  }\n\n  return graphqlObject;\n}\n\n/**\n * Gets details on a Pokémon move, using a fuzzy search on name\n *\n * This can be used to find multiple results based on the query\n *\n * By default only 1 result is returned. You can provide the arguments `take`, `offset`, and `reverse` to modify this behaviour.\n */\nexport function getFuzzyMove(args: GetFuzzyMoveArgs, requestedFields: GraphQLSet<keyof Move>): Move[] {\n  args = validateGetFuzzyMoveArgs(args);\n\n  let { move } = args;\n  const { offset, reverse, take } = args;\n\n  move = preParseInput(move);\n\n  const fuzzyResult = fuzzySearch.runFuzzy(move);\n\n  if (reverse) {\n    fuzzyResult.reverse();\n  }\n\n  const fuzzyEntries = fuzzyResult.slice(offset!, offset! + take!);\n\n  if (!fuzzyEntries.length) {\n    throw new Error(`No moves found for: ${args.move}`);\n  }\n\n  const graphqlObjects = fuzzyEntries.map((moveData) => mapMoveDataToMoveGraphQL({ data: moveData, requestedFields }));\n\n  if (!graphqlObjects.length) {\n    throw new Error(`Failed to get data for move: ${args.move}`);\n  }\n\n  return graphqlObjects;\n}\n"
  },
  {
    "path": "src/lib/resolvers/natureResolver.ts",
    "content": "import { natures } from '#assets/natures';\nimport { mapNatureDataToNatureGraphQL } from '#mappers/natureMapper';\nimport type { Nature } from '#types/graphql-mapped-types';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { preParseInput } from '#utils/utils';\nimport { validateGetNatureArgs, type GetNatureArgs } from '#validations/getNatureArgs';\n\nexport function getNature(args: GetNatureArgs, requestedFields: GraphQLSet<keyof Nature>): Nature {\n  args = validateGetNatureArgs(args);\n\n  const natureFromDataset = natures.get(preParseInput(args.nature));\n\n  if (!natureFromDataset) {\n    throw new Error(`No nature found for ${args.nature}`);\n  }\n\n  const graphqlObject = mapNatureDataToNatureGraphQL({ data: natureFromDataset, requestedFields });\n\n  if (!graphqlObject) {\n    throw new Error(`Failed to get data for nature: ${args.nature}`);\n  }\n\n  return graphqlObject;\n}\n\n/**\n * Returns a list of all Natures.\n *\n */\nexport function getAllNatures(requestedFields: GraphQLSet<keyof Nature>): Nature[] {\n  const graphqlObjects: Nature[] = [];\n\n  for (const natureData of natures.values()) {\n    graphqlObjects.push(\n      mapNatureDataToNatureGraphQL({\n        data: natureData,\n        requestedFields\n      })\n    );\n  }\n\n  if (!graphqlObjects.length) {\n    throw new Error('Failed to get data for Natures');\n  }\n\n  return graphqlObjects;\n}\n"
  },
  {
    "path": "src/lib/resolvers/pokemonResolvers.ts",
    "content": "import { pokedex } from '#assets/pokedex';\nimport { mapPokemonDataToPokemonGraphQL } from '#mappers/pokemonMapper';\nimport type { Pokemon } from '#types/graphql-mapped-types';\nimport type { NonNullish } from '#types/utility-types';\nimport { FuzzySearch } from '#utils/FuzzySearch';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { preParseInput } from '#utils/utils';\nimport { validateGetAllPokemonArgs, type GetAllPokemonArgs } from '#validations/pokemonArgs/getAllPokemonArgs';\nimport { validateGetFuzzyPokemonArgs, type GetFuzzyPokemonArgs } from '#validations/pokemonArgs/getFuzzyPokemonArgs';\nimport { validateGetPokemonArgs, type GetPokemonArgs } from '#validations/pokemonArgs/getPokemonArgs';\nimport { validateGetPokemonByDexNumberArgs, type GetPokemonByDexNumberArgs } from '#validations/pokemonArgs/getPokemonByDexNumberArgs';\n\nexport const fuzzySearch = new FuzzySearch(pokedex, ['num', 'species', 'aliases']);\n\n/**\n * Gets details on a single Pokémon based on National Pokédex number\n *\n * You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n *\n * **Reversal is applied before pagination!**\n */\nexport function getPokemonByDexNumber(args: NonNullish<GetPokemonByDexNumberArgs>, requestedFields: GraphQLSet<keyof Pokemon>): Pokemon {\n  args = validateGetPokemonByDexNumberArgs(args);\n\n  const pokemonFromDataset = pokedex.find((pokemon) => pokemon.num === args.number);\n\n  if (!pokemonFromDataset) {\n    throw new Error(`No Pokémon found for ${args.number}`);\n  }\n\n  const graphqlObject = mapPokemonDataToPokemonGraphQL({\n    data: pokemonFromDataset,\n    requestedFields,\n    offsetFlavorTexts: args.offsetFlavorTexts,\n    reverseFlavorTexts: args.reverseFlavorTexts,\n    takeFlavorTexts: args.takeFlavorTexts\n  });\n\n  if (!graphqlObject) {\n    throw new Error(`Failed to get data for Pokémon: ${args.number}`);\n  }\n\n  return graphqlObject;\n}\n\n/**\n * Gets details on a single Pokémon based on species name\n *\n * You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n *\n * **Reversal is applied before pagination!**\n */\nexport function getPokemon(args: NonNullish<GetPokemonArgs>, requestedFields: GraphQLSet<keyof Pokemon>): Pokemon {\n  args = validateGetPokemonArgs(args);\n\n  const pokemonData = pokedex.get(args.pokemon);\n\n  if (!pokemonData) {\n    throw new Error(`No Pokémon found for ${args.pokemon}`);\n  }\n\n  const graphqlObject = mapPokemonDataToPokemonGraphQL({\n    data: pokemonData,\n    offsetFlavorTexts: args.offsetFlavorTexts,\n    reverseFlavorTexts: args.reverseFlavorTexts,\n    takeFlavorTexts: args.takeFlavorTexts,\n    requestedFields\n  });\n\n  if (!graphqlObject) {\n    throw new Error(`Failed to get data for Pokémon: ${args.pokemon}`);\n  }\n\n  return graphqlObject;\n}\n\n/**\n * Returns a list of all the known Pokémon.\n *\n * For every Pokémon all the data on each requested field is returned.\n *\n * **_NOTE:_ To skip all CAP Pokémon, PokéStar Pokémon, and Missingno provide an `offset` of 89**\n *\n * You can provide `take` to limit the amount of Pokémon to return (default: 1), set the offset of where to start with `offset`, and reverse the entire array with `reverse`.\n *\n * You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n *\n * While the API will currently not rate limit the usage of this query, it may do so in the future.\n *\n * It is advisable to cache responses of this query.\n */\nexport function getAllPokemon(args: NonNullish<GetAllPokemonArgs>, requestedFields: GraphQLSet<keyof Pokemon>): Pokemon[] {\n  args = validateGetAllPokemonArgs(args);\n\n  const clonedPokedex = pokedex.clone();\n\n  if (args.reverse) {\n    clonedPokedex.reverse();\n  }\n\n  const pokemonValues = [...clonedPokedex.values()].slice(args.offset, args.offset + args.take);\n\n  const graphqlObjects: Pokemon[] = [];\n\n  for (const pokemonData of pokemonValues) {\n    graphqlObjects.push(\n      mapPokemonDataToPokemonGraphQL({\n        data: pokemonData,\n        requestedFields,\n        offsetFlavorTexts: 0,\n        reverseFlavorTexts: true,\n        takeFlavorTexts: 1\n      })\n    );\n  }\n\n  if (!graphqlObjects.length) {\n    throw new Error('Failed to get data for Pokémon');\n  }\n\n  return graphqlObjects;\n}\n\n/**\n * Gets details on one or more Pokémon based on species name\n *\n * You can provide `take` to limit the amount of Pokémon to return (default: 1), set the offset of where to start with `offset`, and reverse the entire array with `reverse`.\n *\n * You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n *\n * **Reversal is applied before pagination!**\n */\nexport function getFuzzyPokemon(args: NonNullish<GetFuzzyPokemonArgs>, requestedFields: GraphQLSet<keyof Pokemon>): Pokemon[] {\n  args = validateGetFuzzyPokemonArgs(args);\n\n  args.pokemon = parseFormeIdentifiers(preParseInput(args.pokemon));\n\n  let fuzzyEntries = fuzzySearch.runFuzzy(args.pokemon);\n\n  if (!fuzzyEntries.length) {\n    throw new Error(`No Pokémon found for ${args.pokemon}`);\n  }\n\n  if (args.reverse) {\n    fuzzyEntries.reverse();\n  }\n\n  fuzzyEntries = fuzzyEntries.slice(args.offset, args.offset + args.take);\n\n  const graphqlObjects: Pokemon[] = [];\n\n  for (const pokemonData of fuzzyEntries) {\n    graphqlObjects.push(\n      mapPokemonDataToPokemonGraphQL({\n        data: pokemonData,\n        requestedFields,\n        offsetFlavorTexts: args.offsetFlavorTexts,\n        reverseFlavorTexts: args.reverseFlavorTexts,\n        takeFlavorTexts: args.takeFlavorTexts\n      })\n    );\n  }\n\n  if (!graphqlObjects.length) {\n    throw new Error(`Failed to get data for Pokémon: ${args.pokemon}`);\n  }\n\n  return graphqlObjects;\n}\n\n/**\n * Parses a Pokémon-like string to have the different form identifiers in their proper places\n * @param pokemon The Pokémon-like string to parse\n * @example\n * ```ts\n * // Given\n * 'mega venusaur'\n * // Transforms into\n * 'venusaur-mega'\n * ```\n * @example\n * ```ts\n * // Given\n * 'gmax charizard'\n * // Transforms into\n * 'charizard-gmax'\n * ```\n * @example\n * ```ts\n * // Given\n * 'gigantamax charizard'\n * // Transforms into\n * 'charizard-gmax'\n * ```\n * @example\n * ```ts\n * // Given\n * 'alolan raichu'\n * // Transforms into\n * 'raichu-alola'\n * ```\n * @example\n * ```ts\n * // Given\n * 'alola raichu'\n * // Transforms into\n * 'raichu-alola'\n * ```\n * @example\n * ```ts\n * // Given\n * 'galar slowbro'\n * // Transforms into\n * 'slowbro-galar'\n * ```\n * @example\n * ```ts\n * // Given\n * 'galarian slowbro'\n * // Transforms into\n * 'slowbro-galar'\n * ```\n * @example\n * ```ts\n * // Given\n * 'paldean tauros'\n * // Transforms into\n * 'tauros-paldea'\n * ```\n */\nfunction parseFormeIdentifiers(pokemon: string) {\n  switch (pokemon.split(' ')[0]) {\n    case 'mega':\n      pokemon = `${pokemon.substring(pokemon.split(' ')[0].length + 1)}-mega`;\n      break;\n    case 'gigantamax':\n    case 'gmax':\n      pokemon = `${pokemon.substring(pokemon.split(' ')[0].length + 1)}-gmax`;\n      break;\n    case 'alola':\n    case 'alolan':\n      pokemon = `${pokemon.substring(pokemon.split(' ')[0].length + 1)}-alola`;\n      break;\n    case 'galar':\n    case 'galarian':\n      pokemon = `${pokemon.substring(pokemon.split(' ')[0].length + 1)}-galar`;\n      break;\n    case 'paldea':\n    case 'paldean':\n      pokemon = `${pokemon.substring(pokemon.split(' ')[0].length + 1)}-paldea`;\n      break;\n    default:\n      break;\n  }\n\n  if (pokemon.startsWith('mega')) {\n    pokemon = `${pokemon.substring(4, pokemon.length)}mega`;\n  }\n\n  if (pokemon.startsWith('gigantamax')) {\n    pokemon = `${pokemon.substring(10, pokemon.length)}gmax`;\n  } else if (pokemon.startsWith('gmax')) {\n    pokemon = `${pokemon.substring(4, pokemon.length)}gmax`;\n  }\n\n  if (pokemon.startsWith('alolan')) {\n    pokemon = `${pokemon.substring(6, pokemon.length)}alola`;\n  } else if (pokemon.startsWith('alola')) {\n    pokemon = `${pokemon.substring(5, pokemon.length)}alola`;\n  }\n\n  if (pokemon.startsWith('galarian')) {\n    pokemon = `${pokemon.substring(8, pokemon.length)}galar`;\n  } else if (pokemon.startsWith('galar')) {\n    pokemon = `${pokemon.substring(5, pokemon.length)}galar`;\n  }\n\n  if (pokemon.startsWith('paldean')) {\n    pokemon = `${pokemon.substring(7, pokemon.length)}paldea`;\n  } else if (pokemon.startsWith('paldea')) {\n    pokemon = `${pokemon.substring(6, pokemon.length)}paldea`;\n  }\n\n  return pokemon;\n}\n"
  },
  {
    "path": "src/lib/resolvers/typeResolver.ts",
    "content": "import { mapTypesToTypeMatchupGraphQL } from '#mappers/typeMatchupMapper';\nimport type { TypeMatchup } from '#types/graphql-mapped-types';\nimport type { GraphQLSet } from '#utils/GraphQLSet';\nimport { validateGetTypeMatchupArgs, type GetTypeMatchupArgs } from '#validations/getTypeMatchupArgs';\n\nexport function getTypeMatchup(args: GetTypeMatchupArgs, requestedFields: GraphQLSet<keyof TypeMatchup>): TypeMatchup {\n  args = validateGetTypeMatchupArgs(args);\n\n  const entry = mapTypesToTypeMatchupGraphQL(args, requestedFields);\n\n  if (entry === undefined) {\n    const resolvedTypeMatchupArgs = args.secondaryType ? `${args.primaryType} and ${args.secondaryType}` : args.primaryType;\n    throw new Error(`Failed to get type matchups for ${resolvedTypeMatchupArgs}`);\n  }\n\n  return entry;\n}\n"
  },
  {
    "path": "src/lib/types/graphql-mapped-types.ts",
    "content": "/*\n\nNOTE: THIS FILE IS AUTOGENERTED BY GRAPHQL CODEGEN BASED ON THE SCHEMA'S\nIN THE ROOT DIRECTORY OF THIS REPOSITORY\n\n*/\n\ntype Maybe<T> = T | null;\n\n/** A Pokémon's abilities entry */\ninterface Abilities {\n  /** The first ability of a Pokémon */\n  first: Ability;\n  /** The hidden ability of a Pokémon */\n  hidden?: Maybe<Ability>;\n  /** The second ability of a Pokémon */\n  second?: Maybe<Ability>;\n  /** The special ability of a Pokémon */\n  special?: Maybe<Ability>;\n}\n\n/** A single Pokémon ability entry */\ninterface Ability {\n  /** Bulbapedia page for an ability */\n  bulbapediaPage: string;\n  /** The long description for an ability */\n  desc?: Maybe<string>;\n  /** Whether this ability has effects outside of battle, and if so what the effect is */\n  isFieldAbility?: Maybe<string>;\n  /** Whether an ability is non-standard, and if it is why */\n  isNonstandard?: Maybe<string>;\n  /** The key of the ability as stored in the API */\n  key: string;\n  /** The name for an ability */\n  name: string;\n  /**\n   * The Pokémon that have this ability.\n   * Note that when querying this field and nesting deep into Pokemon.abilities, that the nested list\n   * will not have any values to prevent infinite looping data.\n   */\n  pokemonThatHaveThisAbility: Array<Maybe<Pokemon>>;\n  /** Serebii page for an ability */\n  serebiiPage: string;\n  /** The short description for an ability */\n  shortDesc: string;\n  /** Smogon page for an ability */\n  smogonPage: string;\n}\n/** A Pokémon catch rate entry */\ninterface CatchRate {\n  /** The base catch rate for a Pokémon that will be used to calculate the final catch rate */\n  base: number;\n  /** The chance to capture a Pokémon when an ordinary Poké Ball is thrown at full health without any status condition */\n  percentageWithOrdinaryPokeballAtFullHealth: string;\n}\n/** A Pokémon's EV yields */\ninterface EvYields {\n  /** The attack EV yield of a Pokémon */\n  attack: number;\n  /** The defense EV yield of a Pokémon */\n  defense: number;\n  /** The HP EV yield of a pokémon */\n  hp: number;\n  /** The special attack EV yield of a Pokémon */\n  specialattack: number;\n  /** The special defense EV yield of a Pokémon */\n  specialdefense: number;\n  /** The speed EV yield of a Pokémon */\n  speed: number;\n}\n/** A flavor text entry for a Pokémon */\ninterface Flavor {\n  /** The flavor text for this entry */\n  flavor: string;\n  /** The name of the game this flavor text is from */\n  game: string;\n}\n/** A Pokémon gender ratio entry */\ninterface Gender {\n  /** The percentage for female occurrences */\n  female: string;\n  /** The percentage of male occurrences */\n  male: string;\n}\n/** The learnset for each Pokémon split by generation */\ninterface GenerationalPokemonLearnset {\n  /** The learnset of this Pokémon in Generation 3 */\n  generation3: PokemonLearnset;\n  /** The learnset of this Pokémon in Generation 4 */\n  generation4: PokemonLearnset;\n  /** The learnset of this Pokémon in Generation 5 */\n  generation5: PokemonLearnset;\n  /** The learnset of this Pokémon in Generation 6 */\n  generation6: PokemonLearnset;\n  /** The learnset of this Pokémon in Generation 7 */\n  generation7: PokemonLearnset;\n  /** The learnset of this Pokémon in Generation 8 */\n  generation8: PokemonLearnset;\n}\n/** The variants of why an item or move can be non-standard in the current meta or generation. */\ndeclare enum IsNonStandard {\n  /** When set the item or move is from Smogon's CAP project and is not in the official Nintendo games. */\n  Cap = 'CAP',\n  /** When set the move can exclusively be used Pokémon Sword and Pokémon Shield as it requires Gigantamaxing your Pokémon. */\n  Gigantamax = 'Gigantamax',\n  /** When set the item or move is exclusive to the Let's Go Pikachu / Let's Go Eevee games. */\n  LetsGoPikachuEevee = 'LetsGoPikachuEevee',\n  /** When set the item or move is from a past generation. This means it is not available at all in the data of Generation 9. */\n  Past = 'Past',\n  /** When set the item or move is available within the generation 9 data, however is cannot currently be obtained. It is safe to presume that Gamefreak/Nintendo will add it in later DLC. */\n  Unobtainable = 'Unobtainable'\n}\n/** A single item entry */\ninterface Item {\n  /** Bulbapedia page for an item */\n  bulbapediaPage: string;\n  /** The long description for an item */\n  desc: string;\n  /** The generation in which this item was introduced */\n  generationIntroduced: number;\n  /** Whether an item is non-standard, and if it is why */\n  isNonstandard?: Maybe<string>;\n  /** The key of the item as stored in the API */\n  key: string;\n  /** The name for an item */\n  name: string;\n  /** Serebii page for an item */\n  serebiiPage: string;\n  /** The long description for an item */\n  shortDesc?: Maybe<string>;\n  /** Smogon page for an item */\n  smogonPage?: Maybe<string>;\n  /** The sprite for an item */\n  sprite: string;\n}\n\n/** A learnset entry */\ninterface Learnset {\n  /** The back sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive */\n  backSprite: string;\n  /** The PokéDex colour for the Pokémon */\n  color: string;\n  /** The moves that are exclusively learned in the Unova Dream World */\n  dreamworldMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that can be passed as egg moves */\n  eggMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that are exclusive to event variants of the Pokémon */\n  eventMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that can be learned through levelling up */\n  levelUpMoves?: Maybe<Array<LearnsetLevelUpMove>>;\n  /** The dex number for a Pokémon */\n  num: number;\n  /** The key of the Pokémon as stored in the API */\n  pokemonKey: string;\n  /** The shiny back sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive */\n  shinyBackSprite: string;\n  /** The shiny sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive */\n  shinySprite: string;\n  /** The species name for a Pokémon */\n  species: string;\n  /** The sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive */\n  sprite: string;\n  /** The moves that can be learned from a Technical Machine or Technical Record */\n  tmMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that can be learned from a move tutor */\n  tutorMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that can be learned through virtual console transfer */\n  virtualTransferMoves?: Maybe<Array<LearnsetMove>>;\n}\n/** A learnset level up move entry */\ninterface LearnsetLevelUpMove {\n  /** The generation in which this pokémon learned the move this way */\n  generation: number;\n  /** The level at which the move is learned */\n  level: number;\n  /** The move */\n  move: Move;\n}\n/** A learnset move entry */\ninterface LearnsetMove {\n  /** The generation in which this pokémon learned the move this way */\n  generation: number;\n  /** The move */\n  move: Move;\n}\n/** A single Pokémon move entry */\ninterface Move {\n  /** The accuracy for a move */\n  accuracy: number;\n  /** The base power for a move */\n  basePower: string;\n  /** Bulbapedia page for a move */\n  bulbapediaPage: string;\n  /** The category for a move */\n  category: string;\n  /** The contest type for a move */\n  contestType?: Maybe<string>;\n  /** The long description for a move */\n  desc?: Maybe<string>;\n  /** Whether this move can be used outside of battle, and if it can what the effect of the field move is */\n  isFieldMove?: Maybe<string>;\n  /** Whether this move is a G-MAX move, and if it is which Gigantamaxed Pokémon can use it */\n  isGMax?: Maybe<string>;\n  /** Whether a move is non-standard, and if it is why */\n  isNonstandard?: Maybe<string>;\n  /** Whether this move is a Z-Move, and if it is the Z-Crystal required to trigger it */\n  isZ?: Maybe<string>;\n  /** The key of the move as stored in the API */\n  key: string;\n  /** The power this move will have when used with its Max Move equivalent */\n  maxMovePower?: Maybe<number>;\n  /** The name for a move */\n  name: string;\n  /** The power points for a move */\n  pp: number;\n  /** The priority for a move */\n  priority: number;\n  /** Serebii page for a move */\n  serebiiPage: string;\n  /** The short description for a move */\n  shortDesc: string;\n  /** Smogon page for a move */\n  smogonPage: string;\n  /** The target for a move */\n  target: string;\n  /** The type for a move */\n  type: string;\n  /** The power this move will have when used with its Z-move equivalent */\n  zMovePower?: Maybe<number>;\n}\n\n/** A Pokémon's entry */\ninterface Pokemon {\n  /** The abilities for a Pokémon */\n  abilities: Abilities;\n  /** The back sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive */\n  backSprite: string;\n  /** Base form if this entry describes an alternate form */\n  baseForme?: Maybe<string>;\n  /** Base species if this entry describes a special form */\n  baseSpecies?: Maybe<string>;\n  /** Base stats for a Pokémon */\n  baseStats: Stats;\n  /** The total of all base stats for a Pokémon */\n  baseStatsTotal: number;\n  /** Bulbapedia page for a Pokémon */\n  bulbapediaPage: string;\n  /** The catch rate data for a Pokémon */\n  catchRate?: Maybe<CatchRate>;\n  /** The classification of a Pokémon as listed in the Pokedex */\n  classification?: Maybe<string>;\n  /** The respelling of the name of the Pokémon */\n  respelling?: Maybe<string>;\n  /** The International Phonetic Alphabet (IPA) representation of the name of the Pokémon */\n  ipa?: Maybe<string>;\n  /** The colour of a Pokémon as listed in the Pokedex */\n  color: string;\n  /** An URL to an mp3 file of the Pokémon's cry. */\n  cry?: Maybe<string>;\n  /** Any other *cosmetic* forms for a Pokémon, distinguished from other formes as cosmetic formes only change the look of the Pokémon, while other formes might also change an ability, move set or other data. */\n  cosmeticFormes?: Maybe<Array<string>>;\n  /** The egg groups a Pokémon is in */\n  eggGroups?: Maybe<Array<string>>;\n  /** The evolution level, or special method, for a Pokémon */\n  evolutionLevel?: Maybe<string>;\n  /** The evolutions for a Pokémon, if any */\n  evolutions?: Maybe<Array<Pokemon>>;\n  /** EV yields for a Pokémon */\n  evYields: EvYields;\n  /** The flavor texts for a Pokémon */\n  flavorTexts: Array<Flavor>;\n  /** The form identifier of a Pokémon */\n  forme?: Maybe<string>;\n  /** The single letter identifier of the form */\n  formeLetter?: Maybe<string>;\n  /** The gender data for a Pokémon */\n  gender: Gender;\n  /** The height of a Pokémon in meters */\n  height: number;\n  /** Whether the egg of a Pokémon is obtainable */\n  isEggObtainable: boolean;\n  /** The key of the Pokémon as stored in the API */\n  key: string;\n  /** The learnset for this pokemon */\n  learnsets?: Maybe<GenerationalPokemonLearnset>;\n  /** Whether this Pokémon is a legendary Pokémon. The list is based on what is provided by Bulbapedia. */\n  legendary: boolean;\n  /** The levelling rate of a Pokémon */\n  levellingRate?: Maybe<string>;\n  /** The maximum number of steps required for the egg of a Pokémon to hatch */\n  maximumHatchTime?: Maybe<number>;\n  /** The minimum number of steps required for the egg of a Pokémon to hatch */\n  minimumHatchTime?: Maybe<number>;\n  /** Whether this Pokémon is a mythical Pokémon. The list is based on what is provided by Bulbapedia. */\n  mythical: boolean;\n  /** The dex number for a Pokémon */\n  num: number;\n  /** Any other forms for a Pokémon */\n  otherFormes?: Maybe<Array<string>>;\n  /** The preevolutions for a Pokémon, if any */\n  preevolutions?: Maybe<Array<Pokemon>>;\n  /** Serebii page for a Pokémon */\n  serebiiPage: string;\n  /** The shiny back sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive */\n  shinyBackSprite: string;\n  /** The shiny sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive */\n  shinySprite: string;\n  /** Smogon page for a Pokémon */\n  smogonPage: string;\n  /** The smogon tier a Pokémon falls under */\n  smogonTier: string;\n  /** The species name for a Pokémon */\n  species: string;\n  /** The sprite for a Pokémon. For most Pokémon this will be the animated gif, with some exceptions that were older-gen exclusive */\n  sprite: string;\n  /** The types for a Pokémon */\n  types: Array<PokemonType>;\n  /** The weight of a Pokémon in kilograms */\n  weight: number;\n}\n\ninterface PokemonLearnset {\n  /** The moves that are exclusively learned in the Unova Dream World */\n  dreamworldMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that can be passed as egg moves */\n  eggMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that are exclusive to event variants of the Pokémon */\n  eventMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that can be learned through levelling up */\n  levelUpMoves?: Maybe<Array<LearnsetLevelUpMove>>;\n  /** The moves that can be learned from a Technical Machine or Technical Record */\n  tmMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that can be learned from a move tutor */\n  tutorMoves?: Maybe<Array<LearnsetMove>>;\n  /** The moves that can be learned through virtual console transfer */\n  virtualTransferMoves?: Maybe<Array<LearnsetMove>>;\n}\n/** The type of a Pokémon and that types matchup */\ninterface PokemonType {\n  /** The type matchup for this type */\n  matchup: TypeMatchup;\n  /** The name of the typ */\n  name: string;\n}\n\n/** A Pokémon's stats */\ninterface Stats {\n  /** The base attack stat of a Pokémon */\n  attack: number;\n  /** The base defense stat of a Pokémon */\n  defense: number;\n  /** The base HP stat of a pokémon */\n  hp: number;\n  /** The base special attack stat of a Pokémon */\n  specialattack: number;\n  /** The base special defense stat of a Pokémon */\n  specialdefense: number;\n  /** The base speed stat of a Pokémon */\n  speed: number;\n}\n/** A type matchup entry */\ninterface TypeEffectiveness {\n  /** The types with 4x effectiveness */\n  doubleEffectiveTypes: Array<string>;\n  /** The types with 0.25x effectiveness */\n  doubleResistedTypes: Array<string>;\n  /** The types with 2x effectiveness */\n  effectiveTypes: Array<string>;\n  /** The types with 0x effectiveness */\n  effectlessTypes: Array<string>;\n  /** The types with 1x effectiveness */\n  normalTypes: Array<string>;\n  /** The types with 0.5x effectiveness */\n  resistedTypes: Array<string>;\n}\n/** The type matchups for any one or two given types */\ninterface TypeMatchup {\n  /** The type matchups when attacking */\n  attacking: TypeEffectiveness;\n  /** The type matchups when defending */\n  defending: TypeEffectiveness;\n}\n/** The types in Pokémon */\ndeclare enum TypesEnum {\n  Bug = 'bug',\n  Dark = 'dark',\n  Dragon = 'dragon',\n  Electric = 'electric',\n  Fairy = 'fairy',\n  Fighting = 'fighting',\n  Fire = 'fire',\n  Flying = 'flying',\n  Ghost = 'ghost',\n  Grass = 'grass',\n  Ground = 'ground',\n  Ice = 'ice',\n  Normal = 'normal',\n  Poison = 'poison',\n  Psychic = 'psychic',\n  Rock = 'rock',\n  Steel = 'steel',\n  Water = 'water'\n}\n\nexport type {\n  Abilities,\n  Ability,\n  CatchRate,\n  EvYields,\n  Flavor,\n  Gender,\n  GenerationalPokemonLearnset,\n  IsNonStandard,\n  Item,\n  Learnset,\n  LearnsetLevelUpMove,\n  LearnsetMove,\n  Maybe,\n  Move,\n  Pokemon,\n  PokemonLearnset,\n  PokemonType,\n  Stats,\n  TypeEffectiveness,\n  TypeMatchup,\n  TypesEnum\n};\n\n/** A single Nature entry */\nexport interface Nature {\n  /** The key of the nature as stored in the API */\n  key: string;\n  /** The stat the nature decreases by 10% */\n  decreasedStat?: Maybe<string>;\n  /** The flavor of food the nature dislikes */\n  dislikedFlavor?: Maybe<string>;\n  /** The stat the nature increases by 10% */\n  increasedStat?: Maybe<string>;\n  /** The name of a nature */\n  name: string;\n  /** The flavor of food the nature prefers */\n  preferredFlavor?: Maybe<string>;\n}\n"
  },
  {
    "path": "src/lib/types/utility-types.ts",
    "content": "/**\n * Removes `null`, `undefined` and `?` from an object\n * This essentially combines `Required<T>`,\n * `NonNullable<T>` and `NonUndefined<T>`\n */\nexport type NonNullish<T> = {\n  [P in keyof T]-?: Exclude<T[P], undefined | null>;\n};\n\nexport type UnwrapArray<T extends unknown[]> = T extends (infer U)[] ? U : never;\n\nexport type Generation = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9;\n"
  },
  {
    "path": "src/lib/utils/FuzzySearch.ts",
    "content": "import type { Collection } from '@discordjs/collection';\nimport { jaroWinkler } from '@skyra/jaro-winkler';\n\n/**\n * FuzzySearch is a utility class that performs fuzzy search on a collection of items.\n * It allows searching for items based on a query string and returns the most relevant results.\n *\n * @template K - The type of the keys in the collection.\n * @template V - The type of the values in the collection.\n */\nexport class FuzzySearch<K extends string, V> {\n  readonly #collection: Collection<K, V>;\n  readonly #accessKeys: (keyof V)[];\n\n  /**\n   * Constructs a new instance of the {@link FuzzySearch} class.\n   * @param collection The collection to perform fuzzy search on.\n   * @param keys The keys of the collection to search on.\n   */\n  public constructor(collection: Collection<K, V>, keys: (keyof V)[]) {\n    this.#collection = collection;\n    this.#accessKeys = keys;\n  }\n\n  /**\n   * Runs a fuzzy search on the collection using the provided query.\n   * @param query - The search query.\n   * @returns An array of values that match the search query, sorted by similarity.\n   */\n  public runFuzzy(query: string): V[] {\n    const results: [K, V, number][] = [];\n    const threshold = 0.3;\n\n    let current: V[keyof V];\n    let lowerCaseName: string;\n    let similarity: number;\n    let almostExacts = 0;\n\n    // Loop over all items in the collection\n    for (const [key, value] of this.#collection.entries()) {\n      /** Entries of the same pokemon but from different accessKeys */\n      const resultsFromAccessKeys: [K, V, number][] = [];\n\n      // Loop over all provided access keys\n      for (const accessKey of this.#accessKeys) {\n        current = value[accessKey];\n\n        // If the value at the current accessKey is an array then we need to loop over its values\n        if (Array.isArray(current)) {\n          /** Entries from the same pokemon but from different entries in the array at the current accessKey (i.e. aliases) */\n          const resultsFromArray: [K, V, number][] = [];\n\n          // Loop over each value in the array\n          for (const arrayEntry of current) {\n            lowerCaseName = arrayEntry.toLowerCase();\n\n            // If lowercase result, go next\n            if (lowerCaseName === query) {\n              similarity = 1;\n            } else {\n              similarity = jaroWinkler(query, lowerCaseName);\n            }\n\n            // If the similarity is bigger than the threshold, skip\n            if (similarity < threshold) continue;\n\n            // Push the results\n            resultsFromArray.push([key, value, similarity]);\n\n            // Continue earlier\n            if (similarity >= 0.9) almostExacts++;\n            if (almostExacts === 10) break;\n          }\n\n          if (resultsFromArray.length) {\n            const sorted = resultsFromArray.sort((a, b) => b[2] - a[2]);\n\n            resultsFromAccessKeys.push(sorted[0]);\n          }\n        } else if (typeof current === 'string') {\n          lowerCaseName = current.toLowerCase();\n\n          // If lowercase result, go next\n          if (lowerCaseName === query) {\n            similarity = 1;\n          } else {\n            similarity = jaroWinkler(query, lowerCaseName);\n          }\n\n          // If the similarity is bigger than the threshold, skip\n          if (similarity < threshold) continue;\n\n          // Push the results\n          resultsFromAccessKeys.push([key, value, similarity]);\n\n          // Continue earlier\n          if (similarity >= 0.9) almostExacts++;\n          if (almostExacts === 10) break;\n        }\n      }\n\n      if (resultsFromAccessKeys.length) {\n        const sorted = resultsFromAccessKeys.sort((a, b) => b[2] - a[2]);\n\n        results.push(sorted[0]);\n      }\n    }\n\n    if (!results.length) return [];\n\n    const finalSortedResults = results.sort((a, b) => b[2] - a[2]);\n\n    return finalSortedResults.map(([, value]) => value);\n  }\n}\n"
  },
  {
    "path": "src/lib/utils/GraphQLSet.ts",
    "content": "import { cast } from '@sapphire/utilities';\n\n/**\n * Represents the constructor for the GraphQLSet class.\n */\nexport interface GraphQLSetConstructor {\n  new (): GraphQLSet<unknown>;\n\n  new <V>(entries?: ReadonlyArray<V> | null): GraphQLSet<V>;\n\n  new <V>(iterable: Iterable<V>): GraphQLSet<V>;\n\n  readonly [Symbol.species]: GraphQLSetConstructor;\n\n  readonly prototype: GraphQLSet<unknown>;\n}\n\n/**\n * A Set with additional utility methods. This is used throughout Graphql-Pokemon rather than Arrays for anything that has\n * needs to have unique entries, for significantly improved performance and ease-of-use.\n * @extends {Set}\n * @property size - The amount of elements in this GraphQLSet.\n */\nexport class GraphQLSet<V> extends Set<V> {\n  public constructor(entries?: ReadonlyArray<V> | null) {\n    super(entries);\n  }\n\n  /**\n   * Similar to\n   * [Array.filter()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter),\n   * but returns a GraphQLSet instead of an Array.\n   * Also instead of receiving a callback predicate this will use `String.startsWith`.\n   *\n   * If the value starts with the given {@link checkString}, and {@link removeCheckString} is true,\n   * then that {@link checkString} is removed from the start of the value\n   * and the remaining value is added to the result.\n   *\n   * @param checkString The string that will be used in the `.startsWith` check\n   * @param removeCheckString Whether the {@link checkString} should be removed from the start of the value\n   * @example graphqlSet.filter('parentKey.');\n   */\n  public filterStartsWith<T>(checkString: `${string}.`, removeCheckString = false): GraphQLSet<T> {\n    const results = new GraphQLSet<T>();\n\n    for (const val of this) {\n      if (typeof val === 'string' && val.startsWith(checkString)) {\n        const resolvedValue = cast<T>(removeCheckString ? val.replace(checkString, '') : val);\n        results.add(resolvedValue);\n      }\n    }\n\n    return results;\n  }\n\n  /**\n   * Similar to\n   * [Set.has()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/has),\n   * but checks whether the set that has a value that starts with the given {@link checkString}.\n   * This will use `String.startsWith`.\n   *\n   * @param checkString The string that will be used in the `.startsWith` check\n   * @example graphqlSet.hasStartsWith('parentKey.');\n   */\n  public hasStartsWith(checkString: `${string}.`): boolean {\n    for (const val of this) {\n      if (typeof val === 'string' && val.startsWith(checkString)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n}\n"
  },
  {
    "path": "src/lib/utils/addPropertyToObject.ts",
    "content": "import type { GraphQLSet } from '#utils/GraphQLSet';\nimport { isFunction, isNullish } from '@sapphire/utilities';\n\n/**\n * Adds a property to an object conditionally based on a given condition.\n *\n * @template T - The type of the object.\n * @template K - The type of the property key.\n * @param {AddPropertyToObjectConditionalParameters<T, K>} params - The parameters for adding the property.\n * @returns The object with the property added conditionally.\n */\nexport function addPropertyToObjectConditional<T extends object, K extends keyof T>({\n  objectTarget,\n  propertyKey,\n  propertyValue,\n  condition\n}: AddPropertyToObjectConditionalParameters<T, K>): T {\n  if (condition) {\n    addPropertyToObject({\n      objectTarget,\n      propertyKey,\n      propertyValue\n    });\n  }\n\n  return objectTarget;\n}\n\n/**\n * Adds a property to an object based on the requested fields.\n * If the requested fields include the field accessor, the property is added to the object.\n *\n * @template T - The type of the object.\n * @template K - The type of the property key.\n * @param {AddPropertyToObjectParameters<T, K>} params - The parameters for adding the property.\n * @returns The object with the property added.\n */\nexport function addPropertyToObjectFieldBased<T extends object, K extends keyof T>({\n  objectTarget,\n  propertyKey,\n  propertyValue,\n  requestedFields,\n  fieldAccessor = propertyKey as string\n}: AddPropertyToObjectParameters<T, K>): T {\n  if (requestedFields.has(fieldAccessor as K)) {\n    addPropertyToObject({\n      objectTarget,\n      propertyKey,\n      propertyValue\n    });\n  }\n\n  return objectTarget;\n}\n\n/**\n * Adds a property to an object.\n *\n * @template T - The type of the object.\n * @template K - The key of the property to be added.\n * @param params - The `objectTarget`, `propertyKey`, and `propertyValue` parameters.\n */\nfunction addPropertyToObject<T extends object, K extends keyof T>({\n  objectTarget,\n  propertyKey,\n  propertyValue\n}: Omit<AddPropertyToObjectParameters<T, K>, 'requestedFields' | 'fieldAccessor'>): void {\n  const resolvedPropertyValue = isFunction(propertyValue) ? (propertyValue as () => T[K] | null)() : propertyValue;\n\n  if (!isNullish(resolvedPropertyValue)) {\n    Reflect.set(objectTarget, propertyKey, resolvedPropertyValue);\n  }\n}\n\n/**\n * Represents the conditional parameters for adding a property to an object.\n * @template T - The type of the object.\n * @template K - The key of the property to be added.\n */\ntype AddPropertyToObjectConditionalParameters<T extends object, K extends keyof T> = Omit<\n  AddPropertyToObjectParameters<T, K>,\n  'requestedFields' | 'fieldAccessor'\n> & {\n  condition: boolean;\n};\n\n/**\n * Represents the parameters for adding a property to an object.\n * @template T - The type of the object.\n * @template K - The type of the property key.\n */\ninterface AddPropertyToObjectParameters<T extends object, K extends keyof T> {\n  objectTarget: T;\n  propertyKey: K;\n  propertyValue: T[K] | (() => T[K] | null);\n  requestedFields: GraphQLSet<K>;\n  fieldAccessor?: string;\n}\n"
  },
  {
    "path": "src/lib/utils/flavorsModule.ts",
    "content": "import type { PokemonTypes } from '#assets/pokemon-source';\nimport { readFile } from 'node:fs/promises';\n\nconst pathToFile = new URL('../assets/flavorText.json', import.meta.url);\nconst file = await readFile(pathToFile, { encoding: 'utf-8' });\n\nexport const flavorsModule: FlavorsModule = JSON.parse(file) as FlavorsModule;\nexport type FlavorsModule = Record<string, PokemonTypes.FlavorText[]>;\n"
  },
  {
    "path": "src/lib/utils/formatsModule.ts",
    "content": "import { readFile } from 'node:fs/promises';\n\nconst pathToFile = new URL('../assets/formats.json', import.meta.url);\nconst file = await readFile(pathToFile, { encoding: 'utf-8' });\n\nexport const formatsModule: Record<string, string> = JSON.parse(file) as Record<string, string>;\n"
  },
  {
    "path": "src/lib/utils/getRequestedFields.ts",
    "content": "import { GraphQLSet } from '#utils/GraphQLSet';\nimport type { GraphQLResolveInfo } from 'graphql';\nimport { parseResolveInfo, type FieldsByTypeName, type ResolveTree } from '#utils/graphql-parse-resolve-info';\n\n/**\n * Checks if the provided `info` object is an instance of `ResolveTree`.\n * @param info - The object to be checked.\n * @returns `true` if `info` is an instance of `ResolveTree`, `false` otherwise.\n */\nfunction infoIsResolveTree(info?: ResolveTree | FieldsByTypeName | null): info is ResolveTree {\n  if (!info) return false;\n  return (info as ResolveTree).fieldsByTypeName !== undefined;\n}\n\n/**\n * Collects the requested fields from a given set of fields to parse.\n *\n * @template T - The type of the collected fields.\n * @param fieldsToParse - The fields to parse.\n * @param collectedFields - The set of collected fields (optional, defaults to an empty set).\n * @param parent - The parent field (optional, defaults to an empty string).\n * @returns The set of collected fields.\n */\nfunction collectRequestedFields<T extends string>(\n  fieldsToParse: Record<string, ResolveTree>,\n  collectedFields: GraphQLSet<T> = new GraphQLSet<T>(),\n  parent = ''\n): GraphQLSet<T> {\n  for (const fieldValue of Object.values(fieldsToParse)) {\n    if (Object.keys(fieldValue.fieldsByTypeName).length === 0) {\n      if (parent && !collectedFields.has(parent as T)) {\n        collectedFields.add(parent as T);\n      }\n      collectedFields.add(`${parent ? `${parent}.` : ''}${fieldValue.name}` as T);\n    } else {\n      collectRequestedFields(Object.values(fieldValue.fieldsByTypeName)[0], collectedFields, `${parent ? `${parent}.` : ''}${fieldValue.name}`);\n    }\n  }\n\n  return collectedFields;\n}\n\n/**\n * Converts a GraphQLResolveInfo object to a set of requested fields.\n * @param info The GraphQLResolveInfo object.\n * @returns A GraphQLSet containing the requested fields.\n */\nexport function graphqlResolveInfoToRequestedFields<T extends string>(info: GraphQLResolveInfo): GraphQLSet<T> {\n  const resolvedInfo = parseResolveInfo(info, { deep: true });\n  if (infoIsResolveTree(resolvedInfo)) {\n    return collectRequestedFields<T>(Object.values(resolvedInfo.fieldsByTypeName)[0]);\n  }\n\n  return new GraphQLSet<T>();\n}\n"
  },
  {
    "path": "src/lib/utils/graphql-parse-resolve-info.ts",
    "content": "import { isNullish } from '@sapphire/utilities';\nimport {\n  GraphQLUnionType,\n  getArgumentValues,\n  getNamedType,\n  isCompositeType,\n  type ASTNode,\n  type FieldNode,\n  type FragmentSpreadNode,\n  type GraphQLCompositeType,\n  type GraphQLField,\n  type GraphQLInterfaceType,\n  type GraphQLNamedType,\n  type GraphQLObjectType,\n  type GraphQLResolveInfo,\n  type InlineFragmentNode,\n  type NamedTypeNode,\n  type SelectionNode\n} from 'graphql';\n\n/**\n * Parses the provided GraphQLResolveInfo object.\n * @param resolveInfo - The GraphQLResolveInfo object to parse.\n * @param options - The options to use when parsing the resolve info.\n * @returns The parsed resolve info.\n *\n * @license MIT\n * @copyright 2018 Benjie Gillam - Retrieved on `2024-04-05` from {@linkplain https://github.com/graphile/graphile-engine/blob/v4.14.0/packages/graphql-parse-resolve-info/src/index.ts}\n */\nexport function parseResolveInfo(resolveInfo: GraphQLResolveInfo, options: ParseOptions = {}): ResolveTree | FieldsByTypeName | null | undefined {\n  const fieldNodes: ReadonlyArray<FieldNode> =\n    // @ts-expect-error Property 'fieldASTs' does not exist on type 'GraphQLResolveInfo'.\n    resolveInfo.fieldNodes || resolveInfo.fieldASTs;\n\n  const { parentType } = resolveInfo;\n\n  if (!fieldNodes) {\n    throw new Error('No fieldNodes provided!');\n  }\n\n  if (options.keepRoot === null) {\n    options.keepRoot = false;\n  }\n\n  if (options.deep === null) {\n    options.deep = true;\n  }\n\n  const tree = fieldTreeFromAST(fieldNodes, resolveInfo, parentType, undefined, options);\n  if (!options.keepRoot) {\n    const typeKey = firstKey(tree);\n    if (!typeKey) {\n      return null;\n    }\n\n    const fields = tree[typeKey];\n    const fieldKey = firstKey(fields);\n    if (!fieldKey) {\n      return null;\n    }\n\n    return fields[fieldKey];\n  }\n  return tree;\n}\n\nfunction getFieldFromAST<TContext>(ast: ASTNode, parentType: GraphQLCompositeType): GraphQLField<GraphQLCompositeType, TContext> | undefined {\n  if (ast.kind === 'Field') {\n    const fieldNode: FieldNode = ast;\n    const fieldName = fieldNode.name.value;\n    if (!(parentType instanceof GraphQLUnionType)) {\n      const type: GraphQLObjectType | GraphQLInterfaceType = parentType;\n      return type.getFields()[fieldName];\n    }\n  }\n\n  return undefined;\n}\n\nfunction fieldTreeFromAST<T extends SelectionNode>(\n  inASTs: ReadonlyArray<T> | T,\n  resolveInfo: GraphQLResolveInfo,\n  parentType: GraphQLCompositeType,\n  initTree: FieldsByTypeName = {},\n  options: ParseOptions = {}\n): FieldsByTypeName {\n  const { variableValues } = resolveInfo;\n  const fragments = resolveInfo.fragments || {};\n  const asts: ReadonlyArray<T> = Array.isArray(inASTs) ? inASTs : [inASTs];\n  if (!initTree[parentType.name]) {\n    initTree[parentType.name] = {};\n  }\n  return asts.reduce((tree, selectionVal: SelectionNode) => {\n    if (selectionVal.kind === 'Field') {\n      const val: FieldNode = selectionVal;\n      const name = val.name.value;\n      const isReserved = name.startsWith('_') && name[1] === '_' && name !== '__id';\n      if (!isReserved) {\n        const alias: string = val.alias?.value ? val.alias.value : name;\n        const field = getFieldFromAST(val, parentType);\n        if (!field) {\n          return tree;\n        }\n\n        const fieldGqlTypeOrUndefined = getNamedType(field.type);\n        if (!fieldGqlTypeOrUndefined) {\n          return tree;\n        }\n\n        const fieldGqlType: GraphQLNamedType = fieldGqlTypeOrUndefined;\n        // @ts-expect-error field is typed stricter than GraphQL expects it, silly GraphQL\n        const args = getArgumentValues(field, val, variableValues) || {};\n\n        if (parentType.name && !tree[parentType.name][alias]) {\n          const newTreeRoot: ResolveTree = {\n            name,\n            alias,\n            args,\n            fieldsByTypeName: isCompositeType(fieldGqlType)\n              ? {\n                  [fieldGqlType.name]: {}\n                }\n              : {}\n          };\n          tree[parentType.name][alias] = newTreeRoot;\n        }\n\n        const { selectionSet } = val;\n\n        if (!isNullish(selectionSet) && options.deep && isCompositeType(fieldGqlType)) {\n          const newParentType: GraphQLCompositeType = fieldGqlType;\n          fieldTreeFromAST(selectionSet.selections, resolveInfo, newParentType, tree[parentType.name][alias].fieldsByTypeName, options);\n        }\n      }\n    } else if (selectionVal.kind === 'FragmentSpread' && options.deep) {\n      const val: FragmentSpreadNode = selectionVal;\n      const name = val.name?.value;\n      const fragment = fragments[name];\n      let fragmentType: GraphQLNamedType | null | undefined = parentType;\n\n      if (fragment.typeCondition) {\n        fragmentType = getType(resolveInfo, fragment.typeCondition);\n      }\n\n      if (fragmentType && isCompositeType(fragmentType)) {\n        const newParentType: GraphQLCompositeType = fragmentType;\n        fieldTreeFromAST(fragment.selectionSet.selections, resolveInfo, newParentType, tree, options);\n      }\n    } else if (selectionVal.kind === 'InlineFragment' && options.deep) {\n      const val: InlineFragmentNode = selectionVal;\n      const fragment = val;\n      let fragmentType: GraphQLNamedType | null | undefined = parentType;\n\n      if (fragment.typeCondition) {\n        fragmentType = getType(resolveInfo, fragment.typeCondition);\n      }\n\n      if (fragmentType && isCompositeType(fragmentType)) {\n        const newParentType: GraphQLCompositeType = fragmentType;\n        fieldTreeFromAST(fragment.selectionSet.selections, resolveInfo, newParentType, tree, options);\n      }\n    }\n\n    // Ref: https://github.com/graphile/postgraphile/pull/342/files#diff-d6702ec9fed755c88b9d70b430fda4d8R148\n    return tree;\n  }, initTree);\n}\n\nfunction firstKey(obj: Record<string, unknown>) {\n  for (const key in obj) {\n    if (Object.hasOwn(obj, key)) {\n      return key;\n    }\n  }\n\n  return undefined;\n}\n\nfunction getType(resolveInfo: GraphQLResolveInfo, typeCondition: NamedTypeNode) {\n  const { schema } = resolveInfo;\n  const { kind, name } = typeCondition;\n  if (kind === 'NamedType') {\n    const typeName = name.value;\n    return schema.getType(typeName);\n  }\n\n  return undefined;\n}\n\nexport interface FieldsByTypeName {\n  [str: string]: {\n    [str: string]: ResolveTree;\n  };\n}\n\nexport interface ResolveTree {\n  name: string;\n  alias: string;\n  args: {\n    [str: string]: unknown;\n  };\n  fieldsByTypeName: FieldsByTypeName;\n}\n\ninterface ParseOptions {\n  keepRoot?: boolean;\n  deep?: boolean;\n}\n"
  },
  {
    "path": "src/lib/utils/grapqhl-root-typedef-resolver.ts",
    "content": "import type { DocumentNode } from 'graphql';\nimport gql from 'graphql-tag';\nimport type { PathLike } from 'node:fs';\nimport { readFile } from 'node:fs/promises';\n\n/**\n * Reads and imports a GraphQL file.\n * @param file - The path to the GraphQL file.\n * @returns A promise that resolves to the content of the file as a string.\n */\nconst importGraphQL = async (file: PathLike) => readFile(file, { encoding: 'utf8' });\n\n/**\n * Wraps the given files in a gql template literal.\n * @param files - The files to be wrapped.\n * @returns The gql template literal with the wrapped files.\n */\nconst gqlFileWrapper = (...files: string[]) => gql`\n  ${files}\n`;\n\nconst graphqlDir = new URL('../../../graphql/', import.meta.url);\nconst enums = await importGraphQL(new URL('enums.graphql', graphqlDir));\nconst resolvers = await importGraphQL(new URL('resolvers.graphql', graphqlDir));\nconst schema = await importGraphQL(new URL('schema.graphql', graphqlDir));\n\n/** Root type definition for GraphQL */\nexport const RootTypedef: DocumentNode = gqlFileWrapper(enums, schema, resolvers);\n"
  },
  {
    "path": "src/lib/utils/isNonStandardEnum.ts",
    "content": "export enum IsNonStandard {\n  /** When set the item or move is from Smogon's CAP project and is not in the official Nintendo games. */\n  Cap = 'CAP',\n  /** When set the move can exclusively be used Pokémon Sword and Pokémon Shield as it requires Gigantamaxing your Pokémon. */\n  Gigantamax = 'Gigantamax',\n  /** When set the item or move is exclusive to the Let's Go Pikachu / Let's Go Eevee games. */\n  LetsGoPikachuEevee = 'LetsGoPikachuEevee',\n  /** When set the item or move is from a past generation. This means it is not available at all in the data of Generation 9. */\n  Past = 'Past',\n  /** When set the item or move is available within the generation 9 data, however is cannot currently be obtained. It is safe to presume that Gamefreak/Nintendo will add it in later DLC. */\n  Unobtainable = 'Unobtainable'\n}\n"
  },
  {
    "path": "src/lib/utils/pastGenerationPokemon.ts",
    "content": "/**\n * Array of species names that are not present in Generation 8 or 9.\n */\nexport const speciesThatAreNotInGeneration8Nor9: string[] = [\n  'snivy',\n  'servine',\n  'serperior',\n  'tepig',\n  'pignite',\n  'emboar',\n  'patrat',\n  'watchog',\n  'pansage',\n  'simisage',\n  'pansear',\n  'simisear',\n  'panpour',\n  'simipour',\n  'blitzle',\n  'zebstrika',\n  'sewaddle',\n  'swadloon',\n  'leavanny',\n  'ducklett',\n  'swanna',\n  'furfrou',\n  'pikipek',\n  'trumbeak',\n  'toucannon',\n  'minior'\n];\n"
  },
  {
    "path": "src/lib/utils/pokemonTypes.ts",
    "content": "/** Enum representing the different types of Pokémon. */\nexport enum TypesEnum {\n  /** Represents the Bug type. */\n  Bug = 'bug',\n  /** Represents the Dark type. */\n  Dark = 'dark',\n  /** Represents the Dragon type. */\n  Dragon = 'dragon',\n  /** Represents the Electric type. */\n  Electric = 'electric',\n  /** Represents the Fairy type. */\n  Fairy = 'fairy',\n  /** Represents the Fighting type. */\n  Fighting = 'fighting',\n  /** Represents the Fire type. */\n  Fire = 'fire',\n  /** Represents the Flying type. */\n  Flying = 'flying',\n  /** Represents the Ghost type. */\n  Ghost = 'ghost',\n  /** Represents the Grass type. */\n  Grass = 'grass',\n  /** Represents the Ground type. */\n  Ground = 'ground',\n  /** Represents the Ice type. */\n  Ice = 'ice',\n  /** Represents the Normal type. */\n  Normal = 'normal',\n  /** Represents the Poison type. */\n  Poison = 'poison',\n  /** Represents the Psychic type. */\n  Psychic = 'psychic',\n  /** Represents the Rock type. */\n  Rock = 'rock',\n  /** Represents the Steel type. */\n  Steel = 'steel',\n  /** Represents the Water type. */\n  Water = 'water'\n}\n"
  },
  {
    "path": "src/lib/utils/sprite-parser.ts",
    "content": "import { toLowerSingleWordCase } from '#utils/utils';\n\n/**\n * Parameters for parsing species for sprite.\n */\ninterface ParseSpeciesForSpriteParams {\n  backSprite?: boolean;\n\n  baseSpecies?: string;\n\n  pokemonName: string;\n  pokemonNumber: number;\n\n  shiny?: boolean;\n\n  specialBackSprite?: string;\n\n  specialShinyBackSprite?: string;\n\n  specialShinySprite?: string;\n\n  specialSprite?: string;\n}\n\nconst MegaSpriteRegex = /^(.+)-([xy])$/g;\nconst SpriteUrls = {\n  baseUrl: 'https://play.pokemonshowdown.com/sprites/',\n  animatedShinyBackSprites: 'ani-back-shiny/',\n  animatedBackSprites: 'ani-back/',\n  animatedSprites: 'ani/',\n  animatedShinySprites: 'ani-shiny/'\n};\nconst Gen9SpriteUrls = {\n  animatedShinyBackSprites: 'gen5-back-shiny/',\n  animatedBackSprites: 'gen5-back/',\n  animatedSprites: 'gen5/',\n  animatedShinySprites: 'gen5-shiny/'\n};\nconst afdSpriteUrls = {\n  animatedShinyBackSprites: 'afd-back-shiny/',\n  animatedBackSprites: 'afd-back/',\n  animatedSprites: 'afd/',\n  animatedShinySprites: 'afd-shiny/'\n};\n\n/**\n * Parses the species information to determine the appropriate sprite URL based on the given parameters.\n * @param params The parameters for parsing the species sprite.\n * @returns The URL of the sprite image.\n */\nexport function parseSpeciesForSprite({\n  pokemonName,\n  pokemonNumber,\n  baseSpecies,\n  specialSprite,\n  specialShinySprite,\n  specialBackSprite,\n  specialShinyBackSprite,\n  shiny = false,\n  backSprite = false\n}: ParseSpeciesForSpriteParams): string {\n  if (isAprilFools()) {\n    return parseAsAfd(pokemonName, baseSpecies, shiny, backSprite);\n  }\n\n  const parsedSpecialSprite = parseSpecialSprites(specialSprite, specialShinySprite, specialBackSprite, specialShinyBackSprite, shiny, backSprite);\n  if (parsedSpecialSprite) return parsedSpecialSprite;\n\n  if (!baseSpecies) {\n    pokemonName = toLowerSingleWordCase(pokemonName);\n  }\n\n  if (pokemonName.match(MegaSpriteRegex)) {\n    pokemonName = pokemonName.replace(MegaSpriteRegex, '$1$2');\n  }\n\n  // TODO: Remove when Showdown adds GIFs of Gen 9 Pokémon\n  // Parse differently for remaining generation 9 Pokémon\n  switch (pokemonNumber) {\n    case 990:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 991:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 992:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 993:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 994:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 995:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1001:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1002:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1003:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1004:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1006:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1008:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1010:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1014:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1015:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1016:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1017:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1022:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1023:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1024:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    case 1025:\n      return parsePngSprite(pokemonName, shiny, backSprite);\n    default:\n      return parseGifSprite(pokemonName, shiny, backSprite);\n  }\n\n  // if (pokemonNumber >= 906 || pokemonName === 'ursaluna-bloodmoon') return parsePngSprite(pokemonName, shiny, backSprite);\n}\n\nfunction parseSpecialSprites(\n  specialSprite: string | undefined,\n  specialShinySprite: string | undefined,\n  specialBackSprite: string | undefined,\n  specialShinyBackSprite: string | undefined,\n  shiny: boolean,\n  backSprite: boolean\n) {\n  if (shiny && backSprite && specialShinyBackSprite) return specialShinyBackSprite;\n  if (backSprite && specialBackSprite) return specialBackSprite;\n  if (shiny && specialShinySprite) return specialShinySprite;\n  if (specialSprite) return specialSprite;\n\n  return null;\n}\n\nfunction parsePngSprite(pokemonName: string, shiny: boolean, backSprite: boolean) {\n  const pokemonPng = `${pokemonName}.png`;\n\n  if (shiny && backSprite) return SpriteUrls.baseUrl + Gen9SpriteUrls.animatedShinyBackSprites + pokemonPng;\n  if (backSprite) return SpriteUrls.baseUrl + Gen9SpriteUrls.animatedBackSprites + pokemonPng;\n  if (shiny) return SpriteUrls.baseUrl + Gen9SpriteUrls.animatedShinySprites + pokemonPng;\n  return SpriteUrls.baseUrl + Gen9SpriteUrls.animatedSprites + pokemonPng;\n}\n\nfunction parseGifSprite(pokemonName: string, shiny: boolean, backSprite: boolean) {\n  const pokemonGif = `${pokemonName}.gif`;\n\n  if (shiny && backSprite) return SpriteUrls.baseUrl + SpriteUrls.animatedShinyBackSprites + pokemonGif;\n  if (backSprite) return SpriteUrls.baseUrl + SpriteUrls.animatedBackSprites + pokemonGif;\n  if (shiny) return SpriteUrls.baseUrl + SpriteUrls.animatedShinySprites + pokemonGif;\n  return SpriteUrls.baseUrl + SpriteUrls.animatedSprites + pokemonGif;\n}\n\nconst APRIL = 3 as const;\nconst FIRST = 1 as const;\nfunction isAprilFools() {\n  const currentDate = new Date();\n  return currentDate.getMonth() === APRIL && currentDate.getDate() === FIRST;\n}\n\nfunction parseAsAfd(pokemonName: string, baseSpecies: string | undefined, shiny: boolean, backSprite: boolean) {\n  if (!baseSpecies) {\n    pokemonName = toLowerSingleWordCase(pokemonName);\n  }\n\n  if (pokemonName.match(MegaSpriteRegex)) {\n    pokemonName = pokemonName.replace(MegaSpriteRegex, '$1$2');\n  }\n\n  const pokemonGif = `${pokemonName}.png`;\n\n  if (shiny && backSprite) return SpriteUrls.baseUrl + afdSpriteUrls.animatedShinyBackSprites + pokemonGif;\n  if (backSprite) return SpriteUrls.baseUrl + afdSpriteUrls.animatedBackSprites + pokemonGif;\n  if (shiny) return SpriteUrls.baseUrl + afdSpriteUrls.animatedShinySprites + pokemonGif;\n  return SpriteUrls.baseUrl + afdSpriteUrls.animatedSprites + pokemonGif;\n}\n"
  },
  {
    "path": "src/lib/utils/stringifyResult.ts",
    "content": "import type { FormattedExecutionResult } from 'graphql/execution/execute';\nimport type { ObjMap } from 'graphql/jsutils/ObjMap';\nimport { JsonStreamStringify } from 'json-stream-stringify';\n\nexport async function stringifyResult(value: FormattedExecutionResult<ObjMap<unknown>, ObjMap<unknown>>): Promise<string> {\n  const stringifyStream = new JsonStreamStringify(value);\n  let stringified = '';\n\n  for await (const chunk of stringifyStream) {\n    stringified += chunk;\n  }\n\n  return `${stringified}\\n`;\n}\n"
  },
  {
    "path": "src/lib/utils/utils.ts",
    "content": "import { toTitleCase } from '@sapphire/utilities';\nconst COMMON_SYMBOLS = /[$%&'()*+,./:'<>=?{}}~!\"^_`[\\] .'-]/g;\nconst COMMON_SYMBOLS_WITHOUT_HYPHEN = /[$%&'()*+,./:'<>=?{}}~!\"^_`[\\] .']/g;\n\n/** Converts a string to Title_Snake_Case without converting hyphens */\nexport function toTitleSnakeCaseWithoutHyphenConvert(str: string): string {\n  return replaceSymbols(toTitleCase(str), '_', COMMON_SYMBOLS_WITHOUT_HYPHEN);\n}\n\n/** Converts a string to lower-hyphen-case */\nexport function toLowerHyphenCase(str: string): string {\n  return replaceSymbols(str, '-').toLowerCase();\n}\n\n/** Converts a string to `singlewordlowercase` */\nexport function toLowerSingleWordCase<T extends string>(str: T): T {\n  return replaceSymbols(str, '').toLowerCase() as T;\n}\n\n/** Parses Z-Crystal data into proper names */\nexport function parseZCrystal(str: string | undefined): string | undefined {\n  if (str === undefined) return str;\n\n  return `${toTitleCase(str.substr(0, str.length - 1))} Z`;\n}\n\n/** Lowercases string and trims spaces */\nexport function preParseInput(str: string): string {\n  return str.toLowerCase().trim();\n}\n\n/**\n * Removes common symbols and spaces from any string replacing it with something else\n * @param str The string to get symbols removed from\n * @param replacement The replacement to fill instead of the symbols\n */\nfunction replaceSymbols<T extends string>(\n  str: T,\n  replacement: string,\n  symbols: typeof COMMON_SYMBOLS | typeof COMMON_SYMBOLS_WITHOUT_HYPHEN = COMMON_SYMBOLS\n): T {\n  return str.replace(symbols, replacement) as T;\n}\n"
  },
  {
    "path": "src/lib/validations/fuzzyArgs/base.ts",
    "content": "import { s, type SchemaOf } from '@sapphire/shapeshift';\nimport type { Nullish } from '@sapphire/utilities';\n\nexport interface BaseFuzzyArgs {\n  /**\n   * Sets the offset where to start\n   * @default 0\n   * @minimum 0\n   */\n  offset: number | Nullish;\n\n  /**\n   * Return only this many results, starting from the offset\n   * @default 1\n   * @minimum 1\n   * @maximum 50\n   */\n  take: number | Nullish;\n\n  /**\n   * Reverses the dataset before paginating\n   * @default false\n   */\n  reverse: boolean | Nullish;\n}\n\nexport const baseFuzzySchema: SchemaOf<BaseFuzzyArgs> = s.object({\n  take: s\n    .number({ message: 'The amount to take has to be a number' })\n    .greaterThanOrEqual(1, { message: 'You have to take at least 1 result' })\n    .lessThanOrEqual(50, { message: 'You can only take up to 50 results' })\n    .nullish({ message: 'The amount to take has to be a number' })\n    .transform((v) => v ?? 1),\n  offset: s\n    .number({ message: 'The offset has to be a number' })\n    .greaterThanOrEqual(0, { message: 'The offset has to be at least 0' })\n    .nullish({ message: 'The offset has to be a number' })\n    .transform((v) => v ?? 0),\n  reverse: s\n    .boolean({ message: 'The reverse flag has to be a boolean' })\n    .nullish({ message: 'The reverse flag has to be a boolean' })\n    .transform((v) => v ?? false)\n});\n"
  },
  {
    "path": "src/lib/validations/fuzzyArgs/fuzzyAbilityArgs.ts",
    "content": "import { baseFuzzySchema, type BaseFuzzyArgs } from '#validations/fuzzyArgs/base';\nimport { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetFuzzyAbilityArgs extends BaseFuzzyArgs {\n  /**\n   * The ability to fuzzily search\n   */\n  ability: string;\n}\n\nconst getFuzzyAbilitySchema: SchemaOf<GetFuzzyAbilityArgs> = baseFuzzySchema.extend({\n  ability: s.string({ message: 'The ability has to be a string' })\n});\n\nexport function validateGetFuzzyAbilityArgs(args: GetFuzzyAbilityArgs): GetFuzzyAbilityArgs {\n  return getFuzzyAbilitySchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/fuzzyArgs/fuzzyItemArgs.ts",
    "content": "import { baseFuzzySchema, type BaseFuzzyArgs } from '#validations/fuzzyArgs/base';\nimport { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetFuzzyItemArgs extends BaseFuzzyArgs {\n  /**\n   * The item to fuzzily search\n   */\n  item: string;\n}\n\nconst getFuzzyItemSchema: SchemaOf<GetFuzzyItemArgs> = baseFuzzySchema.extend({\n  item: s.string({ message: 'The item has to be a string' })\n});\n\nexport function validateGetFuzzyItemArgs(args: GetFuzzyItemArgs): GetFuzzyItemArgs {\n  return getFuzzyItemSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/fuzzyArgs/fuzzyMoveArgs.ts",
    "content": "import { baseFuzzySchema, type BaseFuzzyArgs } from '#validations/fuzzyArgs/base';\nimport { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetFuzzyMoveArgs extends BaseFuzzyArgs {\n  /**\n   * The move to fuzzily search\n   */\n  move: string;\n}\n\nconst getFuzzyMoveSchema: SchemaOf<GetFuzzyMoveArgs> = baseFuzzySchema.extend({\n  move: s.string({ message: 'The move has to be a string' })\n});\n\nexport function validateGetFuzzyMoveArgs(args: GetFuzzyMoveArgs): GetFuzzyMoveArgs {\n  return getFuzzyMoveSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/getAbilityArgs.ts",
    "content": "import { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetAbilityArgs {\n  /**\n   * The ability to look up\n   */\n  ability: string;\n}\n\nconst getAbilitySchema: SchemaOf<GetAbilityArgs> = s.object({\n  ability: s.string({ message: 'The ability has to be a string' })\n});\n\nexport function validateGetAbilityArgs(args: GetAbilityArgs): GetAbilityArgs {\n  return getAbilitySchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/getItemArgs.ts",
    "content": "import { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetItemArgs {\n  /**\n   * The item to look up\n   */\n  item: string;\n}\n\nconst getItemSchema: SchemaOf<GetItemArgs> = s.object({\n  item: s.string({ message: 'The item has to be a string' })\n});\n\nexport function validateGetItemArgs(args: GetItemArgs): GetItemArgs {\n  return getItemSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/getLearnsetArgs.ts",
    "content": "import type { NonNullish } from '#types/utility-types';\nimport { getPokemonSchema, type GetPokemonArgs } from '#validations/pokemonArgs/getPokemonArgs';\nimport { s, type SchemaOf } from '@sapphire/shapeshift';\nimport type { Nullish } from '@sapphire/utilities';\n\nexport interface GetLearnsetArgs extends GetPokemonArgs {\n  /**\n   * The moves to match against the Pokémon\n   */\n  moves: string[];\n  /**\n   * The generation filter to apply\n   */\n  generation: number | Nullish;\n}\n\nconst getLearnsetSchema: SchemaOf<GetLearnsetArgs> = getPokemonSchema.extend({\n  moves: s\n    .array(\n      s.string({ message: 'The move has to be a string' }), //\n      { message: 'The list of moves has to be an array' }\n    )\n    .unique({ message: 'The list of moves should be a unique list with no duplicates' })\n    .lengthGreaterThanOrEqual(1, { message: 'The list of moves should have at least one move' }),\n  generation: s\n    .number({ message: 'The generation has to be a number' })\n    .int({ message: 'The generation has to be an integer' })\n    .greaterThanOrEqual(1, { message: 'The minimum generation is 1' })\n    .lessThanOrEqual(9, { message: 'The maximum generation is 9' })\n    .nullish({ message: 'The generation has to be a number' })\n    .transform((v) => v ?? 9)\n});\n\nexport function validateGetLearnsetArgs(args: GetLearnsetArgs): NonNullish<GetLearnsetArgs> {\n  return getLearnsetSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/getMoveArgs.ts",
    "content": "import { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetMoveArgs {\n  /**\n   * The move to look up\n   */\n  move: string;\n}\n\nconst getMoveSchema: SchemaOf<GetMoveArgs> = s.object({\n  move: s.string({ message: 'The move has to be a string' })\n});\n\nexport function validateGetMoveArgs(args: GetMoveArgs): GetMoveArgs {\n  return getMoveSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/getNatureArgs.ts",
    "content": "import { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetNatureArgs {\n  /**\n   * The nature to look up\n   */\n  nature: string;\n}\n\nconst getNatureSchema: SchemaOf<GetNatureArgs> = s.object({\n  nature: s.string({ message: 'The nature has to be a string' })\n});\n\nexport function validateGetNatureArgs(args: GetNatureArgs): GetNatureArgs {\n  return getNatureSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/getTypeMatchupArgs.ts",
    "content": "import { TypesEnum } from '#utils/pokemonTypes';\nimport { s, type SchemaOf } from '@sapphire/shapeshift';\nimport type { Nullish } from '@sapphire/utilities';\n\nexport interface GetTypeMatchupArgs {\n  /**\n   * The primary type to check\n   */\n  primaryType: TypesEnum;\n  /**\n   * The secondary type to check\n   */\n  secondaryType?: TypesEnum | Nullish;\n}\n\nconst getTypeMatchupSchema: SchemaOf<GetTypeMatchupArgs> = s.object({\n  primaryType: s.nativeEnum(TypesEnum, { message: 'The primary type has to be a valid type' }),\n  secondaryType: s.nativeEnum(TypesEnum, { message: 'The secondary type has to be a valid type' }).nullish()\n});\n\nexport function validateGetTypeMatchupArgs(args: GetTypeMatchupArgs): GetTypeMatchupArgs {\n  return getTypeMatchupSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/pokemonArgs/base.ts",
    "content": "import { s, type SchemaOf } from '@sapphire/shapeshift';\nimport type { Nullish } from '@sapphire/utilities';\n\nexport interface BasePokemonArgs {\n  /**\n   * Sets the offset from where to start.\n   */\n  offsetFlavorTexts: number | Nullish;\n\n  /**\n   * Return this many flavour texts, up to the maximum of entries that the requested Pokémon has.\n   */\n  takeFlavorTexts: number | Nullish;\n\n  /**\n   * Whether to reverse the list of games from which to get the data.\n   * By default Generation 1 is considered for \"take\" first, when setting this to true that is instead Generation 9.\n   */\n  reverseFlavorTexts: boolean | Nullish;\n}\n\nexport const basePokemonArgsSchema: SchemaOf<BasePokemonArgs> = s.object({\n  offsetFlavorTexts: s\n    .number({ message: 'The offset has to be a number' })\n    .greaterThanOrEqual(0, { message: 'The offset has to be at least 0' })\n    .nullish({ message: 'The offset has to be a number' })\n    .transform((v) => v ?? 0),\n  takeFlavorTexts: s\n    .number({ message: 'The amount of flavor texts to take has to be a number' })\n    .greaterThanOrEqual(1, { message: 'You have to take at least 1 result' })\n    .lessThanOrEqual(50, { message: 'You can only take up to 50 results' })\n    .nullish({ message: 'The amount of flavor texts to take has to be a number' })\n    .transform((v) => v ?? 1),\n  reverseFlavorTexts: s\n    .boolean({ message: 'The reverse flag has to be a boolean' })\n    .nullish({ message: 'The reverse flag has to be a boolean' })\n    .transform((v) => v ?? true)\n});\n"
  },
  {
    "path": "src/lib/validations/pokemonArgs/getAllPokemonArgs.ts",
    "content": "import type { NonNullish } from '#types/utility-types';\nimport { baseFuzzySchema, type BaseFuzzyArgs } from '#validations/fuzzyArgs/base';\nimport { basePokemonArgsSchema, type BasePokemonArgs } from '#validations/pokemonArgs/base';\nimport { s, type SchemaOf } from '@sapphire/shapeshift';\nimport type { Nullish } from '@sapphire/utilities';\n\nexport interface GetAllPokemonArgs extends BaseFuzzyArgs, BasePokemonArgs {\n  /**\n   * Sets the offset where to start\n   * @default 0\n   * @minimum 0\n   * @maximum 1468\n   */\n  offset: number | Nullish;\n  /**\n   * Return only this many results, starting from the offset\n   * @default 1469\n   * @minimum 1\n   * @maximum 1469\n   */\n  take: number | Nullish;\n}\n\nconst getAllPokemonSchema: SchemaOf<GetAllPokemonArgs> = baseFuzzySchema //\n  .extend(basePokemonArgsSchema)\n  .extend({\n    offset: s\n      .number({ message: 'The offset has to be a number' })\n      .greaterThanOrEqual(0, { message: 'The offset has to be at least 0' })\n      .lessThanOrEqual(1468, { message: 'The offset has to be at most 1468' })\n      .nullish({ message: 'The offset has to be a number' })\n      .transform((v) => v ?? 0),\n    take: s\n      .number({ message: 'The amount to take has to be a number' })\n      .greaterThanOrEqual(1, { message: 'The amount to take has to be at least 1' })\n      .lessThanOrEqual(1469, { message: 'The amount to take has to be at most 1469' })\n      .nullish({ message: 'The amount to take has to be a number' })\n      .transform((v) => v ?? 1)\n  });\n\nexport function validateGetAllPokemonArgs(args: GetAllPokemonArgs): NonNullish<GetAllPokemonArgs> {\n  return getAllPokemonSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/pokemonArgs/getFuzzyPokemonArgs.ts",
    "content": "import type { NonNullish } from '#types/utility-types';\nimport { baseFuzzySchema, type BaseFuzzyArgs } from '#validations/fuzzyArgs/base';\nimport { basePokemonArgsSchema, type BasePokemonArgs } from '#validations/pokemonArgs/base';\nimport { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetFuzzyPokemonArgs extends BaseFuzzyArgs, BasePokemonArgs {\n  /**\n   * The Pokémon to fuzzily search\n   */\n  pokemon: string;\n}\n\nconst getFuzzyPokemonSchema: SchemaOf<GetFuzzyPokemonArgs> = baseFuzzySchema //\n  .extend(basePokemonArgsSchema)\n  .extend({\n    pokemon: s.string({ message: 'The Pokémon has to be a string' })\n  });\n\nexport function validateGetFuzzyPokemonArgs(args: GetFuzzyPokemonArgs): NonNullish<GetFuzzyPokemonArgs> {\n  return getFuzzyPokemonSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/pokemonArgs/getPokemonArgs.ts",
    "content": "import type { NonNullish } from '#types/utility-types';\nimport { basePokemonArgsSchema, type BasePokemonArgs } from '#validations/pokemonArgs/base';\nimport { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetPokemonArgs extends BasePokemonArgs {\n  /**\n   * The Pokémon to look up\n   */\n  pokemon: string;\n}\n\nexport const getPokemonSchema: SchemaOf<GetPokemonArgs> = basePokemonArgsSchema.extend({\n  pokemon: s.string({ message: 'The Pokémon has to be a string' })\n});\n\nexport function validateGetPokemonArgs(args: GetPokemonArgs): NonNullish<GetPokemonArgs> {\n  return getPokemonSchema.parse(args);\n}\n"
  },
  {
    "path": "src/lib/validations/pokemonArgs/getPokemonByDexNumberArgs.ts",
    "content": "import type { NonNullish } from '#types/utility-types';\nimport { basePokemonArgsSchema, type BasePokemonArgs } from '#validations/pokemonArgs/base';\nimport { s, type SchemaOf } from '@sapphire/shapeshift';\n\nexport interface GetPokemonByDexNumberArgs extends BasePokemonArgs {\n  /**\n   * The International PokéDex number of the Pokémon to look up\n   */\n  number: number;\n}\n\nconst getPokemonByDexNumberSchema: SchemaOf<GetPokemonByDexNumberArgs> = basePokemonArgsSchema.extend({\n  number: s\n    .number({ message: 'The dex number has to be of type number' })\n    .greaterThanOrEqual(-72, { message: 'The minimum allowed dex number is -72, or a range between -5000 and -5014 for the PokéStar entries.' })\n    .lessThanOrEqual(1025, { message: 'The maximum allowed dex number is 1025' })\n    .or(\n      s\n        .number({ message: 'The dex number has to be of type number' })\n        .greaterThanOrEqual(-5014, { message: 'When querying for PokéStar entries the dex number has to be between -5000 and -5014' })\n        .lessThanOrEqual(-5000, { message: 'When querying for PokéStar entries the dex number has to be between -5000 and -5014' })\n    )\n});\n\nexport function validateGetPokemonByDexNumberArgs(args: GetPokemonByDexNumberArgs): NonNullish<GetPokemonByDexNumberArgs> {\n  return getPokemonByDexNumberSchema.parse(args);\n}\n"
  },
  {
    "path": "src/server.ts",
    "content": "import { RootResolver } from '#resolvers/RootResolver';\nimport { defaultDocument, defaultVariables } from '#root/defaultDocument';\nimport { RootTypedef } from '#utils/grapqhl-root-typedef-resolver';\nimport { stringifyResult } from '#utils/stringifyResult';\nimport { ApolloServer } from '@apollo/server';\nimport { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer';\nimport { ApolloServerPluginLandingPageLocalDefault } from '@apollo/server/plugin/landingPage/default';\nimport { koaMiddleware } from '@as-integrations/koa';\nimport cors from '@koa/cors';\nimport Koa from 'koa';\nimport bodyParser from 'koa-bodyparser';\nimport { createServer, type IncomingMessage, type Server, type ServerResponse } from 'node:http';\n\nconst gqlServer = async (): Promise<Server<typeof IncomingMessage, typeof ServerResponse>> => {\n  const app = new Koa();\n  const httpServer = createServer(app.callback());\n\n  const apolloServer = new ApolloServer({\n    resolvers: RootResolver,\n    typeDefs: RootTypedef,\n    introspection: true,\n    plugins: [\n      ApolloServerPluginDrainHttpServer({ httpServer }),\n      ApolloServerPluginLandingPageLocalDefault({\n        footer: false,\n        document: defaultDocument,\n        variables: defaultVariables,\n        embed: true\n      })\n    ],\n    stringifyResult\n  });\n\n  await apolloServer.start();\n\n  app.use(cors());\n  app.use(bodyParser());\n  app.use(\n    koaMiddleware(apolloServer, {\n      // eslint-disable-next-line @typescript-eslint/require-await\n      context: async ({ ctx }) => ({ token: ctx.headers.token })\n    })\n  );\n\n  return httpServer;\n};\n\nexport default gqlServer;\n"
  },
  {
    "path": "src/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"rootDir\": \"./\",\n    \"outDir\": \"../api\"\n  },\n  \"include\": [\".\", \"./lib/assets/**/*.json\"]\n}\n"
  },
  {
    "path": "tests/scenarios/abilities/getAbilities.test.ts",
    "content": "import { getAbilityName, getAbilityWithFullData } from '#test-utils/queries/abilities';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getAbility', () => {\n  describe('Regular Ability name only requests', () => {\n    test('GIVEN a valid name THEN returns Ability', async () => {\n      const { data } = await executeGraphQL<'getAbility'>({\n        query: getAbilityName,\n        variables: { ability: 'multiscale' }\n      });\n\n      expect(data.getAbility.name).toEqual('Multiscale');\n    });\n  });\n\n  describe('Regular Ability full data requests', () => {\n    test('GIVEN valid ability request THEN returns Ability WITH all data', async () => {\n      const { data } = await executeGraphQL<'getAbility'>({\n        query: getAbilityWithFullData,\n        variables: { ability: 'multiscale' }\n      });\n\n      expect(data.getAbility).toEqual({\n        desc: null,\n        isFieldAbility: null,\n        isNonstandard: null,\n        name: 'Multiscale',\n        shortDesc: 'If this Pokémon is at full HP, damage taken from attacks is halved.',\n        serebiiPage: 'https://www.serebii.net/abilitydex/multiscale.shtml',\n        smogonPage: 'https://www.smogon.com/dex/ss/abilities/multiscale',\n        bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Multiscale_(Ability)',\n        key: 'multiscale',\n        pokemonThatHaveThisAbility: [\n          {\n            key: 'cresceidon',\n            species: 'cresceidon',\n            abilities: {\n              first: {\n                key: 'multiscale',\n                bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Multiscale_(Ability)',\n                desc: null,\n                isFieldAbility: null,\n                isNonstandard: null,\n                name: 'Multiscale',\n                serebiiPage: 'https://www.serebii.net/abilitydex/multiscale.shtml',\n                shortDesc: 'If this Pokémon is at full HP, damage taken from attacks is halved.',\n                smogonPage: 'https://www.smogon.com/dex/ss/abilities/multiscale'\n              },\n              hidden: null,\n              second: {\n                key: 'roughskin',\n                bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Rough_Skin_(Ability)',\n                desc: 'Pokémon making contact with this Pokémon lose 1/8 of their maximum HP, rounded down.',\n                isFieldAbility: null,\n                isNonstandard: null,\n                name: 'Rough Skin',\n                serebiiPage: 'https://www.serebii.net/abilitydex/rough_skin.shtml',\n                shortDesc: 'Pokémon making contact with this Pokémon lose 1/8 of their max HP.',\n                smogonPage: 'https://www.smogon.com/dex/ss/abilities/rough_skin'\n              },\n              special: null\n            }\n          },\n          {\n            key: 'dragonite',\n            species: 'dragonite',\n            abilities: {\n              first: {\n                key: 'innerfocus',\n                bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Inner_Focus_(Ability)',\n                desc: 'This Pokémon cannot be made to flinch. This Pokémon is immune to the effect of the Intimidate Ability.',\n                isFieldAbility: null,\n                isNonstandard: null,\n                name: 'Inner Focus',\n                serebiiPage: 'https://www.serebii.net/abilitydex/inner_focus.shtml',\n                shortDesc: 'This Pokémon cannot be made to flinch. Immune to Intimidate.',\n                smogonPage: 'https://www.smogon.com/dex/ss/abilities/inner_focus'\n              },\n              hidden: {\n                key: 'multiscale',\n                bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Multiscale_(Ability)',\n                desc: null,\n                isFieldAbility: null,\n                isNonstandard: null,\n                name: 'Multiscale',\n                serebiiPage: 'https://www.serebii.net/abilitydex/multiscale.shtml',\n                shortDesc: 'If this Pokémon is at full HP, damage taken from attacks is halved.',\n                smogonPage: 'https://www.smogon.com/dex/ss/abilities/multiscale'\n              },\n              second: null,\n              special: null\n            }\n          },\n          {\n            key: 'dragonitemega',\n            species: 'dragonite-mega',\n            abilities: {\n              first: {\n                key: 'multiscale',\n                bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Multiscale_(Ability)',\n                desc: null,\n                isFieldAbility: null,\n                isNonstandard: null,\n                name: 'Multiscale',\n                serebiiPage: 'https://www.serebii.net/abilitydex/multiscale.shtml',\n                shortDesc: 'If this Pokémon is at full HP, damage taken from attacks is halved.',\n                smogonPage: 'https://www.smogon.com/dex/ss/abilities/multiscale'\n              },\n              hidden: null,\n              second: null,\n              special: null\n            }\n          },\n          {\n            key: 'lugia',\n            species: 'lugia',\n            abilities: {\n              first: {\n                key: 'pressure',\n                bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Pressure_(Ability)',\n                desc: \"If this Pokémon is the target of an opposing Pokémon's move, that move loses one additional PP. Imprison, Snatch, and Tera Blast also lose one additional PP when used by an opposing Pokémon, but Sticky Web does not.\",\n                isFieldAbility:\n                  'If you have a Pokémon with Pressure at the front of your party (even if fainted), there is a 50% chance that a Pokémon will be forced to the upper bound of their encounter level range.',\n                isNonstandard: null,\n                name: 'Pressure',\n                serebiiPage: 'https://www.serebii.net/abilitydex/pressure.shtml',\n                shortDesc: \"If this Pokémon is the target of a foe's move, that move loses one additional PP.\",\n                smogonPage: 'https://www.smogon.com/dex/ss/abilities/pressure'\n              },\n              hidden: {\n                key: 'multiscale',\n                bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Multiscale_(Ability)',\n                desc: null,\n                isFieldAbility: null,\n                isNonstandard: null,\n                name: 'Multiscale',\n                serebiiPage: 'https://www.serebii.net/abilitydex/multiscale.shtml',\n                shortDesc: 'If this Pokémon is at full HP, damage taken from attacks is halved.',\n                smogonPage: 'https://www.smogon.com/dex/ss/abilities/multiscale'\n              },\n              second: null,\n              special: null\n            }\n          }\n        ]\n      });\n    });\n  });\n\n  describe('Error Requests', () => {\n    test('GIVEN an invalid ability THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getAbilityName,\n        variables: { ability: 'totally_invalid_ability' }\n      });\n\n      expect(data.errors).toHaveLength(1);\n      expect(data.errors?.[0].message).toBe(\n        'Variable \"$ability\" got invalid value \"totally_invalid_ability\"; Value \"totally_invalid_ability\" does not exist in \"AbilitiesEnum\" enum.'\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/abilities/getFuzzyAbilities.test.ts",
    "content": "import { getFuzzyAbilityName, getFuzzyAbilityWithFullData } from '#test-utils/queries/abilities';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getFuzzyAbility', () => {\n  describe('Fuzzy Ability name only requests', () => {\n    test('GIVEN a valid fuzzy name THEN returns Ability', async () => {\n      const { data } = await executeGraphQL<'getFuzzyAbility'>({\n        query: getFuzzyAbilityName,\n        variables: { ability: 'multiscale' }\n      });\n\n      expect(data.getFuzzyAbility).toEqual([\n        {\n          name: 'Multiscale'\n        }\n      ]);\n    });\n  });\n\n  describe('Fuzzy Ability full data requests', () => {\n    test('GIVEN valid fuzzy ability request THEN returns Ability WITH all data', async () => {\n      const { data } = await executeGraphQL<'getFuzzyAbility'>({\n        query: getFuzzyAbilityWithFullData,\n        variables: { ability: 'multiscale' }\n      });\n\n      expect(data.getFuzzyAbility).toEqual([\n        {\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Multiscale_(Ability)',\n          desc: null,\n          isFieldAbility: null,\n          isNonstandard: null,\n          name: 'Multiscale',\n          serebiiPage: 'https://www.serebii.net/abilitydex/multiscale.shtml',\n          shortDesc: 'If this Pokémon is at full HP, damage taken from attacks is halved.',\n          smogonPage: 'https://www.smogon.com/dex/ss/abilities/multiscale'\n        }\n      ]);\n    });\n\n    test('GIVEN single letter ability THEN returns multiple Abilities WITH all data', async () => {\n      const { data } = await executeGraphQL<'getFuzzyAbility'>({\n        query: getFuzzyAbilityWithFullData,\n        variables: { ability: 'a', take: 3 }\n      });\n\n      expect(data.getFuzzyAbility).toEqual([\n        {\n          desc: 'While this Pokémon is active, Explosion, Mind Blown, Misty Explosion, Self-Destruct, and the Aftermath Ability are prevented from having an effect.',\n          isFieldAbility: null,\n          isNonstandard: null,\n          name: 'Damp',\n          shortDesc: 'Prevents Explosion/Mind Blown/Misty Explosion/Self-Destruct/Aftermath while active.',\n          serebiiPage: 'https://www.serebii.net/abilitydex/damp.shtml',\n          smogonPage: 'https://www.smogon.com/dex/ss/abilities/damp',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Damp_(Ability)'\n        },\n        {\n          desc: 'Prevents opposing Pokémon from choosing to switch out, unless they are holding a Shed Shell, are a Ghost type, or also have this Ability.',\n          isFieldAbility: null,\n          isNonstandard: null,\n          name: 'Shadow Tag',\n          shortDesc: 'Prevents foes from choosing to switch unless they also have this Ability.',\n          serebiiPage: 'https://www.serebii.net/abilitydex/shadow_tag.shtml',\n          smogonPage: 'https://www.smogon.com/dex/ss/abilities/shadow_tag',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Shadow_Tag_(Ability)'\n        },\n        {\n          desc: \"This Pokémon's Normal-type moves become Flying-type moves and have their power multiplied by 1.2. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.\",\n          isFieldAbility: null,\n          isNonstandard: null,\n          name: 'Aerilate',\n          shortDesc: \"This Pokémon's Normal-type moves become Flying type and have 1.2x power.\",\n          serebiiPage: 'https://www.serebii.net/abilitydex/aerilate.shtml',\n          smogonPage: 'https://www.smogon.com/dex/ss/abilities/aerilate',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Aerilate_(Ability)'\n        }\n      ]);\n    });\n\n    test('GIVEN single letter ability AND reverse:true THEN returns multiple Abilities WITH all data', async () => {\n      const { data } = await executeGraphQL<'getFuzzyAbility'>({\n        query: getFuzzyAbilityWithFullData,\n        variables: { ability: 'a', take: 3, reverse: true }\n      });\n\n      expect(data.getFuzzyAbility).toEqual([\n        {\n          desc: null,\n          isFieldAbility: null,\n          isNonstandard: null,\n          name: 'Embody Aspect (Hearthflame)',\n          shortDesc: \"On switch-in, this Pokémon's Attack is raised by 1 stage.\",\n          serebiiPage: 'https://www.serebii.net/abilitydex/embody_aspect_(hearthflame).shtml',\n          smogonPage: 'https://www.smogon.com/dex/ss/abilities/embody_aspect_(hearthflame)',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Embody_Aspect_(Hearthflame)_(Ability)'\n        },\n        {\n          desc: null,\n          isFieldAbility: null,\n          isNonstandard: null,\n          name: 'Embody Aspect (Cornerstone)',\n          shortDesc: \"On switch-in, this Pokémon's Defense is raised by 1 stage.\",\n          serebiiPage: 'https://www.serebii.net/abilitydex/embody_aspect_(cornerstone).shtml',\n          smogonPage: 'https://www.smogon.com/dex/ss/abilities/embody_aspect_(cornerstone)',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Embody_Aspect_(Cornerstone)_(Ability)'\n        },\n        {\n          desc: null,\n          isFieldAbility: null,\n          isNonstandard: null,\n          name: 'Embody Aspect (Wellspring)',\n          shortDesc: \"On switch-in, this Pokémon's Special Defense is raised by 1 stage.\",\n          serebiiPage: 'https://www.serebii.net/abilitydex/embody_aspect_(wellspring).shtml',\n          smogonPage: 'https://www.smogon.com/dex/ss/abilities/embody_aspect_(wellspring)',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Embody_Aspect_(Wellspring)_(Ability)'\n        }\n      ]);\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/items/getFuzzyItems.test.ts",
    "content": "import { getFuzzyItemName, getFuzzyItemWithFullData } from '#test-utils/queries/items';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getFuzzyItem', () => {\n  describe('Fuzzy Item name only requests', () => {\n    test('GIVEN a valid name THEN returns Item', async () => {\n      const { data } = await executeGraphQL<'getFuzzyItem'>({\n        query: getFuzzyItemName,\n        variables: { item: 'lifeorb' }\n      });\n\n      expect(data.getFuzzyItem).toEqual([{ name: 'Life Orb' }]);\n    });\n  });\n\n  describe('Fuzzy Item full data requests', () => {\n    test('GIVEN valid item request THEN returns Item WITH all data', async () => {\n      const { data } = await executeGraphQL<'getFuzzyItem'>({\n        query: getFuzzyItemWithFullData,\n        variables: { item: 'lifeorb' }\n      });\n\n      expect(data.getFuzzyItem).toEqual([\n        {\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Life_Orb',\n          desc: \"Holder's attacks do 1.3x damage, and it loses 1/10 its max HP after the attack.\",\n          generationIntroduced: 4,\n          isNonstandard: null,\n          name: 'Life Orb',\n          serebiiPage: 'https://www.serebii.net/itemdex/lifeorb.shtml',\n          shortDesc: \"Holder's attacks do 1.3x damage, and it loses 1/10 its max HP after the attack.\",\n          smogonPage: 'https://www.smogon.com/dex/sv/items/life-orb',\n          sprite: 'https://play.pokemonshowdown.com/sprites/itemicons/life-orb.png'\n        }\n      ]);\n    });\n\n    test('GIVEN single letter item THEN returns multiple Items WITH all data', async () => {\n      const { data } = await executeGraphQL<'getFuzzyItem'>({\n        query: getFuzzyItemWithFullData,\n        variables: { item: 'a', take: 3 }\n      });\n\n      expect(data.getFuzzyItem).toEqual([\n        {\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Assault_Vest',\n          desc: \"Holder's Sp. Def is 1.5x, but it can only select damaging moves.\",\n          generationIntroduced: 6,\n          isNonstandard: null,\n          name: 'Assault Vest',\n          serebiiPage: 'https://www.serebii.net/itemdex/assaultvest.shtml',\n          shortDesc: \"Holder's Sp. Def is 1.5x, but it can only select damaging moves.\",\n          smogonPage: 'https://www.smogon.com/dex/sv/items/assault-vest',\n          sprite: 'https://play.pokemonshowdown.com/sprites/itemicons/assault-vest.png'\n        },\n        {\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Choice_Band',\n          desc: \"Holder's Attack is 1.5x, but it can only select the first move it executes.\",\n          generationIntroduced: 3,\n          isNonstandard: null,\n          name: 'Choice Band',\n          serebiiPage: 'https://www.serebii.net/itemdex/choiceband.shtml',\n          shortDesc: \"Holder's Attack is 1.5x, but it can only select the first move it executes.\",\n          smogonPage: 'https://www.smogon.com/dex/sv/items/choice-band',\n          sprite: 'https://play.pokemonshowdown.com/sprites/itemicons/choice-band.png'\n        },\n        {\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Focus_Sash',\n          desc: \"If holder's HP is full, will survive an attack that would KO it with 1 HP. Single use.\",\n          generationIntroduced: 4,\n          isNonstandard: null,\n          name: 'Focus Sash',\n          serebiiPage: 'https://www.serebii.net/itemdex/focussash.shtml',\n          shortDesc: \"If holder's HP is full, will survive an attack that would KO it with 1 HP. Single use.\",\n          smogonPage: 'https://www.smogon.com/dex/sv/items/focus-sash',\n          sprite: 'https://play.pokemonshowdown.com/sprites/itemicons/focus-sash.png'\n        }\n      ]);\n    });\n\n    test('GIVEN single letter item AND reverse:true THEN returns multiple Items WITH all data', async () => {\n      const { data } = await executeGraphQL<'getFuzzyItem'>({\n        query: getFuzzyItemWithFullData,\n        variables: { item: 'a', take: 3, reverse: true }\n      });\n\n      expect(data.getFuzzyItem).toEqual([\n        {\n          bulbapediaPage: \"https://bulbapedia.bulbagarden.net/wiki/Miraidon's_Poké_Ball\",\n          desc: 'A Poké Ball that can hold the mysterious Pokémon known as Miraidon. A boy named Arven gave it to you.',\n          generationIntroduced: 9,\n          isNonstandard: null,\n          name: \"Miraidon's Poké Ball\",\n          serebiiPage: 'https://www.serebii.net/itemdex/miraidonspokeball.shtml',\n          shortDesc: null,\n          smogonPage: 'https://www.smogon.com/dex/sv/items/miraidon-s-poké-ball',\n          sprite: \"https://www.serebii.net/itemdex/sprites/miraidon'spokeball.png\"\n        },\n        {\n          bulbapediaPage: \"https://bulbapedia.bulbagarden.net/wiki/Koraidon's_Poké_Ball\",\n          desc: 'A Poké Ball that can hold the mysterious Pokémon known as Koraidon. A boy named Arven gave it to you.',\n          generationIntroduced: 9,\n          isNonstandard: null,\n          name: \"Koraidon's Poké Ball\",\n          serebiiPage: 'https://www.serebii.net/itemdex/koraidonspokeball.shtml',\n          shortDesc: null,\n          smogonPage: 'https://www.smogon.com/dex/sv/items/koraidon-s-poké-ball',\n          sprite: \"https://www.serebii.net/itemdex/sprites/koraidon'spokeball.png\"\n        },\n        {\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Unremarkable_Teacup',\n          desc: 'Evolves Poltchageist into Sinistcha when used.',\n          generationIntroduced: 9,\n          isNonstandard: null,\n          name: 'Unremarkable Teacup',\n          serebiiPage: 'https://www.serebii.net/itemdex/unremarkableteacup.shtml',\n          shortDesc: 'Evolves Poltchageist into Sinistcha when used.',\n          smogonPage: 'https://www.smogon.com/dex/sv/items/unremarkable-teacup',\n          sprite: 'https://play.pokemonshowdown.com/sprites/itemicons/unremarkable-teacup.png'\n        }\n      ]);\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/items/getItems.test.ts",
    "content": "import { getItemName, getItemWithFullData } from '#test-utils/queries/items';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getItem', () => {\n  describe('Regular Item name only requests', () => {\n    test('GIVEN a valid name THEN returns Item', async () => {\n      const { data } = await executeGraphQL<'getItem'>({\n        query: getItemName,\n        variables: { item: 'lifeorb' }\n      });\n\n      expect(data.getItem.name).toEqual('Life Orb');\n    });\n  });\n\n  describe('Regular Item full data requests', () => {\n    test('GIVEN valid item request THEN returns Item WITH all data', async () => {\n      const { data } = await executeGraphQL<'getItem'>({\n        query: getItemWithFullData,\n        variables: { item: 'lifeorb' }\n      });\n\n      expect(data.getItem).toEqual({\n        bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Life_Orb',\n        desc: \"Holder's attacks do 1.3x damage, and it loses 1/10 its max HP after the attack.\",\n        generationIntroduced: 4,\n        isNonstandard: null,\n        name: 'Life Orb',\n        serebiiPage: 'https://www.serebii.net/itemdex/lifeorb.shtml',\n        shortDesc: \"Holder's attacks do 1.3x damage, and it loses 1/10 its max HP after the attack.\",\n        smogonPage: 'https://www.smogon.com/dex/sv/items/life-orb',\n        sprite: 'https://play.pokemonshowdown.com/sprites/itemicons/life-orb.png'\n      });\n    });\n  });\n\n  describe('Error Requests', () => {\n    test('GIVEN an invalid item THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getItemName,\n        variables: { item: 'totally_invalid_item' }\n      });\n\n      expect(data.errors).toHaveLength(1);\n      expect(data.errors?.[0].message).toBe(\n        'Variable \"$item\" got invalid value \"totally_invalid_item\"; Value \"totally_invalid_item\" does not exist in \"ItemsEnum\" enum.'\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/learnsets/getFuzzyLearnset.test.ts",
    "content": "import { getFuzzyLearnset } from '#test-utils/queries/learnsets';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getFuzzyLearnset', () => {\n  describe('Error Requests', () => {\n    test('GIVEN a pokestar Pokémon THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getFuzzyLearnset,\n        variables: { pokemon: 'pokestarsmeargle', moves: ['dragonclaw'] }\n      });\n\n      expect(data.errors).toHaveLength(1);\n      expect(data.errors?.[0].message).toBe('Failed to get learnsets for the combination of Pokémon \"pokestarsmeargle\", and move \"dragonclaw\"');\n    });\n\n    test('GIVEN a pokestar Pokémon WITH multiple moves THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getFuzzyLearnset,\n        variables: { pokemon: 'pokestarsmeargle', moves: ['dragonclaw', 'sketch', 'extremespeed'] }\n      });\n\n      expect(data.errors).toHaveLength(1);\n      expect(data.errors?.[0].message).toBe(\n        'Failed to get learnsets for the combination of Pokémon \"pokestarsmeargle\", and moves \"dragonclaw, sketch, and extremespeed\"'\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/learnsets/getLearnset.test.ts",
    "content": "import {\n  getLearnset,\n  getLearnsetWithPokemonBacksprite,\n  getLearnsetWithPokemonColor,\n  getLearnsetWithPokemonNum,\n  getLearnsetWithPokemonShinyBackSprite,\n  getLearnsetWithPokemonShinySprite,\n  getLearnsetWithPokemonSpecies,\n  getLearnsetWithPokemonSprite\n} from '#test-utils/queries/learnsets';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getLearnset', () => {\n  describe('Successful requests', () => {\n    test('GIVEN valid Pokémon and single move request THEN returns Learnset WITH all data', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnset,\n        variables: { pokemon: 'charizard', moves: ['fireblast'] }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'charizard',\n        tmMoves: [\n          {\n            move: { name: 'Fire Blast' },\n            generation: 9\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 8\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 7\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 6\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 5\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 4\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 3\n          }\n        ],\n        virtualTransferMoves: [\n          {\n            move: { name: 'Fire Blast' },\n            generation: 8\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 7\n          }\n        ],\n        dreamworldMoves: [],\n        eggMoves: [],\n        eventMoves: [],\n        levelUpMoves: [],\n        tutorMoves: []\n      });\n    });\n\n    test('GIVEN valid Pokémon and 2 moves request THEN returns Learnset WITH all data', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnset,\n        variables: { pokemon: 'charizard', moves: ['fireblast', 'flamethrower'] }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'charizard',\n        tmMoves: [\n          {\n            move: { name: 'Fire Blast' },\n            generation: 9\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 8\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 7\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 6\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 5\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 4\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 3\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 9\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 8\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 7\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 6\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 5\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 4\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 3\n          }\n        ],\n        virtualTransferMoves: [\n          {\n            move: { name: 'Fire Blast' },\n            generation: 8\n          },\n          {\n            move: { name: 'Fire Blast' },\n            generation: 7\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 8\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 7\n          }\n        ],\n        dreamworldMoves: [],\n        eggMoves: [],\n        eventMoves: [\n          {\n            move: { name: 'Flamethrower' },\n            generation: 8\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 7\n          },\n          {\n            move: { name: 'Flamethrower' },\n            generation: 6\n          }\n        ],\n        levelUpMoves: [\n          {\n            move: { name: 'Flamethrower' },\n            level: 30,\n            generation: 9\n          },\n          {\n            move: { name: 'Flamethrower' },\n            level: 30,\n            generation: 8\n          },\n          {\n            move: { name: 'Flamethrower' },\n            level: 47,\n            generation: 7\n          },\n          {\n            move: { name: 'Flamethrower' },\n            level: 47,\n            generation: 6\n          },\n          {\n            move: { name: 'Flamethrower' },\n            level: 47,\n            generation: 5\n          },\n          {\n            move: { name: 'Flamethrower' },\n            level: 42,\n            generation: 4\n          },\n          {\n            move: { name: 'Flamethrower' },\n            level: 34,\n            generation: 3\n          }\n        ],\n        tutorMoves: []\n      });\n    });\n\n    test('GIVEN valid Pokémon and 2 moves and custom generation request THEN returns Learnset WITH all data', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnset,\n        variables: { pokemon: 'charizard', moves: ['fireblast', 'flamethrower'], generation: 7 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'charizard',\n        tmMoves: [\n          { move: { name: 'Fire Blast' }, generation: 7 },\n          { move: { name: 'Flamethrower' }, generation: 7 }\n        ],\n        virtualTransferMoves: [\n          { move: { name: 'Fire Blast' }, generation: 7 },\n          { move: { name: 'Flamethrower' }, generation: 7 }\n        ],\n        dreamworldMoves: [],\n        eggMoves: [],\n        eventMoves: [{ move: { name: 'Flamethrower' }, generation: 7 }],\n        levelUpMoves: [{ move: { name: 'Flamethrower' }, level: 47, generation: 7 }],\n        tutorMoves: []\n      });\n    });\n\n    test('GIVEN valid Pokémon and event move and custom generation request THEN returns Learnset WITH all data', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnset,\n        variables: { pokemon: 'dragonite', moves: ['extremespeed'], generation: 5 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'dragonite',\n        tmMoves: [],\n        virtualTransferMoves: [],\n        dreamworldMoves: [],\n        eggMoves: [],\n        eventMoves: [\n          { move: { name: 'Extreme Speed' }, generation: 5 },\n          { move: { name: 'Extreme Speed' }, generation: 5 }\n        ],\n        levelUpMoves: [],\n        tutorMoves: []\n      });\n    });\n\n    test('GIVEN valid Pokémon and tutor move and custom generation request THEN returns Learnset WITH all data', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnset,\n        variables: { pokemon: 'pikachu', moves: ['risingvoltage'], generation: 8 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'pikachu',\n        tmMoves: [],\n        virtualTransferMoves: [],\n        dreamworldMoves: [],\n        eggMoves: [],\n        eventMoves: [],\n        levelUpMoves: [],\n        tutorMoves: [{ move: { name: 'Rising Voltage' }, generation: 8 }]\n      });\n    });\n\n    test('GIVEN valid Pokémon and egg move and custom generation request THEN returns Learnset WITH all data', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnset,\n        variables: { pokemon: 'bunnelby', moves: ['defensecurl'], generation: 6 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'bunnelby',\n        tmMoves: [],\n        virtualTransferMoves: [],\n        dreamworldMoves: [],\n        eggMoves: [{ move: { name: 'Defense Curl' }, generation: 6 }],\n        eventMoves: [],\n        levelUpMoves: [],\n        tutorMoves: []\n      });\n    });\n\n    test('GIVEN valid Pokémon and dream world move and custom generation request THEN returns Learnset WITH all data', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnset,\n        variables: { pokemon: 'vulpix', moves: ['darkpulse'], generation: 5 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'vulpix',\n        tmMoves: [],\n        virtualTransferMoves: [],\n        dreamworldMoves: [\n          {\n            move: { name: 'Dark Pulse' },\n            generation: 5\n          }\n        ],\n        eggMoves: [],\n        eventMoves: [],\n        levelUpMoves: [],\n        tutorMoves: [\n          {\n            move: { name: 'Dark Pulse' },\n            generation: 5\n          }\n        ]\n      });\n    });\n\n    test('GIVEN valid Pokémon and null generation request THEN returns Learnset WITH all generation 9 data', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnset,\n        variables: { pokemon: 'vulpix', moves: ['darkpulse'], generation: null }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'vulpix',\n        tmMoves: [\n          {\n            generation: 9,\n            move: {\n              name: 'Dark Pulse'\n            }\n          }\n        ],\n        virtualTransferMoves: [],\n        dreamworldMoves: [],\n        eggMoves: [],\n        eventMoves: [],\n        levelUpMoves: [],\n        tutorMoves: []\n      });\n    });\n\n    test('GIVEN special form Pokémon THEN returns Learnset of base pokemon', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnset,\n        variables: { pokemon: 'dialgaorigin', moves: ['roaroftime'] }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'dialga-origin',\n        tmMoves: [],\n        virtualTransferMoves: [],\n        dreamworldMoves: [],\n        eggMoves: [],\n        eventMoves: [\n          {\n            move: { name: 'Roar of Time' },\n            generation: 8\n          },\n          {\n            move: { name: 'Roar of Time' },\n            generation: 7\n          },\n          {\n            move: { name: 'Roar of Time' },\n            generation: 7\n          },\n          {\n            move: { name: 'Roar of Time' },\n            generation: 7\n          },\n          {\n            move: { name: 'Roar of Time' },\n            generation: 7\n          },\n          {\n            move: { name: 'Roar of Time' },\n            generation: 6\n          },\n          {\n            move: { name: 'Roar of Time' },\n            generation: 6\n          },\n          {\n            move: { name: 'Roar of Time' },\n            generation: 5\n          },\n          {\n            move: { name: 'Roar of Time' },\n            generation: 4\n          },\n          {\n            move: { name: 'Roar of Time' },\n            generation: 4\n          }\n        ],\n        levelUpMoves: [\n          {\n            move: { name: 'Roar of Time' },\n            level: 88,\n            generation: 9\n          },\n          {\n            move: { name: 'Roar of Time' },\n            level: 88,\n            generation: 8\n          },\n          {\n            move: { name: 'Roar of Time' },\n            level: 46,\n            generation: 7\n          },\n          {\n            move: { name: 'Roar of Time' },\n            level: 46,\n            generation: 6\n          },\n          {\n            move: { name: 'Roar of Time' },\n            level: 46,\n            generation: 5\n          },\n          {\n            move: { name: 'Roar of Time' },\n            level: 40,\n            generation: 4\n          }\n        ],\n        tutorMoves: []\n      });\n    });\n  });\n\n  describe('Requests with shouldIncludePokemonDetails', () => {\n    test('GIVEN learnset WITH also requesting species THEN returns Learnset AND species', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnsetWithPokemonSpecies,\n        variables: { pokemon: 'victini', moves: ['searingshot'], generation: 8 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        species: 'victini',\n        levelUpMoves: [\n          {\n            move: { name: 'Searing Shot' },\n            level: 63,\n            generation: 8\n          }\n        ]\n      });\n    });\n\n    test('GIVEN learnset WITH also requesting backsprite THEN returns Learnset AND backsprite', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnsetWithPokemonBacksprite,\n        variables: { pokemon: 'victini', moves: ['searingshot'], generation: 8 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        backSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/victini.gif',\n        levelUpMoves: [\n          {\n            move: { name: 'Searing Shot' },\n            level: 63,\n            generation: 8\n          }\n        ]\n      });\n    });\n\n    test('GIVEN learnset WITH also requesting sprite THEN returns Learnset AND sprite', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnsetWithPokemonSprite,\n        variables: { pokemon: 'victini', moves: ['searingshot'], generation: 8 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        sprite: 'https://play.pokemonshowdown.com/sprites/ani/victini.gif',\n        levelUpMoves: [\n          {\n            move: { name: 'Searing Shot' },\n            level: 63,\n            generation: 8\n          }\n        ]\n      });\n    });\n\n    test('GIVEN learnset WITH also requesting shiny backsprite THEN returns Learnset AND shiny backsprite', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnsetWithPokemonShinyBackSprite,\n        variables: { pokemon: 'victini', moves: ['searingshot'], generation: 8 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        shinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/victini.gif',\n        levelUpMoves: [\n          {\n            move: { name: 'Searing Shot' },\n            level: 63,\n            generation: 8\n          }\n        ]\n      });\n    });\n\n    test('GIVEN learnset WITH also requesting shiny sprite THEN returns Learnset AND shiny sprite', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnsetWithPokemonShinySprite,\n        variables: { pokemon: 'victini', moves: ['searingshot'], generation: 8 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        shinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/victini.gif',\n        levelUpMoves: [\n          {\n            move: { name: 'Searing Shot' },\n            level: 63,\n            generation: 8\n          }\n        ]\n      });\n    });\n\n    test('GIVEN learnset WITH also requesting num THEN returns Learnset AND num', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnsetWithPokemonNum,\n        variables: { pokemon: 'victini', moves: ['searingshot'], generation: 8 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        num: 494,\n        levelUpMoves: [\n          {\n            move: { name: 'Searing Shot' },\n            level: 63,\n            generation: 8\n          }\n        ]\n      });\n    });\n\n    test('GIVEN learnset WITH also requesting color THEN returns Learnset AND color', async () => {\n      const { data } = await executeGraphQL<'getLearnset'>({\n        query: getLearnsetWithPokemonColor,\n        variables: { pokemon: 'victini', moves: ['searingshot'], generation: 8 }\n      });\n\n      expect(data.getLearnset).toEqual({\n        color: 'Yellow',\n        levelUpMoves: [\n          {\n            move: { name: 'Searing Shot' },\n            level: 63,\n            generation: 8\n          }\n        ]\n      });\n    });\n  });\n\n  describe('Error Requests', () => {\n    test('GIVEN an invalid Pokémon THEN returns learnset error', async () => {\n      const data = await executeGraphQL({\n        query: getLearnset,\n        variables: { pokemon: 'totally_invalid_pokemon' }\n      });\n\n      expect(data.errors).toHaveLength(2);\n      expect(data.errors?.[0].message).toBe(\n        'Variable \"$pokemon\" got invalid value \"totally_invalid_pokemon\"; Value \"totally_invalid_pokemon\" does not exist in \"PokemonEnum\" enum.'\n      );\n      expect(data.errors?.[1].message).toBe('Variable \"$moves\" of required type \"[MovesEnum!]!\" was not provided.');\n    });\n\n    test('GIVEN an invalid move THEN returns learnset error', async () => {\n      const data = await executeGraphQL({\n        query: getLearnset,\n        variables: { moves: ['totally_invalid_move'] }\n      });\n\n      expect(data.errors).toHaveLength(2);\n      expect(data.errors?.[0].message).toBe('Variable \"$pokemon\" of required type \"PokemonEnum!\" was not provided.');\n      expect(data.errors?.[1].message).toBe(\n        'Variable \"$moves\" got invalid value \"totally_invalid_move\" at \"moves[0]\"; Value \"totally_invalid_move\" does not exist in \"MovesEnum\" enum.'\n      );\n    });\n\n    test('GIVEN missing all required parameters THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getLearnset,\n        variables: {}\n      });\n\n      expect(data.errors).toHaveLength(2);\n      expect(data.errors?.[0].message).toBe('Variable \"$pokemon\" of required type \"PokemonEnum!\" was not provided.');\n      expect(data.errors?.[1].message).toBe('Variable \"$moves\" of required type \"[MovesEnum!]!\" was not provided.');\n    });\n\n    test('GIVEN invalid generation THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getLearnset,\n        variables: { moves: ['fly'], pokemon: 'dragonair', generation: 100 }\n      });\n\n      expect(data.errors).toHaveLength(1);\n      expect(data.errors?.[0].message).toBe('Received one or more errors');\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/moves/getFuzzyMoves.test.ts",
    "content": "import { getFuzzyMoveName, getFuzzyMoveWithFullData } from '#test-utils/queries/moves';\nimport { executeGraphQL } from '#test-utils/testUtils';\nimport { IsNonStandard } from '#utils/isNonStandardEnum';\n\ndescribe('getFuzzyMove', () => {\n  describe('Fuzzy Move name only requests', () => {\n    test('GIVEN a valid name THEN returns Move', async () => {\n      const { data } = await executeGraphQL<'getFuzzyMove'>({\n        query: getFuzzyMoveName,\n        variables: { move: 'dragonclaw' }\n      });\n\n      expect(data.getFuzzyMove).toEqual([{ name: 'Dragon Claw' }]);\n    });\n  });\n\n  describe('Fuzzy Move full data requests', () => {\n    test('GIVEN valid move request THEN returns Move WITH all data', async () => {\n      const { data } = await executeGraphQL<'getFuzzyMove'>({\n        query: getFuzzyMoveWithFullData,\n        variables: { move: 'dragonclaw' }\n      });\n\n      expect(data.getFuzzyMove).toEqual([\n        {\n          accuracy: 100,\n          maxMovePower: 130,\n          name: 'Dragon Claw',\n          pp: 15,\n          priority: 0,\n          serebiiPage: 'https://www.serebii.net/attackdex-swsh/dragonclaw.shtml',\n          shortDesc: 'No additional effect.',\n          smogonPage: 'https://www.smogon.com/dex/ss/moves/dragon-claw',\n          target: 'Normal',\n          type: 'Dragon',\n          zMovePower: 160,\n          basePower: '80',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)',\n          category: 'Physical',\n          contestType: 'Cool',\n          desc: 'No additional effect.',\n          isFieldMove: null,\n          isGMax: null,\n          isNonstandard: null,\n          isZ: null\n        }\n      ]);\n    });\n\n    test('GIVEN single letter move THEN returns multiple Moves WITH all data', async () => {\n      const { data } = await executeGraphQL<'getFuzzyMove'>({\n        query: getFuzzyMoveWithFullData,\n        variables: { move: 'a', take: 3 }\n      });\n\n      expect(data.getFuzzyMove).toEqual([\n        {\n          accuracy: 100,\n          maxMovePower: null,\n          name: 'Sinister Arrow Raid',\n          pp: 1,\n          priority: 0,\n          serebiiPage: 'https://www.serebii.net/attackdex-swsh/sinisterarrowraid.shtml',\n          shortDesc: 'No additional effect.',\n          smogonPage: 'https://www.smogon.com/dex/ss/moves/sinister-arrow-raid',\n          target: 'Normal',\n          type: 'Ghost',\n          zMovePower: 200,\n          basePower: '180',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Sinister_Arrow_Raid_(move)',\n          category: 'Physical',\n          contestType: 'Cool',\n          desc: 'No additional effect.',\n          isFieldMove: null,\n          isGMax: null,\n          isNonstandard: IsNonStandard.Past,\n          isZ: 'Decidium Z'\n        },\n        {\n          accuracy: 100,\n          maxMovePower: 70,\n          name: 'Acid',\n          pp: 30,\n          priority: 0,\n          serebiiPage: 'https://www.serebii.net/attackdex-swsh/acid.shtml',\n          shortDesc: '10% chance to lower the foe(s) Sp. Def by 1.',\n          smogonPage: 'https://www.smogon.com/dex/ss/moves/acid',\n          target: 'Adjacent Foes',\n          type: 'Poison',\n          zMovePower: 100,\n          basePower: '40',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Acid_(move)',\n          category: 'Special',\n          contestType: 'Clever',\n          desc: \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n          isFieldMove: null,\n          isGMax: null,\n          isNonstandard: null,\n          isZ: null\n        },\n        {\n          accuracy: 100,\n          maxMovePower: 90,\n          name: 'Absorb',\n          pp: 25,\n          priority: 0,\n          serebiiPage: 'https://www.serebii.net/attackdex-swsh/absorb.shtml',\n          shortDesc: 'User recovers 50% of the damage dealt.',\n          smogonPage: 'https://www.smogon.com/dex/ss/moves/absorb',\n          target: 'Normal',\n          type: 'Grass',\n          zMovePower: 100,\n          basePower: '20',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Absorb_(move)',\n          category: 'Special',\n          contestType: 'Clever',\n          desc: 'The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.',\n          isFieldMove: null,\n          isGMax: null,\n          isNonstandard: null,\n          isZ: null\n        }\n      ]);\n    });\n\n    test('GIVEN single letter move AND reverse:true THEN returns multiple Moves WITH all data', async () => {\n      const { data } = await executeGraphQL<'getFuzzyMove'>({\n        query: getFuzzyMoveWithFullData,\n        variables: { move: 'a', take: 3, reverse: true }\n      });\n\n      expect(data.getFuzzyMove).toEqual([\n        {\n          accuracy: 100,\n          maxMovePower: null,\n          name: 'Shattered Psyche',\n          pp: 1,\n          priority: 0,\n          serebiiPage: 'https://www.serebii.net/attackdex-swsh/shatteredpsyche.shtml',\n          shortDesc: \"Power is equal to the base move's Z-Power.\",\n          smogonPage: 'https://www.smogon.com/dex/ss/moves/shattered-psyche',\n          target: 'Normal',\n          type: 'Psychic',\n          zMovePower: 100,\n          basePower: '1',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Shattered_Psyche_(move)',\n          category: 'Physical',\n          contestType: 'Cool',\n          desc: null,\n          isFieldMove: null,\n          isGMax: null,\n          isNonstandard: IsNonStandard.Past,\n          isZ: 'Psychium Z'\n        },\n        {\n          accuracy: 100,\n          maxMovePower: null,\n          name: 'Revival Blessing',\n          pp: 1,\n          priority: 0,\n          serebiiPage: 'https://www.serebii.net/attackdex-swsh/revivalblessing.shtml',\n          shortDesc: 'Revives a fainted Pokémon to 50% HP.',\n          smogonPage: 'https://www.smogon.com/dex/ss/moves/revival-blessing',\n          target: 'Self',\n          type: 'Normal',\n          zMovePower: 0,\n          basePower: '0',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Revival_Blessing_(move)',\n          category: 'Status',\n          contestType: null,\n          desc: 'A fainted party member is selected and revived with 1/2 its max HP, rounded down. Fails if there are no fainted party members.',\n          isFieldMove: null,\n          isGMax: null,\n          isNonstandard: null,\n          isZ: null\n        },\n        {\n          accuracy: 100,\n          maxMovePower: 130,\n          name: 'Revelation Dance',\n          pp: 15,\n          priority: 0,\n          serebiiPage: 'https://www.serebii.net/attackdex-swsh/revelationdance.shtml',\n          shortDesc: \"Type varies based on the user's primary type.\",\n          smogonPage: 'https://www.smogon.com/dex/ss/moves/revelation-dance',\n          target: 'Normal',\n          type: 'Normal',\n          zMovePower: 175,\n          basePower: '90',\n          bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Revelation_Dance_(move)',\n          category: 'Special',\n          contestType: 'Beautiful',\n          desc: \"This move's type depends on the user's primary type. If the user's primary type is typeless, this move's type is the user's secondary type if it has one, otherwise the added type from Forest's Curse or Trick-or-Treat. This move is typeless if the user's type is typeless alone.\",\n          isFieldMove: null,\n          isGMax: null,\n          isNonstandard: null,\n          isZ: null\n        }\n      ]);\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/moves/getMoves.test.ts",
    "content": "import { getMoveName, getMoveWithFullData, getMoveZPower } from '#test-utils/queries/moves';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getMove', () => {\n  describe('Regular Move name only requests', () => {\n    test('GIVEN a valid name THEN returns Move', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveName,\n        variables: { move: 'dragonclaw' }\n      });\n\n      expect(data.getMove.name).toEqual('Dragon Claw');\n    });\n  });\n\n  describe('Regular Move full data requests', () => {\n    test('GIVEN valid move request THEN returns Move WITH all data', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveWithFullData,\n        variables: { move: 'dragonclaw' }\n      });\n\n      expect(data.getMove).toEqual({\n        accuracy: 100,\n        maxMovePower: 130,\n        name: 'Dragon Claw',\n        pp: 15,\n        priority: 0,\n        serebiiPage: 'https://www.serebii.net/attackdex-swsh/dragonclaw.shtml',\n        shortDesc: 'No additional effect.',\n        smogonPage: 'https://www.smogon.com/dex/ss/moves/dragon-claw',\n        target: 'Normal',\n        type: 'Dragon',\n        zMovePower: 160,\n        basePower: '80',\n        bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)',\n        category: 'Physical',\n        contestType: 'Cool',\n        desc: 'No additional effect.',\n        isFieldMove: null,\n        isGMax: null,\n        isNonstandard: null,\n        isZ: null\n      });\n    });\n  });\n\n  describe('Get differently computed Z-Power', () => {\n    test('GIVEN move with custom z-power THEN returns predefined Z-Power', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'flyingpress' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(170);\n    });\n\n    test('GIVEN move base power between 0 and 55 THEN returns Z-Power: 100', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'electroweb' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(100);\n    });\n\n    test('GIVEN move base power between 60 and 65 THEN returns Z-Power: 120', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'firefang' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(120);\n    });\n\n    test('GIVEN move base power between 70 and 75 THEN returns Z-Power: 140', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'burningjealousy' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(140);\n    });\n\n    test('GIVEN move base power between 80 and 85 THEN returns Z-Power: 160', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'anchorshot' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(160);\n    });\n\n    test('GIVEN move base power between 90 and 95 THEN returns Z-Power: 175', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'aquatail' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(175);\n    });\n\n    test('GIVEN move base power of 100 THEN returns Z-Power: 180', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'aeroblast' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(180);\n    });\n\n    test('GIVEN move base power of 110 THEN returns Z-Power: 185', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'aurawheel' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(185);\n    });\n\n    test('GIVEN move base power between 120 and 125 THEN returns Z-Power: 190', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'astralbarrage' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(190);\n    });\n\n    test('GIVEN move base power of 130 THEN returns Z-Power: 195', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'blueflare' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(195);\n    });\n\n    test('GIVEN move base power greater than 140 THEN returns Z-Power: 200', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'focuspunch' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(200);\n    });\n\n    test('GIVEN move which cannot be Z-Move THEN returns Z-Power: 0', async () => {\n      const { data } = await executeGraphQL<'getMove'>({\n        query: getMoveZPower,\n        variables: { move: 'pikapapow' }\n      });\n\n      expect(data.getMove.zMovePower).toEqual(0);\n    });\n  });\n\n  describe('Error Requests', () => {\n    test('GIVEN an invalid move THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getMoveName,\n        variables: { move: 'totally_invalid_move' }\n      });\n\n      expect(data.errors).toHaveLength(1);\n      expect(data.errors?.[0].message).toBe(\n        'Variable \"$move\" got invalid value \"totally_invalid_move\"; Value \"totally_invalid_move\" does not exist in \"MovesEnum\" enum.'\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/natures/getAllNatures.test.ts",
    "content": "import { getAllNatures } from '#test-utils/queries/natures';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getAllNatures', () => {\n  test('GIVEN no parameters THEN returns all Natures', async () => {\n    const { data } = await executeGraphQL<'getAllNatures'>({\n      query: getAllNatures\n    });\n\n    expect(data.getAllNatures).toEqual([\n      {\n        key: 'adamant',\n        name: 'Adamant'\n      },\n      {\n        key: 'bashful',\n        name: 'Bashful'\n      },\n      {\n        key: 'bold',\n        name: 'Bold'\n      },\n      {\n        key: 'brave',\n        name: 'Brave'\n      },\n      {\n        key: 'calm',\n        name: 'Calm'\n      },\n      {\n        key: 'careful',\n        name: 'Careful'\n      },\n      {\n        key: 'docile',\n        name: 'Docile'\n      },\n      {\n        key: 'gentle',\n        name: 'Gentle'\n      },\n      {\n        key: 'hardy',\n        name: 'Hardy'\n      },\n      {\n        key: 'hasty',\n        name: 'Hasty'\n      },\n      {\n        key: 'impish',\n        name: 'Impish'\n      },\n      {\n        key: 'jolly',\n        name: 'Jolly'\n      },\n      {\n        key: 'lax',\n        name: 'Lax'\n      },\n      {\n        key: 'lonely',\n        name: 'Lonely'\n      },\n      {\n        key: 'mild',\n        name: 'Mild'\n      },\n      {\n        key: 'modest',\n        name: 'Modest'\n      },\n      {\n        key: 'naive',\n        name: 'Naive'\n      },\n      {\n        key: 'naughty',\n        name: 'Naughty'\n      },\n      {\n        key: 'quiet',\n        name: 'Quiet'\n      },\n      {\n        key: 'quirky',\n        name: 'Quirky'\n      },\n      {\n        key: 'rash',\n        name: 'Rash'\n      },\n      {\n        key: 'relaxed',\n        name: 'Relaxed'\n      },\n      {\n        key: 'sassy',\n        name: 'Sassy'\n      },\n      {\n        key: 'serious',\n        name: 'Serious'\n      },\n      {\n        key: 'timid',\n        name: 'Timid'\n      }\n    ]);\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/natures/getNature.test.ts",
    "content": "import { getNatureName, getNatureWithFullData } from '#test-utils/queries/natures';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getNature', () => {\n  describe('Regular Nature name only requests', () => {\n    test('GIVEN a valid name THEN returns Nature', async () => {\n      const { data } = await executeGraphQL<'getNature'>({\n        query: getNatureName,\n        variables: { nature: 'adamant' }\n      });\n\n      expect(data.getNature.name).toEqual('Adamant');\n    });\n  });\n\n  describe('Regular Nature full data requests', () => {\n    test('GIVEN valid nature request THEN returns Nature WITH all data', async () => {\n      const { data } = await executeGraphQL<'getNature'>({\n        query: getNatureWithFullData,\n        variables: { nature: 'adamant' }\n      });\n\n      expect(data.getNature).toEqual({\n        name: 'Adamant',\n        increasedStat: 'Attack',\n        decreasedStat: 'Special Attack',\n        preferredFlavor: 'Spicy',\n        dislikedFlavor: 'Dry'\n      });\n    });\n  });\n\n  describe('Error Requests', () => {\n    test('GIVEN an invalid nature THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getNatureName,\n        variables: { nature: 'totally_invalid_nature' }\n      });\n\n      expect(data.errors).toHaveLength(1);\n      expect(data.errors?.[0].message).toBe(\n        'Variable \"$nature\" got invalid value \"totally_invalid_nature\"; Value \"totally_invalid_nature\" does not exist in \"NaturesEnum\" enum.'\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/pokemon/getAllPokemonSpecies.test.ts",
    "content": "import { getAllPokemon } from '#test-utils/queries/pokemon';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getAllPokemon', () => {\n  test('GIVEN a limit of 5 THEN returns the first 5 Pokémon', async () => {\n    const { data } = await executeGraphQL<'getAllPokemon'>({\n      query: getAllPokemon,\n      variables: { take: 5 }\n    });\n\n    expect(data.getAllPokemon).toEqual([\n      {\n        key: 'pokestarsmeargle',\n        species: 'Pokestar Smeargle'\n      },\n      {\n        key: 'pokestarufo',\n        species: 'Pokestar UFO'\n      },\n      {\n        key: 'pokestarufo2',\n        species: 'Pokestar UFO-2'\n      },\n      {\n        key: 'pokestarbrycenman',\n        species: 'Pokestar Brycen-Man'\n      },\n      {\n        key: 'pokestarmt',\n        species: 'Pokestar MT'\n      }\n    ]);\n  });\n\n  test('GIVEN a limit of 5 and offset of 5 THEN returns the second 5 Pokémon', async () => {\n    const { data } = await executeGraphQL<'getAllPokemon'>({\n      query: getAllPokemon,\n      variables: { take: 5, offset: 5 }\n    });\n\n    expect(data.getAllPokemon).toEqual([\n      {\n        key: 'pokestarmt2',\n        species: 'Pokestar MT2'\n      },\n      {\n        key: 'pokestartransport',\n        species: 'Pokestar Transport'\n      },\n      {\n        key: 'pokestargiant',\n        species: 'Pokestar Giant'\n      },\n      {\n        key: 'pokestarhumanoid',\n        species: 'Pokestar Humanoid'\n      },\n      {\n        key: 'pokestarmonster',\n        species: 'Pokestar Monster'\n      }\n    ]);\n  });\n\n  test('GIVEN a limit of 5 and reverse THEN returns the last 5 Pokémon', async () => {\n    const { data } = await executeGraphQL<'getAllPokemon'>({\n      query: getAllPokemon,\n      variables: { take: 5, reverse: true }\n    });\n\n    expect(data.getAllPokemon).toEqual([\n      {\n        key: 'pokestarsmeargle',\n        species: 'Pokestar Smeargle'\n      },\n      {\n        key: 'pokestarufo',\n        species: 'Pokestar UFO'\n      },\n      {\n        key: 'pokestarufo2',\n        species: 'Pokestar UFO-2'\n      },\n      {\n        key: 'pokestarbrycenman',\n        species: 'Pokestar Brycen-Man'\n      },\n      {\n        key: 'pokestarmt',\n        species: 'Pokestar MT'\n      }\n    ]);\n  });\n\n  test('GIVEN no parameters THEN returns all Pokémon', async () => {\n    const { data } = await executeGraphQL<'getAllPokemon'>({\n      query: getAllPokemon,\n      variables: {}\n    });\n\n    expect(data.getAllPokemon).toEqual([\n      {\n        key: 'pokestarsmeargle',\n        species: 'Pokestar Smeargle'\n      },\n      {\n        key: 'pokestarufo',\n        species: 'Pokestar UFO'\n      },\n      {\n        key: 'pokestarufo2',\n        species: 'Pokestar UFO-2'\n      },\n      {\n        key: 'pokestarbrycenman',\n        species: 'Pokestar Brycen-Man'\n      },\n      {\n        key: 'pokestarmt',\n        species: 'Pokestar MT'\n      },\n      {\n        key: 'pokestarmt2',\n        species: 'Pokestar MT2'\n      },\n      {\n        key: 'pokestartransport',\n        species: 'Pokestar Transport'\n      },\n      {\n        key: 'pokestargiant',\n        species: 'Pokestar Giant'\n      },\n      {\n        key: 'pokestarhumanoid',\n        species: 'Pokestar Humanoid'\n      },\n      {\n        key: 'pokestarmonster',\n        species: 'Pokestar Monster'\n      },\n      {\n        key: 'pokestarf00',\n        species: 'Pokestar F-00'\n      },\n      {\n        key: 'pokestarf002',\n        species: 'Pokestar F-002'\n      },\n      {\n        key: 'pokestarspirit',\n        species: 'Pokestar Spirit'\n      },\n      {\n        key: 'pokestarblackdoor',\n        species: 'Pokestar Black Door'\n      },\n      {\n        key: 'pokestarwhitedoor',\n        species: 'Pokestar White Door'\n      },\n      {\n        key: 'pokestarblackbelt',\n        species: 'Pokestar Black Belt'\n      },\n      {\n        key: 'pokestarufopropu2',\n        species: 'Pokestar UFO-PropU2'\n      },\n      { key: 'syclar', species: 'syclar' },\n      { key: 'syclant', species: 'syclant' },\n      { key: 'revenankh', species: 'revenankh' },\n      { key: 'embirch', species: 'embirch' },\n      { key: 'flarelm', species: 'flarelm' },\n      { key: 'pyroak', species: 'pyroak' },\n      { key: 'breezi', species: 'breezi' },\n      { key: 'fidgit', species: 'fidgit' },\n      { key: 'rebble', species: 'rebble' },\n      { key: 'tactite', species: 'tactite' },\n      { key: 'stratagem', species: 'stratagem' },\n      { key: 'privatyke', species: 'privatyke' },\n      { key: 'arghonaut', species: 'arghonaut' },\n      { key: 'kitsunoh', species: 'kitsunoh' },\n      { key: 'cyclohm', species: 'cyclohm' },\n      { key: 'colossoil', species: 'colossoil' },\n      { key: 'krilowatt', species: 'krilowatt' },\n      { key: 'voodoll', species: 'voodoll' },\n      { key: 'voodoom', species: 'voodoom' },\n      { key: 'scratchet', species: 'scratchet' },\n      { key: 'tomohawk', species: 'tomohawk' },\n      { key: 'necturine', species: 'necturine' },\n      { key: 'necturna', species: 'necturna' },\n      { key: 'mollux', species: 'mollux' },\n      { key: 'cupra', species: 'cupra' },\n      { key: 'argalis', species: 'argalis' },\n      { key: 'aurumoth', species: 'aurumoth' },\n      { key: 'brattler', species: 'brattler' },\n      { key: 'malaconda', species: 'malaconda' },\n      { key: 'cawdet', species: 'cawdet' },\n      { key: 'cawmodore', species: 'cawmodore' },\n      { key: 'volkritter', species: 'volkritter' },\n      { key: 'volkraken', species: 'volkraken' },\n      { key: 'snugglow', species: 'snugglow' },\n      { key: 'plasmanta', species: 'plasmanta' },\n      { key: 'floatoy', species: 'floatoy' },\n      { key: 'caimanoe', species: 'caimanoe' },\n      { key: 'naviathan', species: 'naviathan' },\n      { key: 'crucibelle', species: 'crucibelle' },\n      {\n        key: 'crucibellemega',\n        species: 'crucibelle-mega'\n      },\n      { key: 'pluffle', species: 'pluffle' },\n      { key: 'kerfluffle', species: 'kerfluffle' },\n      { key: 'pajantom', species: 'pajantom' },\n      { key: 'mumbao', species: 'mumbao' },\n      { key: 'jumbao', species: 'jumbao' },\n      { key: 'fawnifer', species: 'fawnifer' },\n      { key: 'electrelk', species: 'electrelk' },\n      { key: 'caribolt', species: 'caribolt' },\n      { key: 'smogecko', species: 'smogecko' },\n      { key: 'smoguana', species: 'smoguana' },\n      { key: 'smokomodo', species: 'smokomodo' },\n      { key: 'swirlpool', species: 'swirlpool' },\n      { key: 'coribalis', species: 'coribalis' },\n      { key: 'snaelstrom', species: 'snaelstrom' },\n      { key: 'justyke', species: 'justyke' },\n      { key: 'equilibra', species: 'equilibra' },\n      { key: 'solotl', species: 'solotl' },\n      { key: 'astrolotl', species: 'astrolotl' },\n      { key: 'miasmite', species: 'miasmite' },\n      { key: 'miasmaw', species: 'miasmaw' },\n      { key: 'chromera', species: 'chromera' },\n      { key: 'nohface', species: 'nohface' },\n      { key: 'monohm', species: 'monohm' },\n      { key: 'duohm', species: 'duohm' },\n      { key: 'dorsoil', species: 'dorsoil' },\n      { key: 'protowatt', species: 'protowatt' },\n      { key: 'venomicon', species: 'venomicon' },\n      {\n        key: 'venomiconepilogue',\n        species: 'venomicon-epilogue'\n      },\n      { key: 'saharascal', species: 'saharascal' },\n      { key: 'saharaja', species: 'saharaja' },\n      { key: 'ababo', species: 'ababo' },\n      {\n        key: 'scattervein',\n        species: 'scattervein'\n      },\n      { key: 'hemogoblin', species: 'hemogoblin' },\n      { key: 'cresceidon', species: 'cresceidon' },\n      { key: 'missingno', species: 'missingno.' },\n      { key: 'm00', species: \"'m (00)\" },\n      { key: 'bulbasaur', species: 'bulbasaur' },\n      { key: 'ivysaur', species: 'ivysaur' },\n      { key: 'venusaur', species: 'venusaur' },\n      {\n        key: 'venusaurgmax',\n        species: 'venusaur-gmax'\n      },\n      {\n        key: 'venusaurmega',\n        species: 'venusaur-mega'\n      },\n      { key: 'charmander', species: 'charmander' },\n      { key: 'charmeleon', species: 'charmeleon' },\n      { key: 'charizard', species: 'charizard' },\n      {\n        key: 'charizardmegax',\n        species: 'charizard-mega-x'\n      },\n      {\n        key: 'charizardmegay',\n        species: 'charizard-mega-y'\n      },\n      {\n        key: 'charizardgmax',\n        species: 'charizard-gmax'\n      },\n      { key: 'squirtle', species: 'squirtle' },\n      { key: 'wartortle', species: 'wartortle' },\n      { key: 'blastoise', species: 'blastoise' },\n      {\n        key: 'blastoisegmax',\n        species: 'blastoise-gmax'\n      },\n      {\n        key: 'blastoisemega',\n        species: 'blastoise-mega'\n      },\n      { key: 'caterpie', species: 'caterpie' },\n      { key: 'metapod', species: 'metapod' },\n      { key: 'butterfree', species: 'butterfree' },\n      {\n        key: 'butterfreegmax',\n        species: 'butterfree-gmax'\n      },\n      { key: 'weedle', species: 'weedle' },\n      { key: 'kakuna', species: 'kakuna' },\n      { key: 'beedrill', species: 'beedrill' },\n      {\n        key: 'beedrillmega',\n        species: 'beedrill-mega'\n      },\n      { key: 'pidgey', species: 'pidgey' },\n      { key: 'pidgeotto', species: 'pidgeotto' },\n      { key: 'pidgeot', species: 'pidgeot' },\n      {\n        key: 'pidgeotmega',\n        species: 'pidgeot-mega'\n      },\n      { key: 'rattata', species: 'rattata' },\n      {\n        key: 'rattataalola',\n        species: 'rattata-alola'\n      },\n      { key: 'raticate', species: 'raticate' },\n      {\n        key: 'raticatealola',\n        species: 'raticate-alola'\n      },\n      {\n        key: 'raticatealolatotem',\n        species: 'raticate-alola-totem'\n      },\n      { key: 'spearow', species: 'spearow' },\n      { key: 'fearow', species: 'fearow' },\n      { key: 'ekans', species: 'ekans' },\n      { key: 'arbok', species: 'arbok' },\n      { key: 'pikachu', species: 'pikachu' },\n      {\n        key: 'pikachugmax',\n        species: 'pikachu-gmax'\n      },\n      {\n        key: 'pikachucosplay',\n        species: 'pikachu-cosplay'\n      },\n      {\n        key: 'pikachurockstar',\n        species: 'pikachu-rock-star'\n      },\n      {\n        key: 'pikachubelle',\n        species: 'pikachu-belle'\n      },\n      {\n        key: 'pikachupopstar',\n        species: 'pikachu-pop-star'\n      },\n      {\n        key: 'pikachuphd',\n        species: 'pikachu-phd'\n      },\n      {\n        key: 'pikachulibre',\n        species: 'pikachu-libre'\n      },\n      {\n        key: 'pikachuoriginal',\n        species: 'pikachu-original'\n      },\n      {\n        key: 'pikachuhoenn',\n        species: 'pikachu-hoenn'\n      },\n      {\n        key: 'pikachusinnoh',\n        species: 'pikachu-sinnoh'\n      },\n      {\n        key: 'pikachuunova',\n        species: 'pikachu-unova'\n      },\n      {\n        key: 'pikachukalos',\n        species: 'pikachu-kalos'\n      },\n      {\n        key: 'pikachualola',\n        species: 'pikachu-alola'\n      },\n      {\n        key: 'pikachupartner',\n        species: 'pikachu-partner'\n      },\n      {\n        key: 'pikachustarter',\n        species: 'pikachu-starter'\n      },\n      {\n        key: 'pikachuworld',\n        species: 'pikachu-world'\n      },\n      { key: 'raichu', species: 'raichu' },\n      {\n        key: 'raichualola',\n        species: 'raichu-alola'\n      },\n      {\n        key: 'raichumegax',\n        species: 'raichu-mega-x'\n      },\n      {\n        key: 'raichumegay',\n        species: 'raichu-mega-y'\n      },\n      { key: 'sandshrew', species: 'sandshrew' },\n      {\n        key: 'sandshrewalola',\n        species: 'sandshrew-alola'\n      },\n      { key: 'sandslash', species: 'sandslash' },\n      {\n        key: 'sandslashalola',\n        species: 'sandslash-alola'\n      },\n      { key: 'nidoranf', species: 'nidoranf' },\n      { key: 'nidorina', species: 'nidorina' },\n      { key: 'nidoqueen', species: 'nidoqueen' },\n      { key: 'nidoranm', species: 'nidoranm' },\n      { key: 'nidorino', species: 'nidorino' },\n      { key: 'nidoking', species: 'nidoking' },\n      { key: 'clefairy', species: 'clefairy' },\n      { key: 'clefable', species: 'clefable' },\n      {\n        key: 'clefablemega',\n        species: 'clefable-mega'\n      },\n      { key: 'vulpix', species: 'vulpix' },\n      {\n        key: 'vulpixalola',\n        species: 'vulpix-alola'\n      },\n      { key: 'ninetales', species: 'ninetales' },\n      {\n        key: 'ninetalesalola',\n        species: 'ninetales-alola'\n      },\n      { key: 'jigglypuff', species: 'jigglypuff' },\n      { key: 'wigglytuff', species: 'wigglytuff' },\n      { key: 'zubat', species: 'zubat' },\n      { key: 'golbat', species: 'golbat' },\n      { key: 'oddish', species: 'oddish' },\n      { key: 'gloom', species: 'gloom' },\n      { key: 'vileplume', species: 'vileplume' },\n      { key: 'paras', species: 'paras' },\n      { key: 'parasect', species: 'parasect' },\n      { key: 'venonat', species: 'venonat' },\n      { key: 'venomoth', species: 'venomoth' },\n      { key: 'diglett', species: 'diglett' },\n      {\n        key: 'diglettalola',\n        species: 'diglett-alola'\n      },\n      { key: 'dugtrio', species: 'dugtrio' },\n      {\n        key: 'dugtrioalola',\n        species: 'dugtrio-alola'\n      },\n      { key: 'meowth', species: 'meowth' },\n      {\n        key: 'meowthalola',\n        species: 'meowth-alola'\n      },\n      {\n        key: 'meowthgalar',\n        species: 'meowth-galar'\n      },\n      {\n        key: 'meowthgmax',\n        species: 'meowth-gmax'\n      },\n      { key: 'persian', species: 'persian' },\n      {\n        key: 'persianalola',\n        species: 'persian-alola'\n      },\n      { key: 'psyduck', species: 'psyduck' },\n      { key: 'golduck', species: 'golduck' },\n      { key: 'mankey', species: 'mankey' },\n      { key: 'primeape', species: 'primeape' },\n      { key: 'growlithe', species: 'growlithe' },\n      {\n        key: 'growlithehisui',\n        species: 'growlithe-hisui'\n      },\n      { key: 'arcanine', species: 'arcanine' },\n      {\n        key: 'arcaninehisui',\n        species: 'arcanine-hisui'\n      },\n      { key: 'poliwag', species: 'poliwag' },\n      { key: 'poliwhirl', species: 'poliwhirl' },\n      { key: 'poliwrath', species: 'poliwrath' },\n      { key: 'abra', species: 'abra' },\n      { key: 'kadabra', species: 'kadabra' },\n      { key: 'alakazam', species: 'alakazam' },\n      {\n        key: 'alakazammega',\n        species: 'alakazam-mega'\n      },\n      { key: 'machop', species: 'machop' },\n      { key: 'machoke', species: 'machoke' },\n      { key: 'machamp', species: 'machamp' },\n      {\n        key: 'machampgmax',\n        species: 'machamp-gmax'\n      },\n      { key: 'bellsprout', species: 'bellsprout' },\n      { key: 'weepinbell', species: 'weepinbell' },\n      { key: 'victreebel', species: 'victreebel' },\n      {\n        key: 'victreebelmega',\n        species: 'victreebel-mega'\n      },\n      { key: 'tentacool', species: 'tentacool' },\n      { key: 'tentacruel', species: 'tentacruel' },\n      { key: 'geodude', species: 'geodude' },\n      {\n        key: 'geodudealola',\n        species: 'geodude-alola'\n      },\n      { key: 'graveler', species: 'graveler' },\n      {\n        key: 'graveleralola',\n        species: 'graveler-alola'\n      },\n      { key: 'golem', species: 'golem' },\n      {\n        key: 'golemalola',\n        species: 'golem-alola'\n      },\n      { key: 'ponyta', species: 'ponyta' },\n      {\n        key: 'ponytagalar',\n        species: 'ponyta-galar'\n      },\n      { key: 'rapidash', species: 'rapidash' },\n      {\n        key: 'rapidashgalar',\n        species: 'rapidash-galar'\n      },\n      { key: 'slowpoke', species: 'slowpoke' },\n      {\n        key: 'slowpokegalar',\n        species: 'slowpoke-galar'\n      },\n      { key: 'slowbro', species: 'slowbro' },\n      {\n        key: 'slowbrogalar',\n        species: 'slowbro-galar'\n      },\n      {\n        key: 'slowbromega',\n        species: 'slowbro-mega'\n      },\n      { key: 'magnemite', species: 'magnemite' },\n      { key: 'magneton', species: 'magneton' },\n      { key: 'farfetchd', species: \"farfetch'd\" },\n      {\n        key: 'farfetchdgalar',\n        species: 'farfetchd-galar'\n      },\n      { key: 'doduo', species: 'doduo' },\n      { key: 'dodrio', species: 'dodrio' },\n      { key: 'seel', species: 'seel' },\n      { key: 'dewgong', species: 'dewgong' },\n      { key: 'grimer', species: 'grimer' },\n      {\n        key: 'grimeralola',\n        species: 'grimer-alola'\n      },\n      { key: 'muk', species: 'muk' },\n      { key: 'mukalola', species: 'muk-alola' },\n      { key: 'shellder', species: 'shellder' },\n      { key: 'cloyster', species: 'cloyster' },\n      { key: 'gastly', species: 'gastly' },\n      { key: 'haunter', species: 'haunter' },\n      { key: 'gengar', species: 'gengar' },\n      {\n        key: 'gengarmega',\n        species: 'gengar-mega'\n      },\n      {\n        key: 'gengargmax',\n        species: 'gengar-gmax'\n      },\n      { key: 'onix', species: 'onix' },\n      { key: 'drowzee', species: 'drowzee' },\n      { key: 'hypno', species: 'hypno' },\n      { key: 'krabby', species: 'krabby' },\n      { key: 'kingler', species: 'kingler' },\n      {\n        key: 'kinglergmax',\n        species: 'kingler-gmax'\n      },\n      { key: 'voltorb', species: 'voltorb' },\n      {\n        key: 'voltorbhisui',\n        species: 'voltorb-hisui'\n      },\n      { key: 'electrode', species: 'electrode' },\n      {\n        key: 'electrodehisui',\n        species: 'electrode-hisui'\n      },\n      { key: 'exeggcute', species: 'exeggcute' },\n      { key: 'exeggutor', species: 'exeggutor' },\n      {\n        key: 'exeggutoralola',\n        species: 'exeggutor-alola'\n      },\n      { key: 'cubone', species: 'cubone' },\n      { key: 'marowak', species: 'marowak' },\n      {\n        key: 'marowakalola',\n        species: 'marowak-alola'\n      },\n      {\n        key: 'marowakalolatotem',\n        species: 'marowak-alola-totem'\n      },\n      { key: 'hitmonlee', species: 'hitmonlee' },\n      { key: 'hitmonchan', species: 'hitmonchan' },\n      { key: 'lickitung', species: 'lickitung' },\n      { key: 'koffing', species: 'koffing' },\n      { key: 'weezing', species: 'weezing' },\n      {\n        key: 'weezinggalar',\n        species: 'weezing-galar'\n      },\n      { key: 'rhyhorn', species: 'rhyhorn' },\n      { key: 'rhydon', species: 'rhydon' },\n      { key: 'chansey', species: 'chansey' },\n      { key: 'tangela', species: 'tangela' },\n      { key: 'kangaskhan', species: 'kangaskhan' },\n      {\n        key: 'kangaskhanmega',\n        species: 'kangaskhan-mega'\n      },\n      { key: 'horsea', species: 'horsea' },\n      { key: 'seadra', species: 'seadra' },\n      { key: 'goldeen', species: 'goldeen' },\n      { key: 'seaking', species: 'seaking' },\n      { key: 'staryu', species: 'staryu' },\n      { key: 'starmie', species: 'starmie' },\n      {\n        key: 'starmiemega',\n        species: 'starmie-mega'\n      },\n      { key: 'mrmime', species: 'Mr. Mime' },\n      {\n        key: 'mrmimegalar',\n        species: 'Mr. Mime-Galar'\n      },\n      { key: 'scyther', species: 'scyther' },\n      { key: 'jynx', species: 'jynx' },\n      { key: 'electabuzz', species: 'electabuzz' },\n      { key: 'magmar', species: 'magmar' },\n      { key: 'pinsir', species: 'pinsir' },\n      {\n        key: 'pinsirmega',\n        species: 'pinsir-mega'\n      },\n      { key: 'tauros', species: 'tauros' },\n      {\n        key: 'taurospaldeacombat',\n        species: 'tauros-paldeacombat'\n      },\n      {\n        key: 'taurospaldeablaze',\n        species: 'tauros-paldeablaze'\n      },\n      {\n        key: 'taurospaldeaaqua',\n        species: 'tauros-paldeaaqua'\n      },\n      { key: 'magikarp', species: 'magikarp' },\n      { key: 'gyarados', species: 'gyarados' },\n      {\n        key: 'gyaradosmega',\n        species: 'gyarados-mega'\n      },\n      { key: 'lapras', species: 'lapras' },\n      {\n        key: 'laprasgmax',\n        species: 'lapras-gmax'\n      },\n      { key: 'ditto', species: 'ditto' },\n      { key: 'eevee', species: 'eevee' },\n      {\n        key: 'eeveestarter',\n        species: 'eevee-starter'\n      },\n      { key: 'eeveegmax', species: 'eevee-gmax' },\n      { key: 'vaporeon', species: 'vaporeon' },\n      { key: 'jolteon', species: 'jolteon' },\n      { key: 'flareon', species: 'flareon' },\n      { key: 'porygon', species: 'porygon' },\n      { key: 'omanyte', species: 'omanyte' },\n      { key: 'omastar', species: 'omastar' },\n      { key: 'kabuto', species: 'kabuto' },\n      { key: 'kabutops', species: 'kabutops' },\n      { key: 'aerodactyl', species: 'aerodactyl' },\n      {\n        key: 'aerodactylmega',\n        species: 'aerodactyl-mega'\n      },\n      { key: 'snorlax', species: 'snorlax' },\n      {\n        key: 'snorlaxgmax',\n        species: 'snorlax-gmax'\n      },\n      { key: 'articuno', species: 'articuno' },\n      {\n        key: 'articunogalar',\n        species: 'articuno-galar'\n      },\n      { key: 'zapdos', species: 'zapdos' },\n      {\n        key: 'zapdosgalar',\n        species: 'zapdos-galar'\n      },\n      { key: 'moltres', species: 'moltres' },\n      {\n        key: 'moltresgalar',\n        species: 'moltres-galar'\n      },\n      { key: 'dratini', species: 'dratini' },\n      { key: 'dragonair', species: 'dragonair' },\n      { key: 'dragonite', species: 'dragonite' },\n      {\n        key: 'dragonitemega',\n        species: 'dragonite-mega'\n      },\n      { key: 'mewtwo', species: 'mewtwo' },\n      {\n        key: 'mewtwomegax',\n        species: 'mewtwo-mega-x'\n      },\n      {\n        key: 'mewtwomegay',\n        species: 'mewtwo-mega-y'\n      },\n      { key: 'mew', species: 'mew' },\n      { key: 'chikorita', species: 'chikorita' },\n      { key: 'bayleef', species: 'bayleef' },\n      { key: 'meganium', species: 'meganium' },\n      {\n        key: 'meganiummega',\n        species: 'meganium-mega'\n      },\n      { key: 'cyndaquil', species: 'cyndaquil' },\n      { key: 'quilava', species: 'quilava' },\n      { key: 'typhlosion', species: 'typhlosion' },\n      {\n        key: 'typhlosionhisui',\n        species: 'typhlosion-hisui'\n      },\n      { key: 'totodile', species: 'totodile' },\n      { key: 'croconaw', species: 'croconaw' },\n      { key: 'feraligatr', species: 'feraligatr' },\n      {\n        key: 'feraligatrmega',\n        species: 'feraligatr-mega'\n      },\n      { key: 'sentret', species: 'sentret' },\n      { key: 'furret', species: 'furret' },\n      { key: 'hoothoot', species: 'hoothoot' },\n      { key: 'noctowl', species: 'noctowl' },\n      { key: 'ledyba', species: 'ledyba' },\n      { key: 'ledian', species: 'ledian' },\n      { key: 'spinarak', species: 'spinarak' },\n      { key: 'ariados', species: 'ariados' },\n      { key: 'crobat', species: 'crobat' },\n      { key: 'chinchou', species: 'chinchou' },\n      { key: 'lanturn', species: 'lanturn' },\n      { key: 'pichu', species: 'pichu' },\n      {\n        key: 'pichuspikyeared',\n        species: 'pichu-spiky-eared'\n      },\n      { key: 'cleffa', species: 'cleffa' },\n      { key: 'igglybuff', species: 'igglybuff' },\n      { key: 'togepi', species: 'togepi' },\n      { key: 'togetic', species: 'togetic' },\n      { key: 'natu', species: 'natu' },\n      { key: 'xatu', species: 'xatu' },\n      { key: 'mareep', species: 'mareep' },\n      { key: 'flaaffy', species: 'flaaffy' },\n      { key: 'ampharos', species: 'ampharos' },\n      {\n        key: 'ampharosmega',\n        species: 'ampharos-mega'\n      },\n      { key: 'bellossom', species: 'bellossom' },\n      { key: 'marill', species: 'marill' },\n      { key: 'azumarill', species: 'azumarill' },\n      { key: 'sudowoodo', species: 'sudowoodo' },\n      { key: 'politoed', species: 'politoed' },\n      { key: 'hoppip', species: 'hoppip' },\n      { key: 'skiploom', species: 'skiploom' },\n      { key: 'jumpluff', species: 'jumpluff' },\n      { key: 'aipom', species: 'aipom' },\n      { key: 'sunkern', species: 'sunkern' },\n      { key: 'sunflora', species: 'sunflora' },\n      { key: 'yanma', species: 'yanma' },\n      { key: 'wooper', species: 'wooper' },\n      {\n        key: 'wooperpaldea',\n        species: 'wooper-paldea'\n      },\n      { key: 'quagsire', species: 'quagsire' },\n      { key: 'espeon', species: 'espeon' },\n      { key: 'umbreon', species: 'umbreon' },\n      { key: 'murkrow', species: 'murkrow' },\n      { key: 'slowking', species: 'slowking' },\n      {\n        key: 'slowkinggalar',\n        species: 'slowking-galar'\n      },\n      { key: 'misdreavus', species: 'misdreavus' },\n      { key: 'unown', species: 'unown' },\n      { key: 'wobbuffet', species: 'wobbuffet' },\n      { key: 'girafarig', species: 'girafarig' },\n      { key: 'pineco', species: 'pineco' },\n      { key: 'forretress', species: 'forretress' },\n      { key: 'dunsparce', species: 'dunsparce' },\n      { key: 'gligar', species: 'gligar' },\n      { key: 'steelix', species: 'steelix' },\n      {\n        key: 'steelixmega',\n        species: 'steelix-mega'\n      },\n      { key: 'snubbull', species: 'snubbull' },\n      { key: 'granbull', species: 'granbull' },\n      { key: 'qwilfish', species: 'qwilfish' },\n      {\n        key: 'qwilfishhisui',\n        species: 'qwilfish-hisui'\n      },\n      { key: 'scizor', species: 'scizor' },\n      {\n        key: 'scizormega',\n        species: 'scizor-mega'\n      },\n      { key: 'shuckle', species: 'shuckle' },\n      { key: 'heracross', species: 'heracross' },\n      {\n        key: 'heracrossmega',\n        species: 'heracross-mega'\n      },\n      { key: 'sneasel', species: 'sneasel' },\n      { key: 'sneaselhisui', species: 'sneasel-hisui' },\n      { key: 'teddiursa', species: 'teddiursa' },\n      { key: 'ursaring', species: 'ursaring' },\n      { key: 'slugma', species: 'slugma' },\n      { key: 'magcargo', species: 'magcargo' },\n      { key: 'swinub', species: 'swinub' },\n      { key: 'piloswine', species: 'piloswine' },\n      { key: 'corsola', species: 'corsola' },\n      {\n        key: 'corsolagalar',\n        species: 'corsola-galar'\n      },\n      { key: 'remoraid', species: 'remoraid' },\n      { key: 'octillery', species: 'octillery' },\n      { key: 'delibird', species: 'delibird' },\n      { key: 'mantine', species: 'mantine' },\n      { key: 'skarmory', species: 'skarmory' },\n      {\n        key: 'skarmorymega',\n        species: 'skarmory-mega'\n      },\n      { key: 'houndour', species: 'houndour' },\n      { key: 'houndoom', species: 'houndoom' },\n      {\n        key: 'houndoommega',\n        species: 'houndoom-mega'\n      },\n      { key: 'kingdra', species: 'kingdra' },\n      { key: 'phanpy', species: 'phanpy' },\n      { key: 'donphan', species: 'donphan' },\n      { key: 'porygon2', species: 'porygon2' },\n      { key: 'stantler', species: 'stantler' },\n      { key: 'smeargle', species: 'smeargle' },\n      { key: 'tyrogue', species: 'tyrogue' },\n      { key: 'hitmontop', species: 'hitmontop' },\n      { key: 'smoochum', species: 'smoochum' },\n      { key: 'elekid', species: 'elekid' },\n      { key: 'magby', species: 'magby' },\n      { key: 'miltank', species: 'miltank' },\n      { key: 'blissey', species: 'blissey' },\n      { key: 'raikou', species: 'raikou' },\n      { key: 'entei', species: 'entei' },\n      { key: 'suicune', species: 'suicune' },\n      { key: 'larvitar', species: 'larvitar' },\n      { key: 'pupitar', species: 'pupitar' },\n      { key: 'tyranitar', species: 'tyranitar' },\n      {\n        key: 'tyranitarmega',\n        species: 'tyranitar-mega'\n      },\n      { key: 'lugia', species: 'lugia' },\n      { key: 'hooh', species: 'ho-oh' },\n      { key: 'celebi', species: 'celebi' },\n      { key: 'treecko', species: 'treecko' },\n      { key: 'grovyle', species: 'grovyle' },\n      { key: 'sceptile', species: 'sceptile' },\n      {\n        key: 'sceptilemega',\n        species: 'sceptile-mega'\n      },\n      { key: 'torchic', species: 'torchic' },\n      { key: 'combusken', species: 'combusken' },\n      { key: 'blaziken', species: 'blaziken' },\n      {\n        key: 'blazikenmega',\n        species: 'blaziken-mega'\n      },\n      { key: 'mudkip', species: 'mudkip' },\n      { key: 'marshtomp', species: 'marshtomp' },\n      { key: 'swampert', species: 'swampert' },\n      {\n        key: 'swampertmega',\n        species: 'swampert-mega'\n      },\n      { key: 'poochyena', species: 'poochyena' },\n      { key: 'mightyena', species: 'mightyena' },\n      { key: 'zigzagoon', species: 'zigzagoon' },\n      {\n        key: 'zigzagoongalar',\n        species: 'zigzagoon-galar'\n      },\n      { key: 'linoone', species: 'linoone' },\n      {\n        key: 'linoonegalar',\n        species: 'linoone-galar'\n      },\n      { key: 'wurmple', species: 'wurmple' },\n      { key: 'silcoon', species: 'silcoon' },\n      { key: 'beautifly', species: 'beautifly' },\n      { key: 'cascoon', species: 'cascoon' },\n      { key: 'dustox', species: 'dustox' },\n      { key: 'lotad', species: 'lotad' },\n      { key: 'lombre', species: 'lombre' },\n      { key: 'ludicolo', species: 'ludicolo' },\n      { key: 'seedot', species: 'seedot' },\n      { key: 'nuzleaf', species: 'nuzleaf' },\n      { key: 'shiftry', species: 'shiftry' },\n      { key: 'taillow', species: 'taillow' },\n      { key: 'swellow', species: 'swellow' },\n      { key: 'wingull', species: 'wingull' },\n      { key: 'pelipper', species: 'pelipper' },\n      { key: 'ralts', species: 'ralts' },\n      { key: 'kirlia', species: 'kirlia' },\n      { key: 'gardevoir', species: 'gardevoir' },\n      {\n        key: 'gardevoirmega',\n        species: 'gardevoir-mega'\n      },\n      { key: 'surskit', species: 'surskit' },\n      { key: 'masquerain', species: 'masquerain' },\n      { key: 'shroomish', species: 'shroomish' },\n      { key: 'breloom', species: 'breloom' },\n      { key: 'slakoth', species: 'slakoth' },\n      { key: 'vigoroth', species: 'vigoroth' },\n      { key: 'slaking', species: 'slaking' },\n      { key: 'nincada', species: 'nincada' },\n      { key: 'ninjask', species: 'ninjask' },\n      { key: 'shedinja', species: 'shedinja' },\n      { key: 'whismur', species: 'whismur' },\n      { key: 'loudred', species: 'loudred' },\n      { key: 'exploud', species: 'exploud' },\n      { key: 'makuhita', species: 'makuhita' },\n      { key: 'hariyama', species: 'hariyama' },\n      { key: 'azurill', species: 'azurill' },\n      { key: 'nosepass', species: 'nosepass' },\n      { key: 'skitty', species: 'skitty' },\n      { key: 'delcatty', species: 'delcatty' },\n      { key: 'sableye', species: 'sableye' },\n      {\n        key: 'sableyemega',\n        species: 'sableye-mega'\n      },\n      { key: 'mawile', species: 'mawile' },\n      {\n        key: 'mawilemega',\n        species: 'mawile-mega'\n      },\n      { key: 'aron', species: 'aron' },\n      { key: 'lairon', species: 'lairon' },\n      { key: 'aggron', species: 'aggron' },\n      {\n        key: 'aggronmega',\n        species: 'aggron-mega'\n      },\n      { key: 'meditite', species: 'meditite' },\n      { key: 'medicham', species: 'medicham' },\n      {\n        key: 'medichammega',\n        species: 'medicham-mega'\n      },\n      { key: 'electrike', species: 'electrike' },\n      { key: 'manectric', species: 'manectric' },\n      {\n        key: 'manectricmega',\n        species: 'manectric-mega'\n      },\n      { key: 'plusle', species: 'plusle' },\n      { key: 'minun', species: 'minun' },\n      { key: 'volbeat', species: 'volbeat' },\n      { key: 'illumise', species: 'illumise' },\n      { key: 'roselia', species: 'roselia' },\n      { key: 'gulpin', species: 'gulpin' },\n      { key: 'swalot', species: 'swalot' },\n      { key: 'carvanha', species: 'carvanha' },\n      { key: 'sharpedo', species: 'sharpedo' },\n      {\n        key: 'sharpedomega',\n        species: 'sharpedo-mega'\n      },\n      { key: 'wailmer', species: 'wailmer' },\n      { key: 'wailord', species: 'wailord' },\n      { key: 'numel', species: 'numel' },\n      { key: 'camerupt', species: 'camerupt' },\n      {\n        key: 'cameruptmega',\n        species: 'camerupt-mega'\n      },\n      { key: 'torkoal', species: 'torkoal' },\n      { key: 'spoink', species: 'spoink' },\n      { key: 'grumpig', species: 'grumpig' },\n      { key: 'spinda', species: 'spinda' },\n      { key: 'trapinch', species: 'trapinch' },\n      { key: 'vibrava', species: 'vibrava' },\n      { key: 'flygon', species: 'flygon' },\n      { key: 'cacnea', species: 'cacnea' },\n      { key: 'cacturne', species: 'cacturne' },\n      { key: 'swablu', species: 'swablu' },\n      { key: 'altaria', species: 'altaria' },\n      {\n        key: 'altariamega',\n        species: 'altaria-mega'\n      },\n      { key: 'zangoose', species: 'zangoose' },\n      { key: 'seviper', species: 'seviper' },\n      { key: 'lunatone', species: 'lunatone' },\n      { key: 'solrock', species: 'solrock' },\n      { key: 'barboach', species: 'barboach' },\n      { key: 'whiscash', species: 'whiscash' },\n      { key: 'corphish', species: 'corphish' },\n      { key: 'crawdaunt', species: 'crawdaunt' },\n      { key: 'baltoy', species: 'baltoy' },\n      { key: 'claydol', species: 'claydol' },\n      { key: 'lileep', species: 'lileep' },\n      { key: 'cradily', species: 'cradily' },\n      { key: 'anorith', species: 'anorith' },\n      { key: 'armaldo', species: 'armaldo' },\n      { key: 'feebas', species: 'feebas' },\n      { key: 'milotic', species: 'milotic' },\n      { key: 'castform', species: 'castform' },\n      {\n        key: 'castformsunny',\n        species: 'castform-sunny'\n      },\n      {\n        key: 'castformrainy',\n        species: 'castform-rainy'\n      },\n      {\n        key: 'castformsnowy',\n        species: 'castform-snowy'\n      },\n      { key: 'kecleon', species: 'kecleon' },\n      { key: 'shuppet', species: 'shuppet' },\n      { key: 'banette', species: 'banette' },\n      {\n        key: 'banettemega',\n        species: 'banette-mega'\n      },\n      { key: 'duskull', species: 'duskull' },\n      { key: 'dusclops', species: 'dusclops' },\n      { key: 'tropius', species: 'tropius' },\n      { key: 'chimecho', species: 'chimecho' },\n      {\n        key: 'chimechomega',\n        species: 'chimecho-mega'\n      },\n      { key: 'absol', species: 'absol' },\n      { key: 'absolmega', species: 'absol-mega' },\n      { key: 'absolmegaz', species: 'absol-mega-z' },\n      { key: 'wynaut', species: 'wynaut' },\n      { key: 'snorunt', species: 'snorunt' },\n      { key: 'glalie', species: 'glalie' },\n      {\n        key: 'glaliemega',\n        species: 'glalie-mega'\n      },\n      { key: 'spheal', species: 'spheal' },\n      { key: 'sealeo', species: 'sealeo' },\n      { key: 'walrein', species: 'walrein' },\n      { key: 'clamperl', species: 'clamperl' },\n      { key: 'huntail', species: 'huntail' },\n      { key: 'gorebyss', species: 'gorebyss' },\n      { key: 'relicanth', species: 'relicanth' },\n      { key: 'luvdisc', species: 'luvdisc' },\n      { key: 'bagon', species: 'bagon' },\n      { key: 'shelgon', species: 'shelgon' },\n      { key: 'salamence', species: 'salamence' },\n      {\n        key: 'salamencemega',\n        species: 'salamence-mega'\n      },\n      { key: 'beldum', species: 'beldum' },\n      { key: 'metang', species: 'metang' },\n      { key: 'metagross', species: 'metagross' },\n      {\n        key: 'metagrossmega',\n        species: 'metagross-mega'\n      },\n      { key: 'regirock', species: 'regirock' },\n      { key: 'regice', species: 'regice' },\n      { key: 'registeel', species: 'registeel' },\n      { key: 'latias', species: 'latias' },\n      {\n        key: 'latiasmega',\n        species: 'latias-mega'\n      },\n      { key: 'latios', species: 'latios' },\n      {\n        key: 'latiosmega',\n        species: 'latios-mega'\n      },\n      { key: 'kyogre', species: 'kyogre' },\n      {\n        key: 'kyogreprimal',\n        species: 'kyogre-primal'\n      },\n      { key: 'groudon', species: 'groudon' },\n      {\n        key: 'groudonprimal',\n        species: 'groudon-primal'\n      },\n      { key: 'rayquaza', species: 'rayquaza' },\n      {\n        key: 'rayquazamega',\n        species: 'rayquaza-mega'\n      },\n      { key: 'jirachi', species: 'jirachi' },\n      { key: 'deoxys', species: 'deoxys' },\n      {\n        key: 'deoxysattack',\n        species: 'deoxys-attack'\n      },\n      {\n        key: 'deoxysdefense',\n        species: 'deoxys-defense'\n      },\n      {\n        key: 'deoxysspeed',\n        species: 'deoxys-speed'\n      },\n      { key: 'turtwig', species: 'turtwig' },\n      { key: 'grotle', species: 'grotle' },\n      { key: 'torterra', species: 'torterra' },\n      { key: 'chimchar', species: 'chimchar' },\n      { key: 'monferno', species: 'monferno' },\n      { key: 'infernape', species: 'infernape' },\n      { key: 'piplup', species: 'piplup' },\n      { key: 'prinplup', species: 'prinplup' },\n      { key: 'empoleon', species: 'empoleon' },\n      { key: 'starly', species: 'starly' },\n      { key: 'staravia', species: 'staravia' },\n      { key: 'staraptor', species: 'staraptor' },\n      { key: 'staraptormega', species: 'staraptor-mega' },\n      { key: 'bidoof', species: 'bidoof' },\n      { key: 'bibarel', species: 'bibarel' },\n      { key: 'kricketot', species: 'kricketot' },\n      { key: 'kricketune', species: 'kricketune' },\n      { key: 'shinx', species: 'shinx' },\n      { key: 'luxio', species: 'luxio' },\n      { key: 'luxray', species: 'luxray' },\n      { key: 'budew', species: 'budew' },\n      { key: 'roserade', species: 'roserade' },\n      { key: 'cranidos', species: 'cranidos' },\n      { key: 'rampardos', species: 'rampardos' },\n      { key: 'shieldon', species: 'shieldon' },\n      { key: 'bastiodon', species: 'bastiodon' },\n      { key: 'burmy', species: 'burmy' },\n      { key: 'wormadam', species: 'wormadam' },\n      {\n        key: 'wormadamsandy',\n        species: 'wormadam-sandy'\n      },\n      {\n        key: 'wormadamtrash',\n        species: 'wormadam-trash'\n      },\n      { key: 'mothim', species: 'mothim' },\n      { key: 'combee', species: 'combee' },\n      { key: 'vespiquen', species: 'vespiquen' },\n      { key: 'pachirisu', species: 'pachirisu' },\n      { key: 'buizel', species: 'buizel' },\n      { key: 'floatzel', species: 'floatzel' },\n      { key: 'cherubi', species: 'cherubi' },\n      { key: 'cherrim', species: 'cherrim' },\n      {\n        key: 'cherrimsunshine',\n        species: 'cherrim-sunshine'\n      },\n      { key: 'shellos', species: 'shellos' },\n      { key: 'gastrodon', species: 'gastrodon' },\n      { key: 'ambipom', species: 'ambipom' },\n      { key: 'drifloon', species: 'drifloon' },\n      { key: 'drifblim', species: 'drifblim' },\n      { key: 'buneary', species: 'buneary' },\n      { key: 'lopunny', species: 'lopunny' },\n      {\n        key: 'lopunnymega',\n        species: 'lopunny-mega'\n      },\n      { key: 'mismagius', species: 'mismagius' },\n      { key: 'honchkrow', species: 'honchkrow' },\n      { key: 'glameow', species: 'glameow' },\n      { key: 'purugly', species: 'purugly' },\n      { key: 'chingling', species: 'chingling' },\n      { key: 'stunky', species: 'stunky' },\n      { key: 'skuntank', species: 'skuntank' },\n      { key: 'bronzor', species: 'bronzor' },\n      { key: 'bronzong', species: 'bronzong' },\n      { key: 'bonsly', species: 'bonsly' },\n      { key: 'mimejr', species: 'Mime Jr.' },\n      { key: 'happiny', species: 'happiny' },\n      { key: 'chatot', species: 'chatot' },\n      { key: 'spiritomb', species: 'spiritomb' },\n      { key: 'gible', species: 'gible' },\n      { key: 'gabite', species: 'gabite' },\n      { key: 'garchomp', species: 'garchomp' },\n      {\n        key: 'garchompmega',\n        species: 'garchomp-mega'\n      },\n      {\n        key: 'garchompmegaz',\n        species: 'garchomp-mega-z'\n      },\n      { key: 'munchlax', species: 'munchlax' },\n      { key: 'riolu', species: 'riolu' },\n      { key: 'lucario', species: 'lucario' },\n      {\n        key: 'lucariomega',\n        species: 'lucario-mega'\n      },\n      {\n        key: 'lucariomegaz',\n        species: 'lucario-mega-z'\n      },\n      { key: 'hippopotas', species: 'hippopotas' },\n      { key: 'hippowdon', species: 'hippowdon' },\n      { key: 'skorupi', species: 'skorupi' },\n      { key: 'drapion', species: 'drapion' },\n      { key: 'croagunk', species: 'croagunk' },\n      { key: 'toxicroak', species: 'toxicroak' },\n      { key: 'carnivine', species: 'carnivine' },\n      { key: 'finneon', species: 'finneon' },\n      { key: 'lumineon', species: 'lumineon' },\n      { key: 'mantyke', species: 'mantyke' },\n      { key: 'snover', species: 'snover' },\n      { key: 'abomasnow', species: 'abomasnow' },\n      {\n        key: 'abomasnowmega',\n        species: 'abomasnow-mega'\n      },\n      { key: 'weavile', species: 'weavile' },\n      { key: 'magnezone', species: 'magnezone' },\n      { key: 'lickilicky', species: 'lickilicky' },\n      { key: 'rhyperior', species: 'rhyperior' },\n      { key: 'tangrowth', species: 'tangrowth' },\n      { key: 'electivire', species: 'electivire' },\n      { key: 'magmortar', species: 'magmortar' },\n      { key: 'togekiss', species: 'togekiss' },\n      { key: 'yanmega', species: 'yanmega' },\n      { key: 'leafeon', species: 'leafeon' },\n      { key: 'glaceon', species: 'glaceon' },\n      { key: 'gliscor', species: 'gliscor' },\n      { key: 'mamoswine', species: 'mamoswine' },\n      { key: 'porygonz', species: 'porygon-z' },\n      { key: 'gallade', species: 'gallade' },\n      {\n        key: 'gallademega',\n        species: 'gallade-mega'\n      },\n      { key: 'probopass', species: 'probopass' },\n      { key: 'dusknoir', species: 'dusknoir' },\n      { key: 'froslass', species: 'froslass' },\n      {\n        key: 'froslassmega',\n        species: 'froslass-mega'\n      },\n      { key: 'rotom', species: 'rotom' },\n      { key: 'rotomheat', species: 'rotom-heat' },\n      { key: 'rotomwash', species: 'rotom-wash' },\n      {\n        key: 'rotomfrost',\n        species: 'rotom-frost'\n      },\n      { key: 'rotomfan', species: 'rotom-fan' },\n      { key: 'rotommow', species: 'rotom-mow' },\n      { key: 'uxie', species: 'uxie' },\n      { key: 'mesprit', species: 'mesprit' },\n      { key: 'azelf', species: 'azelf' },\n      { key: 'dialga', species: 'dialga' },\n      {\n        key: 'dialgaorigin',\n        species: 'dialga-origin'\n      },\n      { key: 'palkia', species: 'palkia' },\n      {\n        key: 'palkiaorigin',\n        species: 'palkia-origin'\n      },\n      { key: 'heatran', species: 'heatran' },\n      { key: 'heatranmega', species: 'heatran-mega' },\n      { key: 'regigigas', species: 'regigigas' },\n      { key: 'giratina', species: 'giratina' },\n      {\n        key: 'giratinaorigin',\n        species: 'giratina-origin'\n      },\n      { key: 'cresselia', species: 'cresselia' },\n      { key: 'phione', species: 'phione' },\n      { key: 'manaphy', species: 'manaphy' },\n      { key: 'darkrai', species: 'darkrai' },\n      { key: 'darkraimega', species: 'darkrai-mega' },\n      { key: 'shaymin', species: 'shaymin' },\n      {\n        key: 'shayminsky',\n        species: 'shaymin-sky'\n      },\n      { key: 'arceus', species: 'arceus' },\n      { key: 'arceusbug', species: 'arceus-bug' },\n      {\n        key: 'arceusdark',\n        species: 'arceus-dark'\n      },\n      {\n        key: 'arceusdragon',\n        species: 'arceus-dragon'\n      },\n      {\n        key: 'arceuselectric',\n        species: 'arceus-electric'\n      },\n      {\n        key: 'arceusfairy',\n        species: 'arceus-fairy'\n      },\n      {\n        key: 'arceusfighting',\n        species: 'arceus-fighting'\n      },\n      {\n        key: 'arceusfire',\n        species: 'arceus-fire'\n      },\n      {\n        key: 'arceusflying',\n        species: 'arceus-flying'\n      },\n      {\n        key: 'arceusghost',\n        species: 'arceus-ghost'\n      },\n      {\n        key: 'arceusgrass',\n        species: 'arceus-grass'\n      },\n      {\n        key: 'arceusground',\n        species: 'arceus-ground'\n      },\n      { key: 'arceusice', species: 'arceus-ice' },\n      {\n        key: 'arceuspoison',\n        species: 'arceus-poison'\n      },\n      {\n        key: 'arceuspsychic',\n        species: 'arceus-psychic'\n      },\n      {\n        key: 'arceusrock',\n        species: 'arceus-rock'\n      },\n      {\n        key: 'arceussteel',\n        species: 'arceus-steel'\n      },\n      {\n        key: 'arceuswater',\n        species: 'arceus-water'\n      },\n      {\n        key: 'arceuslegend',\n        species: 'arceus-legend'\n      },\n      { key: 'victini', species: 'victini' },\n      { key: 'snivy', species: 'snivy' },\n      { key: 'servine', species: 'servine' },\n      { key: 'serperior', species: 'serperior' },\n      { key: 'tepig', species: 'tepig' },\n      { key: 'pignite', species: 'pignite' },\n      { key: 'emboar', species: 'emboar' },\n      {\n        key: 'emboarmega',\n        species: 'emboar-mega'\n      },\n      { key: 'oshawott', species: 'oshawott' },\n      { key: 'dewott', species: 'dewott' },\n      { key: 'samurott', species: 'samurott' },\n      {\n        key: 'samurotthisui',\n        species: 'samurott-hisui'\n      },\n      { key: 'patrat', species: 'patrat' },\n      { key: 'watchog', species: 'watchog' },\n      { key: 'lillipup', species: 'lillipup' },\n      { key: 'herdier', species: 'herdier' },\n      { key: 'stoutland', species: 'stoutland' },\n      { key: 'purrloin', species: 'purrloin' },\n      { key: 'liepard', species: 'liepard' },\n      { key: 'pansage', species: 'pansage' },\n      { key: 'simisage', species: 'simisage' },\n      { key: 'pansear', species: 'pansear' },\n      { key: 'simisear', species: 'simisear' },\n      { key: 'panpour', species: 'panpour' },\n      { key: 'simipour', species: 'simipour' },\n      { key: 'munna', species: 'munna' },\n      { key: 'musharna', species: 'musharna' },\n      { key: 'pidove', species: 'pidove' },\n      { key: 'tranquill', species: 'tranquill' },\n      { key: 'unfezant', species: 'unfezant' },\n      { key: 'blitzle', species: 'blitzle' },\n      { key: 'zebstrika', species: 'zebstrika' },\n      { key: 'roggenrola', species: 'roggenrola' },\n      { key: 'boldore', species: 'boldore' },\n      { key: 'gigalith', species: 'gigalith' },\n      { key: 'woobat', species: 'woobat' },\n      { key: 'swoobat', species: 'swoobat' },\n      { key: 'drilbur', species: 'drilbur' },\n      { key: 'excadrill', species: 'excadrill' },\n      {\n        key: 'excadrillmega',\n        species: 'excadrill-mega'\n      },\n      { key: 'audino', species: 'audino' },\n      {\n        key: 'audinomega',\n        species: 'audino-mega'\n      },\n      { key: 'timburr', species: 'timburr' },\n      { key: 'gurdurr', species: 'gurdurr' },\n      { key: 'conkeldurr', species: 'conkeldurr' },\n      { key: 'tympole', species: 'tympole' },\n      { key: 'palpitoad', species: 'palpitoad' },\n      { key: 'seismitoad', species: 'seismitoad' },\n      { key: 'throh', species: 'throh' },\n      { key: 'sawk', species: 'sawk' },\n      { key: 'sewaddle', species: 'sewaddle' },\n      { key: 'swadloon', species: 'swadloon' },\n      { key: 'leavanny', species: 'leavanny' },\n      { key: 'venipede', species: 'venipede' },\n      { key: 'whirlipede', species: 'whirlipede' },\n      { key: 'scolipede', species: 'scolipede' },\n      {\n        key: 'scolipedemega',\n        species: 'scolipede-mega'\n      },\n      { key: 'cottonee', species: 'cottonee' },\n      { key: 'whimsicott', species: 'whimsicott' },\n      { key: 'petilil', species: 'petilil' },\n      { key: 'lilligant', species: 'lilligant' },\n      {\n        key: 'lilliganthisui',\n        species: 'lilligant-hisui'\n      },\n      { key: 'basculin', species: 'basculin' },\n      {\n        key: 'basculinbluestriped',\n        species: 'basculin-blue-striped'\n      },\n      {\n        key: 'basculinwhitestriped',\n        species: 'basculin-white-striped'\n      },\n      { key: 'sandile', species: 'sandile' },\n      { key: 'krokorok', species: 'krokorok' },\n      { key: 'krookodile', species: 'krookodile' },\n      { key: 'darumaka', species: 'darumaka' },\n      {\n        key: 'darumakagalar',\n        species: 'darumaka-galar'\n      },\n      { key: 'darmanitan', species: 'darmanitan' },\n      {\n        key: 'darmanitangalar',\n        species: 'darmanitan-galar'\n      },\n      {\n        key: 'darmanitanzen',\n        species: 'darmanitan-zen'\n      },\n      {\n        key: 'darmanitangalarzen',\n        species: 'darmanitan-galarzen'\n      },\n      { key: 'maractus', species: 'maractus' },\n      { key: 'dwebble', species: 'dwebble' },\n      { key: 'crustle', species: 'crustle' },\n      { key: 'scraggy', species: 'scraggy' },\n      { key: 'scrafty', species: 'scrafty' },\n      {\n        key: 'scraftymega',\n        species: 'scrafty-mega'\n      },\n      { key: 'sigilyph', species: 'sigilyph' },\n      { key: 'yamask', species: 'yamask' },\n      {\n        key: 'yamaskgalar',\n        species: 'yamask-galar'\n      },\n      { key: 'cofagrigus', species: 'cofagrigus' },\n      { key: 'tirtouga', species: 'tirtouga' },\n      { key: 'carracosta', species: 'carracosta' },\n      { key: 'archen', species: 'archen' },\n      { key: 'archeops', species: 'archeops' },\n      { key: 'trubbish', species: 'trubbish' },\n      { key: 'garbodor', species: 'garbodor' },\n      {\n        key: 'garbodorgmax',\n        species: 'garbodor-gmax'\n      },\n      { key: 'zorua', species: 'zorua' },\n      {\n        key: 'zoruahisui',\n        species: 'zorua-hisui'\n      },\n      { key: 'zoroark', species: 'zoroark' },\n      {\n        key: 'zoroarkhisui',\n        species: 'zoroark-hisui'\n      },\n      { key: 'minccino', species: 'minccino' },\n      { key: 'cinccino', species: 'cinccino' },\n      { key: 'gothita', species: 'gothita' },\n      { key: 'gothorita', species: 'gothorita' },\n      { key: 'gothitelle', species: 'gothitelle' },\n      { key: 'solosis', species: 'solosis' },\n      { key: 'duosion', species: 'duosion' },\n      { key: 'reuniclus', species: 'reuniclus' },\n      { key: 'ducklett', species: 'ducklett' },\n      { key: 'swanna', species: 'swanna' },\n      { key: 'vanillite', species: 'vanillite' },\n      { key: 'vanillish', species: 'vanillish' },\n      { key: 'vanilluxe', species: 'vanilluxe' },\n      { key: 'deerling', species: 'deerling' },\n      { key: 'sawsbuck', species: 'sawsbuck' },\n      { key: 'emolga', species: 'emolga' },\n      { key: 'karrablast', species: 'karrablast' },\n      { key: 'escavalier', species: 'escavalier' },\n      { key: 'foongus', species: 'foongus' },\n      { key: 'amoonguss', species: 'amoonguss' },\n      { key: 'frillish', species: 'frillish' },\n      {\n        key: 'frillishfemale',\n        species: 'frillish-female'\n      },\n      { key: 'jellicent', species: 'jellicent' },\n      {\n        key: 'jellicentfemale',\n        species: 'jellicent-female'\n      },\n      { key: 'alomomola', species: 'alomomola' },\n      { key: 'joltik', species: 'joltik' },\n      { key: 'galvantula', species: 'galvantula' },\n      { key: 'ferroseed', species: 'ferroseed' },\n      { key: 'ferrothorn', species: 'ferrothorn' },\n      { key: 'klink', species: 'klink' },\n      { key: 'klang', species: 'klang' },\n      { key: 'klinklang', species: 'klinklang' },\n      { key: 'tynamo', species: 'tynamo' },\n      { key: 'eelektrik', species: 'eelektrik' },\n      { key: 'eelektross', species: 'eelektross' },\n      {\n        key: 'eelektrossmega',\n        species: 'eelektross-mega'\n      },\n      { key: 'elgyem', species: 'elgyem' },\n      { key: 'beheeyem', species: 'beheeyem' },\n      { key: 'litwick', species: 'litwick' },\n      { key: 'lampent', species: 'lampent' },\n      { key: 'chandelure', species: 'chandelure' },\n      {\n        key: 'chandeluremega',\n        species: 'chandelure-mega'\n      },\n      { key: 'axew', species: 'axew' },\n      { key: 'fraxure', species: 'fraxure' },\n      { key: 'haxorus', species: 'haxorus' },\n      { key: 'cubchoo', species: 'cubchoo' },\n      { key: 'beartic', species: 'beartic' },\n      { key: 'cryogonal', species: 'cryogonal' },\n      { key: 'shelmet', species: 'shelmet' },\n      { key: 'accelgor', species: 'accelgor' },\n      { key: 'stunfisk', species: 'stunfisk' },\n      {\n        key: 'stunfiskgalar',\n        species: 'stunfisk-galar'\n      },\n      { key: 'mienfoo', species: 'mienfoo' },\n      { key: 'mienshao', species: 'mienshao' },\n      { key: 'druddigon', species: 'druddigon' },\n      { key: 'golett', species: 'golett' },\n      { key: 'golurk', species: 'golurk' },\n      { key: 'golurkmega', species: 'golurk-mega' },\n      { key: 'pawniard', species: 'pawniard' },\n      { key: 'bisharp', species: 'bisharp' },\n      { key: 'bouffalant', species: 'bouffalant' },\n      { key: 'rufflet', species: 'rufflet' },\n      { key: 'braviary', species: 'braviary' },\n      {\n        key: 'braviaryhisui',\n        species: 'braviary-hisui'\n      },\n      { key: 'vullaby', species: 'vullaby' },\n      { key: 'mandibuzz', species: 'mandibuzz' },\n      { key: 'heatmor', species: 'heatmor' },\n      { key: 'durant', species: 'durant' },\n      { key: 'deino', species: 'deino' },\n      { key: 'zweilous', species: 'zweilous' },\n      { key: 'hydreigon', species: 'hydreigon' },\n      { key: 'larvesta', species: 'larvesta' },\n      { key: 'volcarona', species: 'volcarona' },\n      { key: 'cobalion', species: 'cobalion' },\n      { key: 'terrakion', species: 'terrakion' },\n      { key: 'virizion', species: 'virizion' },\n      { key: 'tornadus', species: 'tornadus' },\n      {\n        key: 'tornadustherian',\n        species: 'tornadus-therian'\n      },\n      { key: 'thundurus', species: 'thundurus' },\n      {\n        key: 'thundurustherian',\n        species: 'thundurus-therian'\n      },\n      { key: 'reshiram', species: 'reshiram' },\n      { key: 'zekrom', species: 'zekrom' },\n      { key: 'landorus', species: 'landorus' },\n      {\n        key: 'landorustherian',\n        species: 'landorus-therian'\n      },\n      { key: 'kyurem', species: 'kyurem' },\n      {\n        key: 'kyuremblack',\n        species: 'kyurem-black'\n      },\n      {\n        key: 'kyuremwhite',\n        species: 'kyurem-white'\n      },\n      { key: 'keldeo', species: 'keldeo' },\n      {\n        key: 'keldeoresolute',\n        species: 'keldeo-resolute'\n      },\n      { key: 'meloetta', species: 'meloetta' },\n      {\n        key: 'meloettapirouette',\n        species: 'meloetta-pirouette'\n      },\n      { key: 'genesect', species: 'genesect' },\n      {\n        key: 'genesectdouse',\n        species: 'genesect-douse'\n      },\n      {\n        key: 'genesectshock',\n        species: 'genesect-shock'\n      },\n      {\n        key: 'genesectburn',\n        species: 'genesect-burn'\n      },\n      {\n        key: 'genesectchill',\n        species: 'genesect-chill'\n      },\n      { key: 'chespin', species: 'chespin' },\n      { key: 'quilladin', species: 'quilladin' },\n      { key: 'chesnaught', species: 'chesnaught' },\n      {\n        key: 'chesnaughtmega',\n        species: 'chesnaught-mega'\n      },\n      { key: 'fennekin', species: 'fennekin' },\n      { key: 'braixen', species: 'braixen' },\n      { key: 'delphox', species: 'delphox' },\n      {\n        key: 'delphoxmega',\n        species: 'delphox-mega'\n      },\n      { key: 'froakie', species: 'froakie' },\n      { key: 'frogadier', species: 'frogadier' },\n      { key: 'greninja', species: 'greninja' },\n      {\n        key: 'greninjaash',\n        species: 'greninja-ash'\n      },\n      {\n        key: 'greninjamega',\n        species: 'greninja-mega'\n      },\n      { key: 'bunnelby', species: 'bunnelby' },\n      { key: 'diggersby', species: 'diggersby' },\n      { key: 'fletchling', species: 'fletchling' },\n      {\n        key: 'fletchinder',\n        species: 'fletchinder'\n      },\n      { key: 'talonflame', species: 'talonflame' },\n      { key: 'scatterbug', species: 'scatterbug' },\n      { key: 'spewpa', species: 'spewpa' },\n      { key: 'vivillon', species: 'vivillon' },\n      {\n        key: 'vivillonfancy',\n        species: 'vivillon-fancy'\n      },\n      {\n        key: 'vivillonpokeball',\n        species: 'vivillon-pokeball'\n      },\n      { key: 'litleo', species: 'litleo' },\n      { key: 'pyroar', species: 'pyroar' },\n      {\n        key: 'pyroarmega',\n        species: 'pyroar-mega'\n      },\n      { key: 'flabebe', species: 'flabebe' },\n      { key: 'floette', species: 'floette' },\n      {\n        key: 'floetteeternal',\n        species: 'floette-eternal'\n      },\n      {\n        key: 'floettemega',\n        species: 'floette-mega'\n      },\n      { key: 'florges', species: 'florges' },\n      { key: 'skiddo', species: 'skiddo' },\n      { key: 'gogoat', species: 'gogoat' },\n      { key: 'pancham', species: 'pancham' },\n      { key: 'pangoro', species: 'pangoro' },\n      { key: 'furfrou', species: 'furfrou' },\n      { key: 'espurr', species: 'espurr' },\n      { key: 'meowstic', species: 'meowstic' },\n      { key: 'meowsticf', species: 'meowstic-f' },\n      { key: 'meowsticmega', species: 'meowstic-mega' },\n      { key: 'honedge', species: 'honedge' },\n      { key: 'doublade', species: 'doublade' },\n      { key: 'aegislash', species: 'aegislash' },\n      {\n        key: 'aegislashblade',\n        species: 'aegislash-blade'\n      },\n      { key: 'spritzee', species: 'spritzee' },\n      { key: 'aromatisse', species: 'aromatisse' },\n      { key: 'swirlix', species: 'swirlix' },\n      { key: 'slurpuff', species: 'slurpuff' },\n      { key: 'inkay', species: 'inkay' },\n      { key: 'malamar', species: 'malamar' },\n      {\n        key: 'malamarmega',\n        species: 'malamar-mega'\n      },\n      { key: 'binacle', species: 'binacle' },\n      { key: 'barbaracle', species: 'barbaracle' },\n      {\n        key: 'barbaraclemega',\n        species: 'barbaracle-mega'\n      },\n      { key: 'skrelp', species: 'skrelp' },\n      { key: 'dragalge', species: 'dragalge' },\n      {\n        key: 'dragalgemega',\n        species: 'dragalge-mega'\n      },\n      { key: 'clauncher', species: 'clauncher' },\n      { key: 'clawitzer', species: 'clawitzer' },\n      { key: 'helioptile', species: 'helioptile' },\n      { key: 'heliolisk', species: 'heliolisk' },\n      { key: 'tyrunt', species: 'tyrunt' },\n      { key: 'tyrantrum', species: 'tyrantrum' },\n      { key: 'amaura', species: 'amaura' },\n      { key: 'aurorus', species: 'aurorus' },\n      { key: 'sylveon', species: 'sylveon' },\n      { key: 'hawlucha', species: 'hawlucha' },\n      {\n        key: 'hawluchamega',\n        species: 'hawlucha-mega'\n      },\n      { key: 'dedenne', species: 'dedenne' },\n      { key: 'carbink', species: 'carbink' },\n      { key: 'goomy', species: 'goomy' },\n      { key: 'sliggoo', species: 'sliggoo' },\n      {\n        key: 'sliggoohisui',\n        species: 'sliggoo-hisui'\n      },\n      { key: 'goodra', species: 'goodra' },\n      {\n        key: 'goodrahisui',\n        species: 'goodra-hisui'\n      },\n      { key: 'klefki', species: 'klefki' },\n      { key: 'phantump', species: 'phantump' },\n      { key: 'trevenant', species: 'trevenant' },\n      { key: 'pumpkaboo', species: 'pumpkaboo' },\n      {\n        key: 'pumpkaboosmall',\n        species: 'pumpkaboo-small'\n      },\n      {\n        key: 'pumpkaboolarge',\n        species: 'pumpkaboo-large'\n      },\n      {\n        key: 'pumpkaboosuper',\n        species: 'pumpkaboo-super'\n      },\n      { key: 'gourgeist', species: 'gourgeist' },\n      {\n        key: 'gourgeistsmall',\n        species: 'gourgeist-small'\n      },\n      {\n        key: 'gourgeistlarge',\n        species: 'gourgeist-large'\n      },\n      {\n        key: 'gourgeistsuper',\n        species: 'gourgeist-super'\n      },\n      { key: 'bergmite', species: 'bergmite' },\n      { key: 'avalugg', species: 'avalugg' },\n      {\n        key: 'avalugghisui',\n        species: 'avalugg-hisui'\n      },\n      { key: 'noibat', species: 'noibat' },\n      { key: 'noivern', species: 'noivern' },\n      { key: 'xerneas', species: 'xerneas' },\n      {\n        key: 'xerneasneutral',\n        species: 'xerneas-neutral'\n      },\n      { key: 'yveltal', species: 'yveltal' },\n      { key: 'zygarde', species: 'zygarde' },\n      { key: 'zygarde10', species: 'zygarde-10' },\n      {\n        key: 'zygardecomplete',\n        species: 'zygarde-complete'\n      },\n      {\n        key: 'zygardecompletemega',\n        species: 'zygarde-complete-mega'\n      },\n      { key: 'diancie', species: 'diancie' },\n      {\n        key: 'dianciemega',\n        species: 'diancie-mega'\n      },\n      { key: 'hoopa', species: 'hoopa' },\n      {\n        key: 'hoopaunbound',\n        species: 'hoopa-unbound'\n      },\n      { key: 'volcanion', species: 'volcanion' },\n      { key: 'rowlet', species: 'rowlet' },\n      { key: 'dartrix', species: 'dartrix' },\n      { key: 'decidueye', species: 'decidueye' },\n      {\n        key: 'decidueyehisui',\n        species: 'decidueye-hisui'\n      },\n      { key: 'litten', species: 'litten' },\n      { key: 'torracat', species: 'torracat' },\n      { key: 'incineroar', species: 'incineroar' },\n      { key: 'popplio', species: 'popplio' },\n      { key: 'brionne', species: 'brionne' },\n      { key: 'primarina', species: 'primarina' },\n      { key: 'pikipek', species: 'pikipek' },\n      { key: 'trumbeak', species: 'trumbeak' },\n      { key: 'toucannon', species: 'toucannon' },\n      { key: 'yungoos', species: 'yungoos' },\n      { key: 'gumshoos', species: 'gumshoos' },\n      {\n        key: 'gumshoostotem',\n        species: 'gumshoos-totem'\n      },\n      { key: 'grubbin', species: 'grubbin' },\n      { key: 'charjabug', species: 'charjabug' },\n      { key: 'vikavolt', species: 'vikavolt' },\n      {\n        key: 'vikavolttotem',\n        species: 'vikavolt-totem'\n      },\n      { key: 'crabrawler', species: 'crabrawler' },\n      {\n        key: 'crabominable',\n        species: 'crabominable'\n      },\n      {\n        key: 'crabominablemega',\n        species: 'crabominable-mega'\n      },\n      { key: 'oricorio', species: 'oricorio' },\n      {\n        key: 'oricoriopompom',\n        species: 'oricorio-pompom'\n      },\n      {\n        key: 'oricoriopau',\n        species: \"oricorio-pa'u\"\n      },\n      {\n        key: 'oricoriosensu',\n        species: 'oricorio-sensu'\n      },\n      { key: 'cutiefly', species: 'cutiefly' },\n      { key: 'ribombee', species: 'ribombee' },\n      {\n        key: 'ribombeetotem',\n        species: 'ribombee-totem'\n      },\n      { key: 'rockruff', species: 'rockruff' },\n      { key: 'lycanroc', species: 'lycanroc' },\n      {\n        key: 'lycanrocmidnight',\n        species: 'lycanroc-midnight'\n      },\n      {\n        key: 'lycanrocdusk',\n        species: 'lycanroc-dusk'\n      },\n      { key: 'wishiwashi', species: 'wishiwashi' },\n      {\n        key: 'wishiwashischool',\n        species: 'wishiwashi-school'\n      },\n      { key: 'mareanie', species: 'mareanie' },\n      { key: 'toxapex', species: 'toxapex' },\n      { key: 'mudbray', species: 'mudbray' },\n      { key: 'mudsdale', species: 'mudsdale' },\n      { key: 'dewpider', species: 'dewpider' },\n      { key: 'araquanid', species: 'araquanid' },\n      {\n        key: 'araquanidtotem',\n        species: 'araquanid-totem'\n      },\n      { key: 'fomantis', species: 'fomantis' },\n      { key: 'lurantis', species: 'lurantis' },\n      {\n        key: 'lurantistotem',\n        species: 'lurantis-totem'\n      },\n      { key: 'morelull', species: 'morelull' },\n      { key: 'shiinotic', species: 'shiinotic' },\n      { key: 'salandit', species: 'salandit' },\n      { key: 'salazzle', species: 'salazzle' },\n      {\n        key: 'salazzletotem',\n        species: 'salazzle-totem'\n      },\n      { key: 'stufful', species: 'stufful' },\n      { key: 'bewear', species: 'bewear' },\n      { key: 'bounsweet', species: 'bounsweet' },\n      { key: 'steenee', species: 'steenee' },\n      { key: 'tsareena', species: 'tsareena' },\n      { key: 'comfey', species: 'comfey' },\n      { key: 'oranguru', species: 'oranguru' },\n      { key: 'passimian', species: 'passimian' },\n      { key: 'wimpod', species: 'wimpod' },\n      { key: 'golisopod', species: 'golisopod' },\n      { key: 'golisopodmega', species: 'golisopod-mega' },\n      { key: 'sandygast', species: 'sandygast' },\n      { key: 'palossand', species: 'palossand' },\n      { key: 'pyukumuku', species: 'pyukumuku' },\n      { key: 'typenull', species: 'Type: Null' },\n      { key: 'silvally', species: 'silvally' },\n      {\n        key: 'silvallybug',\n        species: 'silvally-bug'\n      },\n      {\n        key: 'silvallydark',\n        species: 'silvally-dark'\n      },\n      {\n        key: 'silvallydragon',\n        species: 'silvally-dragon'\n      },\n      {\n        key: 'silvallyelectric',\n        species: 'silvally-electric'\n      },\n      {\n        key: 'silvallyfairy',\n        species: 'silvally-fairy'\n      },\n      {\n        key: 'silvallyfighting',\n        species: 'silvally-fighting'\n      },\n      {\n        key: 'silvallyfire',\n        species: 'silvally-fire'\n      },\n      {\n        key: 'silvallyflying',\n        species: 'silvally-flying'\n      },\n      {\n        key: 'silvallyghost',\n        species: 'silvally-ghost'\n      },\n      {\n        key: 'silvallygrass',\n        species: 'silvally-grass'\n      },\n      {\n        key: 'silvallyground',\n        species: 'silvally-ground'\n      },\n      {\n        key: 'silvallyice',\n        species: 'silvally-ice'\n      },\n      {\n        key: 'silvallypoison',\n        species: 'silvally-poison'\n      },\n      {\n        key: 'silvallypsychic',\n        species: 'silvally-psychic'\n      },\n      {\n        key: 'silvallyrock',\n        species: 'silvally-rock'\n      },\n      {\n        key: 'silvallysteel',\n        species: 'silvally-steel'\n      },\n      {\n        key: 'silvallywater',\n        species: 'silvally-water'\n      },\n      { key: 'minior', species: 'minior' },\n      {\n        key: 'miniormeteor',\n        species: 'minior-meteor'\n      },\n      { key: 'komala', species: 'komala' },\n      { key: 'turtonator', species: 'turtonator' },\n      { key: 'togedemaru', species: 'togedemaru' },\n      {\n        key: 'togedemarutotem',\n        species: 'togedemaru-totem'\n      },\n      { key: 'mimikyu', species: 'mimikyu' },\n      {\n        key: 'mimikyubusted',\n        species: 'mimikyu-busted'\n      },\n      {\n        key: 'mimikyutotem',\n        species: 'mimikyu-totem'\n      },\n      {\n        key: 'mimikyubustedtotem',\n        species: 'mimikyu-busted-totem'\n      },\n      { key: 'bruxish', species: 'bruxish' },\n      { key: 'drampa', species: 'drampa' },\n      {\n        key: 'drampamega',\n        species: 'drampa-mega'\n      },\n      { key: 'dhelmise', species: 'dhelmise' },\n      { key: 'jangmoo', species: 'jangmo-o' },\n      { key: 'hakamoo', species: 'hakamo-o' },\n      { key: 'kommoo', species: 'kommo-o' },\n      {\n        key: 'kommoototem',\n        species: 'kommo-o-totem'\n      },\n      { key: 'tapukoko', species: 'Tapu Koko' },\n      { key: 'tapulele', species: 'Tapu Lele' },\n      { key: 'tapubulu', species: 'Tapu Bulu' },\n      { key: 'tapufini', species: 'Tapu Fini' },\n      { key: 'cosmog', species: 'cosmog' },\n      { key: 'cosmoem', species: 'cosmoem' },\n      { key: 'solgaleo', species: 'solgaleo' },\n      { key: 'lunala', species: 'lunala' },\n      { key: 'nihilego', species: 'nihilego' },\n      { key: 'buzzwole', species: 'buzzwole' },\n      { key: 'pheromosa', species: 'pheromosa' },\n      { key: 'xurkitree', species: 'xurkitree' },\n      { key: 'celesteela', species: 'celesteela' },\n      { key: 'kartana', species: 'kartana' },\n      { key: 'guzzlord', species: 'guzzlord' },\n      { key: 'necrozma', species: 'necrozma' },\n      {\n        key: 'necrozmaduskmane',\n        species: 'necrozma-duskmane'\n      },\n      {\n        key: 'necrozmadawnwings',\n        species: 'necrozma-dawnwings'\n      },\n      {\n        key: 'necrozmaultra',\n        species: 'necrozma-ultra'\n      },\n      { key: 'magearna', species: 'magearna' },\n      { key: 'magearnamega', species: 'magearna-mega' },\n      {\n        key: 'magearnaoriginal',\n        species: 'magearna-original'\n      },\n      {\n        key: 'magearnaoriginalmega',\n        species: 'magearna-original-mega'\n      },\n      { key: 'marshadow', species: 'marshadow' },\n      { key: 'poipole', species: 'poipole' },\n      { key: 'naganadel', species: 'naganadel' },\n      { key: 'stakataka', species: 'stakataka' },\n      {\n        key: 'blacephalon',\n        species: 'blacephalon'\n      },\n      { key: 'zeraora', species: 'zeraora' },\n      { key: 'zeraoramega', species: 'zeraora-mega' },\n      { key: 'meltan', species: 'meltan' },\n      { key: 'melmetal', species: 'melmetal' },\n      {\n        key: 'melmetalgmax',\n        species: 'melmetal-gmax'\n      },\n      { key: 'grookey', species: 'grookey' },\n      { key: 'thwackey', species: 'thwackey' },\n      { key: 'rillaboom', species: 'rillaboom' },\n      {\n        key: 'rillaboomgmax',\n        species: 'rillaboom-gmax'\n      },\n      { key: 'scorbunny', species: 'scorbunny' },\n      { key: 'raboot', species: 'raboot' },\n      { key: 'cinderace', species: 'cinderace' },\n      {\n        key: 'cinderacegmax',\n        species: 'cinderace-gmax'\n      },\n      { key: 'sobble', species: 'sobble' },\n      { key: 'drizzile', species: 'drizzile' },\n      { key: 'inteleon', species: 'inteleon' },\n      {\n        key: 'inteleongmax',\n        species: 'inteleon-gmax'\n      },\n      { key: 'skwovet', species: 'skwovet' },\n      { key: 'greedent', species: 'greedent' },\n      { key: 'rookidee', species: 'rookidee' },\n      {\n        key: 'corvisquire',\n        species: 'corvisquire'\n      },\n      {\n        key: 'corviknight',\n        species: 'corviknight'\n      },\n      {\n        key: 'corviknightgmax',\n        species: 'corviknight-gmax'\n      },\n      { key: 'blipbug', species: 'blipbug' },\n      { key: 'dottler', species: 'dottler' },\n      { key: 'orbeetle', species: 'orbeetle' },\n      {\n        key: 'orbeetlegmax',\n        species: 'orbeetle-gmax'\n      },\n      { key: 'nickit', species: 'nickit' },\n      { key: 'thievul', species: 'thievul' },\n      { key: 'gossifleur', species: 'gossifleur' },\n      { key: 'eldegoss', species: 'eldegoss' },\n      { key: 'wooloo', species: 'wooloo' },\n      { key: 'dubwool', species: 'dubwool' },\n      { key: 'chewtle', species: 'chewtle' },\n      { key: 'drednaw', species: 'drednaw' },\n      {\n        key: 'drednawgmax',\n        species: 'drednaw-gmax'\n      },\n      { key: 'yamper', species: 'yamper' },\n      { key: 'boltund', species: 'boltund' },\n      { key: 'rolycoly', species: 'rolycoly' },\n      { key: 'carkol', species: 'carkol' },\n      { key: 'coalossal', species: 'coalossal' },\n      {\n        key: 'coalossalgmax',\n        species: 'coalossal-gmax'\n      },\n      { key: 'applin', species: 'applin' },\n      { key: 'flapple', species: 'flapple' },\n      {\n        key: 'flapplegmax',\n        species: 'flapple-gmax'\n      },\n      { key: 'appletun', species: 'appletun' },\n      {\n        key: 'appletungmax',\n        species: 'appletun-gmax'\n      },\n      { key: 'silicobra', species: 'silicobra' },\n      { key: 'sandaconda', species: 'sandaconda' },\n      {\n        key: 'sandacondagmax',\n        species: 'sandaconda-gmax'\n      },\n      { key: 'cramorant', species: 'cramorant' },\n      {\n        key: 'cramorantgulping',\n        species: 'cramorant-gulping'\n      },\n      {\n        key: 'cramorantgorging',\n        species: 'cramorant-gorging'\n      },\n      { key: 'arrokuda', species: 'arrokuda' },\n      {\n        key: 'barraskewda',\n        species: 'barraskewda'\n      },\n      { key: 'toxel', species: 'toxel' },\n      { key: 'toxtricity', species: 'toxtricity' },\n      {\n        key: 'toxtricitylowkey',\n        species: 'toxtricity-lowkey'\n      },\n      {\n        key: 'toxtricitygmax',\n        species: 'toxtricity-gmax'\n      },\n      {\n        key: 'toxtricitylowkeygmax',\n        species: 'toxtricity-lowkey-gmax'\n      },\n      { key: 'sizzlipede', species: 'sizzlipede' },\n      {\n        key: 'centiskorch',\n        species: 'centiskorch'\n      },\n      {\n        key: 'centiskorchgmax',\n        species: 'centiskorch-gmax'\n      },\n      { key: 'clobbopus', species: 'clobbopus' },\n      { key: 'grapploct', species: 'grapploct' },\n      { key: 'sinistea', species: 'sinistea' },\n      {\n        key: 'sinisteaantique',\n        species: 'sinistea-antique'\n      },\n      {\n        key: 'polteageist',\n        species: 'polteageist'\n      },\n      {\n        key: 'polteageistantique',\n        species: 'polteageist-antique'\n      },\n      { key: 'hatenna', species: 'hatenna' },\n      { key: 'hattrem', species: 'hattrem' },\n      { key: 'hatterene', species: 'hatterene' },\n      {\n        key: 'hatterenegmax',\n        species: 'hatterene-gmax'\n      },\n      { key: 'impidimp', species: 'impidimp' },\n      { key: 'morgrem', species: 'morgrem' },\n      { key: 'grimmsnarl', species: 'grimmsnarl' },\n      {\n        key: 'grimmsnarlgmax',\n        species: 'grimmsnarl-gmax'\n      },\n      { key: 'obstagoon', species: 'obstagoon' },\n      { key: 'perrserker', species: 'perrserker' },\n      { key: 'cursola', species: 'cursola' },\n      { key: 'sirfetchd', species: \"sirfetch'd\" },\n      { key: 'mrrime', species: 'Mr. Rime' },\n      { key: 'runerigus', species: 'runerigus' },\n      { key: 'milcery', species: 'milcery' },\n      { key: 'alcremie', species: 'alcremie' },\n      {\n        key: 'alcremiegmax',\n        species: 'alcremie-gmax'\n      },\n      { key: 'falinks', species: 'falinks' },\n      {\n        key: 'falinksmega',\n        species: 'falinks-mega'\n      },\n      { key: 'pincurchin', species: 'pincurchin' },\n      { key: 'snom', species: 'snom' },\n      { key: 'frosmoth', species: 'frosmoth' },\n      {\n        key: 'stonjourner',\n        species: 'stonjourner'\n      },\n      { key: 'eiscue', species: 'eiscue' },\n      {\n        key: 'eiscuenoice',\n        species: 'eiscue-noice'\n      },\n      { key: 'indeedee', species: 'indeedee' },\n      { key: 'indeedeef', species: 'indeedee-f' },\n      { key: 'morpeko', species: 'morpeko' },\n      {\n        key: 'morpekohangry',\n        species: 'morpeko-hangry'\n      },\n      { key: 'cufant', species: 'cufant' },\n      { key: 'copperajah', species: 'copperajah' },\n      {\n        key: 'copperajahgmax',\n        species: 'copperajah-gmax'\n      },\n      { key: 'dracozolt', species: 'dracozolt' },\n      { key: 'arctozolt', species: 'arctozolt' },\n      { key: 'dracovish', species: 'dracovish' },\n      { key: 'arctovish', species: 'arctovish' },\n      { key: 'duraludon', species: 'duraludon' },\n      {\n        key: 'duraludongmax',\n        species: 'duraludon-gmax'\n      },\n      { key: 'dreepy', species: 'dreepy' },\n      { key: 'drakloak', species: 'drakloak' },\n      { key: 'dragapult', species: 'dragapult' },\n      { key: 'zacian', species: 'zacian' },\n      {\n        key: 'zaciancrowned',\n        species: 'zacian-crowned'\n      },\n      { key: 'zamazenta', species: 'zamazenta' },\n      {\n        key: 'zamazentacrowned',\n        species: 'zamazenta-crowned'\n      },\n      { key: 'eternatus', species: 'eternatus' },\n      {\n        key: 'eternatuseternamax',\n        species: 'eternatus-eternamax'\n      },\n      { key: 'kubfu', species: 'kubfu' },\n      { key: 'urshifu', species: 'urshifu' },\n      {\n        key: 'urshifurapidstrike',\n        species: 'urshifu-rapidstrike'\n      },\n      {\n        key: 'urshifugmax',\n        species: 'urshifu-gmax'\n      },\n      {\n        key: 'urshifurapidstrikegmax',\n        species: 'urshifu-rapid-strike-gmax'\n      },\n      { key: 'zarude', species: 'zarude' },\n      {\n        key: 'zarudedada',\n        species: 'zarude-dada'\n      },\n      { key: 'regieleki', species: 'regieleki' },\n      { key: 'regidrago', species: 'regidrago' },\n      { key: 'glastrier', species: 'glastrier' },\n      { key: 'spectrier', species: 'spectrier' },\n      { key: 'calyrex', species: 'calyrex' },\n      {\n        key: 'calyrexice',\n        species: 'calyrex-ice'\n      },\n      {\n        key: 'calyrexshadow',\n        species: 'calyrex-shadow'\n      },\n      { key: 'wyrdeer', species: 'wyrdeer' },\n      { key: 'kleavor', species: 'kleavor' },\n      { key: 'ursaluna', species: 'ursaluna' },\n      {\n        key: 'ursalunabloodmoon',\n        species: 'ursaluna-bloodmoon'\n      },\n      {\n        key: 'basculegion',\n        species: 'basculegion'\n      },\n      {\n        key: 'basculegionf',\n        species: 'basculegion-f'\n      },\n      { key: 'sneasler', species: 'sneasler' },\n      { key: 'overqwil', species: 'overqwil' },\n      { key: 'enamorus', species: 'enamorus' },\n      {\n        key: 'enamorustherian',\n        species: 'enamorus-therian'\n      },\n      { key: 'sprigatito', species: 'sprigatito' },\n      { key: 'floragato', species: 'floragato' },\n      {\n        key: 'meowscarada',\n        species: 'meowscarada'\n      },\n      { key: 'fuecoco', species: 'fuecoco' },\n      { key: 'crocalor', species: 'crocalor' },\n      { key: 'skeledirge', species: 'skeledirge' },\n      { key: 'quaxly', species: 'quaxly' },\n      { key: 'quaxwell', species: 'quaxwell' },\n      { key: 'quaquaval', species: 'quaquaval' },\n      { key: 'lechonk', species: 'lechonk' },\n      { key: 'oinkologne', species: 'oinkologne' },\n      {\n        key: 'oinkolognef',\n        species: 'oinkologne-f'\n      },\n      { key: 'tarountula', species: 'tarountula' },\n      { key: 'spidops', species: 'spidops' },\n      { key: 'nymble', species: 'nymble' },\n      { key: 'lokix', species: 'lokix' },\n      { key: 'pawmi', species: 'pawmi' },\n      { key: 'pawmo', species: 'pawmo' },\n      { key: 'pawmot', species: 'pawmot' },\n      { key: 'tandemaus', species: 'tandemaus' },\n      { key: 'maushold', species: 'maushold' },\n      {\n        key: 'mausholdfour',\n        species: 'maushold-four'\n      },\n      { key: 'fidough', species: 'fidough' },\n      { key: 'dachsbun', species: 'dachsbun' },\n      { key: 'smoliv', species: 'smoliv' },\n      { key: 'dolliv', species: 'dolliv' },\n      { key: 'arboliva', species: 'arboliva' },\n      {\n        key: 'squawkabilly',\n        species: 'squawkabilly'\n      },\n      {\n        key: 'squawkabillyblue',\n        species: 'squawkabilly-blue'\n      },\n      {\n        key: 'squawkabillyyellow',\n        species: 'squawkabilly-yellow'\n      },\n      {\n        key: 'squawkabillywhite',\n        species: 'squawkabilly-white'\n      },\n      { key: 'nacli', species: 'nacli' },\n      { key: 'naclstack', species: 'naclstack' },\n      { key: 'garganacl', species: 'garganacl' },\n      { key: 'charcadet', species: 'charcadet' },\n      { key: 'armarouge', species: 'armarouge' },\n      { key: 'ceruledge', species: 'ceruledge' },\n      { key: 'tadbulb', species: 'tadbulb' },\n      { key: 'bellibolt', species: 'bellibolt' },\n      { key: 'wattrel', species: 'wattrel' },\n      {\n        key: 'kilowattrel',\n        species: 'kilowattrel'\n      },\n      { key: 'maschiff', species: 'maschiff' },\n      { key: 'mabosstiff', species: 'mabosstiff' },\n      { key: 'shroodle', species: 'shroodle' },\n      { key: 'grafaiai', species: 'grafaiai' },\n      { key: 'bramblin', species: 'bramblin' },\n      {\n        key: 'brambleghast',\n        species: 'brambleghast'\n      },\n      { key: 'toedscool', species: 'toedscool' },\n      { key: 'toedscruel', species: 'toedscruel' },\n      { key: 'klawf', species: 'klawf' },\n      { key: 'capsakid', species: 'capsakid' },\n      { key: 'scovillain', species: 'scovillain' },\n      { key: 'scovillainmega', species: 'scovillain-mega' },\n      { key: 'rellor', species: 'rellor' },\n      { key: 'rabsca', species: 'rabsca' },\n      { key: 'flittle', species: 'flittle' },\n      { key: 'espathra', species: 'espathra' },\n      { key: 'tinkatink', species: 'tinkatink' },\n      { key: 'tinkatuff', species: 'tinkatuff' },\n      { key: 'tinkaton', species: 'tinkaton' },\n      { key: 'wiglett', species: 'wiglett' },\n      { key: 'wugtrio', species: 'wugtrio' },\n      { key: 'bombirdier', species: 'bombirdier' },\n      { key: 'finizen', species: 'finizen' },\n      { key: 'palafin', species: 'palafin' },\n      {\n        key: 'palafinhero',\n        species: 'palafin-hero'\n      },\n      { key: 'varoom', species: 'varoom' },\n      { key: 'revavroom', species: 'revavroom' },\n      { key: 'cyclizar', species: 'cyclizar' },\n      { key: 'orthworm', species: 'orthworm' },\n      { key: 'glimmet', species: 'glimmet' },\n      { key: 'glimmora', species: 'glimmora' },\n      { key: 'glimmoramega', species: 'glimmora-mega' },\n      { key: 'greavard', species: 'greavard' },\n      { key: 'houndstone', species: 'houndstone' },\n      { key: 'flamigo', species: 'flamigo' },\n      { key: 'cetoddle', species: 'cetoddle' },\n      { key: 'cetitan', species: 'cetitan' },\n      { key: 'veluza', species: 'veluza' },\n      { key: 'dondozo', species: 'dondozo' },\n      { key: 'tatsugiri', species: 'tatsugiri' },\n      { key: 'tatsugirimega', species: 'tatsugiri-mega' },\n      { key: 'annihilape', species: 'annihilape' },\n      { key: 'clodsire', species: 'clodsire' },\n      { key: 'farigiraf', species: 'farigiraf' },\n      {\n        key: 'dudunsparce',\n        species: 'dudunsparce'\n      },\n      {\n        key: 'dudunsparcethreesegment',\n        species: 'dudunsparce-threesegment'\n      },\n      { key: 'kingambit', species: 'kingambit' },\n      { key: 'greattusk', species: 'Great Tusk' },\n      {\n        key: 'screamtail',\n        species: 'Scream Tail'\n      },\n      {\n        key: 'brutebonnet',\n        species: 'Brute Bonnet'\n      },\n      {\n        key: 'fluttermane',\n        species: 'Flutter Mane'\n      },\n      {\n        key: 'slitherwing',\n        species: 'Slither Wing'\n      },\n      {\n        key: 'sandyshocks',\n        species: 'Sandy Shocks'\n      },\n      {\n        key: 'irontreads',\n        species: 'Iron Treads'\n      },\n      {\n        key: 'ironbundle',\n        species: 'Iron Bundle'\n      },\n      { key: 'ironhands', species: 'Iron Hands' },\n      {\n        key: 'ironjugulis',\n        species: 'Iron Jugulis'\n      },\n      { key: 'ironmoth', species: 'Iron Moth' },\n      {\n        key: 'ironthorns',\n        species: 'Iron Thorns'\n      },\n      { key: 'frigibax', species: 'frigibax' },\n      { key: 'arctibax', species: 'arctibax' },\n      { key: 'baxcalibur', species: 'baxcalibur' },\n      {\n        key: 'baxcaliburmega',\n        species: 'baxcalibur-mega'\n      },\n      { key: 'gimmighoul', species: 'gimmighoul' },\n      {\n        key: 'gimmighoulroaming',\n        species: 'gimmighoul-roaming'\n      },\n      { key: 'gholdengo', species: 'gholdengo' },\n      { key: 'wochien', species: 'Wo-Chien' },\n      { key: 'chienpao', species: 'Chien-Pao' },\n      { key: 'tinglu', species: 'Ting-Lu' },\n      { key: 'chiyu', species: 'Chi-Yu' },\n      {\n        key: 'roaringmoon',\n        species: 'Roaring Moon'\n      },\n      {\n        key: 'ironvaliant',\n        species: 'Iron Valiant'\n      },\n      { key: 'koraidon', species: 'koraidon' },\n      { key: 'miraidon', species: 'miraidon' },\n      {\n        key: 'walkingwake',\n        species: 'Walking Wake'\n      },\n      {\n        key: 'ironleaves',\n        species: 'Iron Leaves'\n      },\n      { key: 'dipplin', species: 'dipplin' },\n      {\n        key: 'poltchageist',\n        species: 'poltchageist'\n      },\n      {\n        key: 'poltchageistartisan',\n        species: 'poltchageist-artisan'\n      },\n      { key: 'sinistcha', species: 'sinistcha' },\n      {\n        key: 'sinistchamasterpiece',\n        species: 'sinistcha-masterpiece'\n      },\n      { key: 'okidogi', species: 'okidogi' },\n      { key: 'munkidori', species: 'munkidori' },\n      {\n        key: 'fezandipiti',\n        species: 'fezandipiti'\n      },\n      { key: 'ogerpon', species: 'ogerpon' },\n      {\n        key: 'ogerponcornerstone',\n        species: 'ogerpon-cornerstone'\n      },\n      {\n        key: 'ogerponcornerstonetera',\n        species: 'ogerpon-cornerstonetera'\n      },\n      {\n        key: 'ogerponhearthflame',\n        species: 'ogerpon-hearthflame'\n      },\n      {\n        key: 'ogerponhearthflametera',\n        species: 'ogerpon-hearthflametera'\n      },\n      {\n        key: 'ogerponwellspring',\n        species: 'ogerpon-wellspring'\n      },\n      {\n        key: 'ogerponwellspringtera',\n        species: 'ogerpon-wellspringtera'\n      },\n      {\n        key: 'ogerpontealtera',\n        species: 'ogerpon-tealtera'\n      },\n      { key: 'archaludon', species: 'archaludon' },\n      { key: 'hydrapple', species: 'hydrapple' },\n      {\n        key: 'gougingfire',\n        species: 'Gouging Fire'\n      },\n      {\n        key: 'ragingbolt',\n        species: 'Raging Bolt'\n      },\n      {\n        key: 'ironboulder',\n        species: 'Iron Boulder'\n      },\n      { key: 'ironcrown', species: 'Iron Crown' },\n      { key: 'terapagos', species: 'terapagos' },\n      {\n        key: 'terapagosterastal',\n        species: 'terapagos-terastal'\n      },\n      {\n        key: 'terapagosstellar',\n        species: 'terapagos-stellar'\n      },\n      {\n        key: 'pecharunt',\n        species: 'pecharunt'\n      }\n    ]);\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/pokemon/getFuzzyPokemon.test.ts",
    "content": "import { getFuzzyPokemonSpecies } from '#test-utils/queries/pokemon';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getFuzzyPokemon', () => {\n  describe('Species only requests', () => {\n    test('GIVEN a valid species THEN returns Pokémon', async () => {\n      const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n        query: getFuzzyPokemonSpecies,\n        variables: { pokemon: 'dragonite' }\n      });\n\n      expect(data.getFuzzyPokemon).toEqual([{ species: 'dragonite' }]);\n    });\n\n    describe('GIVEN a Pokémon with a forme prefix and a space', () => {\n      test('GIVEN a mega-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'mega salamence' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'salamence-mega' }]);\n      });\n\n      test('GIVEN a gigantamax-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'gigantamax pikachu' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'pikachu-gmax' }]);\n      });\n\n      test('GIVEN a gmax-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'gmax meowth' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'meowth-gmax' }]);\n      });\n\n      test('GIVEN a alola-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'alola marowak' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'marowak-alola' }]);\n      });\n\n      test('GIVEN a alolan-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'alolan vulpix' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'vulpix-alola' }]);\n      });\n\n      test('GIVEN a galar-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'galar ponyta' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'ponyta-galar' }]);\n      });\n\n      test('GIVEN a galarian-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'galarian moltres' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'moltres-galar' }]);\n      });\n    });\n\n    describe('GIVEN a Pokémon with a forme prefix WITHOUT a space', () => {\n      test('GIVEN a mega-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'megabeedirll' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'beedrill-mega' }]);\n      });\n\n      test('GIVEN a gigantamax-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'gigantamaxvenusaur' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'venusaur-gmax' }]);\n      });\n\n      test('GIVEN a gmax-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'gmaxlapras' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'lapras-gmax' }]);\n      });\n\n      test('GIVEN a alola-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'alolaexeggutor' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'exeggutor-alola' }]);\n      });\n\n      test('GIVEN a alolan-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'alolangrimer' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'grimer-alola' }]);\n      });\n\n      test('GIVEN a galar-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'galardarumaka' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'darumaka-galar' }]);\n      });\n\n      test('GIVEN a galarian-prefixed query THEN returns Pokémon', async () => {\n        const { data } = await executeGraphQL<'getFuzzyPokemon'>({\n          query: getFuzzyPokemonSpecies,\n          variables: { pokemon: 'galarianzigzagoon' }\n        });\n\n        expect(data.getFuzzyPokemon).toEqual([{ species: 'zigzagoon-galar' }]);\n      });\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/pokemon/getPokemon.test.ts",
    "content": "import { getPokemonByNationalDexNumber, getPokemonSpecies, getPokemonSpeciesWithSprites, getPokemonWithFullData } from '#test-utils/queries/pokemon';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getPokemon', () => {\n  describe('Species only requests', () => {\n    test('GIVEN a valid species THEN returns Pokémon', async () => {\n      const { data } = await executeGraphQL<'getPokemon'>({\n        query: getPokemonSpecies,\n        variables: { pokemon: 'dragonite' }\n      });\n\n      expect(data.getPokemon.species).toEqual('dragonite');\n    });\n  });\n\n  describe('Sprite only requests', () => {\n    test('GIVEN CharizardMegaX THEN returns Species and Sprite', async () => {\n      const { data } = await executeGraphQL<'getPokemon'>({\n        query: getPokemonSpeciesWithSprites,\n        variables: { pokemon: 'charizardmegax' }\n      });\n\n      expect(data.getPokemon).toEqual({\n        species: 'charizard-mega-x',\n        sprite: 'https://play.pokemonshowdown.com/sprites/ani/charizard-megax.gif',\n        backSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/charizard-megax.gif',\n        shinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/charizard-megax.gif',\n        shinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/charizard-megax.gif'\n      });\n    });\n\n    test('GIVEN CharizardMegaY THEN returns Species and Sprite', async () => {\n      const { data } = await executeGraphQL<'getPokemon'>({\n        query: getPokemonSpeciesWithSprites,\n        variables: { pokemon: 'charizardmegay' }\n      });\n\n      expect(data.getPokemon).toEqual({\n        species: 'charizard-mega-y',\n        sprite: 'https://play.pokemonshowdown.com/sprites/ani/charizard-megay.gif',\n        backSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/charizard-megay.gif',\n        shinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/charizard-megay.gif',\n        shinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/charizard-megay.gif'\n      });\n    });\n\n    test(\"GIVEN Farfetch'd THEN returns Species and Sprite\", async () => {\n      const { data } = await executeGraphQL<'getPokemon'>({\n        query: getPokemonSpeciesWithSprites,\n        variables: { pokemon: 'farfetchd' }\n      });\n\n      expect(data.getPokemon).toEqual({\n        species: \"farfetch'd\",\n        sprite: 'https://play.pokemonshowdown.com/sprites/ani/farfetchd.gif',\n        backSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/farfetchd.gif',\n        shinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/farfetchd.gif',\n        shinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/farfetchd.gif'\n      });\n    });\n\n    test(\"GIVEN Sirfetch'd THEN returns Species and Sprite\", async () => {\n      const { data } = await executeGraphQL<'getPokemon'>({\n        query: getPokemonSpeciesWithSprites,\n        variables: { pokemon: 'sirfetchd' }\n      });\n\n      expect(data.getPokemon).toEqual({\n        species: \"sirfetch'd\",\n        sprite: 'https://play.pokemonshowdown.com/sprites/ani/sirfetchd.gif',\n        backSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/sirfetchd.gif',\n        shinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/sirfetchd.gif',\n        shinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/sirfetchd.gif'\n      });\n    });\n  });\n\n  describe('Species only requests By National Dex Number', () => {\n    test('GIVEN National Dex Number 1 THEN returns Bulbasaur', async () => {\n      const { data } = await executeGraphQL<'getPokemonByDexNumber'>({\n        query: getPokemonByNationalDexNumber,\n        variables: { number: 1 }\n      });\n\n      expect(data.getPokemonByDexNumber.species).toEqual('bulbasaur');\n    });\n\n    test('GIVEN National Dex Number -60 THEN returns Chromera', async () => {\n      const { data } = await executeGraphQL<'getPokemonByDexNumber'>({\n        query: getPokemonByNationalDexNumber,\n        variables: { number: -60 }\n      });\n\n      expect(data.getPokemonByDexNumber.species).toEqual('chromera');\n    });\n\n    test('GIVEN National Dex Number 905 THEN returns Enamorus', async () => {\n      const { data } = await executeGraphQL<'getPokemonByDexNumber'>({\n        query: getPokemonByNationalDexNumber,\n        variables: { number: 905 }\n      });\n\n      expect(data.getPokemonByDexNumber.species).toEqual('enamorus');\n    });\n  });\n\n  describe('Full data requests', () => {\n    test('GIVEN request for Greninja THEN returns all data', async () => {\n      const { data } = await executeGraphQL<'getPokemon'>({\n        query: getPokemonWithFullData,\n        variables: { pokemon: 'greninja' }\n      });\n\n      expect(data.getPokemon).toEqual({\n        abilities: {\n          first: { name: 'Torrent' },\n          second: null,\n          hidden: { name: 'Protean' },\n          special: { name: 'Battle Bond' }\n        },\n        eggGroups: ['Water 1'],\n        evYields: {\n          hp: 0,\n          attack: 0,\n          defense: 0,\n          specialattack: 0,\n          specialdefense: 0,\n          speed: 3\n        },\n        evolutionLevel: '36',\n        flavorTexts: [\n          {\n            flavor:\n              'It creates throwing stars out of compressed water. When it spins them and throws them at high speed, these stars can split metal in two.',\n            game: 'Legends: Z-A'\n          }\n        ],\n        forme: null,\n        formeLetter: null,\n        gender: { female: '12.5%', male: '87.5%' },\n        height: 1.5,\n        ipa: '/ɡrɛˈnɪndʒɑː/',\n        isEggObtainable: true,\n        backSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/greninja.gif',\n        levellingRate: 'Medium Slow',\n        maximumHatchTime: 5396,\n        minimumHatchTime: 5140,\n        num: 658,\n        otherFormes: ['greninjaash', 'greninjamega'],\n        respelling: 'greh-NIN-jah',\n        serebiiPage: 'https://www.serebii.net/pokedex-sv/greninja',\n        shinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/greninja.gif',\n        shinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/greninja.gif',\n        smogonPage: 'https://www.smogon.com/dex/sv/pokemon/greninja',\n        baseForme: null,\n        smogonTier: 'UU',\n        species: 'greninja',\n        sprite: 'https://play.pokemonshowdown.com/sprites/ani/greninja.gif',\n        types: [{ name: 'Water' }, { name: 'Dark' }],\n        baseSpecies: null,\n        baseStats: {\n          hp: 72,\n          attack: 95,\n          defense: 67,\n          specialattack: 103,\n          specialdefense: 71,\n          speed: 122\n        },\n        baseStatsTotal: 530,\n        bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/greninja_(Pokémon)',\n        catchRate: {\n          base: 45,\n          percentageWithOrdinaryPokeballAtFullHealth: '11.9%'\n        },\n        classification: 'Ninja Pokémon',\n        color: 'Blue',\n        cosmeticFormes: null,\n        cry: 'https://play.pokemonshowdown.com/audio/cries/greninja.mp3'\n      });\n    });\n\n    test('GIVEN missingno THEN returns all data', async () => {\n      const { data } = await executeGraphQL<'getPokemon'>({\n        query: getPokemonWithFullData,\n        variables: { pokemon: 'missingno' }\n      });\n\n      expect(data.getPokemon).toEqual({\n        abilities: {\n          first: { name: 'Pressure' },\n          second: null,\n          hidden: null,\n          special: null\n        },\n        eggGroups: ['Undiscovered'],\n        evYields: {\n          hp: 0,\n          attack: 0,\n          defense: 0,\n          specialattack: 0,\n          specialdefense: 0,\n          speed: 0\n        },\n        evolutionLevel: null,\n        flavorTexts: [\n          {\n            flavor: 'A dual-type Bird/Normal Glitch Pokémon exclusive to the first generation',\n            game: 'Red'\n          }\n        ],\n        forme: null,\n        formeLetter: null,\n        gender: { female: '50%', male: '50%' },\n        height: 3.3,\n        ipa: null,\n        isEggObtainable: false,\n        backSprite: 'https://play.pokemonshowdown.com/sprites/afd-back/missingno.png',\n        levellingRate: null,\n        maximumHatchTime: null,\n        minimumHatchTime: null,\n        num: 0,\n        otherFormes: ['m00'],\n        respelling: null,\n        serebiiPage: '',\n        shinyBackSprite: 'https://play.pokemonshowdown.com/sprites/afd-back-shiny/missingno.png',\n        shinySprite: 'https://play.pokemonshowdown.com/sprites/afd-shiny/missingno.png',\n        smogonPage: '',\n        baseForme: null,\n        smogonTier: 'Custom',\n        species: 'missingno.',\n        sprite: 'https://play.pokemonshowdown.com/sprites/afd/missingno.png',\n        types: [{ name: 'Normal' }],\n        baseSpecies: null,\n        baseStats: {\n          hp: 33,\n          attack: 136,\n          defense: 0,\n          specialattack: 6,\n          specialdefense: 6,\n          speed: 29\n        },\n        baseStatsTotal: 210,\n        bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/MissingNo._(Pokémon)',\n        catchRate: {\n          base: 0,\n          percentageWithOrdinaryPokeballAtFullHealth: '0%'\n        },\n        classification: null,\n        color: 'Gray',\n        cosmeticFormes: null,\n        cry: null\n      });\n    });\n\n    test('GIVEN Hisuian forme Typhlosion THEN returns all data', async () => {\n      const { data } = await executeGraphQL<'getPokemon'>({\n        query: getPokemonWithFullData,\n        variables: { pokemon: 'typhlosionhisui' }\n      });\n\n      expect(data.getPokemon).toEqual({\n        abilities: {\n          first: { name: 'Blaze' },\n          second: null,\n          hidden: { name: 'Frisk' },\n          special: null\n        },\n        eggGroups: ['Field'],\n        evYields: {\n          hp: 0,\n          attack: 0,\n          defense: 0,\n          specialattack: 3,\n          specialdefense: 0,\n          speed: 0\n        },\n        evolutionLevel: '36',\n        flavorTexts: [\n          {\n            flavor:\n              \"Said to purify lost, forsaken souls with its flames and guide them to the afterlife. I believe its form has been influenced by the energy of the sacred mountain towering at Hisui's center.\",\n            game: 'Legends: Arceus'\n          }\n        ],\n        forme: 'Hisui',\n        formeLetter: 'H',\n        gender: { female: '12.5%', male: '87.5%' },\n        height: 1.6,\n        ipa: '/taɪˈfloʊʒən/',\n        isEggObtainable: true,\n        backSprite: 'https://play.pokemonshowdown.com/sprites/ani-back/typhlosion-hisui.gif',\n        levellingRate: 'Medium Slow',\n        maximumHatchTime: 5396,\n        minimumHatchTime: 5140,\n        num: 157,\n        otherFormes: ['typhlosion'],\n        respelling: 'tie-FLOW-sion',\n        serebiiPage: 'https://www.serebii.net/pokedex-sv/typhlosion',\n        shinyBackSprite: 'https://play.pokemonshowdown.com/sprites/ani-back-shiny/typhlosion-hisui.gif',\n        shinySprite: 'https://play.pokemonshowdown.com/sprites/ani-shiny/typhlosion-hisui.gif',\n        smogonPage: 'https://www.smogon.com/dex/sv/pokemon/typhlosion-hisui',\n        baseForme: null,\n        smogonTier: 'PU',\n        species: 'typhlosion-hisui',\n        sprite: 'https://play.pokemonshowdown.com/sprites/ani/typhlosion-hisui.gif',\n        types: [{ name: 'Fire' }, { name: 'Ghost' }],\n        baseSpecies: 'typhlosion',\n        baseStats: {\n          hp: 73,\n          attack: 84,\n          defense: 78,\n          specialattack: 119,\n          specialdefense: 85,\n          speed: 95\n        },\n        baseStatsTotal: 534,\n        bulbapediaPage: 'https://bulbapedia.bulbagarden.net/wiki/typhlosion_(Pokémon)',\n        catchRate: {\n          base: 45,\n          percentageWithOrdinaryPokeballAtFullHealth: '11.9%'\n        },\n        classification: 'Ghost Flame Pokémon',\n        color: 'Yellow',\n        cosmeticFormes: null,\n        cry: 'https://play.pokemonshowdown.com/audio/cries/typhlosion.mp3'\n      });\n    });\n  });\n\n  describe('Error Requests', () => {\n    test('GIVEN an invalid Pokémon THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getPokemonSpecies,\n        variables: { pokemon: 'totally_invalid_pokemon' }\n      });\n\n      expect(data.errors).toHaveLength(1);\n      expect(data.errors?.[0].message).toBe(\n        'Variable \"$pokemon\" got invalid value \"totally_invalid_pokemon\"; Value \"totally_invalid_pokemon\" does not exist in \"PokemonEnum\" enum.'\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/pokemon/getPokemonAllData.test.ts",
    "content": "import { getPokemonWithFullDataAndEvolutions } from '#test-utils/queries/pokemon-all-data';\nimport { executeGraphQL } from '#test-utils/testUtils';\nimport { readFile } from 'node:fs/promises';\n\nconst parse = (data: string) => JSON.parse(data);\n\nconst [beldumData, dragonairData, eeveeData, rattataalolaData, salamenceData, syclarData] = await Promise.all([\n  readFile(new URL('../../testUtils/full-data-responses/beldum.json', import.meta.url), { encoding: 'utf-8' }).then(parse),\n  readFile(new URL('../../testUtils/full-data-responses/dragonair.json', import.meta.url), { encoding: 'utf-8' }).then(parse),\n  readFile(new URL('../../testUtils/full-data-responses/eevee.json', import.meta.url), { encoding: 'utf-8' }).then(parse),\n  readFile(new URL('../../testUtils/full-data-responses/rattata-alola.json', import.meta.url), { encoding: 'utf-8' }).then(parse),\n  readFile(new URL('../../testUtils/full-data-responses/salamence.json', import.meta.url), { encoding: 'utf-8' }).then(parse),\n  readFile(new URL('../../testUtils/full-data-responses/syclar.json', import.meta.url), { encoding: 'utf-8' }).then(parse)\n]);\n\ndescribe('Get Pokémon with all data', () => {\n  const verifiableData: [string, unknown][] = [\n    ['eevee', eeveeData],\n    ['syclar', syclarData],\n    ['rattataalola', rattataalolaData],\n    ['dragonair', dragonairData],\n    ['beldum', beldumData],\n    ['salamence', salamenceData]\n  ];\n\n  test.each(verifiableData)('GIVEN %s request THEN returns Pokémon WITH all data', async (pokemon, returnedData) => {\n    const data = await executeGraphQL<'getPokemon'>({\n      query: getPokemonWithFullDataAndEvolutions,\n      variables: { pokemon }\n    });\n\n    expect(data).toEqual(returnedData);\n  });\n});\n"
  },
  {
    "path": "tests/scenarios/typematchups/getTypeMatchup.test.ts",
    "content": "import { getTypeMatchup } from '#test-utils/queries/typematchup';\nimport { executeGraphQL } from '#test-utils/testUtils';\n\ndescribe('getTypeMatchup', () => {\n  describe('Successful requests', () => {\n    test('GIVEN single type THEN returns type matchup', async () => {\n      const { data } = await executeGraphQL<'getTypeMatchup'>({\n        query: getTypeMatchup,\n        variables: { primaryType: 'dragon' }\n      });\n\n      expect(data.getTypeMatchup).toEqual({\n        attacking: {\n          doubleEffectiveTypes: [],\n          doubleResistedTypes: [],\n          effectiveTypes: ['dragon'],\n          effectlessTypes: ['fairy'],\n          normalTypes: [\n            'bug',\n            'dark',\n            'electric',\n            'fighting',\n            'fire',\n            'flying',\n            'ghost',\n            'grass',\n            'ground',\n            'ice',\n            'normal',\n            'poison',\n            'psychic',\n            'rock',\n            'water'\n          ],\n          resistedTypes: ['steel']\n        },\n        defending: {\n          doubleEffectiveTypes: [],\n          doubleResistedTypes: [],\n          effectiveTypes: ['dragon', 'fairy', 'ice'],\n          effectlessTypes: [],\n          normalTypes: ['bug', 'dark', 'fighting', 'flying', 'ghost', 'ground', 'normal', 'poison', 'psychic', 'rock', 'steel'],\n          resistedTypes: ['electric', 'fire', 'grass', 'water']\n        }\n      });\n    });\n\n    test('GIVEN 2 of the same types THEN returns type matchup', async () => {\n      const { data } = await executeGraphQL<'getTypeMatchup'>({\n        query: getTypeMatchup,\n        variables: { primaryType: 'dragon', secondaryType: 'dragon' }\n      });\n\n      expect(data.getTypeMatchup).toEqual({\n        attacking: {\n          doubleEffectiveTypes: [],\n          doubleResistedTypes: [],\n          effectiveTypes: ['dragon'],\n          effectlessTypes: ['fairy'],\n          normalTypes: [\n            'bug',\n            'dark',\n            'electric',\n            'fighting',\n            'fire',\n            'flying',\n            'ghost',\n            'grass',\n            'ground',\n            'ice',\n            'normal',\n            'poison',\n            'psychic',\n            'rock',\n            'water'\n          ],\n          resistedTypes: ['steel']\n        },\n        defending: {\n          doubleEffectiveTypes: [],\n          doubleResistedTypes: [],\n          effectiveTypes: ['dragon', 'fairy', 'ice'],\n          effectlessTypes: [],\n          normalTypes: ['bug', 'dark', 'fighting', 'flying', 'ghost', 'ground', 'normal', 'poison', 'psychic', 'rock', 'steel'],\n          resistedTypes: ['electric', 'fire', 'grass', 'water']\n        }\n      });\n    });\n\n    test('GIVEN 2 types THEN returns type matchup', async () => {\n      const { data } = await executeGraphQL<'getTypeMatchup'>({\n        query: getTypeMatchup,\n        variables: { primaryType: 'dragon', secondaryType: 'flying' }\n      });\n\n      expect(data.getTypeMatchup).toEqual({\n        attacking: {\n          doubleEffectiveTypes: [],\n          doubleResistedTypes: ['steel'],\n          effectiveTypes: ['bug', 'dragon', 'fighting', 'grass'],\n          effectlessTypes: ['fairy'],\n          normalTypes: ['dark', 'fire', 'flying', 'ghost', 'ground', 'ice', 'normal', 'poison', 'psychic', 'water'],\n          resistedTypes: ['electric', 'rock']\n        },\n        defending: {\n          doubleEffectiveTypes: ['ice'],\n          doubleResistedTypes: ['grass'],\n          effectiveTypes: ['dragon', 'fairy', 'rock'],\n          effectlessTypes: ['ground'],\n          normalTypes: ['dark', 'electric', 'flying', 'ghost', 'normal', 'poison', 'psychic', 'steel'],\n          resistedTypes: ['bug', 'fighting', 'fire', 'water']\n        }\n      });\n    });\n\n    test('GIVEN 2 types with effectless THEN returns type matchup', async () => {\n      const { data } = await executeGraphQL<'getTypeMatchup'>({\n        query: getTypeMatchup,\n        variables: { primaryType: 'normal', secondaryType: 'ghost' }\n      });\n\n      expect(data.getTypeMatchup).toEqual({\n        attacking: {\n          doubleEffectiveTypes: [],\n          doubleResistedTypes: [],\n          effectiveTypes: ['psychic'],\n          effectlessTypes: ['ghost', 'normal'],\n          normalTypes: ['bug', 'dragon', 'electric', 'fairy', 'fighting', 'fire', 'flying', 'grass', 'ground', 'ice', 'poison', 'water'],\n          resistedTypes: ['dark', 'rock', 'steel']\n        },\n        defending: {\n          doubleEffectiveTypes: [],\n          doubleResistedTypes: [],\n          effectiveTypes: ['dark'],\n          effectlessTypes: ['fighting', 'ghost', 'normal'],\n          normalTypes: ['dragon', 'electric', 'fairy', 'fire', 'flying', 'grass', 'ground', 'ice', 'psychic', 'rock', 'steel', 'water'],\n          resistedTypes: ['bug', 'poison']\n        }\n      });\n    });\n\n    test('GIVEN 2 double effective attacking types THEN returns type matchup', async () => {\n      const { data } = await executeGraphQL<'getTypeMatchup'>({\n        query: getTypeMatchup,\n        variables: { primaryType: 'ice', secondaryType: 'flying' }\n      });\n\n      expect(data.getTypeMatchup).toEqual({\n        attacking: {\n          doubleEffectiveTypes: ['grass'],\n          doubleResistedTypes: ['steel'],\n          effectiveTypes: ['bug', 'dragon', 'fighting', 'flying', 'ground'],\n          effectlessTypes: [],\n          normalTypes: ['dark', 'fairy', 'ghost', 'normal', 'poison', 'psychic'],\n          resistedTypes: ['electric', 'fire', 'ice', 'rock', 'water']\n        },\n        defending: {\n          doubleEffectiveTypes: ['rock'],\n          doubleResistedTypes: [],\n          effectiveTypes: ['electric', 'fire', 'steel'],\n          effectlessTypes: ['ground'],\n          normalTypes: ['dark', 'dragon', 'fairy', 'fighting', 'flying', 'ghost', 'ice', 'normal', 'poison', 'psychic', 'water'],\n          resistedTypes: ['bug', 'grass']\n        }\n      });\n    });\n  });\n\n  describe('Error Requests', () => {\n    test('GIVEN one invalid type THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getTypeMatchup,\n        variables: { primaryType: ['totally_invalid_type'] }\n      });\n\n      expect(data.errors).toHaveLength(1);\n      expect(data.errors?.[0].message).toBe(\n        'Variable \"$primaryType\" got invalid value [\"totally_invalid_type\"]; Enum \"TypesEnum\" cannot represent non-string value: [\"totally_invalid_type\"].'\n      );\n    });\n\n    test('GIVEN two invalid types THEN returns error', async () => {\n      const data = await executeGraphQL({\n        query: getTypeMatchup,\n        variables: { primaryType: 'totally_invalid_type', secondaryType: 'invalid_type_totally' }\n      });\n\n      expect(data.errors).toHaveLength(2);\n      expect(data.errors?.[0].message).toBe(\n        'Variable \"$primaryType\" got invalid value \"totally_invalid_type\"; Value \"totally_invalid_type\" does not exist in \"TypesEnum\" enum.'\n      );\n      expect(data.errors?.[1].message).toBe(\n        'Variable \"$secondaryType\" got invalid value \"invalid_type_totally\"; Value \"invalid_type_totally\" does not exist in \"TypesEnum\" enum.'\n      );\n    });\n  });\n});\n"
  },
  {
    "path": "tests/testUtils/full-data-responses/beldum.json",
    "content": "{\n  \"data\": {\n    \"getPokemon\": {\n      \"abilities\": {\n        \"first\": {\n          \"name\": \"Clear Body\",\n          \"key\": \"clearbody\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Clear_Body_(Ability)\",\n          \"desc\": null,\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/clear_body.shtml\",\n          \"shortDesc\": \"Prevents other Pokémon from lowering this Pokémon's stat stages.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/clear_body\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"second\": null,\n        \"hidden\": {\n          \"name\": \"Light Metal\",\n          \"key\": \"lightmetal\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Metal_(Ability)\",\n          \"desc\": \"This Pokémon's weight is halved, rounded down to a tenth of a kilogram. This effect is calculated after the effect of Autotomize, and before the effect of Float Stone. A Pokémon's weight will not drop below 0.1 kg.\",\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/light_metal.shtml\",\n          \"shortDesc\": \"This Pokémon's weight is halved.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/light_metal\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"special\": null\n      },\n      \"learnsets\": {\n        \"generation3\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            }\n          ]\n        },\n        \"generation4\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"irondefense\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Iron Defense\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                \"shortDesc\": \"Raises the user's Defense by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                \"target\": \"Self\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"ironhead\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Head\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            }\n          ]\n        },\n        \"generation5\": {\n          \"dreamworldMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"ironhead\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Head\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"irondefense\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Iron Defense\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                \"shortDesc\": \"Raises the user's Defense by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                \"target\": \"Self\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"ironhead\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Head\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            }\n          ]\n        },\n        \"generation6\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"holdback\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hold_Back_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Leaves the target with at least 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Unobtainable\",\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Hold Back\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/holdback.shtml\",\n                \"shortDesc\": \"Always leaves the target with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hold-back\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"irondefense\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Iron Defense\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                \"shortDesc\": \"Raises the user's Defense by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                \"target\": \"Self\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"ironhead\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Head\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tmMoves\": [],\n          \"tutorMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"irondefense\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Iron Defense\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                \"shortDesc\": \"Raises the user's Defense by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                \"target\": \"Self\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"ironhead\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Head\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            }\n          ]\n        },\n        \"generation7\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"irondefense\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Iron Defense\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                \"shortDesc\": \"Raises the user's Defense by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                \"target\": \"Self\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"ironhead\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Head\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            }\n          ]\n        },\n        \"generation8\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"irondefense\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Iron Defense\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                \"shortDesc\": \"Raises the user's Defense by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                \"target\": \"Self\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"ironhead\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Head\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"steelbeam\",\n                \"accuracy\": 95,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": null,\n                \"desc\": \"Whether or not this move is successful and even if it would cause fainting, the user loses 1/2 of its maximum HP, rounded up, unless the user has the Magic Guard Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Steel Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelbeam.shtml\",\n                \"shortDesc\": \"User loses 50% max HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-beam\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"terablast\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": null,\n                \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tera Blast\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tackle\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Tackle\",\n                \"pp\": 35,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ]\n        }\n      },\n      \"key\": \"beldum\",\n      \"eggGroups\": [\"Mineral\"],\n      \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 1, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n      \"evolutionLevel\": null,\n      \"flavorTexts\": [\n        { \"flavor\": \"They communicate with one another by using magnetic pulses. In a swarm, they move in perfect unison.\", \"game\": \"Legends: Z-A\" }\n      ],\n      \"forme\": null,\n      \"formeLetter\": null,\n      \"gender\": { \"female\": \"0%\", \"male\": \"0%\" },\n      \"height\": 0.6,\n      \"isEggObtainable\": true,\n      \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/beldum.gif\",\n      \"levellingRate\": \"Slow\",\n      \"maximumHatchTime\": 10536,\n      \"minimumHatchTime\": 10280,\n      \"num\": 374,\n      \"otherFormes\": null,\n      \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/beldum\",\n      \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/beldum.gif\",\n      \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/beldum.gif\",\n      \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/beldum\",\n      \"baseForme\": null,\n      \"smogonTier\": \"LC\",\n      \"species\": \"beldum\",\n      \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/beldum.gif\",\n      \"types\": [\n        {\n          \"name\": \"Steel\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"fairy\", \"ice\", \"rock\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\"bug\", \"dark\", \"dragon\", \"fighting\", \"flying\", \"ghost\", \"grass\", \"ground\", \"normal\", \"poison\", \"psychic\"],\n              \"resistedTypes\": [\"electric\", \"fire\", \"steel\", \"water\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"fighting\", \"fire\", \"ground\"],\n              \"effectlessTypes\": [\"poison\"],\n              \"normalTypes\": [\"dark\", \"electric\", \"ghost\", \"water\"],\n              \"resistedTypes\": [\"bug\", \"dragon\", \"fairy\", \"flying\", \"grass\", \"ice\", \"normal\", \"psychic\", \"rock\", \"steel\"]\n            }\n          }\n        },\n        {\n          \"name\": \"Psychic\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"fighting\", \"poison\"],\n              \"effectlessTypes\": [\"dark\"],\n              \"normalTypes\": [\"bug\", \"dragon\", \"electric\", \"fairy\", \"fire\", \"flying\", \"ghost\", \"grass\", \"ground\", \"ice\", \"normal\", \"rock\", \"water\"],\n              \"resistedTypes\": [\"psychic\", \"steel\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"bug\", \"dark\", \"ghost\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\n                \"dragon\",\n                \"electric\",\n                \"fairy\",\n                \"fire\",\n                \"flying\",\n                \"grass\",\n                \"ground\",\n                \"ice\",\n                \"normal\",\n                \"poison\",\n                \"rock\",\n                \"steel\",\n                \"water\"\n              ],\n              \"resistedTypes\": [\"fighting\", \"psychic\"]\n            }\n          }\n        }\n      ],\n      \"baseSpecies\": null,\n      \"baseStats\": { \"hp\": 40, \"attack\": 55, \"defense\": 80, \"specialattack\": 35, \"specialdefense\": 60, \"speed\": 30 },\n      \"baseStatsTotal\": 300,\n      \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/beldum_(Pokémon)\",\n      \"catchRate\": { \"base\": 3, \"percentageWithOrdinaryPokeballAtFullHealth\": \"1.6%\" },\n      \"classification\": \"Iron Ball Pokémon\",\n      \"respelling\": \"BELL-dum\",\n      \"ipa\": \"/ˈbɛldʌm/\",\n      \"color\": \"Blue\",\n      \"cosmeticFormes\": null,\n      \"cry\": \"https://play.pokemonshowdown.com/audio/cries/beldum.mp3\",\n      \"weight\": 95.2,\n      \"legendary\": false,\n      \"mythical\": false,\n      \"evolutions\": [\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Clear Body\",\n              \"key\": \"clearbody\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Clear_Body_(Ability)\",\n              \"desc\": null,\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/clear_body.shtml\",\n              \"shortDesc\": \"Prevents other Pokémon from lowering this Pokémon's stat stages.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/clear_body\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Light Metal\",\n              \"key\": \"lightmetal\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Metal_(Ability)\",\n              \"desc\": \"This Pokémon's weight is halved, rounded down to a tenth of a kilogram. This effect is calculated after the effect of Autotomize, and before the effect of Float Stone. A Pokémon's weight will not drop below 0.1 kg.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/light_metal.shtml\",\n              \"shortDesc\": \"This Pokémon's weight is halved.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/light_metal\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irondefense\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Iron Defense\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                    \"shortDesc\": \"Raises the user's Defense by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                    \"target\": \"Self\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irondefense\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Iron Defense\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                    \"shortDesc\": \"Raises the user's Defense by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                    \"target\": \"Self\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"holdback\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hold_Back_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Leaves the target with at least 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Unobtainable\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Hold Back\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/holdback.shtml\",\n                    \"shortDesc\": \"Always leaves the target with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hold-back\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irondefense\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Iron Defense\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                    \"shortDesc\": \"Raises the user's Defense by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                    \"target\": \"Self\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tmMoves\": [],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irondefense\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Iron Defense\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                    \"shortDesc\": \"Raises the user's Defense by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                    \"target\": \"Self\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irondefense\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Iron Defense\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                    \"shortDesc\": \"Raises the user's Defense by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                    \"target\": \"Self\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"irondefense\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Iron Defense\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                    \"shortDesc\": \"Raises the user's Defense by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                    \"target\": \"Self\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"steelbeam\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"Whether or not this move is successful and even if it would cause fainting, the user loses 1/2 of its maximum HP, rounded up, unless the user has the Magic Guard Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Steel Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelbeam.shtml\",\n                    \"shortDesc\": \"User loses 50% max HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-beam\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"metang\",\n          \"eggGroups\": [\"Mineral\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 2, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": \"20\",\n          \"flavorTexts\": [\n            {\n              \"flavor\": \"It is formed by two Beldum joining together. Its steel body won't be scratched if it collides with a jet.\",\n              \"game\": \"Legends: Z-A\"\n            }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"0%\", \"male\": \"0%\" },\n          \"height\": 1.2,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/metang.gif\",\n          \"levellingRate\": \"Slow\",\n          \"maximumHatchTime\": 10536,\n          \"minimumHatchTime\": 10280,\n          \"num\": 375,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/metang\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/metang.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/metang.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/metang\",\n          \"baseForme\": null,\n          \"smogonTier\": \"NFE\",\n          \"species\": \"metang\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/metang.gif\",\n          \"types\": [\n            {\n              \"name\": \"Steel\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"fairy\", \"ice\", \"rock\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dark\", \"dragon\", \"fighting\", \"flying\", \"ghost\", \"grass\", \"ground\", \"normal\", \"poison\", \"psychic\"],\n                  \"resistedTypes\": [\"electric\", \"fire\", \"steel\", \"water\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"fighting\", \"fire\", \"ground\"],\n                  \"effectlessTypes\": [\"poison\"],\n                  \"normalTypes\": [\"dark\", \"electric\", \"ghost\", \"water\"],\n                  \"resistedTypes\": [\"bug\", \"dragon\", \"fairy\", \"flying\", \"grass\", \"ice\", \"normal\", \"psychic\", \"rock\", \"steel\"]\n                }\n              }\n            },\n            {\n              \"name\": \"Psychic\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"fighting\", \"poison\"],\n                  \"effectlessTypes\": [\"dark\"],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dragon\",\n                    \"electric\",\n                    \"fairy\",\n                    \"fire\",\n                    \"flying\",\n                    \"ghost\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"rock\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"psychic\", \"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"bug\", \"dark\", \"ghost\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\n                    \"dragon\",\n                    \"electric\",\n                    \"fairy\",\n                    \"fire\",\n                    \"flying\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"rock\",\n                    \"steel\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"fighting\", \"psychic\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 60, \"attack\": 75, \"defense\": 100, \"specialattack\": 55, \"specialdefense\": 80, \"speed\": 50 },\n          \"baseStatsTotal\": 420,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/metang_(Pokémon)\",\n          \"catchRate\": { \"base\": 3, \"percentageWithOrdinaryPokeballAtFullHealth\": \"1.6%\" },\n          \"classification\": \"Iron Claw Pokémon\",\n          \"respelling\": \"met-TANG\",\n          \"ipa\": \"/mɛˈtæŋ/\",\n          \"color\": \"Blue\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/metang.mp3\",\n          \"weight\": 202.5,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": [\n            {\n              \"abilities\": {\n                \"first\": {\n                  \"name\": \"Clear Body\",\n                  \"key\": \"clearbody\",\n                  \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Clear_Body_(Ability)\",\n                  \"desc\": null,\n                  \"isFieldAbility\": null,\n                  \"serebiiPage\": \"https://www.serebii.net/abilitydex/clear_body.shtml\",\n                  \"shortDesc\": \"Prevents other Pokémon from lowering this Pokémon's stat stages.\",\n                  \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/clear_body\",\n                  \"pokemonThatHaveThisAbility\": []\n                },\n                \"second\": null,\n                \"hidden\": {\n                  \"name\": \"Light Metal\",\n                  \"key\": \"lightmetal\",\n                  \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Metal_(Ability)\",\n                  \"desc\": \"This Pokémon's weight is halved, rounded down to a tenth of a kilogram. This effect is calculated after the effect of Autotomize, and before the effect of Float Stone. A Pokémon's weight will not drop below 0.1 kg.\",\n                  \"isFieldAbility\": null,\n                  \"serebiiPage\": \"https://www.serebii.net/abilitydex/light_metal.shtml\",\n                  \"shortDesc\": \"This Pokémon's weight is halved.\",\n                  \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/light_metal\",\n                  \"pokemonThatHaveThisAbility\": []\n                },\n                \"special\": null\n              },\n              \"learnsets\": {\n                \"generation3\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"confusion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confusion_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Confusion\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confusion.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confusion\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"metalclaw\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Metal_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Metal Claw\",\n                        \"pp\": 35,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/metalclaw.shtml\",\n                        \"shortDesc\": \"10% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/metal-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"refresh\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Refresh\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                        \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"takedown\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Take Down\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                        \"shortDesc\": \"Has 1/4 recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    }\n                  ],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"cut\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Unobtainable\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Cut\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"earthquake\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"100\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Damage doubles if the target is using Dig.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Earthquake\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 180\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"flash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon is able to light up dark caverns. Flash is taught to Pokémon with HM05 in the first three generations, and with TM70 since Generation IV.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Flash\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flash.shtml\",\n                        \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"lightscreen\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Light Screen\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                        \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"reflect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Reflect\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                        \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rocksmash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 70,\n                        \"name\": \"Rock Smash\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                        \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"sandstorm\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sandstorm_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"For 5 turns, the weather becomes Sandstorm. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are a Ground, Rock, or Steel type, or have the Magic Guard, Overcoat, Sand Force, Sand Rush, or Sand Veil Abilities. During the effect, the Special Defense of Rock-type Pokémon is multiplied by 1.5 when taking damage from a special attack. Lasts for 8 turns if the user is holding Smooth Rock. Fails if the current weather is Sandstorm.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sandstorm\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandstorm.shtml\",\n                        \"shortDesc\": \"For 5 turns, a sandstorm rages. Rock: 1.5x SpD.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sandstorm\",\n                        \"target\": \"All\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"secretpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                        \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Secret Power\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                        \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"shadowball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Shadow Ball\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"sludgebomb\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sludge_Bomb_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to poison the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Sludge Bomb\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sludgebomb.shtml\",\n                        \"shortDesc\": \"30% chance to poison the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sludge-bomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"strength\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Strength\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"bodyslam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"85\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Body Slam\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"defensecurl\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Defense_Curl_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the user's Defense by 1 stage. As long as the user remains active, the power of the user's Ice Ball and Rollout will be doubled (this effect is not stackable).\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Defense Curl\",\n                        \"pp\": 40,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/defensecurl.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/defense-curl\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"dynamicpunch\",\n                        \"accuracy\": 50,\n                        \"basePower\": \"100\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dynamic_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 100% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Dynamic Punch\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dynamicpunch.shtml\",\n                        \"shortDesc\": \"100% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dynamic-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 180\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"endure\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Endure\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                        \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"explosion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"250\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Explosion_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokémon has the Damp Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Explosion\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/explosion.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. The user faints.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/explosion\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"furycutter\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Fury Cutter\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                        \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Bug\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"icepunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to freeze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Ice Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                        \"shortDesc\": \"10% chance to freeze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"icywind\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"55\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Icy Wind\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                        \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"mimic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Mimic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                        \"shortDesc\": \"The last move the target used replaces this one.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"mudslap\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Mud-Slap\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"psychup\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psych_Up_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user copies all of the target's current stat stage changes.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Psych Up\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychup.shtml\",\n                        \"shortDesc\": \"Copies the target's current stat stages.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psych-up\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rollout\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"30\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rollout_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Rollout\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rollout.shtml\",\n                        \"shortDesc\": \"Power doubles with each hit. Repeats for 5 turns.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rollout\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"selfdestruct\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"200\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Self-destruct_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokémon has the Damp Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Self-Destruct\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/selfdestruct.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. The user faints.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/self-destruct\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"swift\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Swift\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"thunderpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Thunder Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderpunch.shtml\",\n                        \"shortDesc\": \"10% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 140\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 3,\n                      \"level\": 56,\n                      \"move\": {\n                        \"key\": \"agility\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Agility\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 20,\n                      \"move\": {\n                        \"key\": \"confusion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confusion_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Confusion\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confusion.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confusion\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 62,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 44,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 20,\n                      \"move\": {\n                        \"key\": \"metalclaw\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Metal_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Metal Claw\",\n                        \"pp\": 35,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/metalclaw.shtml\",\n                        \"shortDesc\": \"10% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/metal-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 50,\n                      \"move\": {\n                        \"key\": \"meteormash\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Meteor_Mash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 20% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Meteor Mash\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/meteormash.shtml\",\n                        \"shortDesc\": \"20% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/meteor-mash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 38,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 32,\n                      \"move\": {\n                        \"key\": \"pursuit\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pursuit_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"If an opposing Pokémon switches out this turn, this move hits that Pokémon before it leaves the field, even if it was not the original target. If the user moves after an opponent using Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokémon does not become active until the end of the turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Pursuit\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pursuit.shtml\",\n                        \"shortDesc\": \"If a foe is switching out, hits it at 2x power.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pursuit\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 26,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"takedown\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Take Down\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                        \"shortDesc\": \"Has 1/4 recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    }\n                  ]\n                },\n                \"generation4\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"cut\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Unobtainable\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Cut\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"earthquake\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"100\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Damage doubles if the target is using Dig.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Earthquake\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 180\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"endure\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Endure\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                        \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"explosion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"250\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Explosion_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokémon has the Damp Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Explosion\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/explosion.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. The user faints.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/explosion\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"flash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon is able to light up dark caverns. Flash is taught to Pokémon with HM05 in the first three generations, and with TM70 since Generation IV.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Flash\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flash.shtml\",\n                        \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"flashcannon\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_Cannon_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flash Cannon\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flashcannon.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash-cannon\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"grassknot\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Grass_Knot_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"This move's power is 20 if the target weighs less than 10 kg, 40 if less than 25 kg, 60 if less than 50 kg, 80 if less than 100 kg, 100 if less than 200 kg, and 120 if greater than or equal to 200 kg.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Grass Knot\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/grassknot.shtml\",\n                        \"shortDesc\": \"More power the heavier the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/grass-knot\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Grass\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"gyroball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gyro_Ball_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Power is equal to (25 * target's current Speed / user's current Speed) + 1, rounded down, but not more than 150. If the user's current Speed is 0, this move's power is 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Gyro Ball\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gyroball.shtml\",\n                        \"shortDesc\": \"More power the slower the user than the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gyro-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"lightscreen\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Light Screen\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                        \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"naturalgift\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Natural Gift\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                        \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"psychup\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psych_Up_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user copies all of the target's current stat stage changes.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Psych Up\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychup.shtml\",\n                        \"shortDesc\": \"Copies the target's current stat stages.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psych-up\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"reflect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Reflect\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                        \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rockpolish\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Polish_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rock Polish\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockpolish.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-polish\",\n                        \"target\": \"Self\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rocksmash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 70,\n                        \"name\": \"Rock Smash\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                        \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"sandstorm\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sandstorm_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"For 5 turns, the weather becomes Sandstorm. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are a Ground, Rock, or Steel type, or have the Magic Guard, Overcoat, Sand Force, Sand Rush, or Sand Veil Abilities. During the effect, the Special Defense of Rock-type Pokémon is multiplied by 1.5 when taking damage from a special attack. Lasts for 8 turns if the user is holding Smooth Rock. Fails if the current weather is Sandstorm.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sandstorm\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandstorm.shtml\",\n                        \"shortDesc\": \"For 5 turns, a sandstorm rages. Rock: 1.5x SpD.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sandstorm\",\n                        \"target\": \"All\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"secretpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                        \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Secret Power\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                        \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"shadowball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Shadow Ball\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"sludgebomb\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sludge_Bomb_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to poison the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Sludge Bomb\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sludgebomb.shtml\",\n                        \"shortDesc\": \"30% chance to poison the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sludge-bomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"stealthrock\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stealth_Rock_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in. Fails if the effect is already active on the opposing side. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Stealth Rock\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stealthrock.shtml\",\n                        \"shortDesc\": \"Hurts foes on switch-in. Factors Rock weakness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stealth-rock\",\n                        \"target\": \"Foe's Side\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"strength\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Strength\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"furycutter\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Fury Cutter\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                        \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Bug\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"gravity\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gravity_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the evasiveness of all active Pokémon is multiplied by 0.6. At the time of use, Bounce, Fly, Magnet Rise, Sky Drop, and Telekinesis end immediately for all active Pokémon. During the effect, Bounce, Fly, Flying Press, High Jump Kick, Jump Kick, Magnet Rise, Sky Drop, Splash, and Telekinesis are prevented from being used by all active Pokémon. Ground-type attacks, Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability can affect Flying types or Pokémon with the Levitate Ability. Fails if this move is already in effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Gravity\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gravity.shtml\",\n                        \"shortDesc\": \"5 turns: no Ground immunities, 1.67x accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gravity\",\n                        \"target\": \"All\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"headbutt\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"icepunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to freeze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Ice Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                        \"shortDesc\": \"10% chance to freeze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"icywind\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"55\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Icy Wind\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                        \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"ironhead\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Iron Head\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"magnetrise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Magnet Rise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/magnetrise.shtml\",\n                        \"shortDesc\": \"For 5 turns, the user has immunity to Ground.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/magnet-rise\",\n                        \"target\": \"Self\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"mudslap\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Mud-Slap\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rollout\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"30\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rollout_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Rollout\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rollout.shtml\",\n                        \"shortDesc\": \"Power doubles with each hit. Repeats for 5 turns.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rollout\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"signalbeam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Signal_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Signal Beam\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/signalbeam.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/signal-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Bug\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"swift\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Swift\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"thunderpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Thunder Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderpunch.shtml\",\n                        \"shortDesc\": \"10% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"trick\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trick_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail or Z-Crystal, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, a Drive, or a Memory to or from a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally, respectively. The target is immune to this move if it has the Sticky Hold Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Trick\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trick.shtml\",\n                        \"shortDesc\": \"User switches its held item with the target's.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trick\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 4,\n                      \"level\": 44,\n                      \"move\": {\n                        \"key\": \"agility\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Agility\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 32,\n                      \"move\": {\n                        \"key\": \"bulletpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bullet_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Bullet Punch\",\n                        \"pp\": 30,\n                        \"priority\": 1,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulletpunch.shtml\",\n                        \"shortDesc\": \"Usually goes first.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bullet-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"confusion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confusion_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Confusion\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confusion.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confusion\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 56,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 40,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"magnetrise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Magnet Rise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/magnetrise.shtml\",\n                        \"shortDesc\": \"For 5 turns, the user has immunity to Ground.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/magnet-rise\",\n                        \"target\": \"Self\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"metalclaw\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Metal_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Metal Claw\",\n                        \"pp\": 35,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/metalclaw.shtml\",\n                        \"shortDesc\": \"10% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/metal-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 48,\n                      \"move\": {\n                        \"key\": \"meteormash\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Meteor_Mash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 20% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Meteor Mash\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/meteormash.shtml\",\n                        \"shortDesc\": \"20% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/meteor-mash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 36,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 28,\n                      \"move\": {\n                        \"key\": \"pursuit\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pursuit_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"If an opposing Pokémon switches out this turn, this move hits that Pokémon before it leaves the field, even if it was not the original target. If the user moves after an opponent using Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokémon does not become active until the end of the turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Pursuit\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pursuit.shtml\",\n                        \"shortDesc\": \"If a foe is switching out, hits it at 2x power.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pursuit\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 24,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"takedown\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Take Down\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                        \"shortDesc\": \"Has 1/4 recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 52,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                },\n                \"generation5\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"bulldoze\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bulldoze\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                        \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"cut\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Unobtainable\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Cut\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"earthquake\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"100\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Damage doubles if the target is using Dig.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Earthquake\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 180\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"explosion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"250\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Explosion_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokémon has the Damp Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Explosion\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/explosion.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. The user faints.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/explosion\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"flash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon is able to light up dark caverns. Flash is taught to Pokémon with HM05 in the first three generations, and with TM70 since Generation IV.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Flash\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flash.shtml\",\n                        \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"flashcannon\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_Cannon_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flash Cannon\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flashcannon.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash-cannon\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"grassknot\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Grass_Knot_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"This move's power is 20 if the target weighs less than 10 kg, 40 if less than 25 kg, 60 if less than 50 kg, 80 if less than 100 kg, 100 if less than 200 kg, and 120 if greater than or equal to 200 kg.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Grass Knot\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/grassknot.shtml\",\n                        \"shortDesc\": \"More power the heavier the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/grass-knot\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Grass\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"gyroball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gyro_Ball_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Power is equal to (25 * target's current Speed / user's current Speed) + 1, rounded down, but not more than 150. If the user's current Speed is 0, this move's power is 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Gyro Ball\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gyroball.shtml\",\n                        \"shortDesc\": \"More power the slower the user than the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gyro-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"honeclaws\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Hone Claws\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                        \"target\": \"Self\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"lightscreen\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Light Screen\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                        \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"psychup\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psych_Up_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user copies all of the target's current stat stage changes.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Psych Up\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychup.shtml\",\n                        \"shortDesc\": \"Copies the target's current stat stages.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psych-up\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"psyshock\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psyshock_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Deals damage to the target based on its Defense instead of Special Defense.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psyshock\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psyshock.shtml\",\n                        \"shortDesc\": \"Damages target based on Defense, not Sp. Def.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psyshock\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"reflect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Reflect\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                        \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"rockpolish\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Polish_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rock Polish\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockpolish.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-polish\",\n                        \"target\": \"Self\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"rocksmash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 70,\n                        \"name\": \"Rock Smash\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                        \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"round\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Round\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                        \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"sandstorm\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sandstorm_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"For 5 turns, the weather becomes Sandstorm. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are a Ground, Rock, or Steel type, or have the Magic Guard, Overcoat, Sand Force, Sand Rush, or Sand Veil Abilities. During the effect, the Special Defense of Rock-type Pokémon is multiplied by 1.5 when taking damage from a special attack. Lasts for 8 turns if the user is holding Smooth Rock. Fails if the current weather is Sandstorm.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sandstorm\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandstorm.shtml\",\n                        \"shortDesc\": \"For 5 turns, a sandstorm rages. Rock: 1.5x SpD.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sandstorm\",\n                        \"target\": \"All\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"shadowball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Shadow Ball\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"sludgebomb\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sludge_Bomb_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to poison the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Sludge Bomb\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sludgebomb.shtml\",\n                        \"shortDesc\": \"30% chance to poison the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sludge-bomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"strength\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Strength\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"telekinesis\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 3 turns, the target cannot avoid any attacks made against it, other than OHKO moves, as long as it remains active. During the effect, the target is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the target uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the target is under any of their effects. Fails if the target is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows. The target is immune to this move on use if its species is Diglett, Dugtrio, Alolan Diglett, Alolan Dugtrio, Sandygast, Palossand, or Gengar while Mega-Evolved. Mega Gengar cannot be under this effect by any means.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Telekinesis\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/telekinesis.shtml\",\n                        \"shortDesc\": \"For 3 turns, target floats but moves can't miss it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/telekinesis\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"gravity\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gravity_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the evasiveness of all active Pokémon is multiplied by 0.6. At the time of use, Bounce, Fly, Magnet Rise, Sky Drop, and Telekinesis end immediately for all active Pokémon. During the effect, Bounce, Fly, Flying Press, High Jump Kick, Jump Kick, Magnet Rise, Sky Drop, Splash, and Telekinesis are prevented from being used by all active Pokémon. Ground-type attacks, Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability can affect Flying types or Pokémon with the Levitate Ability. Fails if this move is already in effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Gravity\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gravity.shtml\",\n                        \"shortDesc\": \"5 turns: no Ground immunities, 1.67x accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gravity\",\n                        \"target\": \"All\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"icepunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to freeze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Ice Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                        \"shortDesc\": \"10% chance to freeze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"icywind\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"55\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Icy Wind\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                        \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"ironhead\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Iron Head\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"magnetrise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Magnet Rise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/magnetrise.shtml\",\n                        \"shortDesc\": \"For 5 turns, the user has immunity to Ground.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/magnet-rise\",\n                        \"target\": \"Self\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"signalbeam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Signal_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Signal Beam\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/signalbeam.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/signal-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Bug\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"stealthrock\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stealth_Rock_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in. Fails if the effect is already active on the opposing side. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Stealth Rock\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stealthrock.shtml\",\n                        \"shortDesc\": \"Hurts foes on switch-in. Factors Rock weakness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stealth-rock\",\n                        \"target\": \"Foe's Side\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"thunderpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Thunder Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderpunch.shtml\",\n                        \"shortDesc\": \"10% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"trick\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trick_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail or Z-Crystal, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, a Drive, or a Memory to or from a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally, respectively. The target is immune to this move if it has the Sticky Hold Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Trick\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trick.shtml\",\n                        \"shortDesc\": \"User switches its held item with the target's.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trick\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 5,\n                      \"level\": 38,\n                      \"move\": {\n                        \"key\": \"agility\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Agility\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 32,\n                      \"move\": {\n                        \"key\": \"bulletpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bullet_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Bullet Punch\",\n                        \"pp\": 30,\n                        \"priority\": 1,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulletpunch.shtml\",\n                        \"shortDesc\": \"Usually goes first.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bullet-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"confusion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confusion_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Confusion\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confusion.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confusion\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 50,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 40,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"magnetrise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Magnet Rise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/magnetrise.shtml\",\n                        \"shortDesc\": \"For 5 turns, the user has immunity to Ground.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/magnet-rise\",\n                        \"target\": \"Self\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"metalclaw\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Metal_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Metal Claw\",\n                        \"pp\": 35,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/metalclaw.shtml\",\n                        \"shortDesc\": \"10% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/metal-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 44,\n                      \"move\": {\n                        \"key\": \"meteormash\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Meteor_Mash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 20% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Meteor Mash\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/meteormash.shtml\",\n                        \"shortDesc\": \"20% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/meteor-mash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 26,\n                      \"move\": {\n                        \"key\": \"miracleeye\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Miracle_Eye_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"As long as the target remains active, its evasiveness stat stage is ignored during accuracy checks against it if it is greater than 0, and Psychic-type attacks can hit the target if it is a Dark type. Fails if the target is already affected, or affected by Foresight or Odor Sleuth.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Miracle Eye\",\n                        \"pp\": 40,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/miracleeye.shtml\",\n                        \"shortDesc\": \"Psychic hits Dark. Evasiveness ignored.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/miracle-eye\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 36,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 23,\n                      \"move\": {\n                        \"key\": \"pursuit\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pursuit_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"If an opposing Pokémon switches out this turn, this move hits that Pokémon before it leaves the field, even if it was not the original target. If the user moves after an opponent using Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokémon does not become active until the end of the turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Pursuit\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pursuit.shtml\",\n                        \"shortDesc\": \"If a foe is switching out, hits it at 2x power.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pursuit\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 24,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"takedown\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Take Down\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                        \"shortDesc\": \"Has 1/4 recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 29,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                },\n                \"generation6\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"bulldoze\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bulldoze\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                        \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"confide\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Confide\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                        \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"cut\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Unobtainable\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Cut\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"earthquake\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"100\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Damage doubles if the target is using Dig.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Earthquake\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 180\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"explosion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"250\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Explosion_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokémon has the Damp Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Explosion\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/explosion.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. The user faints.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/explosion\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"flash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon is able to light up dark caverns. Flash is taught to Pokémon with HM05 in the first three generations, and with TM70 since Generation IV.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Flash\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flash.shtml\",\n                        \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"flashcannon\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_Cannon_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flash Cannon\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flashcannon.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash-cannon\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"grassknot\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Grass_Knot_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"This move's power is 20 if the target weighs less than 10 kg, 40 if less than 25 kg, 60 if less than 50 kg, 80 if less than 100 kg, 100 if less than 200 kg, and 120 if greater than or equal to 200 kg.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Grass Knot\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/grassknot.shtml\",\n                        \"shortDesc\": \"More power the heavier the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/grass-knot\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Grass\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"gyroball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gyro_Ball_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Power is equal to (25 * target's current Speed / user's current Speed) + 1, rounded down, but not more than 150. If the user's current Speed is 0, this move's power is 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Gyro Ball\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gyroball.shtml\",\n                        \"shortDesc\": \"More power the slower the user than the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gyro-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"honeclaws\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Hone Claws\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                        \"target\": \"Self\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"lightscreen\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Light Screen\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                        \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"poweruppunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Power-up_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 100% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 70,\n                        \"name\": \"Power-Up Punch\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/poweruppunch.shtml\",\n                        \"shortDesc\": \"100% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/power-up-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"psychup\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psych_Up_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user copies all of the target's current stat stage changes.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Psych Up\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychup.shtml\",\n                        \"shortDesc\": \"Copies the target's current stat stages.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psych-up\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"psyshock\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psyshock_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Deals damage to the target based on its Defense instead of Special Defense.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psyshock\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psyshock.shtml\",\n                        \"shortDesc\": \"Damages target based on Defense, not Sp. Def.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psyshock\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"reflect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Reflect\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                        \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"rockpolish\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Polish_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rock Polish\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockpolish.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-polish\",\n                        \"target\": \"Self\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"rocksmash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 70,\n                        \"name\": \"Rock Smash\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                        \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"round\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Round\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                        \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"sandstorm\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sandstorm_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"For 5 turns, the weather becomes Sandstorm. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are a Ground, Rock, or Steel type, or have the Magic Guard, Overcoat, Sand Force, Sand Rush, or Sand Veil Abilities. During the effect, the Special Defense of Rock-type Pokémon is multiplied by 1.5 when taking damage from a special attack. Lasts for 8 turns if the user is holding Smooth Rock. Fails if the current weather is Sandstorm.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sandstorm\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandstorm.shtml\",\n                        \"shortDesc\": \"For 5 turns, a sandstorm rages. Rock: 1.5x SpD.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sandstorm\",\n                        \"target\": \"All\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"secretpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                        \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Secret Power\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                        \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"shadowball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Shadow Ball\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"sludgebomb\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sludge_Bomb_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to poison the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Sludge Bomb\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sludgebomb.shtml\",\n                        \"shortDesc\": \"30% chance to poison the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sludge-bomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"strength\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Strength\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"gravity\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gravity_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the evasiveness of all active Pokémon is multiplied by 0.6. At the time of use, Bounce, Fly, Magnet Rise, Sky Drop, and Telekinesis end immediately for all active Pokémon. During the effect, Bounce, Fly, Flying Press, High Jump Kick, Jump Kick, Magnet Rise, Sky Drop, Splash, and Telekinesis are prevented from being used by all active Pokémon. Ground-type attacks, Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability can affect Flying types or Pokémon with the Levitate Ability. Fails if this move is already in effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Gravity\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gravity.shtml\",\n                        \"shortDesc\": \"5 turns: no Ground immunities, 1.67x accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gravity\",\n                        \"target\": \"All\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"icepunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to freeze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Ice Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                        \"shortDesc\": \"10% chance to freeze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"icywind\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"55\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Icy Wind\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                        \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"ironhead\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Iron Head\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"magnetrise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Magnet Rise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/magnetrise.shtml\",\n                        \"shortDesc\": \"For 5 turns, the user has immunity to Ground.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/magnet-rise\",\n                        \"target\": \"Self\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"signalbeam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Signal_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Signal Beam\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/signalbeam.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/signal-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Bug\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"stealthrock\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stealth_Rock_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in. Fails if the effect is already active on the opposing side. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Stealth Rock\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stealthrock.shtml\",\n                        \"shortDesc\": \"Hurts foes on switch-in. Factors Rock weakness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stealth-rock\",\n                        \"target\": \"Foe's Side\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"thunderpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Thunder Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderpunch.shtml\",\n                        \"shortDesc\": \"10% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"trick\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trick_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail or Z-Crystal, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, a Drive, or a Memory to or from a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally, respectively. The target is immune to this move if it has the Sticky Hold Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Trick\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trick.shtml\",\n                        \"shortDesc\": \"User switches its held item with the target's.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trick\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 6,\n                      \"level\": 38,\n                      \"move\": {\n                        \"key\": \"agility\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Agility\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 26,\n                      \"move\": {\n                        \"key\": \"bulletpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bullet_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Bullet Punch\",\n                        \"pp\": 30,\n                        \"priority\": 1,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulletpunch.shtml\",\n                        \"shortDesc\": \"Usually goes first.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bullet-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"confusion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confusion_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Confusion\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confusion.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confusion\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 50,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 47,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"magnetrise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Magnet Rise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/magnetrise.shtml\",\n                        \"shortDesc\": \"For 5 turns, the user has immunity to Ground.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/magnet-rise\",\n                        \"target\": \"Self\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"metalclaw\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Metal_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Metal Claw\",\n                        \"pp\": 35,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/metalclaw.shtml\",\n                        \"shortDesc\": \"10% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/metal-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 44,\n                      \"move\": {\n                        \"key\": \"meteormash\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Meteor_Mash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 20% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Meteor Mash\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/meteormash.shtml\",\n                        \"shortDesc\": \"20% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/meteor-mash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 26,\n                      \"move\": {\n                        \"key\": \"miracleeye\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Miracle_Eye_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"As long as the target remains active, its evasiveness stat stage is ignored during accuracy checks against it if it is greater than 0, and Psychic-type attacks can hit the target if it is a Dark type. Fails if the target is already affected, or affected by Foresight or Odor Sleuth.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Miracle Eye\",\n                        \"pp\": 40,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/miracleeye.shtml\",\n                        \"shortDesc\": \"Psychic hits Dark. Evasiveness ignored.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/miracle-eye\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 38,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 23,\n                      \"move\": {\n                        \"key\": \"pursuit\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pursuit_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"If an opposing Pokémon switches out this turn, this move hits that Pokémon before it leaves the field, even if it was not the original target. If the user moves after an opponent using Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokémon does not become active until the end of the turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Pursuit\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pursuit.shtml\",\n                        \"shortDesc\": \"If a foe is switching out, hits it at 2x power.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pursuit\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 35,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"takedown\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Take Down\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                        \"shortDesc\": \"Has 1/4 recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 29,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                },\n                \"generation7\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"bulldoze\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bulldoze\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                        \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"confide\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Confide\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                        \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"earthquake\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"100\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Damage doubles if the target is using Dig.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Earthquake\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 180\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"explosion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"250\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Explosion_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"The user faints after using this move, even if this move fails for having no target. This move is prevented from executing if any active Pokémon has the Damp Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Explosion\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/explosion.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. The user faints.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/explosion\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"flashcannon\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_Cannon_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flash Cannon\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flashcannon.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash-cannon\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"grassknot\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Grass_Knot_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"This move's power is 20 if the target weighs less than 10 kg, 40 if less than 25 kg, 60 if less than 50 kg, 80 if less than 100 kg, 100 if less than 200 kg, and 120 if greater than or equal to 200 kg.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Grass Knot\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/grassknot.shtml\",\n                        \"shortDesc\": \"More power the heavier the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/grass-knot\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Grass\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"gyroball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gyro_Ball_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Power is equal to (25 * target's current Speed / user's current Speed) + 1, rounded down, but not more than 150. If the user's current Speed is 0, this move's power is 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Gyro Ball\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gyroball.shtml\",\n                        \"shortDesc\": \"More power the slower the user than the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gyro-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"lightscreen\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Light Screen\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                        \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"psychup\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psych_Up_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user copies all of the target's current stat stage changes.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Psych Up\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychup.shtml\",\n                        \"shortDesc\": \"Copies the target's current stat stages.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psych-up\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"psyshock\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psyshock_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Deals damage to the target based on its Defense instead of Special Defense.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psyshock\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psyshock.shtml\",\n                        \"shortDesc\": \"Damages target based on Defense, not Sp. Def.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psyshock\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"reflect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Reflect\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                        \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"rockpolish\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Polish_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rock Polish\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockpolish.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-polish\",\n                        \"target\": \"Self\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"round\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Round\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                        \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"sandstorm\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sandstorm_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"For 5 turns, the weather becomes Sandstorm. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are a Ground, Rock, or Steel type, or have the Magic Guard, Overcoat, Sand Force, Sand Rush, or Sand Veil Abilities. During the effect, the Special Defense of Rock-type Pokémon is multiplied by 1.5 when taking damage from a special attack. Lasts for 8 turns if the user is holding Smooth Rock. Fails if the current weather is Sandstorm.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sandstorm\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandstorm.shtml\",\n                        \"shortDesc\": \"For 5 turns, a sandstorm rages. Rock: 1.5x SpD.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sandstorm\",\n                        \"target\": \"All\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"shadowball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Shadow Ball\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"sludgebomb\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sludge_Bomb_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to poison the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Sludge Bomb\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sludgebomb.shtml\",\n                        \"shortDesc\": \"30% chance to poison the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sludge-bomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"allyswitch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ally_Switch_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user swaps positions with its ally. Fails if the user is the only Pokémon on its side. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails or if the user's last move used is not Ally Switch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Ally Switch\",\n                        \"pp\": 15,\n                        \"priority\": 2,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/allyswitch.shtml\",\n                        \"shortDesc\": \"User and ally swap positions; using again can fail.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ally-switch\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"gravity\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gravity_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the evasiveness of all active Pokémon is multiplied by 0.6. At the time of use, Bounce, Fly, Magnet Rise, Sky Drop, and Telekinesis end immediately for all active Pokémon. During the effect, Bounce, Fly, Flying Press, High Jump Kick, Jump Kick, Magnet Rise, Sky Drop, Splash, and Telekinesis are prevented from being used by all active Pokémon. Ground-type attacks, Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability can affect Flying types or Pokémon with the Levitate Ability. Fails if this move is already in effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Gravity\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gravity.shtml\",\n                        \"shortDesc\": \"5 turns: no Ground immunities, 1.67x accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gravity\",\n                        \"target\": \"All\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"icepunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to freeze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Ice Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                        \"shortDesc\": \"10% chance to freeze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"icywind\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"55\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Icy Wind\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                        \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"ironhead\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Iron Head\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"magnetrise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Magnet Rise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/magnetrise.shtml\",\n                        \"shortDesc\": \"For 5 turns, the user has immunity to Ground.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/magnet-rise\",\n                        \"target\": \"Self\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"signalbeam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Signal_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Signal Beam\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/signalbeam.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/signal-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Bug\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"stealthrock\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stealth_Rock_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in. Fails if the effect is already active on the opposing side. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Stealth Rock\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stealthrock.shtml\",\n                        \"shortDesc\": \"Hurts foes on switch-in. Factors Rock weakness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stealth-rock\",\n                        \"target\": \"Foe's Side\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"telekinesis\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Telekinesis_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 3 turns, the target cannot avoid any attacks made against it, other than OHKO moves, as long as it remains active. During the effect, the target is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the target uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the target is under any of their effects. Fails if the target is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows. The target is immune to this move on use if its species is Diglett, Dugtrio, Alolan Diglett, Alolan Dugtrio, Sandygast, Palossand, or Gengar while Mega-Evolved. Mega Gengar cannot be under this effect by any means.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Telekinesis\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/telekinesis.shtml\",\n                        \"shortDesc\": \"For 3 turns, target floats but moves can't miss it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/telekinesis\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"thunderpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Thunder Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderpunch.shtml\",\n                        \"shortDesc\": \"10% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"trick\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trick_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail or Z-Crystal, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, a Drive, or a Memory to or from a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally, respectively. The target is immune to this move if it has the Sticky Hold Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Trick\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trick.shtml\",\n                        \"shortDesc\": \"User switches its held item with the target's.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trick\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 7,\n                      \"level\": 41,\n                      \"move\": {\n                        \"key\": \"agility\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Agility\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 26,\n                      \"move\": {\n                        \"key\": \"bulletpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bullet_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Bullet Punch\",\n                        \"pp\": 30,\n                        \"priority\": 1,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulletpunch.shtml\",\n                        \"shortDesc\": \"Usually goes first.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bullet-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"confusion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confusion_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Confusion\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confusion.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confusion\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 50,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 47,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"magnetrise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Magnet Rise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/magnetrise.shtml\",\n                        \"shortDesc\": \"For 5 turns, the user has immunity to Ground.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/magnet-rise\",\n                        \"target\": \"Self\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"metalclaw\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Metal_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Metal Claw\",\n                        \"pp\": 35,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/metalclaw.shtml\",\n                        \"shortDesc\": \"10% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/metal-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 44,\n                      \"move\": {\n                        \"key\": \"meteormash\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Meteor_Mash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 20% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Meteor Mash\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/meteormash.shtml\",\n                        \"shortDesc\": \"20% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/meteor-mash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 29,\n                      \"move\": {\n                        \"key\": \"miracleeye\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Miracle_Eye_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"As long as the target remains active, its evasiveness stat stage is ignored during accuracy checks against it if it is greater than 0, and Psychic-type attacks can hit the target if it is a Dark type. Fails if the target is already affected, or affected by Foresight or Odor Sleuth.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Miracle Eye\",\n                        \"pp\": 40,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/miracleeye.shtml\",\n                        \"shortDesc\": \"Psychic hits Dark. Evasiveness ignored.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/miracle-eye\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 38,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 23,\n                      \"move\": {\n                        \"key\": \"pursuit\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pursuit_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"If an opposing Pokémon switches out this turn, this move hits that Pokémon before it leaves the field, even if it was not the original target. If the user moves after an opponent using Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokémon does not become active until the end of the turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Pursuit\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pursuit.shtml\",\n                        \"shortDesc\": \"If a foe is switching out, hits it at 2x power.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pursuit\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 35,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"takedown\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Take Down\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                        \"shortDesc\": \"Has 1/4 recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 32,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                },\n                \"generation8\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"agility\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Agility\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"bodyslam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"85\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Body Slam\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"bulldoze\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bulldoze\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                        \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"earthquake\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"100\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Damage doubles if the target is using Dig.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Earthquake\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                        \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 180\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"endure\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Endure\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                        \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"expandingforce\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Expanding_Force_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": null,\n                        \"desc\": \"If the current terrain is Psychic Terrain and the user is grounded, this move hits all opposing Pokémon and has its power multiplied by 1.5.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Expanding Force\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/expandingforce.shtml\",\n                        \"shortDesc\": \"User on Psychic Terrain: 1.5x power, hits foes.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/expanding-force\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"flashcannon\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_Cannon_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flash Cannon\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flashcannon.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash-cannon\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"focuspunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The user loses its focus and does nothing if it is hit by a damaging attack this turn before it can execute the move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Focus Punch\",\n                        \"pp\": 20,\n                        \"priority\": -3,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focuspunch.shtml\",\n                        \"shortDesc\": \"Fails if the user takes damage before it hits.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"futuresight\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Future_Sight_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Deals damage two turns after this move is used. At the end of that turn, the damage is calculated at that time and dealt to the Pokémon at the position the target had when the move was used. If the user is no longer active at the time, damage is calculated based on the user's natural Special Attack stat, types, and level, with no boosts from its held item or Ability. Fails if this move or Doom Desire is already in effect for the target's position.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Future Sight\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/futuresight.shtml\",\n                        \"shortDesc\": \"Hits two turns after being used.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/future-sight\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"gigaimpact\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Giga Impact\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"grassknot\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Grass_Knot_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"This move's power is 20 if the target weighs less than 10 kg, 40 if less than 25 kg, 60 if less than 50 kg, 80 if less than 100 kg, 100 if less than 200 kg, and 120 if greater than or equal to 200 kg.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Grass Knot\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/grassknot.shtml\",\n                        \"shortDesc\": \"More power the heavier the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/grass-knot\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Grass\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"gravity\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gravity_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the evasiveness of all active Pokémon is multiplied by 0.6. At the time of use, Bounce, Fly, Magnet Rise, Sky Drop, and Telekinesis end immediately for all active Pokémon. During the effect, Bounce, Fly, Flying Press, High Jump Kick, Jump Kick, Magnet Rise, Sky Drop, Splash, and Telekinesis are prevented from being used by all active Pokémon. Ground-type attacks, Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability can affect Flying types or Pokémon with the Levitate Ability. Fails if this move is already in effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Gravity\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gravity.shtml\",\n                        \"shortDesc\": \"5 turns: no Ground immunities, 1.67x accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gravity\",\n                        \"target\": \"All\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"gyroball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gyro_Ball_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Power is equal to (25 * target's current Speed / user's current Speed) + 1, rounded down, but not more than 150. If the user's current Speed is 0, this move's power is 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Gyro Ball\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gyroball.shtml\",\n                        \"shortDesc\": \"More power the slower the user than the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/gyro-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"hardpress\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"Power varies between 1 and 100, and is greater the more HP the target has\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hard_Press_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": null,\n                        \"desc\": \"Power is equal to 100 * (target's current HP / target's maximum HP), rounded half down, but not less than 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Hard Press\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hardpress.shtml\",\n                        \"shortDesc\": \"More power the more HP the target has left.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hard-press\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"heavyslam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heavy_Slam_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The power of this move depends on (user's weight / target's weight), rounded down. Power is equal to 120 if the result is 5 or more, 100 if 4, 80 if 3, 60 if 2, and 40 if 1 or less. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Heavy Slam\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heavyslam.shtml\",\n                        \"shortDesc\": \"More power the heavier the user than the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heavy-slam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"icepunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to freeze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Ice Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                        \"shortDesc\": \"10% chance to freeze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"icywind\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"55\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Icy Wind\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                        \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Ice\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"ironhead\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Iron Head\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"lightscreen\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Light Screen\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                        \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"metalclaw\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Metal_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Metal Claw\",\n                        \"pp\": 35,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/metalclaw.shtml\",\n                        \"shortDesc\": \"10% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/metal-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"meteorbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Meteor_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": null,\n                        \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Special Attack by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Meteor Beam\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/meteorbeam.shtml\",\n                        \"shortDesc\": \"Raises user's Sp. Atk by 1 on turn 1. Hits turn 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/meteor-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"psychicnoise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_Noise_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": null,\n                        \"desc\": \"For 2 turns, the target is prevented from restoring any HP as long as it remains active. During the effect, healing and draining moves are unusable, and Abilities and items that grant healing will not heal the user. If an affected Pokémon uses Baton Pass, the replacement will remain unable to restore its HP. Pain Split and the Regenerator Ability are unaffected.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Psychic Noise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychicnoise.shtml\",\n                        \"shortDesc\": \"For 2 turns, the target is prevented from healing.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic-noise\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"psychup\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psych_Up_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user copies all of the target's current stat stage changes.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Psych Up\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychup.shtml\",\n                        \"shortDesc\": \"Copies the target's current stat stages.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psych-up\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"psyshock\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psyshock_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Deals damage to the target based on its Defense instead of Special Defense.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psyshock\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psyshock.shtml\",\n                        \"shortDesc\": \"Damages target based on Defense, not Sp. Def.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psyshock\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"reflect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Reflect\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                        \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"sandstorm\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sandstorm_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"For 5 turns, the weather becomes Sandstorm. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are a Ground, Rock, or Steel type, or have the Magic Guard, Overcoat, Sand Force, Sand Rush, or Sand Veil Abilities. During the effect, the Special Defense of Rock-type Pokémon is multiplied by 1.5 when taking damage from a special attack. Lasts for 8 turns if the user is holding Smooth Rock. Fails if the current weather is Sandstorm.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sandstorm\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandstorm.shtml\",\n                        \"shortDesc\": \"For 5 turns, a sandstorm rages. Rock: 1.5x SpD.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sandstorm\",\n                        \"target\": \"All\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"shadowball\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Shadow Ball\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"sludgebomb\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sludge_Bomb_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to poison the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Sludge Bomb\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sludgebomb.shtml\",\n                        \"shortDesc\": \"30% chance to poison the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sludge-bomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"stealthrock\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stealth_Rock_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in. Fails if the effect is already active on the opposing side. Foes lose 1/32, 1/16, 1/8, 1/4, or 1/2 of their maximum HP, rounded down, based on their weakness to the Rock type; 0.25x, 0.5x, neutral, 2x, or 4x, respectively. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Stealth Rock\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stealthrock.shtml\",\n                        \"shortDesc\": \"Hurts foes on switch-in. Factors Rock weakness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stealth-rock\",\n                        \"target\": \"Foe's Side\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"steelbeam\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"140\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": null,\n                        \"desc\": \"Whether or not this move is successful and even if it would cause fainting, the user loses 1/2 of its maximum HP, rounded up, unless the user has the Magic Guard Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Steel Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelbeam.shtml\",\n                        \"shortDesc\": \"User loses 50% max HP.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-beam\",\n                        \"target\": \"All Adjacent\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"swift\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Swift\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"takedown\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Take Down\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                        \"shortDesc\": \"Has 1/4 recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"terablast\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": null,\n                        \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Tera Blast\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                        \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"thunderpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Thunder Punch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderpunch.shtml\",\n                        \"shortDesc\": \"10% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"trailblaze\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Trailblaze\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                        \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Grass\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"trick\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trick_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail or Z-Crystal, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, a Drive, or a Memory to or from a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally, respectively. The target is immune to this move if it has the Sticky Hold Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Trick\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trick.shtml\",\n                        \"shortDesc\": \"User switches its held item with the target's.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trick\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 9,\n                      \"level\": 66,\n                      \"move\": {\n                        \"key\": \"agility\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Agility\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                        \"shortDesc\": \"Raises the user's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"bulletpunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bullet_Punch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Bullet Punch\",\n                        \"pp\": 30,\n                        \"priority\": 1,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulletpunch.shtml\",\n                        \"shortDesc\": \"Usually goes first.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bullet-punch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 0,\n                      \"move\": {\n                        \"key\": \"confusion\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confusion_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to confuse the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Confusion\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confusion.shtml\",\n                        \"shortDesc\": \"10% chance to confuse the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confusion\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 18,\n                      \"move\": {\n                        \"key\": \"flashcannon\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_Cannon_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flash Cannon\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flashcannon.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flash-cannon\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"honeclaws\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Hone Claws\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                        \"target\": \"Self\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 74,\n                      \"move\": {\n                        \"key\": \"hyperbeam\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"150\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 150,\n                        \"name\": \"Hyper Beam\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                        \"shortDesc\": \"User cannot move next turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 200\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 58,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 12,\n                      \"move\": {\n                        \"key\": \"magnetrise\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magnet_Rise_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"For 5 turns, the user is immune to Ground-type attacks and the effects of Spikes, Toxic Spikes, Sticky Web, and the Arena Trap Ability as long as it remains active. If the user uses Baton Pass, the replacement will gain the effect. Ingrain, Smack Down, Thousand Arrows, and Iron Ball override this move if the user is under any of their effects. Fails if the user is already under this effect or the effects of Ingrain, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Magnet Rise\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/magnetrise.shtml\",\n                        \"shortDesc\": \"For 5 turns, the user has immunity to Ground.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/magnet-rise\",\n                        \"target\": \"Self\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 0,\n                      \"move\": {\n                        \"key\": \"metalclaw\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Metal_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Metal Claw\",\n                        \"pp\": 35,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/metalclaw.shtml\",\n                        \"shortDesc\": \"10% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/metal-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 50,\n                      \"move\": {\n                        \"key\": \"meteormash\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Meteor_Mash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 20% chance to raise the user's Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Meteor Mash\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/meteormash.shtml\",\n                        \"shortDesc\": \"20% chance to raise the user's Attack by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/meteor-mash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 34,\n                      \"move\": {\n                        \"key\": \"psychic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Psychic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychic.shtml\",\n                        \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 42,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"tackle\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Tackle\",\n                        \"pp\": 35,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 26,\n                      \"move\": {\n                        \"key\": \"takedown\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Take Down\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                        \"shortDesc\": \"Has 1/4 recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 6,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                }\n              },\n              \"key\": \"metagross\",\n              \"eggGroups\": [\"Mineral\"],\n              \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 3, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n              \"evolutionLevel\": \"45\",\n              \"flavorTexts\": [\n                { \"flavor\": \"Metang combined to form it. With four brains, it has the intelligence of a supercomputer.\", \"game\": \"Legends: Z-A\" }\n              ],\n              \"forme\": null,\n              \"formeLetter\": null,\n              \"gender\": { \"female\": \"0%\", \"male\": \"0%\" },\n              \"height\": 1.6,\n              \"isEggObtainable\": true,\n              \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/metagross.gif\",\n              \"levellingRate\": \"Slow\",\n              \"maximumHatchTime\": 10536,\n              \"minimumHatchTime\": 10280,\n              \"num\": 376,\n              \"otherFormes\": [\"metagrossmega\"],\n              \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/metagross\",\n              \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/metagross.gif\",\n              \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/metagross.gif\",\n              \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/metagross\",\n              \"baseForme\": null,\n              \"smogonTier\": \"UU\",\n              \"species\": \"metagross\",\n              \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/metagross.gif\",\n              \"types\": [\n                {\n                  \"name\": \"Steel\",\n                  \"matchup\": {\n                    \"attacking\": {\n                      \"doubleEffectiveTypes\": [],\n                      \"doubleResistedTypes\": [],\n                      \"effectiveTypes\": [\"fairy\", \"ice\", \"rock\"],\n                      \"effectlessTypes\": [],\n                      \"normalTypes\": [\"bug\", \"dark\", \"dragon\", \"fighting\", \"flying\", \"ghost\", \"grass\", \"ground\", \"normal\", \"poison\", \"psychic\"],\n                      \"resistedTypes\": [\"electric\", \"fire\", \"steel\", \"water\"]\n                    },\n                    \"defending\": {\n                      \"doubleEffectiveTypes\": [],\n                      \"doubleResistedTypes\": [],\n                      \"effectiveTypes\": [\"fighting\", \"fire\", \"ground\"],\n                      \"effectlessTypes\": [\"poison\"],\n                      \"normalTypes\": [\"dark\", \"electric\", \"ghost\", \"water\"],\n                      \"resistedTypes\": [\"bug\", \"dragon\", \"fairy\", \"flying\", \"grass\", \"ice\", \"normal\", \"psychic\", \"rock\", \"steel\"]\n                    }\n                  }\n                },\n                {\n                  \"name\": \"Psychic\",\n                  \"matchup\": {\n                    \"attacking\": {\n                      \"doubleEffectiveTypes\": [],\n                      \"doubleResistedTypes\": [],\n                      \"effectiveTypes\": [\"fighting\", \"poison\"],\n                      \"effectlessTypes\": [\"dark\"],\n                      \"normalTypes\": [\n                        \"bug\",\n                        \"dragon\",\n                        \"electric\",\n                        \"fairy\",\n                        \"fire\",\n                        \"flying\",\n                        \"ghost\",\n                        \"grass\",\n                        \"ground\",\n                        \"ice\",\n                        \"normal\",\n                        \"rock\",\n                        \"water\"\n                      ],\n                      \"resistedTypes\": [\"psychic\", \"steel\"]\n                    },\n                    \"defending\": {\n                      \"doubleEffectiveTypes\": [],\n                      \"doubleResistedTypes\": [],\n                      \"effectiveTypes\": [\"bug\", \"dark\", \"ghost\"],\n                      \"effectlessTypes\": [],\n                      \"normalTypes\": [\n                        \"dragon\",\n                        \"electric\",\n                        \"fairy\",\n                        \"fire\",\n                        \"flying\",\n                        \"grass\",\n                        \"ground\",\n                        \"ice\",\n                        \"normal\",\n                        \"poison\",\n                        \"rock\",\n                        \"steel\",\n                        \"water\"\n                      ],\n                      \"resistedTypes\": [\"fighting\", \"psychic\"]\n                    }\n                  }\n                }\n              ],\n              \"baseSpecies\": null,\n              \"baseStats\": { \"hp\": 80, \"attack\": 135, \"defense\": 130, \"specialattack\": 95, \"specialdefense\": 90, \"speed\": 70 },\n              \"baseStatsTotal\": 600,\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/metagross_(Pokémon)\",\n              \"catchRate\": { \"base\": 3, \"percentageWithOrdinaryPokeballAtFullHealth\": \"1.6%\" },\n              \"classification\": \"Iron Leg Pokémon\",\n              \"respelling\": \"MET-uh-gross\",\n              \"ipa\": \"/ˈmɛtəɡroʊs/\",\n              \"color\": \"Blue\",\n              \"cosmeticFormes\": null,\n              \"cry\": \"https://play.pokemonshowdown.com/audio/cries/metagross.mp3\",\n              \"weight\": 550,\n              \"legendary\": false,\n              \"mythical\": false\n            }\n          ],\n          \"preevolutions\": null\n        }\n      ],\n      \"preevolutions\": null\n    }\n  }\n}\n"
  },
  {
    "path": "tests/testUtils/full-data-responses/dragonair.json",
    "content": "{\n  \"data\": {\n    \"getPokemon\": {\n      \"abilities\": {\n        \"first\": {\n          \"name\": \"Shed Skin\",\n          \"key\": \"shedskin\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shed_Skin_(Ability)\",\n          \"desc\": \"This Pokémon has a 33% chance to have its non-volatile status condition cured at the end of each turn.\",\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/shed_skin.shtml\",\n          \"shortDesc\": \"This Pokémon has a 33% chance to have its status cured at the end of each turn.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/shed_skin\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"second\": null,\n        \"hidden\": {\n          \"name\": \"Marvel Scale\",\n          \"key\": \"marvelscale\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Marvel_Scale_(Ability)\",\n          \"desc\": \"If this Pokémon has a non-volatile status condition, its Defense is multiplied by 1.5.\",\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/marvel_scale.shtml\",\n          \"shortDesc\": \"If this Pokémon has a non-volatile status condition, its Defense is multiplied by 1.5.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/marvel_scale\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"special\": null\n      },\n      \"learnsets\": {\n        \"generation3\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"hail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"shockwave\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Shock Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"surf\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Damage doubles if the target is using Dive.\",\n                \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Surf\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"thunder\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 40,\n                \"name\": \"Thunder\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"thunderbolt\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Thunderbolt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                \"shortDesc\": \"10% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"waterfall\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Waterfall\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"waterpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 20% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Water Pulse\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                \"shortDesc\": \"20% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Water\",\n                \"zMovePower\": 120\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"bodyslam\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Body Slam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"mimic\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Mimic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                \"shortDesc\": \"The last move the target used replaces this one.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 3,\n              \"level\": 38,\n              \"move\": {\n                \"key\": \"agility\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Agility\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                \"shortDesc\": \"Raises the user's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 22,\n              \"move\": {\n                \"key\": \"dragonrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Deals 40 HP of damage to the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Rage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 65,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 56,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 47,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 29,\n              \"move\": {\n                \"key\": \"slam\",\n                \"accuracy\": 75,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Slam\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"twister\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Twister\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"wrap\",\n                \"accuracy\": 90,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Wrap\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ]\n        },\n        \"generation4\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"captivate\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Captivate\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"hail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"naturalgift\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Natural Gift\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"shockwave\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Shock Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"surf\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Damage doubles if the target is using Dive.\",\n                \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Surf\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"thunder\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 40,\n                \"name\": \"Thunder\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"thunderbolt\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Thunderbolt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                \"shortDesc\": \"10% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"waterfall\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Waterfall\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"waterpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 20% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Water Pulse\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                \"shortDesc\": \"20% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Water\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"whirlpool\",\n                \"accuracy\": 85,\n                \"basePower\": \"35\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Whirlpool_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": \"The Pokémon can dismiss small whirlpools in the water. Whirlpool is taught to Pokémon with HM06 in generation II and generation IV's HeartGold and SoulSilver as HM05\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Whirlpool\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/whirlpool.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/whirlpool\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 100\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"twister\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Twister\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 4,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"agility\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Agility\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                \"shortDesc\": \"Raises the user's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 33,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 53,\n              \"move\": {\n                \"key\": \"dragondance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 15,\n              \"move\": {\n                \"key\": \"dragonrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Deals 40 HP of damage to the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Rage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 39,\n              \"move\": {\n                \"key\": \"dragonrush\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Rush\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 67,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 61,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 47,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 21,\n              \"move\": {\n                \"key\": \"slam\",\n                \"accuracy\": 75,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Slam\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"twister\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Twister\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"wrap\",\n                \"accuracy\": 90,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Wrap\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ]\n        },\n        \"generation5\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"hail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"incinerate\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Incinerate\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"lightscreen\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Light Screen\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"surf\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Damage doubles if the target is using Dive.\",\n                \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Surf\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"thunder\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 40,\n                \"name\": \"Thunder\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"thunderbolt\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Thunderbolt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                \"shortDesc\": \"10% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"waterfall\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Waterfall\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"bind\",\n                \"accuracy\": 85,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bind_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Bind\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bind.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bind\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 5,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"agility\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Agility\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                \"shortDesc\": \"Raises the user's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 39,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 61,\n              \"move\": {\n                \"key\": \"dragondance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 15,\n              \"move\": {\n                \"key\": \"dragonrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Deals 40 HP of damage to the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Rage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 47,\n              \"move\": {\n                \"key\": \"dragonrush\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Rush\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 33,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 75,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 67,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 53,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 21,\n              \"move\": {\n                \"key\": \"slam\",\n                \"accuracy\": 75,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Slam\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"twister\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Twister\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"wrap\",\n                \"accuracy\": 90,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Wrap\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ]\n        },\n        \"generation6\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"confide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Confide\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"hail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"incinerate\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Incinerate\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"lightscreen\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Light Screen\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"surf\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Damage doubles if the target is using Dive.\",\n                \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Surf\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"thunder\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 40,\n                \"name\": \"Thunder\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"thunderbolt\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Thunderbolt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                \"shortDesc\": \"10% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"waterfall\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Waterfall\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"bind\",\n                \"accuracy\": 85,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bind_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Bind\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bind.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bind\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"shockwave\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Shock Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"waterpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 20% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Water Pulse\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                \"shortDesc\": \"20% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Water\",\n                \"zMovePower\": 120\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 6,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"agility\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Agility\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                \"shortDesc\": \"Raises the user's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 39,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 61,\n              \"move\": {\n                \"key\": \"dragondance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 15,\n              \"move\": {\n                \"key\": \"dragonrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Deals 40 HP of damage to the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Rage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 47,\n              \"move\": {\n                \"key\": \"dragonrush\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Rush\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 33,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 75,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 67,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 53,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 21,\n              \"move\": {\n                \"key\": \"slam\",\n                \"accuracy\": 75,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Slam\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"twister\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Twister\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"wrap\",\n                \"accuracy\": 90,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Wrap\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ]\n        },\n        \"generation7\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"brutalswing\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brutal_Swing_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Brutal Swing\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brutalswing.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent Pokémon.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brutal-swing\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"confide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Confide\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"lightscreen\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Light Screen\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"surf\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Damage doubles if the target is using Dive.\",\n                \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Surf\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"thunder\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 40,\n                \"name\": \"Thunder\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"thunderbolt\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Thunderbolt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                \"shortDesc\": \"10% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"waterfall\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Waterfall\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bind\",\n                \"accuracy\": 85,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bind_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Bind\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bind.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bind\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"shockwave\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Shock Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"waterpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 20% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Water Pulse\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                \"shortDesc\": \"20% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Water\",\n                \"zMovePower\": 120\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"agility\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Agility\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                \"shortDesc\": \"Raises the user's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Bide\",\n                \"pp\": 10,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bodyslam\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Body Slam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bubblebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bubble_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Bubble Beam\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bubblebeam.shtml\",\n                \"shortDesc\": \"10% chance to lower the target's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bubble-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"curse\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Curse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                \"target\": \"Random\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"detect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Detect\",\n                \"pp\": 5,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                \"target\": \"Self\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"dragonbreath\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Breath\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"dragonrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Deals 40 HP of damage to the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Rage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"horndrill\",\n                \"accuracy\": 30,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Horn_Drill_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + 30)%, and fails if the target is at a higher level. Pokémon with the Sturdy Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Horn Drill\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/horndrill.shtml\",\n                \"shortDesc\": \"OHKOs the target. Fails if user is a lower level.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/horn-drill\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"mimic\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Mimic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                \"shortDesc\": \"The last move the target used replaces this one.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rage\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rage\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"reflect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Reflect\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"skullbash\",\n                \"accuracy\": 100,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Skull Bash\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"slam\",\n                \"accuracy\": 75,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Slam\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"surf\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Damage doubles if the target is using Dive.\",\n                \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Surf\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"thunder\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 40,\n                \"name\": \"Thunder\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"thunderbolt\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Thunderbolt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                \"shortDesc\": \"10% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"twister\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Twister\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"waterfall\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Waterfall\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"watergun\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Gun_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Water Gun\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/watergun.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-gun\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"wrap\",\n                \"accuracy\": 90,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Wrap\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"zapcannon\",\n                \"accuracy\": 50,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zap_Cannon_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 100% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Zap Cannon\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zapcannon.shtml\",\n                \"shortDesc\": \"100% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zap-cannon\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 190\n              }\n            }\n          ],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 7,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"agility\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Agility\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                \"shortDesc\": \"Raises the user's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 39,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 61,\n              \"move\": {\n                \"key\": \"dragondance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 15,\n              \"move\": {\n                \"key\": \"dragonrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Deals 40 HP of damage to the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Rage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 47,\n              \"move\": {\n                \"key\": \"dragonrush\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Rush\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 33,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 75,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 67,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 53,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 21,\n              \"move\": {\n                \"key\": \"slam\",\n                \"accuracy\": 75,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Slam\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"twister\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Twister\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"wrap\",\n                \"accuracy\": 90,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Wrap\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ]\n        },\n        \"generation8\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"agility\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Agility\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                \"shortDesc\": \"Raises the user's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"bodyslam\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Body Slam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"breakingswipe\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Breaking_Swipe_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": null,\n                \"desc\": \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Breaking Swipe\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/breakingswipe.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/breaking-swipe\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"chillingwater\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Chilling_Water_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Chilling Water\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/chillingwater.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/chilling-water\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dragoncheer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Cheer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": null,\n                \"desc\": \"Raises the target's chance for a critical hit by 1 stage, or by 2 stages if the target is Dragon type. Fails if there is no ally adjacent to the user, or if the target already has this effect or the Focus Energy effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Cheer\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragoncheer.shtml\",\n                \"shortDesc\": \"Ally: Crit ratio +1, or +2 if ally is Dragon type.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-cheer\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dragondance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"firespin\",\n                \"accuracy\": 85,\n                \"basePower\": \"35\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Spin_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fire Spin\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firespin.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-spin\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"gigaimpact\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Giga Impact\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"haze\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Haze_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Resets the stat stages of all active Pokémon to 0.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Haze\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/haze.shtml\",\n                \"shortDesc\": \"Eliminates all stat changes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/haze\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"hydropump\",\n                \"accuracy\": 80,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hydro_Pump_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Hydro Pump\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hydropump.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hydro-pump\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"ironhead\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Head\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"lightscreen\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Light Screen\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"scaleshot\",\n                \"accuracy\": 90,\n                \"basePower\": \"25\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scale_Shot_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": null,\n                \"desc\": \"Hits two to five times. Lowers the user's Defense by 1 stage and raises the user's Speed by 1 stage after the last hit. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Scale Shot\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaleshot.shtml\",\n                \"shortDesc\": \"Hits 2-5 times. User: -1 Def, +1 Spe after last hit.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scale-shot\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"surf\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Damage doubles if the target is using Dive.\",\n                \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Surf\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"terablast\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": null,\n                \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tera Blast\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"thunder\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 40,\n                \"name\": \"Thunder\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"thunderbolt\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Thunderbolt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                \"shortDesc\": \"10% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"waterfall\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Waterfall\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"waterpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 20% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Water Pulse\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                \"shortDesc\": \"20% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Water\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"weatherball\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Weather Ball\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 9,\n              \"level\": 20,\n              \"move\": {\n                \"key\": \"agility\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Agility\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                \"shortDesc\": \"Raises the user's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 33,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 60,\n              \"move\": {\n                \"key\": \"dragondance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 39,\n              \"move\": {\n                \"key\": \"dragonrush\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Rush\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 15,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 74,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 67,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 53,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 46,\n              \"move\": {\n                \"key\": \"safeguard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Safeguard\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"slam\",\n                \"accuracy\": 75,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Slam\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Thunder Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                \"shortDesc\": \"Paralyzes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"twister\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Twister\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"wrap\",\n                \"accuracy\": 90,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Wrap\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ]\n        }\n      },\n      \"key\": \"dragonair\",\n      \"eggGroups\": [\"Water 1\", \"Dragon\"],\n      \"evYields\": { \"hp\": 0, \"attack\": 2, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n      \"evolutionLevel\": \"30\",\n      \"flavorTexts\": [\n        { \"flavor\": \"Its crystalline orbs appear to give this Pokémon the power to freely control the weather.\", \"game\": \"Legends: Z-A\" }\n      ],\n      \"forme\": null,\n      \"formeLetter\": null,\n      \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n      \"height\": 4,\n      \"isEggObtainable\": true,\n      \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/dragonair.gif\",\n      \"levellingRate\": \"Slow\",\n      \"maximumHatchTime\": 10536,\n      \"minimumHatchTime\": 10280,\n      \"num\": 148,\n      \"otherFormes\": null,\n      \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/dragonair\",\n      \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/dragonair.gif\",\n      \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/dragonair.gif\",\n      \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/dragonair\",\n      \"baseForme\": null,\n      \"smogonTier\": \"NFE\",\n      \"species\": \"dragonair\",\n      \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/dragonair.gif\",\n      \"types\": [\n        {\n          \"name\": \"Dragon\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"dragon\"],\n              \"effectlessTypes\": [\"fairy\"],\n              \"normalTypes\": [\n                \"bug\",\n                \"dark\",\n                \"electric\",\n                \"fighting\",\n                \"fire\",\n                \"flying\",\n                \"ghost\",\n                \"grass\",\n                \"ground\",\n                \"ice\",\n                \"normal\",\n                \"poison\",\n                \"psychic\",\n                \"rock\",\n                \"water\"\n              ],\n              \"resistedTypes\": [\"steel\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"dragon\", \"fairy\", \"ice\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\"bug\", \"dark\", \"fighting\", \"flying\", \"ghost\", \"ground\", \"normal\", \"poison\", \"psychic\", \"rock\", \"steel\"],\n              \"resistedTypes\": [\"electric\", \"fire\", \"grass\", \"water\"]\n            }\n          }\n        }\n      ],\n      \"baseSpecies\": null,\n      \"baseStats\": { \"hp\": 61, \"attack\": 84, \"defense\": 65, \"specialattack\": 70, \"specialdefense\": 70, \"speed\": 70 },\n      \"baseStatsTotal\": 420,\n      \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/dragonair_(Pokémon)\",\n      \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n      \"classification\": \"Dragon Pokémon\",\n      \"respelling\": \"drag-uh-NAIR\",\n      \"ipa\": \"/dræɡəˈnɛər/\",\n      \"color\": \"Blue\",\n      \"cosmeticFormes\": null,\n      \"cry\": \"https://play.pokemonshowdown.com/audio/cries/dragonair.mp3\",\n      \"weight\": 16.5,\n      \"legendary\": false,\n      \"mythical\": false,\n      \"evolutions\": [\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Inner Focus\",\n              \"key\": \"innerfocus\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Inner_Focus_(Ability)\",\n              \"desc\": \"This Pokémon cannot be made to flinch. This Pokémon is immune to the effect of the Intimidate Ability.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/inner_focus.shtml\",\n              \"shortDesc\": \"This Pokémon cannot be made to flinch. Immune to Intimidate.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/inner_focus\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Multiscale\",\n              \"key\": \"multiscale\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Multiscale_(Ability)\",\n              \"desc\": null,\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/multiscale.shtml\",\n              \"shortDesc\": \"If this Pokémon is at full HP, damage taken from attacks is halved.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/multiscale\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shockwave\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Shock Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 38,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 65,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 56,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shockwave\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Shock Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"whirlpool\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"35\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Whirlpool_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": \"The Pokémon can dismiss small whirlpools in the water. Whirlpool is taught to Pokémon with HM06 in generation II and generation IV's HeartGold and SoulSilver as HM05\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Whirlpool\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/whirlpool.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/whirlpool\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"incinerate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Incinerate\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                    \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lightscreen\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Light Screen\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                    \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"bind\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bind_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Bind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bind.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bind\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 75,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"incinerate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Incinerate\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                    \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lightscreen\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Light Screen\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                    \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"bind\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bind_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Bind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bind.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bind\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shockwave\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Shock Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 75,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"brutalswing\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brutal_Swing_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Brutal Swing\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brutalswing.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent Pokémon.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brutal-swing\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lightscreen\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Light Screen\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                    \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bind\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bind_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Bind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bind.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bind\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shockwave\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Shock Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bubblebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bubble_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Bubble Beam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bubblebeam.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bubble-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragonbreath\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Breath\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"horndrill\",\n                    \"accuracy\": 30,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Horn_Drill_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + 30)%, and fails if the target is at a higher level. Pokémon with the Sturdy Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Horn Drill\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/horndrill.shtml\",\n                    \"shortDesc\": \"OHKOs the target. Fails if user is a lower level.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/horn-drill\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"watergun\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Gun_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Water Gun\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/watergun.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-gun\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"zapcannon\",\n                    \"accuracy\": 50,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zap_Cannon_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Zap Cannon\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zapcannon.shtml\",\n                    \"shortDesc\": \"100% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zap-cannon\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 190\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 75,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"breakingswipe\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Breaking_Swipe_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Breaking Swipe\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/breakingswipe.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/breaking-swipe\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"chillingwater\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Chilling_Water_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Chilling Water\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/chillingwater.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/chilling-water\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragoncheer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Cheer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": null,\n                    \"desc\": \"Raises the target's chance for a critical hit by 1 stage, or by 2 stages if the target is Dragon type. Fails if there is no ally adjacent to the user, or if the target already has this effect or the Focus Energy effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Cheer\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragoncheer.shtml\",\n                    \"shortDesc\": \"Ally: Crit ratio +1, or +2 if ally is Dragon type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-cheer\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"firespin\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"35\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Spin_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fire Spin\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firespin.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-spin\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"gigaimpact\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Giga Impact\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"haze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Haze_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Resets the stat stages of all active Pokémon to 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Haze\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/haze.shtml\",\n                    \"shortDesc\": \"Eliminates all stat changes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/haze\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hydropump\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hydro_Pump_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Hydro Pump\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hydropump.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hydro-pump\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"lightscreen\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Light Screen\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                    \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"scaleshot\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"25\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scale_Shot_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": null,\n                    \"desc\": \"Hits two to five times. Lowers the user's Defense by 1 stage and raises the user's Speed by 1 stage after the last hit. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scale Shot\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaleshot.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times. User: -1 Def, +1 Spe after last hit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scale-shot\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 60,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 74,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 46,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"dragonite\",\n          \"eggGroups\": [\"Water 1\", \"Dragon\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 3, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": \"55\",\n          \"flavorTexts\": [\n            { \"flavor\": \"It is said to make its home somewhere in the sea. It guides wrecked ships to shore.\", \"game\": \"Legends: Z-A\" }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n          \"height\": 2.2,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/dragonite.gif\",\n          \"levellingRate\": \"Slow\",\n          \"maximumHatchTime\": 10536,\n          \"minimumHatchTime\": 10280,\n          \"num\": 149,\n          \"otherFormes\": [\"dragonitemega\"],\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/dragonite\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/dragonite.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/dragonite.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/dragonite\",\n          \"baseForme\": null,\n          \"smogonTier\": \"OU\",\n          \"species\": \"dragonite\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/dragonite.gif\",\n          \"types\": [\n            {\n              \"name\": \"Dragon\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dragon\"],\n                  \"effectlessTypes\": [\"fairy\"],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dark\",\n                    \"electric\",\n                    \"fighting\",\n                    \"fire\",\n                    \"flying\",\n                    \"ghost\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"psychic\",\n                    \"rock\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dragon\", \"fairy\", \"ice\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dark\", \"fighting\", \"flying\", \"ghost\", \"ground\", \"normal\", \"poison\", \"psychic\", \"rock\", \"steel\"],\n                  \"resistedTypes\": [\"electric\", \"fire\", \"grass\", \"water\"]\n                }\n              }\n            },\n            {\n              \"name\": \"Flying\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"bug\", \"fighting\", \"grass\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"dark\", \"dragon\", \"fairy\", \"fire\", \"flying\", \"ghost\", \"ground\", \"ice\", \"normal\", \"poison\", \"psychic\", \"water\"],\n                  \"resistedTypes\": [\"electric\", \"rock\", \"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"electric\", \"ice\", \"rock\"],\n                  \"effectlessTypes\": [\"ground\"],\n                  \"normalTypes\": [\"dark\", \"dragon\", \"fairy\", \"fire\", \"flying\", \"ghost\", \"normal\", \"poison\", \"psychic\", \"steel\", \"water\"],\n                  \"resistedTypes\": [\"bug\", \"fighting\", \"grass\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 91, \"attack\": 134, \"defense\": 95, \"specialattack\": 100, \"specialdefense\": 100, \"speed\": 80 },\n          \"baseStatsTotal\": 600,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/dragonite_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Dragon Pokémon\",\n          \"respelling\": \"drag-uh-NITE\",\n          \"ipa\": \"/dræɡəˈnaɪt/\",\n          \"color\": \"Brown\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/dragonite.mp3\",\n          \"weight\": 210,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        }\n      ],\n      \"preevolutions\": [\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Shed Skin\",\n              \"key\": \"shedskin\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shed_Skin_(Ability)\",\n              \"desc\": \"This Pokémon has a 33% chance to have its non-volatile status condition cured at the end of each turn.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/shed_skin.shtml\",\n              \"shortDesc\": \"This Pokémon has a 33% chance to have its status cured at the end of each turn.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/shed_skin\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Marvel Scale\",\n              \"key\": \"marvelscale\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Marvel_Scale_(Ability)\",\n              \"desc\": \"If this Pokémon has a non-volatile status condition, its Defense is multiplied by 1.5.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/marvel_scale.shtml\",\n              \"shortDesc\": \"If this Pokémon has a non-volatile status condition, its Defense is multiplied by 1.5.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/marvel_scale\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shockwave\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Shock Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 38,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 65,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 56,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shockwave\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Shock Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"whirlpool\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"35\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Whirlpool_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": \"The Pokémon can dismiss small whirlpools in the water. Whirlpool is taught to Pokémon with HM06 in generation II and generation IV's HeartGold and SoulSilver as HM05\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Whirlpool\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/whirlpool.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/whirlpool\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"incinerate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Incinerate\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                    \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lightscreen\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Light Screen\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                    \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"bind\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bind_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Bind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bind.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bind\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 75,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"incinerate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Incinerate\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                    \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lightscreen\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Light Screen\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                    \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"bind\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bind_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Bind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bind.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bind\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shockwave\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Shock Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 75,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"brutalswing\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brutal_Swing_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Brutal Swing\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brutalswing.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent Pokémon.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brutal-swing\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lightscreen\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Light Screen\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                    \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bind\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bind_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Bind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bind.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bind\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shockwave\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Shock Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bubblebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bubble_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Bubble Beam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bubblebeam.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bubble-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragonbreath\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Breath\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"horndrill\",\n                    \"accuracy\": 30,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Horn_Drill_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + 30)%, and fails if the target is at a higher level. Pokémon with the Sturdy Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Horn Drill\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/horndrill.shtml\",\n                    \"shortDesc\": \"OHKOs the target. Fails if user is a lower level.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/horn-drill\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"watergun\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Gun_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Water Gun\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/watergun.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-gun\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"zapcannon\",\n                    \"accuracy\": 50,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zap_Cannon_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Zap Cannon\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zapcannon.shtml\",\n                    \"shortDesc\": \"100% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zap-cannon\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 190\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragonrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rage_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Deals 40 HP of damage to the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Rage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrage.shtml\",\n                    \"shortDesc\": \"Deals 40 HP of damage to the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 75,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"breakingswipe\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Breaking_Swipe_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Breaking Swipe\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/breakingswipe.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/breaking-swipe\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"chillingwater\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Chilling_Water_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Chilling Water\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/chillingwater.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/chilling-water\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragoncheer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Cheer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": null,\n                    \"desc\": \"Raises the target's chance for a critical hit by 1 stage, or by 2 stages if the target is Dragon type. Fails if there is no ally adjacent to the user, or if the target already has this effect or the Focus Energy effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Cheer\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragoncheer.shtml\",\n                    \"shortDesc\": \"Ally: Crit ratio +1, or +2 if ally is Dragon type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-cheer\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"firespin\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"35\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Spin_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fire Spin\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firespin.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-spin\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"gigaimpact\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Giga Impact\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"haze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Haze_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Resets the stat stages of all active Pokémon to 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Haze\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/haze.shtml\",\n                    \"shortDesc\": \"Eliminates all stat changes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/haze\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hydropump\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hydro_Pump_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Hydro Pump\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hydropump.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hydro-pump\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"lightscreen\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Light_Screen_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from special attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Light Screen\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lightscreen.shtml\",\n                    \"shortDesc\": \"For 5 turns, special damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/light-screen\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"scaleshot\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"25\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scale_Shot_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": null,\n                    \"desc\": \"Hits two to five times. Lowers the user's Defense by 1 stage and raises the user's Speed by 1 stage after the last hit. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scale Shot\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaleshot.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times. User: -1 Def, +1 Spe after last hit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scale-shot\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"surf\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Surf_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Damage doubles if the target is using Dive.\",\n                    \"isFieldMove\": \"The player can travel across water on the Pokémon's back. Surf can be taught to Pokémon with HMO3 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Surf\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/surf.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dive.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/surf\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"thunder\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 40,\n                    \"name\": \"Thunder\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunder.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"thunderbolt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunderbolt_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Thunderbolt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderbolt.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunderbolt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"waterfall\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Waterfall_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The player can climb up waterfalls on the Pokémon's back. Waterfall can be taught to Pokémon with HM07 in generations II, III and IV, and HM05 in generation 5 onwards. It was available in generation I as a level-up move, but did not have any out-of-battle effects.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Waterfall\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterfall.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/waterfall\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"agility\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Agility_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Agility\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/agility.shtml\",\n                    \"shortDesc\": \"Raises the user's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/agility\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 60,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"dragonrush\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Rush_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Rush\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonrush.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-rush\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 74,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 67,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 46,\n                  \"move\": {\n                    \"key\": \"safeguard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Safeguard_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the user and its party members cannot have non-volatile status conditions or confusion inflicted on them by other Pokémon. Pokémon on the user's side cannot become affected by Yawn but can fall asleep from its effect. It is removed from the user's side if the user or an ally is successfully hit by Defog. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Safeguard\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/safeguard.shtml\",\n                    \"shortDesc\": \"For 5 turns, protects user's party from status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/safeguard\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"slam\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Slam\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slam.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Wave_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Paralyzes the target. This move does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Thunder Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderwave.shtml\",\n                    \"shortDesc\": \"Paralyzes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"wrap\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wrap_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Wrap\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wrap.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wrap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"dratini\",\n          \"eggGroups\": [\"Water 1\", \"Dragon\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 1, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": null,\n          \"flavorTexts\": [\n            { \"flavor\": \"This Pokémon is full of life energy. It continually sheds its skin and grows steadily larger.\", \"game\": \"Legends: Z-A\" }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n          \"height\": 1.8,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/dratini.gif\",\n          \"levellingRate\": \"Slow\",\n          \"maximumHatchTime\": 10536,\n          \"minimumHatchTime\": 10280,\n          \"num\": 147,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/dratini\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/dratini.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/dratini.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/dratini\",\n          \"baseForme\": null,\n          \"smogonTier\": \"LC\",\n          \"species\": \"dratini\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/dratini.gif\",\n          \"types\": [\n            {\n              \"name\": \"Dragon\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dragon\"],\n                  \"effectlessTypes\": [\"fairy\"],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dark\",\n                    \"electric\",\n                    \"fighting\",\n                    \"fire\",\n                    \"flying\",\n                    \"ghost\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"psychic\",\n                    \"rock\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dragon\", \"fairy\", \"ice\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dark\", \"fighting\", \"flying\", \"ghost\", \"ground\", \"normal\", \"poison\", \"psychic\", \"rock\", \"steel\"],\n                  \"resistedTypes\": [\"electric\", \"fire\", \"grass\", \"water\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 41, \"attack\": 64, \"defense\": 45, \"specialattack\": 50, \"specialdefense\": 50, \"speed\": 50 },\n          \"baseStatsTotal\": 300,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/dratini_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Dragon Pokémon\",\n          \"respelling\": \"druh-TEE-nee\",\n          \"ipa\": \"/drəˈtiːniː/\",\n          \"color\": \"Blue\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/dratini.mp3\",\n          \"weight\": 3.3,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/testUtils/full-data-responses/eevee.json",
    "content": "{\n  \"data\": {\n    \"getPokemon\": {\n      \"abilities\": {\n        \"first\": {\n          \"name\": \"Run Away\",\n          \"key\": \"runaway\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Run_Away_(Ability)\",\n          \"desc\": null,\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/run_away.shtml\",\n          \"shortDesc\": \"No competitive use.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/run_away\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"second\": {\n          \"name\": \"Adaptability\",\n          \"key\": \"adaptability\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Adaptability_(Ability)\",\n          \"desc\": \"This Pokémon's moves that match one of its types have a same-type attack bonus (STAB) of 2 instead of 1.5.\",\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/adaptability.shtml\",\n          \"shortDesc\": \"This Pokémon's same-type attack bonus (STAB) is 2 instead of 1.5.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/adaptability\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"hidden\": {\n          \"name\": \"Anticipation\",\n          \"key\": \"anticipation\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Anticipation_(Ability)\",\n          \"desc\": \"On switch-in, this Pokémon is alerted if any opposing Pokémon has an attacking move with a type that is super effective against this Pokémon, or any OHKO move. This effect considers Hidden Power to be its determined type, and every other move to be its original type.\",\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/anticipation.shtml\",\n          \"shortDesc\": \"On switch-in, this Pokémon shudders if any foe has a supereffective or OHKO move.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/anticipation\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"special\": null\n      },\n      \"learnsets\": {\n        \"generation3\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"curse\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Curse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                \"target\": \"Random\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"flail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                \"shortDesc\": \"More power the less HP the user has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"tickle\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tickle\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"wish\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Wish\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"dig\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dig\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"shadowball\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Shadow Ball\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"bodyslam\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Body Slam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"mimic\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Mimic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                \"shortDesc\": \"The last move the target used replaces this one.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"mudslap\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Mud-Slap\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 3,\n              \"level\": 36,\n              \"move\": {\n                \"key\": \"batonpass\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baton Pass\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                \"shortDesc\": \"User switches, passing stat changes and more.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 30,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 16,\n              \"move\": {\n                \"key\": \"growl\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Growl\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 23,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 8,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tackle\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Tackle\",\n                \"pp\": 35,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tailwhip\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Whip\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 42,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            }\n          ]\n        },\n        \"generation4\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"curse\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Curse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                \"target\": \"Random\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"detect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Detect\",\n                \"pp\": 5,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                \"target\": \"Self\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"faketears\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Fake Tears\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"flail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                \"shortDesc\": \"More power the less HP the user has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"tickle\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tickle\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"wish\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Wish\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"yawn\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Yawn\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"flail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                \"shortDesc\": \"More power the less HP the user has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"trumpcard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Trump Card\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                \"shortDesc\": \"More power the fewer PP this move has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tmMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"captivate\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Captivate\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"dig\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dig\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"naturalgift\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Natural Gift\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"shadowball\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Shadow Ball\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"healbell\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Heal Bell\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"mudslap\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Mud-Slap\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 4,\n              \"level\": 36,\n              \"move\": {\n                \"key\": \"batonpass\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baton Pass\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                \"shortDesc\": \"User switches, passing stat changes and more.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 29,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 15,\n              \"move\": {\n                \"key\": \"growl\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Growl\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 50,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 22,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 8,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tackle\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Tackle\",\n                \"pp\": 35,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tailwhip\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Whip\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 43,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 57,\n              \"move\": {\n                \"key\": \"trumpcard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Trump Card\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                \"shortDesc\": \"More power the fewer PP this move has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ]\n        },\n        \"generation5\": {\n          \"dreamworldMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            }\n          ],\n          \"eggMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"curse\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Curse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                \"target\": \"Random\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"detect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Detect\",\n                \"pp\": 5,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                \"target\": \"Self\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"faketears\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Fake Tears\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"flail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                \"shortDesc\": \"More power the less HP the user has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"naturalgift\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Natural Gift\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"storedpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stored Power\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"synchronoise\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The target is immune if it does not share a type with the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Synchronoise\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"tickle\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tickle\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"wish\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Wish\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"yawn\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Yawn\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"echoedvoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Echoed Voice\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"sing\",\n                \"accuracy\": 55,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sing_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to fall asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sing\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sing.shtml\",\n                \"shortDesc\": \"Causes the target to fall asleep.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sing\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tmMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dig\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dig\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"echoedvoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Echoed Voice\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"retaliate\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 20,\n                \"name\": \"Retaliate\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"shadowball\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Shadow Ball\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"workup\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Work Up\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"healbell\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Heal Bell\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"hypervoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Hyper Voice\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 5,\n              \"level\": 33,\n              \"move\": {\n                \"key\": \"batonpass\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baton Pass\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                \"shortDesc\": \"User switches, passing stat changes and more.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 17,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 29,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 21,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 37,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 9,\n              \"move\": {\n                \"key\": \"growl\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Growl\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 41,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 13,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 5,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tackle\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Tackle\",\n                \"pp\": 35,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tailwhip\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Whip\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 45,\n              \"move\": {\n                \"key\": \"trumpcard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Trump Card\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                \"shortDesc\": \"More power the fewer PP this move has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ]\n        },\n        \"generation6\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"captivate\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Captivate\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"curse\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Curse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                \"target\": \"Random\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"detect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Detect\",\n                \"pp\": 5,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                \"target\": \"Self\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"faketears\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Fake Tears\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"flail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                \"shortDesc\": \"More power the less HP the user has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"naturalgift\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Natural Gift\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"storedpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stored Power\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"synchronoise\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The target is immune if it does not share a type with the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Synchronoise\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"tickle\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tickle\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"wish\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Wish\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"yawn\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Yawn\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"babydolleyes\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baby-Doll Eyes\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"babydolleyes\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baby-Doll Eyes\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"celebrate\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"It is your birthday.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Celebrate\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                \"shortDesc\": \"No competitive use.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            }\n          ],\n          \"tmMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"confide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Confide\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"dig\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dig\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"echoedvoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Echoed Voice\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"retaliate\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 20,\n                \"name\": \"Retaliate\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"shadowball\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Shadow Ball\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"healbell\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Heal Bell\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"hypervoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Hyper Voice\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 6,\n              \"level\": 9,\n              \"move\": {\n                \"key\": \"babydolleyes\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baby-Doll Eyes\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 33,\n              \"move\": {\n                \"key\": \"batonpass\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baton Pass\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                \"shortDesc\": \"User switches, passing stat changes and more.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 17,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 29,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 23,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 37,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"growl\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Growl\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 41,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 13,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 20,\n              \"move\": {\n                \"key\": \"refresh\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Refresh\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 5,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 10,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tackle\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Tackle\",\n                \"pp\": 35,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tailwhip\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Whip\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 45,\n              \"move\": {\n                \"key\": \"trumpcard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Trump Card\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                \"shortDesc\": \"More power the fewer PP this move has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ]\n        },\n        \"generation7\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"captivate\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Captivate\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"curse\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Curse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                \"target\": \"Random\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"detect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Detect\",\n                \"pp\": 5,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                \"target\": \"Self\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"faketears\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Fake Tears\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"flail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                \"shortDesc\": \"More power the less HP the user has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"naturalgift\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Natural Gift\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"storedpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stored Power\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"synchronoise\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The target is immune if it does not share a type with the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Synchronoise\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"tickle\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tickle\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"wish\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Wish\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"yawn\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Yawn\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"babydolleyes\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baby-Doll Eyes\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"celebrate\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"It is your birthday.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Celebrate\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                \"shortDesc\": \"No competitive use.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tmMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"confide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Confide\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"echoedvoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Echoed Voice\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"shadowball\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Shadow Ball\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"workup\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Work Up\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"healbell\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Heal Bell\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hypervoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Hyper Voice\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"laserfocus\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Laser Focus\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"batonpass\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baton Pass\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                \"shortDesc\": \"User switches, passing stat changes and more.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Bide\",\n                \"pp\": 10,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bodyslam\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Body Slam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"curse\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Curse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                \"target\": \"Random\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"detect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Detect\",\n                \"pp\": 5,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                \"target\": \"Self\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"flail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                \"shortDesc\": \"More power the less HP the user has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"growl\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Growl\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"mimic\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Mimic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                \"shortDesc\": \"The last move the target used replaces this one.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"mudslap\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Mud-Slap\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rage\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rage\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"reflect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Reflect\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"shadowball\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Shadow Ball\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"skullbash\",\n                \"accuracy\": 100,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Skull Bash\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"tackle\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Tackle\",\n                \"pp\": 35,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"tailwhip\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Whip\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 7,\n              \"level\": 9,\n              \"move\": {\n                \"key\": \"babydolleyes\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baby-Doll Eyes\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 33,\n              \"move\": {\n                \"key\": \"batonpass\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baton Pass\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                \"shortDesc\": \"User switches, passing stat changes and more.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 17,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 29,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 37,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"growl\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Growl\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 41,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 13,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 20,\n              \"move\": {\n                \"key\": \"refresh\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Refresh\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 5,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 17,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tackle\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Tackle\",\n                \"pp\": 35,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tailwhip\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Whip\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 45,\n              \"move\": {\n                \"key\": \"trumpcard\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Trump Card\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                \"shortDesc\": \"More power the fewer PP this move has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ]\n        },\n        \"generation8\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"curse\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Curse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                \"target\": \"Random\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"detect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Detect\",\n                \"pp\": 5,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                \"target\": \"Self\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"doublekick\",\n                \"accuracy\": 100,\n                \"basePower\": \"30\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Kick_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Double Kick\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doublekick.shtml\",\n                \"shortDesc\": \"Hits 2 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-kick\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"flail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                \"shortDesc\": \"More power the less HP the user has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"mudslap\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Mud-Slap\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"tickle\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tickle\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"wish\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Wish\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"yawn\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Yawn\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"alluringvoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Alluring_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": null,\n                \"desc\": \"Has a 100% chance to confuse the target if it had a stat stage raised this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Alluring Voice\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/alluringvoice.shtml\",\n                \"shortDesc\": \"100% confuse target that had a stat rise this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/alluring-voice\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"batonpass\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baton Pass\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                \"shortDesc\": \"User switches, passing stat changes and more.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"bodyslam\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Body Slam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"calmmind\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Calm_Mind_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Calm Mind\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/calmmind.shtml\",\n                \"shortDesc\": \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/calm-mind\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"curse\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Curse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                \"target\": \"Random\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dig\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dig\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"faketears\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Fake Tears\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"hypervoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Hyper Voice\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"mudslap\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Mud-Slap\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"roar\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roar\",\n                \"pp\": 20,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"shadowball\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Shadow Ball\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"storedpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stored Power\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"terablast\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": null,\n                \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tera Blast\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"trailblaze\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Trailblaze\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                \"target\": \"Normal\",\n                \"type\": \"Grass\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"weatherball\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Weather Ball\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 9,\n              \"level\": 15,\n              \"move\": {\n                \"key\": \"babydolleyes\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baby-Doll Eyes\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 35,\n              \"move\": {\n                \"key\": \"batonpass\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Baton Pass\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                \"shortDesc\": \"User switches, passing stat changes and more.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 45,\n              \"move\": {\n                \"key\": \"charm\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Charm\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                \"target\": \"Normal\",\n                \"type\": \"Fairy\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 30,\n              \"move\": {\n                \"key\": \"copycat\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Copycat_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Copycat\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/copycat.shtml\",\n                \"shortDesc\": \"Uses the last move used in the battle.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/copycat\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 50,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"growl\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Growl\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 55,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 10,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 5,\n              \"move\": {\n                \"key\": \"sandattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sand Attack\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 20,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tackle\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Tackle\",\n                \"pp\": 35,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tailwhip\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Whip\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 40,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            }\n          ]\n        }\n      },\n      \"key\": \"eevee\",\n      \"eggGroups\": [\"Field\"],\n      \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 1, \"speed\": 0 },\n      \"evolutionLevel\": null,\n      \"flavorTexts\": [\n        {\n          \"flavor\": \"Thanks to its unstable genetic makeup, this special Pokémon conceals many different possible evolutions.\",\n          \"game\": \"Legends: Z-A\"\n        }\n      ],\n      \"forme\": null,\n      \"formeLetter\": null,\n      \"gender\": { \"female\": \"12.5%\", \"male\": \"87.5%\" },\n      \"height\": 0.3,\n      \"isEggObtainable\": true,\n      \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/eevee.gif\",\n      \"levellingRate\": \"Medium Fast\",\n      \"maximumHatchTime\": 9251,\n      \"minimumHatchTime\": 8995,\n      \"num\": 133,\n      \"otherFormes\": [\"eeveestarter\", \"eeveegmax\"],\n      \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/eevee\",\n      \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/eevee.gif\",\n      \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/eevee.gif\",\n      \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/eevee\",\n      \"baseForme\": null,\n      \"smogonTier\": \"LC\",\n      \"species\": \"eevee\",\n      \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/eevee.gif\",\n      \"types\": [\n        {\n          \"name\": \"Normal\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [],\n              \"effectlessTypes\": [\"ghost\"],\n              \"normalTypes\": [\n                \"bug\",\n                \"dark\",\n                \"dragon\",\n                \"electric\",\n                \"fairy\",\n                \"fighting\",\n                \"fire\",\n                \"flying\",\n                \"grass\",\n                \"ground\",\n                \"ice\",\n                \"normal\",\n                \"poison\",\n                \"psychic\",\n                \"water\"\n              ],\n              \"resistedTypes\": [\"rock\", \"steel\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"fighting\"],\n              \"effectlessTypes\": [\"ghost\"],\n              \"normalTypes\": [\n                \"bug\",\n                \"dark\",\n                \"dragon\",\n                \"electric\",\n                \"fairy\",\n                \"fire\",\n                \"flying\",\n                \"grass\",\n                \"ground\",\n                \"ice\",\n                \"normal\",\n                \"poison\",\n                \"psychic\",\n                \"rock\",\n                \"steel\",\n                \"water\"\n              ],\n              \"resistedTypes\": []\n            }\n          }\n        }\n      ],\n      \"baseSpecies\": null,\n      \"baseStats\": { \"hp\": 55, \"attack\": 55, \"defense\": 50, \"specialattack\": 45, \"specialdefense\": 65, \"speed\": 55 },\n      \"baseStatsTotal\": 325,\n      \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/eevee_(Pokémon)\",\n      \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n      \"classification\": \"Evolution Pokémon\",\n      \"respelling\": \"EE-vee\",\n      \"ipa\": \"/ˈiːviː/\",\n      \"color\": \"Brown\",\n      \"cosmeticFormes\": null,\n      \"cry\": \"https://play.pokemonshowdown.com/audio/cries/eevee.mp3\",\n      \"weight\": 6.5,\n      \"legendary\": false,\n      \"mythical\": false,\n      \"evolutions\": [\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Water Absorb\",\n              \"key\": \"waterabsorb\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Absorb_(Ability)\",\n              \"desc\": \"This Pokémon is immune to Water-type moves and restores 1/4 of its maximum HP, rounded down, when hit by a Water-type move.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/water_absorb.shtml\",\n              \"shortDesc\": \"This Pokémon heals 1/4 of its max HP when hit by Water moves; Water immunity.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/water_absorb\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Hydration\",\n              \"key\": \"hydration\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hydration_(Ability)\",\n              \"desc\": \"This Pokémon has its non-volatile status condition cured at the end of each turn if Rain Dance is active. This effect is prevented if this Pokémon is holding a Utility Umbrella.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/hydration.shtml\",\n              \"shortDesc\": \"This Pokémon has its status cured at the end of each turn if Rain Dance is active.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/hydration\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 16,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 57,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"eggMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sing\",\n                    \"accuracy\": 55,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sing_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sing\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sing.shtml\",\n                    \"shortDesc\": \"Causes the target to fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"laserfocus\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Laser Focus\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                    \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doublekick\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Kick_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Double Kick\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doublekick.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-kick\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"alluringvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Alluring_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to confuse the target if it had a stat stage raised this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Alluring Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/alluringvoice.shtml\",\n                    \"shortDesc\": \"100% confuse target that had a stat rise this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/alluring-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"calmmind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Calm_Mind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Calm Mind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/calmmind.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/calm-mind\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"trailblaze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trailblaze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                    \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"copycat\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Copycat_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Copycat\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/copycat.shtml\",\n                    \"shortDesc\": \"Uses the last move used in the battle.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/copycat\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 40,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"vaporeon\",\n          \"eggGroups\": [\"Field\"],\n          \"evYields\": { \"hp\": 2, \"attack\": 0, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": \"use Water Stone\",\n          \"flavorTexts\": [\n            {\n              \"flavor\": \"It has evolved to be suited for an aquatic life. It can become invisible when it melts away into water.\",\n              \"game\": \"Legends: Z-A\"\n            }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"12.5%\", \"male\": \"87.5%\" },\n          \"height\": 1,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/vaporeon.gif\",\n          \"levellingRate\": \"Medium Fast\",\n          \"maximumHatchTime\": 9251,\n          \"minimumHatchTime\": 8995,\n          \"num\": 134,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/vaporeon\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/vaporeon.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/vaporeon.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/vaporeon\",\n          \"baseForme\": null,\n          \"smogonTier\": \"NU\",\n          \"species\": \"vaporeon\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/vaporeon.gif\",\n          \"types\": [\n            {\n              \"name\": \"Water\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"fire\", \"ground\", \"rock\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dark\", \"electric\", \"fairy\", \"fighting\", \"flying\", \"ghost\", \"ice\", \"normal\", \"poison\", \"psychic\", \"steel\"],\n                  \"resistedTypes\": [\"dragon\", \"grass\", \"water\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"electric\", \"grass\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dark\", \"dragon\", \"fairy\", \"fighting\", \"flying\", \"ghost\", \"ground\", \"normal\", \"poison\", \"psychic\", \"rock\"],\n                  \"resistedTypes\": [\"fire\", \"ice\", \"steel\", \"water\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 130, \"attack\": 65, \"defense\": 60, \"specialattack\": 110, \"specialdefense\": 95, \"speed\": 65 },\n          \"baseStatsTotal\": 525,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/vaporeon_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Bubble Jet Pokémon\",\n          \"respelling\": \"vay-POR-ey-on\",\n          \"ipa\": \"/veɪˈpɔːreɪɒn/\",\n          \"color\": \"Blue\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/vaporeon.mp3\",\n          \"weight\": 29,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        },\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Volt Absorb\",\n              \"key\": \"voltabsorb\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Volt_Absorb_(Ability)\",\n              \"desc\": \"This Pokémon is immune to Electric-type moves and restores 1/4 of its maximum HP, rounded down, when hit by an Electric-type move.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/volt_absorb.shtml\",\n              \"shortDesc\": \"This Pokémon heals 1/4 of its max HP when hit by Electric moves; Electric immunity.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/volt_absorb\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Quick Feet\",\n              \"key\": \"quickfeet\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Feet_(Ability)\",\n              \"desc\": \"If this Pokémon has a non-volatile status condition, its Speed is multiplied by 1.5. This Pokémon ignores the paralysis effect of halving Speed.\",\n              \"isFieldAbility\": \"If a Pokémon with Quick Feet is in the first place in the party (even if fainted), the chance of encountering a wild Pokémon is decreased by 50%.\",\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/quick_feet.shtml\",\n              \"shortDesc\": \"If this Pokémon is statused, its Speed is 1.5x; ignores Speed drop from paralysis.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/quick_feet\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 16,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 57,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"eggMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sing\",\n                    \"accuracy\": 55,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sing_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sing\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sing.shtml\",\n                    \"shortDesc\": \"Causes the target to fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"laserfocus\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Laser Focus\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                    \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doublekick\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Kick_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Double Kick\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doublekick.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-kick\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"alluringvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Alluring_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to confuse the target if it had a stat stage raised this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Alluring Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/alluringvoice.shtml\",\n                    \"shortDesc\": \"100% confuse target that had a stat rise this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/alluring-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"calmmind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Calm_Mind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Calm Mind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/calmmind.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/calm-mind\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"trailblaze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trailblaze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                    \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"copycat\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Copycat_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Copycat\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/copycat.shtml\",\n                    \"shortDesc\": \"Uses the last move used in the battle.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/copycat\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 40,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"jolteon\",\n          \"eggGroups\": [\"Field\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 2 },\n          \"evolutionLevel\": \"use Thunder Stone\",\n          \"flavorTexts\": [\n            { \"flavor\": \"It absorbs negative ions from the atmosphere to spit out 10,000 volts of electricity.\", \"game\": \"Legends: Z-A\" }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"12.5%\", \"male\": \"87.5%\" },\n          \"height\": 0.8,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/jolteon.gif\",\n          \"levellingRate\": \"Medium Fast\",\n          \"maximumHatchTime\": 9251,\n          \"minimumHatchTime\": 8995,\n          \"num\": 135,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/jolteon\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/jolteon.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/jolteon.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/jolteon\",\n          \"baseForme\": null,\n          \"smogonTier\": \"ZU\",\n          \"species\": \"jolteon\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/jolteon.gif\",\n          \"types\": [\n            {\n              \"name\": \"Electric\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"flying\", \"water\"],\n                  \"effectlessTypes\": [\"ground\"],\n                  \"normalTypes\": [\"bug\", \"dark\", \"fairy\", \"fighting\", \"fire\", \"ghost\", \"ice\", \"normal\", \"poison\", \"psychic\", \"rock\", \"steel\"],\n                  \"resistedTypes\": [\"dragon\", \"electric\", \"grass\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"ground\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dark\",\n                    \"dragon\",\n                    \"fairy\",\n                    \"fighting\",\n                    \"fire\",\n                    \"ghost\",\n                    \"grass\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"psychic\",\n                    \"rock\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"electric\", \"flying\", \"steel\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 65, \"attack\": 65, \"defense\": 60, \"specialattack\": 110, \"specialdefense\": 95, \"speed\": 130 },\n          \"baseStatsTotal\": 525,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/jolteon_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Lightning Pokémon\",\n          \"respelling\": \"JOLT-e-on\",\n          \"ipa\": \"/ˈdʒɒltɛɒn/\",\n          \"color\": \"Yellow\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/jolteon.mp3\",\n          \"weight\": 24.5,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        },\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Flash Fire\",\n              \"key\": \"flashfire\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flash_Fire_(Ability)\",\n              \"desc\": \"This Pokémon is immune to Fire-type moves. The first time it is hit by a Fire-type move, its offensive stat is multiplied by 1.5 while using a Fire-type attack as long as it remains active and has this Ability. If this Pokémon is frozen, it cannot be defrosted by Fire-type attacks.\",\n              \"isFieldAbility\": \"In Pokémon Sword and Shield, If you have a Pokémon with Flash Fire at the front of your party (even if fainted), there is a 50% chance an encounter with a Fire-type Pokémon will be forced, if possible.\",\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/flash_fire.shtml\",\n              \"shortDesc\": \"This Pokémon's Fire attacks do 1.5x damage if hit by one Fire move; Fire immunity.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/flash_fire\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Guts\",\n              \"key\": \"guts\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Guts_(Ability)\",\n              \"desc\": \"If this Pokémon has a non-volatile status condition, its Attack is multiplied by 1.5. This Pokémon's physical attacks ignore the burn effect of halving damage.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/guts.shtml\",\n              \"shortDesc\": \"If this Pokémon is statused, its Attack is 1.5x; ignores burn halving physical damage.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/guts\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 16,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 57,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"eggMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sing\",\n                    \"accuracy\": 55,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sing_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sing\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sing.shtml\",\n                    \"shortDesc\": \"Causes the target to fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"laserfocus\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Laser Focus\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                    \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doublekick\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Kick_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Double Kick\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doublekick.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-kick\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"alluringvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Alluring_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to confuse the target if it had a stat stage raised this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Alluring Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/alluringvoice.shtml\",\n                    \"shortDesc\": \"100% confuse target that had a stat rise this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/alluring-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"calmmind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Calm_Mind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Calm Mind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/calmmind.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/calm-mind\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"trailblaze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trailblaze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                    \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"copycat\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Copycat_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Copycat\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/copycat.shtml\",\n                    \"shortDesc\": \"Uses the last move used in the battle.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/copycat\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 40,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"flareon\",\n          \"eggGroups\": [\"Field\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 2, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": \"use Fire Stone\",\n          \"flavorTexts\": [\n            {\n              \"flavor\": \"It has a flame sac inside its body. After inhaling deeply, it blows out flames of nearly 3,000 degrees Fahrenheit.\",\n              \"game\": \"Legends: Z-A\"\n            }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"12.5%\", \"male\": \"87.5%\" },\n          \"height\": 0.9,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/flareon.gif\",\n          \"levellingRate\": \"Medium Fast\",\n          \"maximumHatchTime\": 9251,\n          \"minimumHatchTime\": 8995,\n          \"num\": 136,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/flareon\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/flareon.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/flareon.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/flareon\",\n          \"baseForme\": null,\n          \"smogonTier\": \"ZU\",\n          \"species\": \"flareon\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/flareon.gif\",\n          \"types\": [\n            {\n              \"name\": \"Fire\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"bug\", \"grass\", \"ice\", \"steel\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"dark\", \"electric\", \"fairy\", \"fighting\", \"flying\", \"ghost\", \"ground\", \"normal\", \"poison\", \"psychic\"],\n                  \"resistedTypes\": [\"dragon\", \"fire\", \"rock\", \"water\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"ground\", \"rock\", \"water\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"dark\", \"dragon\", \"electric\", \"fighting\", \"flying\", \"ghost\", \"normal\", \"poison\", \"psychic\"],\n                  \"resistedTypes\": [\"bug\", \"fairy\", \"fire\", \"grass\", \"ice\", \"steel\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 65, \"attack\": 130, \"defense\": 60, \"specialattack\": 95, \"specialdefense\": 110, \"speed\": 65 },\n          \"baseStatsTotal\": 525,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/flareon_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Flame Pokémon\",\n          \"respelling\": \"FLARE-ae-on\",\n          \"ipa\": \"/ˈflɛəreɪɒn/\",\n          \"color\": \"Red\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/flareon.mp3\",\n          \"weight\": 25,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        },\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Synchronize\",\n              \"key\": \"synchronize\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronize_(Ability)\",\n              \"desc\": \"If another Pokémon burns, paralyzes, poisons, or badly poisons this Pokémon, that Pokémon receives the same non-volatile status condition.\",\n              \"isFieldAbility\": \"If a Pokémon with Synchronize in the first slot in the party (even if fainted), chance of encountering a wild Pokémon with the same nature will be 50%. In Pokémon Sword and Shield however, all wild Pokémon are guaranteed to have the same nature as the Pokémon with Synchronize, exluding gift Pokémon and Pokémon obtained from max raid battles. Roaming Pokémon, Gift Pokémon (excluding Pokémon obtained via mystery gift or eggs in Omega Ruby and Alpha Sapphire to Ultra Sun/Moon), Stationary Pokémon in Pokémon Emerald, Pokémon in the Pokewalker and Pokémon found in Entree Forest are also not affected by this ability.\",\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/synchronize.shtml\",\n              \"shortDesc\": \"If another Pokémon burns/poisons/paralyzes this Pokémon, it also gets that status.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/synchronize\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Magic Bounce\",\n              \"key\": \"magicbounce\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Magic_Bounce_(Ability)\",\n              \"desc\": \"This Pokémon is unaffected by certain non-damaging moves directed at it and will instead use such moves against the original user. Moves reflected in this way are unable to be reflected again by this or Magic Coat's effect. Spikes, Stealth Rock, Sticky Web, and Toxic Spikes can only be reflected once per side, by the leftmost Pokémon under this or Magic Coat's effect. The Lightning Rod and Storm Drain Abilities redirect their respective moves before this Ability takes effect.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/magic_bounce.shtml\",\n              \"shortDesc\": \"This Pokémon blocks certain Status moves and bounces them back to the user.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/magic_bounce\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 16,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 57,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"eggMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sing\",\n                    \"accuracy\": 55,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sing_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sing\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sing.shtml\",\n                    \"shortDesc\": \"Causes the target to fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"laserfocus\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Laser Focus\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                    \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doublekick\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Kick_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Double Kick\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doublekick.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-kick\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"alluringvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Alluring_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to confuse the target if it had a stat stage raised this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Alluring Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/alluringvoice.shtml\",\n                    \"shortDesc\": \"100% confuse target that had a stat rise this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/alluring-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"calmmind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Calm_Mind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Calm Mind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/calmmind.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/calm-mind\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"trailblaze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trailblaze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                    \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"copycat\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Copycat_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Copycat\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/copycat.shtml\",\n                    \"shortDesc\": \"Uses the last move used in the battle.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/copycat\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 40,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"espeon\",\n          \"eggGroups\": [\"Field\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 2, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": \"Level up during Daytime with happiness of at least 220\",\n          \"flavorTexts\": [\n            {\n              \"flavor\": \"It uses the fine fur on its body to sense movement in the air and predict the weather...as well as its foes' thoughts.\",\n              \"game\": \"Legends: Z-A\"\n            }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"12.5%\", \"male\": \"87.5%\" },\n          \"height\": 0.9,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/espeon.gif\",\n          \"levellingRate\": \"Medium Fast\",\n          \"maximumHatchTime\": 9251,\n          \"minimumHatchTime\": 8995,\n          \"num\": 196,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/espeon\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/espeon.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/espeon.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/espeon\",\n          \"baseForme\": null,\n          \"smogonTier\": \"NU\",\n          \"species\": \"espeon\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/espeon.gif\",\n          \"types\": [\n            {\n              \"name\": \"Psychic\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"fighting\", \"poison\"],\n                  \"effectlessTypes\": [\"dark\"],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dragon\",\n                    \"electric\",\n                    \"fairy\",\n                    \"fire\",\n                    \"flying\",\n                    \"ghost\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"rock\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"psychic\", \"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"bug\", \"dark\", \"ghost\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\n                    \"dragon\",\n                    \"electric\",\n                    \"fairy\",\n                    \"fire\",\n                    \"flying\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"rock\",\n                    \"steel\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"fighting\", \"psychic\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 65, \"attack\": 65, \"defense\": 60, \"specialattack\": 130, \"specialdefense\": 95, \"speed\": 110 },\n          \"baseStatsTotal\": 525,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/espeon_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Sun Pokémon\",\n          \"respelling\": \"ESS-pee-on\",\n          \"ipa\": \"/ˈɛspiːɒn/\",\n          \"color\": \"Purple\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/espeon.mp3\",\n          \"weight\": 26.5,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        },\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Synchronize\",\n              \"key\": \"synchronize\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronize_(Ability)\",\n              \"desc\": \"If another Pokémon burns, paralyzes, poisons, or badly poisons this Pokémon, that Pokémon receives the same non-volatile status condition.\",\n              \"isFieldAbility\": \"If a Pokémon with Synchronize in the first slot in the party (even if fainted), chance of encountering a wild Pokémon with the same nature will be 50%. In Pokémon Sword and Shield however, all wild Pokémon are guaranteed to have the same nature as the Pokémon with Synchronize, exluding gift Pokémon and Pokémon obtained from max raid battles. Roaming Pokémon, Gift Pokémon (excluding Pokémon obtained via mystery gift or eggs in Omega Ruby and Alpha Sapphire to Ultra Sun/Moon), Stationary Pokémon in Pokémon Emerald, Pokémon in the Pokewalker and Pokémon found in Entree Forest are also not affected by this ability.\",\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/synchronize.shtml\",\n              \"shortDesc\": \"If another Pokémon burns/poisons/paralyzes this Pokémon, it also gets that status.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/synchronize\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Inner Focus\",\n              \"key\": \"innerfocus\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Inner_Focus_(Ability)\",\n              \"desc\": \"This Pokémon cannot be made to flinch. This Pokémon is immune to the effect of the Intimidate Ability.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/inner_focus.shtml\",\n              \"shortDesc\": \"This Pokémon cannot be made to flinch. Immune to Intimidate.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/inner_focus\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 16,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 57,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"eggMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sing\",\n                    \"accuracy\": 55,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sing_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sing\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sing.shtml\",\n                    \"shortDesc\": \"Causes the target to fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"laserfocus\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Laser Focus\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                    \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doublekick\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Kick_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Double Kick\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doublekick.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-kick\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"alluringvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Alluring_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to confuse the target if it had a stat stage raised this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Alluring Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/alluringvoice.shtml\",\n                    \"shortDesc\": \"100% confuse target that had a stat rise this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/alluring-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"calmmind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Calm_Mind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Calm Mind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/calmmind.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/calm-mind\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"trailblaze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trailblaze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                    \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"copycat\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Copycat_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Copycat\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/copycat.shtml\",\n                    \"shortDesc\": \"Uses the last move used in the battle.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/copycat\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 40,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"umbreon\",\n          \"eggGroups\": [\"Field\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 2, \"speed\": 0 },\n          \"evolutionLevel\": \"Level up during Nighttime with happiness of at least 220\",\n          \"flavorTexts\": [\n            {\n              \"flavor\": \"The light of the moon changed Eevee's genetic structure. It lurks in the darkness, waiting for prey.\",\n              \"game\": \"Legends: Z-A\"\n            }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"12.5%\", \"male\": \"87.5%\" },\n          \"height\": 1,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/umbreon.gif\",\n          \"levellingRate\": \"Medium Fast\",\n          \"maximumHatchTime\": 9251,\n          \"minimumHatchTime\": 8995,\n          \"num\": 197,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/umbreon\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/umbreon.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/umbreon.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/umbreon\",\n          \"baseForme\": null,\n          \"smogonTier\": \"RU\",\n          \"species\": \"umbreon\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/umbreon.gif\",\n          \"types\": [\n            {\n              \"name\": \"Dark\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"ghost\", \"psychic\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dragon\",\n                    \"electric\",\n                    \"fire\",\n                    \"flying\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"rock\",\n                    \"steel\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"dark\", \"fairy\", \"fighting\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"bug\", \"fairy\", \"fighting\"],\n                  \"effectlessTypes\": [\"psychic\"],\n                  \"normalTypes\": [\"dragon\", \"electric\", \"fire\", \"flying\", \"grass\", \"ground\", \"ice\", \"normal\", \"poison\", \"rock\", \"steel\", \"water\"],\n                  \"resistedTypes\": [\"dark\", \"ghost\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 95, \"attack\": 65, \"defense\": 110, \"specialattack\": 60, \"specialdefense\": 130, \"speed\": 65 },\n          \"baseStatsTotal\": 525,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/umbreon_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Moonlight Pokémon\",\n          \"respelling\": \"UMM-bree-on\",\n          \"ipa\": \"/ˈʌmbriːɒn/\",\n          \"color\": \"Black\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/umbreon.mp3\",\n          \"weight\": 27,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        },\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Leaf Guard\",\n              \"key\": \"leafguard\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leaf_Guard_(Ability)\",\n              \"desc\": \"If Sunny Day is active, this Pokémon cannot become affected by a non-volatile status condition or Yawn, and Rest will fail for it. This effect is prevented if this Pokémon is holding a Utility Umbrella.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/leaf_guard.shtml\",\n              \"shortDesc\": \"If Sunny Day is active, this Pokémon cannot be statused and Rest will fail for it.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/leaf_guard\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Chlorophyll\",\n              \"key\": \"chlorophyll\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Chlorophyll_(Ability)\",\n              \"desc\": \"If Sunny Day is active, this Pokémon's Speed is doubled. This effect is prevented if this Pokémon is holding a Utility Umbrella.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/chlorophyll.shtml\",\n              \"shortDesc\": \"If Sunny Day is active, this Pokémon's Speed is doubled.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/chlorophyll\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 16,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 57,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"eggMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sing\",\n                    \"accuracy\": 55,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sing_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sing\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sing.shtml\",\n                    \"shortDesc\": \"Causes the target to fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"laserfocus\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Laser Focus\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                    \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doublekick\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Kick_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Double Kick\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doublekick.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-kick\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"alluringvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Alluring_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to confuse the target if it had a stat stage raised this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Alluring Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/alluringvoice.shtml\",\n                    \"shortDesc\": \"100% confuse target that had a stat rise this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/alluring-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"calmmind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Calm_Mind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Calm Mind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/calmmind.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/calm-mind\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"trailblaze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trailblaze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                    \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"copycat\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Copycat_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Copycat\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/copycat.shtml\",\n                    \"shortDesc\": \"Uses the last move used in the battle.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/copycat\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 40,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"leafeon\",\n          \"eggGroups\": [\"Field\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 2, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": \"use Leaf Stone\",\n          \"flavorTexts\": [\n            { \"flavor\": \"Just like a plant, it uses photosynthesis. As a result, it is always enveloped in clear air.\", \"game\": \"Legends: Z-A\" }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"12.5%\", \"male\": \"87.5%\" },\n          \"height\": 1,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/leafeon.gif\",\n          \"levellingRate\": \"Medium Fast\",\n          \"maximumHatchTime\": 9251,\n          \"minimumHatchTime\": 8995,\n          \"num\": 470,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/leafeon\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/leafeon.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/leafeon.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/leafeon\",\n          \"baseForme\": null,\n          \"smogonTier\": \"ZU\",\n          \"species\": \"leafeon\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/leafeon.gif\",\n          \"types\": [\n            {\n              \"name\": \"Grass\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"ground\", \"rock\", \"water\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"dark\", \"electric\", \"fairy\", \"fighting\", \"ghost\", \"ice\", \"normal\", \"psychic\"],\n                  \"resistedTypes\": [\"bug\", \"dragon\", \"fire\", \"flying\", \"grass\", \"poison\", \"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"bug\", \"fire\", \"flying\", \"ice\", \"poison\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"dark\", \"dragon\", \"fairy\", \"fighting\", \"ghost\", \"normal\", \"psychic\", \"rock\", \"steel\"],\n                  \"resistedTypes\": [\"electric\", \"grass\", \"ground\", \"water\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 65, \"attack\": 110, \"defense\": 130, \"specialattack\": 60, \"specialdefense\": 65, \"speed\": 95 },\n          \"baseStatsTotal\": 525,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/leafeon_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Verdant Pokémon\",\n          \"respelling\": \"LEEF-ee-on\",\n          \"ipa\": \"/ˈliːfiːɒn/\",\n          \"color\": \"Green\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/leafeon.mp3\",\n          \"weight\": 25.5,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        },\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Snow Cloak\",\n              \"key\": \"snowcloak\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snow_Cloak_(Ability)\",\n              \"desc\": \"If Snow is active, the accuracy of moves used against this Pokémon is multiplied by 0.8.\",\n              \"isFieldAbility\": \"If a Pokémon with Snow Cloak is in the first place in the party (even if fainted) in an area with hail, the chance of encountering a wild Pokémon is decreased by 50%.\",\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/snow_cloak.shtml\",\n              \"shortDesc\": \"If Snow is active, this Pokémon's evasiveness is 1.25x.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/snow_cloak\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Ice Body\",\n              \"key\": \"icebody\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Body_(Ability)\",\n              \"desc\": \"If Snow is active, this Pokémon restores 1/16 of its maximum HP, rounded down, at the end of each turn.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/ice_body.shtml\",\n              \"shortDesc\": \"If Snow is active, this Pokémon heals 1/16 of its max HP each turn.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/ice_body\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 16,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 57,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"eggMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sing\",\n                    \"accuracy\": 55,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sing_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sing\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sing.shtml\",\n                    \"shortDesc\": \"Causes the target to fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"laserfocus\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Laser Focus\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                    \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doublekick\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Kick_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Double Kick\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doublekick.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-kick\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"alluringvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Alluring_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to confuse the target if it had a stat stage raised this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Alluring Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/alluringvoice.shtml\",\n                    \"shortDesc\": \"100% confuse target that had a stat rise this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/alluring-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"calmmind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Calm_Mind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Calm Mind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/calmmind.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/calm-mind\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"trailblaze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trailblaze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                    \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"copycat\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Copycat_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Copycat\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/copycat.shtml\",\n                    \"shortDesc\": \"Uses the last move used in the battle.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/copycat\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 40,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"glaceon\",\n          \"eggGroups\": [\"Field\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 2, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": \"use Ice Stone\",\n          \"flavorTexts\": [\n            {\n              \"flavor\": \"By controlling its body heat, it can freeze the atmosphere around it to make a diamond-dust flurry.\",\n              \"game\": \"Legends: Z-A\"\n            }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"12.5%\", \"male\": \"87.5%\" },\n          \"height\": 0.8,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/glaceon.gif\",\n          \"levellingRate\": \"Medium Fast\",\n          \"maximumHatchTime\": 9251,\n          \"minimumHatchTime\": 8995,\n          \"num\": 471,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/glaceon\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/glaceon.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/glaceon.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/glaceon\",\n          \"baseForme\": null,\n          \"smogonTier\": \"ZU\",\n          \"species\": \"glaceon\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/glaceon.gif\",\n          \"types\": [\n            {\n              \"name\": \"Ice\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dragon\", \"flying\", \"grass\", \"ground\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dark\", \"electric\", \"fairy\", \"fighting\", \"ghost\", \"normal\", \"poison\", \"psychic\", \"rock\"],\n                  \"resistedTypes\": [\"fire\", \"ice\", \"steel\", \"water\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"fighting\", \"fire\", \"rock\", \"steel\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dark\",\n                    \"dragon\",\n                    \"electric\",\n                    \"fairy\",\n                    \"flying\",\n                    \"ghost\",\n                    \"grass\",\n                    \"ground\",\n                    \"normal\",\n                    \"poison\",\n                    \"psychic\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"ice\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 65, \"attack\": 60, \"defense\": 110, \"specialattack\": 130, \"specialdefense\": 95, \"speed\": 65 },\n          \"baseStatsTotal\": 525,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/glaceon_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Fresh Snow Pokémon\",\n          \"respelling\": \"GLACE-ee-on\",\n          \"ipa\": \"/ˈɡleɪsiːɒn/\",\n          \"color\": \"Blue\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/glaceon.mp3\",\n          \"weight\": 25.9,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        },\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Cute Charm\",\n              \"key\": \"cutecharm\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cute_Charm_(Ability)\",\n              \"desc\": \"There is a 30% chance a Pokémon making contact with this Pokémon will become infatuated if it is of the opposite gender.\",\n              \"isFieldAbility\": \"If a Pokémon with Cute Charm is at the front of the party (even if fainted), there is a 66.7% chance that a Pokémon of the opposite gender to the Pokémon with Cute Charm will be encountered. This does not affect swarming Pokémon species (except in Generation 4) or Pokémon found in Hidden Grottos.\",\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/cute_charm.shtml\",\n              \"shortDesc\": \"30% chance of infatuating Pokémon of the opposite gender if they make contact.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/cute_charm\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Pixilate\",\n              \"key\": \"pixilate\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pixilate_(Ability)\",\n              \"desc\": \"This Pokémon's Normal-type moves become Fairy-type moves and have their power multiplied by 1.2. This effect comes after other effects that change a move's type, but before Ion Deluge and Electrify's effects.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/pixilate.shtml\",\n              \"shortDesc\": \"This Pokémon's Normal-type moves become Fairy type and have 1.2x power.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/pixilate\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 16,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 36,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 57,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"eggMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sing\",\n                    \"accuracy\": 55,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sing_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sing\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sing.shtml\",\n                    \"shortDesc\": \"Causes the target to fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"retaliate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Retaliate_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles if one of the user's party members fainted last turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 20,\n                    \"name\": \"Retaliate\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/retaliate.shtml\",\n                    \"shortDesc\": \"Power doubles if an ally fainted last turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/retaliate\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"synchronoise\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Synchronoise_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The target is immune if it does not share a type with the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Synchronoise\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/synchronoise.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon sharing the user's type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/synchronoise\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"celebrate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Celebrate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"It is your birthday.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Celebrate\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/celebrate.shtml\",\n                    \"shortDesc\": \"No competitive use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/celebrate\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"echoedvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Echoed_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For every consecutive turn that this move is used by at least one Pokémon, this move's power is multiplied by the number of turns to pass, but not more than 5.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Echoed Voice\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/echoedvoice.shtml\",\n                    \"shortDesc\": \"Power increases when used on consecutive turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/echoed-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"workup\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Work_Up_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Work Up\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/workup.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/work-up\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"healbell\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heal_Bell_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Every Pokémon in the user's party is cured of its non-volatile status condition. Active Pokémon with the Soundproof Ability are not cured, unless they are the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Heal Bell\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/healbell.shtml\",\n                    \"shortDesc\": \"Cures the user's party of all status conditions.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heal-bell\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"laserfocus\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Laser Focus\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                    \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user spends two turns locked into this move and then, on the second turn after using this move, the user attacks the last Pokémon that hit it, inflicting double the damage in HP it lost to attacks during the two turns. If the last Pokémon that hit it is no longer active, the user attacks a random opposing Pokémon instead. If the user is prevented from moving during this move's use, the effect ends. This move does not check accuracy and does not ignore type immunity.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Bide\",\n                    \"pp\": 10,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bide.shtml\",\n                    \"shortDesc\": \"Waits 2 turns; deals double the damage taken.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bide\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reflect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reflect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the user and its party members take 0.5x damage from physical attacks, or 0.66x damage if in a Double Battle. Damage is not reduced further with Aurora Veil. Critical hits ignore this effect. It is removed from the user's side if the user or an ally is successfully hit by Brick Break, Psychic Fangs, or Defog. Lasts for 8 turns if the user is holding Light Clay. Fails if the effect is already active on the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Reflect\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reflect.shtml\",\n                    \"shortDesc\": \"For 5 turns, physical damage to allies is halved.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reflect\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"skullbash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Skull_Bash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. Raises the user's Defense by 1 stage on the first turn. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Skull Bash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/skullbash.shtml\",\n                    \"shortDesc\": \"Raises user's Defense by 1 on turn 1. Hits turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/skull-bash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 9,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 41,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"trumpcard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trump_Card_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is based on the amount of PP remaining after normal PP reduction and the Pressure Ability resolve. 200 power for 0 PP, 80 power for 1 PP, 60 power for 2 PP, 50 power for 3 PP, and 40 power for 4 or more PP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trump Card\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trumpcard.shtml\",\n                    \"shortDesc\": \"More power the fewer PP this move has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trump-card\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"detect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Detect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Detect\",\n                    \"pp\": 5,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/detect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/detect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doublekick\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Kick_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Double Kick\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doublekick.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-kick\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flail.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tickle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tickle_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tickle\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tickle.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tickle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"wish\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Wish_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"At the end of the next turn, the Pokémon at the user's position has 1/2 of the user's maximum HP restored to it, rounded down. Fails if this move is already in effect for the user's position.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Wish\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/wish.shtml\",\n                    \"shortDesc\": \"Next turn, 50% of the user's max HP is restored.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/wish\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"yawn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Yawn_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to fall asleep at the end of the next turn. Fails when used if the target cannot fall asleep or if it already has a non-volatile status condition. At the end of the next turn, if the target is still active, does not have a non-volatile status condition, and can fall asleep, it falls asleep. If the target becomes affected, this effect cannot be prevented by Safeguard or a substitute, or by falling asleep and waking up during the effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Yawn\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/yawn.shtml\",\n                    \"shortDesc\": \"Puts the target to sleep after 1 turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/yawn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"alluringvoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Alluring_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to confuse the target if it had a stat stage raised this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Alluring Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/alluringvoice.shtml\",\n                    \"shortDesc\": \"100% confuse target that had a stat rise this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/alluring-voice\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"calmmind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Calm_Mind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Raises the user's Special Attack and Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Calm Mind\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/calmmind.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk and Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/calm-mind\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"curse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Curse_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the user is not a Ghost type, lowers the user's Speed by 1 stage and raises the user's Attack and Defense by 1 stage. If the user is a Ghost type, the user loses 1/2 of its maximum HP, rounded down and even if it would cause fainting, in exchange for the target losing 1/4 of its maximum HP, rounded down, at the end of each turn while it is active. If the target uses Baton Pass, the replacement will continue to be affected. Fails if there is no target or if the target is already affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Curse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/curse.shtml\",\n                    \"shortDesc\": \"Curses if Ghost, else -1 Spe, +1 Atk, +1 Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/curse\",\n                    \"target\": \"Random\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dig\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dig_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Earthquake and Magnitude but takes double damage from them, and is also unaffected by weather. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can dig the player out of a cavern to the place where the player entered it, similar to an Escape Rope. It can be taught to a Pokémon by using TM28 in all generations. Several Pokémon can also learn the move by leveling up.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dig\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dig.shtml\",\n                    \"shortDesc\": \"Digs underground turn 1, strikes turn 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dig\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"faketears\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fake_Tears_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Fake Tears\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/faketears.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Def by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fake-tears\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"storedpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stored_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power is equal to 20+(X*20), where X is the user's total stat stage changes that are greater than 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stored Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/storedpower.shtml\",\n                    \"shortDesc\": \" + 20 power for each of the user's stat boosts.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stored-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"trailblaze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trailblaze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                    \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"weatherball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Weather_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if a weather condition other than Delta Stream is active, and this move's type changes to match. Ice type during Snow, Water type during Primordial Sea or Rain Dance, Rock type during Sandstorm, and Fire type during Desolate Land or Sunny Day. If the user is holding Utility Umbrella and uses Weather Ball during Primordial Sea, Rain Dance, Desolate Land, or Sunny Day, this move remains Normal type and does not double in power.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Weather Ball\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/weatherball.shtml\",\n                    \"shortDesc\": \"Power doubles and type varies in each weather.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/weather-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"babydolleyes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baby-doll_Eyes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baby-Doll Eyes\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/babydolleyes.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baby-doll-eyes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"batonpass\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Baton_Pass_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is replaced with another Pokémon in its party. The selected Pokémon has the user's stat stage changes transferred to it, as well as the effects of confusion, Aqua Ring, Curse, Dragon Cheer, Embargo, Focus Energy, Gastro Acid, Heal Block, Ingrain, Leech Seed, Lock-On (Mind Reader), Magnet Rise, Perish Song, Power Trick, Telekinesis, and a substitute with its remaining HP. The effect of Gastro Acid is not transferred if the recipient has an Ability that cannot be affected.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Baton Pass\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/batonpass.shtml\",\n                    \"shortDesc\": \"User switches, passing stat changes and more.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/baton-pass\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"charm\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Charm_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Charm\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/charm.shtml\",\n                    \"shortDesc\": \"Lowers the target's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/charm\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fairy\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"copycat\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Copycat_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user uses the last move used by any Pokémon, including itself. Fails if no move has been used, or if the last move used was Assist, Baneful Bunker, Beak Blast, Behemoth Bash, Behemoth Blade, Belch, Bestow, Blazing Torque, Celebrate, Chatter, Circle Throw, Combat Torque, Copycat, Counter, Covet, Destiny Bond, Detect, Dragon Tail, Dynamax Cannon, Endure, Feint, Focus Punch, Follow Me, Helping Hand, Hold Hands, King's Shield, Magical Torque, Mat Block, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Protect, Rage Powder, Roar, Shell Trap, Sketch, Sleep Talk, Snatch, Spiky Shield, Spotlight, Struggle, Switcheroo, Tera Starstorm, Thief, Transform, Trick, Whirlwind, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Copycat\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/copycat.shtml\",\n                    \"shortDesc\": \"Uses the last move used in the battle.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/copycat\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"growl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Growl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Growl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/growl.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/growl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"sandattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sand_Attack_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sand Attack\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sandattack.shtml\",\n                    \"shortDesc\": \"Lowers the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sand-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 40,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"sylveon\",\n          \"eggGroups\": [\"Field\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 2, \"speed\": 0 },\n          \"evolutionLevel\": \"Level up while having high Affection and knowing a Fairy type move\",\n          \"flavorTexts\": [\n            { \"flavor\": \"It wraps its ribbonlike feelers around the arm of its beloved Trainer and walks with them.\", \"game\": \"Legends: Z-A\" }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"12.5%\", \"male\": \"87.5%\" },\n          \"height\": 1,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/sylveon.gif\",\n          \"levellingRate\": \"Medium Fast\",\n          \"maximumHatchTime\": 9251,\n          \"minimumHatchTime\": 8995,\n          \"num\": 700,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/sylveon\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/sylveon.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/sylveon.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/sylveon\",\n          \"baseForme\": null,\n          \"smogonTier\": \"NU\",\n          \"species\": \"sylveon\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/sylveon.gif\",\n          \"types\": [\n            {\n              \"name\": \"Fairy\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dark\", \"dragon\", \"fighting\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"electric\", \"fairy\", \"flying\", \"ghost\", \"grass\", \"ground\", \"ice\", \"normal\", \"psychic\", \"rock\", \"water\"],\n                  \"resistedTypes\": [\"fire\", \"poison\", \"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"poison\", \"steel\"],\n                  \"effectlessTypes\": [\"dragon\"],\n                  \"normalTypes\": [\"electric\", \"fairy\", \"fire\", \"flying\", \"ghost\", \"grass\", \"ground\", \"ice\", \"normal\", \"psychic\", \"rock\", \"water\"],\n                  \"resistedTypes\": [\"bug\", \"dark\", \"fighting\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 95, \"attack\": 65, \"defense\": 65, \"specialattack\": 110, \"specialdefense\": 130, \"speed\": 60 },\n          \"baseStatsTotal\": 525,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/sylveon_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Intertwining Pokémon\",\n          \"respelling\": \"SIL-vee-on\",\n          \"ipa\": \"/ˈsɪlviːɒn/\",\n          \"color\": \"Pink\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/sylveon.mp3\",\n          \"weight\": 23.5,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        }\n      ],\n      \"preevolutions\": null\n    }\n  }\n}\n"
  },
  {
    "path": "tests/testUtils/full-data-responses/rattata-alola.json",
    "content": "{\n  \"data\": {\n    \"getPokemon\": {\n      \"abilities\": {\n        \"first\": {\n          \"name\": \"Gluttony\",\n          \"key\": \"gluttony\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gluttony_(Ability)\",\n          \"desc\": \"When this Pokémon is holding a Berry that usually activates with 1/4 or less of its maximum HP, it is eaten at 1/2 or less of its maximum HP instead.\",\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/gluttony.shtml\",\n          \"shortDesc\": \"This Pokémon eats Berries at 1/2 max HP or less instead of their usual 1/4 max HP.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/gluttony\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"second\": {\n          \"name\": \"Hustle\",\n          \"key\": \"hustle\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hustle_(Ability)\",\n          \"desc\": \"This Pokémon's Attack is multiplied by 1.5 and the accuracy of its physical attacks is multiplied by 0.8.\",\n          \"isFieldAbility\": \"If you have a Pokémon with Hustle at the front of your party (even if fainted), there is a 50% chance that a Pokémon will be forced to the upper bound of their encounter level range.\",\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/hustle.shtml\",\n          \"shortDesc\": \"This Pokémon's Attack is 1.5x and accuracy of its physical attacks is 0.8x.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/hustle\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"hidden\": {\n          \"name\": \"Thick Fat\",\n          \"key\": \"thickfat\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thick_Fat_(Ability)\",\n          \"desc\": \"If a Pokémon uses a Fire- or Ice-type attack against this Pokémon, that Pokémon's offensive stat is halved when calculating the damage to this Pokémon.\",\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/thick_fat.shtml\",\n          \"shortDesc\": \"Fire-/Ice-type moves against this Pokémon deal damage with a halved offensive stat.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/thick_fat\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"special\": null\n      },\n      \"learnsets\": {\n        \"generation3\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": []\n        },\n        \"generation4\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": []\n        },\n        \"generation5\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": []\n        },\n        \"generation6\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": []\n        },\n        \"generation7\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"counter\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Counter_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Deals damage to the last opposing Pokémon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical attack this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 75,\n                \"name\": \"Counter\",\n                \"pp\": 20,\n                \"priority\": -5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/counter.shtml\",\n                \"shortDesc\": \"If hit by physical attack, returns double damage.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/counter\",\n                \"target\": \"Foe that last hit user\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"finalgambit\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Final_Gambit_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Deals damage to the target equal to the user's current HP. If this move is successful, the user faints.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Final Gambit\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/finalgambit.shtml\",\n                \"shortDesc\": \"Does damage equal to the user's HP. User faints.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/final-gambit\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"furyswipes\",\n                \"accuracy\": 80,\n                \"basePower\": \"18\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Swipes_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Fury Swipes\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furyswipes.shtml\",\n                \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-swipes\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"mefirst\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Me_First_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user uses the move the target chose for use this turn against it, if possible, with its power multiplied by 1.5. The move must be a damaging move other than Beak Blast, Belch, Blazing Torque, Combat Torque, Comeuppance, Counter, Covet, Focus Punch, Magical Torque, Me First, Metal Burst, Mirror Coat, Noxious Torque, Shell Trap, Struggle, Thief, or Wicked Torque. Fails if the target moves before the user. Ignores the target's substitute for the purpose of copying the move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Me First\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mefirst.shtml\",\n                \"shortDesc\": \"Copies a foe at 1.5x power. User must be faster.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/me-first\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"revenge\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Revenge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Revenge\",\n                \"pp\": 10,\n                \"priority\": -4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/revenge.shtml\",\n                \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/revenge\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"reversal\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reversal_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Reversal\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reversal.shtml\",\n                \"shortDesc\": \"More power the less HP the user has left.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reversal\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snatch\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snatch_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"If another Pokémon uses certain non-damaging moves this turn, the user steals that move to use itself. If multiple Pokémon use one of those moves this turn, the applicable moves are all stolen by the first Pokémon in turn order that used this move this turn. This effect is ignored while the user is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Snatch\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snatch.shtml\",\n                \"shortDesc\": \"User steals certain support moves to use itself.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snatch\",\n                \"target\": \"Self\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"stockpile\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stockpile_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Defense and Special Defense by 1 stage. The user's Stockpile count increases by 1. Fails if the user's Stockpile count is 3. The user's Stockpile count is reset to 0 when it is no longer active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Stockpile\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stockpile.shtml\",\n                \"shortDesc\": \"Raises user's Defense, Sp. Def by 1. Max 3 uses.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stockpile\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swallow\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swallow_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user restores its HP based on its Stockpile count. Restores 1/4 of its maximum HP if it's 1, 1/2 of its maximum HP if it's 2, both rounded half down, and all of its HP if it's 3. Fails if the user's Stockpile count is 0. The user's Defense and Special Defense decrease by as many stages as Stockpile had increased them, and the user's Stockpile count resets to 0.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swallow\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swallow.shtml\",\n                \"shortDesc\": \"Heals the user based on uses of Stockpile.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swallow\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"switcheroo\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Switcheroo_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail or Z-Crystal, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, a Drive, or a Memory to or from a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally, respectively. The target is immune to this move if it has the Sticky Hold Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Switcheroo\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/switcheroo.shtml\",\n                \"shortDesc\": \"User switches its held item with the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/switcheroo\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"uproar\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Uproar_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user spends three turns locked into this move. This move targets an opponent at random on each turn. On the first of the three turns, all sleeping active Pokémon wake up. During the three turns, no active Pokémon can fall asleep by any means, and Pokémon switched in during the effect do not wake up. If the user is prevented from moving or the attack is not successful against the target during one of the turns, the effect ends.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 30,\n                \"name\": \"Uproar\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uproar.shtml\",\n                \"shortDesc\": \"Lasts 3 turns. Active Pokémon cannot fall asleep.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/uproar\",\n                \"target\": \"Random\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            }\n          ],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"confide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Confide\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"darkpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dark_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dark Pulse\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/darkpulse.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dark-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"embargo\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Embargo_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"For 5 turns, the target's held item has no effect. An item's effect of causing forme changes is unaffected, but any other effects from such items are negated. During the effect, Fling and Natural Gift are prevented from being used by the target. Items thrown at the target with Fling will still activate for it. If the target uses Baton Pass, the replacement will remain unable to use items.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Embargo\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/embargo.shtml\",\n                \"shortDesc\": \"For 5 turns, the target's item has no effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/embargo\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"grassknot\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Grass_Knot_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move's power is 20 if the target weighs less than 10 kg, 40 if less than 25 kg, 60 if less than 50 kg, 80 if less than 100 kg, 100 if less than 200 kg, and 120 if greater than or equal to 200 kg.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Grass Knot\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/grassknot.shtml\",\n                \"shortDesc\": \"More power the heavier the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/grass-knot\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Grass\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"quash\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quash_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Causes the target to take its turn after all other Pokémon this turn, no matter the priority of its selected move. Fails if the target already moved this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Quash\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quash.shtml\",\n                \"shortDesc\": \"Forces the target to move last this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quash\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"shadowball\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Shadow Ball\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"shadowclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Shadow Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sludgebomb\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sludge_Bomb_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to poison the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Sludge Bomb\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sludgebomb.shtml\",\n                \"shortDesc\": \"30% chance to poison the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sludge-bomb\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snarl\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snarl_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Snarl\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snarl.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snarl\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"taunt\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Taunt_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Prevents the target from using non-damaging moves for its next three turns. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Taunt\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/taunt.shtml\",\n                \"shortDesc\": \"Target can't use status moves its next 3 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/taunt\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"thief\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thief_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Thief\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thief.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thief\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"torment\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Torment_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Prevents the target from selecting the same move for use two turns in a row. This effect ends when the target is no longer active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Torment\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/torment.shtml\",\n                \"shortDesc\": \"Target can't select the same move twice in a row.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/torment\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"uturn\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/U-turn_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"U-turn\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uturn.shtml\",\n                \"shortDesc\": \"User switches out after damaging the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/u-turn\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 140\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"covet\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Covet\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"endeavor\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endeavor_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Deals damage to the target equal to (target's current HP - user's current HP). The target is unaffected if its current HP is less than or equal to the user's current HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Endeavor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endeavor.shtml\",\n                \"shortDesc\": \"Lowers the target's HP to the user's HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endeavor\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"lastresort\",\n                \"accuracy\": 100,\n                \"basePower\": \"140\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Last Resort\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                \"shortDesc\": \"Fails unless each known move has been used.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"shockwave\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Shock Wave\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snatch\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snatch_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"If another Pokémon uses certain non-damaging moves this turn, the user steals that move to use itself. If multiple Pokémon use one of those moves this turn, the applicable moves are all stolen by the first Pokémon in turn order that used this move this turn. This effect is ignored while the user is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Snatch\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snatch.shtml\",\n                \"shortDesc\": \"User steals certain support moves to use itself.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snatch\",\n                \"target\": \"Self\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"superfang\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Super_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Deals damage to the target equal to half of its current HP, rounded down, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Super Fang\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superfang.shtml\",\n                \"shortDesc\": \"Does damage equal to 1/2 target's current HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/super-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"uproar\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Uproar_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user spends three turns locked into this move. This move targets an opponent at random on each turn. On the first of the three turns, all sleeping active Pokémon wake up. During the three turns, no active Pokémon can fall asleep by any means, and Pokémon switched in during the effect do not wake up. If the user is prevented from moving or the attack is not successful against the target during one of the turns, the effect ends.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 30,\n                \"name\": \"Uproar\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uproar.shtml\",\n                \"shortDesc\": \"Lasts 3 turns. Active Pokémon cannot fall asleep.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/uproar\",\n                \"target\": \"Random\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 7,\n              \"level\": 19,\n              \"move\": {\n                \"key\": \"assurance\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Assurance_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Power doubles if the target has already taken damage this turn, other than direct damage from Belly Drum, confusion, Curse, or Pain Split.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Assurance\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/assurance.shtml\",\n                \"shortDesc\": \"Power doubles if target was damaged this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/assurance\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 10,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 22,\n              \"move\": {\n                \"key\": \"crunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Crunch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 31,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 34,\n              \"move\": {\n                \"key\": \"endeavor\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endeavor_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Deals damage to the target equal to (target's current HP - user's current HP). The target is unaffected if its current HP is less than or equal to the user's current HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Endeavor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endeavor.shtml\",\n                \"shortDesc\": \"Lowers the target's HP to the user's HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endeavor\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 7,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 16,\n              \"move\": {\n                \"key\": \"hyperfang\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Hyper Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperfang.shtml\",\n                \"shortDesc\": \"10% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 13,\n              \"move\": {\n                \"key\": \"pursuit\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pursuit_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"If an opposing Pokémon switches out this turn, this move hits that Pokémon before it leaves the field, even if it was not the original target. If the user moves after an opponent using Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokémon does not become active until the end of the turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Pursuit\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pursuit.shtml\",\n                \"shortDesc\": \"If a foe is switching out, hits it at 2x power.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pursuit\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 4,\n              \"move\": {\n                \"key\": \"quickattack\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Quick Attack\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"suckerpunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sucker_Punch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Fails if the target did not select a physical attack, special attack, or Me First for use this turn, or if the target moves before the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Sucker Punch\",\n                \"pp\": 5,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/suckerpunch.shtml\",\n                \"shortDesc\": \"Usually goes first. Fails if target is not attacking.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sucker-punch\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 28,\n              \"move\": {\n                \"key\": \"superfang\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Super_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Deals damage to the target equal to half of its current HP, rounded down, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Super Fang\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superfang.shtml\",\n                \"shortDesc\": \"Does damage equal to 1/2 target's current HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/super-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tackle\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Tackle\",\n                \"pp\": 35,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"tailwhip\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Whip\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ]\n        },\n        \"generation8\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": []\n        }\n      },\n      \"key\": \"rattataalola\",\n      \"eggGroups\": [\"Field\"],\n      \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 1 },\n      \"evolutionLevel\": null,\n      \"flavorTexts\": [\n        {\n          \"flavor\": \"Its whiskers provide it with a keen sense of smell, enabling it to pick up the scent of hidden food and locate it instantly.\",\n          \"game\": \"Let's Go Eevee\"\n        }\n      ],\n      \"forme\": \"Alola\",\n      \"formeLetter\": \"A\",\n      \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n      \"height\": 0.3,\n      \"isEggObtainable\": true,\n      \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/rattata-alola.gif\",\n      \"levellingRate\": \"Medium Fast\",\n      \"maximumHatchTime\": 4111,\n      \"minimumHatchTime\": 3855,\n      \"num\": 19,\n      \"otherFormes\": [\"rattata\"],\n      \"serebiiPage\": \"https://www.serebii.net/pokedex-swsh/rattata\",\n      \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/rattata-alola.gif\",\n      \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/rattata-alola.gif\",\n      \"smogonPage\": \"https://www.smogon.com/dex/ss/pokemon/rattata-alola\",\n      \"baseForme\": null,\n      \"smogonTier\": \"Past\",\n      \"species\": \"rattata-alola\",\n      \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/rattata-alola.gif\",\n      \"types\": [\n        {\n          \"name\": \"Dark\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"ghost\", \"psychic\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\"bug\", \"dragon\", \"electric\", \"fire\", \"flying\", \"grass\", \"ground\", \"ice\", \"normal\", \"poison\", \"rock\", \"steel\", \"water\"],\n              \"resistedTypes\": [\"dark\", \"fairy\", \"fighting\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"bug\", \"fairy\", \"fighting\"],\n              \"effectlessTypes\": [\"psychic\"],\n              \"normalTypes\": [\"dragon\", \"electric\", \"fire\", \"flying\", \"grass\", \"ground\", \"ice\", \"normal\", \"poison\", \"rock\", \"steel\", \"water\"],\n              \"resistedTypes\": [\"dark\", \"ghost\"]\n            }\n          }\n        },\n        {\n          \"name\": \"Normal\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [],\n              \"effectlessTypes\": [\"ghost\"],\n              \"normalTypes\": [\n                \"bug\",\n                \"dark\",\n                \"dragon\",\n                \"electric\",\n                \"fairy\",\n                \"fighting\",\n                \"fire\",\n                \"flying\",\n                \"grass\",\n                \"ground\",\n                \"ice\",\n                \"normal\",\n                \"poison\",\n                \"psychic\",\n                \"water\"\n              ],\n              \"resistedTypes\": [\"rock\", \"steel\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"fighting\"],\n              \"effectlessTypes\": [\"ghost\"],\n              \"normalTypes\": [\n                \"bug\",\n                \"dark\",\n                \"dragon\",\n                \"electric\",\n                \"fairy\",\n                \"fire\",\n                \"flying\",\n                \"grass\",\n                \"ground\",\n                \"ice\",\n                \"normal\",\n                \"poison\",\n                \"psychic\",\n                \"rock\",\n                \"steel\",\n                \"water\"\n              ],\n              \"resistedTypes\": []\n            }\n          }\n        }\n      ],\n      \"baseSpecies\": \"rattata\",\n      \"baseStats\": { \"hp\": 30, \"attack\": 56, \"defense\": 35, \"specialattack\": 25, \"specialdefense\": 35, \"speed\": 72 },\n      \"baseStatsTotal\": 253,\n      \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/rattata_(Pokémon)\",\n      \"catchRate\": { \"base\": 255, \"percentageWithOrdinaryPokeballAtFullHealth\": \"43.9%\" },\n      \"classification\": null,\n      \"respelling\": \"uh-LO-luhn RA-TAT-ta\",\n      \"ipa\": \"/əˈloʊlən ˌræˈtætæ/\",\n      \"color\": \"Black\",\n      \"cosmeticFormes\": null,\n      \"cry\": \"https://play.pokemonshowdown.com/audio/cries/rattata.mp3\",\n      \"weight\": 3.8,\n      \"legendary\": false,\n      \"mythical\": false,\n      \"evolutions\": [\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Gluttony\",\n              \"key\": \"gluttony\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Gluttony_(Ability)\",\n              \"desc\": \"When this Pokémon is holding a Berry that usually activates with 1/4 or less of its maximum HP, it is eaten at 1/2 or less of its maximum HP instead.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/gluttony.shtml\",\n              \"shortDesc\": \"This Pokémon eats Berries at 1/2 max HP or less instead of their usual 1/4 max HP.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/gluttony\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": {\n              \"name\": \"Hustle\",\n              \"key\": \"hustle\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hustle_(Ability)\",\n              \"desc\": \"This Pokémon's Attack is multiplied by 1.5 and the accuracy of its physical attacks is multiplied by 0.8.\",\n              \"isFieldAbility\": \"If you have a Pokémon with Hustle at the front of your party (even if fainted), there is a 50% chance that a Pokémon will be forced to the upper bound of their encounter level range.\",\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/hustle.shtml\",\n              \"shortDesc\": \"This Pokémon's Attack is 1.5x and accuracy of its physical attacks is 0.8x.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/hustle\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"hidden\": {\n              \"name\": \"Thick Fat\",\n              \"key\": \"thickfat\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thick_Fat_(Ability)\",\n              \"desc\": \"If a Pokémon uses a Fire- or Ice-type attack against this Pokémon, that Pokémon's offensive stat is halved when calculating the damage to this Pokémon.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/thick_fat.shtml\",\n              \"shortDesc\": \"Fire-/Ice-type moves against this Pokémon deal damage with a halved offensive stat.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/thick_fat\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": []\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": []\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": []\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": []\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"counter\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Counter_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Deals damage to the last opposing Pokémon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical attack this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 75,\n                    \"name\": \"Counter\",\n                    \"pp\": 20,\n                    \"priority\": -5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/counter.shtml\",\n                    \"shortDesc\": \"If hit by physical attack, returns double damage.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/counter\",\n                    \"target\": \"Foe that last hit user\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"finalgambit\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Final_Gambit_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Deals damage to the target equal to the user's current HP. If this move is successful, the user faints.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Final Gambit\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/finalgambit.shtml\",\n                    \"shortDesc\": \"Does damage equal to the user's HP. User faints.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/final-gambit\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"furyswipes\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"18\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Swipes_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Fury Swipes\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furyswipes.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-swipes\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"mefirst\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Me_First_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user uses the move the target chose for use this turn against it, if possible, with its power multiplied by 1.5. The move must be a damaging move other than Beak Blast, Belch, Blazing Torque, Combat Torque, Comeuppance, Counter, Covet, Focus Punch, Magical Torque, Me First, Metal Burst, Mirror Coat, Noxious Torque, Shell Trap, Struggle, Thief, or Wicked Torque. Fails if the target moves before the user. Ignores the target's substitute for the purpose of copying the move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Me First\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mefirst.shtml\",\n                    \"shortDesc\": \"Copies a foe at 1.5x power. User must be faster.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/me-first\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"revenge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Revenge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Revenge\",\n                    \"pp\": 10,\n                    \"priority\": -4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/revenge.shtml\",\n                    \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/revenge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"reversal\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Reversal_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The power of this move is 20 if X is 33 to 48, 40 if X is 17 to 32, 80 if X is 10 to 16, 100 if X is 5 to 9, 150 if X is 2 to 4, and 200 if X is 0 or 1, where X is equal to (user's current HP * 48 / user's maximum HP), rounded down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Reversal\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/reversal.shtml\",\n                    \"shortDesc\": \"More power the less HP the user has left.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/reversal\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snatch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snatch_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"If another Pokémon uses certain non-damaging moves this turn, the user steals that move to use itself. If multiple Pokémon use one of those moves this turn, the applicable moves are all stolen by the first Pokémon in turn order that used this move this turn. This effect is ignored while the user is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Snatch\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snatch.shtml\",\n                    \"shortDesc\": \"User steals certain support moves to use itself.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snatch\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"stockpile\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stockpile_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Defense and Special Defense by 1 stage. The user's Stockpile count increases by 1. Fails if the user's Stockpile count is 3. The user's Stockpile count is reset to 0 when it is no longer active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Stockpile\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stockpile.shtml\",\n                    \"shortDesc\": \"Raises user's Defense, Sp. Def by 1. Max 3 uses.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stockpile\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swallow\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swallow_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user restores its HP based on its Stockpile count. Restores 1/4 of its maximum HP if it's 1, 1/2 of its maximum HP if it's 2, both rounded half down, and all of its HP if it's 3. Fails if the user's Stockpile count is 0. The user's Defense and Special Defense decrease by as many stages as Stockpile had increased them, and the user's Stockpile count resets to 0.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swallow\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swallow.shtml\",\n                    \"shortDesc\": \"Heals the user based on uses of Stockpile.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swallow\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"switcheroo\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Switcheroo_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user swaps its held item with the target's held item. Fails if either the user or the target is holding a Mail or Z-Crystal, if neither is holding an item, if the user is trying to give or take a Mega Stone to or from the species that can Mega Evolve with it, or if the user is trying to give or take a Blue Orb, a Red Orb, a Griseous Orb, a Plate, a Drive, or a Memory to or from a Kyogre, a Groudon, a Giratina, an Arceus, a Genesect, or a Silvally, respectively. The target is immune to this move if it has the Sticky Hold Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Switcheroo\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/switcheroo.shtml\",\n                    \"shortDesc\": \"User switches its held item with the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/switcheroo\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"uproar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Uproar_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user spends three turns locked into this move. This move targets an opponent at random on each turn. On the first of the three turns, all sleeping active Pokémon wake up. During the three turns, no active Pokémon can fall asleep by any means, and Pokémon switched in during the effect do not wake up. If the user is prevented from moving or the attack is not successful against the target during one of the turns, the effect ends.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 30,\n                    \"name\": \"Uproar\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uproar.shtml\",\n                    \"shortDesc\": \"Lasts 3 turns. Active Pokémon cannot fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/uproar\",\n                    \"target\": \"Random\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"darkpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dark_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dark Pulse\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/darkpulse.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dark-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"embargo\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Embargo_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"For 5 turns, the target's held item has no effect. An item's effect of causing forme changes is unaffected, but any other effects from such items are negated. During the effect, Fling and Natural Gift are prevented from being used by the target. Items thrown at the target with Fling will still activate for it. If the target uses Baton Pass, the replacement will remain unable to use items.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Embargo\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/embargo.shtml\",\n                    \"shortDesc\": \"For 5 turns, the target's item has no effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/embargo\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"grassknot\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Grass_Knot_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move's power is 20 if the target weighs less than 10 kg, 40 if less than 25 kg, 60 if less than 50 kg, 80 if less than 100 kg, 100 if less than 200 kg, and 120 if greater than or equal to 200 kg.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Grass Knot\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/grassknot.shtml\",\n                    \"shortDesc\": \"More power the heavier the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/grass-knot\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"quash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quash_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Causes the target to take its turn after all other Pokémon this turn, no matter the priority of its selected move. Fails if the target already moved this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Quash\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quash.shtml\",\n                    \"shortDesc\": \"Forces the target to move last this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowball\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Ball_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Shadow Ball\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowball.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-ball\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Shadow Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sludgebomb\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sludge_Bomb_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to poison the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Sludge Bomb\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sludgebomb.shtml\",\n                    \"shortDesc\": \"30% chance to poison the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sludge-bomb\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snarl\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snarl_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Snarl\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snarl.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snarl\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"taunt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Taunt_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Prevents the target from using non-damaging moves for its next three turns. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Taunt\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/taunt.shtml\",\n                    \"shortDesc\": \"Target can't use status moves its next 3 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/taunt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"thief\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thief_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Thief\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thief.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thief\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"torment\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Torment_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Prevents the target from selecting the same move for use two turns in a row. This effect ends when the target is no longer active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Torment\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/torment.shtml\",\n                    \"shortDesc\": \"Target can't select the same move twice in a row.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/torment\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"uturn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/U-turn_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"U-turn\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uturn.shtml\",\n                    \"shortDesc\": \"User switches out after damaging the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/u-turn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 140\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"covet\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Covet_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this attack was successful and the user has not fainted, it steals the target's held item if the user is not holding one. The target's item is not stolen if it is a Mail or Z-Crystal, or if the target is a Kyogre holding a Blue Orb, a Groudon holding a Red Orb, a Giratina holding a Griseous Orb, an Arceus holding a Plate, a Genesect holding a Drive, a Silvally holding a Memory, or a Pokémon that can Mega Evolve holding the Mega Stone for its species. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Covet\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/covet.shtml\",\n                    \"shortDesc\": \"If the user has no item, it steals the target's.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/covet\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"endeavor\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endeavor_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Deals damage to the target equal to (target's current HP - user's current HP). The target is unaffected if its current HP is less than or equal to the user's current HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Endeavor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endeavor.shtml\",\n                    \"shortDesc\": \"Lowers the target's HP to the user's HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endeavor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"lastresort\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"140\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Last_Resort_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"This move fails unless the user knows this move and at least one other move, and has used all the other moves it knows at least once each since it became active or Transformed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Last Resort\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/lastresort.shtml\",\n                    \"shortDesc\": \"Fails unless each known move has been used.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/last-resort\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shockwave\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shock_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Shock Wave\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shockwave.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shock-wave\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snatch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snatch_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"If another Pokémon uses certain non-damaging moves this turn, the user steals that move to use itself. If multiple Pokémon use one of those moves this turn, the applicable moves are all stolen by the first Pokémon in turn order that used this move this turn. This effect is ignored while the user is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Snatch\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snatch.shtml\",\n                    \"shortDesc\": \"User steals certain support moves to use itself.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snatch\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"superfang\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Super_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Deals damage to the target equal to half of its current HP, rounded down, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Super Fang\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superfang.shtml\",\n                    \"shortDesc\": \"Does damage equal to 1/2 target's current HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/super-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"uproar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Uproar_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user spends three turns locked into this move. This move targets an opponent at random on each turn. On the first of the three turns, all sleeping active Pokémon wake up. During the three turns, no active Pokémon can fall asleep by any means, and Pokémon switched in during the effect do not wake up. If the user is prevented from moving or the attack is not successful against the target during one of the turns, the effect ends.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 30,\n                    \"name\": \"Uproar\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uproar.shtml\",\n                    \"shortDesc\": \"Lasts 3 turns. Active Pokémon cannot fall asleep.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/uproar\",\n                    \"target\": \"Random\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 19,\n                  \"move\": {\n                    \"key\": \"assurance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Assurance_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Power doubles if the target has already taken damage this turn, other than direct damage from Belly Drum, confusion, Curse, or Pain Split.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Assurance\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/assurance.shtml\",\n                    \"shortDesc\": \"Power doubles if target was damaged this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/assurance\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 22,\n                  \"move\": {\n                    \"key\": \"crunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Crunch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 31,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 34,\n                  \"move\": {\n                    \"key\": \"endeavor\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endeavor_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Deals damage to the target equal to (target's current HP - user's current HP). The target is unaffected if its current HP is less than or equal to the user's current HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Endeavor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endeavor.shtml\",\n                    \"shortDesc\": \"Lowers the target's HP to the user's HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endeavor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 7,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 16,\n                  \"move\": {\n                    \"key\": \"hyperfang\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperfang.shtml\",\n                    \"shortDesc\": \"10% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"pursuit\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pursuit_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"If an opposing Pokémon switches out this turn, this move hits that Pokémon before it leaves the field, even if it was not the original target. If the user moves after an opponent using Flip Turn, Parting Shot, Teleport, U-turn, or Volt Switch, but not Baton Pass, it will hit that opponent before it leaves the field. Power doubles and no accuracy check is done if the user hits an opponent switching out, and the user's turn is over; if an opponent faints from this, the replacement Pokémon does not become active until the end of the turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Pursuit\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pursuit.shtml\",\n                    \"shortDesc\": \"If a foe is switching out, hits it at 2x power.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pursuit\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 4,\n                  \"move\": {\n                    \"key\": \"quickattack\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Quick_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Quick Attack\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/quickattack.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/quick-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"suckerpunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sucker_Punch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Fails if the target did not select a physical attack, special attack, or Me First for use this turn, or if the target moves before the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Sucker Punch\",\n                    \"pp\": 5,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/suckerpunch.shtml\",\n                    \"shortDesc\": \"Usually goes first. Fails if target is not attacking.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sucker-punch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 28,\n                  \"move\": {\n                    \"key\": \"superfang\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Super_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Deals damage to the target equal to half of its current HP, rounded down, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Super Fang\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superfang.shtml\",\n                    \"shortDesc\": \"Does damage equal to 1/2 target's current HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/super-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tackle\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tackle_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Tackle\",\n                    \"pp\": 35,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tackle.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tackle\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"tailwhip\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Whip_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Whip\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwhip.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-whip\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": []\n            }\n          },\n          \"key\": \"raticatealola\",\n          \"eggGroups\": [\"Field\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 2 },\n          \"evolutionLevel\": \"level 20 at night\",\n          \"flavorTexts\": [\n            {\n              \"flavor\": \"It makes its Rattata underlings gather food for it, dining solely on the most nutritious and delicious fare.\",\n              \"game\": \"Let's Go Eevee\"\n            }\n          ],\n          \"forme\": \"Alola\",\n          \"formeLetter\": \"A\",\n          \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n          \"height\": 0.7,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/raticate-alola.gif\",\n          \"levellingRate\": \"Medium Fast\",\n          \"maximumHatchTime\": 4111,\n          \"minimumHatchTime\": 3855,\n          \"num\": 20,\n          \"otherFormes\": [\"raticate\", \"raticatealolatotem\"],\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-swsh/raticate\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/raticate-alola.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/raticate-alola.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/pokemon/raticate-alola\",\n          \"baseForme\": null,\n          \"smogonTier\": \"Past\",\n          \"species\": \"raticate-alola\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/raticate-alola.gif\",\n          \"types\": [\n            {\n              \"name\": \"Dark\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"ghost\", \"psychic\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dragon\",\n                    \"electric\",\n                    \"fire\",\n                    \"flying\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"rock\",\n                    \"steel\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"dark\", \"fairy\", \"fighting\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"bug\", \"fairy\", \"fighting\"],\n                  \"effectlessTypes\": [\"psychic\"],\n                  \"normalTypes\": [\"dragon\", \"electric\", \"fire\", \"flying\", \"grass\", \"ground\", \"ice\", \"normal\", \"poison\", \"rock\", \"steel\", \"water\"],\n                  \"resistedTypes\": [\"dark\", \"ghost\"]\n                }\n              }\n            },\n            {\n              \"name\": \"Normal\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [],\n                  \"effectlessTypes\": [\"ghost\"],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dark\",\n                    \"dragon\",\n                    \"electric\",\n                    \"fairy\",\n                    \"fighting\",\n                    \"fire\",\n                    \"flying\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"psychic\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"rock\", \"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"fighting\"],\n                  \"effectlessTypes\": [\"ghost\"],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dark\",\n                    \"dragon\",\n                    \"electric\",\n                    \"fairy\",\n                    \"fire\",\n                    \"flying\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"psychic\",\n                    \"rock\",\n                    \"steel\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": []\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": \"raticate\",\n          \"baseStats\": { \"hp\": 75, \"attack\": 71, \"defense\": 70, \"specialattack\": 40, \"specialdefense\": 80, \"speed\": 77 },\n          \"baseStatsTotal\": 413,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/raticate_(Pokémon)\",\n          \"catchRate\": { \"base\": 127, \"percentageWithOrdinaryPokeballAtFullHealth\": \"26%\" },\n          \"classification\": null,\n          \"respelling\": \"uh-LO-luhn RAT-ih-kate\",\n          \"ipa\": \"/əˈloʊlən ˈrætɪkeɪt/\",\n          \"color\": \"Black\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/raticate.mp3\",\n          \"weight\": 25.5,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        }\n      ],\n      \"preevolutions\": null\n    }\n  }\n}\n"
  },
  {
    "path": "tests/testUtils/full-data-responses/salamence.json",
    "content": "{\n  \"data\": {\n    \"getPokemon\": {\n      \"abilities\": {\n        \"first\": {\n          \"name\": \"Intimidate\",\n          \"key\": \"intimidate\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Intimidate_(Ability)\",\n          \"desc\": \"On switch-in, this Pokémon lowers the Attack of opposing Pokémon by 1 stage. Pokémon with the Inner Focus, Oblivious, Own Tempo, or Scrappy Abilities and Pokémon behind a substitute are immune.\",\n          \"isFieldAbility\": \"If a Pokémon with Intimidate is at the front of your party (even if fainted), there is a 50% chance it will prevent a random wild encounter that would have occurred if the wild Pokémon would be at least 5 levels lower than the Pokémon with Intimidate.\",\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/intimidate.shtml\",\n          \"shortDesc\": \"On switch-in, this Pokémon lowers the Attack of opponents by 1 stage.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/intimidate\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"second\": null,\n        \"hidden\": {\n          \"name\": \"Moxie\",\n          \"key\": \"moxie\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Moxie_(Ability)\",\n          \"desc\": \"This Pokémon's Attack is raised by 1 stage if it attacks and knocks out another Pokémon.\",\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/moxie.shtml\",\n          \"shortDesc\": \"This Pokémon's Attack is raised by 1 stage if it attacks and KOes another Pokémon.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/moxie\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"special\": null\n      },\n      \"learnsets\": {\n        \"generation3\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"aerialace\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Aerial Ace\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"dragonbreath\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Breath\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"dragondance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"refresh\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Refresh\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"scaryface\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Scary Face\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tmMoves\": [\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"aerialace\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Aerial Ace\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"brickbreak\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Brick Break\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"cut\",\n                \"accuracy\": 95,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Unobtainable\",\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Cut\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"earthquake\",\n                \"accuracy\": 100,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Damage doubles if the target is using Dig.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earthquake\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"roar\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roar\",\n                \"pp\": 20,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"rocksmash\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 70,\n                \"name\": \"Rock Smash\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"rocktomb\",\n                \"accuracy\": 95,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Rock Tomb\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"steelwing\",\n                \"accuracy\": 90,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Wing_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to raise the user's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Steel Wing\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelwing.shtml\",\n                \"shortDesc\": \"10% chance to raise the user's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-wing\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"strength\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Strength\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"bodyslam\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Body Slam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"defensecurl\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Defense_Curl_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the user's Defense by 1 stage. As long as the user remains active, the power of the user's Ice Ball and Rollout will be doubled (this effect is not stackable).\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Defense Curl\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/defensecurl.shtml\",\n                \"shortDesc\": \"Raises the user's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/defense-curl\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"furycutter\",\n                \"accuracy\": 95,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fury Cutter\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"mimic\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Mimic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                \"shortDesc\": \"The last move the target used replaces this one.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"mudslap\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Mud-Slap\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"rockslide\",\n                \"accuracy\": 90,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Rock Slide\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"rollout\",\n                \"accuracy\": 90,\n                \"basePower\": \"30\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rollout_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Rollout\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rollout.shtml\",\n                \"shortDesc\": \"Power doubles with each hit. Repeats for 5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rollout\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 61,\n              \"move\": {\n                \"key\": \"crunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Crunch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 93,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 38,\n              \"move\": {\n                \"key\": \"dragonbreath\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Breath\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 79,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"ember\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Ember\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 50,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 21,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 30,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"rage\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rage\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 3,\n              \"level\": 47,\n              \"move\": {\n                \"key\": \"scaryface\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Scary Face\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            }\n          ]\n        },\n        \"generation4\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"hydropump\",\n                \"accuracy\": 80,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hydro_Pump_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Hydro Pump\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hydropump.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hydro-pump\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"stoneedge\",\n                \"accuracy\": 80,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stone Edge\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 180\n              }\n            }\n          ],\n          \"tmMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"aerialace\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Aerial Ace\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"brickbreak\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Brick Break\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"captivate\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Captivate\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"cut\",\n                \"accuracy\": 95,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Unobtainable\",\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Cut\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"defog\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Defog_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's evasiveness by 1 stage. If this move is successful and whether or not the target's evasiveness was affected, the effects of Reflect, Light Screen, Aurora Veil, Safeguard, Mist, Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the target's side, and the effects of Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the user's side. Ignores a target's substitute, although a substitute will still block the lowering of evasiveness. If there is a terrain active and this move is successful, the terrain will be cleared.\",\n                \"isFieldMove\": \"The Pokémon can clear out fog on the field. Defog can be taught to a Pokémon by using HM05 in Diamond, Pearl, and Platinum. Since Generation V, it has lost its HM status.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Defog\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/defog.shtml\",\n                \"shortDesc\": \"-1 evasion; ends user and target hazards/terrain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/defog\",\n                \"target\": \"Normal\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"earthquake\",\n                \"accuracy\": 100,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Damage doubles if the target is using Dig.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earthquake\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"gigaimpact\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Giga Impact\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"naturalgift\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Natural Gift\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"roar\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roar\",\n                \"pp\": 20,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"rockslide\",\n                \"accuracy\": 90,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Rock Slide\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"rocksmash\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 70,\n                \"name\": \"Rock Smash\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"rocktomb\",\n                \"accuracy\": 95,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Rock Tomb\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"roost\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roost\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                \"target\": \"Self\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"shadowclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Shadow Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"steelwing\",\n                \"accuracy\": 90,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Wing_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to raise the user's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Steel Wing\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelwing.shtml\",\n                \"shortDesc\": \"10% chance to raise the user's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-wing\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"stoneedge\",\n                \"accuracy\": 80,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stone Edge\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"strength\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Strength\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"aircutter\",\n                \"accuracy\": 95,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Air_Cutter_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Air Cutter\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aircutter.shtml\",\n                \"shortDesc\": \"High critical hit ratio. Hits adjacent foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/air-cutter\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"furycutter\",\n                \"accuracy\": 95,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fury Cutter\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"heatwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"95\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Heat Wave\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                \"shortDesc\": \"10% chance to burn the foe(s).\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"mudslap\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Mud-Slap\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"ominouswind\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ominous_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to raise the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Ominous Wind\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ominouswind.shtml\",\n                \"shortDesc\": \"10% chance to raise all stats by 1 (not acc/eva).\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ominous-wind\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"rollout\",\n                \"accuracy\": 90,\n                \"basePower\": \"30\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rollout_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Rollout\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rollout.shtml\",\n                \"shortDesc\": \"Power doubles with each hit. Repeats for 5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rollout\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"tailwind\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tailwind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"twister\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Twister\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 53,\n              \"move\": {\n                \"key\": \"crunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Crunch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 70,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 32,\n              \"move\": {\n                \"key\": \"dragonbreath\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Breath\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 61,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"ember\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Ember\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"firefang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Fire Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 50,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 20,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 30,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"rage\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rage\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 43,\n              \"move\": {\n                \"key\": \"scaryface\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Scary Face\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderfang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Thunder Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 37,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ]\n        },\n        \"generation5\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"aerialace\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Aerial Ace\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dragondance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            }\n          ],\n          \"tmMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"aerialace\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Aerial Ace\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"brickbreak\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Brick Break\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"bulldoze\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bulldoze\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"cut\",\n                \"accuracy\": 95,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Unobtainable\",\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Cut\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"earthquake\",\n                \"accuracy\": 100,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Damage doubles if the target is using Dig.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earthquake\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"gigaimpact\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Giga Impact\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"honeclaws\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hone Claws\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                \"target\": \"Self\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"incinerate\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Incinerate\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"roar\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roar\",\n                \"pp\": 20,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"rockslide\",\n                \"accuracy\": 90,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Rock Slide\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"rocksmash\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 70,\n                \"name\": \"Rock Smash\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"rocktomb\",\n                \"accuracy\": 95,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Rock Tomb\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"shadowclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Shadow Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"stoneedge\",\n                \"accuracy\": 80,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stone Edge\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"strength\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Strength\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"heatwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"95\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Heat Wave\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                \"shortDesc\": \"10% chance to burn the foe(s).\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"hypervoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Hyper Voice\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"roost\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roost\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                \"target\": \"Self\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"tailwind\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tailwind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 53,\n              \"move\": {\n                \"key\": \"crunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Crunch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 70,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 32,\n              \"move\": {\n                \"key\": \"dragonbreath\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Breath\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 61,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 80,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"ember\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Ember\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"firefang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Fire Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 50,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 20,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 30,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"rage\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rage\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 43,\n              \"move\": {\n                \"key\": \"scaryface\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Scary Face\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderfang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Thunder Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"level\": 37,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ]\n        },\n        \"generation6\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"aerialace\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Aerial Ace\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"brickbreak\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Brick Break\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"bulldoze\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bulldoze\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"confide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Confide\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"cut\",\n                \"accuracy\": 95,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Unobtainable\",\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Cut\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"earthquake\",\n                \"accuracy\": 100,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Damage doubles if the target is using Dig.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earthquake\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"gigaimpact\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Giga Impact\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"honeclaws\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hone Claws\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                \"target\": \"Self\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"incinerate\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Incinerate\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"roar\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roar\",\n                \"pp\": 20,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"rockslide\",\n                \"accuracy\": 90,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Rock Slide\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"rocksmash\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 70,\n                \"name\": \"Rock Smash\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"rocktomb\",\n                \"accuracy\": 95,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Rock Tomb\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"roost\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roost\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                \"target\": \"Self\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"shadowclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Shadow Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"steelwing\",\n                \"accuracy\": 90,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Wing_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to raise the user's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Steel Wing\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelwing.shtml\",\n                \"shortDesc\": \"10% chance to raise the user's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-wing\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"stoneedge\",\n                \"accuracy\": 80,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stone Edge\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"strength\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Strength\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"heatwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"95\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Heat Wave\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                \"shortDesc\": \"10% chance to burn the foe(s).\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"hypervoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Hyper Voice\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"tailwind\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tailwind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"crunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Crunch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 13,\n              \"move\": {\n                \"key\": \"dragonbreath\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Breath\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 29,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"ember\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Ember\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"firefang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Fire Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 49,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 50,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 20,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 30,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"rage\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rage\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 42,\n              \"move\": {\n                \"key\": \"scaryface\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Scary Face\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderfang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Thunder Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"level\": 35,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ]\n        },\n        \"generation7\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"aerialace\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Aerial Ace\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"brickbreak\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Brick Break\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"brutalswing\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brutal_Swing_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Brutal Swing\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brutalswing.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent Pokémon.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brutal-swing\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bulldoze\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bulldoze\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"confide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Confide\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"earthquake\",\n                \"accuracy\": 100,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Damage doubles if the target is using Dig.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earthquake\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"gigaimpact\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Giga Impact\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"roar\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roar\",\n                \"pp\": 20,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rockslide\",\n                \"accuracy\": 90,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Rock Slide\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rocktomb\",\n                \"accuracy\": 95,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Rock Tomb\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"roost\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roost\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                \"target\": \"Self\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"shadowclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Shadow Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"steelwing\",\n                \"accuracy\": 90,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Wing_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to raise the user's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Steel Wing\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelwing.shtml\",\n                \"shortDesc\": \"10% chance to raise the user's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-wing\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"stoneedge\",\n                \"accuracy\": 80,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stone Edge\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"aquatail\",\n                \"accuracy\": 90,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Aqua Tail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"defog\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Defog_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's evasiveness by 1 stage. If this move is successful and whether or not the target's evasiveness was affected, the effects of Reflect, Light Screen, Aurora Veil, Safeguard, Mist, Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the target's side, and the effects of Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the user's side. Ignores a target's substitute, although a substitute will still block the lowering of evasiveness. If there is a terrain active and this move is successful, the terrain will be cleared.\",\n                \"isFieldMove\": \"The Pokémon can clear out fog on the field. Defog can be taught to a Pokémon by using HM05 in Diamond, Pearl, and Platinum. Since Generation V, it has lost its HM status.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Defog\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/defog.shtml\",\n                \"shortDesc\": \"-1 evasion; ends user and target hazards/terrain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/defog\",\n                \"target\": \"Normal\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"heatwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"95\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Heat Wave\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                \"shortDesc\": \"10% chance to burn the foe(s).\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hypervoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Hyper Voice\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"irontail\",\n                \"accuracy\": 75,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Tail\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"laserfocus\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Laser Focus\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"tailwind\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tailwind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"crunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Crunch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 63,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 13,\n              \"move\": {\n                \"key\": \"dragonbreath\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Breath\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 29,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"ember\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Ember\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"firefang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Fire Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 49,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 21,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 17,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"rage\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rage\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 42,\n              \"move\": {\n                \"key\": \"scaryface\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Scary Face\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"thunderfang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Thunder Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 35,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ]\n        },\n        \"generation8\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"aerialace\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Aerial Ace\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                \"shortDesc\": \"This move does not check accuracy.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"airslash\",\n                \"accuracy\": 95,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Air_Slash_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Air Slash\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/airslash.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/air-slash\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"bodyslam\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Body Slam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"breakingswipe\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Breaking_Swipe_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": null,\n                \"desc\": \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Breaking Swipe\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/breakingswipe.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Attack by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/breaking-swipe\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"brickbreak\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Brick Break\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"bulldoze\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bulldoze\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"crunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Crunch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dracometeor\",\n                \"accuracy\": 90,\n                \"basePower\": \"130\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Draco Meteor\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 195\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dragoncheer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Cheer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": null,\n                \"desc\": \"Raises the target's chance for a critical hit by 1 stage, or by 2 stages if the target is Dragon type. Fails if there is no ally adjacent to the user, or if the target already has this effect or the Focus Energy effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Cheer\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragoncheer.shtml\",\n                \"shortDesc\": \"Ally: Crit ratio +1, or +2 if ally is Dragon type.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-cheer\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dragondance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dragon Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dragonpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Pulse\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"dualwingbeat\",\n                \"accuracy\": 90,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dual_Wingbeat_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": null,\n                \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dual Wingbeat\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dualwingbeat.shtml\",\n                \"shortDesc\": \"Hits 2 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dual-wingbeat\",\n                \"target\": \"Normal\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"earthquake\",\n                \"accuracy\": 100,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Damage doubles if the target is using Dig.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earthquake\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                \"target\": \"All Adjacent\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"fireblast\",\n                \"accuracy\": 85,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Fire Blast\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"firefang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Fire Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"firespin\",\n                \"accuracy\": 85,\n                \"basePower\": \"35\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Spin_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fire Spin\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firespin.shtml\",\n                \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-spin\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"gigaimpact\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Giga Impact\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"heatwave\",\n                \"accuracy\": 90,\n                \"basePower\": \"95\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Heat Wave\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                \"shortDesc\": \"10% chance to burn the foe(s).\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"helpinghand\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Helping Hand\",\n                \"pp\": 20,\n                \"priority\": 5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                \"target\": \"Adjacent Ally\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"hurricane\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hurricane_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to confuse the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Hurricane\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hurricane.shtml\",\n                \"shortDesc\": \"30% chance to confuse target. Can't miss in rain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hurricane\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"hydropump\",\n                \"accuracy\": 80,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hydro_Pump_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Hydro Pump\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hydropump.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hydro-pump\",\n                \"target\": \"Normal\",\n                \"type\": \"Water\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"hyperbeam\",\n                \"accuracy\": 90,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 150,\n                \"name\": \"Hyper Beam\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                \"shortDesc\": \"User cannot move next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"hypervoice\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Hyper Voice\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"irondefense\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Raises the user's Defense by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Iron Defense\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                \"shortDesc\": \"Raises the user's Defense by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                \"target\": \"Self\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"ironhead\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Iron Head\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                \"target\": \"Normal\",\n                \"type\": \"Steel\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"mudslap\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Mud-Slap\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"outrage\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Outrage\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                \"target\": \"Random\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"psychicfangs\",\n                \"accuracy\": 100,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_Fangs_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Psychic Fangs\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychicfangs.shtml\",\n                \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic-fangs\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"roar\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roar\",\n                \"pp\": 20,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"rockslide\",\n                \"accuracy\": 90,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Rock Slide\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"rocktomb\",\n                \"accuracy\": 95,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Rock Tomb\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"scaryface\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Scary Face\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"shadowclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Shadow Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Ghost\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"stoneedge\",\n                \"accuracy\": 80,\n                \"basePower\": \"100\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Stone Edge\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Rock\",\n                \"zMovePower\": 180\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"sunnyday\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sunny Day\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                \"target\": \"All\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"tailwind\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tailwind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                \"target\": \"Ally's Side\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"takedown\",\n                \"accuracy\": 85,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Take Down\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                \"shortDesc\": \"Has 1/4 recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"temperflare\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Temper_Flare_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": null,\n                \"desc\": \"Power doubles if the user's last move on the previous turn, including moves called by other moves or those used through Instruct, Magic Coat, Snatch, or the Dancer or Magic Bounce Abilities, failed to do any of its normal effects, not including damage from an unsuccessful High Jump Kick, Jump Kick, or Mind Blown, or if the user was prevented from moving by any effect other than recharging or Sky Drop. A move that was blocked by Baneful Bunker, Detect, King's Shield, Protect, Spiky Shield, Crafty Shield, Mat Block, Quick Guard, or Wide Guard will not double this move's power, nor will Bounce or Fly ending early due to the effect of Gravity, Smack Down, or Thousand Arrows.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Temper Flare\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/temperflare.shtml\",\n                \"shortDesc\": \"Power doubles if the user's last move failed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/temper-flare\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"terablast\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": null,\n                \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tera Blast\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"thunderfang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Thunder Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Electric\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"bite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bite\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"crunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Crunch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 73,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"dragonbreath\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 30% chance to paralyze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Breath\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                \"shortDesc\": \"30% chance to paralyze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 33,\n              \"move\": {\n                \"key\": \"dragonclaw\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Dragon Claw\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"dragontail\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Dragon Tail\",\n                \"pp\": 10,\n                \"priority\": -6,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                \"target\": \"Normal\",\n                \"type\": \"Dragon\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"dualwingbeat\",\n                \"accuracy\": 90,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dual_Wingbeat_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": null,\n                \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Dual Wingbeat\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dualwingbeat.shtml\",\n                \"shortDesc\": \"Hits 2 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dual-wingbeat\",\n                \"target\": \"Normal\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"ember\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Ember\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 55,\n              \"move\": {\n                \"key\": \"flamethrower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to burn the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Flamethrower\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                \"shortDesc\": \"10% chance to burn the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fire\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 0,\n              \"move\": {\n                \"key\": \"fly\",\n                \"accuracy\": 95,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Fly\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                \"target\": \"Any\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 46,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 15,\n              \"move\": {\n                \"key\": \"headbutt\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"roost\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Roost\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                \"target\": \"Self\",\n                \"type\": \"Flying\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 20,\n              \"move\": {\n                \"key\": \"scaryface\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Scary Face\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 39,\n              \"move\": {\n                \"key\": \"zenheadbutt\",\n                \"accuracy\": 90,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 20% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Zen Headbutt\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                \"shortDesc\": \"20% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                \"target\": \"Normal\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 160\n              }\n            }\n          ]\n        }\n      },\n      \"key\": \"salamence\",\n      \"eggGroups\": [\"Dragon\"],\n      \"evYields\": { \"hp\": 0, \"attack\": 3, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n      \"evolutionLevel\": \"50\",\n      \"flavorTexts\": [\n        { \"flavor\": \"It's uncontrollable if enraged. It flies around spouting flames, scorching fields and mountains.\", \"game\": \"Legends: Z-A\" }\n      ],\n      \"forme\": null,\n      \"formeLetter\": null,\n      \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n      \"height\": 1.5,\n      \"isEggObtainable\": true,\n      \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/salamence.gif\",\n      \"levellingRate\": \"Slow\",\n      \"maximumHatchTime\": 10536,\n      \"minimumHatchTime\": 10280,\n      \"num\": 373,\n      \"otherFormes\": [\"salamencemega\"],\n      \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/salamence\",\n      \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/salamence.gif\",\n      \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/salamence.gif\",\n      \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/salamence\",\n      \"baseForme\": null,\n      \"smogonTier\": \"RUBL\",\n      \"species\": \"salamence\",\n      \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/salamence.gif\",\n      \"types\": [\n        {\n          \"name\": \"Dragon\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"dragon\"],\n              \"effectlessTypes\": [\"fairy\"],\n              \"normalTypes\": [\n                \"bug\",\n                \"dark\",\n                \"electric\",\n                \"fighting\",\n                \"fire\",\n                \"flying\",\n                \"ghost\",\n                \"grass\",\n                \"ground\",\n                \"ice\",\n                \"normal\",\n                \"poison\",\n                \"psychic\",\n                \"rock\",\n                \"water\"\n              ],\n              \"resistedTypes\": [\"steel\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"dragon\", \"fairy\", \"ice\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\"bug\", \"dark\", \"fighting\", \"flying\", \"ghost\", \"ground\", \"normal\", \"poison\", \"psychic\", \"rock\", \"steel\"],\n              \"resistedTypes\": [\"electric\", \"fire\", \"grass\", \"water\"]\n            }\n          }\n        },\n        {\n          \"name\": \"Flying\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"bug\", \"fighting\", \"grass\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\"dark\", \"dragon\", \"fairy\", \"fire\", \"flying\", \"ghost\", \"ground\", \"ice\", \"normal\", \"poison\", \"psychic\", \"water\"],\n              \"resistedTypes\": [\"electric\", \"rock\", \"steel\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"electric\", \"ice\", \"rock\"],\n              \"effectlessTypes\": [\"ground\"],\n              \"normalTypes\": [\"dark\", \"dragon\", \"fairy\", \"fire\", \"flying\", \"ghost\", \"normal\", \"poison\", \"psychic\", \"steel\", \"water\"],\n              \"resistedTypes\": [\"bug\", \"fighting\", \"grass\"]\n            }\n          }\n        }\n      ],\n      \"baseSpecies\": null,\n      \"baseStats\": { \"hp\": 95, \"attack\": 135, \"defense\": 80, \"specialattack\": 110, \"specialdefense\": 80, \"speed\": 100 },\n      \"baseStatsTotal\": 600,\n      \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/salamence_(Pokémon)\",\n      \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n      \"classification\": \"Dragon Pokémon\",\n      \"respelling\": \"SAL-uh-mence\",\n      \"ipa\": \"/ˈsæləmɛns/\",\n      \"color\": \"Blue\",\n      \"cosmeticFormes\": null,\n      \"cry\": \"https://play.pokemonshowdown.com/audio/cries/salamence.mp3\",\n      \"weight\": 102.6,\n      \"legendary\": false,\n      \"mythical\": false,\n      \"evolutions\": null,\n      \"preevolutions\": [\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Rock Head\",\n              \"key\": \"rockhead\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Head_(Ability)\",\n              \"desc\": \"This Pokémon does not take recoil damage, except Struggle. Does not affect Life Orb damage or crash damage.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/rock_head.shtml\",\n              \"shortDesc\": \"This Pokémon does not take recoil damage besides Struggle/Life Orb/crash damage.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/rock_head\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": null,\n            \"hidden\": {\n              \"name\": \"Overcoat\",\n              \"key\": \"overcoat\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Overcoat_(Ability)\",\n              \"desc\": \"This Pokémon is immune to powder moves, damage from Sandstorm, and the effects of Rage Powder and the Effect Spore Ability.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/overcoat.shtml\",\n              \"shortDesc\": \"This Pokémon is immune to powder moves, Sandstorm damage, and Effect Spore.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/overcoat\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"aerialace\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Aerial Ace\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dragonbreath\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Breath\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"refresh\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Refresh_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user cures its burn, poison, or paralysis. Fails if the user is not burned, poisoned, or paralyzed.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Refresh\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/refresh.shtml\",\n                    \"shortDesc\": \"User cures its burn, poison, or paralysis.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/refresh\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"scaryface\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scary Face\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                    \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"aerialace\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Aerial Ace\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"brickbreak\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Brick Break\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                    \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"cut\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Unobtainable\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Cut\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"earthquake\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Damage doubles if the target is using Dig.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earthquake\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rocksmash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 70,\n                    \"name\": \"Rock Smash\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                    \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rocktomb\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Rock Tomb\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"steelwing\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Wing_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to raise the user's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Steel Wing\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelwing.shtml\",\n                    \"shortDesc\": \"10% chance to raise the user's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-wing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"strength\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Strength\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"defensecurl\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Defense_Curl_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the user's Defense by 1 stage. As long as the user remains active, the power of the user's Ice Ball and Rollout will be doubled (this effect is not stackable).\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Defense Curl\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/defensecurl.shtml\",\n                    \"shortDesc\": \"Raises the user's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/defense-curl\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"furycutter\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fury Cutter\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                    \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mimic\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Mimic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                    \"shortDesc\": \"The last move the target used replaces this one.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rockslide\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Rock Slide\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                    \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"rollout\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rollout_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Rollout\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rollout.shtml\",\n                    \"shortDesc\": \"Power doubles with each hit. Repeats for 5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rollout\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"crunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Crunch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 93,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 38,\n                  \"move\": {\n                    \"key\": \"dragonbreath\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Breath\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 79,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"ember\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Ember\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 3,\n                  \"level\": 47,\n                  \"move\": {\n                    \"key\": \"scaryface\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scary Face\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                    \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hydropump\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hydro_Pump_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Hydro Pump\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hydropump.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hydro-pump\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"stoneedge\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stone Edge\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 180\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"aerialace\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Aerial Ace\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"brickbreak\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Brick Break\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                    \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"cut\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Unobtainable\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Cut\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"defog\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Defog_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's evasiveness by 1 stage. If this move is successful and whether or not the target's evasiveness was affected, the effects of Reflect, Light Screen, Aurora Veil, Safeguard, Mist, Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the target's side, and the effects of Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the user's side. Ignores a target's substitute, although a substitute will still block the lowering of evasiveness. If there is a terrain active and this move is successful, the terrain will be cleared.\",\n                    \"isFieldMove\": \"The Pokémon can clear out fog on the field. Defog can be taught to a Pokémon by using HM05 in Diamond, Pearl, and Platinum. Since Generation V, it has lost its HM status.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Defog\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/defog.shtml\",\n                    \"shortDesc\": \"-1 evasion; ends user and target hazards/terrain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/defog\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"earthquake\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Damage doubles if the target is using Dig.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earthquake\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"gigaimpact\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Giga Impact\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rockslide\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Rock Slide\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                    \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rocksmash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 70,\n                    \"name\": \"Rock Smash\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                    \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rocktomb\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Rock Tomb\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"roost\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roost\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                    \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                    \"target\": \"Self\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"shadowclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Shadow Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"steelwing\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Wing_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to raise the user's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Steel Wing\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelwing.shtml\",\n                    \"shortDesc\": \"10% chance to raise the user's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-wing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"stoneedge\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stone Edge\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"strength\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Strength\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"aircutter\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Air_Cutter_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Air Cutter\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aircutter.shtml\",\n                    \"shortDesc\": \"High critical hit ratio. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/air-cutter\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"furycutter\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fury Cutter\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                    \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"heatwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"95\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Heat Wave\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                    \"shortDesc\": \"10% chance to burn the foe(s).\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"ominouswind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ominous_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to raise the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Ominous Wind\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ominouswind.shtml\",\n                    \"shortDesc\": \"10% chance to raise all stats by 1 (not acc/eva).\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ominous-wind\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rollout\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"30\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rollout_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Rollout\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rollout.shtml\",\n                    \"shortDesc\": \"Power doubles with each hit. Repeats for 5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rollout\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tailwind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tailwind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                    \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"twister\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Twister\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                    \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"crunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Crunch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 70,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 32,\n                  \"move\": {\n                    \"key\": \"dragonbreath\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Breath\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"ember\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Ember\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"firefang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Fire Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                    \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"scaryface\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scary Face\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                    \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderfang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Thunder Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"aerialace\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Aerial Ace\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                }\n              ],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"aerialace\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Aerial Ace\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"brickbreak\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Brick Break\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                    \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"bulldoze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bulldoze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                    \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"cut\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Unobtainable\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Cut\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"earthquake\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Damage doubles if the target is using Dig.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earthquake\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"gigaimpact\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Giga Impact\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"honeclaws\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hone Claws\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"incinerate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Incinerate\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                    \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rockslide\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Rock Slide\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                    \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rocksmash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 70,\n                    \"name\": \"Rock Smash\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                    \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rocktomb\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Rock Tomb\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"shadowclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Shadow Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"stoneedge\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stone Edge\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"strength\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Strength\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"heatwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"95\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Heat Wave\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                    \"shortDesc\": \"10% chance to burn the foe(s).\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"roost\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roost\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                    \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                    \"target\": \"Self\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tailwind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tailwind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                    \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 53,\n                  \"move\": {\n                    \"key\": \"crunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Crunch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 70,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 32,\n                  \"move\": {\n                    \"key\": \"dragonbreath\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Breath\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 61,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 80,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"ember\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Ember\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"firefang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Fire Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                    \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"scaryface\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scary Face\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                    \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderfang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Thunder Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"level\": 37,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"aerialace\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Aerial Ace\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"brickbreak\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Brick Break\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                    \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"bulldoze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bulldoze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                    \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"cut\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Unobtainable\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Cut\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"earthquake\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Damage doubles if the target is using Dig.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earthquake\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"gigaimpact\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Giga Impact\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"honeclaws\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hone Claws\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"incinerate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Incinerate\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                    \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rockslide\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Rock Slide\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                    \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rocksmash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 70,\n                    \"name\": \"Rock Smash\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                    \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rocktomb\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Rock Tomb\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"roost\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roost\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                    \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                    \"target\": \"Self\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"shadowclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Shadow Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"steelwing\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Wing_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to raise the user's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Steel Wing\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelwing.shtml\",\n                    \"shortDesc\": \"10% chance to raise the user's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-wing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"stoneedge\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stone Edge\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"strength\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Strength\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"heatwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"95\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Heat Wave\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                    \"shortDesc\": \"10% chance to burn the foe(s).\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tailwind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tailwind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                    \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"crunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Crunch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"dragonbreath\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Breath\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"ember\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Ember\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"firefang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Fire Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                    \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 49,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 30,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"scaryface\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scary Face\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                    \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderfang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Thunder Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ]\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"aerialace\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Aerial Ace\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"brickbreak\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Brick Break\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                    \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"brutalswing\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brutal_Swing_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Brutal Swing\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brutalswing.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent Pokémon.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brutal-swing\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bulldoze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bulldoze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                    \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"earthquake\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Damage doubles if the target is using Dig.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earthquake\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"gigaimpact\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Giga Impact\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rockslide\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Rock Slide\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                    \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rocktomb\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Rock Tomb\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"roost\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roost\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                    \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                    \"target\": \"Self\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"shadowclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Shadow Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"steelwing\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Steel_Wing_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to raise the user's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Steel Wing\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/steelwing.shtml\",\n                    \"shortDesc\": \"10% chance to raise the user's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/steel-wing\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"stoneedge\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stone Edge\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"aquatail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aqua_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Aqua Tail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aquatail.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aqua-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"defog\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Defog_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's evasiveness by 1 stage. If this move is successful and whether or not the target's evasiveness was affected, the effects of Reflect, Light Screen, Aurora Veil, Safeguard, Mist, Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the target's side, and the effects of Spikes, Toxic Spikes, Stealth Rock, and Sticky Web end for the user's side. Ignores a target's substitute, although a substitute will still block the lowering of evasiveness. If there is a terrain active and this move is successful, the terrain will be cleared.\",\n                    \"isFieldMove\": \"The Pokémon can clear out fog on the field. Defog can be taught to a Pokémon by using HM05 in Diamond, Pearl, and Platinum. Since Generation V, it has lost its HM status.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Defog\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/defog.shtml\",\n                    \"shortDesc\": \"-1 evasion; ends user and target hazards/terrain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/defog\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"heatwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"95\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Heat Wave\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                    \"shortDesc\": \"10% chance to burn the foe(s).\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"irontail\",\n                    \"accuracy\": 75,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Tail\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irontail.shtml\",\n                    \"shortDesc\": \"30% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"laserfocus\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Laser_Focus_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Until the end of the next turn, the user's attacks will be critical hits.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Laser Focus\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/laserfocus.shtml\",\n                    \"shortDesc\": \"Until the end of the next turn, user's moves crit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/laser-focus\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailwind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tailwind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                    \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"crunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Crunch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 63,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"dragonbreath\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Breath\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 29,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"ember\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Ember\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"firefang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Fire Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                    \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 49,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 21,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 17,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"rage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rage\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"scaryface\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scary Face\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                    \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"thunderfang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Thunder Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"aerialace\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Aerial Ace\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"airslash\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Air_Slash_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Air Slash\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/airslash.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/air-slash\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bodyslam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Body Slam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"breakingswipe\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Breaking_Swipe_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": null,\n                    \"desc\": \"Has a 100% chance to lower the target's Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Breaking Swipe\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/breakingswipe.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Attack by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/breaking-swipe\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"brickbreak\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Brick Break\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                    \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bulldoze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bulldoze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bulldoze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bulldoze.shtml\",\n                    \"shortDesc\": \"100% chance lower adjacent Pkmn Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bulldoze\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"crunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Crunch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dracometeor\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"130\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Draco Meteor\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                    \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 195\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragoncheer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Cheer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": null,\n                    \"desc\": \"Raises the target's chance for a critical hit by 1 stage, or by 2 stages if the target is Dragon type. Fails if there is no ally adjacent to the user, or if the target already has this effect or the Focus Energy effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Cheer\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragoncheer.shtml\",\n                    \"shortDesc\": \"Ally: Crit ratio +1, or +2 if ally is Dragon type.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-cheer\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragondance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dragon Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragonpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Pulse\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"dualwingbeat\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dual_Wingbeat_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": null,\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dual Wingbeat\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dualwingbeat.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dual-wingbeat\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"earthquake\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earthquake_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Damage doubles if the target is using Dig.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earthquake\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthquake.shtml\",\n                    \"shortDesc\": \"Hits adjacent Pokémon. Double damage on Dig.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earthquake\",\n                    \"target\": \"All Adjacent\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"fireblast\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Fire Blast\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"firefang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Fire Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                    \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"firespin\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"35\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Spin_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fire Spin\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firespin.shtml\",\n                    \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-spin\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"gigaimpact\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Giga_Impact_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Giga Impact\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/gigaimpact.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/giga-impact\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"heatwave\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"95\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Heat_Wave_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Heat Wave\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/heatwave.shtml\",\n                    \"shortDesc\": \"10% chance to burn the foe(s).\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/heat-wave\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"helpinghand\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Helping Hand\",\n                    \"pp\": 20,\n                    \"priority\": 5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                    \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                    \"target\": \"Adjacent Ally\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hurricane\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hurricane_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to confuse the target. This move can hit a target using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop. If the weather is Primordial Sea or Rain Dance, this move does not check accuracy. If the weather is Desolate Land or Sunny Day, this move's accuracy is 50%. If this move is used against a Pokémon holding Utility Umbrella, this move's accuracy remains at 70%.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Hurricane\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hurricane.shtml\",\n                    \"shortDesc\": \"30% chance to confuse target. Can't miss in rain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hurricane\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hydropump\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hydro_Pump_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Hydro Pump\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hydropump.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hydro-pump\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hyperbeam\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"If this move is successful, the user must recharge on the following turn and cannot select a move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 150,\n                    \"name\": \"Hyper Beam\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hyperbeam.shtml\",\n                    \"shortDesc\": \"User cannot move next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"hypervoice\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Hyper Voice\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                    \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"irondefense\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Raises the user's Defense by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Iron Defense\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                    \"shortDesc\": \"Raises the user's Defense by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                    \"target\": \"Self\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"ironhead\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Iron Head\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Steel\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"mudslap\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Mud-Slap\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"outrage\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Outrage\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                    \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                    \"target\": \"Random\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"psychicfangs\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Psychic_Fangs_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Psychic Fangs\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/psychicfangs.shtml\",\n                    \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/psychic-fangs\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"roar\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roar\",\n                    \"pp\": 20,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rockslide\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Rock Slide\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                    \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rocktomb\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Rock Tomb\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"scaryface\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scary Face\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                    \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"shadowclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Shadow Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ghost\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"stoneedge\",\n                    \"accuracy\": 80,\n                    \"basePower\": \"100\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Stone_Edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Stone Edge\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stoneedge.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/stone-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Rock\",\n                    \"zMovePower\": 180\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sunnyday\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sunny Day\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                    \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                    \"target\": \"All\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tailwind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tailwind_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"For 4 turns, the user and its party members have their Speed doubled. Fails if this move is already in effect for the user's side.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tailwind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailwind.shtml\",\n                    \"shortDesc\": \"For 4 turns, allies' Speed is doubled.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tailwind\",\n                    \"target\": \"Ally's Side\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"takedown\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Take Down\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                    \"shortDesc\": \"Has 1/4 recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"temperflare\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Temper_Flare_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": null,\n                    \"desc\": \"Power doubles if the user's last move on the previous turn, including moves called by other moves or those used through Instruct, Magic Coat, Snatch, or the Dancer or Magic Bounce Abilities, failed to do any of its normal effects, not including damage from an unsuccessful High Jump Kick, Jump Kick, or Mind Blown, or if the user was prevented from moving by any effect other than recharging or Sky Drop. A move that was blocked by Baneful Bunker, Detect, King's Shield, Protect, Spiky Shield, Crafty Shield, Mat Block, Quick Guard, or Wide Guard will not double this move's power, nor will Bounce or Fly ending early due to the effect of Gravity, Smack Down, or Thousand Arrows.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Temper Flare\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/temperflare.shtml\",\n                    \"shortDesc\": \"Power doubles if the user's last move failed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/temper-flare\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"thunderfang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Thunder Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                    \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Electric\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"bite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bite\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"crunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Crunch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                    \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 73,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"dragonbreath\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 30% chance to paralyze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Breath\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                    \"shortDesc\": \"30% chance to paralyze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 33,\n                  \"move\": {\n                    \"key\": \"dragonclaw\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Dragon Claw\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"dragontail\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Dragon Tail\",\n                    \"pp\": 10,\n                    \"priority\": -6,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                    \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dragon\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"dualwingbeat\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dual_Wingbeat_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": null,\n                    \"desc\": \"Hits twice. If the first hit breaks the target's substitute, it will take damage for the second hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Dual Wingbeat\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dualwingbeat.shtml\",\n                    \"shortDesc\": \"Hits 2 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dual-wingbeat\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"ember\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Ember\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"flamethrower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to burn the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Flamethrower\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                    \"shortDesc\": \"10% chance to burn the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fire\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 0,\n                  \"move\": {\n                    \"key\": \"fly\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fly_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This attack charges on the first turn and executes on the second. On the first turn, the user avoids all attacks other than Gust, Hurricane, Sky Uppercut, Smack Down, Thousand Arrows, Thunder, and Twister, and Gust and Twister have doubled power when used against it. If the user is holding a Power Herb, the move completes in one turn.\",\n                    \"isFieldMove\": \"The Pokémon can fly the player to any previously visited town/landmark. Fly can be taught to Pokémon with HM02 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Fly\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fly.shtml\",\n                    \"shortDesc\": \"Flies up on first turn, then strikes the next turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fly\",\n                    \"target\": \"Any\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 46,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"headbutt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"roost\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roost_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user restores 1/2 of its maximum HP, rounded half up. If the user is not Terastallized, until the end of the turn Flying-type users lose their Flying type and pure Flying-type users become Normal type. Does nothing if the user's HP is full.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Roost\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roost.shtml\",\n                    \"shortDesc\": \"Heals 50% HP. Flying-type removed 'til turn ends.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roost\",\n                    \"target\": \"Self\",\n                    \"type\": \"Flying\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"scaryface\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Scary Face\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                    \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"zenheadbutt\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 20% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Zen Headbutt\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                    \"shortDesc\": \"20% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"shelgon\",\n          \"eggGroups\": [\"Dragon\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 2, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": \"30\",\n          \"flavorTexts\": [\n            {\n              \"flavor\": \"Within its rugged shell, its cells have begun changing. The shell peels off the instant the Pokémon evolves.\",\n              \"game\": \"Legends: Z-A\"\n            }\n          ],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n          \"height\": 1.1,\n          \"isEggObtainable\": true,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/shelgon.gif\",\n          \"levellingRate\": \"Slow\",\n          \"maximumHatchTime\": 10536,\n          \"minimumHatchTime\": 10280,\n          \"num\": 372,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/shelgon\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/shelgon.gif\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/shelgon.gif\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/shelgon\",\n          \"baseForme\": null,\n          \"smogonTier\": \"NFE\",\n          \"species\": \"shelgon\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/shelgon.gif\",\n          \"types\": [\n            {\n              \"name\": \"Dragon\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dragon\"],\n                  \"effectlessTypes\": [\"fairy\"],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dark\",\n                    \"electric\",\n                    \"fighting\",\n                    \"fire\",\n                    \"flying\",\n                    \"ghost\",\n                    \"grass\",\n                    \"ground\",\n                    \"ice\",\n                    \"normal\",\n                    \"poison\",\n                    \"psychic\",\n                    \"rock\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dragon\", \"fairy\", \"ice\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dark\", \"fighting\", \"flying\", \"ghost\", \"ground\", \"normal\", \"poison\", \"psychic\", \"rock\", \"steel\"],\n                  \"resistedTypes\": [\"electric\", \"fire\", \"grass\", \"water\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 65, \"attack\": 95, \"defense\": 100, \"specialattack\": 60, \"specialdefense\": 50, \"speed\": 50 },\n          \"baseStatsTotal\": 420,\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/shelgon_(Pokémon)\",\n          \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n          \"classification\": \"Endurance Pokémon\",\n          \"respelling\": \"SHELL-gon\",\n          \"ipa\": \"/ˈʃɛlɡɒn/\",\n          \"color\": \"White\",\n          \"cosmeticFormes\": null,\n          \"cry\": \"https://play.pokemonshowdown.com/audio/cries/shelgon.mp3\",\n          \"weight\": 110.5,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": [\n            {\n              \"abilities\": {\n                \"first\": {\n                  \"name\": \"Rock Head\",\n                  \"key\": \"rockhead\",\n                  \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Head_(Ability)\",\n                  \"desc\": \"This Pokémon does not take recoil damage, except Struggle. Does not affect Life Orb damage or crash damage.\",\n                  \"isFieldAbility\": null,\n                  \"serebiiPage\": \"https://www.serebii.net/abilitydex/rock_head.shtml\",\n                  \"shortDesc\": \"This Pokémon does not take recoil damage besides Struggle/Life Orb/crash damage.\",\n                  \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/rock_head\",\n                  \"pokemonThatHaveThisAbility\": []\n                },\n                \"second\": null,\n                \"hidden\": {\n                  \"name\": \"Sheer Force\",\n                  \"key\": \"sheerforce\",\n                  \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sheer_Force_(Ability)\",\n                  \"desc\": \"This Pokémon's attacks with secondary effects have their power multiplied by 1.3, but the secondary effects are removed. If a secondary effect was removed, it also removes the user's Life Orb recoil and Shell Bell recovery, and prevents the target's Anger Shell, Berserk, Color Change, Emergency Exit, Pickpocket, Wimp Out, Red Card, Eject Button, Kee Berry, and Maranga Berry from activating.\",\n                  \"isFieldAbility\": null,\n                  \"serebiiPage\": \"https://www.serebii.net/abilitydex/sheer_force.shtml\",\n                  \"shortDesc\": \"This Pokémon's attacks with secondary effects have 1.3x power; nullifies the effects.\",\n                  \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/sheer_force\",\n                  \"pokemonThatHaveThisAbility\": []\n                },\n                \"special\": null\n              },\n              \"learnsets\": {\n                \"generation3\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"attract\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Attract\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                        \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"cut\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Unobtainable\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Cut\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"fireblast\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"110\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Fire Blast\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 185\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"flamethrower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flamethrower\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"roar\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Roar\",\n                        \"pp\": 20,\n                        \"priority\": -6,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                        \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rocksmash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 70,\n                        \"name\": \"Rock Smash\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                        \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"secretpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                        \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Secret Power\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                        \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"strength\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Strength\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"bodyslam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"85\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Body Slam\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"defensecurl\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Defense_Curl_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the user's Defense by 1 stage. As long as the user remains active, the power of the user's Ice Ball and Rollout will be doubled (this effect is not stackable).\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Defense Curl\",\n                        \"pp\": 40,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/defensecurl.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/defense-curl\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"endure\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Endure\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                        \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"furycutter\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Fury Cutter\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                        \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Bug\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"mimic\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mimic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"While the user remains active, this move is replaced by the last move used by the target. The copied move has the maximum PP for that move. Fails if the target has not made a move, if the user has Transformed, if the user already knows the move, or if the move is Assist, Behemoth Bash, Behemoth Blade, Belch, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Sketch, Sleep Talk, Struggle, Tera Starstorm, Transform, or Wicked Torque.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Mimic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mimic.shtml\",\n                        \"shortDesc\": \"The last move the target used replaces this one.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mimic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"mudslap\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Mud-Slap\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"rollout\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"30\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rollout_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Rollout\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rollout.shtml\",\n                        \"shortDesc\": \"Power doubles with each hit. Repeats for 5 turns.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rollout\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 3,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"bite\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bite\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 56,\n                      \"move\": {\n                        \"key\": \"crunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Crunch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 78,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 38,\n                      \"move\": {\n                        \"key\": \"dragonbreath\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 30% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Dragon Breath\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 69,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 25,\n                      \"move\": {\n                        \"key\": \"ember\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Ember\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 21,\n                      \"move\": {\n                        \"key\": \"focusenergy\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Focus Energy\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                        \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"headbutt\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"leer\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Leer\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                        \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 30,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"rage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rage\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 3,\n                      \"level\": 47,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ]\n                },\n                \"generation4\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"attract\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Attract\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                        \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"captivate\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Captivate\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                        \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"cut\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Unobtainable\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Cut\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"dragonpulse\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"85\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Pulse\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                        \"target\": \"Any\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"endure\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Endure\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                        \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"fireblast\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"110\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Fire Blast\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 185\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"flamethrower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flamethrower\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"naturalgift\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Natural Gift\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                        \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"roar\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Roar\",\n                        \"pp\": 20,\n                        \"priority\": -6,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                        \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rocksmash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 70,\n                        \"name\": \"Rock Smash\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                        \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"secretpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                        \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Secret Power\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                        \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"shadowclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a higher chance for a critical hit.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Shadow Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                        \"shortDesc\": \"High critical hit ratio.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"strength\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Strength\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"dracometeor\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"130\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Draco Meteor\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                        \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 195\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"furycutter\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Fury Cutter\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                        \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Bug\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"headbutt\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"mudslap\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Mud-Slap\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"outrage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Outrage\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                        \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                        \"target\": \"Random\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"rollout\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"30\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rollout_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"If this move is successful, the user is locked into this move and cannot make another move until it misses, 5 turns have passed, or the attack cannot be used. Power doubles with each successful hit of this move and doubles again if Defense Curl was used previously by the user. If this move is called by Sleep Talk, the move is used for one turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Rollout\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rollout.shtml\",\n                        \"shortDesc\": \"Power doubles with each hit. Repeats for 5 turns.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rollout\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"twister\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Twister_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 20% chance to make the target flinch. Power doubles if the target is using Bounce, Fly, or Sky Drop, or is under the effect of Sky Drop.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Twister\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/twister.shtml\",\n                        \"shortDesc\": \"20% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/twister\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 4,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"bite\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bite\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 50,\n                      \"move\": {\n                        \"key\": \"crunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Crunch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 61,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 32,\n                      \"move\": {\n                        \"key\": \"dragonbreath\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 30% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Dragon Breath\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 55,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 25,\n                      \"move\": {\n                        \"key\": \"ember\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Ember\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 20,\n                      \"move\": {\n                        \"key\": \"focusenergy\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Focus Energy\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                        \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"headbutt\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"leer\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Leer\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                        \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 30,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"rage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rage\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 43,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 4,\n                      \"level\": 37,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                },\n                \"generation5\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"attract\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Attract\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                        \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"cut\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Unobtainable\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Cut\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"fireblast\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"110\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Fire Blast\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 185\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"flamethrower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flamethrower\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"honeclaws\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Hone Claws\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                        \"target\": \"Self\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"incinerate\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Incinerate\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                        \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"roar\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Roar\",\n                        \"pp\": 20,\n                        \"priority\": -6,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                        \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"rocksmash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 70,\n                        \"name\": \"Rock Smash\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                        \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"round\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Round\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                        \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"shadowclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a higher chance for a critical hit.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Shadow Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                        \"shortDesc\": \"High critical hit ratio.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"strength\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Strength\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"dracometeor\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"130\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Draco Meteor\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                        \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 195\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"dragonpulse\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"85\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Pulse\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                        \"target\": \"Any\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"hypervoice\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Hyper Voice\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                        \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"outrage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Outrage\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                        \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                        \"target\": \"Random\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 5,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"bite\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bite\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 50,\n                      \"move\": {\n                        \"key\": \"crunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Crunch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 61,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 32,\n                      \"move\": {\n                        \"key\": \"dragonbreath\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 30% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Dragon Breath\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 55,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 25,\n                      \"move\": {\n                        \"key\": \"ember\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Ember\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 20,\n                      \"move\": {\n                        \"key\": \"focusenergy\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Focus Energy\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                        \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"headbutt\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"leer\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Leer\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                        \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 30,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"rage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rage\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 43,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 5,\n                      \"level\": 37,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                },\n                \"generation6\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"attract\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Attract\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                        \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"confide\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Confide\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                        \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"cut\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Unobtainable\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Cut\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"fireblast\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"110\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Fire Blast\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 185\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"flamethrower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flamethrower\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"honeclaws\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Hone Claws\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                        \"target\": \"Self\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"incinerate\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Incinerate_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The target loses its held item if it is a Berry or a Gem. This move cannot cause Pokémon with the Sticky Hold Ability to lose their held item. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Incinerate\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/incinerate.shtml\",\n                        \"shortDesc\": \"Destroys the foe(s) Berry/Gem.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/incinerate\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"roar\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Roar\",\n                        \"pp\": 20,\n                        \"priority\": -6,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                        \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"rocksmash\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 70,\n                        \"name\": \"Rock Smash\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                        \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"round\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Round\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                        \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"secretpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                        \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Secret Power\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                        \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"shadowclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a higher chance for a critical hit.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Shadow Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                        \"shortDesc\": \"High critical hit ratio.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"strength\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Strength\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"dracometeor\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"130\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Draco Meteor\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                        \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 195\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"dragonpulse\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"85\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Pulse\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                        \"target\": \"Any\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"hypervoice\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Hyper Voice\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                        \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"outrage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Outrage\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                        \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                        \"target\": \"Random\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 6,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"bite\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bite\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 25,\n                      \"move\": {\n                        \"key\": \"crunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Crunch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 56,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 13,\n                      \"move\": {\n                        \"key\": \"dragonbreath\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 30% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Dragon Breath\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 29,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"ember\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Ember\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 49,\n                      \"move\": {\n                        \"key\": \"flamethrower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flamethrower\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 20,\n                      \"move\": {\n                        \"key\": \"focusenergy\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Focus Energy\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                        \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"headbutt\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"leer\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Leer\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                        \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 30,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"rage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rage\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 42,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 6,\n                      \"level\": 35,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                },\n                \"generation7\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"aerialace\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Aerial_Ace_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"This move does not check accuracy.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Aerial Ace\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/aerialace.shtml\",\n                        \"shortDesc\": \"This move does not check accuracy.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/aerial-ace\",\n                        \"target\": \"Any\",\n                        \"type\": \"Flying\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"attract\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Attract\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                        \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"confide\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Confide\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                        \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"doubleteam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Double Team\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                        \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"fireblast\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"110\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Fire Blast\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 185\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"flamethrower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flamethrower\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"frustration\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Frustration\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                        \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"hiddenpower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": 80,\n                        \"name\": \"Hidden Power\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                        \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"return\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"(user's Happiness * 2/5)\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Return\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                        \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"roar\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Roar\",\n                        \"pp\": 20,\n                        \"priority\": -6,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                        \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"round\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Round\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                        \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"shadowclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a higher chance for a critical hit.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Shadow Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                        \"shortDesc\": \"High critical hit ratio.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"swagger\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Swagger\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                        \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"toxic\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Toxic\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                        \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Poison\",\n                        \"zMovePower\": 0\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"dracometeor\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"130\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Draco Meteor\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                        \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 195\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"dragonpulse\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"85\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Pulse\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                        \"target\": \"Any\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"hypervoice\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Hyper Voice\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                        \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"outrage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Outrage\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                        \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                        \"target\": \"Random\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"snore\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"50\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 100,\n                        \"name\": \"Snore\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                        \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 7,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"bite\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bite\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 25,\n                      \"move\": {\n                        \"key\": \"crunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Crunch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 56,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 13,\n                      \"move\": {\n                        \"key\": \"dragonbreath\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 30% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Dragon Breath\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 29,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"ember\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Ember\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 49,\n                      \"move\": {\n                        \"key\": \"flamethrower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flamethrower\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 21,\n                      \"move\": {\n                        \"key\": \"focusenergy\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Focus Energy\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                        \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 17,\n                      \"move\": {\n                        \"key\": \"headbutt\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"leer\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Leer\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                        \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"rage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Once this move is successfully used, the user's Attack is raised by 1 stage every time it is hit by another Pokémon's attack as long as this move is chosen for use.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": \"Past\",\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rage\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rage.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack by 1 if hit during use.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rage\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 42,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 7,\n                      \"level\": 35,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                },\n                \"generation8\": {\n                  \"dreamworldMoves\": [],\n                  \"eggMoves\": [],\n                  \"eventMoves\": [],\n                  \"tmMoves\": [\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"bodyslam\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"85\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Body_Slam_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to paralyze the target. Damage doubles and no accuracy check is done if the target has used Minimize while active.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Body Slam\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bodyslam.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/body-slam\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"brickbreak\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Brick_Break_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"If this attack does not miss, the effects of Reflect, Light Screen, and Aurora Veil end for the target's side of the field before damage is calculated.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Brick Break\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/brickbreak.shtml\",\n                        \"shortDesc\": \"Destroys screens, unless the target is immune.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/brick-break\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fighting\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"crunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Crunch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"dracometeor\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"130\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Draco_Meteor_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Lowers the user's Special Attack by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Draco Meteor\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dracometeor.shtml\",\n                        \"shortDesc\": \"Lowers the user's Sp. Atk by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/draco-meteor\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 195\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"dragoncheer\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Cheer_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": null,\n                        \"desc\": \"Raises the target's chance for a critical hit by 1 stage, or by 2 stages if the target is Dragon type. Fails if there is no ally adjacent to the user, or if the target already has this effect or the Focus Energy effect. Baton Pass can be used to transfer this effect to an ally.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Dragon Cheer\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragoncheer.shtml\",\n                        \"shortDesc\": \"Ally: Crit ratio +1, or +2 if ally is Dragon type.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-cheer\",\n                        \"target\": \"Ally's Side\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"dragondance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's Attack and Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Dragon Dance\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragondance.shtml\",\n                        \"shortDesc\": \"Raises the user's Attack and Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-dance\",\n                        \"target\": \"Self\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"dragonpulse\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"85\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Pulse_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Pulse\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonpulse.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-pulse\",\n                        \"target\": \"Any\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"dragontail\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Tail_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If both the user and the target have not fainted, the target is forced to switch out and be replaced with a random unfainted ally. This effect fails if the target used Ingrain previously, has the Suction Cups Ability, or this move hit a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Dragon Tail\",\n                        \"pp\": 10,\n                        \"priority\": -6,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragontail.shtml\",\n                        \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-tail\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"endure\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Endure\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                        \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"facade\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Facade\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                        \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"fireblast\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"110\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Blast_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Fire Blast\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fireblast.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-blast\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 185\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"firefang\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"65\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Fang_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to burn the target and a 10% chance to make it flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Fire Fang\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firefang.shtml\",\n                        \"shortDesc\": \"10% chance to burn. 10% chance to flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-fang\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"firespin\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"35\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fire_Spin_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Prevents the target from switching for four or five turns (seven turns if the user is holding Grip Claw). Causes damage to the target equal to 1/8 of its maximum HP (1/6 if the user is holding Binding Band), rounded down, at the end of each turn during effect. The target can still switch out if it is holding Shed Shell or uses Baton Pass, Flip Turn, Parting Shot, Shed Tail, Teleport, U-turn, or Volt Switch. The effect ends if either the user or the target leaves the field, or if the target uses Mortal Spin, Rapid Spin, or Substitute successfully. This effect is not stackable or reset by using this or another binding move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Fire Spin\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/firespin.shtml\",\n                        \"shortDesc\": \"Traps and damages the target for 4-5 turns.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fire-spin\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"flamethrower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flamethrower\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"helpinghand\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Helping_Hand_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"The power of the target's attack this turn is multiplied by 1.5 (this effect is stackable). Fails if there is no ally adjacent to the user or if the ally already moved this turn, but does not fail if the ally is using a two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Helping Hand\",\n                        \"pp\": 20,\n                        \"priority\": 5,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/helpinghand.shtml\",\n                        \"shortDesc\": \"One adjacent ally's move power is 1.5x this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/helping-hand\",\n                        \"target\": \"Adjacent Ally\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"hydropump\",\n                        \"accuracy\": 80,\n                        \"basePower\": \"110\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hydro_Pump_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Hydro Pump\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hydropump.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hydro-pump\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 185\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"hypervoice\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hyper_Voice_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Hyper Voice\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hypervoice.shtml\",\n                        \"shortDesc\": \"No additional effect. Hits adjacent foes.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hyper-voice\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"irondefense\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Defense_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Raises the user's Defense by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Iron Defense\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/irondefense.shtml\",\n                        \"shortDesc\": \"Raises the user's Defense by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-defense\",\n                        \"target\": \"Self\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"ironhead\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Iron_Head_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Iron Head\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ironhead.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/iron-head\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Steel\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"mudslap\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"20\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mud-slap_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 100% chance to lower the target's accuracy by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Mud-Slap\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/mudslap.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's accuracy by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/mud-slap\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ground\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"outrage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Outrage\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                        \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                        \"target\": \"Random\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"raindance\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rain Dance\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                        \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                        \"target\": \"All\",\n                        \"type\": \"Water\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"rest\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Rest\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                        \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                        \"target\": \"Self\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"roar\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Roar_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The target is forced to switch out and be replaced with a random unfainted ally. Fails if the target is the last unfainted Pokémon in its party, or if the target used Ingrain previously or has the Suction Cups Ability.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Roar\",\n                        \"pp\": 20,\n                        \"priority\": -6,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/roar.shtml\",\n                        \"shortDesc\": \"Forces the target to switch to a random ally.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/roar\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"rockslide\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Slide_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Rock Slide\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rockslide.shtml\",\n                        \"shortDesc\": \"30% chance to make the foe(s) flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-slide\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"rocktomb\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Tomb_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Rock Tomb\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocktomb.shtml\",\n                        \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-tomb\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Rock\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"shadowclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Shadow_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a higher chance for a critical hit.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Shadow Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/shadowclaw.shtml\",\n                        \"shortDesc\": \"High critical hit ratio.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/shadow-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Ghost\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"sleeptalk\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sleep Talk\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                        \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"substitute\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Substitute\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                        \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"sunnyday\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sunny_Day_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"For 5 turns, the weather becomes Sunny Day. The damage of Fire-type attacks is multiplied by 1.5 and the damage of Water-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Heat Rock. Fails if the current weather is Sunny Day.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Sunny Day\",\n                        \"pp\": 5,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sunnyday.shtml\",\n                        \"shortDesc\": \"For 5 turns, intense sunlight powers Fire moves.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sunny-day\",\n                        \"target\": \"All\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"takedown\",\n                        \"accuracy\": 85,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Take_Down_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 1/4 the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Take Down\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/takedown.shtml\",\n                        \"shortDesc\": \"Has 1/4 recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/take-down\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"temperflare\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"75\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Temper_Flare_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": null,\n                        \"desc\": \"Power doubles if the user's last move on the previous turn, including moves called by other moves or those used through Instruct, Magic Coat, Snatch, or the Dancer or Magic Bounce Abilities, failed to do any of its normal effects, not including damage from an unsuccessful High Jump Kick, Jump Kick, or Mind Blown, or if the user was prevented from moving by any effect other than recharging or Sky Drop. A move that was blocked by Baneful Bunker, Detect, King's Shield, Protect, Spiky Shield, Crafty Shield, Mat Block, Quick Guard, or Wide Guard will not double this move's power, nor will Bounce or Fly ending early due to the effect of Gravity, Smack Down, or Thousand Arrows.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Temper Flare\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/temperflare.shtml\",\n                        \"shortDesc\": \"Power doubles if the user's last move failed.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/temper-flare\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"terablast\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": null,\n                        \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Tera Blast\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                        \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"thunderfang\",\n                        \"accuracy\": 95,\n                        \"basePower\": \"65\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Thunder_Fang_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 10% chance to paralyze the target and a 10% chance to make it flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Thunder Fang\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/thunderfang.shtml\",\n                        \"shortDesc\": \"10% chance to paralyze. 10% chance to flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/thunder-fang\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Electric\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ],\n                  \"tutorMoves\": [],\n                  \"virtualTransferMoves\": [],\n                  \"levelUpMoves\": [\n                    {\n                      \"generation\": 9,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"bite\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bite_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Bite\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bite.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bite\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 25,\n                      \"move\": {\n                        \"key\": \"crunch\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Crunch_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 20% chance to lower the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Crunch\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/crunch.shtml\",\n                        \"shortDesc\": \"20% chance to lower the target's Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/crunch\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dark\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 67,\n                      \"move\": {\n                        \"key\": \"doubleedge\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Double-Edge\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                        \"shortDesc\": \"Has 33% recoil.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"dragonbreath\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"60\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Breath_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Has a 30% chance to paralyze the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 110,\n                        \"name\": \"Dragon Breath\",\n                        \"pp\": 20,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonbreath.shtml\",\n                        \"shortDesc\": \"30% chance to paralyze the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-breath\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 120\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 33,\n                      \"move\": {\n                        \"key\": \"dragonclaw\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Dragon_Claw_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"No additional effect.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Dragon Claw\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/dragonclaw.shtml\",\n                        \"shortDesc\": \"No additional effect.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/dragon-claw\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 160\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"ember\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"40\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ember_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 90,\n                        \"name\": \"Ember\",\n                        \"pp\": 25,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/ember.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ember\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 100\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 53,\n                      \"move\": {\n                        \"key\": \"flamethrower\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"90\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Flamethrower_(move)\",\n                        \"category\": \"Special\",\n                        \"contestType\": \"Beautiful\",\n                        \"desc\": \"Has a 10% chance to burn the target.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Flamethrower\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/flamethrower.shtml\",\n                        \"shortDesc\": \"10% chance to burn the target.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/flamethrower\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Fire\",\n                        \"zMovePower\": 175\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 46,\n                      \"move\": {\n                        \"key\": \"focusenergy\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Focus Energy\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                        \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 15,\n                      \"move\": {\n                        \"key\": \"headbutt\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"70\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Has a 30% chance to make the target flinch.\",\n                        \"isFieldMove\": \"The Pokémon can shake a small tree which may cause a wild Pokémon to fall down. It can be taught to a Pokémon by using TM02 in Generation II. Though available as a level up move in Generation I and future generations, it only had status as a field move in Generation II and Generation IV's HeartGold and SoulSilver.\",\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 120,\n                        \"name\": \"Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/headbutt.shtml\",\n                        \"shortDesc\": \"30% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 140\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 1,\n                      \"move\": {\n                        \"key\": \"leer\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Leer\",\n                        \"pp\": 30,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                        \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                        \"target\": \"Adjacent Foes\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 60,\n                      \"move\": {\n                        \"key\": \"outrage\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"120\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Outrage_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Cool\",\n                        \"desc\": \"The user spends two or three turns locked into this move and becomes confused immediately after its move on the last turn of the effect if it is not already. This move targets an opposing Pokémon at random on each turn. If the user is prevented from moving, is asleep at the beginning of a turn, or the attack is not successful against the target on the first turn of the effect or the second turn of a three-turn effect, the effect ends without causing confusion. If this move is called by Sleep Talk and the user is asleep, the move is used for one turn and does not confuse the user.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 140,\n                        \"name\": \"Outrage\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/outrage.shtml\",\n                        \"shortDesc\": \"Lasts 2-3 turns. Confuses the user afterwards.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/outrage\",\n                        \"target\": \"Random\",\n                        \"type\": \"Dragon\",\n                        \"zMovePower\": 190\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 0,\n                      \"move\": {\n                        \"key\": \"protect\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Cute\",\n                        \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Protect\",\n                        \"pp\": 10,\n                        \"priority\": 4,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                        \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                        \"target\": \"Self\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 20,\n                      \"move\": {\n                        \"key\": \"scaryface\",\n                        \"accuracy\": 100,\n                        \"basePower\": \"0\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Scary_Face_(move)\",\n                        \"category\": \"Status\",\n                        \"contestType\": \"Tough\",\n                        \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": null,\n                        \"name\": \"Scary Face\",\n                        \"pp\": 10,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/scaryface.shtml\",\n                        \"shortDesc\": \"Lowers the target's Speed by 2.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/scary-face\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Normal\",\n                        \"zMovePower\": 0\n                      }\n                    },\n                    {\n                      \"generation\": 9,\n                      \"level\": 39,\n                      \"move\": {\n                        \"key\": \"zenheadbutt\",\n                        \"accuracy\": 90,\n                        \"basePower\": \"80\",\n                        \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Zen_Headbutt_(move)\",\n                        \"category\": \"Physical\",\n                        \"contestType\": \"Clever\",\n                        \"desc\": \"Has a 20% chance to make the target flinch.\",\n                        \"isFieldMove\": null,\n                        \"isGMax\": null,\n                        \"isNonstandard\": null,\n                        \"isZ\": null,\n                        \"maxMovePower\": 130,\n                        \"name\": \"Zen Headbutt\",\n                        \"pp\": 15,\n                        \"priority\": 0,\n                        \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/zenheadbutt.shtml\",\n                        \"shortDesc\": \"20% chance to make the target flinch.\",\n                        \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/zen-headbutt\",\n                        \"target\": \"Normal\",\n                        \"type\": \"Psychic\",\n                        \"zMovePower\": 160\n                      }\n                    }\n                  ]\n                }\n              },\n              \"key\": \"bagon\",\n              \"eggGroups\": [\"Dragon\"],\n              \"evYields\": { \"hp\": 0, \"attack\": 1, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n              \"evolutionLevel\": null,\n              \"flavorTexts\": [\n                { \"flavor\": \"Its well-developed neck muscles and ironlike head can smash boulders into pieces.\", \"game\": \"Legends: Z-A\" }\n              ],\n              \"forme\": null,\n              \"formeLetter\": null,\n              \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n              \"height\": 0.6,\n              \"isEggObtainable\": true,\n              \"backSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back/bagon.gif\",\n              \"levellingRate\": \"Slow\",\n              \"maximumHatchTime\": 10536,\n              \"minimumHatchTime\": 10280,\n              \"num\": 371,\n              \"otherFormes\": null,\n              \"serebiiPage\": \"https://www.serebii.net/pokedex-sv/bagon\",\n              \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/ani-back-shiny/bagon.gif\",\n              \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/ani-shiny/bagon.gif\",\n              \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/bagon\",\n              \"baseForme\": null,\n              \"smogonTier\": \"LC\",\n              \"species\": \"bagon\",\n              \"sprite\": \"https://play.pokemonshowdown.com/sprites/ani/bagon.gif\",\n              \"types\": [\n                {\n                  \"name\": \"Dragon\",\n                  \"matchup\": {\n                    \"attacking\": {\n                      \"doubleEffectiveTypes\": [],\n                      \"doubleResistedTypes\": [],\n                      \"effectiveTypes\": [\"dragon\"],\n                      \"effectlessTypes\": [\"fairy\"],\n                      \"normalTypes\": [\n                        \"bug\",\n                        \"dark\",\n                        \"electric\",\n                        \"fighting\",\n                        \"fire\",\n                        \"flying\",\n                        \"ghost\",\n                        \"grass\",\n                        \"ground\",\n                        \"ice\",\n                        \"normal\",\n                        \"poison\",\n                        \"psychic\",\n                        \"rock\",\n                        \"water\"\n                      ],\n                      \"resistedTypes\": [\"steel\"]\n                    },\n                    \"defending\": {\n                      \"doubleEffectiveTypes\": [],\n                      \"doubleResistedTypes\": [],\n                      \"effectiveTypes\": [\"dragon\", \"fairy\", \"ice\"],\n                      \"effectlessTypes\": [],\n                      \"normalTypes\": [\"bug\", \"dark\", \"fighting\", \"flying\", \"ghost\", \"ground\", \"normal\", \"poison\", \"psychic\", \"rock\", \"steel\"],\n                      \"resistedTypes\": [\"electric\", \"fire\", \"grass\", \"water\"]\n                    }\n                  }\n                }\n              ],\n              \"baseSpecies\": null,\n              \"baseStats\": { \"hp\": 45, \"attack\": 75, \"defense\": 60, \"specialattack\": 40, \"specialdefense\": 30, \"speed\": 50 },\n              \"baseStatsTotal\": 300,\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/bagon_(Pokémon)\",\n              \"catchRate\": { \"base\": 45, \"percentageWithOrdinaryPokeballAtFullHealth\": \"11.9%\" },\n              \"classification\": \"Rock Head Pokémon\",\n              \"respelling\": \"BAY-gon\",\n              \"ipa\": \"/ˈbeɪɡɒn/\",\n              \"color\": \"Blue\",\n              \"cosmeticFormes\": null,\n              \"cry\": \"https://play.pokemonshowdown.com/audio/cries/bagon.mp3\",\n              \"weight\": 42.1,\n              \"legendary\": false,\n              \"mythical\": false\n            }\n          ]\n        }\n      ]\n    }\n  }\n}\n"
  },
  {
    "path": "tests/testUtils/full-data-responses/syclar.json",
    "content": "{\n  \"data\": {\n    \"getPokemon\": {\n      \"abilities\": {\n        \"first\": {\n          \"name\": \"Compound Eyes\",\n          \"key\": \"compoundeyes\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Compound_Eyes_(Ability)\",\n          \"desc\": null,\n          \"isFieldAbility\": \"Having a Pokémon with Compound Eyes at the front of your party increases the chances of finding a wild Pokémon holding an item increase from 50%/5% to 60%/20%. In dark grass in Generation 5, the chances increase from 50%/5%/1% to 60%/20%/5%.\",\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/compound_eyes.shtml\",\n          \"shortDesc\": \"This Pokémon's moves have their accuracy multiplied by 1.3.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/compound_eyes\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"second\": {\n          \"name\": \"Snow Cloak\",\n          \"key\": \"snowcloak\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snow_Cloak_(Ability)\",\n          \"desc\": \"If Snow is active, the accuracy of moves used against this Pokémon is multiplied by 0.8.\",\n          \"isFieldAbility\": \"If a Pokémon with Snow Cloak is in the first place in the party (even if fainted) in an area with hail, the chance of encountering a wild Pokémon is decreased by 50%.\",\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/snow_cloak.shtml\",\n          \"shortDesc\": \"If Snow is active, this Pokémon's evasiveness is 1.25x.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/snow_cloak\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"hidden\": {\n          \"name\": \"Ice Body\",\n          \"key\": \"icebody\",\n          \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Body_(Ability)\",\n          \"desc\": \"If Snow is active, this Pokémon restores 1/16 of its maximum HP, rounded down, at the end of each turn.\",\n          \"isFieldAbility\": null,\n          \"serebiiPage\": \"https://www.serebii.net/abilitydex/ice_body.shtml\",\n          \"shortDesc\": \"If Snow is active, this Pokémon heals 1/16 of its max HP each turn.\",\n          \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/ice_body\",\n          \"pokemonThatHaveThisAbility\": []\n        },\n        \"special\": null\n      },\n      \"learnsets\": {\n        \"generation3\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [],\n          \"eventMoves\": [],\n          \"tmMoves\": [],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": []\n        },\n        \"generation4\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"earthpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earth_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earth Power\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthpower.shtml\",\n                \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earth-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"pinmissile\",\n                \"accuracy\": 95,\n                \"basePower\": \"25\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Pin Missile\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"spikes\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Spikes_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. Can be used up to three times before failing. Opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Spikes\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/spikes.shtml\",\n                \"shortDesc\": \"Hurts grounded foes on switch-in. Max 3 layers.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/spikes\",\n                \"target\": \"Foe's Side\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"superpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Superpower\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"tailglow\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Glow\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                \"target\": \"Self\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"avalanche\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Avalanche_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Avalanche\",\n                \"pp\": 10,\n                \"priority\": -4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/avalanche.shtml\",\n                \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/avalanche\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"captivate\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Captivate\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"cut\",\n                \"accuracy\": 95,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Unobtainable\",\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Cut\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"falseswipe\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/False_Swipe_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Leaves the target with at least 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"False Swipe\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/falseswipe.shtml\",\n                \"shortDesc\": \"Always leaves the target with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/false-swipe\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"fling\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fling_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is based on the user's held item. The held item is lost and it activates for the target if applicable. If there is no target or the target avoids this move by protecting itself, the user's held item is still lost. The user can regain a thrown item with Recycle or the Harvest Ability. Fails if the user has no held item, if the held item cannot be thrown, if the user is under the effect of Embargo or Magic Room, or if the user has the Klutz Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Fling\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fling.shtml\",\n                \"shortDesc\": \"Flings the user's item at the target. Power varies.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fling\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"hail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"naturalgift\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Natural Gift\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"rocksmash\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 70,\n                \"name\": \"Rock Smash\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"silverwind\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Silver_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to raise the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Silver Wind\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/silverwind.shtml\",\n                \"shortDesc\": \"10% chance to raise all stats by 1 (not acc/eva).\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/silver-wind\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"swordsdance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swords_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Raises the user's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swords Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swordsdance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swords-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"taunt\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Taunt_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Prevents the target from using non-damaging moves for its next three turns. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Taunt\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/taunt.shtml\",\n                \"shortDesc\": \"Target can't use status moves its next 3 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/taunt\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"uturn\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/U-turn_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"U-turn\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uturn.shtml\",\n                \"shortDesc\": \"User switches out after damaging the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/u-turn\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"waterpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 20% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Water Pulse\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                \"shortDesc\": \"20% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Water\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"xscissor\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"X-Scissor\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"counter\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Counter_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Deals damage to the last opposing Pokémon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical attack this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 75,\n                \"name\": \"Counter\",\n                \"pp\": 20,\n                \"priority\": -5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/counter.shtml\",\n                \"shortDesc\": \"If hit by physical attack, returns double damage.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/counter\",\n                \"target\": \"Foe that last hit user\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"earthpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earth_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earth Power\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthpower.shtml\",\n                \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earth-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"furycutter\",\n                \"accuracy\": 95,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fury Cutter\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"stringshot\",\n                \"accuracy\": 95,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/String_Shot_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"String Shot\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stringshot.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/string-shot\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"move\": {\n                \"key\": \"superpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Superpower\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 190\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 4,\n              \"level\": 42,\n              \"move\": {\n                \"key\": \"bugbuzz\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Buzz_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Bug Buzz\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbuzz.shtml\",\n                \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-buzz\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 13,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"furyattack\",\n                \"accuracy\": 85,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fury Attack\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furyattack.shtml\",\n                \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 28,\n              \"move\": {\n                \"key\": \"hail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 8,\n              \"move\": {\n                \"key\": \"iceshard\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Shard_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Ice Shard\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iceshard.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-shard\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 18,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 5,\n              \"move\": {\n                \"key\": \"leechlife\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leech_Life_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Leech Life\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leechlife.shtml\",\n                \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leech-life\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 49,\n              \"move\": {\n                \"key\": \"sheercold\",\n                \"accuracy\": 30,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sheer_Cold_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + X)%, where X is 30 if the user is an Ice type and 20 otherwise, and fails if the target is at a higher level. Ice-type Pokémon and Pokémon with the Sturdy Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Sheer Cold\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sheercold.shtml\",\n                \"shortDesc\": \"OHKOs non-Ice targets. Fails if user's lower level.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sheer-cold\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 4,\n              \"level\": 23,\n              \"move\": {\n                \"key\": \"xscissor\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"X-Scissor\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 160\n              }\n            }\n          ]\n        },\n        \"generation5\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"pinmissile\",\n                \"accuracy\": 95,\n                \"basePower\": \"25\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Pin Missile\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"superpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Superpower\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"tailglow\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Glow\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                \"target\": \"Self\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"rocksmash\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 70,\n                \"name\": \"Rock Smash\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"strength\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Strength\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 5,\n              \"move\": {\n                \"key\": \"superpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Superpower\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 190\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 5,\n              \"level\": 55,\n              \"move\": {\n                \"key\": \"sheercold\",\n                \"accuracy\": 30,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sheer_Cold_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + X)%, where X is 30 if the user is an Ice type and 20 otherwise, and fails if the target is at a higher level. Ice-type Pokémon and Pokémon with the Sturdy Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Sheer Cold\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sheercold.shtml\",\n                \"shortDesc\": \"OHKOs non-Ice targets. Fails if user's lower level.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sheer-cold\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            }\n          ]\n        },\n        \"generation6\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"pinmissile\",\n                \"accuracy\": 95,\n                \"basePower\": \"25\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Pin Missile\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"superpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Superpower\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"tailglow\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Glow\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                \"target\": \"Self\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"cut\",\n                \"accuracy\": 95,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Unobtainable\",\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Cut\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"rocksmash\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 70,\n                \"name\": \"Rock Smash\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"strength\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Strength\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"superpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Superpower\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 6,\n              \"move\": {\n                \"key\": \"waterpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 20% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Water Pulse\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                \"shortDesc\": \"20% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Water\",\n                \"zMovePower\": 120\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": []\n        },\n        \"generation7\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"counter\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Counter_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Deals damage to the last opposing Pokémon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical attack this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 75,\n                \"name\": \"Counter\",\n                \"pp\": 20,\n                \"priority\": -5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/counter.shtml\",\n                \"shortDesc\": \"If hit by physical attack, returns double damage.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/counter\",\n                \"target\": \"Foe that last hit user\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"earthpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earth_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earth Power\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthpower.shtml\",\n                \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earth-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"fellstinger\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fell_Stinger_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack by 3 stages if this move knocks out the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Fell Stinger\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fellstinger.shtml\",\n                \"shortDesc\": \"Raises user's Attack by 3 if this KOes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fell-stinger\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"pinmissile\",\n                \"accuracy\": 95,\n                \"basePower\": \"25\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Pin Missile\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"signalbeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Signal_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Signal Beam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/signalbeam.shtml\",\n                \"shortDesc\": \"10% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/signal-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"spikes\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Spikes_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. Can be used up to three times before failing. Opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Spikes\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/spikes.shtml\",\n                \"shortDesc\": \"Hurts grounded foes on switch-in. Max 3 layers.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/spikes\",\n                \"target\": \"Foe's Side\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"superpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Superpower\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"tailglow\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Glow\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                \"target\": \"Self\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"attract\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Attract\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"confide\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Confide\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"doubleteam\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Double Team\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"falseswipe\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/False_Swipe_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Leaves the target with at least 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"False Swipe\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/falseswipe.shtml\",\n                \"shortDesc\": \"Always leaves the target with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/false-swipe\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"fling\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fling_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is based on the user's held item. The held item is lost and it activates for the target if applicable. If there is no target or the target avoids this move by protecting itself, the user's held item is still lost. The user can regain a thrown item with Recycle or the Harvest Ability. Fails if the user has no held item, if the held item cannot be thrown, if the user is under the effect of Embargo or Magic Room, or if the user has the Klutz Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Fling\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fling.shtml\",\n                \"shortDesc\": \"Flings the user's item at the target. Power varies.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fling\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"frostbreath\",\n                \"accuracy\": 90,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frost_Breath_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"This move is always a critical hit unless the target is under the effect of Lucky Chant or has the Battle Armor or Shell Armor Abilities.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Frost Breath\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frostbreath.shtml\",\n                \"shortDesc\": \"Always results in a critical hit.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frost-breath\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"frustration\",\n                \"accuracy\": 100,\n                \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Frustration\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"hiddenpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": 80,\n                \"name\": \"Hidden Power\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"honeclaws\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hone Claws\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                \"target\": \"Self\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"leechlife\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leech_Life_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Leech Life\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leechlife.shtml\",\n                \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leech-life\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"return\",\n                \"accuracy\": 100,\n                \"basePower\": \"(user's Happiness * 2/5)\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Return\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"round\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Round\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"secretpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Secret Power\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"strugglebug\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Struggle_Bug_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Struggle Bug\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strugglebug.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/struggle-bug\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swagger\",\n                \"accuracy\": 85,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swagger\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"swordsdance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swords_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Raises the user's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swords Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swordsdance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swords-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"taunt\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Taunt_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Prevents the target from using non-damaging moves for its next three turns. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Taunt\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/taunt.shtml\",\n                \"shortDesc\": \"Target can't use status moves its next 3 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/taunt\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"toxic\",\n                \"accuracy\": 90,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Toxic\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                \"target\": \"Normal\",\n                \"type\": \"Poison\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"uturn\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/U-turn_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"U-turn\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uturn.shtml\",\n                \"shortDesc\": \"User switches out after damaging the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/u-turn\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"xscissor\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"X-Scissor\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"focuspunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Punch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user loses its focus and does nothing if it is hit by a damaging attack this turn before it can execute the move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Focus Punch\",\n                \"pp\": 20,\n                \"priority\": -3,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focuspunch.shtml\",\n                \"shortDesc\": \"Fails if the user takes damage before it hits.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-punch\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"signalbeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Signal_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Signal Beam\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/signalbeam.shtml\",\n                \"shortDesc\": \"10% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/signal-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"snore\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Snore\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"move\": {\n                \"key\": \"superpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Superpower\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 190\n              }\n            }\n          ],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"absorb\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Absorb_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Absorb\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/absorb.shtml\",\n                \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/absorb\",\n                \"target\": \"Normal\",\n                \"type\": \"Grass\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 48,\n              \"move\": {\n                \"key\": \"avalanche\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Avalanche_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Avalanche\",\n                \"pp\": 10,\n                \"priority\": -4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/avalanche.shtml\",\n                \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/avalanche\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 43,\n              \"move\": {\n                \"key\": \"bugbuzz\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Buzz_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Bug Buzz\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbuzz.shtml\",\n                \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-buzz\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 10,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 14,\n              \"move\": {\n                \"key\": \"furyattack\",\n                \"accuracy\": 85,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fury Attack\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furyattack.shtml\",\n                \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 23,\n              \"move\": {\n                \"key\": \"furycutter\",\n                \"accuracy\": 95,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fury Cutter\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 34,\n              \"move\": {\n                \"key\": \"hail\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": \"Past\",\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Hail\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"icepunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Punch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 5,\n              \"move\": {\n                \"key\": \"iceshard\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Shard_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Ice Shard\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iceshard.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-shard\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 39,\n              \"move\": {\n                \"key\": \"iciclecrash\",\n                \"accuracy\": 90,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icicle_Crash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Icicle Crash\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iciclecrash.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icicle-crash\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 19,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 28,\n              \"move\": {\n                \"key\": \"slash\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Slash\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slash.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slash\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 7,\n              \"level\": 31,\n              \"move\": {\n                \"key\": \"xscissor\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"X-Scissor\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 160\n              }\n            }\n          ]\n        },\n        \"generation8\": {\n          \"dreamworldMoves\": [],\n          \"eggMoves\": [\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"counter\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Counter_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"Deals damage to the last opposing Pokémon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical attack this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 75,\n                \"name\": \"Counter\",\n                \"pp\": 20,\n                \"priority\": -5,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/counter.shtml\",\n                \"shortDesc\": \"If hit by physical attack, returns double damage.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/counter\",\n                \"target\": \"Foe that last hit user\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"doubleedge\",\n                \"accuracy\": 100,\n                \"basePower\": \"120\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Double-Edge\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                \"shortDesc\": \"Has 33% recoil.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 190\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"fellstinger\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fell_Stinger_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's Attack by 3 stages if this move knocks out the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Fell Stinger\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fellstinger.shtml\",\n                \"shortDesc\": \"Raises user's Attack by 3 if this KOes the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fell-stinger\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"pinmissile\",\n                \"accuracy\": 95,\n                \"basePower\": \"25\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Pin Missile\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"stringshot\",\n                \"accuracy\": 95,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/String_Shot_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"String Shot\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stringshot.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Speed by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/string-shot\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"strugglebug\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Struggle_Bug_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Struggle Bug\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strugglebug.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/struggle-bug\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"tailglow\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tail Glow\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                \"target\": \"Self\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 0\n              }\n            }\n          ],\n          \"eventMoves\": [],\n          \"tmMoves\": [\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"avalanche\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Avalanche_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Avalanche\",\n                \"pp\": 10,\n                \"priority\": -4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/avalanche.shtml\",\n                \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/avalanche\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"blizzard\",\n                \"accuracy\": 70,\n                \"basePower\": \"110\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 140,\n                \"name\": \"Blizzard\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 185\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"bugbite\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Bug Bite\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                \"shortDesc\": \"User steals and eats the target's Berry.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"bugbuzz\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Buzz_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Bug Buzz\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbuzz.shtml\",\n                \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-buzz\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"earthpower\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earth_Power_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Earth Power\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthpower.shtml\",\n                \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earth-power\",\n                \"target\": \"Normal\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"endure\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Endure\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"facade\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Facade\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"falseswipe\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/False_Swipe_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Leaves the target with at least 1 HP.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"False Swipe\",\n                \"pp\": 40,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/falseswipe.shtml\",\n                \"shortDesc\": \"Always leaves the target with at least 1 HP.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/false-swipe\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"fling\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fling_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The power of this move is based on the user's held item. The held item is lost and it activates for the target if applicable. If there is no target or the target avoids this move by protecting itself, the user's held item is still lost. The user can regain a thrown item with Recycle or the Harvest Ability. Fails if the user has no held item, if the held item cannot be thrown, if the user is under the effect of Embargo or Magic Room, or if the user has the Klutz Ability.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Fling\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fling.shtml\",\n                \"shortDesc\": \"Flings the user's item at the target. Power varies.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fling\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"focuspunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"150\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Punch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Tough\",\n                \"desc\": \"The user loses its focus and does nothing if it is hit by a damaging attack this turn before it can execute the move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Focus Punch\",\n                \"pp\": 20,\n                \"priority\": -3,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focuspunch.shtml\",\n                \"shortDesc\": \"Fails if the user takes damage before it hits.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-punch\",\n                \"target\": \"Normal\",\n                \"type\": \"Fighting\",\n                \"zMovePower\": 200\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"icebeam\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Beam\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"icefang\",\n                \"accuracy\": 95,\n                \"basePower\": \"65\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Fang_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 10% chance to freeze the target and a 10% chance to make it flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Ice Fang\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icefang.shtml\",\n                \"shortDesc\": \"10% chance to freeze. 10% chance to flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-fang\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"icepunch\",\n                \"accuracy\": 100,\n                \"basePower\": \"75\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to freeze the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Ice Punch\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                \"shortDesc\": \"10% chance to freeze the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"icespinner\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Spinner_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": null,\n                \"desc\": \"Ends the effects of Electric Terrain, Grassy Terrain, Misty Terrain, and Psychic Terrain.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Ice Spinner\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icespinner.shtml\",\n                \"shortDesc\": \"Ends the effects of terrain.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-spinner\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"leechlife\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leech_Life_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Leech Life\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leechlife.shtml\",\n                \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leech-life\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"pounce\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pounce_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Pounce\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pounce.shtml\",\n                \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pounce\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"protect\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Protect\",\n                \"pp\": 10,\n                \"priority\": 4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"raindance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rain Dance\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                \"target\": \"All\",\n                \"type\": \"Water\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"rest\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Rest\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                \"target\": \"Self\",\n                \"type\": \"Psychic\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"sleeptalk\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Sleep Talk\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"snowscape\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snowscape_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": null,\n                \"desc\": \"For 5 turns, the weather becomes Snow. During the effect, the Defense of Ice-type Pokémon is multiplied by 1.5 when taking damage from a physical attack. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Snow.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Snowscape\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snowscape.shtml\",\n                \"shortDesc\": \"For 5 turns, snow falls. Ice: 1.5x Def.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snowscape\",\n                \"target\": \"All\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"spikes\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Spikes_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. Can be used up to three times before failing. Opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Spikes\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/spikes.shtml\",\n                \"shortDesc\": \"Hurts grounded foes on switch-in. Max 3 layers.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/spikes\",\n                \"target\": \"Foe's Side\",\n                \"type\": \"Ground\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"strugglebug\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Struggle_Bug_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 100,\n                \"name\": \"Struggle Bug\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strugglebug.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Sp. Atk by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/struggle-bug\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"substitute\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Substitute\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"swift\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"This move does not check accuracy.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Swift\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"swordsdance\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swords_Dance_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Raises the user's Attack by 2 stages.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Swords Dance\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swordsdance.shtml\",\n                \"shortDesc\": \"Raises the user's Attack by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swords-dance\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"taunt\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Taunt_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"Prevents the target from using non-damaging moves for its next three turns. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Taunt\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/taunt.shtml\",\n                \"shortDesc\": \"Target can't use status moves its next 3 turns.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/taunt\",\n                \"target\": \"Normal\",\n                \"type\": \"Dark\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"terablast\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": null,\n                \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Tera Blast\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"trailblaze\",\n                \"accuracy\": 100,\n                \"basePower\": \"50\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Trailblaze\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                \"target\": \"Normal\",\n                \"type\": \"Grass\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"uturn\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/U-turn_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cute\",\n                \"desc\": \"If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"U-turn\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uturn.shtml\",\n                \"shortDesc\": \"User switches out after damaging the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/u-turn\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"waterpulse\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 20% chance to confuse the target.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Water Pulse\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                \"shortDesc\": \"20% chance to confuse the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                \"target\": \"Any\",\n                \"type\": \"Water\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"move\": {\n                \"key\": \"xscissor\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"X-Scissor\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 160\n              }\n            }\n          ],\n          \"tutorMoves\": [],\n          \"virtualTransferMoves\": [],\n          \"levelUpMoves\": [\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"absorb\",\n                \"accuracy\": 100,\n                \"basePower\": \"20\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Absorb_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Clever\",\n                \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Absorb\",\n                \"pp\": 25,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/absorb.shtml\",\n                \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/absorb\",\n                \"target\": \"Normal\",\n                \"type\": \"Grass\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 31,\n              \"move\": {\n                \"key\": \"avalanche\",\n                \"accuracy\": 100,\n                \"basePower\": \"60\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Avalanche_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Avalanche\",\n                \"pp\": 10,\n                \"priority\": -4,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/avalanche.shtml\",\n                \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/avalanche\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 120\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 50,\n              \"move\": {\n                \"key\": \"bugbuzz\",\n                \"accuracy\": 100,\n                \"basePower\": \"90\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Buzz_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Bug Buzz\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbuzz.shtml\",\n                \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-buzz\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 175\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 25,\n              \"move\": {\n                \"key\": \"focusenergy\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Focus Energy\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                \"target\": \"Self\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 5,\n              \"move\": {\n                \"key\": \"furyattack\",\n                \"accuracy\": 85,\n                \"basePower\": \"15\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Attack_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fury Attack\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furyattack.shtml\",\n                \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-attack\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 10,\n              \"move\": {\n                \"key\": \"furycutter\",\n                \"accuracy\": 95,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Fury Cutter\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 15,\n              \"move\": {\n                \"key\": \"iceshard\",\n                \"accuracy\": 100,\n                \"basePower\": \"40\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Shard_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 90,\n                \"name\": \"Ice Shard\",\n                \"pp\": 30,\n                \"priority\": 1,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iceshard.shtml\",\n                \"shortDesc\": \"Usually goes first.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-shard\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 45,\n              \"move\": {\n                \"key\": \"iciclecrash\",\n                \"accuracy\": 90,\n                \"basePower\": \"85\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icicle_Crash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 30% chance to make the target flinch.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Icicle Crash\",\n                \"pp\": 10,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iciclecrash.shtml\",\n                \"shortDesc\": \"30% chance to make the target flinch.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icicle-crash\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 160\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 20,\n              \"move\": {\n                \"key\": \"icywind\",\n                \"accuracy\": 95,\n                \"basePower\": \"55\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 110,\n                \"name\": \"Icy Wind\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 100\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 1,\n              \"move\": {\n                \"key\": \"leer\",\n                \"accuracy\": 100,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                \"category\": \"Status\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": null,\n                \"name\": \"Leer\",\n                \"pp\": 30,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                \"target\": \"Adjacent Foes\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 55,\n              \"move\": {\n                \"key\": \"sheercold\",\n                \"accuracy\": 30,\n                \"basePower\": \"0\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sheer_Cold_(move)\",\n                \"category\": \"Special\",\n                \"contestType\": \"Beautiful\",\n                \"desc\": \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + X)%, where X is 30 if the user is an Ice type and 20 otherwise, and fails if the target is at a higher level. Ice-type Pokémon and Pokémon with the Sturdy Ability are immune.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"Sheer Cold\",\n                \"pp\": 5,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sheercold.shtml\",\n                \"shortDesc\": \"OHKOs non-Ice targets. Fails if user's lower level.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sheer-cold\",\n                \"target\": \"Normal\",\n                \"type\": \"Ice\",\n                \"zMovePower\": 0\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 35,\n              \"move\": {\n                \"key\": \"slash\",\n                \"accuracy\": 100,\n                \"basePower\": \"70\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slash_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"Has a higher chance for a critical hit.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 120,\n                \"name\": \"Slash\",\n                \"pp\": 20,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slash.shtml\",\n                \"shortDesc\": \"High critical hit ratio.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slash\",\n                \"target\": \"Normal\",\n                \"type\": \"Normal\",\n                \"zMovePower\": 140\n              }\n            },\n            {\n              \"generation\": 9,\n              \"level\": 40,\n              \"move\": {\n                \"key\": \"xscissor\",\n                \"accuracy\": 100,\n                \"basePower\": \"80\",\n                \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                \"category\": \"Physical\",\n                \"contestType\": \"Cool\",\n                \"desc\": \"No additional effect.\",\n                \"isFieldMove\": null,\n                \"isGMax\": null,\n                \"isNonstandard\": null,\n                \"isZ\": null,\n                \"maxMovePower\": 130,\n                \"name\": \"X-Scissor\",\n                \"pp\": 15,\n                \"priority\": 0,\n                \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                \"shortDesc\": \"No additional effect.\",\n                \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                \"target\": \"Normal\",\n                \"type\": \"Bug\",\n                \"zMovePower\": 160\n              }\n            }\n          ]\n        }\n      },\n      \"key\": \"syclar\",\n      \"eggGroups\": [\"Bug\"],\n      \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n      \"evolutionLevel\": null,\n      \"flavorTexts\": [],\n      \"forme\": null,\n      \"formeLetter\": null,\n      \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n      \"height\": 0.2,\n      \"isEggObtainable\": false,\n      \"backSprite\": \"https://play.pokemonshowdown.com/sprites/gen5-back/syclar.png\",\n      \"levellingRate\": null,\n      \"maximumHatchTime\": null,\n      \"minimumHatchTime\": null,\n      \"num\": -1,\n      \"otherFormes\": null,\n      \"serebiiPage\": \"\",\n      \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/gen5-back-shiny/syclar.png\",\n      \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/gen5-shiny/syclar.png\",\n      \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/syclar\",\n      \"baseForme\": null,\n      \"smogonTier\": \"CAP\",\n      \"species\": \"syclar\",\n      \"sprite\": \"https://play.pokemonshowdown.com/sprites/gen5/syclar.png\",\n      \"types\": [\n        {\n          \"name\": \"Ice\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"dragon\", \"flying\", \"grass\", \"ground\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\"bug\", \"dark\", \"electric\", \"fairy\", \"fighting\", \"ghost\", \"normal\", \"poison\", \"psychic\", \"rock\"],\n              \"resistedTypes\": [\"fire\", \"ice\", \"steel\", \"water\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"fighting\", \"fire\", \"rock\", \"steel\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\n                \"bug\",\n                \"dark\",\n                \"dragon\",\n                \"electric\",\n                \"fairy\",\n                \"flying\",\n                \"ghost\",\n                \"grass\",\n                \"ground\",\n                \"normal\",\n                \"poison\",\n                \"psychic\",\n                \"water\"\n              ],\n              \"resistedTypes\": [\"ice\"]\n            }\n          }\n        },\n        {\n          \"name\": \"Bug\",\n          \"matchup\": {\n            \"attacking\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"dark\", \"grass\", \"psychic\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\"bug\", \"dragon\", \"electric\", \"ground\", \"ice\", \"normal\", \"rock\", \"water\"],\n              \"resistedTypes\": [\"fairy\", \"fighting\", \"fire\", \"flying\", \"ghost\", \"poison\", \"steel\"]\n            },\n            \"defending\": {\n              \"doubleEffectiveTypes\": [],\n              \"doubleResistedTypes\": [],\n              \"effectiveTypes\": [\"fire\", \"flying\", \"rock\"],\n              \"effectlessTypes\": [],\n              \"normalTypes\": [\"bug\", \"dark\", \"dragon\", \"electric\", \"fairy\", \"ghost\", \"ice\", \"normal\", \"poison\", \"psychic\", \"steel\", \"water\"],\n              \"resistedTypes\": [\"fighting\", \"grass\", \"ground\"]\n            }\n          }\n        }\n      ],\n      \"baseSpecies\": null,\n      \"baseStats\": { \"hp\": 40, \"attack\": 76, \"defense\": 45, \"specialattack\": 74, \"specialdefense\": 39, \"speed\": 91 },\n      \"baseStatsTotal\": 365,\n      \"bulbapediaPage\": \"\",\n      \"catchRate\": { \"base\": 0, \"percentageWithOrdinaryPokeballAtFullHealth\": \"0%\" },\n      \"classification\": null,\n      \"respelling\": null,\n      \"ipa\": null,\n      \"color\": \"Blue\",\n      \"cosmeticFormes\": null,\n      \"cry\": null,\n      \"weight\": 4,\n      \"legendary\": false,\n      \"mythical\": false,\n      \"evolutions\": [\n        {\n          \"abilities\": {\n            \"first\": {\n              \"name\": \"Compound Eyes\",\n              \"key\": \"compoundeyes\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Compound_Eyes_(Ability)\",\n              \"desc\": null,\n              \"isFieldAbility\": \"Having a Pokémon with Compound Eyes at the front of your party increases the chances of finding a wild Pokémon holding an item increase from 50%/5% to 60%/20%. In dark grass in Generation 5, the chances increase from 50%/5%/1% to 60%/20%/5%.\",\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/compound_eyes.shtml\",\n              \"shortDesc\": \"This Pokémon's moves have their accuracy multiplied by 1.3.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/compound_eyes\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"second\": {\n              \"name\": \"Mountaineer\",\n              \"key\": \"mountaineer\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Mountaineer_(Ability)\",\n              \"desc\": null,\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/mountaineer.shtml\",\n              \"shortDesc\": \"On switch-in, this Pokémon avoids all Rock-type attacks and Stealth Rock.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/mountaineer\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"hidden\": {\n              \"name\": \"Ice Body\",\n              \"key\": \"icebody\",\n              \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Body_(Ability)\",\n              \"desc\": \"If Snow is active, this Pokémon restores 1/16 of its maximum HP, rounded down, at the end of each turn.\",\n              \"isFieldAbility\": null,\n              \"serebiiPage\": \"https://www.serebii.net/abilitydex/ice_body.shtml\",\n              \"shortDesc\": \"If Snow is active, this Pokémon heals 1/16 of its max HP each turn.\",\n              \"smogonPage\": \"https://www.smogon.com/dex/ss/abilities/ice_body\",\n              \"pokemonThatHaveThisAbility\": []\n            },\n            \"special\": null\n          },\n          \"learnsets\": {\n            \"generation3\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [],\n              \"eventMoves\": [],\n              \"tmMoves\": [],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": []\n            },\n            \"generation4\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"earthpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earth_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earth Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthpower.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earth-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"pinmissile\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"25\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Pin Missile\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"spikes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Spikes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. Can be used up to three times before failing. Opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Spikes\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/spikes.shtml\",\n                    \"shortDesc\": \"Hurts grounded foes on switch-in. Max 3 layers.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/spikes\",\n                    \"target\": \"Foe's Side\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"superpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Superpower\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                    \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"tailglow\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Glow\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                    \"target\": \"Self\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"avalanche\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Avalanche_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Avalanche\",\n                    \"pp\": 10,\n                    \"priority\": -4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/avalanche.shtml\",\n                    \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/avalanche\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"captivate\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Captivate_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 2 stages. The target is unaffected if both the user and the target are the same gender, or if either is genderless. Pokémon with the Oblivious Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Captivate\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/captivate.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Sp. Atk by 2 if opposite gender.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/captivate\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"cut\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Unobtainable\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Cut\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"falseswipe\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/False_Swipe_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Leaves the target with at least 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"False Swipe\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/falseswipe.shtml\",\n                    \"shortDesc\": \"Always leaves the target with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/false-swipe\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"fling\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fling_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is based on the user's held item. The held item is lost and it activates for the target if applicable. If there is no target or the target avoids this move by protecting itself, the user's held item is still lost. The user can regain a thrown item with Recycle or the Harvest Ability. Fails if the user has no held item, if the held item cannot be thrown, if the user is under the effect of Embargo or Magic Room, or if the user has the Klutz Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Fling\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fling.shtml\",\n                    \"shortDesc\": \"Flings the user's item at the target. Power varies.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fling\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"naturalgift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Natural_Gift_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The type and power of this move depend on the user's held Berry, and the Berry is lost. Fails if the user is not holding a Berry, if the user has the Klutz Ability, or if Embargo or Magic Room is in effect for the user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Natural Gift\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/naturalgift.shtml\",\n                    \"shortDesc\": \"Power and type depends on the user's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/natural-gift\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"rocksmash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 70,\n                    \"name\": \"Rock Smash\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                    \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"silverwind\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Silver_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to raise the user's Attack, Defense, Special Attack, Special Defense, and Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Silver Wind\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/silverwind.shtml\",\n                    \"shortDesc\": \"10% chance to raise all stats by 1 (not acc/eva).\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/silver-wind\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"swordsdance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swords_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Raises the user's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swords Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swordsdance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swords-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"taunt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Taunt_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Prevents the target from using non-damaging moves for its next three turns. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Taunt\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/taunt.shtml\",\n                    \"shortDesc\": \"Target can't use status moves its next 3 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/taunt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"uturn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/U-turn_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"U-turn\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uturn.shtml\",\n                    \"shortDesc\": \"User switches out after damaging the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/u-turn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"xscissor\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"X-Scissor\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"counter\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Counter_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Deals damage to the last opposing Pokémon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical attack this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 75,\n                    \"name\": \"Counter\",\n                    \"pp\": 20,\n                    \"priority\": -5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/counter.shtml\",\n                    \"shortDesc\": \"If hit by physical attack, returns double damage.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/counter\",\n                    \"target\": \"Foe that last hit user\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"earthpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earth_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earth Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthpower.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earth-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"furycutter\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fury Cutter\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                    \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"stringshot\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/String_Shot_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"String Shot\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stringshot.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/string-shot\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"move\": {\n                    \"key\": \"superpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Superpower\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                    \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 190\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 4,\n                  \"level\": 42,\n                  \"move\": {\n                    \"key\": \"bugbuzz\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Buzz_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Bug Buzz\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbuzz.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-buzz\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 13,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"furyattack\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fury Attack\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furyattack.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 28,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 8,\n                  \"move\": {\n                    \"key\": \"iceshard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Shard_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Ice Shard\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iceshard.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-shard\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 18,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"leechlife\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leech_Life_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Leech Life\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leechlife.shtml\",\n                    \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leech-life\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 49,\n                  \"move\": {\n                    \"key\": \"sheercold\",\n                    \"accuracy\": 30,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sheer_Cold_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + X)%, where X is 30 if the user is an Ice type and 20 otherwise, and fails if the target is at a higher level. Ice-type Pokémon and Pokémon with the Sturdy Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Sheer Cold\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sheercold.shtml\",\n                    \"shortDesc\": \"OHKOs non-Ice targets. Fails if user's lower level.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sheer-cold\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 4,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"xscissor\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"X-Scissor\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ]\n            },\n            \"generation5\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"pinmissile\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"25\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Pin Missile\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"superpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Superpower\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                    \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"tailglow\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Glow\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                    \"target\": \"Self\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"rocksmash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 70,\n                    \"name\": \"Rock Smash\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                    \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"strength\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Strength\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 5,\n                  \"move\": {\n                    \"key\": \"superpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Superpower\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                    \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 190\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 5,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"sheercold\",\n                    \"accuracy\": 30,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sheer_Cold_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + X)%, where X is 30 if the user is an Ice type and 20 otherwise, and fails if the target is at a higher level. Ice-type Pokémon and Pokémon with the Sturdy Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Sheer Cold\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sheercold.shtml\",\n                    \"shortDesc\": \"OHKOs non-Ice targets. Fails if user's lower level.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sheer-cold\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ]\n            },\n            \"generation6\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"pinmissile\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"25\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Pin Missile\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"superpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Superpower\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                    \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"tailglow\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Glow\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                    \"target\": \"Self\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"cut\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Cut_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to cut down small trees, and prior to gen 4, tall grass. It is taught to Pokémon with HM01 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Unobtainable\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Cut\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/cut.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/cut\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"rocksmash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rock_Smash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Has a 50% chance to lower the target's Defense by 1 stage.\",\n                    \"isFieldMove\": \"The Pokémon can smash small boulders. Rock smash can be taught to a Pokémon by using TM08 in Generation II, by using HM06 in Generations III and IV, TM94 in Generation V and Pokémon X and Y, and HM06 in Omega Ruby and Alpha Sapphire.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 70,\n                    \"name\": \"Rock Smash\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rocksmash.shtml\",\n                    \"shortDesc\": \"50% chance to lower the target's Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rock-smash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"strength\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Strength_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": \"The Pokémon is able to push certain types of boulders around. Strength can be taught to Pokémon with HM04 in all generations.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Strength\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strength.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/strength\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"superpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Superpower\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                    \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 6,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": []\n            },\n            \"generation7\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"counter\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Counter_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Deals damage to the last opposing Pokémon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical attack this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 75,\n                    \"name\": \"Counter\",\n                    \"pp\": 20,\n                    \"priority\": -5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/counter.shtml\",\n                    \"shortDesc\": \"If hit by physical attack, returns double damage.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/counter\",\n                    \"target\": \"Foe that last hit user\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"earthpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earth_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earth Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthpower.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earth-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"fellstinger\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fell_Stinger_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack by 3 stages if this move knocks out the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Fell Stinger\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fellstinger.shtml\",\n                    \"shortDesc\": \"Raises user's Attack by 3 if this KOes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fell-stinger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"pinmissile\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"25\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Pin Missile\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"signalbeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Signal_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Signal Beam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/signalbeam.shtml\",\n                    \"shortDesc\": \"10% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/signal-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"spikes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Spikes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. Can be used up to three times before failing. Opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Spikes\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/spikes.shtml\",\n                    \"shortDesc\": \"Hurts grounded foes on switch-in. Max 3 layers.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/spikes\",\n                    \"target\": \"Foe's Side\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"superpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Superpower\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                    \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"tailglow\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Glow\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                    \"target\": \"Self\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"attract\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Attract_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Causes the target to become infatuated, making it unable to attack 50% of the time. Fails if both the user and the target are the same gender, if either is genderless, or if the target is already infatuated. The effect ends when either the user or the target is no longer active. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Attract\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/attract.shtml\",\n                    \"shortDesc\": \"A target of the opposite gender gets infatuated.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/attract\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"confide\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Confide_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Lowers the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Confide\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/confide.shtml\",\n                    \"shortDesc\": \"Lowers the target's Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/confide\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"doubleteam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double_Team_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's evasiveness by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Double Team\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleteam.shtml\",\n                    \"shortDesc\": \"Raises the user's evasiveness by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-team\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"falseswipe\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/False_Swipe_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Leaves the target with at least 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"False Swipe\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/falseswipe.shtml\",\n                    \"shortDesc\": \"Always leaves the target with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/false-swipe\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"fling\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fling_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is based on the user's held item. The held item is lost and it activates for the target if applicable. If there is no target or the target avoids this move by protecting itself, the user's held item is still lost. The user can regain a thrown item with Recycle or the Harvest Ability. Fails if the user has no held item, if the held item cannot be thrown, if the user is under the effect of Embargo or Magic Room, or if the user has the Klutz Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Fling\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fling.shtml\",\n                    \"shortDesc\": \"Flings the user's item at the target. Power varies.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fling\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frostbreath\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frost_Breath_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"This move is always a critical hit unless the target is under the effect of Lucky Chant or has the Battle Armor or Shell Armor Abilities.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Frost Breath\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frostbreath.shtml\",\n                    \"shortDesc\": \"Always results in a critical hit.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frost-breath\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"frustration\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(255 - user's Happiness) * 2/5\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Frustration_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of ((255 - user's Happiness) * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Frustration\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/frustration.shtml\",\n                    \"shortDesc\": \"Max 102 power at minimum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/frustration\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"hiddenpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hidden_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"This move's type depends on the user's individual values (IVs), and can be any type but Fairy and Normal.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": 80,\n                    \"name\": \"Hidden Power\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hiddenpower.shtml\",\n                    \"shortDesc\": \"Varies in type based on the user's IVs.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hidden-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"honeclaws\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hone_Claws_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the user's Attack and accuracy by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hone Claws\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/honeclaws.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack and accuracy by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hone-claws\",\n                    \"target\": \"Self\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"leechlife\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leech_Life_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Leech Life\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leechlife.shtml\",\n                    \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leech-life\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"return\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"(user's Happiness * 2/5)\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Return_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power is equal to the greater of (user's Happiness * 2/5), rounded down, or 1.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Return\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/return.shtml\",\n                    \"shortDesc\": \"Max 102 power at maximum Happiness.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/return\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"round\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Round_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"If there are other active Pokémon that chose this move for use this turn, those Pokémon take their turn immediately after the user, in Speed order, and this move's power is 120 for each other user.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Round\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/round.shtml\",\n                    \"shortDesc\": \"Power doubles if others used Round this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/round\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"secretpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Secret_Power_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Has a 30% chance to cause a secondary effect on the target based on the battle terrain. Causes paralysis on the regular Wi-Fi terrain, causes paralysis during Electric Terrain, lowers Special Attack by 1 stage during Misty Terrain, causes sleep during Grassy Terrain and lowers Speed by 1 stage during Psychic Terrain.\",\n                    \"isFieldMove\": \"The Pokémon can clear an entrance into a big tree, a bush or an indent in a wall in order to create a Secret Base in Generation III's Ruby, Sapphire and Emerald and Generation VI's Omega Ruby and Alpha Sapphire. It is taught to Pokémon using TM43 in Generations III and IV, and TM94 in Generation VI.\",\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Secret Power\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/secretpower.shtml\",\n                    \"shortDesc\": \"Effect varies with terrain. (30% paralysis chance)\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/secret-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"strugglebug\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Struggle_Bug_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Struggle Bug\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strugglebug.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/struggle-bug\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swagger\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swagger_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Raises the target's Attack by 2 stages and confuses it.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swagger\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swagger.shtml\",\n                    \"shortDesc\": \"Raises the target's Attack by 2 and confuses it.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swagger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"swordsdance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swords_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Raises the user's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swords Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swordsdance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swords-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"taunt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Taunt_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Prevents the target from using non-damaging moves for its next three turns. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Taunt\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/taunt.shtml\",\n                    \"shortDesc\": \"Target can't use status moves its next 3 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/taunt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"toxic\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Toxic_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Badly poisons the target. If a Poison-type Pokémon uses this move, the target cannot avoid the attack, even if the target is in the middle of a two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Toxic\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/toxic.shtml\",\n                    \"shortDesc\": \"Badly poisons the target. Poison types can't miss.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/toxic\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Poison\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"uturn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/U-turn_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"U-turn\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uturn.shtml\",\n                    \"shortDesc\": \"User switches out after damaging the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/u-turn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"xscissor\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"X-Scissor\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"focuspunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Punch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user loses its focus and does nothing if it is hit by a damaging attack this turn before it can execute the move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Focus Punch\",\n                    \"pp\": 20,\n                    \"priority\": -3,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focuspunch.shtml\",\n                    \"shortDesc\": \"Fails if the user takes damage before it hits.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-punch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"signalbeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Signal_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Signal Beam\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/signalbeam.shtml\",\n                    \"shortDesc\": \"10% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/signal-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"snore\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snore_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 30% chance to make the target flinch. Fails if the user is not asleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Snore\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snore.shtml\",\n                    \"shortDesc\": \"User must be asleep. 30% chance to flinch target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snore\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"move\": {\n                    \"key\": \"superpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Superpower_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Lowers the user's Attack and Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Superpower\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/superpower.shtml\",\n                    \"shortDesc\": \"Lowers the user's Attack and Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/superpower\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 190\n                  }\n                }\n              ],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"absorb\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Absorb_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Absorb\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/absorb.shtml\",\n                    \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/absorb\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 48,\n                  \"move\": {\n                    \"key\": \"avalanche\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Avalanche_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Avalanche\",\n                    \"pp\": 10,\n                    \"priority\": -4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/avalanche.shtml\",\n                    \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/avalanche\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 43,\n                  \"move\": {\n                    \"key\": \"bugbuzz\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Buzz_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Bug Buzz\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbuzz.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-buzz\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 14,\n                  \"move\": {\n                    \"key\": \"furyattack\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fury Attack\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furyattack.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 23,\n                  \"move\": {\n                    \"key\": \"furycutter\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fury Cutter\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                    \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 34,\n                  \"move\": {\n                    \"key\": \"hail\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Hail_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Hail. At the end of each turn except the last, all active Pokémon lose 1/16 of their maximum HP, rounded down, unless they are an Ice type or have the Ice Body, Magic Guard, Overcoat, or Snow Cloak Abilities. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Hail.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": \"Past\",\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Hail\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/hail.shtml\",\n                    \"shortDesc\": \"For 5 turns, hail crashes down.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/hail\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"icepunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Punch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"iceshard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Shard_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Ice Shard\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iceshard.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-shard\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 39,\n                  \"move\": {\n                    \"key\": \"iciclecrash\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icicle_Crash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Icicle Crash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iciclecrash.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icicle-crash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 19,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 28,\n                  \"move\": {\n                    \"key\": \"slash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Slash\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slash.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 7,\n                  \"level\": 31,\n                  \"move\": {\n                    \"key\": \"xscissor\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"X-Scissor\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ]\n            },\n            \"generation8\": {\n              \"dreamworldMoves\": [],\n              \"eggMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"counter\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Counter_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"Deals damage to the last opposing Pokémon to hit the user with a physical attack this turn equal to twice the HP lost by the user from that attack. If the user did not lose HP from the attack, this move deals 1 HP of damage instead. If that opposing Pokémon's position is no longer in use and there is another opposing Pokémon on the field, the damage is done to it instead. Only the last hit of a multi-hit attack is counted. Fails if the user was not hit by an opposing Pokémon's physical attack this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 75,\n                    \"name\": \"Counter\",\n                    \"pp\": 20,\n                    \"priority\": -5,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/counter.shtml\",\n                    \"shortDesc\": \"If hit by physical attack, returns double damage.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/counter\",\n                    \"target\": \"Foe that last hit user\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"doubleedge\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"120\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Double-edge_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"If the target lost HP, the user takes recoil damage equal to 33% the HP lost by the target, rounded half up, but not less than 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Double-Edge\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/doubleedge.shtml\",\n                    \"shortDesc\": \"Has 33% recoil.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/double-edge\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 190\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"fellstinger\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fell_Stinger_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's Attack by 3 stages if this move knocks out the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Fell Stinger\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fellstinger.shtml\",\n                    \"shortDesc\": \"Raises user's Attack by 3 if this KOes the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fell-stinger\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"pinmissile\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"25\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pin_Missile_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Pin Missile\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pinmissile.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pin-missile\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"stringshot\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/String_Shot_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Lowers the target's Speed by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"String Shot\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/stringshot.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Speed by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/string-shot\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"strugglebug\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Struggle_Bug_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Struggle Bug\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strugglebug.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/struggle-bug\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"tailglow\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tail_Glow_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Raises the user's Special Attack by 3 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tail Glow\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/tailglow.shtml\",\n                    \"shortDesc\": \"Raises the user's Sp. Atk by 3.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tail-glow\",\n                    \"target\": \"Self\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 0\n                  }\n                }\n              ],\n              \"eventMoves\": [],\n              \"tmMoves\": [\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"avalanche\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Avalanche_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Avalanche\",\n                    \"pp\": 10,\n                    \"priority\": -4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/avalanche.shtml\",\n                    \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/avalanche\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"blizzard\",\n                    \"accuracy\": 70,\n                    \"basePower\": \"110\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Blizzard_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target. If the weather is Snow, this move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 140,\n                    \"name\": \"Blizzard\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/blizzard.shtml\",\n                    \"shortDesc\": \"10% chance to freeze foe(s). Can't miss in Snow.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/blizzard\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 185\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bugbite\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Bite_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, it steals the target's held Berry if it is holding one and eats it immediately, gaining its effects even if the user's item is being ignored. Items lost to this move cannot be regained with Recycle or the Harvest Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Bug Bite\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbite.shtml\",\n                    \"shortDesc\": \"User steals and eats the target's Berry.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-bite\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"bugbuzz\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Buzz_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Bug Buzz\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbuzz.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-buzz\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"earthpower\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Earth_Power_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Earth Power\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/earthpower.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/earth-power\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"endure\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Endure_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user will survive attacks made by other Pokémon during this turn with at least 1 HP. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Endure\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/endure.shtml\",\n                    \"shortDesc\": \"User survives attacks this turn with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/endure\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"facade\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Facade_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Power doubles if the user is burned, paralyzed, or poisoned. The physical damage halving effect from the user's burn is ignored.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Facade\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/facade.shtml\",\n                    \"shortDesc\": \"Power doubles if user is burn/poison/paralyzed.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/facade\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"falseswipe\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/False_Swipe_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Leaves the target with at least 1 HP.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"False Swipe\",\n                    \"pp\": 40,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/falseswipe.shtml\",\n                    \"shortDesc\": \"Always leaves the target with at least 1 HP.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/false-swipe\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"fling\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fling_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The power of this move is based on the user's held item. The held item is lost and it activates for the target if applicable. If there is no target or the target avoids this move by protecting itself, the user's held item is still lost. The user can regain a thrown item with Recycle or the Harvest Ability. Fails if the user has no held item, if the held item cannot be thrown, if the user is under the effect of Embargo or Magic Room, or if the user has the Klutz Ability.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Fling\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/fling.shtml\",\n                    \"shortDesc\": \"Flings the user's item at the target. Power varies.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fling\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"focuspunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"150\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Punch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Tough\",\n                    \"desc\": \"The user loses its focus and does nothing if it is hit by a damaging attack this turn before it can execute the move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Focus Punch\",\n                    \"pp\": 20,\n                    \"priority\": -3,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focuspunch.shtml\",\n                    \"shortDesc\": \"Fails if the user takes damage before it hits.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-punch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Fighting\",\n                    \"zMovePower\": 200\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"icebeam\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Beam_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Beam\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icebeam.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-beam\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"icefang\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"65\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Fang_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 10% chance to freeze the target and a 10% chance to make it flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Ice Fang\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icefang.shtml\",\n                    \"shortDesc\": \"10% chance to freeze. 10% chance to flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-fang\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"icepunch\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"75\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Punch_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to freeze the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Ice Punch\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icepunch.shtml\",\n                    \"shortDesc\": \"10% chance to freeze the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-punch\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"icespinner\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Spinner_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": null,\n                    \"desc\": \"Ends the effects of Electric Terrain, Grassy Terrain, Misty Terrain, and Psychic Terrain.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Ice Spinner\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icespinner.shtml\",\n                    \"shortDesc\": \"Ends the effects of terrain.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-spinner\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"leechlife\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leech_Life_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Leech Life\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leechlife.shtml\",\n                    \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leech-life\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"pounce\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Pounce_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Pounce\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/pounce.shtml\",\n                    \"shortDesc\": \"100% chance to lower the target's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/pounce\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"protect\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Protect_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user is protected from most attacks made by other Pokémon during this turn. This move has a 1/X chance of being successful, where X starts at 1 and triples each time this move is successfully used. X resets to 1 if this move fails, if the user's last move used is not Baneful Bunker, Burning Bulwark, Detect, Endure, King's Shield, Max Guard, Obstruct, Protect, Quick Guard, Silk Trap, Spiky Shield, or Wide Guard, or if it was one of those moves and the user's protection was broken. Fails if the user moves last this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Protect\",\n                    \"pp\": 10,\n                    \"priority\": 4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/protect.shtml\",\n                    \"shortDesc\": \"Prevents moves from affecting the user this turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/protect\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"raindance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rain_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"For 5 turns, the weather becomes Rain Dance. The damage of Water-type attacks is multiplied by 1.5 and the damage of Fire-type attacks is multiplied by 0.5 during the effect. Lasts for 8 turns if the user is holding Damp Rock. Fails if the current weather is Rain Dance.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rain Dance\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/raindance.shtml\",\n                    \"shortDesc\": \"For 5 turns, heavy rain powers Water moves.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rain-dance\",\n                    \"target\": \"All\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"rest\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Rest_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user falls asleep for the next two turns and restores all of its HP, curing itself of any non-volatile status condition in the process. Fails if the user has full HP, is already asleep, or if another effect is preventing sleep.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Rest\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/rest.shtml\",\n                    \"shortDesc\": \"User sleeps 2 turns and restores HP and status.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/rest\",\n                    \"target\": \"Self\",\n                    \"type\": \"Psychic\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"sleeptalk\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sleep_Talk_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"One of the user's known moves, besides this move, is selected for use at random. Fails if the user is not asleep. The selected move does not have PP deducted from it, and can currently have 0 PP. This move cannot select Assist, Beak Blast, Belch, Bide, Blazing Torque, Celebrate, Chatter, Combat Torque, Copycat, Dynamax Cannon, Focus Punch, Hold Hands, Magical Torque, Me First, Metronome, Mimic, Mirror Move, Nature Power, Noxious Torque, Shell Trap, Sketch, Sleep Talk, Struggle, Uproar, Wicked Torque, or any two-turn move.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Sleep Talk\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sleeptalk.shtml\",\n                    \"shortDesc\": \"User must be asleep. Uses another known move.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sleep-talk\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"snowscape\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Snowscape_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": null,\n                    \"desc\": \"For 5 turns, the weather becomes Snow. During the effect, the Defense of Ice-type Pokémon is multiplied by 1.5 when taking damage from a physical attack. Lasts for 8 turns if the user is holding Icy Rock. Fails if the current weather is Snow.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Snowscape\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/snowscape.shtml\",\n                    \"shortDesc\": \"For 5 turns, snow falls. Ice: 1.5x Def.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/snowscape\",\n                    \"target\": \"All\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"spikes\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Spikes_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Sets up a hazard on the opposing side of the field, damaging each opposing Pokémon that switches in, unless it is a Flying-type Pokémon or has the Levitate Ability. Can be used up to three times before failing. Opponents lose 1/8 of their maximum HP with one layer, 1/6 of their maximum HP with two layers, and 1/4 of their maximum HP with three layers, all rounded down. Can be removed from the opposing side if any Pokémon uses Tidy Up, or if any opposing Pokémon uses Mortal Spin, Rapid Spin, or Defog successfully, or is hit by Defog.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Spikes\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/spikes.shtml\",\n                    \"shortDesc\": \"Hurts grounded foes on switch-in. Max 3 layers.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/spikes\",\n                    \"target\": \"Foe's Side\",\n                    \"type\": \"Ground\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"strugglebug\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Struggle_Bug_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"Has a 100% chance to lower the target's Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 100,\n                    \"name\": \"Struggle Bug\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/strugglebug.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Sp. Atk by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/struggle-bug\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"substitute\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Substitute_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"The user takes 1/4 of its maximum HP, rounded down, and puts it into a substitute to take its place in battle. The substitute is removed once enough damage is inflicted on it, if the user switches out or faints, or if any Pokémon uses Tidy Up. Baton Pass can be used to transfer the substitute to an ally, and the substitute will keep its remaining HP. Until the substitute is broken, it receives damage from all attacks made by other Pokémon and shields the user from status effects and stat stage changes caused by other Pokémon. Sound-based moves and Pokémon with the Infiltrator Ability ignore substitutes. The user still takes normal damage from weather and status effects while behind its substitute. If the substitute breaks during a multi-hit attack, the user will take damage from any remaining hits. If a substitute is created while the user is trapped by a binding move, the binding effect ends immediately. Fails if the user does not have enough HP remaining to create a substitute without fainting, or if it already has a substitute.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Substitute\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/substitute.shtml\",\n                    \"shortDesc\": \"User takes 1/4 its max HP to put in a substitute.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/substitute\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swift\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swift_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"This move does not check accuracy.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Swift\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swift.shtml\",\n                    \"shortDesc\": \"This move does not check accuracy. Hits foes.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swift\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"swordsdance\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Swords_Dance_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Raises the user's Attack by 2 stages.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Swords Dance\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/swordsdance.shtml\",\n                    \"shortDesc\": \"Raises the user's Attack by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/swords-dance\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"taunt\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Taunt_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"Prevents the target from using non-damaging moves for its next three turns. Pokémon with the Oblivious Ability or protected by the Aroma Veil Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Taunt\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/taunt.shtml\",\n                    \"shortDesc\": \"Target can't use status moves its next 3 turns.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/taunt\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Dark\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"terablast\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Tera_Blast_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": null,\n                    \"desc\": \"If the user is Terastallized, this move becomes a physical attack if the user's Attack is greater than its Special Attack, including stat stage changes, and this move's type becomes the same as the user's Tera Type. In addition, if the user's Tera Type is Stellar, this move has 100 power, is super effective against Terastallized targets and neutral against other targets, and lowers the user's Attack and Special Attack by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Tera Blast\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/terablast.shtml\",\n                    \"shortDesc\": \"If Terastallized: Phys. if Atk > SpA, type = Tera.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/tera-blast\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"trailblaze\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"50\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Trailblaze_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a 100% chance to raise the user's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Trailblaze\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/trailblaze.shtml\",\n                    \"shortDesc\": \"100% chance to raise the user's Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/trailblaze\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"uturn\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/U-turn_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cute\",\n                    \"desc\": \"If this move is successful and the user has not fainted, the user switches out even if it is trapped and is replaced immediately by a selected party member. The user does not switch out if there are no unfainted party members, or if the target switched out using an Eject Button or through the effect of the Emergency Exit or Wimp Out Abilities.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"U-turn\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/uturn.shtml\",\n                    \"shortDesc\": \"User switches out after damaging the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/u-turn\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"waterpulse\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Water_Pulse_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 20% chance to confuse the target.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Water Pulse\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/waterpulse.shtml\",\n                    \"shortDesc\": \"20% chance to confuse the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/water-pulse\",\n                    \"target\": \"Any\",\n                    \"type\": \"Water\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"move\": {\n                    \"key\": \"xscissor\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"X-Scissor\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ],\n              \"tutorMoves\": [],\n              \"virtualTransferMoves\": [],\n              \"levelUpMoves\": [\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"absorb\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"20\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Absorb_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Clever\",\n                    \"desc\": \"The user recovers 1/2 the HP lost by the target, rounded half up. If Big Root is held by the user, the HP recovered is 1.3x normal, rounded half down.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Absorb\",\n                    \"pp\": 25,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/absorb.shtml\",\n                    \"shortDesc\": \"User recovers 50% of the damage dealt.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/absorb\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Grass\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 31,\n                  \"move\": {\n                    \"key\": \"avalanche\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"60\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Avalanche_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Power doubles if the user was hit by the target this turn.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Avalanche\",\n                    \"pp\": 10,\n                    \"priority\": -4,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/avalanche.shtml\",\n                    \"shortDesc\": \"Power doubles if user is damaged by the target.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/avalanche\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 120\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 50,\n                  \"move\": {\n                    \"key\": \"bugbuzz\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"90\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Bug_Buzz_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 10% chance to lower the target's Special Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Bug Buzz\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/bugbuzz.shtml\",\n                    \"shortDesc\": \"10% chance to lower the target's Sp. Def by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/bug-buzz\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 175\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 25,\n                  \"move\": {\n                    \"key\": \"focusenergy\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Focus_Energy_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Raises the user's chance for a critical hit by 2 stages. Fails if the user already has the effect. Baton Pass can be used to transfer this effect to an ally.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Focus Energy\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/focusenergy.shtml\",\n                    \"shortDesc\": \"Raises the user's critical hit ratio by 2.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/focus-energy\",\n                    \"target\": \"Self\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 5,\n                  \"move\": {\n                    \"key\": \"furyattack\",\n                    \"accuracy\": 85,\n                    \"basePower\": \"15\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Attack_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Hits two to five times. Has a 35% chance to hit two or three times and a 15% chance to hit four or five times. If one of the hits breaks the target's substitute, it will take damage for the remaining hits. If the user has the Skill Link Ability, this move will always hit five times. If the user is holding Loaded Dice, this move will hit 4-5 times.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fury Attack\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furyattack.shtml\",\n                    \"shortDesc\": \"Hits 2-5 times in one turn.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-attack\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 10,\n                  \"move\": {\n                    \"key\": \"furycutter\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Fury_Cutter_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Power doubles with each successful hit, up to a maximum of 160 power. The power is reset if this move misses or another move is used.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Fury Cutter\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/furycutter.shtml\",\n                    \"shortDesc\": \"Power doubles with each hit, up to 160.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/fury-cutter\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 15,\n                  \"move\": {\n                    \"key\": \"iceshard\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"40\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Ice_Shard_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 90,\n                    \"name\": \"Ice Shard\",\n                    \"pp\": 30,\n                    \"priority\": 1,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iceshard.shtml\",\n                    \"shortDesc\": \"Usually goes first.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/ice-shard\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 45,\n                  \"move\": {\n                    \"key\": \"iciclecrash\",\n                    \"accuracy\": 90,\n                    \"basePower\": \"85\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icicle_Crash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 30% chance to make the target flinch.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Icicle Crash\",\n                    \"pp\": 10,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/iciclecrash.shtml\",\n                    \"shortDesc\": \"30% chance to make the target flinch.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icicle-crash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 160\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 20,\n                  \"move\": {\n                    \"key\": \"icywind\",\n                    \"accuracy\": 95,\n                    \"basePower\": \"55\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Icy_Wind_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Has a 100% chance to lower the target's Speed by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 110,\n                    \"name\": \"Icy Wind\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/icywind.shtml\",\n                    \"shortDesc\": \"100% chance to lower the foe(s) Speed by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/icy-wind\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 100\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 1,\n                  \"move\": {\n                    \"key\": \"leer\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Leer_(move)\",\n                    \"category\": \"Status\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Lowers the target's Defense by 1 stage.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": null,\n                    \"name\": \"Leer\",\n                    \"pp\": 30,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/leer.shtml\",\n                    \"shortDesc\": \"Lowers the foe(s) Defense by 1.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/leer\",\n                    \"target\": \"Adjacent Foes\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 55,\n                  \"move\": {\n                    \"key\": \"sheercold\",\n                    \"accuracy\": 30,\n                    \"basePower\": \"0\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Sheer_Cold_(move)\",\n                    \"category\": \"Special\",\n                    \"contestType\": \"Beautiful\",\n                    \"desc\": \"Deals damage to the target equal to the target's maximum HP. Ignores accuracy and evasiveness modifiers. This attack's accuracy is equal to (user's level - target's level + X)%, where X is 30 if the user is an Ice type and 20 otherwise, and fails if the target is at a higher level. Ice-type Pokémon and Pokémon with the Sturdy Ability are immune.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"Sheer Cold\",\n                    \"pp\": 5,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/sheercold.shtml\",\n                    \"shortDesc\": \"OHKOs non-Ice targets. Fails if user's lower level.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/sheer-cold\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Ice\",\n                    \"zMovePower\": 0\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 35,\n                  \"move\": {\n                    \"key\": \"slash\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"70\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/Slash_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"Has a higher chance for a critical hit.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 120,\n                    \"name\": \"Slash\",\n                    \"pp\": 20,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/slash.shtml\",\n                    \"shortDesc\": \"High critical hit ratio.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/slash\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Normal\",\n                    \"zMovePower\": 140\n                  }\n                },\n                {\n                  \"generation\": 9,\n                  \"level\": 40,\n                  \"move\": {\n                    \"key\": \"xscissor\",\n                    \"accuracy\": 100,\n                    \"basePower\": \"80\",\n                    \"bulbapediaPage\": \"https://bulbapedia.bulbagarden.net/wiki/X-scissor_(move)\",\n                    \"category\": \"Physical\",\n                    \"contestType\": \"Cool\",\n                    \"desc\": \"No additional effect.\",\n                    \"isFieldMove\": null,\n                    \"isGMax\": null,\n                    \"isNonstandard\": null,\n                    \"isZ\": null,\n                    \"maxMovePower\": 130,\n                    \"name\": \"X-Scissor\",\n                    \"pp\": 15,\n                    \"priority\": 0,\n                    \"serebiiPage\": \"https://www.serebii.net/attackdex-swsh/xscissor.shtml\",\n                    \"shortDesc\": \"No additional effect.\",\n                    \"smogonPage\": \"https://www.smogon.com/dex/ss/moves/x-scissor\",\n                    \"target\": \"Normal\",\n                    \"type\": \"Bug\",\n                    \"zMovePower\": 160\n                  }\n                }\n              ]\n            }\n          },\n          \"key\": \"syclant\",\n          \"eggGroups\": [\"Bug\"],\n          \"evYields\": { \"hp\": 0, \"attack\": 0, \"defense\": 0, \"specialattack\": 0, \"specialdefense\": 0, \"speed\": 0 },\n          \"evolutionLevel\": \"30\",\n          \"flavorTexts\": [],\n          \"forme\": null,\n          \"formeLetter\": null,\n          \"gender\": { \"female\": \"50%\", \"male\": \"50%\" },\n          \"height\": 1.7,\n          \"isEggObtainable\": false,\n          \"backSprite\": \"https://play.pokemonshowdown.com/sprites/gen5-back/syclant.png\",\n          \"levellingRate\": null,\n          \"maximumHatchTime\": null,\n          \"minimumHatchTime\": null,\n          \"num\": -2,\n          \"otherFormes\": null,\n          \"serebiiPage\": \"\",\n          \"shinyBackSprite\": \"https://play.pokemonshowdown.com/sprites/gen5-back-shiny/syclant.png\",\n          \"shinySprite\": \"https://play.pokemonshowdown.com/sprites/gen5-shiny/syclant.png\",\n          \"smogonPage\": \"https://www.smogon.com/dex/sv/pokemon/syclant\",\n          \"baseForme\": null,\n          \"smogonTier\": \"CAP\",\n          \"species\": \"syclant\",\n          \"sprite\": \"https://play.pokemonshowdown.com/sprites/gen5/syclant.png\",\n          \"types\": [\n            {\n              \"name\": \"Ice\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dragon\", \"flying\", \"grass\", \"ground\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dark\", \"electric\", \"fairy\", \"fighting\", \"ghost\", \"normal\", \"poison\", \"psychic\", \"rock\"],\n                  \"resistedTypes\": [\"fire\", \"ice\", \"steel\", \"water\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"fighting\", \"fire\", \"rock\", \"steel\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\n                    \"bug\",\n                    \"dark\",\n                    \"dragon\",\n                    \"electric\",\n                    \"fairy\",\n                    \"flying\",\n                    \"ghost\",\n                    \"grass\",\n                    \"ground\",\n                    \"normal\",\n                    \"poison\",\n                    \"psychic\",\n                    \"water\"\n                  ],\n                  \"resistedTypes\": [\"ice\"]\n                }\n              }\n            },\n            {\n              \"name\": \"Bug\",\n              \"matchup\": {\n                \"attacking\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"dark\", \"grass\", \"psychic\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dragon\", \"electric\", \"ground\", \"ice\", \"normal\", \"rock\", \"water\"],\n                  \"resistedTypes\": [\"fairy\", \"fighting\", \"fire\", \"flying\", \"ghost\", \"poison\", \"steel\"]\n                },\n                \"defending\": {\n                  \"doubleEffectiveTypes\": [],\n                  \"doubleResistedTypes\": [],\n                  \"effectiveTypes\": [\"fire\", \"flying\", \"rock\"],\n                  \"effectlessTypes\": [],\n                  \"normalTypes\": [\"bug\", \"dark\", \"dragon\", \"electric\", \"fairy\", \"ghost\", \"ice\", \"normal\", \"poison\", \"psychic\", \"steel\", \"water\"],\n                  \"resistedTypes\": [\"fighting\", \"grass\", \"ground\"]\n                }\n              }\n            }\n          ],\n          \"baseSpecies\": null,\n          \"baseStats\": { \"hp\": 70, \"attack\": 116, \"defense\": 70, \"specialattack\": 114, \"specialdefense\": 64, \"speed\": 121 },\n          \"baseStatsTotal\": 555,\n          \"bulbapediaPage\": \"\",\n          \"catchRate\": { \"base\": 0, \"percentageWithOrdinaryPokeballAtFullHealth\": \"0%\" },\n          \"classification\": null,\n          \"respelling\": null,\n          \"ipa\": null,\n          \"color\": \"Blue\",\n          \"cosmeticFormes\": null,\n          \"cry\": null,\n          \"weight\": 52,\n          \"legendary\": false,\n          \"mythical\": false,\n          \"evolutions\": null,\n          \"preevolutions\": null\n        }\n      ],\n      \"preevolutions\": null\n    }\n  }\n}\n"
  },
  {
    "path": "tests/testUtils/queries/abilities.ts",
    "content": "import gql from 'graphql-tag';\n\nexport const getAbilityName = gql`\n  query ($ability: AbilitiesEnum!) {\n    getAbility(ability: $ability) {\n      name\n    }\n  }\n`;\n\nexport const getAbilityWithFullData = gql`\n  fragment AbilityFragment on Ability {\n    key\n    bulbapediaPage\n    desc\n    isFieldAbility\n    isNonstandard\n    name\n    serebiiPage\n    shortDesc\n    smogonPage\n  }\n\n  query ($ability: AbilitiesEnum!) {\n    getAbility(ability: $ability) {\n      desc\n      isFieldAbility\n      isNonstandard\n      name\n      shortDesc\n      serebiiPage\n      smogonPage\n      bulbapediaPage\n      key\n      pokemonThatHaveThisAbility {\n        key\n        species\n        abilities {\n          first {\n            ...AbilityFragment\n          }\n          hidden {\n            ...AbilityFragment\n          }\n          second {\n            ...AbilityFragment\n          }\n          special {\n            ...AbilityFragment\n          }\n        }\n      }\n    }\n  }\n`;\n\nexport const getFuzzyAbilityName = gql`\n  query ($ability: String!, $take: Int, $reverse: Boolean) {\n    getFuzzyAbility(ability: $ability, take: $take, reverse: $reverse) {\n      name\n    }\n  }\n`;\n\nexport const getFuzzyAbilityWithFullData = gql`\n  query ($ability: String!, $take: Int, $reverse: Boolean) {\n    getFuzzyAbility(ability: $ability, take: $take, reverse: $reverse) {\n      desc\n      isFieldAbility\n      isNonstandard\n      name\n      shortDesc\n      serebiiPage\n      smogonPage\n      bulbapediaPage\n    }\n  }\n`;\n"
  },
  {
    "path": "tests/testUtils/queries/items.ts",
    "content": "import gql from 'graphql-tag';\n\nexport const getItemName = gql`\n  query ($item: ItemsEnum!) {\n    getItem(item: $item) {\n      name\n    }\n  }\n`;\n\nexport const getItemWithFullData = gql`\n  query ($item: ItemsEnum!) {\n    getItem(item: $item) {\n      bulbapediaPage\n      desc\n      generationIntroduced\n      isNonstandard\n      name\n      serebiiPage\n      shortDesc\n      smogonPage\n      sprite\n    }\n  }\n`;\n\nexport const getFuzzyItemName = gql`\n  query ($item: String!, $take: Int, $reverse: Boolean) {\n    getFuzzyItem(item: $item, take: $take, reverse: $reverse) {\n      name\n    }\n  }\n`;\n\nexport const getFuzzyItemWithFullData = gql`\n  query ($item: String!, $take: Int, $reverse: Boolean) {\n    getFuzzyItem(item: $item, take: $take, reverse: $reverse) {\n      bulbapediaPage\n      desc\n      generationIntroduced\n      isNonstandard\n      name\n      serebiiPage\n      shortDesc\n      smogonPage\n      sprite\n    }\n  }\n`;\n"
  },
  {
    "path": "tests/testUtils/queries/learnsets.ts",
    "content": "import gql from 'graphql-tag';\n\nexport const getLearnset = gql`\n  query ($pokemon: PokemonEnum!, $moves: [MovesEnum!]!, $generation: Int) {\n    getLearnset(pokemon: $pokemon, moves: $moves, generation: $generation) {\n      species\n      tmMoves {\n        move {\n          name\n        }\n        generation\n      }\n      virtualTransferMoves {\n        move {\n          name\n        }\n        generation\n      }\n      dreamworldMoves {\n        move {\n          name\n        }\n        generation\n      }\n      eggMoves {\n        move {\n          name\n        }\n        generation\n      }\n      eventMoves {\n        move {\n          name\n        }\n        generation\n      }\n      levelUpMoves {\n        move {\n          name\n        }\n        level\n        generation\n      }\n      tutorMoves {\n        move {\n          name\n        }\n        generation\n      }\n    }\n  }\n`;\n\nexport const getLearnsetWithPokemonSpecies = gql`\n  query ($pokemon: PokemonEnum!, $moves: [MovesEnum!]!, $generation: Int) {\n    getLearnset(pokemon: $pokemon, moves: $moves, generation: $generation) {\n      species\n      levelUpMoves {\n        move {\n          name\n        }\n        level\n        generation\n      }\n    }\n  }\n`;\n\nexport const getLearnsetWithPokemonBacksprite = gql`\n  query ($pokemon: PokemonEnum!, $moves: [MovesEnum!]!, $generation: Int) {\n    getLearnset(pokemon: $pokemon, moves: $moves, generation: $generation) {\n      backSprite\n      levelUpMoves {\n        move {\n          name\n        }\n        level\n        generation\n      }\n    }\n  }\n`;\n\nexport const getLearnsetWithPokemonSprite = gql`\n  query ($pokemon: PokemonEnum!, $moves: [MovesEnum!]!, $generation: Int) {\n    getLearnset(pokemon: $pokemon, moves: $moves, generation: $generation) {\n      sprite\n      levelUpMoves {\n        move {\n          name\n        }\n        level\n        generation\n      }\n    }\n  }\n`;\n\nexport const getLearnsetWithPokemonColor = gql`\n  query ($pokemon: PokemonEnum!, $moves: [MovesEnum!]!, $generation: Int) {\n    getLearnset(pokemon: $pokemon, moves: $moves, generation: $generation) {\n      color\n      levelUpMoves {\n        move {\n          name\n        }\n        level\n        generation\n      }\n    }\n  }\n`;\n\nexport const getLearnsetWithPokemonNum = gql`\n  query ($pokemon: PokemonEnum!, $moves: [MovesEnum!]!, $generation: Int) {\n    getLearnset(pokemon: $pokemon, moves: $moves, generation: $generation) {\n      num\n      levelUpMoves {\n        move {\n          name\n        }\n        level\n        generation\n      }\n    }\n  }\n`;\n\nexport const getLearnsetWithPokemonShinyBackSprite = gql`\n  query ($pokemon: PokemonEnum!, $moves: [MovesEnum!]!, $generation: Int) {\n    getLearnset(pokemon: $pokemon, moves: $moves, generation: $generation) {\n      shinyBackSprite\n      levelUpMoves {\n        move {\n          name\n        }\n        level\n        generation\n      }\n    }\n  }\n`;\n\nexport const getLearnsetWithPokemonShinySprite = gql`\n  query ($pokemon: PokemonEnum!, $moves: [MovesEnum!]!, $generation: Int) {\n    getLearnset(pokemon: $pokemon, moves: $moves, generation: $generation) {\n      shinySprite\n      levelUpMoves {\n        move {\n          name\n        }\n        level\n        generation\n      }\n    }\n  }\n`;\n\nexport const getFuzzyLearnset = gql`\n  query ($pokemon: String!, $moves: [String!]!, $generation: Int) {\n    getFuzzyLearnset(pokemon: $pokemon, moves: $moves, generation: $generation) {\n      species\n      backSprite\n      sprite\n      color\n      num\n      shinyBackSprite\n      shinySprite\n      tmMoves {\n        move {\n          name\n        }\n        generation\n      }\n      virtualTransferMoves {\n        move {\n          name\n        }\n        generation\n      }\n      dreamworldMoves {\n        move {\n          name\n        }\n        generation\n      }\n      eggMoves {\n        move {\n          name\n        }\n        generation\n      }\n      eventMoves {\n        move {\n          name\n        }\n        generation\n      }\n      levelUpMoves {\n        move {\n          name\n        }\n        level\n        generation\n      }\n      tutorMoves {\n        move {\n          name\n        }\n        generation\n      }\n    }\n  }\n`;\n"
  },
  {
    "path": "tests/testUtils/queries/moves.ts",
    "content": "import gql from 'graphql-tag';\n\nexport const getMoveName = gql`\n  query ($move: MovesEnum!) {\n    getMove(move: $move) {\n      name\n    }\n  }\n`;\n\nexport const getMoveZPower = gql`\n  query ($move: MovesEnum!) {\n    getMove(move: $move) {\n      zMovePower\n    }\n  }\n`;\n\nexport const getMoveWithFullData = gql`\n  query ($move: MovesEnum!) {\n    getMove(move: $move) {\n      accuracy\n      maxMovePower\n      name\n      pp\n      priority\n      serebiiPage\n      shortDesc\n      smogonPage\n      target\n      type\n      zMovePower\n      basePower\n      bulbapediaPage\n      category\n      contestType\n      desc\n      isFieldMove\n      isGMax\n      isNonstandard\n      isZ\n    }\n  }\n`;\n\nexport const getFuzzyMoveName = gql`\n  query ($move: String!, $take: Int, $reverse: Boolean) {\n    getFuzzyMove(move: $move, take: $take, reverse: $reverse) {\n      name\n    }\n  }\n`;\n\nexport const getFuzzyMoveWithFullData = gql`\n  query ($move: String!, $take: Int, $reverse: Boolean) {\n    getFuzzyMove(move: $move, take: $take, reverse: $reverse) {\n      accuracy\n      maxMovePower\n      name\n      pp\n      priority\n      serebiiPage\n      shortDesc\n      smogonPage\n      target\n      type\n      zMovePower\n      basePower\n      bulbapediaPage\n      category\n      contestType\n      desc\n      isFieldMove\n      isGMax\n      isNonstandard\n      isZ\n    }\n  }\n`;\n"
  },
  {
    "path": "tests/testUtils/queries/natures.ts",
    "content": "import gql from 'graphql-tag';\n\nexport const getNatureName = gql`\n  query ($nature: NaturesEnum!) {\n    getNature(nature: $nature) {\n      name\n    }\n  }\n`;\n\nexport const getNatureWithFullData = gql`\n  query ($nature: NaturesEnum!) {\n    getNature(nature: $nature) {\n      name\n      increasedStat\n      decreasedStat\n      preferredFlavor\n      dislikedFlavor\n    }\n  }\n`;\n\nexport const getAllNatures = gql`\n  {\n    getAllNatures {\n      key\n      name\n    }\n  }\n`;\n"
  },
  {
    "path": "tests/testUtils/queries/pokemon-all-data.ts",
    "content": "import gql from 'graphql-tag';\n\nexport const getPokemonWithFullDataAndEvolutions = gql`\n  fragment GenerationalPokemonLearnsetFragment on GenerationalPokemonLearnset {\n    generation3 {\n      ...PokemonLearnsetFragment\n    }\n    generation4 {\n      ...PokemonLearnsetFragment\n    }\n    generation5 {\n      ...PokemonLearnsetFragment\n    }\n    generation6 {\n      ...PokemonLearnsetFragment\n    }\n    generation7 {\n      ...PokemonLearnsetFragment\n    }\n    generation8 {\n      ...PokemonLearnsetFragment\n    }\n  }\n\n  fragment PokemonLearnsetFragment on PokemonLearnset {\n    dreamworldMoves {\n      ...LearnsetMoveFragment\n    }\n    eggMoves {\n      ...LearnsetMoveFragment\n    }\n    eventMoves {\n      ...LearnsetMoveFragment\n    }\n    tmMoves {\n      ...LearnsetMoveFragment\n    }\n    tutorMoves {\n      ...LearnsetMoveFragment\n    }\n    virtualTransferMoves {\n      ...LearnsetMoveFragment\n    }\n    levelUpMoves {\n      ...LearnsetLevelUpMoveFragment\n    }\n  }\n\n  fragment LearnsetLevelUpMoveFragment on LearnsetLevelUpMove {\n    generation\n    level\n    move {\n      ...MoveFragment\n    }\n  }\n\n  fragment MoveFragment on Move {\n    key\n    accuracy\n    basePower\n    bulbapediaPage\n    category\n    contestType\n    desc\n    isFieldMove\n    isGMax\n    isNonstandard\n    isZ\n    maxMovePower\n    name\n    pp\n    priority\n    serebiiPage\n    shortDesc\n    smogonPage\n    target\n    type\n    zMovePower\n  }\n\n  fragment LearnsetMoveFragment on LearnsetMove {\n    generation\n    move {\n      ...MoveFragment\n    }\n  }\n\n  fragment AbilitiesFragment on Abilities {\n    first {\n      ...AbilityFragment\n    }\n    second {\n      ...AbilityFragment\n    }\n    hidden {\n      ...AbilityFragment\n    }\n    special {\n      ...AbilityFragment\n    }\n  }\n\n  fragment AbilityFragment on Ability {\n    name\n    key\n    bulbapediaPage\n    desc\n    isFieldAbility\n    serebiiPage\n    shortDesc\n    smogonPage\n    pokemonThatHaveThisAbility {\n      ...FullDataFragmentWithoutNested\n      learnsets {\n        ...GenerationalPokemonLearnsetFragment\n      }\n    }\n  }\n\n  fragment EvYieldsFragment on EvYields {\n    hp\n    attack\n    defense\n    specialattack\n    specialdefense\n    speed\n  }\n\n  fragment FlavorFragment on Flavor {\n    flavor\n    game\n  }\n\n  fragment GenderFragment on Gender {\n    female\n    male\n  }\n\n  fragment PokemonTypeFragment on PokemonType {\n    name\n    matchup {\n      attacking {\n        doubleEffectiveTypes\n        doubleResistedTypes\n        effectiveTypes\n        effectlessTypes\n        normalTypes\n        resistedTypes\n      }\n      defending {\n        doubleEffectiveTypes\n        doubleResistedTypes\n        effectiveTypes\n        effectlessTypes\n        normalTypes\n        resistedTypes\n      }\n    }\n  }\n\n  fragment StatsFragment on Stats {\n    hp\n    attack\n    defense\n    specialattack\n    specialdefense\n    speed\n  }\n\n  fragment CatchRateFragment on CatchRate {\n    base\n    percentageWithOrdinaryPokeballAtFullHealth\n  }\n\n  fragment FullDataFragmentWithoutNested on Pokemon {\n    key\n    eggGroups\n    evYields {\n      ...EvYieldsFragment\n    }\n    evolutionLevel\n    flavorTexts {\n      ...FlavorFragment\n    }\n    forme\n    formeLetter\n    gender {\n      ...GenderFragment\n    }\n    height\n    isEggObtainable\n    backSprite\n    levellingRate\n    maximumHatchTime\n    minimumHatchTime\n    num\n    otherFormes\n    serebiiPage\n    shinyBackSprite\n    shinySprite\n    smogonPage\n    baseForme\n    smogonTier\n    species\n    sprite\n    types {\n      ...PokemonTypeFragment\n    }\n    baseSpecies\n    baseStats {\n      ...StatsFragment\n    }\n    baseStatsTotal\n    bulbapediaPage\n    catchRate {\n      ...CatchRateFragment\n    }\n    classification\n    respelling\n    ipa\n    color\n    cosmeticFormes\n    cry\n    weight\n    legendary\n    mythical\n  }\n\n  fragment FullDataFragment on Pokemon {\n    abilities {\n      ...AbilitiesFragment\n    }\n    learnsets {\n      ...GenerationalPokemonLearnsetFragment\n    }\n    ...FullDataFragmentWithoutNested\n  }\n\n  fragment FullData on Pokemon {\n    ...FullDataFragment\n    evolutions {\n      ...FullDataFragment\n      evolutions {\n        ...FullDataFragment\n      }\n      preevolutions {\n        ...FullDataFragment\n      }\n    }\n\n    preevolutions {\n      ...FullDataFragment\n      evolutions {\n        ...FullDataFragment\n      }\n      preevolutions {\n        ...FullDataFragment\n      }\n    }\n  }\n\n  query GetPokemon($pokemon: PokemonEnum!) {\n    getPokemon(pokemon: $pokemon) {\n      ...FullData\n    }\n  }\n`;\n"
  },
  {
    "path": "tests/testUtils/queries/pokemon.ts",
    "content": "import gql from 'graphql-tag';\n\nexport const getPokemonSpecies = gql`\n  query ($pokemon: PokemonEnum!) {\n    getPokemon(pokemon: $pokemon) {\n      species\n    }\n  }\n`;\n\nexport const getPokemonSpeciesWithSprites = gql`\n  query ($pokemon: PokemonEnum!) {\n    getPokemon(pokemon: $pokemon) {\n      species\n      sprite\n      backSprite\n      shinySprite\n      shinyBackSprite\n    }\n  }\n`;\n\nexport const getPokemonByNationalDexNumber = gql`\n  query ($number: Int!) {\n    getPokemonByDexNumber(number: $number) {\n      species\n    }\n  }\n`;\n\nexport const getPokemonWithFullData = gql`\n  query ($pokemon: PokemonEnum!) {\n    getPokemon(pokemon: $pokemon) {\n      abilities {\n        first {\n          name\n        }\n        second {\n          name\n        }\n        hidden {\n          name\n        }\n        special {\n          name\n        }\n      }\n      eggGroups\n      evYields {\n        hp\n        attack\n        defense\n        specialattack\n        specialdefense\n        speed\n      }\n      evolutionLevel\n      flavorTexts {\n        flavor\n        game\n      }\n      forme\n      formeLetter\n      gender {\n        female\n        male\n      }\n      height\n      isEggObtainable\n      backSprite\n      levellingRate\n      maximumHatchTime\n      minimumHatchTime\n      num\n      otherFormes\n      serebiiPage\n      shinyBackSprite\n      shinySprite\n      smogonPage\n      baseForme\n      smogonTier\n      species\n      sprite\n      types {\n        name\n      }\n      baseSpecies\n      baseStats {\n        hp\n        attack\n        defense\n        specialattack\n        specialdefense\n        speed\n      }\n      baseStatsTotal\n      bulbapediaPage\n      catchRate {\n        base\n        percentageWithOrdinaryPokeballAtFullHealth\n      }\n      classification\n      respelling\n      ipa\n      color\n      cosmeticFormes\n      cry\n    }\n  }\n`;\n\nexport const getFuzzyPokemonSpecies = gql`\n  query ($pokemon: String!, $take: Int, $reverse: Boolean) {\n    getFuzzyPokemon(pokemon: $pokemon, take: $take, reverse: $reverse) {\n      species\n    }\n  }\n`;\n\nexport const getAllPokemon = gql`\n  query ($offset: Int, $take: Int) {\n    getAllPokemon(offset: $offset, take: $take) {\n      key\n      species\n    }\n  }\n`;\n"
  },
  {
    "path": "tests/testUtils/queries/typematchup.ts",
    "content": "import gql from 'graphql-tag';\n\nexport const getTypeMatchup = gql`\n  fragment type on TypeEffectiveness {\n    doubleEffectiveTypes\n    doubleResistedTypes\n    effectiveTypes\n    effectlessTypes\n    normalTypes\n    resistedTypes\n  }\n\n  query GetTypeMatchup($primaryType: TypesEnum!, $secondaryType: TypesEnum) {\n    getTypeMatchup(primaryType: $primaryType, secondaryType: $secondaryType) {\n      attacking {\n        ...type\n      }\n      defending {\n        ...type\n      }\n    }\n  }\n`;\n"
  },
  {
    "path": "tests/testUtils/testUtils.ts",
    "content": "import { RootResolver } from '#resolvers/RootResolver';\nimport type { Query } from '#test-utils/types';\nimport { RootTypedef } from '#utils/grapqhl-root-typedef-resolver';\nimport { ApolloServer } from '@apollo/server';\nimport { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer';\nimport cors from '@koa/cors';\nimport Koa from 'koa';\nimport bodyParser from 'koa-bodyparser';\nimport { createServer } from 'node:http';\n\nlet testServer: ApolloServer | undefined = undefined;\n\nexport async function executeGraphQL<K extends keyof Omit<Query, '__typename'> | unknown>(\n  args: Pick<Parameters<ApolloServer['executeOperation']>[0], 'query' | 'variables'>\n) {\n  if (testServer === undefined) {\n    const app = new Koa();\n    const httpServer = createServer(app.callback());\n\n    app.use(cors());\n    app.use(bodyParser());\n\n    testServer = new ApolloServer({\n      resolvers: RootResolver,\n      typeDefs: RootTypedef,\n      plugins: [ApolloServerPluginDrainHttpServer({ httpServer })]\n    });\n  }\n\n  const response = await testServer.executeOperation(args);\n\n  if (response.body.kind === 'incremental') {\n    throw new Error('Incremental responses are not supported');\n  }\n\n  return {\n    errors: response.body.singleResult.errors,\n    data: response.body.singleResult.data as K extends keyof Omit<Query, '__typename'> ? Record<K, Omit<Query[K], '__typename'>> : never\n  };\n}\n"
  },
  {
    "path": "tests/testUtils/types.d.ts",
    "content": "import { Ability, Item, Learnset, Move, Pokemon, TypeMatchup, Nature } from '#types/graphql-mapped-types';\n\nexport interface Query {\n  /** Gets the details on a Pokémon ability, using the ability name */\n  getAbility: Ability;\n  /**\n   * Returns a list of all the known Pokémon.\n   *\n   * For every Pokémon all the data on each requested field is returned.\n   *\n   * **_NOTE:_ To skip all CAP Pokémon, PokéStar Pokémon, Missingno, and 'M (00) provide an `offset` of 89**\n   *\n   * You can provide `take` to limit the amount of Pokémon to return (default: 1), set the offset of where to start with `offset`, and reverse the entire array with `reverse`.\n   *\n   * You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n   *\n   * While the API will currently not rate limit the usage of this query, it may do so in the future.\n   *\n   * It is advisable to cache responses of this query.\n   */\n  getAllPokemon: Array<Pokemon>;\n  /**\n   * Gets details on a Pokémon ability, using a fuzzy search on name\n   *\n   * This can be used to find multiple results based on the query\n   *\n   * You can provide `take` to limit the amount of abilities to return (default: 1), set the offset of where to start with `offset`, and reverse the entire array with `reverse`.\n   */\n  getFuzzyAbility: Array<Ability>;\n  /**\n   * Gets details on a Pokémon item, using a fuzzy search on name\n   *\n   * This can be used to find multiple results based on the query\n   *\n   * By default only 1 result is returned. You can provide the arguments `take`, `offset`, and `reverse` to modify this behaviour.\n   */\n  getFuzzyItem: Array<Item>;\n  /**\n   * Gets the learnset for a given Pokémon and move.\n   *\n   * A fuzzy search is performed to find a matching Pokémon and move\n   *\n   * Multiple moves are possible by putting them in an array: `[move1, move2]`.\n   *\n   * You can also apply a generation filter (only results for the given generation will be returned) with the generation argument\n   */\n  getFuzzyLearnset: Learnset;\n  /**\n   * Gets details on a Pokémon move, using a fuzzy search on name\n   *\n   * This can be used to find multiple results based on the query\n   *\n   * By default only 1 result is returned. You can provide the arguments `take`, \"offset\", and \"reverse\" to modify this behaviour.\n   */\n  getFuzzyMove: Array<Move>;\n  /**\n   * Gets details on one or more Pokémon based on species name\n   *\n   * You can provide `take` to limit the amount of Pokémon to return (default: 1), set the offset of where to start with `offset`, and reverse the entire array with `reverse`.\n   *\n   * You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n   *\n   * **Reversal is applied before pagination!**\n   */\n  getFuzzyPokemon: Array<Pokemon>;\n  /** Gets the details on a Pokémon item, using the item name */\n  getItem: Item;\n  /**\n   * Gets the learnsets for a given Pokémon and move.\n   *\n   * Multiple moves are possible by putting them in an array: `[move1, move2]`.\n   *\n   * You can also apply a generation filter (only results for the given generation will be returned) with the generation argument\n   */\n  getLearnset: Learnset;\n  /** Gets the details on a Pokémon move, using the move name */\n  getMove: Move;\n  /**\n   * Gets details on a single Pokémon based on species name\n   *\n   * You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n   *\n   * **Reversal is applied before pagination!**\n   */\n  getPokemon: Pokemon;\n  /**\n   * Gets details on a single Pokémon based on National Pokédex number\n   *\n   * You can provide `takeFlavorTexts` to limit the amount of flavour texts to return, set the offset of where to start with `offsetFlavorTexts`, and reverse the entire array with `reverseFlavorTexts`.\n   *\n   * **Reversal is applied before pagination!**\n   */\n  getPokemonByDexNumber: Pokemon;\n  /** Gets the type matchup data for the given type or types */\n  getTypeMatchup: TypeMatchup;\n  /** Gets the details on a Pokémon ability, using the ability name */\n  getNature: Nature;\n  /**\n   * Returns a list of all the Natures in Pokémon.\n   *\n   * For every Nature all the data on each requested field is returned.\n   */\n  getAllNatures: Array<Nature>;\n}\n"
  },
  {
    "path": "tests/tsconfig.json",
    "content": "{\n  \"extends\": \"../tsconfig.base.json\",\n  \"compilerOptions\": {\n    \"baseUrl\": \".\",\n    \"paths\": {\n      \"#assets/*\": [\"../src/lib/assets/*\"],\n      \"#jsonAssets/*.json\": [\"../src/lib/assets/*.json\"],\n      \"#dexdata/*\": [\"../src/lib/assets/pokedex-data/*\"],\n      \"#resolvers/*\": [\"../src/lib/resolvers/*\"],\n      \"#types/*\": [\"../src/lib/types/*\"],\n      \"#utils/*\": [\"../src/lib/utils/*\"],\n      \"#validations/*\": [\"../src/lib/validations/*\"],\n      \"#mappers/*\": [\"../src/lib/mappers/*\"],\n      \"#test-utils/*\": [\"./testUtils/*\"],\n      \"#root/*\": [\"../src/*\"]\n    },\n    \"types\": [\"vitest/globals\"]\n  },\n  \"include\": [\".\"]\n}\n"
  },
  {
    "path": "tsconfig.base.json",
    "content": "{\n  \"extends\": [\"@sapphire/ts-config\", \"@sapphire/ts-config/extra-strict\", \"@sapphire/ts-config/bundler\", \"@sapphire/ts-config/verbatim\"],\n  \"compilerOptions\": {\n    \"lib\": [\"ESNext\", \"DOM\"],\n    \"noEmit\": true,\n    \"incremental\": false\n  }\n}\n"
  },
  {
    "path": "tsconfig.eslint.json",
    "content": "{\n  \"extends\": \"./tsconfig.base.json\",\n  \"include\": [\"src\", \"scripts\", \"tests\", \"docs\", \"utilities\", \"vitest.config.ts\", \"tsup.config.ts\", \"tsup.config-package.ts\", \".prettierrc.mjs\"]\n}\n"
  },
  {
    "path": "tsconfig.package.json",
    "content": "{\n  \"extends\": \"./tsconfig.base.json\",\n  \"include\": [\"codegen\", \"utilities\"]\n}\n"
  },
  {
    "path": "tsup.config-package.ts",
    "content": "import { defineConfig, type Options } from 'tsup';\n\nconst baseConfig: Options = {\n  clean: true,\n  dts: true,\n  minify: false,\n  skipNodeModulesBundle: true,\n  sourcemap: true,\n  target: 'es2020',\n  tsconfig: './tsconfig.package.json',\n  keepNames: true,\n  treeshake: true\n};\n\nexport default [\n  defineConfig({\n    ...baseConfig,\n    outDir: 'dist/codegen/cjs',\n    format: 'cjs',\n    entry: ['codegen/graphql-pokemon.ts']\n  }),\n  defineConfig({\n    ...baseConfig,\n    outDir: 'dist/codegen/esm',\n    format: 'esm',\n    entry: ['codegen/graphql-pokemon.ts'],\n    outExtension: () => ({ js: '.mjs' })\n  }),\n  defineConfig({\n    ...baseConfig,\n    outDir: 'dist/utilities/cjs',\n    format: 'cjs',\n    entry: ['utilities/index.ts']\n  }),\n  defineConfig({\n    ...baseConfig,\n    outDir: 'dist/utilities/esm',\n    format: 'esm',\n    entry: ['utilities/index.ts'],\n    outExtension: () => ({ js: '.mjs' })\n  })\n];\n"
  },
  {
    "path": "tsup.config.ts",
    "content": "import { defineConfig } from 'tsup';\n\nexport default defineConfig({\n  outDir: 'api',\n  clean: true,\n  dts: false,\n  entry: ['src/**'],\n  format: ['esm'],\n  minify: false,\n  skipNodeModulesBundle: true,\n  sourcemap: true,\n  target: 'esnext',\n  tsconfig: 'src/tsconfig.json',\n  bundle: false,\n  shims: false,\n  keepNames: true,\n  splitting: false,\n  define: {\n    'globalThis.process': JSON.stringify(true),\n    'process.env.NODE_ENV': JSON.stringify('production')\n  }\n});\n"
  },
  {
    "path": "utilities/guards.ts",
    "content": "import { PokemonEnum, type Pokemon } from '../codegen/graphql-pokemon';\n\n/**\n * Checks if the given Pokemon is MissingNo.\n *\n * This uses the Pokemon's key, rather than the number.\n * To check if it's either MissingNo or M00, use {@link isMissingNoOrM00}.\n *\n * @param pokemon - The Pokemon object to check.\n * @returns `true` if the Pokemon is MissingNo, `false` otherwise.\n */\nexport function isMissingNo(pokemon: Pokemon) {\n  return pokemon.key === PokemonEnum.Missingno;\n}\n\n/**\n * Checks if the given Pokemon is M00.\n *\n * This uses the Pokemon's key, rather than the number.\n * To check if it's either MissingNo or M00, use {@link isMissingNoOrM00}.\n *\n * @param pokemon - The Pokemon to check.\n * @returns `true` if the Pokemon is M00, `false` otherwise.\n */\nexport function isM00(pokemon: Pokemon) {\n  return pokemon.key === PokemonEnum.M00;\n}\n\n/**\n * Checks if the given Pokemon is either MissingNo or M00.\n *\n * This uses the Pokemon's key, rather than the number.\n * This performs both {@link isMissingNo} and {@link isM00}.\n *\n * @param pokemon - The Pokemon to check.\n * @returns `true` if the Pokemon is MissingNo or M00, `false` otherwise.\n */\nexport function isMissingNoOrM00(pokemon: Pokemon) {\n  return isMissingNo(pokemon) || isM00(pokemon);\n}\n\n/**\n * Checks if a Pokemon is a Cap Pokemon by checking if the number is below (not equal to) 0.\n *\n * MissingNo and M00 are not considered Cap Pokemon,\n * to check if the Pokémon is either of those, use {@link isMissingNoOrM00}.\n *\n * @param pokemon - The details of the Pokemon.\n * @returns `true` if the Pokemon is a Cap Pokemon, `false` otherwise.\n */\nexport function isCapPokemon(pokemon: Pokemon) {\n  return pokemon.num < 0;\n}\n\n/**\n * Checks if a given Pokemon is a not a CAP Pokémon nor MissingNo nor M00.\n * This checks if the number is above (not equal to) 0.\n *\n * @param pokemon - The details of the Pokemon.\n * @returns `true` if the Pokemon is regular, `false` otherwise.\n */\nexport function isRegularPokemon(pokemon: Pokemon) {\n  return pokemon.num > 0;\n}\n"
  },
  {
    "path": "utilities/index.ts",
    "content": "export * from './guards';\nexport * from './parseBulbapediaUrl';\nexport * from './pokemonEnumToSpecies';\nexport * from './resolveBulbapediaUrl';\nexport * from './resolveColor';\nexport * from './resolveSerebiiUrl';\n"
  },
  {
    "path": "utilities/parseBulbapediaUrl.ts",
    "content": "/**\n * Parses a Bulbapedia-like URL to be properly embeddable on Discord\n *\n * What this essentially does is replace spaces with underscores\n * and parentheses with their URL-encoded counterparts\n *\n * @param url - The URL to be parsed.\n * @returns The parsed URL with spaces replaced by underscores and parentheses encoded.\n *\n * @example\n * ```typescript\n * const url = 'https://bulbapedia.org/wiki/Pikachu_(Pokémon)';\n * const parsedUrl = parseBulbapediaURL(url);\n * console.log(parsedUrl);\n * // Output: 'https://bulbapedia.org/wiki/Pikachu_%28Pokémon%29'\n * ```\n */\nexport function parseBulbapediaURL(url: string) {\n  return url.replace(/[ ]/g, '_').replace(/\\(/g, '%28').replace(/\\)/g, '%29');\n}\n"
  },
  {
    "path": "utilities/pokemonEnumToSpecies.ts",
    "content": "import { PokemonEnum } from '../codegen/graphql-pokemon';\n\nconst megaRegex = /^(?<name>[a-z]+)(?:mega)$/;\nconst gmaxRegex = /^(?<name>[a-z]+)(?:gmax)$/;\nconst alolanTotemRegex = /^(?<name>[a-z]+)(?:alolatotem)$/;\nconst alolanRegex = /^(?<name>[a-z]+)(?:alola)$/;\nconst hisuianRegex = /^(?<name>[a-z]+)(?:hisui)$/;\nconst paldeanRegex = /^(?<name>[a-z]+)(?:paldea)$/;\nconst galarianRegex = /^(?<name>[a-z]+)(?:galar)$/;\nconst totemRegex = /^(?<name>[a-z]+)(?:totem)$/;\nconst typeLikeRegex = /^(?<name>(?:arceus|silvally|genesect))(?<type>[a-z]+)?$/;\nconst pumpkinRegex = /^(?<name>(?:pumpkaboo|gourgeist))(?<size>(?:small|large|super))$/g;\n\n/**\n * Converts a {@link PokemonEnum} value to its corresponding species name in a human-readable format.\n *\n * This can be useful when you want to display the name to the user, for example on a web dashboard or\n * in your application.\n *\n * If `undefined`, `null` or an empty string is passed in, the function will return the same value.\n *\n * @param pokemon - The {@link PokemonEnum} value to convert.\n * @returns The species name of the Pokemon in human-readable format\n */\nexport function pokemonEnumToSpecies(pokemon: PokemonEnum): string {\n  if (!pokemon) {\n    return pokemon;\n  }\n\n  switch (pokemon) {\n    // Some exclusions that cannot be handled easily by the regex\n    case PokemonEnum.Missingno:\n      return 'MissingNo.';\n    case PokemonEnum.M00:\n      return \"'M (00)\";\n\n    case PokemonEnum.Yanmega:\n      return 'Yanmega';\n\n    // The double forme Mega Pokemon\n    case PokemonEnum.Charizardmegax:\n      return 'Mega Charizard X';\n    case PokemonEnum.Charizardmegay:\n      return 'Mega Charizard Y';\n\n    case PokemonEnum.Raichumegax:\n      return 'Mega Raichu X';\n    case PokemonEnum.Raichumegay:\n      return 'Mega Raichu Y';\n\n    case PokemonEnum.Mewtwomegax:\n      return 'Mega Mewtwo X';\n    case PokemonEnum.Mewtwomegay:\n      return 'Mega Mewtwo Y';\n\n    case PokemonEnum.Venomiconepilogue:\n      return 'Venomicon Epilogue';\n\n    // The Z Formes of Mega Pokemon\n    case PokemonEnum.Absolmegaz:\n      return 'Mega Absol Z';\n    case PokemonEnum.Garchompmegaz:\n      return 'Mega Garchomp Z';\n    case PokemonEnum.Lucariomegaz:\n      return 'Mega Lucario Z';\n\n    // The mimes\n    case PokemonEnum.Mimejr:\n      return 'Mime Jr.';\n    case PokemonEnum.Mrmime:\n      return 'Mr. Mime';\n    case PokemonEnum.Mrmimegalar:\n      return 'Galarian Mr. Mime';\n    case PokemonEnum.Mrrime:\n      return 'Mr. Rime';\n\n    // The bird that had to have a hyphen in its name\n    case PokemonEnum.Hooh:\n      return 'Ho-Oh';\n\n    // Castform\n    case PokemonEnum.Castformrainy:\n      return 'Castform Rainy';\n    case PokemonEnum.Castformsunny:\n      return 'Castform Sunny';\n    case PokemonEnum.Castformsnowy:\n      return 'Castform Snowy';\n\n    // Primals\n    case PokemonEnum.Kyogreprimal:\n      return 'Primal Kyogre';\n    case PokemonEnum.Groudonprimal:\n      return 'Primal Groudon';\n\n    // Deoxys\n    case PokemonEnum.Deoxysattack:\n      return 'Deoxys Attack';\n    case PokemonEnum.Deoxysdefense:\n      return 'Deoxys Defense';\n    case PokemonEnum.Deoxysspeed:\n      return 'Deoxys Speed';\n\n    // Wormadam\n    case PokemonEnum.Wormadamsandy:\n      return 'Wormadam Sandy';\n    case PokemonEnum.Wormadamtrash:\n      return 'Wormadam Trash';\n\n    // Cherrim\n    case PokemonEnum.Cherrimsunshine:\n      return 'Cherrim Sunshine';\n\n    // Porygon hyphen z\n    case PokemonEnum.Porygonz:\n      return 'Porygon-Z';\n\n    // Rotom forms\n    case PokemonEnum.Rotomheat:\n      return 'Rotom Heat';\n    case PokemonEnum.Rotomwash:\n      return 'Rotom Wash';\n    case PokemonEnum.Rotomfrost:\n      return 'Rotom Frost';\n    case PokemonEnum.Rotomfan:\n      return 'Rotom Fan';\n    case PokemonEnum.Rotommow:\n      return 'Rotom Mow';\n\n    // Origin forms\n    case PokemonEnum.Giratinaorigin:\n      return 'Giratina Origin';\n    case PokemonEnum.Dialgaorigin:\n      return 'Dialga Origin';\n    case PokemonEnum.Palkiaorigin:\n      return 'Palkia Origin';\n\n    // Shaymin\n    case PokemonEnum.Shayminsky:\n      return 'Shaymin Sky';\n\n    // The Basculins\n    case PokemonEnum.Basculinbluestriped:\n      return 'Basculin Blue-Striped';\n    case PokemonEnum.Basculegionf:\n      return 'basculegion (Female)';\n\n    // The Darmanitans\n    case PokemonEnum.Darmanitanzen:\n      return 'Darmanitan Zen';\n    case PokemonEnum.Darmanitangalarzen:\n      return 'Galarian Darmanitan Zen';\n\n    // The Frillishes\n    case PokemonEnum.Frillishfemale:\n      return 'Frillish (Female)';\n    case PokemonEnum.Jellicentfemale:\n      return 'Jellicent (Female)';\n\n    case PokemonEnum.Tornadustherian:\n      return 'Tornadus Therian';\n    case PokemonEnum.Thundurustherian:\n      return 'Thundurus Therian';\n    case PokemonEnum.Landorustherian:\n      return 'Landorus Therian';\n\n    case PokemonEnum.Kyuremblack:\n      return 'Black Kyurem';\n    case PokemonEnum.Kyuremwhite:\n      return 'White Kyurem';\n\n    case PokemonEnum.Keldeoresolute:\n      return 'Keldeo Resolute Form';\n\n    case PokemonEnum.Meloettapirouette:\n      return 'Meloetta Pirouette Forme';\n\n    case PokemonEnum.Greninjaash:\n      return 'Ash Greninja';\n\n    case PokemonEnum.Vivillonfancy:\n      return 'Fancy Vivillon';\n    case PokemonEnum.Vivillonpokeball:\n      return 'Pokeball Vivillon';\n\n    case PokemonEnum.Floetteeternal:\n      return 'Eternal Flower Floette';\n\n    case PokemonEnum.Meowsticf:\n      return 'Meowstic (Female)';\n\n    case PokemonEnum.Aegislashblade:\n      return 'Aegislash Blade Forme';\n\n    case PokemonEnum.Xerneasneutral:\n      return 'Xerneas Neutral';\n\n    case PokemonEnum.Zygarde10:\n      return 'Zygarde 10%';\n    case PokemonEnum.Zygardecomplete:\n      return 'Zygarde Complete';\n\n    case PokemonEnum.Hoopaunbound:\n      return 'Hoopa Unbound';\n\n    case PokemonEnum.Oricoriopompom:\n      return 'Oricorio Pompom';\n    case PokemonEnum.Oricoriosensu:\n      return 'Oricorio Sensu';\n    case PokemonEnum.Oricoriopau:\n      return \"Oricorio Pa'u\";\n\n    case PokemonEnum.Lycanrocmidnight:\n      return 'Midnight Lycanroc';\n    case PokemonEnum.Lycanrocdusk:\n      return 'Dusk Lycanroc';\n\n    case PokemonEnum.Wishiwashischool:\n      return 'Wishiwashi School';\n\n    case PokemonEnum.Typenull:\n      return 'Type: Null';\n\n    case PokemonEnum.Miniormeteor:\n      return 'Minior Meteor';\n\n    case PokemonEnum.Mimikyubusted:\n      return 'Mimikyu Busted';\n    case PokemonEnum.Mimikyubustedtotem:\n      return 'Totem Mimikyu Busted';\n\n    case PokemonEnum.Jangmoo:\n      return 'Jangmo-o';\n    case PokemonEnum.Hakamoo:\n      return 'Hakamo-o';\n    case PokemonEnum.Kommoo:\n      return 'Kommo-o';\n    case PokemonEnum.Kommoototem:\n      return 'Totem Kommo-o';\n\n    case PokemonEnum.Tapukoko:\n      return 'Tapu Koko';\n    case PokemonEnum.Tapulele:\n      return 'Tapu Lele';\n    case PokemonEnum.Tapubulu:\n      return 'Tapu Bulu';\n    case PokemonEnum.Tapufini:\n      return 'Tapu Fini';\n\n    case PokemonEnum.Necrozmaduskmane:\n      return 'Duskmane Necrozma';\n    case PokemonEnum.Necrozmadawnwings:\n      return 'Dawnwings Necrozma';\n    case PokemonEnum.Necrozmaultra:\n      return 'Ultra Necrozma';\n\n    case PokemonEnum.Magearnaoriginal:\n      return 'Magearna Original';\n\n    case PokemonEnum.Cramorantgulping:\n      return 'Gulping Cramorant';\n    case PokemonEnum.Cramorantgorging:\n      return 'Gorging Cramorant';\n\n    case PokemonEnum.Toxtricitylowkey:\n      return 'Low Key Toxtricity';\n    case PokemonEnum.Toxtricitylowkeygmax:\n      return 'G-Max Low Key Toxtricity';\n\n    case PokemonEnum.Sinisteaantique:\n      return 'Antique Sinistea';\n    case PokemonEnum.Polteageistantique:\n      return 'Antique Polteageist';\n\n    case PokemonEnum.Eiscuenoice:\n      return 'Eiscue Noice';\n\n    case PokemonEnum.Indeedeef:\n      return 'Indeedee (Female)';\n\n    case PokemonEnum.Morpekohangry:\n      return 'Hangry Morpeko';\n\n    case PokemonEnum.Zaciancrowned:\n      return 'Zacian Crowned';\n    case PokemonEnum.Zamazentacrowned:\n      return 'Zamazenta Crowned';\n    case PokemonEnum.Eternatuseternamax:\n      return 'Eternatus Eternamax';\n\n    case PokemonEnum.Urshifurapidstrike:\n      return 'Rapid-Strike Urshifu';\n    case PokemonEnum.Urshifurapidstrikegmax:\n      return 'G-Max Rapid-Strike Urshifu';\n\n    case PokemonEnum.Zarudedada:\n      return 'Zarude Dada';\n\n    case PokemonEnum.Calyrexice:\n      return 'Calyrex Ice';\n    case PokemonEnum.Calyrexshadow:\n      return 'Calyrex Shadow';\n\n    // All the PokeStar Pokémon\n    case PokemonEnum.Pokestarsmeargle:\n      return 'PokéStar Smeargle';\n    case PokemonEnum.Pokestarufo:\n      return 'PokéStar UFO';\n    case PokemonEnum.Pokestarufo2:\n      return 'PokéStar UFO-2';\n    case PokemonEnum.Pokestarbrycenman:\n      return 'PokéStar Brycen-Man';\n    case PokemonEnum.Pokestarmt:\n      return 'PokéStar MT';\n    case PokemonEnum.Pokestarmt2:\n      return 'PokéStar MT2';\n    case PokemonEnum.Pokestartransport:\n      return 'PokéStar Transport';\n    case PokemonEnum.Pokestargiant:\n      return 'PokéStar Giant';\n    case PokemonEnum.Pokestarhumanoid:\n      return 'PokéStar Humanoid';\n    case PokemonEnum.Pokestarmonster:\n      return 'PokéStar Monster';\n    case PokemonEnum.Pokestarf00:\n      return 'PokéStar F-00';\n    case PokemonEnum.Pokestarf002:\n      return 'PokéStar F-002';\n    case PokemonEnum.Pokestarspirit:\n      return 'PokéStar Spirit';\n    case PokemonEnum.Pokestarblackdoor:\n      return 'PokéStar Black Door';\n    case PokemonEnum.Pokestarwhitedoor:\n      return 'PokéStar White Door';\n    case PokemonEnum.Pokestarblackbelt:\n      return 'PokéStar Black Belt';\n    case PokemonEnum.Pokestarufopropu2:\n      return 'PokéStar UFO-PropU2';\n\n    // All the Pikachu's\n    case PokemonEnum.Pikachucosplay:\n      return 'Pikachu Cosplay';\n    case PokemonEnum.Pikachurockstar:\n      return 'Pikachu Rock Star';\n    case PokemonEnum.Pikachubelle:\n      return 'Pikachu Belle';\n    case PokemonEnum.Pikachupopstar:\n      return 'Pikachu Pop Star';\n    case PokemonEnum.Pikachuphd:\n      return 'Pikachu PhD';\n    case PokemonEnum.Pikachulibre:\n      return 'Pikachu Libre';\n    case PokemonEnum.Pikachuoriginal:\n      return 'Pikachu Kanto Cap';\n    case PokemonEnum.Pikachuhoenn:\n      return 'Pikachu Honey Cap';\n    case PokemonEnum.Pikachusinnoh:\n      return 'Pikachu Sinnoh Cap';\n    case PokemonEnum.Pikachuunova:\n      return 'Pikachu Novae Cap';\n    case PokemonEnum.Pikachukalos:\n      return 'Pikachu Kalos Cap';\n    case PokemonEnum.Pikachualola:\n      return 'Pikachu Alola Cap';\n    case PokemonEnum.Pikachupartner:\n      return 'Pikachu (I Choose You)';\n    case PokemonEnum.Pikachustarter:\n      return \"Pikachu (Let's Go)\";\n    case PokemonEnum.Pikachuworld:\n      return 'Pikachu (Journeys)';\n    case PokemonEnum.Pichuspikyeared:\n      return 'Spiky Eared Pichu';\n    case PokemonEnum.Eeveestarter:\n      return \"Eevee (Let's Go)\";\n\n    // All the Paradox Pokémon\n    case PokemonEnum.Greattusk:\n      return 'Great Tusk';\n    case PokemonEnum.Screamtail:\n      return 'Scream Tail';\n    case PokemonEnum.Brutebonnet:\n      return 'Brute Bonnet';\n    case PokemonEnum.Fluttermane:\n      return 'Flutter Mane';\n    case PokemonEnum.Slitherwing:\n      return 'Slither Wing';\n    case PokemonEnum.Sandyshocks:\n      return 'Sandy Shocks';\n    case PokemonEnum.Irontreads:\n      return 'Iron Treads';\n    case PokemonEnum.Ironbundle:\n      return 'Iron Bundle';\n    case PokemonEnum.Ironhands:\n      return 'Iron Hands';\n    case PokemonEnum.Ironjugulis:\n      return 'Iron Jugulis';\n    case PokemonEnum.Ironmoth:\n      return 'Iron Moth';\n    case PokemonEnum.Ironthorns:\n      return 'Iron Thorns';\n    case PokemonEnum.Roaringmoon:\n      return 'Roaring Moon';\n    case PokemonEnum.Ironvaliant:\n      return 'Iron Valiant';\n    case PokemonEnum.Walkingwake:\n      return 'Walking Wake';\n    case PokemonEnum.Ironleaves:\n      return 'Iron Leaves';\n\n    // The Ruination Pokémon\n    case PokemonEnum.Wochien:\n      return 'Wo-Chien';\n    case PokemonEnum.Chienpao:\n      return 'Chien-Pao';\n    case PokemonEnum.Tinglu:\n      return 'Ting-Lu';\n    case PokemonEnum.Chiyu:\n      return 'Chi-Yu';\n\n    // Special Paldean Forms\n    case PokemonEnum.Taurospaldeacombat:\n      return 'Paldean Tauros (Combat Breed)';\n    case PokemonEnum.Taurospaldeaaqua:\n      return 'Paldean Tauros (Aqua Breed)';\n    case PokemonEnum.Taurospaldeablaze:\n      return 'Paldean Tauros (Blaze Breed)';\n\n    // Ogerpon\n    case PokemonEnum.Ogerpon:\n      return 'Ogerpon (Teal Mask)';\n    case PokemonEnum.Ogerpontealtera:\n      return 'Ogerpon (Teal Mask - Tera)';\n    case PokemonEnum.Ogerponcornerstone:\n      return 'Ogerpon (Cornerstone Mask)';\n    case PokemonEnum.Ogerponcornerstonetera:\n      return 'Ogerpon (Cornerstone Mask - Tera)';\n    case PokemonEnum.Ogerponhearthflame:\n      return 'Ogerpon (Hearthflame Mask)';\n    case PokemonEnum.Ogerponhearthflametera:\n      return 'Ogerpon (Hearthflame Mask - Tera)';\n    case PokemonEnum.Ogerponwellspring:\n      return 'Ogerpon (Wellspring Mask)';\n    case PokemonEnum.Ogerponwellspringtera:\n      return 'Ogerpon (Wellspring Mask - Tera)';\n\n    // Other gen 9 special cases\n    case PokemonEnum.Ursalunabloodmoon:\n      return 'Ursaluna Bloodmoion';\n    case PokemonEnum.Poltchageistartisan:\n      return 'Poltchageist Artisan';\n    case PokemonEnum.Sinistchamasterpiece:\n      return 'Sinistcha Masterpiece';\n\n    // All other cases\n    default: {\n      const megaResult = megaRegex.exec(pokemon);\n\n      if (megaResult && megaResult.groups?.name) {\n        return `Mega ${toTitleCase(megaResult.groups.name)}`;\n      }\n\n      const gmaxResult = gmaxRegex.exec(pokemon);\n\n      if (gmaxResult && gmaxResult.groups?.name) {\n        return `G-Max ${toTitleCase(gmaxResult.groups.name)}`;\n      }\n\n      const alolanTotemResult = alolanTotemRegex.exec(pokemon);\n\n      if (alolanTotemResult && alolanTotemResult.groups?.name) {\n        return `Alolan Totem ${toTitleCase(alolanTotemResult.groups.name)}`;\n      }\n\n      const totemResult = totemRegex.exec(pokemon);\n\n      if (totemResult && totemResult.groups?.name) {\n        return `Totem ${toTitleCase(totemResult.groups.name)}`;\n      }\n\n      const alolanResult = alolanRegex.exec(pokemon);\n\n      if (alolanResult && alolanResult.groups?.name) {\n        return `Alolan ${toTitleCase(alolanResult.groups.name)}`;\n      }\n\n      const galarianResult = galarianRegex.exec(pokemon);\n\n      if (galarianResult && galarianResult.groups?.name) {\n        return `Galarian ${toTitleCase(galarianResult.groups.name)}`;\n      }\n\n      const hisuianResult = hisuianRegex.exec(pokemon);\n\n      if (hisuianResult && hisuianResult.groups?.name) {\n        return `Hisuian ${toTitleCase(hisuianResult.groups.name)}`;\n      }\n\n      const paldeanResult = paldeanRegex.exec(pokemon);\n\n      if (paldeanResult && paldeanResult.groups?.name) {\n        return `Paldean ${toTitleCase(paldeanResult.groups.name)}`;\n      }\n\n      const typeLikeResult = typeLikeRegex.exec(pokemon);\n\n      if (typeLikeResult && typeLikeResult.groups?.name && typeLikeResult.groups?.type) {\n        return `${toTitleCase(typeLikeResult.groups.name)} ${toTitleCase(typeLikeResult.groups.type)}`;\n      }\n\n      const pumpkinResult = pumpkinRegex.exec(pokemon);\n\n      if (pumpkinResult && pumpkinResult.groups?.name && pumpkinResult.groups?.size) {\n        return `${toTitleCase(pumpkinResult.groups.name)} ${toTitleCase(pumpkinResult.groups.size)}`;\n      }\n\n      return toTitleCase(pokemon);\n    }\n  }\n}\n\nconst TO_TITLE_CASE = /[A-Za-zÀ-ÖØ-öø-ÿ]\\S*/g;\nfunction toTitleCase(str: string) {\n  return str.replace(TO_TITLE_CASE, (txt) => {\n    return txt.charAt(0).toUpperCase() + txt.substring(1).toLowerCase();\n  });\n}\n"
  },
  {
    "path": "utilities/resolveBulbapediaUrl.ts",
    "content": "import type { Pokemon } from '../codegen/graphql-pokemon';\nimport { isCapPokemon, isM00, isMissingNo } from './guards';\nimport { parseBulbapediaURL } from './parseBulbapediaUrl';\n\n/**\n * Transforms the Bulbapedia URL for a given Pokemon.\n *\n * This function takes in the details of a Pokemon and returns the corresponding Bulbapedia URL\n * - If the Pokemon is MissingNo, it returns the URL for MissingNo on Bulbapedia.\n * - If the Pokemon is M00, it returns the URL for M00 on Bulbapedia.\n *\n * @param pokemon - The details of the Pokemon.\n * @returns The resolved Bulbapedia embedded URL.\n *\n * @throws This function will not work for CAP or PokéStar Pokémon as they do not have Bulbapedia pages.\n * This function will throw a {@link RangeError} when a Pokémon with {@link Pokemon.num} < 0 is passed in.\n *\n * @example\n * ```typescript\n * const pokeDetails: Pokemon = {\n *   name: \"Pikachu\",\n *   type: \"Electric\",\n *   level: 25\n * };\n *\n * const url = resolveBulbapediaURL(pokeDetails);\n * // Returns: \"[Bulbapedia](<https://bulbapedia.bulbagarden.net/wiki/Pikachu>)\"\n * ```\n */\nexport function resolveBulbapediaURL(pokemon: Pokemon) {\n  if (isCapPokemon(pokemon)) throw new RangeError('This function does not work for CAP or PokéStar Pokémon.');\n\n  return isMissingNo(pokemon)\n    ? 'https://bulbapedia.bulbagarden.net/wiki/MissingNo.'\n    : isM00(pokemon)\n      ? \"https://bulbapedia.bulbagarden.net/wiki/'M_(00)\"\n      : parseBulbapediaURL(pokemon.bulbapediaPage);\n}\n"
  },
  {
    "path": "utilities/resolveColor.ts",
    "content": "import type { Pokemon } from '../codegen/graphql-pokemon';\n\n/**\n * Parses PokéDex colors to Discord MessageEmbed colors\n * @param color - The color to parse\n *\n * @remarks The various colours that can be generated are:\n *\n * - Black: ![Black](https://cdn.favware.tech/img/graphql-pokemon-colours/323232.png)\n * - Blue: ![Blue](https://cdn.favware.tech/img/graphql-pokemon-colours/257cff.png)\n * - Brown: ![Brown](https://cdn.favware.tech/img/graphql-pokemon-colours/a3501a.png)\n * - Gray: ![Gray](https://cdn.favware.tech/img/graphql-pokemon-colours/969696.png)\n * - Green: ![Green](https://cdn.favware.tech/img/graphql-pokemon-colours/3eff4e.png)\n * - Pink: ![Pink](https://cdn.favware.tech/img/graphql-pokemon-colours/ff65a5.png)\n * - Purple: ![Purple](https://cdn.favware.tech/img/graphql-pokemon-colours/a63de8.png)\n * - Red: ![Red](https://cdn.favware.tech/img/graphql-pokemon-colours/ff3232.png)\n * - White: ![White](https://cdn.favware.tech/img/graphql-pokemon-colours/e1e1e1.png)\n * - Yellow: ![Yellow](https://cdn.favware.tech/img/graphql-pokemon-colours/fff359.png)\n * - Unknown: ![Unknown](https://cdn.favware.tech/img/graphql-pokemon-colours/000000.png)\n *\n * @returns The color as a hexadecimal color code that can be used for\n * a {@linkplain https://discord.js.org/docs/packages/discord.js/14.14.1/Embed:Class DiscordJS Embed}\n */\nexport function resolveColor(color: string): number;\n/**\n * Parses PokéDex colors to Discord MessageEmbed colors\n * @param pokemon - The Pokemon data, with a color field, to parse\n *\n * @remarks The various colours that can be generated are:\n *\n * - Black: ![Black](https://cdn.favware.tech/img/graphql-pokemon-colours/323232.png)\n * - Blue: ![Blue](https://cdn.favware.tech/img/graphql-pokemon-colours/257cff.png)\n * - Brown: ![Brown](https://cdn.favware.tech/img/graphql-pokemon-colours/a3501a.png)\n * - Gray: ![Gray](https://cdn.favware.tech/img/graphql-pokemon-colours/969696.png)\n * - Green: ![Green](https://cdn.favware.tech/img/graphql-pokemon-colours/3eff4e.png)\n * - Pink: ![Pink](https://cdn.favware.tech/img/graphql-pokemon-colours/ff65a5.png)\n * - Purple: ![Purple](https://cdn.favware.tech/img/graphql-pokemon-colours/a63de8.png)\n * - Red: ![Red](https://cdn.favware.tech/img/graphql-pokemon-colours/ff3232.png)\n * - White: ![White](https://cdn.favware.tech/img/graphql-pokemon-colours/e1e1e1.png)\n * - Yellow: ![Yellow](https://cdn.favware.tech/img/graphql-pokemon-colours/fff359.png)\n * - Unknown: ![Unknown](https://cdn.favware.tech/img/graphql-pokemon-colours/000000.png)\n *\n * @returns The color as a hexadecimal color code that can be used for\n * a {@linkplain https://discord.js.org/docs/packages/discord.js/14.14.1/Embed:Class DiscordJS Embed}\n */\nexport function resolveColor(pokemon: Pokemon): number;\n/**\n * Parses PokéDex colors to Discord MessageEmbed colors\n * @param colorOrPokemon - Either the The Pokemon data, with a color field, to parse, or the color to parse\n *\n * @remarks The various colours that can be generated are:\n *\n * - Black: ![Black](https://cdn.favware.tech/img/graphql-pokemon-colours/323232.png)\n * - Blue: ![Blue](https://cdn.favware.tech/img/graphql-pokemon-colours/257cff.png)\n * - Brown: ![Brown](https://cdn.favware.tech/img/graphql-pokemon-colours/a3501a.png)\n * - Gray: ![Gray](https://cdn.favware.tech/img/graphql-pokemon-colours/969696.png)\n * - Green: ![Green](https://cdn.favware.tech/img/graphql-pokemon-colours/3eff4e.png)\n * - Pink: ![Pink](https://cdn.favware.tech/img/graphql-pokemon-colours/ff65a5.png)\n * - Purple: ![Purple](https://cdn.favware.tech/img/graphql-pokemon-colours/a63de8.png)\n * - Red: ![Red](https://cdn.favware.tech/img/graphql-pokemon-colours/ff3232.png)\n * - White: ![White](https://cdn.favware.tech/img/graphql-pokemon-colours/e1e1e1.png)\n * - Yellow: ![Yellow](https://cdn.favware.tech/img/graphql-pokemon-colours/fff359.png)\n * - Unknown: ![Unknown](https://cdn.favware.tech/img/graphql-pokemon-colours/000000.png)\n *\n * @returns The color as a hexadecimal color code that can be used for\n * a {@linkplain https://discord.js.org/docs/packages/discord.js/14.14.1/Embed:Class DiscordJS Embed}\n */\nexport function resolveColor(colorOrPokemon: string | Omit<Pokemon, '__typename'>): number {\n  if (typeof colorOrPokemon !== 'string') colorOrPokemon = colorOrPokemon.color;\n\n  switch (colorOrPokemon) {\n    case 'Black':\n      return 0x323232;\n    case 'Blue':\n      return 0x257cff;\n    case 'Brown':\n      return 0xa3501a;\n    case 'Gray':\n      return 0x969696;\n    case 'Green':\n      return 0x3eff4e;\n    case 'Pink':\n      return 0xff65a5;\n    case 'Purple':\n      return 0xa63de8;\n    case 'Red':\n      return 0xff3232;\n    case 'White':\n      return 0xe1e1e1;\n    case 'Yellow':\n      return 0xfff359;\n    default:\n      return 0x000000;\n  }\n}\n"
  },
  {
    "path": "utilities/resolveSerebiiUrl.ts",
    "content": "import type { Pokemon } from '../codegen/graphql-pokemon';\nimport { isCapPokemon, isMissingNoOrM00 } from './guards';\n\n/**\n * Resolves the Serebii URL for a given Pokemon.\n * If the Pokemon is MissingNo or M00, it returns the URL for MissingNo's Serebii page.\n * Otherwise, it returns the URL specified in the `serebiiPage` property of the Pokemon object.\n *\n * @param pokemon The details of the Pokemon.\n * @returns The Serebii URL for the Pokemon.\n *\n * @throws This function will not work for CAP or PokéStar Pokémon as they do not have Serebii pages.\n * This function will throw a {@link RangeError} when a Pokémon with {@link Pokemon.num} < 0 is passed in.\n *\n * @example\n * ```typescript\n * const pokeDetails: Pokemon = {\n *   name: \"Pikachu\",\n *   type: \"Electric\",\n *   level: 25\n * };\n *\n * const url = resolveSerebiiUrl(pokeDetails);\n * // Returns: \"https://www.serebii.net/pokedex/025.shtml\"\n * ```\n */\nexport function resolveSerebiiUrl(pokemon: Pokemon) {\n  if (isCapPokemon(pokemon)) throw new RangeError('This function does not work for CAP or PokéStar Pokémon.');\n\n  return isMissingNoOrM00(pokemon) ? 'https://www.serebii.net/pokedex/000.shtml' : pokemon.serebiiPage;\n}\n"
  },
  {
    "path": "vitest.config.ts",
    "content": "/// <reference lib=\"es2021\" />\n\nimport { resolve } from 'node:path';\nimport { defineConfig } from 'vitest/config';\n\nexport default defineConfig({\n  resolve: {\n    alias: [\n      { find: '#arguments', replacement: resolve('src/lib/arguments') },\n      { find: '#assets', replacement: resolve('src/lib/assets') },\n      { find: '#jsonAssets', replacement: resolve('src/lib/assets') },\n      { find: '#dexdata', replacement: resolve('src/lib/assets/pokedex-data') },\n      { find: '#resolvers', replacement: resolve('src/lib/resolvers') },\n      { find: '#types', replacement: resolve('src/lib/mapped-types') },\n      { find: '#utils', replacement: resolve('src/lib/utils') },\n      { find: '#validations', replacement: resolve('src/lib/validations') },\n      { find: '#mappers', replacement: resolve('src/lib/mappers') },\n      { find: '#root', replacement: resolve('src') },\n      { find: '#test-utils', replacement: resolve('tests/testUtils') }\n    ]\n  },\n  test: {\n    globals: true,\n    coverage: {\n      provider: 'v8',\n      reporter: ['text', 'lcov', 'clover']\n    }\n  }\n});\n"
  }
]